From solipsis at pitrou.net Fri Jan 1 00:48:52 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Fri, 1 Jan 2010 00:48:52 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77196): sum=0 Message-ID: <20091231234852.6550E1771C@ns6635.ovh.net> py3k results for svn r77196 (hg cset c68c515b2248) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogUq57LP', '-x', 'test_httpservers'] From python-checkins at python.org Fri Jan 1 02:44:58 2010 From: python-checkins at python.org (brett.cannon) Date: Fri, 01 Jan 2010 01:44:58 -0000 Subject: [Python-checkins] r77198 - python/trunk/Doc/using/cmdline.rst Message-ID: Author: brett.cannon Date: Fri Jan 1 02:44:57 2010 New Revision: 77198 Log: Add some missing command-line options to the main list. All but -V were already documented. Left -V undocumented for now (and -U was already undocumented). Modified: python/trunk/Doc/using/cmdline.rst Modified: python/trunk/Doc/using/cmdline.rst ============================================================================== --- python/trunk/Doc/using/cmdline.rst (original) +++ python/trunk/Doc/using/cmdline.rst Fri Jan 1 02:44:57 2010 @@ -21,7 +21,7 @@ When invoking Python, you may specify any of these options:: - python [-dEiOQsStuUvxX3?] [-c command | -m module-name | script | - ] [args] + python [-BdEiOQsStuUvVWxX3?] [-c command | -m module-name | script | - ] [args] The most common use case is, of course, a simple invocation of a script:: @@ -316,7 +316,7 @@ :mod:`warnings` module. The simplest form of argument is one of the following action strings (or a - unique abbreviation): + unique abbreviation) by themselves: ``ignore`` Ignore all warnings. @@ -362,6 +362,8 @@ .. note:: The line numbers in error messages will be off by one. +.. XXX document -X? + .. cmdoption:: -3 From python-checkins at python.org Fri Jan 1 02:47:00 2010 From: python-checkins at python.org (brett.cannon) Date: Fri, 01 Jan 2010 01:47:00 -0000 Subject: [Python-checkins] r77199 - in python/branches/release26-maint: Doc/using/cmdline.rst Message-ID: Author: brett.cannon Date: Fri Jan 1 02:47:00 2010 New Revision: 77199 Log: Merged revisions 77198 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77198 | brett.cannon | 2009-12-31 17:44:57 -0800 (Thu, 31 Dec 2009) | 3 lines Add some missing command-line options to the main list. All but -V were already documented. Left -V undocumented for now (and -U was already undocumented). ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Doc/using/cmdline.rst Modified: python/branches/release26-maint/Doc/using/cmdline.rst ============================================================================== --- python/branches/release26-maint/Doc/using/cmdline.rst (original) +++ python/branches/release26-maint/Doc/using/cmdline.rst Fri Jan 1 02:47:00 2010 @@ -21,7 +21,7 @@ When invoking Python, you may specify any of these options:: - python [-dEiOQsStuUvxX3?] [-c command | -m module-name | script | - ] [args] + python [-BdEiOQsStuUvVWxX3?] [-c command | -m module-name | script | - ] [args] The most common use case is, of course, a simple invocation of a script:: @@ -307,7 +307,7 @@ :mod:`warnings` module. The simplest form of argument is one of the following action strings (or a - unique abbreviation): + unique abbreviation) by themselves: ``ignore`` Ignore all warnings. @@ -353,6 +353,8 @@ .. note:: The line numbers in error messages will be off by one. +.. XXX document -X? + .. cmdoption:: -3 From python-checkins at python.org Fri Jan 1 02:58:39 2010 From: python-checkins at python.org (brett.cannon) Date: Fri, 01 Jan 2010 01:58:39 -0000 Subject: [Python-checkins] r77200 - python/branches/py3k/Doc/using/cmdline.rst Message-ID: Author: brett.cannon Date: Fri Jan 1 02:58:39 2010 New Revision: 77200 Log: Clean up the list of allowed command-line flags. Modified: python/branches/py3k/Doc/using/cmdline.rst Modified: python/branches/py3k/Doc/using/cmdline.rst ============================================================================== --- python/branches/py3k/Doc/using/cmdline.rst (original) +++ python/branches/py3k/Doc/using/cmdline.rst Fri Jan 1 02:58:39 2010 @@ -21,7 +21,7 @@ When invoking Python, you may specify any of these options:: - python [-bdEiOsStuUvxX?] [-c command | -m module-name | script | - ] [args] + python [-bBdEhiOsSuvVWx?] [-c command | -m module-name | script | - ] [args] The most common use case is, of course, a simple invocation of a script:: From python-checkins at python.org Fri Jan 1 03:00:24 2010 From: python-checkins at python.org (brett.cannon) Date: Fri, 01 Jan 2010 02:00:24 -0000 Subject: [Python-checkins] r77201 - python/branches/py3k Message-ID: Author: brett.cannon Date: Fri Jan 1 03:00:24 2010 New Revision: 77201 Log: Blocked revisions 77198 via svnmerge ........ r77198 | brett.cannon | 2009-12-31 17:44:57 -0800 (Thu, 31 Dec 2009) | 3 lines Add some missing command-line options to the main list. All but -V were already documented. Left -V undocumented for now (and -U was already undocumented). ........ Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Fri Jan 1 03:03:50 2010 From: python-checkins at python.org (brett.cannon) Date: Fri, 01 Jan 2010 02:03:50 -0000 Subject: [Python-checkins] r77202 - in python/branches/release31-maint: Doc/using/cmdline.rst Message-ID: Author: brett.cannon Date: Fri Jan 1 03:03:50 2010 New Revision: 77202 Log: Merged revisions 77200 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ........ r77200 | brett.cannon | 2009-12-31 17:58:39 -0800 (Thu, 31 Dec 2009) | 2 lines Clean up the list of allowed command-line flags. ........ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Doc/using/cmdline.rst Modified: python/branches/release31-maint/Doc/using/cmdline.rst ============================================================================== --- python/branches/release31-maint/Doc/using/cmdline.rst (original) +++ python/branches/release31-maint/Doc/using/cmdline.rst Fri Jan 1 03:03:50 2010 @@ -21,7 +21,7 @@ When invoking Python, you may specify any of these options:: - python [-bdEiOsStuUvxX?] [-c command | -m module-name | script | - ] [args] + python [-bBdEhiOsSuvVWx?] [-c command | -m module-name | script | - ] [args] The most common use case is, of course, a simple invocation of a script:: From python-checkins at python.org Fri Jan 1 05:00:55 2010 From: python-checkins at python.org (benjamin.peterson) Date: Fri, 01 Jan 2010 04:00:55 -0000 Subject: [Python-checkins] r77203 - in python/trunk: LICENSE Python/getcopyright.c Message-ID: Author: benjamin.peterson Date: Fri Jan 1 05:00:55 2010 New Revision: 77203 Log: update copyright year Modified: python/trunk/LICENSE python/trunk/Python/getcopyright.c Modified: python/trunk/LICENSE ============================================================================== --- python/trunk/LICENSE (original) +++ python/trunk/LICENSE Fri Jan 1 05:00:55 2010 @@ -96,9 +96,9 @@ analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, -i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Python -Software Foundation; All Rights Reserved" are retained in Python alone or in any -derivative version prepared by Licensee. +i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 +Python Software Foundation; All Rights Reserved" are retained in Python alone or +in any derivative version prepared by Licensee. 3. In the event Licensee prepares a derivative work that is based on or incorporates Python or any part thereof, and wants to make Modified: python/trunk/Python/getcopyright.c ============================================================================== --- python/trunk/Python/getcopyright.c (original) +++ python/trunk/Python/getcopyright.c Fri Jan 1 05:00:55 2010 @@ -4,7 +4,7 @@ static char cprt[] = "\ -Copyright (c) 2001-2009 Python Software Foundation.\n\ +Copyright (c) 2001-2010 Python Software Foundation.\n\ All Rights Reserved.\n\ \n\ Copyright (c) 2000 BeOpen.com.\n\ From python-checkins at python.org Fri Jan 1 05:16:42 2010 From: python-checkins at python.org (ezio.melotti) Date: Fri, 01 Jan 2010 04:16:42 -0000 Subject: [Python-checkins] r77204 - in python/trunk: Doc/copyright.rst Doc/license.rst README Message-ID: Author: ezio.melotti Date: Fri Jan 1 05:16:42 2010 New Revision: 77204 Log: more copyright year updates Modified: python/trunk/Doc/copyright.rst python/trunk/Doc/license.rst python/trunk/README Modified: python/trunk/Doc/copyright.rst ============================================================================== --- python/trunk/Doc/copyright.rst (original) +++ python/trunk/Doc/copyright.rst Fri Jan 1 05:16:42 2010 @@ -4,7 +4,7 @@ Python and this documentation is: -Copyright ? 2001-2009 Python Software Foundation. All rights reserved. +Copyright ? 2001-2010 Python Software Foundation. All rights reserved. Copyright ? 2000 BeOpen.com. All rights reserved. Modified: python/trunk/Doc/license.rst ============================================================================== --- python/trunk/Doc/license.rst (original) +++ python/trunk/Doc/license.rst Fri Jan 1 05:16:42 2010 @@ -130,7 +130,7 @@ analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python |release| alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of - copyright, i.e., "Copyright ? 2001-2009 Python Software Foundation; All Rights + copyright, i.e., "Copyright ? 2001-2010 Python Software Foundation; All Rights Reserved" are retained in Python |release| alone or in any derivative version prepared by Licensee. Modified: python/trunk/README ============================================================================== --- python/trunk/README (original) +++ python/trunk/README Fri Jan 1 05:16:42 2010 @@ -1,7 +1,7 @@ This is Python version 2.7 alpha 1 ================================== -Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Python Software Foundation. All rights reserved. From python-checkins at python.org Fri Jan 1 05:46:19 2010 From: python-checkins at python.org (ezio.melotti) Date: Fri, 01 Jan 2010 04:46:19 -0000 Subject: [Python-checkins] r77205 - in python/branches/release26-maint: Doc/copyright.rst Doc/license.rst LICENSE Python/getcopyright.c README Message-ID: Author: ezio.melotti Date: Fri Jan 1 05:46:19 2010 New Revision: 77205 Log: Merged revisions 77203-77204 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77203 | benjamin.peterson | 2010-01-01 06:00:55 +0200 (Fri, 01 Jan 2010) | 1 line update copyright year ........ r77204 | ezio.melotti | 2010-01-01 06:16:42 +0200 (Fri, 01 Jan 2010) | 1 line more copyright year updates ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Doc/copyright.rst python/branches/release26-maint/Doc/license.rst python/branches/release26-maint/LICENSE python/branches/release26-maint/Python/getcopyright.c python/branches/release26-maint/README Modified: python/branches/release26-maint/Doc/copyright.rst ============================================================================== --- python/branches/release26-maint/Doc/copyright.rst (original) +++ python/branches/release26-maint/Doc/copyright.rst Fri Jan 1 05:46:19 2010 @@ -4,7 +4,7 @@ Python and this documentation is: -Copyright ? 2001-2009 Python Software Foundation. All rights reserved. +Copyright ? 2001-2010 Python Software Foundation. All rights reserved. Copyright ? 2000 BeOpen.com. All rights reserved. Modified: python/branches/release26-maint/Doc/license.rst ============================================================================== --- python/branches/release26-maint/Doc/license.rst (original) +++ python/branches/release26-maint/Doc/license.rst Fri Jan 1 05:46:19 2010 @@ -130,7 +130,7 @@ analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python |release| alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of - copyright, i.e., "Copyright ? 2001-2009 Python Software Foundation; All Rights + copyright, i.e., "Copyright ? 2001-2010 Python Software Foundation; All Rights Reserved" are retained in Python |release| alone or in any derivative version prepared by Licensee. Modified: python/branches/release26-maint/LICENSE ============================================================================== --- python/branches/release26-maint/LICENSE (original) +++ python/branches/release26-maint/LICENSE Fri Jan 1 05:46:19 2010 @@ -96,9 +96,9 @@ analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, -i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Python -Software Foundation; All Rights Reserved" are retained in Python alone or in any -derivative version prepared by Licensee. +i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 +Python Software Foundation; All Rights Reserved" are retained in Python alone or +in any derivative version prepared by Licensee. 3. In the event Licensee prepares a derivative work that is based on or incorporates Python or any part thereof, and wants to make Modified: python/branches/release26-maint/Python/getcopyright.c ============================================================================== --- python/branches/release26-maint/Python/getcopyright.c (original) +++ python/branches/release26-maint/Python/getcopyright.c Fri Jan 1 05:46:19 2010 @@ -4,7 +4,7 @@ static char cprt[] = "\ -Copyright (c) 2001-2009 Python Software Foundation.\n\ +Copyright (c) 2001-2010 Python Software Foundation.\n\ All Rights Reserved.\n\ \n\ Copyright (c) 2000 BeOpen.com.\n\ Modified: python/branches/release26-maint/README ============================================================================== --- python/branches/release26-maint/README (original) +++ python/branches/release26-maint/README Fri Jan 1 05:46:19 2010 @@ -1,7 +1,7 @@ This is Python version 2.6.4 ============================ -Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Python Software Foundation. All rights reserved. From python-checkins at python.org Fri Jan 1 05:47:55 2010 From: python-checkins at python.org (benjamin.peterson) Date: Fri, 01 Jan 2010 04:47:55 -0000 Subject: [Python-checkins] r77206 - in python/branches/py3k: LICENSE Python/getcopyright.c Message-ID: Author: benjamin.peterson Date: Fri Jan 1 05:47:54 2010 New Revision: 77206 Log: Merged revisions 77203 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77203 | benjamin.peterson | 2009-12-31 22:00:55 -0600 (Thu, 31 Dec 2009) | 1 line update copyright year ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/LICENSE python/branches/py3k/Python/getcopyright.c Modified: python/branches/py3k/LICENSE ============================================================================== --- python/branches/py3k/LICENSE (original) +++ python/branches/py3k/LICENSE Fri Jan 1 05:47:54 2010 @@ -100,9 +100,9 @@ analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, -i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Python -Software Foundation; All Rights Reserved" are retained in Python alone or in any -derivative version prepared by Licensee. +i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 +Python Software Foundation; All Rights Reserved" are retained in Python alone or +in any derivative version prepared by Licensee. 3. In the event Licensee prepares a derivative work that is based on or incorporates Python or any part thereof, and wants to make Modified: python/branches/py3k/Python/getcopyright.c ============================================================================== --- python/branches/py3k/Python/getcopyright.c (original) +++ python/branches/py3k/Python/getcopyright.c Fri Jan 1 05:47:54 2010 @@ -4,7 +4,7 @@ static char cprt[] = "\ -Copyright (c) 2001-2009 Python Software Foundation.\n\ +Copyright (c) 2001-2010 Python Software Foundation.\n\ All Rights Reserved.\n\ \n\ Copyright (c) 2000 BeOpen.com.\n\ From python-checkins at python.org Fri Jan 1 05:49:25 2010 From: python-checkins at python.org (benjamin.peterson) Date: Fri, 01 Jan 2010 04:49:25 -0000 Subject: [Python-checkins] r77207 - in python/branches/py3k: Doc/copyright.rst Doc/license.rst README Message-ID: Author: benjamin.peterson Date: Fri Jan 1 05:49:25 2010 New Revision: 77207 Log: Merged revisions 77204 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77204 | ezio.melotti | 2009-12-31 22:16:42 -0600 (Thu, 31 Dec 2009) | 1 line more copyright year updates ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/copyright.rst python/branches/py3k/Doc/license.rst python/branches/py3k/README Modified: python/branches/py3k/Doc/copyright.rst ============================================================================== --- python/branches/py3k/Doc/copyright.rst (original) +++ python/branches/py3k/Doc/copyright.rst Fri Jan 1 05:49:25 2010 @@ -4,7 +4,7 @@ Python and this documentation is: -Copyright ? 2001-2009 Python Software Foundation. All rights reserved. +Copyright ? 2001-2010 Python Software Foundation. All rights reserved. Copyright ? 2000 BeOpen.com. All rights reserved. Modified: python/branches/py3k/Doc/license.rst ============================================================================== --- python/branches/py3k/Doc/license.rst (original) +++ python/branches/py3k/Doc/license.rst Fri Jan 1 05:49:25 2010 @@ -134,7 +134,7 @@ analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python |release| alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of - copyright, i.e., "Copyright ? 2001-2009 Python Software Foundation; All Rights + copyright, i.e., "Copyright ? 2001-2010 Python Software Foundation; All Rights Reserved" are retained in Python |release| alone or in any derivative version prepared by Licensee. Modified: python/branches/py3k/README ============================================================================== --- python/branches/py3k/README (original) +++ python/branches/py3k/README Fri Jan 1 05:49:25 2010 @@ -1,7 +1,7 @@ This is Python version 3.2 ========================== -Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Python Software Foundation. All rights reserved. From python-checkins at python.org Fri Jan 1 05:55:34 2010 From: python-checkins at python.org (ezio.melotti) Date: Fri, 01 Jan 2010 04:55:34 -0000 Subject: [Python-checkins] r77208 - in python/branches/release31-maint: Doc/copyright.rst Doc/license.rst LICENSE Python/getcopyright.c README Message-ID: Author: ezio.melotti Date: Fri Jan 1 05:55:33 2010 New Revision: 77208 Log: Merged revisions 77206-77207 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77206 | benjamin.peterson | 2010-01-01 06:47:54 +0200 (Fri, 01 Jan 2010) | 9 lines Merged revisions 77203 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77203 | benjamin.peterson | 2009-12-31 22:00:55 -0600 (Thu, 31 Dec 2009) | 1 line update copyright year ........ ................ r77207 | benjamin.peterson | 2010-01-01 06:49:25 +0200 (Fri, 01 Jan 2010) | 9 lines Merged revisions 77204 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77204 | ezio.melotti | 2009-12-31 22:16:42 -0600 (Thu, 31 Dec 2009) | 1 line more copyright year updates ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Doc/copyright.rst python/branches/release31-maint/Doc/license.rst python/branches/release31-maint/LICENSE python/branches/release31-maint/Python/getcopyright.c python/branches/release31-maint/README Modified: python/branches/release31-maint/Doc/copyright.rst ============================================================================== --- python/branches/release31-maint/Doc/copyright.rst (original) +++ python/branches/release31-maint/Doc/copyright.rst Fri Jan 1 05:55:33 2010 @@ -4,7 +4,7 @@ Python and this documentation is: -Copyright ? 2001-2009 Python Software Foundation. All rights reserved. +Copyright ? 2001-2010 Python Software Foundation. All rights reserved. Copyright ? 2000 BeOpen.com. All rights reserved. Modified: python/branches/release31-maint/Doc/license.rst ============================================================================== --- python/branches/release31-maint/Doc/license.rst (original) +++ python/branches/release31-maint/Doc/license.rst Fri Jan 1 05:55:33 2010 @@ -135,7 +135,7 @@ analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python |release| alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of - copyright, i.e., "Copyright ? 2001-2009 Python Software Foundation; All Rights + copyright, i.e., "Copyright ? 2001-2010 Python Software Foundation; All Rights Reserved" are retained in Python |release| alone or in any derivative version prepared by Licensee. Modified: python/branches/release31-maint/LICENSE ============================================================================== --- python/branches/release31-maint/LICENSE (original) +++ python/branches/release31-maint/LICENSE Fri Jan 1 05:55:33 2010 @@ -100,9 +100,9 @@ analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, -i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Python -Software Foundation; All Rights Reserved" are retained in Python alone or in any -derivative version prepared by Licensee. +i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 +Python Software Foundation; All Rights Reserved" are retained in Python alone or +in any derivative version prepared by Licensee. 3. In the event Licensee prepares a derivative work that is based on or incorporates Python or any part thereof, and wants to make Modified: python/branches/release31-maint/Python/getcopyright.c ============================================================================== --- python/branches/release31-maint/Python/getcopyright.c (original) +++ python/branches/release31-maint/Python/getcopyright.c Fri Jan 1 05:55:33 2010 @@ -4,7 +4,7 @@ static char cprt[] = "\ -Copyright (c) 2001-2009 Python Software Foundation.\n\ +Copyright (c) 2001-2010 Python Software Foundation.\n\ All Rights Reserved.\n\ \n\ Copyright (c) 2000 BeOpen.com.\n\ Modified: python/branches/release31-maint/README ============================================================================== --- python/branches/release31-maint/README (original) +++ python/branches/release31-maint/README Fri Jan 1 05:55:33 2010 @@ -1,7 +1,7 @@ This is Python version 3.1.1 ============================ -Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Python Software Foundation. All rights reserved. From python-checkins at python.org Fri Jan 1 14:07:05 2010 From: python-checkins at python.org (georg.brandl) Date: Fri, 01 Jan 2010 13:07:05 -0000 Subject: [Python-checkins] r77209 - in python/trunk: Lib/email/generator.py Lib/email/test/test_email.py Lib/email/utils.py Lib/idlelib/NEWS.txt Lib/lib-tk/turtle.py Lib/logging/__init__.py Lib/platform.py Lib/test/test_hashlib.py Lib/test/test_logging.py Lib/unittest/__init__.py Mac/Resources/app/Info.plist.in Modules/_hashopenssl.c Message-ID: Author: georg.brandl Date: Fri Jan 1 14:07:05 2010 New Revision: 77209 Log: More yearly updates. Modified: python/trunk/Lib/email/generator.py python/trunk/Lib/email/test/test_email.py python/trunk/Lib/email/utils.py python/trunk/Lib/idlelib/NEWS.txt python/trunk/Lib/lib-tk/turtle.py python/trunk/Lib/logging/__init__.py python/trunk/Lib/platform.py python/trunk/Lib/test/test_hashlib.py python/trunk/Lib/test/test_logging.py python/trunk/Lib/unittest/__init__.py python/trunk/Mac/Resources/app/Info.plist.in python/trunk/Modules/_hashopenssl.c Modified: python/trunk/Lib/email/generator.py ============================================================================== --- python/trunk/Lib/email/generator.py (original) +++ python/trunk/Lib/email/generator.py Fri Jan 1 14:07:05 2010 @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2009 Python Software Foundation +# Copyright (C) 2001-2010 Python Software Foundation # Contact: email-sig at python.org """Classes to generate plain text from a message object tree.""" Modified: python/trunk/Lib/email/test/test_email.py ============================================================================== --- python/trunk/Lib/email/test/test_email.py (original) +++ python/trunk/Lib/email/test/test_email.py Fri Jan 1 14:07:05 2010 @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2009 Python Software Foundation +# Copyright (C) 2001-2010 Python Software Foundation # Contact: email-sig at python.org # email package unit tests Modified: python/trunk/Lib/email/utils.py ============================================================================== --- python/trunk/Lib/email/utils.py (original) +++ python/trunk/Lib/email/utils.py Fri Jan 1 14:07:05 2010 @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2009 Python Software Foundation +# Copyright (C) 2001-2010 Python Software Foundation # Author: Barry Warsaw # Contact: email-sig at python.org Modified: python/trunk/Lib/idlelib/NEWS.txt ============================================================================== --- python/trunk/Lib/idlelib/NEWS.txt (original) +++ python/trunk/Lib/idlelib/NEWS.txt Fri Jan 1 14:07:05 2010 @@ -1,7 +1,7 @@ What's New in IDLE 2.7a0? ========================= -*Release date: XX-XXX-2009* +*Release date: XX-XXX-2010* - idle.py modified and simplified to better support developing experimental versions of IDLE which are not installed in the standard location. Modified: python/trunk/Lib/lib-tk/turtle.py ============================================================================== --- python/trunk/Lib/lib-tk/turtle.py (original) +++ python/trunk/Lib/lib-tk/turtle.py Fri Jan 1 14:07:05 2010 @@ -2,7 +2,7 @@ # turtle.py: a Tkinter based turtle graphics module for Python # Version 1.0.1 - 24. 9. 2009 # -# Copyright (C) 2006 - 2009 Gregor Lingl +# Copyright (C) 2006 - 2010 Gregor Lingl # email: glingl at aon.at # # This software is provided 'as-is', without any express or implied Modified: python/trunk/Lib/logging/__init__.py ============================================================================== --- python/trunk/Lib/logging/__init__.py (original) +++ python/trunk/Lib/logging/__init__.py Fri Jan 1 14:07:05 2010 @@ -18,7 +18,7 @@ Logging package for Python. Based on PEP 282 and comments thereto in comp.lang.python, and influenced by Apache's log4j system. -Copyright (C) 2001-2009 Vinay Sajip. All Rights Reserved. +Copyright (C) 2001-2010 Vinay Sajip. All Rights Reserved. To use, simply 'import logging' and log away! """ Modified: python/trunk/Lib/platform.py ============================================================================== --- python/trunk/Lib/platform.py (original) +++ python/trunk/Lib/platform.py Fri Jan 1 14:07:05 2010 @@ -92,7 +92,7 @@ __copyright__ = """ Copyright (c) 1999-2000, Marc-Andre Lemburg; mailto:mal at lemburg.com - Copyright (c) 2000-2009, eGenix.com Software GmbH; mailto:info at egenix.com + Copyright (c) 2000-2010, eGenix.com Software GmbH; mailto:info at egenix.com Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee or royalty is hereby granted, Modified: python/trunk/Lib/test/test_hashlib.py ============================================================================== --- python/trunk/Lib/test/test_hashlib.py (original) +++ python/trunk/Lib/test/test_hashlib.py Fri Jan 1 14:07:05 2010 @@ -2,7 +2,7 @@ # # $Id$ # -# Copyright (C) 2005-2009 Gregory P. Smith (greg at krypto.org) +# Copyright (C) 2005-2010 Gregory P. Smith (greg at krypto.org) # Licensed to PSF under a Contributor Agreement. # Modified: python/trunk/Lib/test/test_logging.py ============================================================================== --- python/trunk/Lib/test/test_logging.py (original) +++ python/trunk/Lib/test/test_logging.py Fri Jan 1 14:07:05 2010 @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright 2001-2009 by Vinay Sajip. All Rights Reserved. +# Copyright 2001-2010 by Vinay Sajip. All Rights Reserved. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, @@ -18,7 +18,7 @@ """Test harness for the logging module. Run all tests. -Copyright (C) 2001-2009 Vinay Sajip. All Rights Reserved. +Copyright (C) 2001-2010 Vinay Sajip. All Rights Reserved. """ import logging Modified: python/trunk/Lib/unittest/__init__.py ============================================================================== --- python/trunk/Lib/unittest/__init__.py (original) +++ python/trunk/Lib/unittest/__init__.py Fri Jan 1 14:07:05 2010 @@ -27,7 +27,7 @@ http://docs.python.org/library/unittest.html Copyright (c) 1999-2003 Steve Purcell -Copyright (c) 2003-2009 Python Software Foundation +Copyright (c) 2003-2010 Python Software Foundation This module is free software, and you may redistribute it and/or modify it under the same terms as Python itself, so long as this copyright message and disclaimer are retained in their original form. Modified: python/trunk/Mac/Resources/app/Info.plist.in ============================================================================== --- python/trunk/Mac/Resources/app/Info.plist.in (original) +++ python/trunk/Mac/Resources/app/Info.plist.in Fri Jan 1 14:07:05 2010 @@ -20,7 +20,7 @@ CFBundleExecutable Python CFBundleGetInfoString - %version%, (c) 2004-2009 Python Software Foundation. + %version%, (c) 2004-2010 Python Software Foundation. CFBundleHelpBookFolder Documentation @@ -37,7 +37,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleLongVersionString - %version%, (c) 2004-2009 Python Software Foundation. + %version%, (c) 2004-2010 Python Software Foundation. CFBundleName Python CFBundlePackageType Modified: python/trunk/Modules/_hashopenssl.c ============================================================================== --- python/trunk/Modules/_hashopenssl.c (original) +++ python/trunk/Modules/_hashopenssl.c Fri Jan 1 14:07:05 2010 @@ -1,7 +1,7 @@ /* Module that wraps all OpenSSL hash algorithms */ /* - * Copyright (C) 2005-2009 Gregory P. Smith (greg at krypto.org) + * Copyright (C) 2005-2010 Gregory P. Smith (greg at krypto.org) * Licensed to PSF under a Contributor Agreement. * * Derived from a skeleton of shamodule.c containing work performed by: From python-checkins at python.org Fri Jan 1 15:31:33 2010 From: python-checkins at python.org (tarek.ziade) Date: Fri, 01 Jan 2010 14:31:33 -0000 Subject: [Python-checkins] r77210 - python/branches/tarek_sysconfig/Lib/sysconfig.py Message-ID: Author: tarek.ziade Date: Fri Jan 1 15:31:33 2010 New Revision: 77210 Log: using str.format as suggested by Brett Modified: python/branches/tarek_sysconfig/Lib/sysconfig.py Modified: python/branches/tarek_sysconfig/Lib/sysconfig.py ============================================================================== --- python/branches/tarek_sysconfig/Lib/sysconfig.py (original) +++ python/branches/tarek_sysconfig/Lib/sysconfig.py Fri Jan 1 15:31:33 2010 @@ -7,71 +7,71 @@ _INSTALL_SCHEMES = { 'posix_prefix': { - 'stdlib': '$base/lib/python$py_version_short', - 'platstdlib': '$platbase/lib/python$py_version_short', - 'purelib': '$base/lib/python$py_version_short/site-packages', - 'platlib': '$platbase/lib/python$py_version_short/site-packages', - 'include': '$base/include/python$py_version_short', - 'platinclude': '$platbase/include/python$py_version_short', - 'scripts': '$base/bin', - 'data': '$base', + 'stdlib': '{base}/lib/python{py_version_short}', + 'platstdlib': '{platbase}/lib/python{py_version_short}', + 'purelib': '{base}/lib/python{py_version_short}/site-packages', + 'platlib': '{platbase}/lib/python{py_version_short}/site-packages', + 'include': '{base}/include/python{py_version_short}', + 'platinclude': '{platbase}/include/python{py_version_short}', + 'scripts': '{base}/bin', + 'data': '{base}', }, 'posix_home': { - 'stdlib': '$base/lib/python', - 'platstdlib': '$base/lib/python', - 'purelib': '$base/lib/python', - 'platlib': '$base/lib/python', - 'include': '$base/include/python', - 'platinclude': '$base/include/python', - 'scripts': '$base/bin', - 'data' : '$base', + 'stdlib': '{base}/lib/python', + 'platstdlib': '{base}/lib/python', + 'purelib': '{base}/lib/python', + 'platlib': '{base}/lib/python', + 'include': '{base}/include/python', + 'platinclude': '{base}/include/python', + 'scripts': '{base}/bin', + 'data' : '{base}', }, 'nt': { - 'stdlib': '$base/Lib', - 'platstdlib': '$base/Lib', - 'purelib': '$base/Lib/site-packages', - 'platlib': '$base/Lib/site-packages', - 'include': '$base/include', - 'platinclude': '$base/include', - 'scripts': '$base/Scripts', - 'data' : '$base', + 'stdlib': '{base}/Lib', + 'platstdlib': '{base}/Lib', + 'purelib': '{base}/Lib/site-packages', + 'platlib': '{base}/Lib/site-packages', + 'include': '{base}/include', + 'platinclude': '{base}/include', + 'scripts': '{base}/Scripts', + 'data' : '{base}', }, 'os2': { - 'stdlib': '$base/Lib', - 'platstdlib': '$base/Lib', - 'purelib': '$base/Lib/site-packages', - 'platlib': '$base/Lib/site-packages', - 'include': '$base/Include', - 'platinclude': '$base/Include', - 'scripts': '$base/Scripts', - 'data' : '$base', + 'stdlib': '{base}/Lib', + 'platstdlib': '{base}/Lib', + 'purelib': '{base}/Lib/site-packages', + 'platlib': '{base}/Lib/site-packages', + 'include': '{base}/Include', + 'platinclude': '{base}/Include', + 'scripts': '{base}/Scripts', + 'data' : '{base}', }, 'os2_home': { - 'stdlib': '$userbase/lib/python/$py_version_short', - 'platstdlib': '$userbase/lib/python/$py_version_short', - 'purelib': '$userbase/lib/python/$py_version_short/site-packages', - 'platlib': '$userbase/lib/python/$py_version_short/site-packages', - 'include': '$userbase/include/python$py_version_short', - 'scripts': '$userbase/bin', - 'data' : '$userbase', + 'stdlib': '{userbase}/lib/python/{py_version_short}', + 'platstdlib': '{userbase}/lib/python/{py_version_short}', + 'purelib': '{userbase}/lib/python/{py_version_short}/site-packages', + 'platlib': '{userbase}/lib/python/{py_version_short}/site-packages', + 'include': '{userbase}/include/python{py_version_short}', + 'scripts': '{userbase}/bin', + 'data' : '{userbase}', }, 'nt_user': { - 'stdlib': '$userbase/Python$py_version_nodot', - 'platstdlib': '$userbase/Python$py_version_nodot', - 'purelib': '$userbase/Python$py_version_nodot/site-packages', - 'platlib': '$userbase/Python$py_version_nodot/site-packages', - 'include': '$userbase/Python$py_version_nodot/Include', - 'scripts': '$userbase/Scripts', - 'data' : '$userbase', + 'stdlib': '{userbase}/Python{py_version_nodot}', + 'platstdlib': '{userbase}/Python{py_version_nodot}', + 'purelib': '{userbase}/Python{py_version_nodot}/site-packages', + 'platlib': '{userbase}/Python{py_version_nodot}/site-packages', + 'include': '{userbase}/Python{py_version_nodot}/Include', + 'scripts': '{userbase}/Scripts', + 'data' : '{userbase}', }, 'posix_user': { - 'stdlib': '$userbase/lib/python/$py_version_short', - 'platstdlib': '$userbase/lib/python/$py_version_short', - 'purelib': '$userbase/lib/python/$py_version_short/site-packages', - 'platlib': '$userbase/lib/python/$py_version_short/site-packages', - 'include': '$userbase/include/python$py_version_short', - 'scripts': '$userbase/bin', - 'data' : '$userbase', + 'stdlib': '{userbase}/lib/python/{py_version_short}', + 'platstdlib': '{userbase}/lib/python/{py_version_short}', + 'purelib': '{userbase}/lib/python/{py_version_short}/site-packages', + 'platlib': '{userbase}/lib/python/{py_version_short}/site-packages', + 'include': '{userbase}/include/python{py_version_short}', + 'scripts': '{userbase}/bin', + 'data' : '{userbase}', }, } @@ -105,21 +105,16 @@ if _PYTHON_BUILD: for scheme in ('posix_prefix', 'posix_home'): - _INSTALL_SCHEMES[scheme]['include'] = '$projectbase/Include' - _INSTALL_SCHEMES[scheme]['platinclude'] = '$srcdir' + _INSTALL_SCHEMES[scheme]['include'] = '{projectbase}/Include' + _INSTALL_SCHEMES[scheme]['platinclude'] = '{srcdir}' def _subst_vars(s, local_vars): - import re - def _subst(match, local_vars=local_vars): - var_name = match.group(1) - if var_name in local_vars: - return str(local_vars[var_name]) - else: - return os.environ[var_name] try: - return re.sub(r'\$([a-zA-Z_][a-zA-Z_0-9]*)', _subst, s) + return s.format(**local_vars) + except KeyError: + return s.format(**os.environ) except KeyError, var: - raise AttributeError('$%s' % var) + raise AttributeError('{%s}' % var) def _extend_dict(target_dict, other_dict): target_keys = target_dict.keys() From python-checkins at python.org Fri Jan 1 15:59:57 2010 From: python-checkins at python.org (tarek.ziade) Date: Fri, 01 Jan 2010 14:59:57 -0000 Subject: [Python-checkins] r77211 - in python/branches/tarek_sysconfig/Lib/distutils: sysconfig.py tests/test_sysconfig.py Message-ID: Author: tarek.ziade Date: Fri Jan 1 15:59:57 2010 New Revision: 77211 Log: fixed a typo Modified: python/branches/tarek_sysconfig/Lib/distutils/sysconfig.py python/branches/tarek_sysconfig/Lib/distutils/tests/test_sysconfig.py Modified: python/branches/tarek_sysconfig/Lib/distutils/sysconfig.py ============================================================================== --- python/branches/tarek_sysconfig/Lib/distutils/sysconfig.py (original) +++ python/branches/tarek_sysconfig/Lib/distutils/sysconfig.py Fri Jan 1 15:59:57 2010 @@ -121,7 +121,7 @@ else: return get_path('platinclude') -def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): +def get_python_lib(plat_specific=False, standard_lib=False, prefix=None): """This function is deprecated. Return the directory containing the Python library (standard or @@ -155,7 +155,7 @@ return get_path('stdlib', vars=vars) else: if plat_specific: - return get_path('platib', vars=vars) + return get_path('platlib', vars=vars) else: return get_path('purelib', vars=vars) Modified: python/branches/tarek_sysconfig/Lib/distutils/tests/test_sysconfig.py ============================================================================== --- python/branches/tarek_sysconfig/Lib/distutils/tests/test_sysconfig.py (original) +++ python/branches/tarek_sysconfig/Lib/distutils/tests/test_sysconfig.py Fri Jan 1 15:59:57 2010 @@ -41,6 +41,10 @@ self.assertNotEqual(sysconfig.get_python_lib(), sysconfig.get_python_lib(prefix=TESTFN)) + _sysconfig = __import__('sysconfig') + res = sysconfig.get_python_lib(True, True) + self.assertEquals(_sysconfig.get_path('platlib'), res) + @support.capture_warnings def test_get_python_inc(self): inc_dir = sysconfig.get_python_inc() From python-checkins at python.org Fri Jan 1 16:16:30 2010 From: python-checkins at python.org (benjamin.peterson) Date: Fri, 01 Jan 2010 15:16:30 -0000 Subject: [Python-checkins] r77212 - in python/trunk: Makefile.pre.in configure configure.in setup.py Message-ID: Author: benjamin.peterson Date: Fri Jan 1 16:16:29 2010 New Revision: 77212 Log: use pkg-config to find the libffi headers when --with-system-ffi is used #6943 Modified: python/trunk/Makefile.pre.in python/trunk/configure python/trunk/configure.in python/trunk/setup.py Modified: python/trunk/Makefile.pre.in ============================================================================== --- python/trunk/Makefile.pre.in (original) +++ python/trunk/Makefile.pre.in Fri Jan 1 16:16:29 2010 @@ -205,6 +205,8 @@ GRAMMAR_INPUT= $(srcdir)/Grammar/Grammar +LIBFFI_INCLUDEDIR= @LIBFFI_INCLUDEDIR@ + ########################################################################## # Parser PGEN= Parser/pgen$(EXE) Modified: python/trunk/configure ============================================================================== --- python/trunk/configure (original) +++ python/trunk/configure Fri Jan 1 16:16:29 2010 @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 77189 . +# From configure.in Revision: 77193 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for python 2.7. # @@ -717,6 +717,8 @@ LINKFORSHARED CFLAGSFORSHARED SHLIBS +PKG_CONFIG +LIBFFI_INCLUDEDIR USE_SIGNAL_MODULE SIGNAL_OBJS USE_THREAD_MODULE @@ -15543,6 +15545,115 @@ fi +if test "$with_system_ffi" = "yes"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_PKG_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + 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_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 +echo "${ECHO_T}$PKG_CONFIG" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + 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_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 +echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + + LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`" +else + LIBFFI_INCLUDEDIR="" +fi + + { echo "$as_me:$LINENO: result: $with_system_ffi" >&5 echo "${ECHO_T}$with_system_ffi" >&6; } @@ -28351,6 +28462,8 @@ LINKFORSHARED!$LINKFORSHARED$ac_delim CFLAGSFORSHARED!$CFLAGSFORSHARED$ac_delim SHLIBS!$SHLIBS$ac_delim +PKG_CONFIG!$PKG_CONFIG$ac_delim +LIBFFI_INCLUDEDIR!$LIBFFI_INCLUDEDIR$ac_delim USE_SIGNAL_MODULE!$USE_SIGNAL_MODULE$ac_delim SIGNAL_OBJS!$SIGNAL_OBJS$ac_delim USE_THREAD_MODULE!$USE_THREAD_MODULE$ac_delim @@ -28374,7 +28487,7 @@ LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 25; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 27; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 Modified: python/trunk/configure.in ============================================================================== --- python/trunk/configure.in (original) +++ python/trunk/configure.in Fri Jan 1 16:16:29 2010 @@ -1980,6 +1980,14 @@ AC_ARG_WITH(system_ffi, AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library)) +if test "$with_system_ffi" = "yes"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) + LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`" +else + LIBFFI_INCLUDEDIR="" +fi +AC_SUBST(LIBFFI_INCLUDEDIR) + AC_MSG_RESULT($with_system_ffi) # Check for --with-dbmliborder Modified: python/trunk/setup.py ============================================================================== --- python/trunk/setup.py (original) +++ python/trunk/setup.py Fri Jan 1 16:16:29 2010 @@ -1790,7 +1790,9 @@ # in /usr/include/ffi inc_dirs.append('/usr/include/ffi') - ffi_inc = find_file('ffi.h', [], inc_dirs) + ffi_inc = [sysconfig.get_config_var("LIBFFI_INCLUDEDIR")] + if not ffi_inc: + ffi_inc = find_file('ffi.h', [], inc_dirs) if ffi_inc is not None: ffi_h = ffi_inc[0] + '/ffi.h' fp = open(ffi_h) From python-checkins at python.org Fri Jan 1 16:18:38 2010 From: python-checkins at python.org (benjamin.peterson) Date: Fri, 01 Jan 2010 15:18:38 -0000 Subject: [Python-checkins] r77213 - python/trunk/Misc/NEWS Message-ID: Author: benjamin.peterson Date: Fri Jan 1 16:18:38 2010 New Revision: 77213 Log: add note Modified: python/trunk/Misc/NEWS Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Fri Jan 1 16:18:38 2010 @@ -93,6 +93,9 @@ Build ----- +- Issue #6943: Use pkg-config to find the libffi headers when the + --with-system-ffi flag is used. + - Issue #7609: Add a --with-system-expat option that causes the system's expat library to be used for the pyexpat module instead of the one included with Python. From python-checkins at python.org Fri Jan 1 16:20:06 2010 From: python-checkins at python.org (benjamin.peterson) Date: Fri, 01 Jan 2010 15:20:06 -0000 Subject: [Python-checkins] r77214 - python/trunk/Misc/NEWS Message-ID: Author: benjamin.peterson Date: Fri Jan 1 16:20:06 2010 New Revision: 77214 Log: fix indentation Modified: python/trunk/Misc/NEWS Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Fri Jan 1 16:20:06 2010 @@ -94,7 +94,7 @@ ----- - Issue #6943: Use pkg-config to find the libffi headers when the - --with-system-ffi flag is used. + --with-system-ffi flag is used. - Issue #7609: Add a --with-system-expat option that causes the system's expat library to be used for the pyexpat module instead of the one included with From python-checkins at python.org Fri Jan 1 16:21:13 2010 From: python-checkins at python.org (benjamin.peterson) Date: Fri, 01 Jan 2010 15:21:13 -0000 Subject: [Python-checkins] r77215 - in python/trunk: Misc/NEWS setup.py Message-ID: Author: benjamin.peterson Date: Fri Jan 1 16:21:13 2010 New Revision: 77215 Log: allow --with-dbmliborder to specify that no dbm modules will be built #6491 Modified: python/trunk/Misc/NEWS python/trunk/setup.py Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Fri Jan 1 16:21:13 2010 @@ -93,6 +93,8 @@ Build ----- +- Issue #6491: Allow --with-dbmliborder to specify that no dbms will be built. + - Issue #6943: Use pkg-config to find the libffi headers when the --with-system-ffi flag is used. Modified: python/trunk/setup.py ============================================================================== --- python/trunk/setup.py (original) +++ python/trunk/setup.py Fri Jan 1 16:21:13 2010 @@ -1000,14 +1000,15 @@ else: missing.append('bsddb185') + dbm_order = ['gdbm'] # The standard Unix dbm module: if platform not in ['cygwin']: config_args = [arg.strip("'") for arg in sysconfig.get_config_var("CONFIG_ARGS").split()] - dbm_args = [arg.split('=')[-1] for arg in config_args + dbm_args = [arg for arg in config_args if arg.startswith('--with-dbmliborder=')] if dbm_args: - dbm_order = dbm_args[-1].split(":") + dbm_order = [arg.split('=')[-1] for arg in dbm_args][-1].split(":") else: dbm_order = "ndbm:gdbm:bdb".split(":") dbmext = None @@ -1071,7 +1072,8 @@ missing.append('dbm') # Anthony Baxter's gdbm module. GNU dbm(3) will require -lgdbm: - if (self.compiler_obj.find_library_file(lib_dirs, 'gdbm')): + if ('gdbm' in dbm_order and + self.compiler_obj.find_library_file(lib_dirs, 'gdbm')): exts.append( Extension('gdbm', ['gdbmmodule.c'], libraries = ['gdbm'] ) ) else: From python-checkins at python.org Fri Jan 1 17:04:23 2010 From: python-checkins at python.org (benjamin.peterson) Date: Fri, 01 Jan 2010 16:04:23 -0000 Subject: [Python-checkins] r77216 - in python/branches/py3k: Makefile.pre.in Misc/NEWS configure configure.in setup.py Message-ID: Author: benjamin.peterson Date: Fri Jan 1 17:04:23 2010 New Revision: 77216 Log: Merged revisions 77212-77215 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77212 | benjamin.peterson | 2010-01-01 09:16:29 -0600 (Fri, 01 Jan 2010) | 1 line use pkg-config to find the libffi headers when --with-system-ffi is used #6943 ........ r77213 | benjamin.peterson | 2010-01-01 09:18:38 -0600 (Fri, 01 Jan 2010) | 1 line add note ........ r77214 | benjamin.peterson | 2010-01-01 09:20:06 -0600 (Fri, 01 Jan 2010) | 1 line fix indentation ........ r77215 | benjamin.peterson | 2010-01-01 09:21:13 -0600 (Fri, 01 Jan 2010) | 1 line allow --with-dbmliborder to specify that no dbm modules will be built #6491 ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Makefile.pre.in python/branches/py3k/Misc/NEWS python/branches/py3k/configure python/branches/py3k/configure.in python/branches/py3k/setup.py Modified: python/branches/py3k/Makefile.pre.in ============================================================================== --- python/branches/py3k/Makefile.pre.in (original) +++ python/branches/py3k/Makefile.pre.in Fri Jan 1 17:04:23 2010 @@ -214,6 +214,8 @@ GRAMMAR_INPUT= $(srcdir)/Grammar/Grammar +LIBFFI_INCLUDEDIR= @LIBFFI_INCLUDEDIR@ + ########################################################################## # Parser PGEN= Parser/pgen$(EXE) Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Fri Jan 1 17:04:23 2010 @@ -517,6 +517,11 @@ Build ----- +- Issue #6491: Allow --with-dbmliborder to specify that no dbms will be built. + +- Issue #6943: Use pkg-config to find the libffi headers when the + --with-system-ffi flag is used. + - Issue #7609: Add a --with-system-expat option that causes the system's expat library to be used for the pyexpat module instead of the one included with Python. Modified: python/branches/py3k/configure ============================================================================== --- python/branches/py3k/configure (original) +++ python/branches/py3k/configure Fri Jan 1 17:04:23 2010 @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 77190 . +# From configure.in Revision: 77196 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for python 3.2. # @@ -715,6 +715,8 @@ LINKFORSHARED CFLAGSFORSHARED SHLIBS +PKG_CONFIG +LIBFFI_INCLUDEDIR USE_SIGNAL_MODULE SIGNAL_OBJS USE_THREAD_MODULE @@ -15350,6 +15352,115 @@ fi +if test "$with_system_ffi" = "yes"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_PKG_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + 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_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 +echo "${ECHO_T}$PKG_CONFIG" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + 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_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 +echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf at gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + + LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`" +else + LIBFFI_INCLUDEDIR="" +fi + + { echo "$as_me:$LINENO: result: $with_system_ffi" >&5 echo "${ECHO_T}$with_system_ffi" >&6; } @@ -27732,6 +27843,8 @@ cat >conf$$subs.sed <<_ACEOF CFLAGSFORSHARED!$CFLAGSFORSHARED$ac_delim SHLIBS!$SHLIBS$ac_delim +PKG_CONFIG!$PKG_CONFIG$ac_delim +LIBFFI_INCLUDEDIR!$LIBFFI_INCLUDEDIR$ac_delim USE_SIGNAL_MODULE!$USE_SIGNAL_MODULE$ac_delim SIGNAL_OBJS!$SIGNAL_OBJS$ac_delim USE_THREAD_MODULE!$USE_THREAD_MODULE$ac_delim @@ -27754,7 +27867,7 @@ LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 22; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 24; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 Modified: python/branches/py3k/configure.in ============================================================================== --- python/branches/py3k/configure.in (original) +++ python/branches/py3k/configure.in Fri Jan 1 17:04:23 2010 @@ -1872,6 +1872,14 @@ AC_ARG_WITH(system_ffi, AC_HELP_STRING(--with-system-ffi, build _ctypes module using an installed ffi library)) +if test "$with_system_ffi" = "yes"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) + LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`" +else + LIBFFI_INCLUDEDIR="" +fi +AC_SUBST(LIBFFI_INCLUDEDIR) + AC_MSG_RESULT($with_system_ffi) # Check for --with-dbmliborder Modified: python/branches/py3k/setup.py ============================================================================== --- python/branches/py3k/setup.py (original) +++ python/branches/py3k/setup.py Fri Jan 1 17:04:23 2010 @@ -887,14 +887,15 @@ else: missing.append('_sqlite3') + dbm_order = ['gdbm'] # The standard Unix dbm module: if platform not in ['cygwin']: config_args = [arg.strip("'") for arg in sysconfig.get_config_var("CONFIG_ARGS").split()] - dbm_args = [arg.split('=')[-1] for arg in config_args + dbm_args = [arg for arg in config_args if arg.startswith('--with-dbmliborder=')] if dbm_args: - dbm_order = dbm_args[-1].split(":") + dbm_order = [arg.split('=')[-1] for arg in dbm_args][-1].split(":") else: dbm_order = "ndbm:gdbm:bdb".split(":") dbmext = None @@ -958,7 +959,8 @@ missing.append('_dbm') # Anthony Baxter's gdbm module. GNU dbm(3) will require -lgdbm: - if (self.compiler_obj.find_library_file(lib_dirs, 'gdbm')): + if ('gdbm' in dbm_order and + self.compiler_obj.find_library_file(lib_dirs, 'gdbm')): exts.append( Extension('_gdbm', ['_gdbmmodule.c'], libraries = ['gdbm'] ) ) else: @@ -1558,7 +1560,9 @@ # in /usr/include/ffi inc_dirs.append('/usr/include/ffi') - ffi_inc = find_file('ffi.h', [], inc_dirs) + ffi_inc = [sysconfig.get_config_var("LIBFFI_INCLUDEDIR")] + if not ffi_inc: + ffi_inc = find_file('ffi.h', [], inc_dirs) if ffi_inc is not None: ffi_h = ffi_inc[0] + '/ffi.h' fp = open(ffi_h) From python-checkins at python.org Fri Jan 1 17:29:51 2010 From: python-checkins at python.org (benjamin.peterson) Date: Fri, 01 Jan 2010 16:29:51 -0000 Subject: [Python-checkins] r77217 - in python/branches/release31-maint: Misc/NEWS setup.py Message-ID: Author: benjamin.peterson Date: Fri Jan 1 17:29:51 2010 New Revision: 77217 Log: Merged revisions 77216 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77216 | benjamin.peterson | 2010-01-01 10:04:23 -0600 (Fri, 01 Jan 2010) | 21 lines Merged revisions 77212-77215 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk r77215 | benjamin.peterson | 2010-01-01 09:21:13 -0600 (Fri, 01 Jan 2010) | 1 line allow --with-dbmliborder to specify that no dbm modules will be built #6491 ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Misc/NEWS python/branches/release31-maint/setup.py Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Fri Jan 1 17:29:51 2010 @@ -406,6 +406,8 @@ Build ----- +- Issue #6491: Allow --with-dbmliborder to specify that no dbms will be built. + - Issue #7589: Only build the nis module when the correct header files are found. Modified: python/branches/release31-maint/setup.py ============================================================================== --- python/branches/release31-maint/setup.py (original) +++ python/branches/release31-maint/setup.py Fri Jan 1 17:29:51 2010 @@ -893,14 +893,15 @@ else: missing.append('_sqlite3') + dbm_order = ['gdbm'] # The standard Unix dbm module: if platform not in ['cygwin']: config_args = [arg.strip("'") for arg in sysconfig.get_config_var("CONFIG_ARGS").split()] - dbm_args = [arg.split('=')[-1] for arg in config_args + dbm_args = [arg for arg in config_args if arg.startswith('--with-dbmliborder=')] if dbm_args: - dbm_order = dbm_args[-1].split(":") + dbm_order = [arg.split('=')[-1] for arg in dbm_args][-1].split(":") else: dbm_order = "ndbm:gdbm:bdb".split(":") dbmext = None @@ -962,7 +963,8 @@ missing.append('_dbm') # Anthony Baxter's gdbm module. GNU dbm(3) will require -lgdbm: - if (self.compiler.find_library_file(lib_dirs, 'gdbm')): + if ('gdbm' in dbm_order and + self.compiler.find_library_file(lib_dirs, 'gdbm')): exts.append( Extension('_gdbm', ['_gdbmmodule.c'], libraries = ['gdbm'] ) ) else: From python-checkins at python.org Fri Jan 1 18:27:30 2010 From: python-checkins at python.org (mark.dickinson) Date: Fri, 01 Jan 2010 17:27:30 -0000 Subject: [Python-checkins] r77218 - in python/trunk: Lib/os.py Lib/test/test_getargs2.py Lib/test/test_os.py Lib/test/test_xrange.py Misc/NEWS Python/getargs.c Message-ID: Author: mark.dickinson Date: Fri Jan 1 18:27:30 2010 New Revision: 77218 Log: Issue #5080: turn the DeprecationWarning from float arguments passed to integer PyArg_Parse* format codes into a TypeError. Add a DeprecationWarning for floats passed with the 'L' format code, which didn't previously have a warning. Modified: python/trunk/Lib/os.py python/trunk/Lib/test/test_getargs2.py python/trunk/Lib/test/test_os.py python/trunk/Lib/test/test_xrange.py python/trunk/Misc/NEWS python/trunk/Python/getargs.c Modified: python/trunk/Lib/os.py ============================================================================== --- python/trunk/Lib/os.py (original) +++ python/trunk/Lib/os.py Fri Jan 1 18:27:30 2010 @@ -752,7 +752,7 @@ raise NotImplementedError("/dev/urandom (or equivalent) not found") try: bs = b"" - while n - len(bs) >= 1: + while n > len(bs): bs += read(_urandomfd, n - len(bs)) finally: close(_urandomfd) Modified: python/trunk/Lib/test/test_getargs2.py ============================================================================== --- python/trunk/Lib/test/test_getargs2.py (original) +++ python/trunk/Lib/test/test_getargs2.py Fri Jan 1 18:27:30 2010 @@ -1,16 +1,7 @@ import unittest from test import test_support from _testcapi import getargs_keywords - import warnings -warnings.filterwarnings("ignore", - category=DeprecationWarning, - message=".*integer argument expected, got float", - module=__name__) -warnings.filterwarnings("ignore", - category=DeprecationWarning, - message=".*integer argument expected, got float", - module="unittest") """ > How about the following counterproposal. This also changes some of @@ -68,7 +59,7 @@ def test_b(self): from _testcapi import getargs_b # b returns 'unsigned char', and does range checking (0 ... UCHAR_MAX) - self.assertEqual(3, getargs_b(3.14)) + self.assertRaises(TypeError, getargs_b, 3.14) self.assertEqual(99, getargs_b(Long())) self.assertEqual(99, getargs_b(Int())) @@ -84,7 +75,7 @@ def test_B(self): from _testcapi import getargs_B # B returns 'unsigned char', no range checking - self.assertEqual(3, getargs_B(3.14)) + self.assertRaises(TypeError, getargs_B, 3.14) self.assertEqual(99, getargs_B(Long())) self.assertEqual(99, getargs_B(Int())) @@ -101,7 +92,7 @@ def test_H(self): from _testcapi import getargs_H # H returns 'unsigned short', no range checking - self.assertEqual(3, getargs_H(3.14)) + self.assertRaises(TypeError, getargs_H, 3.14) self.assertEqual(99, getargs_H(Long())) self.assertEqual(99, getargs_H(Int())) @@ -118,7 +109,7 @@ def test_I(self): from _testcapi import getargs_I # I returns 'unsigned int', no range checking - self.assertEqual(3, getargs_I(3.14)) + self.assertRaises(TypeError, getargs_I, 3.14) self.assertEqual(99, getargs_I(Long())) self.assertEqual(99, getargs_I(Int())) @@ -154,7 +145,7 @@ def test_h(self): from _testcapi import getargs_h # h returns 'short', and does range checking (SHRT_MIN ... SHRT_MAX) - self.assertEqual(3, getargs_h(3.14)) + self.assertRaises(TypeError, getargs_h, 3.14) self.assertEqual(99, getargs_h(Long())) self.assertEqual(99, getargs_h(Int())) @@ -170,7 +161,7 @@ def test_i(self): from _testcapi import getargs_i # i returns 'int', and does range checking (INT_MIN ... INT_MAX) - self.assertEqual(3, getargs_i(3.14)) + self.assertRaises(TypeError, getargs_i, 3.14) self.assertEqual(99, getargs_i(Long())) self.assertEqual(99, getargs_i(Int())) @@ -186,7 +177,7 @@ def test_l(self): from _testcapi import getargs_l # l returns 'long', and does range checking (LONG_MIN ... LONG_MAX) - self.assertEqual(3, getargs_l(3.14)) + self.assertRaises(TypeError, getargs_l, 3.14) self.assertEqual(99, getargs_l(Long())) self.assertEqual(99, getargs_l(Int())) @@ -203,7 +194,7 @@ from _testcapi import getargs_n # n returns 'Py_ssize_t', and does range checking # (PY_SSIZE_T_MIN ... PY_SSIZE_T_MAX) - self.assertEqual(3, getargs_n(3.14)) + self.assertRaises(TypeError, getargs_n, 3.14) self.assertEqual(99, getargs_n(Long())) self.assertEqual(99, getargs_n(Int())) @@ -220,9 +211,24 @@ class LongLong_TestCase(unittest.TestCase): def test_L(self): from _testcapi import getargs_L - # L returns 'long long', and does range checking (LLONG_MIN ... LLONG_MAX) + # L returns 'long long', and does range checking (LLONG_MIN + # ... LLONG_MAX) + with warnings.catch_warnings(): + warnings.filterwarnings( + "ignore", + category=DeprecationWarning, + message=".*integer argument expected, got float", + module=__name__) + self.assertEqual(3, getargs_L(3.14)) + with warnings.catch_warnings(): + warnings.filterwarnings( + "error", + category=DeprecationWarning, + message=".*integer argument expected, got float", + module="unittest") + self.assertRaises(DeprecationWarning, getargs_L, 3.14) + self.assertRaises(TypeError, getargs_L, "Hello") - self.assertEqual(3, getargs_L(3.14)) self.assertEqual(99, getargs_L(Long())) self.assertEqual(99, getargs_L(Int())) Modified: python/trunk/Lib/test/test_os.py ============================================================================== --- python/trunk/Lib/test/test_os.py (original) +++ python/trunk/Lib/test/test_os.py Fri Jan 1 18:27:30 2010 @@ -502,11 +502,9 @@ self.assertEqual(len(os.urandom(100)), 100) self.assertEqual(len(os.urandom(1000)), 1000) # see http://bugs.python.org/issue3708 - with test_support.check_warnings(): - # silence deprecation warnings about float arguments - self.assertEqual(len(os.urandom(0.9)), 0) - self.assertEqual(len(os.urandom(1.1)), 1) - self.assertEqual(len(os.urandom(2.0)), 2) + self.assertRaises(TypeError, os.urandom, 0.9) + self.assertRaises(TypeError, os.urandom, 1.1) + self.assertRaises(TypeError, os.urandom, 2.0) except NotImplementedError: pass Modified: python/trunk/Lib/test/test_xrange.py ============================================================================== --- python/trunk/Lib/test/test_xrange.py (original) +++ python/trunk/Lib/test/test_xrange.py Fri Jan 1 18:27:30 2010 @@ -81,7 +81,7 @@ self.assertRaises(TypeError, xrange, 1, 2, 3, 4) self.assertRaises(ValueError, xrange, 1, 2, 0) - self.assertRaises(OverflowError, xrange, 1e100, 1e101, 1e101) + self.assertRaises(OverflowError, xrange, 10**100, 10**101, 10**101) self.assertRaises(TypeError, xrange, 0, "spam") self.assertRaises(TypeError, xrange, 0, 42, "spam") Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Fri Jan 1 18:27:30 2010 @@ -12,6 +12,14 @@ Core and Builtins ----------------- +- Issue #5080: A number of functions and methods previously produced a + DeprecationWarning when passed a float argument where an integer was + expected. These functions and methods now raise TypeError instead. + The majority of the effects of this change are in the extension + modules, but some core functions and methods are affected: notably + the 'chr', 'range' and 'xrange' builtins, and many unicode/str + methods. + - Issue #7604: Deleting an unset slotted attribute did not raise an AttributeError. @@ -88,6 +96,14 @@ C-API ----- +- Issue #5080: The argument parsing functions PyArg_ParseTuple, + PyArg_ParseTupleAndKeywords, PyArg_VaParse, + PyArg_VaParseTupleAndKeywords and PyArg_Parse no longer accept float + arguments for integer format codes (other than 'L'): previously an + attempt to pass a float resulted in a DeprecationWarning; now it + gives a TypeError. For the 'L' format code (which previously had no + warning) there is now a DeprecationWarning. + - Issue #7033: function ``PyErr_NewExceptionWithDoc()`` added. Build Modified: python/trunk/Python/getargs.c ============================================================================== --- python/trunk/Python/getargs.c (original) +++ python/trunk/Python/getargs.c Fri Jan 1 18:27:30 2010 @@ -526,7 +526,7 @@ /* explicitly check for float arguments when integers are expected. For now * signal a warning. Returns true if an exception was raised. */ static int -float_argument_error(PyObject *arg) +float_argument_warning(PyObject *arg) { if (PyFloat_Check(arg) && PyErr_Warn(PyExc_DeprecationWarning, @@ -536,6 +536,20 @@ return 0; } +/* explicitly check for float arguments when integers are expected. Raises + TypeError and returns true for float arguments. */ +static int +float_argument_error(PyObject *arg) +{ + if (PyFloat_Check(arg)) { + PyErr_SetString(PyExc_TypeError, + "integer argument expected, got float"); + return 1; + } + else + return 0; +} + /* Convert a non-tuple argument. Return NULL if conversion went OK, or a string with a message describing the failure. The message is formatted as "must be , not ". @@ -719,7 +733,10 @@ #ifdef HAVE_LONG_LONG case 'L': {/* PY_LONG_LONG */ PY_LONG_LONG *p = va_arg( *p_va, PY_LONG_LONG * ); - PY_LONG_LONG ival = PyLong_AsLongLong( arg ); + PY_LONG_LONG ival; + if (float_argument_warning(arg)) + return converterr("long", arg, msgbuf, bufsize); + ival = PyLong_AsLongLong(arg); if (ival == (PY_LONG_LONG)-1 && PyErr_Occurred() ) { return converterr("long", arg, msgbuf, bufsize); } else { From python-checkins at python.org Fri Jan 1 18:28:04 2010 From: python-checkins at python.org (mark.dickinson) Date: Fri, 01 Jan 2010 17:28:04 -0000 Subject: [Python-checkins] r77219 - python/branches/release26-maint Message-ID: Author: mark.dickinson Date: Fri Jan 1 18:28:04 2010 New Revision: 77219 Log: Blocked revisions 77218 via svnmerge ........ r77218 | mark.dickinson | 2010-01-01 17:27:30 +0000 (Fri, 01 Jan 2010) | 5 lines Issue #5080: turn the DeprecationWarning from float arguments passed to integer PyArg_Parse* format codes into a TypeError. Add a DeprecationWarning for floats passed with the 'L' format code, which didn't previously have a warning. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Fri Jan 1 20:27:33 2010 From: python-checkins at python.org (mark.dickinson) Date: Fri, 01 Jan 2010 19:27:33 -0000 Subject: [Python-checkins] r77220 - in python/branches/py3k: Lib/test/test_getargs2.py Misc/NEWS Python/getargs.c Message-ID: Author: mark.dickinson Date: Fri Jan 1 20:27:32 2010 New Revision: 77220 Log: Merged revisions 77218 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77218 | mark.dickinson | 2010-01-01 17:27:30 +0000 (Fri, 01 Jan 2010) | 5 lines Issue #5080: turn the DeprecationWarning from float arguments passed to integer PyArg_Parse* format codes into a TypeError. Add a DeprecationWarning for floats passed with the 'L' format code, which didn't previously have a warning. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_getargs2.py python/branches/py3k/Misc/NEWS python/branches/py3k/Python/getargs.c Modified: python/branches/py3k/Lib/test/test_getargs2.py ============================================================================== --- python/branches/py3k/Lib/test/test_getargs2.py (original) +++ python/branches/py3k/Lib/test/test_getargs2.py Fri Jan 1 20:27:32 2010 @@ -1,16 +1,7 @@ import unittest from test import support from _testcapi import getargs_keywords - import warnings -warnings.filterwarnings("ignore", - category=DeprecationWarning, - message=".*integer argument expected, got float", - module=__name__) -warnings.filterwarnings("ignore", - category=DeprecationWarning, - message=".*integer argument expected, got float", - module="unittest") """ > How about the following counterproposal. This also changes some of @@ -197,9 +188,24 @@ class LongLong_TestCase(unittest.TestCase): def test_L(self): from _testcapi import getargs_L - # L returns 'long long', and does range checking (LLONG_MIN ... LLONG_MAX) + # L returns 'long long', and does range checking (LLONG_MIN + # ... LLONG_MAX) + with warnings.catch_warnings(): + warnings.filterwarnings( + "ignore", + category=DeprecationWarning, + message=".*integer argument expected, got float", + module=__name__) + self.assertEqual(3, getargs_L(3.14)) + with warnings.catch_warnings(): + warnings.filterwarnings( + "error", + category=DeprecationWarning, + message=".*integer argument expected, got float", + module="unittest") + self.assertRaises(DeprecationWarning, getargs_L, 3.14) + self.assertRaises(TypeError, getargs_L, "Hello") - self.assertEqual(3, getargs_L(3.14)) self.assertEqual(99, getargs_L(Int())) self.assertRaises(OverflowError, getargs_L, LLONG_MIN-1) Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Fri Jan 1 20:27:32 2010 @@ -146,6 +146,13 @@ C-API ----- +- Issue #5080: The argument parsing functions PyArg_ParseTuple, + PyArg_ParseTupleAndKeywords, PyArg_VaParse, + PyArg_VaParseTupleAndKeywords and PyArg_Parse now raise a + DeprecationWarning for float arguments passed with the 'L' format + code. This will become a TypeError in a future version of Python, + to match the behaviour of the other integer format codes. + - Issue #7033: function ``PyErr_NewExceptionWithDoc()`` added. - Issue #7414: 'C' code wasn't being skipped properly (for keyword arguments) Modified: python/branches/py3k/Python/getargs.c ============================================================================== --- python/branches/py3k/Python/getargs.c (original) +++ python/branches/py3k/Python/getargs.c Fri Jan 1 20:27:32 2010 @@ -582,6 +582,19 @@ #define CONV_UNICODE "(unicode conversion error)" +/* explicitly check for float arguments when integers are expected. For now + * signal a warning. Returns true if an exception was raised. */ +static int +float_argument_warning(PyObject *arg) +{ + if (PyFloat_Check(arg) && + PyErr_Warn(PyExc_DeprecationWarning, + "integer argument expected, got float" )) + return 1; + else + return 0; +} + /* Explicitly check for float arguments when integers are expected. Return 1 for error, 0 if ok. */ static int @@ -777,7 +790,10 @@ #ifdef HAVE_LONG_LONG case 'L': {/* PY_LONG_LONG */ PY_LONG_LONG *p = va_arg( *p_va, PY_LONG_LONG * ); - PY_LONG_LONG ival = PyLong_AsLongLong( arg ); + PY_LONG_LONG ival; + if (float_argument_warning(arg)) + return converterr("long", arg, msgbuf, bufsize); + ival = PyLong_AsLongLong(arg); if (ival == (PY_LONG_LONG)-1 && PyErr_Occurred() ) { return converterr("long", arg, msgbuf, bufsize); } else { From python-checkins at python.org Fri Jan 1 20:28:08 2010 From: python-checkins at python.org (mark.dickinson) Date: Fri, 01 Jan 2010 19:28:08 -0000 Subject: [Python-checkins] r77221 - python/branches/release31-maint Message-ID: Author: mark.dickinson Date: Fri Jan 1 20:28:08 2010 New Revision: 77221 Log: Blocked revisions 77220 via svnmerge ................ r77220 | mark.dickinson | 2010-01-01 19:27:32 +0000 (Fri, 01 Jan 2010) | 12 lines Merged revisions 77218 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77218 | mark.dickinson | 2010-01-01 17:27:30 +0000 (Fri, 01 Jan 2010) | 5 lines Issue #5080: turn the DeprecationWarning from float arguments passed to integer PyArg_Parse* format codes into a TypeError. Add a DeprecationWarning for floats passed with the 'L' format code, which didn't previously have a warning. ........ ................ Modified: python/branches/release31-maint/ (props changed) From solipsis at pitrou.net Sat Jan 2 00:47:57 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Sat, 2 Jan 2010 00:47:57 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77220): sum=0 Message-ID: <20100101234757.B65401771F@ns6635.ovh.net> py3k results for svn r77220 (hg cset d05fb7fdf125) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflog81NKT4', '-x', 'test_httpservers'] From python-checkins at python.org Sat Jan 2 03:43:05 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 02 Jan 2010 02:43:05 -0000 Subject: [Python-checkins] r77222 - python/trunk/Lib/imaplib.py Message-ID: Author: benjamin.peterson Date: Sat Jan 2 03:43:04 2010 New Revision: 77222 Log: remove use of deprecated os.popen #7619 Modified: python/trunk/Lib/imaplib.py Modified: python/trunk/Lib/imaplib.py ============================================================================== --- python/trunk/Lib/imaplib.py (original) +++ python/trunk/Lib/imaplib.py Sat Jan 2 03:43:04 2010 @@ -22,7 +22,7 @@ __version__ = "2.58" -import binascii, os, random, re, socket, sys, time +import binascii, random, re, socket, subprocess, sys, time __all__ = ["IMAP4", "IMAP4_stream", "Internaldate2tuple", "Int2AP", "ParseFlags", "Time2Internaldate"] @@ -1212,7 +1212,7 @@ Instantiate with: IMAP4_stream(command) - where "command" is a string that can be passed to os.popen2() + where "command" is a string that can be passed to Subprocess.Popen() for more documentation see the docstring of the parent class IMAP4. """ @@ -1232,7 +1232,11 @@ self.port = None self.sock = None self.file = None - self.writefile, self.readfile = os.popen2(self.command) + self.process = subprocess.Popen(self.command, + stdin=subprocess.PIPE, stdout=subprocess.PIPE, + shell=True, close_fds=True) + self.writefile = self.process.stdin + self.readfile = self.process.stdout def read(self, size): @@ -1255,6 +1259,7 @@ """Close I/O established in "open".""" self.readfile.close() self.writefile.close() + self.process.wait() From python-checkins at python.org Sat Jan 2 03:44:28 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 02 Jan 2010 02:44:28 -0000 Subject: [Python-checkins] r77223 - in python/branches/release26-maint: Lib/imaplib.py Message-ID: Author: benjamin.peterson Date: Sat Jan 2 03:44:28 2010 New Revision: 77223 Log: Merged revisions 77222 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77222 | benjamin.peterson | 2010-01-01 20:43:04 -0600 (Fri, 01 Jan 2010) | 1 line remove use of deprecated os.popen #7619 ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/imaplib.py Modified: python/branches/release26-maint/Lib/imaplib.py ============================================================================== --- python/branches/release26-maint/Lib/imaplib.py (original) +++ python/branches/release26-maint/Lib/imaplib.py Sat Jan 2 03:44:28 2010 @@ -22,7 +22,7 @@ __version__ = "2.58" -import binascii, os, random, re, socket, sys, time +import binascii, random, re, socket, subprocess, sys, time __all__ = ["IMAP4", "IMAP4_stream", "Internaldate2tuple", "Int2AP", "ParseFlags", "Time2Internaldate"] @@ -1212,7 +1212,7 @@ Instantiate with: IMAP4_stream(command) - where "command" is a string that can be passed to os.popen2() + where "command" is a string that can be passed to Subprocess.Popen() for more documentation see the docstring of the parent class IMAP4. """ @@ -1232,7 +1232,11 @@ self.port = None self.sock = None self.file = None - self.writefile, self.readfile = os.popen2(self.command) + self.process = subprocess.Popen(self.command, + stdin=subprocess.PIPE, stdout=subprocess.PIPE, + shell=True, close_fds=True) + self.writefile = self.process.stdin + self.readfile = self.process.stdout def read(self, size): @@ -1255,6 +1259,7 @@ """Close I/O established in "open".""" self.readfile.close() self.writefile.close() + self.process.wait() From python-checkins at python.org Sat Jan 2 03:45:52 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 02 Jan 2010 02:45:52 -0000 Subject: [Python-checkins] r77224 - python/branches/py3k Message-ID: Author: benjamin.peterson Date: Sat Jan 2 03:45:52 2010 New Revision: 77224 Log: Blocked revisions 77222 via svnmerge ........ r77222 | benjamin.peterson | 2010-01-01 20:43:04 -0600 (Fri, 01 Jan 2010) | 1 line remove use of deprecated os.popen #7619 ........ Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Sat Jan 2 10:25:22 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 02 Jan 2010 09:25:22 -0000 Subject: [Python-checkins] r77226 - in python/trunk: Misc/NEWS PCbuild/pyproject.vsprops PCbuild/readme.txt PCbuild/vs9to8.py Tools/buildbot/external-common.bat Message-ID: Author: martin.v.loewis Date: Sat Jan 2 10:25:21 2010 New Revision: 77226 Log: Update Windows build to sqlite 3.6.21. Modified: python/trunk/Misc/NEWS python/trunk/PCbuild/pyproject.vsprops python/trunk/PCbuild/readme.txt python/trunk/PCbuild/vs9to8.py python/trunk/Tools/buildbot/external-common.bat Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Jan 2 10:25:21 2010 @@ -121,7 +121,7 @@ - Issue #7589: Only build the nis module when the correct header files are found. -- Switch to OpenSSL 0.9.8l on Windows. +- Switch to OpenSSL 0.9.8l and sqlite 3.6.21 on Windows. - Issue #7541: when using ``python-config`` with a framework install the compiler might use the wrong library. Modified: python/trunk/PCbuild/pyproject.vsprops ============================================================================== --- python/trunk/PCbuild/pyproject.vsprops (original) +++ python/trunk/PCbuild/pyproject.vsprops Sat Jan 2 10:25:21 2010 @@ -74,7 +74,7 @@ /> Author: martin.v.loewis Date: Sat Jan 2 10:53:18 2010 New Revision: 77227 Log: Make script work with 2.5. Modified: python/trunk/PCbuild/build_ssl.py Modified: python/trunk/PCbuild/build_ssl.py ============================================================================== --- python/trunk/PCbuild/build_ssl.py (original) +++ python/trunk/PCbuild/build_ssl.py Sat Jan 2 10:53:18 2010 @@ -1,3 +1,4 @@ +from __future__ import with_statement # Script for building the _ssl and _hashlib modules for Windows. # Uses Perl to setup the OpenSSL environment correctly # and build OpenSSL, then invokes a simple nmake session From python-checkins at python.org Sat Jan 2 11:06:19 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 02 Jan 2010 10:06:19 -0000 Subject: [Python-checkins] r77228 - in python/branches/py3k: Misc/NEWS PCbuild/pyproject.vsprops PCbuild/readme.txt PCbuild/vs9to8.py Tools/buildbot/external-common.bat Message-ID: Author: martin.v.loewis Date: Sat Jan 2 11:06:19 2010 New Revision: 77228 Log: Merged revisions 77226 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77226 | martin.v.loewis | 2010-01-02 10:25:21 +0100 (Sa, 02 Jan 2010) | 2 lines Update Windows build to sqlite 3.6.21. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Misc/NEWS python/branches/py3k/PCbuild/pyproject.vsprops python/branches/py3k/PCbuild/readme.txt python/branches/py3k/PCbuild/vs9to8.py python/branches/py3k/Tools/buildbot/external-common.bat Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Sat Jan 2 11:06:19 2010 @@ -536,7 +536,7 @@ - Issue #7589: Only build the nis module when the correct header files are found. -- Switch to OpenSSL 0.9.8l on Windows. +- Switch to OpenSSL 0.9.8l and sqlite 3.6.21 on Windows. - Issue #5792: Extend the short float repr support to x86 systems using icc or suncc. Modified: python/branches/py3k/PCbuild/pyproject.vsprops ============================================================================== --- python/branches/py3k/PCbuild/pyproject.vsprops (original) +++ python/branches/py3k/PCbuild/pyproject.vsprops Sat Jan 2 11:06:19 2010 @@ -50,7 +50,7 @@ /> Author: georg.brandl Date: Sat Jan 2 13:35:01 2010 New Revision: 77229 Log: Fix casing. Modified: python/trunk/Lib/imaplib.py Modified: python/trunk/Lib/imaplib.py ============================================================================== --- python/trunk/Lib/imaplib.py (original) +++ python/trunk/Lib/imaplib.py Sat Jan 2 13:35:01 2010 @@ -1212,7 +1212,7 @@ Instantiate with: IMAP4_stream(command) - where "command" is a string that can be passed to Subprocess.Popen() + where "command" is a string that can be passed to subprocess.Popen() for more documentation see the docstring of the parent class IMAP4. """ From python-checkins at python.org Sat Jan 2 15:29:52 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 02 Jan 2010 14:29:52 -0000 Subject: [Python-checkins] r77230 - python/trunk/Doc/library/cmath.rst Message-ID: Author: mark.dickinson Date: Sat Jan 2 15:29:52 2010 New Revision: 77230 Log: Clarify that the rect, phase and polar functions work with radians. Modified: python/trunk/Doc/library/cmath.rst Modified: python/trunk/Doc/library/cmath.rst ============================================================================== --- python/trunk/Doc/library/cmath.rst (original) +++ python/trunk/Doc/library/cmath.rst Sat Jan 2 15:29:52 2010 @@ -36,8 +36,8 @@ number. In polar coordinates, a complex number *z* is defined by the modulus *r* and the phase angle *phi*. The modulus *r* is the distance from *z* to the origin, while the phase *phi* is the counterclockwise -angle from the positive x-axis to the line segment that joins the -origin to *z*. +angle, measured in radians, from the positive x-axis to the line +segment that joins the origin to *z*. The following functions can be used to convert from the native rectangular coordinates to polar coordinates and back. From python-checkins at python.org Sat Jan 2 15:31:13 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 02 Jan 2010 14:31:13 -0000 Subject: [Python-checkins] r77231 - in python/branches/release26-maint: Doc/library/cmath.rst Message-ID: Author: mark.dickinson Date: Sat Jan 2 15:31:13 2010 New Revision: 77231 Log: Merged revisions 77230 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77230 | mark.dickinson | 2010-01-02 14:29:52 +0000 (Sat, 02 Jan 2010) | 1 line Clarify that the rect, phase and polar functions work with radians. ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Doc/library/cmath.rst Modified: python/branches/release26-maint/Doc/library/cmath.rst ============================================================================== --- python/branches/release26-maint/Doc/library/cmath.rst (original) +++ python/branches/release26-maint/Doc/library/cmath.rst Sat Jan 2 15:31:13 2010 @@ -36,8 +36,8 @@ number. In polar coordinates, a complex number *z* is defined by the modulus *r* and the phase angle *phi*. The modulus *r* is the distance from *z* to the origin, while the phase *phi* is the counterclockwise -angle from the positive x-axis to the line segment that joins the -origin to *z*. +angle, measured in radians, from the positive x-axis to the line +segment that joins the origin to *z*. The following functions can be used to convert from the native rectangular coordinates to polar coordinates and back. From python-checkins at python.org Sat Jan 2 15:33:11 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 02 Jan 2010 14:33:11 -0000 Subject: [Python-checkins] r77232 - in python/branches/py3k: Doc/library/cmath.rst Message-ID: Author: mark.dickinson Date: Sat Jan 2 15:33:10 2010 New Revision: 77232 Log: Merged revisions 77230 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77230 | mark.dickinson | 2010-01-02 14:29:52 +0000 (Sat, 02 Jan 2010) | 1 line Clarify that the rect, phase and polar functions work with radians. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/library/cmath.rst Modified: python/branches/py3k/Doc/library/cmath.rst ============================================================================== --- python/branches/py3k/Doc/library/cmath.rst (original) +++ python/branches/py3k/Doc/library/cmath.rst Sat Jan 2 15:33:10 2010 @@ -36,8 +36,8 @@ number. In polar coordinates, a complex number *z* is defined by the modulus *r* and the phase angle *phi*. The modulus *r* is the distance from *z* to the origin, while the phase *phi* is the counterclockwise -angle from the positive x-axis to the line segment that joins the -origin to *z*. +angle, measured in radians, from the positive x-axis to the line +segment that joins the origin to *z*. The following functions can be used to convert from the native rectangular coordinates to polar coordinates and back. From python-checkins at python.org Sat Jan 2 15:33:47 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 02 Jan 2010 14:33:47 -0000 Subject: [Python-checkins] r77233 - in python/branches/release31-maint: Doc/library/cmath.rst Message-ID: Author: mark.dickinson Date: Sat Jan 2 15:33:47 2010 New Revision: 77233 Log: Merged revisions 77232 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77232 | mark.dickinson | 2010-01-02 14:33:10 +0000 (Sat, 02 Jan 2010) | 9 lines Merged revisions 77230 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77230 | mark.dickinson | 2010-01-02 14:29:52 +0000 (Sat, 02 Jan 2010) | 1 line Clarify that the rect, phase and polar functions work with radians. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Doc/library/cmath.rst Modified: python/branches/release31-maint/Doc/library/cmath.rst ============================================================================== --- python/branches/release31-maint/Doc/library/cmath.rst (original) +++ python/branches/release31-maint/Doc/library/cmath.rst Sat Jan 2 15:33:47 2010 @@ -36,8 +36,8 @@ number. In polar coordinates, a complex number *z* is defined by the modulus *r* and the phase angle *phi*. The modulus *r* is the distance from *z* to the origin, while the phase *phi* is the counterclockwise -angle from the positive x-axis to the line segment that joins the -origin to *z*. +angle, measured in radians, from the positive x-axis to the line +segment that joins the origin to *z*. The following functions can be used to convert from the native rectangular coordinates to polar coordinates and back. From python-checkins at python.org Sat Jan 2 15:45:41 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 02 Jan 2010 14:45:41 -0000 Subject: [Python-checkins] r77234 - in python/trunk: Include/longobject.h Modules/mathmodule.c Objects/longobject.c Message-ID: Author: mark.dickinson Date: Sat Jan 2 15:45:40 2010 New Revision: 77234 Log: Refactor some longobject internals: PyLong_AsDouble and _PyLong_AsScaledDouble (the latter renamed to _PyLong_Frexp) now use the same core code. The exponent produced by _PyLong_Frexp now has type Py_ssize_t instead of the previously used int, and no longer needs scaling by PyLong_SHIFT. This frees the math module from having to know anything about the PyLong implementation. Modified: python/trunk/Include/longobject.h python/trunk/Modules/mathmodule.c python/trunk/Objects/longobject.c Modified: python/trunk/Include/longobject.h ============================================================================== --- python/trunk/Include/longobject.h (original) +++ python/trunk/Include/longobject.h Sat Jan 2 15:45:40 2010 @@ -33,13 +33,13 @@ #define _PyLong_FromSsize_t PyLong_FromSsize_t PyAPI_DATA(int) _PyLong_DigitValue[256]; -/* _PyLong_AsScaledDouble returns a double x and an exponent e such that - the true value is approximately equal to x * 2**(SHIFT*e). e is >= 0. - x is 0.0 if and only if the input is 0 (in which case, e and x are both - zeroes). Overflow is impossible. Note that the exponent returned must - be multiplied by SHIFT! There may not be enough room in an int to store - e*SHIFT directly. */ -PyAPI_FUNC(double) _PyLong_AsScaledDouble(PyObject *vv, int *e); +/* _PyLong_Frexp returns a double x and an exponent e such that the + true value is approximately equal to x * 2**e. e is >= 0. x is + 0.0 if and only if the input is 0 (in which case, e and x are both + zeroes); otherwise, 0.5 <= abs(x) < 1.0. On overflow, which is + possible if the number of bits doesn't fit into a Py_ssize_t, sets + OverflowError and returns -1.0 for x, 0 for e. */ +PyAPI_FUNC(double) _PyLong_Frexp(PyLongObject *a, Py_ssize_t *e); PyAPI_FUNC(double) PyLong_AsDouble(PyObject *); PyAPI_FUNC(PyObject *) PyLong_FromVoidPtr(void *); Modified: python/trunk/Modules/mathmodule.c ============================================================================== --- python/trunk/Modules/mathmodule.c (original) +++ python/trunk/Modules/mathmodule.c Sat Jan 2 15:45:40 2010 @@ -54,7 +54,6 @@ #include "Python.h" #include "_math.h" -#include "longintrepr.h" /* just for SHIFT */ #ifdef _OSF_SOURCE /* OSF1 5.1 doesn't make this available with XOPEN_SOURCE_EXTENDED defined */ @@ -1269,11 +1268,12 @@ /* A decent logarithm is easy to compute even for huge longs, but libm can't do that by itself -- loghelper can. func is log or log10, and name is - "log" or "log10". Note that overflow isn't possible: a long can contain - no more than INT_MAX * SHIFT bits, so has value certainly less than - 2**(2**64 * 2**16) == 2**2**80, and log2 of that is 2**80, which is + "log" or "log10". Note that overflow of the result isn't possible: a long + can contain no more than INT_MAX * SHIFT bits, so has value certainly less + than 2**(2**64 * 2**16) == 2**2**80, and log2 of that is 2**80, which is small enough to fit in an IEEE single. log and log10 are even smaller. -*/ + However, intermediate overflow is possible for a long if the number of bits + in that long is larger than PY_SSIZE_T_MAX. */ static PyObject* loghelper(PyObject* arg, double (*func)(double), char *funcname) @@ -1281,18 +1281,21 @@ /* If it is long, do it ourselves. */ if (PyLong_Check(arg)) { double x; - int e; - x = _PyLong_AsScaledDouble(arg, &e); + Py_ssize_t e; + x = _PyLong_Frexp((PyLongObject *)arg, &e); + if (x == -1.0 && PyErr_Occurred()) + return NULL; if (x <= 0.0) { PyErr_SetString(PyExc_ValueError, "math domain error"); return NULL; } - /* Value is ~= x * 2**(e*PyLong_SHIFT), so the log ~= - log(x) + log(2) * e * PyLong_SHIFT. - CAUTION: e*PyLong_SHIFT may overflow using int arithmetic, - so force use of double. */ - x = func(x) + (e * (double)PyLong_SHIFT) * func(2.0); + /* Special case for log(1), to make sure we get an + exact result there. */ + if (e == 1 && x == 0.5) + return PyFloat_FromDouble(0.0); + /* Value is ~= x * 2**e, so the log ~= log(x) + log(2) * e. */ + x = func(x) + func(2.0) * e; return PyFloat_FromDouble(x); } Modified: python/trunk/Objects/longobject.c ============================================================================== --- python/trunk/Objects/longobject.c (original) +++ python/trunk/Objects/longobject.c Sat Jan 2 15:45:40 2010 @@ -39,9 +39,6 @@ if (PyErr_CheckSignals()) PyTryBlock \ } -/* forward declaration */ -static int bits_in_digit(digit d); - /* Normalize (remove leading zeros from) a long int object. Doesn't attempt to free the storage--in most cases, due to the nature of the algorithms used, this could save at most be one word anyway. */ @@ -750,224 +747,6 @@ } -double -_PyLong_AsScaledDouble(PyObject *vv, int *exponent) -{ -/* NBITS_WANTED should be > the number of bits in a double's precision, - but small enough so that 2**NBITS_WANTED is within the normal double - range. nbitsneeded is set to 1 less than that because the most-significant - Python digit contains at least 1 significant bit, but we don't want to - bother counting them (catering to the worst case cheaply). - - 57 is one more than VAX-D double precision; I (Tim) don't know of a double - format with more precision than that; it's 1 larger so that we add in at - least one round bit to stand in for the ignored least-significant bits. -*/ -#define NBITS_WANTED 57 - PyLongObject *v; - double x; - const double multiplier = (double)(1L << PyLong_SHIFT); - Py_ssize_t i; - int sign; - int nbitsneeded; - - if (vv == NULL || !PyLong_Check(vv)) { - PyErr_BadInternalCall(); - return -1; - } - v = (PyLongObject *)vv; - i = Py_SIZE(v); - sign = 1; - if (i < 0) { - sign = -1; - i = -(i); - } - else if (i == 0) { - *exponent = 0; - return 0.0; - } - --i; - x = (double)v->ob_digit[i]; - nbitsneeded = NBITS_WANTED - 1; - /* Invariant: i Python digits remain unaccounted for. */ - while (i > 0 && nbitsneeded > 0) { - --i; - x = x * multiplier + (double)v->ob_digit[i]; - nbitsneeded -= PyLong_SHIFT; - } - /* There are i digits we didn't shift in. Pretending they're all - zeroes, the true value is x * 2**(i*PyLong_SHIFT). */ - *exponent = i; - assert(x > 0.0); - return x * sign; -#undef NBITS_WANTED -} - -/* Get a C double from a long int object. Rounds to the nearest double, - using the round-half-to-even rule in the case of a tie. */ - -double -PyLong_AsDouble(PyObject *vv) -{ - PyLongObject *v = (PyLongObject *)vv; - Py_ssize_t rnd_digit, rnd_bit, m, n; - digit lsb, *d; - int round_up = 0; - double x; - - if (vv == NULL || !PyLong_Check(vv)) { - PyErr_BadInternalCall(); - return -1.0; - } - - /* Notes on the method: for simplicity, assume v is positive and >= - 2**DBL_MANT_DIG. (For negative v we just ignore the sign until the - end; for small v no rounding is necessary.) Write n for the number - of bits in v, so that 2**(n-1) <= v < 2**n, and n > DBL_MANT_DIG. - - Some terminology: the *rounding bit* of v is the 1st bit of v that - will be rounded away (bit n - DBL_MANT_DIG - 1); the *parity bit* - is the bit immediately above. The round-half-to-even rule says - that we round up if the rounding bit is set, unless v is exactly - halfway between two floats and the parity bit is zero. - - Write d[0] ... d[m] for the digits of v, least to most significant. - Let rnd_bit be the index of the rounding bit, and rnd_digit the - index of the PyLong digit containing the rounding bit. Then the - bits of the digit d[rnd_digit] look something like: - - rounding bit - | - v - msb -> sssssrttttttttt <- lsb - ^ - | - parity bit - - where 's' represents a 'significant bit' that will be included in - the mantissa of the result, 'r' is the rounding bit, and 't' - represents a 'trailing bit' following the rounding bit. Note that - if the rounding bit is at the top of d[rnd_digit] then the parity - bit will be the lsb of d[rnd_digit+1]. If we set - - lsb = 1 << (rnd_bit % PyLong_SHIFT) - - then d[rnd_digit] & (PyLong_BASE - 2*lsb) selects just the - significant bits of d[rnd_digit], d[rnd_digit] & (lsb-1) gets the - trailing bits, and d[rnd_digit] & lsb gives the rounding bit. - - We initialize the double x to the integer given by digits - d[rnd_digit:m-1], but with the rounding bit and trailing bits of - d[rnd_digit] masked out. So the value of x comes from the top - DBL_MANT_DIG bits of v, multiplied by 2*lsb. Note that in the loop - that produces x, all floating-point operations are exact (assuming - that FLT_RADIX==2). Now if we're rounding down, the value we want - to return is simply - - x * 2**(PyLong_SHIFT * rnd_digit). - - and if we're rounding up, it's - - (x + 2*lsb) * 2**(PyLong_SHIFT * rnd_digit). - - Under the round-half-to-even rule, we round up if, and only - if, the rounding bit is set *and* at least one of the - following three conditions is satisfied: - - (1) the parity bit is set, or - (2) at least one of the trailing bits of d[rnd_digit] is set, or - (3) at least one of the digits d[i], 0 <= i < rnd_digit - is nonzero. - - Finally, we have to worry about overflow. If v >= 2**DBL_MAX_EXP, - or equivalently n > DBL_MAX_EXP, then overflow occurs. If v < - 2**DBL_MAX_EXP then we're usually safe, but there's a corner case - to consider: if v is very close to 2**DBL_MAX_EXP then it's - possible that v is rounded up to exactly 2**DBL_MAX_EXP, and then - again overflow occurs. - */ - - if (Py_SIZE(v) == 0) - return 0.0; - m = ABS(Py_SIZE(v)) - 1; - d = v->ob_digit; - assert(d[m]); /* v should be normalized */ - - /* fast path for case where 0 < abs(v) < 2**DBL_MANT_DIG */ - if (m < DBL_MANT_DIG / PyLong_SHIFT || - (m == DBL_MANT_DIG / PyLong_SHIFT && - d[m] < (digit)1 << DBL_MANT_DIG%PyLong_SHIFT)) { - x = d[m]; - while (--m >= 0) - x = x*PyLong_BASE + d[m]; - return Py_SIZE(v) < 0 ? -x : x; - } - - /* if m is huge then overflow immediately; otherwise, compute the - number of bits n in v. The condition below implies n (= #bits) >= - m * PyLong_SHIFT + 1 > DBL_MAX_EXP, hence v >= 2**DBL_MAX_EXP. */ - if (m > (DBL_MAX_EXP-1)/PyLong_SHIFT) - goto overflow; - n = m * PyLong_SHIFT + bits_in_digit(d[m]); - if (n > DBL_MAX_EXP) - goto overflow; - - /* find location of rounding bit */ - assert(n > DBL_MANT_DIG); /* dealt with |v| < 2**DBL_MANT_DIG above */ - rnd_bit = n - DBL_MANT_DIG - 1; - rnd_digit = rnd_bit/PyLong_SHIFT; - lsb = (digit)1 << (rnd_bit%PyLong_SHIFT); - - /* Get top DBL_MANT_DIG bits of v. Assumes PyLong_SHIFT < - DBL_MANT_DIG, so we'll need bits from at least 2 digits of v. */ - x = d[m]; - assert(m > rnd_digit); - while (--m > rnd_digit) - x = x*PyLong_BASE + d[m]; - x = x*PyLong_BASE + (d[m] & (PyLong_BASE-2*lsb)); - - /* decide whether to round up, using round-half-to-even */ - assert(m == rnd_digit); - if (d[m] & lsb) { /* if (rounding bit is set) */ - digit parity_bit; - if (lsb == PyLong_BASE/2) - parity_bit = d[m+1] & 1; - else - parity_bit = d[m] & 2*lsb; - if (parity_bit) - round_up = 1; - else if (d[m] & (lsb-1)) - round_up = 1; - else { - while (--m >= 0) { - if (d[m]) { - round_up = 1; - break; - } - } - } - } - - /* and round up if necessary */ - if (round_up) { - x += 2*lsb; - if (n == DBL_MAX_EXP && - x == ldexp((double)(2*lsb), DBL_MANT_DIG)) { - /* overflow corner case */ - goto overflow; - } - } - - /* shift, adjust for sign, and return */ - x = ldexp(x, rnd_digit*PyLong_SHIFT); - return Py_SIZE(v) < 0 ? -x : x; - - overflow: - PyErr_SetString(PyExc_OverflowError, - "long int too large to convert to float"); - return -1.0; -} - /* Create a new long (or int) object from a C pointer */ PyObject * @@ -2299,6 +2078,152 @@ return long_normalize(a); } +/* For a nonzero PyLong a, express a in the form x * 2**e, with 0.5 <= + abs(x) < 1.0 and e >= 0; return x and put e in *e. Here x is + rounded to DBL_MANT_DIG significant bits using round-half-to-even. + If a == 0, return 0.0 and set *e = 0. If the resulting exponent + e is larger than PY_SSIZE_T_MAX, raise OverflowError and return + -1.0. */ + +/* attempt to define 2.0**DBL_MANT_DIG as a compile-time constant */ +#if DBL_MANT_DIG == 53 +#define EXP2_DBL_MANT_DIG 9007199254740992.0 +#else +#define EXP2_DBL_MANT_DIG (ldexp(1.0, DBL_MANT_DIG)) +#endif + +double +_PyLong_Frexp(PyLongObject *a, Py_ssize_t *e) +{ + Py_ssize_t a_size, a_bits, shift_digits, shift_bits, x_size; + /* See below for why x_digits is always large enough. */ + digit rem, x_digits[2 + (DBL_MANT_DIG + 1) / PyLong_SHIFT]; + double dx; + /* Correction term for round-half-to-even rounding. For a digit x, + "x + half_even_correction[x & 7]" gives x rounded to the nearest + multiple of 4, rounding ties to a multiple of 8. */ + static const int half_even_correction[8] = {0, -1, -2, 1, 0, -1, 2, 1}; + + a_size = ABS(Py_SIZE(a)); + if (a_size == 0) { + /* Special case for 0: significand 0.0, exponent 0. */ + *e = 0; + return 0.0; + } + a_bits = bits_in_digit(a->ob_digit[a_size-1]); + /* The following is an overflow-free version of the check + "if ((a_size - 1) * PyLong_SHIFT + a_bits > PY_SSIZE_T_MAX) ..." */ + if (a_size >= (PY_SSIZE_T_MAX - 1) / PyLong_SHIFT + 1 && + (a_size > (PY_SSIZE_T_MAX - 1) / PyLong_SHIFT + 1 || + a_bits > (PY_SSIZE_T_MAX - 1) % PyLong_SHIFT + 1)) + goto overflow; + a_bits = (a_size - 1) * PyLong_SHIFT + a_bits; + + /* Shift the first DBL_MANT_DIG + 2 bits of a into x_digits[0:x_size] + (shifting left if a_bits <= DBL_MANT_DIG + 2). + + Number of digits needed for result: write // for floor division. + Then if shifting left, we end up using + + 1 + a_size + (DBL_MANT_DIG + 2 - a_bits) // PyLong_SHIFT + + digits. If shifting right, we use + + a_size - (a_bits - DBL_MANT_DIG - 2) // PyLong_SHIFT + + digits. Using a_size = 1 + (a_bits - 1) // PyLong_SHIFT along with + the inequalities + + m // PyLong_SHIFT + n // PyLong_SHIFT <= (m + n) // PyLong_SHIFT + m // PyLong_SHIFT - n // PyLong_SHIFT <= + 1 + (m - n - 1) // PyLong_SHIFT, + + valid for any integers m and n, we find that x_size satisfies + + x_size <= 2 + (DBL_MANT_DIG + 1) // PyLong_SHIFT + + in both cases. + */ + if (a_bits <= DBL_MANT_DIG + 2) { + shift_digits = (DBL_MANT_DIG + 2 - a_bits) / PyLong_SHIFT; + shift_bits = (DBL_MANT_DIG + 2 - a_bits) % PyLong_SHIFT; + x_size = 0; + while (x_size < shift_digits) + x_digits[x_size++] = 0; + rem = v_lshift(x_digits + x_size, a->ob_digit, a_size, + shift_bits); + x_size += a_size; + x_digits[x_size++] = rem; + } + else { + shift_digits = (a_bits - DBL_MANT_DIG - 2) / PyLong_SHIFT; + shift_bits = (a_bits - DBL_MANT_DIG - 2) % PyLong_SHIFT; + rem = v_rshift(x_digits, a->ob_digit + shift_digits, + a_size - shift_digits, shift_bits); + x_size = a_size - shift_digits; + /* For correct rounding below, we need the least significant + bit of x to be 'sticky' for this shift: if any of the bits + shifted out was nonzero, we set the least significant bit + of x. */ + if (rem) + x_digits[0] |= 1; + else + while (shift_digits > 0) + if (a->ob_digit[--shift_digits]) { + x_digits[0] |= 1; + break; + } + } + assert(1 <= x_size && x_size <= sizeof(x_digits)/sizeof(digit)); + + /* Round, and convert to double. */ + x_digits[0] += half_even_correction[x_digits[0] & 7]; + dx = x_digits[--x_size]; + while (x_size > 0) + dx = dx * PyLong_BASE + x_digits[--x_size]; + + /* Rescale; make correction if result is 1.0. */ + dx /= 4.0 * EXP2_DBL_MANT_DIG; + if (dx == 1.0) { + if (a_bits == PY_SSIZE_T_MAX) + goto overflow; + dx = 0.5; + a_bits += 1; + } + + *e = a_bits; + return Py_SIZE(a) < 0 ? -dx : dx; + + overflow: + /* exponent > PY_SSIZE_T_MAX */ + PyErr_SetString(PyExc_OverflowError, + "huge integer: number of bits overflows a Py_ssize_t"); + *e = 0; + return -1.0; +} + +/* Get a C double from a long int object. Rounds to the nearest double, + using the round-half-to-even rule in the case of a tie. */ + +double +PyLong_AsDouble(PyObject *v) +{ + Py_ssize_t exponent; + double x; + + if (v == NULL || !PyLong_Check(v)) { + PyErr_BadInternalCall(); + return -1.0; + } + x = _PyLong_Frexp((PyLongObject *)v, &exponent); + if ((x == -1.0 && PyErr_Occurred()) || exponent > DBL_MAX_EXP) { + PyErr_SetString(PyExc_OverflowError, + "long int too large to convert to float"); + return -1.0; + } + return ldexp(x, exponent); +} + /* Methods */ static void From python-checkins at python.org Sat Jan 2 15:46:08 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 02 Jan 2010 14:46:08 -0000 Subject: [Python-checkins] r77235 - python/branches/release26-maint Message-ID: Author: mark.dickinson Date: Sat Jan 2 15:46:08 2010 New Revision: 77235 Log: Blocked revisions 77234 via svnmerge ........ r77234 | mark.dickinson | 2010-01-02 14:45:40 +0000 (Sat, 02 Jan 2010) | 7 lines Refactor some longobject internals: PyLong_AsDouble and _PyLong_AsScaledDouble (the latter renamed to _PyLong_Frexp) now use the same core code. The exponent produced by _PyLong_Frexp now has type Py_ssize_t instead of the previously used int, and no longer needs scaling by PyLong_SHIFT. This frees the math module from having to know anything about the PyLong implementation. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Sat Jan 2 15:50:11 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 02 Jan 2010 14:50:11 -0000 Subject: [Python-checkins] r77234 - svn:log Message-ID: Author: mark.dickinson Revision: 77234 Property Name: svn:log Action: modified Property diff: --- old property value +++ new property value @@ -3,4 +3,4 @@ exponent produced by _PyLong_Frexp now has type Py_ssize_t instead of the previously used int, and no longer needs scaling by PyLong_SHIFT. This frees the math module from having to know anything about the PyLong -implementation. +implementation. This closes issue #5576. From python-checkins at python.org Sat Jan 2 15:51:13 2010 From: python-checkins at python.org (georg.brandl) Date: Sat, 02 Jan 2010 14:51:13 -0000 Subject: [Python-checkins] r77236 - python/branches/py3k/Doc/library/ssl.rst Message-ID: Author: georg.brandl Date: Sat Jan 2 15:51:12 2010 New Revision: 77236 Log: #7592: remove duplicate description. Modified: python/branches/py3k/Doc/library/ssl.rst Modified: python/branches/py3k/Doc/library/ssl.rst ============================================================================== --- python/branches/py3k/Doc/library/ssl.rst (original) +++ python/branches/py3k/Doc/library/ssl.rst Sat Jan 2 15:51:12 2010 @@ -274,14 +274,6 @@ else: raise -.. method:: SSLSocket.unwrap() - - Performs the SSL shutdown handshake, which removes the TLS layer from the - underlying socket, and returns the underlying socket object. This can be - used to go from encrypted operation over a connection to unencrypted. The - returned socket should always be used for further communication with the - other side of the connection, rather than the original socket - .. method:: SSLSocket.getpeercert(binary_form=False) If there is no certificate for the peer on the other end of the connection, From python-checkins at python.org Sat Jan 2 16:33:56 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 02 Jan 2010 15:33:56 -0000 Subject: [Python-checkins] r77237 - in python/branches/py3k: Include/longobject.h Modules/mathmodule.c Objects/longobject.c Message-ID: Author: mark.dickinson Date: Sat Jan 2 16:33:56 2010 New Revision: 77237 Log: Merged revisions 77234 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77234 | mark.dickinson | 2010-01-02 14:45:40 +0000 (Sat, 02 Jan 2010) | 7 lines Refactor some longobject internals: PyLong_AsDouble and _PyLong_AsScaledDouble (the latter renamed to _PyLong_Frexp) now use the same core code. The exponent produced by _PyLong_Frexp now has type Py_ssize_t instead of the previously used int, and no longer needs scaling by PyLong_SHIFT. This frees the math module from having to know anything about the PyLong implementation. This closes issue #5576. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Include/longobject.h python/branches/py3k/Modules/mathmodule.c python/branches/py3k/Objects/longobject.c Modified: python/branches/py3k/Include/longobject.h ============================================================================== --- python/branches/py3k/Include/longobject.h (original) +++ python/branches/py3k/Include/longobject.h Sat Jan 2 16:33:56 2010 @@ -44,13 +44,13 @@ /* For use by intobject.c only */ PyAPI_DATA(unsigned char) _PyLong_DigitValue[256]; -/* _PyLong_AsScaledDouble returns a double x and an exponent e such that - the true value is approximately equal to x * 2**(SHIFT*e). e is >= 0. - x is 0.0 if and only if the input is 0 (in which case, e and x are both - zeroes). Overflow is impossible. Note that the exponent returned must - be multiplied by SHIFT! There may not be enough room in an int to store - e*SHIFT directly. */ -PyAPI_FUNC(double) _PyLong_AsScaledDouble(PyObject *vv, int *e); +/* _PyLong_Frexp returns a double x and an exponent e such that the + true value is approximately equal to x * 2**e. e is >= 0. x is + 0.0 if and only if the input is 0 (in which case, e and x are both + zeroes); otherwise, 0.5 <= abs(x) < 1.0. On overflow, which is + possible if the number of bits doesn't fit into a Py_ssize_t, sets + OverflowError and returns -1.0 for x, 0 for e. */ +PyAPI_FUNC(double) _PyLong_Frexp(PyLongObject *a, Py_ssize_t *e); PyAPI_FUNC(double) PyLong_AsDouble(PyObject *); PyAPI_FUNC(PyObject *) PyLong_FromVoidPtr(void *); Modified: python/branches/py3k/Modules/mathmodule.c ============================================================================== --- python/branches/py3k/Modules/mathmodule.c (original) +++ python/branches/py3k/Modules/mathmodule.c Sat Jan 2 16:33:56 2010 @@ -54,7 +54,6 @@ #include "Python.h" #include "_math.h" -#include "longintrepr.h" /* just for SHIFT */ #ifdef _OSF_SOURCE /* OSF1 5.1 doesn't make this available with XOPEN_SOURCE_EXTENDED defined */ @@ -1342,11 +1341,12 @@ /* A decent logarithm is easy to compute even for huge longs, but libm can't do that by itself -- loghelper can. func is log or log10, and name is - "log" or "log10". Note that overflow isn't possible: a long can contain - no more than INT_MAX * SHIFT bits, so has value certainly less than - 2**(2**64 * 2**16) == 2**2**80, and log2 of that is 2**80, which is + "log" or "log10". Note that overflow of the result isn't possible: a long + can contain no more than INT_MAX * SHIFT bits, so has value certainly less + than 2**(2**64 * 2**16) == 2**2**80, and log2 of that is 2**80, which is small enough to fit in an IEEE single. log and log10 are even smaller. -*/ + However, intermediate overflow is possible for a long if the number of bits + in that long is larger than PY_SSIZE_T_MAX. */ static PyObject* loghelper(PyObject* arg, double (*func)(double), char *funcname) @@ -1354,18 +1354,21 @@ /* If it is long, do it ourselves. */ if (PyLong_Check(arg)) { double x; - int e; - x = _PyLong_AsScaledDouble(arg, &e); + Py_ssize_t e; + x = _PyLong_Frexp((PyLongObject *)arg, &e); + if (x == -1.0 && PyErr_Occurred()) + return NULL; if (x <= 0.0) { PyErr_SetString(PyExc_ValueError, "math domain error"); return NULL; } - /* Value is ~= x * 2**(e*PyLong_SHIFT), so the log ~= - log(x) + log(2) * e * PyLong_SHIFT. - CAUTION: e*PyLong_SHIFT may overflow using int arithmetic, - so force use of double. */ - x = func(x) + (e * (double)PyLong_SHIFT) * func(2.0); + /* Special case for log(1), to make sure we get an + exact result there. */ + if (e == 1 && x == 0.5) + return PyFloat_FromDouble(0.0); + /* Value is ~= x * 2**e, so the log ~= log(x) + log(2) * e. */ + x = func(x) + func(2.0) * e; return PyFloat_FromDouble(x); } Modified: python/branches/py3k/Objects/longobject.c ============================================================================== --- python/branches/py3k/Objects/longobject.c (original) +++ python/branches/py3k/Objects/longobject.c Sat Jan 2 16:33:56 2010 @@ -98,9 +98,6 @@ #define SIGCHECK(PyTryBlock) \ if (PyErr_CheckSignals()) PyTryBlock \ -/* forward declaration */ -static int bits_in_digit(digit d); - /* Normalize (remove leading zeros from) a long int object. Doesn't attempt to free the storage--in most cases, due to the nature of the algorithms used, this could save at most be one word anyway. */ @@ -911,224 +908,6 @@ } -double -_PyLong_AsScaledDouble(PyObject *vv, int *exponent) -{ -/* NBITS_WANTED should be > the number of bits in a double's precision, - but small enough so that 2**NBITS_WANTED is within the normal double - range. nbitsneeded is set to 1 less than that because the most-significant - Python digit contains at least 1 significant bit, but we don't want to - bother counting them (catering to the worst case cheaply). - - 57 is one more than VAX-D double precision; I (Tim) don't know of a double - format with more precision than that; it's 1 larger so that we add in at - least one round bit to stand in for the ignored least-significant bits. -*/ -#define NBITS_WANTED 57 - PyLongObject *v; - double x; - const double multiplier = (double)(1L << PyLong_SHIFT); - Py_ssize_t i; - int sign; - int nbitsneeded; - - if (vv == NULL || !PyLong_Check(vv)) { - PyErr_BadInternalCall(); - return -1; - } - v = (PyLongObject *)vv; - i = Py_SIZE(v); - sign = 1; - if (i < 0) { - sign = -1; - i = -(i); - } - else if (i == 0) { - *exponent = 0; - return 0.0; - } - --i; - x = (double)v->ob_digit[i]; - nbitsneeded = NBITS_WANTED - 1; - /* Invariant: i Python digits remain unaccounted for. */ - while (i > 0 && nbitsneeded > 0) { - --i; - x = x * multiplier + (double)v->ob_digit[i]; - nbitsneeded -= PyLong_SHIFT; - } - /* There are i digits we didn't shift in. Pretending they're all - zeroes, the true value is x * 2**(i*PyLong_SHIFT). */ - *exponent = i; - assert(x > 0.0); - return x * sign; -#undef NBITS_WANTED -} - -/* Get a C double from a long int object. Rounds to the nearest double, - using the round-half-to-even rule in the case of a tie. */ - -double -PyLong_AsDouble(PyObject *vv) -{ - PyLongObject *v = (PyLongObject *)vv; - Py_ssize_t rnd_digit, rnd_bit, m, n; - digit lsb, *d; - int round_up = 0; - double x; - - if (vv == NULL || !PyLong_Check(vv)) { - PyErr_BadInternalCall(); - return -1.0; - } - - /* Notes on the method: for simplicity, assume v is positive and >= - 2**DBL_MANT_DIG. (For negative v we just ignore the sign until the - end; for small v no rounding is necessary.) Write n for the number - of bits in v, so that 2**(n-1) <= v < 2**n, and n > DBL_MANT_DIG. - - Some terminology: the *rounding bit* of v is the 1st bit of v that - will be rounded away (bit n - DBL_MANT_DIG - 1); the *parity bit* - is the bit immediately above. The round-half-to-even rule says - that we round up if the rounding bit is set, unless v is exactly - halfway between two floats and the parity bit is zero. - - Write d[0] ... d[m] for the digits of v, least to most significant. - Let rnd_bit be the index of the rounding bit, and rnd_digit the - index of the PyLong digit containing the rounding bit. Then the - bits of the digit d[rnd_digit] look something like: - - rounding bit - | - v - msb -> sssssrttttttttt <- lsb - ^ - | - parity bit - - where 's' represents a 'significant bit' that will be included in - the mantissa of the result, 'r' is the rounding bit, and 't' - represents a 'trailing bit' following the rounding bit. Note that - if the rounding bit is at the top of d[rnd_digit] then the parity - bit will be the lsb of d[rnd_digit+1]. If we set - - lsb = 1 << (rnd_bit % PyLong_SHIFT) - - then d[rnd_digit] & (PyLong_BASE - 2*lsb) selects just the - significant bits of d[rnd_digit], d[rnd_digit] & (lsb-1) gets the - trailing bits, and d[rnd_digit] & lsb gives the rounding bit. - - We initialize the double x to the integer given by digits - d[rnd_digit:m-1], but with the rounding bit and trailing bits of - d[rnd_digit] masked out. So the value of x comes from the top - DBL_MANT_DIG bits of v, multiplied by 2*lsb. Note that in the loop - that produces x, all floating-point operations are exact (assuming - that FLT_RADIX==2). Now if we're rounding down, the value we want - to return is simply - - x * 2**(PyLong_SHIFT * rnd_digit). - - and if we're rounding up, it's - - (x + 2*lsb) * 2**(PyLong_SHIFT * rnd_digit). - - Under the round-half-to-even rule, we round up if, and only - if, the rounding bit is set *and* at least one of the - following three conditions is satisfied: - - (1) the parity bit is set, or - (2) at least one of the trailing bits of d[rnd_digit] is set, or - (3) at least one of the digits d[i], 0 <= i < rnd_digit - is nonzero. - - Finally, we have to worry about overflow. If v >= 2**DBL_MAX_EXP, - or equivalently n > DBL_MAX_EXP, then overflow occurs. If v < - 2**DBL_MAX_EXP then we're usually safe, but there's a corner case - to consider: if v is very close to 2**DBL_MAX_EXP then it's - possible that v is rounded up to exactly 2**DBL_MAX_EXP, and then - again overflow occurs. - */ - - if (Py_SIZE(v) == 0) - return 0.0; - m = ABS(Py_SIZE(v)) - 1; - d = v->ob_digit; - assert(d[m]); /* v should be normalized */ - - /* fast path for case where 0 < abs(v) < 2**DBL_MANT_DIG */ - if (m < DBL_MANT_DIG / PyLong_SHIFT || - (m == DBL_MANT_DIG / PyLong_SHIFT && - d[m] < (digit)1 << DBL_MANT_DIG%PyLong_SHIFT)) { - x = d[m]; - while (--m >= 0) - x = x*PyLong_BASE + d[m]; - return Py_SIZE(v) < 0 ? -x : x; - } - - /* if m is huge then overflow immediately; otherwise, compute the - number of bits n in v. The condition below implies n (= #bits) >= - m * PyLong_SHIFT + 1 > DBL_MAX_EXP, hence v >= 2**DBL_MAX_EXP. */ - if (m > (DBL_MAX_EXP-1)/PyLong_SHIFT) - goto overflow; - n = m * PyLong_SHIFT + bits_in_digit(d[m]); - if (n > DBL_MAX_EXP) - goto overflow; - - /* find location of rounding bit */ - assert(n > DBL_MANT_DIG); /* dealt with |v| < 2**DBL_MANT_DIG above */ - rnd_bit = n - DBL_MANT_DIG - 1; - rnd_digit = rnd_bit/PyLong_SHIFT; - lsb = (digit)1 << (rnd_bit%PyLong_SHIFT); - - /* Get top DBL_MANT_DIG bits of v. Assumes PyLong_SHIFT < - DBL_MANT_DIG, so we'll need bits from at least 2 digits of v. */ - x = d[m]; - assert(m > rnd_digit); - while (--m > rnd_digit) - x = x*PyLong_BASE + d[m]; - x = x*PyLong_BASE + (d[m] & (PyLong_BASE-2*lsb)); - - /* decide whether to round up, using round-half-to-even */ - assert(m == rnd_digit); - if (d[m] & lsb) { /* if (rounding bit is set) */ - digit parity_bit; - if (lsb == PyLong_BASE/2) - parity_bit = d[m+1] & 1; - else - parity_bit = d[m] & 2*lsb; - if (parity_bit) - round_up = 1; - else if (d[m] & (lsb-1)) - round_up = 1; - else { - while (--m >= 0) { - if (d[m]) { - round_up = 1; - break; - } - } - } - } - - /* and round up if necessary */ - if (round_up) { - x += 2*lsb; - if (n == DBL_MAX_EXP && - x == ldexp((double)(2*lsb), DBL_MANT_DIG)) { - /* overflow corner case */ - goto overflow; - } - } - - /* shift, adjust for sign, and return */ - x = ldexp(x, rnd_digit*PyLong_SHIFT); - return Py_SIZE(v) < 0 ? -x : x; - - overflow: - PyErr_SetString(PyExc_OverflowError, - "Python int too large to convert to C double"); - return -1.0; -} - /* Create a new long (or int) object from a C pointer */ PyObject * @@ -2442,6 +2221,152 @@ return long_normalize(a); } +/* For a nonzero PyLong a, express a in the form x * 2**e, with 0.5 <= + abs(x) < 1.0 and e >= 0; return x and put e in *e. Here x is + rounded to DBL_MANT_DIG significant bits using round-half-to-even. + If a == 0, return 0.0 and set *e = 0. If the resulting exponent + e is larger than PY_SSIZE_T_MAX, raise OverflowError and return + -1.0. */ + +/* attempt to define 2.0**DBL_MANT_DIG as a compile-time constant */ +#if DBL_MANT_DIG == 53 +#define EXP2_DBL_MANT_DIG 9007199254740992.0 +#else +#define EXP2_DBL_MANT_DIG (ldexp(1.0, DBL_MANT_DIG)) +#endif + +double +_PyLong_Frexp(PyLongObject *a, Py_ssize_t *e) +{ + Py_ssize_t a_size, a_bits, shift_digits, shift_bits, x_size; + /* See below for why x_digits is always large enough. */ + digit rem, x_digits[2 + (DBL_MANT_DIG + 1) / PyLong_SHIFT]; + double dx; + /* Correction term for round-half-to-even rounding. For a digit x, + "x + half_even_correction[x & 7]" gives x rounded to the nearest + multiple of 4, rounding ties to a multiple of 8. */ + static const int half_even_correction[8] = {0, -1, -2, 1, 0, -1, 2, 1}; + + a_size = ABS(Py_SIZE(a)); + if (a_size == 0) { + /* Special case for 0: significand 0.0, exponent 0. */ + *e = 0; + return 0.0; + } + a_bits = bits_in_digit(a->ob_digit[a_size-1]); + /* The following is an overflow-free version of the check + "if ((a_size - 1) * PyLong_SHIFT + a_bits > PY_SSIZE_T_MAX) ..." */ + if (a_size >= (PY_SSIZE_T_MAX - 1) / PyLong_SHIFT + 1 && + (a_size > (PY_SSIZE_T_MAX - 1) / PyLong_SHIFT + 1 || + a_bits > (PY_SSIZE_T_MAX - 1) % PyLong_SHIFT + 1)) + goto overflow; + a_bits = (a_size - 1) * PyLong_SHIFT + a_bits; + + /* Shift the first DBL_MANT_DIG + 2 bits of a into x_digits[0:x_size] + (shifting left if a_bits <= DBL_MANT_DIG + 2). + + Number of digits needed for result: write // for floor division. + Then if shifting left, we end up using + + 1 + a_size + (DBL_MANT_DIG + 2 - a_bits) // PyLong_SHIFT + + digits. If shifting right, we use + + a_size - (a_bits - DBL_MANT_DIG - 2) // PyLong_SHIFT + + digits. Using a_size = 1 + (a_bits - 1) // PyLong_SHIFT along with + the inequalities + + m // PyLong_SHIFT + n // PyLong_SHIFT <= (m + n) // PyLong_SHIFT + m // PyLong_SHIFT - n // PyLong_SHIFT <= + 1 + (m - n - 1) // PyLong_SHIFT, + + valid for any integers m and n, we find that x_size satisfies + + x_size <= 2 + (DBL_MANT_DIG + 1) // PyLong_SHIFT + + in both cases. + */ + if (a_bits <= DBL_MANT_DIG + 2) { + shift_digits = (DBL_MANT_DIG + 2 - a_bits) / PyLong_SHIFT; + shift_bits = (DBL_MANT_DIG + 2 - a_bits) % PyLong_SHIFT; + x_size = 0; + while (x_size < shift_digits) + x_digits[x_size++] = 0; + rem = v_lshift(x_digits + x_size, a->ob_digit, a_size, + shift_bits); + x_size += a_size; + x_digits[x_size++] = rem; + } + else { + shift_digits = (a_bits - DBL_MANT_DIG - 2) / PyLong_SHIFT; + shift_bits = (a_bits - DBL_MANT_DIG - 2) % PyLong_SHIFT; + rem = v_rshift(x_digits, a->ob_digit + shift_digits, + a_size - shift_digits, shift_bits); + x_size = a_size - shift_digits; + /* For correct rounding below, we need the least significant + bit of x to be 'sticky' for this shift: if any of the bits + shifted out was nonzero, we set the least significant bit + of x. */ + if (rem) + x_digits[0] |= 1; + else + while (shift_digits > 0) + if (a->ob_digit[--shift_digits]) { + x_digits[0] |= 1; + break; + } + } + assert(1 <= x_size && x_size <= sizeof(x_digits)/sizeof(digit)); + + /* Round, and convert to double. */ + x_digits[0] += half_even_correction[x_digits[0] & 7]; + dx = x_digits[--x_size]; + while (x_size > 0) + dx = dx * PyLong_BASE + x_digits[--x_size]; + + /* Rescale; make correction if result is 1.0. */ + dx /= 4.0 * EXP2_DBL_MANT_DIG; + if (dx == 1.0) { + if (a_bits == PY_SSIZE_T_MAX) + goto overflow; + dx = 0.5; + a_bits += 1; + } + + *e = a_bits; + return Py_SIZE(a) < 0 ? -dx : dx; + + overflow: + /* exponent > PY_SSIZE_T_MAX */ + PyErr_SetString(PyExc_OverflowError, + "huge integer: number of bits overflows a Py_ssize_t"); + *e = 0; + return -1.0; +} + +/* Get a C double from a long int object. Rounds to the nearest double, + using the round-half-to-even rule in the case of a tie. */ + +double +PyLong_AsDouble(PyObject *v) +{ + Py_ssize_t exponent; + double x; + + if (v == NULL || !PyLong_Check(v)) { + PyErr_BadInternalCall(); + return -1.0; + } + x = _PyLong_Frexp((PyLongObject *)v, &exponent); + if ((x == -1.0 && PyErr_Occurred()) || exponent > DBL_MAX_EXP) { + PyErr_SetString(PyExc_OverflowError, + "long int too large to convert to float"); + return -1.0; + } + return ldexp(x, exponent); +} + /* Methods */ static void From python-checkins at python.org Sat Jan 2 16:34:19 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 02 Jan 2010 15:34:19 -0000 Subject: [Python-checkins] r77238 - python/branches/release31-maint Message-ID: Author: mark.dickinson Date: Sat Jan 2 16:34:19 2010 New Revision: 77238 Log: Blocked revisions 77237 via svnmerge ................ r77237 | mark.dickinson | 2010-01-02 15:33:56 +0000 (Sat, 02 Jan 2010) | 14 lines Merged revisions 77234 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77234 | mark.dickinson | 2010-01-02 14:45:40 +0000 (Sat, 02 Jan 2010) | 7 lines Refactor some longobject internals: PyLong_AsDouble and _PyLong_AsScaledDouble (the latter renamed to _PyLong_Frexp) now use the same core code. The exponent produced by _PyLong_Frexp now has type Py_ssize_t instead of the previously used int, and no longer needs scaling by PyLong_SHIFT. This frees the math module from having to know anything about the PyLong implementation. This closes issue #5576. ........ ................ Modified: python/branches/release31-maint/ (props changed) From python-checkins at python.org Sat Jan 2 20:48:10 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 02 Jan 2010 19:48:10 -0000 Subject: [Python-checkins] r77239 - in tracker/instances: board/html/issue.item.html jobs/html/offer.item.html jython/html/issue.item.html meta/html/issue.item.html python-dev-spambayes-integration/html/issue.item.html python-dev/html/issue.item.html security/html/issue.item.html setuptools/html/issue.item.html Message-ID: Author: martin.v.loewis Date: Sat Jan 2 20:48:09 2010 New Revision: 77239 Log: Issue #309: drop wrap parameter for textarea. Modified: tracker/instances/board/html/issue.item.html tracker/instances/jobs/html/offer.item.html tracker/instances/jython/html/issue.item.html tracker/instances/meta/html/issue.item.html tracker/instances/python-dev-spambayes-integration/html/issue.item.html tracker/instances/python-dev/html/issue.item.html tracker/instances/security/html/issue.item.html tracker/instances/setuptools/html/issue.item.html Modified: tracker/instances/board/html/issue.item.html ============================================================================== --- tracker/instances/board/html/issue.item.html (original) +++ tracker/instances/board/html/issue.item.html Sat Jan 2 20:48:09 2010 @@ -153,7 +153,7 @@ Comment: + name="@note" rows="10" cols="72"> Modified: tracker/instances/jobs/html/offer.item.html ============================================================================== --- tracker/instances/jobs/html/offer.item.html (original) +++ tracker/instances/jobs/html/offer.item.html Sat Jan 2 20:48:09 2010 @@ -144,7 +144,7 @@ + name="msg-3 at content" rows="5" cols="72"> Modified: tracker/instances/jython/html/issue.item.html ============================================================================== --- tracker/instances/jython/html/issue.item.html (original) +++ tracker/instances/jython/html/issue.item.html Sat Jan 2 20:48:09 2010 @@ -159,7 +159,7 @@ Change Note: + name="@note" rows="5" cols="72"> Modified: tracker/instances/meta/html/issue.item.html ============================================================================== --- tracker/instances/meta/html/issue.item.html (original) +++ tracker/instances/meta/html/issue.item.html Sat Jan 2 20:48:09 2010 @@ -86,7 +86,7 @@ Change Note + name="@note" rows="5" cols="80"> Modified: tracker/instances/python-dev-spambayes-integration/html/issue.item.html ============================================================================== --- tracker/instances/python-dev-spambayes-integration/html/issue.item.html (original) +++ tracker/instances/python-dev-spambayes-integration/html/issue.item.html Sat Jan 2 20:48:09 2010 @@ -156,7 +156,7 @@ Change Note: + name="@note" rows="5" cols="72"> Modified: tracker/instances/python-dev/html/issue.item.html ============================================================================== --- tracker/instances/python-dev/html/issue.item.html (original) +++ tracker/instances/python-dev/html/issue.item.html Sat Jan 2 20:48:09 2010 @@ -153,7 +153,7 @@ Comment: + name="@note" rows="10" cols="72"> Modified: tracker/instances/security/html/issue.item.html ============================================================================== --- tracker/instances/security/html/issue.item.html (original) +++ tracker/instances/security/html/issue.item.html Sat Jan 2 20:48:09 2010 @@ -159,7 +159,7 @@ Comment: + name="@note" rows="10" cols="72"> Modified: tracker/instances/setuptools/html/issue.item.html ============================================================================== --- tracker/instances/setuptools/html/issue.item.html (original) +++ tracker/instances/setuptools/html/issue.item.html Sat Jan 2 20:48:09 2010 @@ -86,7 +86,7 @@ Change Note + name="@note" rows="5" cols="80"> From python-checkins at python.org Sat Jan 2 21:41:22 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sat, 02 Jan 2010 20:41:22 -0000 Subject: [Python-checkins] r77240 - sandbox/trunk/stringbench/stringbench.py Message-ID: Author: antoine.pitrou Date: Sat Jan 2 21:41:22 2010 New Revision: 77240 Log: stringbench additions and fixes by Florent Xicluna (#7462) Modified: sandbox/trunk/stringbench/stringbench.py Modified: sandbox/trunk/stringbench/stringbench.py ============================================================================== --- sandbox/trunk/stringbench/stringbench.py (original) +++ sandbox/trunk/stringbench/stringbench.py Sat Jan 2 21:41:22 2010 @@ -9,6 +9,9 @@ import datetime import optparse +VERSION = '2.0' + +print 'stringbench v%s' % VERSION print sys.version print datetime.datetime.now() @@ -32,7 +35,6 @@ _RANGE_1000 = range(1000) -_RANGE_1000 = range(1000) _RANGE_100 = range(100) _RANGE_10 = range(10) @@ -116,12 +118,8 @@ #### same tests as 'in' but use 'find' -# XXX: TODO: Add rfind - - - @bench('("A"*1000).find("A")', "early match, single character", 1000) -def find_quick_match_single_character(STR): +def find_test_quick_match_single_character(STR): s1 = STR("A" * 1000) s2 = STR("A") s1_find = s1.find @@ -153,6 +151,14 @@ for x in _RANGE_1000: s1_find(s2) + at bench('("AB"*1000).find("CA")', "no match, two characters", 1000) +def find_test_no_match_two_character_bis(STR): + s1 = STR("AB" * 1000) + s2 = STR("CA") + s1_find = s1.find + for x in _RANGE_1000: + s1_find(s2) + @bench('("AB"*300+"C").find("BC")', "late match, two characters", 1000) def find_test_slow_match_two_characters(STR): s1 = STR("AB" * 300+"C") @@ -161,7 +167,15 @@ for x in _RANGE_1000: s1_find(s2) - at bench('s="ABC"*33; ((s+"D")*500+s+"E").find(s)', + at bench('("AB"*300+"CA").find("CA")', "late match, two characters", 1000) +def find_test_slow_match_two_characters_bis(STR): + s1 = STR("AB" * 300+"CA") + s2 = STR("CA") + s1_find = s1.find + for x in _RANGE_1000: + s1_find(s2) + + at bench('s="ABC"*33; ((s+"D")*500+s+"E").find(s+"E")', "late match, 100 characters", 100) def find_test_slow_match_100_characters(STR): m = STR("ABC"*33) @@ -171,10 +185,99 @@ for x in _RANGE_100: s1_find(s2) + at bench('s="ABC"*33; ((s+"D")*500+"E"+s).find("E"+s)', + "late match, 100 characters", 100) +def find_test_slow_match_100_characters_bis(STR): + m = STR("ABC"*33) + s1 = (m+"D")*500 + "E"+m + s2 = "E"+m + s1_find = s1.find + for x in _RANGE_100: + s1_find(s2) + + +#### Same tests for 'rfind' + + at bench('("A"*1000).rfind("A")', "early match, single character", 1000) +def rfind_test_quick_match_single_character(STR): + s1 = STR("A" * 1000) + s2 = STR("A") + s1_rfind = s1.rfind + for x in _RANGE_1000: + s1_rfind(s2) + + at bench('("A"*1000).rfind("B")', "no match, single character", 1000) +def rfind_test_no_match_single_character(STR): + s1 = STR("A" * 1000) + s2 = STR("B") + s1_rfind = s1.rfind + for x in _RANGE_1000: + s1_rfind(s2) + + + at bench('("AB"*1000).rfind("AB")', "early match, two characters", 1000) +def rfind_test_quick_match_two_characters(STR): + s1 = STR("AB" * 1000) + s2 = STR("AB") + s1_rfind = s1.rfind + for x in _RANGE_1000: + s1_rfind(s2) + + at bench('("AB"*1000).rfind("BC")', "no match, two characters", 1000) +def rfind_test_no_match_two_character(STR): + s1 = STR("AB" * 1000) + s2 = STR("BC") + s1_rfind = s1.rfind + for x in _RANGE_1000: + s1_rfind(s2) + + at bench('("AB"*1000).rfind("CA")', "no match, two characters", 1000) +def rfind_test_no_match_two_character_bis(STR): + s1 = STR("AB" * 1000) + s2 = STR("CA") + s1_rfind = s1.rfind + for x in _RANGE_1000: + s1_rfind(s2) + + at bench('("C"+"AB"*300).rfind("CA")', "late match, two characters", 1000) +def rfind_test_slow_match_two_characters(STR): + s1 = STR("C" + "AB" * 300) + s2 = STR("CA") + s1_rfind = s1.rfind + for x in _RANGE_1000: + s1_rfind(s2) + + at bench('("BC"+"AB"*300).rfind("BC")', "late match, two characters", 1000) +def rfind_test_slow_match_two_characters_bis(STR): + s1 = STR("BC" + "AB" * 300) + s2 = STR("BC") + s1_rfind = s1.rfind + for x in _RANGE_1000: + s1_rfind(s2) + + at bench('s="ABC"*33; ("E"+s+("D"+s)*500).rfind("E"+s)', + "late match, 100 characters", 100) +def rfind_test_slow_match_100_characters(STR): + m = STR("ABC"*33) + s1 = "E"+m + ("D"+m)*500 + s2 = "E"+m + s1_rfind = s1.rfind + for x in _RANGE_100: + s1_rfind(s2) + + at bench('s="ABC"*33; (s+"E"+("D"+s)*500).rfind(s+"E")', + "late match, 100 characters", 100) +def rfind_test_slow_match_100_characters_bis(STR): + m = STR("ABC"*33) + s1 = m+"E" + ("D"+m)*500 + s2 = m+"E" + s1_rfind = s1.rfind + for x in _RANGE_100: + s1_rfind(s2) + + #### Now with index. # Skip the ones which fail because that would include exception overhead. -# Add rindex tests. - @bench('("A"*1000).index("A")', "early match, single character", 1000) def index_test_quick_match_single_character(STR): @@ -184,7 +287,6 @@ for x in _RANGE_1000: s1_index(s2) - @bench('("AB"*1000).index("AB")', "early match, two characters", 1000) def index_test_quick_match_two_characters(STR): s1 = STR("AB" * 1000) @@ -201,7 +303,7 @@ for x in _RANGE_1000: s1_index(s2) - at bench('s="ABC"*33; ((s+"D")*500+s+"E").index(s)', + at bench('s="ABC"*33; ((s+"D")*500+s+"E").index(s+"E")', "late match, 100 characters", 100) def index_test_slow_match_100_characters(STR): m = STR("ABC"*33) @@ -211,6 +313,260 @@ for x in _RANGE_100: s1_index(s2) + +#### Same for rindex + + at bench('("A"*1000).rindex("A")', "early match, single character", 1000) +def rindex_test_quick_match_single_character(STR): + s1 = STR("A" * 1000) + s2 = STR("A") + s1_rindex = s1.rindex + for x in _RANGE_1000: + s1_rindex(s2) + + at bench('("AB"*1000).rindex("AB")', "early match, two characters", 1000) +def rindex_test_quick_match_two_characters(STR): + s1 = STR("AB" * 1000) + s2 = STR("AB") + s1_rindex = s1.rindex + for x in _RANGE_1000: + s1_rindex(s2) + + at bench('("C"+"AB"*300).rindex("CA")', "late match, two characters", 1000) +def rindex_test_slow_match_two_characters(STR): + s1 = STR("C" + "AB" * 300) + s2 = STR("CA") + s1_rindex = s1.rindex + for x in _RANGE_1000: + s1_rindex(s2) + + at bench('s="ABC"*33; ("E"+s+("D"+s)*500).rindex("E"+s)', + "late match, 100 characters", 100) +def rindex_test_slow_match_100_characters(STR): + m = STR("ABC"*33) + s1 = "E" + m + ("D"+m)*500 + s2 = "E" + m + s1_rindex = s1.rindex + for x in _RANGE_100: + s1_rindex(s2) + + +#### Same for partition + + at bench('("A"*1000).partition("A")', "early match, single character", 1000) +def partition_test_quick_match_single_character(STR): + s1 = STR("A" * 1000) + s2 = STR("A") + s1_partition = s1.partition + for x in _RANGE_1000: + s1_partition(s2) + + at bench('("A"*1000).partition("B")', "no match, single character", 1000) +def partition_test_no_match_single_character(STR): + s1 = STR("A" * 1000) + s2 = STR("B") + s1_partition = s1.partition + for x in _RANGE_1000: + s1_partition(s2) + + + at bench('("AB"*1000).partition("AB")', "early match, two characters", 1000) +def partition_test_quick_match_two_characters(STR): + s1 = STR("AB" * 1000) + s2 = STR("AB") + s1_partition = s1.partition + for x in _RANGE_1000: + s1_partition(s2) + + at bench('("AB"*1000).partition("BC")', "no match, two characters", 1000) +def partition_test_no_match_two_character(STR): + s1 = STR("AB" * 1000) + s2 = STR("BC") + s1_partition = s1.partition + for x in _RANGE_1000: + s1_partition(s2) + + at bench('("AB"*300+"C").partition("BC")', "late match, two characters", 1000) +def partition_test_slow_match_two_characters(STR): + s1 = STR("AB" * 300+"C") + s2 = STR("BC") + s1_partition = s1.partition + for x in _RANGE_1000: + s1_partition(s2) + + at bench('s="ABC"*33; ((s+"D")*500+s+"E").partition(s+"E")', + "late match, 100 characters", 100) +def partition_test_slow_match_100_characters(STR): + m = STR("ABC"*33) + s1 = (m+"D")*500 + m+"E" + s2 = m+"E" + s1_partition = s1.partition + for x in _RANGE_100: + s1_partition(s2) + + +#### Same for rpartition + + at bench('("A"*1000).rpartition("A")', "early match, single character", 1000) +def rpartition_test_quick_match_single_character(STR): + s1 = STR("A" * 1000) + s2 = STR("A") + s1_rpartition = s1.rpartition + for x in _RANGE_1000: + s1_rpartition(s2) + + at bench('("A"*1000).rpartition("B")', "no match, single character", 1000) +def rpartition_test_no_match_single_character(STR): + s1 = STR("A" * 1000) + s2 = STR("B") + s1_rpartition = s1.rpartition + for x in _RANGE_1000: + s1_rpartition(s2) + + + at bench('("AB"*1000).rpartition("AB")', "early match, two characters", 1000) +def rpartition_test_quick_match_two_characters(STR): + s1 = STR("AB" * 1000) + s2 = STR("AB") + s1_rpartition = s1.rpartition + for x in _RANGE_1000: + s1_rpartition(s2) + + at bench('("AB"*1000).rpartition("BC")', "no match, two characters", 1000) +def rpartition_test_no_match_two_character(STR): + s1 = STR("AB" * 1000) + s2 = STR("BC") + s1_rpartition = s1.rpartition + for x in _RANGE_1000: + s1_rpartition(s2) + + at bench('("C"+"AB"*300).rpartition("CA")', "late match, two characters", 1000) +def rpartition_test_slow_match_two_characters(STR): + s1 = STR("C" + "AB" * 300) + s2 = STR("CA") + s1_rpartition = s1.rpartition + for x in _RANGE_1000: + s1_rpartition(s2) + + at bench('s="ABC"*33; ("E"+s+("D"+s)*500).rpartition("E"+s)', + "late match, 100 characters", 100) +def rpartition_test_slow_match_100_characters(STR): + m = STR("ABC"*33) + s1 = "E" + m + ("D"+m)*500 + s2 = "E" + m + s1_rpartition = s1.rpartition + for x in _RANGE_100: + s1_rpartition(s2) + + +#### Same for split(s, 1) + + at bench('("A"*1000).split("A", 1)', "early match, single character", 1000) +def split_test_quick_match_single_character(STR): + s1 = STR("A" * 1000) + s2 = STR("A") + s1_split = s1.split + for x in _RANGE_1000: + s1_split(s2, 1) + + at bench('("A"*1000).split("B", 1)', "no match, single character", 1000) +def split_test_no_match_single_character(STR): + s1 = STR("A" * 1000) + s2 = STR("B") + s1_split = s1.split + for x in _RANGE_1000: + s1_split(s2, 1) + + + at bench('("AB"*1000).split("AB", 1)', "early match, two characters", 1000) +def split_test_quick_match_two_characters(STR): + s1 = STR("AB" * 1000) + s2 = STR("AB") + s1_split = s1.split + for x in _RANGE_1000: + s1_split(s2, 1) + + at bench('("AB"*1000).split("BC", 1)', "no match, two characters", 1000) +def split_test_no_match_two_character(STR): + s1 = STR("AB" * 1000) + s2 = STR("BC") + s1_split = s1.split + for x in _RANGE_1000: + s1_split(s2, 1) + + at bench('("AB"*300+"C").split("BC", 1)', "late match, two characters", 1000) +def split_test_slow_match_two_characters(STR): + s1 = STR("AB" * 300+"C") + s2 = STR("BC") + s1_split = s1.split + for x in _RANGE_1000: + s1_split(s2, 1) + + at bench('s="ABC"*33; ((s+"D")*500+s+"E").split(s+"E", 1)', + "late match, 100 characters", 100) +def split_test_slow_match_100_characters(STR): + m = STR("ABC"*33) + s1 = (m+"D")*500 + m+"E" + s2 = m+"E" + s1_split = s1.split + for x in _RANGE_100: + s1_split(s2, 1) + + +#### Same for rsplit(s, 1) + + at bench('("A"*1000).rsplit("A", 1)', "early match, single character", 1000) +def rsplit_test_quick_match_single_character(STR): + s1 = STR("A" * 1000) + s2 = STR("A") + s1_rsplit = s1.rsplit + for x in _RANGE_1000: + s1_rsplit(s2, 1) + + at bench('("A"*1000).rsplit("B", 1)', "no match, single character", 1000) +def rsplit_test_no_match_single_character(STR): + s1 = STR("A" * 1000) + s2 = STR("B") + s1_rsplit = s1.rsplit + for x in _RANGE_1000: + s1_rsplit(s2, 1) + + + at bench('("AB"*1000).rsplit("AB", 1)', "early match, two characters", 1000) +def rsplit_test_quick_match_two_characters(STR): + s1 = STR("AB" * 1000) + s2 = STR("AB") + s1_rsplit = s1.rsplit + for x in _RANGE_1000: + s1_rsplit(s2, 1) + + at bench('("AB"*1000).rsplit("BC", 1)', "no match, two characters", 1000) +def rsplit_test_no_match_two_character(STR): + s1 = STR("AB" * 1000) + s2 = STR("BC") + s1_rsplit = s1.rsplit + for x in _RANGE_1000: + s1_rsplit(s2, 1) + + at bench('("C"+"AB"*300).rsplit("CA", 1)', "late match, two characters", 1000) +def rsplit_test_slow_match_two_characters(STR): + s1 = STR("C" + "AB" * 300) + s2 = STR("CA") + s1_rsplit = s1.rsplit + for x in _RANGE_1000: + s1_rsplit(s2, 1) + + at bench('s="ABC"*33; ("E"+s+("D"+s)*500).rsplit("E"+s, 1)', + "late match, 100 characters", 100) +def rsplit_test_slow_match_100_characters(STR): + m = STR("ABC"*33) + s1 = "E" + m + ("D"+m)*500 + s2 = "E" + m + s1_rsplit = s1.rsplit + for x in _RANGE_100: + s1_rsplit(s2, 1) + + #### Benchmark the operator-based methods @bench('"A"*10', "repeat 1 character 10 times", 1000) @@ -382,6 +738,24 @@ for x in _RANGE_1000: s_rsplit(N, 1) + at bench('("Here are some words. "*2).partition(" ")', + "split 1 whitespace", 1000) +def whitespace_partition(STR): + sep = STR(" ") + s = STR("Here are some words. "*2) + s_partition = s.partition + for x in _RANGE_1000: + s_partition(sep) + + at bench('("Here are some words. "*2).rpartition(" ")', + "split 1 whitespace", 1000) +def whitespace_rpartition(STR): + sep = STR(" ") + s = STR("Here are some words. "*2) + s_rpartition = s.rpartition + for x in _RANGE_1000: + s_rpartition(sep) + human_text = """\ Python is a dynamic object-oriented programming language that can be used for many kinds of software development. It offers strong support @@ -539,31 +913,35 @@ @bench('GFF3_example.split("\\t")', "tab split", 1000) def tab_split_no_limit(STR): + sep = STR("\t") s = STR(GFF3_example) s_split = s.split for x in _RANGE_1000: - s_split("\t") + s_split(sep) @bench('GFF3_example.split("\\t", 8)', "tab split", 1000) def tab_split_limit(STR): + sep = STR("\t") s = STR(GFF3_example) s_split = s.split for x in _RANGE_1000: - s_split("\t", 8) + s_split(sep, 8) @bench('GFF3_example.rsplit("\\t")', "tab split", 1000) def tab_rsplit_no_limit(STR): + sep = STR("\t") s = STR(GFF3_example) s_rsplit = s.rsplit for x in _RANGE_1000: - s_rsplit("\t") + s_rsplit(sep) @bench('GFF3_example.rsplit("\\t", 8)', "tab split", 1000) def tab_rsplit_limit(STR): + sep = STR("\t") s = STR(GFF3_example) s_rsplit = s.rsplit for x in _RANGE_1000: - s_rsplit("\t", 8) + s_rsplit(sep, 8) #### Count characters @@ -996,6 +1374,8 @@ for title, group in itertools.groupby(bench_functions, operator.itemgetter(0)): + # Flush buffer before each group + sys.stdout.flush() print "="*10, title for (_, k, v) in group: if hasattr(v, "is_bench"): @@ -1024,7 +1404,7 @@ print "That was zippy!" else: try: - ratio = str_time/uni_time + ratio = str_total/uni_total except ZeroDivisionError: ratio = 0.0 print "%.2f\t%.2f\t%.1f\t%s" % ( From python-checkins at python.org Sat Jan 2 22:12:58 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sat, 02 Jan 2010 21:12:58 -0000 Subject: [Python-checkins] r77241 - in python/trunk: Lib/test/string_tests.py Lib/test/test_unicode.py Misc/NEWS Objects/bytearrayobject.c Objects/stringlib/README.txt Objects/stringlib/fastsearch.h Objects/stringlib/find.h Objects/stringlib/partition.h Objects/stringlib/stringdefs.h Objects/stringlib/unicodedefs.h Objects/stringobject.c Message-ID: Author: antoine.pitrou Date: Sat Jan 2 22:12:58 2010 New Revision: 77241 Log: Issue #7462: Implement the stringlib fast search algorithm for the `rfind`, `rindex`, `rsplit` and `rpartition` methods. Patch by Florent Xicluna. Modified: python/trunk/Lib/test/string_tests.py python/trunk/Lib/test/test_unicode.py python/trunk/Misc/NEWS python/trunk/Objects/bytearrayobject.c python/trunk/Objects/stringlib/README.txt python/trunk/Objects/stringlib/fastsearch.h python/trunk/Objects/stringlib/find.h python/trunk/Objects/stringlib/partition.h python/trunk/Objects/stringlib/stringdefs.h python/trunk/Objects/stringlib/unicodedefs.h python/trunk/Objects/stringobject.c Modified: python/trunk/Lib/test/string_tests.py ============================================================================== --- python/trunk/Lib/test/string_tests.py (original) +++ python/trunk/Lib/test/string_tests.py Sat Jan 2 22:12:58 2010 @@ -230,6 +230,31 @@ self.checkraises(TypeError, 'hello', 'rfind') self.checkraises(TypeError, 'hello', 'rfind', 42) + # For a variety of combinations, + # verify that str.rfind() matches __contains__ + # and that the found substring is really at that location + charset = ['', 'a', 'b', 'c'] + digits = 5 + base = len(charset) + teststrings = set() + for i in xrange(base ** digits): + entry = [] + for j in xrange(digits): + i, m = divmod(i, base) + entry.append(charset[m]) + teststrings.add(''.join(entry)) + teststrings = list(teststrings) + for i in teststrings: + i = self.fixtype(i) + for j in teststrings: + loc = i.rfind(j) + r1 = (loc != -1) + r2 = j in i + if r1 != r2: + self.assertEqual(r1, r2) + if loc != -1: + self.assertEqual(i[loc:loc+len(j)], j) + def test_index(self): self.checkequal(0, 'abcdefghiabc', 'index', '') self.checkequal(3, 'abcdefghiabc', 'index', 'def') @@ -686,8 +711,10 @@ EQ("bobobXbobob", "bobobobXbobobob", "replace", "bobob", "bob") EQ("BOBOBOB", "BOBOBOB", "replace", "bob", "bobby") - ba = buffer('a') - bb = buffer('b') + # Silence Py3k warning + with test_support.check_warnings(): + ba = buffer('a') + bb = buffer('b') EQ("bbc", "abc", "replace", ba, bb) EQ("aac", "abc", "replace", bb, ba) Modified: python/trunk/Lib/test/test_unicode.py ============================================================================== --- python/trunk/Lib/test/test_unicode.py (original) +++ python/trunk/Lib/test/test_unicode.py Sat Jan 2 22:12:58 2010 @@ -499,9 +499,12 @@ ) if not sys.platform.startswith('java'): + # Silence Py3k warning + with test_support.check_warnings(): + buf = buffer('character buffers are decoded to unicode') self.assertEqual( unicode( - buffer('character buffers are decoded to unicode'), + buf, 'utf-8', 'strict' ), Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Jan 2 22:12:58 2010 @@ -12,6 +12,9 @@ Core and Builtins ----------------- +- Issue #7462: Implement the stringlib fast search algorithm for the `rfind`, + `rindex`, `rsplit` and `rpartition` methods. Patch by Florent Xicluna. + - Issue #5080: A number of functions and methods previously produced a DeprecationWarning when passed a float argument where an integer was expected. These functions and methods now raise TypeError instead. Modified: python/trunk/Objects/bytearrayobject.c ============================================================================== --- python/trunk/Objects/bytearrayobject.c (original) +++ python/trunk/Objects/bytearrayobject.c Sat Jan 2 22:12:58 2010 @@ -1111,7 +1111,6 @@ /* Methods */ #define STRINGLIB_CHAR char -#define STRINGLIB_CMP memcmp #define STRINGLIB_LEN PyByteArray_GET_SIZE #define STRINGLIB_STR PyByteArray_AS_STRING #define STRINGLIB_NEW PyByteArray_FromStringAndSize @@ -2282,14 +2281,11 @@ static PyObject * bytearray_split(PyByteArrayObject *self, PyObject *args) { - Py_ssize_t len = PyByteArray_GET_SIZE(self), n, i, j; + Py_ssize_t len = PyByteArray_GET_SIZE(self), n, i, j, pos; Py_ssize_t maxsplit = -1, count = 0; const char *s = PyByteArray_AS_STRING(self), *sub; PyObject *list, *str, *subobj = Py_None; Py_buffer vsub; -#ifdef USE_FAST - Py_ssize_t pos; -#endif if (!PyArg_ParseTuple(args, "|On:split", &subobj, &maxsplit)) return NULL; @@ -2321,7 +2317,6 @@ return NULL; } -#ifdef USE_FAST i = j = 0; while (maxsplit-- > 0) { pos = fastsearch(s+i, len-i, sub, n, FAST_SEARCH); @@ -2331,18 +2326,6 @@ SPLIT_ADD(s, i, j); i = j + n; } -#else - i = j = 0; - while ((j+n <= len) && (maxsplit-- > 0)) { - for (; j+n <= len; j++) { - if (Py_STRING_MATCH(s, j, sub, n)) { - SPLIT_ADD(s, i, j); - i = j = j + n; - break; - } - } - } -#endif SPLIT_ADD(s, i, len); FIX_PREALLOC_SIZE(list); PyBuffer_Release(&vsub); @@ -2520,7 +2503,7 @@ static PyObject * bytearray_rsplit(PyByteArrayObject *self, PyObject *args) { - Py_ssize_t len = PyByteArray_GET_SIZE(self), n, i, j; + Py_ssize_t len = PyByteArray_GET_SIZE(self), n, j, pos; Py_ssize_t maxsplit = -1, count = 0; const char *s = PyByteArray_AS_STRING(self), *sub; PyObject *list, *str, *subobj = Py_None; @@ -2557,17 +2540,13 @@ } j = len; - i = j - n; - while ( (i >= 0) && (maxsplit-- > 0) ) { - for (; i>=0; i--) { - if (Py_STRING_MATCH(s, i, sub, n)) { - SPLIT_ADD(s, i + n, j); - j = i; - i -= n; - break; - } - } + while (maxsplit-- > 0) { + pos = fastsearch(s, j, sub, n, FAST_RSEARCH); + if (pos < 0) + break; + SPLIT_ADD(s, pos + n, j); + j = pos; } SPLIT_ADD(s, 0, j); FIX_PREALLOC_SIZE(list); Modified: python/trunk/Objects/stringlib/README.txt ============================================================================== --- python/trunk/Objects/stringlib/README.txt (original) +++ python/trunk/Objects/stringlib/README.txt Sat Jan 2 22:12:58 2010 @@ -15,10 +15,6 @@ a PyObject representing the empty string -int STRINGLIB_CMP(STRINGLIB_CHAR*, STRINGLIB_CHAR*, Py_ssize_t) - - compares two strings. returns 0 if they match, and non-zero if not. - Py_ssize_t STRINGLIB_LEN(PyObject*) returns the length of the given string object (which must be of the Modified: python/trunk/Objects/stringlib/fastsearch.h ============================================================================== --- python/trunk/Objects/stringlib/fastsearch.h (original) +++ python/trunk/Objects/stringlib/fastsearch.h Sat Jan 2 22:12:58 2010 @@ -5,7 +5,7 @@ /* fast search/count implementation, based on a mix between boyer- moore and horspool, with a few more bells and whistles on the top. - for some more background, see: http://effbot.org/stringlib.htm */ + for some more background, see: http://effbot.org/zone/stringlib.htm */ /* note: fastsearch may access s[n], which isn't a problem when using Python's ordinary string types, but may cause problems if you're @@ -16,6 +16,7 @@ #define FAST_COUNT 0 #define FAST_SEARCH 1 +#define FAST_RSEARCH 2 Py_LOCAL_INLINE(Py_ssize_t) fastsearch(const STRINGLIB_CHAR* s, Py_ssize_t n, @@ -41,51 +42,92 @@ if (s[i] == p[0]) count++; return count; - } else { + } else if (mode == FAST_SEARCH) { for (i = 0; i < n; i++) if (s[i] == p[0]) return i; + } else { /* FAST_RSEARCH */ + for (i = n - 1; i > -1; i--) + if (s[i] == p[0]) + return i; } return -1; } mlast = m - 1; - - /* create compressed boyer-moore delta 1 table */ skip = mlast - 1; - /* process pattern[:-1] */ - for (mask = i = 0; i < mlast; i++) { - mask |= (1 << (p[i] & 0x1F)); - if (p[i] == p[mlast]) - skip = mlast - i - 1; - } - /* process pattern[-1] outside the loop */ - mask |= (1 << (p[mlast] & 0x1F)); - for (i = 0; i <= w; i++) { - /* note: using mlast in the skip path slows things down on x86 */ - if (s[i+m-1] == p[m-1]) { - /* candidate match */ - for (j = 0; j < mlast; j++) - if (s[i+j] != p[j]) - break; - if (j == mlast) { - /* got a match! */ - if (mode != FAST_COUNT) + if (mode != FAST_RSEARCH) { + + /* create compressed boyer-moore delta 1 table */ + + /* process pattern[:-1] */ + for (mask = i = 0; i < mlast; i++) { + mask |= (1 << (p[i] & 0x1F)); + if (p[i] == p[mlast]) + skip = mlast - i - 1; + } + /* process pattern[-1] outside the loop */ + mask |= (1 << (p[mlast] & 0x1F)); + + for (i = 0; i <= w; i++) { + /* note: using mlast in the skip path slows things down on x86 */ + if (s[i+m-1] == p[m-1]) { + /* candidate match */ + for (j = 0; j < mlast; j++) + if (s[i+j] != p[j]) + break; + if (j == mlast) { + /* got a match! */ + if (mode != FAST_COUNT) + return i; + count++; + i = i + mlast; + continue; + } + /* miss: check if next character is part of pattern */ + if (!(mask & (1 << (s[i+m] & 0x1F)))) + i = i + m; + else + i = i + skip; + } else { + /* skip: check if next character is part of pattern */ + if (!(mask & (1 << (s[i+m] & 0x1F)))) + i = i + m; + } + } + } else { /* FAST_RSEARCH */ + + /* create compressed boyer-moore delta 1 table */ + + /* process pattern[0] outside the loop */ + mask = (1 << (p[0] & 0x1F)); + /* process pattern[:0:-1] */ + for (i = mlast; i > 0; i--) { + mask |= (1 << (p[i] & 0x1F)); + if (p[i] == p[0]) + skip = i - 1; + } + + for (i = w; i >= 0; i--) { + if (s[i] == p[0]) { + /* candidate match */ + for (j = mlast; j > 0; j--) + if (s[i+j] != p[j]) + break; + if (j == 0) + /* got a match! */ return i; - count++; - i = i + mlast; - continue; + /* miss: check if previous character is part of pattern */ + if (!(mask & (1 << (s[i-1] & 0x1F)))) + i = i - m; + else + i = i - skip; + } else { + /* skip: check if previous character is part of pattern */ + if (!(mask & (1 << (s[i-1] & 0x1F)))) + i = i - m; } - /* miss: check if next character is part of pattern */ - if (!(mask & (1 << (s[i+m] & 0x1F)))) - i = i + m; - else - i = i + skip; - } else { - /* skip: check if next character is part of pattern */ - if (!(mask & (1 << (s[i+m] & 0x1F)))) - i = i + m; } } Modified: python/trunk/Objects/stringlib/find.h ============================================================================== --- python/trunk/Objects/stringlib/find.h (original) +++ python/trunk/Objects/stringlib/find.h Sat Jan 2 22:12:58 2010 @@ -32,20 +32,19 @@ const STRINGLIB_CHAR* sub, Py_ssize_t sub_len, Py_ssize_t offset) { - /* XXX - create reversefastsearch helper! */ - if (sub_len == 0) { - if (str_len < 0) - return -1; - return str_len + offset; - } else { - Py_ssize_t j, pos = -1; - for (j = str_len - sub_len; j >= 0; --j) - if (STRINGLIB_CMP(str+j, sub, sub_len) == 0) { - pos = j + offset; - break; - } - return pos; - } + Py_ssize_t pos; + + if (str_len < 0) + return -1; + if (sub_len == 0) + return str_len + offset; + + pos = fastsearch(str, str_len, sub, sub_len, FAST_RSEARCH); + + if (pos >= 0) + pos += offset; + + return pos; } Py_LOCAL_INLINE(Py_ssize_t) @@ -64,10 +63,7 @@ if (end < 0) end = 0; - return stringlib_find( - str + start, end - start, - sub, sub_len, start - ); + return stringlib_find(str + start, end - start, sub, sub_len, start); } Py_LOCAL_INLINE(Py_ssize_t) Modified: python/trunk/Objects/stringlib/partition.h ============================================================================== --- python/trunk/Objects/stringlib/partition.h (original) +++ python/trunk/Objects/stringlib/partition.h Sat Jan 2 22:12:58 2010 @@ -58,7 +58,7 @@ ) { PyObject* out; - Py_ssize_t pos, j; + Py_ssize_t pos; if (sep_len == 0) { PyErr_SetString(PyExc_ValueError, "empty separator"); @@ -69,20 +69,14 @@ if (!out) return NULL; - /* XXX - create reversefastsearch helper! */ - pos = -1; - for (j = str_len - sep_len; j >= 0; --j) - if (STRINGLIB_CMP(str+j, sep, sep_len) == 0) { - pos = j; - break; - } + pos = fastsearch(str, str_len, sep, sep_len, FAST_RSEARCH); if (pos < 0) { Py_INCREF(STRINGLIB_EMPTY); PyTuple_SET_ITEM(out, 0, (PyObject*) STRINGLIB_EMPTY); Py_INCREF(STRINGLIB_EMPTY); PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY); - Py_INCREF(str_obj); + Py_INCREF(str_obj); PyTuple_SET_ITEM(out, 2, (PyObject*) str_obj); return out; } Modified: python/trunk/Objects/stringlib/stringdefs.h ============================================================================== --- python/trunk/Objects/stringlib/stringdefs.h (original) +++ python/trunk/Objects/stringlib/stringdefs.h Sat Jan 2 22:12:58 2010 @@ -21,7 +21,6 @@ #define STRINGLIB_NEW PyString_FromStringAndSize #define STRINGLIB_RESIZE _PyString_Resize #define STRINGLIB_CHECK PyString_Check -#define STRINGLIB_CMP memcmp #define STRINGLIB_TOSTR PyObject_Str #define STRINGLIB_GROUPING _PyString_InsertThousandsGrouping #define STRINGLIB_GROUPING_LOCALE _PyString_InsertThousandsGroupingLocale Modified: python/trunk/Objects/stringlib/unicodedefs.h ============================================================================== --- python/trunk/Objects/stringlib/unicodedefs.h (original) +++ python/trunk/Objects/stringlib/unicodedefs.h Sat Jan 2 22:12:58 2010 @@ -31,23 +31,4 @@ #define STRINGLIB_WANT_CONTAINS_OBJ 1 -/* STRINGLIB_CMP was defined as: - -Py_LOCAL_INLINE(int) -STRINGLIB_CMP(const Py_UNICODE* str, const Py_UNICODE* other, Py_ssize_t len) -{ - if (str[0] != other[0]) - return 1; - return memcmp((void*) str, (void*) other, len * sizeof(Py_UNICODE)); -} - -but unfortunately that gives a error if the function isn't used in a file that -includes this file. So, reluctantly convert it to a macro instead. */ - -#define STRINGLIB_CMP(str, other, len) \ - (((str)[0] != (other)[0]) ? \ - 1 : \ - memcmp((void*) (str), (void*) (other), (len) * sizeof(Py_UNICODE))) - - #endif /* !STRINGLIB_UNICODEDEFS_H */ Modified: python/trunk/Objects/stringobject.c ============================================================================== --- python/trunk/Objects/stringobject.c (original) +++ python/trunk/Objects/stringobject.c Sat Jan 2 22:12:58 2010 @@ -1576,13 +1576,10 @@ static PyObject * string_split(PyStringObject *self, PyObject *args) { - Py_ssize_t len = PyString_GET_SIZE(self), n, i, j; + Py_ssize_t len = PyString_GET_SIZE(self), n, i, j, pos; Py_ssize_t maxsplit = -1, count=0; const char *s = PyString_AS_STRING(self), *sub; PyObject *list, *str, *subobj = Py_None; -#ifdef USE_FAST - Py_ssize_t pos; -#endif if (!PyArg_ParseTuple(args, "|On:split", &subobj, &maxsplit)) return NULL; @@ -1612,28 +1609,15 @@ if (list == NULL) return NULL; -#ifdef USE_FAST i = j = 0; while (maxsplit-- > 0) { pos = fastsearch(s+i, len-i, sub, n, FAST_SEARCH); if (pos < 0) break; - j = i+pos; + j = i + pos; SPLIT_ADD(s, i, j); i = j + n; } -#else - i = j = 0; - while ((j+n <= len) && (maxsplit-- > 0)) { - for (; j+n <= len; j++) { - if (Py_STRING_MATCH(s, j, sub, n)) { - SPLIT_ADD(s, i, j); - i = j = j + n; - break; - } - } - } -#endif SPLIT_ADD(s, i, len); FIX_PREALLOC_SIZE(list); return list; @@ -1801,9 +1785,9 @@ static PyObject * string_rsplit(PyStringObject *self, PyObject *args) { - Py_ssize_t len = PyString_GET_SIZE(self), n, i, j; + Py_ssize_t len = PyString_GET_SIZE(self), n, j, pos; Py_ssize_t maxsplit = -1, count=0; - const char *s, *sub; + const char *s = PyString_AS_STRING(self), *sub; PyObject *list, *str, *subobj = Py_None; if (!PyArg_ParseTuple(args, "|On:rsplit", &subobj, &maxsplit)) @@ -1835,18 +1819,13 @@ return NULL; j = len; - i = j - n; - s = PyString_AS_STRING(self); - while ( (i >= 0) && (maxsplit-- > 0) ) { - for (; i>=0; i--) { - if (Py_STRING_MATCH(s, i, sub, n)) { - SPLIT_ADD(s, i + n, j); - j = i; - i -= n; - break; - } - } + while (maxsplit-- > 0) { + pos = fastsearch(s, j, sub, n, FAST_RSEARCH); + if (pos < 0) + break; + SPLIT_ADD(s, pos + n, j); + j = pos; } SPLIT_ADD(s, 0, j); FIX_PREALLOC_SIZE(list); From python-checkins at python.org Sat Jan 2 22:29:55 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sat, 02 Jan 2010 21:29:55 -0000 Subject: [Python-checkins] r77242 - python/trunk/Doc/c-api/arg.rst Message-ID: Author: gregory.p.smith Date: Sat Jan 2 22:29:54 2010 New Revision: 77242 Log: Correct documentation for s* z* and w*, the argument that should be passed is the address of a Py_buffer, not a Py_buffer *. Modified: python/trunk/Doc/c-api/arg.rst Modified: python/trunk/Doc/c-api/arg.rst ============================================================================== --- python/trunk/Doc/c-api/arg.rst (original) +++ python/trunk/Doc/c-api/arg.rst Sat Jan 2 22:29:54 2010 @@ -46,7 +46,7 @@ :file:`Python.h`. If the macro is defined, length is a :ctype:`Py_ssize_t` rather than an int. -``s*`` (string, Unicode, or any buffer compatible object) [Py_buffer \*] +``s*`` (string, Unicode, or any buffer compatible object) [Py_buffer] Similar to ``s#``, this code fills a Py_buffer structure provided by the caller. The buffer gets locked, so that the caller can subsequently use the buffer even inside a ``Py_BEGIN_ALLOW_THREADS`` block; the caller is @@ -62,7 +62,7 @@ ``z#`` (string or ``None`` or any read buffer compatible object) [const char \*, int] This is to ``s#`` as ``z`` is to ``s``. -``z*`` (string or ``None`` or any buffer compatible object) [Py_buffer*] +``z*`` (string or ``None`` or any buffer compatible object) [Py_buffer] This is to ``s*`` as ``z`` is to ``s``. .. versionadded:: 2.6 @@ -266,7 +266,7 @@ buffer. Only single-segment buffer objects are accepted; :exc:`TypeError` is raised for all others. -``w*`` (read-write byte-oriented buffer) [Py_buffer \*] +``w*`` (read-write byte-oriented buffer) [Py_buffer] This is to ``w`` what ``s*`` is to ``s``. .. versionadded:: 2.6 From python-checkins at python.org Sat Jan 2 22:32:29 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sat, 02 Jan 2010 21:32:29 -0000 Subject: [Python-checkins] r77243 - in python/branches/py3k: Doc/c-api/arg.rst Message-ID: Author: gregory.p.smith Date: Sat Jan 2 22:32:29 2010 New Revision: 77243 Log: Merged revisions 77242 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77242 | gregory.p.smith | 2010-01-02 13:29:54 -0800 (Sat, 02 Jan 2010) | 3 lines Correct documentation for s* z* and w*, the argument that should be passed is the address of a Py_buffer, not a Py_buffer *. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/c-api/arg.rst Modified: python/branches/py3k/Doc/c-api/arg.rst ============================================================================== --- python/branches/py3k/Doc/c-api/arg.rst (original) +++ python/branches/py3k/Doc/c-api/arg.rst Sat Jan 2 22:32:29 2010 @@ -37,7 +37,7 @@ including :file:`Python.h`. If the macro is defined, length is a :ctype:`Py_ssize_t` rather than an int. -``s*`` (string, Unicode, or any buffer compatible object) [Py_buffer \*] +``s*`` (string, Unicode, or any buffer compatible object) [Py_buffer] This is similar to ``s``, but the code fills a :ctype:`Py_buffer` structure provided by the caller. In this case the Python string may contain embedded null bytes. Unicode objects pass back a pointer to the default encoded @@ -81,7 +81,7 @@ Like ``s``, but the Python object may also be ``None``, in which case the C pointer is set to *NULL*. -``z*`` (string or ``None`` or any buffer compatible object) [Py_buffer*] +``z*`` (string or ``None`` or any buffer compatible object) [Py_buffer] This is to ``s*`` as ``z`` is to ``s``. ``z#`` (string or ``None`` or any read buffer compatible object) [const char \*, int] @@ -281,7 +281,7 @@ or use ``w#`` instead. Only single-segment buffer objects are accepted; :exc:`TypeError` is raised for all others. -``w*`` (read-write byte-oriented buffer) [Py_buffer \*] +``w*`` (read-write byte-oriented buffer) [Py_buffer] This is to ``w`` what ``s*`` is to ``s``. ``w#`` (read-write character buffer) [char \*, int] From python-checkins at python.org Sat Jan 2 22:35:36 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sat, 02 Jan 2010 21:35:36 -0000 Subject: [Python-checkins] r77244 - in python/branches/release26-maint: Doc/c-api/arg.rst Message-ID: Author: gregory.p.smith Date: Sat Jan 2 22:35:36 2010 New Revision: 77244 Log: Merged revisions 77242 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77242 | gregory.p.smith | 2010-01-02 13:29:54 -0800 (Sat, 02 Jan 2010) | 3 lines Correct documentation for s* z* and w*, the argument that should be passed is the address of a Py_buffer, not a Py_buffer *. ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Doc/c-api/arg.rst Modified: python/branches/release26-maint/Doc/c-api/arg.rst ============================================================================== --- python/branches/release26-maint/Doc/c-api/arg.rst (original) +++ python/branches/release26-maint/Doc/c-api/arg.rst Sat Jan 2 22:35:36 2010 @@ -46,7 +46,7 @@ :file:`Python.h`. If the macro is defined, length is a :ctype:`Py_ssize_t` rather than an int. -``s*`` (string, Unicode, or any buffer compatible object) [Py_buffer \*] +``s*`` (string, Unicode, or any buffer compatible object) [Py_buffer] Similar to ``s#``, this code fills a Py_buffer structure provided by the caller. The buffer gets locked, so that the caller can subsequently use the buffer even inside a ``Py_BEGIN_ALLOW_THREADS`` block; the caller is @@ -62,7 +62,7 @@ ``z#`` (string or ``None`` or any read buffer compatible object) [const char \*, int] This is to ``s#`` as ``z`` is to ``s``. -``z*`` (string or ``None`` or any buffer compatible object) [Py_buffer*] +``z*`` (string or ``None`` or any buffer compatible object) [Py_buffer] This is to ``s*`` as ``z`` is to ``s``. .. versionadded:: 2.6 @@ -266,7 +266,7 @@ buffer. Only single-segment buffer objects are accepted; :exc:`TypeError` is raised for all others. -``w*`` (read-write byte-oriented buffer) [Py_buffer \*] +``w*`` (read-write byte-oriented buffer) [Py_buffer] This is to ``w`` what ``s*`` is to ``s``. .. versionadded:: 2.6 From python-checkins at python.org Sat Jan 2 22:38:49 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sat, 02 Jan 2010 21:38:49 -0000 Subject: [Python-checkins] r77245 - in python/branches/release31-maint: Doc/c-api/arg.rst Message-ID: Author: gregory.p.smith Date: Sat Jan 2 22:38:48 2010 New Revision: 77245 Log: Merged revisions 77243 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77243 | gregory.p.smith | 2010-01-02 13:32:29 -0800 (Sat, 02 Jan 2010) | 10 lines Merged revisions 77242 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77242 | gregory.p.smith | 2010-01-02 13:29:54 -0800 (Sat, 02 Jan 2010) | 3 lines Correct documentation for s* z* and w*, the argument that should be passed is the address of a Py_buffer, not a Py_buffer *. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Doc/c-api/arg.rst Modified: python/branches/release31-maint/Doc/c-api/arg.rst ============================================================================== --- python/branches/release31-maint/Doc/c-api/arg.rst (original) +++ python/branches/release31-maint/Doc/c-api/arg.rst Sat Jan 2 22:38:48 2010 @@ -37,7 +37,7 @@ including :file:`Python.h`. If the macro is defined, length is a :ctype:`Py_ssize_t` rather than an int. -``s*`` (string, Unicode, or any buffer compatible object) [Py_buffer \*] +``s*`` (string, Unicode, or any buffer compatible object) [Py_buffer] This is similar to ``s``, but the code fills a :ctype:`Py_buffer` structure provided by the caller. In this case the Python string may contain embedded null bytes. Unicode objects pass back a pointer to the default encoded @@ -81,7 +81,7 @@ Like ``s``, but the Python object may also be ``None``, in which case the C pointer is set to *NULL*. -``z*`` (string or ``None`` or any buffer compatible object) [Py_buffer*] +``z*`` (string or ``None`` or any buffer compatible object) [Py_buffer] This is to ``s*`` as ``z`` is to ``s``. ``z#`` (string or ``None`` or any read buffer compatible object) [const char \*, int] @@ -281,7 +281,7 @@ or use ``w#`` instead. Only single-segment buffer objects are accepted; :exc:`TypeError` is raised for all others. -``w*`` (read-write byte-oriented buffer) [Py_buffer \*] +``w*`` (read-write byte-oriented buffer) [Py_buffer] This is to ``w`` what ``s*`` is to ``s``. ``w#`` (read-write character buffer) [char \*, int] From python-checkins at python.org Sat Jan 2 22:40:37 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sat, 02 Jan 2010 21:40:37 -0000 Subject: [Python-checkins] r77246 - in python/branches/py3k: Lib/collections.py Lib/test/string_tests.py Misc/NEWS Objects/bytearrayobject.c Objects/stringlib/README.txt Objects/stringlib/fastsearch.h Objects/stringlib/find.h Objects/stringlib/partition.h Objects/stringlib/stringdefs.h Objects/stringlib/unicodedefs.h Message-ID: Author: antoine.pitrou Date: Sat Jan 2 22:40:36 2010 New Revision: 77246 Log: Merged revisions 77241 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77241 | antoine.pitrou | 2010-01-02 22:12:58 +0100 (sam., 02 janv. 2010) | 4 lines Issue #7462: Implement the stringlib fast search algorithm for the `rfind`, `rindex`, `rsplit` and `rpartition` methods. Patch by Florent Xicluna. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/collections.py python/branches/py3k/Lib/test/string_tests.py python/branches/py3k/Misc/NEWS python/branches/py3k/Objects/bytearrayobject.c python/branches/py3k/Objects/stringlib/README.txt python/branches/py3k/Objects/stringlib/fastsearch.h python/branches/py3k/Objects/stringlib/find.h python/branches/py3k/Objects/stringlib/partition.h python/branches/py3k/Objects/stringlib/stringdefs.h python/branches/py3k/Objects/stringlib/unicodedefs.h Modified: python/branches/py3k/Lib/collections.py ============================================================================== --- python/branches/py3k/Lib/collections.py (original) +++ python/branches/py3k/Lib/collections.py Sat Jan 2 22:40:36 2010 @@ -767,6 +767,8 @@ new = new.data return self.__class__(self.data.replace(old, new, maxsplit)) def rfind(self, sub, start=0, end=_sys.maxsize): + if isinstance(sub, UserString): + sub = sub.data return self.data.rfind(sub, start, end) def rindex(self, sub, start=0, end=_sys.maxsize): return self.data.rindex(sub, start, end) Modified: python/branches/py3k/Lib/test/string_tests.py ============================================================================== --- python/branches/py3k/Lib/test/string_tests.py (original) +++ python/branches/py3k/Lib/test/string_tests.py Sat Jan 2 22:40:36 2010 @@ -216,6 +216,30 @@ self.checkraises(TypeError, 'hello', 'rfind') self.checkraises(TypeError, 'hello', 'rfind', 42) + # For a variety of combinations, + # verify that str.rfind() matches __contains__ + # and that the found substring is really at that location + charset = ['', 'a', 'b', 'c'] + digits = 5 + base = len(charset) + teststrings = set() + for i in range(base ** digits): + entry = [] + for j in range(digits): + i, m = divmod(i, base) + entry.append(charset[m]) + teststrings.add(''.join(entry)) + teststrings = [self.fixtype(ts) for ts in teststrings] + for i in teststrings: + for j in teststrings: + loc = i.rfind(j) + r1 = (loc != -1) + r2 = j in i + if r1 != r2: + self.assertEqual(r1, r2) + if loc != -1: + self.assertEqual(i[loc:loc+len(j)], j) + def test_index(self): self.checkequal(0, 'abcdefghiabc', 'index', '') self.checkequal(3, 'abcdefghiabc', 'index', 'def') Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Sat Jan 2 22:40:36 2010 @@ -12,6 +12,9 @@ Core and Builtins ----------------- +- Issue #7462: Implement the stringlib fast search algorithm for the `rfind`, + `rindex`, `rsplit` and `rpartition` methods. Patch by Florent Xicluna. + - Issue #7604: Deleting an unset slotted attribute did not raise an AttributeError. Modified: python/branches/py3k/Objects/bytearrayobject.c ============================================================================== --- python/branches/py3k/Objects/bytearrayobject.c (original) +++ python/branches/py3k/Objects/bytearrayobject.c Sat Jan 2 22:40:36 2010 @@ -1035,7 +1035,6 @@ /* Methods */ #define STRINGLIB_CHAR char -#define STRINGLIB_CMP memcmp #define STRINGLIB_LEN PyByteArray_GET_SIZE #define STRINGLIB_STR PyByteArray_AS_STRING #define STRINGLIB_NEW PyByteArray_FromStringAndSize @@ -2214,14 +2213,11 @@ static PyObject * bytearray_split(PyByteArrayObject *self, PyObject *args) { - Py_ssize_t len = PyByteArray_GET_SIZE(self), n, i, j; + Py_ssize_t len = PyByteArray_GET_SIZE(self), n, i, j, pos; Py_ssize_t maxsplit = -1, count = 0; const char *s = PyByteArray_AS_STRING(self), *sub; PyObject *list, *str, *subobj = Py_None; Py_buffer vsub; -#ifdef USE_FAST - Py_ssize_t pos; -#endif if (!PyArg_ParseTuple(args, "|On:split", &subobj, &maxsplit)) return NULL; @@ -2253,7 +2249,6 @@ return NULL; } -#ifdef USE_FAST i = j = 0; while (maxsplit-- > 0) { pos = fastsearch(s+i, len-i, sub, n, FAST_SEARCH); @@ -2263,18 +2258,6 @@ SPLIT_ADD(s, i, j); i = j + n; } -#else - i = j = 0; - while ((j+n <= len) && (maxsplit-- > 0)) { - for (; j+n <= len; j++) { - if (Py_STRING_MATCH(s, j, sub, n)) { - SPLIT_ADD(s, i, j); - i = j = j + n; - break; - } - } - } -#endif SPLIT_ADD(s, i, len); FIX_PREALLOC_SIZE(list); PyBuffer_Release(&vsub); @@ -2452,7 +2435,7 @@ static PyObject * bytearray_rsplit(PyByteArrayObject *self, PyObject *args) { - Py_ssize_t len = PyByteArray_GET_SIZE(self), n, i, j; + Py_ssize_t len = PyByteArray_GET_SIZE(self), n, j, pos; Py_ssize_t maxsplit = -1, count = 0; const char *s = PyByteArray_AS_STRING(self), *sub; PyObject *list, *str, *subobj = Py_None; @@ -2489,17 +2472,13 @@ } j = len; - i = j - n; - while ( (i >= 0) && (maxsplit-- > 0) ) { - for (; i>=0; i--) { - if (Py_STRING_MATCH(s, i, sub, n)) { - SPLIT_ADD(s, i + n, j); - j = i; - i -= n; - break; - } - } + while (maxsplit-- > 0) { + pos = fastsearch(s, j, sub, n, FAST_RSEARCH); + if (pos < 0) + break; + SPLIT_ADD(s, pos + n, j); + j = pos; } SPLIT_ADD(s, 0, j); FIX_PREALLOC_SIZE(list); Modified: python/branches/py3k/Objects/stringlib/README.txt ============================================================================== --- python/branches/py3k/Objects/stringlib/README.txt (original) +++ python/branches/py3k/Objects/stringlib/README.txt Sat Jan 2 22:40:36 2010 @@ -15,10 +15,6 @@ a PyObject representing the empty string -int STRINGLIB_CMP(STRINGLIB_CHAR*, STRINGLIB_CHAR*, Py_ssize_t) - - compares two strings. returns 0 if they match, and non-zero if not. - Py_ssize_t STRINGLIB_LEN(PyObject*) returns the length of the given string object (which must be of the Modified: python/branches/py3k/Objects/stringlib/fastsearch.h ============================================================================== --- python/branches/py3k/Objects/stringlib/fastsearch.h (original) +++ python/branches/py3k/Objects/stringlib/fastsearch.h Sat Jan 2 22:40:36 2010 @@ -5,7 +5,7 @@ /* fast search/count implementation, based on a mix between boyer- moore and horspool, with a few more bells and whistles on the top. - for some more background, see: http://effbot.org/stringlib.htm */ + for some more background, see: http://effbot.org/zone/stringlib.htm */ /* note: fastsearch may access s[n], which isn't a problem when using Python's ordinary string types, but may cause problems if you're @@ -16,6 +16,7 @@ #define FAST_COUNT 0 #define FAST_SEARCH 1 +#define FAST_RSEARCH 2 Py_LOCAL_INLINE(Py_ssize_t) fastsearch(const STRINGLIB_CHAR* s, Py_ssize_t n, @@ -41,51 +42,92 @@ if (s[i] == p[0]) count++; return count; - } else { + } else if (mode == FAST_SEARCH) { for (i = 0; i < n; i++) if (s[i] == p[0]) return i; + } else { /* FAST_RSEARCH */ + for (i = n - 1; i > -1; i--) + if (s[i] == p[0]) + return i; } return -1; } mlast = m - 1; - - /* create compressed boyer-moore delta 1 table */ skip = mlast - 1; - /* process pattern[:-1] */ - for (mask = i = 0; i < mlast; i++) { - mask |= (1 << (p[i] & 0x1F)); - if (p[i] == p[mlast]) - skip = mlast - i - 1; - } - /* process pattern[-1] outside the loop */ - mask |= (1 << (p[mlast] & 0x1F)); - for (i = 0; i <= w; i++) { - /* note: using mlast in the skip path slows things down on x86 */ - if (s[i+m-1] == p[m-1]) { - /* candidate match */ - for (j = 0; j < mlast; j++) - if (s[i+j] != p[j]) - break; - if (j == mlast) { - /* got a match! */ - if (mode != FAST_COUNT) + if (mode != FAST_RSEARCH) { + + /* create compressed boyer-moore delta 1 table */ + + /* process pattern[:-1] */ + for (mask = i = 0; i < mlast; i++) { + mask |= (1 << (p[i] & 0x1F)); + if (p[i] == p[mlast]) + skip = mlast - i - 1; + } + /* process pattern[-1] outside the loop */ + mask |= (1 << (p[mlast] & 0x1F)); + + for (i = 0; i <= w; i++) { + /* note: using mlast in the skip path slows things down on x86 */ + if (s[i+m-1] == p[m-1]) { + /* candidate match */ + for (j = 0; j < mlast; j++) + if (s[i+j] != p[j]) + break; + if (j == mlast) { + /* got a match! */ + if (mode != FAST_COUNT) + return i; + count++; + i = i + mlast; + continue; + } + /* miss: check if next character is part of pattern */ + if (!(mask & (1 << (s[i+m] & 0x1F)))) + i = i + m; + else + i = i + skip; + } else { + /* skip: check if next character is part of pattern */ + if (!(mask & (1 << (s[i+m] & 0x1F)))) + i = i + m; + } + } + } else { /* FAST_RSEARCH */ + + /* create compressed boyer-moore delta 1 table */ + + /* process pattern[0] outside the loop */ + mask = (1 << (p[0] & 0x1F)); + /* process pattern[:0:-1] */ + for (i = mlast; i > 0; i--) { + mask |= (1 << (p[i] & 0x1F)); + if (p[i] == p[0]) + skip = i - 1; + } + + for (i = w; i >= 0; i--) { + if (s[i] == p[0]) { + /* candidate match */ + for (j = mlast; j > 0; j--) + if (s[i+j] != p[j]) + break; + if (j == 0) + /* got a match! */ return i; - count++; - i = i + mlast; - continue; + /* miss: check if previous character is part of pattern */ + if (!(mask & (1 << (s[i-1] & 0x1F)))) + i = i - m; + else + i = i - skip; + } else { + /* skip: check if previous character is part of pattern */ + if (!(mask & (1 << (s[i-1] & 0x1F)))) + i = i - m; } - /* miss: check if next character is part of pattern */ - if (!(mask & (1 << (s[i+m] & 0x1F)))) - i = i + m; - else - i = i + skip; - } else { - /* skip: check if next character is part of pattern */ - if (!(mask & (1 << (s[i+m] & 0x1F)))) - i = i + m; } } Modified: python/branches/py3k/Objects/stringlib/find.h ============================================================================== --- python/branches/py3k/Objects/stringlib/find.h (original) +++ python/branches/py3k/Objects/stringlib/find.h Sat Jan 2 22:40:36 2010 @@ -32,20 +32,19 @@ const STRINGLIB_CHAR* sub, Py_ssize_t sub_len, Py_ssize_t offset) { - /* XXX - create reversefastsearch helper! */ - if (sub_len == 0) { - if (str_len < 0) - return -1; - return str_len + offset; - } else { - Py_ssize_t j, pos = -1; - for (j = str_len - sub_len; j >= 0; --j) - if (STRINGLIB_CMP(str+j, sub, sub_len) == 0) { - pos = j + offset; - break; - } - return pos; - } + Py_ssize_t pos; + + if (str_len < 0) + return -1; + if (sub_len == 0) + return str_len + offset; + + pos = fastsearch(str, str_len, sub, sub_len, FAST_RSEARCH); + + if (pos >= 0) + pos += offset; + + return pos; } Py_LOCAL_INLINE(Py_ssize_t) @@ -64,10 +63,7 @@ if (end < 0) end = 0; - return stringlib_find( - str + start, end - start, - sub, sub_len, start - ); + return stringlib_find(str + start, end - start, sub, sub_len, start); } Py_LOCAL_INLINE(Py_ssize_t) Modified: python/branches/py3k/Objects/stringlib/partition.h ============================================================================== --- python/branches/py3k/Objects/stringlib/partition.h (original) +++ python/branches/py3k/Objects/stringlib/partition.h Sat Jan 2 22:40:36 2010 @@ -58,7 +58,7 @@ ) { PyObject* out; - Py_ssize_t pos, j; + Py_ssize_t pos; if (sep_len == 0) { PyErr_SetString(PyExc_ValueError, "empty separator"); @@ -69,20 +69,14 @@ if (!out) return NULL; - /* XXX - create reversefastsearch helper! */ - pos = -1; - for (j = str_len - sep_len; j >= 0; --j) - if (STRINGLIB_CMP(str+j, sep, sep_len) == 0) { - pos = j; - break; - } + pos = fastsearch(str, str_len, sep, sep_len, FAST_RSEARCH); if (pos < 0) { Py_INCREF(STRINGLIB_EMPTY); PyTuple_SET_ITEM(out, 0, (PyObject*) STRINGLIB_EMPTY); Py_INCREF(STRINGLIB_EMPTY); PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY); - Py_INCREF(str_obj); + Py_INCREF(str_obj); PyTuple_SET_ITEM(out, 2, (PyObject*) str_obj); return out; } Modified: python/branches/py3k/Objects/stringlib/stringdefs.h ============================================================================== --- python/branches/py3k/Objects/stringlib/stringdefs.h (original) +++ python/branches/py3k/Objects/stringlib/stringdefs.h Sat Jan 2 22:40:36 2010 @@ -22,7 +22,6 @@ #define STRINGLIB_RESIZE _PyBytes_Resize #define STRINGLIB_CHECK PyBytes_Check #define STRINGLIB_CHECK_EXACT PyBytes_CheckExact -#define STRINGLIB_CMP memcmp #define STRINGLIB_TOSTR PyObject_Str #define STRINGLIB_GROUPING _PyBytes_InsertThousandsGrouping #define STRINGLIB_GROUPING_LOCALE _PyBytes_InsertThousandsGroupingLocale Modified: python/branches/py3k/Objects/stringlib/unicodedefs.h ============================================================================== --- python/branches/py3k/Objects/stringlib/unicodedefs.h (original) +++ python/branches/py3k/Objects/stringlib/unicodedefs.h Sat Jan 2 22:40:36 2010 @@ -35,23 +35,4 @@ #define STRINGLIB_WANT_CONTAINS_OBJ 1 -/* STRINGLIB_CMP was defined as: - -Py_LOCAL_INLINE(int) -STRINGLIB_CMP(const Py_UNICODE* str, const Py_UNICODE* other, Py_ssize_t len) -{ - if (str[0] != other[0]) - return 1; - return memcmp((void*) str, (void*) other, len * sizeof(Py_UNICODE)); -} - -but unfortunately that gives a error if the function isn't used in a file that -includes this file. So, reluctantly convert it to a macro instead. */ - -#define STRINGLIB_CMP(str, other, len) \ - (((str)[0] != (other)[0]) ? \ - 1 : \ - memcmp((void*) (str), (void*) (other), (len) * sizeof(Py_UNICODE))) - - #endif /* !STRINGLIB_UNICODEDEFS_H */ From python-checkins at python.org Sat Jan 2 22:47:10 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sat, 02 Jan 2010 21:47:10 -0000 Subject: [Python-checkins] r77247 - python/trunk/Lib/test/string_tests.py Message-ID: Author: antoine.pitrou Date: Sat Jan 2 22:47:10 2010 New Revision: 77247 Log: Add tests for issue #7458: str.rfind() would crash when called with an invalid start value. The offending code itself was removed as part of #7462. This patch by Victor Stinner. Modified: python/trunk/Lib/test/string_tests.py Modified: python/trunk/Lib/test/string_tests.py ============================================================================== --- python/trunk/Lib/test/string_tests.py (original) +++ python/trunk/Lib/test/string_tests.py Sat Jan 2 22:47:10 2010 @@ -185,6 +185,9 @@ self.checkequal(-1, '', 'find', 'xx', 1, 1) self.checkequal(-1, '', 'find', 'xx', sys.maxint, 0) + # issue 7458 + self.checkequal(-1, 'ab', 'find', 'xxx', sys.maxsize + 1, 0) + # For a variety of combinations, # verify that str.find() matches __contains__ # and that the found substring is really at that location @@ -255,6 +258,9 @@ if loc != -1: self.assertEqual(i[loc:loc+len(j)], j) + # issue 7458 + self.checkequal(-1, 'ab', 'rfind', 'xxx', sys.maxsize + 1, 0) + def test_index(self): self.checkequal(0, 'abcdefghiabc', 'index', '') self.checkequal(3, 'abcdefghiabc', 'index', 'def') From python-checkins at python.org Sat Jan 2 22:51:33 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sat, 02 Jan 2010 21:51:33 -0000 Subject: [Python-checkins] r77248 - in python/branches/py3k: Lib/test/string_tests.py Message-ID: Author: antoine.pitrou Date: Sat Jan 2 22:51:33 2010 New Revision: 77248 Log: Merged revisions 77247 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77247 | antoine.pitrou | 2010-01-02 22:47:10 +0100 (sam., 02 janv. 2010) | 5 lines Add tests for issue #7458: str.rfind() would crash when called with an invalid start value. The offending code itself was removed as part of #7462. This patch by Victor Stinner. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/string_tests.py Modified: python/branches/py3k/Lib/test/string_tests.py ============================================================================== --- python/branches/py3k/Lib/test/string_tests.py (original) +++ python/branches/py3k/Lib/test/string_tests.py Sat Jan 2 22:51:33 2010 @@ -172,6 +172,9 @@ self.checkequal(-1, '', 'find', 'xx', 1, 1) self.checkequal(-1, '', 'find', 'xx', sys.maxsize, 0) + # issue 7458 + self.checkequal(-1, 'ab', 'find', 'xxx', sys.maxsize + 1, 0) + # For a variety of combinations, # verify that str.find() matches __contains__ # and that the found substring is really at that location @@ -240,6 +243,9 @@ if loc != -1: self.assertEqual(i[loc:loc+len(j)], j) + # issue 7458 + self.checkequal(-1, 'ab', 'rfind', 'xxx', sys.maxsize + 1, 0) + def test_index(self): self.checkequal(0, 'abcdefghiabc', 'index', '') self.checkequal(3, 'abcdefghiabc', 'index', 'def') From python-checkins at python.org Sat Jan 2 22:53:45 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sat, 02 Jan 2010 21:53:45 -0000 Subject: [Python-checkins] r77249 - python/trunk/Lib/test/string_tests.py Message-ID: Author: antoine.pitrou Date: Sat Jan 2 22:53:44 2010 New Revision: 77249 Log: Remove silly conditional. Modified: python/trunk/Lib/test/string_tests.py Modified: python/trunk/Lib/test/string_tests.py ============================================================================== --- python/trunk/Lib/test/string_tests.py (original) +++ python/trunk/Lib/test/string_tests.py Sat Jan 2 22:53:44 2010 @@ -208,8 +208,7 @@ loc = i.find(j) r1 = (loc != -1) r2 = j in i - if r1 != r2: - self.assertEqual(r1, r2) + self.assertEqual(r1, r2) if loc != -1: self.assertEqual(i[loc:loc+len(j)], j) @@ -253,8 +252,7 @@ loc = i.rfind(j) r1 = (loc != -1) r2 = j in i - if r1 != r2: - self.assertEqual(r1, r2) + self.assertEqual(r1, r2) if loc != -1: self.assertEqual(i[loc:loc+len(j)], j) From python-checkins at python.org Sat Jan 2 22:55:18 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sat, 02 Jan 2010 21:55:18 -0000 Subject: [Python-checkins] r77250 - in python/branches/py3k: Lib/test/string_tests.py Message-ID: Author: antoine.pitrou Date: Sat Jan 2 22:55:17 2010 New Revision: 77250 Log: Merged revisions 77249 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77249 | antoine.pitrou | 2010-01-02 22:53:44 +0100 (sam., 02 janv. 2010) | 3 lines Remove silly conditional. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/string_tests.py Modified: python/branches/py3k/Lib/test/string_tests.py ============================================================================== --- python/branches/py3k/Lib/test/string_tests.py (original) +++ python/branches/py3k/Lib/test/string_tests.py Sat Jan 2 22:55:17 2010 @@ -194,8 +194,7 @@ loc = i.find(j) r1 = (loc != -1) r2 = j in i - if r1 != r2: - self.assertEqual(r1, r2) + self.assertEqual(r1, r2) if loc != -1: self.assertEqual(i[loc:loc+len(j)], j) @@ -238,8 +237,7 @@ loc = i.rfind(j) r1 = (loc != -1) r2 = j in i - if r1 != r2: - self.assertEqual(r1, r2) + self.assertEqual(r1, r2) if loc != -1: self.assertEqual(i[loc:loc+len(j)], j) From python-checkins at python.org Sat Jan 2 23:25:29 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sat, 02 Jan 2010 22:25:29 -0000 Subject: [Python-checkins] r77251 - python/trunk/setup.py Message-ID: Author: gregory.p.smith Date: Sat Jan 2 23:25:29 2010 New Revision: 77251 Log: Always compile the all versions of the hashlib algorithm modules when Python was compiled with Py_DEBUG defined. Otherwise the builtins are not compiled by default for many developers due to OpenSSL being present, making it easier for bugs to slip by. A future commit will add test code compare the behaviors of all implementations when they are all available. Modified: python/trunk/setup.py Modified: python/trunk/setup.py ============================================================================== --- python/trunk/setup.py (original) +++ python/trunk/setup.py Sat Jan 2 23:25:29 2010 @@ -16,6 +16,9 @@ from distutils.command.install import install from distutils.command.install_lib import install_lib +# Were we compiled --with-pydebug or with #define Py_DEBUG? +COMPILED_WITH_PYDEBUG = hasattr(sys, 'gettotalrefcount') + # This global variable is used to hold the list of modules to be disabled. disabled_module_list = [] @@ -653,10 +656,12 @@ break #print 'openssl_ver = 0x%08x' % openssl_ver + min_openssl_ver = 0x00907000 + have_usable_openssl = (ssl_incs is not None and + ssl_libs is not None and + openssl_ver >= min_openssl_ver) - if (ssl_incs is not None and - ssl_libs is not None and - openssl_ver >= 0x00907000): + if have_usable_openssl: # The _hashlib module wraps optimized implementations # of hash functions from the OpenSSL library. exts.append( Extension('_hashlib', ['_hashopenssl.c'], @@ -665,7 +670,7 @@ libraries = ['ssl', 'crypto']) ) # these aren't strictly missing since they are unneeded. #missing.extend(['_sha', '_md5']) - else: + if COMPILED_WITH_PYDEBUG or not have_usable_openssl: # The _sha module implements the SHA1 hash algorithm. exts.append( Extension('_sha', ['shamodule.c']) ) # The _md5 module implements the RSA Data Security, Inc. MD5 @@ -676,7 +681,8 @@ depends = ['md5.h']) ) missing.append('_hashlib') - if (openssl_ver < 0x00908000): + min_sha2_openssl_ver = 0x00908000 + if COMPILED_WITH_PYDEBUG or openssl_ver < min_sha2_openssl_ver: # OpenSSL doesn't do these until 0.9.8 so we'll bring our own hash exts.append( Extension('_sha256', ['sha256module.c']) ) exts.append( Extension('_sha512', ['sha512module.c']) ) From python-checkins at python.org Sat Jan 2 23:28:49 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sat, 02 Jan 2010 22:28:49 -0000 Subject: [Python-checkins] r77252 - in python/trunk: Lib/test/test_hashlib.py Modules/_hashopenssl.c Modules/md5module.c Modules/sha256module.c Modules/sha512module.c Modules/shamodule.c Message-ID: Author: gregory.p.smith Date: Sat Jan 2 23:28:48 2010 New Revision: 77252 Log: Issue #3745: Undo the requirement for new buffer API only objects to be passed to hashlib functions in python 2.x. The module now uses the 's*' for argument parsing which auto encodes unicode objects to the system default encoding for us. Modified: python/trunk/Lib/test/test_hashlib.py python/trunk/Modules/_hashopenssl.c python/trunk/Modules/md5module.c python/trunk/Modules/sha256module.c python/trunk/Modules/sha512module.c python/trunk/Modules/shamodule.c Modified: python/trunk/Lib/test/test_hashlib.py ============================================================================== --- python/trunk/Lib/test/test_hashlib.py (original) +++ python/trunk/Lib/test/test_hashlib.py Sat Jan 2 23:28:48 2010 @@ -71,18 +71,23 @@ computed = hashlib.new(name, data).hexdigest() self.assertEqual(computed, digest) - def check_no_unicode(self, algorithm_name): + def check_unicode(self, algorithm_name): # Unicode objects are not allowed as input. - self.assertRaises(TypeError, getattr(hashlib, algorithm_name), u'spam') - self.assertRaises(TypeError, hashlib.new, algorithm_name, u'spam') - - def test_no_unicode(self): - self.check_no_unicode('md5') - self.check_no_unicode('sha1') - self.check_no_unicode('sha224') - self.check_no_unicode('sha256') - self.check_no_unicode('sha384') - self.check_no_unicode('sha512') + expected = hashlib.new(algorithm_name, str(u'spam')).hexdigest() + self.assertEqual(getattr(hashlib, algorithm_name)(u'spam').hexdigest(), + expected) + self.assertEqual(hashlib.new(algorithm_name, u'spam').hexdigest(), + expected) + + def test_unicode(self): + # In python 2.x unicode is auto-encoded to the system default encoding + # when passed to hashlib functions. + self.check_unicode('md5') + self.check_unicode('sha1') + self.check_unicode('sha224') + self.check_unicode('sha256') + self.check_unicode('sha384') + self.check_unicode('sha512') def test_case_md5_0(self): self.check('md5', '', 'd41d8cd98f00b204e9800998ecf8427e') Modified: python/trunk/Modules/_hashopenssl.c ============================================================================== --- python/trunk/Modules/_hashopenssl.c (original) +++ python/trunk/Modules/_hashopenssl.c Sat Jan 2 23:28:48 2010 @@ -15,7 +15,6 @@ #include "Python.h" #include "structmember.h" -#include "hashlib.h" #ifdef WITH_THREAD #include "pythread.h" @@ -218,14 +217,11 @@ static PyObject * EVP_update(EVPobject *self, PyObject *args) { - PyObject *obj; Py_buffer view; - if (!PyArg_ParseTuple(args, "O:update", &obj)) + if (!PyArg_ParseTuple(args, "s*:update", &view)) return NULL; - GET_BUFFER_VIEW_OR_ERROUT(obj, &view, NULL); - #ifdef WITH_THREAD if (self->lock == NULL && view.len >= HASHLIB_GIL_MINSIZE) { self->lock = PyThread_allocate_lock(); @@ -238,17 +234,16 @@ EVP_hash(self, view.buf, view.len); PyThread_release_lock(self->lock); Py_END_ALLOW_THREADS - } else { - EVP_hash(self, view.buf, view.len); } -#else - EVP_hash(self, view.buf, view.len); + else #endif + { + EVP_hash(self, view.buf, view.len); + } PyBuffer_Release(&view); - Py_INCREF(Py_None); - return Py_None; + Py_RETURN_NONE; } static PyMethodDef EVP_methods[] = { @@ -314,31 +309,25 @@ { static char *kwlist[] = {"name", "string", NULL}; PyObject *name_obj = NULL; - PyObject *data_obj = NULL; - Py_buffer view; + Py_buffer view = { 0 }; char *nameStr; const EVP_MD *digest; - if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O:HASH", kwlist, - &name_obj, &data_obj)) { + if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|s*:HASH", kwlist, + &name_obj, &view)) { return -1; } - if (data_obj) - GET_BUFFER_VIEW_OR_ERROUT(data_obj, &view, -1); - if (!PyArg_Parse(name_obj, "s", &nameStr)) { PyErr_SetString(PyExc_TypeError, "name must be a string"); - if (data_obj) - PyBuffer_Release(&view); + PyBuffer_Release(&view); return -1; } digest = EVP_get_digestbyname(nameStr); if (!digest) { PyErr_SetString(PyExc_ValueError, "unknown hash function"); - if (data_obj) - PyBuffer_Release(&view); + PyBuffer_Release(&view); return -1; } EVP_DigestInit(&self->ctx, digest); @@ -346,7 +335,7 @@ self->name = name_obj; Py_INCREF(self->name); - if (data_obj) { + if (view.obj) { if (view.len >= HASHLIB_GIL_MINSIZE) { Py_BEGIN_ALLOW_THREADS EVP_hash(self, view.buf, view.len); @@ -471,14 +460,13 @@ { static char *kwlist[] = {"name", "string", NULL}; PyObject *name_obj = NULL; - PyObject *data_obj = NULL; Py_buffer view = { 0 }; PyObject *ret_obj; char *name; const EVP_MD *digest; - if (!PyArg_ParseTupleAndKeywords(args, kwdict, "O|O:new", kwlist, - &name_obj, &data_obj)) { + if (!PyArg_ParseTupleAndKeywords(args, kwdict, "O|s*:new", kwlist, + &name_obj, &view)) { return NULL; } @@ -487,16 +475,12 @@ return NULL; } - if (data_obj) - GET_BUFFER_VIEW_OR_ERROUT(data_obj, &view, NULL); - digest = EVP_get_digestbyname(name); ret_obj = EVPnew(name_obj, digest, NULL, (unsigned char*)view.buf, - Py_SAFE_DOWNCAST(view.len, Py_ssize_t, unsigned int)); + view.len); + PyBuffer_Release(&view); - if (data_obj) - PyBuffer_Release(&view); return ret_obj; } @@ -511,26 +495,19 @@ static PyObject * \ EVP_new_ ## NAME (PyObject *self, PyObject *args) \ { \ - PyObject *data_obj = NULL; \ Py_buffer view = { 0 }; \ PyObject *ret_obj; \ \ - if (!PyArg_ParseTuple(args, "|O:" #NAME , &data_obj)) { \ + if (!PyArg_ParseTuple(args, "|s*:" #NAME , &view)) { \ return NULL; \ } \ \ - if (data_obj) \ - GET_BUFFER_VIEW_OR_ERROUT(data_obj, &view, NULL); \ - \ - ret_obj = EVPnew( \ - CONST_ ## NAME ## _name_obj, \ - NULL, \ - CONST_new_ ## NAME ## _ctx_p, \ - (unsigned char*)view.buf, \ - Py_SAFE_DOWNCAST(view.len, Py_ssize_t, unsigned int)); \ - \ - if (data_obj) \ - PyBuffer_Release(&view); \ + ret_obj = EVPnew( \ + CONST_ ## NAME ## _name_obj, \ + NULL, \ + CONST_new_ ## NAME ## _ctx_p, \ + (unsigned char*)view.buf, view.len); \ + PyBuffer_Release(&view); \ return ret_obj; \ } Modified: python/trunk/Modules/md5module.c ============================================================================== --- python/trunk/Modules/md5module.c (original) +++ python/trunk/Modules/md5module.c Sat Jan 2 23:28:48 2010 @@ -12,7 +12,6 @@ #include "Python.h" #include "structmember.h" #include "md5.h" -#include "hashlib.h" typedef struct { PyObject_HEAD @@ -51,20 +50,16 @@ static PyObject * md5_update(md5object *self, PyObject *args) { - PyObject *data_obj; Py_buffer view; - if (!PyArg_ParseTuple(args, "O:update", &data_obj)) + if (!PyArg_ParseTuple(args, "s*:update", &view)) return NULL; - GET_BUFFER_VIEW_OR_ERROUT(data_obj, &view, NULL); - md5_append(&self->md5, (unsigned char*)view.buf, Py_SAFE_DOWNCAST(view.len, Py_ssize_t, unsigned int)); PyBuffer_Release(&view); - Py_INCREF(Py_None); - return Py_None; + Py_RETURN_NONE; } PyDoc_STRVAR(update_doc, @@ -266,26 +261,21 @@ MD5_new(PyObject *self, PyObject *args) { md5object *md5p; - PyObject *data_obj = NULL; - Py_buffer view; + Py_buffer view = { 0 }; - if (!PyArg_ParseTuple(args, "|O:new", &data_obj)) + if (!PyArg_ParseTuple(args, "|s*:new", &view)) return NULL; - if (data_obj) - GET_BUFFER_VIEW_OR_ERROUT(data_obj, &view, NULL); - if ((md5p = newmd5object()) == NULL) { - if (data_obj) - PyBuffer_Release(&view); + PyBuffer_Release(&view); return NULL; } - if (data_obj) { + if (view.len > 0) { md5_append(&md5p->md5, (unsigned char*)view.buf, Py_SAFE_DOWNCAST(view.len, Py_ssize_t, unsigned int)); - PyBuffer_Release(&view); } + PyBuffer_Release(&view); return (PyObject *)md5p; } Modified: python/trunk/Modules/sha256module.c ============================================================================== --- python/trunk/Modules/sha256module.c (original) +++ python/trunk/Modules/sha256module.c Sat Jan 2 23:28:48 2010 @@ -18,7 +18,6 @@ #include "Python.h" #include "structmember.h" -#include "hashlib.h" /* Endianness testing and definitions */ @@ -481,19 +480,15 @@ static PyObject * SHA256_update(SHAobject *self, PyObject *args) { - PyObject *obj; Py_buffer buf; - if (!PyArg_ParseTuple(args, "O:update", &obj)) + if (!PyArg_ParseTuple(args, "s*:update", &buf)) return NULL; - GET_BUFFER_VIEW_OR_ERROUT(obj, &buf, NULL); - sha_update(self, buf.buf, buf.len); PyBuffer_Release(&buf); - Py_INCREF(Py_None); - return Py_None; + Py_RETURN_NONE; } static PyMethodDef SHA_methods[] = { @@ -618,20 +613,15 @@ { static char *kwlist[] = {"string", NULL}; SHAobject *new; - PyObject *data_obj = NULL; - Py_buffer buf; + Py_buffer buf = { 0 }; - if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|O:new", kwlist, - &data_obj)) { + if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s*:new", kwlist, + &buf)) { return NULL; } - if (data_obj) - GET_BUFFER_VIEW_OR_ERROUT(data_obj, &buf, NULL); - if ((new = newSHA256object()) == NULL) { - if (data_obj) - PyBuffer_Release(&buf); + PyBuffer_Release(&buf); return NULL; } @@ -639,14 +629,13 @@ if (PyErr_Occurred()) { Py_DECREF(new); - if (data_obj) - PyBuffer_Release(&buf); + PyBuffer_Release(&buf); return NULL; } - if (data_obj) { + if (buf.len > 0) { sha_update(new, buf.buf, buf.len); - PyBuffer_Release(&buf); } + PyBuffer_Release(&buf); return (PyObject *)new; } @@ -659,20 +648,15 @@ { static char *kwlist[] = {"string", NULL}; SHAobject *new; - PyObject *data_obj = NULL; - Py_buffer buf; + Py_buffer buf = { 0 }; - if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|O:new", kwlist, - &data_obj)) { + if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s*:new", kwlist, + &buf)) { return NULL; } - if (data_obj) - GET_BUFFER_VIEW_OR_ERROUT(data_obj, &buf, NULL); - if ((new = newSHA224object()) == NULL) { - if (data_obj) - PyBuffer_Release(&buf); + PyBuffer_Release(&buf); return NULL; } @@ -680,14 +664,13 @@ if (PyErr_Occurred()) { Py_DECREF(new); - if (data_obj) - PyBuffer_Release(&buf); + PyBuffer_Release(&buf); return NULL; } - if (data_obj) { + if (buf.len > 0) { sha_update(new, buf.buf, buf.len); - PyBuffer_Release(&buf); } + PyBuffer_Release(&buf); return (PyObject *)new; } Modified: python/trunk/Modules/sha512module.c ============================================================================== --- python/trunk/Modules/sha512module.c (original) +++ python/trunk/Modules/sha512module.c Sat Jan 2 23:28:48 2010 @@ -18,7 +18,6 @@ #include "Python.h" #include "structmember.h" -#include "hashlib.h" #ifdef PY_LONG_LONG /* If no PY_LONG_LONG, don't compile anything! */ @@ -547,19 +546,15 @@ static PyObject * SHA512_update(SHAobject *self, PyObject *args) { - PyObject *obj; Py_buffer buf; - if (!PyArg_ParseTuple(args, "O:update", &obj)) + if (!PyArg_ParseTuple(args, "s*:update", &buf)) return NULL; - GET_BUFFER_VIEW_OR_ERROUT(obj, &buf, NULL); - sha512_update(self, buf.buf, buf.len); PyBuffer_Release(&buf); - Py_INCREF(Py_None); - return Py_None; + Py_RETURN_NONE; } static PyMethodDef SHA_methods[] = { @@ -684,20 +679,15 @@ { static char *kwlist[] = {"string", NULL}; SHAobject *new; - PyObject *data_obj = NULL; - Py_buffer buf; + Py_buffer buf = { 0 }; - if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|O:new", kwlist, - &data_obj)) { + if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s*:new", kwlist, + &buf)) { return NULL; } - if (data_obj) - GET_BUFFER_VIEW_OR_ERROUT(data_obj, &buf, NULL); - if ((new = newSHA512object()) == NULL) { - if (data_obj) - PyBuffer_Release(&buf); + PyBuffer_Release(&buf); return NULL; } @@ -705,14 +695,13 @@ if (PyErr_Occurred()) { Py_DECREF(new); - if (data_obj) - PyBuffer_Release(&buf); + PyBuffer_Release(&buf); return NULL; } - if (data_obj) { + if (buf.len > 0) { sha512_update(new, buf.buf, buf.len); - PyBuffer_Release(&buf); } + PyBuffer_Release(&buf); return (PyObject *)new; } @@ -725,20 +714,15 @@ { static char *kwlist[] = {"string", NULL}; SHAobject *new; - PyObject *data_obj = NULL; - Py_buffer buf; + Py_buffer buf = { 0 }; - if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|O:new", kwlist, - &data_obj)) { + if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s*:new", kwlist, + &buf)) { return NULL; } - if (data_obj) - GET_BUFFER_VIEW_OR_ERROUT(data_obj, &buf, NULL); - if ((new = newSHA384object()) == NULL) { - if (data_obj) - PyBuffer_Release(&buf); + PyBuffer_Release(&buf); return NULL; } @@ -746,14 +730,13 @@ if (PyErr_Occurred()) { Py_DECREF(new); - if (data_obj) - PyBuffer_Release(&buf); + PyBuffer_Release(&buf); return NULL; } - if (data_obj) { + if (buf.len > 0) { sha512_update(new, buf.buf, buf.len); - PyBuffer_Release(&buf); } + PyBuffer_Release(&buf); return (PyObject *)new; } Modified: python/trunk/Modules/shamodule.c ============================================================================== --- python/trunk/Modules/shamodule.c (original) +++ python/trunk/Modules/shamodule.c Sat Jan 2 23:28:48 2010 @@ -17,7 +17,6 @@ #include "Python.h" #include "structmember.h" -#include "hashlib.h" /* Endianness testing and definitions */ @@ -429,20 +428,16 @@ static PyObject * SHA_update(SHAobject *self, PyObject *args) { - PyObject *data_obj; Py_buffer view; - if (!PyArg_ParseTuple(args, "O:update", &data_obj)) + if (!PyArg_ParseTuple(args, "s*:update", &view)) return NULL; - GET_BUFFER_VIEW_OR_ERROUT(data_obj, &view, NULL); - sha_update(self, (unsigned char*)view.buf, Py_SAFE_DOWNCAST(view.len, Py_ssize_t, unsigned int)); PyBuffer_Release(&view); - Py_INCREF(Py_None); - return Py_None; + Py_RETURN_NONE; } static PyMethodDef SHA_methods[] = { @@ -540,20 +535,15 @@ { static char *kwlist[] = {"string", NULL}; SHAobject *new; - PyObject *data_obj = NULL; - Py_buffer view; + Py_buffer view = { 0 }; - if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|O:new", kwlist, - &data_obj)) { + if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s*:new", kwlist, + &view)) { return NULL; } - if (data_obj) - GET_BUFFER_VIEW_OR_ERROUT(data_obj, &view, NULL); - if ((new = newSHAobject()) == NULL) { - if (data_obj) - PyBuffer_Release(&view); + PyBuffer_Release(&view); return NULL; } @@ -561,15 +551,14 @@ if (PyErr_Occurred()) { Py_DECREF(new); - if (data_obj) - PyBuffer_Release(&view); + PyBuffer_Release(&view); return NULL; } - if (data_obj) { + if (view.len > 0) { sha_update(new, (unsigned char*)view.buf, Py_SAFE_DOWNCAST(view.len, Py_ssize_t, unsigned int)); - PyBuffer_Release(&view); } + PyBuffer_Release(&view); return (PyObject *)new; } From python-checkins at python.org Sat Jan 2 23:32:00 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sat, 02 Jan 2010 22:32:00 -0000 Subject: [Python-checkins] r77253 - python/branches/py3k Message-ID: Author: gregory.p.smith Date: Sat Jan 2 23:32:00 2010 New Revision: 77253 Log: Blocked revisions 77252 via svnmerge ........ r77252 | gregory.p.smith | 2010-01-02 14:28:48 -0800 (Sat, 02 Jan 2010) | 5 lines Issue #3745: Undo the requirement for new buffer API only objects to be passed to hashlib functions in python 2.x. The module now uses the 's*' for argument parsing which auto encodes unicode objects to the system default encoding for us. ........ Modified: python/branches/py3k/ (props changed) From nnorwitz at gmail.com Sat Jan 2 22:03:37 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 2 Jan 2010 16:03:37 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100102210337.GA6956@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': Could not resolve hostname `svn.python.org': Temporary failure in name resolution (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Sat Jan 2 22:06:46 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 2 Jan 2010 16:06:46 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100102210646.GA7016@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': Could not resolve hostname `svn.python.org': Host not found (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Fri Jan 1 14:40:47 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 1 Jan 2010 08:40:47 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100101134047.GA12541@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': Could not resolve hostname `svn.python.org': Host not found (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Sat Jan 2 22:00:12 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 2 Jan 2010 16:00:12 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100102210012.GA6840@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': Could not resolve hostname `svn.python.org': Temporary failure in name resolution (http://svn.python.org) make: *** [checkout] Error 1 From python-checkins at python.org Sat Jan 2 23:42:51 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sat, 02 Jan 2010 22:42:51 -0000 Subject: [Python-checkins] r77254 - python/trunk/Misc/NEWS Message-ID: Author: gregory.p.smith Date: Sat Jan 2 23:42:50 2010 New Revision: 77254 Log: mention the r77252 change Modified: python/trunk/Misc/NEWS Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Jan 2 23:42:50 2010 @@ -96,6 +96,9 @@ - Issue #7457: added a read_pkg_file method to distutils.dist.DistributionMetadata. +- Issue #3745: Undo the 2.7a1 change to have hashlib to reject unicode and + non buffer-api supporting objects as input. That behavior if for 3.x only. + C-API ----- @@ -1825,7 +1828,7 @@ - Issue #3745: Fix hashlib to always reject unicode and non buffer-api supporting objects as input no matter how it was compiled (built in - implementations or external openssl library). + implementations or external openssl library). NOTE: Undone in 2.7a2. - Issue #4397: Fix occasional test_socket failure on OS X. From python-checkins at python.org Sat Jan 2 23:44:17 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sat, 02 Jan 2010 22:44:17 -0000 Subject: [Python-checkins] r77255 - python/branches/py3k Message-ID: Author: gregory.p.smith Date: Sat Jan 2 23:44:17 2010 New Revision: 77255 Log: Blocked revisions 77254 via svnmerge ........ r77254 | gregory.p.smith | 2010-01-02 14:42:50 -0800 (Sat, 02 Jan 2010) | 2 lines mention the r77252 change ........ Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Sat Jan 2 23:55:55 2010 From: python-checkins at python.org (georg.brandl) Date: Sat, 02 Jan 2010 22:55:55 -0000 Subject: [Python-checkins] r77256 - python/trunk/Misc/NEWS Message-ID: Author: georg.brandl Date: Sat Jan 2 23:55:55 2010 New Revision: 77256 Log: Fix typo. Modified: python/trunk/Misc/NEWS Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Jan 2 23:55:55 2010 @@ -97,7 +97,7 @@ distutils.dist.DistributionMetadata. - Issue #3745: Undo the 2.7a1 change to have hashlib to reject unicode and - non buffer-api supporting objects as input. That behavior if for 3.x only. + non buffer-api supporting objects as input. That behavior is for 3.x only. C-API ----- From solipsis at pitrou.net Sun Jan 3 00:52:02 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Sun, 3 Jan 2010 00:52:02 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77250): sum=0 Message-ID: <20100102235202.79D4817714@ns6635.ovh.net> py3k results for svn r77250 (hg cset 12aefb33699e) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/refloggFWS4H', '-x', 'test_httpservers'] From python-checkins at python.org Sun Jan 3 01:19:04 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sun, 03 Jan 2010 00:19:04 -0000 Subject: [Python-checkins] r77257 - python/trunk/Lib/test/test_hashlib.py Message-ID: Author: gregory.p.smith Date: Sun Jan 3 01:19:04 2010 New Revision: 77257 Log: Import all implementations of the hash algorithms (OpenSSL & builtin) and run the test suite across all that are available. Warns about extension modules that could not be imported when python was compiled with Py_DEBUG. That warning could be made fatal but I didn't want to do that initially as I suspect non setup.py based build processes (windows, any others?) won't compile them all conditionally based on the Py_DEBUG setting today. Modified: python/trunk/Lib/test/test_hashlib.py Modified: python/trunk/Lib/test/test_hashlib.py ============================================================================== --- python/trunk/Lib/test/test_hashlib.py (original) +++ python/trunk/Lib/test/test_hashlib.py Sun Jan 3 01:19:04 2010 @@ -8,14 +8,20 @@ import hashlib import StringIO +import sys try: import threading except ImportError: threading = None import unittest +import warnings from test import test_support from test.test_support import _4G, precisionbigmemtest +# Were we compiled --with-pydebug or with #define Py_DEBUG? +COMPILED_WITH_PYDEBUG = hasattr(sys, 'gettotalrefcount') + + def hexstr(s): import string h = string.hexdigits @@ -31,6 +37,63 @@ 'sha224', 'SHA224', 'sha256', 'SHA256', 'sha384', 'SHA384', 'sha512', 'SHA512' ) + _warn_on_extension_import = COMPILED_WITH_PYDEBUG + + def _conditional_import_module(self, module_name): + """Import a module and return a reference to it or None on failure.""" + try: + exec('import '+module_name) + except ImportError, error: + if self._warn_on_extension_import: + warnings.warn('Did a C extension fail to compile? %s' % error) + return locals().get(module_name) + + def __init__(self, *args, **kwargs): + algorithms = set() + for algorithm in self.supported_hash_names: + algorithms.add(algorithm.lower()) + self.constructors_to_test = {} + for algorithm in algorithms: + self.constructors_to_test[algorithm] = set() + + # For each algorithm, test the direct constructor and the use + # of hashlib.new given the algorithm name. + for algorithm, constructors in self.constructors_to_test.items(): + constructors.add(getattr(hashlib, algorithm)) + def _test_algorithm_via_hashlib_new(data=None, _alg=algorithm): + if data is None: + return hashlib.new(_alg) + return hashlib.new(_alg, data) + constructors.add(_test_algorithm_via_hashlib_new) + + _hashlib = self._conditional_import_module('_hashlib') + if _hashlib: + # These two algorithms should always be present when this module + # is compiled. If not, something was compiled wrong. + assert hasattr(_hashlib, 'openssl_md5') + assert hasattr(_hashlib, 'openssl_sha1') + for algorithm, constructors in self.constructors_to_test.items(): + constructor = getattr(_hashlib, 'openssl_'+algorithm, None) + if constructor: + constructors.add(constructor) + + _md5 = self._conditional_import_module('_md5') + if _md5: + self.constructors_to_test['md5'].add(_md5.new) + _sha = self._conditional_import_module('_sha') + if _sha: + self.constructors_to_test['sha1'].add(_sha.new) + _sha256 = self._conditional_import_module('_sha256') + if _sha256: + self.constructors_to_test['sha224'].add(_sha256.sha224) + self.constructors_to_test['sha256'].add(_sha256.sha256) + _sha512 = self._conditional_import_module('_sha512') + if _sha512: + self.constructors_to_test['sha384'].add(_sha512.sha384) + self.constructors_to_test['sha512'].add(_sha512.sha512) + + super(HashLibTestCase, self).__init__(*args, **kwargs) + def test_unknown_hash(self): try: hashlib.new('spam spam spam spam spam') @@ -64,20 +127,22 @@ self.assertEqual(m1.digest(), m3.digest(), name+' new problem.') def check(self, name, data, digest): - # test the direct constructors - computed = getattr(hashlib, name)(data).hexdigest() - self.assertEqual(computed, digest) - # test the general new() interface - computed = hashlib.new(name, data).hexdigest() - self.assertEqual(computed, digest) + constructors = self.constructors_to_test[name] + # 2 is for hashlib.name(...) and hashlib.new(name, ...) + self.assertGreaterEqual(len(constructors), 2) + for hash_object_constructor in constructors: + computed = hash_object_constructor(data).hexdigest() + self.assertEqual( + computed, digest, + "Hash algorithm %s constructed using %s returned hexdigest" + " %r for %d byte input data that should have hashed to %r." + % (name, hash_object_constructor, + computed, len(data), digest)) def check_unicode(self, algorithm_name): # Unicode objects are not allowed as input. expected = hashlib.new(algorithm_name, str(u'spam')).hexdigest() - self.assertEqual(getattr(hashlib, algorithm_name)(u'spam').hexdigest(), - expected) - self.assertEqual(hashlib.new(algorithm_name, u'spam').hexdigest(), - expected) + self.check(algorithm_name, u'spam', expected) def test_unicode(self): # In python 2.x unicode is auto-encoded to the system default encoding From python-checkins at python.org Sun Jan 3 01:29:15 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sun, 03 Jan 2010 00:29:15 -0000 Subject: [Python-checkins] r77258 - in python/branches/py3k: Lib/test/test_hashlib.py Message-ID: Author: gregory.p.smith Date: Sun Jan 3 01:29:15 2010 New Revision: 77258 Log: Merged revisions 77257 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77257 | gregory.p.smith | 2010-01-02 16:19:04 -0800 (Sat, 02 Jan 2010) | 8 lines Import all implementations of the hash algorithms (OpenSSL & builtin) and run the test suite across all that are available. Warns about extension modules that could not be imported when python was compiled with Py_DEBUG. That warning could be made fatal but I didn't want to do that initially as I suspect non setup.py based build processes (windows, any others?) won't compile them all conditionally based on the Py_DEBUG setting today. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_hashlib.py Modified: python/branches/py3k/Lib/test/test_hashlib.py ============================================================================== --- python/branches/py3k/Lib/test/test_hashlib.py (original) +++ python/branches/py3k/Lib/test/test_hashlib.py Sun Jan 3 01:29:15 2010 @@ -8,14 +8,20 @@ import hashlib from io import StringIO +import sys try: import threading except ImportError: threading = None import unittest +import warnings from test import support from test.support import _4G, precisionbigmemtest +# Were we compiled --with-pydebug or with #define Py_DEBUG? +COMPILED_WITH_PYDEBUG = hasattr(sys, 'gettotalrefcount') + + def hexstr(s): assert isinstance(s, bytes), repr(s) h = "0123456789abcdef" @@ -30,6 +36,63 @@ 'sha224', 'SHA224', 'sha256', 'SHA256', 'sha384', 'SHA384', 'sha512', 'SHA512' ) + _warn_on_extension_import = COMPILED_WITH_PYDEBUG + + def _conditional_import_module(self, module_name): + """Import a module and return a reference to it or None on failure.""" + try: + exec('import '+module_name) + except ImportError as error: + if self._warn_on_extension_import: + warnings.warn('Did a C extension fail to compile? %s' % error) + return locals().get(module_name) + + def __init__(self, *args, **kwargs): + algorithms = set() + for algorithm in self.supported_hash_names: + algorithms.add(algorithm.lower()) + self.constructors_to_test = {} + for algorithm in algorithms: + self.constructors_to_test[algorithm] = set() + + # For each algorithm, test the direct constructor and the use + # of hashlib.new given the algorithm name. + for algorithm, constructors in self.constructors_to_test.items(): + constructors.add(getattr(hashlib, algorithm)) + def _test_algorithm_via_hashlib_new(data=None, _alg=algorithm): + if data is None: + return hashlib.new(_alg) + return hashlib.new(_alg, data) + constructors.add(_test_algorithm_via_hashlib_new) + + _hashlib = self._conditional_import_module('_hashlib') + if _hashlib: + # These two algorithms should always be present when this module + # is compiled. If not, something was compiled wrong. + assert hasattr(_hashlib, 'openssl_md5') + assert hasattr(_hashlib, 'openssl_sha1') + for algorithm, constructors in self.constructors_to_test.items(): + constructor = getattr(_hashlib, 'openssl_'+algorithm, None) + if constructor: + constructors.add(constructor) + + _md5 = self._conditional_import_module('_md5') + if _md5: + self.constructors_to_test['md5'].add(_md5.new) + _sha = self._conditional_import_module('_sha') + if _sha: + self.constructors_to_test['sha1'].add(_sha.new) + _sha256 = self._conditional_import_module('_sha256') + if _sha256: + self.constructors_to_test['sha224'].add(_sha256.sha224) + self.constructors_to_test['sha256'].add(_sha256.sha256) + _sha512 = self._conditional_import_module('_sha512') + if _sha512: + self.constructors_to_test['sha384'].add(_sha512.sha384) + self.constructors_to_test['sha512'].add(_sha512.sha512) + + super(HashLibTestCase, self).__init__(*args, **kwargs) + def test_unknown_hash(self): try: hashlib.new('spam spam spam spam spam') @@ -61,17 +124,23 @@ self.assertEqual(m1.digest(), m2.digest()) def check(self, name, data, digest): - # test the direct constructors - computed = getattr(hashlib, name)(data).hexdigest() - self.assertEqual(computed, digest) - # test the general new() interface - computed = hashlib.new(name, data).hexdigest() - self.assertEqual(computed, digest) + constructors = self.constructors_to_test[name] + # 2 is for hashlib.name(...) and hashlib.new(name, ...) + self.assertGreaterEqual(len(constructors), 2) + for hash_object_constructor in constructors: + computed = hash_object_constructor(data).hexdigest() + self.assertEqual( + computed, digest, + "Hash algorithm %s constructed using %s returned hexdigest" + " %r for %d byte input data that should have hashed to %r." + % (name, hash_object_constructor, + computed, len(data), digest)) def check_no_unicode(self, algorithm_name): # Unicode objects are not allowed as input. - self.assertRaises(TypeError, getattr(hashlib, algorithm_name), 'spam') - self.assertRaises(TypeError, hashlib.new, algorithm_name, 'spam') + constructors = self.constructors_to_test[algorithm_name] + for hash_object_constructor in constructors: + self.assertRaises(TypeError, hash_object_constructor, 'spam') def test_no_unicode(self): self.check_no_unicode('md5') From python-checkins at python.org Sun Jan 3 01:38:10 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sun, 03 Jan 2010 00:38:10 -0000 Subject: [Python-checkins] r77259 - in python/branches/py3k: Lib/test/test_hashlib.py setup.py Message-ID: Author: gregory.p.smith Date: Sun Jan 3 01:38:10 2010 New Revision: 77259 Log: Also fixes test_hashlib for the different extension module names in py3k. Merged revisions 77251 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77251 | gregory.p.smith | 2010-01-02 14:25:29 -0800 (Sat, 02 Jan 2010) | 6 lines Always compile the all versions of the hashlib algorithm modules when Python was compiled with Py_DEBUG defined. Otherwise the builtins are not compiled by default for many developers due to OpenSSL being present, making it easier for bugs to slip by. A future commit will add test code compare the behaviors of all implementations when they are all available. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_hashlib.py python/branches/py3k/setup.py Modified: python/branches/py3k/Lib/test/test_hashlib.py ============================================================================== --- python/branches/py3k/Lib/test/test_hashlib.py (original) +++ python/branches/py3k/Lib/test/test_hashlib.py Sun Jan 3 01:38:10 2010 @@ -78,10 +78,10 @@ _md5 = self._conditional_import_module('_md5') if _md5: - self.constructors_to_test['md5'].add(_md5.new) - _sha = self._conditional_import_module('_sha') - if _sha: - self.constructors_to_test['sha1'].add(_sha.new) + self.constructors_to_test['md5'].add(_md5.md5) + _sha1 = self._conditional_import_module('_sha1') + if _sha1: + self.constructors_to_test['sha1'].add(_sha1.sha1) _sha256 = self._conditional_import_module('_sha256') if _sha256: self.constructors_to_test['sha224'].add(_sha256.sha224) Modified: python/branches/py3k/setup.py ============================================================================== --- python/branches/py3k/setup.py (original) +++ python/branches/py3k/setup.py Sun Jan 3 01:38:10 2010 @@ -15,6 +15,9 @@ from distutils.command.install import install from distutils.command.install_lib import install_lib +# Were we compiled --with-pydebug or with #define Py_DEBUG? +COMPILED_WITH_PYDEBUG = hasattr(sys, 'gettotalrefcount') + # This global variable is used to hold the list of modules to be disabled. disabled_module_list = [] @@ -593,9 +596,13 @@ break #print('openssl_ver = 0x%08x' % openssl_ver) + min_openssl_ver = 0x00907000 + have_any_openssl = ssl_incs is not None and ssl_libs is not None + have_usable_openssl = (have_any_openssl and + openssl_ver >= min_openssl_ver) - if ssl_incs is not None and ssl_libs is not None: - if openssl_ver >= 0x00907000: + if have_any_openssl: + if have_usable_openssl: # The _hashlib module wraps optimized implementations # of hash functions from the OpenSSL library. exts.append( Extension('_hashlib', ['_hashopenssl.c'], @@ -606,15 +613,14 @@ print("warning: openssl 0x%08x is too old for _hashlib" % openssl_ver) missing.append('_hashlib') - else: - missing.append('_hashlib') - if openssl_ver < 0x00908000: + min_sha2_openssl_ver = 0x00908000 + if COMPILED_WITH_PYDEBUG or openssl_ver < min_sha2_openssl_ver: # OpenSSL doesn't do these until 0.9.8 so we'll bring our own hash exts.append( Extension('_sha256', ['sha256module.c']) ) exts.append( Extension('_sha512', ['sha512module.c']) ) - if openssl_ver < 0x00907000: + if COMPILED_WITH_PYDEBUG or openssl_ver < min_openssl_ver: # no openssl at all, use our own md5 and sha1 exts.append( Extension('_md5', ['md5module.c']) ) exts.append( Extension('_sha1', ['sha1module.c']) ) From python-checkins at python.org Sun Jan 3 01:43:02 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sun, 03 Jan 2010 00:43:02 -0000 Subject: [Python-checkins] r77260 - python/trunk/setup.py Message-ID: Author: gregory.p.smith Date: Sun Jan 3 01:43:02 2010 New Revision: 77260 Log: make setup.py similar to py3k's when reporting on _hashlib as missing or not. Modified: python/trunk/setup.py Modified: python/trunk/setup.py ============================================================================== --- python/trunk/setup.py (original) +++ python/trunk/setup.py Sun Jan 3 01:43:02 2010 @@ -657,19 +657,22 @@ #print 'openssl_ver = 0x%08x' % openssl_ver min_openssl_ver = 0x00907000 - have_usable_openssl = (ssl_incs is not None and - ssl_libs is not None and + have_any_openssl = ssl_incs is not None and ssl_libs is not None + have_usable_openssl = (have_any_openssl and openssl_ver >= min_openssl_ver) - if have_usable_openssl: - # The _hashlib module wraps optimized implementations - # of hash functions from the OpenSSL library. - exts.append( Extension('_hashlib', ['_hashopenssl.c'], - include_dirs = ssl_incs, - library_dirs = ssl_libs, - libraries = ['ssl', 'crypto']) ) - # these aren't strictly missing since they are unneeded. - #missing.extend(['_sha', '_md5']) + if have_any_openssl: + if have_usable_openssl: + # The _hashlib module wraps optimized implementations + # of hash functions from the OpenSSL library. + exts.append( Extension('_hashlib', ['_hashopenssl.c'], + include_dirs = ssl_incs, + library_dirs = ssl_libs, + libraries = ['ssl', 'crypto']) ) + else: + print ("warning: openssl 0x%08x is too old for _hashlib" % + openssl_ver) + missing.append('_hashlib') if COMPILED_WITH_PYDEBUG or not have_usable_openssl: # The _sha module implements the SHA1 hash algorithm. exts.append( Extension('_sha', ['shamodule.c']) ) @@ -679,7 +682,6 @@ exts.append( Extension('_md5', sources = ['md5module.c', 'md5.c'], depends = ['md5.h']) ) - missing.append('_hashlib') min_sha2_openssl_ver = 0x00908000 if COMPILED_WITH_PYDEBUG or openssl_ver < min_sha2_openssl_ver: From python-checkins at python.org Sun Jan 3 01:44:10 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sun, 03 Jan 2010 00:44:10 -0000 Subject: [Python-checkins] r77261 - python/branches/py3k/setup.py Message-ID: Author: gregory.p.smith Date: Sun Jan 3 01:44:10 2010 New Revision: 77261 Log: small logic cleanup, avoid duplicate openssl_ver check. Modified: python/branches/py3k/setup.py Modified: python/branches/py3k/setup.py ============================================================================== --- python/branches/py3k/setup.py (original) +++ python/branches/py3k/setup.py Sun Jan 3 01:44:10 2010 @@ -620,7 +620,7 @@ exts.append( Extension('_sha256', ['sha256module.c']) ) exts.append( Extension('_sha512', ['sha512module.c']) ) - if COMPILED_WITH_PYDEBUG or openssl_ver < min_openssl_ver: + if COMPILED_WITH_PYDEBUG or not have_usable_openssl: # no openssl at all, use our own md5 and sha1 exts.append( Extension('_md5', ['md5module.c']) ) exts.append( Extension('_sha1', ['sha1module.c']) ) From python-checkins at python.org Sun Jan 3 02:15:21 2010 From: python-checkins at python.org (andrew.kuchling) Date: Sun, 03 Jan 2010 01:15:21 -0000 Subject: [Python-checkins] r77262 - python/trunk/Doc/whatsnew/2.7.rst Message-ID: Author: andrew.kuchling Date: Sun Jan 3 02:15:21 2010 New Revision: 77262 Log: Add a few items Modified: python/trunk/Doc/whatsnew/2.7.rst Modified: python/trunk/Doc/whatsnew/2.7.rst ============================================================================== --- python/trunk/Doc/whatsnew/2.7.rst (original) +++ python/trunk/Doc/whatsnew/2.7.rst Sun Jan 3 02:15:21 2010 @@ -453,6 +453,16 @@ faster bytecode. (Patch by Antoine Pitrou, back-ported to 2.7 by Jeffrey Yasskin; :issue:`4715`.) +* Converting an integer or long integer to a decimal string was made + faster by special-casing base 10 instead of using a generalized + conversion function that supports arbitrary bases. + (Patch by Gawain Bolton; :issue:`6713`.) + +* The :meth:`rindex`, :meth:`rpartition`, and :meth:`rsplit` methods + of string objects now uses a fast reverse-search algorithm instead of + a character-by-character scan. This is often faster by a factor of 10. + (Added by Florent Xicluna; :issue:`7462`.) + * The :mod:`pickle` and :mod:`cPickle` modules now automatically intern the strings used for attribute names, reducing memory usage of the objects resulting from unpickling. (Contributed by Jake @@ -462,11 +472,6 @@ nearly halving the time required to pickle them. (Contributed by Collin Winter; :issue:`5670`.) -* Converting an integer or long integer to a decimal string was made - faster by special-casing base 10 instead of using a generalized - conversion function that supports arbitrary bases. - (Patch by Gawain Bolton; :issue:`6713`.) - .. ====================================================================== New and Improved Modules @@ -638,14 +643,6 @@ recorded in a gzipped file by providing an optional timestamp to the constructor. (Contributed by Jacques Frechet; :issue:`4272`.) -* The :mod:`hashlib` module was inconsistent about accepting - input as a Unicode object or an object that doesn't support - the buffer protocol. The behavior was different depending on - whether :mod:`hashlib` was using an external OpenSSL library - or its built-in implementations. Python 2.7 makes the - behavior consistent, always rejecting such objects by raising a - :exc:`TypeError`. (Fixed by Gregory P. Smith; :issue:`3745`.) - * The default :class:`HTTPResponse` class used by the :mod:`httplib` module now supports buffering, resulting in much faster reading of HTTP responses. (Contributed by Kristjan Valur Jonsson; :issue:`4879`.) @@ -1112,6 +1109,11 @@ Valgrind will therefore be better at detecting memory leaks and overruns. (Contributed by James Henstridge; :issue:`2422`.) +* New configure option: you can now supply no arguments to + :option:`--with-dbmliborder=` in order to build none of the various + DBM modules. (Added by Arfrever Frehtes Taifersar Arahesis; + :issue:`6491`.) + * The :program:`configure` script now checks for floating-point rounding bugs on certain 32-bit Intel chips and defines a :cmacro:`X87_DOUBLE_ROUNDING` preprocessor definition. No code currently uses this definition, @@ -1215,10 +1217,15 @@ For C extensions: +* C extensions that use integer format codes with the ``PyArg_Parse*`` + family of functions will now raise a :exc:`TypeError` exception + instead of triggering a :exc:`DeprecationWarning` (:issue:`5080`). + * Use the new :cfunc:`PyOS_string_to_double` function instead of the old :cfunc:`PyOS_ascii_strtod` and :cfunc:`PyOS_ascii_atof` functions, which are now deprecated. + .. ====================================================================== From python-checkins at python.org Sun Jan 3 02:29:44 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sun, 03 Jan 2010 01:29:44 -0000 Subject: [Python-checkins] r77263 - in python/trunk: Doc/library/socket.rst Lib/socket.py Lib/test/test_socket.py Misc/NEWS Message-ID: Author: gregory.p.smith Date: Sun Jan 3 02:29:44 2010 New Revision: 77263 Log: Adds an optional source_address parameter to socket.create_connection(). For use by issue3972. Modified: python/trunk/Doc/library/socket.rst python/trunk/Lib/socket.py python/trunk/Lib/test/test_socket.py python/trunk/Misc/NEWS Modified: python/trunk/Doc/library/socket.rst ============================================================================== --- python/trunk/Doc/library/socket.rst (original) +++ python/trunk/Doc/library/socket.rst Sun Jan 3 02:29:44 2010 @@ -205,7 +205,7 @@ .. versionadded:: 2.3 -.. function:: create_connection(address[, timeout]) +.. function:: create_connection(address[, timeout[, source_address]]) Convenience function. Connect to *address* (a 2-tuple ``(host, port)``), and return the socket object. Passing the optional *timeout* parameter will @@ -215,6 +215,12 @@ .. versionadded:: 2.6 + If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the + socket to bind to as its source address before connecting. If host or port + are '' or 0 respectively the OS default behavior will be used. + + .. versionadded:: 2.7 + .. function:: getaddrinfo(host, port[, family[, socktype[, proto[, flags]]]]) Modified: python/trunk/Lib/socket.py ============================================================================== --- python/trunk/Lib/socket.py (original) +++ python/trunk/Lib/socket.py Sun Jan 3 02:29:44 2010 @@ -24,7 +24,8 @@ ssl() -- secure socket layer support (only available if configured) socket.getdefaulttimeout() -- get the default timeout value socket.setdefaulttimeout() -- set the default timeout value -create_connection() -- connects to an address, with an optional timeout +create_connection() -- connects to an address, with an optional timeout and + optional source address. [*] not available on all platforms! @@ -531,7 +532,8 @@ _GLOBAL_DEFAULT_TIMEOUT = object() -def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT): +def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT, + source_address=None): """Connect to *address* and return the socket object. Convenience function. Connect to *address* (a 2-tuple ``(host, @@ -539,7 +541,9 @@ *timeout* parameter will set the timeout on the socket instance before attempting to connect. If no *timeout* is supplied, the global default timeout setting returned by :func:`getdefaulttimeout` - is used. + is used. If *source_address* is set it must be a tuple of (host, port) + for the socket to bind as a source address before making the connection. + An host of '' or port 0 tells the OS to use the default. """ msg = "getaddrinfo returns an empty list" @@ -551,6 +555,8 @@ sock = socket(af, socktype, proto) if timeout is not _GLOBAL_DEFAULT_TIMEOUT: sock.settimeout(timeout) + if source_address: + sock.bind(source_address) sock.connect(sa) return sock Modified: python/trunk/Lib/test/test_socket.py ============================================================================== --- python/trunk/Lib/test/test_socket.py (original) +++ python/trunk/Lib/test/test_socket.py Sun Jan 3 02:29:44 2010 @@ -995,7 +995,7 @@ ThreadableTest.__init__(self) def clientSetUp(self): - pass + self.source_port = test_support.find_unused_port() def clientTearDown(self): self.cli.close() @@ -1010,6 +1010,19 @@ self.cli = socket.create_connection((HOST, self.port), timeout=30) self.assertEqual(self.cli.family, 2) + testSourcePort = _justAccept + def _testSourcePort(self): + self.cli = socket.create_connection((HOST, self.port), timeout=30, + source_address=('', self.source_port)) + self.assertEqual(self.cli.getsockname()[1], self.source_port) + + testSourceAddress = _justAccept + def _testSourceAddress(self): + self.cli = socket.create_connection( + (HOST, self.port), 30, ('127.0.0.1', self.source_port)) + self.assertEqual(self.cli.getsockname(), + ('127.0.0.1', self.source_port)) + testTimeoutDefault = _justAccept def _testTimeoutDefault(self): # passing no explicit timeout uses socket's global default Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Jan 3 02:29:44 2010 @@ -62,6 +62,8 @@ Library ------- +- socket.create_connection now accepts an optional source_address parameter. + - Issue #5511: now zipfile.ZipFile can be used as a context manager. Initial patch by Brian Curtin. From nnorwitz at gmail.com Sun Jan 3 02:40:55 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 2 Jan 2010 20:40:55 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100103014055.GA8938@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils Checking out Sphinx... A tools/sphinx/jinja2glue.py A tools/sphinx/quickstart.py A tools/sphinx/theming.py A tools/sphinx/pycode A tools/sphinx/pycode/nodes.py A tools/sphinx/pycode/Grammar.txt A tools/sphinx/pycode/__init__.py A tools/sphinx/pycode/pgen2 A tools/sphinx/pycode/pgen2/tokenize.py A tools/sphinx/pycode/pgen2/pgen.py A tools/sphinx/pycode/pgen2/parse.py A tools/sphinx/pycode/pgen2/driver.py A tools/sphinx/pycode/pgen2/__init__.py A tools/sphinx/pycode/pgen2/literals.py A tools/sphinx/pycode/pgen2/token.py A tools/sphinx/pycode/pgen2/grammar.py A tools/sphinx/themes A tools/sphinx/themes/sphinxdoc A tools/sphinx/themes/sphinxdoc/layout.html A tools/sphinx/themes/sphinxdoc/theme.conf A tools/sphinx/themes/sphinxdoc/static A tools/sphinx/themes/sphinxdoc/static/contents.png A tools/sphinx/themes/sphinxdoc/static/navigation.png A tools/sphinx/themes/sphinxdoc/static/sphinxdoc.css A tools/sphinx/themes/basic A tools/sphinx/themes/basic/page.html A tools/sphinx/themes/basic/layout.html A tools/sphinx/themes/basic/genindex-single.html A tools/sphinx/themes/basic/genindex.html A tools/sphinx/themes/basic/opensearch.xml A tools/sphinx/themes/basic/theme.conf A tools/sphinx/themes/basic/static A tools/sphinx/themes/basic/static/doctools.js A tools/sphinx/themes/basic/static/searchtools.js A tools/sphinx/themes/basic/static/file.png A tools/sphinx/themes/basic/static/plus.png A tools/sphinx/themes/basic/static/basic.css A tools/sphinx/themes/basic/static/jquery.js A tools/sphinx/themes/basic/static/minus.png A tools/sphinx/themes/basic/changes A tools/sphinx/themes/basic/changes/versionchanges.html A tools/sphinx/themes/basic/changes/frameset.html A tools/sphinx/themes/basic/changes/rstsource.html A tools/sphinx/themes/basic/search.html A tools/sphinx/themes/basic/defindex.html A tools/sphinx/themes/basic/modindex.html A tools/sphinx/themes/basic/genindex-split.html A tools/sphinx/themes/default A tools/sphinx/themes/default/theme.conf A tools/sphinx/themes/default/static A tools/sphinx/themes/default/static/default.css_t A tools/sphinx/themes/traditional A tools/sphinx/themes/traditional/theme.conf A tools/sphinx/themes/traditional/static A tools/sphinx/themes/traditional/static/traditional.css A tools/sphinx/setup_command.py A tools/sphinx/__init__.py A tools/sphinx/application.py A tools/sphinx/environment.py A tools/sphinx/search.py A tools/sphinx/config.py A tools/sphinx/highlighting.py A tools/sphinx/writers A tools/sphinx/writers/latex.py A tools/sphinx/writers/__init__.py A tools/sphinx/writers/html.py A tools/sphinx/writers/text.py A tools/sphinx/locale A tools/sphinx/locale/__init__.py A tools/sphinx/locale/ru A tools/sphinx/locale/ru/LC_MESSAGES A tools/sphinx/locale/ru/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/ru/LC_MESSAGES/sphinx.js A tools/sphinx/locale/ru/LC_MESSAGES/sphinx.po A tools/sphinx/locale/de A tools/sphinx/locale/de/LC_MESSAGES A tools/sphinx/locale/de/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/de/LC_MESSAGES/sphinx.js A tools/sphinx/locale/de/LC_MESSAGES/sphinx.po A tools/sphinx/locale/ja A tools/sphinx/locale/ja/LC_MESSAGES A tools/sphinx/locale/ja/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/ja/LC_MESSAGES/sphinx.js A tools/sphinx/locale/ja/LC_MESSAGES/sphinx.po A tools/sphinx/locale/zh_TW A tools/sphinx/locale/zh_TW/LC_MESSAGES A tools/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js A tools/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po A tools/sphinx/locale/fi A tools/sphinx/locale/fi/LC_MESSAGES A tools/sphinx/locale/fi/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/fi/LC_MESSAGES/sphinx.js A tools/sphinx/locale/fi/LC_MESSAGES/sphinx.po A tools/sphinx/locale/uk_UA A tools/sphinx/locale/uk_UA/LC_MESSAGES A tools/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js A tools/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po A tools/sphinx/locale/cs A tools/sphinx/locale/cs/LC_MESSAGES A tools/sphinx/locale/cs/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/cs/LC_MESSAGES/sphinx.js A tools/sphinx/locale/cs/LC_MESSAGES/sphinx.po A tools/sphinx/locale/pt_BR A tools/sphinx/locale/pt_BR/LC_MESSAGES A tools/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js A tools/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po A tools/sphinx/locale/es A tools/sphinx/locale/es/LC_MESSAGES A tools/sphinx/locale/es/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/es/LC_MESSAGES/sphinx.js A tools/sphinx/locale/es/LC_MESSAGES/sphinx.po A tools/sphinx/locale/fr A tools/sphinx/locale/fr/LC_MESSAGES A tools/sphinx/locale/fr/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/fr/LC_MESSAGES/sphinx.js A tools/sphinx/locale/fr/LC_MESSAGES/sphinx.po A tools/sphinx/locale/nl A tools/sphinx/locale/nl/LC_MESSAGES A tools/sphinx/locale/nl/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/nl/LC_MESSAGES/sphinx.js A tools/sphinx/locale/nl/LC_MESSAGES/sphinx.po A tools/sphinx/locale/sphinx.pot A tools/sphinx/locale/pl A tools/sphinx/locale/pl/LC_MESSAGES A tools/sphinx/locale/pl/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/pl/LC_MESSAGES/sphinx.js A tools/sphinx/locale/pl/LC_MESSAGES/sphinx.po A tools/sphinx/locale/it A tools/sphinx/locale/it/LC_MESSAGES A tools/sphinx/locale/it/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/it/LC_MESSAGES/sphinx.js A tools/sphinx/locale/it/LC_MESSAGES/sphinx.po A tools/sphinx/locale/sl A tools/sphinx/locale/sl/LC_MESSAGES A tools/sphinx/locale/sl/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/sl/LC_MESSAGES/sphinx.js A tools/sphinx/locale/sl/LC_MESSAGES/sphinx.po A tools/sphinx/ext A tools/sphinx/ext/graphviz.py A tools/sphinx/ext/coverage.py A tools/sphinx/ext/intersphinx.py A tools/sphinx/ext/inheritance_diagram.py A tools/sphinx/ext/autodoc.py A tools/sphinx/ext/pngmath.py A tools/sphinx/ext/__init__.py A tools/sphinx/ext/autosummary A tools/sphinx/ext/autosummary/generate.py A tools/sphinx/ext/autosummary/__init__.py A tools/sphinx/ext/autosummary/templates A tools/sphinx/ext/autosummary/templates/module A tools/sphinx/ext/refcounting.py A tools/sphinx/ext/ifconfig.py A tools/sphinx/ext/mathbase.py A tools/sphinx/ext/doctest.py A tools/sphinx/ext/todo.py A tools/sphinx/ext/jsmath.py A tools/sphinx/directives A tools/sphinx/directives/code.py A tools/sphinx/directives/desc.py A tools/sphinx/directives/__init__.py A tools/sphinx/directives/other.py A tools/sphinx/cmdline.py A tools/sphinx/errors.py A tools/sphinx/texinputs A tools/sphinx/texinputs/python.ist A tools/sphinx/texinputs/howto.cls A tools/sphinx/texinputs/tabulary.sty A tools/sphinx/texinputs/sphinx.sty A tools/sphinx/texinputs/fncychap.sty A tools/sphinx/texinputs/Makefile A tools/sphinx/texinputs/manual.cls A tools/sphinx/addnodes.py A tools/sphinx/builders A tools/sphinx/builders/changes.py A tools/sphinx/builders/linkcheck.py A tools/sphinx/builders/htmlhelp.py A tools/sphinx/builders/latex.py A tools/sphinx/builders/qthelp.py A tools/sphinx/builders/__init__.py A tools/sphinx/builders/html.py A tools/sphinx/builders/text.py A tools/sphinx/roles.py A tools/sphinx/builder.py A tools/sphinx/util A tools/sphinx/util/pycompat.py A tools/sphinx/util/stemmer.py A tools/sphinx/util/tags.py A tools/sphinx/util/__init__.py A tools/sphinx/util/docstrings.py A tools/sphinx/util/texescape.py A tools/sphinx/util/console.py A tools/sphinx/util/jsdump.py A tools/sphinx/util/compat.py A tools/sphinx/util/png.py A tools/sphinx/util/inspect.py A tools/sphinx/util/smartypants.py Checked out revision 77263. Checking out Docutils... A tools/docutils/core.py A tools/docutils/nodes.py A tools/docutils/parsers A tools/docutils/parsers/null.py A tools/docutils/parsers/__init__.py A tools/docutils/parsers/rst A tools/docutils/parsers/rst/directives A tools/docutils/parsers/rst/directives/parts.py A tools/docutils/parsers/rst/directives/tables.py A tools/docutils/parsers/rst/directives/misc.py A tools/docutils/parsers/rst/directives/body.py A tools/docutils/parsers/rst/directives/__init__.py A tools/docutils/parsers/rst/directives/references.py A tools/docutils/parsers/rst/directives/admonitions.py A tools/docutils/parsers/rst/directives/html.py A tools/docutils/parsers/rst/directives/images.py A tools/docutils/parsers/rst/include A tools/docutils/parsers/rst/include/isopub.txt A tools/docutils/parsers/rst/include/isobox.txt A tools/docutils/parsers/rst/include/isogrk4-wide.txt A tools/docutils/parsers/rst/include/isonum.txt A tools/docutils/parsers/rst/include/isomfrk.txt A tools/docutils/parsers/rst/include/xhtml1-lat1.txt A tools/docutils/parsers/rst/include/isomopf.txt A tools/docutils/parsers/rst/include/mmlextra-wide.txt A tools/docutils/parsers/rst/include/xhtml1-symbol.txt A tools/docutils/parsers/rst/include/mmlextra.txt A tools/docutils/parsers/rst/include/isocyr1.txt A tools/docutils/parsers/rst/include/isocyr2.txt A tools/docutils/parsers/rst/include/xhtml1-special.txt A tools/docutils/parsers/rst/include/isoamsa.txt A tools/docutils/parsers/rst/include/isoamsb.txt A tools/docutils/parsers/rst/include/isoamsc.txt A tools/docutils/parsers/rst/include/mmlalias.txt A tools/docutils/parsers/rst/include/isomfrk-wide.txt A tools/docutils/parsers/rst/include/isomopf-wide.txt A tools/docutils/parsers/rst/include/isomscr-wide.txt A tools/docutils/parsers/rst/include/isodia.txt A tools/docutils/parsers/rst/include/isoamsn.txt A tools/docutils/parsers/rst/include/isoamso.txt A tools/docutils/parsers/rst/include/isolat1.txt A tools/docutils/parsers/rst/include/isoamsr.txt A tools/docutils/parsers/rst/include/isolat2.txt A tools/docutils/parsers/rst/include/isogrk1.txt A tools/docutils/parsers/rst/include/isomscr.txt A tools/docutils/parsers/rst/include/isogrk2.txt A tools/docutils/parsers/rst/include/isogrk3.txt A tools/docutils/parsers/rst/include/isogrk4.txt A tools/docutils/parsers/rst/include/s5defs.txt A tools/docutils/parsers/rst/include/README.txt A tools/docutils/parsers/rst/include/isotech.txt A tools/docutils/parsers/rst/__init__.py A tools/docutils/parsers/rst/languages A tools/docutils/parsers/rst/languages/sv.py A tools/docutils/parsers/rst/languages/de.py A tools/docutils/parsers/rst/languages/ja.py A tools/docutils/parsers/rst/languages/zh_tw.py A tools/docutils/parsers/rst/languages/he.py A tools/docutils/parsers/rst/languages/fi.py A tools/docutils/parsers/rst/languages/__init__.py A tools/docutils/parsers/rst/languages/zh_cn.py A tools/docutils/parsers/rst/languages/en.py A tools/docutils/parsers/rst/languages/eo.py A tools/docutils/parsers/rst/languages/cs.py A tools/docutils/parsers/rst/languages/pt_br.py A tools/docutils/parsers/rst/languages/es.py A tools/docutils/parsers/rst/languages/fr.py A tools/docutils/parsers/rst/languages/nl.py A tools/docutils/parsers/rst/languages/it.py A tools/docutils/parsers/rst/languages/sk.py A tools/docutils/parsers/rst/languages/ca.py A tools/docutils/parsers/rst/languages/ru.py A tools/docutils/parsers/rst/languages/af.py A tools/docutils/parsers/rst/states.py A tools/docutils/parsers/rst/roles.py A tools/docutils/parsers/rst/tableparser.py A tools/docutils/writers A tools/docutils/writers/null.py A tools/docutils/writers/html4css1 A tools/docutils/writers/html4css1/__init__.py A tools/docutils/writers/html4css1/html4css1.css A tools/docutils/writers/html4css1/template.txt A tools/docutils/writers/latex2e A tools/docutils/writers/latex2e/latex2e.tex A tools/docutils/writers/latex2e/__init__.py A tools/docutils/writers/__init__.py A tools/docutils/writers/pseudoxml.py A tools/docutils/writers/pep_html A tools/docutils/writers/pep_html/__init__.py A tools/docutils/writers/pep_html/template.txt A tools/docutils/writers/pep_html/pep.css A tools/docutils/writers/s5_html A tools/docutils/writers/s5_html/themes A tools/docutils/writers/s5_html/themes/big-white A tools/docutils/writers/s5_html/themes/big-white/framing.css A tools/docutils/writers/s5_html/themes/big-white/pretty.css A tools/docutils/writers/s5_html/themes/small-black A tools/docutils/writers/s5_html/themes/small-black/__base__ A tools/docutils/writers/s5_html/themes/small-black/pretty.css A tools/docutils/writers/s5_html/themes/default A tools/docutils/writers/s5_html/themes/default/print.css A tools/docutils/writers/s5_html/themes/default/s5-core.css A tools/docutils/writers/s5_html/themes/default/iepngfix.htc A tools/docutils/writers/s5_html/themes/default/outline.css A tools/docutils/writers/s5_html/themes/default/framing.css A tools/docutils/writers/s5_html/themes/default/slides.css A tools/docutils/writers/s5_html/themes/default/blank.gif A tools/docutils/writers/s5_html/themes/default/opera.css A tools/docutils/writers/s5_html/themes/default/pretty.css A tools/docutils/writers/s5_html/themes/default/slides.js A tools/docutils/writers/s5_html/themes/small-white A tools/docutils/writers/s5_html/themes/small-white/framing.css A tools/docutils/writers/s5_html/themes/small-white/pretty.css A tools/docutils/writers/s5_html/themes/medium-black A tools/docutils/writers/s5_html/themes/medium-black/__base__ A tools/docutils/writers/s5_html/themes/medium-black/pretty.css A tools/docutils/writers/s5_html/themes/README.txt A tools/docutils/writers/s5_html/themes/big-black A tools/docutils/writers/s5_html/themes/big-black/__base__ A tools/docutils/writers/s5_html/themes/big-black/framing.css A tools/docutils/writers/s5_html/themes/big-black/pretty.css A tools/docutils/writers/s5_html/themes/medium-white A tools/docutils/writers/s5_html/themes/medium-white/framing.css A tools/docutils/writers/s5_html/themes/medium-white/pretty.css A tools/docutils/writers/s5_html/__init__.py A tools/docutils/writers/docutils_xml.py A tools/docutils/writers/newlatex2e A tools/docutils/writers/newlatex2e/tests.txt A tools/docutils/writers/newlatex2e/__init__.py A tools/docutils/writers/newlatex2e/notes.txt A tools/docutils/writers/newlatex2e/base.tex A tools/docutils/writers/newlatex2e/unicode_map.py A tools/docutils/examples.py A tools/docutils/readers A tools/docutils/readers/standalone.py A tools/docutils/readers/python A tools/docutils/readers/python/__init__.py A tools/docutils/readers/python/pynodes.py A tools/docutils/readers/python/moduleparser.py A tools/docutils/readers/__init__.py A tools/docutils/readers/pep.py A tools/docutils/readers/doctree.py A tools/docutils/__init__.py A tools/docutils/frontend.py A tools/docutils/languages A tools/docutils/languages/sv.py A tools/docutils/languages/de.py A tools/docutils/languages/ja.py A tools/docutils/languages/zh_tw.py A tools/docutils/languages/he.py A tools/docutils/languages/fi.py A tools/docutils/languages/__init__.py A tools/docutils/languages/zh_cn.py A tools/docutils/languages/en.py A tools/docutils/languages/eo.py A tools/docutils/languages/cs.py A tools/docutils/languages/pt_br.py A tools/docutils/languages/es.py A tools/docutils/languages/fr.py A tools/docutils/languages/nl.py A tools/docutils/languages/it.py A tools/docutils/languages/sk.py A tools/docutils/languages/ca.py A tools/docutils/languages/ru.py A tools/docutils/languages/af.py A tools/docutils/utils.py A tools/docutils/docutils.conf A tools/docutils/statemachine.py A tools/docutils/io.py A tools/docutils/transforms A tools/docutils/transforms/universal.py A tools/docutils/transforms/parts.py A tools/docutils/transforms/writer_aux.py A tools/docutils/transforms/misc.py A tools/docutils/transforms/__init__.py A tools/docutils/transforms/references.py A tools/docutils/transforms/components.py A tools/docutils/transforms/frontmatter.py A tools/docutils/transforms/peps.py A tools/docutils/urischemes.py Checked out revision 77263. Checking out Jinja... A tools/jinja2/loaders.py A tools/jinja2/parser.py A tools/jinja2/_ipysupport.py A tools/jinja2/sandbox.py A tools/jinja2/visitor.py A tools/jinja2/__init__.py A tools/jinja2/utils.py A tools/jinja2/ext.py A tools/jinja2/tests.py A tools/jinja2/environment.py A tools/jinja2/defaults.py A tools/jinja2/bccache.py A tools/jinja2/filters.py A tools/jinja2/nodes.py A tools/jinja2/compiler.py A tools/jinja2/constants.py A tools/jinja2/lexer.py A tools/jinja2/exceptions.py A tools/jinja2/_speedups.c A tools/jinja2/optimizer.py A tools/jinja2/runtime.py A tools/jinja2/debug.py Checked out revision 77263. Checking out Pygments... A tools/pygments/scanner.py A tools/pygments/styles A tools/pygments/styles/vs.py A tools/pygments/styles/emacs.py A tools/pygments/styles/perldoc.py A tools/pygments/styles/trac.py A tools/pygments/styles/vim.py A tools/pygments/styles/__init__.py A tools/pygments/styles/manni.py A tools/pygments/styles/bw.py A tools/pygments/styles/tango.py A tools/pygments/styles/autumn.py A tools/pygments/styles/friendly.py A tools/pygments/styles/borland.py A tools/pygments/styles/fruity.py A tools/pygments/styles/default.py A tools/pygments/styles/murphy.py A tools/pygments/styles/pastie.py A tools/pygments/styles/colorful.py A tools/pygments/styles/native.py A tools/pygments/plugin.py A tools/pygments/__init__.py A tools/pygments/formatters A tools/pygments/formatters/terminal256.py A tools/pygments/formatters/_mapping.py A tools/pygments/formatters/rtf.py A tools/pygments/formatters/terminal.py A tools/pygments/formatters/img.py A tools/pygments/formatters/latex.py A tools/pygments/formatters/bbcode.py A tools/pygments/formatters/__init__.py A tools/pygments/formatters/svg.py A tools/pygments/formatters/other.py A tools/pygments/formatters/html.py A tools/pygments/style.py A tools/pygments/console.py A tools/pygments/formatter.py A tools/pygments/cmdline.py A tools/pygments/lexers A tools/pygments/lexers/math.py A tools/pygments/lexers/_luabuiltins.py A tools/pygments/lexers/_mapping.py A tools/pygments/lexers/compiled.py A tools/pygments/lexers/dotnet.py A tools/pygments/lexers/templates.py A tools/pygments/lexers/__init__.py A tools/pygments/lexers/_phpbuiltins.py A tools/pygments/lexers/functional.py A tools/pygments/lexers/_vimbuiltins.py A tools/pygments/lexers/_clbuiltins.py A tools/pygments/lexers/web.py A tools/pygments/lexers/parsers.py A tools/pygments/lexers/asm.py A tools/pygments/lexers/special.py A tools/pygments/lexers/other.py A tools/pygments/lexers/agile.py A tools/pygments/lexers/text.py A tools/pygments/util.py A tools/pygments/lexer.py A tools/pygments/token.py A tools/pygments/filters A tools/pygments/filters/__init__.py A tools/pygments/unistring.py A tools/pygments/filter.py Checked out revision 77263. rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils mkdir -p build/html build/doctrees python tools/sphinx-build.py -b html -d build/doctrees -D latex_paper_size= . build/html Traceback (most recent call last): File "tools/sphinx-build.py", line 23, in from sphinx import main ImportError: No module named sphinx make: *** [build] Error 1 From python-checkins at python.org Sun Jan 3 03:06:07 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sun, 03 Jan 2010 02:06:07 -0000 Subject: [Python-checkins] r77264 - in python/trunk: Doc/library/httplib.rst Doc/library/socket.rst Lib/httplib.py Lib/test/test_httplib.py Misc/NEWS Message-ID: Author: gregory.p.smith Date: Sun Jan 3 03:06:07 2010 New Revision: 77264 Log: issue3972: HTTPConnection and HTTPSConnection now support a source_address parameter. Also cleans up an annotation in the socket documentation. Modified: python/trunk/Doc/library/httplib.rst python/trunk/Doc/library/socket.rst python/trunk/Lib/httplib.py python/trunk/Lib/test/test_httplib.py python/trunk/Misc/NEWS Modified: python/trunk/Doc/library/httplib.rst ============================================================================== --- python/trunk/Doc/library/httplib.rst (original) +++ python/trunk/Doc/library/httplib.rst Sun Jan 3 03:06:07 2010 @@ -34,7 +34,7 @@ The module provides the following classes: -.. class:: HTTPConnection(host[, port[, strict[, timeout]]]) +.. class:: HTTPConnection(host[, port[, strict[, timeout[, source_address]]]]) An :class:`HTTPConnection` instance represents one transaction with an HTTP server. It should be instantiated passing it a host and optional port @@ -46,6 +46,8 @@ status line. If the optional *timeout* parameter is given, blocking operations (like connection attempts) will timeout after that many seconds (if it is not given, the global default timeout setting is used). + The optional *source_address* parameter may be a tuple of a (host, port) + to use as the source address the HTTP connection is made from. For example, the following calls all create instances that connect to the server at the same host and port:: @@ -60,8 +62,11 @@ .. versionchanged:: 2.6 *timeout* was added. + .. versionchanged:: 2.7 + *source_address* was added. -.. class:: HTTPSConnection(host[, port[, key_file[, cert_file[, strict[, timeout]]]]]) + +.. class:: HTTPSConnection(host[, port[, key_file[, cert_file[, strict[, timeout[, source_address]]]]]]) A subclass of :class:`HTTPConnection` that uses SSL for communication with secure servers. Default port is ``443``. *key_file* is the name of a PEM @@ -77,6 +82,9 @@ .. versionchanged:: 2.6 *timeout* was added. + .. versionchanged:: 2.7 + *source_address* was added. + .. class:: HTTPResponse(sock[, debuglevel=0][, strict=0]) Modified: python/trunk/Doc/library/socket.rst ============================================================================== --- python/trunk/Doc/library/socket.rst (original) +++ python/trunk/Doc/library/socket.rst Sun Jan 3 03:06:07 2010 @@ -213,13 +213,14 @@ *timeout* is supplied, the global default timeout setting returned by :func:`getdefaulttimeout` is used. - .. versionadded:: 2.6 - If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the socket to bind to as its source address before connecting. If host or port are '' or 0 respectively the OS default behavior will be used. - .. versionadded:: 2.7 + .. versionadded:: 2.6 + + .. versionchanged:: 2.7 + *source_address* was added. .. function:: getaddrinfo(host, port[, family[, socktype[, proto[, flags]]]]) Modified: python/trunk/Lib/httplib.py ============================================================================== --- python/trunk/Lib/httplib.py (original) +++ python/trunk/Lib/httplib.py Sun Jan 3 03:06:07 2010 @@ -658,8 +658,9 @@ strict = 0 def __init__(self, host, port=None, strict=None, - timeout=socket._GLOBAL_DEFAULT_TIMEOUT): + timeout=socket._GLOBAL_DEFAULT_TIMEOUT, source_address=None): self.timeout = timeout + self.source_address = source_address self.sock = None self._buffer = [] self.__response = None @@ -728,7 +729,7 @@ def connect(self): """Connect to the host and port specified in __init__.""" self.sock = socket.create_connection((self.host,self.port), - self.timeout) + self.timeout, self.source_address) if self._tunnel_host: self._tunnel() @@ -1133,15 +1134,18 @@ default_port = HTTPS_PORT def __init__(self, host, port=None, key_file=None, cert_file=None, - strict=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT): - HTTPConnection.__init__(self, host, port, strict, timeout) + strict=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, + source_address=None): + HTTPConnection.__init__(self, host, port, strict, timeout, + source_address) self.key_file = key_file self.cert_file = cert_file def connect(self): "Connect to a host on a given (SSL) port." - sock = socket.create_connection((self.host, self.port), self.timeout) + sock = socket.create_connection((self.host, self.port), + self.timeout, self.source_address) if self._tunnel_host: self.sock = sock self._tunnel() Modified: python/trunk/Lib/test/test_httplib.py ============================================================================== --- python/trunk/Lib/test/test_httplib.py (original) +++ python/trunk/Lib/test/test_httplib.py Sun Jan 3 03:06:07 2010 @@ -3,7 +3,8 @@ import StringIO import socket -from unittest import TestCase +import unittest +TestCase = unittest.TestCase from test import test_support @@ -237,6 +238,38 @@ def test_responses(self): self.assertEquals(httplib.responses[httplib.NOT_FOUND], "Not Found") + +class SourceAddressTest(TestCase): + def setUp(self): + self.serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self.port = test_support.bind_port(self.serv) + self.source_port = test_support.find_unused_port() + self.serv.listen(5) + self.conn = None + + def tearDown(self): + if self.conn: + self.conn.close() + self.conn = None + self.serv.close() + self.serv = None + + def testHTTPConnectionSourceAddress(self): + self.conn = httplib.HTTPConnection(HOST, self.port, + source_address=('', self.source_port)) + self.conn.connect() + self.assertEqual(self.conn.sock.getsockname()[1], self.source_port) + + @unittest.skipIf(not hasattr(httplib, 'HTTPSConnection'), + 'httplib.HTTPSConnection not defined') + def testHTTPSConnectionSourceAddress(self): + self.conn = httplib.HTTPSConnection(HOST, self.port, + source_address=('', self.source_port)) + # We don't test anything here other the constructor not barfing as + # this code doesn't deal with setting up an active running SSL server + # for an ssl_wrapped connect() to actually return from. + + class TimeoutTest(TestCase): PORT = None @@ -294,7 +327,7 @@ def test_main(verbose=None): test_support.run_unittest(HeaderTests, OfflineTest, BasicTest, TimeoutTest, - HTTPSTimeoutTest) + HTTPSTimeoutTest, SourceAddressTest) if __name__ == '__main__': test_main() Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Jan 3 03:06:07 2010 @@ -62,6 +62,9 @@ Library ------- +_ Issue #3972: httplib.HTTPConnection now accepts an optional source_address + parameter to allow specifying where your connections come from. + - socket.create_connection now accepts an optional source_address parameter. - Issue #5511: now zipfile.ZipFile can be used as a context manager. From nnorwitz at gmail.com Sun Jan 3 03:07:27 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 2 Jan 2010 21:07:27 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100103020727.GA1197@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils Checking out Sphinx... A tools/sphinx/jinja2glue.py A tools/sphinx/quickstart.py A tools/sphinx/theming.py A tools/sphinx/pycode A tools/sphinx/pycode/nodes.py A tools/sphinx/pycode/Grammar.txt A tools/sphinx/pycode/__init__.py A tools/sphinx/pycode/pgen2 A tools/sphinx/pycode/pgen2/tokenize.py A tools/sphinx/pycode/pgen2/pgen.py A tools/sphinx/pycode/pgen2/parse.py A tools/sphinx/pycode/pgen2/driver.py A tools/sphinx/pycode/pgen2/__init__.py A tools/sphinx/pycode/pgen2/literals.py A tools/sphinx/pycode/pgen2/token.py A tools/sphinx/pycode/pgen2/grammar.py A tools/sphinx/themes A tools/sphinx/themes/sphinxdoc A tools/sphinx/themes/sphinxdoc/layout.html A tools/sphinx/themes/sphinxdoc/theme.conf A tools/sphinx/themes/sphinxdoc/static A tools/sphinx/themes/sphinxdoc/static/contents.png A tools/sphinx/themes/sphinxdoc/static/navigation.png A tools/sphinx/themes/sphinxdoc/static/sphinxdoc.css A tools/sphinx/themes/basic A tools/sphinx/themes/basic/page.html A tools/sphinx/themes/basic/layout.html A tools/sphinx/themes/basic/genindex-single.html A tools/sphinx/themes/basic/genindex.html A tools/sphinx/themes/basic/opensearch.xml A tools/sphinx/themes/basic/theme.conf A tools/sphinx/themes/basic/static A tools/sphinx/themes/basic/static/doctools.js A tools/sphinx/themes/basic/static/searchtools.js A tools/sphinx/themes/basic/static/file.png A tools/sphinx/themes/basic/static/plus.png A tools/sphinx/themes/basic/static/basic.css A tools/sphinx/themes/basic/static/jquery.js A tools/sphinx/themes/basic/static/minus.png A tools/sphinx/themes/basic/changes A tools/sphinx/themes/basic/changes/versionchanges.html A tools/sphinx/themes/basic/changes/frameset.html A tools/sphinx/themes/basic/changes/rstsource.html A tools/sphinx/themes/basic/search.html A tools/sphinx/themes/basic/defindex.html A tools/sphinx/themes/basic/modindex.html A tools/sphinx/themes/basic/genindex-split.html A tools/sphinx/themes/default A tools/sphinx/themes/default/theme.conf A tools/sphinx/themes/default/static A tools/sphinx/themes/default/static/default.css_t A tools/sphinx/themes/traditional A tools/sphinx/themes/traditional/theme.conf A tools/sphinx/themes/traditional/static A tools/sphinx/themes/traditional/static/traditional.css A tools/sphinx/setup_command.py A tools/sphinx/__init__.py A tools/sphinx/application.py A tools/sphinx/environment.py A tools/sphinx/search.py A tools/sphinx/config.py A tools/sphinx/highlighting.py A tools/sphinx/writers A tools/sphinx/writers/latex.py A tools/sphinx/writers/__init__.py A tools/sphinx/writers/html.py A tools/sphinx/writers/text.py A tools/sphinx/locale A tools/sphinx/locale/__init__.py A tools/sphinx/locale/ru A tools/sphinx/locale/ru/LC_MESSAGES A tools/sphinx/locale/ru/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/ru/LC_MESSAGES/sphinx.js A tools/sphinx/locale/ru/LC_MESSAGES/sphinx.po A tools/sphinx/locale/de A tools/sphinx/locale/de/LC_MESSAGES A tools/sphinx/locale/de/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/de/LC_MESSAGES/sphinx.js A tools/sphinx/locale/de/LC_MESSAGES/sphinx.po A tools/sphinx/locale/ja A tools/sphinx/locale/ja/LC_MESSAGES A tools/sphinx/locale/ja/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/ja/LC_MESSAGES/sphinx.js A tools/sphinx/locale/ja/LC_MESSAGES/sphinx.po A tools/sphinx/locale/zh_TW A tools/sphinx/locale/zh_TW/LC_MESSAGES A tools/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js A tools/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po A tools/sphinx/locale/fi A tools/sphinx/locale/fi/LC_MESSAGES A tools/sphinx/locale/fi/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/fi/LC_MESSAGES/sphinx.js A tools/sphinx/locale/fi/LC_MESSAGES/sphinx.po A tools/sphinx/locale/uk_UA A tools/sphinx/locale/uk_UA/LC_MESSAGES A tools/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js A tools/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po A tools/sphinx/locale/cs A tools/sphinx/locale/cs/LC_MESSAGES A tools/sphinx/locale/cs/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/cs/LC_MESSAGES/sphinx.js A tools/sphinx/locale/cs/LC_MESSAGES/sphinx.po A tools/sphinx/locale/pt_BR A tools/sphinx/locale/pt_BR/LC_MESSAGES A tools/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js A tools/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po A tools/sphinx/locale/es A tools/sphinx/locale/es/LC_MESSAGES A tools/sphinx/locale/es/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/es/LC_MESSAGES/sphinx.js A tools/sphinx/locale/es/LC_MESSAGES/sphinx.po A tools/sphinx/locale/fr A tools/sphinx/locale/fr/LC_MESSAGES A tools/sphinx/locale/fr/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/fr/LC_MESSAGES/sphinx.js A tools/sphinx/locale/fr/LC_MESSAGES/sphinx.po A tools/sphinx/locale/nl A tools/sphinx/locale/nl/LC_MESSAGES A tools/sphinx/locale/nl/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/nl/LC_MESSAGES/sphinx.js A tools/sphinx/locale/nl/LC_MESSAGES/sphinx.po A tools/sphinx/locale/sphinx.pot A tools/sphinx/locale/pl A tools/sphinx/locale/pl/LC_MESSAGES A tools/sphinx/locale/pl/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/pl/LC_MESSAGES/sphinx.js A tools/sphinx/locale/pl/LC_MESSAGES/sphinx.po A tools/sphinx/locale/it A tools/sphinx/locale/it/LC_MESSAGES A tools/sphinx/locale/it/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/it/LC_MESSAGES/sphinx.js A tools/sphinx/locale/it/LC_MESSAGES/sphinx.po A tools/sphinx/locale/sl A tools/sphinx/locale/sl/LC_MESSAGES A tools/sphinx/locale/sl/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/sl/LC_MESSAGES/sphinx.js A tools/sphinx/locale/sl/LC_MESSAGES/sphinx.po A tools/sphinx/ext A tools/sphinx/ext/graphviz.py A tools/sphinx/ext/coverage.py A tools/sphinx/ext/intersphinx.py A tools/sphinx/ext/inheritance_diagram.py A tools/sphinx/ext/autodoc.py A tools/sphinx/ext/pngmath.py A tools/sphinx/ext/__init__.py A tools/sphinx/ext/autosummary A tools/sphinx/ext/autosummary/generate.py A tools/sphinx/ext/autosummary/__init__.py A tools/sphinx/ext/autosummary/templates A tools/sphinx/ext/autosummary/templates/module A tools/sphinx/ext/refcounting.py A tools/sphinx/ext/ifconfig.py A tools/sphinx/ext/mathbase.py A tools/sphinx/ext/doctest.py A tools/sphinx/ext/todo.py A tools/sphinx/ext/jsmath.py A tools/sphinx/directives A tools/sphinx/directives/code.py A tools/sphinx/directives/desc.py A tools/sphinx/directives/__init__.py A tools/sphinx/directives/other.py A tools/sphinx/cmdline.py A tools/sphinx/errors.py A tools/sphinx/texinputs A tools/sphinx/texinputs/python.ist A tools/sphinx/texinputs/howto.cls A tools/sphinx/texinputs/tabulary.sty A tools/sphinx/texinputs/sphinx.sty A tools/sphinx/texinputs/fncychap.sty A tools/sphinx/texinputs/Makefile A tools/sphinx/texinputs/manual.cls A tools/sphinx/addnodes.py A tools/sphinx/builders A tools/sphinx/builders/changes.py A tools/sphinx/builders/linkcheck.py A tools/sphinx/builders/htmlhelp.py A tools/sphinx/builders/latex.py A tools/sphinx/builders/qthelp.py A tools/sphinx/builders/__init__.py A tools/sphinx/builders/html.py A tools/sphinx/builders/text.py A tools/sphinx/roles.py A tools/sphinx/builder.py A tools/sphinx/util A tools/sphinx/util/pycompat.py A tools/sphinx/util/stemmer.py A tools/sphinx/util/tags.py A tools/sphinx/util/__init__.py A tools/sphinx/util/docstrings.py A tools/sphinx/util/texescape.py A tools/sphinx/util/console.py A tools/sphinx/util/jsdump.py A tools/sphinx/util/compat.py A tools/sphinx/util/png.py A tools/sphinx/util/inspect.py A tools/sphinx/util/smartypants.py Checked out revision 77264. Checking out Docutils... A tools/docutils/core.py A tools/docutils/nodes.py A tools/docutils/parsers A tools/docutils/parsers/null.py A tools/docutils/parsers/__init__.py A tools/docutils/parsers/rst A tools/docutils/parsers/rst/directives A tools/docutils/parsers/rst/directives/parts.py A tools/docutils/parsers/rst/directives/tables.py A tools/docutils/parsers/rst/directives/misc.py A tools/docutils/parsers/rst/directives/body.py A tools/docutils/parsers/rst/directives/__init__.py A tools/docutils/parsers/rst/directives/references.py A tools/docutils/parsers/rst/directives/admonitions.py A tools/docutils/parsers/rst/directives/html.py A tools/docutils/parsers/rst/directives/images.py A tools/docutils/parsers/rst/include A tools/docutils/parsers/rst/include/isopub.txt A tools/docutils/parsers/rst/include/isobox.txt A tools/docutils/parsers/rst/include/isogrk4-wide.txt A tools/docutils/parsers/rst/include/isonum.txt A tools/docutils/parsers/rst/include/isomfrk.txt A tools/docutils/parsers/rst/include/xhtml1-lat1.txt A tools/docutils/parsers/rst/include/isomopf.txt A tools/docutils/parsers/rst/include/mmlextra-wide.txt A tools/docutils/parsers/rst/include/xhtml1-symbol.txt A tools/docutils/parsers/rst/include/mmlextra.txt A tools/docutils/parsers/rst/include/isocyr1.txt A tools/docutils/parsers/rst/include/isocyr2.txt A tools/docutils/parsers/rst/include/xhtml1-special.txt A tools/docutils/parsers/rst/include/isoamsa.txt A tools/docutils/parsers/rst/include/isoamsb.txt A tools/docutils/parsers/rst/include/isoamsc.txt A tools/docutils/parsers/rst/include/mmlalias.txt A tools/docutils/parsers/rst/include/isomfrk-wide.txt A tools/docutils/parsers/rst/include/isomopf-wide.txt A tools/docutils/parsers/rst/include/isomscr-wide.txt A tools/docutils/parsers/rst/include/isodia.txt A tools/docutils/parsers/rst/include/isoamsn.txt A tools/docutils/parsers/rst/include/isoamso.txt A tools/docutils/parsers/rst/include/isolat1.txt A tools/docutils/parsers/rst/include/isoamsr.txt A tools/docutils/parsers/rst/include/isolat2.txt A tools/docutils/parsers/rst/include/isogrk1.txt A tools/docutils/parsers/rst/include/isomscr.txt A tools/docutils/parsers/rst/include/isogrk2.txt A tools/docutils/parsers/rst/include/isogrk3.txt A tools/docutils/parsers/rst/include/isogrk4.txt A tools/docutils/parsers/rst/include/s5defs.txt A tools/docutils/parsers/rst/include/README.txt A tools/docutils/parsers/rst/include/isotech.txt A tools/docutils/parsers/rst/__init__.py A tools/docutils/parsers/rst/languages A tools/docutils/parsers/rst/languages/sv.py A tools/docutils/parsers/rst/languages/de.py A tools/docutils/parsers/rst/languages/ja.py A tools/docutils/parsers/rst/languages/zh_tw.py A tools/docutils/parsers/rst/languages/he.py A tools/docutils/parsers/rst/languages/fi.py A tools/docutils/parsers/rst/languages/__init__.py A tools/docutils/parsers/rst/languages/zh_cn.py A tools/docutils/parsers/rst/languages/en.py A tools/docutils/parsers/rst/languages/eo.py A tools/docutils/parsers/rst/languages/cs.py A tools/docutils/parsers/rst/languages/pt_br.py A tools/docutils/parsers/rst/languages/es.py A tools/docutils/parsers/rst/languages/fr.py A tools/docutils/parsers/rst/languages/nl.py A tools/docutils/parsers/rst/languages/it.py A tools/docutils/parsers/rst/languages/sk.py A tools/docutils/parsers/rst/languages/ca.py A tools/docutils/parsers/rst/languages/ru.py A tools/docutils/parsers/rst/languages/af.py A tools/docutils/parsers/rst/states.py A tools/docutils/parsers/rst/roles.py A tools/docutils/parsers/rst/tableparser.py A tools/docutils/writers A tools/docutils/writers/null.py A tools/docutils/writers/html4css1 A tools/docutils/writers/html4css1/__init__.py A tools/docutils/writers/html4css1/html4css1.css A tools/docutils/writers/html4css1/template.txt A tools/docutils/writers/latex2e A tools/docutils/writers/latex2e/latex2e.tex A tools/docutils/writers/latex2e/__init__.py A tools/docutils/writers/__init__.py A tools/docutils/writers/pseudoxml.py A tools/docutils/writers/pep_html A tools/docutils/writers/pep_html/__init__.py A tools/docutils/writers/pep_html/template.txt A tools/docutils/writers/pep_html/pep.css A tools/docutils/writers/s5_html A tools/docutils/writers/s5_html/themes A tools/docutils/writers/s5_html/themes/big-white A tools/docutils/writers/s5_html/themes/big-white/framing.css A tools/docutils/writers/s5_html/themes/big-white/pretty.css A tools/docutils/writers/s5_html/themes/small-black A tools/docutils/writers/s5_html/themes/small-black/__base__ A tools/docutils/writers/s5_html/themes/small-black/pretty.css A tools/docutils/writers/s5_html/themes/default A tools/docutils/writers/s5_html/themes/default/print.css A tools/docutils/writers/s5_html/themes/default/s5-core.css A tools/docutils/writers/s5_html/themes/default/iepngfix.htc A tools/docutils/writers/s5_html/themes/default/outline.css A tools/docutils/writers/s5_html/themes/default/framing.css A tools/docutils/writers/s5_html/themes/default/slides.css A tools/docutils/writers/s5_html/themes/default/blank.gif A tools/docutils/writers/s5_html/themes/default/opera.css A tools/docutils/writers/s5_html/themes/default/pretty.css A tools/docutils/writers/s5_html/themes/default/slides.js A tools/docutils/writers/s5_html/themes/small-white A tools/docutils/writers/s5_html/themes/small-white/framing.css A tools/docutils/writers/s5_html/themes/small-white/pretty.css A tools/docutils/writers/s5_html/themes/medium-black A tools/docutils/writers/s5_html/themes/medium-black/__base__ A tools/docutils/writers/s5_html/themes/medium-black/pretty.css A tools/docutils/writers/s5_html/themes/README.txt A tools/docutils/writers/s5_html/themes/big-black A tools/docutils/writers/s5_html/themes/big-black/__base__ A tools/docutils/writers/s5_html/themes/big-black/framing.css A tools/docutils/writers/s5_html/themes/big-black/pretty.css A tools/docutils/writers/s5_html/themes/medium-white A tools/docutils/writers/s5_html/themes/medium-white/framing.css A tools/docutils/writers/s5_html/themes/medium-white/pretty.css A tools/docutils/writers/s5_html/__init__.py A tools/docutils/writers/docutils_xml.py A tools/docutils/writers/newlatex2e A tools/docutils/writers/newlatex2e/tests.txt A tools/docutils/writers/newlatex2e/__init__.py A tools/docutils/writers/newlatex2e/notes.txt A tools/docutils/writers/newlatex2e/base.tex A tools/docutils/writers/newlatex2e/unicode_map.py A tools/docutils/examples.py A tools/docutils/readers A tools/docutils/readers/standalone.py A tools/docutils/readers/python A tools/docutils/readers/python/__init__.py A tools/docutils/readers/python/pynodes.py A tools/docutils/readers/python/moduleparser.py A tools/docutils/readers/__init__.py A tools/docutils/readers/pep.py A tools/docutils/readers/doctree.py A tools/docutils/__init__.py A tools/docutils/frontend.py A tools/docutils/languages A tools/docutils/languages/sv.py A tools/docutils/languages/de.py A tools/docutils/languages/ja.py A tools/docutils/languages/zh_tw.py A tools/docutils/languages/he.py A tools/docutils/languages/fi.py A tools/docutils/languages/__init__.py A tools/docutils/languages/zh_cn.py A tools/docutils/languages/en.py A tools/docutils/languages/eo.py A tools/docutils/languages/cs.py A tools/docutils/languages/pt_br.py A tools/docutils/languages/es.py A tools/docutils/languages/fr.py A tools/docutils/languages/nl.py A tools/docutils/languages/it.py A tools/docutils/languages/sk.py A tools/docutils/languages/ca.py A tools/docutils/languages/ru.py A tools/docutils/languages/af.py A tools/docutils/utils.py A tools/docutils/docutils.conf A tools/docutils/statemachine.py A tools/docutils/io.py A tools/docutils/transforms A tools/docutils/transforms/universal.py A tools/docutils/transforms/parts.py A tools/docutils/transforms/writer_aux.py A tools/docutils/transforms/misc.py A tools/docutils/transforms/__init__.py A tools/docutils/transforms/references.py A tools/docutils/transforms/components.py A tools/docutils/transforms/frontmatter.py A tools/docutils/transforms/peps.py A tools/docutils/urischemes.py Checked out revision 77264. Checking out Jinja... A tools/jinja2/loaders.py A tools/jinja2/parser.py A tools/jinja2/_ipysupport.py A tools/jinja2/sandbox.py A tools/jinja2/visitor.py A tools/jinja2/__init__.py A tools/jinja2/utils.py A tools/jinja2/ext.py A tools/jinja2/tests.py A tools/jinja2/environment.py A tools/jinja2/defaults.py A tools/jinja2/bccache.py A tools/jinja2/filters.py A tools/jinja2/nodes.py A tools/jinja2/compiler.py A tools/jinja2/constants.py A tools/jinja2/lexer.py A tools/jinja2/exceptions.py A tools/jinja2/_speedups.c A tools/jinja2/optimizer.py A tools/jinja2/runtime.py A tools/jinja2/debug.py Checked out revision 77264. Checking out Pygments... A tools/pygments/scanner.py A tools/pygments/styles A tools/pygments/styles/vs.py A tools/pygments/styles/emacs.py A tools/pygments/styles/perldoc.py A tools/pygments/styles/trac.py A tools/pygments/styles/vim.py A tools/pygments/styles/__init__.py A tools/pygments/styles/manni.py A tools/pygments/styles/bw.py A tools/pygments/styles/tango.py A tools/pygments/styles/autumn.py A tools/pygments/styles/friendly.py A tools/pygments/styles/borland.py A tools/pygments/styles/fruity.py A tools/pygments/styles/default.py A tools/pygments/styles/murphy.py A tools/pygments/styles/pastie.py A tools/pygments/styles/colorful.py A tools/pygments/styles/native.py A tools/pygments/plugin.py A tools/pygments/__init__.py A tools/pygments/formatters A tools/pygments/formatters/terminal256.py A tools/pygments/formatters/_mapping.py A tools/pygments/formatters/rtf.py A tools/pygments/formatters/terminal.py A tools/pygments/formatters/img.py A tools/pygments/formatters/latex.py A tools/pygments/formatters/bbcode.py A tools/pygments/formatters/__init__.py A tools/pygments/formatters/svg.py A tools/pygments/formatters/other.py A tools/pygments/formatters/html.py A tools/pygments/style.py A tools/pygments/console.py A tools/pygments/formatter.py A tools/pygments/cmdline.py A tools/pygments/lexers A tools/pygments/lexers/math.py A tools/pygments/lexers/_luabuiltins.py A tools/pygments/lexers/_mapping.py A tools/pygments/lexers/compiled.py A tools/pygments/lexers/dotnet.py A tools/pygments/lexers/templates.py A tools/pygments/lexers/__init__.py A tools/pygments/lexers/_phpbuiltins.py A tools/pygments/lexers/functional.py A tools/pygments/lexers/_vimbuiltins.py A tools/pygments/lexers/_clbuiltins.py A tools/pygments/lexers/web.py A tools/pygments/lexers/parsers.py A tools/pygments/lexers/asm.py A tools/pygments/lexers/special.py A tools/pygments/lexers/other.py A tools/pygments/lexers/agile.py A tools/pygments/lexers/text.py A tools/pygments/util.py A tools/pygments/lexer.py A tools/pygments/token.py A tools/pygments/filters A tools/pygments/filters/__init__.py A tools/pygments/unistring.py A tools/pygments/filter.py Checked out revision 77264. rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils mkdir -p build/html build/doctrees python tools/sphinx-build.py -b html -d build/doctrees -D latex_paper_size= . build/html Traceback (most recent call last): File "tools/sphinx-build.py", line 23, in from sphinx import main ImportError: No module named sphinx make: *** [build] Error 1 From python-checkins at python.org Sun Jan 3 04:28:30 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sun, 03 Jan 2010 03:28:30 -0000 Subject: [Python-checkins] r77265 - in python/branches/py3k: Doc/library/http.client.rst Doc/library/socket.rst Lib/http/client.py Lib/socket.py Lib/test/test_httplib.py Lib/test/test_socket.py Misc/NEWS Message-ID: Author: gregory.p.smith Date: Sun Jan 3 04:28:29 2010 New Revision: 77265 Log: Merged revisions 77263-77264 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77263 | gregory.p.smith | 2010-01-02 17:29:44 -0800 (Sat, 02 Jan 2010) | 4 lines Adds an optional source_address parameter to socket.create_connection(). For use by issue3972. ........ r77264 | gregory.p.smith | 2010-01-02 18:06:07 -0800 (Sat, 02 Jan 2010) | 5 lines issue3972: HTTPConnection and HTTPSConnection now support a source_address parameter. Also cleans up an annotation in the socket documentation. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/library/http.client.rst python/branches/py3k/Doc/library/socket.rst python/branches/py3k/Lib/http/client.py python/branches/py3k/Lib/socket.py python/branches/py3k/Lib/test/test_httplib.py python/branches/py3k/Lib/test/test_socket.py python/branches/py3k/Misc/NEWS Modified: python/branches/py3k/Doc/library/http.client.rst ============================================================================== --- python/branches/py3k/Doc/library/http.client.rst (original) +++ python/branches/py3k/Doc/library/http.client.rst Sun Jan 3 04:28:29 2010 @@ -23,7 +23,7 @@ The module provides the following classes: -.. class:: HTTPConnection(host, port=None, strict=None[, timeout]) +.. class:: HTTPConnection(host, port=None, strict=None[, timeout[, source_address]]) An :class:`HTTPConnection` instance represents one transaction with an HTTP server. It should be instantiated passing it a host and optional port @@ -35,6 +35,8 @@ status line. If the optional *timeout* parameter is given, blocking operations (like connection attempts) will timeout after that many seconds (if it is not given, the global default timeout setting is used). + The optional *source_address* parameter may be a typle of a (host, port) + to use as the source address the HTTP connection is made from. For example, the following calls all create instances that connect to the server at the same host and port:: @@ -44,8 +46,11 @@ >>> h3 = http.client.HTTPConnection('www.cwi.nl', 80) >>> h3 = http.client.HTTPConnection('www.cwi.nl', 80, timeout=10) + .. versionchanged:: 3.2 + *source_address* was added. -.. class:: HTTPSConnection(host, port=None, key_file=None, cert_file=None, strict=None[, timeout]) + +.. class:: HTTPSConnection(host, port=None, key_file=None, cert_file=None, strict=None[, timeout[, source_address]]) A subclass of :class:`HTTPConnection` that uses SSL for communication with secure servers. Default port is ``443``. *key_file* is the name of a PEM @@ -56,6 +61,9 @@ This does not do any certificate verification. + .. versionchanged:: 3.2 + *source_address* was added. + .. class:: HTTPResponse(sock, debuglevel=0, strict=0, method=None, url=None) Modified: python/branches/py3k/Doc/library/socket.rst ============================================================================== --- python/branches/py3k/Doc/library/socket.rst (original) +++ python/branches/py3k/Doc/library/socket.rst Sun Jan 3 04:28:29 2010 @@ -194,7 +194,7 @@ this platform. -.. function:: create_connection(address[, timeout]) +.. function:: create_connection(address[, timeout[, source_address]]) Convenience function. Connect to *address* (a 2-tuple ``(host, port)``), and return the socket object. Passing the optional *timeout* parameter will @@ -202,6 +202,13 @@ *timeout* is supplied, the global default timeout setting returned by :func:`getdefaulttimeout` is used. + If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the + socket to bind to as its source address before connecting. If host or port + are '' or 0 respectively the OS default behavior will be used. + + .. versionchanged:: 3.2 + *source_address* was added. + .. function:: getaddrinfo(host, port[, family[, socktype[, proto[, flags]]]]) Modified: python/branches/py3k/Lib/http/client.py ============================================================================== --- python/branches/py3k/Lib/http/client.py (original) +++ python/branches/py3k/Lib/http/client.py Sun Jan 3 04:28:29 2010 @@ -634,8 +634,9 @@ strict = 0 def __init__(self, host, port=None, strict=None, - timeout=socket._GLOBAL_DEFAULT_TIMEOUT): + timeout=socket._GLOBAL_DEFAULT_TIMEOUT, source_address=None): self.timeout = timeout + self.source_address = source_address self.sock = None self._buffer = [] self.__response = None @@ -707,7 +708,7 @@ def connect(self): """Connect to the host and port specified in __init__.""" self.sock = socket.create_connection((self.host,self.port), - self.timeout) + self.timeout, self.source_address) if self._tunnel_host: self._tunnel() @@ -1042,8 +1043,10 @@ default_port = HTTPS_PORT def __init__(self, host, port=None, key_file=None, cert_file=None, - strict=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT): - HTTPConnection.__init__(self, host, port, strict, timeout) + strict=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, + source_address=None): + super(HTTPSConnection, self).__init__(host, port, strict, timeout, + source_address) self.key_file = key_file self.cert_file = cert_file @@ -1051,7 +1054,7 @@ "Connect to a host on a given (SSL) port." sock = socket.create_connection((self.host, self.port), - self.timeout) + self.timeout, self.source_address) if self._tunnel_host: self.sock = sock Modified: python/branches/py3k/Lib/socket.py ============================================================================== --- python/branches/py3k/Lib/socket.py (original) +++ python/branches/py3k/Lib/socket.py Sun Jan 3 04:28:29 2010 @@ -23,7 +23,8 @@ inet_ntoa() -- convert 32-bit packed format IP to string (123.45.67.89) socket.getdefaulttimeout() -- get the default timeout value socket.setdefaulttimeout() -- set the default timeout value -create_connection() -- connects to an address, with an optional timeout +create_connection() -- connects to an address, with an optional timeout and + optional source address. [*] not available on all platforms! @@ -276,7 +277,8 @@ _GLOBAL_DEFAULT_TIMEOUT = object() -def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT): +def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT, + source_address=None): """Connect to *address* and return the socket object. Convenience function. Connect to *address* (a 2-tuple ``(host, @@ -284,7 +286,9 @@ *timeout* parameter will set the timeout on the socket instance before attempting to connect. If no *timeout* is supplied, the global default timeout setting returned by :func:`getdefaulttimeout` - is used. + is used. If *source_address* is set it must be a tuple of (host, port) + for the socket to bind as a source address before making the connection. + An host of '' or port 0 tells the OS to use the default. """ msg = "getaddrinfo returns an empty list" @@ -296,6 +300,8 @@ sock = socket(af, socktype, proto) if timeout is not _GLOBAL_DEFAULT_TIMEOUT: sock.settimeout(timeout) + if source_address: + sock.bind(source_address) sock.connect(sa) return sock Modified: python/branches/py3k/Lib/test/test_httplib.py ============================================================================== --- python/branches/py3k/Lib/test/test_httplib.py (original) +++ python/branches/py3k/Lib/test/test_httplib.py Sun Jan 3 04:28:29 2010 @@ -4,7 +4,8 @@ import array import socket -from unittest import TestCase +import unittest +TestCase = unittest.TestCase from test import support @@ -263,6 +264,38 @@ def test_responses(self): self.assertEquals(client.responses[client.NOT_FOUND], "Not Found") + +class SourceAddressTest(TestCase): + def setUp(self): + self.serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self.port = support.bind_port(self.serv) + self.source_port = support.find_unused_port() + self.serv.listen(5) + self.conn = None + + def tearDown(self): + if self.conn: + self.conn.close() + self.conn = None + self.serv.close() + self.serv = None + + def testHTTPConnectionSourceAddress(self): + self.conn = client.HTTPConnection(HOST, self.port, + source_address=('', self.source_port)) + self.conn.connect() + self.assertEqual(self.conn.sock.getsockname()[1], self.source_port) + + @unittest.skipIf(not hasattr(client, 'HTTPSConnection'), + 'http.client.HTTPSConnection not defined') + def testHTTPSConnectionSourceAddress(self): + self.conn = client.HTTPSConnection(HOST, self.port, + source_address=('', self.source_port)) + # We don't test anything here other the constructor not barfing as + # this code doesn't deal with setting up an active running SSL server + # for an ssl_wrapped connect() to actually return from. + + class TimeoutTest(TestCase): PORT = None @@ -390,7 +423,7 @@ def test_main(verbose=None): support.run_unittest(HeaderTests, OfflineTest, BasicTest, TimeoutTest, - HTTPSTimeoutTest, RequestBodyTest) + HTTPSTimeoutTest, RequestBodyTest, SourceAddressTest) if __name__ == '__main__': test_main() Modified: python/branches/py3k/Lib/test/test_socket.py ============================================================================== --- python/branches/py3k/Lib/test/test_socket.py (original) +++ python/branches/py3k/Lib/test/test_socket.py Sun Jan 3 04:28:29 2010 @@ -993,7 +993,7 @@ ThreadableTest.__init__(self) def clientSetUp(self): - pass + self.source_port = support.find_unused_port() def clientTearDown(self): self.cli.close() @@ -1008,6 +1008,19 @@ self.cli = socket.create_connection((HOST, self.port), timeout=30) self.assertEqual(self.cli.family, 2) + testSourcePort = _justAccept + def _testSourcePort(self): + self.cli = socket.create_connection((HOST, self.port), timeout=30, + source_address=('', self.source_port)) + self.assertEqual(self.cli.getsockname()[1], self.source_port) + + testSourceAddress = _justAccept + def _testSourceAddress(self): + self.cli = socket.create_connection( + (HOST, self.port), 30, ('127.0.0.1', self.source_port)) + self.assertEqual(self.cli.getsockname(), + ('127.0.0.1', self.source_port)) + testTimeoutDefault = _justAccept def _testTimeoutDefault(self): # passing no explicit timeout uses socket's global default Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Sun Jan 3 04:28:29 2010 @@ -191,6 +191,11 @@ Library ------- +_ Issue #3972: http.client.HTTPConnection now accepts an optional source_address + parameter to allow specifying where your connections come from. + +- socket.create_connection now accepts an optional source_address parameter. + - Issue #5511: now zipfile.ZipFile can be used as a context manager. Initial patch by Brian Curtin. From python-checkins at python.org Sun Jan 3 09:36:45 2010 From: python-checkins at python.org (kurt.kaiser) Date: Sun, 03 Jan 2010 08:36:45 -0000 Subject: [Python-checkins] r77266 - python/trunk/Misc/build.sh Message-ID: Author: kurt.kaiser Date: Sun Jan 3 09:36:45 2010 New Revision: 77266 Log: r77152 to Doc/Makefile broke doc build due to (at least some) make binaries running clean prereq after checkout. 1. So, fix the insane make call in build.sh - seems to solve it. 2. Fix a missing redirection. 3. Check in the rsync opts that actually work during upload. Modified: python/trunk/Misc/build.sh Modified: python/trunk/Misc/build.sh ============================================================================== --- python/trunk/Misc/build.sh (original) +++ python/trunk/Misc/build.sh Sun Jan 3 09:36:45 2010 @@ -55,7 +55,7 @@ REMOTE_DIR="/data/ftp.python.org/pub/docs.python.org/dev/" RESULT_FILE="$DIR/build/index.html" INSTALL_DIR="/tmp/python-test/local" -RSYNC_OPTS="-aC -e ssh" +RSYNC_OPTS="-C -e ssh -rlogD" # Always run the installed version of Python. PYTHON=$INSTALL_DIR/bin/python @@ -134,7 +134,7 @@ ## setup cd $DIR -make clobber /dev/null 2>&1 +make clobber > /dev/null 2>&1 cp -p Modules/Setup.dist Modules/Setup # But maybe there was no Makefile - we are only building docs. Clear build: rm -rf build/ @@ -273,7 +273,7 @@ err=1 else make clean > ../build/$F 2>&1 - make checkout update html >> ../build/$F 2>&1 + make html >> ../build/$F 2>&1 err=$? fi update_status "Making doc" "$F" $start From python-checkins at python.org Sun Jan 3 10:01:27 2010 From: python-checkins at python.org (ezio.melotti) Date: Sun, 03 Jan 2010 09:01:27 -0000 Subject: [Python-checkins] r77267 - python/trunk/Doc/library/optparse.rst Message-ID: Author: ezio.melotti Date: Sun Jan 3 10:01:27 2010 New Revision: 77267 Log: #7618: fix highlight of code blocks Modified: python/trunk/Doc/library/optparse.rst Modified: python/trunk/Doc/library/optparse.rst ============================================================================== --- python/trunk/Doc/library/optparse.rst (original) +++ python/trunk/Doc/library/optparse.rst Sun Jan 3 10:01:27 2010 @@ -55,7 +55,9 @@ -h --help -and :mod:`optparse` will print out a brief summary of your script's options:: +and :mod:`optparse` will print out a brief summary of your script's options: + +.. code-block:: text usage: [options] @@ -130,12 +132,16 @@ an argument that follows an option, is closely associated with that option, and is consumed from the argument list when that option is. With :mod:`optparse`, option arguments may either be in a separate argument from - their option:: + their option: + + .. code-block:: text -f foo --file foo - or included in the same argument:: + or included in the same argument: + + .. code-block:: text -ffoo --file=foo @@ -480,7 +486,9 @@ If :mod:`optparse` encounters either ``"-h"`` or ``"--help"`` on the command-line, or if you just call :meth:`parser.print_help`, it prints the -following to standard output:: +following to standard output: + +.. code-block:: text usage: [options] arg1 arg2 @@ -554,7 +562,9 @@ group.add_option("-g", action="store_true", help="Group option.") parser.add_option_group(group) -This would result in the following help output:: +This would result in the following help output: + +.. code-block:: text usage: [options] arg1 arg2 @@ -1131,7 +1141,9 @@ If :mod:`optparse` sees either ``"-h"`` or ``"--help"`` on the command line, it will print something like the following help message to stdout (assuming - ``sys.argv[0]`` is ``"foo.py"``):: + ``sys.argv[0]`` is ``"foo.py"``): + + .. code-block:: text usage: foo.py [options] @@ -1853,7 +1865,7 @@ Again we define a subclass of Option:: - class MyOption (Option): + class MyOption(Option): ACTIONS = Option.ACTIONS + ("extend",) STORE_ACTIONS = Option.STORE_ACTIONS + ("extend",) From python-checkins at python.org Sun Jan 3 10:04:20 2010 From: python-checkins at python.org (ezio.melotti) Date: Sun, 03 Jan 2010 09:04:20 -0000 Subject: [Python-checkins] r77268 - in python/branches/release26-maint: Doc/library/optparse.rst Message-ID: Author: ezio.melotti Date: Sun Jan 3 10:04:19 2010 New Revision: 77268 Log: Merged revisions 77267 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77267 | ezio.melotti | 2010-01-03 11:01:27 +0200 (Sun, 03 Jan 2010) | 1 line #7618: fix highlight of code blocks ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Doc/library/optparse.rst Modified: python/branches/release26-maint/Doc/library/optparse.rst ============================================================================== --- python/branches/release26-maint/Doc/library/optparse.rst (original) +++ python/branches/release26-maint/Doc/library/optparse.rst Sun Jan 3 10:04:19 2010 @@ -55,7 +55,9 @@ -h --help -and :mod:`optparse` will print out a brief summary of your script's options:: +and :mod:`optparse` will print out a brief summary of your script's options: + +.. code-block:: text usage: [options] @@ -130,12 +132,16 @@ an argument that follows an option, is closely associated with that option, and is consumed from the argument list when that option is. With :mod:`optparse`, option arguments may either be in a separate argument from - their option:: + their option: + + .. code-block:: text -f foo --file foo - or included in the same argument:: + or included in the same argument: + + .. code-block:: text -ffoo --file=foo @@ -482,7 +488,9 @@ If :mod:`optparse` encounters either ``"-h"`` or ``"--help"`` on the command-line, or if you just call :meth:`parser.print_help`, it prints the -following to standard output:: +following to standard output: + +.. code-block:: text usage: [options] arg1 arg2 @@ -556,7 +564,9 @@ group.add_option("-g", action="store_true", help="Group option.") parser.add_option_group(group) -This would result in the following help output:: +This would result in the following help output: + +.. code-block:: text usage: [options] arg1 arg2 @@ -1133,7 +1143,9 @@ If :mod:`optparse` sees either ``"-h"`` or ``"--help"`` on the command line, it will print something like the following help message to stdout (assuming - ``sys.argv[0]`` is ``"foo.py"``):: + ``sys.argv[0]`` is ``"foo.py"``): + + .. code-block:: text usage: foo.py [options] @@ -1855,7 +1867,7 @@ Again we define a subclass of Option:: - class MyOption (Option): + class MyOption(Option): ACTIONS = Option.ACTIONS + ("extend",) STORE_ACTIONS = Option.STORE_ACTIONS + ("extend",) From python-checkins at python.org Sun Jan 3 10:06:03 2010 From: python-checkins at python.org (ezio.melotti) Date: Sun, 03 Jan 2010 09:06:03 -0000 Subject: [Python-checkins] r77269 - in python/branches/py3k: Doc/library/optparse.rst Message-ID: Author: ezio.melotti Date: Sun Jan 3 10:06:02 2010 New Revision: 77269 Log: Merged revisions 77267 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77267 | ezio.melotti | 2010-01-03 11:01:27 +0200 (Sun, 03 Jan 2010) | 1 line #7618: fix highlight of code blocks ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/library/optparse.rst Modified: python/branches/py3k/Doc/library/optparse.rst ============================================================================== --- python/branches/py3k/Doc/library/optparse.rst (original) +++ python/branches/py3k/Doc/library/optparse.rst Sun Jan 3 10:06:02 2010 @@ -51,7 +51,9 @@ -h --help -and :mod:`optparse` will print out a brief summary of your script's options:: +and :mod:`optparse` will print out a brief summary of your script's options: + +.. code-block:: text usage: [options] @@ -126,12 +128,16 @@ an argument that follows an option, is closely associated with that option, and is consumed from the argument list when that option is. With :mod:`optparse`, option arguments may either be in a separate argument from - their option:: + their option: + + .. code-block:: text -f foo --file foo - or included in the same argument:: + or included in the same argument: + + .. code-block:: text -ffoo --file=foo @@ -476,7 +482,9 @@ If :mod:`optparse` encounters either ``"-h"`` or ``"--help"`` on the command-line, or if you just call :meth:`parser.print_help`, it prints the -following to standard output:: +following to standard output: + +.. code-block:: text usage: [options] arg1 arg2 @@ -549,7 +557,9 @@ group.add_option("-g", action="store_true", help="Group option.") parser.add_option_group(group) -This would result in the following help output:: +This would result in the following help output: + +.. code-block:: text usage: [options] arg1 arg2 @@ -1126,7 +1136,9 @@ If :mod:`optparse` sees either ``"-h"`` or ``"--help"`` on the command line, it will print something like the following help message to stdout (assuming - ``sys.argv[0]`` is ``"foo.py"``):: + ``sys.argv[0]`` is ``"foo.py"``): + + .. code-block:: text usage: foo.py [options] @@ -1848,7 +1860,7 @@ Again we define a subclass of Option:: - class MyOption (Option): + class MyOption(Option): ACTIONS = Option.ACTIONS + ("extend",) STORE_ACTIONS = Option.STORE_ACTIONS + ("extend",) From python-checkins at python.org Sun Jan 3 10:08:34 2010 From: python-checkins at python.org (ezio.melotti) Date: Sun, 03 Jan 2010 09:08:34 -0000 Subject: [Python-checkins] r77270 - in python/branches/release31-maint: Doc/library/optparse.rst Message-ID: Author: ezio.melotti Date: Sun Jan 3 10:08:34 2010 New Revision: 77270 Log: Merged revisions 77269 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77269 | ezio.melotti | 2010-01-03 11:06:02 +0200 (Sun, 03 Jan 2010) | 9 lines Merged revisions 77267 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77267 | ezio.melotti | 2010-01-03 11:01:27 +0200 (Sun, 03 Jan 2010) | 1 line #7618: fix highlight of code blocks ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Doc/library/optparse.rst Modified: python/branches/release31-maint/Doc/library/optparse.rst ============================================================================== --- python/branches/release31-maint/Doc/library/optparse.rst (original) +++ python/branches/release31-maint/Doc/library/optparse.rst Sun Jan 3 10:08:34 2010 @@ -51,7 +51,9 @@ -h --help -and :mod:`optparse` will print out a brief summary of your script's options:: +and :mod:`optparse` will print out a brief summary of your script's options: + +.. code-block:: text usage: [options] @@ -126,12 +128,16 @@ an argument that follows an option, is closely associated with that option, and is consumed from the argument list when that option is. With :mod:`optparse`, option arguments may either be in a separate argument from - their option:: + their option: + + .. code-block:: text -f foo --file foo - or included in the same argument:: + or included in the same argument: + + .. code-block:: text -ffoo --file=foo @@ -476,7 +482,9 @@ If :mod:`optparse` encounters either ``"-h"`` or ``"--help"`` on the command-line, or if you just call :meth:`parser.print_help`, it prints the -following to standard output:: +following to standard output: + +.. code-block:: text usage: [options] arg1 arg2 @@ -549,7 +557,9 @@ group.add_option("-g", action="store_true", help="Group option.") parser.add_option_group(group) -This would result in the following help output:: +This would result in the following help output: + +.. code-block:: text usage: [options] arg1 arg2 @@ -1126,7 +1136,9 @@ If :mod:`optparse` sees either ``"-h"`` or ``"--help"`` on the command line, it will print something like the following help message to stdout (assuming - ``sys.argv[0]`` is ``"foo.py"``):: + ``sys.argv[0]`` is ``"foo.py"``): + + .. code-block:: text usage: foo.py [options] @@ -1848,7 +1860,7 @@ Again we define a subclass of Option:: - class MyOption (Option): + class MyOption(Option): ACTIONS = Option.ACTIONS + ("extend",) STORE_ACTIONS = Option.STORE_ACTIONS + ("extend",) From python-checkins at python.org Sun Jan 3 10:09:55 2010 From: python-checkins at python.org (ezio.melotti) Date: Sun, 03 Jan 2010 09:09:55 -0000 Subject: [Python-checkins] r77271 - python/trunk/Doc/c-api/structures.rst Message-ID: Author: ezio.melotti Date: Sun Jan 3 10:09:55 2010 New Revision: 77271 Log: :stmt: -> :keyword: Modified: python/trunk/Doc/c-api/structures.rst Modified: python/trunk/Doc/c-api/structures.rst ============================================================================== --- python/trunk/Doc/c-api/structures.rst (original) +++ python/trunk/Doc/c-api/structures.rst Sun Jan 3 10:09:55 2010 @@ -283,7 +283,7 @@ :cmacro:`T_OBJECT` returns ``None`` if the member is *NULL* and :cmacro:`T_OBJECT_EX` raises an :exc:`AttributeError`. Try to use :cmacro:`T_OBJECT_EX` over :cmacro:`T_OBJECT` because :cmacro:`T_OBJECT_EX` - handles use of the :stmt:`del` statement on that attribute more correctly + handles use of the :keyword:`del` statement on that attribute more correctly than :cmacro:`T_OBJECT`. :attr:`flags` can be 0 for write and read access or :cmacro:`READONLY` for From python-checkins at python.org Sun Jan 3 10:11:04 2010 From: python-checkins at python.org (ezio.melotti) Date: Sun, 03 Jan 2010 09:11:04 -0000 Subject: [Python-checkins] r77272 - in python/branches/release26-maint: Doc/c-api/structures.rst Message-ID: Author: ezio.melotti Date: Sun Jan 3 10:11:04 2010 New Revision: 77272 Log: Merged revisions 77271 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77271 | ezio.melotti | 2010-01-03 11:09:55 +0200 (Sun, 03 Jan 2010) | 1 line :stmt: -> :keyword: ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Doc/c-api/structures.rst Modified: python/branches/release26-maint/Doc/c-api/structures.rst ============================================================================== --- python/branches/release26-maint/Doc/c-api/structures.rst (original) +++ python/branches/release26-maint/Doc/c-api/structures.rst Sun Jan 3 10:11:04 2010 @@ -283,7 +283,7 @@ :cmacro:`T_OBJECT` returns ``None`` if the member is *NULL* and :cmacro:`T_OBJECT_EX` raises an :exc:`AttributeError`. Try to use :cmacro:`T_OBJECT_EX` over :cmacro:`T_OBJECT` because :cmacro:`T_OBJECT_EX` - handles use of the :stmt:`del` statement on that attribute more correctly + handles use of the :keyword:`del` statement on that attribute more correctly than :cmacro:`T_OBJECT`. :attr:`flags` can be 0 for write and read access or :cmacro:`READONLY` for From python-checkins at python.org Sun Jan 3 10:12:00 2010 From: python-checkins at python.org (ezio.melotti) Date: Sun, 03 Jan 2010 09:12:00 -0000 Subject: [Python-checkins] r77273 - in python/branches/py3k: Doc/c-api/structures.rst Message-ID: Author: ezio.melotti Date: Sun Jan 3 10:11:59 2010 New Revision: 77273 Log: Merged revisions 77271 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77271 | ezio.melotti | 2010-01-03 11:09:55 +0200 (Sun, 03 Jan 2010) | 1 line :stmt: -> :keyword: ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/c-api/structures.rst Modified: python/branches/py3k/Doc/c-api/structures.rst ============================================================================== --- python/branches/py3k/Doc/c-api/structures.rst (original) +++ python/branches/py3k/Doc/c-api/structures.rst Sun Jan 3 10:11:59 2010 @@ -275,7 +275,7 @@ :cmacro:`T_OBJECT` returns ``None`` if the member is *NULL* and :cmacro:`T_OBJECT_EX` raises an :exc:`AttributeError`. Try to use :cmacro:`T_OBJECT_EX` over :cmacro:`T_OBJECT` because :cmacro:`T_OBJECT_EX` - handles use of the :stmt:`del` statement on that attribute more correctly + handles use of the :keyword:`del` statement on that attribute more correctly than :cmacro:`T_OBJECT`. :attr:`flags` can be 0 for write and read access or :cmacro:`READONLY` for From python-checkins at python.org Sun Jan 3 10:12:58 2010 From: python-checkins at python.org (ezio.melotti) Date: Sun, 03 Jan 2010 09:12:58 -0000 Subject: [Python-checkins] r77274 - in python/branches/release31-maint: Doc/c-api/structures.rst Message-ID: Author: ezio.melotti Date: Sun Jan 3 10:12:58 2010 New Revision: 77274 Log: Merged revisions 77273 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77273 | ezio.melotti | 2010-01-03 11:11:59 +0200 (Sun, 03 Jan 2010) | 9 lines Merged revisions 77271 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77271 | ezio.melotti | 2010-01-03 11:09:55 +0200 (Sun, 03 Jan 2010) | 1 line :stmt: -> :keyword: ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Doc/c-api/structures.rst Modified: python/branches/release31-maint/Doc/c-api/structures.rst ============================================================================== --- python/branches/release31-maint/Doc/c-api/structures.rst (original) +++ python/branches/release31-maint/Doc/c-api/structures.rst Sun Jan 3 10:12:58 2010 @@ -275,7 +275,7 @@ :cmacro:`T_OBJECT` returns ``None`` if the member is *NULL* and :cmacro:`T_OBJECT_EX` raises an :exc:`AttributeError`. Try to use :cmacro:`T_OBJECT_EX` over :cmacro:`T_OBJECT` because :cmacro:`T_OBJECT_EX` - handles use of the :stmt:`del` statement on that attribute more correctly + handles use of the :keyword:`del` statement on that attribute more correctly than :cmacro:`T_OBJECT`. :attr:`flags` can be 0 for write and read access or :cmacro:`READONLY` for From nnorwitz at gmail.com Sun Jan 3 10:19:09 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 3 Jan 2010 04:19:09 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100103091909.GA22900@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [868697 refs] From nnorwitz at gmail.com Sun Jan 3 10:40:22 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 3 Jan 2010 04:40:22 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100103094022.GA27852@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19567 refs] [19567 refs] [19567 refs] [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [867597 refs] From python-checkins at python.org Sun Jan 3 13:03:04 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 03 Jan 2010 12:03:04 -0000 Subject: [Python-checkins] r77275 - python/trunk/Modules/mathmodule.c Message-ID: Author: mark.dickinson Date: Sun Jan 3 13:03:03 2010 New Revision: 77275 Log: Make use of PyLong_AsLongAndOverflow in math_ldexp. Modified: python/trunk/Modules/mathmodule.c Modified: python/trunk/Modules/mathmodule.c ============================================================================== --- python/trunk/Modules/mathmodule.c (original) +++ python/trunk/Modules/mathmodule.c Sun Jan 3 13:03:03 2010 @@ -1175,31 +1175,18 @@ double x, r; PyObject *oexp; long exp; + int overflow; if (! PyArg_ParseTuple(args, "dO:ldexp", &x, &oexp)) return NULL; - if (PyLong_Check(oexp)) { + if (PyLong_Check(oexp) || PyInt_Check(oexp)) { /* on overflow, replace exponent with either LONG_MAX or LONG_MIN, depending on the sign. */ - exp = PyLong_AsLong(oexp); - if (exp == -1 && PyErr_Occurred()) { - if (PyErr_ExceptionMatches(PyExc_OverflowError)) { - if (Py_SIZE(oexp) < 0) { - exp = LONG_MIN; - } - else { - exp = LONG_MAX; - } - PyErr_Clear(); - } - else { - /* propagate any unexpected exception */ - return NULL; - } - } - } - else if (PyInt_Check(oexp)) { - exp = PyInt_AS_LONG(oexp); + exp = PyLong_AsLongAndOverflow(oexp, &overflow); + if (exp == -1 && PyErr_Occurred()) + return NULL; + if (overflow) + exp = overflow < 0 ? LONG_MIN : LONG_MAX; } else { PyErr_SetString(PyExc_TypeError, From python-checkins at python.org Sun Jan 3 13:16:06 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 03 Jan 2010 12:16:06 -0000 Subject: [Python-checkins] r77276 - in python/branches/py3k: Modules/mathmodule.c Message-ID: Author: mark.dickinson Date: Sun Jan 3 13:16:06 2010 New Revision: 77276 Log: Merged revisions 77275 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77275 | mark.dickinson | 2010-01-03 12:03:03 +0000 (Sun, 03 Jan 2010) | 1 line Make use of PyLong_AsLongAndOverflow in math_ldexp. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Modules/mathmodule.c Modified: python/branches/py3k/Modules/mathmodule.c ============================================================================== --- python/branches/py3k/Modules/mathmodule.c (original) +++ python/branches/py3k/Modules/mathmodule.c Sun Jan 3 13:16:06 2010 @@ -1251,28 +1251,18 @@ double x, r; PyObject *oexp; long exp; + int overflow; if (! PyArg_ParseTuple(args, "dO:ldexp", &x, &oexp)) return NULL; if (PyLong_Check(oexp)) { /* on overflow, replace exponent with either LONG_MAX or LONG_MIN, depending on the sign. */ - exp = PyLong_AsLong(oexp); - if (exp == -1 && PyErr_Occurred()) { - if (PyErr_ExceptionMatches(PyExc_OverflowError)) { - if (Py_SIZE(oexp) < 0) { - exp = LONG_MIN; - } - else { - exp = LONG_MAX; - } - PyErr_Clear(); - } - else { - /* propagate any unexpected exception */ - return NULL; - } - } + exp = PyLong_AsLongAndOverflow(oexp, &overflow); + if (exp == -1 && PyErr_Occurred()) + return NULL; + if (overflow) + exp = overflow < 0 ? LONG_MIN : LONG_MAX; } else { PyErr_SetString(PyExc_TypeError, From python-checkins at python.org Sun Jan 3 13:17:28 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 03 Jan 2010 12:17:28 -0000 Subject: [Python-checkins] r77277 - python/branches/release26-maint Message-ID: Author: mark.dickinson Date: Sun Jan 3 13:17:28 2010 New Revision: 77277 Log: Blocked revisions 77275 via svnmerge ........ r77275 | mark.dickinson | 2010-01-03 12:03:03 +0000 (Sun, 03 Jan 2010) | 1 line Make use of PyLong_AsLongAndOverflow in math_ldexp. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Sun Jan 3 13:18:27 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 03 Jan 2010 12:18:27 -0000 Subject: [Python-checkins] r77278 - python/branches/release31-maint Message-ID: Author: mark.dickinson Date: Sun Jan 3 13:18:26 2010 New Revision: 77278 Log: Blocked revisions 77276 via svnmerge ................ r77276 | mark.dickinson | 2010-01-03 12:16:06 +0000 (Sun, 03 Jan 2010) | 9 lines Merged revisions 77275 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77275 | mark.dickinson | 2010-01-03 12:03:03 +0000 (Sun, 03 Jan 2010) | 1 line Make use of PyLong_AsLongAndOverflow in math_ldexp. ........ ................ Modified: python/branches/release31-maint/ (props changed) From python-checkins at python.org Sun Jan 3 14:05:39 2010 From: python-checkins at python.org (georg.brandl) Date: Sun, 03 Jan 2010 13:05:39 -0000 Subject: [Python-checkins] r77279 - python/trunk/Misc/build.sh Message-ID: Author: georg.brandl Date: Sun Jan 3 14:05:39 2010 New Revision: 77279 Log: Update doc build step. Modified: python/trunk/Misc/build.sh Modified: python/trunk/Misc/build.sh ============================================================================== --- python/trunk/Misc/build.sh (original) +++ python/trunk/Misc/build.sh Sun Jan 3 14:05:39 2010 @@ -257,25 +257,9 @@ cd $DIR/Doc F="make-doc.out" start=`current_time` -# XXX(nnorwitz): For now, keep the code that checks for a conflicted file until -# after the first release of 2.6a1 or 3.0a1. At that point, it will be clear -# if there will be a similar problem with the new doc system. - -# Doc/commontex/boilerplate.tex is expected to always have an outstanding -# modification for the date. When a release is cut, a conflict occurs. -# This allows us to detect this problem and not try to build the docs -# which will definitely fail with a conflict. -#CONFLICTED_FILE=commontex/boilerplate.tex -#conflict_count=`grep -c "<<<" $CONFLICTED_FILE` -conflict_count=0 -if [ $conflict_count != 0 ]; then - echo "Conflict detected in $CONFLICTED_FILE. Doc build skipped." > ../build/$F - err=1 -else - make clean > ../build/$F 2>&1 - make html >> ../build/$F 2>&1 - err=$? -fi +make clean > ../build/$F 2>&1 +make checkout html >> ../build/$F 2>&1 +err=$? update_status "Making doc" "$F" $start if [ $err != 0 ]; then NUM_FAILURES=1 From nnorwitz at gmail.com Sun Jan 3 14:29:29 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 3 Jan 2010 08:29:29 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100103132929.GA20302@kbk-i386-bb.psfb.org> 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-28334 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [21174 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [885210 refs] From nnorwitz at gmail.com Sun Jan 3 14:43:20 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 3 Jan 2010 08:43:20 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100103134320.GA30303@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils Checking out Sphinx... A tools/sphinx/jinja2glue.py A tools/sphinx/quickstart.py A tools/sphinx/theming.py A tools/sphinx/pycode A tools/sphinx/pycode/nodes.py A tools/sphinx/pycode/Grammar.txt A tools/sphinx/pycode/__init__.py A tools/sphinx/pycode/pgen2 A tools/sphinx/pycode/pgen2/tokenize.py A tools/sphinx/pycode/pgen2/pgen.py A tools/sphinx/pycode/pgen2/parse.py A tools/sphinx/pycode/pgen2/driver.py A tools/sphinx/pycode/pgen2/__init__.py A tools/sphinx/pycode/pgen2/literals.py A tools/sphinx/pycode/pgen2/token.py A tools/sphinx/pycode/pgen2/grammar.py A tools/sphinx/themes A tools/sphinx/themes/sphinxdoc A tools/sphinx/themes/sphinxdoc/layout.html A tools/sphinx/themes/sphinxdoc/theme.conf A tools/sphinx/themes/sphinxdoc/static A tools/sphinx/themes/sphinxdoc/static/contents.png A tools/sphinx/themes/sphinxdoc/static/navigation.png A tools/sphinx/themes/sphinxdoc/static/sphinxdoc.css A tools/sphinx/themes/basic A tools/sphinx/themes/basic/page.html A tools/sphinx/themes/basic/layout.html A tools/sphinx/themes/basic/genindex-single.html A tools/sphinx/themes/basic/genindex.html A tools/sphinx/themes/basic/opensearch.xml A tools/sphinx/themes/basic/theme.conf A tools/sphinx/themes/basic/static A tools/sphinx/themes/basic/static/doctools.js A tools/sphinx/themes/basic/static/searchtools.js A tools/sphinx/themes/basic/static/file.png A tools/sphinx/themes/basic/static/plus.png A tools/sphinx/themes/basic/static/basic.css A tools/sphinx/themes/basic/static/jquery.js A tools/sphinx/themes/basic/static/minus.png A tools/sphinx/themes/basic/changes A tools/sphinx/themes/basic/changes/versionchanges.html A tools/sphinx/themes/basic/changes/frameset.html A tools/sphinx/themes/basic/changes/rstsource.html A tools/sphinx/themes/basic/search.html A tools/sphinx/themes/basic/defindex.html A tools/sphinx/themes/basic/modindex.html A tools/sphinx/themes/basic/genindex-split.html A tools/sphinx/themes/default A tools/sphinx/themes/default/theme.conf A tools/sphinx/themes/default/static A tools/sphinx/themes/default/static/default.css_t A tools/sphinx/themes/traditional A tools/sphinx/themes/traditional/theme.conf A tools/sphinx/themes/traditional/static A tools/sphinx/themes/traditional/static/traditional.css A tools/sphinx/setup_command.py A tools/sphinx/__init__.py A tools/sphinx/application.py A tools/sphinx/environment.py A tools/sphinx/search.py A tools/sphinx/config.py A tools/sphinx/highlighting.py A tools/sphinx/writers A tools/sphinx/writers/latex.py A tools/sphinx/writers/__init__.py A tools/sphinx/writers/html.py A tools/sphinx/writers/text.py A tools/sphinx/locale A tools/sphinx/locale/__init__.py A tools/sphinx/locale/ru A tools/sphinx/locale/ru/LC_MESSAGES A tools/sphinx/locale/ru/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/ru/LC_MESSAGES/sphinx.js A tools/sphinx/locale/ru/LC_MESSAGES/sphinx.po A tools/sphinx/locale/de A tools/sphinx/locale/de/LC_MESSAGES A tools/sphinx/locale/de/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/de/LC_MESSAGES/sphinx.js A tools/sphinx/locale/de/LC_MESSAGES/sphinx.po A tools/sphinx/locale/ja A tools/sphinx/locale/ja/LC_MESSAGES A tools/sphinx/locale/ja/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/ja/LC_MESSAGES/sphinx.js A tools/sphinx/locale/ja/LC_MESSAGES/sphinx.po A tools/sphinx/locale/zh_TW A tools/sphinx/locale/zh_TW/LC_MESSAGES A tools/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js A tools/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po A tools/sphinx/locale/fi A tools/sphinx/locale/fi/LC_MESSAGES A tools/sphinx/locale/fi/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/fi/LC_MESSAGES/sphinx.js A tools/sphinx/locale/fi/LC_MESSAGES/sphinx.po A tools/sphinx/locale/uk_UA A tools/sphinx/locale/uk_UA/LC_MESSAGES A tools/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js A tools/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po A tools/sphinx/locale/cs A tools/sphinx/locale/cs/LC_MESSAGES A tools/sphinx/locale/cs/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/cs/LC_MESSAGES/sphinx.js A tools/sphinx/locale/cs/LC_MESSAGES/sphinx.po A tools/sphinx/locale/pt_BR A tools/sphinx/locale/pt_BR/LC_MESSAGES A tools/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js A tools/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po A tools/sphinx/locale/es A tools/sphinx/locale/es/LC_MESSAGES A tools/sphinx/locale/es/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/es/LC_MESSAGES/sphinx.js A tools/sphinx/locale/es/LC_MESSAGES/sphinx.po A tools/sphinx/locale/fr A tools/sphinx/locale/fr/LC_MESSAGES A tools/sphinx/locale/fr/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/fr/LC_MESSAGES/sphinx.js A tools/sphinx/locale/fr/LC_MESSAGES/sphinx.po A tools/sphinx/locale/nl A tools/sphinx/locale/nl/LC_MESSAGES A tools/sphinx/locale/nl/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/nl/LC_MESSAGES/sphinx.js A tools/sphinx/locale/nl/LC_MESSAGES/sphinx.po A tools/sphinx/locale/sphinx.pot A tools/sphinx/locale/pl A tools/sphinx/locale/pl/LC_MESSAGES A tools/sphinx/locale/pl/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/pl/LC_MESSAGES/sphinx.js A tools/sphinx/locale/pl/LC_MESSAGES/sphinx.po A tools/sphinx/locale/it A tools/sphinx/locale/it/LC_MESSAGES A tools/sphinx/locale/it/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/it/LC_MESSAGES/sphinx.js A tools/sphinx/locale/it/LC_MESSAGES/sphinx.po A tools/sphinx/locale/sl A tools/sphinx/locale/sl/LC_MESSAGES A tools/sphinx/locale/sl/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/sl/LC_MESSAGES/sphinx.js A tools/sphinx/locale/sl/LC_MESSAGES/sphinx.po A tools/sphinx/ext A tools/sphinx/ext/graphviz.py A tools/sphinx/ext/coverage.py A tools/sphinx/ext/intersphinx.py A tools/sphinx/ext/inheritance_diagram.py A tools/sphinx/ext/autodoc.py A tools/sphinx/ext/pngmath.py A tools/sphinx/ext/__init__.py A tools/sphinx/ext/autosummary A tools/sphinx/ext/autosummary/generate.py A tools/sphinx/ext/autosummary/__init__.py A tools/sphinx/ext/autosummary/templates A tools/sphinx/ext/autosummary/templates/module A tools/sphinx/ext/refcounting.py A tools/sphinx/ext/ifconfig.py A tools/sphinx/ext/mathbase.py A tools/sphinx/ext/doctest.py A tools/sphinx/ext/todo.py A tools/sphinx/ext/jsmath.py A tools/sphinx/directives A tools/sphinx/directives/code.py A tools/sphinx/directives/desc.py A tools/sphinx/directives/__init__.py A tools/sphinx/directives/other.py A tools/sphinx/cmdline.py A tools/sphinx/errors.py A tools/sphinx/texinputs A tools/sphinx/texinputs/python.ist A tools/sphinx/texinputs/howto.cls A tools/sphinx/texinputs/tabulary.sty A tools/sphinx/texinputs/sphinx.sty A tools/sphinx/texinputs/fncychap.sty A tools/sphinx/texinputs/Makefile A tools/sphinx/texinputs/manual.cls A tools/sphinx/addnodes.py A tools/sphinx/builders A tools/sphinx/builders/changes.py A tools/sphinx/builders/linkcheck.py A tools/sphinx/builders/htmlhelp.py A tools/sphinx/builders/latex.py A tools/sphinx/builders/qthelp.py A tools/sphinx/builders/__init__.py A tools/sphinx/builders/html.py A tools/sphinx/builders/text.py A tools/sphinx/roles.py A tools/sphinx/builder.py A tools/sphinx/util A tools/sphinx/util/pycompat.py A tools/sphinx/util/stemmer.py A tools/sphinx/util/tags.py A tools/sphinx/util/__init__.py A tools/sphinx/util/docstrings.py A tools/sphinx/util/texescape.py A tools/sphinx/util/console.py A tools/sphinx/util/jsdump.py A tools/sphinx/util/compat.py A tools/sphinx/util/png.py A tools/sphinx/util/inspect.py A tools/sphinx/util/smartypants.py Checked out revision 77279. Checking out Docutils... A tools/docutils/core.py A tools/docutils/nodes.py A tools/docutils/parsers A tools/docutils/parsers/null.py A tools/docutils/parsers/__init__.py A tools/docutils/parsers/rst A tools/docutils/parsers/rst/directives A tools/docutils/parsers/rst/directives/parts.py A tools/docutils/parsers/rst/directives/tables.py A tools/docutils/parsers/rst/directives/misc.py A tools/docutils/parsers/rst/directives/body.py A tools/docutils/parsers/rst/directives/__init__.py A tools/docutils/parsers/rst/directives/references.py A tools/docutils/parsers/rst/directives/admonitions.py A tools/docutils/parsers/rst/directives/html.py A tools/docutils/parsers/rst/directives/images.py A tools/docutils/parsers/rst/include A tools/docutils/parsers/rst/include/isopub.txt A tools/docutils/parsers/rst/include/isobox.txt A tools/docutils/parsers/rst/include/isogrk4-wide.txt A tools/docutils/parsers/rst/include/isonum.txt A tools/docutils/parsers/rst/include/isomfrk.txt A tools/docutils/parsers/rst/include/xhtml1-lat1.txt A tools/docutils/parsers/rst/include/isomopf.txt A tools/docutils/parsers/rst/include/mmlextra-wide.txt A tools/docutils/parsers/rst/include/xhtml1-symbol.txt A tools/docutils/parsers/rst/include/mmlextra.txt A tools/docutils/parsers/rst/include/isocyr1.txt A tools/docutils/parsers/rst/include/isocyr2.txt A tools/docutils/parsers/rst/include/xhtml1-special.txt A tools/docutils/parsers/rst/include/isoamsa.txt A tools/docutils/parsers/rst/include/isoamsb.txt A tools/docutils/parsers/rst/include/isoamsc.txt A tools/docutils/parsers/rst/include/mmlalias.txt A tools/docutils/parsers/rst/include/isomfrk-wide.txt A tools/docutils/parsers/rst/include/isomopf-wide.txt A tools/docutils/parsers/rst/include/isomscr-wide.txt A tools/docutils/parsers/rst/include/isodia.txt A tools/docutils/parsers/rst/include/isoamsn.txt A tools/docutils/parsers/rst/include/isoamso.txt A tools/docutils/parsers/rst/include/isolat1.txt A tools/docutils/parsers/rst/include/isoamsr.txt A tools/docutils/parsers/rst/include/isolat2.txt A tools/docutils/parsers/rst/include/isogrk1.txt A tools/docutils/parsers/rst/include/isomscr.txt A tools/docutils/parsers/rst/include/isogrk2.txt A tools/docutils/parsers/rst/include/isogrk3.txt A tools/docutils/parsers/rst/include/isogrk4.txt A tools/docutils/parsers/rst/include/s5defs.txt A tools/docutils/parsers/rst/include/README.txt A tools/docutils/parsers/rst/include/isotech.txt A tools/docutils/parsers/rst/__init__.py A tools/docutils/parsers/rst/languages A tools/docutils/parsers/rst/languages/sv.py A tools/docutils/parsers/rst/languages/de.py A tools/docutils/parsers/rst/languages/ja.py A tools/docutils/parsers/rst/languages/zh_tw.py A tools/docutils/parsers/rst/languages/he.py A tools/docutils/parsers/rst/languages/fi.py A tools/docutils/parsers/rst/languages/__init__.py A tools/docutils/parsers/rst/languages/zh_cn.py A tools/docutils/parsers/rst/languages/en.py A tools/docutils/parsers/rst/languages/eo.py A tools/docutils/parsers/rst/languages/cs.py A tools/docutils/parsers/rst/languages/pt_br.py A tools/docutils/parsers/rst/languages/es.py A tools/docutils/parsers/rst/languages/fr.py A tools/docutils/parsers/rst/languages/nl.py A tools/docutils/parsers/rst/languages/it.py A tools/docutils/parsers/rst/languages/sk.py A tools/docutils/parsers/rst/languages/ca.py A tools/docutils/parsers/rst/languages/ru.py A tools/docutils/parsers/rst/languages/af.py A tools/docutils/parsers/rst/states.py A tools/docutils/parsers/rst/roles.py A tools/docutils/parsers/rst/tableparser.py A tools/docutils/writers A tools/docutils/writers/null.py A tools/docutils/writers/html4css1 A tools/docutils/writers/html4css1/__init__.py A tools/docutils/writers/html4css1/html4css1.css A tools/docutils/writers/html4css1/template.txt A tools/docutils/writers/latex2e A tools/docutils/writers/latex2e/latex2e.tex A tools/docutils/writers/latex2e/__init__.py A tools/docutils/writers/__init__.py A tools/docutils/writers/pseudoxml.py A tools/docutils/writers/pep_html A tools/docutils/writers/pep_html/__init__.py A tools/docutils/writers/pep_html/template.txt A tools/docutils/writers/pep_html/pep.css A tools/docutils/writers/s5_html A tools/docutils/writers/s5_html/themes A tools/docutils/writers/s5_html/themes/big-white A tools/docutils/writers/s5_html/themes/big-white/framing.css A tools/docutils/writers/s5_html/themes/big-white/pretty.css A tools/docutils/writers/s5_html/themes/small-black A tools/docutils/writers/s5_html/themes/small-black/__base__ A tools/docutils/writers/s5_html/themes/small-black/pretty.css A tools/docutils/writers/s5_html/themes/default A tools/docutils/writers/s5_html/themes/default/print.css A tools/docutils/writers/s5_html/themes/default/s5-core.css A tools/docutils/writers/s5_html/themes/default/iepngfix.htc A tools/docutils/writers/s5_html/themes/default/outline.css A tools/docutils/writers/s5_html/themes/default/framing.css A tools/docutils/writers/s5_html/themes/default/slides.css A tools/docutils/writers/s5_html/themes/default/blank.gif A tools/docutils/writers/s5_html/themes/default/opera.css A tools/docutils/writers/s5_html/themes/default/pretty.css A tools/docutils/writers/s5_html/themes/default/slides.js A tools/docutils/writers/s5_html/themes/small-white A tools/docutils/writers/s5_html/themes/small-white/framing.css A tools/docutils/writers/s5_html/themes/small-white/pretty.css A tools/docutils/writers/s5_html/themes/medium-black A tools/docutils/writers/s5_html/themes/medium-black/__base__ A tools/docutils/writers/s5_html/themes/medium-black/pretty.css A tools/docutils/writers/s5_html/themes/README.txt A tools/docutils/writers/s5_html/themes/big-black A tools/docutils/writers/s5_html/themes/big-black/__base__ A tools/docutils/writers/s5_html/themes/big-black/framing.css A tools/docutils/writers/s5_html/themes/big-black/pretty.css A tools/docutils/writers/s5_html/themes/medium-white A tools/docutils/writers/s5_html/themes/medium-white/framing.css A tools/docutils/writers/s5_html/themes/medium-white/pretty.css A tools/docutils/writers/s5_html/__init__.py A tools/docutils/writers/docutils_xml.py A tools/docutils/writers/newlatex2e A tools/docutils/writers/newlatex2e/tests.txt A tools/docutils/writers/newlatex2e/__init__.py A tools/docutils/writers/newlatex2e/notes.txt A tools/docutils/writers/newlatex2e/base.tex A tools/docutils/writers/newlatex2e/unicode_map.py A tools/docutils/examples.py A tools/docutils/readers A tools/docutils/readers/standalone.py A tools/docutils/readers/python A tools/docutils/readers/python/__init__.py A tools/docutils/readers/python/pynodes.py A tools/docutils/readers/python/moduleparser.py A tools/docutils/readers/__init__.py A tools/docutils/readers/pep.py A tools/docutils/readers/doctree.py A tools/docutils/__init__.py A tools/docutils/frontend.py A tools/docutils/languages A tools/docutils/languages/sv.py A tools/docutils/languages/de.py A tools/docutils/languages/ja.py A tools/docutils/languages/zh_tw.py A tools/docutils/languages/he.py A tools/docutils/languages/fi.py A tools/docutils/languages/__init__.py A tools/docutils/languages/zh_cn.py A tools/docutils/languages/en.py A tools/docutils/languages/eo.py A tools/docutils/languages/cs.py A tools/docutils/languages/pt_br.py A tools/docutils/languages/es.py A tools/docutils/languages/fr.py A tools/docutils/languages/nl.py A tools/docutils/languages/it.py A tools/docutils/languages/sk.py A tools/docutils/languages/ca.py A tools/docutils/languages/ru.py A tools/docutils/languages/af.py A tools/docutils/utils.py A tools/docutils/docutils.conf A tools/docutils/statemachine.py A tools/docutils/io.py A tools/docutils/transforms A tools/docutils/transforms/universal.py A tools/docutils/transforms/parts.py A tools/docutils/transforms/writer_aux.py A tools/docutils/transforms/misc.py A tools/docutils/transforms/__init__.py A tools/docutils/transforms/references.py A tools/docutils/transforms/components.py A tools/docutils/transforms/frontmatter.py A tools/docutils/transforms/peps.py A tools/docutils/urischemes.py Checked out revision 77279. Checking out Jinja... A tools/jinja2/loaders.py A tools/jinja2/parser.py A tools/jinja2/_ipysupport.py A tools/jinja2/sandbox.py A tools/jinja2/visitor.py A tools/jinja2/__init__.py A tools/jinja2/utils.py A tools/jinja2/ext.py A tools/jinja2/tests.py A tools/jinja2/environment.py A tools/jinja2/defaults.py A tools/jinja2/bccache.py A tools/jinja2/filters.py A tools/jinja2/nodes.py A tools/jinja2/compiler.py A tools/jinja2/constants.py A tools/jinja2/lexer.py A tools/jinja2/exceptions.py A tools/jinja2/_speedups.c A tools/jinja2/optimizer.py A tools/jinja2/runtime.py A tools/jinja2/debug.py Checked out revision 77279. Checking out Pygments... A tools/pygments/scanner.py A tools/pygments/styles A tools/pygments/styles/vs.py A tools/pygments/styles/emacs.py A tools/pygments/styles/perldoc.py A tools/pygments/styles/trac.py A tools/pygments/styles/vim.py A tools/pygments/styles/__init__.py A tools/pygments/styles/manni.py A tools/pygments/styles/bw.py A tools/pygments/styles/tango.py A tools/pygments/styles/autumn.py A tools/pygments/styles/friendly.py A tools/pygments/styles/borland.py A tools/pygments/styles/fruity.py A tools/pygments/styles/default.py A tools/pygments/styles/murphy.py A tools/pygments/styles/pastie.py A tools/pygments/styles/colorful.py A tools/pygments/styles/native.py A tools/pygments/plugin.py A tools/pygments/__init__.py A tools/pygments/formatters A tools/pygments/formatters/terminal256.py A tools/pygments/formatters/_mapping.py A tools/pygments/formatters/rtf.py A tools/pygments/formatters/terminal.py A tools/pygments/formatters/img.py A tools/pygments/formatters/latex.py A tools/pygments/formatters/bbcode.py A tools/pygments/formatters/__init__.py A tools/pygments/formatters/svg.py A tools/pygments/formatters/other.py A tools/pygments/formatters/html.py A tools/pygments/style.py A tools/pygments/console.py A tools/pygments/formatter.py A tools/pygments/cmdline.py A tools/pygments/lexers A tools/pygments/lexers/math.py A tools/pygments/lexers/_luabuiltins.py A tools/pygments/lexers/_mapping.py A tools/pygments/lexers/compiled.py A tools/pygments/lexers/dotnet.py A tools/pygments/lexers/templates.py A tools/pygments/lexers/__init__.py A tools/pygments/lexers/_phpbuiltins.py A tools/pygments/lexers/functional.py A tools/pygments/lexers/_vimbuiltins.py A tools/pygments/lexers/_clbuiltins.py A tools/pygments/lexers/web.py A tools/pygments/lexers/parsers.py A tools/pygments/lexers/asm.py A tools/pygments/lexers/special.py A tools/pygments/lexers/other.py A tools/pygments/lexers/agile.py A tools/pygments/lexers/text.py A tools/pygments/util.py A tools/pygments/lexer.py A tools/pygments/token.py A tools/pygments/filters A tools/pygments/filters/__init__.py A tools/pygments/unistring.py A tools/pygments/filter.py Checked out revision 77279. rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils mkdir -p build/html build/doctrees python tools/sphinx-build.py -b html -d build/doctrees -D latex_paper_size= . build/html Traceback (most recent call last): File "tools/sphinx-build.py", line 23, in from sphinx import main ImportError: No module named sphinx make: *** [build] Error 1 From python-checkins at python.org Sun Jan 3 15:18:52 2010 From: python-checkins at python.org (georg.brandl) Date: Sun, 03 Jan 2010 14:18:52 -0000 Subject: [Python-checkins] r77280 - in python/branches/release26-maint: Misc/build.sh Message-ID: Author: georg.brandl Date: Sun Jan 3 15:18:52 2010 New Revision: 77280 Log: Merged revisions 74225,77266,77279 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r74225 | kurt.kaiser | 2009-07-27 18:09:28 +0200 (Mo, 27 Jul 2009) | 5 lines 1. Clean workspace more thoughly before build. 2. Add url of branch we are building to 'results' webpage. (url is now available in $repo_path, could be added to failure email.) 3. Adjust permissions to improve upload reliability. ........ r77266 | kurt.kaiser | 2010-01-03 09:36:45 +0100 (So, 03 Jan 2010) | 6 lines r77152 to Doc/Makefile broke doc build due to (at least some) make binaries running clean prereq after checkout. 1. So, fix the insane make call in build.sh - seems to solve it. 2. Fix a missing redirection. 3. Check in the rsync opts that actually work during upload. ........ r77279 | georg.brandl | 2010-01-03 14:05:39 +0100 (So, 03 Jan 2010) | 1 line Update doc build step. ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Misc/build.sh Modified: python/branches/release26-maint/Misc/build.sh ============================================================================== --- python/branches/release26-maint/Misc/build.sh (original) +++ python/branches/release26-maint/Misc/build.sh Sun Jan 3 15:18:52 2010 @@ -4,9 +4,11 @@ ## does this: ## svn up ; ./configure ; make ; make test ; make install ; cd Doc ; make ## -## Logs are kept and rsync'ed to the host. If there are test failure(s), +## Logs are kept and rsync'ed to the webhost. If there are test failure(s), ## information about the failure(s) is mailed. ## +## The user must be a member of the webmaster group locally and on webhost. +## ## This script is run on the PSF's machine as user neal via crontab. ## ## Yes, this script would probably be easier in python, but then @@ -54,7 +56,7 @@ REMOTE_DIR_DIST="/data/ftp.python.org/pub/python/doc/current" RESULT_FILE="$DIR/build/index.html" INSTALL_DIR="/tmp/python-test-2.6/local" -RSYNC_OPTS="-aC -e ssh" +RSYNC_OPTS="-C -e ssh -rlogD" # Always run the installed version of Python. PYTHON=$INSTALL_DIR/bin/python @@ -75,7 +77,8 @@ # test_compiler almost never finishes with the same number of refs # since it depends on other modules, skip it. # test_logging causes hangs, skip it. -LEAKY_SKIPS="-x test_compiler test_logging" +# KBK 21Apr09: test_httpservers causes hangs, skip for now. +LEAKY_SKIPS="-x test_compiler test_logging test_httpservers" # Change this flag to "yes" for old releases to only update/build the docs. BUILD_DISABLED="yes" @@ -132,9 +135,14 @@ ## setup cd $DIR +make clobber > /dev/null 2>&1 +cp -p Modules/Setup.dist Modules/Setup +# But maybe there was no Makefile - we are only building docs. Clear build: +rm -rf build/ mkdir -p build -rm -f $RESULT_FILE build/*.out rm -rf $INSTALL_DIR +## get the path we are building +repo_path=$(grep "url=" .svn/entries | sed -e s/\\W*url=// -e s/\"//g) ## create results file TITLE="Automated Python Build Results" @@ -152,6 +160,8 @@ echo " Hostname:`uname -n`" >> $RESULT_FILE echo " " >> $RESULT_FILE echo " Platform:`uname -srmpo`" >> $RESULT_FILE +echo " " >> $RESULT_FILE +echo " URL:$repo_path" >> $RESULT_FILE echo " " >> $RESULT_FILE echo "" >> $RESULT_FILE echo "
    " >> $RESULT_FILE @@ -222,7 +232,7 @@ start=`current_time` ## ensure that the reflog exists so the grep doesn't fail touch $REFLOG - $PYTHON $REGRTEST_ARGS -R 4:3:$REFLOG -u network,urlfetch $LEAKY_SKIPS >& build/$F + $PYTHON $REGRTEST_ARGS -R 4:3:$REFLOG -u network $LEAKY_SKIPS >& build/$F LEAK_PAT="($LEAKY_TESTS|sum=0)" NUM_FAILURES=`egrep -vc "$LEAK_PAT" $REFLOG` place_summary_first build/$F @@ -248,25 +258,9 @@ cd $DIR/Doc F="make-doc.out" start=`current_time` -# XXX(nnorwitz): For now, keep the code that checks for a conflicted file until -# after the first release of 2.6a1 or 3.0a1. At that point, it will be clear -# if there will be a similar problem with the new doc system. - -# Doc/commontex/boilerplate.tex is expected to always have an outstanding -# modification for the date. When a release is cut, a conflict occurs. -# This allows us to detect this problem and not try to build the docs -# which will definitely fail with a conflict. -#CONFLICTED_FILE=commontex/boilerplate.tex -#conflict_count=`grep -c "<<<" $CONFLICTED_FILE` -make clean -conflict_count=0 -if [ $conflict_count != 0 ]; then - echo "Conflict detected in $CONFLICTED_FILE. Doc build skipped." > ../build/$F - err=1 -else - make checkout update html >& ../build/$F - err=$? -fi +make clean > ../build/$F 2>&1 +make checkout html >> ../build/$F 2>&1 +err=$? update_status "Making doc" "$F" $start if [ $err != 0 ]; then NUM_FAILURES=1 @@ -290,6 +284,8 @@ echo "" >> $RESULT_FILE ## copy results +chgrp -R webmaster build/html +chmod -R g+w build/html rsync $RSYNC_OPTS build/html/* $REMOTE_SYSTEM:$REMOTE_DIR rsync $RSYNC_OPTS dist/* $REMOTE_SYSTEM:$REMOTE_DIR_DIST cd ../build From python-checkins at python.org Sun Jan 3 15:30:52 2010 From: python-checkins at python.org (georg.brandl) Date: Sun, 03 Jan 2010 14:30:52 -0000 Subject: [Python-checkins] r77281 - in python/branches/py3k: Misc/build.sh Message-ID: Author: georg.brandl Date: Sun Jan 3 15:30:52 2010 New Revision: 77281 Log: Merged revisions 77266,77279 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77266 | kurt.kaiser | 2010-01-03 09:36:45 +0100 (So, 03 Jan 2010) | 6 lines r77152 to Doc/Makefile broke doc build due to (at least some) make binaries running clean prereq after checkout. 1. So, fix the insane make call in build.sh - seems to solve it. 2. Fix a missing redirection. 3. Check in the rsync opts that actually work during upload. ........ r77279 | georg.brandl | 2010-01-03 14:05:39 +0100 (So, 03 Jan 2010) | 1 line Update doc build step. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Misc/build.sh Modified: python/branches/py3k/Misc/build.sh ============================================================================== --- python/branches/py3k/Misc/build.sh (original) +++ python/branches/py3k/Misc/build.sh Sun Jan 3 15:30:52 2010 @@ -55,7 +55,7 @@ REMOTE_DIR="/data/ftp.python.org/pub/docs.python.org/dev/py3k" RESULT_FILE="$DIR/build/index.html" INSTALL_DIR="/tmp/python-test-3.2/local" -RSYNC_OPTS="-aC -e ssh" +RSYNC_OPTS="-C -e ssh -rlogD" # Always run the installed version of Python. PYTHON=$INSTALL_DIR/bin/python @@ -136,7 +136,7 @@ ## setup cd $DIR -make clobber /dev/null 2>&1 +make clobber > /dev/null 2>&1 cp -p Modules/Setup.dist Modules/Setup # But maybe there was no Makefile - we are only building docs. Clear build: rm -rf build/ @@ -259,25 +259,9 @@ cd $DIR/Doc F="make-doc.out" start=`current_time` -# XXX(nnorwitz): For now, keep the code that checks for a conflicted file until -# after the first release of 2.6a1 or 3.0a1. At that point, it will be clear -# if there will be a similar problem with the new doc system. - -# Doc/commontex/boilerplate.tex is expected to always have an outstanding -# modification for the date. When a release is cut, a conflict occurs. -# This allows us to detect this problem and not try to build the docs -# which will definitely fail with a conflict. -#CONFLICTED_FILE=commontex/boilerplate.tex -#conflict_count=`grep -c "<<<" $CONFLICTED_FILE` -conflict_count=0 -if [ $conflict_count != 0 ]; then - echo "Conflict detected in $CONFLICTED_FILE. Doc build skipped." > ../build/$F - err=1 -else - make clean > ../build/$F 2>&1 - make checkout update html >> ../build/$F 2>&1 - err=$? -fi +make clean > ../build/$F 2>&1 +make checkout html >> ../build/$F 2>&1 +err=$? update_status "Making doc" "$F" $start if [ $err != 0 ]; then NUM_FAILURES=1 From python-checkins at python.org Sun Jan 3 15:33:40 2010 From: python-checkins at python.org (georg.brandl) Date: Sun, 03 Jan 2010 14:33:40 -0000 Subject: [Python-checkins] r77282 - in python/branches/release31-maint: Misc/build.sh Message-ID: Author: georg.brandl Date: Sun Jan 3 15:33:39 2010 New Revision: 77282 Log: Merged revisions 77281 via svnmerge from svn+ssh://svn.python.org/python/branches/py3k ................ r77281 | georg.brandl | 2010-01-03 15:30:52 +0100 (So, 03 Jan 2010) | 17 lines Merged revisions 77266,77279 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77266 | kurt.kaiser | 2010-01-03 09:36:45 +0100 (So, 03 Jan 2010) | 6 lines r77152 to Doc/Makefile broke doc build due to (at least some) make binaries running clean prereq after checkout. 1. So, fix the insane make call in build.sh - seems to solve it. 2. Fix a missing redirection. 3. Check in the rsync opts that actually work during upload. ........ r77279 | georg.brandl | 2010-01-03 14:05:39 +0100 (So, 03 Jan 2010) | 1 line Update doc build step. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Misc/build.sh Modified: python/branches/release31-maint/Misc/build.sh ============================================================================== --- python/branches/release31-maint/Misc/build.sh (original) +++ python/branches/release31-maint/Misc/build.sh Sun Jan 3 15:33:39 2010 @@ -55,7 +55,7 @@ REMOTE_DIR="/data/ftp.python.org/pub/www.python.org/doc/3.1" RESULT_FILE="$DIR/build/index.html" INSTALL_DIR="/tmp/python-test-3.1/local" -RSYNC_OPTS="-aC -e ssh" +RSYNC_OPTS="-C -e ssh -rlogD" # Always run the installed version of Python. PYTHON=$INSTALL_DIR/bin/python @@ -136,7 +136,7 @@ ## setup cd $DIR -make clobber /dev/null 2>&1 +make clobber > /dev/null 2>&1 cp -p Modules/Setup.dist Modules/Setup # But maybe there was no Makefile - we are only building docs. Clear build: rm -rf build/ @@ -259,25 +259,9 @@ cd $DIR/Doc F="make-doc.out" start=`current_time` -# XXX(nnorwitz): For now, keep the code that checks for a conflicted file until -# after the first release of 2.6a1 or 3.0a1. At that point, it will be clear -# if there will be a similar problem with the new doc system. - -# Doc/commontex/boilerplate.tex is expected to always have an outstanding -# modification for the date. When a release is cut, a conflict occurs. -# This allows us to detect this problem and not try to build the docs -# which will definitely fail with a conflict. -#CONFLICTED_FILE=commontex/boilerplate.tex -#conflict_count=`grep -c "<<<" $CONFLICTED_FILE` -conflict_count=0 -if [ $conflict_count != 0 ]; then - echo "Conflict detected in $CONFLICTED_FILE. Doc build skipped." > ../build/$F - err=1 -else - make clean > ../build/$F 2>&1 - make checkout update html >> ../build/$F 2>&1 - err=$? -fi +make clean > ../build/$F 2>&1 +make checkout html >> ../build/$F 2>&1 +err=$? update_status "Making doc" "$F" $start if [ $err != 0 ]; then NUM_FAILURES=1 From python-checkins at python.org Sun Jan 3 15:51:14 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sun, 03 Jan 2010 14:51:14 -0000 Subject: [Python-checkins] r77283 - python/branches/py3k/setup.py Message-ID: Author: gregory.p.smith Date: Sun Jan 3 15:51:13 2010 New Revision: 77283 Log: add missing hashlib.h deps. Modified: python/branches/py3k/setup.py Modified: python/branches/py3k/setup.py ============================================================================== --- python/branches/py3k/setup.py (original) +++ python/branches/py3k/setup.py Sun Jan 3 15:51:13 2010 @@ -606,6 +606,7 @@ # The _hashlib module wraps optimized implementations # of hash functions from the OpenSSL library. exts.append( Extension('_hashlib', ['_hashopenssl.c'], + depends = ['hashlib.h'], include_dirs = ssl_incs, library_dirs = ssl_libs, libraries = ['ssl', 'crypto']) ) @@ -617,13 +618,17 @@ min_sha2_openssl_ver = 0x00908000 if COMPILED_WITH_PYDEBUG or openssl_ver < min_sha2_openssl_ver: # OpenSSL doesn't do these until 0.9.8 so we'll bring our own hash - exts.append( Extension('_sha256', ['sha256module.c']) ) - exts.append( Extension('_sha512', ['sha512module.c']) ) + exts.append( Extension('_sha256', ['sha256module.c'], + depends=['hashlib.h']) ) + exts.append( Extension('_sha512', ['sha512module.c'], + depends=['hashlib.h']) ) if COMPILED_WITH_PYDEBUG or not have_usable_openssl: # no openssl at all, use our own md5 and sha1 - exts.append( Extension('_md5', ['md5module.c']) ) - exts.append( Extension('_sha1', ['sha1module.c']) ) + exts.append( Extension('_md5', ['md5module.c'], + depends=['hashlib.h']) ) + exts.append( Extension('_sha1', ['sha1module.c'], + depends=['hashlib.h']) ) # Modules that provide persistent dictionary-like semantics. You will # probably want to arrange for at least one of them to be available on From python-checkins at python.org Sun Jan 3 15:56:28 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sun, 03 Jan 2010 14:56:28 -0000 Subject: [Python-checkins] r77284 - python/trunk/Modules/hashlib.h Message-ID: Author: gregory.p.smith Date: Sun Jan 3 15:56:28 2010 New Revision: 77284 Log: remove an obsolete file that should've gone with r77252 Removed: python/trunk/Modules/hashlib.h Deleted: python/trunk/Modules/hashlib.h ============================================================================== --- python/trunk/Modules/hashlib.h Sun Jan 3 15:56:28 2010 +++ (empty file) @@ -1,28 +0,0 @@ -/* Common code for use by all hashlib related modules. */ - -/* - * Given a PyObject* obj, fill in the Py_buffer* viewp with the result - * of PyObject_GetBuffer. Sets and exception and issues a returns - * on any errors. - */ -#define GET_BUFFER_VIEW_OR_ERROUT(obj, viewp, error_return) do { \ - if (PyUnicode_Check((obj))) { \ - PyErr_SetString(PyExc_TypeError, \ - "Unicode-objects must be encoded before hashing");\ - return error_return; \ - } \ - if (!PyObject_CheckBuffer((obj))) { \ - PyErr_SetString(PyExc_TypeError, \ - "object supporting the buffer API required"); \ - return error_return; \ - } \ - if (PyObject_GetBuffer((obj), (viewp), PyBUF_SIMPLE) == -1) { \ - return error_return; \ - } \ - if ((viewp)->ndim > 1) { \ - PyErr_SetString(PyExc_BufferError, \ - "Buffer must be single dimension"); \ - PyBuffer_Release((viewp)); \ - return error_return; \ - } \ - } while(0); From python-checkins at python.org Sun Jan 3 15:57:46 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sun, 03 Jan 2010 14:57:46 -0000 Subject: [Python-checkins] r77285 - python/branches/py3k Message-ID: Author: gregory.p.smith Date: Sun Jan 3 15:57:46 2010 New Revision: 77285 Log: Blocked revisions 77284 via svnmerge ........ r77284 | gregory.p.smith | 2010-01-03 06:56:28 -0800 (Sun, 03 Jan 2010) | 2 lines remove an obsolete file that should've gone with r77252 ........ Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Sun Jan 3 16:05:53 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sun, 03 Jan 2010 15:05:53 -0000 Subject: [Python-checkins] r77286 - python/trunk/Lib/test/test_socket.py Message-ID: Author: gregory.p.smith Date: Sun Jan 3 16:05:52 2010 New Revision: 77286 Log: Fix testSourceAddress to not test the host, it wasn't passing on some platforms. Modified: python/trunk/Lib/test/test_socket.py Modified: python/trunk/Lib/test/test_socket.py ============================================================================== --- python/trunk/Lib/test/test_socket.py (original) +++ python/trunk/Lib/test/test_socket.py Sun Jan 3 16:05:52 2010 @@ -1010,18 +1010,13 @@ self.cli = socket.create_connection((HOST, self.port), timeout=30) self.assertEqual(self.cli.family, 2) - testSourcePort = _justAccept - def _testSourcePort(self): + testSourceAddress = _justAccept + def _testSourceAddress(self): self.cli = socket.create_connection((HOST, self.port), timeout=30, source_address=('', self.source_port)) self.assertEqual(self.cli.getsockname()[1], self.source_port) - - testSourceAddress = _justAccept - def _testSourceAddress(self): - self.cli = socket.create_connection( - (HOST, self.port), 30, ('127.0.0.1', self.source_port)) - self.assertEqual(self.cli.getsockname(), - ('127.0.0.1', self.source_port)) + # The port number being used is sufficient to show that the bind() + # call happened. testTimeoutDefault = _justAccept def _testTimeoutDefault(self): From python-checkins at python.org Sun Jan 3 16:09:32 2010 From: python-checkins at python.org (gregory.p.smith) Date: Sun, 03 Jan 2010 15:09:32 -0000 Subject: [Python-checkins] r77287 - in python/branches/py3k: Lib/test/test_socket.py Message-ID: Author: gregory.p.smith Date: Sun Jan 3 16:09:32 2010 New Revision: 77287 Log: Merged revisions 77286 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77286 | gregory.p.smith | 2010-01-03 07:05:52 -0800 (Sun, 03 Jan 2010) | 2 lines Fix testSourceAddress to not test the host, it wasn't passing on some platforms. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_socket.py Modified: python/branches/py3k/Lib/test/test_socket.py ============================================================================== --- python/branches/py3k/Lib/test/test_socket.py (original) +++ python/branches/py3k/Lib/test/test_socket.py Sun Jan 3 16:09:32 2010 @@ -1008,18 +1008,13 @@ self.cli = socket.create_connection((HOST, self.port), timeout=30) self.assertEqual(self.cli.family, 2) - testSourcePort = _justAccept - def _testSourcePort(self): + testSourceAddress = _justAccept + def _testSourceAddress(self): self.cli = socket.create_connection((HOST, self.port), timeout=30, source_address=('', self.source_port)) self.assertEqual(self.cli.getsockname()[1], self.source_port) - - testSourceAddress = _justAccept - def _testSourceAddress(self): - self.cli = socket.create_connection( - (HOST, self.port), 30, ('127.0.0.1', self.source_port)) - self.assertEqual(self.cli.getsockname(), - ('127.0.0.1', self.source_port)) + # The port number being used is sufficient to show that the bind() + # call happened. testTimeoutDefault = _justAccept def _testTimeoutDefault(self): From nnorwitz at gmail.com Sun Jan 3 22:20:13 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 3 Jan 2010 16:20:13 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100103212013.GA21353@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [868656 refs] From nnorwitz at gmail.com Sun Jan 3 22:32:02 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 3 Jan 2010 16:32:02 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100103213202.GA25445@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19567 refs] [19567 refs] [19567 refs] [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [867557 refs] From python-checkins at python.org Sun Jan 3 23:29:56 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sun, 03 Jan 2010 22:29:56 -0000 Subject: [Python-checkins] r77288 - in python/trunk: Lib/gzip.py Lib/test/test_gzip.py Misc/NEWS Message-ID: Author: antoine.pitrou Date: Sun Jan 3 23:29:56 2010 New Revision: 77288 Log: Issue #7471: Improve the performance of GzipFile's buffering mechanism, and make it implement the `io.BufferedIOBase` ABC to allow for further speedups by wrapping it in an `io.BufferedReader`. Patch by Nir Aides. Modified: python/trunk/Lib/gzip.py python/trunk/Lib/test/test_gzip.py python/trunk/Misc/NEWS Modified: python/trunk/Lib/gzip.py ============================================================================== --- python/trunk/Lib/gzip.py (original) +++ python/trunk/Lib/gzip.py Sun Jan 3 23:29:56 2010 @@ -7,6 +7,7 @@ import struct, sys, time, os import zlib +import io import __builtin__ __all__ = ["GzipFile","open"] @@ -32,7 +33,7 @@ """ return GzipFile(filename, mode, compresslevel) -class GzipFile: +class GzipFile(io.BufferedIOBase): """The GzipFile class simulates most of the methods of a file object with the exception of the readinto() and truncate() methods. @@ -97,8 +98,12 @@ self.mode = READ # Set flag indicating start of a new member self._new_member = True + # Buffer data read from gzip file. extrastart is offset in + # stream where buffer starts. extrasize is number of + # bytes remaining in buffer from current stream position. self.extrabuf = "" self.extrasize = 0 + self.extrastart = 0 self.name = filename # Starts small, scales exponentially self.min_readsize = 100 @@ -196,7 +201,6 @@ if flag & FHCRC: self.fileobj.read(2) # Read & discard the 16-bit header CRC - def write(self,data): if self.mode != WRITE: import errno @@ -204,12 +208,19 @@ if self.fileobj is None: raise ValueError, "write() on closed GzipFile object" + + # Convert data type if called by io.BufferedWriter. + if isinstance(data, memoryview): + data = data.tobytes() + if len(data) > 0: self.size = self.size + len(data) self.crc = zlib.crc32(data, self.crc) & 0xffffffffL self.fileobj.write( self.compress.compress(data) ) self.offset += len(data) + return len(data) + def read(self, size=-1): if self.mode != READ: import errno @@ -235,15 +246,14 @@ if size > self.extrasize: size = self.extrasize - chunk = self.extrabuf[:size] - self.extrabuf = self.extrabuf[size:] + offset = self.offset - self.extrastart + chunk = self.extrabuf[offset: offset + size] self.extrasize = self.extrasize - size self.offset += size return chunk def _unread(self, buf): - self.extrabuf = buf + self.extrabuf self.extrasize = len(buf) + self.extrasize self.offset -= len(buf) @@ -299,8 +309,10 @@ def _add_read_data(self, data): self.crc = zlib.crc32(data, self.crc) & 0xffffffffL - self.extrabuf = self.extrabuf + data + offset = self.offset - self.extrastart + self.extrabuf = self.extrabuf[offset:] + data self.extrasize = self.extrasize + len(data) + self.extrastart = self.offset self.size = self.size + len(data) def _read_eof(self): @@ -318,6 +330,10 @@ elif isize != (self.size & 0xffffffffL): raise IOError, "Incorrect length of data produced" + @property + def closed(self): + return self.fileobj is None + def close(self): if self.fileobj is None: return @@ -333,15 +349,6 @@ self.myfileobj.close() self.myfileobj = None - def __del__(self): - try: - if (self.myfileobj is None and - self.fileobj is None): - return - except AttributeError: - return - self.close() - def flush(self,zlib_mode=zlib.Z_SYNC_FLUSH): if self.mode == WRITE: # Ensure the compressor's buffer is flushed @@ -356,12 +363,6 @@ """ return self.fileobj.fileno() - def isatty(self): - return False - - def tell(self): - return self.offset - def rewind(self): '''Return the uncompressed stream file position indicator to the beginning of the file''' @@ -371,8 +372,18 @@ self._new_member = True self.extrabuf = "" self.extrasize = 0 + self.extrastart = 0 self.offset = 0 + def readable(self): + return self.mode == READ + + def writable(self): + return self.mode == WRITE + + def seekable(self): + return True + def seek(self, offset, whence=0): if whence: if whence == 1: @@ -395,8 +406,18 @@ self.read(1024) self.read(count % 1024) + return self.offset + def readline(self, size=-1): if size < 0: + # Shortcut common case - newline found in buffer. + offset = self.offset - self.extrastart + i = self.extrabuf.find('\n', offset) + 1 + if i > 0: + self.extrasize -= i - offset + self.offset += i - offset + return self.extrabuf[offset: i] + size = sys.maxint readsize = self.min_readsize else: @@ -426,42 +447,6 @@ self.min_readsize = min(readsize, self.min_readsize * 2, 512) return ''.join(bufs) # Return resulting line - def readlines(self, sizehint=0): - # Negative numbers result in reading all the lines - if sizehint <= 0: - sizehint = sys.maxint - L = [] - while sizehint > 0: - line = self.readline() - if line == "": - break - L.append(line) - sizehint = sizehint - len(line) - - return L - - def writelines(self, L): - for line in L: - self.write(line) - - def __iter__(self): - return self - - def next(self): - line = self.readline() - if line: - return line - else: - raise StopIteration - - def __enter__(self): - if self.fileobj is None: - raise ValueError("I/O operation on closed GzipFile object") - return self - - def __exit__(self, *args): - self.close() - def _test(): # Act like gzip; with -d, act like gunzip. Modified: python/trunk/Lib/test/test_gzip.py ============================================================================== --- python/trunk/Lib/test/test_gzip.py (original) +++ python/trunk/Lib/test/test_gzip.py Sun Jan 3 23:29:56 2010 @@ -5,6 +5,7 @@ import unittest from test import test_support import os +import io import struct gzip = test_support.import_module('gzip') @@ -80,6 +81,16 @@ zgfile.close() self.assertEquals(contents, 'a'*201) + def test_buffered_reader(self): + # Issue #7471: a GzipFile can be wrapped in a BufferedReader for + # performance. + self.test_write() + + f = gzip.GzipFile(self.filename, 'rb') + with io.BufferedReader(f) as r: + lines = [line for line in r] + + self.assertEqual(lines, 50 * data1.splitlines(True)) def test_readline(self): self.test_write() Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Jan 3 23:29:56 2010 @@ -62,7 +62,11 @@ Library ------- -_ Issue #3972: httplib.HTTPConnection now accepts an optional source_address +- Issue #7471: Improve the performance of GzipFile's buffering mechanism, + and make it implement the `io.BufferedIOBase` ABC to allow for further + speedups by wrapping it in an `io.BufferedReader`. Patch by Nir Aides. + +- Issue #3972: httplib.HTTPConnection now accepts an optional source_address parameter to allow specifying where your connections come from. - socket.create_connection now accepts an optional source_address parameter. From python-checkins at python.org Sun Jan 3 23:37:40 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sun, 03 Jan 2010 22:37:40 -0000 Subject: [Python-checkins] r77289 - in python/branches/py3k: Lib/gzip.py Lib/test/test_gzip.py Misc/NEWS Message-ID: Author: antoine.pitrou Date: Sun Jan 3 23:37:40 2010 New Revision: 77289 Log: Merged revisions 77288 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77288 | antoine.pitrou | 2010-01-03 23:29:56 +0100 (dim., 03 janv. 2010) | 5 lines Issue #7471: Improve the performance of GzipFile's buffering mechanism, and make it implement the `io.BufferedIOBase` ABC to allow for further speedups by wrapping it in an `io.BufferedReader`. Patch by Nir Aides. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/gzip.py python/branches/py3k/Lib/test/test_gzip.py python/branches/py3k/Misc/NEWS Modified: python/branches/py3k/Lib/gzip.py ============================================================================== --- python/branches/py3k/Lib/gzip.py (original) +++ python/branches/py3k/Lib/gzip.py Sun Jan 3 23:37:40 2010 @@ -8,6 +8,7 @@ import struct, sys, time, os import zlib import builtins +import io __all__ = ["GzipFile","open"] @@ -44,7 +45,7 @@ """ return GzipFile(filename, mode, compresslevel) -class GzipFile: +class GzipFile(io.BufferedIOBase): """The GzipFile class simulates most of the methods of a file object with the exception of the readinto() and truncate() methods. @@ -109,8 +110,12 @@ self.mode = READ # Set flag indicating start of a new member self._new_member = True + # Buffer data read from gzip file. extrastart is offset in + # stream where buffer starts. extrasize is number of + # bytes remaining in buffer from current stream position. self.extrabuf = b"" self.extrasize = 0 + self.extrastart = 0 self.name = filename # Starts small, scales exponentially self.min_readsize = 100 @@ -214,7 +219,6 @@ if flag & FHCRC: self.fileobj.read(2) # Read & discard the 16-bit header CRC - def write(self,data): if self.mode != WRITE: import errno @@ -222,12 +226,19 @@ if self.fileobj is None: raise ValueError("write() on closed GzipFile object") + + # Convert data type if called by io.BufferedWriter. + if isinstance(data, memoryview): + data = data.tobytes() + if len(data) > 0: self.size = self.size + len(data) self.crc = zlib.crc32(data, self.crc) & 0xffffffff self.fileobj.write( self.compress.compress(data) ) self.offset += len(data) + return len(data) + def read(self, size=-1): if self.mode != READ: import errno @@ -253,15 +264,14 @@ if size > self.extrasize: size = self.extrasize - chunk = self.extrabuf[:size] - self.extrabuf = self.extrabuf[size:] + offset = self.offset - self.extrastart + chunk = self.extrabuf[offset: offset + size] self.extrasize = self.extrasize - size self.offset += size return chunk def _unread(self, buf): - self.extrabuf = buf + self.extrabuf self.extrasize = len(buf) + self.extrasize self.offset -= len(buf) @@ -317,8 +327,10 @@ def _add_read_data(self, data): self.crc = zlib.crc32(data, self.crc) & 0xffffffff - self.extrabuf = self.extrabuf + data + offset = self.offset - self.extrastart + self.extrabuf = self.extrabuf[offset:] + data self.extrasize = self.extrasize + len(data) + self.extrastart = self.offset self.size = self.size + len(data) def _read_eof(self): @@ -336,6 +348,10 @@ elif isize != (self.size & 0xffffffff): raise IOError("Incorrect length of data produced") + @property + def closed(self): + return self.fileobj is None + def close(self): if self.fileobj is None: return @@ -351,15 +367,6 @@ self.myfileobj.close() self.myfileobj = None - def __del__(self): - try: - if (self.myfileobj is None and - self.fileobj is None): - return - except AttributeError: - return - self.close() - def flush(self,zlib_mode=zlib.Z_SYNC_FLUSH): if self.mode == WRITE: # Ensure the compressor's buffer is flushed @@ -374,12 +381,6 @@ """ return self.fileobj.fileno() - def isatty(self): - return False - - def tell(self): - return self.offset - def rewind(self): '''Return the uncompressed stream file position indicator to the beginning of the file''' @@ -389,8 +390,18 @@ self._new_member = True self.extrabuf = b"" self.extrasize = 0 + self.extrastart = 0 self.offset = 0 + def readable(self): + return self.mode == READ + + def writable(self): + return self.mode == WRITE + + def seekable(self): + return True + def seek(self, offset, whence=0): if whence: if whence == 1: @@ -414,8 +425,18 @@ self.read(1024) self.read(count % 1024) + return self.offset + def readline(self, size=-1): if size < 0: + # Shortcut common case - newline found in buffer. + offset = self.offset - self.extrastart + i = self.extrabuf.find(b'\n', offset) + 1 + if i > 0: + self.extrasize -= i - offset + self.offset += i - offset + return self.extrabuf[offset: i] + size = sys.maxsize readsize = self.min_readsize else: @@ -445,42 +466,6 @@ self.min_readsize = min(readsize, self.min_readsize * 2, 512) return b''.join(bufs) # Return resulting line - def readlines(self, sizehint=0): - # Negative numbers result in reading all the lines - if sizehint <= 0: - sizehint = sys.maxsize - L = [] - while sizehint > 0: - line = self.readline() - if line == b"": - break - L.append(line) - sizehint = sizehint - len(line) - - return L - - def writelines(self, L): - for line in L: - self.write(line) - - def __iter__(self): - return self - - def __next__(self): - line = self.readline() - if line: - return line - else: - raise StopIteration - - def __enter__(self): - if self.fileobj is None: - raise ValueError("I/O operation on closed GzipFile object") - return self - - def __exit__(self, *args): - self.close() - def _test(): # Act like gzip; with -d, act like gunzip. Modified: python/branches/py3k/Lib/test/test_gzip.py ============================================================================== --- python/branches/py3k/Lib/test/test_gzip.py (original) +++ python/branches/py3k/Lib/test/test_gzip.py Sun Jan 3 23:37:40 2010 @@ -5,6 +5,7 @@ import unittest from test import support import os +import io import struct gzip = support.import_module('gzip') @@ -80,6 +81,16 @@ zgfile.close() self.assertEquals(contents, b'a'*201) + def test_buffered_reader(self): + # Issue #7471: a GzipFile can be wrapped in a BufferedReader for + # performance. + self.test_write() + + f = gzip.GzipFile(self.filename, 'rb') + with io.BufferedReader(f) as r: + lines = [line for line in r] + + self.assertEqual(lines, 50 * data1.splitlines(True)) def test_readline(self): self.test_write() Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Sun Jan 3 23:37:40 2010 @@ -191,7 +191,11 @@ Library ------- -_ Issue #3972: http.client.HTTPConnection now accepts an optional source_address +- Issue #7471: Improve the performance of GzipFile's buffering mechanism, + and make it implement the `io.BufferedIOBase` ABC to allow for further + speedups by wrapping it in an `io.BufferedReader`. Patch by Nir Aides. + +- Issue #3972: http.client.HTTPConnection now accepts an optional source_address parameter to allow specifying where your connections come from. - socket.create_connection now accepts an optional source_address parameter. From python-checkins at python.org Sun Jan 3 23:38:50 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sun, 03 Jan 2010 22:38:50 -0000 Subject: [Python-checkins] r77290 - python/trunk/Misc/ACKS Message-ID: Author: antoine.pitrou Date: Sun Jan 3 23:38:50 2010 New Revision: 77290 Log: Credit Nir Aides for r77288 Modified: python/trunk/Misc/ACKS Modified: python/trunk/Misc/ACKS ============================================================================== --- python/trunk/Misc/ACKS (original) +++ python/trunk/Misc/ACKS Sun Jan 3 23:38:50 2010 @@ -13,6 +13,7 @@ David Abrahams Jim Ahlstrom Farhan Ahmad +Nir Aides Jyrki Alakuijala Billy G. Allie Kevin Altis From python-checkins at python.org Sun Jan 3 23:39:36 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sun, 03 Jan 2010 22:39:36 -0000 Subject: [Python-checkins] r77291 - in python/branches/py3k: Misc/ACKS Message-ID: Author: antoine.pitrou Date: Sun Jan 3 23:39:36 2010 New Revision: 77291 Log: Merged revisions 77290 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77290 | antoine.pitrou | 2010-01-03 23:38:50 +0100 (dim., 03 janv. 2010) | 3 lines Credit Nir Aides for r77288 ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Misc/ACKS Modified: python/branches/py3k/Misc/ACKS ============================================================================== --- python/branches/py3k/Misc/ACKS (original) +++ python/branches/py3k/Misc/ACKS Sun Jan 3 23:39:36 2010 @@ -12,6 +12,7 @@ David Abrahams Jim Ahlstrom Farhan Ahmad +Nir Aides Jyrki Alakuijala Billy G. Allie Kevin Altis From solipsis at pitrou.net Mon Jan 4 00:50:26 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Mon, 4 Jan 2010 00:50:26 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77287): sum=0 Message-ID: <20100103235026.1DB9C17714@ns6635.ovh.net> py3k results for svn r77287 (hg cset c0369a905e7a) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogGs2Iq_', '-x', 'test_httpservers'] From nnorwitz at gmail.com Mon Jan 4 00:58:04 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 3 Jan 2010 18:58:04 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100103235804.GA31053@kbk-i386-bb.psfb.org> 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-23732 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [885196 refs] From python-checkins at python.org Mon Jan 4 01:43:01 2010 From: python-checkins at python.org (benjamin.peterson) Date: Mon, 04 Jan 2010 00:43:01 -0000 Subject: [Python-checkins] r77292 - in python/trunk: Lib/test/test_descr.py Misc/NEWS Objects/complexobject.c Message-ID: Author: benjamin.peterson Date: Mon Jan 4 01:43:01 2010 New Revision: 77292 Log: do correct lookup of the __complex__ method Modified: python/trunk/Lib/test/test_descr.py python/trunk/Misc/NEWS python/trunk/Objects/complexobject.c Modified: python/trunk/Lib/test/test_descr.py ============================================================================== --- python/trunk/Lib/test/test_descr.py (original) +++ python/trunk/Lib/test/test_descr.py Mon Jan 4 01:43:01 2010 @@ -1691,6 +1691,8 @@ return [] def zero(self): return 0 + def complex_num(self): + return 1j def stop(self): raise StopIteration def return_true(self, thing=None): @@ -1725,6 +1727,7 @@ set(("__bases__",)), {}), ("__enter__", run_context, iden, set(), {"__exit__" : swallow}), ("__exit__", run_context, swallow, set(), {"__enter__" : iden}), + ("__complex__", complex, complex_num, set(), {}), ] class Checker(object): Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Mon Jan 4 01:43:01 2010 @@ -12,6 +12,9 @@ Core and Builtins ----------------- +- The __complex__ method is now looked up on the class of instances to make it + consistent with other special methods. + - Issue #7462: Implement the stringlib fast search algorithm for the `rfind`, `rindex`, `rsplit` and `rpartition` methods. Patch by Florent Xicluna. Modified: python/trunk/Objects/complexobject.c ============================================================================== --- python/trunk/Objects/complexobject.c (original) +++ python/trunk/Objects/complexobject.c Mon Jan 4 01:43:01 2010 @@ -1114,21 +1114,27 @@ return NULL; } - /* XXX Hack to support classes with __complex__ method */ if (complexstr == NULL) { complexstr = PyString_InternFromString("__complex__"); if (complexstr == NULL) return NULL; } - f = PyObject_GetAttr(r, complexstr); - if (f == NULL) - PyErr_Clear(); + if (PyInstance_Check(r)) { + f = PyObject_GetAttr(r, complexstr); + if (f == NULL) { + if (PyErr_ExceptionMatches(PyExc_AttributeError)) + PyErr_Clear(); + else + return NULL; + } + } else { - PyObject *args = PyTuple_New(0); - if (args == NULL) + f = _PyObject_LookupSpecial(r, "__complex__", &complexstr); + if (f == NULL && PyErr_Occurred()) return NULL; - r = PyEval_CallObject(f, args); - Py_DECREF(args); + } + if (f != NULL) { + r = PyObject_CallFunctionObjArgs(f, NULL); Py_DECREF(f); if (r == NULL) return NULL; From python-checkins at python.org Mon Jan 4 02:00:48 2010 From: python-checkins at python.org (benjamin.peterson) Date: Mon, 04 Jan 2010 01:00:48 -0000 Subject: [Python-checkins] r77293 - python/trunk/Objects/complexobject.c Message-ID: Author: benjamin.peterson Date: Mon Jan 4 02:00:47 2010 New Revision: 77293 Log: factor out __complex__ lookup code to fix another case Modified: python/trunk/Objects/complexobject.c Modified: python/trunk/Objects/complexobject.c ============================================================================== --- python/trunk/Objects/complexobject.c (original) +++ python/trunk/Objects/complexobject.c Mon Jan 4 02:00:47 2010 @@ -280,12 +280,43 @@ } } +static PyObject * +try_complex_special_method(PyObject *op) { + PyObject *f; + static PyObject *complexstr; + + if (complexstr == NULL) { + complexstr = PyString_InternFromString("__complex__"); + if (complexstr == NULL) + return NULL; + } + if (PyInstance_Check(op)) { + f = PyObject_GetAttr(op, complexstr); + if (f == NULL) { + if (PyErr_ExceptionMatches(PyExc_AttributeError)) + PyErr_Clear(); + else + return NULL; + } + } + else { + f = _PyObject_LookupSpecial(op, "__complex__", &complexstr); + if (f == NULL && PyErr_Occurred()) + return NULL; + } + if (f != NULL) { + PyObject *res = PyObject_CallFunctionObjArgs(f, NULL); + Py_DECREF(f); + return res; + } + return NULL; +} + Py_complex PyComplex_AsCComplex(PyObject *op) { Py_complex cv; PyObject *newop = NULL; - static PyObject *complex_str = NULL; assert(op); /* If op is already of type PyComplex_Type, return its value */ @@ -298,30 +329,8 @@ cv.real = -1.; cv.imag = 0.; - if (complex_str == NULL) { - if (!(complex_str = PyString_InternFromString("__complex__"))) - return cv; - } + newop = try_complex_special_method(op); - if (PyInstance_Check(op)) { - /* this can go away in python 3000 */ - if (PyObject_HasAttr(op, complex_str)) { - newop = PyObject_CallMethod(op, "__complex__", NULL); - if (!newop) - return cv; - } - /* else try __float__ */ - } else { - PyObject *complexfunc; - complexfunc = _PyType_Lookup(op->ob_type, complex_str); - /* complexfunc is a borrowed reference */ - if (complexfunc) { - newop = PyObject_CallFunctionObjArgs(complexfunc, op, NULL); - if (!newop) - return cv; - } - } - if (newop) { if (!PyComplex_Check(newop)) { PyErr_SetString(PyExc_TypeError, @@ -333,6 +342,9 @@ Py_DECREF(newop); return cv; } + else if (PyErr_Occurred()) { + return cv; + } /* If neither of the above works, interpret op as a float giving the real part of the result, and fill in the imaginary part as 0. */ else { @@ -1073,13 +1085,12 @@ static PyObject * complex_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { - PyObject *r, *i, *tmp, *f; + PyObject *r, *i, *tmp; PyNumberMethods *nbr, *nbi = NULL; Py_complex cr, ci; int own_r = 0; int cr_is_complex = 0; int ci_is_complex = 0; - static PyObject *complexstr; static char *kwlist[] = {"real", "imag", 0}; r = Py_False; @@ -1114,32 +1125,15 @@ return NULL; } - if (complexstr == NULL) { - complexstr = PyString_InternFromString("__complex__"); - if (complexstr == NULL) - return NULL; - } - if (PyInstance_Check(r)) { - f = PyObject_GetAttr(r, complexstr); - if (f == NULL) { - if (PyErr_ExceptionMatches(PyExc_AttributeError)) - PyErr_Clear(); - else - return NULL; - } - } - else { - f = _PyObject_LookupSpecial(r, "__complex__", &complexstr); - if (f == NULL && PyErr_Occurred()) - return NULL; - } - if (f != NULL) { - r = PyObject_CallFunctionObjArgs(f, NULL); - Py_DECREF(f); - if (r == NULL) - return NULL; + tmp = try_complex_special_method(r); + if (tmp) { + r = tmp; own_r = 1; } + else if (PyErr_Occurred()) { + return NULL; + } + nbr = r->ob_type->tp_as_number; if (i != NULL) nbi = i->ob_type->tp_as_number; From python-checkins at python.org Mon Jan 4 02:10:28 2010 From: python-checkins at python.org (benjamin.peterson) Date: Mon, 04 Jan 2010 01:10:28 -0000 Subject: [Python-checkins] r77294 - in python/branches/py3k: Lib/test/test_descr.py Misc/NEWS Objects/complexobject.c Message-ID: Author: benjamin.peterson Date: Mon Jan 4 02:10:28 2010 New Revision: 77294 Log: Merged revisions 77292-77293 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77292 | benjamin.peterson | 2010-01-03 18:43:01 -0600 (Sun, 03 Jan 2010) | 1 line do correct lookup of the __complex__ method ........ r77293 | benjamin.peterson | 2010-01-03 19:00:47 -0600 (Sun, 03 Jan 2010) | 1 line factor out __complex__ lookup code to fix another case ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_descr.py python/branches/py3k/Misc/NEWS python/branches/py3k/Objects/complexobject.c Modified: python/branches/py3k/Lib/test/test_descr.py ============================================================================== --- python/branches/py3k/Lib/test/test_descr.py (original) +++ python/branches/py3k/Lib/test/test_descr.py Mon Jan 4 02:10:28 2010 @@ -1542,6 +1542,8 @@ return [] def zero(self): return 0 + def complex_num(self): + return 1j def stop(self): raise StopIteration def return_true(self, thing=None): @@ -1575,6 +1577,7 @@ set(("__bases__",)), {}), ("__enter__", run_context, iden, set(), {"__exit__" : swallow}), ("__exit__", run_context, swallow, set(), {"__enter__" : iden}), + ("__complex__", complex, complex_num, set(), {}), ] class Checker(object): Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Mon Jan 4 02:10:28 2010 @@ -12,6 +12,9 @@ Core and Builtins ----------------- +- The __complex__ method is now looked up on the class of instances to make it + consistent with other special methods. + - Issue #7462: Implement the stringlib fast search algorithm for the `rfind`, `rindex`, `rsplit` and `rpartition` methods. Patch by Florent Xicluna. Modified: python/branches/py3k/Objects/complexobject.c ============================================================================== --- python/branches/py3k/Objects/complexobject.c (original) +++ python/branches/py3k/Objects/complexobject.c Mon Jan 4 02:10:28 2010 @@ -262,12 +262,25 @@ } } +static PyObject * +try_complex_special_method(PyObject *op) { + PyObject *f; + static PyObject *complexstr; + + f = _PyObject_LookupSpecial(op, "__complex__", &complexstr); + if (f) { + PyObject *res = PyObject_CallFunctionObjArgs(f, NULL); + Py_DECREF(f); + return res; + } + return NULL; +} + Py_complex PyComplex_AsCComplex(PyObject *op) { Py_complex cv; PyObject *newop = NULL; - static PyObject *complex_str = NULL; assert(op); /* If op is already of type PyComplex_Type, return its value */ @@ -280,21 +293,7 @@ cv.real = -1.; cv.imag = 0.; - if (complex_str == NULL) { - if (!(complex_str = PyUnicode_FromString("__complex__"))) - return cv; - } - - { - PyObject *complexfunc; - complexfunc = _PyType_Lookup(op->ob_type, complex_str); - /* complexfunc is a borrowed reference */ - if (complexfunc) { - newop = PyObject_CallFunctionObjArgs(complexfunc, op, NULL); - if (!newop) - return cv; - } - } + newop = try_complex_special_method(op); if (newop) { if (!PyComplex_Check(newop)) { @@ -307,6 +306,9 @@ Py_DECREF(newop); return cv; } + else if (PyErr_Occurred()) { + return cv; + } /* If neither of the above works, interpret op as a float giving the real part of the result, and fill in the imaginary part as 0. */ else { @@ -880,13 +882,12 @@ static PyObject * complex_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { - PyObject *r, *i, *tmp, *f; + PyObject *r, *i, *tmp; PyNumberMethods *nbr, *nbi = NULL; Py_complex cr, ci; int own_r = 0; int cr_is_complex = 0; int ci_is_complex = 0; - static PyObject *complexstr; static char *kwlist[] = {"real", "imag", 0}; r = Py_False; @@ -921,26 +922,15 @@ return NULL; } - /* XXX Hack to support classes with __complex__ method */ - if (complexstr == NULL) { - complexstr = PyUnicode_InternFromString("__complex__"); - if (complexstr == NULL) - return NULL; - } - f = PyObject_GetAttr(r, complexstr); - if (f == NULL) - PyErr_Clear(); - else { - PyObject *args = PyTuple_New(0); - if (args == NULL) - return NULL; - r = PyEval_CallObject(f, args); - Py_DECREF(args); - Py_DECREF(f); - if (r == NULL) - return NULL; + tmp = try_complex_special_method(r); + if (tmp) { + r = tmp; own_r = 1; } + else if (PyErr_Occurred()) { + return NULL; + } + nbr = r->ob_type->tp_as_number; if (i != NULL) nbi = i->ob_type->tp_as_number; From nnorwitz at gmail.com Mon Jan 4 02:40:38 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 3 Jan 2010 20:40:38 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100104014038.GA16251@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils Checking out Sphinx... A tools/sphinx/jinja2glue.py A tools/sphinx/quickstart.py A tools/sphinx/theming.py A tools/sphinx/pycode A tools/sphinx/pycode/nodes.py A tools/sphinx/pycode/Grammar.txt A tools/sphinx/pycode/__init__.py A tools/sphinx/pycode/pgen2 A tools/sphinx/pycode/pgen2/tokenize.py A tools/sphinx/pycode/pgen2/pgen.py A tools/sphinx/pycode/pgen2/parse.py A tools/sphinx/pycode/pgen2/driver.py A tools/sphinx/pycode/pgen2/__init__.py A tools/sphinx/pycode/pgen2/literals.py A tools/sphinx/pycode/pgen2/token.py A tools/sphinx/pycode/pgen2/grammar.py A tools/sphinx/themes A tools/sphinx/themes/sphinxdoc A tools/sphinx/themes/sphinxdoc/layout.html A tools/sphinx/themes/sphinxdoc/theme.conf A tools/sphinx/themes/sphinxdoc/static A tools/sphinx/themes/sphinxdoc/static/contents.png A tools/sphinx/themes/sphinxdoc/static/navigation.png A tools/sphinx/themes/sphinxdoc/static/sphinxdoc.css A tools/sphinx/themes/basic A tools/sphinx/themes/basic/page.html A tools/sphinx/themes/basic/layout.html A tools/sphinx/themes/basic/genindex-single.html A tools/sphinx/themes/basic/genindex.html A tools/sphinx/themes/basic/opensearch.xml A tools/sphinx/themes/basic/theme.conf A tools/sphinx/themes/basic/static A tools/sphinx/themes/basic/static/doctools.js A tools/sphinx/themes/basic/static/searchtools.js A tools/sphinx/themes/basic/static/file.png A tools/sphinx/themes/basic/static/plus.png A tools/sphinx/themes/basic/static/basic.css A tools/sphinx/themes/basic/static/jquery.js A tools/sphinx/themes/basic/static/minus.png A tools/sphinx/themes/basic/changes A tools/sphinx/themes/basic/changes/versionchanges.html A tools/sphinx/themes/basic/changes/frameset.html A tools/sphinx/themes/basic/changes/rstsource.html A tools/sphinx/themes/basic/search.html A tools/sphinx/themes/basic/defindex.html A tools/sphinx/themes/basic/modindex.html A tools/sphinx/themes/basic/genindex-split.html A tools/sphinx/themes/default A tools/sphinx/themes/default/theme.conf A tools/sphinx/themes/default/static A tools/sphinx/themes/default/static/default.css_t A tools/sphinx/themes/traditional A tools/sphinx/themes/traditional/theme.conf A tools/sphinx/themes/traditional/static A tools/sphinx/themes/traditional/static/traditional.css A tools/sphinx/setup_command.py A tools/sphinx/__init__.py A tools/sphinx/application.py A tools/sphinx/environment.py A tools/sphinx/search.py A tools/sphinx/config.py A tools/sphinx/highlighting.py A tools/sphinx/writers A tools/sphinx/writers/latex.py A tools/sphinx/writers/__init__.py A tools/sphinx/writers/html.py A tools/sphinx/writers/text.py A tools/sphinx/locale A tools/sphinx/locale/__init__.py A tools/sphinx/locale/ru A tools/sphinx/locale/ru/LC_MESSAGES A tools/sphinx/locale/ru/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/ru/LC_MESSAGES/sphinx.js A tools/sphinx/locale/ru/LC_MESSAGES/sphinx.po A tools/sphinx/locale/de A tools/sphinx/locale/de/LC_MESSAGES A tools/sphinx/locale/de/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/de/LC_MESSAGES/sphinx.js A tools/sphinx/locale/de/LC_MESSAGES/sphinx.po A tools/sphinx/locale/ja A tools/sphinx/locale/ja/LC_MESSAGES A tools/sphinx/locale/ja/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/ja/LC_MESSAGES/sphinx.js A tools/sphinx/locale/ja/LC_MESSAGES/sphinx.po A tools/sphinx/locale/zh_TW A tools/sphinx/locale/zh_TW/LC_MESSAGES A tools/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js A tools/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po A tools/sphinx/locale/fi A tools/sphinx/locale/fi/LC_MESSAGES A tools/sphinx/locale/fi/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/fi/LC_MESSAGES/sphinx.js A tools/sphinx/locale/fi/LC_MESSAGES/sphinx.po A tools/sphinx/locale/uk_UA A tools/sphinx/locale/uk_UA/LC_MESSAGES A tools/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js A tools/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po A tools/sphinx/locale/cs A tools/sphinx/locale/cs/LC_MESSAGES A tools/sphinx/locale/cs/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/cs/LC_MESSAGES/sphinx.js A tools/sphinx/locale/cs/LC_MESSAGES/sphinx.po A tools/sphinx/locale/pt_BR A tools/sphinx/locale/pt_BR/LC_MESSAGES A tools/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js A tools/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po A tools/sphinx/locale/es A tools/sphinx/locale/es/LC_MESSAGES A tools/sphinx/locale/es/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/es/LC_MESSAGES/sphinx.js A tools/sphinx/locale/es/LC_MESSAGES/sphinx.po A tools/sphinx/locale/fr A tools/sphinx/locale/fr/LC_MESSAGES A tools/sphinx/locale/fr/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/fr/LC_MESSAGES/sphinx.js A tools/sphinx/locale/fr/LC_MESSAGES/sphinx.po A tools/sphinx/locale/nl A tools/sphinx/locale/nl/LC_MESSAGES A tools/sphinx/locale/nl/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/nl/LC_MESSAGES/sphinx.js A tools/sphinx/locale/nl/LC_MESSAGES/sphinx.po A tools/sphinx/locale/sphinx.pot A tools/sphinx/locale/pl A tools/sphinx/locale/pl/LC_MESSAGES A tools/sphinx/locale/pl/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/pl/LC_MESSAGES/sphinx.js A tools/sphinx/locale/pl/LC_MESSAGES/sphinx.po A tools/sphinx/locale/it A tools/sphinx/locale/it/LC_MESSAGES A tools/sphinx/locale/it/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/it/LC_MESSAGES/sphinx.js A tools/sphinx/locale/it/LC_MESSAGES/sphinx.po A tools/sphinx/locale/sl A tools/sphinx/locale/sl/LC_MESSAGES A tools/sphinx/locale/sl/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/sl/LC_MESSAGES/sphinx.js A tools/sphinx/locale/sl/LC_MESSAGES/sphinx.po A tools/sphinx/ext A tools/sphinx/ext/graphviz.py A tools/sphinx/ext/coverage.py A tools/sphinx/ext/intersphinx.py A tools/sphinx/ext/inheritance_diagram.py A tools/sphinx/ext/autodoc.py A tools/sphinx/ext/pngmath.py A tools/sphinx/ext/__init__.py A tools/sphinx/ext/autosummary A tools/sphinx/ext/autosummary/generate.py A tools/sphinx/ext/autosummary/__init__.py A tools/sphinx/ext/autosummary/templates A tools/sphinx/ext/autosummary/templates/module A tools/sphinx/ext/refcounting.py A tools/sphinx/ext/ifconfig.py A tools/sphinx/ext/mathbase.py A tools/sphinx/ext/doctest.py A tools/sphinx/ext/todo.py A tools/sphinx/ext/jsmath.py A tools/sphinx/directives A tools/sphinx/directives/code.py A tools/sphinx/directives/desc.py A tools/sphinx/directives/__init__.py A tools/sphinx/directives/other.py A tools/sphinx/cmdline.py A tools/sphinx/errors.py A tools/sphinx/texinputs A tools/sphinx/texinputs/python.ist A tools/sphinx/texinputs/howto.cls A tools/sphinx/texinputs/tabulary.sty A tools/sphinx/texinputs/sphinx.sty A tools/sphinx/texinputs/fncychap.sty A tools/sphinx/texinputs/Makefile A tools/sphinx/texinputs/manual.cls A tools/sphinx/addnodes.py A tools/sphinx/builders A tools/sphinx/builders/changes.py A tools/sphinx/builders/linkcheck.py A tools/sphinx/builders/htmlhelp.py A tools/sphinx/builders/latex.py A tools/sphinx/builders/qthelp.py A tools/sphinx/builders/__init__.py A tools/sphinx/builders/html.py A tools/sphinx/builders/text.py A tools/sphinx/roles.py A tools/sphinx/builder.py A tools/sphinx/util A tools/sphinx/util/pycompat.py A tools/sphinx/util/stemmer.py A tools/sphinx/util/tags.py A tools/sphinx/util/__init__.py A tools/sphinx/util/docstrings.py A tools/sphinx/util/texescape.py A tools/sphinx/util/console.py A tools/sphinx/util/jsdump.py A tools/sphinx/util/compat.py A tools/sphinx/util/png.py A tools/sphinx/util/inspect.py A tools/sphinx/util/smartypants.py Checked out revision 77294. Checking out Docutils... A tools/docutils/core.py A tools/docutils/nodes.py A tools/docutils/parsers A tools/docutils/parsers/null.py A tools/docutils/parsers/__init__.py A tools/docutils/parsers/rst A tools/docutils/parsers/rst/directives A tools/docutils/parsers/rst/directives/parts.py A tools/docutils/parsers/rst/directives/tables.py A tools/docutils/parsers/rst/directives/misc.py A tools/docutils/parsers/rst/directives/body.py A tools/docutils/parsers/rst/directives/__init__.py A tools/docutils/parsers/rst/directives/references.py A tools/docutils/parsers/rst/directives/admonitions.py A tools/docutils/parsers/rst/directives/html.py A tools/docutils/parsers/rst/directives/images.py A tools/docutils/parsers/rst/include A tools/docutils/parsers/rst/include/isopub.txt A tools/docutils/parsers/rst/include/isobox.txt A tools/docutils/parsers/rst/include/isogrk4-wide.txt A tools/docutils/parsers/rst/include/isonum.txt A tools/docutils/parsers/rst/include/isomfrk.txt A tools/docutils/parsers/rst/include/xhtml1-lat1.txt A tools/docutils/parsers/rst/include/isomopf.txt A tools/docutils/parsers/rst/include/mmlextra-wide.txt A tools/docutils/parsers/rst/include/xhtml1-symbol.txt A tools/docutils/parsers/rst/include/mmlextra.txt A tools/docutils/parsers/rst/include/isocyr1.txt A tools/docutils/parsers/rst/include/isocyr2.txt A tools/docutils/parsers/rst/include/xhtml1-special.txt A tools/docutils/parsers/rst/include/isoamsa.txt A tools/docutils/parsers/rst/include/isoamsb.txt A tools/docutils/parsers/rst/include/isoamsc.txt A tools/docutils/parsers/rst/include/mmlalias.txt A tools/docutils/parsers/rst/include/isomfrk-wide.txt A tools/docutils/parsers/rst/include/isomopf-wide.txt A tools/docutils/parsers/rst/include/isomscr-wide.txt A tools/docutils/parsers/rst/include/isodia.txt A tools/docutils/parsers/rst/include/isoamsn.txt A tools/docutils/parsers/rst/include/isoamso.txt A tools/docutils/parsers/rst/include/isolat1.txt A tools/docutils/parsers/rst/include/isoamsr.txt A tools/docutils/parsers/rst/include/isolat2.txt A tools/docutils/parsers/rst/include/isogrk1.txt A tools/docutils/parsers/rst/include/isomscr.txt A tools/docutils/parsers/rst/include/isogrk2.txt A tools/docutils/parsers/rst/include/isogrk3.txt A tools/docutils/parsers/rst/include/isogrk4.txt A tools/docutils/parsers/rst/include/s5defs.txt A tools/docutils/parsers/rst/include/README.txt A tools/docutils/parsers/rst/include/isotech.txt A tools/docutils/parsers/rst/__init__.py A tools/docutils/parsers/rst/languages A tools/docutils/parsers/rst/languages/sv.py A tools/docutils/parsers/rst/languages/de.py A tools/docutils/parsers/rst/languages/ja.py A tools/docutils/parsers/rst/languages/zh_tw.py A tools/docutils/parsers/rst/languages/he.py A tools/docutils/parsers/rst/languages/fi.py A tools/docutils/parsers/rst/languages/__init__.py A tools/docutils/parsers/rst/languages/zh_cn.py A tools/docutils/parsers/rst/languages/en.py A tools/docutils/parsers/rst/languages/eo.py A tools/docutils/parsers/rst/languages/cs.py A tools/docutils/parsers/rst/languages/pt_br.py A tools/docutils/parsers/rst/languages/es.py A tools/docutils/parsers/rst/languages/fr.py A tools/docutils/parsers/rst/languages/nl.py A tools/docutils/parsers/rst/languages/it.py A tools/docutils/parsers/rst/languages/sk.py A tools/docutils/parsers/rst/languages/ca.py A tools/docutils/parsers/rst/languages/ru.py A tools/docutils/parsers/rst/languages/af.py A tools/docutils/parsers/rst/states.py A tools/docutils/parsers/rst/roles.py A tools/docutils/parsers/rst/tableparser.py A tools/docutils/writers A tools/docutils/writers/null.py A tools/docutils/writers/html4css1 A tools/docutils/writers/html4css1/__init__.py A tools/docutils/writers/html4css1/html4css1.css A tools/docutils/writers/html4css1/template.txt A tools/docutils/writers/latex2e A tools/docutils/writers/latex2e/latex2e.tex A tools/docutils/writers/latex2e/__init__.py A tools/docutils/writers/__init__.py A tools/docutils/writers/pseudoxml.py A tools/docutils/writers/pep_html A tools/docutils/writers/pep_html/__init__.py A tools/docutils/writers/pep_html/template.txt A tools/docutils/writers/pep_html/pep.css A tools/docutils/writers/s5_html A tools/docutils/writers/s5_html/themes A tools/docutils/writers/s5_html/themes/big-white A tools/docutils/writers/s5_html/themes/big-white/framing.css A tools/docutils/writers/s5_html/themes/big-white/pretty.css A tools/docutils/writers/s5_html/themes/small-black A tools/docutils/writers/s5_html/themes/small-black/__base__ A tools/docutils/writers/s5_html/themes/small-black/pretty.css A tools/docutils/writers/s5_html/themes/default A tools/docutils/writers/s5_html/themes/default/print.css A tools/docutils/writers/s5_html/themes/default/s5-core.css A tools/docutils/writers/s5_html/themes/default/iepngfix.htc A tools/docutils/writers/s5_html/themes/default/outline.css A tools/docutils/writers/s5_html/themes/default/framing.css A tools/docutils/writers/s5_html/themes/default/slides.css A tools/docutils/writers/s5_html/themes/default/blank.gif A tools/docutils/writers/s5_html/themes/default/opera.css A tools/docutils/writers/s5_html/themes/default/pretty.css A tools/docutils/writers/s5_html/themes/default/slides.js A tools/docutils/writers/s5_html/themes/small-white A tools/docutils/writers/s5_html/themes/small-white/framing.css A tools/docutils/writers/s5_html/themes/small-white/pretty.css A tools/docutils/writers/s5_html/themes/medium-black A tools/docutils/writers/s5_html/themes/medium-black/__base__ A tools/docutils/writers/s5_html/themes/medium-black/pretty.css A tools/docutils/writers/s5_html/themes/README.txt A tools/docutils/writers/s5_html/themes/big-black A tools/docutils/writers/s5_html/themes/big-black/__base__ A tools/docutils/writers/s5_html/themes/big-black/framing.css A tools/docutils/writers/s5_html/themes/big-black/pretty.css A tools/docutils/writers/s5_html/themes/medium-white A tools/docutils/writers/s5_html/themes/medium-white/framing.css A tools/docutils/writers/s5_html/themes/medium-white/pretty.css A tools/docutils/writers/s5_html/__init__.py A tools/docutils/writers/docutils_xml.py A tools/docutils/writers/newlatex2e A tools/docutils/writers/newlatex2e/tests.txt A tools/docutils/writers/newlatex2e/__init__.py A tools/docutils/writers/newlatex2e/notes.txt A tools/docutils/writers/newlatex2e/base.tex A tools/docutils/writers/newlatex2e/unicode_map.py A tools/docutils/examples.py A tools/docutils/readers A tools/docutils/readers/standalone.py A tools/docutils/readers/python A tools/docutils/readers/python/__init__.py A tools/docutils/readers/python/pynodes.py A tools/docutils/readers/python/moduleparser.py A tools/docutils/readers/__init__.py A tools/docutils/readers/pep.py A tools/docutils/readers/doctree.py A tools/docutils/__init__.py A tools/docutils/frontend.py A tools/docutils/languages A tools/docutils/languages/sv.py A tools/docutils/languages/de.py A tools/docutils/languages/ja.py A tools/docutils/languages/zh_tw.py A tools/docutils/languages/he.py A tools/docutils/languages/fi.py A tools/docutils/languages/__init__.py A tools/docutils/languages/zh_cn.py A tools/docutils/languages/en.py A tools/docutils/languages/eo.py A tools/docutils/languages/cs.py A tools/docutils/languages/pt_br.py A tools/docutils/languages/es.py A tools/docutils/languages/fr.py A tools/docutils/languages/nl.py A tools/docutils/languages/it.py A tools/docutils/languages/sk.py A tools/docutils/languages/ca.py A tools/docutils/languages/ru.py A tools/docutils/languages/af.py A tools/docutils/utils.py A tools/docutils/docutils.conf A tools/docutils/statemachine.py A tools/docutils/io.py A tools/docutils/transforms A tools/docutils/transforms/universal.py A tools/docutils/transforms/parts.py A tools/docutils/transforms/writer_aux.py A tools/docutils/transforms/misc.py A tools/docutils/transforms/__init__.py A tools/docutils/transforms/references.py A tools/docutils/transforms/components.py A tools/docutils/transforms/frontmatter.py A tools/docutils/transforms/peps.py A tools/docutils/urischemes.py Checked out revision 77294. Checking out Jinja... A tools/jinja2/loaders.py A tools/jinja2/parser.py A tools/jinja2/_ipysupport.py A tools/jinja2/sandbox.py A tools/jinja2/visitor.py A tools/jinja2/__init__.py A tools/jinja2/utils.py A tools/jinja2/ext.py A tools/jinja2/tests.py A tools/jinja2/environment.py A tools/jinja2/defaults.py A tools/jinja2/bccache.py A tools/jinja2/filters.py A tools/jinja2/nodes.py A tools/jinja2/compiler.py A tools/jinja2/constants.py A tools/jinja2/lexer.py A tools/jinja2/exceptions.py A tools/jinja2/_speedups.c A tools/jinja2/optimizer.py A tools/jinja2/runtime.py A tools/jinja2/debug.py Checked out revision 77294. Checking out Pygments... A tools/pygments/scanner.py A tools/pygments/styles A tools/pygments/styles/vs.py A tools/pygments/styles/emacs.py A tools/pygments/styles/perldoc.py A tools/pygments/styles/trac.py A tools/pygments/styles/vim.py A tools/pygments/styles/__init__.py A tools/pygments/styles/manni.py A tools/pygments/styles/bw.py A tools/pygments/styles/tango.py A tools/pygments/styles/autumn.py A tools/pygments/styles/friendly.py A tools/pygments/styles/borland.py A tools/pygments/styles/fruity.py A tools/pygments/styles/default.py A tools/pygments/styles/murphy.py A tools/pygments/styles/pastie.py A tools/pygments/styles/colorful.py A tools/pygments/styles/native.py A tools/pygments/plugin.py A tools/pygments/__init__.py A tools/pygments/formatters A tools/pygments/formatters/terminal256.py A tools/pygments/formatters/_mapping.py A tools/pygments/formatters/rtf.py A tools/pygments/formatters/terminal.py A tools/pygments/formatters/img.py A tools/pygments/formatters/latex.py A tools/pygments/formatters/bbcode.py A tools/pygments/formatters/__init__.py A tools/pygments/formatters/svg.py A tools/pygments/formatters/other.py A tools/pygments/formatters/html.py A tools/pygments/style.py A tools/pygments/console.py A tools/pygments/formatter.py A tools/pygments/cmdline.py A tools/pygments/lexers A tools/pygments/lexers/math.py A tools/pygments/lexers/_luabuiltins.py A tools/pygments/lexers/_mapping.py A tools/pygments/lexers/compiled.py A tools/pygments/lexers/dotnet.py A tools/pygments/lexers/templates.py A tools/pygments/lexers/__init__.py A tools/pygments/lexers/_phpbuiltins.py A tools/pygments/lexers/functional.py A tools/pygments/lexers/_vimbuiltins.py A tools/pygments/lexers/_clbuiltins.py A tools/pygments/lexers/web.py A tools/pygments/lexers/parsers.py A tools/pygments/lexers/asm.py A tools/pygments/lexers/special.py A tools/pygments/lexers/other.py A tools/pygments/lexers/agile.py A tools/pygments/lexers/text.py A tools/pygments/util.py A tools/pygments/lexer.py A tools/pygments/token.py A tools/pygments/filters A tools/pygments/filters/__init__.py A tools/pygments/unistring.py A tools/pygments/filter.py Checked out revision 77294. rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils mkdir -p build/html build/doctrees python tools/sphinx-build.py -b html -d build/doctrees -D latex_paper_size= . build/html Traceback (most recent call last): File "tools/sphinx-build.py", line 23, in from sphinx import main ImportError: No module named sphinx make: *** [build] Error 1 From python-checkins at python.org Mon Jan 4 04:29:50 2010 From: python-checkins at python.org (gregory.p.smith) Date: Mon, 04 Jan 2010 03:29:50 -0000 Subject: [Python-checkins] r77295 - python/branches/py3k/Modules/socketmodule.c Message-ID: Author: gregory.p.smith Date: Mon Jan 4 04:29:50 2010 New Revision: 77295 Log: Merge the trivial portion of r74426 from trunk. socket.sendall() now handles EINTR properly internally. Modified: python/branches/py3k/Modules/socketmodule.c Modified: python/branches/py3k/Modules/socketmodule.c ============================================================================== --- python/branches/py3k/Modules/socketmodule.c (original) +++ python/branches/py3k/Modules/socketmodule.c Mon Jan 4 04:29:50 2010 @@ -2572,8 +2572,21 @@ #else n = send(s->sock_fd, buf, len, flags); #endif - if (n < 0) + if (n < 0) { +#ifdef EINTR + /* We must handle EINTR here as there is no way for + * the caller to know how much was sent otherwise. */ + if (errno == EINTR) { + /* Run signal handlers. If an exception was + * raised, abort and leave this socket in + * an unknown state. */ + if (PyErr_CheckSignals()) + return NULL; + continue; + } +#endif break; + } buf += n; len -= n; } while (len > 0); From python-checkins at python.org Mon Jan 4 04:48:20 2010 From: python-checkins at python.org (benjamin.peterson) Date: Mon, 04 Jan 2010 03:48:20 -0000 Subject: [Python-checkins] r77296 - python/branches/py3k Message-ID: Author: benjamin.peterson Date: Mon Jan 4 04:48:20 2010 New Revision: 77296 Log: Recorded merge of revisions 74426 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r74426 | gregory.p.smith | 2009-08-13 13:54:50 -0500 (Thu, 13 Aug 2009) | 4 lines Fix issue1628205: Socket file objects returned by socket.socket.makefile() now properly handles EINTR within the read, readline, write & flush methods. The socket.sendall() method now properly handles interrupted system calls. ........ Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Mon Jan 4 05:50:36 2010 From: python-checkins at python.org (gregory.p.smith) Date: Mon, 04 Jan 2010 04:50:36 -0000 Subject: [Python-checkins] r77297 - in python/branches/py3k: Lib/socket.py Lib/test/test_socket.py Misc/NEWS Message-ID: Author: gregory.p.smith Date: Mon Jan 4 05:50:36 2010 New Revision: 77297 Log: Merged revisions 74426 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r74426 | gregory.p.smith | 2009-08-13 11:54:50 -0700 (Thu, 13 Aug 2009) | 4 lines Fix issue1628205: Socket file objects returned by socket.socket.makefile() now properly handles EINTR within the read, readline, write & flush methods. The socket.sendall() method now properly handles interrupted system calls. ........ Modified: python/branches/py3k/Lib/socket.py python/branches/py3k/Lib/test/test_socket.py python/branches/py3k/Misc/NEWS Modified: python/branches/py3k/Lib/socket.py ============================================================================== --- python/branches/py3k/Lib/socket.py (original) +++ python/branches/py3k/Lib/socket.py Mon Jan 4 05:50:36 2010 @@ -49,9 +49,11 @@ import os, sys, io try: - from errno import EBADF + import errno except ImportError: - EBADF = 9 + errno = None +EBADF = getattr(errno, 'EBADF', 9) +EINTR = getattr(errno, 'EINTR', 4) __all__ = ["getfqdn", "create_connection"] __all__.extend(os._get_exports_list(_socket)) @@ -212,7 +214,13 @@ def readinto(self, b): self._checkClosed() self._checkReadable() - return self._sock.recv_into(b) + while True: + try: + return self._sock.recv_into(b) + except error as e: + if e.args[0] == EINTR: + continue + raise def write(self, b): self._checkClosed() Modified: python/branches/py3k/Lib/test/test_socket.py ============================================================================== --- python/branches/py3k/Lib/test/test_socket.py (original) +++ python/branches/py3k/Lib/test/test_socket.py Mon Jan 4 05:50:36 2010 @@ -4,6 +4,7 @@ from test import support import errno +import io import socket import select import _thread as thread @@ -906,6 +907,117 @@ pass +class FileObjectInterruptedTestCase(unittest.TestCase): + """Test that the file object correctly handles EINTR internally.""" + + class MockSocket(object): + def __init__(self, recv_funcs=()): + # A generator that returns callables that we'll call for each + # call to recv(). + self._recv_step = iter(recv_funcs) + + def recv_into(self, buffer): + data = next(self._recv_step)() + assert len(buffer) >= len(data) + buffer[:len(data)] = data + return len(data) + + def _decref_socketios(self): + pass + + def _textiowrap_for_test(self, buffering=-1): + raw = socket.SocketIO(self, "r") + if buffering < 0: + buffering = io.DEFAULT_BUFFER_SIZE + if buffering == 0: + return raw + buffer = io.BufferedReader(raw, buffering) + text = io.TextIOWrapper(buffer, None, None) + text.mode = "rb" + return text + + @staticmethod + def _raise_eintr(): + raise socket.error(errno.EINTR) + + def _textiowrap_mock_socket(self, mock, buffering=-1): + raw = socket.SocketIO(mock, "r") + if buffering < 0: + buffering = io.DEFAULT_BUFFER_SIZE + if buffering == 0: + return raw + buffer = io.BufferedReader(raw, buffering) + text = io.TextIOWrapper(buffer, None, None) + text.mode = "rb" + return text + + def _test_readline(self, size=-1, buffering=-1): + mock_sock = self.MockSocket(recv_funcs=[ + lambda : b"This is the first line\nAnd the sec", + self._raise_eintr, + lambda : b"ond line is here\n", + lambda : b"", + lambda : b"", # XXX(gps): io library does an extra EOF read + ]) + fo = mock_sock._textiowrap_for_test(buffering=buffering) + self.assertEquals(fo.readline(size), "This is the first line\n") + self.assertEquals(fo.readline(size), "And the second line is here\n") + + def _test_read(self, size=-1, buffering=-1): + mock_sock = self.MockSocket(recv_funcs=[ + lambda : b"This is the first line\nAnd the sec", + self._raise_eintr, + lambda : b"ond line is here\n", + lambda : b"", + lambda : b"", # XXX(gps): io library does an extra EOF read + ]) + expecting = (b"This is the first line\n" + b"And the second line is here\n") + fo = mock_sock._textiowrap_for_test(buffering=buffering) + if buffering == 0: + data = b'' + else: + data = '' + expecting = expecting.decode('utf8') + while len(data) != len(expecting): + part = fo.read(size) + if not part: + break + data += part + self.assertEquals(data, expecting) + + def test_default(self): + self._test_readline() + self._test_readline(size=100) + self._test_read() + self._test_read(size=100) + + def test_with_1k_buffer(self): + self._test_readline(buffering=1024) + self._test_readline(size=100, buffering=1024) + self._test_read(buffering=1024) + self._test_read(size=100, buffering=1024) + + def _test_readline_no_buffer(self, size=-1): + mock_sock = self.MockSocket(recv_funcs=[ + lambda : b"a", + lambda : b"\n", + lambda : b"B", + self._raise_eintr, + lambda : b"b", + lambda : b"", + ]) + fo = mock_sock._textiowrap_for_test(buffering=0) + self.assertEquals(fo.readline(size), b"a\n") + self.assertEquals(fo.readline(size), b"Bb") + + def test_no_buffer(self): + self._test_readline_no_buffer() + self._test_readline_no_buffer(size=4) + self._test_read(buffering=0) + self._test_read(size=100, buffering=0) + + class UnbufferedFileObjectClassTestCase(FileObjectClassTestCase): """Repeat the tests from FileObjectClassTestCase with bufsize==0. @@ -1310,6 +1422,7 @@ tests.extend([ NonBlockingTCPTests, FileObjectClassTestCase, + FileObjectInterruptedTestCase, UnbufferedFileObjectClassTestCase, LineBufferedFileObjectClassTestCase, SmallBufferedFileObjectClassTestCase, Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Mon Jan 4 05:50:36 2010 @@ -194,6 +194,10 @@ Library ------- +- Issue #1628205: Socket file objects returned by socket.socket.makefile() now + properly handles EINTR within the read, readline, write & flush methods. + The socket.sendall() method now properly handles interrupted system calls. + - Issue #7471: Improve the performance of GzipFile's buffering mechanism, and make it implement the `io.BufferedIOBase` ABC to allow for further speedups by wrapping it in an `io.BufferedReader`. Patch by Nir Aides. From python-checkins at python.org Mon Jan 4 10:00:11 2010 From: python-checkins at python.org (ezio.melotti) Date: Mon, 04 Jan 2010 09:00:11 -0000 Subject: [Python-checkins] r77298 - in python/trunk/Doc: library/readline.rst library/runpy.rst whatsnew/2.7.rst Message-ID: Author: ezio.melotti Date: Mon Jan 4 10:00:11 2010 New Revision: 77298 Log: fixed markup errors Modified: python/trunk/Doc/library/readline.rst python/trunk/Doc/library/runpy.rst python/trunk/Doc/whatsnew/2.7.rst Modified: python/trunk/Doc/library/readline.rst ============================================================================== --- python/trunk/Doc/library/readline.rst (original) +++ python/trunk/Doc/library/readline.rst Mon Jan 4 10:00:11 2010 @@ -14,7 +14,7 @@ interactive prompt and the prompts offered by the :func:`raw_input` and :func:`input` built-in functions. -..note:: +.. note:: On MacOS X the :mod:`readline` module can be implemented using the ``libedit`` library instead of GNU readline. Modified: python/trunk/Doc/library/runpy.rst ============================================================================== --- python/trunk/Doc/library/runpy.rst (original) +++ python/trunk/Doc/library/runpy.rst Mon Jan 4 10:00:11 2010 @@ -45,7 +45,7 @@ ``__file__`` is set to the name provided by the module loader. If the loader does not make filename information available, this variable is set - to `:const:`None`. + to :const:`None`. ``__loader__`` is set to the PEP 302 module loader used to retrieve the code for the module (This loader may be a wrapper around the standard Modified: python/trunk/Doc/whatsnew/2.7.rst ============================================================================== --- python/trunk/Doc/whatsnew/2.7.rst (original) +++ python/trunk/Doc/whatsnew/2.7.rst Mon Jan 4 10:00:11 2010 @@ -750,7 +750,7 @@ global site-packages directories, and :func:`getusersitepackages` returns the path of the user's site-packages directory. - :func:`getuserbase` returns the value of the :envvar:``USER_BASE`` + :func:`getuserbase` returns the value of the :envvar:`USER_BASE` environment variable, giving the path to a directory that can be used to store data. (Contributed by Tarek Ziade; :issue:`6693`.) From nnorwitz at gmail.com Mon Jan 4 10:15:59 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 4 Jan 2010 04:15:59 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100104091559.GA19545@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [869655 refs] From nnorwitz at gmail.com Mon Jan 4 10:27:30 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 4 Jan 2010 04:27:30 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100104092730.GA23635@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19567 refs] [19567 refs] [19567 refs] [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [868552 refs] From python-checkins at python.org Mon Jan 4 10:29:10 2010 From: python-checkins at python.org (ezio.melotti) Date: Mon, 04 Jan 2010 09:29:10 -0000 Subject: [Python-checkins] r77299 - in python/branches/py3k: Doc/library/functions.rst Doc/library/readline.rst Doc/library/runpy.rst Doc/whatsnew/2.7.rst Message-ID: Author: ezio.melotti Date: Mon Jan 4 10:29:10 2010 New Revision: 77299 Log: Merged revisions 77298 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77298 | ezio.melotti | 2010-01-04 11:00:11 +0200 (Mon, 04 Jan 2010) | 1 line fixed markup errors ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/library/functions.rst python/branches/py3k/Doc/library/readline.rst python/branches/py3k/Doc/library/runpy.rst python/branches/py3k/Doc/whatsnew/2.7.rst Modified: python/branches/py3k/Doc/library/functions.rst ============================================================================== --- python/branches/py3k/Doc/library/functions.rst (original) +++ python/branches/py3k/Doc/library/functions.rst Mon Jan 4 10:29:10 2010 @@ -142,7 +142,7 @@ .. function:: compile(source, filename, mode, flags=0, dont_inherit=False) Compile the *source* into a code or AST object. Code objects can be executed - by:func:`exec` or :func:`eval`. *source* can either be a string or an AST + by :func:`exec` or :func:`eval`. *source* can either be a string or an AST object. Refer to the :mod:`ast` module documentation for information on how to work with AST objects. Modified: python/branches/py3k/Doc/library/readline.rst ============================================================================== --- python/branches/py3k/Doc/library/readline.rst (original) +++ python/branches/py3k/Doc/library/readline.rst Mon Jan 4 10:29:10 2010 @@ -14,7 +14,7 @@ interactive prompt and the prompts offered by the built-in :func:`input` function. -..note:: +.. note:: On MacOS X the :mod:`readline` module can be implemented using the ``libedit`` library instead of GNU readline. Modified: python/branches/py3k/Doc/library/runpy.rst ============================================================================== --- python/branches/py3k/Doc/library/runpy.rst (original) +++ python/branches/py3k/Doc/library/runpy.rst Mon Jan 4 10:29:10 2010 @@ -43,7 +43,7 @@ ``__file__`` is set to the name provided by the module loader. If the loader does not make filename information available, this variable is set - to `:const:`None`. + to :const:`None`. ``__loader__`` is set to the PEP 302 module loader used to retrieve the code for the module (This loader may be a wrapper around the standard Modified: python/branches/py3k/Doc/whatsnew/2.7.rst ============================================================================== --- python/branches/py3k/Doc/whatsnew/2.7.rst (original) +++ python/branches/py3k/Doc/whatsnew/2.7.rst Mon Jan 4 10:29:10 2010 @@ -740,7 +740,7 @@ global site-packages directories, and :func:`getusersitepackages` returns the path of the user's site-packages directory. - :func:`getuserbase` returns the value of the :envvar:``USER_BASE`` + :func:`getuserbase` returns the value of the :envvar:`USER_BASE` environment variable, giving the path to a directory that can be used to store data. (Contributed by Tarek Ziade; :issue:`6693`.) From nnorwitz at gmail.com Mon Jan 4 13:46:04 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 4 Jan 2010 07:46:04 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100104124604.GA17917@kbk-i386-bb.psfb.org> 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-10554 test_bsddb3 still working, be patient... test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [21174 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [886166 refs] From python-checkins at python.org Mon Jan 4 19:50:53 2010 From: python-checkins at python.org (antoine.pitrou) Date: Mon, 04 Jan 2010 18:50:53 -0000 Subject: [Python-checkins] r77300 - in python/branches/py3k/Doc: library/filesys.rst library/socket.rst library/tokenize.rst reference/datamodel.rst using/cmdline.rst Message-ID: Author: antoine.pitrou Date: Mon Jan 4 19:50:53 2010 New Revision: 77300 Log: Issue #7631: Fix undefined references to the "built-in file object", which has ceased to be. Modified: python/branches/py3k/Doc/library/filesys.rst python/branches/py3k/Doc/library/socket.rst python/branches/py3k/Doc/library/tokenize.rst python/branches/py3k/Doc/reference/datamodel.rst python/branches/py3k/Doc/using/cmdline.rst Modified: python/branches/py3k/Doc/library/filesys.rst ============================================================================== --- python/branches/py3k/Doc/library/filesys.rst (original) +++ python/branches/py3k/Doc/library/filesys.rst Mon Jan 4 19:50:53 2010 @@ -26,14 +26,13 @@ .. seealso:: - Section :ref:`bltin-file-objects` - A description of Python's built-in file objects. - Module :mod:`os` Operating system interfaces, including functions to work with files at a lower level than the built-in file object. Module :mod:`io` - Python's framework for dealing with I/O including reading and writing - files. + Python's built-in I/O library, including both abstract classes and + some concrete classes such as file I/O. + Built-in function :func:`open` + The standard way to open files for reading and writing with Python. Modified: python/branches/py3k/Doc/library/socket.rst ============================================================================== --- python/branches/py3k/Doc/library/socket.rst (original) +++ python/branches/py3k/Doc/library/socket.rst Mon Jan 4 19:50:53 2010 @@ -575,14 +575,16 @@ .. index:: single: I/O control; buffering - Return a :dfn:`file object` associated with the socket. (File objects are - described in :ref:`bltin-file-objects`.) The file object references a - :cfunc:`dup`\ ped version of the socket file descriptor, so the file object - and socket object may be closed or garbage-collected independently. The - socket must be in blocking mode (it can not have a timeout). The optional + Return a :dfn:`file object` associated with the socket. The exact + returned type depends on the arguments given to :meth:`makefile`. These arguments are interpreted the same way as by the built-in :func:`open` function. + The returned file object references a :cfunc:`dup`\ ped version of the + socket file descriptor, so the file object and socket object may be + closed or garbage-collected independently. The socket must be in + blocking mode (it can not have a timeout). + .. method:: socket.recv(bufsize[, flags]) Modified: python/branches/py3k/Doc/library/tokenize.rst ============================================================================== --- python/branches/py3k/Doc/library/tokenize.rst (original) +++ python/branches/py3k/Doc/library/tokenize.rst Mon Jan 4 19:50:53 2010 @@ -18,9 +18,8 @@ The :func:`tokenize` generator requires one argument, *readline*, which must be a callable object which provides the same interface as the - :meth:`readline` method of built-in file objects (see section - :ref:`bltin-file-objects`). Each call to the function should return one - line of input as bytes. + :meth:`io.IOBase.readline` method of file objects. Each call to the + function should return one line of input as bytes. The generator produces 5-tuples with these members: the token type; the token string; a 2-tuple ``(srow, scol)`` of ints specifying the row and Modified: python/branches/py3k/Doc/reference/datamodel.rst ============================================================================== --- python/branches/py3k/Doc/reference/datamodel.rst (original) +++ python/branches/py3k/Doc/reference/datamodel.rst Mon Jan 4 19:50:53 2010 @@ -767,10 +767,10 @@ Special attributes: :attr:`__dict__` is the attribute dictionary; :attr:`__class__` is the instance's class. -Files +I/O objects (also known as file objects) .. index:: - object: file builtin: open + module: io single: popen() (in module os) single: makefile() (socket method) single: sys.stdin @@ -781,14 +781,17 @@ single: stdout (in module sys) single: stderr (in module sys) - A file object represents an open file. File objects are created by the - :func:`open` built-in function, and also by :func:`os.popen`, - :func:`os.fdopen`, and the :meth:`makefile` method of socket objects (and - perhaps by other functions or methods provided by extension modules). The - objects ``sys.stdin``, ``sys.stdout`` and ``sys.stderr`` are initialized to - file objects corresponding to the interpreter's standard input, output and - error streams. See :ref:`bltin-file-objects` for complete documentation of - file objects. + A file object represents an open file. Various shortcuts are available + to create file objects: the :func:`open` built-in function, and also + :func:`os.popen`, :func:`os.fdopen`, and the :meth:`makefile` method + of socket objects (and perhaps by other functions or methods provided + by extension modules). + + The objects ``sys.stdin``, ``sys.stdout`` and ``sys.stderr`` are + initialized to file objects corresponding to the interpreter's standard + input, output and error streams; they are all open in text mode and + therefore follow the interface defined by the :class:`io.TextIOBase` + abstract class. Internal types .. index:: Modified: python/branches/py3k/Doc/using/cmdline.rst ============================================================================== --- python/branches/py3k/Doc/using/cmdline.rst (original) +++ python/branches/py3k/Doc/using/cmdline.rst Mon Jan 4 19:50:53 2010 @@ -235,11 +235,6 @@ Force stdin, stdout and stderr to be totally unbuffered. On systems where it matters, also put stdin, stdout and stderr in binary mode. - Note that there is internal buffering in :meth:`file.readlines` and - :ref:`bltin-file-objects` (``for line in sys.stdin``) which is not influenced - by this option. To work around this, you will want to use - :meth:`file.readline` inside a ``while 1:`` loop. - See also :envvar:`PYTHONUNBUFFERED`. From python-checkins at python.org Mon Jan 4 20:55:11 2010 From: python-checkins at python.org (antoine.pitrou) Date: Mon, 04 Jan 2010 19:55:11 -0000 Subject: [Python-checkins] r77301 - in python/branches/release31-maint: Doc/library/filesys.rst Doc/library/socket.rst Doc/library/tokenize.rst Doc/reference/datamodel.rst Doc/using/cmdline.rst Message-ID: Author: antoine.pitrou Date: Mon Jan 4 20:55:11 2010 New Revision: 77301 Log: Merged revisions 77300 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ........ r77300 | antoine.pitrou | 2010-01-04 19:50:53 +0100 (lun., 04 janv. 2010) | 4 lines Issue #7631: Fix undefined references to the "built-in file object", which has ceased to be. ........ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Doc/library/filesys.rst python/branches/release31-maint/Doc/library/socket.rst python/branches/release31-maint/Doc/library/tokenize.rst python/branches/release31-maint/Doc/reference/datamodel.rst python/branches/release31-maint/Doc/using/cmdline.rst Modified: python/branches/release31-maint/Doc/library/filesys.rst ============================================================================== --- python/branches/release31-maint/Doc/library/filesys.rst (original) +++ python/branches/release31-maint/Doc/library/filesys.rst Mon Jan 4 20:55:11 2010 @@ -26,14 +26,13 @@ .. seealso:: - Section :ref:`bltin-file-objects` - A description of Python's built-in file objects. - Module :mod:`os` Operating system interfaces, including functions to work with files at a lower level than the built-in file object. Module :mod:`io` - Python's framework for dealing with I/O including reading and writing - files. + Python's built-in I/O library, including both abstract classes and + some concrete classes such as file I/O. + Built-in function :func:`open` + The standard way to open files for reading and writing with Python. Modified: python/branches/release31-maint/Doc/library/socket.rst ============================================================================== --- python/branches/release31-maint/Doc/library/socket.rst (original) +++ python/branches/release31-maint/Doc/library/socket.rst Mon Jan 4 20:55:11 2010 @@ -569,14 +569,16 @@ .. index:: single: I/O control; buffering - Return a :dfn:`file object` associated with the socket. (File objects are - described in :ref:`bltin-file-objects`.) The file object references a - :cfunc:`dup`\ ped version of the socket file descriptor, so the file object - and socket object may be closed or garbage-collected independently. The - socket must be in blocking mode (it can not have a timeout). The optional + Return a :dfn:`file object` associated with the socket. The exact + returned type depends on the arguments given to :meth:`makefile`. These arguments are interpreted the same way as by the built-in :func:`open` function. + The returned file object references a :cfunc:`dup`\ ped version of the + socket file descriptor, so the file object and socket object may be + closed or garbage-collected independently. The socket must be in + blocking mode (it can not have a timeout). + .. method:: socket.recv(bufsize[, flags]) Modified: python/branches/release31-maint/Doc/library/tokenize.rst ============================================================================== --- python/branches/release31-maint/Doc/library/tokenize.rst (original) +++ python/branches/release31-maint/Doc/library/tokenize.rst Mon Jan 4 20:55:11 2010 @@ -18,9 +18,8 @@ The :func:`tokenize` generator requires one argument, *readline*, which must be a callable object which provides the same interface as the - :meth:`readline` method of built-in file objects (see section - :ref:`bltin-file-objects`). Each call to the function should return one - line of input as bytes. + :meth:`io.IOBase.readline` method of file objects. Each call to the + function should return one line of input as bytes. The generator produces 5-tuples with these members: the token type; the token string; a 2-tuple ``(srow, scol)`` of ints specifying the row and Modified: python/branches/release31-maint/Doc/reference/datamodel.rst ============================================================================== --- python/branches/release31-maint/Doc/reference/datamodel.rst (original) +++ python/branches/release31-maint/Doc/reference/datamodel.rst Mon Jan 4 20:55:11 2010 @@ -767,10 +767,10 @@ Special attributes: :attr:`__dict__` is the attribute dictionary; :attr:`__class__` is the instance's class. -Files +I/O objects (also known as file objects) .. index:: - object: file builtin: open + module: io single: popen() (in module os) single: makefile() (socket method) single: sys.stdin @@ -781,14 +781,17 @@ single: stdout (in module sys) single: stderr (in module sys) - A file object represents an open file. File objects are created by the - :func:`open` built-in function, and also by :func:`os.popen`, - :func:`os.fdopen`, and the :meth:`makefile` method of socket objects (and - perhaps by other functions or methods provided by extension modules). The - objects ``sys.stdin``, ``sys.stdout`` and ``sys.stderr`` are initialized to - file objects corresponding to the interpreter's standard input, output and - error streams. See :ref:`bltin-file-objects` for complete documentation of - file objects. + A file object represents an open file. Various shortcuts are available + to create file objects: the :func:`open` built-in function, and also + :func:`os.popen`, :func:`os.fdopen`, and the :meth:`makefile` method + of socket objects (and perhaps by other functions or methods provided + by extension modules). + + The objects ``sys.stdin``, ``sys.stdout`` and ``sys.stderr`` are + initialized to file objects corresponding to the interpreter's standard + input, output and error streams; they are all open in text mode and + therefore follow the interface defined by the :class:`io.TextIOBase` + abstract class. Internal types .. index:: Modified: python/branches/release31-maint/Doc/using/cmdline.rst ============================================================================== --- python/branches/release31-maint/Doc/using/cmdline.rst (original) +++ python/branches/release31-maint/Doc/using/cmdline.rst Mon Jan 4 20:55:11 2010 @@ -235,11 +235,6 @@ Force stdin, stdout and stderr to be totally unbuffered. On systems where it matters, also put stdin, stdout and stderr in binary mode. - Note that there is internal buffering in :meth:`file.readlines` and - :ref:`bltin-file-objects` (``for line in sys.stdin``) which is not influenced - by this option. To work around this, you will want to use - :meth:`file.readline` inside a ``while 1:`` loop. - See also :envvar:`PYTHONUNBUFFERED`. From nnorwitz at gmail.com Mon Jan 4 22:15:59 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 4 Jan 2010 16:15:59 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100104211559.GA22761@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [869668 refs] From nnorwitz at gmail.com Mon Jan 4 22:27:37 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 4 Jan 2010 16:27:37 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100104212737.GA26852@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19567 refs] [19567 refs] [19567 refs] [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [868547 refs] From python-checkins at python.org Mon Jan 4 22:32:04 2010 From: python-checkins at python.org (mark.dickinson) Date: Mon, 04 Jan 2010 21:32:04 -0000 Subject: [Python-checkins] r77302 - python/trunk/Python/dtoa.c Message-ID: Author: mark.dickinson Date: Mon Jan 4 22:32:02 2010 New Revision: 77302 Log: Fix typo in comment. Modified: python/trunk/Python/dtoa.c Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Mon Jan 4 22:32:02 2010 @@ -927,7 +927,7 @@ Given a finite nonzero double d, return an odd Bigint b and exponent *e such that fabs(d) = b * 2**e. On return, *bbits gives the number of - significant bits of e; that is, 2**(*bbits-1) <= b < 2**(*bbits). + significant bits of b; that is, 2**(*bbits-1) <= b < 2**(*bbits). If d is zero, then b == 0, *e == -1010, *bbits = 0. */ From python-checkins at python.org Mon Jan 4 22:32:33 2010 From: python-checkins at python.org (mark.dickinson) Date: Mon, 04 Jan 2010 21:32:33 -0000 Subject: [Python-checkins] r77303 - python/branches/release26-maint Message-ID: Author: mark.dickinson Date: Mon Jan 4 22:32:33 2010 New Revision: 77303 Log: Blocked revisions 77302 via svnmerge ........ r77302 | mark.dickinson | 2010-01-04 21:32:02 +0000 (Mon, 04 Jan 2010) | 1 line Fix typo in comment. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Mon Jan 4 22:33:31 2010 From: python-checkins at python.org (mark.dickinson) Date: Mon, 04 Jan 2010 21:33:31 -0000 Subject: [Python-checkins] r77304 - in python/branches/py3k: Python/dtoa.c Message-ID: Author: mark.dickinson Date: Mon Jan 4 22:33:31 2010 New Revision: 77304 Log: Merged revisions 77302 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77302 | mark.dickinson | 2010-01-04 21:32:02 +0000 (Mon, 04 Jan 2010) | 1 line Fix typo in comment. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Python/dtoa.c Modified: python/branches/py3k/Python/dtoa.c ============================================================================== --- python/branches/py3k/Python/dtoa.c (original) +++ python/branches/py3k/Python/dtoa.c Mon Jan 4 22:33:31 2010 @@ -927,7 +927,7 @@ Given a finite nonzero double d, return an odd Bigint b and exponent *e such that fabs(d) = b * 2**e. On return, *bbits gives the number of - significant bits of e; that is, 2**(*bbits-1) <= b < 2**(*bbits). + significant bits of b; that is, 2**(*bbits-1) <= b < 2**(*bbits). If d is zero, then b == 0, *e == -1010, *bbits = 0. */ From python-checkins at python.org Mon Jan 4 22:34:08 2010 From: python-checkins at python.org (mark.dickinson) Date: Mon, 04 Jan 2010 21:34:08 -0000 Subject: [Python-checkins] r77305 - in python/branches/release31-maint: Python/dtoa.c Message-ID: Author: mark.dickinson Date: Mon Jan 4 22:34:08 2010 New Revision: 77305 Log: Merged revisions 77304 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77304 | mark.dickinson | 2010-01-04 21:33:31 +0000 (Mon, 04 Jan 2010) | 9 lines Merged revisions 77302 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77302 | mark.dickinson | 2010-01-04 21:32:02 +0000 (Mon, 04 Jan 2010) | 1 line Fix typo in comment. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Python/dtoa.c Modified: python/branches/release31-maint/Python/dtoa.c ============================================================================== --- python/branches/release31-maint/Python/dtoa.c (original) +++ python/branches/release31-maint/Python/dtoa.c Mon Jan 4 22:34:08 2010 @@ -927,7 +927,7 @@ Given a finite nonzero double d, return an odd Bigint b and exponent *e such that fabs(d) = b * 2**e. On return, *bbits gives the number of - significant bits of e; that is, 2**(*bbits-1) <= b < 2**(*bbits). + significant bits of b; that is, 2**(*bbits-1) <= b < 2**(*bbits). If d is zero, then b == 0, *e == -1010, *bbits = 0. */ From python-checkins at python.org Mon Jan 4 22:43:03 2010 From: python-checkins at python.org (ezio.melotti) Date: Mon, 04 Jan 2010 21:43:03 -0000 Subject: [Python-checkins] r77306 - python/trunk/Doc/library/optparse.rst Message-ID: Author: ezio.melotti Date: Mon Jan 4 22:43:02 2010 New Revision: 77306 Log: #3340: document print/get_usage and print/get_version Modified: python/trunk/Doc/library/optparse.rst Modified: python/trunk/Doc/library/optparse.rst ============================================================================== --- python/trunk/Doc/library/optparse.rst (original) +++ python/trunk/Doc/library/optparse.rst Mon Jan 4 22:43:02 2010 @@ -603,6 +603,20 @@ $ /usr/bin/foo --version foo 1.0 +The following two methods can be used to print and get the ``version`` string: + +.. method:: OptionParser.print_version(file=None) + + Print the version message for the current program (``self.version``) to + *file* (default stdout). As with :meth:`print_usage`, any occurrence + of ``"%prog"`` in ``self.version`` is replaced with the name of the current + program. Does nothing if ``self.version`` is empty or undefined. + +.. method:: OptionParser.get_version() + + Same as :meth:`print_version` but returns the version string instead of + printing it. + .. _optparse-how-optparse-handles-errors: @@ -1389,6 +1403,18 @@ constructor keyword argument. Passing ``None`` sets the default usage string; use :data:`optparse.SUPPRESS_USAGE` to suppress a usage message. +.. method:: OptionParser.print_usage(file=None) + + Print the usage message for the current program (``self.usage``) to *file* + (default stdout). Any occurrence of the string ``"%prog"`` in ``self.usage`` + is replaced with the name of the current program. Does nothing if + ``self.usage`` is empty or not defined. + +.. method:: OptionParser.get_usage() + + Same as :meth:`print_usage` but returns the usage string instead of + printing it. + .. method:: OptionParser.set_defaults(dest=value, ...) Set default values for several option destinations at once. Using From python-checkins at python.org Mon Jan 4 22:51:09 2010 From: python-checkins at python.org (ezio.melotti) Date: Mon, 04 Jan 2010 21:51:09 -0000 Subject: [Python-checkins] r77307 - in python/branches/release26-maint: Doc/library/optparse.rst Message-ID: Author: ezio.melotti Date: Mon Jan 4 22:51:09 2010 New Revision: 77307 Log: Merged revisions 77306 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77306 | ezio.melotti | 2010-01-04 23:43:02 +0200 (Mon, 04 Jan 2010) | 1 line #3340: document print/get_usage and print/get_version ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Doc/library/optparse.rst Modified: python/branches/release26-maint/Doc/library/optparse.rst ============================================================================== --- python/branches/release26-maint/Doc/library/optparse.rst (original) +++ python/branches/release26-maint/Doc/library/optparse.rst Mon Jan 4 22:51:09 2010 @@ -605,6 +605,20 @@ $ /usr/bin/foo --version foo 1.0 +The following two methods can be used to print and get the ``version`` string: + +.. method:: OptionParser.print_version(file=None) + + Print the version message for the current program (``self.version``) to + *file* (default stdout). As with :meth:`print_usage`, any occurrence + of ``"%prog"`` in ``self.version`` is replaced with the name of the current + program. Does nothing if ``self.version`` is empty or undefined. + +.. method:: OptionParser.get_version() + + Same as :meth:`print_version` but returns the version string instead of + printing it. + .. _optparse-how-optparse-handles-errors: @@ -1391,6 +1405,18 @@ constructor keyword argument. Passing ``None`` sets the default usage string; use :data:`optparse.SUPPRESS_USAGE` to suppress a usage message. +.. method:: OptionParser.print_usage(file=None) + + Print the usage message for the current program (``self.usage``) to *file* + (default stdout). Any occurrence of the string ``"%prog"`` in ``self.usage`` + is replaced with the name of the current program. Does nothing if + ``self.usage`` is empty or not defined. + +.. method:: OptionParser.get_usage() + + Same as :meth:`print_usage` but returns the usage string instead of + printing it. + .. method:: OptionParser.set_defaults(dest=value, ...) Set default values for several option destinations at once. Using From python-checkins at python.org Mon Jan 4 22:53:18 2010 From: python-checkins at python.org (ezio.melotti) Date: Mon, 04 Jan 2010 21:53:18 -0000 Subject: [Python-checkins] r77308 - in python/branches/py3k: Doc/library/optparse.rst Message-ID: Author: ezio.melotti Date: Mon Jan 4 22:53:17 2010 New Revision: 77308 Log: Merged revisions 77306 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77306 | ezio.melotti | 2010-01-04 23:43:02 +0200 (Mon, 04 Jan 2010) | 1 line #3340: document print/get_usage and print/get_version ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/library/optparse.rst Modified: python/branches/py3k/Doc/library/optparse.rst ============================================================================== --- python/branches/py3k/Doc/library/optparse.rst (original) +++ python/branches/py3k/Doc/library/optparse.rst Mon Jan 4 22:53:17 2010 @@ -598,6 +598,20 @@ $ /usr/bin/foo --version foo 1.0 +The following two methods can be used to print and get the ``version`` string: + +.. method:: OptionParser.print_version(file=None) + + Print the version message for the current program (``self.version``) to + *file* (default stdout). As with :meth:`print_usage`, any occurrence + of ``"%prog"`` in ``self.version`` is replaced with the name of the current + program. Does nothing if ``self.version`` is empty or undefined. + +.. method:: OptionParser.get_version() + + Same as :meth:`print_version` but returns the version string instead of + printing it. + .. _optparse-how-optparse-handles-errors: @@ -1384,6 +1398,18 @@ constructor keyword argument. Passing ``None`` sets the default usage string; use :data:`optparse.SUPPRESS_USAGE` to suppress a usage message. +.. method:: OptionParser.print_usage(file=None) + + Print the usage message for the current program (``self.usage``) to *file* + (default stdout). Any occurrence of the string ``"%prog"`` in ``self.usage`` + is replaced with the name of the current program. Does nothing if + ``self.usage`` is empty or not defined. + +.. method:: OptionParser.get_usage() + + Same as :meth:`print_usage` but returns the usage string instead of + printing it. + .. method:: OptionParser.set_defaults(dest=value, ...) Set default values for several option destinations at once. Using From python-checkins at python.org Mon Jan 4 22:54:32 2010 From: python-checkins at python.org (ezio.melotti) Date: Mon, 04 Jan 2010 21:54:32 -0000 Subject: [Python-checkins] r77309 - in python/branches/release31-maint: Doc/library/optparse.rst Message-ID: Author: ezio.melotti Date: Mon Jan 4 22:54:31 2010 New Revision: 77309 Log: Merged revisions 77308 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77308 | ezio.melotti | 2010-01-04 23:53:17 +0200 (Mon, 04 Jan 2010) | 9 lines Merged revisions 77306 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77306 | ezio.melotti | 2010-01-04 23:43:02 +0200 (Mon, 04 Jan 2010) | 1 line #3340: document print/get_usage and print/get_version ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Doc/library/optparse.rst Modified: python/branches/release31-maint/Doc/library/optparse.rst ============================================================================== --- python/branches/release31-maint/Doc/library/optparse.rst (original) +++ python/branches/release31-maint/Doc/library/optparse.rst Mon Jan 4 22:54:31 2010 @@ -598,6 +598,20 @@ $ /usr/bin/foo --version foo 1.0 +The following two methods can be used to print and get the ``version`` string: + +.. method:: OptionParser.print_version(file=None) + + Print the version message for the current program (``self.version``) to + *file* (default stdout). As with :meth:`print_usage`, any occurrence + of ``"%prog"`` in ``self.version`` is replaced with the name of the current + program. Does nothing if ``self.version`` is empty or undefined. + +.. method:: OptionParser.get_version() + + Same as :meth:`print_version` but returns the version string instead of + printing it. + .. _optparse-how-optparse-handles-errors: @@ -1384,6 +1398,18 @@ constructor keyword argument. Passing ``None`` sets the default usage string; use :data:`optparse.SUPPRESS_USAGE` to suppress a usage message. +.. method:: OptionParser.print_usage(file=None) + + Print the usage message for the current program (``self.usage``) to *file* + (default stdout). Any occurrence of the string ``"%prog"`` in ``self.usage`` + is replaced with the name of the current program. Does nothing if + ``self.usage`` is empty or not defined. + +.. method:: OptionParser.get_usage() + + Same as :meth:`print_usage` but returns the usage string instead of + printing it. + .. method:: OptionParser.set_defaults(dest=value, ...) Set default values for several option destinations at once. Using From python-checkins at python.org Tue Jan 5 00:22:44 2010 From: python-checkins at python.org (antoine.pitrou) Date: Mon, 04 Jan 2010 23:22:44 -0000 Subject: [Python-checkins] r77310 - in python/trunk: Lib/binhex.py Lib/bsddb/__init__.py Lib/compiler/ast.py Lib/compiler/pycodegen.py Lib/dbhash.py Lib/formatter.py Lib/imputil.py Lib/lib2to3/pgen2/tokenize.py Lib/mailbox.py Lib/pprint.py Lib/pstats.py Lib/sets.py Lib/sunau.py Lib/unittest/case.py Lib/wave.py Lib/webbrowser.py Misc/NEWS Tools/compiler/astgen.py Message-ID: Author: antoine.pitrou Date: Tue Jan 5 00:22:44 2010 New Revision: 77310 Log: Issue #7092: Fix the DeprecationWarnings emitted by the standard library when using the -3 flag. Patch by Florent Xicluna. Modified: python/trunk/Lib/binhex.py python/trunk/Lib/bsddb/__init__.py python/trunk/Lib/compiler/ast.py python/trunk/Lib/compiler/pycodegen.py python/trunk/Lib/dbhash.py python/trunk/Lib/formatter.py python/trunk/Lib/imputil.py python/trunk/Lib/lib2to3/pgen2/tokenize.py python/trunk/Lib/mailbox.py python/trunk/Lib/pprint.py python/trunk/Lib/pstats.py python/trunk/Lib/sets.py python/trunk/Lib/sunau.py python/trunk/Lib/unittest/case.py python/trunk/Lib/wave.py python/trunk/Lib/webbrowser.py python/trunk/Misc/NEWS python/trunk/Tools/compiler/astgen.py Modified: python/trunk/Lib/binhex.py ============================================================================== --- python/trunk/Lib/binhex.py (original) +++ python/trunk/Lib/binhex.py Tue Jan 5 00:22:44 2010 @@ -170,7 +170,8 @@ del self.ofp class BinHex: - def __init__(self, (name, finfo, dlen, rlen), ofp): + def __init__(self, name_finfo_dlen_rlen, ofp): + name, finfo, dlen, rlen = name_finfo_dlen_rlen if type(ofp) == type(''): ofname = ofp ofp = open(ofname, 'w') Modified: python/trunk/Lib/bsddb/__init__.py ============================================================================== --- python/trunk/Lib/bsddb/__init__.py (original) +++ python/trunk/Lib/bsddb/__init__.py Tue Jan 5 00:22:44 2010 @@ -44,7 +44,7 @@ if sys.py3kwarning: import warnings - warnings.warnpy3k("in 3.x, bsddb has been removed; " + warnings.warnpy3k("in 3.x, the bsddb module has been removed; " "please use the pybsddb project instead", DeprecationWarning, 2) Modified: python/trunk/Lib/compiler/ast.py ============================================================================== --- python/trunk/Lib/compiler/ast.py (original) +++ python/trunk/Lib/compiler/ast.py Tue Jan 5 00:22:44 2010 @@ -51,9 +51,9 @@ return "Expression(%s)" % (repr(self.node)) class Add(Node): - def __init__(self, (left, right), lineno=None): - self.left = left - self.right = right + def __init__(self, leftright, lineno=None): + self.left = leftright[0] + self.right = leftright[1] self.lineno = lineno def getChildren(self): @@ -431,9 +431,9 @@ return "Discard(%s)" % (repr(self.expr),) class Div(Node): - def __init__(self, (left, right), lineno=None): - self.left = left - self.right = right + def __init__(self, leftright, lineno=None): + self.left = leftright[0] + self.right = leftright[1] self.lineno = lineno def getChildren(self): @@ -485,9 +485,9 @@ return "Exec(%s, %s, %s)" % (repr(self.expr), repr(self.locals), repr(self.globals)) class FloorDiv(Node): - def __init__(self, (left, right), lineno=None): - self.left = left - self.right = right + def __init__(self, leftright, lineno=None): + self.left = leftright[0] + self.right = leftright[1] self.lineno = lineno def getChildren(self): @@ -560,7 +560,6 @@ self.kwargs = 1 - def getChildren(self): children = [] children.append(self.decorators) @@ -590,6 +589,7 @@ self.argnames = ['.0'] self.varargs = self.kwargs = None + def getChildren(self): return self.code, @@ -607,7 +607,6 @@ self.lineno = lineno self.is_outmost = False - def getChildren(self): children = [] children.append(self.assign) @@ -784,7 +783,6 @@ self.kwargs = 1 - def getChildren(self): children = [] children.append(self.argnames) @@ -803,9 +801,9 @@ return "Lambda(%s, %s, %s, %s)" % (repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.code)) class LeftShift(Node): - def __init__(self, (left, right), lineno=None): - self.left = left - self.right = right + def __init__(self, leftright, lineno=None): + self.left = leftright[0] + self.right = leftright[1] self.lineno = lineno def getChildren(self): @@ -893,9 +891,9 @@ return "ListCompIf(%s)" % (repr(self.test),) class Mod(Node): - def __init__(self, (left, right), lineno=None): - self.left = left - self.right = right + def __init__(self, leftright, lineno=None): + self.left = leftright[0] + self.right = leftright[1] self.lineno = lineno def getChildren(self): @@ -923,9 +921,9 @@ return "Module(%s, %s)" % (repr(self.doc), repr(self.node)) class Mul(Node): - def __init__(self, (left, right), lineno=None): - self.left = left - self.right = right + def __init__(self, leftright, lineno=None): + self.left = leftright[0] + self.right = leftright[1] self.lineno = lineno def getChildren(self): @@ -995,9 +993,9 @@ return "Pass()" class Power(Node): - def __init__(self, (left, right), lineno=None): - self.left = left - self.right = right + def __init__(self, leftright, lineno=None): + self.left = leftright[0] + self.right = leftright[1] self.lineno = lineno def getChildren(self): @@ -1095,9 +1093,9 @@ return "Return(%s)" % (repr(self.value),) class RightShift(Node): - def __init__(self, (left, right), lineno=None): - self.left = left - self.right = right + def __init__(self, leftright, lineno=None): + self.left = leftright[0] + self.right = leftright[1] self.lineno = lineno def getChildren(self): @@ -1170,9 +1168,9 @@ return "Stmt(%s)" % (repr(self.nodes),) class Sub(Node): - def __init__(self, (left, right), lineno=None): - self.left = left - self.right = right + def __init__(self, leftright, lineno=None): + self.left = leftright[0] + self.right = leftright[1] self.lineno = lineno def getChildren(self): Modified: python/trunk/Lib/compiler/pycodegen.py ============================================================================== --- python/trunk/Lib/compiler/pycodegen.py (original) +++ python/trunk/Lib/compiler/pycodegen.py Tue Jan 5 00:22:44 2010 @@ -870,10 +870,10 @@ level = node.level if level == 0 and not self.graph.checkFlag(CO_FUTURE_ABSIMPORT): level = -1 - fromlist = map(lambda (name, alias): name, node.names) + fromlist = tuple(name for (name, alias) in node.names) if VERSION > 1: self.emit('LOAD_CONST', level) - self.emit('LOAD_CONST', tuple(fromlist)) + self.emit('LOAD_CONST', fromlist) self.emit('IMPORT_NAME', node.modname) for name, alias in node.names: if VERSION > 1: Modified: python/trunk/Lib/dbhash.py ============================================================================== --- python/trunk/Lib/dbhash.py (original) +++ python/trunk/Lib/dbhash.py Tue Jan 5 00:22:44 2010 @@ -3,7 +3,7 @@ import sys if sys.py3kwarning: import warnings - warnings.warnpy3k("in 3.x, dbhash has been removed", DeprecationWarning, 2) + warnings.warnpy3k("in 3.x, the dbhash module has been removed", DeprecationWarning, 2) try: import bsddb except ImportError: Modified: python/trunk/Lib/formatter.py ============================================================================== --- python/trunk/Lib/formatter.py (original) +++ python/trunk/Lib/formatter.py Tue Jan 5 00:22:44 2010 @@ -228,7 +228,8 @@ self.align = None self.writer.new_alignment(None) - def push_font(self, (size, i, b, tt)): + def push_font(self, font): + size, i, b, tt = font if self.softspace: self.hard_break = self.para_end = self.softspace = 0 self.nospace = 1 Modified: python/trunk/Lib/imputil.py ============================================================================== --- python/trunk/Lib/imputil.py (original) +++ python/trunk/Lib/imputil.py Tue Jan 5 00:22:44 2010 @@ -281,7 +281,8 @@ setattr(parent, modname, module) return module - def _process_result(self, (ispkg, code, values), fqname): + def _process_result(self, result, fqname): + ispkg, code, values = result # did get_code() return an actual module? (rather than a code object) is_module = isinstance(code, _ModuleType) Modified: python/trunk/Lib/lib2to3/pgen2/tokenize.py ============================================================================== --- python/trunk/Lib/lib2to3/pgen2/tokenize.py (original) +++ python/trunk/Lib/lib2to3/pgen2/tokenize.py Tue Jan 5 00:22:44 2010 @@ -144,7 +144,9 @@ class StopTokenizing(Exception): pass -def printtoken(type, token, (srow, scol), (erow, ecol), line): # for testing +def printtoken(type, token, start, end, line): # for testing + (srow, scol) = start + (erow, ecol) = end print "%d,%d-%d,%d:\t%s\t%s" % \ (srow, scol, erow, ecol, tok_name[type], repr(token)) Modified: python/trunk/Lib/mailbox.py ============================================================================== --- python/trunk/Lib/mailbox.py (original) +++ python/trunk/Lib/mailbox.py Tue Jan 5 00:22:44 2010 @@ -18,7 +18,6 @@ import email import email.message import email.generator -import rfc822 import StringIO try: if sys.platform == 'os2emx': @@ -28,6 +27,13 @@ except ImportError: fcntl = None +import warnings +with warnings.catch_warnings(): + if sys.py3kwarning: + warnings.filterwarnings("ignore", ".*rfc822 has been removed", + DeprecationWarning) + import rfc822 + __all__ = [ 'Mailbox', 'Maildir', 'mbox', 'MH', 'Babyl', 'MMDF', 'Message', 'MaildirMessage', 'mboxMessage', 'MHMessage', 'BabylMessage', 'MMDFMessage', 'UnixMailbox', Modified: python/trunk/Lib/pprint.py ============================================================================== --- python/trunk/Lib/pprint.py (original) +++ python/trunk/Lib/pprint.py Tue Jan 5 00:22:44 2010 @@ -35,6 +35,7 @@ """ import sys as _sys +import warnings from cStringIO import StringIO as _StringIO @@ -70,6 +71,13 @@ """Determine if object requires a recursive representation.""" return _safe_repr(object, {}, None, 0)[2] +def _sorted(iterable): + with warnings.catch_warnings(): + if _sys.py3kwarning: + warnings.filterwarnings("ignore", "comparing unequal types " + "not supported", DeprecationWarning) + return sorted(iterable) + class PrettyPrinter: def __init__(self, indent=1, width=80, depth=None, stream=None): """Handle pretty printing operations onto a stream using a set of @@ -144,8 +152,7 @@ if length: context[objid] = 1 indent = indent + self._indent_per_level - items = object.items() - items.sort() + items = _sorted(object.items()) key, ent = items[0] rep = self._repr(key, context, level) write(rep) @@ -181,7 +188,7 @@ return write('set([') endchar = '])' - object = sorted(object) + object = _sorted(object) indent += 4 elif issubclass(typ, frozenset): if not length: @@ -189,7 +196,7 @@ return write('frozenset([') endchar = '])' - object = sorted(object) + object = _sorted(object) indent += 10 else: write('(') @@ -274,7 +281,7 @@ append = components.append level += 1 saferepr = _safe_repr - for k, v in sorted(object.items()): + for k, v in _sorted(object.items()): krepr, kreadable, krecur = saferepr(k, context, maxlevels, level) vrepr, vreadable, vrecur = saferepr(v, context, maxlevels, level) append("%s: %s" % (krepr, vrepr)) Modified: python/trunk/Lib/pstats.py ============================================================================== --- python/trunk/Lib/pstats.py (original) +++ python/trunk/Lib/pstats.py Tue Jan 5 00:22:44 2010 @@ -442,12 +442,12 @@ if nc == 0: print >> self.stream, ' '*8, else: - print >> self.stream, f8(tt/nc), + print >> self.stream, f8(float(tt)/nc), print >> self.stream, f8(ct), if cc == 0: print >> self.stream, ' '*8, else: - print >> self.stream, f8(ct/cc), + print >> self.stream, f8(float(ct)/cc), print >> self.stream, func_std_string(func) class TupleComp: Modified: python/trunk/Lib/sets.py ============================================================================== --- python/trunk/Lib/sets.py (original) +++ python/trunk/Lib/sets.py Tue Jan 5 00:22:44 2010 @@ -54,29 +54,7 @@ # - Raymond Hettinger added a number of speedups and other # improvements. -from __future__ import generators -try: - from itertools import ifilter, ifilterfalse -except ImportError: - # Code to make the module run under Py2.2 - def ifilter(predicate, iterable): - if predicate is None: - def predicate(x): - return x - for x in iterable: - if predicate(x): - yield x - def ifilterfalse(predicate, iterable): - if predicate is None: - def predicate(x): - return x - for x in iterable: - if not predicate(x): - yield x - try: - True, False - except NameError: - True, False = (0==0, 0!=0) +from itertools import ifilter, ifilterfalse __all__ = ['BaseSet', 'Set', 'ImmutableSet'] @@ -235,7 +213,7 @@ little, big = self, other else: little, big = other, self - common = ifilter(big._data.has_key, little) + common = ifilter(big._data.__contains__, little) return self.__class__(common) def __xor__(self, other): @@ -260,9 +238,9 @@ otherdata = other._data except AttributeError: otherdata = Set(other)._data - for elt in ifilterfalse(otherdata.has_key, selfdata): + for elt in ifilterfalse(otherdata.__contains__, selfdata): data[elt] = value - for elt in ifilterfalse(selfdata.has_key, otherdata): + for elt in ifilterfalse(selfdata.__contains__, otherdata): data[elt] = value return result @@ -287,7 +265,7 @@ except AttributeError: otherdata = Set(other)._data value = True - for elt in ifilterfalse(otherdata.has_key, self): + for elt in ifilterfalse(otherdata.__contains__, self): data[elt] = value return result @@ -313,7 +291,7 @@ self._binary_sanity_check(other) if len(self) > len(other): # Fast check for obvious cases return False - for elt in ifilterfalse(other._data.has_key, self): + for elt in ifilterfalse(other._data.__contains__, self): return False return True @@ -322,7 +300,7 @@ self._binary_sanity_check(other) if len(self) < len(other): # Fast check for obvious cases return False - for elt in ifilterfalse(self._data.has_key, other): + for elt in ifilterfalse(self._data.__contains__, other): return False return True @@ -338,6 +316,9 @@ self._binary_sanity_check(other) return len(self) > len(other) and self.issuperset(other) + # We inherit object.__hash__, so we must deny this explicitly + __hash__ = None + # Assorted helpers def _binary_sanity_check(self, other): @@ -439,9 +420,6 @@ def __setstate__(self, data): self._data, = data - # We inherit object.__hash__, so we must deny this explicitly - __hash__ = None - # In-place union, intersection, differences. # Subtle: The xyz_update() functions deliberately return None, # as do all mutating operations on built-in container types. @@ -503,7 +481,7 @@ other = Set(other) if self is other: self.clear() - for elt in ifilter(data.has_key, other): + for elt in ifilter(data.__contains__, other): del data[elt] # Python dict-like mass mutations: update, clear Modified: python/trunk/Lib/sunau.py ============================================================================== --- python/trunk/Lib/sunau.py (original) +++ python/trunk/Lib/sunau.py Tue Jan 5 00:22:44 2010 @@ -364,7 +364,8 @@ else: return 'not compressed' - def setparams(self, (nchannels, sampwidth, framerate, nframes, comptype, compname)): + def setparams(self, params): + nchannels, sampwidth, framerate, nframes, comptype, compname = params self.setnchannels(nchannels) self.setsampwidth(sampwidth) self.setframerate(framerate) Modified: python/trunk/Lib/unittest/case.py ============================================================================== --- python/trunk/Lib/unittest/case.py (original) +++ python/trunk/Lib/unittest/case.py Tue Jan 5 00:22:44 2010 @@ -746,9 +746,15 @@ # not hashable. expected = list(expected_seq) actual = list(actual_seq) - expected.sort() - actual.sort() - missing, unexpected = util.sorted_list_difference(expected, actual) + with warnings.catch_warnings(): + if sys.py3kwarning: + # Silence Py3k warning + warnings.filterwarnings("ignore", + "dict inequality comparisons " + "not supported", DeprecationWarning) + expected.sort() + actual.sort() + missing, unexpected = util.sorted_list_difference(expected, actual) errors = [] if missing: errors.append('Expected, but missing:\n %r' % missing) Modified: python/trunk/Lib/wave.py ============================================================================== --- python/trunk/Lib/wave.py (original) +++ python/trunk/Lib/wave.py Tue Jan 5 00:22:44 2010 @@ -384,7 +384,8 @@ def getcompname(self): return self._compname - def setparams(self, (nchannels, sampwidth, framerate, nframes, comptype, compname)): + def setparams(self, params): + nchannels, sampwidth, framerate, nframes, comptype, compname = params if self._datawritten: raise Error, 'cannot change parameters after starting to write' self.setnchannels(nchannels) Modified: python/trunk/Lib/webbrowser.py ============================================================================== --- python/trunk/Lib/webbrowser.py (original) +++ python/trunk/Lib/webbrowser.py Tue Jan 5 00:22:44 2010 @@ -650,7 +650,7 @@ for o, a in opts: if o == '-n': new_win = 1 elif o == '-t': new_win = 2 - if len(args) <> 1: + if len(args) != 1: print >>sys.stderr, usage sys.exit(1) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Tue Jan 5 00:22:44 2010 @@ -65,6 +65,9 @@ Library ------- +- Issue #7092: Fix the DeprecationWarnings emitted by the standard library + when using the -3 flag. Patch by Florent Xicluna. + - Issue #7471: Improve the performance of GzipFile's buffering mechanism, and make it implement the `io.BufferedIOBase` ABC to allow for further speedups by wrapping it in an `io.BufferedReader`. Patch by Nir Aides. Modified: python/trunk/Tools/compiler/astgen.py ============================================================================== --- python/trunk/Tools/compiler/astgen.py (original) +++ python/trunk/Tools/compiler/astgen.py Tue Jan 5 00:22:44 2010 @@ -105,12 +105,18 @@ def _gen_init(self, buf): if self.args: - print >> buf, " def __init__(self, %s, lineno=None):" % self.args + argtuple = '(' in self.args + args = self.args if not argtuple else ''.join(self.argnames) + print >> buf, " def __init__(self, %s, lineno=None):" % args else: print >> buf, " def __init__(self, lineno=None):" if self.argnames: - for name in self.argnames: - print >> buf, " self.%s = %s" % (name, name) + if argtuple: + for idx, name in enumerate(self.argnames): + print >> buf, " self.%s = %s[%s]" % (name, args, idx) + else: + for name in self.argnames: + print >> buf, " self.%s = %s" % (name, name) print >> buf, " self.lineno = lineno" # Copy the lines in self.init, indented four spaces. The rstrip() # business is to get rid of the four spaces if line happens to be From python-checkins at python.org Tue Jan 5 00:28:16 2010 From: python-checkins at python.org (antoine.pitrou) Date: Mon, 04 Jan 2010 23:28:16 -0000 Subject: [Python-checkins] r77311 - in python/trunk/Lib: email/test/test_email.py email/test/test_email_renamed.py test/test_wsgiref.py Message-ID: Author: antoine.pitrou Date: Tue Jan 5 00:28:16 2010 New Revision: 77311 Log: Kill a couple of "<>" Modified: python/trunk/Lib/email/test/test_email.py python/trunk/Lib/email/test/test_email_renamed.py python/trunk/Lib/test/test_wsgiref.py Modified: python/trunk/Lib/email/test/test_email.py ============================================================================== --- python/trunk/Lib/email/test/test_email.py (original) +++ python/trunk/Lib/email/test/test_email.py Tue Jan 5 00:28:16 2010 @@ -51,7 +51,7 @@ class TestEmailBase(unittest.TestCase): def ndiffAssertEqual(self, first, second): """Like assertEqual except use ndiff for readable output.""" - if first <> second: + if first != second: sfirst = str(first) ssecond = str(second) diff = difflib.ndiff(sfirst.splitlines(), ssecond.splitlines()) @@ -2775,7 +2775,7 @@ # Try a charset with None body encoding c = Charset('us-ascii') eq('hello world', c.body_encode('hello world')) - # Try the convert argument, where input codec <> output codec + # Try the convert argument, where input codec != output codec c = Charset('euc-jp') # With apologies to Tokio Kikuchi ;) try: Modified: python/trunk/Lib/email/test/test_email_renamed.py ============================================================================== --- python/trunk/Lib/email/test/test_email_renamed.py (original) +++ python/trunk/Lib/email/test/test_email_renamed.py Tue Jan 5 00:28:16 2010 @@ -52,7 +52,7 @@ class TestEmailBase(unittest.TestCase): def ndiffAssertEqual(self, first, second): """Like assertEqual except use ndiff for readable output.""" - if first <> second: + if first != second: sfirst = str(first) ssecond = str(second) diff = difflib.ndiff(sfirst.splitlines(), ssecond.splitlines()) @@ -2770,7 +2770,7 @@ # Try a charset with None body encoding c = Charset('us-ascii') eq('hello world', c.body_encode('hello world')) - # Try the convert argument, where input codec <> output codec + # Try the convert argument, where input codec != output codec c = Charset('euc-jp') # With apologies to Tokio Kikuchi ;) try: Modified: python/trunk/Lib/test/test_wsgiref.py ============================================================================== --- python/trunk/Lib/test/test_wsgiref.py (original) +++ python/trunk/Lib/test/test_wsgiref.py Tue Jan 5 00:28:16 2010 @@ -523,7 +523,7 @@ "Content-Length: %d\r\n" "\r\n%s" % (h.error_status,len(h.error_body),h.error_body)) - self.assertTrue(h.stderr.getvalue().find("AssertionError")<>-1) + self.assertNotEqual(h.stderr.getvalue().find("AssertionError"), -1) def testErrorAfterOutput(self): MSG = "Some output has been sent" @@ -536,7 +536,7 @@ self.assertEqual(h.stdout.getvalue(), "Status: 200 OK\r\n" "\r\n"+MSG) - self.assertTrue(h.stderr.getvalue().find("AssertionError")<>-1) + self.assertNotEqual(h.stderr.getvalue().find("AssertionError"), -1) def testHeaderFormats(self): From python-checkins at python.org Tue Jan 5 00:29:26 2010 From: python-checkins at python.org (antoine.pitrou) Date: Mon, 04 Jan 2010 23:29:26 -0000 Subject: [Python-checkins] r77312 - python/branches/py3k Message-ID: Author: antoine.pitrou Date: Tue Jan 5 00:29:25 2010 New Revision: 77312 Log: Blocked revisions 77310-77311 via svnmerge ........ r77310 | antoine.pitrou | 2010-01-05 00:22:44 +0100 (mar., 05 janv. 2010) | 4 lines Issue #7092: Fix the DeprecationWarnings emitted by the standard library when using the -3 flag. Patch by Florent Xicluna. ........ r77311 | antoine.pitrou | 2010-01-05 00:28:16 +0100 (mar., 05 janv. 2010) | 3 lines Kill a couple of "<>" ........ Modified: python/branches/py3k/ (props changed) From solipsis at pitrou.net Tue Jan 5 00:50:52 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Tue, 5 Jan 2010 00:50:52 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77308): sum=0 Message-ID: <20100104235052.6DC3617714@ns6635.ovh.net> py3k results for svn r77308 (hg cset b1fa9b84d7fa) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogv_E9Tw', '-x', 'test_httpservers'] From python-checkins at python.org Tue Jan 5 01:04:19 2010 From: python-checkins at python.org (benjamin.peterson) Date: Tue, 05 Jan 2010 00:04:19 -0000 Subject: [Python-checkins] r77313 - python/trunk/Lib/test/test_hashlib.py Message-ID: Author: benjamin.peterson Date: Tue Jan 5 01:04:19 2010 New Revision: 77313 Log: add a test about hashing array.array Modified: python/trunk/Lib/test/test_hashlib.py Modified: python/trunk/Lib/test/test_hashlib.py ============================================================================== --- python/trunk/Lib/test/test_hashlib.py (original) +++ python/trunk/Lib/test/test_hashlib.py Tue Jan 5 01:04:19 2010 @@ -6,8 +6,10 @@ # Licensed to PSF under a Contributor Agreement. # +import array import hashlib import StringIO +import itertools import sys try: import threading @@ -94,6 +96,13 @@ super(HashLibTestCase, self).__init__(*args, **kwargs) + def test_hash_array(self): + a = array.array("b", range(10)) + constructors = self.constructors_to_test.itervalues() + for cons in itertools.chain.from_iterable(constructors): + c = cons(a) + c.hexdigest() + def test_unknown_hash(self): try: hashlib.new('spam spam spam spam spam') From nnorwitz at gmail.com Tue Jan 5 02:15:20 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 4 Jan 2010 20:15:20 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100105011520.GA31397@kbk-i386-bb.psfb.org> 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-8592 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [21174 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [886163 refs] From python-checkins at python.org Tue Jan 5 09:37:27 2010 From: python-checkins at python.org (ezio.melotti) Date: Tue, 05 Jan 2010 08:37:27 -0000 Subject: [Python-checkins] r77314 - python/branches/py3k/Doc/library/dis.rst Message-ID: Author: ezio.melotti Date: Tue Jan 5 09:37:27 2010 New Revision: 77314 Log: #7432: remove unnecessary from __future__ import division Modified: python/branches/py3k/Doc/library/dis.rst Modified: python/branches/py3k/Doc/library/dis.rst ============================================================================== --- python/branches/py3k/Doc/library/dis.rst (original) +++ python/branches/py3k/Doc/library/dis.rst Tue Jan 5 09:37:27 2010 @@ -219,8 +219,7 @@ .. opcode:: BINARY_TRUE_DIVIDE () - Implements ``TOS = TOS1 / TOS`` when ``from __future__ import division`` is in - effect. + Implements ``TOS = TOS1 / TOS``. .. opcode:: BINARY_MODULO () @@ -290,8 +289,7 @@ .. opcode:: INPLACE_TRUE_DIVIDE () - Implements in-place ``TOS = TOS1 / TOS`` when ``from __future__ import - division`` is in effect. + Implements in-place ``TOS = TOS1 / TOS``. .. opcode:: INPLACE_MODULO () From python-checkins at python.org Tue Jan 5 09:38:30 2010 From: python-checkins at python.org (ezio.melotti) Date: Tue, 05 Jan 2010 08:38:30 -0000 Subject: [Python-checkins] r77315 - in python/branches/release31-maint: Doc/library/dis.rst Message-ID: Author: ezio.melotti Date: Tue Jan 5 09:38:30 2010 New Revision: 77315 Log: Merged revisions 77314 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ........ r77314 | ezio.melotti | 2010-01-05 10:37:27 +0200 (Tue, 05 Jan 2010) | 1 line #7432: remove unnecessary from __future__ import division ........ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Doc/library/dis.rst Modified: python/branches/release31-maint/Doc/library/dis.rst ============================================================================== --- python/branches/release31-maint/Doc/library/dis.rst (original) +++ python/branches/release31-maint/Doc/library/dis.rst Tue Jan 5 09:38:30 2010 @@ -219,8 +219,7 @@ .. opcode:: BINARY_TRUE_DIVIDE () - Implements ``TOS = TOS1 / TOS`` when ``from __future__ import division`` is in - effect. + Implements ``TOS = TOS1 / TOS``. .. opcode:: BINARY_MODULO () @@ -290,8 +289,7 @@ .. opcode:: INPLACE_TRUE_DIVIDE () - Implements in-place ``TOS = TOS1 / TOS`` when ``from __future__ import - division`` is in effect. + Implements in-place ``TOS = TOS1 / TOS``. .. opcode:: INPLACE_MODULO () From nnorwitz at gmail.com Tue Jan 5 10:16:31 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 5 Jan 2010 04:16:31 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100105091631.GA3596@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [869704 refs] From nnorwitz at gmail.com Tue Jan 5 10:27:52 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 5 Jan 2010 04:27:52 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100105092752.GA7725@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19567 refs] [19567 refs] [19567 refs] [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [868603 refs] From python-checkins at python.org Tue Jan 5 11:22:04 2010 From: python-checkins at python.org (georg.brandl) Date: Tue, 05 Jan 2010 10:22:04 -0000 Subject: [Python-checkins] r77316 - in python/branches/py3k/Doc: glossary.rst library/binascii.rst library/reprlib.rst library/stdtypes.rst Message-ID: Author: georg.brandl Date: Tue Jan 5 11:22:04 2010 New Revision: 77316 Log: Assorted doc fixes by Florent. Modified: python/branches/py3k/Doc/glossary.rst python/branches/py3k/Doc/library/binascii.rst python/branches/py3k/Doc/library/reprlib.rst python/branches/py3k/Doc/library/stdtypes.rst Modified: python/branches/py3k/Doc/glossary.rst ============================================================================== --- python/branches/py3k/Doc/glossary.rst (original) +++ python/branches/py3k/Doc/glossary.rst Tue Jan 5 11:22:04 2010 @@ -355,7 +355,7 @@ list comprehension A compact way to process all or part of the elements in a sequence and - return a list with the results. ``result = ["0x%02x" % x for x in + return a list with the results. ``result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0]`` generates a list of strings containing even hex numbers (0x..) in the range from 0 to 255. The :keyword:`if` clause is optional. If omitted, all elements in ``range(256)`` are @@ -471,7 +471,7 @@ object drops to zero, it is deallocated. Reference counting is generally not visible to Python code, but it is a key element of the :term:`CPython` implementation. The :mod:`sys` module defines a - :func:`getrefcount` function that programmers can call to return the + :func:`~sys.getrefcount` function that programmers can call to return the reference count for a particular object. __slots__ Modified: python/branches/py3k/Doc/library/binascii.rst ============================================================================== --- python/branches/py3k/Doc/library/binascii.rst (original) +++ python/branches/py3k/Doc/library/binascii.rst Tue Jan 5 11:22:04 2010 @@ -109,11 +109,11 @@ use as a checksum algorithm, it is not suitable for use as a general hash algorithm. Use as follows:: - print(binascii.crc32("hello world")) + print(binascii.crc32(b"hello world")) # Or, in two pieces: - crc = binascii.crc32("hello") - crc = binascii.crc32(" world", crc) & 0xffffffff - print('crc32 = 0x%08x' % crc) + crc = binascii.crc32(b"hello") + crc = binascii.crc32(b" world", crc) & 0xffffffff + print('crc32 = {:#010x}'.format(crc)) .. note:: To generate the same numeric value across all Python versions and Modified: python/branches/py3k/Doc/library/reprlib.rst ============================================================================== --- python/branches/py3k/Doc/library/reprlib.rst (original) +++ python/branches/py3k/Doc/library/reprlib.rst Tue Jan 5 11:22:04 2010 @@ -129,5 +129,5 @@ return repr(obj) aRepr = MyRepr() - print aRepr.repr(sys.stdin) # prints '' + print(aRepr.repr(sys.stdin)) # prints '' Modified: python/branches/py3k/Doc/library/stdtypes.rst ============================================================================== --- python/branches/py3k/Doc/library/stdtypes.rst (original) +++ python/branches/py3k/Doc/library/stdtypes.rst Tue Jan 5 11:22:04 2010 @@ -1907,7 +1907,7 @@ .. describe:: iter(d) Return an iterator over the keys of the dictionary. This is a shortcut - for :meth:`iterkeys`. + for ``iter(d.keys())``. .. method:: clear() From nnorwitz at gmail.com Tue Jan 5 13:05:04 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 5 Jan 2010 07:05:04 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100105120504.GA14660@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils Checking out Sphinx... A tools/sphinx/jinja2glue.py A tools/sphinx/quickstart.py A tools/sphinx/theming.py A tools/sphinx/pycode A tools/sphinx/pycode/nodes.py A tools/sphinx/pycode/Grammar.txt A tools/sphinx/pycode/__init__.py A tools/sphinx/pycode/pgen2 A tools/sphinx/pycode/pgen2/tokenize.py A tools/sphinx/pycode/pgen2/pgen.py A tools/sphinx/pycode/pgen2/parse.py A tools/sphinx/pycode/pgen2/driver.py A tools/sphinx/pycode/pgen2/__init__.py A tools/sphinx/pycode/pgen2/literals.py A tools/sphinx/pycode/pgen2/token.py A tools/sphinx/pycode/pgen2/grammar.py A tools/sphinx/themes A tools/sphinx/themes/sphinxdoc A tools/sphinx/themes/sphinxdoc/layout.html A tools/sphinx/themes/sphinxdoc/theme.conf A tools/sphinx/themes/sphinxdoc/static A tools/sphinx/themes/sphinxdoc/static/contents.png A tools/sphinx/themes/sphinxdoc/static/navigation.png A tools/sphinx/themes/sphinxdoc/static/sphinxdoc.css A tools/sphinx/themes/basic A tools/sphinx/themes/basic/page.html A tools/sphinx/themes/basic/layout.html A tools/sphinx/themes/basic/genindex-single.html A tools/sphinx/themes/basic/genindex.html A tools/sphinx/themes/basic/opensearch.xml A tools/sphinx/themes/basic/theme.conf A tools/sphinx/themes/basic/static A tools/sphinx/themes/basic/static/doctools.js A tools/sphinx/themes/basic/static/searchtools.js A tools/sphinx/themes/basic/static/file.png A tools/sphinx/themes/basic/static/plus.png A tools/sphinx/themes/basic/static/basic.css A tools/sphinx/themes/basic/static/jquery.js A tools/sphinx/themes/basic/static/minus.png A tools/sphinx/themes/basic/changes A tools/sphinx/themes/basic/changes/versionchanges.html A tools/sphinx/themes/basic/changes/frameset.html A tools/sphinx/themes/basic/changes/rstsource.html A tools/sphinx/themes/basic/search.html A tools/sphinx/themes/basic/defindex.html A tools/sphinx/themes/basic/modindex.html A tools/sphinx/themes/basic/genindex-split.html A tools/sphinx/themes/default A tools/sphinx/themes/default/theme.conf A tools/sphinx/themes/default/static A tools/sphinx/themes/default/static/default.css_t A tools/sphinx/themes/traditional A tools/sphinx/themes/traditional/theme.conf A tools/sphinx/themes/traditional/static A tools/sphinx/themes/traditional/static/traditional.css A tools/sphinx/setup_command.py A tools/sphinx/__init__.py A tools/sphinx/application.py A tools/sphinx/environment.py A tools/sphinx/search.py A tools/sphinx/config.py A tools/sphinx/highlighting.py A tools/sphinx/writers A tools/sphinx/writers/latex.py A tools/sphinx/writers/__init__.py A tools/sphinx/writers/html.py A tools/sphinx/writers/text.py A tools/sphinx/locale A tools/sphinx/locale/__init__.py A tools/sphinx/locale/ru A tools/sphinx/locale/ru/LC_MESSAGES A tools/sphinx/locale/ru/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/ru/LC_MESSAGES/sphinx.js A tools/sphinx/locale/ru/LC_MESSAGES/sphinx.po A tools/sphinx/locale/de A tools/sphinx/locale/de/LC_MESSAGES A tools/sphinx/locale/de/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/de/LC_MESSAGES/sphinx.js A tools/sphinx/locale/de/LC_MESSAGES/sphinx.po A tools/sphinx/locale/ja A tools/sphinx/locale/ja/LC_MESSAGES A tools/sphinx/locale/ja/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/ja/LC_MESSAGES/sphinx.js A tools/sphinx/locale/ja/LC_MESSAGES/sphinx.po A tools/sphinx/locale/zh_TW A tools/sphinx/locale/zh_TW/LC_MESSAGES A tools/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js A tools/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po A tools/sphinx/locale/fi A tools/sphinx/locale/fi/LC_MESSAGES A tools/sphinx/locale/fi/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/fi/LC_MESSAGES/sphinx.js A tools/sphinx/locale/fi/LC_MESSAGES/sphinx.po A tools/sphinx/locale/uk_UA A tools/sphinx/locale/uk_UA/LC_MESSAGES A tools/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js A tools/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po A tools/sphinx/locale/cs A tools/sphinx/locale/cs/LC_MESSAGES A tools/sphinx/locale/cs/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/cs/LC_MESSAGES/sphinx.js A tools/sphinx/locale/cs/LC_MESSAGES/sphinx.po A tools/sphinx/locale/pt_BR A tools/sphinx/locale/pt_BR/LC_MESSAGES A tools/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js A tools/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po A tools/sphinx/locale/es A tools/sphinx/locale/es/LC_MESSAGES A tools/sphinx/locale/es/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/es/LC_MESSAGES/sphinx.js A tools/sphinx/locale/es/LC_MESSAGES/sphinx.po A tools/sphinx/locale/fr A tools/sphinx/locale/fr/LC_MESSAGES A tools/sphinx/locale/fr/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/fr/LC_MESSAGES/sphinx.js A tools/sphinx/locale/fr/LC_MESSAGES/sphinx.po A tools/sphinx/locale/nl A tools/sphinx/locale/nl/LC_MESSAGES A tools/sphinx/locale/nl/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/nl/LC_MESSAGES/sphinx.js A tools/sphinx/locale/nl/LC_MESSAGES/sphinx.po A tools/sphinx/locale/sphinx.pot A tools/sphinx/locale/pl A tools/sphinx/locale/pl/LC_MESSAGES A tools/sphinx/locale/pl/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/pl/LC_MESSAGES/sphinx.js A tools/sphinx/locale/pl/LC_MESSAGES/sphinx.po A tools/sphinx/locale/it A tools/sphinx/locale/it/LC_MESSAGES A tools/sphinx/locale/it/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/it/LC_MESSAGES/sphinx.js A tools/sphinx/locale/it/LC_MESSAGES/sphinx.po A tools/sphinx/locale/sl A tools/sphinx/locale/sl/LC_MESSAGES A tools/sphinx/locale/sl/LC_MESSAGES/sphinx.mo A tools/sphinx/locale/sl/LC_MESSAGES/sphinx.js A tools/sphinx/locale/sl/LC_MESSAGES/sphinx.po A tools/sphinx/ext A tools/sphinx/ext/graphviz.py A tools/sphinx/ext/coverage.py A tools/sphinx/ext/intersphinx.py A tools/sphinx/ext/inheritance_diagram.py A tools/sphinx/ext/autodoc.py A tools/sphinx/ext/pngmath.py A tools/sphinx/ext/__init__.py A tools/sphinx/ext/autosummary A tools/sphinx/ext/autosummary/generate.py A tools/sphinx/ext/autosummary/__init__.py A tools/sphinx/ext/autosummary/templates A tools/sphinx/ext/autosummary/templates/module A tools/sphinx/ext/refcounting.py A tools/sphinx/ext/ifconfig.py A tools/sphinx/ext/mathbase.py A tools/sphinx/ext/doctest.py A tools/sphinx/ext/todo.py A tools/sphinx/ext/jsmath.py A tools/sphinx/directives A tools/sphinx/directives/code.py A tools/sphinx/directives/desc.py A tools/sphinx/directives/__init__.py A tools/sphinx/directives/other.py A tools/sphinx/cmdline.py A tools/sphinx/errors.py A tools/sphinx/texinputs A tools/sphinx/texinputs/python.ist A tools/sphinx/texinputs/howto.cls A tools/sphinx/texinputs/tabulary.sty A tools/sphinx/texinputs/sphinx.sty A tools/sphinx/texinputs/fncychap.sty A tools/sphinx/texinputs/Makefile A tools/sphinx/texinputs/manual.cls A tools/sphinx/addnodes.py A tools/sphinx/builders A tools/sphinx/builders/changes.py A tools/sphinx/builders/linkcheck.py A tools/sphinx/builders/htmlhelp.py A tools/sphinx/builders/latex.py A tools/sphinx/builders/qthelp.py A tools/sphinx/builders/__init__.py A tools/sphinx/builders/html.py A tools/sphinx/builders/text.py A tools/sphinx/roles.py A tools/sphinx/builder.py A tools/sphinx/util A tools/sphinx/util/pycompat.py A tools/sphinx/util/stemmer.py A tools/sphinx/util/tags.py A tools/sphinx/util/__init__.py A tools/sphinx/util/docstrings.py A tools/sphinx/util/texescape.py A tools/sphinx/util/console.py A tools/sphinx/util/jsdump.py A tools/sphinx/util/compat.py A tools/sphinx/util/png.py A tools/sphinx/util/inspect.py A tools/sphinx/util/smartypants.py Checked out revision 77316. Checking out Docutils... svn: PROPFIND request failed on '/projects/external/docutils-0.5/docutils' svn: PROPFIND of '/projects/external/docutils-0.5/docutils': could not connect to server (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Tue Jan 5 13:04:54 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 5 Jan 2010 07:04:54 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100105120454.GA14636@kbk-i386-bb.psfb.org> 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-7316 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [886216 refs] From python-checkins at python.org Tue Jan 5 19:14:53 2010 From: python-checkins at python.org (georg.brandl) Date: Tue, 05 Jan 2010 18:14:53 -0000 Subject: [Python-checkins] r77317 - python/trunk/Misc/developers.txt Message-ID: Author: georg.brandl Date: Tue Jan 5 19:14:52 2010 New Revision: 77317 Log: Add Stefan. Modified: python/trunk/Misc/developers.txt Modified: python/trunk/Misc/developers.txt ============================================================================== --- python/trunk/Misc/developers.txt (original) +++ python/trunk/Misc/developers.txt Tue Jan 5 19:14:52 2010 @@ -20,6 +20,9 @@ Permissions History ------------------- +- Stefan Krah was given SVN access on January 5 2010 by GFB, at + suggestion of Mark Dickinson, for work on the decimal module. + - Doug Hellmann was given SVN access on September 19 2009 by GFB, at suggestion of Jesse Noller, for documentation work. From nnorwitz at gmail.com Tue Jan 5 22:16:02 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 5 Jan 2010 16:16:02 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100105211602.GA24237@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [869704 refs] From nnorwitz at gmail.com Tue Jan 5 22:27:24 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 5 Jan 2010 16:27:24 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100105212724.GA28335@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19567 refs] [19567 refs] [19567 refs] [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [868622 refs] From solipsis at pitrou.net Wed Jan 6 00:49:03 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Wed, 6 Jan 2010 00:49:03 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77316): sum=0 Message-ID: <20100105234903.11D8E17715@ns6635.ovh.net> py3k results for svn r77316 (hg cset 7c88508627e0) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogCq5Tpt', '-x', 'test_httpservers'] From python-checkins at python.org Wed Jan 6 00:54:57 2010 From: python-checkins at python.org (tarek.ziade) Date: Tue, 05 Jan 2010 23:54:57 -0000 Subject: [Python-checkins] r77318 - peps/trunk/pep-0386.txt Message-ID: Author: tarek.ziade Date: Wed Jan 6 00:54:56 2010 New Revision: 77318 Log: introduced rc so Python's own scheme works. Also added recent PyPI stats Modified: peps/trunk/pep-0386.txt Modified: peps/trunk/pep-0386.txt ============================================================================== --- peps/trunk/pep-0386.txt (original) +++ peps/trunk/pep-0386.txt Wed Jan 6 00:54:56 2010 @@ -292,7 +292,7 @@ The pseudo-format supported is:: - N.N[.N]+[{abc}N[.N]+][.postN][.devN] + N.N[.N]+[{a|b|c|rc}N[.N]+][.postN][.devN] The real regular expression is:: @@ -300,7 +300,8 @@ (?P\d+\.\d+) # minimum 'N.N' (?P(?:\.\d+)*) # any number of extra '.N' segments (?: - (?P[abc]) # 'a'=alpha, 'b'=beta, 'c'=release candidate + (?P[abc]|rc) # 'a' = alpha, 'b' = beta + # 'c' or 'rc' = release candidate (?P\d+(?:\.\d+)*) )? (?P(\.post(?P\d+))?(\.dev(?P\d+))?)? @@ -331,10 +332,24 @@ be a ``1.2.0-r678`` release. We used ``post`` instead of ``r`` because the ``r`` is ambiguous as to whether it indicates a pre- or post-release. -Last, ``.post456.dev34`` indicates a dev marker for a post release, that sorts +``.post456.dev34`` indicates a dev marker for a post release, that sorts before a ``.post456`` marker. This can be used to do development versions of post releases. +Pre-releases can use ``a`` for "alpha", ``b`` for "beta" and ``c`` for +"release candidate". ``rc`` is an alternative notation for "release candidate" +that is added to make the version scheme compatible with Python's own version +scheme. ``rc`` sorts after ``c``:: + + >>> from verlib import NormalizedVersion as V + >>> (V('1.0a1') + ... < V('1.0a2') + ... < V('1.0b3') + ... < V('1.0c1') + ... < V('1.0rc2') + ... < V('1.0') + True + ``verlib`` provides a ``NormalizedVersion`` class and a ``suggest_normalized_version`` function. @@ -387,12 +402,25 @@ to get an equivalent (or close) normalized version from this function. This does a number of simple normalizations to the given string, based -on observation of versions currently in use on PyPI. Given a dump of those -version during PyCon 2009, 4287 of them: +on observation of versions currently in use on PyPI. + +Given a dump of those version on January 6th 2010, the function has given those +results out of the 8821 distributions PyPI had: -- 2312 (53.93%) match NormalizedVersion without change with the automatic - suggestion -- 3474 (81.04%) match when using this suggestion method +- 7822 (88.67%) already match ``NormalizedVersion`` without any change +- 717 (8.13%) match when using this suggestion method +- 282 (3.20%) don't match at all. + +The 3.20% of projects that are incompatible with ``NormalizedVersion`` +and cannot be transformed into a compatible form, are for most of them date-based +version schemes, versions with custom markers, or dummy versions. Examples: + +- working proof of concept +- 1 (first draft) +- unreleased.unofficialdev +- 0.1.alphadev +- 2008-03-29_r219 +- etc. When a tool needs to work with versions, a strategy is to use ``suggest_normalized_version`` on the versions string. If this function returns @@ -416,8 +444,8 @@ ... return NormalizedVersion(rversion) ... - >>> validate_version('2.4rc1') - __main__:8: UserWarning: "2.4rc1" is not a normalized version. + >>> validate_version('2.4-rc1') + __main__:8: UserWarning: "2.4-rc1" is not a normalized version. It has been transformed into "2.4c1" for interoperability. NormalizedVersion('2.4c1') From nnorwitz at gmail.com Wed Jan 6 01:43:22 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 5 Jan 2010 19:43:22 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100106004322.GA2818@kbk-i386-bb.psfb.org> 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-27944 test_bsddb3 still working, be patient... test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [886213 refs] From python-checkins at python.org Wed Jan 6 01:55:22 2010 From: python-checkins at python.org (benjamin.peterson) Date: Wed, 06 Jan 2010 00:55:22 -0000 Subject: [Python-checkins] r77319 - python/branches/release26-maint/Doc/tutorial/inputoutput.rst Message-ID: Author: benjamin.peterson Date: Wed Jan 6 01:55:21 2010 New Revision: 77319 Log: remove auto-numbered format fields Modified: python/branches/release26-maint/Doc/tutorial/inputoutput.rst Modified: python/branches/release26-maint/Doc/tutorial/inputoutput.rst ============================================================================== --- python/branches/release26-maint/Doc/tutorial/inputoutput.rst (original) +++ python/branches/release26-maint/Doc/tutorial/inputoutput.rst Wed Jan 6 01:55:21 2010 @@ -123,7 +123,7 @@ Basic usage of the :meth:`str.format` method looks like this:: - >>> print 'We are the {} who say "{}!"'.format('knights', 'Ni') + >>> print 'We are the {0} who say "{1}!"'.format('knights', 'Ni') We are the knights who say "Ni!" The brackets and characters within them (called format fields) are replaced with @@ -153,9 +153,9 @@ convert the value before it is formatted. :: >>> import math - >>> print 'The value of PI is approximately {}.'.format(math.pi) + >>> print 'The value of PI is approximately {0}.'.format(math.pi) The value of PI is approximately 3.14159265359. - >>> print 'The value of PI is approximately {!r}.'.format(math.pi) + >>> print 'The value of PI is approximately {0!r}.'.format(math.pi) The value of PI is approximately 3.141592653589793. An optional ``':'`` and format specifier can follow the field name. This allows From python-checkins at python.org Wed Jan 6 10:14:44 2010 From: python-checkins at python.org (georg.brandl) Date: Wed, 06 Jan 2010 09:14:44 -0000 Subject: [Python-checkins] r77320 - peps/trunk/pep-0345.txt Message-ID: Author: georg.brandl Date: Wed Jan 6 10:14:44 2010 New Revision: 77320 Log: Fix example, and clarify string literal syntax. Modified: peps/trunk/pep-0345.txt Modified: peps/trunk/pep-0345.txt ============================================================================== --- peps/trunk/pep-0345.txt (original) +++ peps/trunk/pep-0345.txt Wed Jan 6 10:14:44 2010 @@ -470,7 +470,7 @@ Requires-Dist: pywin32 (>1.0); sys.platform == 'win32' Obsoletes-Dist: pywin31; sys.platform == 'win32' - Requires-Dist: foo (1,!=1.3); os.machine == 'i386' + Requires-Dist: foo (1,!=1.3); platform.machine == 'i386' Requires-Dist: bar; python_version == '2.4' or python_version == '2.5' Requires-External: libxslt; 'linux' in sys.platform @@ -491,7 +491,7 @@ - sys.platform = sys.platform - platform.version = platform.version() - platform.machine = platform.machine() -- a free string, like ``2.4``, or ``win32`` +- a free string, like ``'2.4'``, or ``'win32'`` Notice that ``in`` is restricted to strings, meaning that it is not possible to use other sequences like tuples or lists on the right side. From nnorwitz at gmail.com Wed Jan 6 10:16:10 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 6 Jan 2010 04:16:10 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100106091610.GA21816@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [869704 refs] From python-checkins at python.org Wed Jan 6 15:31:24 2010 From: python-checkins at python.org (georg.brandl) Date: Wed, 06 Jan 2010 14:31:24 -0000 Subject: [Python-checkins] r77321 - peps/trunk/pep-0386.txt Message-ID: Author: georg.brandl Date: Wed Jan 6 15:31:23 2010 New Revision: 77321 Log: Minor markup and spelling fixes. Modified: peps/trunk/pep-0386.txt Modified: peps/trunk/pep-0386.txt ============================================================================== --- peps/trunk/pep-0386.txt (original) +++ peps/trunk/pep-0386.txt Wed Jan 6 15:31:23 2010 @@ -96,10 +96,10 @@ Distutils --------- -Distutils currently provides a `StrictVersion` and a `LooseVersion` class +Distutils currently provides a ``StrictVersion`` and a ``LooseVersion`` class that can be used to manage versions. -The `LooseVersion` class is quite lax. From Distutils doc:: +The ``LooseVersion`` class is quite lax. From Distutils doc:: Version numbering for anarchists and software realists. Implements the standard interface for version number classes as @@ -146,9 +146,9 @@ (pre and post-releases as well as development versions), as expressed in requisites 2, 3 and 4. -The `StrictVersion` class is more strict. From the doc:: +The ``StrictVersion`` class is more strict. From the doc:: - Version numbering for meticulous retentive and software idealists. + Version numbering for meticulous retentive and software idealists. Implements the standard interface for version number classes as described above. A version number consists of two or three dot-separated numeric components, with an optional "pre-release" tag @@ -196,7 +196,7 @@ elements to make it usable, such as development releases or post-release tags, as expressed in requisites 3 and 4. -Also, note that Distutils version classes have been present since years +Also, note that Distutils version classes have been present for years but are not really used in the community. @@ -204,7 +204,7 @@ ---------- Setuptools provides another version comparison tool [#setuptools-version]_ -which does not enforce any rules for the version, but try to provide a better +which does not enforce any rules for the version, but tries to provide a better algorithm to convert the strings to sortable keys, with a ``parse_version`` function. @@ -279,7 +279,7 @@ switch to a more typical "major.minor..." version scheme is problematic because it will always sort less than "20090421". -Last, the meaning of `-` is specific to Setuptools, while it is avoided in +Last, the meaning of ``-`` is specific to Setuptools, while it is avoided in some packaging systems like the one used by Debian or Ubuntu. The new versioning algorithm @@ -347,7 +347,7 @@ ... < V('1.0b3') ... < V('1.0c1') ... < V('1.0rc2') - ... < V('1.0') + ... < V('1.0')) True ``verlib`` provides a ``NormalizedVersion`` class and a @@ -402,9 +402,9 @@ to get an equivalent (or close) normalized version from this function. This does a number of simple normalizations to the given string, based -on observation of versions currently in use on PyPI. +on an observation of versions currently in use on PyPI. -Given a dump of those version on January 6th 2010, the function has given those +Given a dump of those versions on January 6th 2010, the function has given those results out of the 8821 distributions PyPI had: - 7822 (88.67%) already match ``NormalizedVersion`` without any change @@ -425,11 +425,11 @@ When a tool needs to work with versions, a strategy is to use ``suggest_normalized_version`` on the versions string. If this function returns ``None``, it means that the provided version is not close enough to the -standard scheme. If it returns a version that slighlty differs from +standard scheme. If it returns a version that slightly differs from the original version, it's a suggested normalized version. Last, if it returns the same string, it means that the version matches the scheme. -Here's an example of usage :: +Here's an example of usage:: >>> from verlib import suggest_normalized_version, NormalizedVersion >>> import warnings From python-checkins at python.org Wed Jan 6 17:00:42 2010 From: python-checkins at python.org (mark.dickinson) Date: Wed, 06 Jan 2010 16:00:42 -0000 Subject: [Python-checkins] r77322 - python/branches/py3k-cdecimal Message-ID: Author: mark.dickinson Date: Wed Jan 6 17:00:42 2010 New Revision: 77322 Log: Create branch of py3k for purposes of incorporating Stefan Krah's decimal-in-c work. Added: python/branches/py3k-cdecimal/ - copied from r77321, /python/branches/py3k/ From python-checkins at python.org Wed Jan 6 17:04:04 2010 From: python-checkins at python.org (mark.dickinson) Date: Wed, 06 Jan 2010 16:04:04 -0000 Subject: [Python-checkins] r77323 - python/branches/py3k-cdecimal Message-ID: Author: mark.dickinson Date: Wed Jan 6 17:04:04 2010 New Revision: 77323 Log: Initialized merge tracking via "svnmerge" with revisions "1-77321" from svn+ssh://pythondev at svn.python.org/python/branches/py3k Modified: python/branches/py3k-cdecimal/ (props changed) From python-checkins at python.org Wed Jan 6 17:20:23 2010 From: python-checkins at python.org (mark.dickinson) Date: Wed, 06 Jan 2010 16:20:23 -0000 Subject: [Python-checkins] r77324 - python/trunk/Lib/decimal.py Message-ID: Author: mark.dickinson Date: Wed Jan 6 17:20:22 2010 New Revision: 77324 Log: Add missing docstring for Context.divmod. Thanks Juan Jos? Conti. Modified: python/trunk/Lib/decimal.py Modified: python/trunk/Lib/decimal.py ============================================================================== --- python/trunk/Lib/decimal.py (original) +++ python/trunk/Lib/decimal.py Wed Jan 6 17:20:22 2010 @@ -4051,6 +4051,13 @@ return a.__floordiv__(b, context=self) def divmod(self, a, b): + """Return (a // b, a % b) + + >>> ExtendedContext.divmod(Decimal(8), Decimal(3)) + (Decimal('2'), Decimal('2')) + >>> ExtendedContext.divmod(Decimal(8), Decimal(4)) + (Decimal('2'), Decimal('0')) + """ return a.__divmod__(b, context=self) def exp(self, a): From python-checkins at python.org Wed Jan 6 17:21:28 2010 From: python-checkins at python.org (mark.dickinson) Date: Wed, 06 Jan 2010 16:21:28 -0000 Subject: [Python-checkins] r77325 - in python/branches/release26-maint: Lib/decimal.py Message-ID: Author: mark.dickinson Date: Wed Jan 6 17:21:27 2010 New Revision: 77325 Log: Merged revisions 77324 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77324 | mark.dickinson | 2010-01-06 16:20:22 +0000 (Wed, 06 Jan 2010) | 2 lines Add missing docstring for Context.divmod. Thanks Juan Jos? Conti. ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/decimal.py Modified: python/branches/release26-maint/Lib/decimal.py ============================================================================== --- python/branches/release26-maint/Lib/decimal.py (original) +++ python/branches/release26-maint/Lib/decimal.py Wed Jan 6 17:21:27 2010 @@ -3998,6 +3998,13 @@ return a.__floordiv__(b, context=self) def divmod(self, a, b): + """Return (a // b, a % b) + + >>> ExtendedContext.divmod(Decimal(8), Decimal(3)) + (Decimal('2'), Decimal('2')) + >>> ExtendedContext.divmod(Decimal(8), Decimal(4)) + (Decimal('2'), Decimal('0')) + """ return a.__divmod__(b, context=self) def exp(self, a): From python-checkins at python.org Wed Jan 6 17:22:16 2010 From: python-checkins at python.org (mark.dickinson) Date: Wed, 06 Jan 2010 16:22:16 -0000 Subject: [Python-checkins] r77326 - in python/branches/py3k: Lib/decimal.py Message-ID: Author: mark.dickinson Date: Wed Jan 6 17:22:15 2010 New Revision: 77326 Log: Merged revisions 77324 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77324 | mark.dickinson | 2010-01-06 16:20:22 +0000 (Wed, 06 Jan 2010) | 2 lines Add missing docstring for Context.divmod. Thanks Juan Jos? Conti. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/decimal.py Modified: python/branches/py3k/Lib/decimal.py ============================================================================== --- python/branches/py3k/Lib/decimal.py (original) +++ python/branches/py3k/Lib/decimal.py Wed Jan 6 17:22:15 2010 @@ -4132,6 +4132,13 @@ return a.__floordiv__(b, context=self) def divmod(self, a, b): + """Return (a // b, a % b) + + >>> ExtendedContext.divmod(Decimal(8), Decimal(3)) + (Decimal('2'), Decimal('2')) + >>> ExtendedContext.divmod(Decimal(8), Decimal(4)) + (Decimal('2'), Decimal('0')) + """ return a.__divmod__(b, context=self) def exp(self, a): From python-checkins at python.org Wed Jan 6 17:23:14 2010 From: python-checkins at python.org (mark.dickinson) Date: Wed, 06 Jan 2010 16:23:14 -0000 Subject: [Python-checkins] r77327 - in python/branches/release31-maint: Lib/decimal.py Message-ID: Author: mark.dickinson Date: Wed Jan 6 17:23:13 2010 New Revision: 77327 Log: Merged revisions 77326 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77326 | mark.dickinson | 2010-01-06 16:22:15 +0000 (Wed, 06 Jan 2010) | 9 lines Merged revisions 77324 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77324 | mark.dickinson | 2010-01-06 16:20:22 +0000 (Wed, 06 Jan 2010) | 2 lines Add missing docstring for Context.divmod. Thanks Juan Jos? Conti. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/decimal.py Modified: python/branches/release31-maint/Lib/decimal.py ============================================================================== --- python/branches/release31-maint/Lib/decimal.py (original) +++ python/branches/release31-maint/Lib/decimal.py Wed Jan 6 17:23:13 2010 @@ -4132,6 +4132,13 @@ return a.__floordiv__(b, context=self) def divmod(self, a, b): + """Return (a // b, a % b) + + >>> ExtendedContext.divmod(Decimal(8), Decimal(3)) + (Decimal('2'), Decimal('2')) + >>> ExtendedContext.divmod(Decimal(8), Decimal(4)) + (Decimal('2'), Decimal('0')) + """ return a.__divmod__(b, context=self) def exp(self, a): From python-checkins at python.org Wed Jan 6 17:30:05 2010 From: python-checkins at python.org (mark.dickinson) Date: Wed, 06 Jan 2010 16:30:05 -0000 Subject: [Python-checkins] r77328 - python/branches/py3k-cdecimal Message-ID: Author: mark.dickinson Date: Wed Jan 6 17:30:05 2010 New Revision: 77328 Log: Remove merge tracking for trunk; we only want it for py3k. Modified: python/branches/py3k-cdecimal/ (props changed) From python-checkins at python.org Wed Jan 6 17:35:19 2010 From: python-checkins at python.org (mark.dickinson) Date: Wed, 06 Jan 2010 16:35:19 -0000 Subject: [Python-checkins] r77329 - in python/branches/py3k-cdecimal: Lib/decimal.py Message-ID: Author: mark.dickinson Date: Wed Jan 6 17:35:19 2010 New Revision: 77329 Log: Merged revisions 77326 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77326 | mark.dickinson | 2010-01-06 16:22:15 +0000 (Wed, 06 Jan 2010) | 9 lines Merged revisions 77324 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77324 | mark.dickinson | 2010-01-06 16:20:22 +0000 (Wed, 06 Jan 2010) | 2 lines Add missing docstring for Context.divmod. Thanks Juan Jos? Conti. ........ ................ Modified: python/branches/py3k-cdecimal/ (props changed) python/branches/py3k-cdecimal/Lib/decimal.py Modified: python/branches/py3k-cdecimal/Lib/decimal.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/decimal.py (original) +++ python/branches/py3k-cdecimal/Lib/decimal.py Wed Jan 6 17:35:19 2010 @@ -4132,6 +4132,13 @@ return a.__floordiv__(b, context=self) def divmod(self, a, b): + """Return (a // b, a % b) + + >>> ExtendedContext.divmod(Decimal(8), Decimal(3)) + (Decimal('2'), Decimal('2')) + >>> ExtendedContext.divmod(Decimal(8), Decimal(4)) + (Decimal('2'), Decimal('0')) + """ return a.__divmod__(b, context=self) def exp(self, a): From python-checkins at python.org Wed Jan 6 17:55:01 2010 From: python-checkins at python.org (tarek.ziade) Date: Wed, 06 Jan 2010 16:55:01 -0000 Subject: [Python-checkins] r77330 - peps/trunk/pep-0345.txt Message-ID: Author: tarek.ziade Date: Wed Jan 6 17:55:00 2010 New Revision: 77330 Log: we mean distribution here Modified: peps/trunk/pep-0345.txt Modified: peps/trunk/pep-0345.txt ============================================================================== --- peps/trunk/pep-0345.txt (original) +++ peps/trunk/pep-0345.txt Wed Jan 6 17:55:00 2010 @@ -15,7 +15,7 @@ Abstract ======== -This PEP describes a mechanism for adding metadata to Python packages. +This PEP describes a mechanism for adding metadata to Python distributions. It includes specifics of the field names, and their semantics and usage. From python-checkins at python.org Wed Jan 6 18:43:07 2010 From: python-checkins at python.org (georg.brandl) Date: Wed, 06 Jan 2010 17:43:07 -0000 Subject: [Python-checkins] r77331 - python/trunk/Lib/test/test_cmd.py Message-ID: Author: georg.brandl Date: Wed Jan 6 18:43:06 2010 New Revision: 77331 Log: Small fixes to test_cmd: fix signature of do_shell, remove duplicate import, add option to run the custom Cmd class. Modified: python/trunk/Lib/test/test_cmd.py Modified: python/trunk/Lib/test/test_cmd.py ============================================================================== --- python/trunk/Lib/test/test_cmd.py (original) +++ python/trunk/Lib/test/test_cmd.py Wed Jan 6 18:43:06 2010 @@ -143,7 +143,7 @@ print "complete command" return - def do_shell(self): + def do_shell(self, s): pass def do_add(self, s): @@ -169,8 +169,8 @@ from test import test_support, test_cmd test_support.run_doctest(test_cmd, verbose) -import trace, sys def test_coverage(coverdir): + import trace tracer=trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix,], trace=0, count=1) tracer.run('reload(cmd);test_main()') @@ -181,5 +181,7 @@ if __name__ == "__main__": if "-c" in sys.argv: test_coverage('/tmp/cmd.cover') + elif "-i" in sys.argv: + samplecmdclass().cmdloop() else: test_main() From python-checkins at python.org Wed Jan 6 19:02:17 2010 From: python-checkins at python.org (georg.brandl) Date: Wed, 06 Jan 2010 18:02:17 -0000 Subject: [Python-checkins] r77332 - in python/trunk/Lib: cmd.py test/test_cmd.py Message-ID: Author: georg.brandl Date: Wed Jan 6 19:02:16 2010 New Revision: 77332 Log: #5991: let completion for the "help" command include help topics. This also simplifies the Cmd.get_names() method implementation; it was written at a time where dir() didn't consider base class attributes. Modified: python/trunk/Lib/cmd.py python/trunk/Lib/test/test_cmd.py Modified: python/trunk/Lib/cmd.py ============================================================================== --- python/trunk/Lib/cmd.py (original) +++ python/trunk/Lib/cmd.py Wed Jan 6 19:02:16 2010 @@ -281,19 +281,15 @@ return None def get_names(self): - # Inheritance says we have to look in class and - # base classes; order is not important. - names = [] - classes = [self.__class__] - while classes: - aclass = classes.pop(0) - if aclass.__bases__: - classes = classes + list(aclass.__bases__) - names = names + dir(aclass) - return names + # This method used to pull in base class attributes + # at a time dir() didn't do it yet. + return dir(self.__class__) def complete_help(self, *args): - return self.completenames(*args) + commands = set(self.completenames(*args)) + topics = set(a[5:] for a in self.get_names() + if a.startswith('help_' + args[0])) + return list(commands | topics) def do_help(self, arg): if arg: Modified: python/trunk/Lib/test/test_cmd.py ============================================================================== --- python/trunk/Lib/test/test_cmd.py (original) +++ python/trunk/Lib/test/test_cmd.py Wed Jan 6 19:02:16 2010 @@ -57,15 +57,17 @@ >>> mycmd.completenames("12") [] >>> mycmd.completenames("help") - ['help', 'help'] + ['help'] Test for the function complete_help(): >>> mycmd.complete_help("a") ['add'] >>> mycmd.complete_help("he") - ['help', 'help'] + ['help'] >>> mycmd.complete_help("12") [] + >>> sorted(mycmd.complete_help("")) + ['add', 'exit', 'help', 'shell'] Test for the function do_help(): >>> mycmd.do_help("testet") From python-checkins at python.org Wed Jan 6 19:26:08 2010 From: python-checkins at python.org (georg.brandl) Date: Wed, 06 Jan 2010 18:26:08 -0000 Subject: [Python-checkins] r77333 - python/trunk/Doc/library/zipimport.rst Message-ID: Author: georg.brandl Date: Wed Jan 6 19:26:08 2010 New Revision: 77333 Log: #5950: document that zip files with comments are unsupported in zipimport. Modified: python/trunk/Doc/library/zipimport.rst Modified: python/trunk/Doc/library/zipimport.rst ============================================================================== --- python/trunk/Doc/library/zipimport.rst (original) +++ python/trunk/Doc/library/zipimport.rst Wed Jan 6 19:26:08 2010 @@ -33,6 +33,8 @@ loaded from a ZIP archive; it is unlikely that :func:`reload` would be needed, since this would imply that the ZIP has been altered during runtime. +ZIP archives with an archive comment are currently not supported. + .. seealso:: `PKZIP Application Note `_ From python-checkins at python.org Wed Jan 6 21:08:02 2010 From: python-checkins at python.org (r.david.murray) Date: Wed, 06 Jan 2010 20:08:02 -0000 Subject: [Python-checkins] r77334 - in python/branches/release26-maint: Lib/test/test_zipfile.py Lib/zipfile.py Misc/NEWS Message-ID: Author: r.david.murray Date: Wed Jan 6 21:08:02 2010 New Revision: 77334 Log: Merged revisions 74245 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r74245 | amaury.forgeotdarc | 2009-07-28 18:15:30 -0400 (Tue, 28 Jul 2009) | 3 lines #6511: ZipFile will now raise BadZipfile when opening an empty or tiny file, like it does for larger invalid files. ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/test/test_zipfile.py python/branches/release26-maint/Lib/zipfile.py python/branches/release26-maint/Misc/NEWS Modified: python/branches/release26-maint/Lib/test/test_zipfile.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_zipfile.py (original) +++ python/branches/release26-maint/Lib/test/test_zipfile.py Wed Jan 6 21:08:02 2010 @@ -664,6 +664,16 @@ # quickly. self.assertRaises(IOError, zipfile.ZipFile, TESTFN) + def test_empty_file_raises_BadZipFile(self): + f = open(TESTFN, 'w') + f.close() + self.assertRaises(zipfile.BadZipfile, zipfile.ZipFile, TESTFN) + + f = open(TESTFN, 'w') + f.write("short file") + f.close() + self.assertRaises(zipfile.BadZipfile, zipfile.ZipFile, TESTFN) + def testClosedZipRaisesRuntimeError(self): # Verify that testzip() doesn't swallow inappropriate exceptions. data = StringIO() Modified: python/branches/release26-maint/Lib/zipfile.py ============================================================================== --- python/branches/release26-maint/Lib/zipfile.py (original) +++ python/branches/release26-maint/Lib/zipfile.py Wed Jan 6 21:08:02 2010 @@ -186,7 +186,10 @@ # Check to see if this is ZIP file with no archive comment (the # "end of central directory" structure should be the last item in the # file if this is the case). - fpin.seek(-sizeEndCentDir, 2) + try: + fpin.seek(-sizeEndCentDir, 2) + except IOError: + return None data = fpin.read() if data[0:4] == stringEndArchive and data[-2:] == "\000\000": # the signature is correct and there's no comment, unpack structure Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Wed Jan 6 21:08:02 2010 @@ -318,6 +318,9 @@ Library ------- +- Issue #6511: ZipFile now raises BadZipfile (instead of an IOError) when + opening an empty or very small file. + - Issue #1488943: difflib.Differ() doesn't always add hints for tab characters - Issue #5037: Proxy the __unicode__ special method instead to __unicode__ From python-checkins at python.org Wed Jan 6 21:12:08 2010 From: python-checkins at python.org (r.david.murray) Date: Wed, 06 Jan 2010 20:12:08 -0000 Subject: [Python-checkins] r77335 - in python/branches/release31-maint: Lib/test/test_zipfile.py Lib/zipfile.py Misc/NEWS Message-ID: Author: r.david.murray Date: Wed Jan 6 21:12:07 2010 New Revision: 77335 Log: Merged revisions 74246 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r74246 | amaury.forgeotdarc | 2009-07-28 18:18:57 -0400 (Tue, 28 Jul 2009) | 10 lines Merged revisions 74245 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r74245 | amaury.forgeotdarc | 2009-07-29 00:15:30 +0200 (mer., 29 juil. 2009) | 3 lines #6511: ZipFile will now raise BadZipfile when opening an empty or tiny file, like it does for larger invalid files. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/test/test_zipfile.py python/branches/release31-maint/Lib/zipfile.py python/branches/release31-maint/Misc/NEWS Modified: python/branches/release31-maint/Lib/test/test_zipfile.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_zipfile.py (original) +++ python/branches/release31-maint/Lib/test/test_zipfile.py Wed Jan 6 21:12:07 2010 @@ -688,6 +688,16 @@ # quickly. self.assertRaises(IOError, zipfile.ZipFile, TESTFN) + def test_empty_file_raises_BadZipFile(self): + f = open(TESTFN, 'w') + f.close() + self.assertRaises(zipfile.BadZipfile, zipfile.ZipFile, TESTFN) + + f = open(TESTFN, 'w') + f.write("short file") + f.close() + self.assertRaises(zipfile.BadZipfile, zipfile.ZipFile, TESTFN) + def testClosedZipRaisesRuntimeError(self): # Verify that testzip() doesn't swallow inappropriate exceptions. data = io.BytesIO() Modified: python/branches/release31-maint/Lib/zipfile.py ============================================================================== --- python/branches/release31-maint/Lib/zipfile.py (original) +++ python/branches/release31-maint/Lib/zipfile.py Wed Jan 6 21:12:07 2010 @@ -200,7 +200,10 @@ # Check to see if this is ZIP file with no archive comment (the # "end of central directory" structure should be the last item in the # file if this is the case). - fpin.seek(-sizeEndCentDir, 2) + try: + fpin.seek(-sizeEndCentDir, 2) + except IOError: + return None data = fpin.read() if data[0:4] == stringEndArchive and data[-2:] == b"\000\000": # the signature is correct and there's no comment, unpack structure Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Wed Jan 6 21:12:07 2010 @@ -61,6 +61,9 @@ Library ------- +- Issue #6511: ZipFile now raises BadZipfile (instead of an IOError) when + opening an empty or very small file. + - Issue #7556: Make sure Distutils' msvc9compile reads and writes the MSVC XML Manifest file in text mode so string patterns can be used in regular expressions. From python-checkins at python.org Wed Jan 6 21:13:39 2010 From: python-checkins at python.org (r.david.murray) Date: Wed, 06 Jan 2010 20:13:39 -0000 Subject: [Python-checkins] r77336 - python/branches/release26-maint/Misc/NEWS Message-ID: Author: r.david.murray Date: Wed Jan 6 21:13:39 2010 New Revision: 77336 Log: Move news item to correct section. Modified: python/branches/release26-maint/Misc/NEWS Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Wed Jan 6 21:13:39 2010 @@ -48,6 +48,9 @@ Library ------- +- Issue #6511: ZipFile now raises BadZipfile (instead of an IOError) when + opening an empty or very small file. + - Issue #7552: Removed line feed in the base64 Authorization header in the Distutils upload command to avoid an error when PyPI reads it. This occurs on long passwords. Initial patch by JP St. Pierre. @@ -318,9 +321,6 @@ Library ------- -- Issue #6511: ZipFile now raises BadZipfile (instead of an IOError) when - opening an empty or very small file. - - Issue #1488943: difflib.Differ() doesn't always add hints for tab characters - Issue #5037: Proxy the __unicode__ special method instead to __unicode__ From nnorwitz at gmail.com Wed Jan 6 22:21:45 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 6 Jan 2010 16:21:45 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100106212145.GA9984@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [869735 refs] From nnorwitz at gmail.com Wed Jan 6 22:33:27 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 6 Jan 2010 16:33:27 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100106213327.GA14074@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19567 refs] [19567 refs] [19567 refs] [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [21174 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [868632 refs] From ncoghlan at gmail.com Thu Jan 7 00:01:39 2010 From: ncoghlan at gmail.com (Nick Coghlan) Date: Thu, 07 Jan 2010 09:01:39 +1000 Subject: [Python-checkins] r77333 - python/trunk/Doc/library/zipimport.rst In-Reply-To: <4b44d7ba.0267f10a.79a7.ffffa2fdSMTPIN_ADDED@mx.google.com> References: <4b44d7ba.0267f10a.79a7.ffffa2fdSMTPIN_ADDED@mx.google.com> Message-ID: <4B451653.5010708@gmail.com> georg.brandl wrote: > Author: georg.brandl > Date: Wed Jan 6 19:26:08 2010 > New Revision: 77333 > > Log: > #5950: document that zip files with comments are unsupported in zipimport. > > Modified: > python/trunk/Doc/library/zipimport.rst Is there an issue that tracks that limitation? Cheers, Nick. -- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia --------------------------------------------------------------- From nnorwitz at gmail.com Thu Jan 7 00:47:42 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 6 Jan 2010 18:47:42 -0500 Subject: [Python-checkins] Python Regression Test Failures refleak (1) Message-ID: <20100106234742.GA13632@kbk-i386-bb.psfb.org> More important issues: ---------------------- test_bz2 leaked [-77, 0, 0] references, sum=-77 Less important issues: ---------------------- test_threadsignals leaked [0, 8, 0] references, sum=8 From solipsis at pitrou.net Thu Jan 7 00:49:23 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Thu, 7 Jan 2010 00:49:23 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77326): sum=0 Message-ID: <20100106234923.511AF17720@ns6635.ovh.net> py3k results for svn r77326 (hg cset 1565e524d235) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogsIawBC', '-x', 'test_httpservers'] From nnorwitz at gmail.com Thu Jan 7 01:09:05 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 6 Jan 2010 19:09:05 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100107000905.GA20965@kbk-i386-bb.psfb.org> 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-13640 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [886236 refs] From rdmurray at bitdance.com Thu Jan 7 02:36:34 2010 From: rdmurray at bitdance.com (R. David Murray) Date: Wed, 06 Jan 2010 20:36:34 -0500 Subject: [Python-checkins] r77333 - python/trunk/Doc/library/zipimport.rst In-Reply-To: <4B451653.5010708@gmail.com> References: <4b44d7ba.0267f10a.79a7.ffffa2fdSMTPIN_ADDED@mx.google.com> <4B451653.5010708@gmail.com> Message-ID: <20100107013634.877661FBB02@kimball.webabinitio.net> On Thu, 07 Jan 2010 09:01:39 +1000, Nick Coghlan wrote: > georg.brandl wrote: > > Author: georg.brandl > > Date: Wed Jan 6 19:26:08 2010 > > New Revision: 77333 > > > > Log: > > #5950: document that zip files with comments are unsupported in zipimport. > > > > Modified: > > python/trunk/Doc/library/zipimport.rst > > Is there an issue that tracks that limitation? Yes, 5950. --David From rdmurray at bitdance.com Thu Jan 7 03:32:31 2010 From: rdmurray at bitdance.com (R. David Murray) Date: Wed, 06 Jan 2010 21:32:31 -0500 Subject: [Python-checkins] r77333 - python/trunk/Doc/library/zipimport.rst In-Reply-To: <20100107013634.877661FBB02@kimball.webabinitio.net> References: <4b44d7ba.0267f10a.79a7.ffffa2fdSMTPIN_ADDED@mx.google.com> <4B451653.5010708@gmail.com> <20100107013634.877661FBB02@kimball.webabinitio.net> Message-ID: <20100107023231.2BCB31FBB37@kimball.webabinitio.net> On Wed, 06 Jan 2010 20:36:34 -0500, "R. David Murray" wrote: > On Thu, 07 Jan 2010 09:01:39 +1000, Nick Coghlan wrote: > > georg.brandl wrote: > > > Author: georg.brandl > > > Date: Wed Jan 6 19:26:08 2010 > > > New Revision: 77333 > > > > > > Log: > > > #5950: document that zip files with comments are unsupported in zipimport. > > > > > > Modified: > > > python/trunk/Doc/library/zipimport.rst > > > > Is there an issue that tracks that limitation? > > Yes, 5950. I realize I was a little cryptic there. Issue 5950 has been converted from a bug report to a feature request for the addition of comment support. --David From python-checkins at python.org Thu Jan 7 04:09:08 2010 From: python-checkins at python.org (r.david.murray) Date: Thu, 07 Jan 2010 03:09:08 -0000 Subject: [Python-checkins] r77337 - python/trunk/Misc/build.sh Message-ID: Author: r.david.murray Date: Thu Jan 7 04:09:08 2010 New Revision: 77337 Log: Add -W to the 'basics', 'opt', and 'all' test runs so that we get verbose information if a failure happens. Modified: python/trunk/Misc/build.sh Modified: python/trunk/Misc/build.sh ============================================================================== --- python/trunk/Misc/build.sh (original) +++ python/trunk/Misc/build.sh Thu Jan 7 04:09:08 2010 @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/sh -x ## Script to build and test the latest python from svn. It basically ## does this: @@ -212,7 +212,7 @@ ## make and run basic tests F=make-test.out start=`current_time` - $PYTHON $REGRTEST_ARGS -u urlfetch >& build/$F + $PYTHON $REGRTEST_ARGS -W -u urlfetch >& build/$F NUM_FAILURES=`count_failures build/$F` place_summary_first build/$F update_status "Testing basics ($NUM_FAILURES failures)" "$F" $start @@ -220,7 +220,7 @@ F=make-test-opt.out start=`current_time` - $PYTHON -O $REGRTEST_ARGS -u urlfetch >& build/$F + $PYTHON -O $REGRTEST_ARGS -W -u urlfetch >& build/$F NUM_FAILURES=`count_failures build/$F` place_summary_first build/$F update_status "Testing opt ($NUM_FAILURES failures)" "$F" $start @@ -243,7 +243,7 @@ start=`current_time` ## skip curses when running from cron since there's no terminal ## skip sound since it's not setup on the PSF box (/dev/dsp) - $PYTHON $REGRTEST_ARGS -uall -x test_curses test_linuxaudiodev test_ossaudiodev >& build/$F + $PYTHON $REGRTEST_ARGS -W -uall -x test_curses test_linuxaudiodev test_ossaudiodev >& build/$F NUM_FAILURES=`count_failures build/$F` place_summary_first build/$F update_status "Testing all except curses and sound ($NUM_FAILURES failures)" "$F" $start From python-checkins at python.org Thu Jan 7 05:04:28 2010 From: python-checkins at python.org (r.david.murray) Date: Thu, 07 Jan 2010 04:04:28 -0000 Subject: [Python-checkins] r77338 - python/trunk/Misc/build.sh Message-ID: Author: r.david.murray Date: Thu Jan 7 05:04:28 2010 New Revision: 77338 Log: Fix inadvertent checkin of debug line. Modified: python/trunk/Misc/build.sh Modified: python/trunk/Misc/build.sh ============================================================================== --- python/trunk/Misc/build.sh (original) +++ python/trunk/Misc/build.sh Thu Jan 7 05:04:28 2010 @@ -1,4 +1,4 @@ -#!/bin/sh -x +#!/bin/sh ## Script to build and test the latest python from svn. It basically ## does this: From python-checkins at python.org Thu Jan 7 10:28:29 2010 From: python-checkins at python.org (mark.dickinson) Date: Thu, 07 Jan 2010 09:28:29 -0000 Subject: [Python-checkins] r77339 - python/trunk/Doc/whatsnew/2.7.rst Message-ID: Author: mark.dickinson Date: Thu Jan 7 10:28:29 2010 New Revision: 77339 Log: Eric Smith was missing fro m the issue 7117 whatsnew attribution. Modified: python/trunk/Doc/whatsnew/2.7.rst Modified: python/trunk/Doc/whatsnew/2.7.rst ============================================================================== --- python/trunk/Doc/whatsnew/2.7.rst (original) +++ python/trunk/Doc/whatsnew/2.7.rst Thu Jan 7 10:28:29 2010 @@ -268,8 +268,8 @@ by checking :data:`sys.float_repr_style`, which will be ``short`` if the new code is in use and ``legacy`` if it isn't. - Implemented by Mark Dickinson, using David Gay's :file:`dtoa.c` library; - :issue:`7117`. + Implemented by Eric Smith and Mark Dickinson, using David Gay's + :file:`dtoa.c` library; :issue:`7117`. * The :meth:`str.format` method now supports automatic numbering of the replacement fields. This makes using :meth:`str.format` more closely resemble using From python-checkins at python.org Thu Jan 7 10:30:13 2010 From: python-checkins at python.org (mark.dickinson) Date: Thu, 07 Jan 2010 09:30:13 -0000 Subject: [Python-checkins] r77340 - python/branches/release26-maint Message-ID: Author: mark.dickinson Date: Thu Jan 7 10:30:13 2010 New Revision: 77340 Log: Blocked revisions 77339 via svnmerge ........ r77339 | mark.dickinson | 2010-01-07 09:28:29 +0000 (Thu, 07 Jan 2010) | 1 line Eric Smith was missing fro m the issue 7117 whatsnew attribution. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Thu Jan 7 10:31:48 2010 From: python-checkins at python.org (mark.dickinson) Date: Thu, 07 Jan 2010 09:31:48 -0000 Subject: [Python-checkins] r77341 - in python/branches/py3k: Doc/whatsnew/2.7.rst Message-ID: Author: mark.dickinson Date: Thu Jan 7 10:31:48 2010 New Revision: 77341 Log: Merged revisions 77339 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77339 | mark.dickinson | 2010-01-07 09:28:29 +0000 (Thu, 07 Jan 2010) | 1 line Eric Smith was missing fro m the issue 7117 whatsnew attribution. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/whatsnew/2.7.rst Modified: python/branches/py3k/Doc/whatsnew/2.7.rst ============================================================================== --- python/branches/py3k/Doc/whatsnew/2.7.rst (original) +++ python/branches/py3k/Doc/whatsnew/2.7.rst Thu Jan 7 10:31:48 2010 @@ -266,8 +266,8 @@ operation of this code cannot be guaranteed, so the code is not used on such systems. - Implemented by Mark Dickinson, using David Gay's :file:`dtoa.c` library; - :issue:`7117`. + Implemented by Eric Smith and Mark Dickinson, using David Gay's + :file:`dtoa.c` library; :issue:`7117`. * The :meth:`str.format` method now supports automatic numbering of the replacement fields. This makes using :meth:`str.format` more closely resemble using From python-checkins at python.org Thu Jan 7 13:02:53 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 07 Jan 2010 12:02:53 -0000 Subject: [Python-checkins] r77342 - in python/branches/py3k-cdecimal/Modules/cdecimal: basearith.c basearith.h bench.c bits.h cdecimal.c constants.c constants.h context.c convolute.c convolute.h crt.c crt.h difradix2.c difradix2.h docstrings.h error.c fnt.c fnt.h fourstep.c fourstep.h io.c memory.c memory.h mpdecimal.c mpdecimal.h mpdecimal32.h mpdecimal64.h mptypes.h numbertheory.c numbertheory.h sixstep.c sixstep.h transpose.c transpose.h transpose3.c typearith.h umodarith.h vccompat.h vcdiv64.asm vcstdint.h Message-ID: Author: stefan.krah Date: Thu Jan 7 13:02:51 2010 New Revision: 77342 Log: Initial import of Modules/cdecimal Added: python/branches/py3k-cdecimal/Modules/cdecimal/ python/branches/py3k-cdecimal/Modules/cdecimal/basearith.c (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/basearith.h (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/bench.c (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/bits.h (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/cdecimal.c (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/constants.c (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/constants.h (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/context.c (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/convolute.c (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/convolute.h (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/crt.c (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/crt.h (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/difradix2.c (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/difradix2.h (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/docstrings.h (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/error.c (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/fnt.c (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/fnt.h (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/fourstep.c (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/fourstep.h (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/io.c (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/memory.c (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/memory.h (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal.c (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal.h (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal32.h (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal64.h (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/mptypes.h (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/numbertheory.c (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/numbertheory.h (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/sixstep.c (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/sixstep.h (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/transpose.c (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/transpose.h (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/transpose3.c (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/typearith.h (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/umodarith.h (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/vccompat.h (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/vcdiv64.asm (contents, props changed) python/branches/py3k-cdecimal/Modules/cdecimal/vcstdint.h (contents, props changed) Added: python/branches/py3k-cdecimal/Modules/cdecimal/basearith.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/basearith.c Thu Jan 7 13:02:51 2010 @@ -0,0 +1,553 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include +#include +#include "constants.h" +#include "memory.h" +#include "mpdecimal.h" +#include "typearith.h" +#include "basearith.h" + + +/*********************************************************************/ +/* Calculations in base MPD_RADIX */ +/*********************************************************************/ + + +/* + * Knuth, TAOCP, Volume 2, 4.3.1: + * w := sum of u (len m) and v (len n) + * n > 0 and m >= n + * The calling function has to handle a possible final carry. + */ +mpd_uint_t +_mpd_baseadd(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, + size_t m, size_t n) +{ + mpd_uint_t s; + mpd_uint_t carry = 0; + size_t i; + + assert(n > 0 && m >= n); + + /* add n members of u and v */ + for (i = 0; i < n; i++) { + s = u[i] + (v[i] + carry); + carry = (s < u[i]) | (s >= MPD_RADIX); + w[i] = carry ? s-MPD_RADIX : s; + } + /* if there is a carry, propagate it */ + for (; carry && i < m; i++) { + s = u[i] + carry; + carry = (s == MPD_RADIX); + w[i] = carry ? 0 : s; + } + /* copy the rest of u */ + for (; i < m; i++) { + w[i] = u[i]; + } + + return carry; +} + +/* + * Add the contents of u to w. Carries are propagated further. The caller + * has to make sure that w is big enough. + */ +void +_mpd_baseaddto(mpd_uint_t *w, const mpd_uint_t *u, size_t n) +{ + mpd_uint_t s; + mpd_uint_t carry = 0; + size_t i; + + if (n == 0) return; + + /* add n members of u to w */ + for (i = 0; i < n; i++) { + s = w[i] + (u[i] + carry); + carry = (s < w[i]) | (s >= MPD_RADIX); + w[i] = carry ? s-MPD_RADIX : s; + } + /* if there is a carry, propagate it */ + for (; carry; i++) { + s = w[i] + carry; + carry = (s == MPD_RADIX); + w[i] = carry ? 0 : s; + } +} + +/* + * Add v to w (len m). The calling function has to handle a possible + * final carry. + */ +mpd_uint_t +_mpd_shortadd(mpd_uint_t *w, size_t m, mpd_uint_t v) +{ + mpd_uint_t s; + mpd_uint_t carry = 0; + size_t i; + + /* add v to u */ + s = w[0] + v; + carry = (s < v) | (s >= MPD_RADIX); + w[0] = carry ? s-MPD_RADIX : s; + + /* if there is a carry, propagate it */ + for (i = 1; carry && i < m; i++) { + s = w[i] + carry; + carry = (s == MPD_RADIX); + w[i] = carry ? 0 : s; + } + + return carry; +} + +/* Increment u. The calling function has to handle a possible carry. */ +mpd_uint_t +_mpd_baseincr(mpd_uint_t *u, size_t n) +{ + mpd_uint_t s; + mpd_uint_t carry = 1; + size_t i; + + assert(n > 0); + + /* if there is a carry, propagate it */ + for (i = 0; carry && i < n; i++) { + s = u[i] + carry; + carry = (s == MPD_RADIX); + u[i] = carry ? 0 : s; + } + + return carry; +} + +/* + * Knuth, TAOCP, Volume 2, 4.3.1: + * w := difference of u (len m) and v (len n). + * number in u >= number in v; + */ +void +_mpd_basesub(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, size_t m, size_t n) +{ + mpd_uint_t d; + mpd_uint_t borrow = 0; + size_t i; + + assert(m > 0 && n > 0); + + /* subtract n members of v from u */ + for (i = 0; i < n; i++) { + d = u[i] - (v[i] + borrow); + borrow = (u[i] < d); + w[i] = borrow ? d + MPD_RADIX : d; + } + /* if there is a borrow, propagate it */ + for (; borrow && i < m; i++) { + d = u[i] - borrow; + borrow = (u[i] == 0); + w[i] = borrow ? MPD_RADIX-1 : d; + } + /* copy the rest of u */ + for (; i < m; i++) { + w[i] = u[i]; + } +} + +/* + * Subtract the contents of u from w. w is larger than u. Borrows are propagated + * further, but eventually w can absorb the final borrow. + */ +void +_mpd_basesubfrom(mpd_uint_t *w, const mpd_uint_t *u, size_t n) +{ + mpd_uint_t d; + mpd_uint_t borrow = 0; + size_t i; + + if (n == 0) return; + + /* subtract n members of u from w */ + for (i = 0; i < n; i++) { + d = w[i] - (u[i] + borrow); + borrow = (w[i] < d); + w[i] = borrow ? d + MPD_RADIX : d; + } + /* if there is a borrow, propagate it */ + for (; borrow; i++) { + d = w[i] - borrow; + borrow = (w[i] == 0); + w[i] = borrow ? MPD_RADIX-1 : d; + } +} + +/* w := product of u (len n) and v (single word) */ +void +_mpd_shortmul(mpd_uint_t *w, const mpd_uint_t *u, size_t n, mpd_uint_t v) +{ + mpd_uint_t hi, lo; + mpd_uint_t carry = 0; + size_t i; + + assert(n > 0); + + for (i=0; i < n; i++) { + + _mpd_mul_words(&hi, &lo, u[i], v); + lo = carry + lo; + if (lo < carry) hi++; + + _mpd_div_words_r(&carry, &w[i], hi, lo); + } + w[i] = carry; +} + +/* + * Knuth, TAOCP, Volume 2, 4.3.1: + * w := product of u (len m) and v (len n) + * w must be initialized to zero + */ +void +_mpd_basemul(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, size_t m, size_t n) +{ + mpd_uint_t hi, lo; + mpd_uint_t carry; + size_t i, j; + + assert(m > 0 && n > 0); + + for (j=0; j < n; j++) { + carry = 0; + for (i=0; i < m; i++) { + + _mpd_mul_words(&hi, &lo, u[i], v[j]); + lo = w[i+j] + lo; + if (lo < w[i+j]) hi++; + lo = carry + lo; + if (lo < carry) hi++; + + _mpd_div_words_r(&carry, &w[i+j], hi, lo); + } + w[j+m] = carry; + } +} + +/* + * Knuth, TAOCP Volume 2, 4.3.1, exercise 16: + * w := quotient of u (len n) divided by a single word v + */ +mpd_uint_t +_mpd_shortdiv(mpd_uint_t *w, const mpd_uint_t *u, size_t n, mpd_uint_t v) +{ + mpd_uint_t hi, lo; + mpd_uint_t rem = 0; + size_t i; + + assert(n > 0); + + for (i=n-1; i != SIZE_MAX; i--) { + + _mpd_mul_words(&hi, &lo, rem, MPD_RADIX); + lo = u[i] + lo; + if (lo < u[i]) hi++; + + _mpd_div_words(&w[i], &rem, hi, lo, v); + } + + return rem; +} + +/* + * Knuth, TAOCP Volume 2, 4.3.1: + * q, r := quotient and remainder of uconst (len nplusm) + * divided by vconst (len n) + * nplusm > n + * + * If r is not NULL, r will contain the remainder. If r is NULL, the + * return value indicates if there is a remainder: 1 for true, 0 for + * false. A return value of -1 indicates an error. + */ +int +_mpd_basedivmod(mpd_uint_t *q, mpd_uint_t *r, const mpd_uint_t *uconst, const mpd_uint_t *vconst, + size_t nplusm, size_t n) +{ + mpd_uint_t ustatic[MPD_MINALLOC_MAX]; + mpd_uint_t vstatic[MPD_MINALLOC_MAX]; + mpd_uint_t *u = ustatic; + mpd_uint_t *v = vstatic; + mpd_uint_t d, qhat, rhat, w2[2]; + mpd_uint_t hi, lo, x; + mpd_uint_t carry; + size_t i, j, m; + int retval = 0; + + assert(n > 1 && nplusm >= n); + m = sub_size_t(nplusm, n); + + /* D1: normalize */ + d = MPD_RADIX / (vconst[n-1] + 1); + + if (nplusm >= MPD_MINALLOC_MAX) { + if ((u = mpd_calloc(nplusm+1, sizeof *u)) == NULL) { + return -1; + } + } + if (n >= MPD_MINALLOC_MAX) { + if ((v = mpd_calloc(n+1, sizeof *v)) == NULL) { + mpd_free(u); + return -1; + } + } + + _mpd_shortmul(u, uconst, nplusm, d); + _mpd_shortmul(v, vconst, n, d); + + /* D2: loop */ + rhat = 0; + for (j=m; j != SIZE_MAX; j--) { + + /* D3: calculate qhat and rhat */ + rhat = _mpd_shortdiv(w2, u+j+n-1, 2, v[n-1]); + qhat = w2[1] * MPD_RADIX + w2[0]; + + while (1) { + if (qhat < MPD_RADIX) { + _mpd_singlemul(w2, qhat, v[n-2]); + if (w2[1] <= rhat) { + if (w2[1] != rhat || w2[0] <= u[j+n-2]) { + break; + } + } + } + qhat -= 1; + rhat += v[n-1]; + if (rhat < v[n-1] || rhat >= MPD_RADIX) { + break; + } + } + /* D4: multiply and subtract */ + carry = 0; + for (i=0; i <= n; i++) { + + _mpd_mul_words(&hi, &lo, qhat, v[i]); + + lo = carry + lo; + if (lo < carry) hi++; + + _mpd_div_words_r(&hi, &lo, hi, lo); + + x = u[i+j] - lo; + carry = (u[i+j] < x); + u[i+j] = carry ? x+MPD_RADIX : x; + carry += hi; + } + q[j] = qhat; + /* D5: test remainder */ + if (carry) { + q[j] -= 1; + /* D6: add back */ + (void)_mpd_baseadd(u+j, u+j, v, n+1, n); + } + } + + /* D8: unnormalize */ + if (r != NULL) { + _mpd_shortdiv(r, u, n, d); + /* we are not interested in the return value here */ + retval = 0; + } + else { + retval = !_mpd_isallzero(u, n); + } + + +if (u != ustatic) mpd_free(u); +if (v != vstatic) mpd_free(v); +return retval; +} + +/* Leftshift of src by shift digits; src may equal dest. */ +void +_mpd_baseshiftl(mpd_uint_t *dest, mpd_uint_t *src, size_t n, size_t m, size_t shift) +{ +#if defined(__GNUC__) && !defined(__INTEL_COMPILER) + /* spurious uninitialized warnings */ + mpd_uint_t l=l, lprev=lprev, h=h; +#else + mpd_uint_t l, lprev, h; +#endif + mpd_uint_t q, r; + mpd_uint_t ph; + + assert(m > 0 && n >= m); + + _mpd_div_word(&q, &r, (mpd_uint_t)shift, MPD_RDIGITS); + + if (r != 0) { + + ph = mpd_pow10[r]; + + --m; --n; + _mpd_divmod_pow10(&h, &lprev, src[m--], MPD_RDIGITS-r); + if (h != 0) { + dest[n--] = h; + } + for (; m != SIZE_MAX; m--,n--) { + _mpd_divmod_pow10(&h, &l, src[m], MPD_RDIGITS-r); + dest[n] = ph * lprev + h; + lprev = l; + } + dest[q] = ph * lprev; + } + else { + while (--m != SIZE_MAX) { + dest[m+q] = src[m]; + } + } + + mpd_uint_zero(dest, q); +} + +/* Rightshift of src by shift digits; src may equal dest. */ +mpd_uint_t +_mpd_baseshiftr(mpd_uint_t *dest, mpd_uint_t *src, size_t slen, size_t shift) +{ +#if defined(__GNUC__) && !defined(__INTEL_COMPILER) + /* spurious uninitialized warnings */ + mpd_uint_t l=l, h=h, hprev=hprev; /* low, high, previous high */ +#else + mpd_uint_t l, h, hprev; /* low, high, previous high */ +#endif + mpd_uint_t rnd, rest; /* rounding digit, rest */ + mpd_uint_t q, r; + size_t i, j; + mpd_uint_t ph; + + assert(slen > 0); + + _mpd_div_word(&q, &r, (mpd_uint_t)shift, MPD_RDIGITS); + + rnd = rest = 0; + if (r != 0) { + + ph = mpd_pow10[MPD_RDIGITS-r]; + + _mpd_divmod_pow10(&hprev, &rest, src[q], r); + _mpd_divmod_pow10(&rnd, &rest, rest, r-1); + + if (rest == 0 && q > 0) { + rest = !_mpd_isallzero(src, q); + } + h = hprev; + for (j=0,i=q+1; i 0) { + _mpd_divmod_pow10(&rnd, &rest, src[q-1], MPD_RDIGITS-1); + /* is there any non-zero digit below rnd? */ + if (rest == 0) rest = !_mpd_isallzero(src, q-1); + } + for (j = 0; j < slen-q; j++) { + dest[j] = src[q+j]; + } + } + + /* 0-4 ==> rnd+rest < 0.5 */ + /* 5 ==> rnd+rest == 0.5 */ + /* 6-9 ==> rnd+rest > 0.5 */ + return (rnd == 0 || rnd == 5) ? rnd + !!rest : rnd; +} + + +/*********************************************************************/ +/* Calculations in base b */ +/*********************************************************************/ + +/* + * Add v to w (len m). The calling function has to handle a possible + * final carry. + */ +mpd_uint_t +_mpd_shortadd_b(mpd_uint_t *w, size_t m, mpd_uint_t v, mpd_uint_t b) +{ + mpd_uint_t s; + mpd_uint_t carry = 0; + size_t i; + + /* add v to u */ + s = w[0] + v; + carry = (s < v) | (s >= b); + w[0] = carry ? s-b : s; + + /* if there is a carry, propagate it */ + for (i = 1; carry && i < m; i++) { + s = w[i] + carry; + carry = (s == b); + w[i] = carry ? 0 : s; + } + + return carry; +} + +/* w := product of u (len n) and v (single word) */ +void +_mpd_shortmul_b(mpd_uint_t *w, const mpd_uint_t *u, size_t n, mpd_uint_t v, mpd_uint_t b) +{ + mpd_uint_t hi, lo; + mpd_uint_t carry = 0; + size_t i; + + assert(n > 0); + + for (i=0; i < n; i++) { + + _mpd_mul_words(&hi, &lo, u[i], v); + lo = carry + lo; + if (lo < carry) hi++; + + _mpd_div_words(&carry, &w[i], hi, lo, b); + } + w[i] = carry; +} + +/* + * Knuth, TAOCP Volume 2, 4.3.1, exercise 16: + * w := quotient of u (len n) divided by a single word v + */ +mpd_uint_t +_mpd_shortdiv_b(mpd_uint_t *w, const mpd_uint_t *u, size_t n, mpd_uint_t v, mpd_uint_t b) +{ + mpd_uint_t hi, lo; + mpd_uint_t rem = 0; + size_t i; + + assert(n > 0); + + for (i=n-1; i != SIZE_MAX; i--) { + + _mpd_mul_words(&hi, &lo, rem, b); + lo = u[i] + lo; + if (lo < u[i]) hi++; + + _mpd_div_words(&w[i], &rem, hi, lo, v); + } + + return rem; +} + + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/basearith.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/basearith.h Thu Jan 7 13:02:51 2010 @@ -0,0 +1,147 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#ifndef BASEARITH_H +#define BASEARITH_H + + +#include +#include "mpdecimal.h" +#include "typearith.h" + + +mpd_uint_t _mpd_baseadd(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, size_t m, size_t n); +void _mpd_baseaddto(mpd_uint_t *w, const mpd_uint_t *u, size_t n); +mpd_uint_t _mpd_shortadd(mpd_uint_t *w, size_t m, mpd_uint_t v); +mpd_uint_t _mpd_shortadd_b(mpd_uint_t *w, size_t m, mpd_uint_t v, mpd_uint_t b); +mpd_uint_t _mpd_baseincr(mpd_uint_t *u, size_t n); +void _mpd_basesub(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, size_t m, size_t n); +void _mpd_basesubfrom(mpd_uint_t *w, const mpd_uint_t *u, size_t n); +void _mpd_basemul(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, size_t m, size_t n); +void _mpd_shortmul(mpd_uint_t *w, const mpd_uint_t *u, size_t n, mpd_uint_t v); +void _mpd_shortmul_b(mpd_uint_t *w, const mpd_uint_t *u, size_t n, mpd_uint_t v, mpd_uint_t b); +mpd_uint_t _mpd_shortdiv(mpd_uint_t *w, const mpd_uint_t *u, size_t n, mpd_uint_t v); +mpd_uint_t _mpd_shortdiv_b(mpd_uint_t *w, const mpd_uint_t *u, size_t n, mpd_uint_t v, mpd_uint_t b); +int _mpd_basedivmod(mpd_uint_t *q, mpd_uint_t *r, const mpd_uint_t *uconst, const mpd_uint_t *vconst, size_t nplusm, size_t n); +void _mpd_baseshiftl(mpd_uint_t *dest, mpd_uint_t *src, size_t n, size_t m, size_t shift); +mpd_uint_t _mpd_baseshiftr(mpd_uint_t *dest, mpd_uint_t *src, size_t slen, size_t shift); + + + +#ifdef CONFIG_64 +extern const mpd_uint_t mprime_rdx; + +/* + * Algorithm from: Division by Invariant Integers using Multiplication, + * T. Granlund and P. L. Montgomery, Proceedings of the SIGPLAN '94 + * Conference on Programming Language Design and Implementation. + * + * http://gmplib.org/~tege/divcnst-pldi94.pdf + */ +static inline void +_mpd_div_words_r(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t hi, mpd_uint_t lo) +{ + mpd_uint_t n_adj, h, l, t; + mpd_uint_t n1_neg; + + n1_neg = (lo & (1ULL<<63)) ? MPD_UINT_MAX : 0; + n_adj = lo + (n1_neg & MPD_RADIX); + + _mpd_mul_words(&h, &l, mprime_rdx, hi-n1_neg); + l = l + n_adj; + if (l < n_adj) h++; + t = h + hi; /* q1 */ + + t = MPD_UINT_MAX - t; + + _mpd_mul_words(&h, &l, t, MPD_RADIX); + l = l + lo; + if (l < lo) h++; + h += hi; + h -= MPD_RADIX; + + *q = (h - t); + *r = l + (MPD_RADIX & h); +} +#else +static inline void +_mpd_div_words_r(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t hi, mpd_uint_t lo) +{ + _mpd_div_words(q, r, hi, lo, MPD_RADIX); +} +#endif + + +/* Multiply two single base b words, store result in array w[2]. */ +static inline void +_mpd_singlemul(mpd_uint_t w[2], mpd_uint_t u, mpd_uint_t v) +{ + mpd_uint_t hi, lo; + + _mpd_mul_words(&hi, &lo, u, v); + _mpd_div_words_r(&w[1], &w[0], hi, lo); +} + +/* Multiply u (len 2) and v (len 1 or 2). */ +static inline void +_mpd_mul_2_le2(mpd_uint_t w[4], mpd_uint_t u[2], mpd_uint_t v[2], mpd_ssize_t m) +{ + mpd_uint_t hi, lo; + + _mpd_mul_words(&hi, &lo, u[0], v[0]); + _mpd_div_words_r(&w[1], &w[0], hi, lo); + + _mpd_mul_words(&hi, &lo, u[1], v[0]); + lo = w[1] + lo; + if (lo < w[1]) hi++; + _mpd_div_words_r(&w[2], &w[1], hi, lo); + if (m == 1) return; + + _mpd_mul_words(&hi, &lo, u[0], v[1]); + lo = w[1] + lo; + if (lo < w[1]) hi++; + _mpd_div_words_r(&w[3], &w[1], hi, lo); + + _mpd_mul_words(&hi, &lo, u[1], v[1]); + lo = w[2] + lo; + if (lo < w[2]) hi++; + lo = w[3] + lo; + if (lo < w[3]) hi++; + _mpd_div_words_r(&w[3], &w[2], hi, lo); +} + + +/* + * Test if all words from data[len-1] to data[0] are zero. If len is 0, nothing + * is tested and the coefficient is regarded as "all zero". + */ +static inline int +_mpd_isallzero(const mpd_uint_t *data, mpd_ssize_t len) +{ + while (--len >= 0) { + if (data[len] != 0) return 0; + } + return 1; +} + +/* + * Test if all words from data[len-1] to data[0] are MPD_RADIX-1 (all nines). + * Assumes that len > 0. + */ +static inline int +_mpd_isallnine(const mpd_uint_t *data, mpd_ssize_t len) +{ + while (--len >= 0) { + if (data[len] != MPD_RADIX-1) return 0; + } + return 1; +} + + +#endif /* BASEARITH_H */ + + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/bench.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/bench.c Thu Jan 7 13:02:51 2010 @@ -0,0 +1,152 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include "mpdecimal.h" + + +/* + * Example from: http://en.wikipedia.org/wiki/Mandelbrot_set + * + * Escape time algorithm for drawing the set: + * + * Point x0, y0 is deemed to be in the Mandelbrot set if the return + * value is maxiter. Lower return values indicate how quickly points + * escaped and can be used for coloring. + */ +int +color_point(mpd_t *x0, mpd_t *y0, int maxiter, mpd_context_t *ctx) +{ + mpd_t *x, *y, *sq_x, *sq_y; + mpd_t *two, *four, *c; + int i; + + x = mpd_new(ctx); + y = mpd_new(ctx); + mpd_set_u32(x, 0, ctx); + mpd_set_u32(y, 0, ctx); + + sq_x = mpd_new(ctx); + sq_y = mpd_new(ctx); + mpd_set_u32(sq_x, 0, ctx); + mpd_set_u32(sq_y, 0, ctx); + + two = mpd_new(ctx); + four = mpd_new(ctx); + mpd_set_u32(two, 2, ctx); + mpd_set_u32(four, 4, ctx); + + c = mpd_new(ctx); + mpd_set_u32(c, 0, ctx); + + for (i = 0; i < maxiter && mpd_cmp(c, four, ctx) <= 0; i++) { + + mpd_mul(y, x, y, ctx); + mpd_mul(y, y, two, ctx); + mpd_add(y, y, y0, ctx); + + mpd_sub(x, sq_x, sq_y, ctx); + mpd_add(x, x, x0, ctx); + + mpd_mul(sq_x, x, x, ctx); + mpd_mul(sq_y, y, y, ctx); + mpd_add(c, sq_x, sq_y, ctx); + } + + mpd_del(x); + mpd_del(y); + mpd_del(sq_x); + mpd_del(sq_y); + mpd_del(two); + mpd_del(four); + mpd_del(c); + + return i; +} + +int +main(int argc, char **argv) +{ + mpd_context_t ctx; + mpd_t *x0, *y0; + mpd_t *sqrt_2, *xstep, *ystep; + uint32_t prec = 19; + + int iter = 1000; + int points[40][80]; + int i, j; + clock_t start_clock, end_clock; + + + if (argc != 3) { + fprintf(stderr, "usage: ./bench prec iter\n"); + exit(1); + } + prec = strtoul(argv[1], NULL, 10); + iter = strtol(argv[2], NULL, 10); + + mpd_init(&ctx, prec); + /* no more MPD_MINALLOC changes after here */ + + sqrt_2 = mpd_new(&ctx); + xstep = mpd_new(&ctx); + ystep = mpd_new(&ctx); + x0 = mpd_new(&ctx); + y0 = mpd_new(&ctx); + + mpd_set_u32(sqrt_2, 2, &ctx); + mpd_sqrt(sqrt_2, sqrt_2, &ctx); + mpd_div_u32(xstep, sqrt_2, 40, &ctx); + mpd_div_u32(ystep, sqrt_2, 20, &ctx); + + start_clock = clock(); + mpd_copy(y0, sqrt_2, &ctx); + for (i = 0; i < 40; i++) { + mpd_copy(x0, sqrt_2, &ctx); + mpd_set_negative(x0); + for (j = 0; j < 80; j++) { + points[i][j] = color_point(x0, y0, iter, &ctx); + mpd_add(x0, x0, xstep, &ctx); + } + mpd_sub(y0, y0, ystep, &ctx); + } + end_clock = clock(); + +#ifdef BENCH_VERBOSE + for (i = 0; i < 40; i++) { + for (j = 0; j < 80; j++) { + if (points[i][j] == iter) { + putchar('*'); + } + else if (points[i][j] >= 10) { + putchar('+'); + } + else if (points[i][j] >= 5) { + putchar('.'); + } + else { + putchar(' '); + } + } + putchar('\n'); + } + putchar('\n'); +#endif + + printf("time: %f\n\n", (double)(end_clock-start_clock)/(double)CLOCKS_PER_SEC); + + mpd_del(x0); + mpd_del(y0); + mpd_del(sqrt_2); + mpd_del(xstep); + mpd_del(ystep); + + return 0; +} + + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/bits.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/bits.h Thu Jan 7 13:02:51 2010 @@ -0,0 +1,172 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#ifndef BITS_H +#define BITS_H + + +#include +#include "vccompat.h" + + +/* Check if n is a power of 2 */ +static inline int +ispower2(size_t n) +{ + return n != 0 && (n & (n-1)) == 0; +} + +/* + * Returns the most significant bit position of n from 0 to 32 (64). + * Caller has to make sure that n is not 0. + */ +static inline int +std_bsr(size_t n) +{ + int pos = 0; + size_t tmp; + +#ifdef CONFIG_64 + tmp = n >> 32; + if (tmp != 0) { n = tmp; pos += 32; } +#endif + tmp = n >> 16; + if (tmp != 0) { n = tmp; pos += 16; } + tmp = n >> 8; + if (tmp != 0) { n = tmp; pos += 8; } + tmp = n >> 4; + if (tmp != 0) { n = tmp; pos += 4; } + tmp = n >> 2; + if (tmp != 0) { n = tmp; pos += 2; } + tmp = n >> 1; + if (tmp != 0) { n = tmp; pos += 1; } + + return pos + (int)n - 1; +} + + +/* + * Returns the least significant bit position of n from 0 to 32 (64). + * Caller has to make sure that n is not 0. + */ +static inline int +std_bsf(size_t n) +{ + int pos; + +#ifdef CONFIG_64 + pos = 63; + if (n & 0x00000000FFFFFFFFULL) { pos -= 32; } else { n >>= 32; } + if (n & 0x000000000000FFFFULL) { pos -= 16; } else { n >>= 16; } + if (n & 0x00000000000000FFULL) { pos -= 8; } else { n >>= 8; } + if (n & 0x000000000000000FULL) { pos -= 4; } else { n >>= 4; } + if (n & 0x0000000000000003ULL) { pos -= 2; } else { n >>= 2; } + if (n & 0x0000000000000001ULL) { pos -= 1; } +#else + pos = 31; + if (n & 0x000000000000FFFFUL) { pos -= 16; } else { n >>= 16; } + if (n & 0x00000000000000FFUL) { pos -= 8; } else { n >>= 8; } + if (n & 0x000000000000000FUL) { pos -= 4; } else { n >>= 4; } + if (n & 0x0000000000000003UL) { pos -= 2; } else { n >>= 2; } + if (n & 0x0000000000000001UL) { pos -= 1; } +#endif + return pos; +} + + +#ifdef __GNUC__ +/* + * Bit scan reverse. + * Caller has to make sure that a is not 0. + */ +static inline int +x86_bsr(size_t a) +{ + size_t retval; + + __asm__ ( +#ifdef CONFIG_64 + "bsrq %1, %0\n\t" +#else + "bsr %1, %0\n\t" +#endif + :"=r" (retval) + :"r" (a) + :"cc" + ); + + return (int)retval; +} + +/* + * Bit scan forward. + * Caller has to make sure that a is not 0. + */ +static inline int +x86_bsf(size_t a) +{ + size_t retval; + + __asm__ ( +#ifdef CONFIG_64 + "bsfq %1, %0" +#else + "bsf %1, %0" +#endif + :"=r" (retval) + :"r" (a) + :"cc" + ); + + return (int)retval; +} +#endif /* __GNUC__ */ + + +#ifdef _MSC_VER +#include +/* + * Bit scan reverse. + * Caller has to make sure that a is not 0. + */ +static inline int __cdecl +x86_bsr(size_t a) +{ + unsigned long retval; + +#ifdef CONFIG_64 + _BitScanReverse64(&retval, a); +#else + _BitScanReverse(&retval, a); +#endif + + return (int)retval; +} + +/* + * Bit scan forward. + * Caller has to make sure that a is not 0. + */ +static inline int __cdecl +x86_bsf(size_t a) +{ + unsigned long retval; + +#ifdef CONFIG_64 + _BitScanForward64(&retval, a); +#else + _BitScanForward(&retval, a); +#endif + + return (int)retval; +} +#endif /* _MSC_VER */ + + +#endif /* BITS_H */ + + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/cdecimal.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/cdecimal.c Thu Jan 7 13:02:51 2010 @@ -0,0 +1,4861 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include "longintrepr.h" +#include "pythread.h" +#include "structmember.h" + +#include "docstrings.h" +#include "memory.h" +#include "mpdecimal.h" +#include "mptypes.h" + + +#if defined(_MSC_VER) && defined (CONFIG_64) + #define _PyLong_AsMpdSsize PyLong_AsLongLong + #define _PyInt_AsMpdSsize PyInt_AsSsize_t + #define _PyInt_FromMpdSsize PyInt_FromSsize_t + #define _PyLong_FromMpdSsize PyLong_FromSsize_t +#else + #define _PyLong_AsMpdSsize PyLong_AsLong + #define _PyInt_AsMpdSsize PyInt_AsLong + #define _PyInt_FromMpdSsize PyInt_FromLong + #define _PyLong_FromMpdSsize PyLong_FromLong +#endif + + +#if PY_VERSION_HEX < 0x03000000 + #error "Python versions < 3.0 not supported" +#endif + +#define Dec_INCREF_TRUE (Py_INCREF(Py_True), Py_True) +#define Dec_INCREF_FALSE (Py_INCREF(Py_False), Py_False) +#define Dec_INCREF_NONE (Py_INCREF(Py_None), Py_None) + + +typedef struct { + PyObject_HEAD + mpd_t *dec; +} PyDecObject; + +typedef struct { + PyDictObject dict; + uint32_t *flags; +} PyDecSignalDictObject; + +typedef struct { + PyObject_HEAD + mpd_context_t ctx; + PyObject *traps; + PyObject *flags; + int capitals; +} PyDecContextObject; + +typedef struct { + PyObject_HEAD + PyObject *local; + PyObject *global; +} PyDecContextManagerObject; + + +static PyTypeObject PyDec_Type; +static PyTypeObject PyDecSignalDict_Type; +static PyTypeObject PyDecContext_Type; +static PyTypeObject PyDecContextManager_Type; +#define PyDec_CheckExact(v) (Py_TYPE(v) == &PyDec_Type) +#define PyDec_Check(v) PyObject_TypeCheck(v, &PyDec_Type) +#define PyDecSignalDict_Check(v) (Py_TYPE(v) == &PyDecSignalDict_Type) +#define PyDecContext_Check(v) (Py_TYPE(v) == &PyDecContext_Type) +#define DecAddr(v) (((PyDecObject *)v)->dec) +#define SdFlagAddr(v) (((PyDecSignalDictObject *)v)->flags) +#define SdFlags(v) (*((PyDecSignalDictObject *)v)->flags) +#define CtxAddr(v) (&((PyDecContextObject *)v)->ctx) + + +/* Default module context */ +static PyObject *module_context = NULL; +/* Basic and extended contexts */ +static PyObject *basic_context = NULL; +static PyObject *ext_context = NULL; +/* Thread local objects */ +static PyObject *tls = NULL; + + +typedef struct { + const char *name; + const char *fqname; + uint32_t mpd_cond; + PyObject *dec_cond; +} DecCondMap; + +/* Top level Exception; inherits from ArithmeticError */ +static PyObject *DecimalException = NULL; + +/* Exceptions that correspond to IEEE signals; inherit from DecimalException */ +static DecCondMap signal_map[] = { + {"InvalidOperation", "cdecimal.InvalidOperation", MPD_IEEE_Invalid_operation, NULL}, + {"DivisionByZero", "cdecimal.DivisionByZero", MPD_Division_by_zero, NULL}, + {"Overflow", "cdecimal.Overflow", MPD_Overflow, NULL}, + {"Underflow", "cdecimal.Underflow", MPD_Underflow, NULL}, + {"Subnormal", "cdecimal.Subnormal", MPD_Subnormal, NULL}, + {"Inexact", "cdecimal.Inexact", MPD_Inexact, NULL}, + {"Rounded", "cdecimal.Rounded", MPD_Rounded, NULL}, + {"Clamped", "cdecimal.Clamped", MPD_Clamped, NULL}, + {NULL} +}; + +/* Exceptions that inherit from InvalidOperation */ +static DecCondMap cond_map[] = { + {"InvalidOperation", "cdecimal.InvalidOperation", MPD_Invalid_operation, NULL}, + {"ConversionSyntax", "cdecimal.ConversionSyntax", MPD_Conversion_syntax, NULL}, + {"DivisionImpossible", "cdecimal.DivisionImpossible", MPD_Division_impossible, NULL}, + {"DivisionUndefined", "cdecimal.DivisionUndefined", MPD_Division_undefined, NULL}, + {"FpuError", "cdecimal.FpuError", MPD_Fpu_error, NULL}, + {"InvalidContext", "cdecimal.InvalidContext", MPD_Invalid_context, NULL}, + {"MallocError", "cdecimal.MallocError", MPD_Malloc_error, NULL}, + {NULL} +}; + +static const char *dec_signal_string[MPD_NUM_FLAGS] = { + "Clamped", + "InvalidOperation", + "DivisionByZero", + "InvalidOperation", + "InvalidOperation", + "InvalidOperation", + "Inexact", + "InvalidOperation", + "InvalidOperation", + "InvalidOperation", + "NotImplemented", + "Overflow", + "Rounded", + "Subnormal", + "Underflow", +}; + +static void +dec_traphandler(mpd_context_t *ctx UNUSED) +{ + return; +} + +static PyObject * +flags_as_exception(uint32_t flags) +{ + DecCondMap *cm; + + for (cm = signal_map; cm->name != NULL; cm++) { + if (flags&cm->mpd_cond) { + return cm->dec_cond; + } + } + + PyErr_SetString(PyExc_ValueError, "invalid flag value"); + return NULL; +} + +static uint32_t +exception_as_flags(PyObject *ex) +{ + DecCondMap *cm; + + for (cm = signal_map; cm->name != NULL; cm++) { + if (cm->dec_cond == ex) { + return cm->mpd_cond; + } + } + + PyErr_SetString(PyExc_ValueError, "invalid signal value"); + return UINT32_MAX; +} + +static PyObject * +flags_as_list(uint32_t flags) +{ + PyObject *list; + DecCondMap *cm; + + if ((list = PyList_New(0)) == NULL) { + return NULL; + } + + for (cm = cond_map; cm->name != NULL; cm++) { + if (flags&cm->mpd_cond) { + PyList_Append(list, cm->dec_cond); + } + } + for (cm = signal_map+1; cm->name != NULL; cm++) { + if (flags&cm->mpd_cond) { + PyList_Append(list, cm->dec_cond); + } + } + + return list; +} + +static uint32_t +list_as_flags(PyObject *list) +{ + PyObject *item; + uint32_t flags, x; + ssize_t n, j; + + if (!PyList_Check(list)) { + PyErr_Format(PyExc_TypeError, "argument must be a signal list"); + return UINT32_MAX; + } + + n = PyList_Size(list); + flags = 0; + for (j = 0; j < n; j++) { + item = PyList_GetItem(list, j); + if ((x = exception_as_flags(item)) == UINT32_MAX) { + return UINT32_MAX; + } + flags |= x; + } + + return flags; +} + +static int +dict_as_flags(PyObject *val) +{ + PyObject *b; + DecCondMap *cm; + uint32_t flags = 0; + int x; + + if (!PyDict_Check(val)) { + PyErr_SetString(PyExc_ValueError, "argument must be a signal dict"); + return -1; + } + + for (cm = signal_map; cm->name != NULL; cm++) { + if ((b = PyDict_GetItem(val, cm->dec_cond)) == NULL) { + PyErr_SetString(PyExc_ValueError, + "incomplete signal dict"); + return UINT32_MAX; + } + + if ((x = PyObject_IsTrue(b)) < 0) { + return UINT32_MAX; + } + if (x == 1) { + flags |= cm->mpd_cond; + } + } + + return flags; +} + +static uint32_t +PyLong_AsMpdFlags(PyObject *v) +{ + int overflow; + long x; + + if (!PyLong_Check(v)) { + PyErr_SetString(PyExc_TypeError, "long argument required"); + return UINT32_MAX; + } + + overflow = 0; + x = PyLong_AsLongAndOverflow(v, &overflow); + if (overflow != 0 || x < 0 || x > (long)MPD_Max_status) { + PyErr_Format(PyExc_ValueError, "invalid flag value"); + return UINT32_MAX; + } + + return x; +} + +static mpd_ssize_t +PyLong_AsMpdSsize(PyObject *v) +{ + mpd_ssize_t x; + + if (!PyLong_Check(v)) { + PyErr_SetString(PyExc_TypeError, "long argument required"); + return MPD_SSIZE_MAX; + } + + x = _PyLong_AsMpdSsize(v); + if (PyErr_Occurred()) { + return MPD_SSIZE_MAX; + } + + return x; +} + +static int +dec_addstatus(mpd_context_t *ctx, uint32_t status) +{ + ctx->status |= status; + if (ctx->traps&status) { + PyObject *ex, *siglist; + + if ((ex = flags_as_exception(ctx->traps&status)) == NULL) { + return 1; + } + if ((siglist = flags_as_list(ctx->traps&status)) == NULL) { + return 1; + } + + PyErr_SetObject(ex, siglist); + Py_DECREF(siglist); + return 1; + } + return 0; +} + + +/******************************************************************************/ +/* SignalDict Object */ +/******************************************************************************/ + +static int +signaldict_init(PyObject *self, PyObject *args, PyObject *kwds) +{ + if (PyDict_Type.tp_init(self, args, kwds) < 0) { + return -1; + } + + SdFlagAddr(self) = NULL; + return 0; +} + +/* sync flags and dictionary, using the flags as the master */ +static void +signaldict_update(PyObject *self) +{ + PyObject *b; + DecCondMap *cm; + uint32_t flags; + + flags = SdFlags(self); + + for (cm = signal_map; cm->name != NULL; cm++) { + b = (flags&cm->mpd_cond) ? Py_True : Py_False; + PyDict_SetItem(self, cm->dec_cond, b); + } +} + +/* set all flags to false */ +static int +signaldict_clear_all(PyObject *self) +{ + DecCondMap *cm; + + SdFlags(self) = 0; + + for (cm = signal_map; cm->name != NULL; cm++) { + if (PyDict_SetItem(self, cm->dec_cond, Py_False) < 0) { + return -1; + } + } + return 0; +} + +static int +signaldict_setitem(PyObject *self, PyObject *key, PyObject *value) +{ + uint32_t flag; + int x; + + if ((flag = exception_as_flags(key)) == UINT_MAX) { + PyErr_SetString(PyExc_ValueError, "invalid signal key"); + return -1; + } + + if ((x = PyObject_IsTrue(value)) < 0) { + return -1; + } + if (x == 1) { + SdFlags(self) |= flag; + PyDict_SetItem(self, key, Py_True); + return 0; + } + else { + SdFlags(self) &= ~flag; + PyDict_SetItem(self, key, Py_False); + return 0; + } +} + +static PyObject * +signaldict_call_unary(PyObject *self, const char *name) +{ + PyObject *result, *s; + + if ((s = Py_BuildValue("s", name)) == NULL) { + return NULL; + } + + signaldict_update(self); + result = PyObject_CallMethodObjArgs(self, s, NULL); + + Py_DECREF(s); + return result; +} + +static PyObject * +signaldict_call_binary(PyObject *self, const char *name, PyObject *arg) +{ + PyObject *result, *s; + + if ((s = Py_BuildValue("s", name)) == NULL) { + return NULL; + } + + signaldict_update(self); + result = PyObject_CallMethodObjArgs(self, s, arg, NULL); + + Py_DECREF(s); + return result; +} + +static PyObject * +signaldict_richcompare(PyObject *a, PyObject *b, int op) +{ + if (PyDecSignalDict_Check(a)) { + signaldict_update(a); + } + if (PyDecSignalDict_Check(b)) { + signaldict_update(b); + } + return PyDict_Type.tp_richcompare(a, b, op); +} + +static int +signaldict_contains(PyObject *self, PyObject *key) +{ + signaldict_update(self); + return PyDict_Contains(self, key); +} + +static PyObject * +signaldict_copy(PyObject *self) +{ + signaldict_update(self); + return PyDict_Copy(self); +} + +static PyObject * +signaldict_get(PyObject *self, PyObject *args) +{ + return signaldict_call_binary(self, "get", args); +} + +static PyObject * +signaldict_has_key(PyObject *self, PyObject *key) +{ + return signaldict_call_binary(self, "has_key", key); +} + +static PyObject * +signaldict_items(PyObject *self) +{ + signaldict_update(self); + return PyDict_Items(self); +} + +static PyObject * +signaldict_iter(PyObject *self) +{ + return PyDict_Type.tp_iter(self); +} + +static PyObject * +signaldict_iterkeys(PyObject *self) +{ + return signaldict_call_unary(self, "iterkeys"); +} + +static PyObject * +signaldict_itervalues(PyObject *self) +{ + return signaldict_call_unary(self, "itervalues"); +} + +static PyObject * +signaldict_iteritems(PyObject *self) +{ + return signaldict_call_unary(self, "iteritems"); +} + +static PyObject * +signaldict_keys(PyObject *self) +{ + signaldict_update(self); + return PyDict_Keys(self); +} + +static Py_ssize_t +signaldict_length(PyObject *self) +{ + signaldict_update(self); + return PyDict_Type.tp_as_mapping->mp_length(self); +} + +static int +signaldict_print(PyObject *self, FILE *fp, int flags) +{ + signaldict_update(self); + return PyDict_Type.tp_print(self, fp, flags); +} + +static PyObject * +signaldict_repr(PyObject *self) +{ + signaldict_update(self); + return PyDict_Type.tp_repr(self); +} + +static PyObject * +signaldict_sizeof(PyObject *self) +{ + return signaldict_call_unary(self, "__sizeof__"); +} + +static int +signaldict_ass_sub(PyObject *self, PyObject *v, PyObject *w) +{ + if (w == NULL) { + PyErr_SetString(PyExc_ValueError, + "signal keys cannot be deleted"); + return -1; + } + else { + return signaldict_setitem(self, v, w); + } +} + +static PyObject * +signaldict_subscript(PyObject *self, PyObject *key) +{ + signaldict_update(self); + return PyDict_Type.tp_as_mapping->mp_subscript(self, key); +} + +static PyObject * +signaldict_values(PyObject *self) +{ + signaldict_update(self); + return PyDict_Values(self); +} + + +static PyMappingMethods signaldict_as_mapping = { + (lenfunc)signaldict_length, /*mp_length*/ + (binaryfunc)signaldict_subscript, /*mp_subscript*/ + (objobjargproc)signaldict_ass_sub /*mp_ass_subscript*/ +}; + +static PySequenceMethods signaldict_as_sequence = { + 0, /* sq_length */ + 0, /* sq_concat */ + 0, /* sq_repeat */ + 0, /* sq_item */ + 0, /* sq_slice */ + 0, /* sq_ass_item */ + 0, /* sq_ass_slice */ + signaldict_contains, /* sq_contains */ + 0, /* sq_inplace_concat */ + 0, /* sq_inplace_repeat */ +}; + +static PyMethodDef mapp_methods[] = { + {"__contains__", (PyCFunction)signaldict_contains, METH_O|METH_COEXIST, NULL}, + {"__getitem__", (PyCFunction)signaldict_subscript, METH_O|METH_COEXIST, NULL}, + {"__sizeof__", (PyCFunction)signaldict_sizeof, METH_NOARGS, NULL}, + {"has_key", (PyCFunction)signaldict_has_key, METH_O, NULL}, + {"get", (PyCFunction)signaldict_get, METH_VARARGS, NULL}, + {"keys", (PyCFunction)signaldict_keys, METH_NOARGS, NULL}, + {"items", (PyCFunction)signaldict_items, METH_NOARGS, NULL}, + {"values", (PyCFunction)signaldict_values, METH_NOARGS, NULL}, + {"copy", (PyCFunction)signaldict_copy, METH_NOARGS, NULL}, + {"iterkeys", (PyCFunction)signaldict_iterkeys, METH_NOARGS, NULL}, + {"itervalues", (PyCFunction)signaldict_itervalues, METH_NOARGS, NULL}, + {"iteritems", (PyCFunction)signaldict_iteritems, METH_NOARGS, NULL}, + {NULL, NULL} +}; + +static PyTypeObject PyDecSignalDict_Type = +{ + PyVarObject_HEAD_INIT(0, 0) + "cdecimal.SignalDict", /* tp_name */ + sizeof(PyDecSignalDictObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + 0, /* tp_dealloc */ + (printfunc)signaldict_print, /* tp_print */ + (getattrfunc) 0, /* tp_getattr */ + (setattrfunc) 0, /* tp_setattr */ + 0, /* tp_reserved */ + (reprfunc) signaldict_repr, /* tp_repr */ + 0, /* tp_as_number */ + &signaldict_as_sequence, /* tp_as_sequence */ + &signaldict_as_mapping, /* tp_as_mapping */ + (hashfunc) PyObject_HashNotImplemented, /* tp_hash */ + 0, /* tp_call */ + (reprfunc) 0, /* tp_str */ + (getattrofunc) PyObject_GenericGetAttr, /* tp_getattro */ + (setattrofunc) 0, /* tp_setattro */ + (PyBufferProcs *) 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + signaldict_richcompare, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + (getiterfunc)signaldict_iter, /* tp_iter */ + 0, /* tp_iternext */ + mapp_methods, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + (initproc)signaldict_init, /* tp_init */ +}; + + +/******************************************************************************/ +/* Context Object, Part 1 */ +/******************************************************************************/ + +static PyObject * +context_getprec(PyObject *self, void *closure UNUSED) +{ + mpd_context_t *ctx; + + ctx = CtxAddr(self); + return Py_BuildValue(CONV_mpd_ssize_t, mpd_getprec(ctx)); +} + +static PyObject * +context_getemax(PyObject *self, void *closure UNUSED) +{ + mpd_context_t *ctx; + + ctx = CtxAddr(self); + return Py_BuildValue(CONV_mpd_ssize_t, mpd_getemax(ctx)); +} + +static PyObject * +context_getemin(PyObject *self, void *closure UNUSED) +{ + mpd_context_t *ctx; + + ctx = CtxAddr(self); + return Py_BuildValue(CONV_mpd_ssize_t, mpd_getemin(ctx)); +} + +static PyObject * +context_getetiny(PyObject *self, PyObject *dummy UNUSED) +{ + mpd_context_t *ctx; + + ctx = CtxAddr(self); + return Py_BuildValue(CONV_mpd_ssize_t, mpd_etiny(ctx)); +} + +static PyObject * +context_getetop(PyObject *self, PyObject *dummy UNUSED) +{ + mpd_context_t *ctx; + + ctx = CtxAddr(self); + return Py_BuildValue(CONV_mpd_ssize_t, mpd_etop(ctx)); +} + +static PyObject * +context_getround(PyObject *self, void *closure UNUSED) +{ + mpd_context_t *ctx; + + ctx = CtxAddr(self); + return Py_BuildValue("i", mpd_getround(ctx)); +} + +static PyObject * +context_getcapitals(PyObject *self, void *closure UNUSED) +{ + return Py_BuildValue("i", ((PyDecContextObject *)self)->capitals); +} + +static PyObject * +context_gettraps(PyObject *self, void *closure UNUSED) +{ + mpd_context_t *ctx; + + ctx = CtxAddr(self); + return Py_BuildValue("i", mpd_gettraps(ctx)); +} + +static PyObject * +context_getstatus(PyObject *self, void *closure UNUSED) +{ + mpd_context_t *ctx; + + ctx = CtxAddr(self); + return Py_BuildValue("i", mpd_getstatus(ctx)); +} + +static PyObject * +context_getclamp(PyObject *self, void *closure UNUSED) +{ + mpd_context_t *ctx; + + ctx = CtxAddr(self); + return Py_BuildValue("i", mpd_getclamp(ctx)); +} + +static PyObject * +context_getallcr(PyObject *self, void *closure UNUSED) +{ + mpd_context_t *ctx; + + ctx = CtxAddr(self); + return Py_BuildValue("i", mpd_getcr(ctx)); +} + +static int +context_setprec(PyObject *self, PyObject *value, void *closure UNUSED) +{ + mpd_context_t *ctx; + mpd_ssize_t x; + + if ((x = PyLong_AsMpdSsize(value)) == MPD_SSIZE_MAX) { + return -1; + } + + ctx = CtxAddr(self); + if (!mpd_qsetprec(ctx, x)) { + if (dec_addstatus(ctx, MPD_Invalid_context)) { + return -1; + } + } + + return 0; +} + +static int +context_setemin(PyObject *self, PyObject *value, void *closure UNUSED) +{ + mpd_context_t *ctx; + mpd_ssize_t x; + + if ((x = PyLong_AsMpdSsize(value)) == MPD_SSIZE_MAX) { + return -1; + } + + ctx = CtxAddr(self); + if (!mpd_qsetemin(ctx, x)) { + if (dec_addstatus(ctx, MPD_Invalid_context)) { + return -1; + } + } + + return 0; +} + +static int +context_setemax(PyObject *self, PyObject *value, void *closure UNUSED) +{ + mpd_context_t *ctx; + mpd_ssize_t x; + + if ((x = PyLong_AsMpdSsize(value)) == MPD_SSIZE_MAX) { + return -1; + } + + ctx = CtxAddr(self); + if (!mpd_qsetemax(ctx, x)) { + if (dec_addstatus(ctx, MPD_Invalid_context)) { + return -1; + } + } + + return 0; +} + +static PyObject * +context_unsafe_setprec(PyObject *self, PyObject *value, void *closure UNUSED) +{ + mpd_context_t *ctx = CtxAddr(self); + + if ((ctx->prec = PyLong_AsMpdSsize(value)) == MPD_SSIZE_MAX) { + return NULL; + } + + Py_RETURN_NONE; +} + +static PyObject * +context_unsafe_setemin(PyObject *self, PyObject *value, void *closure UNUSED) +{ + mpd_context_t *ctx = CtxAddr(self); + + if ((ctx->emin = PyLong_AsMpdSsize(value)) == MPD_SSIZE_MAX) { + return NULL; + } + + Py_RETURN_NONE; +} + +static PyObject * +context_unsafe_setemax(PyObject *self, PyObject *value, void *closure UNUSED) +{ + mpd_context_t *ctx = CtxAddr(self); + + if ((ctx->emax = PyLong_AsMpdSsize(value)) == MPD_SSIZE_MAX) { + return NULL; + } + + Py_RETURN_NONE; +} + +static int +context_setround(PyObject *self, PyObject *value, void *closure UNUSED) +{ + mpd_context_t *ctx; + mpd_ssize_t x; + + if ((x = PyLong_AsMpdSsize(value)) == MPD_SSIZE_MAX) { + return -1; + } + if (x < 0 || x >= MPD_ROUND_GUARD) { + PyErr_SetString(PyExc_TypeError, "invalid value for context.round"); + return -1; + } + + ctx = CtxAddr(self); + if (!mpd_qsetround(ctx, (int)x)) { + if (dec_addstatus(ctx, MPD_Invalid_context)) { + return -1; + } + } + + return 0; +} + +static int +context_setcapitals(PyObject *self, PyObject *value, void *closure UNUSED) +{ + mpd_ssize_t x; + + if ((x = PyLong_AsMpdSsize(value)) == MPD_SSIZE_MAX) { + return -1; + } + if (x != 0 && x != 1) { + PyErr_SetString(PyExc_TypeError, "invalid value for context.capitals"); + return -1; + } + + ((PyDecContextObject *)self)->capitals = x; + + return 0; +} + +static int +context_settraps(PyObject *self, PyObject *value, void *closure UNUSED) +{ + mpd_context_t *ctx; + uint32_t flags; + + flags = PyLong_AsMpdFlags(value); + if (flags == UINT32_MAX) { + return -1; + } + + ctx = CtxAddr(self); + if (!mpd_qsettraps(ctx, (uint32_t)flags)) { + if (dec_addstatus(ctx, MPD_Invalid_context)) { + return -1; + } + } + + return 0; +} + +static int +context_settraps_list(PyObject *self, PyObject *value) +{ + mpd_context_t *ctx; + uint32_t flags; + + if ((flags = list_as_flags(value)) == UINT32_MAX) { + return -1; + } + + ctx = CtxAddr(self); + if (!mpd_qsettraps(ctx, flags)) { + if (dec_addstatus(ctx, MPD_Invalid_context)) { + return -1; + } + } + + return 0; +} + +static int +context_settraps_dict(PyObject *self, PyObject *value) +{ + mpd_context_t *ctx; + uint32_t flags; + + if ((flags = dict_as_flags(value)) == UINT32_MAX) { + return -1; + } + + ctx = CtxAddr(self); + if (!mpd_qsettraps(ctx, flags)) { + if (dec_addstatus(ctx, MPD_Invalid_context)) { + return -1; + } + } + + return 0; +} + +static int +context_setstatus(PyObject *self, PyObject *value, void *closure UNUSED) +{ + mpd_context_t *ctx; + uint32_t flags; + + flags = PyLong_AsMpdFlags(value); + if (flags == UINT32_MAX) { + return -1; + } + + ctx = CtxAddr(self); + if (!mpd_qsetstatus(ctx, (uint32_t)flags)) { + if (dec_addstatus(ctx, MPD_Invalid_context)) { + return -1; + } + } + + return 0; +} + +static int +context_setstatus_list(PyObject *self, PyObject *value) +{ + mpd_context_t *ctx; + uint32_t flags; + + if ((flags = list_as_flags(value)) == UINT32_MAX) { + return -1; + } + + ctx = CtxAddr(self); + if (!mpd_qsetstatus(ctx, flags)) { + if (dec_addstatus(ctx, MPD_Invalid_context)) { + return -1; + } + } + + return 0; +} + +static int +context_setstatus_dict(PyObject *self, PyObject *value) +{ + mpd_context_t *ctx; + uint32_t flags; + + if ((flags = dict_as_flags(value)) == UINT32_MAX) { + return -1; + } + + ctx = CtxAddr(self); + if (!mpd_qsetstatus(ctx, flags)) { + if (dec_addstatus(ctx, MPD_Invalid_context)) { + return -1; + } + } + + return 0; +} + +static int +context_setclamp(PyObject *self, PyObject *value, void *closure UNUSED) +{ + mpd_context_t *ctx; + mpd_ssize_t x; + + if ((x = PyLong_AsMpdSsize(value)) == MPD_SSIZE_MAX) { + return -1; + } + + ctx = CtxAddr(self); + if (!mpd_qsetclamp(ctx, (int)x)) { + if (dec_addstatus(ctx, MPD_Invalid_context)) { + return -1; + } + } + + return 0; +} + +static int +context_setallcr(PyObject *self, PyObject *value, void *closure UNUSED) +{ + mpd_context_t *ctx; + mpd_ssize_t x; + + if ((x = PyLong_AsMpdSsize(value)) == MPD_SSIZE_MAX) { + return -1; + } + + ctx = CtxAddr(self); + if (!mpd_qsetcr(ctx, (int)x)) { + if (dec_addstatus(ctx, MPD_Invalid_context)) { + return -1; + } + } + + return 0; +} + +static PyObject * +context_getattr(PyObject *self, PyObject *name) +{ + PyObject *retval, *s; + + if ((s = PyUnicode_AsASCIIString(name)) == NULL) { + return NULL; + } + + if (strcmp(PyBytes_AS_STRING(s), "traps") == 0) { + retval = ((PyDecContextObject *)self)->traps; + Py_INCREF(retval); + } + else if (strcmp(PyBytes_AS_STRING(s), "flags") == 0) { + retval = ((PyDecContextObject *)self)->flags; + Py_INCREF(retval); + } + else { + retval = PyObject_GenericGetAttr(self, name); + } + + Py_DECREF(s); + return retval; +} + +static int +context_setattr(PyObject *self, PyObject *name, PyObject *value) +{ + PyObject *s; + int retval = 0; + + if ((s = PyUnicode_AsASCIIString(name)) == NULL) { + return -1; + } + + if (strcmp(PyBytes_AS_STRING(s), "traps") == 0) { + if (context_settraps_dict(self, value) < 0) { + retval = -1; + } + } + else if (strcmp(PyBytes_AS_STRING(s), "flags") == 0) { + if (context_setstatus_dict(self, value) < 0) { + retval = -1; + } + } + else { + retval = PyObject_GenericSetAttr(self, name, value); + } + + Py_DECREF(s); + return retval; +} + +static PyObject * +context_clear_traps(PyObject *self, PyObject *dummy UNUSED) +{ + PyDecContextObject *decctx = (PyDecContextObject *)self; + + if (signaldict_clear_all(decctx->traps) < 0) { + return NULL; + } + Py_RETURN_NONE; +} + +static PyObject * +context_clear_flags(PyObject *self, PyObject *dummy UNUSED) +{ + PyDecContextObject *decctx = (PyDecContextObject *)self; + + if (signaldict_clear_all(decctx->flags) < 0) { + return NULL; + } + Py_RETURN_NONE; +} + +static PyObject * +context_new(PyTypeObject *type UNUSED, PyObject *args UNUSED, + PyObject *kwds UNUSED) +{ + PyDecContextObject *self = NULL; + mpd_context_t *ctx; + + self = PyObject_New(PyDecContextObject, &PyDecContext_Type); + if (self == NULL) { + return NULL; + } + self->traps = PyObject_CallObject((PyObject *)&PyDecSignalDict_Type, NULL); + if (self->traps == NULL) { + Py_DECREF(self); + return NULL; + } + self->flags = PyObject_CallObject((PyObject *)&PyDecSignalDict_Type, NULL); + if (self->flags == NULL) { + Py_DECREF(self->traps); + Py_DECREF(self); + return NULL; + } + + ctx = CtxAddr(self); + SdFlagAddr(self->traps) = &ctx->traps; + SdFlagAddr(self->flags) = &ctx->status; + + return (PyObject *)self; +} + +static void +context_dealloc(PyDecContextObject *self) +{ + Py_DECREF(self->traps); + Py_DECREF(self->flags); + PyObject_Del(self); +} + +static int +context_init(PyObject *self, PyObject *args, PyObject *kwds) +{ + static char *kwlist[] = { + "prec", "Emin", "Emax", "rounding", "capitals", + "traps", "flags", "_clamp", "_allcr", NULL + }; + PyObject *traps = NULL; + PyObject *status = NULL; + mpd_context_t *ctx, t; + int capitals = 1; + + assert(PyTuple_Check(args)); + ctx = CtxAddr(self); + + mpd_defaultcontext(&t); + if (!PyArg_ParseTupleAndKeywords( + args, kwds, + "|"CONV_mpd_ssize_t CONV_mpd_ssize_t CONV_mpd_ssize_t"iiOOii", + kwlist, + &t.prec, &t.emin, &t.emax, &t.round, &capitals, + &traps, &status, &t.clamp, &t.allcr + )) { + return -1; + } + + if (!mpd_qsetprec(ctx, t.prec) || + !mpd_qsetemin(ctx, t.emin) || + !mpd_qsetemax(ctx, t.emax) || + !mpd_qsetround(ctx, t.round) || + !mpd_qsettraps(ctx, t.traps) || + !mpd_qsetstatus(ctx, t.status) || + !mpd_qsetclamp(ctx, t.clamp) || + !mpd_qsetcr(ctx, t.allcr)) { + if (dec_addstatus(ctx, MPD_Invalid_context)) { + return -1; + } + } + + if (capitals != 0 && capitals != 1) { + PyErr_SetString(PyExc_ValueError, "invalid value for capitals"); + return -1; + } + ((PyDecContextObject *)self)->capitals = capitals; + + if (traps != NULL) { + if (PyLong_Check(traps)) { + return context_settraps(self, traps, NULL); + } + else if (PyList_Check(traps)) { + return context_settraps_list(self, traps); + } + else { + return context_settraps_dict(self, traps); + } + } + if (status != NULL) { + if (PyLong_Check(status)) { + return context_setstatus(self, status, NULL); + } + else if (PyList_Check(status)) { + return context_setstatus_list(self, status); + } + else { + return context_setstatus_dict(self, status); + } + } + + return 0; +} + +#define FD_CTX_LEN 640 +static PyObject * +context_repr(PyDecContextObject *self) +{ + mpd_context_t *ctx; + char s[FD_CTX_LEN]; + char *cp; + ssize_t n, mem; + + assert(PyDecContext_Check(self)); + ctx = CtxAddr(self); + + cp = s; mem = FD_CTX_LEN; + n = snprintf(cp, mem, "Context(prec=%"PRI_mpd_ssize_t", Emin=%"PRI_mpd_ssize_t"" + ", Emax=%"PRI_mpd_ssize_t", rounding=%s, capitals=%d, traps=", + ctx->prec, ctx->emin, ctx->emax, mpd_round_string[ctx->round], + self->capitals); + if (n < 0 || n >= mem) return NULL; + cp += n; mem -= n; + + n = mpd_lsnprint_signals(cp, mem, ctx->traps, dec_signal_string); + if (n < 0 || n >= mem) return NULL; + cp += n; mem -= n; + + n = snprintf(cp, mem, ", flags="); + if (n < 0 || n >= mem) return NULL; + cp += n; mem -= n; + + n = mpd_lsnprint_signals(cp, mem, ctx->status, dec_signal_string); + if (n < 0 || n >= mem) return NULL; + cp += n; mem -= n; + + n = snprintf(cp, mem, ")"); + if (n < 0 || n >= mem) return NULL; + + return PyUnicode_FromString(s); +} + +/* New copy with all settings except the status */ +static PyObject * +context_copy(PyObject *self) +{ + PyObject *newob; + mpd_context_t *ctx; + + newob = PyObject_CallObject((PyObject *)&PyDecContext_Type, NULL); + if (newob == NULL) { + return NULL; + } + + ctx = CtxAddr(newob); + + *ctx = *CtxAddr(self); + ctx->status = 0; + ctx->newtrap = 0; + ((PyDecContextObject *)newob)->capitals = ((PyDecContextObject *)self)->capitals; + + return newob; +} + +static PyObject * +context_reduce(PyObject *self, PyObject *args UNUSED) +{ + mpd_context_t *ctx = CtxAddr(self); + + return Py_BuildValue( + "O("CONV_mpd_ssize_t CONV_mpd_ssize_t CONV_mpd_ssize_t \ + "iiiiii)", + Py_TYPE(self), ctx->prec, ctx->emin, ctx->emax, + ctx->round, ((PyDecContextObject *)self)->capitals, + ctx->traps, ctx->status, ctx->clamp, ctx->allcr + ); +} + + +static PyGetSetDef context_getsets [] = +{ + { "prec", (getter)context_getprec, (setter)context_setprec, NULL, NULL}, + { "Emax", (getter)context_getemax, (setter)context_setemax, NULL, NULL}, + { "Emin", (getter)context_getemin, (setter)context_setemin, NULL, NULL}, + { "rounding", (getter)context_getround, (setter)context_setround, NULL, NULL}, + { "capitals", (getter)context_getcapitals, (setter)context_setcapitals, NULL, NULL}, + { "_clamp", (getter)context_getclamp, (setter)context_setclamp, NULL, NULL}, + { "_allcr", (getter)context_getallcr, (setter)context_setallcr, NULL, NULL}, + { "_traps", (getter)context_gettraps, (setter)context_settraps, NULL, NULL}, + { "_flags", (getter)context_getstatus, (setter)context_setstatus, NULL, NULL}, + {NULL} +}; + + +#define CONTEXT_CHECK(obj) \ + if (!PyDecContext_Check(obj)) { \ + PyErr_SetString( PyExc_TypeError, \ + "argument must be a context" ); \ + return NULL; \ + } + +#define CONTEXT_CHECK_VA(obj) \ + if (!PyDecContext_Check(obj)) { \ + PyErr_SetString( PyExc_TypeError, \ + "optional argument must be a context" ); \ + return NULL; \ + } + + +/******************************************************************************/ +/* Global, thread local and temporary contexts */ +/******************************************************************************/ + + +#ifndef USE_THREAD_LOCAL_STORAGE /* Recommended: No TLS */ +/* Internal: return borrowed reference to default context object */ +static inline PyObject * +dflt_ctx(void) +{ + return module_context; +} + +/* Internal: set default context, preserve old reference */ +static inline PyObject * +set_dflt_ctx(PyObject *obj) +{ + module_context = obj; + return Py_None; +} + +/* Internal: return convenience pointer to raw default context */ +static inline mpd_context_t * +mpd_ctx(void) +{ + return CtxAddr(module_context); +} + +/* Return context object, increment reference */ +static PyObject * +PyDec_GetDefaultContext(void) +{ + Py_INCREF(module_context); + return module_context; +} + +/* Set the module context to a new context object */ +static PyObject * +PyDec_SetDefaultContext(PyObject *self UNUSED, PyObject *obj) +{ + CONTEXT_CHECK(obj); + + Py_DECREF(module_context); + module_context = obj; + Py_INCREF(module_context); + Py_RETURN_NONE; +} +#else +/* + * Thread local storage for the context is not a good idea. All functions + * that map Python's arithmetic operators to mpdecimal functions have to + * look up the default context for each and every operation. This is more + * than twice as slow as using the module context. + * + * This section is here for compatibility with decimal.py, but compiling + * with USE_THREAD_LOCAL_STORAGE is strongly discouraged. + * + * If you need threads in your application, simply create a context for + * each thread and only use the functions that accept a context parameter. + */ + +/* Internal: return borrowed reference to thread local default context object */ +static PyObject * +dflt_ctx(void) +{ + PyObject *obj = NULL; + + if ((obj = PyObject_GetAttrString(tls, "default_context")) != NULL) { + /* We already have a thread local context and return a + * borrowed reference. */ + assert(PyDecContext_Check(obj)); + Py_DECREF(obj); + return obj; + } + + /* Otherwise, set the default context attribute */ + PyErr_Clear(); + if ((obj = (PyObject *)context_copy(module_context)) == NULL) { + return NULL; + } + if (PyObject_SetAttrString(tls, "default_context", obj) == -1) { + Py_DECREF(obj); + return NULL; + } + Py_DECREF(obj); + + /* refcount is 1 */ + return obj; +} + +/* Internal: set thread local default context, preserve old reference */ +static PyObject * +set_dflt_ctx(PyObject *obj) +{ + /* Preserve a reference to the previous context. */ + Py_INCREF(dflt_ctx()); + /* This decrements the refcount of a previous context. */ + if (PyObject_SetAttrString(tls, "default_context", obj) == -1) { + return NULL; + } + return Py_None; +} + +/* Internal: return convenience pointer to thread local raw context */ +static mpd_context_t * +mpd_ctx(void) +{ + PyObject *obj; + + if ((obj = dflt_ctx()) == NULL) { + /* XXX The alternative is to add even more error handling code + * to the arithmetic functions. This would punish users who do + * not use TLS. */ + mpd_err_fatal("Retrieving thread local context failed."); + /* Not reached */ + } + return CtxAddr(obj); +} + +/* Return thread local default context object with incremented refcount */ +static PyObject * +PyDec_GetDefaultContext(void) +{ + PyObject *obj; + + if ((obj = dflt_ctx()) == NULL) { + return NULL; + } + Py_INCREF(obj); + return obj; +} + +/* Set thread local context object */ +static PyObject * +PyDec_SetDefaultContext(PyObject *self UNUSED, PyObject *obj) +{ + CONTEXT_CHECK(obj); + + /* This clears one reference to a previous context. */ + if (PyObject_SetAttrString(tls, "default_context", obj) == -1) { + return NULL; + } + + Py_RETURN_NONE; +} +#endif + + +/* For the "with" statement: return a context manager object */ +static PyObject * +ctxmanager_new(PyObject *self UNUSED, PyObject *args) +{ + PyDecContextManagerObject *ctx_mgr; + PyObject *src; + + src = dflt_ctx(); + if (!PyArg_ParseTuple(args, "|O", &src)) { + return NULL; + } + CONTEXT_CHECK_VA(src); + + ctx_mgr = PyObject_New(PyDecContextManagerObject, &PyDecContextManager_Type); + if (ctx_mgr == NULL) { + return NULL; + } + + ctx_mgr->local = context_copy(src); + if (ctx_mgr->local == NULL) { + Py_DECREF(ctx_mgr); + return NULL; + } + + ctx_mgr->global = dflt_ctx(); + if (ctx_mgr->global == NULL) { + Py_DECREF(ctx_mgr->local); + Py_DECREF(ctx_mgr); + return NULL; + } + + return (PyObject *)ctx_mgr; +} + +static void +ctxmanager_dealloc(PyDecContextObject *self) +{ + PyObject_Del(self); +} + +static PyObject * +ctxmanager_set_local(PyDecContextManagerObject *self, PyObject *args UNUSED) +{ + if (set_dflt_ctx(self->local) == NULL) { + return NULL; + } + return (PyObject *)self->local; +} + +static PyObject * +ctxmanager_restore_default(PyDecContextManagerObject *self, PyObject *args UNUSED) +{ + if (set_dflt_ctx(self->global) == NULL) { + return NULL; + } + return Dec_INCREF_FALSE; +} + + +static PyMethodDef ctxmanager_methods[] = { + {"__enter__", (PyCFunction)ctxmanager_set_local, METH_NOARGS, NULL}, + {"__exit__", (PyCFunction)ctxmanager_restore_default, METH_VARARGS, NULL}, + {NULL, NULL} +}; + +static PyTypeObject PyDecContextManager_Type = +{ + PyVarObject_HEAD_INIT(NULL, 0) + "cdecimal.ContextManager", /* tp_name */ + sizeof(PyDecContextManagerObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor) ctxmanager_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + (getattrfunc) 0, /* tp_getattr */ + (setattrfunc) 0, /* tp_setattr */ + 0, /* tp_compare */ + (reprfunc) 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + (getattrofunc) PyObject_GenericGetAttr, /* tp_getattro */ + (setattrofunc) 0, /* tp_setattro */ + (PyBufferProcs *) 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + ctxmanager_methods, /* tp_methods */ +}; + + +/******************************************************************************/ +/* Decimal Object */ +/******************************************************************************/ + +static PyDecObject * +dec_alloc(void) +{ + PyDecObject * self; + + if ((self = PyObject_New(PyDecObject, &PyDec_Type)) == NULL) { + return NULL; + } + if ((self->dec = mpd_qnew()) == NULL) { + PyErr_NoMemory(); + PyObject_Del(self); + return NULL; + } + + return self; +} + +static void +dec_dealloc(PyObject *self) +{ + mpd_del(DecAddr(self)); + Py_TYPE(self)->tp_free(self); +} + + +/*******************************************************/ +/* Conversions to decimal */ +/*******************************************************/ + +/* Caller guarantees types. */ +static PyObject * +_PyDec_FromUnicode(PyObject *v, mpd_context_t *ctx) +{ + PyDecObject *newob; + uint32_t status = 0; + char *cp; + + if((newob = dec_alloc()) == NULL) { + return NULL; + } + if ((cp = PyMem_Malloc(PyUnicode_GET_SIZE(v)+1)) == NULL) { + Py_DECREF(newob); + PyErr_NoMemory(); + return NULL; + } + if (PyUnicode_EncodeDecimal(PyUnicode_AS_UNICODE(v), + PyUnicode_GET_SIZE(v), + cp, NULL)) { + Py_DECREF(newob); + PyMem_Free(cp); + return NULL; + } + + mpd_qset_string(newob->dec, cp, ctx, &status); + PyMem_Free(cp); + if (dec_addstatus(ctx, status)) { + Py_DECREF(newob); + return NULL; + } + + return (PyObject *)newob; +} + +/* Caller guarantees types. */ +static PyObject * +_PyDec_FromLong(PyObject *v, mpd_context_t *ctx) +{ + PyDecObject *newob; + PyLongObject *l = (PyLongObject *)v; + Py_ssize_t ob_size; + uint32_t status = 0; + size_t len; + uint8_t sign; + + if((newob = dec_alloc()) == NULL) { + return NULL; + } + + ob_size = Py_SIZE(l); + if (ob_size == 0) { + newob->dec->exp = 0; + newob->dec->data[0] = 0; + newob->dec->len = 1; + newob->dec->digits = 1; + return (PyObject *)newob; + } + + if (ob_size < 0) { + len = -ob_size; + sign = MPD_NEG; + } + else { + len = ob_size; + sign = MPD_POS; + } + +#if PYLONG_BITS_IN_DIGIT == 30 + mpd_qimport_u32(newob->dec, l->ob_digit, len, sign, PyLong_BASE, + ctx, &status); +#elif PYLONG_BITS_IN_DIGIT == 15 + mpd_qimport_u16(newob->dec, l->ob_digit, len, sign, PyLong_BASE, + ctx, &status); +#else + #error "PYLONG_BITS_IN_DIGIT should be 15 or 30" +#endif + if (dec_addstatus(ctx, status)) { + Py_DECREF(newob); + return NULL; + } + + return (PyObject *)newob; +} + +/* + * The following conversion functions read with a maxcontext in order + * to emulate limitless reading of decimals. If the decimal cannot be + * read exactly due to the limits of the maxcontext, InvalidOperation + * is raised. + * + * Leading and trailing whitespace is allowed. + */ +static char * +strip_ws(const char *x) +{ + char *s, *t; + char *y; + size_t n; + + s = (char *)x; + while (isspace((unsigned char)*s)) + s++; + + t = y = s+strlen(s); + while (t > s && isspace((unsigned char)*(t-1))) + t--; + + if (s != x || t != y) { + n = t-s; + if ((y = PyMem_Malloc(n+1)) == NULL) { + return NULL; + } + strncpy(y, s, n); + y[n] = '\0'; + return y; + } + + return (char *)x; +} + +/* Caller guarantees types. */ +static PyObject * +_PyDec_FromUnicode_Max(PyObject *v, mpd_context_t *ctx) +{ + PyDecObject *newob; + mpd_context_t maxctx; + uint32_t status = 0; + char *cp, *stripped; + + if((newob = dec_alloc()) == NULL) { + return NULL; + } + if ((cp = PyMem_Malloc(PyUnicode_GET_SIZE(v)+1)) == NULL) { + Py_DECREF(newob); + PyErr_NoMemory(); + return NULL; + } + if (PyUnicode_EncodeDecimal(PyUnicode_AS_UNICODE(v), + PyUnicode_GET_SIZE(v), + cp, NULL)) { + Py_DECREF(newob); + PyMem_Free(cp); + return NULL; + } + + mpd_maxcontext(&maxctx); + if ((stripped = strip_ws(cp)) == NULL) { + Py_DECREF(newob); + PyMem_Free(cp); + PyErr_NoMemory(); + return NULL; + } + + mpd_qset_string(newob->dec, stripped, &maxctx, &status); + if (stripped != cp) { + PyMem_Free(stripped); + } + PyMem_Free(cp); + if (status&(MPD_Inexact|MPD_Rounded)) { + /* we want exact results */ + mpd_seterror(newob->dec, MPD_Invalid_operation, &status); + } + status &= MPD_Errors; + if (dec_addstatus(ctx, status)) { + Py_DECREF(newob); + return NULL; + } + + return (PyObject *)newob; +} + +/* Caller guarantees types. */ +static PyObject * +_PyDec_FromLong_Max(PyObject *v, mpd_context_t *ctx) +{ + PyDecObject *newob; + PyLongObject *l = (PyLongObject *)v; + Py_ssize_t ob_size; + mpd_context_t maxctx; + uint32_t status = 0; + size_t len; + uint8_t sign; + + if((newob = dec_alloc()) == NULL) { + return NULL; + } + + ob_size = Py_SIZE(l); + if (ob_size == 0) { + newob->dec->exp = 0; + newob->dec->data[0] = 0; + newob->dec->len = 1; + newob->dec->digits = 1; + return (PyObject *)newob; + } + + if (ob_size < 0) { + len = -ob_size; + sign = MPD_NEG; + } + else { + len = ob_size; + sign = MPD_POS; + } + + mpd_maxcontext(&maxctx); + +#if PYLONG_BITS_IN_DIGIT == 30 + mpd_qimport_u32(newob->dec, l->ob_digit, len, sign, PyLong_BASE, + &maxctx, &status); +#elif PYLONG_BITS_IN_DIGIT == 15 + mpd_qimport_u16(newob->dec, l->ob_digit, len, sign, PyLong_BASE, + &maxctx, &status); +#else + #error "PYLONG_BITS_IN_DIGIT should be 15 or 30" +#endif + + if (status&(MPD_Inexact|MPD_Rounded)) { + /* we want exact results */ + mpd_seterror(newob->dec, MPD_Invalid_operation, &status); + } + status &= MPD_Errors; + if (dec_addstatus(ctx, status)) { + Py_DECREF(newob); + return NULL; + } + + return (PyObject *)newob; +} + +/* Caller guarantees types. */ +static PyObject * +_PyDec_FromTuple_Max(PyObject *v, mpd_context_t *ctx) +{ + PyObject *result; + PyObject *tmp, *dtuple; + char *decstring, *cp; + char sign_special[6]; + long sign, l; + mpd_ssize_t exp = 0; + Py_ssize_t i, mem, tsize; + int n; + + if (PyTuple_Size(v) != 3) { + PyErr_SetString(PyExc_ValueError, + "argument must be a tuple of length 3"); + return NULL; + } + + tmp = PyTuple_GET_ITEM(v, 0); + sign = PyLong_AsLong(tmp); + if (!PyLong_Check(tmp) || (sign != 0 && sign != 1)) { + PyErr_SetString(PyExc_ValueError, + "sign must be 0 or 1"); + return NULL; + } + sign_special[0] = sign ? '-' : '+'; + sign_special[1] = '\0'; + + tmp = PyTuple_GET_ITEM(v, 2); + if (PyUnicode_Check(tmp)) { + tmp = PyUnicode_AsASCIIString(tmp); + if (tmp == NULL) { + return NULL; + } + if (strcmp(PyBytes_AS_STRING(tmp), "F") == 0) { + strcat(sign_special, "Inf"); + } + else if (strcmp(PyBytes_AS_STRING(tmp), "n") == 0) { + strcat(sign_special, "NaN"); + } + else if (strcmp(PyBytes_AS_STRING(tmp), "N") == 0) { + strcat(sign_special, "sNaN"); + } + else { + Py_DECREF(tmp); + PyErr_SetString(PyExc_ValueError, + "string argument in the third position" + "must be 'F', 'n' or 'N'"); + return NULL; + } + Py_DECREF(tmp); + } + else { + exp = PyLong_AsMpdSsize(tmp); + if (PyErr_Occurred()) { + PyErr_SetString(PyExc_ValueError, + "exponent not an integer or " + "out of range"); + return NULL; + } + } + + dtuple = PyTuple_GET_ITEM(v, 1); + if (!PyTuple_Check(dtuple)) { + PyErr_SetString(PyExc_ValueError, + "coefficient must be a tuple of digits"); + return NULL; + } + + tsize = PyTuple_Size(dtuple); + /* [sign][tuple-digits+1][E][-][exp-digits+1]['\0'] */ + mem = 1 + tsize + 3 + MPD_EXPDIGITS + 2; + cp = decstring = PyMem_Malloc(mem); + if (decstring == NULL) { + PyErr_NoMemory(); + return NULL; + } + + n = snprintf(cp, mem, "%s", sign_special); + if (n < 0 || n >= mem) return NULL; + cp += n; + + if (sign_special[1] == '\0' && tsize == 0) { + /* not a special number and empty tuple */ + *cp++ = '0'; + } + for (i = 0; i < tsize; i++) { + tmp = PyTuple_GET_ITEM(dtuple, i); + l = PyLong_AsLong(tmp); + if (l < 0 || l > 9) { + PyMem_Free(decstring); + PyErr_SetString(PyExc_ValueError, + "coefficient must be a tuple of digits"); + return NULL; + } + *cp++ = l + '0'; + } + *cp = '\0'; + + if (sign_special[1] == '\0') { + /* not a special number */ + *cp++ = 'E'; + n = snprintf(cp, MPD_EXPDIGITS+1, "%" PRI_mpd_ssize_t, exp); + if (n < 0 || n >= MPD_EXPDIGITS+1) return NULL; + } + + tmp = PyUnicode_FromString(decstring); + PyMem_Free(decstring); + if (tmp == NULL) { + return NULL; + } + + result = _PyDec_FromUnicode_Max(tmp, ctx); + Py_DECREF(tmp); + return result; +} + +/* Caller guarantees types. */ +static PyObject * +dec_apply(PyObject *v, mpd_context_t *ctx) +{ + PyDecObject *newob; + uint32_t status = 0; + + if((newob = dec_alloc()) == NULL) { + return NULL; + } + + mpd_qcopy(newob->dec, ((PyDecObject *)v)->dec, &status); + if (dec_addstatus(ctx, status)) { + Py_DECREF(newob); + return NULL; + } + + mpd_qfinalize(newob->dec, ctx, &status); + if (dec_addstatus(ctx, status)) { + Py_DECREF(newob); + return NULL; + } + + return (PyObject *)newob; +} + +static PyObject * +PyDec_Apply(PyObject *decobj, PyObject *args) +{ + PyObject *ctxobj; + mpd_context_t *ctx; + + ctxobj = dflt_ctx(); + if (!PyArg_ParseTuple(args, "|O", &ctxobj)) { + return NULL; + } + + CONTEXT_CHECK_VA(ctxobj); + ctx = CtxAddr(ctxobj); + + return dec_apply(decobj, ctx); +} + +static PyObject * +PyDecContext_Apply(PyObject *ctxobj, PyObject *decobj) +{ + mpd_context_t *ctx; + + if (!PyDec_Check(decobj)) { + PyErr_SetString(PyExc_TypeError, "argument must be a Decimal"); + return NULL; + } + + CONTEXT_CHECK_VA(ctxobj); + ctx = CtxAddr(ctxobj); + + return dec_apply(decobj, ctx); +} + + +/* Conversion functions */ + +/* Try to convert PyObject v to PyDecObject a. */ +static inline int +convert_op(PyObject *v, PyDecObject **a, mpd_context_t *ctx) +{ + + if (PyDec_Check(v)) { + *a = (PyDecObject *) v; + Py_INCREF(v); + } + else if (PyLong_Check(v)) { + if ((*a = (PyDecObject *) _PyDec_FromLong_Max(v, ctx)) == NULL) { + return 0; + } + } + else { + Py_INCREF(Py_NotImplemented); + *a = (PyDecObject *) Py_NotImplemented; + return 0; + } + + return 1; +} + +#define CONVERT_OP(v, a, ctx) \ + if (!convert_op(v, a, ctx)) { \ + return (PyObject *) *(a); \ + } + +#define CONVERT_BINOP(v, w, a, b, ctx) \ + if (!convert_op(v, a, ctx)) { \ + return (PyObject *) *(a); \ + } \ + if (!convert_op(w, b, ctx)) { \ + Py_DECREF(*(a)); \ + return (PyObject *) *(b); \ + } + +#define CONVERT_TERNOP(v, w, x, a, b, c, ctx) \ + if (!convert_op(v, a, ctx)) { \ + return (PyObject *) *(a); \ + } \ + if (!convert_op(w, b, ctx)) { \ + Py_DECREF(*(a)); \ + return (PyObject *) *(b); \ + } \ + if (!convert_op(x, c, ctx)) { \ + Py_DECREF(*(a)); \ + Py_DECREF(*(b)); \ + return (PyObject *) *(c); \ + } + + +/* Same as convert_op(), but set an error instead of returning NotImplemented. */ +static int +convert_op_set(PyObject *v, PyDecObject **a, mpd_context_t *ctx) +{ + + if (PyDec_Check(v)) { + *a = (PyDecObject *) v; + Py_INCREF(v); + } + else if (PyLong_Check(v)) { + if ((*a = (PyDecObject *) _PyDec_FromLong_Max(v, ctx)) == NULL) { + return 0; + } + } + else { + PyErr_Format(PyExc_TypeError, "conversion from %s to Decimal is" + " not supported", v->ob_type->tp_name); + return 0; + } + + return 1; +} + +#define CONVERT_OP_SET(v, a, ctx) \ + if (!convert_op_set(v, a, ctx)) { \ + return NULL; \ + } + +#define CONVERT_BINOP_SET(v, w, a, b, ctx) \ + if (!convert_op_set(v, a, ctx)) { \ + return NULL; \ + } \ + if (!convert_op_set(w, b, ctx)) { \ + Py_DECREF(*(a)); \ + return NULL; \ + } + +#define CONVERT_TERNOP_SET(v, w, x, a, b, c, ctx) \ + if (!convert_op_set(v, a, ctx)) { \ + return NULL; \ + } \ + if (!convert_op_set(w, b, ctx)) { \ + Py_DECREF(*(a)); \ + return NULL; \ + } \ + if (!convert_op_set(x, c, ctx)) { \ + Py_DECREF(*(a)); \ + Py_DECREF(*(b)); \ + return NULL; \ + } + +static PyObject *dec_subtype_new(PyTypeObject *type, PyObject *args, + PyObject *kwds); + +static PyObject * +dec_new(PyTypeObject *type, PyObject *args, PyObject *kwds UNUSED) +{ + PyObject *v = NULL, *ctxobj = NULL; + mpd_context_t *ctx; + + if (type != &PyDec_Type) { + return dec_subtype_new(type, args, kwds); + } + + ctxobj = dflt_ctx(); + if (!PyArg_ParseTuple(args, "|OO", &v, &ctxobj)) { + return NULL; + } + + if (v == NULL) { + v = PyLong_FromLong(0); + } + + CONTEXT_CHECK_VA(ctxobj); + ctx = CtxAddr(ctxobj); + + if (PyDec_Check(v)) { + Py_INCREF(v); + return v; + } + else if (PyUnicode_Check(v)) { + return _PyDec_FromUnicode_Max(v, ctx); + } + else if (PyLong_Check(v)) { + return _PyDec_FromLong_Max(v, ctx); + } + else if (PyTuple_Check(v)) { + return _PyDec_FromTuple_Max(v, ctx); + } + else { + PyErr_Format(PyExc_TypeError, "conversion from %s to Decimal is" + " not supported", v->ob_type->tp_name); + return NULL; + } +} + +static PyObject * +dec_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + PyObject *tmp, *newobj; + + assert(PyType_IsSubtype(type, &PyDec_Type)); + tmp = dec_new(&PyDec_Type, args, kwds); + if (tmp == NULL) { + return NULL; + } + + newobj = type->tp_alloc(type, 0); + if (newobj == NULL) { + Py_DECREF(tmp); + return NULL; + } + + DecAddr(newobj) = mpd_qncopy(DecAddr(tmp)); + if (DecAddr(newobj) == NULL) { + PyErr_NoMemory(); + Py_DECREF(tmp); + return NULL; + } + + Py_DECREF(tmp); + return (PyObject *)newobj; +} + +static PyObject * +PyDecContext_CreateDecimal(PyObject *self, PyObject *args) +{ + PyObject *v = NULL; + mpd_context_t *ctx; + + if (!PyArg_ParseTuple(args, "|O", &v)) { + return NULL; + } + + if (v == NULL) { + v = PyLong_FromLong(0); + } + + ctx = CtxAddr(self); + + if (PyDec_Check(v)) { + return dec_apply(v, ctx); + } + else if (PyUnicode_Check(v)) { + return _PyDec_FromUnicode(v, ctx); + } + else if (PyLong_Check(v)) { + return _PyDec_FromLong(v, ctx); + } + else if (PyTuple_Check(v)) { + PyObject *tmp; + tmp = _PyDec_FromTuple_Max(v, ctx); + if (tmp == NULL) return NULL; + v = dec_apply(tmp, ctx); + Py_DECREF(tmp); + return v; + } + else { + PyErr_Format(PyExc_TypeError, "conversion from %s to Decimal is" + " not supported", v->ob_type->tp_name); + return NULL; + } +} + +static PyObject * +_PyDec_FromFloat_Max(PyObject *self, PyObject *v) +{ + PyObject *result, *tmp; + PyObject *n, *d, *n_d; + mpd_ssize_t k; + double x; + int sign; + mpd_t *d1, *d2; + uint32_t status = 0; + mpd_context_t maxctx; + + + if (PyLong_Check(v)) { + return _PyDec_FromLong_Max(v, mpd_ctx()); + } + + x = PyFloat_AsDouble(v); + if (x == -1.0 && PyErr_Occurred()) { + return NULL; + } + sign = (copysign(1.0, x) == 1.0) ? 0 : 1; + + if (Py_IS_NAN(x) || Py_IS_INFINITY(x)) { + result = PyObject_CallObject(self, NULL); + if (result == NULL) { + return NULL; + } + if (Py_IS_NAN(x)) { + /* decimal.py calls repr(float(+-nan)), + * which always gives a positive result */ + mpd_setspecial(DecAddr(result), MPD_POS, MPD_NAN); + } + else { + mpd_setspecial(DecAddr(result), sign, MPD_INF); + } + return result; + } + + if ((tmp = PyObject_CallMethod(v, "__abs__", NULL)) == NULL) { + return NULL; + } + n_d = PyObject_CallMethod(tmp, "as_integer_ratio", NULL); + Py_DECREF(tmp); + if (n_d == NULL) { + return NULL; + } + if ((n = PyTuple_GetItem(n_d, 0)) == NULL) { + Py_DECREF(n_d); + return NULL; + } + if ((d = PyTuple_GetItem(n_d, 1)) == NULL) { + Py_DECREF(n_d); + return NULL; + } + + + if ((tmp = PyObject_CallMethod(d, "bit_length", NULL)) == NULL) { + Py_DECREF(n_d); + return NULL; + } + k = PyLong_AsMpdSsize(tmp); + Py_DECREF(tmp); + if (k == MPD_SSIZE_MAX) { + Py_DECREF(n_d); + return NULL; + } + k--; + + if ((d1 = mpd_qnew()) == NULL) { + Py_DECREF(n_d); + return NULL; + } + if ((d2 = mpd_qnew()) == NULL) { + mpd_del(d1); + Py_DECREF(n_d); + return NULL; + } + + mpd_maxcontext(&maxctx); + mpd_qset_uint(d1, 5, &maxctx, &status); + mpd_qset_ssize(d2, k, &maxctx, &status); + mpd_qpow(d1, d1, d2, &maxctx, &status); + if (dec_addstatus(mpd_ctx(), status)) { + mpd_del(d1); + mpd_del(d2); + Py_DECREF(n_d); + return NULL; + } + + tmp = Py_BuildValue("(O)", n); + result = PyObject_CallObject(self, tmp); + Py_DECREF(tmp); + Py_DECREF(n_d); + if (result == NULL) { + mpd_del(d1); + mpd_del(d2); + return NULL; + } + + /* result = n * 5**k */ + mpd_qmul(DecAddr(result), DecAddr(result), d1, &maxctx, &status); + mpd_del(d1); + mpd_del(d2); + if (dec_addstatus(mpd_ctx(), status)) { + Py_DECREF(result); + return NULL; + } + /* result = +- n * 5**k * 10**-k */ + mpd_set_sign(DecAddr(result), sign); + DecAddr(result)->exp = -k; + + return result; +} + +static PyObject * +PyDecContext_FromFloat(PyObject *self, PyObject *v) +{ + PyObject *result; + mpd_context_t *ctx; + uint32_t status = 0; + + ctx = CtxAddr(self); + + result = _PyDec_FromFloat_Max((PyObject *)&PyDec_Type, v); + if (result == NULL) { + return NULL; + } + + mpd_qfinalize(DecAddr(result), ctx, &status); + if (dec_addstatus(ctx, status)) { + Py_DECREF(result); + return NULL; + } + + return result; +} + + +/*******************************************************/ +/* Conversions from decimal */ +/*******************************************************/ + +/* Caller guarantees type. Uses default module context. */ +static PyObject * +_PyInt_FromDec(PyDecObject *self, mpd_context_t *ctx, int round) +{ + PyLongObject *newob; + mpd_t *intdec; + size_t maxsize, n; + Py_ssize_t i; + mpd_context_t workctx; + uint32_t status = 0; + + if (mpd_isspecial(self->dec)) { + if (mpd_isnan(self->dec)) { + PyErr_SetString(PyExc_ValueError, + "cannot convert NaN to integer"); + } + else { + PyErr_SetString(PyExc_OverflowError, + "cannot convert Infinity to integer"); + } + return NULL; + } + + if ((intdec = mpd_qnew()) == NULL) { + PyErr_NoMemory(); + return NULL; + } + workctx = *ctx; + workctx.round = round; + mpd_qround_to_int(intdec, self->dec, &workctx, &status); + if (dec_addstatus(ctx, status)) { + mpd_del(intdec); + return NULL; + } + + maxsize = mpd_sizeinbase(intdec, PyLong_BASE); + if (maxsize > PY_SSIZE_T_MAX) { + PyErr_NoMemory(); + mpd_del(intdec); + return NULL; + } + if ((newob = _PyLong_New(maxsize)) == NULL) { + mpd_del(intdec); + return NULL; + } + + status = 0; +#if PYLONG_BITS_IN_DIGIT == 30 + n = mpd_qexport_u32(newob->ob_digit, maxsize, PyLong_BASE, intdec, &status); +#elif PYLONG_BITS_IN_DIGIT == 15 + n = mpd_qexport_u16(newob->ob_digit, maxsize, PyLong_BASE, intdec, &status); +#else + #error "PYLONG_BITS_IN_DIGIT should be 15 or 30" +#endif + if (dec_addstatus(ctx, status)) { + Py_DECREF((PyObject *) newob); + mpd_del(intdec); + return NULL; + } + + i = n; + while ((i > 0) && (newob->ob_digit[i-1] == 0)) { + i--; + } + + Py_SIZE(newob) = i; + if (mpd_isnegative(intdec) && !mpd_iszero(intdec)) { + Py_SIZE(newob) = -i; + } + + mpd_del(intdec); + return (PyObject *) newob; +} + +static PyObject * +PyLong_FromDec(PyDecObject *self) +{ + return _PyInt_FromDec(self, mpd_ctx(), MPD_ROUND_DOWN); +} + +/* Caller guarantees type */ +static PyObject * +PyLong_FromDecCtx(PyDecObject *self, mpd_context_t *ctx) +{ + return _PyInt_FromDec(self, ctx, MPD_ROUND_DOWN); +} + +/* Caller guarantees type. Uses default module context. */ +static PyObject * +PyDec_Trunc(PyObject *self, PyObject *dummy UNUSED) +{ + return _PyInt_FromDec((PyDecObject *)self, mpd_ctx(), MPD_ROUND_DOWN); +} + +static PyObject * +PyDec_ToIntegralValue(PyObject *self, PyObject *args, PyObject *kwds) +{ + static char *kwlist[] = {"rounding", "context", NULL}; + PyDecObject *result; + PyObject *dctx; + int round = -1; + mpd_context_t *ctx, workctx; + uint32_t status = 0; + + assert(PyTuple_Check(args)); + dctx = dflt_ctx(); + + if (!PyArg_ParseTupleAndKeywords(args, kwds, "|iO", + kwlist, &round, &dctx)) { + return NULL; + } + if (!PyDecContext_Check(dctx)) { + PyErr_SetString(PyExc_ValueError, + "optional second arg must be a context"); + return NULL; + } + if ((result = dec_alloc()) == NULL) { + return NULL; + } + + ctx = CtxAddr(dctx); + workctx = *ctx; + if (round >= 0) { + workctx.round = round; + } + + mpd_qround_to_int(result->dec, DecAddr(self), &workctx, &status); + if (dec_addstatus(ctx, status)) { + Py_DECREF(result); + return NULL; + } + + return (PyObject *)result; +} + +static PyObject * +PyDec_ToIntegralExact(PyObject *self, PyObject *args, PyObject *kwds) +{ + static char *kwlist[] = {"rounding", "context", NULL}; + PyDecObject *result; + PyObject *dctx; + int round = -1; + mpd_context_t *ctx, workctx; + uint32_t status = 0; + + assert(PyTuple_Check(args)); + dctx = dflt_ctx(); + + if (!PyArg_ParseTupleAndKeywords(args, kwds, "|iO", + kwlist, &round, &dctx)) { + return NULL; + } + if (!PyDecContext_Check(dctx)) { + PyErr_SetString(PyExc_ValueError, + "optional second arg must be a context"); + return NULL; + } + if ((result = dec_alloc()) == NULL) { + return NULL; + } + + ctx = CtxAddr(dctx); + workctx = *ctx; + if (round >= 0) { + workctx.round = round; + } + + mpd_qround_to_intx(result->dec, DecAddr(self), &workctx, &status); + if (dec_addstatus(ctx, status)) { + Py_DECREF(result); + return NULL; + } + + return (PyObject *)result; +} + +/* Caller guarantees type */ +static PyObject * +PyDec_AsTuple(PyObject *self, PyObject *dummy UNUSED) +{ + PyObject *o_sign = NULL; + PyObject *o_coeff = NULL; + PyObject *o_exp = NULL; + PyObject *o_tuple = NULL; + PyObject *tmp = NULL; + mpd_t *selfcpy = NULL; + char *intstring = NULL; + Py_ssize_t intlen, i; + + + if ((selfcpy = mpd_qncopy(DecAddr(self))) == NULL) { + PyErr_NoMemory(); + goto error; + } + + o_sign = Py_BuildValue("i", mpd_sign(DecAddr(self))); + if (o_sign == NULL) goto error; + + if (mpd_isinfinite(selfcpy)) { + if ((o_exp = Py_BuildValue("s", "F")) == NULL) { + goto error; + } + if ((o_coeff = PyTuple_New(0)) == NULL) { + goto error; + } + } + else { + if (mpd_isnan(selfcpy)) { + o_exp = Py_BuildValue("s", + mpd_isqnan(selfcpy)?"n":"N"); + } + else { + o_exp = Py_BuildValue(CONV_mpd_ssize_t, + DecAddr(self)->exp); + } + if (o_exp == NULL) goto error; + + /* coefficient is defined */ + if (selfcpy->len > 0) { + + /* make an integer */ + selfcpy->exp = 0; + /* clear NaN and sign */ + mpd_clear_flags(selfcpy); + intstring = mpd_to_sci(selfcpy, 1); + if (intstring == NULL) { + PyErr_NoMemory(); + goto error; + } + + intlen = strlen(intstring); + if ((o_coeff = PyTuple_New(intlen)) == NULL) { + goto error; + } + + for (i = 0; i < intlen; i++) { + tmp = Py_BuildValue("i", intstring[i]-'0'); + if (tmp == NULL) goto error; + PyTuple_SET_ITEM(o_coeff, i, tmp); + } + } + else { + if ((o_coeff = PyTuple_New(0)) == NULL) { + goto error; + } + } + } + + if ((o_tuple = PyTuple_New(3)) == NULL) { + goto error; + } + PyTuple_SET_ITEM(o_tuple, 0, o_sign); + PyTuple_SET_ITEM(o_tuple, 1, o_coeff); + PyTuple_SET_ITEM(o_tuple, 2, o_exp); + + +out: + if (selfcpy) mpd_del(selfcpy); + if (intstring) mpd_free(intstring); + return o_tuple; + +error: + if (o_sign) { Py_DECREF(o_sign); } + if (o_coeff) { Py_DECREF(o_coeff); } + if (o_exp) { Py_DECREF(o_exp); } + goto out; +} + +/* Caller guarantees type. Uses default module context. */ +static PyObject * +dec_str(PyDecObject *self) +{ + PyObject *s, *c; + char *res; + + c = dflt_ctx(); + res = mpd_to_sci(self->dec, ((PyDecContextObject *)c)->capitals); + if (res == NULL) { + PyErr_NoMemory(); + return NULL; + } + + s = PyUnicode_FromString(res); + mpd_free(res); + + return s; +} + +static const char *dtag = "Decimal('"; +static const size_t dtaglen = 9; /* without NUL terminator */ + +/* Caller guarantees type. Uses default module context. */ +static PyObject * +dec_repr(PyDecObject *self) +{ + PyObject *s, *c; + uint8_t err; + char *cp; + size_t declen; + + c = dflt_ctx(); + cp = mpd_to_sci(self->dec, ((PyDecContextObject *)c)->capitals); + if (cp == NULL) { + PyErr_NoMemory(); + return NULL; + } + declen = strlen(cp); + + err = 0; + cp = mpd_realloc(cp, declen+dtaglen+3, sizeof *cp, &err); + if (err) { + mpd_free(cp); + PyErr_NoMemory(); + return NULL; + } + + memmove(cp+dtaglen, cp, declen); + memcpy(cp, dtag, dtaglen); + cp[declen+dtaglen] = '\''; + cp[declen+dtaglen+1] = ')'; + cp[declen+dtaglen+2] = '\0'; + + s = PyUnicode_FromString(cp); + + mpd_free(cp); + return s; +} + +/* Caller guarantees type. Uses default module context. */ +static PyObject * +PyFloat_FromDec(PyDecObject *self) +{ + PyObject *f, *s; + + if ((s = dec_str(self)) == NULL) { + return NULL; + } + + f = PyFloat_FromString(s); + Py_DECREF(s); + + return f; +} + +static PyObject * +PyDec_Round(PyObject *self, PyObject *args) +{ + PyDecObject *a = (PyDecObject *)self; + PyDecObject *result; + PyObject *x = NULL; + mpd_uint_t dq[1] = {1}; + mpd_t q = {MPD_STATIC|MPD_CONST_DATA,0,1,1,1,dq}; + uint32_t status = 0; + mpd_context_t *ctx; + + if (!PyArg_ParseTuple(args, "|O", &x)) { + return NULL; + } + + ctx = mpd_ctx(); + + if (x) { + if (!PyLong_Check(x)) { + PyErr_SetString(PyExc_ValueError, "optional arg must be an integer"); + return NULL; + } + if ((result = dec_alloc()) == NULL) { + return NULL; + } + + q.exp = -_PyLong_AsMpdSsize(x); + mpd_qquantize(result->dec, a->dec, &q, ctx, &status); + if (dec_addstatus(ctx, status)) { + Py_DECREF(result); + return NULL; + } + + return (PyObject *)result; + } + else { + return _PyInt_FromDec(a, ctx, MPD_ROUND_HALF_EVEN); + } +} + +static PyObject * +dec_format(PyObject *self, PyObject *args) +{ + PyObject *result = NULL; + PyObject *override = NULL; + PyObject *dot = NULL; + PyObject *sep = NULL; + PyObject *grouping = NULL; + PyObject *fmtarg, *fmt; + PyObject *tmp; + mpd_spec_t spec; + wchar_t buf[2]; + char *decstring= NULL; + uint32_t status = 0; + size_t n; + + + if (!PyArg_ParseTuple(args, "O|O", &fmtarg, &override)) { + return NULL; + } + + if (PyBytes_Check(fmtarg)) { + fmt = fmtarg; + } + else if (PyUnicode_Check(fmtarg)) { + if ((fmt = PyUnicode_AsUTF8String(fmtarg)) == NULL) { + return NULL; + } + } + else { + PyErr_SetString(PyExc_TypeError, "format requires bytes or " + "unicode arg"); + return NULL; + } + + if (!mpd_parse_fmt_str(&spec, PyBytes_AS_STRING(fmt))) { + PyErr_SetString(PyExc_ValueError, "invalid format string"); + goto finish; + } + if (override) { + if (!PyDict_Check(override)) { + PyErr_SetString(PyExc_ValueError, "optional argument " + "must be a dict"); + goto finish; + } + if ((dot = PyDict_GetItemString(override, "decimal_point"))) { + if ((dot = PyUnicode_AsUTF8String(dot)) == NULL) { + goto finish; + } + spec.dot = PyBytes_AS_STRING(dot); + } + if ((sep = PyDict_GetItemString(override, "thousands_sep"))) { + if ((sep = PyUnicode_AsUTF8String(sep)) == NULL) { + goto finish; + } + spec.sep = PyBytes_AS_STRING(sep); + } + if ((grouping = PyDict_GetItemString(override, "grouping"))) { + if ((grouping = PyUnicode_AsUTF8String(grouping)) == NULL) { + goto finish; + } + spec.grouping = PyBytes_AS_STRING(grouping); + } + } + else { + n = strlen(spec.dot); + if (n > 1 || (n == 1 && !isascii((uchar)spec.dot[0]))) { + n = mbstowcs(buf, spec.dot, 2); + if (n != 1) { + PyErr_SetString(PyExc_ValueError, + "invalid decimal point or unsupported " + "combination of LC_CTYPE and LC_NUMERIC"); + goto finish; + } + if ((tmp = PyUnicode_FromWideChar(buf, n)) == NULL) { + goto finish; + } + if ((dot = PyUnicode_AsUTF8String(tmp)) == NULL) { + Py_DECREF(tmp); + goto finish; + } + spec.dot = PyBytes_AS_STRING(dot); + Py_DECREF(tmp); + } + n = strlen(spec.sep); + if (n > 1 || (n == 1 && !isascii((uchar)spec.sep[0]))) { + n = mbstowcs(buf, spec.sep, 2); + if (n != 1) { + PyErr_SetString(PyExc_ValueError, + "invalid thousands separator or unsupported " + "combination of LC_CTYPE and LC_NUMERIC"); + goto finish; + } + if ((tmp = PyUnicode_FromWideChar(buf, n)) == NULL) { + goto finish; + } + if ((sep = PyUnicode_AsUTF8String(tmp)) == NULL) { + Py_DECREF(tmp); + goto finish; + } + spec.sep = PyBytes_AS_STRING(sep); + Py_DECREF(tmp); + } + } + + + decstring = mpd_qformat_spec(DecAddr(self), &spec, mpd_ctx(), &status); + if (decstring == NULL) { + dec_addstatus(mpd_ctx(), status); + goto finish; + } + result = PyUnicode_DecodeUTF8(decstring, strlen(decstring), NULL); + + +finish: + if (grouping) { Py_DECREF(grouping); } + if (sep) { Py_DECREF(sep); } + if (dot) { Py_DECREF(dot); } + if (decstring) mpd_free(decstring); + if (fmt != fmtarg) { Py_DECREF(fmt); } + return result; +} + + +/********************************************************************/ +/* Macros for converting mpdecimal functions to Decimal methods */ +/********************************************************************/ + +/* The operand is guaranteed to be a PyDecObject. */ +#define _Dec_BoolFunc(MPDFUNC) \ +static PyObject * \ +_Dec_##MPDFUNC(PyObject *self) \ +{ \ + PyDecObject *a = (PyDecObject *) self; \ + return MPDFUNC(a->dec) ? Dec_INCREF_TRUE : Dec_INCREF_FALSE; \ +} + +/* The operand is guaranteed to be a PyDecObject. */ +#define _Dec_BoolCFunc(MPDFUNC) \ +static PyObject * \ +_Dec_CFunc_##MPDFUNC(PyObject *self, PyObject *dummy UNUSED) \ +{ \ + PyDecObject *a = (PyDecObject *) self; \ + return MPDFUNC(a->dec) ? Dec_INCREF_TRUE : Dec_INCREF_FALSE; \ +} + +/* Operand is a PyDecObject. Uses optional context if supplied. + * MPDFUNC uses a const context and does not raise. */ +#define _DecOpt_BoolFunc(MPDFUNC) \ +static PyObject * \ +_DecOpt_##MPDFUNC(PyObject *self, PyObject *args) \ +{ \ + PyDecObject *a = (PyDecObject *) self; \ + PyObject *ctxobj; \ + mpd_context_t *ctx; \ + \ + ctxobj = dflt_ctx(); \ + if (!PyArg_ParseTuple(args, "|O", &ctxobj)) { \ + return NULL; \ + } \ + \ + CONTEXT_CHECK_VA(ctxobj); \ + ctx = CtxAddr(ctxobj); \ + \ + return MPDFUNC(a->dec, ctx) ? Dec_INCREF_TRUE : Dec_INCREF_FALSE; \ +} + +/* Operand is a PyDecObject. Uses the default module context. + * MPDFUNC is a quiet function. */ +#define _Dec_UnaryFunc(MPDFUNC) \ +static PyObject * \ +_Dec_##MPDFUNC(PyObject *self) \ +{ \ + PyDecObject *a = (PyDecObject *) self; \ + PyDecObject *result; \ + uint32_t status = 0; \ + mpd_context_t *ctx; \ + \ + if ((result = dec_alloc()) == NULL) { \ + return NULL; \ + } \ + \ + ctx = mpd_ctx(); \ + MPDFUNC(result->dec, a->dec, ctx, &status); \ + if (dec_addstatus(ctx, status)) { \ + Py_DECREF(result); \ + return NULL; \ + } \ + \ + return (PyObject *) result; \ +} + +/* Operand is a PyDecObject. Uses the default module context. + * MPDFUNC is a quiet function. */ +#define _Dec_UnaryCFunc(MPDFUNC) \ +static PyObject * \ +_Dec_CFunc_##MPDFUNC(PyObject *self, PyObject *dummy UNUSED) \ +{ \ + PyDecObject *a = (PyDecObject *) self; \ + PyDecObject *result; \ + uint32_t status = 0; \ + mpd_context_t *ctx; \ + \ + if ((result = dec_alloc()) == NULL) { \ + return NULL; \ + } \ + \ + ctx = mpd_ctx(); \ + MPDFUNC(result->dec, a->dec, ctx, &status); \ + if (dec_addstatus(ctx, &status)) { \ + Py_DECREF(result); \ + return NULL; \ + } \ + \ + return (PyObject *) result; \ +} + +/* Operand is a PyDecObject. Uses optional context if supplied. + * MPDFUNC is a quiet function. */ +#define _DecOpt_UnaryFunc(MPDFUNC) \ +static PyObject * \ +_DecOpt_##MPDFUNC(PyObject *self, PyObject *args) \ +{ \ + PyDecObject *a = (PyDecObject *) self; \ + PyDecObject *result; \ + PyObject *ctxobj; \ + uint32_t status = 0; \ + mpd_context_t *ctx; \ + \ + ctxobj = dflt_ctx(); \ + if (!PyArg_ParseTuple(args, "|O", &ctxobj)) { \ + return NULL; \ + } \ + \ + CONTEXT_CHECK_VA(ctxobj); \ + ctx = CtxAddr(ctxobj); \ + \ + if ((result = dec_alloc()) == NULL) { \ + return NULL; \ + } \ + \ + MPDFUNC(result->dec, a->dec, ctx, &status); \ + if (dec_addstatus(ctx, status)) { \ + Py_DECREF(result); \ + return NULL; \ + } \ + \ + return (PyObject *) result; \ +} + + +/* Operands are Python Objects. Uses default module context. + * MPDFUNC is a quiet function. */ +#define _Dec_BinaryFunc(MPDFUNC) \ +static PyObject * \ +_Dec_##MPDFUNC(PyObject *v, PyObject *w) \ +{ \ + PyDecObject *a, *b; \ + PyDecObject *result; \ + uint32_t status = 0; \ + mpd_context_t *ctx; \ + \ + ctx = mpd_ctx(); \ + CONVERT_BINOP(v, w, &a, &b, ctx); \ + \ + if ((result = dec_alloc()) == NULL) { \ + Py_DECREF(a); \ + Py_DECREF(b); \ + return NULL; \ + } \ + \ + MPDFUNC(result->dec, a->dec, b->dec, ctx, &status); \ + Py_DECREF(a); \ + Py_DECREF(b); \ + if (dec_addstatus(ctx, status)) { \ + Py_DECREF(result); \ + return NULL; \ + } \ + \ + return (PyObject *) result; \ +} + +/* Operands are Python Objects. Uses optional context if supplied. + * MPDFUNC is a quiet function. */ +#define _DecOpt_BinaryFunc(MPDFUNC) \ +static PyObject * \ +_DecOpt_##MPDFUNC(PyObject *v, PyObject *args) \ +{ \ + PyObject *w, *ctxobj; \ + PyDecObject *a, *b; \ + PyDecObject *result; \ + uint32_t status = 0; \ + mpd_context_t *ctx; \ + \ + ctxobj = dflt_ctx(); \ + if (!PyArg_ParseTuple(args, "O|O", &w, &ctxobj)) { \ + return NULL; \ + } \ + \ + CONTEXT_CHECK_VA(ctxobj); \ + ctx = CtxAddr(ctxobj); \ + \ + CONVERT_BINOP_SET(v, w, &a, &b, ctx); \ + \ + if ((result = dec_alloc()) == NULL) { \ + Py_DECREF(a); \ + Py_DECREF(b); \ + return NULL; \ + } \ + \ + MPDFUNC(result->dec, a->dec, b->dec, ctx, &status); \ + Py_DECREF(a); \ + Py_DECREF(b); \ + if (dec_addstatus(ctx, status)) { \ + Py_DECREF(result); \ + return NULL; \ + } \ + \ + return (PyObject *) result; \ +} + +/* Operands are Python Objects. Actual MPDFUNC does NOT take a context. + * Uses optional context for conversion only. */ +#define _DecOpt_BinaryFunc_NoCtx(MPDFUNC) \ +static PyObject * \ +_DecOpt_##MPDFUNC(PyObject *v, PyObject *args) \ +{ \ + PyObject *w, *ctxobj; \ + PyDecObject *a, *b; \ + PyDecObject *result; \ + mpd_context_t *ctx; \ + \ + ctxobj = dflt_ctx(); \ + if (!PyArg_ParseTuple(args, "O|O", &w, &ctxobj)) { \ + return NULL; \ + } \ + \ + CONTEXT_CHECK_VA(ctxobj); \ + ctx = CtxAddr(ctxobj); \ + \ + CONVERT_BINOP_SET(v, w, &a, &b, ctx); \ + \ + if ((result = dec_alloc()) == NULL) { \ + Py_DECREF(a); \ + Py_DECREF(b); \ + return NULL; \ + } \ + \ + MPDFUNC(result->dec, a->dec, b->dec); \ + Py_DECREF(a); \ + Py_DECREF(b); \ + \ + return (PyObject *) result; \ +} + + +/* Operands are Python Objects. Uses optional context if supplied. + * MPDFUNC is a quiet function. */ +#define _DecOpt_TernaryFunc(MPDFUNC) \ +static PyObject * \ +_DecOpt_##MPDFUNC(PyObject *v, PyObject *args) \ +{ \ + PyObject *w, *x, *ctxobj; \ + PyDecObject *a, *b, *c; \ + PyDecObject *result; \ + uint32_t status = 0; \ + mpd_context_t *ctx; \ + \ + ctxobj = dflt_ctx(); \ + if (!PyArg_ParseTuple(args, "OO|O", &w, &x, &ctxobj)) { \ + return NULL; \ + } \ + \ + CONTEXT_CHECK_VA(ctxobj); \ + ctx = CtxAddr(ctxobj); \ + \ + CONVERT_TERNOP_SET(v, w, x, &a, &b, &c, ctx); \ + \ + if ((result = dec_alloc()) == NULL) { \ + Py_DECREF(a); \ + Py_DECREF(b); \ + Py_DECREF(c); \ + return NULL; \ + } \ + \ + MPDFUNC(result->dec, a->dec, b->dec, c->dec, ctx, &status); \ + Py_DECREF(a); \ + Py_DECREF(b); \ + Py_DECREF(c); \ + if (dec_addstatus(ctx, status)) { \ + Py_DECREF(result); \ + return NULL; \ + } \ + \ + return (PyObject *) result; \ +} + + +/**********************************************/ +/* Number methods */ +/**********************************************/ + +_Dec_UnaryFunc(mpd_qminus) +_Dec_UnaryFunc(mpd_qplus) +_Dec_UnaryFunc(mpd_qabs) + +static PyObject * +_Dec_mpd_adjexp(PyObject *self, PyObject *dummy UNUSED) +{ + mpd_ssize_t retval; + + if (mpd_isspecial(DecAddr(self))) { + retval = 0; + } + else { + retval = mpd_adjexp(DecAddr(self)); + } + + return _PyLong_FromMpdSsize(retval); +} + +_Dec_BinaryFunc(mpd_qadd) +_Dec_BinaryFunc(mpd_qsub) +_Dec_BinaryFunc(mpd_qmul) +_Dec_BinaryFunc(mpd_qdiv) +_Dec_BinaryFunc(mpd_qrem) +_Dec_BinaryFunc(mpd_qdivint) + +static int +_Dec_nonzero(PyDecObject *v) +{ + return !mpd_iszero(v->dec); +} + +static PyObject * +_Dec_mpd_qdivmod(PyObject *v, PyObject *w) +{ + PyDecObject *a, *b; + PyDecObject *q, *r; + uint32_t status = 0; + mpd_context_t *ctx; + + ctx = mpd_ctx(); + CONVERT_BINOP(v, w, &a, &b, ctx); + + if ((q = dec_alloc()) == NULL) { + Py_DECREF(a); + Py_DECREF(b); + return NULL; + } + if ((r = dec_alloc()) == NULL) { + Py_DECREF(a); + Py_DECREF(b); + Py_DECREF(q); + return NULL; + } + + mpd_qdivmod(q->dec, r->dec, a->dec, b->dec, ctx, &status); + Py_DECREF(a); + Py_DECREF(b); + if (dec_addstatus(ctx, status)) { + Py_DECREF(r); + Py_DECREF(q); + return NULL; + } + + return Py_BuildValue("(NN)", q, r); +} + +static PyObject * +_Dec_mpd_qpow(PyObject *base, PyObject *exp, PyObject *mod) +{ + PyDecObject *a, *b, *c = NULL; + PyDecObject *result; + uint32_t status = 0; + mpd_context_t *ctx; + + ctx = mpd_ctx(); + CONVERT_BINOP(base, exp, &a, &b, ctx); + + if (mod != Py_None) { + if (!convert_op(mod, &c, ctx)) { + Py_DECREF(a); + Py_DECREF(b); + return (PyObject *) c; + } + } + + if ((result = dec_alloc()) == NULL) { + return NULL; + } + + if (c == NULL) { + mpd_qpow(result->dec, a->dec, b->dec, ctx, &status); + } + else { + mpd_qpowmod(result->dec, a->dec, b->dec, c->dec, ctx, &status); + Py_DECREF(c); + } + Py_DECREF(a); + Py_DECREF(b); + if (dec_addstatus(ctx, status)) { + Py_DECREF(result); + return NULL; + } + + return (PyObject *) result; +} + + +/******************************************************************************/ +/* Decimal Methods */ +/******************************************************************************/ + + +/* Arithmetic operations */ +_DecOpt_UnaryFunc(mpd_qabs) +_DecOpt_UnaryFunc(mpd_qexp) +_DecOpt_UnaryFunc(mpd_qinvroot) +_DecOpt_UnaryFunc(mpd_qln) +_DecOpt_UnaryFunc(mpd_qlog10) +_DecOpt_UnaryFunc(mpd_qminus) +_DecOpt_UnaryFunc(mpd_qnext_minus) +_DecOpt_UnaryFunc(mpd_qnext_plus) +_DecOpt_UnaryFunc(mpd_qplus) +_DecOpt_UnaryFunc(mpd_qreduce) +_DecOpt_UnaryFunc(mpd_qsqrt) + +_DecOpt_BinaryFunc(mpd_qadd) +_DecOpt_BinaryFunc(mpd_qcompare) +_DecOpt_BinaryFunc(mpd_qcompare_signal) +_DecOpt_BinaryFunc(mpd_qdiv) +_DecOpt_BinaryFunc(mpd_qdivint) +_DecOpt_BinaryFunc(mpd_qmax) +_DecOpt_BinaryFunc(mpd_qmax_mag) +_DecOpt_BinaryFunc(mpd_qmin) +_DecOpt_BinaryFunc(mpd_qmin_mag) +_DecOpt_BinaryFunc(mpd_qmul) +_DecOpt_BinaryFunc(mpd_qnext_toward) +_DecOpt_BinaryFunc(mpd_qpow) +_DecOpt_BinaryFunc(mpd_qquantize) +_DecOpt_BinaryFunc(mpd_qrem) +_DecOpt_BinaryFunc(mpd_qrem_near) +_DecOpt_BinaryFunc(mpd_qsub) + +_DecOpt_TernaryFunc(mpd_qfma) +_DecOpt_TernaryFunc(mpd_qpowmod) + +/* Miscellaneous */ +_Dec_BoolCFunc(mpd_iscanonical) +_Dec_BoolCFunc(mpd_isfinite) +_Dec_BoolCFunc(mpd_isinfinite) +_Dec_BoolCFunc(mpd_isinteger) +_Dec_BoolCFunc(mpd_isnan) +_Dec_BoolCFunc(mpd_isqnan) +_Dec_BoolCFunc(mpd_issnan) +_Dec_BoolCFunc(mpd_issigned) +_Dec_BoolCFunc(mpd_isspecial) +_Dec_BoolCFunc(mpd_iszero) + +_DecOpt_BoolFunc(mpd_isnormal) +_DecOpt_BoolFunc(mpd_issubnormal) + +static PyObject * +_Dec_mpd_qcopy_abs(PyObject *self, PyObject *dummy UNUSED) +{ + PyDecObject *a = (PyDecObject *) self; + PyDecObject *result; + uint32_t status = 0; + + if ((result = dec_alloc()) == NULL) { + return NULL; + } + + mpd_qcopy_abs(result->dec, a->dec, &status); + if (dec_addstatus(mpd_ctx(), status)) { + Py_DECREF(result); + return NULL; + } + + return (PyObject *) result; +} + +static PyObject * +_Dec_mpd_qcopy_negate(PyObject *self, PyObject *dummy UNUSED) +{ + PyDecObject *a = (PyDecObject *) self; + PyDecObject *result; + uint32_t status = 0; + + if ((result = dec_alloc()) == NULL) { + return NULL; + } + + mpd_qcopy_negate(result->dec, a->dec, &status); + if (dec_addstatus(mpd_ctx(), status)) { + Py_DECREF(result); + return NULL; + } + + return (PyObject *) result; +} + +_DecOpt_UnaryFunc(mpd_qinvert) +_DecOpt_UnaryFunc(mpd_qlogb) + +_DecOpt_BinaryFunc_NoCtx(mpd_compare_total) +_DecOpt_BinaryFunc_NoCtx(mpd_compare_total_mag) + +static PyObject * +_Dec_mpd_qcopy_sign(PyObject *v, PyObject *w) +{ + PyDecObject *a, *b; + PyDecObject *result; + uint32_t status = 0; + mpd_context_t *ctx; + + ctx = mpd_ctx(); + CONVERT_BINOP(v, w, &a, &b, ctx); + + if ((result = dec_alloc()) == NULL) { + Py_DECREF(a); + Py_DECREF(b); + return NULL; + } + + mpd_qcopy_sign(result->dec, a->dec, b->dec, &status); + Py_DECREF(a); + Py_DECREF(b); + if (dec_addstatus(ctx, status)) { + Py_DECREF(result); + return NULL; + } + + return (PyObject *) result; +} + +_DecOpt_BinaryFunc(mpd_qand) +_DecOpt_BinaryFunc(mpd_qor) +_DecOpt_BinaryFunc(mpd_qxor) + +_DecOpt_BinaryFunc(mpd_qrotate) +_DecOpt_BinaryFunc(mpd_qscaleb) +_DecOpt_BinaryFunc(mpd_qshift) + +static PyObject * +_DecOpt_mpd_class(PyObject *self, PyObject *args) +{ + PyDecObject *a = (PyDecObject *) self; + PyObject *ctxobj; + mpd_context_t *ctx; + const char *cp; + + ctxobj = dflt_ctx(); + if (!PyArg_ParseTuple(args, "|O", &ctxobj)) { + return NULL; + } + + CONTEXT_CHECK_VA(ctxobj); + ctx = CtxAddr(ctxobj); + + cp = mpd_class(a->dec, ctx); + return Py_BuildValue("s", cp); +} + +static PyObject * +_Dec_canonical(PyObject *self, PyObject *dummy UNUSED) +{ + Py_INCREF(self); + return self; +} + +static PyObject * +dec_copy(PyObject *self, PyObject *dummy UNUSED) +{ + Py_INCREF(self); + return self; +} + +static PyObject * +_DecOpt_mpd_qdivmod(PyObject *v, PyObject *args) +{ + PyObject *w, *ctxobj; + PyDecObject *a, *b; + PyDecObject *q, *r; + uint32_t status = 0; + mpd_context_t *ctx; + + ctxobj = dflt_ctx(); + if (!PyArg_ParseTuple(args, "O|O", &w, &ctxobj)) { + return NULL; + } + + CONTEXT_CHECK_VA(ctxobj); + ctx = CtxAddr(ctxobj); + + CONVERT_BINOP_SET(v, w, &a, &b, ctx); + + if ((q = dec_alloc()) == NULL) { + Py_DECREF(a); + Py_DECREF(b); + return NULL; + } + if ((r = dec_alloc()) == NULL) { + Py_DECREF(a); + Py_DECREF(b); + Py_DECREF(q); + return NULL; + } + + mpd_qdivmod(q->dec, r->dec, a->dec, b->dec, ctx, &status); + Py_DECREF(a); + Py_DECREF(b); + if (dec_addstatus(ctx, status)) { + Py_DECREF(r); + Py_DECREF(q); + return NULL; + } + + return Py_BuildValue("(NN)", q, r); +} + +static PyObject * +_Dec_mpd_radix(PyObject *self UNUSED, PyObject *dummy UNUSED) +{ + return Py_BuildValue("i", 10); +} + +static PyObject * +_Dec_mpd_same_quantum(PyObject *v, PyObject *args) +{ + PyObject *w, *ctxobj, *result; + PyDecObject *a, *b; + mpd_context_t *ctx; + + ctxobj = dflt_ctx(); + if (!PyArg_ParseTuple(args, "O|O", &w, &ctxobj)) { + return NULL; + } + + CONTEXT_CHECK_VA(ctxobj); + ctx = CtxAddr(ctxobj); + + CONVERT_BINOP_SET(v, w, &a, &b, ctx); + + result = mpd_same_quantum(a->dec, b->dec) ? Dec_INCREF_TRUE : Dec_INCREF_FALSE; + Py_DECREF(a); + Py_DECREF(b); + + return result; +} + +static PyObject * +_Dec_mpd_sign(PyObject *self, PyObject *dummy UNUSED) +{ + PyDecObject *a = (PyDecObject *) self; + + return Py_BuildValue("i", mpd_arith_sign(a->dec)); +} + +static PyObject * +_Dec_mpd_to_sci(PyObject *self, PyObject *args) +{ + PyDecObject *a = (PyDecObject *)self; + PyObject *result, *c; + char *s; + + c = dflt_ctx(); + if (!PyArg_ParseTuple(args, "|O", &c)) { + return NULL; + } + CONTEXT_CHECK_VA(c); + + s = mpd_to_sci(a->dec, ((PyDecContextObject *)c)->capitals); + if (s == NULL) { + PyErr_NoMemory(); + return NULL; + } + + result = PyUnicode_FromString(s); + mpd_free(s); + + return result; +} + +static PyObject * +_Dec_mpd_to_eng(PyObject *self, PyObject *args) +{ + PyDecObject *a = (PyDecObject *)self; + PyObject *result, *c; + char *s; + + c = dflt_ctx(); + if (!PyArg_ParseTuple(args, "|O", &c)) { + return NULL; + } + CONTEXT_CHECK_VA(c); + + s = mpd_to_eng(a->dec, ((PyDecContextObject *)c)->capitals); + if (s == NULL) { + PyErr_NoMemory(); + return NULL; + } + + result = PyUnicode_FromString(s); + mpd_free(s); + + return result; +} + +static PyObject * +dec_richcompare(PyObject *v, PyObject *w, int op) +{ + PyDecObject *a = (PyDecObject *)v; + PyDecObject *b; + uint32_t status = 0; + mpd_context_t *ctx; + int r; + + ctx = mpd_ctx(); + CONVERT_BINOP(v, w, &a, &b, ctx); + + r = mpd_qcmp(a->dec, b->dec, &status); + Py_DECREF(a); + Py_DECREF(b); + /* NaNs always signal, except for Py_EQ and Py_NE. */ + if (op != Py_EQ && op != Py_NE && dec_addstatus(ctx, status)) { + return NULL; + } + /* NaN comparison with Py_EQ, Py_NE, or InvalidOperation disabled. */ + if (r == INT_MAX) { + return (op == Py_NE) ? Dec_INCREF_TRUE : Dec_INCREF_FALSE; + } + + switch (op) { + case Py_EQ: + r = (r == 0); + break; + case Py_NE: + r = (r != 0); + break; + case Py_LE: + r = (r <= 0); + break; + case Py_GE: + r = (r >= 0); + break; + case Py_LT: + r = (r == -1); + break; + case Py_GT: + r = (r == 1); + break; + } + + return PyBool_FromLong(r); +} + +/* Always uses the module context */ +static long +dec_hash(PyObject *v) +{ +#if defined(CONFIG_64) + mpd_uint_t data_two64m1[2] = {8446744073709551615ULL, 1ULL}; + mpd_t two64m1 = {MPD_POS|MPD_STATIC|MPD_CONST_DATA, 0, 20, 2, 2, data_two64m1}; +#elif defined(CONFIG_32) + mpd_uint_t data_two64m1[3] = {709551615UL, 446744073UL, 18UL}; + mpd_t two64m1 = {MPD_POS|MPD_STATIC|MPD_CONST_DATA, 0, 20, 3, 2, data_two64m1}; +#else + #error "CONFIG_64 or CONFIG_32 must be defined." +#endif + mpd_uint_t data_ten[1] = {10}; + mpd_t ten = {MPD_POS|MPD_STATIC|MPD_CONST_DATA, 0, 2, 1, 1, data_ten}; + + PyDecObject *a; + PyObject *obj = NULL; + mpd_t *tmp = NULL; + char *cp = NULL; + uint32_t status = 0; + mpd_context_t maxcontext, *ctx; + long result; + + if ((a = dec_alloc()) == NULL) { + PyErr_NoMemory(); + return -1; + } + if (!mpd_qcopy(a->dec, ((PyDecObject *) v)->dec, &status)) { + PyErr_NoMemory(); + result = -1; + goto finish; + } + + if (mpd_isspecial(a->dec)) { + if (mpd_isnan(a->dec)) { + PyErr_SetString(PyExc_TypeError, "cannot hash a NaN value"); + result = -1; + } + else { + if ((obj = dec_str(a)) == NULL) { + result = -1; + goto finish; + } + result = PyObject_Hash(obj); + } + } + else if (mpd_iszero(a->dec)) { + result = 0; + } + else if (mpd_isinteger(a->dec)) { + + mpd_maxcontext(&maxcontext); + ctx = mpd_ctx(); + +#if PY_VERSION_HEX >= 0x02060000 + if ((tmp = mpd_qnew()) == NULL) { + PyErr_NoMemory(); + result = -1; + goto finish; + } + + /* clobbering a function scope object */ + mpd_qround_to_int(a->dec, a->dec, ctx, &status); + mpd_qset_ssize(tmp, a->dec->exp, &maxcontext, &status); + mpd_qpowmod(tmp, &ten, tmp, &two64m1, &maxcontext, &status); + a->dec->exp = 0; + mpd_qmul(a->dec, a->dec, tmp, &maxcontext, &status); + + if (status&MPD_Errors) { + if (dec_addstatus(ctx, status)) { + result = -1; + goto finish; + } + } +#endif + + if ((obj = PyLong_FromDecCtx(a, &maxcontext)) == NULL) { + result = -1; + goto finish; + } + result = PyObject_Hash(obj); + } + else { + mpd_ssize_t tz; + mpd_ssize_t exp; + int sign; + + mpd_maxcontext(&maxcontext); + tz = mpd_trail_zeros(a->dec); + exp = a->dec->exp + a->dec->digits; + sign = mpd_sign(a->dec); + + mpd_qshiftr_inplace(a->dec, tz); + a->dec->exp = 0; + a->dec->flags = MPD_POS; + + cp = mpd_to_sci(a->dec, 1); + if ((obj = Py_BuildValue("(i"CONV_mpd_ssize_t"s)", sign, exp, cp)) == NULL) { + result = -1; + goto finish; + } + result = PyObject_Hash(obj); + } + + +finish: + Py_DECREF(a); + if (obj) {Py_DECREF(obj);} + if (tmp) mpd_del(tmp); + if (cp) mpd_free(cp); + return result; +} + +static PyObject * +dec_reduce(PyObject *self, PyObject *dummy UNUSED) +{ + PyObject *newob, *mpd_str; + + if ((mpd_str = dec_str((PyDecObject *)self)) == NULL) { + return NULL; + } + + newob = Py_BuildValue("O(N)", Py_TYPE(self), mpd_str); + + return newob; +} + +static PyNumberMethods dec_number_methods = +{ + (binaryfunc) _Dec_mpd_qadd, + (binaryfunc) _Dec_mpd_qsub, + (binaryfunc) _Dec_mpd_qmul, + (binaryfunc) _Dec_mpd_qrem, + (binaryfunc) _Dec_mpd_qdivmod, + (ternaryfunc) _Dec_mpd_qpow, + (unaryfunc) _Dec_mpd_qminus, + (unaryfunc) _Dec_mpd_qplus, + (unaryfunc) _Dec_mpd_qabs, + (inquiry) _Dec_nonzero, + (unaryfunc) 0, /* no bit-complement */ + (binaryfunc) 0, /* no shiftl */ + (binaryfunc) 0, /* no shiftr */ + (binaryfunc) 0, /* no bit-and */ + (binaryfunc) 0, /* no bit-xor */ + (binaryfunc) 0, /* no bit-ior */ + (unaryfunc) PyLong_FromDec, + 0, /* nb_reserved */ + (unaryfunc) PyFloat_FromDec, + 0, /* binaryfunc nb_inplace_add; */ + 0, /* binaryfunc nb_inplace_subtract; */ + 0, /* binaryfunc nb_inplace_multiply; */ + 0, /* binaryfunc nb_inplace_remainder; */ + 0, /* ternaryfunc nb_inplace_power; */ + 0, /* binaryfunc nb_inplace_lshift; */ + 0, /* binaryfunc nb_inplace_rshift; */ + 0, /* binaryfunc nb_inplace_and; */ + 0, /* binaryfunc nb_inplace_xor; */ + 0, /* binaryfunc nb_inplace_or; */ + (binaryfunc) _Dec_mpd_qdivint, /* binaryfunc nb_floor_divide; */ + (binaryfunc) _Dec_mpd_qdiv, /* binaryfunc nb_true_divide; */ + 0, /* binaryfunc nb_inplace_floor_divide; */ + 0, /* binaryfunc nb_inplace_true_divide; */ +}; + +static PyMethodDef dec_methods [] = +{ + /* Unary arithmetic functions */ + { "abs", _DecOpt_mpd_qabs, METH_VARARGS, doc_abs }, + { "exp", _DecOpt_mpd_qexp, METH_VARARGS, doc_exp }, + { "invroot", _DecOpt_mpd_qinvroot, METH_VARARGS, doc_invroot }, + { "ln", _DecOpt_mpd_qln, METH_VARARGS, doc_ln }, + { "log10", _DecOpt_mpd_qlog10, METH_VARARGS, doc_log10 }, + { "minus", _DecOpt_mpd_qminus, METH_VARARGS, doc_minus }, + { "next_minus", _DecOpt_mpd_qnext_minus, METH_VARARGS, doc_next_minus }, + { "next_plus", _DecOpt_mpd_qnext_plus, METH_VARARGS, doc_next_plus }, + { "normalize", _DecOpt_mpd_qreduce, METH_VARARGS, doc_normalize }, /* alias for reduce */ + { "plus", _DecOpt_mpd_qplus, METH_VARARGS, doc_plus }, + { "reduce", _DecOpt_mpd_qreduce, METH_VARARGS, doc_reduce }, + { "to_integral", (PyCFunction)PyDec_ToIntegralValue, METH_VARARGS|METH_KEYWORDS, doc_to_integral }, + { "to_integral_exact", (PyCFunction)PyDec_ToIntegralExact, METH_VARARGS|METH_KEYWORDS, doc_to_integral_exact }, + { "to_integral_value", (PyCFunction)PyDec_ToIntegralValue, METH_VARARGS|METH_KEYWORDS, doc_to_integral_value }, + { "sqrt", _DecOpt_mpd_qsqrt, METH_VARARGS, doc_sqrt }, + + /* Binary arithmetic functions */ + { "add", _DecOpt_mpd_qadd, METH_VARARGS, doc_add }, + { "compare", _DecOpt_mpd_qcompare, METH_VARARGS, doc_compare }, + { "compare_signal", _DecOpt_mpd_qcompare_signal, METH_VARARGS, doc_compare_signal }, + { "div", _DecOpt_mpd_qdiv, METH_VARARGS, doc_div }, /* alias for divide */ + { "divide", _DecOpt_mpd_qdiv, METH_VARARGS, doc_divide }, + { "divide_int", _DecOpt_mpd_qdivint, METH_VARARGS, doc_divide_int }, + { "divint", _DecOpt_mpd_qdivint, METH_VARARGS, doc_divint }, /* alias for divide_int */ + { "divmod", _DecOpt_mpd_qdivmod, METH_VARARGS, doc_divmod }, + { "max", _DecOpt_mpd_qmax, METH_VARARGS, doc_max }, + { "max_mag", _DecOpt_mpd_qmax_mag, METH_VARARGS, doc_max_mag }, + { "min", _DecOpt_mpd_qmin, METH_VARARGS, doc_min }, + { "min_mag", _DecOpt_mpd_qmin_mag, METH_VARARGS, doc_min_mag }, + { "mul", _DecOpt_mpd_qmul, METH_VARARGS, doc_mul }, /* alias for multiply */ + { "multiply", _DecOpt_mpd_qmul, METH_VARARGS, doc_multiply }, + { "next_toward", _DecOpt_mpd_qnext_toward, METH_VARARGS, doc_next_toward }, + { "pow", _DecOpt_mpd_qpow, METH_VARARGS, doc_pow }, /* alias for power */ + { "power", _DecOpt_mpd_qpow, METH_VARARGS, doc_power }, + { "quantize", _DecOpt_mpd_qquantize, METH_VARARGS, doc_quantize }, + { "rem", _DecOpt_mpd_qrem, METH_VARARGS, doc_rem }, /* alias for remainder */ + { "remainder", _DecOpt_mpd_qrem, METH_VARARGS, doc_remainder }, + { "remainder_near", _DecOpt_mpd_qrem_near, METH_VARARGS, doc_remainder_near }, + { "sub", _DecOpt_mpd_qsub, METH_VARARGS, doc_sub }, /* alias for subtract */ + { "subtract", _DecOpt_mpd_qsub, METH_VARARGS, doc_subtract }, + + /* Ternary arithmetic functions */ + { "fma", _DecOpt_mpd_qfma, METH_VARARGS, doc_fma }, + { "powmod", _DecOpt_mpd_qpowmod, METH_VARARGS, doc_powmod }, + + /* Boolean functions, no context arg */ + { "is_canonical", _Dec_CFunc_mpd_iscanonical, METH_NOARGS, doc_is_canonical }, + { "is_finite", _Dec_CFunc_mpd_isfinite, METH_NOARGS, doc_is_finite }, + { "is_infinite", _Dec_CFunc_mpd_isinfinite, METH_NOARGS, doc_is_infinite }, + { "is_integer", _Dec_CFunc_mpd_isinteger, METH_NOARGS, doc_is_integer }, + { "is_nan", _Dec_CFunc_mpd_isnan, METH_NOARGS, doc_is_nan }, + { "is_qnan", _Dec_CFunc_mpd_isqnan, METH_NOARGS, doc_is_qnan }, + { "is_snan", _Dec_CFunc_mpd_issnan, METH_NOARGS, doc_is_snan }, + { "is_signed", _Dec_CFunc_mpd_issigned, METH_NOARGS, doc_is_signed }, + { "is_special", _Dec_CFunc_mpd_isspecial, METH_NOARGS, doc_is_special }, + { "is_zero", _Dec_CFunc_mpd_iszero, METH_NOARGS, doc_is_zero }, + + /* Boolean functions, optional context arg */ + { "is_normal", _DecOpt_mpd_isnormal, METH_VARARGS, doc_is_normal }, + { "is_subnormal", _DecOpt_mpd_issubnormal, METH_VARARGS, doc_is_subnormal }, + + /* Unary functions, no context arg */ + { "adjusted", _Dec_mpd_adjexp, METH_NOARGS, doc_adjusted }, + { "canonical", _Dec_canonical, METH_NOARGS, doc_canonical }, + { "copy_abs", _Dec_mpd_qcopy_abs, METH_NOARGS, doc_copy_abs }, + { "copy_negate", _Dec_mpd_qcopy_negate, METH_NOARGS, doc_copy_negate }, + { "radix", _Dec_mpd_radix, METH_NOARGS, doc_radix }, + { "sign", _Dec_mpd_sign, METH_NOARGS, doc_sign }, + + /* Unary functions, optional context arg */ + { "apply", PyDec_Apply, METH_VARARGS, doc_apply }, + { "logb", _DecOpt_mpd_qlogb, METH_VARARGS, doc_logb }, + { "logical_invert", _DecOpt_mpd_qinvert, METH_VARARGS, doc_logical_invert }, + { "number_class", _DecOpt_mpd_class, METH_VARARGS, doc_number_class }, + { "to_sci", _Dec_mpd_to_sci, METH_VARARGS, doc_to_sci }, /* alias for to_sci_string */ + { "to_sci_string", _Dec_mpd_to_sci, METH_VARARGS, doc_to_sci_string }, + { "to_eng", _Dec_mpd_to_eng, METH_VARARGS, doc_to_eng }, /* alias for to_eng_string */ + { "to_eng_string", _Dec_mpd_to_eng, METH_VARARGS, doc_to_eng_string }, + + /* Binary functions, optional context arg */ + { "compare_total", _DecOpt_mpd_compare_total, METH_VARARGS, doc_compare_total }, + { "compare_total_mag", _DecOpt_mpd_compare_total_mag, METH_VARARGS, doc_compare_total_mag }, + { "copy_sign", _Dec_mpd_qcopy_sign, METH_O, doc_copy_sign }, + { "logical_and", _DecOpt_mpd_qand, METH_VARARGS, doc_logical_and }, + { "logical_or", _DecOpt_mpd_qor, METH_VARARGS, doc_logical_or }, + { "logical_xor", _DecOpt_mpd_qxor, METH_VARARGS, doc_logical_xor }, + { "rotate", _DecOpt_mpd_qrotate, METH_VARARGS, doc_rotate }, + { "same_quantum", _Dec_mpd_same_quantum, METH_VARARGS, doc_same_quantum }, + { "scaleb", _DecOpt_mpd_qscaleb, METH_VARARGS, doc_scaleb }, + { "shift", _DecOpt_mpd_qshift, METH_VARARGS, doc_shift }, + + /* Miscellaneous */ + { "from_float", _PyDec_FromFloat_Max, METH_O|METH_CLASS, doc_from_float }, + { "as_tuple", PyDec_AsTuple, METH_NOARGS, doc_as_tuple }, + + /* Generic stuff */ + { "__copy__", dec_copy, METH_NOARGS, NULL }, + { "__deepcopy__", dec_copy, METH_VARARGS, NULL }, + { "__format__", dec_format, METH_VARARGS, NULL }, + { "__reduce__", dec_reduce, METH_NOARGS, NULL }, + { "__round__", PyDec_Round, METH_VARARGS, NULL }, + { "__trunc__", PyDec_Trunc, METH_NOARGS, NULL }, + + { NULL, NULL, 1 } +}; + +static PyTypeObject PyDec_Type = +{ + PyVarObject_HEAD_INIT(NULL, 0) + "cdecimal.Decimal", /* tp_name */ + sizeof(PyDecObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor) dec_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + (getattrfunc) 0, /* tp_getattr */ + (setattrfunc) 0, /* tp_setattr */ + 0, /* tp_reserved */ + (reprfunc) dec_repr, /* tp_repr */ + &dec_number_methods, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + (hashfunc) dec_hash, /* tp_hash */ + 0, /* tp_call */ + (reprfunc) dec_str, /* tp_str */ + (getattrofunc) PyObject_GenericGetAttr, /* tp_getattro */ + (setattrofunc) 0, /* tp_setattro */ + (PyBufferProcs *) 0, /* tp_as_buffer */ + (Py_TPFLAGS_DEFAULT| + Py_TPFLAGS_BASETYPE), /* tp_flags */ + doc_decimal, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + dec_richcompare, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + dec_methods, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + dec_new, /* tp_new */ + PyObject_Del, /* tp_free */ +}; + + +/******************************************************************************/ +/* Context Object, Part 2 */ +/******************************************************************************/ + + +/************************************************************************/ +/* Macros for converting mpdecimal functions to Context methods */ +/************************************************************************/ + +/* + * Operand is PyObject that must be convertible to a PyDecObject. + * MPDFUNC uses a const context and does not raise. + */ +#define _DecCtx_BoolFunc(MPDFUNC) \ +static PyObject * \ +_DecCtx_##MPDFUNC(PyObject *self, PyObject *v) \ +{ \ + PyObject *ret; \ + PyDecObject *a; \ + mpd_context_t *ctx; \ + \ + ctx = CtxAddr(self); \ + CONVERT_OP(v, &a, ctx); \ + \ + ret = MPDFUNC(a->dec, ctx) ? Dec_INCREF_TRUE : Dec_INCREF_FALSE; \ + Py_DECREF(a); \ + return ret; \ +} + +/* + * Operand is PyObject that must be convertible to a PyDecObject. + * MPDFUNC does NOT use a context and does not raise. + */ +#define _DecCtx_BoolFunc_NoCtx(MPDFUNC) \ +static PyObject * \ +_DecCtx_##MPDFUNC(PyObject *self, PyObject *v) \ +{ \ + PyObject *ret; \ + PyDecObject *a; \ + mpd_context_t *ctx; \ + \ + ctx = CtxAddr(self); \ + CONVERT_OP(v, &a, ctx); \ + \ + ret = MPDFUNC(a->dec) ? Dec_INCREF_TRUE : Dec_INCREF_FALSE; \ + Py_DECREF(a); \ + return ret; \ +} + +/* + * Operand is PyObject that must be convertible to a PyDecObject. + * MPDFUNC is a quiet function. + */ +#define _DecCtx_UnaryFunc(MPDFUNC) \ +static PyObject * \ +_DecCtx_##MPDFUNC(PyObject *self, PyObject *v) \ +{ \ + PyDecObject *result, *a; \ + mpd_context_t *ctx; \ + uint32_t status = 0; \ + \ + ctx = CtxAddr(self); \ + CONVERT_OP(v, &a, ctx); \ + \ + if ((result = dec_alloc()) == NULL) { \ + Py_DECREF(a); \ + return NULL; \ + } \ + \ + MPDFUNC(result->dec, a->dec, ctx, &status); \ + Py_DECREF(a); \ + if (dec_addstatus(ctx, status)) { \ + Py_DECREF(result); \ + return NULL; \ + } \ + \ + return (PyObject *) result; \ +} + +/* + * Operands are PyObjects that must be convertible to PyDecObjects. + * MPDFUNC is a quiet function. + */ +#define _DecCtx_BinaryFunc(MPDFUNC) \ +static PyObject * \ +_DecCtx_##MPDFUNC(PyObject *self, PyObject *args) \ +{ \ + PyObject *v, *w; \ + PyDecObject *a, *b; \ + PyDecObject *result; \ + uint32_t status = 0; \ + mpd_context_t *ctx; \ + \ + if (!PyArg_ParseTuple(args, "OO", &v, &w)) { \ + return NULL; \ + } \ + \ + ctx = CtxAddr(self); \ + CONVERT_BINOP_SET(v, w, &a, &b, ctx); \ + \ + if ((result = dec_alloc()) == NULL) { \ + Py_DECREF(a); \ + Py_DECREF(b); \ + return NULL; \ + } \ + \ + MPDFUNC(result->dec, a->dec, b->dec, ctx, &status); \ + Py_DECREF(a); \ + Py_DECREF(b); \ + if (dec_addstatus(ctx, status)) { \ + Py_DECREF(result); \ + return NULL; \ + } \ + \ + return (PyObject *) result; \ +} + +/* + * Operands are Python Objects. Actual MPDFUNC does NOT take a context. + * Uses context for conversion only. + */ +#define _DecCtx_BinaryFunc_NoCtx(MPDFUNC) \ +static PyObject * \ +_DecCtx_##MPDFUNC(PyObject *self, PyObject *args) \ +{ \ + PyObject *v, *w; \ + PyDecObject *a, *b; \ + PyDecObject *result; \ + mpd_context_t *ctx; \ + \ + if (!PyArg_ParseTuple(args, "OO", &v, &w)) { \ + return NULL; \ + } \ + \ + ctx = CtxAddr(self); \ + CONVERT_BINOP_SET(v, w, &a, &b, ctx); \ + \ + if ((result = dec_alloc()) == NULL) { \ + Py_DECREF(a); \ + Py_DECREF(b); \ + return NULL; \ + } \ + \ + MPDFUNC(result->dec, a->dec, b->dec); \ + Py_DECREF(a); \ + Py_DECREF(b); \ + \ + return (PyObject *) result; \ +} + +/* Operands are Python Objects. MPDFUNC is a quiet function. */ +#define _DecCtx_TernaryFunc(MPDFUNC) \ +static PyObject * \ +_DecCtx_##MPDFUNC(PyObject *self, PyObject *args) \ +{ \ + PyObject *v, *w, *x; \ + PyDecObject *a, *b, *c; \ + PyDecObject *result; \ + uint32_t status = 0; \ + mpd_context_t *ctx; \ + \ + if (!PyArg_ParseTuple(args, "OOO", &v, &w, &x)) { \ + return NULL; \ + } \ + \ + ctx = CtxAddr(self); \ + CONVERT_TERNOP_SET(v, w, x, &a, &b, &c, ctx); \ + \ + if ((result = dec_alloc()) == NULL) { \ + Py_DECREF(a); \ + Py_DECREF(b); \ + Py_DECREF(c); \ + return NULL; \ + } \ + \ + MPDFUNC(result->dec, a->dec, b->dec, c->dec, ctx, &status); \ + Py_DECREF(a); \ + Py_DECREF(b); \ + Py_DECREF(c); \ + if (dec_addstatus(ctx, status)) { \ + Py_DECREF(result); \ + return NULL; \ + } \ + \ + return (PyObject *) result; \ +} + +static PyObject * +_DecCtx_copy_decimal(PyObject *self UNUSED, PyObject *v) +{ + if (!PyDec_Check(v)) { + PyErr_SetString(PyExc_TypeError, "argument must be a Decimal"); + return NULL; + } + + Py_INCREF(v); + return v; +} + +/* Arithmetic operations */ +_DecCtx_UnaryFunc(mpd_qabs) +_DecCtx_UnaryFunc(mpd_qexp) +_DecCtx_UnaryFunc(mpd_qinvroot) +_DecCtx_UnaryFunc(mpd_qln) +_DecCtx_UnaryFunc(mpd_qlog10) +_DecCtx_UnaryFunc(mpd_qminus) +_DecCtx_UnaryFunc(mpd_qnext_minus) +_DecCtx_UnaryFunc(mpd_qnext_plus) +_DecCtx_UnaryFunc(mpd_qplus) +_DecCtx_UnaryFunc(mpd_qreduce) +_DecCtx_UnaryFunc(mpd_qsqrt) + +_DecCtx_BinaryFunc(mpd_qadd) +_DecCtx_BinaryFunc(mpd_qcompare) +_DecCtx_BinaryFunc(mpd_qcompare_signal) +_DecCtx_BinaryFunc(mpd_qdiv) +_DecCtx_BinaryFunc(mpd_qdivint) +_DecCtx_BinaryFunc(mpd_qmax) +_DecCtx_BinaryFunc(mpd_qmax_mag) +_DecCtx_BinaryFunc(mpd_qmin) +_DecCtx_BinaryFunc(mpd_qmin_mag) +_DecCtx_BinaryFunc(mpd_qmul) +_DecCtx_BinaryFunc(mpd_qnext_toward) +_DecCtx_BinaryFunc(mpd_qpow) +_DecCtx_BinaryFunc(mpd_qquantize) +_DecCtx_BinaryFunc(mpd_qrem) +_DecCtx_BinaryFunc(mpd_qrem_near) +_DecCtx_BinaryFunc(mpd_qsub) + +_DecCtx_TernaryFunc(mpd_qfma) +_DecCtx_TernaryFunc(mpd_qpowmod) + +/* Miscellaneous */ +_DecCtx_BoolFunc(mpd_isnormal) +_DecCtx_BoolFunc(mpd_issubnormal) +_DecCtx_BoolFunc_NoCtx(mpd_iscanonical) +_DecCtx_BoolFunc_NoCtx(mpd_isfinite) +_DecCtx_BoolFunc_NoCtx(mpd_isinfinite) +_DecCtx_BoolFunc_NoCtx(mpd_isnan) +_DecCtx_BoolFunc_NoCtx(mpd_isqnan) +_DecCtx_BoolFunc_NoCtx(mpd_issigned) +_DecCtx_BoolFunc_NoCtx(mpd_issnan) +_DecCtx_BoolFunc_NoCtx(mpd_iszero) + + +static PyObject * +_DecCtx_mpd_qcopy_abs(PyObject *self, PyObject *v) +{ + PyDecObject *result, *a; + uint32_t status = 0; + mpd_context_t *ctx; + + ctx = CtxAddr(self); + CONVERT_OP(v, &a, ctx); + + if ((result = dec_alloc()) == NULL) { + Py_DECREF(a); + return NULL; + } + + mpd_qcopy_abs(result->dec, a->dec, &status); + Py_DECREF(a); + if (dec_addstatus(ctx, status)) { + Py_DECREF(result); + return NULL; + } + + return (PyObject *) result; +} + +static PyObject * +_DecCtx_mpd_qcopy_negate(PyObject *self, PyObject *v) +{ + PyDecObject *result, *a; + uint32_t status = 0; + mpd_context_t *ctx; + + ctx = CtxAddr(self); + CONVERT_OP(v, &a, ctx); + + if ((result = dec_alloc()) == NULL) { + Py_DECREF(a); + return NULL; + } + + mpd_qcopy_negate(result->dec, a->dec, &status); + Py_DECREF(a); + if (dec_addstatus(ctx, status)) { + Py_DECREF(result); + return NULL; + } + + return (PyObject *) result; +} + +_DecCtx_UnaryFunc(mpd_qinvert) +_DecCtx_UnaryFunc(mpd_qlogb) + +_DecCtx_BinaryFunc_NoCtx(mpd_compare_total) +_DecCtx_BinaryFunc_NoCtx(mpd_compare_total_mag) + +static PyObject * +_DecCtx_mpd_qcopy_sign(PyObject *self, PyObject *args) +{ + PyObject *v, *w; + PyDecObject *a, *b; + PyDecObject *result; + uint32_t status = 0; + mpd_context_t *ctx; + + if (!PyArg_ParseTuple(args, "OO", &v, &w)) { + return NULL; + } + + ctx = CtxAddr(self); + CONVERT_BINOP(v, w, &a, &b, ctx); + + if ((result = dec_alloc()) == NULL) { + Py_DECREF(a); + Py_DECREF(b); + return NULL; + } + + mpd_qcopy_sign(result->dec, a->dec, b->dec, &status); + Py_DECREF(a); + Py_DECREF(b); + if (dec_addstatus(ctx, status)) { + Py_DECREF(result); + return NULL; + } + + return (PyObject *) result; +} + +_DecCtx_BinaryFunc(mpd_qand) +_DecCtx_BinaryFunc(mpd_qor) +_DecCtx_BinaryFunc(mpd_qxor) + +_DecCtx_BinaryFunc(mpd_qrotate) +_DecCtx_BinaryFunc(mpd_qscaleb) +_DecCtx_BinaryFunc(mpd_qshift) + +static PyObject * +_DecCtx_canonical(PyObject *self UNUSED, PyObject *v) +{ + if (!PyDec_Check(v)) { + PyErr_SetString(PyExc_ValueError, "argument must be a Decimal"); + return NULL; + } + + Py_INCREF(v); + return v; +} + +static PyObject * +_DecCtx_mpd_class(PyObject *self, PyObject *v) +{ + mpd_context_t *ctx; + const char *cp; + + if (!PyDec_Check(v)) { + PyErr_SetString(PyExc_ValueError, "argument must be a Decimal"); + return NULL; + } + ctx = CtxAddr(self); + + cp = mpd_class(DecAddr(v), ctx); + return Py_BuildValue("s", cp); +} + +static PyObject * +_DecCtx_mpd_qdivmod(PyObject *self, PyObject *args) +{ + PyObject *v, *w; + PyDecObject *a, *b; + PyDecObject *q, *r; + uint32_t status = 0; + mpd_context_t *ctx; + + if (!PyArg_ParseTuple(args, "OO", &v, &w)) { + return NULL; + } + + ctx = CtxAddr(self); + CONVERT_BINOP_SET(v, w, &a, &b, ctx); + + if ((q = dec_alloc()) == NULL) { + Py_DECREF(a); + Py_DECREF(b); + return NULL; + } + if ((r = dec_alloc()) == NULL) { + Py_DECREF(a); + Py_DECREF(b); + Py_DECREF(q); + return NULL; + } + + mpd_qdivmod(q->dec, r->dec, a->dec, b->dec, ctx, &status); + Py_DECREF(a); + Py_DECREF(b); + if (dec_addstatus(ctx, status)) { + Py_DECREF(r); + Py_DECREF(q); + return NULL; + } + + return Py_BuildValue("(NN)", q, r); +} + +static PyObject * +_DecCtx_mpd_to_sci(PyObject *self, PyObject *v) +{ + PyObject *result; + char *s; + + if (!PyDec_Check(v)) { + PyErr_SetString(PyExc_TypeError, "argument must be a Decimal"); + return NULL; + } + + s = mpd_to_sci(((PyDecObject *)v)->dec, + ((PyDecContextObject *)self)->capitals); + if (s == NULL) { + PyErr_NoMemory(); + return NULL; + } + + result = PyUnicode_FromString(s); + mpd_free(s); + + return result; +} + +static PyObject * +_DecCtx_mpd_to_eng(PyObject *self, PyObject *v) +{ + PyObject *result; + char *s; + + if (!PyDec_Check(v)) { + PyErr_SetString(PyExc_TypeError, "argument must be a Decimal"); + return NULL; + } + + s = mpd_to_eng(((PyDecObject *)v)->dec, + ((PyDecContextObject *)self)->capitals); + if (s == NULL) { + PyErr_NoMemory(); + return NULL; + } + + result = PyUnicode_FromString(s); + mpd_free(s); + + return result; +} + +static PyObject * +_DecCtx_mpd_radix(PyObject *self UNUSED, PyObject *dummy UNUSED) +{ + return Py_BuildValue("i", 10); +} + +static PyObject * +_DecCtx_mpd_same_quantum(PyObject *self, PyObject *args) +{ + PyObject *v, *w; + PyDecObject *a, *b; + PyObject *result; + mpd_context_t *ctx; + + if (!PyArg_ParseTuple(args, "OO", &v, &w)) { + return NULL; + } + + ctx = CtxAddr(self); + CONVERT_BINOP_SET(v, w, &a, &b, ctx); + + result = mpd_same_quantum(a->dec, b->dec) ? Dec_INCREF_TRUE : Dec_INCREF_FALSE; + Py_DECREF(a); + Py_DECREF(b); + + return result; +} + +static PyObject * +PyDecContext_ToIntegralValue(PyObject *self, PyObject *a) +{ + PyDecObject *result; + mpd_context_t *ctx; + uint32_t status = 0; + + if (!PyDec_Check(a)) { + PyErr_SetString(PyExc_ValueError, "argument must be a Decimal"); + return NULL; + } + if ((result = dec_alloc()) == NULL) { + return NULL; + } + + ctx = CtxAddr(self); + + mpd_qround_to_int(result->dec, DecAddr(a), ctx, &status); + if (dec_addstatus(ctx, status)) { + Py_DECREF(result); + return NULL; + } + + return (PyObject *)result; +} + +static PyObject * +PyDecContext_ToIntegralExact(PyObject *self, PyObject *a) +{ + PyDecObject *result; + mpd_context_t *ctx; + uint32_t status = 0; + + if (!PyDec_Check(a)) { + PyErr_SetString(PyExc_ValueError, "argument must be a Decimal"); + return NULL; + } + if ((result = dec_alloc()) == NULL) { + return NULL; + } + + ctx = CtxAddr(self); + + mpd_qround_to_intx(result->dec, DecAddr(a), ctx, &status); + if (dec_addstatus(ctx, status)) { + Py_DECREF(result); + return NULL; + } + + return (PyObject *)result; +} + + +static PyMethodDef context_methods [] = +{ + /* Unary arithmetic functions */ + { "abs", _DecCtx_mpd_qabs, METH_O, doc_ctx_abs }, + { "exp", _DecCtx_mpd_qexp, METH_O, doc_ctx_exp }, + { "invroot", _DecCtx_mpd_qinvroot, METH_O, doc_ctx_invroot }, + { "ln", _DecCtx_mpd_qln, METH_O, doc_ctx_ln }, + { "log10", _DecCtx_mpd_qlog10, METH_O, doc_ctx_log10 }, + { "minus", _DecCtx_mpd_qminus, METH_O, doc_ctx_minus }, + { "next_minus", _DecCtx_mpd_qnext_minus, METH_O, doc_ctx_next_minus }, + { "next_plus", _DecCtx_mpd_qnext_plus, METH_O, doc_ctx_next_plus }, + { "normalize", _DecCtx_mpd_qreduce, METH_O, doc_ctx_normalize }, /* alias for reduce */ + { "plus", _DecCtx_mpd_qplus, METH_O, doc_ctx_plus }, + { "reduce", _DecCtx_mpd_qreduce, METH_O, doc_ctx_reduce }, + { "to_integral", PyDecContext_ToIntegralValue, METH_O, doc_ctx_to_integral }, + { "to_integral_exact", PyDecContext_ToIntegralExact, METH_O, doc_ctx_to_integral_exact }, + { "to_integral_value", PyDecContext_ToIntegralValue, METH_O, doc_ctx_to_integral_value }, + { "sqrt", _DecCtx_mpd_qsqrt, METH_O, doc_ctx_sqrt }, + + /* Binary arithmetic functions */ + { "add", _DecCtx_mpd_qadd, METH_VARARGS, doc_ctx_add }, + { "compare", _DecCtx_mpd_qcompare, METH_VARARGS, doc_ctx_compare }, + { "compare_signal", _DecCtx_mpd_qcompare_signal, METH_VARARGS, doc_ctx_compare_signal }, + { "div", _DecCtx_mpd_qdiv, METH_VARARGS, doc_ctx_div }, /* alias for divide */ + { "divide", _DecCtx_mpd_qdiv, METH_VARARGS, doc_ctx_divide }, + { "divide_int", _DecCtx_mpd_qdivint, METH_VARARGS, doc_ctx_divide_int }, + { "divint", _DecCtx_mpd_qdivint, METH_VARARGS, doc_ctx_divint }, /* alias for divide_int */ + { "divmod", _DecCtx_mpd_qdivmod, METH_VARARGS, doc_ctx_divmod }, + { "max", _DecCtx_mpd_qmax, METH_VARARGS, doc_ctx_max }, + { "max_mag", _DecCtx_mpd_qmax_mag, METH_VARARGS, doc_ctx_max_mag }, + { "min", _DecCtx_mpd_qmin, METH_VARARGS, doc_ctx_min }, + { "min_mag", _DecCtx_mpd_qmin_mag, METH_VARARGS, doc_ctx_min_mag }, + { "mul", _DecCtx_mpd_qmul, METH_VARARGS, doc_ctx_mul }, /* alias for multiply */ + { "multiply", _DecCtx_mpd_qmul, METH_VARARGS, doc_ctx_multiply }, + { "next_toward", _DecCtx_mpd_qnext_toward, METH_VARARGS, doc_ctx_next_toward }, + { "pow", _DecCtx_mpd_qpow, METH_VARARGS, doc_ctx_pow }, /* alias for power */ + { "power", _DecCtx_mpd_qpow, METH_VARARGS, doc_ctx_power }, + { "quantize", _DecCtx_mpd_qquantize, METH_VARARGS, doc_ctx_quantize }, + { "rem", _DecCtx_mpd_qrem, METH_VARARGS, doc_ctx_rem }, /* alias for remainder */ + { "remainder", _DecCtx_mpd_qrem, METH_VARARGS, doc_ctx_remainder }, + { "remainder_near", _DecCtx_mpd_qrem_near, METH_VARARGS, doc_ctx_remainder_near }, + { "sub", _DecCtx_mpd_qsub, METH_VARARGS, doc_ctx_sub }, /* alias for subtract */ + { "subtract", _DecCtx_mpd_qsub, METH_VARARGS, doc_ctx_subtract }, + + /* Ternary arithmetic functions */ + { "fma", _DecCtx_mpd_qfma, METH_VARARGS, doc_ctx_fma }, + { "powmod", _DecCtx_mpd_qpowmod, METH_VARARGS, doc_ctx_powmod }, + + /* No argument */ + { "Etiny", context_getetiny, METH_NOARGS, doc_ctx_Etiny }, + { "Etop", context_getetop, METH_NOARGS, doc_ctx_Etop }, + { "radix", _DecCtx_mpd_radix, METH_NOARGS, doc_ctx_radix }, + + /* Boolean functions */ + { "is_canonical", _DecCtx_mpd_iscanonical, METH_O, doc_ctx_is_canonical }, + { "is_finite", _DecCtx_mpd_isfinite, METH_O, doc_ctx_is_finite }, + { "is_infinite", _DecCtx_mpd_isinfinite, METH_O, doc_ctx_is_infinite }, + { "is_nan", _DecCtx_mpd_isnan, METH_O, doc_ctx_is_nan }, + { "is_normal", _DecCtx_mpd_isnormal, METH_O, doc_ctx_is_normal }, + { "is_qnan", _DecCtx_mpd_isqnan, METH_O, doc_ctx_is_qnan }, + { "is_signed", _DecCtx_mpd_issigned, METH_O, doc_ctx_is_signed }, + { "is_snan", _DecCtx_mpd_issnan, METH_O, doc_ctx_is_snan }, + { "is_subnormal", _DecCtx_mpd_issubnormal, METH_O, doc_ctx_is_subnormal }, + { "is_zero", _DecCtx_mpd_iszero, METH_O, doc_ctx_is_zero }, + + /* Functions with a single decimal argument */ + { "_apply", PyDecContext_Apply, METH_O, NULL }, /* alias for apply */ + { "apply", PyDecContext_Apply, METH_O, doc_ctx_apply }, + { "canonical", _DecCtx_canonical, METH_O, doc_ctx_canonical }, + { "copy_abs", _DecCtx_mpd_qcopy_abs, METH_O, doc_ctx_copy_abs }, + { "copy_decimal", _DecCtx_copy_decimal, METH_O, doc_ctx_copy_decimal }, + { "copy_negate", _DecCtx_mpd_qcopy_negate, METH_O, doc_ctx_copy_negate }, + { "logb", _DecCtx_mpd_qlogb, METH_O, doc_ctx_logb }, + { "logical_invert", _DecCtx_mpd_qinvert, METH_O, doc_ctx_logical_invert }, + { "number_class", _DecCtx_mpd_class, METH_O, doc_ctx_number_class }, + { "to_sci", _DecCtx_mpd_to_sci, METH_O, doc_ctx_to_sci }, /* alias for to_sci_string */ + { "to_sci_string", _DecCtx_mpd_to_sci, METH_O, doc_ctx_to_sci_string }, + { "to_eng", _DecCtx_mpd_to_eng, METH_O, doc_ctx_to_eng }, /* alias for to_eng_string */ + { "to_eng_string", _DecCtx_mpd_to_eng, METH_O, doc_ctx_to_eng_string }, + + /* Functions with two decimal arguments */ + { "compare_total", _DecCtx_mpd_compare_total, METH_VARARGS, doc_ctx_compare_total }, + { "compare_total_mag", _DecCtx_mpd_compare_total_mag, METH_VARARGS, doc_ctx_compare_total_mag }, + { "copy_sign", _DecCtx_mpd_qcopy_sign, METH_VARARGS, doc_ctx_copy_sign }, + { "logical_and", _DecCtx_mpd_qand, METH_VARARGS, doc_ctx_logical_and }, + { "logical_or", _DecCtx_mpd_qor, METH_VARARGS, doc_ctx_logical_or }, + { "logical_xor", _DecCtx_mpd_qxor, METH_VARARGS, doc_ctx_logical_xor }, + { "rotate", _DecCtx_mpd_qrotate, METH_VARARGS, doc_ctx_rotate }, + { "same_quantum", _DecCtx_mpd_same_quantum, METH_VARARGS, doc_ctx_same_quantum }, + { "scaleb", _DecCtx_mpd_qscaleb, METH_VARARGS, doc_ctx_scaleb }, + { "shift", _DecCtx_mpd_qshift, METH_VARARGS, doc_ctx_shift }, + + /* Set context values */ + { "setflags", (PyCFunction)context_setstatus_list, METH_O, doc_ctx_setflags }, + { "settraps", (PyCFunction)context_settraps_list, METH_O, doc_ctx_settraps }, + { "clear_flags", context_clear_flags, METH_NOARGS, doc_ctx_clear_flags }, + { "clear_traps", context_clear_traps, METH_NOARGS, doc_ctx_clear_traps }, + + /* Unsafe set functions with no range checks */ + { "unsafe_setprec", (PyCFunction)context_unsafe_setprec, METH_O, NULL }, + { "unsafe_setemin", (PyCFunction)context_unsafe_setemin, METH_O, NULL }, + { "unsafe_setemax", (PyCFunction)context_unsafe_setemax, METH_O, NULL }, + + /* Miscellaneous */ + { "__copy__", (PyCFunction)context_copy, METH_NOARGS, NULL }, + { "__reduce__", context_reduce, METH_NOARGS, NULL }, + { "copy", (PyCFunction)context_copy, METH_NOARGS, doc_ctx_copy }, + { "create_decimal", PyDecContext_CreateDecimal, METH_VARARGS, doc_ctx_create_decimal }, + { "create_decimal_from_float", PyDecContext_FromFloat, METH_O, doc_ctx_create_decimal_from_float }, + + { NULL, NULL, 1 } +}; + +static PyTypeObject PyDecContext_Type = +{ + PyVarObject_HEAD_INIT(NULL, 0) + "cdecimal.Context", /* tp_name */ + sizeof(PyDecContextObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor) context_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + (getattrfunc) 0, /* tp_getattr */ + (setattrfunc) 0, /* tp_setattr */ + 0, /* tp_reserved */ + (reprfunc) context_repr, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + (hashfunc) 0, /* tp_hash */ + 0, /* tp_call */ + (reprfunc) context_repr, /* tp_str */ + (getattrofunc) context_getattr, /* tp_getattro */ + (setattrofunc) context_setattr, /* tp_setattro */ + (PyBufferProcs *) 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + doc_context, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + context_methods, /* tp_methods */ + 0, /* tp_members */ + context_getsets, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + context_init, /* tp_init */ + 0, /* tp_alloc */ + context_new, /* tp_new */ + 0 /* tp_free */ +}; + + +static PyMethodDef cdecimal_methods [] = +{ + { "getcontext", (PyCFunction)PyDec_GetDefaultContext, METH_NOARGS, doc_getcontext}, + { "setcontext", (PyCFunction)PyDec_SetDefaultContext, METH_O, doc_setcontext}, + { "localcontext", (PyCFunction)ctxmanager_new, METH_VARARGS, doc_localcontext}, + { NULL, NULL, 1, NULL } +}; + +static struct PyModuleDef cdecimal_module = { + PyModuleDef_HEAD_INIT, + "cdecimal", + doc_cdecimal, + -1, + cdecimal_methods, + NULL, + NULL, + NULL, + NULL +}; + + +PyMODINIT_FUNC +PyInit_cdecimal(void) +{ + PyObject *m = NULL; + PyObject *_numbers = NULL; + PyObject *_Number = NULL; + PyObject *obj, *ret, *s; + DecCondMap *cm; + + + PyDec_Type.tp_base = &PyBaseObject_Type; + PyDecContext_Type.tp_base = &PyBaseObject_Type; + PyDecSignalDict_Type.tp_base = &PyDict_Type; + PyDecContextManager_Type.tp_base = &PyBaseObject_Type; + + + if (PyType_Ready(&PyDec_Type) < 0) { + goto error; + } + if (PyType_Ready(&PyDecContext_Type) < 0) { + goto error; + } + if (PyType_Ready(&PyDecSignalDict_Type) < 0) { + goto error; + } + if (PyType_Ready(&PyDecContextManager_Type) < 0) { + goto error; + } + + + if ((obj = PyUnicode_FromString("cdecimal")) == NULL) { + goto error; + } + if (PyDict_SetItemString(PyDec_Type.tp_dict, "__module__", obj) < 0) { + Py_DECREF(obj); + goto error; + } + if (PyDict_SetItemString(PyDecContext_Type.tp_dict, "__module__", obj) < 0) { + Py_DECREF(obj); + goto error; + } + Py_DECREF(obj); + + + if ((_numbers = PyImport_ImportModule("numbers")) == NULL) { + goto error; + } + if ((_Number = PyObject_GetAttrString(_numbers, "Number")) == NULL) { + goto error; + } + if ((obj = Py_BuildValue("O", &PyDec_Type)) == NULL) { + goto error; + } + if ((s = Py_BuildValue("s", "register")) == NULL) { + goto error; + } + if ((ret = PyObject_CallMethodObjArgs(_Number, s, obj, NULL)) == NULL) { + Py_DECREF(s); + Py_DECREF(obj); + goto error; + } + Py_DECREF(s); + Py_DECREF(obj); + Py_DECREF(ret); + + +#ifdef USE_THREAD_LOCAL_STORAGE /* not recommended */ +{ + PyObject *_thread; + PyObject *_local; + if ((_thread = PyImport_ImportModule("_thread")) == NULL) { + goto error; + } + if ((_local = PyObject_GetAttrString(_thread, "_local")) == NULL) { + goto error; + } + if ((tls = PyObject_CallObject(_local, NULL)) == NULL) { + Py_DECREF(_thread); + Py_DECREF(_local); + goto error; + } + Py_DECREF(_thread); + Py_DECREF(_local); +} +#endif + + + if ((m = PyModule_Create(&cdecimal_module)) == NULL) { + goto error; + } + + mpd_traphandler = dec_traphandler; + mpd_mallocfunc = PyMem_Malloc; + mpd_reallocfunc = PyMem_Realloc; + mpd_callocfunc = mpd_callocfunc_em; + mpd_free = PyMem_Free; + + Py_INCREF(&PyDec_Type); + PyModule_AddObject(m, "Decimal", (PyObject *)&PyDec_Type); + + Py_INCREF(&PyDecContext_Type); + PyModule_AddObject(m, "Context", (PyObject *)&PyDecContext_Type); + + + /* Top level Exception */ + DecimalException = PyErr_NewException("cdecimal.DecimalException", + PyExc_ArithmeticError, NULL); + Py_INCREF(DecimalException); + PyModule_AddObject(m, "DecimalException", DecimalException); + + /* Exceptions that correspond to IEEE signals */ + for (cm = signal_map; cm->name != NULL; cm++) { + cm->dec_cond = PyErr_NewException((char *)cm->fqname, DecimalException, NULL); + Py_INCREF(cm->dec_cond); + PyModule_AddObject(m, cm->name, cm->dec_cond); + } + + /* + * Unfortunately, InvalidOperation is a signal that comprises + * several conditions, including InvalidOperation! Naming the + * signal IEEEInvalidOperation would prevent the confusion. + */ + cond_map[0].dec_cond = signal_map[0].dec_cond; + + /* Remaining exceptions, inherit from the InvalidOperation */ + for (cm = cond_map+1; cm->name != NULL; cm++) { + cm->dec_cond = PyErr_NewException((char *)cm->fqname, signal_map[0].dec_cond , NULL); + Py_INCREF(cm->dec_cond); + PyModule_AddObject(m, cm->name, cm->dec_cond); + } + + + /* Module default context and template for local and + * thread local contexts */ + module_context = PyObject_CallObject((PyObject *)&PyDecContext_Type, NULL); + if (module_context == NULL) { + goto error; + } + mpd_init(CtxAddr(module_context), 28); + CtxAddr(module_context)->traps &= ~MPD_Underflow; /* XXX */ + Py_INCREF(module_context); + PyModule_AddObject(m, "DefaultContext", (PyObject *)module_context); + + /* Basic context */ + basic_context = PyObject_CallObject((PyObject *)&PyDecContext_Type, NULL); + if (basic_context == NULL) { + goto error; + } + mpd_basiccontext(CtxAddr(basic_context)); + Py_INCREF(basic_context); + PyModule_AddObject(m, "BasicContext", (PyObject *)basic_context); + + /* Extended context */ + ext_context = PyObject_CallObject((PyObject *)&PyDecContext_Type, NULL); + if (ext_context == NULL) { + goto error; + } + mpd_extcontext(CtxAddr(ext_context)); + Py_INCREF(ext_context); + PyModule_AddObject(m, "ExtendedContext", (PyObject *)ext_context); + + + + /* Useful constants */ + PyModule_AddObject(m, "MAX_PREC", Py_BuildValue(CONV_mpd_ssize_t, MPD_MAX_PREC)); + PyModule_AddObject(m, "MAX_EMAX", Py_BuildValue(CONV_mpd_ssize_t, MPD_MAX_EMAX)); + PyModule_AddObject(m, "MIN_EMIN", Py_BuildValue(CONV_mpd_ssize_t, MPD_MIN_EMIN)); + PyModule_AddObject(m, "MIN_ETINY", Py_BuildValue(CONV_mpd_ssize_t, MPD_MIN_ETINY)); + + PyModule_AddIntConstant(m, "ROUND_CEILING", MPD_ROUND_CEILING); + PyModule_AddIntConstant(m, "ROUND_FLOOR", MPD_ROUND_FLOOR); + PyModule_AddIntConstant(m, "ROUND_UP", MPD_ROUND_UP); + PyModule_AddIntConstant(m, "ROUND_DOWN", MPD_ROUND_DOWN); + PyModule_AddIntConstant(m, "ROUND_HALF_UP", MPD_ROUND_HALF_UP); + PyModule_AddIntConstant(m, "ROUND_HALF_DOWN", MPD_ROUND_HALF_DOWN); + PyModule_AddIntConstant(m, "ROUND_HALF_EVEN", MPD_ROUND_HALF_EVEN); + PyModule_AddIntConstant(m, "ROUND_05UP", MPD_ROUND_05UP); + PyModule_AddIntConstant(m, "ROUND_TRUNC", MPD_ROUND_TRUNC); + + /* Expose the C flags */ + PyModule_AddIntConstant(m, "DecClamped", MPD_Clamped); + PyModule_AddIntConstant(m, "DecConversionSyntax", MPD_Conversion_syntax); + PyModule_AddIntConstant(m, "DecDivisionByZero", MPD_Division_by_zero); + PyModule_AddIntConstant(m, "DecDivisionImpossible", MPD_Division_impossible); + PyModule_AddIntConstant(m, "DecDivisionUndefined", MPD_Division_undefined); + PyModule_AddIntConstant(m, "DecFpuError", MPD_Fpu_error); + PyModule_AddIntConstant(m, "DecInexact", MPD_Inexact); + PyModule_AddIntConstant(m, "DecInvalidContext", MPD_Invalid_context); + PyModule_AddIntConstant(m, "DecInvalidOperation", MPD_Invalid_operation); + PyModule_AddIntConstant(m, "DecIEEEInvalidOperation", MPD_IEEE_Invalid_operation); + PyModule_AddIntConstant(m, "DecMallocError", MPD_Malloc_error); + PyModule_AddIntConstant(m, "DecNotImplemented", MPD_Not_implemented); + PyModule_AddIntConstant(m, "DecOverflow", MPD_Overflow); + PyModule_AddIntConstant(m, "DecRounded", MPD_Rounded); + PyModule_AddIntConstant(m, "DecSubnormal", MPD_Subnormal); + PyModule_AddIntConstant(m, "DecUnderflow", MPD_Underflow); + PyModule_AddIntConstant(m, "DecErrors", MPD_Errors); + PyModule_AddIntConstant(m, "DecTraps", MPD_Traps); + + + return m; + + +error: + if (tls) Py_DECREF(tls); + if (_numbers) Py_DECREF(_numbers); + if (_Number) Py_DECREF(_Number); + if (module_context) Py_DECREF(module_context); + if (basic_context) Py_DECREF(basic_context); + if (ext_context) Py_DECREF(ext_context); + if (m) Py_DECREF(m); + + return NULL; +} + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/constants.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/constants.c Thu Jan 7 13:02:51 2010 @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include "mpdecimal.h" +#include "constants.h" + + +#if defined(CONFIG_64) + + /* number-theory.c */ + const mpd_uint_t mpd_moduli[3] = { + 18446744069414584321ULL, 18446744056529682433ULL, 18446742974197923841ULL + }; + const mpd_uint_t mpd_roots[3] = {7ULL, 10ULL, 19ULL}; + + /* crt.c */ + const mpd_uint_t INV_P1_MOD_P2 = 18446744055098026669ULL; + const mpd_uint_t INV_P1P2_MOD_P3 = 287064143708160ULL; + const mpd_uint_t LH_P1P2 = 18446744052234715137ULL; /* (P1*P2) % 2^64 */ + const mpd_uint_t UH_P1P2 = 18446744052234715141ULL; /* (P1*P2) / 2^64 */ + + /* transpose.c */ + const size_t mpd_bits[64] = { + 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, + 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, + 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824, + 2147483648ULL, 4294967296ULL, 8589934592ULL, 17179869184ULL, 34359738368ULL, + 68719476736ULL, 137438953472ULL, 274877906944ULL, 549755813888ULL, + 1099511627776ULL, 2199023255552ULL, 4398046511104, 8796093022208ULL, + 17592186044416ULL, 35184372088832ULL, 70368744177664ULL, 140737488355328ULL, + 281474976710656ULL, 562949953421312ULL, 1125899906842624ULL, + 2251799813685248ULL, 4503599627370496ULL, 9007199254740992ULL, + 18014398509481984ULL, 36028797018963968ULL, 72057594037927936ULL, + 144115188075855872ULL, 288230376151711744ULL, 576460752303423488ULL, + 1152921504606846976ULL, 2305843009213693952ULL, 4611686018427387904ULL, + 9223372036854775808ULL + }; + + /* mpdecimal.c */ + const mpd_uint_t mpd_pow10[MPD_RDIGITS+1] = { + 1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000, + 10000000000ULL,100000000000ULL,1000000000000ULL,10000000000000ULL, + 100000000000000ULL,1000000000000000ULL,10000000000000000ULL, + 100000000000000000ULL,1000000000000000000ULL,10000000000000000000ULL + }; + + /* magic number for constant division by MPD_RADIX */ + const mpd_uint_t mprime_rdx = 15581492618384294730ULL; + +#elif defined(CONFIG_32) + + /* number-theory.c */ + const mpd_uint_t mpd_moduli[3] = {2113929217UL, 2013265921UL, 1811939329UL}; + const mpd_uint_t mpd_roots[3] = {5UL, 31UL, 13UL}; + + /* PentiumPro modular multiplication: These constants have to be loaded as + * 80 bit long doubles, which are not supported by certain compilers. */ + const uint32_t mpd_invmoduli[3][3] = { + {4293885170U, 2181570688U, 16352U}, /* ((long double) 1 / 2113929217UL) */ + {1698898177U, 2290649223U, 16352U}, /* ((long double) 1 / 2013265921UL) */ + {2716021846U, 2545165803U, 16352U} /* ((long double) 1 / 1811939329UL) */ + }; + + const float MPD_TWO63 = 9223372036854775808.0; /* 2^63 */ + + /* crt.c */ + const mpd_uint_t INV_P1_MOD_P2 = 2013265901UL; + const mpd_uint_t INV_P1P2_MOD_P3 = 54UL; + const mpd_uint_t LH_P1P2 = 4127195137ULL; /* (P1*P2) % 2^32 */ + const mpd_uint_t UH_P1P2 = 990904320ULL; /* (P1*P2) / 2^32 */ + + /* transpose.c */ + const size_t mpd_bits[32] = { + 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, + 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, + 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824, + 2147483648UL + }; + + /* mpdecimal.c */ + const mpd_uint_t mpd_pow10[MPD_RDIGITS+1] = { + 1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000 + }; + +#else + #error "CONFIG_64 or CONFIG_32 must be defined." +#endif + +const char *mpd_round_string[MPD_ROUND_GUARD] = { + "ROUND_UP", /* round away from 0 */ + "ROUND_DOWN", /* round toward 0 (truncate) */ + "ROUND_CEILING", /* round toward +infinity */ + "ROUND_FLOOR", /* round toward -infinity */ + "ROUND_HALF_UP", /* 0.5 is rounded up */ + "ROUND_HALF_DOWN", /* 0.5 is rounded down */ + "ROUND_HALF_EVEN", /* 0.5 is rounded to even */ + "ROUND_05UP", /* round zero or five away from 0 */ + "ROUND_TRUNC", /* truncate, but set infinity */ +}; + +const char *mpd_clamp_string[MPD_CLAMP_GUARD] = { + "CLAMP_DEFAULT", + "CLAMP_IEEE_754" +}; + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/constants.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/constants.h Thu Jan 7 13:02:51 2010 @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#ifndef CONSTANTS_H +#define CONSTANTS_H + + +#include "mpdecimal.h" + + +/* choice of optimized functions */ +#if defined(CONFIG_64) +/* x64 */ + #define MULMOD(a, b) x64_mulmod(a, b, umod) + #define MULMOD2C(a0, a1, w) x64_mulmod2c(a0, a1, w, umod) + #define MULMOD2(a0, b0, a1, b1) x64_mulmod2(a0, b0, a1, b1, umod) + #define POWMOD(base, exp) x64_powmod(base, exp, umod) + #define SETMODULUS(modnum) std_setmodulus(modnum, &umod) + #define SIZE3_NTT(x0, x1, x2, w3table) std_size3_ntt(x0, x1, x2, w3table, umod) + + #define BSR(a) x86_bsr(a) + #define BSF(a) x86_bsf(a) +#elif defined(PPRO) +/* PentiumPro (or later) gcc inline asm */ + #define MULMOD(a, b) ppro_mulmod(a, b, &dmod, dinvmod) + #define MULMOD2C(a0, a1, w) ppro_mulmod2c(a0, a1, w, &dmod, dinvmod) + #define MULMOD2(a0, b0, a1, b1) ppro_mulmod2(a0, b0, a1, b1, &dmod, dinvmod) + #define POWMOD(base, exp) ppro_powmod(base, exp, &dmod, dinvmod) + #define SETMODULUS(modnum) ppro_setmodulus(modnum, &umod, &dmod, dinvmod) + #define SIZE3_NTT(x0, x1, x2, w3table) ppro_size3_ntt(x0, x1, x2, w3table, umod, &dmod, dinvmod) + + #define BSR(a) x86_bsr(a) + #define BSF(a) x86_bsf(a) +#else + /* ANSI C99 */ + #define MULMOD(a, b) std_mulmod(a, b, umod) + #define MULMOD2C(a0, a1, w) std_mulmod2c(a0, a1, w, umod) + #define MULMOD2(a0, b0, a1, b1) std_mulmod2(a0, b0, a1, b1, umod) + #define POWMOD(base, exp) std_powmod(base, exp, umod) + #define SETMODULUS(modnum) std_setmodulus(modnum, &umod) + #define SIZE3_NTT(x0, x1, x2, w3table) std_size3_ntt(x0, x1, x2, w3table, umod) + + #define BSR(a) std_bsr(a) + #define BSF(a) std_bsf(a) +#endif + +/* PentiumPro (or later) gcc inline asm */ +extern const float MPD_TWO63; +extern const uint32_t mpd_invmoduli[3][3]; + +enum {P1, P2, P3}; +enum {UNORDERED, ORDERED}; + +extern const mpd_uint_t mpd_moduli[]; +extern const mpd_uint_t mpd_roots[]; +extern const size_t mpd_bits[]; +extern const mpd_uint_t mpd_pow10[]; + +extern const mpd_uint_t INV_P1_MOD_P2; +extern const mpd_uint_t INV_P1P2_MOD_P3; +extern const mpd_uint_t LH_P1P2; +extern const mpd_uint_t UH_P1P2; + + +#endif /* CONSTANTS_H */ + + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/context.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/context.c Thu Jan 7 13:02:51 2010 @@ -0,0 +1,260 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include +#include "mpdecimal.h" + + + +static void +mpd_dflt_traphandler(mpd_context_t *ctx UNUSED) +{ + raise(SIGFPE); +} + +void (* mpd_traphandler)(mpd_context_t *) = mpd_dflt_traphandler; + + +static void +mpd_setminalloc(mpd_ssize_t n) +{ + static int minalloc_is_set = 0; + + if (minalloc_is_set) { + mpd_err_warn("mpd_setminalloc: ignoring request to set " + "MPD_MINALLOC a second time\n"); + return; + } + if (n < MPD_MINALLOC_MIN || n > MPD_MINALLOC_MAX) { + mpd_err_fatal("illegal value for MPD_MINALLOC"); + } + MPD_MINALLOC = n; + minalloc_is_set = 1; +} + +void +mpd_init(mpd_context_t *ctx, mpd_ssize_t prec) +{ + mpd_ssize_t ideal_minalloc; + + mpd_defaultcontext(ctx); + + if (!mpd_qsetprec(ctx, prec)) { + mpd_addstatus_raise(ctx, MPD_Invalid_context); + return; + } + + ideal_minalloc = 2 * ((prec+MPD_RDIGITS-1) / MPD_RDIGITS); + if (ideal_minalloc < MPD_MINALLOC_MIN) ideal_minalloc = MPD_MINALLOC_MIN; + if (ideal_minalloc > MPD_MINALLOC_MAX) ideal_minalloc = MPD_MINALLOC_MAX; + + mpd_setminalloc(ideal_minalloc); +} + +void +mpd_maxcontext(mpd_context_t *ctx) +{ + ctx->prec=MPD_MAX_PREC; + ctx->emax=MPD_MAX_EMAX; + ctx->emin=MPD_MIN_EMIN; + ctx->round=MPD_ROUND_HALF_EVEN; + ctx->traps=MPD_Traps; + ctx->status=0; + ctx->newtrap=0; + ctx->clamp=0; + ctx->allcr=1; +} + +void +mpd_defaultcontext(mpd_context_t *ctx) +{ + ctx->prec=2*MPD_RDIGITS; + ctx->emax=MPD_MAX_EMAX; + ctx->emin=MPD_MIN_EMIN; + ctx->round=MPD_ROUND_HALF_UP; + ctx->traps=MPD_Traps; + ctx->status=0; + ctx->newtrap=0; + ctx->clamp=0; + ctx->allcr=1; +} + +void +mpd_basiccontext(mpd_context_t *ctx) +{ + ctx->prec=9; + ctx->emax=MPD_MAX_EMAX; + ctx->emin=MPD_MIN_EMIN; + ctx->round=MPD_ROUND_HALF_UP; + ctx->traps=MPD_Traps|MPD_Clamped; + ctx->status=0; + ctx->newtrap=0; + ctx->clamp=0; + ctx->allcr=1; +} + +void +mpd_extcontext(mpd_context_t *ctx) +{ + ctx->prec=9; + ctx->emax=MPD_MAX_EMAX; + ctx->emin=MPD_MIN_EMIN; + ctx->round=MPD_ROUND_HALF_EVEN; + ctx->traps=0; + ctx->status=0; + ctx->newtrap=0; + ctx->clamp=0; + ctx->allcr=1; +} + + +mpd_ssize_t +mpd_getprec(const mpd_context_t *ctx) +{ + return ctx->prec; +} + +mpd_ssize_t +mpd_getemax(const mpd_context_t *ctx) +{ + return ctx->emax; +} + +mpd_ssize_t +mpd_getemin(const mpd_context_t *ctx) +{ + return ctx->emin; +} + +int +mpd_getround(const mpd_context_t *ctx) +{ + return ctx->round; +} + +uint32_t +mpd_gettraps(const mpd_context_t *ctx) +{ + return ctx->traps; +} + +uint32_t +mpd_getstatus(const mpd_context_t *ctx) +{ + return ctx->status; +} + +int +mpd_getclamp(const mpd_context_t *ctx) +{ + return ctx->clamp; +} + +int +mpd_getcr(const mpd_context_t *ctx) +{ + return ctx->allcr; +} + + +int +mpd_qsetprec(mpd_context_t *ctx, mpd_ssize_t prec) +{ + if (prec <= 0 || prec > MPD_MAX_PREC) { + return 0; + } + ctx->prec = prec; + return 1; +} + +int +mpd_qsetemax(mpd_context_t *ctx, mpd_ssize_t emax) +{ + if (emax < 0 || emax > MPD_MAX_EMAX) { + return 0; + } + ctx->emax = emax; + return 1; +} + +int +mpd_qsetemin(mpd_context_t *ctx, mpd_ssize_t emin) +{ + if (emin > 0 || emin < MPD_MIN_EMIN) { + return 0; + } + ctx->emin = emin; + return 1; +} + +int +mpd_qsetround(mpd_context_t *ctx, int round) +{ + int i; + + for (i = 0; i < MPD_ROUND_GUARD; i++) { + if (i == round) { + ctx->round = round; + return 1; + } + } + return 0; +} + +int +mpd_qsettraps(mpd_context_t *ctx, uint32_t traps) +{ + if (traps > MPD_Max_status) { + return 0; + } + ctx->traps = traps; + return 1; +} + +int +mpd_qsetstatus(mpd_context_t *ctx, uint32_t flags) +{ + if (flags > MPD_Max_status) { + return 0; + } + ctx->status = flags; + return 1; +} + +int +mpd_qsetclamp(mpd_context_t *ctx, int c) +{ + if (c != 0 && c != 1) { + return 0; + } + ctx->clamp = c; + return 1; +} + +int +mpd_qsetcr(mpd_context_t *ctx, int c) +{ + if (c != 0 && c != 1) { + return 0; + } + ctx->allcr = c; + return 1; +} + + +void +mpd_addstatus_raise(mpd_context_t *ctx, uint32_t flags) +{ + ctx->status |= flags; + if (flags&ctx->traps) { + ctx->newtrap = (flags&ctx->traps); + mpd_traphandler(ctx); + } +} + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/convolute.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/convolute.c Thu Jan 7 13:02:51 2010 @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include "bits.h" +#include "constants.h" +#include "fnt.h" +#include "fourstep.h" +#include "mpdecimal.h" +#include "numbertheory.h" +#include "sixstep.h" +#include "umodarith.h" +#include "convolute.h" + + +/* Convolute the data in c1 and c2. Result is in c1. */ +int +fnt_convolute(mpd_uint_t *c1, mpd_uint_t *c2, size_t n, int modnum) +{ + int (*fnt)(mpd_uint_t *, size_t, int, int); + int (*inv_fnt)(mpd_uint_t *, size_t, int, int); +#ifdef PPRO + double dmod; + uint32_t dinvmod[3]; +#endif + mpd_uint_t n_inv, umod; + size_t i; + + + SETMODULUS(modnum); + n_inv = POWMOD(n, (umod-2)); + + if (ispower2(n)) { + if (n > SIX_STEP_THRESHOLD) { + fnt = six_step_fnt; + inv_fnt = inv_six_step_fnt; + } + else { + fnt = std_fnt; + inv_fnt = std_inv_fnt; + } + } + else { + fnt = four_step_fnt; + inv_fnt = inv_four_step_fnt; + } + + if (!fnt(c1, n, modnum, UNORDERED)) { + return 0; + } + if (!fnt(c2, n, modnum, UNORDERED)) { + return 0; + } + for (i = 0; i < n-1; i += 2) { + mpd_uint_t x0 = c1[i]; + mpd_uint_t y0 = c2[i]; + mpd_uint_t x1 = c1[i+1]; + mpd_uint_t y1 = c2[i+1]; + MULMOD2(&x0, y0, &x1, y1); + c1[i] = x0; + c1[i+1] = x1; + } + + if (!inv_fnt(c1, n, modnum, UNORDERED)) { + return 0; + } + for (i = 0; i < n-3; i += 4) { + mpd_uint_t x0 = c1[i]; + mpd_uint_t x1 = c1[i+1]; + mpd_uint_t x2 = c1[i+2]; + mpd_uint_t x3 = c1[i+3]; + MULMOD2C(&x0, &x1, n_inv); + MULMOD2C(&x2, &x3, n_inv); + c1[i] = x0; + c1[i+1] = x1; + c1[i+2] = x2; + c1[i+3] = x3; + } + + return 1; +} + +/* Autoconvolute the data in c1. Result is in c1. */ +int +fnt_autoconvolute(mpd_uint_t *c1, size_t n, int modnum) +{ + int (*fnt)(mpd_uint_t *, size_t, int, int); + int (*inv_fnt)(mpd_uint_t *, size_t, int, int); +#ifdef PPRO + double dmod; + uint32_t dinvmod[3]; +#endif + mpd_uint_t n_inv, umod; + size_t i; + + + SETMODULUS(modnum); + n_inv = POWMOD(n, (umod-2)); + + if (ispower2(n)) { + if (n > SIX_STEP_THRESHOLD) { + fnt = six_step_fnt; + inv_fnt = inv_six_step_fnt; + } + else { + fnt = std_fnt; + inv_fnt = std_inv_fnt; + } + } + else { + fnt = four_step_fnt; + inv_fnt = inv_four_step_fnt; + } + + if (!fnt(c1, n, modnum, UNORDERED)) { + return 0; + } + for (i = 0; i < n-1; i += 2) { + mpd_uint_t x0 = c1[i]; + mpd_uint_t x1 = c1[i+1]; + MULMOD2(&x0, x0, &x1, x1); + c1[i] = x0; + c1[i+1] = x1; + } + + if (!inv_fnt(c1, n, modnum, UNORDERED)) { + return 0; + } + for (i = 0; i < n-3; i += 4) { + mpd_uint_t x0 = c1[i]; + mpd_uint_t x1 = c1[i+1]; + mpd_uint_t x2 = c1[i+2]; + mpd_uint_t x3 = c1[i+3]; + MULMOD2C(&x0, &x1, n_inv); + MULMOD2C(&x2, &x3, n_inv); + c1[i] = x0; + c1[i+1] = x1; + c1[i+2] = x2; + c1[i+3] = x3; + } + + return 1; +} + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/convolute.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/convolute.h Thu Jan 7 13:02:51 2010 @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#ifndef CONVOLUTE_H +#define CONVOLUTE_H + + +#include +#include "mpdecimal.h" + +#define SIX_STEP_THRESHOLD 4096 + +int fnt_convolute(mpd_uint_t *c1, mpd_uint_t *c2, size_t n, int modnum); +int fnt_autoconvolute(mpd_uint_t *c1, size_t n, int modnum); + + +#endif Added: python/branches/py3k-cdecimal/Modules/cdecimal/crt.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/crt.c Thu Jan 7 13:02:51 2010 @@ -0,0 +1,166 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include "mpdecimal.h" +#include "numbertheory.h" +#include "umodarith.h" +#include "crt.h" + + +/* + * Functions for arithmetic on triple-word mpd_uint_t numbers. + */ + + +/* Multiply P1P2 by v, store result in w. */ +static inline void +_crt_mulP1P2_3(mpd_uint_t w[3], mpd_uint_t v) +{ + mpd_uint_t hi1, hi2, lo; + + _mpd_mul_words(&hi1, &lo, LH_P1P2, v); + w[0] = lo; + + _mpd_mul_words(&hi2, &lo, UH_P1P2, v); + lo = hi1 + lo; + if (lo < hi1) hi2++; + + w[1] = lo; + w[2] = hi2; +} + +/* Add 3 words from v to w. The result is known to fit in w. */ +static inline void +_crt_add3(mpd_uint_t w[3], mpd_uint_t v[3]) +{ + mpd_uint_t carry; + + w[0] = w[0] + v[0]; + carry = (w[0] < v[0]); + + w[1] = w[1] + v[1]; + if (w[1] < v[1]) w[2]++; + + w[1] = w[1] + carry; + if (w[1] < carry) w[2]++; + + w[2] += v[2]; +} + +/* Divide 3 words in u by v, store result in w, return remainder. */ +static inline mpd_uint_t +_crt_div3(mpd_uint_t *w, const mpd_uint_t *u, mpd_uint_t v) +{ + mpd_uint_t r1 = u[2]; + mpd_uint_t r2; + + if (r1 < v) { + w[2] = 0; + } + else { + _mpd_div_word(&w[2], &r1, u[2], v); + } + + _mpd_div_words(&w[1], &r2, r1, u[1], v); + _mpd_div_words(&w[0], &r1, r2, u[0], v); + + return r1; +} + + +/* + * Chinese Remainder Theorem: + * Algorithm from Joerg Arndt, "Matters Computational", + * Chapter 37.4.1 [http://www.jjj.de/fxt/] + */ + +/* + * CRT with carry: x1, x2, x3 contain numbers modulo p1, p2, p3. For each + * triple of members of the arrays, find the unique z modulo p1*p2*p3. + * + * Overflow analysis for 32 bit: + * + * carry[3] can hold cmax = 2**96-1. Let c_i denote the carry at the + * beginning of the ith iteration. Let zmax be the maximum z. + * + * cmax = 2**96-1 = 79228162514264337593543950335 + * zmax = (p1*p2*p3)-1 = 7711435583600944683209981953 + * + * c_0 = 0 + * c_1 = (c_0 + zmax) / 10**9 = 7711435583600944683 + * c_2 = (c_1 + zmax) / 10**9 = 7711435591312380266 + * c_3 = (c_2 + zmax) / 10**9 = 7711435591312380274 + * c_4 = (c_3 + zmax) / 10**9 = 7711435591312380274 + * (...) + * + * The carries do not increase, (c_i + zmax) cannot overflow. + * + * + * Overflow analysis for 64 bit: + * + * cmax = 2**192-1 = 6277101735386680763835789423207666416102355444464034512895 + * zmax = (p1*p2*p3)-1 = 6277101353934753858413533876806988331203900781075588186113 + * + * c_0 = 0 + * c_1 = (c_0 + zmax) / 10**19 = 627710135393475385841353387680698833120 + * c_2 = (c_1 + zmax) / 10**19 = 627710135393475385904124401220046371704 + * c_3 = (c_2 + zmax) / 10**19 = 627710135393475385904124401220046371710 + * c_4 = (c_3 + zmax) / 10**19 = 627710135393475385904124401220046371710 + * (...) + * + * The carries do not increase. (c_i + zmax) cannot overflow. + */ +void +crt3(mpd_uint_t *x1, mpd_uint_t *x2, mpd_uint_t *x3, size_t rsize) +{ + mpd_uint_t p1 = mpd_moduli[P1]; + mpd_uint_t umod; +#ifdef PPRO + double dmod; + uint32_t dinvmod[3]; +#endif + mpd_uint_t a1, a2, a3; + mpd_uint_t s; + mpd_uint_t z[3], t[3]; + mpd_uint_t carry[3] = {0,0,0}; + mpd_uint_t hi, lo; + size_t i; + + for (i = 0; i < rsize; i++) { + + a1 = x1[i]; + a2 = x2[i]; + a3 = x3[i]; + + SETMODULUS(P2); + s = ext_submod(a2, a1, umod); + s = MULMOD(s, INV_P1_MOD_P2); + + _mpd_mul_words(&hi, &lo, s, p1); + lo = lo + a1; + if (lo < a1) hi++; + + SETMODULUS(P3); + s = dw_submod(a3, hi, lo, umod); + s = MULMOD(s, INV_P1P2_MOD_P3); + + z[0] = lo; + z[1] = hi; + z[2] = 0; + + _crt_mulP1P2_3(t, s); + _crt_add3(z, t); + _crt_add3(carry, z); + + x1[i] = _crt_div3(carry, carry, MPD_RADIX); + } + + assert(carry[0] == 0 && carry[1] == 0 && carry[2] == 0); +} + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/crt.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/crt.h Thu Jan 7 13:02:51 2010 @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#ifndef CRT_H +#define CRT_H + + +#include +#include "mpdecimal.h" + +void crt3(mpd_uint_t *x1, mpd_uint_t *x2, mpd_uint_t *x3, size_t nmemb); + + +#endif Added: python/branches/py3k-cdecimal/Modules/cdecimal/difradix2.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/difradix2.c Thu Jan 7 13:02:51 2010 @@ -0,0 +1,141 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include "bits.h" +#include "mpdecimal.h" +#include "numbertheory.h" +#include "umodarith.h" +#include "difradix2.h" + + +/* + * Generate bit reversed words and carry out the permutation. + * Algorithm due to Brent Lehmann, see Joerg Arndt, "Matters Computational", + * Chapter 1.13.4. [http://www.jjj.de/fxt/] + */ +static inline void +bitreverse_permute(mpd_uint_t a[], size_t n) +{ + size_t x = 0; + size_t r = 0; + size_t t; + + do { + if (r > x) { + t = a[x]; + a[x] = a[r]; + a[r] = t; + } + x += 1; + r ^= (n - (n >> (BSF(x)+1))); + } while (x < n); +} + + +/* Fast Number Theoretic Transform, decimation in frequency. */ +void +fnt_dif2(mpd_uint_t a[], size_t n, struct fnt_params *tparams) +{ + mpd_uint_t *wtable = tparams->wtable; + mpd_uint_t umod; +#ifdef PPRO + double dmod; + uint32_t dinvmod[3]; +#endif + mpd_uint_t m ,mhalf; + mpd_uint_t u0, u1, v0, v1; + mpd_uint_t j, r; + mpd_uint_t w, w0, w1, wstep; + + + assert(ispower2(n)); + assert(n >= 4); + + SETMODULUS(tparams->modnum); + + mhalf = n / 2; + for (j = 0; j < mhalf; j += 2) { + + w0 = wtable[j]; + w1 = wtable[j+1]; + + u0 = a[j]; + v0 = a[j+mhalf]; + + u1 = a[j+1]; + v1 = a[j+1+mhalf]; + + a[j] = addmod(u0, v0, umod); + v0 = submod(u0, v0, umod); + + a[j+1] = addmod(u1, v1, umod); + v1 = submod(u1, v1, umod); + + MULMOD2(&v0, w0, &v1, w1); + + a[j+mhalf] = v0; + a[j+1+mhalf] = v1; + + } + + wstep = 2; + for (m = n/2; m >= 2; m>>=1, wstep<<=1) { + + mhalf = m / 2; + + /* j = 0 */ + for (r = 0; r < n; r += 2*m) { + + u0 = a[r]; + v0 = a[r+mhalf]; + + u1 = a[m+r]; + v1 = a[m+r+mhalf]; + + a[r] = addmod(u0, v0, umod); + v0 = submod(u0, v0, umod); + + a[m+r] = addmod(u1, v1, umod); + v1 = submod(u1, v1, umod); + + a[r+mhalf] = v0; + a[m+r+mhalf] = v1; + } + + for (j = 1; j < mhalf; j++) { + + w = wtable[j*wstep]; + + for (r = 0; r < n; r += 2*m) { + + u0 = a[r+j]; + v0 = a[r+j+mhalf]; + + u1 = a[m+r+j]; + v1 = a[m+r+j+mhalf]; + + a[r+j] = addmod(u0, v0, umod); + v0 = submod(u0, v0, umod); + + a[m+r+j] = addmod(u1, v1, umod); + v1 = submod(u1, v1, umod); + + MULMOD2C(&v0, &v1, w); + + a[r+j+mhalf] = v0; + a[m+r+j+mhalf] = v1; + } + + } + + } + + bitreverse_permute(a, n); +} + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/difradix2.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/difradix2.h Thu Jan 7 13:02:51 2010 @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#ifndef DIF_RADIX2_H +#define DIF_RADIX2_H + + +#include "stdio.h" +#include "mpdecimal.h" +#include "numbertheory.h" + + +void fnt_dif2(mpd_uint_t a[], size_t n, struct fnt_params *tparams); + + +#endif Added: python/branches/py3k-cdecimal/Modules/cdecimal/docstrings.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/docstrings.h Thu Jan 7 13:02:51 2010 @@ -0,0 +1,922 @@ +/* + * Copyright (c) 2001-2010 Python Software Foundation. All Rights Reserved. + * Modified and extended by Stefan Krah. + */ + + +#ifndef DOCSTRINGS_H +#define DOCSTRINGS_H + + +/******************************************************************************/ +/* Module */ +/******************************************************************************/ + +static const char doc_cdecimal[] = "C decimal arithmetic module"; + +static const char doc_getcontext[] = "\n\ +getcontext() - Get the current default context.\n\ +\n"; + +static const char doc_setcontext[] = "\n\ +setcontext(c) - Set a new default context.\n\ +\n"; + +static const char doc_localcontext[] = "\n\ +localcontext(c) - Return a context manager that will set the default context\n\ +to a copy of c on entry to the with-statement and restore the previous default\n\ +context when exiting the with-statement. If no context is specified, a copy of\n\ +the current default context is used.\n\ +\n"; + + +/******************************************************************************/ +/* Decimal Object and Methods */ +/******************************************************************************/ + +static const char doc_decimal[] = "\n\ +Decimal([value[, context]]): Construct a new Decimal object from value.\n\ +\n\ +value can be an integer, string, tuple, or another Decimal object.\n\ +If no value is given, return Decimal('0'). The context does not affect\n\ +the conversion and is only passed to determine if the InvalidOperation\n\ +trap is active.\n\ +\n"; + +static const char doc_abs[] = "\n\ +abs() - Return the absolute value of the number.\n\ +\n"; + +static const char doc_adjusted[] = "\n\ +adjusted() - Return the adjusted exponent of the number.\n\ +\n\ +Defined as exp + digits - 1.\n\ +\n"; + +static const char doc_as_tuple[] = "\n\ +as_tuple() - Return a tuple representation of the number.\n\ +\n"; + +static const char doc_canonical[] = "\n\ +canonical() - Return the canonical encoding of the argument. Currently,\n\ +the encoding of a Decimal instance is always canonical, so this operation\n\ +returns its argument unchanged.\n\ +\n"; + +static const char doc_compare[] = "\n\ +compare(other[, context]) - Compare self to other. Return a decimal value:\n\ +\n\ + a or b is a NaN ==> Decimal('NaN')\n\ + a < b ==> Decimal('-1')\n\ + a == b ==> Decimal('0')\n\ + a > b ==> Decimal('1')\n\ +\n"; + +static const char doc_compare_signal[] = "\n\ +compare_signal(other[, context]) - Identical to compare, except that\n\ +all NaNs signal.\n\ +\n"; + +static const char doc_compare_total[] = "\n\ +compare_total(other) - Compare two operands using their abstract representation\n\ +rather than their numerical value. Similar to the compare() method, but the\n\ +result gives a total ordering on Decimal instances. Two Decimal instances with\n\ +the same numeric value but different representations compare unequal in this\n\ +ordering:\n\ +\n\ + >>> Decimal('12.0').compare_total(Decimal('12'))\n\ + Decimal('-1')\n\ +\n\ +Quiet and signaling NaNs are also included in the total ordering. The result\n\ +of this function is Decimal('0') if both operands have the same representation,\n\ +Decimal('-1') if the first operand is lower in the total order than the second,\n\ +and Decimal('1') if the first operand is higher in the total order than the\n\ +second operand. See the specification for details of the total order.\n\ +\n"; + +static const char doc_compare_total_mag[] = "\n\ +compare_total_mag(other) - Compare two operands using their abstract\n\ +representation rather than their value as in compare_total(), but\n\ +ignoring the sign of each operand. x.compare_total_mag(y) is\n\ +equivalent to x.copy_abs().compare_total(y.copy_abs()).\n\ +\n"; + +static const char doc_copy_abs[] = "\n\ +copy_abs() - Return the absolute value of the argument. This operation\n\ +is unaffected by the context and is quiet: no flags are changed and no\n\ +rounding is performed.\n\ +\n"; + +static const char doc_copy_negate[] = "\n\ +copy_negate() - Return the negation of the argument. This operation is\n\ +unaffected by the context and is quiet: no flags are changed and no\n\ +rounding is performed.\n\ +\n"; + +static const char doc_copy_sign[] = "\n\ +copy_sign(other) - Return a copy of the first operand with the sign set\n\ +to be the same as the sign of the second operand. For example:\n\ +\n\ + >>> Decimal('2.3').copy_sign(Decimal('-1.5'))\n\ + Decimal('-2.3')\n\ +\n\ +This operation is unaffected by the context and is quiet: no flags are\n\ +changed and no rounding is performed.\n\ +\n"; + +static const char doc_exp[] = "\n\ +exp([context]) - Return the value of the (natural) exponential function e**x\n\ +at the given number. The ROUND_HALF_EVEN rounding mode is used. If the _allcr\n\ +field of the context is set to 1 (default), the result is correctly rounded.\n\ +\n"; + +static const char doc_from_float[] = "\n\ +from_float(f) - Class method that converts a float to a decimal number, exactly.\n\ +Since 0.1 is not exactly representable in binary floating point,\n\ +Decimal.from_float(0.1) is not the same as Decimal('0.1').\n\ +\n\ + >>> Decimal.from_float(0.1)\n\ + Decimal('0.1000000000000000055511151231257827021181583404541015625')\n\ + >>> Decimal.from_float(float('nan'))\n\ + Decimal('NaN')\n\ + >>> Decimal.from_float(float('inf'))\n\ + Decimal('Infinity')\n\ + >>> Decimal.from_float(float('-inf'))\n\ + Decimal('-Infinity')\n\ +\n\ +\n"; + +static const char doc_fma[] = "\n\ +fma(other, third[, context]) - Fused multiply-add. Return self*other+third\n\ +with no rounding of the intermediate product self*other.\n\ +\n\ + >>> Decimal(2).fma(3, 5)\n\ + Decimal('11')\n\ +\n\ +\n"; + +static const char doc_is_canonical[] = "\n\ +is_canonical() - Return True if the argument is canonical and False otherwise.\n\ +Currently, a Decimal instance is always canonical, so this operation always\n\ +returns True.\n\ +\n"; + +static const char doc_is_finite[] = "\n\ +is_finite() - Return True if the argument is a finite number, and False if the\n\ +argument is infinite or a NaN.\n\ +\n"; + +static const char doc_is_infinite[] = "\n\ +is_infinite() - Return True if the argument is either positive or negative\n\ +infinity and False otherwise.\n\ +\n"; + +static const char doc_is_nan[] = "\n\ +is_nan() - Return True if the argument is a (quiet or signaling) NaN and\n\ +False otherwise.\n\ +\n"; + +static const char doc_is_normal[] = "\n\ +is_normal([context]) - Return True if the argument is a normal finite non-zero\n\ +number with an adjusted exponent greater than or equal to Emin. Return False\n\ +if the argument is zero, subnormal, infinite or a NaN.\n\ +\n"; + +static const char doc_is_qnan[] = "\n\ +is_qnan() - Return True if the argument is a quiet NaN, and False otherwise.\n\ +\n"; + +static const char doc_is_signed[] = "\n\ +is_signed() - Return True if the argument has a negative sign and\n\ +False otherwise. Note that both zeros and NaNs can carry signs.\n\ +\n"; + +static const char doc_is_snan[] = "\n\ +is_snan() - Return True if the argument is a signaling NaN and False otherwise.\n\ +\n"; + +static const char doc_is_special[] = "\n\ +is_special() - Return True if the argument is either NaN, sNaN or Infinity\n\ +and False otherwise.\n\ +\n"; + +static const char doc_is_subnormal[] = "\n\ +is_subnormal([context]) - Return True if the argument is subnormal, and False\n\ +otherwise. A number is subnormal if it is non-zero, finite, and has an\n\ +adjusted exponent less than Emin.\n\ +\n"; + +static const char doc_is_zero[] = "\n\ +is_zero() - Return True if the argument is a (positive or negative) zero and\n\ +False otherwise.\n\ +\n"; + +static const char doc_ln[] = "\n\ +ln([context]) - Return the natural (base e) logarithm of the operand.\n\ +The ROUND_HALF_EVEN rounding mode is used. If the _allcr field of the\n\ +context is set to 1, the result is correctly rounded.\n\ +\n"; + +static const char doc_log10[] = "\n\ +log10([context]) - Return the base ten logarithm of the operand.\n\ +The ROUND_HALF_EVEN rounding mode is used. If the _allcr field of the\n\ +context is set to 1, the result is correctly rounded.\n\ +\n"; + +static const char doc_logb[] = "\n\ +logb([context]) - For a non-zero number, return the adjusted exponent\n\ +of the operand as a Decimal instance. If the operand is a zero, then\n\ +Decimal('-Infinity') is returned and the DivisionByZero condition is\n\ +raised. If the operand is an infinity then Decimal('Infinity') is returned.\n\ +\n"; + +static const char doc_logical_and[] = "\n\ +logical_and(other[, context]) - Return the digit-wise and of the two\n\ +(logical) operands.\n\ +\n"; + +static const char doc_logical_invert[] = "\n\ +logical_invert([context]) - Return the digit-wise inversion of the\n\ +(logical) operand.\n\ +\n"; + +static const char doc_logical_or[] = "\n\ +logical_or(other[, context]) - Return the digit-wise or of the two\n\ +(logical) operands.\n\ +\n"; + +static const char doc_logical_xor[] = "\n\ +logical_xor(other[, context]) - Return the digit-wise exclusive or of the\n\ +two (logical) operands.\n\ +\n"; + +static const char doc_max[] = "\n\ +max(other[, context]) - Maximum of self and other. If one operand is a quiet\n\ +NaN and the other is numeric, the numeric operand is returned.\n\ +\n"; + +static const char doc_max_mag[] = "\n\ +max_mag(other[, context]) - Similar to the max() method, but the comparison is\n\ +done using the absolute values of the operands.\n\ +\n"; + +static const char doc_min[] = "\n\ +min(other[, context]) - Minimum of self and other. If one operand is a quiet\n\ +NaN and the other is numeric, the numeric operand is returned.\n\ +\n"; + +static const char doc_min_mag[] = "\n\ +min_mag(other[, context]) - Similar to the min() method, but the comparison is\n\ +done using the absolute values of the operands.\n\ +\n"; + +static const char doc_next_minus[] = "\n\ +next_minus([context]) - Return the largest number representable in the given\n\ +context (or in the current default context if no context is given) that is\n\ +smaller than the given operand.\n\ +\n"; + +static const char doc_next_plus[] = "\n\ +next_plus([context]) - Return the smallest number representable in the given\n\ +context (or in the current default context if no context is given) that is\n\ +larger than the given operand.\n\ +\n"; + +static const char doc_next_toward[] = "\n\ +next_toward(other[, context]) - If the two operands are unequal, return the\n\ +number closest to the first operand in the direction of the second operand.\n\ +If both operands are numerically equal, return a copy of the first operand\n\ +with the sign set to be the same as the sign of the second operand.\n\ +\n"; + +static const char doc_normalize[] = "\n\ +normalize([context]) - Normalize the number by stripping the rightmost trailing\n\ +zeros and converting any result equal to Decimal('0') to Decimal('0e0'). Used\n\ +for producing canonical values for members of an equivalence class. For example,\n\ +Decimal('32.100') and Decimal('0.321000e+2') both normalize to the equivalent\n\ +value Decimal('32.1').\n\ +\n\ +Normalize is an alias for reduce([context]).\n\ +\n"; + +static const char doc_number_class[] = "\n\ +number_class([context]) - Return a string describing the class of the operand.\n\ +The returned value is one of the following ten strings:\n\ +\n\ + * '-Infinity', indicating that the operand is negative infinity.\n\ + * '-Normal', indicating that the operand is a negative normal number.\n\ + * '-Subnormal', indicating that the operand is negative and subnormal.\n\ + * '-Zero', indicating that the operand is a negative zero.\n\ + * '+Zero', indicating that the operand is a positive zero.\n\ + * '+Subnormal', indicating that the operand is positive and subnormal.\n\ + * '+Normal', indicating that the operand is a positive normal number.\n\ + * '+Infinity', indicating that the operand is positive infinity.\n\ + * 'NaN', indicating that the operand is a quiet NaN (Not a Number).\n\ + * 'sNaN', indicating that the operand is a signaling NaN.\n\ +\n\ +\n"; + +static const char doc_quantize[] = "\n\ +quantize(exp[, context]) - Return a value equal to the first operand after\n\ +rounding and having the exponent of the second operand.\n\ +\n\ + >>> Decimal('1.41421356').quantize(Decimal('1.000'))\n\ + Decimal('1.414')\n\ +\n\ +Unlike other operations, if the length of the coefficient after the quantize\n\ +operation would be greater than precision, then an InvalidOperation is signaled.\n\ +This guarantees that, unless there is an error condition, the quantized exponent\n\ +is always equal to that of the right-hand operand.\n\ +\n\ +Also unlike other operations, quantize never signals Underflow, even if the\n\ +result is subnormal and inexact.\n\ +\n\ +If the exponent of the second operand is larger than that of the first, then\n\ +rounding may be necessary. In this case, the rounding mode is determined by the\n\ +given context argument; if no argument is given, the rounding mode of the\n\ +current default context is used.\n\ +\n"; + +static const char doc_radix[] = "\n\ +radix() - Return Decimal(10), the radix (base) in which the Decimal class does\n\ +all its arithmetic. Included for compatibility with the specification.\n\ +\n"; + +static const char doc_reduce[] = "\n\ +reduce([context]) - Normalize the number by stripping the rightmost trailing\n\ +zeros and converting any result equal to Decimal('0') to Decimal('0e0'). Used\n\ +for producing canonical values for members of an equivalence class. For example,\n\ +Decimal('32.100') and Decimal('0.321000e+2') both normalize to the equivalent\n\ +value Decimal('32.1').\n\ +\n"; + +static const char doc_remainder_near[] = "\n\ +remainder_near(other[, context]) - Compute the modulo as either a positive\n\ +or negative value depending on which is closest to zero. For instance,\n\ +Decimal(10).remainder_near(6) returns Decimal('-2'), which is closer to zero\n\ +than Decimal('4').\n\ +\n\ +If both are equally close, the one chosen will have the same sign as self.\n\ +\n"; + +static const char doc_rotate[] = "\n\ +rotate(other[, context]) - Return the result of rotating the digits of the\n\ +first operand by an amount specified by the second operand. The second operand\n\ +must be an integer in the range -precision through precision. The absolute\n\ +value of the second operand gives the number of places to rotate. If the second\n\ +operand is positive then rotation is to the left; otherwise rotation is to the\n\ +right. The coefficient of the first operand is padded on the left with zeros to\n\ +length precision if necessary. The sign and exponent of the first operand are\n\ +unchanged.\n\ +\n"; + +static const char doc_same_quantum[] = "\n\ +same_quantum(other[, context]) - Test whether self and other have the\n\ +same exponent or whether both are NaN.\n\ +\n"; + +static const char doc_scaleb[] = "\n\ +scaleb(other[, context]) - Return the first operand with the exponent adjusted\n\ +the second. Equivalently, return the first operand multiplied by 10**other.\n\ +The second operand must be an integer.\n\ +\n"; + +static const char doc_shift[] = "\n\ +shift(other[, context]) - Return the result of shifting the digits of the\n\ +first operand by an amount specified by the second operand. The second operand\n\ +must be an integer in the range -precision through precision. The absolute value\n\ +of the second operand gives the number of places to shift. If the second operand\n\ +is positive, then the shift is to the left; otherwise the shift is to the right.\n\ +Digits shifted into the coefficient are zeros. The sign and exponent of the\n\ +first operand are unchanged.\n\ +\n"; + +static const char doc_sqrt[] = "\n\ +sqrt([context]) - Return the square root of the argument to full precision.\n\ +The result is correctly rounded using the ROUND_HALF_EVEN rounding mode.\n\ +\n"; + +static const char doc_to_eng[] = "\n\ +to_eng([context]) - Convert a number to a string using engineering\n\ +notation. Alias for to_eng_string().\n\ +\n"; + +static const char doc_to_eng_string[] = "\n\ +to_eng_string([context]) - Convert to an engineering-type string.\n\ +Engineering notation has an exponent which is a multiple of 3, so\n\ +there are up to 3 digits left of the decimal place. For example,\n\ +Decimal('123E+1') is converted to Decimal('1.23E+3')\n\ +\n"; + +static const char doc_to_integral[] = "\n\ +to_integral([rounding[, context]]) - Identical to the to_integral_value()\n\ +method. The to_integral name has been kept for compatibility with older\n\ +versions.\n\ +\n"; + +static const char doc_to_integral_exact[] = "\n\ +to_integral_exact([rounding[, context]]) - Round to the nearest integer,\n\ +signaling Inexact or Rounded as appropriate if rounding occurs. The rounding\n\ +mode is determined by the rounding parameter if given, else by the given\n\ +context. If neither parameter is given, then the rounding mode of the current\n\ +default context is used.\n\ +\n"; + +static const char doc_to_integral_value[] = "\n\ +to_integral_value([rounding[, context]]) - Round to the nearest integer without\n\ +signaling Inexact or Rounded. The rounding mode is determined by the rounding\n\ +parameter if given, else by the given context. If neither parameter is given,\n\ +then the rounding mode of the current default context is used.\n\ +\n"; + + +/******************************************************************************/ +/* Decimal Object, Additional Methods */ +/******************************************************************************/ + +static const char doc_add[] = "\n\ +add(other[, context]) - Return the sum of self and other.\n\ +\n"; + +static const char doc_apply[] = "\n\ +apply() - Apply the default context to the number.\n\ +\n"; + +static const char doc_div[] = "\n\ +div(other[, context]) - Divide self by other.\n\ +Alias for divide(other[, context]).\n\ +\n"; + +static const char doc_divide[] = "\n\ +divide(other[, context]) - Divide self by other.\n\ +\n"; + +static const char doc_divide_int[] = "\n\ +divide_int(other[, context]) - Truncating division.\n\ +\n"; + +static const char doc_divint[] = "\n\ +divint(other[, context]) - Truncating division.\n\ +Alias for divide_int(other[, context]).\n\ +\n"; + +static const char doc_divmod[] = "\n\ +divmod(other[, context]) - Return quotient and remainder of the\n\ +division self / other.\n\ +\n"; + +static const char doc_invroot[] = "\n\ +invroot([context]) - Return the reciprocal of the square root.\n\ +\n"; + +static const char doc_is_integer[] = "\n\ +is_integer() - Return True if the argument is an integer and False otherwise.\n\ +\n"; + +static const char doc_minus[] = "\n\ +minus() - Minus corresponds to the unary prefix minus operator in Python,\n\ +but applies the context precision and rounding.\n\ +\n"; + +static const char doc_mul[] = "\n\ +mul(other[, context]) - Multiply self by other.\n\ +Alias for multiply(other[, context]).\n\ +\n"; + +static const char doc_multiply[] = "\n\ +multiply(other[, context]) - Multiply self by other.\n\ +\n"; + +static const char doc_plus[] = "\n\ +plus() - Plus corresponds to the unary prefix plus operator in Python,\n\ +but applies the context precision and rounding.\n\ +\n"; + +static const char doc_pow[] = "\n\ +pow(other[, context]) - Raise self to the power of other.\n\ +Alias for power(other[, context]).\n\ +\n"; + +static const char doc_power[] = "\n\ +power(other[, context]) - Raise self to the power of other.\n\ +\n"; + +static const char doc_powmod[] = "\n\ +powmod(other, third[, context]) - Return (self ** other) % third.\n\ +\n"; + +static const char doc_rem[] = "\n\ +rem(other[, context]) - Remainder of the division self / other.\n\ +Alias for remainder(other[, context]).\n\ +\n"; + +static const char doc_remainder[] = "\n\ +remainder(other[, context]) - Remainder of the division self / other.\n\ +\n"; + +static const char doc_sub[] = "\n\ +sub(other[, context]) - Subtract other from self.\n\ +Alias for subtract(other[, context]).\n\ +\n"; + +static const char doc_subtract[] = "\n\ +subtract(other[, context]) - Subtract other from self.\n\ +\n"; + +static const char doc_sign[] = "\n\ +sign() - Return -1 or 1, depending on the sign of self.\n\ +\n"; + +static const char doc_to_sci[] = "\n\ +to_sci([context]) - Convert a number to a string using scientific notation.\n\ +Alias for to_sci_string().\n\ +\n"; + +static const char doc_to_sci_string[] = "\n\ +to_sci_string([context]) - Convert a number to a string using\n\ +scientific notation.\n\ +\n"; + + +/******************************************************************************/ +/* Context Object and Methods */ +/******************************************************************************/ + +static const char doc_context[] = "\n\ +The context affects almost all operations and controls rounding,\n\ +Over/Underflow, raising of exceptions and much more. A new context\n\ +can be constructed as follows:\n\ +\n\ + >>> c = Context(prec=28, Emin=-425000000, Emax=425000000, \n\ + rounding=ROUND_HALF_EVEN, capitals=1,\n\ + traps=[InvalidOperation, DivisionByZero, Overflow],\n\ + flags=[], _clamp=0, _allcr=1)\n\ +\n\ +\n"; + +static const char doc_ctx_apply[] = "\n\ +apply(x) - Apply self to Decimal x.\n\ +\n"; + +static const char doc_ctx_clear_flags[] = "\n\ +clear_flags() - Reset all flags to False.\n\ +\n"; + +static const char doc_ctx_clear_traps[] = "\n\ +clear_traps() - Set all traps to False.\n\ +\n"; + +static const char doc_ctx_copy[] = "\n\ +copy() - Return a duplicate of the context with all flags cleared.\n\ +\n"; + +static const char doc_ctx_copy_decimal[] = "\n\ +copy_decimal(x) - Return a copy of Decimal x.\n\ +\n"; + +static const char doc_ctx_create_decimal[] = "\n\ +create_decimal(x) - Create a new Decimal instance from x, using self as the\n\ +context. Unlike the Decimal constructor, this function observes the context\n\ +limits.\n\ +\n"; + +static const char doc_ctx_create_decimal_from_float[] = "\n\ +create_decimal_from_float(f) - Create a new Decimal instance from float f.\n\ +Unlike the Decimal.from_float() class method, this function observes the\n\ +context limits.\n\ +\n"; + +static const char doc_ctx_Etiny[] = "\n\ +Etiny() - Return a value equal to Emin - prec + 1, which is the minimum\n\ +exponent value for subnormal results. When underflow occurs, the exponent\n\ +is set to Etiny.\n\ +\n"; + +static const char doc_ctx_Etop[] = "\n\ +Etop() - Return a value equal to Emax - prec + 1. This is the maximum exponent\n\ +if the _clamp field of the context is set to 1 (IEEE clamp mode). Etop() must\n\ +not be negative.\n\ +\n"; + +static const char doc_ctx_abs[] = "\n\ +abs(x) - Return the absolute value of x.\n\ +\n"; + +static const char doc_ctx_add[] = "\n\ +add(x, y) - Return the sum of x and y.\n\ +\n"; + +static const char doc_ctx_canonical[] = "\n\ +canonical(x) - Return a new instance of x.\n\ +\n"; + +static const char doc_ctx_compare[] = "\n\ +compare(x, y) - Compare x and y numerically.\n\ +\n"; + +static const char doc_ctx_compare_signal[] = "\n\ +compare_signal(x, y) - Compare x and y numerically. All NaNs signal.\n\ +\n"; + +static const char doc_ctx_compare_total[] = "\n\ +compare_total(x, y) - Compare x and y using their abstract representation.\n\ +\n"; + +static const char doc_ctx_compare_total_mag[] = "\n\ +compare_total_mag(x, y) - Compare x and y using their abstract representation,\n\ +ignoring sign.\n\ +\n"; + +static const char doc_ctx_copy_abs[] = "\n\ +copy_abs(x) - Return a copy of x with the sign set to 0.\n\ +\n"; + +static const char doc_ctx_copy_negate[] = "\n\ +copy_negate(x) - Return a copy of x with the sign inverted.\n\ +\n"; + +static const char doc_ctx_copy_sign[] = "\n\ +copy_sign(x, y) - Copy the sign from y to x.\n\ +\n"; + +static const char doc_ctx_div[] = "\n\ +div(x, y) - Return x divided by y. Alias for divide(x, y).\n\ +\n"; + +static const char doc_ctx_divide[] = "\n\ +divide(x, y) - Return x divided by y.\n\ +\n"; + +static const char doc_ctx_divide_int[] = "\n\ +divide_int(x, y) - Return x divided by y, truncated to an integer.\n\ +\n"; + +static const char doc_ctx_divint[] = "\n\ +divint(x, y) - Return x divided by y, truncated to an integer.\n\ +Alias for divide_int(x, y).\n\ +\n"; + +static const char doc_ctx_divmod[] = "\n\ +divmod(x, y) - Return quotient and remainder of the division x / y.\n\ +\n"; + +static const char doc_ctx_exp[] = "\n\ +exp(x) - Return e ** x.\n\ +\n"; + +static const char doc_ctx_fma[] = "\n\ +fma(x, y, z) - Return x multiplied by y, plus z.\n\ +\n"; + +static const char doc_ctx_is_canonical[] = "\n\ +is_canonical(x) - Return True if x is canonical, False otherwise.\n\ +\n"; + +static const char doc_ctx_is_finite[] = "\n\ +is_finite(x) - Return True if x is finite, False otherwise.\n\ +\n"; + +static const char doc_ctx_is_infinite[] = "\n\ +is_infinite(x) - Return True if x is infinite, False otherwise.\n\ +\n"; + +static const char doc_ctx_is_nan[] = "\n\ +is_nan(x) - Return True if x is a qNaN or sNaN, False otherwise.\n\ +\n"; + +static const char doc_ctx_is_normal[] = "\n\ +is_normal(x) - Return True if x is a normal number, False otherwise.\n\ +\n"; + +static const char doc_ctx_is_qnan[] = "\n\ +is_qnan(x) - Return True if x is a quiet NaN, False otherwise.\n\ +\n"; + +static const char doc_ctx_is_signed[] = "\n\ +is_signed(x) - Return True if x is negative, False otherwise.\n\ +\n"; + +static const char doc_ctx_is_snan[] = "\n\ +is_snan() - Return True if x is a signaling NaN, False otherwise.\n\ +\n"; + +static const char doc_ctx_is_subnormal[] = "\n\ +is_subnormal(x) - Return True if x is subnormal, False otherwise.\n\ +\n"; + +static const char doc_ctx_is_zero[] = "\n\ +is_zero(x) - Return True if x is a zero, False otherwise.\n\ +\n"; + +static const char doc_ctx_ln[] = "\n\ +ln(x) - Return the natural (base e) logarithm of x.\n\ +\n"; + +static const char doc_ctx_log10[] = "\n\ +log10(x) - Return the base 10 logarithm of x.\n\ +\n"; + +static const char doc_ctx_logb[] = "\n\ +logb(x) - Return the exponent of the magnitude of the operand's MSD.\n\ +\n"; + +static const char doc_ctx_logical_and[] = "\n\ +logical_and(x, y) - Digit-wise and of x and y.\n\ +\n"; + +static const char doc_ctx_logical_invert[] = "\n\ +logical_invert(x) - Invert all digits of x.\n\ +\n"; + +static const char doc_ctx_logical_or[] = "\n\ +logical_or(x, y) - Digit-wise or of x and y.\n\ +\n"; + +static const char doc_ctx_logical_xor[] = "\n\ +logical_xor(x, y) - Digit-wise xor of x and y.\n\ +\n"; + +static const char doc_ctx_max[] = "\n\ +max(x, y) - Compare the values numerically and return the maximum.\n\ +\n"; + +static const char doc_ctx_max_mag[] = "\n\ +max_mag(x, y) - Compare the values numerically with their sign ignored.\n\ +\n"; + +static const char doc_ctx_min[] = "\n\ +min(x, y) - Compare the values numerically and return the minimum.\n\ +\n"; + +static const char doc_ctx_min_mag[] = "\n\ +min_mag(x, y) - Compare the values numerically with their sign ignored.\n\ +\n"; + +static const char doc_ctx_minus[] = "\n\ +minus(x) - Minus corresponds to the unary prefix minus operator in Python,\n\ +but applies the context to the result.\n\ +\n"; + +static const char doc_ctx_mul[] = "\n\ +mul(x, y) - Return the product of x and y. Alias for multiply(x, y).\n\ +\n"; + +static const char doc_ctx_multiply[] = "\n\ +multiply(x, y) - Return the product of x and y.\n\ +\n"; + +static const char doc_ctx_next_minus[] = "\n\ +next_minus(x) - Return the largest representable number smaller than x.\n\ +\n"; + +static const char doc_ctx_next_plus[] = "\n\ +next_plus(x) - Return the smallest representable number larger than x.\n\ +\n"; + +static const char doc_ctx_next_toward[] = "\n\ +next_toward(x) - Return the number closest to x, in the direction towards y.\n\ +\n"; + +static const char doc_ctx_normalize[] = "\n\ +normalize(x) - Reduce x to its simplest form. Alias for reduce(x).\n\ +\n"; + +static const char doc_ctx_number_class[] = "\n\ +number_class(x) - Return an indication of the class of x.\n\ +\n"; + +static const char doc_ctx_plus[] = "\n\ +plus(x) - Plus corresponds to the unary prefix plus operator in Python,\n\ +but applies the context to the result.\n\ +\n"; + +static const char doc_ctx_pow[] = "\n\ +pow(x, y) - Compute x**y. Alias for power(x, y).\n\ +\n"; + +static const char doc_ctx_power[] = "\n\ +power(x, y) - Compute x**y. If x is negative, then y must be integral.\n\ +The result will be inexact unless y is integral and the result is finite\n\ +and can be expressed exactly in 'precision' digits.\n\ +\n"; + +static const char doc_ctx_powmod[] = "\n\ +powmod(x, y, m) - Compute (x**y) % m. The following restrictions hold:\n\ +\n\ + * all three arguments must be integral\n\ + * y must be nonnegative\n\ + * at least one of x or y must be nonzero\n\ + * m must be nonzero\n\ +\n\ +\n"; + +static const char doc_ctx_quantize[] = "\n\ +quantize(x, y) - Return a value equal to x (rounded), having the exponent of y.\n\ +\n"; + +static const char doc_ctx_radix[] = "\n\ +radix() - Return 10.\n\ +\n"; + +static const char doc_ctx_reduce[] = "\n\ +reduce(x) - Reduce x to its simplest form.\n\ +\n"; + +static const char doc_ctx_rem[] = "\n\ +rem(x, y) - Return the remainder from integer division. The sign of\n\ +the result, if non-zero, is the same as that of the original dividend.\n\ +\n\ +Alias for remainder(x, y).\n\ +\n"; + +static const char doc_ctx_remainder[] = "\n\ +remainder(x, y) - Return the remainder from integer division. The sign of\n\ +the result, if non-zero, is the same as that of the original dividend.\n\ +\n"; + +static const char doc_ctx_remainder_near[] = "\n\ +remainder_near(x, y) - Return x - y * n, where n is the integer nearest the\n\ +exact value of x / y (if the result is 0 then its sign will be the sign of x).\n\ +\n"; + +static const char doc_ctx_rotate[] = "\n\ +rotate(x, y) - Return a copy of x, rotated by y places.\n\ +\n"; + +static const char doc_ctx_same_quantum[] = "\n\ +same_quantum(x, y) - Return True if the two operands have the same exponent.\n\ +\n"; + +static const char doc_ctx_scaleb[] = "\n\ +scaleb(x, y) - Return the first operand after adding the second value\n\ +to its exp.\n\ +\n"; + +static const char doc_ctx_shift[] = "\n\ +shift(x, y) - Return a copy of x, shifted by y places.\n\ +\n"; + +static const char doc_ctx_sqrt[] = "\n\ +sqrt(x) - Square root of a non-negative number to context precision.\n\ +\n"; + +static const char doc_ctx_sub[] = "\n\ +sub(x, y) - Return the difference between x and y. Alias for subtract(x, y).\n\ +\n"; + +static const char doc_ctx_subtract[] = "\n\ +subtract(x, y) - Return the difference between x and y.\n\ +\n"; + +static const char doc_ctx_to_eng[] = "\n\ +to_eng(x) - Convert a number to a string, using engineering notation.\n\ +Alias for to_eng_string(x).\n\ +\n"; + +static const char doc_ctx_to_eng_string[] = "\n\ +to_eng_string(x) - Convert a number to a string, using engineering notation.\n\ +\n"; + +static const char doc_ctx_to_integral[] = "\n\ +to_integral(x) - Identical to to_integral_value(x).\n\ +\n"; + +static const char doc_ctx_to_integral_exact[] = "\n\ +to_integral_exact(x) - Round to an integer. Signal if the result is\n\ +rounded or inexact.\n\ +\n"; + +static const char doc_ctx_to_integral_value[] = "\n\ +to_integral_value(x) - Round to an integer.\n\ +\n"; + +static const char doc_ctx_to_sci[] = "\n\ +to_sci(x) - Convert a number to a string using scientific notation.\n\ +Alias for to_sci_string(x).\n\ +\n"; + +static const char doc_ctx_to_sci_string[] = "\n\ +to_sci_string(x) - Convert a number to a string using scientific notation.\n\ +\n"; + +/******************************************************************************/ +/* Context Object, Additional Methods */ +/******************************************************************************/ + +static const char doc_ctx_invroot[] = "\n\ +invroot(x) - Return the reciprocal of the square root of x.\n\ +\n"; + +static const char doc_ctx_setflags[] = "\n\ +setflags(list) - Set the context flags from a list containing signals.\n\ +\n"; + +static const char doc_ctx_settraps[] = "\n\ +settraps(list) - Set the context traps from a list containing signals.\n\ +\n"; + + +#endif + + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/error.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/error.c Thu Jan 7 13:02:51 2010 @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include + + +#include "mpdecimal.h" + + +void mpd_err_doit(int action, const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + fputc('\n', stderr); + va_end(ap); + + if (action == MPD_ERR_EXIT) { + exit(EXIT_FAILURE); + } +} + Added: python/branches/py3k-cdecimal/Modules/cdecimal/fnt.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/fnt.c Thu Jan 7 13:02:51 2010 @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include +#include "bits.h" +#include "difradix2.h" +#include "mpdecimal.h" +#include "numbertheory.h" +#include "fnt.h" + + +/* forward transform, sign = -1 */ +int +std_fnt(mpd_uint_t *a, size_t n, int modnum, int ordered UNUSED) +{ + struct fnt_params *tparams; + + assert(ispower2(n)); + assert(n >= 4); + assert(n <= 3*MPD_MAXTRANSFORM_2N); + + if ((tparams = _mpd_init_fnt_params(n, -1, modnum)) == NULL) { + return 0; + } + fnt_dif2(a, n, tparams); + + mpd_free(tparams); + return 1; +} + +/* reverse transform, sign = 1 */ +int +std_inv_fnt(mpd_uint_t *a, size_t n, int modnum, int ordered UNUSED) +{ + struct fnt_params *tparams; + + assert(ispower2(n)); + assert(n >= 4); + assert(n <= 3*MPD_MAXTRANSFORM_2N); + + if ((tparams = _mpd_init_fnt_params(n, 1, modnum)) == NULL) { + return 0; + } + fnt_dif2(a, n, tparams); + + mpd_free(tparams); + return 1; +} + + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/fnt.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/fnt.h Thu Jan 7 13:02:51 2010 @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#ifndef FNT_H +#define FNT_H + + +#include +#include "mpdecimal.h" + +int std_fnt(mpd_uint_t a[], size_t n, int modnum, int ordered UNUSED); +int std_inv_fnt(mpd_uint_t a[], size_t n, int modnum, int ordered UNUSED); + + +#endif + Added: python/branches/py3k-cdecimal/Modules/cdecimal/fourstep.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/fourstep.c Thu Jan 7 13:02:51 2010 @@ -0,0 +1,238 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include "mpdecimal.h" +#include "numbertheory.h" +#include "sixstep.h" +#include "transpose.h" +#include "umodarith.h" +#include "fourstep.h" + + +/* + * A variant of the four-step algorithm from: + * + * David H. Bailey: FFTs in External or Hierarchical Memory, Journal of + * Supercomputing, vol. 4, no. 1 (March 1990), p. 23-35. + * + * URL: http://crd.lbl.gov/~dhbailey/dhbpapers/ + */ + + +#ifndef PPRO +static inline void +std_size3_ntt(mpd_uint_t *x1, mpd_uint_t *x2, mpd_uint_t *x3, + mpd_uint_t w3table[3], mpd_uint_t umod) +{ + mpd_uint_t r1, r2; + mpd_uint_t w; + mpd_uint_t s, tmp; + + + /* k = 0 -> w = 1 */ + s = *x1; + s = addmod(s, *x2, umod); + s = addmod(s, *x3, umod); + + r1 = s; + + /* k = 1 */ + s = *x1; + + w = w3table[1]; + tmp = MULMOD(*x2, w); + s = addmod(s, tmp, umod); + + w = w3table[2]; + tmp = MULMOD(*x3, w); + s = addmod(s, tmp, umod); + + r2 = s; + + /* k = 2 */ + s = *x1; + + w = w3table[2]; + tmp = MULMOD(*x2, w); + s = addmod(s, tmp, umod); + + w = w3table[1]; + tmp = MULMOD(*x3, w); + s = addmod(s, tmp, umod); + + *x3 = s; + *x2 = r2; + *x1 = r1; +} +#else /* PPRO */ +static inline void +ppro_size3_ntt(mpd_uint_t *x1, mpd_uint_t *x2, mpd_uint_t *x3, mpd_uint_t w3table[3], + mpd_uint_t umod, double *dmod, uint32_t dinvmod[3]) +{ + mpd_uint_t r1, r2; + mpd_uint_t w; + mpd_uint_t s, tmp; + + + /* k = 0 -> w = 1 */ + s = *x1; + s = addmod(s, *x2, umod); + s = addmod(s, *x3, umod); + + r1 = s; + + /* k = 1 */ + s = *x1; + + w = w3table[1]; + tmp = ppro_mulmod(*x2, w, dmod, dinvmod); + s = addmod(s, tmp, umod); + + w = w3table[2]; + tmp = ppro_mulmod(*x3, w, dmod, dinvmod); + s = addmod(s, tmp, umod); + + r2 = s; + + /* k = 2 */ + s = *x1; + + w = w3table[2]; + tmp = ppro_mulmod(*x2, w, dmod, dinvmod); + s = addmod(s, tmp, umod); + + w = w3table[1]; + tmp = ppro_mulmod(*x3, w, dmod, dinvmod); + s = addmod(s, tmp, umod); + + *x3 = s; + *x2 = r2; + *x1 = r1; +} +#endif + + +/* forward transform, sign = -1; transform length = 3 * 2^n */ +int +four_step_fnt(mpd_uint_t *a, size_t n, int modnum, int ordered) +{ + size_t R = 3; /* number of rows */ + size_t C = n / 3; /* number of columns */ + mpd_uint_t w3table[3]; + mpd_uint_t kernel, w0, w1, wstep; + mpd_uint_t *s, *p0, *p1, *p2; + mpd_uint_t umod; +#ifdef PPRO + double dmod; + uint32_t dinvmod[3]; +#endif + size_t i, k; + + + assert(n >= 48); + assert(n <= 3*MPD_MAXTRANSFORM_2N); + + + SETMODULUS(modnum); + _mpd_init_w3table(w3table, -1, modnum); + /* size three ntt on the columns */ + for (p0=a, p1=p0+C, p2=p0+2*C; p0= 48); + assert(n <= 3*MPD_MAXTRANSFORM_2N); + + + if (ordered) { + transpose_3xpow2(a, C, R); + } + + /* transform rows */ + for (s = a; s < a+n; s += C) { + if (!inv_six_step_fnt(s, C, modnum, ordered)) { + return 0; + } + } + + + SETMODULUS(modnum); + kernel = _mpd_getkernel(n, 1, modnum); + for (i = 1; i < R; i++) { + w0 = 1; + w1 = POWMOD(kernel, i); + wstep = MULMOD(w1, w1); + for (k = 0; k < C; k += 2) { + mpd_uint_t x0 = a[i*C+k]; + mpd_uint_t x1 = a[i*C+k+1]; + MULMOD2(&x0, w0, &x1, w1); + MULMOD2C(&w0, &w1, wstep); + a[i*C+k] = x0; + a[i*C+k+1] = x1; + } + } + + + _mpd_init_w3table(w3table, 1, modnum); + /* size three ntt on the columns */ + for (p0=a, p1=p0+C, p2=p0+2*C; p0 +#include "mpdecimal.h" + +int four_step_fnt(mpd_uint_t *a, size_t n, int modnum, int ordered); +int inv_four_step_fnt(mpd_uint_t *a, size_t n, int modnum, int ordered); + + +#endif Added: python/branches/py3k-cdecimal/Modules/cdecimal/io.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/io.c Thu Jan 7 13:02:51 2010 @@ -0,0 +1,1349 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include "bits.h" +#include "constants.h" +#include "memory.h" +#include "mpdecimal.h" +#include "typearith.h" + + +/* + * Work around the behavior of tolower() and strcasecmp() in certain + * locales. For example, in tr_TR.utf8: + * + * tolower((unsigned char)'I') == 'I' + * + * u is the exact uppercase version of l; n is strlen(l) or strlen(l)+1 + */ +static inline int +_mpd_strneq(const char *s, const char *l, const char *u, size_t n) +{ + while (--n != SIZE_MAX) { + if (*s != *l && *s != *u) { + return 0; + } + s++; u++; l++; + } + + return 1; +} + +static mpd_ssize_t +strtoexp(const char *s) +{ + char *end; + mpd_ssize_t retval; + + errno = 0; + retval = mpd_strtossize(s, &end, 10); + if (errno == 0 && !(*s != '\0' && *end == '\0')) + errno = EINVAL; + + return retval; +} + + +/* + * Scan 'len' words. The most significant word contains 'r' digits, + * the remaining words are full words. Skip dpoint. The string 's' must + * consist of digits and an optional single decimal point at 'dpoint'. + */ +static void +string_to_coeff(mpd_uint_t *data, const char *s, const char *dpoint, int r, + size_t len) +{ + int j; + + if (r > 0) { + data[--len] = 0; + for (j = 0; j < r; j++, s++) { + if (s == dpoint) s++; + data[len] = 10 * data[len] + (*s - '0'); + } + } + + while (--len != SIZE_MAX) { + data[len] = 0; + for (j = 0; j < MPD_RDIGITS; j++, s++) { + if (s == dpoint) s++; + data[len] = 10 * data[len] + (*s - '0'); + } + } +} + +/* + * Scan for at most one decimal point and at most one indicator. + * Remove unneeded zeros before and after the decimal point. + * The first relevant digit will be the start of the coefficient. + * A decimal point may occur before an indicator. + * Plus or minus may occur directly after the indicator. + * The rest of the characters must be decimal digits. + * + * Return start of the coefficient or NULL or error. The end of + * the string is stored in 'end'. + */ +static const char * +scan_dpoint_exp(const char *s, const char **dpoint, const char **exp, + const char **end) +{ + const char *coeff = NULL; + + *dpoint = NULL; + *exp = NULL; + for (; *s != '\0'; s++) { + switch (*s) { + case '.': + if (*dpoint != NULL || *exp != NULL) + return NULL; + *dpoint = s; + break; + case 'E': case 'e': + if (*exp != NULL) + return NULL; + *exp = s; + if (*(s+1) == '+' || *(s+1) == '-') + s++; + break; + default: + if (!isdigit((uchar)*s)) + return NULL; + if (coeff == NULL && *exp == NULL) { + if (*s == '0') { + if (!isdigit((uchar)*(s+1))) + if (!(*(s+1) == '.' && + isdigit((uchar)*(s+2)))) + coeff = s; + } + else { + coeff = s; + } + } + break; + + } + } + + *end = s; + return coeff; +} + +/* scan the payload of a NaN */ +static const char * +scan_payload(const char *s, const char **end) +{ + const char *coeff; + + while (*s == '0') + s++; + coeff = s; + + while (isdigit((uchar)*s)) + s++; + *end = s; + + return (*s == '\0') ? coeff : NULL; +} + +/* convert a character string to a decimal */ +void +mpd_qset_string(mpd_t *dec, const char *s, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_ssize_t q, r, declen; + const char *coeff, *end; + const char *dpoint = NULL, *exp = NULL; + size_t len; + uint8_t sign = MPD_POS; + + dec->flags = 0; + dec->len = 0; + dec->exp = 0; + + /* [flags] */ + if (*s == '+') { + s++; + } + else if (*s == '-') { + mpd_set_negative(dec); + sign = MPD_NEG; + s++; + } + + if (_mpd_strneq(s, "nan", "NAN", 3)) { /* NaN */ + s += 3; + mpd_setspecial(dec, sign, MPD_NAN); + if (*s == '\0') + return; + /* only digits for the diagnostic code */ + if ((coeff = scan_payload(s, &end)) == NULL) + goto conversion_error; + /* payload consists entirely of zeros */ + if (*coeff == '\0') + return; + len = end - coeff; + /* prec >= 1, clamp is 0 or 1 */ + if (len > (size_t)(ctx->prec-ctx->clamp)) + goto conversion_error; + } /* sNaN */ + else if (_mpd_strneq(s, "snan", "SNAN", 4)) { + s += 4; + mpd_setspecial(dec, sign, MPD_SNAN); + if (*s == '\0') + return; + /* only digits for the diagnostic code */ + if ((coeff = scan_payload(s, &end)) == NULL) + goto conversion_error; + /* payload consists entirely of zeros */ + if (*coeff == '\0') + return; + len = end - coeff; + if (len > (size_t)(ctx->prec-ctx->clamp)) + goto conversion_error; + } + else if (_mpd_strneq(s, "inf", "INF", 3)) { + s += 3; + if (*s == '\0' || _mpd_strneq(s, "inity", "INITY", 6)) { + /* numeric-value: infinity */ + mpd_setspecial(dec, sign, MPD_INF); + return; + } + goto conversion_error; + } + else { + /* scan for start of coefficient, decimal point, indicator, end */ + if ((coeff = scan_dpoint_exp(s, &dpoint, &exp, &end)) == NULL) + goto conversion_error; + + /* numeric-value: [exponent-part] */ + if (exp) { + /* exponent-part */ + end = exp; exp++; + dec->exp = strtoexp(exp); + if (errno == EINVAL) + goto conversion_error; + if ((errno == ERANGE && dec->exp == MPD_SSIZE_MAX) + || dec->exp > MPD_EXP_INF) + dec->exp = MPD_EXP_INF; + else if ((errno == ERANGE && dec->exp == MPD_SSIZE_MIN) + || dec->exp < MPD_EXP_CLAMP) + dec->exp = MPD_EXP_CLAMP; + } + + len = end - coeff; + if (dpoint) { + dec->exp -= (end-dpoint-1); + if (dpoint > coeff) len--; + } + if (len > MPD_MAX_PREC) { + goto conversion_error; + } + } + + _mpd_idiv_word(&q, &r, (mpd_ssize_t)len, MPD_RDIGITS); + + declen = (r == 0) ? q : q+1; + if (declen == 0) { + goto conversion_error; + } + if (!mpd_qresize(dec, declen, status)) { + mpd_seterror(dec, MPD_Malloc_error, status); + return; + } + dec->len = declen; + + string_to_coeff(dec->data, coeff, dpoint, (int)r, declen); + + mpd_setdigits(dec); + mpd_qfinalize(dec, ctx, status); + return; + +conversion_error: + /* standard wants a positive NaN */ + mpd_seterror(dec, MPD_Conversion_syntax, status); +} + +/* print the exponent to a string */ +static inline char * +exp_to_string(char *s, mpd_ssize_t x, int print_sign) +{ + mpd_ssize_t q, d; + char sign = '+'; + int j; + + if (x < 0) { + sign = '-'; + x = -x; + } + + if (print_sign) + *s++ = sign; + + j = mpd_exp_digits(x) - 1; + + for (; j != 0; --j) { + d = mpd_pow10[j]; + q = x / d; + x -= d * q; + *s++ = '0' + q; + } + *s++ = '0' + x; + + return s; +} + +/* print coefficient to string, len(dec) > 0 */ +static inline char * +coeff_to_string(char *s, const mpd_t *dec) +{ + mpd_uint_t x, q, d; + mpd_ssize_t i; + int j; + + /* most significant word */ + x = mpd_msword(dec); + j = mpd_word_digits(x) - 1; + + for (; j != 0; --j) { + d = mpd_pow10[j]; + q = x / d; + x -= d * q; + *s++ = '0' + q; + } + *s++ = '0' + x; + + /* remaining full words */ + for (i=dec->len-2; i >= 0; --i) { + x = dec->data[i]; + for (j=MPD_RDIGITS-1; j != 0; --j) { + d = mpd_pow10[j]; + q = x / d; + x -= d * q; + *s++ = '0' + q; + } + *s++ = '0' + x; + } + + return s; +} + +/* print coefficient to string, len(dec) > 0 */ +static inline char * +coeff_to_string_dot(char *s, char *dot, const mpd_t *dec) +{ + mpd_uint_t x, q, d; + mpd_ssize_t i; + int j; + + /* most significant word */ + x = mpd_msword(dec); + j = mpd_word_digits(x) - 1; + + for (; j >= 0; --j) { + if (s == dot) + *s++ = '.'; + d = mpd_pow10[j]; + q = x / d; + x -= d * q; + *s++ = '0' + q; + } + + /* remaining full words */ + for (i=dec->len-2; i >= 0; --i) { + x = dec->data[i]; + for (j=MPD_RDIGITS-1; j >= 0; --j) { + if (s == dot) + *s++ = '.'; + d = mpd_pow10[j]; + q = x / d; + x -= d * q; + *s++ = '0' + q; + } + } + + return s; +} + +/* Format type */ +#define MPD_FMT_LOWER 0x00000000 +#define MPD_FMT_UPPER 0x00000001 +#define MPD_FMT_TOSCI 0x00000002 +#define MPD_FMT_TOENG 0x00000004 +#define MPD_FMT_EXP 0x00000008 +#define MPD_FMT_FIXED 0x00000010 +#define MPD_FMT_PERCENT 0x00000020 +#define MPD_FMT_SIGN_SPACE 0x00000040 +#define MPD_FMT_SIGN_PLUS 0x00000080 + +/* + * Return the string representation of a decimal. Formatting is done according + * to 'flags'. A return value of NULL indicates MPD_Malloc_error. + * + * To allow formatting like [0e15, '.6e' -> 0.000000e-9], 'zeroexp' is used + * in combination with MPD_FMT_FIXED (see mpd_qformat for details). + */ +static char * +_mpd_to_string(const mpd_t *dec, int flags, mpd_ssize_t zeroexp) +{ + char *decstring = NULL, *cp = NULL; + mpd_ssize_t ldigits, dplace; + mpd_ssize_t mem = 0, k; + + if (mpd_isspecial(dec)) { + + mem = sizeof "-Infinity"; + if (mpd_isnan(dec) && dec->len > 0) { + /* diagnostic code */ + mem += dec->digits; + } + cp = decstring = mpd_alloc(mem, sizeof *decstring); + if (cp == NULL) { + return NULL; + } + + if (mpd_isnegative(dec)) { + *cp++ = '-'; + } + else if (flags&MPD_FMT_SIGN_SPACE) { + *cp++ = ' '; + } + else if (flags&MPD_FMT_SIGN_PLUS) { + *cp++ = '+'; + } + + if (mpd_isnan(dec)) { + if (mpd_isqnan(dec)) { + strcpy(cp, "NaN"); + cp += 3; + } + else { + strcpy(cp, "sNaN"); + cp += 4; + } + if (dec->len > 0) { /* diagnostic code */ + cp = coeff_to_string(cp, dec); + } + } + else if (mpd_isinfinite(dec)) { + strcpy(cp, "Infinity"); + cp += 8; + } + else { /* debug */ + abort(); + } + } + else { + assert(dec->len > 0); + + /* + * ldigits: Digits to the left of the decimal point, as if the + * number was written without exponent notation. + * + * dplace: Position of the decimal point relative to the first + * member of the coefficient. + * + * 0.00000_.____._____000000. + * ^ ^ ^ ^ + * | | | | + * | | | `- dplace in the last position + * | | `- dplace in the middle of the coefficient + * | ` dplace = 1 (after the first coefficient digit) + * `- dplace is negative + */ + + ldigits = dec->digits + dec->exp; + dplace = 1; /* default for MPD_FMT_TOSCI, MPD_FMT_EXP */ + + if (flags&MPD_FMT_EXP) { + ; + } + else if (flags&MPD_FMT_FIXED || (dec->exp <= 0 && ldigits > -6)) { + /* MPD_FMT_FIXED: always use fixed point notation. + * MPD_FMT_TOSCI, MPD_FMT_TOENG: for a certain range, + * override exponent notation. */ + dplace = ldigits; + } + else if (flags&MPD_FMT_TOENG) { + if (mpd_iszero(dec)) { + /* If the exponent is divisible by three, + * dplace = 1. Otherwise, move dplace one + * or two places to the left. */ + dplace = -1 + mod_mpd_ssize_t(dec->exp+2, 3); + } + else { /* ldigits-1 is the adjusted exponent, which + * should be divisible by three. If not, move + * dplace one or two places to the right. */ + dplace += mod_mpd_ssize_t(ldigits-1, 3); + } + } + + /* + * Basic space requirements: + * + * [-][.][coeffdigits][E][-][expdigits+1][%]['\0'] + * + * If the decimal point lies outside of the coefficient digits, + * space is adjusted accordingly. + */ + if (dplace <= 0) { + mem = -dplace + dec->digits + 2; + } + else if (dplace >= dec->digits) { + mem = dplace; + } + else { + mem = dec->digits; + } + mem += (MPD_EXPDIGITS+1+6); + + cp = decstring = mpd_alloc(mem, sizeof *decstring); + if (cp == NULL) { + return NULL; + } + + + if (mpd_isnegative(dec)) { + *cp++ = '-'; + } + else if (flags&MPD_FMT_SIGN_SPACE) { + *cp++ = ' '; + } + else if (flags&MPD_FMT_SIGN_PLUS) { + *cp++ = '+'; + } + + if (dplace <= 0) { + /* space: -dplace+dec->digits+2 */ + *cp++ = '0'; + *cp++ = '.'; + for (k = 0; k < -dplace; k++) { + *cp++ = '0'; + } + cp = coeff_to_string(cp, dec); + } + else if (dplace >= dec->digits) { + /* space: dplace */ + cp = coeff_to_string(cp, dec); + for (k = 0; k < dplace-dec->digits; k++) { + *cp++ = '0'; + } + } + else { + /* space: dec->digits+1 */ + cp = coeff_to_string_dot(cp, cp+dplace, dec); + } + + /* + * Conditions for printing an exponent: + * + * MPD_FMT_TOSCI, MPD_FMT_TOENG: only if ldigits != dplace + * MPD_FMT_FIXED: never (ldigits == dplace) + * MPD_FMT_EXP: always + * MPD_FMT_FIXED with zeroexp: always + */ + if (ldigits != dplace || flags&MPD_FMT_EXP || zeroexp != MPD_SSIZE_MAX) { + /* space: expdigits+2 */ + mpd_ssize_t x = (zeroexp != MPD_SSIZE_MAX) ? zeroexp : ldigits-dplace; + *cp++ = (flags&MPD_FMT_UPPER) ? 'E' : 'e'; + cp = exp_to_string(cp, x, 1); + } + + if (flags&MPD_FMT_PERCENT) { + *cp++ = '%'; + } + } + + assert(cp < decstring+mem); + *cp = '\0'; + return decstring; +} + +char * +mpd_to_sci(const mpd_t *dec, int fmt) +{ + int flags = MPD_FMT_TOSCI; + + flags |= fmt ? MPD_FMT_UPPER : MPD_FMT_LOWER; + return _mpd_to_string(dec, flags, MPD_SSIZE_MAX); +} + +char * +mpd_to_eng(const mpd_t *dec, int fmt) +{ + int flags = MPD_FMT_TOENG; + + flags |= fmt ? MPD_FMT_UPPER : MPD_FMT_LOWER; + return _mpd_to_string(dec, flags, MPD_SSIZE_MAX); +} + +/* Copy a single UTF-8 char to dest. */ +static int +_mpd_copy_utf8(char dest[5], const char *s) +{ + const uchar *cp = (const uchar *)s; + uchar lb, ub; + int count, i; + + + if (*cp == 0) { + /* empty string */ + dest[0] = '\0'; + return 0; + } + else if (*cp <= 0x7f) { + /* ascii */ + dest[0] = *cp; + dest[1] = '\0'; + return 1; + } + else if (0xc2 <= *cp && *cp <= 0xdf) { + lb = 0x80; ub = 0xbf; + count = 2; + } + else if (*cp == 0xe0) { + lb = 0xa0; ub = 0xbf; + count = 3; + } + else if (*cp <= 0xec) { + lb = 0x80; ub = 0xbf; + count = 3; + } + else if (*cp == 0xed) { + lb = 0x80; ub = 0x9f; + count = 3; + } + else if (*cp <= 0xef) { + lb = 0x80; ub = 0xbf; + count = 3; + } + else if (*cp == 0xf0) { + lb = 0x90; ub = 0xbf; + count = 4; + } + else if (*cp <= 0xf3) { + lb = 0x80; ub = 0xbf; + count = 4; + } + else if (*cp == 0xf4) { + lb = 0x80; ub = 0x8f; + count = 4; + } + else { + /* invalid */ + goto error; + } + + dest[0] = *cp++; + if (*cp < lb || ub < *cp) { + goto error; + } + dest[1] = *cp++; + for (i = 2; i < count; i++) { + if (*cp < 0x80 || 0xbf < *cp) { + goto error; + } + dest[i] = *cp++; + } + dest[i] = '\0'; + + return count; + +error: + dest[0] = '\0'; + return -1; +} + +int +mpd_parse_fmt_str(mpd_spec_t *spec, const char *fmt) +{ + char *cp = (char *)fmt; + int have_align = 0, n; + + /* defaults */ + spec->min_width = 0; + spec->prec = -1; + spec->type = 'G'; + spec->align = '>'; + spec->sign = '-'; + spec->dot = ""; + spec->sep = ""; + spec->grouping = ""; + + + /* presume that the first character is a UTF-8 fill character */ + if ((n = _mpd_copy_utf8(spec->fill, cp)) < 0) { + return 0; + } + + /* alignment directive, prefixed by a fill character */ + if (*cp && (*(cp+n) == '<' || *(cp+n) == '>' || + *(cp+n) == '=' || *(cp+n) == '^')) { + cp += n; + spec->align = *cp++; + have_align = 1; + } /* alignment directive */ + else { + /* default fill character */ + spec->fill[0] = ' '; + spec->fill[1] = '\0'; + if (*cp == '<' || *cp == '>' || + *cp == '=' || *cp == '^') { + spec->align = *cp++; + have_align = 1; + } + } + + /* sign formatting */ + if (*cp == '+' || *cp == '-' || *cp == ' ') { + spec->sign = *cp++; + } + + /* zero padding */ + if (*cp == '0') { + /* zero padding implies alignment, which should not be + * specified twice. */ + if (have_align) { + return 0; + } + spec->align = 'z'; + spec->fill[0] = *cp++; + spec->fill[1] = '\0'; + } + + /* minimum width */ + if (isdigit((uchar)*cp)) { + if (*cp == '0') { + return 0; + } + errno = 0; + spec->min_width = mpd_strtossize(cp, &cp, 10); + if (errno == ERANGE || errno == EINVAL) { + return 0; + } + } + + /* thousands separator */ + if (*cp == ',') { + spec->dot = "."; + spec->sep = ","; + spec->grouping = "\003\003"; + cp++; + } + + /* fraction digits or significant digits */ + if (*cp == '.') { + cp++; + if (!isdigit((uchar)*cp)) { + return 0; + } + errno = 0; + spec->prec = mpd_strtossize(cp, &cp, 10); + if (errno == ERANGE || errno == EINVAL) { + return 0; + } + } + + /* type */ + if (*cp == 'E' || *cp == 'e' || *cp == 'F' || *cp == 'f' || + *cp == 'G' || *cp == 'g' || *cp == '%') { + spec->type = *cp++; + } + else if (*cp == 'N' || *cp == 'n') { + /* locale specific conversion */ + struct lconv *lc; + spec->type = *cp++; + /* separator has already been specified */ + if (*spec->sep) return 0; + spec->type = (spec->type == 'N') ? 'G' : 'g'; + lc = localeconv(); + spec->dot = lc->decimal_point; + spec->sep = lc->thousands_sep; + spec->grouping = lc->grouping; + } + + /* check correctness */ + if (*cp != '\0') { + return 0; + } + + return 1; +} + +/* Multibyte string */ +typedef struct { + mpd_ssize_t nbytes; /* length in bytes */ + mpd_ssize_t nchars; /* length in chars */ + mpd_ssize_t cur; /* current write index */ + char *data; +} mpd_mbstr_t; + +static inline void +_mpd_bcopy(char *dest, const char *src, mpd_ssize_t n) +{ + while (--n >= 0) { + dest[n] = src[n]; + } +} + +static inline void +_mbstr_copy_char(mpd_mbstr_t *dest, const char *src, mpd_ssize_t n) +{ + dest->nbytes += n; + dest->nchars += 1; + dest->cur -= n; + + if (dest->data != NULL) { + _mpd_bcopy(dest->data+dest->cur, src, n); + } +} + +static inline void +_mbstr_copy_ascii(mpd_mbstr_t *dest, const char *src, mpd_ssize_t n) +{ + dest->nbytes += n; + dest->nchars += n; + dest->cur -= n; + + if (dest->data != NULL) { + _mpd_bcopy(dest->data+dest->cur, src, n); + } +} + +static inline void +_mbstr_copy_pad(mpd_mbstr_t *dest, mpd_ssize_t n) +{ + dest->nbytes += n; + dest->nchars += n; + dest->cur -= n; + + if (dest->data != NULL) { + char*cp = dest->data + dest->cur; + while (--n >= 0) { + cp[n] = '0'; + } + } +} + +/* + * Copy the decimal to dest, adding separators according to + * spec->grouping. If leading zero padding is enabled and the + * result is smaller than spec->min_width, continue adding zeros + * and separators until min_width is reached. + */ +static void +_mpd_add_sep_dot(mpd_mbstr_t *dest, + const char *src, mpd_ssize_t n_src, /* integer part and length */ + const char *sign, const char *dot, const char *rest, + mpd_spec_t *spec) +{ + mpd_ssize_t n_sep, n_sign, consume; + const char *g; + int pad = 0; + + n_sign = sign ? 1 : 0; + n_sep = strlen(spec->sep); + g = spec->grouping; + dest->cur = dest->nbytes; + dest->nbytes = dest->nchars = 0; + + _mbstr_copy_ascii(dest, rest, strlen(rest)); + + if (dot) { + _mbstr_copy_char(dest, dot, strlen(dot)); + } + + consume = *g; + while (1) { + if (*g == 0 || *g == CHAR_MAX || consume > n_src) { + consume = n_src; + } + n_src -= consume; + if (pad) { + _mbstr_copy_pad(dest, consume); + } + else { + _mbstr_copy_ascii(dest, src+n_src, consume); + } + + if (n_src == 0) { + if (spec->align == 'z' && + dest->nchars + n_sign < spec->min_width) { + n_src = spec->min_width - (dest->nchars + n_sign); + consume = *g - consume; + pad = 1; + continue; + } + break; + } + + if (n_sep > 0) { + if (pad && n_src > 1) n_src -= 1; + _mbstr_copy_char(dest, spec->sep, n_sep); + } + + if (*g && *(g+1)) g++; + consume = *g; + } + + if (sign) { + _mbstr_copy_ascii(dest, sign, 1); + } + + if (dest->data) { + dest->data[dest->nbytes] = '\0'; + } +} + +/* Change decstring to locale-specific appearance. */ +static void +_mpd_apply_lconv(mpd_mbstr_t *result, char *decstring, mpd_spec_t *spec, + uint32_t *status) +{ + const char *sign = NULL, *intpart = NULL; + const char *dot = NULL, *rest = NULL; + const char *dp; + size_t n_int; + + assert(result->data == NULL); + + dp = decstring; + n_int = 0; + + if (!isdigit((uchar)*dp)) { + sign = dp++; + } + if (isdigit((uchar)*dp)) { + intpart = dp++; + while (isdigit((uchar)*dp)) { + dp++; + } + n_int = dp-intpart; + } + if (*dp == '.') { + if (*spec->dot == '\0') { + /* decimal point must be present */ + *status |= MPD_Invalid_operation; + mpd_free(decstring); + return; + } + dp++; dot = spec->dot; + } + rest = dp; + + + if (!dot && !(intpart && *spec->sep && *spec->grouping)) { + result->data = decstring; + result->nbytes = result->nchars = strlen(decstring); + return; + } + + /* Get the size of the new decimal string after inserting dot and + * separators. */ + _mpd_add_sep_dot(result, intpart, n_int, sign, dot, rest, spec); + + if ((result->data = mpd_alloc(result->nbytes+1, 1)) == NULL) { + *status |= MPD_Malloc_error; + mpd_free(decstring); + return; + } + + /* Perform actual writes. */ + _mpd_add_sep_dot(result, intpart, n_int, sign, dot, rest, spec); + + mpd_free(decstring); +} + +/* Add padding to the formatted string if necessary. */ +static void +_mpd_add_pad(mpd_mbstr_t *result, mpd_spec_t *spec, uint32_t *status) +{ + if (result->nchars < spec->min_width) { + size_t lpad = 0, rpad = 0; + size_t add_chars, add_bytes, n_fill; + size_t len, i, j; + uint8_t err = 0; + char *cp; + + n_fill = strlen(spec->fill); + add_chars = (spec->min_width - result->nchars); + add_bytes = mul_size_t(add_chars, n_fill); + + cp = result->data = mpd_realloc(result->data, + result->nbytes+add_bytes+1, + sizeof *result->data, &err); + if (err) { + *status |= MPD_Malloc_error; + mpd_free(result->data); + return; + } + + if (spec->align == 'z') { + spec->align = '='; + } + + if (spec->align == '<') { + rpad = add_chars; + } + else if (spec->align == '>' || spec->align == '=') { + lpad = add_chars; + } + else { /* align == '^' */ + lpad = add_chars/2; + rpad = add_chars-lpad; + } + + len = result->nbytes; + if (spec->align == '=' && (*cp == '-' || *cp == '+' || + *cp == ' ')) { + /* leave sign in the leading position */ + cp++; len--; + } + + memmove(cp+n_fill*lpad, cp, len); + for (i = 0; i < lpad; i++) { + for (j = 0; j < n_fill; j++) { + cp[i*n_fill+j] = spec->fill[j]; + } + } + cp += (n_fill*lpad + len); + for (i = 0; i < rpad; i++) { + for (j = 0; j < n_fill; j++) { + cp[i*n_fill+j] = spec->fill[j]; + } + } + + result->nbytes += add_bytes; + result->nchars += add_chars; + result->data[result->nbytes] = '\0'; + } +} + +/* + * Return the string representation of an mpd_t, formatted according to 'spec'. + * 'spec' is modified. The format specification is assumed to be valid. Memory + * errors are indicated as usual. This function is quiet. + */ +char * +mpd_qformat_spec(const mpd_t *dec, mpd_spec_t *spec, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_context_t workctx; + mpd_uint_t dt[MPD_MINALLOC_MAX]; + mpd_t tmp = {MPD_STATIC|MPD_STATIC_DATA,0,0,0,MPD_MINALLOC_MAX,dt}; + mpd_ssize_t prec, fracdigits, exp; + mpd_ssize_t zeroexp = MPD_SSIZE_MAX; + mpd_mbstr_t result; + char *decstring; + int flags = 0; + + + if (!mpd_qcopy(&tmp, dec, status)) { + return NULL; + } + + if (spec->type == '%') { + tmp.exp += 2; + spec->type = 'f'; + flags |= MPD_FMT_PERCENT; + } + + if (isupper((uchar)spec->type)) { + spec->type = tolower((uchar)spec->type); + flags |= MPD_FMT_UPPER; + } + if (spec->sign == ' ') { + flags |= MPD_FMT_SIGN_SPACE; + } + else if (spec->sign == '+') { + flags |= MPD_FMT_SIGN_PLUS; + } + + workctx = *ctx; + workctx.traps = workctx.status = 0; + if (mpd_isspecial(&tmp)) { + /* no percent formatting */ + flags |= MPD_FMT_TOSCI; + if (spec->align == 'z') { + spec->fill[0] = ' '; + spec->fill[1] = '\0'; + spec->align = '>'; + } + } + else if (spec->type == 'g') { + /* spec->prec: significant digits */ + prec = (spec->prec < 0) ? dec->digits : spec->prec; + workctx.prec = (prec == 0) ? 1 : prec; + flags |= MPD_FMT_TOSCI; + mpd_qfinalize(&tmp, &workctx, &workctx.status); + } + else { + /* spec->prec: fraction digits */ + if (spec->type == 'e') { + fracdigits = (spec->prec < 0) ? tmp.digits-1 : spec->prec; + if (mpd_iszero(&tmp)) { + zeroexp = tmp.exp+fracdigits; + exp = -fracdigits; + flags |= MPD_FMT_FIXED; + } + else { + exp = tmp.exp + tmp.digits-(fracdigits+1); + flags |= MPD_FMT_EXP; + } + } + else { /* 'f' */ + fracdigits = spec->prec; + if (fracdigits < 0) { + fracdigits = (tmp.exp < 0) ? -tmp.exp : 0; + } + exp = -fracdigits; + fracdigits += (tmp.exp+tmp.digits); + fracdigits = (fracdigits < 0) ? 0 : fracdigits; + flags |= MPD_FMT_FIXED; + } + workctx.prec = fracdigits+1; + mpd_qrescale(&tmp, &tmp, exp, &workctx, &workctx.status); + if (tmp.digits > workctx.prec) { + mpd_qfinalize(&tmp, &workctx, &workctx.status); + } + } + + if ((decstring = _mpd_to_string(&tmp, flags, zeroexp)) == NULL) { + *status |= MPD_Malloc_error; + mpd_del(&tmp); + return NULL; + } + + result.data = decstring; + result.nbytes = result.nchars = 0; + if (!mpd_isspecial(&tmp) && *spec->dot != '\0') { + result.data = NULL; + _mpd_apply_lconv(&result, decstring, spec, status); + if (result.data == NULL) { + goto finish; + } + } + + if (spec->min_width) { + if (result.nbytes == 0) { + result.nbytes = result.nchars = strlen(result.data); + } + _mpd_add_pad(&result, spec, status); + } + + +finish: + mpd_del(&tmp); + return result.data; +} + +char * +mpd_qformat(const mpd_t *dec, const char *fmt, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_spec_t spec; + + if (!mpd_parse_fmt_str(&spec, fmt)) { + *status |= MPD_Invalid_operation; + return NULL; + } + + return mpd_qformat_spec(dec, &spec, ctx, status); +} + +/* + * The specification has a *condition* called Invalid_operation and an + * IEEE *signal* called Invalid_operation. The former corresponds to + * MPD_Invalid_operation, the latter to MPD_IEEE_Invalid_operation. + * MPD_IEEE_Invalid_operation comprises the following conditions: + * + * [MPD_Conversion_syntax, MPD_Division_impossible, MPD_Division_undefined, + * MPD_Fpu_error, MPD_Invalid_context, MPD_Invalid_operation, + * MPD_Malloc_error] + * + * In the following functions, 'flag' denotes the condition, 'signal' + * denotes the IEEE signal. + */ + +static const char *mpd_flag_string[MPD_NUM_FLAGS] = { + "Clamped", + "Conversion_syntax", + "Division_by_zero", + "Division_impossible", + "Division_undefined", + "Fpu_error", + "Inexact", + "Invalid_context", + "Invalid_operation", + "Malloc_error", + "Not_implemented", + "Overflow", + "Rounded", + "Subnormal", + "Underflow", +}; + +static const char *mpd_signal_string[MPD_NUM_FLAGS] = { + "Clamped", + "IEEE_Invalid_operation", + "Division_by_zero", + "IEEE_Invalid_operation", + "IEEE_Invalid_operation", + "IEEE_Invalid_operation", + "Inexact", + "IEEE_Invalid_operation", + "IEEE_Invalid_operation", + "IEEE_Invalid_operation", + "Not_implemented", + "Overflow", + "Rounded", + "Subnormal", + "Underflow", +}; + +/* print conditions to buffer, separated by spaces */ +int +mpd_snprint_flags(char *dest, int nmemb, uint32_t flags) +{ + char *cp; + int n, j; + + assert(nmemb >= MPD_MAX_FLAG_STRING); + + *dest = '\0'; cp = dest; + for (j = 0; j < MPD_NUM_FLAGS; j++) { + if (flags & (1U<= nmemb) return -1; + cp += n; nmemb -= n; + } + } + + if (cp != dest) { + *(--cp) = '\0'; + } + + return (int)(cp-dest); +} + +/* print conditions to buffer, in list form */ +int +mpd_lsnprint_flags(char *dest, int nmemb, uint32_t flags, const char *flag_string[]) +{ + char *cp; + int n, j; + + assert(nmemb >= MPD_MAX_FLAG_LIST); + if (flag_string == NULL) { + flag_string = mpd_flag_string; + } + + *dest = '['; + *(dest+1) = '\0'; + cp = dest+1; + --nmemb; + + for (j = 0; j < MPD_NUM_FLAGS; j++) { + if (flags & (1U<= nmemb) return -1; + cp += n; nmemb -= n; + } + } + + /* erase the last ", " */ + if (cp != dest+1) { + cp -= 2; + } + + *cp++ = ']'; + *cp = '\0'; + + return (int)(cp-dest); /* strlen, without NUL terminator */ +} + +/* print signals to buffer, in list form */ +int +mpd_lsnprint_signals(char *dest, int nmemb, uint32_t flags, const char *signal_string[]) +{ + char *cp; + int n, j; + int ieee_invalid_done = 0; + + assert(nmemb >= MPD_MAX_SIGNAL_LIST); + if (signal_string == NULL) { + signal_string = mpd_signal_string; + } + + *dest = '['; + *(dest+1) = '\0'; + cp = dest+1; + --nmemb; + + for (j = 0; j < MPD_NUM_FLAGS; j++) { + uint32_t f = flags & (1U<= nmemb) return -1; + cp += n; nmemb -= n; + } + } + + /* erase the last ", " */ + if (cp != dest+1) { + cp -= 2; + } + + *cp++ = ']'; + *cp = '\0'; + + return (int)(cp-dest); /* strlen, without NUL terminator */ +} + +void +mpd_fprint(FILE *file, const mpd_t *dec) +{ + char *decstring; + + decstring = mpd_to_sci(dec, 1); + if (decstring != NULL) { + fprintf(file, "%s\n", decstring); + mpd_free(decstring); + } + else { + fputs("mpd_fprint: output error\n", file); + } +} + +void +mpd_print(const mpd_t *dec) +{ + char *decstring; + + decstring = mpd_to_sci(dec, 1); + if (decstring != NULL) { + printf("%s\n", decstring); + mpd_free(decstring); + } + else { + fputs("mpd_fprint: output error", stderr); + } +} + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/memory.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/memory.c Thu Jan 7 13:02:51 2010 @@ -0,0 +1,241 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include "mpdecimal.h" +#include "typearith.h" +#include "memory.h" + + +mpd_ssize_t MPD_MINALLOC = MPD_MINALLOC_MIN; + +void *(* mpd_mallocfunc)(size_t size) = malloc; +void *(* mpd_reallocfunc)(void *ptr, size_t size) = realloc; +void *(* mpd_callocfunc)(size_t nmemb, size_t size) = calloc; +void (* mpd_free)(void *ptr) = free; + + +/* emulate calloc if it is not available */ +void * +mpd_callocfunc_em(size_t nmemb, size_t size) +{ + void *ptr; + size_t req; + + req = mul_size_t(nmemb, size); + if ((ptr = mpd_mallocfunc(req)) == NULL) { + return NULL; + } + /* used on uint32_t or uint64_t */ + memset(ptr, 0, req); + + return ptr; +} + + +/* malloc with overflow checking */ +void * +mpd_alloc(size_t nmemb, size_t size) +{ + void *ptr; + size_t req; + + req = mul_size_t(nmemb, size); + if ((ptr = mpd_mallocfunc(req)) == NULL) { + return NULL; + } + + return ptr; +} + +/* calloc with overflow checking */ +void * +mpd_calloc(size_t nmemb, size_t size) +{ + void *ptr; + + if ((ptr = mpd_callocfunc(nmemb, size)) == NULL) { + return NULL; + } + + return ptr; +} + +/* realloc with overflow checking */ +void * +mpd_realloc(void *ptr, size_t nmemb, size_t size, uint8_t *err) +{ + void *new; + size_t req; + + req = mul_size_t(nmemb, size); + if ((new = mpd_reallocfunc(ptr, req)) == NULL) { + *err = 1; + return ptr; + } + + return new; +} + +/* struct hack malloc with overflow checking */ +void * +mpd_sh_alloc(size_t struct_size, size_t nmemb, size_t size) +{ + void *ptr; + size_t req; + + req = mul_size_t(nmemb, size); + req = add_size_t(req, struct_size); + if ((ptr = mpd_mallocfunc(req)) == NULL) { + return NULL; + } + + return ptr; +} + +/* mpd_callocfunc must have overflow checking */ +void * +mpd_sh_calloc(size_t struct_size, size_t nmemb, size_t size) +{ + void *ptr; + size_t req; + + req = mul_size_t(nmemb, size); + req = add_size_t(req, struct_size); + if ((ptr = mpd_callocfunc(req, 1)) == NULL) { + return NULL; + } + + return ptr; +} + +/* struct hack realloc with overflow checking */ +void * +mpd_sh_realloc(void *ptr, size_t struct_size, size_t nmemb, size_t size, uint8_t *err) +{ + void *new; + size_t req; + + req = mul_size_t(nmemb, size); + req = add_size_t(req, struct_size); + if ((new = mpd_reallocfunc(ptr, req)) == NULL) { + *err = 1; + return ptr; + } + + return new; +} + + +/* Allocate a new decimal with data-size 'size'. + * In case of an error the return value is NULL. + */ +mpd_t * +mpd_qnew_size(mpd_ssize_t size) +{ + mpd_t *result; + + size = (size < MPD_MINALLOC) ? MPD_MINALLOC : size; + + if ((result = mpd_alloc(1, sizeof *result)) == NULL) { + return NULL; + } + if ((result->data = mpd_alloc(size, sizeof *result->data)) == NULL) { + mpd_free(result); + return NULL; + } + + result->flags = result->exp = result->digits = result->len = 0; + result->alloc = size; + + return result; +} + +/* Allocate a new decimal with data-size MPD_MINALLOC. + * In case of an error the return value is NULL. + */ +mpd_t * +mpd_qnew(void) +{ + return mpd_qnew_size(MPD_MINALLOC); +} + +/* Allocate new decimal. Caller can check for NULL or MPD_Malloc_error. + * Raises on error. + */ +mpd_t * +mpd_new(mpd_context_t *ctx) +{ + mpd_t *result; + + if ((result = mpd_qnew()) == NULL) { + mpd_addstatus_raise(ctx, MPD_Malloc_error); + } + return result; +} + +int +mpd_switch_to_dyn(mpd_t *result, mpd_ssize_t size, uint32_t *status) +{ + mpd_uint_t *p = result->data; + + if ((result->data = mpd_alloc(size, sizeof *result->data)) == NULL) { + result->data = p; + mpd_set_qnan(result); + mpd_set_positive(result); + result->exp = result->digits = result->len = 0; + *status |= MPD_Malloc_error; + return 0; + } + + memcpy(result->data, p, result->len * (sizeof *result->data)); + result->alloc = size; + mpd_set_dynamic_data(result); + return 1; +} + +int +mpd_switch_to_dyn_zero(mpd_t *result, mpd_ssize_t size, uint32_t *status) +{ + mpd_uint_t *p = result->data; + + if ((result->data = mpd_calloc(size, sizeof *result->data)) == NULL) { + result->data = p; + mpd_set_qnan(result); + mpd_set_positive(result); + result->exp = result->digits = result->len = 0; + *status |= MPD_Malloc_error; + return 0; + } + + result->alloc = size; + mpd_set_dynamic_data(result); + + return 1; +} + +int +mpd_realloc_dyn(mpd_t *result, mpd_ssize_t size, uint32_t *status) +{ + uint8_t err = 0; + + result->data = mpd_realloc(result->data, size, sizeof *result->data, &err); + if (!err) { + result->alloc = size; + } + else if (size > result->alloc) { + mpd_set_qnan(result); + mpd_set_positive(result); + result->exp = result->digits = result->len = 0; + *status |= MPD_Malloc_error; + return 0; + } + + return 1; +} + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/memory.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/memory.h Thu Jan 7 13:02:51 2010 @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#ifndef MEMORY_H +#define MEMORY_H + + +#include "mpdecimal.h" + + +int mpd_switch_to_dyn(mpd_t *result, mpd_ssize_t size, uint32_t *status); +int mpd_switch_to_dyn_zero(mpd_t *result, mpd_ssize_t size, uint32_t *status); +int mpd_realloc_dyn(mpd_t *result, mpd_ssize_t size, uint32_t *status); + + +#endif + + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal.c Thu Jan 7 13:02:51 2010 @@ -0,0 +1,7020 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include +#include +#include +#include "basearith.h" +#include "bits.h" +#include "convolute.h" +#include "crt.h" +#include "errno.h" +#include "memory.h" +#include "typearith.h" +#include "umodarith.h" +#include "mptypes.h" +#include "mpdecimal.h" + +#ifdef PPRO + #if defined(_MSC_VER) + #include + #pragma fenv_access(on) + #elif !defined(__OpenBSD__) + /* C99 */ + #include + #pragma STDC FENV_ACCESS ON + #endif +#endif + +#if defined(__GLIBC__) && !defined(__INTEL_COMPILER) + #define HAVE_80BIT_LONG_DOUBLE +#endif + +#if defined(_MSC_VER) + #define ALWAYS_INLINE __forceinline +#else + #define ALWAYS_INLINE inline __attribute__ ((always_inline)) +#endif + +#define MPD_NEWTONDIV_CUTOFF (8*MPD_RDIGITS) + +#define MPD_NEW_STATIC(name, flags, exp, digits, len) \ + mpd_uint_t name##_data[MPD_MINALLOC_MAX]; \ + mpd_t name = {flags|MPD_STATIC|MPD_STATIC_DATA, exp, digits, \ + len, MPD_MINALLOC_MAX, name##_data} + +#define MPD_NEW_CONST(name, flags, exp, digits, len, alloc, initval) \ + mpd_uint_t name##_data[alloc] = {initval}; \ + mpd_t name = {flags|MPD_STATIC|MPD_CONST_DATA, exp, digits, \ + len, alloc, name##_data} + +#define MPD_NEW_SHARED(name, a) \ + mpd_t name = {(a->flags&~MPD_DATAFLAGS)|MPD_STATIC|MPD_SHARED_DATA, \ + a->exp, a->digits, a->len, a->alloc, a->data} + + +static mpd_uint_t data_one[1] = {1}; +static mpd_uint_t data_zero[1] = {0}; +static const mpd_t one = {MPD_STATIC|MPD_CONST_DATA, 0, 1, 1, 1, data_one}; +static const mpd_t minus_one = {MPD_NEG|MPD_STATIC|MPD_CONST_DATA, 0, 1, 1, 1, + data_one}; +static const mpd_t zero = {MPD_STATIC|MPD_CONST_DATA, 0, 1, 1, 1, data_zero}; + +static inline void _mpd_check_exp(mpd_t *dec, const mpd_context_t *ctx, uint32_t *status); +static void _settriple(mpd_t *result, uint8_t sign, mpd_uint_t a, mpd_ssize_t exp); +static inline mpd_ssize_t _mpd_real_size(mpd_uint_t *data, mpd_ssize_t size); + +static void _mpd_qadd(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status); +static inline void _mpd_qmul(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status); +static void _mpd_qbarrett_divmod(mpd_t *q, mpd_t *r, const mpd_t *a, + const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +static inline void _mpd_qpow_uint(mpd_t *result, mpd_t *base, mpd_uint_t exp, + uint8_t resultsign, const mpd_context_t *ctx, uint32_t *status); + +static mpd_uint_t mpd_qsshiftr(mpd_t *result, const mpd_t *a, mpd_ssize_t n); + + +/******************************************************************************/ +/* Performance critical inline functions */ +/******************************************************************************/ + +#ifdef CONFIG_64 +/* Digits in a word, primarily useful for the most significant word. */ +ALWAYS_INLINE int +mpd_word_digits(mpd_uint_t word) +{ + if (word < mpd_pow10[9]) { + if (word < mpd_pow10[4]) { + if (word < mpd_pow10[2]) { + return (word < mpd_pow10[1]) ? 1 : 2; + } + return (word < mpd_pow10[3]) ? 3 : 4; + } + if (word < mpd_pow10[6]) { + return (word < mpd_pow10[5]) ? 5 : 6; + } + if (word < mpd_pow10[8]) { + return (word < mpd_pow10[7]) ? 7 : 8; + } + return 9; + } + if (word < mpd_pow10[14]) { + if (word < mpd_pow10[11]) { + return (word < mpd_pow10[10]) ? 10 : 11; + } + if (word < mpd_pow10[13]) { + return (word < mpd_pow10[12]) ? 12 : 13; + } + return 14; + } + if (word < mpd_pow10[17]) { + if (word < mpd_pow10[16]) { + return (word < mpd_pow10[15]) ? 15 : 16; + } + return 17; + } + + return (word < mpd_pow10[18]) ? 18 : 19; +} +#else +ALWAYS_INLINE int +mpd_word_digits(mpd_uint_t word) +{ + if (word < mpd_pow10[4]) { + if (word < mpd_pow10[2]) { + return (word < mpd_pow10[1]) ? 1 : 2; + } + return (word < mpd_pow10[3]) ? 3 : 4; + } + if (word < mpd_pow10[6]) { + return (word < mpd_pow10[5]) ? 5 : 6; + } + if (word < mpd_pow10[8]) { + return (word < mpd_pow10[7]) ? 7 : 8; + } + + return (word < mpd_pow10[9]) ? 9 : 10; +} +#endif + + +/* Adjusted exponent */ +ALWAYS_INLINE mpd_ssize_t +mpd_adjexp(const mpd_t *dec) +{ + return dec->exp + dec->digits - 1; +} + +/* Etiny */ +ALWAYS_INLINE mpd_ssize_t +mpd_etiny(const mpd_context_t *ctx) +{ + return ctx->emin - (ctx->prec - 1); +} + +/* Etop: used for folding down in IEEE clamping */ +ALWAYS_INLINE mpd_ssize_t +mpd_etop(const mpd_context_t *ctx) +{ + return ctx->emax - (ctx->prec - 1); +} + +/* Most significant word */ +ALWAYS_INLINE mpd_uint_t +mpd_msword(const mpd_t *dec) +{ + assert(dec->len > 0); + return dec->data[dec->len-1]; +} + +/* Most significant digit of a word */ +inline mpd_uint_t +mpd_msd(mpd_uint_t word) +{ + int n; + + n = mpd_word_digits(word); + return word / mpd_pow10[n-1]; +} + +/* Least significant digit of a word */ +ALWAYS_INLINE mpd_uint_t +mpd_lsd(mpd_uint_t word) +{ + return word % 10; +} + +/* Coefficient size needed to store 'digits' */ +ALWAYS_INLINE mpd_ssize_t +mpd_digits_to_size(mpd_ssize_t digits) +{ + mpd_ssize_t q, r; + + _mpd_idiv_word(&q, &r, digits, MPD_RDIGITS); + return (r == 0) ? q : q+1; +} + +/* Number of digits in the exponent. Not defined for MPD_SSIZE_MIN. */ +inline int +mpd_exp_digits(mpd_ssize_t exp) +{ + exp = (exp < 0) ? -exp : exp; + return mpd_word_digits(exp); +} + +/* Canonical */ +ALWAYS_INLINE int +mpd_iscanonical(const mpd_t *dec UNUSED) +{ + return 1; +} + +/* Finite */ +ALWAYS_INLINE int +mpd_isfinite(const mpd_t *dec) +{ + return !(dec->flags & MPD_SPECIAL); +} + +/* Infinite */ +ALWAYS_INLINE int +mpd_isinfinite(const mpd_t *dec) +{ + return dec->flags & MPD_INF; +} + +/* NaN */ +ALWAYS_INLINE int +mpd_isnan(const mpd_t *dec) +{ + return dec->flags & (MPD_NAN|MPD_SNAN); +} + +/* Negative */ +ALWAYS_INLINE int +mpd_isnegative(const mpd_t *dec) +{ + return dec->flags & MPD_NEG; +} + +/* Positive */ +ALWAYS_INLINE int +mpd_ispositive(const mpd_t *dec) +{ + return !(dec->flags & MPD_NEG); +} + +/* qNaN */ +ALWAYS_INLINE int +mpd_isqnan(const mpd_t *dec) +{ + return dec->flags & MPD_NAN; +} + +/* Signed */ +ALWAYS_INLINE int +mpd_issigned(const mpd_t *dec) +{ + return dec->flags & MPD_NEG; +} + +/* sNaN */ +ALWAYS_INLINE int +mpd_issnan(const mpd_t *dec) +{ + return dec->flags & MPD_SNAN; +} + +/* Special */ +ALWAYS_INLINE int +mpd_isspecial(const mpd_t *dec) +{ + return dec->flags & MPD_SPECIAL; +} + +/* Zero */ +ALWAYS_INLINE int +mpd_iszero(const mpd_t *dec) +{ + return !mpd_isspecial(dec) && mpd_msword(dec) == 0; +} + +/* Test for zero when specials have been ruled out already */ +ALWAYS_INLINE int +mpd_iszerocoeff(const mpd_t *dec) +{ + return mpd_msword(dec) == 0; +} + +/* Normal */ +inline int +mpd_isnormal(const mpd_t *dec, const mpd_context_t *ctx) +{ + if (mpd_isspecial(dec)) return 0; + if (mpd_iszerocoeff(dec)) return 0; + + return mpd_adjexp(dec) >= ctx->emin; +} + +/* Subnormal */ +inline int +mpd_issubnormal(const mpd_t *dec, const mpd_context_t *ctx) +{ + if (mpd_isspecial(dec)) return 0; + if (mpd_iszerocoeff(dec)) return 0; + + return mpd_adjexp(dec) < ctx->emin; +} + +/* Odd word */ +ALWAYS_INLINE int +mpd_isoddword(mpd_uint_t word) +{ + return word & 1; +} + +/* Odd coefficient */ +ALWAYS_INLINE int +mpd_isoddcoeff(const mpd_t *dec) +{ + return mpd_isoddword(dec->data[0]); +} + +/* 0 if dec is positive, 1 if dec is negative */ +ALWAYS_INLINE uint8_t +mpd_sign(const mpd_t *dec) +{ + return dec->flags & MPD_NEG; +} + +/* 1 if dec is positive, -1 if dec is negative */ +ALWAYS_INLINE int +mpd_arith_sign(const mpd_t *dec) +{ + return 1 - 2 * mpd_isnegative(dec); +} + +/* Radix */ +ALWAYS_INLINE long +mpd_radix(void) +{ + return 10; +} + +/* Dynamic decimal */ +ALWAYS_INLINE int +mpd_isdynamic(mpd_t *dec) +{ + return !(dec->flags & MPD_STATIC); +} + +/* Static decimal */ +ALWAYS_INLINE int +mpd_isstatic(mpd_t *dec) +{ + return dec->flags & MPD_STATIC; +} + +/* Data of decimal is dynamic */ +ALWAYS_INLINE int +mpd_isdynamic_data(mpd_t *dec) +{ + return !(dec->flags & MPD_DATAFLAGS); +} + +/* Data of decimal is static */ +ALWAYS_INLINE int +mpd_isstatic_data(mpd_t *dec) +{ + return dec->flags & MPD_STATIC_DATA; +} + +/* Data of decimal is shared */ +ALWAYS_INLINE int +mpd_isshared_data(mpd_t *dec) +{ + return dec->flags & MPD_SHARED_DATA; +} + +/* Data of decimal is const */ +ALWAYS_INLINE int +mpd_isconst_data(mpd_t *dec) +{ + return dec->flags & MPD_CONST_DATA; +} + + +/******************************************************************************/ +/* Inline memory handling */ +/******************************************************************************/ + +/* Fill destination with zeros */ +ALWAYS_INLINE void +mpd_uint_zero(mpd_uint_t *dest, size_t len) +{ + size_t i; + + for (i = 0; i < len; i++) { + dest[i] = 0; + } +} + +/* Free a decimal */ +ALWAYS_INLINE void +mpd_del(mpd_t *dec) +{ + if (mpd_isdynamic_data(dec)) { + mpd_free(dec->data); + } + if (mpd_isdynamic(dec)) { + mpd_free(dec); + } +} + +/* + * Update the memory size for the coefficient. Existing data up to size is + * left untouched. + * + * Error handling: When relloc fails, result->data will still be a valid pointer + * to the old memory area of size result->len. If the requested size is less than + * result->len, we can continue normally, so we treat the failure as a soft error. + * If the requested size is greater than the old area, MPD_Malloc_error is + * set and the result will be a NaN. + */ +ALWAYS_INLINE int +mpd_qresize(mpd_t *result, mpd_ssize_t size, uint32_t *status) +{ + assert(!mpd_isconst_data(result)); /* illegal operation for a const */ + assert(!mpd_isshared_data(result)); /* illegal operation for a shared */ + + if (mpd_isstatic_data(result)) { + if (size > result->alloc) { + return mpd_switch_to_dyn(result, size, status); + } + } + else if (size != result->alloc && size >= MPD_MINALLOC) { + return mpd_realloc_dyn(result, size, status); + } + + return 1; +} + +/* Same as mpd_qresize, but the complete coefficient (including the old + * memory area!) is initialized to zero. */ +ALWAYS_INLINE int +mpd_qresize_zero(mpd_t *result, mpd_ssize_t size, uint32_t *status) +{ + assert(!mpd_isconst_data(result)); /* illegal operation for a const */ + assert(!mpd_isshared_data(result)); /* illegal operation for a shared */ + + if (mpd_isstatic_data(result)) { + if (size > result->alloc) { + return mpd_switch_to_dyn_zero(result, size, status); + } + } + else if (size != result->alloc && size >= MPD_MINALLOC) { + if (!mpd_realloc_dyn(result, size, status)) { + return 0; + } + } + + mpd_uint_zero(result->data, size); + + return 1; +} + +/* + * Reduce memory size for the coefficient to MPD_MINALLOC. In theory, realloc + * may fail even when reducing the memory size. But in that case the old memory + * area is always big enough, so checking for MPD_Malloc_error is not imperative. + */ +ALWAYS_INLINE void +mpd_minalloc(mpd_t *result) +{ + assert(!mpd_isconst_data(result)); /* illegal operation for a const */ + assert(!mpd_isshared_data(result)); /* illegal operation for a shared */ + + if (!mpd_isstatic_data(result) && result->alloc > MPD_MINALLOC) { + uint8_t err = 0; + result->data = mpd_realloc(result->data, MPD_MINALLOC, + sizeof *result->data, &err); + if (!err) { + result->alloc = MPD_MINALLOC; + } + } +} + +int +mpd_resize(mpd_t *result, mpd_ssize_t size, mpd_context_t *ctx) +{ + uint32_t status = 0; + if (!mpd_qresize(result, size, &status)) { + mpd_addstatus_raise(ctx, status); + return 0; + } + return 1; +} + +int +mpd_resize_zero(mpd_t *result, mpd_ssize_t size, mpd_context_t *ctx) +{ + uint32_t status = 0; + if (!mpd_qresize_zero(result, size, &status)) { + mpd_addstatus_raise(ctx, status); + return 0; + } + return 1; +} + + +/******************************************************************************/ +/* Set attributes of a decimal */ +/******************************************************************************/ + +/* Set digits. result->len is assumed to be correct. */ +inline void +mpd_setdigits(mpd_t *result) +{ + mpd_ssize_t wdigits = mpd_word_digits(mpd_msword(result)); + result->digits = wdigits + (result->len-1) * MPD_RDIGITS; +} + +/* Set sign */ +ALWAYS_INLINE void +mpd_set_sign(mpd_t *result, uint8_t sign) +{ + result->flags &= ~MPD_NEG; + result->flags |= sign; +} + +/* Copy sign from another decimal */ +ALWAYS_INLINE void +mpd_signcpy(mpd_t *result, mpd_t *a) +{ + uint8_t sign = a->flags&MPD_NEG; + + result->flags &= ~MPD_NEG; + result->flags |= sign; +} + +/* Set infinity */ +ALWAYS_INLINE void +mpd_set_infinity(mpd_t *result) +{ + result->flags &= ~MPD_SPECIAL; + result->flags |= MPD_INF; +} + +/* Set qNaN */ +ALWAYS_INLINE void +mpd_set_qnan(mpd_t *result) +{ + result->flags &= ~MPD_SPECIAL; + result->flags |= MPD_NAN; +} + +/* Set sNaN */ +ALWAYS_INLINE void +mpd_set_snan(mpd_t *result) +{ + result->flags &= ~MPD_SPECIAL; + result->flags |= MPD_SNAN; +} + +/* Set to negative */ +ALWAYS_INLINE void +mpd_set_negative(mpd_t *result) +{ + result->flags |= MPD_NEG; +} + +/* Set to positive */ +ALWAYS_INLINE void +mpd_set_positive(mpd_t *result) +{ + result->flags &= ~MPD_NEG; +} + +/* Set to dynamic */ +ALWAYS_INLINE void +mpd_set_dynamic(mpd_t *result) +{ + result->flags &= ~MPD_STATIC; +} + +/* Set to static */ +ALWAYS_INLINE void +mpd_set_static(mpd_t *result) +{ + result->flags |= MPD_STATIC; +} + +/* Set data to dynamic */ +ALWAYS_INLINE void +mpd_set_dynamic_data(mpd_t *result) +{ + result->flags &= ~MPD_DATAFLAGS; +} + +/* Set data to static */ +ALWAYS_INLINE void +mpd_set_static_data(mpd_t *result) +{ + result->flags &= ~MPD_DATAFLAGS; + result->flags |= MPD_STATIC_DATA; +} + +/* Set data to shared */ +ALWAYS_INLINE void +mpd_set_shared_data(mpd_t *result) +{ + result->flags &= ~MPD_DATAFLAGS; + result->flags |= MPD_SHARED_DATA; +} + +/* Set data to const */ +ALWAYS_INLINE void +mpd_set_const_data(mpd_t *result) +{ + result->flags &= ~MPD_DATAFLAGS; + result->flags |= MPD_CONST_DATA; +} + +/* Clear flags, preserving memory attributes. */ +ALWAYS_INLINE void +mpd_clear_flags(mpd_t *result) +{ + result->flags &= (MPD_STATIC|MPD_DATAFLAGS); +} + +/* Set flags, preserving memory attributes. */ +ALWAYS_INLINE void +mpd_set_flags(mpd_t *result, uint8_t flags) +{ + result->flags &= (MPD_STATIC|MPD_DATAFLAGS); + result->flags |= flags; +} + +/* Copy flags, preserving memory attributes of result. */ +ALWAYS_INLINE void +mpd_copy_flags(mpd_t *result, const mpd_t *a) +{ + uint8_t aflags = a->flags; + result->flags &= (MPD_STATIC|MPD_DATAFLAGS); + result->flags |= (aflags & ~(MPD_STATIC|MPD_DATAFLAGS)); +} + +/* Make a work context */ +static inline void +mpd_workcontext(mpd_context_t *workctx, const mpd_context_t *ctx) +{ + workctx->prec = ctx->prec; + workctx->emax = ctx->emax; + workctx->emin = ctx->emin; + workctx->round = ctx->round; + workctx->traps = 0; + workctx->status= 0; + workctx->newtrap= 0; + workctx->clamp = ctx->clamp; + workctx->allcr = ctx->allcr; +} + + +/******************************************************************************/ +/* Getting and setting parts of decimals */ +/******************************************************************************/ + +/* Flip the sign of a decimal */ +static inline void +_mpd_negate(mpd_t *dec) +{ + dec->flags ^= MPD_NEG; +} + +/* Set coefficient to zero */ +void +mpd_zerocoeff(mpd_t *result) +{ + mpd_minalloc(result); + result->digits = 1; + result->len = 1; + result->data[0] = 0; +} + +/* Set the coefficient to all nines. Does not raise. */ +void +mpd_qmaxcoeff(mpd_t *result, const mpd_context_t *ctx, uint32_t *status) +{ + mpd_ssize_t len, r; + + _mpd_idiv_word(&len, &r, ctx->prec, MPD_RDIGITS); + len = (r == 0) ? len : len+1; + + if (!mpd_qresize(result, len, status)) { + return; + } + + result->len = len; + result->digits = ctx->prec; + + --len; + if (r > 0) { + result->data[len--] = mpd_pow10[r]-1; + } + for (; len >= 0; --len) { + result->data[len] = MPD_RADIX-1; + } +} + +/* + * Cut off the most significant digits so that the rest fits in ctx->prec. + * Cannot fail. + */ +static void +_mpd_cap(mpd_t *result, const mpd_context_t *ctx) +{ + uint32_t dummy; + mpd_ssize_t len, r; + + if (result->len > 0 && result->digits > ctx->prec) { + _mpd_idiv_word(&len, &r, ctx->prec, MPD_RDIGITS); + len = (r == 0) ? len : len+1; + + /* resize to fewer words cannot fail */ + mpd_qresize(result, len, &dummy); + + if (r != 0) { + result->data[len-1] %= mpd_pow10[r]; + } + + len = _mpd_real_size(result->data, len); + result->len = len; + mpd_setdigits(result); + } + if (mpd_iszero(result)) { + _settriple(result, mpd_sign(result), 0, result->exp); + } +} + +/* + * Cut off the most significant digits of a NaN payload so that the rest + * fits in ctx->prec. Cannot fail. + */ +static void +_mpd_fix_nan(mpd_t *result, const mpd_context_t *ctx) +{ + uint32_t dummy; + mpd_ssize_t len, r; + + if (result->len > 0 && result->digits > ctx->prec-ctx->clamp) { + _mpd_idiv_word(&len, &r, ctx->prec, MPD_RDIGITS); + len = (r == 0) ? len : len+1; + + /* resize to fewer words cannot fail */ + mpd_qresize(result, len, &dummy); + + if (r != 0) { + result->data[len-1] %= mpd_pow10[r]; + } + + len = _mpd_real_size(result->data, len); + result->len = len; + mpd_setdigits(result); + if (mpd_iszerocoeff(result)) { + /* NaN0 is not a valid representation */ + result->len = result->digits = 0; + } + } +} + +/* + * Get n most significant digits from a decimal, where 0 < n <= MPD_UINT_DIGITS. + * Assumes MPD_UINT_DIGITS == MPD_RDIGITS+1, which is true for 32 and 64 bit machines. + * + * The result of the operation will be in lo. If the operation is impossible, + * hi will be nonzero. This is used to indicate an error. + */ +static inline void +_mpd_get_msdigits(mpd_uint_t *hi, mpd_uint_t *lo, const mpd_t *dec, unsigned int n) +{ + mpd_uint_t r, tmp; + + assert(0 < n && n <= MPD_RDIGITS+1); + + _mpd_div_word(&tmp, &r, dec->digits, MPD_RDIGITS); + r = (r == 0) ? MPD_RDIGITS : r; /* digits in the most significant word */ + + *hi = 0; + *lo = dec->data[dec->len-1]; + if (n <= r) { + *lo /= mpd_pow10[r-n]; + } + else if (dec->len > 1) { + /* at this point 1 <= r < n <= MPD_RDIGITS+1 */ + _mpd_mul_words(hi, lo, *lo, mpd_pow10[n-r]); + tmp = dec->data[dec->len-2] / mpd_pow10[MPD_RDIGITS-(n-r)]; + *lo = *lo + tmp; + if (*lo < tmp) (*hi)++; + } +} + + +/******************************************************************************/ +/* Gathering information about a decimal */ +/******************************************************************************/ + +/* The real size of the coefficient without leading zero words. */ +static inline mpd_ssize_t +_mpd_real_size(mpd_uint_t *data, mpd_ssize_t size) +{ + while (size > 1 && data[size-1] == 0) { + size--; + } + + return size; +} + +/* Return number of trailing zeros. No errors are possible. */ +mpd_ssize_t +mpd_trail_zeros(const mpd_t *dec) +{ + mpd_uint_t word; + mpd_ssize_t i, tz = 0; + + for (i=0; i < dec->len; ++i) { + if (dec->data[i] != 0) { + word = dec->data[i]; + tz = i * MPD_RDIGITS; + while (word % 10 == 0) { + word /= 10; + tz++; + } + break; + } + } + + return tz; +} + +/* Integer: Undefined for specials */ +static int +_mpd_isint(const mpd_t *dec) +{ + mpd_ssize_t tz; + + if (mpd_iszerocoeff(dec)) { + return 1; + } + + tz = mpd_trail_zeros(dec); + return (dec->exp + tz >= 0); +} + +/* Integer */ +int +mpd_isinteger(const mpd_t *dec) +{ + if (mpd_isspecial(dec)) { + return 0; + } + return _mpd_isint(dec); +} + +/* Word is a power of 10 */ +static int +mpd_word_ispow10(mpd_uint_t word) +{ + int n; + + n = mpd_word_digits(word); + if (word == mpd_pow10[n-1]) { + return 1; + } + + return 0; +} + +/* Coefficient is a power of 10 */ +static int +mpd_coeff_ispow10(const mpd_t *dec) +{ + if (mpd_word_ispow10(mpd_msword(dec))) { + if (_mpd_isallzero(dec->data, dec->len-1)) { + return 1; + } + } + + return 0; +} + +/* All digits of a word are nines */ +static int +mpd_word_isallnine(mpd_uint_t word) +{ + int n; + + n = mpd_word_digits(word); + if (word == mpd_pow10[n]-1) { + return 1; + } + + return 0; +} + +/* All digits of the coefficient are nines */ +static int +mpd_coeff_isallnine(const mpd_t *dec) +{ + if (mpd_word_isallnine(mpd_msword(dec))) { + if (_mpd_isallnine(dec->data, dec->len-1)) { + return 1; + } + } + + return 0; +} + +/* Odd decimal: Undefined for non-integers! */ +int +mpd_isodd(const mpd_t *dec) +{ + mpd_uint_t q, r; + assert(mpd_isinteger(dec)); + if (mpd_iszerocoeff(dec)) return 0; + if (dec->exp < 0) { + _mpd_div_word(&q, &r, -dec->exp, MPD_RDIGITS); + q = dec->data[q] / mpd_pow10[r]; + return mpd_isoddword(q); + } + return dec->exp == 0 && mpd_isoddword(dec->data[0]); +} + +/* Even: Undefined for non-integers! */ +int +mpd_iseven(const mpd_t *dec) +{ + return !mpd_isodd(dec); +} + +/******************************************************************************/ +/* Getting and setting decimals */ +/******************************************************************************/ + +/* Internal function: Set a static decimal from a triple, no error checking. */ +static void +_ssettriple(mpd_t *result, uint8_t sign, mpd_uint_t a, mpd_ssize_t exp) +{ + mpd_set_flags(result, sign); + result->exp = exp; + _mpd_div_word(&result->data[1], &result->data[0], a, MPD_RADIX); + result->len = (result->data[1] == 0) ? 1 : 2; + mpd_setdigits(result); +} + +/* Internal function: Set a decimal from a triple, no error checking. */ +static void +_settriple(mpd_t *result, uint8_t sign, mpd_uint_t a, mpd_ssize_t exp) +{ + mpd_minalloc(result); + mpd_set_flags(result, sign); + result->exp = exp; + _mpd_div_word(&result->data[1], &result->data[0], a, MPD_RADIX); + result->len = (result->data[1] == 0) ? 1 : 2; + mpd_setdigits(result); +} + +/* Set a special number from a triple */ +void +mpd_setspecial(mpd_t *result, uint8_t sign, uint8_t type) +{ + mpd_minalloc(result); + result->flags &= ~(MPD_NEG|MPD_SPECIAL); + result->flags |= (sign|type); + result->exp = result->digits = result->len = 0; +} + +/* Set result of NaN with an error status */ +void +mpd_seterror(mpd_t *result, uint32_t flags, uint32_t *status) +{ + mpd_minalloc(result); + mpd_set_qnan(result); + mpd_set_positive(result); + result->exp = result->digits = result->len = 0; + *status |= flags; +} + +/* quietly set a static decimal from an mpd_ssize_t */ +void +mpd_qsset_ssize(mpd_t *result, mpd_ssize_t a, const mpd_context_t *ctx, uint32_t *status) +{ + int adj = 0; + + mpd_clear_flags(result); + if (a < 0) { + if (a == MPD_SSIZE_MIN) { + adj = 1; + a += 1; + } + result->flags |= MPD_NEG; + a = -a; + } + result->exp = 0; + _mpd_div_word(&result->data[1], &result->data[0], a, MPD_RADIX); + result->data[0] += adj; + result->len = (result->data[1] == 0) ? 1 : 2; + mpd_setdigits(result); + + mpd_qfinalize(result, ctx, status); +} + +/* quietly set a static decimal from an mpd_uint_t */ +void +mpd_qsset_uint(mpd_t *result, mpd_uint_t a, const mpd_context_t *ctx, uint32_t *status) +{ + _ssettriple(result, MPD_POS, a, 0); + mpd_qfinalize(result, ctx, status); +} + +/* quietly set a static decimal from an int32_t */ +void +mpd_qsset_i32(mpd_t *result, int32_t a, const mpd_context_t *ctx, uint32_t *status) +{ + mpd_qsset_ssize(result, a, ctx, status); +} + +/* quietly set a static decimal from a uint32_t */ +void +mpd_qsset_u32(mpd_t *result, uint32_t a, const mpd_context_t *ctx, uint32_t *status) +{ + mpd_qsset_uint(result, a, ctx, status); +} + +#ifdef CONFIG_64 +/* quietly set a static decimal from an int64_t */ +void +mpd_qsset_i64(mpd_t *result, int64_t a, const mpd_context_t *ctx, uint32_t *status) +{ + mpd_qsset_ssize(result, a, ctx, status); +} + +/* quietly set a static decimal from a uint64_t */ +void +mpd_qsset_u64(mpd_t *result, uint64_t a, const mpd_context_t *ctx, uint32_t *status) +{ + mpd_qsset_uint(result, a, ctx, status); +} +#endif + +/* quietly set a decimal from an mpd_ssize_t */ +void +mpd_qset_ssize(mpd_t *result, mpd_ssize_t a, const mpd_context_t *ctx, uint32_t *status) +{ + mpd_minalloc(result); + mpd_qsset_ssize(result, a, ctx, status); +} + +/* quietly set a decimal from an mpd_uint_t */ +void +mpd_qset_uint(mpd_t *result, mpd_uint_t a, const mpd_context_t *ctx, uint32_t *status) +{ + _settriple(result, MPD_POS, a, 0); + mpd_qfinalize(result, ctx, status); +} + +/* quietly set a decimal from an int32_t */ +void +mpd_qset_i32(mpd_t *result, int32_t a, const mpd_context_t *ctx, uint32_t *status) +{ + mpd_qset_ssize(result, a, ctx, status); +} + +/* quietly set a decimal from a uint32_t */ +void +mpd_qset_u32(mpd_t *result, uint32_t a, const mpd_context_t *ctx, uint32_t *status) +{ + mpd_qset_uint(result, a, ctx, status); +} + +#ifdef CONFIG_64 +/* quietly set a decimal from an int64_t */ +void +mpd_qset_i64(mpd_t *result, int64_t a, const mpd_context_t *ctx, uint32_t *status) +{ + mpd_qset_ssize(result, a, ctx, status); +} + +/* quietly set a decimal from a uint64_t */ +void +mpd_qset_u64(mpd_t *result, uint64_t a, const mpd_context_t *ctx, uint32_t *status) +{ + mpd_qset_uint(result, a, ctx, status); +} +#endif + + +/* + * Quietly get an mpd_uint_t from a decimal. Assumes MPD_UINT_DIGITS == MPD_RDIGITS+1, + * which is true for 32 and 64 bit machines. + * + * If the operation is impossible, MPD_Invalid_operation is set. + */ +mpd_uint_t +mpd_qget_uint(const mpd_t *a, uint32_t *status) +{ + mpd_t tmp; + mpd_uint_t tmp_data[2]; + mpd_uint_t lo, hi; + + if (mpd_isspecial(a)) { + *status |= MPD_Invalid_operation; + return MPD_UINT_MAX; + } + + assert(a->len > 0); + + if (mpd_iszero(a)) { + return 0; + } + if (a->digits+a->exp > MPD_RDIGITS+1) { + *status |= MPD_Invalid_operation; + return MPD_UINT_MAX; + } + + if (a->exp < 0) { + if (!_mpd_isint(a)) { + *status |= MPD_Invalid_operation; + return MPD_UINT_MAX; + } + /* at this point a->digits+a->exp <= MPD_RDIGITS+1, so the shift fits */ + tmp.data = tmp_data; + tmp.flags = MPD_STATIC|MPD_CONST_DATA; + mpd_qsshiftr(&tmp, a, -a->exp); + tmp.exp = 0; + a = &tmp; + } + + _mpd_get_msdigits(&hi, &lo, a, MPD_RDIGITS+1); + if (hi) { + *status |= MPD_Invalid_operation; + return MPD_UINT_MAX; + } + + if (a->exp > 0) { + _mpd_mul_words(&hi, &lo, lo, mpd_pow10[a->exp]); + if (hi) { + *status |= MPD_Invalid_operation; + return MPD_UINT_MAX; + } + } + + return lo; +} + +/* quietly get an mpd_ssize_t from a decimal */ +mpd_ssize_t +mpd_qget_ssize(const mpd_t *a, uint32_t *status) +{ + mpd_uint_t u; + int isneg; + + u = mpd_qget_uint(a, status); + if (*status&MPD_Invalid_operation) { + return MPD_SSIZE_MAX; + } + + isneg = mpd_isnegative(a); + if (u <= MPD_SSIZE_MAX) { + return isneg ? -((mpd_ssize_t)u) : (mpd_ssize_t)u; + } + else if (isneg && u-1 == MPD_SSIZE_MAX) { + return MPD_SSIZE_MIN; + } + + *status |= MPD_Invalid_operation; + return MPD_SSIZE_MAX; +} + +#ifdef CONFIG_64 +/* quietly get a uint64_t from a decimal */ +uint64_t +mpd_qget_u64(const mpd_t *a, uint32_t *status) +{ + return mpd_qget_uint(a, status); +} + +/* quietly get an int64_t from a decimal */ +int64_t +mpd_qget_i64(const mpd_t *a, uint32_t *status) +{ + return mpd_qget_ssize(a, status); +} +#else +/* quietly get a uint32_t from a decimal */ +uint32_t +mpd_qget_u32(const mpd_t *a, uint32_t *status) +{ + return mpd_qget_uint(a, status); +} + +/* quietly get an int32_t from a decimal */ +int32_t +mpd_qget_i32(const mpd_t *a, uint32_t *status) +{ + return mpd_qget_ssize(a, status); +} +#endif + + +/******************************************************************************/ +/* Filtering input of functions, finalizing output of functions */ +/******************************************************************************/ + +/* + * Check if the operand is NaN, copy to result and return 1 if this is + * the case. Copying can fail since NaNs are allowed to have a payload that + * does not fit in MPD_MINALLOC. + */ +int +mpd_qcheck_nan(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +{ + if (mpd_isnan(a)) { + *status |= mpd_issnan(a) ? MPD_Invalid_operation : 0; + mpd_qcopy(result, a, status); + mpd_set_qnan(result); + _mpd_fix_nan(result, ctx); + return 1; + } + return 0; +} + +/* + * Check if either operand is NaN, copy to result and return 1 if this + * is the case. Copying can fail since NaNs are allowed to have a payload + * that does not fit in MPD_MINALLOC. + */ +int +mpd_qcheck_nans(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + if ((a->flags|b->flags)&(MPD_NAN|MPD_SNAN)) { + const mpd_t *choice = b; + if (mpd_issnan(a)) { + choice = a; + *status |= MPD_Invalid_operation; + } + else if (mpd_issnan(b)) { + *status |= MPD_Invalid_operation; + } + else if (mpd_isqnan(a)) { + choice = a; + } + mpd_qcopy(result, choice, status); + mpd_set_qnan(result); + _mpd_fix_nan(result, ctx); + return 1; + } + return 0; +} + +/* + * Check if one of the operands is NaN, copy to result and return 1 if this + * is the case. Copying can fail since NaNs are allowed to have a payload + * that does not fit in MPD_MINALLOC. + */ +static int +mpd_qcheck_3nans(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_t *c, + const mpd_context_t *ctx, uint32_t *status) +{ + if ((a->flags|b->flags|c->flags)&(MPD_NAN|MPD_SNAN)) { + const mpd_t *choice = c; + if (mpd_issnan(a)) { + choice = a; + *status |= MPD_Invalid_operation; + } + else if (mpd_issnan(b)) { + choice = b; + *status |= MPD_Invalid_operation; + } + else if (mpd_issnan(c)) { + *status |= MPD_Invalid_operation; + } + else if (mpd_isqnan(a)) { + choice = a; + } + else if (mpd_isqnan(b)) { + choice = b; + } + mpd_qcopy(result, choice, status); + mpd_set_qnan(result); + _mpd_fix_nan(result, ctx); + return 1; + } + return 0; +} + +/* Check if rounding digit 'rnd' leads to an increment. */ +static inline int +_mpd_rnd_incr(const mpd_t *dec, mpd_uint_t rnd, const mpd_context_t *ctx) +{ + int ld; + + switch (ctx->round) { + case MPD_ROUND_DOWN: case MPD_ROUND_TRUNC: + return 0; + case MPD_ROUND_HALF_UP: + return (rnd >= 5); + case MPD_ROUND_HALF_EVEN: + return (rnd > 5) || ((rnd == 5) && mpd_isoddcoeff(dec)); + case MPD_ROUND_CEILING: + return !(rnd == 0 || mpd_isnegative(dec)); + case MPD_ROUND_FLOOR: + return !(rnd == 0 || mpd_ispositive(dec)); + case MPD_ROUND_HALF_DOWN: + return (rnd > 5); + case MPD_ROUND_UP: + return !(rnd == 0); + case MPD_ROUND_05UP: + ld = (int)mpd_lsd(dec->data[0]); + return (!(rnd == 0) && (ld == 0 || ld == 5)); + default: + /* Without a valid context, further results will be undefined. */ + return 0; + } +} + +/* + * Apply rounding to a decimal that has been right-shifted into a full + * precision decimal. If an increment leads to an overflow of the precision, + * adjust the coefficient and the exponent and check the new exponent for + * overflow. + */ +static inline void +_mpd_apply_round(mpd_t *dec, mpd_uint_t rnd, const mpd_context_t *ctx, uint32_t *status) +{ + if (_mpd_rnd_incr(dec, rnd, ctx)) { + /* We have a number with exactly ctx->prec digits. The increment + * can only lead to an overflow if the decimal is all nines. In + * that case, the result is a power of ten with prec+1 digits. + * + * If the precision is a multiple of MPD_RDIGITS, this situation is + * detected by _mpd_baseincr returning a carry. + * If the precision is not a multiple of MPD_RDIGITS, we have to + * check if the result has one digit too many. + */ + mpd_uint_t carry = _mpd_baseincr(dec->data, dec->len); + if (carry) { + dec->data[dec->len-1] = mpd_pow10[MPD_RDIGITS-1]; + dec->exp += 1; + _mpd_check_exp(dec, ctx, status); + return; + } + mpd_setdigits(dec); + if (dec->digits > ctx->prec) { + mpd_qshiftr_inplace(dec, 1); + dec->exp += 1; + dec->digits = ctx->prec; + _mpd_check_exp(dec, ctx, status); + } + } +} + +/* + * Apply rounding to a decimal. Allow overflow of the precision. + */ +static inline void +_mpd_apply_round_excess(mpd_t *dec, mpd_uint_t rnd, const mpd_context_t *ctx, uint32_t *status) +{ + if (_mpd_rnd_incr(dec, rnd, ctx)) { + mpd_uint_t carry = _mpd_baseincr(dec->data, dec->len); + if (carry) { + if (!mpd_qresize(dec, dec->len+1, status)) { + return; + } + dec->data[dec->len] = 1; + dec->len += 1; + } + mpd_setdigits(dec); + } +} + +/* + * Apply rounding to a decimal that has been right-shifted into a decimal + * with full precision or less. Return failure if an increment would + * overflow the precision. + */ +static inline int +_mpd_apply_round_fit(mpd_t *dec, mpd_uint_t rnd, const mpd_context_t *ctx, uint32_t *status) +{ + if (_mpd_rnd_incr(dec, rnd, ctx)) { + mpd_uint_t carry = _mpd_baseincr(dec->data, dec->len); + if (carry) { + if (!mpd_qresize(dec, dec->len+1, status)) { + return 0; + } + dec->data[dec->len] = 1; + dec->len += 1; + } + mpd_setdigits(dec); + if (dec->digits > ctx->prec) { + mpd_seterror(dec, MPD_Invalid_operation, status); + return 0; + } + } + return 1; +} + +/* Check a normal number for overflow, underflow, clamping. */ +static inline void +_mpd_check_exp(mpd_t *dec, const mpd_context_t *ctx, uint32_t *status) +{ + mpd_ssize_t adjexp, etiny, shift; + int rnd; + + adjexp = mpd_adjexp(dec); + if (adjexp > ctx->emax) { + + if (mpd_iszerocoeff(dec)) { + dec->exp = ctx->emax; + if (ctx->clamp) { + dec->exp -= (ctx->prec-1); + } + mpd_zerocoeff(dec); + *status |= MPD_Clamped; + return; + } + + switch (ctx->round) { + case MPD_ROUND_HALF_UP: case MPD_ROUND_HALF_EVEN: + case MPD_ROUND_HALF_DOWN: case MPD_ROUND_UP: + case MPD_ROUND_TRUNC: + mpd_setspecial(dec, mpd_sign(dec), MPD_INF); + break; + case MPD_ROUND_DOWN: case MPD_ROUND_05UP: + mpd_qmaxcoeff(dec, ctx, status); + dec->exp = ctx->emax - ctx->prec + 1; + break; + case MPD_ROUND_CEILING: + if (mpd_isnegative(dec)) { + mpd_qmaxcoeff(dec, ctx, status); + dec->exp = ctx->emax - ctx->prec + 1; + } + else { + mpd_setspecial(dec, MPD_POS, MPD_INF); + } + break; + case MPD_ROUND_FLOOR: + if (mpd_ispositive(dec)) { + mpd_qmaxcoeff(dec, ctx, status); + dec->exp = ctx->emax - ctx->prec + 1; + } + else { + mpd_setspecial(dec, MPD_NEG, MPD_INF); + } + break; + default: /* debug */ + abort(); + } + + *status |= MPD_Overflow|MPD_Inexact|MPD_Rounded; + + } /* fold down */ + else if (ctx->clamp && dec->exp > mpd_etop(ctx)) { + shift = dec->exp - mpd_etop(ctx); + /* if shiftl fails, dec is NaN */ + (void)mpd_qshiftl(dec, dec, shift, status); + dec->exp -= shift; + *status |= MPD_Clamped; + } + else if (adjexp < ctx->emin) { + + etiny = mpd_etiny(ctx); + + if (mpd_iszerocoeff(dec)) { + if (dec->exp < etiny) { + dec->exp = etiny; + mpd_zerocoeff(dec); + *status |= MPD_Clamped; + } + return; + } + + *status |= MPD_Subnormal; + if (dec->exp < etiny) { + /* At this point adjexp=exp+digits-1 < emin and exp < etiny=emin-prec+1, + * so shift=emin-prec+1-exp > digits-prec, so digits-shift < prec. + * [acl2 proof: checkexp-1] */ + shift = etiny - dec->exp; + rnd = (int)mpd_qshiftr_inplace(dec, shift); + dec->exp = etiny; + /* We always have a spare digit in case of an increment. */ + _mpd_apply_round_excess(dec, rnd, ctx, status); + *status |= MPD_Rounded; + if (rnd) { + *status |= (MPD_Inexact|MPD_Underflow); + if (mpd_iszerocoeff(dec)) { + mpd_zerocoeff(dec); + *status |= MPD_Clamped; + } + } + } + } +} + +/* Check if a normal number must be rounded after the exponent has been checked. */ +static inline void +_mpd_check_round(mpd_t *dec, const mpd_context_t *ctx, uint32_t *status) +{ + mpd_uint_t rnd; + mpd_ssize_t shift; + + /* must handle specials: _mpd_check_exp() can produce infinities or NaNs */ + if (mpd_isspecial(dec)) { + return; + } + + if (dec->digits > ctx->prec) { + shift = dec->digits - ctx->prec; + rnd = mpd_qshiftr_inplace(dec, shift); + dec->exp += shift; + _mpd_apply_round(dec, rnd, ctx, status); + *status |= MPD_Rounded; + if (rnd) { + *status |= MPD_Inexact; + } + } +} + +/* Finalize all operations. */ +void +mpd_qfinalize(mpd_t *result, const mpd_context_t *ctx, uint32_t *status) +{ + if (mpd_isspecial(result)) { + if (mpd_isnan(result)) { + _mpd_fix_nan(result, ctx); + } + return; + } + + _mpd_check_exp(result, ctx, status); + _mpd_check_round(result, ctx, status); +} + + +/******************************************************************************/ +/* Copying */ +/******************************************************************************/ + +/* Internal function: Copy a decimal, share data with src: USE WITH CARE! */ +static inline void +_mpd_copy_shared(mpd_t *dest, const mpd_t *src) +{ + dest->flags = src->flags; + dest->exp = src->exp; + dest->digits = src->digits; + dest->len = src->len; + dest->alloc = src->alloc; + dest->data = src->data; + + mpd_set_shared_data(dest); +} + +/* + * Copy a decimal. In case of an error, status is set to MPD_Malloc_error. + * Does not raise. + */ +int +mpd_qcopy(mpd_t *result, const mpd_t *a, uint32_t *status) +{ + if (result == a) return 1; + + if (!mpd_qresize(result, a->len, status)) { + return 0; + } + + mpd_copy_flags(result, a); + result->exp = a->exp; + result->digits = a->digits; + result->len = a->len; + memcpy(result->data, a->data, a->len * (sizeof *result->data)); + + return 1; +} + +/* + * Copy to a decimal with a static buffer. The caller has to make sure that + * the buffer is big enough. Cannot fail. + */ +static void +mpd_qcopy_static(mpd_t *result, const mpd_t *a) +{ + if (result == a) return; + + memcpy(result->data, a->data, a->len * (sizeof *result->data)); + + mpd_copy_flags(result, a); + result->exp = a->exp; + result->digits = a->digits; + result->len = a->len; +} + +/* + * Return a newly allocated copy of the operand. In case of an error, + * status is set to MPD_Malloc_error and the return value is NULL. + * Does not raise. + */ +mpd_t * +mpd_qncopy(const mpd_t *a) +{ + mpd_t *result; + + if ((result = mpd_qnew_size(a->len)) == NULL) { + return NULL; + } + memcpy(result->data, a->data, a->len * (sizeof *result->data)); + mpd_copy_flags(result, a); + result->exp = a->exp; + result->digits = a->digits; + result->len = a->len; + + return result; +} + +/* + * Copy a decimal and set the sign to positive. In case of an error, the + * status is set to MPD_Malloc_error. + */ +int +mpd_qcopy_abs(mpd_t *result, const mpd_t *a, uint32_t *status) +{ + if (!mpd_qcopy(result, a, status)) { + return 0; + } + mpd_set_positive(result); + return 1; +} + +/* + * Copy a decimal and negate the sign. In case of an error, the + * status is set to MPD_Malloc_error. + */ +int +mpd_qcopy_negate(mpd_t *result, const mpd_t *a, uint32_t *status) +{ + if (!mpd_qcopy(result, a, status)) { + return 0; + } + _mpd_negate(result); + return 1; +} + +/* + * Copy a decimal, setting the sign of the first operand to the sign of the + * second operand. In case of an error, the status is set to MPD_Malloc_error. + */ +int +mpd_qcopy_sign(mpd_t *result, const mpd_t *a, const mpd_t *b, uint32_t *status) +{ + uint8_t sign_b = mpd_sign(b); /* result may equal b! */ + + if (!mpd_qcopy(result, a, status)) { + return 0; + } + mpd_set_sign(result, sign_b); + return 1; +} + + +/******************************************************************************/ +/* Comparisons */ +/******************************************************************************/ + +/* + * For all functions that compare two operands and return an int the usual + * convention applies to the return value: + * + * -1 if op1 < op2 + * 0 if op1 == op2 + * 1 if op1 > op2 + * + * INT_MAX for error + */ + + +/* Convenience macro. If a and b are not equal, return from the calling + * function with the correct comparison value. */ +#define CMP_EQUAL_OR_RETURN(a, b) \ + if (a != b) { \ + if (a < b) { \ + return -1; \ + } \ + return 1; \ + } + +/* + * Compare the data of big and small. This function does the equivalent + * of first shifting small to the left and then comparing the data of + * big and small, except that no allocation for the left shift is needed. + */ +static int +_mpd_basecmp(mpd_uint_t *big, mpd_uint_t *small, size_t n, size_t m, size_t shift) +{ +#if defined(__GNUC__) && !defined(__INTEL_COMPILER) + /* spurious uninitialized warnings */ + mpd_uint_t l=l, lprev=lprev, h=h; +#else + mpd_uint_t l, lprev, h; +#endif + mpd_uint_t q, r; + mpd_uint_t ph, x; + + assert(m > 0 && n >= m && shift > 0); + + _mpd_div_word(&q, &r, (mpd_uint_t)shift, MPD_RDIGITS); + + if (r != 0) { + + ph = mpd_pow10[r]; + + --m; --n; + _mpd_divmod_pow10(&h, &lprev, small[m--], MPD_RDIGITS-r); + if (h != 0) { + CMP_EQUAL_OR_RETURN(big[n], h) + --n; + } + for (; m != SIZE_MAX; m--,n--) { + _mpd_divmod_pow10(&h, &l, small[m], MPD_RDIGITS-r); + x = ph * lprev + h; + CMP_EQUAL_OR_RETURN(big[n], x) + lprev = l; + } + x = ph * lprev; + CMP_EQUAL_OR_RETURN(big[q], x) + } + else { + while (--m != SIZE_MAX) { + CMP_EQUAL_OR_RETURN(big[m+q], small[m]) + } + } + + return !_mpd_isallzero(big, q); +} + +/* Compare two decimals with the same adjusted exponent. */ +static int +_mpd_cmp_same_adjexp(const mpd_t *a, const mpd_t *b) +{ + mpd_ssize_t shift, i; + + if (a->exp != b->exp) { + /* Cannot wrap: a->exp + a->digits = b->exp + b->digits, so + * a->exp - b->exp = b->digits - a->digits. */ + shift = a->exp - b->exp; + if (shift > 0) { + return -1 * _mpd_basecmp(b->data, a->data, b->len, a->len, shift); + } + else { + return _mpd_basecmp(a->data, b->data, a->len, b->len, -shift); + } + } + + /* + * At this point adjexp(a) == adjexp(b) and a->exp == b->exp, + * so a->digits == b->digits, therefore a->len == b->len. + */ + for (i = a->len-1; i >= 0; --i) { + CMP_EQUAL_OR_RETURN(a->data[i], b->data[i]) + } + + return 0; +} + +/* Compare two numerical values. */ +static int +_mpd_cmp(const mpd_t *a, const mpd_t *b) +{ + mpd_ssize_t adjexp_a, adjexp_b; + + /* equal pointers */ + if (a == b) { + return 0; + } + + /* infinities */ + if (mpd_isinfinite(a)) { + if (mpd_isinfinite(b)) { + return mpd_isnegative(b) - mpd_isnegative(a); + } + return mpd_arith_sign(a); + } + if (mpd_isinfinite(b)) { + return -mpd_arith_sign(b); + } + + /* zeros */ + if (mpd_iszerocoeff(a)) { + if (mpd_iszerocoeff(b)) { + return 0; + } + return -mpd_arith_sign(b); + } + if (mpd_iszerocoeff(b)) { + return mpd_arith_sign(a); + } + + /* different signs */ + if (mpd_sign(a) != mpd_sign(b)) { + return mpd_sign(b) - mpd_sign(a); + } + + /* different adjusted exponents */ + adjexp_a = mpd_adjexp(a); + adjexp_b = mpd_adjexp(b); + if (adjexp_a != adjexp_b) { + if (adjexp_a < adjexp_b) { + return -1 * mpd_arith_sign(a); + } + return mpd_arith_sign(a); + } + + /* same adjusted exponents */ + return _mpd_cmp_same_adjexp(a, b) * mpd_arith_sign(a); +} + +/* Compare the absolutes of two numerical values. */ +static int +_mpd_cmp_abs(const mpd_t *a, const mpd_t *b) +{ + mpd_ssize_t adjexp_a, adjexp_b; + + /* equal pointers */ + if (a == b) { + return 0; + } + + /* infinities */ + if (mpd_isinfinite(a)) { + if (mpd_isinfinite(b)) { + return 0; + } + return 1; + } + if (mpd_isinfinite(b)) { + return -1; + } + + /* zeros */ + if (mpd_iszerocoeff(a)) { + if (mpd_iszerocoeff(b)) { + return 0; + } + return -1; + } + if (mpd_iszerocoeff(b)) { + return 1; + } + + /* different adjusted exponents */ + adjexp_a = mpd_adjexp(a); + adjexp_b = mpd_adjexp(b); + if (adjexp_a != adjexp_b) { + if (adjexp_a < adjexp_b) { + return -1; + } + return 1; + } + + /* same adjusted exponents */ + return _mpd_cmp_same_adjexp(a, b); +} + +/* Compare two values and return an integer result. */ +int +mpd_qcmp(const mpd_t *a, const mpd_t *b, uint32_t *status) +{ + if (mpd_isspecial(a) || mpd_isspecial(b)) { + if (mpd_isnan(a) || mpd_isnan(b)) { + *status |= MPD_Invalid_operation; + return INT_MAX; + } + } + + return _mpd_cmp(a, b); +} + +/* + * Compare a and b, convert the the usual integer result to a decimal and + * store it in 'result'. For convenience, the integer result of the comparison + * is returned. Comparisons involving NaNs return NaN/INT_MAX. + */ +int +mpd_qcompare(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + int c; + + if (mpd_isspecial(a) || mpd_isspecial(b)) { + if (mpd_qcheck_nans(result, a, b, ctx, status)) { + return INT_MAX; + } + } + + c = _mpd_cmp(a, b); + _settriple(result, (c < 0), (c != 0), 0); + return c; +} + +/* Same as mpd_compare(), but signal for all NaNs, i.e. also for quiet NaNs. */ +int +mpd_qcompare_signal(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + int c; + + if (mpd_isspecial(a) || mpd_isspecial(b)) { + if (mpd_qcheck_nans(result, a, b, ctx, status)) { + *status |= MPD_Invalid_operation; + return INT_MAX; + } + } + + c = _mpd_cmp(a, b); + _settriple(result, (c < 0), (c != 0), 0); + return c; +} + +/* Compare the operands using a total order. */ +int +mpd_cmp_total(const mpd_t *a, const mpd_t *b) +{ + mpd_t aa, bb; + int nan_a, nan_b; + int c; + + if (mpd_sign(a) != mpd_sign(b)) { + return mpd_sign(b) - mpd_sign(a); + } + + + if (mpd_isnan(a)) { + c = 1; + if (mpd_isnan(b)) { + nan_a = (mpd_isqnan(a)) ? 1 : 0; + nan_b = (mpd_isqnan(b)) ? 1 : 0; + if (nan_b == nan_a) { + if (a->len > 0 && b->len > 0) { + _mpd_copy_shared(&aa, a); + _mpd_copy_shared(&bb, b); + aa.exp = bb.exp = 0; + /* compare payload */ + c = _mpd_cmp_abs(&aa, &bb); + } + else { + c = (a->len > 0) - (b->len > 0); + } + } + else { + c = nan_a - nan_b; + } + } + } + else if (mpd_isnan(b)) { + c = -1; + } + else { + c = _mpd_cmp_abs(a, b); + if (c == 0 && a->exp != b->exp) { + c = (a->exp < b->exp) ? -1 : 1; + } + } + + return c * mpd_arith_sign(a); +} + +/* + * Compare a and b according to a total order, convert the usual integer result + * to a decimal and store it in 'result'. For convenience, the integer result + * of the comparison is returned. + */ +int +mpd_compare_total(mpd_t *result, const mpd_t *a, const mpd_t *b) +{ + int c; + + c = mpd_cmp_total(a, b); + _settriple(result, (c < 0), (c != 0), 0); + return c; +} + +/* Compare the magnitude of the operands using a total order. */ +int +mpd_cmp_total_mag(const mpd_t *a, const mpd_t *b) +{ + mpd_t aa, bb; + + _mpd_copy_shared(&aa, a); + _mpd_copy_shared(&bb, b); + + mpd_set_positive(&aa); + mpd_set_positive(&bb); + + return mpd_cmp_total(&aa, &bb); +} + +/* + * Compare the magnitude of a and b according to a total order, convert the + * the usual integer result to a decimal and store it in 'result'. + * For convenience, the integer result of the comparison is returned. + */ +int +mpd_compare_total_mag(mpd_t *result, const mpd_t *a, const mpd_t *b) +{ + int c; + + c = mpd_cmp_total_mag(a, b); + _settriple(result, (c < 0), (c != 0), 0); + return c; +} + +/* Determine an ordering for operands that are numerically equal. */ +static inline int +_mpd_cmp_numequal(const mpd_t *a, const mpd_t *b) +{ + int sign_a, sign_b; + int c; + + sign_a = mpd_sign(a); + sign_b = mpd_sign(b); + if (sign_a != sign_b) { + c = sign_b - sign_a; + } + else { + c = (a->exp < b->exp) ? -1 : 1; + c *= mpd_arith_sign(a); + } + + return c; +} + + +/******************************************************************************/ +/* Shifting the coefficient */ +/******************************************************************************/ + +/* + * Shift the coefficient of the operand to the left, no check for specials. + * Both operands may be the same pointer. If the result length has to be + * increased, mpd_qresize() might fail with MPD_Malloc_error. + */ +int +mpd_qshiftl(mpd_t *result, const mpd_t *a, mpd_ssize_t n, uint32_t *status) +{ + mpd_ssize_t size; + + assert(n >= 0); + + if (mpd_iszerocoeff(a) || n == 0) { + mpd_qcopy(result, a, status); + return 1; + } + + size = mpd_digits_to_size(a->digits+n); + if (!mpd_qresize(result, size, status)) { + return 0; /* result is NaN */ + } + + _mpd_baseshiftl(result->data, a->data, size, a->len, n); + + mpd_copy_flags(result, a); + result->len = size; + result->exp = a->exp; + result->digits = a->digits+n; + + return 1; +} + +/* Determine the rounding indicator if all digits of the coefficient are shifted + * out of the picture. */ +static mpd_uint_t +_mpd_get_rnd(const mpd_uint_t *data, mpd_ssize_t len, int use_msd) +{ + mpd_uint_t rnd = 0, rest = 0, word; + + word = data[len-1]; + /* special treatment for the most significant digit if shift == digits */ + if (use_msd) { + _mpd_divmod_pow10(&rnd, &rest, word, mpd_word_digits(word)-1); + if (len > 1 && rest == 0) { + rest = !_mpd_isallzero(data, len-1); + } + } + else { + rest = !_mpd_isallzero(data, len); + } + + return (rnd == 0 || rnd == 5) ? rnd + !!rest : rnd; +} + +/* + * Same as mpd_qshiftr(), but 'result' is a static array. It is the + * caller's responsibility to make sure that the array is big enough. + * The function cannot fail. + */ +static mpd_uint_t +mpd_qsshiftr(mpd_t *result, const mpd_t *a, mpd_ssize_t n) +{ + mpd_uint_t rnd; + mpd_ssize_t size; + + assert(n >= 0); + + if (mpd_iszerocoeff(a) || n == 0) { + mpd_qcopy_static(result, a); + return 0; + } + + if (n >= a->digits) { + rnd = _mpd_get_rnd(a->data, a->len, (n==a->digits)); + mpd_zerocoeff(result); + result->digits = 1; + size = 1; + } + else { + result->digits = a->digits-n; + size = mpd_digits_to_size(result->digits); + rnd = _mpd_baseshiftr(result->data, a->data, a->len, n); + } + + mpd_copy_flags(result, a); + result->exp = a->exp; + result->len = size; + + return rnd; +} + +/* + * Inplace shift of the coefficient to the right, no check for specials. + * Returns the rounding indicator for mpd_rnd_incr(). + * The function cannot fail. + */ +mpd_uint_t +mpd_qshiftr_inplace(mpd_t *result, mpd_ssize_t n) +{ + uint32_t dummy; + mpd_uint_t rnd; + mpd_ssize_t size; + + assert(n >= 0); + + if (mpd_iszerocoeff(result) || n == 0) { + return 0; + } + + if (n >= result->digits) { + rnd = _mpd_get_rnd(result->data, result->len, (n==result->digits)); + mpd_zerocoeff(result); + result->digits = 1; + size = 1; + } + else { + rnd = _mpd_baseshiftr(result->data, result->data, result->len, n); + result->digits -= n; + size = mpd_digits_to_size(result->digits); + /* reducing the size cannot fail */ + mpd_qresize(result, size, &dummy); + } + + result->len = size; + + return rnd; +} + +/* + * Shift the coefficient of the operand to the right, no check for specials. + * Both operands may be the same pointer. Returns the rounding indicator to + * be used by mpd_rnd_incr(). If the result length has to be increased, + * mpd_qcopy() or mpd_qresize() might fail with MPD_Malloc_error. In those + * cases, MPD_UINT_MAX is returned. + */ +mpd_uint_t +mpd_qshiftr(mpd_t *result, const mpd_t *a, mpd_ssize_t n, uint32_t *status) +{ + mpd_uint_t rnd; + mpd_ssize_t size; + + assert(n >= 0); + + if (mpd_iszerocoeff(a) || n == 0) { + if (!mpd_qcopy(result, a, status)) { + return MPD_UINT_MAX; + } + return 0; + } + + if (n >= a->digits) { + rnd = _mpd_get_rnd(a->data, a->len, (n==a->digits)); + mpd_zerocoeff(result); + result->digits = 1; + size = 1; + } + else { + result->digits = a->digits-n; + size = mpd_digits_to_size(result->digits); + if (result == a) { + rnd = _mpd_baseshiftr(result->data, a->data, a->len, n); + /* reducing the size cannot fail */ + mpd_qresize(result, size, status); + } + else { + if (!mpd_qresize(result, size, status)) { + return MPD_UINT_MAX; + } + rnd = _mpd_baseshiftr(result->data, a->data, a->len, n); + } + } + + mpd_copy_flags(result, a); + result->exp = a->exp; + result->len = size; + + return rnd; +} + + +/******************************************************************************/ +/* Miscellaneous operations */ +/******************************************************************************/ + +/* Logical And */ +void +mpd_qand(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + const mpd_t *big = a, *small = b; + mpd_uint_t x, y, z, xbit, ybit; + int k, mswdigits; + mpd_ssize_t i; + + if (mpd_isspecial(a) || mpd_isspecial(b) || + mpd_isnegative(a) || mpd_isnegative(b) || + a->exp != 0 || b->exp != 0) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + if (b->digits > a->digits) { + big = b; + small = a; + } + if (!mpd_qresize(result, big->len, status)) { + return; + } + + + /* full words */ + for (i = 0; i < small->len-1; i++) { + x = small->data[i]; + y = big->data[i]; + z = 0; + for (k = 0; k < MPD_RDIGITS; k++) { + xbit = x % 10; + x /= 10; + ybit = y % 10; + y /= 10; + if (xbit > 1 || ybit > 1) { + goto invalid_operation; + } + z += (xbit&ybit) ? mpd_pow10[k] : 0; + } + result->data[i] = z; + } + /* most significant word of small */ + x = small->data[i]; + y = big->data[i]; + z = 0; + mswdigits = mpd_word_digits(x); + for (k = 0; k < mswdigits; k++) { + xbit = x % 10; + x /= 10; + ybit = y % 10; + y /= 10; + if (xbit > 1 || ybit > 1) { + goto invalid_operation; + } + z += (xbit&ybit) ? mpd_pow10[k] : 0; + } + result->data[i++] = z; + + /* scan the rest of y for digit > 1 */ + for (; k < MPD_RDIGITS; k++) { + ybit = y % 10; + y /= 10; + if (ybit > 1) { + goto invalid_operation; + } + } + /* scan the rest of big for digit > 1 */ + for (; i < big->len; i++) { + y = big->data[i]; + for (k = 0; k < MPD_RDIGITS; k++) { + ybit = y % 10; + y /= 10; + if (ybit > 1) { + goto invalid_operation; + } + } + } + + mpd_clear_flags(result); + result->exp = 0; + result->len = _mpd_real_size(result->data, small->len); + mpd_qresize(result, result->len, status); + mpd_setdigits(result); + _mpd_cap(result, ctx); + return; + +invalid_operation: + mpd_seterror(result, MPD_Invalid_operation, status); +} + +/* Class of an operand. Returns a pointer to the constant name. */ +const char * +mpd_class(const mpd_t *a, const mpd_context_t *ctx) +{ + if (mpd_isnan(a)) { + if (mpd_isqnan(a)) + return "NaN"; + else + return "sNaN"; + } + else if (mpd_ispositive(a)) { + if (mpd_isinfinite(a)) + return "+Infinity"; + else if (mpd_iszero(a)) + return "+Zero"; + else if (mpd_isnormal(a, ctx)) + return "+Normal"; + else + return "+Subnormal"; + } + else { + if (mpd_isinfinite(a)) + return "-Infinity"; + else if (mpd_iszero(a)) + return "-Zero"; + else if (mpd_isnormal(a, ctx)) + return "-Normal"; + else + return "-Subnormal"; + } +} + +/* Logical Xor */ +void +mpd_qinvert(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_uint_t x, z, xbit; + mpd_ssize_t i, digits, len; + mpd_ssize_t q, r; + int k; + + if (mpd_isspecial(a) || mpd_isnegative(a) || a->exp != 0) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + + digits = (a->digits < ctx->prec) ? ctx->prec : a->digits; + _mpd_idiv_word(&q, &r, digits, MPD_RDIGITS); + len = (r == 0) ? q : q+1; + if (!mpd_qresize(result, len, status)) { + return; + } + + for (i = 0; i < len; i++) { + x = (i < a->len) ? a->data[i] : 0; + z = 0; + for (k = 0; k < MPD_RDIGITS; k++) { + xbit = x % 10; + x /= 10; + if (xbit > 1) { + goto invalid_operation; + } + z += !xbit ? mpd_pow10[k] : 0; + } + result->data[i] = z; + } + + mpd_clear_flags(result); + result->exp = 0; + result->len = _mpd_real_size(result->data, len); + mpd_setdigits(result); + _mpd_cap(result, ctx); + return; + +invalid_operation: + mpd_seterror(result, MPD_Invalid_operation, status); +} + +/* Exponent of the magnitude of the most significant digit of the operand. */ +void +mpd_qlogb(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +{ + if (mpd_isspecial(a)) { + if (mpd_qcheck_nan(result, a, ctx, status)) { + return; + } + mpd_setspecial(result, MPD_POS, MPD_INF); + } + else if (mpd_iszerocoeff(a)) { + mpd_setspecial(result, MPD_NEG, MPD_INF); + *status |= MPD_Division_by_zero; + } + else { + mpd_qset_ssize(result, mpd_adjexp(a), ctx, status); + } +} + +/* Logical Or */ +void +mpd_qor(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + const mpd_t *big = a, *small = b; + mpd_uint_t x, y, z, xbit, ybit; + int k, mswdigits; + mpd_ssize_t i; + + if (mpd_isspecial(a) || mpd_isspecial(b) || + mpd_isnegative(a) || mpd_isnegative(b) || + a->exp != 0 || b->exp != 0) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + if (b->digits > a->digits) { + big = b; + small = a; + } + if (!mpd_qresize(result, big->len, status)) { + return; + } + + + /* full words */ + for (i = 0; i < small->len-1; i++) { + x = small->data[i]; + y = big->data[i]; + z = 0; + for (k = 0; k < MPD_RDIGITS; k++) { + xbit = x % 10; + x /= 10; + ybit = y % 10; + y /= 10; + if (xbit > 1 || ybit > 1) { + goto invalid_operation; + } + z += (xbit|ybit) ? mpd_pow10[k] : 0; + } + result->data[i] = z; + } + /* most significant word of small */ + x = small->data[i]; + y = big->data[i]; + z = 0; + mswdigits = mpd_word_digits(x); + for (k = 0; k < mswdigits; k++) { + xbit = x % 10; + x /= 10; + ybit = y % 10; + y /= 10; + if (xbit > 1 || ybit > 1) { + goto invalid_operation; + } + z += (xbit|ybit) ? mpd_pow10[k] : 0; + } + + /* scan and copy the rest of y for digit > 1 */ + for (; k < MPD_RDIGITS; k++) { + ybit = y % 10; + y /= 10; + if (ybit > 1) { + goto invalid_operation; + } + z += ybit*mpd_pow10[k]; + } + result->data[i++] = z; + /* scan and copy the rest of big for digit > 1 */ + for (; i < big->len; i++) { + y = big->data[i]; + for (k = 0; k < MPD_RDIGITS; k++) { + ybit = y % 10; + y /= 10; + if (ybit > 1) { + goto invalid_operation; + } + } + result->data[i] = big->data[i]; + } + + mpd_clear_flags(result); + result->exp = 0; + result->len = _mpd_real_size(result->data, big->len); + mpd_setdigits(result); + _mpd_cap(result, ctx); + return; + +invalid_operation: + mpd_seterror(result, MPD_Invalid_operation, status); +} + +/* + * Rotate the coefficient of a by b->data digits. b must be an integer with + * exponent 0. + */ +void +mpd_qrotate(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + uint32_t workstatus = 0; + MPD_NEW_STATIC(tmp,0,0,0,0); + MPD_NEW_STATIC(big,0,0,0,0); + MPD_NEW_STATIC(small,0,0,0,0); + mpd_ssize_t n, lshift, rshift; + + if (mpd_isspecial(a) || mpd_isspecial(b)) { + if (mpd_qcheck_nans(result, a, b, ctx, status)) { + return; + } + } + if (b->exp != 0 || mpd_isinfinite(b)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + + n = mpd_qget_ssize(b, &workstatus); + if (workstatus&MPD_Invalid_operation) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + if (n > ctx->prec || n < -ctx->prec) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + if (mpd_isinfinite(a)) { + mpd_qcopy(result, a, status); + return; + } + + if (n >= 0) { + lshift = n; + rshift = ctx->prec-n; + } + else { + lshift = ctx->prec+n; + rshift = -n; + } + + if (a->digits > ctx->prec) { + if (!mpd_qcopy(&tmp, a, status)) { + return; + } + _mpd_cap(&tmp, ctx); + a = &tmp; + } + + if (!mpd_qshiftl(&big, a, lshift, status)) { + mpd_seterror(result, MPD_Malloc_error, status); + goto finish; + } + _mpd_cap(&big, ctx); + + if (mpd_qshiftr(&small, a, rshift, status) == MPD_UINT_MAX) { + mpd_seterror(result, MPD_Malloc_error, status); + goto finish; + } + _mpd_qadd(result, &big, &small, ctx, status); + + +finish: + mpd_del(&tmp); + mpd_del(&big); + mpd_del(&small); +} + +/* + * b must be an integer with exponent 0 and in the range +-2*(emax + prec). + * XXX: In my opinion +-(2*emax + prec) would be more sensible. + * The result is a with the value of b added to its exponent. + */ +void +mpd_qscaleb(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + uint32_t workstatus = 0; + mpd_uint_t n, maxjump; + int64_t exp; + + if (mpd_isspecial(a) || mpd_isspecial(b)) { + if (mpd_qcheck_nans(result, a, b, ctx, status)) { + return; + } + } + if (b->exp != 0 || mpd_isinfinite(b)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + + n = mpd_qget_uint(b, &workstatus); + /* the spec demands this */ + maxjump = 2 * (ctx->emax + ctx->prec); + + if (n > maxjump || workstatus&MPD_Invalid_operation) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + if (mpd_isinfinite(a)) { + mpd_qcopy(result, a, status); + return; + } + + exp = a->exp + (int64_t)n * mpd_arith_sign(b); + exp = (exp > MPD_EXP_INF) ? MPD_EXP_INF : exp; + exp = (exp < MPD_EXP_CLAMP) ? MPD_EXP_CLAMP : exp; + mpd_qcopy(result, a, status); + result->exp = (mpd_ssize_t)exp; + + mpd_qfinalize(result, ctx, status); +} + +/* + * Shift the coefficient by n digits, positive n is a left shift. In the case + * of a left shift, the result is decapitated to fit the context precision. If + * you don't want that, use mpd_shiftl(). + */ +void +mpd_qshiftn(mpd_t *result, const mpd_t *a, mpd_ssize_t n, const mpd_context_t *ctx, + uint32_t *status) +{ + if (mpd_isspecial(a)) { + if (mpd_qcheck_nan(result, a, ctx, status)) { + return; + } + mpd_qcopy(result, a, status); + return; + } + + if (n >= 0 && n <= ctx->prec) { + mpd_qshiftl(result, a, n, status); + _mpd_cap(result, ctx); + } + else if (n < 0 && n >= -ctx->prec) { + if (!mpd_qcopy(result, a, status)) { + return; + } + _mpd_cap(result, ctx); + mpd_qshiftr_inplace(result, -n); + } + else { + mpd_seterror(result, MPD_Invalid_operation, status); + } +} + +/* + * Same as mpd_shiftn(), but the shift is specified by the decimal b, which + * must be an integer with a zero exponent. Infinities remain infinities. + */ +void +mpd_qshift(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, + uint32_t *status) +{ + uint32_t workstatus = 0; + mpd_ssize_t n; + + if (mpd_isspecial(a) || mpd_isspecial(b)) { + if (mpd_qcheck_nans(result, a, b, ctx, status)) { + return; + } + } + if (b->exp != 0 || mpd_isinfinite(b)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + + n = mpd_qget_ssize(b, &workstatus); + if (workstatus&MPD_Invalid_operation) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + if (n > ctx->prec || n < -ctx->prec) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + if (mpd_isinfinite(a)) { + mpd_qcopy(result, a, status); + return; + } + + if (n >= 0) { + mpd_qshiftl(result, a, n, status); + _mpd_cap(result, ctx); + } + else { + if (!mpd_qcopy(result, a, status)) { + return; + } + _mpd_cap(result, ctx); + mpd_qshiftr_inplace(result, -n); + } +} + +/* Logical Xor */ +void +mpd_qxor(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + const mpd_t *big = a, *small = b; + mpd_uint_t x, y, z, xbit, ybit; + int k, mswdigits; + mpd_ssize_t i; + + if (mpd_isspecial(a) || mpd_isspecial(b) || + mpd_isnegative(a) || mpd_isnegative(b) || + a->exp != 0 || b->exp != 0) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + if (b->digits > a->digits) { + big = b; + small = a; + } + if (!mpd_qresize(result, big->len, status)) { + return; + } + + + /* full words */ + for (i = 0; i < small->len-1; i++) { + x = small->data[i]; + y = big->data[i]; + z = 0; + for (k = 0; k < MPD_RDIGITS; k++) { + xbit = x % 10; + x /= 10; + ybit = y % 10; + y /= 10; + if (xbit > 1 || ybit > 1) { + goto invalid_operation; + } + z += (xbit^ybit) ? mpd_pow10[k] : 0; + } + result->data[i] = z; + } + /* most significant word of small */ + x = small->data[i]; + y = big->data[i]; + z = 0; + mswdigits = mpd_word_digits(x); + for (k = 0; k < mswdigits; k++) { + xbit = x % 10; + x /= 10; + ybit = y % 10; + y /= 10; + if (xbit > 1 || ybit > 1) { + goto invalid_operation; + } + z += (xbit^ybit) ? mpd_pow10[k] : 0; + } + + /* scan and copy the rest of y for digit > 1 */ + for (; k < MPD_RDIGITS; k++) { + ybit = y % 10; + y /= 10; + if (ybit > 1) { + goto invalid_operation; + } + z += ybit*mpd_pow10[k]; + } + result->data[i++] = z; + /* scan and copy the rest of big for digit > 1 */ + for (; i < big->len; i++) { + y = big->data[i]; + for (k = 0; k < MPD_RDIGITS; k++) { + ybit = y % 10; + y /= 10; + if (ybit > 1) { + goto invalid_operation; + } + } + result->data[i] = big->data[i]; + } + + mpd_clear_flags(result); + result->exp = 0; + result->len = _mpd_real_size(result->data, big->len); + mpd_setdigits(result); + _mpd_cap(result, ctx); + return; + +invalid_operation: + mpd_seterror(result, MPD_Invalid_operation, status); +} + + +/******************************************************************************/ +/* Arithmetic operations */ +/******************************************************************************/ + +/* + * The absolute value of a. If a is negative, the result is the same + * as the result of the minus operation. Otherwise, the result is the + * result of the plus operation. + */ +void +mpd_qabs(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +{ + if (mpd_isspecial(a)) { + if (mpd_qcheck_nan(result, a, ctx, status)) { + return; + } + } + + if (mpd_isnegative(a)) { + mpd_qminus(result, a, ctx, status); + } + else { + mpd_qplus(result, a, ctx, status); + } + + mpd_qfinalize(result, ctx, status); +} + +static inline void +_mpd_ptrswap(mpd_t **a, mpd_t **b) +{ + mpd_t *t = *a; + *a = *b; + *b = t; +} + +/* Add or subtract infinities. */ +static void +_mpd_qaddsub_inf(mpd_t *result, const mpd_t *a, const mpd_t *b, uint8_t sign_b, uint32_t *status) +{ + if (mpd_isinfinite(a)) { + if (mpd_sign(a) != sign_b && mpd_isinfinite(b)) { + mpd_seterror(result, MPD_Invalid_operation, status); + } + else { + mpd_setspecial(result, mpd_sign(a), MPD_INF); + } + return; + } + assert(mpd_isinfinite(b)); + mpd_setspecial(result, sign_b, MPD_INF); +} + +/* Add or subtract non-special numbers. */ +static void +_mpd_qaddsub(mpd_t *result, const mpd_t *a, const mpd_t *b, uint8_t sign_b, + const mpd_context_t *ctx, uint32_t *status) +{ + mpd_t *big, *small; + MPD_NEW_STATIC(big_aligned,0,0,0,0); + MPD_NEW_CONST(tiny,0,0,0,1,1,1); + mpd_uint_t carry; + mpd_ssize_t newsize, shift; + mpd_ssize_t exp, i; + int swap = 0; + + + /* compare exponents */ + big = (mpd_t *)a; small = (mpd_t *)b; + if (big->exp != small->exp) { + if (small->exp > big->exp) { + _mpd_ptrswap(&big, &small); + swap++; + } + if (!mpd_iszerocoeff(big)) { + /* Test for adjexp(small) + big->digits < adjexp(big), if big-digits > prec + * Test for adjexp(small) + prec + 1 < adjexp(big), if big-digits <= prec + * If true, the magnitudes of the numbers are so far apart that one can as + * well add or subtract 1*10**big->exp. */ + exp = big->exp - 1; + exp += (big->digits > ctx->prec) ? 0 : big->digits-ctx->prec-1; + if (mpd_adjexp(small) < exp) { + mpd_copy_flags(&tiny, small); + tiny.exp = exp; + tiny.digits = 1; + tiny.len = 1; + tiny.data[0] = mpd_iszerocoeff(small) ? 0 : 1; + small = &tiny; + } + /* this cannot wrap: the difference is positive and <= maxprec+1 */ + shift = big->exp - small->exp; + if (!mpd_qshiftl(&big_aligned, big, shift, status)) { + mpd_seterror(result, MPD_Malloc_error, status); + goto finish; + } + big = &big_aligned; + } + } + result->exp = small->exp; + + + /* compare length of coefficients */ + if (big->len < small->len) { + _mpd_ptrswap(&big, &small); + swap++; + } + + newsize = big->len; + if (!mpd_qresize(result, newsize, status)) { + goto finish; + } + + if (mpd_sign(a) == sign_b) { + + carry = _mpd_baseadd(result->data, big->data, small->data, big->len, small->len); + + if (carry) { + newsize = big->len + 1; + if (!mpd_qresize(result, newsize, status)) { + goto finish; + } + result->data[newsize-1] = carry; + } + + result->len = newsize; + mpd_set_flags(result, sign_b); + } + else { + if (big->len == small->len) { + for (i=big->len-1; i >= 0; --i) { + if (big->data[i] != small->data[i]) { + if (big->data[i] < small->data[i]) { + _mpd_ptrswap(&big, &small); + swap++; + } + break; + } + } + } + + _mpd_basesub(result->data, big->data, small->data, big->len, small->len); + newsize = _mpd_real_size(result->data, big->len); + /* resize to smaller cannot fail */ + (void)mpd_qresize(result, newsize, status); + + result->len = newsize; + sign_b = (swap & 1) ? sign_b : mpd_sign(a); + mpd_set_flags(result, sign_b); + + if (mpd_iszerocoeff(result)) { + mpd_set_positive(result); + if (ctx->round == MPD_ROUND_FLOOR) { + mpd_set_negative(result); + } + } + } + + mpd_setdigits(result); + +finish: + mpd_del(&big_aligned); +} + +/* Add a and b. No specials, no finalizing. */ +static void +_mpd_qadd(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + _mpd_qaddsub(result, a, b, mpd_sign(b), ctx, status); +} + +/* Subtract b from a. No specials, no finalizing. */ +static void +_mpd_qsub(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + _mpd_qaddsub(result, a, b, !mpd_sign(b), ctx, status); +} + +/* Add a and b. */ +void +mpd_qadd(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + if (mpd_isspecial(a) || mpd_isspecial(b)) { + if (mpd_qcheck_nans(result, a, b, ctx, status)) { + return; + } + _mpd_qaddsub_inf(result, a, b, mpd_sign(b), status); + return; + } + + _mpd_qaddsub(result, a, b, mpd_sign(b), ctx, status); + mpd_qfinalize(result, ctx, status); +} + +/* Subtract b from a. */ +void +mpd_qsub(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + if (mpd_isspecial(a) || mpd_isspecial(b)) { + if (mpd_qcheck_nans(result, a, b, ctx, status)) { + return; + } + _mpd_qaddsub_inf(result, a, b, !mpd_sign(b), status); + return; + } + + _mpd_qaddsub(result, a, b, !mpd_sign(b), ctx, status); + mpd_qfinalize(result, ctx, status); +} + +/* Add decimal and mpd_ssize_t. */ +void +mpd_qadd_ssize(mpd_t *result, const mpd_t *a, mpd_ssize_t b, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_t bb; + mpd_uint_t bdata[2]; + + bb.data = bdata; + bb.flags = MPD_STATIC|MPD_CONST_DATA; + + mpd_qsset_ssize(&bb, b, ctx, status); + mpd_qadd(result, a, &bb, ctx, status); +} + +/* Add decimal and mpd_uint_t. */ +void +mpd_qadd_uint(mpd_t *result, const mpd_t *a, mpd_uint_t b, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_t bb; + mpd_uint_t bdata[2]; + + bb.data = bdata; + bb.flags = MPD_STATIC|MPD_CONST_DATA; + + mpd_qsset_uint(&bb, b, ctx, status); + mpd_qadd(result, a, &bb, ctx, status); +} + +/* Subtract mpd_ssize_t from decimal. */ +void +mpd_qsub_ssize(mpd_t *result, const mpd_t *a, mpd_ssize_t b, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_t bb; + mpd_uint_t bdata[2]; + + bb.data = bdata; + bb.flags = MPD_STATIC|MPD_CONST_DATA; + + mpd_qsset_ssize(&bb, b, ctx, status); + mpd_qsub(result, a, &bb, ctx, status); +} + +/* Subtract mpd_uint_t from decimal. */ +void +mpd_qsub_uint(mpd_t *result, const mpd_t *a, mpd_uint_t b, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_t bb; + mpd_uint_t bdata[2]; + + bb.data = bdata; + bb.flags = MPD_STATIC|MPD_CONST_DATA; + + mpd_qsset_uint(&bb, b, ctx, status); + mpd_qsub(result, a, &bb, ctx, status); +} + +/* Add decimal and int32_t. */ +void +mpd_qadd_i32(mpd_t *result, const mpd_t *a, int32_t b, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_qadd_ssize(result, a, b, ctx, status); +} + +/* Add decimal and uint32_t. */ +void +mpd_qadd_u32(mpd_t *result, const mpd_t *a, uint32_t b, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_qadd_uint(result, a, b, ctx, status); +} + +#ifdef CONFIG_64 +/* Add decimal and int64_t. */ +void +mpd_qadd_i64(mpd_t *result, const mpd_t *a, int64_t b, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_qadd_ssize(result, a, b, ctx, status); +} + +/* Add decimal and uint64_t. */ +void +mpd_qadd_u64(mpd_t *result, const mpd_t *a, uint64_t b, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_qadd_uint(result, a, b, ctx, status); +} +#endif + + +/* Divide infinities. */ +static void +_mpd_qdiv_inf(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + if (mpd_isinfinite(a)) { + if (mpd_isinfinite(b)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + mpd_setspecial(result, mpd_sign(a)^mpd_sign(b), MPD_INF); + return; + } + assert(mpd_isinfinite(b)); + _settriple(result, mpd_sign(a)^mpd_sign(b), 0, mpd_etiny(ctx)); + *status |= MPD_Clamped; +} + +enum {NO_IDEAL_EXP, SET_IDEAL_EXP}; +/* Divide a by b. */ +static void +_mpd_qdiv(int action, mpd_t *q, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + MPD_NEW_STATIC(aligned,0,0,0,0); + mpd_uint_t ld, carry = 0; + mpd_ssize_t shift, exp, tz; + mpd_ssize_t newsize; + mpd_ssize_t ideal_exp; + mpd_uint_t rem; + uint8_t sign_a = mpd_sign(a); + uint8_t sign_b = mpd_sign(b); + + + if (mpd_isspecial(a) || mpd_isspecial(b)) { + if (mpd_qcheck_nans(q, a, b, ctx, status)) { + return; + } + _mpd_qdiv_inf(q, a, b, ctx, status); + return; + } + if (mpd_iszerocoeff(b)) { + if (mpd_iszerocoeff(a)) { + mpd_seterror(q, MPD_Division_undefined, status); + } + else { + mpd_setspecial(q, sign_a^sign_b, MPD_INF); + *status |= MPD_Division_by_zero; + } + return; + } + if (mpd_iszerocoeff(a)) { + exp = a->exp - b->exp; + _settriple(q, sign_a^sign_b, 0, exp); + mpd_qfinalize(q, ctx, status); + return; + } + + shift = (b->digits - a->digits) + ctx->prec + 1; + ideal_exp = a->exp - b->exp; + exp = ideal_exp - shift; + if (shift > 0) { + if (!mpd_qshiftl(&aligned, a, shift, status)) { + mpd_seterror(q, MPD_Malloc_error, status); + goto finish; + } + a = &aligned; + } + else if (shift < 0) { + shift = -shift; + if (!mpd_qshiftl(&aligned, b, shift, status)) { + mpd_seterror(q, MPD_Malloc_error, status); + goto finish; + } + b = &aligned; + } + + + newsize = a->len - b->len + 1; + if ((q != b && q != a) || (q == b && newsize > b->len)) { + if (!mpd_qresize(q, newsize, status)) { + mpd_seterror(q, MPD_Malloc_error, status); + goto finish; + } + } + + + if (b->len == 1) { + rem = _mpd_shortdiv(q->data, a->data, a->len, b->data[0]); + } + else if (ctx->prec < MPD_NEWTONDIV_CUTOFF || b->digits < MPD_NEWTONDIV_CUTOFF) { + int ret = _mpd_basedivmod(q->data, NULL, a->data, b->data, + a->len, b->len); + if (ret < 0) { + mpd_seterror(q, MPD_Malloc_error, status); + goto finish; + } + rem = ret; + } + else { + MPD_NEW_STATIC(r,0,0,0,0); + _mpd_qbarrett_divmod(q, &r, a, b, ctx, status); + rem = !mpd_iszerocoeff(&r); + mpd_del(&r); + newsize = q->len; + } + + newsize = _mpd_real_size(q->data, newsize); + /* resize to smaller cannot fail */ + mpd_qresize(q, newsize, status); + q->len = newsize; + mpd_setdigits(q); + + shift = ideal_exp - exp; + if (rem) { + ld = mpd_lsd(q->data[0]); + if (ld == 0 || ld == 5) { + carry = _mpd_baseincr(q->data, q->len); + if (carry) { + if (!mpd_qresize(q, q->len+1, status)) { + mpd_seterror(q, MPD_Malloc_error, status); + goto finish; + } + q->data[q->len] = 1; + } + } + } + else if (action == SET_IDEAL_EXP && shift > 0) { + tz = mpd_trail_zeros(q); + shift = (tz > shift) ? shift : tz; + mpd_qshiftr_inplace(q, shift); + exp += shift; + } + + mpd_set_flags(q, sign_a^sign_b); + q->exp = exp; + + +finish: + mpd_del(&aligned); + mpd_qfinalize(q, ctx, status); +} + +/* Divide a by b. */ +void +mpd_qdiv(mpd_t *q, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, + uint32_t *status) +{ + _mpd_qdiv(SET_IDEAL_EXP, q, a, b, ctx, status); +} + +/* Internal function, used with the actions specified in the enum below. */ +static void +_mpd_qdivmod(mpd_t *q, mpd_t *r, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + MPD_NEW_STATIC(aligned,0,0,0,0); + mpd_ssize_t qsize, rsize; + mpd_ssize_t ideal_exp, expdiff, shift; + uint8_t sign_a = mpd_sign(a); + uint8_t sign_ab = mpd_sign(a)^mpd_sign(b); + + + ideal_exp = (a->exp > b->exp) ? b->exp : a->exp; + if (mpd_iszerocoeff(a)) { + if (!mpd_qcopy(r, a, status)) { + goto nanresult; + } + r->exp = ideal_exp; + _settriple(q, sign_ab, 0, 0); + return; + } + + expdiff = mpd_adjexp(a) - mpd_adjexp(b); + if (expdiff < 0) { + if (a->exp > b->exp) { + /* positive and less than b->digits - a->digits */ + shift = a->exp - b->exp; + if (!mpd_qshiftl(r, a, shift, status)) { + goto nanresult; + } + r->exp = ideal_exp; + } + else { + if (!mpd_qcopy(r, a, status)) { + goto nanresult; + } + } + _settriple(q, sign_ab, 0, 0); + return; + } + if (expdiff > ctx->prec) { + *status |= MPD_Division_impossible; + goto nanresult; + } + + + /* + * At this point we have: + * (1) 0 <= a->exp + a->digits - b->exp - b->digits <= prec + * (2) a->exp - b->exp >= b->digits - a->digits + * (3) a->exp - b->exp <= prec + b->digits - a->digits + */ + if (a->exp != b->exp) { + shift = a->exp - b->exp; + if (shift > 0) { + /* by (3), after the shift a->digits <= prec + b->digits */ + if (!mpd_qshiftl(&aligned, a, shift, status)) { + goto nanresult; + } + a = &aligned; + } + else { + shift = -shift; + /* by (2), after the shift b->digits <= a->digits */ + if (!mpd_qshiftl(&aligned, b, shift, status)) { + goto nanresult; + } + b = &aligned; + } + } + + + qsize = a->len - b->len + 1; + if (!(q == a && qsize < a->len) && !(q == b && qsize < b->len)) { + if (!mpd_qresize(q, qsize, status)) { + goto nanresult; + } + } + + rsize = b->len; + if (!(r == a && rsize < a->len)) { + if (!mpd_qresize(r, rsize, status)) { + goto nanresult; + } + } + + if (b->len == 1) { + if (a->len == 1) { + _mpd_div_word(&q->data[0], &r->data[0], a->data[0], b->data[0]); + } + else { + r->data[0] = _mpd_shortdiv(q->data, a->data, a->len, b->data[0]); + } + } + else if (ctx->prec < MPD_NEWTONDIV_CUTOFF || b->digits < MPD_NEWTONDIV_CUTOFF) { + int ret; + ret = _mpd_basedivmod(q->data, r->data, a->data, b->data, + a->len, b->len); + if (ret == -1) { + *status |= MPD_Malloc_error; + goto nanresult; + } + } + else { + _mpd_qbarrett_divmod(q, r, a, b, ctx, status); + if (mpd_isinfinite(q) || q->digits > ctx->prec) { + *status |= MPD_Division_impossible; + goto nanresult; + } + qsize = q->len; + rsize = r->len; + } + + qsize = _mpd_real_size(q->data, qsize); + /* resize to smaller cannot fail */ + mpd_qresize(q, qsize, status); + q->len = qsize; + mpd_setdigits(q); + mpd_set_flags(q, sign_ab); + q->exp = 0; + if (q->digits > ctx->prec) { + *status |= MPD_Division_impossible; + goto nanresult; + } + + rsize = _mpd_real_size(r->data, rsize); + /* resize to smaller cannot fail */ + mpd_qresize(r, rsize, status); + r->len = rsize; + mpd_setdigits(r); + mpd_set_flags(r, sign_a); + r->exp = ideal_exp; + +out: + mpd_del(&aligned); + return; + +nanresult: + mpd_setspecial(q, MPD_POS, MPD_NAN); + mpd_setspecial(r, MPD_POS, MPD_NAN); + goto out; +} + +/* Integer division with remainder, special cases have been dealt with. */ +void +mpd_qdivmod(mpd_t *q, mpd_t *r, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + uint8_t sign = mpd_sign(a)^mpd_sign(b); + + if (mpd_isspecial(a) || mpd_isspecial(b)) { + if (mpd_qcheck_nans(q, a, b, ctx, status)) { + mpd_qcopy(r, q, status); + return; + } + if (mpd_isinfinite(a)) { + if (mpd_isinfinite(b)) { + mpd_setspecial(q, MPD_POS, MPD_NAN); + } + else { + mpd_setspecial(q, sign, MPD_INF); + } + mpd_setspecial(r, MPD_POS, MPD_NAN); + *status |= MPD_Invalid_operation; + return; + } + if (mpd_isinfinite(b)) { + if (!mpd_qcopy(r, a, status)) { + mpd_seterror(q, MPD_Malloc_error, status); + return; + } + mpd_qfinalize(r, ctx, status); + _settriple(q, sign, 0, 0); + return; + } + /* debug */ + abort(); + } + if (mpd_iszerocoeff(b)) { + if (mpd_iszerocoeff(a)) { + mpd_setspecial(q, MPD_POS, MPD_NAN); + mpd_setspecial(r, MPD_POS, MPD_NAN); + *status |= MPD_Division_undefined; + } + else { + mpd_setspecial(q, sign, MPD_INF); + mpd_setspecial(r, MPD_POS, MPD_NAN); + *status |= (MPD_Division_by_zero|MPD_Invalid_operation); + } + return; + } + + _mpd_qdivmod(q, r, a, b, ctx, status); + mpd_qfinalize(q, ctx, status); + mpd_qfinalize(r, ctx, status); +} + +void +mpd_qdivint(mpd_t *q, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + MPD_NEW_STATIC(r,0,0,0,0); + uint8_t sign = mpd_sign(a)^mpd_sign(b); + + if (mpd_isspecial(a) || mpd_isspecial(b)) { + if (mpd_qcheck_nans(q, a, b, ctx, status)) { + return; + } + if (mpd_isinfinite(a) && mpd_isinfinite(b)) { + mpd_seterror(q, MPD_Invalid_operation, status); + return; + } + if (mpd_isinfinite(a)) { + mpd_setspecial(q, sign, MPD_INF); + return; + } + if (mpd_isinfinite(b)) { + _settriple(q, sign, 0, 0); + return; + } + /* debug */ + abort(); + } + if (mpd_iszerocoeff(b)) { + if (mpd_iszerocoeff(a)) { + mpd_seterror(q, MPD_Division_undefined, status); + } + else { + mpd_setspecial(q, sign, MPD_INF); + *status |= MPD_Division_by_zero; + } + return; + } + + + _mpd_qdivmod(q, &r, a, b, ctx, status); + mpd_del(&r); + mpd_qfinalize(q, ctx, status); +} + +/* Divide decimal by mpd_ssize_t. */ +void +mpd_qdiv_ssize(mpd_t *result, const mpd_t *a, mpd_ssize_t b, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_t bb; + mpd_uint_t bdata[2]; + + bb.data = bdata; + bb.flags = MPD_STATIC|MPD_CONST_DATA; + + mpd_qsset_ssize(&bb, b, ctx, status); + mpd_qdiv(result, a, &bb, ctx, status); +} + +/* Divide decimal by mpd_uint_t. */ +void +mpd_qdiv_uint(mpd_t *result, const mpd_t *a, mpd_uint_t b, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_t bb; + mpd_uint_t bdata[2]; + + bb.data = bdata; + bb.flags = MPD_STATIC|MPD_CONST_DATA; + + mpd_qsset_uint(&bb, b, ctx, status); + mpd_qdiv(result, a, &bb, ctx, status); +} + +/* Divide decimal by int32_t. */ +void +mpd_qdiv_i32(mpd_t *result, const mpd_t *a, int32_t b, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_qdiv_ssize(result, a, b, ctx, status); +} + +/* Divide decimal by uint32_t. */ +void +mpd_qdiv_u32(mpd_t *result, const mpd_t *a, uint32_t b, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_qdiv_uint(result, a, b, ctx, status); +} + +#ifdef CONFIG_64 +/* Divide decimal by int64_t. */ +void +mpd_qdiv_i64(mpd_t *result, const mpd_t *a, int64_t b, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_qdiv_ssize(result, a, b, ctx, status); +} + +/* Divide decimal by uint64_t. */ +void +mpd_qdiv_u64(mpd_t *result, const mpd_t *a, uint64_t b, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_qdiv_uint(result, a, b, ctx, status); +} +#endif + +/* + * Get the number of iterations for the Horner scheme in _mpd_qexp(). + */ +static inline mpd_ssize_t +_mpd_get_exp_iterations(const mpd_t *a, mpd_ssize_t prec) +{ + mpd_uint_t dummy; + mpd_uint_t msdigits; + double f; + + /* 9 is MPD_RDIGITS for 32 bit platforms */ + _mpd_get_msdigits(&dummy, &msdigits, a, 9); + f = ((double)msdigits + 1) / mpd_pow10[mpd_word_digits(msdigits)]; + +#ifdef CONFIG_64 + #if defined(__x86_64__) && defined(HAVE_80BIT_LONG_DOUBLE) + return ceill((1.435*(long double)prec - 1.182) / log10l((long double)prec/f)); + #else + /* prec > floor((1ULL<<53) / 1.435) */ + if (prec > 6276793905742851LL) { + return MPD_SSIZE_MAX; + } + return ceil((1.435*(double)prec - 1.182) / log10((double)prec/f)); + #endif +#else /* CONFIG_32 */ + return ceil((1.435*(double)prec - 1.182) / log10((double)prec/f)); +#endif +} + +/* + * Internal function, specials have been dealt with. + * + * The algorithm is from Hull&Abrham, Variable Precision Exponential Function, + * ACM Transactions on Mathematical Software, Vol. 12, No. 2, June 1986. + * + * Main differences: + * + * - The number of iterations for the Horner scheme is calculated using the + * C log10() function. + * + * - The analysis for early abortion has been adapted for the mpd_t + * ranges. + */ +static void +_mpd_qexp(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +{ + mpd_context_t workctx; + MPD_NEW_STATIC(tmp,0,0,0,0); + MPD_NEW_STATIC(sum,0,0,0,0); + MPD_NEW_CONST(word,0,0,0,1,1,1); + mpd_ssize_t j, n, t; + + /* + * We are calculating e^x = e^(r*10^t) = (e^r)^(10^t), where r < 1 and t >= 0. + * + * If t > 0, we have: + * + * (1) 0.1 <= r < 1, so e^r >= e^0.1. Overflow in the final power operation + * will occur when (e^0.1)^(10^t) > 10^(emax+1). If we consider MAX_EMAX, + * this will happen for t > 10 (32 bit) or (t > 19) (64 bit). + * + * (2) -1 < r <= -0.1, so e^r > e^-1. Underflow in the final power operation + * will occur when (e^-1)^(10^t) < 10^(etiny-1). If we consider MIN_ETINY, + * this will also happen for t > 10 (32 bit) or (t > 19) (64 bit). + */ +#ifdef CONFIG_32 + #define MPD_EXP_MAX_T 10 +#elif defined(CONFIG_64) + #define MPD_EXP_MAX_T 19 +#endif + t = a->digits + a->exp; + t = (t > 0) ? t : 0; + if (t > MPD_EXP_MAX_T) { + if (mpd_ispositive(a)) { + mpd_setspecial(result, MPD_POS, MPD_INF); + *status |= MPD_Overflow|MPD_Inexact|MPD_Rounded; + } + else { + _settriple(result, MPD_POS, 0, mpd_etiny(ctx)); + *status |= (MPD_Inexact|MPD_Rounded|MPD_Subnormal|MPD_Underflow|MPD_Clamped); + } + return; + } + + mpd_maxcontext(&workctx); + workctx.round = MPD_ROUND_HALF_EVEN; + workctx.prec = (ctx->prec > a->digits ? ctx->prec : a->digits) + t + 2; + workctx.prec = (workctx.prec < 9) ? 9 : workctx.prec; + + if ((n = _mpd_get_exp_iterations(a, workctx.prec)) == MPD_SSIZE_MAX) { + mpd_seterror(result, MPD_Invalid_operation, status); + goto finish; + } + + if (!mpd_qcopy(result, a, status)) { + goto finish; + } + result->exp -= t; + + _settriple(&sum, MPD_POS, 1, 0); + + for (j = n-1; j >= 1; j--) { + word.data[0] = j; + mpd_setdigits(&word); + mpd_qdiv(&tmp, result, &word, &workctx, &workctx.status); + mpd_qmul(&sum, &sum, &tmp, &workctx, &workctx.status); + mpd_qadd(&sum, &sum, &one, &workctx, &workctx.status); + } + + if (t <= MPD_MAX_POW10) { + _mpd_qpow_uint(result, &sum, mpd_pow10[t], MPD_POS, &workctx, status); + } + else { + t -= MPD_MAX_POW10; + _mpd_qpow_uint(&tmp, &sum, mpd_pow10[MPD_MAX_POW10], MPD_POS, &workctx, status); + _mpd_qpow_uint(result, &tmp, mpd_pow10[t], MPD_POS, &workctx, status); + } + + +finish: + mpd_del(&tmp); + mpd_del(&sum); + *status |= (workctx.status&MPD_Errors); + *status |= (MPD_Inexact|MPD_Rounded); +} + +/* exp(a) */ +void +mpd_qexp(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +{ + mpd_context_t workctx; + + if (mpd_isspecial(a)) { + if (mpd_qcheck_nan(result, a, ctx, status)) { + return; + } + if (mpd_isnegative(a)) { + _settriple(result, MPD_POS, 0, 0); + } + else { + mpd_setspecial(result, MPD_POS, MPD_INF); + } + return; + } + if (mpd_iszerocoeff(a)) { + _settriple(result, MPD_POS, 1, 0); + return; + } + + workctx = *ctx; + workctx.round = MPD_ROUND_HALF_EVEN; + + if (ctx->allcr) { + MPD_NEW_STATIC(t1, 0,0,0,0); + MPD_NEW_STATIC(t2, 0,0,0,0); + MPD_NEW_STATIC(ulp, 0,0,0,0); + MPD_NEW_STATIC(aa, 0,0,0,0); + mpd_ssize_t prec; + + if (result == a) { + mpd_qcopy(&aa, a, status); + a = &aa; + } + + prec = ctx->prec + 3; + while (1) { + workctx.prec = prec; + _mpd_qexp(result, a, &workctx, status); + _ssettriple(&ulp, MPD_POS, 1, result->exp + result->digits-workctx.prec-1); + + workctx.prec = ctx->prec; + mpd_qadd(&t1, result, &ulp, &workctx, status); + mpd_qsub(&t2, result, &ulp, &workctx, status); + if (mpd_isspecial(result) || mpd_iszerocoeff(result) || + mpd_qcmp(&t1, &t2, status) == 0) { + mpd_qfinalize(result, &workctx, status); + break; + } + prec += MPD_RDIGITS; + } + mpd_del(&t1); + mpd_del(&t2); + mpd_del(&ulp); + mpd_del(&aa); + } + else { + _mpd_qexp(result, a, &workctx, status); + mpd_qfinalize(result, &workctx, status); + } +} + +/* Fused multiply-add: (a * b) + c, with a single final rounding. */ +void +mpd_qfma(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_t *c, + const mpd_context_t *ctx, uint32_t *status) +{ + uint32_t workstatus = 0; + mpd_t *cc = (mpd_t *)c; + + if (result == c) { + if ((cc = mpd_qncopy(c)) == NULL) { + mpd_seterror(result, MPD_Malloc_error, status); + return; + } + } + + _mpd_qmul(result, a, b, ctx, &workstatus); + if (!(workstatus&MPD_Invalid_operation)) { + mpd_qadd(result, result, cc, ctx, &workstatus); + } + + if (cc != c) mpd_del(cc); + *status |= workstatus; +} + +static inline int +ln_schedule_prec(mpd_ssize_t klist[MPD_MAX_PREC_LOG2], mpd_ssize_t maxprec, mpd_ssize_t initprec) +{ + mpd_ssize_t k; + int i; + + assert(maxprec >= 2 && initprec >= 2); + if (maxprec <= initprec) return -1; + + i = 0; k = maxprec; + do { + k = (k+2) / 2; + klist[i++] = k; + } while (k > initprec); + + return i-1; +} + +/* Two word initial approximations for ln(10) */ +#ifdef CONFIG_64 +#if MPD_RDIGITS != 19 + #error "mpdecimal.c: MPD_RDIGITS must be 19." +#endif +static mpd_uint_t mpd_ln10data[MPD_MINALLOC_MAX] = {179914546843642076, 2302585092994045684}; +#else +#if MPD_RDIGITS != 9 + #error "mpdecimal.c: MPD_RDIGITS must be 9." +#endif +static mpd_uint_t mpd_ln10data[MPD_MINALLOC_MAX] = {299404568, 230258509}; +#endif +/* mpd_ln10 is cached in order to speed up computations */ +mpd_t mpd_ln10 = {MPD_STATIC|MPD_STATIC_DATA, -(2*MPD_RDIGITS-1), + 2*MPD_RDIGITS, 2, MPD_MINALLOC_MAX, mpd_ln10data}; + +/* + * Initializes or updates mpd_ln10. If mpd_ln10 is cached and has exactly the + * requested precision, the function returns. If the cached precision is greater + * than the requested precision, mpd_ln10 is shifted to the requested precision. + * + * The function can fail with MPD_Malloc_error. + */ +void +mpd_update_ln10(mpd_ssize_t maxprec, uint32_t *status) +{ + mpd_context_t varcontext, maxcontext; + MPD_NEW_STATIC(tmp, 0,0,0,0); + MPD_NEW_CONST(static10, 0,0,2,1,1,10); + mpd_ssize_t klist[MPD_MAX_PREC_LOG2]; + int i; + + if (mpd_ln10.digits > maxprec) { + /* shift to smaller cannot fail */ + mpd_qshiftr_inplace(&mpd_ln10, mpd_ln10.digits-maxprec); + mpd_ln10.exp = -(mpd_ln10.digits-1); + return; + } + else if (mpd_ln10.digits == maxprec) { + return; + } + + mpd_maxcontext(&maxcontext); + mpd_maxcontext(&varcontext); + varcontext.round = MPD_ROUND_TRUNC; + + i = ln_schedule_prec(klist, maxprec+2, mpd_ln10.digits); + for (; i >= 0; i--) { + varcontext.prec = 2*klist[i]+3; + mpd_ln10.flags ^= MPD_NEG; + _mpd_qexp(&tmp, &mpd_ln10, &varcontext, status); + mpd_ln10.flags ^= MPD_NEG; + mpd_qmul(&tmp, &static10, &tmp, &varcontext, status); + mpd_qsub(&tmp, &tmp, &one, &maxcontext, status); + mpd_qadd(&mpd_ln10, &mpd_ln10, &tmp, &maxcontext, status); + } + + mpd_del(&tmp); + varcontext.prec = maxprec; + varcontext.round = MPD_ROUND_HALF_EVEN; + mpd_qfinalize(&mpd_ln10, &varcontext, status); +} + +/* Initial approximations for the ln() iteration */ +static const uint16_t lnapprox[900] = { + /* index 0 - 400: log((i+100)/100) * 1000 */ + 0, 10, 20, 30, 39, 49, 58, 68, 77, 86, 95, 104, 113, 122, 131, 140, 148, 157, + 166, 174, 182, 191, 199, 207, 215, 223, 231, 239, 247, 255, 262, 270, 278, + 285, 293, 300, 308, 315, 322, 329, 336, 344, 351, 358, 365, 372, 378, 385, + 392, 399, 406, 412, 419, 425, 432, 438, 445, 451, 457, 464, 470, 476, 482, + 489, 495, 501, 507, 513, 519, 525, 531, 536, 542, 548, 554, 560, 565, 571, + 577, 582, 588, 593, 599, 604, 610, 615, 621, 626, 631, 637, 642, 647, 652, + 658, 663, 668, 673, 678, 683, 688, 693, 698, 703, 708, 713, 718, 723, 728, + 732, 737, 742, 747, 751, 756, 761, 766, 770, 775, 779, 784, 788, 793, 798, + 802, 806, 811, 815, 820, 824, 829, 833, 837, 842, 846, 850, 854, 859, 863, + 867, 871, 876, 880, 884, 888, 892, 896, 900, 904, 908, 912, 916, 920, 924, + 928, 932, 936, 940, 944, 948, 952, 956, 959, 963, 967, 971, 975, 978, 982, + 986, 990, 993, 997, 1001, 1004, 1008, 1012, 1015, 1019, 1022, 1026, 1030, + 1033, 1037, 1040, 1044, 1047, 1051, 1054, 1058, 1061, 1065, 1068, 1072, 1075, + 1078, 1082, 1085, 1089, 1092, 1095, 1099, 1102, 1105, 1109, 1112, 1115, 1118, + 1122, 1125, 1128, 1131, 1135, 1138, 1141, 1144, 1147, 1151, 1154, 1157, 1160, + 1163, 1166, 1169, 1172, 1176, 1179, 1182, 1185, 1188, 1191, 1194, 1197, 1200, + 1203, 1206, 1209, 1212, 1215, 1218, 1221, 1224, 1227, 1230, 1233, 1235, 1238, + 1241, 1244, 1247, 1250, 1253, 1256, 1258, 1261, 1264, 1267, 1270, 1273, 1275, + 1278, 1281, 1284, 1286, 1289, 1292, 1295, 1297, 1300, 1303, 1306, 1308, 1311, + 1314, 1316, 1319, 1322, 1324, 1327, 1330, 1332, 1335, 1338, 1340, 1343, 1345, + 1348, 1351, 1353, 1356, 1358, 1361, 1364, 1366, 1369, 1371, 1374, 1376, 1379, + 1381, 1384, 1386, 1389, 1391, 1394, 1396, 1399, 1401, 1404, 1406, 1409, 1411, + 1413, 1416, 1418, 1421, 1423, 1426, 1428, 1430, 1433, 1435, 1437, 1440, 1442, + 1445, 1447, 1449, 1452, 1454, 1456, 1459, 1461, 1463, 1466, 1468, 1470, 1472, + 1475, 1477, 1479, 1482, 1484, 1486, 1488, 1491, 1493, 1495, 1497, 1500, 1502, + 1504, 1506, 1509, 1511, 1513, 1515, 1517, 1520, 1522, 1524, 1526, 1528, 1530, + 1533, 1535, 1537, 1539, 1541, 1543, 1545, 1548, 1550, 1552, 1554, 1556, 1558, + 1560, 1562, 1564, 1567, 1569, 1571, 1573, 1575, 1577, 1579, 1581, 1583, 1585, + 1587, 1589, 1591, 1593, 1595, 1597, 1599, 1601, 1603, 1605, 1607, 1609, + /* index 401 - 899: -log((i+100)/1000) * 1000 */ + 691, 689, 687, 685, 683, 681, 679, 677, 675, 673, 671, 669, 668, 666, 664, + 662, 660, 658, 656, 654, 652, 650, 648, 646, 644, 642, 641, 639, 637, 635, + 633, 631, 629, 627, 626, 624, 622, 620, 618, 616, 614, 612, 611, 609, 607, + 605, 603, 602, 600, 598, 596, 594, 592, 591, 589, 587, 585, 583, 582, 580, + 578, 576, 574, 573, 571, 569, 567, 566, 564, 562, 560, 559, 557, 555, 553, + 552, 550, 548, 546, 545, 543, 541, 540, 538, 536, 534, 533, 531, 529, 528, + 526, 524, 523, 521, 519, 518, 516, 514, 512, 511, 509, 508, 506, 504, 502, + 501, 499, 498, 496, 494, 493, 491, 489, 488, 486, 484, 483, 481, 480, 478, + 476, 475, 473, 472, 470, 468, 467, 465, 464, 462, 460, 459, 457, 456, 454, + 453, 451, 449, 448, 446, 445, 443, 442, 440, 438, 437, 435, 434, 432, 431, + 429, 428, 426, 425, 423, 422, 420, 419, 417, 416, 414, 412, 411, 410, 408, + 406, 405, 404, 402, 400, 399, 398, 396, 394, 393, 392, 390, 389, 387, 386, + 384, 383, 381, 380, 378, 377, 375, 374, 372, 371, 370, 368, 367, 365, 364, + 362, 361, 360, 358, 357, 355, 354, 352, 351, 350, 348, 347, 345, 344, 342, + 341, 340, 338, 337, 336, 334, 333, 331, 330, 328, 327, 326, 324, 323, 322, + 320, 319, 318, 316, 315, 313, 312, 311, 309, 308, 306, 305, 304, 302, 301, + 300, 298, 297, 296, 294, 293, 292, 290, 289, 288, 286, 285, 284, 282, 281, + 280, 278, 277, 276, 274, 273, 272, 270, 269, 268, 267, 265, 264, 263, 261, + 260, 259, 258, 256, 255, 254, 252, 251, 250, 248, 247, 246, 245, 243, 242, + 241, 240, 238, 237, 236, 234, 233, 232, 231, 229, 228, 227, 226, 224, 223, + 222, 221, 219, 218, 217, 216, 214, 213, 212, 211, 210, 208, 207, 206, 205, + 203, 202, 201, 200, 198, 197, 196, 195, 194, 192, 191, 190, 189, 188, 186, + 185, 184, 183, 182, 180, 179, 178, 177, 176, 174, 173, 172, 171, 170, 168, + 167, 166, 165, 164, 162, 161, 160, 159, 158, 157, 156, 154, 153, 152, 151, + 150, 148, 147, 146, 145, 144, 143, 142, 140, 139, 138, 137, 136, 135, 134, + 132, 131, 130, 129, 128, 127, 126, 124, 123, 122, 121, 120, 119, 118, 116, + 115, 114, 113, 112, 111, 110, 109, 108, 106, 105, 104, 103, 102, 101, 100, + 99, 98, 97, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 84, 83, 82, 81, 80, 79, + 78, 77, 76, 75, 74, 73, 72, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, + 58, 57, 56, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, + 38, 37, 36, 35, 34, 33, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, + 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 +}; + +/* Internal ln() function that does not check for specials or zero. */ +static void +_mpd_qln(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +{ + mpd_context_t varcontext, maxcontext; + mpd_t *z = (mpd_t *) result; + MPD_NEW_STATIC(v,0,0,0,0); + MPD_NEW_STATIC(vtmp,0,0,0,0); + MPD_NEW_STATIC(tmp,0,0,0,0); + mpd_ssize_t klist[MPD_MAX_PREC_LOG2]; + mpd_ssize_t maxprec, shift, t; + mpd_ssize_t a_digits, a_exp; + mpd_uint_t dummy, x; + int i; + + if (_mpd_cmp(a, &one) == 0) { + _settriple(result, MPD_POS, 0, 0); + return; + } + + /* + * We are calculating ln(a) = ln(v * 10^t) = ln(v) + t*ln(10), + * where 0.5 < v <= 5. + */ + if (!mpd_qcopy(&v, a, status)) { + mpd_seterror(result, MPD_Malloc_error, status); + goto finish; + } + + /* Initial approximation: we have at least one non-zero digit */ + _mpd_get_msdigits(&dummy, &x, &v, 3); + if (x < 10) x *= 10; + if (x < 100) x *= 10; + x -= 100; + + /* a may equal z */ + a_digits = a->digits; + a_exp = a->exp; + + mpd_minalloc(z); + mpd_clear_flags(z); + z->data[0] = lnapprox[x]; + z->len = 1; + z->exp = -3; + mpd_setdigits(z); + + if (x <= 400) { + v.exp = -(a_digits - 1); + t = a_exp + a_digits - 1; + } + else { + v.exp = -a_digits; + t = a_exp + a_digits; + mpd_set_negative(z); + } + + + mpd_maxcontext(&maxcontext); + mpd_maxcontext(&varcontext); + varcontext.round = MPD_ROUND_TRUNC; + + maxprec = (a->digits > ctx->prec) ? a->digits : ctx->prec; + maxprec += 2; + if (x <= 10 || x >= 805) { + /* v is close to 1: We estimate the magnitude of + * the logarithm and adjust the precision upwards. + * x/10 < x/(1+x) < ln(1+x), for 0 < x < 1 + * ln(1+x) < x, for -1 < x < 0 + */ + mpd_qsub(&tmp, &one, &v, &varcontext, &varcontext.status); + maxprec -= (tmp.exp < 0) ? tmp.exp : 0; + maxprec++; + } + + i = ln_schedule_prec(klist, maxprec, 2); + for (; i >= 0; i--) { + varcontext.prec = 2*klist[i]+3; + z->flags ^= MPD_NEG; + _mpd_qexp(&tmp, z, &varcontext, status); + z->flags ^= MPD_NEG; + + if (v.digits > varcontext.prec) { + shift = v.digits - varcontext.prec; + mpd_qshiftr(&vtmp, &v, shift, status); + vtmp.exp += shift; + mpd_qmul(&tmp, &vtmp, &tmp, &varcontext, status); + } + else { + mpd_qmul(&tmp, &v, &tmp, &varcontext, status); + } + + mpd_qsub(&tmp, &tmp, &one, &maxcontext, status); + mpd_qadd(z, z, &tmp, &maxcontext, status); + } + + mpd_update_ln10(maxprec+2, status); + mpd_qmul_ssize(&tmp, &mpd_ln10, t, &maxcontext, status); + mpd_qadd(result, &tmp, z, &maxcontext, status); + + +finish: + mpd_del(&v); + mpd_del(&vtmp); + mpd_del(&tmp); +} + +/* ln(a) */ +void +mpd_qln(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +{ + mpd_context_t workctx; + + if (mpd_isspecial(a)) { + if (mpd_qcheck_nan(result, a, ctx, status)) { + return; + } + if (mpd_isnegative(a)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + mpd_setspecial(result, MPD_POS, MPD_INF); + return; + } + if (mpd_iszerocoeff(a)) { + mpd_setspecial(result, MPD_NEG, MPD_INF); + return; + } + if (mpd_isnegative(a)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + + workctx = *ctx; + workctx.round = MPD_ROUND_HALF_EVEN; + + if (ctx->allcr) { + MPD_NEW_STATIC(t1, 0,0,0,0); + MPD_NEW_STATIC(t2, 0,0,0,0); + MPD_NEW_STATIC(ulp, 0,0,0,0); + MPD_NEW_STATIC(aa, 0,0,0,0); + mpd_ssize_t prec; + + if (result == a) { + mpd_qcopy(&aa, a, status); + a = &aa; + } + + prec = ctx->prec + 3; + while (1) { + workctx.prec = prec; + _mpd_qln(result, a, &workctx, status); + _ssettriple(&ulp, MPD_POS, 1, result->exp + result->digits-workctx.prec-1); + + workctx.prec = ctx->prec; + mpd_qadd(&t1, result, &ulp, &workctx, status); + mpd_qsub(&t2, result, &ulp, &workctx, status); + if (mpd_isspecial(result) || mpd_iszerocoeff(result) || + mpd_qcmp(&t1, &t2, status) == 0) { + mpd_qfinalize(result, &workctx, status); + break; + } + prec += MPD_RDIGITS; + } + mpd_del(&t1); + mpd_del(&t2); + mpd_del(&ulp); + mpd_del(&aa); + } + else { + _mpd_qln(result, a, &workctx, status); + mpd_qfinalize(result, &workctx, status); + } +} + +/* Internal log10() function that does not check for specials, zero, ... */ +static void +_mpd_qlog10(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +{ + mpd_context_t workctx; + + mpd_maxcontext(&workctx); + workctx.prec = ctx->prec + a->digits + 3; + _mpd_qln(result, a, &workctx, status); + mpd_update_ln10(ctx->prec + 3, status); + + workctx = *ctx; + workctx.round = MPD_ROUND_HALF_EVEN; + mpd_qdiv(result, result, &mpd_ln10, &workctx, status); +} + +/* log10(a) */ +void +mpd_qlog10(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +{ + mpd_context_t workctx; + + workctx = *ctx; + workctx.round = MPD_ROUND_HALF_EVEN; + + if (mpd_isspecial(a)) { + if (mpd_qcheck_nan(result, a, ctx, status)) { + return; + } + if (mpd_isnegative(a)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + mpd_setspecial(result, MPD_POS, MPD_INF); + return; + } + if (mpd_iszerocoeff(a)) { + mpd_setspecial(result, MPD_NEG, MPD_INF); + return; + } + if (mpd_isnegative(a)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + if (mpd_coeff_ispow10(a)) { + uint8_t sign = 0; + mpd_ssize_t adjexp = mpd_adjexp(a); + if (adjexp < 0) { + sign = 1; + adjexp = -adjexp; + } + _settriple(result, sign, adjexp, 0); + mpd_qfinalize(result, &workctx, status); + return; + } + + if (ctx->allcr) { + MPD_NEW_STATIC(t1, 0,0,0,0); + MPD_NEW_STATIC(t2, 0,0,0,0); + MPD_NEW_STATIC(ulp, 0,0,0,0); + MPD_NEW_STATIC(aa, 0,0,0,0); + mpd_ssize_t prec; + + if (result == a) { + mpd_qcopy(&aa, a, status); + a = &aa; + } + + prec = ctx->prec + 3; + while (1) { + workctx.prec = prec; + _mpd_qlog10(result, a, &workctx, status); + _ssettriple(&ulp, MPD_POS, 1, result->exp + result->digits-workctx.prec-1); + + workctx.prec = ctx->prec; + mpd_qadd(&t1, result, &ulp, &workctx, status); + mpd_qsub(&t2, result, &ulp, &workctx, status); + if (mpd_isspecial(result) || mpd_iszerocoeff(result) || + mpd_qcmp(&t1, &t2, status) == 0) { + mpd_qfinalize(result, &workctx, status); + break; + } + prec += MPD_RDIGITS; + } + mpd_del(&t1); + mpd_del(&t2); + mpd_del(&ulp); + mpd_del(&aa); + } + else { + _mpd_qlog10(result, a, &workctx, status); + } +} + +/* + * Maximum of the two operands. Attention: If one operand is a quiet NaN and the + * other is numeric, the numeric operand is returned. This may not be what one + * expects. + */ +void +mpd_qmax(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + int c; + + if (mpd_isqnan(a) && !mpd_isnan(b)) { + mpd_qcopy(result, b, status); + } + else if (mpd_isqnan(b) && !mpd_isnan(a)) { + mpd_qcopy(result, a, status); + } + else if (mpd_qcheck_nans(result, a, b, ctx, status)) { + return; + } + else { + c = _mpd_cmp(a, b); + if (c == 0) { + c = _mpd_cmp_numequal(a, b); + } + + if (c < 0) { + mpd_qcopy(result, b, status); + } + else { + mpd_qcopy(result, a, status); + } + } + + mpd_qfinalize(result, ctx, status); +} + +/* + * Maximum magnitude: Same as mpd_max(), but compares the operands with their + * sign ignored. + */ +void +mpd_qmax_mag(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + int c; + + if (mpd_isqnan(a) && !mpd_isnan(b)) { + mpd_qcopy(result, b, status); + } + else if (mpd_isqnan(b) && !mpd_isnan(a)) { + mpd_qcopy(result, a, status); + } + else if (mpd_qcheck_nans(result, a, b, ctx, status)) { + return; + } + else { + c = _mpd_cmp_abs(a, b); + if (c == 0) { + c = _mpd_cmp_numequal(a, b); + } + + if (c < 0) { + mpd_qcopy(result, b, status); + } + else { + mpd_qcopy(result, a, status); + } + } + + mpd_qfinalize(result, ctx, status); +} + +/* + * Minimum of the two operands. Attention: If one operand is a quiet NaN and the + * other is numeric, the numeric operand is returned. This may not be what one + * expects. + */ +void +mpd_qmin(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + int c; + + if (mpd_isqnan(a) && !mpd_isnan(b)) { + mpd_qcopy(result, b, status); + } + else if (mpd_isqnan(b) && !mpd_isnan(a)) { + mpd_qcopy(result, a, status); + } + else if (mpd_qcheck_nans(result, a, b, ctx, status)) { + return; + } + else { + c = _mpd_cmp(a, b); + if (c == 0) { + c = _mpd_cmp_numequal(a, b); + } + + if (c < 0) { + mpd_qcopy(result, a, status); + } + else { + mpd_qcopy(result, b, status); + } + } + + mpd_qfinalize(result, ctx, status); +} + +/* + * Minimum magnitude: Same as mpd_min(), but compares the operands with their + * sign ignored. + */ +void +mpd_qmin_mag(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + int c; + + if (mpd_isqnan(a) && !mpd_isnan(b)) { + mpd_qcopy(result, b, status); + } + else if (mpd_isqnan(b) && !mpd_isnan(a)) { + mpd_qcopy(result, a, status); + } + else if (mpd_qcheck_nans(result, a, b, ctx, status)) { + return; + } + else { + c = _mpd_cmp_abs(a, b); + if (c == 0) { + c = _mpd_cmp_numequal(a, b); + } + + if (c < 0) { + mpd_qcopy(result, a, status); + } + else { + mpd_qcopy(result, b, status); + } + } + + mpd_qfinalize(result, ctx, status); +} + +/* Minimum space needed for the result array in _karatsuba_rec(). */ +static inline size_t +_kmul_resultsize(size_t la, size_t lb) +{ + size_t n, m; + + n = add_size_t(la, lb); + n = add_size_t(n, 1); + + m = (la+1)/2 + 1; + m = mul_size_t(m, 3); + + return (m > n) ? m : n; +} + +/* Work space needed in _karatsuba_rec(). lim >= 4 */ +static inline size_t +_kmul_worksize(size_t n, size_t lim) +{ + size_t m; + + if (n <= lim) { + return 0; + } + + m = (n+1)/2 + 1; + + return add_size_t(mul_size_t(m, 2), _kmul_worksize(m, lim)); +} + + +#define MPD_KARATSUBA_BASECASE 16 /* must be >= 4 */ + +/* + * Add the product of a and b to c. + * c must be _kmul_resultsize(la, lb) in size. + * w is used as a work array and must be _kmul_worksize(a, lim) in size. + * Roman E. Maeder, Storage Allocation for the Karatsuba Integer Multiplication + * Algorithm. In "Design and implementation of symbolic computation systems", + * Springer, 1993, ISBN 354057235X, 9783540572350. + */ +static void +_karatsuba_rec(mpd_uint_t *c, const mpd_uint_t *a, const mpd_uint_t *b, mpd_uint_t *w, + size_t la, size_t lb) +{ + size_t m, lt; + + assert (la >= lb && lb > 0); + + if (la <= MPD_KARATSUBA_BASECASE) { + _mpd_basemul(c, a, b, la, lb); + return; + } + + m = (la+1)/2; // ceil(la/2) + + /* lb <= m < la */ + if (lb <= m) { + + /* lb can now be larger than la-m */ + if (lb > la-m) { + lt = lb + lb + 1; // space needed for result array + mpd_uint_zero(w, lt); // clear result array + _karatsuba_rec(w, b, a+m, w+lt, lb, la-m); // b*ah + } + else { + lt = (la-m) + (la-m) + 1; // space needed for result array + mpd_uint_zero(w, lt); // clear result array + _karatsuba_rec(w, a+m, b, w+lt, la-m, lb); // ah*b + } + _mpd_baseaddto(c+m, w, (la-m)+lb); // add ah*b*B**m + + lt = m + m + 1; // space needed for the result array + mpd_uint_zero(w, lt); // clear result array + _karatsuba_rec(w, a, b, w+lt, m, lb); // al*b + _mpd_baseaddto(c, w, m+lb); // add al*b + + return; + } + + /* la >= lb > m */ + memcpy(w, a, m * sizeof *w); + w[m] = 0; + _mpd_baseaddto(w, a+m, la-m); + + memcpy(w+(m+1), b, m * sizeof *w); + w[m+1+m] = 0; + _mpd_baseaddto(w+(m+1), b+m, lb-m); + + _karatsuba_rec(c+m, w, w+(m+1), w+2*(m+1), m+1, m+1); + + lt = (la-m) + (la-m) + 1; + mpd_uint_zero(w, lt); + + _karatsuba_rec(w, a+m, b+m, w+lt, la-m, lb-m); + + _mpd_baseaddto(c+2*m, w, (la-m) + (lb-m)); + _mpd_basesubfrom(c+m, w, (la-m) + (lb-m)); + + lt = m + m + 1; + mpd_uint_zero(w, lt); + + _karatsuba_rec(w, a, b, w+lt, m, m); + _mpd_baseaddto(c, w, m+m); + _mpd_basesubfrom(c+m, w, m+m); + + return; +} + +/* + * Multiply u and v, using Karatsuba multiplication. Returns a pointer + * to the result or NULL in case of failure (malloc error). + * Conditions: ulen >= vlen, ulen >= 4 + */ +mpd_uint_t * +_mpd_kmul(const mpd_uint_t *u, const mpd_uint_t *v, size_t ulen, size_t vlen, size_t *rsize) +{ + mpd_uint_t *result = NULL, *w = NULL; + size_t m; + + assert(ulen >= 4); + assert(ulen >= vlen); + + *rsize = _kmul_resultsize(ulen, vlen); + if ((result = mpd_calloc(*rsize, sizeof *result)) == NULL) { + return NULL; + } + + m = _kmul_worksize(ulen, MPD_KARATSUBA_BASECASE); + if (m && ((w = mpd_calloc(m, sizeof *w)) == NULL)) { + mpd_free(result); + return NULL; + } + + _karatsuba_rec(result, u, v, w, ulen, vlen); + + + if (w) mpd_free(w); + return result; +} + + +/* Determine the minimum length for the number theoretic transform. */ +static inline size_t +_mpd_get_transform_len(size_t rsize) +{ + size_t log2rsize; + size_t x, step; + + assert(rsize >= 4); + log2rsize = BSR(rsize); + + if (rsize <= 1024) { + x = ONE_UM<>1; + x += step; + return (rsize <= x) ? x : x + step; + } + else if (rsize <= MPD_MAXTRANSFORM_2N+MPD_MAXTRANSFORM_2N/2) { + return MPD_MAXTRANSFORM_2N+MPD_MAXTRANSFORM_2N/2; + } + else if (rsize <= 3*MPD_MAXTRANSFORM_2N) { + return 3*MPD_MAXTRANSFORM_2N; + } + else { + return SIZE_MAX; + } +} + +#ifdef PPRO +#ifndef _MSC_VER +static inline unsigned short +_mpd_get_control87(void) +{ + unsigned short cw; + + __asm__ __volatile__ ("fnstcw %0" : "=m" (cw)); + return cw; +} + +static inline void +_mpd_set_control87(unsigned short cw) +{ + __asm__ __volatile__ ("fldcw %0" : : "m" (cw)); +} +#endif + +unsigned int +mpd_set_fenv(void) +{ + unsigned int cw; +#ifdef _MSC_VER + cw = _control87(0, 0); + _control87((_RC_CHOP|_PC_64), (_MCW_RC|_MCW_PC)); +#else + cw = _mpd_get_control87(); + _mpd_set_control87(cw|0x780); +#endif + return cw; +} + +void +mpd_restore_fenv(unsigned int cw) +{ +#ifdef _MSC_VER + _control87(cw, (_MCW_RC|_MCW_PC)); +#else + _mpd_set_control87((unsigned short)cw); +#endif +} +#endif /* PPRO */ + +/* + * Multiply u and v, using the fast number theoretic transform. Returns + * a pointer to the result or NULL in case of failure (malloc error). + */ +mpd_uint_t * +_mpd_fntmul(const mpd_uint_t *u, const mpd_uint_t *v, size_t ulen, size_t vlen, size_t *rsize) +{ + mpd_uint_t *c1 = NULL, *c2 = NULL, *c3 = NULL, *vtmp = NULL; + size_t n; + +#ifdef PPRO + unsigned int cw; + cw = mpd_set_fenv(); +#endif + + *rsize = add_size_t(ulen, vlen); + if ((n = _mpd_get_transform_len(*rsize)) == SIZE_MAX) { + goto malloc_error; + } + + if ((c1 = mpd_calloc(sizeof *c1, n)) == NULL) { + goto malloc_error; + } + if ((c2 = mpd_calloc(sizeof *c2, n)) == NULL) { + goto malloc_error; + } + if ((c3 = mpd_calloc(sizeof *c3, n)) == NULL) { + goto malloc_error; + } + + memcpy(c1, u, ulen * (sizeof *c1)); + memcpy(c2, u, ulen * (sizeof *c2)); + memcpy(c3, u, ulen * (sizeof *c3)); + + if (u == v) { + + fnt_autoconvolute(c1, n, P1); + fnt_autoconvolute(c2, n, P2); + fnt_autoconvolute(c3, n, P3); + } + else { + if ((vtmp = mpd_calloc(sizeof *vtmp, n)) == NULL) { + goto malloc_error; + } + + memcpy(vtmp, v, vlen * (sizeof *vtmp)); + fnt_convolute(c1, vtmp, n, P1); + + memcpy(vtmp, v, vlen * (sizeof *vtmp)); + mpd_uint_zero(vtmp+vlen, n-vlen); + fnt_convolute(c2, vtmp, n, P2); + + memcpy(vtmp, v, vlen * (sizeof *vtmp)); + mpd_uint_zero(vtmp+vlen, n-vlen); + fnt_convolute(c3, vtmp, n, P3); + + mpd_free(vtmp); + } + + crt3(c1, c2, c3, *rsize); + +out: +#ifdef PPRO + mpd_restore_fenv(cw); +#endif + if (c2) mpd_free(c2); + if (c3) mpd_free(c3); + return c1; + +malloc_error: + if (c1) mpd_free(c1); + c1 = NULL; + goto out; +} + + +/* + * Karatsuba multiplication with FNT/basemul as the base case. + */ +static int +_karatsuba_rec_fnt(mpd_uint_t *c, const mpd_uint_t *a, const mpd_uint_t *b, mpd_uint_t *w, + size_t la, size_t lb) +{ + size_t m, lt; + + assert (la >= lb && lb > 0); + + if (la <= 3*(MPD_MAXTRANSFORM_2N/2)) { + + if (lb <= 192) { + _mpd_basemul(c, b, a, lb, la); + } + else { + mpd_uint_t *result; + size_t dummy; + + if ((result = _mpd_fntmul(a, b, la, lb, &dummy)) == NULL) { + return 0; + } + memcpy(c, result, (la+lb) * (sizeof *result)); + mpd_free(result); + } + return 1; + } + + m = (la+1)/2; // ceil(la/2) + + /* lb <= m < la */ + if (lb <= m) { + + /* lb can now be larger than la-m */ + if (lb > la-m) { + lt = lb + lb + 1; // space needed for result array + mpd_uint_zero(w, lt); // clear result array + if (!_karatsuba_rec_fnt(w, b, a+m, w+lt, lb, la-m)) { // b*ah + return 0; + } + } + else { + lt = (la-m) + (la-m) + 1; // space needed for result array + mpd_uint_zero(w, lt); // clear result array + if (!_karatsuba_rec_fnt(w, a+m, b, w+lt, la-m, lb)) { // ah*b + return 0; + } + } + _mpd_baseaddto(c+m, w, (la-m)+lb); // add ah*b*B**m + + lt = m + m + 1; // space needed for the result array + mpd_uint_zero(w, lt); // clear result array + if (!_karatsuba_rec_fnt(w, a, b, w+lt, m, lb)) { // al*b + return 0; + } + _mpd_baseaddto(c, w, m+lb); // add al*b + + return 1; + } + + /* la >= lb > m */ + memcpy(w, a, m * sizeof *w); + w[m] = 0; + _mpd_baseaddto(w, a+m, la-m); + + memcpy(w+(m+1), b, m * sizeof *w); + w[m+1+m] = 0; + _mpd_baseaddto(w+(m+1), b+m, lb-m); + + if (!_karatsuba_rec_fnt(c+m, w, w+(m+1), w+2*(m+1), m+1, m+1)) { + return 0; + } + + lt = (la-m) + (la-m) + 1; + mpd_uint_zero(w, lt); + + if (!_karatsuba_rec_fnt(w, a+m, b+m, w+lt, la-m, lb-m)) { + return 0; + } + + _mpd_baseaddto(c+2*m, w, (la-m) + (lb-m)); + _mpd_basesubfrom(c+m, w, (la-m) + (lb-m)); + + lt = m + m + 1; + mpd_uint_zero(w, lt); + + if (!_karatsuba_rec_fnt(w, a, b, w+lt, m, m)) { + return 0; + } + _mpd_baseaddto(c, w, m+m); + _mpd_basesubfrom(c+m, w, m+m); + + return 1; +} + +/* + * Multiply u and v, using Karatsuba multiplication with the FNT as the + * base case. Returns a pointer to the result or NULL in case of failure + * (malloc error). Conditions: ulen >= vlen, ulen >= 4. + */ +mpd_uint_t * +_mpd_kmul_fnt(const mpd_uint_t *u, const mpd_uint_t *v, size_t ulen, size_t vlen, size_t *rsize) +{ + mpd_uint_t *result = NULL, *w = NULL; + size_t m; + + assert(ulen >= 4); + assert(ulen >= vlen); + + *rsize = _kmul_resultsize(ulen, vlen); + if ((result = mpd_calloc(*rsize, sizeof *result)) == NULL) { + return NULL; + } + + m = _kmul_worksize(ulen, 3*(MPD_MAXTRANSFORM_2N/2)); + if (m && ((w = mpd_calloc(m, sizeof *w)) == NULL)) { + mpd_free(result); + return NULL; + } + + if (!_karatsuba_rec_fnt(result, u, v, w, ulen, vlen)) { + mpd_free(result); + result = NULL; + } + + + if (w) mpd_free(w); + return result; +} + + +/* Deal with the special cases of multiplying infinities. */ +static void +_mpd_qmul_inf(mpd_t *result, const mpd_t *a, const mpd_t *b, uint32_t *status) +{ + if (mpd_isinfinite(a)) { + if (mpd_iszero(b)) { + mpd_seterror(result, MPD_Invalid_operation, status); + } + else { + mpd_setspecial(result, mpd_sign(a)^mpd_sign(b), MPD_INF); + } + return; + } + assert(mpd_isinfinite(b)); + if (mpd_iszero(a)) { + mpd_seterror(result, MPD_Invalid_operation, status); + } + else { + mpd_setspecial(result, mpd_sign(a)^mpd_sign(b), MPD_INF); + } +} + +/* + * Internal function: Multiply a and b. _mpd_qmul deals with specials but + * does NOT finalize the result. This is for use in mpd_fma(). + */ +static inline void +_mpd_qmul(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + mpd_t *big = (mpd_t *)a, *small = (mpd_t *)b; + mpd_uint_t *rdata = NULL; + mpd_uint_t rbuf[MPD_MINALLOC_MAX]; + size_t rsize, i; + + + if (mpd_isspecial(a) || mpd_isspecial(b)) { + if (mpd_qcheck_nans(result, a, b, ctx, status)) { + return; + } + _mpd_qmul_inf(result, a, b, status); + return; + } + + if (small->len > big->len) { + _mpd_ptrswap(&big, &small); + } + + rsize = big->len + small->len; + + if (big->len == 1) { + _mpd_singlemul(result->data, big->data[0], small->data[0]); + goto finish; + } + if (rsize <= (size_t)MPD_MINALLOC_MAX) { + if (big->len == 2) { + _mpd_mul_2_le2(rbuf, big->data, small->data, small->len); + } + else { + mpd_uint_zero(rbuf, rsize); + if (small->len == 1) { + _mpd_shortmul(rbuf, big->data, big->len, small->data[0]); + } + else { + _mpd_basemul(rbuf, small->data, big->data, small->len, big->len); + } + } + if (!mpd_qresize(result, rsize, status)) { + return; + } + for(i = 0; i < rsize; i++) { + result->data[i] = rbuf[i]; + } + goto finish; + } + + + if (big->len == 2) { + if ((rdata = mpd_calloc(rsize, sizeof *rdata)) == NULL) { + mpd_seterror(result, MPD_Malloc_error, status); + return; + } + _mpd_mul_2_le2(rdata, big->data, small->data, small->len); + } + else if (small->len == 1) { + if ((rdata = mpd_calloc(rsize, sizeof *rdata)) == NULL) { + mpd_seterror(result, MPD_Malloc_error, status); + return; + } + _mpd_shortmul(rdata, big->data, big->len, small->data[0]); + } + else if (small->len <= 16 && rsize <= 64) { + if ((rdata = mpd_calloc(rsize, sizeof *rdata)) == NULL) { + mpd_seterror(result, MPD_Malloc_error, status); + return; + } + _mpd_basemul(rdata, small->data, big->data, small->len, big->len); + } + else if (small->len <= 256 && rsize <= 1024) { + rdata = _mpd_kmul(big->data, small->data, big->len, small->len, &rsize); + if (rdata == NULL) { + mpd_seterror(result, MPD_Malloc_error, status); + return; + } + } + else if (rsize <= 3*MPD_MAXTRANSFORM_2N) { + rdata = _mpd_fntmul(big->data, small->data, big->len, small->len, &rsize); + if (rdata == NULL) { + mpd_seterror(result, MPD_Malloc_error, status); + return; + } + } + else { + rdata = _mpd_kmul_fnt(big->data, small->data, big->len, small->len, &rsize); + if (rdata == NULL) { + mpd_seterror(result, MPD_Malloc_error, status); + return; + } + } + + if (mpd_isdynamic_data(result)) { + mpd_free(result->data); + } + result->data = rdata; + result->alloc = rsize; + mpd_set_dynamic_data(result); + + +finish: + mpd_set_flags(result, mpd_sign(a)^mpd_sign(b)); + result->exp = big->exp + small->exp; + result->len = _mpd_real_size(result->data, rsize); + /* resize to smaller cannot fail */ + mpd_qresize(result, result->len, status); + mpd_setdigits(result); +} + +/* Multiply a and b. */ +void +mpd_qmul(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + _mpd_qmul(result, a, b, ctx, status); + mpd_qfinalize(result, ctx, status); +} + +/* Multiply decimal and mpd_ssize_t. */ +void +mpd_qmul_ssize(mpd_t *result, const mpd_t *a, mpd_ssize_t b, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_t bb; + mpd_uint_t bdata[2]; + + bb.data = bdata; + bb.flags = MPD_STATIC|MPD_CONST_DATA; + + mpd_qsset_ssize(&bb, b, ctx, status); + mpd_qmul(result, a, &bb, ctx, status); +} + +/* Multiply decimal and mpd_uint_t. */ +void +mpd_qmul_uint(mpd_t *result, const mpd_t *a, mpd_uint_t b, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_t bb; + mpd_uint_t bdata[2]; + + bb.data = bdata; + bb.flags = MPD_STATIC|MPD_CONST_DATA; + + mpd_qsset_uint(&bb, b, ctx, status); + mpd_qmul(result, a, &bb, ctx, status); +} + +void +mpd_qmul_i32(mpd_t *result, const mpd_t *a, int32_t b, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_qmul_ssize(result, a, b, ctx, status); +} + +void +mpd_qmul_u32(mpd_t *result, const mpd_t *a, uint32_t b, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_qmul_uint(result, a, b, ctx, status); +} + +#ifdef CONFIG_64 +void +mpd_qmul_i64(mpd_t *result, const mpd_t *a, int64_t b, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_qmul_ssize(result, a, b, ctx, status); +} + +void +mpd_qmul_u64(mpd_t *result, const mpd_t *a, uint64_t b, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_qmul_uint(result, a, b, ctx, status); +} +#endif + +/* Like the minus operator. */ +void +mpd_qminus(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +{ + if (mpd_isspecial(a)) { + if (mpd_qcheck_nan(result, a, ctx, status)) { + return; + } + } + + if (mpd_iszero(a)) { + mpd_qcopy_abs(result, a, status); + } + else { + mpd_qcopy_negate(result, a, status); + } + + mpd_qfinalize(result, ctx, status); +} + +/* Like the plus operator. */ +void +mpd_qplus(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +{ + if (mpd_isspecial(a)) { + if (mpd_qcheck_nan(result, a, ctx, status)) { + return; + } + } + + if (mpd_iszero(a)) { + mpd_qcopy_abs(result, a, status); + } + else { + mpd_qcopy(result, a, status); + } + + mpd_qfinalize(result, ctx, status); +} + +/* The largest representable number that is smaller than the operand. */ +void +mpd_qnext_minus(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_context_t workctx; /* function context */ + MPD_NEW_CONST(tiny,MPD_POS,mpd_etiny(ctx)-1,1,1,1,1); + + if (mpd_isspecial(a)) { + if (mpd_qcheck_nan(result, a, ctx, status)) { + return; + } + if (mpd_isinfinite(a)) { + if (mpd_isnegative(a)) { + mpd_qcopy(result, a, status); + return; + } + else { + mpd_qmaxcoeff(result, ctx, status); + if (mpd_isnan(result)) { + return; + } + mpd_clear_flags(result); + result->exp = ctx->emax - ctx->prec + 1; + return; + } + } + /* should not be reached */ + abort(); + } + + mpd_workcontext(&workctx, ctx); + workctx.round = MPD_ROUND_FLOOR; + + if (!mpd_qcopy(result, a, status)) { + return; + } + + mpd_qfinalize(result, &workctx, &workctx.status); + if (workctx.status&(MPD_Inexact|MPD_Errors)) { + return; + } + + workctx.status = 0; + mpd_qsub(result, a, &tiny, &workctx, &workctx.status); + *status |= (workctx.status&MPD_Errors); +} + +/* The smallest representable number that is larger than the operand. */ +void +mpd_qnext_plus(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_context_t workctx; + MPD_NEW_CONST(tiny,MPD_POS,mpd_etiny(ctx)-1,1,1,1,1); + + if (mpd_isspecial(a)) { + if (mpd_qcheck_nan(result, a, ctx, status)) { + return; + } + if (mpd_isinfinite(a)) { + if (mpd_ispositive(a)) { + mpd_qcopy(result, a, status); + } + else { + mpd_qmaxcoeff(result, ctx, status); + if (mpd_isnan(result)) { + return; + } + mpd_set_flags(result, MPD_NEG); + result->exp = mpd_etop(ctx); + } + return; + } + } + + mpd_workcontext(&workctx, ctx); + workctx.round = MPD_ROUND_CEILING; + + if (!mpd_qcopy(result, a, &workctx.status)) { + return; + } + + mpd_qfinalize(result, &workctx, &workctx.status); + if (workctx.status & (MPD_Inexact|MPD_Errors)) { + return; + } + + workctx.status = 0; + mpd_qadd(result, a, &tiny, &workctx, &workctx.status); + *status |= (workctx.status&MPD_Errors); +} + +/* + * The number closest to the first operand that is in the direction towards + * the second operand. + */ +void +mpd_qnext_toward(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + int c; + + if (mpd_isnan(a) || mpd_isnan(b)) { + if (mpd_qcheck_nans(result, a, b, ctx, status)) + return; + } + + c = _mpd_cmp(a, b); + if (c == 0) { + mpd_qcopy_sign(result, a, b, status); + return; + } + + if (c < 0) { + mpd_qnext_plus(result, a, ctx, status); + } + else { + mpd_qnext_minus(result, a, ctx, status); + } + + if (mpd_isinfinite(result)) { + *status |= (MPD_Overflow|MPD_Rounded|MPD_Inexact); + } + else if (mpd_adjexp(result) < ctx->emin) { + *status |= (MPD_Underflow|MPD_Subnormal|MPD_Rounded|MPD_Inexact); + if (mpd_iszero(result)) { + *status |= MPD_Clamped; + } + } +} + +/* + * Internal function: Integer power with mpd_uint_t exponent, base is modified! + * Function can fail with MPD_Malloc_error. + */ +static inline void +_mpd_qpow_uint(mpd_t *result, mpd_t *base, mpd_uint_t exp, uint8_t resultsign, + const mpd_context_t *ctx, uint32_t *status) +{ + uint32_t workstatus = 0; + mpd_uint_t n; + + if (exp == 0) { + _settriple(result, resultsign, 1, 0); + return; + } + + if (!mpd_qcopy(result, base, status)) { + return; + } + + n = mpd_bits[BSR(exp)]; + while (n >>= 1) { + mpd_qmul(result, result, result, ctx, &workstatus); + if (exp & n) { + mpd_qmul(result, result, base, ctx, &workstatus); + } + if (workstatus & (MPD_Overflow|MPD_Clamped)) { + break; + } + } + + *status |= workstatus; + mpd_set_sign(result, resultsign); +} + +/* + * Internal function: Integer power with mpd_t exponent, tbase and texp + * are modified!! Function can fail with MPD_Malloc_error. + */ +static inline void +_mpd_qpow_mpd(mpd_t *result, mpd_t *tbase, mpd_t *texp, uint8_t resultsign, + const mpd_context_t *ctx, uint32_t *status) +{ + uint32_t workstatus = 0; + mpd_context_t maxctx; + MPD_NEW_CONST(two,0,0,1,1,1,2); + + + mpd_maxcontext(&maxctx); + + if (!mpd_qcopy(result, &one, status)) { + return; + } + + while (!mpd_iszero(texp)) { + if (mpd_isodd(texp)) { + mpd_qmul(result, result, tbase, ctx, &workstatus); + *status |= workstatus; + if (workstatus & (MPD_Overflow|MPD_Clamped)) { + break; + } + } + mpd_qmul(tbase, tbase, tbase, ctx, &workstatus); + mpd_qdivint(texp, texp, &two, &maxctx, &workstatus); + if (mpd_isnan(texp)) { + mpd_seterror(result, MPD_Division_undefined, status); + return; + } + } + mpd_set_sign(result, resultsign); +} + +/* + * The power function for integer exponents. + */ +static void +_mpd_qpow_int(mpd_t *result, const mpd_t *base, const mpd_t *exp, uint8_t resultsign, + const mpd_context_t *ctx, uint32_t *status) +{ + mpd_context_t workctx; + MPD_NEW_STATIC(tbase,0,0,0,0); + MPD_NEW_STATIC(texp,0,0,0,0); + mpd_ssize_t n; + + + mpd_workcontext(&workctx, ctx); + workctx.prec += (exp->digits + exp->exp + 2); + workctx.round = MPD_ROUND_HALF_EVEN; + if (mpd_isnegative(exp)) { + mpd_qdiv(&tbase, &one, base, &workctx, status); + if (*status&MPD_Errors) { + mpd_setspecial(result, MPD_POS, MPD_NAN); + goto finish; + } + } + else { + if (!mpd_qcopy(&tbase, base, status)) { + mpd_setspecial(result, MPD_POS, MPD_NAN); + goto finish; + } + } + + n = mpd_qget_uint(exp, &workctx.status); + if (workctx.status&MPD_Invalid_operation) { + if (!mpd_qcopy(&texp, exp, status)) { + mpd_setspecial(result, MPD_POS, MPD_NAN); + goto finish; + } + _mpd_qpow_mpd(result, &tbase, &texp, resultsign, &workctx, status); + } + else { + _mpd_qpow_uint(result, &tbase, n, resultsign, &workctx, status); + } + + if (mpd_isinfinite(result)) { + /* for ROUND_DOWN, ROUND_FLOOR, etc. */ + _settriple(result, resultsign, 1, MPD_EXP_INF); + } + +finish: + mpd_del(&tbase); + mpd_del(&texp); + mpd_qfinalize(result, ctx, status); +} + +/* + * This is an internal function that does not check for NaNs. + */ +static int +_qcheck_pow_one_inf(mpd_t *result, const mpd_t *base, uint8_t resultsign, + const mpd_context_t *ctx, uint32_t *status) +{ + mpd_ssize_t shift; + int cmp; + + if ((cmp = _mpd_cmp(base, &one)) == 0) { + shift = ctx->prec-1; + mpd_qshiftl(result, &one, shift, status); + result->exp = -shift; + mpd_set_flags(result, resultsign); + *status |= (MPD_Inexact|MPD_Rounded); + } + + return cmp; +} + +/* + * If base equals one, calculate the correct power of one result. + * Otherwise, result is undefined. Return the value of the comparison + * against 1. + * + * This is an internal function that does not check for specials. + */ +static int +_qcheck_pow_one(mpd_t *result, const mpd_t *base, const mpd_t *exp, uint8_t resultsign, + const mpd_context_t *ctx, uint32_t *status) +{ + uint32_t workstatus = 0; + mpd_ssize_t shift; + int cmp; + + if ((cmp = _mpd_cmp_abs(base, &one)) == 0) { + if (_mpd_isint(exp)) { + if (mpd_isnegative(exp)) { + _settriple(result, resultsign, 1, 0); + return 0; + } + /* 1.000**3 = 1.000000000 */ + mpd_qmul_ssize(result, exp, -base->exp, ctx, &workstatus); + /* digits-1 after exponentiation */ + shift = mpd_qget_ssize(result, &workstatus); + /* MPD_SSIZE_MAX on failure */ + if (shift > ctx->prec-1) { + shift = ctx->prec-1; + *status |= MPD_Rounded; + } + } + else if (mpd_ispositive(base)) { + shift = ctx->prec-1; + *status |= (MPD_Inexact|MPD_Rounded); + } + else { + return -2; + } + mpd_qshiftl(result, &one, shift, status); + result->exp = -shift; + mpd_set_flags(result, resultsign); + } + + return cmp; +} + +static mpd_ssize_t +_qlog10_exp_bound(const mpd_t *x, uint32_t *status) +{ + mpd_context_t maxctx; + MPD_NEW_STATIC(scratch,0,0,0,0); + MPD_NEW_CONST(tmp,0,0,1,1,1,1); + mpd_ssize_t t, numdigits, dendigits; + + /* + * This function is designed to weed out cases where x**y will clearly + * over/underflow. The chain of implications is written as a stack, i.e. + * each line implies the line above it. + * + * (1) x**y > 10**(emax+1) /\ x**y < 10**(etiny-1) + * + * (2) log10(x) * y > emax+1 /\ log10(x) * y < etiny-1 + * + * The lhs of the conjunction can only be true if the factors have the + * same sign, the rhs only if the factors differ. These two hypotheses + * are implied from now on. + * + * (3) |log10(x)| * |y| > emax+1 /\ |log10(x)| * |y| > |etiny-1| + * + * (4) log10(|log10(x)|) + log10(|y|) > log10(emax+1) + * /\ log10(|log10(x)|) + log10(|y|) > log10(|etiny-1|) + * + * Now, (4) clearly must be true if it is true for the following estimates + * for the terms: + * + * est(log10(emax+1)| >= log10(emax+1) + * est(log10(|etiny-1|)| >= log10(|etiny-1|) + * + * est(log10(|y|)) <= log10(|y|) + * + * 0 < est(log10(x)) <= log10(x), if x > 1 + * log10(x) <= est(log10(x)) < 0, if x < 1 + * + * + * Estimate for log10(x): + * + * log10(x) = log10(v * 10**t) = log10(v) + t, where 1 <= v < 10. + * Thus, t is adjexp(x). + * + * If t > 0, 0 < t <= log10(x), so we are done. + * + * If t < -1, log10(x) <= t+1 < 0, so we are done. + * + * If t == -1 or t == 0, then 0.1 <= base < 10. We assume x != 1 and + * use: + * + * 1-1/x < ln(x) < x-1 (Abramowitz&Stegun, 4.1.33) + * + * Then, if 1 < x < 10: + * + * 0 < (1-1/x) / 2.31 < log10(x) + * 0 < (1-1/x) / 10 < log10(x) + * 0 < (x-1) / (10*x) < log10(x) + * Multiply by (10**-x->exp), c is the coefficient: + * 0 < (c - 10**(-x->exp)) / (10*c) < log10(x) + * + * Then, if 0.1 <= x < 1: + * + * log10(x) <= (1-x) / 2.31 < 0 + * log10(x) <= (1-x) / 10 < 0 + * Multiply by (10**-x->exp), c is the coefficient: + * log10(x) < (10**(-x->exp) - c) / 10**(-x->exp+1) < 0 + * + */ + t = mpd_adjexp(x); + if (t > 0) { + return mpd_exp_digits(t) - 1; + } + else if (t < -1) { + return mpd_exp_digits(t+1) - 1; + } + else { + mpd_maxcontext(&maxctx); + tmp.exp = -x->exp; + if (!mpd_qcopy_abs(&scratch, x, status)) { + *status |= MPD_Malloc_error; + return MPD_SSIZE_MAX; + } + scratch.exp = 0; + if (t == 0) { + mpd_qsub(&scratch, &scratch, &tmp, &maxctx, status); + numdigits = scratch.digits; + dendigits = x->digits + 1; + } + else { + mpd_qsub(&scratch, &tmp, &scratch, &maxctx, status); + numdigits = scratch.digits; + if (-x->exp+1 < 0) { + numdigits += (-x->exp+1); + dendigits = 1; + } + else { + dendigits = -x->exp+1; + } + } + mpd_del(&scratch); + return numdigits-dendigits-(numdigits= mpd_exp_digits(ctx->emax)) { + _settriple(result, resultsign, 1, MPD_EXP_INF); + mpd_qfinalize(result, ctx, status); + return 1; + } + } + else { + if (bound >= mpd_exp_digits(mpd_etiny(ctx))) { + _settriple(result, resultsign, 1, mpd_etiny(ctx)-1); + mpd_qfinalize(result, ctx, status); + return 1; + } + } + + return 0; +} + +/* + * TODO: Implement algorithm for computing exact powers from decimal.py. + * In order to prevent infinite loops, this has to be called before + * using Ziv's strategy for correct rounding. + */ +/* +static int +_mpd_qpow_exact(mpd_t *result, const mpd_t *base, const mpd_t *exp, + const mpd_context_t *ctx, uint32_t *status) +{ + return 0; +} +*/ + +/* The power function for real exponents */ +static void +_mpd_qpow_real(mpd_t *result, const mpd_t *base, const mpd_t *exp, + const mpd_context_t *ctx, uint32_t *status) +{ + mpd_context_t workctx; + MPD_NEW_STATIC(texp,0,0,0,0); + + if (!mpd_qcopy(&texp, exp, status)) { + mpd_seterror(result, MPD_Malloc_error, status); + return; + } + + mpd_maxcontext(&workctx); + workctx.prec = (base->digits > ctx->prec) ? base->digits : ctx->prec; + workctx.prec += (4 + MPD_EXPDIGITS); + workctx.round = MPD_ROUND_HALF_EVEN; + + mpd_qln(result, base, &workctx, &workctx.status); + mpd_qmul(result, result, &texp, &workctx, &workctx.status); + mpd_qexp(result, result, &workctx, status); + + mpd_del(&texp); + *status |= (workctx.status&MPD_Errors); + *status |= (MPD_Inexact|MPD_Rounded); +} + +/* The power function: base**exp */ +void +mpd_qpow(mpd_t *result, const mpd_t *base, const mpd_t *exp, + const mpd_context_t *ctx, uint32_t *status) +{ + uint8_t resultsign = 0; + int intexp = 0; + int cmp; + + if (mpd_isspecial(base) || mpd_isspecial(exp)) { + if (mpd_qcheck_nans(result, base, exp, ctx, status)) { + return; + } + } + if (mpd_isinteger(exp)) { + intexp = 1; + resultsign = mpd_isnegative(base) && mpd_isodd(exp); + } + + if (mpd_iszero(base)) { + if (mpd_iszero(exp)) { + mpd_seterror(result, MPD_Invalid_operation, status); + } + else if (mpd_isnegative(exp)) { + mpd_setspecial(result, resultsign, MPD_INF); + } + else { + _settriple(result, resultsign, 0, 0); + } + return; + } + if (mpd_isnegative(base)) { + if (!intexp || mpd_isinfinite(exp)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + } + if (mpd_isinfinite(exp)) { + /* power of one */ + if ((cmp = _qcheck_pow_one_inf(result, base, resultsign, ctx, status)) == 0) { + return; + } + else { + cmp *= mpd_arith_sign(exp); + if (cmp < 0) { + _settriple(result, resultsign, 0, 0); + } + else { + mpd_setspecial(result, resultsign, MPD_INF); + } + } + return; + } + if (mpd_isinfinite(base)) { + if (mpd_iszero(exp)) { + _settriple(result, resultsign, 1, 0); + } + else if (mpd_isnegative(exp)) { + _settriple(result, resultsign, 0, 0); + } + else { + mpd_setspecial(result, resultsign, MPD_INF); + } + return; + } + if (mpd_iszero(exp)) { + _settriple(result, resultsign, 1, 0); + return; + } + if (_qcheck_pow_one(result, base, exp, resultsign, ctx, status) == 0) { + return; + } + if (_qcheck_pow_bounds(result, base, exp, resultsign, ctx, status)) { + return; + } + + if (intexp) { + _mpd_qpow_int(result, base, exp, resultsign, ctx, status); + } + else { + _mpd_qpow_real(result, base, exp, ctx, status); + if (_mpd_cmp(result, &one) == 0) { + mpd_ssize_t shift = ctx->prec-1; + mpd_qshiftl(result, &one, shift, status); + result->exp = -shift; + } + if (mpd_isinfinite(result)) { + /* for ROUND_DOWN, ROUND_FLOOR, etc. */ + _settriple(result, MPD_POS, 1, MPD_EXP_INF); + } + mpd_qfinalize(result, ctx, status); + } +} + +/* + * Internal function: Integer powmod with mpd_uint_t exponent, base is modified! + * Function can fail with MPD_Malloc_error. + */ +static inline void +_mpd_qpowmod_uint(mpd_t *result, mpd_t *base, mpd_uint_t exp, mpd_t *mod, uint32_t *status) +{ + mpd_context_t maxcontext; + + mpd_maxcontext(&maxcontext); + + if (!mpd_qcopy(result, &one, status)) { + return; + } + + while (exp > 0) { + if (exp & 1) { + mpd_qmul(result, result, base, &maxcontext, status); + mpd_qrem(result, result, mod, &maxcontext, status); + } + mpd_qmul(base, base, base, &maxcontext, status); + mpd_qrem(base, base, mod, &maxcontext, status); + exp >>= 1; + } +} + +/* The powmod function: (base**exp) % mod */ +void +mpd_qpowmod(mpd_t *result, const mpd_t *base, const mpd_t *exp, const mpd_t *mod, + const mpd_context_t *ctx, uint32_t *status) +{ + mpd_context_t maxcontext; + MPD_NEW_STATIC(tbase,0,0,0,0); + MPD_NEW_STATIC(texp,0,0,0,0); + MPD_NEW_STATIC(tmod,0,0,0,0); + MPD_NEW_STATIC(tmp,0,0,0,0); + MPD_NEW_CONST(two,0,0,1,1,1,2); + mpd_ssize_t tbase_exp, texp_exp; + mpd_ssize_t i; + mpd_t t; + mpd_uint_t r; + uint8_t sign; + + + if (mpd_isspecial(base) || mpd_isspecial(exp) || mpd_isspecial(mod)) { + if (mpd_qcheck_3nans(result, base, exp, mod, ctx, status)) { + return; + } + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + + + if (!_mpd_isint(base) || !_mpd_isint(exp) || !_mpd_isint(mod)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + if (mpd_iszerocoeff(mod)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + sign = (mpd_isnegative(base)) && (mpd_isodd(exp)); + if (mpd_iszerocoeff(exp)) { + if (mpd_iszerocoeff(base)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + r = (_mpd_cmp_abs(mod, &one)==0) ? 0 : 1; + _settriple(result, sign, r, 0); + return; + } + if (mpd_isnegative(exp)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + if (mpd_iszerocoeff(base)) { + _settriple(result, sign, 0, 0); + return; + } + if (mod->digits+mod->exp > ctx->prec) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + + if (!mpd_qcopy(&tmod, mod, status)) { + mpd_seterror(result, MPD_Malloc_error, status); + goto finish; + } + mpd_set_positive(&tmod); + + mpd_maxcontext(&maxcontext); + + mpd_qround_to_int(&tbase, base, &maxcontext, status); + mpd_qround_to_int(&texp, exp, &maxcontext, status); + mpd_qround_to_int(&tmod, &tmod, &maxcontext, status); + + tbase_exp = tbase.exp; + tbase.exp = 0; + texp_exp = texp.exp; + texp.exp = 0; + + /* base = (base.int % modulo * pow(10, base.exp, modulo)) % modulo */ + mpd_qrem(&tbase, &tbase, &tmod, &maxcontext, status); + _settriple(result, MPD_POS, 1, tbase_exp); + mpd_qrem(result, result, &tmod, &maxcontext, status); + mpd_qmul(&tbase, &tbase, result, &maxcontext, status); + mpd_qrem(&tbase, &tbase, &tmod, &maxcontext, status); + + for (i = 0; i < texp_exp; i++) { + _mpd_qpowmod_uint(&tmp, &tbase, 10, &tmod, status); + t = tmp; + tmp = tbase; + tbase = t; + } + + /* possible resize will be to smaller */ + mpd_qcopy(result, &one, status); + while (!mpd_iszero(&texp)) { + if (mpd_isodd(&texp)) { + mpd_qmul(result, result, &tbase, &maxcontext, status); + mpd_qrem(result, result, &tmod, &maxcontext, status); + } + mpd_qmul(&tbase, &tbase, &tbase, &maxcontext, status); + mpd_qrem(&tbase, &tbase, &tmod, &maxcontext, status); + mpd_qdivint(&texp, &texp, &two, &maxcontext, status); + if (mpd_isnan(&texp)) { + mpd_setspecial(result, MPD_POS, MPD_NAN); + goto finish; + } + } + + +finish: + mpd_del(&tbase); + mpd_del(&texp); + mpd_del(&tmod); + mpd_del(&tmp); + mpd_set_flags(result, sign); + mpd_qfinalize(result, ctx, status); +} + +void +mpd_qquantize(mpd_t *result, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + uint32_t workstatus = 0; + mpd_ssize_t b_exp = b->exp; + mpd_ssize_t expdiff, shift; + mpd_uint_t rnd; + + if (mpd_isspecial(a) || mpd_isspecial(b)) { + if (mpd_qcheck_nans(result, a, b, ctx, status)) { + return; + } + if (mpd_isinfinite(a) && mpd_isinfinite(b)) { + mpd_qcopy(result, a, status); + return; + } + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + + if (b->exp > ctx->emax || b->exp < mpd_etiny(ctx)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + + if (mpd_iszero(a)) { + _settriple(result, mpd_sign(a), 0, b->exp); + mpd_qfinalize(result, ctx, status); + return; + } + + + expdiff = a->exp - b->exp; + if (a->digits + expdiff > ctx->prec) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + + if (expdiff >= 0) { + shift = expdiff; + if (!mpd_qshiftl(result, a, shift, status)) { + return; + } + result->exp = b_exp; + } + else { + /* At this point expdiff < 0 and a->digits+expdiff <= prec, + * so the shift before an increment will fit in prec. */ + shift = -expdiff; + rnd = mpd_qshiftr(result, a, shift, status); + result->exp = b_exp; + if (!_mpd_apply_round_fit(result, rnd, ctx, status)) { + return; + } + workstatus |= MPD_Rounded; + if (rnd) { + workstatus |= MPD_Inexact; + } + } + + if (mpd_adjexp(result) > ctx->emax || mpd_adjexp(result) < mpd_etiny(ctx)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + + if (mpd_issubnormal(result, ctx)) { + *status |= MPD_Subnormal; + } + *status |= workstatus; +} + +void +mpd_qreduce(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +{ + mpd_ssize_t shift, maxexp, maxshift; + uint8_t sign_a = mpd_sign(a); + + if (mpd_isspecial(a)) { + if (mpd_qcheck_nan(result, a, ctx, status)) { + return; + } + mpd_qcopy(result, a, status); + return; + } + + if (!mpd_qcopy(result, a, status)) { + return; + } + mpd_qfinalize(result, ctx, status); + if (mpd_isspecial(result)) { + return; + } + if (mpd_iszero(result)) { + _settriple(result, sign_a, 0, 0); + return; + } + + shift = mpd_trail_zeros(result); + maxexp = (ctx->clamp) ? mpd_etop(ctx) : ctx->emax; + /* After the finalizing above result->exp <= maxexp. */ + maxshift = maxexp - result->exp; + shift = (shift > maxshift) ? maxshift : shift; + + mpd_qshiftr_inplace(result, shift); + result->exp += shift; +} + +void +mpd_qrem(mpd_t *r, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, + uint32_t *status) +{ + MPD_NEW_STATIC(q,0,0,0,0); + + if (mpd_isspecial(a) || mpd_isspecial(b)) { + if (mpd_qcheck_nans(r, a, b, ctx, status)) { + return; + } + if (mpd_isinfinite(a)) { + mpd_seterror(r, MPD_Invalid_operation, status); + return; + } + if (mpd_isinfinite(b)) { + mpd_qcopy(r, a, status); + mpd_qfinalize(r, ctx, status); + return; + } + /* debug */ + abort(); + } + if (mpd_iszerocoeff(b)) { + if (mpd_iszerocoeff(a)) { + mpd_seterror(r, MPD_Division_undefined, status); + } + else { + mpd_seterror(r, MPD_Invalid_operation, status); + } + return; + } + + _mpd_qdivmod(&q, r, a, b, ctx, status); + mpd_del(&q); + mpd_qfinalize(r, ctx, status); +} + +void +mpd_qrem_near(mpd_t *r, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + mpd_context_t workctx; + MPD_NEW_STATIC(btmp,0,0,0,0); + MPD_NEW_STATIC(q,0,0,0,0); + mpd_ssize_t expdiff, floordigits; + int cmp, isodd, allnine; + + if (mpd_isspecial(a) || mpd_isspecial(b)) { + if (mpd_qcheck_nans(r, a, b, ctx, status)) { + return; + } + if (mpd_isinfinite(a)) { + mpd_seterror(r, MPD_Invalid_operation, status); + return; + } + if (mpd_isinfinite(b)) { + mpd_qcopy(r, a, status); + mpd_qfinalize(r, ctx, status); + return; + } + /* debug */ + abort(); + } + if (mpd_iszerocoeff(b)) { + if (mpd_iszerocoeff(a)) { + mpd_seterror(r, MPD_Division_undefined, status); + } + else { + mpd_seterror(r, MPD_Invalid_operation, status); + } + return; + } + + if (r == b) { + if (!mpd_qcopy(&btmp, b, status)) { + mpd_seterror(r, MPD_Malloc_error, status); + return; + } + b = &btmp; + } + + workctx = *ctx; + workctx.prec = a->digits; + workctx.prec = (workctx.prec > ctx->prec) ? workctx.prec : ctx->prec; + + _mpd_qdivmod(&q, r, a, b, &workctx, status); + if (mpd_isnan(&q) || mpd_isnan(r) || q.digits > ctx->prec) { + mpd_seterror(r, MPD_Division_impossible, status); + goto finish; + } + if (mpd_iszerocoeff(r)) { + goto finish; + } + + /* Deal with cases like rmnx078: + * remaindernear 999999999.5 1 -> NaN Division_impossible */ + expdiff = mpd_adjexp(b) - mpd_adjexp(r); + if (-1 <= expdiff && expdiff <= 1) { + + mpd_qfloor(&q, &q, &workctx, &workctx.status); + allnine = mpd_coeff_isallnine(&q); + floordigits = q.digits; + isodd = mpd_isodd(&q); + + mpd_maxcontext(&workctx); + if (mpd_sign(a) == mpd_sign(b)) { + _mpd_qsub(&q, r, b, &workctx, &workctx.status); + } + else { + _mpd_qadd(&q, r, b, &workctx, &workctx.status); + } + + cmp = mpd_cmp_total_mag(&q, r); + if (cmp < 0 || (cmp == 0 && isodd)) { + if (allnine && floordigits == ctx->prec) { + mpd_seterror(r, MPD_Division_impossible, status); + goto finish; + } + mpd_qcopy(r, &q, status); + *status &= ~MPD_Rounded; + } + } + + +finish: + mpd_del(&btmp); + mpd_del(&q); + mpd_qfinalize(r, ctx, status); +} + +/* + * Rescale a number so that it has exponent 'exp'. Does not regard + * context precision, emax, emin, but uses the rounding mode. + * Special numbers are quietly copied. + */ +void +mpd_qrescale(mpd_t *result, const mpd_t *a, mpd_ssize_t exp, + const mpd_context_t *ctx, uint32_t *status) +{ + mpd_ssize_t expdiff, shift; + mpd_uint_t rnd; + + if (mpd_isspecial(a)) { + mpd_qcopy(result, a, status); + return; + } + + if (exp > MPD_MAX_EMAX || exp < MPD_MIN_ETINY) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + + if (mpd_iszero(a)) { + _settriple(result, mpd_sign(a), 0, exp); + return; + } + + expdiff = a->exp - exp; + if (expdiff >= 0) { + shift = expdiff; + if (!mpd_qshiftl(result, a, shift, status)) { + return; + } + result->exp = exp; + } + else { + shift = -expdiff; + rnd = mpd_qshiftr(result, a, shift, status); + result->exp = exp; + _mpd_apply_round_excess(result, rnd, ctx, status); + *status |= MPD_Rounded; + if (rnd) { + *status |= MPD_Inexact; + } + } + + if (mpd_issubnormal(result, ctx)) { + *status |= MPD_Subnormal; + } +} + +/* Round to an integer according to 'action' and ctx->round. */ +enum {TO_INT_EXACT, TO_INT_SILENT, TO_INT_FLOOR, TO_INT_CEIL}; +static void +_mpd_qround_to_integral(int action, mpd_t *result, const mpd_t *a, + const mpd_context_t *ctx, uint32_t *status) +{ + mpd_uint_t rnd; + + if (mpd_isspecial(a)) { + if (mpd_qcheck_nan(result, a, ctx, status)) { + return; + } + mpd_qcopy(result, a, status); + return; + } + if (a->exp >= 0) { + mpd_qcopy(result, a, status); + return; + } + if (mpd_iszerocoeff(a)) { + _settriple(result, mpd_sign(a), 0, 0); + return; + } + + rnd = mpd_qshiftr(result, a, -a->exp, status); + result->exp = 0; + + if (action == TO_INT_EXACT || action == TO_INT_SILENT) { + _mpd_apply_round(result, rnd, ctx, status); + if (action == TO_INT_EXACT) { + *status |= MPD_Rounded; + if (rnd) { + *status |= MPD_Inexact; + } + } + } + else if (action == TO_INT_CEIL) { + if (rnd) { + mpd_qadd(result, result, &one, ctx, status); + } + } +} + +void +mpd_qround_to_intx(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) +{ + (void)_mpd_qround_to_integral(TO_INT_EXACT, result, a, ctx, status); +} + +void +mpd_qround_to_int(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) +{ + (void)_mpd_qround_to_integral(TO_INT_SILENT, result, a, ctx, status); +} + +void +mpd_qfloor(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) +{ + (void)_mpd_qround_to_integral(TO_INT_FLOOR, result, a, ctx, status); +} + +void +mpd_qceil(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) +{ + (void)_mpd_qround_to_integral(TO_INT_CEIL, result, a, ctx, status); +} + +int +mpd_same_quantum(const mpd_t *a, const mpd_t *b) +{ + if (mpd_isspecial(a) || mpd_isspecial(b)) { + return ((mpd_isnan(a) && mpd_isnan(b)) || + (mpd_isinfinite(a) && mpd_isinfinite(b))); + } + + return a->exp == b->exp; +} + +/* Schedule the increase in precision for the Newton iteration. */ +static inline int +recpr_schedule_prec(mpd_ssize_t klist[MPD_MAX_PREC_LOG2], mpd_ssize_t maxprec, mpd_ssize_t initprec) +{ + mpd_ssize_t k; + int i; + + assert(maxprec > 0 && initprec > 0); + if (maxprec <= initprec) return -1; + + i = 0; k = maxprec; + do { + k = (k+1) / 2; + klist[i++] = k; + } while (k > initprec); + + return i-1; +} + +/* + * Initial approximation for the reciprocal. Result has MPD_RDIGITS-2 significant + * digits. + */ +static void +_mpd_qreciprocal_approx(mpd_t *z, const mpd_t *v, uint32_t *status) +{ + mpd_uint_t p10data[2] = {0, mpd_pow10[MPD_RDIGITS-2]}; /* 10**(2*MPD_RDIGITS-2) */ + mpd_uint_t dummy, word; + int n; + + _mpd_get_msdigits(&dummy, &word, v, MPD_RDIGITS); + n = mpd_word_digits(word); + word *= mpd_pow10[MPD_RDIGITS-n]; + + mpd_qresize(z, 2, status); + (void)_mpd_shortdiv(z->data, p10data, 2, word); + + mpd_clear_flags(z); + z->exp = -(v->exp + v->digits) - (MPD_RDIGITS-2); + z->len = (z->data[1] == 0) ? 1 : 2; + mpd_setdigits(z); +} + +/* Reciprocal, calculated with Newton's Method */ +static void +_mpd_qreciprocal(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) +{ + mpd_context_t varcontext, maxcontext; + mpd_t *z = result; /* current approximation */ + mpd_t *v; /* a, normalized to a number between 0.1 and 1 */ + MPD_NEW_SHARED(vtmp, a); /* by default v will share data with a */ + MPD_NEW_STATIC(s,0,0,0,0); /* temporary variable */ + MPD_NEW_STATIC(t,0,0,0,0); /* temporary variable */ + MPD_NEW_CONST(two,0,0,1,1,1,2); /* const 2 */ + mpd_ssize_t klist[MPD_MAX_PREC_LOG2]; + mpd_ssize_t adj, maxprec, initprec; + uint8_t sign = mpd_sign(a); + int i; + + v = &vtmp; + if (result == a) { + if ((v = mpd_qncopy(a)) == NULL) { + goto finish; + } + } + + mpd_clear_flags(v); + adj = v->digits + v->exp; + v->exp = -v->digits; + + /* initial approximation */ + _mpd_qreciprocal_approx(z, v, status); + + mpd_maxcontext(&varcontext); + mpd_maxcontext(&maxcontext); + varcontext.round = MPD_ROUND_TRUNC; + maxcontext.round = MPD_ROUND_TRUNC; + + maxprec = (v->digits > ctx->prec) ? v->digits : ctx->prec; + maxprec += 2; + initprec = MPD_RDIGITS-3; + + i = recpr_schedule_prec(klist, maxprec, initprec); + for (; i >= 0; i--) { + mpd_qmul(&s, z, z, &maxcontext, status); + varcontext.prec = 2*klist[i] + 5; + if (v->digits > varcontext.prec) { + mpd_qshiftr(&t, v, v->digits-varcontext.prec, status); + t.exp = -varcontext.prec; + mpd_qmul(&t, &t, &s, &varcontext, status); + } + else { + mpd_qmul(&t, v, &s, &varcontext, status); + } + mpd_qmul(&s, z, &two, &maxcontext, status); + mpd_qsub(z, &s, &t, &maxcontext, status); + } + + z->exp -= adj; + mpd_set_flags(z, sign); + + +finish: + mpd_del(&s); + mpd_del(&t); + if (v != &vtmp) mpd_del(v); + mpd_qfinalize(z, ctx, status); +} + +/* + * Integer division with remainder of the coefficients: coeff(a) / coeff(b). + * This function is for large numbers where it is faster to divide by + * multiplying the dividend by the reciprocal of the divisor. The inexact + * result is fixed by a small loop, which should not take more than 2 iterations. + */ +static void +_mpd_qbarrett_divmod(mpd_t *q, mpd_t *r, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + mpd_context_t workctx; + mpd_t *qq = q, *rr = r; + mpd_t aa, bb; + int k; + + workctx = *ctx; + _mpd_copy_shared(&aa, a); + _mpd_copy_shared(&bb, b); + + mpd_set_positive(&aa); + mpd_set_positive(&bb); + aa.exp = 0; + bb.exp = 0; + + if (q == a || q == b) { + if ((qq = mpd_qnew()) == NULL) { + goto nanresult; + } + } + if (r == a || r == b) { + if ((rr = mpd_qnew()) == NULL) { + goto nanresult; + } + } + + /* maximum length of q + 3 digits */ + workctx.prec = aa.digits - bb.digits + 1 + 3; + /* we get the reciprocal with precision maxlen(q) + 3 */ + _mpd_qreciprocal(rr, &bb, &workctx, &workctx.status); + + mpd_qmul(qq, &aa, rr, &workctx, &workctx.status); + mpd_qfloor(qq, qq, &workctx, &workctx.status); + + workctx.prec = aa.digits + 3; + /* get the remainder */ + mpd_qmul(rr, &bb, qq, &workctx, &workctx.status); + mpd_qsub(rr, &aa, rr, &workctx, &workctx.status); + + /* Fix the result. Algorithm from: Karl Hasselstrom, Fast Division of Large Integers */ + for (k = 0;; k++) { + if (k > 2) { + mpd_err_warn("_mpd_barrett_divmod: k > 2 in correcting loop"); + abort(); /* debug */ + } + else if (_mpd_cmp(&zero, rr) == 1) { + mpd_qadd(rr, rr, &bb, &workctx, &workctx.status); + mpd_qadd(qq, qq, &minus_one, &workctx, &workctx.status); + } + else if (_mpd_cmp(rr, &bb) == -1) { + break; + } + else { + mpd_qsub(rr, rr, &bb, &workctx, &workctx.status); + mpd_qadd(qq, qq, &one, &workctx, &workctx.status); + } + } + + if (qq != q) { + mpd_qcopy(q, qq, status); + mpd_del(qq); + } + if (rr != r) { + mpd_qcopy(r, rr, status); + mpd_del(rr); + } + + *status |= (workctx.status&MPD_Errors); + return; + + +nanresult: + if (qq) mpd_del(qq); + if (rr) mpd_del(rr); + mpd_seterror(q, MPD_Malloc_error, status); + mpd_setspecial(r, MPD_POS, MPD_NAN); +} + +static inline int +invroot_schedule_prec(mpd_ssize_t klist[MPD_MAX_PREC_LOG2], mpd_ssize_t maxprec, mpd_ssize_t initprec) +{ + mpd_ssize_t k; + int i; + + assert(maxprec >= 3 && initprec >= 3); + if (maxprec <= initprec) return -1; + + i = 0; k = maxprec; + do { + k = (k+3) / 2; + klist[i++] = k; + } while (k > initprec); + + return i-1; +} + +/* + * Initial approximation for the inverse square root. + * + * Input: + * v := 7 or 8 decimal digits with an implicit exponent of 10**-6, + * representing a number 1 <= x < 100. + * + * Output: + * An approximation to 1/sqrt(v) + */ +static inline void +_invroot_init_approx(mpd_t *z, mpd_uint_t v) +{ + mpd_uint_t lo = 1000; + mpd_uint_t hi = 10000; + mpd_uint_t a, sq; + + assert(v >= lo*lo && v < (hi+1)*(hi+1)); + + for(;;) { + a = (lo + hi) / 2; + sq = a * a; + if (v >= sq) { + if (v < sq + 2*a + 1) { + break; + } + lo = a + 1; + } + else { + hi = a - 1; + } + } + + /* At this point a/1000 is an approximation to sqrt(v). */ + mpd_minalloc(z); + mpd_clear_flags(z); + z->data[0] = 1000000000UL / a; + z->len = 1; + z->exp = -6; + mpd_setdigits(z); +} + +static void +_mpd_qinvroot(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) +{ + uint32_t workstatus = 0; + mpd_context_t varcontext, maxcontext; + mpd_t *z = result; /* z: current approximation */ + mpd_t *v; /* v: a, normalized to a number between 1 and 100 */ + MPD_NEW_SHARED(vtmp, a); /* by default v will share data with a */ + MPD_NEW_STATIC(s,0,0,0,0); /* temporary variable */ + MPD_NEW_STATIC(t,0,0,0,0); /* temporary variable */ + MPD_NEW_CONST(one_half,0,-1,1,1,1,5); + MPD_NEW_CONST(three,0,0,1,1,1,3); + mpd_ssize_t klist[MPD_MAX_PREC_LOG2]; + mpd_ssize_t ideal_exp, shift; + mpd_ssize_t adj, tz; + mpd_ssize_t maxprec, fracdigits; + mpd_uint_t x, dummy; + int i, n; + + + ideal_exp = -(a->exp - (a->exp & 1)) / 2; + + v = &vtmp; + if (result == a) { + if ((v = mpd_qncopy(a)) == NULL) { + goto finish; + } + } + + /* normalize a to 1 <= v < 100 */ + if ((v->digits+v->exp) & 1) { + fracdigits = v->digits - 1; + v->exp = -fracdigits; + n = (v->digits > 7) ? 7 : (int)v->digits; + _mpd_get_msdigits(&dummy, &x, v, n); + if (n < 7) { + x *= mpd_pow10[7-n]; + } + } + else { + fracdigits = v->digits - 2; + v->exp = -fracdigits; + n = (v->digits > 8) ? 8 : (int)v->digits; + _mpd_get_msdigits(&dummy, &x, v, n); + if (n < 8) { + x *= mpd_pow10[8-n]; + } + } + adj = (a->exp-v->exp) / 2; + + /* initial approximation */ + _invroot_init_approx(z, x); + + mpd_maxcontext(&maxcontext); + mpd_maxcontext(&varcontext); + varcontext.round = MPD_ROUND_TRUNC; + maxprec = ctx->prec + 2; + + i = invroot_schedule_prec(klist, maxprec, 3); + for (; i >= 0; i--) { + varcontext.prec = 2*klist[i]+2; + mpd_qmul(&s, z, z, &maxcontext, &workstatus); + if (v->digits > varcontext.prec) { + shift = v->digits - varcontext.prec; + mpd_qshiftr(&t, v, shift, &workstatus); + t.exp += shift; + mpd_qmul(&t, &t, &s, &varcontext, &workstatus); + } + else { + mpd_qmul(&t, v, &s, &varcontext, &workstatus); + } + mpd_qsub(&t, &three, &t, &maxcontext, &workstatus); + mpd_qmul(z, z, &t, &varcontext, &workstatus); + mpd_qmul(z, z, &one_half, &maxcontext, &workstatus); + } + + z->exp -= adj; + + tz = mpd_trail_zeros(result); + shift = ideal_exp - result->exp; + shift = (tz > shift) ? shift : tz; + if (shift > 0) { + mpd_qshiftr_inplace(result, shift); + result->exp += shift; + } + + +finish: + mpd_del(&s); + mpd_del(&t); + if (v != &vtmp) mpd_del(v); + *status |= (workstatus&MPD_Errors); + varcontext = *ctx; + varcontext.round = MPD_ROUND_HALF_EVEN; + mpd_qfinalize(result, &varcontext, status); +} + +void +mpd_qinvroot(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) +{ + + if (mpd_isspecial(a)) { + if (mpd_qcheck_nan(result, a, ctx, status)) { + return; + } + if (mpd_isnegative(a)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + /* positive infinity */ + _settriple(result, MPD_POS, 0, mpd_etiny(ctx)); + *status |= MPD_Clamped; + return; + } + if (mpd_iszero(a)) { + mpd_setspecial(result, mpd_sign(a), MPD_INF); + *status |= MPD_Division_by_zero; + return; + } + if (mpd_isnegative(a)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + + _mpd_qinvroot(result, a, ctx, status); +} + +/* + * Ensure correct rounding. Algorithm after Hull & Abrham, "Properly Rounded + * Variable Precision Square Root", ACM Transactions on Mathematical Software, + * Vol. 11, No. 3. + */ +static void +_mpd_fix_sqrt(mpd_t *result, const mpd_t *a, mpd_t *tmp, + const mpd_context_t *ctx, uint32_t *status) +{ + mpd_context_t maxctx; + MPD_NEW_CONST(u,0,0,1,1,1,5); + + mpd_maxcontext(&maxctx); + u.exp = u.digits - ctx->prec + result->exp - 1; + + _mpd_qsub(tmp, result, &u, &maxctx, status); + _mpd_qmul(tmp, tmp, tmp, &maxctx, status); + if (_mpd_cmp(tmp, a) == 1) { + u.exp += 1; + u.data[0] = 1; + _mpd_qsub(result, result, &u, &maxctx, status); + } + else { + _mpd_qadd(tmp, result, &u, &maxctx, status); + _mpd_qmul(tmp, tmp, tmp, &maxctx, status); + if (_mpd_cmp(tmp, a) == -1) { + u.exp += 1; + u.data[0] = 1; + _mpd_qadd(result, result, &u, &maxctx, status); + } + } +} + +void +mpd_qsqrt(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +{ + uint32_t workstatus = 0; + mpd_context_t varcontext; + mpd_t *z = result; /* z: current approximation */ + MPD_NEW_STATIC(v,0,0,0,0); /* v: a, normalized to a number between 1 and 10 */ + MPD_NEW_STATIC(vtmp,0,0,0,0); + MPD_NEW_STATIC(tmp,0,0,0,0); + MPD_NEW_STATIC(aa,0,0,0,0); + mpd_ssize_t ideal_exp, shift; + mpd_ssize_t target_prec, fracdigits; + mpd_ssize_t adj, tz; + mpd_uint_t dummy, t; + int exact = 0; + + + varcontext = *ctx; + varcontext.round = MPD_ROUND_HALF_EVEN; + ideal_exp = (a->exp - (a->exp & 1)) / 2; + + if (mpd_isspecial(a)) { + if (mpd_qcheck_nan(result, a, ctx, status)) { + return; + } + if (mpd_isnegative(a)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + mpd_setspecial(result, MPD_POS, MPD_INF); + return; + } + if (mpd_iszero(a)) { + _settriple(result, mpd_sign(a), 0, ideal_exp); + mpd_qfinalize(result, ctx, status); + return; + } + if (mpd_isnegative(a)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + + if (!mpd_qcopy(&v, a, status)) { + mpd_seterror(result, MPD_Invalid_operation, status); + goto finish; + } + if (result == a) { + if (!mpd_qcopy(&aa, a, status)) { + mpd_seterror(result, MPD_Invalid_operation, status); + goto finish; + } + a = &aa; + } + + /* normalize a to 1 <= v < 100 */ + if ((v.digits+v.exp) & 1) { + fracdigits = v.digits - 1; + v.exp = -fracdigits; + _mpd_get_msdigits(&dummy, &t, &v, 3); + t = t < 100 ? t*10 : t; + t = t < 100 ? t*10 : t; + } + else { + fracdigits = v.digits - 2; + v.exp = -fracdigits; + _mpd_get_msdigits(&dummy, &t, &v, 4); + t = t < 1000 ? t*10 : t; + t = t < 1000 ? t*10 : t; + t = t < 1000 ? t*10 : t; + } + adj = (a->exp-v.exp) / 2; + + + /* use excess digits */ + target_prec = (a->digits > ctx->prec) ? a->digits : ctx->prec; + target_prec += 2; + varcontext.prec = target_prec + 3; + + /* invroot is much faster for large numbers */ + _mpd_qinvroot(&tmp, &v, &varcontext, &workstatus); + + varcontext.prec = target_prec; + _mpd_qdiv(NO_IDEAL_EXP, z, &one, &tmp, &varcontext, &workstatus); + + + tz = mpd_trail_zeros(result); + if ((result->digits-tz)*2-1 <= v.digits) { + _mpd_qmul(&tmp, result, result, &varcontext, &workstatus); + exact = (_mpd_cmp(&tmp, &v) == 0); + } + *status |= (workstatus&MPD_Errors); + + if (!exact && !mpd_isspecial(result) && !mpd_iszero(result)) { + _mpd_fix_sqrt(result, &v, &tmp, &varcontext, status); + *status |= (MPD_Rounded|MPD_Inexact); + } + + result->exp += adj; + if (exact) { + shift = ideal_exp - result->exp; + shift = (tz > shift) ? shift : tz; + if (shift > 0) { + mpd_qshiftr_inplace(result, shift); + result->exp += shift; + } + } + + +finish: + mpd_del(&v); + mpd_del(&vtmp); + mpd_del(&tmp); + varcontext.prec = ctx->prec; + mpd_qfinalize(result, &varcontext, status); +} + + +/******************************************************************************/ +/* Base conversions */ +/******************************************************************************/ + +/* + * Returns the space needed to represent an integer mpd_t in base 'base'. + * The result is undefined for non-integers. + * + * Max space needed: + * + * base^n >= 10^(digits+exp) + * n >= log10(10^(digits+exp))/log10(base) = (digits+exp) / log10(base) + */ +size_t +mpd_sizeinbase(mpd_t *a, uint32_t base) +{ + size_t x; + + assert(mpd_isinteger(a)); + if (mpd_iszero(a)) { + return 1; + } + + x = a->digits+a->exp; + +#ifdef CONFIG_64 + #if defined(__x86_64__) && defined(HAVE_80BIT_LONG_DOUBLE) + return (long double)x / log10(base) + 3; + #else + /* x > floor(((1ULL<<53)-3) * log10(2)) */ + if (x > 2711437152599294ULL) { + return SIZE_MAX; + } + return (double)x / log10(base) + 3; + #endif +#else /* CONFIG_32 */ +{ + double y = x / log10(base) + 3; + return (y > SIZE_MAX) ? SIZE_MAX : y; +} +#endif +} + +/* + * Returns the space needed to import a base 'base' integer of length 'srclen'. + */ +static inline size_t +_mpd_importsize(size_t srclen, uint32_t base) +{ +#ifdef CONFIG_64 + #if defined(__x86_64__) && defined(HAVE_80BIT_LONG_DOUBLE) + return (long double)srclen * (log10(base)/MPD_RDIGITS) + 3; + #else + if (srclen > (1ULL<<53)) { + return SIZE_MAX; + } + return (double)srclen * (log10(base)/MPD_RDIGITS) + 3; + #endif +#else /* CONFIG_32 */ +{ + double x = srclen * (log10(base) / MPD_RDIGITS) + 3; + return (x > SIZE_MAX) ? SIZE_MAX : x; +} +#endif +} + + +static inline size_t +_to_base_u16(uint16_t *w, size_t wlen, mpd_uint_t base, mpd_uint_t *u, mpd_ssize_t ulen) +{ + size_t n = 0; + + assert(wlen > 0 && ulen > 0); + + do { + w[n++] = (uint16_t)_mpd_shortdiv(u, u, ulen, base); + /* ulen will be at least 1. u[ulen-1] can only be zero if ulen == 1 */ + ulen = _mpd_real_size(u, ulen); + + } while (u[ulen-1] != 0 && n < wlen); + + /* proper termination condition */ + assert(u[ulen-1] == 0); + + return n; +} + +static inline void +_from_base_u16(mpd_uint_t *w, size_t wlen, const mpd_uint_t *u, size_t ulen, uint16_t base) +{ + size_t m = 1; + mpd_uint_t carry; + + assert(wlen > 0 && ulen > 0); + + w[0] = u[--ulen]; + while (--ulen != SIZE_MAX && m < wlen) { + _mpd_shortmul(w, w, m, base); + m = _mpd_real_size(w, m+1); + carry = _mpd_shortadd(w, m, u[ulen]); + if (carry) w[m++] = carry; + } + + /* proper termination condition */ + assert(ulen == SIZE_MAX); +} + +/* target base wbase <= source base ubase */ +static inline size_t +_baseconv_to_smaller(uint32_t *w, size_t wlen, mpd_uint_t wbase, + mpd_uint_t *u, size_t ulen, mpd_uint_t ubase) +{ + size_t n = 0; + + assert(wlen > 0 && ulen > 0); + + do { + w[n++] = (uint32_t)_mpd_shortdiv_b(u, u, ulen, wbase, ubase); + /* ulen will be at least 1. u[ulen-1] can only be zero if ulen == 1 */ + ulen = _mpd_real_size(u, ulen); + + } while (u[ulen-1] != 0 && n < wlen); + + /* proper termination condition */ + assert(u[ulen-1] == 0); + + return n; +} + +/* target base wbase >= source base ubase */ +static inline void +_baseconv_to_larger(mpd_uint_t *w, size_t wlen, mpd_uint_t wbase, + const mpd_uint_t *u, size_t ulen, mpd_uint_t ubase) +{ + size_t m = 1; + mpd_uint_t carry; + + assert(wlen > 0 && ulen > 0); + + w[0] = u[--ulen]; + while (--ulen != SIZE_MAX && m < wlen) { + _mpd_shortmul_b(w, w, m, ubase, wbase); + m = _mpd_real_size(w, m+1); + carry = _mpd_shortadd_b(w, m, u[ulen], wbase); + if (carry) w[m++] = carry; + } + + /* proper termination condition */ + assert(ulen == SIZE_MAX); +} + + +/* + * Converts an integer mpd_t to a multiprecision integer with base <= UINT16_MAX+1. + * The least significant word of the result is rdata[0]. + */ +size_t +mpd_qexport_u16(uint16_t *rdata, size_t rlen, uint32_t base, const mpd_t *src, + uint32_t *status) +{ + mpd_t *tsrc; + size_t n; + + assert(base <= (1U<<16)); + + if (mpd_isspecial(src) || !_mpd_isint(src)) { + *status |= MPD_Invalid_operation; + return SIZE_MAX; + } + + memset(rdata, 0, mul_size_t(rlen, sizeof *rdata)); + + if (mpd_iszero(src)) { + return 1; + } + + if ((tsrc = mpd_qnew()) == NULL) { + *status |= MPD_Malloc_error; + return SIZE_MAX; + } + + if (src->exp >= 0) { + if (!mpd_qshiftl(tsrc, src, src->exp, status)) { + return SIZE_MAX; + } + } + else { + if (mpd_qshiftr(tsrc, src, -src->exp, status) == MPD_UINT_MAX) { + return SIZE_MAX; + } + } + + n = _to_base_u16(rdata, rlen, base, tsrc->data, tsrc->len); + + mpd_del(tsrc); + return n; +} + +/* + * Converts an integer mpd_t to a multiprecision integer with base <= UINT32_MAX. + * The least significant word of the result is rdata[0]. + */ +size_t +mpd_qexport_u32(uint32_t *rdata, size_t rlen, uint32_t base, const mpd_t *src, + uint32_t *status) +{ + mpd_t *tsrc; + size_t n; + + if (mpd_isspecial(src) || !_mpd_isint(src)) { + *status |= MPD_Invalid_operation; + return SIZE_MAX; + } + + memset(rdata, 0, mul_size_t(rlen, sizeof *rdata)); + + if (mpd_iszero(src)) { + return 1; + } + + if ((tsrc = mpd_qnew()) == NULL) { + *status |= MPD_Malloc_error; + return SIZE_MAX; + } + + if (src->exp >= 0) { + if (!mpd_qshiftl(tsrc, src, src->exp, status)) { + return SIZE_MAX; + } + } + else { + if (mpd_qshiftr(tsrc, src, -src->exp, status) == MPD_UINT_MAX) { + return SIZE_MAX; + } + } + +#ifdef CONFIG_64 + n = _baseconv_to_smaller(rdata, rlen, base, tsrc->data, tsrc->len, MPD_RADIX); +#else + if (base <= MPD_RADIX) { + n = _baseconv_to_smaller(rdata, rlen, base, tsrc->data, tsrc->len, MPD_RADIX); + } + else { + _baseconv_to_larger(rdata, rlen, base, tsrc->data, tsrc->len, MPD_RADIX); + n = _mpd_real_size(rdata, rlen); + } +#endif + + mpd_del(tsrc); + return n; +} + + +/* + * Converts a multiprecision integer with base <= UINT16_MAX+1 to an mpd_t. + * The least significant word of the source is srcdata[0]. + */ +int +mpd_qimport_u16(mpd_t *result, const uint16_t *srcdata, size_t srclen, + uint8_t srcsign, uint32_t base, + const mpd_context_t *ctx, uint32_t *status) +{ + mpd_uint_t *usrc; /* uint16_t src copied to an mpd_uint_t array */ + size_t rlen; /* length of the result */ + size_t n = 0; + + assert(srclen > 0); + assert(base <= (1U<<16)); + + if ((rlen = _mpd_importsize(srclen, base)) == SIZE_MAX) { + mpd_seterror(result, MPD_Malloc_error, status); + return 0; + } + + if ((usrc = mpd_alloc(srclen, sizeof *usrc)) == NULL) { + mpd_seterror(result, MPD_Malloc_error, status); + return 0; + } + for (n = 0; n < srclen; n++) { + usrc[n] = srcdata[n]; + } + + /* result->data is initialized to zero */ + if (!mpd_qresize_zero(result, rlen, status)) { + goto finish; + } + + _from_base_u16(result->data, rlen, usrc, srclen, base); + + mpd_set_flags(result, srcsign); + result->exp = 0; + result->len = _mpd_real_size(result->data, rlen); + mpd_setdigits(result); + + mpd_qresize(result, result->len, status); + mpd_qfinalize(result, ctx, status); + +finish: + mpd_free(usrc); + return 1; +} + +/* + * Converts a multiprecision integer with base <= UINT32_MAX to an mpd_t. + * The least significant word of the source is srcdata[0]. + */ +int +mpd_qimport_u32(mpd_t *result, const uint32_t *srcdata, size_t srclen, + uint8_t srcsign, uint32_t base, + const mpd_context_t *ctx, uint32_t *status) +{ + mpd_uint_t *usrc; /* uint32_t src copied to an mpd_uint_t array */ + size_t rlen; /* length of the result */ + size_t n = 0; + + assert(srclen > 0); + + if ((rlen = _mpd_importsize(srclen, base)) == SIZE_MAX) { + mpd_seterror(result, MPD_Malloc_error, status); + return 0; + } + + if ((usrc = mpd_alloc(srclen, sizeof *usrc)) == NULL) { + mpd_seterror(result, MPD_Malloc_error, status); + return 0; + } + for (n = 0; n < srclen; n++) { + usrc[n] = srcdata[n]; + } + + /* result->data is initialized to zero */ + if (!mpd_qresize_zero(result, rlen, status)) { + goto finish; + } + +#ifdef CONFIG_64 + _baseconv_to_larger(result->data, rlen, MPD_RADIX, usrc, srclen, base); +#else + if (base <= MPD_RADIX) { + _baseconv_to_larger(result->data, rlen, MPD_RADIX, usrc, srclen, base); + } + else { + _baseconv_to_smaller(result->data, rlen, MPD_RADIX, usrc, srclen, base); + } +#endif + + mpd_set_flags(result, srcsign); + result->exp = 0; + result->len = _mpd_real_size(result->data, rlen); + mpd_setdigits(result); + + mpd_qresize(result, result->len, status); + mpd_qfinalize(result, ctx, status); + +finish: + mpd_free(usrc); + return 1; +} + + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal.h Thu Jan 7 13:02:51 2010 @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#ifndef MPDECIMAL_H +#define MPDECIMAL_H + +#if defined(CONFIG_64) + #include "mpdecimal64.h" +#elif defined(CONFIG_32) + #include "mpdecimal32.h" +#else + #error "define CONFIG_64 or CONFIG_32" +#endif + + +#endif Added: python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal32.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal32.h Thu Jan 7 13:02:51 2010 @@ -0,0 +1,522 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#ifndef MPDECIMAL32_H +#define MPDECIMAL32_H + + +#ifdef __cplusplus +extern "C" { +#define __STDC_LIMIT_MACROS +#endif + +#include +#include +#include +#include +#include + + +#define EXTINLINE +#ifdef _MSC_VER + #include "vccompat.h" + #ifndef UNUSED + #define UNUSED + #endif + #undef EXTINLINE + #define EXTINLINE extern inline +#else + #include + #define __GNUC_STDC_INLINE__ + #define UNUSED __attribute__((unused)) +#endif + + +/******************************************************************************/ +/* Types for 32 bit architectures */ +/******************************************************************************/ + +/* types for modular and base arithmetic */ +#define MPD_UINT_MAX UINT32_MAX +#define MPD_UUINT_MAX UINT64_MAX +#define MPD_BITS_PER_UINT 32 +typedef uint32_t mpd_uint_t; /* unsigned mod type */ +typedef uint64_t mpd_uuint_t; /* double width unsigned mod type */ + +/* type for dec->len, dec->exp, ctx->prec */ +#define MPD_SSIZE_MAX INT32_MAX +#define MPD_SSIZE_MIN INT32_MIN +typedef int32_t mpd_ssize_t; +#define mpd_strtossize strtol + +/* decimal arithmetic */ +#define MPD_RADIX 1000000000UL /* 10**9 */ +#define MPD_RDIGITS 9 +#define MPD_MAX_POW10 9 +#define MPD_EXPDIGITS 10 /* MPD_EXPDIGITS <= MPD_RDIGITS+1 */ + +#define MPD_MAXTRANSFORM_2N 33554432UL /* 2**25 */ +#define MPD_MAX_PREC 425000000L +#define MPD_MAX_PREC_LOG2 32 +#define MPD_ELIMIT 425000001L +#define MPD_MAX_EMAX 425000000L /* ELIMIT-1 */ +#define MPD_MIN_EMIN (-425000000L) /* -EMAX */ +#define MPD_MIN_ETINY (MPD_MIN_EMIN-(MPD_MAX_PREC-1)) +#define MPD_EXP_INF 1000000001L /* allows for emax=999999999 in the tests */ +#define MPD_EXP_CLAMP (-2000000001L) /* allows for emin=-999999999 in the tests */ + + +#if SIZE_MAX < MPD_SSIZE_MAX + #error "unsupported platform: need size_t >= mpd_ssize_t" +#endif +#if MPD_SSIZE_MAX > MPD_UINT_MAX + #error "unsupported platform: need mpd_ssize_t <= mpd_uint_t" +#endif + + +/******************************************************************************/ +/* Context */ +/******************************************************************************/ + +enum { + MPD_ROUND_UP, /* round away from 0 */ + MPD_ROUND_DOWN, /* round toward 0 (truncate) */ + MPD_ROUND_CEILING, /* round toward +infinity */ + MPD_ROUND_FLOOR, /* round toward -infinity */ + MPD_ROUND_HALF_UP, /* 0.5 is rounded up */ + MPD_ROUND_HALF_DOWN, /* 0.5 is rounded down */ + MPD_ROUND_HALF_EVEN, /* 0.5 is rounded to even */ + MPD_ROUND_05UP, /* round zero or five away from 0 */ + MPD_ROUND_TRUNC, /* truncate, but set infinity */ + MPD_ROUND_GUARD +}; + +enum { MPD_CLAMP_DEFAULT, MPD_CLAMP_IEEE_754, MPD_CLAMP_GUARD }; + +extern const char *mpd_round_string[MPD_ROUND_GUARD]; +extern const char *mpd_clamp_string[MPD_CLAMP_GUARD]; + + +typedef struct { + mpd_ssize_t prec; /* precision */ + mpd_ssize_t emax; /* max positive exp */ + mpd_ssize_t emin; /* min negative exp */ + uint32_t traps; /* status events that should be trapped */ + uint32_t status; /* status flags */ + uint32_t newtrap; /* set by mpd_addstatus_raise() */ + int round; /* rounding mode */ + int clamp; /* clamp mode */ + int allcr; /* all functions correctly rounded */ +} mpd_context_t; + + +/* Status flags */ +#define MPD_Clamped 0x00000001U +#define MPD_Conversion_syntax 0x00000002U +#define MPD_Division_by_zero 0x00000004U +#define MPD_Division_impossible 0x00000008U +#define MPD_Division_undefined 0x00000010U +#define MPD_Fpu_error 0x00000020U +#define MPD_Inexact 0x00000040U +#define MPD_Invalid_context 0x00000080U +#define MPD_Invalid_operation 0x00000100U +#define MPD_Malloc_error 0x00000200U +#define MPD_Not_implemented 0x00000400U +#define MPD_Overflow 0x00000800U +#define MPD_Rounded 0x00001000U +#define MPD_Subnormal 0x00002000U +#define MPD_Underflow 0x00004000U +#define MPD_Max_status (0x00008000U-1U) + +/* Conditions that result in an IEEE 754 exception */ +#define MPD_IEEE_Invalid_operation (MPD_Conversion_syntax | \ + MPD_Division_impossible | \ + MPD_Division_undefined | \ + MPD_Fpu_error | \ + MPD_Invalid_context | \ + MPD_Invalid_operation | \ + MPD_Malloc_error) \ + +/* Errors that require the result of an operation to be set to NaN */ +#define MPD_Errors (MPD_IEEE_Invalid_operation | \ + MPD_Division_by_zero) + +/* Default traps */ +#define MPD_Traps (MPD_IEEE_Invalid_operation | \ + MPD_Division_by_zero | \ + MPD_Overflow | \ + MPD_Underflow) + +/* Official name */ +#define MPD_Insufficient_storage MPD_Malloc_error + + +#define MPD_MINALLOC_MIN 2 +#define MPD_MINALLOC_MAX 64 +extern mpd_ssize_t MPD_MINALLOC; +extern void (* mpd_traphandler)(mpd_context_t *); + +void mpd_init(mpd_context_t *ctx, mpd_ssize_t prec); + +void mpd_maxcontext(mpd_context_t *ctx); +void mpd_defaultcontext(mpd_context_t *ctx); +void mpd_basiccontext(mpd_context_t *ctx); +void mpd_extcontext(mpd_context_t *ctx); + +mpd_ssize_t mpd_getprec(const mpd_context_t *ctx); +mpd_ssize_t mpd_getemax(const mpd_context_t *ctx); +mpd_ssize_t mpd_getemin(const mpd_context_t *ctx); +int mpd_getround(const mpd_context_t *ctx); +uint32_t mpd_gettraps(const mpd_context_t *ctx); +uint32_t mpd_getstatus(const mpd_context_t *ctx); +int mpd_getclamp(const mpd_context_t *ctx); +int mpd_getcr(const mpd_context_t *ctx); + +int mpd_qsetprec(mpd_context_t *ctx, mpd_ssize_t prec); +int mpd_qsetemax(mpd_context_t *ctx, mpd_ssize_t emax); +int mpd_qsetemin(mpd_context_t *ctx, mpd_ssize_t emin); +int mpd_qsetround(mpd_context_t *ctx, int newround); +int mpd_qsettraps(mpd_context_t *ctx, uint32_t flags); +int mpd_qsetstatus(mpd_context_t *ctx, uint32_t flags); +int mpd_qsetclamp(mpd_context_t *ctx, int c); +int mpd_qsetcr(mpd_context_t *ctx, int c); +void mpd_addstatus_raise(mpd_context_t *ctx, uint32_t flags); + + +/******************************************************************************/ +/* Decimal Arithmetic */ +/******************************************************************************/ + +/* mpd_t flags */ +#define MPD_POS ((uint8_t)0) +#define MPD_NEG ((uint8_t)1) +#define MPD_INF ((uint8_t)2) +#define MPD_NAN ((uint8_t)4) +#define MPD_SNAN ((uint8_t)8) +#define MPD_SPECIAL (MPD_INF|MPD_NAN|MPD_SNAN) +#define MPD_STATIC ((uint8_t)16) +#define MPD_STATIC_DATA ((uint8_t)32) +#define MPD_SHARED_DATA ((uint8_t)64) +#define MPD_CONST_DATA ((uint8_t)128) +#define MPD_DATAFLAGS (MPD_STATIC_DATA|MPD_SHARED_DATA|MPD_CONST_DATA) + +/* mpd_t */ +typedef struct { + uint8_t flags; + mpd_ssize_t exp; + mpd_ssize_t digits; + mpd_ssize_t len; + mpd_ssize_t alloc; + mpd_uint_t *data; +} mpd_t; + + +typedef unsigned char uchar; +extern mpd_t mpd_ln10; + + +/******************************************************************************/ +/* Quiet, thread-safe functions */ +/******************************************************************************/ + +/* format specification */ +typedef struct { + mpd_ssize_t min_width; /* minimum field width */ + mpd_ssize_t prec; /* fraction digits or significant digits */ + char type; /* conversion specifier */ + char align; /* alignment */ + char sign; /* sign printing/alignment */ + char fill[5]; /* fill character */ + const char *dot; /* decimal point */ + const char *sep; /* thousands separator */ + const char *grouping; /* grouping of digits */ +} mpd_spec_t; + +/* output to a string */ +char *mpd_to_sci(const mpd_t *dec, int fmt); +char *mpd_to_eng(const mpd_t *dec, int fmt); +int mpd_parse_fmt_str(mpd_spec_t *spec, const char *fmt); +char * mpd_qformat_spec(const mpd_t *dec, mpd_spec_t *spec, const mpd_context_t *ctx, uint32_t *status); +char *mpd_qformat(const mpd_t *dec, const char *fmt, const mpd_context_t *ctx, uint32_t *status); + +#define MPD_NUM_FLAGS 15 +#define MPD_MAX_FLAG_STRING 208 +#define MPD_MAX_FLAG_LIST (MPD_MAX_FLAG_STRING+18) +#define MPD_MAX_SIGNAL_LIST 121 +int mpd_snprint_flags(char *dest, int nmemb, uint32_t flags); +int mpd_lsnprint_flags(char *dest, int nmemb, uint32_t flags, const char *flag_string[]); +int mpd_lsnprint_signals(char *dest, int nmemb, uint32_t flags, const char *signal_string[]); + +/* output to a file */ +void mpd_fprint(FILE *file, const mpd_t *dec); +void mpd_print(const mpd_t *dec); + +/* assignment from a string */ +void mpd_qset_string(mpd_t *dec, const char *s, const mpd_context_t *ctx, uint32_t *status); + +/* set to NaN with error flags */ +void mpd_seterror(mpd_t *result, uint32_t flags, uint32_t *status); +/* set a special with sign and type */ +void mpd_setspecial(mpd_t *dec, uint8_t sign, uint8_t type); +/* set coefficient to zero or all nines */ +void mpd_zerocoeff(mpd_t *result); +void mpd_qmaxcoeff(mpd_t *result, const mpd_context_t *ctx, uint32_t *status); + +/* quietly assign a C integer type to an mpd_t */ +void mpd_qset_ssize(mpd_t *result, mpd_ssize_t a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qset_i32(mpd_t *result, int32_t a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qset_uint(mpd_t *result, mpd_uint_t a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qset_u32(mpd_t *result, uint32_t a, const mpd_context_t *ctx, uint32_t *status); + +/* quietly assign a C integer type to an mpd_t with a static coefficient */ +void mpd_qsset_ssize(mpd_t *result, mpd_ssize_t a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsset_i32(mpd_t *result, int32_t a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsset_uint(mpd_t *result, mpd_uint_t a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsset_u32(mpd_t *result, uint32_t a, const mpd_context_t *ctx, uint32_t *status); + +/* quietly get a C integer type from an mpd_t */ +mpd_ssize_t mpd_qget_ssize(const mpd_t *dec, uint32_t *status); +int32_t mpd_qget_i32(const mpd_t *dec, uint32_t *status); +mpd_uint_t mpd_qget_uint(const mpd_t *dec, uint32_t *status); +uint32_t mpd_qget_u32(const mpd_t *dec, uint32_t *status); + + +/* quiet functions */ +int mpd_qcheck_nan(mpd_t *nanresult, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +int mpd_qcheck_nans(mpd_t *nanresult, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qfinalize(mpd_t *result, const mpd_context_t *ctx, uint32_t *status); + +const char * mpd_class(const mpd_t *a, const mpd_context_t *ctx); + +int mpd_qcopy(mpd_t *result, const mpd_t *a, uint32_t *status); +mpd_t *mpd_qncopy(const mpd_t *a); +int mpd_qcopy_abs(mpd_t *result, const mpd_t *a, uint32_t *status); +int mpd_qcopy_negate(mpd_t *result, const mpd_t *a, uint32_t *status); +int mpd_qcopy_sign(mpd_t *result, const mpd_t *a, const mpd_t *b, uint32_t *status); + +void mpd_qand(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qinvert(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qlogb(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qor(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qscaleb(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qxor(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +int mpd_same_quantum(const mpd_t *a, const mpd_t *b); + +void mpd_qrotate(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +int mpd_qshiftl(mpd_t *result, const mpd_t *a, mpd_ssize_t n, uint32_t *status); +mpd_uint_t mpd_qshiftr(mpd_t *result, const mpd_t *a, mpd_ssize_t n, uint32_t *status); +mpd_uint_t mpd_qshiftr_inplace(mpd_t *result, mpd_ssize_t n); +void mpd_qshift(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qshiftn(mpd_t *result, const mpd_t *a, mpd_ssize_t n, const mpd_context_t *ctx, uint32_t *status); + +int mpd_qcmp(const mpd_t *a, const mpd_t *b, uint32_t *status); +int mpd_qcompare(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +int mpd_qcompare_signal(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +int mpd_cmp_total(const mpd_t *a, const mpd_t *b); +int mpd_cmp_total_mag(const mpd_t *a, const mpd_t *b); +int mpd_compare_total(mpd_t *result, const mpd_t *a, const mpd_t *b); +int mpd_compare_total_mag(mpd_t *result, const mpd_t *a, const mpd_t *b); + +void mpd_qround_to_intx(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qround_to_int(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qfloor(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qceil(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); + +void mpd_qabs(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qmax(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qmax_mag(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qmin(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qmin_mag(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qminus(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qplus(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qnext_minus(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qnext_plus(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qnext_toward(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qquantize(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qrescale(mpd_t *result, const mpd_t *a, mpd_ssize_t exp, const mpd_context_t *ctx, uint32_t *status); +void mpd_qreduce(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qadd(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qadd_ssize(mpd_t *result, const mpd_t *a, mpd_ssize_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qadd_i32(mpd_t *result, const mpd_t *a, int32_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qadd_uint(mpd_t *result, const mpd_t *a, mpd_uint_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qadd_u32(mpd_t *result, const mpd_t *a, uint32_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsub(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsub_ssize(mpd_t *result, const mpd_t *a, mpd_ssize_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsub_i32(mpd_t *result, const mpd_t *a, int32_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsub_uint(mpd_t *result, const mpd_t *a, mpd_uint_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsub_u32(mpd_t *result, const mpd_t *a, uint32_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qmul(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qmul_ssize(mpd_t *result, const mpd_t *a, mpd_ssize_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qmul_i32(mpd_t *result, const mpd_t *a, int32_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qmul_uint(mpd_t *result, const mpd_t *a, mpd_uint_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qmul_u32(mpd_t *result, const mpd_t *a, uint32_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qfma(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_t *c, const mpd_context_t *ctx, uint32_t *status); +void mpd_qdiv(mpd_t *q, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qdiv_ssize(mpd_t *result, const mpd_t *a, mpd_ssize_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qdiv_i32(mpd_t *result, const mpd_t *a, int32_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qdiv_uint(mpd_t *result, const mpd_t *a, mpd_uint_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qdiv_u32(mpd_t *result, const mpd_t *a, uint32_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qdivint(mpd_t *q, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qrem(mpd_t *r, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qrem_near(mpd_t *r, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qdivmod(mpd_t *q, mpd_t *r, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qpow(mpd_t *result, const mpd_t *base, const mpd_t *exp, const mpd_context_t *ctx, uint32_t *status); +void mpd_qpowmod(mpd_t *result, const mpd_t *base, const mpd_t *exp, const mpd_t *mod, const mpd_context_t *ctx, uint32_t *status); +void mpd_qexp(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_update_ln10(mpd_ssize_t prec, uint32_t *status); +void mpd_qln(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qlog10(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsqrt(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qinvroot(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); + + +size_t mpd_sizeinbase(mpd_t *a, uint32_t base); +int mpd_qimport_u16(mpd_t *result, const uint16_t *srcdata, size_t srclen, + uint8_t srcsign, uint32_t base, + const mpd_context_t *ctx, uint32_t *status); +int mpd_qimport_u32(mpd_t *result, const uint32_t *srcdata, size_t srclen, + uint8_t srcsign, uint32_t base, + const mpd_context_t *ctx, uint32_t *status); +size_t mpd_qexport_u16(uint16_t *rdata, size_t rlen, uint32_t base, + const mpd_t *src, uint32_t *status); +size_t mpd_qexport_u32(uint32_t *rdata, size_t rlen, uint32_t base, + const mpd_t *src, uint32_t *status); + + +/******************************************************************************/ +/* Get attributes of a decimal */ +/******************************************************************************/ + +EXTINLINE mpd_ssize_t mpd_adjexp(const mpd_t *dec); +EXTINLINE mpd_ssize_t mpd_etiny(const mpd_context_t *ctx); +EXTINLINE mpd_ssize_t mpd_etop(const mpd_context_t *ctx); +EXTINLINE mpd_uint_t mpd_msword(const mpd_t *dec); +EXTINLINE int mpd_word_digits(mpd_uint_t word); +/* most significant digit of a word */ +EXTINLINE mpd_uint_t mpd_msd(mpd_uint_t word); +/* least significant digit of a word */ +EXTINLINE mpd_uint_t mpd_lsd(mpd_uint_t word); +/* coefficient size needed to store 'digits' */ +EXTINLINE mpd_ssize_t mpd_digits_to_size(mpd_ssize_t digits); +/* number of digits in the exponent, undefined for MPD_SSIZE_MIN */ +EXTINLINE int mpd_exp_digits(mpd_ssize_t exp); +EXTINLINE int mpd_iscanonical(const mpd_t *dec UNUSED); +EXTINLINE int mpd_isfinite(const mpd_t *dec); +EXTINLINE int mpd_isinfinite(const mpd_t *dec); +EXTINLINE int mpd_isinteger(const mpd_t *dec); +EXTINLINE int mpd_isnan(const mpd_t *dec); +EXTINLINE int mpd_isnegative(const mpd_t *dec); +EXTINLINE int mpd_ispositive(const mpd_t *dec); +EXTINLINE int mpd_isqnan(const mpd_t *dec); +EXTINLINE int mpd_issigned(const mpd_t *dec); +EXTINLINE int mpd_issnan(const mpd_t *dec); +EXTINLINE int mpd_isspecial(const mpd_t *dec); +EXTINLINE int mpd_iszero(const mpd_t *dec); +/* undefined for special numbers */ +EXTINLINE int mpd_iszerocoeff(const mpd_t *dec); +EXTINLINE int mpd_isnormal(const mpd_t *dec, const mpd_context_t *ctx); +EXTINLINE int mpd_issubnormal(const mpd_t *dec, const mpd_context_t *ctx); +/* odd word */ +EXTINLINE int mpd_isoddword(mpd_uint_t word); +/* odd coefficient */ +EXTINLINE int mpd_isoddcoeff(const mpd_t *dec); +/* odd decimal, only defined for integers */ +int mpd_isodd(const mpd_t *dec); +/* even decimal, only defined for integers */ +int mpd_iseven(const mpd_t *dec); +/* 0 if dec is positive, 1 if dec is negative */ +EXTINLINE uint8_t mpd_sign(const mpd_t *dec); +/* 1 if dec is positive, -1 if dec is negative */ +EXTINLINE int mpd_arith_sign(const mpd_t *dec); +EXTINLINE long mpd_radix(void); +EXTINLINE int mpd_isdynamic(mpd_t *dec); +EXTINLINE int mpd_isstatic(mpd_t *dec); +EXTINLINE int mpd_isdynamic_data(mpd_t *dec); +EXTINLINE int mpd_isstatic_data(mpd_t *dec); +EXTINLINE int mpd_isshared_data(mpd_t *dec); +EXTINLINE int mpd_isconst_data(mpd_t *dec); +EXTINLINE mpd_ssize_t mpd_trail_zeros(const mpd_t *dec); + + +/******************************************************************************/ +/* Set attributes of a decimal */ +/******************************************************************************/ + +/* set number of decimal digits in the coefficient */ +EXTINLINE void mpd_setdigits(mpd_t *result); +EXTINLINE void mpd_set_sign(mpd_t *result, uint8_t sign); +/* copy sign from another decimal */ +EXTINLINE void mpd_signcpy(mpd_t *result, mpd_t *a); +EXTINLINE void mpd_set_infinity(mpd_t *result); +EXTINLINE void mpd_set_qnan(mpd_t *result); +EXTINLINE void mpd_set_snan(mpd_t *result); +EXTINLINE void mpd_set_negative(mpd_t *result); +EXTINLINE void mpd_set_positive(mpd_t *result); +EXTINLINE void mpd_set_dynamic(mpd_t *result); +EXTINLINE void mpd_set_static(mpd_t *result); +EXTINLINE void mpd_set_dynamic_data(mpd_t *result); +EXTINLINE void mpd_set_static_data(mpd_t *result); +EXTINLINE void mpd_set_shared_data(mpd_t *result); +EXTINLINE void mpd_set_const_data(mpd_t *result); +EXTINLINE void mpd_clear_flags(mpd_t *result); +EXTINLINE void mpd_set_flags(mpd_t *result, uint8_t flags); +EXTINLINE void mpd_copy_flags(mpd_t *result, const mpd_t *a); + + +/******************************************************************************/ +/* Error Macros */ +/******************************************************************************/ + +enum {MPD_ERR_EXIT, MPD_ERR_WARN}; +#define mpd_err_fatal(format, ...) \ + mpd_err_doit(MPD_ERR_EXIT, "%s:%d: error: " format, __FILE__, __LINE__, ##__VA_ARGS__) +#define mpd_err_warn(format, ...) \ + mpd_err_doit(MPD_ERR_WARN, "%s:%d: error: " format, __FILE__, __LINE__, ##__VA_ARGS__) + +void mpd_err_doit(int action, const char *fmt, ...); + + +/******************************************************************************/ +/* Memory handling */ +/******************************************************************************/ + +extern void *(* mpd_mallocfunc)(size_t size); +extern void *(* mpd_callocfunc)(size_t nmemb, size_t size); +extern void *(* mpd_reallocfunc)(void *ptr, size_t size); +extern void (* mpd_free)(void *ptr); + +void *mpd_callocfunc_em(size_t nmemb, size_t size); + +void *mpd_alloc(size_t nmemb, size_t size); +void *mpd_calloc(size_t nmemb, size_t size); +void *mpd_realloc(void *ptr, size_t nmemb, size_t size, uint8_t *err); +void *mpd_sh_alloc(size_t struct_size, size_t nmemb, size_t size); +void *mpd_sh_calloc(size_t struct_size, size_t nmemb, size_t size); +void *mpd_sh_realloc(void *ptr, size_t struct_size, size_t nmemb, size_t size, uint8_t *err); + +mpd_t *mpd_qnew(void); +mpd_t *mpd_new(mpd_context_t *ctx); +mpd_t *mpd_qnew_size(mpd_ssize_t size); +void mpd_del(mpd_t *dec); + +void mpd_uint_zero(mpd_uint_t *dest, size_t len); +int mpd_qresize(mpd_t *result, mpd_ssize_t size, uint32_t *status); +int mpd_qresize_zero(mpd_t *result, mpd_ssize_t size, uint32_t *status); +void mpd_minalloc(mpd_t *result); + +int mpd_resize(mpd_t *result, mpd_ssize_t size, mpd_context_t *ctx); +int mpd_resize_zero(mpd_t *result, mpd_ssize_t size, mpd_context_t *ctx); + + +#ifdef __cplusplus +} /* END extern "C" */ +#endif + + +#endif /* MPDECIMAL32_H */ + + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal64.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal64.h Thu Jan 7 13:02:51 2010 @@ -0,0 +1,532 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#ifndef MPDECIMAL64_H +#define MPDECIMAL64_H + + +#ifdef __cplusplus +extern "C" { +#define __STDC_LIMIT_MACROS +#endif + +#include +#include +#include +#include +#include + + +#define EXTINLINE +#ifdef _MSC_VER + #include "vccompat.h" + #ifndef UNUSED + #define UNUSED + #endif + #undef EXTINLINE + #define EXTINLINE extern inline +#else + #include + #define __GNUC_STDC_INLINE__ + #define UNUSED __attribute__((unused)) +#endif + + +/******************************************************************************/ +/* Types for 64 bit architectures */ +/******************************************************************************/ + +/* types for modular and base arithmetic */ +#define MPD_UINT_MAX UINT64_MAX +#define MPD_BITS_PER_UINT 64 +typedef uint64_t mpd_uint_t; /* unsigned mod type */ + +/* type for exp, digits, len, prec */ +#define MPD_SSIZE_MAX INT64_MAX +#define MPD_SSIZE_MIN INT64_MIN +typedef int64_t mpd_ssize_t; +#define mpd_strtossize strtoll + +/* decimal arithmetic */ +#define MPD_RADIX 10000000000000000000ULL /* 10**19 */ +#define MPD_RDIGITS 19 +#define MPD_MAX_POW10 19 +#define MPD_EXPDIGITS 19 /* MPD_EXPDIGITS <= MPD_RDIGITS+1 */ + +#define MPD_MAXTRANSFORM_2N 4294967296ULL /* 2**32 */ +#define MPD_MAX_PREC 999999999999999999LL +#define MPD_MAX_PREC_LOG2 64 +#define MPD_ELIMIT 1000000000000000000LL +#define MPD_MAX_EMAX 999999999999999999LL /* ELIMIT-1 */ +#define MPD_MIN_EMIN (-999999999999999999LL) /* -EMAX */ +#define MPD_MIN_ETINY (MPD_MIN_EMIN-(MPD_MAX_PREC-1)) +#define MPD_EXP_INF (MPD_ELIMIT+1) +#define MPD_EXP_CLAMP (2*MPD_MIN_ETINY) + + +#if SIZE_MAX < MPD_SSIZE_MAX + #error "unsupported platform: need size_t >= mpd_ssize_t" +#endif +#if MPD_SSIZE_MAX > MPD_UINT_MAX + #error "unsupported platform: need mpd_ssize_t <= mpd_uint_t" +#endif + + +/******************************************************************************/ +/* Context */ +/******************************************************************************/ + +enum { + MPD_ROUND_UP, /* round away from 0 */ + MPD_ROUND_DOWN, /* round toward 0 (truncate) */ + MPD_ROUND_CEILING, /* round toward +infinity */ + MPD_ROUND_FLOOR, /* round toward -infinity */ + MPD_ROUND_HALF_UP, /* 0.5 is rounded up */ + MPD_ROUND_HALF_DOWN, /* 0.5 is rounded down */ + MPD_ROUND_HALF_EVEN, /* 0.5 is rounded to even */ + MPD_ROUND_05UP, /* round zero or five away from 0 */ + MPD_ROUND_TRUNC, /* truncate, but set infinity */ + MPD_ROUND_GUARD +}; + +enum { MPD_CLAMP_DEFAULT, MPD_CLAMP_IEEE_754, MPD_CLAMP_GUARD }; + +extern const char *mpd_round_string[MPD_ROUND_GUARD]; +extern const char *mpd_clamp_string[MPD_CLAMP_GUARD]; + + +typedef struct { + mpd_ssize_t prec; /* precision */ + mpd_ssize_t emax; /* max positive exp */ + mpd_ssize_t emin; /* min negative exp */ + uint32_t traps; /* status events that should be trapped */ + uint32_t status; /* status flags */ + uint32_t newtrap; /* set by mpd_addstatus_raise() */ + int round; /* rounding mode */ + int clamp; /* clamp mode */ + int allcr; /* all functions correctly rounded */ +} mpd_context_t; + + +/* Status flags */ +#define MPD_Clamped 0x00000001U +#define MPD_Conversion_syntax 0x00000002U +#define MPD_Division_by_zero 0x00000004U +#define MPD_Division_impossible 0x00000008U +#define MPD_Division_undefined 0x00000010U +#define MPD_Fpu_error 0x00000020U +#define MPD_Inexact 0x00000040U +#define MPD_Invalid_context 0x00000080U +#define MPD_Invalid_operation 0x00000100U +#define MPD_Malloc_error 0x00000200U +#define MPD_Not_implemented 0x00000400U +#define MPD_Overflow 0x00000800U +#define MPD_Rounded 0x00001000U +#define MPD_Subnormal 0x00002000U +#define MPD_Underflow 0x00004000U +#define MPD_Max_status (0x00008000U-1U) + +/* Conditions that result in an IEEE 754 exception */ +#define MPD_IEEE_Invalid_operation (MPD_Conversion_syntax | \ + MPD_Division_impossible | \ + MPD_Division_undefined | \ + MPD_Fpu_error | \ + MPD_Invalid_context | \ + MPD_Invalid_operation | \ + MPD_Malloc_error) \ + +/* Errors that require the result of an operation to be set to NaN */ +#define MPD_Errors (MPD_IEEE_Invalid_operation | \ + MPD_Division_by_zero) + +/* Default traps */ +#define MPD_Traps (MPD_IEEE_Invalid_operation | \ + MPD_Division_by_zero | \ + MPD_Overflow | \ + MPD_Underflow) + +/* Official name */ +#define MPD_Insufficient_storage MPD_Malloc_error + + +#define MPD_MINALLOC_MIN 2 +#define MPD_MINALLOC_MAX 64 +extern mpd_ssize_t MPD_MINALLOC; +extern void (* mpd_traphandler)(mpd_context_t *); + +void mpd_init(mpd_context_t *ctx, mpd_ssize_t prec); + +void mpd_maxcontext(mpd_context_t *ctx); +void mpd_defaultcontext(mpd_context_t *ctx); +void mpd_basiccontext(mpd_context_t *ctx); +void mpd_extcontext(mpd_context_t *ctx); + +mpd_ssize_t mpd_getprec(const mpd_context_t *ctx); +mpd_ssize_t mpd_getemax(const mpd_context_t *ctx); +mpd_ssize_t mpd_getemin(const mpd_context_t *ctx); +int mpd_getround(const mpd_context_t *ctx); +uint32_t mpd_gettraps(const mpd_context_t *ctx); +uint32_t mpd_getstatus(const mpd_context_t *ctx); +int mpd_getclamp(const mpd_context_t *ctx); +int mpd_getcr(const mpd_context_t *ctx); + +int mpd_qsetprec(mpd_context_t *ctx, mpd_ssize_t prec); +int mpd_qsetemax(mpd_context_t *ctx, mpd_ssize_t emax); +int mpd_qsetemin(mpd_context_t *ctx, mpd_ssize_t emin); +int mpd_qsetround(mpd_context_t *ctx, int newround); +int mpd_qsettraps(mpd_context_t *ctx, uint32_t flags); +int mpd_qsetstatus(mpd_context_t *ctx, uint32_t flags); +int mpd_qsetclamp(mpd_context_t *ctx, int c); +int mpd_qsetcr(mpd_context_t *ctx, int c); +void mpd_addstatus_raise(mpd_context_t *ctx, uint32_t flags); + + +/******************************************************************************/ +/* Decimal Arithmetic */ +/******************************************************************************/ + +/* mpd_t flags */ +#define MPD_POS ((uint8_t)0) +#define MPD_NEG ((uint8_t)1) +#define MPD_INF ((uint8_t)2) +#define MPD_NAN ((uint8_t)4) +#define MPD_SNAN ((uint8_t)8) +#define MPD_SPECIAL (MPD_INF|MPD_NAN|MPD_SNAN) +#define MPD_STATIC ((uint8_t)16) +#define MPD_STATIC_DATA ((uint8_t)32) +#define MPD_SHARED_DATA ((uint8_t)64) +#define MPD_CONST_DATA ((uint8_t)128) +#define MPD_DATAFLAGS (MPD_STATIC_DATA|MPD_SHARED_DATA|MPD_CONST_DATA) + +/* mpd_t */ +typedef struct { + uint8_t flags; + mpd_ssize_t exp; + mpd_ssize_t digits; + mpd_ssize_t len; + mpd_ssize_t alloc; + mpd_uint_t *data; +} mpd_t; + + +typedef unsigned char uchar; +extern mpd_t mpd_ln10; + + +/******************************************************************************/ +/* Quiet, thread-safe functions */ +/******************************************************************************/ + +/* format specification */ +typedef struct { + mpd_ssize_t min_width; /* minimum field width */ + mpd_ssize_t prec; /* fraction digits or significant digits */ + char type; /* conversion specifier */ + char align; /* alignment */ + char sign; /* sign printing/alignment */ + char fill[5]; /* fill character */ + const char *dot; /* decimal point */ + const char *sep; /* thousands separator */ + const char *grouping; /* grouping of digits */ +} mpd_spec_t; + +/* output to a string */ +char *mpd_to_sci(const mpd_t *dec, int fmt); +char *mpd_to_eng(const mpd_t *dec, int fmt); +int mpd_parse_fmt_str(mpd_spec_t *spec, const char *fmt); +char * mpd_qformat_spec(const mpd_t *dec, mpd_spec_t *spec, const mpd_context_t *ctx, uint32_t *status); +char *mpd_qformat(const mpd_t *dec, const char *fmt, const mpd_context_t *ctx, uint32_t *status); + +#define MPD_NUM_FLAGS 15 +#define MPD_MAX_FLAG_STRING 208 +#define MPD_MAX_FLAG_LIST (MPD_MAX_FLAG_STRING+18) +#define MPD_MAX_SIGNAL_LIST 121 +int mpd_snprint_flags(char *dest, int nmemb, uint32_t flags); +int mpd_lsnprint_flags(char *dest, int nmemb, uint32_t flags, const char *flag_string[]); +int mpd_lsnprint_signals(char *dest, int nmemb, uint32_t flags, const char *signal_string[]); + +/* output to a file */ +void mpd_fprint(FILE *file, const mpd_t *dec); +void mpd_print(const mpd_t *dec); + +/* assignment from a string */ +void mpd_qset_string(mpd_t *dec, const char *s, const mpd_context_t *ctx, uint32_t *status); + +/* set to NaN with error flags */ +void mpd_seterror(mpd_t *result, uint32_t flags, uint32_t *status); +/* set a special with sign and type */ +void mpd_setspecial(mpd_t *dec, uint8_t sign, uint8_t type); +/* set coefficient to zero or all nines */ +void mpd_zerocoeff(mpd_t *result); +void mpd_qmaxcoeff(mpd_t *result, const mpd_context_t *ctx, uint32_t *status); + +/* quietly assign a C integer type to an mpd_t */ +void mpd_qset_ssize(mpd_t *result, mpd_ssize_t a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qset_i32(mpd_t *result, int32_t a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qset_i64(mpd_t *result, int64_t a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qset_uint(mpd_t *result, mpd_uint_t a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qset_u32(mpd_t *result, uint32_t a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qset_u64(mpd_t *result, uint64_t a, const mpd_context_t *ctx, uint32_t *status); + +/* quietly assign a C integer type to an mpd_t with a static coefficient */ +void mpd_qsset_ssize(mpd_t *result, mpd_ssize_t a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsset_i32(mpd_t *result, int32_t a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsset_i64(mpd_t *result, int64_t a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsset_uint(mpd_t *result, mpd_uint_t a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsset_u32(mpd_t *result, uint32_t a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsset_u64(mpd_t *result, uint64_t a, const mpd_context_t *ctx, uint32_t *status); + +/* quietly get a C integer type from an mpd_t */ +mpd_ssize_t mpd_qget_ssize(const mpd_t *dec, uint32_t *status); +int64_t mpd_qget_i64(const mpd_t *dec, uint32_t *status); +mpd_uint_t mpd_qget_uint(const mpd_t *dec, uint32_t *status); +uint64_t mpd_qget_u64(const mpd_t *dec, uint32_t *status); + + +/* quiet functions */ +int mpd_qcheck_nan(mpd_t *nanresult, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +int mpd_qcheck_nans(mpd_t *nanresult, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qfinalize(mpd_t *result, const mpd_context_t *ctx, uint32_t *status); + +const char * mpd_class(const mpd_t *a, const mpd_context_t *ctx); + +int mpd_qcopy(mpd_t *result, const mpd_t *a, uint32_t *status); +mpd_t *mpd_qncopy(const mpd_t *a); +int mpd_qcopy_abs(mpd_t *result, const mpd_t *a, uint32_t *status); +int mpd_qcopy_negate(mpd_t *result, const mpd_t *a, uint32_t *status); +int mpd_qcopy_sign(mpd_t *result, const mpd_t *a, const mpd_t *b, uint32_t *status); + +void mpd_qand(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qinvert(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qlogb(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qor(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qscaleb(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qxor(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +int mpd_same_quantum(const mpd_t *a, const mpd_t *b); + +void mpd_qrotate(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +int mpd_qshiftl(mpd_t *result, const mpd_t *a, mpd_ssize_t n, uint32_t *status); +mpd_uint_t mpd_qshiftr(mpd_t *result, const mpd_t *a, mpd_ssize_t n, uint32_t *status); +mpd_uint_t mpd_qshiftr_inplace(mpd_t *result, mpd_ssize_t n); +void mpd_qshift(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qshiftn(mpd_t *result, const mpd_t *a, mpd_ssize_t n, const mpd_context_t *ctx, uint32_t *status); + +int mpd_qcmp(const mpd_t *a, const mpd_t *b, uint32_t *status); +int mpd_qcompare(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +int mpd_qcompare_signal(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +int mpd_cmp_total(const mpd_t *a, const mpd_t *b); +int mpd_cmp_total_mag(const mpd_t *a, const mpd_t *b); +int mpd_compare_total(mpd_t *result, const mpd_t *a, const mpd_t *b); +int mpd_compare_total_mag(mpd_t *result, const mpd_t *a, const mpd_t *b); + +void mpd_qround_to_intx(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qround_to_int(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qfloor(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qceil(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); + +void mpd_qabs(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qmax(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qmax_mag(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qmin(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qmin_mag(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qminus(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qplus(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qnext_minus(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qnext_plus(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qnext_toward(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qquantize(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qrescale(mpd_t *result, const mpd_t *a, mpd_ssize_t exp, const mpd_context_t *ctx, uint32_t *status); +void mpd_qreduce(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qadd(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qadd_ssize(mpd_t *result, const mpd_t *a, mpd_ssize_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qadd_i32(mpd_t *result, const mpd_t *a, int32_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qadd_i64(mpd_t *result, const mpd_t *a, int64_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qadd_uint(mpd_t *result, const mpd_t *a, mpd_uint_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qadd_u32(mpd_t *result, const mpd_t *a, uint32_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qadd_u64(mpd_t *result, const mpd_t *a, uint64_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsub(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsub_ssize(mpd_t *result, const mpd_t *a, mpd_ssize_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsub_i32(mpd_t *result, const mpd_t *a, int32_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsub_i64(mpd_t *result, const mpd_t *a, int64_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsub_uint(mpd_t *result, const mpd_t *a, mpd_uint_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsub_u32(mpd_t *result, const mpd_t *a, uint32_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsub_u64(mpd_t *result, const mpd_t *a, uint64_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qmul(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qmul_ssize(mpd_t *result, const mpd_t *a, mpd_ssize_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qmul_i32(mpd_t *result, const mpd_t *a, int32_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qmul_i64(mpd_t *result, const mpd_t *a, int64_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qmul_uint(mpd_t *result, const mpd_t *a, mpd_uint_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qmul_u32(mpd_t *result, const mpd_t *a, uint32_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qmul_u64(mpd_t *result, const mpd_t *a, uint64_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qfma(mpd_t *result, const mpd_t *a, const mpd_t *b, const mpd_t *c, const mpd_context_t *ctx, uint32_t *status); +void mpd_qdiv(mpd_t *q, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qdiv_ssize(mpd_t *result, const mpd_t *a, mpd_ssize_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qdiv_i32(mpd_t *result, const mpd_t *a, int32_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qdiv_i64(mpd_t *result, const mpd_t *a, int64_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qdiv_uint(mpd_t *result, const mpd_t *a, mpd_uint_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qdiv_u32(mpd_t *result, const mpd_t *a, uint32_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qdiv_u64(mpd_t *result, const mpd_t *a, uint64_t b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qdivint(mpd_t *q, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qrem(mpd_t *r, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qrem_near(mpd_t *r, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qdivmod(mpd_t *q, mpd_t *r, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qpow(mpd_t *result, const mpd_t *base, const mpd_t *exp, const mpd_context_t *ctx, uint32_t *status); +void mpd_qpowmod(mpd_t *result, const mpd_t *base, const mpd_t *exp, const mpd_t *mod, const mpd_context_t *ctx, uint32_t *status); +void mpd_qexp(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_update_ln10(mpd_ssize_t prec, uint32_t *status); +void mpd_qln(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qlog10(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qsqrt(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qinvroot(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status); + + +size_t mpd_sizeinbase(mpd_t *a, uint32_t base); +int mpd_qimport_u16(mpd_t *result, const uint16_t *srcdata, size_t srclen, + uint8_t srcsign, uint32_t base, + const mpd_context_t *ctx, uint32_t *status); +int mpd_qimport_u32(mpd_t *result, const uint32_t *srcdata, size_t srclen, + uint8_t srcsign, uint32_t base, + const mpd_context_t *ctx, uint32_t *status); +size_t mpd_qexport_u16(uint16_t *rdata, size_t rlen, uint32_t base, + const mpd_t *src, uint32_t *status); +size_t mpd_qexport_u32(uint32_t *rdata, size_t rlen, uint32_t base, + const mpd_t *src, uint32_t *status); + + +/******************************************************************************/ +/* Get attributes of a decimal */ +/******************************************************************************/ + +EXTINLINE mpd_ssize_t mpd_adjexp(const mpd_t *dec); +EXTINLINE mpd_ssize_t mpd_etiny(const mpd_context_t *ctx); +EXTINLINE mpd_ssize_t mpd_etop(const mpd_context_t *ctx); +EXTINLINE mpd_uint_t mpd_msword(const mpd_t *dec); +EXTINLINE int mpd_word_digits(mpd_uint_t word); +/* most significant digit of a word */ +EXTINLINE mpd_uint_t mpd_msd(mpd_uint_t word); +/* least significant digit of a word */ +EXTINLINE mpd_uint_t mpd_lsd(mpd_uint_t word); +/* coefficient size needed to store 'digits' */ +EXTINLINE mpd_ssize_t mpd_digits_to_size(mpd_ssize_t digits); +/* number of digits in the exponent, undefined for MPD_SSIZE_MIN */ +EXTINLINE int mpd_exp_digits(mpd_ssize_t exp); +EXTINLINE int mpd_iscanonical(const mpd_t *dec UNUSED); +EXTINLINE int mpd_isfinite(const mpd_t *dec); +EXTINLINE int mpd_isinfinite(const mpd_t *dec); +EXTINLINE int mpd_isinteger(const mpd_t *dec); +EXTINLINE int mpd_isnan(const mpd_t *dec); +EXTINLINE int mpd_isnegative(const mpd_t *dec); +EXTINLINE int mpd_ispositive(const mpd_t *dec); +EXTINLINE int mpd_isqnan(const mpd_t *dec); +EXTINLINE int mpd_issigned(const mpd_t *dec); +EXTINLINE int mpd_issnan(const mpd_t *dec); +EXTINLINE int mpd_isspecial(const mpd_t *dec); +EXTINLINE int mpd_iszero(const mpd_t *dec); +/* undefined for special numbers */ +EXTINLINE int mpd_iszerocoeff(const mpd_t *dec); +EXTINLINE int mpd_isnormal(const mpd_t *dec, const mpd_context_t *ctx); +EXTINLINE int mpd_issubnormal(const mpd_t *dec, const mpd_context_t *ctx); +/* odd word */ +EXTINLINE int mpd_isoddword(mpd_uint_t word); +/* odd coefficient */ +EXTINLINE int mpd_isoddcoeff(const mpd_t *dec); +/* odd decimal, only defined for integers */ +int mpd_isodd(const mpd_t *dec); +/* even decimal, only defined for integers */ +int mpd_iseven(const mpd_t *dec); +/* 0 if dec is positive, 1 if dec is negative */ +EXTINLINE uint8_t mpd_sign(const mpd_t *dec); +/* 1 if dec is positive, -1 if dec is negative */ +EXTINLINE int mpd_arith_sign(const mpd_t *dec); +EXTINLINE long mpd_radix(void); +EXTINLINE int mpd_isdynamic(mpd_t *dec); +EXTINLINE int mpd_isstatic(mpd_t *dec); +EXTINLINE int mpd_isdynamic_data(mpd_t *dec); +EXTINLINE int mpd_isstatic_data(mpd_t *dec); +EXTINLINE int mpd_isshared_data(mpd_t *dec); +EXTINLINE int mpd_isconst_data(mpd_t *dec); +EXTINLINE mpd_ssize_t mpd_trail_zeros(const mpd_t *dec); + + +/******************************************************************************/ +/* Set attributes of a decimal */ +/******************************************************************************/ + +/* set number of decimal digits in the coefficient */ +EXTINLINE void mpd_setdigits(mpd_t *result); +EXTINLINE void mpd_set_sign(mpd_t *result, uint8_t sign); +/* copy sign from another decimal */ +EXTINLINE void mpd_signcpy(mpd_t *result, mpd_t *a); +EXTINLINE void mpd_set_infinity(mpd_t *result); +EXTINLINE void mpd_set_qnan(mpd_t *result); +EXTINLINE void mpd_set_snan(mpd_t *result); +EXTINLINE void mpd_set_negative(mpd_t *result); +EXTINLINE void mpd_set_positive(mpd_t *result); +EXTINLINE void mpd_set_dynamic(mpd_t *result); +EXTINLINE void mpd_set_static(mpd_t *result); +EXTINLINE void mpd_set_dynamic_data(mpd_t *result); +EXTINLINE void mpd_set_static_data(mpd_t *result); +EXTINLINE void mpd_set_shared_data(mpd_t *result); +EXTINLINE void mpd_set_const_data(mpd_t *result); +EXTINLINE void mpd_clear_flags(mpd_t *result); +EXTINLINE void mpd_set_flags(mpd_t *result, uint8_t flags); +EXTINLINE void mpd_copy_flags(mpd_t *result, const mpd_t *a); + + +/******************************************************************************/ +/* Error Macros */ +/******************************************************************************/ + +enum {MPD_ERR_EXIT, MPD_ERR_WARN}; +#define mpd_err_fatal(format, ...) \ + mpd_err_doit(MPD_ERR_EXIT, "%s:%d: error: " format, __FILE__, __LINE__, ##__VA_ARGS__) +#define mpd_err_warn(format, ...) \ + mpd_err_doit(MPD_ERR_WARN, "%s:%d: error: " format, __FILE__, __LINE__, ##__VA_ARGS__) + +void mpd_err_doit(int action, const char *fmt, ...); + + +/******************************************************************************/ +/* Memory handling */ +/******************************************************************************/ + +extern void *(* mpd_mallocfunc)(size_t size); +extern void *(* mpd_callocfunc)(size_t nmemb, size_t size); +extern void *(* mpd_reallocfunc)(void *ptr, size_t size); +extern void (* mpd_free)(void *ptr); + +void *mpd_callocfunc_em(size_t nmemb, size_t size); + +void *mpd_alloc(size_t nmemb, size_t size); +void *mpd_calloc(size_t nmemb, size_t size); +void *mpd_realloc(void *ptr, size_t nmemb, size_t size, uint8_t *err); +void *mpd_sh_alloc(size_t struct_size, size_t nmemb, size_t size); +void *mpd_sh_calloc(size_t struct_size, size_t nmemb, size_t size); +void *mpd_sh_realloc(void *ptr, size_t struct_size, size_t nmemb, size_t size, uint8_t *err); + +mpd_t *mpd_qnew(void); +mpd_t *mpd_new(mpd_context_t *ctx); +mpd_t *mpd_qnew_size(mpd_ssize_t size); +void mpd_del(mpd_t *dec); + +void mpd_uint_zero(mpd_uint_t *dest, size_t len); +int mpd_qresize(mpd_t *result, mpd_ssize_t size, uint32_t *status); +int mpd_qresize_zero(mpd_t *result, mpd_ssize_t size, uint32_t *status); +void mpd_minalloc(mpd_t *result); + +int mpd_resize(mpd_t *result, mpd_ssize_t size, mpd_context_t *ctx); +int mpd_resize_zero(mpd_t *result, mpd_ssize_t size, mpd_context_t *ctx); + + +#ifdef __cplusplus +} /* END extern "C" */ +#endif + + +#endif /* MPDECIMAL64_H */ + + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/mptypes.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/mptypes.h Thu Jan 7 13:02:51 2010 @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#ifndef MPTYPES_H +#define MPTYPES_H + + +#if defined(CONFIG_64) + #if defined(_MSC_VER) + #define PRI_size_t "llu" + #define PRI_mpd_ssize_t "lld" + #else + #define PRI_size_t "lu" + #define PRI_mpd_ssize_t "ld" + #endif + #define PRI_time_t "ld" + #define CONV_mpd_ssize_t "L" + #define ONE_UM 1ULL +#elif defined(CONFIG_32) + #if defined (__OpenBSD__) + #define PRI_size_t "lu" + #define PRI_mpd_ssize_t "ld" + #define PRI_time_t "d" + #else + #define PRI_size_t "u" + #define PRI_mpd_ssize_t "d" + #define PRI_time_t "ld" + #endif + #define CONV_mpd_ssize_t "l" + #define ONE_UM 1UL +#else + #error "define CONFIG_64 or CONFIG_32" +#endif + + +#endif + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/numbertheory.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/numbertheory.c Thu Jan 7 13:02:51 2010 @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include "bits.h" +#include "mpdecimal.h" +#include "umodarith.h" +#include "numbertheory.h" + + +/* transform kernel */ +mpd_uint_t +_mpd_getkernel(mpd_uint_t n, int sign, int modnum) +{ + mpd_uint_t umod, p, r, xi; +#ifdef PPRO + double dmod; + uint32_t dinvmod[3]; +#endif + + SETMODULUS(modnum); + r = mpd_roots[modnum]; + p = umod; + xi = (p-1) / n; + + if (sign == -1) + return POWMOD(r, (p-1-xi)); + else + return POWMOD(r, xi); +} + +/* initialize transform parameters */ +struct fnt_params * +_mpd_init_fnt_params(size_t n, int sign, int modnum) +{ + struct fnt_params *tparams; + mpd_uint_t umod; +#ifdef PPRO + double dmod; + uint32_t dinvmod[3]; +#endif + mpd_uint_t kernel, imag, w; + mpd_uint_t i; + size_t nhalf; + + assert(ispower2(n)); + assert(sign == -1 || sign == 1); + assert(P1 <= modnum && modnum <= P3); + + nhalf = n/2; + tparams = mpd_sh_alloc(sizeof *tparams, nhalf, sizeof (mpd_uint_t)); + if (tparams == NULL) { + return NULL; + } + + SETMODULUS(modnum); + kernel = _mpd_getkernel(n, sign, modnum); + imag = _mpd_getkernel(4, -sign, modnum); + + tparams->modnum = modnum; + tparams->modulus = umod; + tparams->imag = imag; + tparams->kernel = kernel; + + w = 1; + for (i = 0; i < nhalf; i++) { + tparams->wtable[i] = w; + w = MULMOD(w, kernel); + } + + return tparams; +} + +/* initialize wtable of size three */ +void +_mpd_init_w3table(mpd_uint_t w3table[3], int sign, int modnum) +{ + mpd_uint_t umod; +#ifdef PPRO + double dmod; + uint32_t dinvmod[3]; +#endif + mpd_uint_t kernel; + + SETMODULUS(modnum); + kernel = _mpd_getkernel(3, sign, modnum); + + w3table[0] = 1; + w3table[1] = kernel; + w3table[2] = POWMOD(kernel, 2); +} + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/numbertheory.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/numbertheory.h Thu Jan 7 13:02:51 2010 @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#ifndef NUMBER_THEORY_H +#define NUMBER_THEORY_H + + +#include "constants.h" +#include "mpdecimal.h" + + +/* transform parameters */ +struct fnt_params { + int modnum; + mpd_uint_t modulus; + mpd_uint_t imag; + mpd_uint_t kernel; + mpd_uint_t wtable[]; +}; + + +mpd_uint_t _mpd_getkernel(mpd_uint_t n, int sign, int modnum); +struct fnt_params *_mpd_init_fnt_params(size_t n, int sign, int modnum); +void _mpd_init_w3table(mpd_uint_t w3table[3], int sign, int modnum); + + +static inline void +std_setmodulus(int modnum, mpd_uint_t *umod) +{ + *umod = mpd_moduli[modnum]; +} + + +#ifdef PPRO +static inline void +ppro_setmodulus(int modnum, mpd_uint_t *umod, double *dmod, uint32_t dinvmod[3]) +{ + *dmod = *umod = mpd_moduli[modnum]; + dinvmod[0] = mpd_invmoduli[modnum][0]; + dinvmod[1] = mpd_invmoduli[modnum][1]; + dinvmod[2] = mpd_invmoduli[modnum][2]; +} +#endif + + +#endif + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/sixstep.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/sixstep.c Thu Jan 7 13:02:51 2010 @@ -0,0 +1,176 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include +#include "bits.h" +#include "difradix2.h" +#include "mpdecimal.h" +#include "mptypes.h" +#include "numbertheory.h" +#include "transpose.h" +#include "umodarith.h" +#include "sixstep.h" + + +/* + * A variant of the six-step algorithm from: + * + * David H. Bailey: FFTs in External or Hierarchical Memory, Journal of + * Supercomputing, vol. 4, no. 1 (March 1990), p. 23-35. + * + * URL: http://crd.lbl.gov/~dhbailey/dhbpapers/ + */ + + +/* forward transform with sign = -1 */ +int +six_step_fnt(mpd_uint_t *a, size_t n, int modnum, int ordered) +{ + struct fnt_params *tparams; + size_t log2n, C, R; + mpd_uint_t kernel; + mpd_uint_t umod; +#ifdef PPRO + double dmod; + uint32_t dinvmod[3]; +#endif + mpd_uint_t *x, w0, w1, wstep; + size_t i, k; + + + assert(ispower2(n)); + assert(n >= 16); + assert(n <= MPD_MAXTRANSFORM_2N); + + log2n = BSR(n); + C = (ONE_UM << (log2n / 2)); /* number of columns */ + R = (ONE_UM << (log2n - (log2n / 2))); /* number of rows */ + + + transpose_pow2(a, R, C); /* view a as a RxC matrix, tranpose */ + + if ((tparams = _mpd_init_fnt_params(R, -1, modnum)) == NULL) { + return 0; + } + for (x = a; x < a+n; x += R) { + fnt_dif2(x, R, tparams); + } + + transpose_pow2(a, C, R); + + + SETMODULUS(modnum); + kernel = _mpd_getkernel(n, -1, modnum); + for (i = 1; i < R; i++) { + w0 = 1; + w1 = POWMOD(kernel, i); + wstep = MULMOD(w1, w1); + for (k = 0; k < C; k += 2) { + mpd_uint_t x0 = a[i*C+k]; + mpd_uint_t x1 = a[i*C+k+1]; + MULMOD2(&x0, w0, &x1, w1); + MULMOD2C(&w0, &w1, wstep); + a[i*C+k] = x0; + a[i*C+k+1] = x1; + } + } + + + if (C != R) { + mpd_free(tparams); + if ((tparams = _mpd_init_fnt_params(C, -1, modnum)) == NULL) { + return 0; + } + } + for (x = a; x < a+n; x += C) { + fnt_dif2(x, C, tparams); + } + mpd_free(tparams); + + + if (ordered) { + transpose_pow2(a, R, C); + } + + return 1; +} + + +/* reverse transform, sign = 1 */ +int +inv_six_step_fnt(mpd_uint_t *a, size_t n, int modnum, int ordered) +{ + struct fnt_params *tparams; + size_t log2n, C, R; + mpd_uint_t kernel; + mpd_uint_t umod; +#ifdef PPRO + double dmod; + uint32_t dinvmod[3]; +#endif + mpd_uint_t *x, w0, w1, wstep; + size_t i, k; + + + assert(ispower2(n)); + assert(n >= 16); + assert(n <= MPD_MAXTRANSFORM_2N); + + log2n = BSR(n); + C = (ONE_UM << (log2n / 2)); /* number of columns */ + R = (ONE_UM << (log2n - (log2n / 2))); /* number of rows */ + + + if (ordered) { + transpose_pow2(a, C, R); + } + + if ((tparams = _mpd_init_fnt_params(C, 1, modnum)) == NULL) { + return 0; + } + for (x = a; x < a+n; x += C) { + fnt_dif2(x, C, tparams); + } + + transpose_pow2(a, R, C); + + + SETMODULUS(modnum); + kernel = _mpd_getkernel(n, 1, modnum); + for (i = 1; i < C; i++) { + w0 = 1; + w1 = POWMOD(kernel, i); + wstep = MULMOD(w1, w1); + for (k = 0; k < R; k += 2) { + mpd_uint_t x0 = a[i*R+k]; + mpd_uint_t x1 = a[i*R+k+1]; + MULMOD2(&x0, w0, &x1, w1); + MULMOD2C(&w0, &w1, wstep); + a[i*R+k] = x0; + a[i*R+k+1] = x1; + } + } + + + if (R != C) { + mpd_free(tparams); + if ((tparams = _mpd_init_fnt_params(R, 1, modnum)) == NULL) { + return 0; + } + } + for (x = a; x < a+n; x += R) { + fnt_dif2(x, R, tparams); + } + mpd_free(tparams); + + transpose_pow2(a, C, R); + + return 1; +} + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/sixstep.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/sixstep.h Thu Jan 7 13:02:51 2010 @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#ifndef SIX_STEP_H +#define SIX_STEP_H + + +#include +#include "mpdecimal.h" + + +int six_step_fnt(mpd_uint_t *a, size_t n, int modnum, int ordered); +int inv_six_step_fnt(mpd_uint_t *a, size_t n, int modnum, int ordered); + + +#endif Added: python/branches/py3k-cdecimal/Modules/cdecimal/transpose.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/transpose.c Thu Jan 7 13:02:51 2010 @@ -0,0 +1,250 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include +#include +#include +#include "bits.h" +#include "constants.h" +#include "mpdecimal.h" +#include "typearith.h" +#include "transpose.h" + + +#define BUFSIZE 4096 +#define SIDE 128 + + +/* Definition of the matrix transpose */ +void +std_trans(mpd_uint_t dest[], mpd_uint_t src[], size_t rows, size_t cols) +{ + size_t idest, isrc; + size_t r, c; + + for (r = 0; r < rows; r++) { + isrc = r * cols; + idest = r; + for (c = 0; c < cols; c++) { + dest[idest] = src[isrc]; + isrc += 1; + idest += rows; + } + } +} + +/* + * Swap half-rows of 2^n * (2*2^n) matrix. + * FORWARD_CYCLE: even/odd permutation of the halfrows. + * BACKWARD_CYCLE: reverse the even/odd permutation. + */ +static int +swap_halfrows_pow2(mpd_uint_t *matrix, size_t rows, size_t cols, int dir) +{ + mpd_uint_t buf1[BUFSIZE]; + mpd_uint_t buf2[BUFSIZE]; + mpd_uint_t *readbuf, *writebuf, *hp; + size_t *done, dbits; + size_t b = BUFSIZE, stride; + size_t hn, hmax; /* halfrow number */ + size_t m, r=0; + size_t offset; + size_t next; + + + assert(cols == mul_size_t(2, rows)); + + if (dir == FORWARD_CYCLE) { + r = rows; + } + else if (dir == BACKWARD_CYCLE) { + r = 2; + } + else { + mpd_err_fatal("swap_halfrows_pow2: illegal argument for \"dir\""); + } + + m = cols - 1; + hmax = rows; /* cycles start at odd halfrows */ + dbits = 8 * sizeof *done; + if ((done = mpd_calloc(hmax/(sizeof *done) + 1, sizeof *done)) == NULL) { + return 0; + } + + for (hn = 1; hn <= hmax; hn += 2) { + + if (done[hn/dbits] & mpd_bits[hn%dbits]) { + continue; + } + + readbuf = buf1; writebuf = buf2; + + for (offset = 0; offset < cols/2; offset += b) { + + stride = (offset + b < cols/2) ? b : cols/2-offset; + + hp = matrix + hn*cols/2; + memcpy(readbuf, hp+offset, stride*(sizeof *readbuf)); + pointerswap(&readbuf, &writebuf); + + next = mulmod_size_t(hn, r, m); + hp = matrix + next*cols/2; + + while (next != hn) { + + memcpy(readbuf, hp+offset, stride*(sizeof *readbuf)); + memcpy(hp+offset, writebuf, stride*(sizeof *writebuf)); + pointerswap(&readbuf, &writebuf); + + done[next/dbits] |= mpd_bits[next%dbits]; + + next = mulmod_size_t(next, r, m); + hp = matrix + next*cols/2; + + } + + memcpy(hp+offset, writebuf, stride*(sizeof *writebuf)); + + done[hn/dbits] |= mpd_bits[hn%dbits]; + } + } + + mpd_free(done); + return 1; +} + +/* In-place transpose of a square matrix */ +static inline void +squaretrans(mpd_uint_t *buf, size_t cols) +{ + mpd_uint_t tmp; + size_t idest, isrc; + size_t r, c; + + for (r = 0; r < cols; r++) { + c = r+1; + isrc = r*cols + c; + idest = c*cols + r; + for (c = r+1; c < cols; c++) { + tmp = buf[isrc]; + buf[isrc] = buf[idest]; + buf[idest] = tmp; + isrc += 1; + idest += cols; + } + } +} + +/* + * Transpose 2^n * 2^n matrix. For cache efficiency, the matrix is split into + * square blocks with side length 'SIDE'. First, the blocks are transposed, + * then a square tranposition is done on each individual block. + */ +static void +squaretrans_pow2(mpd_uint_t *matrix, size_t size) +{ + mpd_uint_t buf1[SIDE*SIDE]; + mpd_uint_t buf2[SIDE*SIDE]; + mpd_uint_t *to, *from; + size_t b = size; + size_t r, c; + size_t i; + + while (b > SIDE) b >>= 1; + + for (r = 0; r < size; r += b) { + + for (c = r; c < size; c += b) { + + from = matrix + r*size + c; + to = buf1; + for (i = 0; i < b; i++) { + memcpy(to, from, b*(sizeof *to)); + from += size; + to += b; + } + squaretrans(buf1, b); + + if (r == c) { + to = matrix + r*size + c; + from = buf1; + for (i = 0; i < b; i++) { + memcpy(to, from, b*(sizeof *to)); + from += b; + to += size; + } + continue; + } + else { + from = matrix + c*size + r; + to = buf2; + for (i = 0; i < b; i++) { + memcpy(to, from, b*(sizeof *to)); + from += size; + to += b; + } + squaretrans(buf2, b); + + to = matrix + c*size + r; + from = buf1; + for (i = 0; i < b; i++) { + memcpy(to, from, b*(sizeof *to)); + from += b; + to += size; + } + + to = matrix + r*size + c; + from = buf2; + for (i = 0; i < b; i++) { + memcpy(to, from, b*(sizeof *to)); + from += b; + to += size; + } + } + } + } + +} + +/* + * In-place transposition of a 2^n x 2^n or a 2^n x (2*2^n) + * or a (2*2^n) x 2^n matrix. + */ +int +transpose_pow2(mpd_uint_t *matrix, size_t rows, size_t cols) +{ + size_t size = mul_size_t(rows, cols); + + assert(ispower2(rows)); + assert(ispower2(cols)); + + if (cols == rows) { + squaretrans_pow2(matrix, rows); + } + else if (cols == mul_size_t(2, rows)) { + if (!swap_halfrows_pow2(matrix, rows, cols, FORWARD_CYCLE)) { + return 0; + } + squaretrans_pow2(matrix, rows); + squaretrans_pow2(matrix+(size/2), rows); + } + else if (rows == mul_size_t(2, cols)) { + squaretrans_pow2(matrix, cols); + squaretrans_pow2(matrix+(size/2), cols); + if (!swap_halfrows_pow2(matrix, cols, rows, BACKWARD_CYCLE)) { + return 0; + } + } + else { + mpd_err_fatal("transpose_pow2: illegal matrix size"); + } + + return 1; +} + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/transpose.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/transpose.h Thu Jan 7 13:02:51 2010 @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#ifndef TRANSPOSE_H +#define TRANSPOSE_H + + +#include +#include "mpdecimal.h" + + +enum {FORWARD_CYCLE, BACKWARD_CYCLE}; + + +void std_trans(mpd_uint_t dest[], mpd_uint_t src[], size_t rows, size_t cols); +int transpose_pow2(mpd_uint_t *matrix, size_t rows, size_t cols); +void transpose_3xpow2(mpd_uint_t *matrix, size_t rows, size_t cols); + + +static inline void pointerswap(mpd_uint_t **a, mpd_uint_t **b) +{ + mpd_uint_t *tmp; + + tmp = *b; + *b = *a; + *a = tmp; +} + + +#endif Added: python/branches/py3k-cdecimal/Modules/cdecimal/transpose3.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/transpose3.c Thu Jan 7 13:02:51 2010 @@ -0,0 +1,519 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include +#include +#include "bits.h" +#include "constants.h" +#include "mpdecimal.h" +#include "typearith.h" +#include "transpose.h" + + +/* + * In situ transposition of a 3 x 2^n or 2^n x 3 matrix. For efficient memory + * access, we split the transposition into two steps. In the 3 x 2^n case, we + * first perform a block matrix transpose on blocks of size BMEMB followed by + * a series of 3 x BMEMB transposes. Example with BMEMB = 4: + * + * Input 3 x 2 block matrix: + * + * 0 1 2 3 4 5 6 7 + * 8 9 10 11 12 13 14 15 + * 16 17 18 19 20 21 22 23 + * + * After the block transpose: + * + * 0 1 2 3 8 9 10 11 16 17 18 19 + * 4 5 6 7 12 13 14 15 20 21 22 23 + * + * After performing two 3 x BMEMB transpositions: + * + * 0 8 16 + * 1 9 17 + * 2 10 18 + * (...) + * + * In the 2^n x 3 case, we simply do the steps in reverse order. + * + * For efficient in-place block transposition, we swap the blocks cyclically. + * The starting points of the distinct cycles are precalculated. The arrays + * below contain the block numbers, which have to be multiplied by BMEMB to + * get the actual addresses. In an m x n block matrix, the next block number t + * as a function of the current block number s is calculated by: + * + * t = m*s % (m*n - 1) + * + * The inverse of the transpose is: + * + * t = n*s % (m*n - 1) + * + * (This does not apply to the last block, which is not moved anyway.) + * + */ + + +/* Cycle start points */ +static const size_t c0[] = {SIZE_MAX}; /* 2^0 blocks */ +static const size_t c1[] = {1, SIZE_MAX}; /* 2^1 blocks */ +static const size_t c2[] = {1, 2, SIZE_MAX}; /* 2^2 blocks */ +static const size_t c3[] = {1, 5, SIZE_MAX}; /* (...) */ +static const size_t c4[] = {1, 5, SIZE_MAX}; +static const size_t c5[] = {1, 5, 7, 19, SIZE_MAX}; +static const size_t c6[] = {1, 7, SIZE_MAX}; +static const size_t c7[] = {1, 5, SIZE_MAX}; +static const size_t c8[] = { + 1, 2, 4, 5, 7, 8, 10, 13, 14, 26, 59, 118, 236, 413, SIZE_MAX +}; +static const size_t c9[] = { + 1, 2, 4, 5, 7, 10, 11, 13, 14, 17, 20, 22, 23, 25, 28, 34, 35, 37, 46, 50, + 53, 68, 70, 74, 92, 100, 140, 307, SIZE_MAX +}; +static const size_t c10[] = {1, 2, 17, 34, 37, 74, 83, 166, SIZE_MAX}; +static const size_t c11[] = {1, 5, SIZE_MAX}; +static const size_t c12[] = { + 1, 2, 4, 5, 7, 8, 11, 13, 14, 16, 17, 22, 25, 26, 32, 35, 41, 44, 49, 52, + 53, 55, 61, 65, 77, 82, 88, 103, 104, 154, 164, 176, 275, 352, 385, 539, + 1117, 2234, SIZE_MAX +}; +static const size_t c13[] = {1, 5, 11, 25, 55, 125, 983, 4915, SIZE_MAX}; +static const size_t c14[] = { + 1, 2, 5, 7, 10, 13, 14, 23, 26, 46, 115, 230, 2137, 10685, SIZE_MAX +}; +static const size_t c15[] = {1, 5, 11, 17, 23, 31, 197, 499, 985, 2167, SIZE_MAX}; +static const size_t c16[] = { + 1, 2, 4, 5, 8, 10, 11, 22, 421, 467, 842, 934, 1868, 3736, SIZE_MAX +}; +static const size_t c17[] = { + 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, + 32, 34, 38, 40, 41, 43, 44, 46, 47, 50, 52, 53, 55, 56, 58, 59, 62, 64, 65, + 67, 68, 71, 73, 76, 77, 80, 82, 83, 85, 86, 88, 91, 92, 94, 95, 97, 100, 103, + 106, 110, 112, 115, 116, 118, 121, 128, 130, 134, 136, 137, 143, 146, 149, + 152, 155, 160, 161, 163, 166, 170, 176, 181, 187, 190, 194, 197, 200, 205, + 206, 209, 215, 221, 224, 227, 230, 232, 235, 251, 256, 263, 265, 272, 274, + 275, 277, 287, 295, 304, 310, 311, 320, 322, 326, 335, 337, 340, 341, 359, + 365, 380, 388, 410, 412, 442, 460, 470, 485, 502, 515, 530, 544, 548, 550, + 571, 575, 577, 589, 605, 613, 622, 644, 680, 685, 691, 715, 730, 745, 905, + 935, 970, 1226, 1795, 78643, SIZE_MAX +}; +static const size_t c18[] = {1, 7, SIZE_MAX}; +static const size_t c19[] = {1, 5, 7, 13, 71, 355, 22153, 155071, SIZE_MAX}; +static const size_t c20[] = { + 1, 2, 4, 5, 7, 8, 10, 13, 14, 26, 241979, 483958, 967916, 1693853, SIZE_MAX +}; +static const size_t c21[] = {1, 2, 4, 5, 7, 10, 14, 19, 20, 1258291, SIZE_MAX}; +static const size_t c22[] = { + 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, + 32, 34, 35, 37, 38, 40, 41, 43, 46, 47, 49, 50, 52, 56, 58, 61, 62, 64, 67, + 68, 70, 71, 73, 74, 76, 77, 79, 82, 83, 85, 86, 92, 94, 95, 97, 98, 100, 101, + 103, 104, 107, 109, 112, 113, 115, 116, 119, 121, 122, 124, 127, 128, 131, + 133, 136, 139, 140, 142, 143, 145, 146, 148, 149, 151, 152, 154, 155, 157, + 161, 163, 164, 166, 169, 172, 173, 179, 181, 184, 187, 190, 196, 197, 200, + 202, 205, 206, 208, 209, 214, 215, 217, 218, 223, 224, 229, 230, 232, 233, + 239, 241, 245, 248, 253, 257, 263, 266, 269, 272, 278, 280, 281, 283, 284, + 286, 289, 302, 304, 314, 319, 322, 323, 328, 329, 335, 338, 344, 346, 349, + 355, 358, 359, 365, 368, 373, 374, 377, 379, 380, 389, 392, 394, 407, 409, + 410, 416, 418, 425, 430, 431, 433, 436, 437, 448, 451, 457, 458, 460, 463, + 464, 466, 473, 478, 482, 485, 490, 496, 505, 511, 521, 526, 532, 533, 541, + 544, 556, 557, 559, 562, 566, 568, 569, 589, 593, 604, 646, 676, 679, 697, + 703, 713, 716, 743, 746, 749, 784, 799, 814, 815, 827, 832, 865, 866, 871, + 877, 893, 902, 913, 916, 946, 1031, 1039, 1075, 1079, 1114, 1127, 1292, 1387, + 1445, 1463, 1723, 2299, 103991, 207982, 415964, 519955, 727937, 831928, + 1039910, 1143901, 1351883, 1663856, 1767847, 1975829, 2079820, 2287802, + 2599775, 2703766, 3223721, 3535694, 3639685, 3951658, 4159640, 6343451, + 6967397, 7903316, SIZE_MAX +}; +static const size_t c23[] = { + 1, 5, 7, 11, 13, 17, 19, 23, 25, 29, 31, 35, 37, 43, 47, 49, 59, 61, 65, 67, + 71, 77, 83, 85, 95, 97, 101, 103, 107, 113, 119, 125, 133, 145, 151, 163, 175, + 179, 185, 187, 199, 203, 209, 217, 221, 229, 239, 247, 269, 281, 289, 319, + 341, 377, 413, 421, 475, 479, 493, 551, 587, 703, 725, 841, 1421, 1463, 1885, + 1943, 2407, 2755, 45673, 502403, 867787, 1324517, SIZE_MAX +}; +static const size_t c24[] = { + 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, + 32, 34, 35, 37, 38, 40, 41, 43, 44, 47, 49, 50, 52, 53, 55, 56, 58, 59, 61, + 62, 65, 67, 68, 70, 71, 73, 74, 76, 79, 80, 82, 83, 85, 86, 88, 89, 91, 94, + 95, 97, 98, 100, 101, 103, 106, 107, 109, 112, 113, 115, 116, 118, 119, 121, + 122, 124, 125, 130, 133, 136, 137, 140, 142, 143, 146, 148, 149, 151, 152, + 160, 161, 164, 166, 167, 169, 170, 172, 173, 175, 176, 178, 179, 181, 187, + 188, 190, 191, 193, 194, 196, 197, 199, 200, 202, 203, 211, 212, 214, 215, + 217, 221, 223, 224, 226, 229, 232, 235, 238, 241, 242, 244, 247, 250, 253, + 259, 260, 263, 265, 266, 269, 272, 274, 275, 277, 280, 281, 283, 284, 286, + 287, 292, 293, 295, 296, 298, 301, 302, 304, 305, 307, 313, 317, 328, 329, + 332, 334, 335, 337, 338, 340, 341, 343, 346, 347, 352, 353, 356, 361, 362, + 365, 367, 373, 374, 376, 377, 379, 380, 382, 386, 388, 391, 392, 394, 398, + 400, 401, 406, 419, 422, 424, 425, 428, 430, 433, 434, 437, 442, 445, 446, + 449, 452, 455, 458, 461, 463, 467, 470, 475, 476, 479, 482, 487, 488, 494, + 497, 503, 505, 511, 515, 517, 518, 523, 526, 529, 530, 532, 538, 544, 547, + 548, 551, 557, 560, 565, 566, 568, 569, 571, 572, 575, 577, 581, 583, 587, + 589, 590, 593, 595, 596, 602, 604, 610, 613, 614, 619, 623, 634, 643, 647, + 649, 664, 668, 674, 689, 691, 692, 694, 706, 707, 719, 721, 722, 727, 730, + 733, 737, 745, 748, 754, 760, 764, 767, 776, 781, 787, 788, 791, 800, 805, + 821, 823, 833, 835, 838, 844, 845, 848, 850, 856, 868, 875, 881, 883, 884, + 890, 892, 893, 899, 904, 905, 907, 916, 926, 931, 949, 964, 976, 979, 989, + 991, 995, 1010, 1019, 1022, 1036, 1043, 1046, 1055, 1064, 1073, 1075, 1091, + 1094, 1102, 1114, 1115, 1136, 1138, 1142, 1147, 1166, 1174, 1186, 1190, 1204, + 1211, 1219, 1220, 1238, 1246, 1273, 1279, 1297, 1298, 1301, 1315, 1325, 1327, + 1378, 1388, 1405, 1414, 1451, 1459, 1483, 1490, 1501, 1519, 1531, 1543, 1562, + 1574, 1633, 1646, 1676, 1690, 1709, 1814, 1862, 1867, 2021, 2128, 2171, 2219, + 2267, 2332, 2348, 2491, 2558, 2657, 2971, 3127, 3191, 3211, 3724, 3829, 4079, + 6563, 7669, 13126, 15338, 26252, 32815, 38345, 52504, 53683, 65630, 72193, + 76690, 84359, 99697, 105008, 107366, 130373, 131260, 144386, 168718, 176387, + 191725, 199394, 203453, 222401, 260746, 283753, 288772, 314429, 329767, + 375781, 406457, 421795, 444802, 452471, 498485, 544499, 605851, 651865, + 659534, 682541, 751562, 904942, 1234709, 1510793, 1648835, SIZE_MAX +}; +static const size_t c25[] = { + 1, 5, 7, 11, 13, 17, 23, 25, 31, 49, 67, 115, 161, 253, 391, 875333, 4376665, + 6127331, 20132659, 21883325, SIZE_MAX +}; +static const size_t c26[] = { + 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, + 32, 34, 35, 37, 38, 40, 41, 43, 44, 46, 47, 49, 50, 52, 53, 55, 56, 58, 59, + 61, 62, 64, 65, 67, 68, 70, 71, 73, 74, 76, 77, 79, 80, 82, 83, 88, 89, 91, + 92, 94, 97, 98, 100, 101, 103, 104, 106, 107, 109, 110, 112, 113, 115, 118, + 121, 122, 124, 125, 128, 130, 131, 133, 134, 136, 137, 139, 140, 142, 143, + 145, 146, 151, 152, 154, 155, 157, 158, 160, 161, 163, 164, 167, 169, 173, + 175, 176, 178, 179, 181, 184, 185, 187, 193, 194, 197, 199, 200, 202, 203, + 205, 206, 208, 209, 211, 212, 214, 215, 217, 218, 220, 221, 223, 224, 226, + 227, 229, 230, 233, 236, 241, 242, 244, 245, 247, 248, 250, 251, 253, 256, + 257, 259, 260, 262, 263, 265, 266, 268, 271, 272, 274, 278, 280, 281, 283, + 284, 286, 287, 289, 290, 292, 295, 301, 302, 304, 305, 307, 310, 313, 314, + 316, 317, 319, 320, 322, 323, 326, 328, 329, 335, 337, 338, 346, 347, 349, + 350, 352, 353, 356, 358, 361, 362, 367, 368, 370, 371, 373, 377, 383, 385, + 386, 391, 394, 395, 397, 398, 400, 401, 403, 404, 406, 407, 409, 410, 412, + 413, 416, 418, 419, 421, 422, 424, 428, 431, 433, 434, 436, 437, 440, 442, + 445, 446, 448, 449, 451, 452, 454, 455, 458, 460, 463, 466, 467, 469, 472, + 473, 481, 482, 484, 485, 488, 490, 491, 493, 494, 496, 500, 502, 503, 506, + 511, 512, 514, 517, 518, 521, 523, 524, 527, 529, 530, 533, 536, 544, 545, + 547, 548, 551, 553, 556, 560, 562, 569, 571, 574, 575, 577, 581, 583, 584, + 587, 589, 593, 599, 604, 605, 608, 610, 611, 614, 617, 620, 623, 625, 628, + 631, 632, 634, 637, 638, 640, 641, 644, 647, 652, 653, 658, 659, 661, 667, + 670, 671, 676, 683, 691, 692, 694, 697, 698, 704, 706, 707, 712, 713, 716, + 719, 722, 724, 727, 731, 733, 734, 736, 737, 746, 749, 751, 757, 763, 766, + 769, 770, 773, 775, 785, 788, 790, 791, 793, 794, 797, 799, 800, 802, 806, + 808, 809, 814, 815, 820, 821, 823, 824, 826, 832, 844, 847, 848, 851, 853, + 859, 862, 865, 868, 871, 874, 880, 881, 883, 890, 892, 895, 896, 901, 902, + 905, 908, 920, 923, 926, 932, 934, 938, 941, 944, 953, 961, 962, 964, 967, + 968, 977, 979, 982, 989, 991, 1000, 1001, 1003, 1004, 1012, 1015, 1019, + 1021, 1024, 1028, 1031, 1034, 1037, 1042, 1046, 1057, 1061, 1067, 1072, + 1079, 1088, 1090, 1093, 1094, 1103, 1106, 1112, 1121, 1124, 1127, 1133, + 1138, 1142, 1145, 1148, 1154, 1157, 1166, 1168, 1169, 1178, 1183, 1205, + 1208, 1216, 1219, 1220, 1223, 1225, 1234, 1240, 1243, 1246, 1247, 1250, + 1262, 1265, 1267, 1271, 1280, 1288, 1289, 1294, 1295, 1303, 1304, 1307, + 1315, 1339, 1342, 1366, 1382, 1393, 1396, 1412, 1415, 1417, 1423, 1424, + 1432, 1448, 1466, 1468, 1474, 1487, 1498, 1501, 1502, 1514, 1523, 1525, + 1538, 1543, 1546, 1549, 1561, 1565, 1570, 1577, 1580, 1582, 1607, 1612, + 1642, 1649, 1664, 1667, 1691, 1717, 1735, 1762, 1780, 1783, 1784, 1840, + 1846, 1852, 1859, 1864, 1868, 1876, 1879, 1888, 1897, 1927, 1928, 1934, + 1949, 1954, 1964, 1982, 2009, 2024, 2030, 2038, 2042, 2053, 2057, 2062, + 2065, 2092, 2114, 2147, 2173, 2188, 2203, 2224, 2233, 2237, 2239, 2266, + 2276, 2293, 2333, 2345, 2383, 2432, 2438, 2441, 2446, 2450, 2468, 2501, + 2530, 2560, 2576, 2659, 2732, 2735, 2786, 2813, 2848, 2915, 2948, 2957, + 2981, 3031, 3046, 3076, 3115, 3157, 3160, 3164, 3185, 3193, 3298, 3407, + 3560, 3619, 3737, 3752, 3856, 3898, 3971, 3985, 4076, 4228, 4478, 4853, + 5896, 6115, 8561, 12230, 15899, 17122, 20791, 23237, 28129, 30575, 35467, + 37913, 45251, 56258, 57481, 75826, 81941, 86833, 108847, 114962, 163882, + 164617, 173666, 217694, 329234, 658468, 823085, 1152319, 1316936, 1646170, + 1810787, 2798489, 3127723, 3292340, 3621574, 3786191, 4773893, 5761595, + 6090829, 6255446, 6584680, 6749297, 7243148, 8066233, 9053935, 9547786, + 12675509, 13498594, 21894061, SIZE_MAX +}; +static const size_t c27[] = { + 1, 2, 4, 5, 7, 10, 11, 13, 14, 17, 19, 20, 22, 23, 26, 31, 35, 37, 43, 47, 52, + 55, 59, 61, 65, 67, 70, 71, 74, 83, 85, 89, 91, 94, 130, 131, 134, 142, 163, + 182, 188, 268, 329, 335, 517, 611, 658, 670, 799, 893, 1034, 1081, 1222, 1273, + 1457, 2021, 2444, 2867, 3149, 3337, 4277, 6298, 12596, 127867, 255734, 511468, + 639335, 1278670, 1406537, 6009749, 8567089, 12019498, 24038996, 42835445, + SIZE_MAX +}; +static const size_t c28[] = { + 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 34, + 35, 37, 38, 40, 41, 43, 44, 46, 49, 50, 52, 53, 55, 56, 58, 61, 62, 65, 67, + 68, 70, 71, 73, 74, 76, 77, 79, 82, 83, 85, 86, 88, 92, 95, 98, 100, 101, 103, + 104, 106, 107, 109, 110, 113, 115, 116, 119, 121, 122, 124, 125, 127, 130, + 131, 133, 134, 136, 137, 140, 142, 143, 145, 146, 151, 152, 154, 155, 158, + 161, 164, 166, 167, 170, 172, 173, 175, 181, 185, 190, 191, 193, 196, 197, + 200, 203, 205, 206, 209, 214, 217, 218, 221, 226, 230, 232, 238, 239, 242, + 244, 247, 248, 253, 254, 259, 260, 265, 266, 269, 271, 274, 280, 281, 284, + 289, 292, 293, 299, 301, 310, 311, 313, 316, 323, 325, 328, 334, 340, 341, + 343, 344, 346, 347, 350, 355, 359, 362, 365, 367, 370, 371, 379, 380, 382, + 385, 386, 392, 395, 397, 403, 406, 415, 427, 428, 431, 442, 449, 452, 457, + 461, 463, 473, 476, 478, 484, 488, 491, 494, 506, 509, 518, 521, 529, 530, + 532, 538, 539, 545, 548, 551, 563, 578, 586, 587, 593, 595, 598, 601, 613, + 622, 626, 629, 632, 643, 646, 659, 665, 667, 671, 685, 686, 710, 721, 730, + 731, 737, 758, 760, 770, 790, 835, 851, 854, 862, 883, 887, 905, 914, 923, + 926, 937, 952, 956, 983, 1009, 1012, 1025, 1069, 1126, 1156, 1172, 1241, + 1244, 1258, 1273, 1372, 1420, 1447, 1495, 1507, 1580, 1670, 2111, 2138, + 15683, 31366, 51349, 62732, 78415, 102698, 109781, 125464, 156830, 172513, + 203879, 219562, 266611, 313660, 345026, 360709, 392075, 407758, 439124, + 454807, 486173, 533222, 548905, 580271, 627320, 643003, 674369, 690052, + 721418, 768467, 784150, 815516, 831199, 862565, 878248, 909614, 972346, + 1019395, 1050761, 1066444, 1113493, 1144859, 1160542, 1207591, 1301689, + 1348738, 1380104, 1442836, 1536934, 1568300, 1583983, 1615349, 1631032, + 1662398, 1725130, 1772179, 1803545, 1819228, 1897643, 1944692, 1960375, + 1991741, 2038790, 2054473, 2101522, 2226986, 2242669, 2274035, 2289718, + 2368133, 2415182, 2430865, 2524963, 2603378, 2619061, 2697476, 2713159, + 2744525, 2838623, 2901355, 2995453, 3026819, 3073868, 3089551, 3136600, + 3183649, 3215015, 3403211, 3465943, 3544358, 3607090, 3638456, 3795286, + 3967799, 3983482, 4061897, 4077580, 4155995, 4218727, 4406923, 4453972, + 4532387, 4720583, 4877413, 5238122, 5347903, 5394952, 5442001, 5677246, + 5724295, 5802710, 5818393, 5990906, 6037955, 6053638, 6147736, 6367298, + 6508445, 6759373, 6931886, 7041667, 7088716, 7167131, 7590572, 8123794, + 8829529, 9064774, 9425483, 9754826, 10335097, 11307443, 11448590, 13518746, + 18129548, SIZE_MAX +}; +static const size_t c29[] = { + 1, 5, 7, 11, 13, 17, 19, 23, 25, 29, 31, 35, 37, 41, 43, 47, 49, 53, 55, 59, + 61, 65, 67, 71, 73, 77, 79, 83, 85, 89, 91, 95, 97, 101, 103, 107, 109, 113, + 115, 119, 121, 125, 127, 131, 133, 137, 139, 143, 145, 149, 151, 155, 157, + 161, 167, 169, 173, 175, 179, 181, 185, 187, 191, 197, 203, 209, 211, 215, + 217, 223, 227, 233, 235, 239, 241, 245, 247, 251, 253, 257, 259, 263, 265, + 269, 271, 275, 277, 281, 283, 289, 293, 295, 299, 305, 307, 313, 317, 319, + 323, 329, 337, 341, 343, 347, 349, 353, 355, 359, 367, 371, 373, 377, 379, + 383, 385, 389, 395, 397, 407, 413, 415, 419, 425, 427, 431, 433, 437, 443, + 445, 449, 455, 457, 469, 479, 481, 485, 487, 491, 493, 497, 499, 503, 511, + 517, 523, 529, 533, 535, 539, 541, 547, 553, 557, 565, 569, 575, 589, 593, + 599, 605, 611, 617, 619, 623, 635, 637, 641, 643, 649, 653, 655, 661, 677, + 679, 685, 701, 703, 707, 715, 719, 721, 727, 731, 739, 743, 745, 755, 761, + 769, 775, 781, 785, 787, 793, 797, 799, 821, 823, 829, 845, 853, 863, 871, + 881, 895, 907, 917, 919, 929, 935, 941, 943, 947, 949, 955, 961, 967, 973, + 977, 979, 991, 997, 1001, 1003, 1007, 1015, 1019, 1027, 1031, 1033, 1043, + 1045, 1049, 1051, 1057, 1063, 1067, 1073, 1075, 1079, 1085, 1087, 1093, + 1097, 1099, 1109, 1117, 1129, 1147, 1151, 1157, 1165, 1169, 1171, 1187, + 1189, 1199, 1201, 1205, 1207, 1211, 1213, 1219, 1235, 1237, 1247, 1249, + 1259, 1261, 1265, 1271, 1279, 1283, 1289, 1291, 1297, 1301, 1303, 1307, + 1313, 1315, 1319, 1321, 1327, 1343, 1345, 1367, 1369, 1375, 1385, 1387, + 1399, 1403, 1409, 1423, 1427, 1439, 1441, 1453, 1463, 1477, 1487, 1499, + 1501, 1511, 1523, 1525, 1535, 1565, 1595, 1627, 1631, 1633, 1637, 1649, + 1657, 1673, 1685, 1687, 1699, 1705, 1711, 1715, 1727, 1745, 1751, 1757, + 1771, 1811, 1823, 1829, 1843, 1865, 1873, 1897, 1957, 1963, 1967, 1975, + 1979, 2017, 2039, 2065, 2075, 2093, 2143, 2153, 2191, 2207, 2231, 2339, + 2359, 2405, 2425, 2437, 2443, 2471, 2473, 2479, 2507, 2533, 2573, 2579, + 2581, 2617, 2645, 2651, 2695, 2729, 2813, 2827, 2867, 2941, 2959, 3007, + 3031, 3055, 3059, 3085, 3173, 3181, 3197, 3221, 3247, 3275, 3377, 3395, + 3467, 3505, 3521, 3553, 3559, 3589, 3607, 3611, 3671, 3715, 3875, 3977, + 3983, 4049, 4129, 4171, 4183, 4187, 4315, 4559, 4691, 4753, 4777, 4807, + 4993, 5141, 5155, 5167, 5279, 5495, 5509, 5723, 5735, 5917, 6017, 6499, + 6887, 7081, 7217, 7265, 7663, 8051, 8245, 9215, 9797, 9991, 10379, 10573, + 11155, 11341, 11737, 12319, 13403, 13483, 13871, 14065, 14453, 15035, 15617, + 16105, 17527, 17557, 18139, 18527, 19589, 22547, 22795, 23183, 23713, 25775, + 29585, 29899, 30361, 31331, 31961, 35431, 36085, 38147, 41873, 42271, 44333, + 48457, 50519, 54643, 54757, 55193, 56705, 60829, 62891, 67015, 69077, 73201, + 74083, 75263, 75757, 79387, 80525, 81449, 85573, 87635, 91759, 93409, 93821, + 97945, 99851, 100007, 104131, 106193, 110317, 112735, 116503, 118565, 119177, + 122689, 124751, 128875, 130937, 135061, 137123, 141247, 147433, 149495, + 151387, 153619, 159805, 161867, 165991, 170713, 172177, 174239, 178363, + 180425, 184549, 186611, 190735, 192797, 196481, 196921, 215479, 217541, + 221665, 223727, 228691, 229913, 234037, 240223, 242285, 248471, 252595, + 254459, 254657, 258781, 260843, 264967, 267029, 271153, 273215, 277339, + 279401, 285587, 291773, 297959, 304145, 308269, 312437, 316517, 322703, + 326827, 328889, 333013, 339199, 347447, 351571, 353633, 357757, 359819, + 363943, 366005, 378377, 382501, 384563, 388687, 390749, 394873, 396935, + 401059, 407245, 419617, 425803, 427865, 431989, 438175, 440237, 441277, + 446423, 450547, 469105, 471167, 483539, 486371, 493849, 495911, 499255, + 500035, 502097, 506221, 508283, 533027, 539213, 545399, 549523, 551585, + 555709, 557771, 582515, 586639, 592825, 607259, 611383, 629941, 636127, + 642313, 673243, 681491, 697987, 700049, 706235, 722731, 724793, 741289, + 743351, 766033, 784591, 799025, 809335, 817583, 821707, 871195, 889753, + 922745, 935117, 945427, 947489, 963985, 970171, 972233, 984605, 990791, + 1007287, 1021721, 1027907, 1032031, 1034093, 1038217, 1050589, 1075333, + 1100077, 1106263, 1112449, 1120697, 1126883, 1163999, 1242355, 1244417, + 1275347, 1285657, 1298029, 1300091, 1310401, 1328959, 1331021, 1368137, + 1384633, 1386695, 1411439, 1427935, 1442369, 1562185, 1681561, 1683623, + 1687747, 1700119, 1751669, 1757855, 1825901, 1900133, 2036225, 2079527, + 2187059, 2500175, 2652763, 2778545, 2914637, 3320851, 3500245, 3663143, + 3700259, 4100287, 4300301, 4700329, 4900343, 5300371, 5900413, 6100427, + 7100497, 7900553, 8300581, 8500595, 10300721, 10700749, 10935295, 14301001, + 16604255, 23245957, 23501645, 36529361, 43171063, 56454467, 83021275, + 96304679, 156079997, 176005103, 322122547, SIZE_MAX +}; +static const size_t c30[] = { + 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, + 32, 34, 35, 37, 38, 40, 41, 43, 44, 46, 47, 50, 52, 53, 55, 56, 58, 61, 62, + 64, 65, 67, 68, 70, 71, 73, 74, 76, 77, 79, 80, 82, 83, 85, 86, 88, 89, 91, + 92, 94, 95, 97, 100, 101, 103, 104, 106, 107, 109, 110, 112, 113, 115, 116, + 119, 122, 124, 125, 127, 128, 130, 133, 134, 136, 137, 142, 143, 145, 146, + 148, 149, 152, 154, 155, 157, 158, 160, 161, 163, 164, 166, 167, 172, 175, + 176, 178, 179, 181, 182, 185, 187, 190, 193, 194, 197, 199, 200, 202, 203, + 205, 206, 208, 209, 211, 212, 214, 215, 217, 218, 220, 221, 223, 224, 226, + 227, 229, 230, 232, 235, 238, 239, 244, 250, 251, 253, 254, 256, 257, 259, + 260, 263, 265, 266, 268, 269, 271, 272, 275, 277, 284, 286, 287, 290, 292, + 296, 298, 299, 304, 308, 311, 313, 316, 317, 319, 320, 322, 323, 325, 326, + 328, 329, 331, 332, 334, 335, 337, 344, 347, 349, 353, 355, 356, 358, 359, + 362, 364, 365, 367, 370, 371, 373, 374, 377, 379, 380, 383, 385, 386, 388, + 389, 391, 394, 395, 397, 398, 401, 403, 404, 407, 410, 415, 416, 421, 422, + 424, 425, 430, 431, 433, 434, 436, 437, 440, 442, 443, 446, 448, 449, 451, + 452, 457, 458, 463, 464, 467, 470, 475, 488, 491, 499, 500, 503, 505, 506, + 508, 511, 512, 514, 515, 518, 520, 521, 523, 526, 527, 530, 532, 533, 535, + 538, 541, 542, 544, 547, 550, 553, 554, 557, 559, 565, 568, 569, 571, 572, + 574, 575, 577, 580, 584, 587, 589, 592, 593, 595, 598, 599, 601, 611, 616, + 619, 622, 623, 625, 626, 629, 631, 632, 635, 638, 640, 641, 646, 650, 652, + 656, 658, 659, 661, 662, 664, 667, 668, 670, 673, 677, 679, 689, 691, 694, + 697, 698, 706, 707, 709, 712, 713, 716, 718, 725, 728, 734, 737, 739, 742, + 748, 757, 758, 760, 761, 769, 770, 772, 773, 776, 778, 779, 781, 782, 788, + 790, 791, 793, 794, 796, 799, 802, 806, 809, 814, 817, 821, 827, 829, 830, + 832, 835, 844, 862, 868, 872, 874, 880, 884, 887, 892, 893, 896, 901, 902, + 911, 919, 925, 928, 935, 943, 965, 971, 977, 982, 983, 985, 991, 1000, + 1010, 1012, 1015, 1016, 1019, 1022, 1024, 1025, 1027, 1028, 1030, 1031, + 1033, 1036, 1043, 1049, 1054, 1060, 1061, 1064, 1066, 1070, 1073, 1082, + 1084, 1100, 1106, 1114, 1130, 1133, 1136, 1148, 1154, 1160, 1168, 1169, + 1174, 1178, 1181, 1184, 1201, 1232, 1237, 1241, 1249, 1250, 1252, 1258, + 1261, 1262, 1264, 1270, 1271, 1285, 1291, 1292, 1301, 1304, 1307, 1318, + 1322, 1324, 1334, 1336, 1343, 1354, 1369, 1373, 1379, 1381, 1382, 1385, + 1388, 1391, 1393, 1396, 1414, 1427, 1429, 1432, 1436, 1439, 1456, 1468, + 1477, 1489, 1495, 1496, 1516, 1520, 1522, 1531, 1538, 1544, 1552, 1555, + 1576, 1582, 1588, 1589, 1592, 1595, 1598, 1612, 1615, 1618, 1625, 1627, + 1634, 1639, 1642, 1649, 1651, 1654, 1675, 1693, 1709, 1724, 1759, 1765, + 1774, 1781, 1783, 1792, 1802, 1822, 1838, 1847, 1856, 1873, 1921, 1925, + 1945, 1951, 2005, 2021, 2029, 2044, 2048, 2050, 2077, 2105, 2108, 2120, + 2123, 2146, 2155, 2164, 2177, 2191, 2200, 2212, 2215, 2260, 2266, 2272, + 2293, 2308, 2315, 2320, 2341, 2356, 2413, 2455, 2495, 2498, 2522, 2540, + 2584, 2602, 2629, 2635, 2648, 2672, 2723, 2738, 2759, 2765, 2782, 2786, + 2833, 2878, 2917, 2954, 2978, 3017, 3110, 3145, 3236, 3350, 3383, 3391, + 3427, 3448, 3529, 3593, 3676, 4310, 4351, 4640, 4741, 4993, 5603, 5789, + 6034, 6896, 6973, 7327, 8189, 8620, 9482, 10775, 12068, 12499, 13361, + 13792, 14654, 15085, 17240, 18533, 21550, 22843, 24136, 24998, 26291, + 26722, 28015, 28877, 29308, 30601, 31463, 36635, 38359, 39221, 41807, + 43100, 45686, 46979, 48703, 49996, 51289, 52582, 57754, 58616, 59047, + 61633, 62926, 70253, 76718, 96113, 97406, 98699, 102578, 113353, 142661, + 153005, 7473841, 37369205, 52316887, 82212251, 97159933, 142002979, + 171898343, 231689071, 261584435, 351270527, SIZE_MAX +}; + +#ifdef CONFIG_64 + +#if SIZE_MAX != 18446744073709551615ULL + #error "transpose3: need 64 bits for SIZE_MAX" +#endif +/* Maximum n for 3 * 2^n matrix, limited by log2(2^n/BMEMB) <= 30. + * This limit can be raised by increasing BMEMB or by extending + * the above cycle tables beyond 30. */ +#define MAXN 42 +#define BMEMB 4096 /* block members */ + +/* END CONFIG_64 */ +#else + +#if SIZE_MAX != 4294967295UL + #error "transpose3: need 32 bits for SIZE_MAX" +#endif +#define MAXN 30 /* maximum n for 3 * 2^n matrix, limited by SIZE_MAX */ +#define BMEMB 4096 /* block members */ + +#endif /* END CONFIG_32 */ + + +/* all cycles */ +static const size_t *start[] = { + c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, + c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30 +}; + + + +/* + * Block transpose on a 3 x 2^n or a 2^n x 3 matrix. 2^n is split into + * nprime blocks of size BMEMB, and the blocks are transposed cyclically. + */ +static void +_block_transpose_3xpow2(mpd_uint_t *matrix, size_t rows, size_t cols) +{ + mpd_uint_t buf1[BMEMB]; + mpd_uint_t buf2[BMEMB]; + mpd_uint_t *readbuf, *writebuf; + size_t nprime; /* number of blocks per row (or column) */ + size_t log2n; + size_t a, mod; + size_t s, next; + size_t i; + + + if (rows == 3) { + nprime = cols / BMEMB; + a = 3; + } + else { /* cols == 3 */ + nprime = rows / BMEMB; + a = nprime; + } + + log2n = BSR(nprime); + mod = 3 * nprime - 1; + + for (i = 0; start[log2n][i] != SIZE_MAX; i++) { + + s = start[log2n][i]; + + readbuf = buf1; writebuf = buf2; + + memcpy(readbuf, matrix+BMEMB*s, BMEMB*(sizeof *readbuf)); + + pointerswap(&readbuf, &writebuf); + next = mulmod_size_t(s, a, mod); + + while (next != s) { + + memcpy(readbuf, matrix+BMEMB*next, BMEMB*(sizeof *readbuf)); + memcpy(matrix+BMEMB*next, writebuf, BMEMB*(sizeof *writebuf)); + + pointerswap(&readbuf, &writebuf); + next = mulmod_size_t(next, a, mod); + + } + + memcpy(matrix+BMEMB*next, writebuf, BMEMB*(sizeof *writebuf)); + } +} + + +/* + * In place transposition of 3 x 2^n or 2^n x 3 matrix. + * Maximum size: 3 x 2^MAXN or 2^MAXN x 3 + */ +void +transpose_3xpow2(mpd_uint_t *matrix, size_t rows, size_t cols) +{ + mpd_uint_t buf[3*BMEMB]; + mpd_uint_t *p; + size_t msize, bsize; + + msize = mul_size_t(rows, cols); + bsize = 3*BMEMB; + + if (msize <= bsize) { + std_trans(buf, matrix, rows, cols); + memcpy(matrix, buf, msize * (sizeof *matrix)); + } + else if (rows == 3) { + assert(ispower2(cols)); + assert(BSR(cols) <= MAXN); + + _block_transpose_3xpow2(matrix, rows, cols); + for (p = matrix; p < matrix+msize; p += bsize) { + std_trans(buf, p, rows, BMEMB); + memcpy(p, buf, bsize * (sizeof *matrix)); + } + } + else if (cols == 3) { + assert(ispower2(rows)); + assert(BSR(rows) <= MAXN); + + for (p = matrix; p < matrix+msize; p += bsize) { + std_trans(buf, p, BMEMB, cols); + memcpy(p, buf, bsize * (sizeof *matrix)); + } + _block_transpose_3xpow2(matrix, rows, cols); + } + else { + mpd_err_fatal("transpose_3xpow2: wrong input for rows or cols"); + } +} + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/typearith.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/typearith.h Thu Jan 7 13:02:51 2010 @@ -0,0 +1,325 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#ifndef TYPEARITH_H +#define TYPEARITH_H + + +#include "mpdecimal.h" + + +/*****************************************************************************/ +/* Native arithmetic on basic types */ +/*****************************************************************************/ + + +/** ------------------------------------------------------------ + ** Double width multiplication and division + ** ------------------------------------------------------------ + */ + +#if defined (CONFIG_64) +#if defined (__GNUC__) +static inline void +_mpd_mul_words(mpd_uint_t *hi, mpd_uint_t *lo, mpd_uint_t a, mpd_uint_t b) +{ + mpd_uint_t h, l; + + asm( "mulq %3\n\t"\ + : "=d" (h), "=a" (l)\ + : "%a" (a), "rm" (b)\ + : "cc" + ); + + *hi = h; + *lo = l; +} + +static inline void +_mpd_div_words(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t hi, mpd_uint_t lo, mpd_uint_t d) +{ + mpd_uint_t qq, rr; + + asm ( "divq %4\n\t"\ + : "=a" (qq), "=d" (rr)\ + : "a" (lo), "d" (hi), "rm" (d)\ + : "cc" + ); + + *q = qq; + *r = rr; +} +/* END CONFIG_64: __GNUC__ */ + +#elif defined (_MSC_VER) +#include +#pragma intrinsic(_umul128) + +static inline void +_mpd_mul_words(mpd_uint_t *hi, mpd_uint_t *lo, mpd_uint_t a, mpd_uint_t b) +{ + *lo = _umul128(a, b, hi); +} + +void _mpd_div_words(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t hi, mpd_uint_t lo, mpd_uint_t d); +/* END CONFIG_64: _MSC_VER */ + +#else + #error "need platform specific 128 bit multiplication and division" +#endif + +static inline void +_mpd_divmod_pow10(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t v, mpd_uint_t exp) +{ + assert(exp <= 19); + + if (exp <= 9) { + if (exp <= 4) { + switch (exp) { + case 0: *q = v; *r = 0; break; + case 1: *q = v / 10ULL; *r = v - *q * 10ULL; break; + case 2: *q = v / 100ULL; *r = v - *q * 100ULL; break; + case 3: *q = v / 1000ULL; *r = v - *q * 1000ULL; break; + case 4: *q = v / 10000ULL; *r = v - *q * 10000ULL; break; + } + } + else { + switch (exp) { + case 5: *q = v / 100000ULL; *r = v - *q * 100000ULL; break; + case 6: *q = v / 1000000ULL; *r = v - *q * 1000000ULL; break; + case 7: *q = v / 10000000ULL; *r = v - *q * 10000000ULL; break; + case 8: *q = v / 100000000ULL; *r = v - *q * 100000000ULL; break; + case 9: *q = v / 1000000000ULL; *r = v - *q * 1000000000ULL; break; + } + } + } + else { + if (exp <= 14) { + switch (exp) { + case 10: *q = v / 10000000000ULL; *r = v - *q * 10000000000ULL; break; + case 11: *q = v / 100000000000ULL; *r = v - *q * 100000000000ULL; break; + case 12: *q = v / 1000000000000ULL; *r = v - *q * 1000000000000ULL; break; + case 13: *q = v / 10000000000000ULL; *r = v - *q * 10000000000000ULL; break; + case 14: *q = v / 100000000000000ULL; *r = v - *q * 100000000000000ULL; break; + } + } + else { + switch (exp) { + case 15: *q = v / 1000000000000000ULL; *r = v - *q * 1000000000000000ULL; break; + case 16: *q = v / 10000000000000000ULL; *r = v - *q * 10000000000000000ULL; break; + case 17: *q = v / 100000000000000000ULL; *r = v - *q * 100000000000000000ULL; break; + case 18: *q = v / 1000000000000000000ULL; *r = v - *q * 1000000000000000000ULL; break; + case 19: *q = v / 10000000000000000000ULL; *r = v - *q * 10000000000000000000ULL; break; + } + } + } +} +/* END CONFIG_64 */ + +#elif defined (CONFIG_32) +#if defined (ANSI) +static inline void +_mpd_mul_words(mpd_uint_t *hi, mpd_uint_t *lo, mpd_uint_t a, mpd_uint_t b) +{ + mpd_uuint_t hl; + + hl = (mpd_uuint_t)a * b; + + *hi = hl >> 32; + *lo = hl; +} + +static inline void +_mpd_div_words(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t hi, mpd_uint_t lo, mpd_uint_t d) +{ + mpd_uuint_t hl; + + hl = ((mpd_uuint_t)hi<<32) + lo; + *q = hl / d; /* quotient is known to fit */ + *r = hl - (mpd_uuint_t)(*q) * d; +} +/* END CONFIG_32: ANSI */ + +#elif defined(__GNUC__) +static inline void +_mpd_mul_words(mpd_uint_t *hi, mpd_uint_t *lo, mpd_uint_t a, mpd_uint_t b) +{ + mpd_uint_t h, l; + + asm( "mull %3\n\t"\ + : "=d" (h), "=a" (l)\ + : "%a" (a), "rm" (b)\ + : "cc" + ); + + *hi = h; + *lo = l; +} + +static inline void +_mpd_div_words(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t hi, mpd_uint_t lo, mpd_uint_t d) +{ + mpd_uint_t qq, rr; + + asm ( "divl %4\n\t"\ + : "=a" (qq), "=d" (rr)\ + : "a" (lo), "d" (hi), "rm" (d)\ + : "cc" + ); + + *q = qq; + *r = rr; +} +/* END CONFIG_32: __GNUC__ */ + +#elif defined (_MSC_VER) +static inline void __cdecl +_mpd_mul_words(mpd_uint_t *hi, mpd_uint_t *lo, mpd_uint_t a, mpd_uint_t b) +{ + mpd_uint_t h, l; + + __asm { + mov eax, a + mul b + mov h, edx + mov l, eax + } + + *hi = h; + *lo = l; +} + +static inline void __cdecl +_mpd_div_words(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t hi, mpd_uint_t lo, mpd_uint_t d) +{ + mpd_uint_t qq, rr; + + __asm { + mov eax, lo + mov edx, hi + div d + mov qq, eax + mov rr, edx + } + + *q = qq; + *r = rr; +} +/* END CONFIG_32: _MSC_VER */ + +#else + #error "need platform specific 64 bit multiplication and division" +#endif + +static inline void +_mpd_divmod_pow10(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t v, mpd_uint_t exp) +{ + assert(exp <= 9); + + if (exp <= 4) { + switch (exp) { + case 0: *q = v; *r = 0; break; + case 1: *q = v / 10ULL; *r = v - *q * 10ULL; break; + case 2: *q = v / 100ULL; *r = v - *q * 100ULL; break; + case 3: *q = v / 1000ULL; *r = v - *q * 1000ULL; break; + case 4: *q = v / 10000ULL; *r = v - *q * 10000ULL; break; + } + } + else { + switch (exp) { + case 5: *q = v / 100000ULL; *r = v - *q * 100000ULL; break; + case 6: *q = v / 1000000ULL; *r = v - *q * 1000000ULL; break; + case 7: *q = v / 10000000ULL; *r = v - *q * 10000000ULL; break; + case 8: *q = v / 100000000ULL; *r = v - *q * 100000000ULL; break; + case 9: *q = v / 1000000000ULL; *r = v - *q * 1000000000ULL; break; + } + } +} +/* END CONFIG_32 */ + +/* NO CONFIG */ +#else + #error "define CONFIG_64 or CONFIG_32" +#endif /* CONFIG */ + + +static inline void +_mpd_div_word(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t v, mpd_uint_t d) +{ + *q = v / d; + *r = v - *q * d; +} + +static inline void +_mpd_idiv_word(mpd_ssize_t *q, mpd_ssize_t *r, mpd_ssize_t v, mpd_ssize_t d) +{ + *q = v / d; + *r = v - *q * d; +} + + +/** ------------------------------------------------------------ + ** Arithmetic with overflow checking + ** ------------------------------------------------------------ + */ +static inline size_t +add_size_t(size_t a, size_t b) +{ + if (a > SIZE_MAX - b) { + mpd_err_fatal("add_size_t(): overflow: check the context"); + } + return a + b; +} + +static inline size_t +sub_size_t(size_t a, size_t b) +{ + if (b > a) { + mpd_err_fatal("sub_size_t(): overflow: check the context"); + } + return a - b; +} + +#if SIZE_MAX != MPD_UINT_MAX + #error "adapt mul_size_t(), mod_mpd_ssize_t() and mulmod_size_t()" +#endif + +static inline size_t +mul_size_t(size_t a, size_t b) +{ + mpd_uint_t hi, lo; + + _mpd_mul_words(&hi, &lo, (mpd_uint_t)a, (mpd_uint_t)b); + if (hi) { + mpd_err_fatal("mul_size_t(): overflow: check the context"); + } + return lo; +} + +static inline mpd_ssize_t +mod_mpd_ssize_t(mpd_ssize_t a, mpd_ssize_t m) +{ + mpd_ssize_t r = a % m; + return (r < 0) ? r + m : r; +} + +static inline size_t +mulmod_size_t(size_t a, size_t b, size_t m) +{ + mpd_uint_t hi, lo; + mpd_uint_t q, r; + + _mpd_mul_words(&hi, &lo, (mpd_uint_t)a, (mpd_uint_t)b); + _mpd_div_words(&q, &r, hi, lo, (mpd_uint_t)m); + + return r; +} + + +#endif /* TYPEARITH_H */ + + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/umodarith.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/umodarith.h Thu Jan 7 13:02:51 2010 @@ -0,0 +1,538 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#ifndef UMODARITH_H +#define UMODARITH_H + + +#include "constants.h" +#include "mpdecimal.h" +#include "typearith.h" + + +/**************************************************************************/ +/* ANSI C99 modular arithmetic */ +/**************************************************************************/ + + +/* + * Restrictions: a < m and b < m + * ACL2 proof: umodarith.lisp: addmod-correct + */ +static inline mpd_uint_t +addmod(mpd_uint_t a, mpd_uint_t b, mpd_uint_t m) +{ + mpd_uint_t s; + + s = a + b; + s = (s < a) ? s - m : s; + s = (s >= m) ? s - m : s; + + return s; +} + +/* + * Restrictions: a < m and b < m + * ACL2 proof: umodarith.lisp: submod-2-correct + */ +static inline mpd_uint_t +submod(mpd_uint_t a, mpd_uint_t b, mpd_uint_t m) +{ + mpd_uint_t d; + + d = a - b; + d = (a < b) ? d + m : d; + + return d; +} + +/* + * Restrictions: a < 2m and b < 2m + * ACL2 proof: umodarith.lisp: ext-submod-2-correct + */ +static inline mpd_uint_t +ext_submod(mpd_uint_t a, mpd_uint_t b, mpd_uint_t m) +{ + mpd_uint_t d; + + a = (a >= m) ? a - m : a; + b = (b >= m) ? b - m : b; + + d = a - b; + d = (a < b) ? d + m : d; + + return d; +} + +/* divide 2 words by v, return remainder */ +static inline mpd_uint_t +bigmod2(mpd_uint_t hi, mpd_uint_t lo, mpd_uint_t v) +{ + mpd_uint_t r1, r2, w; + + _mpd_div_word(&w, &r1, hi, v); + _mpd_div_words(&w, &r2, r1, lo, v); + + return r2; +} + +/* subtract double word hi,lo from a */ +static inline mpd_uint_t +dw_submod(mpd_uint_t a, mpd_uint_t hi, mpd_uint_t lo, mpd_uint_t m) +{ + mpd_uint_t d, r; + + r = bigmod2(hi, lo, m); + d = a - r; + d = (a < r) ? d + m : d; + + return d; +} + + +#ifdef ANSI /* compiler has type mpd_uuint_t */ +static inline +mpd_uint_t std_mulmod(mpd_uint_t a, mpd_uint_t b, mpd_uint_t m) +{ + return ((mpd_uuint_t) a * b) % m; +} + +static inline void +std_mulmod2c(mpd_uint_t *a, mpd_uint_t *b, mpd_uint_t w, mpd_uint_t m) +{ + *a = ((mpd_uuint_t) *a * w) % m; + *b = ((mpd_uuint_t) *b * w) % m; +} + +static inline void +std_mulmod2(mpd_uint_t *a0, mpd_uint_t b0, mpd_uint_t *a1, mpd_uint_t b1, mpd_uint_t m) +{ + *a0 = ((mpd_uuint_t) *a0 * b0) % m; + *a1 = ((mpd_uuint_t) *a1 * b1) % m; +} + +static inline +mpd_uint_t std_powmod(mpd_uint_t base, mpd_uint_t exp, mpd_uint_t umod) +{ + mpd_uint_t r = 1; + + while (exp > 0) { + if (exp & 1) + r = std_mulmod(r, base, umod); + base = std_mulmod(base, base, umod); + exp >>= 1; + } + + return r; +} +#endif + + +/**************************************************************************/ +/* x64 modular arithmetic */ +/**************************************************************************/ + +/* + * Description of the algorithm in apfloat.pdf, Chapter 7.1.1, by Mikko Tommila. + * http://www.apfloat.org/apfloat/2.41/ + * + * ACL2 proof: umodarith.lisp: section "Fast modular reduction" + */ + +#ifdef CONFIG_64 +static inline mpd_uint_t +x64_mulmod(mpd_uint_t a, mpd_uint_t b, mpd_uint_t m) +{ + mpd_uint_t hi, lo, x, y; + + + _mpd_mul_words(&hi, &lo, a, b); + + if (m & (1ULL<<32)) { /* P1 */ + + /* first reduction */ + x = y = hi; + hi >>= 32; + + x = lo - x; + if (x > lo) hi--; + + y <<= 32; + lo = y + x; + if (lo < y) hi++; + + /* second reduction */ + x = y = hi; + hi >>= 32; + + x = lo - x; + if (x > lo) hi--; + + y <<= 32; + lo = y + x; + if (lo < y) hi++; + + return (hi || lo >= m ? lo - m : lo); + } + else if (m & (1ULL<<34)) { /* P2 */ + + /* first reduction */ + x = y = hi; + hi >>= 30; + + x = lo - x; + if (x > lo) hi--; + + y <<= 34; + lo = y + x; + if (lo < y) hi++; + + /* second reduction */ + x = y = hi; + hi >>= 30; + + x = lo - x; + if (x > lo) hi--; + + y <<= 34; + lo = y + x; + if (lo < y) hi++; + + /* third reduction */ + x = y = hi; + hi >>= 30; + + x = lo - x; + if (x > lo) hi--; + + y <<= 34; + lo = y + x; + if (lo < y) hi++; + + return (hi || lo >= m ? lo - m : lo); + } + else { /* P3 */ + + /* first reduction */ + x = y = hi; + hi >>= 24; + + x = lo - x; + if (x > lo) hi--; + + y <<= 40; + lo = y + x; + if (lo < y) hi++; + + /* second reduction */ + x = y = hi; + hi >>= 24; + + x = lo - x; + if (x > lo) hi--; + + y <<= 40; + lo = y + x; + if (lo < y) hi++; + + /* third reduction */ + x = y = hi; + hi >>= 24; + + x = lo - x; + if (x > lo) hi--; + + y <<= 40; + lo = y + x; + if (lo < y) hi++; + + return (hi || lo >= m ? lo - m : lo); + } +} + +static inline void +x64_mulmod2c(mpd_uint_t *a, mpd_uint_t *b, mpd_uint_t w, mpd_uint_t m) +{ + *a = x64_mulmod(*a, w, m); + *b = x64_mulmod(*b, w, m); +} + +static inline void +x64_mulmod2(mpd_uint_t *a0, mpd_uint_t b0, mpd_uint_t *a1, mpd_uint_t b1, mpd_uint_t m) +{ + *a0 = x64_mulmod(*a0, b0, m); + *a1 = x64_mulmod(*a1, b1, m); +} + +static inline +mpd_uint_t x64_powmod(mpd_uint_t base, mpd_uint_t exp, mpd_uint_t umod) +{ + mpd_uint_t r = 1; + + while (exp > 0) { + if (exp & 1) + r = x64_mulmod(r, base, umod); + base = x64_mulmod(base, base, umod); + exp >>= 1; + } + + return r; +} +#endif + + +/**************************************************************************/ +/* Pentium Pro modular arithmetic */ +/**************************************************************************/ + +/* + * Description of the algorithm in apfloat.pdf, Chapter 7.1.1, by Mikko Tommila. + * http://www.apfloat.org/apfloat/2.41/ + * + * Remarks: + * + * - dinvmod points to an array of three uint32_t, which is interpreted + * as an 80 bit long double. + * - Intel compilers prior to version 11 do not seem to handle the + * __GNUC__ inline assembly correctly. + * - random tests are provided in tests/extended/ppro_mulmod.c + */ + +#ifdef PPRO +#ifdef __GNUC__ + +/* all operands < dmod */ +static inline mpd_uint_t +ppro_mulmod(mpd_uint_t a, mpd_uint_t b, double *dmod, uint32_t *dinvmod) +{ + mpd_uint_t retval; + + asm( + "fildl %2\n\t"\ + "fildl %1\n\t"\ + "fmulp %%st, %%st(1)\n\t"\ + "fldt (%4)\n\t"\ + "fmul %%st(1), %%st\n\t"\ + "flds MPD_TWO63\n\t"\ + "fadd %%st, %%st(1)\n\t"\ + "fsubrp %%st, %%st(1)\n\t"\ + "fldl (%3)\n\t"\ + "fmulp %%st, %%st(1)\n\t"\ + "fsubrp %%st, %%st(1)\n\t"\ + "fistpl %0\n\t"\ + : "=m" (retval)\ + : "m" (a), "m" (b), "r" (dmod), "r" (dinvmod)\ + : "st", "memory" + ); + + return retval; + +} + +/* all operands < dmod */ +static inline void +ppro_mulmod2c(mpd_uint_t *a0, mpd_uint_t *a1, mpd_uint_t w, double *dmod, uint32_t *dinvmod) +{ + + asm( + "fildl %2\n\t"\ + "fildl (%1)\n\t"\ + "fmul %%st(1), %%st\n\t"\ + "fxch %%st(1)\n\t"\ + "fildl (%0)\n\t"\ + "fmulp %%st, %%st(1) \n\t"\ + "fldt (%4)\n\t"\ + "flds MPD_TWO63\n\t"\ + "fld %%st(2)\n\t"\ + "fmul %%st(2)\n\t"\ + "fadd %%st(1)\n\t"\ + "fsub %%st(1)\n\t"\ + "fmull (%3)\n\t"\ + "fsubrp %%st, %%st(3)\n\t"\ + "fxch %%st(2)\n\t"\ + "fistpl (%0)\n\t"\ + "fmul %%st(2)\n\t"\ + "fadd %%st(1)\n\t"\ + "fsubp %%st, %%st(1)\n\t"\ + "fmull (%3)\n\t"\ + "fsubrp %%st, %%st(1)\n\t"\ + "fistpl (%1)\n\t"\ + : : "r" (a0), "r" (a1), "m" (w), "r" (dmod), "r" (dinvmod)\ + : "st", "memory" + ); + +} + +/* all operands < dmod */ +static inline void +ppro_mulmod2(mpd_uint_t *a0, mpd_uint_t b0, mpd_uint_t *a1, mpd_uint_t b1, double *dmod, uint32_t *dinvmod) +{ + + asm( + "fildl %3\n\t"\ + "fildl (%2)\n\t"\ + "fmulp %%st, %%st(1)\n\t"\ + "fildl %1\n\t"\ + "fildl (%0)\n\t"\ + "fmulp %%st, %%st(1)\n\t"\ + "fldt (%5)\n\t"\ + "fld %%st(2)\n\t"\ + "fmul %%st(1), %%st\n\t"\ + "fxch %%st(1)\n\t"\ + "fmul %%st(2), %%st\n\t"\ + "flds MPD_TWO63\n\t"\ + "fldl (%4)\n\t"\ + "fxch %%st(3)\n\t"\ + "fadd %%st(1), %%st\n\t"\ + "fxch %%st(2)\n\t"\ + "fadd %%st(1), %%st\n\t"\ + "fxch %%st(2)\n\t"\ + "fsub %%st(1), %%st\n\t"\ + "fxch %%st(2)\n\t"\ + "fsubp %%st, %%st(1)\n\t"\ + "fxch %%st(1)\n\t"\ + "fmul %%st(2), %%st\n\t"\ + "fxch %%st(1)\n\t"\ + "fmulp %%st, %%st(2)\n\t"\ + "fsubrp %%st, %%st(3)\n\t"\ + "fsubrp %%st, %%st(1)\n\t"\ + "fxch %%st(1)\n\t"\ + "fistpl (%2)\n\t"\ + "fistpl (%0)\n\t"\ + : : "r" (a0), "m" (b0), "r" (a1), "m" (b1), "r" (dmod), "r" (dinvmod)\ + : "st", "memory" + ); + +} +/* END PPRO __GNUC__ */ +#elif defined (_MSC_VER) + +/* all operands < dmod */ +static inline mpd_uint_t __cdecl +ppro_mulmod(mpd_uint_t a, mpd_uint_t b, double *dmod, uint32_t *dinvmod) +{ + mpd_uint_t retval; + + __asm { + mov eax, dinvmod + mov edx, dmod + fild b + fild a + fmulp st(1), st + fld TBYTE PTR [eax] + fmul st, st(1) + fld MPD_TWO63 + fadd st(1), st + fsubp st(1), st + fld QWORD PTR [edx] + fmulp st(1), st + fsubp st(1), st + fistp retval + } + + return retval; +} + +/* all operands < dmod */ +static inline mpd_uint_t __cdecl +ppro_mulmod2c(mpd_uint_t *a0, mpd_uint_t *a1, mpd_uint_t w, double *dmod, uint32_t *dinvmod) +{ + __asm { + mov ecx, dmod + mov edx, a1 + mov ebx, dinvmod + mov eax, a0 + fild w + fild DWORD PTR [edx] + fmul st, st(1) + fxch st(1) + fild DWORD PTR [eax] + fmulp st(1), st + fld TBYTE PTR [ebx] + fld MPD_TWO63 + fld st(2) + fmul st, st(2) + fadd st, st(1) + fsub st, st(1) + fmul QWORD PTR [ecx] + fsubp st(3), st + fxch st(2) + fistp DWORD PTR [eax] + fmul st, st(2) + fadd st, st(1) + fsubrp st(1), st + fmul QWORD PTR [ecx] + fsubp st(1), st + fistp DWORD PTR [edx] + } +} + +/* all operands < dmod */ +static inline void __cdecl +ppro_mulmod2(mpd_uint_t *a0, mpd_uint_t b0, mpd_uint_t *a1, mpd_uint_t b1, double *dmod, uint32_t *dinvmod) +{ + __asm { + mov ecx, dmod + mov edx, a1 + mov ebx, dinvmod + mov eax, a0 + fild b1 + fild DWORD PTR [edx] + fmulp st(1), st + fild b0 + fild DWORD PTR [eax] + fmulp st(1), st + fld TBYTE PTR [ebx] + fld st(2) + fmul st, st(1) + fxch st(1) + fmul st, st(2) + fld DWORD PTR MPD_TWO63 + fld QWORD PTR [ecx] + fxch st(3) + fadd st, st(1) + fxch st(2) + fadd st, st(1) + fxch st(2) + fsub st, st(1) + fxch st(2) + fsubrp st(1), st + fxch st(1) + fmul st, st(2) + fxch st(1) + fmulp st(2), st + fsubp st(3), st + fsubp st(1), st + fxch st(1) + fistp DWORD PTR [edx] + fistp DWORD PTR [eax] + } +} +#endif /* PPRO _MSC_VER */ + + +/* all operands < dmod */ +static inline mpd_uint_t +ppro_powmod(mpd_uint_t base, mpd_uint_t exp, double *dmod, uint32_t *dinvmod) +{ + mpd_uint_t r = 1; + + while (exp > 0) { + if (exp & 1) + r = ppro_mulmod(r, base, dmod, dinvmod); + base = ppro_mulmod(base, base, dmod, dinvmod); + exp >>= 1; + } + + return r; +} +#endif /* PPRO */ + + +#endif /* UMODARITH_H */ + + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/vccompat.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/vccompat.h Thu Jan 7 13:02:51 2010 @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#ifndef VCCOMPAT_H +#define VCCOMPAT_H + + +/* Visual C fixes: no stdint.h, no snprintf ...*/ +#ifdef _MSC_VER + #include "vcstdint.h" + #undef inline + #define inline __inline + #undef random + #define random rand + #undef srandom + #define srandom srand + #undef snprintf + #define snprintf sprintf_s + #undef strncasecmp + #define strncasecmp _strnicmp + #undef strcasecmp + #define strcasecmp _stricmp + #undef strtoll + #define strtoll _strtoi64 +#endif + + +#endif /* VCCOMPAT_H */ + + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/vcdiv64.asm ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/vcdiv64.asm Thu Jan 7 13:02:51 2010 @@ -0,0 +1,28 @@ +; +; Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. +; Licensed to PSF under a Contributor Agreement. +; + + +PUBLIC _mpd_div_words +_TEXT SEGMENT +q$ = 8 +r$ = 16 +hi$ = 24 +lo$ = 32 +d$ = 40 +_mpd_div_words PROC + mov r10, rdx + mov rdx, r8 + mov rax, r9 + div QWORD PTR d$[rsp] + mov QWORD PTR [r10], rdx + mov QWORD PTR [rcx], rax + ret 0 +_mpd_div_words ENDP +_TEXT ENDS + + +end + + Added: python/branches/py3k-cdecimal/Modules/cdecimal/vcstdint.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/vcstdint.h Thu Jan 7 13:02:51 2010 @@ -0,0 +1,232 @@ +// ISO C9x compliant stdint.h for Microsoft Visual Studio +// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 +// +// Copyright (c) 2006-2008 Alexander Chemeris +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. The name of the author may be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _MSC_VER // [ +#error "Use this header only with Microsoft Visual C++ compilers!" +#endif // _MSC_VER ] + +#ifndef _MSC_STDINT_H_ // [ +#define _MSC_STDINT_H_ + +#if _MSC_VER > 1000 +#pragma once +#endif + +#include + +// For Visual Studio 6 in C++ mode wrap include with 'extern "C++" {}' +// or compiler give many errors like this: +// error C2733: second C linkage of overloaded function 'wmemchr' not allowed +#if (_MSC_VER < 1300) && defined(__cplusplus) + extern "C++" { +#endif +# include +#if (_MSC_VER < 1300) && defined(__cplusplus) + } +#endif + +// Define _W64 macros to mark types changing their size, like intptr_t. +#ifndef _W64 +# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 +# define _W64 __w64 +# else +# define _W64 +# endif +#endif + + +// 7.18.1 Integer types + +// 7.18.1.1 Exact-width integer types +typedef __int8 int8_t; +typedef __int16 int16_t; +typedef __int32 int32_t; +typedef __int64 int64_t; +typedef unsigned __int8 uint8_t; +typedef unsigned __int16 uint16_t; +typedef unsigned __int32 uint32_t; +typedef unsigned __int64 uint64_t; + +// 7.18.1.2 Minimum-width integer types +typedef int8_t int_least8_t; +typedef int16_t int_least16_t; +typedef int32_t int_least32_t; +typedef int64_t int_least64_t; +typedef uint8_t uint_least8_t; +typedef uint16_t uint_least16_t; +typedef uint32_t uint_least32_t; +typedef uint64_t uint_least64_t; + +// 7.18.1.3 Fastest minimum-width integer types +typedef int8_t int_fast8_t; +typedef int16_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef int64_t int_fast64_t; +typedef uint8_t uint_fast8_t; +typedef uint16_t uint_fast16_t; +typedef uint32_t uint_fast32_t; +typedef uint64_t uint_fast64_t; + +// 7.18.1.4 Integer types capable of holding object pointers +#ifdef _WIN64 // [ + typedef __int64 intptr_t; + typedef unsigned __int64 uintptr_t; +#else // _WIN64 ][ + typedef _W64 int intptr_t; + typedef _W64 unsigned int uintptr_t; +#endif // _WIN64 ] + +// 7.18.1.5 Greatest-width integer types +typedef int64_t intmax_t; +typedef uint64_t uintmax_t; + + +// 7.18.2 Limits of specified-width integer types + +#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259 + +// 7.18.2.1 Limits of exact-width integer types +#define INT8_MIN ((int8_t)_I8_MIN) +#define INT8_MAX _I8_MAX +#define INT16_MIN ((int16_t)_I16_MIN) +#define INT16_MAX _I16_MAX +#define INT32_MIN ((int32_t)_I32_MIN) +#define INT32_MAX _I32_MAX +#define INT64_MIN ((int64_t)_I64_MIN) +#define INT64_MAX _I64_MAX +#define UINT8_MAX _UI8_MAX +#define UINT16_MAX _UI16_MAX +#define UINT32_MAX _UI32_MAX +#define UINT64_MAX _UI64_MAX + +// 7.18.2.2 Limits of minimum-width integer types +#define INT_LEAST8_MIN INT8_MIN +#define INT_LEAST8_MAX INT8_MAX +#define INT_LEAST16_MIN INT16_MIN +#define INT_LEAST16_MAX INT16_MAX +#define INT_LEAST32_MIN INT32_MIN +#define INT_LEAST32_MAX INT32_MAX +#define INT_LEAST64_MIN INT64_MIN +#define INT_LEAST64_MAX INT64_MAX +#define UINT_LEAST8_MAX UINT8_MAX +#define UINT_LEAST16_MAX UINT16_MAX +#define UINT_LEAST32_MAX UINT32_MAX +#define UINT_LEAST64_MAX UINT64_MAX + +// 7.18.2.3 Limits of fastest minimum-width integer types +#define INT_FAST8_MIN INT8_MIN +#define INT_FAST8_MAX INT8_MAX +#define INT_FAST16_MIN INT16_MIN +#define INT_FAST16_MAX INT16_MAX +#define INT_FAST32_MIN INT32_MIN +#define INT_FAST32_MAX INT32_MAX +#define INT_FAST64_MIN INT64_MIN +#define INT_FAST64_MAX INT64_MAX +#define UINT_FAST8_MAX UINT8_MAX +#define UINT_FAST16_MAX UINT16_MAX +#define UINT_FAST32_MAX UINT32_MAX +#define UINT_FAST64_MAX UINT64_MAX + +// 7.18.2.4 Limits of integer types capable of holding object pointers +#ifdef _WIN64 // [ +# define INTPTR_MIN INT64_MIN +# define INTPTR_MAX INT64_MAX +# define UINTPTR_MAX UINT64_MAX +#else // _WIN64 ][ +# define INTPTR_MIN INT32_MIN +# define INTPTR_MAX INT32_MAX +# define UINTPTR_MAX UINT32_MAX +#endif // _WIN64 ] + +// 7.18.2.5 Limits of greatest-width integer types +#define INTMAX_MIN INT64_MIN +#define INTMAX_MAX INT64_MAX +#define UINTMAX_MAX UINT64_MAX + +// 7.18.3 Limits of other integer types + +#ifdef _WIN64 // [ +# define PTRDIFF_MIN _I64_MIN +# define PTRDIFF_MAX _I64_MAX +#else // _WIN64 ][ +# define PTRDIFF_MIN _I32_MIN +# define PTRDIFF_MAX _I32_MAX +#endif // _WIN64 ] + +#define SIG_ATOMIC_MIN INT_MIN +#define SIG_ATOMIC_MAX INT_MAX + +#ifndef SIZE_MAX // [ +# ifdef _WIN64 // [ +# define SIZE_MAX _UI64_MAX +# else // _WIN64 ][ +# define SIZE_MAX _UI32_MAX +# endif // _WIN64 ] +#endif // SIZE_MAX ] + +// WCHAR_MIN and WCHAR_MAX are also defined in +#ifndef WCHAR_MIN // [ +# define WCHAR_MIN 0 +#endif // WCHAR_MIN ] +#ifndef WCHAR_MAX // [ +# define WCHAR_MAX _UI16_MAX +#endif // WCHAR_MAX ] + +#define WINT_MIN 0 +#define WINT_MAX _UI16_MAX + +#endif // __STDC_LIMIT_MACROS ] + + +// 7.18.4 Limits of other integer types + +#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 + +// 7.18.4.1 Macros for minimum-width integer constants + +#define INT8_C(val) val##i8 +#define INT16_C(val) val##i16 +#define INT32_C(val) val##i32 +#define INT64_C(val) val##i64 + +#define UINT8_C(val) val##ui8 +#define UINT16_C(val) val##ui16 +#define UINT32_C(val) val##ui32 +#define UINT64_C(val) val##ui64 + +// 7.18.4.2 Macros for greatest-width integer constants +#define INTMAX_C INT64_C +#define UINTMAX_C UINT64_C + +#endif // __STDC_CONSTANT_MACROS ] + + +#endif // _MSC_STDINT_H_ ] From python-checkins at python.org Thu Jan 7 13:13:35 2010 From: python-checkins at python.org (tarek.ziade) Date: Thu, 07 Jan 2010 12:13:35 -0000 Subject: [Python-checkins] r77343 - peps/trunk/pep-0345.txt Message-ID: Author: tarek.ziade Date: Thu Jan 7 13:13:35 2010 New Revision: 77343 Log: remove occurences of 'package' that means 'distribution' here Modified: peps/trunk/pep-0345.txt Modified: peps/trunk/pep-0345.txt ============================================================================== --- peps/trunk/pep-0345.txt (original) +++ peps/trunk/pep-0345.txt Thu Jan 7 13:13:35 2010 @@ -57,7 +57,7 @@ Name :::: -The name of the package. +The name of the distributions. Example:: @@ -67,7 +67,7 @@ Version ::::::: -A string containing the package's version number. This +A string containing the distribution's version number. This field must be in the format specified in PEP 386. Example:: @@ -79,7 +79,7 @@ ::::::::::::::::::::::: A Platform specification describing an operating system supported by -the package which is not listed in the "Operating System" Trove classifiers. +the distribution which is not listed in the "Operating System" Trove classifiers. See "Classifier" below. Examples:: @@ -93,7 +93,7 @@ Binary distributions containing a PKG-INFO file will use the Supported-Platform field in their metadata to specify the OS and -CPU for which the binary package was compiled. The semantics of +CPU for which the binary distribution was compiled. The semantics of the Supported-Platform field are not specified in this PEP. Example:: @@ -105,7 +105,7 @@ Summary ::::::: -A one-line summary of what the package does. +A one-line summary of what the distribution does. Example:: @@ -115,7 +115,7 @@ Description (optional) :::::::::::::::::::::: -A longer description of the package that can run to several +A longer description of the distribution that can run to several paragraphs. Software that deals with metadata should not assume any maximum size for this field, though people shouldn't include their instruction manual as the description. @@ -152,7 +152,7 @@ ::::::::::::::::::: A list of additional keywords to be used to assist searching -for the package in a larger catalog. +for the distribution in a larger catalog. Example:: @@ -162,7 +162,7 @@ Home-page (optional) :::::::::::::::::::: -A string containing the URL for the package's home page. +A string containing the URL for the distribution's home page. Example:: @@ -172,9 +172,9 @@ Download-URL :::::::::::: -A string containing the URL from which this version of the package +A string containing the URL from which this version of the distribution can be downloaded. (This means that the URL can't be something like -".../package-latest.tgz", but instead must be ".../package-0.45.tgz".) +".../BeagleVote-latest.tgz", but instead must be ".../BeagleVote-0.45.tgz".) Author (optional) @@ -214,7 +214,7 @@ A string containing the maintainer's name at a minimum; additional contact information may be provided. -Note that this field is intended for use when a package is being +Note that this field is intended for use when a project is being maintained by someone other than the original author: it should be omitted if it is identical to ``Author``. @@ -231,7 +231,7 @@ a name and e-mail address in the legal forms for a RFC-822 ``From:`` header. -Note that this field is intended for use when a package is being +Note that this field is intended for use when a project is being maintained by someone other than the original author: it should be omitted if it is identical to ``Author-email``. @@ -243,7 +243,7 @@ License (optional) :::::::::::::::::: -Text indicating the license covering the package where the license +Text indicating the license covering the distribution where the license is not a selection from the "License" Trove classifiers. See "Classifier" below. This field may also be used to specify a particular version of a licencse which is named via the ``Classifier`` @@ -262,7 +262,7 @@ ::::::::::::::::::::::::: Each entry is a string giving a single classification value -for the package. Classifiers are described in PEP 301 [2]. +for the distribution. Classifiers are described in PEP 301 [2]. Examples:: @@ -274,7 +274,7 @@ :::::::::::::::::::::::::::: Each entry contains a string naming some other distutils -project required by this package. +project required by this distribution. The format of a requirement string is identical to that of a distutils project name (e.g., as found in the ``Name:`` field. @@ -321,16 +321,16 @@ Examples:: - Provides-Dist: OtherPackage - Provides-Dist: AnotherPackage (3.4) + Provides-Dist: OtherProject + Provides-Dist: AnotherProject (3.4) Provides-Dist: virtual_package Obsoletes-Dist (multiple use) ::::::::::::::::::::::::::::: -Each entry contains a string describing a distutils project which -this package renders obsolete, meaning that the two packages +Each entry contains a string describing a distutils project's distribution +which this distribution renders obsolete, meaning that the two projects should not be installed at the same time. Version declarations can be supplied. Version numbers must be in the @@ -344,13 +344,13 @@ Examples:: Obsoletes-Dist: Gorgon - Obsoletes-Dist: OtherPackage (<3.0) + Obsoletes-Dist: OtherProject (<3.0) Requires-Python ::::::::::::::: -This field specifies the Python version(s) that the package is +This field specifies the Python version(s) that the distribution is guaranteed to be compatible with. Version numbers must be in the format specified in `Version Specifiers`_. @@ -367,9 +367,9 @@ :::::::::::::::::::::::::::::::: Each entry contains a string describing some dependency in the -system that the package is to be used. This field is intended to -serve as a hint to downstream package maintainers, and has no -semantics which are meaningful to the ``distutils`` package. +system that the distribution is to be used. This field is intended to +serve as a hint to downstream project maintainers, and has no +semantics which are meaningful to the ``distutils`` distribution. The format of a requirement string is a name of an external dependency, optionally followed by a version declaration within From python-checkins at python.org Thu Jan 7 13:23:08 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 07 Jan 2010 12:23:08 -0000 Subject: [Python-checkins] r77344 - in python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests: README.txt bench.py checkleak.py ctx-deccheck.py deccheck.py formathelper.py genlocale.py genrandformat.py genrandlocale.py randdec.py Message-ID: Author: stefan.krah Date: Thu Jan 7 13:23:07 2010 New Revision: 77344 Log: Initial import of Lib/test/decimal_extended_tests Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/README.txt (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/bench.py (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/checkleak.py (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/ctx-deccheck.py (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/deccheck.py (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/formathelper.py (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/genlocale.py (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/genrandformat.py (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/genrandlocale.py (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/randdec.py (contents, props changed) Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/README.txt ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/README.txt Thu Jan 7 13:23:07 2010 @@ -0,0 +1,14 @@ + + +Tests against decimal.py: + + +../../../python deccheck.py +../../../python ctx-deccheck.py + + +You should not see errors apart from an occasional "Cannot convert byte to string", +see: http://bugs.python.org/issue7442 + + + Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/bench.py ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/bench.py Thu Jan 7 13:23:07 2010 @@ -0,0 +1,145 @@ +#!/usr/bin/env python + +# +# Copyright (C) 2001-2010 Python Software Foundation. All Rights Reserved. +# Modified and extended by Stefan Krah. +# + + +import time +from math import log, ceil +import decimal +import cdecimal +from gmpy import mpf, mpz, set_minprec + + +Decimal = decimal.Decimal +Cdecimal = cdecimal.Decimal + + +# Pi function from the decimal.py documentation +def pi_native(prec=None): + """native float""" + lasts, t, s, n, na, d, da = 0, 3.0, 3, 1, 0, 0, 24 + while s != lasts: + lasts = s + n, na = n+na, na+8 + d, da = d+da, da+32 + t = (t * n) / d + s += t + return s + +def pi_decimal(prec): + """Decimal""" + decimal.getcontext().prec = prec + lasts, t, s, n, na, d, da = Decimal(0), Decimal(3), Decimal(3), Decimal(1), Decimal(0), Decimal(0), Decimal(24) + while s != lasts: + lasts = s + n, na = n+na, na+8 + d, da = d+da, da+32 + t = (t * n) / d + s += t + return s + +def pi_Cdecimal(prec): + """cdecimal.Cdecimal""" + cdecimal.getcontext().prec = prec + lasts, t, s, n, na, d, da = Cdecimal(0), Cdecimal(3), Cdecimal(3), Cdecimal(1), Cdecimal(0), Cdecimal(0), Cdecimal(24) + while s != lasts: + lasts = s + n, na = n+na, na+8 + d, da = d+da, da+32 + t = (t * n) / d + s += t + return s + +def pi_mpf(prec): + """gmp.mpf""" + set_minprec(prec) + lasts, t, s, n, na, d, da = mpf(0), mpf(3), mpf(3), mpf(1), mpf(0), mpf(0), mpf(24) + while s != lasts: + lasts = s + n, na = n+na, na+8 + d, da = d+da, da+32 + t = (t * n) / d + s += t + return s + + +def factorial(n, m): + if (n > m): + return factorial(m, n) + elif m == 0: + return 1 + elif n == m: + return n + else: + return factorial(n, (n+m)//2) * factorial((n+m)//2 + 1, m) + + +d = { + "native": pi_native, + "cdecimal": pi_Cdecimal, + "gmpy": pi_mpf, + "decimal": pi_decimal, +} + + +def prec_to_bits(prec): + return ceil(prec * log(10) / log(2)) + + + +print("\n# ======================================================================") +print("# Calculating pi, 10000 iterations") +print("# ======================================================================\n") + +for prec in [9, 19, 38, 100]: + print("\nPrecision: %d decimal digits\n" % prec) + for name in ["native", "cdecimal", "gmpy", "decimal"]: + if prec > 19 and (name == "native" or name == "decimal"): + continue + p = prec + if name == "gmpy": + p = int(prec_to_bits(prec)) + func = d[name] + start = time.time() + for i in range(10000): + x = func(p) + print("%s:" % name) + print("result: %s" % str(x)) + print("time: %fs\n" % (time.time()-start)) + + +print("\n# ======================================================================") +print("# Factorial") +print("# ======================================================================\n") + +cdecimal.getcontext().prec = cdecimal.MAX_PREC + +for n in [100000, 1000000, 10000000, 100000000]: + + print("n = %d\n" % n) + + start_calc = time.time() + x = factorial(Cdecimal(n), 0) + end_calc = time.time() + start_conv = time.time() + sx = str(x) + end_conv = time.time() + print("cdecimal:") + print("calculation time: %fs" % (end_calc-start_calc)) + print("conversion time: %fs\n" % (end_conv-start_conv)) + + start_calc = time.time() + y = factorial(mpz(n), 0) + end_calc = time.time() + start_conv = time.time() + sy = str(y) + end_conv = time.time() + + print("gmpy:") + print("calculation time: %fs" % (end_calc-start_calc)) + print("conversion time: %fs\n\n" % (end_conv-start_conv)) + + assert(sx == sy) Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/checkleak.py ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/checkleak.py Thu Jan 7 13:23:07 2010 @@ -0,0 +1,21 @@ +# +# Valgrind claims a possible leak indicating that the signal-dicts +# of the context are not freed properly. The tests below do not +# show any leaks. +# + + +from cdecimal import * + + +for i in xrange(10000000): + c = Context() + c.prec = 9 + setcontext(c) + + +for i in xrange(10000000): + c = Context() + d = getcontext().copy() + del(c) + del(d) Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/ctx-deccheck.py ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/ctx-deccheck.py Thu Jan 7 13:23:07 2010 @@ -0,0 +1,929 @@ +#!/usr/bin/env python + +# +# Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. +# Licensed to PSF under a Contributor Agreement. +# + +# Usage: python ctx-deccheck.py [--short|--medium|--long|--all] + + +import cdecimal, decimal +import sys, inspect +from copy import copy + + +py_minor = sys.version_info[1] +py_micro = sys.version_info[2] + + +# Translate symbols. +deccond = { + cdecimal.Clamped: decimal.Clamped, + cdecimal.ConversionSyntax: decimal.ConversionSyntax, + cdecimal.DivisionByZero: decimal.DivisionByZero, + cdecimal.DivisionImpossible: decimal.InvalidOperation, + cdecimal.DivisionUndefined: decimal.DivisionUndefined, + cdecimal.Inexact: decimal.Inexact, + cdecimal.InvalidContext: decimal.InvalidContext, + cdecimal.InvalidOperation: decimal.InvalidOperation, + cdecimal.Overflow: decimal.Overflow, + cdecimal.Rounded: decimal.Rounded, + cdecimal.Subnormal: decimal.Subnormal, + cdecimal.Underflow: decimal.Underflow, +} + +mpdcond = { + decimal.Clamped: cdecimal.Clamped, + decimal.ConversionSyntax: cdecimal.ConversionSyntax, + decimal.DivisionByZero: cdecimal.DivisionByZero, + decimal.InvalidOperation: cdecimal.DivisionImpossible, + decimal.DivisionUndefined: cdecimal.DivisionUndefined, + decimal.Inexact: cdecimal.Inexact, + decimal.InvalidContext: cdecimal.InvalidContext, + decimal.InvalidOperation: cdecimal.InvalidOperation, + decimal.Overflow: cdecimal.Overflow, + decimal.Rounded: cdecimal.Rounded, + decimal.Subnormal: cdecimal.Subnormal, + decimal.Underflow: cdecimal.Underflow +} + +decround = { + cdecimal.ROUND_UP: decimal.ROUND_UP, + cdecimal.ROUND_DOWN: decimal.ROUND_DOWN, + cdecimal.ROUND_CEILING: decimal.ROUND_CEILING, + cdecimal.ROUND_FLOOR: decimal.ROUND_FLOOR, + cdecimal.ROUND_HALF_UP: decimal.ROUND_HALF_UP, + cdecimal.ROUND_HALF_DOWN: decimal.ROUND_HALF_DOWN, + cdecimal.ROUND_HALF_EVEN: decimal.ROUND_HALF_EVEN, + cdecimal.ROUND_05UP: decimal.ROUND_05UP +} + + +class Context(object): + """Provides a convenient way of syncing the cdecimal and decimal contexts""" + + __slots__ = ['f', 'd'] + + def __init__(self, mpdctx=cdecimal.getcontext()): + """Initialization is from the cdecimal context""" + self.f = mpdctx + self.d = decimal.getcontext() + self.d.prec = self.f.prec + self.d.Emin = self.f.Emin + self.d.Emax = self.f.Emax + self.d.rounding = decround[self.f.rounding] + self.d.capitals = self.f.capitals + self.settraps([sig for sig in self.f.traps if self.f.traps[sig]]) + self.setstatus([sig for sig in self.f.flags if self.f.flags[sig]]) + self.d._clamp = self.f._clamp + + def getprec(self): + assert(self.f.prec == self.d.prec) + return self.f.prec + + def setprec(self, val): + self.f.prec = val + self.d.prec = val + + def getemin(self): + assert(self.f.Emin == self.d.Emin) + return self.f.Emin + + def setemin(self, val): + self.f.Emin = val + self.d.Emin = val + + def getemax(self): + assert(self.f.Emax == self.d.Emax) + return self.f.Emax + + def setemax(self, val): + self.f.Emax = val + self.d.Emax = val + + def getround(self): + assert(self.f.rounding == self.d.rounding) + return self.f.rounding + + def setround(self, val): + self.f.rounding = val + self.d.rounding = decround[val] + + def getcapitals(self): + assert(self.f.capitals == self.d.capitals) + return self.f.capitals + + def setcapitals(self, val): + self.f.capitals = val + self.d.capitals = val + + def getclamp(self): + assert(self.f._clamp == self.d._clamp) + return self.f._clamp + + def setclamp(self, val): + self.f._clamp = val + self.d._clamp = val + + prec = property(getprec, setprec) + emin = property(getemin, setemin) + emax = property(getemax, setemax) + round = property(getround, setround) + clamp = property(getclamp, setclamp) + capitals = property(getcapitals, setcapitals) + + def clear_traps(self): + self.f.clear_traps() + for trap in self.d.traps: + self.d.traps[trap] = False + + def clear_status(self): + self.f.clear_flags() + self.d.clear_flags() + + def settraps(self, lst): # cdecimal signal list + self.clear_traps() + for signal in lst: + self.f.traps[signal] = True + self.d.traps[deccond[signal]] = True + + def setstatus(self, lst): # cdecimal signal list + self.clear_status() + for signal in lst: + self.f.flags[signal] = True + self.d.flags[deccond[signal]] = True + + def assert_eq_status(self): + """assert equality of cdecimal and decimal status""" + for signal in self.f.flags: + if self.f.flags[signal] == (not self.d.flags[deccond[signal]]): + return False + return True + + +# We don't want exceptions so that we can compare the status flags. +context = Context() +context.clear_traps() + + +_exc_fmt = "\ +cdecimal_sci: %s\n\ +decimal_sci: %s\n\ +cdecimal_eng: %s\n\ +decimal_eng: %s\n" + +_exc_fmt_tuple = "\ +cdecimal_tuple: %s\n\ +decimal_tuple: %s\n" + +_exc_fmt_obj = "\ +cdecimal: %s\n\ +decimal: %s\n\n" + +class CdecException(ArithmeticError): + def __init__(self, result, funcname, operands): + self.errstring = "Error in %s(%s" % (funcname, operands[0]) + for op in operands[1:]: + self.errstring += ", %s" % op + self.errstring += "):\n\n" + if isinstance(result, cdec): + self.errstring += _exc_fmt % (str(result.mpd), + str(result.dec), + result.mpd.to_eng(), + result.dec.to_eng_string()) + mpd_tuple = result.mpd.as_tuple() + dec_tuple = result.dec.as_tuple() + if mpd_tuple != dec_tuple: + self.errstring += _exc_fmt_tuple % (str(mpd_tuple), + str(dec_tuple)) + else: + self.errstring += _exc_fmt_obj % (str(result[0]), str(result[1])) + self.errstring += "%s\n%s\n\n" % (str(context.f), str(context.d)) + def __str__(self): + return self.errstring + + +class dHandlerCdec: + """For cdec return values: + + Handle known disagreements between decimal.py and cdecimal.so. + This is just a temporary measure against cluttered output. + Detection is crude and possibly unreliable.""" + + def __init__(self): + self.logb_round_if_gt_prec = 0 + self.ulpdiff = 0 + self.powmod_zeros = 0 + self.total_mag_nan = 0 + self.quantize_status = 0 + self.max_status = 0 + + def default(self, result, operands): + return False + + def ulp(self, dec): + """Harrison ULP: ftp://ftp.inria.fr/INRIA/publication/publi-pdf/RR/RR-5504.pdf""" + a = dec.next_plus() + b = dec.next_minus() + return abs(a - b) + + def bin_resolve_ulp(self, result, funcname, operands): + """Results of cdecimal's power function are currently not always + correctly rounded. Check if the cdecimal result differs by less + than 1 ULP from the correctly rounded decimal.py result.""" + mpdstr = str(result.mpd) + mpdresult = decimal.Decimal(mpdstr) + decresult = result.dec + deculp = self.ulp(decresult) + op1 = operands[0].dec + op2 = operands[1].dec + tmpctx = context.d.copy() + tmpctx.prec *= 2 + # result, recalculated at double precision + dpresult = getattr(op1, funcname)(op2, context=tmpctx) + mpddiff = abs(dpresult - mpdresult) + if mpddiff >= deculp: + return False # not simply a disagreement, but wrong + decdiff = abs(dpresult - decresult) + if decdiff >= deculp: + return False # not simply a disagreement, but wrong + self.ulpdiff += 1 + return True + + def __pow__(self, result, operands): + """See DIFFERENCES.txt""" + if operands[2] is not None: # three argument __pow__ + if (operands[0].mpd.is_zero() != operands[1].mpd.is_zero()): + if (result.mpd == 0 or result.mpd == 1) and result.dec.is_nan(): + if not context.f.flags[cdecimal.InvalidOperation] and \ + context.d.flags[decimal.InvalidOperation]: + self.powmod_zeros += 1 + return True + elif context.f.flags[cdecimal.Rounded] and \ + context.f.flags[cdecimal.Inexact] and \ + context.d.flags[decimal.Rounded] and \ + context.d.flags[decimal.Inexact]: + return self.bin_resolve_ulp(result, "__pow__", operands) + else: + return False + + power = __pow__ + + if py_minor < 2: + def rotate(self, result, operands): + """truncate excess digits before the operation""" + if len(operands[0].dec._int) > context.f.prec: + return True + return False + shift = rotate + + def compare_total_mag(self, result, operands): + if operands[0].mpd.is_nan() and operands[1].mpd.is_nan() and \ + abs(result.mpd) == 1 and abs(result.dec) == 1: + self.total_mag_nan += 1 + return True + return False + compare_total = compare_total_mag + + def logb(self, result, operands): + if context.f.flags[cdecimal.Rounded] and \ + (not context.d.flags[decimal.Rounded]): + self.logb_round_if_gt_prec += 1 + return True + return False + + +class dHandlerObj(): + """For non-decimal return values: + + Handle known disagreements between decimal.py and cdecimal.so. + Currently there are none.""" + + def __init__(self): + pass + + def default(self, result, operands): + return False + + +dhandler_cdec = dHandlerCdec() +def cdec_known_disagreement(result, funcname, operands): + return getattr(dhandler_cdec, funcname, dhandler_cdec.default)(result, operands) + +#dhandler_obj = dHandlerObj() +#def obj_known_disagreement(result, funcname, operands): +# return getattr(dhandler_obj, funcname, dhandler_obj.default)(result, operands) + + + +def verify(result, funcname, operands): + """Verifies that after operation 'funcname' with operand(s) 'operands' + result[0] and result[1] as well as the context flags have the same + values.""" + if result[0] != result[1] or not context.assert_eq_status(): + #if obj_known_disagreement(result, funcname, operands): + # return # skip known disagreements + raise CdecException(result, funcname, operands) + + +class cdec(object): + """Joins cdecimal.so and decimal.py for redundant calculations with error + checking. Always calls the context methods of cdecimal and decimal. This + is not very clean, but an easy way of adapting deccheck.py for testing + context methods.""" + + __slots__ = ['mpd', 'dec'] + + def __new__(cls, value=None): + self = object.__new__(cls) + self.mpd = None + self.dec = None + if value is not None: + context.clear_status() + if isinstance(value, float): + self.mpd = context.f.create_decimal_from_float(value) + self.dec = context.d.create_decimal_from_float(value) + else: + self.mpd = context.f.create_decimal(value) + self.dec = context.d.create_decimal(value) + self.verify('__xnew__', (value,)) + return self + + def verify(self, funcname, operands): + """Verifies that after operation 'funcname' with operand(s) 'operands' + self.mpd and self.dec as well as the context flags have the same + values.""" + mpdstr = str(self.mpd) + decstr = str(self.dec) + mpdstr_eng = self.mpd.to_eng_string() + decstr_eng = self.dec.to_eng_string() + if mpdstr != decstr or mpdstr_eng != decstr_eng or \ + not context.assert_eq_status(): + if cdec_known_disagreement(self, funcname, operands): + return # skip known disagreements + raise CdecException(self, funcname, operands) + + def unaryfunc(self, funcname): + "unary function returning a cdec, uses the context methods" + context.clear_status() + c = cdec() + c.mpd = getattr(context.f, funcname)(self.mpd) + c.dec = getattr(context.d, funcname)(self.dec) + c.verify(funcname, (self,)) + return c + + def obj_unaryfunc(self, funcname): + "unary function returning an object other than a cdec" + context.clear_status() + r_mpd = getattr(context.f, funcname)(self.mpd) + r_dec = getattr(context.d, funcname)(self.dec) + verify((r_mpd, r_dec), funcname, (self,)) + return r_mpd + + def binaryfunc(self, other, funcname): + "binary function returning a cdec, uses the context methods" + context.clear_status() + c = cdec() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + c.mpd = getattr(context.f, funcname)(self.mpd, other_mpd) + c.dec = getattr(context.d, funcname)(self.dec, other_dec) + c.verify(funcname, (self, other)) + return c + + def obj_binaryfunc(self, other, funcname): + "binary function returning an object other than a cdec" + context.clear_status() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + r_mpd = getattr(context.f, funcname)(self.mpd, other_mpd) + r_dec = getattr(context.d, funcname)(self.dec, other_dec) + verify((r_mpd, r_dec), funcname, (self, other)) + return r_mpd + + def ternaryfunc(self, other, third, funcname): + "ternary function returning a cdec, uses the context methods" + context.clear_status() + c = cdec() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + third_mpd = third_dec = third + if isinstance(third, cdec): + third_mpd = third.mpd + third_dec = third.dec + if funcname == 'power': + if (third is not None): + c.mpd = getattr(context.f, 'powmod')(self.mpd, other_mpd, third_mpd) + else: + c.mpd = getattr(context.f, 'pow')(self.mpd, other_mpd) + else: + c.mpd = getattr(context.f, funcname)(self.mpd, other_mpd, third_mpd) + c.dec = getattr(context.d, funcname)(self.dec, other_dec, third_dec) + c.verify(funcname, (self, other, third)) + return c + + def __repr__(self): + self.obj_unaryfunc('__repr__') + return "cdec('" + str(self.mpd) + "')" + + def __str__(self): + self.obj_unaryfunc('__str__') + return str(self.mpd) + + def abs(self): + return self.unaryfunc('abs') + + def add(self, other): + return self.binaryfunc(other, 'add') + + def compare(self, other): + return self.binaryfunc(other, 'compare') + + def compare_signal(self, other): + return self.binaryfunc(other, 'compare_signal') + + def compare_total(self, other): + return self.binaryfunc(other, 'compare_total') + + def compare_total_mag(self, other): + return self.binaryfunc(other, 'compare_total_mag') + + def copy_abs(self): + return self.unaryfunc('copy_abs') + + def copy_decimal(self): + return self.unaryfunc('copy_decimal') + + def copy_negate(self): + return self.unaryfunc('copy_negate') + + def copy_sign(self, other): + return self.binaryfunc(other, 'copy_sign') + + def create_decimal(self): + return self.unaryfunc('create_decimal') + + def divide(self, other): + return self.binaryfunc(other, 'divide') + + def divide_int(self, other): + return self.binaryfunc(other, 'divide_int') + + def divmod(self, other): + context.clear_status() + q = cdec() + r = cdec() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + q.mpd, r.mpd = context.f.divmod(self.mpd, other_mpd) + q.dec, r.dec = context.d.divmod(self.dec, other_dec) + q.verify('divmod', (self, other)) + r.verify('divmod', (self, other)) + return (q, r) + + def exp(self): + return self.unaryfunc('exp') + + def fma(self, other, third): + return self.ternaryfunc(other, third, 'fma') + + # imag + # invroot + + def is_canonical(self): + return self.obj_unaryfunc('is_canonical') + + def is_finite(self): + return self.obj_unaryfunc('is_finite') + + def is_infinite(self): + return self.obj_unaryfunc('is_infinite') + + def is_nan(self): + return self.obj_unaryfunc('is_nan') + + def is_normal(self): + return self.obj_unaryfunc('is_normal') + + def is_qnan(self): + return self.obj_unaryfunc('is_qnan') + + def is_signed(self): + return self.obj_unaryfunc('is_signed') + + def is_snan(self): + return self.obj_unaryfunc('is_snan') + + def is_subnormal(self): + return self.obj_unaryfunc('is_subnormal') + + def is_zero(self): + return self.obj_unaryfunc('is_zero') + + def ln(self): + return self.unaryfunc('ln') + + def log10(self): + return self.unaryfunc('log10') + + def logb(self): + return self.unaryfunc('logb') + + def logical_and(self, other): + return self.binaryfunc(other, 'logical_and') + + def logical_invert(self): + return self.unaryfunc('logical_invert') + + def logical_or(self, other): + return self.binaryfunc(other, 'logical_or') + + def logical_xor(self, other): + return self.binaryfunc(other, 'logical_xor') + + def max(self, other): + return self.binaryfunc(other, 'max') + + def max_mag(self, other): + return self.binaryfunc(other, 'max_mag') + + def min(self, other): + return self.binaryfunc(other, 'min_mag') + + def min_mag(self, other): + return self.binaryfunc(other, 'min_mag') + + def minus(self): + return self.unaryfunc('minus') + + def multiply(self, other): + return self.binaryfunc(other, 'multiply') + + def next_minus(self): + return self.unaryfunc('next_minus') + + def next_plus(self): + return self.unaryfunc('next_plus') + + def next_toward(self, other): + return self.binaryfunc(other, 'next_toward') + + def normalize(self): + return self.unaryfunc('normalize') + + def number_class(self): + return self.obj_unaryfunc('number_class') + + def plus(self): + return self.unaryfunc('plus') + + def power(self, other, mod=None): + return self.ternaryfunc(other, mod, 'power') + + # powmod: same as __pow__ or power with three arguments + + def quantize(self, other): + return self.binaryfunc(other, 'quantize') + + # real + # reduce: same as normalize + + def remainder(self, other): + return self.binaryfunc(other, 'remainder') + + def remainder_near(self, other): + return self.binaryfunc(other, 'remainder_near') + + def rotate(self, other): + return self.binaryfunc(other, 'rotate') + + def same_quantum(self, other): + return self.obj_binaryfunc(other, 'same_quantum') + + def scaleb(self, other): + return self.binaryfunc(other, 'scaleb') + + def shift(self, other): + return self.binaryfunc(other, 'shift') + + # sign + + def sqrt(self): + return self.unaryfunc('sqrt') + + def subtract(self, other): + return self.binaryfunc(other, 'subtract') + + def to_eng_string(self): + return self.obj_unaryfunc('to_eng_string') + + def to_integral(self): + return self.unaryfunc('to_integral') + + def to_integral_exact(self): + return self.unaryfunc('to_integral_exact') + + def to_integral_value(self): + return self.unaryfunc('to_integral_value') + + def to_sci_string(self): + return self.obj_unaryfunc('to_sci_string') + + +def log(fmt, args=None): + if args: + sys.stdout.write(''.join((fmt, '\n')) % args) + else: + sys.stdout.write(''.join((str(fmt), '\n'))) + sys.stdout.flush() + +def test_unary(method, prec_lst, iter): + log("testing %s ...", method) + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = prec + for round in sorted(decround): + context.round = round + rprec = 10**prec + exprange = cdecimal.MAX_EMAX + if method in ['__int__', '__long__', '__trunc__', 'to_integral', \ + 'to_integral_value', 'to_integral_value']: + exprange = 9999 + for a in un_close_to_pow10(prec, exprange, iter): + try: + x = cdec(a) + getattr(x, method)() + except CdecException as err: + log(err) + for a in un_close_numbers(prec, exprange, -exprange, iter): + try: + x = cdec(a) + getattr(x, method)() + except CdecException as err: + log(err) + for a in un_incr_digits_tuple(prec, exprange, iter): + try: + x = cdec(a) + getattr(x, method)() + except CdecException as err: + log(err) + for i in range(1000): + try: + s = randdec(prec, exprange) + x = cdec(s) + getattr(x, method)() + except CdecException as err: + log(err) + except OverflowError: + pass + try: + s = randtuple(prec, exprange) + x = cdec(s) + getattr(x, method)() + except CdecException as err: + log(err) + except OverflowError: + pass + +def test_un_logical(method, prec_lst, iter): + log("testing %s ...", method) + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = prec + for round in sorted(decround): + context.round = round + for a in logical_un_incr_digits(prec, iter): + try: + x = cdec(a) + getattr(x, method)() + except CdecException as err: + log(err) + for i in range(1000): + try: + s = randdec(prec, 999999) + x = cdec(s) + getattr(x, method)() + except CdecException as err: + log(err) + except OverflowError: + pass + +def test_binary(method, prec_lst, iter): + log("testing %s ...", method) + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = prec + for round in sorted(decround): + context.round = round + exprange = cdecimal.MAX_EMAX + if method in ['__pow__', '__rpow__', 'power']: + exprange = 99999 + for a, b in bin_close_to_pow10(prec, exprange, iter): + try: + x = cdec(a) + y = cdec(b) + getattr(x, method)(y) + except CdecException as err: + log(err) + for a, b in bin_close_numbers(prec, exprange, -exprange, iter): + try: + x = cdec(a) + y = cdec(b) + getattr(x, method)(y) + except CdecException as err: + log(err) + for a, b in bin_incr_digits(prec, exprange, iter): + try: + x = cdec(a) + y = cdec(b) + getattr(x, method)(y) + except CdecException as err: + log(err) + for i in range(1000): + s1 = randdec(prec, exprange) + s2 = randdec(prec, exprange) + try: + x = cdec(s1) + y = cdec(s2) + getattr(x, method)(y) + except CdecException as err: + log(err) + +def test_bin_logical(method, prec_lst, iter): + log("testing %s ...", method) + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = prec + for round in sorted(decround): + context.round = round + for a, b in logical_bin_incr_digits(prec, iter): + try: + x = cdec(a) + y = cdec(b) + getattr(x, method)(y) + except CdecException as err: + log(err) + for i in range(1000): + s1 = randdec(prec, 999999) + s2 = randdec(prec, 999999) + try: + x = cdec(s1) + y = cdec(s2) + getattr(x, method)(y) + except CdecException as err: + log(err) + +def test_ternary(method, prec_lst, iter): + log("testing %s ...", method) + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = prec + for round in sorted(decround): + context.round = round + exprange = cdecimal.MAX_EMAX + if method in ['__pow__', 'power']: + exprange = 99999 + for a, b, c in tern_close_numbers(prec, exprange, -exprange, iter): + try: + x = cdec(a) + y = cdec(b) + z = cdec(c) + getattr(x, method)(y, z) + except CdecException as err: + log(err) + for a, b, c in tern_incr_digits(prec, exprange, iter): + try: + x = cdec(a) + y = cdec(b) + z = cdec(c) + getattr(x, method)(y, z) + except CdecException as err: + log(err) + for i in range(1000): + s1 = randdec(prec, 2*exprange) + s2 = randdec(prec, 2*exprange) + s3 = randdec(prec, 2*exprange) + try: + x = cdec(s1) + y = cdec(s2) + z = cdec(s3) + getattr(x, method)(y, z) + except CdecException as err: + log(err) + +def test_from_float(prec_lst): + log("testing create_decimal_from_float ...") + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = prec + for round in sorted(decround): + context.round = round + exprange = 384 + for i in range(1000): + intpart = str(random.randrange(100000000000000000000000000000000000000)) + fracpart = str(random.randrange(100000000000000000000000000000000000000)) + exp = str(random.randrange(-384, 384)) + fstring = intpart + '.' + fracpart + 'e' + exp + f = float(fstring) + try: + c = cdec(f) + except CdecException as err: + log(err) + + +if __name__ == '__main__': + + from randdec import * + import time + import sys + + + samples = 1 + iter = 1 + + if '--short' in sys.argv: + samples = 1 + iter = 1 + elif '--medium' in sys.argv: + samples = 1 + iter = None + elif '--long' in sys.argv: + samples = 5 + iter = None + elif '--all' in sys.argv: + samples = 100 + iter = None + + all_context_methods = set(dir(cdecimal.getcontext()) + dir(decimal.getcontext())) + all_cdec_methods = [m for m in dir(cdec) if m in all_context_methods] + untested_methods = [m for m in all_context_methods if not (m in all_cdec_methods)] + + unary_methods = [] + binary_methods = [] + ternary_methods = [] + for m in all_cdec_methods: + try: + l = len(inspect.getargspec(getattr(cdec, m))[0]) + except TypeError: + continue + if l == 1: + unary_methods.append(m) + elif l == 2: + binary_methods.append(m) + elif l == 3: + ternary_methods.append(m) + else: + raise ValueError((m, l)) + + unary_methods.remove('__repr__') + unary_methods.remove('__str__') + binary_methods.remove('__new__') + untested_methods.append('__repr__') + untested_methods.append('__str__') + untested_methods.append('__new__') + untested_methods.remove('create_decimal_from_float') + + binary_methods.append('power') + + untested_methods.sort() + unary_methods.sort() + binary_methods.sort() + ternary_methods.sort() + + + x = int(time.time()) + random.seed(x) + log("\nRandom seed: %d\n\n", x) + log("Skipping tests: \n\n%s\n", untested_methods) + + + for method in unary_methods: + prec_lst = sorted(random.sample(range(1, 101), samples)) + test_unary(method, prec_lst, iter) + + for method in binary_methods: + prec_lst = sorted(random.sample(range(1, 101), samples)) + test_binary(method, prec_lst, iter) + + for method in ternary_methods: + prec_lst = sorted(random.sample(range(1, 101), samples)) + test_ternary(method, prec_lst, iter) + + prec_lst = sorted(random.sample(range(1, 101), samples)) + test_un_logical('logical_invert', prec_lst, iter) + + for method in ['logical_and', 'logical_or', 'logical_xor']: + prec_lst = sorted(random.sample(range(1, 101), samples)) + test_bin_logical(method, prec_lst, iter) + + prec_lst = sorted(random.sample(range(1, 101), samples)) + test_from_float(prec_lst) Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/deccheck.py ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/deccheck.py Thu Jan 7 13:23:07 2010 @@ -0,0 +1,1295 @@ +#!/usr/bin/env python + +# +# Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. +# Licensed to PSF under a Contributor Agreement. +# + +# +# The cdec (for "check decimal") class checks cdecimal.so against decimal.py. +# A cdec object consists of a cdecimal.Decimal and a decimal.Decimal. Every +# operation is carried out on both types. If the results don't match, an +# exception is raised. +# +# Usage: python deccheck.py [--short|--medium|--long|--all] +# + + +import cdecimal, decimal +import sys, inspect +import platform +from copy import copy + + +py_minor = sys.version_info[1] +py_micro = sys.version_info[2] + + +# Translate symbols. +deccond = { + cdecimal.Clamped: decimal.Clamped, + cdecimal.ConversionSyntax: decimal.ConversionSyntax, + cdecimal.DivisionByZero: decimal.DivisionByZero, + cdecimal.DivisionImpossible: decimal.InvalidOperation, + cdecimal.DivisionUndefined: decimal.DivisionUndefined, + cdecimal.Inexact: decimal.Inexact, + cdecimal.InvalidContext: decimal.InvalidContext, + cdecimal.InvalidOperation: decimal.InvalidOperation, + cdecimal.Overflow: decimal.Overflow, + cdecimal.Rounded: decimal.Rounded, + cdecimal.Subnormal: decimal.Subnormal, + cdecimal.Underflow: decimal.Underflow, +} + +mpdcond = { + decimal.Clamped: cdecimal.Clamped, + decimal.ConversionSyntax: cdecimal.ConversionSyntax, + decimal.DivisionByZero: cdecimal.DivisionByZero, + decimal.InvalidOperation: cdecimal.DivisionImpossible, + decimal.DivisionUndefined: cdecimal.DivisionUndefined, + decimal.Inexact: cdecimal.Inexact, + decimal.InvalidContext: cdecimal.InvalidContext, + decimal.InvalidOperation: cdecimal.InvalidOperation, + decimal.Overflow: cdecimal.Overflow, + decimal.Rounded: cdecimal.Rounded, + decimal.Subnormal: cdecimal.Subnormal, + decimal.Underflow: cdecimal.Underflow +} + +decround = { + cdecimal.ROUND_UP: decimal.ROUND_UP, + cdecimal.ROUND_DOWN: decimal.ROUND_DOWN, + cdecimal.ROUND_CEILING: decimal.ROUND_CEILING, + cdecimal.ROUND_FLOOR: decimal.ROUND_FLOOR, + cdecimal.ROUND_HALF_UP: decimal.ROUND_HALF_UP, + cdecimal.ROUND_HALF_DOWN: decimal.ROUND_HALF_DOWN, + cdecimal.ROUND_HALF_EVEN: decimal.ROUND_HALF_EVEN, + cdecimal.ROUND_05UP: decimal.ROUND_05UP +} + + +class Context(object): + """Provides a convenient way of syncing the cdecimal and decimal contexts""" + + __slots__ = ['f', 'd'] + + def __init__(self, mpdctx=cdecimal.getcontext()): + """Initialization is from the cdecimal context""" + self.f = mpdctx + self.d = decimal.getcontext() + self.d.prec = self.f.prec + self.d.Emin = self.f.Emin + self.d.Emax = self.f.Emax + self.d.rounding = decround[self.f.rounding] + self.d.capitals = self.f.capitals + self.settraps([sig for sig in self.f.traps if self.f.traps[sig]]) + self.setstatus([sig for sig in self.f.flags if self.f.flags[sig]]) + self.d._clamp = self.f._clamp + + def getprec(self): + assert(self.f.prec == self.d.prec) + return self.f.prec + + def setprec(self, val): + self.f.prec = val + self.d.prec = val + + def getemin(self): + assert(self.f.Emin == self.d.Emin) + return self.f.Emin + + def setemin(self, val): + self.f.Emin = val + self.d.Emin = val + + def getemax(self): + assert(self.f.Emax == self.d.Emax) + return self.f.Emax + + def setemax(self, val): + self.f.Emax = val + self.d.Emax = val + + def getround(self): + assert(self.f.rounding == self.d.rounding) + return self.f.rounding + + def setround(self, val): + self.f.rounding = val + self.d.rounding = decround[val] + + def getcapitals(self): + assert(self.f.capitals == self.d.capitals) + return self.f.capitals + + def setcapitals(self, val): + self.f.capitals = val + self.d.capitals = val + + def getclamp(self): + assert(self.f._clamp == self.d._clamp) + return self.f._clamp + + def setclamp(self, val): + self.f._clamp = val + self.d._clamp = val + + prec = property(getprec, setprec) + emin = property(getemin, setemin) + emax = property(getemax, setemax) + round = property(getround, setround) + clamp = property(getclamp, setclamp) + capitals = property(getcapitals, setcapitals) + + def clear_traps(self): + self.f.clear_traps() + for trap in self.d.traps: + self.d.traps[trap] = False + + def clear_status(self): + self.f.clear_flags() + self.d.clear_flags() + + def settraps(self, lst): # cdecimal signal list + self.clear_traps() + for signal in lst: + self.f.traps[signal] = True + self.d.traps[deccond[signal]] = True + + def setstatus(self, lst): # cdecimal signal list + self.clear_status() + for signal in lst: + self.f.flags[signal] = True + self.d.flags[deccond[signal]] = True + + def assert_eq_status(self): + """assert equality of cdecimal and decimal status""" + for signal in self.f.flags: + if self.f.flags[signal] == (not self.d.flags[deccond[signal]]): + return False + return True + + +# We don't want exceptions so that we can compare the status flags. +context = Context() +context.clear_traps() + +# When creating decimals, cdecimal is ultimately limited by the maximum +# context values. We emulate this restriction for decimal.py. +maxcontext = decimal.Context( + prec=cdecimal.MAX_PREC, + Emin=cdecimal.MIN_EMIN, + Emax=cdecimal.MAX_EMAX, + rounding=decimal.ROUND_HALF_UP, + capitals=1 +) +maxcontext._clamp = 0 + +def decimal_new(value): + maxcontext.traps = copy(context.d.traps) + maxcontext.clear_flags() + dec = maxcontext.create_decimal(value) + if maxcontext.flags[decimal.Inexact] or \ + maxcontext.flags[decimal.Rounded]: + dec = decimal.Decimal("NaN") + context.d.flags[decimal.InvalidOperation] = True + return dec + + +_exc_fmt = "\ +cdecimal_sci: %s\n\ +decimal_sci: %s\n\ +cdecimal_eng: %s\n\ +decimal_eng: %s\n" + +_exc_fmt_tuple = "\ +cdecimal_tuple: %s\n\ +decimal_tuple: %s\n" + +_exc_fmt_obj = "\ +cdecimal: %s\n\ +decimal: %s\n\n" + +class CdecException(ArithmeticError): + def __init__(self, result, funcname, operands): + self.errstring = "Error in %s(%s" % (funcname, operands[0]) + for op in operands[1:]: + self.errstring += ", %s" % op + self.errstring += "):\n\n" + if isinstance(result, cdec): + self.errstring += _exc_fmt % (str(result.mpd), + str(result.dec), + result.mpd.to_eng(), + result.dec.to_eng_string()) + mpd_tuple = result.mpd.as_tuple() + dec_tuple = result.dec.as_tuple() + if mpd_tuple != dec_tuple: + self.errstring += _exc_fmt_tuple % (str(mpd_tuple), + str(dec_tuple)) + else: + self.errstring += _exc_fmt_obj % (str(result[0]), str(result[1])) + self.errstring += "%s\n%s\n\n" % (str(context.f), str(context.d)) + def __str__(self): + return self.errstring + + +class dHandlerCdec: + """For cdec return values: + + Handle known disagreements between decimal.py and cdecimal.so. + This is just a temporary measure against cluttered output. + Detection is crude and possibly unreliable.""" + + def __init__(self): + self.logb_round_if_gt_prec = 0 + self.ulpdiff = 0 + self.powmod_zeros = 0 + self.total_mag_nan = 0 + self.quantize_status = 0 + self.max_status = 0 + + def default(self, result, operands): + return False + + def ulp(self, dec): + """Harrison ULP: ftp://ftp.inria.fr/INRIA/publication/publi-pdf/RR/RR-5504.pdf""" + a = dec.next_plus() + b = dec.next_minus() + return abs(a - b) + + def bin_resolve_ulp(self, result, funcname, operands): + """Results of cdecimal's power function are currently not always + correctly rounded. Check if the cdecimal result differs by less + than 1 ULP from the correctly rounded decimal.py result.""" + mpdstr = str(result.mpd) + mpdresult = decimal.Decimal(mpdstr) + decresult = result.dec + deculp = self.ulp(decresult) + op1 = operands[0].dec + op2 = operands[1].dec + tmpctx = context.d.copy() + tmpctx.prec *= 2 + # result, recalculated at double precision + dpresult = getattr(op1, funcname)(op2, context=tmpctx) + mpddiff = abs(dpresult - mpdresult) + if mpddiff >= deculp: + return False # not simply a disagreement, but wrong + decdiff = abs(dpresult - decresult) + if decdiff >= deculp: + return False # not simply a disagreement, but wrong + self.ulpdiff += 1 + return True + + def __pow__(self, result, operands): + """See DIFFERENCES.txt""" + if operands[2] is not None: # three argument __pow__ + if (operands[0].mpd.is_zero() != operands[1].mpd.is_zero()): + if (result.mpd == 0 or result.mpd == 1) and result.dec.is_nan(): + if (not context.f.flags[cdecimal.InvalidOperation]) and \ + context.d.flags[decimal.InvalidOperation]: + self.powmod_zeros += 1 + return True + elif context.f.flags[cdecimal.Rounded] and \ + context.f.flags[cdecimal.Inexact] and \ + context.d.flags[decimal.Rounded] and \ + context.d.flags[decimal.Inexact]: + return self.bin_resolve_ulp(result, "__pow__", operands) + else: + return False + power = __pow__ + + def __radd__(self, result, operands): + """decimal.py gives preference to the first nan""" + if operands[0].mpd.is_nan() and operands[1].mpd.is_nan() and \ + result.mpd.is_nan() and result.dec.is_nan(): + return True + return False + __rmul__ = __radd__ + + if py_minor <= 1: + def rotate(self, result, operands): + """truncate excess digits before the operation""" + if len(operands[0].dec._int) > context.f.prec: + return True + return False + shift = rotate + + def compare_total_mag(self, result, operands): + if operands[0].mpd.is_nan() and operands[1].mpd.is_nan() and \ + abs(result.mpd) == 1 and abs(result.dec) == 1: + self.total_mag_nan += 1 + return True + return False + compare_total = compare_total_mag + + def logb(self, result, operands): + if context.f.flags[cdecimal.Rounded] and \ + (not context.d.flags[decimal.Rounded]): + self.logb_round_if_gt_prec += 1 + return True + return False + + +class dHandlerObj(): + """For non-decimal return values: + + Handle known disagreements between decimal.py and cdecimal.so. + Currently there are none.""" + + def __init__(self): + pass + + def default(self, result, operands): + return False + + +dhandler_cdec = dHandlerCdec() +def cdec_known_disagreement(result, funcname, operands): + return getattr(dhandler_cdec, funcname, dhandler_cdec.default)(result, operands) + +#dhandler_obj = dHandlerObj() +#def obj_known_disagreement(result, funcname, operands): +# return getattr(dhandler_obj, funcname, dhandler_obj.default)(result, operands) + + + +def verify(result, funcname, operands): + """Verifies that after operation 'funcname' with operand(s) 'operands' + result[0] and result[1] as well as the context flags have the same + values.""" + if result[0] != result[1] or not context.assert_eq_status(): + #if obj_known_disagreement(result, funcname, operands): + # return # skip known disagreements + raise CdecException(result, funcname, operands) + + +class cdec(object): + """Joins cdecimal.so and decimal.py for redundant calculations + with error checking.""" + + __slots__ = ['mpd', 'dec'] + + def __new__(cls, value=None): + self = object.__new__(cls) + self.mpd = None + self.dec = None + if value is not None: + context.clear_status() + if isinstance(value, float): + self.mpd = cdecimal.Decimal.from_float(value) + self.dec = decimal.Decimal.from_float(value) + else: + self.mpd = cdecimal.Decimal(value) + self.dec = decimal_new(value) + self.verify('__xnew__', (value,)) + return self + + def verify(self, funcname, operands): + """Verifies that after operation 'funcname' with operand(s) 'operands' + self.mpd and self.dec as well as the context flags have the same + values.""" + mpdstr = str(self.mpd) + decstr = str(self.dec) + mpdstr_eng = self.mpd.to_eng_string() + decstr_eng = self.dec.to_eng_string() + mpd_tuple = self.mpd.as_tuple() + dec_tuple = self.dec.as_tuple() + if mpd_tuple != dec_tuple: # XXX + if mpd_tuple[2] == 'F' and dec_tuple[2] == 'F' and \ + mpd_tuple[1] == () and dec_tuple[1] == (0,): + return + if mpdstr != decstr or mpdstr_eng != decstr_eng or mpd_tuple != dec_tuple \ + or not context.assert_eq_status(): + if cdec_known_disagreement(self, funcname, operands): + return # skip known disagreements + raise CdecException(self, funcname, operands) + + def unaryfunc(self, funcname): + "unary function returning a cdec" + context.clear_status() + c = cdec() + c.mpd = getattr(self.mpd, funcname)() + c.dec = getattr(self.dec, funcname)() + c.verify(funcname, (self,)) + return c + + def unaryfunc_ctx(self, funcname): + "unary function returning a cdec, uses the context methods of decimal.py" + context.clear_status() + c = cdec() + c.mpd = getattr(self.mpd, funcname)() + c.dec = getattr(context.d, funcname)(self.dec) + c.verify(funcname, (self,)) + return c + + def obj_unaryfunc(self, funcname): + "unary function returning a cdec" + context.clear_status() + r_mpd = getattr(self.mpd, funcname)() + r_dec = getattr(self.dec, funcname)() + verify((r_mpd, r_dec), funcname, (self,)) + return r_mpd + + def binaryfunc(self, other, funcname): + "binary function returning a cdec" + context.clear_status() + c = cdec() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + c.mpd = getattr(self.mpd, funcname)(other_mpd) + c.dec = getattr(self.dec, funcname)(other_dec) + c.verify(funcname, (self, other)) + return c + + def binaryfunc_ctx(self, other, funcname): + "binary function returning a cdec, uses the context methods of decimal.py" + context.clear_status() + c = cdec() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + c.mpd = getattr(self.mpd, funcname)(other_mpd) + c.dec = getattr(context.d, funcname)(self.dec, other_dec) + c.verify(funcname, (self, other)) + return c + + def obj_binaryfunc(self, other, funcname): + "binary function returning an object other than a cdec" + context.clear_status() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + r_mpd = getattr(self.mpd, funcname)(other_mpd) + r_dec = getattr(self.dec, funcname)(other_dec) + verify((r_mpd, r_dec), funcname, (self, other)) + return r_mpd + + def ternaryfunc(self, other, third, funcname): + "ternary function returning a cdec" + context.clear_status() + c = cdec() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + third_mpd = third_dec = third + if isinstance(third, cdec): + third_mpd = third.mpd + third_dec = third.dec + c.mpd = getattr(self.mpd, funcname)(other_mpd, third_mpd) + c.dec = getattr(self.dec, funcname)(other_dec, third_dec) + c.verify(funcname, (self, other, third)) + return c + + def __abs__(self): + return self.unaryfunc('__abs__') + + def __add__(self, other): + return self.binaryfunc(other, '__add__') + + def __bool__(self): + return self.obj_unaryfunc('__bool__') + + def __copy__(self): + return self.unaryfunc('__copy__') + + def __deepcopy__(self, memo=None): + context.clear_status() + c = cdec() + c.mpd = self.mpd.__deepcopy__(memo) + c.dec = self.dec.__deepcopy__(memo) + c.verify('__deepcopy__', (self,)) + return c + + def __div__(self, other): + return self.binaryfunc(other, '__div__') + + def __divmod__(self, other): + context.clear_status() + q = cdec() + r = cdec() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + q.mpd, r.mpd = self.mpd.__divmod__(other_mpd) + q.dec, r.dec = self.dec.__divmod__(other_dec, context.d) + q.verify('__divmod__', (self, other)) + r.verify('__divmod__', (self, other)) + return (q, r) + + def __eq__(self, other): + return self.obj_binaryfunc(other, '__eq__') + + def __float__(self): + if (self.mpd.is_nan() and self.dec.is_nan()): + return float("NaN") + try: + return self.obj_unaryfunc('__float__') + except ValueError: + return None + + def __floordiv__(self, other): + return self.binaryfunc(other, '__floordiv__') + + def __ge__(self, other): + return self.obj_binaryfunc(other, '__ge__') + + def __gt__(self, other): + return self.obj_binaryfunc(other, '__gt__') + + def __hash__(self): + global PY25_HASH_HAVE_WARNED + if self.mpd.is_nan(): + return cdec(0) # for testing + raise TypeError('Cannot hash a NaN value.') + ret = None + try: # Python 2.5 can use exorbitant amounts of memory + ret = self.obj_unaryfunc('__hash__') + except MemoryError: + if not PY25_HASH_HAVE_WARNED: + sys.stderr.write("Out of memory while hashing %s: upgrade to Python 2.6\n" + % str(self.mpd)) + PY25_HASH_HAVE_WARNED = 1 + return ret + + def __int__(self): + # ValueError or OverflowError + if self.mpd.is_special(): + return (None, None) + return self.obj_unaryfunc('__int__') + + def __le__(self, other): + return self.obj_binaryfunc(other, '__le__') + + def __long__(self): + # ValueError or OverflowError + if self.mpd.is_special(): + return (None, None) + return self.obj_unaryfunc('__long__') + + def __lt__(self, other): + return self.obj_binaryfunc(other, '__lt__') + + def __mod__(self, other): + return self.binaryfunc(other, '__mod__') + + def __mul__(self, other): + return self.binaryfunc(other, '__mul__') + + def __ne__(self, other): + return self.obj_binaryfunc(other, '__ne__') + + def __neg__(self): + return self.unaryfunc('__neg__') + + def __nonzero__(self): + return self.obj_unaryfunc('__nonzero__') + + def __pos__(self): + return self.unaryfunc('__pos__') + + def __pow__(self, other, mod=None): + return self.ternaryfunc(other, mod, '__pow__') + + def __radd__(self, other): + return self.binaryfunc(other, '__radd__') + + def __rdiv__(self, other): + return self.binaryfunc(other, '__rdiv__') + + def __rdivmod__(self, other): + context.clear_status() + q = cdec() + r = cdec() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + q.mpd, r.mpd = self.mpd.__rdivmod__(other_mpd) + q.dec, r.dec = self.dec.__rdivmod__(other_dec, context.d) + q.verify('__rdivmod__', (self, other)) + r.verify('__rdivmod__', (self, other)) + return (q, r) + + # __reduce__ + + def __repr__(self): + self.obj_unaryfunc('__repr__') + return "cdec('" + str(self.mpd) + "')" + + def __rfloordiv__(self, other): + return self.binaryfunc(other, '__rfloordiv__') + + def __rmod__(self, other): + return self.binaryfunc(other, '__rmod__') + + def __rmul__(self, other): + return self.binaryfunc(other, '__rmul__') + + def __rsub__(self, other): + return self.binaryfunc(other, '__rsub__') + + def __rtruediv__(self, other): + return self.binaryfunc(other, '__rtruediv__') + + def __rpow__(self, other): + return other.__pow__(self) + + def __str__(self): + self.obj_unaryfunc('__str__') + return str(self.mpd) + + def __sub__(self, other): + return self.binaryfunc(other, '__sub__') + + def __truediv__(self, other): + return self.binaryfunc(other, '__truediv__') + + def __trunc__(self): + # ValueError or OverflowError + if self.mpd.is_special(): + return (None, None) + return self.obj_unaryfunc('__trunc__') + + def _apply(self): + return self.unaryfunc('_apply') + + def abs(self): + return self.unaryfunc_ctx('abs') + + def add(self, other): + return self.binaryfunc_ctx(other, 'add') + + def adjusted(self): + return self.obj_unaryfunc('adjusted') + + def canonical(self): + return self.unaryfunc('canonical') + + def compare(self, other): + return self.binaryfunc(other, 'compare') + + def compare_signal(self, other): + return self.binaryfunc(other, 'compare_signal') + + def compare_total(self, other): + return self.binaryfunc(other, 'compare_total') + + def compare_total_mag(self, other): + return self.binaryfunc(other, 'compare_total_mag') + + def copy_abs(self): + return self.unaryfunc('copy_abs') + + def copy_negate(self): + return self.unaryfunc('copy_negate') + + def copy_sign(self, other): + return self.binaryfunc(other, 'copy_sign') + + def divide(self, other): + return self.binaryfunc_ctx(other, 'divide') + + def divide_int(self, other): + return self.binaryfunc_ctx(other, 'divide_int') + + def divmod(self, other): + context.clear_status() + q = cdec() + r = cdec() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + q.mpd, r.mpd = self.mpd.divmod(other_mpd) + q.dec, r.dec = context.d.divmod(self.dec, other_dec) + q.verify('divmod', (self, other)) + r.verify('divmod', (self, other)) + return (q, r) + + def exp(self): + return self.unaryfunc('exp') + + def fma(self, other, third): + return self.ternaryfunc(other, third, 'fma') + + # imag + # invroot + + def is_canonical(self): + return self.obj_unaryfunc('is_canonical') + + def is_finite(self): + return self.obj_unaryfunc('is_finite') + + def is_infinite(self): + return self.obj_unaryfunc('is_infinite') + + def is_nan(self): + return self.obj_unaryfunc('is_nan') + + def is_normal(self): + return self.obj_unaryfunc('is_normal') + + def is_qnan(self): + return self.obj_unaryfunc('is_qnan') + + def is_signed(self): + return self.obj_unaryfunc('is_signed') + + def is_snan(self): + return self.obj_unaryfunc('is_snan') + + def is_subnormal(self): + return self.obj_unaryfunc('is_subnormal') + + def is_zero(self): + return self.obj_unaryfunc('is_zero') + + def ln(self): + return self.unaryfunc('ln') + + def log10(self): + return self.unaryfunc('log10') + + def logb(self): + return self.unaryfunc('logb') + + def logical_and(self, other): + return self.binaryfunc(other, 'logical_and') + + def logical_invert(self): + return self.unaryfunc('logical_invert') + + def logical_or(self, other): + return self.binaryfunc(other, 'logical_or') + + def logical_xor(self, other): + return self.binaryfunc(other, 'logical_xor') + + def max(self, other): + return self.binaryfunc(other, 'max') + + def max_mag(self, other): + return self.binaryfunc(other, 'max_mag') + + def min(self, other): + return self.binaryfunc(other, 'min_mag') + + def min_mag(self, other): + return self.binaryfunc(other, 'min_mag') + + def minus(self): + return self.unaryfunc_ctx('minus') + + def multiply(self, other): + return self.binaryfunc_ctx(other, 'multiply') + + def next_minus(self): + return self.unaryfunc('next_minus') + + def next_plus(self): + return self.unaryfunc('next_plus') + + def next_toward(self, other): + return self.binaryfunc(other, 'next_toward') + + def normalize(self): + return self.unaryfunc('normalize') + + def number_class(self): + return self.obj_unaryfunc('number_class') + + def plus(self): + return self.unaryfunc_ctx('plus') + + def power(self, other, third=None): + "ternary function returning a cdec, uses the context methods of decimal.py" + context.clear_status() + c = cdec() + other_mpd = other_dec = other + if isinstance(other, cdec): + other_mpd = other.mpd + other_dec = other.dec + third_mpd = third_dec = third + if isinstance(third, cdec): + third_mpd = third.mpd + third_dec = third.dec + if (third is not None): + c.mpd = getattr(self.mpd, 'powmod')(other_mpd, third_mpd) + else: + c.mpd = getattr(self.mpd, 'pow')(other_mpd) + c.dec = getattr(context.d, 'power')(self.dec, other_dec, third_dec) + c.verify('power', (self, other, third)) + return c + + # powmod: same as __pow__ or power with three arguments + + def quantize(self, other): + return self.binaryfunc(other, 'quantize') + + def radix(self): + return self.obj_unaryfunc('radix') + + # real + # reduce: same as normalize + + def remainder(self, other): + return self.binaryfunc_ctx(other, 'remainder') + + def remainder_near(self, other): + return self.binaryfunc(other, 'remainder_near') + + def rotate(self, other): + return self.binaryfunc(other, 'rotate') + + def same_quantum(self, other): + return self.obj_binaryfunc(other, 'same_quantum') + + def scaleb(self, other): + return self.binaryfunc(other, 'scaleb') + + def shift(self, other): + return self.binaryfunc(other, 'shift') + + # sign + + def sqrt(self): + return self.unaryfunc('sqrt') + + def subtract(self, other): + return self.binaryfunc_ctx(other, 'subtract') + + def to_eng_string(self): + return self.obj_unaryfunc('to_eng_string') + + def to_integral(self): + return self.unaryfunc('to_integral') + + def to_integral_exact(self): + return self.unaryfunc('to_integral_exact') + + def to_integral_value(self): + return self.unaryfunc('to_integral_value') + + def to_sci_string(self): + context.clear_status() + # cdecimal's Decimal has a 'to_sci_string' method + # that honours the default context. + r_mpd = self.mpd.to_sci_string() + r_dec = context.d.to_sci_string(self.dec) + verify((r_mpd, r_dec), 'to_sci_string', (self,)) + return r_mpd + + +def log(fmt, args=None): + if args: + sys.stdout.write(''.join((fmt, '\n')) % args) + else: + sys.stdout.write(''.join((str(fmt), '\n'))) + sys.stdout.flush() + +def test_unary(method, prec_lst, iter): + log("testing %s ...", method) + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = prec + for round in sorted(decround): + context.round = round + rprec = 10**prec + exprange = cdecimal.MAX_EMAX + if method in ['__int__', '__long__', '__trunc__', 'to_integral', \ + 'to_integral_value', 'to_integral_value']: + exprange = 9999 + for a in un_close_to_pow10(prec, exprange, iter): + try: + x = cdec(a) + getattr(x, method)() + except CdecException as err: + log(err) + for a in un_close_numbers(prec, exprange, -exprange, iter): + try: + x = cdec(a) + getattr(x, method)() + except CdecException as err: + log(err) + for a in un_incr_digits_tuple(prec, exprange, iter): + try: + x = cdec(a) + getattr(x, method)() + except CdecException as err: + log(err) + for i in range(1000): + try: + s = randdec(prec, exprange) + x = cdec(s) + getattr(x, method)() + except CdecException as err: + log(err) + except OverflowError: + pass + try: + s = randtuple(prec, exprange) + x = cdec(s) + getattr(x, method)() + except CdecException as err: + log(err) + except OverflowError: + pass + +def test_un_logical(method, prec_lst, iter): + log("testing %s ...", method) + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = prec + for round in sorted(decround): + context.round = round + for a in logical_un_incr_digits(prec, iter): + try: + x = cdec(a) + getattr(x, method)() + except CdecException as err: + log(err) + for i in range(1000): + try: + s = randdec(prec, 999999) + x = cdec(s) + getattr(x, method)() + except CdecException as err: + log(err) + except OverflowError: + pass + +def test_binary(method, prec_lst, iter): + log("testing %s ...", method) + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = prec + for round in sorted(decround): + context.round = round + exprange = cdecimal.MAX_EMAX + if method in ['__pow__', '__rpow__', 'power']: + exprange = 99999 + for a, b in bin_close_to_pow10(prec, exprange, iter): + try: + x = cdec(a) + y = cdec(b) + getattr(x, method)(y) + except CdecException as err: + log(err) + for a, b in bin_close_numbers(prec, exprange, -exprange, iter): + try: + x = cdec(a) + y = cdec(b) + getattr(x, method)(y) + except CdecException as err: + log(err) + for a, b in bin_incr_digits(prec, exprange, iter): + try: + x = cdec(a) + y = cdec(b) + getattr(x, method)(y) + except CdecException as err: + log(err) + for i in range(1000): + s1 = randdec(prec, exprange) + s2 = randdec(prec, exprange) + try: + x = cdec(s1) + y = cdec(s2) + getattr(x, method)(y) + except CdecException as err: + log(err) + +def test_bin_logical(method, prec_lst, iter): + log("testing %s ...", method) + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = prec + for round in sorted(decround): + context.round = round + for a, b in logical_bin_incr_digits(prec, iter): + try: + x = cdec(a) + y = cdec(b) + getattr(x, method)(y) + except CdecException as err: + log(err) + for i in range(1000): + s1 = randdec(prec, 999999) + s2 = randdec(prec, 999999) + try: + x = cdec(s1) + y = cdec(s2) + getattr(x, method)(y) + except CdecException as err: + log(err) + +def test_ternary(method, prec_lst, iter): + log("testing %s ...", method) + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = prec + for round in sorted(decround): + context.round = round + exprange = cdecimal.MAX_EMAX + if method in ['__pow__', 'power']: + exprange = 99999 + for a, b, c in tern_close_numbers(prec, exprange, -exprange, iter): + try: + x = cdec(a) + y = cdec(b) + z = cdec(c) + getattr(x, method)(y, z) + except CdecException as err: + log(err) + for a, b, c in tern_incr_digits(prec, exprange, iter): + try: + x = cdec(a) + y = cdec(b) + z = cdec(c) + getattr(x, method)(y, z) + except CdecException as err: + log(err) + for i in range(1000): + s1 = randdec(prec, 2*exprange) + s2 = randdec(prec, 2*exprange) + s3 = randdec(prec, 2*exprange) + try: + x = cdec(s1) + y = cdec(s2) + z = cdec(s3) + getattr(x, method)(y, z) + except CdecException as err: + log(err) + +def test_format(prec_lst, iter): + log("testing format") + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = prec + for round in sorted(decround): + context.round = round + for a in un_incr_digits_tuple(prec, 9999, iter): + try: + fmt = rand_format(chr(random.randrange(32, 128))) + x = format(context.f.create_decimal(a), fmt) + y = format(context.d.create_decimal(a), fmt) + except Exception as err: + print(err, fmt) + continue + if x != y: + print(context.f) + print(context.d) + print("\n%s %s" % (a, fmt)) + print("%s %s\n" % (x, y)) + for i in range(1000): + try: + a = randdec(99, 9999) + fmt = rand_format(chr(random.randrange(32, 128))) + x = format(context.f.create_decimal(a), fmt) + y = format(context.d.create_decimal(a), fmt) + except Exception as err: + print(err, fmt) + continue + if x != y: + print(context.f) + print(context.d) + print("\n%s %s" % (a, fmt)) + print("%s %s\n" % (x, y)) + +def test_locale(prec_lst, iter): + import array + log("testing locale") + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = prec + for round in sorted(decround): + context.round = round + for a in un_incr_digits_tuple(prec, 9999, iter): + try: + fmt = rand_locale() + x = format(context.f.create_decimal(a), fmt) + y = format(context.d.create_decimal(a), fmt) + except Exception as err: + print(err, fmt) + continue + if x != y: + print(context.f) + print(context.d) + print(locale.setlocale(locale.LC_NUMERIC)) + print("%s %s" % (a, fmt)) + print(list(array.array('u', x))) + print(list(array.array('u', y))) + for i in range(1000): + try: + a = randdec(99, 9999) + fmt = rand_locale() + x = format(context.f.create_decimal(a), fmt) + y = format(context.d.create_decimal(a), fmt) + except Exception as err: + print(err, fmt) + continue + if x != y: + print(context.f) + print(context.d) + print(locale.setlocale(locale.LC_NUMERIC)) + print("%s %s" % (a, fmt)) + print(list(array.array('u', x))) + print(list(array.array('u', y))) + +def test_round(prec_lst, iter): + log("testing round") + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = 99 + for round in sorted(decround): + context.round = round + for a in un_incr_digits_tuple(prec, 9999, 1): + try: + n = random.randrange(10) + x = (context.f.create_decimal(a)).__round__(n) + y = (context.d.create_decimal(a)).__round__(n) + except Exception as err: + print(err) + continue + if str(x) != str(y): + print(context.f) + print(context.d) + print("\n%s %s" % (a, n)) + print("%s %s\n" % (x, y)) + exit(1) + for i in range(1000): + try: + a = randdec(99, 9999) + n = random.randrange(10) + x = context.f.create_decimal(a).__round__(n) + y = context.d.create_decimal(a).__round__(n) + except Exception as err: + print(err) + continue + if str(x) != str(y): + print(context.f) + print(context.d) + print("\n%s %s" % (a, n)) + print("%s %s\n" % (x, y)) + +def test_from_float(prec_lst): + log("testing from_float ...") + for prec in prec_lst: + log(" prec: %d", prec) + context.prec = prec + for round in sorted(decround): + context.round = round + exprange = 384 + for i in range(1000): + intpart = str(random.randrange(100000000000000000000000000000000000000)) + fracpart = str(random.randrange(100000000000000000000000000000000000000)) + exp = str(random.randrange(-384, 384)) + fstring = intpart + '.' + fracpart + 'e' + exp + f = float(fstring) + try: + c = cdec(f) + except CdecException as err: + log(err) + + +if __name__ == '__main__': + + from randdec import * + import time + import sys + + + samples = 1 + iter = 1 + + if '--short' in sys.argv: + samples = 1 + iter = 1 + elif '--medium' in sys.argv: + samples = 1 + iter = None + elif '--long' in sys.argv: + samples = 5 + iter = None + elif '--all' in sys.argv: + samples = 100 + iter = None + + all_decimal_methods = set(dir(cdecimal.Decimal) + dir(decimal.Decimal)) + all_cdec_methods = [m for m in dir(cdec) if m in all_decimal_methods] + untested_methods = [m for m in all_decimal_methods if not (m in all_cdec_methods)] + + unary_methods = [] + binary_methods = [] + ternary_methods = [] + for m in all_cdec_methods: + try: + l = len(inspect.getargspec(getattr(cdec, m))[0]) + except TypeError: + continue + if l == 1: + unary_methods.append(m) + elif l == 2: + binary_methods.append(m) + elif l == 3: + ternary_methods.append(m) + else: + raise ValueError((m, l)) + + unary_methods.append('__deepcopy__') + binary_methods.remove('__deepcopy__') + binary_methods.remove('__new__') + binary_methods.append('power') + untested_methods.remove('from_float') + if py_minor < 6: + unary_methods.remove('__trunc__') + for elem in ['__ge__', '__gt__', '__le__', '__lt__']: + binary_methods.remove(elem) + + untested_methods.sort() + unary_methods.sort() + binary_methods.sort() + ternary_methods.sort() + + + x = int(time.time()) + random.seed(x) + log("\nRandom seed: %d\n\n", x) + log("Skipping tests: \n\n%s\n", untested_methods) + + + for method in unary_methods: + prec_lst = sorted(random.sample(range(1, 101), samples)) + test_unary(method, prec_lst, iter) + + for method in binary_methods: + prec_lst = sorted(random.sample(range(1, 101), samples)) + test_binary(method, prec_lst, iter) + + for method in ternary_methods: + prec_lst = sorted(random.sample(range(1, 101), samples)) + test_ternary(method, prec_lst, iter) + + prec_lst = sorted(random.sample(range(1, 101), samples)) + test_un_logical('logical_invert', prec_lst, iter) + + for method in ['logical_and', 'logical_or', 'logical_xor']: + prec_lst = sorted(random.sample(range(1, 101), samples)) + test_bin_logical(method, prec_lst, iter) + + if py_minor >= 2: + # Some tests will fail with 3.1, since alignment has been changed + # in decimal.py 3.2. + from genlocale import * + prec_lst = sorted(random.sample(range(1, 101), samples)) + test_format(prec_lst, iter) + test_locale(prec_lst, iter) + test_round(prec_lst, iter) + test_from_float(prec_lst) Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/formathelper.py ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/formathelper.py Thu Jan 7 13:23:07 2010 @@ -0,0 +1,193 @@ +# +# Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. +# Licensed to PSF under a Contributor Agreement. +# + + +import sys, locale, random +import platform, subprocess +from randdec import * +from decimal import * + + +windows_lang_strings = [ + "chinese", "chinese-simplified", "chinese-traditional", "czech", "danish", + "dutch", "belgian", "english", "australian", "canadian", "english-nz", + "english-uk", "english-us", "finnish", "french", "french-belgian", + "french-canadian", "french-swiss", "german", "german-austrian", + "german-swiss", "greek", "hungarian", "icelandic", "italian", "italian-swiss", + "japanese", "korean", "norwegian", "norwegian-bokmal", "norwegian-nynorsk", + "polish", "portuguese", "portuguese-brazil", "russian", "slovak", "spanish", + "spanish-mexican", "spanish-modern", "swedish", "turkish", +] + +preferred_encoding = { + 'cs_CZ': 'ISO8859-2', + 'cs_CZ.iso88592': 'ISO8859-2', + 'czech': 'ISO8859-2', + 'eesti': 'ISO8859-1', + 'estonian': 'ISO8859-1', + 'et_EE': 'ISO8859-15', + 'et_EE.ISO-8859-15': 'ISO8859-15', + 'et_EE.iso885915': 'ISO8859-15', + 'et_EE.iso88591': 'ISO8859-1', + 'fi_FI.iso88591': 'ISO8859-1', + 'fi_FI': 'ISO8859-15', + 'fi_FI at euro': 'ISO8859-15', + 'fi_FI.iso885915 at euro': 'ISO8859-15', + 'finnish': 'ISO8859-1', + 'lv_LV': 'ISO8859-13', + 'lv_LV.iso885913': 'ISO8859-13', + 'nb_NO': 'ISO8859-1', + 'nb_NO.iso88591': 'ISO8859-1', + 'bokmal': 'ISO8859-1', + 'nn_NO': 'ISO8859-1', + 'nn_NO.iso88591': 'ISO8859-1', + 'no_NO': 'ISO8859-1', + 'norwegian': 'ISO8859-1', + 'nynorsk': 'ISO8859-1', + 'ru_RU': 'ISO8859-5', + 'ru_RU.iso88595': 'ISO8859-5', + 'russian': 'ISO8859-5', + 'ru_RU.KOI8-R': 'KOI8-R', + 'ru_RU.koi8r': 'KOI8-R', + 'ru_RU.CP1251': 'CP1251', + 'ru_RU.cp1251': 'CP1251', + 'sk_SK': 'ISO8859-2', + 'sk_SK.iso88592': 'ISO8859-2', + 'slovak': 'ISO8859-2', + 'sv_FI': 'ISO8859-1', + 'sv_FI.iso88591': 'ISO8859-1', + 'sv_FI at euro': 'ISO8859-15', + 'sv_FI.iso885915 at euro': 'ISO8859-15', + 'uk_UA': 'KOI8-U', + 'uk_UA.koi8u': 'KOI8-U' +} + +integers = [ + "", + "1", + "12", + "123", + "1234", + "12345", + "123456", + "1234567", + "12345678", + "123456789", + "1234567890", + "12345678901", + "123456789012", + "1234567890123", + "12345678901234", + "123456789012345", + "1234567890123456", + "12345678901234567", + "123456789012345678", + "1234567890123456789", + "12345678901234567890", + "123456789012345678901", + "1234567890123456789012", +] + +numbers = [ + "0", "-0", "+0", + "0.0", "-0.0", "+0.0", + "0e0", "-0e0", "+0e0", + ".0", "-.0", + ".1", "-.1", + "1.1", "-1.1", + "1e1", "-1e1" +] + +py_major = sys.version_info[0] + +if platform.system() == 'Windows': + locale_list = windows_lang_strings +else: + try: + # On Ubuntu, `locale -a` gives the wrong case for some locales, + # so we get the correct names directly: + f = open("/var/lib/locales/supported.d/local") + locale_list = [loc.split()[0] for loc in f.readlines()] + except: + locale_list = subprocess.Popen(["locale", "-a"], + stdout=subprocess.PIPE).communicate()[0] + if py_major == 3: + locale_list = locale_list.decode() + locale_list = locale_list.split('\n') + + +if py_major < 3: + # issue7327 (min_width and multibyte separators): wont_fix + save_loc = locale.setlocale(locale.LC_NUMERIC) + for loc in locale_list[:]: + try: + locale.setlocale(locale.LC_NUMERIC, loc) + except locale.Error: + locale_list.remove(loc) + continue + d = locale.localeconv() + if len(d['thousands_sep']) > 1 or len(d['decimal_point']) > 1: + locale_list.remove(loc) + locale.setlocale(locale.LC_NUMERIC, save_loc) + +try: + locale_list.remove('') + # Debian + locale_list.remove(b'bokm\xc3\xa5l'.decode('utf-8')) + locale_list.remove(b'fran\xc3\xa7ais'.decode('utf-8')) +except: + pass + +if platform.system() == 'FreeBSD': + # http://www.freebsd.org/cgi/query-pr.cgi?pr=142173 + for loc in ['it_CH.ISO8859-1', 'it_CH.ISO8859-15', 'it_CH.UTF-8', 'it_IT.ISO8859-1', + 'it_IT.ISO8859-15', 'it_IT.UTF-8', 'sl_SI.ISO8859-2', 'sl_SI.UTF-8']: + try: + locale_list.remove(loc) + except: + pass + + +def get_preferred_encoding(): + loc = locale.setlocale(locale.LC_CTYPE) + if loc in preferred_encoding: + return preferred_encoding[loc] + else: + return locale.getpreferredencoding() + +if py_major < 3: + def printit(testno, s, fmt, encoding=None): + if not encoding: + encoding = get_preferred_encoding() + try: + result = format(Decimal(s), fmt) + if isinstance(fmt, unicode): + fmt = repr(fmt.encode(encoding))[1:-1] + if isinstance(result, unicode): + result = repr(result.encode(encoding))[1:-1] + if "'" in result: + sys.stdout.write("xfmt%d format %s '%s' -> \"%s\"\n" + % (testno, s, fmt, result)) + else: + sys.stdout.write("xfmt%d format %s '%s' -> '%s'\n" + % (testno, s, fmt, result)) + except Exception as err: + sys.stderr.write("%s %s %s\n" % (err, s, fmt)) +else: + def printit(testno, s, fmt, encoding=None): + if not encoding: + encoding = get_preferred_encoding() + try: + result = format(Decimal(s), fmt) + fmt = str(fmt.encode(encoding))[2:-1] + result = str(result.encode(encoding))[2:-1] + if "'" in result: + sys.stdout.write("xfmt%d format %s '%s' -> \"%s\"\n" + % (testno, s, fmt, result)) + else: + sys.stdout.write("xfmt%d format %s '%s' -> '%s'\n" + % (testno, s, fmt, result)) + except Exception as err: + sys.stderr.write("%s %s %s\n" % (err, s, fmt)) Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/genlocale.py ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/genlocale.py Thu Jan 7 13:23:07 2010 @@ -0,0 +1,172 @@ +# +# Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. +# Licensed to PSF under a Contributor Agreement. +# + + +# +# Very extensive test that comes close to brute force testing +# all format string combinations containing either a thousands +# separator or the 'n' specifier. +# +# Usage: python3.2 genlocale.py | ../runtest - +# + + +from formathelper import * + + +# Generate random format strings, no 'n' specifier +# [[fill]align][sign][#][0][width][.precision][type] +def _gen_format_sep(): + for align in ('', '<', '>', '=', '^'): + for fill in ('', 'x'): + if align == '': fill = '' + for sign in ('', '+', '-', ' '): + for zeropad in ('', '0'): + if align != '': zeropad = '' + for width in ['']+[str(y) for y in range(1, 15)]+['101']: + for prec in ['']+['.'+str(y) for y in range(15)]: + # for type in ('', 'E', 'e', 'G', 'g', 'F', 'f', '%'): + type = random.choice(('', 'E', 'e', 'G', 'g', 'F', 'f', '%')) + yield ''.join((fill, align, sign, zeropad, width, ',', prec, type)) + + +# Generate random format strings with 'n' specifier +# [[fill]align][sign][#][0][width][.precision][type] +def _gen_format_locale(): + for align in ('', '<', '>', '=', '^'): + for fill in ('', 'x'): + if align == '': fill = '' + for sign in ('', '+', '-', ' '): + for zeropad in ('', '0'): + if align != '': zeropad = '' + for width in ['']+[str(y) for y in range(1, 20)]+['101']: + for prec in ['']+['.'+str(y) for y in range(1, 20)]: + yield ''.join((fill, align, sign, zeropad, width, prec, 'n')) + + +# Generate random format strings with a unicode fill character +# [[fill]align][sign][#][0][width][.precision][type] +def randf(fill): + active = sorted(random.sample(range(5), random.randrange(6))) + s = '' + s += str(fill) + s += random.choice('<>=^') + have_align = 1 + for elem in active: + if elem == 0: # sign + s += random.choice('+- ') + elif elem == 1: # width + s += str(random.randrange(1, 100)) + elif elem == 2: # thousands separator + s += ',' + elif elem == 3: # prec + s += '.' + # decimal.py does not support prec=0 + s += str(random.randrange(1, 100)) + elif elem == 4: + if 2 in active: c = 'EeGgFf%' + else: c = 'EeGgFfn%' + s += random.choice(c) + return s + +# Generate random format strings with random locale setting +# [[fill]align][sign][#][0][width][.precision][type] +def rand_locale(): + try: + loc = random.choice(locale_list) + locale.setlocale(locale.LC_ALL, loc) + except locale.Error as err: + pass + active = sorted(random.sample(range(5), random.randrange(6))) + s = '' + have_align = 0 + for elem in active: + if elem == 0: # fill+align + s += chr(random.randrange(32, 128)) + s += random.choice('<>=^') + have_align = 1 + elif elem == 1: # sign + s += random.choice('+- ') + elif elem == 2 and not have_align: # zeropad + s += '0' + elif elem == 3: # width + s += str(random.randrange(1, 100)) + elif elem == 4: # prec + s += '.' + # decimal.py does not support prec=0 + s += str(random.randrange(1, 100)) + s += 'n' + return s + + +if __name__ == '__main__': + + testno = 0 + print("rounding: half_even") + + if not unicode_chars: + unicode_chars = gen_unicode_chars() + + # unicode fill character test + for x in range(10): + for fill in unicode_chars: + intpart = fracpart = '' + while (not intpart) and (not fracpart): + intpart = random.choice(integers) + fracpart = random.choice(integers) + s = ''.join((random.choice(('', '-')), intpart, '.', fracpart)) + fmt = randf(fill) + testno += 1 + printit(testno, s, fmt, 'utf-8') + + # thousands separator test + for fmt in _gen_format_sep(): + for s in un_incr_digits(15, 384, 30): + testno += 1 + for sign in ('', '-'): + for intpart in integers: + for fracpart in integers: + if (not intpart) and (not fracpart): + continue + s = ''.join((sign, intpart, '.', fracpart)) + testno += 1 + printit(testno, s, fmt) + for s in numbers: + testno += 1 + printit(testno, s, fmt) + for x in range(100): + s = randdec(20, 425) + testno += 1 + printit(testno, s, fmt) + for x in range(100): + s = randint(20, 425) + testno += 1 + printit(testno, s, fmt) + + # locale test + for loc in locale_list: + try: + locale.setlocale(locale.LC_ALL, loc) + except locale.Error as err: + sys.stderr.write("%s: %s\n" % (loc, err)) + continue + print("locale: %s" % loc) + for fmt in _gen_format_locale(): + for sign in ('', '-'): + intpart = fracpart = '' + while (not intpart) and (not fracpart): + intpart = random.choice(integers) + fracpart = random.choice(integers) + s = ''.join((sign, intpart, '.', fracpart)) + testno += 1 + printit(testno, s, fmt) + for s in random.sample(numbers, 3): + testno += 1 + printit(testno, s, fmt) + getcontext().prec = 300 + for x in range(10): + s = randdec(20, 425000000) + testno += 1 + printit(testno, s, fmt) Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/genrandformat.py ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/genrandformat.py Thu Jan 7 13:23:07 2010 @@ -0,0 +1,33 @@ +# +# Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. +# Licensed to PSF under a Contributor Agreement. +# + + +# +# Test formatting using random format strings. This must be run +# in a UFT-8 terminal. +# +# Usage: python3.2 genrandformat.py | ../runtest - +# + + +from formathelper import * +print("rounding: half_even") + + +testno = 0 +for x in range(1000): + for sign in ('', '-'): + intpart = fracpart = '' + while (not intpart) and (not fracpart): + intpart = random.choice(integers) + fracpart = random.choice(integers) + s = ''.join((sign, intpart, '.', fracpart)) + fmt = rand_format(rand_unicode()) + testno += 1 + printit(testno, s, fmt, 'utf-8') + for s in un_incr_digits(15, 384, 30): + fmt = rand_format(rand_unicode()) + testno += 1 + printit(testno, s, fmt, 'utf-8') Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/genrandlocale.py ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/genrandlocale.py Thu Jan 7 13:23:07 2010 @@ -0,0 +1,33 @@ +# +# For each possible locale setting, test formatting using random +# format strings. +# +# Usage: python3.2 genrandlocale.py | ../runtest - +# + + +from formathelper import * +print("rounding: half_even") + + +testno = 0 +for loc in locale_list: + try: + locale.setlocale(locale.LC_ALL, loc) + except locale.Error as err: + sys.stderr.write("%s: %s\n" % (loc, err)) + continue + print("locale: %s" % loc) + for sign in ('', '-'): + intpart = fracpart = '' + while (not intpart) and (not fracpart): + intpart = random.choice(integers) + fracpart = random.choice(integers) + s = ''.join((sign, intpart, '.', fracpart)) + fmt = rand_format('x') + testno += 1 + printit(testno, s, fmt) + for s in un_incr_digits(15, 384, 30): + fmt = rand_format('x') + testno += 1 + printit(testno, s, fmt) Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/randdec.py ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/randdec.py Thu Jan 7 13:23:07 2010 @@ -0,0 +1,466 @@ +#!/usr/bin/env python + +# +# Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. +# Licensed to PSF under a Contributor Agreement. +# + + +# +# Grammar from http://speleotrove.com/decimal/daconvs.html +# +# sign ::= '+' | '-' +# digit ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | +# '8' | '9' +# indicator ::= 'e' | 'E' +# digits ::= digit [digit]... +# decimal-part ::= digits '.' [digits] | ['.'] digits +# exponent-part ::= indicator [sign] digits +# infinity ::= 'Infinity' | 'Inf' +# nan ::= 'NaN' [digits] | 'sNaN' [digits] +# numeric-value ::= decimal-part [exponent-part] | infinity +# numeric-string ::= [sign] numeric-value | [sign] nan +# + + +import random, sys + + +def sign(): + if random.randrange(2): + if random.randrange(2): return '+' + return '' + return '-' + +def indicator(): + return "eE"[random.randrange(2)] + +def digits(maxprec): + if maxprec == 0: return '' + return str(random.randrange(10**maxprec)) + +def dot(): + if random.randrange(2): return '.' + return '' + +def decimal_part(maxprec): + if random.randrange(100) > 60: # integers + return digits(maxprec) + if random.randrange(2): + intlen = random.randrange(1, maxprec+1) + fraclen = maxprec-intlen + intpart = digits(intlen) + fracpart = digits(fraclen) + return ''.join((intpart, '.', fracpart)) + else: + return ''.join((dot(), digits(maxprec))) + +def expdigits(maxexp): + return str(random.randrange(maxexp)) + +def exponent_part(maxexp): + return ''.join((indicator(), sign(), expdigits(maxexp))) + +def infinity(): + if random.randrange(2): return 'Infinity' + return 'Inf' + +def nan(): + d = '' + if random.randrange(2): + d = digits(random.randrange(99)); + if random.randrange(2): + return ''.join(('NaN', d)) + else: + return ''.join(('sNaN', d)) + +def numeric_value(maxprec, maxexp): + if random.randrange(100) > 90: + return infinity() + exp_part = '' + if random.randrange(100) > 60: + exp_part = exponent_part(maxexp) + return ''.join((decimal_part(maxprec), exp_part)) + +def numeric_string(maxprec, maxexp): + if random.randrange(100) > 95: + return ''.join((sign(), nan())) + else: + return ''.join((sign(), numeric_value(maxprec, maxexp))) + +def randdec(maxprec, maxexp): + return numeric_string(maxprec, maxexp) + +def randint(maxprec, maxexp): + return digits(maxprec) + +def rand_adjexp(maxprec, maxadjexp): + d = digits(maxprec) + maxexp = maxadjexp-len(d)+1 + if maxexp == 0: maxexp = 1 + exp = str(random.randrange(maxexp-2*(abs(maxexp)), maxexp)) + return ''.join((sign(), d, 'E', exp)) + + +def ndigits(n): + if n < 1: return 0 + return random.randrange(10**(n-1), 10**n) + +def randtuple(maxprec, maxexp): + n = random.randrange(100) + sign = (0,1)[random.randrange(1)] + coeff = ndigits(maxprec) + if n >= 95: + coeff = () + exp = 'F' + elif n >= 85: + coeff = tuple(map(int, str(ndigits(maxprec)))) + exp = "nN"[random.randrange(1)] + else: + coeff = tuple(map(int, str(ndigits(maxprec)))) + exp = random.randrange(-maxexp, maxexp) + return (sign, coeff, exp) + + +def from_triple(sign, coeff, exp): + return ''.join((str(sign*coeff), indicator(), str(exp))) + + +# Close to 10**n +def un_close_to_pow10(prec, maxexp, iter=None): + if iter is None: + lst = range(prec+30) + else: + lst = random.sample(range(prec+30), iter) + nines = [10**n - 1 for n in lst] + pow10 = [10**n for n in lst] + for coeff in nines: + yield coeff + yield -coeff + yield from_triple(1, coeff, random.randrange(2*maxexp)) + yield from_triple(-1, coeff, random.randrange(2*maxexp)) + for coeff in pow10: + yield coeff + yield -coeff + +# Close to 10**n +def bin_close_to_pow10(prec, maxexp, iter=None): + if iter is None: + lst = range(prec+30) + else: + lst = random.sample(range(prec+30), iter) + nines = [10**n - 1 for n in lst] + pow10 = [10**n for n in lst] + for coeff in nines: + yield coeff, 1 + yield -coeff, -1 + yield 1, coeff + yield -1, -coeff + yield from_triple(1, coeff, random.randrange(2*maxexp)), 1 + yield from_triple(-1, coeff, random.randrange(2*maxexp)), -1 + yield 1, from_triple(1, coeff, -random.randrange(2*maxexp)) + yield -1, from_triple(-1, coeff, -random.randrange(2*maxexp)) + for coeff in pow10: + yield coeff, -1 + yield -coeff, 1 + yield 1, -coeff + yield -coeff, 1 + +# Close to 1: +def close_to_one_greater(prec, emax, emin): + rprec = 10**prec + return ''.join(("1.", '0'*random.randrange(prec), str(random.randrange(rprec)))) + +def close_to_one_less(prec, emax, emin): + rprec = 10**prec + return ''.join(("0.9", '9'*random.randrange(prec), str(random.randrange(rprec)))) + +# Close to 0: +def close_to_zero_greater(prec, emax, emin): + rprec = 10**prec + return ''.join(("0.", '0'*random.randrange(prec), str(random.randrange(rprec)))) + +def close_to_zero_less(prec, emax, emin): + rprec = 10**prec + return ''.join(("-0.", '0'*random.randrange(prec), str(random.randrange(rprec)))) + +# Close to emax: +def close_to_emax_less(prec, emax, emin): + rprec = 10**prec + return ''.join(("9.", '9'*random.randrange(prec), str(random.randrange(rprec)), "E", str(emax))) + +def close_to_emax_greater(prec, emax, emin): + rprec = 10**prec + return ''.join(("1.", '0'*random.randrange(prec), str(random.randrange(rprec)), "E", str(emax+1))) + +# Close to emin: +def close_to_emin_greater(prec, emax, emin): + rprec = 10**prec + return ''.join(("1.", '0'*random.randrange(prec), str(random.randrange(rprec)), "E", str(emin))) + +def close_to_emin_less(prec, emax, emin): + rprec = 10**prec + return ''.join(("9.", '9'*random.randrange(prec), str(random.randrange(rprec)), "E", str(emin-1))) + +# Close to etiny: +def close_to_etiny_greater(prec, emax, emin): + rprec = 10**prec + etiny = emin - (prec - 1) + return ''.join(("1.", '0'*random.randrange(prec), str(random.randrange(rprec)), "E", str(etiny))) + +def close_to_etiny_less(prec, emax, emin): + rprec = 10**prec + etiny = emin - (prec - 1) + return ''.join(("9.", '9'*random.randrange(prec), str(random.randrange(rprec)), "E", str(etiny-1))) + + +def close_to_min_etiny_greater(prec, max_prec, min_emin): + rprec = 10**prec + etiny = min_emin - (max_prec - 1) + return ''.join(("1.", '0'*random.randrange(prec), str(random.randrange(rprec)), "E", str(etiny))) + +def close_to_min_etiny_less(prec, max_prec, min_emin): + rprec = 10**prec + etiny = min_emin - (max_prec - 1) + return ''.join(("9.", '9'*random.randrange(prec), str(random.randrange(rprec)), "E", str(etiny-1))) + + +close_funcs = [ + close_to_one_greater, close_to_one_less, close_to_zero_greater, close_to_zero_less, + close_to_emax_less, close_to_emax_greater, close_to_emin_greater, close_to_emin_less, + close_to_etiny_greater, close_to_etiny_less, close_to_min_etiny_greater, close_to_min_etiny_less +] + + +def un_close_numbers(prec, emax, emin, iter=None): + if iter is None: + iter = 1000 + for i in range(iter): + for func in close_funcs: + yield func(prec, emax, emin) + +def bin_close_numbers(prec, emax, emin, iter=None): + if iter is None: + iter = 1000 + for i in range(iter): + for func1 in close_funcs: + for func2 in close_funcs: + yield func1(prec, emax, emin), func2(prec, emax, emin) + for func in close_funcs: + yield randdec(prec, emax), func(prec, emax, emin) + yield func(prec, emax, emin), randdec(prec, emax) + +def tern_close_numbers(prec, emax, emin, iter): + if iter is None: + iter = 1000 + for i in range(iter): + for func1 in close_funcs: + for func2 in close_funcs: + for func3 in close_funcs: + yield func1(prec, emax, emin), func2(prec, emax, emin), func3(prec, emax, emin) + for func in close_funcs: + yield randdec(prec, emax), func(prec, emax, emin), func(prec, emax, emin) + yield func(prec, emax, emin), randdec(prec, emax), func(prec, emax, emin) + yield func(prec, emax, emin), func(prec, emax, emin), randdec(prec, emax) + for func in close_funcs: + yield randdec(prec, emax), randdec(prec, emax), func(prec, emax, emin) + yield randdec(prec, emax), func(prec, emax, emin), randdec(prec, emax) + yield func(prec, emax, emin), randdec(prec, emax), randdec(prec, emax) + + +# If iter == None, test all digit lengths up to prec + 30 +def un_incr_digits(prec, maxexp, iter): + if iter is None: + lst = range(prec+30) + else: + lst = random.sample(range(prec+30), iter) + for m in lst: + yield from_triple(1, ndigits(m), 0) + yield from_triple(-1, ndigits(m), 0) + yield from_triple(1, ndigits(m), random.randrange(maxexp)) + yield from_triple(-1, ndigits(m), random.randrange(maxexp)) + +# If iter == None, test all digit lengths up to prec + 30 +# Also output decimals im tuple form. +def un_incr_digits_tuple(prec, maxexp, iter): + if iter is None: + lst = range(prec+30) + else: + lst = random.sample(range(prec+30), iter) + for m in lst: + yield from_triple(1, ndigits(m), 0) + yield from_triple(-1, ndigits(m), 0) + yield from_triple(1, ndigits(m), random.randrange(maxexp)) + yield from_triple(-1, ndigits(m), random.randrange(maxexp)) + # test from tuple + yield (0, tuple(map(int, str(ndigits(m)))), 0) + yield (1, tuple(map(int, str(ndigits(m)))), 0) + yield (0, tuple(map(int, str(ndigits(m)))), random.randrange(maxexp)) + yield (1, tuple(map(int, str(ndigits(m)))), random.randrange(maxexp)) + +# If iter == None, test all combinations of digit lengths up to prec + 30 +def bin_incr_digits(prec, maxexp, iter): + if iter is None: + lst1 = range(prec+30) + lst2 = range(prec+30) + else: + lst1 = random.sample(range(prec+30), iter) + lst2 = random.sample(range(prec+30), iter) + for m in lst1: + self = from_triple(1, ndigits(m), 0) + yield self, self + self = from_triple(-1, ndigits(m), 0) + yield self, self + self = from_triple(1, ndigits(m), random.randrange(maxexp)) + yield self, self + self = from_triple(-1, ndigits(m), random.randrange(maxexp)) + yield self, self + for m in lst1: + for n in lst2: + self = from_triple(1, ndigits(m), 0) + other = from_triple(1, ndigits(n), 0) + yield self, other + self = from_triple(-1, ndigits(m), 0) + other = from_triple(1, ndigits(n), 0) + yield self, other + self = from_triple(1, ndigits(m), 0) + other = from_triple(-1, ndigits(n), 0) + yield self, other + self = from_triple(-1, ndigits(m), 0) + other = from_triple(-1, ndigits(n), 0) + yield self, other + self = from_triple(1, ndigits(m), random.randrange(maxexp)) + other = from_triple(1, ndigits(n), random.randrange(maxexp)) + yield self, other + self = from_triple(-1, ndigits(m), random.randrange(maxexp)) + other = from_triple(1, ndigits(n), random.randrange(maxexp)) + yield self, other + self = from_triple(1, ndigits(m), random.randrange(maxexp)) + other = from_triple(-1, ndigits(n), random.randrange(maxexp)) + yield self, other + self = from_triple(-1, ndigits(m), random.randrange(maxexp)) + other = from_triple(-1, ndigits(n), random.randrange(maxexp)) + yield self, other + + +def randsign(): + return (1, -1)[random.randrange(2)] + +# If iter == None, test all combinations of digit lengths up to prec + 30 +def tern_incr_digits(prec, maxexp, iter): + if iter is None: + lst1 = range(prec+30) + lst2 = range(prec+30) + lst3 = range(prec+30) + else: + lst1 = random.sample(range(prec+30), iter) + lst2 = random.sample(range(prec+30), iter) + lst3 = random.sample(range(prec+30), iter) + for m in lst1: + for n in lst2: + for p in lst3: + self = from_triple(randsign(), ndigits(m), 0) + other = from_triple(randsign(), ndigits(n), 0) + third = from_triple(randsign(), ndigits(p), 0) + yield self, other, third + + +# Tests for the 'logical' fucntions +def bindigits(prec): + z = 0 + for i in range(prec): + z += random.randrange(2) * 10**i + return z + +def logical_un_incr_digits(prec, iter): + if iter is None: + lst = range(prec+30) + else: + lst = random.sample(range(prec+30), iter) + for m in lst: + self = from_triple(1, bindigits(m), 0) + yield self + +def logical_bin_incr_digits(prec, iter): + if iter is None: + lst1 = range(prec+30) + lst2 = range(prec+30) + else: + lst1 = random.sample(range(prec+30), iter) + lst2 = random.sample(range(prec+30), iter) + for m in lst1: + self = from_triple(1, bindigits(m), 0) + yield self, self + for m in lst1: + for n in lst2: + self = from_triple(1, bindigits(m), 0) + other = from_triple(1, bindigits(n), 0) + yield self, other + + +py_major = sys.version_info[0] +if py_major == 2: + def touni(c): return unichr(c) +else: + def touni(c): return chr(c) + +# Generate list of all unicode characters that are accepted +# as fill characters by decimal.py. +def gen_unicode_chars(): + from decimal import Decimal + sys.stderr.write("\ngenerating unicode chars ... ") + r = [] + for c in range(32, 0x110001): + try: + x = touni(c) + try: + x.encode('utf-8').decode() + format(Decimal(0), x + '<19g') + r.append(x) + except: + pass + except ValueError: + pass + r.remove(touni(ord("'"))) + r.remove(touni(ord('"'))) + r.remove(touni(ord('\\'))) + sys.stderr.write("DONE\n\n") + return r + +unicode_chars = [] +def rand_unicode(): + global unicode_chars + if not unicode_chars: + unicode_chars = gen_unicode_chars() + return random.choice(unicode_chars) + + +# Generate random format strings +# [[fill]align][sign][#][0][width][.precision][type] +import string +def rand_format(fill): + active = sorted(random.sample(range(7), random.randrange(8))) + have_align = 0 + s = '' + for elem in active: + if elem == 0: # fill+align + s += fill + s += random.choice('<>=^') + have_align = 1 + elif elem == 1: # sign + s += random.choice('+- ') + elif elem == 2 and not have_align: # zeropad + s += '0' + elif elem == 3: # width + s += str(random.randrange(1, 100)) + elif elem == 4: # thousands separator + s += ',' + elif elem == 5: # prec + s += '.' + # decimal.py does not support prec=0 + s += str(random.randrange(1, 100)) + elif elem == 6: + if 4 in active: c = 'EeGgFf%' + else: c = 'EeGgFfn%' + s += random.choice(c) + return s From python-checkins at python.org Thu Jan 7 13:26:09 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 07 Jan 2010 12:26:09 -0000 Subject: [Python-checkins] r77345 - python/branches/py3k-cdecimal/Lib/test/test_cdecimal.py Message-ID: Author: stefan.krah Date: Thu Jan 7 13:26:09 2010 New Revision: 77345 Log: Add Lib/test/test_cdecimal.py Added: python/branches/py3k-cdecimal/Lib/test/test_cdecimal.py (contents, props changed) Added: python/branches/py3k-cdecimal/Lib/test/test_cdecimal.py ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/test_cdecimal.py Thu Jan 7 13:26:09 2010 @@ -0,0 +1,1944 @@ +# Copyright (c) 2004 Python Software Foundation. +# All rights reserved. + +# Written by Eric Price +# and Facundo Batista +# and Raymond Hettinger +# and Aahz (aahz at pobox.com) +# and Tim Peters + +# Adapted for cdecimal by Stefan Krah. + + +""" +These are the test cases for the cdecimal module. + +There are two groups of tests, Arithmetic and Behaviour. The former test +the Decimal arithmetic using the tests provided by Mike Cowlishaw. The latter +test the pythonic behaviour according to PEP 327. + +Cowlishaw's tests can be downloaded from: + + www2.hursley.ibm.com/decimal/dectest.zip + +This test module can be called from command line with one parameter (Arithmetic +or Behaviour) to test each part, or without parameter to test both parts. If +you're working through IDLE, you can import this test module and call test_main() +with the corresponding argument. +""" + +import glob +import math +import os, sys, platform +import pickle, copy +import unittest +from cdecimal import * +import numbers +from test.support import run_unittest, run_doctest, is_resource_enabled +import random +try: + import threading +except ImportError: + threading = None + + +HAVE_64BIT = (platform.architecture()[0] == '64bit') + +# Useful Test Constant +Signals = tuple(getcontext().flags.keys()) + +# Tests are built around these assumed context defaults. +# test_main() restores the original context. +def init(): + global ORIGINAL_CONTEXT + ORIGINAL_CONTEXT = getcontext().copy() + DefaultTestContext = Context( + prec = 9, + rounding = ROUND_HALF_EVEN, + traps = dict.fromkeys(Signals, 0) + ) + setcontext(DefaultTestContext) + + +# The official limits for the 32-bit version are -425000000 +# and 425000000. The following values are safe for all tests +# in the test suite. +readcontext = Context() +readcontext.unsafe_setprec(1070000000) +readcontext.unsafe_setemax(1070000000) +readcontext.unsafe_setemin(-1070000000) +readcontext._traps = 0 + + +TESTDATADIR = 'decimaltestdata' +if __name__ == '__main__': + file = sys.argv[0] +else: + file = __file__ +testdir = os.path.dirname(file) or os.curdir +directory = testdir + os.sep + TESTDATADIR + os.sep + +skip_expected = not os.path.isdir(directory) + +# list of individual .decTest test ids that correspond to tests that +# we're skipping for one reason or another. +skipped_test_ids = [ + 'scbx164', # skipping apparently implementation-specific scaleb + 'scbx165', # tests, pending clarification of scaleb rules. +] + +# XXX: BEGIN FASTDEC SKIPS +status_cases = {} +if HAVE_64BIT: + # 64 bit version: With a reduced working precision in mpd_qpow() + # the status matches. + status_cases = { + "pwsx803": ([Inexact, Rounded, Subnormal, Underflow], [Inexact, Rounded]), + "pwsx805": ([Inexact, Rounded, Subnormal, Underflow], [Inexact, Rounded]) + } + +# These are skipped for decNumber, too. They might as well be added to +# the ULP cases. +skip_cases = { + "powx4302": ("1.000000", "1.000001"), + "powx4303": ("1.000000", "1.000001"), + "powx4342": ("1.000000", "0.9999999"), + "powx4343": ("1.000000", "0.9999999") +} + +# Disagreements: +# pwmx325 power 0 1 1234567890 -> NaN Invalid_operation -- got 0 +disagree = ['pwmx325', 'pwmx326'] +# END FASTDEC SKIPS + + +# Make sure it actually raises errors when not expected and caught in flags +# Slower, since it runs some things several times. +EXTENDEDERRORTEST = True + +#Map the test cases' error names to the actual errors +ErrorNames = {'clamped' : Clamped, + 'conversion_syntax' : InvalidOperation, + 'division_by_zero' : DivisionByZero, + 'division_impossible' : InvalidOperation, + 'division_undefined' : InvalidOperation, + 'inexact' : Inexact, + 'invalid_context' : InvalidOperation, + 'invalid_operation' : InvalidOperation, + 'overflow' : Overflow, + 'rounded' : Rounded, + 'subnormal' : Subnormal, + 'underflow' : Underflow} + + +def Nonfunction(*args): + """Doesn't do anything.""" + return None + +RoundingDict = {'ceiling' : ROUND_CEILING, #Maps test-case names to roundings. + 'down' : ROUND_DOWN, + 'floor' : ROUND_FLOOR, + 'half_down' : ROUND_HALF_DOWN, + 'half_even' : ROUND_HALF_EVEN, + 'half_up' : ROUND_HALF_UP, + 'up' : ROUND_UP, + '05up' : ROUND_05UP} + +# Name adapter to be able to change the Decimal and Context +# interface without changing the test files from Cowlishaw +nameAdapter = {'and':'logical_and', + 'apply':'_apply', + 'class':'number_class', + 'comparesig':'compare_signal', + 'comparetotal':'compare_total', + 'comparetotmag':'compare_total_mag', + 'copy':'copy_decimal', + 'copyabs':'copy_abs', + 'copynegate':'copy_negate', + 'copysign':'copy_sign', + 'divideint':'divide_int', + 'invert':'logical_invert', + 'iscanonical':'is_canonical', + 'isfinite':'is_finite', + 'isinfinite':'is_infinite', + 'isnan':'is_nan', + 'isnormal':'is_normal', + 'isqnan':'is_qnan', + 'issigned':'is_signed', + 'issnan':'is_snan', + 'issubnormal':'is_subnormal', + 'iszero':'is_zero', + 'maxmag':'max_mag', + 'minmag':'min_mag', + 'nextminus':'next_minus', + 'nextplus':'next_plus', + 'nexttoward':'next_toward', + 'or':'logical_or', + 'reduce':'normalize', + 'remaindernear':'remainder_near', + 'samequantum':'same_quantum', + 'squareroot':'sqrt', + 'toeng':'to_eng_string', + 'tointegral':'to_integral_value', + 'tointegralx':'to_integral_exact', + 'tosci':'to_sci_string', + 'xor':'logical_xor', + } + +# The following functions return True/False rather than a Decimal instance + +LOGICAL_FUNCTIONS = ( + 'is_canonical', + 'is_finite', + 'is_infinite', + 'is_nan', + 'is_normal', + 'is_qnan', + 'is_signed', + 'is_snan', + 'is_subnormal', + 'is_zero', + 'same_quantum', + ) + +# For some operations (currently exp, ln, log10, power), the decNumber +# reference implementation imposes additional restrictions on the +# context and operands. These restrictions are not part of the +# specification; however, the effect of these restrictions does show +# up in some of the testcases. We skip testcases that violate these +# restrictions, since Decimal behaves differently from decNumber for +# these testcases so these testcases would otherwise fail. + +decNumberRestricted = ('power', 'ln', 'log10', 'exp') +DEC_MAX_MATH = 999999 +def outside_decNumber_bounds(v, context): + if (context.prec > DEC_MAX_MATH or + context.Emax > DEC_MAX_MATH or + -context.Emin > DEC_MAX_MATH): + return True + if not v.is_special() and v and ( + v.adjusted() > DEC_MAX_MATH or + v.adjusted() < 1-2*DEC_MAX_MATH): + return True + return False + +class DecimalTest(unittest.TestCase): + """Class which tests the Decimal class against the test cases. + + Changed for unittest. + """ + def setUp(self): + self.context = Context() + self.ignore_list = ['#'] + # Basically, a # means return NaN InvalidOperation. + # Different from a sNaN in trim + + self.ChangeDict = {'precision' : self.change_precision, + 'rounding' : self.change_rounding_method, + 'maxexponent' : self.change_max_exponent, + 'minexponent' : self.change_min_exponent, + 'clamp' : self.change_clamp} + + def eval_file(self, file): + global skip_expected + if skip_expected: + raise unittest.SkipTest + return + for line in open(file): + line = line.replace('\r\n', '').replace('\n', '') + #print line + try: + t = self.eval_line(line) + except DecimalException as exception: + #Exception raised where there shoudn't have been one. + self.fail('Exception "'+exception.__class__.__name__ + '" raised on line '+line) + + return + + def eval_line(self, s): + if s.find(' -> ') >= 0 and s[:2] != '--' and not s.startswith(' --'): + s = (s.split('->')[0] + '->' + + s.split('->')[1].split('--')[0]).strip() + else: + s = s.split('--')[0].strip() + + for ignore in self.ignore_list: + if s.find(ignore) >= 0: + #print s.split()[0], 'NotImplemented--', ignore + return + if not s: + return + elif ':' in s: + return self.eval_directive(s) + else: + return self.eval_equation(s) + + def eval_directive(self, s): + funct, value = (x.strip().lower() for x in s.split(':')) + if funct == 'rounding': + value = RoundingDict[value] + else: + try: + value = int(value) + except ValueError: + pass + + funct = self.ChangeDict.get(funct, Nonfunction) + funct(value) + + def eval_equation(self, s): + #global DEFAULT_PRECISION + #print DEFAULT_PRECISION + + if not TEST_ALL and random.random() < 0.90: + return + + try: + Sides = s.split('->') + L = Sides[0].strip().split() + id = L[0] + if DEBUG: + print("Test ", id, end=" ") + funct = L[1].lower() + valstemp = L[2:] + L = Sides[1].strip().split() + ans = L[0] + exceptions = L[1:] + except (TypeError, AttributeError, IndexError): + raise InvalidOperation + def FixQuotes(val): + val = val.replace("''", 'SingleQuote').replace('""', 'DoubleQuote') + val = val.replace("'", '').replace('"', '') + val = val.replace('SingleQuote', "'").replace('DoubleQuote', '"') + return val + + if id in skipped_test_ids: + return + + fname = nameAdapter.get(funct, funct) + if fname == 'rescale': + return + funct = getattr(self.context, fname) + + vals = [] + conglomerate = '' + quote = 0 + theirexceptions = [ErrorNames[x.lower()] for x in exceptions] + # XXX STATUS CASES + if id in status_cases: + t = status_cases[id] + theirexceptions = t[0] + + for exception in Signals: + self.context.traps[exception] = 1 #Catch these bugs... + for exception in theirexceptions: + self.context.traps[exception] = 0 + for i, val in enumerate(valstemp): + if val.count("'") % 2 == 1: + quote = 1 - quote + if quote: + conglomerate = conglomerate + ' ' + val + continue + else: + val = conglomerate + val + conglomerate = '' + v = FixQuotes(val) + if fname in ('to_sci_string', 'to_eng_string'): + if EXTENDEDERRORTEST: + for error in theirexceptions: + self.context.traps[error] = 1 + try: + funct(self.context.create_decimal(v)) + except error: + pass + except Signals as e: + self.fail("Raised %s in %s when %s disabled" % \ + (e, s, error)) + else: + self.fail("Did not raise %s in %s" % (error, s)) + self.context.traps[error] = 0 + v = self.context.create_decimal(v) + else: + # 32-bit version has limits +-425000000 + savetraps = self.context._traps + self.context._traps = 0 + vv = v + v = Decimal(vv, self.context) + if self.context._flags & 0x100: # MPD_Invalid_operation + v = readcontext.create_decimal(vv) + self.context._flags = 0 + self.context._traps = savetraps + vals.append(v) + + ans = FixQuotes(ans) + + # XXX: Shortcuts, disagreements between cdecimal and decimal + if self.context._clamp and self.context.prec > self.context.Emax: + # extra.decTest has some of these: I don't think this combination + # is a valid context: Etop would be negative! + # (squareroot.decTest has a single one, too) + if DEBUG: print(self.context) + return + if id in disagree: + return + if fname == 'power' and len(vals) == 3: + # name is different + fname = 'powmod' + funct = getattr(self.context, fname) + + # skip tests that are related to bounds imposed in the decNumber + # reference implementation + if fname in decNumberRestricted: + if fname == 'power': + if not (vals[1].is_integer() and + -1999999997 <= vals[1] <= 999999999): + if outside_decNumber_bounds(vals[0], self.context) or \ + outside_decNumber_bounds(vals[1], self.context): + #print "Skipping test %s" % s + return + else: + if outside_decNumber_bounds(vals[0], self.context): + #print "Skipping test %s" % s + return + + + if EXTENDEDERRORTEST and fname not in ('to_sci_string', 'to_eng_string'): + for error in theirexceptions: + self.context.traps[error] = 1 + try: + funct(*vals) + except error: + pass + except Signals as e: + self.fail("Raised %s in %s when %s disabled" % \ + (e, s, error)) + else: + self.fail("Did not raise %s in %s" % (error, s)) + self.context.traps[error] = 0 + if DEBUG: + print("--", self.context) + try: + result = str(funct(*vals)) + if fname in LOGICAL_FUNCTIONS: + result = str(int(eval(result))) # 'True', 'False' -> '1', '0' + except Signals as error: + self.fail("Raised %s in %s" % (error, s)) + except: #Catch any error long enough to state the test case. + print("ERROR:", s) + raise + + myexceptions = self.getexceptions() + self.context.clear_flags() + + myexceptions.sort(key=repr) + theirexceptions.sort(key=repr) + + # XXX SKIPS + if id in skip_cases: + t = skip_cases[id] + self.assert_(result == t[0] and ans == t[1]) + else: + self.assertEqual(result, ans, + 'Incorrect answer for ' + s + ' -- got ' + result) + + self.assertEqual(myexceptions, theirexceptions, + 'Incorrect flags set in ' + s + ' -- got ' + str(myexceptions)) + return + + def getexceptions(self): + return [e for e in Signals if self.context.flags[e]] + + def change_precision(self, prec): + if HAVE_64BIT: + self.context.prec = prec + else: + self.context.unsafe_setprec(prec) + def change_rounding_method(self, rounding): + self.context.rounding = rounding + def change_min_exponent(self, exp): + if HAVE_64BIT: + self.context.Emin = exp + else: + self.context.unsafe_setemin(exp) + def change_max_exponent(self, exp): + if HAVE_64BIT: + self.context.Emax = exp + else: + self.context.unsafe_setemax(exp) + def change_clamp(self, clamp): + self.context._clamp = clamp + + + +# The following classes test the behaviour of Decimal according to PEP 327 + +class DecimalExplicitConstructionTest(unittest.TestCase): + '''Unit tests for Explicit Construction cases of Decimal.''' + + def test_explicit_empty(self): + self.assertEqual(Decimal(), Decimal("0")) + + def test_explicit_from_None(self): + self.assertRaises(TypeError, Decimal, None) + + def test_explicit_from_int(self): + + #positive + d = Decimal(45) + self.assertEqual(str(d), '45') + + #very large positive + d = Decimal(500000123) + self.assertEqual(str(d), '500000123') + + #negative + d = Decimal(-45) + self.assertEqual(str(d), '-45') + + #zero + d = Decimal(0) + self.assertEqual(str(d), '0') + + def test_explicit_from_string(self): + + #empty + self.assertEqual(str(Decimal('')), 'NaN') + + #int + self.assertEqual(str(Decimal('45')), '45') + + #float + self.assertEqual(str(Decimal('45.34')), '45.34') + + #engineer notation + self.assertEqual(str(Decimal('45e2')), '4.5E+3') + + #just not a number + self.assertEqual(str(Decimal('ugly')), 'NaN') + + #leading and trailing whitespace permitted + self.assertEqual(str(Decimal('1.3E4 \n')), '1.3E+4') + self.assertEqual(str(Decimal(' -7.89')), '-7.89') + + def test_explicit_from_tuples(self): + + #zero + d = Decimal( (0, (0,), 0) ) + self.assertEqual(str(d), '0') + + #int + d = Decimal( (1, (4, 5), 0) ) + self.assertEqual(str(d), '-45') + + #float + d = Decimal( (0, (4, 5, 3, 4), -2) ) + self.assertEqual(str(d), '45.34') + + #weird + d = Decimal( (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) ) + self.assertEqual(str(d), '-4.34913534E-17') + + #wrong number of items + self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 9, 1)) ) + + #bad sign + self.assertRaises(ValueError, Decimal, (8, (4, 3, 4, 9, 1), 2) ) + self.assertRaises(ValueError, Decimal, (0., (4, 3, 4, 9, 1), 2) ) + self.assertRaises(ValueError, Decimal, (Decimal(1), (4, 3, 4, 9, 1), 2)) + + #bad exp + self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 9, 1), 'wrong!') ) + self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 9, 1), 0.) ) + self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 9, 1), '1') ) + + #bad coefficients + self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, None, 1), 2) ) + self.assertRaises(ValueError, Decimal, (1, (4, -3, 4, 9, 1), 2) ) + self.assertRaises(ValueError, Decimal, (1, (4, 10, 4, 9, 1), 2) ) + self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 'a', 1), 2) ) + + def test_explicit_from_Decimal(self): + + #positive + d = Decimal(45) + e = Decimal(d) + self.assertEqual(str(e), '45') + # XXX cdecimal has behaviour of int() + # self.assertNotEqual(id(d), id(e)) + self.assertEqual(id(d), id(e)) + + #very large positive + d = Decimal(500000123) + e = Decimal(d) + self.assertEqual(str(e), '500000123') + self.assertEqual(id(d), id(e)) + + #negative + d = Decimal(-45) + e = Decimal(d) + self.assertEqual(str(e), '-45') + self.assertEqual(id(d), id(e)) + + #zero + d = Decimal(0) + e = Decimal(d) + self.assertEqual(str(e), '0') + self.assertEqual(id(d), id(e)) + + def test_explicit_context_create_decimal(self): + + nc = copy.copy(getcontext()) + nc.prec = 3 + + # empty + d = Decimal() + self.assertEqual(str(d), '0') + d = nc.create_decimal() + self.assertEqual(str(d), '0') + + # from None + self.assertRaises(TypeError, nc.create_decimal, None) + + # from int + d = nc.create_decimal(456) + self.assertTrue(isinstance(d, Decimal)) + self.assertEqual(nc.create_decimal(45678), + nc.create_decimal('457E+2')) + + # from string + d = Decimal('456789') + self.assertEqual(str(d), '456789') + d = nc.create_decimal('456789') + self.assertEqual(str(d), '4.57E+5') + # leading and trailing whitespace should result in a NaN; + # spaces are already checked in Cowlishaw's test-suite, so + # here we just check that a trailing newline results in a NaN + self.assertEqual(str(nc.create_decimal('3.14\n')), 'NaN') + + # from tuples + d = Decimal( (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) ) + self.assertEqual(str(d), '-4.34913534E-17') + d = nc.create_decimal( (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) ) + self.assertEqual(str(d), '-4.35E-17') + + # from Decimal + prevdec = Decimal(500000123) + d = Decimal(prevdec) + self.assertEqual(str(d), '500000123') + d = nc.create_decimal(prevdec) + self.assertEqual(str(d), '5.00E+8') + + def test_unicode_digits(self): + test_values = { + '\uff11': '1', + '\u0660.\u0660\u0663\u0667\u0662e-\u0663' : '0.0000372', + '-nan\u0c68\u0c6a\u0c66\u0c66' : '-NaN2400', + } + for input, expected in test_values.items(): + self.assertEqual(str(Decimal(input)), expected) + + +class DecimalImplicitConstructionTest(unittest.TestCase): + '''Unit tests for Implicit Construction cases of Decimal.''' + + def test_implicit_from_None(self): + self.assertRaises(TypeError, eval, 'Decimal(5) + None', globals()) + + def test_implicit_from_int(self): + #normal + self.assertEqual(str(Decimal(5) + 45), '50') + #exceeding precision + self.assertEqual(Decimal(5) + 123456789000, Decimal(123456789000)) + + def test_implicit_from_string(self): + self.assertRaises(TypeError, eval, 'Decimal(5) + "3"', globals()) + + def test_implicit_from_float(self): + self.assertRaises(TypeError, eval, 'Decimal(5) + 2.2', globals()) + + def test_implicit_from_Decimal(self): + self.assertEqual(Decimal(5) + Decimal(45), Decimal(50)) + + def test_rop(self): + # Allow other classes to be trained to interact with Decimals + class E: + def __divmod__(self, other): + return 'divmod ' + str(other) + def __rdivmod__(self, other): + return str(other) + ' rdivmod' + def __lt__(self, other): + return 'lt ' + str(other) + def __gt__(self, other): + return 'gt ' + str(other) + def __le__(self, other): + return 'le ' + str(other) + def __ge__(self, other): + return 'ge ' + str(other) + def __eq__(self, other): + return 'eq ' + str(other) + def __ne__(self, other): + return 'ne ' + str(other) + + self.assertEqual(divmod(E(), Decimal(10)), 'divmod 10') + self.assertEqual(divmod(Decimal(10), E()), '10 rdivmod') + self.assertEqual(eval('Decimal(10) < E()'), 'gt 10') + self.assertEqual(eval('Decimal(10) > E()'), 'lt 10') + self.assertEqual(eval('Decimal(10) <= E()'), 'ge 10') + self.assertEqual(eval('Decimal(10) >= E()'), 'le 10') + self.assertEqual(eval('Decimal(10) == E()'), 'eq 10') + self.assertEqual(eval('Decimal(10) != E()'), 'ne 10') + + # insert operator methods and then exercise them + oplist = [ + ('+', '__add__', '__radd__'), + ('-', '__sub__', '__rsub__'), + ('*', '__mul__', '__rmul__'), + ('/', '__truediv__', '__rtruediv__'), + ('%', '__mod__', '__rmod__'), + ('//', '__floordiv__', '__rfloordiv__'), + ('**', '__pow__', '__rpow__') + ] + + for sym, lop, rop in oplist: + setattr(E, lop, lambda self, other: 'str' + lop + str(other)) + setattr(E, rop, lambda self, other: str(other) + rop + 'str') + self.assertEqual(eval('E()' + sym + 'Decimal(10)'), + 'str' + lop + '10') + self.assertEqual(eval('Decimal(10)' + sym + 'E()'), + '10' + rop + 'str') + + +class DecimalFormatTest(unittest.TestCase): + '''Unit tests for the format function.''' + def test_formatting(self): + # triples giving a format, a Decimal, and the expected result + test_values = [ + ('e', '0E-15', '0e-15'), + ('e', '2.3E-15', '2.3e-15'), + ('e', '2.30E+2', '2.30e+2'), # preserve significant zeros + ('e', '2.30000E-15', '2.30000e-15'), + ('e', '1.23456789123456789e40', '1.23456789123456789e+40'), + ('e', '1.5', '1.5e+0'), + ('e', '0.15', '1.5e-1'), + ('e', '0.015', '1.5e-2'), + ('e', '0.0000000000015', '1.5e-12'), + ('e', '15.0', '1.50e+1'), + ('e', '-15', '-1.5e+1'), + ('e', '0', '0e+0'), + ('e', '0E1', '0e+1'), + ('e', '0.0', '0e-1'), + ('e', '0.00', '0e-2'), + ('.6e', '0E-15', '0.000000e-9'), + ('.6e', '0', '0.000000e+6'), + ('.6e', '9.999999', '9.999999e+0'), + ('.6e', '9.9999999', '1.000000e+1'), + ('.6e', '-1.23e5', '-1.230000e+5'), + ('.6e', '1.23456789e-3', '1.234568e-3'), + ('f', '0', '0'), + ('f', '0.0', '0.0'), + ('f', '0E-2', '0.00'), + ('f', '0.00E-8', '0.0000000000'), + ('f', '0E1', '0'), # loses exponent information + ('f', '3.2E1', '32'), + ('f', '3.2E2', '320'), + ('f', '3.20E2', '320'), + ('f', '3.200E2', '320.0'), + ('f', '3.2E-6', '0.0000032'), + ('.6f', '0E-15', '0.000000'), # all zeros treated equally + ('.6f', '0E1', '0.000000'), + ('.6f', '0', '0.000000'), + ('.0f', '0', '0'), # no decimal point + ('.0f', '0e-2', '0'), + ('.0f', '3.14159265', '3'), + ('.1f', '3.14159265', '3.1'), + ('.4f', '3.14159265', '3.1416'), + ('.6f', '3.14159265', '3.141593'), + ('.7f', '3.14159265', '3.1415926'), # round-half-even! + ('.8f', '3.14159265', '3.14159265'), + ('.9f', '3.14159265', '3.141592650'), + + ('g', '0', '0'), + ('g', '0.0', '0.0'), + ('g', '0E1', '0e+1'), + ('G', '0E1', '0E+1'), + ('g', '0E-5', '0.00000'), + ('g', '0E-6', '0.000000'), + ('g', '0E-7', '0e-7'), + ('g', '-0E2', '-0e+2'), + ('.0g', '3.14159265', '3'), # 0 sig fig -> 1 sig fig + ('.1g', '3.14159265', '3'), + ('.2g', '3.14159265', '3.1'), + ('.5g', '3.14159265', '3.1416'), + ('.7g', '3.14159265', '3.141593'), + ('.8g', '3.14159265', '3.1415926'), # round-half-even! + ('.9g', '3.14159265', '3.14159265'), + ('.10g', '3.14159265', '3.14159265'), # don't pad + + ('%', '0E1', '0%'), + ('%', '0E0', '0%'), + ('%', '0E-1', '0%'), + ('%', '0E-2', '0%'), + ('%', '0E-3', '0.0%'), + ('%', '0E-4', '0.00%'), + + ('.3%', '0', '0.000%'), # all zeros treated equally + ('.3%', '0E10', '0.000%'), + ('.3%', '0E-10', '0.000%'), + ('.3%', '2.34', '234.000%'), + ('.3%', '1.234567', '123.457%'), + ('.0%', '1.23', '123%'), + + ('e', 'NaN', 'NaN'), + ('f', '-NaN123', '-NaN123'), + ('+g', 'NaN456', '+NaN456'), + ('.3e', 'Inf', 'Infinity'), + ('.16f', '-Inf', '-Infinity'), + ('.0g', '-sNaN', '-sNaN'), + + ('', '1.00', '1.00'), + + # test alignment and padding + ('6', '123', ' 123'), + ('<6', '123', '123 '), + ('>6', '123', ' 123'), + ('^6', '123', ' 123 '), + ('=+6', '123', '+ 123'), + ('#<10', 'NaN', 'NaN#######'), + ('#<10', '-4.3', '-4.3######'), + ('#<+10', '0.0130', '+0.0130###'), + ('#< 10', '0.0130', ' 0.0130###'), + ('@>10', '-Inf', '@-Infinity'), + ('#>5', '-Inf', '-Infinity'), + ('?^5', '123', '?123?'), + ('%^6', '123', '%123%%'), + (' ^6', '-45.6', '-45.6 '), + ('/=10', '-45.6', '-/////45.6'), + ('/=+10', '45.6', '+/////45.6'), + ('/= 10', '45.6', ' /////45.6'), + + # thousands separator + (',', '1234567', '1,234,567'), + (',', '123456', '123,456'), + (',', '12345', '12,345'), + (',', '1234', '1,234'), + (',', '123', '123'), + (',', '12', '12'), + (',', '1', '1'), + (',', '0', '0'), + (',', '-1234567', '-1,234,567'), + (',', '-123456', '-123,456'), + ('7,', '123456', '123,456'), + ('8,', '123456', ' 123,456'), + ('08,', '123456', '0,123,456'), # special case: extra 0 needed + ('+08,', '123456', '+123,456'), # but not if there's a sign + (' 08,', '123456', ' 123,456'), + ('08,', '-123456', '-123,456'), + ('+09,', '123456', '+0,123,456'), + # ... with fractional part... + ('07,', '1234.56', '1,234.56'), + ('08,', '1234.56', '1,234.56'), + ('09,', '1234.56', '01,234.56'), + ('010,', '1234.56', '001,234.56'), + ('011,', '1234.56', '0,001,234.56'), + ('012,', '1234.56', '0,001,234.56'), + ('08,.1f', '1234.5', '01,234.5'), + # no thousands separators in fraction part + (',', '1.23456789', '1.23456789'), + (',%', '123.456789', '12,345.6789%'), + (',e', '123456', '1.23456e+5'), + (',E', '123456', '1.23456E+5'), + + # issue 6850 + ('a=-7.0', '0.12345', 'aaaa0.1'), + ] + for fmt, d, result in test_values: + self.assertEqual(format(Decimal(d), fmt), result) + + def test_n_format(self): + try: + from locale import CHAR_MAX + except ImportError: + return + + # Set up some localeconv-like dictionaries + en_US = { + 'decimal_point': '.', + 'thousands_sep': ',', + 'grouping': b'\003\003'.decode() + } + + fr_FR = { + 'decimal_point': ',', + 'thousands_sep': '', + 'grouping': str(CHAR_MAX) + } + + ru_RU = { + 'decimal_point': ',', + 'thousands_sep': ' ', + 'grouping': b'\003\003'.decode() + } + + crazy = { + 'decimal_point': '&', + 'thousands_sep': '-', + 'grouping': b'\001\004\002'.decode() + str(CHAR_MAX) + } + + dotsep_utf8 = { + 'decimal_point': b'\xc2\xbf'.decode(), + 'thousands_sep': b'\xc2\xb4'.decode(), + 'grouping': b'\003\003'.decode() + } + + def get_fmt(x, override=None, fmt='n'): + return Decimal.__format__(Decimal(x), fmt, override) + + self.assertEqual(get_fmt(Decimal('12.7'), en_US), '12.7') + self.assertEqual(get_fmt(Decimal('12.7'), fr_FR), '12,7') + self.assertEqual(get_fmt(Decimal('12.7'), ru_RU), '12,7') + self.assertEqual(get_fmt(Decimal('12.7'), crazy), '1-2&7') + + self.assertEqual(get_fmt(123456789, en_US), '123,456,789') + self.assertEqual(get_fmt(123456789, fr_FR), '123456789') + self.assertEqual(get_fmt(123456789, ru_RU), '123 456 789') + self.assertEqual(get_fmt(1234567890123, crazy), '123456-78-9012-3') + + self.assertEqual(get_fmt(123456789, en_US, '.6n'), '1.23457e+8') + self.assertEqual(get_fmt(123456789, fr_FR, '.6n'), '1,23457e+8') + self.assertEqual(get_fmt(123456789, ru_RU, '.6n'), '1,23457e+8') + self.assertEqual(get_fmt(123456789, crazy, '.6n'), '1&23457e+8') + + # zero padding + self.assertEqual(get_fmt(1234, fr_FR, '03n'), '1234') + self.assertEqual(get_fmt(1234, fr_FR, '04n'), '1234') + self.assertEqual(get_fmt(1234, fr_FR, '05n'), '01234') + self.assertEqual(get_fmt(1234, fr_FR, '06n'), '001234') + + self.assertEqual(get_fmt(12345, en_US, '05n'), '12,345') + self.assertEqual(get_fmt(12345, en_US, '06n'), '12,345') + self.assertEqual(get_fmt(12345, en_US, '07n'), '012,345') + self.assertEqual(get_fmt(12345, en_US, '08n'), '0,012,345') + self.assertEqual(get_fmt(12345, en_US, '09n'), '0,012,345') + self.assertEqual(get_fmt(12345, en_US, '010n'), '00,012,345') + + self.assertEqual(get_fmt(123456, crazy, '06n'), '1-2345-6') + self.assertEqual(get_fmt(123456, crazy, '07n'), '1-2345-6') + self.assertEqual(get_fmt(123456, crazy, '08n'), '1-2345-6') + self.assertEqual(get_fmt(123456, crazy, '09n'), '01-2345-6') + self.assertEqual(get_fmt(123456, crazy, '010n'), '0-01-2345-6') + self.assertEqual(get_fmt(123456, crazy, '011n'), '0-01-2345-6') + self.assertEqual(get_fmt(123456, crazy, '012n'), '00-01-2345-6') + self.assertEqual(get_fmt(123456, crazy, '013n'), '000-01-2345-6') + + # UTF-8 separator and decimal point + self.assertEqual(get_fmt(Decimal('-1.5'), dotsep_utf8, '020n'), + '-0?000?000?000?001?5') + + +class DecimalArithmeticOperatorsTest(unittest.TestCase): + '''Unit tests for all arithmetic operators, binary and unary.''' + + def test_addition(self): + + d1 = Decimal('-11.1') + d2 = Decimal('22.2') + + #two Decimals + self.assertEqual(d1+d2, Decimal('11.1')) + self.assertEqual(d2+d1, Decimal('11.1')) + + #with other type, left + c = d1 + 5 + self.assertEqual(c, Decimal('-6.1')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 5 + d1 + self.assertEqual(c, Decimal('-6.1')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 += d2 + self.assertEqual(d1, Decimal('11.1')) + + #inline with other type + d1 += 5 + self.assertEqual(d1, Decimal('16.1')) + + def test_subtraction(self): + + d1 = Decimal('-11.1') + d2 = Decimal('22.2') + + #two Decimals + self.assertEqual(d1-d2, Decimal('-33.3')) + self.assertEqual(d2-d1, Decimal('33.3')) + + #with other type, left + c = d1 - 5 + self.assertEqual(c, Decimal('-16.1')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 5 - d1 + self.assertEqual(c, Decimal('16.1')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 -= d2 + self.assertEqual(d1, Decimal('-33.3')) + + #inline with other type + d1 -= 5 + self.assertEqual(d1, Decimal('-38.3')) + + def test_multiplication(self): + + d1 = Decimal('-5') + d2 = Decimal('3') + + #two Decimals + self.assertEqual(d1*d2, Decimal('-15')) + self.assertEqual(d2*d1, Decimal('-15')) + + #with other type, left + c = d1 * 5 + self.assertEqual(c, Decimal('-25')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 5 * d1 + self.assertEqual(c, Decimal('-25')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 *= d2 + self.assertEqual(d1, Decimal('-15')) + + #inline with other type + d1 *= 5 + self.assertEqual(d1, Decimal('-75')) + + def test_division(self): + + d1 = Decimal('-5') + d2 = Decimal('2') + + #two Decimals + self.assertEqual(d1/d2, Decimal('-2.5')) + self.assertEqual(d2/d1, Decimal('-0.4')) + + #with other type, left + c = d1 / 4 + self.assertEqual(c, Decimal('-1.25')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 4 / d1 + self.assertEqual(c, Decimal('-0.8')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 /= d2 + self.assertEqual(d1, Decimal('-2.5')) + + #inline with other type + d1 /= 4 + self.assertEqual(d1, Decimal('-0.625')) + + def test_floor_division(self): + + d1 = Decimal('5') + d2 = Decimal('2') + + #two Decimals + self.assertEqual(d1//d2, Decimal('2')) + self.assertEqual(d2//d1, Decimal('0')) + + #with other type, left + c = d1 // 4 + self.assertEqual(c, Decimal('1')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 7 // d1 + self.assertEqual(c, Decimal('1')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 //= d2 + self.assertEqual(d1, Decimal('2')) + + #inline with other type + d1 //= 2 + self.assertEqual(d1, Decimal('1')) + + def test_powering(self): + + d1 = Decimal('5') + d2 = Decimal('2') + + #two Decimals + self.assertEqual(d1**d2, Decimal('25')) + self.assertEqual(d2**d1, Decimal('32')) + + #with other type, left + c = d1 ** 4 + self.assertEqual(c, Decimal('625')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 7 ** d1 + self.assertEqual(c, Decimal('16807')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 **= d2 + self.assertEqual(d1, Decimal('25')) + + #inline with other type + d1 **= 4 + self.assertEqual(d1, Decimal('390625')) + + def test_module(self): + + d1 = Decimal('5') + d2 = Decimal('2') + + #two Decimals + self.assertEqual(d1%d2, Decimal('1')) + self.assertEqual(d2%d1, Decimal('2')) + + #with other type, left + c = d1 % 4 + self.assertEqual(c, Decimal('1')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 7 % d1 + self.assertEqual(c, Decimal('2')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 %= d2 + self.assertEqual(d1, Decimal('1')) + + #inline with other type + d1 %= 4 + self.assertEqual(d1, Decimal('1')) + + def test_floor_div_module(self): + + d1 = Decimal('5') + d2 = Decimal('2') + + #two Decimals + (p, q) = divmod(d1, d2) + self.assertEqual(p, Decimal('2')) + self.assertEqual(q, Decimal('1')) + self.assertEqual(type(p), type(d1)) + self.assertEqual(type(q), type(d1)) + + #with other type, left + (p, q) = divmod(d1, 4) + self.assertEqual(p, Decimal('1')) + self.assertEqual(q, Decimal('1')) + self.assertEqual(type(p), type(d1)) + self.assertEqual(type(q), type(d1)) + + #with other type, right + (p, q) = divmod(7, d1) + self.assertEqual(p, Decimal('1')) + self.assertEqual(q, Decimal('2')) + self.assertEqual(type(p), type(d1)) + self.assertEqual(type(q), type(d1)) + + def test_unary_operators(self): + self.assertEqual(+Decimal(45), Decimal(+45)) # + + self.assertEqual(-Decimal(45), Decimal(-45)) # - + self.assertEqual(abs(Decimal(45)), abs(Decimal(-45))) # abs + + def test_nan_comparisons(self): + n = Decimal('NaN') + s = Decimal('sNaN') + i = Decimal('Inf') + f = Decimal('2') + for x, y in [(n, n), (n, i), (i, n), (n, f), (f, n), + (s, n), (n, s), (s, i), (i, s), (s, f), (f, s), (s, s)]: + self.assertTrue(x != y) + self.assertTrue(not (x == y)) + self.assertTrue(not (x < y)) + self.assertTrue(not (x <= y)) + self.assertTrue(not (x > y)) + self.assertTrue(not (x >= y)) + +# The following are two functions used to test threading in the next class + +def thfunc1(cls): + d1 = Decimal(1) + d3 = Decimal(3) + test1 = d1/d3 + cls.synchro.wait() + test2 = d1/d3 + cls.finish1.set() + + cls.assertEqual(test1, Decimal('0.333333333333333333333333')) + cls.assertEqual(test2, Decimal('0.333333333333333333333333')) + return + +def thfunc2(cls): + d1 = Decimal(1) + d3 = Decimal(3) + test1 = d1/d3 + thiscontext = getcontext() + thiscontext.prec = 18 + test2 = d1/d3 + cls.synchro.set() + cls.finish2.set() + + cls.assertEqual(test1, Decimal('0.333333333333333333333333')) + cls.assertEqual(test2, Decimal('0.333333333333333333')) + return + + +class DecimalUseOfContextTest(unittest.TestCase): + '''Unit tests for Use of Context cases in Decimal.''' + + try: + import threading + except ImportError: + threading = None + + # Take care executing this test from IDLE, there's an issue in threading + # that hangs IDLE and I couldn't find it + + def test_threading(self): + # Test the "threading isolation" of a Context. Also test changing + # the DefaultContext, which acts as a template for the thread-local + # contexts. + + DefaultContext.prec = 24 + + self.synchro = threading.Event() + self.finish1 = threading.Event() + self.finish2 = threading.Event() + + th1 = threading.Thread(target=thfunc1, args=(self,)) + th2 = threading.Thread(target=thfunc2, args=(self,)) + + th1.start() + th2.start() + + self.finish1.wait() + self.finish2.wait() + return + + if threading is None: + del test_threading + + +class DecimalUsabilityTest(unittest.TestCase): + '''Unit tests for Usability cases of Decimal.''' + + def test_comparison_operators(self): + + da = Decimal('23.42') + db = Decimal('23.42') + dc = Decimal('45') + + #two Decimals + self.assertTrue(dc > da) + self.assertTrue(dc >= da) + self.assertTrue(da < dc) + self.assertTrue(da <= dc) + self.assertEqual(da, db) + self.assertTrue(da != dc) + self.assertTrue(da <= db) + self.assertTrue(da >= db) + + #a Decimal and an int + self.assertTrue(dc > 23) + self.assertTrue(23 < dc) + self.assertEqual(dc, 45) + + #a Decimal and uncomparable + self.assertNotEqual(da, 'ugly') + self.assertNotEqual(da, 32.7) + self.assertNotEqual(da, object()) + self.assertNotEqual(da, object) + + # sortable + a = list(map(Decimal, range(100))) + b = a[:] + random.shuffle(a) + a.sort() + self.assertEqual(a, b) + + def test_copy_and_deepcopy_methods(self): + d = Decimal('43.24') + c = copy.copy(d) + self.assertEqual(id(c), id(d)) + dc = copy.deepcopy(d) + self.assertEqual(id(dc), id(d)) + + def test_hash_method(self): + #just that it's hashable + hash(Decimal(23)) + + test_values = [Decimal(sign*(2**m + n)) + for m in [0, 14, 15, 16, 17, 30, 31, + 32, 33, 62, 63, 64, 65, 66] + for n in range(-10, 10) + for sign in [-1, 1]] + test_values.extend([ + Decimal("-0"), # zeros + Decimal("0.00"), + Decimal("-0.000"), + Decimal("0E10"), + Decimal("-0E12"), + Decimal("10.0"), # negative exponent + Decimal("-23.00000"), + Decimal("1230E100"), # positive exponent + Decimal("-4.5678E50"), + # a value for which hash(n) != hash(n % (2**64-1)) + # in Python pre-2.6 + Decimal(2**64 + 2**32 - 1), + # selection of values which fail with the old (before + # version 2.6) long.__hash__ + Decimal("1.634E100"), + Decimal("90.697E100"), + Decimal("188.83E100"), + Decimal("1652.9E100"), + Decimal("56531E100"), + ]) + + # check that hash(d) == hash(int(d)) for integral values + for value in test_values: + self.assertEqual(hash(value), hash(int(value))) + + #the same hash that to an int + self.assertEqual(hash(Decimal(23)), hash(23)) + self.assertRaises(TypeError, hash, Decimal('NaN')) + self.assertTrue(hash(Decimal('Inf'))) + self.assertTrue(hash(Decimal('-Inf'))) + + # check that the value of the hash doesn't depend on the + # current context (issue #1757) + c = getcontext() + old_precision = c.prec + x = Decimal("123456789.1") + + c.prec = 6 + h1 = hash(x) + c.prec = 10 + h2 = hash(x) + c.prec = 16 + h3 = hash(x) + + self.assertEqual(h1, h2) + self.assertEqual(h1, h3) + c.prec = old_precision + + def test_min_and_max_methods(self): + + d1 = Decimal('15.32') + d2 = Decimal('28.5') + l1 = 15 + l2 = 28 + + #between Decimals + self.assertTrue(min(d1,d2) is d1) + self.assertTrue(min(d2,d1) is d1) + self.assertTrue(max(d1,d2) is d2) + self.assertTrue(max(d2,d1) is d2) + + #between Decimal and long + self.assertTrue(min(d1,l2) is d1) + self.assertTrue(min(l2,d1) is d1) + self.assertTrue(max(l1,d2) is d2) + self.assertTrue(max(d2,l1) is d2) + + def test_as_nonzero(self): + #as false + self.assertFalse(Decimal(0)) + #as true + self.assertTrue(Decimal('0.372')) + + def test_tostring_methods(self): + #Test str and repr methods. + + d = Decimal('15.32') + self.assertEqual(str(d), '15.32') # str + self.assertEqual(repr(d), "Decimal('15.32')") # repr + + def test_tonum_methods(self): + #Test float, int and long methods. + + d1 = Decimal('66') + d2 = Decimal('15.32') + + #int + self.assertEqual(int(d1), 66) + self.assertEqual(int(d2), 15) + + #long + self.assertEqual(int(d1), 66) + self.assertEqual(int(d2), 15) + + #float + self.assertEqual(float(d1), 66) + self.assertEqual(float(d2), 15.32) + + #floor + test_pairs = [ + ('123.00', 123), + ('3.2', 3), + ('3.54', 3), + ('3.899', 3), + ('-2.3', -3), + ('-11.0', -11), + ('0.0', 0), + ('-0E3', 0), + ] + for d, i in test_pairs: + self.assertEqual(math.floor(Decimal(d)), i) + self.assertRaises(ValueError, math.floor, Decimal('-NaN')) + self.assertRaises(ValueError, math.floor, Decimal('sNaN')) + self.assertRaises(ValueError, math.floor, Decimal('NaN123')) + self.assertRaises(OverflowError, math.floor, Decimal('Inf')) + self.assertRaises(OverflowError, math.floor, Decimal('-Inf')) + + #ceiling + test_pairs = [ + ('123.00', 123), + ('3.2', 4), + ('3.54', 4), + ('3.899', 4), + ('-2.3', -2), + ('-11.0', -11), + ('0.0', 0), + ('-0E3', 0), + ] + for d, i in test_pairs: + self.assertEqual(math.ceil(Decimal(d)), i) + self.assertRaises(ValueError, math.ceil, Decimal('-NaN')) + self.assertRaises(ValueError, math.ceil, Decimal('sNaN')) + self.assertRaises(ValueError, math.ceil, Decimal('NaN123')) + self.assertRaises(OverflowError, math.ceil, Decimal('Inf')) + self.assertRaises(OverflowError, math.ceil, Decimal('-Inf')) + + #round, single argument + test_pairs = [ + ('123.00', 123), + ('3.2', 3), + ('3.54', 4), + ('3.899', 4), + ('-2.3', -2), + ('-11.0', -11), + ('0.0', 0), + ('-0E3', 0), + ('-3.5', -4), + ('-2.5', -2), + ('-1.5', -2), + ('-0.5', 0), + ('0.5', 0), + ('1.5', 2), + ('2.5', 2), + ('3.5', 4), + ] + for d, i in test_pairs: + self.assertEqual(round(Decimal(d)), i) + self.assertRaises(ValueError, round, Decimal('-NaN')) + self.assertRaises(ValueError, round, Decimal('sNaN')) + self.assertRaises(ValueError, round, Decimal('NaN123')) + self.assertRaises(OverflowError, round, Decimal('Inf')) + self.assertRaises(OverflowError, round, Decimal('-Inf')) + + #round, two arguments; this is essentially equivalent + #to quantize, which is already extensively tested + test_triples = [ + ('123.456', -4, '0E+4'), + ('123.456', -3, '0E+3'), + ('123.456', -2, '1E+2'), + ('123.456', -1, '1.2E+2'), + ('123.456', 0, '123'), + ('123.456', 1, '123.5'), + ('123.456', 2, '123.46'), + ('123.456', 3, '123.456'), + ('123.456', 4, '123.4560'), + ('123.455', 2, '123.46'), + ('123.445', 2, '123.44'), + ('Inf', 4, 'NaN'), + ('-Inf', -23, 'NaN'), + ('sNaN314', 3, 'NaN314'), + ] + for d, n, r in test_triples: + self.assertEqual(str(round(Decimal(d), n)), r) + + + + def test_eval_round_trip(self): + + #with zero + d = Decimal( (0, (0,), 0) ) + self.assertEqual(d, eval(repr(d))) + + #int + d = Decimal( (1, (4, 5), 0) ) + self.assertEqual(d, eval(repr(d))) + + #float + d = Decimal( (0, (4, 5, 3, 4), -2) ) + self.assertEqual(d, eval(repr(d))) + + #weird + d = Decimal( (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) ) + self.assertEqual(d, eval(repr(d))) + + def test_as_tuple(self): + + #with zero + d = Decimal(0) + self.assertEqual(d.as_tuple(), (0, (0,), 0) ) + + #int + d = Decimal(-45) + self.assertEqual(d.as_tuple(), (1, (4, 5), 0) ) + + #complicated string + d = Decimal("-4.34913534E-17") + self.assertEqual(d.as_tuple(), (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) ) + + # XXX empty tuple, like in the NaN case + d = Decimal("Infinity") + self.assertEqual(d.as_tuple(), (0, (), 'F') ) + + #leading zeros in coefficient should be stripped + d = Decimal( (0, (0, 0, 4, 0, 5, 3, 4), -2) ) + self.assertEqual(d.as_tuple(), (0, (4, 0, 5, 3, 4), -2) ) + d = Decimal( (1, (0, 0, 0), 37) ) + self.assertEqual(d.as_tuple(), (1, (0,), 37)) + d = Decimal( (1, (), 37) ) + self.assertEqual(d.as_tuple(), (1, (0,), 37)) + + #leading zeros in NaN diagnostic info should be stripped + d = Decimal( (0, (0, 0, 4, 0, 5, 3, 4), 'n') ) + self.assertEqual(d.as_tuple(), (0, (4, 0, 5, 3, 4), 'n') ) + d = Decimal( (1, (0, 0, 0), 'N') ) + self.assertEqual(d.as_tuple(), (1, (), 'N') ) + d = Decimal( (1, (), 'n') ) + self.assertEqual(d.as_tuple(), (1, (), 'n') ) + + # XXX coefficient in infinity should raise an error + # d = Decimal( (0, (4, 5, 3, 4), 'F') ) + # self.assertEqual(d.as_tuple(), (0, (0,), 'F')) + # d = Decimal( (1, (0, 2, 7, 1), 'F') ) + # self.assertEqual(d.as_tuple(), (1, (0,), 'F')) + + def XXX_test_immutability_operations(self): + # XXX Checked extensively in the library runtest. + # Do operations and check that it didn't change change internal objects. + + d1 = Decimal('-25e55') + b1 = Decimal('-25e55') + d2 = Decimal('33e+33') + b2 = Decimal('33e+33') + + def checkSameDec(operation, useOther=False): + if useOther: + eval("d1." + operation + "(d2)") + self.assertEqual(d1._sign, b1._sign) + self.assertEqual(d1._int, b1._int) + self.assertEqual(d1._exp, b1._exp) + self.assertEqual(d2._sign, b2._sign) + self.assertEqual(d2._int, b2._int) + self.assertEqual(d2._exp, b2._exp) + else: + eval("d1." + operation + "()") + self.assertEqual(d1._sign, b1._sign) + self.assertEqual(d1._int, b1._int) + self.assertEqual(d1._exp, b1._exp) + return + + Decimal(d1) + self.assertEqual(d1._sign, b1._sign) + self.assertEqual(d1._int, b1._int) + self.assertEqual(d1._exp, b1._exp) + + checkSameDec("__abs__") + checkSameDec("__add__", True) + checkSameDec("__divmod__", True) + checkSameDec("__eq__", True) + checkSameDec("__ne__", True) + checkSameDec("__le__", True) + checkSameDec("__lt__", True) + checkSameDec("__ge__", True) + checkSameDec("__gt__", True) + checkSameDec("__float__") + checkSameDec("__floordiv__", True) + checkSameDec("__hash__") + checkSameDec("__int__") + checkSameDec("__trunc__") + checkSameDec("__mod__", True) + checkSameDec("__mul__", True) + checkSameDec("__neg__") + checkSameDec("__bool__") + checkSameDec("__pos__") + checkSameDec("__pow__", True) + checkSameDec("__radd__", True) + checkSameDec("__rdivmod__", True) + checkSameDec("__repr__") + checkSameDec("__rfloordiv__", True) + checkSameDec("__rmod__", True) + checkSameDec("__rmul__", True) + checkSameDec("__rpow__", True) + checkSameDec("__rsub__", True) + checkSameDec("__str__") + checkSameDec("__sub__", True) + checkSameDec("__truediv__", True) + checkSameDec("adjusted") + checkSameDec("as_tuple") + checkSameDec("compare", True) + checkSameDec("max", True) + checkSameDec("min", True) + checkSameDec("normalize") + checkSameDec("quantize", True) + checkSameDec("remainder_near", True) + checkSameDec("same_quantum", True) + checkSameDec("sqrt") + checkSameDec("to_eng_string") + checkSameDec("to_integral") + + def test_subclassing(self): + # Different behaviours when subclassing Decimal + + class MyDecimal(Decimal): + pass + + d1 = MyDecimal(1) + d2 = MyDecimal(2) + d = d1 + d2 + self.assertTrue(type(d) is Decimal) + + d = d1.max(d2) + self.assertTrue(type(d) is Decimal) + + def test_implicit_context(self): + # Check results when context given implicitly. (Issue 2478) + c = getcontext() + self.assertEqual(str(Decimal(0).sqrt()), + str(c.sqrt(Decimal(0)))) + + def test_conversions_from_int(self): + # Check that methods taking a second Decimal argument will + # always accept an integer in place of a Decimal. + self.assertEqual(Decimal(4).compare(3), + Decimal(4).compare(Decimal(3))) + self.assertEqual(Decimal(4).compare_signal(3), + Decimal(4).compare_signal(Decimal(3))) + self.assertEqual(Decimal(4).compare_total(3), + Decimal(4).compare_total(Decimal(3))) + self.assertEqual(Decimal(4).compare_total_mag(3), + Decimal(4).compare_total_mag(Decimal(3))) + self.assertEqual(Decimal(10101).logical_and(1001), + Decimal(10101).logical_and(Decimal(1001))) + self.assertEqual(Decimal(10101).logical_or(1001), + Decimal(10101).logical_or(Decimal(1001))) + self.assertEqual(Decimal(10101).logical_xor(1001), + Decimal(10101).logical_xor(Decimal(1001))) + self.assertEqual(Decimal(567).max(123), + Decimal(567).max(Decimal(123))) + self.assertEqual(Decimal(567).max_mag(123), + Decimal(567).max_mag(Decimal(123))) + self.assertEqual(Decimal(567).min(123), + Decimal(567).min(Decimal(123))) + self.assertEqual(Decimal(567).min_mag(123), + Decimal(567).min_mag(Decimal(123))) + self.assertEqual(Decimal(567).next_toward(123), + Decimal(567).next_toward(Decimal(123))) + self.assertEqual(Decimal(1234).quantize(100), + Decimal(1234).quantize(Decimal(100))) + self.assertEqual(Decimal(768).remainder_near(1234), + Decimal(768).remainder_near(Decimal(1234))) + self.assertEqual(Decimal(123).rotate(1), + Decimal(123).rotate(Decimal(1))) + self.assertEqual(Decimal(1234).same_quantum(1000), + Decimal(1234).same_quantum(Decimal(1000))) + self.assertEqual(Decimal('9.123').scaleb(-100), + Decimal('9.123').scaleb(Decimal(-100))) + self.assertEqual(Decimal(456).shift(-1), + Decimal(456).shift(Decimal(-1))) + + self.assertEqual(Decimal(-12).fma(Decimal(45), 67), + Decimal(-12).fma(Decimal(45), Decimal(67))) + self.assertEqual(Decimal(-12).fma(45, 67), + Decimal(-12).fma(Decimal(45), Decimal(67))) + self.assertEqual(Decimal(-12).fma(45, Decimal(67)), + Decimal(-12).fma(Decimal(45), Decimal(67))) + + +class DecimalPythonAPItests(unittest.TestCase): + + def test_abc(self): + self.assertTrue(issubclass(Decimal, numbers.Number)) + self.assertTrue(not issubclass(Decimal, numbers.Real)) + self.assertTrue(isinstance(Decimal(0), numbers.Number)) + self.assertTrue(not isinstance(Decimal(0), numbers.Real)) + + def test_pickle(self): + d = Decimal('-3.141590000') + p = pickle.dumps(d) + e = pickle.loads(p) + self.assertEqual(d, e) + + def test_int(self): + for x in range(-250, 250): + s = '%0.2f' % (x / 100.0) + # should work the same as for floats + self.assertEqual(int(Decimal(s)), int(float(s))) + # should work the same as to_integral in the ROUND_DOWN mode + d = Decimal(s) + r = d.to_integral(ROUND_DOWN) + self.assertEqual(Decimal(int(d)), r) + + self.assertRaises(ValueError, int, Decimal('-nan')) + self.assertRaises(ValueError, int, Decimal('snan')) + self.assertRaises(OverflowError, int, Decimal('inf')) + self.assertRaises(OverflowError, int, Decimal('-inf')) + + def test_trunc(self): + for x in range(-250, 250): + s = '%0.2f' % (x / 100.0) + # should work the same as for floats + self.assertEqual(int(Decimal(s)), int(float(s))) + # should work the same as to_integral in the ROUND_DOWN mode + d = Decimal(s) + r = d.to_integral(ROUND_DOWN) + self.assertEqual(Decimal(math.trunc(d)), r) + + def test_from_float(self): + + class MyDecimal(Decimal): + pass + + r = MyDecimal.from_float(0.1) + self.assertEqual(type(r), MyDecimal) + self.assertEqual(str(r), + '0.1000000000000000055511151231257827021181583404541015625') + bigint = 12345678901234567890123456789 + self.assertEqual(MyDecimal.from_float(bigint), MyDecimal(bigint)) + self.assertTrue(MyDecimal.from_float(float('nan')).is_qnan()) + self.assertTrue(MyDecimal.from_float(float('inf')).is_infinite()) + self.assertTrue(MyDecimal.from_float(float('-inf')).is_infinite()) + self.assertEqual(str(MyDecimal.from_float(float('nan'))), + str(Decimal('NaN'))) + self.assertEqual(str(MyDecimal.from_float(float('inf'))), + str(Decimal('Infinity'))) + self.assertEqual(str(MyDecimal.from_float(float('-inf'))), + str(Decimal('-Infinity'))) + self.assertRaises(TypeError, MyDecimal.from_float, 'abc') + for i in range(200): + x = random.expovariate(0.01) * (random.random() * 2.0 - 1.0) + self.assertEqual(x, float(MyDecimal.from_float(x))) # roundtrip + + def test_create_decimal_from_float(self): + context = Context(prec=5, rounding=ROUND_DOWN) + self.assertEqual( + context.create_decimal_from_float(math.pi), + Decimal('3.1415') + ) + context = Context(prec=5, rounding=ROUND_UP) + self.assertEqual( + context.create_decimal_from_float(math.pi), + Decimal('3.1416') + ) + context = Context(prec=5, traps=[Inexact]) + self.assertRaises( + Inexact, + context.create_decimal_from_float, + math.pi + ) + self.assertEqual(repr(context.create_decimal_from_float(-0.0)), + "Decimal('-0')") + self.assertEqual(repr(context.create_decimal_from_float(1.0)), + "Decimal('1')") + self.assertEqual(repr(context.create_decimal_from_float(10)), + "Decimal('10')") + +class ContextAPItests(unittest.TestCase): + + def test_pickle(self): + c = Context() + e = pickle.loads(pickle.dumps(c)) + # XXX some are getters/setters + #for k in vars(c): + # v1 = vars(c)[k] + # v2 = vars(e)[k] + # self.assertEqual(v1, v2) + self.assertEqual(c.prec, e.prec) + self.assertEqual(c.Emin, e.Emin) + self.assertEqual(c.Emax, e.Emax) + self.assertEqual(c.rounding, e.rounding) + self.assertEqual(c.capitals, e.capitals) + self.assertEqual(c.traps, e.traps) + self.assertEqual(c.flags, e.flags) + self.assertEqual(c._clamp, e._clamp) + + def test_equality_with_other_types(self): + self.assertTrue(Decimal(10) in ['a', 1.0, Decimal(10), (1,2), {}]) + self.assertTrue(Decimal(10) not in ['a', 1.0, (1,2), {}]) + + def test_copy(self): + # All copies should be deep + c = Context() + d = c.copy() + self.assertNotEqual(id(c), id(d)) + self.assertNotEqual(id(c.flags), id(d.flags)) + self.assertNotEqual(id(c.traps), id(d.traps)) + +class WithStatementTest(unittest.TestCase): + # Can't do these as docstrings until Python 2.6 + # as doctest can't handle __future__ statements + + def test_localcontext(self): + # Use a copy of the current context in the block + orig_ctx = getcontext() + with localcontext() as enter_ctx: + set_ctx = getcontext() + final_ctx = getcontext() + self.assertTrue(orig_ctx is final_ctx, 'did not restore context correctly') + self.assertTrue(orig_ctx is not set_ctx, 'did not copy the context') + self.assertTrue(set_ctx is enter_ctx, '__enter__ returned wrong context') + + def test_localcontextarg(self): + # Use a copy of the supplied context in the block + orig_ctx = getcontext() + new_ctx = Context(prec=42) + with localcontext(new_ctx) as enter_ctx: + set_ctx = getcontext() + final_ctx = getcontext() + self.assertTrue(orig_ctx is final_ctx, 'did not restore context correctly') + self.assertTrue(set_ctx.prec == new_ctx.prec, 'did not set correct context') + self.assertTrue(new_ctx is not set_ctx, 'did not copy the context') + self.assertTrue(set_ctx is enter_ctx, '__enter__ returned wrong context') + +class ContextFlags(unittest.TestCase): + def test_flags_irrelevant(self): + # check that the result (numeric result + flags raised) of an + # arithmetic operation doesn't depend on the current flags + + # XXX 32-bit limits + context = Context(prec=9, Emin = -425000000, Emax = 425000000, + rounding=ROUND_HALF_EVEN, traps=[], flags=[]) + + # operations that raise various flags, in the form (function, arglist) + operations = [ + (context._apply, [Decimal("100E-425000010")]), + (context.sqrt, [Decimal(2)]), + (context.add, [Decimal("1.23456789"), Decimal("9.87654321")]), + (context.multiply, [Decimal("1.23456789"), Decimal("9.87654321")]), + (context.subtract, [Decimal("1.23456789"), Decimal("9.87654321")]), + ] + + # try various flags individually, then a whole lot at once + flagsets = [[Inexact], [Rounded], [Underflow], [Clamped], [Subnormal], + [Inexact, Rounded, Underflow, Clamped, Subnormal]] + + for fn, args in operations: + # find answer and flags raised using a clean context + context.clear_flags() + ans = fn(*args) + flags = [k for k, v in context.flags.items() if v] + + for extra_flags in flagsets: + # set flags, before calling operation + context.clear_flags() + for flag in extra_flags: + # XXX _raise_error + # context._raise_error(flag) + context.flags[flag] = True + new_ans = fn(*args) + + # flags that we expect to be set after the operation + expected_flags = list(flags) + for flag in extra_flags: + if flag not in expected_flags: + expected_flags.append(flag) + expected_flags.sort(key=id) + + # flags we actually got + new_flags = [k for k,v in context.flags.items() if v] + new_flags.sort(key=id) + + self.assertEqual(ans, new_ans, + "operation produces different answers depending on flags set: " + + "expected %s, got %s." % (ans, new_ans)) + self.assertEqual(new_flags, expected_flags, + "operation raises different flags depending on flags set: " + + "expected %s, got %s" % (expected_flags, new_flags)) + +def test_main(arith=False, verbose=None, todo_tests=None, debug=None): + """ Execute the tests. + + Runs all arithmetic tests if arith is True or if the "decimal" resource + is enabled in regrtest.py + """ + + init() + global TEST_ALL, DEBUG + TEST_ALL = arith or is_resource_enabled('decimal') + DEBUG = debug + + if todo_tests is None: + test_classes = [ + DecimalExplicitConstructionTest, + DecimalImplicitConstructionTest, + DecimalArithmeticOperatorsTest, + DecimalFormatTest, + DecimalUseOfContextTest, + DecimalUsabilityTest, + DecimalPythonAPItests, + ContextAPItests, + DecimalTest, + WithStatementTest, + ContextFlags + ] + else: + test_classes = [DecimalTest] + + # Dynamically build custom test definition for each file in the test + # directory and add the definitions to the DecimalTest class. This + # procedure insures that new files do not get skipped. + for filename in os.listdir(directory): + if '.decTest' not in filename or filename.startswith("."): + continue + head, tail = filename.split('.') + if todo_tests is not None and head not in todo_tests: + continue + tester = lambda self, f=filename: self.eval_file(directory + f) + setattr(DecimalTest, 'test_' + head, tester) + del filename, head, tail, tester + + + try: + run_unittest(*test_classes) + if todo_tests is None: + import decimal as DecimalModule + run_doctest(DecimalModule, verbose) + finally: + setcontext(ORIGINAL_CONTEXT) + +if __name__ == '__main__': + import optparse + p = optparse.OptionParser("test_decimal.py [--debug] [{--skip | test1 [test2 [...]]}]") + p.add_option('--debug', '-d', action='store_true', help='shows the test number and context before each test') + p.add_option('--skip', '-s', action='store_true', help='skip over 90% of the arithmetic tests') + (opt, args) = p.parse_args() + + if opt.skip: + test_main(arith=False, verbose=True) + elif args: + test_main(arith=True, verbose=True, todo_tests=args, debug=opt.debug) + else: + test_main(arith=True, verbose=True) From python-checkins at python.org Thu Jan 7 14:09:47 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 07 Jan 2010 13:09:47 -0000 Subject: [Python-checkins] r77346 - python/branches/py3k-cdecimal/Makefile.pre.in Message-ID: Author: stefan.krah Date: Thu Jan 7 14:09:47 2010 New Revision: 77346 Log: Add test/decimal_extended_tests to LIBSUBDIRS Modified: python/branches/py3k-cdecimal/Makefile.pre.in Modified: python/branches/py3k-cdecimal/Makefile.pre.in ============================================================================== --- python/branches/py3k-cdecimal/Makefile.pre.in (original) +++ python/branches/py3k-cdecimal/Makefile.pre.in Thu Jan 7 14:09:47 2010 @@ -835,6 +835,7 @@ MACHDEPS= $(PLATDIR) $(EXTRAPLATDIR) XMLLIBSUBDIRS= xml xml/dom xml/etree xml/parsers xml/sax LIBSUBDIRS= tkinter site-packages test test/output test/data \ + test/decimal_extended_tests \ test/decimaltestdata \ encodings \ email email/mime email/test email/test/data \ From python-checkins at python.org Thu Jan 7 14:19:38 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 07 Jan 2010 13:19:38 -0000 Subject: [Python-checkins] r77347 - python/branches/py3k-cdecimal/setup.py Message-ID: Author: stefan.krah Date: Thu Jan 7 14:19:38 2010 New Revision: 77347 Log: Add build instructions for cdecimal Modified: python/branches/py3k-cdecimal/setup.py Modified: python/branches/py3k-cdecimal/setup.py ============================================================================== --- python/branches/py3k-cdecimal/setup.py (original) +++ python/branches/py3k-cdecimal/setup.py Thu Jan 7 14:19:38 2010 @@ -7,7 +7,7 @@ from glob import glob from distutils import log -from distutils import sysconfig +from distutils import sysconfig, util from distutils import text_file from distutils.errors import * from distutils.core import Extension, setup @@ -1160,6 +1160,9 @@ exts.append(Extension('_codecs_%s' % loc, ['cjkcodecs/_codecs_%s.c' % loc])) + # Stefan Krah's cdecimal module + exts.append(self.cdecimal_ext()) + # Thomas Heller's _ctypes module self.detect_ctypes(inc_dirs, lib_dirs) @@ -1596,6 +1599,58 @@ ext.libraries.append(ffi_lib) self.use_system_libffi = True + def cdecimal_ext(self): + extra_compile_args = [] + sources = [ + 'cdecimal/cdecimal.c', + 'cdecimal/basearith.c', + 'cdecimal/constants.c', + 'cdecimal/context.c', + 'cdecimal/convolute.c', + 'cdecimal/crt.c', + 'cdecimal/difradix2.c', + 'cdecimal/error.c', + 'cdecimal/fnt.c', + 'cdecimal/fourstep.c', + 'cdecimal/io.c', + 'cdecimal/memory.c', + 'cdecimal/mpdecimal.c', + 'cdecimal/numbertheory.c', + 'cdecimal/sixstep.c', + 'cdecimal/transpose.c', + 'cdecimal/transpose3.c' + ] + extra_objects = [] + platform = util.get_platform() + cc = sysconfig.get_config_var('CC') + size = sysconfig.get_config_var('SIZEOF_SIZE_T') + x87 = sysconfig.get_config_var('HAVE_GCC_ASM_FOR_X87') + if size == 8: + define_macros = [('CONFIG_64', '1')] + elif size == 4: + define_macros = [('CONFIG_32', '1')] + mtune = 'ANSI' + if x87 and 'gcc' in cc: + # XXX icc >= 11.0 and clang work as well. + mtune = 'PPRO' + define_macros.append((mtune, '1')) + else: + raise DistutilsError("cdecimal: unsupported architecture") + # Not recommended: TLS is very slow! + # define_macros.append(('USE_THREAD_LOCAL_STORAGE', 1)) + if 'linux' in platform: + extra_compile_args.extend(['-Wno-missing-field-initializers']) + elif 'solaris' in platform and cc == 'cc': # suncc + extra_compile_args.extend(['-erroff=E_ARGUEMENT_MISMATCH']) + ext = Extension ( + 'cdecimal', + define_macros=define_macros, + undef_macros=['NDEBUG'], + extra_compile_args=extra_compile_args, + sources=sources, + extra_objects=extra_objects + ) + return ext class PyBuildInstall(install): # Suppress the warning about installation into the lib_dynload From python-checkins at python.org Thu Jan 7 14:22:02 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 07 Jan 2010 13:22:02 -0000 Subject: [Python-checkins] r77348 - python/branches/py3k-cdecimal/PCbuild/cdecimal.vcproj Message-ID: Author: stefan.krah Date: Thu Jan 7 14:22:01 2010 New Revision: 77348 Log: Add PCbuild/cdecimal.vcproj Added: python/branches/py3k-cdecimal/PCbuild/cdecimal.vcproj (contents, props changed) Added: python/branches/py3k-cdecimal/PCbuild/cdecimal.vcproj ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/PCbuild/cdecimal.vcproj Thu Jan 7 14:22:01 2010 @@ -0,0 +1,759 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From python-checkins at python.org Thu Jan 7 14:24:19 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 07 Jan 2010 13:24:19 -0000 Subject: [Python-checkins] r77349 - python/branches/py3k-cdecimal/PCbuild/pcbuild.sln Message-ID: Author: stefan.krah Date: Thu Jan 7 14:24:19 2010 New Revision: 77349 Log: Add build instructions for cdecimal Modified: python/branches/py3k-cdecimal/PCbuild/pcbuild.sln Modified: python/branches/py3k-cdecimal/PCbuild/pcbuild.sln ============================================================================== --- python/branches/py3k-cdecimal/PCbuild/pcbuild.sln (original) +++ python/branches/py3k-cdecimal/PCbuild/pcbuild.sln Thu Jan 7 14:24:19 2010 @@ -38,6 +38,11 @@ {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cdecimal", "cdecimal.vcproj", "{0E9791DB-593A-465F-98BC-681011311617}" + ProjectSection(ProjectDependencies) = postProject + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} + EndProjectSection +EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ctypes", "_ctypes.vcproj", "{0E9791DB-593A-465F-98BC-681011311618}" ProjectSection(ProjectDependencies) = postProject {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} @@ -250,6 +255,22 @@ {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|Win32.Build.0 = Release|Win32 {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|x64.ActiveCfg = Release|x64 {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|x64.Build.0 = Release|x64 + {0E9791DB-593A-465F-98BC-681011311617}.Debug|Win32.ActiveCfg = Debug|Win32 + {0E9791DB-593A-465F-98BC-681011311617}.Debug|Win32.Build.0 = Debug|Win32 + {0E9791DB-593A-465F-98BC-681011311617}.Debug|x64.ActiveCfg = Debug|x64 + {0E9791DB-593A-465F-98BC-681011311617}.Debug|x64.Build.0 = Debug|x64 + {0E9791DB-593A-465F-98BC-681011311617}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {0E9791DB-593A-465F-98BC-681011311617}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {0E9791DB-593A-465F-98BC-681011311617}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {0E9791DB-593A-465F-98BC-681011311617}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {0E9791DB-593A-465F-98BC-681011311617}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {0E9791DB-593A-465F-98BC-681011311617}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {0E9791DB-593A-465F-98BC-681011311617}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {0E9791DB-593A-465F-98BC-681011311617}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {0E9791DB-593A-465F-98BC-681011311617}.Release|Win32.ActiveCfg = Release|Win32 + {0E9791DB-593A-465F-98BC-681011311617}.Release|Win32.Build.0 = Release|Win32 + {0E9791DB-593A-465F-98BC-681011311617}.Release|x64.ActiveCfg = Release|x64 + {0E9791DB-593A-465F-98BC-681011311617}.Release|x64.Build.0 = Release|x64 {0E9791DB-593A-465F-98BC-681011311618}.Debug|Win32.ActiveCfg = Debug|Win32 {0E9791DB-593A-465F-98BC-681011311618}.Debug|Win32.Build.0 = Debug|Win32 {0E9791DB-593A-465F-98BC-681011311618}.Debug|x64.ActiveCfg = Debug|x64 From dickinsm at gmail.com Thu Jan 7 14:52:32 2010 From: dickinsm at gmail.com (Mark Dickinson) Date: Thu, 7 Jan 2010 13:52:32 +0000 Subject: [Python-checkins] r77347 - python/branches/py3k-cdecimal/setup.py In-Reply-To: <4b45e057.1c67f10a.1b87.ffff8218SMTPIN_ADDED@mx.google.com> References: <4b45e057.1c67f10a.1b87.ffff8218SMTPIN_ADDED@mx.google.com> Message-ID: <5c6f2a5d1001070552o180dd736md0460f7cb036c51@mail.gmail.com> On Thu, Jan 7, 2010 at 1:23 PM, stefan.krah wrote: > Author: stefan.krah > Date: Thu Jan ?7 14:19:38 2010 > New Revision: 77347 > > Log: > Add build instructions for cdecimal > > Modified: > ? python/branches/py3k-cdecimal/setup.py > > Modified: python/branches/py3k-cdecimal/setup.py > ============================================================================== > --- python/branches/py3k-cdecimal/setup.py ? ? ?(original) > +++ python/branches/py3k-cdecimal/setup.py ? ? ?Thu Jan ?7 14:19:38 2010 > @@ -7,7 +7,7 @@ > ?from glob import glob [...] > + ? ? ? ?ext = Extension ( > + ? ? ? ? ? ?'cdecimal', > + ? ? ? ? ? ?define_macros=define_macros, > + ? ? ? ? ? ?undef_macros=['NDEBUG'], > + ? ? ? ? ? ?extra_compile_args=extra_compile_args, > + ? ? ? ? ? ?sources=sources, > + ? ? ? ? ? ?extra_objects=extra_objects > + ? ? ? ?) Should this also include a 'depends' field for the cdecimal/*.h files? From stefan at bytereef.org Thu Jan 7 15:14:35 2010 From: stefan at bytereef.org (Stefan Krah) Date: Thu, 7 Jan 2010 15:14:35 +0100 Subject: [Python-checkins] r77347 - python/branches/py3k-cdecimal/setup.py In-Reply-To: <5c6f2a5d1001070552o180dd736md0460f7cb036c51@mail.gmail.com> References: <4b45e057.1c67f10a.1b87.ffff8218SMTPIN_ADDED@mx.google.com> <5c6f2a5d1001070552o180dd736md0460f7cb036c51@mail.gmail.com> Message-ID: <20100107141435.GA13339@mail.bytereef.org> Mark Dickinson wrote: > On Thu, Jan 7, 2010 at 1:23 PM, stefan.krah wrote: > > + ? ? ? ?ext = Extension ( > > + ? ? ? ? ? ?'cdecimal', > > + ? ? ? ? ? ?define_macros=define_macros, > > + ? ? ? ? ? ?undef_macros=['NDEBUG'], > > + ? ? ? ? ? ?extra_compile_args=extra_compile_args, > > + ? ? ? ? ? ?sources=sources, > > + ? ? ? ? ? ?extra_objects=extra_objects > > + ? ? ? ?) > > Should this also include a 'depends' field for the cdecimal/*.h files? Indeed, thanks. Will get to that soon. Stefan From python-checkins at python.org Thu Jan 7 15:48:33 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 07 Jan 2010 14:48:33 -0000 Subject: [Python-checkins] r77350 - python/branches/py3k-cdecimal/setup.py Message-ID: Author: stefan.krah Date: Thu Jan 7 15:48:33 2010 New Revision: 77350 Log: Add header dependencies. Modified: python/branches/py3k-cdecimal/setup.py Modified: python/branches/py3k-cdecimal/setup.py ============================================================================== --- python/branches/py3k-cdecimal/setup.py (original) +++ python/branches/py3k-cdecimal/setup.py Thu Jan 7 15:48:33 2010 @@ -1620,6 +1620,27 @@ 'cdecimal/transpose.c', 'cdecimal/transpose3.c' ] + depends = [ + 'cdecimal/basearith.h', + 'cdecimal/bits.h', + 'cdecimal/constants.h', + 'cdecimal/convolute.h', + 'cdecimal/crt.h', + 'cdecimal/difradix2.h', + 'cdecimal/docstrings.h', + 'cdecimal/fnt.h', + 'cdecimal/fourstep.h', + 'cdecimal/memory.h', + 'cdecimal/mpdecimal.h', + 'cdecimal/mpdecimal32.h', + 'cdecimal/mpdecimal64.h', + 'cdecimal/mptypes.h', + 'cdecimal/numbertheory.h', + 'cdecimal/sixstep.h', + 'cdecimal/transpose.h', + 'cdecimal/typearith.h', + 'cdecimal/umodarith.h', + ] extra_objects = [] platform = util.get_platform() cc = sysconfig.get_config_var('CC') @@ -1648,7 +1669,8 @@ undef_macros=['NDEBUG'], extra_compile_args=extra_compile_args, sources=sources, - extra_objects=extra_objects + extra_objects=extra_objects, + depends=depends ) return ext From python-checkins at python.org Thu Jan 7 18:44:59 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 07 Jan 2010 17:44:59 -0000 Subject: [Python-checkins] r77351 - python/branches/py3k-cdecimal/PCbuild/cdecimal.vcproj Message-ID: Author: stefan.krah Date: Thu Jan 7 18:44:59 2010 New Revision: 77351 Log: Rename cdecimal3.c to cdecimal.c Modified: python/branches/py3k-cdecimal/PCbuild/cdecimal.vcproj Modified: python/branches/py3k-cdecimal/PCbuild/cdecimal.vcproj ============================================================================== --- python/branches/py3k-cdecimal/PCbuild/cdecimal.vcproj (original) +++ python/branches/py3k-cdecimal/PCbuild/cdecimal.vcproj Thu Jan 7 18:44:59 2010 @@ -617,7 +617,7 @@ > Author: antoine.pitrou Date: Thu Jan 7 18:46:49 2010 New Revision: 77352 Log: Issue #7455: Fix possible crash in cPickle on invalid input. Patch by Florent Xicluna. Modified: python/trunk/Lib/test/pickletester.py python/trunk/Misc/NEWS python/trunk/Modules/cPickle.c Modified: python/trunk/Lib/test/pickletester.py ============================================================================== --- python/trunk/Lib/test/pickletester.py (original) +++ python/trunk/Lib/test/pickletester.py Thu Jan 7 18:46:49 2010 @@ -1100,6 +1100,15 @@ exec teststr in {'__builtins__': builtins}, d d['f']() + def test_bad_input(self): + # Test issue4298 + s = '\x58\0\0\0\x54' + self.assertRaises(EOFError, self.module.loads, s) + # Test issue7455 + s = '0' + # XXX Why doesn't pickle raise UnpicklingError? + self.assertRaises((IndexError, cPickle.UnpicklingError), + self.module.loads, s) class AbstractPersistentPicklerTests(unittest.TestCase): Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Thu Jan 7 18:46:49 2010 @@ -65,6 +65,9 @@ Library ------- +- Issue #7455: Fix possible crash in cPickle on invalid input. Patch by + Florent Xicluna. + - Issue #7092: Fix the DeprecationWarnings emitted by the standard library when using the -3 flag. Patch by Florent Xicluna. Modified: python/trunk/Modules/cPickle.c ============================================================================== --- python/trunk/Modules/cPickle.c (original) +++ python/trunk/Modules/cPickle.c Thu Jan 7 18:46:49 2010 @@ -4117,7 +4117,7 @@ */ if (self->num_marks > 0 && self->marks[self->num_marks - 1] == len) { self->num_marks--; - } else if (len >= 0) { + } else if (len > 0) { len--; Py_DECREF(self->stack->data[len]); self->stack->length = len; From nnorwitz at gmail.com Thu Jan 7 18:46:25 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 7 Jan 2010 12:46:25 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100107174625.GA23554@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19567 refs] [19567 refs] [19567 refs] [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [868623 refs] From python-checkins at python.org Thu Jan 7 18:49:37 2010 From: python-checkins at python.org (antoine.pitrou) Date: Thu, 07 Jan 2010 17:49:37 -0000 Subject: [Python-checkins] r77353 - python/trunk/Misc/NEWS Message-ID: Author: antoine.pitrou Date: Thu Jan 7 18:49:37 2010 New Revision: 77353 Log: Fix attribution. Florent actually repackaged and reviewed Victor's patch (sorry!). Modified: python/trunk/Misc/NEWS Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Thu Jan 7 18:49:37 2010 @@ -59,7 +59,7 @@ - Issue #7491: Metaclass's __cmp__ method was ignored. - Issue #7466: segmentation fault when the garbage collector is called - in the middle of populating a tuple. Patch by Florent Xicluna. + in the middle of populating a tuple. Patch by Victor Stinner. Library From python-checkins at python.org Thu Jan 7 18:54:10 2010 From: python-checkins at python.org (antoine.pitrou) Date: Thu, 07 Jan 2010 17:54:10 -0000 Subject: [Python-checkins] r77354 - python/trunk/Misc/NEWS Message-ID: Author: antoine.pitrou Date: Thu Jan 7 18:54:10 2010 New Revision: 77354 Log: Fix reattribution mistake when fixing attribution mistake! Modified: python/trunk/Misc/NEWS Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Thu Jan 7 18:54:10 2010 @@ -59,14 +59,14 @@ - Issue #7491: Metaclass's __cmp__ method was ignored. - Issue #7466: segmentation fault when the garbage collector is called - in the middle of populating a tuple. Patch by Victor Stinner. + in the middle of populating a tuple. Patch by Florent Xicluna. Library ------- - Issue #7455: Fix possible crash in cPickle on invalid input. Patch by - Florent Xicluna. + Victor Stinner. - Issue #7092: Fix the DeprecationWarnings emitted by the standard library when using the -3 flag. Patch by Florent Xicluna. From python-checkins at python.org Thu Jan 7 18:57:32 2010 From: python-checkins at python.org (antoine.pitrou) Date: Thu, 07 Jan 2010 17:57:32 -0000 Subject: [Python-checkins] r77355 - in python/branches/py3k: Lib/test/pickletester.py Misc/NEWS Modules/_pickle.c Message-ID: Author: antoine.pitrou Date: Thu Jan 7 18:57:31 2010 New Revision: 77355 Log: Merged revisions 77352-77354 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77352 | antoine.pitrou | 2010-01-07 18:46:49 +0100 (jeu., 07 janv. 2010) | 5 lines Issue #7455: Fix possible crash in cPickle on invalid input. Patch by Florent Xicluna. ........ r77353 | antoine.pitrou | 2010-01-07 18:49:37 +0100 (jeu., 07 janv. 2010) | 3 lines Fix attribution. Florent actually repackaged and reviewed Victor's patch (sorry!). ........ r77354 | antoine.pitrou | 2010-01-07 18:54:10 +0100 (jeu., 07 janv. 2010) | 3 lines Fix reattribution mistake when fixing attribution mistake! ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/pickletester.py python/branches/py3k/Misc/NEWS python/branches/py3k/Modules/_pickle.c Modified: python/branches/py3k/Lib/test/pickletester.py ============================================================================== --- python/branches/py3k/Lib/test/pickletester.py (original) +++ python/branches/py3k/Lib/test/pickletester.py Thu Jan 7 18:57:31 2010 @@ -1139,6 +1139,9 @@ # Test issue4298 s = bytes([0x58, 0, 0, 0, 0x54]) self.assertRaises(EOFError, pickle.loads, s) + # Test issue7455 + s = b'0' + self.assertRaises(pickle.UnpicklingError, pickle.loads, s) class AbstractPersistentPicklerTests(unittest.TestCase): Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Thu Jan 7 18:57:31 2010 @@ -194,6 +194,9 @@ Library ------- +- Issue #7455: Fix possible crash in cPickle on invalid input. Patch by + Victor Stinner. + - Issue #1628205: Socket file objects returned by socket.socket.makefile() now properly handles EINTR within the read, readline, write & flush methods. The socket.sendall() method now properly handles interrupted system calls. Modified: python/branches/py3k/Modules/_pickle.c ============================================================================== --- python/branches/py3k/Modules/_pickle.c (original) +++ python/branches/py3k/Modules/_pickle.c Thu Jan 7 18:57:31 2010 @@ -3729,7 +3729,7 @@ */ if (self->num_marks > 0 && self->marks[self->num_marks - 1] == len) { self->num_marks--; - } else if (len >= 0) { + } else if (len > 0) { len--; Py_DECREF(self->stack->data[len]); self->stack->length = len; From python-checkins at python.org Thu Jan 7 19:02:53 2010 From: python-checkins at python.org (antoine.pitrou) Date: Thu, 07 Jan 2010 18:02:53 -0000 Subject: [Python-checkins] r77356 - in python/branches/release31-maint: Lib/test/pickletester.py Misc/NEWS Modules/_pickle.c Message-ID: Author: antoine.pitrou Date: Thu Jan 7 19:02:53 2010 New Revision: 77356 Log: Merged revisions 77355 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77355 | antoine.pitrou | 2010-01-07 18:57:31 +0100 (jeu., 07 janv. 2010) | 18 lines Merged revisions 77352-77354 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77352 | antoine.pitrou | 2010-01-07 18:46:49 +0100 (jeu., 07 janv. 2010) | 5 lines Issue #7455: Fix possible crash in cPickle on invalid input. Patch by Florent Xicluna. ........ r77353 | antoine.pitrou | 2010-01-07 18:49:37 +0100 (jeu., 07 janv. 2010) | 3 lines Fix attribution. Florent actually repackaged and reviewed Victor's patch (sorry!). ........ r77354 | antoine.pitrou | 2010-01-07 18:54:10 +0100 (jeu., 07 janv. 2010) | 3 lines Fix reattribution mistake when fixing attribution mistake! ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/test/pickletester.py python/branches/release31-maint/Misc/NEWS python/branches/release31-maint/Modules/_pickle.c Modified: python/branches/release31-maint/Lib/test/pickletester.py ============================================================================== --- python/branches/release31-maint/Lib/test/pickletester.py (original) +++ python/branches/release31-maint/Lib/test/pickletester.py Thu Jan 7 19:02:53 2010 @@ -1142,6 +1142,9 @@ # Test issue4298 s = bytes([0x58, 0, 0, 0, 0x54]) self.assertRaises(EOFError, pickle.loads, s) + # Test issue7455 + s = b'0' + self.assertRaises(pickle.UnpicklingError, pickle.loads, s) class AbstractPersistentPicklerTests(unittest.TestCase): Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Thu Jan 7 19:02:53 2010 @@ -61,6 +61,9 @@ Library ------- +- Issue #7455: Fix possible crash in cPickle on invalid input. Patch by + Victor Stinner. + - Issue #6511: ZipFile now raises BadZipfile (instead of an IOError) when opening an empty or very small file. Modified: python/branches/release31-maint/Modules/_pickle.c ============================================================================== --- python/branches/release31-maint/Modules/_pickle.c (original) +++ python/branches/release31-maint/Modules/_pickle.c Thu Jan 7 19:02:53 2010 @@ -3729,7 +3729,7 @@ */ if (self->num_marks > 0 && self->marks[self->num_marks - 1] == len) { self->num_marks--; - } else if (len >= 0) { + } else if (len > 0) { len--; Py_DECREF(self->stack->data[len]); self->stack->length = len; From python-checkins at python.org Thu Jan 7 19:04:12 2010 From: python-checkins at python.org (antoine.pitrou) Date: Thu, 07 Jan 2010 18:04:12 -0000 Subject: [Python-checkins] r77357 - in python/branches/release26-maint: Lib/test/pickletester.py Misc/NEWS Modules/cPickle.c Message-ID: Author: antoine.pitrou Date: Thu Jan 7 19:04:12 2010 New Revision: 77357 Log: Merged revisions 77352-77354 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77352 | antoine.pitrou | 2010-01-07 18:46:49 +0100 (jeu., 07 janv. 2010) | 5 lines Issue #7455: Fix possible crash in cPickle on invalid input. Patch by Florent Xicluna. ........ r77353 | antoine.pitrou | 2010-01-07 18:49:37 +0100 (jeu., 07 janv. 2010) | 3 lines Fix attribution. Florent actually repackaged and reviewed Victor's patch (sorry!). ........ r77354 | antoine.pitrou | 2010-01-07 18:54:10 +0100 (jeu., 07 janv. 2010) | 3 lines Fix reattribution mistake when fixing attribution mistake! ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/test/pickletester.py python/branches/release26-maint/Misc/NEWS python/branches/release26-maint/Modules/cPickle.c Modified: python/branches/release26-maint/Lib/test/pickletester.py ============================================================================== --- python/branches/release26-maint/Lib/test/pickletester.py (original) +++ python/branches/release26-maint/Lib/test/pickletester.py Thu Jan 7 19:04:12 2010 @@ -1029,6 +1029,15 @@ exec teststr in {'__builtins__': builtins}, d d['f']() + def test_bad_input(self): + # Test issue4298 + s = '\x58\0\0\0\x54' + self.assertRaises(EOFError, self.module.loads, s) + # Test issue7455 + s = '0' + # XXX Why doesn't pickle raise UnpicklingError? + self.assertRaises((IndexError, cPickle.UnpicklingError), + self.module.loads, s) class AbstractPersistentPicklerTests(unittest.TestCase): Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Thu Jan 7 19:04:12 2010 @@ -48,6 +48,9 @@ Library ------- +- Issue #7455: Fix possible crash in cPickle on invalid input. Patch by + Victor Stinner. + - Issue #6511: ZipFile now raises BadZipfile (instead of an IOError) when opening an empty or very small file. Modified: python/branches/release26-maint/Modules/cPickle.c ============================================================================== --- python/branches/release26-maint/Modules/cPickle.c (original) +++ python/branches/release26-maint/Modules/cPickle.c Thu Jan 7 19:04:12 2010 @@ -4033,7 +4033,7 @@ */ if (self->num_marks > 0 && self->marks[self->num_marks - 1] == len) { self->num_marks--; - } else if (len >= 0) { + } else if (len > 0) { len--; Py_DECREF(self->stack->data[len]); self->stack->length = len; From python-checkins at python.org Thu Jan 7 19:10:21 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 07 Jan 2010 18:10:21 -0000 Subject: [Python-checkins] r77358 - python/branches/py3k-cdecimal/setup.py Message-ID: Author: stefan.krah Date: Thu Jan 7 19:10:21 2010 New Revision: 77358 Log: -Wno-missing-field-initializers is not always recognized Modified: python/branches/py3k-cdecimal/setup.py Modified: python/branches/py3k-cdecimal/setup.py ============================================================================== --- python/branches/py3k-cdecimal/setup.py (original) +++ python/branches/py3k-cdecimal/setup.py Thu Jan 7 19:10:21 2010 @@ -1659,9 +1659,7 @@ raise DistutilsError("cdecimal: unsupported architecture") # Not recommended: TLS is very slow! # define_macros.append(('USE_THREAD_LOCAL_STORAGE', 1)) - if 'linux' in platform: - extra_compile_args.extend(['-Wno-missing-field-initializers']) - elif 'solaris' in platform and cc == 'cc': # suncc + if 'solaris' in platform and cc == 'cc': # suncc extra_compile_args.extend(['-erroff=E_ARGUEMENT_MISMATCH']) ext = Extension ( 'cdecimal', From nnorwitz at gmail.com Thu Jan 7 21:53:48 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 7 Jan 2010 15:53:48 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100107205348.GA31074@kbk-i386-bb.psfb.org> 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-23753 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [886255 refs] From python-checkins at python.org Thu Jan 7 21:54:46 2010 From: python-checkins at python.org (georg.brandl) Date: Thu, 07 Jan 2010 20:54:46 -0000 Subject: [Python-checkins] r77359 - python/trunk/Doc/c-api/init.rst Message-ID: Author: georg.brandl Date: Thu Jan 7 21:54:45 2010 New Revision: 77359 Log: Fix description for Py_GetPath(); it sounded like it always returned sys.path. Modified: python/trunk/Doc/c-api/init.rst Modified: python/trunk/Doc/c-api/init.rst ============================================================================== --- python/trunk/Doc/c-api/init.rst (original) +++ python/trunk/Doc/c-api/init.rst Thu Jan 7 21:54:45 2010 @@ -257,14 +257,15 @@ triple: module; search; path single: path (in module sys) - Return the default module search path; this is computed from the program name - (set by :cfunc:`Py_SetProgramName` above) and some environment variables. The - returned string consists of a series of directory names separated by a platform - dependent delimiter character. The delimiter character is ``':'`` on Unix and - Mac OS X, ``';'`` on Windows. The returned string points into static storage; - the caller should not modify its value. The value is available to Python code - as the list ``sys.path``, which may be modified to change the future search path - for loaded modules. + Return the default module search path; this is computed from the program name + (set by :cfunc:`Py_SetProgramName` above) and some environment variables. + The returned string consists of a series of directory names separated by a + platform dependent delimiter character. The delimiter character is ``':'`` + on Unix and Mac OS X, ``';'`` on Windows. The returned string points into + static storage; the caller should not modify its value. The list + :data:`sys.path` is initialized with this value on interpreter startup; it + can be (and usually is) modified later to change the search path for loading + modules. .. XXX should give the exact rules From nnorwitz at gmail.com Thu Jan 7 22:16:07 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 7 Jan 2010 16:16:07 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100107211607.GA16606@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.512s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [21174 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [869869 refs] From nnorwitz at gmail.com Thu Jan 7 22:27:30 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 7 Jan 2010 16:27:30 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100107212730.GA20717@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19567 refs] [19567 refs] [19567 refs] [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.534s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [868781 refs] From python-checkins at python.org Thu Jan 7 22:48:47 2010 From: python-checkins at python.org (georg.brandl) Date: Thu, 07 Jan 2010 21:48:47 -0000 Subject: [Python-checkins] r77360 - python/trunk/Doc/using/windows.rst Message-ID: Author: georg.brandl Date: Thu Jan 7 22:48:47 2010 New Revision: 77360 Log: #7653: clarify how the PythonPath registry key should look like. Modified: python/trunk/Doc/using/windows.rst Modified: python/trunk/Doc/using/windows.rst ============================================================================== --- python/trunk/Doc/using/windows.rst (original) +++ python/trunk/Doc/using/windows.rst Thu Jan 7 22:48:47 2010 @@ -168,12 +168,13 @@ .. `` -Modifying the module search path can also be done through the Windows registry: -Edit -:file:`HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\{version}\\PythonPath\\`, -as described above for the environment variable :envvar:`%PYTHONPATH%`. A -convenient registry editor is :program:`regedit` (start it by typing "regedit" -into :menuselection:`Start --> Run`). +Modifying the module search path can also be done through the Windows registry +under the key :file:`HKLM\\SOFTWARE\\Python\\PythonCore\\{version}\\PythonPath`. +Subkeys which have semicolon-delimited path strings as their default value will +cause each path to be searched. Multiple subkeys can be created and are +appended to the path in alphabetical order. A convenient registry editor is +:program:`regedit` (start it by typing "regedit" into :menuselection:`Start --> +Run`). Executing scripts From python-checkins at python.org Thu Jan 7 23:33:01 2010 From: python-checkins at python.org (georg.brandl) Date: Thu, 07 Jan 2010 22:33:01 -0000 Subject: [Python-checkins] r77361 - peps/trunk/pep-0374.txt Message-ID: Author: georg.brandl Date: Thu Jan 7 23:33:01 2010 New Revision: 77361 Log: #7655: typo fixes. Modified: peps/trunk/pep-0374.txt Modified: peps/trunk/pep-0374.txt ============================================================================== --- peps/trunk/pep-0374.txt (original) +++ peps/trunk/pep-0374.txt Thu Jan 7 23:33:01 2010 @@ -1,5 +1,5 @@ PEP: 374 -Title: Chosing a distributed VCS for the Python project +Title: Choosing a distributed VCS for the Python project Version: $Revision$ Last-Modified: $Date$ Author: Brett Cannon , @@ -948,7 +948,7 @@ echo "The cake is a lie!" > README svn changelist A README # Edit some other code. - echo "I own Python!" . LICENSE + echo "I own Python!" > LICENSE svn changelist B LICENSE svn ci -m "Tell it how it is." --changelist B # Edit changelist A some more. From nnorwitz at gmail.com Fri Jan 8 00:03:17 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 7 Jan 2010 18:03:17 -0500 Subject: [Python-checkins] Python Regression Test Failures refleak (1) Message-ID: <20100107230317.GA20250@kbk-i386-bb.psfb.org> More important issues: ---------------------- test_bz2 leaked [-77, 0, 0] references, sum=-77 Less important issues: ---------------------- test_threadsignals leaked [0, 8, 0] references, sum=8 From nnorwitz at gmail.com Fri Jan 8 00:25:00 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 7 Jan 2010 18:25:00 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100107232500.GA27584@kbk-i386-bb.psfb.org> 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-20258 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.507s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [886398 refs] From solipsis at pitrou.net Fri Jan 8 00:49:37 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Fri, 8 Jan 2010 00:49:37 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77355): sum=0 Message-ID: <20100107234937.BF4E317759@ns6635.ovh.net> py3k results for svn r77355 (hg cset 09c653f5ace9) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogSNRkCM', '-x', 'test_httpservers'] From nnorwitz at gmail.com Fri Jan 8 10:15:48 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 8 Jan 2010 04:15:48 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100108091548.GA14273@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.507s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [869871 refs] From nnorwitz at gmail.com Fri Jan 8 10:27:27 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 8 Jan 2010 04:27:27 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100108092727.GA18370@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19567 refs] [19567 refs] [19567 refs] [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.586s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [868787 refs] From nnorwitz at gmail.com Fri Jan 8 13:42:48 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 8 Jan 2010 07:42:48 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100108124248.GA28860@kbk-i386-bb.psfb.org> 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-21536 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.503s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [886385 refs] From python-checkins at python.org Fri Jan 8 17:53:56 2010 From: python-checkins at python.org (mark.dickinson) Date: Fri, 08 Jan 2010 16:53:56 -0000 Subject: [Python-checkins] r77362 - python/trunk/Lib/test/test_float.py Message-ID: Author: mark.dickinson Date: Fri Jan 8 17:53:56 2010 New Revision: 77362 Log: Backport some float repr tests that were missed in issue 7117. Modified: python/trunk/Lib/test/test_float.py Modified: python/trunk/Lib/test/test_float.py ============================================================================== --- python/trunk/Lib/test/test_float.py (original) +++ python/trunk/Lib/test/test_float.py Fri Jan 8 17:53:56 2010 @@ -563,6 +563,55 @@ self.assertEqual(v, eval(repr(v))) floats_file.close() + @unittest.skipUnless(getattr(sys, 'float_repr_style', '') == 'short', + "applies only when using short float repr style") + def test_short_repr(self): + # test short float repr introduced in Python 3.1. One aspect + # of this repr is that we get some degree of str -> float -> + # str roundtripping. In particular, for any numeric string + # containing 15 or fewer significant digits, those exact same + # digits (modulo trailing zeros) should appear in the output. + # No more repr(0.03) -> "0.029999999999999999"! + + test_strings = [ + # output always includes *either* a decimal point and at + # least one digit after that point, or an exponent. + '0.0', + '1.0', + '0.01', + '0.02', + '0.03', + '0.04', + '0.05', + '1.23456789', + '10.0', + '100.0', + # values >= 1e16 get an exponent... + '1000000000000000.0', + '9999999999999990.0', + '1e+16', + '1e+17', + # ... and so do values < 1e-4 + '0.001', + '0.001001', + '0.00010000000000001', + '0.0001', + '9.999999999999e-05', + '1e-05', + # values designed to provoke failure if the FPU rounding + # precision isn't set correctly + '8.72293771110361e+25', + '7.47005307342313e+26', + '2.86438000439698e+28', + '8.89142905246179e+28', + '3.08578087079232e+35', + ] + + for s in test_strings: + negs = '-'+s + self.assertEqual(s, repr(float(s))) + self.assertEqual(negs, repr(float(negs))) + @unittest.skipUnless(float.__getformat__("double").startswith("IEEE"), "test requires IEEE 754 doubles") class RoundTestCase(unittest.TestCase): From python-checkins at python.org Fri Jan 8 17:55:39 2010 From: python-checkins at python.org (mark.dickinson) Date: Fri, 08 Jan 2010 16:55:39 -0000 Subject: [Python-checkins] r77363 - python/branches/py3k Message-ID: Author: mark.dickinson Date: Fri Jan 8 17:55:38 2010 New Revision: 77363 Log: Blocked revisions 77362 via svnmerge ........ r77362 | mark.dickinson | 2010-01-08 16:53:56 +0000 (Fri, 08 Jan 2010) | 1 line Backport some float repr tests that were missed in issue 7117. ........ Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Fri Jan 8 17:56:36 2010 From: python-checkins at python.org (mark.dickinson) Date: Fri, 08 Jan 2010 16:56:36 -0000 Subject: [Python-checkins] r77364 - python/branches/release26-maint Message-ID: Author: mark.dickinson Date: Fri Jan 8 17:56:36 2010 New Revision: 77364 Log: Blocked revisions 77362 via svnmerge ........ r77362 | mark.dickinson | 2010-01-08 16:53:56 +0000 (Fri, 08 Jan 2010) | 1 line Backport some float repr tests that were missed in issue 7117. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Fri Jan 8 18:54:24 2010 From: python-checkins at python.org (antoine.pitrou) Date: Fri, 08 Jan 2010 17:54:24 -0000 Subject: [Python-checkins] r77365 - in python/branches/py3k: Doc/library/weakref.rst Lib/_weakrefset.py Lib/test/test_weakref.py Lib/test/test_weakset.py Lib/weakref.py Misc/NEWS Message-ID: Author: antoine.pitrou Date: Fri Jan 8 18:54:23 2010 New Revision: 77365 Log: Merged revisions 77352-77354 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77352 | antoine.pitrou | 2010-01-07 18:46:49 +0100 (jeu., 07 janv. 2010) | 5 lines Issue #7455: Fix possible crash in cPickle on invalid input. Patch by Florent Xicluna. ........ r77353 | antoine.pitrou | 2010-01-07 18:49:37 +0100 (jeu., 07 janv. 2010) | 3 lines Fix attribution. Florent actually repackaged and reviewed Victor's patch (sorry!). ........ r77354 | antoine.pitrou | 2010-01-07 18:54:10 +0100 (jeu., 07 janv. 2010) | 3 lines Fix reattribution mistake when fixing attribution mistake! ........ Modified: python/branches/py3k/Doc/library/weakref.rst python/branches/py3k/Lib/_weakrefset.py python/branches/py3k/Lib/test/test_weakref.py python/branches/py3k/Lib/test/test_weakset.py python/branches/py3k/Lib/weakref.py python/branches/py3k/Misc/NEWS Modified: python/branches/py3k/Doc/library/weakref.rst ============================================================================== --- python/branches/py3k/Doc/library/weakref.rst (original) +++ python/branches/py3k/Doc/library/weakref.rst Fri Jan 8 18:54:23 2010 @@ -159,7 +159,7 @@ .. method:: WeakKeyDictionary.keyrefs() - Return an :term:`iterator` that yields the weak references to the keys. + Return an iterable of the weak references to the keys. .. class:: WeakValueDictionary([dict]) @@ -182,7 +182,7 @@ .. method:: WeakValueDictionary.valuerefs() - Return an :term:`iterator` that yields the weak references to the values. + Return an iterable of the weak references to the values. .. class:: WeakSet([elements]) Modified: python/branches/py3k/Lib/_weakrefset.py ============================================================================== --- python/branches/py3k/Lib/_weakrefset.py (original) +++ python/branches/py3k/Lib/_weakrefset.py Fri Jan 8 18:54:23 2010 @@ -6,22 +6,61 @@ __all__ = ['WeakSet'] + +class _IterationGuard: + # This context manager registers itself in the current iterators of the + # weak container, such as to delay all removals until the context manager + # exits. + # This technique should be relatively thread-safe (since sets are). + + def __init__(self, weakcontainer): + # Don't create cycles + self.weakcontainer = ref(weakcontainer) + + def __enter__(self): + w = self.weakcontainer() + if w is not None: + w._iterating.add(self) + return self + + def __exit__(self, e, t, b): + w = self.weakcontainer() + if w is not None: + s = w._iterating + s.remove(self) + if not s: + w._commit_removals() + + class WeakSet: def __init__(self, data=None): self.data = set() def _remove(item, selfref=ref(self)): self = selfref() if self is not None: - self.data.discard(item) + if self._iterating: + self._pending_removals.append(item) + else: + self.data.discard(item) self._remove = _remove + # A list of keys to be removed + self._pending_removals = [] + self._iterating = set() if data is not None: self.update(data) + def _commit_removals(self): + l = self._pending_removals + discard = self.data.discard + while l: + discard(l.pop()) + def __iter__(self): - for itemref in self.data: - item = itemref() - if item is not None: - yield item + with _IterationGuard(self): + for itemref in self.data: + item = itemref() + if item is not None: + yield item def __len__(self): return sum(x() is not None for x in self.data) @@ -34,15 +73,21 @@ getattr(self, '__dict__', None)) def add(self, item): + if self._pending_removals: + self._commit_removals() self.data.add(ref(item, self._remove)) def clear(self): + if self._pending_removals: + self._commit_removals() self.data.clear() def copy(self): return self.__class__(self) def pop(self): + if self._pending_removals: + self._commit_removals() while True: try: itemref = self.data.pop() @@ -53,17 +98,24 @@ return item def remove(self, item): + if self._pending_removals: + self._commit_removals() self.data.remove(ref(item)) def discard(self, item): + if self._pending_removals: + self._commit_removals() self.data.discard(ref(item)) def update(self, other): + if self._pending_removals: + self._commit_removals() if isinstance(other, self.__class__): self.data.update(other.data) else: for element in other: self.add(element) + def __ior__(self, other): self.update(other) return self @@ -82,11 +134,15 @@ __sub__ = difference def difference_update(self, other): + if self._pending_removals: + self._commit_removals() if self is other: self.data.clear() else: self.data.difference_update(ref(item) for item in other) def __isub__(self, other): + if self._pending_removals: + self._commit_removals() if self is other: self.data.clear() else: @@ -98,8 +154,12 @@ __and__ = intersection def intersection_update(self, other): + if self._pending_removals: + self._commit_removals() self.data.intersection_update(ref(item) for item in other) def __iand__(self, other): + if self._pending_removals: + self._commit_removals() self.data.intersection_update(ref(item) for item in other) return self @@ -127,11 +187,15 @@ __xor__ = symmetric_difference def symmetric_difference_update(self, other): + if self._pending_removals: + self._commit_removals() if self is other: self.data.clear() else: self.data.symmetric_difference_update(ref(item) for item in other) def __ixor__(self, other): + if self._pending_removals: + self._commit_removals() if self is other: self.data.clear() else: Modified: python/branches/py3k/Lib/test/test_weakref.py ============================================================================== --- python/branches/py3k/Lib/test/test_weakref.py (original) +++ python/branches/py3k/Lib/test/test_weakref.py Fri Jan 8 18:54:23 2010 @@ -4,6 +4,8 @@ import collections import weakref import operator +import contextlib +import copy from test import support @@ -788,6 +790,10 @@ self.arg = arg def __repr__(self): return "" % self.arg + def __eq__(self, other): + if isinstance(other, Object): + return self.arg == other.arg + return NotImplemented def __lt__(self, other): if isinstance(other, Object): return self.arg < other.arg @@ -935,6 +941,87 @@ self.assertFalse(values, "itervalues() did not touch all values") + def check_weak_destroy_while_iterating(self, dict, objects, iter_name): + n = len(dict) + it = iter(getattr(dict, iter_name)()) + next(it) # Trigger internal iteration + # Destroy an object + del objects[-1] + gc.collect() # just in case + # We have removed either the first consumed object, or another one + self.assertIn(len(list(it)), [len(objects), len(objects) - 1]) + del it + # The removal has been committed + self.assertEqual(len(dict), n - 1) + + def check_weak_destroy_and_mutate_while_iterating(self, dict, testcontext): + # Check that we can explicitly mutate the weak dict without + # interfering with delayed removal. + # `testcontext` should create an iterator, destroy one of the + # weakref'ed objects and then return a new key/value pair corresponding + # to the destroyed object. + with testcontext() as (k, v): + self.assertFalse(k in dict) + with testcontext() as (k, v): + self.assertRaises(KeyError, dict.__delitem__, k) + self.assertFalse(k in dict) + with testcontext() as (k, v): + self.assertRaises(KeyError, dict.pop, k) + self.assertFalse(k in dict) + with testcontext() as (k, v): + dict[k] = v + self.assertEqual(dict[k], v) + ddict = copy.copy(dict) + with testcontext() as (k, v): + dict.update(ddict) + self.assertEqual(dict, ddict) + with testcontext() as (k, v): + dict.clear() + self.assertEqual(len(dict), 0) + + def test_weak_keys_destroy_while_iterating(self): + # Issue #7105: iterators shouldn't crash when a key is implicitly removed + dict, objects = self.make_weak_keyed_dict() + self.check_weak_destroy_while_iterating(dict, objects, 'keys') + self.check_weak_destroy_while_iterating(dict, objects, 'items') + self.check_weak_destroy_while_iterating(dict, objects, 'values') + self.check_weak_destroy_while_iterating(dict, objects, 'keyrefs') + dict, objects = self.make_weak_keyed_dict() + @contextlib.contextmanager + def testcontext(): + try: + it = iter(dict.items()) + next(it) + # Schedule a key/value for removal and recreate it + v = objects.pop().arg + gc.collect() # just in case + yield Object(v), v + finally: + it = None # should commit all removals + self.check_weak_destroy_and_mutate_while_iterating(dict, testcontext) + + def test_weak_values_destroy_while_iterating(self): + # Issue #7105: iterators shouldn't crash when a key is implicitly removed + dict, objects = self.make_weak_valued_dict() + self.check_weak_destroy_while_iterating(dict, objects, 'keys') + self.check_weak_destroy_while_iterating(dict, objects, 'items') + self.check_weak_destroy_while_iterating(dict, objects, 'values') + self.check_weak_destroy_while_iterating(dict, objects, 'itervaluerefs') + self.check_weak_destroy_while_iterating(dict, objects, 'valuerefs') + dict, objects = self.make_weak_valued_dict() + @contextlib.contextmanager + def testcontext(): + try: + it = iter(dict.items()) + next(it) + # Schedule a key/value for removal and recreate it + k = objects.pop().arg + gc.collect() # just in case + yield k, Object(k) + finally: + it = None # should commit all removals + self.check_weak_destroy_and_mutate_while_iterating(dict, testcontext) + def test_make_weak_keyed_dict_from_dict(self): o = Object(3) dict = weakref.WeakKeyDictionary({o:364}) Modified: python/branches/py3k/Lib/test/test_weakset.py ============================================================================== --- python/branches/py3k/Lib/test/test_weakset.py (original) +++ python/branches/py3k/Lib/test/test_weakset.py Fri Jan 8 18:54:23 2010 @@ -10,6 +10,8 @@ import warnings import collections from collections import UserString as ustr +import gc +import contextlib class Foo: @@ -307,6 +309,54 @@ self.assertFalse(self.s == WeakSet([Foo])) self.assertFalse(self.s == 1) + def test_weak_destroy_while_iterating(self): + # Issue #7105: iterators shouldn't crash when a key is implicitly removed + # Create new items to be sure no-one else holds a reference + items = [ustr(c) for c in ('a', 'b', 'c')] + s = WeakSet(items) + it = iter(s) + next(it) # Trigger internal iteration + # Destroy an item + del items[-1] + gc.collect() # just in case + # We have removed either the first consumed items, or another one + self.assertIn(len(list(it)), [len(items), len(items) - 1]) + del it + # The removal has been committed + self.assertEqual(len(s), len(items)) + + def test_weak_destroy_and_mutate_while_iterating(self): + # Issue #7105: iterators shouldn't crash when a key is implicitly removed + items = [ustr(c) for c in string.ascii_letters] + s = WeakSet(items) + @contextlib.contextmanager + def testcontext(): + try: + it = iter(s) + next(it) + # Schedule an item for removal and recreate it + u = ustr(str(items.pop())) + gc.collect() # just in case + yield u + finally: + it = None # should commit all removals + + with testcontext() as u: + self.assertFalse(u in s) + with testcontext() as u: + self.assertRaises(KeyError, s.remove, u) + self.assertFalse(u in s) + with testcontext() as u: + s.add(u) + self.assertTrue(u in s) + t = s.copy() + with testcontext() as u: + s.update(t) + self.assertEqual(len(s), len(t)) + with testcontext() as u: + s.clear() + self.assertEqual(len(s), 0) + def test_main(verbose=None): support.run_unittest(TestWeakSet) Modified: python/branches/py3k/Lib/weakref.py ============================================================================== --- python/branches/py3k/Lib/weakref.py (original) +++ python/branches/py3k/Lib/weakref.py Fri Jan 8 18:54:23 2010 @@ -18,7 +18,7 @@ ProxyType, ReferenceType) -from _weakrefset import WeakSet +from _weakrefset import WeakSet, _IterationGuard import collections # Import after _weakref to avoid circular import. @@ -46,11 +46,25 @@ def remove(wr, selfref=ref(self)): self = selfref() if self is not None: - del self.data[wr.key] + if self._iterating: + self._pending_removals.append(wr.key) + else: + del self.data[wr.key] self._remove = remove + # A list of keys to be removed + self._pending_removals = [] + self._iterating = set() self.data = d = {} self.update(*args, **kw) + def _commit_removals(self): + l = self._pending_removals + d = self.data + # We shouldn't encounter any KeyError, because this method should + # always be called *before* mutating the dict. + while l: + del d[l.pop()] + def __getitem__(self, key): o = self.data[key]() if o is None: @@ -59,6 +73,8 @@ return o def __delitem__(self, key): + if self._pending_removals: + self._commit_removals() del self.data[key] def __len__(self): @@ -75,6 +91,8 @@ return "" % id(self) def __setitem__(self, key, value): + if self._pending_removals: + self._commit_removals() self.data[key] = KeyedRef(value, self._remove, key) def copy(self): @@ -110,24 +128,19 @@ return o def items(self): - L = [] - for key, wr in self.data.items(): - o = wr() - if o is not None: - L.append((key, o)) - return L - - def items(self): - for wr in self.data.values(): - value = wr() - if value is not None: - yield wr.key, value + with _IterationGuard(self): + for k, wr in self.data.items(): + v = wr() + if v is not None: + yield k, v def keys(self): - return iter(self.data.keys()) + with _IterationGuard(self): + for k, wr in self.data.items(): + if wr() is not None: + yield k - def __iter__(self): - return iter(self.data.keys()) + __iter__ = keys def itervaluerefs(self): """Return an iterator that yields the weak references to the values. @@ -139,15 +152,20 @@ keep the values around longer than needed. """ - return self.data.values() + with _IterationGuard(self): + for wr in self.data.values(): + yield wr def values(self): - for wr in self.data.values(): - obj = wr() - if obj is not None: - yield obj + with _IterationGuard(self): + for wr in self.data.values(): + obj = wr() + if obj is not None: + yield obj def popitem(self): + if self._pending_removals: + self._commit_removals() while 1: key, wr = self.data.popitem() o = wr() @@ -155,6 +173,8 @@ return key, o def pop(self, key, *args): + if self._pending_removals: + self._commit_removals() try: o = self.data.pop(key)() except KeyError: @@ -170,12 +190,16 @@ try: wr = self.data[key] except KeyError: + if self._pending_removals: + self._commit_removals() self.data[key] = KeyedRef(default, self._remove, key) return default else: return wr() def update(self, dict=None, **kwargs): + if self._pending_removals: + self._commit_removals() d = self.data if dict is not None: if not hasattr(dict, "items"): @@ -195,7 +219,7 @@ keep the values around longer than needed. """ - return self.data.values() + return list(self.data.values()) class KeyedRef(ref): @@ -235,9 +259,29 @@ def remove(k, selfref=ref(self)): self = selfref() if self is not None: - del self.data[k] + if self._iterating: + self._pending_removals.append(k) + else: + del self.data[k] self._remove = remove - if dict is not None: self.update(dict) + # A list of dead weakrefs (keys to be removed) + self._pending_removals = [] + self._iterating = set() + if dict is not None: + self.update(dict) + + def _commit_removals(self): + # NOTE: We don't need to call this method before mutating the dict, + # because a dead weakref never compares equal to a live weakref, + # even if they happened to refer to equal objects. + # However, it means keys may already have been removed. + l = self._pending_removals + d = self.data + while l: + try: + del d[l.pop()] + except KeyError: + pass def __delitem__(self, key): del self.data[ref(key)] @@ -284,34 +328,26 @@ return wr in self.data def items(self): - for wr, value in self.data.items(): - key = wr() - if key is not None: - yield key, value - - def keyrefs(self): - """Return an iterator that yields the weak references to the keys. - - The references are not guaranteed to be 'live' at the time - they are used, so the result of calling the references needs - to be checked before being used. This can be used to avoid - creating references that will cause the garbage collector to - keep the keys around longer than needed. - - """ - return self.data.keys() + with _IterationGuard(self): + for wr, value in self.data.items(): + key = wr() + if key is not None: + yield key, value def keys(self): - for wr in self.data.keys(): - obj = wr() - if obj is not None: - yield obj + with _IterationGuard(self): + for wr in self.data: + obj = wr() + if obj is not None: + yield obj - def __iter__(self): - return iter(self.keys()) + __iter__ = keys def values(self): - return iter(self.data.values()) + with _IterationGuard(self): + for wr, value in self.data.items(): + if wr() is not None: + yield value def keyrefs(self): """Return a list of weak references to the keys. @@ -323,7 +359,7 @@ keep the keys around longer than needed. """ - return self.data.keys() + return list(self.data) def popitem(self): while 1: Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Fri Jan 8 18:54:23 2010 @@ -194,6 +194,9 @@ Library ------- +- Issue #7105: Make WeakKeyDictionary and WeakValueDictionary robust against + the destruction of weakref'ed objects while iterating. + - Issue #7455: Fix possible crash in cPickle on invalid input. Patch by Victor Stinner. From python-checkins at python.org Fri Jan 8 18:56:16 2010 From: python-checkins at python.org (antoine.pitrou) Date: Fri, 08 Jan 2010 17:56:16 -0000 Subject: [Python-checkins] r77366 - in python/branches/release31-maint: Doc/library/weakref.rst Lib/_weakrefset.py Lib/test/test_weakref.py Lib/test/test_weakset.py Lib/weakref.py Misc/NEWS Message-ID: Author: antoine.pitrou Date: Fri Jan 8 18:56:16 2010 New Revision: 77366 Log: Merged revisions 77365 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77365 | antoine.pitrou | 2010-01-08 18:54:23 +0100 (ven., 08 janv. 2010) | 18 lines Merged revisions 77352-77354 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77352 | antoine.pitrou | 2010-01-07 18:46:49 +0100 (jeu., 07 janv. 2010) | 5 lines Issue #7455: Fix possible crash in cPickle on invalid input. Patch by Florent Xicluna. ........ r77353 | antoine.pitrou | 2010-01-07 18:49:37 +0100 (jeu., 07 janv. 2010) | 3 lines Fix attribution. Florent actually repackaged and reviewed Victor's patch (sorry!). ........ r77354 | antoine.pitrou | 2010-01-07 18:54:10 +0100 (jeu., 07 janv. 2010) | 3 lines Fix reattribution mistake when fixing attribution mistake! ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Doc/library/weakref.rst python/branches/release31-maint/Lib/_weakrefset.py python/branches/release31-maint/Lib/test/test_weakref.py python/branches/release31-maint/Lib/test/test_weakset.py python/branches/release31-maint/Lib/weakref.py python/branches/release31-maint/Misc/NEWS Modified: python/branches/release31-maint/Doc/library/weakref.rst ============================================================================== --- python/branches/release31-maint/Doc/library/weakref.rst (original) +++ python/branches/release31-maint/Doc/library/weakref.rst Fri Jan 8 18:56:16 2010 @@ -156,7 +156,7 @@ .. method:: WeakKeyDictionary.keyrefs() - Return an :term:`iterator` that yields the weak references to the keys. + Return an iterable of the weak references to the keys. .. class:: WeakValueDictionary([dict]) @@ -179,7 +179,7 @@ .. method:: WeakValueDictionary.valuerefs() - Return an :term:`iterator` that yields the weak references to the values. + Return an iterable of the weak references to the values. .. class:: WeakSet([elements]) Modified: python/branches/release31-maint/Lib/_weakrefset.py ============================================================================== --- python/branches/release31-maint/Lib/_weakrefset.py (original) +++ python/branches/release31-maint/Lib/_weakrefset.py Fri Jan 8 18:56:16 2010 @@ -6,22 +6,61 @@ __all__ = ['WeakSet'] + +class _IterationGuard: + # This context manager registers itself in the current iterators of the + # weak container, such as to delay all removals until the context manager + # exits. + # This technique should be relatively thread-safe (since sets are). + + def __init__(self, weakcontainer): + # Don't create cycles + self.weakcontainer = ref(weakcontainer) + + def __enter__(self): + w = self.weakcontainer() + if w is not None: + w._iterating.add(self) + return self + + def __exit__(self, e, t, b): + w = self.weakcontainer() + if w is not None: + s = w._iterating + s.remove(self) + if not s: + w._commit_removals() + + class WeakSet: def __init__(self, data=None): self.data = set() def _remove(item, selfref=ref(self)): self = selfref() if self is not None: - self.data.discard(item) + if self._iterating: + self._pending_removals.append(item) + else: + self.data.discard(item) self._remove = _remove + # A list of keys to be removed + self._pending_removals = [] + self._iterating = set() if data is not None: self.update(data) + def _commit_removals(self): + l = self._pending_removals + discard = self.data.discard + while l: + discard(l.pop()) + def __iter__(self): - for itemref in self.data: - item = itemref() - if item is not None: - yield item + with _IterationGuard(self): + for itemref in self.data: + item = itemref() + if item is not None: + yield item def __len__(self): return sum(x() is not None for x in self.data) @@ -34,15 +73,21 @@ getattr(self, '__dict__', None)) def add(self, item): + if self._pending_removals: + self._commit_removals() self.data.add(ref(item, self._remove)) def clear(self): + if self._pending_removals: + self._commit_removals() self.data.clear() def copy(self): return self.__class__(self) def pop(self): + if self._pending_removals: + self._commit_removals() while True: try: itemref = self.data.pop() @@ -53,17 +98,24 @@ return item def remove(self, item): + if self._pending_removals: + self._commit_removals() self.data.remove(ref(item)) def discard(self, item): + if self._pending_removals: + self._commit_removals() self.data.discard(ref(item)) def update(self, other): + if self._pending_removals: + self._commit_removals() if isinstance(other, self.__class__): self.data.update(other.data) else: for element in other: self.add(element) + def __ior__(self, other): self.update(other) return self @@ -82,11 +134,15 @@ __sub__ = difference def difference_update(self, other): + if self._pending_removals: + self._commit_removals() if self is other: self.data.clear() else: self.data.difference_update(ref(item) for item in other) def __isub__(self, other): + if self._pending_removals: + self._commit_removals() if self is other: self.data.clear() else: @@ -98,8 +154,12 @@ __and__ = intersection def intersection_update(self, other): + if self._pending_removals: + self._commit_removals() self.data.intersection_update(ref(item) for item in other) def __iand__(self, other): + if self._pending_removals: + self._commit_removals() self.data.intersection_update(ref(item) for item in other) return self @@ -127,11 +187,15 @@ __xor__ = symmetric_difference def symmetric_difference_update(self, other): + if self._pending_removals: + self._commit_removals() if self is other: self.data.clear() else: self.data.symmetric_difference_update(ref(item) for item in other) def __ixor__(self, other): + if self._pending_removals: + self._commit_removals() if self is other: self.data.clear() else: Modified: python/branches/release31-maint/Lib/test/test_weakref.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_weakref.py (original) +++ python/branches/release31-maint/Lib/test/test_weakref.py Fri Jan 8 18:56:16 2010 @@ -4,6 +4,8 @@ import collections import weakref import operator +import contextlib +import copy from test import support @@ -788,6 +790,10 @@ self.arg = arg def __repr__(self): return "" % self.arg + def __eq__(self, other): + if isinstance(other, Object): + return self.arg == other.arg + return NotImplemented def __lt__(self, other): if isinstance(other, Object): return self.arg < other.arg @@ -935,6 +941,87 @@ self.assertFalse(values, "itervalues() did not touch all values") + def check_weak_destroy_while_iterating(self, dict, objects, iter_name): + n = len(dict) + it = iter(getattr(dict, iter_name)()) + next(it) # Trigger internal iteration + # Destroy an object + del objects[-1] + gc.collect() # just in case + # We have removed either the first consumed object, or another one + self.assertIn(len(list(it)), [len(objects), len(objects) - 1]) + del it + # The removal has been committed + self.assertEqual(len(dict), n - 1) + + def check_weak_destroy_and_mutate_while_iterating(self, dict, testcontext): + # Check that we can explicitly mutate the weak dict without + # interfering with delayed removal. + # `testcontext` should create an iterator, destroy one of the + # weakref'ed objects and then return a new key/value pair corresponding + # to the destroyed object. + with testcontext() as (k, v): + self.assertFalse(k in dict) + with testcontext() as (k, v): + self.assertRaises(KeyError, dict.__delitem__, k) + self.assertFalse(k in dict) + with testcontext() as (k, v): + self.assertRaises(KeyError, dict.pop, k) + self.assertFalse(k in dict) + with testcontext() as (k, v): + dict[k] = v + self.assertEqual(dict[k], v) + ddict = copy.copy(dict) + with testcontext() as (k, v): + dict.update(ddict) + self.assertEqual(dict, ddict) + with testcontext() as (k, v): + dict.clear() + self.assertEqual(len(dict), 0) + + def test_weak_keys_destroy_while_iterating(self): + # Issue #7105: iterators shouldn't crash when a key is implicitly removed + dict, objects = self.make_weak_keyed_dict() + self.check_weak_destroy_while_iterating(dict, objects, 'keys') + self.check_weak_destroy_while_iterating(dict, objects, 'items') + self.check_weak_destroy_while_iterating(dict, objects, 'values') + self.check_weak_destroy_while_iterating(dict, objects, 'keyrefs') + dict, objects = self.make_weak_keyed_dict() + @contextlib.contextmanager + def testcontext(): + try: + it = iter(dict.items()) + next(it) + # Schedule a key/value for removal and recreate it + v = objects.pop().arg + gc.collect() # just in case + yield Object(v), v + finally: + it = None # should commit all removals + self.check_weak_destroy_and_mutate_while_iterating(dict, testcontext) + + def test_weak_values_destroy_while_iterating(self): + # Issue #7105: iterators shouldn't crash when a key is implicitly removed + dict, objects = self.make_weak_valued_dict() + self.check_weak_destroy_while_iterating(dict, objects, 'keys') + self.check_weak_destroy_while_iterating(dict, objects, 'items') + self.check_weak_destroy_while_iterating(dict, objects, 'values') + self.check_weak_destroy_while_iterating(dict, objects, 'itervaluerefs') + self.check_weak_destroy_while_iterating(dict, objects, 'valuerefs') + dict, objects = self.make_weak_valued_dict() + @contextlib.contextmanager + def testcontext(): + try: + it = iter(dict.items()) + next(it) + # Schedule a key/value for removal and recreate it + k = objects.pop().arg + gc.collect() # just in case + yield k, Object(k) + finally: + it = None # should commit all removals + self.check_weak_destroy_and_mutate_while_iterating(dict, testcontext) + def test_make_weak_keyed_dict_from_dict(self): o = Object(3) dict = weakref.WeakKeyDictionary({o:364}) Modified: python/branches/release31-maint/Lib/test/test_weakset.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_weakset.py (original) +++ python/branches/release31-maint/Lib/test/test_weakset.py Fri Jan 8 18:56:16 2010 @@ -10,6 +10,8 @@ import warnings import collections from collections import UserString as ustr +import gc +import contextlib class Foo: @@ -307,6 +309,54 @@ self.assertFalse(self.s == WeakSet([Foo])) self.assertFalse(self.s == 1) + def test_weak_destroy_while_iterating(self): + # Issue #7105: iterators shouldn't crash when a key is implicitly removed + # Create new items to be sure no-one else holds a reference + items = [ustr(c) for c in ('a', 'b', 'c')] + s = WeakSet(items) + it = iter(s) + next(it) # Trigger internal iteration + # Destroy an item + del items[-1] + gc.collect() # just in case + # We have removed either the first consumed items, or another one + self.assertIn(len(list(it)), [len(items), len(items) - 1]) + del it + # The removal has been committed + self.assertEqual(len(s), len(items)) + + def test_weak_destroy_and_mutate_while_iterating(self): + # Issue #7105: iterators shouldn't crash when a key is implicitly removed + items = [ustr(c) for c in string.ascii_letters] + s = WeakSet(items) + @contextlib.contextmanager + def testcontext(): + try: + it = iter(s) + next(it) + # Schedule an item for removal and recreate it + u = ustr(str(items.pop())) + gc.collect() # just in case + yield u + finally: + it = None # should commit all removals + + with testcontext() as u: + self.assertFalse(u in s) + with testcontext() as u: + self.assertRaises(KeyError, s.remove, u) + self.assertFalse(u in s) + with testcontext() as u: + s.add(u) + self.assertTrue(u in s) + t = s.copy() + with testcontext() as u: + s.update(t) + self.assertEqual(len(s), len(t)) + with testcontext() as u: + s.clear() + self.assertEqual(len(s), 0) + def test_main(verbose=None): support.run_unittest(TestWeakSet) Modified: python/branches/release31-maint/Lib/weakref.py ============================================================================== --- python/branches/release31-maint/Lib/weakref.py (original) +++ python/branches/release31-maint/Lib/weakref.py Fri Jan 8 18:56:16 2010 @@ -18,7 +18,7 @@ ProxyType, ReferenceType) -from _weakrefset import WeakSet +from _weakrefset import WeakSet, _IterationGuard import collections # Import after _weakref to avoid circular import. @@ -46,11 +46,25 @@ def remove(wr, selfref=ref(self)): self = selfref() if self is not None: - del self.data[wr.key] + if self._iterating: + self._pending_removals.append(wr.key) + else: + del self.data[wr.key] self._remove = remove + # A list of keys to be removed + self._pending_removals = [] + self._iterating = set() self.data = d = {} self.update(*args, **kw) + def _commit_removals(self): + l = self._pending_removals + d = self.data + # We shouldn't encounter any KeyError, because this method should + # always be called *before* mutating the dict. + while l: + del d[l.pop()] + def __getitem__(self, key): o = self.data[key]() if o is None: @@ -59,6 +73,8 @@ return o def __delitem__(self, key): + if self._pending_removals: + self._commit_removals() del self.data[key] def __len__(self): @@ -75,6 +91,8 @@ return "" % id(self) def __setitem__(self, key, value): + if self._pending_removals: + self._commit_removals() self.data[key] = KeyedRef(value, self._remove, key) def copy(self): @@ -110,24 +128,19 @@ return o def items(self): - L = [] - for key, wr in self.data.items(): - o = wr() - if o is not None: - L.append((key, o)) - return L - - def items(self): - for wr in self.data.values(): - value = wr() - if value is not None: - yield wr.key, value + with _IterationGuard(self): + for k, wr in self.data.items(): + v = wr() + if v is not None: + yield k, v def keys(self): - return iter(self.data.keys()) + with _IterationGuard(self): + for k, wr in self.data.items(): + if wr() is not None: + yield k - def __iter__(self): - return iter(self.data.keys()) + __iter__ = keys def itervaluerefs(self): """Return an iterator that yields the weak references to the values. @@ -139,15 +152,20 @@ keep the values around longer than needed. """ - return self.data.values() + with _IterationGuard(self): + for wr in self.data.values(): + yield wr def values(self): - for wr in self.data.values(): - obj = wr() - if obj is not None: - yield obj + with _IterationGuard(self): + for wr in self.data.values(): + obj = wr() + if obj is not None: + yield obj def popitem(self): + if self._pending_removals: + self._commit_removals() while 1: key, wr = self.data.popitem() o = wr() @@ -155,6 +173,8 @@ return key, o def pop(self, key, *args): + if self._pending_removals: + self._commit_removals() try: o = self.data.pop(key)() except KeyError: @@ -170,12 +190,16 @@ try: wr = self.data[key] except KeyError: + if self._pending_removals: + self._commit_removals() self.data[key] = KeyedRef(default, self._remove, key) return default else: return wr() def update(self, dict=None, **kwargs): + if self._pending_removals: + self._commit_removals() d = self.data if dict is not None: if not hasattr(dict, "items"): @@ -195,7 +219,7 @@ keep the values around longer than needed. """ - return self.data.values() + return list(self.data.values()) class KeyedRef(ref): @@ -235,9 +259,29 @@ def remove(k, selfref=ref(self)): self = selfref() if self is not None: - del self.data[k] + if self._iterating: + self._pending_removals.append(k) + else: + del self.data[k] self._remove = remove - if dict is not None: self.update(dict) + # A list of dead weakrefs (keys to be removed) + self._pending_removals = [] + self._iterating = set() + if dict is not None: + self.update(dict) + + def _commit_removals(self): + # NOTE: We don't need to call this method before mutating the dict, + # because a dead weakref never compares equal to a live weakref, + # even if they happened to refer to equal objects. + # However, it means keys may already have been removed. + l = self._pending_removals + d = self.data + while l: + try: + del d[l.pop()] + except KeyError: + pass def __delitem__(self, key): del self.data[ref(key)] @@ -284,34 +328,26 @@ return wr in self.data def items(self): - for wr, value in self.data.items(): - key = wr() - if key is not None: - yield key, value - - def keyrefs(self): - """Return an iterator that yields the weak references to the keys. - - The references are not guaranteed to be 'live' at the time - they are used, so the result of calling the references needs - to be checked before being used. This can be used to avoid - creating references that will cause the garbage collector to - keep the keys around longer than needed. - - """ - return self.data.keys() + with _IterationGuard(self): + for wr, value in self.data.items(): + key = wr() + if key is not None: + yield key, value def keys(self): - for wr in self.data.keys(): - obj = wr() - if obj is not None: - yield obj + with _IterationGuard(self): + for wr in self.data: + obj = wr() + if obj is not None: + yield obj - def __iter__(self): - return iter(self.keys()) + __iter__ = keys def values(self): - return iter(self.data.values()) + with _IterationGuard(self): + for wr, value in self.data.items(): + if wr() is not None: + yield value def keyrefs(self): """Return a list of weak references to the keys. @@ -323,7 +359,7 @@ keep the keys around longer than needed. """ - return self.data.keys() + return list(self.data) def popitem(self): while 1: Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Fri Jan 8 18:56:16 2010 @@ -61,6 +61,9 @@ Library ------- +- Issue #7105: Make WeakKeyDictionary and WeakValueDictionary robust against + the destruction of weakref'ed objects while iterating. + - Issue #7455: Fix possible crash in cPickle on invalid input. Patch by Victor Stinner. From solipsis at pitrou.net Fri Jan 8 19:09:32 2010 From: solipsis at pitrou.net (Antoine Pitrou) Date: Fri, 8 Jan 2010 18:09:32 +0000 (UTC) Subject: [Python-checkins] =?utf-8?q?r77365_-_in_python/branches/py3k=3A?= =?utf-8?q?=09Doc/library/weakref=2ErstLib/=5Fweakrefset=2Epy=09Lib?= =?utf-8?q?/test/test=5Fweakref=2EpyLib/test/test=5Fweakset=2Epy=09?= =?utf-8?q?Lib/weakref=2Epy_Misc/NEWS?= References: <22122.9059192867$1262973282@news.gmane.org> Message-ID: writes: > > Author: antoine.pitrou > Date: Fri Jan 8 18:54:23 2010 > New Revision: 77365 > > Log: > Merged revisions 77352-77354 via svnmerge from > svn+ssh://pythondev svn.python.org/python/trunk Ouch, sorry for the bad commit message here. What happened is that SVN first complained about non-"normalized" files, after which I ran reindent.py, and when I autocompleted "svn ci -F svn" to use the last commit message, it selected the stale svnmerge-commit-message.txt instead of svn-commit.tmp. I'm going to edit it, though. From python-checkins at python.org Fri Jan 8 19:10:35 2010 From: python-checkins at python.org (antoine.pitrou) Date: Fri, 08 Jan 2010 18:10:35 -0000 Subject: [Python-checkins] r77365 - svn:log Message-ID: Author: antoine.pitrou Revision: 77365 Property Name: svn:log Action: modified Property diff: --- old property value +++ new property value @@ -1,17 +1,2 @@ -Merged revisions 77352-77354 via svnmerge from -svn+ssh://pythondev at svn.python.org/python/trunk - -........ - r77352 | antoine.pitrou | 2010-01-07 18:46:49 +0100 (jeu., 07 janv. 2010) | 5 lines - - Issue #7455: Fix possible crash in cPickle on invalid input. Patch by - Florent Xicluna. -........ - r77353 | antoine.pitrou | 2010-01-07 18:49:37 +0100 (jeu., 07 janv. 2010) | 3 lines - - Fix attribution. Florent actually repackaged and reviewed Victor's patch (sorry!). -........ - r77354 | antoine.pitrou | 2010-01-07 18:54:10 +0100 (jeu., 07 janv. 2010) | 3 lines - - Fix reattribution mistake when fixing attribution mistake! -........ +Issue #7105: Make WeakKeyDictionary and WeakValueDictionary robust against +the destruction of weakref'ed objects while iterating. From python-checkins at python.org Fri Jan 8 19:11:45 2010 From: python-checkins at python.org (antoine.pitrou) Date: Fri, 08 Jan 2010 18:11:45 -0000 Subject: [Python-checkins] r77366 - svn:log Message-ID: Author: antoine.pitrou Revision: 77366 Property Name: svn:log Action: modified Property diff: --- old property value +++ new property value @@ -1,24 +1,4 @@ -Merged revisions 77365 via svnmerge from -svn+ssh://pythondev at svn.python.org/python/branches/py3k +(note: svnmerged from py3k, but the original message was wrong) -................ - r77365 | antoine.pitrou | 2010-01-08 18:54:23 +0100 (ven., 08 janv. 2010) | 18 lines - - Merged revisions 77352-77354 via svnmerge from - svn+ssh://pythondev at svn.python.org/python/trunk - - ........ - r77352 | antoine.pitrou | 2010-01-07 18:46:49 +0100 (jeu., 07 janv. 2010) | 5 lines - - Issue #7455: Fix possible crash in cPickle on invalid input. Patch by - Florent Xicluna. - ........ - r77353 | antoine.pitrou | 2010-01-07 18:49:37 +0100 (jeu., 07 janv. 2010) | 3 lines - - Fix attribution. Florent actually repackaged and reviewed Victor's patch (sorry!). - ........ - r77354 | antoine.pitrou | 2010-01-07 18:54:10 +0100 (jeu., 07 janv. 2010) | 3 lines - - Fix reattribution mistake when fixing attribution mistake! - ........ -................ +Issue #7105: Make WeakKeyDictionary and WeakValueDictionary robust against +the destruction of weakref'ed objects while iterating. From python-checkins at python.org Fri Jan 8 19:25:42 2010 From: python-checkins at python.org (senthil.kumaran) Date: Fri, 08 Jan 2010 18:25:42 -0000 Subject: [Python-checkins] r77367 - python/branches/release26-maint/Lib/test/test_urllib.py Message-ID: Author: senthil.kumaran Date: Fri Jan 8 19:25:42 2010 New Revision: 77367 Log: Fixing - Issue7026 - RuntimeError: dictionary changed size during iteration. Patch by flox. Modified: python/branches/release26-maint/Lib/test/test_urllib.py Modified: python/branches/release26-maint/Lib/test/test_urllib.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_urllib.py (original) +++ python/branches/release26-maint/Lib/test/test_urllib.py Fri Jan 8 19:25:42 2010 @@ -101,7 +101,7 @@ # Records changes to env vars self.env = test_support.EnvironmentVarGuard() # Delete all proxy related env vars - for k, v in os.environ.iteritems(): + for k in os.environ.keys(): if 'proxy' in k.lower(): self.env.unset(k) From python-checkins at python.org Fri Jan 8 19:41:42 2010 From: python-checkins at python.org (senthil.kumaran) Date: Fri, 08 Jan 2010 18:41:42 -0000 Subject: [Python-checkins] r77368 - in python/trunk/Lib/test: infinite_reload.py inspect_fodder.py list_tests.py mapping_tests.py regrtest.py seq_tests.py test_StringIO.py test_anydbm.py test_array.py test_ast.py test_augassign.py test_bigmem.py test_binascii.py test_binop.py test_bool.py test_buffer.py test_builtin.py test_call.py test_capi.py test_cgi.py test_class.py test_coercion.py test_collections.py test_commands.py test_compile.py test_compiler.py test_complex_args.py test_copy.py test_ctypes.py test_decimal.py test_descr.py test_descrtut.py test_dict.py test_exceptions.py test_file.py test_file2k.py test_fractions.py test_ftplib.py test_functools.py test_grammar.py test_gzip.py test_heapq.py test_hotshot.py test_import.py test_importhooks.py test_inspect.py test_io.py test_iter.py test_itertools.py test_json.py test_linuxaudiodev.py test_long.py test_mailbox.py test_marshal.py test_multibytecodec_support.py test_multifile.py test_multiprocessing.py test_mutants.py test_opcodes.py test_operator.py test_optparse.py test_ossaudiodev.py test_peepholer.py test_pep352.py test_pkgimport.py test_pyclbr.py test_pyexpat.py test_queue.py test_random.py test_repr.py test_rfc822.py test_richcmp.py test_scope.py test_set.py test_sets.py test_shelve.py test_site.py test_slice.py test_socket.py test_sort.py test_sqlite.py test_ssl.py test_struct.py test_syntax.py test_sys.py test_tarfile.py test_threadsignals.py test_trace.py test_traceback.py test_transformer.py test_types.py test_undocumented_details.py test_unittest.py test_univnewlines2k.py test_urllib.py test_urllib2_localnet.py test_urllibnet.py test_userdict.py test_userlist.py test_userstring.py test_weakref.py test_whichdb.py test_with.py test_wsgiref.py test_xmllib.py test_xpickle.py test_zipimport_support.py Message-ID: Author: senthil.kumaran Date: Fri Jan 8 19:41:40 2010 New Revision: 77368 Log: Fixing - Issue7026 - RuntimeError: dictionary changed size during iteration. Patch by flox Modified: python/trunk/Lib/test/infinite_reload.py python/trunk/Lib/test/inspect_fodder.py python/trunk/Lib/test/list_tests.py python/trunk/Lib/test/mapping_tests.py python/trunk/Lib/test/regrtest.py python/trunk/Lib/test/seq_tests.py python/trunk/Lib/test/test_StringIO.py python/trunk/Lib/test/test_anydbm.py python/trunk/Lib/test/test_array.py python/trunk/Lib/test/test_ast.py python/trunk/Lib/test/test_augassign.py python/trunk/Lib/test/test_bigmem.py python/trunk/Lib/test/test_binascii.py python/trunk/Lib/test/test_binop.py python/trunk/Lib/test/test_bool.py python/trunk/Lib/test/test_buffer.py python/trunk/Lib/test/test_builtin.py python/trunk/Lib/test/test_call.py python/trunk/Lib/test/test_capi.py python/trunk/Lib/test/test_cgi.py python/trunk/Lib/test/test_class.py python/trunk/Lib/test/test_coercion.py python/trunk/Lib/test/test_collections.py python/trunk/Lib/test/test_commands.py python/trunk/Lib/test/test_compile.py python/trunk/Lib/test/test_compiler.py python/trunk/Lib/test/test_complex_args.py python/trunk/Lib/test/test_copy.py python/trunk/Lib/test/test_ctypes.py python/trunk/Lib/test/test_decimal.py python/trunk/Lib/test/test_descr.py python/trunk/Lib/test/test_descrtut.py python/trunk/Lib/test/test_dict.py python/trunk/Lib/test/test_exceptions.py python/trunk/Lib/test/test_file.py python/trunk/Lib/test/test_file2k.py python/trunk/Lib/test/test_fractions.py python/trunk/Lib/test/test_ftplib.py python/trunk/Lib/test/test_functools.py python/trunk/Lib/test/test_grammar.py python/trunk/Lib/test/test_gzip.py python/trunk/Lib/test/test_heapq.py python/trunk/Lib/test/test_hotshot.py python/trunk/Lib/test/test_import.py python/trunk/Lib/test/test_importhooks.py python/trunk/Lib/test/test_inspect.py python/trunk/Lib/test/test_io.py python/trunk/Lib/test/test_iter.py python/trunk/Lib/test/test_itertools.py python/trunk/Lib/test/test_json.py python/trunk/Lib/test/test_linuxaudiodev.py python/trunk/Lib/test/test_long.py python/trunk/Lib/test/test_mailbox.py python/trunk/Lib/test/test_marshal.py python/trunk/Lib/test/test_multibytecodec_support.py python/trunk/Lib/test/test_multifile.py python/trunk/Lib/test/test_multiprocessing.py python/trunk/Lib/test/test_mutants.py python/trunk/Lib/test/test_opcodes.py python/trunk/Lib/test/test_operator.py python/trunk/Lib/test/test_optparse.py python/trunk/Lib/test/test_ossaudiodev.py python/trunk/Lib/test/test_peepholer.py python/trunk/Lib/test/test_pep352.py python/trunk/Lib/test/test_pkgimport.py python/trunk/Lib/test/test_pyclbr.py python/trunk/Lib/test/test_pyexpat.py python/trunk/Lib/test/test_queue.py python/trunk/Lib/test/test_random.py python/trunk/Lib/test/test_repr.py python/trunk/Lib/test/test_rfc822.py python/trunk/Lib/test/test_richcmp.py python/trunk/Lib/test/test_scope.py python/trunk/Lib/test/test_set.py python/trunk/Lib/test/test_sets.py python/trunk/Lib/test/test_shelve.py python/trunk/Lib/test/test_site.py python/trunk/Lib/test/test_slice.py python/trunk/Lib/test/test_socket.py python/trunk/Lib/test/test_sort.py python/trunk/Lib/test/test_sqlite.py python/trunk/Lib/test/test_ssl.py python/trunk/Lib/test/test_struct.py python/trunk/Lib/test/test_syntax.py python/trunk/Lib/test/test_sys.py python/trunk/Lib/test/test_tarfile.py python/trunk/Lib/test/test_threadsignals.py python/trunk/Lib/test/test_trace.py python/trunk/Lib/test/test_traceback.py python/trunk/Lib/test/test_transformer.py python/trunk/Lib/test/test_types.py python/trunk/Lib/test/test_undocumented_details.py python/trunk/Lib/test/test_unittest.py python/trunk/Lib/test/test_univnewlines2k.py python/trunk/Lib/test/test_urllib.py python/trunk/Lib/test/test_urllib2_localnet.py python/trunk/Lib/test/test_urllibnet.py python/trunk/Lib/test/test_userdict.py python/trunk/Lib/test/test_userlist.py python/trunk/Lib/test/test_userstring.py python/trunk/Lib/test/test_weakref.py python/trunk/Lib/test/test_whichdb.py python/trunk/Lib/test/test_with.py python/trunk/Lib/test/test_wsgiref.py python/trunk/Lib/test/test_xmllib.py python/trunk/Lib/test/test_xpickle.py python/trunk/Lib/test/test_zipimport_support.py Modified: python/trunk/Lib/test/infinite_reload.py ============================================================================== --- python/trunk/Lib/test/infinite_reload.py (original) +++ python/trunk/Lib/test/infinite_reload.py Fri Jan 8 19:41:40 2010 @@ -3,5 +3,6 @@ # reload()ing. This module is imported by test_import.py:test_infinite_reload # to make sure this doesn't happen any more. +import imp import infinite_reload -reload(infinite_reload) +imp.reload(infinite_reload) Modified: python/trunk/Lib/test/inspect_fodder.py ============================================================================== --- python/trunk/Lib/test/inspect_fodder.py (original) +++ python/trunk/Lib/test/inspect_fodder.py Fri Jan 8 19:41:40 2010 @@ -15,7 +15,7 @@ fr = inspect.currentframe() st = inspect.stack() p = x - q = y / 0 + q = y // 0 # line 20 class StupidGit: Modified: python/trunk/Lib/test/list_tests.py ============================================================================== --- python/trunk/Lib/test/list_tests.py (original) +++ python/trunk/Lib/test/list_tests.py Fri Jan 8 19:41:40 2010 @@ -4,7 +4,7 @@ import sys import os - +import warnings from test import test_support, seq_tests class CommonTest(seq_tests.CommonTest): @@ -36,7 +36,9 @@ self.assertEqual(str(a0), str(l0)) self.assertEqual(repr(a0), repr(l0)) - self.assertEqual(`a2`, `l2`) + # Silence Py3k warning + with test_support.check_warnings(): + self.assertEqual(eval('`a2`'), eval('`l2`')) self.assertEqual(str(a2), "[0, 1, 2]") self.assertEqual(repr(a2), "[0, 1, 2]") @@ -421,6 +423,13 @@ self.assertRaises(TypeError, u.reverse, 42) def test_sort(self): + with warnings.catch_warnings(): + # Silence Py3k warning + warnings.filterwarnings("ignore", "the cmp argument is not supported", + DeprecationWarning) + self._test_sort() + + def _test_sort(self): u = self.type2test([1, 0]) u.sort() self.assertEqual(u, [0, 1]) Modified: python/trunk/Lib/test/mapping_tests.py ============================================================================== --- python/trunk/Lib/test/mapping_tests.py (original) +++ python/trunk/Lib/test/mapping_tests.py Fri Jan 8 19:41:40 2010 @@ -1,6 +1,7 @@ # tests common to dict and UserDict import unittest import UserDict +import test_support class BasicTestMappingProtocol(unittest.TestCase): @@ -54,13 +55,18 @@ #len self.assertEqual(len(p), 0) self.assertEqual(len(d), len(self.reference)) - #has_key + #in for k in self.reference: - self.assertTrue(d.has_key(k)) self.assertTrue(k in d) for k in self.other: - self.assertFalse(d.has_key(k)) self.assertFalse(k in d) + #has_key + # Silence Py3k warning + with test_support.check_warnings(): + for k in self.reference: + self.assertTrue(d.has_key(k)) + for k in self.other: + self.assertFalse(d.has_key(k)) #cmp self.assertEqual(cmp(p,p), 0) self.assertEqual(cmp(d,d), 0) Modified: python/trunk/Lib/test/regrtest.py ============================================================================== --- python/trunk/Lib/test/regrtest.py (original) +++ python/trunk/Lib/test/regrtest.py Fri Jan 8 19:41:40 2010 @@ -150,7 +150,6 @@ import cStringIO import getopt import itertools -import json import os import random import re @@ -160,15 +159,13 @@ import warnings import unittest -# I see no other way to suppress these warnings; -# putting them in test_grammar.py has no effect: -warnings.filterwarnings("ignore", "hex/oct constants", FutureWarning, - ".*test.test_grammar$") -if sys.maxint > 0x7fffffff: - # Also suppress them in , because for 64-bit platforms, - # that's where test_grammar.py hides them. - warnings.filterwarnings("ignore", "hex/oct constants", FutureWarning, - "") +with warnings.catch_warnings(): + # Silence Py3k warnings + warnings.filterwarnings("ignore", "tuple parameter unpacking " + "has been removed", SyntaxWarning) + warnings.filterwarnings("ignore", "assignment to True or False " + "is forbidden", SyntaxWarning) + import json # Ignore ImportWarnings that only occur in the source tree, # (because of modules with the same name as source-directories in Modules/) Modified: python/trunk/Lib/test/seq_tests.py ============================================================================== --- python/trunk/Lib/test/seq_tests.py (original) +++ python/trunk/Lib/test/seq_tests.py Fri Jan 8 19:41:40 2010 @@ -4,6 +4,7 @@ import unittest import sys +import test_support # Various iterables # This is used for checking the constructor (here and in test_deque.py) @@ -196,7 +197,9 @@ self.assertEqual(a[ -pow(2,128L): 3 ], self.type2test([0,1,2])) self.assertEqual(a[ 3: pow(2,145L) ], self.type2test([3,4])) - self.assertRaises(TypeError, u.__getslice__) + # Silence Py3k warning + with test_support.check_warnings(): + self.assertRaises(TypeError, u.__getslice__) def test_contains(self): u = self.type2test([0, 1, 2]) Modified: python/trunk/Lib/test/test_StringIO.py ============================================================================== --- python/trunk/Lib/test/test_StringIO.py (original) +++ python/trunk/Lib/test/test_StringIO.py Fri Jan 8 19:41:40 2010 @@ -137,12 +137,10 @@ def test_main(): - test_support.run_unittest( - TestStringIO, - TestcStringIO, - TestBufferStringIO, - TestBuffercStringIO - ) + test_support.run_unittest(TestStringIO, TestcStringIO) + # Silence Py3k warning + with test_support.check_warnings(): + test_support.run_unittest(TestBufferStringIO, TestBuffercStringIO) if __name__ == '__main__': test_main() Modified: python/trunk/Lib/test/test_anydbm.py ============================================================================== --- python/trunk/Lib/test/test_anydbm.py (original) +++ python/trunk/Lib/test/test_anydbm.py Fri Jan 8 19:41:40 2010 @@ -5,12 +5,14 @@ import os import unittest -import anydbm import glob from test import test_support _fname = test_support.TESTFN +# Silence Py3k warning +anydbm = test_support.import_module('anydbm', deprecated=True) + def _delete_files(): # we don't know the precise name the underlying database uses # so we use glob to locate all names Modified: python/trunk/Lib/test/test_array.py ============================================================================== --- python/trunk/Lib/test/test_array.py (original) +++ python/trunk/Lib/test/test_array.py Fri Jan 8 19:41:40 2010 @@ -749,7 +749,9 @@ def test_buffer(self): a = array.array(self.typecode, self.example) - b = buffer(a) + # Silence Py3k warning + with test_support.check_warnings(): + b = buffer(a) self.assertEqual(b[0], a.tostring()[0]) def test_weakref(self): Modified: python/trunk/Lib/test/test_ast.py ============================================================================== --- python/trunk/Lib/test/test_ast.py (original) +++ python/trunk/Lib/test/test_ast.py Fri Jan 8 19:41:40 2010 @@ -1,6 +1,7 @@ import sys, itertools, unittest from test import test_support import ast +import warnings def to_tuple(t): if t is None or isinstance(t, (basestring, int, long, complex)): @@ -302,7 +303,11 @@ def test_main(): - test_support.run_unittest(AST_Tests, ASTHelpers_Test) + with warnings.catch_warnings(): + # Silence Py3k warning + warnings.filterwarnings("ignore", "backquote not supported", + SyntaxWarning) + test_support.run_unittest(AST_Tests, ASTHelpers_Test) def main(): if __name__ != '__main__': Modified: python/trunk/Lib/test/test_augassign.py ============================================================================== --- python/trunk/Lib/test/test_augassign.py (original) +++ python/trunk/Lib/test/test_augassign.py Fri Jan 8 19:41:40 2010 @@ -2,6 +2,7 @@ from test.test_support import run_unittest import unittest +import warnings class AugAssignTest(unittest.TestCase): @@ -324,7 +325,11 @@ '''.splitlines()) def test_main(): - run_unittest(AugAssignTest) + with warnings.catch_warnings(): + # Silence Py3k warning + warnings.filterwarnings("ignore", "classic int division", + DeprecationWarning) + run_unittest(AugAssignTest) if __name__ == '__main__': test_main() Modified: python/trunk/Lib/test/test_bigmem.py ============================================================================== --- python/trunk/Lib/test/test_bigmem.py (original) +++ python/trunk/Lib/test/test_bigmem.py Fri Jan 8 19:41:40 2010 @@ -97,21 +97,21 @@ def test_encode(self, size): return self.basic_encode_test(size, 'utf-8') - @precisionbigmemtest(size=_4G / 6 + 2, memuse=2) + @precisionbigmemtest(size=_4G // 6 + 2, memuse=2) def test_encode_raw_unicode_escape(self, size): try: return self.basic_encode_test(size, 'raw_unicode_escape') except MemoryError: pass # acceptable on 32-bit - @precisionbigmemtest(size=_4G / 5 + 70, memuse=3) + @precisionbigmemtest(size=_4G // 5 + 70, memuse=3) def test_encode_utf7(self, size): try: return self.basic_encode_test(size, 'utf7') except MemoryError: pass # acceptable on 32-bit - @precisionbigmemtest(size=_4G / 4 + 5, memuse=6) + @precisionbigmemtest(size=_4G // 4 + 5, memuse=6) def test_encode_utf32(self, size): try: return self.basic_encode_test(size, 'utf32', expectedsize=4*size+4) @@ -122,7 +122,7 @@ def test_decodeascii(self, size): return self.basic_encode_test(size, 'ascii', c='A') - @precisionbigmemtest(size=_4G / 5, memuse=6+2) + @precisionbigmemtest(size=_4G // 5, memuse=6+2) def test_unicode_repr_oflw(self, size): try: s = u"\uAAAA"*size @@ -516,7 +516,7 @@ self.assertEquals(s.count('\\'), size) self.assertEquals(s.count('0'), size * 2) - @bigmemtest(minsize=2**32 / 5, memuse=6+2) + @bigmemtest(minsize=2**32 // 5, memuse=6+2) def test_unicode_repr(self, size): s = u"\uAAAA" * size self.assertTrue(len(repr(s)) > size) @@ -1053,7 +1053,9 @@ @precisionbigmemtest(size=_1G, memuse=4) def test_repeat(self, size): try: - b = buffer("AAAA")*size + # Silence Py3k warning + with test_support.check_warnings(): + b = buffer("AAAA")*size except MemoryError: pass # acceptable on 32-bit else: Modified: python/trunk/Lib/test/test_binascii.py ============================================================================== --- python/trunk/Lib/test/test_binascii.py (original) +++ python/trunk/Lib/test/test_binascii.py Fri Jan 8 19:41:40 2010 @@ -26,10 +26,10 @@ prefixes.extend(["crc_", "rlecode_", "rledecode_"]) for prefix in prefixes: name = prefix + suffix - self.assertTrue(callable(getattr(binascii, name))) + self.assertTrue(hasattr(getattr(binascii, name), '__call__')) self.assertRaises(TypeError, getattr(binascii, name)) for name in ("hexlify", "unhexlify"): - self.assertTrue(callable(getattr(binascii, name))) + self.assertTrue(hasattr(getattr(binascii, name), '__call__')) self.assertRaises(TypeError, getattr(binascii, name)) def test_base64valid(self): Modified: python/trunk/Lib/test/test_binop.py ============================================================================== --- python/trunk/Lib/test/test_binop.py (original) +++ python/trunk/Lib/test/test_binop.py Fri Jan 8 19:41:40 2010 @@ -207,6 +207,9 @@ """Compare two Rats for inequality.""" return not self == other + # Silence Py3k warning + __hash__ = None + class RatTestCase(unittest.TestCase): """Unit tests for Rat class and its support utilities.""" Modified: python/trunk/Lib/test/test_bool.py ============================================================================== --- python/trunk/Lib/test/test_bool.py (original) +++ python/trunk/Lib/test/test_bool.py Fri Jan 8 19:41:40 2010 @@ -91,10 +91,10 @@ self.assertEqual(False*1, 0) self.assertIsNot(False*1, False) - self.assertEqual(True/1, 1) - self.assertIsNot(True/1, True) - self.assertEqual(False/1, 0) - self.assertIsNot(False/1, False) + self.assertEqual(True//1, 1) + self.assertIsNot(True//1, True) + self.assertEqual(False//1, 0) + self.assertIsNot(False//1, False) for b in False, True: for i in 0, 1, 2: @@ -168,8 +168,8 @@ self.assertIs(hasattr([], "wobble"), False) def test_callable(self): - self.assertIs(callable(len), True) - self.assertIs(callable(1), False) + self.assertTrue(hasattr(len, '__call__'), True) + self.assertFalse(hasattr(1, '__call__'), False) def test_isinstance(self): self.assertIs(isinstance(True, bool), True) @@ -184,8 +184,12 @@ self.assertIs(issubclass(int, bool), False) def test_haskey(self): - self.assertIs({}.has_key(1), False) - self.assertIs({1:1}.has_key(1), True) + self.assertIs(1 in {}, False) + self.assertIs(1 in {1:1}, True) + # Silence Py3k warning + with test_support.check_warnings(): + self.assertIs({}.has_key(1), False) + self.assertIs({1:1}.has_key(1), True) def test_string(self): self.assertIs("xyz".endswith("z"), True) @@ -257,8 +261,10 @@ import operator self.assertIs(operator.truth(0), False) self.assertIs(operator.truth(1), True) - self.assertIs(operator.isCallable(0), False) - self.assertIs(operator.isCallable(len), True) + # Silence Py3k warning + with test_support.check_warnings(): + self.assertIs(operator.isCallable(0), False) + self.assertIs(operator.isCallable(len), True) self.assertIs(operator.isNumberType(None), False) self.assertIs(operator.isNumberType(0), True) self.assertIs(operator.not_(1), False) Modified: python/trunk/Lib/test/test_buffer.py ============================================================================== --- python/trunk/Lib/test/test_buffer.py (original) +++ python/trunk/Lib/test/test_buffer.py Fri Jan 8 19:41:40 2010 @@ -6,6 +6,7 @@ import unittest from test import test_support +import warnings class BufferTests(unittest.TestCase): @@ -23,7 +24,11 @@ def test_main(): - test_support.run_unittest(BufferTests) + with warnings.catch_warnings(): + # Silence Py3k warning + warnings.filterwarnings("ignore", "buffer.. not supported", + DeprecationWarning) + test_support.run_unittest(BufferTests) if __name__ == "__main__": test_main() Modified: python/trunk/Lib/test/test_builtin.py ============================================================================== --- python/trunk/Lib/test/test_builtin.py (original) +++ python/trunk/Lib/test/test_builtin.py Fri Jan 8 19:41:40 2010 @@ -7,10 +7,6 @@ from operator import neg import sys, warnings, cStringIO, random, fractions, UserDict -warnings.filterwarnings("ignore", "hex../oct.. of negative int", - FutureWarning, __name__) -warnings.filterwarnings("ignore", "integer argument expected", - DeprecationWarning, "unittest") # count the number of test runs. # used to skip running test_execfile() multiple times @@ -419,7 +415,11 @@ f.write('z = z+1\n') f.write('z = z*2\n') f.close() - execfile(TESTFN) + with warnings.catch_warnings(): + # Silence Py3k warning + warnings.filterwarnings("ignore", ".+ not supported in 3.x", + DeprecationWarning) + execfile(TESTFN) def test_execfile(self): global numruns @@ -1542,17 +1542,30 @@ data = 'The quick Brown fox Jumped over The lazy Dog'.split() self.assertRaises(TypeError, sorted, data, None, lambda x,y: 0) +def _run_unittest(*args): + with warnings.catch_warnings(): + # Silence Py3k warnings + warnings.filterwarnings("ignore", ".+ not supported in 3.x", + DeprecationWarning) + warnings.filterwarnings("ignore", ".+ is renamed to imp.reload", + DeprecationWarning) + warnings.filterwarnings("ignore", "integer argument expected, got float", + DeprecationWarning) + warnings.filterwarnings("ignore", "classic int division", + DeprecationWarning) + run_unittest(*args) + def test_main(verbose=None): test_classes = (BuiltinTest, TestSorted) - run_unittest(*test_classes) + _run_unittest(*test_classes) # verify reference counting if verbose and hasattr(sys, "gettotalrefcount"): import gc counts = [None] * 5 for i in xrange(len(counts)): - run_unittest(*test_classes) + _run_unittest(*test_classes) gc.collect() counts[i] = sys.gettotalrefcount() print counts Modified: python/trunk/Lib/test/test_call.py ============================================================================== --- python/trunk/Lib/test/test_call.py (original) +++ python/trunk/Lib/test/test_call.py Fri Jan 8 19:41:40 2010 @@ -12,7 +12,9 @@ self.assertRaises(TypeError, {}.has_key) def test_varargs1(self): - {}.has_key(0) + # Silence Py3k warning + with test_support.check_warnings(): + {}.has_key(0) def test_varargs2(self): self.assertRaises(TypeError, {}.has_key, 0, 1) @@ -24,11 +26,15 @@ pass def test_varargs1_ext(self): - {}.has_key(*(0,)) + # Silence Py3k warning + with test_support.check_warnings(): + {}.has_key(*(0,)) def test_varargs2_ext(self): try: - {}.has_key(*(1, 2)) + # Silence Py3k warning + with test_support.check_warnings(): + {}.has_key(*(1, 2)) except TypeError: pass else: Modified: python/trunk/Lib/test/test_capi.py ============================================================================== --- python/trunk/Lib/test/test_capi.py (original) +++ python/trunk/Lib/test/test_capi.py Fri Jan 8 19:41:40 2010 @@ -55,7 +55,7 @@ context = foo() context.l = [] context.n = 2 #submits per thread - context.nThreads = n / context.n + context.nThreads = n // context.n context.nFinished = 0 context.lock = threading.Lock() context.event = threading.Event() Modified: python/trunk/Lib/test/test_cgi.py ============================================================================== --- python/trunk/Lib/test/test_cgi.py (original) +++ python/trunk/Lib/test/test_cgi.py Fri Jan 8 19:41:40 2010 @@ -104,7 +104,7 @@ def norm(list): if type(list) == type([]): - list.sort() + list.sort(key=str) return list def first_elts(list): Modified: python/trunk/Lib/test/test_class.py ============================================================================== --- python/trunk/Lib/test/test_class.py (original) +++ python/trunk/Lib/test/test_class.py Fri Jan 8 19:41:40 2010 @@ -1,7 +1,7 @@ "Test the functionality of Python classes implementing operators." import unittest - +import warnings from test import test_support testmeths = [ @@ -407,7 +407,7 @@ self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (testme, 1))]) callLst[:] = [] - testme <> 1 # XXX kill this in py3k + eval('testme <> 1') # XXX kill this in py3k self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (testme, 1))]) callLst[:] = [] @@ -427,7 +427,7 @@ self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (1, testme))]) callLst[:] = [] - 1 <> testme + eval('1 <> testme') self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (1, testme))]) callLst[:] = [] @@ -616,7 +616,15 @@ hash(a.f) def test_main(): - test_support.run_unittest(ClassTests) + with warnings.catch_warnings(): + # Silence Py3k warnings + warnings.filterwarnings("ignore", ".+slice__ has been removed", + DeprecationWarning) + warnings.filterwarnings("ignore", "classic int division", + DeprecationWarning) + warnings.filterwarnings("ignore", "<> not supported", + DeprecationWarning) + test_support.run_unittest(ClassTests) if __name__=='__main__': test_main() Modified: python/trunk/Lib/test/test_coercion.py ============================================================================== --- python/trunk/Lib/test/test_coercion.py (original) +++ python/trunk/Lib/test/test_coercion.py Fri Jan 8 19:41:40 2010 @@ -223,8 +223,11 @@ infix_results[key] = res - -process_infix_results() +with warnings.catch_warnings(): + # Silence Py3k warning + warnings.filterwarnings("ignore", "classic int division", + DeprecationWarning) + process_infix_results() # now infix_results has two lists of results for every pairing. prefix_binops = [ 'divmod' ] @@ -337,11 +340,14 @@ raise exc def test_main(): - warnings.filterwarnings("ignore", - r'complex divmod\(\), // and % are deprecated', - DeprecationWarning, - r'test.test_coercion$') - run_unittest(CoercionTest) + with warnings.catch_warnings(): + # Silence Py3k warnings + warnings.filterwarnings("ignore", + "complex divmod.., // and % are deprecated", + DeprecationWarning) + warnings.filterwarnings("ignore", "classic .+ division", + DeprecationWarning) + run_unittest(CoercionTest) if __name__ == "__main__": test_main() Modified: python/trunk/Lib/test/test_collections.py ============================================================================== --- python/trunk/Lib/test/test_collections.py (original) +++ python/trunk/Lib/test/test_collections.py Fri Jan 8 19:41:40 2010 @@ -510,8 +510,10 @@ [('a', 3), ('b', 2), ('c', 1)]) self.assertEqual(c['b'], 2) self.assertEqual(c['z'], 0) - self.assertEqual(c.has_key('c'), True) - self.assertEqual(c.has_key('z'), False) + # Silence Py3k warning + with test_support.check_warnings(): + self.assertEqual(c.has_key('c'), True) + self.assertEqual(c.has_key('z'), False) self.assertEqual(c.__contains__('c'), True) self.assertEqual(c.__contains__('z'), False) self.assertEqual(c.get('b', 10), 2) Modified: python/trunk/Lib/test/test_commands.py ============================================================================== --- python/trunk/Lib/test/test_commands.py (original) +++ python/trunk/Lib/test/test_commands.py Fri Jan 8 19:41:40 2010 @@ -9,7 +9,10 @@ warnings.filterwarnings('ignore', r".*commands.getstatus.. is deprecated", DeprecationWarning) -from test.test_support import run_unittest, reap_children +from test.test_support import run_unittest, reap_children, import_module + +# Silence Py3k warning +import_module('commands', deprecated=True) from commands import * # The module says: Modified: python/trunk/Lib/test/test_compile.py ============================================================================== --- python/trunk/Lib/test/test_compile.py (original) +++ python/trunk/Lib/test/test_compile.py Fri Jan 8 19:41:40 2010 @@ -2,6 +2,7 @@ import sys import _ast from test import test_support +import textwrap class TestSpecifics(unittest.TestCase): @@ -141,7 +142,9 @@ self.assertEqual(f(5), 0) def test_complex_args(self): - + # Silence Py3k warning + with test_support.check_warnings(): + exec textwrap.dedent(''' def comp_args((a, b)): return a,b self.assertEqual(comp_args((1, 2)), (1, 2)) @@ -159,6 +162,7 @@ return a, b, c self.assertEqual(comp_args(1, (2, 3)), (1, 2, 3)) self.assertEqual(comp_args(), (2, 3, 4)) + ''') def test_argument_order(self): try: Modified: python/trunk/Lib/test/test_compiler.py ============================================================================== --- python/trunk/Lib/test/test_compiler.py (original) +++ python/trunk/Lib/test/test_compiler.py Fri Jan 8 19:41:40 2010 @@ -75,7 +75,7 @@ def testTryExceptFinally(self): # Test that except and finally clauses in one try stmt are recognized - c = compiler.compile("try:\n 1/0\nexcept:\n e = 1\nfinally:\n f = 1", + c = compiler.compile("try:\n 1//0\nexcept:\n e = 1\nfinally:\n f = 1", "", "exec") dct = {} exec c in dct Modified: python/trunk/Lib/test/test_complex_args.py ============================================================================== --- python/trunk/Lib/test/test_complex_args.py (original) +++ python/trunk/Lib/test/test_complex_args.py Fri Jan 8 19:41:40 2010 @@ -1,23 +1,31 @@ import unittest from test import test_support +import textwrap +import warnings class ComplexArgsTestCase(unittest.TestCase): def check(self, func, expected, *args): self.assertEqual(func(*args), expected) - # These functions are tested below as lambdas too. If you add a function test, - # also add a similar lambda test. + # These functions are tested below as lambdas too. If you add a + # function test, also add a similar lambda test. + + # Functions are wrapped in "exec" statements in order to + # silence Py3k warnings def test_func_parens_no_unpacking(self): + exec textwrap.dedent(""" def f(((((x))))): return x self.check(f, 1, 1) # Inner parens are elided, same as: f(x,) def f(((x)),): return x self.check(f, 2, 2) + """) def test_func_1(self): + exec textwrap.dedent(""" def f(((((x),)))): return x self.check(f, 3, (3,)) def f(((((x)),))): return x @@ -26,16 +34,22 @@ self.check(f, 5, (5,)) def f(((x),)): return x self.check(f, 6, (6,)) + """) def test_func_2(self): + exec textwrap.dedent(""" def f(((((x)),),)): return x self.check(f, 2, ((2,),)) + """) def test_func_3(self): + exec textwrap.dedent(""" def f((((((x)),),),)): return x self.check(f, 3, (((3,),),)) + """) def test_func_complex(self): + exec textwrap.dedent(""" def f((((((x)),),),), a, b, c): return x, a, b, c self.check(f, (3, 9, 8, 7), (((3,),),), 9, 8, 7) @@ -44,18 +58,22 @@ def f(a, b, c, ((((((x)),)),),)): return a, b, c, x self.check(f, (9, 8, 7, 3), 9, 8, 7, (((3,),),)) + """) # Duplicate the tests above, but for lambda. If you add a lambda test, # also add a similar function test above. def test_lambda_parens_no_unpacking(self): + exec textwrap.dedent(""" f = lambda (((((x))))): x self.check(f, 1, 1) # Inner parens are elided, same as: f(x,) f = lambda ((x)),: x self.check(f, 2, 2) + """) def test_lambda_1(self): + exec textwrap.dedent(""" f = lambda (((((x),)))): x self.check(f, 3, (3,)) f = lambda (((((x)),))): x @@ -64,16 +82,22 @@ self.check(f, 5, (5,)) f = lambda (((x),)): x self.check(f, 6, (6,)) + """) def test_lambda_2(self): + exec textwrap.dedent(""" f = lambda (((((x)),),)): x self.check(f, 2, ((2,),)) + """) def test_lambda_3(self): + exec textwrap.dedent(""" f = lambda ((((((x)),),),)): x self.check(f, 3, (((3,),),)) + """) def test_lambda_complex(self): + exec textwrap.dedent(""" f = lambda (((((x)),),),), a, b, c: (x, a, b, c) self.check(f, (3, 9, 8, 7), (((3,),),), 9, 8, 7) @@ -82,10 +106,17 @@ f = lambda a, b, c, ((((((x)),)),),): (a, b, c, x) self.check(f, (9, 8, 7, 3), 9, 8, 7, (((3,),),)) + """) def test_main(): - test_support.run_unittest(ComplexArgsTestCase) + with warnings.catch_warnings(): + # Silence Py3k warnings + warnings.filterwarnings("ignore", "tuple parameter unpacking " + "has been removed", SyntaxWarning) + warnings.filterwarnings("ignore", "parenthesized argument names " + "are invalid", SyntaxWarning) + test_support.run_unittest(ComplexArgsTestCase) if __name__ == "__main__": test_main() Modified: python/trunk/Lib/test/test_copy.py ============================================================================== --- python/trunk/Lib/test/test_copy.py (original) +++ python/trunk/Lib/test/test_copy.py Fri Jan 8 19:41:40 2010 @@ -661,7 +661,7 @@ v = copy.deepcopy(u) self.assertNotEqual(v, u) self.assertEqual(len(v), 2) - (x, y), (z, t) = sorted(v.items(), key=lambda (k, v): k.i) + (x, y), (z, t) = sorted(v.items(), key=lambda k: k[0].i) self.assertFalse(x is a) self.assertEqual(x.i, a.i) self.assertTrue(y is b) Modified: python/trunk/Lib/test/test_ctypes.py ============================================================================== --- python/trunk/Lib/test/test_ctypes.py (original) +++ python/trunk/Lib/test/test_ctypes.py Fri Jan 8 19:41:40 2010 @@ -4,12 +4,19 @@ #Skip tests if _ctypes module does not exist import_module('_ctypes') +import warnings import ctypes.test def test_main(): skipped, testcases = ctypes.test.get_tests(ctypes.test, "test_*.py", verbosity=0) suites = [unittest.makeSuite(t) for t in testcases] - run_unittest(unittest.TestSuite(suites)) + with warnings.catch_warnings(): + # Silence Py3k warnings + warnings.filterwarnings("ignore", "buffer.. not supported", + DeprecationWarning) + warnings.filterwarnings("ignore", "classic long division", + DeprecationWarning) + run_unittest(unittest.TestSuite(suites)) if __name__ == "__main__": test_main() Modified: python/trunk/Lib/test/test_decimal.py ============================================================================== --- python/trunk/Lib/test/test_decimal.py (original) +++ python/trunk/Lib/test/test_decimal.py Fri Jan 8 19:41:40 2010 @@ -31,7 +31,8 @@ import unittest from decimal import * import numbers -from test.test_support import (run_unittest, run_doctest, is_resource_enabled) +from test.test_support import (run_unittest, run_doctest, + is_resource_enabled, check_warnings) import random try: import threading @@ -202,7 +203,7 @@ if skip_expected: raise unittest.SkipTest return - for line in open(file).xreadlines(): + for line in open(file): line = line.replace('\r\n', '').replace('\n', '') #print line try: @@ -361,8 +362,10 @@ myexceptions = self.getexceptions() self.context.clear_flags() - myexceptions.sort() - theirexceptions.sort() + # Silence Py3k warning + with check_warnings(): + myexceptions.sort() + theirexceptions.sort() self.assertEqual(result, ans, 'Incorrect answer for ' + s + ' -- got ' + result) @@ -617,12 +620,14 @@ ('//', '__floordiv__', '__rfloordiv__'), ('**', '__pow__', '__rpow__') ] - if 1/2 == 0: - # testing with classic division, so add __div__ - oplist.append(('/', '__div__', '__rdiv__')) - else: - # testing with -Qnew, so add __truediv__ - oplist.append(('/', '__truediv__', '__rtruediv__')) + # Silence Py3k warning + with check_warnings(): + if 1/2 == 0: + # testing with classic division, so add __div__ + oplist.append(('/', '__div__', '__rdiv__')) + else: + # testing with -Qnew, so add __truediv__ + oplist.append(('/', '__truediv__', '__rtruediv__')) for sym, lop, rop in oplist: setattr(E, lop, lambda self, other: 'str' + lop + str(other)) @@ -1194,8 +1199,10 @@ self.assertEqual(a, b) # with None - self.assertFalse(Decimal(1) < None) - self.assertTrue(Decimal(1) > None) + # Silence Py3k warning + with check_warnings(): + self.assertFalse(Decimal(1) < None) + self.assertTrue(Decimal(1) > None) def test_copy_and_deepcopy_methods(self): d = Decimal('43.24') @@ -1704,11 +1711,14 @@ for flag in extra_flags: if flag not in expected_flags: expected_flags.append(flag) - expected_flags.sort() # flags we actually got new_flags = [k for k,v in context.flags.items() if v] - new_flags.sort() + + # Silence Py3k warning + with check_warnings(): + expected_flags.sort() + new_flags.sort() self.assertEqual(ans, new_ans, "operation produces different answers depending on flags set: " + Modified: python/trunk/Lib/test/test_descr.py ============================================================================== --- python/trunk/Lib/test/test_descr.py (original) +++ python/trunk/Lib/test/test_descr.py Fri Jan 8 19:41:40 2010 @@ -4598,9 +4598,19 @@ def test_main(): - # Run all local test cases, with PTypesLongInitTest first. - test_support.run_unittest(PTypesLongInitTest, OperatorsTest, - ClassPropertiesAndMethods, DictProxyTests) + with warnings.catch_warnings(): + # Silence Py3k warnings + warnings.filterwarnings("ignore", "classic .+ division", + DeprecationWarning) + warnings.filterwarnings("ignore", "coerce.. not supported", + DeprecationWarning) + warnings.filterwarnings("ignore", "Overriding __cmp__ ", + DeprecationWarning) + warnings.filterwarnings("ignore", ".+slice__ has been removed", + DeprecationWarning) + # Run all local test cases, with PTypesLongInitTest first. + test_support.run_unittest(PTypesLongInitTest, OperatorsTest, + ClassPropertiesAndMethods, DictProxyTests) if __name__ == "__main__": test_main() Modified: python/trunk/Lib/test/test_descrtut.py ============================================================================== --- python/trunk/Lib/test/test_descrtut.py (original) +++ python/trunk/Lib/test/test_descrtut.py Fri Jan 8 19:41:40 2010 @@ -66,7 +66,7 @@ statement or the built-in function eval(): >>> def sorted(seq): - ... seq.sort() + ... seq.sort(key=str) ... return seq >>> print sorted(a.keys()) [1, 2] Modified: python/trunk/Lib/test/test_dict.py ============================================================================== --- python/trunk/Lib/test/test_dict.py (original) +++ python/trunk/Lib/test/test_dict.py Fri Jan 8 19:41:40 2010 @@ -33,8 +33,12 @@ self.assertEqual(d.keys(), []) d = {'a': 1, 'b': 2} k = d.keys() - self.assertTrue(d.has_key('a')) - self.assertTrue(d.has_key('b')) + self.assertTrue('a' in d) + self.assertTrue('b' in d) + # Silence Py3k warning + with test_support.check_warnings(): + self.assertTrue(d.has_key('a')) + self.assertTrue(d.has_key('b')) self.assertRaises(TypeError, d.keys, None) @@ -57,14 +61,16 @@ def test_has_key(self): d = {} - self.assertTrue(not d.has_key('a')) + self.assertTrue('a' not in d) + # Silence Py3k warning + with test_support.check_warnings(): + self.assertTrue(not d.has_key('a')) + self.assertRaises(TypeError, d.has_key) d = {'a': 1, 'b': 2} k = d.keys() k.sort() self.assertEqual(k, ['a', 'b']) - self.assertRaises(TypeError, d.has_key) - def test_contains(self): d = {} self.assertTrue(not ('a' in d)) @@ -395,8 +401,6 @@ self.assertRaises(Exc, repr, d) def test_le(self): - self.assertTrue(not ({} < {})) - self.assertTrue(not ({1: 2} < {1L: 2L})) class Exc(Exception): pass @@ -408,12 +412,18 @@ d1 = {BadCmp(): 1} d2 = {1: 1} - try: - d1 < d2 - except Exc: - pass - else: - self.fail("< didn't raise Exc") + + # Silence Py3k warning + with test_support.check_warnings(): + self.assertTrue(not ({} < {})) + self.assertTrue(not ({1: 2} < {1L: 2L})) + + try: + d1 < d2 + except Exc: + pass + else: + self.fail("< didn't raise Exc") def test_missing(self): # Make sure dict doesn't have a __missing__ method @@ -501,7 +511,9 @@ 'd.pop(x2)', 'd.update({x2: 2})']: try: - exec stmt in locals() + # Silence Py3k warning + with test_support.check_warnings(): + exec stmt in locals() except CustomException: pass else: @@ -549,7 +561,7 @@ # Bug #3537: if an empty but presized dict with a size larger # than 7 was in the freelist, it triggered an assertion failure try: - d = {'a': 1/0, 'b': None, 'c': None, 'd': None, 'e': None, + d = {'a': 1 // 0, 'b': None, 'c': None, 'd': None, 'e': None, 'f': None, 'g': None, 'h': None} except ZeroDivisionError: pass Modified: python/trunk/Lib/test/test_exceptions.py ============================================================================== --- python/trunk/Lib/test/test_exceptions.py (original) +++ python/trunk/Lib/test/test_exceptions.py Fri Jan 8 19:41:40 2010 @@ -7,7 +7,7 @@ import warnings from test.test_support import TESTFN, unlink, run_unittest, captured_output -from test.test_pep352 import ignore_message_warning +from test.test_pep352 import ignore_deprecation_warnings # XXX This is not really enough, each *operation* should be tested! @@ -17,6 +17,7 @@ # Reloading the built-in exceptions module failed prior to Py2.2, while it # should act the same as reloading built-in sys. try: + from imp import reload import exceptions reload(exceptions) except ImportError, e: @@ -108,11 +109,11 @@ self.assertRaises(ValueError, chr, 10000) self.raise_catch(ZeroDivisionError, "ZeroDivisionError") - try: x = 1/0 + try: x = 1 // 0 except ZeroDivisionError: pass self.raise_catch(Exception, "Exception") - try: x = 1/0 + try: x = 1 // 0 except Exception, e: pass def testSyntaxErrorMessage(self): @@ -197,6 +198,7 @@ self.assertEqual(WindowsError(1001, "message").errno, 22) self.assertEqual(WindowsError(1001, "message").winerror, 1001) + @ignore_deprecation_warnings def testAttributes(self): # test that exception attributes are happy @@ -274,34 +276,32 @@ except NameError: pass - with warnings.catch_warnings(): - ignore_message_warning() - for exc, args, expected in exceptionList: - try: - raise exc(*args) - except BaseException, e: - if type(e) is not exc: - raise - # Verify module name - self.assertEquals(type(e).__module__, 'exceptions') - # Verify no ref leaks in Exc_str() - s = str(e) - for checkArgName in expected: - self.assertEquals(repr(getattr(e, checkArgName)), - repr(expected[checkArgName]), - 'exception "%s", attribute "%s"' % - (repr(e), checkArgName)) - - # test for pickling support - for p in pickle, cPickle: - for protocol in range(p.HIGHEST_PROTOCOL + 1): - new = p.loads(p.dumps(e, protocol)) - for checkArgName in expected: - got = repr(getattr(new, checkArgName)) - want = repr(expected[checkArgName]) - self.assertEquals(got, want, - 'pickled "%r", attribute "%s"' % - (e, checkArgName)) + for exc, args, expected in exceptionList: + try: + raise exc(*args) + except BaseException, e: + if type(e) is not exc: + raise + # Verify module name + self.assertEquals(type(e).__module__, 'exceptions') + # Verify no ref leaks in Exc_str() + s = str(e) + for checkArgName in expected: + self.assertEquals(repr(getattr(e, checkArgName)), + repr(expected[checkArgName]), + 'exception "%s", attribute "%s"' % + (repr(e), checkArgName)) + + # test for pickling support + for p in pickle, cPickle: + for protocol in range(p.HIGHEST_PROTOCOL + 1): + new = p.loads(p.dumps(e, protocol)) + for checkArgName in expected: + got = repr(getattr(new, checkArgName)) + want = repr(expected[checkArgName]) + self.assertEquals(got, want, + 'pickled "%r", attribute "%s"' % + (e, checkArgName)) def testDeprecatedMessageAttribute(self): @@ -330,6 +330,7 @@ with self.assertRaises(AttributeError): exc.message + @ignore_deprecation_warnings def testPickleMessageAttribute(self): # Pickling with message attribute must work, as well. e = Exception("foo") @@ -337,9 +338,7 @@ f.message = "bar" for p in pickle, cPickle: ep = p.loads(p.dumps(e)) - with warnings.catch_warnings(): - ignore_message_warning() - self.assertEqual(ep.message, "foo") + self.assertEqual(ep.message, "foo") fp = p.loads(p.dumps(f)) self.assertEqual(fp.message, "bar") @@ -348,7 +347,12 @@ # going through the 'args' attribute. args = (1, 2, 3) exc = BaseException(*args) - self.assertEqual(exc[:], args) + self.assertEqual(exc.args[:], args) + with warnings.catch_warnings(): + # Silence Py3k warning + warnings.filterwarnings("ignore", "__getslice__ not supported for " + "exception classes", DeprecationWarning) + self.assertEqual(exc[:], args) def testKeywordArgs(self): # test that builtin exception don't take keyword args, Modified: python/trunk/Lib/test/test_file.py ============================================================================== --- python/trunk/Lib/test/test_file.py (original) +++ python/trunk/Lib/test/test_file.py Fri Jan 8 19:41:40 2010 @@ -127,7 +127,7 @@ self.assertEquals(self.f.__exit__(None, None, None), None) # it must also return None if an exception was given try: - 1/0 + 1 // 0 except: self.assertEquals(self.f.__exit__(*sys.exc_info()), None) Modified: python/trunk/Lib/test/test_file2k.py ============================================================================== --- python/trunk/Lib/test/test_file2k.py (original) +++ python/trunk/Lib/test/test_file2k.py Fri Jan 8 19:41:40 2010 @@ -34,13 +34,17 @@ def testAttributes(self): # verify expected attributes exist f = self.f - softspace = f.softspace + # Silence Py3k warning + with test_support.check_warnings(): + softspace = f.softspace f.name # merely shouldn't blow up f.mode # ditto f.closed # ditto - # verify softspace is writable - f.softspace = softspace # merely shouldn't blow up + # Silence Py3k warning + with test_support.check_warnings(): + # verify softspace is writable + f.softspace = softspace # merely shouldn't blow up # verify the others aren't for attr in 'name', 'mode', 'closed': @@ -98,7 +102,8 @@ def testMethods(self): methods = ['fileno', 'flush', 'isatty', 'next', 'read', 'readinto', 'readline', 'readlines', 'seek', 'tell', 'truncate', - 'write', 'xreadlines', '__iter__'] + 'write', '__iter__'] + deprecated_methods = ['xreadlines'] if sys.platform.startswith('atheos'): methods.remove('truncate') @@ -110,13 +115,18 @@ method = getattr(self.f, methodname) # should raise on closed file self.assertRaises(ValueError, method) + # Silence Py3k warning + with test_support.check_warnings(): + for methodname in deprecated_methods: + method = getattr(self.f, methodname) + self.assertRaises(ValueError, method) self.assertRaises(ValueError, self.f.writelines, []) # file is closed, __exit__ shouldn't do anything self.assertEquals(self.f.__exit__(None, None, None), None) # it must also return None if an exception was given try: - 1/0 + 1 // 0 except: self.assertEquals(self.f.__exit__(*sys.exc_info()), None) @@ -182,12 +192,12 @@ try: f = open(TESTFN, bad_mode) except ValueError, msg: - if msg[0] != 0: + if msg.args[0] != 0: s = str(msg) if s.find(TESTFN) != -1 or s.find(bad_mode) == -1: self.fail("bad error message for invalid mode: %s" % s) - # if msg[0] == 0, we're probably on Windows where there may be - # no obvious way to discover why open() failed. + # if msg.args[0] == 0, we're probably on Windows where there may + # be no obvious way to discover why open() failed. else: f.close() self.fail("no error for invalid mode: %s" % bad_mode) Modified: python/trunk/Lib/test/test_fractions.py ============================================================================== --- python/trunk/Lib/test/test_fractions.py (original) +++ python/trunk/Lib/test/test_fractions.py Fri Jan 8 19:41:40 2010 @@ -43,6 +43,10 @@ assert False, "__sub__ should not be invoked for comparisons" __rsub__ = __sub__ + # Silence Py3k warning + def __hash__(self): + assert False, "__hash__ should not be invoked for comparisons" + class DummyRational(object): """Test comparison of Fraction with a naive rational implementation.""" @@ -76,6 +80,11 @@ def __float__(self): assert False, "__float__ should not be invoked" + # Silence Py3k warning + def __hash__(self): + assert False, "__hash__ should not be invoked for comparisons" + + class GcdTest(unittest.TestCase): def testMisc(self): Modified: python/trunk/Lib/test/test_ftplib.py ============================================================================== --- python/trunk/Lib/test/test_ftplib.py (original) +++ python/trunk/Lib/test/test_ftplib.py Fri Jan 8 19:41:40 2010 @@ -100,7 +100,7 @@ sock.listen(5) sock.settimeout(2) ip, port = sock.getsockname()[:2] - ip = ip.replace('.', ','); p1 = port / 256; p2 = port % 256 + ip = ip.replace('.', ','); p1, p2 = divmod(port, 256) self.push('227 entering passive mode (%s,%d,%d)' %(ip, p1, p2)) conn, addr = sock.accept() self.dtp = self.dtp_handler(conn, baseclass=self) Modified: python/trunk/Lib/test/test_functools.py ============================================================================== --- python/trunk/Lib/test/test_functools.py (original) +++ python/trunk/Lib/test/test_functools.py Fri Jan 8 19:41:40 2010 @@ -116,7 +116,7 @@ def test_error_propagation(self): def f(x, y): - x / y + x // y self.assertRaises(ZeroDivisionError, self.thetype(f, 1, 0)) self.assertRaises(ZeroDivisionError, self.thetype(f, 1), 0) self.assertRaises(ZeroDivisionError, self.thetype(f), 1, 0) Modified: python/trunk/Lib/test/test_grammar.py ============================================================================== --- python/trunk/Lib/test/test_grammar.py (original) +++ python/trunk/Lib/test/test_grammar.py Fri Jan 8 19:41:40 2010 @@ -11,6 +11,7 @@ from test.test_support import run_unittest, check_syntax_error import unittest import sys +import warnings # testing import * from sys import * @@ -152,8 +153,9 @@ f1(*(), **{}) def f2(one_argument): pass def f3(two, arguments): pass - def f4(two, (compound, (argument, list))): pass - def f5((compound, first), two): pass + # Silence Py3k warning + exec('def f4(two, (compound, (argument, list))): pass') + exec('def f5((compound, first), two): pass') self.assertEquals(f2.func_code.co_varnames, ('one_argument',)) self.assertEquals(f3.func_code.co_varnames, ('two', 'arguments')) if sys.platform.startswith('java'): @@ -172,7 +174,8 @@ def v0(*rest): pass def v1(a, *rest): pass def v2(a, b, *rest): pass - def v3(a, (b, c), *rest): return a, b, c, rest + # Silence Py3k warning + exec('def v3(a, (b, c), *rest): return a, b, c, rest') f1() f2(1) @@ -277,9 +280,10 @@ d22v(*(1, 2, 3, 4)) d22v(1, 2, *(3, 4, 5)) d22v(1, *(2, 3), **{'d': 4}) - def d31v((x)): pass + # Silence Py3k warning + exec('def d31v((x)): pass') + exec('def d32v((x,)): pass') d31v(1) - def d32v((x,)): pass d32v((1,)) # keyword arguments after *arglist @@ -474,7 +478,7 @@ continue except: raise - if count > 2 or big_hippo <> 1: + if count > 2 or big_hippo != 1: self.fail("continue then break in try/except in loop broken!") test_inner() @@ -677,7 +681,6 @@ x = (1 == 1) if 1 == 1: pass if 1 != 1: pass - if 1 <> 1: pass if 1 < 1: pass if 1 > 1: pass if 1 <= 1: pass @@ -686,7 +689,10 @@ if 1 is not 1: pass if 1 in (): pass if 1 not in (): pass - if 1 < 1 > 1 == 1 >= 1 <= 1 <> 1 != 1 in 1 not in 1 is 1 is not 1: pass + if 1 < 1 > 1 == 1 >= 1 <= 1 != 1 in 1 not in 1 is 1 is not 1: pass + # Silence Py3k warning + if eval('1 <> 1'): pass + if eval('1 < 1 > 1 == 1 >= 1 <= 1 <> 1 != 1 in 1 not in 1 is 1 is not 1'): pass def testBinaryMaskOps(self): x = 1 & 1 @@ -769,9 +775,10 @@ x = {'one': 1, 'two': 2,} x = {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6} - x = `x` - x = `1 or 2 or 3` - self.assertEqual(`1,2`, '(1, 2)') + # Silence Py3k warning + x = eval('`x`') + x = eval('`1 or 2 or 3`') + self.assertEqual(eval('`1,2`'), '(1, 2)') x = x x = 'x' @@ -976,7 +983,19 @@ def test_main(): - run_unittest(TokenTests, GrammarTests) + with warnings.catch_warnings(): + # Silence Py3k warnings + warnings.filterwarnings("ignore", "backquote not supported", + SyntaxWarning) + warnings.filterwarnings("ignore", "tuple parameter unpacking has been removed", + SyntaxWarning) + warnings.filterwarnings("ignore", "parenthesized argument names are invalid", + SyntaxWarning) + warnings.filterwarnings("ignore", "classic int division", + DeprecationWarning) + warnings.filterwarnings("ignore", ".+ not supported in 3.x", + DeprecationWarning) + run_unittest(TokenTests, GrammarTests) if __name__ == '__main__': test_main() Modified: python/trunk/Lib/test/test_gzip.py ============================================================================== --- python/trunk/Lib/test/test_gzip.py (original) +++ python/trunk/Lib/test/test_gzip.py Fri Jan 8 19:41:40 2010 @@ -246,11 +246,11 @@ self.fail("__enter__ on a closed file didn't raise an exception") try: with gzip.GzipFile(self.filename, "wb") as f: - 1/0 + 1 // 0 except ZeroDivisionError: pass else: - self.fail("1/0 didn't raise an exception") + self.fail("1 // 0 didn't raise an exception") def test_main(verbose=None): test_support.run_unittest(TestGzip) Modified: python/trunk/Lib/test/test_heapq.py ============================================================================== --- python/trunk/Lib/test/test_heapq.py (original) +++ python/trunk/Lib/test/test_heapq.py Fri Jan 8 19:41:40 2010 @@ -356,7 +356,8 @@ for f in (self.module.nlargest, self.module.nsmallest): for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)): for g in (G, I, Ig, L, R): - self.assertEqual(f(2, g(s)), f(2,s)) + with test_support.check_warnings(): + self.assertEqual(f(2, g(s)), f(2,s)) self.assertEqual(f(2, S(s)), []) self.assertRaises(TypeError, f, 2, X(s)) self.assertRaises(TypeError, f, 2, N(s)) Modified: python/trunk/Lib/test/test_hotshot.py ============================================================================== --- python/trunk/Lib/test/test_hotshot.py (original) +++ python/trunk/Lib/test/test_hotshot.py Fri Jan 8 19:41:40 2010 @@ -1,5 +1,3 @@ -import hotshot -import hotshot.log import os import pprint import unittest @@ -9,6 +7,8 @@ from test import test_support +# Silence Py3k warning +hotshot = test_support.import_module('hotshot', deprecated=True) from hotshot.log import ENTER, EXIT, LINE Modified: python/trunk/Lib/test/test_import.py ============================================================================== --- python/trunk/Lib/test/test_import.py (original) +++ python/trunk/Lib/test/test_import.py Fri Jan 8 19:41:40 2010 @@ -7,6 +7,7 @@ import py_compile import warnings import marshal +from imp import reload from test.test_support import (unlink, TESTFN, unload, run_unittest, check_warnings, TestFailed, EnvironmentVarGuard) @@ -56,11 +57,10 @@ f.close() try: - try: - mod = __import__(TESTFN) - except ImportError, err: - self.fail("import from %s failed: %s" % (ext, err)) - + mod = __import__(TESTFN) + except ImportError, err: + self.fail("import from %s failed: %s" % (ext, err)) + else: self.assertEquals(mod.a, a, "module loaded (%s) but contents invalid" % mod) self.assertEquals(mod.b, b, @@ -69,10 +69,9 @@ os.unlink(source) try: - try: - reload(mod) - except ImportError, err: - self.fail("import from .pyc/.pyo failed: %s" % err) + reload(mod) + except ImportError, err: + self.fail("import from .pyc/.pyo failed: %s" % err) finally: try: os.unlink(pyc) @@ -172,7 +171,7 @@ def test_failing_import_sticks(self): source = TESTFN + os.extsep + "py" f = open(source, "w") - print >> f, "a = 1/0" + print >> f, "a = 1 // 0" f.close() # New in 2.4, we shouldn't be able to import that no matter how often Modified: python/trunk/Lib/test/test_importhooks.py ============================================================================== --- python/trunk/Lib/test/test_importhooks.py (original) +++ python/trunk/Lib/test/test_importhooks.py Fri Jan 8 19:41:40 2010 @@ -180,7 +180,7 @@ self.assertFalse(hasattr(reloadmodule,'reloaded')) TestImporter.modules['reloadmodule'] = (False, reload_co) - reload(reloadmodule) + imp.reload(reloadmodule) self.assertTrue(hasattr(reloadmodule,'reloaded')) import hooktestpackage.oldabs @@ -247,9 +247,11 @@ for n in sys.modules.keys(): if n.startswith(parent): del sys.modules[n] - for mname in mnames: - m = __import__(mname, globals(), locals(), ["__dummy__"]) - m.__loader__ # to make sure we actually handled the import + # Silence Py3k warning + with test_support.check_warnings(): + for mname in mnames: + m = __import__(mname, globals(), locals(), ["__dummy__"]) + m.__loader__ # to make sure we actually handled the import def test_main(): Modified: python/trunk/Lib/test/test_inspect.py ============================================================================== --- python/trunk/Lib/test/test_inspect.py (original) +++ python/trunk/Lib/test/test_inspect.py Fri Jan 8 19:41:40 2010 @@ -4,10 +4,11 @@ import inspect import datetime -from test.test_support import TESTFN, run_unittest +from test.test_support import TESTFN, run_unittest, check_warnings -from test import inspect_fodder as mod -from test import inspect_fodder2 as mod2 +with check_warnings(): + from test import inspect_fodder as mod + from test import inspect_fodder2 as mod2 # C module for test_findsource_binary import unicodedata @@ -29,7 +30,7 @@ import __builtin__ try: - 1/0 + 1 // 0 except: tb = sys.exc_traceback @@ -167,7 +168,7 @@ self.assertEqual(git.tr[1][1:], (modfile, 9, 'spam', [' eggs(b + d, c + f)\n'], 0)) self.assertEqual(git.tr[2][1:], (modfile, 18, 'eggs', - [' q = y / 0\n'], 0)) + [' q = y // 0\n'], 0)) def test_frame(self): args, varargs, varkw, locals = inspect.getargvalues(mod.fr) @@ -418,11 +419,13 @@ self.assertArgSpecEquals(A.m, ['self']) def test_getargspec_sublistofone(self): - def sublistOfOne((foo,)): return 1 - self.assertArgSpecEquals(sublistOfOne, [['foo']]) + # Silence Py3k warning + with check_warnings(): + exec 'def sublistOfOne((foo,)): return 1' + self.assertArgSpecEquals(sublistOfOne, [['foo']]) - def fakeSublistOfOne((foo)): return 1 - self.assertArgSpecEquals(fakeSublistOfOne, ['foo']) + exec 'def fakeSublistOfOne((foo)): return 1' + self.assertArgSpecEquals(fakeSublistOfOne, ['foo']) def test_classify_oldstyle(self): class A: Modified: python/trunk/Lib/test/test_io.py ============================================================================== --- python/trunk/Lib/test/test_io.py (original) +++ python/trunk/Lib/test/test_io.py Fri Jan 8 19:41:40 2010 @@ -381,11 +381,11 @@ f = None try: with self.open(support.TESTFN, "wb", bufsize) as f: - 1/0 + 1 // 0 except ZeroDivisionError: self.assertEqual(f.closed, True) else: - self.fail("1/0 didn't raise an exception") + self.fail("1 // 0 didn't raise an exception") # issue 5008 def test_append_mode_tell(self): Modified: python/trunk/Lib/test/test_iter.py ============================================================================== --- python/trunk/Lib/test/test_iter.py (original) +++ python/trunk/Lib/test/test_iter.py Fri Jan 8 19:41:40 2010 @@ -1,7 +1,8 @@ # Test iterators. import unittest -from test.test_support import run_unittest, TESTFN, unlink, have_unicode +from test.test_support import run_unittest, TESTFN, unlink, have_unicode, \ + check_warnings # Test result of triple loop (too big to inline) TRIPLETS = [(0, 0, 0), (0, 0, 1), (0, 0, 2), @@ -395,7 +396,12 @@ pass # Test map()'s use of iterators. - def test_builtin_map(self): + def test_deprecated_builtin_map(self): + # Silence Py3k warning + with check_warnings(): + self._test_builtin_map() + + def _test_builtin_map(self): self.assertEqual(map(None, SequenceClass(5)), range(5)) self.assertEqual(map(lambda x: x+1, SequenceClass(5)), range(1, 6)) @@ -506,7 +512,12 @@ self.assertEqual(zip(x, y), expected) # Test reduces()'s use of iterators. - def test_builtin_reduce(self): + def test_deprecated_builtin_reduce(self): + # Silence Py3k warning + with check_warnings(): + self._test_builtin_reduce() + + def _test_builtin_reduce(self): from operator import add self.assertEqual(reduce(add, SequenceClass(5)), 10) self.assertEqual(reduce(add, SequenceClass(5), 42), 52) Modified: python/trunk/Lib/test/test_itertools.py ============================================================================== --- python/trunk/Lib/test/test_itertools.py (original) +++ python/trunk/Lib/test/test_itertools.py Fri Jan 8 19:41:40 2010 @@ -9,6 +9,7 @@ import random import copy import pickle +from functools import reduce maxsize = test_support.MAX_Py_ssize_t minsize = -maxsize-1 @@ -122,7 +123,7 @@ values = [5*x-12 for x in range(n)] for r in range(n+2): result = list(combinations(values, r)) - self.assertEqual(len(result), 0 if r>n else fact(n) / fact(r) / fact(n-r)) # right number of combs + self.assertEqual(len(result), 0 if r>n else fact(n) // fact(r) // fact(n-r)) # right number of combs self.assertEqual(len(result), len(set(result))) # no repeats self.assertEqual(result, sorted(result)) # lexicographic order for c in result: @@ -178,7 +179,7 @@ def numcombs(n, r): if not n: return 0 if r else 1 - return fact(n+r-1) / fact(r)/ fact(n-1) + return fact(n+r-1) // fact(r) // fact(n-1) for n in range(7): values = [5*x-12 for x in range(n)] @@ -257,7 +258,7 @@ values = [5*x-12 for x in range(n)] for r in range(n+2): result = list(permutations(values, r)) - self.assertEqual(len(result), 0 if r>n else fact(n) / fact(n-r)) # right number of perms + self.assertEqual(len(result), 0 if r>n else fact(n) // fact(n-r)) # right number of perms self.assertEqual(len(result), len(set(result))) # no repeats self.assertEqual(result, sorted(result)) # lexicographic order for p in result: @@ -288,9 +289,9 @@ # Check size self.assertEquals(len(prod), n**r) - self.assertEquals(len(cwr), (fact(n+r-1) / fact(r)/ fact(n-1)) if n else (not r)) - self.assertEquals(len(perm), 0 if r>n else fact(n) / fact(n-r)) - self.assertEquals(len(comb), 0 if r>n else fact(n) / fact(r) / fact(n-r)) + self.assertEquals(len(cwr), (fact(n+r-1) // fact(r) // fact(n-1)) if n else (not r)) + self.assertEquals(len(perm), 0 if r>n else fact(n) // fact(n-r)) + self.assertEquals(len(comb), 0 if r>n else fact(n) // fact(r) // fact(n-r)) # Check lexicographic order without repeated tuples self.assertEquals(prod, sorted(set(prod))) @@ -543,7 +544,8 @@ [range(1000), range(0), range(3000,3050), range(1200), range(1500)], [range(1000), range(0), range(3000,3050), range(1200), range(1500), range(0)], ]: - target = map(None, *args) + target = [tuple([arg[i] if i < len(arg) else None for arg in args]) + for i in range(max(map(len, args)))] self.assertEqual(list(izip_longest(*args)), target) self.assertEqual(list(izip_longest(*args, **{})), target) target = [tuple((e is None and 'X' or e) for e in t) for t in target] # Replace None fills with 'X' @@ -555,7 +557,8 @@ self.assertEqual(list(izip_longest([])), zip([])) self.assertEqual(list(izip_longest('abcdef')), zip('abcdef')) - self.assertEqual(list(izip_longest('abc', 'defg', **{})), map(None, 'abc', 'defg')) # empty keyword dict + self.assertEqual(list(izip_longest('abc', 'defg', **{})), + zip(list('abc') + [None], 'defg')) # empty keyword dict self.assertRaises(TypeError, izip_longest, 3) self.assertRaises(TypeError, izip_longest, range(3), 3) @@ -1431,7 +1434,7 @@ # is differencing with a range so that consecutive numbers all appear in # same group. >>> data = [ 1, 4,5,6, 10, 15,16,17,18, 22, 25,26,27,28] ->>> for k, g in groupby(enumerate(data), lambda (i,x):i-x): +>>> for k, g in groupby(enumerate(data), lambda t:t[0]-t[1]): ... print map(operator.itemgetter(1), g) ... [1] Modified: python/trunk/Lib/test/test_json.py ============================================================================== --- python/trunk/Lib/test/test_json.py (original) +++ python/trunk/Lib/test/test_json.py Fri Jan 8 19:41:40 2010 @@ -7,10 +7,15 @@ import json.tests import test.test_support +import warnings def test_main(): - test.test_support.run_unittest(json.tests.test_suite()) + with warnings.catch_warnings(): + # Silence Py3k warning + warnings.filterwarnings("ignore", "comparing unequal types " + "not supported", DeprecationWarning) + test.test_support.run_unittest(json.tests.test_suite()) if __name__ == "__main__": Modified: python/trunk/Lib/test/test_linuxaudiodev.py ============================================================================== --- python/trunk/Lib/test/test_linuxaudiodev.py (original) +++ python/trunk/Lib/test/test_linuxaudiodev.py Fri Jan 8 19:41:40 2010 @@ -4,12 +4,13 @@ from test.test_support import findfile, run_unittest import errno -linuxaudiodev = test_support.import_module('linuxaudiodev', deprecated=True) import sys -import sunaudio import audioop import unittest +linuxaudiodev = test_support.import_module('linuxaudiodev', deprecated=True) +sunaudio = test_support.import_module('sunaudio', deprecated=True) + SND_FORMAT_MULAW_8 = 1 class LinuxAudioDevTests(unittest.TestCase): Modified: python/trunk/Lib/test/test_long.py ============================================================================== --- python/trunk/Lib/test/test_long.py (original) +++ python/trunk/Lib/test/test_long.py Fri Jan 8 19:41:40 2010 @@ -575,11 +575,13 @@ def __getslice__(self, i, j): return i, j - self.assertEqual(X()[-5L:7L], (-5, 7)) - # use the clamping effect to test the smallest and largest longs - # that fit a Py_ssize_t - slicemin, slicemax = X()[-2L**100:2L**100] - self.assertEqual(X()[slicemin:slicemax], (slicemin, slicemax)) + # Silence Py3k warning + with test_support.check_warnings(): + self.assertEqual(X()[-5L:7L], (-5, 7)) + # use the clamping effect to test the smallest and largest longs + # that fit a Py_ssize_t + slicemin, slicemax = X()[-2L**100:2L**100] + self.assertEqual(X()[slicemin:slicemax], (slicemin, slicemax)) # ----------------------------------- tests of auto int->long conversion @@ -619,8 +621,10 @@ checkit(x, '*', y) if y: - expected = longx / longy - got = x / y + # Silence Py3k warning + with test_support.check_warnings(): + expected = longx / longy + got = x / y checkit(x, '/', y) expected = longx // longy Modified: python/trunk/Lib/test/test_mailbox.py ============================================================================== --- python/trunk/Lib/test/test_mailbox.py (original) +++ python/trunk/Lib/test/test_mailbox.py Fri Jan 8 19:41:40 2010 @@ -5,7 +5,6 @@ import socket import email import email.message -import rfc822 import re import StringIO from test import test_support @@ -17,6 +16,8 @@ except ImportError: pass +# Silence Py3k warning +rfc822 = test_support.import_module('rfc822') class TestBase(unittest.TestCase): Modified: python/trunk/Lib/test/test_marshal.py ============================================================================== --- python/trunk/Lib/test/test_marshal.py (original) +++ python/trunk/Lib/test/test_marshal.py Fri Jan 8 19:41:40 2010 @@ -129,7 +129,9 @@ def test_buffer(self): for s in ["", "Andr? Previn", "abc", " "*10000]: - b = buffer(s) + # Silence Py3k warning + with test_support.check_warnings(): + b = buffer(s) new = marshal.loads(marshal.dumps(b)) self.assertEqual(s, new) marshal.dump(b, file(test_support.TESTFN, "wb")) Modified: python/trunk/Lib/test/test_multibytecodec_support.py ============================================================================== --- python/trunk/Lib/test/test_multibytecodec_support.py (original) +++ python/trunk/Lib/test/test_multibytecodec_support.py Fri Jan 8 19:41:40 2010 @@ -307,7 +307,7 @@ continue unich = unichrs(data[1]) - if ord(unich) == 0xfffd or urt_wa.has_key(unich): + if ord(unich) == 0xfffd or unich in urt_wa: continue urt_wa[unich] = csetch Modified: python/trunk/Lib/test/test_multifile.py ============================================================================== --- python/trunk/Lib/test/test_multifile.py (original) +++ python/trunk/Lib/test/test_multifile.py Fri Jan 8 19:41:40 2010 @@ -1,5 +1,5 @@ from test import test_support -import mimetools +mimetools = test_support.import_module("mimetools", deprecated=True) multifile = test_support.import_module('multifile', deprecated=True) import cStringIO Modified: python/trunk/Lib/test/test_multiprocessing.py ============================================================================== --- python/trunk/Lib/test/test_multiprocessing.py (original) +++ python/trunk/Lib/test/test_multiprocessing.py Fri Jan 8 19:41:40 2010 @@ -19,6 +19,7 @@ import logging from test import test_support from StringIO import StringIO +import warnings _multiprocessing = test_support.import_module('_multiprocessing') @@ -1991,7 +1992,11 @@ loadTestsFromTestCase = unittest.defaultTestLoader.loadTestsFromTestCase suite = unittest.TestSuite(loadTestsFromTestCase(tc) for tc in testcases) - run(suite) + with warnings.catch_warnings(): + # Silence Py3k warnings + warnings.filterwarnings("ignore", ".+slice__ has been removed", + DeprecationWarning) + run(suite) ThreadsMixin.pool.terminate() ProcessesMixin.pool.terminate() Modified: python/trunk/Lib/test/test_mutants.py ============================================================================== --- python/trunk/Lib/test/test_mutants.py (original) +++ python/trunk/Lib/test/test_mutants.py Fri Jan 8 19:41:40 2010 @@ -210,7 +210,7 @@ # Tim sez: "luck of the draw; crashes with or without for me." print >> f - return `"machiavelli"` + return repr("machiavelli") def __hash__(self): return 0 Modified: python/trunk/Lib/test/test_opcodes.py ============================================================================== --- python/trunk/Lib/test/test_opcodes.py (original) +++ python/trunk/Lib/test/test_opcodes.py Fri Jan 8 19:41:40 2010 @@ -2,6 +2,7 @@ from test.test_support import run_unittest import unittest +import warnings class OpcodeTest(unittest.TestCase): @@ -9,7 +10,7 @@ n = 0 for i in range(10): n = n+i - try: 1/0 + try: 1 // 0 except NameError: pass except ZeroDivisionError: pass except TypeError: pass @@ -110,7 +111,14 @@ def test_main(): - run_unittest(OpcodeTest) + with warnings.catch_warnings(): + # Silence Py3k warning + warnings.filterwarnings("ignore", "exceptions must derive from " + "BaseException", DeprecationWarning) + warnings.filterwarnings("ignore", "catching classes that don't " + "inherit from BaseException is not allowed", + DeprecationWarning) + run_unittest(OpcodeTest) if __name__ == '__main__': test_main() Modified: python/trunk/Lib/test/test_operator.py ============================================================================== --- python/trunk/Lib/test/test_operator.py (original) +++ python/trunk/Lib/test/test_operator.py Fri Jan 8 19:41:40 2010 @@ -192,11 +192,12 @@ class C: pass def check(self, o, v): - self.assertTrue(operator.isCallable(o) == callable(o) == v) - check(self, 4, 0) - check(self, operator.isCallable, 1) - check(self, C, 1) - check(self, C(), 0) + with test_support.check_warnings(): + self.assertTrue(operator.isCallable(o) == callable(o) == v) + check(self, 4, False) + check(self, operator.isCallable, True) + check(self, C, True) + check(self, C(), False) def test_isMappingType(self): self.assertRaises(TypeError, operator.isMappingType) @@ -306,8 +307,10 @@ self.assertRaises(TypeError, operator.contains, None, None) self.assertTrue(operator.contains(range(4), 2)) self.assertFalse(operator.contains(range(4), 5)) - self.assertTrue(operator.sequenceIncludes(range(4), 2)) - self.assertFalse(operator.sequenceIncludes(range(4), 5)) + # Silence Py3k warning + with test_support.check_warnings(): + self.assertTrue(operator.sequenceIncludes(range(4), 2)) + self.assertFalse(operator.sequenceIncludes(range(4), 5)) def test_setitem(self): a = range(3) Modified: python/trunk/Lib/test/test_optparse.py ============================================================================== --- python/trunk/Lib/test/test_optparse.py (original) +++ python/trunk/Lib/test/test_optparse.py Fri Jan 8 19:41:40 2010 @@ -26,12 +26,6 @@ from optparse import _match_abbrev from optparse import _parse_num -# Do the right thing with boolean values for all known Python versions. -try: - True, False -except NameError: - (True, False) = (1, 0) - retype = type(re.compile('')) class InterceptedError(Exception): Modified: python/trunk/Lib/test/test_ossaudiodev.py ============================================================================== --- python/trunk/Lib/test/test_ossaudiodev.py (original) +++ python/trunk/Lib/test/test_ossaudiodev.py Fri Jan 8 19:41:40 2010 @@ -71,7 +71,7 @@ self.fail("dsp.%s not read-only" % attr) # Compute expected running time of sound sample (in seconds). - expected_time = float(len(data)) / (ssize/8) / nchannels / rate + expected_time = float(len(data)) / (ssize//8) / nchannels / rate # set parameters based on .au file headers dsp.setparameters(AFMT_S16_NE, nchannels, rate) Modified: python/trunk/Lib/test/test_peepholer.py ============================================================================== --- python/trunk/Lib/test/test_peepholer.py (original) +++ python/trunk/Lib/test/test_peepholer.py Fri Jan 8 19:41:40 2010 @@ -205,18 +205,24 @@ def test_main(verbose=None): import sys from test import test_support + import warnings test_classes = (TestTranforms,) - test_support.run_unittest(*test_classes) - # verify reference counting - if verbose and hasattr(sys, "gettotalrefcount"): - import gc - counts = [None] * 5 - for i in xrange(len(counts)): - test_support.run_unittest(*test_classes) - gc.collect() - counts[i] = sys.gettotalrefcount() - print counts + with warnings.catch_warnings(): + # Silence Py3k warning + warnings.filterwarnings("ignore", "backquote not supported", + SyntaxWarning) + test_support.run_unittest(*test_classes) + + # verify reference counting + if verbose and hasattr(sys, "gettotalrefcount"): + import gc + counts = [None] * 5 + for i in xrange(len(counts)): + test_support.run_unittest(*test_classes) + gc.collect() + counts[i] = sys.gettotalrefcount() + print counts if __name__ == "__main__": test_main(verbose=True) Modified: python/trunk/Lib/test/test_pep352.py ============================================================================== --- python/trunk/Lib/test/test_pep352.py (original) +++ python/trunk/Lib/test/test_pep352.py Fri Jan 8 19:41:40 2010 @@ -6,12 +6,23 @@ import os from platform import system as platform_system -def ignore_message_warning(): - """Ignore the DeprecationWarning for BaseException.message.""" - warnings.resetwarnings() - warnings.filterwarnings("ignore", "BaseException.message", - DeprecationWarning) - +DEPRECATION_WARNINGS = ( + "BaseException.message has been deprecated", + "exceptions must derive from BaseException", + "catching classes that don't inherit from BaseException is not allowed", + "__getitem__ not supported for exception classes", +) + +# Silence Py3k and other deprecation warnings +def ignore_deprecation_warnings(func): + """Ignore the known DeprecationWarnings.""" + def wrapper(*args, **kw): + with warnings.catch_warnings(): + warnings.resetwarnings() + for text in DEPRECATION_WARNINGS: + warnings.filterwarnings("ignore", text, DeprecationWarning) + return func(*args, **kw) + return wrapper class ExceptionClassTests(unittest.TestCase): @@ -21,14 +32,12 @@ def test_builtins_new_style(self): self.assertTrue(issubclass(Exception, object)) + @ignore_deprecation_warnings def verify_instance_interface(self, ins): - with warnings.catch_warnings(): - ignore_message_warning() - for attr in ("args", "message", "__str__", "__repr__", - "__getitem__"): - self.assertTrue(hasattr(ins, attr), - "%s missing %s attribute" % - (ins.__class__.__name__, attr)) + for attr in ("args", "message", "__str__", "__repr__", "__getitem__"): + self.assertTrue(hasattr(ins, attr), + "%s missing %s attribute" % + (ins.__class__.__name__, attr)) def test_inheritance(self): # Make sure the inheritance hierarchy matches the documentation @@ -91,43 +100,39 @@ self.assertEqual(given, expected, "%s: %s != %s" % (test_name, given, expected)) + @ignore_deprecation_warnings def test_interface_single_arg(self): # Make sure interface works properly when given a single argument arg = "spam" exc = Exception(arg) - with warnings.catch_warnings(): - ignore_message_warning() - results = ([len(exc.args), 1], [exc.args[0], arg], - [exc.message, arg], - [str(exc), str(arg)], [unicode(exc), unicode(arg)], - [repr(exc), exc.__class__.__name__ + repr(exc.args)], [exc[0], - arg]) - self.interface_test_driver(results) + results = ([len(exc.args), 1], [exc.args[0], arg], [exc.message, arg], + [str(exc), str(arg)], [unicode(exc), unicode(arg)], + [repr(exc), exc.__class__.__name__ + repr(exc.args)], + [exc[0], arg]) + self.interface_test_driver(results) + @ignore_deprecation_warnings def test_interface_multi_arg(self): # Make sure interface correct when multiple arguments given arg_count = 3 args = tuple(range(arg_count)) exc = Exception(*args) - with warnings.catch_warnings(): - ignore_message_warning() - results = ([len(exc.args), arg_count], [exc.args, args], - [exc.message, ''], [str(exc), str(args)], - [unicode(exc), unicode(args)], - [repr(exc), exc.__class__.__name__ + repr(exc.args)], - [exc[-1], args[-1]]) - self.interface_test_driver(results) + results = ([len(exc.args), arg_count], [exc.args, args], + [exc.message, ''], [str(exc), str(args)], + [unicode(exc), unicode(args)], + [repr(exc), exc.__class__.__name__ + repr(exc.args)], + [exc[-1], args[-1]]) + self.interface_test_driver(results) + @ignore_deprecation_warnings def test_interface_no_arg(self): # Make sure that with no args that interface is correct exc = Exception() - with warnings.catch_warnings(): - ignore_message_warning() - results = ([len(exc.args), 0], [exc.args, tuple()], - [exc.message, ''], - [str(exc), ''], [unicode(exc), u''], - [repr(exc), exc.__class__.__name__ + '()'], [True, True]) - self.interface_test_driver(results) + results = ([len(exc.args), 0], [exc.args, tuple()], + [exc.message, ''], + [str(exc), ''], [unicode(exc), u''], + [repr(exc), exc.__class__.__name__ + '()'], [True, True]) + self.interface_test_driver(results) def test_message_deprecation(self): @@ -179,6 +184,7 @@ self.fail("TypeError expected when catching %s as specified in a " "tuple" % type(object_)) + @ignore_deprecation_warnings def test_raise_classic(self): # Raising a classic class is okay (for now). class ClassicClass: Modified: python/trunk/Lib/test/test_pkgimport.py ============================================================================== --- python/trunk/Lib/test/test_pkgimport.py (original) +++ python/trunk/Lib/test/test_pkgimport.py Fri Jan 8 19:41:40 2010 @@ -6,14 +6,14 @@ def __init__(self, *args, **kw): self.package_name = 'PACKAGE_' - while sys.modules.has_key(self.package_name): + while self.package_name in sys.modules: self.package_name += random.choose(string.letters) self.module_name = self.package_name + '.foo' unittest.TestCase.__init__(self, *args, **kw) def remove_modules(self): for module_name in (self.package_name, self.module_name): - if sys.modules.has_key(module_name): + if module_name in sys.modules: del sys.modules[module_name] def setUp(self): @@ -52,7 +52,7 @@ try: __import__(self.module_name) except SyntaxError: pass else: raise RuntimeError, 'Failed to induce SyntaxError' - self.assertTrue(not sys.modules.has_key(self.module_name) and + self.assertTrue(self.module_name not in sys.modules and not hasattr(sys.modules[self.package_name], 'foo')) # ...make up a variable name that isn't bound in __builtins__ Modified: python/trunk/Lib/test/test_pyclbr.py ============================================================================== --- python/trunk/Lib/test/test_pyclbr.py (original) +++ python/trunk/Lib/test/test_pyclbr.py Fri Jan 8 19:41:40 2010 @@ -2,7 +2,7 @@ Test cases for pyclbr.py Nick Mathewson ''' -from test.test_support import run_unittest +from test.test_support import run_unittest, import_module import sys from types import ClassType, FunctionType, MethodType, BuiltinFunctionType import pyclbr @@ -13,6 +13,8 @@ # This next line triggers an error on old versions of pyclbr. +# Silence Py3k warning +import_module('commands', deprecated=True) from commands import getstatus # Here we test the python class browser code. @@ -40,11 +42,11 @@ def assertHaskey(self, obj, key, ignore): - ''' succeed iff obj.has_key(key) or key in ignore. ''' + ''' succeed iff key in obj or key in ignore. ''' if key in ignore: return - if not obj.has_key(key): - print >>sys.stderr, "***",key - self.assertTrue(obj.has_key(key)) + if key not in obj: + print >>sys.stderr, "***", key + self.assertTrue(key in obj) def assertEqualsOrIgnored(self, a, b, ignore): ''' succeed iff a == b or a in ignore or b in ignore ''' @@ -149,7 +151,9 @@ def test_easy(self): self.checkModule('pyclbr') self.checkModule('doctest', ignore=("DocTestCase",)) - self.checkModule('rfc822') + # Silence Py3k warning + rfc822 = import_module('rfc822', deprecated=True) + self.checkModule('rfc822', rfc822) self.checkModule('difflib') def test_decorators(self): Modified: python/trunk/Lib/test/test_pyexpat.py ============================================================================== --- python/trunk/Lib/test/test_pyexpat.py (original) +++ python/trunk/Lib/test/test_pyexpat.py Fri Jan 8 19:41:40 2010 @@ -554,7 +554,7 @@ self.n=0 parser.Parse(xml1, 0) - parser.buffer_size /= 2 + parser.buffer_size //= 2 self.assertEquals(parser.buffer_size, 1024) parser.Parse(xml2, 1) self.assertEquals(self.n, 4) Modified: python/trunk/Lib/test/test_queue.py ============================================================================== --- python/trunk/Lib/test/test_queue.py (original) +++ python/trunk/Lib/test/test_queue.py Fri Jan 8 19:41:40 2010 @@ -7,7 +7,8 @@ import unittest from test import test_support -QUEUE_SIZE = 5 +QUEUE_SIZE = LAST = 5 +FULL = LAST+1 # A thread to run a function that unclogs a blocked Queue. class _TriggerThread(threading.Thread): @@ -102,21 +103,21 @@ q.put(i) self.assertTrue(not q.empty(), "Queue should not be empty") self.assertTrue(not q.full(), "Queue should not be full") - q.put("last") + q.put(LAST) self.assertTrue(q.full(), "Queue should be full") try: - q.put("full", block=0) + q.put(FULL, block=0) self.fail("Didn't appear to block with a full queue") except Queue.Full: pass try: - q.put("full", timeout=0.01) + q.put(FULL, timeout=0.01) self.fail("Didn't appear to time-out with a full queue") except Queue.Full: pass # Test a blocking put - self.do_blocking_test(q.put, ("full",), q.get, ()) - self.do_blocking_test(q.put, ("full", True, 10), q.get, ()) + self.do_blocking_test(q.put, (FULL,), q.get, ()) + self.do_blocking_test(q.put, (FULL, True, 10), q.get, ()) # Empty it for i in range(QUEUE_SIZE): q.get() Modified: python/trunk/Lib/test/test_random.py ============================================================================== --- python/trunk/Lib/test/test_random.py (original) +++ python/trunk/Lib/test/test_random.py Fri Jan 8 19:41:40 2010 @@ -6,6 +6,7 @@ import pickle import warnings from math import log, exp, sqrt, pi, fsum, sin +from functools import reduce from test import test_support class TestBasicOps(unittest.TestCase): Modified: python/trunk/Lib/test/test_repr.py ============================================================================== --- python/trunk/Lib/test/test_repr.py (original) +++ python/trunk/Lib/test/test_repr.py Fri Jan 8 19:41:40 2010 @@ -8,7 +8,7 @@ import shutil import unittest -from test.test_support import run_unittest +from test.test_support import run_unittest, check_warnings from repr import repr as r # Don't shadow builtin repr from repr import Repr @@ -174,7 +174,9 @@ def test_buffer(self): # XXX doesn't test buffers with no b_base or read-write buffers (see # bufferobject.c). The test is fairly incomplete too. Sigh. - x = buffer('foo') + # Silence the Py3k warning + with check_warnings(): + x = buffer('foo') self.assertTrue(repr(x).startswith(' self.other) - self.assertRaises(TypeError, lambda: self.set >= self.other) - - self.assertRaises(TypeError, lambda: self.other < self.set) - self.assertRaises(TypeError, lambda: self.other <= self.set) - self.assertRaises(TypeError, lambda: self.other > self.set) - self.assertRaises(TypeError, lambda: self.other >= self.set) + with test_support.check_warnings(): + self.assertRaises(TypeError, lambda: self.set < self.other) + self.assertRaises(TypeError, lambda: self.set <= self.other) + self.assertRaises(TypeError, lambda: self.set > self.other) + self.assertRaises(TypeError, lambda: self.set >= self.other) + + self.assertRaises(TypeError, lambda: self.other < self.set) + self.assertRaises(TypeError, lambda: self.other <= self.set) + self.assertRaises(TypeError, lambda: self.other > self.set) + self.assertRaises(TypeError, lambda: self.other >= self.set) def test_update_operator(self): try: @@ -1379,20 +1380,20 @@ def test_copy(self): dup = self.set.copy() - dup_list = list(dup); dup_list.sort() - set_list = list(self.set); set_list.sort() + dup_list = list(dup) + set_list = list(self.set) self.assertEqual(len(dup_list), len(set_list)) - for i in range(len(dup_list)): - self.assertTrue(dup_list[i] is set_list[i]) + for elt in dup_list: + self.assertTrue(elt in set_list) def test_deep_copy(self): dup = copy.deepcopy(self.set) ##print type(dup), repr(dup) - dup_list = list(dup); dup_list.sort() - set_list = list(self.set); set_list.sort() + dup_list = list(dup) + set_list = list(self.set) self.assertEqual(len(dup_list), len(set_list)) - for i in range(len(dup_list)): - self.assertEqual(dup_list[i], set_list[i]) + for elt in dup_list: + self.assertTrue(elt in set_list) #------------------------------------------------------------------------------ @@ -1552,7 +1553,7 @@ for cons in (set, frozenset): for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)): for g in (G, I, Ig, S, L, R): - self.assertEqual(sorted(cons(g(s))), sorted(g(s))) + self.assertSameElements(cons(g(s)), g(s)) self.assertRaises(TypeError, cons , X(s)) self.assertRaises(TypeError, cons , N(s)) self.assertRaises(ZeroDivisionError, cons , E(s)) @@ -1567,7 +1568,7 @@ if isinstance(expected, bool): self.assertEqual(actual, expected) else: - self.assertEqual(sorted(actual), sorted(expected)) + self.assertSameElements(actual, expected) self.assertRaises(TypeError, meth, X(s)) self.assertRaises(TypeError, meth, N(s)) self.assertRaises(ZeroDivisionError, meth, E(s)) @@ -1581,7 +1582,7 @@ t = s.copy() getattr(s, methname)(list(g(data))) getattr(t, methname)(g(data)) - self.assertEqual(sorted(s), sorted(t)) + self.assertSameElements(s, t) self.assertRaises(TypeError, getattr(set('january'), methname), X(data)) self.assertRaises(TypeError, getattr(set('january'), methname), N(data)) Modified: python/trunk/Lib/test/test_sets.py ============================================================================== --- python/trunk/Lib/test/test_sets.py (original) +++ python/trunk/Lib/test/test_sets.py Fri Jan 8 19:41:40 2010 @@ -510,15 +510,17 @@ self.assertEqual(self.set != self.other, True) def test_ge_gt_le_lt(self): - self.assertRaises(TypeError, lambda: self.set < self.other) - self.assertRaises(TypeError, lambda: self.set <= self.other) - self.assertRaises(TypeError, lambda: self.set > self.other) - self.assertRaises(TypeError, lambda: self.set >= self.other) - - self.assertRaises(TypeError, lambda: self.other < self.set) - self.assertRaises(TypeError, lambda: self.other <= self.set) - self.assertRaises(TypeError, lambda: self.other > self.set) - self.assertRaises(TypeError, lambda: self.other >= self.set) + # Silence Py3k warning + with test_support.check_warnings(): + self.assertRaises(TypeError, lambda: self.set < self.other) + self.assertRaises(TypeError, lambda: self.set <= self.other) + self.assertRaises(TypeError, lambda: self.set > self.other) + self.assertRaises(TypeError, lambda: self.set >= self.other) + + self.assertRaises(TypeError, lambda: self.other < self.set) + self.assertRaises(TypeError, lambda: self.other <= self.set) + self.assertRaises(TypeError, lambda: self.other > self.set) + self.assertRaises(TypeError, lambda: self.other >= self.set) def test_union_update_operator(self): try: @@ -679,20 +681,20 @@ def test_copy(self): dup = self.set.copy() - dup_list = list(dup); dup_list.sort() - set_list = list(self.set); set_list.sort() + dup_list = list(dup) + set_list = list(self.set) self.assertEqual(len(dup_list), len(set_list)) - for i in range(len(dup_list)): - self.assertTrue(dup_list[i] is set_list[i]) + for elt in dup_list: + self.assertTrue(elt in set_list) def test_deep_copy(self): dup = copy.deepcopy(self.set) ##print type(dup), repr(dup) - dup_list = list(dup); dup_list.sort() - set_list = list(self.set); set_list.sort() + dup_list = list(dup) + set_list = list(self.set) self.assertEqual(len(dup_list), len(set_list)) - for i in range(len(dup_list)): - self.assertEqual(dup_list[i], set_list[i]) + for elt in dup_list: + self.assertTrue(elt in set_list) #------------------------------------------------------------------------------ Modified: python/trunk/Lib/test/test_shelve.py ============================================================================== --- python/trunk/Lib/test/test_shelve.py (original) +++ python/trunk/Lib/test/test_shelve.py Fri Jan 8 19:41:40 2010 @@ -4,6 +4,8 @@ import glob from test import test_support +test_support.import_module('anydbm', deprecated=True) + class TestCase(unittest.TestCase): fn = "shelftemp" + os.extsep + "db" Modified: python/trunk/Lib/test/test_site.py ============================================================================== --- python/trunk/Lib/test/test_site.py (original) +++ python/trunk/Lib/test/test_site.py Fri Jan 8 19:41:40 2010 @@ -258,7 +258,7 @@ site.abs__file__() for module in (sys, os, __builtin__): try: - self.assertTrue(os.path.isabs(module.__file__), `module`) + self.assertTrue(os.path.isabs(module.__file__), repr(module)) except AttributeError: continue # We could try everything in sys.modules; however, when regrtest.py @@ -310,7 +310,7 @@ def test_sitecustomize_executed(self): # If sitecustomize is available, it should have been imported. - if not sys.modules.has_key("sitecustomize"): + if "sitecustomize" not in sys.modules: try: import sitecustomize except ImportError: Modified: python/trunk/Lib/test/test_slice.py ============================================================================== --- python/trunk/Lib/test/test_slice.py (original) +++ python/trunk/Lib/test/test_slice.py Fri Jan 8 19:41:40 2010 @@ -115,7 +115,9 @@ tmp.append((i, j, k)) x = X() - x[1:2] = 42 + # Silence Py3k warning + with test_support.check_warnings(): + x[1:2] = 42 self.assertEquals(tmp, [(1, 2, 42)]) def test_pickle(self): Modified: python/trunk/Lib/test/test_socket.py ============================================================================== --- python/trunk/Lib/test/test_socket.py (original) +++ python/trunk/Lib/test/test_socket.py Fri Jan 8 19:41:40 2010 @@ -123,7 +123,7 @@ self.server_ready.wait() self.client_ready.set() self.clientSetUp() - if not callable(test_func): + if not hasattr(test_func, '__call__'): raise TypeError, "test_func must be a callable function" try: test_func() @@ -282,7 +282,7 @@ orig = sys.getrefcount(__name__) socket.getnameinfo(__name__,0) except TypeError: - if sys.getrefcount(__name__) <> orig: + if sys.getrefcount(__name__) != orig: self.fail("socket.getnameinfo loses a reference") def testInterpreterCrash(self): @@ -1234,7 +1234,9 @@ self.assertEqual(msg, MSG) def _testRecvInto(self): - buf = buffer(MSG) + # Silence Py3k warning + with test_support.check_warnings(): + buf = buffer(MSG) self.serv_conn.send(buf) def testRecvFromInto(self): @@ -1245,7 +1247,9 @@ self.assertEqual(msg, MSG) def _testRecvFromInto(self): - buf = buffer(MSG) + # Silence Py3k warning + with test_support.check_warnings(): + buf = buffer(MSG) self.serv_conn.send(buf) Modified: python/trunk/Lib/test/test_sort.py ============================================================================== --- python/trunk/Lib/test/test_sort.py (original) +++ python/trunk/Lib/test/test_sort.py Fri Jan 8 19:41:40 2010 @@ -2,6 +2,7 @@ import random import sys import unittest +import warnings verbose = test_support.verbose nerrors = 0 @@ -185,7 +186,7 @@ def test_stability(self): data = [(random.randrange(100), i) for i in xrange(200)] copy = data[:] - data.sort(key=lambda (x,y): x) # sort on the random first field + data.sort(key=lambda x: x[0]) # sort on the random first field copy.sort() # sort using both fields self.assertEqual(data, copy) # should get the same result @@ -207,7 +208,7 @@ # Verify that the wrapper has been removed data = range(-2,2) dup = data[:] - self.assertRaises(ZeroDivisionError, data.sort, None, lambda x: 1/x) + self.assertRaises(ZeroDivisionError, data.sort, None, lambda x: 1 // x) self.assertEqual(data, dup) def test_key_with_mutation(self): @@ -274,17 +275,21 @@ TestBugs, ) - test_support.run_unittest(*test_classes) - - # verify reference counting - if verbose and hasattr(sys, "gettotalrefcount"): - import gc - counts = [None] * 5 - for i in xrange(len(counts)): - test_support.run_unittest(*test_classes) - gc.collect() - counts[i] = sys.gettotalrefcount() - print counts + with warnings.catch_warnings(): + # Silence Py3k warning + warnings.filterwarnings("ignore", "the cmp argument is not supported", + DeprecationWarning) + test_support.run_unittest(*test_classes) + + # verify reference counting + if verbose and hasattr(sys, "gettotalrefcount"): + import gc + counts = [None] * 5 + for i in xrange(len(counts)): + test_support.run_unittest(*test_classes) + gc.collect() + counts[i] = sys.gettotalrefcount() + print counts if __name__ == "__main__": test_main(verbose=True) Modified: python/trunk/Lib/test/test_sqlite.py ============================================================================== --- python/trunk/Lib/test/test_sqlite.py (original) +++ python/trunk/Lib/test/test_sqlite.py Fri Jan 8 19:41:40 2010 @@ -4,14 +4,21 @@ # Skip test if _sqlite3 module was not built. import_module('_sqlite3') +import warnings from sqlite3.test import (dbapi, types, userfunctions, py25tests, factory, transactions, hooks, regression, dump) def test_main(): - run_unittest(dbapi.suite(), types.suite(), userfunctions.suite(), - py25tests.suite(), factory.suite(), transactions.suite(), - hooks.suite(), regression.suite(), dump.suite()) + with warnings.catch_warnings(): + # Silence Py3k warnings + warnings.filterwarnings("ignore", "buffer.. not supported", + DeprecationWarning) + warnings.filterwarnings("ignore", "classic int division", + DeprecationWarning) + run_unittest(dbapi.suite(), types.suite(), userfunctions.suite(), + py25tests.suite(), factory.suite(), transactions.suite(), + hooks.suite(), regression.suite(), dump.suite()) if __name__ == "__main__": test_main() Modified: python/trunk/Lib/test/test_ssl.py ============================================================================== --- python/trunk/Lib/test/test_ssl.py (original) +++ python/trunk/Lib/test/test_ssl.py Fri Jan 8 19:41:40 2010 @@ -808,7 +808,7 @@ if test_support.verbose: sys.stdout.write(pprint.pformat(cert) + '\n') sys.stdout.write("Connection cipher is " + str(cipher) + '.\n') - if not cert.has_key('subject'): + if 'subject' not in cert: raise test_support.TestFailed( "No subject field in certificate: %s." % pprint.pformat(cert)) @@ -970,7 +970,9 @@ # now fetch the same data from the HTTPS server url = 'https://127.0.0.1:%d/%s' % ( server.port, os.path.split(CERTFILE)[1]) - f = urllib.urlopen(url) + # Silence Py3k warning + with test_support.check_warnings(): + f = urllib.urlopen(url) dlen = f.info().getheader("content-length") if dlen and (int(dlen) > 0): d2 = f.read(int(dlen)) Modified: python/trunk/Lib/test/test_struct.py ============================================================================== --- python/trunk/Lib/test/test_struct.py (original) +++ python/trunk/Lib/test/test_struct.py Fri Jan 8 19:41:40 2010 @@ -471,7 +471,7 @@ def test_bool(self): for prefix in tuple("<>!=")+('',): false = (), [], [], '', 0 - true = [1], 'test', 5, -1, 0xffffffffL+1, 0xffffffff/2 + true = [1], 'test', 5, -1, 0xffffffffL+1, 0xffffffff//2 falseFormat = prefix + '?' * len(false) packedFalse = struct.pack(falseFormat, *false) @@ -507,7 +507,11 @@ def test_main(): - run_unittest(StructTest) + with warnings.catch_warnings(): + # Silence Py3k warnings + warnings.filterwarnings("ignore", "buffer.. not supported", + DeprecationWarning) + run_unittest(StructTest) if __name__ == '__main__': test_main() Modified: python/trunk/Lib/test/test_syntax.py ============================================================================== --- python/trunk/Lib/test/test_syntax.py (original) +++ python/trunk/Lib/test/test_syntax.py Fri Jan 8 19:41:40 2010 @@ -552,7 +552,11 @@ def test_main(): test_support.run_unittest(SyntaxTestCase) from test import test_syntax - test_support.run_doctest(test_syntax, verbosity=True) + with warnings.catch_warnings(): + # Silence Py3k warning + warnings.filterwarnings("ignore", "backquote not supported", + SyntaxWarning) + test_support.run_doctest(test_syntax, verbosity=True) if __name__ == "__main__": test_main() Modified: python/trunk/Lib/test/test_sys.py ============================================================================== --- python/trunk/Lib/test/test_sys.py (original) +++ python/trunk/Lib/test/test_sys.py Fri Jan 8 19:41:40 2010 @@ -68,7 +68,9 @@ # Python/pythonrun.c::PyErr_PrintEx() is tricky. def test_exc_clear(self): - self.assertRaises(TypeError, sys.exc_clear, 42) + # Silence Py3k warning + with test.test_support.check_warnings(): + self.assertRaises(TypeError, sys.exc_clear, 42) # Verify that exc_info is present and matches exc, then clear it, and # check that it worked. @@ -78,7 +80,9 @@ self.assertTrue(value is exc) self.assertTrue(traceback is not None) - sys.exc_clear() + # Silence Py3k warning + with test.test_support.check_warnings(): + sys.exc_clear() typ, value, traceback = sys.exc_info() self.assertTrue(typ is None) @@ -484,7 +488,9 @@ # bool check(True, size(h + 'l')) # buffer - check(buffer(''), size(h + '2P2Pil')) + # Silence Py3k warning + with test.test_support.check_warnings(): + check(buffer(''), size(h + '2P2Pil')) # builtin_function_or_method check(len, size(h + '3P')) # bytearray Modified: python/trunk/Lib/test/test_tarfile.py ============================================================================== --- python/trunk/Lib/test/test_tarfile.py (original) +++ python/trunk/Lib/test/test_tarfile.py Fri Jan 8 19:41:40 2010 @@ -712,7 +712,9 @@ return os.path.isfile(name) tar = tarfile.open(tmpname, self.mode, encoding="iso8859-1") - tar.add(tempdir, arcname="empty_dir", exclude=exclude) + # Silence Py3k warning + with test_support.check_warnings(): + tar.add(tempdir, arcname="empty_dir", exclude=exclude) tar.close() tar = tarfile.open(tmpname, "r") Modified: python/trunk/Lib/test/test_threadsignals.py ============================================================================== --- python/trunk/Lib/test/test_threadsignals.py (original) +++ python/trunk/Lib/test/test_threadsignals.py Fri Jan 8 19:41:40 2010 @@ -14,7 +14,7 @@ signalled_all=thread.allocate_lock() -def registerSignals((for_usr1, for_usr2, for_alrm)): +def registerSignals(for_usr1, for_usr2, for_alrm): usr1 = signal.signal(signal.SIGUSR1, for_usr1) usr2 = signal.signal(signal.SIGUSR2, for_usr2) alrm = signal.signal(signal.SIGALRM, for_alrm) @@ -74,11 +74,11 @@ signal.SIGUSR2 : {'tripped': 0, 'tripped_by': 0 }, signal.SIGALRM : {'tripped': 0, 'tripped_by': 0 } } - oldsigs = registerSignals((handle_signals, handle_signals, handle_signals)) + oldsigs = registerSignals(handle_signals, handle_signals, handle_signals) try: run_unittest(ThreadSignals) finally: - registerSignals(oldsigs) + registerSignals(*oldsigs) if __name__ == '__main__': test_main() Modified: python/trunk/Lib/test/test_trace.py ============================================================================== --- python/trunk/Lib/test/test_trace.py (original) +++ python/trunk/Lib/test/test_trace.py Fri Jan 8 19:41:40 2010 @@ -401,7 +401,7 @@ we're testing, so that the 'exception' trace event fires.""" if self.raiseOnEvent == 'exception': x = 0 - y = 1/x + y = 1 // x else: return 1 Modified: python/trunk/Lib/test/test_traceback.py ============================================================================== --- python/trunk/Lib/test/test_traceback.py (original) +++ python/trunk/Lib/test/test_traceback.py Fri Jan 8 19:41:40 2010 @@ -4,6 +4,7 @@ from StringIO import StringIO import sys import unittest +from imp import reload from test.test_support import run_unittest, is_jython, Error import traceback @@ -148,7 +149,7 @@ def test_format_exception_only_bad__str__(self): class X(Exception): def __str__(self): - 1/0 + 1 // 0 err = traceback.format_exception_only(X, X()) self.assertEqual(len(err), 1) str_value = '' % X.__name__ Modified: python/trunk/Lib/test/test_transformer.py ============================================================================== --- python/trunk/Lib/test/test_transformer.py (original) +++ python/trunk/Lib/test/test_transformer.py Fri Jan 8 19:41:40 2010 @@ -1,5 +1,8 @@ import unittest from test import test_support + +# Silence Py3k warning +test_support.import_module('compiler', deprecated=True) from compiler import transformer, ast from compiler import compile Modified: python/trunk/Lib/test/test_types.py ============================================================================== --- python/trunk/Lib/test/test_types.py (original) +++ python/trunk/Lib/test/test_types.py Fri Jan 8 19:41:40 2010 @@ -4,6 +4,7 @@ import unittest import sys import locale +import warnings class TypesTests(unittest.TestCase): @@ -710,7 +711,13 @@ self.assertRaises(ValueError, format, 0, ',' + code) def test_main(): - run_unittest(TypesTests) + with warnings.catch_warnings(): + # Silence Py3k warnings + warnings.filterwarnings("ignore", "buffer.. not supported", + DeprecationWarning) + warnings.filterwarnings("ignore", "classic long division", + DeprecationWarning) + run_unittest(TypesTests) if __name__ == '__main__': test_main() Modified: python/trunk/Lib/test/test_undocumented_details.py ============================================================================== --- python/trunk/Lib/test/test_undocumented_details.py (original) +++ python/trunk/Lib/test/test_undocumented_details.py Fri Jan 8 19:41:40 2010 @@ -1,4 +1,4 @@ -from test.test_support import run_unittest, have_unicode +from test.test_support import run_unittest, check_warnings import unittest import sys @@ -33,7 +33,9 @@ self.assertTrue(g_cell != h_cell) def test_main(): - run_unittest(TestImplementationComparisons) + # Silence Py3k warnings + with check_warnings(): + run_unittest(TestImplementationComparisons) if __name__ == '__main__': test_main() Modified: python/trunk/Lib/test/test_unittest.py ============================================================================== --- python/trunk/Lib/test/test_unittest.py (original) +++ python/trunk/Lib/test/test_unittest.py Fri Jan 8 19:41:40 2010 @@ -3056,7 +3056,7 @@ try: self.assertRaises(KeyError, lambda: None) except self.failureException as e: - self.assert_("KeyError not raised" in e, str(e)) + self.assert_("KeyError not raised" in e.args, str(e)) else: self.fail("assertRaises() didn't fail") try: @@ -3073,7 +3073,7 @@ with self.assertRaises(KeyError): pass except self.failureException as e: - self.assert_("KeyError not raised" in e, str(e)) + self.assert_("KeyError not raised" in e.args, str(e)) else: self.fail("assertRaises() didn't fail") try: @@ -3591,6 +3591,9 @@ def __eq__(self, other): return self.path == other.path + # Silence Py3k warning + __hash__ = None + loader._get_module_from_name = lambda name: Module(name) def loadTestsFromModule(module, use_load_tests): if use_load_tests: Modified: python/trunk/Lib/test/test_univnewlines2k.py ============================================================================== --- python/trunk/Lib/test/test_univnewlines2k.py (original) +++ python/trunk/Lib/test/test_univnewlines2k.py Fri Jan 8 19:41:40 2010 @@ -80,7 +80,9 @@ def test_execfile(self): namespace = {} - execfile(test_support.TESTFN, namespace) + # Silence Py3k warning + with test_support.check_warnings(): + execfile(test_support.TESTFN, namespace) func = namespace['line3'] self.assertEqual(func.func_code.co_firstlineno, 3) self.assertEqual(namespace['line4'], FATX) Modified: python/trunk/Lib/test/test_urllib.py ============================================================================== --- python/trunk/Lib/test/test_urllib.py (original) +++ python/trunk/Lib/test/test_urllib.py Fri Jan 8 19:41:40 2010 @@ -6,6 +6,7 @@ from test import test_support import os import mimetools +import random import tempfile import StringIO @@ -101,7 +102,7 @@ # Records changes to env vars self.env = test_support.EnvironmentVarGuard() # Delete all proxy related env vars - for k, v in os.environ.iteritems(): + for k in os.environ.keys(): if 'proxy' in k.lower(): self.env.unset(k) @@ -409,6 +410,13 @@ self.assertEqual(urllib.quote_plus('alpha+beta gamma', '+'), 'alpha+beta+gamma') + def test_quote_leak(self): + # bug 5596 - highlight the refleak in the internal _safemaps cache + safe = ''.join(chr(random.randrange(128)) for i in '123456') + text = 'abcdefghijklmnopqrstuvwxyz' + result = urllib.quote(text, safe=safe) + self.assertEqual(result, text) + class UnquotingTests(unittest.TestCase): """Tests for unquote() and unquote_plus() Modified: python/trunk/Lib/test/test_urllib2_localnet.py ============================================================================== --- python/trunk/Lib/test/test_urllib2_localnet.py (original) +++ python/trunk/Lib/test/test_urllib2_localnet.py Fri Jan 8 19:41:40 2010 @@ -1,6 +1,5 @@ #!/usr/bin/env python -import mimetools import threading import urlparse import urllib2 @@ -8,6 +7,7 @@ import unittest import hashlib from test import test_support +mimetools = test_support.import_module('mimetools', deprecated=True) # Loopback http server infrastructure @@ -154,13 +154,13 @@ if len(self._users) == 0: return True - if not request_handler.headers.has_key('Proxy-Authorization'): + if 'Proxy-Authorization' not in request_handler.headers: return self._return_auth_challenge(request_handler) else: auth_dict = self._create_auth_dict( request_handler.headers['Proxy-Authorization'] ) - if self._users.has_key(auth_dict["username"]): + if auth_dict["username"] in self._users: password = self._users[ auth_dict["username"] ] else: return self._return_auth_challenge(request_handler) Modified: python/trunk/Lib/test/test_urllibnet.py ============================================================================== --- python/trunk/Lib/test/test_urllibnet.py (original) +++ python/trunk/Lib/test/test_urllibnet.py Fri Jan 8 19:41:40 2010 @@ -7,7 +7,7 @@ import urllib import sys import os -import mimetools +mimetools = test_support.import_module("mimetools", deprecated=True) def _open_with_retry(func, host, *args, **kwargs): Modified: python/trunk/Lib/test/test_userdict.py ============================================================================== --- python/trunk/Lib/test/test_userdict.py (original) +++ python/trunk/Lib/test/test_userdict.py Fri Jan 8 19:41:40 2010 @@ -45,7 +45,9 @@ # Test __repr__ self.assertEqual(str(u0), str(d0)) self.assertEqual(repr(u1), repr(d1)) - self.assertEqual(`u2`, `d2`) + # Silence Py3k warning + with test_support.check_warnings(): + self.assertEqual(eval('`u2`'), eval('`d2`')) # Test __cmp__ and __len__ all = [d0, d1, d2, u, u0, u1, u2, uu, uu0, uu1, uu2] @@ -95,12 +97,14 @@ # Test has_key and "in". for i in u2.keys(): - self.assertTrue(u2.has_key(i)) self.assertTrue(i in u2) - self.assertEqual(u1.has_key(i), d1.has_key(i)) self.assertEqual(i in u1, i in d1) - self.assertEqual(u0.has_key(i), d0.has_key(i)) self.assertEqual(i in u0, i in d0) + # Silence Py3k warning + with test_support.check_warnings(): + self.assertTrue(u2.has_key(i)) + self.assertEqual(u1.has_key(i), d1.has_key(i)) + self.assertEqual(u0.has_key(i), d0.has_key(i)) # Test update t = UserDict.UserDict() Modified: python/trunk/Lib/test/test_userlist.py ============================================================================== --- python/trunk/Lib/test/test_userlist.py (original) +++ python/trunk/Lib/test/test_userlist.py Fri Jan 8 19:41:40 2010 @@ -2,6 +2,7 @@ from UserList import UserList from test import test_support, list_tests +import warnings class UserListTest(list_tests.CommonTest): type2test = UserList @@ -53,7 +54,11 @@ self.assertEqual(iter(T((1,2))).next(), "0!!!") def test_main(): - test_support.run_unittest(UserListTest) + with warnings.catch_warnings(): + # Silence Py3k warnings + warnings.filterwarnings("ignore", ".+slice__ has been removed", + DeprecationWarning) + test_support.run_unittest(UserListTest) if __name__ == "__main__": test_main() Modified: python/trunk/Lib/test/test_userstring.py ============================================================================== --- python/trunk/Lib/test/test_userstring.py (original) +++ python/trunk/Lib/test/test_userstring.py Fri Jan 8 19:41:40 2010 @@ -136,8 +136,11 @@ def test_main(): with warnings.catch_warnings(): + # Silence Py3k warnings warnings.filterwarnings("ignore", ".*MutableString", DeprecationWarning) + warnings.filterwarnings("ignore", ".+slice__ has been removed", + DeprecationWarning) test_support.run_unittest(UserStringTest, MutableStringTest) if __name__ == "__main__": Modified: python/trunk/Lib/test/test_weakref.py ============================================================================== --- python/trunk/Lib/test/test_weakref.py (original) +++ python/trunk/Lib/test/test_weakref.py Fri Jan 8 19:41:40 2010 @@ -54,10 +54,10 @@ # Live reference: o = C() wr = weakref.ref(o) - `wr` + repr(wr) # Dead reference: del o - `wr` + repr(wr) def test_basic_callback(self): self.check_basic_callback(C) @@ -169,7 +169,9 @@ p.append(12) self.assertEqual(len(L), 1) self.assertTrue(p, "proxy for non-empty UserList should be true") - p[:] = [2, 3] + # Silence Py3k warning + with test_support.check_warnings(): + p[:] = [2, 3] self.assertEqual(len(L), 2) self.assertEqual(len(p), 2) self.assertTrue(3 in p, @@ -183,10 +185,12 @@ ## self.assertEqual(repr(L2), repr(p2)) L3 = UserList.UserList(range(10)) p3 = weakref.proxy(L3) - self.assertEqual(L3[:], p3[:]) - self.assertEqual(L3[5:], p3[5:]) - self.assertEqual(L3[:5], p3[:5]) - self.assertEqual(L3[2:5], p3[2:5]) + # Silence Py3k warning + with test_support.check_warnings(): + self.assertEqual(L3[:], p3[:]) + self.assertEqual(L3[5:], p3[5:]) + self.assertEqual(L3[:5], p3[:5]) + self.assertEqual(L3[2:5], p3[2:5]) def test_proxy_unicode(self): # See bug 5037 @@ -832,7 +836,7 @@ def test_weak_keys(self): # # This exercises d.copy(), d.items(), d[] = v, d[], del d[], - # len(d), d.has_key(). + # len(d), in d. # dict, objects = self.make_weak_keyed_dict() for o in objects: @@ -854,8 +858,8 @@ "deleting the keys did not clear the dictionary") o = Object(42) dict[o] = "What is the meaning of the universe?" - self.assertTrue(dict.has_key(o)) - self.assertTrue(not dict.has_key(34)) + self.assertTrue(o in dict) + self.assertTrue(34 not in dict) def test_weak_keyed_iters(self): dict, objects = self.make_weak_keyed_dict() @@ -867,7 +871,7 @@ objects2 = list(objects) for wr in refs: ob = wr() - self.assertTrue(dict.has_key(ob)) + self.assertTrue(ob in dict) self.assertTrue(ob in dict) self.assertEqual(ob.arg, dict[ob]) objects2.remove(ob) @@ -878,7 +882,6 @@ self.assertEqual(len(list(dict.iterkeyrefs())), len(objects)) for wr in dict.iterkeyrefs(): ob = wr() - self.assertTrue(dict.has_key(ob)) self.assertTrue(ob in dict) self.assertEqual(ob.arg, dict[ob]) objects2.remove(ob) @@ -993,13 +996,13 @@ weakdict = klass() o = weakdict.setdefault(key, value1) self.assertTrue(o is value1) - self.assertTrue(weakdict.has_key(key)) + self.assertTrue(key in weakdict) self.assertTrue(weakdict.get(key) is value1) self.assertTrue(weakdict[key] is value1) o = weakdict.setdefault(key, value2) self.assertTrue(o is value1) - self.assertTrue(weakdict.has_key(key)) + self.assertTrue(key in weakdict) self.assertTrue(weakdict.get(key) is value1) self.assertTrue(weakdict[key] is value1) @@ -1013,20 +1016,20 @@ def check_update(self, klass, dict): # - # This exercises d.update(), len(d), d.keys(), d.has_key(), + # This exercises d.update(), len(d), d.keys(), in d, # d.get(), d[]. # weakdict = klass() weakdict.update(dict) self.assertTrue(len(weakdict) == len(dict)) for k in weakdict.keys(): - self.assertTrue(dict.has_key(k), + self.assertTrue(k in dict, "mysterious new key appeared in weak dict") v = dict.get(k) self.assertTrue(v is weakdict[k]) self.assertTrue(v is weakdict.get(k)) for k in dict.keys(): - self.assertTrue(weakdict.has_key(k), + self.assertTrue(k in weakdict, "original key disappeared in weak dict") v = dict[k] self.assertTrue(v is weakdict[k]) Modified: python/trunk/Lib/test/test_whichdb.py ============================================================================== --- python/trunk/Lib/test/test_whichdb.py (original) +++ python/trunk/Lib/test/test_whichdb.py Fri Jan 8 19:41:40 2010 @@ -7,11 +7,13 @@ import test.test_support import unittest import whichdb -import anydbm import glob _fname = test.test_support.TESTFN +# Silence Py3k warning +anydbm = test.test_support.import_module('anydbm', deprecated=True) + def _delete_files(): # we don't know the precise name the underlying database uses # so we use glob to locate all names @@ -37,8 +39,9 @@ # we define a new test method for each # candidate database module. try: - mod = __import__(name) - except ImportError: + # Silence Py3k warning + mod = test.test_support.import_module(name, deprecated=True) + except unittest.SkipTest: continue def test_whichdb_name(self, name=name, mod=mod): Modified: python/trunk/Lib/test/test_with.py ============================================================================== --- python/trunk/Lib/test/test_with.py (original) +++ python/trunk/Lib/test/test_with.py Fri Jan 8 19:41:40 2010 @@ -520,7 +520,7 @@ self.assertRaises(AssertionError, falseAsBool) def failAsBool(): - with cm(lambda: 1//0): + with cm(lambda: 1 // 0): self.fail("Should NOT see this") self.assertRaises(ZeroDivisionError, failAsBool) @@ -628,7 +628,7 @@ def __exit__(self, t, v, tb): return True try: with AfricanSwallow(): - 1/0 + 1 // 0 except ZeroDivisionError: self.fail("ZeroDivisionError should have been swallowed") @@ -638,7 +638,7 @@ def __exit__(self, t, v, tb): return False try: with EuropeanSwallow(): - 1/0 + 1 // 0 except ZeroDivisionError: pass else: Modified: python/trunk/Lib/test/test_wsgiref.py ============================================================================== --- python/trunk/Lib/test/test_wsgiref.py (original) +++ python/trunk/Lib/test/test_wsgiref.py Fri Jan 8 19:41:40 2010 @@ -432,10 +432,10 @@ env = handler.environ from os import environ for k,v in environ.items(): - if not empty.has_key(k): + if k not in empty: self.assertEqual(env[k],v) for k,v in empty.items(): - self.assertTrue(env.has_key(k)) + self.assertTrue(k in env) def testEnviron(self): h = TestHandler(X="Y") @@ -448,7 +448,7 @@ h = BaseCGIHandler(None,None,None,{}) h.setup_environ() for key in 'wsgi.url_scheme', 'wsgi.input', 'wsgi.errors': - self.assertTrue(h.environ.has_key(key)) + self.assertTrue(key in h.environ) def testScheme(self): h=TestHandler(HTTPS="on"); h.setup_environ() Modified: python/trunk/Lib/test/test_xmllib.py ============================================================================== --- python/trunk/Lib/test/test_xmllib.py (original) +++ python/trunk/Lib/test/test_xmllib.py Fri Jan 8 19:41:40 2010 @@ -15,13 +15,10 @@ nsdoc = "" -import warnings -warnings.filterwarnings("ignore", ".* xmllib .* obsolete.*", - DeprecationWarning, r'xmllib$') - from test import test_support import unittest -import xmllib +# Silence Py3k warning +xmllib = test_support.import_module('xmllib', deprecated=True) class XMLParserTestCase(unittest.TestCase): Modified: python/trunk/Lib/test/test_xpickle.py ============================================================================== --- python/trunk/Lib/test/test_xpickle.py (original) +++ python/trunk/Lib/test/test_xpickle.py Fri Jan 8 19:41:40 2010 @@ -25,7 +25,7 @@ mod_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "pickletester.py")) pickletester = types.ModuleType("test.pickletester") -execfile(mod_path, pickletester.__dict__, pickletester.__dict__) +exec compile(open(mod_path).read(), mod_path, 'exec') in pickletester.__dict__ AbstractPickleTests = pickletester.AbstractPickleTests if pickletester.__name__ in sys.modules: raise RuntimeError("Did not expect to find test.pickletester loaded") Modified: python/trunk/Lib/test/test_zipimport_support.py ============================================================================== --- python/trunk/Lib/test/test_zipimport_support.py (original) +++ python/trunk/Lib/test/test_zipimport_support.py Fri Jan 8 19:41:40 2010 @@ -168,8 +168,11 @@ test_zipped_doctest.test_testfile, test_zipped_doctest.test_unittest_reportflags, ] - for obj in known_good_tests: - _run_object_doctest(obj, test_zipped_doctest) + # Silence Py3k warning + # Needed for test_DocTestParser and test_debug + with test.test_support.check_warnings(): + for obj in known_good_tests: + _run_object_doctest(obj, test_zipped_doctest) def test_doctest_main_issue4197(self): test_src = textwrap.dedent("""\ From mal at egenix.com Fri Jan 8 19:51:35 2010 From: mal at egenix.com (M.-A. Lemburg) Date: Fri, 08 Jan 2010 19:51:35 +0100 Subject: [Python-checkins] r77368 - in python/trunk/Lib/test: infinite_reload.py inspect_fodder.py list_tests.py mapping_tests.py regrtest.py seq_tests.py test_StringIO.py test_anydbm.py test_array.py test_ast.py test_augassign.py test_bigmem.py test_binascii.py test_binop.py test_bool.py test_buffer.py test_builtin.py test_call.py test_capi.py test_cgi.py test_class.py test_coercion.py test_collections.py test_commands.py test_compile.py test_compiler.py test_complex_args.py test_copy.py test_ctypes.py test_decimal.py test_descr.py test_descrtut.py test_dict.py test_exceptions.py test_file.py test_file2k.py test_fractions.py test_ftplib.py test_functools.py test_grammar.py test_gzip.py test_heapq.py test_hotshot.py test_import.py test_importhooks.py test_inspect.py test_io.py test_iter.py test_itertools.py test_json.py test_linuxaudiodev.py test_long.py test_mailbox.py test_marshal.py test_multibytecodec_support.py test_multifile.py test_multiprocessing.py test_mutants.py test_opcodes.py test_operator.py test_optparse.py test_ossaudiodev.py test_peepholer.py test_pep352.py test_pkgimport.py test_pyclbr.py test_pyexpat.py test_queue.py test_random.py test_repr.py test_rfc822.py test_richcmp.py test_scope.py test_set.py test_sets.py test_shelve.py test_site.py test_slice.py test_socket.py test_sort.py test_sqlite.py test_ssl.py test_struct.py test_syntax.py test_sys.py test_tarfile.py test_threadsignals.py test_trace.py test_traceback.py test_transformer.py test_types.py test_undocumented_details.py test_unittest.py test_univnewlines2k.py test_urllib.py test_urllib2_localnet.py test_urllibnet.py test_userdict.py test_userlist.py test_userstring.py test_weakref.py test_whichdb.py test_with.py test_wsgiref.py test_xmllib.py test_xpickle.py test_zipimport_support.py In-Reply-To: <20100108184209.A34CC405090@mail.egenix.com> References: <20100108184209.A34CC405090@mail.egenix.com> Message-ID: <4B477EB7.603@egenix.com> senthil.kumaran wrote: > Author: senthil.kumaran > Date: Fri Jan 8 19:41:40 2010 > New Revision: 77368 > > Log: > Fixing - Issue7026 - RuntimeError: dictionary changed size during iteration. Patch by flox Something must be wrong about that checkin message. Could you please update it ?! Thanks. The patch seems to address a -3 warnings in the test suite by silencing them. -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Source (#1, Jan 08 2010) >>> Python/Zope Consulting and Support ... http://www.egenix.com/ >>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/ >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/ ________________________________________________________________________ ::: Try our new mxODBC.Connect Python Database Interface for free ! :::: eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg Registered at Amtsgericht Duesseldorf: HRB 46611 http://www.egenix.com/company/contact/ From python-checkins at python.org Fri Jan 8 20:04:18 2010 From: python-checkins at python.org (senthil.kumaran) Date: Fri, 08 Jan 2010 19:04:18 -0000 Subject: [Python-checkins] r77369 - in python/trunk/Lib/test: infinite_reload.py inspect_fodder.py list_tests.py mapping_tests.py regrtest.py seq_tests.py test_StringIO.py test_anydbm.py test_array.py test_ast.py test_augassign.py test_bigmem.py test_binascii.py test_binop.py test_bool.py test_buffer.py test_builtin.py test_call.py test_capi.py test_cgi.py test_class.py test_coercion.py test_collections.py test_commands.py test_compile.py test_compiler.py test_complex_args.py test_copy.py test_ctypes.py test_decimal.py test_descr.py test_descrtut.py test_dict.py test_exceptions.py test_file.py test_file2k.py test_fractions.py test_ftplib.py test_functools.py test_grammar.py test_gzip.py test_heapq.py test_hotshot.py test_import.py test_importhooks.py test_inspect.py test_io.py test_iter.py test_itertools.py test_json.py test_linuxaudiodev.py test_long.py test_mailbox.py test_marshal.py test_multibytecodec_support.py test_multifile.py test_multiprocessing.py test_mutants.py test_opcodes.py test_operator.py test_optparse.py test_ossaudiodev.py test_peepholer.py test_pep352.py test_pkgimport.py test_pyclbr.py test_pyexpat.py test_queue.py test_random.py test_repr.py test_rfc822.py test_richcmp.py test_scope.py test_set.py test_sets.py test_shelve.py test_site.py test_slice.py test_socket.py test_sort.py test_sqlite.py test_ssl.py test_struct.py test_syntax.py test_sys.py test_tarfile.py test_threadsignals.py test_trace.py test_traceback.py test_transformer.py test_types.py test_undocumented_details.py test_unittest.py test_univnewlines2k.py test_urllib.py test_urllib2_localnet.py test_urllibnet.py test_userdict.py test_userlist.py test_userstring.py test_weakref.py test_whichdb.py test_with.py test_wsgiref.py test_xmllib.py test_xpickle.py test_zipimport_support.py Message-ID: Author: senthil.kumaran Date: Fri Jan 8 20:04:16 2010 New Revision: 77369 Log: Reverting the Revision: 77368. I committed Flox's big patch for tests by mistake. ( It may come in for sure tough) Modified: python/trunk/Lib/test/infinite_reload.py python/trunk/Lib/test/inspect_fodder.py python/trunk/Lib/test/list_tests.py python/trunk/Lib/test/mapping_tests.py python/trunk/Lib/test/regrtest.py python/trunk/Lib/test/seq_tests.py python/trunk/Lib/test/test_StringIO.py python/trunk/Lib/test/test_anydbm.py python/trunk/Lib/test/test_array.py python/trunk/Lib/test/test_ast.py python/trunk/Lib/test/test_augassign.py python/trunk/Lib/test/test_bigmem.py python/trunk/Lib/test/test_binascii.py python/trunk/Lib/test/test_binop.py python/trunk/Lib/test/test_bool.py python/trunk/Lib/test/test_buffer.py python/trunk/Lib/test/test_builtin.py python/trunk/Lib/test/test_call.py python/trunk/Lib/test/test_capi.py python/trunk/Lib/test/test_cgi.py python/trunk/Lib/test/test_class.py python/trunk/Lib/test/test_coercion.py python/trunk/Lib/test/test_collections.py python/trunk/Lib/test/test_commands.py python/trunk/Lib/test/test_compile.py python/trunk/Lib/test/test_compiler.py python/trunk/Lib/test/test_complex_args.py python/trunk/Lib/test/test_copy.py python/trunk/Lib/test/test_ctypes.py python/trunk/Lib/test/test_decimal.py python/trunk/Lib/test/test_descr.py python/trunk/Lib/test/test_descrtut.py python/trunk/Lib/test/test_dict.py python/trunk/Lib/test/test_exceptions.py python/trunk/Lib/test/test_file.py python/trunk/Lib/test/test_file2k.py python/trunk/Lib/test/test_fractions.py python/trunk/Lib/test/test_ftplib.py python/trunk/Lib/test/test_functools.py python/trunk/Lib/test/test_grammar.py python/trunk/Lib/test/test_gzip.py python/trunk/Lib/test/test_heapq.py python/trunk/Lib/test/test_hotshot.py python/trunk/Lib/test/test_import.py python/trunk/Lib/test/test_importhooks.py python/trunk/Lib/test/test_inspect.py python/trunk/Lib/test/test_io.py python/trunk/Lib/test/test_iter.py python/trunk/Lib/test/test_itertools.py python/trunk/Lib/test/test_json.py python/trunk/Lib/test/test_linuxaudiodev.py python/trunk/Lib/test/test_long.py python/trunk/Lib/test/test_mailbox.py python/trunk/Lib/test/test_marshal.py python/trunk/Lib/test/test_multibytecodec_support.py python/trunk/Lib/test/test_multifile.py python/trunk/Lib/test/test_multiprocessing.py python/trunk/Lib/test/test_mutants.py python/trunk/Lib/test/test_opcodes.py python/trunk/Lib/test/test_operator.py python/trunk/Lib/test/test_optparse.py python/trunk/Lib/test/test_ossaudiodev.py python/trunk/Lib/test/test_peepholer.py python/trunk/Lib/test/test_pep352.py python/trunk/Lib/test/test_pkgimport.py python/trunk/Lib/test/test_pyclbr.py python/trunk/Lib/test/test_pyexpat.py python/trunk/Lib/test/test_queue.py python/trunk/Lib/test/test_random.py python/trunk/Lib/test/test_repr.py python/trunk/Lib/test/test_rfc822.py python/trunk/Lib/test/test_richcmp.py python/trunk/Lib/test/test_scope.py python/trunk/Lib/test/test_set.py python/trunk/Lib/test/test_sets.py python/trunk/Lib/test/test_shelve.py python/trunk/Lib/test/test_site.py python/trunk/Lib/test/test_slice.py python/trunk/Lib/test/test_socket.py python/trunk/Lib/test/test_sort.py python/trunk/Lib/test/test_sqlite.py python/trunk/Lib/test/test_ssl.py python/trunk/Lib/test/test_struct.py python/trunk/Lib/test/test_syntax.py python/trunk/Lib/test/test_sys.py python/trunk/Lib/test/test_tarfile.py python/trunk/Lib/test/test_threadsignals.py python/trunk/Lib/test/test_trace.py python/trunk/Lib/test/test_traceback.py python/trunk/Lib/test/test_transformer.py python/trunk/Lib/test/test_types.py python/trunk/Lib/test/test_undocumented_details.py python/trunk/Lib/test/test_unittest.py python/trunk/Lib/test/test_univnewlines2k.py python/trunk/Lib/test/test_urllib.py python/trunk/Lib/test/test_urllib2_localnet.py python/trunk/Lib/test/test_urllibnet.py python/trunk/Lib/test/test_userdict.py python/trunk/Lib/test/test_userlist.py python/trunk/Lib/test/test_userstring.py python/trunk/Lib/test/test_weakref.py python/trunk/Lib/test/test_whichdb.py python/trunk/Lib/test/test_with.py python/trunk/Lib/test/test_wsgiref.py python/trunk/Lib/test/test_xmllib.py python/trunk/Lib/test/test_xpickle.py python/trunk/Lib/test/test_zipimport_support.py Modified: python/trunk/Lib/test/infinite_reload.py ============================================================================== --- python/trunk/Lib/test/infinite_reload.py (original) +++ python/trunk/Lib/test/infinite_reload.py Fri Jan 8 20:04:16 2010 @@ -3,6 +3,5 @@ # reload()ing. This module is imported by test_import.py:test_infinite_reload # to make sure this doesn't happen any more. -import imp import infinite_reload -imp.reload(infinite_reload) +reload(infinite_reload) Modified: python/trunk/Lib/test/inspect_fodder.py ============================================================================== --- python/trunk/Lib/test/inspect_fodder.py (original) +++ python/trunk/Lib/test/inspect_fodder.py Fri Jan 8 20:04:16 2010 @@ -15,7 +15,7 @@ fr = inspect.currentframe() st = inspect.stack() p = x - q = y // 0 + q = y / 0 # line 20 class StupidGit: Modified: python/trunk/Lib/test/list_tests.py ============================================================================== --- python/trunk/Lib/test/list_tests.py (original) +++ python/trunk/Lib/test/list_tests.py Fri Jan 8 20:04:16 2010 @@ -4,7 +4,7 @@ import sys import os -import warnings + from test import test_support, seq_tests class CommonTest(seq_tests.CommonTest): @@ -36,9 +36,7 @@ self.assertEqual(str(a0), str(l0)) self.assertEqual(repr(a0), repr(l0)) - # Silence Py3k warning - with test_support.check_warnings(): - self.assertEqual(eval('`a2`'), eval('`l2`')) + self.assertEqual(`a2`, `l2`) self.assertEqual(str(a2), "[0, 1, 2]") self.assertEqual(repr(a2), "[0, 1, 2]") @@ -423,13 +421,6 @@ self.assertRaises(TypeError, u.reverse, 42) def test_sort(self): - with warnings.catch_warnings(): - # Silence Py3k warning - warnings.filterwarnings("ignore", "the cmp argument is not supported", - DeprecationWarning) - self._test_sort() - - def _test_sort(self): u = self.type2test([1, 0]) u.sort() self.assertEqual(u, [0, 1]) Modified: python/trunk/Lib/test/mapping_tests.py ============================================================================== --- python/trunk/Lib/test/mapping_tests.py (original) +++ python/trunk/Lib/test/mapping_tests.py Fri Jan 8 20:04:16 2010 @@ -1,7 +1,6 @@ # tests common to dict and UserDict import unittest import UserDict -import test_support class BasicTestMappingProtocol(unittest.TestCase): @@ -55,18 +54,13 @@ #len self.assertEqual(len(p), 0) self.assertEqual(len(d), len(self.reference)) - #in + #has_key for k in self.reference: + self.assertTrue(d.has_key(k)) self.assertTrue(k in d) for k in self.other: + self.assertFalse(d.has_key(k)) self.assertFalse(k in d) - #has_key - # Silence Py3k warning - with test_support.check_warnings(): - for k in self.reference: - self.assertTrue(d.has_key(k)) - for k in self.other: - self.assertFalse(d.has_key(k)) #cmp self.assertEqual(cmp(p,p), 0) self.assertEqual(cmp(d,d), 0) Modified: python/trunk/Lib/test/regrtest.py ============================================================================== --- python/trunk/Lib/test/regrtest.py (original) +++ python/trunk/Lib/test/regrtest.py Fri Jan 8 20:04:16 2010 @@ -150,6 +150,7 @@ import cStringIO import getopt import itertools +import json import os import random import re @@ -159,13 +160,15 @@ import warnings import unittest -with warnings.catch_warnings(): - # Silence Py3k warnings - warnings.filterwarnings("ignore", "tuple parameter unpacking " - "has been removed", SyntaxWarning) - warnings.filterwarnings("ignore", "assignment to True or False " - "is forbidden", SyntaxWarning) - import json +# I see no other way to suppress these warnings; +# putting them in test_grammar.py has no effect: +warnings.filterwarnings("ignore", "hex/oct constants", FutureWarning, + ".*test.test_grammar$") +if sys.maxint > 0x7fffffff: + # Also suppress them in , because for 64-bit platforms, + # that's where test_grammar.py hides them. + warnings.filterwarnings("ignore", "hex/oct constants", FutureWarning, + "") # Ignore ImportWarnings that only occur in the source tree, # (because of modules with the same name as source-directories in Modules/) Modified: python/trunk/Lib/test/seq_tests.py ============================================================================== --- python/trunk/Lib/test/seq_tests.py (original) +++ python/trunk/Lib/test/seq_tests.py Fri Jan 8 20:04:16 2010 @@ -4,7 +4,6 @@ import unittest import sys -import test_support # Various iterables # This is used for checking the constructor (here and in test_deque.py) @@ -197,9 +196,7 @@ self.assertEqual(a[ -pow(2,128L): 3 ], self.type2test([0,1,2])) self.assertEqual(a[ 3: pow(2,145L) ], self.type2test([3,4])) - # Silence Py3k warning - with test_support.check_warnings(): - self.assertRaises(TypeError, u.__getslice__) + self.assertRaises(TypeError, u.__getslice__) def test_contains(self): u = self.type2test([0, 1, 2]) Modified: python/trunk/Lib/test/test_StringIO.py ============================================================================== --- python/trunk/Lib/test/test_StringIO.py (original) +++ python/trunk/Lib/test/test_StringIO.py Fri Jan 8 20:04:16 2010 @@ -137,10 +137,12 @@ def test_main(): - test_support.run_unittest(TestStringIO, TestcStringIO) - # Silence Py3k warning - with test_support.check_warnings(): - test_support.run_unittest(TestBufferStringIO, TestBuffercStringIO) + test_support.run_unittest( + TestStringIO, + TestcStringIO, + TestBufferStringIO, + TestBuffercStringIO + ) if __name__ == '__main__': test_main() Modified: python/trunk/Lib/test/test_anydbm.py ============================================================================== --- python/trunk/Lib/test/test_anydbm.py (original) +++ python/trunk/Lib/test/test_anydbm.py Fri Jan 8 20:04:16 2010 @@ -5,14 +5,12 @@ import os import unittest +import anydbm import glob from test import test_support _fname = test_support.TESTFN -# Silence Py3k warning -anydbm = test_support.import_module('anydbm', deprecated=True) - def _delete_files(): # we don't know the precise name the underlying database uses # so we use glob to locate all names Modified: python/trunk/Lib/test/test_array.py ============================================================================== --- python/trunk/Lib/test/test_array.py (original) +++ python/trunk/Lib/test/test_array.py Fri Jan 8 20:04:16 2010 @@ -749,9 +749,7 @@ def test_buffer(self): a = array.array(self.typecode, self.example) - # Silence Py3k warning - with test_support.check_warnings(): - b = buffer(a) + b = buffer(a) self.assertEqual(b[0], a.tostring()[0]) def test_weakref(self): Modified: python/trunk/Lib/test/test_ast.py ============================================================================== --- python/trunk/Lib/test/test_ast.py (original) +++ python/trunk/Lib/test/test_ast.py Fri Jan 8 20:04:16 2010 @@ -1,7 +1,6 @@ import sys, itertools, unittest from test import test_support import ast -import warnings def to_tuple(t): if t is None or isinstance(t, (basestring, int, long, complex)): @@ -303,11 +302,7 @@ def test_main(): - with warnings.catch_warnings(): - # Silence Py3k warning - warnings.filterwarnings("ignore", "backquote not supported", - SyntaxWarning) - test_support.run_unittest(AST_Tests, ASTHelpers_Test) + test_support.run_unittest(AST_Tests, ASTHelpers_Test) def main(): if __name__ != '__main__': Modified: python/trunk/Lib/test/test_augassign.py ============================================================================== --- python/trunk/Lib/test/test_augassign.py (original) +++ python/trunk/Lib/test/test_augassign.py Fri Jan 8 20:04:16 2010 @@ -2,7 +2,6 @@ from test.test_support import run_unittest import unittest -import warnings class AugAssignTest(unittest.TestCase): @@ -325,11 +324,7 @@ '''.splitlines()) def test_main(): - with warnings.catch_warnings(): - # Silence Py3k warning - warnings.filterwarnings("ignore", "classic int division", - DeprecationWarning) - run_unittest(AugAssignTest) + run_unittest(AugAssignTest) if __name__ == '__main__': test_main() Modified: python/trunk/Lib/test/test_bigmem.py ============================================================================== --- python/trunk/Lib/test/test_bigmem.py (original) +++ python/trunk/Lib/test/test_bigmem.py Fri Jan 8 20:04:16 2010 @@ -97,21 +97,21 @@ def test_encode(self, size): return self.basic_encode_test(size, 'utf-8') - @precisionbigmemtest(size=_4G // 6 + 2, memuse=2) + @precisionbigmemtest(size=_4G / 6 + 2, memuse=2) def test_encode_raw_unicode_escape(self, size): try: return self.basic_encode_test(size, 'raw_unicode_escape') except MemoryError: pass # acceptable on 32-bit - @precisionbigmemtest(size=_4G // 5 + 70, memuse=3) + @precisionbigmemtest(size=_4G / 5 + 70, memuse=3) def test_encode_utf7(self, size): try: return self.basic_encode_test(size, 'utf7') except MemoryError: pass # acceptable on 32-bit - @precisionbigmemtest(size=_4G // 4 + 5, memuse=6) + @precisionbigmemtest(size=_4G / 4 + 5, memuse=6) def test_encode_utf32(self, size): try: return self.basic_encode_test(size, 'utf32', expectedsize=4*size+4) @@ -122,7 +122,7 @@ def test_decodeascii(self, size): return self.basic_encode_test(size, 'ascii', c='A') - @precisionbigmemtest(size=_4G // 5, memuse=6+2) + @precisionbigmemtest(size=_4G / 5, memuse=6+2) def test_unicode_repr_oflw(self, size): try: s = u"\uAAAA"*size @@ -516,7 +516,7 @@ self.assertEquals(s.count('\\'), size) self.assertEquals(s.count('0'), size * 2) - @bigmemtest(minsize=2**32 // 5, memuse=6+2) + @bigmemtest(minsize=2**32 / 5, memuse=6+2) def test_unicode_repr(self, size): s = u"\uAAAA" * size self.assertTrue(len(repr(s)) > size) @@ -1053,9 +1053,7 @@ @precisionbigmemtest(size=_1G, memuse=4) def test_repeat(self, size): try: - # Silence Py3k warning - with test_support.check_warnings(): - b = buffer("AAAA")*size + b = buffer("AAAA")*size except MemoryError: pass # acceptable on 32-bit else: Modified: python/trunk/Lib/test/test_binascii.py ============================================================================== --- python/trunk/Lib/test/test_binascii.py (original) +++ python/trunk/Lib/test/test_binascii.py Fri Jan 8 20:04:16 2010 @@ -26,10 +26,10 @@ prefixes.extend(["crc_", "rlecode_", "rledecode_"]) for prefix in prefixes: name = prefix + suffix - self.assertTrue(hasattr(getattr(binascii, name), '__call__')) + self.assertTrue(callable(getattr(binascii, name))) self.assertRaises(TypeError, getattr(binascii, name)) for name in ("hexlify", "unhexlify"): - self.assertTrue(hasattr(getattr(binascii, name), '__call__')) + self.assertTrue(callable(getattr(binascii, name))) self.assertRaises(TypeError, getattr(binascii, name)) def test_base64valid(self): Modified: python/trunk/Lib/test/test_binop.py ============================================================================== --- python/trunk/Lib/test/test_binop.py (original) +++ python/trunk/Lib/test/test_binop.py Fri Jan 8 20:04:16 2010 @@ -207,9 +207,6 @@ """Compare two Rats for inequality.""" return not self == other - # Silence Py3k warning - __hash__ = None - class RatTestCase(unittest.TestCase): """Unit tests for Rat class and its support utilities.""" Modified: python/trunk/Lib/test/test_bool.py ============================================================================== --- python/trunk/Lib/test/test_bool.py (original) +++ python/trunk/Lib/test/test_bool.py Fri Jan 8 20:04:16 2010 @@ -91,10 +91,10 @@ self.assertEqual(False*1, 0) self.assertIsNot(False*1, False) - self.assertEqual(True//1, 1) - self.assertIsNot(True//1, True) - self.assertEqual(False//1, 0) - self.assertIsNot(False//1, False) + self.assertEqual(True/1, 1) + self.assertIsNot(True/1, True) + self.assertEqual(False/1, 0) + self.assertIsNot(False/1, False) for b in False, True: for i in 0, 1, 2: @@ -168,8 +168,8 @@ self.assertIs(hasattr([], "wobble"), False) def test_callable(self): - self.assertTrue(hasattr(len, '__call__'), True) - self.assertFalse(hasattr(1, '__call__'), False) + self.assertIs(callable(len), True) + self.assertIs(callable(1), False) def test_isinstance(self): self.assertIs(isinstance(True, bool), True) @@ -184,12 +184,8 @@ self.assertIs(issubclass(int, bool), False) def test_haskey(self): - self.assertIs(1 in {}, False) - self.assertIs(1 in {1:1}, True) - # Silence Py3k warning - with test_support.check_warnings(): - self.assertIs({}.has_key(1), False) - self.assertIs({1:1}.has_key(1), True) + self.assertIs({}.has_key(1), False) + self.assertIs({1:1}.has_key(1), True) def test_string(self): self.assertIs("xyz".endswith("z"), True) @@ -261,10 +257,8 @@ import operator self.assertIs(operator.truth(0), False) self.assertIs(operator.truth(1), True) - # Silence Py3k warning - with test_support.check_warnings(): - self.assertIs(operator.isCallable(0), False) - self.assertIs(operator.isCallable(len), True) + self.assertIs(operator.isCallable(0), False) + self.assertIs(operator.isCallable(len), True) self.assertIs(operator.isNumberType(None), False) self.assertIs(operator.isNumberType(0), True) self.assertIs(operator.not_(1), False) Modified: python/trunk/Lib/test/test_buffer.py ============================================================================== --- python/trunk/Lib/test/test_buffer.py (original) +++ python/trunk/Lib/test/test_buffer.py Fri Jan 8 20:04:16 2010 @@ -6,7 +6,6 @@ import unittest from test import test_support -import warnings class BufferTests(unittest.TestCase): @@ -24,11 +23,7 @@ def test_main(): - with warnings.catch_warnings(): - # Silence Py3k warning - warnings.filterwarnings("ignore", "buffer.. not supported", - DeprecationWarning) - test_support.run_unittest(BufferTests) + test_support.run_unittest(BufferTests) if __name__ == "__main__": test_main() Modified: python/trunk/Lib/test/test_builtin.py ============================================================================== --- python/trunk/Lib/test/test_builtin.py (original) +++ python/trunk/Lib/test/test_builtin.py Fri Jan 8 20:04:16 2010 @@ -7,6 +7,10 @@ from operator import neg import sys, warnings, cStringIO, random, fractions, UserDict +warnings.filterwarnings("ignore", "hex../oct.. of negative int", + FutureWarning, __name__) +warnings.filterwarnings("ignore", "integer argument expected", + DeprecationWarning, "unittest") # count the number of test runs. # used to skip running test_execfile() multiple times @@ -415,11 +419,7 @@ f.write('z = z+1\n') f.write('z = z*2\n') f.close() - with warnings.catch_warnings(): - # Silence Py3k warning - warnings.filterwarnings("ignore", ".+ not supported in 3.x", - DeprecationWarning) - execfile(TESTFN) + execfile(TESTFN) def test_execfile(self): global numruns @@ -1542,30 +1542,17 @@ data = 'The quick Brown fox Jumped over The lazy Dog'.split() self.assertRaises(TypeError, sorted, data, None, lambda x,y: 0) -def _run_unittest(*args): - with warnings.catch_warnings(): - # Silence Py3k warnings - warnings.filterwarnings("ignore", ".+ not supported in 3.x", - DeprecationWarning) - warnings.filterwarnings("ignore", ".+ is renamed to imp.reload", - DeprecationWarning) - warnings.filterwarnings("ignore", "integer argument expected, got float", - DeprecationWarning) - warnings.filterwarnings("ignore", "classic int division", - DeprecationWarning) - run_unittest(*args) - def test_main(verbose=None): test_classes = (BuiltinTest, TestSorted) - _run_unittest(*test_classes) + run_unittest(*test_classes) # verify reference counting if verbose and hasattr(sys, "gettotalrefcount"): import gc counts = [None] * 5 for i in xrange(len(counts)): - _run_unittest(*test_classes) + run_unittest(*test_classes) gc.collect() counts[i] = sys.gettotalrefcount() print counts Modified: python/trunk/Lib/test/test_call.py ============================================================================== --- python/trunk/Lib/test/test_call.py (original) +++ python/trunk/Lib/test/test_call.py Fri Jan 8 20:04:16 2010 @@ -12,9 +12,7 @@ self.assertRaises(TypeError, {}.has_key) def test_varargs1(self): - # Silence Py3k warning - with test_support.check_warnings(): - {}.has_key(0) + {}.has_key(0) def test_varargs2(self): self.assertRaises(TypeError, {}.has_key, 0, 1) @@ -26,15 +24,11 @@ pass def test_varargs1_ext(self): - # Silence Py3k warning - with test_support.check_warnings(): - {}.has_key(*(0,)) + {}.has_key(*(0,)) def test_varargs2_ext(self): try: - # Silence Py3k warning - with test_support.check_warnings(): - {}.has_key(*(1, 2)) + {}.has_key(*(1, 2)) except TypeError: pass else: Modified: python/trunk/Lib/test/test_capi.py ============================================================================== --- python/trunk/Lib/test/test_capi.py (original) +++ python/trunk/Lib/test/test_capi.py Fri Jan 8 20:04:16 2010 @@ -55,7 +55,7 @@ context = foo() context.l = [] context.n = 2 #submits per thread - context.nThreads = n // context.n + context.nThreads = n / context.n context.nFinished = 0 context.lock = threading.Lock() context.event = threading.Event() Modified: python/trunk/Lib/test/test_cgi.py ============================================================================== --- python/trunk/Lib/test/test_cgi.py (original) +++ python/trunk/Lib/test/test_cgi.py Fri Jan 8 20:04:16 2010 @@ -104,7 +104,7 @@ def norm(list): if type(list) == type([]): - list.sort(key=str) + list.sort() return list def first_elts(list): Modified: python/trunk/Lib/test/test_class.py ============================================================================== --- python/trunk/Lib/test/test_class.py (original) +++ python/trunk/Lib/test/test_class.py Fri Jan 8 20:04:16 2010 @@ -1,7 +1,7 @@ "Test the functionality of Python classes implementing operators." import unittest -import warnings + from test import test_support testmeths = [ @@ -407,7 +407,7 @@ self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (testme, 1))]) callLst[:] = [] - eval('testme <> 1') # XXX kill this in py3k + testme <> 1 # XXX kill this in py3k self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (testme, 1))]) callLst[:] = [] @@ -427,7 +427,7 @@ self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (1, testme))]) callLst[:] = [] - eval('1 <> testme') + 1 <> testme self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (1, testme))]) callLst[:] = [] @@ -616,15 +616,7 @@ hash(a.f) def test_main(): - with warnings.catch_warnings(): - # Silence Py3k warnings - warnings.filterwarnings("ignore", ".+slice__ has been removed", - DeprecationWarning) - warnings.filterwarnings("ignore", "classic int division", - DeprecationWarning) - warnings.filterwarnings("ignore", "<> not supported", - DeprecationWarning) - test_support.run_unittest(ClassTests) + test_support.run_unittest(ClassTests) if __name__=='__main__': test_main() Modified: python/trunk/Lib/test/test_coercion.py ============================================================================== --- python/trunk/Lib/test/test_coercion.py (original) +++ python/trunk/Lib/test/test_coercion.py Fri Jan 8 20:04:16 2010 @@ -223,11 +223,8 @@ infix_results[key] = res -with warnings.catch_warnings(): - # Silence Py3k warning - warnings.filterwarnings("ignore", "classic int division", - DeprecationWarning) - process_infix_results() + +process_infix_results() # now infix_results has two lists of results for every pairing. prefix_binops = [ 'divmod' ] @@ -340,14 +337,11 @@ raise exc def test_main(): - with warnings.catch_warnings(): - # Silence Py3k warnings - warnings.filterwarnings("ignore", - "complex divmod.., // and % are deprecated", - DeprecationWarning) - warnings.filterwarnings("ignore", "classic .+ division", - DeprecationWarning) - run_unittest(CoercionTest) + warnings.filterwarnings("ignore", + r'complex divmod\(\), // and % are deprecated', + DeprecationWarning, + r'test.test_coercion$') + run_unittest(CoercionTest) if __name__ == "__main__": test_main() Modified: python/trunk/Lib/test/test_collections.py ============================================================================== --- python/trunk/Lib/test/test_collections.py (original) +++ python/trunk/Lib/test/test_collections.py Fri Jan 8 20:04:16 2010 @@ -510,10 +510,8 @@ [('a', 3), ('b', 2), ('c', 1)]) self.assertEqual(c['b'], 2) self.assertEqual(c['z'], 0) - # Silence Py3k warning - with test_support.check_warnings(): - self.assertEqual(c.has_key('c'), True) - self.assertEqual(c.has_key('z'), False) + self.assertEqual(c.has_key('c'), True) + self.assertEqual(c.has_key('z'), False) self.assertEqual(c.__contains__('c'), True) self.assertEqual(c.__contains__('z'), False) self.assertEqual(c.get('b', 10), 2) Modified: python/trunk/Lib/test/test_commands.py ============================================================================== --- python/trunk/Lib/test/test_commands.py (original) +++ python/trunk/Lib/test/test_commands.py Fri Jan 8 20:04:16 2010 @@ -9,10 +9,7 @@ warnings.filterwarnings('ignore', r".*commands.getstatus.. is deprecated", DeprecationWarning) -from test.test_support import run_unittest, reap_children, import_module - -# Silence Py3k warning -import_module('commands', deprecated=True) +from test.test_support import run_unittest, reap_children from commands import * # The module says: Modified: python/trunk/Lib/test/test_compile.py ============================================================================== --- python/trunk/Lib/test/test_compile.py (original) +++ python/trunk/Lib/test/test_compile.py Fri Jan 8 20:04:16 2010 @@ -2,7 +2,6 @@ import sys import _ast from test import test_support -import textwrap class TestSpecifics(unittest.TestCase): @@ -142,9 +141,7 @@ self.assertEqual(f(5), 0) def test_complex_args(self): - # Silence Py3k warning - with test_support.check_warnings(): - exec textwrap.dedent(''' + def comp_args((a, b)): return a,b self.assertEqual(comp_args((1, 2)), (1, 2)) @@ -162,7 +159,6 @@ return a, b, c self.assertEqual(comp_args(1, (2, 3)), (1, 2, 3)) self.assertEqual(comp_args(), (2, 3, 4)) - ''') def test_argument_order(self): try: Modified: python/trunk/Lib/test/test_compiler.py ============================================================================== --- python/trunk/Lib/test/test_compiler.py (original) +++ python/trunk/Lib/test/test_compiler.py Fri Jan 8 20:04:16 2010 @@ -75,7 +75,7 @@ def testTryExceptFinally(self): # Test that except and finally clauses in one try stmt are recognized - c = compiler.compile("try:\n 1//0\nexcept:\n e = 1\nfinally:\n f = 1", + c = compiler.compile("try:\n 1/0\nexcept:\n e = 1\nfinally:\n f = 1", "", "exec") dct = {} exec c in dct Modified: python/trunk/Lib/test/test_complex_args.py ============================================================================== --- python/trunk/Lib/test/test_complex_args.py (original) +++ python/trunk/Lib/test/test_complex_args.py Fri Jan 8 20:04:16 2010 @@ -1,31 +1,23 @@ import unittest from test import test_support -import textwrap -import warnings class ComplexArgsTestCase(unittest.TestCase): def check(self, func, expected, *args): self.assertEqual(func(*args), expected) - # These functions are tested below as lambdas too. If you add a - # function test, also add a similar lambda test. - - # Functions are wrapped in "exec" statements in order to - # silence Py3k warnings + # These functions are tested below as lambdas too. If you add a function test, + # also add a similar lambda test. def test_func_parens_no_unpacking(self): - exec textwrap.dedent(""" def f(((((x))))): return x self.check(f, 1, 1) # Inner parens are elided, same as: f(x,) def f(((x)),): return x self.check(f, 2, 2) - """) def test_func_1(self): - exec textwrap.dedent(""" def f(((((x),)))): return x self.check(f, 3, (3,)) def f(((((x)),))): return x @@ -34,22 +26,16 @@ self.check(f, 5, (5,)) def f(((x),)): return x self.check(f, 6, (6,)) - """) def test_func_2(self): - exec textwrap.dedent(""" def f(((((x)),),)): return x self.check(f, 2, ((2,),)) - """) def test_func_3(self): - exec textwrap.dedent(""" def f((((((x)),),),)): return x self.check(f, 3, (((3,),),)) - """) def test_func_complex(self): - exec textwrap.dedent(""" def f((((((x)),),),), a, b, c): return x, a, b, c self.check(f, (3, 9, 8, 7), (((3,),),), 9, 8, 7) @@ -58,22 +44,18 @@ def f(a, b, c, ((((((x)),)),),)): return a, b, c, x self.check(f, (9, 8, 7, 3), 9, 8, 7, (((3,),),)) - """) # Duplicate the tests above, but for lambda. If you add a lambda test, # also add a similar function test above. def test_lambda_parens_no_unpacking(self): - exec textwrap.dedent(""" f = lambda (((((x))))): x self.check(f, 1, 1) # Inner parens are elided, same as: f(x,) f = lambda ((x)),: x self.check(f, 2, 2) - """) def test_lambda_1(self): - exec textwrap.dedent(""" f = lambda (((((x),)))): x self.check(f, 3, (3,)) f = lambda (((((x)),))): x @@ -82,22 +64,16 @@ self.check(f, 5, (5,)) f = lambda (((x),)): x self.check(f, 6, (6,)) - """) def test_lambda_2(self): - exec textwrap.dedent(""" f = lambda (((((x)),),)): x self.check(f, 2, ((2,),)) - """) def test_lambda_3(self): - exec textwrap.dedent(""" f = lambda ((((((x)),),),)): x self.check(f, 3, (((3,),),)) - """) def test_lambda_complex(self): - exec textwrap.dedent(""" f = lambda (((((x)),),),), a, b, c: (x, a, b, c) self.check(f, (3, 9, 8, 7), (((3,),),), 9, 8, 7) @@ -106,17 +82,10 @@ f = lambda a, b, c, ((((((x)),)),),): (a, b, c, x) self.check(f, (9, 8, 7, 3), 9, 8, 7, (((3,),),)) - """) def test_main(): - with warnings.catch_warnings(): - # Silence Py3k warnings - warnings.filterwarnings("ignore", "tuple parameter unpacking " - "has been removed", SyntaxWarning) - warnings.filterwarnings("ignore", "parenthesized argument names " - "are invalid", SyntaxWarning) - test_support.run_unittest(ComplexArgsTestCase) + test_support.run_unittest(ComplexArgsTestCase) if __name__ == "__main__": test_main() Modified: python/trunk/Lib/test/test_copy.py ============================================================================== --- python/trunk/Lib/test/test_copy.py (original) +++ python/trunk/Lib/test/test_copy.py Fri Jan 8 20:04:16 2010 @@ -661,7 +661,7 @@ v = copy.deepcopy(u) self.assertNotEqual(v, u) self.assertEqual(len(v), 2) - (x, y), (z, t) = sorted(v.items(), key=lambda k: k[0].i) + (x, y), (z, t) = sorted(v.items(), key=lambda (k, v): k.i) self.assertFalse(x is a) self.assertEqual(x.i, a.i) self.assertTrue(y is b) Modified: python/trunk/Lib/test/test_ctypes.py ============================================================================== --- python/trunk/Lib/test/test_ctypes.py (original) +++ python/trunk/Lib/test/test_ctypes.py Fri Jan 8 20:04:16 2010 @@ -4,19 +4,12 @@ #Skip tests if _ctypes module does not exist import_module('_ctypes') -import warnings import ctypes.test def test_main(): skipped, testcases = ctypes.test.get_tests(ctypes.test, "test_*.py", verbosity=0) suites = [unittest.makeSuite(t) for t in testcases] - with warnings.catch_warnings(): - # Silence Py3k warnings - warnings.filterwarnings("ignore", "buffer.. not supported", - DeprecationWarning) - warnings.filterwarnings("ignore", "classic long division", - DeprecationWarning) - run_unittest(unittest.TestSuite(suites)) + run_unittest(unittest.TestSuite(suites)) if __name__ == "__main__": test_main() Modified: python/trunk/Lib/test/test_decimal.py ============================================================================== --- python/trunk/Lib/test/test_decimal.py (original) +++ python/trunk/Lib/test/test_decimal.py Fri Jan 8 20:04:16 2010 @@ -31,8 +31,7 @@ import unittest from decimal import * import numbers -from test.test_support import (run_unittest, run_doctest, - is_resource_enabled, check_warnings) +from test.test_support import (run_unittest, run_doctest, is_resource_enabled) import random try: import threading @@ -203,7 +202,7 @@ if skip_expected: raise unittest.SkipTest return - for line in open(file): + for line in open(file).xreadlines(): line = line.replace('\r\n', '').replace('\n', '') #print line try: @@ -362,10 +361,8 @@ myexceptions = self.getexceptions() self.context.clear_flags() - # Silence Py3k warning - with check_warnings(): - myexceptions.sort() - theirexceptions.sort() + myexceptions.sort() + theirexceptions.sort() self.assertEqual(result, ans, 'Incorrect answer for ' + s + ' -- got ' + result) @@ -620,14 +617,12 @@ ('//', '__floordiv__', '__rfloordiv__'), ('**', '__pow__', '__rpow__') ] - # Silence Py3k warning - with check_warnings(): - if 1/2 == 0: - # testing with classic division, so add __div__ - oplist.append(('/', '__div__', '__rdiv__')) - else: - # testing with -Qnew, so add __truediv__ - oplist.append(('/', '__truediv__', '__rtruediv__')) + if 1/2 == 0: + # testing with classic division, so add __div__ + oplist.append(('/', '__div__', '__rdiv__')) + else: + # testing with -Qnew, so add __truediv__ + oplist.append(('/', '__truediv__', '__rtruediv__')) for sym, lop, rop in oplist: setattr(E, lop, lambda self, other: 'str' + lop + str(other)) @@ -1199,10 +1194,8 @@ self.assertEqual(a, b) # with None - # Silence Py3k warning - with check_warnings(): - self.assertFalse(Decimal(1) < None) - self.assertTrue(Decimal(1) > None) + self.assertFalse(Decimal(1) < None) + self.assertTrue(Decimal(1) > None) def test_copy_and_deepcopy_methods(self): d = Decimal('43.24') @@ -1711,14 +1704,11 @@ for flag in extra_flags: if flag not in expected_flags: expected_flags.append(flag) + expected_flags.sort() # flags we actually got new_flags = [k for k,v in context.flags.items() if v] - - # Silence Py3k warning - with check_warnings(): - expected_flags.sort() - new_flags.sort() + new_flags.sort() self.assertEqual(ans, new_ans, "operation produces different answers depending on flags set: " + Modified: python/trunk/Lib/test/test_descr.py ============================================================================== --- python/trunk/Lib/test/test_descr.py (original) +++ python/trunk/Lib/test/test_descr.py Fri Jan 8 20:04:16 2010 @@ -4598,19 +4598,9 @@ def test_main(): - with warnings.catch_warnings(): - # Silence Py3k warnings - warnings.filterwarnings("ignore", "classic .+ division", - DeprecationWarning) - warnings.filterwarnings("ignore", "coerce.. not supported", - DeprecationWarning) - warnings.filterwarnings("ignore", "Overriding __cmp__ ", - DeprecationWarning) - warnings.filterwarnings("ignore", ".+slice__ has been removed", - DeprecationWarning) - # Run all local test cases, with PTypesLongInitTest first. - test_support.run_unittest(PTypesLongInitTest, OperatorsTest, - ClassPropertiesAndMethods, DictProxyTests) + # Run all local test cases, with PTypesLongInitTest first. + test_support.run_unittest(PTypesLongInitTest, OperatorsTest, + ClassPropertiesAndMethods, DictProxyTests) if __name__ == "__main__": test_main() Modified: python/trunk/Lib/test/test_descrtut.py ============================================================================== --- python/trunk/Lib/test/test_descrtut.py (original) +++ python/trunk/Lib/test/test_descrtut.py Fri Jan 8 20:04:16 2010 @@ -66,7 +66,7 @@ statement or the built-in function eval(): >>> def sorted(seq): - ... seq.sort(key=str) + ... seq.sort() ... return seq >>> print sorted(a.keys()) [1, 2] Modified: python/trunk/Lib/test/test_dict.py ============================================================================== --- python/trunk/Lib/test/test_dict.py (original) +++ python/trunk/Lib/test/test_dict.py Fri Jan 8 20:04:16 2010 @@ -33,12 +33,8 @@ self.assertEqual(d.keys(), []) d = {'a': 1, 'b': 2} k = d.keys() - self.assertTrue('a' in d) - self.assertTrue('b' in d) - # Silence Py3k warning - with test_support.check_warnings(): - self.assertTrue(d.has_key('a')) - self.assertTrue(d.has_key('b')) + self.assertTrue(d.has_key('a')) + self.assertTrue(d.has_key('b')) self.assertRaises(TypeError, d.keys, None) @@ -61,16 +57,14 @@ def test_has_key(self): d = {} - self.assertTrue('a' not in d) - # Silence Py3k warning - with test_support.check_warnings(): - self.assertTrue(not d.has_key('a')) - self.assertRaises(TypeError, d.has_key) + self.assertTrue(not d.has_key('a')) d = {'a': 1, 'b': 2} k = d.keys() k.sort() self.assertEqual(k, ['a', 'b']) + self.assertRaises(TypeError, d.has_key) + def test_contains(self): d = {} self.assertTrue(not ('a' in d)) @@ -401,6 +395,8 @@ self.assertRaises(Exc, repr, d) def test_le(self): + self.assertTrue(not ({} < {})) + self.assertTrue(not ({1: 2} < {1L: 2L})) class Exc(Exception): pass @@ -412,18 +408,12 @@ d1 = {BadCmp(): 1} d2 = {1: 1} - - # Silence Py3k warning - with test_support.check_warnings(): - self.assertTrue(not ({} < {})) - self.assertTrue(not ({1: 2} < {1L: 2L})) - - try: - d1 < d2 - except Exc: - pass - else: - self.fail("< didn't raise Exc") + try: + d1 < d2 + except Exc: + pass + else: + self.fail("< didn't raise Exc") def test_missing(self): # Make sure dict doesn't have a __missing__ method @@ -511,9 +501,7 @@ 'd.pop(x2)', 'd.update({x2: 2})']: try: - # Silence Py3k warning - with test_support.check_warnings(): - exec stmt in locals() + exec stmt in locals() except CustomException: pass else: @@ -561,7 +549,7 @@ # Bug #3537: if an empty but presized dict with a size larger # than 7 was in the freelist, it triggered an assertion failure try: - d = {'a': 1 // 0, 'b': None, 'c': None, 'd': None, 'e': None, + d = {'a': 1/0, 'b': None, 'c': None, 'd': None, 'e': None, 'f': None, 'g': None, 'h': None} except ZeroDivisionError: pass Modified: python/trunk/Lib/test/test_exceptions.py ============================================================================== --- python/trunk/Lib/test/test_exceptions.py (original) +++ python/trunk/Lib/test/test_exceptions.py Fri Jan 8 20:04:16 2010 @@ -7,7 +7,7 @@ import warnings from test.test_support import TESTFN, unlink, run_unittest, captured_output -from test.test_pep352 import ignore_deprecation_warnings +from test.test_pep352 import ignore_message_warning # XXX This is not really enough, each *operation* should be tested! @@ -17,7 +17,6 @@ # Reloading the built-in exceptions module failed prior to Py2.2, while it # should act the same as reloading built-in sys. try: - from imp import reload import exceptions reload(exceptions) except ImportError, e: @@ -109,11 +108,11 @@ self.assertRaises(ValueError, chr, 10000) self.raise_catch(ZeroDivisionError, "ZeroDivisionError") - try: x = 1 // 0 + try: x = 1/0 except ZeroDivisionError: pass self.raise_catch(Exception, "Exception") - try: x = 1 // 0 + try: x = 1/0 except Exception, e: pass def testSyntaxErrorMessage(self): @@ -198,7 +197,6 @@ self.assertEqual(WindowsError(1001, "message").errno, 22) self.assertEqual(WindowsError(1001, "message").winerror, 1001) - @ignore_deprecation_warnings def testAttributes(self): # test that exception attributes are happy @@ -276,32 +274,34 @@ except NameError: pass - for exc, args, expected in exceptionList: - try: - raise exc(*args) - except BaseException, e: - if type(e) is not exc: - raise - # Verify module name - self.assertEquals(type(e).__module__, 'exceptions') - # Verify no ref leaks in Exc_str() - s = str(e) - for checkArgName in expected: - self.assertEquals(repr(getattr(e, checkArgName)), - repr(expected[checkArgName]), - 'exception "%s", attribute "%s"' % - (repr(e), checkArgName)) - - # test for pickling support - for p in pickle, cPickle: - for protocol in range(p.HIGHEST_PROTOCOL + 1): - new = p.loads(p.dumps(e, protocol)) - for checkArgName in expected: - got = repr(getattr(new, checkArgName)) - want = repr(expected[checkArgName]) - self.assertEquals(got, want, - 'pickled "%r", attribute "%s"' % - (e, checkArgName)) + with warnings.catch_warnings(): + ignore_message_warning() + for exc, args, expected in exceptionList: + try: + raise exc(*args) + except BaseException, e: + if type(e) is not exc: + raise + # Verify module name + self.assertEquals(type(e).__module__, 'exceptions') + # Verify no ref leaks in Exc_str() + s = str(e) + for checkArgName in expected: + self.assertEquals(repr(getattr(e, checkArgName)), + repr(expected[checkArgName]), + 'exception "%s", attribute "%s"' % + (repr(e), checkArgName)) + + # test for pickling support + for p in pickle, cPickle: + for protocol in range(p.HIGHEST_PROTOCOL + 1): + new = p.loads(p.dumps(e, protocol)) + for checkArgName in expected: + got = repr(getattr(new, checkArgName)) + want = repr(expected[checkArgName]) + self.assertEquals(got, want, + 'pickled "%r", attribute "%s"' % + (e, checkArgName)) def testDeprecatedMessageAttribute(self): @@ -330,7 +330,6 @@ with self.assertRaises(AttributeError): exc.message - @ignore_deprecation_warnings def testPickleMessageAttribute(self): # Pickling with message attribute must work, as well. e = Exception("foo") @@ -338,7 +337,9 @@ f.message = "bar" for p in pickle, cPickle: ep = p.loads(p.dumps(e)) - self.assertEqual(ep.message, "foo") + with warnings.catch_warnings(): + ignore_message_warning() + self.assertEqual(ep.message, "foo") fp = p.loads(p.dumps(f)) self.assertEqual(fp.message, "bar") @@ -347,12 +348,7 @@ # going through the 'args' attribute. args = (1, 2, 3) exc = BaseException(*args) - self.assertEqual(exc.args[:], args) - with warnings.catch_warnings(): - # Silence Py3k warning - warnings.filterwarnings("ignore", "__getslice__ not supported for " - "exception classes", DeprecationWarning) - self.assertEqual(exc[:], args) + self.assertEqual(exc[:], args) def testKeywordArgs(self): # test that builtin exception don't take keyword args, Modified: python/trunk/Lib/test/test_file.py ============================================================================== --- python/trunk/Lib/test/test_file.py (original) +++ python/trunk/Lib/test/test_file.py Fri Jan 8 20:04:16 2010 @@ -127,7 +127,7 @@ self.assertEquals(self.f.__exit__(None, None, None), None) # it must also return None if an exception was given try: - 1 // 0 + 1/0 except: self.assertEquals(self.f.__exit__(*sys.exc_info()), None) Modified: python/trunk/Lib/test/test_file2k.py ============================================================================== --- python/trunk/Lib/test/test_file2k.py (original) +++ python/trunk/Lib/test/test_file2k.py Fri Jan 8 20:04:16 2010 @@ -34,17 +34,13 @@ def testAttributes(self): # verify expected attributes exist f = self.f - # Silence Py3k warning - with test_support.check_warnings(): - softspace = f.softspace + softspace = f.softspace f.name # merely shouldn't blow up f.mode # ditto f.closed # ditto - # Silence Py3k warning - with test_support.check_warnings(): - # verify softspace is writable - f.softspace = softspace # merely shouldn't blow up + # verify softspace is writable + f.softspace = softspace # merely shouldn't blow up # verify the others aren't for attr in 'name', 'mode', 'closed': @@ -102,8 +98,7 @@ def testMethods(self): methods = ['fileno', 'flush', 'isatty', 'next', 'read', 'readinto', 'readline', 'readlines', 'seek', 'tell', 'truncate', - 'write', '__iter__'] - deprecated_methods = ['xreadlines'] + 'write', 'xreadlines', '__iter__'] if sys.platform.startswith('atheos'): methods.remove('truncate') @@ -115,18 +110,13 @@ method = getattr(self.f, methodname) # should raise on closed file self.assertRaises(ValueError, method) - # Silence Py3k warning - with test_support.check_warnings(): - for methodname in deprecated_methods: - method = getattr(self.f, methodname) - self.assertRaises(ValueError, method) self.assertRaises(ValueError, self.f.writelines, []) # file is closed, __exit__ shouldn't do anything self.assertEquals(self.f.__exit__(None, None, None), None) # it must also return None if an exception was given try: - 1 // 0 + 1/0 except: self.assertEquals(self.f.__exit__(*sys.exc_info()), None) @@ -192,12 +182,12 @@ try: f = open(TESTFN, bad_mode) except ValueError, msg: - if msg.args[0] != 0: + if msg[0] != 0: s = str(msg) if s.find(TESTFN) != -1 or s.find(bad_mode) == -1: self.fail("bad error message for invalid mode: %s" % s) - # if msg.args[0] == 0, we're probably on Windows where there may - # be no obvious way to discover why open() failed. + # if msg[0] == 0, we're probably on Windows where there may be + # no obvious way to discover why open() failed. else: f.close() self.fail("no error for invalid mode: %s" % bad_mode) Modified: python/trunk/Lib/test/test_fractions.py ============================================================================== --- python/trunk/Lib/test/test_fractions.py (original) +++ python/trunk/Lib/test/test_fractions.py Fri Jan 8 20:04:16 2010 @@ -43,10 +43,6 @@ assert False, "__sub__ should not be invoked for comparisons" __rsub__ = __sub__ - # Silence Py3k warning - def __hash__(self): - assert False, "__hash__ should not be invoked for comparisons" - class DummyRational(object): """Test comparison of Fraction with a naive rational implementation.""" @@ -80,11 +76,6 @@ def __float__(self): assert False, "__float__ should not be invoked" - # Silence Py3k warning - def __hash__(self): - assert False, "__hash__ should not be invoked for comparisons" - - class GcdTest(unittest.TestCase): def testMisc(self): Modified: python/trunk/Lib/test/test_ftplib.py ============================================================================== --- python/trunk/Lib/test/test_ftplib.py (original) +++ python/trunk/Lib/test/test_ftplib.py Fri Jan 8 20:04:16 2010 @@ -100,7 +100,7 @@ sock.listen(5) sock.settimeout(2) ip, port = sock.getsockname()[:2] - ip = ip.replace('.', ','); p1, p2 = divmod(port, 256) + ip = ip.replace('.', ','); p1 = port / 256; p2 = port % 256 self.push('227 entering passive mode (%s,%d,%d)' %(ip, p1, p2)) conn, addr = sock.accept() self.dtp = self.dtp_handler(conn, baseclass=self) Modified: python/trunk/Lib/test/test_functools.py ============================================================================== --- python/trunk/Lib/test/test_functools.py (original) +++ python/trunk/Lib/test/test_functools.py Fri Jan 8 20:04:16 2010 @@ -116,7 +116,7 @@ def test_error_propagation(self): def f(x, y): - x // y + x / y self.assertRaises(ZeroDivisionError, self.thetype(f, 1, 0)) self.assertRaises(ZeroDivisionError, self.thetype(f, 1), 0) self.assertRaises(ZeroDivisionError, self.thetype(f), 1, 0) Modified: python/trunk/Lib/test/test_grammar.py ============================================================================== --- python/trunk/Lib/test/test_grammar.py (original) +++ python/trunk/Lib/test/test_grammar.py Fri Jan 8 20:04:16 2010 @@ -11,7 +11,6 @@ from test.test_support import run_unittest, check_syntax_error import unittest import sys -import warnings # testing import * from sys import * @@ -153,9 +152,8 @@ f1(*(), **{}) def f2(one_argument): pass def f3(two, arguments): pass - # Silence Py3k warning - exec('def f4(two, (compound, (argument, list))): pass') - exec('def f5((compound, first), two): pass') + def f4(two, (compound, (argument, list))): pass + def f5((compound, first), two): pass self.assertEquals(f2.func_code.co_varnames, ('one_argument',)) self.assertEquals(f3.func_code.co_varnames, ('two', 'arguments')) if sys.platform.startswith('java'): @@ -174,8 +172,7 @@ def v0(*rest): pass def v1(a, *rest): pass def v2(a, b, *rest): pass - # Silence Py3k warning - exec('def v3(a, (b, c), *rest): return a, b, c, rest') + def v3(a, (b, c), *rest): return a, b, c, rest f1() f2(1) @@ -280,10 +277,9 @@ d22v(*(1, 2, 3, 4)) d22v(1, 2, *(3, 4, 5)) d22v(1, *(2, 3), **{'d': 4}) - # Silence Py3k warning - exec('def d31v((x)): pass') - exec('def d32v((x,)): pass') + def d31v((x)): pass d31v(1) + def d32v((x,)): pass d32v((1,)) # keyword arguments after *arglist @@ -478,7 +474,7 @@ continue except: raise - if count > 2 or big_hippo != 1: + if count > 2 or big_hippo <> 1: self.fail("continue then break in try/except in loop broken!") test_inner() @@ -681,6 +677,7 @@ x = (1 == 1) if 1 == 1: pass if 1 != 1: pass + if 1 <> 1: pass if 1 < 1: pass if 1 > 1: pass if 1 <= 1: pass @@ -689,10 +686,7 @@ if 1 is not 1: pass if 1 in (): pass if 1 not in (): pass - if 1 < 1 > 1 == 1 >= 1 <= 1 != 1 in 1 not in 1 is 1 is not 1: pass - # Silence Py3k warning - if eval('1 <> 1'): pass - if eval('1 < 1 > 1 == 1 >= 1 <= 1 <> 1 != 1 in 1 not in 1 is 1 is not 1'): pass + if 1 < 1 > 1 == 1 >= 1 <= 1 <> 1 != 1 in 1 not in 1 is 1 is not 1: pass def testBinaryMaskOps(self): x = 1 & 1 @@ -775,10 +769,9 @@ x = {'one': 1, 'two': 2,} x = {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6} - # Silence Py3k warning - x = eval('`x`') - x = eval('`1 or 2 or 3`') - self.assertEqual(eval('`1,2`'), '(1, 2)') + x = `x` + x = `1 or 2 or 3` + self.assertEqual(`1,2`, '(1, 2)') x = x x = 'x' @@ -983,19 +976,7 @@ def test_main(): - with warnings.catch_warnings(): - # Silence Py3k warnings - warnings.filterwarnings("ignore", "backquote not supported", - SyntaxWarning) - warnings.filterwarnings("ignore", "tuple parameter unpacking has been removed", - SyntaxWarning) - warnings.filterwarnings("ignore", "parenthesized argument names are invalid", - SyntaxWarning) - warnings.filterwarnings("ignore", "classic int division", - DeprecationWarning) - warnings.filterwarnings("ignore", ".+ not supported in 3.x", - DeprecationWarning) - run_unittest(TokenTests, GrammarTests) + run_unittest(TokenTests, GrammarTests) if __name__ == '__main__': test_main() Modified: python/trunk/Lib/test/test_gzip.py ============================================================================== --- python/trunk/Lib/test/test_gzip.py (original) +++ python/trunk/Lib/test/test_gzip.py Fri Jan 8 20:04:16 2010 @@ -246,11 +246,11 @@ self.fail("__enter__ on a closed file didn't raise an exception") try: with gzip.GzipFile(self.filename, "wb") as f: - 1 // 0 + 1/0 except ZeroDivisionError: pass else: - self.fail("1 // 0 didn't raise an exception") + self.fail("1/0 didn't raise an exception") def test_main(verbose=None): test_support.run_unittest(TestGzip) Modified: python/trunk/Lib/test/test_heapq.py ============================================================================== --- python/trunk/Lib/test/test_heapq.py (original) +++ python/trunk/Lib/test/test_heapq.py Fri Jan 8 20:04:16 2010 @@ -356,8 +356,7 @@ for f in (self.module.nlargest, self.module.nsmallest): for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)): for g in (G, I, Ig, L, R): - with test_support.check_warnings(): - self.assertEqual(f(2, g(s)), f(2,s)) + self.assertEqual(f(2, g(s)), f(2,s)) self.assertEqual(f(2, S(s)), []) self.assertRaises(TypeError, f, 2, X(s)) self.assertRaises(TypeError, f, 2, N(s)) Modified: python/trunk/Lib/test/test_hotshot.py ============================================================================== --- python/trunk/Lib/test/test_hotshot.py (original) +++ python/trunk/Lib/test/test_hotshot.py Fri Jan 8 20:04:16 2010 @@ -1,3 +1,5 @@ +import hotshot +import hotshot.log import os import pprint import unittest @@ -7,8 +9,6 @@ from test import test_support -# Silence Py3k warning -hotshot = test_support.import_module('hotshot', deprecated=True) from hotshot.log import ENTER, EXIT, LINE Modified: python/trunk/Lib/test/test_import.py ============================================================================== --- python/trunk/Lib/test/test_import.py (original) +++ python/trunk/Lib/test/test_import.py Fri Jan 8 20:04:16 2010 @@ -7,7 +7,6 @@ import py_compile import warnings import marshal -from imp import reload from test.test_support import (unlink, TESTFN, unload, run_unittest, check_warnings, TestFailed, EnvironmentVarGuard) @@ -57,10 +56,11 @@ f.close() try: - mod = __import__(TESTFN) - except ImportError, err: - self.fail("import from %s failed: %s" % (ext, err)) - else: + try: + mod = __import__(TESTFN) + except ImportError, err: + self.fail("import from %s failed: %s" % (ext, err)) + self.assertEquals(mod.a, a, "module loaded (%s) but contents invalid" % mod) self.assertEquals(mod.b, b, @@ -69,9 +69,10 @@ os.unlink(source) try: - reload(mod) - except ImportError, err: - self.fail("import from .pyc/.pyo failed: %s" % err) + try: + reload(mod) + except ImportError, err: + self.fail("import from .pyc/.pyo failed: %s" % err) finally: try: os.unlink(pyc) @@ -171,7 +172,7 @@ def test_failing_import_sticks(self): source = TESTFN + os.extsep + "py" f = open(source, "w") - print >> f, "a = 1 // 0" + print >> f, "a = 1/0" f.close() # New in 2.4, we shouldn't be able to import that no matter how often Modified: python/trunk/Lib/test/test_importhooks.py ============================================================================== --- python/trunk/Lib/test/test_importhooks.py (original) +++ python/trunk/Lib/test/test_importhooks.py Fri Jan 8 20:04:16 2010 @@ -180,7 +180,7 @@ self.assertFalse(hasattr(reloadmodule,'reloaded')) TestImporter.modules['reloadmodule'] = (False, reload_co) - imp.reload(reloadmodule) + reload(reloadmodule) self.assertTrue(hasattr(reloadmodule,'reloaded')) import hooktestpackage.oldabs @@ -247,11 +247,9 @@ for n in sys.modules.keys(): if n.startswith(parent): del sys.modules[n] - # Silence Py3k warning - with test_support.check_warnings(): - for mname in mnames: - m = __import__(mname, globals(), locals(), ["__dummy__"]) - m.__loader__ # to make sure we actually handled the import + for mname in mnames: + m = __import__(mname, globals(), locals(), ["__dummy__"]) + m.__loader__ # to make sure we actually handled the import def test_main(): Modified: python/trunk/Lib/test/test_inspect.py ============================================================================== --- python/trunk/Lib/test/test_inspect.py (original) +++ python/trunk/Lib/test/test_inspect.py Fri Jan 8 20:04:16 2010 @@ -4,11 +4,10 @@ import inspect import datetime -from test.test_support import TESTFN, run_unittest, check_warnings +from test.test_support import TESTFN, run_unittest -with check_warnings(): - from test import inspect_fodder as mod - from test import inspect_fodder2 as mod2 +from test import inspect_fodder as mod +from test import inspect_fodder2 as mod2 # C module for test_findsource_binary import unicodedata @@ -30,7 +29,7 @@ import __builtin__ try: - 1 // 0 + 1/0 except: tb = sys.exc_traceback @@ -168,7 +167,7 @@ self.assertEqual(git.tr[1][1:], (modfile, 9, 'spam', [' eggs(b + d, c + f)\n'], 0)) self.assertEqual(git.tr[2][1:], (modfile, 18, 'eggs', - [' q = y // 0\n'], 0)) + [' q = y / 0\n'], 0)) def test_frame(self): args, varargs, varkw, locals = inspect.getargvalues(mod.fr) @@ -419,13 +418,11 @@ self.assertArgSpecEquals(A.m, ['self']) def test_getargspec_sublistofone(self): - # Silence Py3k warning - with check_warnings(): - exec 'def sublistOfOne((foo,)): return 1' - self.assertArgSpecEquals(sublistOfOne, [['foo']]) + def sublistOfOne((foo,)): return 1 + self.assertArgSpecEquals(sublistOfOne, [['foo']]) - exec 'def fakeSublistOfOne((foo)): return 1' - self.assertArgSpecEquals(fakeSublistOfOne, ['foo']) + def fakeSublistOfOne((foo)): return 1 + self.assertArgSpecEquals(fakeSublistOfOne, ['foo']) def test_classify_oldstyle(self): class A: Modified: python/trunk/Lib/test/test_io.py ============================================================================== --- python/trunk/Lib/test/test_io.py (original) +++ python/trunk/Lib/test/test_io.py Fri Jan 8 20:04:16 2010 @@ -381,11 +381,11 @@ f = None try: with self.open(support.TESTFN, "wb", bufsize) as f: - 1 // 0 + 1/0 except ZeroDivisionError: self.assertEqual(f.closed, True) else: - self.fail("1 // 0 didn't raise an exception") + self.fail("1/0 didn't raise an exception") # issue 5008 def test_append_mode_tell(self): Modified: python/trunk/Lib/test/test_iter.py ============================================================================== --- python/trunk/Lib/test/test_iter.py (original) +++ python/trunk/Lib/test/test_iter.py Fri Jan 8 20:04:16 2010 @@ -1,8 +1,7 @@ # Test iterators. import unittest -from test.test_support import run_unittest, TESTFN, unlink, have_unicode, \ - check_warnings +from test.test_support import run_unittest, TESTFN, unlink, have_unicode # Test result of triple loop (too big to inline) TRIPLETS = [(0, 0, 0), (0, 0, 1), (0, 0, 2), @@ -396,12 +395,7 @@ pass # Test map()'s use of iterators. - def test_deprecated_builtin_map(self): - # Silence Py3k warning - with check_warnings(): - self._test_builtin_map() - - def _test_builtin_map(self): + def test_builtin_map(self): self.assertEqual(map(None, SequenceClass(5)), range(5)) self.assertEqual(map(lambda x: x+1, SequenceClass(5)), range(1, 6)) @@ -512,12 +506,7 @@ self.assertEqual(zip(x, y), expected) # Test reduces()'s use of iterators. - def test_deprecated_builtin_reduce(self): - # Silence Py3k warning - with check_warnings(): - self._test_builtin_reduce() - - def _test_builtin_reduce(self): + def test_builtin_reduce(self): from operator import add self.assertEqual(reduce(add, SequenceClass(5)), 10) self.assertEqual(reduce(add, SequenceClass(5), 42), 52) Modified: python/trunk/Lib/test/test_itertools.py ============================================================================== --- python/trunk/Lib/test/test_itertools.py (original) +++ python/trunk/Lib/test/test_itertools.py Fri Jan 8 20:04:16 2010 @@ -9,7 +9,6 @@ import random import copy import pickle -from functools import reduce maxsize = test_support.MAX_Py_ssize_t minsize = -maxsize-1 @@ -123,7 +122,7 @@ values = [5*x-12 for x in range(n)] for r in range(n+2): result = list(combinations(values, r)) - self.assertEqual(len(result), 0 if r>n else fact(n) // fact(r) // fact(n-r)) # right number of combs + self.assertEqual(len(result), 0 if r>n else fact(n) / fact(r) / fact(n-r)) # right number of combs self.assertEqual(len(result), len(set(result))) # no repeats self.assertEqual(result, sorted(result)) # lexicographic order for c in result: @@ -179,7 +178,7 @@ def numcombs(n, r): if not n: return 0 if r else 1 - return fact(n+r-1) // fact(r) // fact(n-1) + return fact(n+r-1) / fact(r)/ fact(n-1) for n in range(7): values = [5*x-12 for x in range(n)] @@ -258,7 +257,7 @@ values = [5*x-12 for x in range(n)] for r in range(n+2): result = list(permutations(values, r)) - self.assertEqual(len(result), 0 if r>n else fact(n) // fact(n-r)) # right number of perms + self.assertEqual(len(result), 0 if r>n else fact(n) / fact(n-r)) # right number of perms self.assertEqual(len(result), len(set(result))) # no repeats self.assertEqual(result, sorted(result)) # lexicographic order for p in result: @@ -289,9 +288,9 @@ # Check size self.assertEquals(len(prod), n**r) - self.assertEquals(len(cwr), (fact(n+r-1) // fact(r) // fact(n-1)) if n else (not r)) - self.assertEquals(len(perm), 0 if r>n else fact(n) // fact(n-r)) - self.assertEquals(len(comb), 0 if r>n else fact(n) // fact(r) // fact(n-r)) + self.assertEquals(len(cwr), (fact(n+r-1) / fact(r)/ fact(n-1)) if n else (not r)) + self.assertEquals(len(perm), 0 if r>n else fact(n) / fact(n-r)) + self.assertEquals(len(comb), 0 if r>n else fact(n) / fact(r) / fact(n-r)) # Check lexicographic order without repeated tuples self.assertEquals(prod, sorted(set(prod))) @@ -544,8 +543,7 @@ [range(1000), range(0), range(3000,3050), range(1200), range(1500)], [range(1000), range(0), range(3000,3050), range(1200), range(1500), range(0)], ]: - target = [tuple([arg[i] if i < len(arg) else None for arg in args]) - for i in range(max(map(len, args)))] + target = map(None, *args) self.assertEqual(list(izip_longest(*args)), target) self.assertEqual(list(izip_longest(*args, **{})), target) target = [tuple((e is None and 'X' or e) for e in t) for t in target] # Replace None fills with 'X' @@ -557,8 +555,7 @@ self.assertEqual(list(izip_longest([])), zip([])) self.assertEqual(list(izip_longest('abcdef')), zip('abcdef')) - self.assertEqual(list(izip_longest('abc', 'defg', **{})), - zip(list('abc') + [None], 'defg')) # empty keyword dict + self.assertEqual(list(izip_longest('abc', 'defg', **{})), map(None, 'abc', 'defg')) # empty keyword dict self.assertRaises(TypeError, izip_longest, 3) self.assertRaises(TypeError, izip_longest, range(3), 3) @@ -1434,7 +1431,7 @@ # is differencing with a range so that consecutive numbers all appear in # same group. >>> data = [ 1, 4,5,6, 10, 15,16,17,18, 22, 25,26,27,28] ->>> for k, g in groupby(enumerate(data), lambda t:t[0]-t[1]): +>>> for k, g in groupby(enumerate(data), lambda (i,x):i-x): ... print map(operator.itemgetter(1), g) ... [1] Modified: python/trunk/Lib/test/test_json.py ============================================================================== --- python/trunk/Lib/test/test_json.py (original) +++ python/trunk/Lib/test/test_json.py Fri Jan 8 20:04:16 2010 @@ -7,15 +7,10 @@ import json.tests import test.test_support -import warnings def test_main(): - with warnings.catch_warnings(): - # Silence Py3k warning - warnings.filterwarnings("ignore", "comparing unequal types " - "not supported", DeprecationWarning) - test.test_support.run_unittest(json.tests.test_suite()) + test.test_support.run_unittest(json.tests.test_suite()) if __name__ == "__main__": Modified: python/trunk/Lib/test/test_linuxaudiodev.py ============================================================================== --- python/trunk/Lib/test/test_linuxaudiodev.py (original) +++ python/trunk/Lib/test/test_linuxaudiodev.py Fri Jan 8 20:04:16 2010 @@ -4,13 +4,12 @@ from test.test_support import findfile, run_unittest import errno +linuxaudiodev = test_support.import_module('linuxaudiodev', deprecated=True) import sys +import sunaudio import audioop import unittest -linuxaudiodev = test_support.import_module('linuxaudiodev', deprecated=True) -sunaudio = test_support.import_module('sunaudio', deprecated=True) - SND_FORMAT_MULAW_8 = 1 class LinuxAudioDevTests(unittest.TestCase): Modified: python/trunk/Lib/test/test_long.py ============================================================================== --- python/trunk/Lib/test/test_long.py (original) +++ python/trunk/Lib/test/test_long.py Fri Jan 8 20:04:16 2010 @@ -575,13 +575,11 @@ def __getslice__(self, i, j): return i, j - # Silence Py3k warning - with test_support.check_warnings(): - self.assertEqual(X()[-5L:7L], (-5, 7)) - # use the clamping effect to test the smallest and largest longs - # that fit a Py_ssize_t - slicemin, slicemax = X()[-2L**100:2L**100] - self.assertEqual(X()[slicemin:slicemax], (slicemin, slicemax)) + self.assertEqual(X()[-5L:7L], (-5, 7)) + # use the clamping effect to test the smallest and largest longs + # that fit a Py_ssize_t + slicemin, slicemax = X()[-2L**100:2L**100] + self.assertEqual(X()[slicemin:slicemax], (slicemin, slicemax)) # ----------------------------------- tests of auto int->long conversion @@ -621,10 +619,8 @@ checkit(x, '*', y) if y: - # Silence Py3k warning - with test_support.check_warnings(): - expected = longx / longy - got = x / y + expected = longx / longy + got = x / y checkit(x, '/', y) expected = longx // longy Modified: python/trunk/Lib/test/test_mailbox.py ============================================================================== --- python/trunk/Lib/test/test_mailbox.py (original) +++ python/trunk/Lib/test/test_mailbox.py Fri Jan 8 20:04:16 2010 @@ -5,6 +5,7 @@ import socket import email import email.message +import rfc822 import re import StringIO from test import test_support @@ -16,8 +17,6 @@ except ImportError: pass -# Silence Py3k warning -rfc822 = test_support.import_module('rfc822') class TestBase(unittest.TestCase): Modified: python/trunk/Lib/test/test_marshal.py ============================================================================== --- python/trunk/Lib/test/test_marshal.py (original) +++ python/trunk/Lib/test/test_marshal.py Fri Jan 8 20:04:16 2010 @@ -129,9 +129,7 @@ def test_buffer(self): for s in ["", "Andr? Previn", "abc", " "*10000]: - # Silence Py3k warning - with test_support.check_warnings(): - b = buffer(s) + b = buffer(s) new = marshal.loads(marshal.dumps(b)) self.assertEqual(s, new) marshal.dump(b, file(test_support.TESTFN, "wb")) Modified: python/trunk/Lib/test/test_multibytecodec_support.py ============================================================================== --- python/trunk/Lib/test/test_multibytecodec_support.py (original) +++ python/trunk/Lib/test/test_multibytecodec_support.py Fri Jan 8 20:04:16 2010 @@ -307,7 +307,7 @@ continue unich = unichrs(data[1]) - if ord(unich) == 0xfffd or unich in urt_wa: + if ord(unich) == 0xfffd or urt_wa.has_key(unich): continue urt_wa[unich] = csetch Modified: python/trunk/Lib/test/test_multifile.py ============================================================================== --- python/trunk/Lib/test/test_multifile.py (original) +++ python/trunk/Lib/test/test_multifile.py Fri Jan 8 20:04:16 2010 @@ -1,5 +1,5 @@ from test import test_support -mimetools = test_support.import_module("mimetools", deprecated=True) +import mimetools multifile = test_support.import_module('multifile', deprecated=True) import cStringIO Modified: python/trunk/Lib/test/test_multiprocessing.py ============================================================================== --- python/trunk/Lib/test/test_multiprocessing.py (original) +++ python/trunk/Lib/test/test_multiprocessing.py Fri Jan 8 20:04:16 2010 @@ -19,7 +19,6 @@ import logging from test import test_support from StringIO import StringIO -import warnings _multiprocessing = test_support.import_module('_multiprocessing') @@ -1992,11 +1991,7 @@ loadTestsFromTestCase = unittest.defaultTestLoader.loadTestsFromTestCase suite = unittest.TestSuite(loadTestsFromTestCase(tc) for tc in testcases) - with warnings.catch_warnings(): - # Silence Py3k warnings - warnings.filterwarnings("ignore", ".+slice__ has been removed", - DeprecationWarning) - run(suite) + run(suite) ThreadsMixin.pool.terminate() ProcessesMixin.pool.terminate() Modified: python/trunk/Lib/test/test_mutants.py ============================================================================== --- python/trunk/Lib/test/test_mutants.py (original) +++ python/trunk/Lib/test/test_mutants.py Fri Jan 8 20:04:16 2010 @@ -210,7 +210,7 @@ # Tim sez: "luck of the draw; crashes with or without for me." print >> f - return repr("machiavelli") + return `"machiavelli"` def __hash__(self): return 0 Modified: python/trunk/Lib/test/test_opcodes.py ============================================================================== --- python/trunk/Lib/test/test_opcodes.py (original) +++ python/trunk/Lib/test/test_opcodes.py Fri Jan 8 20:04:16 2010 @@ -2,7 +2,6 @@ from test.test_support import run_unittest import unittest -import warnings class OpcodeTest(unittest.TestCase): @@ -10,7 +9,7 @@ n = 0 for i in range(10): n = n+i - try: 1 // 0 + try: 1/0 except NameError: pass except ZeroDivisionError: pass except TypeError: pass @@ -111,14 +110,7 @@ def test_main(): - with warnings.catch_warnings(): - # Silence Py3k warning - warnings.filterwarnings("ignore", "exceptions must derive from " - "BaseException", DeprecationWarning) - warnings.filterwarnings("ignore", "catching classes that don't " - "inherit from BaseException is not allowed", - DeprecationWarning) - run_unittest(OpcodeTest) + run_unittest(OpcodeTest) if __name__ == '__main__': test_main() Modified: python/trunk/Lib/test/test_operator.py ============================================================================== --- python/trunk/Lib/test/test_operator.py (original) +++ python/trunk/Lib/test/test_operator.py Fri Jan 8 20:04:16 2010 @@ -192,12 +192,11 @@ class C: pass def check(self, o, v): - with test_support.check_warnings(): - self.assertTrue(operator.isCallable(o) == callable(o) == v) - check(self, 4, False) - check(self, operator.isCallable, True) - check(self, C, True) - check(self, C(), False) + self.assertTrue(operator.isCallable(o) == callable(o) == v) + check(self, 4, 0) + check(self, operator.isCallable, 1) + check(self, C, 1) + check(self, C(), 0) def test_isMappingType(self): self.assertRaises(TypeError, operator.isMappingType) @@ -307,10 +306,8 @@ self.assertRaises(TypeError, operator.contains, None, None) self.assertTrue(operator.contains(range(4), 2)) self.assertFalse(operator.contains(range(4), 5)) - # Silence Py3k warning - with test_support.check_warnings(): - self.assertTrue(operator.sequenceIncludes(range(4), 2)) - self.assertFalse(operator.sequenceIncludes(range(4), 5)) + self.assertTrue(operator.sequenceIncludes(range(4), 2)) + self.assertFalse(operator.sequenceIncludes(range(4), 5)) def test_setitem(self): a = range(3) Modified: python/trunk/Lib/test/test_optparse.py ============================================================================== --- python/trunk/Lib/test/test_optparse.py (original) +++ python/trunk/Lib/test/test_optparse.py Fri Jan 8 20:04:16 2010 @@ -26,6 +26,12 @@ from optparse import _match_abbrev from optparse import _parse_num +# Do the right thing with boolean values for all known Python versions. +try: + True, False +except NameError: + (True, False) = (1, 0) + retype = type(re.compile('')) class InterceptedError(Exception): Modified: python/trunk/Lib/test/test_ossaudiodev.py ============================================================================== --- python/trunk/Lib/test/test_ossaudiodev.py (original) +++ python/trunk/Lib/test/test_ossaudiodev.py Fri Jan 8 20:04:16 2010 @@ -71,7 +71,7 @@ self.fail("dsp.%s not read-only" % attr) # Compute expected running time of sound sample (in seconds). - expected_time = float(len(data)) / (ssize//8) / nchannels / rate + expected_time = float(len(data)) / (ssize/8) / nchannels / rate # set parameters based on .au file headers dsp.setparameters(AFMT_S16_NE, nchannels, rate) Modified: python/trunk/Lib/test/test_peepholer.py ============================================================================== --- python/trunk/Lib/test/test_peepholer.py (original) +++ python/trunk/Lib/test/test_peepholer.py Fri Jan 8 20:04:16 2010 @@ -205,24 +205,18 @@ def test_main(verbose=None): import sys from test import test_support - import warnings test_classes = (TestTranforms,) + test_support.run_unittest(*test_classes) - with warnings.catch_warnings(): - # Silence Py3k warning - warnings.filterwarnings("ignore", "backquote not supported", - SyntaxWarning) - test_support.run_unittest(*test_classes) - - # verify reference counting - if verbose and hasattr(sys, "gettotalrefcount"): - import gc - counts = [None] * 5 - for i in xrange(len(counts)): - test_support.run_unittest(*test_classes) - gc.collect() - counts[i] = sys.gettotalrefcount() - print counts + # verify reference counting + if verbose and hasattr(sys, "gettotalrefcount"): + import gc + counts = [None] * 5 + for i in xrange(len(counts)): + test_support.run_unittest(*test_classes) + gc.collect() + counts[i] = sys.gettotalrefcount() + print counts if __name__ == "__main__": test_main(verbose=True) Modified: python/trunk/Lib/test/test_pep352.py ============================================================================== --- python/trunk/Lib/test/test_pep352.py (original) +++ python/trunk/Lib/test/test_pep352.py Fri Jan 8 20:04:16 2010 @@ -6,23 +6,12 @@ import os from platform import system as platform_system -DEPRECATION_WARNINGS = ( - "BaseException.message has been deprecated", - "exceptions must derive from BaseException", - "catching classes that don't inherit from BaseException is not allowed", - "__getitem__ not supported for exception classes", -) - -# Silence Py3k and other deprecation warnings -def ignore_deprecation_warnings(func): - """Ignore the known DeprecationWarnings.""" - def wrapper(*args, **kw): - with warnings.catch_warnings(): - warnings.resetwarnings() - for text in DEPRECATION_WARNINGS: - warnings.filterwarnings("ignore", text, DeprecationWarning) - return func(*args, **kw) - return wrapper +def ignore_message_warning(): + """Ignore the DeprecationWarning for BaseException.message.""" + warnings.resetwarnings() + warnings.filterwarnings("ignore", "BaseException.message", + DeprecationWarning) + class ExceptionClassTests(unittest.TestCase): @@ -32,12 +21,14 @@ def test_builtins_new_style(self): self.assertTrue(issubclass(Exception, object)) - @ignore_deprecation_warnings def verify_instance_interface(self, ins): - for attr in ("args", "message", "__str__", "__repr__", "__getitem__"): - self.assertTrue(hasattr(ins, attr), - "%s missing %s attribute" % - (ins.__class__.__name__, attr)) + with warnings.catch_warnings(): + ignore_message_warning() + for attr in ("args", "message", "__str__", "__repr__", + "__getitem__"): + self.assertTrue(hasattr(ins, attr), + "%s missing %s attribute" % + (ins.__class__.__name__, attr)) def test_inheritance(self): # Make sure the inheritance hierarchy matches the documentation @@ -100,39 +91,43 @@ self.assertEqual(given, expected, "%s: %s != %s" % (test_name, given, expected)) - @ignore_deprecation_warnings def test_interface_single_arg(self): # Make sure interface works properly when given a single argument arg = "spam" exc = Exception(arg) - results = ([len(exc.args), 1], [exc.args[0], arg], [exc.message, arg], - [str(exc), str(arg)], [unicode(exc), unicode(arg)], - [repr(exc), exc.__class__.__name__ + repr(exc.args)], - [exc[0], arg]) - self.interface_test_driver(results) + with warnings.catch_warnings(): + ignore_message_warning() + results = ([len(exc.args), 1], [exc.args[0], arg], + [exc.message, arg], + [str(exc), str(arg)], [unicode(exc), unicode(arg)], + [repr(exc), exc.__class__.__name__ + repr(exc.args)], [exc[0], + arg]) + self.interface_test_driver(results) - @ignore_deprecation_warnings def test_interface_multi_arg(self): # Make sure interface correct when multiple arguments given arg_count = 3 args = tuple(range(arg_count)) exc = Exception(*args) - results = ([len(exc.args), arg_count], [exc.args, args], - [exc.message, ''], [str(exc), str(args)], - [unicode(exc), unicode(args)], - [repr(exc), exc.__class__.__name__ + repr(exc.args)], - [exc[-1], args[-1]]) - self.interface_test_driver(results) + with warnings.catch_warnings(): + ignore_message_warning() + results = ([len(exc.args), arg_count], [exc.args, args], + [exc.message, ''], [str(exc), str(args)], + [unicode(exc), unicode(args)], + [repr(exc), exc.__class__.__name__ + repr(exc.args)], + [exc[-1], args[-1]]) + self.interface_test_driver(results) - @ignore_deprecation_warnings def test_interface_no_arg(self): # Make sure that with no args that interface is correct exc = Exception() - results = ([len(exc.args), 0], [exc.args, tuple()], - [exc.message, ''], - [str(exc), ''], [unicode(exc), u''], - [repr(exc), exc.__class__.__name__ + '()'], [True, True]) - self.interface_test_driver(results) + with warnings.catch_warnings(): + ignore_message_warning() + results = ([len(exc.args), 0], [exc.args, tuple()], + [exc.message, ''], + [str(exc), ''], [unicode(exc), u''], + [repr(exc), exc.__class__.__name__ + '()'], [True, True]) + self.interface_test_driver(results) def test_message_deprecation(self): @@ -184,7 +179,6 @@ self.fail("TypeError expected when catching %s as specified in a " "tuple" % type(object_)) - @ignore_deprecation_warnings def test_raise_classic(self): # Raising a classic class is okay (for now). class ClassicClass: Modified: python/trunk/Lib/test/test_pkgimport.py ============================================================================== --- python/trunk/Lib/test/test_pkgimport.py (original) +++ python/trunk/Lib/test/test_pkgimport.py Fri Jan 8 20:04:16 2010 @@ -6,14 +6,14 @@ def __init__(self, *args, **kw): self.package_name = 'PACKAGE_' - while self.package_name in sys.modules: + while sys.modules.has_key(self.package_name): self.package_name += random.choose(string.letters) self.module_name = self.package_name + '.foo' unittest.TestCase.__init__(self, *args, **kw) def remove_modules(self): for module_name in (self.package_name, self.module_name): - if module_name in sys.modules: + if sys.modules.has_key(module_name): del sys.modules[module_name] def setUp(self): @@ -52,7 +52,7 @@ try: __import__(self.module_name) except SyntaxError: pass else: raise RuntimeError, 'Failed to induce SyntaxError' - self.assertTrue(self.module_name not in sys.modules and + self.assertTrue(not sys.modules.has_key(self.module_name) and not hasattr(sys.modules[self.package_name], 'foo')) # ...make up a variable name that isn't bound in __builtins__ Modified: python/trunk/Lib/test/test_pyclbr.py ============================================================================== --- python/trunk/Lib/test/test_pyclbr.py (original) +++ python/trunk/Lib/test/test_pyclbr.py Fri Jan 8 20:04:16 2010 @@ -2,7 +2,7 @@ Test cases for pyclbr.py Nick Mathewson ''' -from test.test_support import run_unittest, import_module +from test.test_support import run_unittest import sys from types import ClassType, FunctionType, MethodType, BuiltinFunctionType import pyclbr @@ -13,8 +13,6 @@ # This next line triggers an error on old versions of pyclbr. -# Silence Py3k warning -import_module('commands', deprecated=True) from commands import getstatus # Here we test the python class browser code. @@ -42,11 +40,11 @@ def assertHaskey(self, obj, key, ignore): - ''' succeed iff key in obj or key in ignore. ''' + ''' succeed iff obj.has_key(key) or key in ignore. ''' if key in ignore: return - if key not in obj: - print >>sys.stderr, "***", key - self.assertTrue(key in obj) + if not obj.has_key(key): + print >>sys.stderr, "***",key + self.assertTrue(obj.has_key(key)) def assertEqualsOrIgnored(self, a, b, ignore): ''' succeed iff a == b or a in ignore or b in ignore ''' @@ -151,9 +149,7 @@ def test_easy(self): self.checkModule('pyclbr') self.checkModule('doctest', ignore=("DocTestCase",)) - # Silence Py3k warning - rfc822 = import_module('rfc822', deprecated=True) - self.checkModule('rfc822', rfc822) + self.checkModule('rfc822') self.checkModule('difflib') def test_decorators(self): Modified: python/trunk/Lib/test/test_pyexpat.py ============================================================================== --- python/trunk/Lib/test/test_pyexpat.py (original) +++ python/trunk/Lib/test/test_pyexpat.py Fri Jan 8 20:04:16 2010 @@ -554,7 +554,7 @@ self.n=0 parser.Parse(xml1, 0) - parser.buffer_size //= 2 + parser.buffer_size /= 2 self.assertEquals(parser.buffer_size, 1024) parser.Parse(xml2, 1) self.assertEquals(self.n, 4) Modified: python/trunk/Lib/test/test_queue.py ============================================================================== --- python/trunk/Lib/test/test_queue.py (original) +++ python/trunk/Lib/test/test_queue.py Fri Jan 8 20:04:16 2010 @@ -7,8 +7,7 @@ import unittest from test import test_support -QUEUE_SIZE = LAST = 5 -FULL = LAST+1 +QUEUE_SIZE = 5 # A thread to run a function that unclogs a blocked Queue. class _TriggerThread(threading.Thread): @@ -103,21 +102,21 @@ q.put(i) self.assertTrue(not q.empty(), "Queue should not be empty") self.assertTrue(not q.full(), "Queue should not be full") - q.put(LAST) + q.put("last") self.assertTrue(q.full(), "Queue should be full") try: - q.put(FULL, block=0) + q.put("full", block=0) self.fail("Didn't appear to block with a full queue") except Queue.Full: pass try: - q.put(FULL, timeout=0.01) + q.put("full", timeout=0.01) self.fail("Didn't appear to time-out with a full queue") except Queue.Full: pass # Test a blocking put - self.do_blocking_test(q.put, (FULL,), q.get, ()) - self.do_blocking_test(q.put, (FULL, True, 10), q.get, ()) + self.do_blocking_test(q.put, ("full",), q.get, ()) + self.do_blocking_test(q.put, ("full", True, 10), q.get, ()) # Empty it for i in range(QUEUE_SIZE): q.get() Modified: python/trunk/Lib/test/test_random.py ============================================================================== --- python/trunk/Lib/test/test_random.py (original) +++ python/trunk/Lib/test/test_random.py Fri Jan 8 20:04:16 2010 @@ -6,7 +6,6 @@ import pickle import warnings from math import log, exp, sqrt, pi, fsum, sin -from functools import reduce from test import test_support class TestBasicOps(unittest.TestCase): Modified: python/trunk/Lib/test/test_repr.py ============================================================================== --- python/trunk/Lib/test/test_repr.py (original) +++ python/trunk/Lib/test/test_repr.py Fri Jan 8 20:04:16 2010 @@ -8,7 +8,7 @@ import shutil import unittest -from test.test_support import run_unittest, check_warnings +from test.test_support import run_unittest from repr import repr as r # Don't shadow builtin repr from repr import Repr @@ -174,9 +174,7 @@ def test_buffer(self): # XXX doesn't test buffers with no b_base or read-write buffers (see # bufferobject.c). The test is fairly incomplete too. Sigh. - # Silence the Py3k warning - with check_warnings(): - x = buffer('foo') + x = buffer('foo') self.assertTrue(repr(x).startswith(' self.other) - self.assertRaises(TypeError, lambda: self.set >= self.other) - - self.assertRaises(TypeError, lambda: self.other < self.set) - self.assertRaises(TypeError, lambda: self.other <= self.set) - self.assertRaises(TypeError, lambda: self.other > self.set) - self.assertRaises(TypeError, lambda: self.other >= self.set) + self.assertRaises(TypeError, lambda: self.set < self.other) + self.assertRaises(TypeError, lambda: self.set <= self.other) + self.assertRaises(TypeError, lambda: self.set > self.other) + self.assertRaises(TypeError, lambda: self.set >= self.other) + + self.assertRaises(TypeError, lambda: self.other < self.set) + self.assertRaises(TypeError, lambda: self.other <= self.set) + self.assertRaises(TypeError, lambda: self.other > self.set) + self.assertRaises(TypeError, lambda: self.other >= self.set) def test_update_operator(self): try: @@ -1380,20 +1379,20 @@ def test_copy(self): dup = self.set.copy() - dup_list = list(dup) - set_list = list(self.set) + dup_list = list(dup); dup_list.sort() + set_list = list(self.set); set_list.sort() self.assertEqual(len(dup_list), len(set_list)) - for elt in dup_list: - self.assertTrue(elt in set_list) + for i in range(len(dup_list)): + self.assertTrue(dup_list[i] is set_list[i]) def test_deep_copy(self): dup = copy.deepcopy(self.set) ##print type(dup), repr(dup) - dup_list = list(dup) - set_list = list(self.set) + dup_list = list(dup); dup_list.sort() + set_list = list(self.set); set_list.sort() self.assertEqual(len(dup_list), len(set_list)) - for elt in dup_list: - self.assertTrue(elt in set_list) + for i in range(len(dup_list)): + self.assertEqual(dup_list[i], set_list[i]) #------------------------------------------------------------------------------ @@ -1553,7 +1552,7 @@ for cons in (set, frozenset): for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)): for g in (G, I, Ig, S, L, R): - self.assertSameElements(cons(g(s)), g(s)) + self.assertEqual(sorted(cons(g(s))), sorted(g(s))) self.assertRaises(TypeError, cons , X(s)) self.assertRaises(TypeError, cons , N(s)) self.assertRaises(ZeroDivisionError, cons , E(s)) @@ -1568,7 +1567,7 @@ if isinstance(expected, bool): self.assertEqual(actual, expected) else: - self.assertSameElements(actual, expected) + self.assertEqual(sorted(actual), sorted(expected)) self.assertRaises(TypeError, meth, X(s)) self.assertRaises(TypeError, meth, N(s)) self.assertRaises(ZeroDivisionError, meth, E(s)) @@ -1582,7 +1581,7 @@ t = s.copy() getattr(s, methname)(list(g(data))) getattr(t, methname)(g(data)) - self.assertSameElements(s, t) + self.assertEqual(sorted(s), sorted(t)) self.assertRaises(TypeError, getattr(set('january'), methname), X(data)) self.assertRaises(TypeError, getattr(set('january'), methname), N(data)) Modified: python/trunk/Lib/test/test_sets.py ============================================================================== --- python/trunk/Lib/test/test_sets.py (original) +++ python/trunk/Lib/test/test_sets.py Fri Jan 8 20:04:16 2010 @@ -510,17 +510,15 @@ self.assertEqual(self.set != self.other, True) def test_ge_gt_le_lt(self): - # Silence Py3k warning - with test_support.check_warnings(): - self.assertRaises(TypeError, lambda: self.set < self.other) - self.assertRaises(TypeError, lambda: self.set <= self.other) - self.assertRaises(TypeError, lambda: self.set > self.other) - self.assertRaises(TypeError, lambda: self.set >= self.other) - - self.assertRaises(TypeError, lambda: self.other < self.set) - self.assertRaises(TypeError, lambda: self.other <= self.set) - self.assertRaises(TypeError, lambda: self.other > self.set) - self.assertRaises(TypeError, lambda: self.other >= self.set) + self.assertRaises(TypeError, lambda: self.set < self.other) + self.assertRaises(TypeError, lambda: self.set <= self.other) + self.assertRaises(TypeError, lambda: self.set > self.other) + self.assertRaises(TypeError, lambda: self.set >= self.other) + + self.assertRaises(TypeError, lambda: self.other < self.set) + self.assertRaises(TypeError, lambda: self.other <= self.set) + self.assertRaises(TypeError, lambda: self.other > self.set) + self.assertRaises(TypeError, lambda: self.other >= self.set) def test_union_update_operator(self): try: @@ -681,20 +679,20 @@ def test_copy(self): dup = self.set.copy() - dup_list = list(dup) - set_list = list(self.set) + dup_list = list(dup); dup_list.sort() + set_list = list(self.set); set_list.sort() self.assertEqual(len(dup_list), len(set_list)) - for elt in dup_list: - self.assertTrue(elt in set_list) + for i in range(len(dup_list)): + self.assertTrue(dup_list[i] is set_list[i]) def test_deep_copy(self): dup = copy.deepcopy(self.set) ##print type(dup), repr(dup) - dup_list = list(dup) - set_list = list(self.set) + dup_list = list(dup); dup_list.sort() + set_list = list(self.set); set_list.sort() self.assertEqual(len(dup_list), len(set_list)) - for elt in dup_list: - self.assertTrue(elt in set_list) + for i in range(len(dup_list)): + self.assertEqual(dup_list[i], set_list[i]) #------------------------------------------------------------------------------ Modified: python/trunk/Lib/test/test_shelve.py ============================================================================== --- python/trunk/Lib/test/test_shelve.py (original) +++ python/trunk/Lib/test/test_shelve.py Fri Jan 8 20:04:16 2010 @@ -4,8 +4,6 @@ import glob from test import test_support -test_support.import_module('anydbm', deprecated=True) - class TestCase(unittest.TestCase): fn = "shelftemp" + os.extsep + "db" Modified: python/trunk/Lib/test/test_site.py ============================================================================== --- python/trunk/Lib/test/test_site.py (original) +++ python/trunk/Lib/test/test_site.py Fri Jan 8 20:04:16 2010 @@ -258,7 +258,7 @@ site.abs__file__() for module in (sys, os, __builtin__): try: - self.assertTrue(os.path.isabs(module.__file__), repr(module)) + self.assertTrue(os.path.isabs(module.__file__), `module`) except AttributeError: continue # We could try everything in sys.modules; however, when regrtest.py @@ -310,7 +310,7 @@ def test_sitecustomize_executed(self): # If sitecustomize is available, it should have been imported. - if "sitecustomize" not in sys.modules: + if not sys.modules.has_key("sitecustomize"): try: import sitecustomize except ImportError: Modified: python/trunk/Lib/test/test_slice.py ============================================================================== --- python/trunk/Lib/test/test_slice.py (original) +++ python/trunk/Lib/test/test_slice.py Fri Jan 8 20:04:16 2010 @@ -115,9 +115,7 @@ tmp.append((i, j, k)) x = X() - # Silence Py3k warning - with test_support.check_warnings(): - x[1:2] = 42 + x[1:2] = 42 self.assertEquals(tmp, [(1, 2, 42)]) def test_pickle(self): Modified: python/trunk/Lib/test/test_socket.py ============================================================================== --- python/trunk/Lib/test/test_socket.py (original) +++ python/trunk/Lib/test/test_socket.py Fri Jan 8 20:04:16 2010 @@ -123,7 +123,7 @@ self.server_ready.wait() self.client_ready.set() self.clientSetUp() - if not hasattr(test_func, '__call__'): + if not callable(test_func): raise TypeError, "test_func must be a callable function" try: test_func() @@ -282,7 +282,7 @@ orig = sys.getrefcount(__name__) socket.getnameinfo(__name__,0) except TypeError: - if sys.getrefcount(__name__) != orig: + if sys.getrefcount(__name__) <> orig: self.fail("socket.getnameinfo loses a reference") def testInterpreterCrash(self): @@ -1234,9 +1234,7 @@ self.assertEqual(msg, MSG) def _testRecvInto(self): - # Silence Py3k warning - with test_support.check_warnings(): - buf = buffer(MSG) + buf = buffer(MSG) self.serv_conn.send(buf) def testRecvFromInto(self): @@ -1247,9 +1245,7 @@ self.assertEqual(msg, MSG) def _testRecvFromInto(self): - # Silence Py3k warning - with test_support.check_warnings(): - buf = buffer(MSG) + buf = buffer(MSG) self.serv_conn.send(buf) Modified: python/trunk/Lib/test/test_sort.py ============================================================================== --- python/trunk/Lib/test/test_sort.py (original) +++ python/trunk/Lib/test/test_sort.py Fri Jan 8 20:04:16 2010 @@ -2,7 +2,6 @@ import random import sys import unittest -import warnings verbose = test_support.verbose nerrors = 0 @@ -186,7 +185,7 @@ def test_stability(self): data = [(random.randrange(100), i) for i in xrange(200)] copy = data[:] - data.sort(key=lambda x: x[0]) # sort on the random first field + data.sort(key=lambda (x,y): x) # sort on the random first field copy.sort() # sort using both fields self.assertEqual(data, copy) # should get the same result @@ -208,7 +207,7 @@ # Verify that the wrapper has been removed data = range(-2,2) dup = data[:] - self.assertRaises(ZeroDivisionError, data.sort, None, lambda x: 1 // x) + self.assertRaises(ZeroDivisionError, data.sort, None, lambda x: 1/x) self.assertEqual(data, dup) def test_key_with_mutation(self): @@ -275,21 +274,17 @@ TestBugs, ) - with warnings.catch_warnings(): - # Silence Py3k warning - warnings.filterwarnings("ignore", "the cmp argument is not supported", - DeprecationWarning) - test_support.run_unittest(*test_classes) - - # verify reference counting - if verbose and hasattr(sys, "gettotalrefcount"): - import gc - counts = [None] * 5 - for i in xrange(len(counts)): - test_support.run_unittest(*test_classes) - gc.collect() - counts[i] = sys.gettotalrefcount() - print counts + test_support.run_unittest(*test_classes) + + # verify reference counting + if verbose and hasattr(sys, "gettotalrefcount"): + import gc + counts = [None] * 5 + for i in xrange(len(counts)): + test_support.run_unittest(*test_classes) + gc.collect() + counts[i] = sys.gettotalrefcount() + print counts if __name__ == "__main__": test_main(verbose=True) Modified: python/trunk/Lib/test/test_sqlite.py ============================================================================== --- python/trunk/Lib/test/test_sqlite.py (original) +++ python/trunk/Lib/test/test_sqlite.py Fri Jan 8 20:04:16 2010 @@ -4,21 +4,14 @@ # Skip test if _sqlite3 module was not built. import_module('_sqlite3') -import warnings from sqlite3.test import (dbapi, types, userfunctions, py25tests, factory, transactions, hooks, regression, dump) def test_main(): - with warnings.catch_warnings(): - # Silence Py3k warnings - warnings.filterwarnings("ignore", "buffer.. not supported", - DeprecationWarning) - warnings.filterwarnings("ignore", "classic int division", - DeprecationWarning) - run_unittest(dbapi.suite(), types.suite(), userfunctions.suite(), - py25tests.suite(), factory.suite(), transactions.suite(), - hooks.suite(), regression.suite(), dump.suite()) + run_unittest(dbapi.suite(), types.suite(), userfunctions.suite(), + py25tests.suite(), factory.suite(), transactions.suite(), + hooks.suite(), regression.suite(), dump.suite()) if __name__ == "__main__": test_main() Modified: python/trunk/Lib/test/test_ssl.py ============================================================================== --- python/trunk/Lib/test/test_ssl.py (original) +++ python/trunk/Lib/test/test_ssl.py Fri Jan 8 20:04:16 2010 @@ -808,7 +808,7 @@ if test_support.verbose: sys.stdout.write(pprint.pformat(cert) + '\n') sys.stdout.write("Connection cipher is " + str(cipher) + '.\n') - if 'subject' not in cert: + if not cert.has_key('subject'): raise test_support.TestFailed( "No subject field in certificate: %s." % pprint.pformat(cert)) @@ -970,9 +970,7 @@ # now fetch the same data from the HTTPS server url = 'https://127.0.0.1:%d/%s' % ( server.port, os.path.split(CERTFILE)[1]) - # Silence Py3k warning - with test_support.check_warnings(): - f = urllib.urlopen(url) + f = urllib.urlopen(url) dlen = f.info().getheader("content-length") if dlen and (int(dlen) > 0): d2 = f.read(int(dlen)) Modified: python/trunk/Lib/test/test_struct.py ============================================================================== --- python/trunk/Lib/test/test_struct.py (original) +++ python/trunk/Lib/test/test_struct.py Fri Jan 8 20:04:16 2010 @@ -471,7 +471,7 @@ def test_bool(self): for prefix in tuple("<>!=")+('',): false = (), [], [], '', 0 - true = [1], 'test', 5, -1, 0xffffffffL+1, 0xffffffff//2 + true = [1], 'test', 5, -1, 0xffffffffL+1, 0xffffffff/2 falseFormat = prefix + '?' * len(false) packedFalse = struct.pack(falseFormat, *false) @@ -507,11 +507,7 @@ def test_main(): - with warnings.catch_warnings(): - # Silence Py3k warnings - warnings.filterwarnings("ignore", "buffer.. not supported", - DeprecationWarning) - run_unittest(StructTest) + run_unittest(StructTest) if __name__ == '__main__': test_main() Modified: python/trunk/Lib/test/test_syntax.py ============================================================================== --- python/trunk/Lib/test/test_syntax.py (original) +++ python/trunk/Lib/test/test_syntax.py Fri Jan 8 20:04:16 2010 @@ -552,11 +552,7 @@ def test_main(): test_support.run_unittest(SyntaxTestCase) from test import test_syntax - with warnings.catch_warnings(): - # Silence Py3k warning - warnings.filterwarnings("ignore", "backquote not supported", - SyntaxWarning) - test_support.run_doctest(test_syntax, verbosity=True) + test_support.run_doctest(test_syntax, verbosity=True) if __name__ == "__main__": test_main() Modified: python/trunk/Lib/test/test_sys.py ============================================================================== --- python/trunk/Lib/test/test_sys.py (original) +++ python/trunk/Lib/test/test_sys.py Fri Jan 8 20:04:16 2010 @@ -68,9 +68,7 @@ # Python/pythonrun.c::PyErr_PrintEx() is tricky. def test_exc_clear(self): - # Silence Py3k warning - with test.test_support.check_warnings(): - self.assertRaises(TypeError, sys.exc_clear, 42) + self.assertRaises(TypeError, sys.exc_clear, 42) # Verify that exc_info is present and matches exc, then clear it, and # check that it worked. @@ -80,9 +78,7 @@ self.assertTrue(value is exc) self.assertTrue(traceback is not None) - # Silence Py3k warning - with test.test_support.check_warnings(): - sys.exc_clear() + sys.exc_clear() typ, value, traceback = sys.exc_info() self.assertTrue(typ is None) @@ -488,9 +484,7 @@ # bool check(True, size(h + 'l')) # buffer - # Silence Py3k warning - with test.test_support.check_warnings(): - check(buffer(''), size(h + '2P2Pil')) + check(buffer(''), size(h + '2P2Pil')) # builtin_function_or_method check(len, size(h + '3P')) # bytearray Modified: python/trunk/Lib/test/test_tarfile.py ============================================================================== --- python/trunk/Lib/test/test_tarfile.py (original) +++ python/trunk/Lib/test/test_tarfile.py Fri Jan 8 20:04:16 2010 @@ -712,9 +712,7 @@ return os.path.isfile(name) tar = tarfile.open(tmpname, self.mode, encoding="iso8859-1") - # Silence Py3k warning - with test_support.check_warnings(): - tar.add(tempdir, arcname="empty_dir", exclude=exclude) + tar.add(tempdir, arcname="empty_dir", exclude=exclude) tar.close() tar = tarfile.open(tmpname, "r") Modified: python/trunk/Lib/test/test_threadsignals.py ============================================================================== --- python/trunk/Lib/test/test_threadsignals.py (original) +++ python/trunk/Lib/test/test_threadsignals.py Fri Jan 8 20:04:16 2010 @@ -14,7 +14,7 @@ signalled_all=thread.allocate_lock() -def registerSignals(for_usr1, for_usr2, for_alrm): +def registerSignals((for_usr1, for_usr2, for_alrm)): usr1 = signal.signal(signal.SIGUSR1, for_usr1) usr2 = signal.signal(signal.SIGUSR2, for_usr2) alrm = signal.signal(signal.SIGALRM, for_alrm) @@ -74,11 +74,11 @@ signal.SIGUSR2 : {'tripped': 0, 'tripped_by': 0 }, signal.SIGALRM : {'tripped': 0, 'tripped_by': 0 } } - oldsigs = registerSignals(handle_signals, handle_signals, handle_signals) + oldsigs = registerSignals((handle_signals, handle_signals, handle_signals)) try: run_unittest(ThreadSignals) finally: - registerSignals(*oldsigs) + registerSignals(oldsigs) if __name__ == '__main__': test_main() Modified: python/trunk/Lib/test/test_trace.py ============================================================================== --- python/trunk/Lib/test/test_trace.py (original) +++ python/trunk/Lib/test/test_trace.py Fri Jan 8 20:04:16 2010 @@ -401,7 +401,7 @@ we're testing, so that the 'exception' trace event fires.""" if self.raiseOnEvent == 'exception': x = 0 - y = 1 // x + y = 1/x else: return 1 Modified: python/trunk/Lib/test/test_traceback.py ============================================================================== --- python/trunk/Lib/test/test_traceback.py (original) +++ python/trunk/Lib/test/test_traceback.py Fri Jan 8 20:04:16 2010 @@ -4,7 +4,6 @@ from StringIO import StringIO import sys import unittest -from imp import reload from test.test_support import run_unittest, is_jython, Error import traceback @@ -149,7 +148,7 @@ def test_format_exception_only_bad__str__(self): class X(Exception): def __str__(self): - 1 // 0 + 1/0 err = traceback.format_exception_only(X, X()) self.assertEqual(len(err), 1) str_value = '' % X.__name__ Modified: python/trunk/Lib/test/test_transformer.py ============================================================================== --- python/trunk/Lib/test/test_transformer.py (original) +++ python/trunk/Lib/test/test_transformer.py Fri Jan 8 20:04:16 2010 @@ -1,8 +1,5 @@ import unittest from test import test_support - -# Silence Py3k warning -test_support.import_module('compiler', deprecated=True) from compiler import transformer, ast from compiler import compile Modified: python/trunk/Lib/test/test_types.py ============================================================================== --- python/trunk/Lib/test/test_types.py (original) +++ python/trunk/Lib/test/test_types.py Fri Jan 8 20:04:16 2010 @@ -4,7 +4,6 @@ import unittest import sys import locale -import warnings class TypesTests(unittest.TestCase): @@ -711,13 +710,7 @@ self.assertRaises(ValueError, format, 0, ',' + code) def test_main(): - with warnings.catch_warnings(): - # Silence Py3k warnings - warnings.filterwarnings("ignore", "buffer.. not supported", - DeprecationWarning) - warnings.filterwarnings("ignore", "classic long division", - DeprecationWarning) - run_unittest(TypesTests) + run_unittest(TypesTests) if __name__ == '__main__': test_main() Modified: python/trunk/Lib/test/test_undocumented_details.py ============================================================================== --- python/trunk/Lib/test/test_undocumented_details.py (original) +++ python/trunk/Lib/test/test_undocumented_details.py Fri Jan 8 20:04:16 2010 @@ -1,4 +1,4 @@ -from test.test_support import run_unittest, check_warnings +from test.test_support import run_unittest, have_unicode import unittest import sys @@ -33,9 +33,7 @@ self.assertTrue(g_cell != h_cell) def test_main(): - # Silence Py3k warnings - with check_warnings(): - run_unittest(TestImplementationComparisons) + run_unittest(TestImplementationComparisons) if __name__ == '__main__': test_main() Modified: python/trunk/Lib/test/test_unittest.py ============================================================================== --- python/trunk/Lib/test/test_unittest.py (original) +++ python/trunk/Lib/test/test_unittest.py Fri Jan 8 20:04:16 2010 @@ -3056,7 +3056,7 @@ try: self.assertRaises(KeyError, lambda: None) except self.failureException as e: - self.assert_("KeyError not raised" in e.args, str(e)) + self.assert_("KeyError not raised" in e, str(e)) else: self.fail("assertRaises() didn't fail") try: @@ -3073,7 +3073,7 @@ with self.assertRaises(KeyError): pass except self.failureException as e: - self.assert_("KeyError not raised" in e.args, str(e)) + self.assert_("KeyError not raised" in e, str(e)) else: self.fail("assertRaises() didn't fail") try: @@ -3591,9 +3591,6 @@ def __eq__(self, other): return self.path == other.path - # Silence Py3k warning - __hash__ = None - loader._get_module_from_name = lambda name: Module(name) def loadTestsFromModule(module, use_load_tests): if use_load_tests: Modified: python/trunk/Lib/test/test_univnewlines2k.py ============================================================================== --- python/trunk/Lib/test/test_univnewlines2k.py (original) +++ python/trunk/Lib/test/test_univnewlines2k.py Fri Jan 8 20:04:16 2010 @@ -80,9 +80,7 @@ def test_execfile(self): namespace = {} - # Silence Py3k warning - with test_support.check_warnings(): - execfile(test_support.TESTFN, namespace) + execfile(test_support.TESTFN, namespace) func = namespace['line3'] self.assertEqual(func.func_code.co_firstlineno, 3) self.assertEqual(namespace['line4'], FATX) Modified: python/trunk/Lib/test/test_urllib.py ============================================================================== --- python/trunk/Lib/test/test_urllib.py (original) +++ python/trunk/Lib/test/test_urllib.py Fri Jan 8 20:04:16 2010 @@ -6,7 +6,6 @@ from test import test_support import os import mimetools -import random import tempfile import StringIO @@ -102,7 +101,7 @@ # Records changes to env vars self.env = test_support.EnvironmentVarGuard() # Delete all proxy related env vars - for k in os.environ.keys(): + for k, v in os.environ.iteritems(): if 'proxy' in k.lower(): self.env.unset(k) @@ -410,13 +409,6 @@ self.assertEqual(urllib.quote_plus('alpha+beta gamma', '+'), 'alpha+beta+gamma') - def test_quote_leak(self): - # bug 5596 - highlight the refleak in the internal _safemaps cache - safe = ''.join(chr(random.randrange(128)) for i in '123456') - text = 'abcdefghijklmnopqrstuvwxyz' - result = urllib.quote(text, safe=safe) - self.assertEqual(result, text) - class UnquotingTests(unittest.TestCase): """Tests for unquote() and unquote_plus() Modified: python/trunk/Lib/test/test_urllib2_localnet.py ============================================================================== --- python/trunk/Lib/test/test_urllib2_localnet.py (original) +++ python/trunk/Lib/test/test_urllib2_localnet.py Fri Jan 8 20:04:16 2010 @@ -1,5 +1,6 @@ #!/usr/bin/env python +import mimetools import threading import urlparse import urllib2 @@ -7,7 +8,6 @@ import unittest import hashlib from test import test_support -mimetools = test_support.import_module('mimetools', deprecated=True) # Loopback http server infrastructure @@ -154,13 +154,13 @@ if len(self._users) == 0: return True - if 'Proxy-Authorization' not in request_handler.headers: + if not request_handler.headers.has_key('Proxy-Authorization'): return self._return_auth_challenge(request_handler) else: auth_dict = self._create_auth_dict( request_handler.headers['Proxy-Authorization'] ) - if auth_dict["username"] in self._users: + if self._users.has_key(auth_dict["username"]): password = self._users[ auth_dict["username"] ] else: return self._return_auth_challenge(request_handler) Modified: python/trunk/Lib/test/test_urllibnet.py ============================================================================== --- python/trunk/Lib/test/test_urllibnet.py (original) +++ python/trunk/Lib/test/test_urllibnet.py Fri Jan 8 20:04:16 2010 @@ -7,7 +7,7 @@ import urllib import sys import os -mimetools = test_support.import_module("mimetools", deprecated=True) +import mimetools def _open_with_retry(func, host, *args, **kwargs): Modified: python/trunk/Lib/test/test_userdict.py ============================================================================== --- python/trunk/Lib/test/test_userdict.py (original) +++ python/trunk/Lib/test/test_userdict.py Fri Jan 8 20:04:16 2010 @@ -45,9 +45,7 @@ # Test __repr__ self.assertEqual(str(u0), str(d0)) self.assertEqual(repr(u1), repr(d1)) - # Silence Py3k warning - with test_support.check_warnings(): - self.assertEqual(eval('`u2`'), eval('`d2`')) + self.assertEqual(`u2`, `d2`) # Test __cmp__ and __len__ all = [d0, d1, d2, u, u0, u1, u2, uu, uu0, uu1, uu2] @@ -97,14 +95,12 @@ # Test has_key and "in". for i in u2.keys(): + self.assertTrue(u2.has_key(i)) self.assertTrue(i in u2) + self.assertEqual(u1.has_key(i), d1.has_key(i)) self.assertEqual(i in u1, i in d1) + self.assertEqual(u0.has_key(i), d0.has_key(i)) self.assertEqual(i in u0, i in d0) - # Silence Py3k warning - with test_support.check_warnings(): - self.assertTrue(u2.has_key(i)) - self.assertEqual(u1.has_key(i), d1.has_key(i)) - self.assertEqual(u0.has_key(i), d0.has_key(i)) # Test update t = UserDict.UserDict() Modified: python/trunk/Lib/test/test_userlist.py ============================================================================== --- python/trunk/Lib/test/test_userlist.py (original) +++ python/trunk/Lib/test/test_userlist.py Fri Jan 8 20:04:16 2010 @@ -2,7 +2,6 @@ from UserList import UserList from test import test_support, list_tests -import warnings class UserListTest(list_tests.CommonTest): type2test = UserList @@ -54,11 +53,7 @@ self.assertEqual(iter(T((1,2))).next(), "0!!!") def test_main(): - with warnings.catch_warnings(): - # Silence Py3k warnings - warnings.filterwarnings("ignore", ".+slice__ has been removed", - DeprecationWarning) - test_support.run_unittest(UserListTest) + test_support.run_unittest(UserListTest) if __name__ == "__main__": test_main() Modified: python/trunk/Lib/test/test_userstring.py ============================================================================== --- python/trunk/Lib/test/test_userstring.py (original) +++ python/trunk/Lib/test/test_userstring.py Fri Jan 8 20:04:16 2010 @@ -136,11 +136,8 @@ def test_main(): with warnings.catch_warnings(): - # Silence Py3k warnings warnings.filterwarnings("ignore", ".*MutableString", DeprecationWarning) - warnings.filterwarnings("ignore", ".+slice__ has been removed", - DeprecationWarning) test_support.run_unittest(UserStringTest, MutableStringTest) if __name__ == "__main__": Modified: python/trunk/Lib/test/test_weakref.py ============================================================================== --- python/trunk/Lib/test/test_weakref.py (original) +++ python/trunk/Lib/test/test_weakref.py Fri Jan 8 20:04:16 2010 @@ -54,10 +54,10 @@ # Live reference: o = C() wr = weakref.ref(o) - repr(wr) + `wr` # Dead reference: del o - repr(wr) + `wr` def test_basic_callback(self): self.check_basic_callback(C) @@ -169,9 +169,7 @@ p.append(12) self.assertEqual(len(L), 1) self.assertTrue(p, "proxy for non-empty UserList should be true") - # Silence Py3k warning - with test_support.check_warnings(): - p[:] = [2, 3] + p[:] = [2, 3] self.assertEqual(len(L), 2) self.assertEqual(len(p), 2) self.assertTrue(3 in p, @@ -185,12 +183,10 @@ ## self.assertEqual(repr(L2), repr(p2)) L3 = UserList.UserList(range(10)) p3 = weakref.proxy(L3) - # Silence Py3k warning - with test_support.check_warnings(): - self.assertEqual(L3[:], p3[:]) - self.assertEqual(L3[5:], p3[5:]) - self.assertEqual(L3[:5], p3[:5]) - self.assertEqual(L3[2:5], p3[2:5]) + self.assertEqual(L3[:], p3[:]) + self.assertEqual(L3[5:], p3[5:]) + self.assertEqual(L3[:5], p3[:5]) + self.assertEqual(L3[2:5], p3[2:5]) def test_proxy_unicode(self): # See bug 5037 @@ -836,7 +832,7 @@ def test_weak_keys(self): # # This exercises d.copy(), d.items(), d[] = v, d[], del d[], - # len(d), in d. + # len(d), d.has_key(). # dict, objects = self.make_weak_keyed_dict() for o in objects: @@ -858,8 +854,8 @@ "deleting the keys did not clear the dictionary") o = Object(42) dict[o] = "What is the meaning of the universe?" - self.assertTrue(o in dict) - self.assertTrue(34 not in dict) + self.assertTrue(dict.has_key(o)) + self.assertTrue(not dict.has_key(34)) def test_weak_keyed_iters(self): dict, objects = self.make_weak_keyed_dict() @@ -871,7 +867,7 @@ objects2 = list(objects) for wr in refs: ob = wr() - self.assertTrue(ob in dict) + self.assertTrue(dict.has_key(ob)) self.assertTrue(ob in dict) self.assertEqual(ob.arg, dict[ob]) objects2.remove(ob) @@ -882,6 +878,7 @@ self.assertEqual(len(list(dict.iterkeyrefs())), len(objects)) for wr in dict.iterkeyrefs(): ob = wr() + self.assertTrue(dict.has_key(ob)) self.assertTrue(ob in dict) self.assertEqual(ob.arg, dict[ob]) objects2.remove(ob) @@ -996,13 +993,13 @@ weakdict = klass() o = weakdict.setdefault(key, value1) self.assertTrue(o is value1) - self.assertTrue(key in weakdict) + self.assertTrue(weakdict.has_key(key)) self.assertTrue(weakdict.get(key) is value1) self.assertTrue(weakdict[key] is value1) o = weakdict.setdefault(key, value2) self.assertTrue(o is value1) - self.assertTrue(key in weakdict) + self.assertTrue(weakdict.has_key(key)) self.assertTrue(weakdict.get(key) is value1) self.assertTrue(weakdict[key] is value1) @@ -1016,20 +1013,20 @@ def check_update(self, klass, dict): # - # This exercises d.update(), len(d), d.keys(), in d, + # This exercises d.update(), len(d), d.keys(), d.has_key(), # d.get(), d[]. # weakdict = klass() weakdict.update(dict) self.assertTrue(len(weakdict) == len(dict)) for k in weakdict.keys(): - self.assertTrue(k in dict, + self.assertTrue(dict.has_key(k), "mysterious new key appeared in weak dict") v = dict.get(k) self.assertTrue(v is weakdict[k]) self.assertTrue(v is weakdict.get(k)) for k in dict.keys(): - self.assertTrue(k in weakdict, + self.assertTrue(weakdict.has_key(k), "original key disappeared in weak dict") v = dict[k] self.assertTrue(v is weakdict[k]) Modified: python/trunk/Lib/test/test_whichdb.py ============================================================================== --- python/trunk/Lib/test/test_whichdb.py (original) +++ python/trunk/Lib/test/test_whichdb.py Fri Jan 8 20:04:16 2010 @@ -7,13 +7,11 @@ import test.test_support import unittest import whichdb +import anydbm import glob _fname = test.test_support.TESTFN -# Silence Py3k warning -anydbm = test.test_support.import_module('anydbm', deprecated=True) - def _delete_files(): # we don't know the precise name the underlying database uses # so we use glob to locate all names @@ -39,9 +37,8 @@ # we define a new test method for each # candidate database module. try: - # Silence Py3k warning - mod = test.test_support.import_module(name, deprecated=True) - except unittest.SkipTest: + mod = __import__(name) + except ImportError: continue def test_whichdb_name(self, name=name, mod=mod): Modified: python/trunk/Lib/test/test_with.py ============================================================================== --- python/trunk/Lib/test/test_with.py (original) +++ python/trunk/Lib/test/test_with.py Fri Jan 8 20:04:16 2010 @@ -520,7 +520,7 @@ self.assertRaises(AssertionError, falseAsBool) def failAsBool(): - with cm(lambda: 1 // 0): + with cm(lambda: 1//0): self.fail("Should NOT see this") self.assertRaises(ZeroDivisionError, failAsBool) @@ -628,7 +628,7 @@ def __exit__(self, t, v, tb): return True try: with AfricanSwallow(): - 1 // 0 + 1/0 except ZeroDivisionError: self.fail("ZeroDivisionError should have been swallowed") @@ -638,7 +638,7 @@ def __exit__(self, t, v, tb): return False try: with EuropeanSwallow(): - 1 // 0 + 1/0 except ZeroDivisionError: pass else: Modified: python/trunk/Lib/test/test_wsgiref.py ============================================================================== --- python/trunk/Lib/test/test_wsgiref.py (original) +++ python/trunk/Lib/test/test_wsgiref.py Fri Jan 8 20:04:16 2010 @@ -432,10 +432,10 @@ env = handler.environ from os import environ for k,v in environ.items(): - if k not in empty: + if not empty.has_key(k): self.assertEqual(env[k],v) for k,v in empty.items(): - self.assertTrue(k in env) + self.assertTrue(env.has_key(k)) def testEnviron(self): h = TestHandler(X="Y") @@ -448,7 +448,7 @@ h = BaseCGIHandler(None,None,None,{}) h.setup_environ() for key in 'wsgi.url_scheme', 'wsgi.input', 'wsgi.errors': - self.assertTrue(key in h.environ) + self.assertTrue(h.environ.has_key(key)) def testScheme(self): h=TestHandler(HTTPS="on"); h.setup_environ() Modified: python/trunk/Lib/test/test_xmllib.py ============================================================================== --- python/trunk/Lib/test/test_xmllib.py (original) +++ python/trunk/Lib/test/test_xmllib.py Fri Jan 8 20:04:16 2010 @@ -15,10 +15,13 @@ nsdoc = "" +import warnings +warnings.filterwarnings("ignore", ".* xmllib .* obsolete.*", + DeprecationWarning, r'xmllib$') + from test import test_support import unittest -# Silence Py3k warning -xmllib = test_support.import_module('xmllib', deprecated=True) +import xmllib class XMLParserTestCase(unittest.TestCase): Modified: python/trunk/Lib/test/test_xpickle.py ============================================================================== --- python/trunk/Lib/test/test_xpickle.py (original) +++ python/trunk/Lib/test/test_xpickle.py Fri Jan 8 20:04:16 2010 @@ -25,7 +25,7 @@ mod_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "pickletester.py")) pickletester = types.ModuleType("test.pickletester") -exec compile(open(mod_path).read(), mod_path, 'exec') in pickletester.__dict__ +execfile(mod_path, pickletester.__dict__, pickletester.__dict__) AbstractPickleTests = pickletester.AbstractPickleTests if pickletester.__name__ in sys.modules: raise RuntimeError("Did not expect to find test.pickletester loaded") Modified: python/trunk/Lib/test/test_zipimport_support.py ============================================================================== --- python/trunk/Lib/test/test_zipimport_support.py (original) +++ python/trunk/Lib/test/test_zipimport_support.py Fri Jan 8 20:04:16 2010 @@ -168,11 +168,8 @@ test_zipped_doctest.test_testfile, test_zipped_doctest.test_unittest_reportflags, ] - # Silence Py3k warning - # Needed for test_DocTestParser and test_debug - with test.test_support.check_warnings(): - for obj in known_good_tests: - _run_object_doctest(obj, test_zipped_doctest) + for obj in known_good_tests: + _run_object_doctest(obj, test_zipped_doctest) def test_doctest_main_issue4197(self): test_src = textwrap.dedent("""\ From python-checkins at python.org Fri Jan 8 20:20:17 2010 From: python-checkins at python.org (antoine.pitrou) Date: Fri, 08 Jan 2010 19:20:17 -0000 Subject: [Python-checkins] r77370 - in python/trunk: Lib/test/test_py3kwarn.py Misc/NEWS Modules/cPickle.c Message-ID: Author: antoine.pitrou Date: Fri Jan 8 20:20:17 2010 New Revision: 77370 Log: Issue #7092: Remove py3k warning when importing cPickle. 2to3 handles renaming of `cPickle` to `pickle`. The warning was annoying since there's no alternative to cPickle if you care about performance. Patch by Florent Xicluna. Modified: python/trunk/Lib/test/test_py3kwarn.py python/trunk/Misc/NEWS python/trunk/Modules/cPickle.c Modified: python/trunk/Lib/test/test_py3kwarn.py ============================================================================== --- python/trunk/Lib/test/test_py3kwarn.py (original) +++ python/trunk/Lib/test/test_py3kwarn.py Fri Jan 8 20:20:17 2010 @@ -336,7 +336,7 @@ 'sunos5' : ('sunaudiodev', 'SUNAUDIODEV'), } optional_modules = ('bsddb185', 'Canvas', 'dl', 'linuxaudiodev', 'imageop', - 'sv', 'cPickle', 'bsddb', 'dbhash') + 'sv', 'bsddb', 'dbhash') def check_removal(self, module_name, optional=False): """Make sure the specified module, when imported, raises a Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Fri Jan 8 20:20:17 2010 @@ -65,6 +65,11 @@ Library ------- +- Issue #7092: Remove py3k warning when importing cPickle. 2to3 handles + renaming of `cPickle` to `pickle`. The warning was annoying since there's + no alternative to cPickle if you care about performance. Patch by Florent + Xicluna. + - Issue #7455: Fix possible crash in cPickle on invalid input. Patch by Victor Stinner. Modified: python/trunk/Modules/cPickle.c ============================================================================== --- python/trunk/Modules/cPickle.c (original) +++ python/trunk/Modules/cPickle.c Fri Jan 8 20:20:17 2010 @@ -5973,12 +5973,6 @@ PyObject *format_version; PyObject *compatible_formats; - /* XXX: Should mention that the pickle module will include the C - XXX: optimized implementation automatically. */ - if (PyErr_WarnPy3k("the cPickle module has been removed in " - "Python 3.0", 2) < 0) - return; - Py_TYPE(&Picklertype) = &PyType_Type; Py_TYPE(&Unpicklertype) = &PyType_Type; Py_TYPE(&PdataType) = &PyType_Type; From python-checkins at python.org Fri Jan 8 20:20:25 2010 From: python-checkins at python.org (senthil.kumaran) Date: Fri, 08 Jan 2010 19:20:25 -0000 Subject: [Python-checkins] r77371 - python/trunk/Lib/test/test_urllib.py Message-ID: Author: senthil.kumaran Date: Fri Jan 8 20:20:25 2010 New Revision: 77371 Log: Fix for Issue7026. For the Error - RuntimeError: dictionary changed size during iteration Modified: python/trunk/Lib/test/test_urllib.py Modified: python/trunk/Lib/test/test_urllib.py ============================================================================== --- python/trunk/Lib/test/test_urllib.py (original) +++ python/trunk/Lib/test/test_urllib.py Fri Jan 8 20:20:25 2010 @@ -101,7 +101,7 @@ # Records changes to env vars self.env = test_support.EnvironmentVarGuard() # Delete all proxy related env vars - for k, v in os.environ.iteritems(): + for k in os.environ.keys(): if 'proxy' in k.lower(): self.env.unset(k) From python-checkins at python.org Fri Jan 8 20:21:34 2010 From: python-checkins at python.org (antoine.pitrou) Date: Fri, 08 Jan 2010 19:21:34 -0000 Subject: [Python-checkins] r77372 - in python/branches/release26-maint: Lib/test/test_py3kwarn.py Misc/NEWS Modules/cPickle.c Message-ID: Author: antoine.pitrou Date: Fri Jan 8 20:21:34 2010 New Revision: 77372 Log: Merged revisions 77370 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77370 | antoine.pitrou | 2010-01-08 20:20:17 +0100 (ven., 08 janv. 2010) | 5 lines Issue #7092: Remove py3k warning when importing cPickle. 2to3 handles renaming of `cPickle` to `pickle`. The warning was annoying since there's no alternative to cPickle if you care about performance. Patch by Florent Xicluna. ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/test/test_py3kwarn.py python/branches/release26-maint/Misc/NEWS python/branches/release26-maint/Modules/cPickle.c Modified: python/branches/release26-maint/Lib/test/test_py3kwarn.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_py3kwarn.py (original) +++ python/branches/release26-maint/Lib/test/test_py3kwarn.py Fri Jan 8 20:21:34 2010 @@ -333,7 +333,7 @@ 'sunos5' : ('sunaudiodev', 'SUNAUDIODEV'), } optional_modules = ('bsddb185', 'Canvas', 'dl', 'linuxaudiodev', 'imageop', - 'sv', 'cPickle', 'bsddb', 'dbhash') + 'sv', 'bsddb', 'dbhash') def check_removal(self, module_name, optional=False): """Make sure the specified module, when imported, raises a Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Fri Jan 8 20:21:34 2010 @@ -48,6 +48,11 @@ Library ------- +- Issue #7092: Remove py3k warning when importing cPickle. 2to3 handles + renaming of `cPickle` to `pickle`. The warning was annoying since there's + no alternative to cPickle if you care about performance. Patch by Florent + Xicluna. + - Issue #7455: Fix possible crash in cPickle on invalid input. Patch by Victor Stinner. Modified: python/branches/release26-maint/Modules/cPickle.c ============================================================================== --- python/branches/release26-maint/Modules/cPickle.c (original) +++ python/branches/release26-maint/Modules/cPickle.c Fri Jan 8 20:21:34 2010 @@ -5854,12 +5854,6 @@ PyObject *format_version; PyObject *compatible_formats; - /* XXX: Should mention that the pickle module will include the C - XXX: optimized implementation automatically. */ - if (PyErr_WarnPy3k("the cPickle module has been removed in " - "Python 3.0", 2) < 0) - return; - Py_TYPE(&Picklertype) = &PyType_Type; Py_TYPE(&Unpicklertype) = &PyType_Type; Py_TYPE(&PdataType) = &PyType_Type; From python-checkins at python.org Fri Jan 8 20:22:51 2010 From: python-checkins at python.org (antoine.pitrou) Date: Fri, 08 Jan 2010 19:22:51 -0000 Subject: [Python-checkins] r77373 - python/branches/py3k Message-ID: Author: antoine.pitrou Date: Fri Jan 8 20:22:50 2010 New Revision: 77373 Log: Blocked revisions 77370 via svnmerge ........ r77370 | antoine.pitrou | 2010-01-08 20:20:17 +0100 (ven., 08 janv. 2010) | 5 lines Issue #7092: Remove py3k warning when importing cPickle. 2to3 handles renaming of `cPickle` to `pickle`. The warning was annoying since there's no alternative to cPickle if you care about performance. Patch by Florent Xicluna. ........ Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Fri Jan 8 20:39:04 2010 From: python-checkins at python.org (antoine.pitrou) Date: Fri, 08 Jan 2010 19:39:04 -0000 Subject: [Python-checkins] r77374 - python/trunk/Lib/test/regrtest.py Message-ID: Author: antoine.pitrou Date: Fri Jan 8 20:39:04 2010 New Revision: 77374 Log: Remove obsolete warning filters in regrtest.py (from issue #7092 -- patch by Florent Xicluna). Modified: python/trunk/Lib/test/regrtest.py Modified: python/trunk/Lib/test/regrtest.py ============================================================================== --- python/trunk/Lib/test/regrtest.py (original) +++ python/trunk/Lib/test/regrtest.py Fri Jan 8 20:39:04 2010 @@ -160,15 +160,6 @@ import warnings import unittest -# I see no other way to suppress these warnings; -# putting them in test_grammar.py has no effect: -warnings.filterwarnings("ignore", "hex/oct constants", FutureWarning, - ".*test.test_grammar$") -if sys.maxint > 0x7fffffff: - # Also suppress them in , because for 64-bit platforms, - # that's where test_grammar.py hides them. - warnings.filterwarnings("ignore", "hex/oct constants", FutureWarning, - "") # Ignore ImportWarnings that only occur in the source tree, # (because of modules with the same name as source-directories in Modules/) From python-checkins at python.org Fri Jan 8 20:42:11 2010 From: python-checkins at python.org (antoine.pitrou) Date: Fri, 08 Jan 2010 19:42:11 -0000 Subject: [Python-checkins] r77375 - in python/branches/py3k: Lib/test/regrtest.py Message-ID: Author: antoine.pitrou Date: Fri Jan 8 20:42:10 2010 New Revision: 77375 Log: Merged revisions 77374 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77374 | antoine.pitrou | 2010-01-08 20:39:04 +0100 (ven., 08 janv. 2010) | 4 lines Remove obsolete warning filters in regrtest.py (from issue #7092 -- patch by Florent Xicluna). ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/regrtest.py Modified: python/branches/py3k/Lib/test/regrtest.py ============================================================================== --- python/branches/py3k/Lib/test/regrtest.py (original) +++ python/branches/py3k/Lib/test/regrtest.py Fri Jan 8 20:42:10 2010 @@ -159,16 +159,6 @@ import unittest from inspect import isabstract -# I see no other way to suppress these warnings; -# putting them in test_grammar.py has no effect: -warnings.filterwarnings("ignore", "hex/oct constants", FutureWarning, - ".*test.test_grammar$") -if sys.maxsize > 0x7fffffff: - # Also suppress them in , because for 64-bit platforms, - # that's where test_grammar.py hides them. - warnings.filterwarnings("ignore", "hex/oct constants", FutureWarning, - "") - # Ignore ImportWarnings that only occur in the source tree, # (because of modules with the same name as source-directories in Modules/) for mod in ("ctypes", "gzip", "zipfile", "tarfile", "encodings.zlib_codec", From nnorwitz at gmail.com Fri Jan 8 22:15:47 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 8 Jan 2010 16:15:47 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100108211547.GA20193@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.507s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [869905 refs] From nnorwitz at gmail.com Fri Jan 8 22:27:28 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 8 Jan 2010 16:27:28 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100108212728.GA24290@kbk-i386-bb.psfb.org> 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19567 refs] [19567 refs] [19567 refs] [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.485s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 339 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [868821 refs] From python-checkins at python.org Sat Jan 9 00:27:23 2010 From: python-checkins at python.org (tarek.ziade) Date: Fri, 08 Jan 2010 23:27:23 -0000 Subject: [Python-checkins] r77376 - in python/branches/release26-maint: Lib/distutils/command/build_py.py Lib/distutils/command/install_lib.py Lib/distutils/errors.py Lib/distutils/tests/support.py Lib/distutils/tests/test_build_py.py Lib/distutils/util.py Misc/NEWS Message-ID: Author: tarek.ziade Date: Sat Jan 9 00:27:23 2010 New Revision: 77376 Log: Merged revisions 75669-75671 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r75669 | tarek.ziade | 2009-10-24 17:10:37 +0200 (Sat, 24 Oct 2009) | 1 line Issue #7071: byte-compilation in Distutils now looks at sys.dont_write_bytecode ........ r75670 | tarek.ziade | 2009-10-24 17:19:03 +0200 (Sat, 24 Oct 2009) | 1 line fixed finally state in distutils.test_util ........ r75671 | tarek.ziade | 2009-10-24 17:51:30 +0200 (Sat, 24 Oct 2009) | 1 line fixed warning and error message ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/distutils/command/build_py.py python/branches/release26-maint/Lib/distutils/command/install_lib.py python/branches/release26-maint/Lib/distutils/errors.py python/branches/release26-maint/Lib/distutils/tests/support.py python/branches/release26-maint/Lib/distutils/tests/test_build_py.py python/branches/release26-maint/Lib/distutils/util.py python/branches/release26-maint/Misc/NEWS Modified: python/branches/release26-maint/Lib/distutils/command/build_py.py ============================================================================== --- python/branches/release26-maint/Lib/distutils/command/build_py.py (original) +++ python/branches/release26-maint/Lib/distutils/command/build_py.py Sat Jan 9 00:27:23 2010 @@ -8,6 +8,7 @@ import string, os from types import * +import sys from glob import glob from distutils.core import Command @@ -418,6 +419,10 @@ def byte_compile (self, files): + if sys.dont_write_bytecode: + self.warn('byte-compiling is disabled, skipping.') + return + from distutils.util import byte_compile prefix = self.build_lib if prefix[-1] != os.sep: Modified: python/branches/release26-maint/Lib/distutils/command/install_lib.py ============================================================================== --- python/branches/release26-maint/Lib/distutils/command/install_lib.py (original) +++ python/branches/release26-maint/Lib/distutils/command/install_lib.py Sat Jan 9 00:27:23 2010 @@ -4,6 +4,8 @@ import os from types import IntType +import sys + from distutils.core import Command from distutils.errors import DistutilsOptionError @@ -122,6 +124,10 @@ return outfiles def byte_compile (self, files): + if sys.dont_write_bytecode: + self.warn('byte-compiling is disabled, skipping.') + return + from distutils.util import byte_compile # Get the "--root" directory supplied to the "install" command, Modified: python/branches/release26-maint/Lib/distutils/errors.py ============================================================================== --- python/branches/release26-maint/Lib/distutils/errors.py (original) +++ python/branches/release26-maint/Lib/distutils/errors.py Sat Jan 9 00:27:23 2010 @@ -76,6 +76,8 @@ class DistutilsTemplateError (DistutilsError): """Syntax error in a file list template.""" +class DistutilsByteCompileError(DistutilsError): + """Byte compile error.""" # Exception classes used by the CCompiler implementation classes class CCompilerError (Exception): Modified: python/branches/release26-maint/Lib/distutils/tests/support.py ============================================================================== --- python/branches/release26-maint/Lib/distutils/tests/support.py (original) +++ python/branches/release26-maint/Lib/distutils/tests/support.py Sat Jan 9 00:27:23 2010 @@ -3,19 +3,50 @@ import shutil import tempfile +from distutils.log import DEBUG, INFO, WARN, ERROR, FATAL from distutils import log from distutils.dist import Distribution +from distutils.cmd import Command class LoggingSilencer(object): def setUp(self): super(LoggingSilencer, self).setUp() self.threshold = log.set_threshold(log.FATAL) + # catching warnings + # when log will be replaced by logging + # we won't need such monkey-patch anymore + self._old_log = log.Log._log + log.Log._log = self._log + self.logs = [] + self._old_warn = Command.warn + Command.warn = self._warn def tearDown(self): log.set_threshold(self.threshold) + log.Log._log = self._old_log + Command.warn = self._old_warn super(LoggingSilencer, self).tearDown() + def _warn(self, msg): + self.logs.append(('', msg, '')) + + def _log(self, level, msg, args): + if level not in (DEBUG, INFO, WARN, ERROR, FATAL): + raise ValueError('%s wrong log level' % str(level)) + self.logs.append((level, msg, args)) + + def get_logs(self, *levels): + def _format(msg, args): + if len(args) == 0: + return msg + return msg % args + return [_format(msg, args) for level, msg, args + in self.logs if level in levels] + + def clear_logs(self): + self.logs = [] + class TempdirManager(object): """Mix-in class that handles temporary directories for test cases. Modified: python/branches/release26-maint/Lib/distutils/tests/test_build_py.py ============================================================================== --- python/branches/release26-maint/Lib/distutils/tests/test_build_py.py (original) +++ python/branches/release26-maint/Lib/distutils/tests/test_build_py.py Sat Jan 9 00:27:23 2010 @@ -90,6 +90,22 @@ os.chdir(cwd) sys.stdout = old_stdout + def test_dont_write_bytecode(self): + # makes sure byte_compile is not used + pkg_dir, dist = self.create_dist() + cmd = build_py(dist) + cmd.compile = 1 + cmd.optimize = 1 + + old_dont_write_bytecode = sys.dont_write_bytecode + sys.dont_write_bytecode = True + try: + cmd.byte_compile([]) + finally: + sys.dont_write_bytecode = old_dont_write_bytecode + + self.assertTrue('byte-compiling is disabled' in self.logs[0][1]) + def test_suite(): return unittest.makeSuite(BuildPyTestCase) Modified: python/branches/release26-maint/Lib/distutils/util.py ============================================================================== --- python/branches/release26-maint/Lib/distutils/util.py (original) +++ python/branches/release26-maint/Lib/distutils/util.py Sat Jan 9 00:27:23 2010 @@ -11,6 +11,7 @@ from distutils.dep_util import newer from distutils.spawn import spawn from distutils import log +from distutils.errors import DistutilsByteCompileError def get_platform (): """Return a string that identifies the current platform. This is used @@ -457,6 +458,9 @@ generated in indirect mode; unless you know what you're doing, leave it set to None. """ + # nothing is done if sys.dont_write_bytecode is True + if sys.dont_write_bytecode: + raise DistutilsByteCompileError('byte-compiling is disabled.') # First, if the caller didn't force us into direct or indirect mode, # figure out which mode we should be in. We take a conservative Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Sat Jan 9 00:27:23 2010 @@ -48,6 +48,9 @@ Library ------- +- Issue #7071: byte-compilation in Distutils is now done with respect to + sys.dont_write_bytecode. + - Issue #7092: Remove py3k warning when importing cPickle. 2to3 handles renaming of `cPickle` to `pickle`. The warning was annoying since there's no alternative to cPickle if you care about performance. Patch by Florent From nnorwitz at gmail.com Sat Jan 9 00:29:46 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 8 Jan 2010 18:29:46 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100108232946.GA31136@kbk-i386-bb.psfb.org> 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-23810 test_bsddb3 still working, be patient... test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_difflib test_dircache test_dis test_distutils [19564 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.580s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15425 refs] [15425 refs] [15425 refs] [25451 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17013 refs] [17013 refs] test_plistlib test_poll test_popen [15430 refs] [15430 refs] [15430 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20936 refs] [20935 refs] [20935 refs] test_pyexpat test_queue test_quopri [18219 refs] [18219 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15425 refs] [15425 refs] [15428 refs] [15425 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [17286 refs] [15640 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] [15425 refs] . [15425 refs] [15425 refs] this bit of output is from a test of stdout in a different process ... [15425 refs] [15425 refs] [15640 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15425 refs] [15425 refs] [15654 refs] [15448 refs] test_tarfile /tmp/python-test/local/lib/python2.7/test/test_tarfile.py:715: DeprecationWarning: use the filter argument instead tar.add(tempdir, arcname="empty_dir", exclude=exclude) /tmp/python-test/local/lib/python2.7/tarfile.py:2004: DeprecationWarning: use the filter argument instead recursive, exclude, filter) test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15428 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18738 refs] [20316 refs] [20130 refs] [20130 refs] [20130 refs] [20130 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib /tmp/python-test/local/lib/python2.7/test/test_xmllib.py:24: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 345 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [886431 refs] From python-checkins at python.org Sat Jan 9 00:42:23 2010 From: python-checkins at python.org (tarek.ziade) Date: Fri, 08 Jan 2010 23:42:23 -0000 Subject: [Python-checkins] r77377 - in python/trunk: Lib/distutils/tests/test_unixccompiler.py Lib/distutils/unixccompiler.py Misc/NEWS Message-ID: Author: tarek.ziade Date: Sat Jan 9 00:42:23 2010 New Revision: 77377 Log: Fixed #7617: all flavors of gcc should be recognized now Modified: python/trunk/Lib/distutils/tests/test_unixccompiler.py python/trunk/Lib/distutils/unixccompiler.py python/trunk/Misc/NEWS Modified: python/trunk/Lib/distutils/tests/test_unixccompiler.py ============================================================================== --- python/trunk/Lib/distutils/tests/test_unixccompiler.py (original) +++ python/trunk/Lib/distutils/tests/test_unixccompiler.py Sat Jan 9 00:42:23 2010 @@ -82,6 +82,18 @@ sysconfig.get_config_var = gcv self.assertEqual(self.cc.rpath_foo(), '-Wl,-R/foo') + # GCC GNULD with fully qualified configuration prefix + # see #7617 + sys.platform = 'bar' + def gcv(v): + if v == 'CC': + return 'x86_64-pc-linux-gnu-gcc-4.4.2' + elif v == 'GNULD': + return 'yes' + sysconfig.get_config_var = gcv + self.assertEqual(self.cc.rpath_foo(), '-Wl,--enable-new-dtags,-R/foo') + + # non-GCC GNULD sys.platform = 'bar' def gcv(v): Modified: python/trunk/Lib/distutils/unixccompiler.py ============================================================================== --- python/trunk/Lib/distutils/unixccompiler.py (original) +++ python/trunk/Lib/distutils/unixccompiler.py Sat Jan 9 00:42:23 2010 @@ -266,6 +266,9 @@ def library_dir_option(self, dir): return "-L" + dir + def _is_gcc(self, compiler_name): + return "gcc" in compiler_name or "g++" in compiler_name + def runtime_library_dir_option(self, dir): # XXX Hackish, at the very least. See Python bug #445902: # http://sourceforge.net/tracker/index.php @@ -285,12 +288,12 @@ # MacOSX's linker doesn't understand the -R flag at all return "-L" + dir elif sys.platform[:5] == "hp-ux": - if "gcc" in compiler or "g++" in compiler: + if self._is_gcc(compiler): return ["-Wl,+s", "-L" + dir] return ["+s", "-L" + dir] elif sys.platform[:7] == "irix646" or sys.platform[:6] == "osf1V5": return ["-rpath", dir] - elif compiler[:3] == "gcc" or compiler[:3] == "g++": + elif self._is_gcc(compiler): # gcc on non-GNU systems does not need -Wl, but can # use it anyway. Since distutils has always passed in # -Wl whenever gcc was used in the past it is probably Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Jan 9 00:42:23 2010 @@ -65,6 +65,10 @@ Library ------- +- Issue #7617: Make sure distutils.unixccompiler.UnixCCompiler recognizes + gcc when it has a fully qualified configuration prefix. Initial patch + by Arfrever. + - Issue #7092: Remove py3k warning when importing cPickle. 2to3 handles renaming of `cPickle` to `pickle`. The warning was annoying since there's no alternative to cPickle if you care about performance. Patch by Florent From python-checkins at python.org Sat Jan 9 00:48:38 2010 From: python-checkins at python.org (tarek.ziade) Date: Fri, 08 Jan 2010 23:48:38 -0000 Subject: [Python-checkins] r77378 - in python/branches/release26-maint: Lib/distutils/tests/test_unixccompiler.py Lib/distutils/unixccompiler.py Misc/NEWS Message-ID: Author: tarek.ziade Date: Sat Jan 9 00:48:37 2010 New Revision: 77378 Log: Merged revisions 77377 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77377 | tarek.ziade | 2010-01-09 00:42:23 +0100 (Sat, 09 Jan 2010) | 1 line Fixed #7617: all flavors of gcc should be recognized now ........ Added: python/branches/release26-maint/Lib/distutils/tests/test_unixccompiler.py Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/distutils/unixccompiler.py python/branches/release26-maint/Misc/NEWS Added: python/branches/release26-maint/Lib/distutils/tests/test_unixccompiler.py ============================================================================== --- (empty file) +++ python/branches/release26-maint/Lib/distutils/tests/test_unixccompiler.py Sat Jan 9 00:48:37 2010 @@ -0,0 +1,129 @@ +"""Tests for distutils.unixccompiler.""" +import sys +import unittest + +from distutils import sysconfig +from distutils.unixccompiler import UnixCCompiler + +class UnixCCompilerTestCase(unittest.TestCase): + + def setUp(self): + self._backup_platform = sys.platform + self._backup_get_config_var = sysconfig.get_config_var + class CompilerWrapper(UnixCCompiler): + def rpath_foo(self): + return self.runtime_library_dir_option('/foo') + self.cc = CompilerWrapper() + + def tearDown(self): + sys.platform = self._backup_platform + sysconfig.get_config_var = self._backup_get_config_var + + def test_runtime_libdir_option(self): + + # not tested under windows + if sys.platform == 'win32': + return + + # Issue#5900 + # + # Ensure RUNPATH is added to extension modules with RPATH if + # GNU ld is used + + # darwin + sys.platform = 'darwin' + self.assertEqual(self.cc.rpath_foo(), '-L/foo') + + # hp-ux + sys.platform = 'hp-ux' + old_gcv = sysconfig.get_config_var + def gcv(v): + return 'xxx' + sysconfig.get_config_var = gcv + self.assertEqual(self.cc.rpath_foo(), ['+s', '-L/foo']) + + def gcv(v): + return 'gcc' + sysconfig.get_config_var = gcv + self.assertEqual(self.cc.rpath_foo(), ['-Wl,+s', '-L/foo']) + + def gcv(v): + return 'g++' + sysconfig.get_config_var = gcv + self.assertEqual(self.cc.rpath_foo(), ['-Wl,+s', '-L/foo']) + + sysconfig.get_config_var = old_gcv + + # irix646 + sys.platform = 'irix646' + self.assertEqual(self.cc.rpath_foo(), ['-rpath', '/foo']) + + # osf1V5 + sys.platform = 'osf1V5' + self.assertEqual(self.cc.rpath_foo(), ['-rpath', '/foo']) + + # GCC GNULD + sys.platform = 'bar' + def gcv(v): + if v == 'CC': + return 'gcc' + elif v == 'GNULD': + return 'yes' + sysconfig.get_config_var = gcv + self.assertEqual(self.cc.rpath_foo(), '-Wl,-R/foo') + + # GCC non-GNULD + sys.platform = 'bar' + def gcv(v): + if v == 'CC': + return 'gcc' + elif v == 'GNULD': + return 'no' + sysconfig.get_config_var = gcv + self.assertEqual(self.cc.rpath_foo(), '-Wl,-R/foo') + + # GCC GNULD with fully qualified configuration prefix + # see #7617 + sys.platform = 'bar' + def gcv(v): + if v == 'CC': + return 'x86_64-pc-linux-gnu-gcc-4.4.2' + elif v == 'GNULD': + return 'yes' + sysconfig.get_config_var = gcv + self.assertEqual(self.cc.rpath_foo(), '-Wl,-R/foo') + + + # non-GCC GNULD + sys.platform = 'bar' + def gcv(v): + if v == 'CC': + return 'cc' + elif v == 'GNULD': + return 'yes' + sysconfig.get_config_var = gcv + self.assertEqual(self.cc.rpath_foo(), '-R/foo') + + # non-GCC non-GNULD + sys.platform = 'bar' + def gcv(v): + if v == 'CC': + return 'cc' + elif v == 'GNULD': + return 'no' + sysconfig.get_config_var = gcv + self.assertEqual(self.cc.rpath_foo(), '-R/foo') + + # AIX C/C++ linker + sys.platform = 'aix' + def gcv(v): + return 'xxx' + sysconfig.get_config_var = gcv + self.assertEqual(self.cc.rpath_foo(), '-R/foo') + + +def test_suite(): + return unittest.makeSuite(UnixCCompilerTestCase) + +if __name__ == "__main__": + unittest.main(defaultTest="test_suite") Modified: python/branches/release26-maint/Lib/distutils/unixccompiler.py ============================================================================== --- python/branches/release26-maint/Lib/distutils/unixccompiler.py (original) +++ python/branches/release26-maint/Lib/distutils/unixccompiler.py Sat Jan 9 00:48:37 2010 @@ -266,6 +266,9 @@ def library_dir_option(self, dir): return "-L" + dir + def _is_gcc(self, compiler_name): + return "gcc" in compiler_name or "g++" in compiler_name + def runtime_library_dir_option(self, dir): # XXX Hackish, at the very least. See Python bug #445902: # http://sourceforge.net/tracker/index.php @@ -284,12 +287,12 @@ # MacOSX's linker doesn't understand the -R flag at all return "-L" + dir elif sys.platform[:5] == "hp-ux": - if "gcc" in compiler or "g++" in compiler: + if self._is_gcc(compiler): return ["-Wl,+s", "-L" + dir] return ["+s", "-L" + dir] elif sys.platform[:7] == "irix646" or sys.platform[:6] == "osf1V5": return ["-rpath", dir] - elif compiler[:3] == "gcc" or compiler[:3] == "g++": + elif self._is_gcc(compiler): return "-Wl,-R" + dir else: return "-R" + dir Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Sat Jan 9 00:48:37 2010 @@ -48,6 +48,10 @@ Library ------- +- Issue #7617: Make sure distutils.unixccompiler.UnixCCompiler recognizes + gcc when it has a fully qualified configuration prefix. Initial patch + by Arfrever. + - Issue #7071: byte-compilation in Distutils is now done with respect to sys.dont_write_bytecode. From solipsis at pitrou.net Sat Jan 9 00:50:44 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Sat, 9 Jan 2010 00:50:44 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77375): sum=0 Message-ID: <20100108235044.B014617715@ns6635.ovh.net> py3k results for svn r77375 (hg cset 94071ed66d6c) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogf-A1UD', '-x', 'test_httpservers'] From python-checkins at python.org Sat Jan 9 00:54:15 2010 From: python-checkins at python.org (tarek.ziade) Date: Fri, 08 Jan 2010 23:54:15 -0000 Subject: [Python-checkins] r77379 - in python/branches/release26-maint/Lib/distutils/tests: test_install_lib.py test_util.py Message-ID: Author: tarek.ziade Date: Sat Jan 9 00:54:15 2010 New Revision: 77379 Log: added more test coverage from trunk for #7617 Added: python/branches/release26-maint/Lib/distutils/tests/test_install_lib.py python/branches/release26-maint/Lib/distutils/tests/test_util.py Added: python/branches/release26-maint/Lib/distutils/tests/test_install_lib.py ============================================================================== --- (empty file) +++ python/branches/release26-maint/Lib/distutils/tests/test_install_lib.py Sat Jan 9 00:54:15 2010 @@ -0,0 +1,35 @@ +"""Tests for distutils.command.install_data.""" +import sys +import os +import unittest + +from distutils.command.install_lib import install_lib +from distutils.extension import Extension +from distutils.tests import support +from distutils.errors import DistutilsOptionError + +class InstallLibTestCase(support.TempdirManager, + support.LoggingSilencer, + unittest.TestCase): + + def test_dont_write_bytecode(self): + # makes sure byte_compile is not used + pkg_dir, dist = self.create_dist() + cmd = install_lib(dist) + cmd.compile = 1 + cmd.optimize = 1 + + old_dont_write_bytecode = sys.dont_write_bytecode + sys.dont_write_bytecode = True + try: + cmd.byte_compile([]) + finally: + sys.dont_write_bytecode = old_dont_write_bytecode + + self.assertTrue('byte-compiling is disabled' in self.logs[0][1]) + +def test_suite(): + return unittest.makeSuite(InstallLibTestCase) + +if __name__ == "__main__": + unittest.main(defaultTest="test_suite") Added: python/branches/release26-maint/Lib/distutils/tests/test_util.py ============================================================================== --- (empty file) +++ python/branches/release26-maint/Lib/distutils/tests/test_util.py Sat Jan 9 00:54:15 2010 @@ -0,0 +1,24 @@ +"""Tests for distutils.util.""" +import sys +import unittest + +from distutils.errors import DistutilsPlatformError, DistutilsByteCompileError +from distutils.util import byte_compile + +class UtilTestCase(unittest.TestCase): + + def test_dont_write_bytecode(self): + # makes sure byte_compile raise a DistutilsError + # if sys.dont_write_bytecode is True + old_dont_write_bytecode = sys.dont_write_bytecode + sys.dont_write_bytecode = True + try: + self.assertRaises(DistutilsByteCompileError, byte_compile, []) + finally: + sys.dont_write_bytecode = old_dont_write_bytecode + +def test_suite(): + return unittest.makeSuite(UtilTestCase) + +if __name__ == "__main__": + unittest.main(defaultTest="test_suite") From python-checkins at python.org Sat Jan 9 00:57:53 2010 From: python-checkins at python.org (tarek.ziade) Date: Fri, 08 Jan 2010 23:57:53 -0000 Subject: [Python-checkins] r77380 - in python/branches/py3k: Lib/distutils/tests/test_unixccompiler.py Lib/distutils/unixccompiler.py Misc/NEWS Message-ID: Author: tarek.ziade Date: Sat Jan 9 00:57:53 2010 New Revision: 77380 Log: Merged revisions 77377 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77377 | tarek.ziade | 2010-01-09 00:42:23 +0100 (Sat, 09 Jan 2010) | 1 line Fixed #7617: all flavors of gcc should be recognized now ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/distutils/tests/test_unixccompiler.py python/branches/py3k/Lib/distutils/unixccompiler.py python/branches/py3k/Misc/NEWS Modified: python/branches/py3k/Lib/distutils/tests/test_unixccompiler.py ============================================================================== --- python/branches/py3k/Lib/distutils/tests/test_unixccompiler.py (original) +++ python/branches/py3k/Lib/distutils/tests/test_unixccompiler.py Sat Jan 9 00:57:53 2010 @@ -82,6 +82,18 @@ sysconfig.get_config_var = gcv self.assertEqual(self.cc.rpath_foo(), '-Wl,-R/foo') + # GCC GNULD with fully qualified configuration prefix + # see #7617 + sys.platform = 'bar' + def gcv(v): + if v == 'CC': + return 'x86_64-pc-linux-gnu-gcc-4.4.2' + elif v == 'GNULD': + return 'yes' + sysconfig.get_config_var = gcv + self.assertEqual(self.cc.rpath_foo(), '-Wl,--enable-new-dtags,-R/foo') + + # non-GCC GNULD sys.platform = 'bar' def gcv(v): Modified: python/branches/py3k/Lib/distutils/unixccompiler.py ============================================================================== --- python/branches/py3k/Lib/distutils/unixccompiler.py (original) +++ python/branches/py3k/Lib/distutils/unixccompiler.py Sat Jan 9 00:57:53 2010 @@ -264,6 +264,9 @@ def library_dir_option(self, dir): return "-L" + dir + def _is_gcc(self, compiler_name): + return "gcc" in compiler_name or "g++" in compiler_name + def runtime_library_dir_option(self, dir): # XXX Hackish, at the very least. See Python bug #445902: # http://sourceforge.net/tracker/index.php @@ -283,12 +286,12 @@ # MacOSX's linker doesn't understand the -R flag at all return "-L" + dir elif sys.platform[:5] == "hp-ux": - if "gcc" in compiler or "g++" in compiler: + if self._is_gcc(compiler): return ["-Wl,+s", "-L" + dir] return ["+s", "-L" + dir] elif sys.platform[:7] == "irix646" or sys.platform[:6] == "osf1V5": return ["-rpath", dir] - elif compiler[:3] == "gcc" or compiler[:3] == "g++": + elif self._is_gcc(compiler): # gcc on non-GNU systems does not need -Wl, but can # use it anyway. Since distutils has always passed in # -Wl whenever gcc was used in the past it is probably Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Sat Jan 9 00:57:53 2010 @@ -194,6 +194,10 @@ Library ------- +- Issue #7617: Make sure distutils.unixccompiler.UnixCCompiler recognizes + gcc when it has a fully qualified configuration prefix. Initial patch + by Arfrever. + - Issue #7105: Make WeakKeyDictionary and WeakValueDictionary robust against the destruction of weakref'ed objects while iterating. From python-checkins at python.org Sat Jan 9 01:03:39 2010 From: python-checkins at python.org (tarek.ziade) Date: Sat, 09 Jan 2010 00:03:39 -0000 Subject: [Python-checkins] r77381 - in python/branches/release31-maint: Lib/distutils/tests/test_unixccompiler.py Lib/distutils/unixccompiler.py Misc/NEWS Message-ID: Author: tarek.ziade Date: Sat Jan 9 01:03:39 2010 New Revision: 77381 Log: Merged revisions 77380 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77380 | tarek.ziade | 2010-01-09 00:57:53 +0100 (Sat, 09 Jan 2010) | 9 lines Merged revisions 77377 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77377 | tarek.ziade | 2010-01-09 00:42:23 +0100 (Sat, 09 Jan 2010) | 1 line Fixed #7617: all flavors of gcc should be recognized now ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/distutils/tests/test_unixccompiler.py python/branches/release31-maint/Lib/distutils/unixccompiler.py python/branches/release31-maint/Misc/NEWS Modified: python/branches/release31-maint/Lib/distutils/tests/test_unixccompiler.py ============================================================================== --- python/branches/release31-maint/Lib/distutils/tests/test_unixccompiler.py (original) +++ python/branches/release31-maint/Lib/distutils/tests/test_unixccompiler.py Sat Jan 9 01:03:39 2010 @@ -82,6 +82,18 @@ sysconfig.get_config_var = gcv self.assertEqual(self.cc.rpath_foo(), '-Wl,-R/foo') + # GCC GNULD with fully qualified configuration prefix + # see #7617 + sys.platform = 'bar' + def gcv(v): + if v == 'CC': + return 'x86_64-pc-linux-gnu-gcc-4.4.2' + elif v == 'GNULD': + return 'yes' + sysconfig.get_config_var = gcv + self.assertEqual(self.cc.rpath_foo(), '-Wl,--enable-new-dtags,-R/foo') + + # non-GCC GNULD sys.platform = 'bar' def gcv(v): Modified: python/branches/release31-maint/Lib/distutils/unixccompiler.py ============================================================================== --- python/branches/release31-maint/Lib/distutils/unixccompiler.py (original) +++ python/branches/release31-maint/Lib/distutils/unixccompiler.py Sat Jan 9 01:03:39 2010 @@ -264,6 +264,9 @@ def library_dir_option(self, dir): return "-L" + dir + def _is_gcc(self, compiler_name): + return "gcc" in compiler_name or "g++" in compiler_name + def runtime_library_dir_option(self, dir): # XXX Hackish, at the very least. See Python bug #445902: # http://sourceforge.net/tracker/index.php @@ -283,13 +286,13 @@ # MacOSX's linker doesn't understand the -R flag at all return "-L" + dir elif sys.platform[:5] == "hp-ux": - if "gcc" in compiler or "g++" in compiler: + if self._is_gcc(compiler): return ["-Wl,+s", "-L" + dir] return ["+s", "-L" + dir] elif sys.platform[:7] == "irix646" or sys.platform[:6] == "osf1V5": return ["-rpath", dir] else: - if compiler[:3] == "gcc" or compiler[:3] == "g++": + if self._is_gcc(compiler): # gcc on non-GNU systems does not need -Wl, but can # use it anyway. Since distutils has always passed in # -Wl whenever gcc was used in the past it is probably Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Sat Jan 9 01:03:39 2010 @@ -61,6 +61,10 @@ Library ------- +- Issue #7617: Make sure distutils.unixccompiler.UnixCCompiler recognizes + gcc when it has a fully qualified configuration prefix. Initial patch + by Arfrever. + - Issue #7105: Make WeakKeyDictionary and WeakValueDictionary robust against the destruction of weakref'ed objects while iterating. From python-checkins at python.org Sat Jan 9 10:47:11 2010 From: python-checkins at python.org (georg.brandl) Date: Sat, 09 Jan 2010 09:47:11 -0000 Subject: [Python-checkins] r77382 - python/trunk/Doc/library/inspect.rst Message-ID: Author: georg.brandl Date: Sat Jan 9 10:47:11 2010 New Revision: 77382 Log: #7422: make it clear that getargspec() only works on Python functions. Modified: python/trunk/Doc/library/inspect.rst Modified: python/trunk/Doc/library/inspect.rst ============================================================================== --- python/trunk/Doc/library/inspect.rst (original) +++ python/trunk/Doc/library/inspect.rst Sat Jan 9 10:47:11 2010 @@ -457,7 +457,7 @@ .. function:: getargspec(func) - Get the names and default values of a function's arguments. A tuple of four + Get the names and default values of a Python function's arguments. A tuple of four things is returned: ``(args, varargs, varkw, defaults)``. *args* is a list of the argument names (it may contain nested lists). *varargs* and *varkw* are the names of the ``*`` and ``**`` arguments or ``None``. *defaults* is a tuple of From python-checkins at python.org Sat Jan 9 10:48:47 2010 From: python-checkins at python.org (georg.brandl) Date: Sat, 09 Jan 2010 09:48:47 -0000 Subject: [Python-checkins] r77383 - in python/branches/py3k: Doc/library/inspect.rst Message-ID: Author: georg.brandl Date: Sat Jan 9 10:48:46 2010 New Revision: 77383 Log: Merged revisions 77382 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77382 | georg.brandl | 2010-01-09 10:47:11 +0100 (Sa, 09 Jan 2010) | 1 line #7422: make it clear that getargspec() only works on Python functions. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/library/inspect.rst Modified: python/branches/py3k/Doc/library/inspect.rst ============================================================================== --- python/branches/py3k/Doc/library/inspect.rst (original) +++ python/branches/py3k/Doc/library/inspect.rst Sat Jan 9 10:48:46 2010 @@ -387,7 +387,7 @@ .. function:: getargspec(func) - Get the names and default values of a function's arguments. A + Get the names and default values of a Python function's arguments. A :term:`named tuple` ``ArgSpec(args, varargs, keywords, defaults)`` is returned. *args* is a list of the argument names. *varargs* and *varkw* are the names of the ``*`` and @@ -402,8 +402,8 @@ .. function:: getfullargspec(func) - Get the names and default values of a function's arguments. A :term:`named - tuple` is returned: + Get the names and default values of a Python function's arguments. A + :term:`named tuple` is returned: ``FullArgSpec(args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, annotations)`` From python-checkins at python.org Sat Jan 9 17:34:07 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 09 Jan 2010 16:34:07 -0000 Subject: [Python-checkins] r77384 - in python/trunk: Include/patchlevel.h Lib/distutils/__init__.py Lib/idlelib/idlever.py Misc/NEWS Misc/RPM/python-2.7.spec README Message-ID: Author: benjamin.peterson Date: Sat Jan 9 17:34:06 2010 New Revision: 77384 Log: bump version to 2.7a2 Modified: python/trunk/Include/patchlevel.h python/trunk/Lib/distutils/__init__.py python/trunk/Lib/idlelib/idlever.py python/trunk/Misc/NEWS python/trunk/Misc/RPM/python-2.7.spec python/trunk/README Modified: python/trunk/Include/patchlevel.h ============================================================================== --- python/trunk/Include/patchlevel.h (original) +++ python/trunk/Include/patchlevel.h Sat Jan 9 17:34:06 2010 @@ -24,10 +24,10 @@ #define PY_MINOR_VERSION 7 #define PY_MICRO_VERSION 0 #define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_ALPHA -#define PY_RELEASE_SERIAL 1 +#define PY_RELEASE_SERIAL 2 /* Version as a string */ -#define PY_VERSION "2.7a1+" +#define PY_VERSION "2.7a2" /*--end constants--*/ /* Subversion Revision number of this file (not of the repository) */ Modified: python/trunk/Lib/distutils/__init__.py ============================================================================== --- python/trunk/Lib/distutils/__init__.py (original) +++ python/trunk/Lib/distutils/__init__.py Sat Jan 9 17:34:06 2010 @@ -15,5 +15,5 @@ # Updated automatically by the Python release process. # #--start constants-- -__version__ = "2.7a1" +__version__ = "2.7a2" #--end constants-- Modified: python/trunk/Lib/idlelib/idlever.py ============================================================================== --- python/trunk/Lib/idlelib/idlever.py (original) +++ python/trunk/Lib/idlelib/idlever.py Sat Jan 9 17:34:06 2010 @@ -1 +1 @@ -IDLE_VERSION = "2.7a1" +IDLE_VERSION = "2.7a2" Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Jan 9 17:34:06 2010 @@ -7,7 +7,7 @@ What's New in Python 2.7 alpha 2? ================================= -*Release date: XXXX-XX-XX* +*Release date: 2010-01-09* Core and Builtins ----------------- Modified: python/trunk/Misc/RPM/python-2.7.spec ============================================================================== --- python/trunk/Misc/RPM/python-2.7.spec (original) +++ python/trunk/Misc/RPM/python-2.7.spec Sat Jan 9 17:34:06 2010 @@ -34,7 +34,7 @@ %define name python #--start constants-- -%define version 2.7a1 +%define version 2.7a2 %define libver 2.7 #--end constants-- %define release 1pydotorg Modified: python/trunk/README ============================================================================== --- python/trunk/README (original) +++ python/trunk/README Sat Jan 9 17:34:06 2010 @@ -1,4 +1,4 @@ -This is Python version 2.7 alpha 1 +This is Python version 2.7 alpha 2 ================================== Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 From python-checkins at python.org Sat Jan 9 17:36:10 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 09 Jan 2010 16:36:10 -0000 Subject: [Python-checkins] r77385 - python/tags/r27a2 Message-ID: Author: benjamin.peterson Date: Sat Jan 9 17:36:09 2010 New Revision: 77385 Log: tag 2.7 alpha 2 Added: python/tags/r27a2/ - copied from r77384, /python/trunk/ From python-checkins at python.org Sat Jan 9 18:30:31 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 09 Jan 2010 17:30:31 -0000 Subject: [Python-checkins] r77386 - in python/trunk: Include/patchlevel.h Misc/NEWS Message-ID: Author: benjamin.peterson Date: Sat Jan 9 18:30:31 2010 New Revision: 77386 Log: post release version adjustment Modified: python/trunk/Include/patchlevel.h python/trunk/Misc/NEWS Modified: python/trunk/Include/patchlevel.h ============================================================================== --- python/trunk/Include/patchlevel.h (original) +++ python/trunk/Include/patchlevel.h Sat Jan 9 18:30:31 2010 @@ -27,7 +27,7 @@ #define PY_RELEASE_SERIAL 2 /* Version as a string */ -#define PY_VERSION "2.7a2" +#define PY_VERSION "2.7a2+" /*--end constants--*/ /* Subversion Revision number of this file (not of the repository) */ Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Jan 9 18:30:31 2010 @@ -4,6 +4,18 @@ (editors: check NEWS.help for information about editing NEWS using ReST.) +What's New in Python 2.7 alpha 3? +================================= + +*Release date: XXXX-XX-XX* + +Core and Builtins +----------------- + +Library +------- + + What's New in Python 2.7 alpha 2? ================================= From python-checkins at python.org Sat Jan 9 18:36:21 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 09 Jan 2010 17:36:21 -0000 Subject: [Python-checkins] r77387 - python/branches/py3k Message-ID: Author: benjamin.peterson Date: Sat Jan 9 18:36:21 2010 New Revision: 77387 Log: Blocked revisions 77384,77386 via svnmerge ........ r77384 | benjamin.peterson | 2010-01-09 10:34:06 -0600 (Sat, 09 Jan 2010) | 1 line bump version to 2.7a2 ........ r77386 | benjamin.peterson | 2010-01-09 11:30:31 -0600 (Sat, 09 Jan 2010) | 1 line post release version adjustment ........ Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Sat Jan 9 18:45:42 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 09 Jan 2010 17:45:42 -0000 Subject: [Python-checkins] r77388 - python/branches/py3k Message-ID: Author: benjamin.peterson Date: Sat Jan 9 18:45:42 2010 New Revision: 77388 Log: Blocked revisions 77227,77256,77260,77368-77369 via svnmerge ........ r77227 | martin.v.loewis | 2010-01-02 03:53:18 -0600 (Sat, 02 Jan 2010) | 1 line Make script work with 2.5. ........ r77256 | georg.brandl | 2010-01-02 16:55:55 -0600 (Sat, 02 Jan 2010) | 1 line Fix typo. ........ r77260 | gregory.p.smith | 2010-01-02 18:43:02 -0600 (Sat, 02 Jan 2010) | 2 lines make setup.py similar to py3k's when reporting on _hashlib as missing or not. ........ r77368 | senthil.kumaran | 2010-01-08 12:41:40 -0600 (Fri, 08 Jan 2010) | 1 line Fixing - Issue7026 - RuntimeError: dictionary changed size during iteration. Patch by flox ........ r77369 | senthil.kumaran | 2010-01-08 13:04:16 -0600 (Fri, 08 Jan 2010) | 4 lines Reverting the Revision: 77368. I committed Flox's big patch for tests by mistake. ( It may come in for sure tough) ........ Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Sat Jan 9 19:45:30 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 09 Jan 2010 18:45:30 -0000 Subject: [Python-checkins] r77389 - in python/branches/py3k: Doc/c-api/init.rst Doc/using/windows.rst Lib/email/generator.py Lib/email/test/test_email.py Lib/email/utils.py Lib/idlelib/NEWS.txt Lib/logging/__init__.py Lib/platform.py Lib/test/test_hashlib.py Lib/test/test_logging.py Lib/test/test_urllib.py Lib/turtle.py Lib/unittest/__init__.py Mac/Resources/app/Info.plist.in Modules/_hashopenssl.c Message-ID: Author: benjamin.peterson Date: Sat Jan 9 19:45:30 2010 New Revision: 77389 Log: Merged revisions 77209,77229,77359-77360,77371 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77209 | georg.brandl | 2010-01-01 07:07:05 -0600 (Fri, 01 Jan 2010) | 1 line More yearly updates. ........ r77229 | georg.brandl | 2010-01-02 06:35:01 -0600 (Sat, 02 Jan 2010) | 1 line Fix casing. ........ r77359 | georg.brandl | 2010-01-07 14:54:45 -0600 (Thu, 07 Jan 2010) | 1 line Fix description for Py_GetPath(); it sounded like it always returned sys.path. ........ r77360 | georg.brandl | 2010-01-07 15:48:47 -0600 (Thu, 07 Jan 2010) | 1 line #7653: clarify how the PythonPath registry key should look like. ........ r77371 | senthil.kumaran | 2010-01-08 13:20:25 -0600 (Fri, 08 Jan 2010) | 3 lines Fix for Issue7026. For the Error - RuntimeError: dictionary changed size during iteration ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/c-api/init.rst python/branches/py3k/Doc/using/windows.rst python/branches/py3k/Lib/email/generator.py python/branches/py3k/Lib/email/test/test_email.py python/branches/py3k/Lib/email/utils.py python/branches/py3k/Lib/idlelib/NEWS.txt python/branches/py3k/Lib/logging/__init__.py python/branches/py3k/Lib/platform.py python/branches/py3k/Lib/test/test_hashlib.py python/branches/py3k/Lib/test/test_logging.py python/branches/py3k/Lib/test/test_urllib.py python/branches/py3k/Lib/turtle.py python/branches/py3k/Lib/unittest/__init__.py python/branches/py3k/Mac/Resources/app/Info.plist.in python/branches/py3k/Modules/_hashopenssl.c Modified: python/branches/py3k/Doc/c-api/init.rst ============================================================================== --- python/branches/py3k/Doc/c-api/init.rst (original) +++ python/branches/py3k/Doc/c-api/init.rst Sat Jan 9 19:45:30 2010 @@ -256,14 +256,15 @@ triple: module; search; path single: path (in module sys) - Return the default module search path; this is computed from the program name - (set by :cfunc:`Py_SetProgramName` above) and some environment variables. The - returned string consists of a series of directory names separated by a platform - dependent delimiter character. The delimiter character is ``':'`` on Unix and - Mac OS X, ``';'`` on Windows. The returned string points into static storage; - the caller should not modify its value. The value is available to Python code - as the list ``sys.path``, which may be modified to change the future search path - for loaded modules. + Return the default module search path; this is computed from the program name + (set by :cfunc:`Py_SetProgramName` above) and some environment variables. + The returned string consists of a series of directory names separated by a + platform dependent delimiter character. The delimiter character is ``':'`` + on Unix and Mac OS X, ``';'`` on Windows. The returned string points into + static storage; the caller should not modify its value. The list + :data:`sys.path` is initialized with this value on interpreter startup; it + can be (and usually is) modified later to change the search path for loading + modules. .. XXX should give the exact rules Modified: python/branches/py3k/Doc/using/windows.rst ============================================================================== --- python/branches/py3k/Doc/using/windows.rst (original) +++ python/branches/py3k/Doc/using/windows.rst Sat Jan 9 19:45:30 2010 @@ -166,12 +166,13 @@ .. `` -Modifying the module search path can also be done through the Windows registry: -Edit -:file:`HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\{version}\\PythonPath\\`, -as described above for the environment variable :envvar:`%PYTHONPATH%`. A -convenient registry editor is :program:`regedit` (start it by typing "regedit" -into :menuselection:`Start --> Run`). +Modifying the module search path can also be done through the Windows registry +under the key :file:`HKLM\\SOFTWARE\\Python\\PythonCore\\{version}\\PythonPath`. +Subkeys which have semicolon-delimited path strings as their default value will +cause each path to be searched. Multiple subkeys can be created and are +appended to the path in alphabetical order. A convenient registry editor is +:program:`regedit` (start it by typing "regedit" into :menuselection:`Start --> +Run`). Executing scripts Modified: python/branches/py3k/Lib/email/generator.py ============================================================================== --- python/branches/py3k/Lib/email/generator.py (original) +++ python/branches/py3k/Lib/email/generator.py Sat Jan 9 19:45:30 2010 @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2007 Python Software Foundation +# Copyright (C) 2001-2010 Python Software Foundation # Author: Barry Warsaw # Contact: email-sig at python.org Modified: python/branches/py3k/Lib/email/test/test_email.py ============================================================================== --- python/branches/py3k/Lib/email/test/test_email.py (original) +++ python/branches/py3k/Lib/email/test/test_email.py Sat Jan 9 19:45:30 2010 @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2007 Python Software Foundation +# Copyright (C) 2001-2010 Python Software Foundation # Contact: email-sig at python.org # email package unit tests Modified: python/branches/py3k/Lib/email/utils.py ============================================================================== --- python/branches/py3k/Lib/email/utils.py (original) +++ python/branches/py3k/Lib/email/utils.py Sat Jan 9 19:45:30 2010 @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2009 Python Software Foundation +# Copyright (C) 2001-2010 Python Software Foundation # Author: Barry Warsaw # Contact: email-sig at python.org Modified: python/branches/py3k/Lib/idlelib/NEWS.txt ============================================================================== --- python/branches/py3k/Lib/idlelib/NEWS.txt (original) +++ python/branches/py3k/Lib/idlelib/NEWS.txt Sat Jan 9 19:45:30 2010 @@ -28,7 +28,7 @@ What's New in IDLE 2.7? (UNRELEASED, but merged into 3.1 releases above.) ======================= -*Release date: XX-XXX-2009* +*Release date: XX-XXX-2010* - idle.py modified and simplified to better support developing experimental versions of IDLE which are not installed in the standard location. Modified: python/branches/py3k/Lib/logging/__init__.py ============================================================================== --- python/branches/py3k/Lib/logging/__init__.py (original) +++ python/branches/py3k/Lib/logging/__init__.py Sat Jan 9 19:45:30 2010 @@ -18,7 +18,7 @@ Logging package for Python. Based on PEP 282 and comments thereto in comp.lang.python, and influenced by Apache's log4j system. -Copyright (C) 2001-2009 Vinay Sajip. All Rights Reserved. +Copyright (C) 2001-2010 Vinay Sajip. All Rights Reserved. To use, simply 'import logging' and log away! """ Modified: python/branches/py3k/Lib/platform.py ============================================================================== --- python/branches/py3k/Lib/platform.py (original) +++ python/branches/py3k/Lib/platform.py Sat Jan 9 19:45:30 2010 @@ -90,7 +90,7 @@ __copyright__ = """ Copyright (c) 1999-2000, Marc-Andre Lemburg; mailto:mal at lemburg.com - Copyright (c) 2000-2009, eGenix.com Software GmbH; mailto:info at egenix.com + Copyright (c) 2000-2010, eGenix.com Software GmbH; mailto:info at egenix.com Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee or royalty is hereby granted, Modified: python/branches/py3k/Lib/test/test_hashlib.py ============================================================================== --- python/branches/py3k/Lib/test/test_hashlib.py (original) +++ python/branches/py3k/Lib/test/test_hashlib.py Sat Jan 9 19:45:30 2010 @@ -2,7 +2,7 @@ # # $Id$ # -# Copyright (C) 2005-2009 Gregory P. Smith (greg at krypto.org) +# Copyright (C) 2005-2010 Gregory P. Smith (greg at krypto.org) # Licensed to PSF under a Contributor Agreement. # Modified: python/branches/py3k/Lib/test/test_logging.py ============================================================================== --- python/branches/py3k/Lib/test/test_logging.py (original) +++ python/branches/py3k/Lib/test/test_logging.py Sat Jan 9 19:45:30 2010 @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright 2001-2009 by Vinay Sajip. All Rights Reserved. +# Copyright 2001-2010 by Vinay Sajip. All Rights Reserved. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, @@ -18,7 +18,7 @@ """Test harness for the logging module. Run all tests. -Copyright (C) 2001-2009 Vinay Sajip. All Rights Reserved. +Copyright (C) 2001-2010 Vinay Sajip. All Rights Reserved. """ import logging Modified: python/branches/py3k/Lib/test/test_urllib.py ============================================================================== --- python/branches/py3k/Lib/test/test_urllib.py (original) +++ python/branches/py3k/Lib/test/test_urllib.py Sat Jan 9 19:45:30 2010 @@ -119,6 +119,10 @@ def setUp(self): # Records changes to env vars self.env = support.EnvironmentVarGuard() + # Delete all proxy related env vars + for k in os.environ.keys(): + if 'proxy' in k.lower(): + self.env.unset(k) def tearDown(self): # Restore all proxy related env vars Modified: python/branches/py3k/Lib/turtle.py ============================================================================== --- python/branches/py3k/Lib/turtle.py (original) +++ python/branches/py3k/Lib/turtle.py Sat Jan 9 19:45:30 2010 @@ -2,7 +2,7 @@ # turtle.py: a Tkinter based turtle graphics module for Python # Version 1.1b - 4. 5. 2009 # -# Copyright (C) 2006 - 2009 Gregor Lingl +# Copyright (C) 2006 - 2010 Gregor Lingl # email: glingl at aon.at # # This software is provided 'as-is', without any express or implied Modified: python/branches/py3k/Lib/unittest/__init__.py ============================================================================== --- python/branches/py3k/Lib/unittest/__init__.py (original) +++ python/branches/py3k/Lib/unittest/__init__.py Sat Jan 9 19:45:30 2010 @@ -27,7 +27,7 @@ http://docs.python.org/library/unittest.html Copyright (c) 1999-2003 Steve Purcell -Copyright (c) 2003-2009 Python Software Foundation +Copyright (c) 2003-2010 Python Software Foundation This module is free software, and you may redistribute it and/or modify it under the same terms as Python itself, so long as this copyright message and disclaimer are retained in their original form. Modified: python/branches/py3k/Mac/Resources/app/Info.plist.in ============================================================================== --- python/branches/py3k/Mac/Resources/app/Info.plist.in (original) +++ python/branches/py3k/Mac/Resources/app/Info.plist.in Sat Jan 9 19:45:30 2010 @@ -20,7 +20,7 @@ CFBundleExecutable Python CFBundleGetInfoString - %version%, (c) 2004-2009 Python Software Foundation. + %version%, (c) 2004-2010 Python Software Foundation. CFBundleHelpBookFolder Documentation @@ -37,7 +37,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleLongVersionString - %version%, (c) 2004-2009 Python Software Foundation. + %version%, (c) 2004-2010 Python Software Foundation. CFBundleName Python CFBundlePackageType Modified: python/branches/py3k/Modules/_hashopenssl.c ============================================================================== --- python/branches/py3k/Modules/_hashopenssl.c (original) +++ python/branches/py3k/Modules/_hashopenssl.c Sat Jan 9 19:45:30 2010 @@ -1,7 +1,7 @@ /* Module that wraps all OpenSSL hash algorithms */ /* - * Copyright (C) 2005-2009 Gregory P. Smith (greg at krypto.org) + * Copyright (C) 2005-2010 Gregory P. Smith (greg at krypto.org) * Licensed to PSF under a Contributor Agreement. * * Derived from a skeleton of shamodule.c containing work performed by: From python-checkins at python.org Sat Jan 9 19:48:47 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 09 Jan 2010 18:48:47 -0000 Subject: [Python-checkins] r77390 - in python/branches/release31-maint: Doc/c-api/init.rst Doc/using/windows.rst Lib/email/generator.py Lib/email/test/test_email.py Lib/email/utils.py Lib/idlelib/NEWS.txt Lib/logging/__init__.py Lib/platform.py Lib/test/test_hashlib.py Lib/test/test_logging.py Lib/test/test_urllib.py Lib/turtle.py Mac/Resources/app/Info.plist.in Modules/_hashopenssl.c Message-ID: Author: benjamin.peterson Date: Sat Jan 9 19:48:46 2010 New Revision: 77390 Log: Merged revisions 77389 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77389 | benjamin.peterson | 2010-01-09 12:45:30 -0600 (Sat, 09 Jan 2010) | 25 lines Merged revisions 77209,77229,77359-77360,77371 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77209 | georg.brandl | 2010-01-01 07:07:05 -0600 (Fri, 01 Jan 2010) | 1 line More yearly updates. ........ r77229 | georg.brandl | 2010-01-02 06:35:01 -0600 (Sat, 02 Jan 2010) | 1 line Fix casing. ........ r77359 | georg.brandl | 2010-01-07 14:54:45 -0600 (Thu, 07 Jan 2010) | 1 line Fix description for Py_GetPath(); it sounded like it always returned sys.path. ........ r77360 | georg.brandl | 2010-01-07 15:48:47 -0600 (Thu, 07 Jan 2010) | 1 line #7653: clarify how the PythonPath registry key should look like. ........ r77371 | senthil.kumaran | 2010-01-08 13:20:25 -0600 (Fri, 08 Jan 2010) | 3 lines Fix for Issue7026. For the Error - RuntimeError: dictionary changed size during iteration ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Doc/c-api/init.rst python/branches/release31-maint/Doc/using/windows.rst python/branches/release31-maint/Lib/email/generator.py python/branches/release31-maint/Lib/email/test/test_email.py python/branches/release31-maint/Lib/email/utils.py python/branches/release31-maint/Lib/idlelib/NEWS.txt python/branches/release31-maint/Lib/logging/__init__.py python/branches/release31-maint/Lib/platform.py python/branches/release31-maint/Lib/test/test_hashlib.py python/branches/release31-maint/Lib/test/test_logging.py python/branches/release31-maint/Lib/test/test_urllib.py python/branches/release31-maint/Lib/turtle.py python/branches/release31-maint/Mac/Resources/app/Info.plist.in python/branches/release31-maint/Modules/_hashopenssl.c Modified: python/branches/release31-maint/Doc/c-api/init.rst ============================================================================== --- python/branches/release31-maint/Doc/c-api/init.rst (original) +++ python/branches/release31-maint/Doc/c-api/init.rst Sat Jan 9 19:48:46 2010 @@ -256,14 +256,15 @@ triple: module; search; path single: path (in module sys) - Return the default module search path; this is computed from the program name - (set by :cfunc:`Py_SetProgramName` above) and some environment variables. The - returned string consists of a series of directory names separated by a platform - dependent delimiter character. The delimiter character is ``':'`` on Unix and - Mac OS X, ``';'`` on Windows. The returned string points into static storage; - the caller should not modify its value. The value is available to Python code - as the list ``sys.path``, which may be modified to change the future search path - for loaded modules. + Return the default module search path; this is computed from the program name + (set by :cfunc:`Py_SetProgramName` above) and some environment variables. + The returned string consists of a series of directory names separated by a + platform dependent delimiter character. The delimiter character is ``':'`` + on Unix and Mac OS X, ``';'`` on Windows. The returned string points into + static storage; the caller should not modify its value. The list + :data:`sys.path` is initialized with this value on interpreter startup; it + can be (and usually is) modified later to change the search path for loading + modules. .. XXX should give the exact rules Modified: python/branches/release31-maint/Doc/using/windows.rst ============================================================================== --- python/branches/release31-maint/Doc/using/windows.rst (original) +++ python/branches/release31-maint/Doc/using/windows.rst Sat Jan 9 19:48:46 2010 @@ -166,12 +166,13 @@ .. `` -Modifying the module search path can also be done through the Windows registry: -Edit -:file:`HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\{version}\\PythonPath\\`, -as described above for the environment variable :envvar:`%PYTHONPATH%`. A -convenient registry editor is :program:`regedit` (start it by typing "regedit" -into :menuselection:`Start --> Run`). +Modifying the module search path can also be done through the Windows registry +under the key :file:`HKLM\\SOFTWARE\\Python\\PythonCore\\{version}\\PythonPath`. +Subkeys which have semicolon-delimited path strings as their default value will +cause each path to be searched. Multiple subkeys can be created and are +appended to the path in alphabetical order. A convenient registry editor is +:program:`regedit` (start it by typing "regedit" into :menuselection:`Start --> +Run`). Executing scripts Modified: python/branches/release31-maint/Lib/email/generator.py ============================================================================== --- python/branches/release31-maint/Lib/email/generator.py (original) +++ python/branches/release31-maint/Lib/email/generator.py Sat Jan 9 19:48:46 2010 @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2007 Python Software Foundation +# Copyright (C) 2001-2010 Python Software Foundation # Author: Barry Warsaw # Contact: email-sig at python.org Modified: python/branches/release31-maint/Lib/email/test/test_email.py ============================================================================== --- python/branches/release31-maint/Lib/email/test/test_email.py (original) +++ python/branches/release31-maint/Lib/email/test/test_email.py Sat Jan 9 19:48:46 2010 @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2007 Python Software Foundation +# Copyright (C) 2001-2010 Python Software Foundation # Contact: email-sig at python.org # email package unit tests Modified: python/branches/release31-maint/Lib/email/utils.py ============================================================================== --- python/branches/release31-maint/Lib/email/utils.py (original) +++ python/branches/release31-maint/Lib/email/utils.py Sat Jan 9 19:48:46 2010 @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2009 Python Software Foundation +# Copyright (C) 2001-2010 Python Software Foundation # Author: Barry Warsaw # Contact: email-sig at python.org Modified: python/branches/release31-maint/Lib/idlelib/NEWS.txt ============================================================================== --- python/branches/release31-maint/Lib/idlelib/NEWS.txt (original) +++ python/branches/release31-maint/Lib/idlelib/NEWS.txt Sat Jan 9 19:48:46 2010 @@ -28,7 +28,7 @@ What's New in IDLE 2.7? (UNRELEASED, but merged into 3.1 releases above.) ======================= -*Release date: XX-XXX-2009* +*Release date: XX-XXX-2010* - idle.py modified and simplified to better support developing experimental versions of IDLE which are not installed in the standard location. Modified: python/branches/release31-maint/Lib/logging/__init__.py ============================================================================== --- python/branches/release31-maint/Lib/logging/__init__.py (original) +++ python/branches/release31-maint/Lib/logging/__init__.py Sat Jan 9 19:48:46 2010 @@ -18,7 +18,7 @@ Logging package for Python. Based on PEP 282 and comments thereto in comp.lang.python, and influenced by Apache's log4j system. -Copyright (C) 2001-2009 Vinay Sajip. All Rights Reserved. +Copyright (C) 2001-2010 Vinay Sajip. All Rights Reserved. To use, simply 'import logging' and log away! """ Modified: python/branches/release31-maint/Lib/platform.py ============================================================================== --- python/branches/release31-maint/Lib/platform.py (original) +++ python/branches/release31-maint/Lib/platform.py Sat Jan 9 19:48:46 2010 @@ -89,7 +89,7 @@ __copyright__ = """ Copyright (c) 1999-2000, Marc-Andre Lemburg; mailto:mal at lemburg.com - Copyright (c) 2000-2008, eGenix.com Software GmbH; mailto:info at egenix.com + Copyright (c) 2000-2010, eGenix.com Software GmbH; mailto:info at egenix.com Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee or royalty is hereby granted, Modified: python/branches/release31-maint/Lib/test/test_hashlib.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_hashlib.py (original) +++ python/branches/release31-maint/Lib/test/test_hashlib.py Sat Jan 9 19:48:46 2010 @@ -2,7 +2,7 @@ # # $Id$ # -# Copyright (C) 2005-2009 Gregory P. Smith (greg at krypto.org) +# Copyright (C) 2005-2010 Gregory P. Smith (greg at krypto.org) # Licensed to PSF under a Contributor Agreement. # Modified: python/branches/release31-maint/Lib/test/test_logging.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_logging.py (original) +++ python/branches/release31-maint/Lib/test/test_logging.py Sat Jan 9 19:48:46 2010 @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright 2001-2009 by Vinay Sajip. All Rights Reserved. +# Copyright 2001-2010 by Vinay Sajip. All Rights Reserved. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, @@ -18,7 +18,7 @@ """Test harness for the logging module. Run all tests. -Copyright (C) 2001-2009 Vinay Sajip. All Rights Reserved. +Copyright (C) 2001-2010 Vinay Sajip. All Rights Reserved. """ import logging Modified: python/branches/release31-maint/Lib/test/test_urllib.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_urllib.py (original) +++ python/branches/release31-maint/Lib/test/test_urllib.py Sat Jan 9 19:48:46 2010 @@ -119,6 +119,10 @@ def setUp(self): # Records changes to env vars self.env = support.EnvironmentVarGuard() + # Delete all proxy related env vars + for k in os.environ.keys(): + if 'proxy' in k.lower(): + self.env.unset(k) def tearDown(self): # Restore all proxy related env vars Modified: python/branches/release31-maint/Lib/turtle.py ============================================================================== --- python/branches/release31-maint/Lib/turtle.py (original) +++ python/branches/release31-maint/Lib/turtle.py Sat Jan 9 19:48:46 2010 @@ -2,7 +2,7 @@ # turtle.py: a Tkinter based turtle graphics module for Python # Version 1.1b - 4. 5. 2009 # -# Copyright (C) 2006 - 2009 Gregor Lingl +# Copyright (C) 2006 - 2010 Gregor Lingl # email: glingl at aon.at # # This software is provided 'as-is', without any express or implied Modified: python/branches/release31-maint/Mac/Resources/app/Info.plist.in ============================================================================== --- python/branches/release31-maint/Mac/Resources/app/Info.plist.in (original) +++ python/branches/release31-maint/Mac/Resources/app/Info.plist.in Sat Jan 9 19:48:46 2010 @@ -20,7 +20,7 @@ CFBundleExecutable Python CFBundleGetInfoString - %version%, (c) 2004-2009 Python Software Foundation. + %version%, (c) 2004-2010 Python Software Foundation. CFBundleHelpBookFolder Documentation @@ -37,7 +37,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleLongVersionString - %version%, (c) 2004-2009 Python Software Foundation. + %version%, (c) 2004-2010 Python Software Foundation. CFBundleName Python CFBundlePackageType Modified: python/branches/release31-maint/Modules/_hashopenssl.c ============================================================================== --- python/branches/release31-maint/Modules/_hashopenssl.c (original) +++ python/branches/release31-maint/Modules/_hashopenssl.c Sat Jan 9 19:48:46 2010 @@ -1,7 +1,7 @@ /* Module that wraps all OpenSSL hash algorithms */ /* - * Copyright (C) 2005-2009 Gregory P. Smith (greg at krypto.org) + * Copyright (C) 2005-2010 Gregory P. Smith (greg at krypto.org) * Licensed to PSF under a Contributor Agreement. * * Derived from a skeleton of shamodule.c containing work performed by: From python-checkins at python.org Sat Jan 9 19:50:51 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 09 Jan 2010 18:50:51 -0000 Subject: [Python-checkins] r77391 - python/trunk/Lib/test/test_index.py Message-ID: Author: mark.dickinson Date: Sat Jan 9 19:50:50 2010 New Revision: 77391 Log: Issue #7532: Add additional slicing test cases for new- and old-style classes. Patch by Florent Xicluna. Modified: python/trunk/Lib/test/test_index.py Modified: python/trunk/Lib/test/test_index.py ============================================================================== --- python/trunk/Lib/test/test_index.py (original) +++ python/trunk/Lib/test/test_index.py Sat Jan 9 19:50:50 2010 @@ -89,6 +89,24 @@ self.assertEqual(self.seq[self.o:self.o2], self.seq[1:3]) self.assertEqual(self.seq[self.n:self.n2], self.seq[2:4]) + def test_slice_bug7532(self): + seqlen = len(self.seq) + self.o.ind = int(seqlen * 1.5) + self.n.ind = seqlen + 2 + self.assertEqual(self.seq[self.o:], self.seq[0:0]) + self.assertEqual(self.seq[:self.o], self.seq) + self.assertEqual(self.seq[self.n:], self.seq[0:0]) + self.assertEqual(self.seq[:self.n], self.seq) + if isinstance(self.seq, ClassicSeq): + return + # These tests fail for ClassicSeq (see bug #7532) + self.o2.ind = -seqlen - 2 + self.n2.ind = -int(seqlen * 1.5) + self.assertEqual(self.seq[self.o2:], self.seq) + self.assertEqual(self.seq[:self.o2], self.seq[0:0]) + self.assertEqual(self.seq[self.n2:], self.seq) + self.assertEqual(self.seq[:self.n2], self.seq[0:0]) + def test_repeat(self): self.o.ind = 3 self.n.ind = 2 @@ -156,6 +174,40 @@ self.assertEqual(lst, [5, 6, 7, 8, 9, 11] * 3) +class _BaseSeq: + + def __init__(self, iterable): + self._list = list(iterable) + + def __repr__(self): + return repr(self._list) + + def __eq__(self, other): + return self._list == other + + def __len__(self): + return len(self._list) + + def __mul__(self, n): + return self.__class__(self._list*n) + __rmul__ = __mul__ + + def __getitem__(self, index): + return self._list[index] + + +class _GetSliceMixin: + + def __getslice__(self, i, j): + return self._list.__getslice__(i, j) + + +class ClassicSeq(_BaseSeq): pass +class NewSeq(_BaseSeq, object): pass +class ClassicSeqDeprecated(_GetSliceMixin, ClassicSeq): pass +class NewSeqDeprecated(_GetSliceMixin, NewSeq): pass + + class TupleTestCase(SeqTestCase): seq = (0,10,20,30,40,50) @@ -165,6 +217,18 @@ class UnicodeTestCase(SeqTestCase): seq = u"this is a test" +class ClassicSeqTestCase(SeqTestCase): + seq = ClassicSeq((0,10,20,30,40,50)) + +class NewSeqTestCase(SeqTestCase): + seq = NewSeq((0,10,20,30,40,50)) + +class ClassicSeqDeprecatedTestCase(SeqTestCase): + seq = ClassicSeqDeprecated((0,10,20,30,40,50)) + +class NewSeqDeprecatedTestCase(SeqTestCase): + seq = NewSeqDeprecated((0,10,20,30,40,50)) + class XRangeTestCase(unittest.TestCase): @@ -187,6 +251,20 @@ def _getitem_helper(self, base): class GetItem(base): def __len__(self): + return maxint # cannot return long here + def __getitem__(self, key): + return key + x = GetItem() + self.assertEqual(x[self.pos], self.pos) + self.assertEqual(x[self.neg], self.neg) + self.assertEqual(x[self.neg:self.pos].indices(maxsize), + (0, maxsize, 1)) + self.assertEqual(x[self.neg:self.pos:1].indices(maxsize), + (0, maxsize, 1)) + + def _getslice_helper_deprecated(self, base): + class GetItem(base): + def __len__(self): return maxint #cannot return long here def __getitem__(self, key): return key @@ -196,14 +274,22 @@ self.assertEqual(x[self.pos], self.pos) self.assertEqual(x[self.neg], self.neg) self.assertEqual(x[self.neg:self.pos], (maxint+minsize, maxsize)) - self.assertEqual(x[self.neg:self.pos:1].indices(maxsize), (0, maxsize, 1)) + self.assertEqual(x[self.neg:self.pos:1].indices(maxsize), + (0, maxsize, 1)) def test_getitem(self): self._getitem_helper(object) + # Silence Py3k warning + with test_support.check_warnings(): + self._getslice_helper_deprecated(object) def test_getitem_classic(self): class Empty: pass - self._getitem_helper(Empty) + # XXX This test fails (see bug #7532) + #self._getitem_helper(Empty) + # Silence Py3k warning + with test_support.check_warnings(): + self._getslice_helper_deprecated(Empty) def test_sequence_repeat(self): self.assertRaises(OverflowError, lambda: "a" * self.pos) @@ -217,9 +303,18 @@ TupleTestCase, StringTestCase, UnicodeTestCase, + ClassicSeqTestCase, + NewSeqTestCase, XRangeTestCase, OverflowTestCase, ) + # Silence Py3k warning + with test_support.check_warnings(): + test_support.run_unittest( + ClassicSeqDeprecatedTestCase, + NewSeqDeprecatedTestCase, + ) + if __name__ == "__main__": test_main() From python-checkins at python.org Sat Jan 9 19:51:25 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 09 Jan 2010 18:51:25 -0000 Subject: [Python-checkins] r77392 - python/branches/release26-maint Message-ID: Author: mark.dickinson Date: Sat Jan 9 19:51:24 2010 New Revision: 77392 Log: Blocked revisions 77391 via svnmerge ........ r77391 | mark.dickinson | 2010-01-09 18:50:50 +0000 (Sat, 09 Jan 2010) | 3 lines Issue #7532: Add additional slicing test cases for new- and old-style classes. Patch by Florent Xicluna. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Sat Jan 9 19:53:07 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 09 Jan 2010 18:53:07 -0000 Subject: [Python-checkins] r77393 - in python/branches/py3k: Doc/library/zipimport.rst Doc/whatsnew/2.7.rst Lib/cmd.py Lib/test/test_cmd.py Lib/test/test_hashlib.py Misc/build.sh Misc/developers.txt setup.py Message-ID: Author: benjamin.peterson Date: Sat Jan 9 19:53:06 2010 New Revision: 77393 Log: Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77185 | andrew.kuchling | 2009-12-31 10:17:05 -0600 (Thu, 31 Dec 2009) | 1 line Add some items ........ r77186 | benjamin.peterson | 2009-12-31 10:28:24 -0600 (Thu, 31 Dec 2009) | 1 line update expat comment ........ r77187 | andrew.kuchling | 2009-12-31 10:38:53 -0600 (Thu, 31 Dec 2009) | 1 line Add various items ........ r77188 | benjamin.peterson | 2009-12-31 10:49:37 -0600 (Thu, 31 Dec 2009) | 1 line add another advancement ........ r77262 | andrew.kuchling | 2010-01-02 19:15:21 -0600 (Sat, 02 Jan 2010) | 1 line Add a few items ........ r77313 | benjamin.peterson | 2010-01-04 18:04:19 -0600 (Mon, 04 Jan 2010) | 1 line add a test about hashing array.array ........ r77317 | georg.brandl | 2010-01-05 12:14:52 -0600 (Tue, 05 Jan 2010) | 1 line Add Stefan. ........ r77331 | georg.brandl | 2010-01-06 11:43:06 -0600 (Wed, 06 Jan 2010) | 1 line Small fixes to test_cmd: fix signature of do_shell, remove duplicate import, add option to run the custom Cmd class. ........ r77332 | georg.brandl | 2010-01-06 12:02:16 -0600 (Wed, 06 Jan 2010) | 7 lines #5991: let completion for the "help" command include help topics. This also simplifies the Cmd.get_names() method implementation; it was written at a time where dir() didn't consider base class attributes. ........ r77333 | georg.brandl | 2010-01-06 12:26:08 -0600 (Wed, 06 Jan 2010) | 1 line #5950: document that zip files with comments are unsupported in zipimport. ........ r77337 | r.david.murray | 2010-01-06 21:09:08 -0600 (Wed, 06 Jan 2010) | 3 lines Add -W to the 'basics', 'opt', and 'all' test runs so that we get verbose information if a failure happens. ........ r77338 | r.david.murray | 2010-01-06 22:04:28 -0600 (Wed, 06 Jan 2010) | 2 lines Fix inadvertent checkin of debug line. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/library/zipimport.rst python/branches/py3k/Doc/whatsnew/2.7.rst python/branches/py3k/Lib/cmd.py python/branches/py3k/Lib/test/test_cmd.py python/branches/py3k/Lib/test/test_hashlib.py python/branches/py3k/Misc/build.sh python/branches/py3k/Misc/developers.txt python/branches/py3k/setup.py Modified: python/branches/py3k/Doc/library/zipimport.rst ============================================================================== --- python/branches/py3k/Doc/library/zipimport.rst (original) +++ python/branches/py3k/Doc/library/zipimport.rst Sat Jan 9 19:53:06 2010 @@ -26,6 +26,8 @@ corresponding :file:`.pyc` or :file:`.pyo` file, meaning that if a ZIP archive doesn't contain :file:`.pyc` files, importing may be rather slow. +ZIP archives with an archive comment are currently not supported. + .. seealso:: `PKZIP Application Note `_ Modified: python/branches/py3k/Doc/whatsnew/2.7.rst ============================================================================== --- python/branches/py3k/Doc/whatsnew/2.7.rst (original) +++ python/branches/py3k/Doc/whatsnew/2.7.rst Sat Jan 9 19:53:06 2010 @@ -264,7 +264,9 @@ Windows, and on Unix platforms using the gcc, icc, or suncc compilers. There may be a small number of platforms where correct operation of this code cannot be guaranteed, so the code is not - used on such systems. + used on such systems. You can find out which code is being used + by checking :data:`sys.float_repr_style`, which will be ``short`` + if the new code is in use and ``legacy`` if it isn't. Implemented by Eric Smith and Mark Dickinson, using David Gay's :file:`dtoa.c` library; :issue:`7117`. @@ -358,6 +360,11 @@ on the :exc:`IOError` exception when trying to open a directory on POSIX platforms. (Noted by Jan Kaliszewski; :issue:`4764`.) +* The Python tokenizer now translates line endings itself, so the + :func:`compile` built-in function can now accept code using any + line-ending convention. Additionally, it no longer requires that the + code end in a newline. + * Extra parentheses in function definitions are illegal in Python 3.x, meaning that you get a syntax error from ``def f((x)): pass``. In Python3-warning mode, Python 2.7 will now warn about this odd usage. @@ -433,6 +440,8 @@ Various benchmarks show speedups of between 50% and 150% for long integer divisions and modulo operations. (Contributed by Mark Dickinson; :issue:`5512`.) + Bitwise operations are also significantly faster (initial patch by + Gregory Smith; :issue:`1087418`). * The implementation of ``%`` checks for the left-side operand being a Python string and special-cases it; this results in a 1-3% @@ -444,6 +453,16 @@ faster bytecode. (Patch by Antoine Pitrou, back-ported to 2.7 by Jeffrey Yasskin; :issue:`4715`.) +* Converting an integer or long integer to a decimal string was made + faster by special-casing base 10 instead of using a generalized + conversion function that supports arbitrary bases. + (Patch by Gawain Bolton; :issue:`6713`.) + +* The :meth:`rindex`, :meth:`rpartition`, and :meth:`rsplit` methods + of string objects now uses a fast reverse-search algorithm instead of + a character-by-character scan. This is often faster by a factor of 10. + (Added by Florent Xicluna; :issue:`7462`.) + * The :mod:`pickle` and :mod:`cPickle` modules now automatically intern the strings used for attribute names, reducing memory usage of the objects resulting from unpickling. (Contributed by Jake @@ -453,11 +472,6 @@ nearly halving the time required to pickle them. (Contributed by Collin Winter; :issue:`5670`.) -* Converting an integer or long integer to a decimal string was made - faster by special-casing base 10 instead of using a generalized - conversion function that supports arbitrary bases. - (Patch by Gawain Bolton; :issue:`6713`.) - .. ====================================================================== New and Improved Modules @@ -602,6 +616,10 @@ XXX link to file:///MacDev/svn.python.org/python-trunk/Doc/build/html/distutils/examples.html#reading-the-metadata (Contributed by Tarek Ziade; :issue:`7457`.) + :file:`setup.py` files will now accept a :option:`--no-user-cfg` switch + to skip reading the :file:`~/.pydistutils.cfg` file. (Suggested by + by Michael Hoffman, and implemented by Paul Winkler; :issue:`1180`.) + * The :class:`Fraction` class now accepts two rational numbers as arguments to its constructor. (Implemented by Mark Dickinson; :issue:`5812`.) @@ -625,14 +643,6 @@ recorded in a gzipped file by providing an optional timestamp to the constructor. (Contributed by Jacques Frechet; :issue:`4272`.) -* The :mod:`hashlib` module was inconsistent about accepting - input as a Unicode object or an object that doesn't support - the buffer protocol. The behavior was different depending on - whether :mod:`hashlib` was using an external OpenSSL library - or its built-in implementations. Python 2.7 makes the - behavior consistent, always rejecting such objects by raising a - :exc:`TypeError`. (Fixed by Gregory P. Smith; :issue:`3745`.) - * The default :class:`HTTPResponse` class used by the :mod:`httplib` module now supports buffering, resulting in much faster reading of HTTP responses. (Contributed by Kristjan Valur Jonsson; :issue:`4879`.) @@ -745,6 +755,10 @@ to store data. (Contributed by Tarek Ziade; :issue:`6693`.) +* The :mod:`socket` module's :class:`SSL` objects now support the + buffer API, which fixed a test suite failure. (Fixed by Antoine Pitrou; + :issue:`7133`.) + * The :mod:`SocketServer` module's :class:`TCPServer` class now has a :attr:`disable_nagle_algorithm` class attribute. The default value is False; if overridden to be True, @@ -858,6 +872,10 @@ whether the two values evaluate to the same object or not. (Added by Michael Foord; :issue:`2578`.) +* :meth:`assertIsInstance` and :meth:`assertNotIsInstance` check whether + the resulting object is an instance of a particular class, or of + one of a tuple of classes. (Added by Georg Brandl; :issue:`7031`.) + * :meth:`assertGreater`, :meth:`assertGreaterEqual`, :meth:`assertLess`, and :meth:`assertLessEqual` compare two quantities. @@ -1025,6 +1043,11 @@ a :ctype:`long`, an *overflow* flag is set and returned to the caller. (Contributed by Case Van Horsen; :issue:`7528`.) +* New function: stemming from the rewrite of string-to-float conversion, + a new :cfunc:`PyOS_string_to_double` function was added. The old + :cfunc:`PyOS_ascii_strtod` and :cfunc:`PyOS_ascii_atof` functions + are now deprecated. + * New macros: the Python header files now define the following macros: :cmacro:`Py_ISALNUM`, :cmacro:`Py_ISALPHA`, @@ -1067,10 +1090,30 @@ (Fixed by Thomas Wouters; :issue:`1590864`.) +* The :cfunc:`Py_Finalize` function now calls the internal + :func:`threading._shutdown` function; this prevents some exceptions from + being raised when an interpreter shuts down. + (Patch by Adam Olsen; :issue:`1722344`.) + * Global symbols defined by the :mod:`ctypes` module are now prefixed with ``Py``, or with ``_ctypes``. (Implemented by Thomas Heller; :issue:`3102`.) +* New configure option: the :option:`--with-system-expat` switch allows + building the :mod:`pyexpat` module to use the system Expat library. + (Contributed by Arfrever Frehtes Taifersar Arahesis; :issue:`7609`.) + +* New configure option: Compiling Python with the + :option:`--with-valgrind` option will now disable the pymalloc + allocator, which is difficult for the Valgrind to analyze correctly. + Valgrind will therefore be better at detecting memory leaks and + overruns. (Contributed by James Henstridge; :issue:`2422`.) + +* New configure option: you can now supply no arguments to + :option:`--with-dbmliborder=` in order to build none of the various + DBM modules. (Added by Arfrever Frehtes Taifersar Arahesis; + :issue:`6491`.) + * The :program:`configure` script now checks for floating-point rounding bugs on certain 32-bit Intel chips and defines a :cmacro:`X87_DOUBLE_ROUNDING` preprocessor definition. No code currently uses this definition, @@ -1083,11 +1126,6 @@ * The build process now supports Subversion 1.7. (Contributed by Arfrever Frehtes Taifersar Arahesis; :issue:`6094`.) -* Compiling Python with the :option:`--with-valgrind` option will now - disable the pymalloc allocator, which is difficult for the Valgrind to - analyze correctly. Valgrind will therefore be better at detecting - memory leaks and overruns. (Contributed by James Henstridge; :issue:`2422`.) - .. ====================================================================== @@ -1139,12 +1177,14 @@ The :option:`-r` option also reports the seed that was used (Added by Collin Winter.) -* The :file:`regrtest.py` script now takes a :option:`-j` switch - that takes an integer specifying how many tests run in parallel. This +* Another :file:`regrtest.py` switch is :option:`-j`, which + takes an integer specifying how many tests run in parallel. This allows reducing the total runtime on multi-core machines. This option is compatible with several other options, including the :option:`-R` switch which is known to produce long runtimes. - (Added by Antoine Pitrou, :issue:`6152`.) + (Added by Antoine Pitrou, :issue:`6152`.) This can also be used + with a new :option:`-F` switch that runs selected tests in a loop + until they fail. (Added by Antoine Pitrou; :issue:`7312`.) .. ====================================================================== @@ -1175,6 +1215,17 @@ nothing when a negative length is requested, as other file-like objects do. (:issue:`7348`). +For C extensions: + +* C extensions that use integer format codes with the ``PyArg_Parse*`` + family of functions will now raise a :exc:`TypeError` exception + instead of triggering a :exc:`DeprecationWarning` (:issue:`5080`). + +* Use the new :cfunc:`PyOS_string_to_double` function instead of the old + :cfunc:`PyOS_ascii_strtod` and :cfunc:`PyOS_ascii_atof` functions, + which are now deprecated. + + .. ====================================================================== Modified: python/branches/py3k/Lib/cmd.py ============================================================================== --- python/branches/py3k/Lib/cmd.py (original) +++ python/branches/py3k/Lib/cmd.py Sat Jan 9 19:53:06 2010 @@ -278,19 +278,15 @@ return None def get_names(self): - # Inheritance says we have to look in class and - # base classes; order is not important. - names = [] - classes = [self.__class__] - while classes: - aclass = classes.pop(0) - if aclass.__bases__: - classes = classes + list(aclass.__bases__) - names = names + dir(aclass) - return names + # This method used to pull in base class attributes + # at a time dir() didn't do it yet. + return dir(self.__class__) def complete_help(self, *args): - return self.completenames(*args) + commands = set(self.completenames(*args)) + topics = set(a[5:] for a in self.get_names() + if a.startswith('help_' + args[0])) + return list(commands | topics) def do_help(self, arg): if arg: Modified: python/branches/py3k/Lib/test/test_cmd.py ============================================================================== --- python/branches/py3k/Lib/test/test_cmd.py (original) +++ python/branches/py3k/Lib/test/test_cmd.py Sat Jan 9 19:53:06 2010 @@ -60,15 +60,17 @@ >>> mycmd.completenames("12") [] >>> mycmd.completenames("help") - ['help', 'help'] + ['help'] Test for the function complete_help(): >>> mycmd.complete_help("a") ['add'] >>> mycmd.complete_help("he") - ['help', 'help'] + ['help'] >>> mycmd.complete_help("12") [] + >>> sorted(mycmd.complete_help("")) + ['add', 'exit', 'help', 'shell'] Test for the function do_help(): >>> mycmd.do_help("testet") @@ -144,7 +146,7 @@ def complete_command(self): print("complete command") - def do_shell(self): + def do_shell(self, s): pass def do_add(self, s): @@ -171,6 +173,7 @@ support.run_doctest(test_cmd, verbose) def test_coverage(coverdir): + import trace tracer=trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix,], trace=0, count=1) tracer.run('reload(cmd);test_main()') @@ -181,5 +184,7 @@ if __name__ == "__main__": if "-c" in sys.argv: test_coverage('/tmp/cmd.cover') + elif "-i" in sys.argv: + samplecmdclass().cmdloop() else: test_main() Modified: python/branches/py3k/Lib/test/test_hashlib.py ============================================================================== --- python/branches/py3k/Lib/test/test_hashlib.py (original) +++ python/branches/py3k/Lib/test/test_hashlib.py Sat Jan 9 19:53:06 2010 @@ -6,8 +6,10 @@ # Licensed to PSF under a Contributor Agreement. # +import array import hashlib from io import StringIO +import itertools import sys try: import threading @@ -93,6 +95,13 @@ super(HashLibTestCase, self).__init__(*args, **kwargs) + def test_hash_array(self): + a = array.array("b", range(10)) + constructors = self.constructors_to_test.values() + for cons in itertools.chain.from_iterable(constructors): + c = cons(a) + c.hexdigest() + def test_unknown_hash(self): try: hashlib.new('spam spam spam spam spam') Modified: python/branches/py3k/Misc/build.sh ============================================================================== --- python/branches/py3k/Misc/build.sh (original) +++ python/branches/py3k/Misc/build.sh Sat Jan 9 19:53:06 2010 @@ -214,7 +214,7 @@ ## make and run basic tests F=make-test.out start=`current_time` - $PYTHON $REGRTEST_ARGS -u urlfetch >& build/$F + $PYTHON $REGRTEST_ARGS -W -u urlfetch >& build/$F NUM_FAILURES=`count_failures build/$F` place_summary_first build/$F update_status "Testing basics ($NUM_FAILURES failures)" "$F" $start @@ -222,7 +222,7 @@ F=make-test-opt.out start=`current_time` - $PYTHON -O $REGRTEST_ARGS -u urlfetch >& build/$F + $PYTHON -O $REGRTEST_ARGS -W -u urlfetch >& build/$F NUM_FAILURES=`count_failures build/$F` place_summary_first build/$F update_status "Testing opt ($NUM_FAILURES failures)" "$F" $start @@ -245,7 +245,7 @@ start=`current_time` ## skip curses when running from cron since there's no terminal ## skip sound since it's not setup on the PSF box (/dev/dsp) - $PYTHON $REGRTEST_ARGS -uall -x test_curses test_linuxaudiodev test_ossaudiodev $_ALWAYS_SKIP >& build/$F + $PYTHON $REGRTEST_ARGS -W -uall -x test_curses test_linuxaudiodev test_ossaudiodev &_ALWAYS_SKIP >& build/$F NUM_FAILURES=`count_failures build/$F` place_summary_first build/$F update_status "Testing all except curses and sound ($NUM_FAILURES failures)" "$F" $start Modified: python/branches/py3k/Misc/developers.txt ============================================================================== --- python/branches/py3k/Misc/developers.txt (original) +++ python/branches/py3k/Misc/developers.txt Sat Jan 9 19:53:06 2010 @@ -20,6 +20,9 @@ Permissions History ------------------- +- Stefan Krah was given SVN access on January 5 2010 by GFB, at + suggestion of Mark Dickinson, for work on the decimal module. + - Doug Hellmann was given SVN access on September 19 2009 by GFB, at suggestion of Jesse Noller, for documentation work. Modified: python/branches/py3k/setup.py ============================================================================== --- python/branches/py3k/setup.py (original) +++ python/branches/py3k/setup.py Sat Jan 9 19:53:06 2010 @@ -1108,12 +1108,12 @@ # Interface to the Expat XML parser # - # Expat was written by James Clark and is now maintained by a - # group of developers on SourceForge; see www.libexpat.org for - # more information. The pyexpat module was written by Paul - # Prescod after a prototype by Jack Jansen. The Expat source - # is included in Modules/expat/. Usage of a system - # shared libexpat.so/expat.dll is not advised. + # Expat was written by James Clark and is now maintained by a group of + # developers on SourceForge; see www.libexpat.org for more information. + # The pyexpat module was written by Paul Prescod after a prototype by + # Jack Jansen. The Expat source is included in Modules/expat/. Usage + # of a system shared libexpat.so is possible with --with-system-expat + # cofigure option. # # More information on Expat can be found at www.libexpat.org. # From python-checkins at python.org Sat Jan 9 21:35:09 2010 From: python-checkins at python.org (alexandre.vassalotti) Date: Sat, 09 Jan 2010 20:35:09 -0000 Subject: [Python-checkins] r77394 - in python/branches/py3k: Doc/library/stdtypes.rst Lib/test/test_long.py Misc/NEWS Objects/longobject.c Message-ID: Author: alexandre.vassalotti Date: Sat Jan 9 21:35:09 2010 New Revision: 77394 Log: Issue #1023290: Added API for the conversion of longs to bytes and vice-versa. Modified: python/branches/py3k/Doc/library/stdtypes.rst python/branches/py3k/Lib/test/test_long.py python/branches/py3k/Misc/NEWS python/branches/py3k/Objects/longobject.c Modified: python/branches/py3k/Doc/library/stdtypes.rst ============================================================================== --- python/branches/py3k/Doc/library/stdtypes.rst (original) +++ python/branches/py3k/Doc/library/stdtypes.rst Sat Jan 9 21:35:09 2010 @@ -457,6 +457,69 @@ .. versionadded:: 3.1 + .. method:: int.to_bytes(length, byteorder, [\*, signed=False]) + + Return an array of bytes representing an integer. + + >>> (1024).to_bytes(2, byteorder='big') + b'\x04\x00' + >>> (1024).to_bytes(10, byteorder='big') + b'\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00' + >>> (-1024).to_bytes(10, byteorder='big', signed=True) + b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00' + >>> x = 1000 + >>> x.to_bytes((x.bit_length() // 8) + 1, byteorder='little') + b'\xe8\x03' + + The integer is represented using *length* bytes. An :exc:`OverflowError` + is raised if the integer is not representable with the given number of + bytes. + + The *byteorder* argument determines the byte order used to represent the + integer. If *byteorder* is ``"big"``, the most significant byte is at the + beginning of the byte array. If *byteorder* is ``"little"``, the most + significant byte is at the end of the byte array. To request the native + byte order of the host system, use :data:`sys.byteorder` as the byte order + value. + + The *signed* argument determines whether two's complement is used to + represent the integer. If *signed* is ``False`` and a negative integer is + given, an :exc:`OverflowError` is raised. The default value for *signed* + is ``False``. + + .. versionadded:: 3.2 + + .. classmethod:: int.from_bytes(bytes, byteorder, [\*, signed=False]]) + + Return the integer represented by the given array of bytes. + + >>> int.from_bytes(b'\x00\x10', byteorder='big') + 16 + >>> int.from_bytes(b'\x00\x10', byteorder='little') + 4096 + >>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=True) + -1024 + >>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=False) + 64512 + >>> int.from_bytes([255, 0, 0], byteorder='big') + 16711680 + + The argument *bytes* must either support the buffer protocol or be an + iterable producing bytes. :class:`bytes` and :class:`bytearray` are + examples of built-in objects that support the buffer protocol. + + The *byteorder* argument determines the byte order used to represent the + integer. If *byteorder* is ``"big"``, the most significant byte is at the + beginning of the byte array. If *byteorder* is ``"little"``, the most + significant byte is at the end of the byte array. To request the native + byte order of the host system, use :data:`sys.byteorder` as the byte order + value. + + The *signed* argument indicates whether two's complement is used to + represent the integer. + + .. versionadded:: 3.2 + Additional Methods on Float --------------------------- Modified: python/branches/py3k/Lib/test/test_long.py ============================================================================== --- python/branches/py3k/Lib/test/test_long.py (original) +++ python/branches/py3k/Lib/test/test_long.py Sat Jan 9 21:35:09 2010 @@ -4,6 +4,7 @@ import random import math +import array # Used for lazy formatting of failure messages class Frm(object): @@ -900,6 +901,237 @@ for e in bad_exponents: self.assertRaises(TypeError, round, 3, e) + def test_to_bytes(self): + def check(tests, byteorder, signed=False): + for test, expected in tests.items(): + try: + self.assertEqual( + test.to_bytes(len(expected), byteorder, signed=signed), + expected) + except Exception as err: + raise AssertionError( + "failed to convert {0} with byteorder={1} and signed={2}" + .format(test, byteorder, signed)) from err + + # Convert integers to signed big-endian byte arrays. + tests1 = { + 0: b'\x00', + 1: b'\x01', + -1: b'\xff', + -127: b'\x81', + -128: b'\x80', + -129: b'\xff\x7f', + 127: b'\x7f', + 129: b'\x00\x81', + -255: b'\xff\x01', + -256: b'\xff\x00', + 255: b'\x00\xff', + 256: b'\x01\x00', + 32767: b'\x7f\xff', + -32768: b'\xff\x80\x00', + 65535: b'\x00\xff\xff', + -65536: b'\xff\x00\x00', + -8388608: b'\x80\x00\x00' + } + check(tests1, 'big', signed=True) + + # Convert integers to signed little-endian byte arrays. + tests2 = { + 0: b'\x00', + 1: b'\x01', + -1: b'\xff', + -127: b'\x81', + -128: b'\x80', + -129: b'\x7f\xff', + 127: b'\x7f', + 129: b'\x81\x00', + -255: b'\x01\xff', + -256: b'\x00\xff', + 255: b'\xff\x00', + 256: b'\x00\x01', + 32767: b'\xff\x7f', + -32768: b'\x00\x80', + 65535: b'\xff\xff\x00', + -65536: b'\x00\x00\xff', + -8388608: b'\x00\x00\x80' + } + check(tests2, 'little', signed=True) + + # Convert integers to unsigned big-endian byte arrays. + tests3 = { + 0: b'\x00', + 1: b'\x01', + 127: b'\x7f', + 128: b'\x80', + 255: b'\xff', + 256: b'\x01\x00', + 32767: b'\x7f\xff', + 32768: b'\x80\x00', + 65535: b'\xff\xff', + 65536: b'\x01\x00\x00' + } + check(tests3, 'big', signed=False) + + # Convert integers to unsigned little-endian byte arrays. + tests4 = { + 0: b'\x00', + 1: b'\x01', + 127: b'\x7f', + 128: b'\x80', + 255: b'\xff', + 256: b'\x00\x01', + 32767: b'\xff\x7f', + 32768: b'\x00\x80', + 65535: b'\xff\xff', + 65536: b'\x00\x00\x01' + } + check(tests4, 'little', signed=False) + + self.assertRaises(OverflowError, (256).to_bytes, 1, 'big', signed=False) + self.assertRaises(OverflowError, (256).to_bytes, 1, 'big', signed=True) + self.assertRaises(OverflowError, (256).to_bytes, 1, 'little', signed=False) + self.assertRaises(OverflowError, (256).to_bytes, 1, 'little', signed=True) + self.assertRaises(OverflowError, (-1).to_bytes, 2, 'big', signed=False), + self.assertRaises(OverflowError, (-1).to_bytes, 2, 'little', signed=False) + self.assertEqual((0).to_bytes(0, 'big'), b'') + self.assertEqual((1).to_bytes(5, 'big'), b'\x00\x00\x00\x00\x01') + self.assertEqual((0).to_bytes(5, 'big'), b'\x00\x00\x00\x00\x00') + self.assertEqual((-1).to_bytes(5, 'big', signed=True), + b'\xff\xff\xff\xff\xff') + self.assertRaises(OverflowError, (1).to_bytes, 0, 'big') + + def test_from_bytes(self): + def check(tests, byteorder, signed=False): + for test, expected in tests.items(): + try: + self.assertEqual( + int.from_bytes(test, byteorder, signed=signed), + expected) + except Exception as err: + raise AssertionError( + "failed to convert {0} with byteorder={1!r} and signed={2}" + .format(test, byteorder, signed)) from err + + # Convert signed big-endian byte arrays to integers. + tests1 = { + b'': 0, + b'\x00': 0, + b'\x00\x00': 0, + b'\x01': 1, + b'\x00\x01': 1, + b'\xff': -1, + b'\xff\xff': -1, + b'\x81': -127, + b'\x80': -128, + b'\xff\x7f': -129, + b'\x7f': 127, + b'\x00\x81': 129, + b'\xff\x01': -255, + b'\xff\x00': -256, + b'\x00\xff': 255, + b'\x01\x00': 256, + b'\x7f\xff': 32767, + b'\x80\x00': -32768, + b'\x00\xff\xff': 65535, + b'\xff\x00\x00': -65536, + b'\x80\x00\x00': -8388608 + } + check(tests1, 'big', signed=True) + + # Convert signed little-endian byte arrays to integers. + tests2 = { + b'': 0, + b'\x00': 0, + b'\x00\x00': 0, + b'\x01': 1, + b'\x00\x01': 256, + b'\xff': -1, + b'\xff\xff': -1, + b'\x81': -127, + b'\x80': -128, + b'\x7f\xff': -129, + b'\x7f': 127, + b'\x81\x00': 129, + b'\x01\xff': -255, + b'\x00\xff': -256, + b'\xff\x00': 255, + b'\x00\x01': 256, + b'\xff\x7f': 32767, + b'\x00\x80': -32768, + b'\xff\xff\x00': 65535, + b'\x00\x00\xff': -65536, + b'\x00\x00\x80': -8388608 + } + check(tests2, 'little', signed=True) + + # Convert unsigned big-endian byte arrays to integers. + tests3 = { + b'': 0, + b'\x00': 0, + b'\x01': 1, + b'\x7f': 127, + b'\x80': 128, + b'\xff': 255, + b'\x01\x00': 256, + b'\x7f\xff': 32767, + b'\x80\x00': 32768, + b'\xff\xff': 65535, + b'\x01\x00\x00': 65536, + } + check(tests3, 'big', signed=False) + + # Convert integers to unsigned little-endian byte arrays. + tests4 = { + b'': 0, + b'\x00': 0, + b'\x01': 1, + b'\x7f': 127, + b'\x80': 128, + b'\xff': 255, + b'\x00\x01': 256, + b'\xff\x7f': 32767, + b'\x00\x80': 32768, + b'\xff\xff': 65535, + b'\x00\x00\x01': 65536, + } + check(tests4, 'little', signed=False) + + class myint(int): + pass + + self.assertTrue(type(myint.from_bytes(b'\x00', 'big')) is myint) + self.assertEqual(myint.from_bytes(b'\x01', 'big'), 1) + self.assertTrue( + type(myint.from_bytes(b'\x00', 'big', signed=False)) is myint) + self.assertEqual(myint.from_bytes(b'\x01', 'big', signed=False), 1) + self.assertTrue(type(myint.from_bytes(b'\x00', 'little')) is myint) + self.assertEqual(myint.from_bytes(b'\x01', 'little'), 1) + self.assertTrue(type(myint.from_bytes( + b'\x00', 'little', signed=False)) is myint) + self.assertEqual(myint.from_bytes(b'\x01', 'little', signed=False), 1) + self.assertEqual( + int.from_bytes([255, 0, 0], 'big', signed=True), -65536) + self.assertEqual( + int.from_bytes((255, 0, 0), 'big', signed=True), -65536) + self.assertEqual(int.from_bytes( + bytearray(b'\xff\x00\x00'), 'big', signed=True), -65536) + self.assertEqual(int.from_bytes( + bytearray(b'\xff\x00\x00'), 'big', signed=True), -65536) + self.assertEqual(int.from_bytes( + array.array('B', b'\xff\x00\x00'), 'big', signed=True), -65536) + self.assertEqual(int.from_bytes( + memoryview(b'\xff\x00\x00'), 'big', signed=True), -65536) + self.assertRaises(ValueError, int.from_bytes, [256], 'big') + self.assertRaises(ValueError, int.from_bytes, [0], 'big\x00') + self.assertRaises(ValueError, int.from_bytes, [0], 'little\x00') + self.assertRaises(TypeError, int.from_bytes, "", 'big') + self.assertRaises(TypeError, int.from_bytes, "\x00", 'big') + self.assertRaises(TypeError, int.from_bytes, 0, 'big') + self.assertRaises(TypeError, int.from_bytes, 0, 'big', True) + self.assertRaises(TypeError, myint.from_bytes, "", 'big') + self.assertRaises(TypeError, myint.from_bytes, "\x00", 'big') + self.assertRaises(TypeError, myint.from_bytes, 0, 'big') + self.assertRaises(TypeError, int.from_bytes, 0, 'big', True) def test_main(): Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Sat Jan 9 21:35:09 2010 @@ -149,6 +149,9 @@ - Issue #6687: PyBytes_FromObject() no longer accepts an integer as its argument to construct a null-initialized bytes object. +- Issue #1023290: Add from_bytes() and to_bytes() methods to integers. + These methods allow the conversion of integers to bytes, and vice-versa. + C-API ----- Modified: python/branches/py3k/Objects/longobject.c ============================================================================== --- python/branches/py3k/Objects/longobject.c (original) +++ python/branches/py3k/Objects/longobject.c Sat Jan 9 21:35:09 2010 @@ -4296,6 +4296,201 @@ } #endif + +PyDoc_STRVAR(long_to_bytes_doc, +"int.to_bytes(length, byteorder, *, signed=False) -> bytes\n\ +\n\ +Return an array of bytes representing an integer.\n\ +\n\ +The integer is represented using length bytes. An OverflowError is\n\ +raised if the integer is not representable with the given number of\n\ +bytes.\n\ +\n\ +The byteorder argument determines the byte order used to represent the\n\ +integer. If byteorder is 'big', the most significant byte is at the\n\ +beginning of the byte array. If byteorder is 'little', the most\n\ +significant byte is at the end of the byte array. To request the native\n\ +byte order of the host system, use `sys.byteorder' as the byte order value.\n\ +\n\ +The signed keyword-only argument determines whether two's complement is\n\ +used to represent the integer. If signed is False and a negative integer\n\ +is given, an OverflowError is raised."); + +static PyObject * +long_to_bytes(PyLongObject *v, PyObject *args, PyObject *kwds) +{ + PyObject *byteorder_str; + PyObject *is_signed_obj = NULL; + Py_ssize_t length; + int little_endian; + int is_signed; + PyObject *bytes; + static PyObject *little_str = NULL, *big_str = NULL; + static char *kwlist[] = {"length", "byteorder", "signed", NULL}; + + if (!PyArg_ParseTupleAndKeywords(args, kwds, "nO|O:to_bytes", kwlist, + &length, &byteorder_str, + &is_signed_obj)) + return NULL; + + if (args != NULL && Py_SIZE(args) > 2) { + PyErr_SetString(PyExc_TypeError, + "'signed' is a keyword-only argument"); + return NULL; + } + if (little_str == NULL) { + little_str = PyUnicode_InternFromString("little"); + big_str = PyUnicode_InternFromString("big"); + if (little_str == NULL || big_str == NULL) + return NULL; + } + + if (PyObject_RichCompareBool(byteorder_str, little_str, Py_EQ)) + little_endian = 1; + else if (PyObject_RichCompareBool(byteorder_str, big_str, Py_EQ)) + little_endian = 0; + else { + PyErr_SetString(PyExc_ValueError, + "byteorder must be either 'little' or 'big'"); + return NULL; + } + + if (is_signed_obj != NULL) { + int cmp = PyObject_IsTrue(is_signed_obj); + if (cmp < 0) + return NULL; + is_signed = cmp ? 1 : 0; + } + else { + /* If the signed argument was omitted, use False as the + default. */ + is_signed = 0; + } + + if (length < 0) { + PyErr_SetString(PyExc_ValueError, + "length argument must be non-negative"); + return NULL; + } + + bytes = PyBytes_FromStringAndSize(NULL, length); + if (bytes == NULL) + return NULL; + + if (_PyLong_AsByteArray(v, (unsigned char *)PyBytes_AS_STRING(bytes), + length, little_endian, is_signed) < 0) { + Py_DECREF(bytes); + return NULL; + } + + return bytes; +} + +PyDoc_STRVAR(long_from_bytes_doc, +"int.from_bytes(bytes, byteorder, *, signed=False) -> int\n\ +\n\ +Return the integer represented by the given array of bytes.\n\ +\n\ +The bytes argument must either support the buffer protocol or be an\n\ +iterable object producing bytes. Bytes and bytearray are examples of\n\ +built-in objects that support the buffer protocol.\n\ +\n\ +The byteorder argument determines the byte order used to represent the\n\ +integer. If byteorder is 'big', the most significant byte is at the\n\ +beginning of the byte array. If byteorder is 'little', the most\n\ +significant byte is at the end of the byte array. To request the native\n\ +byte order of the host system, use `sys.byteorder' as the byte order value.\n\ +\n\ +The signed keyword-only argument indicates whether two's complement is\n\ +used to represent the integer."); + +static PyObject * +long_from_bytes(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + PyObject *byteorder_str; + PyObject *is_signed_obj = NULL; + int little_endian; + int is_signed; + PyObject *obj; + PyObject *bytes; + PyObject *long_obj; + static PyObject *little_str = NULL, *big_str = NULL; + static char *kwlist[] = {"bytes", "byteorder", "signed", NULL}; + + if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO|O:from_bytes", kwlist, + &obj, &byteorder_str, + &is_signed_obj)) + return NULL; + + if (args != NULL && Py_SIZE(args) > 2) { + PyErr_SetString(PyExc_TypeError, + "'signed' is a keyword-only argument"); + return NULL; + } + if (little_str == NULL) { + little_str = PyUnicode_InternFromString("little"); + big_str = PyUnicode_InternFromString("big"); + if (little_str == NULL || big_str == NULL) + return NULL; + } + + if (PyObject_RichCompareBool(byteorder_str, little_str, Py_EQ)) + little_endian = 1; + else if (PyObject_RichCompareBool(byteorder_str, big_str, Py_EQ)) + little_endian = 0; + else { + PyErr_SetString(PyExc_ValueError, + "byteorder must be either 'little' or 'big'"); + return NULL; + } + + if (is_signed_obj != NULL) { + int cmp = PyObject_IsTrue(is_signed_obj); + if (cmp < 0) + return NULL; + is_signed = cmp ? 1 : 0; + } + else { + /* If the signed argument was omitted, use False as the + default. */ + is_signed = 0; + } + + bytes = PyObject_Bytes(obj); + if (bytes == NULL) + return NULL; + + long_obj = _PyLong_FromByteArray( + (unsigned char *)PyBytes_AS_STRING(bytes), Py_SIZE(bytes), + little_endian, is_signed); + Py_DECREF(bytes); + + /* If from_bytes() was used on subclass, allocate new subclass + * instance, initialize it with decoded long value and return it. + */ + if (type != &PyLong_Type && PyType_IsSubtype(type, &PyLong_Type)) { + PyLongObject *newobj; + int i; + Py_ssize_t n = ABS(Py_SIZE(long_obj)); + + newobj = (PyLongObject *)type->tp_alloc(type, n); + if (newobj == NULL) { + Py_DECREF(long_obj); + return NULL; + } + assert(PyLong_Check(newobj)); + Py_SIZE(newobj) = Py_SIZE(long_obj); + for (i = 0; i < n; i++) { + newobj->ob_digit[i] = + ((PyLongObject *)long_obj)->ob_digit[i]; + } + Py_DECREF(long_obj); + return (PyObject *)newobj; + } + + return long_obj; +} + static PyMethodDef long_methods[] = { {"conjugate", (PyCFunction)long_long, METH_NOARGS, "Returns self, the complex conjugate of any int."}, @@ -4305,6 +4500,10 @@ {"is_finite", (PyCFunction)long_is_finite, METH_NOARGS, "Returns always True."}, #endif + {"to_bytes", (PyCFunction)long_to_bytes, + METH_VARARGS|METH_KEYWORDS, long_to_bytes_doc}, + {"from_bytes", (PyCFunction)long_from_bytes, + METH_VARARGS|METH_KEYWORDS|METH_CLASS, long_from_bytes_doc}, {"__trunc__", (PyCFunction)long_long, METH_NOARGS, "Truncating an Integral returns itself."}, {"__floor__", (PyCFunction)long_long, METH_NOARGS, From python-checkins at python.org Sat Jan 9 22:45:29 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 09 Jan 2010 21:45:29 -0000 Subject: [Python-checkins] r77395 - in python/branches/py3k: Misc/NEWS Modules/_testcapimodule.c Objects/unicodeobject.c Message-ID: Author: benjamin.peterson Date: Sat Jan 9 22:45:28 2010 New Revision: 77395 Log: Python strings ending with '\0' should not be equivalent to their C counterparts in PyUnicode_CompareWithASCIIString Modified: python/branches/py3k/Misc/NEWS python/branches/py3k/Modules/_testcapimodule.c python/branches/py3k/Objects/unicodeobject.c Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Sat Jan 9 22:45:28 2010 @@ -155,6 +155,9 @@ C-API ----- +- Make PyUnicode_CompareWithASCIIString return not equal if the Python string + has '\0' at the end. + - Issue #5080: The argument parsing functions PyArg_ParseTuple, PyArg_ParseTupleAndKeywords, PyArg_VaParse, PyArg_VaParseTupleAndKeywords and PyArg_Parse now raise a Modified: python/branches/py3k/Modules/_testcapimodule.c ============================================================================== --- python/branches/py3k/Modules/_testcapimodule.c (original) +++ python/branches/py3k/Modules/_testcapimodule.c Sat Jan 9 22:45:28 2010 @@ -1287,6 +1287,23 @@ #undef CHECK_1_FORMAT } + +static PyObject * +test_unicode_compare_with_ascii(PyObject *self) { + PyObject *py_s = PyUnicode_FromStringAndSize("str\0", 4); + int result; + if (py_s == NULL) + return NULL; + result = PyUnicode_CompareWithASCIIString(py_s, "str"); + Py_DECREF(py_s); + if (!result) { + PyErr_SetString(TestError, "Python string ending in NULL " + "should not compare equal to c string."); + return NULL; + } + Py_RETURN_NONE; +}; + /* This is here to provide a docstring for test_descr. */ static PyObject * test_with_docstring(PyObject *self) @@ -1756,6 +1773,7 @@ {"test_with_docstring", (PyCFunction)test_with_docstring, METH_NOARGS, PyDoc_STR("This is a pretty normal docstring.")}, {"test_string_to_double", (PyCFunction)test_string_to_double, METH_NOARGS}, + {"test_unicode_compare_with_ascii", (PyCFunction)test_unicode_compare_with_ascii, METH_NOARGS}, {"test_capsule", (PyCFunction)test_capsule, METH_NOARGS}, {"getargs_tuple", getargs_tuple, METH_VARARGS}, {"getargs_keywords", (PyCFunction)getargs_keywords, Modified: python/branches/py3k/Objects/unicodeobject.c ============================================================================== --- python/branches/py3k/Objects/unicodeobject.c (original) +++ python/branches/py3k/Objects/unicodeobject.c Sat Jan 9 22:45:28 2010 @@ -7001,6 +7001,11 @@ for (i = 0; id[i] && str[i]; i++) if (id[i] != str[i]) return ((int)id[i] < (int)str[i]) ? -1 : 1; + /* This check keeps Python strings that end in '\0' from comparing equal + to C strings identical up to that point. */ + if (PyUnicode_GET_SIZE(uni) != i) + /* We'll say the Python string is longer. */ + return 1; if (id[i]) return 1; /* uni is longer */ if (str[i]) From python-checkins at python.org Sat Jan 9 22:50:11 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 09 Jan 2010 21:50:11 -0000 Subject: [Python-checkins] r77396 - python/branches/py3k/Objects/longobject.c Message-ID: Author: benjamin.peterson Date: Sat Jan 9 22:50:11 2010 New Revision: 77396 Log: simplify string comparison of from_bytes/to_bytes Modified: python/branches/py3k/Objects/longobject.c Modified: python/branches/py3k/Objects/longobject.c ============================================================================== --- python/branches/py3k/Objects/longobject.c (original) +++ python/branches/py3k/Objects/longobject.c Sat Jan 9 22:50:11 2010 @@ -4325,10 +4325,9 @@ int little_endian; int is_signed; PyObject *bytes; - static PyObject *little_str = NULL, *big_str = NULL; static char *kwlist[] = {"length", "byteorder", "signed", NULL}; - if (!PyArg_ParseTupleAndKeywords(args, kwds, "nO|O:to_bytes", kwlist, + if (!PyArg_ParseTupleAndKeywords(args, kwds, "nU|O:to_bytes", kwlist, &length, &byteorder_str, &is_signed_obj)) return NULL; @@ -4338,16 +4337,10 @@ "'signed' is a keyword-only argument"); return NULL; } - if (little_str == NULL) { - little_str = PyUnicode_InternFromString("little"); - big_str = PyUnicode_InternFromString("big"); - if (little_str == NULL || big_str == NULL) - return NULL; - } - if (PyObject_RichCompareBool(byteorder_str, little_str, Py_EQ)) + if (!PyUnicode_CompareWithASCIIString(byteorder_str, "little")) little_endian = 1; - else if (PyObject_RichCompareBool(byteorder_str, big_str, Py_EQ)) + else if (!PyUnicode_CompareWithASCIIString(byteorder_str, "big")) little_endian = 0; else { PyErr_SetString(PyExc_ValueError, @@ -4414,10 +4407,9 @@ PyObject *obj; PyObject *bytes; PyObject *long_obj; - static PyObject *little_str = NULL, *big_str = NULL; static char *kwlist[] = {"bytes", "byteorder", "signed", NULL}; - if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO|O:from_bytes", kwlist, + if (!PyArg_ParseTupleAndKeywords(args, kwds, "OU|O:from_bytes", kwlist, &obj, &byteorder_str, &is_signed_obj)) return NULL; @@ -4427,16 +4419,10 @@ "'signed' is a keyword-only argument"); return NULL; } - if (little_str == NULL) { - little_str = PyUnicode_InternFromString("little"); - big_str = PyUnicode_InternFromString("big"); - if (little_str == NULL || big_str == NULL) - return NULL; - } - if (PyObject_RichCompareBool(byteorder_str, little_str, Py_EQ)) + if (!PyUnicode_CompareWithASCIIString(byteorder_str, "little")) little_endian = 1; - else if (PyObject_RichCompareBool(byteorder_str, big_str, Py_EQ)) + else if (!PyUnicode_CompareWithASCIIString(byteorder_str, "big")) little_endian = 0; else { PyErr_SetString(PyExc_ValueError, From python-checkins at python.org Sat Jan 9 22:54:39 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 09 Jan 2010 21:54:39 -0000 Subject: [Python-checkins] r77397 - in python/branches/release31-maint: Misc/NEWS Modules/_testcapimodule.c Objects/unicodeobject.c Message-ID: Author: benjamin.peterson Date: Sat Jan 9 22:54:39 2010 New Revision: 77397 Log: Merged revisions 77395 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ........ r77395 | benjamin.peterson | 2010-01-09 15:45:28 -0600 (Sat, 09 Jan 2010) | 2 lines Python strings ending with '\0' should not be equivalent to their C counterparts in PyUnicode_CompareWithASCIIString ........ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Misc/NEWS python/branches/release31-maint/Modules/_testcapimodule.c python/branches/release31-maint/Objects/unicodeobject.c Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Sat Jan 9 22:54:39 2010 @@ -57,7 +57,6 @@ - Issue #6750: A text file opened with io.open() could duplicate its output when writing from multiple threads at the same time. - Library ------- @@ -280,6 +279,12 @@ - Issue #7042: Fix test_signal (test_itimer_virtual) failure on OS X 10.6. +C-API +----- + +- Make PyUnicode_CompareWithASCIIString return not equal if the Python string + has '\0' at the end. + Build ----- Modified: python/branches/release31-maint/Modules/_testcapimodule.c ============================================================================== --- python/branches/release31-maint/Modules/_testcapimodule.c (original) +++ python/branches/release31-maint/Modules/_testcapimodule.c Sat Jan 9 22:54:39 2010 @@ -1093,6 +1093,23 @@ #undef CHECK_1_FORMAT } + +static PyObject * +test_unicode_compare_with_ascii(PyObject *self) { + PyObject *py_s = PyUnicode_FromStringAndSize("str\0", 4); + int result; + if (py_s == NULL) + return NULL; + result = PyUnicode_CompareWithASCIIString(py_s, "str"); + Py_DECREF(py_s); + if (!result) { + PyErr_SetString(TestError, "Python string ending in NULL " + "should not compare equal to c string."); + return NULL; + } + Py_RETURN_NONE; +}; + /* This is here to provide a docstring for test_descr. */ static PyObject * test_with_docstring(PyObject *self) @@ -1524,6 +1541,7 @@ {"test_with_docstring", (PyCFunction)test_with_docstring, METH_NOARGS, PyDoc_STR("This is a pretty normal docstring.")}, {"test_string_to_double", (PyCFunction)test_string_to_double, METH_NOARGS}, + {"test_unicode_compare_with_ascii", (PyCFunction)test_unicode_compare_with_ascii, METH_NOARGS}, {"test_capsule", (PyCFunction)test_capsule, METH_NOARGS}, {"getargs_tuple", getargs_tuple, METH_VARARGS}, {"getargs_keywords", (PyCFunction)getargs_keywords, Modified: python/branches/release31-maint/Objects/unicodeobject.c ============================================================================== --- python/branches/release31-maint/Objects/unicodeobject.c (original) +++ python/branches/release31-maint/Objects/unicodeobject.c Sat Jan 9 22:54:39 2010 @@ -6932,6 +6932,11 @@ for (i = 0; id[i] && str[i]; i++) if (id[i] != str[i]) return ((int)id[i] < (int)str[i]) ? -1 : 1; + /* This check keeps Python strings that end in '\0' from comparing equal + to C strings identical up to that point. */ + if (PyUnicode_GET_SIZE(uni) != i) + /* We'll say the Python string is longer. */ + return 1; if (id[i]) return 1; /* uni is longer */ if (str[i]) From python-checkins at python.org Sat Jan 9 23:14:47 2010 From: python-checkins at python.org (alexandre.vassalotti) Date: Sat, 09 Jan 2010 22:14:47 -0000 Subject: [Python-checkins] r77398 - python/branches/py3k/Objects/bytesobject.c Message-ID: Author: alexandre.vassalotti Date: Sat Jan 9 23:14:46 2010 New Revision: 77398 Log: Issue #6688: Optimize PyBytes_FromObject(). - Add special-cases for list and tuple objects. - Use _PyObject_LengthHint() instead of an arbitrary value for the size of the initial buffer of the returned object. Modified: python/branches/py3k/Objects/bytesobject.c Modified: python/branches/py3k/Objects/bytesobject.c ============================================================================== --- python/branches/py3k/Objects/bytesobject.c (original) +++ python/branches/py3k/Objects/bytesobject.c Sat Jan 9 23:14:46 2010 @@ -2979,17 +2979,62 @@ return NULL; } + if (PyList_CheckExact(x)) { + new = PyBytes_FromStringAndSize(NULL, Py_SIZE(x)); + if (new == NULL) + return NULL; + for (i = 0; i < Py_SIZE(x); i++) { + Py_ssize_t value = PyNumber_AsSsize_t( + PyList_GET_ITEM(x, i), PyExc_ValueError); + if (value == -1 && PyErr_Occurred()) { + Py_DECREF(new); + return NULL; + } + if (value < 0 || value >= 256) { + PyErr_SetString(PyExc_ValueError, + "bytes must be in range(0, 256)"); + Py_DECREF(new); + return NULL; + } + ((PyBytesObject *)new)->ob_sval[i] = value; + } + return new; + } + if (PyTuple_CheckExact(x)) { + new = PyBytes_FromStringAndSize(NULL, Py_SIZE(x)); + if (new == NULL) + return NULL; + for (i = 0; i < Py_SIZE(x); i++) { + Py_ssize_t value = PyNumber_AsSsize_t( + PyTuple_GET_ITEM(x, i), PyExc_ValueError); + if (value == -1 && PyErr_Occurred()) { + Py_DECREF(new); + return NULL; + } + if (value < 0 || value >= 256) { + PyErr_SetString(PyExc_ValueError, + "bytes must be in range(0, 256)"); + Py_DECREF(new); + return NULL; + } + ((PyBytesObject *)new)->ob_sval[i] = value; + } + return new; + } + /* For iterator version, create a string object and resize as needed */ - /* XXX(gb): is 64 a good value? also, optimize if length is known */ - /* XXX(guido): perhaps use Pysequence_Fast() -- I can't imagine the - input being a truly long iterator. */ - size = 64; + size = _PyObject_LengthHint(x, 64); + if (size == -1 && PyErr_Occurred()) + return NULL; + /* Allocate an extra byte to prevent PyBytes_FromStringAndSize() from + returning a shared empty bytes string. This required because we + want to call _PyBytes_Resize() the returned object, which we can + only do on bytes objects with refcount == 1. */ + size += 1; new = PyBytes_FromStringAndSize(NULL, size); if (new == NULL) return NULL; - /* XXX Optimize this if the arguments is a list, tuple */ - /* Get the iterator */ it = PyObject_GetIter(x); if (it == NULL) @@ -3023,7 +3068,7 @@ /* Append the byte */ if (i >= size) { - size *= 2; + size = 2 * size + 1; if (_PyBytes_Resize(&new, size) < 0) goto error; } From python-checkins at python.org Sat Jan 9 23:39:43 2010 From: python-checkins at python.org (georg.brandl) Date: Sat, 09 Jan 2010 22:39:43 -0000 Subject: [Python-checkins] r77399 - python/branches/py3k/Doc/library/stdtypes.rst Message-ID: Author: georg.brandl Date: Sat Jan 9 23:39:42 2010 New Revision: 77399 Log: Remove redundant brackets in signatures. Modified: python/branches/py3k/Doc/library/stdtypes.rst Modified: python/branches/py3k/Doc/library/stdtypes.rst ============================================================================== --- python/branches/py3k/Doc/library/stdtypes.rst (original) +++ python/branches/py3k/Doc/library/stdtypes.rst Sat Jan 9 23:39:42 2010 @@ -457,7 +457,7 @@ .. versionadded:: 3.1 - .. method:: int.to_bytes(length, byteorder, [\*, signed=False]) + .. method:: int.to_bytes(length, byteorder, \*, signed=False) Return an array of bytes representing an integer. @@ -489,7 +489,7 @@ .. versionadded:: 3.2 - .. classmethod:: int.from_bytes(bytes, byteorder, [\*, signed=False]]) + .. classmethod:: int.from_bytes(bytes, byteorder, \*, signed=False) Return the integer represented by the given array of bytes. From python-checkins at python.org Sun Jan 10 00:35:55 2010 From: python-checkins at python.org (alexandre.vassalotti) Date: Sat, 09 Jan 2010 23:35:55 -0000 Subject: [Python-checkins] r77400 - in python/trunk: Doc/reference/expressions.rst Grammar/Grammar Include/Python-ast.h Include/graminit.h Include/opcode.h Lib/compiler/ast.py Lib/compiler/pyassem.py Lib/compiler/pycodegen.py Lib/compiler/transformer.py Lib/opcode.py Lib/symbol.py Lib/test/test_compiler.py Lib/test/test_grammar.py Lib/test/test_parser.py Misc/NEWS Modules/parsermodule.c Parser/Python.asdl Python/Python-ast.c Python/ast.c Python/ceval.c Python/compile.c Python/graminit.c Python/import.c Python/symtable.c Message-ID: Author: alexandre.vassalotti Date: Sun Jan 10 00:35:54 2010 New Revision: 77400 Log: Issue #2335: Backport set literals syntax from Python 3.x. Modified: python/trunk/Doc/reference/expressions.rst python/trunk/Grammar/Grammar python/trunk/Include/Python-ast.h python/trunk/Include/graminit.h python/trunk/Include/opcode.h python/trunk/Lib/compiler/ast.py python/trunk/Lib/compiler/pyassem.py python/trunk/Lib/compiler/pycodegen.py python/trunk/Lib/compiler/transformer.py python/trunk/Lib/opcode.py python/trunk/Lib/symbol.py python/trunk/Lib/test/test_compiler.py python/trunk/Lib/test/test_grammar.py python/trunk/Lib/test/test_parser.py python/trunk/Misc/NEWS python/trunk/Modules/parsermodule.c python/trunk/Parser/Python.asdl python/trunk/Python/Python-ast.c python/trunk/Python/ast.c python/trunk/Python/ceval.c python/trunk/Python/compile.c python/trunk/Python/graminit.c python/trunk/Python/import.c python/trunk/Python/symtable.c Modified: python/trunk/Doc/reference/expressions.rst ============================================================================== --- python/trunk/Doc/reference/expressions.rst (original) +++ python/trunk/Doc/reference/expressions.rst Sun Jan 10 00:35:54 2010 @@ -65,7 +65,7 @@ .. productionlist:: atom: `identifier` | `literal` | `enclosure` enclosure: `parenth_form` | `list_display` - : | `generator_expression` | `dict_display` + : | `generator_expression` | `dict_display` | `set_display` : | `string_conversion` | `yield_atom` @@ -281,6 +281,30 @@ prevails. +.. _set: + +Set displays +------------ + +.. index:: pair: set; display + object: set + +A set display is denoted by curly braces and distinguishable from dictionary +displays by the lack of colons separating keys and values: + +.. productionlist:: + set_display: "{" (`expression_list` | `comprehension`) "}" + +A set display yields a new mutable set object, the contents being specified by +either a sequence of expressions or a comprehension. When a comma-separated +list of expressions is supplied, its elements are evaluated from left to right +and added to the set object. When a comprehension is supplied, the set is +constructed from the elements resulting from the comprehension. + +An empty set cannot be constructed with ``{}``; this literal constructs an empty +dictionary. + + .. _string-conversions: String conversions Modified: python/trunk/Grammar/Grammar ============================================================================== --- python/trunk/Grammar/Grammar (original) +++ python/trunk/Grammar/Grammar Sun Jan 10 00:35:54 2010 @@ -102,7 +102,7 @@ power: atom trailer* ['**' factor] atom: ('(' [yield_expr|testlist_gexp] ')' | '[' [listmaker] ']' | - '{' [dictmaker] '}' | + '{' [dictorsetmaker] '}' | '`' testlist1 '`' | NAME | NUMBER | STRING+) listmaker: test ( list_for | (',' test)* [','] ) @@ -115,6 +115,8 @@ exprlist: expr (',' expr)* [','] testlist: test (',' test)* [','] dictmaker: test ':' test (',' test ':' test)* [','] +dictorsetmaker: ( (test ':' test (',' test ':' test)* [',']) | + (test (',' test)* [',']) ) classdef: 'class' NAME ['(' [testlist] ')'] ':' suite Modified: python/trunk/Include/Python-ast.h ============================================================================== --- python/trunk/Include/Python-ast.h (original) +++ python/trunk/Include/Python-ast.h Sun Jan 10 00:35:54 2010 @@ -185,11 +185,11 @@ }; enum _expr_kind {BoolOp_kind=1, BinOp_kind=2, UnaryOp_kind=3, Lambda_kind=4, - IfExp_kind=5, Dict_kind=6, ListComp_kind=7, - GeneratorExp_kind=8, Yield_kind=9, Compare_kind=10, - Call_kind=11, Repr_kind=12, Num_kind=13, Str_kind=14, - Attribute_kind=15, Subscript_kind=16, Name_kind=17, - List_kind=18, Tuple_kind=19}; + IfExp_kind=5, Dict_kind=6, Set_kind=7, ListComp_kind=8, + GeneratorExp_kind=9, Yield_kind=10, Compare_kind=11, + Call_kind=12, Repr_kind=13, Num_kind=14, Str_kind=15, + Attribute_kind=16, Subscript_kind=17, Name_kind=18, + List_kind=19, Tuple_kind=20}; struct _expr { enum _expr_kind kind; union { @@ -226,6 +226,10 @@ } Dict; struct { + asdl_seq *elts; + } Set; + + struct { expr_ty elt; asdl_seq *generators; } ListComp; @@ -449,6 +453,8 @@ #define Dict(a0, a1, a2, a3, a4) _Py_Dict(a0, a1, a2, a3, a4) expr_ty _Py_Dict(asdl_seq * keys, asdl_seq * values, int lineno, int col_offset, PyArena *arena); +#define Set(a0, a1, a2, a3) _Py_Set(a0, a1, a2, a3) +expr_ty _Py_Set(asdl_seq * elts, int lineno, int col_offset, PyArena *arena); #define ListComp(a0, a1, a2, a3, a4) _Py_ListComp(a0, a1, a2, a3, a4) expr_ty _Py_ListComp(expr_ty elt, asdl_seq * generators, int lineno, int col_offset, PyArena *arena); Modified: python/trunk/Include/graminit.h ============================================================================== --- python/trunk/Include/graminit.h (original) +++ python/trunk/Include/graminit.h Sun Jan 10 00:35:54 2010 @@ -73,15 +73,16 @@ #define exprlist 326 #define testlist 327 #define dictmaker 328 -#define classdef 329 -#define arglist 330 -#define argument 331 -#define list_iter 332 -#define list_for 333 -#define list_if 334 -#define gen_iter 335 -#define gen_for 336 -#define gen_if 337 -#define testlist1 338 -#define encoding_decl 339 -#define yield_expr 340 +#define dictorsetmaker 329 +#define classdef 330 +#define arglist 331 +#define argument 332 +#define list_iter 333 +#define list_for 334 +#define list_if 335 +#define gen_iter 336 +#define gen_for 337 +#define gen_if 338 +#define testlist1 339 +#define encoding_decl 340 +#define yield_expr 341 Modified: python/trunk/Include/opcode.h ============================================================================== --- python/trunk/Include/opcode.h (original) +++ python/trunk/Include/opcode.h Sun Jan 10 00:35:54 2010 @@ -99,13 +99,14 @@ #define LOAD_NAME 101 /* Index in name list */ #define BUILD_TUPLE 102 /* Number of tuple items */ #define BUILD_LIST 103 /* Number of list items */ -#define BUILD_MAP 104 /* Always zero for now */ -#define LOAD_ATTR 105 /* Index in name list */ -#define COMPARE_OP 106 /* Comparison operator */ -#define IMPORT_NAME 107 /* Index in name list */ -#define IMPORT_FROM 108 /* Index in name list */ - +#define BUILD_SET 104 /* Number of set items */ +#define BUILD_MAP 105 /* Always zero for now */ +#define LOAD_ATTR 106 /* Index in name list */ +#define COMPARE_OP 107 /* Comparison operator */ +#define IMPORT_NAME 108 /* Index in name list */ +#define IMPORT_FROM 109 /* Index in name list */ #define JUMP_FORWARD 110 /* Number of bytes to skip */ + #define JUMP_IF_FALSE_OR_POP 111 /* Target byte offset from beginning of code */ #define JUMP_IF_TRUE_OR_POP 112 /* "" */ Modified: python/trunk/Lib/compiler/ast.py ============================================================================== --- python/trunk/Lib/compiler/ast.py (original) +++ python/trunk/Lib/compiler/ast.py Sun Jan 10 00:35:54 2010 @@ -1107,6 +1107,22 @@ def __repr__(self): return "RightShift((%s, %s))" % (repr(self.left), repr(self.right)) +class Set(Node): + def __init__(self, nodes, lineno=None): + self.nodes = nodes + self.lineno = lineno + + def getChildren(self): + return tuple(flatten(self.nodes)) + + def getChildNodes(self): + nodelist = [] + nodelist.extend(flatten_nodes(self.nodes)) + return tuple(nodelist) + + def __repr__(self): + return "Set(%s)" % (repr(self.nodes),) + class Slice(Node): def __init__(self, expr, flags, lower, upper, lineno=None): self.expr = expr Modified: python/trunk/Lib/compiler/pyassem.py ============================================================================== --- python/trunk/Lib/compiler/pyassem.py (original) +++ python/trunk/Lib/compiler/pyassem.py Sun Jan 10 00:35:54 2010 @@ -734,6 +734,8 @@ return -count+1 def BUILD_LIST(self, count): return -count+1 + def BUILD_SET(self, count): + return -count+1 def CALL_FUNCTION(self, argc): hi, lo = divmod(argc, 256) return -(lo + hi * 2) Modified: python/trunk/Lib/compiler/pycodegen.py ============================================================================== --- python/trunk/Lib/compiler/pycodegen.py (original) +++ python/trunk/Lib/compiler/pycodegen.py Sun Jan 10 00:35:54 2010 @@ -1215,6 +1215,12 @@ self.visit(elt) self.emit('BUILD_LIST', len(node.nodes)) + def visitSet(self, node): + self.set_lineno(node) + for elt in node.nodes: + self.visit(elt) + self.emit('BUILD_SET', len(node.nodes)) + def visitSliceobj(self, node): for child in node.nodes: self.visit(child) Modified: python/trunk/Lib/compiler/transformer.py ============================================================================== --- python/trunk/Lib/compiler/transformer.py (original) +++ python/trunk/Lib/compiler/transformer.py Sun Jan 10 00:35:54 2010 @@ -749,7 +749,7 @@ def atom_lbrace(self, nodelist): if nodelist[1][0] == token.RBRACE: return Dict((), lineno=nodelist[0][2]) - return self.com_dictmaker(nodelist[1]) + return self.com_dictorsetmaker(nodelist[1]) def atom_backquote(self, nodelist): return Backquote(self.com_node(nodelist[1])) @@ -1197,13 +1197,21 @@ assert node[0] == symbol.gen_iter return node[1] - def com_dictmaker(self, nodelist): - # dictmaker: test ':' test (',' test ':' value)* [','] - items = [] - for i in range(1, len(nodelist), 4): - items.append((self.com_node(nodelist[i]), - self.com_node(nodelist[i+2]))) - return Dict(items, lineno=items[0][0].lineno) + def com_dictorsetmaker(self, nodelist): + # dictorsetmaker: ( (test ':' test (',' test ':' test)* [',']) | + # (test (',' test)* [',']) ) + assert nodelist[0] == symbol.dictorsetmaker + if len(nodelist) == 2 or nodelist[2][0] == token.COMMA: + items = [] + for i in range(1, len(nodelist), 2): + items.append(self.com_node(nodelist[i])) + return Set(items, lineno=items[0].lineno) + else: + items = [] + for i in range(1, len(nodelist), 4): + items.append((self.com_node(nodelist[i]), + self.com_node(nodelist[i+2]))) + return Dict(items, lineno=items[0][0].lineno) def com_apply_trailer(self, primaryNode, nodelist): t = nodelist[1][0] Modified: python/trunk/Lib/opcode.py ============================================================================== --- python/trunk/Lib/opcode.py (original) +++ python/trunk/Lib/opcode.py Sun Jan 10 00:35:54 2010 @@ -138,13 +138,13 @@ name_op('LOAD_NAME', 101) # Index in name list def_op('BUILD_TUPLE', 102) # Number of tuple items def_op('BUILD_LIST', 103) # Number of list items -def_op('BUILD_MAP', 104) # Number of dict entries (upto 255) -name_op('LOAD_ATTR', 105) # Index in name list -def_op('COMPARE_OP', 106) # Comparison operator -hascompare.append(106) -name_op('IMPORT_NAME', 107) # Index in name list -name_op('IMPORT_FROM', 108) # Index in name list - +def_op('BUILD_SET', 104) # Number of set items +def_op('BUILD_MAP', 105) # Number of dict entries (upto 255) +name_op('LOAD_ATTR', 106) # Index in name list +def_op('COMPARE_OP', 107) # Comparison operator +hascompare.append(107) +name_op('IMPORT_NAME', 108) # Index in name list +name_op('IMPORT_FROM', 109) # Index in name list jrel_op('JUMP_FORWARD', 110) # Number of bytes to skip jabs_op('JUMP_IF_FALSE_OR_POP', 111) # Target byte offset from beginning of code jabs_op('JUMP_IF_TRUE_OR_POP', 112) # "" Modified: python/trunk/Lib/symbol.py ============================================================================== --- python/trunk/Lib/symbol.py (original) +++ python/trunk/Lib/symbol.py Sun Jan 10 00:35:54 2010 @@ -83,18 +83,19 @@ exprlist = 326 testlist = 327 dictmaker = 328 -classdef = 329 -arglist = 330 -argument = 331 -list_iter = 332 -list_for = 333 -list_if = 334 -gen_iter = 335 -gen_for = 336 -gen_if = 337 -testlist1 = 338 -encoding_decl = 339 -yield_expr = 340 +dictorsetmaker = 329 +classdef = 330 +arglist = 331 +argument = 332 +list_iter = 333 +list_for = 334 +list_if = 335 +gen_iter = 336 +gen_for = 337 +gen_if = 338 +testlist1 = 339 +encoding_decl = 340 +yield_expr = 341 #--end constants-- sym_name = {} Modified: python/trunk/Lib/test/test_compiler.py ============================================================================== --- python/trunk/Lib/test/test_compiler.py (original) +++ python/trunk/Lib/test/test_compiler.py Sun Jan 10 00:35:54 2010 @@ -248,6 +248,7 @@ l[3:4] d = {'a': 2} d = {} +s = {1} t = () t = (1, 2) l = [] Modified: python/trunk/Lib/test/test_grammar.py ============================================================================== --- python/trunk/Lib/test/test_grammar.py (original) +++ python/trunk/Lib/test/test_grammar.py Sun Jan 10 00:35:54 2010 @@ -749,7 +749,7 @@ def testAtoms(self): ### atom: '(' [testlist] ')' | '[' [testlist] ']' | '{' [dictmaker] '}' | '`' testlist '`' | NAME | NUMBER | STRING - ### dictmaker: test ':' test (',' test ':' test)* [','] + ### dictorsetmaker: (test ':' test (',' test ':' test)* [',']) | (test (',' test)* [',']) x = (1) x = (1 or 2 or 3) @@ -769,6 +769,11 @@ x = {'one': 1, 'two': 2,} x = {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6} + x = {'one'} + x = {'one', 1,} + x = {'one', 'two', 'three'} + x = {2, 3, 4,} + x = `x` x = `1 or 2 or 3` self.assertEqual(`1,2`, '(1, 2)') Modified: python/trunk/Lib/test/test_parser.py ============================================================================== --- python/trunk/Lib/test/test_parser.py (original) +++ python/trunk/Lib/test/test_parser.py Sun Jan 10 00:35:54 2010 @@ -59,7 +59,20 @@ def test_expressions(self): self.check_expr("foo(1)") + self.check_expr("{1:1}") + self.check_expr("{1:1, 2:2, 3:3}") + self.check_expr("{1:1, 2:2, 3:3,}") + self.check_expr("{1}") + self.check_expr("{1, 2, 3}") + self.check_expr("{1, 2, 3,}") + self.check_expr("[]") + self.check_expr("[1]") self.check_expr("[1, 2, 3]") + self.check_expr("[1, 2, 3,]") + self.check_expr("()") + self.check_expr("(1,)") + self.check_expr("(1, 2, 3)") + self.check_expr("(1, 2, 3,)") self.check_expr("[x**3 for x in range(20)]") self.check_expr("[x**3 for x in range(20) if x % 3]") self.check_expr("[x**3 for x in range(20) if x % 2 if x % 3]") Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Jan 10 00:35:54 2010 @@ -12,6 +12,8 @@ Core and Builtins ----------------- +- Issue #2335: Backport set literals syntax from Python 3.x. + Library ------- Modified: python/trunk/Modules/parsermodule.c ============================================================================== --- python/trunk/Modules/parsermodule.c (original) +++ python/trunk/Modules/parsermodule.c Sun Jan 10 00:35:54 2010 @@ -935,7 +935,7 @@ VALIDATER(atom); VALIDATER(lambdef); VALIDATER(trailer); VALIDATER(subscript); VALIDATER(subscriptlist); VALIDATER(sliceop); -VALIDATER(exprlist); VALIDATER(dictmaker); +VALIDATER(exprlist); VALIDATER(dictorsetmaker); VALIDATER(arglist); VALIDATER(argument); VALIDATER(listmaker); VALIDATER(yield_stmt); VALIDATER(testlist1); VALIDATER(gen_for); @@ -2478,7 +2478,7 @@ && validate_ntype(CHILD(tree, nch - 1), RBRACE)); if (res && (nch == 3)) - res = validate_dictmaker(CHILD(tree, 1)); + res = validate_dictorsetmaker(CHILD(tree, 1)); break; case BACKQUOTE: res = ((nch == 3) @@ -2966,32 +2966,59 @@ static int -validate_dictmaker(node *tree) +validate_dictorsetmaker(node *tree) { int nch = NCH(tree); - int res = (validate_ntype(tree, dictmaker) - && (nch >= 3) - && validate_test(CHILD(tree, 0)) - && validate_colon(CHILD(tree, 1)) - && validate_test(CHILD(tree, 2))); + int ok = validate_ntype(tree, dictorsetmaker); + int i = 0; + + assert(nch > 0); - if (res && ((nch % 4) == 0)) - res = validate_comma(CHILD(tree, --nch)); - else if (res) - res = ((nch % 4) == 3); - - if (res && (nch > 3)) { - int pos = 3; - /* ( ',' test ':' test )* */ - while (res && (pos < nch)) { - res = (validate_comma(CHILD(tree, pos)) - && validate_test(CHILD(tree, pos + 1)) - && validate_colon(CHILD(tree, pos + 2)) - && validate_test(CHILD(tree, pos + 3))); - pos += 4; + if (ok && (nch == 1 || TYPE(CHILD(tree, 1)) == COMMA)) { + /* We got a set: + * test (',' test)* [','] + */ + ok = validate_test(CHILD(tree, i++)); + while (ok && nch - i >= 2) { + ok = (validate_comma(CHILD(tree, i)) + && validate_test(CHILD(tree, i+1))); + i += 2; } } - return (res); + else if (ok) { + /* We got a dict: + * test ':' test (',' test ':' test)* [','] + */ + if (nch >= 3) { + ok = (validate_test(CHILD(tree, i)) + && validate_colon(CHILD(tree, i+1)) + && validate_test(CHILD(tree, i+2))); + i += 3; + } + else { + ok = 0; + err_string("illegal number of nodes for dictorsetmaker"); + } + + while (ok && nch - i >= 4) { + ok = (validate_comma(CHILD(tree, i)) + && validate_test(CHILD(tree, i+1)) + && validate_colon(CHILD(tree, i+2)) + && validate_test(CHILD(tree, i+3))); + i += 4; + } + } + /* Check for a trailing comma. */ + if (ok) { + if (i == nch-1) + ok = validate_comma(CHILD(tree, i)); + else if (i != nch) { + ok = 0; + err_string("illegal trailing nodes for dictorsetmaker"); + } + } + + return ok; } Modified: python/trunk/Parser/Python.asdl ============================================================================== --- python/trunk/Parser/Python.asdl (original) +++ python/trunk/Parser/Python.asdl Sun Jan 10 00:35:54 2010 @@ -56,6 +56,7 @@ | Lambda(arguments args, expr body) | IfExp(expr test, expr body, expr orelse) | Dict(expr* keys, expr* values) + | Set(expr* elts) | ListComp(expr elt, comprehension* generators) | GeneratorExp(expr elt, comprehension* generators) -- the grammar constrains where yield expressions can occur Modified: python/trunk/Python/Python-ast.c ============================================================================== --- python/trunk/Python/Python-ast.c (original) +++ python/trunk/Python/Python-ast.c Sun Jan 10 00:35:54 2010 @@ -188,6 +188,10 @@ "keys", "values", }; +static PyTypeObject *Set_type; +static char *Set_fields[]={ + "elts", +}; static PyTypeObject *ListComp_type; static char *ListComp_fields[]={ "elt", @@ -718,6 +722,8 @@ if (!IfExp_type) return 0; Dict_type = make_type("Dict", expr_type, Dict_fields, 2); if (!Dict_type) return 0; + Set_type = make_type("Set", expr_type, Set_fields, 1); + if (!Set_type) return 0; ListComp_type = make_type("ListComp", expr_type, ListComp_fields, 2); if (!ListComp_type) return 0; GeneratorExp_type = make_type("GeneratorExp", expr_type, @@ -1590,6 +1596,20 @@ } expr_ty +Set(asdl_seq * elts, int lineno, int col_offset, PyArena *arena) +{ + expr_ty p; + p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); + if (!p) + return NULL; + p->kind = Set_kind; + p->v.Set.elts = elts; + p->lineno = lineno; + p->col_offset = col_offset; + return p; +} + +expr_ty ListComp(expr_ty elt, asdl_seq * generators, int lineno, int col_offset, PyArena *arena) { @@ -2566,6 +2586,15 @@ goto failed; Py_DECREF(value); break; + case Set_kind: + result = PyType_GenericNew(Set_type, NULL, NULL); + if (!result) goto failed; + value = ast2obj_list(o->v.Set.elts, ast2obj_expr); + if (!value) goto failed; + if (PyObject_SetAttrString(result, "elts", value) == -1) + goto failed; + Py_DECREF(value); + break; case ListComp_kind: result = PyType_GenericNew(ListComp_type, NULL, NULL); if (!result) goto failed; @@ -4860,6 +4889,42 @@ if (*out == NULL) goto failed; return 0; } + isinstance = PyObject_IsInstance(obj, (PyObject*)Set_type); + if (isinstance == -1) { + return 1; + } + if (isinstance) { + asdl_seq* elts; + + if (PyObject_HasAttrString(obj, "elts")) { + int res; + Py_ssize_t len; + Py_ssize_t i; + tmp = PyObject_GetAttrString(obj, "elts"); + if (tmp == NULL) goto failed; + if (!PyList_Check(tmp)) { + PyErr_Format(PyExc_TypeError, "Set field \"elts\" must be a list, not a %.200s", tmp->ob_type->tp_name); + goto failed; + } + len = PyList_GET_SIZE(tmp); + elts = asdl_seq_new(len, arena); + if (elts == NULL) goto failed; + for (i = 0; i < len; i++) { + expr_ty value; + res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); + if (res != 0) goto failed; + asdl_seq_SET(elts, i, value); + } + Py_XDECREF(tmp); + tmp = NULL; + } else { + PyErr_SetString(PyExc_TypeError, "required field \"elts\" missing from Set"); + return 1; + } + *out = Set(elts, lineno, col_offset, arena); + if (*out == NULL) goto failed; + return 0; + } isinstance = PyObject_IsInstance(obj, (PyObject*)ListComp_type); if (isinstance == -1) { return 1; @@ -6351,6 +6416,7 @@ return; if (PyDict_SetItemString(d, "IfExp", (PyObject*)IfExp_type) < 0) return; if (PyDict_SetItemString(d, "Dict", (PyObject*)Dict_type) < 0) return; + if (PyDict_SetItemString(d, "Set", (PyObject*)Set_type) < 0) return; if (PyDict_SetItemString(d, "ListComp", (PyObject*)ListComp_type) < 0) return; if (PyDict_SetItemString(d, "GeneratorExp", Modified: python/trunk/Python/ast.c ============================================================================== --- python/trunk/Python/ast.c (original) +++ python/trunk/Python/ast.c Sun Jan 10 00:35:54 2010 @@ -1383,36 +1383,59 @@ else return ast_for_listcomp(c, ch); case LBRACE: { - /* dictmaker: test ':' test (',' test ':' test)* [','] */ + /* dictorsetmaker: test ':' test (',' test ':' test)* [','] | + * test (',' test)* [',']) + */ int i, size; asdl_seq *keys, *values; - + ch = CHILD(n, 1); - size = (NCH(ch) + 1) / 4; /* +1 in case no trailing comma */ - keys = asdl_seq_new(size, c->c_arena); - if (!keys) - return NULL; - - values = asdl_seq_new(size, c->c_arena); - if (!values) - return NULL; - - for (i = 0; i < NCH(ch); i += 4) { - expr_ty expression; + if (TYPE(ch) == RBRACE) { + /* it's an empty dict */ + return Dict(NULL, NULL, LINENO(n), n->n_col_offset, c->c_arena); + } else if (NCH(ch) == 1 || TYPE(CHILD(ch, 1)) == COMMA) { + /* it's a simple set */ + asdl_seq *elts; + size = (NCH(ch) + 1) / 2; /* +1 in case no trailing comma */ + elts = asdl_seq_new(size, c->c_arena); + if (!elts) + return NULL; + for (i = 0; i < NCH(ch); i += 2) { + expr_ty expression; + expression = ast_for_expr(c, CHILD(ch, i)); + if (!expression) + return NULL; + asdl_seq_SET(elts, i / 2, expression); + } + return Set(elts, LINENO(n), n->n_col_offset, c->c_arena); + } else { + /* it's a dict */ + size = (NCH(ch) + 1) / 4; /* +1 in case no trailing comma */ + keys = asdl_seq_new(size, c->c_arena); + if (!keys) + return NULL; - expression = ast_for_expr(c, CHILD(ch, i)); - if (!expression) + values = asdl_seq_new(size, c->c_arena); + if (!values) return NULL; + + for (i = 0; i < NCH(ch); i += 4) { + expr_ty expression; + + expression = ast_for_expr(c, CHILD(ch, i)); + if (!expression) + return NULL; - asdl_seq_SET(keys, i / 4, expression); + asdl_seq_SET(keys, i / 4, expression); - expression = ast_for_expr(c, CHILD(ch, i + 2)); - if (!expression) - return NULL; + expression = ast_for_expr(c, CHILD(ch, i + 2)); + if (!expression) + return NULL; - asdl_seq_SET(values, i / 4, expression); + asdl_seq_SET(values, i / 4, expression); + } + return Dict(keys, values, LINENO(n), n->n_col_offset, c->c_arena); } - return Dict(keys, values, LINENO(n), n->n_col_offset, c->c_arena); } case BACKQUOTE: { /* repr */ expr_ty expression; Modified: python/trunk/Python/ceval.c ============================================================================== --- python/trunk/Python/ceval.c (original) +++ python/trunk/Python/ceval.c Sun Jan 10 00:35:54 2010 @@ -2186,6 +2186,25 @@ } break; + case BUILD_SET: + x = PySet_New(NULL); + if (x != NULL) { + for (; --oparg >= 0;) { + w = POP(); + if (err == 0) + err = PySet_Add(x, w); + Py_DECREF(w); + } + if (err != 0) { + Py_DECREF(x); + break; + } + PUSH(x); + continue; + } + break; + + case BUILD_MAP: x = _PyDict_NewPresized((Py_ssize_t)oparg); PUSH(x); Modified: python/trunk/Python/compile.c ============================================================================== --- python/trunk/Python/compile.c (original) +++ python/trunk/Python/compile.c Sun Jan 10 00:35:54 2010 @@ -808,6 +808,7 @@ return 1; case BUILD_TUPLE: case BUILD_LIST: + case BUILD_SET: return 1-oparg; case BUILD_MAP: return 1; @@ -2894,6 +2895,11 @@ ADDOP(c, STORE_MAP); } break; + case Set_kind: + n = asdl_seq_LEN(e->v.Set.elts); + VISIT_SEQ(c, expr, e->v.Set.elts); + ADDOP_I(c, BUILD_SET, n); + break; case ListComp_kind: return compiler_listcomp(c, e); case GeneratorExp_kind: Modified: python/trunk/Python/graminit.c ============================================================================== --- python/trunk/Python/graminit.c (original) +++ python/trunk/Python/graminit.c Sun Jan 10 00:35:54 2010 @@ -1548,258 +1548,298 @@ {2, arcs_72_4}, }; static arc arcs_73_0[1] = { - {161, 1}, + {28, 1}, +}; +static arc arcs_73_1[3] = { + {23, 2}, + {29, 3}, + {0, 1}, +}; +static arc arcs_73_2[1] = { + {28, 4}, +}; +static arc arcs_73_3[2] = { + {28, 5}, + {0, 3}, +}; +static arc arcs_73_4[2] = { + {29, 6}, + {0, 4}, +}; +static arc arcs_73_5[2] = { + {29, 3}, + {0, 5}, +}; +static arc arcs_73_6[2] = { + {28, 7}, + {0, 6}, +}; +static arc arcs_73_7[1] = { + {23, 2}, +}; +static state states_73[8] = { + {1, arcs_73_0}, + {3, arcs_73_1}, + {1, arcs_73_2}, + {2, arcs_73_3}, + {2, arcs_73_4}, + {2, arcs_73_5}, + {2, arcs_73_6}, + {1, arcs_73_7}, +}; +static arc arcs_74_0[1] = { + {162, 1}, }; -static arc arcs_73_1[1] = { +static arc arcs_74_1[1] = { {21, 2}, }; -static arc arcs_73_2[2] = { +static arc arcs_74_2[2] = { {13, 3}, {23, 4}, }; -static arc arcs_73_3[2] = { +static arc arcs_74_3[2] = { {9, 5}, {15, 6}, }; -static arc arcs_73_4[1] = { +static arc arcs_74_4[1] = { {24, 7}, }; -static arc arcs_73_5[1] = { +static arc arcs_74_5[1] = { {15, 6}, }; -static arc arcs_73_6[1] = { +static arc arcs_74_6[1] = { {23, 4}, }; -static arc arcs_73_7[1] = { +static arc arcs_74_7[1] = { {0, 7}, }; -static state states_73[8] = { - {1, arcs_73_0}, - {1, arcs_73_1}, - {2, arcs_73_2}, - {2, arcs_73_3}, - {1, arcs_73_4}, - {1, arcs_73_5}, - {1, arcs_73_6}, - {1, arcs_73_7}, +static state states_74[8] = { + {1, arcs_74_0}, + {1, arcs_74_1}, + {2, arcs_74_2}, + {2, arcs_74_3}, + {1, arcs_74_4}, + {1, arcs_74_5}, + {1, arcs_74_6}, + {1, arcs_74_7}, }; -static arc arcs_74_0[3] = { - {162, 1}, +static arc arcs_75_0[3] = { + {163, 1}, {30, 2}, {31, 3}, }; -static arc arcs_74_1[2] = { +static arc arcs_75_1[2] = { {29, 4}, {0, 1}, }; -static arc arcs_74_2[1] = { +static arc arcs_75_2[1] = { {28, 5}, }; -static arc arcs_74_3[1] = { +static arc arcs_75_3[1] = { {28, 6}, }; -static arc arcs_74_4[4] = { - {162, 1}, +static arc arcs_75_4[4] = { + {163, 1}, {30, 2}, {31, 3}, {0, 4}, }; -static arc arcs_74_5[2] = { +static arc arcs_75_5[2] = { {29, 7}, {0, 5}, }; -static arc arcs_74_6[1] = { +static arc arcs_75_6[1] = { {0, 6}, }; -static arc arcs_74_7[2] = { - {162, 5}, +static arc arcs_75_7[2] = { + {163, 5}, {31, 3}, }; -static state states_74[8] = { - {3, arcs_74_0}, - {2, arcs_74_1}, - {1, arcs_74_2}, - {1, arcs_74_3}, - {4, arcs_74_4}, - {2, arcs_74_5}, - {1, arcs_74_6}, - {2, arcs_74_7}, +static state states_75[8] = { + {3, arcs_75_0}, + {2, arcs_75_1}, + {1, arcs_75_2}, + {1, arcs_75_3}, + {4, arcs_75_4}, + {2, arcs_75_5}, + {1, arcs_75_6}, + {2, arcs_75_7}, }; -static arc arcs_75_0[1] = { +static arc arcs_76_0[1] = { {28, 1}, }; -static arc arcs_75_1[3] = { +static arc arcs_76_1[3] = { {157, 2}, {27, 3}, {0, 1}, }; -static arc arcs_75_2[1] = { +static arc arcs_76_2[1] = { {0, 2}, }; -static arc arcs_75_3[1] = { +static arc arcs_76_3[1] = { {28, 2}, }; -static state states_75[4] = { - {1, arcs_75_0}, - {3, arcs_75_1}, - {1, arcs_75_2}, - {1, arcs_75_3}, +static state states_76[4] = { + {1, arcs_76_0}, + {3, arcs_76_1}, + {1, arcs_76_2}, + {1, arcs_76_3}, }; -static arc arcs_76_0[2] = { +static arc arcs_77_0[2] = { {156, 1}, - {164, 1}, + {165, 1}, }; -static arc arcs_76_1[1] = { +static arc arcs_77_1[1] = { {0, 1}, }; -static state states_76[2] = { - {2, arcs_76_0}, - {1, arcs_76_1}, +static state states_77[2] = { + {2, arcs_77_0}, + {1, arcs_77_1}, }; -static arc arcs_77_0[1] = { +static arc arcs_78_0[1] = { {96, 1}, }; -static arc arcs_77_1[1] = { +static arc arcs_78_1[1] = { {61, 2}, }; -static arc arcs_77_2[1] = { +static arc arcs_78_2[1] = { {85, 3}, }; -static arc arcs_77_3[1] = { +static arc arcs_78_3[1] = { {105, 4}, }; -static arc arcs_77_4[2] = { - {163, 5}, +static arc arcs_78_4[2] = { + {164, 5}, {0, 4}, }; -static arc arcs_77_5[1] = { +static arc arcs_78_5[1] = { {0, 5}, }; -static state states_77[6] = { - {1, arcs_77_0}, - {1, arcs_77_1}, - {1, arcs_77_2}, - {1, arcs_77_3}, - {2, arcs_77_4}, - {1, arcs_77_5}, +static state states_78[6] = { + {1, arcs_78_0}, + {1, arcs_78_1}, + {1, arcs_78_2}, + {1, arcs_78_3}, + {2, arcs_78_4}, + {1, arcs_78_5}, }; -static arc arcs_78_0[1] = { +static arc arcs_79_0[1] = { {92, 1}, }; -static arc arcs_78_1[1] = { +static arc arcs_79_1[1] = { {106, 2}, }; -static arc arcs_78_2[2] = { - {163, 3}, +static arc arcs_79_2[2] = { + {164, 3}, {0, 2}, }; -static arc arcs_78_3[1] = { +static arc arcs_79_3[1] = { {0, 3}, }; -static state states_78[4] = { - {1, arcs_78_0}, - {1, arcs_78_1}, - {2, arcs_78_2}, - {1, arcs_78_3}, +static state states_79[4] = { + {1, arcs_79_0}, + {1, arcs_79_1}, + {2, arcs_79_2}, + {1, arcs_79_3}, }; -static arc arcs_79_0[2] = { +static arc arcs_80_0[2] = { {157, 1}, - {166, 1}, + {167, 1}, }; -static arc arcs_79_1[1] = { +static arc arcs_80_1[1] = { {0, 1}, }; -static state states_79[2] = { - {2, arcs_79_0}, - {1, arcs_79_1}, +static state states_80[2] = { + {2, arcs_80_0}, + {1, arcs_80_1}, }; -static arc arcs_80_0[1] = { +static arc arcs_81_0[1] = { {96, 1}, }; -static arc arcs_80_1[1] = { +static arc arcs_81_1[1] = { {61, 2}, }; -static arc arcs_80_2[1] = { +static arc arcs_81_2[1] = { {85, 3}, }; -static arc arcs_80_3[1] = { +static arc arcs_81_3[1] = { {107, 4}, }; -static arc arcs_80_4[2] = { - {165, 5}, +static arc arcs_81_4[2] = { + {166, 5}, {0, 4}, }; -static arc arcs_80_5[1] = { +static arc arcs_81_5[1] = { {0, 5}, }; -static state states_80[6] = { - {1, arcs_80_0}, - {1, arcs_80_1}, - {1, arcs_80_2}, - {1, arcs_80_3}, - {2, arcs_80_4}, - {1, arcs_80_5}, +static state states_81[6] = { + {1, arcs_81_0}, + {1, arcs_81_1}, + {1, arcs_81_2}, + {1, arcs_81_3}, + {2, arcs_81_4}, + {1, arcs_81_5}, }; -static arc arcs_81_0[1] = { +static arc arcs_82_0[1] = { {92, 1}, }; -static arc arcs_81_1[1] = { +static arc arcs_82_1[1] = { {106, 2}, }; -static arc arcs_81_2[2] = { - {165, 3}, +static arc arcs_82_2[2] = { + {166, 3}, {0, 2}, }; -static arc arcs_81_3[1] = { +static arc arcs_82_3[1] = { {0, 3}, }; -static state states_81[4] = { - {1, arcs_81_0}, - {1, arcs_81_1}, - {2, arcs_81_2}, - {1, arcs_81_3}, +static state states_82[4] = { + {1, arcs_82_0}, + {1, arcs_82_1}, + {2, arcs_82_2}, + {1, arcs_82_3}, }; -static arc arcs_82_0[1] = { +static arc arcs_83_0[1] = { {28, 1}, }; -static arc arcs_82_1[2] = { +static arc arcs_83_1[2] = { {29, 0}, {0, 1}, }; -static state states_82[2] = { - {1, arcs_82_0}, - {2, arcs_82_1}, +static state states_83[2] = { + {1, arcs_83_0}, + {2, arcs_83_1}, }; -static arc arcs_83_0[1] = { +static arc arcs_84_0[1] = { {21, 1}, }; -static arc arcs_83_1[1] = { +static arc arcs_84_1[1] = { {0, 1}, }; -static state states_83[2] = { - {1, arcs_83_0}, - {1, arcs_83_1}, +static state states_84[2] = { + {1, arcs_84_0}, + {1, arcs_84_1}, }; -static arc arcs_84_0[1] = { - {168, 1}, +static arc arcs_85_0[1] = { + {169, 1}, }; -static arc arcs_84_1[2] = { +static arc arcs_85_1[2] = { {9, 2}, {0, 1}, }; -static arc arcs_84_2[1] = { +static arc arcs_85_2[1] = { {0, 2}, }; -static state states_84[3] = { - {1, arcs_84_0}, - {2, arcs_84_1}, - {1, arcs_84_2}, +static state states_85[3] = { + {1, arcs_85_0}, + {2, arcs_85_1}, + {1, arcs_85_2}, }; -static dfa dfas[85] = { +static dfa dfas[86] = { {256, "single_input", 0, 3, states_0, - "\004\050\060\000\000\000\000\124\360\024\114\220\023\040\010\000\200\041\044\015\002\001"}, + "\004\050\060\000\000\000\000\124\360\024\114\220\023\040\010\000\200\041\044\015\004\002"}, {257, "file_input", 0, 2, states_1, - "\204\050\060\000\000\000\000\124\360\024\114\220\023\040\010\000\200\041\044\015\002\001"}, + "\204\050\060\000\000\000\000\124\360\024\114\220\023\040\010\000\200\041\044\015\004\002"}, {258, "eval_input", 0, 3, states_2, "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, {259, "decorator", 0, 7, states_3, @@ -1819,11 +1859,11 @@ {266, "fplist", 0, 3, states_10, "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {267, "stmt", 0, 2, states_11, - "\000\050\060\000\000\000\000\124\360\024\114\220\023\040\010\000\200\041\044\015\002\001"}, + "\000\050\060\000\000\000\000\124\360\024\114\220\023\040\010\000\200\041\044\015\004\002"}, {268, "simple_stmt", 0, 4, states_12, - "\000\040\040\000\000\000\000\124\360\024\114\000\000\040\010\000\200\041\044\015\000\001"}, + "\000\040\040\000\000\000\000\124\360\024\114\000\000\040\010\000\200\041\044\015\000\002"}, {269, "small_stmt", 0, 2, states_13, - "\000\040\040\000\000\000\000\124\360\024\114\000\000\040\010\000\200\041\044\015\000\001"}, + "\000\040\040\000\000\000\000\124\360\024\114\000\000\040\010\000\200\041\044\015\000\002"}, {270, "expr_stmt", 0, 6, states_14, "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, {271, "augassign", 0, 2, states_15, @@ -1835,7 +1875,7 @@ {274, "pass_stmt", 0, 2, states_18, "\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {275, "flow_stmt", 0, 2, states_19, - "\000\000\000\000\000\000\000\000\360\000\000\000\000\000\000\000\000\000\000\000\000\001"}, + "\000\000\000\000\000\000\000\000\360\000\000\000\000\000\000\000\000\000\000\000\000\002"}, {276, "break_stmt", 0, 2, states_20, "\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {277, "continue_stmt", 0, 2, states_21, @@ -1843,7 +1883,7 @@ {278, "return_stmt", 0, 3, states_22, "\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {279, "yield_stmt", 0, 2, states_23, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"}, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002"}, {280, "raise_stmt", 0, 7, states_24, "\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {281, "import_stmt", 0, 2, states_25, @@ -1869,7 +1909,7 @@ {291, "assert_stmt", 0, 5, states_35, "\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000"}, {292, "compound_stmt", 0, 2, states_36, - "\000\010\020\000\000\000\000\000\000\000\000\220\023\000\000\000\000\000\000\000\002\000"}, + "\000\010\020\000\000\000\000\000\000\000\000\220\023\000\000\000\000\000\000\000\004\000"}, {293, "if_stmt", 0, 8, states_37, "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, {294, "while_stmt", 0, 8, states_38, @@ -1885,7 +1925,7 @@ {299, "except_clause", 0, 5, states_43, "\000\000\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000"}, {300, "suite", 0, 5, states_44, - "\004\040\040\000\000\000\000\124\360\024\114\000\000\040\010\000\200\041\044\015\000\001"}, + "\004\040\040\000\000\000\000\124\360\024\114\000\000\040\010\000\200\041\044\015\000\002"}, {301, "testlist_safe", 0, 5, states_45, "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, {302, "old_test", 0, 2, states_46, @@ -1942,32 +1982,34 @@ "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, {328, "dictmaker", 0, 5, states_72, "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, - {329, "classdef", 0, 8, states_73, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000"}, - {330, "arglist", 0, 8, states_74, + {329, "dictorsetmaker", 0, 8, states_73, + "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, + {330, "classdef", 0, 8, states_74, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000"}, + {331, "arglist", 0, 8, states_75, "\000\040\040\300\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, - {331, "argument", 0, 4, states_75, + {332, "argument", 0, 4, states_76, "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, - {332, "list_iter", 0, 2, states_76, + {333, "list_iter", 0, 2, states_77, "\000\000\000\000\000\000\000\000\000\000\000\020\001\000\000\000\000\000\000\000\000\000"}, - {333, "list_for", 0, 6, states_77, + {334, "list_for", 0, 6, states_78, "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, - {334, "list_if", 0, 4, states_78, + {335, "list_if", 0, 4, states_79, "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, - {335, "gen_iter", 0, 2, states_79, + {336, "gen_iter", 0, 2, states_80, "\000\000\000\000\000\000\000\000\000\000\000\020\001\000\000\000\000\000\000\000\000\000"}, - {336, "gen_for", 0, 6, states_80, + {337, "gen_for", 0, 6, states_81, "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, - {337, "gen_if", 0, 4, states_81, + {338, "gen_if", 0, 4, states_82, "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, - {338, "testlist1", 0, 2, states_82, + {339, "testlist1", 0, 2, states_83, "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, - {339, "encoding_decl", 0, 2, states_83, + {340, "encoding_decl", 0, 2, states_84, "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {340, "yield_expr", 0, 3, states_84, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"}, + {341, "yield_expr", 0, 3, states_85, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002"}, }; -static label labels[169] = { +static label labels[170] = { {0, "EMPTY"}, {256, 0}, {4, 0}, @@ -1982,11 +2024,11 @@ {50, 0}, {288, 0}, {7, 0}, - {330, 0}, + {331, 0}, {8, 0}, {260, 0}, {261, 0}, - {329, 0}, + {330, 0}, {262, 0}, {1, "def"}, {1, 0}, @@ -2013,7 +2055,7 @@ {290, 0}, {291, 0}, {271, 0}, - {340, 0}, + {341, 0}, {37, 0}, {38, 0}, {39, 0}, @@ -2118,29 +2160,30 @@ {319, 0}, {10, 0}, {26, 0}, - {328, 0}, + {329, 0}, {27, 0}, {25, 0}, - {338, 0}, + {339, 0}, {2, 0}, {3, 0}, - {333, 0}, - {336, 0}, + {334, 0}, + {337, 0}, {323, 0}, {324, 0}, {325, 0}, + {328, 0}, {1, "class"}, - {331, 0}, {332, 0}, - {334, 0}, + {333, 0}, {335, 0}, - {337, 0}, - {339, 0}, + {336, 0}, + {338, 0}, + {340, 0}, {1, "yield"}, }; grammar _PyParser_Grammar = { - 85, + 86, dfas, - {169, labels}, + {170, labels}, 256 }; Modified: python/trunk/Python/import.c ============================================================================== --- python/trunk/Python/import.c (original) +++ python/trunk/Python/import.c Sun Jan 10 00:35:54 2010 @@ -75,9 +75,10 @@ Python 2.7a0: 62181 (optimize conditional branches: introduce POP_JUMP_IF_FALSE and POP_JUMP_IF_TRUE) Python 2.7a0 62191 (introduce SETUP_WITH) + Python 2.7a0 62201 (introduce BUILD_SET) . */ -#define MAGIC (62191 | ((long)'\r'<<16) | ((long)'\n'<<24)) +#define MAGIC (62201 | ((long)'\r'<<16) | ((long)'\n'<<24)) /* Magic word as global; note that _PyImport_Init() can change the value of this global to accommodate for alterations of how the Modified: python/trunk/Python/symtable.c ============================================================================== --- python/trunk/Python/symtable.c (original) +++ python/trunk/Python/symtable.c Sun Jan 10 00:35:54 2010 @@ -1211,6 +1211,9 @@ VISIT_SEQ(st, expr, e->v.Dict.keys); VISIT_SEQ(st, expr, e->v.Dict.values); break; + case Set_kind: + VISIT_SEQ(st, expr, e->v.Set.elts); + break; case ListComp_kind: VISIT(st, expr, e->v.ListComp.elt); VISIT_SEQ(st, comprehension, e->v.ListComp.generators); From solipsis at pitrou.net Sun Jan 10 00:48:53 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Sun, 10 Jan 2010 00:48:53 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77396): sum=0 Message-ID: <20100109234853.4720B17722@ns6635.ovh.net> py3k results for svn r77396 (hg cset a861707f43d3) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogllDNJm', '-x', 'test_httpservers'] From python-checkins at python.org Sun Jan 10 03:48:50 2010 From: python-checkins at python.org (brett.cannon) Date: Sun, 10 Jan 2010 02:48:50 -0000 Subject: [Python-checkins] r77401 - python/trunk/Python/Python-ast.c Message-ID: Author: brett.cannon Date: Sun Jan 10 03:48:50 2010 New Revision: 77401 Log: Update the version # of Python-ast.c based on the backport of set literals from r77400. Modified: python/trunk/Python/Python-ast.c Modified: python/trunk/Python/Python-ast.c ============================================================================== --- python/trunk/Python/Python-ast.c (original) +++ python/trunk/Python/Python-ast.c Sun Jan 10 03:48:50 2010 @@ -2,7 +2,7 @@ /* - __version__ 73421. + __version__ 77400. This module must be committed separately after each AST grammar change; The __version__ number is set to the revision number of the commit @@ -6359,7 +6359,7 @@ if (PyDict_SetItemString(d, "AST", (PyObject*)&AST_type) < 0) return; if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0) return; - if (PyModule_AddStringConstant(m, "__version__", "73421") < 0) + if (PyModule_AddStringConstant(m, "__version__", "77400") < 0) return; if (PyDict_SetItemString(d, "mod", (PyObject*)mod_type) < 0) return; if (PyDict_SetItemString(d, "Module", (PyObject*)Module_type) < 0) From python-checkins at python.org Sun Jan 10 03:56:20 2010 From: python-checkins at python.org (brett.cannon) Date: Sun, 10 Jan 2010 02:56:20 -0000 Subject: [Python-checkins] r77402 - in python/trunk: Doc/library/warnings.rst Lib/test/test_ascii_formatd.py Lib/test/test_exceptions.py Lib/warnings.py Misc/NEWS Python/_warnings.c Message-ID: Author: brett.cannon Date: Sun Jan 10 03:56:19 2010 New Revision: 77402 Log: DeprecationWarning is now silent by default. This was originally suggested by Guido, discussed on the stdlib-sig mailing list, and given the OK by Guido directly to me. What this change essentially means is that Python has taken a policy of silencing warnings that are only of interest to developers by default. This should prevent users from seeing warnings which are triggered by an application being run against a new interpreter before the app developer has a chance to update their code. Closes issue #7319. Thanks to Antoine Pitrou, Ezio Melotti, and Brian Curtin for helping with the issue. Modified: python/trunk/Doc/library/warnings.rst python/trunk/Lib/test/test_ascii_formatd.py python/trunk/Lib/test/test_exceptions.py python/trunk/Lib/warnings.py python/trunk/Misc/NEWS python/trunk/Python/_warnings.c Modified: python/trunk/Doc/library/warnings.rst ============================================================================== --- python/trunk/Doc/library/warnings.rst (original) +++ python/trunk/Doc/library/warnings.rst Sun Jan 10 03:56:19 2010 @@ -59,7 +59,7 @@ | :exc:`UserWarning` | The default category for :func:`warn`. | +----------------------------------+-----------------------------------------------+ | :exc:`DeprecationWarning` | Base category for warnings about deprecated | -| | features. | +| | features (ignored by default). | +----------------------------------+-----------------------------------------------+ | :exc:`SyntaxWarning` | Base category for warnings about dubious | | | syntactic features. | @@ -89,6 +89,9 @@ standard warning categories. A warning category must always be a subclass of the :exc:`Warning` class. +.. versionchanged:: 2.7 + :exc:`DeprecationWarning` is ignored by default. + .. _warning-filter: @@ -148,14 +151,6 @@ :mod:`warnings` module parses these when it is first imported (invalid options are ignored, after printing a message to ``sys.stderr``). -The warnings that are ignored by default may be enabled by passing :option:`-Wd` -to the interpreter. This enables default handling for all warnings, including -those that are normally ignored by default. This is particular useful for -enabling ImportWarning when debugging problems importing a developed package. -ImportWarning can also be enabled explicitly in Python code using:: - - warnings.simplefilter('default', ImportWarning) - .. _warning-suppress: @@ -226,6 +221,37 @@ entries from the warnings list before each new operation). +Updating Code For New Versions of Python +---------------------------------------- + +Warnings that are only of interest to the developer are ignored by default. As +such you should make sure to test your code with typically ignored warnings +made visible. You can do this from the command-line by passing :option:`-Wd` +to the interpreter (this is shorthand for :option:`-W default`). This enables +default handling for all warnings, including those that are ignored by default. +To change what action is taken for encountered warnings you simply change what +argument is passed to :option:`-W`, e.g. :option:`-W error`. See the +:option:`-W` flag for more details on what is possible. + +To programmatically do the same as :option:`-Wd`, use:: + + warnings.simplefilter('default') + +Make sure to execute this code as soon as possible. This prevents the +registering of what warnings have been raised from unexpectedly influencing how +future warnings are treated. + +Having certain warnings ignored by default is done to prevent a user from +seeing warnings that are only of interest to the developer. As you do not +necessarily have control over what interpreter a user uses to run their code, +it is possible that a new version of Python will be released between your +release cycles. The new interpreter release could trigger new warnings in your +code that were not there in an older interpreter, e.g. +:exc:`DeprecationWarning` for a module that you are using. While you as a +developer want to be notified that your code is using a deprecated module, to a +user this information is essentially noise and provides no benefit to them. + + .. _warning-functions: Available Functions Modified: python/trunk/Lib/test/test_ascii_formatd.py ============================================================================== --- python/trunk/Lib/test/test_ascii_formatd.py (original) +++ python/trunk/Lib/test/test_ascii_formatd.py Sun Jan 10 03:56:19 2010 @@ -4,6 +4,7 @@ import unittest from test_support import check_warnings, run_unittest, cpython_only +import warnings class FormatDeprecationTests(unittest.TestCase): @@ -17,6 +18,7 @@ buf = create_string_buffer(' ' * 100) with check_warnings() as w: + warnings.simplefilter('default') PyOS_ascii_formatd(byref(buf), sizeof(buf), '%+.10f', c_double(10.0)) self.assertEqual(buf.value, '+10.0000000000') Modified: python/trunk/Lib/test/test_exceptions.py ============================================================================== --- python/trunk/Lib/test/test_exceptions.py (original) +++ python/trunk/Lib/test/test_exceptions.py Sun Jan 10 03:56:19 2010 @@ -309,6 +309,7 @@ # BaseException.__init__ triggers a deprecation warning. exc = BaseException("foo") with warnings.catch_warnings(record=True) as w: + warnings.simplefilter('default') self.assertEquals(exc.message, "foo") self.assertEquals(len(w), 1) self.assertEquals(w[0].category, DeprecationWarning) Modified: python/trunk/Lib/warnings.py ============================================================================== --- python/trunk/Lib/warnings.py (original) +++ python/trunk/Lib/warnings.py Sun Jan 10 03:56:19 2010 @@ -383,8 +383,8 @@ # Module initialization _processoptions(sys.warnoptions) if not _warnings_defaults: - simplefilter("ignore", category=PendingDeprecationWarning, append=1) - simplefilter("ignore", category=ImportWarning, append=1) + for cls in (DeprecationWarning, PendingDeprecationWarning, ImportWarning): + simplefilter("ignore", category=cls, append=True) bytes_warning = sys.flags.bytes_warning if bytes_warning > 1: bytes_action = "error" Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Jan 10 03:56:19 2010 @@ -12,6 +12,8 @@ Core and Builtins ----------------- +- Issue #7319: Silence DeprecationWarning by default. + - Issue #2335: Backport set literals syntax from Python 3.x. Library Modified: python/trunk/Python/_warnings.c ============================================================================== --- python/trunk/Python/_warnings.c (original) +++ python/trunk/Python/_warnings.c Sun Jan 10 03:56:19 2010 @@ -85,10 +85,10 @@ default_action = get_warnings_attr("defaultaction"); if (default_action == NULL) { - if (PyErr_Occurred()) { - return NULL; - } - return _default_action; + if (PyErr_Occurred()) { + return NULL; + } + return _default_action; } Py_DECREF(_default_action); @@ -202,12 +202,12 @@ mod_str = PyString_AsString(filename); if (mod_str == NULL) - return NULL; + return NULL; len = PyString_Size(filename); if (len < 0) return NULL; if (len >= 3 && - strncmp(mod_str + (len - 3), ".py", 3) == 0) { + strncmp(mod_str + (len - 3), ".py", 3) == 0) { module = PyString_FromStringAndSize(mod_str, len-3); } else { @@ -251,7 +251,7 @@ name = PyObject_GetAttrString(category, "__name__"); if (name == NULL) /* XXX Can an object lack a '__name__' attribute? */ - return; + return; f_stderr = PySys_GetObject("stderr"); if (f_stderr == NULL) { @@ -341,7 +341,7 @@ rc = already_warned(registry, key, 0); if (rc == -1) goto cleanup; - else if (rc == 1) + else if (rc == 1) goto return_none; /* Else this warning hasn't been generated before. */ } @@ -492,9 +492,9 @@ /* Setup filename. */ *filename = PyDict_GetItemString(globals, "__file__"); if (*filename != NULL) { - Py_ssize_t len = PyString_Size(*filename); + Py_ssize_t len = PyString_Size(*filename); const char *file_str = PyString_AsString(*filename); - if (file_str == NULL || (len < 0 && PyErr_Occurred())) + if (file_str == NULL || (len < 0 && PyErr_Occurred())) goto handle_error; /* if filename.lower().endswith((".pyc", ".pyo")): */ @@ -506,10 +506,10 @@ tolower(file_str[len-1]) == 'o')) { *filename = PyString_FromStringAndSize(file_str, len-1); - if (*filename == NULL) - goto handle_error; - } - else + if (*filename == NULL) + goto handle_error; + } + else Py_INCREF(*filename); } else { @@ -536,8 +536,8 @@ else { /* embedded interpreters don't have sys.argv, see bug #839151 */ *filename = PyString_FromString("__main__"); - if (*filename == NULL) - goto handle_error; + if (*filename == NULL) + goto handle_error; } } if (*filename == NULL) { @@ -839,26 +839,29 @@ static PyObject * init_filters(void) { - PyObject *filters = PyList_New(3); + PyObject *filters = PyList_New(4); const char *bytes_action; if (filters == NULL) return NULL; PyList_SET_ITEM(filters, 0, + create_filter(PyExc_DeprecationWarning, "ignore")); + PyList_SET_ITEM(filters, 1, create_filter(PyExc_PendingDeprecationWarning, "ignore")); - PyList_SET_ITEM(filters, 1, create_filter(PyExc_ImportWarning, "ignore")); + PyList_SET_ITEM(filters, 2, create_filter(PyExc_ImportWarning, "ignore")); if (Py_BytesWarningFlag > 1) bytes_action = "error"; else if (Py_BytesWarningFlag) bytes_action = "default"; else bytes_action = "ignore"; - PyList_SET_ITEM(filters, 2, create_filter(PyExc_BytesWarning, + PyList_SET_ITEM(filters, 3, create_filter(PyExc_BytesWarning, bytes_action)); if (PyList_GET_ITEM(filters, 0) == NULL || PyList_GET_ITEM(filters, 1) == NULL || - PyList_GET_ITEM(filters, 2) == NULL) { + PyList_GET_ITEM(filters, 2) == NULL || + PyList_GET_ITEM(filters, 3) == NULL) { Py_DECREF(filters); return NULL; } From ncoghlan at gmail.com Sun Jan 10 07:47:47 2010 From: ncoghlan at gmail.com (Nick Coghlan) Date: Sun, 10 Jan 2010 16:47:47 +1000 Subject: [Python-checkins] r77402 - in python/trunk: Doc/library/warnings.rst Lib/test/test_ascii_formatd.py Lib/test/test_exceptions.py Lib/warnings.py Misc/NEWS Python/_warnings.c In-Reply-To: <4b4941dc.0967f10a.71e8.6c31SMTPIN_ADDED@mx.google.com> References: <4b4941dc.0967f10a.71e8.6c31SMTPIN_ADDED@mx.google.com> Message-ID: <4B497813.1080303@gmail.com> brett.cannon wrote: > Author: brett.cannon > Date: Sun Jan 10 03:56:19 2010 > New Revision: 77402 > > Log: > DeprecationWarning is now silent by default. > > This was originally suggested by Guido, discussed on the stdlib-sig mailing > list, and given the OK by Guido directly to me. What this change essentially > means is that Python has taken a policy of silencing warnings that are only > of interest to developers by default. This should prevent users from seeing > warnings which are triggered by an application being run against a new > interpreter before the app developer has a chance to update their code. > > Closes issue #7319. Thanks to Antoine Pitrou, Ezio Melotti, and Brian Curtin > for helping with the issue. +1, but reposting this explanation to python-dev would probably be a good idea. Cheers, Nick. -- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia --------------------------------------------------------------- From python-checkins at python.org Sun Jan 10 11:29:54 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sun, 10 Jan 2010 10:29:54 -0000 Subject: [Python-checkins] r77403 - python/trunk/Lib/test/https_svn_python_org_root.pem Message-ID: Author: martin.v.loewis Date: Sun Jan 10 11:29:54 2010 New Revision: 77403 Log: Update root certificate to CAcert. Modified: python/trunk/Lib/test/https_svn_python_org_root.pem Modified: python/trunk/Lib/test/https_svn_python_org_root.pem ============================================================================== --- python/trunk/Lib/test/https_svn_python_org_root.pem (original) +++ python/trunk/Lib/test/https_svn_python_org_root.pem Sun Jan 10 11:29:54 2010 @@ -1,26 +1,41 @@ -----BEGIN CERTIFICATE----- -MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB -lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt -SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG -A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe -MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v -d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh -cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn -0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ -M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a -MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd -oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI -DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy -oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD -VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0 -dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy -bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF -BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM -//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli -CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE -CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t -3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS -KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== ------END CERTIFICATE----- \ No newline at end of file +MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290 +IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB +IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA +Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO +BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi +MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ +ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ +8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6 +zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y +fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7 +w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc +G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k +epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q +laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ +QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU +fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826 +YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w +ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY +gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe +MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0 +IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy +dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw +czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0 +dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl +aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC +AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg +b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB +ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc +nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg +18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c +gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl +Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY +sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T +SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF +CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum +GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk +zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW +omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD +-----END CERTIFICATE----- From python-checkins at python.org Sun Jan 10 11:31:38 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sun, 10 Jan 2010 10:31:38 -0000 Subject: [Python-checkins] r77404 - in python/branches/release26-maint: Lib/test/https_svn_python_org_root.pem Message-ID: Author: martin.v.loewis Date: Sun Jan 10 11:31:37 2010 New Revision: 77404 Log: Merged revisions 77403 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77403 | martin.v.loewis | 2010-01-10 11:29:54 +0100 (So, 10 Jan 2010) | 2 lines Update root certificate to CAcert. ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/test/https_svn_python_org_root.pem Modified: python/branches/release26-maint/Lib/test/https_svn_python_org_root.pem ============================================================================== --- python/branches/release26-maint/Lib/test/https_svn_python_org_root.pem (original) +++ python/branches/release26-maint/Lib/test/https_svn_python_org_root.pem Sun Jan 10 11:31:37 2010 @@ -1,26 +1,41 @@ -----BEGIN CERTIFICATE----- -MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB -lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt -SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG -A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe -MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v -d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh -cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn -0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ -M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a -MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd -oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI -DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy -oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD -VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0 -dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy -bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF -BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM -//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli -CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE -CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t -3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS -KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== ------END CERTIFICATE----- \ No newline at end of file +MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290 +IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB +IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA +Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO +BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi +MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ +ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ +8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6 +zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y +fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7 +w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc +G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k +epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q +laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ +QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU +fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826 +YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w +ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY +gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe +MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0 +IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy +dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw +czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0 +dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl +aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC +AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg +b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB +ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc +nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg +18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c +gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl +Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY +sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T +SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF +CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum +GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk +zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW +omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD +-----END CERTIFICATE----- From python-checkins at python.org Sun Jan 10 11:31:47 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sun, 10 Jan 2010 10:31:47 -0000 Subject: [Python-checkins] r77405 - in python/branches/py3k: Lib/test/https_svn_python_org_root.pem Message-ID: Author: martin.v.loewis Date: Sun Jan 10 11:31:46 2010 New Revision: 77405 Log: Merged revisions 77403 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77403 | martin.v.loewis | 2010-01-10 11:29:54 +0100 (So, 10 Jan 2010) | 2 lines Update root certificate to CAcert. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/https_svn_python_org_root.pem Modified: python/branches/py3k/Lib/test/https_svn_python_org_root.pem ============================================================================== --- python/branches/py3k/Lib/test/https_svn_python_org_root.pem (original) +++ python/branches/py3k/Lib/test/https_svn_python_org_root.pem Sun Jan 10 11:31:46 2010 @@ -1,26 +1,41 @@ -----BEGIN CERTIFICATE----- -MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB -lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt -SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG -A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe -MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v -d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh -cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn -0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ -M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a -MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd -oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI -DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy -oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD -VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0 -dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy -bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF -BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM -//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli -CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE -CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t -3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS -KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== ------END CERTIFICATE----- \ No newline at end of file +MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290 +IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB +IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA +Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO +BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi +MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ +ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ +8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6 +zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y +fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7 +w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc +G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k +epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q +laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ +QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU +fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826 +YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w +ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY +gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe +MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0 +IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy +dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw +czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0 +dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl +aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC +AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg +b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB +ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc +nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg +18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c +gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl +Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY +sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T +SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF +CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum +GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk +zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW +omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD +-----END CERTIFICATE----- From python-checkins at python.org Sun Jan 10 11:33:12 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sun, 10 Jan 2010 10:33:12 -0000 Subject: [Python-checkins] r77406 - in python/branches/release31-maint: Lib/test/https_svn_python_org_root.pem Message-ID: Author: martin.v.loewis Date: Sun Jan 10 11:33:12 2010 New Revision: 77406 Log: Merged revisions 77405 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77405 | martin.v.loewis | 2010-01-10 11:31:46 +0100 (So, 10 Jan 2010) | 9 lines Merged revisions 77403 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77403 | martin.v.loewis | 2010-01-10 11:29:54 +0100 (So, 10 Jan 2010) | 2 lines Update root certificate to CAcert. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/test/https_svn_python_org_root.pem Modified: python/branches/release31-maint/Lib/test/https_svn_python_org_root.pem ============================================================================== --- python/branches/release31-maint/Lib/test/https_svn_python_org_root.pem (original) +++ python/branches/release31-maint/Lib/test/https_svn_python_org_root.pem Sun Jan 10 11:33:12 2010 @@ -1,26 +1,41 @@ -----BEGIN CERTIFICATE----- -MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB -lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt -SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG -A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe -MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v -d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh -cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn -0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ -M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a -MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd -oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI -DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy -oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD -VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0 -dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy -bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF -BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM -//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli -CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE -CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t -3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS -KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== ------END CERTIFICATE----- \ No newline at end of file +MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290 +IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB +IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA +Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO +BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi +MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ +ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ +8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6 +zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y +fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7 +w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc +G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k +epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q +laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ +QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU +fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826 +YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w +ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY +gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe +MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0 +IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy +dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw +czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0 +dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl +aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC +AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg +b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB +ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc +nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg +18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c +gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl +Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY +sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T +SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF +CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum +GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk +zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW +omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD +-----END CERTIFICATE----- From python-checkins at python.org Sun Jan 10 12:27:39 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 10 Jan 2010 11:27:39 -0000 Subject: [Python-checkins] r77407 - python/branches/py3k Message-ID: Author: mark.dickinson Date: Sun Jan 10 12:27:39 2010 New Revision: 77407 Log: Blocked revisions 77391 via svnmerge ........ r77391 | mark.dickinson | 2010-01-09 18:50:50 +0000 (Sat, 09 Jan 2010) | 3 lines Issue #7532: Add additional slicing test cases for new- and old-style classes. Patch by Florent Xicluna. ........ Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Sun Jan 10 12:59:43 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 10 Jan 2010 11:59:43 -0000 Subject: [Python-checkins] r77408 - python/branches/py3k/Lib/test/test_index.py Message-ID: Author: mark.dickinson Date: Sun Jan 10 12:59:43 2010 New Revision: 77408 Log: Issue #7532: Expanded tests for extended slicing. This is a forward port of r77391 to py3k, along with some additional tests and cleanup. Patch by Florent Xicluna. Modified: python/branches/py3k/Lib/test/test_index.py Modified: python/branches/py3k/Lib/test/test_index.py ============================================================================== --- python/branches/py3k/Lib/test/test_index.py (original) +++ python/branches/py3k/Lib/test/test_index.py Sun Jan 10 12:59:43 2010 @@ -2,13 +2,8 @@ from test import support import operator maxsize = support.MAX_Py_ssize_t -minsize = -maxsize-1 -class oldstyle: - def __index__(self): - return self.ind - -class newstyle(object): +class newstyle: def __index__(self): return self.ind @@ -16,13 +11,9 @@ def __index__(self): return self -class TrapLong(int): - def __index__(self): - return self - class BaseTestCase(unittest.TestCase): def setUp(self): - self.o = oldstyle() + self.o = newstyle() self.n = newstyle() def test_basic(self): @@ -52,9 +43,7 @@ def test_subclasses(self): r = list(range(10)) self.assertEqual(r[TrapInt(5):TrapInt(10)], r[5:10]) - self.assertEqual(r[TrapLong(5):TrapLong(10)], r[5:10]) self.assertEqual(slice(TrapInt()).indices(0), (0,0,1)) - self.assertEqual(slice(TrapLong(0)).indices(0), (0,0,1)) def test_error(self): self.o.ind = 'dumb' @@ -69,9 +58,9 @@ # This test case isn't run directly. It just defines common tests # to the different sequence types below def setUp(self): - self.o = oldstyle() + self.o = newstyle() self.n = newstyle() - self.o2 = oldstyle() + self.o2 = newstyle() self.n2 = newstyle() def test_index(self): @@ -88,6 +77,21 @@ self.assertEqual(self.seq[self.o:self.o2], self.seq[1:3]) self.assertEqual(self.seq[self.n:self.n2], self.seq[2:4]) + def test_slice_bug7532(self): + seqlen = len(self.seq) + self.o.ind = int(seqlen * 1.5) + self.n.ind = seqlen + 2 + self.assertEqual(self.seq[self.o:], self.seq[0:0]) + self.assertEqual(self.seq[:self.o], self.seq) + self.assertEqual(self.seq[self.n:], self.seq[0:0]) + self.assertEqual(self.seq[:self.n], self.seq) + self.o2.ind = -seqlen - 2 + self.n2.ind = -int(seqlen * 1.5) + self.assertEqual(self.seq[self.o2:], self.seq) + self.assertEqual(self.seq[:self.o2], self.seq[0:0]) + self.assertEqual(self.seq[self.n2:], self.seq) + self.assertEqual(self.seq[:self.n2], self.seq[0:0]) + def test_repeat(self): self.o.ind = 3 self.n.ind = 2 @@ -108,7 +112,6 @@ def test_subclasses(self): self.assertEqual(self.seq[TrapInt()], self.seq[0]) - self.assertEqual(self.seq[TrapLong()], self.seq[0]) def test_error(self): self.o.ind = 'dumb' @@ -155,14 +158,52 @@ self.assertEqual(lst, [5, 6, 7, 8, 9, 11] * 3) +class NewSeq: + + def __init__(self, iterable): + self._list = list(iterable) + + def __repr__(self): + return repr(self._list) + + def __eq__(self, other): + return self._list == other + + def __len__(self): + return len(self._list) + + def __mul__(self, n): + return self.__class__(self._list*n) + __rmul__ = __mul__ + + def __getitem__(self, index): + return self._list[index] + + class TupleTestCase(SeqTestCase): seq = (0,10,20,30,40,50) +class ByteArrayTestCase(SeqTestCase): + seq = bytearray(b"this is a test") + +class BytesTestCase(SeqTestCase): + seq = b"this is a test" + class StringTestCase(SeqTestCase): seq = "this is a test" -class UnicodeTestCase(SeqTestCase): - seq = "this is a test" +class NewSeqTestCase(SeqTestCase): + seq = NewSeq((0,10,20,30,40,50)) + + + +class RangeTestCase(unittest.TestCase): + + def test_range(self): + n = newstyle() + n.ind = 5 + self.assertEqual(range(1, 20)[n], 6) + self.assertEqual(range(1, 20).__getitem__(n), 6) class OverflowTestCase(unittest.TestCase): @@ -176,9 +217,9 @@ self.assertEqual(self.neg.__index__(), self.neg) def test_getitem(self): - class GetItem(object): + class GetItem: def __len__(self): - return sys.maxsize + assert False, "__len__ should not be invoked" def __getitem__(self, key): return key x = GetItem() @@ -186,6 +227,8 @@ self.assertEqual(x[self.neg], self.neg) self.assertEqual(x[self.neg:self.pos].indices(maxsize), (0, maxsize, 1)) + self.assertEqual(x[self.neg:self.pos:1].indices(maxsize), + (0, maxsize, 1)) def test_sequence_repeat(self): self.assertRaises(OverflowError, lambda: "a" * self.pos) @@ -197,8 +240,11 @@ BaseTestCase, ListTestCase, TupleTestCase, + BytesTestCase, + ByteArrayTestCase, StringTestCase, - UnicodeTestCase, + NewSeqTestCase, + RangeTestCase, OverflowTestCase, ) From python-checkins at python.org Sun Jan 10 13:00:57 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 10 Jan 2010 12:00:57 -0000 Subject: [Python-checkins] r77409 - python/branches/release31-maint Message-ID: Author: mark.dickinson Date: Sun Jan 10 13:00:57 2010 New Revision: 77409 Log: Blocked revisions 77408 via svnmerge ........ r77408 | mark.dickinson | 2010-01-10 11:59:43 +0000 (Sun, 10 Jan 2010) | 4 lines Issue #7532: Expanded tests for extended slicing. This is a forward port of r77391 to py3k, along with some additional tests and cleanup. Patch by Florent Xicluna. ........ Modified: python/branches/release31-maint/ (props changed) From python-checkins at python.org Sun Jan 10 14:06:31 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 10 Jan 2010 13:06:31 -0000 Subject: [Python-checkins] r77410 - python/trunk/Python/dtoa.c Message-ID: Author: mark.dickinson Date: Sun Jan 10 14:06:31 2010 New Revision: 77410 Log: Remove unused BCinfo fields and an unused macro. Modified: python/trunk/Python/dtoa.c Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Sun Jan 10 14:06:31 2010 @@ -200,12 +200,6 @@ #define STRTOD_DIGLIM 40 #endif -#ifdef DIGLIM_DEBUG -extern int strtod_diglim; -#else -#define strtod_diglim STRTOD_DIGLIM -#endif - /* The following definition of Storeinc is appropriate for MIPS processors. * An alternative that might be better on some machines is * #define Storeinc(a,b,c) (*a++ = b << 16 | c & 0xffff) @@ -269,8 +263,7 @@ typedef struct BCinfo BCinfo; struct BCinfo { - int dp0, dp1, dplen, dsign, e0, inexact; - int nd, nd0, rounding, scale, uflchk; + int dp0, dp1, dplen, dsign, e0, nd, nd0, scale; }; #define FFFFFFFF 0xffffffffUL @@ -1318,7 +1311,7 @@ BCinfo bc; Bigint *bb, *bb1, *bd, *bd0, *bs, *delta; - sign = nz0 = nz = bc.dplen = bc.uflchk = 0; + sign = nz0 = nz = bc.dplen = 0; dval(&rv) = 0.; for(s = s00;;s++) switch(*s) { case '-': @@ -1555,11 +1548,11 @@ /* Put digits into bd: true value = bd * 10^e */ bc.nd = nd; - bc.nd0 = nd0; /* Only needed if nd > strtod_diglim, but done here */ + bc.nd0 = nd0; /* Only needed if nd > STRTOD_DIGLIM, but done here */ /* to silence an erroneous warning about bc.nd0 */ /* possibly not being initialized. */ - if (nd > strtod_diglim) { - /* ASSERT(strtod_diglim >= 18); 18 == one more than the */ + if (nd > STRTOD_DIGLIM) { + /* ASSERT(STRTOD_DIGLIM >= 18); 18 == one more than the */ /* minimum number of decimal digits to distinguish double values */ /* in IEEE arithmetic. */ i = j = 18; @@ -1767,10 +1760,8 @@ /* accept rv */ break; /* rv = smallest denormal */ - if (bc.nd >nd) { - bc.uflchk = 1; + if (bc.nd >nd) break; - } goto undfl; } } @@ -1786,10 +1777,8 @@ else { dval(&rv) -= ulp(&rv); if (!dval(&rv)) { - if (bc.nd >nd) { - bc.uflchk = 1; + if (bc.nd >nd) break; - } goto undfl; } } @@ -1801,10 +1790,8 @@ aadj = aadj1 = 1.; else if (word1(&rv) || word0(&rv) & Bndry_mask) { if (word1(&rv) == Tiny1 && !word0(&rv)) { - if (bc.nd >nd) { - bc.uflchk = 1; + if (bc.nd >nd) break; - } goto undfl; } aadj = 1.; From python-checkins at python.org Sun Jan 10 18:35:05 2010 From: python-checkins at python.org (senthil.kumaran) Date: Sun, 10 Jan 2010 17:35:05 -0000 Subject: [Python-checkins] r77411 - python/trunk/Lib/test/test_urllib2.py Message-ID: Author: senthil.kumaran Date: Sun Jan 10 18:35:05 2010 New Revision: 77411 Log: Fixed issue7648 - test_urllib2 fails on Windows if not run from C: Modified: python/trunk/Lib/test/test_urllib2.py Modified: python/trunk/Lib/test/test_urllib2.py ============================================================================== --- python/trunk/Lib/test/test_urllib2.py (original) +++ python/trunk/Lib/test/test_urllib2.py Sun Jan 10 18:35:05 2010 @@ -21,8 +21,7 @@ # XXX Name hacking to get this to work on Windows. fname = os.path.abspath(urllib2.__file__).replace('\\', '/') - if fname[1:2] == ":": - fname = fname[2:] + # And more hacking to get it to work on MacOS. This assumes # urllib.pathname2url works, unfortunately... if os.name == 'mac': @@ -32,7 +31,11 @@ fname = os.expand(fname) fname = fname.translate(string.maketrans("/.", "./")) - file_url = "file://%s" % fname + if os.name == 'nt': + file_url = "file:///%s" % fname + else: + file_url = "file://%s" % fname + f = urllib2.urlopen(file_url) buf = f.read() From python-checkins at python.org Sun Jan 10 18:41:29 2010 From: python-checkins at python.org (r.david.murray) Date: Sun, 10 Jan 2010 17:41:29 -0000 Subject: [Python-checkins] r77412 - in python/trunk/Doc/library: email.generator.rst email.message.rst email.mime.rst Message-ID: Author: r.david.murray Date: Sun Jan 10 18:41:28 2010 New Revision: 77412 Log: Issue #7119: document that a program-generated Message object tree may be mutated when serialized. Modified: python/trunk/Doc/library/email.generator.rst python/trunk/Doc/library/email.message.rst python/trunk/Doc/library/email.mime.rst Modified: python/trunk/Doc/library/email.generator.rst ============================================================================== --- python/trunk/Doc/library/email.generator.rst (original) +++ python/trunk/Doc/library/email.generator.rst Sun Jan 10 18:41:28 2010 @@ -17,7 +17,10 @@ standards-compliant way, should handle MIME and non-MIME email messages just fine, and is designed so that the transformation from flat text, to a message structure via the :class:`~email.parser.Parser` class, and back to flat text, -is idempotent (the input is identical to the output). +is idempotent (the input is identical to the output). On the other hand, using +the Generator on a :class:`~email.message.Message` constructed by program may +result in changes to the :class:`~email.message.Message` object as defaults are +filled in. Here are the public methods of the :class:`Generator` class, imported from the :mod:`email.generator` module: Modified: python/trunk/Doc/library/email.message.rst ============================================================================== --- python/trunk/Doc/library/email.message.rst (original) +++ python/trunk/Doc/library/email.message.rst Sun Jan 10 18:41:28 2010 @@ -40,7 +40,10 @@ Return the entire message flattened as a string. When optional *unixfrom* is ``True``, the envelope header is included in the returned string. - *unixfrom* defaults to ``False``. + *unixfrom* defaults to ``False``. Flattening the message may trigger + changes to the :class:`Message` if defaults need to be filled in to + complete the transformation to a string (for example, MIME boundaries may + be generated or modified). Note that this method is provided as a convenience and may not always format the message the way you want. For example, by default it mangles Modified: python/trunk/Doc/library/email.mime.rst ============================================================================== --- python/trunk/Doc/library/email.mime.rst (original) +++ python/trunk/Doc/library/email.mime.rst Sun Jan 10 18:41:28 2010 @@ -71,7 +71,8 @@ also be added. Optional *boundary* is the multipart boundary string. When ``None`` (the - default), the boundary is calculated when needed. + default), the boundary is calculated when needed (for example, when the + message is serialized). *_subparts* is a sequence of initial subparts for the payload. It must be possible to convert this sequence to a list. You can always attach new subparts From python-checkins at python.org Sun Jan 10 18:42:30 2010 From: python-checkins at python.org (senthil.kumaran) Date: Sun, 10 Jan 2010 17:42:30 -0000 Subject: [Python-checkins] r77413 - in python/branches/release26-maint: Lib/test/test_urllib2.py Message-ID: Author: senthil.kumaran Date: Sun Jan 10 18:42:29 2010 New Revision: 77413 Log: Merged revisions 77411 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77411 | senthil.kumaran | 2010-01-10 23:05:05 +0530 (Sun, 10 Jan 2010) | 2 lines Fixed issue7648 - test_urllib2 fails on Windows if not run from C: ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/test/test_urllib2.py Modified: python/branches/release26-maint/Lib/test/test_urllib2.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_urllib2.py (original) +++ python/branches/release26-maint/Lib/test/test_urllib2.py Sun Jan 10 18:42:29 2010 @@ -21,8 +21,7 @@ # XXX Name hacking to get this to work on Windows. fname = os.path.abspath(urllib2.__file__).replace('\\', '/') - if fname[1:2] == ":": - fname = fname[2:] + # And more hacking to get it to work on MacOS. This assumes # urllib.pathname2url works, unfortunately... if os.name == 'mac': @@ -32,7 +31,11 @@ fname = os.expand(fname) fname = fname.translate(string.maketrans("/.", "./")) - file_url = "file://%s" % fname + if os.name == 'nt': + file_url = "file:///%s" % fname + else: + file_url = "file://%s" % fname + f = urllib2.urlopen(file_url) buf = f.read() From python-checkins at python.org Sun Jan 10 18:45:53 2010 From: python-checkins at python.org (senthil.kumaran) Date: Sun, 10 Jan 2010 17:45:53 -0000 Subject: [Python-checkins] r77414 - in python/branches/py3k: Lib/test/test_urllib2.py Message-ID: Author: senthil.kumaran Date: Sun Jan 10 18:45:52 2010 New Revision: 77414 Log: Merged revisions 77411 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77411 | senthil.kumaran | 2010-01-10 23:05:05 +0530 (Sun, 10 Jan 2010) | 2 lines Fixed issue7648 - test_urllib2 fails on Windows if not run from C: ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_urllib2.py Modified: python/branches/py3k/Lib/test/test_urllib2.py ============================================================================== --- python/branches/py3k/Lib/test/test_urllib2.py (original) +++ python/branches/py3k/Lib/test/test_urllib2.py Sun Jan 10 18:45:52 2010 @@ -21,14 +21,17 @@ # XXX Name hacking to get this to work on Windows. fname = os.path.abspath(urllib.request.__file__).replace('\\', '/') - if fname[1:2] == ":": - fname = fname[2:] + # And more hacking to get it to work on MacOS. This assumes # urllib.pathname2url works, unfortunately... if os.name == 'mac': fname = '/' + fname.replace(':', '/') - file_url = "file://%s" % fname + if os.name == 'nt': + file_url = "file:///%s" % fname + else: + file_url = "file://%s" % fname + f = urllib.request.urlopen(file_url) buf = f.read() From python-checkins at python.org Sun Jan 10 18:48:37 2010 From: python-checkins at python.org (senthil.kumaran) Date: Sun, 10 Jan 2010 17:48:37 -0000 Subject: [Python-checkins] r77415 - in python/branches/release31-maint: Lib/test/test_urllib2.py Message-ID: Author: senthil.kumaran Date: Sun Jan 10 18:48:37 2010 New Revision: 77415 Log: Merged revisions 77414 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77414 | senthil.kumaran | 2010-01-10 23:15:52 +0530 (Sun, 10 Jan 2010) | 9 lines Merged revisions 77411 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77411 | senthil.kumaran | 2010-01-10 23:05:05 +0530 (Sun, 10 Jan 2010) | 2 lines Fixed issue7648 - test_urllib2 fails on Windows if not run from C: ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/test/test_urllib2.py Modified: python/branches/release31-maint/Lib/test/test_urllib2.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_urllib2.py (original) +++ python/branches/release31-maint/Lib/test/test_urllib2.py Sun Jan 10 18:48:37 2010 @@ -21,14 +21,17 @@ # XXX Name hacking to get this to work on Windows. fname = os.path.abspath(urllib.request.__file__).replace('\\', '/') - if fname[1:2] == ":": - fname = fname[2:] + # And more hacking to get it to work on MacOS. This assumes # urllib.pathname2url works, unfortunately... if os.name == 'mac': fname = '/' + fname.replace(':', '/') - file_url = "file://%s" % fname + if os.name == 'nt': + file_url = "file:///%s" % fname + else: + file_url = "file://%s" % fname + f = urllib.request.urlopen(file_url) buf = f.read() From python-checkins at python.org Sun Jan 10 20:02:16 2010 From: python-checkins at python.org (r.david.murray) Date: Sun, 10 Jan 2010 19:02:16 -0000 Subject: [Python-checkins] r77416 - in python/branches/release26-maint: Doc/library/email.generator.rst Doc/library/email.message.rst Doc/library/email.mime.rst Message-ID: Author: r.david.murray Date: Sun Jan 10 20:02:16 2010 New Revision: 77416 Log: Merged revisions 77412 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77412 | r.david.murray | 2010-01-10 12:41:28 -0500 (Sun, 10 Jan 2010) | 3 lines Issue #7119: document that a program-generated Message object tree may be mutated when serialized. ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Doc/library/email.generator.rst python/branches/release26-maint/Doc/library/email.message.rst python/branches/release26-maint/Doc/library/email.mime.rst Modified: python/branches/release26-maint/Doc/library/email.generator.rst ============================================================================== --- python/branches/release26-maint/Doc/library/email.generator.rst (original) +++ python/branches/release26-maint/Doc/library/email.generator.rst Sun Jan 10 20:02:16 2010 @@ -17,7 +17,10 @@ standards-compliant way, should handle MIME and non-MIME email messages just fine, and is designed so that the transformation from flat text, to a message structure via the :class:`~email.parser.Parser` class, and back to flat text, -is idempotent (the input is identical to the output). +is idempotent (the input is identical to the output). On the other hand, using +the Generator on a :class:`~email.message.Message` constructed by program may +result in changes to the :class:`~email.message.Message` object as defaults are +filled in. Here are the public methods of the :class:`Generator` class, imported from the :mod:`email.generator` module: Modified: python/branches/release26-maint/Doc/library/email.message.rst ============================================================================== --- python/branches/release26-maint/Doc/library/email.message.rst (original) +++ python/branches/release26-maint/Doc/library/email.message.rst Sun Jan 10 20:02:16 2010 @@ -40,7 +40,10 @@ Return the entire message flattened as a string. When optional *unixfrom* is ``True``, the envelope header is included in the returned string. - *unixfrom* defaults to ``False``. + *unixfrom* defaults to ``False``. Flattening the message may trigger + changes to the :class:`Message` if defaults need to be filled in to + complete the transformation to a string (for example, MIME boundaries may + be generated or modified). Note that this method is provided as a convenience and may not always format the message the way you want. For example, by default it mangles Modified: python/branches/release26-maint/Doc/library/email.mime.rst ============================================================================== --- python/branches/release26-maint/Doc/library/email.mime.rst (original) +++ python/branches/release26-maint/Doc/library/email.mime.rst Sun Jan 10 20:02:16 2010 @@ -71,7 +71,8 @@ also be added. Optional *boundary* is the multipart boundary string. When ``None`` (the - default), the boundary is calculated when needed. + default), the boundary is calculated when needed (for example, when the + message is serialized). *_subparts* is a sequence of initial subparts for the payload. It must be possible to convert this sequence to a list. You can always attach new subparts From python-checkins at python.org Sun Jan 10 20:18:28 2010 From: python-checkins at python.org (r.david.murray) Date: Sun, 10 Jan 2010 19:18:28 -0000 Subject: [Python-checkins] r77417 - in python/branches/py3k: Doc/library/email.generator.rst Doc/library/email.message.rst Doc/library/email.mime.rst Message-ID: Author: r.david.murray Date: Sun Jan 10 20:18:27 2010 New Revision: 77417 Log: Merged revisions 77412 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77412 | r.david.murray | 2010-01-10 12:41:28 -0500 (Sun, 10 Jan 2010) | 3 lines Issue #7119: document that a program-generated Message object tree may be mutated when serialized. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/library/email.generator.rst python/branches/py3k/Doc/library/email.message.rst python/branches/py3k/Doc/library/email.mime.rst Modified: python/branches/py3k/Doc/library/email.generator.rst ============================================================================== --- python/branches/py3k/Doc/library/email.generator.rst (original) +++ python/branches/py3k/Doc/library/email.generator.rst Sun Jan 10 20:18:27 2010 @@ -17,7 +17,10 @@ standards-compliant way, should handle MIME and non-MIME email messages just fine, and is designed so that the transformation from flat text, to a message structure via the :class:`~email.parser.Parser` class, and back to flat text, -is idempotent (the input is identical to the output). +is idempotent (the input is identical to the output). On the other hand, using +the Generator on a :class:`~email.message.Message` constructed by program may +result in changes to the :class:`~email.message.Message` object as defaults are +filled in. Here are the public methods of the :class:`Generator` class, imported from the :mod:`email.generator` module: Modified: python/branches/py3k/Doc/library/email.message.rst ============================================================================== --- python/branches/py3k/Doc/library/email.message.rst (original) +++ python/branches/py3k/Doc/library/email.message.rst Sun Jan 10 20:18:27 2010 @@ -40,7 +40,10 @@ Return the entire message flattened as a string. When optional *unixfrom* is ``True``, the envelope header is included in the returned string. - *unixfrom* defaults to ``False``. + *unixfrom* defaults to ``False``. Flattening the message may trigger + changes to the :class:`Message` if defaults need to be filled in to + complete the transformation to a string (for example, MIME boundaries may + be generated or modified). Note that this method is provided as a convenience and may not always format the message the way you want. For example, by default it mangles Modified: python/branches/py3k/Doc/library/email.mime.rst ============================================================================== --- python/branches/py3k/Doc/library/email.mime.rst (original) +++ python/branches/py3k/Doc/library/email.mime.rst Sun Jan 10 20:18:27 2010 @@ -69,7 +69,8 @@ also be added. Optional *boundary* is the multipart boundary string. When ``None`` (the - default), the boundary is calculated when needed. + default), the boundary is calculated when needed (for example, when the + message is serialized). *_subparts* is a sequence of initial subparts for the payload. It must be possible to convert this sequence to a list. You can always attach new subparts From python-checkins at python.org Sun Jan 10 20:21:20 2010 From: python-checkins at python.org (r.david.murray) Date: Sun, 10 Jan 2010 19:21:20 -0000 Subject: [Python-checkins] r77418 - in python/branches/release31-maint: Doc/library/email.generator.rst Doc/library/email.message.rst Doc/library/email.mime.rst Message-ID: Author: r.david.murray Date: Sun Jan 10 20:21:20 2010 New Revision: 77418 Log: Merged revisions 77417 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77417 | r.david.murray | 2010-01-10 14:18:27 -0500 (Sun, 10 Jan 2010) | 10 lines Merged revisions 77412 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77412 | r.david.murray | 2010-01-10 12:41:28 -0500 (Sun, 10 Jan 2010) | 3 lines Issue #7119: document that a program-generated Message object tree may be mutated when serialized. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Doc/library/email.generator.rst python/branches/release31-maint/Doc/library/email.message.rst python/branches/release31-maint/Doc/library/email.mime.rst Modified: python/branches/release31-maint/Doc/library/email.generator.rst ============================================================================== --- python/branches/release31-maint/Doc/library/email.generator.rst (original) +++ python/branches/release31-maint/Doc/library/email.generator.rst Sun Jan 10 20:21:20 2010 @@ -17,7 +17,10 @@ standards-compliant way, should handle MIME and non-MIME email messages just fine, and is designed so that the transformation from flat text, to a message structure via the :class:`~email.parser.Parser` class, and back to flat text, -is idempotent (the input is identical to the output). +is idempotent (the input is identical to the output). On the other hand, using +the Generator on a :class:`~email.message.Message` constructed by program may +result in changes to the :class:`~email.message.Message` object as defaults are +filled in. Here are the public methods of the :class:`Generator` class, imported from the :mod:`email.generator` module: Modified: python/branches/release31-maint/Doc/library/email.message.rst ============================================================================== --- python/branches/release31-maint/Doc/library/email.message.rst (original) +++ python/branches/release31-maint/Doc/library/email.message.rst Sun Jan 10 20:21:20 2010 @@ -40,7 +40,10 @@ Return the entire message flattened as a string. When optional *unixfrom* is ``True``, the envelope header is included in the returned string. - *unixfrom* defaults to ``False``. + *unixfrom* defaults to ``False``. Flattening the message may trigger + changes to the :class:`Message` if defaults need to be filled in to + complete the transformation to a string (for example, MIME boundaries may + be generated or modified). Note that this method is provided as a convenience and may not always format the message the way you want. For example, by default it mangles Modified: python/branches/release31-maint/Doc/library/email.mime.rst ============================================================================== --- python/branches/release31-maint/Doc/library/email.mime.rst (original) +++ python/branches/release31-maint/Doc/library/email.mime.rst Sun Jan 10 20:21:20 2010 @@ -69,7 +69,8 @@ also be added. Optional *boundary* is the multipart boundary string. When ``None`` (the - default), the boundary is calculated when needed. + default), the boundary is calculated when needed (for example, when the + message is serialized). *_subparts* is a sequence of initial subparts for the payload. It must be possible to convert this sequence to a list. You can always attach new subparts From python-checkins at python.org Sun Jan 10 21:39:49 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sun, 10 Jan 2010 20:39:49 -0000 Subject: [Python-checkins] r77419 - sandbox/trunk/2to3/lib2to3/tests/test_parser.py Message-ID: Author: benjamin.peterson Date: Sun Jan 10 21:39:48 2010 New Revision: 77419 Log: enclose path in quotes to handle paths with spaces correctly #7666 Modified: sandbox/trunk/2to3/lib2to3/tests/test_parser.py Modified: sandbox/trunk/2to3/lib2to3/tests/test_parser.py ============================================================================== --- sandbox/trunk/2to3/lib2to3/tests/test_parser.py (original) +++ sandbox/trunk/2to3/lib2to3/tests/test_parser.py Sun Jan 10 21:39:48 2010 @@ -209,6 +209,6 @@ finally: f.close() try: - return os.system("diff -u %s @" % fn) + return os.system("diff -u %r @" % fn) finally: os.remove("@") From python-checkins at python.org Sun Jan 10 21:42:03 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sun, 10 Jan 2010 20:42:03 -0000 Subject: [Python-checkins] r77420 - python/trunk/Lib/test/test_popen.py Message-ID: Author: benjamin.peterson Date: Sun Jan 10 21:42:03 2010 New Revision: 77420 Log: fix test_popen when the path to python has spaces #7671 Modified: python/trunk/Lib/test/test_popen.py Modified: python/trunk/Lib/test/test_popen.py ============================================================================== --- python/trunk/Lib/test/test_popen.py (original) +++ python/trunk/Lib/test/test_popen.py Sun Jan 10 21:42:03 2010 @@ -14,12 +14,10 @@ # This results in Python being spawned and printing the sys.argv list. # We can then eval() the result of this, and see what each argv was. python = sys.executable -if ' ' in python: - python = '"' + python + '"' # quote embedded space for cmdline class PopenTest(unittest.TestCase): def _do_test_commandline(self, cmdline, expected): - cmd = '%s -c "import sys;print sys.argv" %s' % (python, cmdline) + cmd = '%r -c "import sys;print sys.argv" %s' % (python, cmdline) data = os.popen(cmd).read() got = eval(data)[1:] # strip off argv[0] self.assertEqual(got, expected) From solipsis at pitrou.net Mon Jan 11 00:50:04 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Mon, 11 Jan 2010 00:50:04 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77417): sum=0 Message-ID: <20100110235004.7AA6217881@ns6635.ovh.net> py3k results for svn r77417 (hg cset 4e4852e133fa) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogJ6KSia', '-x', 'test_httpservers'] From python-checkins at python.org Mon Jan 11 18:15:13 2010 From: python-checkins at python.org (mark.dickinson) Date: Mon, 11 Jan 2010 17:15:13 -0000 Subject: [Python-checkins] r77421 - python/trunk/Python/dtoa.c Message-ID: Author: mark.dickinson Date: Mon Jan 11 18:15:13 2010 New Revision: 77421 Log: Change a variable type to avoid signed overflow; replace repeated '19999' constant by a define. Modified: python/trunk/Python/dtoa.c Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Mon Jan 11 18:15:13 2010 @@ -200,6 +200,13 @@ #define STRTOD_DIGLIM 40 #endif +/* maximum permitted exponent value for strtod; exponents larger than + MAX_ABS_EXP in absolute value get truncated to +-MAX_ABS_EXP. MAX_ABS_EXP + should fit into an int. */ +#ifndef MAX_ABS_EXP +#define MAX_ABS_EXP 19999U +#endif + /* The following definition of Storeinc is appropriate for MIPS processors. * An alternative that might be better on some machines is * #define Storeinc(a,b,c) (*a++ = b << 16 | c & 0xffff) @@ -1305,9 +1312,8 @@ int esign, i, j, k, nd, nd0, nf, nz, nz0, sign; const char *s, *s0, *s1; double aadj, aadj1; - Long L; U aadj2, adj, rv, rv0; - ULong y, z; + ULong y, z, L; BCinfo bc; Bigint *bb, *bb1, *bd, *bd0, *bs, *delta; @@ -1406,11 +1412,11 @@ s1 = s; while((c = *++s) >= '0' && c <= '9') L = 10*L + c - '0'; - if (s - s1 > 8 || L > 19999) + if (s - s1 > 8 || L > MAX_ABS_EXP) /* Avoid confusion from exponents * so large that e might overflow. */ - e = 19999; /* safe for 16 bit ints */ + e = (int)MAX_ABS_EXP; /* safe for 16 bit ints */ else e = (int)L; if (esign) From python-checkins at python.org Mon Jan 11 23:36:12 2010 From: python-checkins at python.org (alexandre.vassalotti) Date: Mon, 11 Jan 2010 22:36:12 -0000 Subject: [Python-checkins] r77422 - in python/trunk: Doc/reference/expressions.rst Grammar/Grammar Include/Python-ast.h Include/graminit.h Include/opcode.h Include/symtable.h Lib/compiler/ast.py Lib/compiler/pyassem.py Lib/compiler/pycodegen.py Lib/compiler/transformer.py Lib/opcode.py Lib/symbol.py Lib/test/test_compiler.py Lib/test/test_dictcomps.py Lib/test/test_grammar.py Lib/test/test_parser.py Lib/test/test_setcomps.py Modules/parsermodule.c Parser/Python.asdl Python/Python-ast.c Python/ast.c Python/ceval.c Python/compile.c Python/graminit.c Python/import.c Python/symtable.c Message-ID: Author: alexandre.vassalotti Date: Mon Jan 11 23:36:12 2010 New Revision: 77422 Log: Issue #2333: Backport set and dict comprehensions syntax. Added: python/trunk/Lib/test/test_dictcomps.py python/trunk/Lib/test/test_setcomps.py Modified: python/trunk/Doc/reference/expressions.rst python/trunk/Grammar/Grammar python/trunk/Include/Python-ast.h python/trunk/Include/graminit.h python/trunk/Include/opcode.h python/trunk/Include/symtable.h python/trunk/Lib/compiler/ast.py python/trunk/Lib/compiler/pyassem.py python/trunk/Lib/compiler/pycodegen.py python/trunk/Lib/compiler/transformer.py python/trunk/Lib/opcode.py python/trunk/Lib/symbol.py python/trunk/Lib/test/test_compiler.py python/trunk/Lib/test/test_grammar.py python/trunk/Lib/test/test_parser.py python/trunk/Modules/parsermodule.c python/trunk/Parser/Python.asdl python/trunk/Python/Python-ast.c python/trunk/Python/ast.c python/trunk/Python/ceval.c python/trunk/Python/compile.c python/trunk/Python/graminit.c python/trunk/Python/import.c python/trunk/Python/symtable.c Modified: python/trunk/Doc/reference/expressions.rst ============================================================================== --- python/trunk/Doc/reference/expressions.rst (original) +++ python/trunk/Doc/reference/expressions.rst Mon Jan 11 23:36:12 2010 @@ -205,74 +205,100 @@ list element each time the innermost block is reached [#]_. +.. _comprehensions: + +Displays for sets and dictionaries +---------------------------------- + +For constructing a set or a dictionary Python provides special syntax +called "displays", each of them in two flavors: + +* either the container contents are listed explicitly, or + +* they are computed via a set of looping and filtering instructions, called a + :dfn:`comprehension`. + +Common syntax elements for comprehensions are: + +.. productionlist:: + comprehension: `expression` `comp_for` + comp_for: "for" `target_list` "in" `or_test` [`comp_iter`] + comp_iter: `comp_for` | `comp_if` + comp_if: "if" `expression_nocond` [`comp_iter`] + +The comprehension consists of a single expression followed by at least one +:keyword:`for` clause and zero or more :keyword:`for` or :keyword:`if` clauses. +In this case, the elements of the new container are those that would be produced +by considering each of the :keyword:`for` or :keyword:`if` clauses a block, +nesting from left to right, and evaluating the expression to produce an element +each time the innermost block is reached. + +Note that the comprehension is executed in a separate scope, so names assigned +to in the target list don't "leak" in the enclosing scope. + + .. _genexpr: Generator expressions --------------------- .. index:: pair: generator; expression + object: generator A generator expression is a compact generator notation in parentheses: .. productionlist:: - generator_expression: "(" `expression` `genexpr_for` ")" - genexpr_for: "for" `target_list` "in" `or_test` [`genexpr_iter`] - genexpr_iter: `genexpr_for` | `genexpr_if` - genexpr_if: "if" `old_expression` [`genexpr_iter`] - -.. index:: object: generator + generator_expression: "(" `expression` `comp_for` ")" -A generator expression yields a new generator object. It consists of a single -expression followed by at least one :keyword:`for` clause and zero or more -:keyword:`for` or :keyword:`if` clauses. The iterating values of the new -generator are those that would be produced by considering each of the -:keyword:`for` or :keyword:`if` clauses a block, nesting from left to right, and -evaluating the expression to yield a value that is reached the innermost block -for each iteration. - -Variables used in the generator expression are evaluated lazily in a separate -scope when the :meth:`next` method is called for the generator object (in the -same fashion as for normal generators). However, the :keyword:`in` expression -of the leftmost :keyword:`for` clause is immediately evaluated in the current -scope so that an error produced by it can be seen before any other possible +A generator expression yields a new generator object. Its syntax is the same as +for comprehensions, except that it is enclosed in parentheses instead of +brackets or curly braces. + +Variables used in the generator expression are evaluated lazily when the +:meth:`__next__` method is called for generator object (in the same fashion as +normal generators). However, the leftmost :keyword:`for` clause is immediately +evaluated, so that an error produced by it can be seen before any other possible error in the code that handles the generator expression. Subsequent -:keyword:`for` and :keyword:`if` clauses cannot be evaluated immediately since -they may depend on the previous :keyword:`for` loop. For example: -``(x*y for x in range(10) for y in bar(x))``. +:keyword:`for` clauses cannot be evaluated immediately since they may depend on +the previous :keyword:`for` loop. For example: ``(x*y for x in range(10) for y +in bar(x))``. -The parentheses can be omitted on calls with only one argument. See section +The parentheses can be omitted on calls with only one argument. See section :ref:`calls` for the detail. - .. _dict: Dictionary displays ------------------- .. index:: pair: dictionary; display - -.. index:: - single: key - single: datum - single: key/datum pair + key, datum, key/datum pair + object: dictionary A dictionary display is a possibly empty series of key/datum pairs enclosed in curly braces: .. productionlist:: - dict_display: "{" [`key_datum_list`] "}" + dict_display: "{" [`key_datum_list` | `dict_comprehension`] "}" key_datum_list: `key_datum` ("," `key_datum`)* [","] key_datum: `expression` ":" `expression` - -.. index:: object: dictionary + dict_comprehension: `expression` ":" `expression` `comp_for` A dictionary display yields a new dictionary object. -The key/datum pairs are evaluated from left to right to define the entries of -the dictionary: each key object is used as a key into the dictionary to store -the corresponding datum. +If a comma-separated sequence of key/datum pairs is given, they are evaluated +from left to right to define the entries of the dictionary: each key object is +used as a key into the dictionary to store the corresponding datum. This means +that you can specify the same key multiple times in the key/datum list, and the +final dictionary's value for that key will be the last one given. + +A dict comprehension, in contrast to list and set comprehensions, needs two +expressions separated with a colon followed by the usual "for" and "if" clauses. +When the comprehension is run, the resulting key and value elements are inserted +in the new dictionary in the order they are produced. .. index:: pair: immutable; object + hashable Restrictions on the types of the key values are listed earlier in section :ref:`types`. (To summarize, the key type should be :term:`hashable`, which excludes Modified: python/trunk/Grammar/Grammar ============================================================================== --- python/trunk/Grammar/Grammar (original) +++ python/trunk/Grammar/Grammar Mon Jan 11 23:36:12 2010 @@ -100,13 +100,13 @@ term: factor (('*'|'/'|'%'|'//') factor)* factor: ('+'|'-'|'~') factor | power power: atom trailer* ['**' factor] -atom: ('(' [yield_expr|testlist_gexp] ')' | +atom: ('(' [yield_expr|testlist_comp] ')' | '[' [listmaker] ']' | '{' [dictorsetmaker] '}' | '`' testlist1 '`' | NAME | NUMBER | STRING+) listmaker: test ( list_for | (',' test)* [','] ) -testlist_gexp: test ( gen_for | (',' test)* [','] ) +testlist_comp: test ( comp_for | (',' test)* [','] ) lambdef: 'lambda' [varargslist] ':' test trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME subscriptlist: subscript (',' subscript)* [','] @@ -115,8 +115,8 @@ exprlist: expr (',' expr)* [','] testlist: test (',' test)* [','] dictmaker: test ':' test (',' test ':' test)* [','] -dictorsetmaker: ( (test ':' test (',' test ':' test)* [',']) | - (test (',' test)* [',']) ) +dictorsetmaker: ( (test ':' test (comp_for | (',' test ':' test)* [','])) | + (test (comp_for | (',' test)* [','])) ) classdef: 'class' NAME ['(' [testlist] ')'] ':' suite @@ -125,15 +125,15 @@ |'**' test) # The reason that keywords are test nodes instead of NAME is that using NAME # results in an ambiguity. ast.c makes sure it's a NAME. -argument: test [gen_for] | test '=' test +argument: test [comp_for] | test '=' test list_iter: list_for | list_if list_for: 'for' exprlist 'in' testlist_safe [list_iter] list_if: 'if' old_test [list_iter] -gen_iter: gen_for | gen_if -gen_for: 'for' exprlist 'in' or_test [gen_iter] -gen_if: 'if' old_test [gen_iter] +comp_iter: comp_for | comp_if +comp_for: 'for' exprlist 'in' or_test [comp_iter] +comp_if: 'if' old_test [comp_iter] testlist1: test (',' test)* Modified: python/trunk/Include/Python-ast.h ============================================================================== --- python/trunk/Include/Python-ast.h (original) +++ python/trunk/Include/Python-ast.h Mon Jan 11 23:36:12 2010 @@ -186,10 +186,10 @@ enum _expr_kind {BoolOp_kind=1, BinOp_kind=2, UnaryOp_kind=3, Lambda_kind=4, IfExp_kind=5, Dict_kind=6, Set_kind=7, ListComp_kind=8, - GeneratorExp_kind=9, Yield_kind=10, Compare_kind=11, - Call_kind=12, Repr_kind=13, Num_kind=14, Str_kind=15, - Attribute_kind=16, Subscript_kind=17, Name_kind=18, - List_kind=19, Tuple_kind=20}; + SetComp_kind=9, DictComp_kind=10, GeneratorExp_kind=11, + Yield_kind=12, Compare_kind=13, Call_kind=14, Repr_kind=15, + Num_kind=16, Str_kind=17, Attribute_kind=18, + Subscript_kind=19, Name_kind=20, List_kind=21, Tuple_kind=22}; struct _expr { enum _expr_kind kind; union { @@ -237,6 +237,17 @@ struct { expr_ty elt; asdl_seq *generators; + } SetComp; + + struct { + expr_ty key; + expr_ty value; + asdl_seq *generators; + } DictComp; + + struct { + expr_ty elt; + asdl_seq *generators; } GeneratorExp; struct { @@ -458,6 +469,12 @@ #define ListComp(a0, a1, a2, a3, a4) _Py_ListComp(a0, a1, a2, a3, a4) expr_ty _Py_ListComp(expr_ty elt, asdl_seq * generators, int lineno, int col_offset, PyArena *arena); +#define SetComp(a0, a1, a2, a3, a4) _Py_SetComp(a0, a1, a2, a3, a4) +expr_ty _Py_SetComp(expr_ty elt, asdl_seq * generators, int lineno, int + col_offset, PyArena *arena); +#define DictComp(a0, a1, a2, a3, a4, a5) _Py_DictComp(a0, a1, a2, a3, a4, a5) +expr_ty _Py_DictComp(expr_ty key, expr_ty value, asdl_seq * generators, int + lineno, int col_offset, PyArena *arena); #define GeneratorExp(a0, a1, a2, a3, a4) _Py_GeneratorExp(a0, a1, a2, a3, a4) expr_ty _Py_GeneratorExp(expr_ty elt, asdl_seq * generators, int lineno, int col_offset, PyArena *arena); Modified: python/trunk/Include/graminit.h ============================================================================== --- python/trunk/Include/graminit.h (original) +++ python/trunk/Include/graminit.h Mon Jan 11 23:36:12 2010 @@ -64,7 +64,7 @@ #define power 317 #define atom 318 #define listmaker 319 -#define testlist_gexp 320 +#define testlist_comp 320 #define lambdef 321 #define trailer 322 #define subscriptlist 323 @@ -80,9 +80,9 @@ #define list_iter 333 #define list_for 334 #define list_if 335 -#define gen_iter 336 -#define gen_for 337 -#define gen_if 338 +#define comp_iter 336 +#define comp_for 337 +#define comp_if 338 #define testlist1 339 #define encoding_decl 340 #define yield_expr 341 Modified: python/trunk/Include/opcode.h ============================================================================== --- python/trunk/Include/opcode.h (original) +++ python/trunk/Include/opcode.h Mon Jan 11 23:36:12 2010 @@ -147,6 +147,9 @@ /* Support for opargs more than 16 bits long */ #define EXTENDED_ARG 145 +#define SET_ADD 146 +#define MAP_ADD 147 + enum cmp_op {PyCmp_LT=Py_LT, PyCmp_LE=Py_LE, PyCmp_EQ=Py_EQ, PyCmp_NE=Py_NE, PyCmp_GT=Py_GT, PyCmp_GE=Py_GE, PyCmp_IN, PyCmp_NOT_IN, PyCmp_IS, PyCmp_IS_NOT, PyCmp_EXC_MATCH, PyCmp_BAD}; Modified: python/trunk/Include/symtable.h ============================================================================== --- python/trunk/Include/symtable.h (original) +++ python/trunk/Include/symtable.h Mon Jan 11 23:36:12 2010 @@ -42,6 +42,7 @@ an argument */ int ste_lineno; /* first line of block */ int ste_opt_lineno; /* lineno of last exec or import * */ + int ste_tmpname; /* counter for listcomp temp vars */ struct symtable *ste_table; } PySTEntryObject; Modified: python/trunk/Lib/compiler/ast.py ============================================================================== --- python/trunk/Lib/compiler/ast.py (original) +++ python/trunk/Lib/compiler/ast.py Mon Jan 11 23:36:12 2010 @@ -890,6 +890,51 @@ def __repr__(self): return "ListCompIf(%s)" % (repr(self.test),) +class SetComp(Node): + def __init__(self, expr, quals, lineno=None): + self.expr = expr + self.quals = quals + self.lineno = lineno + + def getChildren(self): + children = [] + children.append(self.expr) + children.extend(flatten(self.quals)) + return tuple(children) + + def getChildNodes(self): + nodelist = [] + nodelist.append(self.expr) + nodelist.extend(flatten_nodes(self.quals)) + return tuple(nodelist) + + def __repr__(self): + return "SetComp(%s, %s)" % (repr(self.expr), repr(self.quals)) + +class DictComp(Node): + def __init__(self, key, value, quals, lineno=None): + self.key = key + self.value = value + self.quals = quals + self.lineno = lineno + + def getChildren(self): + children = [] + children.append(self.key) + children.append(self.value) + children.extend(flatten(self.quals)) + return tuple(children) + + def getChildNodes(self): + nodelist = [] + nodelist.append(self.key) + nodelist.append(self.value) + nodelist.extend(flatten_nodes(self.quals)) + return tuple(nodelist) + + def __repr__(self): + return "DictComp(%s, %s, %s)" % (repr(self.key), repr(self.value), repr(self.quals)) + class Mod(Node): def __init__(self, leftright, lineno=None): self.left = leftright[0] Modified: python/trunk/Lib/compiler/pyassem.py ============================================================================== --- python/trunk/Lib/compiler/pyassem.py (original) +++ python/trunk/Lib/compiler/pyassem.py Mon Jan 11 23:36:12 2010 @@ -685,7 +685,9 @@ effect = { 'POP_TOP': -1, 'DUP_TOP': 1, - 'LIST_APPEND': -2, + 'LIST_APPEND': -1, + 'SET_ADD': -1, + 'MAP_ADD': -2, 'SLICE+1': -1, 'SLICE+2': -1, 'SLICE+3': -2, Modified: python/trunk/Lib/compiler/pycodegen.py ============================================================================== --- python/trunk/Lib/compiler/pycodegen.py (original) +++ python/trunk/Lib/compiler/pycodegen.py Mon Jan 11 23:36:12 2010 @@ -589,6 +589,55 @@ self.emit('JUMP_ABSOLUTE', start) self.startBlock(anchor) + def visitSetComp(self, node): + self.set_lineno(node) + # setup list + self.emit('BUILD_SET', 0) + + stack = [] + for i, for_ in zip(range(len(node.quals)), node.quals): + start, anchor = self.visit(for_) + cont = None + for if_ in for_.ifs: + if cont is None: + cont = self.newBlock() + self.visit(if_, cont) + stack.insert(0, (start, cont, anchor)) + + self.visit(node.expr) + self.emit('SET_ADD', len(node.quals) + 1) + + for start, cont, anchor in stack: + if cont: + self.nextBlock(cont) + self.emit('JUMP_ABSOLUTE', start) + self.startBlock(anchor) + + def visitDictComp(self, node): + self.set_lineno(node) + # setup list + self.emit('BUILD_MAP', 0) + + stack = [] + for i, for_ in zip(range(len(node.quals)), node.quals): + start, anchor = self.visit(for_) + cont = None + for if_ in for_.ifs: + if cont is None: + cont = self.newBlock() + self.visit(if_, cont) + stack.insert(0, (start, cont, anchor)) + + self.visit(node.value) + self.visit(node.key) + self.emit('MAP_ADD', len(node.quals) + 1) + + for start, cont, anchor in stack: + if cont: + self.nextBlock(cont) + self.emit('JUMP_ABSOLUTE', start) + self.startBlock(anchor) + def visitListCompFor(self, node): start = self.newBlock() anchor = self.newBlock() Modified: python/trunk/Lib/compiler/transformer.py ============================================================================== --- python/trunk/Lib/compiler/transformer.py (original) +++ python/trunk/Lib/compiler/transformer.py Mon Jan 11 23:36:12 2010 @@ -581,8 +581,10 @@ testlist1 = testlist exprlist = testlist - def testlist_gexp(self, nodelist): - if len(nodelist) == 2 and nodelist[1][0] == symbol.gen_for: + def testlist_comp(self, nodelist): + # test ( comp_for | (',' test)* [','] ) + assert nodelist[0][0] == symbol.test + if len(nodelist) == 2 and nodelist[1][0] == symbol.comp_for: test = self.com_node(nodelist[0]) return self.com_generator_expression(test, nodelist[1]) return self.testlist(nodelist) @@ -1001,7 +1003,7 @@ # loop to avoid trivial recursion while 1: t = node[0] - if t in (symbol.exprlist, symbol.testlist, symbol.testlist_safe, symbol.testlist_gexp): + if t in (symbol.exprlist, symbol.testlist, symbol.testlist_safe, symbol.testlist_comp): if len(node) > 2: return self.com_assign_tuple(node, assigning) node = node[1] @@ -1099,116 +1101,138 @@ else: stmts.append(result) - if hasattr(symbol, 'list_for'): - def com_list_constructor(self, nodelist): - # listmaker: test ( list_for | (',' test)* [','] ) - values = [] - for i in range(1, len(nodelist)): - if nodelist[i][0] == symbol.list_for: - assert len(nodelist[i:]) == 1 - return self.com_list_comprehension(values[0], - nodelist[i]) - elif nodelist[i][0] == token.COMMA: - continue - values.append(self.com_node(nodelist[i])) - return List(values, lineno=values[0].lineno) - - def com_list_comprehension(self, expr, node): - # list_iter: list_for | list_if - # list_for: 'for' exprlist 'in' testlist [list_iter] - # list_if: 'if' test [list_iter] - - # XXX should raise SyntaxError for assignment - - lineno = node[1][2] - fors = [] - while node: - t = node[1][1] - if t == 'for': - assignNode = self.com_assign(node[2], OP_ASSIGN) - listNode = self.com_node(node[4]) - newfor = ListCompFor(assignNode, listNode, []) - newfor.lineno = node[1][2] - fors.append(newfor) - if len(node) == 5: - node = None - else: - node = self.com_list_iter(node[5]) - elif t == 'if': - test = self.com_node(node[2]) - newif = ListCompIf(test, lineno=node[1][2]) - newfor.ifs.append(newif) - if len(node) == 3: - node = None - else: - node = self.com_list_iter(node[3]) + def com_list_constructor(self, nodelist): + # listmaker: test ( list_for | (',' test)* [','] ) + values = [] + for i in range(1, len(nodelist)): + if nodelist[i][0] == symbol.list_for: + assert len(nodelist[i:]) == 1 + return self.com_list_comprehension(values[0], + nodelist[i]) + elif nodelist[i][0] == token.COMMA: + continue + values.append(self.com_node(nodelist[i])) + return List(values, lineno=values[0].lineno) + + def com_list_comprehension(self, expr, node): + return self.com_comprehension(expr, None, node, 'list') + + def com_comprehension(self, expr1, expr2, node, type): + # list_iter: list_for | list_if + # list_for: 'for' exprlist 'in' testlist [list_iter] + # list_if: 'if' test [list_iter] + + # XXX should raise SyntaxError for assignment + # XXX(avassalotti) Set and dict comprehensions should have generator + # semantics. In other words, they shouldn't leak + # variables outside of the comprehension's scope. + + lineno = node[1][2] + fors = [] + while node: + t = node[1][1] + if t == 'for': + assignNode = self.com_assign(node[2], OP_ASSIGN) + compNode = self.com_node(node[4]) + newfor = ListCompFor(assignNode, compNode, []) + newfor.lineno = node[1][2] + fors.append(newfor) + if len(node) == 5: + node = None + elif type == 'list': + node = self.com_list_iter(node[5]) else: - raise SyntaxError, \ - ("unexpected list comprehension element: %s %d" - % (node, lineno)) - return ListComp(expr, fors, lineno=lineno) - - def com_list_iter(self, node): - assert node[0] == symbol.list_iter - return node[1] - else: - def com_list_constructor(self, nodelist): - values = [] - for i in range(1, len(nodelist), 2): - values.append(self.com_node(nodelist[i])) - return List(values, lineno=values[0].lineno) - - if hasattr(symbol, 'gen_for'): - def com_generator_expression(self, expr, node): - # gen_iter: gen_for | gen_if - # gen_for: 'for' exprlist 'in' test [gen_iter] - # gen_if: 'if' test [gen_iter] - - lineno = node[1][2] - fors = [] - while node: - t = node[1][1] - if t == 'for': - assignNode = self.com_assign(node[2], OP_ASSIGN) - genNode = self.com_node(node[4]) - newfor = GenExprFor(assignNode, genNode, [], - lineno=node[1][2]) - fors.append(newfor) - if (len(node)) == 5: - node = None - else: - node = self.com_gen_iter(node[5]) - elif t == 'if': - test = self.com_node(node[2]) - newif = GenExprIf(test, lineno=node[1][2]) - newfor.ifs.append(newif) - if len(node) == 3: - node = None - else: - node = self.com_gen_iter(node[3]) + node = self.com_comp_iter(node[5]) + elif t == 'if': + test = self.com_node(node[2]) + newif = ListCompIf(test, lineno=node[1][2]) + newfor.ifs.append(newif) + if len(node) == 3: + node = None + elif type == 'list': + node = self.com_list_iter(node[3]) + else: + node = self.com_comp_iter(node[3]) + else: + raise SyntaxError, \ + ("unexpected comprehension element: %s %d" + % (node, lineno)) + if type == 'list': + return ListComp(expr1, fors, lineno=lineno) + elif type == 'set': + return SetComp(expr1, fors, lineno=lineno) + elif type == 'dict': + return DictComp(expr1, expr2, fors, lineno=lineno) + else: + raise ValueError("unexpected comprehension type: " + repr(type)) + + def com_list_iter(self, node): + assert node[0] == symbol.list_iter + return node[1] + + def com_comp_iter(self, node): + assert node[0] == symbol.comp_iter + return node[1] + + def com_generator_expression(self, expr, node): + # comp_iter: comp_for | comp_if + # comp_for: 'for' exprlist 'in' test [comp_iter] + # comp_if: 'if' test [comp_iter] + + lineno = node[1][2] + fors = [] + while node: + t = node[1][1] + if t == 'for': + assignNode = self.com_assign(node[2], OP_ASSIGN) + genNode = self.com_node(node[4]) + newfor = GenExprFor(assignNode, genNode, [], + lineno=node[1][2]) + fors.append(newfor) + if (len(node)) == 5: + node = None else: - raise SyntaxError, \ - ("unexpected generator expression element: %s %d" - % (node, lineno)) - fors[0].is_outmost = True - return GenExpr(GenExprInner(expr, fors), lineno=lineno) - - def com_gen_iter(self, node): - assert node[0] == symbol.gen_iter - return node[1] + node = self.com_comp_iter(node[5]) + elif t == 'if': + test = self.com_node(node[2]) + newif = GenExprIf(test, lineno=node[1][2]) + newfor.ifs.append(newif) + if len(node) == 3: + node = None + else: + node = self.com_comp_iter(node[3]) + else: + raise SyntaxError, \ + ("unexpected generator expression element: %s %d" + % (node, lineno)) + fors[0].is_outmost = True + return GenExpr(GenExprInner(expr, fors), lineno=lineno) def com_dictorsetmaker(self, nodelist): - # dictorsetmaker: ( (test ':' test (',' test ':' test)* [',']) | - # (test (',' test)* [',']) ) + # dictorsetmaker: ( (test ':' test (comp_for | (',' test ':' test)* [','])) | + # (test (comp_for | (',' test)* [','])) ) assert nodelist[0] == symbol.dictorsetmaker - if len(nodelist) == 2 or nodelist[2][0] == token.COMMA: + nodelist = nodelist[1:] + if len(nodelist) == 1 or nodelist[1][0] == token.COMMA: + # set literal items = [] - for i in range(1, len(nodelist), 2): + for i in range(0, len(nodelist), 2): items.append(self.com_node(nodelist[i])) return Set(items, lineno=items[0].lineno) + elif nodelist[1][0] == symbol.comp_for: + # set comprehension + expr = self.com_node(nodelist[0]) + return self.com_comprehension(expr, None, nodelist[1], 'set') + elif len(nodelist) > 3 and nodelist[3][0] == symbol.comp_for: + # dict comprehension + assert nodelist[1][0] == token.COLON + key = self.com_node(nodelist[0]) + value = self.com_node(nodelist[2]) + return self.com_comprehension(key, value, nodelist[3], 'dict') else: + # dict literal items = [] - for i in range(1, len(nodelist), 4): + for i in range(0, len(nodelist), 4): items.append((self.com_node(nodelist[i]), self.com_node(nodelist[i+2]))) return Dict(items, lineno=items[0][0].lineno) @@ -1257,7 +1281,7 @@ kw, result = self.com_argument(node, kw, star_node) if len_nodelist != 2 and isinstance(result, GenExpr) \ - and len(node) == 3 and node[2][0] == symbol.gen_for: + and len(node) == 3 and node[2][0] == symbol.comp_for: # allow f(x for x in y), but reject f(x for x in y, 1) # should use f((x for x in y), 1) instead of f(x for x in y, 1) raise SyntaxError, 'generator expression needs parenthesis' @@ -1269,7 +1293,7 @@ lineno=extractLineNo(nodelist)) def com_argument(self, nodelist, kw, star_node): - if len(nodelist) == 3 and nodelist[2][0] == symbol.gen_for: + if len(nodelist) == 3 and nodelist[2][0] == symbol.comp_for: test = self.com_node(nodelist[1]) return 0, self.com_generator_expression(test, nodelist[2]) if len(nodelist) == 2: Modified: python/trunk/Lib/opcode.py ============================================================================== --- python/trunk/Lib/opcode.py (original) +++ python/trunk/Lib/opcode.py Mon Jan 11 23:36:12 2010 @@ -186,5 +186,7 @@ def_op('EXTENDED_ARG', 145) EXTENDED_ARG = 145 +def_op('SET_ADD', 146) +def_op('MAP_ADD', 147) del def_op, name_op, jrel_op, jabs_op Modified: python/trunk/Lib/symbol.py ============================================================================== --- python/trunk/Lib/symbol.py (original) +++ python/trunk/Lib/symbol.py Mon Jan 11 23:36:12 2010 @@ -74,7 +74,7 @@ power = 317 atom = 318 listmaker = 319 -testlist_gexp = 320 +testlist_comp = 320 lambdef = 321 trailer = 322 subscriptlist = 323 @@ -90,9 +90,9 @@ list_iter = 333 list_for = 334 list_if = 335 -gen_iter = 336 -gen_for = 337 -gen_if = 338 +comp_iter = 336 +comp_for = 337 +comp_if = 338 testlist1 = 339 encoding_decl = 340 yield_expr = 341 Modified: python/trunk/Lib/test/test_compiler.py ============================================================================== --- python/trunk/Lib/test/test_compiler.py (original) +++ python/trunk/Lib/test/test_compiler.py Mon Jan 11 23:36:12 2010 @@ -140,6 +140,36 @@ 'eval') self.assertEquals(eval(c), [(0, 3), (1, 3), (2, 3)]) + def testSetLiteral(self): + c = compiler.compile('{1, 2, 3}', '', 'eval') + self.assertEquals(eval(c), {1,2,3}) + c = compiler.compile('{1, 2, 3,}', '', 'eval') + self.assertEquals(eval(c), {1,2,3}) + + def testDictLiteral(self): + c = compiler.compile('{1:2, 2:3, 3:4}', '', 'eval') + self.assertEquals(eval(c), {1:2, 2:3, 3:4}) + c = compiler.compile('{1:2, 2:3, 3:4,}', '', 'eval') + self.assertEquals(eval(c), {1:2, 2:3, 3:4}) + + def testSetComp(self): + c = compiler.compile('{x for x in range(1, 4)}', '', 'eval') + self.assertEquals(eval(c), {1, 2, 3}) + c = compiler.compile('{x * y for x in range(3) if x != 0' + ' for y in range(4) if y != 0}', + '', + 'eval') + self.assertEquals(eval(c), {1, 2, 3, 4, 6}) + + def testDictComp(self): + c = compiler.compile('{x:x+1 for x in range(1, 4)}', '', 'eval') + self.assertEquals(eval(c), {1:2, 2:3, 3:4}) + c = compiler.compile('{(x, y) : y for x in range(2) if x != 0' + ' for y in range(3) if y != 0}', + '', + 'eval') + self.assertEquals(eval(c), {(1, 2): 2, (1, 1): 1}) + def testWith(self): # SF bug 1638243 c = compiler.compile('from __future__ import with_statement\n' @@ -248,6 +278,8 @@ l[3:4] d = {'a': 2} d = {} +d = {x: y for x, y in zip(range(5), range(5,10))} +s = {x for x in range(10)} s = {1} t = () t = (1, 2) Added: python/trunk/Lib/test/test_dictcomps.py ============================================================================== --- (empty file) +++ python/trunk/Lib/test/test_dictcomps.py Mon Jan 11 23:36:12 2010 @@ -0,0 +1,54 @@ + +doctests = """ + + >>> k = "old value" + >>> { k: None for k in range(10) } + {0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None} + >>> k + 'old value' + + >>> { k: k+10 for k in range(10) } + {0: 10, 1: 11, 2: 12, 3: 13, 4: 14, 5: 15, 6: 16, 7: 17, 8: 18, 9: 19} + + >>> g = "Global variable" + >>> { k: g for k in range(10) } + {0: 'Global variable', 1: 'Global variable', 2: 'Global variable', 3: 'Global variable', 4: 'Global variable', 5: 'Global variable', 6: 'Global variable', 7: 'Global variable', 8: 'Global variable', 9: 'Global variable'} + + >>> { k: v for k in range(10) for v in range(10) if k == v } + {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9} + + >>> { k: v for v in range(10) for k in range(v*9, v*10) } + {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4, 38: 4, 39: 4, 45: 5, 46: 5, 47: 5, 48: 5, 49: 5, 54: 6, 55: 6, 56: 6, 57: 6, 58: 6, 59: 6, 63: 7, 64: 7, 65: 7, 66: 7, 67: 7, 68: 7, 69: 7, 72: 8, 73: 8, 74: 8, 75: 8, 76: 8, 77: 8, 78: 8, 79: 8, 81: 9, 82: 9, 83: 9, 84: 9, 85: 9, 86: 9, 87: 9, 88: 9, 89: 9} + + >>> { x: y for y, x in ((1, 2), (3, 4)) } = 5 # doctest: +IGNORE_EXCEPTION_DETAIL + Traceback (most recent call last): + ... + SyntaxError: ... + + >>> { x: y for y, x in ((1, 2), (3, 4)) } += 5 # doctest: +IGNORE_EXCEPTION_DETAIL + Traceback (most recent call last): + ... + SyntaxError: ... + +""" + +__test__ = {'doctests' : doctests} + +def test_main(verbose=None): + import sys + from test import test_support + from test import test_dictcomps + test_support.run_doctest(test_dictcomps, verbose) + + # verify reference counting + if verbose and hasattr(sys, "gettotalrefcount"): + import gc + counts = [None] * 5 + for i in range(len(counts)): + test_support.run_doctest(test_dictcomps, verbose) + gc.collect() + counts[i] = sys.gettotalrefcount() + print(counts) + +if __name__ == "__main__": + test_main(verbose=True) Modified: python/trunk/Lib/test/test_grammar.py ============================================================================== --- python/trunk/Lib/test/test_grammar.py (original) +++ python/trunk/Lib/test/test_grammar.py Mon Jan 11 23:36:12 2010 @@ -808,6 +808,13 @@ pass self.assertEqual(G.decorated, True) + def testDictcomps(self): + # dictorsetmaker: ( (test ':' test (comp_for | + # (',' test ':' test)* [','])) | + # (test (comp_for | (',' test)* [','])) ) + nums = [1, 2, 3] + self.assertEqual({i:i+1 for i in nums}, {1: 2, 2: 3, 3: 4}) + def testListcomps(self): # list comprehension tests nums = [1, 2, 3, 4, 5] Modified: python/trunk/Lib/test/test_parser.py ============================================================================== --- python/trunk/Lib/test/test_parser.py (original) +++ python/trunk/Lib/test/test_parser.py Mon Jan 11 23:36:12 2010 @@ -76,9 +76,20 @@ self.check_expr("[x**3 for x in range(20)]") self.check_expr("[x**3 for x in range(20) if x % 3]") self.check_expr("[x**3 for x in range(20) if x % 2 if x % 3]") + self.check_expr("[x+y for x in range(30) for y in range(20) if x % 2 if y % 3]") + #self.check_expr("[x for x in lambda: True, lambda: False if x()]") self.check_expr("list(x**3 for x in range(20))") self.check_expr("list(x**3 for x in range(20) if x % 3)") self.check_expr("list(x**3 for x in range(20) if x % 2 if x % 3)") + self.check_expr("list(x+y for x in range(30) for y in range(20) if x % 2 if y % 3)") + self.check_expr("{x**3 for x in range(30)}") + self.check_expr("{x**3 for x in range(30) if x % 3}") + self.check_expr("{x**3 for x in range(30) if x % 2 if x % 3}") + self.check_expr("{x+y for x in range(30) for y in range(20) if x % 2 if y % 3}") + self.check_expr("{x**3: y**2 for x, y in zip(range(30), range(30))}") + self.check_expr("{x**3: y**2 for x, y in zip(range(30), range(30)) if x % 3}") + self.check_expr("{x**3: y**2 for x, y in zip(range(30), range(30)) if x % 3 if y % 3}") + self.check_expr("{x:y for x in range(30) for y in range(20) if x % 2 if y % 3}") self.check_expr("foo(*args)") self.check_expr("foo(*args, **kw)") self.check_expr("foo(**kw)") @@ -107,6 +118,7 @@ self.check_expr("lambda foo=bar, blaz=blat+2, **z: 0") self.check_expr("lambda foo=bar, blaz=blat+2, *y, **z: 0") self.check_expr("lambda x, *y, **z: 0") + self.check_expr("lambda x: 5 if x else 2") self.check_expr("(x for x in range(10))") self.check_expr("foo(x for x in range(10))") Added: python/trunk/Lib/test/test_setcomps.py ============================================================================== --- (empty file) +++ python/trunk/Lib/test/test_setcomps.py Mon Jan 11 23:36:12 2010 @@ -0,0 +1,151 @@ +doctests = """ +########### Tests mostly copied from test_listcomps.py ############ + +Test simple loop with conditional + + >>> sum({i*i for i in range(100) if i&1 == 1}) + 166650 + +Test simple case + + >>> {2*y + x + 1 for x in (0,) for y in (1,)} + set([3]) + +Test simple nesting + + >>> list(sorted({(i,j) for i in range(3) for j in range(4)})) + [(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3)] + +Test nesting with the inner expression dependent on the outer + + >>> list(sorted({(i,j) for i in range(4) for j in range(i)})) + [(1, 0), (2, 0), (2, 1), (3, 0), (3, 1), (3, 2)] + +Make sure the induction variable is not exposed + + >>> i = 20 + >>> sum({i*i for i in range(100)}) + 328350 + + >>> i + 20 + +Verify that syntax error's are raised for setcomps used as lvalues + + >>> {y for y in (1,2)} = 10 # doctest: +IGNORE_EXCEPTION_DETAIL + Traceback (most recent call last): + ... + SyntaxError: ... + + >>> {y for y in (1,2)} += 10 # doctest: +IGNORE_EXCEPTION_DETAIL + Traceback (most recent call last): + ... + SyntaxError: ... + + +Make a nested set comprehension that acts like set(range()) + + >>> def srange(n): + ... return {i for i in range(n)} + >>> list(sorted(srange(10))) + [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + +Same again, only as a lambda expression instead of a function definition + + >>> lrange = lambda n: {i for i in range(n)} + >>> list(sorted(lrange(10))) + [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + +Generators can call other generators: + + >>> def grange(n): + ... for x in {i for i in range(n)}: + ... yield x + >>> list(sorted(grange(5))) + [0, 1, 2, 3, 4] + + +Make sure that None is a valid return value + + >>> {None for i in range(10)} + set([None]) + +########### Tests for various scoping corner cases ############ + +Return lambdas that use the iteration variable as a default argument + + >>> items = {(lambda i=i: i) for i in range(5)} + >>> {x() for x in items} == set(range(5)) + True + +Same again, only this time as a closure variable + + >>> items = {(lambda: i) for i in range(5)} + >>> {x() for x in items} + set([4]) + +Another way to test that the iteration variable is local to the list comp + + >>> items = {(lambda: i) for i in range(5)} + >>> i = 20 + >>> {x() for x in items} + set([4]) + +And confirm that a closure can jump over the list comp scope + + >>> items = {(lambda: y) for i in range(5)} + >>> y = 2 + >>> {x() for x in items} + set([2]) + +We also repeat each of the above scoping tests inside a function + + >>> def test_func(): + ... items = {(lambda i=i: i) for i in range(5)} + ... return {x() for x in items} + >>> test_func() == set(range(5)) + True + + >>> def test_func(): + ... items = {(lambda: i) for i in range(5)} + ... return {x() for x in items} + >>> test_func() + set([4]) + + >>> def test_func(): + ... items = {(lambda: i) for i in range(5)} + ... i = 20 + ... return {x() for x in items} + >>> test_func() + set([4]) + + >>> def test_func(): + ... items = {(lambda: y) for i in range(5)} + ... y = 2 + ... return {x() for x in items} + >>> test_func() + set([2]) + +""" + + +__test__ = {'doctests' : doctests} + +def test_main(verbose=None): + import sys + from test import test_support + from test import test_setcomps + test_support.run_doctest(test_setcomps, verbose) + + # verify reference counting + if verbose and hasattr(sys, "gettotalrefcount"): + import gc + counts = [None] * 5 + for i in range(len(counts)): + test_support.run_doctest(test_setcomps, verbose) + gc.collect() + counts[i] = sys.gettotalrefcount() + print(counts) + +if __name__ == "__main__": + test_main(verbose=True) Modified: python/trunk/Modules/parsermodule.c ============================================================================== --- python/trunk/Modules/parsermodule.c (original) +++ python/trunk/Modules/parsermodule.c Mon Jan 11 23:36:12 2010 @@ -938,9 +938,9 @@ VALIDATER(exprlist); VALIDATER(dictorsetmaker); VALIDATER(arglist); VALIDATER(argument); VALIDATER(listmaker); VALIDATER(yield_stmt); -VALIDATER(testlist1); VALIDATER(gen_for); -VALIDATER(gen_iter); VALIDATER(gen_if); -VALIDATER(testlist_gexp); VALIDATER(yield_expr); +VALIDATER(testlist1); VALIDATER(comp_for); +VALIDATER(comp_iter); VALIDATER(comp_if); +VALIDATER(testlist_comp); VALIDATER(yield_expr); VALIDATER(yield_or_testlist); VALIDATER(or_test); VALIDATER(old_test); VALIDATER(old_lambdef); @@ -1342,17 +1342,17 @@ return res; } -/* gen_iter: gen_for | gen_if +/* comp_iter: comp_for | comp_if */ static int -validate_gen_iter(node *tree) +validate_comp_iter(node *tree) { - int res = (validate_ntype(tree, gen_iter) - && validate_numnodes(tree, 1, "gen_iter")); - if (res && TYPE(CHILD(tree, 0)) == gen_for) - res = validate_gen_for(CHILD(tree, 0)); + int res = (validate_ntype(tree, comp_iter) + && validate_numnodes(tree, 1, "comp_iter")); + if (res && TYPE(CHILD(tree, 0)) == comp_for) + res = validate_comp_for(CHILD(tree, 0)); else - res = validate_gen_if(CHILD(tree, 0)); + res = validate_comp_if(CHILD(tree, 0)); return res; } @@ -1379,18 +1379,18 @@ return res; } -/* gen_for: 'for' exprlist 'in' test [gen_iter] +/* comp_for: 'for' exprlist 'in' test [comp_iter] */ static int -validate_gen_for(node *tree) +validate_comp_for(node *tree) { int nch = NCH(tree); int res; if (nch == 5) - res = validate_gen_iter(CHILD(tree, 4)); + res = validate_comp_iter(CHILD(tree, 4)); else - res = validate_numnodes(tree, 4, "gen_for"); + res = validate_numnodes(tree, 4, "comp_for"); if (res) res = (validate_name(CHILD(tree, 0), "for") @@ -1421,18 +1421,18 @@ return res; } -/* gen_if: 'if' old_test [gen_iter] +/* comp_if: 'if' old_test [comp_iter] */ static int -validate_gen_if(node *tree) +validate_comp_if(node *tree) { int nch = NCH(tree); int res; if (nch == 3) - res = validate_gen_iter(CHILD(tree, 2)); + res = validate_comp_iter(CHILD(tree, 2)); else - res = validate_numnodes(tree, 2, "gen_if"); + res = validate_numnodes(tree, 2, "comp_if"); if (res) res = (validate_name(CHILD(tree, 0), "if") @@ -2459,7 +2459,7 @@ if (TYPE(CHILD(tree, 1))==yield_expr) res = validate_yield_expr(CHILD(tree, 1)); else - res = validate_testlist_gexp(CHILD(tree, 1)); + res = validate_testlist_comp(CHILD(tree, 1)); } break; case LSQB: @@ -2539,26 +2539,26 @@ return ok; } -/* testlist_gexp: - * test ( gen_for | (',' test)* [','] ) +/* testlist_comp: + * test ( comp_for | (',' test)* [','] ) */ static int -validate_testlist_gexp(node *tree) +validate_testlist_comp(node *tree) { int nch = NCH(tree); int ok = nch; if (nch == 0) - err_string("missing child nodes of testlist_gexp"); + err_string("missing child nodes of testlist_comp"); else { ok = validate_test(CHILD(tree, 0)); } /* - * gen_for | (',' test)* [','] + * comp_for | (',' test)* [','] */ - if (nch == 2 && TYPE(CHILD(tree, 1)) == gen_for) - ok = validate_gen_for(CHILD(tree, 1)); + if (nch == 2 && TYPE(CHILD(tree, 1)) == comp_for) + ok = validate_comp_for(CHILD(tree, 1)); else { /* (',' test)* [','] */ int i = 1; @@ -2571,7 +2571,7 @@ ok = validate_comma(CHILD(tree, i)); else if (i != nch) { ok = 0; - err_string("illegal trailing nodes for testlist_gexp"); + err_string("illegal trailing nodes for testlist_comp"); } } return ok; @@ -2746,7 +2746,7 @@ for (i=0; i 0); @@ -2984,6 +2991,23 @@ && validate_test(CHILD(tree, i+1))); i += 2; } + check_trailing_comma = 1; + } + else if (ok && TYPE(CHILD(tree, 1)) == comp_for) { + /* We got a set comprehension: + * test comp_for + */ + ok = (validate_test(CHILD(tree, 0)) + && validate_comp_for(CHILD(tree, 1))); + } + else if (ok && NCH(tree) > 3 && TYPE(CHILD(tree, 3)) == comp_for) { + /* We got a dict comprehension: + * test ':' test comp_for + */ + ok = (validate_test(CHILD(tree, 0)) + && validate_colon(CHILD(tree, 1)) + && validate_test(CHILD(tree, 2)) + && validate_comp_for(CHILD(tree, 3))); } else if (ok) { /* We got a dict: @@ -3007,9 +3031,9 @@ && validate_test(CHILD(tree, i+3))); i += 4; } + check_trailing_comma = 1; } - /* Check for a trailing comma. */ - if (ok) { + if (ok && check_trailing_comma) { if (i == nch-1) ok = validate_comma(CHILD(tree, i)); else if (i != nch) { Modified: python/trunk/Parser/Python.asdl ============================================================================== --- python/trunk/Parser/Python.asdl (original) +++ python/trunk/Parser/Python.asdl Mon Jan 11 23:36:12 2010 @@ -58,6 +58,8 @@ | Dict(expr* keys, expr* values) | Set(expr* elts) | ListComp(expr elt, comprehension* generators) + | SetComp(expr elt, comprehension* generators) + | DictComp(expr key, expr value, comprehension* generators) | GeneratorExp(expr elt, comprehension* generators) -- the grammar constrains where yield expressions can occur | Yield(expr? value) Modified: python/trunk/Python/Python-ast.c ============================================================================== --- python/trunk/Python/Python-ast.c (original) +++ python/trunk/Python/Python-ast.c Mon Jan 11 23:36:12 2010 @@ -197,6 +197,17 @@ "elt", "generators", }; +static PyTypeObject *SetComp_type; +static char *SetComp_fields[]={ + "elt", + "generators", +}; +static PyTypeObject *DictComp_type; +static char *DictComp_fields[]={ + "key", + "value", + "generators", +}; static PyTypeObject *GeneratorExp_type; static char *GeneratorExp_fields[]={ "elt", @@ -726,6 +737,10 @@ if (!Set_type) return 0; ListComp_type = make_type("ListComp", expr_type, ListComp_fields, 2); if (!ListComp_type) return 0; + SetComp_type = make_type("SetComp", expr_type, SetComp_fields, 2); + if (!SetComp_type) return 0; + DictComp_type = make_type("DictComp", expr_type, DictComp_fields, 3); + if (!DictComp_type) return 0; GeneratorExp_type = make_type("GeneratorExp", expr_type, GeneratorExp_fields, 2); if (!GeneratorExp_type) return 0; @@ -1631,6 +1646,54 @@ } expr_ty +SetComp(expr_ty elt, asdl_seq * generators, int lineno, int col_offset, PyArena + *arena) +{ + expr_ty p; + if (!elt) { + PyErr_SetString(PyExc_ValueError, + "field elt is required for SetComp"); + return NULL; + } + p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); + if (!p) + return NULL; + p->kind = SetComp_kind; + p->v.SetComp.elt = elt; + p->v.SetComp.generators = generators; + p->lineno = lineno; + p->col_offset = col_offset; + return p; +} + +expr_ty +DictComp(expr_ty key, expr_ty value, asdl_seq * generators, int lineno, int + col_offset, PyArena *arena) +{ + expr_ty p; + if (!key) { + PyErr_SetString(PyExc_ValueError, + "field key is required for DictComp"); + return NULL; + } + if (!value) { + PyErr_SetString(PyExc_ValueError, + "field value is required for DictComp"); + return NULL; + } + p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); + if (!p) + return NULL; + p->kind = DictComp_kind; + p->v.DictComp.key = key; + p->v.DictComp.value = value; + p->v.DictComp.generators = generators; + p->lineno = lineno; + p->col_offset = col_offset; + return p; +} + +expr_ty GeneratorExp(expr_ty elt, asdl_seq * generators, int lineno, int col_offset, PyArena *arena) { @@ -2610,6 +2673,41 @@ goto failed; Py_DECREF(value); break; + case SetComp_kind: + result = PyType_GenericNew(SetComp_type, NULL, NULL); + if (!result) goto failed; + value = ast2obj_expr(o->v.SetComp.elt); + if (!value) goto failed; + if (PyObject_SetAttrString(result, "elt", value) == -1) + goto failed; + Py_DECREF(value); + value = ast2obj_list(o->v.SetComp.generators, + ast2obj_comprehension); + if (!value) goto failed; + if (PyObject_SetAttrString(result, "generators", value) == -1) + goto failed; + Py_DECREF(value); + break; + case DictComp_kind: + result = PyType_GenericNew(DictComp_type, NULL, NULL); + if (!result) goto failed; + value = ast2obj_expr(o->v.DictComp.key); + if (!value) goto failed; + if (PyObject_SetAttrString(result, "key", value) == -1) + goto failed; + Py_DECREF(value); + value = ast2obj_expr(o->v.DictComp.value); + if (!value) goto failed; + if (PyObject_SetAttrString(result, "value", value) == -1) + goto failed; + Py_DECREF(value); + value = ast2obj_list(o->v.DictComp.generators, + ast2obj_comprehension); + if (!value) goto failed; + if (PyObject_SetAttrString(result, "generators", value) == -1) + goto failed; + Py_DECREF(value); + break; case GeneratorExp_kind: result = PyType_GenericNew(GeneratorExp_type, NULL, NULL); if (!result) goto failed; @@ -4974,6 +5072,118 @@ if (*out == NULL) goto failed; return 0; } + isinstance = PyObject_IsInstance(obj, (PyObject*)SetComp_type); + if (isinstance == -1) { + return 1; + } + if (isinstance) { + expr_ty elt; + asdl_seq* generators; + + if (PyObject_HasAttrString(obj, "elt")) { + int res; + tmp = PyObject_GetAttrString(obj, "elt"); + if (tmp == NULL) goto failed; + res = obj2ast_expr(tmp, &elt, arena); + if (res != 0) goto failed; + Py_XDECREF(tmp); + tmp = NULL; + } else { + PyErr_SetString(PyExc_TypeError, "required field \"elt\" missing from SetComp"); + return 1; + } + if (PyObject_HasAttrString(obj, "generators")) { + int res; + Py_ssize_t len; + Py_ssize_t i; + tmp = PyObject_GetAttrString(obj, "generators"); + if (tmp == NULL) goto failed; + if (!PyList_Check(tmp)) { + PyErr_Format(PyExc_TypeError, "SetComp field \"generators\" must be a list, not a %.200s", tmp->ob_type->tp_name); + goto failed; + } + len = PyList_GET_SIZE(tmp); + generators = asdl_seq_new(len, arena); + if (generators == NULL) goto failed; + for (i = 0; i < len; i++) { + comprehension_ty value; + res = obj2ast_comprehension(PyList_GET_ITEM(tmp, i), &value, arena); + if (res != 0) goto failed; + asdl_seq_SET(generators, i, value); + } + Py_XDECREF(tmp); + tmp = NULL; + } else { + PyErr_SetString(PyExc_TypeError, "required field \"generators\" missing from SetComp"); + return 1; + } + *out = SetComp(elt, generators, lineno, col_offset, arena); + if (*out == NULL) goto failed; + return 0; + } + isinstance = PyObject_IsInstance(obj, (PyObject*)DictComp_type); + if (isinstance == -1) { + return 1; + } + if (isinstance) { + expr_ty key; + expr_ty value; + asdl_seq* generators; + + if (PyObject_HasAttrString(obj, "key")) { + int res; + tmp = PyObject_GetAttrString(obj, "key"); + if (tmp == NULL) goto failed; + res = obj2ast_expr(tmp, &key, arena); + if (res != 0) goto failed; + Py_XDECREF(tmp); + tmp = NULL; + } else { + PyErr_SetString(PyExc_TypeError, "required field \"key\" missing from DictComp"); + return 1; + } + if (PyObject_HasAttrString(obj, "value")) { + int res; + tmp = PyObject_GetAttrString(obj, "value"); + if (tmp == NULL) goto failed; + res = obj2ast_expr(tmp, &value, arena); + if (res != 0) goto failed; + Py_XDECREF(tmp); + tmp = NULL; + } else { + PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from DictComp"); + return 1; + } + if (PyObject_HasAttrString(obj, "generators")) { + int res; + Py_ssize_t len; + Py_ssize_t i; + tmp = PyObject_GetAttrString(obj, "generators"); + if (tmp == NULL) goto failed; + if (!PyList_Check(tmp)) { + PyErr_Format(PyExc_TypeError, "DictComp field \"generators\" must be a list, not a %.200s", tmp->ob_type->tp_name); + goto failed; + } + len = PyList_GET_SIZE(tmp); + generators = asdl_seq_new(len, arena); + if (generators == NULL) goto failed; + for (i = 0; i < len; i++) { + comprehension_ty value; + res = obj2ast_comprehension(PyList_GET_ITEM(tmp, i), &value, arena); + if (res != 0) goto failed; + asdl_seq_SET(generators, i, value); + } + Py_XDECREF(tmp); + tmp = NULL; + } else { + PyErr_SetString(PyExc_TypeError, "required field \"generators\" missing from DictComp"); + return 1; + } + *out = DictComp(key, value, generators, lineno, col_offset, + arena); + if (*out == NULL) goto failed; + return 0; + } isinstance = PyObject_IsInstance(obj, (PyObject*)GeneratorExp_type); if (isinstance == -1) { return 1; @@ -6419,6 +6629,10 @@ if (PyDict_SetItemString(d, "Set", (PyObject*)Set_type) < 0) return; if (PyDict_SetItemString(d, "ListComp", (PyObject*)ListComp_type) < 0) return; + if (PyDict_SetItemString(d, "SetComp", (PyObject*)SetComp_type) < 0) + return; + if (PyDict_SetItemString(d, "DictComp", (PyObject*)DictComp_type) < 0) + return; if (PyDict_SetItemString(d, "GeneratorExp", (PyObject*)GeneratorExp_type) < 0) return; if (PyDict_SetItemString(d, "Yield", (PyObject*)Yield_type) < 0) return; Modified: python/trunk/Python/ast.c ============================================================================== --- python/trunk/Python/ast.c (original) +++ python/trunk/Python/ast.c Mon Jan 11 23:36:12 2010 @@ -31,7 +31,7 @@ expr_context_ty); static expr_ty ast_for_testlist(struct compiling *, const node *); static stmt_ty ast_for_classdef(struct compiling *, const node *, asdl_seq *); -static expr_ty ast_for_testlist_gexp(struct compiling *, const node *); +static expr_ty ast_for_testlist_comp(struct compiling *, const node *); /* Note different signature for ast_for_call */ static expr_ty ast_for_call(struct compiling *, const node *, expr_ty); @@ -44,6 +44,9 @@ #define LINENO(n) ((n)->n_lineno) #endif +#define COMP_GENEXP 0 +#define COMP_SETCOMP 1 + static identifier new_identifier(const char* n, PyArena *arena) { PyObject* id = PyString_InternFromString(n); @@ -268,7 +271,7 @@ case eval_input: { expr_ty testlist_ast; - /* XXX Why not gen_for here? */ + /* XXX Why not comp_for here? */ testlist_ast = ast_for_testlist(&c, CHILD(n, 0)); if (!testlist_ast) goto error; @@ -430,6 +433,12 @@ case ListComp_kind: expr_name = "list comprehension"; break; + case SetComp_kind: + expr_name = "set comprehension"; + break; + case DictComp_kind: + expr_name = "dict comprehension"; + break; case Dict_kind: case Num_kind: case Str_kind: @@ -573,7 +582,7 @@ int i; assert(TYPE(n) == testlist || TYPE(n) == listmaker || - TYPE(n) == testlist_gexp || + TYPE(n) == testlist_comp || TYPE(n) == testlist_safe || TYPE(n) == testlist1); @@ -1150,60 +1159,60 @@ return ListComp(elt, listcomps, LINENO(n), n->n_col_offset, c->c_arena); } -/* Count the number of 'for' loops in a generator expression. +/* + Count the number of 'for' loops in a comprehension. - Helper for ast_for_genexp(). + Helper for ast_for_comprehension(). */ static int -count_gen_fors(struct compiling *c, const node *n) +count_comp_fors(struct compiling *c, const node *n) { int n_fors = 0; - node *ch = CHILD(n, 1); - count_gen_for: + count_comp_for: n_fors++; - REQ(ch, gen_for); - if (NCH(ch) == 5) - ch = CHILD(ch, 4); + REQ(n, comp_for); + if (NCH(n) == 5) + n = CHILD(n, 4); else return n_fors; - count_gen_iter: - REQ(ch, gen_iter); - ch = CHILD(ch, 0); - if (TYPE(ch) == gen_for) - goto count_gen_for; - else if (TYPE(ch) == gen_if) { - if (NCH(ch) == 3) { - ch = CHILD(ch, 2); - goto count_gen_iter; + count_comp_iter: + REQ(n, comp_iter); + n = CHILD(n, 0); + if (TYPE(n) == comp_for) + goto count_comp_for; + else if (TYPE(n) == comp_if) { + if (NCH(n) == 3) { + n = CHILD(n, 2); + goto count_comp_iter; } else return n_fors; } - + /* Should never be reached */ PyErr_SetString(PyExc_SystemError, - "logic error in count_gen_fors"); + "logic error in count_comp_fors"); return -1; } -/* Count the number of 'if' statements in a generator expression. +/* Count the number of 'if' statements in a comprehension. - Helper for ast_for_genexp(). + Helper for ast_for_comprehension(). */ static int -count_gen_ifs(struct compiling *c, const node *n) +count_comp_ifs(struct compiling *c, const node *n) { int n_ifs = 0; while (1) { - REQ(n, gen_iter); - if (TYPE(CHILD(n, 0)) == gen_for) + REQ(n, comp_iter); + if (TYPE(CHILD(n, 0)) == comp_for) return n_ifs; n = CHILD(n, 0); - REQ(n, gen_if); + REQ(n, comp_if); n_ifs++; if (NCH(n) == 2) return n_ifs; @@ -1211,46 +1220,33 @@ } } -/* TODO(jhylton): Combine with list comprehension code? */ -static expr_ty -ast_for_genexp(struct compiling *c, const node *n) +static asdl_seq * +ast_for_comprehension(struct compiling *c, const node *n) { - /* testlist_gexp: test ( gen_for | (',' test)* [','] ) - argument: [test '='] test [gen_for] # Really [keyword '='] test */ - expr_ty elt; - asdl_seq *genexps; int i, n_fors; - node *ch; - - assert(TYPE(n) == (testlist_gexp) || TYPE(n) == (argument)); - assert(NCH(n) > 1); - - elt = ast_for_expr(c, CHILD(n, 0)); - if (!elt) - return NULL; - - n_fors = count_gen_fors(c, n); + asdl_seq *comps; + + n_fors = count_comp_fors(c, n); if (n_fors == -1) return NULL; - genexps = asdl_seq_new(n_fors, c->c_arena); - if (!genexps) + comps = asdl_seq_new(n_fors, c->c_arena); + if (!comps) return NULL; - ch = CHILD(n, 1); for (i = 0; i < n_fors; i++) { - comprehension_ty ge; + comprehension_ty comp; asdl_seq *t; expr_ty expression, first; node *for_ch; - REQ(ch, gen_for); + REQ(n, comp_for); - for_ch = CHILD(ch, 1); + for_ch = CHILD(n, 1); t = ast_for_exprlist(c, for_ch, Store); if (!t) return NULL; - expression = ast_for_expr(c, CHILD(ch, 3)); + expression = ast_for_expr(c, CHILD(n, 3)); if (!expression) return NULL; @@ -1258,21 +1254,20 @@ (x for x, in ...) has 1 element in t, but still requires a Tuple. */ first = (expr_ty)asdl_seq_GET(t, 0); if (NCH(for_ch) == 1) - ge = comprehension(first, expression, NULL, c->c_arena); + comp = comprehension(first, expression, NULL, c->c_arena); else - ge = comprehension(Tuple(t, Store, first->lineno, first->col_offset, + comp = comprehension(Tuple(t, Store, first->lineno, first->col_offset, c->c_arena), expression, NULL, c->c_arena); - - if (!ge) + if (!comp) return NULL; - if (NCH(ch) == 5) { + if (NCH(n) == 5) { int j, n_ifs; asdl_seq *ifs; - ch = CHILD(ch, 4); - n_ifs = count_gen_ifs(c, ch); + n = CHILD(n, 4); + n_ifs = count_comp_ifs(c, n); if (n_ifs == -1) return NULL; @@ -1281,32 +1276,94 @@ return NULL; for (j = 0; j < n_ifs; j++) { - REQ(ch, gen_iter); - ch = CHILD(ch, 0); - REQ(ch, gen_if); + REQ(n, comp_iter); + n = CHILD(n, 0); + REQ(n, comp_if); - expression = ast_for_expr(c, CHILD(ch, 1)); + expression = ast_for_expr(c, CHILD(n, 1)); if (!expression) return NULL; asdl_seq_SET(ifs, j, expression); - if (NCH(ch) == 3) - ch = CHILD(ch, 2); + if (NCH(n) == 3) + n = CHILD(n, 2); } - /* on exit, must guarantee that ch is a gen_for */ - if (TYPE(ch) == gen_iter) - ch = CHILD(ch, 0); - ge->ifs = ifs; + /* on exit, must guarantee that n is a comp_for */ + if (TYPE(n) == comp_iter) + n = CHILD(n, 0); + comp->ifs = ifs; } - asdl_seq_SET(genexps, i, ge); + asdl_seq_SET(comps, i, comp); } + return comps; +} + +static expr_ty +ast_for_itercomp(struct compiling *c, const node *n, int type) +{ + expr_ty elt; + asdl_seq *comps; - return GeneratorExp(elt, genexps, LINENO(n), n->n_col_offset, c->c_arena); + assert(NCH(n) > 1); + + elt = ast_for_expr(c, CHILD(n, 0)); + if (!elt) + return NULL; + + comps = ast_for_comprehension(c, CHILD(n, 1)); + if (!comps) + return NULL; + + if (type == COMP_GENEXP) + return GeneratorExp(elt, comps, LINENO(n), n->n_col_offset, c->c_arena); + else if (type == COMP_SETCOMP) + return SetComp(elt, comps, LINENO(n), n->n_col_offset, c->c_arena); + else + /* Should never happen */ + return NULL; +} + +static expr_ty +ast_for_dictcomp(struct compiling *c, const node *n) +{ + expr_ty key, value; + asdl_seq *comps; + + assert(NCH(n) > 3); + REQ(CHILD(n, 1), COLON); + + key = ast_for_expr(c, CHILD(n, 0)); + if (!key) + return NULL; + + value = ast_for_expr(c, CHILD(n, 2)); + if (!value) + return NULL; + + comps = ast_for_comprehension(c, CHILD(n, 3)); + if (!comps) + return NULL; + + return DictComp(key, value, comps, LINENO(n), n->n_col_offset, c->c_arena); +} + +static expr_ty +ast_for_genexp(struct compiling *c, const node *n) +{ + assert(TYPE(n) == (testlist_comp) || TYPE(n) == (argument)); + return ast_for_itercomp(c, n, COMP_GENEXP); +} + +static expr_ty +ast_for_setcomp(struct compiling *c, const node *n) +{ + assert(TYPE(n) == (dictorsetmaker)); + return ast_for_itercomp(c, n, COMP_SETCOMP); } static expr_ty ast_for_atom(struct compiling *c, const node *n) { - /* atom: '(' [yield_expr|testlist_gexp] ')' | '[' [listmaker] ']' + /* atom: '(' [yield_expr|testlist_comp] ')' | '[' [listmaker] ']' | '{' [dictmaker] '}' | '`' testlist '`' | NAME | NUMBER | STRING+ */ node *ch = CHILD(n, 0); @@ -1365,7 +1422,7 @@ if (TYPE(ch) == yield_expr) return ast_for_expr(c, ch); - return ast_for_testlist_gexp(c, ch); + return ast_for_testlist_comp(c, ch); case LSQB: /* list (or list comprehension) */ ch = CHILD(n, 1); @@ -1383,8 +1440,9 @@ else return ast_for_listcomp(c, ch); case LBRACE: { - /* dictorsetmaker: test ':' test (',' test ':' test)* [','] | - * test (',' test)* [',']) + /* dictorsetmaker: + * (test ':' test (comp_for | (',' test ':' test)* [','])) | + * (test (comp_for | (',' test)* [','])) */ int i, size; asdl_seq *keys, *values; @@ -1408,6 +1466,11 @@ asdl_seq_SET(elts, i / 2, expression); } return Set(elts, LINENO(n), n->n_col_offset, c->c_arena); + } else if (TYPE(CHILD(ch, 1)) == comp_for) { + /* it's a set comprehension */ + return ast_for_setcomp(c, ch); + } else if (NCH(ch) > 3 && TYPE(CHILD(ch, 3)) == comp_for) { + return ast_for_dictcomp(c, ch); } else { /* it's a dict */ size = (NCH(ch) + 1) / 4; /* +1 in case no trailing comma */ @@ -1916,7 +1979,7 @@ /* arglist: (argument ',')* (argument [',']| '*' test [',' '**' test] | '**' test) - argument: [test '='] test [gen_for] # Really [keyword '='] test + argument: [test '='] test [comp_for] # Really [keyword '='] test */ int i, nargs, nkeywords, ngens; @@ -1934,7 +1997,7 @@ if (TYPE(ch) == argument) { if (NCH(ch) == 1) nargs++; - else if (TYPE(CHILD(ch, 1)) == gen_for) + else if (TYPE(CHILD(ch, 1)) == comp_for) ngens++; else nkeywords++; @@ -1979,7 +2042,7 @@ return NULL; asdl_seq_SET(args, nargs++, e); } - else if (TYPE(CHILD(ch, 1)) == gen_for) { + else if (TYPE(CHILD(ch, 1)) == comp_for) { e = ast_for_genexp(c, ch); if (!e) return NULL; @@ -2049,14 +2112,14 @@ static expr_ty ast_for_testlist(struct compiling *c, const node* n) { - /* testlist_gexp: test (',' test)* [','] */ + /* testlist_comp: test (',' test)* [','] */ /* testlist: test (',' test)* [','] */ /* testlist_safe: test (',' test)+ [','] */ /* testlist1: test (',' test)* */ assert(NCH(n) > 0); - if (TYPE(n) == testlist_gexp) { + if (TYPE(n) == testlist_comp) { if (NCH(n) > 1) - assert(TYPE(CHILD(n, 1)) != gen_for); + assert(TYPE(CHILD(n, 1)) != comp_for); } else { assert(TYPE(n) == testlist || @@ -2074,12 +2137,12 @@ } static expr_ty -ast_for_testlist_gexp(struct compiling *c, const node* n) +ast_for_testlist_comp(struct compiling *c, const node* n) { - /* testlist_gexp: test ( gen_for | (',' test)* [','] ) */ - /* argument: test [ gen_for ] */ - assert(TYPE(n) == testlist_gexp || TYPE(n) == argument); - if (NCH(n) > 1 && TYPE(CHILD(n, 1)) == gen_for) + /* testlist_comp: test ( comp_for | (',' test)* [','] ) */ + /* argument: test [ comp_for ] */ + assert(TYPE(n) == testlist_comp || TYPE(n) == argument); + if (NCH(n) > 1 && TYPE(CHILD(n, 1)) == comp_for) return ast_for_genexp(c, n); return ast_for_testlist(c, n); } Modified: python/trunk/Python/ceval.c ============================================================================== --- python/trunk/Python/ceval.c (original) +++ python/trunk/Python/ceval.c Mon Jan 11 23:36:12 2010 @@ -1455,6 +1455,17 @@ } break; + case SET_ADD: + w = POP(); + v = stack_pointer[-oparg]; + err = PySet_Add(v, w); + Py_DECREF(w); + if (err == 0) { + PREDICT(JUMP_ABSOLUTE); + continue; + } + break; + case INPLACE_POWER: w = POP(); v = TOP(); @@ -2223,6 +2234,21 @@ if (err == 0) continue; break; + case MAP_ADD: + w = TOP(); /* key */ + u = SECOND(); /* value */ + STACKADJ(-2); + v = stack_pointer[-oparg]; /* dict */ + assert (PyDict_CheckExact(v)); + err = PyDict_SetItem(v, w, u); /* v[w] = u */ + Py_DECREF(u); + Py_DECREF(w); + if (err == 0) { + PREDICT(JUMP_ABSOLUTE); + continue; + } + break; + case LOAD_ATTR: w = GETITEM(names, oparg); v = TOP(); Modified: python/trunk/Python/compile.c ============================================================================== --- python/trunk/Python/compile.c (original) +++ python/trunk/Python/compile.c Mon Jan 11 23:36:12 2010 @@ -39,6 +39,10 @@ #define DEFAULT_CODE_SIZE 128 #define DEFAULT_LNOTAB_SIZE 16 +#define COMP_GENEXP 0 +#define COMP_SETCOMP 1 +#define COMP_DICTCOMP 2 + struct instr { unsigned i_jabs : 1; unsigned i_jrel : 1; @@ -674,9 +678,13 @@ case UNARY_INVERT: return 0; + case SET_ADD: case LIST_APPEND: return -1; + case MAP_ADD: + return -2; + case BINARY_POWER: case BINARY_MULTIPLY: case BINARY_DIVIDE: @@ -2639,33 +2647,44 @@ e->v.ListComp.elt); } +/* Dict and set comprehensions and generator expressions work by creating a + nested function to perform the actual iteration. This means that the + iteration variables don't leak into the current scope. + The defined function is called immediately following its definition, with the + result of that call being the result of the expression. + The LC/SC version returns the populated container, while the GE version is + flagged in symtable.c as a generator, so it returns the generator object + when the function is called. + This code *knows* that the loop cannot contain break, continue, or return, + so it cheats and skips the SETUP_LOOP/POP_BLOCK steps used in normal loops. + + Possible cleanups: + - iterate over the generator sequence instead of using recursion +*/ + static int -compiler_genexp_generator(struct compiler *c, - asdl_seq *generators, int gen_index, - expr_ty elt) +compiler_comprehension_generator(struct compiler *c, + asdl_seq *generators, int gen_index, + expr_ty elt, expr_ty val, int type) { /* generate code for the iterator, then each of the ifs, and then write to the element */ - comprehension_ty ge; - basicblock *start, *anchor, *skip, *if_cleanup, *end; + comprehension_ty gen; + basicblock *start, *anchor, *skip, *if_cleanup; int i, n; start = compiler_new_block(c); skip = compiler_new_block(c); if_cleanup = compiler_new_block(c); anchor = compiler_new_block(c); - end = compiler_new_block(c); if (start == NULL || skip == NULL || if_cleanup == NULL || - anchor == NULL || end == NULL) - return 0; - - ge = (comprehension_ty)asdl_seq_GET(generators, gen_index); - ADDOP_JREL(c, SETUP_LOOP, end); - if (!compiler_push_fblock(c, LOOP, start)) + anchor == NULL) return 0; + gen = (comprehension_ty)asdl_seq_GET(generators, gen_index); + if (gen_index == 0) { /* Receive outermost iter as an implicit argument */ c->u->u_argcount = 1; @@ -2673,77 +2692,164 @@ } else { /* Sub-iter - calculate on the fly */ - VISIT(c, expr, ge->iter); + VISIT(c, expr, gen->iter); ADDOP(c, GET_ITER); } compiler_use_next_block(c, start); ADDOP_JREL(c, FOR_ITER, anchor); NEXT_BLOCK(c); - VISIT(c, expr, ge->target); + VISIT(c, expr, gen->target); /* XXX this needs to be cleaned up...a lot! */ - n = asdl_seq_LEN(ge->ifs); + n = asdl_seq_LEN(gen->ifs); for (i = 0; i < n; i++) { - expr_ty e = (expr_ty)asdl_seq_GET(ge->ifs, i); + expr_ty e = (expr_ty)asdl_seq_GET(gen->ifs, i); VISIT(c, expr, e); ADDOP_JABS(c, POP_JUMP_IF_FALSE, if_cleanup); NEXT_BLOCK(c); } if (++gen_index < asdl_seq_LEN(generators)) - if (!compiler_genexp_generator(c, generators, gen_index, elt)) - return 0; + if (!compiler_comprehension_generator(c, + generators, gen_index, + elt, val, type)) + return 0; - /* only append after the last 'for' generator */ + /* only append after the last for generator */ if (gen_index >= asdl_seq_LEN(generators)) { - VISIT(c, expr, elt); - ADDOP(c, YIELD_VALUE); - ADDOP(c, POP_TOP); + /* comprehension specific code */ + switch (type) { + case COMP_GENEXP: + VISIT(c, expr, elt); + ADDOP(c, YIELD_VALUE); + ADDOP(c, POP_TOP); + break; + case COMP_SETCOMP: + VISIT(c, expr, elt); + ADDOP_I(c, SET_ADD, gen_index + 1); + break; + case COMP_DICTCOMP: + /* With 'd[k] = v', v is evaluated before k, so we do + the same. */ + VISIT(c, expr, val); + VISIT(c, expr, elt); + ADDOP_I(c, MAP_ADD, gen_index + 1); + break; + default: + return 0; + } compiler_use_next_block(c, skip); } compiler_use_next_block(c, if_cleanup); ADDOP_JABS(c, JUMP_ABSOLUTE, start); compiler_use_next_block(c, anchor); - ADDOP(c, POP_BLOCK); - compiler_pop_fblock(c, LOOP, start); - compiler_use_next_block(c, end); return 1; } static int -compiler_genexp(struct compiler *c, expr_ty e) +compiler_comprehension(struct compiler *c, expr_ty e, int type, identifier name, + asdl_seq *generators, expr_ty elt, expr_ty val) { - static identifier name; - PyCodeObject *co; - expr_ty outermost_iter = ((comprehension_ty) - (asdl_seq_GET(e->v.GeneratorExp.generators, - 0)))->iter; + PyCodeObject *co = NULL; + expr_ty outermost_iter; - if (!name) { - name = PyString_FromString(""); - if (!name) - return 0; - } + outermost_iter = ((comprehension_ty) + asdl_seq_GET(generators, 0))->iter; if (!compiler_enter_scope(c, name, (void *)e, e->lineno)) - return 0; - compiler_genexp_generator(c, e->v.GeneratorExp.generators, 0, - e->v.GeneratorExp.elt); + goto error; + + if (type != COMP_GENEXP) { + int op; + switch (type) { + case COMP_SETCOMP: + op = BUILD_SET; + break; + case COMP_DICTCOMP: + op = BUILD_MAP; + break; + default: + PyErr_Format(PyExc_SystemError, + "unknown comprehension type %d", type); + goto error_in_scope; + } + + ADDOP_I(c, op, 0); + } + + if (!compiler_comprehension_generator(c, generators, 0, elt, + val, type)) + goto error_in_scope; + + if (type != COMP_GENEXP) { + ADDOP(c, RETURN_VALUE); + } + co = assemble(c, 1); compiler_exit_scope(c); if (co == NULL) - return 0; + goto error; - compiler_make_closure(c, co, 0); + if (!compiler_make_closure(c, co, 0)) + goto error; Py_DECREF(co); VISIT(c, expr, outermost_iter); ADDOP(c, GET_ITER); ADDOP_I(c, CALL_FUNCTION, 1); - return 1; +error_in_scope: + compiler_exit_scope(c); +error: + Py_XDECREF(co); + return 0; +} + +static int +compiler_genexp(struct compiler *c, expr_ty e) +{ + static identifier name; + if (!name) { + name = PyString_FromString(""); + if (!name) + return 0; + } + assert(e->kind == GeneratorExp_kind); + return compiler_comprehension(c, e, COMP_GENEXP, name, + e->v.GeneratorExp.generators, + e->v.GeneratorExp.elt, NULL); +} + +static int +compiler_setcomp(struct compiler *c, expr_ty e) +{ + static identifier name; + if (!name) { + name = PyString_FromString(""); + if (!name) + return 0; + } + assert(e->kind == SetComp_kind); + return compiler_comprehension(c, e, COMP_SETCOMP, name, + e->v.SetComp.generators, + e->v.SetComp.elt, NULL); +} + +static int +compiler_dictcomp(struct compiler *c, expr_ty e) +{ + static identifier name; + if (!name) { + name = PyString_FromString(""); + if (!name) + return 0; + } + assert(e->kind == DictComp_kind); + return compiler_comprehension(c, e, COMP_DICTCOMP, name, + e->v.DictComp.generators, + e->v.DictComp.key, e->v.DictComp.value); } static int @@ -2902,6 +3008,10 @@ break; case ListComp_kind: return compiler_listcomp(c, e); + case SetComp_kind: + return compiler_setcomp(c, e); + case DictComp_kind: + return compiler_dictcomp(c, e); case GeneratorExp_kind: return compiler_genexp(c, e); case Yield_kind: Modified: python/trunk/Python/graminit.c ============================================================================== --- python/trunk/Python/graminit.c (original) +++ python/trunk/Python/graminit.c Mon Jan 11 23:36:12 2010 @@ -1550,42 +1550,57 @@ static arc arcs_73_0[1] = { {28, 1}, }; -static arc arcs_73_1[3] = { +static arc arcs_73_1[4] = { {23, 2}, - {29, 3}, + {157, 3}, + {29, 4}, {0, 1}, }; static arc arcs_73_2[1] = { - {28, 4}, -}; -static arc arcs_73_3[2] = { {28, 5}, +}; +static arc arcs_73_3[1] = { {0, 3}, }; static arc arcs_73_4[2] = { - {29, 6}, + {28, 6}, {0, 4}, }; -static arc arcs_73_5[2] = { - {29, 3}, +static arc arcs_73_5[3] = { + {157, 3}, + {29, 7}, {0, 5}, }; static arc arcs_73_6[2] = { - {28, 7}, + {29, 4}, {0, 6}, }; -static arc arcs_73_7[1] = { - {23, 2}, +static arc arcs_73_7[2] = { + {28, 8}, + {0, 7}, +}; +static arc arcs_73_8[1] = { + {23, 9}, +}; +static arc arcs_73_9[1] = { + {28, 10}, +}; +static arc arcs_73_10[2] = { + {29, 7}, + {0, 10}, }; -static state states_73[8] = { +static state states_73[11] = { {1, arcs_73_0}, - {3, arcs_73_1}, + {4, arcs_73_1}, {1, arcs_73_2}, - {2, arcs_73_3}, + {1, arcs_73_3}, {2, arcs_73_4}, - {2, arcs_73_5}, + {3, arcs_73_5}, {2, arcs_73_6}, - {1, arcs_73_7}, + {2, arcs_73_7}, + {1, arcs_73_8}, + {1, arcs_73_9}, + {2, arcs_73_10}, }; static arc arcs_74_0[1] = { {162, 1}, @@ -1964,7 +1979,7 @@ "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\044\015\000\000"}, {319, "listmaker", 0, 5, states_63, "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, - {320, "testlist_gexp", 0, 5, states_64, + {320, "testlist_comp", 0, 5, states_64, "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, {321, "lambdef", 0, 5, states_65, "\000\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000"}, @@ -1982,7 +1997,7 @@ "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, {328, "dictmaker", 0, 5, states_72, "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, - {329, "dictorsetmaker", 0, 8, states_73, + {329, "dictorsetmaker", 0, 11, states_73, "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, {330, "classdef", 0, 8, states_74, "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000"}, @@ -1996,11 +2011,11 @@ "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, {335, "list_if", 0, 4, states_79, "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, - {336, "gen_iter", 0, 2, states_80, + {336, "comp_iter", 0, 2, states_80, "\000\000\000\000\000\000\000\000\000\000\000\020\001\000\000\000\000\000\000\000\000\000"}, - {337, "gen_for", 0, 6, states_81, + {337, "comp_for", 0, 6, states_81, "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, - {338, "gen_if", 0, 4, states_82, + {338, "comp_if", 0, 4, states_82, "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, {339, "testlist1", 0, 2, states_83, "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, Modified: python/trunk/Python/import.c ============================================================================== --- python/trunk/Python/import.c (original) +++ python/trunk/Python/import.c Mon Jan 11 23:36:12 2010 @@ -76,9 +76,10 @@ introduce POP_JUMP_IF_FALSE and POP_JUMP_IF_TRUE) Python 2.7a0 62191 (introduce SETUP_WITH) Python 2.7a0 62201 (introduce BUILD_SET) + Python 2.7a0 62211 (introduce MAP_ADD and SET_ADD) . */ -#define MAGIC (62201 | ((long)'\r'<<16) | ((long)'\n'<<24)) +#define MAGIC (62211 | ((long)'\r'<<16) | ((long)'\n'<<24)) /* Magic word as global; note that _PyImport_Init() can change the value of this global to accommodate for alterations of how the Modified: python/trunk/Python/symtable.c ============================================================================== --- python/trunk/Python/symtable.c (original) +++ python/trunk/Python/symtable.c Mon Jan 11 23:36:12 2010 @@ -166,6 +166,8 @@ static int symtable_visit_stmt(struct symtable *st, stmt_ty s); static int symtable_visit_expr(struct symtable *st, expr_ty s); static int symtable_visit_genexp(struct symtable *st, expr_ty s); +static int symtable_visit_setcomp(struct symtable *st, expr_ty e); +static int symtable_visit_dictcomp(struct symtable *st, expr_ty e); static int symtable_visit_arguments(struct symtable *st, arguments_ty); static int symtable_visit_excepthandler(struct symtable *st, excepthandler_ty); static int symtable_visit_alias(struct symtable *st, alias_ty); @@ -177,7 +179,8 @@ static int symtable_implicit_arg(struct symtable *st, int pos); -static identifier top = NULL, lambda = NULL, genexpr = NULL; +static identifier top = NULL, lambda = NULL, genexpr = NULL, setcomp = NULL, + dictcomp = NULL; #define GET_IDENTIFIER(VAR) \ ((VAR) ? (VAR) : ((VAR) = PyString_InternFromString(# VAR))) @@ -1222,6 +1225,14 @@ if (!symtable_visit_genexp(st, e)) return 0; break; + case SetComp_kind: + if (!symtable_visit_setcomp(st, e)) + return 0; + break; + case DictComp_kind: + if (!symtable_visit_dictcomp(st, e)) + return 0; + break; case Yield_kind: if (e->v.Yield.value) VISIT(st, expr, e->v.Yield.value); @@ -1462,28 +1473,81 @@ return 1; } +static int +symtable_new_tmpname(struct symtable *st) +{ + char tmpname[256]; + identifier tmp; + + PyOS_snprintf(tmpname, sizeof(tmpname), "_[%d]", + ++st->st_cur->ste_tmpname); + tmp = PyString_InternFromString(tmpname); + if (!tmp) + return 0; + if (!symtable_add_def(st, tmp, DEF_LOCAL)) + return 0; + Py_DECREF(tmp); + return 1; +} + static int -symtable_visit_genexp(struct symtable *st, expr_ty e) +symtable_handle_comprehension(struct symtable *st, expr_ty e, + identifier scope_name, asdl_seq *generators, + expr_ty elt, expr_ty value) { + int is_generator = (e->kind == GeneratorExp_kind); + int needs_tmp = !is_generator; comprehension_ty outermost = ((comprehension_ty) - (asdl_seq_GET(e->v.GeneratorExp.generators, 0))); + asdl_seq_GET(generators, 0)); /* Outermost iterator is evaluated in current scope */ VISIT(st, expr, outermost->iter); - /* Create generator scope for the rest */ - if (!GET_IDENTIFIER(genexpr) || - !symtable_enter_block(st, genexpr, FunctionBlock, (void *)e, e->lineno)) { + /* Create comprehension scope for the rest */ + if (!scope_name || + !symtable_enter_block(st, scope_name, FunctionBlock, (void *)e, 0)) { return 0; } - st->st_cur->ste_generator = 1; + st->st_cur->ste_generator = is_generator; /* Outermost iter is received as an argument */ if (!symtable_implicit_arg(st, 0)) { symtable_exit_block(st, (void *)e); return 0; } + /* Allocate temporary name if needed */ + if (needs_tmp && !symtable_new_tmpname(st)) { + symtable_exit_block(st, (void *)e); + return 0; + } VISIT_IN_BLOCK(st, expr, outermost->target, (void*)e); VISIT_SEQ_IN_BLOCK(st, expr, outermost->ifs, (void*)e); VISIT_SEQ_TAIL_IN_BLOCK(st, comprehension, - e->v.GeneratorExp.generators, 1, (void*)e); - VISIT_IN_BLOCK(st, expr, e->v.GeneratorExp.elt, (void*)e); + generators, 1, (void*)e); + if (value) + VISIT_IN_BLOCK(st, expr, value, (void*)e); + VISIT_IN_BLOCK(st, expr, elt, (void*)e); return symtable_exit_block(st, (void *)e); } + +static int +symtable_visit_genexp(struct symtable *st, expr_ty e) +{ + return symtable_handle_comprehension(st, e, GET_IDENTIFIER(genexpr), + e->v.GeneratorExp.generators, + e->v.GeneratorExp.elt, NULL); +} + +static int +symtable_visit_setcomp(struct symtable *st, expr_ty e) +{ + return symtable_handle_comprehension(st, e, GET_IDENTIFIER(setcomp), + e->v.SetComp.generators, + e->v.SetComp.elt, NULL); +} + +static int +symtable_visit_dictcomp(struct symtable *st, expr_ty e) +{ + return symtable_handle_comprehension(st, e, GET_IDENTIFIER(dictcomp), + e->v.DictComp.generators, + e->v.DictComp.key, + e->v.DictComp.value); +} From python-checkins at python.org Mon Jan 11 23:46:43 2010 From: python-checkins at python.org (alexandre.vassalotti) Date: Mon, 11 Jan 2010 22:46:43 -0000 Subject: [Python-checkins] r77423 - python/trunk/Python/Python-ast.c Message-ID: Author: alexandre.vassalotti Date: Mon Jan 11 23:46:43 2010 New Revision: 77423 Log: Update version information for AST changes in r77422. Modified: python/trunk/Python/Python-ast.c Modified: python/trunk/Python/Python-ast.c ============================================================================== --- python/trunk/Python/Python-ast.c (original) +++ python/trunk/Python/Python-ast.c Mon Jan 11 23:46:43 2010 @@ -2,7 +2,7 @@ /* - __version__ 77400. + __version__ 77422. This module must be committed separately after each AST grammar change; The __version__ number is set to the revision number of the commit @@ -6569,7 +6569,7 @@ if (PyDict_SetItemString(d, "AST", (PyObject*)&AST_type) < 0) return; if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0) return; - if (PyModule_AddStringConstant(m, "__version__", "77400") < 0) + if (PyModule_AddStringConstant(m, "__version__", "77422") < 0) return; if (PyDict_SetItemString(d, "mod", (PyObject*)mod_type) < 0) return; if (PyDict_SetItemString(d, "Module", (PyObject*)Module_type) < 0) From python-checkins at python.org Mon Jan 11 23:50:30 2010 From: python-checkins at python.org (tarek.ziade) Date: Mon, 11 Jan 2010 22:50:30 -0000 Subject: [Python-checkins] r77424 - in python/trunk: Lib/distutils/ccompiler.py Misc/NEWS Message-ID: Author: tarek.ziade Date: Mon Jan 11 23:50:29 2010 New Revision: 77424 Log: Fixed #5372: .o files are now always rebuilt because file age test don't work in some case Modified: python/trunk/Lib/distutils/ccompiler.py python/trunk/Misc/NEWS Modified: python/trunk/Lib/distutils/ccompiler.py ============================================================================== --- python/trunk/Lib/distutils/ccompiler.py (original) +++ python/trunk/Lib/distutils/ccompiler.py Mon Jan 11 23:50:29 2010 @@ -337,10 +337,7 @@ def _setup_compile(self, outdir, macros, incdirs, sources, depends, extra): - """Process arguments and decide which source files to compile. - - Merges _fix_compile_args() and _prep_compile(). - """ + """Process arguments and decide which source files to compile.""" if outdir is None: outdir = self.output_dir elif not isinstance(outdir, str): @@ -370,41 +367,6 @@ output_dir=outdir) assert len(objects) == len(sources) - # XXX should redo this code to eliminate skip_source entirely. - # XXX instead create build and issue skip messages inline - - if self.force: - skip_source = {} # rebuild everything - for source in sources: - skip_source[source] = 0 - elif depends is None: - # If depends is None, figure out which source files we - # have to recompile according to a simplistic check. We - # just compare the source and object file, no deep - # dependency checking involving header files. - skip_source = {} # rebuild everything - for source in sources: # no wait, rebuild nothing - skip_source[source] = 1 - - n_sources, n_objects = newer_pairwise(sources, objects) - for source in n_sources: # no really, only rebuild what's - skip_source[source] = 0 # out-of-date - else: - # If depends is a list of files, then do a different - # simplistic check. Assume that each object depends on - # its source and all files in the depends list. - skip_source = {} - # L contains all the depends plus a spot at the end for a - # particular source file - L = depends[:] + [None] - for i in range(len(objects)): - source = sources[i] - L[-1] = source - if newer_group(L, objects[i]): - skip_source[source] = 0 - else: - skip_source[source] = 1 - pp_opts = gen_preprocess_options(macros, incdirs) build = {} @@ -413,10 +375,7 @@ obj = objects[i] ext = os.path.splitext(src)[1] self.mkpath(os.path.dirname(obj)) - if skip_source[src]: - log.debug("skipping %s (%s up-to-date)", src, obj) - else: - build[obj] = src, ext + build[obj] = (src, ext) return macros, objects, extra, pp_opts, build @@ -463,56 +422,6 @@ # _fix_compile_args () - - def _prep_compile(self, sources, output_dir, depends=None): - """Decide which souce files must be recompiled. - - Determine the list of object files corresponding to 'sources', - and figure out which ones really need to be recompiled. - Return a list of all object files and a dictionary telling - which source files can be skipped. - """ - # Get the list of expected output (object) files - objects = self.object_filenames(sources, output_dir=output_dir) - assert len(objects) == len(sources) - - if self.force: - skip_source = {} # rebuild everything - for source in sources: - skip_source[source] = 0 - elif depends is None: - # If depends is None, figure out which source files we - # have to recompile according to a simplistic check. We - # just compare the source and object file, no deep - # dependency checking involving header files. - skip_source = {} # rebuild everything - for source in sources: # no wait, rebuild nothing - skip_source[source] = 1 - - n_sources, n_objects = newer_pairwise(sources, objects) - for source in n_sources: # no really, only rebuild what's - skip_source[source] = 0 # out-of-date - else: - # If depends is a list of files, then do a different - # simplistic check. Assume that each object depends on - # its source and all files in the depends list. - skip_source = {} - # L contains all the depends plus a spot at the end for a - # particular source file - L = depends[:] + [None] - for i in range(len(objects)): - source = sources[i] - L[-1] = source - if newer_group(L, objects[i]): - skip_source[source] = 0 - else: - skip_source[source] = 1 - - return objects, skip_source - - # _prep_compile () - - def _fix_object_args (self, objects, output_dir): """Typecheck and fix up some arguments supplied to various methods. Specifically: ensure that 'objects' is a list; if output_dir is @@ -679,7 +588,6 @@ Raises CompileError on failure. """ - # A concrete compiler class can either override this method # entirely or implement _compile(). Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Mon Jan 11 23:50:29 2010 @@ -19,6 +19,10 @@ Library ------- +- Issue #5372: Drop the reuse of .o files in Distutils' ccompiler (since + Extension extra options may change the output without changing the .c + file). Initial patch by Collin Winter. + What's New in Python 2.7 alpha 2? ================================= From python-checkins at python.org Mon Jan 11 23:54:58 2010 From: python-checkins at python.org (tarek.ziade) Date: Mon, 11 Jan 2010 22:54:58 -0000 Subject: [Python-checkins] r77425 - in python/branches/release26-maint: Lib/distutils/ccompiler.py Misc/NEWS Message-ID: Author: tarek.ziade Date: Mon Jan 11 23:54:57 2010 New Revision: 77425 Log: Merged revisions 77424 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77424 | tarek.ziade | 2010-01-11 23:50:29 +0100 (Mon, 11 Jan 2010) | 1 line Fixed #5372: .o files are now always rebuilt because file age test don't work in some case ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/distutils/ccompiler.py python/branches/release26-maint/Misc/NEWS Modified: python/branches/release26-maint/Lib/distutils/ccompiler.py ============================================================================== --- python/branches/release26-maint/Lib/distutils/ccompiler.py (original) +++ python/branches/release26-maint/Lib/distutils/ccompiler.py Mon Jan 11 23:54:57 2010 @@ -338,10 +338,7 @@ def _setup_compile(self, outdir, macros, incdirs, sources, depends, extra): - """Process arguments and decide which source files to compile. - - Merges _fix_compile_args() and _prep_compile(). - """ + """Process arguments and decide which source files to compile.""" if outdir is None: outdir = self.output_dir elif type(outdir) is not StringType: @@ -371,41 +368,6 @@ output_dir=outdir) assert len(objects) == len(sources) - # XXX should redo this code to eliminate skip_source entirely. - # XXX instead create build and issue skip messages inline - - if self.force: - skip_source = {} # rebuild everything - for source in sources: - skip_source[source] = 0 - elif depends is None: - # If depends is None, figure out which source files we - # have to recompile according to a simplistic check. We - # just compare the source and object file, no deep - # dependency checking involving header files. - skip_source = {} # rebuild everything - for source in sources: # no wait, rebuild nothing - skip_source[source] = 1 - - n_sources, n_objects = newer_pairwise(sources, objects) - for source in n_sources: # no really, only rebuild what's - skip_source[source] = 0 # out-of-date - else: - # If depends is a list of files, then do a different - # simplistic check. Assume that each object depends on - # its source and all files in the depends list. - skip_source = {} - # L contains all the depends plus a spot at the end for a - # particular source file - L = depends[:] + [None] - for i in range(len(objects)): - source = sources[i] - L[-1] = source - if newer_group(L, objects[i]): - skip_source[source] = 0 - else: - skip_source[source] = 1 - pp_opts = gen_preprocess_options(macros, incdirs) build = {} @@ -414,10 +376,7 @@ obj = objects[i] ext = os.path.splitext(src)[1] self.mkpath(os.path.dirname(obj)) - if skip_source[src]: - log.debug("skipping %s (%s up-to-date)", src, obj) - else: - build[obj] = src, ext + build[obj] = (src, ext) return macros, objects, extra, pp_opts, build @@ -464,7 +423,6 @@ # _fix_compile_args () - def _prep_compile(self, sources, output_dir, depends=None): """Decide which souce files must be recompiled. @@ -477,42 +435,9 @@ objects = self.object_filenames(sources, output_dir=output_dir) assert len(objects) == len(sources) - if self.force: - skip_source = {} # rebuild everything - for source in sources: - skip_source[source] = 0 - elif depends is None: - # If depends is None, figure out which source files we - # have to recompile according to a simplistic check. We - # just compare the source and object file, no deep - # dependency checking involving header files. - skip_source = {} # rebuild everything - for source in sources: # no wait, rebuild nothing - skip_source[source] = 1 - - n_sources, n_objects = newer_pairwise(sources, objects) - for source in n_sources: # no really, only rebuild what's - skip_source[source] = 0 # out-of-date - else: - # If depends is a list of files, then do a different - # simplistic check. Assume that each object depends on - # its source and all files in the depends list. - skip_source = {} - # L contains all the depends plus a spot at the end for a - # particular source file - L = depends[:] + [None] - for i in range(len(objects)): - source = sources[i] - L[-1] = source - if newer_group(L, objects[i]): - skip_source[source] = 0 - else: - skip_source[source] = 1 - - return objects, skip_source - - # _prep_compile () - + # Return an empty dict for the "which source files can be skipped" + # return value to preserve API compatibility. + return objects, {} def _fix_object_args (self, objects, output_dir): """Typecheck and fix up some arguments supplied to various methods. @@ -680,7 +605,6 @@ Raises CompileError on failure. """ - # A concrete compiler class can either override this method # entirely or implement _compile(). Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Mon Jan 11 23:54:57 2010 @@ -48,6 +48,10 @@ Library ------- +- Issue #5372: Drop the reuse of .o files in Distutils' ccompiler (since + Extension extra options may change the output without changing the .c + file). Initial patch by Collin Winter. + - Issue #7617: Make sure distutils.unixccompiler.UnixCCompiler recognizes gcc when it has a fully qualified configuration prefix. Initial patch by Arfrever. From python-checkins at python.org Tue Jan 12 00:13:49 2010 From: python-checkins at python.org (alexandre.vassalotti) Date: Mon, 11 Jan 2010 23:13:49 -0000 Subject: [Python-checkins] r77426 - python/trunk/Misc/NEWS Message-ID: Author: alexandre.vassalotti Date: Tue Jan 12 00:13:49 2010 New Revision: 77426 Log: Add missing NEWS entry for r77422. Modified: python/trunk/Misc/NEWS Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Tue Jan 12 00:13:49 2010 @@ -16,6 +16,8 @@ - Issue #2335: Backport set literals syntax from Python 3.x. +- Issue #2333: Backport set and dict comprehensions syntax from Python 3.x. + Library ------- From python-checkins at python.org Tue Jan 12 00:15:52 2010 From: python-checkins at python.org (tarek.ziade) Date: Mon, 11 Jan 2010 23:15:52 -0000 Subject: [Python-checkins] r77427 - in python/branches/py3k: Lib/distutils/ccompiler.py Misc/NEWS Message-ID: Author: tarek.ziade Date: Tue Jan 12 00:15:52 2010 New Revision: 77427 Log: Merged revisions 77424 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77424 | tarek.ziade | 2010-01-11 23:50:29 +0100 (Mon, 11 Jan 2010) | 1 line Fixed #5372: .o files are now always rebuilt because file age test don't work in some case ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/distutils/ccompiler.py python/branches/py3k/Misc/NEWS Modified: python/branches/py3k/Lib/distutils/ccompiler.py ============================================================================== --- python/branches/py3k/Lib/distutils/ccompiler.py (original) +++ python/branches/py3k/Lib/distutils/ccompiler.py Tue Jan 12 00:15:52 2010 @@ -314,10 +314,7 @@ def _setup_compile(self, outdir, macros, incdirs, sources, depends, extra): - """Process arguments and decide which source files to compile. - - Merges _fix_compile_args() and _prep_compile(). - """ + """Process arguments and decide which source files to compile.""" if outdir is None: outdir = self.output_dir elif not isinstance(outdir, str): @@ -346,41 +343,6 @@ output_dir=outdir) assert len(objects) == len(sources) - # XXX should redo this code to eliminate skip_source entirely. - # XXX instead create build and issue skip messages inline - - if self.force: - skip_source = {} # rebuild everything - for source in sources: - skip_source[source] = 0 - elif depends is None: - # If depends is None, figure out which source files we - # have to recompile according to a simplistic check. We - # just compare the source and object file, no deep - # dependency checking involving header files. - skip_source = {} # rebuild everything - for source in sources: # no wait, rebuild nothing - skip_source[source] = 1 - - n_sources, n_objects = newer_pairwise(sources, objects) - for source in n_sources: # no really, only rebuild what's - skip_source[source] = 0 # out-of-date - else: - # If depends is a list of files, then do a different - # simplistic check. Assume that each object depends on - # its source and all files in the depends list. - skip_source = {} - # L contains all the depends plus a spot at the end for a - # particular source file - L = depends[:] + [None] - for i in range(len(objects)): - source = sources[i] - L[-1] = source - if newer_group(L, objects[i]): - skip_source[source] = 0 - else: - skip_source[source] = 1 - pp_opts = gen_preprocess_options(macros, incdirs) build = {} @@ -389,10 +351,7 @@ obj = objects[i] ext = os.path.splitext(src)[1] self.mkpath(os.path.dirname(obj)) - if skip_source[src]: - log.debug("skipping %s (%s up-to-date)", src, obj) - else: - build[obj] = src, ext + build[obj] = (src, ext) return macros, objects, extra, pp_opts, build @@ -437,53 +396,6 @@ return output_dir, macros, include_dirs - def _prep_compile(self, sources, output_dir, depends=None): - """Decide which souce files must be recompiled. - - Determine the list of object files corresponding to 'sources', - and figure out which ones really need to be recompiled. - Return a list of all object files and a dictionary telling - which source files can be skipped. - """ - # Get the list of expected output (object) files - objects = self.object_filenames(sources, output_dir=output_dir) - assert len(objects) == len(sources) - - if self.force: - skip_source = {} # rebuild everything - for source in sources: - skip_source[source] = 0 - elif depends is None: - # If depends is None, figure out which source files we - # have to recompile according to a simplistic check. We - # just compare the source and object file, no deep - # dependency checking involving header files. - skip_source = {} # rebuild everything - for source in sources: # no wait, rebuild nothing - skip_source[source] = 1 - - n_sources, n_objects = newer_pairwise(sources, objects) - for source in n_sources: # no really, only rebuild what's - skip_source[source] = 0 # out-of-date - else: - # If depends is a list of files, then do a different - # simplistic check. Assume that each object depends on - # its source and all files in the depends list. - skip_source = {} - # L contains all the depends plus a spot at the end for a - # particular source file - L = depends[:] + [None] - for i in range(len(objects)): - source = sources[i] - L[-1] = source - if newer_group(L, objects[i]): - skip_source[source] = 0 - else: - skip_source[source] = 1 - - return objects, skip_source - - def _fix_object_args(self, objects, output_dir): """Typecheck and fix up some arguments supplied to various methods. Specifically: ensure that 'objects' is a list; if output_dir is Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Tue Jan 12 00:15:52 2010 @@ -200,6 +200,10 @@ Library ------- +- Issue #5372: Drop the reuse of .o files in Distutils' ccompiler (since + Extension extra options may change the output without changing the .c + file). Initial patch by Collin Winter. + - Issue #7617: Make sure distutils.unixccompiler.UnixCCompiler recognizes gcc when it has a fully qualified configuration prefix. Initial patch by Arfrever. From python-checkins at python.org Tue Jan 12 00:17:13 2010 From: python-checkins at python.org (alexandre.vassalotti) Date: Mon, 11 Jan 2010 23:17:13 -0000 Subject: [Python-checkins] r77428 - in python/trunk: Doc/glossary.rst Doc/library/stdtypes.rst Include/dictobject.h Lib/test/test_dictviews.py Misc/NEWS Objects/dictobject.c Message-ID: Author: alexandre.vassalotti Date: Tue Jan 12 00:17:10 2010 New Revision: 77428 Log: Issue #1967: Backport dictionary views. Added: python/trunk/Lib/test/test_dictviews.py Modified: python/trunk/Doc/glossary.rst python/trunk/Doc/library/stdtypes.rst python/trunk/Include/dictobject.h python/trunk/Misc/NEWS python/trunk/Objects/dictobject.c Modified: python/trunk/Doc/glossary.rst ============================================================================== --- python/trunk/Doc/glossary.rst (original) +++ python/trunk/Doc/glossary.rst Tue Jan 12 00:17:10 2010 @@ -540,6 +540,13 @@ object has a type. An object's type is accessible as its :attr:`__class__` attribute or can be retrieved with ``type(obj)``. + view + The objects returned from :meth:`dict.viewkeys`, :meth:`dict.viewvalues`, + and :meth:`dict.viewitems` are called dictionary views. They are lazy + sequences that will see changes in the underlying dictionary. To force + the dictionary view to become a full list use ``list(dictview)``. See + :ref:`dict-views`. + virtual machine A computer defined entirely in software. Python's virtual machine executes the :term:`bytecode` emitted by the bytecode compiler. Modified: python/trunk/Doc/library/stdtypes.rst ============================================================================== --- python/trunk/Doc/library/stdtypes.rst (original) +++ python/trunk/Doc/library/stdtypes.rst Tue Jan 12 00:17:10 2010 @@ -2106,6 +2106,121 @@ Return a copy of the dictionary's list of values. See the note for :meth:`dict.items`. + .. method:: viewitems() + + Return a new view of the dictionary's items (``(key, value)`` pairs). See + below for documentation of view objects. + + .. versionadded:: 2.7 + + .. method:: viewkeys() + + Return a new view of the dictionary's keys. See below for documentation of + view objects. + + .. versionadded:: 2.7 + + .. method:: viewvalues() + + Return a new view of the dictionary's values. See below for documentation of + view objects. + + .. versionadded:: 2.7 + + +.. _dict-views: + +Dictionary view objects +----------------------- + +The objects returned by :meth:`dict.viewkeys`, :meth:`dict.viewvalues` and +:meth:`dict.viewitems` are *view objects*. They provide a dynamic view on the +dictionary's entries, which means that when the dictionary changes, the view +reflects these changes. + +Dictionary views can be iterated over to yield their respective data, and +support membership tests: + +.. describe:: len(dictview) + + Return the number of entries in the dictionary. + +.. describe:: iter(dictview) + + Return an iterator over the keys, values or items (represented as tuples of + ``(key, value)``) in the dictionary. + + Keys and values are iterated over in an arbitrary order which is non-random, + varies across Python implementations, and depends on the dictionary's history + of insertions and deletions. If keys, values and items views are iterated + over with no intervening modifications to the dictionary, the order of items + will directly correspond. This allows the creation of ``(value, key)`` pairs + using :func:`zip`: ``pairs = zip(d.values(), d.keys())``. Another way to + create the same list is ``pairs = [(v, k) for (k, v) in d.items()]``. + + Iterating views while adding or deleting entries in the dictionary may raise + a :exc:`RuntimeError` or fail to iterate over all entries. + +.. describe:: x in dictview + + Return ``True`` if *x* is in the underlying dictionary's keys, values or + items (in the latter case, *x* should be a ``(key, value)`` tuple). + + +Keys views are set-like since their entries are unique and hashable. If all +values are hashable, so that (key, value) pairs are unique and hashable, then +the items view is also set-like. (Values views are not treated as set-like +since the entries are generally not unique.) Then these set operations are +available ("other" refers either to another view or a set): + +.. describe:: dictview & other + + Return the intersection of the dictview and the other object as a new set. + +.. describe:: dictview | other + + Return the union of the dictview and the other object as a new set. + +.. describe:: dictview - other + + Return the difference between the dictview and the other object (all elements + in *dictview* that aren't in *other*) as a new set. + +.. describe:: dictview ^ other + + Return the symmetric difference (all elements either in *dictview* or + *other*, but not in both) of the dictview and the other object as a new set. + + +An example of dictionary view usage:: + + >>> dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500} + >>> keys = dishes.viewkeys() + >>> values = dishes.viewvalues() + + >>> # iteration + >>> n = 0 + >>> for val in values: + ... n += val + >>> print(n) + 504 + + >>> # keys and values are iterated over in the same order + >>> list(keys) + ['eggs', 'bacon', 'sausage', 'spam'] + >>> list(values) + [2, 1, 1, 500] + + >>> # view objects are dynamic and reflect dict changes + >>> del dishes['eggs'] + >>> del dishes['sausage'] + >>> list(keys) + ['spam', 'bacon'] + + >>> # set operations + >>> keys & {'eggs', 'bacon', 'salad'} + {'bacon'} + .. _bltin-file-objects: Modified: python/trunk/Include/dictobject.h ============================================================================== --- python/trunk/Include/dictobject.h (original) +++ python/trunk/Include/dictobject.h Tue Jan 12 00:17:10 2010 @@ -89,10 +89,22 @@ }; PyAPI_DATA(PyTypeObject) PyDict_Type; +PyAPI_DATA(PyTypeObject) PyDictIterKey_Type; +PyAPI_DATA(PyTypeObject) PyDictIterValue_Type; +PyAPI_DATA(PyTypeObject) PyDictIterItem_Type; +PyAPI_DATA(PyTypeObject) PyDictKeys_Type; +PyAPI_DATA(PyTypeObject) PyDictItems_Type; +PyAPI_DATA(PyTypeObject) PyDictValues_Type; #define PyDict_Check(op) \ PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS) #define PyDict_CheckExact(op) (Py_TYPE(op) == &PyDict_Type) +#define PyDictKeys_Check(op) (Py_TYPE(op) == &PyDictKeys_Type) +#define PyDictItems_Check(op) (Py_TYPE(op) == &PyDictItems_Type) +#define PyDictValues_Check(op) (Py_TYPE(op) == &PyDictValues_Type) +/* This excludes Values, since they are not sets. */ +# define PyDictViewSet_Check(op) \ + (PyDictKeys_Check(op) || PyDictItems_Check(op)) PyAPI_FUNC(PyObject *) PyDict_New(void); PyAPI_FUNC(PyObject *) PyDict_GetItem(PyObject *mp, PyObject *key); Added: python/trunk/Lib/test/test_dictviews.py ============================================================================== --- (empty file) +++ python/trunk/Lib/test/test_dictviews.py Tue Jan 12 00:17:10 2010 @@ -0,0 +1,84 @@ +import unittest +from test import test_support + +class DictSetTest(unittest.TestCase): + + def test_constructors_not_callable(self): + kt = type({}.viewkeys()) + self.assertRaises(TypeError, kt, {}) + self.assertRaises(TypeError, kt) + it = type({}.viewitems()) + self.assertRaises(TypeError, it, {}) + self.assertRaises(TypeError, it) + vt = type({}.viewvalues()) + self.assertRaises(TypeError, vt, {}) + self.assertRaises(TypeError, vt) + + def test_dict_keys(self): + d = {1: 10, "a": "ABC"} + keys = d.viewkeys() + self.assertEqual(len(keys), 2) + self.assertEqual(set(keys), set([1, "a"])) + self.assertEqual(keys, set([1, "a"])) + self.assertNotEqual(keys, set([1, "a", "b"])) + self.assertNotEqual(keys, set([1, "b"])) + self.assertNotEqual(keys, set([1])) + self.assertNotEqual(keys, 42) + self.assert_(1 in keys) + self.assert_("a" in keys) + self.assert_(10 not in keys) + self.assert_("Z" not in keys) + self.assertEqual(d.viewkeys(), d.viewkeys()) + e = {1: 11, "a": "def"} + self.assertEqual(d.viewkeys(), e.viewkeys()) + del e["a"] + self.assertNotEqual(d.viewkeys(), e.viewkeys()) + + def test_dict_items(self): + d = {1: 10, "a": "ABC"} + items = d.viewitems() + self.assertEqual(len(items), 2) + self.assertEqual(set(items), set([(1, 10), ("a", "ABC")])) + self.assertEqual(items, set([(1, 10), ("a", "ABC")])) + self.assertNotEqual(items, set([(1, 10), ("a", "ABC"), "junk"])) + self.assertNotEqual(items, set([(1, 10), ("a", "def")])) + self.assertNotEqual(items, set([(1, 10)])) + self.assertNotEqual(items, 42) + self.assert_((1, 10) in items) + self.assert_(("a", "ABC") in items) + self.assert_((1, 11) not in items) + self.assert_(1 not in items) + self.assert_(() not in items) + self.assert_((1,) not in items) + self.assert_((1, 2, 3) not in items) + self.assertEqual(d.viewitems(), d.viewitems()) + e = d.copy() + self.assertEqual(d.viewitems(), e.viewitems()) + e["a"] = "def" + self.assertNotEqual(d.viewitems(), e.viewitems()) + + def test_dict_mixed_keys_items(self): + d = {(1, 1): 11, (2, 2): 22} + e = {1: 1, 2: 2} + self.assertEqual(d.viewkeys(), e.viewitems()) + self.assertNotEqual(d.viewitems(), e.viewkeys()) + + def test_dict_values(self): + d = {1: 10, "a": "ABC"} + values = d.viewvalues() + self.assertEqual(set(values), set([10, "ABC"])) + self.assertEqual(len(values), 2) + + def test_dict_repr(self): + d = {1: 10, "a": "ABC"} + self.assertTrue(isinstance(repr(d), str)) + self.assertTrue(isinstance(repr(d.viewitems()), str)) + self.assertTrue(isinstance(repr(d.viewkeys()), str)) + self.assertTrue(isinstance(repr(d.viewvalues()), str)) + + +def test_main(): + test_support.run_unittest(DictSetTest) + +if __name__ == "__main__": + test_main() Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Tue Jan 12 00:17:10 2010 @@ -18,6 +18,8 @@ - Issue #2333: Backport set and dict comprehensions syntax from Python 3.x. +- Issue #1967: Backport dictionary views from Python 3.x. + Library ------- Modified: python/trunk/Objects/dictobject.c ============================================================================== --- python/trunk/Objects/dictobject.c (original) +++ python/trunk/Objects/dictobject.c Tue Jan 12 00:17:10 2010 @@ -2184,6 +2184,18 @@ PyDoc_STRVAR(iteritems__doc__, "D.iteritems() -> an iterator over the (key, value) items of D"); +/* Forward */ +static PyObject *dictkeys_new(PyObject *); +static PyObject *dictitems_new(PyObject *); +static PyObject *dictvalues_new(PyObject *); + +PyDoc_STRVAR(viewkeys__doc__, + "D.viewkeys() -> a set-like object providing a view on D's keys"); +PyDoc_STRVAR(viewitems__doc__, + "D.viewitems() -> a set-like object providing a view on D's items"); +PyDoc_STRVAR(viewvalues__doc__, + "D.viewvalues() -> an object providing a view on D's values"); + static PyMethodDef mapp_methods[] = { {"__contains__",(PyCFunction)dict_contains, METH_O | METH_COEXIST, contains__doc__}, @@ -2207,6 +2219,12 @@ items__doc__}, {"values", (PyCFunction)dict_values, METH_NOARGS, values__doc__}, + {"viewkeys", (PyCFunction)dictkeys_new, METH_NOARGS, + viewkeys__doc__}, + {"viewitems", (PyCFunction)dictitems_new, METH_NOARGS, + viewitems__doc__}, + {"viewvalues", (PyCFunction)dictvalues_new, METH_NOARGS, + viewvalues__doc__}, {"update", (PyCFunction)dict_update, METH_VARARGS | METH_KEYWORDS, update__doc__}, {"fromkeys", (PyCFunction)dict_fromkeys, METH_VARARGS | METH_CLASS, @@ -2700,3 +2718,490 @@ dictiter_methods, /* tp_methods */ 0, }; + +/***********************************************/ +/* View objects for keys(), items(), values(). */ +/***********************************************/ + +/* The instance lay-out is the same for all three; but the type differs. */ + +typedef struct { + PyObject_HEAD + PyDictObject *dv_dict; +} dictviewobject; + + +static void +dictview_dealloc(dictviewobject *dv) +{ + Py_XDECREF(dv->dv_dict); + PyObject_GC_Del(dv); +} + +static int +dictview_traverse(dictviewobject *dv, visitproc visit, void *arg) +{ + Py_VISIT(dv->dv_dict); + return 0; +} + +static Py_ssize_t +dictview_len(dictviewobject *dv) +{ + Py_ssize_t len = 0; + if (dv->dv_dict != NULL) + len = dv->dv_dict->ma_used; + return len; +} + +static PyObject * +dictview_new(PyObject *dict, PyTypeObject *type) +{ + dictviewobject *dv; + if (dict == NULL) { + PyErr_BadInternalCall(); + return NULL; + } + if (!PyDict_Check(dict)) { + /* XXX Get rid of this restriction later */ + PyErr_Format(PyExc_TypeError, + "%s() requires a dict argument, not '%s'", + type->tp_name, dict->ob_type->tp_name); + return NULL; + } + dv = PyObject_GC_New(dictviewobject, type); + if (dv == NULL) + return NULL; + Py_INCREF(dict); + dv->dv_dict = (PyDictObject *)dict; + _PyObject_GC_TRACK(dv); + return (PyObject *)dv; +} + +/* TODO(guido): The views objects are not complete: + + * support more set operations + * support arbitrary mappings? + - either these should be static or exported in dictobject.h + - if public then they should probably be in builtins +*/ + +/* Return 1 if self is a subset of other, iterating over self; + 0 if not; -1 if an error occurred. */ +static int +all_contained_in(PyObject *self, PyObject *other) +{ + PyObject *iter = PyObject_GetIter(self); + int ok = 1; + + if (iter == NULL) + return -1; + for (;;) { + PyObject *next = PyIter_Next(iter); + if (next == NULL) { + if (PyErr_Occurred()) + ok = -1; + break; + } + ok = PySequence_Contains(other, next); + Py_DECREF(next); + if (ok <= 0) + break; + } + Py_DECREF(iter); + return ok; +} + +static PyObject * +dictview_richcompare(PyObject *self, PyObject *other, int op) +{ + Py_ssize_t len_self, len_other; + int ok; + PyObject *result; + + assert(self != NULL); + assert(PyDictViewSet_Check(self)); + assert(other != NULL); + + if (!PyAnySet_Check(other) && !PyDictViewSet_Check(other)) { + Py_INCREF(Py_NotImplemented); + return Py_NotImplemented; + } + + len_self = PyObject_Size(self); + if (len_self < 0) + return NULL; + len_other = PyObject_Size(other); + if (len_other < 0) + return NULL; + + ok = 0; + switch(op) { + + case Py_NE: + case Py_EQ: + if (len_self == len_other) + ok = all_contained_in(self, other); + if (op == Py_NE && ok >= 0) + ok = !ok; + break; + + case Py_LT: + if (len_self < len_other) + ok = all_contained_in(self, other); + break; + + case Py_LE: + if (len_self <= len_other) + ok = all_contained_in(self, other); + break; + + case Py_GT: + if (len_self > len_other) + ok = all_contained_in(other, self); + break; + + case Py_GE: + if (len_self >= len_other) + ok = all_contained_in(other, self); + break; + + } + if (ok < 0) + return NULL; + result = ok ? Py_True : Py_False; + Py_INCREF(result); + return result; +} + +static PyObject * +dictview_repr(dictviewobject *dv) +{ + PyObject *seq; + PyObject *seq_str; + PyObject *result; + + seq = PySequence_List((PyObject *)dv); + if (seq == NULL) + return NULL; + + seq_str = PyObject_Repr(seq); + result = PyString_FromFormat("%s(%s)", Py_TYPE(dv)->tp_name, seq_str); + Py_DECREF(seq_str); + Py_DECREF(seq); + return result; +} + +/*** dict_keys ***/ + +static PyObject * +dictkeys_iter(dictviewobject *dv) +{ + if (dv->dv_dict == NULL) { + Py_RETURN_NONE; + } + return dictiter_new(dv->dv_dict, &PyDictIterKey_Type); +} + +static int +dictkeys_contains(dictviewobject *dv, PyObject *obj) +{ + if (dv->dv_dict == NULL) + return 0; + return PyDict_Contains((PyObject *)dv->dv_dict, obj); +} + +static PySequenceMethods dictkeys_as_sequence = { + (lenfunc)dictview_len, /* sq_length */ + 0, /* sq_concat */ + 0, /* sq_repeat */ + 0, /* sq_item */ + 0, /* sq_slice */ + 0, /* sq_ass_item */ + 0, /* sq_ass_slice */ + (objobjproc)dictkeys_contains, /* sq_contains */ +}; + +static PyObject* +dictviews_sub(PyObject* self, PyObject *other) +{ + PyObject *result = PySet_New(self); + PyObject *tmp; + if (result == NULL) + return NULL; + + tmp = PyObject_CallMethod(result, "difference_update", "O", other); + if (tmp == NULL) { + Py_DECREF(result); + return NULL; + } + + Py_DECREF(tmp); + return result; +} + +static PyObject* +dictviews_and(PyObject* self, PyObject *other) +{ + PyObject *result = PySet_New(self); + PyObject *tmp; + if (result == NULL) + return NULL; + + tmp = PyObject_CallMethod(result, "intersection_update", "O", other); + if (tmp == NULL) { + Py_DECREF(result); + return NULL; + } + + Py_DECREF(tmp); + return result; +} + +static PyObject* +dictviews_or(PyObject* self, PyObject *other) +{ + PyObject *result = PySet_New(self); + PyObject *tmp; + if (result == NULL) + return NULL; + + tmp = PyObject_CallMethod(result, "update", "O", other); + if (tmp == NULL) { + Py_DECREF(result); + return NULL; + } + + Py_DECREF(tmp); + return result; +} + +static PyObject* +dictviews_xor(PyObject* self, PyObject *other) +{ + PyObject *result = PySet_New(self); + PyObject *tmp; + if (result == NULL) + return NULL; + + tmp = PyObject_CallMethod(result, "symmetric_difference_update", "O", + other); + if (tmp == NULL) { + Py_DECREF(result); + return NULL; + } + + Py_DECREF(tmp); + return result; +} + +static PyNumberMethods dictviews_as_number = { + 0, /*nb_add*/ + (binaryfunc)dictviews_sub, /*nb_subtract*/ + 0, /*nb_multiply*/ + 0, /*nb_remainder*/ + 0, /*nb_divmod*/ + 0, /*nb_power*/ + 0, /*nb_negative*/ + 0, /*nb_positive*/ + 0, /*nb_absolute*/ + 0, /*nb_bool*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + (binaryfunc)dictviews_and, /*nb_and*/ + (binaryfunc)dictviews_xor, /*nb_xor*/ + (binaryfunc)dictviews_or, /*nb_or*/ +}; + +static PyMethodDef dictkeys_methods[] = { + {NULL, NULL} /* sentinel */ +}; + +PyTypeObject PyDictKeys_Type = { + PyVarObject_HEAD_INIT(&PyType_Type, 0) + "dict_keys", /* tp_name */ + sizeof(dictviewobject), /* tp_basicsize */ + 0, /* tp_itemsize */ + /* methods */ + (destructor)dictview_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_reserved */ + (reprfunc)dictview_repr, /* tp_repr */ + &dictviews_as_number, /* tp_as_number */ + &dictkeys_as_sequence, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */ + 0, /* tp_doc */ + (traverseproc)dictview_traverse, /* tp_traverse */ + 0, /* tp_clear */ + dictview_richcompare, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + (getiterfunc)dictkeys_iter, /* tp_iter */ + 0, /* tp_iternext */ + dictkeys_methods, /* tp_methods */ + 0, +}; + +static PyObject * +dictkeys_new(PyObject *dict) +{ + return dictview_new(dict, &PyDictKeys_Type); +} + +/*** dict_items ***/ + +static PyObject * +dictitems_iter(dictviewobject *dv) +{ + if (dv->dv_dict == NULL) { + Py_RETURN_NONE; + } + return dictiter_new(dv->dv_dict, &PyDictIterItem_Type); +} + +static int +dictitems_contains(dictviewobject *dv, PyObject *obj) +{ + PyObject *key, *value, *found; + if (dv->dv_dict == NULL) + return 0; + if (!PyTuple_Check(obj) || PyTuple_GET_SIZE(obj) != 2) + return 0; + key = PyTuple_GET_ITEM(obj, 0); + value = PyTuple_GET_ITEM(obj, 1); + found = PyDict_GetItem((PyObject *)dv->dv_dict, key); + if (found == NULL) { + if (PyErr_Occurred()) + return -1; + return 0; + } + return PyObject_RichCompareBool(value, found, Py_EQ); +} + +static PySequenceMethods dictitems_as_sequence = { + (lenfunc)dictview_len, /* sq_length */ + 0, /* sq_concat */ + 0, /* sq_repeat */ + 0, /* sq_item */ + 0, /* sq_slice */ + 0, /* sq_ass_item */ + 0, /* sq_ass_slice */ + (objobjproc)dictitems_contains, /* sq_contains */ +}; + +static PyMethodDef dictitems_methods[] = { + {NULL, NULL} /* sentinel */ +}; + +PyTypeObject PyDictItems_Type = { + PyVarObject_HEAD_INIT(&PyType_Type, 0) + "dict_items", /* tp_name */ + sizeof(dictviewobject), /* tp_basicsize */ + 0, /* tp_itemsize */ + /* methods */ + (destructor)dictview_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_reserved */ + (reprfunc)dictview_repr, /* tp_repr */ + &dictviews_as_number, /* tp_as_number */ + &dictitems_as_sequence, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */ + 0, /* tp_doc */ + (traverseproc)dictview_traverse, /* tp_traverse */ + 0, /* tp_clear */ + dictview_richcompare, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + (getiterfunc)dictitems_iter, /* tp_iter */ + 0, /* tp_iternext */ + dictitems_methods, /* tp_methods */ + 0, +}; + +static PyObject * +dictitems_new(PyObject *dict) +{ + return dictview_new(dict, &PyDictItems_Type); +} + +/*** dict_values ***/ + +static PyObject * +dictvalues_iter(dictviewobject *dv) +{ + if (dv->dv_dict == NULL) { + Py_RETURN_NONE; + } + return dictiter_new(dv->dv_dict, &PyDictIterValue_Type); +} + +static PySequenceMethods dictvalues_as_sequence = { + (lenfunc)dictview_len, /* sq_length */ + 0, /* sq_concat */ + 0, /* sq_repeat */ + 0, /* sq_item */ + 0, /* sq_slice */ + 0, /* sq_ass_item */ + 0, /* sq_ass_slice */ + (objobjproc)0, /* sq_contains */ +}; + +static PyMethodDef dictvalues_methods[] = { + {NULL, NULL} /* sentinel */ +}; + +PyTypeObject PyDictValues_Type = { + PyVarObject_HEAD_INIT(&PyType_Type, 0) + "dict_values", /* tp_name */ + sizeof(dictviewobject), /* tp_basicsize */ + 0, /* tp_itemsize */ + /* methods */ + (destructor)dictview_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_reserved */ + (reprfunc)dictview_repr, /* tp_repr */ + 0, /* tp_as_number */ + &dictvalues_as_sequence, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */ + 0, /* tp_doc */ + (traverseproc)dictview_traverse, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + (getiterfunc)dictvalues_iter, /* tp_iter */ + 0, /* tp_iternext */ + dictvalues_methods, /* tp_methods */ + 0, +}; + +static PyObject * +dictvalues_new(PyObject *dict) +{ + return dictview_new(dict, &PyDictValues_Type); +} From python-checkins at python.org Tue Jan 12 00:21:10 2010 From: python-checkins at python.org (alexandre.vassalotti) Date: Mon, 11 Jan 2010 23:21:10 -0000 Subject: [Python-checkins] r77429 - python/branches/py3k Message-ID: Author: alexandre.vassalotti Date: Tue Jan 12 00:21:10 2010 New Revision: 77429 Log: Blocked revisions 77400,77422,77428 via svnmerge ........ r77400 | alexandre.vassalotti | 2010-01-09 18:35:54 -0500 (Sat, 09 Jan 2010) | 2 lines Issue #2335: Backport set literals syntax from Python 3.x. ........ r77422 | alexandre.vassalotti | 2010-01-11 17:36:12 -0500 (Mon, 11 Jan 2010) | 2 lines Issue #2333: Backport set and dict comprehensions syntax. ........ r77428 | alexandre.vassalotti | 2010-01-11 18:17:10 -0500 (Mon, 11 Jan 2010) | 2 lines Issue #1967: Backport dictionary views. ........ Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Tue Jan 12 00:23:45 2010 From: python-checkins at python.org (tarek.ziade) Date: Mon, 11 Jan 2010 23:23:45 -0000 Subject: [Python-checkins] r77430 - in python/branches/release31-maint: Lib/distutils/ccompiler.py Misc/NEWS Message-ID: Author: tarek.ziade Date: Tue Jan 12 00:23:44 2010 New Revision: 77430 Log: Merged revisions 77427 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77427 | tarek.ziade | 2010-01-12 00:15:52 +0100 (Tue, 12 Jan 2010) | 9 lines Merged revisions 77424 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77424 | tarek.ziade | 2010-01-11 23:50:29 +0100 (Mon, 11 Jan 2010) | 1 line Fixed #5372: .o files are now always rebuilt because file age test don't work in some case ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/distutils/ccompiler.py python/branches/release31-maint/Misc/NEWS Modified: python/branches/release31-maint/Lib/distutils/ccompiler.py ============================================================================== --- python/branches/release31-maint/Lib/distutils/ccompiler.py (original) +++ python/branches/release31-maint/Lib/distutils/ccompiler.py Tue Jan 12 00:23:44 2010 @@ -311,10 +311,7 @@ def _setup_compile(self, outdir, macros, incdirs, sources, depends, extra): - """Process arguments and decide which source files to compile. - - Merges _fix_compile_args() and _prep_compile(). - """ + """Process arguments and decide which source files to compile.""" if outdir is None: outdir = self.output_dir elif not isinstance(outdir, str): @@ -343,41 +340,6 @@ output_dir=outdir) assert len(objects) == len(sources) - # XXX should redo this code to eliminate skip_source entirely. - # XXX instead create build and issue skip messages inline - - if self.force: - skip_source = {} # rebuild everything - for source in sources: - skip_source[source] = 0 - elif depends is None: - # If depends is None, figure out which source files we - # have to recompile according to a simplistic check. We - # just compare the source and object file, no deep - # dependency checking involving header files. - skip_source = {} # rebuild everything - for source in sources: # no wait, rebuild nothing - skip_source[source] = 1 - - n_sources, n_objects = newer_pairwise(sources, objects) - for source in n_sources: # no really, only rebuild what's - skip_source[source] = 0 # out-of-date - else: - # If depends is a list of files, then do a different - # simplistic check. Assume that each object depends on - # its source and all files in the depends list. - skip_source = {} - # L contains all the depends plus a spot at the end for a - # particular source file - L = depends[:] + [None] - for i in range(len(objects)): - source = sources[i] - L[-1] = source - if newer_group(L, objects[i]): - skip_source[source] = 0 - else: - skip_source[source] = 1 - pp_opts = gen_preprocess_options(macros, incdirs) build = {} @@ -386,10 +348,7 @@ obj = objects[i] ext = os.path.splitext(src)[1] self.mkpath(os.path.dirname(obj)) - if skip_source[src]: - log.debug("skipping %s (%s up-to-date)", src, obj) - else: - build[obj] = src, ext + build[obj] = (src, ext) return macros, objects, extra, pp_opts, build @@ -446,40 +405,9 @@ objects = self.object_filenames(sources, output_dir=output_dir) assert len(objects) == len(sources) - if self.force: - skip_source = {} # rebuild everything - for source in sources: - skip_source[source] = 0 - elif depends is None: - # If depends is None, figure out which source files we - # have to recompile according to a simplistic check. We - # just compare the source and object file, no deep - # dependency checking involving header files. - skip_source = {} # rebuild everything - for source in sources: # no wait, rebuild nothing - skip_source[source] = 1 - - n_sources, n_objects = newer_pairwise(sources, objects) - for source in n_sources: # no really, only rebuild what's - skip_source[source] = 0 # out-of-date - else: - # If depends is a list of files, then do a different - # simplistic check. Assume that each object depends on - # its source and all files in the depends list. - skip_source = {} - # L contains all the depends plus a spot at the end for a - # particular source file - L = depends[:] + [None] - for i in range(len(objects)): - source = sources[i] - L[-1] = source - if newer_group(L, objects[i]): - skip_source[source] = 0 - else: - skip_source[source] = 1 - - return objects, skip_source - + # Return an empty dict for the "which source files can be skipped" + # return value to preserve API compatibility. + return objects, {} def _fix_object_args(self, objects, output_dir): """Typecheck and fix up some arguments supplied to various methods. Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Tue Jan 12 00:23:44 2010 @@ -60,6 +60,10 @@ Library ------- +- Issue #5372: Drop the reuse of .o files in Distutils' ccompiler (since + Extension extra options may change the output without changing the .c + file). Initial patch by Collin Winter. + - Issue #7617: Make sure distutils.unixccompiler.UnixCCompiler recognizes gcc when it has a fully qualified configuration prefix. Initial patch by Arfrever. From python-checkins at python.org Tue Jan 12 00:41:33 2010 From: python-checkins at python.org (tarek.ziade) Date: Mon, 11 Jan 2010 23:41:33 -0000 Subject: [Python-checkins] r77431 - python/trunk/Lib/distutils/ccompiler.py Message-ID: Author: tarek.ziade Date: Tue Jan 12 00:41:32 2010 New Revision: 77431 Log: module cleanup Modified: python/trunk/Lib/distutils/ccompiler.py Modified: python/trunk/Lib/distutils/ccompiler.py ============================================================================== --- python/trunk/Lib/distutils/ccompiler.py (original) +++ python/trunk/Lib/distutils/ccompiler.py Tue Jan 12 00:41:32 2010 @@ -9,11 +9,12 @@ import os import re -from distutils.errors import CompileError, LinkError, UnknownFileError +from distutils.errors import (CompileError, LinkError, UnknownFileError, + DistutilsPlatformError, DistutilsModuleError) from distutils.spawn import spawn from distutils.file_util import move_file from distutils.dir_util import mkpath -from distutils.dep_util import newer_pairwise, newer_group +from distutils.dep_util import newer_group from distutils.util import split_quoted, execute from distutils import log @@ -87,11 +88,7 @@ } language_order = ["c++", "objc", "c"] - def __init__ (self, - verbose=0, - dry_run=0, - force=0): - + def __init__ (self, verbose=0, dry_run=0, force=0): self.dry_run = dry_run self.force = force self.verbose = verbose @@ -127,11 +124,7 @@ for key in self.executables.keys(): self.set_executable(key, self.executables[key]) - # __init__ () - - - def set_executables (self, **args): - + def set_executables(self, **args): """Define the executables (and options for them) that will be run to perform the various stages of compilation. The exact set of executables that may be specified here depends on the compiler @@ -164,26 +157,21 @@ (key, self.__class__.__name__) self.set_executable(key, args[key]) - # set_executables () - def set_executable(self, key, value): if isinstance(value, str): setattr(self, key, split_quoted(value)) else: setattr(self, key, value) - - def _find_macro (self, name): + def _find_macro(self, name): i = 0 for defn in self.macros: if defn[0] == name: return i i = i + 1 - return None - - def _check_macro_definitions (self, definitions): + def _check_macro_definitions(self, definitions): """Ensures that every element of 'definitions' is a valid macro definition, ie. either (name,value) 2-tuple or a (name,) tuple. Do nothing if all definitions are OK, raise TypeError otherwise. @@ -202,7 +190,7 @@ # -- Bookkeeping methods ------------------------------------------- - def define_macro (self, name, value=None): + def define_macro(self, name, value=None): """Define a preprocessor macro for all compilations driven by this compiler object. The optional parameter 'value' should be a string; if it is not supplied, then the macro will be defined @@ -218,8 +206,7 @@ defn = (name, value) self.macros.append (defn) - - def undefine_macro (self, name): + def undefine_macro(self, name): """Undefine a preprocessor macro for all compilations driven by this compiler object. If the same macro is defined by 'define_macro()' and undefined by 'undefine_macro()' the last call @@ -237,8 +224,7 @@ undefn = (name,) self.macros.append (undefn) - - def add_include_dir (self, dir): + def add_include_dir(self, dir): """Add 'dir' to the list of directories that will be searched for header files. The compiler is instructed to search directories in the order in which they are supplied by successive calls to @@ -246,7 +232,7 @@ """ self.include_dirs.append (dir) - def set_include_dirs (self, dirs): + def set_include_dirs(self, dirs): """Set the list of directories that will be searched to 'dirs' (a list of strings). Overrides any preceding calls to 'add_include_dir()'; subsequence calls to 'add_include_dir()' add @@ -256,8 +242,7 @@ """ self.include_dirs = dirs[:] - - def add_library (self, libname): + def add_library(self, libname): """Add 'libname' to the list of libraries that will be included in all links driven by this compiler object. Note that 'libname' should *not* be the name of a file containing a library, but the @@ -273,7 +258,7 @@ """ self.libraries.append (libname) - def set_libraries (self, libnames): + def set_libraries(self, libnames): """Set the list of libraries to be included in all links driven by this compiler object to 'libnames' (a list of strings). This does not affect any standard system libraries that the linker may @@ -282,29 +267,28 @@ self.libraries = libnames[:] - def add_library_dir (self, dir): + def add_library_dir(self, dir): """Add 'dir' to the list of directories that will be searched for libraries specified to 'add_library()' and 'set_libraries()'. The linker will be instructed to search for libraries in the order they are supplied to 'add_library_dir()' and/or 'set_library_dirs()'. """ - self.library_dirs.append (dir) + self.library_dirs.append(dir) - def set_library_dirs (self, dirs): + def set_library_dirs(self, dirs): """Set the list of library search directories to 'dirs' (a list of strings). This does not affect any standard library search path that the linker may search by default. """ self.library_dirs = dirs[:] - - def add_runtime_library_dir (self, dir): + def add_runtime_library_dir(self, dir): """Add 'dir' to the list of directories that will be searched for shared libraries at runtime. """ - self.runtime_library_dirs.append (dir) + self.runtime_library_dirs.append(dir) - def set_runtime_library_dirs (self, dirs): + def set_runtime_library_dirs(self, dirs): """Set the list of directories to search for shared libraries at runtime to 'dirs' (a list of strings). This does not affect any standard search path that the runtime linker may search by @@ -312,16 +296,15 @@ """ self.runtime_library_dirs = dirs[:] - - def add_link_object (self, object): + def add_link_object(self, object): """Add 'object' to the list of object files (or analogues, such as explicitly named library files or the output of "resource compilers") to be included in every link driven by this compiler object. """ - self.objects.append (object) + self.objects.append(object) - def set_link_objects (self, objects): + def set_link_objects(self, objects): """Set the list of object files (or analogues) to be included in every link to 'objects'. This does not affect any standard object files that the linker may include by default (such as system @@ -388,7 +371,7 @@ cc_args[:0] = before return cc_args - def _fix_compile_args (self, output_dir, macros, include_dirs): + def _fix_compile_args(self, output_dir, macros, include_dirs): """Typecheck and fix-up some of the arguments to the 'compile()' method, and return fixed-up values. Specifically: if 'output_dir' is None, replaces it with 'self.output_dir'; ensures that 'macros' @@ -400,7 +383,7 @@ """ if output_dir is None: output_dir = self.output_dir - elif type (output_dir) is not StringType: + elif not isinstance(output_dir, str): raise TypeError, "'output_dir' must be a string or None" if macros is None: @@ -420,9 +403,7 @@ return output_dir, macros, include_dirs - # _fix_compile_args () - - def _fix_object_args (self, objects, output_dir): + def _fix_object_args(self, objects, output_dir): """Typecheck and fix up some arguments supplied to various methods. Specifically: ensure that 'objects' is a list; if output_dir is None, replace with self.output_dir. Return fixed versions of @@ -440,8 +421,7 @@ return (objects, output_dir) - - def _fix_lib_args (self, libraries, library_dirs, runtime_library_dirs): + def _fix_lib_args(self, libraries, library_dirs, runtime_library_dirs): """Typecheck and fix up some of the arguments supplied to the 'link_*' methods. Specifically: ensure that all arguments are lists, and augment them with their permanent versions @@ -476,10 +456,7 @@ return (libraries, library_dirs, runtime_library_dirs) - # _fix_lib_args () - - - def _need_link (self, objects, output_file): + def _need_link(self, objects, output_file): """Return true if we need to relink the files listed in 'objects' to recreate 'output_file'. """ @@ -492,9 +469,7 @@ newer = newer_group (objects, output_file) return newer - # _need_link () - - def detect_language (self, sources): + def detect_language(self, sources): """Detect the language of a given file, or list of files. Uses language_map, and language_order to do the job. """ @@ -514,18 +489,11 @@ pass return lang - # detect_language () - # -- Worker methods ------------------------------------------------ # (must be implemented by subclasses) - def preprocess (self, - source, - output_file=None, - macros=None, - include_dirs=None, - extra_preargs=None, - extra_postargs=None): + def preprocess(self, source, output_file=None, macros=None, + include_dirs=None, extra_preargs=None, extra_postargs=None): """Preprocess a single C/C++ source file, named in 'source'. Output will be written to file named 'output_file', or stdout if 'output_file' not supplied. 'macros' is a list of macro @@ -613,12 +581,8 @@ # should implement _compile(). pass - def create_static_lib (self, - objects, - output_libname, - output_dir=None, - debug=0, - target_lang=None): + def create_static_lib(self, objects, output_libname, output_dir=None, + debug=0, target_lang=None): """Link a bunch of stuff together to create a static library file. The "bunch of stuff" consists of the list of object files supplied as 'objects', the extra object files supplied to @@ -643,26 +607,15 @@ """ pass - # values for target_desc parameter in link() SHARED_OBJECT = "shared_object" SHARED_LIBRARY = "shared_library" EXECUTABLE = "executable" - def link (self, - target_desc, - objects, - output_filename, - output_dir=None, - libraries=None, - library_dirs=None, - runtime_library_dirs=None, - export_symbols=None, - debug=0, - extra_preargs=None, - extra_postargs=None, - build_temp=None, - target_lang=None): + def link(self, target_desc, objects, output_filename, output_dir=None, + libraries=None, library_dirs=None, runtime_library_dirs=None, + export_symbols=None, debug=0, extra_preargs=None, + extra_postargs=None, build_temp=None, target_lang=None): """Link a bunch of stuff together to create an executable or shared library file. @@ -711,19 +664,11 @@ # Old 'link_*()' methods, rewritten to use the new 'link()' method. - def link_shared_lib (self, - objects, - output_libname, - output_dir=None, - libraries=None, - library_dirs=None, - runtime_library_dirs=None, - export_symbols=None, - debug=0, - extra_preargs=None, - extra_postargs=None, - build_temp=None, - target_lang=None): + def link_shared_lib(self, objects, output_libname, output_dir=None, + libraries=None, library_dirs=None, + runtime_library_dirs=None, export_symbols=None, + debug=0, extra_preargs=None, extra_postargs=None, + build_temp=None, target_lang=None): self.link(CCompiler.SHARED_LIBRARY, objects, self.library_filename(output_libname, lib_type='shared'), output_dir, @@ -732,37 +677,21 @@ extra_preargs, extra_postargs, build_temp, target_lang) - def link_shared_object (self, - objects, - output_filename, - output_dir=None, - libraries=None, - library_dirs=None, - runtime_library_dirs=None, - export_symbols=None, - debug=0, - extra_preargs=None, - extra_postargs=None, - build_temp=None, - target_lang=None): + def link_shared_object(self, objects, output_filename, output_dir=None, + libraries=None, library_dirs=None, + runtime_library_dirs=None, export_symbols=None, + debug=0, extra_preargs=None, extra_postargs=None, + build_temp=None, target_lang=None): self.link(CCompiler.SHARED_OBJECT, objects, output_filename, output_dir, libraries, library_dirs, runtime_library_dirs, export_symbols, debug, extra_preargs, extra_postargs, build_temp, target_lang) - - def link_executable (self, - objects, - output_progname, - output_dir=None, - libraries=None, - library_dirs=None, - runtime_library_dirs=None, - debug=0, - extra_preargs=None, - extra_postargs=None, - target_lang=None): + def link_executable(self, objects, output_progname, output_dir=None, + libraries=None, library_dirs=None, + runtime_library_dirs=None, debug=0, extra_preargs=None, + extra_postargs=None, target_lang=None): self.link(CCompiler.EXECUTABLE, objects, self.executable_filename(output_progname), output_dir, libraries, library_dirs, runtime_library_dirs, None, @@ -774,29 +703,26 @@ # no appropriate default implementation so subclasses should # implement all of these. - def library_dir_option (self, dir): + def library_dir_option(self, dir): """Return the compiler option to add 'dir' to the list of directories searched for libraries. """ raise NotImplementedError - def runtime_library_dir_option (self, dir): + def runtime_library_dir_option(self, dir): """Return the compiler option to add 'dir' to the list of directories searched for runtime libraries. """ raise NotImplementedError - def library_option (self, lib): + def library_option(self, lib): """Return the compiler option to add 'dir' to the list of libraries linked into the shared library or executable. """ raise NotImplementedError - def has_function(self, funcname, - includes=None, - include_dirs=None, - libraries=None, - library_dirs=None): + def has_function(self, funcname, includes=None, include_dirs=None, + libraries=None, library_dirs=None): """Return a boolean indicating whether funcname is supported on the current platform. The optional arguments can be used to augment the compilation environment. @@ -927,28 +853,28 @@ # -- Utility methods ----------------------------------------------- - def announce (self, msg, level=1): + def announce(self, msg, level=1): log.debug(msg) - def debug_print (self, msg): + def debug_print(self, msg): from distutils.debug import DEBUG if DEBUG: print msg - def warn (self, msg): - sys.stderr.write ("warning: %s\n" % msg) + def warn(self, msg): + sys.stderr.write("warning: %s\n" % msg) - def execute (self, func, args, msg=None, level=1): + def execute(self, func, args, msg=None, level=1): execute(func, args, msg, self.dry_run) - def spawn (self, cmd): - spawn (cmd, dry_run=self.dry_run) + def spawn(self, cmd): + spawn(cmd, dry_run=self.dry_run) - def move_file (self, src, dst): - return move_file (src, dst, dry_run=self.dry_run) + def move_file(self, src, dst): + return move_file(src, dst, dry_run=self.dry_run) - def mkpath (self, name, mode=0777): - mkpath (name, mode, dry_run=self.dry_run) + def mkpath(self, name, mode=0777): + mkpath(name, mode, dry_run=self.dry_run) # class CCompiler @@ -974,7 +900,6 @@ ) def get_default_compiler(osname=None, platform=None): - """ Determine the default compiler to use for the given platform. osname should be one of the standard Python OS names (i.e. the @@ -1030,11 +955,7 @@ pretty_printer.print_help("List of available compilers:") -def new_compiler (plat=None, - compiler=None, - verbose=0, - dry_run=0, - force=0): +def new_compiler(plat=None, compiler=None, verbose=0, dry_run=0, force=0): """Generate an instance of some CCompiler subclass for the supplied platform/compiler combination. 'plat' defaults to 'os.name' (eg. 'posix', 'nt'), and 'compiler' defaults to the default compiler @@ -1076,10 +997,10 @@ # XXX The None is necessary to preserve backwards compatibility # with classes that expect verbose to be the first positional # argument. - return klass (None, dry_run, force) + return klass(None, dry_run, force) -def gen_preprocess_options (macros, include_dirs): +def gen_preprocess_options(macros, include_dirs): """Generate C pre-processor options (-D, -U, -I) as used by at least two types of compilers: the typical Unix compiler and Visual C++. 'macros' is the usual thing, a list of 1- or 2-tuples, where (name,) From python-checkins at python.org Tue Jan 12 00:43:18 2010 From: python-checkins at python.org (tarek.ziade) Date: Mon, 11 Jan 2010 23:43:18 -0000 Subject: [Python-checkins] r77432 - python/branches/release26-maint Message-ID: Author: tarek.ziade Date: Tue Jan 12 00:43:17 2010 New Revision: 77432 Log: Blocked revisions 77431 via svnmerge ........ r77431 | tarek.ziade | 2010-01-12 00:41:32 +0100 (Tue, 12 Jan 2010) | 1 line module cleanup ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Tue Jan 12 00:47:51 2010 From: python-checkins at python.org (tarek.ziade) Date: Mon, 11 Jan 2010 23:47:51 -0000 Subject: [Python-checkins] r77433 - in python/branches/py3k: Lib/distutils/ccompiler.py Message-ID: Author: tarek.ziade Date: Tue Jan 12 00:47:51 2010 New Revision: 77433 Log: Merged revisions 77431 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77431 | tarek.ziade | 2010-01-12 00:41:32 +0100 (Tue, 12 Jan 2010) | 1 line module cleanup ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/distutils/ccompiler.py Modified: python/branches/py3k/Lib/distutils/ccompiler.py ============================================================================== --- python/branches/py3k/Lib/distutils/ccompiler.py (original) +++ python/branches/py3k/Lib/distutils/ccompiler.py Tue Jan 12 00:47:51 2010 @@ -9,11 +9,12 @@ import os import re -from distutils.errors import CompileError, LinkError, UnknownFileError +from distutils.errors import (CompileError, LinkError, UnknownFileError, + DistutilsPlatformError, DistutilsModuleError) from distutils.spawn import spawn from distutils.file_util import move_file from distutils.dir_util import mkpath -from distutils.dep_util import newer_pairwise, newer_group +from distutils.dep_util import newer_group from distutils.util import split_quoted, execute from distutils import log @@ -597,26 +598,15 @@ """ pass - # values for target_desc parameter in link() SHARED_OBJECT = "shared_object" SHARED_LIBRARY = "shared_library" EXECUTABLE = "executable" - def link(self, - target_desc, - objects, - output_filename, - output_dir=None, - libraries=None, - library_dirs=None, - runtime_library_dirs=None, - export_symbols=None, - debug=0, - extra_preargs=None, - extra_postargs=None, - build_temp=None, - target_lang=None): + def link(self, target_desc, objects, output_filename, output_dir=None, + libraries=None, library_dirs=None, runtime_library_dirs=None, + export_symbols=None, debug=0, extra_preargs=None, + extra_postargs=None, build_temp=None, target_lang=None): """Link a bunch of stuff together to create an executable or shared library file. @@ -665,19 +655,11 @@ # Old 'link_*()' methods, rewritten to use the new 'link()' method. - def link_shared_lib(self, - objects, - output_libname, - output_dir=None, - libraries=None, - library_dirs=None, - runtime_library_dirs=None, - export_symbols=None, - debug=0, - extra_preargs=None, - extra_postargs=None, - build_temp=None, - target_lang=None): + def link_shared_lib(self, objects, output_libname, output_dir=None, + libraries=None, library_dirs=None, + runtime_library_dirs=None, export_symbols=None, + debug=0, extra_preargs=None, extra_postargs=None, + build_temp=None, target_lang=None): self.link(CCompiler.SHARED_LIBRARY, objects, self.library_filename(output_libname, lib_type='shared'), output_dir, @@ -686,19 +668,11 @@ extra_preargs, extra_postargs, build_temp, target_lang) - def link_shared_object(self, - objects, - output_filename, - output_dir=None, - libraries=None, - library_dirs=None, - runtime_library_dirs=None, - export_symbols=None, - debug=0, - extra_preargs=None, - extra_postargs=None, - build_temp=None, - target_lang=None): + def link_shared_object(self, objects, output_filename, output_dir=None, + libraries=None, library_dirs=None, + runtime_library_dirs=None, export_symbols=None, + debug=0, extra_preargs=None, extra_postargs=None, + build_temp=None, target_lang=None): self.link(CCompiler.SHARED_OBJECT, objects, output_filename, output_dir, libraries, library_dirs, runtime_library_dirs, @@ -706,17 +680,10 @@ extra_preargs, extra_postargs, build_temp, target_lang) - def link_executable(self, - objects, - output_progname, - output_dir=None, - libraries=None, - library_dirs=None, - runtime_library_dirs=None, - debug=0, - extra_preargs=None, - extra_postargs=None, - target_lang=None): + def link_executable(self, objects, output_progname, output_dir=None, + libraries=None, library_dirs=None, + runtime_library_dirs=None, debug=0, extra_preargs=None, + extra_postargs=None, target_lang=None): self.link(CCompiler.EXECUTABLE, objects, self.executable_filename(output_progname), output_dir, libraries, library_dirs, runtime_library_dirs, None, @@ -898,7 +865,7 @@ def move_file(self, src, dst): return move_file(src, dst, dry_run=self.dry_run) - def mkpath (self, name, mode=0o777): + def mkpath(self, name, mode=0o777): mkpath(name, mode, dry_run=self.dry_run) From python-checkins at python.org Tue Jan 12 00:48:38 2010 From: python-checkins at python.org (tarek.ziade) Date: Mon, 11 Jan 2010 23:48:38 -0000 Subject: [Python-checkins] r77434 - python/branches/release31-maint Message-ID: Author: tarek.ziade Date: Tue Jan 12 00:48:38 2010 New Revision: 77434 Log: Blocked revisions 77433 via svnmerge ................ r77433 | tarek.ziade | 2010-01-12 00:47:51 +0100 (Tue, 12 Jan 2010) | 9 lines Merged revisions 77431 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77431 | tarek.ziade | 2010-01-12 00:41:32 +0100 (Tue, 12 Jan 2010) | 1 line module cleanup ........ ................ Modified: python/branches/release31-maint/ (props changed) From solipsis at pitrou.net Tue Jan 12 00:52:20 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Tue, 12 Jan 2010 00:52:20 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77417): sum=0 Message-ID: <20100111235220.715331771F@ns6635.ovh.net> py3k results for svn r77417 (hg cset 4e4852e133fa) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogB-78g1', '-x', 'test_httpservers'] From python-checkins at python.org Tue Jan 12 01:36:55 2010 From: python-checkins at python.org (alexandre.vassalotti) Date: Tue, 12 Jan 2010 00:36:55 -0000 Subject: [Python-checkins] r77435 - in sandbox/trunk/2to3: example.py lib2to3/fixes/fix_dict.py lib2to3/tests/test_fixers.py Message-ID: Author: alexandre.vassalotti Date: Tue Jan 12 01:36:54 2010 New Revision: 77435 Log: Issue #1967: Add fixer for dictionary views. Modified: sandbox/trunk/2to3/example.py sandbox/trunk/2to3/lib2to3/fixes/fix_dict.py sandbox/trunk/2to3/lib2to3/tests/test_fixers.py Modified: sandbox/trunk/2to3/example.py ============================================================================== --- sandbox/trunk/2to3/example.py (original) +++ sandbox/trunk/2to3/example.py Tue Jan 12 01:36:54 2010 @@ -335,6 +335,12 @@ print h.keys()[0] print list(h.iterkeys().next()) for x in h.keys()[0]: print x + # + # Examples with dict views + # + print d.viewkeys() + print d.viewitems() + print d.viewvalues() def dict_negative_examples(): # Modified: sandbox/trunk/2to3/lib2to3/fixes/fix_dict.py ============================================================================== --- sandbox/trunk/2to3/lib2to3/fixes/fix_dict.py (original) +++ sandbox/trunk/2to3/lib2to3/fixes/fix_dict.py Tue Jan 12 01:36:54 2010 @@ -11,6 +11,10 @@ d.iteritems() -> iter(d.items()) d.itervalues() -> iter(d.values()) +d.viewkeys() -> d.keys() +d.viewitems() -> d.items() +d.viewvalues() -> d.values() + Except in certain very specific contexts: the iter() can be dropped when the context is list(), sorted(), iter() or for...in; the list() can be dropped when the context is list() or sorted() (but not iter() @@ -39,7 +43,8 @@ PATTERN = """ power< head=any+ trailer< '.' method=('keys'|'items'|'values'| - 'iterkeys'|'iteritems'|'itervalues') > + 'iterkeys'|'iteritems'|'itervalues'| + 'viewkeys'|'viewitems'|'viewvalues') > parens=trailer< '(' ')' > tail=any* > @@ -52,9 +57,10 @@ syms = self.syms method_name = method.value isiter = method_name.startswith(u"iter") - if isiter: + isview = method_name.startswith(u"view") + if isiter or isview: method_name = method_name[4:] - assert method_name in ("keys", "items", "values"), repr(method) + assert method_name in (u"keys", u"items", u"values"), repr(method) head = [n.clone() for n in head] tail = [n.clone() for n in tail] special = not tail and self.in_special_context(node, isiter) @@ -64,7 +70,7 @@ prefix=method.prefix)]), results["parens"].clone()] new = pytree.Node(syms.power, args) - if not special: + if not (special or isview): new.prefix = u"" new = Call(Name(u"iter" if isiter else u"list"), [new]) if tail: Modified: sandbox/trunk/2to3/lib2to3/tests/test_fixers.py ============================================================================== --- sandbox/trunk/2to3/lib2to3/tests/test_fixers.py (original) +++ sandbox/trunk/2to3/lib2to3/tests/test_fixers.py Tue Jan 12 01:36:54 2010 @@ -1215,6 +1215,14 @@ a = "[i for i in d. keys( ) ]" self.check(b, a) + b = "if d. viewkeys ( ) : pass" + a = "if d. keys ( ) : pass" + self.check(b, a) + + b = "[i for i in d. viewkeys( ) ]" + a = "[i for i in d. keys( ) ]" + self.check(b, a) + def test_trailing_comment(self): b = "d.keys() # foo" a = "list(d.keys()) # foo" @@ -1234,6 +1242,16 @@ ]""" self.check(b, a) + b = """[i for i in d.iterkeys() # foo + ]""" + a = """[i for i in d.keys() # foo + ]""" + self.check(b, a) + + b = "d.viewitems() # foo" + a = "d.items() # foo" + self.check(b, a) + def test_unchanged(self): for wrapper in fixer_util.consuming_calls: s = "s = %s(d.keys())" % wrapper @@ -1367,6 +1385,46 @@ a = "for x in list(h.keys())[0]: print x" self.check(b, a) + def test_25(self): + b = "d.viewkeys()" + a = "d.keys()" + self.check(b, a) + + def test_26(self): + b = "d.viewitems()" + a = "d.items()" + self.check(b, a) + + def test_27(self): + b = "d.viewvalues()" + a = "d.values()" + self.check(b, a) + + def test_14(self): + b = "[i for i in d.viewkeys()]" + a = "[i for i in d.keys()]" + self.check(b, a) + + def test_15(self): + b = "(i for i in d.viewkeys())" + a = "(i for i in d.keys())" + self.check(b, a) + + def test_17(self): + b = "iter(d.viewkeys())" + a = "iter(d.keys())" + self.check(b, a) + + def test_18(self): + b = "list(d.viewkeys())" + a = "list(d.keys())" + self.check(b, a) + + def test_19(self): + b = "sorted(d.viewkeys())" + a = "sorted(d.keys())" + self.check(b, a) + class Test_xrange(FixerTestCase): fixer = "xrange" From python-checkins at python.org Tue Jan 12 02:00:35 2010 From: python-checkins at python.org (r.david.murray) Date: Tue, 12 Jan 2010 01:00:35 -0000 Subject: [Python-checkins] r77436 - python/branches/release26-maint Message-ID: Author: r.david.murray Date: Tue Jan 12 02:00:35 2010 New Revision: 77436 Log: Blocked revisions 77400,77422,77428 via svnmerge ........ r77400 | alexandre.vassalotti | 2010-01-09 18:35:54 -0500 (Sat, 09 Jan 2010) | 2 lines Issue #2335: Backport set literals syntax from Python 3.x. ........ r77422 | alexandre.vassalotti | 2010-01-11 17:36:12 -0500 (Mon, 11 Jan 2010) | 2 lines Issue #2333: Backport set and dict comprehensions syntax. ........ r77428 | alexandre.vassalotti | 2010-01-11 18:17:10 -0500 (Mon, 11 Jan 2010) | 2 lines Issue #1967: Backport dictionary views. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Tue Jan 12 02:23:09 2010 From: python-checkins at python.org (alexandre.vassalotti) Date: Tue, 12 Jan 2010 01:23:09 -0000 Subject: [Python-checkins] r77437 - in python/branches/py3k: Lib/test/test_bytes.py Misc/NEWS Objects/bytesobject.c Message-ID: Author: alexandre.vassalotti Date: Tue Jan 12 02:23:09 2010 New Revision: 77437 Log: Issue #7382: Fix bytes.__getnewargs__. Modified: python/branches/py3k/Lib/test/test_bytes.py python/branches/py3k/Misc/NEWS python/branches/py3k/Objects/bytesobject.c Modified: python/branches/py3k/Lib/test/test_bytes.py ============================================================================== --- python/branches/py3k/Lib/test/test_bytes.py (original) +++ python/branches/py3k/Lib/test/test_bytes.py Tue Jan 12 02:23:09 2010 @@ -38,6 +38,13 @@ self.assertEqual(type(b), self.type2test) self.assertEqual(b.__class__, self.type2test) + def test_copy(self): + a = self.type2test(b"abcd") + for copy_method in (copy.copy, copy.deepcopy): + b = copy_method(a) + self.assertEqual(a, b) + self.assertEqual(type(a), type(b)) + def test_empty_sequence(self): b = self.type2test() self.assertEqual(len(b), 0) @@ -996,17 +1003,14 @@ type2test = bytes -class ByteArraySubclass(bytearray): - pass - -class ByteArraySubclassTest(unittest.TestCase): +class SubclassTest(unittest.TestCase): def test_basic(self): - self.assertTrue(issubclass(ByteArraySubclass, bytearray)) - self.assertTrue(isinstance(ByteArraySubclass(), bytearray)) + self.assertTrue(issubclass(self.subclass2test, self.type2test)) + self.assertTrue(isinstance(self.subclass2test(), self.type2test)) a, b = b"abcd", b"efgh" - _a, _b = ByteArraySubclass(a), ByteArraySubclass(b) + _a, _b = self.subclass2test(a), self.subclass2test(b) # test comparison operators with subclass instances self.assertTrue(_a == _a) @@ -1029,19 +1033,19 @@ # Make sure join returns a NEW object for single item sequences # involving a subclass. # Make sure that it is of the appropriate type. - s1 = ByteArraySubclass(b"abcd") - s2 = bytearray().join([s1]) + s1 = self.subclass2test(b"abcd") + s2 = self.type2test().join([s1]) self.assertTrue(s1 is not s2) - self.assertTrue(type(s2) is bytearray, type(s2)) + self.assertTrue(type(s2) is self.type2test, type(s2)) # Test reverse, calling join on subclass s3 = s1.join([b"abcd"]) - self.assertTrue(type(s3) is bytearray) + self.assertTrue(type(s3) is self.type2test) def test_pickle(self): - a = ByteArraySubclass(b"abcd") + a = self.subclass2test(b"abcd") a.x = 10 - a.y = ByteArraySubclass(b"efgh") + a.y = self.subclass2test(b"efgh") for proto in range(pickle.HIGHEST_PROTOCOL + 1): b = pickle.loads(pickle.dumps(a, proto)) self.assertNotEqual(id(a), id(b)) @@ -1052,9 +1056,9 @@ self.assertEqual(type(a.y), type(b.y)) def test_copy(self): - a = ByteArraySubclass(b"abcd") + a = self.subclass2test(b"abcd") a.x = 10 - a.y = ByteArraySubclass(b"efgh") + a.y = self.subclass2test(b"efgh") for copy_method in (copy.copy, copy.deepcopy): b = copy_method(a) self.assertNotEqual(id(a), id(b)) @@ -1064,21 +1068,38 @@ self.assertEqual(type(a), type(b)) self.assertEqual(type(a.y), type(b.y)) + +class ByteArraySubclass(bytearray): + pass + +class BytesSubclass(bytes): + pass + +class ByteArraySubclassTest(SubclassTest): + type2test = bytearray + subclass2test = ByteArraySubclass + def test_init_override(self): class subclass(bytearray): - def __init__(self, newarg=1, *args, **kwargs): - bytearray.__init__(self, *args, **kwargs) + def __init__(me, newarg=1, *args, **kwargs): + bytearray.__init__(me, *args, **kwargs) + x = subclass(4, b"abcd") x = subclass(4, source=b"abcd") self.assertEqual(x, b"abcd") x = subclass(newarg=4, source=b"abcd") self.assertEqual(x, b"abcd") +class BytesSubclassTest(SubclassTest): + type2test = bytes + subclass2test = BytesSubclass + + def test_main(): test.support.run_unittest( BytesTest, AssortedBytesTest, BytesAsStringTest, - ByteArrayTest, ByteArrayAsStringTest, ByteArraySubclassTest, - BytearrayPEP3137Test) + ByteArrayTest, ByteArrayAsStringTest, BytesSubclassTest, + ByteArraySubclassTest, BytearrayPEP3137Test) if __name__ == "__main__": test_main() Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Tue Jan 12 02:23:09 2010 @@ -152,6 +152,10 @@ - Issue #1023290: Add from_bytes() and to_bytes() methods to integers. These methods allow the conversion of integers to bytes, and vice-versa. +- Issue #7382: Fix bug in bytes.__getnewargs__ that prevented bytes + instances from being copied with copy.copy(), and bytes subclasses + from being pickled properly. + C-API ----- Modified: python/branches/py3k/Objects/bytesobject.c ============================================================================== --- python/branches/py3k/Objects/bytesobject.c (original) +++ python/branches/py3k/Objects/bytesobject.c Tue Jan 12 02:23:09 2010 @@ -2807,7 +2807,7 @@ static PyObject * bytes_getnewargs(PyBytesObject *v) { - return Py_BuildValue("(s#)", v->ob_sval, Py_SIZE(v)); + return Py_BuildValue("(y#)", v->ob_sval, Py_SIZE(v)); } From python-checkins at python.org Tue Jan 12 02:34:43 2010 From: python-checkins at python.org (alexandre.vassalotti) Date: Tue, 12 Jan 2010 01:34:43 -0000 Subject: [Python-checkins] r77438 - in python/trunk: Lib/test/test_dictviews.py Objects/dictobject.c Message-ID: Author: alexandre.vassalotti Date: Tue Jan 12 02:34:43 2010 New Revision: 77438 Log: Fixed repr of dictionary views. Modified: python/trunk/Lib/test/test_dictviews.py python/trunk/Objects/dictobject.c Modified: python/trunk/Lib/test/test_dictviews.py ============================================================================== --- python/trunk/Lib/test/test_dictviews.py (original) +++ python/trunk/Lib/test/test_dictviews.py Tue Jan 12 02:34:43 2010 @@ -72,9 +72,18 @@ def test_dict_repr(self): d = {1: 10, "a": "ABC"} self.assertTrue(isinstance(repr(d), str)) - self.assertTrue(isinstance(repr(d.viewitems()), str)) - self.assertTrue(isinstance(repr(d.viewkeys()), str)) - self.assertTrue(isinstance(repr(d.viewvalues()), str)) + r = repr(d.viewitems()) + self.assertTrue(isinstance(r, str)) + self.assertTrue(r == "dict_items([('a', 'ABC'), (1, 10)])" or + r == "dict_items([(1, 10), ('a', 'ABC')])") + r = repr(d.viewkeys()) + self.assertTrue(isinstance(r, str)) + self.assertTrue(r == "dict_keys(['a', 1])" or + r == "dict_keys([1, 'a'])") + r = repr(d.viewvalues()) + self.assertTrue(isinstance(r, str)) + self.assertTrue(r == "dict_values(['ABC', 10])" or + r == "dict_values([10, 'ABC'])") def test_main(): Modified: python/trunk/Objects/dictobject.c ============================================================================== --- python/trunk/Objects/dictobject.c (original) +++ python/trunk/Objects/dictobject.c Tue Jan 12 02:34:43 2010 @@ -2886,7 +2886,8 @@ return NULL; seq_str = PyObject_Repr(seq); - result = PyString_FromFormat("%s(%s)", Py_TYPE(dv)->tp_name, seq_str); + result = PyString_FromFormat("%s(%s)", Py_TYPE(dv)->tp_name, + PyString_AS_STRING(seq_str)); Py_DECREF(seq_str); Py_DECREF(seq); return result; From python-checkins at python.org Tue Jan 12 02:44:08 2010 From: python-checkins at python.org (alexandre.vassalotti) Date: Tue, 12 Jan 2010 01:44:08 -0000 Subject: [Python-checkins] r77439 - python/branches/release26-maint Message-ID: Author: alexandre.vassalotti Date: Tue Jan 12 02:44:07 2010 New Revision: 77439 Log: Blocked revisions 77438 via svnmerge ........ r77438 | alexandre.vassalotti | 2010-01-11 20:34:43 -0500 (Mon, 11 Jan 2010) | 2 lines Fixed repr of dictionary views. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Tue Jan 12 02:49:31 2010 From: python-checkins at python.org (alexandre.vassalotti) Date: Tue, 12 Jan 2010 01:49:31 -0000 Subject: [Python-checkins] r77440 - python/branches/py3k/Lib/pickle.py Message-ID: Author: alexandre.vassalotti Date: Tue Jan 12 02:49:31 2010 New Revision: 77440 Log: Simplified long coding in pickle.py. Modified: python/branches/py3k/Lib/pickle.py Modified: python/branches/py3k/Lib/pickle.py ============================================================================== --- python/branches/py3k/Lib/pickle.py (original) +++ python/branches/py3k/Lib/pickle.py Tue Jan 12 02:49:31 2010 @@ -1269,50 +1269,14 @@ b'\x7f' >>> """ - if x == 0: return b'' - if x > 0: - ashex = hex(x) - assert ashex.startswith("0x") - njunkchars = 2 + ashex.endswith('L') - nibbles = len(ashex) - njunkchars - if nibbles & 1: - # need an even # of nibbles for unhexlify - ashex = "0x0" + ashex[2:] - elif int(ashex[2], 16) >= 8: - # "looks negative", so need a byte of sign bits - ashex = "0x00" + ashex[2:] - else: - # Build the 256's-complement: (1L << nbytes) + x. The trick is - # to find the number of bytes in linear time (although that should - # really be a constant-time task). - ashex = hex(-x) - assert ashex.startswith("0x") - njunkchars = 2 + ashex.endswith('L') - nibbles = len(ashex) - njunkchars - if nibbles & 1: - # Extend to a full byte. - nibbles += 1 - nbits = nibbles * 4 - x += 1 << nbits - assert x > 0 - ashex = hex(x) - njunkchars = 2 + ashex.endswith('L') - newnibbles = len(ashex) - njunkchars - if newnibbles < nibbles: - ashex = "0x" + "0" * (nibbles - newnibbles) + ashex[2:] - if int(ashex[2], 16) < 8: - # "looks positive", so need a byte of sign bits - ashex = "0xff" + ashex[2:] - - if ashex.endswith('L'): - ashex = ashex[2:-1] - else: - ashex = ashex[2:] - assert len(ashex) & 1 == 0, (x, ashex) - binary = _binascii.unhexlify(ashex) - return bytes(binary[::-1]) + nbytes = (x.bit_length() >> 3) + 1 + result = x.to_bytes(nbytes, byteorder='little', signed=True) + if x < 0 and nbytes > 1: + if result[-1] == 0xff and (result[-2] & 0x80) != 0: + result = result[:-1] + return result def decode_long(data): r"""Decode a long from a two's complement little-endian binary string. @@ -1332,15 +1296,7 @@ >>> decode_long(b"\x7f") 127 """ - - nbytes = len(data) - if nbytes == 0: - return 0 - ashex = _binascii.hexlify(data[::-1]) - n = int(ashex, 16) # quadratic time before Python 2.3; linear now - if data[-1] >= 0x80: - n -= 1 << (nbytes * 8) - return n + return int.from_bytes(data, byteorder='little', signed=True) # Use the faster _pickle if possible try: From python-checkins at python.org Tue Jan 12 02:51:09 2010 From: python-checkins at python.org (alexandre.vassalotti) Date: Tue, 12 Jan 2010 01:51:09 -0000 Subject: [Python-checkins] r77441 - python/branches/py3k Message-ID: Author: alexandre.vassalotti Date: Tue Jan 12 02:51:09 2010 New Revision: 77441 Log: Blocked revisions 77438 via svnmerge ........ r77438 | alexandre.vassalotti | 2010-01-11 20:34:43 -0500 (Mon, 11 Jan 2010) | 2 lines Fixed repr of dictionary views. ........ Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Tue Jan 12 04:32:05 2010 From: python-checkins at python.org (ezio.melotti) Date: Tue, 12 Jan 2010 03:32:05 -0000 Subject: [Python-checkins] r77442 - in python/trunk: Lib/ntpath.py Lib/posixpath.py Lib/test/test_ntpath.py Lib/test/test_posixpath.py Misc/NEWS Message-ID: Author: ezio.melotti Date: Tue Jan 12 04:32:05 2010 New Revision: 77442 Log: #5827: make sure that normpath preserves unicode Modified: python/trunk/Lib/ntpath.py python/trunk/Lib/posixpath.py python/trunk/Lib/test/test_ntpath.py python/trunk/Lib/test/test_posixpath.py python/trunk/Misc/NEWS Modified: python/trunk/Lib/ntpath.py ============================================================================== --- python/trunk/Lib/ntpath.py (original) +++ python/trunk/Lib/ntpath.py Tue Jan 12 04:32:05 2010 @@ -397,6 +397,8 @@ def normpath(path): """Normalize path, eliminating double slashes, etc.""" + # Preserve unicode (if path is unicode) + backslash, dot = (u'\\', u'.') if isinstance(path, unicode) else ('\\', '.') path = path.replace("/", "\\") prefix, path = splitdrive(path) # We need to be careful here. If the prefix is empty, and the path starts @@ -411,12 +413,12 @@ if prefix == '': # No drive letter - preserve initial backslashes while path[:1] == "\\": - prefix = prefix + "\\" + prefix = prefix + backslash path = path[1:] else: # We have a drive letter - collapse initial backslashes if path.startswith("\\"): - prefix = prefix + "\\" + prefix = prefix + backslash path = path.lstrip("\\") comps = path.split("\\") i = 0 @@ -435,8 +437,8 @@ i += 1 # If the path is now empty, substitute '.' if not prefix and not comps: - comps.append('.') - return prefix + "\\".join(comps) + comps.append(dot) + return prefix + backslash.join(comps) # Return an absolute path. Modified: python/trunk/Lib/posixpath.py ============================================================================== --- python/trunk/Lib/posixpath.py (original) +++ python/trunk/Lib/posixpath.py Tue Jan 12 04:32:05 2010 @@ -307,8 +307,10 @@ def normpath(path): """Normalize path, eliminating double slashes, etc.""" + # Preserve unicode (if path is unicode) + slash, dot = (u'/', u'.') if isinstance(path, unicode) else ('/', '.') if path == '': - return '.' + return dot initial_slashes = path.startswith('/') # POSIX allows one or two initial slashes, but treats three or more # as single slash. @@ -326,10 +328,10 @@ elif new_comps: new_comps.pop() comps = new_comps - path = '/'.join(comps) + path = slash.join(comps) if initial_slashes: - path = '/'*initial_slashes + path - return path or '.' + path = slash*initial_slashes + path + return path or dot def abspath(path): Modified: python/trunk/Lib/test/test_ntpath.py ============================================================================== --- python/trunk/Lib/test/test_ntpath.py (original) +++ python/trunk/Lib/test/test_ntpath.py Tue Jan 12 04:32:05 2010 @@ -123,6 +123,11 @@ tester("ntpath.normpath('C:////a/b')", r'C:\a\b') tester("ntpath.normpath('//machine/share//a/b')", r'\\machine\share\a\b') + # Issue 5827: Make sure normpath preserves unicode + for path in (u'', u'.', u'/', u'\\', u'///foo/.//bar//'): + self.assertTrue(isinstance(ntpath.normpath(path), unicode), + 'normpath() returned str instead of unicode') + def test_expandvars(self): with test_support.EnvironmentVarGuard() as env: env.clear() Modified: python/trunk/Lib/test/test_posixpath.py ============================================================================== --- python/trunk/Lib/test/test_posixpath.py (original) +++ python/trunk/Lib/test/test_posixpath.py Tue Jan 12 04:32:05 2010 @@ -381,6 +381,11 @@ self.assertEqual(posixpath.normpath("///foo/.//bar//.//..//.//baz"), "/foo/baz") self.assertEqual(posixpath.normpath("///..//./foo/.//bar"), "/foo/bar") + # Issue 5827: Make sure normpath preserves unicode + for path in (u'', u'.', u'/', u'\\', u'///foo/.//bar//'): + self.assertTrue(isinstance(posixpath.normpath(path), unicode), + 'normpath() returned str instead of unicode') + self.assertRaises(TypeError, posixpath.normpath) def test_abspath(self): Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Tue Jan 12 04:32:05 2010 @@ -23,6 +23,9 @@ Library ------- +- Issue #5827: Make sure that normpath preserves unicode. Initial patch + by Matt Giuca. + - Issue #5372: Drop the reuse of .o files in Distutils' ccompiler (since Extension extra options may change the output without changing the .c file). Initial patch by Collin Winter. From python-checkins at python.org Tue Jan 12 04:38:54 2010 From: python-checkins at python.org (ezio.melotti) Date: Tue, 12 Jan 2010 03:38:54 -0000 Subject: [Python-checkins] r77443 - in python/branches/release26-maint: Lib/ntpath.py Lib/posixpath.py Lib/test/test_ntpath.py Lib/test/test_posixpath.py Misc/NEWS Message-ID: Author: ezio.melotti Date: Tue Jan 12 04:38:53 2010 New Revision: 77443 Log: Merged revisions 77442 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77442 | ezio.melotti | 2010-01-12 05:32:05 +0200 (Tue, 12 Jan 2010) | 1 line #5827: make sure that normpath preserves unicode ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/ntpath.py python/branches/release26-maint/Lib/posixpath.py python/branches/release26-maint/Lib/test/test_ntpath.py python/branches/release26-maint/Lib/test/test_posixpath.py python/branches/release26-maint/Misc/NEWS Modified: python/branches/release26-maint/Lib/ntpath.py ============================================================================== --- python/branches/release26-maint/Lib/ntpath.py (original) +++ python/branches/release26-maint/Lib/ntpath.py Tue Jan 12 04:38:53 2010 @@ -397,6 +397,8 @@ def normpath(path): """Normalize path, eliminating double slashes, etc.""" + # Preserve unicode (if path is unicode) + backslash, dot = (u'\\', u'.') if isinstance(path, unicode) else ('\\', '.') path = path.replace("/", "\\") prefix, path = splitdrive(path) # We need to be careful here. If the prefix is empty, and the path starts @@ -411,12 +413,12 @@ if prefix == '': # No drive letter - preserve initial backslashes while path[:1] == "\\": - prefix = prefix + "\\" + prefix = prefix + backslash path = path[1:] else: # We have a drive letter - collapse initial backslashes if path.startswith("\\"): - prefix = prefix + "\\" + prefix = prefix + backslash path = path.lstrip("\\") comps = path.split("\\") i = 0 @@ -435,8 +437,8 @@ i += 1 # If the path is now empty, substitute '.' if not prefix and not comps: - comps.append('.') - return prefix + "\\".join(comps) + comps.append(dot) + return prefix + backslash.join(comps) # Return an absolute path. Modified: python/branches/release26-maint/Lib/posixpath.py ============================================================================== --- python/branches/release26-maint/Lib/posixpath.py (original) +++ python/branches/release26-maint/Lib/posixpath.py Tue Jan 12 04:38:53 2010 @@ -307,8 +307,10 @@ def normpath(path): """Normalize path, eliminating double slashes, etc.""" + # Preserve unicode (if path is unicode) + slash, dot = (u'/', u'.') if isinstance(path, unicode) else ('/', '.') if path == '': - return '.' + return dot initial_slashes = path.startswith('/') # POSIX allows one or two initial slashes, but treats three or more # as single slash. @@ -326,10 +328,10 @@ elif new_comps: new_comps.pop() comps = new_comps - path = '/'.join(comps) + path = slash.join(comps) if initial_slashes: - path = '/'*initial_slashes + path - return path or '.' + path = slash*initial_slashes + path + return path or dot def abspath(path): Modified: python/branches/release26-maint/Lib/test/test_ntpath.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_ntpath.py (original) +++ python/branches/release26-maint/Lib/test/test_ntpath.py Tue Jan 12 04:38:53 2010 @@ -123,6 +123,11 @@ tester("ntpath.normpath('C:////a/b')", r'C:\a\b') tester("ntpath.normpath('//machine/share//a/b')", r'\\machine\share\a\b') + # Issue 5827: Make sure normpath preserves unicode + for path in (u'', u'.', u'/', u'\\', u'///foo/.//bar//'): + self.assertTrue(isinstance(ntpath.normpath(path), unicode), + 'normpath() returned str instead of unicode') + def test_expandvars(self): oldenv = os.environ.copy() try: Modified: python/branches/release26-maint/Lib/test/test_posixpath.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_posixpath.py (original) +++ python/branches/release26-maint/Lib/test/test_posixpath.py Tue Jan 12 04:38:53 2010 @@ -385,6 +385,11 @@ self.assertEqual(posixpath.normpath("///foo/.//bar//.//..//.//baz"), "/foo/baz") self.assertEqual(posixpath.normpath("///..//./foo/.//bar"), "/foo/bar") + # Issue 5827: Make sure normpath preserves unicode + for path in (u'', u'.', u'/', u'\\', u'///foo/.//bar//'): + self.assertTrue(isinstance(posixpath.normpath(path), unicode), + 'normpath() returned str instead of unicode') + self.assertRaises(TypeError, posixpath.normpath) def test_abspath(self): Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Tue Jan 12 04:38:53 2010 @@ -48,6 +48,9 @@ Library ------- +- Issue #5827: Make sure that normpath preserves unicode. Initial patch + by Matt Giuca. + - Issue #5372: Drop the reuse of .o files in Distutils' ccompiler (since Extension extra options may change the output without changing the .c file). Initial patch by Collin Winter. From python-checkins at python.org Tue Jan 12 05:03:11 2010 From: python-checkins at python.org (ezio.melotti) Date: Tue, 12 Jan 2010 04:03:11 -0000 Subject: [Python-checkins] r77444 - python/branches/py3k Message-ID: Author: ezio.melotti Date: Tue Jan 12 05:03:11 2010 New Revision: 77444 Log: Blocked revisions 77442 via svnmerge ........ r77442 | ezio.melotti | 2010-01-12 05:32:05 +0200 (Tue, 12 Jan 2010) | 1 line #5827: make sure that normpath preserves unicode ........ Modified: python/branches/py3k/ (props changed) From benjamin at python.org Tue Jan 12 05:03:10 2010 From: benjamin at python.org (Benjamin Peterson) Date: Mon, 11 Jan 2010 22:03:10 -0600 Subject: [Python-checkins] r77435 - in sandbox/trunk/2to3: example.py lib2to3/fixes/fix_dict.py lib2to3/tests/test_fixers.py In-Reply-To: <4b4bc45f.0867f10a.054e.46afSMTPIN_ADDED@mx.google.com> References: <4b4bc45f.0867f10a.054e.46afSMTPIN_ADDED@mx.google.com> Message-ID: <1afaf6161001112003i62aae4ebn71ccda0182868665@mail.gmail.com> 2010/1/11 alexandre.vassalotti : > Author: alexandre.vassalotti > Date: Tue Jan 12 01:36:54 2010 > New Revision: 77435 > > Log: > Issue #1967: Add fixer for dictionary views. You should update Doc/library/2to3.rst, too, please. -- Regards, Benjamin From brett at python.org Tue Jan 12 19:13:44 2010 From: brett at python.org (Brett Cannon) Date: Tue, 12 Jan 2010 10:13:44 -0800 Subject: [Python-checkins] r77422 - in python/trunk: Doc/reference/expressions.rst Grammar/Grammar Include/Python-ast.h Include/graminit.h Include/opcode.h Include/symtable.h Lib/compiler/ast.py Lib/compiler/pyassem.py Lib/compiler/pycodegen.py Lib/compil Message-ID: Thanks for these syntax backports, Alexandre! It will definitely help with the transition for people (and most likely 3to2 as well). -Brett On Mon, Jan 11, 2010 at 14:47, alexandre.vassalotti < python-checkins at python.org> wrote: > Author: alexandre.vassalotti > Date: Mon Jan 11 23:36:12 2010 > New Revision: 77422 > > Log: > Issue #2333: Backport set and dict comprehensions syntax. > > > Added: > python/trunk/Lib/test/test_dictcomps.py > python/trunk/Lib/test/test_setcomps.py > Modified: > python/trunk/Doc/reference/expressions.rst > python/trunk/Grammar/Grammar > python/trunk/Include/Python-ast.h > python/trunk/Include/graminit.h > python/trunk/Include/opcode.h > python/trunk/Include/symtable.h > python/trunk/Lib/compiler/ast.py > python/trunk/Lib/compiler/pyassem.py > python/trunk/Lib/compiler/pycodegen.py > python/trunk/Lib/compiler/transformer.py > python/trunk/Lib/opcode.py > python/trunk/Lib/symbol.py > python/trunk/Lib/test/test_compiler.py > python/trunk/Lib/test/test_grammar.py > python/trunk/Lib/test/test_parser.py > python/trunk/Modules/parsermodule.c > python/trunk/Parser/Python.asdl > python/trunk/Python/Python-ast.c > python/trunk/Python/ast.c > python/trunk/Python/ceval.c > python/trunk/Python/compile.c > python/trunk/Python/graminit.c > python/trunk/Python/import.c > python/trunk/Python/symtable.c > > Modified: python/trunk/Doc/reference/expressions.rst > > ============================================================================== > --- python/trunk/Doc/reference/expressions.rst (original) > +++ python/trunk/Doc/reference/expressions.rst Mon Jan 11 23:36:12 2010 > @@ -205,74 +205,100 @@ > list element each time the innermost block is reached [#]_. > > > +.. _comprehensions: > + > +Displays for sets and dictionaries > +---------------------------------- > + > +For constructing a set or a dictionary Python provides special syntax > +called "displays", each of them in two flavors: > + > +* either the container contents are listed explicitly, or > + > +* they are computed via a set of looping and filtering instructions, > called a > + :dfn:`comprehension`. > + > +Common syntax elements for comprehensions are: > + > +.. productionlist:: > + comprehension: `expression` `comp_for` > + comp_for: "for" `target_list` "in" `or_test` [`comp_iter`] > + comp_iter: `comp_for` | `comp_if` > + comp_if: "if" `expression_nocond` [`comp_iter`] > + > +The comprehension consists of a single expression followed by at least one > +:keyword:`for` clause and zero or more :keyword:`for` or :keyword:`if` > clauses. > +In this case, the elements of the new container are those that would be > produced > +by considering each of the :keyword:`for` or :keyword:`if` clauses a > block, > +nesting from left to right, and evaluating the expression to produce an > element > +each time the innermost block is reached. > + > +Note that the comprehension is executed in a separate scope, so names > assigned > +to in the target list don't "leak" in the enclosing scope. > + > + > .. _genexpr: > > Generator expressions > --------------------- > > .. index:: pair: generator; expression > + object: generator > > A generator expression is a compact generator notation in parentheses: > > .. productionlist:: > - generator_expression: "(" `expression` `genexpr_for` ")" > - genexpr_for: "for" `target_list` "in" `or_test` [`genexpr_iter`] > - genexpr_iter: `genexpr_for` | `genexpr_if` > - genexpr_if: "if" `old_expression` [`genexpr_iter`] > - > -.. index:: object: generator > + generator_expression: "(" `expression` `comp_for` ")" > > -A generator expression yields a new generator object. It consists of a > single > -expression followed by at least one :keyword:`for` clause and zero or more > -:keyword:`for` or :keyword:`if` clauses. The iterating values of the new > -generator are those that would be produced by considering each of the > -:keyword:`for` or :keyword:`if` clauses a block, nesting from left to > right, and > -evaluating the expression to yield a value that is reached the innermost > block > -for each iteration. > - > -Variables used in the generator expression are evaluated lazily in a > separate > -scope when the :meth:`next` method is called for the generator object (in > the > -same fashion as for normal generators). However, the :keyword:`in` > expression > -of the leftmost :keyword:`for` clause is immediately evaluated in the > current > -scope so that an error produced by it can be seen before any other > possible > +A generator expression yields a new generator object. Its syntax is the > same as > +for comprehensions, except that it is enclosed in parentheses instead of > +brackets or curly braces. > + > +Variables used in the generator expression are evaluated lazily when the > +:meth:`__next__` method is called for generator object (in the same > fashion as > +normal generators). However, the leftmost :keyword:`for` clause is > immediately > +evaluated, so that an error produced by it can be seen before any other > possible > error in the code that handles the generator expression. Subsequent > -:keyword:`for` and :keyword:`if` clauses cannot be evaluated immediately > since > -they may depend on the previous :keyword:`for` loop. For example: > -``(x*y for x in range(10) for y in bar(x))``. > +:keyword:`for` clauses cannot be evaluated immediately since they may > depend on > +the previous :keyword:`for` loop. For example: ``(x*y for x in range(10) > for y > +in bar(x))``. > > -The parentheses can be omitted on calls with only one argument. See > section > +The parentheses can be omitted on calls with only one argument. See > section > :ref:`calls` for the detail. > > - > .. _dict: > > Dictionary displays > ------------------- > > .. index:: pair: dictionary; display > - > -.. index:: > - single: key > - single: datum > - single: key/datum pair > + key, datum, key/datum pair > + object: dictionary > > A dictionary display is a possibly empty series of key/datum pairs > enclosed in > curly braces: > > .. productionlist:: > - dict_display: "{" [`key_datum_list`] "}" > + dict_display: "{" [`key_datum_list` | `dict_comprehension`] "}" > key_datum_list: `key_datum` ("," `key_datum`)* [","] > key_datum: `expression` ":" `expression` > - > -.. index:: object: dictionary > + dict_comprehension: `expression` ":" `expression` `comp_for` > > A dictionary display yields a new dictionary object. > > -The key/datum pairs are evaluated from left to right to define the entries > of > -the dictionary: each key object is used as a key into the dictionary to > store > -the corresponding datum. > +If a comma-separated sequence of key/datum pairs is given, they are > evaluated > +from left to right to define the entries of the dictionary: each key > object is > +used as a key into the dictionary to store the corresponding datum. This > means > +that you can specify the same key multiple times in the key/datum list, > and the > +final dictionary's value for that key will be the last one given. > + > +A dict comprehension, in contrast to list and set comprehensions, needs > two > +expressions separated with a colon followed by the usual "for" and "if" > clauses. > +When the comprehension is run, the resulting key and value elements are > inserted > +in the new dictionary in the order they are produced. > > .. index:: pair: immutable; object > + hashable > > Restrictions on the types of the key values are listed earlier in section > :ref:`types`. (To summarize, the key type should be :term:`hashable`, > which excludes > > Modified: python/trunk/Grammar/Grammar > > ============================================================================== > --- python/trunk/Grammar/Grammar (original) > +++ python/trunk/Grammar/Grammar Mon Jan 11 23:36:12 2010 > @@ -100,13 +100,13 @@ > term: factor (('*'|'/'|'%'|'//') factor)* > factor: ('+'|'-'|'~') factor | power > power: atom trailer* ['**' factor] > -atom: ('(' [yield_expr|testlist_gexp] ')' | > +atom: ('(' [yield_expr|testlist_comp] ')' | > '[' [listmaker] ']' | > '{' [dictorsetmaker] '}' | > '`' testlist1 '`' | > NAME | NUMBER | STRING+) > listmaker: test ( list_for | (',' test)* [','] ) > -testlist_gexp: test ( gen_for | (',' test)* [','] ) > +testlist_comp: test ( comp_for | (',' test)* [','] ) > lambdef: 'lambda' [varargslist] ':' test > trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME > subscriptlist: subscript (',' subscript)* [','] > @@ -115,8 +115,8 @@ > exprlist: expr (',' expr)* [','] > testlist: test (',' test)* [','] > dictmaker: test ':' test (',' test ':' test)* [','] > -dictorsetmaker: ( (test ':' test (',' test ':' test)* [',']) | > - (test (',' test)* [',']) ) > +dictorsetmaker: ( (test ':' test (comp_for | (',' test ':' test)* [','])) > | > + (test (comp_for | (',' test)* [','])) ) > > classdef: 'class' NAME ['(' [testlist] ')'] ':' suite > > @@ -125,15 +125,15 @@ > |'**' test) > # The reason that keywords are test nodes instead of NAME is that using > NAME > # results in an ambiguity. ast.c makes sure it's a NAME. > -argument: test [gen_for] | test '=' test > +argument: test [comp_for] | test '=' test > > list_iter: list_for | list_if > list_for: 'for' exprlist 'in' testlist_safe [list_iter] > list_if: 'if' old_test [list_iter] > > -gen_iter: gen_for | gen_if > -gen_for: 'for' exprlist 'in' or_test [gen_iter] > -gen_if: 'if' old_test [gen_iter] > +comp_iter: comp_for | comp_if > +comp_for: 'for' exprlist 'in' or_test [comp_iter] > +comp_if: 'if' old_test [comp_iter] > > testlist1: test (',' test)* > > > Modified: python/trunk/Include/Python-ast.h > > ============================================================================== > --- python/trunk/Include/Python-ast.h (original) > +++ python/trunk/Include/Python-ast.h Mon Jan 11 23:36:12 2010 > @@ -186,10 +186,10 @@ > > enum _expr_kind {BoolOp_kind=1, BinOp_kind=2, UnaryOp_kind=3, > Lambda_kind=4, > IfExp_kind=5, Dict_kind=6, Set_kind=7, ListComp_kind=8, > - GeneratorExp_kind=9, Yield_kind=10, Compare_kind=11, > - Call_kind=12, Repr_kind=13, Num_kind=14, Str_kind=15, > - Attribute_kind=16, Subscript_kind=17, Name_kind=18, > - List_kind=19, Tuple_kind=20}; > + SetComp_kind=9, DictComp_kind=10, GeneratorExp_kind=11, > + Yield_kind=12, Compare_kind=13, Call_kind=14, > Repr_kind=15, > + Num_kind=16, Str_kind=17, Attribute_kind=18, > + Subscript_kind=19, Name_kind=20, List_kind=21, > Tuple_kind=22}; > struct _expr { > enum _expr_kind kind; > union { > @@ -237,6 +237,17 @@ > struct { > expr_ty elt; > asdl_seq *generators; > + } SetComp; > + > + struct { > + expr_ty key; > + expr_ty value; > + asdl_seq *generators; > + } DictComp; > + > + struct { > + expr_ty elt; > + asdl_seq *generators; > } GeneratorExp; > > struct { > @@ -458,6 +469,12 @@ > #define ListComp(a0, a1, a2, a3, a4) _Py_ListComp(a0, a1, a2, a3, a4) > expr_ty _Py_ListComp(expr_ty elt, asdl_seq * generators, int lineno, int > col_offset, PyArena *arena); > +#define SetComp(a0, a1, a2, a3, a4) _Py_SetComp(a0, a1, a2, a3, a4) > +expr_ty _Py_SetComp(expr_ty elt, asdl_seq * generators, int lineno, int > + col_offset, PyArena *arena); > +#define DictComp(a0, a1, a2, a3, a4, a5) _Py_DictComp(a0, a1, a2, a3, a4, > a5) > +expr_ty _Py_DictComp(expr_ty key, expr_ty value, asdl_seq * generators, > int > + lineno, int col_offset, PyArena *arena); > #define GeneratorExp(a0, a1, a2, a3, a4) _Py_GeneratorExp(a0, a1, a2, a3, > a4) > expr_ty _Py_GeneratorExp(expr_ty elt, asdl_seq * generators, int lineno, > int > col_offset, PyArena *arena); > > Modified: python/trunk/Include/graminit.h > > ============================================================================== > --- python/trunk/Include/graminit.h (original) > +++ python/trunk/Include/graminit.h Mon Jan 11 23:36:12 2010 > @@ -64,7 +64,7 @@ > #define power 317 > #define atom 318 > #define listmaker 319 > -#define testlist_gexp 320 > +#define testlist_comp 320 > #define lambdef 321 > #define trailer 322 > #define subscriptlist 323 > @@ -80,9 +80,9 @@ > #define list_iter 333 > #define list_for 334 > #define list_if 335 > -#define gen_iter 336 > -#define gen_for 337 > -#define gen_if 338 > +#define comp_iter 336 > +#define comp_for 337 > +#define comp_if 338 > #define testlist1 339 > #define encoding_decl 340 > #define yield_expr 341 > > Modified: python/trunk/Include/opcode.h > > ============================================================================== > --- python/trunk/Include/opcode.h (original) > +++ python/trunk/Include/opcode.h Mon Jan 11 23:36:12 2010 > @@ -147,6 +147,9 @@ > /* Support for opargs more than 16 bits long */ > #define EXTENDED_ARG 145 > > +#define SET_ADD 146 > +#define MAP_ADD 147 > + > > enum cmp_op {PyCmp_LT=Py_LT, PyCmp_LE=Py_LE, PyCmp_EQ=Py_EQ, > PyCmp_NE=Py_NE, PyCmp_GT=Py_GT, PyCmp_GE=Py_GE, > PyCmp_IN, PyCmp_NOT_IN, PyCmp_IS, PyCmp_IS_NOT, > PyCmp_EXC_MATCH, PyCmp_BAD}; > > Modified: python/trunk/Include/symtable.h > > ============================================================================== > --- python/trunk/Include/symtable.h (original) > +++ python/trunk/Include/symtable.h Mon Jan 11 23:36:12 2010 > @@ -42,6 +42,7 @@ > an argument */ > int ste_lineno; /* first line of block */ > int ste_opt_lineno; /* lineno of last exec or import * */ > + int ste_tmpname; /* counter for listcomp temp vars */ > struct symtable *ste_table; > } PySTEntryObject; > > > Modified: python/trunk/Lib/compiler/ast.py > > ============================================================================== > --- python/trunk/Lib/compiler/ast.py (original) > +++ python/trunk/Lib/compiler/ast.py Mon Jan 11 23:36:12 2010 > @@ -890,6 +890,51 @@ > def __repr__(self): > return "ListCompIf(%s)" % (repr(self.test),) > > +class SetComp(Node): > + def __init__(self, expr, quals, lineno=None): > + self.expr = expr > + self.quals = quals > + self.lineno = lineno > + > + def getChildren(self): > + children = [] > + children.append(self.expr) > + children.extend(flatten(self.quals)) > + return tuple(children) > + > + def getChildNodes(self): > + nodelist = [] > + nodelist.append(self.expr) > + nodelist.extend(flatten_nodes(self.quals)) > + return tuple(nodelist) > + > + def __repr__(self): > + return "SetComp(%s, %s)" % (repr(self.expr), repr(self.quals)) > + > +class DictComp(Node): > + def __init__(self, key, value, quals, lineno=None): > + self.key = key > + self.value = value > + self.quals = quals > + self.lineno = lineno > + > + def getChildren(self): > + children = [] > + children.append(self.key) > + children.append(self.value) > + children.extend(flatten(self.quals)) > + return tuple(children) > + > + def getChildNodes(self): > + nodelist = [] > + nodelist.append(self.key) > + nodelist.append(self.value) > + nodelist.extend(flatten_nodes(self.quals)) > + return tuple(nodelist) > + > + def __repr__(self): > + return "DictComp(%s, %s, %s)" % (repr(self.key), repr(self.value), > repr(self.quals)) > + > class Mod(Node): > def __init__(self, leftright, lineno=None): > self.left = leftright[0] > > Modified: python/trunk/Lib/compiler/pyassem.py > > ============================================================================== > --- python/trunk/Lib/compiler/pyassem.py (original) > +++ python/trunk/Lib/compiler/pyassem.py Mon Jan 11 23:36:12 2010 > @@ -685,7 +685,9 @@ > effect = { > 'POP_TOP': -1, > 'DUP_TOP': 1, > - 'LIST_APPEND': -2, > + 'LIST_APPEND': -1, > + 'SET_ADD': -1, > + 'MAP_ADD': -2, > 'SLICE+1': -1, > 'SLICE+2': -1, > 'SLICE+3': -2, > > Modified: python/trunk/Lib/compiler/pycodegen.py > > ============================================================================== > --- python/trunk/Lib/compiler/pycodegen.py (original) > +++ python/trunk/Lib/compiler/pycodegen.py Mon Jan 11 23:36:12 2010 > @@ -589,6 +589,55 @@ > self.emit('JUMP_ABSOLUTE', start) > self.startBlock(anchor) > > + def visitSetComp(self, node): > + self.set_lineno(node) > + # setup list > + self.emit('BUILD_SET', 0) > + > + stack = [] > + for i, for_ in zip(range(len(node.quals)), node.quals): > + start, anchor = self.visit(for_) > + cont = None > + for if_ in for_.ifs: > + if cont is None: > + cont = self.newBlock() > + self.visit(if_, cont) > + stack.insert(0, (start, cont, anchor)) > + > + self.visit(node.expr) > + self.emit('SET_ADD', len(node.quals) + 1) > + > + for start, cont, anchor in stack: > + if cont: > + self.nextBlock(cont) > + self.emit('JUMP_ABSOLUTE', start) > + self.startBlock(anchor) > + > + def visitDictComp(self, node): > + self.set_lineno(node) > + # setup list > + self.emit('BUILD_MAP', 0) > + > + stack = [] > + for i, for_ in zip(range(len(node.quals)), node.quals): > + start, anchor = self.visit(for_) > + cont = None > + for if_ in for_.ifs: > + if cont is None: > + cont = self.newBlock() > + self.visit(if_, cont) > + stack.insert(0, (start, cont, anchor)) > + > + self.visit(node.value) > + self.visit(node.key) > + self.emit('MAP_ADD', len(node.quals) + 1) > + > + for start, cont, anchor in stack: > + if cont: > + self.nextBlock(cont) > + self.emit('JUMP_ABSOLUTE', start) > + self.startBlock(anchor) > + > def visitListCompFor(self, node): > start = self.newBlock() > anchor = self.newBlock() > > Modified: python/trunk/Lib/compiler/transformer.py > > ============================================================================== > --- python/trunk/Lib/compiler/transformer.py (original) > +++ python/trunk/Lib/compiler/transformer.py Mon Jan 11 23:36:12 2010 > @@ -581,8 +581,10 @@ > testlist1 = testlist > exprlist = testlist > > - def testlist_gexp(self, nodelist): > - if len(nodelist) == 2 and nodelist[1][0] == symbol.gen_for: > + def testlist_comp(self, nodelist): > + # test ( comp_for | (',' test)* [','] ) > + assert nodelist[0][0] == symbol.test > + if len(nodelist) == 2 and nodelist[1][0] == symbol.comp_for: > test = self.com_node(nodelist[0]) > return self.com_generator_expression(test, nodelist[1]) > return self.testlist(nodelist) > @@ -1001,7 +1003,7 @@ > # loop to avoid trivial recursion > while 1: > t = node[0] > - if t in (symbol.exprlist, symbol.testlist, > symbol.testlist_safe, symbol.testlist_gexp): > + if t in (symbol.exprlist, symbol.testlist, > symbol.testlist_safe, symbol.testlist_comp): > if len(node) > 2: > return self.com_assign_tuple(node, assigning) > node = node[1] > @@ -1099,116 +1101,138 @@ > else: > stmts.append(result) > > - if hasattr(symbol, 'list_for'): > - def com_list_constructor(self, nodelist): > - # listmaker: test ( list_for | (',' test)* [','] ) > - values = [] > - for i in range(1, len(nodelist)): > - if nodelist[i][0] == symbol.list_for: > - assert len(nodelist[i:]) == 1 > - return self.com_list_comprehension(values[0], > - nodelist[i]) > - elif nodelist[i][0] == token.COMMA: > - continue > - values.append(self.com_node(nodelist[i])) > - return List(values, lineno=values[0].lineno) > - > - def com_list_comprehension(self, expr, node): > - # list_iter: list_for | list_if > - # list_for: 'for' exprlist 'in' testlist [list_iter] > - # list_if: 'if' test [list_iter] > - > - # XXX should raise SyntaxError for assignment > - > - lineno = node[1][2] > - fors = [] > - while node: > - t = node[1][1] > - if t == 'for': > - assignNode = self.com_assign(node[2], OP_ASSIGN) > - listNode = self.com_node(node[4]) > - newfor = ListCompFor(assignNode, listNode, []) > - newfor.lineno = node[1][2] > - fors.append(newfor) > - if len(node) == 5: > - node = None > - else: > - node = self.com_list_iter(node[5]) > - elif t == 'if': > - test = self.com_node(node[2]) > - newif = ListCompIf(test, lineno=node[1][2]) > - newfor.ifs.append(newif) > - if len(node) == 3: > - node = None > - else: > - node = self.com_list_iter(node[3]) > + def com_list_constructor(self, nodelist): > + # listmaker: test ( list_for | (',' test)* [','] ) > + values = [] > + for i in range(1, len(nodelist)): > + if nodelist[i][0] == symbol.list_for: > + assert len(nodelist[i:]) == 1 > + return self.com_list_comprehension(values[0], > + nodelist[i]) > + elif nodelist[i][0] == token.COMMA: > + continue > + values.append(self.com_node(nodelist[i])) > + return List(values, lineno=values[0].lineno) > + > + def com_list_comprehension(self, expr, node): > + return self.com_comprehension(expr, None, node, 'list') > + > + def com_comprehension(self, expr1, expr2, node, type): > + # list_iter: list_for | list_if > + # list_for: 'for' exprlist 'in' testlist [list_iter] > + # list_if: 'if' test [list_iter] > + > + # XXX should raise SyntaxError for assignment > + # XXX(avassalotti) Set and dict comprehensions should have > generator > + # semantics. In other words, they shouldn't leak > + # variables outside of the comprehension's scope. > + > + lineno = node[1][2] > + fors = [] > + while node: > + t = node[1][1] > + if t == 'for': > + assignNode = self.com_assign(node[2], OP_ASSIGN) > + compNode = self.com_node(node[4]) > + newfor = ListCompFor(assignNode, compNode, []) > + newfor.lineno = node[1][2] > + fors.append(newfor) > + if len(node) == 5: > + node = None > + elif type == 'list': > + node = self.com_list_iter(node[5]) > else: > - raise SyntaxError, \ > - ("unexpected list comprehension element: %s %d" > - % (node, lineno)) > - return ListComp(expr, fors, lineno=lineno) > - > - def com_list_iter(self, node): > - assert node[0] == symbol.list_iter > - return node[1] > - else: > - def com_list_constructor(self, nodelist): > - values = [] > - for i in range(1, len(nodelist), 2): > - values.append(self.com_node(nodelist[i])) > - return List(values, lineno=values[0].lineno) > - > - if hasattr(symbol, 'gen_for'): > - def com_generator_expression(self, expr, node): > - # gen_iter: gen_for | gen_if > - # gen_for: 'for' exprlist 'in' test [gen_iter] > - # gen_if: 'if' test [gen_iter] > - > - lineno = node[1][2] > - fors = [] > - while node: > - t = node[1][1] > - if t == 'for': > - assignNode = self.com_assign(node[2], OP_ASSIGN) > - genNode = self.com_node(node[4]) > - newfor = GenExprFor(assignNode, genNode, [], > - lineno=node[1][2]) > - fors.append(newfor) > - if (len(node)) == 5: > - node = None > - else: > - node = self.com_gen_iter(node[5]) > - elif t == 'if': > - test = self.com_node(node[2]) > - newif = GenExprIf(test, lineno=node[1][2]) > - newfor.ifs.append(newif) > - if len(node) == 3: > - node = None > - else: > - node = self.com_gen_iter(node[3]) > + node = self.com_comp_iter(node[5]) > + elif t == 'if': > + test = self.com_node(node[2]) > + newif = ListCompIf(test, lineno=node[1][2]) > + newfor.ifs.append(newif) > + if len(node) == 3: > + node = None > + elif type == 'list': > + node = self.com_list_iter(node[3]) > + else: > + node = self.com_comp_iter(node[3]) > + else: > + raise SyntaxError, \ > + ("unexpected comprehension element: %s %d" > + % (node, lineno)) > + if type == 'list': > + return ListComp(expr1, fors, lineno=lineno) > + elif type == 'set': > + return SetComp(expr1, fors, lineno=lineno) > + elif type == 'dict': > + return DictComp(expr1, expr2, fors, lineno=lineno) > + else: > + raise ValueError("unexpected comprehension type: " + > repr(type)) > + > + def com_list_iter(self, node): > + assert node[0] == symbol.list_iter > + return node[1] > + > + def com_comp_iter(self, node): > + assert node[0] == symbol.comp_iter > + return node[1] > + > + def com_generator_expression(self, expr, node): > + # comp_iter: comp_for | comp_if > + # comp_for: 'for' exprlist 'in' test [comp_iter] > + # comp_if: 'if' test [comp_iter] > + > + lineno = node[1][2] > + fors = [] > + while node: > + t = node[1][1] > + if t == 'for': > + assignNode = self.com_assign(node[2], OP_ASSIGN) > + genNode = self.com_node(node[4]) > + newfor = GenExprFor(assignNode, genNode, [], > + lineno=node[1][2]) > + fors.append(newfor) > + if (len(node)) == 5: > + node = None > else: > - raise SyntaxError, \ > - ("unexpected generator expression element: %s > %d" > - % (node, lineno)) > - fors[0].is_outmost = True > - return GenExpr(GenExprInner(expr, fors), lineno=lineno) > - > - def com_gen_iter(self, node): > - assert node[0] == symbol.gen_iter > - return node[1] > + node = self.com_comp_iter(node[5]) > + elif t == 'if': > + test = self.com_node(node[2]) > + newif = GenExprIf(test, lineno=node[1][2]) > + newfor.ifs.append(newif) > + if len(node) == 3: > + node = None > + else: > + node = self.com_comp_iter(node[3]) > + else: > + raise SyntaxError, \ > + ("unexpected generator expression element: %s %d" > + % (node, lineno)) > + fors[0].is_outmost = True > + return GenExpr(GenExprInner(expr, fors), lineno=lineno) > > def com_dictorsetmaker(self, nodelist): > - # dictorsetmaker: ( (test ':' test (',' test ':' test)* [',']) | > - # (test (',' test)* [',']) ) > + # dictorsetmaker: ( (test ':' test (comp_for | (',' test ':' > test)* [','])) | > + # (test (comp_for | (',' test)* [','])) ) > assert nodelist[0] == symbol.dictorsetmaker > - if len(nodelist) == 2 or nodelist[2][0] == token.COMMA: > + nodelist = nodelist[1:] > + if len(nodelist) == 1 or nodelist[1][0] == token.COMMA: > + # set literal > items = [] > - for i in range(1, len(nodelist), 2): > + for i in range(0, len(nodelist), 2): > items.append(self.com_node(nodelist[i])) > return Set(items, lineno=items[0].lineno) > + elif nodelist[1][0] == symbol.comp_for: > + # set comprehension > + expr = self.com_node(nodelist[0]) > + return self.com_comprehension(expr, None, nodelist[1], 'set') > + elif len(nodelist) > 3 and nodelist[3][0] == symbol.comp_for: > + # dict comprehension > + assert nodelist[1][0] == token.COLON > + key = self.com_node(nodelist[0]) > + value = self.com_node(nodelist[2]) > + return self.com_comprehension(key, value, nodelist[3], 'dict') > else: > + # dict literal > items = [] > - for i in range(1, len(nodelist), 4): > + for i in range(0, len(nodelist), 4): > items.append((self.com_node(nodelist[i]), > self.com_node(nodelist[i+2]))) > return Dict(items, lineno=items[0][0].lineno) > @@ -1257,7 +1281,7 @@ > kw, result = self.com_argument(node, kw, star_node) > > if len_nodelist != 2 and isinstance(result, GenExpr) \ > - and len(node) == 3 and node[2][0] == symbol.gen_for: > + and len(node) == 3 and node[2][0] == symbol.comp_for: > # allow f(x for x in y), but reject f(x for x in y, 1) > # should use f((x for x in y), 1) instead of f(x for x in > y, 1) > raise SyntaxError, 'generator expression needs parenthesis' > @@ -1269,7 +1293,7 @@ > lineno=extractLineNo(nodelist)) > > def com_argument(self, nodelist, kw, star_node): > - if len(nodelist) == 3 and nodelist[2][0] == symbol.gen_for: > + if len(nodelist) == 3 and nodelist[2][0] == symbol.comp_for: > test = self.com_node(nodelist[1]) > return 0, self.com_generator_expression(test, nodelist[2]) > if len(nodelist) == 2: > > Modified: python/trunk/Lib/opcode.py > > ============================================================================== > --- python/trunk/Lib/opcode.py (original) > +++ python/trunk/Lib/opcode.py Mon Jan 11 23:36:12 2010 > @@ -186,5 +186,7 @@ > > def_op('EXTENDED_ARG', 145) > EXTENDED_ARG = 145 > +def_op('SET_ADD', 146) > +def_op('MAP_ADD', 147) > > del def_op, name_op, jrel_op, jabs_op > > Modified: python/trunk/Lib/symbol.py > > ============================================================================== > --- python/trunk/Lib/symbol.py (original) > +++ python/trunk/Lib/symbol.py Mon Jan 11 23:36:12 2010 > @@ -74,7 +74,7 @@ > power = 317 > atom = 318 > listmaker = 319 > -testlist_gexp = 320 > +testlist_comp = 320 > lambdef = 321 > trailer = 322 > subscriptlist = 323 > @@ -90,9 +90,9 @@ > list_iter = 333 > list_for = 334 > list_if = 335 > -gen_iter = 336 > -gen_for = 337 > -gen_if = 338 > +comp_iter = 336 > +comp_for = 337 > +comp_if = 338 > testlist1 = 339 > encoding_decl = 340 > yield_expr = 341 > > Modified: python/trunk/Lib/test/test_compiler.py > > ============================================================================== > --- python/trunk/Lib/test/test_compiler.py (original) > +++ python/trunk/Lib/test/test_compiler.py Mon Jan 11 23:36:12 2010 > @@ -140,6 +140,36 @@ > 'eval') > self.assertEquals(eval(c), [(0, 3), (1, 3), (2, 3)]) > > + def testSetLiteral(self): > + c = compiler.compile('{1, 2, 3}', '', 'eval') > + self.assertEquals(eval(c), {1,2,3}) > + c = compiler.compile('{1, 2, 3,}', '', 'eval') > + self.assertEquals(eval(c), {1,2,3}) > + > + def testDictLiteral(self): > + c = compiler.compile('{1:2, 2:3, 3:4}', '', 'eval') > + self.assertEquals(eval(c), {1:2, 2:3, 3:4}) > + c = compiler.compile('{1:2, 2:3, 3:4,}', '', 'eval') > + self.assertEquals(eval(c), {1:2, 2:3, 3:4}) > + > + def testSetComp(self): > + c = compiler.compile('{x for x in range(1, 4)}', '', > 'eval') > + self.assertEquals(eval(c), {1, 2, 3}) > + c = compiler.compile('{x * y for x in range(3) if x != 0' > + ' for y in range(4) if y != 0}', > + '', > + 'eval') > + self.assertEquals(eval(c), {1, 2, 3, 4, 6}) > + > + def testDictComp(self): > + c = compiler.compile('{x:x+1 for x in range(1, 4)}', '', > 'eval') > + self.assertEquals(eval(c), {1:2, 2:3, 3:4}) > + c = compiler.compile('{(x, y) : y for x in range(2) if x != 0' > + ' for y in range(3) if y != 0}', > + '', > + 'eval') > + self.assertEquals(eval(c), {(1, 2): 2, (1, 1): 1}) > + > def testWith(self): > # SF bug 1638243 > c = compiler.compile('from __future__ import with_statement\n' > @@ -248,6 +278,8 @@ > l[3:4] > d = {'a': 2} > d = {} > +d = {x: y for x, y in zip(range(5), range(5,10))} > +s = {x for x in range(10)} > s = {1} > t = () > t = (1, 2) > > Added: python/trunk/Lib/test/test_dictcomps.py > > ============================================================================== > --- (empty file) > +++ python/trunk/Lib/test/test_dictcomps.py Mon Jan 11 23:36:12 2010 > @@ -0,0 +1,54 @@ > + > +doctests = """ > + > + >>> k = "old value" > + >>> { k: None for k in range(10) } > + {0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: > None, 8: None, 9: None} > + >>> k > + 'old value' > + > + >>> { k: k+10 for k in range(10) } > + {0: 10, 1: 11, 2: 12, 3: 13, 4: 14, 5: 15, 6: 16, 7: 17, 8: 18, 9: 19} > + > + >>> g = "Global variable" > + >>> { k: g for k in range(10) } > + {0: 'Global variable', 1: 'Global variable', 2: 'Global variable', 3: > 'Global variable', 4: 'Global variable', 5: 'Global variable', 6: 'Global > variable', 7: 'Global variable', 8: 'Global variable', 9: 'Global variable'} > + > + >>> { k: v for k in range(10) for v in range(10) if k == v } > + {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9} > + > + >>> { k: v for v in range(10) for k in range(v*9, v*10) } > + {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4, 38: 4, 39: 4, > 45: 5, 46: 5, 47: 5, 48: 5, 49: 5, 54: 6, 55: 6, 56: 6, 57: 6, 58: 6, 59: 6, > 63: 7, 64: 7, 65: 7, 66: 7, 67: 7, 68: 7, 69: 7, 72: 8, 73: 8, 74: 8, 75: 8, > 76: 8, 77: 8, 78: 8, 79: 8, 81: 9, 82: 9, 83: 9, 84: 9, 85: 9, 86: 9, 87: 9, > 88: 9, 89: 9} > + > + >>> { x: y for y, x in ((1, 2), (3, 4)) } = 5 # doctest: > +IGNORE_EXCEPTION_DETAIL > + Traceback (most recent call last): > + ... > + SyntaxError: ... > + > + >>> { x: y for y, x in ((1, 2), (3, 4)) } += 5 # doctest: > +IGNORE_EXCEPTION_DETAIL > + Traceback (most recent call last): > + ... > + SyntaxError: ... > + > +""" > + > +__test__ = {'doctests' : doctests} > + > +def test_main(verbose=None): > + import sys > + from test import test_support > + from test import test_dictcomps > + test_support.run_doctest(test_dictcomps, verbose) > + > + # verify reference counting > + if verbose and hasattr(sys, "gettotalrefcount"): > + import gc > + counts = [None] * 5 > + for i in range(len(counts)): > + test_support.run_doctest(test_dictcomps, verbose) > + gc.collect() > + counts[i] = sys.gettotalrefcount() > + print(counts) > + > +if __name__ == "__main__": > + test_main(verbose=True) > > Modified: python/trunk/Lib/test/test_grammar.py > > ============================================================================== > --- python/trunk/Lib/test/test_grammar.py (original) > +++ python/trunk/Lib/test/test_grammar.py Mon Jan 11 23:36:12 2010 > @@ -808,6 +808,13 @@ > pass > self.assertEqual(G.decorated, True) > > + def testDictcomps(self): > + # dictorsetmaker: ( (test ':' test (comp_for | > + # (',' test ':' test)* [','])) | > + # (test (comp_for | (',' test)* [','])) ) > + nums = [1, 2, 3] > + self.assertEqual({i:i+1 for i in nums}, {1: 2, 2: 3, 3: 4}) > + > def testListcomps(self): > # list comprehension tests > nums = [1, 2, 3, 4, 5] > > Modified: python/trunk/Lib/test/test_parser.py > > ============================================================================== > --- python/trunk/Lib/test/test_parser.py (original) > +++ python/trunk/Lib/test/test_parser.py Mon Jan 11 23:36:12 2010 > @@ -76,9 +76,20 @@ > self.check_expr("[x**3 for x in range(20)]") > self.check_expr("[x**3 for x in range(20) if x % 3]") > self.check_expr("[x**3 for x in range(20) if x % 2 if x % 3]") > + self.check_expr("[x+y for x in range(30) for y in range(20) if x % > 2 if y % 3]") > + #self.check_expr("[x for x in lambda: True, lambda: False if > x()]") > self.check_expr("list(x**3 for x in range(20))") > self.check_expr("list(x**3 for x in range(20) if x % 3)") > self.check_expr("list(x**3 for x in range(20) if x % 2 if x % 3)") > + self.check_expr("list(x+y for x in range(30) for y in range(20) if > x % 2 if y % 3)") > + self.check_expr("{x**3 for x in range(30)}") > + self.check_expr("{x**3 for x in range(30) if x % 3}") > + self.check_expr("{x**3 for x in range(30) if x % 2 if x % 3}") > + self.check_expr("{x+y for x in range(30) for y in range(20) if x % > 2 if y % 3}") > + self.check_expr("{x**3: y**2 for x, y in zip(range(30), > range(30))}") > + self.check_expr("{x**3: y**2 for x, y in zip(range(30), range(30)) > if x % 3}") > + self.check_expr("{x**3: y**2 for x, y in zip(range(30), range(30)) > if x % 3 if y % 3}") > + self.check_expr("{x:y for x in range(30) for y in range(20) if x % > 2 if y % 3}") > self.check_expr("foo(*args)") > self.check_expr("foo(*args, **kw)") > self.check_expr("foo(**kw)") > @@ -107,6 +118,7 @@ > self.check_expr("lambda foo=bar, blaz=blat+2, **z: 0") > self.check_expr("lambda foo=bar, blaz=blat+2, *y, **z: 0") > self.check_expr("lambda x, *y, **z: 0") > + self.check_expr("lambda x: 5 if x else 2") > self.check_expr("(x for x in range(10))") > self.check_expr("foo(x for x in range(10))") > > > Added: python/trunk/Lib/test/test_setcomps.py > > ============================================================================== > --- (empty file) > +++ python/trunk/Lib/test/test_setcomps.py Mon Jan 11 23:36:12 2010 > @@ -0,0 +1,151 @@ > +doctests = """ > +########### Tests mostly copied from test_listcomps.py ############ > + > +Test simple loop with conditional > + > + >>> sum({i*i for i in range(100) if i&1 == 1}) > + 166650 > + > +Test simple case > + > + >>> {2*y + x + 1 for x in (0,) for y in (1,)} > + set([3]) > + > +Test simple nesting > + > + >>> list(sorted({(i,j) for i in range(3) for j in range(4)})) > + [(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, > 0), (2, 1), (2, 2), (2, 3)] > + > +Test nesting with the inner expression dependent on the outer > + > + >>> list(sorted({(i,j) for i in range(4) for j in range(i)})) > + [(1, 0), (2, 0), (2, 1), (3, 0), (3, 1), (3, 2)] > + > +Make sure the induction variable is not exposed > + > + >>> i = 20 > + >>> sum({i*i for i in range(100)}) > + 328350 > + > + >>> i > + 20 > + > +Verify that syntax error's are raised for setcomps used as lvalues > + > + >>> {y for y in (1,2)} = 10 # doctest: > +IGNORE_EXCEPTION_DETAIL > + Traceback (most recent call last): > + ... > + SyntaxError: ... > + > + >>> {y for y in (1,2)} += 10 # doctest: > +IGNORE_EXCEPTION_DETAIL > + Traceback (most recent call last): > + ... > + SyntaxError: ... > + > + > +Make a nested set comprehension that acts like set(range()) > + > + >>> def srange(n): > + ... return {i for i in range(n)} > + >>> list(sorted(srange(10))) > + [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] > + > +Same again, only as a lambda expression instead of a function definition > + > + >>> lrange = lambda n: {i for i in range(n)} > + >>> list(sorted(lrange(10))) > + [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] > + > +Generators can call other generators: > + > + >>> def grange(n): > + ... for x in {i for i in range(n)}: > + ... yield x > + >>> list(sorted(grange(5))) > + [0, 1, 2, 3, 4] > + > + > +Make sure that None is a valid return value > + > + >>> {None for i in range(10)} > + set([None]) > + > +########### Tests for various scoping corner cases ############ > + > +Return lambdas that use the iteration variable as a default argument > + > + >>> items = {(lambda i=i: i) for i in range(5)} > + >>> {x() for x in items} == set(range(5)) > + True > + > +Same again, only this time as a closure variable > + > + >>> items = {(lambda: i) for i in range(5)} > + >>> {x() for x in items} > + set([4]) > + > +Another way to test that the iteration variable is local to the list comp > + > + >>> items = {(lambda: i) for i in range(5)} > + >>> i = 20 > + >>> {x() for x in items} > + set([4]) > + > +And confirm that a closure can jump over the list comp scope > + > + >>> items = {(lambda: y) for i in range(5)} > + >>> y = 2 > + >>> {x() for x in items} > + set([2]) > + > +We also repeat each of the above scoping tests inside a function > + > + >>> def test_func(): > + ... items = {(lambda i=i: i) for i in range(5)} > + ... return {x() for x in items} > + >>> test_func() == set(range(5)) > + True > + > + >>> def test_func(): > + ... items = {(lambda: i) for i in range(5)} > + ... return {x() for x in items} > + >>> test_func() > + set([4]) > + > + >>> def test_func(): > + ... items = {(lambda: i) for i in range(5)} > + ... i = 20 > + ... return {x() for x in items} > + >>> test_func() > + set([4]) > + > + >>> def test_func(): > + ... items = {(lambda: y) for i in range(5)} > + ... y = 2 > + ... return {x() for x in items} > + >>> test_func() > + set([2]) > + > +""" > + > + > +__test__ = {'doctests' : doctests} > + > +def test_main(verbose=None): > + import sys > + from test import test_support > + from test import test_setcomps > + test_support.run_doctest(test_setcomps, verbose) > + > + # verify reference counting > + if verbose and hasattr(sys, "gettotalrefcount"): > + import gc > + counts = [None] * 5 > + for i in range(len(counts)): > + test_support.run_doctest(test_setcomps, verbose) > + gc.collect() > + counts[i] = sys.gettotalrefcount() > + print(counts) > + > +if __name__ == "__main__": > + test_main(verbose=True) > > Modified: python/trunk/Modules/parsermodule.c > > ============================================================================== > --- python/trunk/Modules/parsermodule.c (original) > +++ python/trunk/Modules/parsermodule.c Mon Jan 11 23:36:12 2010 > @@ -938,9 +938,9 @@ > VALIDATER(exprlist); VALIDATER(dictorsetmaker); > VALIDATER(arglist); VALIDATER(argument); > VALIDATER(listmaker); VALIDATER(yield_stmt); > -VALIDATER(testlist1); VALIDATER(gen_for); > -VALIDATER(gen_iter); VALIDATER(gen_if); > -VALIDATER(testlist_gexp); VALIDATER(yield_expr); > +VALIDATER(testlist1); VALIDATER(comp_for); > +VALIDATER(comp_iter); VALIDATER(comp_if); > +VALIDATER(testlist_comp); VALIDATER(yield_expr); > VALIDATER(yield_or_testlist); VALIDATER(or_test); > VALIDATER(old_test); VALIDATER(old_lambdef); > > @@ -1342,17 +1342,17 @@ > return res; > } > > -/* gen_iter: gen_for | gen_if > +/* comp_iter: comp_for | comp_if > */ > static int > -validate_gen_iter(node *tree) > +validate_comp_iter(node *tree) > { > - int res = (validate_ntype(tree, gen_iter) > - && validate_numnodes(tree, 1, "gen_iter")); > - if (res && TYPE(CHILD(tree, 0)) == gen_for) > - res = validate_gen_for(CHILD(tree, 0)); > + int res = (validate_ntype(tree, comp_iter) > + && validate_numnodes(tree, 1, "comp_iter")); > + if (res && TYPE(CHILD(tree, 0)) == comp_for) > + res = validate_comp_for(CHILD(tree, 0)); > else > - res = validate_gen_if(CHILD(tree, 0)); > + res = validate_comp_if(CHILD(tree, 0)); > > return res; > } > @@ -1379,18 +1379,18 @@ > return res; > } > > -/* gen_for: 'for' exprlist 'in' test [gen_iter] > +/* comp_for: 'for' exprlist 'in' test [comp_iter] > */ > static int > -validate_gen_for(node *tree) > +validate_comp_for(node *tree) > { > int nch = NCH(tree); > int res; > > if (nch == 5) > - res = validate_gen_iter(CHILD(tree, 4)); > + res = validate_comp_iter(CHILD(tree, 4)); > else > - res = validate_numnodes(tree, 4, "gen_for"); > + res = validate_numnodes(tree, 4, "comp_for"); > > if (res) > res = (validate_name(CHILD(tree, 0), "for") > @@ -1421,18 +1421,18 @@ > return res; > } > > -/* gen_if: 'if' old_test [gen_iter] > +/* comp_if: 'if' old_test [comp_iter] > */ > static int > -validate_gen_if(node *tree) > +validate_comp_if(node *tree) > { > int nch = NCH(tree); > int res; > > if (nch == 3) > - res = validate_gen_iter(CHILD(tree, 2)); > + res = validate_comp_iter(CHILD(tree, 2)); > else > - res = validate_numnodes(tree, 2, "gen_if"); > + res = validate_numnodes(tree, 2, "comp_if"); > > if (res) > res = (validate_name(CHILD(tree, 0), "if") > @@ -2459,7 +2459,7 @@ > if (TYPE(CHILD(tree, 1))==yield_expr) > res = validate_yield_expr(CHILD(tree, 1)); > else > - res = validate_testlist_gexp(CHILD(tree, 1)); > + res = validate_testlist_comp(CHILD(tree, 1)); > } > break; > case LSQB: > @@ -2539,26 +2539,26 @@ > return ok; > } > > -/* testlist_gexp: > - * test ( gen_for | (',' test)* [','] ) > +/* testlist_comp: > + * test ( comp_for | (',' test)* [','] ) > */ > static int > -validate_testlist_gexp(node *tree) > +validate_testlist_comp(node *tree) > { > int nch = NCH(tree); > int ok = nch; > > if (nch == 0) > - err_string("missing child nodes of testlist_gexp"); > + err_string("missing child nodes of testlist_comp"); > else { > ok = validate_test(CHILD(tree, 0)); > } > > /* > - * gen_for | (',' test)* [','] > + * comp_for | (',' test)* [','] > */ > - if (nch == 2 && TYPE(CHILD(tree, 1)) == gen_for) > - ok = validate_gen_for(CHILD(tree, 1)); > + if (nch == 2 && TYPE(CHILD(tree, 1)) == comp_for) > + ok = validate_comp_for(CHILD(tree, 1)); > else { > /* (',' test)* [','] */ > int i = 1; > @@ -2571,7 +2571,7 @@ > ok = validate_comma(CHILD(tree, i)); > else if (i != nch) { > ok = 0; > - err_string("illegal trailing nodes for testlist_gexp"); > + err_string("illegal trailing nodes for testlist_comp"); > } > } > return ok; > @@ -2746,7 +2746,7 @@ > for (i=0; i if (TYPE(CHILD(tree, i)) == argument) { > node *ch = CHILD(tree, i); > - if (NCH(ch) == 2 && TYPE(CHILD(ch, 1)) == gen_for) { > + if (NCH(ch) == 2 && TYPE(CHILD(ch, 1)) == comp_for) { > err_string("need '(', ')' for generator expression"); > return 0; > } > @@ -2813,7 +2813,7 @@ > > /* argument: > * > - * [test '='] test [gen_for] > + * [test '='] test [comp_for] > */ > static int > validate_argument(node *tree) > @@ -2824,7 +2824,7 @@ > && validate_test(CHILD(tree, 0))); > > if (res && (nch == 2)) > - res = validate_gen_for(CHILD(tree, 1)); > + res = validate_comp_for(CHILD(tree, 1)); > else if (res && (nch == 3)) > res = (validate_equal(CHILD(tree, 1)) > && validate_test(CHILD(tree, 2))); > @@ -2965,12 +2965,19 @@ > } > > > +/* > + * dictorsetmaker: > + * > + * (test ':' test (comp_for | (',' test ':' test)* [','])) | > + * (test (comp_for | (',' test)* [','])) > + */ > static int > validate_dictorsetmaker(node *tree) > { > int nch = NCH(tree); > int ok = validate_ntype(tree, dictorsetmaker); > int i = 0; > + int check_trailing_comma = 0; > > assert(nch > 0); > > @@ -2984,6 +2991,23 @@ > && validate_test(CHILD(tree, i+1))); > i += 2; > } > + check_trailing_comma = 1; > + } > + else if (ok && TYPE(CHILD(tree, 1)) == comp_for) { > + /* We got a set comprehension: > + * test comp_for > + */ > + ok = (validate_test(CHILD(tree, 0)) > + && validate_comp_for(CHILD(tree, 1))); > + } > + else if (ok && NCH(tree) > 3 && TYPE(CHILD(tree, 3)) == comp_for) { > + /* We got a dict comprehension: > + * test ':' test comp_for > + */ > + ok = (validate_test(CHILD(tree, 0)) > + && validate_colon(CHILD(tree, 1)) > + && validate_test(CHILD(tree, 2)) > + && validate_comp_for(CHILD(tree, 3))); > } > else if (ok) { > /* We got a dict: > @@ -3007,9 +3031,9 @@ > && validate_test(CHILD(tree, i+3))); > i += 4; > } > + check_trailing_comma = 1; > } > - /* Check for a trailing comma. */ > - if (ok) { > + if (ok && check_trailing_comma) { > if (i == nch-1) > ok = validate_comma(CHILD(tree, i)); > else if (i != nch) { > > Modified: python/trunk/Parser/Python.asdl > > ============================================================================== > --- python/trunk/Parser/Python.asdl (original) > +++ python/trunk/Parser/Python.asdl Mon Jan 11 23:36:12 2010 > @@ -58,6 +58,8 @@ > | Dict(expr* keys, expr* values) > | Set(expr* elts) > | ListComp(expr elt, comprehension* generators) > + | SetComp(expr elt, comprehension* generators) > + | DictComp(expr key, expr value, comprehension* generators) > | GeneratorExp(expr elt, comprehension* generators) > -- the grammar constrains where yield expressions can occur > | Yield(expr? value) > > Modified: python/trunk/Python/Python-ast.c > > ============================================================================== > --- python/trunk/Python/Python-ast.c (original) > +++ python/trunk/Python/Python-ast.c Mon Jan 11 23:36:12 2010 > @@ -197,6 +197,17 @@ > "elt", > "generators", > }; > +static PyTypeObject *SetComp_type; > +static char *SetComp_fields[]={ > + "elt", > + "generators", > +}; > +static PyTypeObject *DictComp_type; > +static char *DictComp_fields[]={ > + "key", > + "value", > + "generators", > +}; > static PyTypeObject *GeneratorExp_type; > static char *GeneratorExp_fields[]={ > "elt", > @@ -726,6 +737,10 @@ > if (!Set_type) return 0; > ListComp_type = make_type("ListComp", expr_type, ListComp_fields, > 2); > if (!ListComp_type) return 0; > + SetComp_type = make_type("SetComp", expr_type, SetComp_fields, 2); > + if (!SetComp_type) return 0; > + DictComp_type = make_type("DictComp", expr_type, DictComp_fields, > 3); > + if (!DictComp_type) return 0; > GeneratorExp_type = make_type("GeneratorExp", expr_type, > GeneratorExp_fields, 2); > if (!GeneratorExp_type) return 0; > @@ -1631,6 +1646,54 @@ > } > > expr_ty > +SetComp(expr_ty elt, asdl_seq * generators, int lineno, int col_offset, > PyArena > + *arena) > +{ > + expr_ty p; > + if (!elt) { > + PyErr_SetString(PyExc_ValueError, > + "field elt is required for SetComp"); > + return NULL; > + } > + p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); > + if (!p) > + return NULL; > + p->kind = SetComp_kind; > + p->v.SetComp.elt = elt; > + p->v.SetComp.generators = generators; > + p->lineno = lineno; > + p->col_offset = col_offset; > + return p; > +} > + > +expr_ty > +DictComp(expr_ty key, expr_ty value, asdl_seq * generators, int lineno, > int > + col_offset, PyArena *arena) > +{ > + expr_ty p; > + if (!key) { > + PyErr_SetString(PyExc_ValueError, > + "field key is required for DictComp"); > + return NULL; > + } > + if (!value) { > + PyErr_SetString(PyExc_ValueError, > + "field value is required for DictComp"); > + return NULL; > + } > + p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); > + if (!p) > + return NULL; > + p->kind = DictComp_kind; > + p->v.DictComp.key = key; > + p->v.DictComp.value = value; > + p->v.DictComp.generators = generators; > + p->lineno = lineno; > + p->col_offset = col_offset; > + return p; > +} > + > +expr_ty > GeneratorExp(expr_ty elt, asdl_seq * generators, int lineno, int > col_offset, > PyArena *arena) > { > @@ -2610,6 +2673,41 @@ > goto failed; > Py_DECREF(value); > break; > + case SetComp_kind: > + result = PyType_GenericNew(SetComp_type, NULL, NULL); > + if (!result) goto failed; > + value = ast2obj_expr(o->v.SetComp.elt); > + if (!value) goto failed; > + if (PyObject_SetAttrString(result, "elt", value) == -1) > + goto failed; > + Py_DECREF(value); > + value = ast2obj_list(o->v.SetComp.generators, > + ast2obj_comprehension); > + if (!value) goto failed; > + if (PyObject_SetAttrString(result, "generators", value) == > -1) > + goto failed; > + Py_DECREF(value); > + break; > + case DictComp_kind: > + result = PyType_GenericNew(DictComp_type, NULL, NULL); > + if (!result) goto failed; > + value = ast2obj_expr(o->v.DictComp.key); > + if (!value) goto failed; > + if (PyObject_SetAttrString(result, "key", value) == -1) > + goto failed; > + Py_DECREF(value); > + value = ast2obj_expr(o->v.DictComp.value); > + if (!value) goto failed; > + if (PyObject_SetAttrString(result, "value", value) == -1) > + goto failed; > + Py_DECREF(value); > + value = ast2obj_list(o->v.DictComp.generators, > + ast2obj_comprehension); > + if (!value) goto failed; > + if (PyObject_SetAttrString(result, "generators", value) == > -1) > + goto failed; > + Py_DECREF(value); > + break; > case GeneratorExp_kind: > result = PyType_GenericNew(GeneratorExp_type, NULL, NULL); > if (!result) goto failed; > @@ -4974,6 +5072,118 @@ > if (*out == NULL) goto failed; > return 0; > } > + isinstance = PyObject_IsInstance(obj, (PyObject*)SetComp_type); > + if (isinstance == -1) { > + return 1; > + } > + if (isinstance) { > + expr_ty elt; > + asdl_seq* generators; > + > + if (PyObject_HasAttrString(obj, "elt")) { > + int res; > + tmp = PyObject_GetAttrString(obj, "elt"); > + if (tmp == NULL) goto failed; > + res = obj2ast_expr(tmp, &elt, arena); > + if (res != 0) goto failed; > + Py_XDECREF(tmp); > + tmp = NULL; > + } else { > + PyErr_SetString(PyExc_TypeError, "required field > \"elt\" missing from SetComp"); > + return 1; > + } > + if (PyObject_HasAttrString(obj, "generators")) { > + int res; > + Py_ssize_t len; > + Py_ssize_t i; > + tmp = PyObject_GetAttrString(obj, "generators"); > + if (tmp == NULL) goto failed; > + if (!PyList_Check(tmp)) { > + PyErr_Format(PyExc_TypeError, "SetComp > field \"generators\" must be a list, not a %.200s", tmp->ob_type->tp_name); > + goto failed; > + } > + len = PyList_GET_SIZE(tmp); > + generators = asdl_seq_new(len, arena); > + if (generators == NULL) goto failed; > + for (i = 0; i < len; i++) { > + comprehension_ty value; > + res = > obj2ast_comprehension(PyList_GET_ITEM(tmp, i), &value, arena); > + if (res != 0) goto failed; > + asdl_seq_SET(generators, i, value); > + } > + Py_XDECREF(tmp); > + tmp = NULL; > + } else { > + PyErr_SetString(PyExc_TypeError, "required field > \"generators\" missing from SetComp"); > + return 1; > + } > + *out = SetComp(elt, generators, lineno, col_offset, > arena); > + if (*out == NULL) goto failed; > + return 0; > + } > + isinstance = PyObject_IsInstance(obj, (PyObject*)DictComp_type); > + if (isinstance == -1) { > + return 1; > + } > + if (isinstance) { > + expr_ty key; > + expr_ty value; > + asdl_seq* generators; > + > + if (PyObject_HasAttrString(obj, "key")) { > + int res; > + tmp = PyObject_GetAttrString(obj, "key"); > + if (tmp == NULL) goto failed; > + res = obj2ast_expr(tmp, &key, arena); > + if (res != 0) goto failed; > + Py_XDECREF(tmp); > + tmp = NULL; > + } else { > + PyErr_SetString(PyExc_TypeError, "required field > \"key\" missing from DictComp"); > + return 1; > + } > + if (PyObject_HasAttrString(obj, "value")) { > + int res; > + tmp = PyObject_GetAttrString(obj, "value"); > + if (tmp == NULL) goto failed; > + res = obj2ast_expr(tmp, &value, arena); > + if (res != 0) goto failed; > + Py_XDECREF(tmp); > + tmp = NULL; > + } else { > + PyErr_SetString(PyExc_TypeError, "required field > \"value\" missing from DictComp"); > + return 1; > + } > + if (PyObject_HasAttrString(obj, "generators")) { > + int res; > + Py_ssize_t len; > + Py_ssize_t i; > + tmp = PyObject_GetAttrString(obj, "generators"); > + if (tmp == NULL) goto failed; > + if (!PyList_Check(tmp)) { > + PyErr_Format(PyExc_TypeError, "DictComp > field \"generators\" must be a list, not a %.200s", tmp->ob_type->tp_name); > + goto failed; > + } > + len = PyList_GET_SIZE(tmp); > + generators = asdl_seq_new(len, arena); > + if (generators == NULL) goto failed; > + for (i = 0; i < len; i++) { > + comprehension_ty value; > + res = > obj2ast_comprehension(PyList_GET_ITEM(tmp, i), &value, arena); > + if (res != 0) goto failed; > + asdl_seq_SET(generators, i, value); > + } > + Py_XDECREF(tmp); > + tmp = NULL; > + } else { > + PyErr_SetString(PyExc_TypeError, "required field > \"generators\" missing from DictComp"); > + return 1; > + } > + *out = DictComp(key, value, generators, lineno, > col_offset, > + arena); > + if (*out == NULL) goto failed; > + return 0; > + } > isinstance = PyObject_IsInstance(obj, > (PyObject*)GeneratorExp_type); > if (isinstance == -1) { > return 1; > @@ -6419,6 +6629,10 @@ > if (PyDict_SetItemString(d, "Set", (PyObject*)Set_type) < 0) > return; > if (PyDict_SetItemString(d, "ListComp", (PyObject*)ListComp_type) < > 0) > return; > + if (PyDict_SetItemString(d, "SetComp", (PyObject*)SetComp_type) < > 0) > + return; > + if (PyDict_SetItemString(d, "DictComp", (PyObject*)DictComp_type) > < 0) > + return; > if (PyDict_SetItemString(d, "GeneratorExp", > (PyObject*)GeneratorExp_type) < 0) return; > if (PyDict_SetItemString(d, "Yield", (PyObject*)Yield_type) < 0) > return; > > Modified: python/trunk/Python/ast.c > > ============================================================================== > --- python/trunk/Python/ast.c (original) > +++ python/trunk/Python/ast.c Mon Jan 11 23:36:12 2010 > @@ -31,7 +31,7 @@ > expr_context_ty); > static expr_ty ast_for_testlist(struct compiling *, const node *); > static stmt_ty ast_for_classdef(struct compiling *, const node *, asdl_seq > *); > -static expr_ty ast_for_testlist_gexp(struct compiling *, const node *); > +static expr_ty ast_for_testlist_comp(struct compiling *, const node *); > > /* Note different signature for ast_for_call */ > static expr_ty ast_for_call(struct compiling *, const node *, expr_ty); > @@ -44,6 +44,9 @@ > #define LINENO(n) ((n)->n_lineno) > #endif > > +#define COMP_GENEXP 0 > +#define COMP_SETCOMP 1 > + > static identifier > new_identifier(const char* n, PyArena *arena) { > PyObject* id = PyString_InternFromString(n); > @@ -268,7 +271,7 @@ > case eval_input: { > expr_ty testlist_ast; > > - /* XXX Why not gen_for here? */ > + /* XXX Why not comp_for here? */ > testlist_ast = ast_for_testlist(&c, CHILD(n, 0)); > if (!testlist_ast) > goto error; > @@ -430,6 +433,12 @@ > case ListComp_kind: > expr_name = "list comprehension"; > break; > + case SetComp_kind: > + expr_name = "set comprehension"; > + break; > + case DictComp_kind: > + expr_name = "dict comprehension"; > + break; > case Dict_kind: > case Num_kind: > case Str_kind: > @@ -573,7 +582,7 @@ > int i; > assert(TYPE(n) == testlist || > TYPE(n) == listmaker || > - TYPE(n) == testlist_gexp || > + TYPE(n) == testlist_comp || > TYPE(n) == testlist_safe || > TYPE(n) == testlist1); > > @@ -1150,60 +1159,60 @@ > return ListComp(elt, listcomps, LINENO(n), n->n_col_offset, > c->c_arena); > } > > -/* Count the number of 'for' loops in a generator expression. > +/* > + Count the number of 'for' loops in a comprehension. > > - Helper for ast_for_genexp(). > + Helper for ast_for_comprehension(). > */ > > static int > -count_gen_fors(struct compiling *c, const node *n) > +count_comp_fors(struct compiling *c, const node *n) > { > int n_fors = 0; > - node *ch = CHILD(n, 1); > > - count_gen_for: > + count_comp_for: > n_fors++; > - REQ(ch, gen_for); > - if (NCH(ch) == 5) > - ch = CHILD(ch, 4); > + REQ(n, comp_for); > + if (NCH(n) == 5) > + n = CHILD(n, 4); > else > return n_fors; > - count_gen_iter: > - REQ(ch, gen_iter); > - ch = CHILD(ch, 0); > - if (TYPE(ch) == gen_for) > - goto count_gen_for; > - else if (TYPE(ch) == gen_if) { > - if (NCH(ch) == 3) { > - ch = CHILD(ch, 2); > - goto count_gen_iter; > + count_comp_iter: > + REQ(n, comp_iter); > + n = CHILD(n, 0); > + if (TYPE(n) == comp_for) > + goto count_comp_for; > + else if (TYPE(n) == comp_if) { > + if (NCH(n) == 3) { > + n = CHILD(n, 2); > + goto count_comp_iter; > } > else > return n_fors; > } > - > + > /* Should never be reached */ > PyErr_SetString(PyExc_SystemError, > - "logic error in count_gen_fors"); > + "logic error in count_comp_fors"); > return -1; > } > > -/* Count the number of 'if' statements in a generator expression. > +/* Count the number of 'if' statements in a comprehension. > > - Helper for ast_for_genexp(). > + Helper for ast_for_comprehension(). > */ > > static int > -count_gen_ifs(struct compiling *c, const node *n) > +count_comp_ifs(struct compiling *c, const node *n) > { > int n_ifs = 0; > > while (1) { > - REQ(n, gen_iter); > - if (TYPE(CHILD(n, 0)) == gen_for) > + REQ(n, comp_iter); > + if (TYPE(CHILD(n, 0)) == comp_for) > return n_ifs; > n = CHILD(n, 0); > - REQ(n, gen_if); > + REQ(n, comp_if); > n_ifs++; > if (NCH(n) == 2) > return n_ifs; > @@ -1211,46 +1220,33 @@ > } > } > > -/* TODO(jhylton): Combine with list comprehension code? */ > -static expr_ty > -ast_for_genexp(struct compiling *c, const node *n) > +static asdl_seq * > +ast_for_comprehension(struct compiling *c, const node *n) > { > - /* testlist_gexp: test ( gen_for | (',' test)* [','] ) > - argument: [test '='] test [gen_for] # Really [keyword '='] > test */ > - expr_ty elt; > - asdl_seq *genexps; > int i, n_fors; > - node *ch; > - > - assert(TYPE(n) == (testlist_gexp) || TYPE(n) == (argument)); > - assert(NCH(n) > 1); > - > - elt = ast_for_expr(c, CHILD(n, 0)); > - if (!elt) > - return NULL; > - > - n_fors = count_gen_fors(c, n); > + asdl_seq *comps; > + > + n_fors = count_comp_fors(c, n); > if (n_fors == -1) > return NULL; > > - genexps = asdl_seq_new(n_fors, c->c_arena); > - if (!genexps) > + comps = asdl_seq_new(n_fors, c->c_arena); > + if (!comps) > return NULL; > > - ch = CHILD(n, 1); > for (i = 0; i < n_fors; i++) { > - comprehension_ty ge; > + comprehension_ty comp; > asdl_seq *t; > expr_ty expression, first; > node *for_ch; > > - REQ(ch, gen_for); > + REQ(n, comp_for); > > - for_ch = CHILD(ch, 1); > + for_ch = CHILD(n, 1); > t = ast_for_exprlist(c, for_ch, Store); > if (!t) > return NULL; > - expression = ast_for_expr(c, CHILD(ch, 3)); > + expression = ast_for_expr(c, CHILD(n, 3)); > if (!expression) > return NULL; > > @@ -1258,21 +1254,20 @@ > (x for x, in ...) has 1 element in t, but still requires a > Tuple. */ > first = (expr_ty)asdl_seq_GET(t, 0); > if (NCH(for_ch) == 1) > - ge = comprehension(first, expression, NULL, c->c_arena); > + comp = comprehension(first, expression, NULL, c->c_arena); > else > - ge = comprehension(Tuple(t, Store, first->lineno, > first->col_offset, > + comp = comprehension(Tuple(t, Store, first->lineno, > first->col_offset, > c->c_arena), > expression, NULL, c->c_arena); > - > - if (!ge) > + if (!comp) > return NULL; > > - if (NCH(ch) == 5) { > + if (NCH(n) == 5) { > int j, n_ifs; > asdl_seq *ifs; > > - ch = CHILD(ch, 4); > - n_ifs = count_gen_ifs(c, ch); > + n = CHILD(n, 4); > + n_ifs = count_comp_ifs(c, n); > if (n_ifs == -1) > return NULL; > > @@ -1281,32 +1276,94 @@ > return NULL; > > for (j = 0; j < n_ifs; j++) { > - REQ(ch, gen_iter); > - ch = CHILD(ch, 0); > - REQ(ch, gen_if); > + REQ(n, comp_iter); > + n = CHILD(n, 0); > + REQ(n, comp_if); > > - expression = ast_for_expr(c, CHILD(ch, 1)); > + expression = ast_for_expr(c, CHILD(n, 1)); > if (!expression) > return NULL; > asdl_seq_SET(ifs, j, expression); > - if (NCH(ch) == 3) > - ch = CHILD(ch, 2); > + if (NCH(n) == 3) > + n = CHILD(n, 2); > } > - /* on exit, must guarantee that ch is a gen_for */ > - if (TYPE(ch) == gen_iter) > - ch = CHILD(ch, 0); > - ge->ifs = ifs; > + /* on exit, must guarantee that n is a comp_for */ > + if (TYPE(n) == comp_iter) > + n = CHILD(n, 0); > + comp->ifs = ifs; > } > - asdl_seq_SET(genexps, i, ge); > + asdl_seq_SET(comps, i, comp); > } > + return comps; > +} > + > +static expr_ty > +ast_for_itercomp(struct compiling *c, const node *n, int type) > +{ > + expr_ty elt; > + asdl_seq *comps; > > - return GeneratorExp(elt, genexps, LINENO(n), n->n_col_offset, > c->c_arena); > + assert(NCH(n) > 1); > + > + elt = ast_for_expr(c, CHILD(n, 0)); > + if (!elt) > + return NULL; > + > + comps = ast_for_comprehension(c, CHILD(n, 1)); > + if (!comps) > + return NULL; > + > + if (type == COMP_GENEXP) > + return GeneratorExp(elt, comps, LINENO(n), n->n_col_offset, > c->c_arena); > + else if (type == COMP_SETCOMP) > + return SetComp(elt, comps, LINENO(n), n->n_col_offset, > c->c_arena); > + else > + /* Should never happen */ > + return NULL; > +} > + > +static expr_ty > +ast_for_dictcomp(struct compiling *c, const node *n) > +{ > + expr_ty key, value; > + asdl_seq *comps; > + > + assert(NCH(n) > 3); > + REQ(CHILD(n, 1), COLON); > + > + key = ast_for_expr(c, CHILD(n, 0)); > + if (!key) > + return NULL; > + > + value = ast_for_expr(c, CHILD(n, 2)); > + if (!value) > + return NULL; > + > + comps = ast_for_comprehension(c, CHILD(n, 3)); > + if (!comps) > + return NULL; > + > + return DictComp(key, value, comps, LINENO(n), n->n_col_offset, > c->c_arena); > +} > + > +static expr_ty > +ast_for_genexp(struct compiling *c, const node *n) > +{ > + assert(TYPE(n) == (testlist_comp) || TYPE(n) == (argument)); > + return ast_for_itercomp(c, n, COMP_GENEXP); > +} > + > +static expr_ty > +ast_for_setcomp(struct compiling *c, const node *n) > +{ > + assert(TYPE(n) == (dictorsetmaker)); > + return ast_for_itercomp(c, n, COMP_SETCOMP); > } > > static expr_ty > ast_for_atom(struct compiling *c, const node *n) > { > - /* atom: '(' [yield_expr|testlist_gexp] ')' | '[' [listmaker] ']' > + /* atom: '(' [yield_expr|testlist_comp] ')' | '[' [listmaker] ']' > | '{' [dictmaker] '}' | '`' testlist '`' | NAME | NUMBER | STRING+ > */ > node *ch = CHILD(n, 0); > @@ -1365,7 +1422,7 @@ > if (TYPE(ch) == yield_expr) > return ast_for_expr(c, ch); > > - return ast_for_testlist_gexp(c, ch); > + return ast_for_testlist_comp(c, ch); > case LSQB: /* list (or list comprehension) */ > ch = CHILD(n, 1); > > @@ -1383,8 +1440,9 @@ > else > return ast_for_listcomp(c, ch); > case LBRACE: { > - /* dictorsetmaker: test ':' test (',' test ':' test)* [','] | > - * test (',' test)* [',']) > + /* dictorsetmaker: > + * (test ':' test (comp_for | (',' test ':' test)* [','])) | > + * (test (comp_for | (',' test)* [','])) > */ > int i, size; > asdl_seq *keys, *values; > @@ -1408,6 +1466,11 @@ > asdl_seq_SET(elts, i / 2, expression); > } > return Set(elts, LINENO(n), n->n_col_offset, c->c_arena); > + } else if (TYPE(CHILD(ch, 1)) == comp_for) { > + /* it's a set comprehension */ > + return ast_for_setcomp(c, ch); > + } else if (NCH(ch) > 3 && TYPE(CHILD(ch, 3)) == comp_for) { > + return ast_for_dictcomp(c, ch); > } else { > /* it's a dict */ > size = (NCH(ch) + 1) / 4; /* +1 in case no trailing comma */ > @@ -1916,7 +1979,7 @@ > /* > arglist: (argument ',')* (argument [',']| '*' test [',' '**' test] > | '**' test) > - argument: [test '='] test [gen_for] # Really [keyword '='] > test > + argument: [test '='] test [comp_for] # Really [keyword '='] > test > */ > > int i, nargs, nkeywords, ngens; > @@ -1934,7 +1997,7 @@ > if (TYPE(ch) == argument) { > if (NCH(ch) == 1) > nargs++; > - else if (TYPE(CHILD(ch, 1)) == gen_for) > + else if (TYPE(CHILD(ch, 1)) == comp_for) > ngens++; > else > nkeywords++; > @@ -1979,7 +2042,7 @@ > return NULL; > asdl_seq_SET(args, nargs++, e); > } > - else if (TYPE(CHILD(ch, 1)) == gen_for) { > + else if (TYPE(CHILD(ch, 1)) == comp_for) { > e = ast_for_genexp(c, ch); > if (!e) > return NULL; > @@ -2049,14 +2112,14 @@ > static expr_ty > ast_for_testlist(struct compiling *c, const node* n) > { > - /* testlist_gexp: test (',' test)* [','] */ > + /* testlist_comp: test (',' test)* [','] */ > /* testlist: test (',' test)* [','] */ > /* testlist_safe: test (',' test)+ [','] */ > /* testlist1: test (',' test)* */ > assert(NCH(n) > 0); > - if (TYPE(n) == testlist_gexp) { > + if (TYPE(n) == testlist_comp) { > if (NCH(n) > 1) > - assert(TYPE(CHILD(n, 1)) != gen_for); > + assert(TYPE(CHILD(n, 1)) != comp_for); > } > else { > assert(TYPE(n) == testlist || > @@ -2074,12 +2137,12 @@ > } > > static expr_ty > -ast_for_testlist_gexp(struct compiling *c, const node* n) > +ast_for_testlist_comp(struct compiling *c, const node* n) > { > - /* testlist_gexp: test ( gen_for | (',' test)* [','] ) */ > - /* argument: test [ gen_for ] */ > - assert(TYPE(n) == testlist_gexp || TYPE(n) == argument); > - if (NCH(n) > 1 && TYPE(CHILD(n, 1)) == gen_for) > + /* testlist_comp: test ( comp_for | (',' test)* [','] ) */ > + /* argument: test [ comp_for ] */ > + assert(TYPE(n) == testlist_comp || TYPE(n) == argument); > + if (NCH(n) > 1 && TYPE(CHILD(n, 1)) == comp_for) > return ast_for_genexp(c, n); > return ast_for_testlist(c, n); > } > > Modified: python/trunk/Python/ceval.c > > ============================================================================== > --- python/trunk/Python/ceval.c (original) > +++ python/trunk/Python/ceval.c Mon Jan 11 23:36:12 2010 > @@ -1455,6 +1455,17 @@ > } > break; > > + case SET_ADD: > + w = POP(); > + v = stack_pointer[-oparg]; > + err = PySet_Add(v, w); > + Py_DECREF(w); > + if (err == 0) { > + PREDICT(JUMP_ABSOLUTE); > + continue; > + } > + break; > + > case INPLACE_POWER: > w = POP(); > v = TOP(); > @@ -2223,6 +2234,21 @@ > if (err == 0) continue; > break; > > + case MAP_ADD: > + w = TOP(); /* key */ > + u = SECOND(); /* value */ > + STACKADJ(-2); > + v = stack_pointer[-oparg]; /* dict */ > + assert (PyDict_CheckExact(v)); > + err = PyDict_SetItem(v, w, u); /* v[w] = u */ > + Py_DECREF(u); > + Py_DECREF(w); > + if (err == 0) { > + PREDICT(JUMP_ABSOLUTE); > + continue; > + } > + break; > + > case LOAD_ATTR: > w = GETITEM(names, oparg); > v = TOP(); > > Modified: python/trunk/Python/compile.c > > ============================================================================== > --- python/trunk/Python/compile.c (original) > +++ python/trunk/Python/compile.c Mon Jan 11 23:36:12 2010 > @@ -39,6 +39,10 @@ > #define DEFAULT_CODE_SIZE 128 > #define DEFAULT_LNOTAB_SIZE 16 > > +#define COMP_GENEXP 0 > +#define COMP_SETCOMP 1 > +#define COMP_DICTCOMP 2 > + > struct instr { > unsigned i_jabs : 1; > unsigned i_jrel : 1; > @@ -674,9 +678,13 @@ > case UNARY_INVERT: > return 0; > > + case SET_ADD: > case LIST_APPEND: > return -1; > > + case MAP_ADD: > + return -2; > + > case BINARY_POWER: > case BINARY_MULTIPLY: > case BINARY_DIVIDE: > @@ -2639,33 +2647,44 @@ > e->v.ListComp.elt); > } > > +/* Dict and set comprehensions and generator expressions work by creating > a > + nested function to perform the actual iteration. This means that the > + iteration variables don't leak into the current scope. > + The defined function is called immediately following its definition, > with the > + result of that call being the result of the expression. > + The LC/SC version returns the populated container, while the GE version > is > + flagged in symtable.c as a generator, so it returns the generator > object > + when the function is called. > + This code *knows* that the loop cannot contain break, continue, or > return, > + so it cheats and skips the SETUP_LOOP/POP_BLOCK steps used in normal > loops. > + > + Possible cleanups: > + - iterate over the generator sequence instead of using recursion > +*/ > + > static int > -compiler_genexp_generator(struct compiler *c, > - asdl_seq *generators, int gen_index, > - expr_ty elt) > +compiler_comprehension_generator(struct compiler *c, > + asdl_seq *generators, int gen_index, > + expr_ty elt, expr_ty val, int type) > { > /* generate code for the iterator, then each of the ifs, > and then write to the element */ > > - comprehension_ty ge; > - basicblock *start, *anchor, *skip, *if_cleanup, *end; > + comprehension_ty gen; > + basicblock *start, *anchor, *skip, *if_cleanup; > int i, n; > > start = compiler_new_block(c); > skip = compiler_new_block(c); > if_cleanup = compiler_new_block(c); > anchor = compiler_new_block(c); > - end = compiler_new_block(c); > > if (start == NULL || skip == NULL || if_cleanup == NULL || > - anchor == NULL || end == NULL) > - return 0; > - > - ge = (comprehension_ty)asdl_seq_GET(generators, gen_index); > - ADDOP_JREL(c, SETUP_LOOP, end); > - if (!compiler_push_fblock(c, LOOP, start)) > + anchor == NULL) > return 0; > > + gen = (comprehension_ty)asdl_seq_GET(generators, gen_index); > + > if (gen_index == 0) { > /* Receive outermost iter as an implicit argument */ > c->u->u_argcount = 1; > @@ -2673,77 +2692,164 @@ > } > else { > /* Sub-iter - calculate on the fly */ > - VISIT(c, expr, ge->iter); > + VISIT(c, expr, gen->iter); > ADDOP(c, GET_ITER); > } > compiler_use_next_block(c, start); > ADDOP_JREL(c, FOR_ITER, anchor); > NEXT_BLOCK(c); > - VISIT(c, expr, ge->target); > + VISIT(c, expr, gen->target); > > /* XXX this needs to be cleaned up...a lot! */ > - n = asdl_seq_LEN(ge->ifs); > + n = asdl_seq_LEN(gen->ifs); > for (i = 0; i < n; i++) { > - expr_ty e = (expr_ty)asdl_seq_GET(ge->ifs, i); > + expr_ty e = (expr_ty)asdl_seq_GET(gen->ifs, i); > VISIT(c, expr, e); > ADDOP_JABS(c, POP_JUMP_IF_FALSE, if_cleanup); > NEXT_BLOCK(c); > } > > if (++gen_index < asdl_seq_LEN(generators)) > - if (!compiler_genexp_generator(c, generators, gen_index, > elt)) > - return 0; > + if (!compiler_comprehension_generator(c, > + generators, > gen_index, > + elt, val, type)) > + return 0; > > - /* only append after the last 'for' generator */ > + /* only append after the last for generator */ > if (gen_index >= asdl_seq_LEN(generators)) { > - VISIT(c, expr, elt); > - ADDOP(c, YIELD_VALUE); > - ADDOP(c, POP_TOP); > + /* comprehension specific code */ > + switch (type) { > + case COMP_GENEXP: > + VISIT(c, expr, elt); > + ADDOP(c, YIELD_VALUE); > + ADDOP(c, POP_TOP); > + break; > + case COMP_SETCOMP: > + VISIT(c, expr, elt); > + ADDOP_I(c, SET_ADD, gen_index + 1); > + break; > + case COMP_DICTCOMP: > + /* With 'd[k] = v', v is evaluated before k, so we > do > + the same. */ > + VISIT(c, expr, val); > + VISIT(c, expr, elt); > + ADDOP_I(c, MAP_ADD, gen_index + 1); > + break; > + default: > + return 0; > + } > > compiler_use_next_block(c, skip); > } > compiler_use_next_block(c, if_cleanup); > ADDOP_JABS(c, JUMP_ABSOLUTE, start); > compiler_use_next_block(c, anchor); > - ADDOP(c, POP_BLOCK); > - compiler_pop_fblock(c, LOOP, start); > - compiler_use_next_block(c, end); > > return 1; > } > > static int > -compiler_genexp(struct compiler *c, expr_ty e) > +compiler_comprehension(struct compiler *c, expr_ty e, int type, identifier > name, > + asdl_seq *generators, expr_ty elt, expr_ty val) > { > - static identifier name; > - PyCodeObject *co; > - expr_ty outermost_iter = ((comprehension_ty) > - > (asdl_seq_GET(e->v.GeneratorExp.generators, > - 0)))->iter; > + PyCodeObject *co = NULL; > + expr_ty outermost_iter; > > - if (!name) { > - name = PyString_FromString(""); > - if (!name) > - return 0; > - } > + outermost_iter = ((comprehension_ty) > + asdl_seq_GET(generators, 0))->iter; > > if (!compiler_enter_scope(c, name, (void *)e, e->lineno)) > - return 0; > - compiler_genexp_generator(c, e->v.GeneratorExp.generators, 0, > - e->v.GeneratorExp.elt); > + goto error; > + > + if (type != COMP_GENEXP) { > + int op; > + switch (type) { > + case COMP_SETCOMP: > + op = BUILD_SET; > + break; > + case COMP_DICTCOMP: > + op = BUILD_MAP; > + break; > + default: > + PyErr_Format(PyExc_SystemError, > + "unknown comprehension type %d", > type); > + goto error_in_scope; > + } > + > + ADDOP_I(c, op, 0); > + } > + > + if (!compiler_comprehension_generator(c, generators, 0, elt, > + val, type)) > + goto error_in_scope; > + > + if (type != COMP_GENEXP) { > + ADDOP(c, RETURN_VALUE); > + } > + > co = assemble(c, 1); > compiler_exit_scope(c); > if (co == NULL) > - return 0; > + goto error; > > - compiler_make_closure(c, co, 0); > + if (!compiler_make_closure(c, co, 0)) > + goto error; > Py_DECREF(co); > > VISIT(c, expr, outermost_iter); > ADDOP(c, GET_ITER); > ADDOP_I(c, CALL_FUNCTION, 1); > - > return 1; > +error_in_scope: > + compiler_exit_scope(c); > +error: > + Py_XDECREF(co); > + return 0; > +} > + > +static int > +compiler_genexp(struct compiler *c, expr_ty e) > +{ > + static identifier name; > + if (!name) { > + name = PyString_FromString(""); > + if (!name) > + return 0; > + } > + assert(e->kind == GeneratorExp_kind); > + return compiler_comprehension(c, e, COMP_GENEXP, name, > + e->v.GeneratorExp.generators, > + e->v.GeneratorExp.elt, NULL); > +} > + > +static int > +compiler_setcomp(struct compiler *c, expr_ty e) > +{ > + static identifier name; > + if (!name) { > + name = PyString_FromString(""); > + if (!name) > + return 0; > + } > + assert(e->kind == SetComp_kind); > + return compiler_comprehension(c, e, COMP_SETCOMP, name, > + e->v.SetComp.generators, > + e->v.SetComp.elt, NULL); > +} > + > +static int > +compiler_dictcomp(struct compiler *c, expr_ty e) > +{ > + static identifier name; > + if (!name) { > + name = PyString_FromString(""); > + if (!name) > + return 0; > + } > + assert(e->kind == DictComp_kind); > + return compiler_comprehension(c, e, COMP_DICTCOMP, name, > + e->v.DictComp.generators, > + e->v.DictComp.key, > e->v.DictComp.value); > } > > static int > @@ -2902,6 +3008,10 @@ > break; > case ListComp_kind: > return compiler_listcomp(c, e); > + case SetComp_kind: > + return compiler_setcomp(c, e); > + case DictComp_kind: > + return compiler_dictcomp(c, e); > case GeneratorExp_kind: > return compiler_genexp(c, e); > case Yield_kind: > > Modified: python/trunk/Python/graminit.c > > ============================================================================== > --- python/trunk/Python/graminit.c (original) > +++ python/trunk/Python/graminit.c Mon Jan 11 23:36:12 2010 > @@ -1550,42 +1550,57 @@ > static arc arcs_73_0[1] = { > {28, 1}, > }; > -static arc arcs_73_1[3] = { > +static arc arcs_73_1[4] = { > {23, 2}, > - {29, 3}, > + {157, 3}, > + {29, 4}, > {0, 1}, > }; > static arc arcs_73_2[1] = { > - {28, 4}, > -}; > -static arc arcs_73_3[2] = { > {28, 5}, > +}; > +static arc arcs_73_3[1] = { > {0, 3}, > }; > static arc arcs_73_4[2] = { > - {29, 6}, > + {28, 6}, > {0, 4}, > }; > -static arc arcs_73_5[2] = { > - {29, 3}, > +static arc arcs_73_5[3] = { > + {157, 3}, > + {29, 7}, > {0, 5}, > }; > static arc arcs_73_6[2] = { > - {28, 7}, > + {29, 4}, > {0, 6}, > }; > -static arc arcs_73_7[1] = { > - {23, 2}, > +static arc arcs_73_7[2] = { > + {28, 8}, > + {0, 7}, > +}; > +static arc arcs_73_8[1] = { > + {23, 9}, > +}; > +static arc arcs_73_9[1] = { > + {28, 10}, > +}; > +static arc arcs_73_10[2] = { > + {29, 7}, > + {0, 10}, > }; > -static state states_73[8] = { > +static state states_73[11] = { > {1, arcs_73_0}, > - {3, arcs_73_1}, > + {4, arcs_73_1}, > {1, arcs_73_2}, > - {2, arcs_73_3}, > + {1, arcs_73_3}, > {2, arcs_73_4}, > - {2, arcs_73_5}, > + {3, arcs_73_5}, > {2, arcs_73_6}, > - {1, arcs_73_7}, > + {2, arcs_73_7}, > + {1, arcs_73_8}, > + {1, arcs_73_9}, > + {2, arcs_73_10}, > }; > static arc arcs_74_0[1] = { > {162, 1}, > @@ -1964,7 +1979,7 @@ > > "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\044\015\000\000"}, > {319, "listmaker", 0, 5, states_63, > > "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, > - {320, "testlist_gexp", 0, 5, states_64, > + {320, "testlist_comp", 0, 5, states_64, > > "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, > {321, "lambdef", 0, 5, states_65, > > "\000\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000"}, > @@ -1982,7 +1997,7 @@ > > "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, > {328, "dictmaker", 0, 5, states_72, > > "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, > - {329, "dictorsetmaker", 0, 8, states_73, > + {329, "dictorsetmaker", 0, 11, states_73, > > "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, > {330, "classdef", 0, 8, states_74, > > "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000"}, > @@ -1996,11 +2011,11 @@ > > "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, > {335, "list_if", 0, 4, states_79, > > "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, > - {336, "gen_iter", 0, 2, states_80, > + {336, "comp_iter", 0, 2, states_80, > > "\000\000\000\000\000\000\000\000\000\000\000\020\001\000\000\000\000\000\000\000\000\000"}, > - {337, "gen_for", 0, 6, states_81, > + {337, "comp_for", 0, 6, states_81, > > "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, > - {338, "gen_if", 0, 4, states_82, > + {338, "comp_if", 0, 4, states_82, > > "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, > {339, "testlist1", 0, 2, states_83, > > "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"}, > > Modified: python/trunk/Python/import.c > > ============================================================================== > --- python/trunk/Python/import.c (original) > +++ python/trunk/Python/import.c Mon Jan 11 23:36:12 2010 > @@ -76,9 +76,10 @@ > introduce POP_JUMP_IF_FALSE and > POP_JUMP_IF_TRUE) > Python 2.7a0 62191 (introduce SETUP_WITH) > Python 2.7a0 62201 (introduce BUILD_SET) > + Python 2.7a0 62211 (introduce MAP_ADD and SET_ADD) > . > */ > -#define MAGIC (62201 | ((long)'\r'<<16) | ((long)'\n'<<24)) > +#define MAGIC (62211 | ((long)'\r'<<16) | ((long)'\n'<<24)) > > /* Magic word as global; note that _PyImport_Init() can change the > value of this global to accommodate for alterations of how the > > Modified: python/trunk/Python/symtable.c > > ============================================================================== > --- python/trunk/Python/symtable.c (original) > +++ python/trunk/Python/symtable.c Mon Jan 11 23:36:12 2010 > @@ -166,6 +166,8 @@ > static int symtable_visit_stmt(struct symtable *st, stmt_ty s); > static int symtable_visit_expr(struct symtable *st, expr_ty s); > static int symtable_visit_genexp(struct symtable *st, expr_ty s); > +static int symtable_visit_setcomp(struct symtable *st, expr_ty e); > +static int symtable_visit_dictcomp(struct symtable *st, expr_ty e); > static int symtable_visit_arguments(struct symtable *st, arguments_ty); > static int symtable_visit_excepthandler(struct symtable *st, > excepthandler_ty); > static int symtable_visit_alias(struct symtable *st, alias_ty); > @@ -177,7 +179,8 @@ > static int symtable_implicit_arg(struct symtable *st, int pos); > > > -static identifier top = NULL, lambda = NULL, genexpr = NULL; > +static identifier top = NULL, lambda = NULL, genexpr = NULL, setcomp = > NULL, > + dictcomp = NULL; > > #define GET_IDENTIFIER(VAR) \ > ((VAR) ? (VAR) : ((VAR) = PyString_InternFromString(# VAR))) > @@ -1222,6 +1225,14 @@ > if (!symtable_visit_genexp(st, e)) > return 0; > break; > + case SetComp_kind: > + if (!symtable_visit_setcomp(st, e)) > + return 0; > + break; > + case DictComp_kind: > + if (!symtable_visit_dictcomp(st, e)) > + return 0; > + break; > case Yield_kind: > if (e->v.Yield.value) > VISIT(st, expr, e->v.Yield.value); > @@ -1462,28 +1473,81 @@ > return 1; > } > > +static int > +symtable_new_tmpname(struct symtable *st) > +{ > + char tmpname[256]; > + identifier tmp; > + > + PyOS_snprintf(tmpname, sizeof(tmpname), "_[%d]", > + ++st->st_cur->ste_tmpname); > + tmp = PyString_InternFromString(tmpname); > + if (!tmp) > + return 0; > + if (!symtable_add_def(st, tmp, DEF_LOCAL)) > + return 0; > + Py_DECREF(tmp); > + return 1; > +} > + > static int > -symtable_visit_genexp(struct symtable *st, expr_ty e) > +symtable_handle_comprehension(struct symtable *st, expr_ty e, > + identifier scope_name, asdl_seq *generators, > + expr_ty elt, expr_ty value) > { > + int is_generator = (e->kind == GeneratorExp_kind); > + int needs_tmp = !is_generator; > comprehension_ty outermost = ((comprehension_ty) > - (asdl_seq_GET(e->v.GeneratorExp.generators, 0))); > + asdl_seq_GET(generators, 0)); > /* Outermost iterator is evaluated in current scope */ > VISIT(st, expr, outermost->iter); > - /* Create generator scope for the rest */ > - if (!GET_IDENTIFIER(genexpr) || > - !symtable_enter_block(st, genexpr, FunctionBlock, (void *)e, > e->lineno)) { > + /* Create comprehension scope for the rest */ > + if (!scope_name || > + !symtable_enter_block(st, scope_name, FunctionBlock, (void *)e, > 0)) { > return 0; > } > - st->st_cur->ste_generator = 1; > + st->st_cur->ste_generator = is_generator; > /* Outermost iter is received as an argument */ > if (!symtable_implicit_arg(st, 0)) { > symtable_exit_block(st, (void *)e); > return 0; > } > + /* Allocate temporary name if needed */ > + if (needs_tmp && !symtable_new_tmpname(st)) { > + symtable_exit_block(st, (void *)e); > + return 0; > + } > VISIT_IN_BLOCK(st, expr, outermost->target, (void*)e); > VISIT_SEQ_IN_BLOCK(st, expr, outermost->ifs, (void*)e); > VISIT_SEQ_TAIL_IN_BLOCK(st, comprehension, > - e->v.GeneratorExp.generators, 1, (void*)e); > - VISIT_IN_BLOCK(st, expr, e->v.GeneratorExp.elt, (void*)e); > + generators, 1, (void*)e); > + if (value) > + VISIT_IN_BLOCK(st, expr, value, (void*)e); > + VISIT_IN_BLOCK(st, expr, elt, (void*)e); > return symtable_exit_block(st, (void *)e); > } > + > +static int > +symtable_visit_genexp(struct symtable *st, expr_ty e) > +{ > + return symtable_handle_comprehension(st, e, > GET_IDENTIFIER(genexpr), > + e->v.GeneratorExp.generators, > + e->v.GeneratorExp.elt, NULL); > +} > + > +static int > +symtable_visit_setcomp(struct symtable *st, expr_ty e) > +{ > + return symtable_handle_comprehension(st, e, > GET_IDENTIFIER(setcomp), > + e->v.SetComp.generators, > + e->v.SetComp.elt, NULL); > +} > + > +static int > +symtable_visit_dictcomp(struct symtable *st, expr_ty e) > +{ > + return symtable_handle_comprehension(st, e, > GET_IDENTIFIER(dictcomp), > + e->v.DictComp.generators, > + e->v.DictComp.key, > + e->v.DictComp.value); > +} > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins > -------------- next part -------------- An HTML attachment was scrubbed... URL: From python-checkins at python.org Tue Jan 12 19:25:33 2010 From: python-checkins at python.org (alexandre.vassalotti) Date: Tue, 12 Jan 2010 18:25:33 -0000 Subject: [Python-checkins] r77445 - python/trunk/Doc/library/2to3.rst Message-ID: Author: alexandre.vassalotti Date: Tue Jan 12 19:25:33 2010 New Revision: 77445 Log: Added documentation for dictionary views fixer. Modified: python/trunk/Doc/library/2to3.rst Modified: python/trunk/Doc/library/2to3.rst ============================================================================== --- python/trunk/Doc/library/2to3.rst (original) +++ python/trunk/Doc/library/2to3.rst Tue Jan 12 19:25:33 2010 @@ -129,9 +129,11 @@ Fixes dictionary iteration methods. :meth:`dict.iteritems` is converted to :meth:`dict.items`, :meth:`dict.iterkeys` to :meth:`dict.keys`, and - :meth:`dict.itervalues` to :meth:`dict.values`. It also wraps existing - usages of :meth:`dict.items`, :meth:`dict.keys`, and :meth:`dict.values` in a - call to :class:`list`. + :meth:`dict.itervalues` to :meth:`dict.values`. Similarly, + :meth:`dict.viewitems`, :meth:`dict.viewkeys` and :meth:`dict.viewvalues` + are converted respectively to :meth:`dict.items`, :meth:`dict.keys` and + :meth:`dict.values`. It also wraps existing usages of :meth:`dict.items`, + :meth:`dict.keys`, and :meth:`dict.values` in a call to :class:`list`. .. 2to3fixer:: except From python-checkins at python.org Tue Jan 12 19:31:43 2010 From: python-checkins at python.org (alexandre.vassalotti) Date: Tue, 12 Jan 2010 18:31:43 -0000 Subject: [Python-checkins] r77446 - python/branches/release26-maint Message-ID: Author: alexandre.vassalotti Date: Tue Jan 12 19:31:42 2010 New Revision: 77446 Log: Blocked revisions 77445 via svnmerge ........ r77445 | alexandre.vassalotti | 2010-01-12 13:25:33 -0500 (Tue, 12 Jan 2010) | 2 lines Added documentation for dictionary views fixer. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Tue Jan 12 19:38:14 2010 From: python-checkins at python.org (alexandre.vassalotti) Date: Tue, 12 Jan 2010 18:38:14 -0000 Subject: [Python-checkins] r77447 - in python/branches/py3k: Doc/library/2to3.rst Message-ID: Author: alexandre.vassalotti Date: Tue Jan 12 19:38:14 2010 New Revision: 77447 Log: Merged revisions 77445 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77445 | alexandre.vassalotti | 2010-01-12 13:25:33 -0500 (Tue, 12 Jan 2010) | 2 lines Added documentation for dictionary views fixer. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/library/2to3.rst Modified: python/branches/py3k/Doc/library/2to3.rst ============================================================================== --- python/branches/py3k/Doc/library/2to3.rst (original) +++ python/branches/py3k/Doc/library/2to3.rst Tue Jan 12 19:38:14 2010 @@ -129,9 +129,11 @@ Fixes dictionary iteration methods. :meth:`dict.iteritems` is converted to :meth:`dict.items`, :meth:`dict.iterkeys` to :meth:`dict.keys`, and - :meth:`dict.itervalues` to :meth:`dict.values`. It also wraps existing - usages of :meth:`dict.items`, :meth:`dict.keys`, and :meth:`dict.values` in a - call to :class:`list`. + :meth:`dict.itervalues` to :meth:`dict.values`. Similarly, + :meth:`dict.viewitems`, :meth:`dict.viewkeys` and :meth:`dict.viewvalues` + are converted respectively to :meth:`dict.items`, :meth:`dict.keys` and + :meth:`dict.values`. It also wraps existing usages of :meth:`dict.items`, + :meth:`dict.keys`, and :meth:`dict.values` in a call to :class:`list`. .. 2to3fixer:: except From nnorwitz at gmail.com Tue Jan 12 18:30:43 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 12 Jan 2010 12:30:43 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100112173043.GA29613@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': Could not resolve hostname `svn.python.org': Host not found (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Tue Jan 12 10:00:45 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 12 Jan 2010 04:00:45 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100112090045.GA28698@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': Could not resolve hostname `svn.python.org': Host not found (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Tue Jan 12 14:40:44 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 12 Jan 2010 08:40:44 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100112134044.GA29196@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': Could not resolve hostname `svn.python.org': Host not found (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Mon Jan 11 02:40:41 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 10 Jan 2010 20:40:41 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100111014041.GA25258@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': Could not resolve hostname `svn.python.org': Host not found (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Tue Jan 12 02:40:41 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 11 Jan 2010 20:40:41 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100112014041.GA27887@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': Could not resolve hostname `svn.python.org': Host not found (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Sat Jan 9 14:40:05 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 9 Jan 2010 08:40:05 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100109134005.GA21267@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': could not connect to server (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Mon Jan 11 22:00:42 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 11 Jan 2010 16:00:42 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100111210042.GA27386@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': Could not resolve hostname `svn.python.org': Host not found (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Mon Jan 11 18:30:44 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 11 Jan 2010 12:30:44 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100111173044.GA26981@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': Could not resolve hostname `svn.python.org': Host not found (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Sat Jan 9 22:00:02 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 9 Jan 2010 16:00:02 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100109210002.GA22093@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': could not connect to server (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Sat Jan 9 10:00:09 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 9 Jan 2010 04:00:09 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100109090009.GA14726@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': could not connect to server (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Sat Jan 9 18:30:05 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 9 Jan 2010 12:30:05 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100109173005.GA21686@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': could not connect to server (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Mon Jan 11 14:40:43 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 11 Jan 2010 08:40:43 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100111134043.GA26565@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': Could not resolve hostname `svn.python.org': Host not found (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Sun Jan 10 10:00:45 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 10 Jan 2010 04:00:45 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100110090045.GA23438@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': Could not resolve hostname `svn.python.org': Host not found (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Sat Jan 9 02:40:05 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 8 Jan 2010 20:40:05 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100109014005.GA13408@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': could not connect to server (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Sun Jan 10 22:00:42 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 10 Jan 2010 16:00:42 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100110210042.GA24757@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': Could not resolve hostname `svn.python.org': Host not found (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Mon Jan 11 10:00:45 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 11 Jan 2010 04:00:45 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100111090045.GA26067@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': Could not resolve hostname `svn.python.org': Host not found (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Sun Jan 10 14:40:44 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 10 Jan 2010 08:40:44 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100110134044.GA23936@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': Could not resolve hostname `svn.python.org': Host not found (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Sun Jan 10 02:40:41 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 9 Jan 2010 20:40:41 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100110014041.GA22595@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx rm -rf tools/pygments rm -rf tools/jinja2 rm -rf tools/docutils Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': Could not resolve hostname `svn.python.org': Host not found (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Sun Jan 10 18:30:44 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 10 Jan 2010 12:30:44 -0500 Subject: [Python-checkins] Python Regression Test Failures doc (1) Message-ID: <20100110173044.GA24352@kbk-i386-bb.psfb.org> rm -rf build/* rm -rf tools/sphinx Checking out Sphinx... svn: PROPFIND request failed on '/projects/external/Sphinx-0.6.3/sphinx' svn: PROPFIND of '/projects/external/Sphinx-0.6.3/sphinx': Could not resolve hostname `svn.python.org': Host not found (http://svn.python.org) make: *** [checkout] Error 1 From nnorwitz at gmail.com Tue Jan 12 22:29:30 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 12 Jan 2010 16:29:30 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100112212930.GA14514@kbk-i386-bb.psfb.org> 342 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 1.086s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 342 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [871396 refs] From python-checkins at python.org Tue Jan 12 23:02:10 2010 From: python-checkins at python.org (antoine.pitrou) Date: Tue, 12 Jan 2010 22:02:10 -0000 Subject: [Python-checkins] r77448 - python/trunk/Lib/test/test_bytes.py Message-ID: Author: antoine.pitrou Date: Tue Jan 12 23:02:10 2010 New Revision: 77448 Log: Issue #7654: enable additional bytes/bytearray tests. Patch by Florent Xicluna. Modified: python/trunk/Lib/test/test_bytes.py Modified: python/trunk/Lib/test/test_bytes.py ============================================================================== --- python/trunk/Lib/test/test_bytes.py (original) +++ python/trunk/Lib/test/test_bytes.py Tue Jan 12 23:02:10 2010 @@ -78,7 +78,7 @@ self.assertRaises(TypeError, self.type2test, 0.0) class C: pass - # allowed in 2.6 + # allowed in 2.x #self.assertRaises(TypeError, self.type2test, ["0"]) self.assertRaises(TypeError, self.type2test, [0.0]) self.assertRaises(TypeError, self.type2test, [None]) @@ -269,13 +269,6 @@ self.assertEqual(self.type2test(b".").join([b"ab", b"cd"]), b"ab.cd") # XXX more... - def test_index(self): - b = self.type2test(b'parrot') - self.assertEqual(b.index('p'), 0) - self.assertEqual(b.index('rr'), 2) - self.assertEqual(b.index('t'), 5) - self.assertRaises(ValueError, lambda: b.index('w')) - def test_count(self): b = self.type2test(b'mississippi') self.assertEqual(b.count(b'i'), 4) @@ -361,6 +354,10 @@ def test_split_string_error(self): self.assertRaises(TypeError, self.type2test(b'a b').split, u' ') + def test_split_unicodewhitespace(self): + b = self.type2test(b"\x09\x0A\x0B\x0C\x0D\x1C\x1D\x1E\x1F") + self.assertEqual(b.split(), [b'\x1c\x1d\x1e\x1f']) + def test_rsplit(self): b = self.type2test(b'mississippi') self.assertEqual(b.rsplit(b'i'), [b'm', b'ss', b'ss', b'pp', b'']) @@ -384,18 +381,18 @@ def test_rsplit_unicodewhitespace(self): b = self.type2test(b"\x09\x0A\x0B\x0C\x0D\x1C\x1D\x1E\x1F") - self.assertEqual(b.split(), [b'\x1c\x1d\x1e\x1f']) self.assertEqual(b.rsplit(), [b'\x1c\x1d\x1e\x1f']) def test_partition(self): b = self.type2test(b'mississippi') self.assertEqual(b.partition(b'ss'), (b'mi', b'ss', b'issippi')) - self.assertEqual(b.rpartition(b'w'), (b'', b'', b'mississippi')) + self.assertEqual(b.partition(b'w'), (b'mississippi', b'', b'')) def test_rpartition(self): b = self.type2test(b'mississippi') self.assertEqual(b.rpartition(b'ss'), (b'missi', b'ss', b'ippi')) self.assertEqual(b.rpartition(b'i'), (b'mississipp', b'i', b'')) + self.assertEqual(b.rpartition(b'w'), (b'', b'', b'mississippi')) def test_pickling(self): for proto in range(pickle.HIGHEST_PROTOCOL + 1): @@ -436,8 +433,7 @@ self.assertEqual(b.lstrip(), b'abc \t\n\r\f\v') self.assertEqual(b.rstrip(), b' \t\n\r\f\vabc') - def XXXtest_strip_bytearray(self): - # XXX memoryview not available + def test_strip_bytearray(self): self.assertEqual(self.type2test(b'abc').strip(memoryview(b'ac')), b'b') self.assertEqual(self.type2test(b'abc').lstrip(memoryview(b'ac')), b'bc') self.assertEqual(self.type2test(b'abc').rstrip(memoryview(b'ac')), b'ab') @@ -718,7 +714,7 @@ b.insert(-2, ord('i')) b.insert(1000, ord('i')) self.assertEqual(b, b'mississippi') - # allowed in 2.6 + # allowed in 2.x #self.assertRaises(TypeError, lambda: b.insert(0, b'1')) b = bytearray() b.insert(0, Indexable(ord('A'))) @@ -755,8 +751,7 @@ self.assertEqual(b, b"") self.assertEqual(c, b"") - # XXX memoryview not available - def XXXtest_resize_forbidden(self): + def test_resize_forbidden(self): # #4509: can't resize a bytearray when there are buffer exports, even # if it wouldn't reallocate the underlying buffer. # Furthermore, no destructive changes to the buffer may be applied From python-checkins at python.org Tue Jan 12 23:05:42 2010 From: python-checkins at python.org (antoine.pitrou) Date: Tue, 12 Jan 2010 22:05:42 -0000 Subject: [Python-checkins] r77449 - in python/branches/py3k: Lib/test/test_bytes.py Message-ID: Author: antoine.pitrou Date: Tue Jan 12 23:05:42 2010 New Revision: 77449 Log: Merged revisions 77448 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77448 | antoine.pitrou | 2010-01-12 23:02:10 +0100 (mar., 12 janv. 2010) | 3 lines Issue #7654: enable additional bytes/bytearray tests. Patch by Florent Xicluna. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_bytes.py Modified: python/branches/py3k/Lib/test/test_bytes.py ============================================================================== --- python/branches/py3k/Lib/test/test_bytes.py (original) +++ python/branches/py3k/Lib/test/test_bytes.py Tue Jan 12 23:05:42 2010 @@ -277,13 +277,6 @@ self.assertEqual(self.type2test(b".").join([b"ab", b"cd"]), b"ab.cd") # XXX more... - def test_index(self): - b = self.type2test(b'parrot') - self.assertEqual(b.index('p'), 0) - self.assertEqual(b.index('rr'), 2) - self.assertEqual(b.index('t'), 5) - self.assertRaises(ValueError, lambda: b.index('w')) - def test_count(self): b = self.type2test(b'mississippi') self.assertEqual(b.count(b'i'), 4) @@ -369,6 +362,10 @@ def test_split_string_error(self): self.assertRaises(TypeError, self.type2test(b'a b').split, ' ') + def test_split_unicodewhitespace(self): + b = self.type2test(b"\x09\x0A\x0B\x0C\x0D\x1C\x1D\x1E\x1F") + self.assertEqual(b.split(), [b'\x1c\x1d\x1e\x1f']) + def test_rsplit(self): b = self.type2test(b'mississippi') self.assertEqual(b.rsplit(b'i'), [b'm', b'ss', b'ss', b'pp', b'']) @@ -392,18 +389,18 @@ def test_rsplit_unicodewhitespace(self): b = self.type2test(b"\x09\x0A\x0B\x0C\x0D\x1C\x1D\x1E\x1F") - self.assertEqual(b.split(), [b'\x1c\x1d\x1e\x1f']) self.assertEqual(b.rsplit(), [b'\x1c\x1d\x1e\x1f']) def test_partition(self): b = self.type2test(b'mississippi') self.assertEqual(b.partition(b'ss'), (b'mi', b'ss', b'issippi')) - self.assertEqual(b.rpartition(b'w'), (b'', b'', b'mississippi')) + self.assertEqual(b.partition(b'w'), (b'mississippi', b'', b'')) def test_rpartition(self): b = self.type2test(b'mississippi') self.assertEqual(b.rpartition(b'ss'), (b'missi', b'ss', b'ippi')) self.assertEqual(b.rpartition(b'i'), (b'mississipp', b'i', b'')) + self.assertEqual(b.rpartition(b'w'), (b'', b'', b'mississippi')) def test_pickling(self): for proto in range(pickle.HIGHEST_PROTOCOL + 1): From python-checkins at python.org Tue Jan 12 23:23:56 2010 From: python-checkins at python.org (mark.dickinson) Date: Tue, 12 Jan 2010 22:23:56 -0000 Subject: [Python-checkins] r77450 - in python/trunk: Lib/test/floating_points.txt Misc/NEWS Python/dtoa.c Message-ID: Author: mark.dickinson Date: Tue Jan 12 23:23:56 2010 New Revision: 77450 Log: Issue #7632: Fix a problem with _Py_dg_strtod that could lead to crashes in debug builds, for certain long numeric strings corresponding to subnormal values. Modified: python/trunk/Lib/test/floating_points.txt python/trunk/Misc/NEWS python/trunk/Python/dtoa.c Modified: python/trunk/Lib/test/floating_points.txt ============================================================================== --- python/trunk/Lib/test/floating_points.txt (original) +++ python/trunk/Lib/test/floating_points.txt Tue Jan 12 23:23:56 2010 @@ -1019,3 +1019,10 @@ +43723334984997307E-26 +10182419849537963E-24 -93501703572661982E-26 + +# A value that caused a crash in debug builds for Python >= 2.7, 3.1 +# See http://bugs.python.org/issue7632 +2183167012312112312312.23538020374420446192e-370 + +# Another value designed to test a corner case of Python's strtod code. +0.99999999999999999999999999999999999999999e+23 Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Tue Jan 12 23:23:56 2010 @@ -12,6 +12,10 @@ Core and Builtins ----------------- +- Issue #7632: Fix a crash in dtoa.c that occurred in debug builds + when parsing certain long numeric strings corresponding to subnormal + values. + - Issue #7319: Silence DeprecationWarning by default. - Issue #2335: Backport set literals syntax from Python 3.x. Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Tue Jan 12 23:23:56 2010 @@ -1142,7 +1142,7 @@ dsign = bc->dsign; nd = bc->nd; nd0 = bc->nd0; - p5 = nd + bc->e0 - 1; + p5 = nd + bc->e0; speccase = 0; if (rv->d == 0.) { /* special case: value near underflow-to-zero */ /* threshold was rounded to zero */ @@ -1227,17 +1227,21 @@ } } - /* Now b/d = exactly half-way between the two floating-point values */ - /* on either side of the input string. Compute first digit of b/d. */ - - if (!(dig = quorem(b,d))) { - b = multadd(b, 10, 0); /* very unlikely */ - if (b == NULL) { - Bfree(d); - return -1; - } - dig = quorem(b,d); + /* Now 10*b/d = exactly half-way between the two floating-point values + on either side of the input string. If b >= d, round down. */ + if (cmp(b, d) >= 0) { + dd = -1; + goto ret; + } + + /* Compute first digit of 10*b/d. */ + b = multadd(b, 10, 0); + if (b == NULL) { + Bfree(d); + return -1; } + dig = quorem(b, d); + assert(dig < 10); /* Compare b/d with s0 */ From python-checkins at python.org Tue Jan 12 23:55:52 2010 From: python-checkins at python.org (mark.dickinson) Date: Tue, 12 Jan 2010 22:55:52 -0000 Subject: [Python-checkins] r77451 - in python/trunk: Lib/test/test_float.py Misc/NEWS Python/dtoa.c Message-ID: Author: mark.dickinson Date: Tue Jan 12 23:55:51 2010 New Revision: 77451 Log: Issue #7632: Fix a bug in dtoa.c that could lead to incorrectly-rounded results. Modified: python/trunk/Lib/test/test_float.py python/trunk/Misc/NEWS python/trunk/Python/dtoa.c Modified: python/trunk/Lib/test/test_float.py ============================================================================== --- python/trunk/Lib/test/test_float.py (original) +++ python/trunk/Lib/test/test_float.py Tue Jan 12 23:55:51 2010 @@ -8,6 +8,7 @@ import random import fractions import sys +import re INF = float("inf") NAN = float("nan") @@ -21,6 +22,74 @@ test_dir = os.path.dirname(__file__) or os.curdir format_testfile = os.path.join(test_dir, 'formatfloat_testcases.txt') +finite_decimal_parser = re.compile(r""" # A numeric string consists of: + (?P[-+])? # an optional sign, followed by + (?=\d|\.\d) # a number with at least one digit + (?P\d*) # having a (possibly empty) integer part + (?:\.(?P\d*))? # followed by an optional fractional part + (?:E(?P[-+]?\d+))? # and an optional exponent + \Z +""", re.VERBOSE | re.IGNORECASE | re.UNICODE).match + +# Pure Python version of correctly rounded string->float conversion. +# Avoids any use of floating-point by returning the result as a hex string. +def strtod(s, mant_dig=53, min_exp = -1021, max_exp = 1024): + """Convert a finite decimal string to a hex string representing an + IEEE 754 binary64 float. Return 'inf' or '-inf' on overflow. + This function makes no use of floating-point arithmetic at any + stage.""" + + # parse string into a pair of integers 'a' and 'b' such that + # abs(decimal value) = a/b, and a boolean 'negative'. + m = finite_decimal_parser(s) + if m is None: + raise ValueError('invalid numeric string') + fraction = m.group('frac') or '' + intpart = int(m.group('int') + fraction) + exp = int(m.group('exp') or '0') - len(fraction) + negative = m.group('sign') == '-' + a, b = intpart*10**max(exp, 0), 10**max(0, -exp) + + # quick return for zeros + if not a: + return '-0x0.0p+0' if negative else '0x0.0p+0' + + # compute exponent e for result; may be one too small in the case + # that the rounded value of a/b lies in a different binade from a/b + d = a.bit_length() - b.bit_length() + d += (a >> d if d >= 0 else a << -d) >= b + e = max(d, min_exp) - mant_dig + + # approximate a/b by number of the form q * 2**e; adjust e if necessary + a, b = a << max(-e, 0), b << max(e, 0) + q, r = divmod(a, b) + if 2*r > b or 2*r == b and q & 1: + q += 1 + if q.bit_length() == mant_dig+1: + q //= 2 + e += 1 + + # double check that (q, e) has the right form + assert q.bit_length() <= mant_dig and e >= min_exp - mant_dig + assert q.bit_length() == mant_dig or e == min_exp - mant_dig + + # check for overflow and underflow + if e + q.bit_length() > max_exp: + return '-inf' if negative else 'inf' + if not q: + return '-0x0.0p+0' if negative else '0x0.0p+0' + + # for hex representation, shift so # bits after point is a multiple of 4 + hexdigs = 1 + (mant_dig-2)//4 + shift = 3 - (mant_dig-2)%4 + q, e = q << shift, e - shift + return '{}0x{:x}.{:0{}x}p{:+d}'.format( + '-' if negative else '', + q // 16**hexdigs, + q % 16**hexdigs, + hexdigs, + e + 4*hexdigs) + class GeneralFloatCases(unittest.TestCase): def test_float(self): @@ -1299,6 +1368,38 @@ else: self.identical(x, fromHex(toHex(x))) +class StrtodTestCase(unittest.TestCase): + def check_string(self, s): + expected = strtod(s) + try: + fs = float(s) + except OverflowError: + got = '-inf' if s[0] == '-' else 'inf' + else: + got = fs.hex() + self.assertEqual(expected, got, + "Incorrectly rounded str->float conversion for " + "{}: expected {}, got {}".format(s, expected, got)) + + @unittest.skipUnless(getattr(sys, 'float_repr_style', '') == 'short', + "applies only when using short float repr style") + def test_bug7632(self): + # check a few particular values that gave incorrectly rounded + # results with previous versions of dtoa.c + test_strings = [ + '94393431193180696942841837085033647913224148539854e-358', + '12579816049008305546974391768996369464963024663104e-357', + '17489628565202117263145367596028389348922981857013e-357', + '18487398785991994634182916638542680759613590482273e-357', + '32002864200581033134358724675198044527469366773928e-358', + '73608278998966969345824653500136787876436005957953e-358', + '64774478836417299491718435234611299336288082136054e-358', + '13704940134126574534878641876947980878824688451169e-357', + '46697445774047060960624497964425416610480524760471e-358', + ] + for s in test_strings: + self.check_string(s) + def test_main(): test_support.run_unittest( @@ -1310,6 +1411,7 @@ RoundTestCase, InfNanTest, HexFloatTestCase, + StrtodTestCase, ) if __name__ == '__main__': Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Tue Jan 12 23:55:51 2010 @@ -14,7 +14,8 @@ - Issue #7632: Fix a crash in dtoa.c that occurred in debug builds when parsing certain long numeric strings corresponding to subnormal - values. + values. Also fix a number of bugs in dtoa.c that could lead to + incorrectly rounded results when converting strings to floats. - Issue #7319: Silence DeprecationWarning by default. Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Tue Jan 12 23:55:51 2010 @@ -1130,6 +1130,26 @@ return q; } +/* version of ulp(x) that takes bc.scale into account. + + Assuming that x is finite and nonzero, and x / 2^bc.scale is exactly + representable as a double, sulp(x) is equivalent to 2^bc.scale * ulp(x / + 2^bc.scale). */ + +static double +sulp(U *x, BCinfo *bc) +{ + U u; + + if (bc->scale && 2*P + 1 - ((word0(x) & Exp_mask) >> Exp_shift) > 0) { + /* rv/2^bc->scale is subnormal */ + word0(&u) = (P+2)*Exp_msk1; + word1(&u) = 0; + return u.d; + } + else + return ulp(x); +} /* return 0 on success, -1 on failure */ @@ -1289,12 +1309,12 @@ else if (dd < 0) { if (!dsign) /* does not happen for round-near */ retlow1: - dval(rv) -= ulp(rv); + dval(rv) -= sulp(rv, bc); } else if (dd > 0) { if (dsign) { rethi1: - dval(rv) += ulp(rv); + dval(rv) += sulp(rv, bc); } } else { From python-checkins at python.org Wed Jan 13 00:04:19 2010 From: python-checkins at python.org (mark.dickinson) Date: Tue, 12 Jan 2010 23:04:19 -0000 Subject: [Python-checkins] r77452 - in python/branches/py3k: Lib/test/floating_points.txt Lib/test/test_float.py Misc/NEWS Python/dtoa.c Message-ID: Author: mark.dickinson Date: Wed Jan 13 00:04:19 2010 New Revision: 77452 Log: Merged revisions 77410,77421,77450-77451 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77410 | mark.dickinson | 2010-01-10 13:06:31 +0000 (Sun, 10 Jan 2010) | 1 line Remove unused BCinfo fields and an unused macro. ........ r77421 | mark.dickinson | 2010-01-11 17:15:13 +0000 (Mon, 11 Jan 2010) | 1 line Change a variable type to avoid signed overflow; replace repeated '19999' constant by a define. ........ r77450 | mark.dickinson | 2010-01-12 22:23:56 +0000 (Tue, 12 Jan 2010) | 4 lines Issue #7632: Fix a problem with _Py_dg_strtod that could lead to crashes in debug builds, for certain long numeric strings corresponding to subnormal values. ........ r77451 | mark.dickinson | 2010-01-12 22:55:51 +0000 (Tue, 12 Jan 2010) | 2 lines Issue #7632: Fix a bug in dtoa.c that could lead to incorrectly-rounded results. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/floating_points.txt python/branches/py3k/Lib/test/test_float.py python/branches/py3k/Misc/NEWS python/branches/py3k/Python/dtoa.c Modified: python/branches/py3k/Lib/test/floating_points.txt ============================================================================== --- python/branches/py3k/Lib/test/floating_points.txt (original) +++ python/branches/py3k/Lib/test/floating_points.txt Wed Jan 13 00:04:19 2010 @@ -1019,3 +1019,10 @@ +43723334984997307E-26 +10182419849537963E-24 -93501703572661982E-26 + +# A value that caused a crash in debug builds for Python >= 2.7, 3.1 +# See http://bugs.python.org/issue7632 +2183167012312112312312.23538020374420446192e-370 + +# Another value designed to test a corner case of Python's strtod code. +0.99999999999999999999999999999999999999999e+23 Modified: python/branches/py3k/Lib/test/test_float.py ============================================================================== --- python/branches/py3k/Lib/test/test_float.py (original) +++ python/branches/py3k/Lib/test/test_float.py Wed Jan 13 00:04:19 2010 @@ -7,6 +7,7 @@ from math import isinf, isnan, copysign, ldexp import operator import random, fractions +import re INF = float("inf") NAN = float("nan") @@ -20,6 +21,74 @@ test_dir = os.path.dirname(__file__) or os.curdir format_testfile = os.path.join(test_dir, 'formatfloat_testcases.txt') +finite_decimal_parser = re.compile(r""" # A numeric string consists of: + (?P[-+])? # an optional sign, followed by + (?=\d|\.\d) # a number with at least one digit + (?P\d*) # having a (possibly empty) integer part + (?:\.(?P\d*))? # followed by an optional fractional part + (?:E(?P[-+]?\d+))? # and an optional exponent + \Z +""", re.VERBOSE | re.IGNORECASE | re.UNICODE).match + +# Pure Python version of correctly rounded string->float conversion. +# Avoids any use of floating-point by returning the result as a hex string. +def strtod(s, mant_dig=53, min_exp = -1021, max_exp = 1024): + """Convert a finite decimal string to a hex string representing an + IEEE 754 binary64 float. Return 'inf' or '-inf' on overflow. + This function makes no use of floating-point arithmetic at any + stage.""" + + # parse string into a pair of integers 'a' and 'b' such that + # abs(decimal value) = a/b, and a boolean 'negative'. + m = finite_decimal_parser(s) + if m is None: + raise ValueError('invalid numeric string') + fraction = m.group('frac') or '' + intpart = int(m.group('int') + fraction) + exp = int(m.group('exp') or '0') - len(fraction) + negative = m.group('sign') == '-' + a, b = intpart*10**max(exp, 0), 10**max(0, -exp) + + # quick return for zeros + if not a: + return '-0x0.0p+0' if negative else '0x0.0p+0' + + # compute exponent e for result; may be one too small in the case + # that the rounded value of a/b lies in a different binade from a/b + d = a.bit_length() - b.bit_length() + d += (a >> d if d >= 0 else a << -d) >= b + e = max(d, min_exp) - mant_dig + + # approximate a/b by number of the form q * 2**e; adjust e if necessary + a, b = a << max(-e, 0), b << max(e, 0) + q, r = divmod(a, b) + if 2*r > b or 2*r == b and q & 1: + q += 1 + if q.bit_length() == mant_dig+1: + q //= 2 + e += 1 + + # double check that (q, e) has the right form + assert q.bit_length() <= mant_dig and e >= min_exp - mant_dig + assert q.bit_length() == mant_dig or e == min_exp - mant_dig + + # check for overflow and underflow + if e + q.bit_length() > max_exp: + return '-inf' if negative else 'inf' + if not q: + return '-0x0.0p+0' if negative else '0x0.0p+0' + + # for hex representation, shift so # bits after point is a multiple of 4 + hexdigs = 1 + (mant_dig-2)//4 + shift = 3 - (mant_dig-2)%4 + q, e = q << shift, e - shift + return '{}0x{:x}.{:0{}x}p{:+d}'.format( + '-' if negative else '', + q // 16**hexdigs, + q % 16**hexdigs, + hexdigs, + e + 4*hexdigs) + class GeneralFloatCases(unittest.TestCase): def test_float(self): @@ -1263,6 +1332,38 @@ else: self.identical(x, fromHex(toHex(x))) +class StrtodTestCase(unittest.TestCase): + def check_string(self, s): + expected = strtod(s) + try: + fs = float(s) + except OverflowError: + got = '-inf' if s[0] == '-' else 'inf' + else: + got = fs.hex() + self.assertEqual(expected, got, + "Incorrectly rounded str->float conversion for " + "{}: expected {}, got {}".format(s, expected, got)) + + @unittest.skipUnless(getattr(sys, 'float_repr_style', '') == 'short', + "applies only when using short float repr style") + def test_bug7632(self): + # check a few particular values that gave incorrectly rounded + # results with previous versions of dtoa.c + test_strings = [ + '94393431193180696942841837085033647913224148539854e-358', + '12579816049008305546974391768996369464963024663104e-357', + '17489628565202117263145367596028389348922981857013e-357', + '18487398785991994634182916638542680759613590482273e-357', + '32002864200581033134358724675198044527469366773928e-358', + '73608278998966969345824653500136787876436005957953e-358', + '64774478836417299491718435234611299336288082136054e-358', + '13704940134126574534878641876947980878824688451169e-357', + '46697445774047060960624497964425416610480524760471e-358', + ] + for s in test_strings: + self.check_string(s) + def test_main(): support.run_unittest( @@ -1275,6 +1376,7 @@ RoundTestCase, InfNanTest, HexFloatTestCase, + StrtodTestCase, ) if __name__ == '__main__': Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Wed Jan 13 00:04:19 2010 @@ -12,6 +12,11 @@ Core and Builtins ----------------- +- Issue #7632: Fix a crash in dtoa.c that occurred in debug builds + when parsing certain long numeric strings corresponding to subnormal + values. Also fix a number of bugs in dtoa.c that could lead to + incorrectly rounded results when converting strings to floats. + - The __complex__ method is now looked up on the class of instances to make it consistent with other special methods. Modified: python/branches/py3k/Python/dtoa.c ============================================================================== --- python/branches/py3k/Python/dtoa.c (original) +++ python/branches/py3k/Python/dtoa.c Wed Jan 13 00:04:19 2010 @@ -200,10 +200,11 @@ #define STRTOD_DIGLIM 40 #endif -#ifdef DIGLIM_DEBUG -extern int strtod_diglim; -#else -#define strtod_diglim STRTOD_DIGLIM +/* maximum permitted exponent value for strtod; exponents larger than + MAX_ABS_EXP in absolute value get truncated to +-MAX_ABS_EXP. MAX_ABS_EXP + should fit into an int. */ +#ifndef MAX_ABS_EXP +#define MAX_ABS_EXP 19999U #endif /* The following definition of Storeinc is appropriate for MIPS processors. @@ -269,8 +270,7 @@ typedef struct BCinfo BCinfo; struct BCinfo { - int dp0, dp1, dplen, dsign, e0, inexact; - int nd, nd0, rounding, scale, uflchk; + int dp0, dp1, dplen, dsign, e0, nd, nd0, scale; }; #define FFFFFFFF 0xffffffffUL @@ -1130,6 +1130,26 @@ return q; } +/* version of ulp(x) that takes bc.scale into account. + + Assuming that x is finite and nonzero, and x / 2^bc.scale is exactly + representable as a double, sulp(x) is equivalent to 2^bc.scale * ulp(x / + 2^bc.scale). */ + +static double +sulp(U *x, BCinfo *bc) +{ + U u; + + if (bc->scale && 2*P + 1 - ((word0(x) & Exp_mask) >> Exp_shift) > 0) { + /* rv/2^bc->scale is subnormal */ + word0(&u) = (P+2)*Exp_msk1; + word1(&u) = 0; + return u.d; + } + else + return ulp(x); +} /* return 0 on success, -1 on failure */ @@ -1142,7 +1162,7 @@ dsign = bc->dsign; nd = bc->nd; nd0 = bc->nd0; - p5 = nd + bc->e0 - 1; + p5 = nd + bc->e0; speccase = 0; if (rv->d == 0.) { /* special case: value near underflow-to-zero */ /* threshold was rounded to zero */ @@ -1227,17 +1247,21 @@ } } - /* Now b/d = exactly half-way between the two floating-point values */ - /* on either side of the input string. Compute first digit of b/d. */ - - if (!(dig = quorem(b,d))) { - b = multadd(b, 10, 0); /* very unlikely */ - if (b == NULL) { - Bfree(d); - return -1; - } - dig = quorem(b,d); + /* Now 10*b/d = exactly half-way between the two floating-point values + on either side of the input string. If b >= d, round down. */ + if (cmp(b, d) >= 0) { + dd = -1; + goto ret; } + + /* Compute first digit of 10*b/d. */ + b = multadd(b, 10, 0); + if (b == NULL) { + Bfree(d); + return -1; + } + dig = quorem(b, d); + assert(dig < 10); /* Compare b/d with s0 */ @@ -1285,12 +1309,12 @@ else if (dd < 0) { if (!dsign) /* does not happen for round-near */ retlow1: - dval(rv) -= ulp(rv); + dval(rv) -= sulp(rv, bc); } else if (dd > 0) { if (dsign) { rethi1: - dval(rv) += ulp(rv); + dval(rv) += sulp(rv, bc); } } else { @@ -1312,13 +1336,12 @@ int esign, i, j, k, nd, nd0, nf, nz, nz0, sign; const char *s, *s0, *s1; double aadj, aadj1; - Long L; U aadj2, adj, rv, rv0; - ULong y, z; + ULong y, z, L; BCinfo bc; Bigint *bb, *bb1, *bd, *bd0, *bs, *delta; - sign = nz0 = nz = bc.dplen = bc.uflchk = 0; + sign = nz0 = nz = bc.dplen = 0; dval(&rv) = 0.; for(s = s00;;s++) switch(*s) { case '-': @@ -1413,11 +1436,11 @@ s1 = s; while((c = *++s) >= '0' && c <= '9') L = 10*L + c - '0'; - if (s - s1 > 8 || L > 19999) + if (s - s1 > 8 || L > MAX_ABS_EXP) /* Avoid confusion from exponents * so large that e might overflow. */ - e = 19999; /* safe for 16 bit ints */ + e = (int)MAX_ABS_EXP; /* safe for 16 bit ints */ else e = (int)L; if (esign) @@ -1555,11 +1578,11 @@ /* Put digits into bd: true value = bd * 10^e */ bc.nd = nd; - bc.nd0 = nd0; /* Only needed if nd > strtod_diglim, but done here */ + bc.nd0 = nd0; /* Only needed if nd > STRTOD_DIGLIM, but done here */ /* to silence an erroneous warning about bc.nd0 */ /* possibly not being initialized. */ - if (nd > strtod_diglim) { - /* ASSERT(strtod_diglim >= 18); 18 == one more than the */ + if (nd > STRTOD_DIGLIM) { + /* ASSERT(STRTOD_DIGLIM >= 18); 18 == one more than the */ /* minimum number of decimal digits to distinguish double values */ /* in IEEE arithmetic. */ i = j = 18; @@ -1767,10 +1790,8 @@ /* accept rv */ break; /* rv = smallest denormal */ - if (bc.nd >nd) { - bc.uflchk = 1; + if (bc.nd >nd) break; - } goto undfl; } } @@ -1786,10 +1807,8 @@ else { dval(&rv) -= ulp(&rv); if (!dval(&rv)) { - if (bc.nd >nd) { - bc.uflchk = 1; + if (bc.nd >nd) break; - } goto undfl; } } @@ -1801,10 +1820,8 @@ aadj = aadj1 = 1.; else if (word1(&rv) || word0(&rv) & Bndry_mask) { if (word1(&rv) == Tiny1 && !word0(&rv)) { - if (bc.nd >nd) { - bc.uflchk = 1; + if (bc.nd >nd) break; - } goto undfl; } aadj = 1.; From python-checkins at python.org Wed Jan 13 00:09:27 2010 From: python-checkins at python.org (mark.dickinson) Date: Tue, 12 Jan 2010 23:09:27 -0000 Subject: [Python-checkins] r77453 - in python/branches/release31-maint: Lib/test/floating_points.txt Lib/test/test_float.py Misc/NEWS Python/dtoa.c Message-ID: Author: mark.dickinson Date: Wed Jan 13 00:09:26 2010 New Revision: 77453 Log: Merged revisions 77452 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77452 | mark.dickinson | 2010-01-12 23:04:19 +0000 (Tue, 12 Jan 2010) | 23 lines Merged revisions 77410,77421,77450-77451 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77410 | mark.dickinson | 2010-01-10 13:06:31 +0000 (Sun, 10 Jan 2010) | 1 line Remove unused BCinfo fields and an unused macro. ........ r77421 | mark.dickinson | 2010-01-11 17:15:13 +0000 (Mon, 11 Jan 2010) | 1 line Change a variable type to avoid signed overflow; replace repeated '19999' constant by a define. ........ r77450 | mark.dickinson | 2010-01-12 22:23:56 +0000 (Tue, 12 Jan 2010) | 4 lines Issue #7632: Fix a problem with _Py_dg_strtod that could lead to crashes in debug builds, for certain long numeric strings corresponding to subnormal values. ........ r77451 | mark.dickinson | 2010-01-12 22:55:51 +0000 (Tue, 12 Jan 2010) | 2 lines Issue #7632: Fix a bug in dtoa.c that could lead to incorrectly-rounded results. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/test/floating_points.txt python/branches/release31-maint/Lib/test/test_float.py python/branches/release31-maint/Misc/NEWS python/branches/release31-maint/Python/dtoa.c Modified: python/branches/release31-maint/Lib/test/floating_points.txt ============================================================================== --- python/branches/release31-maint/Lib/test/floating_points.txt (original) +++ python/branches/release31-maint/Lib/test/floating_points.txt Wed Jan 13 00:09:26 2010 @@ -1019,3 +1019,10 @@ +43723334984997307E-26 +10182419849537963E-24 -93501703572661982E-26 + +# A value that caused a crash in debug builds for Python >= 2.7, 3.1 +# See http://bugs.python.org/issue7632 +2183167012312112312312.23538020374420446192e-370 + +# Another value designed to test a corner case of Python's strtod code. +0.99999999999999999999999999999999999999999e+23 Modified: python/branches/release31-maint/Lib/test/test_float.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_float.py (original) +++ python/branches/release31-maint/Lib/test/test_float.py Wed Jan 13 00:09:26 2010 @@ -7,6 +7,7 @@ from math import isinf, isnan, copysign, ldexp import operator import random, fractions +import re INF = float("inf") NAN = float("nan") @@ -15,6 +16,74 @@ test_dir = os.path.dirname(__file__) or os.curdir format_testfile = os.path.join(test_dir, 'formatfloat_testcases.txt') +finite_decimal_parser = re.compile(r""" # A numeric string consists of: + (?P[-+])? # an optional sign, followed by + (?=\d|\.\d) # a number with at least one digit + (?P\d*) # having a (possibly empty) integer part + (?:\.(?P\d*))? # followed by an optional fractional part + (?:E(?P[-+]?\d+))? # and an optional exponent + \Z +""", re.VERBOSE | re.IGNORECASE | re.UNICODE).match + +# Pure Python version of correctly rounded string->float conversion. +# Avoids any use of floating-point by returning the result as a hex string. +def strtod(s, mant_dig=53, min_exp = -1021, max_exp = 1024): + """Convert a finite decimal string to a hex string representing an + IEEE 754 binary64 float. Return 'inf' or '-inf' on overflow. + This function makes no use of floating-point arithmetic at any + stage.""" + + # parse string into a pair of integers 'a' and 'b' such that + # abs(decimal value) = a/b, and a boolean 'negative'. + m = finite_decimal_parser(s) + if m is None: + raise ValueError('invalid numeric string') + fraction = m.group('frac') or '' + intpart = int(m.group('int') + fraction) + exp = int(m.group('exp') or '0') - len(fraction) + negative = m.group('sign') == '-' + a, b = intpart*10**max(exp, 0), 10**max(0, -exp) + + # quick return for zeros + if not a: + return '-0x0.0p+0' if negative else '0x0.0p+0' + + # compute exponent e for result; may be one too small in the case + # that the rounded value of a/b lies in a different binade from a/b + d = a.bit_length() - b.bit_length() + d += (a >> d if d >= 0 else a << -d) >= b + e = max(d, min_exp) - mant_dig + + # approximate a/b by number of the form q * 2**e; adjust e if necessary + a, b = a << max(-e, 0), b << max(e, 0) + q, r = divmod(a, b) + if 2*r > b or 2*r == b and q & 1: + q += 1 + if q.bit_length() == mant_dig+1: + q //= 2 + e += 1 + + # double check that (q, e) has the right form + assert q.bit_length() <= mant_dig and e >= min_exp - mant_dig + assert q.bit_length() == mant_dig or e == min_exp - mant_dig + + # check for overflow and underflow + if e + q.bit_length() > max_exp: + return '-inf' if negative else 'inf' + if not q: + return '-0x0.0p+0' if negative else '0x0.0p+0' + + # for hex representation, shift so # bits after point is a multiple of 4 + hexdigs = 1 + (mant_dig-2)//4 + shift = 3 - (mant_dig-2)%4 + q, e = q << shift, e - shift + return '{}0x{:x}.{:0{}x}p{:+d}'.format( + '-' if negative else '', + q // 16**hexdigs, + q % 16**hexdigs, + hexdigs, + e + 4*hexdigs) + class GeneralFloatCases(unittest.TestCase): def test_float(self): @@ -1017,6 +1086,38 @@ else: self.identical(x, fromHex(toHex(x))) +class StrtodTestCase(unittest.TestCase): + def check_string(self, s): + expected = strtod(s) + try: + fs = float(s) + except OverflowError: + got = '-inf' if s[0] == '-' else 'inf' + else: + got = fs.hex() + self.assertEqual(expected, got, + "Incorrectly rounded str->float conversion for " + "{}: expected {}, got {}".format(s, expected, got)) + + @unittest.skipUnless(getattr(sys, 'float_repr_style', '') == 'short', + "applies only when using short float repr style") + def test_bug7632(self): + # check a few particular values that gave incorrectly rounded + # results with previous versions of dtoa.c + test_strings = [ + '94393431193180696942841837085033647913224148539854e-358', + '12579816049008305546974391768996369464963024663104e-357', + '17489628565202117263145367596028389348922981857013e-357', + '18487398785991994634182916638542680759613590482273e-357', + '32002864200581033134358724675198044527469366773928e-358', + '73608278998966969345824653500136787876436005957953e-358', + '64774478836417299491718435234611299336288082136054e-358', + '13704940134126574534878641876947980878824688451169e-357', + '46697445774047060960624497964425416610480524760471e-358', + ] + for s in test_strings: + self.check_string(s) + def test_main(): support.run_unittest( @@ -1029,6 +1130,7 @@ RoundTestCase, InfNanTest, HexFloatTestCase, + StrtodTestCase, ) if __name__ == '__main__': Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Wed Jan 13 00:09:26 2010 @@ -12,6 +12,11 @@ Core and Builtins ----------------- +- Issue #7632: Fix a crash in dtoa.c that occurred in debug builds + when parsing certain long numeric strings corresponding to subnormal + values. Also fix a number of bugs in dtoa.c that could lead to + incorrectly rounded results when converting strings to floats. + - Issue #7604: Deleting an unset slotted attribute did not raise an AttributeError. Modified: python/branches/release31-maint/Python/dtoa.c ============================================================================== --- python/branches/release31-maint/Python/dtoa.c (original) +++ python/branches/release31-maint/Python/dtoa.c Wed Jan 13 00:09:26 2010 @@ -200,10 +200,11 @@ #define STRTOD_DIGLIM 40 #endif -#ifdef DIGLIM_DEBUG -extern int strtod_diglim; -#else -#define strtod_diglim STRTOD_DIGLIM +/* maximum permitted exponent value for strtod; exponents larger than + MAX_ABS_EXP in absolute value get truncated to +-MAX_ABS_EXP. MAX_ABS_EXP + should fit into an int. */ +#ifndef MAX_ABS_EXP +#define MAX_ABS_EXP 19999U #endif /* The following definition of Storeinc is appropriate for MIPS processors. @@ -269,8 +270,7 @@ typedef struct BCinfo BCinfo; struct BCinfo { - int dp0, dp1, dplen, dsign, e0, inexact; - int nd, nd0, rounding, scale, uflchk; + int dp0, dp1, dplen, dsign, e0, nd, nd0, scale; }; #define FFFFFFFF 0xffffffffUL @@ -1130,6 +1130,26 @@ return q; } +/* version of ulp(x) that takes bc.scale into account. + + Assuming that x is finite and nonzero, and x / 2^bc.scale is exactly + representable as a double, sulp(x) is equivalent to 2^bc.scale * ulp(x / + 2^bc.scale). */ + +static double +sulp(U *x, BCinfo *bc) +{ + U u; + + if (bc->scale && 2*P + 1 - ((word0(x) & Exp_mask) >> Exp_shift) > 0) { + /* rv/2^bc->scale is subnormal */ + word0(&u) = (P+2)*Exp_msk1; + word1(&u) = 0; + return u.d; + } + else + return ulp(x); +} /* return 0 on success, -1 on failure */ @@ -1142,7 +1162,7 @@ dsign = bc->dsign; nd = bc->nd; nd0 = bc->nd0; - p5 = nd + bc->e0 - 1; + p5 = nd + bc->e0; speccase = 0; if (rv->d == 0.) { /* special case: value near underflow-to-zero */ /* threshold was rounded to zero */ @@ -1227,17 +1247,21 @@ } } - /* Now b/d = exactly half-way between the two floating-point values */ - /* on either side of the input string. Compute first digit of b/d. */ - - if (!(dig = quorem(b,d))) { - b = multadd(b, 10, 0); /* very unlikely */ - if (b == NULL) { - Bfree(d); - return -1; - } - dig = quorem(b,d); + /* Now 10*b/d = exactly half-way between the two floating-point values + on either side of the input string. If b >= d, round down. */ + if (cmp(b, d) >= 0) { + dd = -1; + goto ret; } + + /* Compute first digit of 10*b/d. */ + b = multadd(b, 10, 0); + if (b == NULL) { + Bfree(d); + return -1; + } + dig = quorem(b, d); + assert(dig < 10); /* Compare b/d with s0 */ @@ -1285,12 +1309,12 @@ else if (dd < 0) { if (!dsign) /* does not happen for round-near */ retlow1: - dval(rv) -= ulp(rv); + dval(rv) -= sulp(rv, bc); } else if (dd > 0) { if (dsign) { rethi1: - dval(rv) += ulp(rv); + dval(rv) += sulp(rv, bc); } } else { @@ -1312,13 +1336,12 @@ int esign, i, j, k, nd, nd0, nf, nz, nz0, sign; const char *s, *s0, *s1; double aadj, aadj1; - Long L; U aadj2, adj, rv, rv0; - ULong y, z; + ULong y, z, L; BCinfo bc; Bigint *bb, *bb1, *bd, *bd0, *bs, *delta; - sign = nz0 = nz = bc.dplen = bc.uflchk = 0; + sign = nz0 = nz = bc.dplen = 0; dval(&rv) = 0.; for(s = s00;;s++) switch(*s) { case '-': @@ -1413,11 +1436,11 @@ s1 = s; while((c = *++s) >= '0' && c <= '9') L = 10*L + c - '0'; - if (s - s1 > 8 || L > 19999) + if (s - s1 > 8 || L > MAX_ABS_EXP) /* Avoid confusion from exponents * so large that e might overflow. */ - e = 19999; /* safe for 16 bit ints */ + e = (int)MAX_ABS_EXP; /* safe for 16 bit ints */ else e = (int)L; if (esign) @@ -1555,11 +1578,11 @@ /* Put digits into bd: true value = bd * 10^e */ bc.nd = nd; - bc.nd0 = nd0; /* Only needed if nd > strtod_diglim, but done here */ + bc.nd0 = nd0; /* Only needed if nd > STRTOD_DIGLIM, but done here */ /* to silence an erroneous warning about bc.nd0 */ /* possibly not being initialized. */ - if (nd > strtod_diglim) { - /* ASSERT(strtod_diglim >= 18); 18 == one more than the */ + if (nd > STRTOD_DIGLIM) { + /* ASSERT(STRTOD_DIGLIM >= 18); 18 == one more than the */ /* minimum number of decimal digits to distinguish double values */ /* in IEEE arithmetic. */ i = j = 18; @@ -1767,10 +1790,8 @@ /* accept rv */ break; /* rv = smallest denormal */ - if (bc.nd >nd) { - bc.uflchk = 1; + if (bc.nd >nd) break; - } goto undfl; } } @@ -1786,10 +1807,8 @@ else { dval(&rv) -= ulp(&rv); if (!dval(&rv)) { - if (bc.nd >nd) { - bc.uflchk = 1; + if (bc.nd >nd) break; - } goto undfl; } } @@ -1801,10 +1820,8 @@ aadj = aadj1 = 1.; else if (word1(&rv) || word0(&rv) & Bndry_mask) { if (word1(&rv) == Tiny1 && !word0(&rv)) { - if (bc.nd >nd) { - bc.uflchk = 1; + if (bc.nd >nd) break; - } goto undfl; } aadj = 1.; From python-checkins at python.org Wed Jan 13 00:10:40 2010 From: python-checkins at python.org (mark.dickinson) Date: Tue, 12 Jan 2010 23:10:40 -0000 Subject: [Python-checkins] r77454 - python/branches/release26-maint Message-ID: Author: mark.dickinson Date: Wed Jan 13 00:10:40 2010 New Revision: 77454 Log: Blocked revisions 77410,77421,77450-77451 via svnmerge ........ r77410 | mark.dickinson | 2010-01-10 13:06:31 +0000 (Sun, 10 Jan 2010) | 1 line Remove unused BCinfo fields and an unused macro. ........ r77421 | mark.dickinson | 2010-01-11 17:15:13 +0000 (Mon, 11 Jan 2010) | 1 line Change a variable type to avoid signed overflow; replace repeated '19999' constant by a define. ........ r77450 | mark.dickinson | 2010-01-12 22:23:56 +0000 (Tue, 12 Jan 2010) | 4 lines Issue #7632: Fix a problem with _Py_dg_strtod that could lead to crashes in debug builds, for certain long numeric strings corresponding to subnormal values. ........ r77451 | mark.dickinson | 2010-01-12 22:55:51 +0000 (Tue, 12 Jan 2010) | 2 lines Issue #7632: Fix a bug in dtoa.c that could lead to incorrectly-rounded results. ........ Modified: python/branches/release26-maint/ (props changed) From solipsis at pitrou.net Wed Jan 13 00:52:58 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Wed, 13 Jan 2010 00:52:58 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77449): sum=0 Message-ID: <20100112235258.D0D2D17714@ns6635.ovh.net> py3k results for svn r77449 (hg cset 5031683c3852) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogV6EG0s', '-x', 'test_httpservers'] From python-checkins at python.org Wed Jan 13 01:25:03 2010 From: python-checkins at python.org (ezio.melotti) Date: Wed, 13 Jan 2010 00:25:03 -0000 Subject: [Python-checkins] r77455 - python/trunk/Doc/library/re.rst Message-ID: Author: ezio.melotti Date: Wed Jan 13 01:25:03 2010 New Revision: 77455 Log: #7685: typo Modified: python/trunk/Doc/library/re.rst Modified: python/trunk/Doc/library/re.rst ============================================================================== --- python/trunk/Doc/library/re.rst (original) +++ python/trunk/Doc/library/re.rst Wed Jan 13 01:25:03 2010 @@ -829,16 +829,16 @@ A moderately complicated example: - >>> m = re.match(r"(?P\w+) (?P\w+)", "Malcom Reynolds") + >>> m = re.match(r"(?P\w+) (?P\w+)", "Malcolm Reynolds") >>> m.group('first_name') - 'Malcom' + 'Malcolm' >>> m.group('last_name') 'Reynolds' Named groups can also be referred to by their index: >>> m.group(1) - 'Malcom' + 'Malcolm' >>> m.group(2) 'Reynolds' @@ -881,9 +881,9 @@ the subgroup name. The *default* argument is used for groups that did not participate in the match; it defaults to ``None``. For example: - >>> m = re.match(r"(?P\w+) (?P\w+)", "Malcom Reynolds") + >>> m = re.match(r"(?P\w+) (?P\w+)", "Malcolm Reynolds") >>> m.groupdict() - {'first_name': 'Malcom', 'last_name': 'Reynolds'} + {'first_name': 'Malcolm', 'last_name': 'Reynolds'} .. method:: MatchObject.start([group]) From python-checkins at python.org Wed Jan 13 01:26:47 2010 From: python-checkins at python.org (ezio.melotti) Date: Wed, 13 Jan 2010 00:26:47 -0000 Subject: [Python-checkins] r77456 - in python/branches/release26-maint: Doc/library/re.rst Message-ID: Author: ezio.melotti Date: Wed Jan 13 01:26:46 2010 New Revision: 77456 Log: Merged revisions 77455 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77455 | ezio.melotti | 2010-01-13 02:25:03 +0200 (Wed, 13 Jan 2010) | 1 line #7685: typo ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Doc/library/re.rst Modified: python/branches/release26-maint/Doc/library/re.rst ============================================================================== --- python/branches/release26-maint/Doc/library/re.rst (original) +++ python/branches/release26-maint/Doc/library/re.rst Wed Jan 13 01:26:46 2010 @@ -817,16 +817,16 @@ A moderately complicated example: - >>> m = re.match(r"(?P\w+) (?P\w+)", "Malcom Reynolds") + >>> m = re.match(r"(?P\w+) (?P\w+)", "Malcolm Reynolds") >>> m.group('first_name') - 'Malcom' + 'Malcolm' >>> m.group('last_name') 'Reynolds' Named groups can also be referred to by their index: >>> m.group(1) - 'Malcom' + 'Malcolm' >>> m.group(2) 'Reynolds' @@ -869,9 +869,9 @@ the subgroup name. The *default* argument is used for groups that did not participate in the match; it defaults to ``None``. For example: - >>> m = re.match(r"(?P\w+) (?P\w+)", "Malcom Reynolds") + >>> m = re.match(r"(?P\w+) (?P\w+)", "Malcolm Reynolds") >>> m.groupdict() - {'first_name': 'Malcom', 'last_name': 'Reynolds'} + {'first_name': 'Malcolm', 'last_name': 'Reynolds'} .. method:: MatchObject.start([group]) From python-checkins at python.org Wed Jan 13 01:28:37 2010 From: python-checkins at python.org (ezio.melotti) Date: Wed, 13 Jan 2010 00:28:37 -0000 Subject: [Python-checkins] r77457 - in python/branches/py3k: Doc/library/re.rst Message-ID: Author: ezio.melotti Date: Wed Jan 13 01:28:37 2010 New Revision: 77457 Log: Merged revisions 77455 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77455 | ezio.melotti | 2010-01-13 02:25:03 +0200 (Wed, 13 Jan 2010) | 1 line #7685: typo ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/library/re.rst Modified: python/branches/py3k/Doc/library/re.rst ============================================================================== --- python/branches/py3k/Doc/library/re.rst (original) +++ python/branches/py3k/Doc/library/re.rst Wed Jan 13 01:28:37 2010 @@ -849,16 +849,16 @@ A moderately complicated example: - >>> m = re.match(r"(?P\w+) (?P\w+)", "Malcom Reynolds") + >>> m = re.match(r"(?P\w+) (?P\w+)", "Malcolm Reynolds") >>> m.group('first_name') - 'Malcom' + 'Malcolm' >>> m.group('last_name') 'Reynolds' Named groups can also be referred to by their index: >>> m.group(1) - 'Malcom' + 'Malcolm' >>> m.group(2) 'Reynolds' @@ -898,9 +898,9 @@ the subgroup name. The *default* argument is used for groups that did not participate in the match; it defaults to ``None``. For example: - >>> m = re.match(r"(?P\w+) (?P\w+)", "Malcom Reynolds") + >>> m = re.match(r"(?P\w+) (?P\w+)", "Malcolm Reynolds") >>> m.groupdict() - {'first_name': 'Malcom', 'last_name': 'Reynolds'} + {'first_name': 'Malcolm', 'last_name': 'Reynolds'} .. method:: MatchObject.start(group=0) From python-checkins at python.org Wed Jan 13 01:30:01 2010 From: python-checkins at python.org (ezio.melotti) Date: Wed, 13 Jan 2010 00:30:01 -0000 Subject: [Python-checkins] r77458 - in python/branches/release31-maint: Doc/library/re.rst Message-ID: Author: ezio.melotti Date: Wed Jan 13 01:30:00 2010 New Revision: 77458 Log: Merged revisions 77457 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77457 | ezio.melotti | 2010-01-13 02:28:37 +0200 (Wed, 13 Jan 2010) | 9 lines Merged revisions 77455 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77455 | ezio.melotti | 2010-01-13 02:25:03 +0200 (Wed, 13 Jan 2010) | 1 line #7685: typo ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Doc/library/re.rst Modified: python/branches/release31-maint/Doc/library/re.rst ============================================================================== --- python/branches/release31-maint/Doc/library/re.rst (original) +++ python/branches/release31-maint/Doc/library/re.rst Wed Jan 13 01:30:00 2010 @@ -849,16 +849,16 @@ A moderately complicated example: - >>> m = re.match(r"(?P\w+) (?P\w+)", "Malcom Reynolds") + >>> m = re.match(r"(?P\w+) (?P\w+)", "Malcolm Reynolds") >>> m.group('first_name') - 'Malcom' + 'Malcolm' >>> m.group('last_name') 'Reynolds' Named groups can also be referred to by their index: >>> m.group(1) - 'Malcom' + 'Malcolm' >>> m.group(2) 'Reynolds' @@ -898,9 +898,9 @@ the subgroup name. The *default* argument is used for groups that did not participate in the match; it defaults to ``None``. For example: - >>> m = re.match(r"(?P\w+) (?P\w+)", "Malcom Reynolds") + >>> m = re.match(r"(?P\w+) (?P\w+)", "Malcolm Reynolds") >>> m.groupdict() - {'first_name': 'Malcom', 'last_name': 'Reynolds'} + {'first_name': 'Malcolm', 'last_name': 'Reynolds'} .. method:: MatchObject.start([group]) From python-checkins at python.org Wed Jan 13 04:49:50 2010 From: python-checkins at python.org (benjamin.peterson) Date: Wed, 13 Jan 2010 03:49:50 -0000 Subject: [Python-checkins] r77459 - in python/branches/py3k: Lib/test/test_wave.py Lib/wave.py Misc/NEWS Message-ID: Author: benjamin.peterson Date: Wed Jan 13 04:49:50 2010 New Revision: 77459 Log: use floor division where needed #7681 Modified: python/branches/py3k/Lib/test/test_wave.py python/branches/py3k/Lib/wave.py python/branches/py3k/Misc/NEWS Modified: python/branches/py3k/Lib/test/test_wave.py ============================================================================== --- python/branches/py3k/Lib/test/test_wave.py (original) +++ python/branches/py3k/Lib/test/test_wave.py Wed Jan 13 04:49:50 2010 @@ -1,6 +1,7 @@ from test.support import TESTFN, run_unittest import os import wave +import struct import unittest nchannels = 2 @@ -38,6 +39,16 @@ self.assertEqual(nframes, self.f.getnframes()) self.assertEqual(self.f.readframes(nframes), output) + def test_issue7681(self): + self.f = wave.open(TESTFN, 'wb') + self.f.setnchannels(nchannels) + self.f.setsampwidth(sampwidth) + self.f.setframerate(framerate) + # Don't call setnframes, make _write_header divide to figure it out + output = b'\0' * nframes * nchannels * sampwidth + self.f.writeframes(output) + + def test_main(): run_unittest(TestWave) Modified: python/branches/py3k/Lib/wave.py ============================================================================== --- python/branches/py3k/Lib/wave.py (original) +++ python/branches/py3k/Lib/wave.py Wed Jan 13 04:49:50 2010 @@ -240,7 +240,7 @@ data = array.array(_array_fmts[self._sampwidth]) nitems = nframes * self._nchannels if nitems * self._sampwidth > chunk.chunksize - chunk.size_read: - nitems = (chunk.chunksize - chunk.size_read) / self._sampwidth + nitems = (chunk.chunksize - chunk.size_read) // self._sampwidth data.fromfile(chunk.file.file, nitems) # "tell" data chunk how much was read chunk.size_read = chunk.size_read + nitems * self._sampwidth @@ -461,7 +461,7 @@ def _write_header(self, initlength): self._file.write(b'RIFF') if not self._nframes: - self._nframes = initlength / (self._nchannels * self._sampwidth) + self._nframes = initlength // (self._nchannels * self._sampwidth) self._datalength = self._nframes * self._nchannels * self._sampwidth self._form_length_pos = self._file.tell() self._file.write(struct.pack(' Author: benjamin.peterson Date: Wed Jan 13 04:53:14 2010 New Revision: 77460 Log: Merged revisions 77459 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ........ r77459 | benjamin.peterson | 2010-01-12 21:49:50 -0600 (Tue, 12 Jan 2010) | 1 line use floor division where needed #7681 ........ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/test/test_wave.py python/branches/release31-maint/Lib/wave.py python/branches/release31-maint/Misc/NEWS Modified: python/branches/release31-maint/Lib/test/test_wave.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_wave.py (original) +++ python/branches/release31-maint/Lib/test/test_wave.py Wed Jan 13 04:53:14 2010 @@ -1,6 +1,7 @@ from test.support import TESTFN, run_unittest import os import wave +import struct import unittest nchannels = 2 @@ -38,6 +39,16 @@ self.assertEqual(nframes, self.f.getnframes()) self.assertEqual(self.f.readframes(nframes), output) + def test_issue7681(self): + self.f = wave.open(TESTFN, 'wb') + self.f.setnchannels(nchannels) + self.f.setsampwidth(sampwidth) + self.f.setframerate(framerate) + # Don't call setnframes, make _write_header divide to figure it out + output = b'\0' * nframes * nchannels * sampwidth + self.f.writeframes(output) + + def test_main(): run_unittest(TestWave) Modified: python/branches/release31-maint/Lib/wave.py ============================================================================== --- python/branches/release31-maint/Lib/wave.py (original) +++ python/branches/release31-maint/Lib/wave.py Wed Jan 13 04:53:14 2010 @@ -240,7 +240,7 @@ data = array.array(_array_fmts[self._sampwidth]) nitems = nframes * self._nchannels if nitems * self._sampwidth > chunk.chunksize - chunk.size_read: - nitems = (chunk.chunksize - chunk.size_read) / self._sampwidth + nitems = (chunk.chunksize - chunk.size_read) // self._sampwidth data.fromfile(chunk.file.file, nitems) # "tell" data chunk how much was read chunk.size_read = chunk.size_read + nitems * self._sampwidth @@ -461,7 +461,7 @@ def _write_header(self, initlength): self._file.write(b'RIFF') if not self._nframes: - self._nframes = initlength / (self._nchannels * self._sampwidth) + self._nframes = initlength // (self._nchannels * self._sampwidth) self._datalength = self._nframes * self._nchannels * self._sampwidth self._form_length_pos = self._file.tell() self._file.write(struct.pack(' 348 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-21320 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.528s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [21198 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 348 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [887900 refs] From python-checkins at python.org Wed Jan 13 08:55:49 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 13 Jan 2010 07:55:49 -0000 Subject: [Python-checkins] r77461 - in python/trunk: Makefile.pre.in Misc/NEWS Objects/bytearrayobject.c Objects/stringlib/README.txt Objects/stringlib/count.h Objects/stringlib/ctype.h Objects/stringlib/fastsearch.h Objects/stringlib/find.h Objects/stringlib/partition.h Objects/stringlib/split.h Objects/stringlib/stringdefs.h Objects/stringlib/transmogrify.h Objects/stringlib/unicodedefs.h Objects/stringobject.c Objects/unicodeobject.c PC/VS8.0/pythoncore.vcproj PCbuild/pythoncore.vcproj Message-ID: Author: antoine.pitrou Date: Wed Jan 13 08:55:48 2010 New Revision: 77461 Log: Issue #7622: Improve the split(), rsplit(), splitlines() and replace() methods of bytes, bytearray and unicode objects by using a common implementation based on stringlib's fast search. Patch by Florent Xicluna. Added: python/trunk/Objects/stringlib/split.h (contents, props changed) Modified: python/trunk/Makefile.pre.in python/trunk/Misc/NEWS python/trunk/Objects/bytearrayobject.c python/trunk/Objects/stringlib/README.txt python/trunk/Objects/stringlib/count.h python/trunk/Objects/stringlib/ctype.h python/trunk/Objects/stringlib/fastsearch.h python/trunk/Objects/stringlib/find.h python/trunk/Objects/stringlib/partition.h python/trunk/Objects/stringlib/stringdefs.h python/trunk/Objects/stringlib/transmogrify.h python/trunk/Objects/stringlib/unicodedefs.h python/trunk/Objects/stringobject.c python/trunk/Objects/unicodeobject.c python/trunk/PC/VS8.0/pythoncore.vcproj python/trunk/PCbuild/pythoncore.vcproj Modified: python/trunk/Makefile.pre.in ============================================================================== --- python/trunk/Makefile.pre.in (original) +++ python/trunk/Makefile.pre.in Wed Jan 13 08:55:48 2010 @@ -563,6 +563,7 @@ $(srcdir)/Objects/stringlib/find.h \ $(srcdir)/Objects/stringlib/formatter.h \ $(srcdir)/Objects/stringlib/partition.h \ + $(srcdir)/Objects/stringlib/split.h \ $(srcdir)/Objects/stringlib/stringdefs.h \ $(srcdir)/Objects/stringlib/string_format.h \ $(srcdir)/Objects/stringlib/transmogrify.h \ Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Wed Jan 13 08:55:48 2010 @@ -12,6 +12,10 @@ Core and Builtins ----------------- +- Issue #7622: Improve the split(), rsplit(), splitlines() and replace() + methods of bytes, bytearray and unicode objects by using a common + implementation based on stringlib's fast search. Patch by Florent Xicluna. + - Issue #7632: Fix a crash in dtoa.c that occurred in debug builds when parsing certain long numeric strings corresponding to subnormal values. Also fix a number of bugs in dtoa.c that could lead to Modified: python/trunk/Objects/bytearrayobject.c ============================================================================== --- python/trunk/Objects/bytearrayobject.c (original) +++ python/trunk/Objects/bytearrayobject.c Wed Jan 13 08:55:48 2010 @@ -1115,14 +1115,16 @@ #define STRINGLIB_STR PyByteArray_AS_STRING #define STRINGLIB_NEW PyByteArray_FromStringAndSize #define STRINGLIB_EMPTY nullbytes +#define STRINGLIB_ISSPACE Py_ISSPACE +#define STRINGLIB_ISLINEBREAK(x) ((x == '\n') || (x == '\r')) #define STRINGLIB_CHECK_EXACT PyByteArray_CheckExact #define STRINGLIB_MUTABLE 1 -#define FROM_BYTEARRAY 1 #include "stringlib/fastsearch.h" #include "stringlib/count.h" #include "stringlib/find.h" #include "stringlib/partition.h" +#include "stringlib/split.h" #include "stringlib/ctype.h" #include "stringlib/transmogrify.h" @@ -1130,21 +1132,20 @@ /* The following Py_LOCAL_INLINE and Py_LOCAL functions were copied from the old char* style string object. */ -Py_LOCAL_INLINE(void) -_adjust_indices(Py_ssize_t *start, Py_ssize_t *end, Py_ssize_t len) -{ - if (*end > len) - *end = len; - else if (*end < 0) - *end += len; - if (*end < 0) - *end = 0; - if (*start < 0) - *start += len; - if (*start < 0) - *start = 0; -} - +/* helper macro to fixup start/end slice values */ +#define ADJUST_INDICES(start, end, len) \ + if (end > len) \ + end = len; \ + else if (end < 0) { \ + end += len; \ + if (end < 0) \ + end = 0; \ + } \ + if (start < 0) { \ + start += len; \ + if (start < 0) \ + start = 0; \ + } Py_LOCAL_INLINE(Py_ssize_t) bytearray_find_internal(PyByteArrayObject *self, PyObject *args, int dir) @@ -1212,10 +1213,10 @@ if (_getbuffer(sub_obj, &vsub) < 0) return NULL; - _adjust_indices(&start, &end, PyByteArray_GET_SIZE(self)); + ADJUST_INDICES(start, end, PyByteArray_GET_SIZE(self)); count_obj = PyInt_FromSsize_t( - stringlib_count(str + start, end - start, vsub.buf, vsub.len) + stringlib_count(str + start, end - start, vsub.buf, vsub.len, PY_SSIZE_T_MAX) ); PyBuffer_Release(&vsub); return count_obj; @@ -1323,7 +1324,7 @@ if (_getbuffer(substr, &vsubstr) < 0) return -1; - _adjust_indices(&start, &end, len); + ADJUST_INDICES(start, end, len); if (direction < 0) { /* startswith */ @@ -1528,20 +1529,11 @@ } -#define FORWARD 1 -#define REVERSE -1 - /* find and count characters and substrings */ #define findchar(target, target_len, c) \ ((char *)memchr((const void *)(target), c, target_len)) -/* Don't call if length < 2 */ -#define Py_STRING_MATCH(target, offset, pattern, length) \ - (target[offset] == pattern[0] && \ - target[offset+length-1] == pattern[length-1] && \ - !memcmp(target+offset+1, pattern+1, length-2) ) - /* Bytes ops must return a string, create a copy */ Py_LOCAL(PyByteArrayObject *) @@ -1568,93 +1560,6 @@ return count; } -Py_LOCAL(Py_ssize_t) -findstring(const char *target, Py_ssize_t target_len, - const char *pattern, Py_ssize_t pattern_len, - Py_ssize_t start, - Py_ssize_t end, - int direction) -{ - if (start < 0) { - start += target_len; - if (start < 0) - start = 0; - } - if (end > target_len) { - end = target_len; - } else if (end < 0) { - end += target_len; - if (end < 0) - end = 0; - } - - /* zero-length substrings always match at the first attempt */ - if (pattern_len == 0) - return (direction > 0) ? start : end; - - end -= pattern_len; - - if (direction < 0) { - for (; end >= start; end--) - if (Py_STRING_MATCH(target, end, pattern, pattern_len)) - return end; - } else { - for (; start <= end; start++) - if (Py_STRING_MATCH(target, start, pattern, pattern_len)) - return start; - } - return -1; -} - -Py_LOCAL_INLINE(Py_ssize_t) -countstring(const char *target, Py_ssize_t target_len, - const char *pattern, Py_ssize_t pattern_len, - Py_ssize_t start, - Py_ssize_t end, - int direction, Py_ssize_t maxcount) -{ - Py_ssize_t count=0; - - if (start < 0) { - start += target_len; - if (start < 0) - start = 0; - } - if (end > target_len) { - end = target_len; - } else if (end < 0) { - end += target_len; - if (end < 0) - end = 0; - } - - /* zero-length substrings match everywhere */ - if (pattern_len == 0 || maxcount == 0) { - if (target_len+1 < maxcount) - return target_len+1; - return maxcount; - } - - end -= pattern_len; - if (direction < 0) { - for (; (end >= start); end--) - if (Py_STRING_MATCH(target, end, pattern, pattern_len)) { - count++; - if (--maxcount <= 0) break; - end -= pattern_len-1; - } - } else { - for (; (start <= end); start++) - if (Py_STRING_MATCH(target, start, pattern, pattern_len)) { - count++; - if (--maxcount <= 0) - break; - start += pattern_len-1; - } - } - return count; -} - /* Algorithms for different cases of string replacement */ @@ -1776,10 +1681,9 @@ self_len = PyByteArray_GET_SIZE(self); self_s = PyByteArray_AS_STRING(self); - count = countstring(self_s, self_len, - from_s, from_len, - 0, self_len, 1, - maxcount); + count = stringlib_count(self_s, self_len, + from_s, from_len, + maxcount); if (count == 0) { /* no matches */ @@ -1798,9 +1702,9 @@ start = self_s; end = self_s + self_len; while (count-- > 0) { - offset = findstring(start, end-start, - from_s, from_len, - 0, end-start, FORWARD); + offset = stringlib_find(start, end-start, + from_s, from_len, + 0); if (offset == -1) break; next = start + offset; @@ -1876,9 +1780,9 @@ self_s = PyByteArray_AS_STRING(self); self_len = PyByteArray_GET_SIZE(self); - offset = findstring(self_s, self_len, - from_s, from_len, - 0, self_len, FORWARD); + offset = stringlib_find(self_s, self_len, + from_s, from_len, + 0); if (offset == -1) { /* No matches; return the original bytes */ return return_self(self); @@ -1898,9 +1802,9 @@ end = result_s + self_len; while ( --maxcount > 0) { - offset = findstring(start, end-start, - from_s, from_len, - 0, end-start, FORWARD); + offset = stringlib_find(start, end-start, + from_s, from_len, + 0); if (offset==-1) break; Py_MEMCPY(start+offset, to_s, from_len); @@ -1993,9 +1897,10 @@ self_s = PyByteArray_AS_STRING(self); self_len = PyByteArray_GET_SIZE(self); - count = countstring(self_s, self_len, - from_s, from_len, - 0, self_len, FORWARD, maxcount); + count = stringlib_count(self_s, self_len, + from_s, from_len, + maxcount); + if (count == 0) { /* no matches, return unchanged */ return return_self(self); @@ -2022,9 +1927,9 @@ start = self_s; end = self_s + self_len; while (count-- > 0) { - offset = findstring(start, end-start, - from_s, from_len, - 0, end-start, FORWARD); + offset = stringlib_find(start, end-start, + from_s, from_len, + 0); if (offset == -1) break; next = start+offset; @@ -2153,123 +2058,6 @@ return res; } - -/* Overallocate the initial list to reduce the number of reallocs for small - split sizes. Eg, "A A A A A A A A A A".split() (10 elements) has three - resizes, to sizes 4, 8, then 16. Most observed string splits are for human - text (roughly 11 words per line) and field delimited data (usually 1-10 - fields). For large strings the split algorithms are bandwidth limited - so increasing the preallocation likely will not improve things.*/ - -#define MAX_PREALLOC 12 - -/* 5 splits gives 6 elements */ -#define PREALLOC_SIZE(maxsplit) \ - (maxsplit >= MAX_PREALLOC ? MAX_PREALLOC : maxsplit+1) - -#define SPLIT_APPEND(data, left, right) \ - str = PyByteArray_FromStringAndSize((data) + (left), \ - (right) - (left)); \ - if (str == NULL) \ - goto onError; \ - if (PyList_Append(list, str)) { \ - Py_DECREF(str); \ - goto onError; \ - } \ - else \ - Py_DECREF(str); - -#define SPLIT_ADD(data, left, right) { \ - str = PyByteArray_FromStringAndSize((data) + (left), \ - (right) - (left)); \ - if (str == NULL) \ - goto onError; \ - if (count < MAX_PREALLOC) { \ - PyList_SET_ITEM(list, count, str); \ - } else { \ - if (PyList_Append(list, str)) { \ - Py_DECREF(str); \ - goto onError; \ - } \ - else \ - Py_DECREF(str); \ - } \ - count++; } - -/* Always force the list to the expected size. */ -#define FIX_PREALLOC_SIZE(list) Py_SIZE(list) = count - - -Py_LOCAL_INLINE(PyObject *) -split_char(const char *s, Py_ssize_t len, char ch, Py_ssize_t maxcount) -{ - register Py_ssize_t i, j, count = 0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - - if (list == NULL) - return NULL; - - i = j = 0; - while ((j < len) && (maxcount-- > 0)) { - for(; j < len; j++) { - /* I found that using memchr makes no difference */ - if (s[j] == ch) { - SPLIT_ADD(s, i, j); - i = j = j + 1; - break; - } - } - } - if (i <= len) { - SPLIT_ADD(s, i, len); - } - FIX_PREALLOC_SIZE(list); - return list; - - onError: - Py_DECREF(list); - return NULL; -} - - -Py_LOCAL_INLINE(PyObject *) -split_whitespace(const char *s, Py_ssize_t len, Py_ssize_t maxcount) -{ - register Py_ssize_t i, j, count = 0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - - if (list == NULL) - return NULL; - - for (i = j = 0; i < len; ) { - /* find a token */ - while (i < len && Py_ISSPACE(s[i])) - i++; - j = i; - while (i < len && !Py_ISSPACE(s[i])) - i++; - if (j < i) { - if (maxcount-- <= 0) - break; - SPLIT_ADD(s, j, i); - while (i < len && Py_ISSPACE(s[i])) - i++; - j = i; - } - } - if (j < len) { - SPLIT_ADD(s, j, len); - } - FIX_PREALLOC_SIZE(list); - return list; - - onError: - Py_DECREF(list); - return NULL; -} - PyDoc_STRVAR(split__doc__, "B.split([sep[, maxsplit]]) -> list of bytearray\n\ \n\ @@ -2281,10 +2069,10 @@ static PyObject * bytearray_split(PyByteArrayObject *self, PyObject *args) { - Py_ssize_t len = PyByteArray_GET_SIZE(self), n, i, j, pos; - Py_ssize_t maxsplit = -1, count = 0; + Py_ssize_t len = PyByteArray_GET_SIZE(self), n; + Py_ssize_t maxsplit = -1; const char *s = PyByteArray_AS_STRING(self), *sub; - PyObject *list, *str, *subobj = Py_None; + PyObject *list, *subobj = Py_None; Py_buffer vsub; if (!PyArg_ParseTuple(args, "|On:split", &subobj, &maxsplit)) @@ -2293,73 +2081,18 @@ maxsplit = PY_SSIZE_T_MAX; if (subobj == Py_None) - return split_whitespace(s, len, maxsplit); + return stringlib_split_whitespace((PyObject*) self, s, len, maxsplit); if (_getbuffer(subobj, &vsub) < 0) return NULL; sub = vsub.buf; n = vsub.len; - if (n == 0) { - PyErr_SetString(PyExc_ValueError, "empty separator"); - PyBuffer_Release(&vsub); - return NULL; - } - if (n == 1) { - list = split_char(s, len, sub[0], maxsplit); - PyBuffer_Release(&vsub); - return list; - } - - list = PyList_New(PREALLOC_SIZE(maxsplit)); - if (list == NULL) { - PyBuffer_Release(&vsub); - return NULL; - } - - i = j = 0; - while (maxsplit-- > 0) { - pos = fastsearch(s+i, len-i, sub, n, FAST_SEARCH); - if (pos < 0) - break; - j = i+pos; - SPLIT_ADD(s, i, j); - i = j + n; - } - SPLIT_ADD(s, i, len); - FIX_PREALLOC_SIZE(list); + list = stringlib_split( + (PyObject*) self, s, len, sub, n, maxsplit + ); PyBuffer_Release(&vsub); return list; - - onError: - Py_DECREF(list); - PyBuffer_Release(&vsub); - return NULL; -} - -/* stringlib's partition shares nullbytes in some cases. - undo this, we don't want the nullbytes to be shared. */ -static PyObject * -make_nullbytes_unique(PyObject *result) -{ - if (result != NULL) { - int i; - assert(PyTuple_Check(result)); - assert(PyTuple_GET_SIZE(result) == 3); - for (i = 0; i < 3; i++) { - if (PyTuple_GET_ITEM(result, i) == (PyObject *)nullbytes) { - PyObject *new = PyByteArray_FromStringAndSize(NULL, 0); - if (new == NULL) { - Py_DECREF(result); - result = NULL; - break; - } - Py_DECREF(nullbytes); - PyTuple_SET_ITEM(result, i, new); - } - } - } - return result; } PyDoc_STRVAR(partition__doc__, @@ -2386,7 +2119,7 @@ ); Py_DECREF(bytesep); - return make_nullbytes_unique(result); + return result; } PyDoc_STRVAR(rpartition__doc__, @@ -2414,81 +2147,7 @@ ); Py_DECREF(bytesep); - return make_nullbytes_unique(result); -} - -Py_LOCAL_INLINE(PyObject *) -rsplit_char(const char *s, Py_ssize_t len, char ch, Py_ssize_t maxcount) -{ - register Py_ssize_t i, j, count=0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - - if (list == NULL) - return NULL; - - i = j = len - 1; - while ((i >= 0) && (maxcount-- > 0)) { - for (; i >= 0; i--) { - if (s[i] == ch) { - SPLIT_ADD(s, i + 1, j + 1); - j = i = i - 1; - break; - } - } - } - if (j >= -1) { - SPLIT_ADD(s, 0, j + 1); - } - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; - - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -Py_LOCAL_INLINE(PyObject *) -rsplit_whitespace(const char *s, Py_ssize_t len, Py_ssize_t maxcount) -{ - register Py_ssize_t i, j, count = 0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - - if (list == NULL) - return NULL; - - for (i = j = len - 1; i >= 0; ) { - /* find a token */ - while (i >= 0 && Py_ISSPACE(s[i])) - i--; - j = i; - while (i >= 0 && !Py_ISSPACE(s[i])) - i--; - if (j > i) { - if (maxcount-- <= 0) - break; - SPLIT_ADD(s, i + 1, j + 1); - while (i >= 0 && Py_ISSPACE(s[i])) - i--; - j = i; - } - } - if (j >= 0) { - SPLIT_ADD(s, 0, j + 1); - } - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; - - return list; - - onError: - Py_DECREF(list); - return NULL; + return result; } PyDoc_STRVAR(rsplit__doc__, @@ -2503,10 +2162,10 @@ static PyObject * bytearray_rsplit(PyByteArrayObject *self, PyObject *args) { - Py_ssize_t len = PyByteArray_GET_SIZE(self), n, j, pos; - Py_ssize_t maxsplit = -1, count = 0; + Py_ssize_t len = PyByteArray_GET_SIZE(self), n; + Py_ssize_t maxsplit = -1; const char *s = PyByteArray_AS_STRING(self), *sub; - PyObject *list, *str, *subobj = Py_None; + PyObject *list, *subobj = Py_None; Py_buffer vsub; if (!PyArg_ParseTuple(args, "|On:rsplit", &subobj, &maxsplit)) @@ -2515,50 +2174,18 @@ maxsplit = PY_SSIZE_T_MAX; if (subobj == Py_None) - return rsplit_whitespace(s, len, maxsplit); + return stringlib_rsplit_whitespace((PyObject*) self, s, len, maxsplit); if (_getbuffer(subobj, &vsub) < 0) return NULL; sub = vsub.buf; n = vsub.len; - if (n == 0) { - PyErr_SetString(PyExc_ValueError, "empty separator"); - PyBuffer_Release(&vsub); - return NULL; - } - else if (n == 1) { - list = rsplit_char(s, len, sub[0], maxsplit); - PyBuffer_Release(&vsub); - return list; - } - - list = PyList_New(PREALLOC_SIZE(maxsplit)); - if (list == NULL) { - PyBuffer_Release(&vsub); - return NULL; - } - - j = len; - - while (maxsplit-- > 0) { - pos = fastsearch(s, j, sub, n, FAST_RSEARCH); - if (pos < 0) - break; - SPLIT_ADD(s, pos + n, j); - j = pos; - } - SPLIT_ADD(s, 0, j); - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; + list = stringlib_rsplit( + (PyObject*) self, s, len, sub, n, maxsplit + ); PyBuffer_Release(&vsub); return list; - -onError: - Py_DECREF(list); - PyBuffer_Release(&vsub); - return NULL; } PyDoc_STRVAR(reverse__doc__, @@ -3026,6 +2653,27 @@ return NULL; } +PyDoc_STRVAR(splitlines__doc__, +"B.splitlines([keepends]) -> list of lines\n\ +\n\ +Return a list of the lines in B, breaking at line boundaries.\n\ +Line breaks are not included in the resulting list unless keepends\n\ +is given and true."); + +static PyObject* +bytearray_splitlines(PyObject *self, PyObject *args) +{ + int keepends = 0; + + if (!PyArg_ParseTuple(args, "|i:splitlines", &keepends)) + return NULL; + + return stringlib_splitlines( + (PyObject*) self, PyByteArray_AS_STRING(self), + PyByteArray_GET_SIZE(self), keepends + ); +} + PyDoc_STRVAR(fromhex_doc, "bytearray.fromhex(string) -> bytearray\n\ \n\ @@ -3209,7 +2857,7 @@ {"rsplit", (PyCFunction)bytearray_rsplit, METH_VARARGS, rsplit__doc__}, {"rstrip", (PyCFunction)bytearray_rstrip, METH_VARARGS, rstrip__doc__}, {"split", (PyCFunction)bytearray_split, METH_VARARGS, split__doc__}, - {"splitlines", (PyCFunction)stringlib_splitlines, METH_VARARGS, + {"splitlines", (PyCFunction)bytearray_splitlines, METH_VARARGS, splitlines__doc__}, {"startswith", (PyCFunction)bytearray_startswith, METH_VARARGS , startswith__doc__}, Modified: python/trunk/Objects/stringlib/README.txt ============================================================================== --- python/trunk/Objects/stringlib/README.txt (original) +++ python/trunk/Objects/stringlib/README.txt Wed Jan 13 08:55:48 2010 @@ -28,3 +28,12 @@ returns the pointer to the character data for the given string object (which must be of the right type) + +int STRINGLIB_CHECK_EXACT(PyObject *) + + returns true if the object is an instance of our type, not a subclass. + +STRINGLIB_MUTABLE + + Must be 0 or 1 to tell the cpp macros in stringlib code if the object + being operated on is mutable or not. Modified: python/trunk/Objects/stringlib/count.h ============================================================================== --- python/trunk/Objects/stringlib/count.h (original) +++ python/trunk/Objects/stringlib/count.h Wed Jan 13 08:55:48 2010 @@ -9,28 +9,22 @@ Py_LOCAL_INLINE(Py_ssize_t) stringlib_count(const STRINGLIB_CHAR* str, Py_ssize_t str_len, - const STRINGLIB_CHAR* sub, Py_ssize_t sub_len) + const STRINGLIB_CHAR* sub, Py_ssize_t sub_len, + Py_ssize_t maxcount) { Py_ssize_t count; if (str_len < 0) return 0; /* start > len(str) */ if (sub_len == 0) - return str_len + 1; + return (str_len < maxcount) ? str_len + 1 : maxcount; - count = fastsearch(str, str_len, sub, sub_len, FAST_COUNT); + count = fastsearch(str, str_len, sub, sub_len, maxcount, FAST_COUNT); if (count < 0) - count = 0; /* no match */ + return 0; /* no match */ return count; } #endif - -/* -Local variables: -c-basic-offset: 4 -indent-tabs-mode: nil -End: -*/ Modified: python/trunk/Objects/stringlib/ctype.h ============================================================================== --- python/trunk/Objects/stringlib/ctype.h (original) +++ python/trunk/Objects/stringlib/ctype.h Wed Jan 13 08:55:48 2010 @@ -107,4 +107,3 @@ STRINGLIB_LEN(self)); return newobj; } - Modified: python/trunk/Objects/stringlib/fastsearch.h ============================================================================== --- python/trunk/Objects/stringlib/fastsearch.h (original) +++ python/trunk/Objects/stringlib/fastsearch.h Wed Jan 13 08:55:48 2010 @@ -18,10 +18,13 @@ #define FAST_SEARCH 1 #define FAST_RSEARCH 2 +#define BLOOM_ADD(mask, ch) ((mask |= (1 << ((ch) & (LONG_BIT - 1))))) +#define BLOOM(mask, ch) ((mask & (1 << ((ch) & (LONG_BIT - 1))))) + Py_LOCAL_INLINE(Py_ssize_t) fastsearch(const STRINGLIB_CHAR* s, Py_ssize_t n, const STRINGLIB_CHAR* p, Py_ssize_t m, - int mode) + Py_ssize_t maxcount, int mode) { long mask; Py_ssize_t skip, count = 0; @@ -29,7 +32,7 @@ w = n - m; - if (w < 0) + if (w < 0 || (mode == FAST_COUNT && maxcount == 0)) return -1; /* look for special cases */ @@ -39,8 +42,11 @@ /* use special case for 1-character strings */ if (mode == FAST_COUNT) { for (i = 0; i < n; i++) - if (s[i] == p[0]) + if (s[i] == p[0]) { count++; + if (count == maxcount) + return maxcount; + } return count; } else if (mode == FAST_SEARCH) { for (i = 0; i < n; i++) @@ -56,19 +62,20 @@ mlast = m - 1; skip = mlast - 1; + mask = 0; if (mode != FAST_RSEARCH) { /* create compressed boyer-moore delta 1 table */ /* process pattern[:-1] */ - for (mask = i = 0; i < mlast; i++) { - mask |= (1 << (p[i] & 0x1F)); + for (i = 0; i < mlast; i++) { + BLOOM_ADD(mask, p[i]); if (p[i] == p[mlast]) skip = mlast - i - 1; } /* process pattern[-1] outside the loop */ - mask |= (1 << (p[mlast] & 0x1F)); + BLOOM_ADD(mask, p[mlast]); for (i = 0; i <= w; i++) { /* note: using mlast in the skip path slows things down on x86 */ @@ -82,17 +89,19 @@ if (mode != FAST_COUNT) return i; count++; + if (count == maxcount) + return maxcount; i = i + mlast; continue; } /* miss: check if next character is part of pattern */ - if (!(mask & (1 << (s[i+m] & 0x1F)))) + if (!BLOOM(mask, s[i+m])) i = i + m; else i = i + skip; } else { /* skip: check if next character is part of pattern */ - if (!(mask & (1 << (s[i+m] & 0x1F)))) + if (!BLOOM(mask, s[i+m])) i = i + m; } } @@ -101,10 +110,10 @@ /* create compressed boyer-moore delta 1 table */ /* process pattern[0] outside the loop */ - mask = (1 << (p[0] & 0x1F)); + BLOOM_ADD(mask, p[0]); /* process pattern[:0:-1] */ for (i = mlast; i > 0; i--) { - mask |= (1 << (p[i] & 0x1F)); + BLOOM_ADD(mask, p[i]); if (p[i] == p[0]) skip = i - 1; } @@ -119,13 +128,13 @@ /* got a match! */ return i; /* miss: check if previous character is part of pattern */ - if (!(mask & (1 << (s[i-1] & 0x1F)))) + if (!BLOOM(mask, s[i-1])) i = i - m; else i = i - skip; } else { /* skip: check if previous character is part of pattern */ - if (!(mask & (1 << (s[i-1] & 0x1F)))) + if (!BLOOM(mask, s[i-1])) i = i - m; } } @@ -137,10 +146,3 @@ } #endif - -/* -Local variables: -c-basic-offset: 4 -indent-tabs-mode: nil -End: -*/ Modified: python/trunk/Objects/stringlib/find.h ============================================================================== --- python/trunk/Objects/stringlib/find.h (original) +++ python/trunk/Objects/stringlib/find.h Wed Jan 13 08:55:48 2010 @@ -19,7 +19,7 @@ if (sub_len == 0) return offset; - pos = fastsearch(str, str_len, sub, sub_len, FAST_SEARCH); + pos = fastsearch(str, str_len, sub, sub_len, -1, FAST_SEARCH); if (pos >= 0) pos += offset; @@ -39,7 +39,7 @@ if (sub_len == 0) return str_len + offset; - pos = fastsearch(str, str_len, sub, sub_len, FAST_RSEARCH); + pos = fastsearch(str, str_len, sub, sub_len, -1, FAST_RSEARCH); if (pos >= 0) pos += offset; @@ -47,22 +47,27 @@ return pos; } +/* helper macro to fixup start/end slice values */ +#define ADJUST_INDICES(start, end, len) \ + if (end > len) \ + end = len; \ + else if (end < 0) { \ + end += len; \ + if (end < 0) \ + end = 0; \ + } \ + if (start < 0) { \ + start += len; \ + if (start < 0) \ + start = 0; \ + } + Py_LOCAL_INLINE(Py_ssize_t) stringlib_find_slice(const STRINGLIB_CHAR* str, Py_ssize_t str_len, const STRINGLIB_CHAR* sub, Py_ssize_t sub_len, Py_ssize_t start, Py_ssize_t end) { - if (start < 0) - start += str_len; - if (start < 0) - start = 0; - if (end > str_len) - end = str_len; - if (end < 0) - end += str_len; - if (end < 0) - end = 0; - + ADJUST_INDICES(start, end, str_len); return stringlib_find(str + start, end - start, sub, sub_len, start); } @@ -71,21 +76,11 @@ const STRINGLIB_CHAR* sub, Py_ssize_t sub_len, Py_ssize_t start, Py_ssize_t end) { - if (start < 0) - start += str_len; - if (start < 0) - start = 0; - if (end > str_len) - end = str_len; - if (end < 0) - end += str_len; - if (end < 0) - end = 0; - + ADJUST_INDICES(start, end, str_len); return stringlib_rfind(str + start, end - start, sub, sub_len, start); } -#if defined(STRINGLIB_STR) && !defined(FROM_BYTEARRAY) +#ifdef STRINGLIB_WANT_CONTAINS_OBJ Py_LOCAL_INLINE(int) stringlib_contains_obj(PyObject* str, PyObject* sub) @@ -96,9 +91,9 @@ ) != -1; } -#endif /* STRINGLIB_STR */ +#endif /* STRINGLIB_WANT_CONTAINS_OBJ */ -#ifdef FROM_UNICODE +#if STRINGLIB_IS_UNICODE /* This function is a helper for the "find" family (find, rfind, index, @@ -146,13 +141,6 @@ return 1; } -#endif /* FROM_UNICODE */ +#endif /* STRINGLIB_IS_UNICODE */ #endif /* STRINGLIB_FIND_H */ - -/* -Local variables: -c-basic-offset: 4 -indent-tabs-mode: nil -End: -*/ Modified: python/trunk/Objects/stringlib/partition.h ============================================================================== --- python/trunk/Objects/stringlib/partition.h (original) +++ python/trunk/Objects/stringlib/partition.h Wed Jan 13 08:55:48 2010 @@ -8,33 +8,39 @@ #endif Py_LOCAL_INLINE(PyObject*) -stringlib_partition( - PyObject* str_obj, const STRINGLIB_CHAR* str, Py_ssize_t str_len, - PyObject* sep_obj, const STRINGLIB_CHAR* sep, Py_ssize_t sep_len - ) +stringlib_partition(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + PyObject* sep_obj, + const STRINGLIB_CHAR* sep, Py_ssize_t sep_len) { PyObject* out; Py_ssize_t pos; if (sep_len == 0) { PyErr_SetString(PyExc_ValueError, "empty separator"); - return NULL; + return NULL; } out = PyTuple_New(3); if (!out) - return NULL; + return NULL; - pos = fastsearch(str, str_len, sep, sep_len, FAST_SEARCH); + pos = fastsearch(str, str_len, sep, sep_len, -1, FAST_SEARCH); if (pos < 0) { - Py_INCREF(str_obj); - PyTuple_SET_ITEM(out, 0, (PyObject*) str_obj); - Py_INCREF(STRINGLIB_EMPTY); - PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY); - Py_INCREF(STRINGLIB_EMPTY); - PyTuple_SET_ITEM(out, 2, (PyObject*) STRINGLIB_EMPTY); - return out; +#if STRINGLIB_MUTABLE + PyTuple_SET_ITEM(out, 0, STRINGLIB_NEW(str, str_len)); + PyTuple_SET_ITEM(out, 1, STRINGLIB_NEW(NULL, 0)); + PyTuple_SET_ITEM(out, 2, STRINGLIB_NEW(NULL, 0)); +#else + Py_INCREF(str_obj); + PyTuple_SET_ITEM(out, 0, (PyObject*) str_obj); + Py_INCREF(STRINGLIB_EMPTY); + PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY); + Py_INCREF(STRINGLIB_EMPTY); + PyTuple_SET_ITEM(out, 2, (PyObject*) STRINGLIB_EMPTY); +#endif + return out; } PyTuple_SET_ITEM(out, 0, STRINGLIB_NEW(str, pos)); @@ -44,41 +50,47 @@ PyTuple_SET_ITEM(out, 2, STRINGLIB_NEW(str + pos, str_len - pos)); if (PyErr_Occurred()) { - Py_DECREF(out); - return NULL; + Py_DECREF(out); + return NULL; } return out; } Py_LOCAL_INLINE(PyObject*) -stringlib_rpartition( - PyObject* str_obj, const STRINGLIB_CHAR* str, Py_ssize_t str_len, - PyObject* sep_obj, const STRINGLIB_CHAR* sep, Py_ssize_t sep_len - ) +stringlib_rpartition(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + PyObject* sep_obj, + const STRINGLIB_CHAR* sep, Py_ssize_t sep_len) { PyObject* out; Py_ssize_t pos; if (sep_len == 0) { PyErr_SetString(PyExc_ValueError, "empty separator"); - return NULL; + return NULL; } out = PyTuple_New(3); if (!out) - return NULL; + return NULL; - pos = fastsearch(str, str_len, sep, sep_len, FAST_RSEARCH); + pos = fastsearch(str, str_len, sep, sep_len, -1, FAST_RSEARCH); if (pos < 0) { - Py_INCREF(STRINGLIB_EMPTY); - PyTuple_SET_ITEM(out, 0, (PyObject*) STRINGLIB_EMPTY); - Py_INCREF(STRINGLIB_EMPTY); - PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY); - Py_INCREF(str_obj); - PyTuple_SET_ITEM(out, 2, (PyObject*) str_obj); - return out; +#if STRINGLIB_MUTABLE + PyTuple_SET_ITEM(out, 0, STRINGLIB_NEW(NULL, 0)); + PyTuple_SET_ITEM(out, 1, STRINGLIB_NEW(NULL, 0)); + PyTuple_SET_ITEM(out, 2, STRINGLIB_NEW(str, str_len)); +#else + Py_INCREF(STRINGLIB_EMPTY); + PyTuple_SET_ITEM(out, 0, (PyObject*) STRINGLIB_EMPTY); + Py_INCREF(STRINGLIB_EMPTY); + PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY); + Py_INCREF(str_obj); + PyTuple_SET_ITEM(out, 2, (PyObject*) str_obj); +#endif + return out; } PyTuple_SET_ITEM(out, 0, STRINGLIB_NEW(str, pos)); @@ -88,18 +100,11 @@ PyTuple_SET_ITEM(out, 2, STRINGLIB_NEW(str + pos, str_len - pos)); if (PyErr_Occurred()) { - Py_DECREF(out); - return NULL; + Py_DECREF(out); + return NULL; } return out; } #endif - -/* -Local variables: -c-basic-offset: 4 -indent-tabs-mode: nil -End: -*/ Added: python/trunk/Objects/stringlib/split.h ============================================================================== --- (empty file) +++ python/trunk/Objects/stringlib/split.h Wed Jan 13 08:55:48 2010 @@ -0,0 +1,394 @@ +/* stringlib: split implementation */ + +#ifndef STRINGLIB_SPLIT_H +#define STRINGLIB_SPLIT_H + +#ifndef STRINGLIB_FASTSEARCH_H +#error must include "stringlib/fastsearch.h" before including this module +#endif + +/* Overallocate the initial list to reduce the number of reallocs for small + split sizes. Eg, "A A A A A A A A A A".split() (10 elements) has three + resizes, to sizes 4, 8, then 16. Most observed string splits are for human + text (roughly 11 words per line) and field delimited data (usually 1-10 + fields). For large strings the split algorithms are bandwidth limited + so increasing the preallocation likely will not improve things.*/ + +#define MAX_PREALLOC 12 + +/* 5 splits gives 6 elements */ +#define PREALLOC_SIZE(maxsplit) \ + (maxsplit >= MAX_PREALLOC ? MAX_PREALLOC : maxsplit+1) + +#define SPLIT_APPEND(data, left, right) \ + sub = STRINGLIB_NEW((data) + (left), \ + (right) - (left)); \ + if (sub == NULL) \ + goto onError; \ + if (PyList_Append(list, sub)) { \ + Py_DECREF(sub); \ + goto onError; \ + } \ + else \ + Py_DECREF(sub); + +#define SPLIT_ADD(data, left, right) { \ + sub = STRINGLIB_NEW((data) + (left), \ + (right) - (left)); \ + if (sub == NULL) \ + goto onError; \ + if (count < MAX_PREALLOC) { \ + PyList_SET_ITEM(list, count, sub); \ + } else { \ + if (PyList_Append(list, sub)) { \ + Py_DECREF(sub); \ + goto onError; \ + } \ + else \ + Py_DECREF(sub); \ + } \ + count++; } + + +/* Always force the list to the expected size. */ +#define FIX_PREALLOC_SIZE(list) Py_SIZE(list) = count + +Py_LOCAL_INLINE(PyObject *) +stringlib_split_whitespace(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + Py_ssize_t maxcount) +{ + Py_ssize_t i, j, count=0; + PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); + PyObject *sub; + + if (list == NULL) + return NULL; + + i = j = 0; + while (maxcount-- > 0) { + while (i < str_len && STRINGLIB_ISSPACE(str[i])) + i++; + if (i == str_len) break; + j = i; i++; + while (i < str_len && !STRINGLIB_ISSPACE(str[i])) + i++; +#ifndef STRINGLIB_MUTABLE + if (j == 0 && i == str_len && STRINGLIB_CHECK_EXACT(str_obj)) { + /* No whitespace in str_obj, so just use it as list[0] */ + Py_INCREF(str_obj); + PyList_SET_ITEM(list, 0, (PyObject *)str_obj); + count++; + break; + } +#endif + SPLIT_ADD(str, j, i); + } + + if (i < str_len) { + /* Only occurs when maxcount was reached */ + /* Skip any remaining whitespace and copy to end of string */ + while (i < str_len && STRINGLIB_ISSPACE(str[i])) + i++; + if (i != str_len) + SPLIT_ADD(str, i, str_len); + } + FIX_PREALLOC_SIZE(list); + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +Py_LOCAL_INLINE(PyObject *) +stringlib_split_char(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + const STRINGLIB_CHAR ch, + Py_ssize_t maxcount) +{ + Py_ssize_t i, j, count=0; + PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); + PyObject *sub; + + if (list == NULL) + return NULL; + + i = j = 0; + while ((j < str_len) && (maxcount-- > 0)) { + for(; j < str_len; j++) { + /* I found that using memchr makes no difference */ + if (str[j] == ch) { + SPLIT_ADD(str, i, j); + i = j = j + 1; + break; + } + } + } +#ifndef STRINGLIB_MUTABLE + if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) { + /* ch not in str_obj, so just use str_obj as list[0] */ + Py_INCREF(str_obj); + PyList_SET_ITEM(list, 0, (PyObject *)str_obj); + count++; + } else +#endif + if (i <= str_len) { + SPLIT_ADD(str, i, str_len); + } + FIX_PREALLOC_SIZE(list); + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +Py_LOCAL_INLINE(PyObject *) +stringlib_split(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + const STRINGLIB_CHAR* sep, Py_ssize_t sep_len, + Py_ssize_t maxcount) +{ + Py_ssize_t i, j, pos, count=0; + PyObject *list, *sub; + + if (sep_len == 0) { + PyErr_SetString(PyExc_ValueError, "empty separator"); + return NULL; + } + else if (sep_len == 1) + return stringlib_split_char(str_obj, str, str_len, sep[0], maxcount); + + list = PyList_New(PREALLOC_SIZE(maxcount)); + if (list == NULL) + return NULL; + + i = j = 0; + while (maxcount-- > 0) { + pos = fastsearch(str+i, str_len-i, sep, sep_len, -1, FAST_SEARCH); + if (pos < 0) + break; + j = i + pos; + SPLIT_ADD(str, i, j); + i = j + sep_len; + } +#ifndef STRINGLIB_MUTABLE + if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) { + /* No match in str_obj, so just use it as list[0] */ + Py_INCREF(str_obj); + PyList_SET_ITEM(list, 0, (PyObject *)str_obj); + count++; + } else +#endif + { + SPLIT_ADD(str, i, str_len); + } + FIX_PREALLOC_SIZE(list); + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +Py_LOCAL_INLINE(PyObject *) +stringlib_rsplit_whitespace(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + Py_ssize_t maxcount) +{ + Py_ssize_t i, j, count=0; + PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); + PyObject *sub; + + if (list == NULL) + return NULL; + + i = j = str_len - 1; + while (maxcount-- > 0) { + while (i >= 0 && STRINGLIB_ISSPACE(str[i])) + i--; + if (i < 0) break; + j = i; i--; + while (i >= 0 && !STRINGLIB_ISSPACE(str[i])) + i--; +#ifndef STRINGLIB_MUTABLE + if (j == str_len - 1 && i < 0 && STRINGLIB_CHECK_EXACT(str_obj)) { + /* No whitespace in str_obj, so just use it as list[0] */ + Py_INCREF(str_obj); + PyList_SET_ITEM(list, 0, (PyObject *)str_obj); + count++; + break; + } +#endif + SPLIT_ADD(str, i + 1, j + 1); + } + + if (i >= 0) { + /* Only occurs when maxcount was reached */ + /* Skip any remaining whitespace and copy to beginning of string */ + while (i >= 0 && STRINGLIB_ISSPACE(str[i])) + i--; + if (i >= 0) + SPLIT_ADD(str, 0, i + 1); + } + FIX_PREALLOC_SIZE(list); + if (PyList_Reverse(list) < 0) + goto onError; + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +Py_LOCAL_INLINE(PyObject *) +stringlib_rsplit_char(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + const STRINGLIB_CHAR ch, + Py_ssize_t maxcount) +{ + Py_ssize_t i, j, count=0; + PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); + PyObject *sub; + + if (list == NULL) + return NULL; + + i = j = str_len - 1; + while ((i >= 0) && (maxcount-- > 0)) { + for(; i >= 0; i--) { + if (str[i] == ch) { + SPLIT_ADD(str, i + 1, j + 1); + j = i = i - 1; + break; + } + } + } +#ifndef STRINGLIB_MUTABLE + if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) { + /* ch not in str_obj, so just use str_obj as list[0] */ + Py_INCREF(str_obj); + PyList_SET_ITEM(list, 0, (PyObject *)str_obj); + count++; + } else +#endif + if (j >= -1) { + SPLIT_ADD(str, 0, j + 1); + } + FIX_PREALLOC_SIZE(list); + if (PyList_Reverse(list) < 0) + goto onError; + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +Py_LOCAL_INLINE(PyObject *) +stringlib_rsplit(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + const STRINGLIB_CHAR* sep, Py_ssize_t sep_len, + Py_ssize_t maxcount) +{ + Py_ssize_t j, pos, count=0; + PyObject *list, *sub; + + if (sep_len == 0) { + PyErr_SetString(PyExc_ValueError, "empty separator"); + return NULL; + } + else if (sep_len == 1) + return stringlib_rsplit_char(str_obj, str, str_len, sep[0], maxcount); + + list = PyList_New(PREALLOC_SIZE(maxcount)); + if (list == NULL) + return NULL; + + j = str_len; + while (maxcount-- > 0) { + pos = fastsearch(str, j, sep, sep_len, -1, FAST_RSEARCH); + if (pos < 0) + break; + SPLIT_ADD(str, pos + sep_len, j); + j = pos; + } +#ifndef STRINGLIB_MUTABLE + if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) { + /* No match in str_obj, so just use it as list[0] */ + Py_INCREF(str_obj); + PyList_SET_ITEM(list, 0, (PyObject *)str_obj); + count++; + } else +#endif + { + SPLIT_ADD(str, 0, j); + } + FIX_PREALLOC_SIZE(list); + if (PyList_Reverse(list) < 0) + goto onError; + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +Py_LOCAL_INLINE(PyObject *) +stringlib_splitlines(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + int keepends) +{ + /* This does not use the preallocated list because splitlines is + usually run with hundreds of newlines. The overhead of + switching between PyList_SET_ITEM and append causes about a + 2-3% slowdown for that common case. A smarter implementation + could move the if check out, so the SET_ITEMs are done first + and the appends only done when the prealloc buffer is full. + That's too much work for little gain.*/ + + register Py_ssize_t i; + register Py_ssize_t j; + PyObject *list = PyList_New(0); + PyObject *sub; + + if (list == NULL) + return NULL; + + for (i = j = 0; i < str_len; ) { + Py_ssize_t eol; + + /* Find a line and append it */ + while (i < str_len && !STRINGLIB_ISLINEBREAK(str[i])) + i++; + + /* Skip the line break reading CRLF as one line break */ + eol = i; + if (i < str_len) { + if (str[i] == '\r' && i + 1 < str_len && str[i+1] == '\n') + i += 2; + else + i++; + if (keepends) + eol = i; + } +#ifndef STRINGLIB_MUTABLE + if (j == 0 && eol == str_len && STRINGLIB_CHECK_EXACT(str_obj)) { + /* No linebreak in str_obj, so just use it as list[0] */ + if (PyList_Append(list, str_obj)) + goto onError; + break; + } +#endif + SPLIT_APPEND(str, j, eol); + j = i; + } + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +#endif Modified: python/trunk/Objects/stringlib/stringdefs.h ============================================================================== --- python/trunk/Objects/stringlib/stringdefs.h (original) +++ python/trunk/Objects/stringlib/stringdefs.h Wed Jan 13 08:55:48 2010 @@ -11,6 +11,8 @@ #define STRINGLIB_TYPE_NAME "string" #define STRINGLIB_PARSE_CODE "S" #define STRINGLIB_EMPTY nullstring +#define STRINGLIB_ISSPACE Py_ISSPACE +#define STRINGLIB_ISLINEBREAK(x) ((x == '\n') || (x == '\r')) #define STRINGLIB_ISDECIMAL(x) ((x >= '0') && (x <= '9')) #define STRINGLIB_TODECIMAL(x) (STRINGLIB_ISDECIMAL(x) ? (x - '0') : -1) #define STRINGLIB_TOUPPER Py_TOUPPER @@ -21,8 +23,11 @@ #define STRINGLIB_NEW PyString_FromStringAndSize #define STRINGLIB_RESIZE _PyString_Resize #define STRINGLIB_CHECK PyString_Check +#define STRINGLIB_CHECK_EXACT PyString_CheckExact #define STRINGLIB_TOSTR PyObject_Str #define STRINGLIB_GROUPING _PyString_InsertThousandsGrouping #define STRINGLIB_GROUPING_LOCALE _PyString_InsertThousandsGroupingLocale +#define STRINGLIB_WANT_CONTAINS_OBJ 1 + #endif /* !STRINGLIB_STRINGDEFS_H */ Modified: python/trunk/Objects/stringlib/transmogrify.h ============================================================================== --- python/trunk/Objects/stringlib/transmogrify.h (original) +++ python/trunk/Objects/stringlib/transmogrify.h Wed Jan 13 08:55:48 2010 @@ -1,13 +1,6 @@ /* NOTE: this API is -ONLY- for use with single byte character strings. */ /* Do not use it with Unicode. */ -#include "bytes_methods.h" - -#ifndef STRINGLIB_MUTABLE -#warning "STRINGLIB_MUTABLE not defined before #include, assuming 0" -#define STRINGLIB_MUTABLE 0 -#endif - /* the more complicated methods. parts of these should be pulled out into the shared code in bytes_methods.c to cut down on duplicate code bloat. */ @@ -269,87 +262,3 @@ return (PyObject*) s; } - - -#define _STRINGLIB_SPLIT_APPEND(data, left, right) \ - str = STRINGLIB_NEW((data) + (left), \ - (right) - (left)); \ - if (str == NULL) \ - goto onError; \ - if (PyList_Append(list, str)) { \ - Py_DECREF(str); \ - goto onError; \ - } \ - else \ - Py_DECREF(str); - -PyDoc_STRVAR(splitlines__doc__, -"B.splitlines([keepends]) -> list of lines\n\ -\n\ -Return a list of the lines in B, breaking at line boundaries.\n\ -Line breaks are not included in the resulting list unless keepends\n\ -is given and true."); - -static PyObject* -stringlib_splitlines(PyObject *self, PyObject *args) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len; - int keepends = 0; - PyObject *list; - PyObject *str; - char *data; - - if (!PyArg_ParseTuple(args, "|i:splitlines", &keepends)) - return NULL; - - data = STRINGLIB_STR(self); - len = STRINGLIB_LEN(self); - - /* This does not use the preallocated list because splitlines is - usually run with hundreds of newlines. The overhead of - switching between PyList_SET_ITEM and append causes about a - 2-3% slowdown for that common case. A smarter implementation - could move the if check out, so the SET_ITEMs are done first - and the appends only done when the prealloc buffer is full. - That's too much work for little gain.*/ - - list = PyList_New(0); - if (!list) - goto onError; - - for (i = j = 0; i < len; ) { - Py_ssize_t eol; - - /* Find a line and append it */ - while (i < len && data[i] != '\n' && data[i] != '\r') - i++; - - /* Skip the line break reading CRLF as one line break */ - eol = i; - if (i < len) { - if (data[i] == '\r' && i + 1 < len && - data[i+1] == '\n') - i += 2; - else - i++; - if (keepends) - eol = i; - } - _STRINGLIB_SPLIT_APPEND(data, j, eol); - j = i; - } - if (j < len) { - _STRINGLIB_SPLIT_APPEND(data, j, len); - } - - return list; - - onError: - Py_XDECREF(list); - return NULL; -} - -#undef _STRINGLIB_SPLIT_APPEND - Modified: python/trunk/Objects/stringlib/unicodedefs.h ============================================================================== --- python/trunk/Objects/stringlib/unicodedefs.h (original) +++ python/trunk/Objects/stringlib/unicodedefs.h Wed Jan 13 08:55:48 2010 @@ -11,6 +11,8 @@ #define STRINGLIB_TYPE_NAME "unicode" #define STRINGLIB_PARSE_CODE "U" #define STRINGLIB_EMPTY unicode_empty +#define STRINGLIB_ISSPACE Py_UNICODE_ISSPACE +#define STRINGLIB_ISLINEBREAK BLOOM_LINEBREAK #define STRINGLIB_ISDECIMAL Py_UNICODE_ISDECIMAL #define STRINGLIB_TODECIMAL Py_UNICODE_TODECIMAL #define STRINGLIB_TOUPPER Py_UNICODE_TOUPPER @@ -21,6 +23,7 @@ #define STRINGLIB_NEW PyUnicode_FromUnicode #define STRINGLIB_RESIZE PyUnicode_Resize #define STRINGLIB_CHECK PyUnicode_Check +#define STRINGLIB_CHECK_EXACT PyUnicode_CheckExact #define STRINGLIB_GROUPING _PyUnicode_InsertThousandsGrouping #if PY_VERSION_HEX < 0x03000000 Modified: python/trunk/Objects/stringobject.c ============================================================================== --- python/trunk/Objects/stringobject.c (original) +++ python/trunk/Objects/stringobject.c Wed Jan 13 08:55:48 2010 @@ -841,6 +841,7 @@ #include "stringlib/count.h" #include "stringlib/find.h" #include "stringlib/partition.h" +#include "stringlib/split.h" #define _Py_InsertThousandsGrouping _PyString_InsertThousandsGrouping #include "stringlib/localeutil.h" @@ -1425,145 +1426,6 @@ #define STRIPNAME(i) (stripformat[i]+3) - -/* Don't call if length < 2 */ -#define Py_STRING_MATCH(target, offset, pattern, length) \ - (target[offset] == pattern[0] && \ - target[offset+length-1] == pattern[length-1] && \ - !memcmp(target+offset+1, pattern+1, length-2) ) - - -/* Overallocate the initial list to reduce the number of reallocs for small - split sizes. Eg, "A A A A A A A A A A".split() (10 elements) has three - resizes, to sizes 4, 8, then 16. Most observed string splits are for human - text (roughly 11 words per line) and field delimited data (usually 1-10 - fields). For large strings the split algorithms are bandwidth limited - so increasing the preallocation likely will not improve things.*/ - -#define MAX_PREALLOC 12 - -/* 5 splits gives 6 elements */ -#define PREALLOC_SIZE(maxsplit) \ - (maxsplit >= MAX_PREALLOC ? MAX_PREALLOC : maxsplit+1) - -#define SPLIT_APPEND(data, left, right) \ - str = PyString_FromStringAndSize((data) + (left), \ - (right) - (left)); \ - if (str == NULL) \ - goto onError; \ - if (PyList_Append(list, str)) { \ - Py_DECREF(str); \ - goto onError; \ - } \ - else \ - Py_DECREF(str); - -#define SPLIT_ADD(data, left, right) { \ - str = PyString_FromStringAndSize((data) + (left), \ - (right) - (left)); \ - if (str == NULL) \ - goto onError; \ - if (count < MAX_PREALLOC) { \ - PyList_SET_ITEM(list, count, str); \ - } else { \ - if (PyList_Append(list, str)) { \ - Py_DECREF(str); \ - goto onError; \ - } \ - else \ - Py_DECREF(str); \ - } \ - count++; } - -/* Always force the list to the expected size. */ -#define FIX_PREALLOC_SIZE(list) Py_SIZE(list) = count - -#define SKIP_SPACE(s, i, len) { while (i=0 && isspace(Py_CHARMASK(s[i]))) i--; } -#define RSKIP_NONSPACE(s, i) { while (i>=0 && !isspace(Py_CHARMASK(s[i]))) i--; } - -Py_LOCAL_INLINE(PyObject *) -split_whitespace(PyStringObject *self, Py_ssize_t len, Py_ssize_t maxsplit) -{ - const char *s = PyString_AS_STRING(self); - Py_ssize_t i, j, count=0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxsplit)); - - if (list == NULL) - return NULL; - - i = j = 0; - - while (maxsplit-- > 0) { - SKIP_SPACE(s, i, len); - if (i==len) break; - j = i; i++; - SKIP_NONSPACE(s, i, len); - if (j == 0 && i == len && PyString_CheckExact(self)) { - /* No whitespace in self, so just use it as list[0] */ - Py_INCREF(self); - PyList_SET_ITEM(list, 0, (PyObject *)self); - count++; - break; - } - SPLIT_ADD(s, j, i); - } - - if (i < len) { - /* Only occurs when maxsplit was reached */ - /* Skip any remaining whitespace and copy to end of string */ - SKIP_SPACE(s, i, len); - if (i != len) - SPLIT_ADD(s, i, len); - } - FIX_PREALLOC_SIZE(list); - return list; - onError: - Py_DECREF(list); - return NULL; -} - -Py_LOCAL_INLINE(PyObject *) -split_char(PyStringObject *self, Py_ssize_t len, char ch, Py_ssize_t maxcount) -{ - const char *s = PyString_AS_STRING(self); - register Py_ssize_t i, j, count=0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - - if (list == NULL) - return NULL; - - i = j = 0; - while ((j < len) && (maxcount-- > 0)) { - for(; j list of strings\n\ \n\ @@ -1576,17 +1438,17 @@ static PyObject * string_split(PyStringObject *self, PyObject *args) { - Py_ssize_t len = PyString_GET_SIZE(self), n, i, j, pos; - Py_ssize_t maxsplit = -1, count=0; + Py_ssize_t len = PyString_GET_SIZE(self), n; + Py_ssize_t maxsplit = -1; const char *s = PyString_AS_STRING(self), *sub; - PyObject *list, *str, *subobj = Py_None; + PyObject *subobj = Py_None; if (!PyArg_ParseTuple(args, "|On:split", &subobj, &maxsplit)) return NULL; if (maxsplit < 0) maxsplit = PY_SSIZE_T_MAX; if (subobj == Py_None) - return split_whitespace(self, len, maxsplit); + return stringlib_split_whitespace((PyObject*) self, s, len, maxsplit); if (PyString_Check(subobj)) { sub = PyString_AS_STRING(subobj); n = PyString_GET_SIZE(subobj); @@ -1598,33 +1460,7 @@ else if (PyObject_AsCharBuffer(subobj, &sub, &n)) return NULL; - if (n == 0) { - PyErr_SetString(PyExc_ValueError, "empty separator"); - return NULL; - } - else if (n == 1) - return split_char(self, len, sub[0], maxsplit); - - list = PyList_New(PREALLOC_SIZE(maxsplit)); - if (list == NULL) - return NULL; - - i = j = 0; - while (maxsplit-- > 0) { - pos = fastsearch(s+i, len-i, sub, n, FAST_SEARCH); - if (pos < 0) - break; - j = i + pos; - SPLIT_ADD(s, i, j); - i = j + n; - } - SPLIT_ADD(s, i, len); - FIX_PREALLOC_SIZE(list); - return list; - - onError: - Py_DECREF(list); - return NULL; + return stringlib_split((PyObject*) self, s, len, sub, n, maxsplit); } PyDoc_STRVAR(partition__doc__, @@ -1689,90 +1525,6 @@ ); } -Py_LOCAL_INLINE(PyObject *) -rsplit_whitespace(PyStringObject *self, Py_ssize_t len, Py_ssize_t maxsplit) -{ - const char *s = PyString_AS_STRING(self); - Py_ssize_t i, j, count=0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxsplit)); - - if (list == NULL) - return NULL; - - i = j = len-1; - - while (maxsplit-- > 0) { - RSKIP_SPACE(s, i); - if (i<0) break; - j = i; i--; - RSKIP_NONSPACE(s, i); - if (j == len-1 && i < 0 && PyString_CheckExact(self)) { - /* No whitespace in self, so just use it as list[0] */ - Py_INCREF(self); - PyList_SET_ITEM(list, 0, (PyObject *)self); - count++; - break; - } - SPLIT_ADD(s, i + 1, j + 1); - } - if (i >= 0) { - /* Only occurs when maxsplit was reached */ - /* Skip any remaining whitespace and copy to beginning of string */ - RSKIP_SPACE(s, i); - if (i >= 0) - SPLIT_ADD(s, 0, i + 1); - - } - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; - return list; - onError: - Py_DECREF(list); - return NULL; -} - -Py_LOCAL_INLINE(PyObject *) -rsplit_char(PyStringObject *self, Py_ssize_t len, char ch, Py_ssize_t maxcount) -{ - const char *s = PyString_AS_STRING(self); - register Py_ssize_t i, j, count=0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - - if (list == NULL) - return NULL; - - i = j = len - 1; - while ((i >= 0) && (maxcount-- > 0)) { - for (; i >= 0; i--) { - if (s[i] == ch) { - SPLIT_ADD(s, i + 1, j + 1); - j = i = i - 1; - break; - } - } - } - if (i < 0 && count == 0 && PyString_CheckExact(self)) { - /* ch not in self, so just use self as list[0] */ - Py_INCREF(self); - PyList_SET_ITEM(list, 0, (PyObject *)self); - count++; - } - else if (j >= -1) { - SPLIT_ADD(s, 0, j + 1); - } - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; - return list; - - onError: - Py_DECREF(list); - return NULL; -} - PyDoc_STRVAR(rsplit__doc__, "S.rsplit([sep [,maxsplit]]) -> list of strings\n\ \n\ @@ -1785,17 +1537,17 @@ static PyObject * string_rsplit(PyStringObject *self, PyObject *args) { - Py_ssize_t len = PyString_GET_SIZE(self), n, j, pos; - Py_ssize_t maxsplit = -1, count=0; + Py_ssize_t len = PyString_GET_SIZE(self), n; + Py_ssize_t maxsplit = -1; const char *s = PyString_AS_STRING(self), *sub; - PyObject *list, *str, *subobj = Py_None; + PyObject *subobj = Py_None; if (!PyArg_ParseTuple(args, "|On:rsplit", &subobj, &maxsplit)) return NULL; if (maxsplit < 0) maxsplit = PY_SSIZE_T_MAX; if (subobj == Py_None) - return rsplit_whitespace(self, len, maxsplit); + return stringlib_rsplit_whitespace((PyObject*) self, s, len, maxsplit); if (PyString_Check(subobj)) { sub = PyString_AS_STRING(subobj); n = PyString_GET_SIZE(subobj); @@ -1807,35 +1559,7 @@ else if (PyObject_AsCharBuffer(subobj, &sub, &n)) return NULL; - if (n == 0) { - PyErr_SetString(PyExc_ValueError, "empty separator"); - return NULL; - } - else if (n == 1) - return rsplit_char(self, len, sub[0], maxsplit); - - list = PyList_New(PREALLOC_SIZE(maxsplit)); - if (list == NULL) - return NULL; - - j = len; - - while (maxsplit-- > 0) { - pos = fastsearch(s, j, sub, n, FAST_RSEARCH); - if (pos < 0) - break; - SPLIT_ADD(s, pos + n, j); - j = pos; - } - SPLIT_ADD(s, 0, j); - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; - return list; - -onError: - Py_DECREF(list); - return NULL; + return stringlib_rsplit((PyObject*) self, s, len, sub, n, maxsplit); } @@ -1950,20 +1674,20 @@ return string_join((PyStringObject *)sep, x); } -Py_LOCAL_INLINE(void) -string_adjust_indices(Py_ssize_t *start, Py_ssize_t *end, Py_ssize_t len) -{ - if (*end > len) - *end = len; - else if (*end < 0) - *end += len; - if (*end < 0) - *end = 0; - if (*start < 0) - *start += len; - if (*start < 0) - *start = 0; -} +/* helper macro to fixup start/end slice values */ +#define ADJUST_INDICES(start, end, len) \ + if (end > len) \ + end = len; \ + else if (end < 0) { \ + end += len; \ + if (end < 0) \ + end = 0; \ + } \ + if (start < 0) { \ + start += len; \ + if (start < 0) \ + start = 0; \ + } Py_LOCAL_INLINE(Py_ssize_t) string_find_internal(PyStringObject *self, PyObject *args, int dir) @@ -2417,10 +2141,10 @@ else if (PyObject_AsCharBuffer(sub_obj, &sub, &sub_len)) return NULL; - string_adjust_indices(&start, &end, PyString_GET_SIZE(self)); + ADJUST_INDICES(start, end, PyString_GET_SIZE(self)); return PyInt_FromSsize_t( - stringlib_count(str + start, end - start, sub, sub_len) + stringlib_count(str + start, end - start, sub, sub_len, PY_SSIZE_T_MAX) ); } @@ -2583,9 +2307,6 @@ } -#define FORWARD 1 -#define REVERSE -1 - /* find and count characters and substrings */ #define findchar(target, target_len, c) \ @@ -2621,93 +2342,6 @@ return count; } -Py_LOCAL(Py_ssize_t) -findstring(const char *target, Py_ssize_t target_len, - const char *pattern, Py_ssize_t pattern_len, - Py_ssize_t start, - Py_ssize_t end, - int direction) -{ - if (start < 0) { - start += target_len; - if (start < 0) - start = 0; - } - if (end > target_len) { - end = target_len; - } else if (end < 0) { - end += target_len; - if (end < 0) - end = 0; - } - - /* zero-length substrings always match at the first attempt */ - if (pattern_len == 0) - return (direction > 0) ? start : end; - - end -= pattern_len; - - if (direction < 0) { - for (; end >= start; end--) - if (Py_STRING_MATCH(target, end, pattern, pattern_len)) - return end; - } else { - for (; start <= end; start++) - if (Py_STRING_MATCH(target, start, pattern, pattern_len)) - return start; - } - return -1; -} - -Py_LOCAL_INLINE(Py_ssize_t) -countstring(const char *target, Py_ssize_t target_len, - const char *pattern, Py_ssize_t pattern_len, - Py_ssize_t start, - Py_ssize_t end, - int direction, Py_ssize_t maxcount) -{ - Py_ssize_t count=0; - - if (start < 0) { - start += target_len; - if (start < 0) - start = 0; - } - if (end > target_len) { - end = target_len; - } else if (end < 0) { - end += target_len; - if (end < 0) - end = 0; - } - - /* zero-length substrings match everywhere */ - if (pattern_len == 0 || maxcount == 0) { - if (target_len+1 < maxcount) - return target_len+1; - return maxcount; - } - - end -= pattern_len; - if (direction < 0) { - for (; (end >= start); end--) - if (Py_STRING_MATCH(target, end, pattern, pattern_len)) { - count++; - if (--maxcount <= 0) break; - end -= pattern_len-1; - } - } else { - for (; (start <= end); start++) - if (Py_STRING_MATCH(target, start, pattern, pattern_len)) { - count++; - if (--maxcount <= 0) - break; - start += pattern_len-1; - } - } - return count; -} - /* Algorithms for different cases of string replacement */ @@ -2828,10 +2462,9 @@ self_len = PyString_GET_SIZE(self); self_s = PyString_AS_STRING(self); - count = countstring(self_s, self_len, - from_s, from_len, - 0, self_len, 1, - maxcount); + count = stringlib_count(self_s, self_len, + from_s, from_len, + maxcount); if (count == 0) { /* no matches */ @@ -2850,9 +2483,9 @@ start = self_s; end = self_s + self_len; while (count-- > 0) { - offset = findstring(start, end-start, - from_s, from_len, - 0, end-start, FORWARD); + offset = stringlib_find(start, end-start, + from_s, from_len, + 0); if (offset == -1) break; next = start + offset; @@ -2928,9 +2561,9 @@ self_s = PyString_AS_STRING(self); self_len = PyString_GET_SIZE(self); - offset = findstring(self_s, self_len, - from_s, from_len, - 0, self_len, FORWARD); + offset = stringlib_find(self_s, self_len, + from_s, from_len, + 0); if (offset == -1) { /* No matches; return the original string */ return return_self(self); @@ -2950,9 +2583,9 @@ end = result_s + self_len; while ( --maxcount > 0) { - offset = findstring(start, end-start, - from_s, from_len, - 0, end-start, FORWARD); + offset = stringlib_find(start, end-start, + from_s, from_len, + 0); if (offset==-1) break; Py_MEMCPY(start+offset, to_s, from_len); @@ -3044,9 +2677,10 @@ self_s = PyString_AS_STRING(self); self_len = PyString_GET_SIZE(self); - count = countstring(self_s, self_len, - from_s, from_len, - 0, self_len, FORWARD, maxcount); + count = stringlib_count(self_s, self_len, + from_s, from_len, + maxcount); + if (count == 0) { /* no matches, return unchanged */ return return_self(self); @@ -3073,9 +2707,9 @@ start = self_s; end = self_s + self_len; while (count-- > 0) { - offset = findstring(start, end-start, - from_s, from_len, - 0, end-start, FORWARD); + offset = stringlib_find(start, end-start, + from_s, from_len, + 0); if (offset == -1) break; next = start+offset; @@ -3245,7 +2879,7 @@ return -1; str = PyString_AS_STRING(self); - string_adjust_indices(&start, &end, len); + ADJUST_INDICES(start, end, len); if (direction < 0) { /* startswith */ @@ -3913,62 +3547,15 @@ static PyObject* string_splitlines(PyStringObject *self, PyObject *args) { - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len; int keepends = 0; - PyObject *list; - PyObject *str; - char *data; if (!PyArg_ParseTuple(args, "|i:splitlines", &keepends)) return NULL; - data = PyString_AS_STRING(self); - len = PyString_GET_SIZE(self); - - /* This does not use the preallocated list because splitlines is - usually run with hundreds of newlines. The overhead of - switching between PyList_SET_ITEM and append causes about a - 2-3% slowdown for that common case. A smarter implementation - could move the if check out, so the SET_ITEMs are done first - and the appends only done when the prealloc buffer is full. - That's too much work for little gain.*/ - - list = PyList_New(0); - if (!list) - goto onError; - - for (i = j = 0; i < len; ) { - Py_ssize_t eol; - - /* Find a line and append it */ - while (i < len && data[i] != '\n' && data[i] != '\r') - i++; - - /* Skip the line break reading CRLF as one line break */ - eol = i; - if (i < len) { - if (data[i] == '\r' && i + 1 < len && - data[i+1] == '\n') - i += 2; - else - i++; - if (keepends) - eol = i; - } - SPLIT_APPEND(data, j, eol); - j = i; - } - if (j < len) { - SPLIT_APPEND(data, j, len); - } - - return list; - - onError: - Py_XDECREF(list); - return NULL; + return stringlib_splitlines( + (PyObject*) self, PyString_AS_STRING(self), PyString_GET_SIZE(self), + keepends + ); } PyDoc_STRVAR(sizeof__doc__, @@ -3982,11 +3569,6 @@ return PyInt_FromSsize_t(res); } -#undef SPLIT_APPEND -#undef SPLIT_ADD -#undef MAX_PREALLOC -#undef PREALLOC_SIZE - static PyObject * string_getnewargs(PyStringObject *v) { Modified: python/trunk/Objects/unicodeobject.c ============================================================================== --- python/trunk/Objects/unicodeobject.c (original) +++ python/trunk/Objects/unicodeobject.c Wed Jan 13 08:55:48 2010 @@ -194,7 +194,8 @@ static BLOOM_MASK bloom_linebreak; -#define BLOOM(mask, ch) ((mask & (1 << ((ch) & 0x1F)))) +#define BLOOM_ADD(mask, ch) ((mask |= (1 << ((ch) & (LONG_BIT - 1))))) +#define BLOOM(mask, ch) ((mask & (1 << ((ch) & (LONG_BIT - 1))))) #define BLOOM_LINEBREAK(ch) \ ((ch) < 128U ? ascii_linebreak[(ch)] : \ @@ -209,7 +210,7 @@ mask = 0; for (i = 0; i < len; i++) - mask |= (1 << (ptr[i] & 0x1F)); + BLOOM_ADD(mask, ptr[i]); return mask; } @@ -5245,27 +5246,27 @@ /* --- Helpers ------------------------------------------------------------ */ #include "stringlib/unicodedefs.h" - -#define FROM_UNICODE - #include "stringlib/fastsearch.h" #include "stringlib/count.h" #include "stringlib/find.h" #include "stringlib/partition.h" +#include "stringlib/split.h" /* helper macro to fixup start/end slice values */ -#define FIX_START_END(obj) \ - if (start < 0) \ - start += (obj)->length; \ - if (start < 0) \ - start = 0; \ - if (end > (obj)->length) \ - end = (obj)->length; \ - if (end < 0) \ - end += (obj)->length; \ - if (end < 0) \ - end = 0; +#define ADJUST_INDICES(start, end, len) \ + if (end > len) \ + end = len; \ + else if (end < 0) { \ + end += len; \ + if (end < 0) \ + end = 0; \ + } \ + if (start < 0) { \ + start += len; \ + if (start < 0) \ + start = 0; \ + } Py_ssize_t PyUnicode_Count(PyObject *str, PyObject *substr, @@ -5285,10 +5286,10 @@ return -1; } - FIX_START_END(str_obj); - + ADJUST_INDICES(start, end, str_obj->length); result = stringlib_count( - str_obj->str + start, end - start, sub_obj->str, sub_obj->length + str_obj->str + start, end - start, sub_obj->str, sub_obj->length, + PY_SSIZE_T_MAX ); Py_DECREF(sub_obj); @@ -5343,8 +5344,7 @@ if (substring->length == 0) return 1; - FIX_START_END(self); - + ADJUST_INDICES(start, end, self->length); end -= substring->length; if (end < start) return 0; @@ -5721,305 +5721,40 @@ return u; } -#define SPLIT_APPEND(data, left, right) \ - str = PyUnicode_FromUnicode((data) + (left), (right) - (left)); \ - if (!str) \ - goto onError; \ - if (PyList_Append(list, str)) { \ - Py_DECREF(str); \ - goto onError; \ - } \ - else \ - Py_DECREF(str); - -static -PyObject *split_whitespace(PyUnicodeObject *self, - PyObject *list, - Py_ssize_t maxcount) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len = self->length; - PyObject *str; - register const Py_UNICODE *buf = self->str; - - for (i = j = 0; i < len; ) { - /* find a token */ - while (i < len && Py_UNICODE_ISSPACE(buf[i])) - i++; - j = i; - while (i < len && !Py_UNICODE_ISSPACE(buf[i])) - i++; - if (j < i) { - if (maxcount-- <= 0) - break; - SPLIT_APPEND(buf, j, i); - while (i < len && Py_UNICODE_ISSPACE(buf[i])) - i++; - j = i; - } - } - if (j < len) { - SPLIT_APPEND(buf, j, len); - } - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -PyObject *PyUnicode_Splitlines(PyObject *string, - int keepends) +PyObject *PyUnicode_Splitlines(PyObject *string, int keepends) { - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len; PyObject *list; - PyObject *str; - Py_UNICODE *data; string = PyUnicode_FromObject(string); if (string == NULL) return NULL; - data = PyUnicode_AS_UNICODE(string); - len = PyUnicode_GET_SIZE(string); - - list = PyList_New(0); - if (!list) - goto onError; - for (i = j = 0; i < len; ) { - Py_ssize_t eol; + list = stringlib_splitlines( + (PyObject*) string, PyUnicode_AS_UNICODE(string), + PyUnicode_GET_SIZE(string), keepends); - /* Find a line and append it */ - while (i < len && !BLOOM_LINEBREAK(data[i])) - i++; - - /* Skip the line break reading CRLF as one line break */ - eol = i; - if (i < len) { - if (data[i] == '\r' && i + 1 < len && - data[i+1] == '\n') - i += 2; - else - i++; - if (keepends) - eol = i; - } - SPLIT_APPEND(data, j, eol); - j = i; - } - if (j < len) { - SPLIT_APPEND(data, j, len); - } - - Py_DECREF(string); - return list; - - onError: - Py_XDECREF(list); Py_DECREF(string); - return NULL; -} - -static -PyObject *split_char(PyUnicodeObject *self, - PyObject *list, - Py_UNICODE ch, - Py_ssize_t maxcount) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len = self->length; - PyObject *str; - register const Py_UNICODE *buf = self->str; - - for (i = j = 0; i < len; ) { - if (buf[i] == ch) { - if (maxcount-- <= 0) - break; - SPLIT_APPEND(buf, j, i); - i = j = i + 1; - } else - i++; - } - if (j <= len) { - SPLIT_APPEND(buf, j, len); - } - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -static -PyObject *split_substring(PyUnicodeObject *self, - PyObject *list, - PyUnicodeObject *substring, - Py_ssize_t maxcount) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len = self->length; - Py_ssize_t sublen = substring->length; - PyObject *str; - - for (i = j = 0; i <= len - sublen; ) { - if (Py_UNICODE_MATCH(self, i, substring)) { - if (maxcount-- <= 0) - break; - SPLIT_APPEND(self->str, j, i); - i = j = i + sublen; - } else - i++; - } - if (j <= len) { - SPLIT_APPEND(self->str, j, len); - } - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -static -PyObject *rsplit_whitespace(PyUnicodeObject *self, - PyObject *list, - Py_ssize_t maxcount) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len = self->length; - PyObject *str; - register const Py_UNICODE *buf = self->str; - - for (i = j = len - 1; i >= 0; ) { - /* find a token */ - while (i >= 0 && Py_UNICODE_ISSPACE(buf[i])) - i--; - j = i; - while (i >= 0 && !Py_UNICODE_ISSPACE(buf[i])) - i--; - if (j > i) { - if (maxcount-- <= 0) - break; - SPLIT_APPEND(buf, i + 1, j + 1); - while (i >= 0 && Py_UNICODE_ISSPACE(buf[i])) - i--; - j = i; - } - } - if (j >= 0) { - SPLIT_APPEND(buf, 0, j + 1); - } - if (PyList_Reverse(list) < 0) - goto onError; - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -static -PyObject *rsplit_char(PyUnicodeObject *self, - PyObject *list, - Py_UNICODE ch, - Py_ssize_t maxcount) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len = self->length; - PyObject *str; - register const Py_UNICODE *buf = self->str; - - for (i = j = len - 1; i >= 0; ) { - if (buf[i] == ch) { - if (maxcount-- <= 0) - break; - SPLIT_APPEND(buf, i + 1, j + 1); - j = i = i - 1; - } else - i--; - } - if (j >= -1) { - SPLIT_APPEND(buf, 0, j + 1); - } - if (PyList_Reverse(list) < 0) - goto onError; return list; - - onError: - Py_DECREF(list); - return NULL; } static -PyObject *rsplit_substring(PyUnicodeObject *self, - PyObject *list, - PyUnicodeObject *substring, - Py_ssize_t maxcount) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len = self->length; - Py_ssize_t sublen = substring->length; - PyObject *str; - - for (i = len - sublen, j = len; i >= 0; ) { - if (Py_UNICODE_MATCH(self, i, substring)) { - if (maxcount-- <= 0) - break; - SPLIT_APPEND(self->str, i + sublen, j); - j = i; - i -= sublen; - } else - i--; - } - if (j >= 0) { - SPLIT_APPEND(self->str, 0, j); - } - if (PyList_Reverse(list) < 0) - goto onError; - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -#undef SPLIT_APPEND - -static PyObject *split(PyUnicodeObject *self, PyUnicodeObject *substring, Py_ssize_t maxcount) { - PyObject *list; - if (maxcount < 0) maxcount = PY_SSIZE_T_MAX; - list = PyList_New(0); - if (!list) - return NULL; - if (substring == NULL) - return split_whitespace(self,list,maxcount); - - else if (substring->length == 1) - return split_char(self,list,substring->str[0],maxcount); + return stringlib_split_whitespace( + (PyObject*) self, self->str, self->length, maxcount + ); - else if (substring->length == 0) { - Py_DECREF(list); - PyErr_SetString(PyExc_ValueError, "empty separator"); - return NULL; - } - else - return split_substring(self,list,substring,maxcount); + return stringlib_split( + (PyObject*) self, self->str, self->length, + substring->str, substring->length, + maxcount + ); } static @@ -6027,28 +5762,19 @@ PyUnicodeObject *substring, Py_ssize_t maxcount) { - PyObject *list; - if (maxcount < 0) maxcount = PY_SSIZE_T_MAX; - list = PyList_New(0); - if (!list) - return NULL; - if (substring == NULL) - return rsplit_whitespace(self,list,maxcount); - - else if (substring->length == 1) - return rsplit_char(self,list,substring->str[0],maxcount); + return stringlib_rsplit_whitespace( + (PyObject*) self, self->str, self->length, maxcount + ); - else if (substring->length == 0) { - Py_DECREF(list); - PyErr_SetString(PyExc_ValueError, "empty separator"); - return NULL; - } - else - return rsplit_substring(self,list,substring,maxcount); + return stringlib_rsplit( + (PyObject*) self, self->str, self->length, + substring->str, substring->length, + maxcount + ); } static @@ -6061,9 +5787,13 @@ if (maxcount < 0) maxcount = PY_SSIZE_T_MAX; + else if (maxcount == 0 || self->length == 0) + goto nothing; if (str1->length == str2->length) { /* same length */ + if (str1->length == 0) + goto nothing; Py_ssize_t i; if (str1->length == 1) { /* replace characters */ @@ -6083,8 +5813,8 @@ u->str[i] = u2; } } else { - i = fastsearch( - self->str, self->length, str1->str, str1->length, FAST_SEARCH + i = stringlib_find( + self->str, self->length, str1->str, str1->length, 0 ); if (i < 0) goto nothing; @@ -6092,14 +5822,20 @@ if (!u) return NULL; Py_UNICODE_COPY(u->str, self->str, self->length); - while (i <= self->length - str1->length) - if (Py_UNICODE_MATCH(self, i, str1)) { - if (--maxcount < 0) - break; - Py_UNICODE_COPY(u->str+i, str2->str, str2->length); - i += str1->length; - } else - i++; + + /* change everything in-place, starting with this one */ + Py_UNICODE_COPY(u->str+i, str2->str, str2->length); + i += str1->length; + + while ( --maxcount > 0) { + i = stringlib_find(self->str+i, self->length-i, + str1->str, str1->length, + i); + if (i == -1) + break; + Py_UNICODE_COPY(u->str+i, str2->str, str2->length); + i += str1->length; + } } } else { @@ -6108,9 +5844,8 @@ Py_UNICODE *p; /* replace strings */ - n = stringlib_count(self->str, self->length, str1->str, str1->length); - if (n > maxcount) - n = maxcount; + n = stringlib_count(self->str, self->length, str1->str, str1->length, + maxcount); if (n == 0) goto nothing; /* new_size = self->length + n * (str2->length - str1->length)); */ @@ -6140,15 +5875,12 @@ if (str1->length > 0) { while (n-- > 0) { /* look for next match */ - j = i; - while (j <= e) { - if (Py_UNICODE_MATCH(self, j, str1)) - break; - j++; - } - if (j > i) { - if (j > e) - break; + j = stringlib_find(self->str+i, self->length-i, + str1->str, str1->length, + i); + if (j == -1) + break; + else if (j > i) { /* copy unchanged part [i:j] */ Py_UNICODE_COPY(p, self->str+i, j-i); p += j - i; @@ -6585,11 +6317,11 @@ if (substring == NULL) return NULL; - FIX_START_END(self); - + ADJUST_INDICES(start, end, self->length); result = PyInt_FromSsize_t( stringlib_count(self->str + start, end - start, - substring->str, substring->length) + substring->str, substring->length, + PY_SSIZE_T_MAX) ); Py_DECREF(substring); @@ -9132,11 +8864,3 @@ #ifdef __cplusplus } #endif - - -/* - Local variables: - c-basic-offset: 4 - indent-tabs-mode: nil - End: -*/ Modified: python/trunk/PC/VS8.0/pythoncore.vcproj ============================================================================== --- python/trunk/PC/VS8.0/pythoncore.vcproj (original) +++ python/trunk/PC/VS8.0/pythoncore.vcproj Wed Jan 13 08:55:48 2010 @@ -1539,6 +1539,10 @@ > + + Modified: python/trunk/PCbuild/pythoncore.vcproj ============================================================================== --- python/trunk/PCbuild/pythoncore.vcproj (original) +++ python/trunk/PCbuild/pythoncore.vcproj Wed Jan 13 08:55:48 2010 @@ -1539,6 +1539,10 @@ > + + From python-checkins at python.org Wed Jan 13 09:07:53 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 13 Jan 2010 08:07:53 -0000 Subject: [Python-checkins] r77462 - in python/branches/py3k: Makefile.pre.in Misc/NEWS Objects/bytearrayobject.c Objects/bytesobject.c Objects/stringlib/count.h Objects/stringlib/ctype.h Objects/stringlib/fastsearch.h Objects/stringlib/find.h Objects/stringlib/partition.h Objects/stringlib/split.h Objects/stringlib/stringdefs.h Objects/stringlib/transmogrify.h Objects/stringlib/unicodedefs.h Objects/unicodeobject.c PC/VS8.0/pythoncore.vcproj PCbuild/pythoncore.vcproj Message-ID: Author: antoine.pitrou Date: Wed Jan 13 09:07:53 2010 New Revision: 77462 Log: Merged revisions 77461 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77461 | antoine.pitrou | 2010-01-13 08:55:48 +0100 (mer., 13 janv. 2010) | 5 lines Issue #7622: Improve the split(), rsplit(), splitlines() and replace() methods of bytes, bytearray and unicode objects by using a common implementation based on stringlib's fast search. Patch by Florent Xicluna. ........ Added: python/branches/py3k/Objects/stringlib/split.h (contents, props changed) Modified: python/branches/py3k/ (props changed) python/branches/py3k/Makefile.pre.in python/branches/py3k/Misc/NEWS python/branches/py3k/Objects/bytearrayobject.c python/branches/py3k/Objects/bytesobject.c python/branches/py3k/Objects/stringlib/count.h python/branches/py3k/Objects/stringlib/ctype.h python/branches/py3k/Objects/stringlib/fastsearch.h python/branches/py3k/Objects/stringlib/find.h python/branches/py3k/Objects/stringlib/partition.h python/branches/py3k/Objects/stringlib/stringdefs.h python/branches/py3k/Objects/stringlib/transmogrify.h python/branches/py3k/Objects/stringlib/unicodedefs.h python/branches/py3k/Objects/unicodeobject.c python/branches/py3k/PC/VS8.0/pythoncore.vcproj python/branches/py3k/PCbuild/pythoncore.vcproj Modified: python/branches/py3k/Makefile.pre.in ============================================================================== --- python/branches/py3k/Makefile.pre.in (original) +++ python/branches/py3k/Makefile.pre.in Wed Jan 13 09:07:53 2010 @@ -582,6 +582,7 @@ $(srcdir)/Objects/stringlib/fastsearch.h \ $(srcdir)/Objects/stringlib/find.h \ $(srcdir)/Objects/stringlib/partition.h \ + $(srcdir)/Objects/stringlib/split.h \ $(srcdir)/Objects/stringlib/stringdefs.h \ $(srcdir)/Objects/stringlib/string_format.h \ $(srcdir)/Objects/stringlib/transmogrify.h \ Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Wed Jan 13 09:07:53 2010 @@ -12,6 +12,10 @@ Core and Builtins ----------------- +- Issue #7622: Improve the split(), rsplit(), splitlines() and replace() + methods of bytes, bytearray and unicode objects by using a common + implementation based on stringlib's fast search. Patch by Florent Xicluna. + - Issue #7632: Fix a crash in dtoa.c that occurred in debug builds when parsing certain long numeric strings corresponding to subnormal values. Also fix a number of bugs in dtoa.c that could lead to Modified: python/branches/py3k/Objects/bytearrayobject.c ============================================================================== --- python/branches/py3k/Objects/bytearrayobject.c (original) +++ python/branches/py3k/Objects/bytearrayobject.c Wed Jan 13 09:07:53 2010 @@ -1039,14 +1039,16 @@ #define STRINGLIB_STR PyByteArray_AS_STRING #define STRINGLIB_NEW PyByteArray_FromStringAndSize #define STRINGLIB_EMPTY nullbytes +#define STRINGLIB_ISSPACE Py_ISSPACE +#define STRINGLIB_ISLINEBREAK(x) ((x == '\n') || (x == '\r')) #define STRINGLIB_CHECK_EXACT PyByteArray_CheckExact #define STRINGLIB_MUTABLE 1 -#define FROM_BYTEARRAY 1 #include "stringlib/fastsearch.h" #include "stringlib/count.h" #include "stringlib/find.h" #include "stringlib/partition.h" +#include "stringlib/split.h" #include "stringlib/ctype.h" #include "stringlib/transmogrify.h" @@ -1054,21 +1056,20 @@ /* The following Py_LOCAL_INLINE and Py_LOCAL functions were copied from the old char* style string object. */ -Py_LOCAL_INLINE(void) -_adjust_indices(Py_ssize_t *start, Py_ssize_t *end, Py_ssize_t len) -{ - if (*end > len) - *end = len; - else if (*end < 0) - *end += len; - if (*end < 0) - *end = 0; - if (*start < 0) - *start += len; - if (*start < 0) - *start = 0; -} - +/* helper macro to fixup start/end slice values */ +#define ADJUST_INDICES(start, end, len) \ + if (end > len) \ + end = len; \ + else if (end < 0) { \ + end += len; \ + if (end < 0) \ + end = 0; \ + } \ + if (start < 0) { \ + start += len; \ + if (start < 0) \ + start = 0; \ + } Py_LOCAL_INLINE(Py_ssize_t) bytearray_find_internal(PyByteArrayObject *self, PyObject *args, int dir) @@ -1136,10 +1137,10 @@ if (_getbuffer(sub_obj, &vsub) < 0) return NULL; - _adjust_indices(&start, &end, PyByteArray_GET_SIZE(self)); + ADJUST_INDICES(start, end, PyByteArray_GET_SIZE(self)); count_obj = PyLong_FromSsize_t( - stringlib_count(str + start, end - start, vsub.buf, vsub.len) + stringlib_count(str + start, end - start, vsub.buf, vsub.len, PY_SSIZE_T_MAX) ); PyBuffer_Release(&vsub); return count_obj; @@ -1247,7 +1248,7 @@ if (_getbuffer(substr, &vsubstr) < 0) return -1; - _adjust_indices(&start, &end, len); + ADJUST_INDICES(start, end, len); if (direction < 0) { /* startswith */ @@ -1459,20 +1460,11 @@ } -#define FORWARD 1 -#define REVERSE -1 - /* find and count characters and substrings */ #define findchar(target, target_len, c) \ ((char *)memchr((const void *)(target), c, target_len)) -/* Don't call if length < 2 */ -#define Py_STRING_MATCH(target, offset, pattern, length) \ - (target[offset] == pattern[0] && \ - target[offset+length-1] == pattern[length-1] && \ - !memcmp(target+offset+1, pattern+1, length-2) ) - /* Bytes ops must return a string, create a copy */ Py_LOCAL(PyByteArrayObject *) @@ -1500,93 +1492,6 @@ return count; } -Py_LOCAL(Py_ssize_t) -findstring(const char *target, Py_ssize_t target_len, - const char *pattern, Py_ssize_t pattern_len, - Py_ssize_t start, - Py_ssize_t end, - int direction) -{ - if (start < 0) { - start += target_len; - if (start < 0) - start = 0; - } - if (end > target_len) { - end = target_len; - } else if (end < 0) { - end += target_len; - if (end < 0) - end = 0; - } - - /* zero-length substrings always match at the first attempt */ - if (pattern_len == 0) - return (direction > 0) ? start : end; - - end -= pattern_len; - - if (direction < 0) { - for (; end >= start; end--) - if (Py_STRING_MATCH(target, end, pattern, pattern_len)) - return end; - } else { - for (; start <= end; start++) - if (Py_STRING_MATCH(target, start, pattern, pattern_len)) - return start; - } - return -1; -} - -Py_LOCAL_INLINE(Py_ssize_t) -countstring(const char *target, Py_ssize_t target_len, - const char *pattern, Py_ssize_t pattern_len, - Py_ssize_t start, - Py_ssize_t end, - int direction, Py_ssize_t maxcount) -{ - Py_ssize_t count=0; - - if (start < 0) { - start += target_len; - if (start < 0) - start = 0; - } - if (end > target_len) { - end = target_len; - } else if (end < 0) { - end += target_len; - if (end < 0) - end = 0; - } - - /* zero-length substrings match everywhere */ - if (pattern_len == 0 || maxcount == 0) { - if (target_len+1 < maxcount) - return target_len+1; - return maxcount; - } - - end -= pattern_len; - if (direction < 0) { - for (; (end >= start); end--) - if (Py_STRING_MATCH(target, end, pattern, pattern_len)) { - count++; - if (--maxcount <= 0) break; - end -= pattern_len-1; - } - } else { - for (; (start <= end); start++) - if (Py_STRING_MATCH(target, start, pattern, pattern_len)) { - count++; - if (--maxcount <= 0) - break; - start += pattern_len-1; - } - } - return count; -} - /* Algorithms for different cases of string replacement */ @@ -1708,10 +1613,9 @@ self_len = PyByteArray_GET_SIZE(self); self_s = PyByteArray_AS_STRING(self); - count = countstring(self_s, self_len, - from_s, from_len, - 0, self_len, 1, - maxcount); + count = stringlib_count(self_s, self_len, + from_s, from_len, + maxcount); if (count == 0) { /* no matches */ @@ -1730,9 +1634,9 @@ start = self_s; end = self_s + self_len; while (count-- > 0) { - offset = findstring(start, end-start, - from_s, from_len, - 0, end-start, FORWARD); + offset = stringlib_find(start, end-start, + from_s, from_len, + 0); if (offset == -1) break; next = start + offset; @@ -1808,9 +1712,9 @@ self_s = PyByteArray_AS_STRING(self); self_len = PyByteArray_GET_SIZE(self); - offset = findstring(self_s, self_len, - from_s, from_len, - 0, self_len, FORWARD); + offset = stringlib_find(self_s, self_len, + from_s, from_len, + 0); if (offset == -1) { /* No matches; return the original bytes */ return return_self(self); @@ -1830,9 +1734,9 @@ end = result_s + self_len; while ( --maxcount > 0) { - offset = findstring(start, end-start, - from_s, from_len, - 0, end-start, FORWARD); + offset = stringlib_find(start, end-start, + from_s, from_len, + 0); if (offset==-1) break; Py_MEMCPY(start+offset, to_s, from_len); @@ -1925,9 +1829,10 @@ self_s = PyByteArray_AS_STRING(self); self_len = PyByteArray_GET_SIZE(self); - count = countstring(self_s, self_len, - from_s, from_len, - 0, self_len, FORWARD, maxcount); + count = stringlib_count(self_s, self_len, + from_s, from_len, + maxcount); + if (count == 0) { /* no matches, return unchanged */ return return_self(self); @@ -1954,9 +1859,9 @@ start = self_s; end = self_s + self_len; while (count-- > 0) { - offset = findstring(start, end-start, - from_s, from_len, - 0, end-start, FORWARD); + offset = stringlib_find(start, end-start, + from_s, from_len, + 0); if (offset == -1) break; next = start+offset; @@ -2085,123 +1990,6 @@ return res; } - -/* Overallocate the initial list to reduce the number of reallocs for small - split sizes. Eg, "A A A A A A A A A A".split() (10 elements) has three - resizes, to sizes 4, 8, then 16. Most observed string splits are for human - text (roughly 11 words per line) and field delimited data (usually 1-10 - fields). For large strings the split algorithms are bandwidth limited - so increasing the preallocation likely will not improve things.*/ - -#define MAX_PREALLOC 12 - -/* 5 splits gives 6 elements */ -#define PREALLOC_SIZE(maxsplit) \ - (maxsplit >= MAX_PREALLOC ? MAX_PREALLOC : maxsplit+1) - -#define SPLIT_APPEND(data, left, right) \ - str = PyByteArray_FromStringAndSize((data) + (left), \ - (right) - (left)); \ - if (str == NULL) \ - goto onError; \ - if (PyList_Append(list, str)) { \ - Py_DECREF(str); \ - goto onError; \ - } \ - else \ - Py_DECREF(str); - -#define SPLIT_ADD(data, left, right) { \ - str = PyByteArray_FromStringAndSize((data) + (left), \ - (right) - (left)); \ - if (str == NULL) \ - goto onError; \ - if (count < MAX_PREALLOC) { \ - PyList_SET_ITEM(list, count, str); \ - } else { \ - if (PyList_Append(list, str)) { \ - Py_DECREF(str); \ - goto onError; \ - } \ - else \ - Py_DECREF(str); \ - } \ - count++; } - -/* Always force the list to the expected size. */ -#define FIX_PREALLOC_SIZE(list) Py_SIZE(list) = count - - -Py_LOCAL_INLINE(PyObject *) -split_char(const char *s, Py_ssize_t len, char ch, Py_ssize_t maxcount) -{ - register Py_ssize_t i, j, count = 0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - - if (list == NULL) - return NULL; - - i = j = 0; - while ((j < len) && (maxcount-- > 0)) { - for(; j < len; j++) { - /* I found that using memchr makes no difference */ - if (s[j] == ch) { - SPLIT_ADD(s, i, j); - i = j = j + 1; - break; - } - } - } - if (i <= len) { - SPLIT_ADD(s, i, len); - } - FIX_PREALLOC_SIZE(list); - return list; - - onError: - Py_DECREF(list); - return NULL; -} - - -Py_LOCAL_INLINE(PyObject *) -split_whitespace(const char *s, Py_ssize_t len, Py_ssize_t maxcount) -{ - register Py_ssize_t i, j, count = 0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - - if (list == NULL) - return NULL; - - for (i = j = 0; i < len; ) { - /* find a token */ - while (i < len && Py_ISSPACE(s[i])) - i++; - j = i; - while (i < len && !Py_ISSPACE(s[i])) - i++; - if (j < i) { - if (maxcount-- <= 0) - break; - SPLIT_ADD(s, j, i); - while (i < len && Py_ISSPACE(s[i])) - i++; - j = i; - } - } - if (j < len) { - SPLIT_ADD(s, j, len); - } - FIX_PREALLOC_SIZE(list); - return list; - - onError: - Py_DECREF(list); - return NULL; -} - PyDoc_STRVAR(split__doc__, "B.split([sep[, maxsplit]]) -> list of bytearrays\n\ \n\ @@ -2213,10 +2001,10 @@ static PyObject * bytearray_split(PyByteArrayObject *self, PyObject *args) { - Py_ssize_t len = PyByteArray_GET_SIZE(self), n, i, j, pos; - Py_ssize_t maxsplit = -1, count = 0; + Py_ssize_t len = PyByteArray_GET_SIZE(self), n; + Py_ssize_t maxsplit = -1; const char *s = PyByteArray_AS_STRING(self), *sub; - PyObject *list, *str, *subobj = Py_None; + PyObject *list, *subobj = Py_None; Py_buffer vsub; if (!PyArg_ParseTuple(args, "|On:split", &subobj, &maxsplit)) @@ -2225,73 +2013,18 @@ maxsplit = PY_SSIZE_T_MAX; if (subobj == Py_None) - return split_whitespace(s, len, maxsplit); + return stringlib_split_whitespace((PyObject*) self, s, len, maxsplit); if (_getbuffer(subobj, &vsub) < 0) return NULL; sub = vsub.buf; n = vsub.len; - if (n == 0) { - PyErr_SetString(PyExc_ValueError, "empty separator"); - PyBuffer_Release(&vsub); - return NULL; - } - if (n == 1) { - list = split_char(s, len, sub[0], maxsplit); - PyBuffer_Release(&vsub); - return list; - } - - list = PyList_New(PREALLOC_SIZE(maxsplit)); - if (list == NULL) { - PyBuffer_Release(&vsub); - return NULL; - } - - i = j = 0; - while (maxsplit-- > 0) { - pos = fastsearch(s+i, len-i, sub, n, FAST_SEARCH); - if (pos < 0) - break; - j = i+pos; - SPLIT_ADD(s, i, j); - i = j + n; - } - SPLIT_ADD(s, i, len); - FIX_PREALLOC_SIZE(list); + list = stringlib_split( + (PyObject*) self, s, len, sub, n, maxsplit + ); PyBuffer_Release(&vsub); return list; - - onError: - Py_DECREF(list); - PyBuffer_Release(&vsub); - return NULL; -} - -/* stringlib's partition shares nullbytes in some cases. - undo this, we don't want the nullbytes to be shared. */ -static PyObject * -make_nullbytes_unique(PyObject *result) -{ - if (result != NULL) { - int i; - assert(PyTuple_Check(result)); - assert(PyTuple_GET_SIZE(result) == 3); - for (i = 0; i < 3; i++) { - if (PyTuple_GET_ITEM(result, i) == (PyObject *)nullbytes) { - PyObject *new = PyByteArray_FromStringAndSize(NULL, 0); - if (new == NULL) { - Py_DECREF(result); - result = NULL; - break; - } - Py_DECREF(nullbytes); - PyTuple_SET_ITEM(result, i, new); - } - } - } - return result; } PyDoc_STRVAR(partition__doc__, @@ -2318,7 +2051,7 @@ ); Py_DECREF(bytesep); - return make_nullbytes_unique(result); + return result; } PyDoc_STRVAR(rpartition__doc__, @@ -2346,81 +2079,7 @@ ); Py_DECREF(bytesep); - return make_nullbytes_unique(result); -} - -Py_LOCAL_INLINE(PyObject *) -rsplit_char(const char *s, Py_ssize_t len, char ch, Py_ssize_t maxcount) -{ - register Py_ssize_t i, j, count=0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - - if (list == NULL) - return NULL; - - i = j = len - 1; - while ((i >= 0) && (maxcount-- > 0)) { - for (; i >= 0; i--) { - if (s[i] == ch) { - SPLIT_ADD(s, i + 1, j + 1); - j = i = i - 1; - break; - } - } - } - if (j >= -1) { - SPLIT_ADD(s, 0, j + 1); - } - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; - - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -Py_LOCAL_INLINE(PyObject *) -rsplit_whitespace(const char *s, Py_ssize_t len, Py_ssize_t maxcount) -{ - register Py_ssize_t i, j, count = 0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - - if (list == NULL) - return NULL; - - for (i = j = len - 1; i >= 0; ) { - /* find a token */ - while (i >= 0 && Py_ISSPACE(s[i])) - i--; - j = i; - while (i >= 0 && !Py_ISSPACE(s[i])) - i--; - if (j > i) { - if (maxcount-- <= 0) - break; - SPLIT_ADD(s, i + 1, j + 1); - while (i >= 0 && Py_ISSPACE(s[i])) - i--; - j = i; - } - } - if (j >= 0) { - SPLIT_ADD(s, 0, j + 1); - } - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; - - return list; - - onError: - Py_DECREF(list); - return NULL; + return result; } PyDoc_STRVAR(rsplit__doc__, @@ -2435,10 +2094,10 @@ static PyObject * bytearray_rsplit(PyByteArrayObject *self, PyObject *args) { - Py_ssize_t len = PyByteArray_GET_SIZE(self), n, j, pos; - Py_ssize_t maxsplit = -1, count = 0; + Py_ssize_t len = PyByteArray_GET_SIZE(self), n; + Py_ssize_t maxsplit = -1; const char *s = PyByteArray_AS_STRING(self), *sub; - PyObject *list, *str, *subobj = Py_None; + PyObject *list, *subobj = Py_None; Py_buffer vsub; if (!PyArg_ParseTuple(args, "|On:rsplit", &subobj, &maxsplit)) @@ -2447,50 +2106,18 @@ maxsplit = PY_SSIZE_T_MAX; if (subobj == Py_None) - return rsplit_whitespace(s, len, maxsplit); + return stringlib_rsplit_whitespace((PyObject*) self, s, len, maxsplit); if (_getbuffer(subobj, &vsub) < 0) return NULL; sub = vsub.buf; n = vsub.len; - if (n == 0) { - PyErr_SetString(PyExc_ValueError, "empty separator"); - PyBuffer_Release(&vsub); - return NULL; - } - else if (n == 1) { - list = rsplit_char(s, len, sub[0], maxsplit); - PyBuffer_Release(&vsub); - return list; - } - - list = PyList_New(PREALLOC_SIZE(maxsplit)); - if (list == NULL) { - PyBuffer_Release(&vsub); - return NULL; - } - - j = len; - - while (maxsplit-- > 0) { - pos = fastsearch(s, j, sub, n, FAST_RSEARCH); - if (pos < 0) - break; - SPLIT_ADD(s, pos + n, j); - j = pos; - } - SPLIT_ADD(s, 0, j); - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; + list = stringlib_rsplit( + (PyObject*) self, s, len, sub, n, maxsplit + ); PyBuffer_Release(&vsub); return list; - -onError: - Py_DECREF(list); - PyBuffer_Release(&vsub); - return NULL; } PyDoc_STRVAR(reverse__doc__, @@ -2956,6 +2583,27 @@ return NULL; } +PyDoc_STRVAR(splitlines__doc__, +"B.splitlines([keepends]) -> list of lines\n\ +\n\ +Return a list of the lines in B, breaking at line boundaries.\n\ +Line breaks are not included in the resulting list unless keepends\n\ +is given and true."); + +static PyObject* +bytearray_splitlines(PyObject *self, PyObject *args) +{ + int keepends = 0; + + if (!PyArg_ParseTuple(args, "|i:splitlines", &keepends)) + return NULL; + + return stringlib_splitlines( + (PyObject*) self, PyByteArray_AS_STRING(self), + PyByteArray_GET_SIZE(self), keepends + ); +} + PyDoc_STRVAR(fromhex_doc, "bytearray.fromhex(string) -> bytearray (static method)\n\ \n\ @@ -3134,7 +2782,7 @@ {"rsplit", (PyCFunction)bytearray_rsplit, METH_VARARGS, rsplit__doc__}, {"rstrip", (PyCFunction)bytearray_rstrip, METH_VARARGS, rstrip__doc__}, {"split", (PyCFunction)bytearray_split, METH_VARARGS, split__doc__}, - {"splitlines", (PyCFunction)stringlib_splitlines, METH_VARARGS, + {"splitlines", (PyCFunction)bytearray_splitlines, METH_VARARGS, splitlines__doc__}, {"startswith", (PyCFunction)bytearray_startswith, METH_VARARGS , startswith__doc__}, Modified: python/branches/py3k/Objects/bytesobject.c ============================================================================== --- python/branches/py3k/Objects/bytesobject.c (original) +++ python/branches/py3k/Objects/bytesobject.c Wed Jan 13 09:07:53 2010 @@ -56,7 +56,7 @@ If `str' is NULL then PyBytes_FromStringAndSize() will allocate `size+1' bytes (setting the last byte to the null terminating character) and you can fill in the data yourself. If `str' is non-NULL then the resulting - PyString object must be treated as immutable and you must not fill in nor + PyBytes object must be treated as immutable and you must not fill in nor alter the data yourself, since the strings may be shared. The PyObject member `op->ob_size', which denotes the number of "extra @@ -568,9 +568,9 @@ #include "stringlib/count.h" #include "stringlib/find.h" #include "stringlib/partition.h" +#include "stringlib/split.h" #include "stringlib/ctype.h" -#define STRINGLIB_MUTABLE 0 #include "stringlib/transmogrify.h" PyObject * @@ -1000,133 +1000,6 @@ #define STRIPNAME(i) (stripformat[i]+3) - -/* Don't call if length < 2 */ -#define Py_STRING_MATCH(target, offset, pattern, length) \ - (target[offset] == pattern[0] && \ - target[offset+length-1] == pattern[length-1] && \ - !memcmp(target+offset+1, pattern+1, length-2) ) - - -/* Overallocate the initial list to reduce the number of reallocs for small - split sizes. Eg, "A A A A A A A A A A".split() (10 elements) has three - resizes, to sizes 4, 8, then 16. Most observed string splits are for human - text (roughly 11 words per line) and field delimited data (usually 1-10 - fields). For large strings the split algorithms are bandwidth limited - so increasing the preallocation likely will not improve things.*/ - -#define MAX_PREALLOC 12 - -/* 5 splits gives 6 elements */ -#define PREALLOC_SIZE(maxsplit) \ - (maxsplit >= MAX_PREALLOC ? MAX_PREALLOC : maxsplit+1) - -#define SPLIT_ADD(data, left, right) { \ - str = PyBytes_FromStringAndSize((data) + (left), \ - (right) - (left)); \ - if (str == NULL) \ - goto onError; \ - if (count < MAX_PREALLOC) { \ - PyList_SET_ITEM(list, count, str); \ - } else { \ - if (PyList_Append(list, str)) { \ - Py_DECREF(str); \ - goto onError; \ - } \ - else \ - Py_DECREF(str); \ - } \ - count++; } - -/* Always force the list to the expected size. */ -#define FIX_PREALLOC_SIZE(list) Py_SIZE(list) = count - -#define SKIP_SPACE(s, i, len) { while (i=0 && ISSPACE(s[i])) i--; } -#define RSKIP_NONSPACE(s, i) { while (i>=0 && !ISSPACE(s[i])) i--; } - -Py_LOCAL_INLINE(PyObject *) -split_whitespace(PyBytesObject *self, Py_ssize_t len, Py_ssize_t maxsplit) -{ - const char *s = PyBytes_AS_STRING(self); - Py_ssize_t i, j, count=0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxsplit)); - - if (list == NULL) - return NULL; - - i = j = 0; - - while (maxsplit-- > 0) { - SKIP_SPACE(s, i, len); - if (i==len) break; - j = i; i++; - SKIP_NONSPACE(s, i, len); - if (j == 0 && i == len && PyBytes_CheckExact(self)) { - /* No whitespace in self, so just use it as list[0] */ - Py_INCREF(self); - PyList_SET_ITEM(list, 0, (PyObject *)self); - count++; - break; - } - SPLIT_ADD(s, j, i); - } - - if (i < len) { - /* Only occurs when maxsplit was reached */ - /* Skip any remaining whitespace and copy to end of string */ - SKIP_SPACE(s, i, len); - if (i != len) - SPLIT_ADD(s, i, len); - } - FIX_PREALLOC_SIZE(list); - return list; - onError: - Py_DECREF(list); - return NULL; -} - -Py_LOCAL_INLINE(PyObject *) -split_char(PyBytesObject *self, Py_ssize_t len, char ch, Py_ssize_t maxcount) -{ - const char *s = PyBytes_AS_STRING(self); - register Py_ssize_t i, j, count=0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - - if (list == NULL) - return NULL; - - i = j = 0; - while ((j < len) && (maxcount-- > 0)) { - for(; j list of bytes\n\ \n\ @@ -1138,74 +1011,26 @@ static PyObject * bytes_split(PyBytesObject *self, PyObject *args) { - Py_ssize_t len = PyBytes_GET_SIZE(self), n, i, j; - Py_ssize_t maxsplit = -1, count=0; + Py_ssize_t len = PyBytes_GET_SIZE(self), n; + Py_ssize_t maxsplit = -1; const char *s = PyBytes_AS_STRING(self), *sub; Py_buffer vsub; - PyObject *list, *str, *subobj = Py_None; -#ifdef USE_FAST - Py_ssize_t pos; -#endif + PyObject *list, *subobj = Py_None; if (!PyArg_ParseTuple(args, "|On:split", &subobj, &maxsplit)) return NULL; if (maxsplit < 0) maxsplit = PY_SSIZE_T_MAX; if (subobj == Py_None) - return split_whitespace(self, len, maxsplit); + return stringlib_split_whitespace((PyObject*) self, s, len, maxsplit); if (_getbuffer(subobj, &vsub) < 0) return NULL; sub = vsub.buf; n = vsub.len; - if (n == 0) { - PyErr_SetString(PyExc_ValueError, "empty separator"); - PyBuffer_Release(&vsub); - return NULL; - } - else if (n == 1) { - list = split_char(self, len, sub[0], maxsplit); - PyBuffer_Release(&vsub); - return list; - } - - list = PyList_New(PREALLOC_SIZE(maxsplit)); - if (list == NULL) { - PyBuffer_Release(&vsub); - return NULL; - } - -#ifdef USE_FAST - i = j = 0; - while (maxsplit-- > 0) { - pos = fastsearch(s+i, len-i, sub, n, FAST_SEARCH); - if (pos < 0) - break; - j = i+pos; - SPLIT_ADD(s, i, j); - i = j + n; - } -#else - i = j = 0; - while ((j+n <= len) && (maxsplit-- > 0)) { - for (; j+n <= len; j++) { - if (Py_STRING_MATCH(s, j, sub, n)) { - SPLIT_ADD(s, i, j); - i = j = j + n; - break; - } - } - } -#endif - SPLIT_ADD(s, i, len); - FIX_PREALLOC_SIZE(list); + list = stringlib_split((PyObject*) self, s, len, sub, n, maxsplit); PyBuffer_Release(&vsub); return list; - - onError: - Py_DECREF(list); - PyBuffer_Release(&vsub); - return NULL; } PyDoc_STRVAR(partition__doc__, @@ -1263,90 +1088,6 @@ ); } -Py_LOCAL_INLINE(PyObject *) -rsplit_whitespace(PyBytesObject *self, Py_ssize_t len, Py_ssize_t maxsplit) -{ - const char *s = PyBytes_AS_STRING(self); - Py_ssize_t i, j, count=0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxsplit)); - - if (list == NULL) - return NULL; - - i = j = len-1; - - while (maxsplit-- > 0) { - RSKIP_SPACE(s, i); - if (i<0) break; - j = i; i--; - RSKIP_NONSPACE(s, i); - if (j == len-1 && i < 0 && PyBytes_CheckExact(self)) { - /* No whitespace in self, so just use it as list[0] */ - Py_INCREF(self); - PyList_SET_ITEM(list, 0, (PyObject *)self); - count++; - break; - } - SPLIT_ADD(s, i + 1, j + 1); - } - if (i >= 0) { - /* Only occurs when maxsplit was reached. Skip any remaining - whitespace and copy to beginning of string. */ - RSKIP_SPACE(s, i); - if (i >= 0) - SPLIT_ADD(s, 0, i + 1); - - } - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; - return list; - onError: - Py_DECREF(list); - return NULL; -} - -Py_LOCAL_INLINE(PyObject *) -rsplit_char(PyBytesObject *self, Py_ssize_t len, char ch, Py_ssize_t maxcount) -{ - const char *s = PyBytes_AS_STRING(self); - register Py_ssize_t i, j, count=0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - - if (list == NULL) - return NULL; - - i = j = len - 1; - while ((i >= 0) && (maxcount-- > 0)) { - for (; i >= 0; i--) { - if (s[i] == ch) { - SPLIT_ADD(s, i + 1, j + 1); - j = i = i - 1; - break; - } - } - } - if (i < 0 && count == 0 && PyBytes_CheckExact(self)) { - /* ch not in self, so just use self as list[0] */ - Py_INCREF(self); - PyList_SET_ITEM(list, 0, (PyObject *)self); - count++; - } - else if (j >= -1) { - SPLIT_ADD(s, 0, j + 1); - } - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; - return list; - - onError: - Py_DECREF(list); - return NULL; -} - PyDoc_STRVAR(rsplit__doc__, "B.rsplit([sep[, maxsplit]]) -> list of bytes\n\ \n\ @@ -1360,71 +1101,28 @@ static PyObject * bytes_rsplit(PyBytesObject *self, PyObject *args) { - Py_ssize_t len = PyBytes_GET_SIZE(self), n, i, j; - Py_ssize_t maxsplit = -1, count=0; - const char *s, *sub; + Py_ssize_t len = PyBytes_GET_SIZE(self), n; + Py_ssize_t maxsplit = -1; + const char *s = PyBytes_AS_STRING(self), *sub; Py_buffer vsub; - PyObject *list, *str, *subobj = Py_None; + PyObject *list, *subobj = Py_None; if (!PyArg_ParseTuple(args, "|On:rsplit", &subobj, &maxsplit)) return NULL; if (maxsplit < 0) maxsplit = PY_SSIZE_T_MAX; if (subobj == Py_None) - return rsplit_whitespace(self, len, maxsplit); + return stringlib_rsplit_whitespace((PyObject*) self, s, len, maxsplit); if (_getbuffer(subobj, &vsub) < 0) return NULL; sub = vsub.buf; n = vsub.len; - if (n == 0) { - PyErr_SetString(PyExc_ValueError, "empty separator"); - PyBuffer_Release(&vsub); - return NULL; - } - else if (n == 1) { - list = rsplit_char(self, len, sub[0], maxsplit); - PyBuffer_Release(&vsub); - return list; - } - - list = PyList_New(PREALLOC_SIZE(maxsplit)); - if (list == NULL) { - PyBuffer_Release(&vsub); - return NULL; - } - - j = len; - i = j - n; - - s = PyBytes_AS_STRING(self); - while ( (i >= 0) && (maxsplit-- > 0) ) { - for (; i>=0; i--) { - if (Py_STRING_MATCH(s, i, sub, n)) { - SPLIT_ADD(s, i + n, j); - j = i; - i -= n; - break; - } - } - } - SPLIT_ADD(s, 0, j); - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; + list = stringlib_rsplit((PyObject*) self, s, len, sub, n, maxsplit); PyBuffer_Release(&vsub); return list; - -onError: - Py_DECREF(list); - PyBuffer_Release(&vsub); - return NULL; } -#undef SPLIT_ADD -#undef MAX_PREALLOC -#undef PREALLOC_SIZE - PyDoc_STRVAR(join__doc__, "B.join(iterable_of_bytes) -> bytes\n\ @@ -1531,20 +1229,20 @@ return bytes_join(sep, x); } -Py_LOCAL_INLINE(void) -bytes_adjust_indices(Py_ssize_t *start, Py_ssize_t *end, Py_ssize_t len) -{ - if (*end > len) - *end = len; - else if (*end < 0) - *end += len; - if (*end < 0) - *end = 0; - if (*start < 0) - *start += len; - if (*start < 0) - *start = 0; -} +/* helper macro to fixup start/end slice values */ +#define ADJUST_INDICES(start, end, len) \ + if (end > len) \ + end = len; \ + else if (end < 0) { \ + end += len; \ + if (end < 0) \ + end = 0; \ + } \ + if (start < 0) { \ + start += len; \ + if (start < 0) \ + start = 0; \ + } Py_LOCAL_INLINE(Py_ssize_t) bytes_find_internal(PyBytesObject *self, PyObject *args, int dir) @@ -1591,7 +1289,7 @@ PyDoc_STRVAR(find__doc__, "B.find(sub[, start[, end]]) -> int\n\ \n\ -Return the lowest index in S where substring sub is found,\n\ +Return the lowest index in B where substring sub is found,\n\ such that sub is contained within s[start:end]. Optional\n\ arguments start and end are interpreted as in slice notation.\n\ \n\ @@ -1801,7 +1499,7 @@ "B.count(sub[, start[, end]]) -> int\n\ \n\ Return the number of non-overlapping occurrences of substring sub in\n\ -string S[start:end]. Optional arguments start and end are interpreted\n\ +string B[start:end]. Optional arguments start and end are interpreted\n\ as in slice notation."); static PyObject * @@ -1823,10 +1521,10 @@ else if (PyObject_AsCharBuffer(sub_obj, &sub, &sub_len)) return NULL; - bytes_adjust_indices(&start, &end, PyBytes_GET_SIZE(self)); + ADJUST_INDICES(start, end, PyBytes_GET_SIZE(self)); return PyLong_FromSsize_t( - stringlib_count(str + start, end - start, sub, sub_len) + stringlib_count(str + start, end - start, sub, sub_len, PY_SSIZE_T_MAX) ); } @@ -1943,9 +1641,6 @@ return _Py_bytes_maketrans(args); } -#define FORWARD 1 -#define REVERSE -1 - /* find and count characters and substrings */ #define findchar(target, target_len, c) \ @@ -1981,94 +1676,6 @@ return count; } -Py_LOCAL(Py_ssize_t) -findstring(const char *target, Py_ssize_t target_len, - const char *pattern, Py_ssize_t pattern_len, - Py_ssize_t start, - Py_ssize_t end, - int direction) -{ - if (start < 0) { - start += target_len; - if (start < 0) - start = 0; - } - if (end > target_len) { - end = target_len; - } else if (end < 0) { - end += target_len; - if (end < 0) - end = 0; - } - - /* zero-length substrings always match at the first attempt */ - if (pattern_len == 0) - return (direction > 0) ? start : end; - - end -= pattern_len; - - if (direction < 0) { - for (; end >= start; end--) - if (Py_STRING_MATCH(target, end, pattern, pattern_len)) - return end; - } else { - for (; start <= end; start++) - if (Py_STRING_MATCH(target, start,pattern,pattern_len)) - return start; - } - return -1; -} - -Py_LOCAL_INLINE(Py_ssize_t) -countstring(const char *target, Py_ssize_t target_len, - const char *pattern, Py_ssize_t pattern_len, - Py_ssize_t start, - Py_ssize_t end, - int direction, Py_ssize_t maxcount) -{ - Py_ssize_t count=0; - - if (start < 0) { - start += target_len; - if (start < 0) - start = 0; - } - if (end > target_len) { - end = target_len; - } else if (end < 0) { - end += target_len; - if (end < 0) - end = 0; - } - - /* zero-length substrings match everywhere */ - if (pattern_len == 0 || maxcount == 0) { - if (target_len+1 < maxcount) - return target_len+1; - return maxcount; - } - - end -= pattern_len; - if (direction < 0) { - for (; (end >= start); end--) - if (Py_STRING_MATCH(target, end,pattern,pattern_len)) { - count++; - if (--maxcount <= 0) break; - end -= pattern_len-1; - } - } else { - for (; (start <= end); start++) - if (Py_STRING_MATCH(target, start, - pattern, pattern_len)) { - count++; - if (--maxcount <= 0) - break; - start += pattern_len-1; - } - } - return count; -} - /* Algorithms for different cases of string replacement */ @@ -2189,10 +1796,9 @@ self_len = PyBytes_GET_SIZE(self); self_s = PyBytes_AS_STRING(self); - count = countstring(self_s, self_len, - from_s, from_len, - 0, self_len, 1, - maxcount); + count = stringlib_count(self_s, self_len, + from_s, from_len, + maxcount); if (count == 0) { /* no matches */ @@ -2211,9 +1817,9 @@ start = self_s; end = self_s + self_len; while (count-- > 0) { - offset = findstring(start, end-start, - from_s, from_len, - 0, end-start, FORWARD); + offset = stringlib_find(start, end-start, + from_s, from_len, + 0); if (offset == -1) break; next = start + offset; @@ -2289,9 +1895,9 @@ self_s = PyBytes_AS_STRING(self); self_len = PyBytes_GET_SIZE(self); - offset = findstring(self_s, self_len, - from_s, from_len, - 0, self_len, FORWARD); + offset = stringlib_find(self_s, self_len, + from_s, from_len, + 0); if (offset == -1) { /* No matches; return the original string */ return return_self(self); @@ -2311,9 +1917,9 @@ end = result_s + self_len; while ( --maxcount > 0) { - offset = findstring(start, end-start, - from_s, from_len, - 0, end-start, FORWARD); + offset = stringlib_find(start, end-start, + from_s, from_len, + 0); if (offset==-1) break; Py_MEMCPY(start+offset, to_s, from_len); @@ -2407,9 +2013,10 @@ self_s = PyBytes_AS_STRING(self); self_len = PyBytes_GET_SIZE(self); - count = countstring(self_s, self_len, - from_s, from_len, - 0, self_len, FORWARD, maxcount); + count = stringlib_count(self_s, self_len, + from_s, from_len, + maxcount); + if (count == 0) { /* no matches, return unchanged */ return return_self(self); @@ -2438,9 +2045,9 @@ start = self_s; end = self_s + self_len; while (count-- > 0) { - offset = findstring(start, end-start, - from_s, from_len, - 0, end-start, FORWARD); + offset = stringlib_find(start, end-start, + from_s, from_len, + 0); if (offset == -1) break; next = start+offset; @@ -2598,7 +2205,7 @@ return -1; str = PyBytes_AS_STRING(self); - bytes_adjust_indices(&start, &end, len); + ADJUST_INDICES(start, end, len); if (direction < 0) { /* startswith */ @@ -2703,7 +2310,7 @@ PyDoc_STRVAR(decode__doc__, "B.decode([encoding[, errors]]) -> str\n\ \n\ -Decode S using the codec registered for encoding. encoding defaults\n\ +Decode B using the codec registered for encoding. encoding defaults\n\ to the default encoding. errors may be given to set a different error\n\ handling scheme. Default is 'strict' meaning that encoding errors raise\n\ a UnicodeDecodeError. Other possible values are 'ignore' and 'replace'\n\ @@ -2725,6 +2332,28 @@ } +PyDoc_STRVAR(splitlines__doc__, +"B.splitlines([keepends]) -> list of lines\n\ +\n\ +Return a list of the lines in B, breaking at line boundaries.\n\ +Line breaks are not included in the resulting list unless keepends\n\ +is given and true."); + +static PyObject* +bytes_splitlines(PyObject *self, PyObject *args) +{ + int keepends = 0; + + if (!PyArg_ParseTuple(args, "|i:splitlines", &keepends)) + return NULL; + + return stringlib_splitlines( + (PyObject*) self, PyBytes_AS_STRING(self), + PyBytes_GET_SIZE(self), keepends + ); +} + + PyDoc_STRVAR(fromhex_doc, "bytes.fromhex(string) -> bytes\n\ \n\ @@ -2857,7 +2486,7 @@ {"rsplit", (PyCFunction)bytes_rsplit, METH_VARARGS, rsplit__doc__}, {"rstrip", (PyCFunction)bytes_rstrip, METH_VARARGS, rstrip__doc__}, {"split", (PyCFunction)bytes_split, METH_VARARGS, split__doc__}, - {"splitlines", (PyCFunction)stringlib_splitlines, METH_VARARGS, + {"splitlines", (PyCFunction)bytes_splitlines, METH_VARARGS, splitlines__doc__}, {"startswith", (PyCFunction)bytes_startswith, METH_VARARGS, startswith__doc__}, @@ -3239,7 +2868,7 @@ /* _PyBytes_FormatLong emulates the format codes d, u, o, x and X, and * the F_ALT flag, for Python's long (unbounded) ints. It's not used for * Python's regular ints. - * Return value: a new PyString*, or NULL if error. + * Return value: a new PyBytes*, or NULL if error. * . *pbuf is set to point into it, * *plen set to the # of chars following that. * Caller must decref it when done using pbuf. Modified: python/branches/py3k/Objects/stringlib/count.h ============================================================================== --- python/branches/py3k/Objects/stringlib/count.h (original) +++ python/branches/py3k/Objects/stringlib/count.h Wed Jan 13 09:07:53 2010 @@ -9,28 +9,22 @@ Py_LOCAL_INLINE(Py_ssize_t) stringlib_count(const STRINGLIB_CHAR* str, Py_ssize_t str_len, - const STRINGLIB_CHAR* sub, Py_ssize_t sub_len) + const STRINGLIB_CHAR* sub, Py_ssize_t sub_len, + Py_ssize_t maxcount) { Py_ssize_t count; if (str_len < 0) return 0; /* start > len(str) */ if (sub_len == 0) - return str_len + 1; + return (str_len < maxcount) ? str_len + 1 : maxcount; - count = fastsearch(str, str_len, sub, sub_len, FAST_COUNT); + count = fastsearch(str, str_len, sub, sub_len, maxcount, FAST_COUNT); if (count < 0) - count = 0; /* no match */ + return 0; /* no match */ return count; } #endif - -/* -Local variables: -c-basic-offset: 4 -indent-tabs-mode: nil -End: -*/ Modified: python/branches/py3k/Objects/stringlib/ctype.h ============================================================================== --- python/branches/py3k/Objects/stringlib/ctype.h (original) +++ python/branches/py3k/Objects/stringlib/ctype.h Wed Jan 13 09:07:53 2010 @@ -107,4 +107,3 @@ STRINGLIB_LEN(self)); return newobj; } - Modified: python/branches/py3k/Objects/stringlib/fastsearch.h ============================================================================== --- python/branches/py3k/Objects/stringlib/fastsearch.h (original) +++ python/branches/py3k/Objects/stringlib/fastsearch.h Wed Jan 13 09:07:53 2010 @@ -18,10 +18,13 @@ #define FAST_SEARCH 1 #define FAST_RSEARCH 2 +#define BLOOM_ADD(mask, ch) ((mask |= (1 << ((ch) & (LONG_BIT - 1))))) +#define BLOOM(mask, ch) ((mask & (1 << ((ch) & (LONG_BIT - 1))))) + Py_LOCAL_INLINE(Py_ssize_t) fastsearch(const STRINGLIB_CHAR* s, Py_ssize_t n, const STRINGLIB_CHAR* p, Py_ssize_t m, - int mode) + Py_ssize_t maxcount, int mode) { long mask; Py_ssize_t skip, count = 0; @@ -29,7 +32,7 @@ w = n - m; - if (w < 0) + if (w < 0 || (mode == FAST_COUNT && maxcount == 0)) return -1; /* look for special cases */ @@ -39,8 +42,11 @@ /* use special case for 1-character strings */ if (mode == FAST_COUNT) { for (i = 0; i < n; i++) - if (s[i] == p[0]) + if (s[i] == p[0]) { count++; + if (count == maxcount) + return maxcount; + } return count; } else if (mode == FAST_SEARCH) { for (i = 0; i < n; i++) @@ -56,19 +62,20 @@ mlast = m - 1; skip = mlast - 1; + mask = 0; if (mode != FAST_RSEARCH) { /* create compressed boyer-moore delta 1 table */ /* process pattern[:-1] */ - for (mask = i = 0; i < mlast; i++) { - mask |= (1 << (p[i] & 0x1F)); + for (i = 0; i < mlast; i++) { + BLOOM_ADD(mask, p[i]); if (p[i] == p[mlast]) skip = mlast - i - 1; } /* process pattern[-1] outside the loop */ - mask |= (1 << (p[mlast] & 0x1F)); + BLOOM_ADD(mask, p[mlast]); for (i = 0; i <= w; i++) { /* note: using mlast in the skip path slows things down on x86 */ @@ -82,17 +89,19 @@ if (mode != FAST_COUNT) return i; count++; + if (count == maxcount) + return maxcount; i = i + mlast; continue; } /* miss: check if next character is part of pattern */ - if (!(mask & (1 << (s[i+m] & 0x1F)))) + if (!BLOOM(mask, s[i+m])) i = i + m; else i = i + skip; } else { /* skip: check if next character is part of pattern */ - if (!(mask & (1 << (s[i+m] & 0x1F)))) + if (!BLOOM(mask, s[i+m])) i = i + m; } } @@ -101,10 +110,10 @@ /* create compressed boyer-moore delta 1 table */ /* process pattern[0] outside the loop */ - mask = (1 << (p[0] & 0x1F)); + BLOOM_ADD(mask, p[0]); /* process pattern[:0:-1] */ for (i = mlast; i > 0; i--) { - mask |= (1 << (p[i] & 0x1F)); + BLOOM_ADD(mask, p[i]); if (p[i] == p[0]) skip = i - 1; } @@ -119,13 +128,13 @@ /* got a match! */ return i; /* miss: check if previous character is part of pattern */ - if (!(mask & (1 << (s[i-1] & 0x1F)))) + if (!BLOOM(mask, s[i-1])) i = i - m; else i = i - skip; } else { /* skip: check if previous character is part of pattern */ - if (!(mask & (1 << (s[i-1] & 0x1F)))) + if (!BLOOM(mask, s[i-1])) i = i - m; } } @@ -137,10 +146,3 @@ } #endif - -/* -Local variables: -c-basic-offset: 4 -indent-tabs-mode: nil -End: -*/ Modified: python/branches/py3k/Objects/stringlib/find.h ============================================================================== --- python/branches/py3k/Objects/stringlib/find.h (original) +++ python/branches/py3k/Objects/stringlib/find.h Wed Jan 13 09:07:53 2010 @@ -19,7 +19,7 @@ if (sub_len == 0) return offset; - pos = fastsearch(str, str_len, sub, sub_len, FAST_SEARCH); + pos = fastsearch(str, str_len, sub, sub_len, -1, FAST_SEARCH); if (pos >= 0) pos += offset; @@ -39,7 +39,7 @@ if (sub_len == 0) return str_len + offset; - pos = fastsearch(str, str_len, sub, sub_len, FAST_RSEARCH); + pos = fastsearch(str, str_len, sub, sub_len, -1, FAST_RSEARCH); if (pos >= 0) pos += offset; @@ -47,22 +47,27 @@ return pos; } +/* helper macro to fixup start/end slice values */ +#define ADJUST_INDICES(start, end, len) \ + if (end > len) \ + end = len; \ + else if (end < 0) { \ + end += len; \ + if (end < 0) \ + end = 0; \ + } \ + if (start < 0) { \ + start += len; \ + if (start < 0) \ + start = 0; \ + } + Py_LOCAL_INLINE(Py_ssize_t) stringlib_find_slice(const STRINGLIB_CHAR* str, Py_ssize_t str_len, const STRINGLIB_CHAR* sub, Py_ssize_t sub_len, Py_ssize_t start, Py_ssize_t end) { - if (start < 0) - start += str_len; - if (start < 0) - start = 0; - if (end > str_len) - end = str_len; - if (end < 0) - end += str_len; - if (end < 0) - end = 0; - + ADJUST_INDICES(start, end, str_len); return stringlib_find(str + start, end - start, sub, sub_len, start); } @@ -71,17 +76,7 @@ const STRINGLIB_CHAR* sub, Py_ssize_t sub_len, Py_ssize_t start, Py_ssize_t end) { - if (start < 0) - start += str_len; - if (start < 0) - start = 0; - if (end > str_len) - end = str_len; - if (end < 0) - end += str_len; - if (end < 0) - end = 0; - + ADJUST_INDICES(start, end, str_len); return stringlib_rfind(str + start, end - start, sub, sub_len, start); } @@ -96,9 +91,9 @@ ) != -1; } -#endif /* STRINGLIB_STR */ +#endif /* STRINGLIB_WANT_CONTAINS_OBJ */ -#ifdef FROM_UNICODE +#if STRINGLIB_IS_UNICODE /* This function is a helper for the "find" family (find, rfind, index, @@ -146,13 +141,6 @@ return 1; } -#endif /* FROM_UNICODE */ +#endif /* STRINGLIB_IS_UNICODE */ #endif /* STRINGLIB_FIND_H */ - -/* -Local variables: -c-basic-offset: 4 -indent-tabs-mode: nil -End: -*/ Modified: python/branches/py3k/Objects/stringlib/partition.h ============================================================================== --- python/branches/py3k/Objects/stringlib/partition.h (original) +++ python/branches/py3k/Objects/stringlib/partition.h Wed Jan 13 09:07:53 2010 @@ -8,33 +8,39 @@ #endif Py_LOCAL_INLINE(PyObject*) -stringlib_partition( - PyObject* str_obj, const STRINGLIB_CHAR* str, Py_ssize_t str_len, - PyObject* sep_obj, const STRINGLIB_CHAR* sep, Py_ssize_t sep_len - ) +stringlib_partition(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + PyObject* sep_obj, + const STRINGLIB_CHAR* sep, Py_ssize_t sep_len) { PyObject* out; Py_ssize_t pos; if (sep_len == 0) { PyErr_SetString(PyExc_ValueError, "empty separator"); - return NULL; + return NULL; } out = PyTuple_New(3); if (!out) - return NULL; + return NULL; - pos = fastsearch(str, str_len, sep, sep_len, FAST_SEARCH); + pos = fastsearch(str, str_len, sep, sep_len, -1, FAST_SEARCH); if (pos < 0) { - Py_INCREF(str_obj); - PyTuple_SET_ITEM(out, 0, (PyObject*) str_obj); - Py_INCREF(STRINGLIB_EMPTY); - PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY); - Py_INCREF(STRINGLIB_EMPTY); - PyTuple_SET_ITEM(out, 2, (PyObject*) STRINGLIB_EMPTY); - return out; +#if STRINGLIB_MUTABLE + PyTuple_SET_ITEM(out, 0, STRINGLIB_NEW(str, str_len)); + PyTuple_SET_ITEM(out, 1, STRINGLIB_NEW(NULL, 0)); + PyTuple_SET_ITEM(out, 2, STRINGLIB_NEW(NULL, 0)); +#else + Py_INCREF(str_obj); + PyTuple_SET_ITEM(out, 0, (PyObject*) str_obj); + Py_INCREF(STRINGLIB_EMPTY); + PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY); + Py_INCREF(STRINGLIB_EMPTY); + PyTuple_SET_ITEM(out, 2, (PyObject*) STRINGLIB_EMPTY); +#endif + return out; } PyTuple_SET_ITEM(out, 0, STRINGLIB_NEW(str, pos)); @@ -44,41 +50,47 @@ PyTuple_SET_ITEM(out, 2, STRINGLIB_NEW(str + pos, str_len - pos)); if (PyErr_Occurred()) { - Py_DECREF(out); - return NULL; + Py_DECREF(out); + return NULL; } return out; } Py_LOCAL_INLINE(PyObject*) -stringlib_rpartition( - PyObject* str_obj, const STRINGLIB_CHAR* str, Py_ssize_t str_len, - PyObject* sep_obj, const STRINGLIB_CHAR* sep, Py_ssize_t sep_len - ) +stringlib_rpartition(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + PyObject* sep_obj, + const STRINGLIB_CHAR* sep, Py_ssize_t sep_len) { PyObject* out; Py_ssize_t pos; if (sep_len == 0) { PyErr_SetString(PyExc_ValueError, "empty separator"); - return NULL; + return NULL; } out = PyTuple_New(3); if (!out) - return NULL; + return NULL; - pos = fastsearch(str, str_len, sep, sep_len, FAST_RSEARCH); + pos = fastsearch(str, str_len, sep, sep_len, -1, FAST_RSEARCH); if (pos < 0) { - Py_INCREF(STRINGLIB_EMPTY); - PyTuple_SET_ITEM(out, 0, (PyObject*) STRINGLIB_EMPTY); - Py_INCREF(STRINGLIB_EMPTY); - PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY); - Py_INCREF(str_obj); - PyTuple_SET_ITEM(out, 2, (PyObject*) str_obj); - return out; +#if STRINGLIB_MUTABLE + PyTuple_SET_ITEM(out, 0, STRINGLIB_NEW(NULL, 0)); + PyTuple_SET_ITEM(out, 1, STRINGLIB_NEW(NULL, 0)); + PyTuple_SET_ITEM(out, 2, STRINGLIB_NEW(str, str_len)); +#else + Py_INCREF(STRINGLIB_EMPTY); + PyTuple_SET_ITEM(out, 0, (PyObject*) STRINGLIB_EMPTY); + Py_INCREF(STRINGLIB_EMPTY); + PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY); + Py_INCREF(str_obj); + PyTuple_SET_ITEM(out, 2, (PyObject*) str_obj); +#endif + return out; } PyTuple_SET_ITEM(out, 0, STRINGLIB_NEW(str, pos)); @@ -88,18 +100,11 @@ PyTuple_SET_ITEM(out, 2, STRINGLIB_NEW(str + pos, str_len - pos)); if (PyErr_Occurred()) { - Py_DECREF(out); - return NULL; + Py_DECREF(out); + return NULL; } return out; } #endif - -/* -Local variables: -c-basic-offset: 4 -indent-tabs-mode: nil -End: -*/ Added: python/branches/py3k/Objects/stringlib/split.h ============================================================================== --- (empty file) +++ python/branches/py3k/Objects/stringlib/split.h Wed Jan 13 09:07:53 2010 @@ -0,0 +1,788 @@ +/* stringlib: split implementation */ + +#ifndef STRINGLIB_SPLIT_H +#define STRINGLIB_SPLIT_H + +#ifndef STRINGLIB_FASTSEARCH_H +#error must include "stringlib/fastsearch.h" before including this module +#endif + +/* Overallocate the initial list to reduce the number of reallocs for small + split sizes. Eg, "A A A A A A A A A A".split() (10 elements) has three + resizes, to sizes 4, 8, then 16. Most observed string splits are for human + text (roughly 11 words per line) and field delimited data (usually 1-10 + fields). For large strings the split algorithms are bandwidth limited + so increasing the preallocation likely will not improve things.*/ + +#define MAX_PREALLOC 12 + +/* 5 splits gives 6 elements */ +#define PREALLOC_SIZE(maxsplit) \ + (maxsplit >= MAX_PREALLOC ? MAX_PREALLOC : maxsplit+1) + +#define SPLIT_APPEND(data, left, right) \ + sub = STRINGLIB_NEW((data) + (left), \ + (right) - (left)); \ + if (sub == NULL) \ + goto onError; \ + if (PyList_Append(list, sub)) { \ + Py_DECREF(sub); \ + goto onError; \ + } \ + else \ + Py_DECREF(sub); + +#define SPLIT_ADD(data, left, right) { \ + sub = STRINGLIB_NEW((data) + (left), \ + (right) - (left)); \ + if (sub == NULL) \ + goto onError; \ + if (count < MAX_PREALLOC) { \ + PyList_SET_ITEM(list, count, sub); \ + } else { \ + if (PyList_Append(list, sub)) { \ + Py_DECREF(sub); \ + goto onError; \ + } \ + else \ + Py_DECREF(sub); \ + } \ + count++; } + + +/* Always force the list to the expected size. */ +#define FIX_PREALLOC_SIZE(list) Py_SIZE(list) = count + +Py_LOCAL_INLINE(PyObject *) +stringlib_split_whitespace(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + Py_ssize_t maxcount) +{ + Py_ssize_t i, j, count=0; + PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); + PyObject *sub; + + if (list == NULL) + return NULL; + + i = j = 0; + while (maxcount-- > 0) { + while (i < str_len && STRINGLIB_ISSPACE(str[i])) + i++; + if (i == str_len) break; + j = i; i++; + while (i < str_len && !STRINGLIB_ISSPACE(str[i])) + i++; +#ifndef STRINGLIB_MUTABLE + if (j == 0 && i == str_len && STRINGLIB_CHECK_EXACT(str_obj)) { + /* No whitespace in str_obj, so just use it as list[0] */ + Py_INCREF(str_obj); + PyList_SET_ITEM(list, 0, (PyObject *)str_obj); + count++; + break; + } +#endif + SPLIT_ADD(str, j, i); + } + + if (i < str_len) { + /* Only occurs when maxcount was reached */ + /* Skip any remaining whitespace and copy to end of string */ + while (i < str_len && STRINGLIB_ISSPACE(str[i])) + i++; + if (i != str_len) + SPLIT_ADD(str, i, str_len); + } + FIX_PREALLOC_SIZE(list); + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +Py_LOCAL_INLINE(PyObject *) +stringlib_split_char(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + const STRINGLIB_CHAR ch, + Py_ssize_t maxcount) +{ + Py_ssize_t i, j, count=0; + PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); + PyObject *sub; + + if (list == NULL) + return NULL; + + i = j = 0; + while ((j < str_len) && (maxcount-- > 0)) { + for(; j < str_len; j++) { + /* I found that using memchr makes no difference */ + if (str[j] == ch) { + SPLIT_ADD(str, i, j); + i = j = j + 1; + break; + } + } + } +#ifndef STRINGLIB_MUTABLE + if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) { + /* ch not in str_obj, so just use str_obj as list[0] */ + Py_INCREF(str_obj); + PyList_SET_ITEM(list, 0, (PyObject *)str_obj); + count++; + } else +#endif + if (i <= str_len) { + SPLIT_ADD(str, i, str_len); + } + FIX_PREALLOC_SIZE(list); + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +Py_LOCAL_INLINE(PyObject *) +stringlib_split(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + const STRINGLIB_CHAR* sep, Py_ssize_t sep_len, + Py_ssize_t maxcount) +{ + Py_ssize_t i, j, pos, count=0; + PyObject *list, *sub; + + if (sep_len == 0) { + PyErr_SetString(PyExc_ValueError, "empty separator"); + return NULL; + } + else if (sep_len == 1) + return stringlib_split_char(str_obj, str, str_len, sep[0], maxcount); + + list = PyList_New(PREALLOC_SIZE(maxcount)); + if (list == NULL) + return NULL; + + i = j = 0; + while (maxcount-- > 0) { + pos = fastsearch(str+i, str_len-i, sep, sep_len, -1, FAST_SEARCH); + if (pos < 0) + break; + j = i + pos; + SPLIT_ADD(str, i, j); + i = j + sep_len; + } +#ifndef STRINGLIB_MUTABLE + if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) { + /* No match in str_obj, so just use it as list[0] */ + Py_INCREF(str_obj); + PyList_SET_ITEM(list, 0, (PyObject *)str_obj); + count++; + } else +#endif + { + SPLIT_ADD(str, i, str_len); + } + FIX_PREALLOC_SIZE(list); + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +Py_LOCAL_INLINE(PyObject *) +stringlib_rsplit_whitespace(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + Py_ssize_t maxcount) +{ + Py_ssize_t i, j, count=0; + PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); + PyObject *sub; + + if (list == NULL) + return NULL; + + i = j = str_len - 1; + while (maxcount-- > 0) { + while (i >= 0 && STRINGLIB_ISSPACE(str[i])) + i--; + if (i < 0) break; + j = i; i--; + while (i >= 0 && !STRINGLIB_ISSPACE(str[i])) + i--; +#ifndef STRINGLIB_MUTABLE + if (j == str_len - 1 && i < 0 && STRINGLIB_CHECK_EXACT(str_obj)) { + /* No whitespace in str_obj, so just use it as list[0] */ + Py_INCREF(str_obj); + PyList_SET_ITEM(list, 0, (PyObject *)str_obj); + count++; + break; + } +#endif + SPLIT_ADD(str, i + 1, j + 1); + } + + if (i >= 0) { + /* Only occurs when maxcount was reached */ + /* Skip any remaining whitespace and copy to beginning of string */ + while (i >= 0 && STRINGLIB_ISSPACE(str[i])) + i--; + if (i >= 0) + SPLIT_ADD(str, 0, i + 1); + } + FIX_PREALLOC_SIZE(list); + if (PyList_Reverse(list) < 0) + goto onError; + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +Py_LOCAL_INLINE(PyObject *) +stringlib_rsplit_char(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + const STRINGLIB_CHAR ch, + Py_ssize_t maxcount) +{ + Py_ssize_t i, j, count=0; + PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); + PyObject *sub; + + if (list == NULL) + return NULL; + + i = j = str_len - 1; + while ((i >= 0) && (maxcount-- > 0)) { + for(; i >= 0; i--) { + if (str[i] == ch) { + SPLIT_ADD(str, i + 1, j + 1); + j = i = i - 1; + break; + } + } + } +#ifndef STRINGLIB_MUTABLE + if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) { + /* ch not in str_obj, so just use str_obj as list[0] */ + Py_INCREF(str_obj); + PyList_SET_ITEM(list, 0, (PyObject *)str_obj); + count++; + } else +#endif + if (j >= -1) { + SPLIT_ADD(str, 0, j + 1); + } + FIX_PREALLOC_SIZE(list); + if (PyList_Reverse(list) < 0) + goto onError; + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +Py_LOCAL_INLINE(PyObject *) +stringlib_rsplit(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + const STRINGLIB_CHAR* sep, Py_ssize_t sep_len, + Py_ssize_t maxcount) +{ + Py_ssize_t j, pos, count=0; + PyObject *list, *sub; + + if (sep_len == 0) { + PyErr_SetString(PyExc_ValueError, "empty separator"); + return NULL; + } + else if (sep_len == 1) + return stringlib_rsplit_char(str_obj, str, str_len, sep[0], maxcount); + + list = PyList_New(PREALLOC_SIZE(maxcount)); + if (list == NULL) + return NULL; + + j = str_len; + while (maxcount-- > 0) { + pos = fastsearch(str, j, sep, sep_len, -1, FAST_RSEARCH); + if (pos < 0) + break; + SPLIT_ADD(str, pos + sep_len, j); + j = pos; + } +#ifndef STRINGLIB_MUTABLE + if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) { + /* No match in str_obj, so just use it as list[0] */ + Py_INCREF(str_obj); + PyList_SET_ITEM(list, 0, (PyObject *)str_obj); + count++; + } else +#endif + { + SPLIT_ADD(str, 0, j); + } + FIX_PREALLOC_SIZE(list); + if (PyList_Reverse(list) < 0) + goto onError; + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +Py_LOCAL_INLINE(PyObject *) +stringlib_splitlines(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + int keepends) +{ + /* This does not use the preallocated list because splitlines is + usually run with hundreds of newlines. The overhead of + switching between PyList_SET_ITEM and append causes about a + 2-3% slowdown for that common case. A smarter implementation + could move the if check out, so the SET_ITEMs are done first + and the appends only done when the prealloc buffer is full. + That's too much work for little gain.*/ + + register Py_ssize_t i; + register Py_ssize_t j; + PyObject *list = PyList_New(0); + PyObject *sub; + + if (list == NULL) + return NULL; + + for (i = j = 0; i < str_len; ) { + Py_ssize_t eol; + + /* Find a line and append it */ + while (i < str_len && !STRINGLIB_ISLINEBREAK(str[i])) + i++; + + /* Skip the line break reading CRLF as one line break */ + eol = i; + if (i < str_len) { + if (str[i] == '\r' && i + 1 < str_len && str[i+1] == '\n') + i += 2; + else + i++; + if (keepends) + eol = i; + } +#ifndef STRINGLIB_MUTABLE + if (j == 0 && eol == str_len && STRINGLIB_CHECK_EXACT(str_obj)) { + /* No linebreak in str_obj, so just use it as list[0] */ + if (PyList_Append(list, str_obj)) + goto onError; + break; + } +#endif + SPLIT_APPEND(str, j, eol); + j = i; + } + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +#endif +/* stringlib: split implementation */ + +#ifndef STRINGLIB_SPLIT_H +#define STRINGLIB_SPLIT_H + +#ifndef STRINGLIB_FASTSEARCH_H +#error must include "stringlib/fastsearch.h" before including this module +#endif + +/* Overallocate the initial list to reduce the number of reallocs for small + split sizes. Eg, "A A A A A A A A A A".split() (10 elements) has three + resizes, to sizes 4, 8, then 16. Most observed string splits are for human + text (roughly 11 words per line) and field delimited data (usually 1-10 + fields). For large strings the split algorithms are bandwidth limited + so increasing the preallocation likely will not improve things.*/ + +#define MAX_PREALLOC 12 + +/* 5 splits gives 6 elements */ +#define PREALLOC_SIZE(maxsplit) \ + (maxsplit >= MAX_PREALLOC ? MAX_PREALLOC : maxsplit+1) + +#define SPLIT_APPEND(data, left, right) \ + sub = STRINGLIB_NEW((data) + (left), \ + (right) - (left)); \ + if (sub == NULL) \ + goto onError; \ + if (PyList_Append(list, sub)) { \ + Py_DECREF(sub); \ + goto onError; \ + } \ + else \ + Py_DECREF(sub); + +#define SPLIT_ADD(data, left, right) { \ + sub = STRINGLIB_NEW((data) + (left), \ + (right) - (left)); \ + if (sub == NULL) \ + goto onError; \ + if (count < MAX_PREALLOC) { \ + PyList_SET_ITEM(list, count, sub); \ + } else { \ + if (PyList_Append(list, sub)) { \ + Py_DECREF(sub); \ + goto onError; \ + } \ + else \ + Py_DECREF(sub); \ + } \ + count++; } + + +/* Always force the list to the expected size. */ +#define FIX_PREALLOC_SIZE(list) Py_SIZE(list) = count + +Py_LOCAL_INLINE(PyObject *) +stringlib_split_whitespace(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + Py_ssize_t maxcount) +{ + Py_ssize_t i, j, count=0; + PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); + PyObject *sub; + + if (list == NULL) + return NULL; + + i = j = 0; + while (maxcount-- > 0) { + while (i < str_len && STRINGLIB_ISSPACE(str[i])) + i++; + if (i == str_len) break; + j = i; i++; + while (i < str_len && !STRINGLIB_ISSPACE(str[i])) + i++; +#ifndef STRINGLIB_MUTABLE + if (j == 0 && i == str_len && STRINGLIB_CHECK_EXACT(str_obj)) { + /* No whitespace in str_obj, so just use it as list[0] */ + Py_INCREF(str_obj); + PyList_SET_ITEM(list, 0, (PyObject *)str_obj); + count++; + break; + } +#endif + SPLIT_ADD(str, j, i); + } + + if (i < str_len) { + /* Only occurs when maxcount was reached */ + /* Skip any remaining whitespace and copy to end of string */ + while (i < str_len && STRINGLIB_ISSPACE(str[i])) + i++; + if (i != str_len) + SPLIT_ADD(str, i, str_len); + } + FIX_PREALLOC_SIZE(list); + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +Py_LOCAL_INLINE(PyObject *) +stringlib_split_char(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + const STRINGLIB_CHAR ch, + Py_ssize_t maxcount) +{ + Py_ssize_t i, j, count=0; + PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); + PyObject *sub; + + if (list == NULL) + return NULL; + + i = j = 0; + while ((j < str_len) && (maxcount-- > 0)) { + for(; j < str_len; j++) { + /* I found that using memchr makes no difference */ + if (str[j] == ch) { + SPLIT_ADD(str, i, j); + i = j = j + 1; + break; + } + } + } +#ifndef STRINGLIB_MUTABLE + if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) { + /* ch not in str_obj, so just use str_obj as list[0] */ + Py_INCREF(str_obj); + PyList_SET_ITEM(list, 0, (PyObject *)str_obj); + count++; + } else +#endif + if (i <= str_len) { + SPLIT_ADD(str, i, str_len); + } + FIX_PREALLOC_SIZE(list); + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +Py_LOCAL_INLINE(PyObject *) +stringlib_split(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + const STRINGLIB_CHAR* sep, Py_ssize_t sep_len, + Py_ssize_t maxcount) +{ + Py_ssize_t i, j, pos, count=0; + PyObject *list, *sub; + + if (sep_len == 0) { + PyErr_SetString(PyExc_ValueError, "empty separator"); + return NULL; + } + else if (sep_len == 1) + return stringlib_split_char(str_obj, str, str_len, sep[0], maxcount); + + list = PyList_New(PREALLOC_SIZE(maxcount)); + if (list == NULL) + return NULL; + + i = j = 0; + while (maxcount-- > 0) { + pos = fastsearch(str+i, str_len-i, sep, sep_len, -1, FAST_SEARCH); + if (pos < 0) + break; + j = i + pos; + SPLIT_ADD(str, i, j); + i = j + sep_len; + } +#ifndef STRINGLIB_MUTABLE + if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) { + /* No match in str_obj, so just use it as list[0] */ + Py_INCREF(str_obj); + PyList_SET_ITEM(list, 0, (PyObject *)str_obj); + count++; + } else +#endif + { + SPLIT_ADD(str, i, str_len); + } + FIX_PREALLOC_SIZE(list); + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +Py_LOCAL_INLINE(PyObject *) +stringlib_rsplit_whitespace(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + Py_ssize_t maxcount) +{ + Py_ssize_t i, j, count=0; + PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); + PyObject *sub; + + if (list == NULL) + return NULL; + + i = j = str_len - 1; + while (maxcount-- > 0) { + while (i >= 0 && STRINGLIB_ISSPACE(str[i])) + i--; + if (i < 0) break; + j = i; i--; + while (i >= 0 && !STRINGLIB_ISSPACE(str[i])) + i--; +#ifndef STRINGLIB_MUTABLE + if (j == str_len - 1 && i < 0 && STRINGLIB_CHECK_EXACT(str_obj)) { + /* No whitespace in str_obj, so just use it as list[0] */ + Py_INCREF(str_obj); + PyList_SET_ITEM(list, 0, (PyObject *)str_obj); + count++; + break; + } +#endif + SPLIT_ADD(str, i + 1, j + 1); + } + + if (i >= 0) { + /* Only occurs when maxcount was reached */ + /* Skip any remaining whitespace and copy to beginning of string */ + while (i >= 0 && STRINGLIB_ISSPACE(str[i])) + i--; + if (i >= 0) + SPLIT_ADD(str, 0, i + 1); + } + FIX_PREALLOC_SIZE(list); + if (PyList_Reverse(list) < 0) + goto onError; + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +Py_LOCAL_INLINE(PyObject *) +stringlib_rsplit_char(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + const STRINGLIB_CHAR ch, + Py_ssize_t maxcount) +{ + Py_ssize_t i, j, count=0; + PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); + PyObject *sub; + + if (list == NULL) + return NULL; + + i = j = str_len - 1; + while ((i >= 0) && (maxcount-- > 0)) { + for(; i >= 0; i--) { + if (str[i] == ch) { + SPLIT_ADD(str, i + 1, j + 1); + j = i = i - 1; + break; + } + } + } +#ifndef STRINGLIB_MUTABLE + if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) { + /* ch not in str_obj, so just use str_obj as list[0] */ + Py_INCREF(str_obj); + PyList_SET_ITEM(list, 0, (PyObject *)str_obj); + count++; + } else +#endif + if (j >= -1) { + SPLIT_ADD(str, 0, j + 1); + } + FIX_PREALLOC_SIZE(list); + if (PyList_Reverse(list) < 0) + goto onError; + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +Py_LOCAL_INLINE(PyObject *) +stringlib_rsplit(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + const STRINGLIB_CHAR* sep, Py_ssize_t sep_len, + Py_ssize_t maxcount) +{ + Py_ssize_t j, pos, count=0; + PyObject *list, *sub; + + if (sep_len == 0) { + PyErr_SetString(PyExc_ValueError, "empty separator"); + return NULL; + } + else if (sep_len == 1) + return stringlib_rsplit_char(str_obj, str, str_len, sep[0], maxcount); + + list = PyList_New(PREALLOC_SIZE(maxcount)); + if (list == NULL) + return NULL; + + j = str_len; + while (maxcount-- > 0) { + pos = fastsearch(str, j, sep, sep_len, -1, FAST_RSEARCH); + if (pos < 0) + break; + SPLIT_ADD(str, pos + sep_len, j); + j = pos; + } +#ifndef STRINGLIB_MUTABLE + if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) { + /* No match in str_obj, so just use it as list[0] */ + Py_INCREF(str_obj); + PyList_SET_ITEM(list, 0, (PyObject *)str_obj); + count++; + } else +#endif + { + SPLIT_ADD(str, 0, j); + } + FIX_PREALLOC_SIZE(list); + if (PyList_Reverse(list) < 0) + goto onError; + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +Py_LOCAL_INLINE(PyObject *) +stringlib_splitlines(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + int keepends) +{ + /* This does not use the preallocated list because splitlines is + usually run with hundreds of newlines. The overhead of + switching between PyList_SET_ITEM and append causes about a + 2-3% slowdown for that common case. A smarter implementation + could move the if check out, so the SET_ITEMs are done first + and the appends only done when the prealloc buffer is full. + That's too much work for little gain.*/ + + register Py_ssize_t i; + register Py_ssize_t j; + PyObject *list = PyList_New(0); + PyObject *sub; + + if (list == NULL) + return NULL; + + for (i = j = 0; i < str_len; ) { + Py_ssize_t eol; + + /* Find a line and append it */ + while (i < str_len && !STRINGLIB_ISLINEBREAK(str[i])) + i++; + + /* Skip the line break reading CRLF as one line break */ + eol = i; + if (i < str_len) { + if (str[i] == '\r' && i + 1 < str_len && str[i+1] == '\n') + i += 2; + else + i++; + if (keepends) + eol = i; + } +#ifndef STRINGLIB_MUTABLE + if (j == 0 && eol == str_len && STRINGLIB_CHECK_EXACT(str_obj)) { + /* No linebreak in str_obj, so just use it as list[0] */ + if (PyList_Append(list, str_obj)) + goto onError; + break; + } +#endif + SPLIT_APPEND(str, j, eol); + j = i; + } + return list; + + onError: + Py_DECREF(list); + return NULL; +} + +#endif Modified: python/branches/py3k/Objects/stringlib/stringdefs.h ============================================================================== --- python/branches/py3k/Objects/stringlib/stringdefs.h (original) +++ python/branches/py3k/Objects/stringlib/stringdefs.h Wed Jan 13 09:07:53 2010 @@ -11,6 +11,8 @@ #define STRINGLIB_TYPE_NAME "string" #define STRINGLIB_PARSE_CODE "S" #define STRINGLIB_EMPTY nullstring +#define STRINGLIB_ISSPACE Py_ISSPACE +#define STRINGLIB_ISLINEBREAK(x) ((x == '\n') || (x == '\r')) #define STRINGLIB_ISDECIMAL(x) ((x >= '0') && (x <= '9')) #define STRINGLIB_TODECIMAL(x) (STRINGLIB_ISDECIMAL(x) ? (x - '0') : -1) #define STRINGLIB_TOUPPER Py_TOUPPER Modified: python/branches/py3k/Objects/stringlib/transmogrify.h ============================================================================== --- python/branches/py3k/Objects/stringlib/transmogrify.h (original) +++ python/branches/py3k/Objects/stringlib/transmogrify.h Wed Jan 13 09:07:53 2010 @@ -1,13 +1,6 @@ /* NOTE: this API is -ONLY- for use with single byte character strings. */ /* Do not use it with Unicode. */ -#include "bytes_methods.h" - -#ifndef STRINGLIB_MUTABLE -#warning "STRINGLIB_MUTABLE not defined before #include, assuming 0" -#define STRINGLIB_MUTABLE 0 -#endif - /* the more complicated methods. parts of these should be pulled out into the shared code in bytes_methods.c to cut down on duplicate code bloat. */ @@ -269,87 +262,3 @@ return (PyObject*) s; } - - -#define _STRINGLIB_SPLIT_APPEND(data, left, right) \ - str = STRINGLIB_NEW((data) + (left), \ - (right) - (left)); \ - if (str == NULL) \ - goto onError; \ - if (PyList_Append(list, str)) { \ - Py_DECREF(str); \ - goto onError; \ - } \ - else \ - Py_DECREF(str); - -PyDoc_STRVAR(splitlines__doc__, -"B.splitlines([keepends]) -> list of lines\n\ -\n\ -Return a list of the lines in B, breaking at line boundaries.\n\ -Line breaks are not included in the resulting list unless keepends\n\ -is given and true."); - -static PyObject* -stringlib_splitlines(PyObject *self, PyObject *args) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len; - int keepends = 0; - PyObject *list; - PyObject *str; - char *data; - - if (!PyArg_ParseTuple(args, "|i:splitlines", &keepends)) - return NULL; - - data = STRINGLIB_STR(self); - len = STRINGLIB_LEN(self); - - /* This does not use the preallocated list because splitlines is - usually run with hundreds of newlines. The overhead of - switching between PyList_SET_ITEM and append causes about a - 2-3% slowdown for that common case. A smarter implementation - could move the if check out, so the SET_ITEMs are done first - and the appends only done when the prealloc buffer is full. - That's too much work for little gain.*/ - - list = PyList_New(0); - if (!list) - goto onError; - - for (i = j = 0; i < len; ) { - Py_ssize_t eol; - - /* Find a line and append it */ - while (i < len && data[i] != '\n' && data[i] != '\r') - i++; - - /* Skip the line break reading CRLF as one line break */ - eol = i; - if (i < len) { - if (data[i] == '\r' && i + 1 < len && - data[i+1] == '\n') - i += 2; - else - i++; - if (keepends) - eol = i; - } - _STRINGLIB_SPLIT_APPEND(data, j, eol); - j = i; - } - if (j < len) { - _STRINGLIB_SPLIT_APPEND(data, j, len); - } - - return list; - - onError: - Py_XDECREF(list); - return NULL; -} - -#undef _STRINGLIB_SPLIT_APPEND - Modified: python/branches/py3k/Objects/stringlib/unicodedefs.h ============================================================================== --- python/branches/py3k/Objects/stringlib/unicodedefs.h (original) +++ python/branches/py3k/Objects/stringlib/unicodedefs.h Wed Jan 13 09:07:53 2010 @@ -11,6 +11,8 @@ #define STRINGLIB_TYPE_NAME "unicode" #define STRINGLIB_PARSE_CODE "U" #define STRINGLIB_EMPTY unicode_empty +#define STRINGLIB_ISSPACE Py_UNICODE_ISSPACE +#define STRINGLIB_ISLINEBREAK BLOOM_LINEBREAK #define STRINGLIB_ISDECIMAL Py_UNICODE_ISDECIMAL #define STRINGLIB_TODECIMAL Py_UNICODE_TODECIMAL #define STRINGLIB_TOUPPER Py_UNICODE_TOUPPER Modified: python/branches/py3k/Objects/unicodeobject.c ============================================================================== --- python/branches/py3k/Objects/unicodeobject.c (original) +++ python/branches/py3k/Objects/unicodeobject.c Wed Jan 13 09:07:53 2010 @@ -210,7 +210,8 @@ static BLOOM_MASK bloom_linebreak; -#define BLOOM(mask, ch) ((mask & (1 << ((ch) & 0x1F)))) +#define BLOOM_ADD(mask, ch) ((mask |= (1 << ((ch) & (LONG_BIT - 1))))) +#define BLOOM(mask, ch) ((mask & (1 << ((ch) & (LONG_BIT - 1))))) #define BLOOM_LINEBREAK(ch) \ ((ch) < 128U ? ascii_linebreak[(ch)] : \ @@ -225,7 +226,7 @@ mask = 0; for (i = 0; i < len; i++) - mask |= (1 << (ptr[i] & 0x1F)); + BLOOM_ADD(mask, ptr[i]); return mask; } @@ -5873,28 +5874,30 @@ #include "stringlib/unicodedefs.h" #include "stringlib/fastsearch.h" + #include "stringlib/count.h" -/* Include _ParseTupleFinds from find.h */ -#define FROM_UNICODE #include "stringlib/find.h" #include "stringlib/partition.h" +#include "stringlib/split.h" #define _Py_InsertThousandsGrouping _PyUnicode_InsertThousandsGrouping #define _Py_InsertThousandsGroupingLocale _PyUnicode_InsertThousandsGroupingLocale #include "stringlib/localeutil.h" /* helper macro to fixup start/end slice values */ -#define FIX_START_END(obj) \ - if (start < 0) \ - start += (obj)->length; \ - if (start < 0) \ - start = 0; \ - if (end > (obj)->length) \ - end = (obj)->length; \ - if (end < 0) \ - end += (obj)->length; \ - if (end < 0) \ - end = 0; +#define ADJUST_INDICES(start, end, len) \ + if (end > len) \ + end = len; \ + else if (end < 0) { \ + end += len; \ + if (end < 0) \ + end = 0; \ + } \ + if (start < 0) { \ + start += len; \ + if (start < 0) \ + start = 0; \ + } Py_ssize_t PyUnicode_Count(PyObject *str, PyObject *substr, @@ -5914,10 +5917,10 @@ return -1; } - FIX_START_END(str_obj); - + ADJUST_INDICES(start, end, str_obj->length); result = stringlib_count( - str_obj->str + start, end - start, sub_obj->str, sub_obj->length + str_obj->str + start, end - start, sub_obj->str, sub_obj->length, + PY_SSIZE_T_MAX ); Py_DECREF(sub_obj); @@ -5972,8 +5975,7 @@ if (substring->length == 0) return 1; - FIX_START_END(self); - + ADJUST_INDICES(start, end, self->length); end -= substring->length; if (end < start) return 0; @@ -6314,305 +6316,40 @@ return u; } -#define SPLIT_APPEND(data, left, right) \ - str = PyUnicode_FromUnicode((data) + (left), (right) - (left)); \ - if (!str) \ - goto onError; \ - if (PyList_Append(list, str)) { \ - Py_DECREF(str); \ - goto onError; \ - } \ - else \ - Py_DECREF(str); - -static -PyObject *split_whitespace(PyUnicodeObject *self, - PyObject *list, - Py_ssize_t maxcount) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len = self->length; - PyObject *str; - register const Py_UNICODE *buf = self->str; - - for (i = j = 0; i < len; ) { - /* find a token */ - while (i < len && Py_UNICODE_ISSPACE(buf[i])) - i++; - j = i; - while (i < len && !Py_UNICODE_ISSPACE(buf[i])) - i++; - if (j < i) { - if (maxcount-- <= 0) - break; - SPLIT_APPEND(buf, j, i); - while (i < len && Py_UNICODE_ISSPACE(buf[i])) - i++; - j = i; - } - } - if (j < len) { - SPLIT_APPEND(buf, j, len); - } - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -PyObject *PyUnicode_Splitlines(PyObject *string, - int keepends) +PyObject *PyUnicode_Splitlines(PyObject *string, int keepends) { - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len; PyObject *list; - PyObject *str; - Py_UNICODE *data; string = PyUnicode_FromObject(string); if (string == NULL) return NULL; - data = PyUnicode_AS_UNICODE(string); - len = PyUnicode_GET_SIZE(string); - list = PyList_New(0); - if (!list) - goto onError; - - for (i = j = 0; i < len; ) { - Py_ssize_t eol; - - /* Find a line and append it */ - while (i < len && !BLOOM_LINEBREAK(data[i])) - i++; - - /* Skip the line break reading CRLF as one line break */ - eol = i; - if (i < len) { - if (data[i] == '\r' && i + 1 < len && - data[i+1] == '\n') - i += 2; - else - i++; - if (keepends) - eol = i; - } - SPLIT_APPEND(data, j, eol); - j = i; - } - if (j < len) { - SPLIT_APPEND(data, j, len); - } + list = stringlib_splitlines( + (PyObject*) string, PyUnicode_AS_UNICODE(string), + PyUnicode_GET_SIZE(string), keepends); Py_DECREF(string); return list; - - onError: - Py_XDECREF(list); - Py_DECREF(string); - return NULL; } static -PyObject *split_char(PyUnicodeObject *self, - PyObject *list, - Py_UNICODE ch, - Py_ssize_t maxcount) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len = self->length; - PyObject *str; - register const Py_UNICODE *buf = self->str; - - for (i = j = 0; i < len; ) { - if (buf[i] == ch) { - if (maxcount-- <= 0) - break; - SPLIT_APPEND(buf, j, i); - i = j = i + 1; - } else - i++; - } - if (j <= len) { - SPLIT_APPEND(buf, j, len); - } - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -static -PyObject *split_substring(PyUnicodeObject *self, - PyObject *list, - PyUnicodeObject *substring, - Py_ssize_t maxcount) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len = self->length; - Py_ssize_t sublen = substring->length; - PyObject *str; - - for (i = j = 0; i <= len - sublen; ) { - if (Py_UNICODE_MATCH(self, i, substring)) { - if (maxcount-- <= 0) - break; - SPLIT_APPEND(self->str, j, i); - i = j = i + sublen; - } else - i++; - } - if (j <= len) { - SPLIT_APPEND(self->str, j, len); - } - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -static -PyObject *rsplit_whitespace(PyUnicodeObject *self, - PyObject *list, - Py_ssize_t maxcount) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len = self->length; - PyObject *str; - register const Py_UNICODE *buf = self->str; - - for (i = j = len - 1; i >= 0; ) { - /* find a token */ - while (i >= 0 && Py_UNICODE_ISSPACE(buf[i])) - i--; - j = i; - while (i >= 0 && !Py_UNICODE_ISSPACE(buf[i])) - i--; - if (j > i) { - if (maxcount-- <= 0) - break; - SPLIT_APPEND(buf, i + 1, j + 1); - while (i >= 0 && Py_UNICODE_ISSPACE(buf[i])) - i--; - j = i; - } - } - if (j >= 0) { - SPLIT_APPEND(buf, 0, j + 1); - } - if (PyList_Reverse(list) < 0) - goto onError; - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -static -PyObject *rsplit_char(PyUnicodeObject *self, - PyObject *list, - Py_UNICODE ch, - Py_ssize_t maxcount) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len = self->length; - PyObject *str; - register const Py_UNICODE *buf = self->str; - - for (i = j = len - 1; i >= 0; ) { - if (buf[i] == ch) { - if (maxcount-- <= 0) - break; - SPLIT_APPEND(buf, i + 1, j + 1); - j = i = i - 1; - } else - i--; - } - if (j >= -1) { - SPLIT_APPEND(buf, 0, j + 1); - } - if (PyList_Reverse(list) < 0) - goto onError; - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -static -PyObject *rsplit_substring(PyUnicodeObject *self, - PyObject *list, - PyUnicodeObject *substring, - Py_ssize_t maxcount) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len = self->length; - Py_ssize_t sublen = substring->length; - PyObject *str; - - for (i = len - sublen, j = len; i >= 0; ) { - if (Py_UNICODE_MATCH(self, i, substring)) { - if (maxcount-- <= 0) - break; - SPLIT_APPEND(self->str, i + sublen, j); - j = i; - i -= sublen; - } else - i--; - } - if (j >= 0) { - SPLIT_APPEND(self->str, 0, j); - } - if (PyList_Reverse(list) < 0) - goto onError; - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -#undef SPLIT_APPEND - -static PyObject *split(PyUnicodeObject *self, PyUnicodeObject *substring, Py_ssize_t maxcount) { - PyObject *list; - if (maxcount < 0) maxcount = PY_SSIZE_T_MAX; - list = PyList_New(0); - if (!list) - return NULL; - if (substring == NULL) - return split_whitespace(self,list,maxcount); - - else if (substring->length == 1) - return split_char(self,list,substring->str[0],maxcount); + return stringlib_split_whitespace( + (PyObject*) self, self->str, self->length, maxcount + ); - else if (substring->length == 0) { - Py_DECREF(list); - PyErr_SetString(PyExc_ValueError, "empty separator"); - return NULL; - } - else - return split_substring(self,list,substring,maxcount); + return stringlib_split( + (PyObject*) self, self->str, self->length, + substring->str, substring->length, + maxcount + ); } static @@ -6620,28 +6357,19 @@ PyUnicodeObject *substring, Py_ssize_t maxcount) { - PyObject *list; - if (maxcount < 0) maxcount = PY_SSIZE_T_MAX; - list = PyList_New(0); - if (!list) - return NULL; - if (substring == NULL) - return rsplit_whitespace(self,list,maxcount); - - else if (substring->length == 1) - return rsplit_char(self,list,substring->str[0],maxcount); + return stringlib_rsplit_whitespace( + (PyObject*) self, self->str, self->length, maxcount + ); - else if (substring->length == 0) { - Py_DECREF(list); - PyErr_SetString(PyExc_ValueError, "empty separator"); - return NULL; - } - else - return rsplit_substring(self,list,substring,maxcount); + return stringlib_rsplit( + (PyObject*) self, self->str, self->length, + substring->str, substring->length, + maxcount + ); } static @@ -6654,9 +6382,13 @@ if (maxcount < 0) maxcount = PY_SSIZE_T_MAX; + else if (maxcount == 0 || self->length == 0) + goto nothing; if (str1->length == str2->length) { /* same length */ + if (str1->length == 0) + goto nothing; Py_ssize_t i; if (str1->length == 1) { /* replace characters */ @@ -6676,8 +6408,8 @@ u->str[i] = u2; } } else { - i = fastsearch( - self->str, self->length, str1->str, str1->length, FAST_SEARCH + i = stringlib_find( + self->str, self->length, str1->str, str1->length, 0 ); if (i < 0) goto nothing; @@ -6685,14 +6417,20 @@ if (!u) return NULL; Py_UNICODE_COPY(u->str, self->str, self->length); - while (i <= self->length - str1->length) - if (Py_UNICODE_MATCH(self, i, str1)) { - if (--maxcount < 0) - break; - Py_UNICODE_COPY(u->str+i, str2->str, str2->length); - i += str1->length; - } else - i++; + + /* change everything in-place, starting with this one */ + Py_UNICODE_COPY(u->str+i, str2->str, str2->length); + i += str1->length; + + while ( --maxcount > 0) { + i = stringlib_find(self->str+i, self->length-i, + str1->str, str1->length, + i); + if (i == -1) + break; + Py_UNICODE_COPY(u->str+i, str2->str, str2->length); + i += str1->length; + } } } else { @@ -6701,9 +6439,8 @@ Py_UNICODE *p; /* replace strings */ - n = stringlib_count(self->str, self->length, str1->str, str1->length); - if (n > maxcount) - n = maxcount; + n = stringlib_count(self->str, self->length, str1->str, str1->length, + maxcount); if (n == 0) goto nothing; /* new_size = self->length + n * (str2->length - str1->length)); */ @@ -6733,15 +6470,12 @@ if (str1->length > 0) { while (n-- > 0) { /* look for next match */ - j = i; - while (j <= e) { - if (Py_UNICODE_MATCH(self, j, str1)) - break; - j++; - } - if (j > i) { - if (j > e) - break; + j = stringlib_find(self->str+i, self->length-i, + str1->str, str1->length, + i); + if (j == -1) + break; + else if (j > i) { /* copy unchanged part [i:j] */ Py_UNICODE_COPY(p, self->str+i, j-i); p += j - i; @@ -7192,11 +6926,11 @@ if (substring == NULL) return NULL; - FIX_START_END(self); - + ADJUST_INDICES(start, end, self->length); result = PyLong_FromSsize_t( stringlib_count(self->str + start, end - start, - substring->str, substring->length) + substring->str, substring->length, + PY_SSIZE_T_MAX) ); Py_DECREF(substring); @@ -10066,11 +9800,3 @@ #ifdef __cplusplus } #endif - - -/* - Local variables: - c-basic-offset: 4 - indent-tabs-mode: nil - End: -*/ Modified: python/branches/py3k/PC/VS8.0/pythoncore.vcproj ============================================================================== --- python/branches/py3k/PC/VS8.0/pythoncore.vcproj (original) +++ python/branches/py3k/PC/VS8.0/pythoncore.vcproj Wed Jan 13 09:07:53 2010 @@ -1491,6 +1491,10 @@ > + + Modified: python/branches/py3k/PCbuild/pythoncore.vcproj ============================================================================== --- python/branches/py3k/PCbuild/pythoncore.vcproj (original) +++ python/branches/py3k/PCbuild/pythoncore.vcproj Wed Jan 13 09:07:53 2010 @@ -1496,6 +1496,10 @@ > + + From python-checkins at python.org Wed Jan 13 09:55:20 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 13 Jan 2010 08:55:20 -0000 Subject: [Python-checkins] r77463 - python/trunk/Objects/unicodeobject.c Message-ID: Author: antoine.pitrou Date: Wed Jan 13 09:55:20 2010 New Revision: 77463 Log: Fix Windows build (re r77461) Modified: python/trunk/Objects/unicodeobject.c Modified: python/trunk/Objects/unicodeobject.c ============================================================================== --- python/trunk/Objects/unicodeobject.c (original) +++ python/trunk/Objects/unicodeobject.c Wed Jan 13 09:55:20 2010 @@ -5791,10 +5791,10 @@ goto nothing; if (str1->length == str2->length) { + Py_ssize_t i; /* same length */ if (str1->length == 0) goto nothing; - Py_ssize_t i; if (str1->length == 1) { /* replace characters */ Py_UNICODE u1, u2; From python-checkins at python.org Wed Jan 13 09:58:08 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 13 Jan 2010 08:58:08 -0000 Subject: [Python-checkins] r77464 - in python/branches/py3k: Objects/unicodeobject.c Message-ID: Author: antoine.pitrou Date: Wed Jan 13 09:58:08 2010 New Revision: 77464 Log: Merged revisions 77463 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77463 | antoine.pitrou | 2010-01-13 09:55:20 +0100 (mer., 13 janv. 2010) | 3 lines Fix Windows build (re r77461) ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Objects/unicodeobject.c Modified: python/branches/py3k/Objects/unicodeobject.c ============================================================================== --- python/branches/py3k/Objects/unicodeobject.c (original) +++ python/branches/py3k/Objects/unicodeobject.c Wed Jan 13 09:58:08 2010 @@ -6386,10 +6386,10 @@ goto nothing; if (str1->length == str2->length) { + Py_ssize_t i; /* same length */ if (str1->length == 0) goto nothing; - Py_ssize_t i; if (str1->length == 1) { /* replace characters */ Py_UNICODE u1, u2; From nnorwitz at gmail.com Wed Jan 13 10:15:53 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 13 Jan 2010 04:15:53 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100113091553.GA19464@kbk-i386-bb.psfb.org> 342 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.534s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 342 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [871595 refs] From python-checkins at python.org Wed Jan 13 10:19:15 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 13 Jan 2010 09:19:15 -0000 Subject: [Python-checkins] r77465 - python/branches/py3k/Objects/stringlib/split.h Message-ID: Author: antoine.pitrou Date: Wed Jan 13 10:19:15 2010 New Revision: 77465 Log: svnmerge duplicated contents of Objects/stringlib/split.h Modified: python/branches/py3k/Objects/stringlib/split.h Modified: python/branches/py3k/Objects/stringlib/split.h ============================================================================== --- python/branches/py3k/Objects/stringlib/split.h (original) +++ python/branches/py3k/Objects/stringlib/split.h Wed Jan 13 10:19:15 2010 @@ -392,397 +392,3 @@ } #endif -/* stringlib: split implementation */ - -#ifndef STRINGLIB_SPLIT_H -#define STRINGLIB_SPLIT_H - -#ifndef STRINGLIB_FASTSEARCH_H -#error must include "stringlib/fastsearch.h" before including this module -#endif - -/* Overallocate the initial list to reduce the number of reallocs for small - split sizes. Eg, "A A A A A A A A A A".split() (10 elements) has three - resizes, to sizes 4, 8, then 16. Most observed string splits are for human - text (roughly 11 words per line) and field delimited data (usually 1-10 - fields). For large strings the split algorithms are bandwidth limited - so increasing the preallocation likely will not improve things.*/ - -#define MAX_PREALLOC 12 - -/* 5 splits gives 6 elements */ -#define PREALLOC_SIZE(maxsplit) \ - (maxsplit >= MAX_PREALLOC ? MAX_PREALLOC : maxsplit+1) - -#define SPLIT_APPEND(data, left, right) \ - sub = STRINGLIB_NEW((data) + (left), \ - (right) - (left)); \ - if (sub == NULL) \ - goto onError; \ - if (PyList_Append(list, sub)) { \ - Py_DECREF(sub); \ - goto onError; \ - } \ - else \ - Py_DECREF(sub); - -#define SPLIT_ADD(data, left, right) { \ - sub = STRINGLIB_NEW((data) + (left), \ - (right) - (left)); \ - if (sub == NULL) \ - goto onError; \ - if (count < MAX_PREALLOC) { \ - PyList_SET_ITEM(list, count, sub); \ - } else { \ - if (PyList_Append(list, sub)) { \ - Py_DECREF(sub); \ - goto onError; \ - } \ - else \ - Py_DECREF(sub); \ - } \ - count++; } - - -/* Always force the list to the expected size. */ -#define FIX_PREALLOC_SIZE(list) Py_SIZE(list) = count - -Py_LOCAL_INLINE(PyObject *) -stringlib_split_whitespace(PyObject* str_obj, - const STRINGLIB_CHAR* str, Py_ssize_t str_len, - Py_ssize_t maxcount) -{ - Py_ssize_t i, j, count=0; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - PyObject *sub; - - if (list == NULL) - return NULL; - - i = j = 0; - while (maxcount-- > 0) { - while (i < str_len && STRINGLIB_ISSPACE(str[i])) - i++; - if (i == str_len) break; - j = i; i++; - while (i < str_len && !STRINGLIB_ISSPACE(str[i])) - i++; -#ifndef STRINGLIB_MUTABLE - if (j == 0 && i == str_len && STRINGLIB_CHECK_EXACT(str_obj)) { - /* No whitespace in str_obj, so just use it as list[0] */ - Py_INCREF(str_obj); - PyList_SET_ITEM(list, 0, (PyObject *)str_obj); - count++; - break; - } -#endif - SPLIT_ADD(str, j, i); - } - - if (i < str_len) { - /* Only occurs when maxcount was reached */ - /* Skip any remaining whitespace and copy to end of string */ - while (i < str_len && STRINGLIB_ISSPACE(str[i])) - i++; - if (i != str_len) - SPLIT_ADD(str, i, str_len); - } - FIX_PREALLOC_SIZE(list); - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -Py_LOCAL_INLINE(PyObject *) -stringlib_split_char(PyObject* str_obj, - const STRINGLIB_CHAR* str, Py_ssize_t str_len, - const STRINGLIB_CHAR ch, - Py_ssize_t maxcount) -{ - Py_ssize_t i, j, count=0; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - PyObject *sub; - - if (list == NULL) - return NULL; - - i = j = 0; - while ((j < str_len) && (maxcount-- > 0)) { - for(; j < str_len; j++) { - /* I found that using memchr makes no difference */ - if (str[j] == ch) { - SPLIT_ADD(str, i, j); - i = j = j + 1; - break; - } - } - } -#ifndef STRINGLIB_MUTABLE - if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) { - /* ch not in str_obj, so just use str_obj as list[0] */ - Py_INCREF(str_obj); - PyList_SET_ITEM(list, 0, (PyObject *)str_obj); - count++; - } else -#endif - if (i <= str_len) { - SPLIT_ADD(str, i, str_len); - } - FIX_PREALLOC_SIZE(list); - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -Py_LOCAL_INLINE(PyObject *) -stringlib_split(PyObject* str_obj, - const STRINGLIB_CHAR* str, Py_ssize_t str_len, - const STRINGLIB_CHAR* sep, Py_ssize_t sep_len, - Py_ssize_t maxcount) -{ - Py_ssize_t i, j, pos, count=0; - PyObject *list, *sub; - - if (sep_len == 0) { - PyErr_SetString(PyExc_ValueError, "empty separator"); - return NULL; - } - else if (sep_len == 1) - return stringlib_split_char(str_obj, str, str_len, sep[0], maxcount); - - list = PyList_New(PREALLOC_SIZE(maxcount)); - if (list == NULL) - return NULL; - - i = j = 0; - while (maxcount-- > 0) { - pos = fastsearch(str+i, str_len-i, sep, sep_len, -1, FAST_SEARCH); - if (pos < 0) - break; - j = i + pos; - SPLIT_ADD(str, i, j); - i = j + sep_len; - } -#ifndef STRINGLIB_MUTABLE - if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) { - /* No match in str_obj, so just use it as list[0] */ - Py_INCREF(str_obj); - PyList_SET_ITEM(list, 0, (PyObject *)str_obj); - count++; - } else -#endif - { - SPLIT_ADD(str, i, str_len); - } - FIX_PREALLOC_SIZE(list); - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -Py_LOCAL_INLINE(PyObject *) -stringlib_rsplit_whitespace(PyObject* str_obj, - const STRINGLIB_CHAR* str, Py_ssize_t str_len, - Py_ssize_t maxcount) -{ - Py_ssize_t i, j, count=0; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - PyObject *sub; - - if (list == NULL) - return NULL; - - i = j = str_len - 1; - while (maxcount-- > 0) { - while (i >= 0 && STRINGLIB_ISSPACE(str[i])) - i--; - if (i < 0) break; - j = i; i--; - while (i >= 0 && !STRINGLIB_ISSPACE(str[i])) - i--; -#ifndef STRINGLIB_MUTABLE - if (j == str_len - 1 && i < 0 && STRINGLIB_CHECK_EXACT(str_obj)) { - /* No whitespace in str_obj, so just use it as list[0] */ - Py_INCREF(str_obj); - PyList_SET_ITEM(list, 0, (PyObject *)str_obj); - count++; - break; - } -#endif - SPLIT_ADD(str, i + 1, j + 1); - } - - if (i >= 0) { - /* Only occurs when maxcount was reached */ - /* Skip any remaining whitespace and copy to beginning of string */ - while (i >= 0 && STRINGLIB_ISSPACE(str[i])) - i--; - if (i >= 0) - SPLIT_ADD(str, 0, i + 1); - } - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -Py_LOCAL_INLINE(PyObject *) -stringlib_rsplit_char(PyObject* str_obj, - const STRINGLIB_CHAR* str, Py_ssize_t str_len, - const STRINGLIB_CHAR ch, - Py_ssize_t maxcount) -{ - Py_ssize_t i, j, count=0; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - PyObject *sub; - - if (list == NULL) - return NULL; - - i = j = str_len - 1; - while ((i >= 0) && (maxcount-- > 0)) { - for(; i >= 0; i--) { - if (str[i] == ch) { - SPLIT_ADD(str, i + 1, j + 1); - j = i = i - 1; - break; - } - } - } -#ifndef STRINGLIB_MUTABLE - if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) { - /* ch not in str_obj, so just use str_obj as list[0] */ - Py_INCREF(str_obj); - PyList_SET_ITEM(list, 0, (PyObject *)str_obj); - count++; - } else -#endif - if (j >= -1) { - SPLIT_ADD(str, 0, j + 1); - } - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -Py_LOCAL_INLINE(PyObject *) -stringlib_rsplit(PyObject* str_obj, - const STRINGLIB_CHAR* str, Py_ssize_t str_len, - const STRINGLIB_CHAR* sep, Py_ssize_t sep_len, - Py_ssize_t maxcount) -{ - Py_ssize_t j, pos, count=0; - PyObject *list, *sub; - - if (sep_len == 0) { - PyErr_SetString(PyExc_ValueError, "empty separator"); - return NULL; - } - else if (sep_len == 1) - return stringlib_rsplit_char(str_obj, str, str_len, sep[0], maxcount); - - list = PyList_New(PREALLOC_SIZE(maxcount)); - if (list == NULL) - return NULL; - - j = str_len; - while (maxcount-- > 0) { - pos = fastsearch(str, j, sep, sep_len, -1, FAST_RSEARCH); - if (pos < 0) - break; - SPLIT_ADD(str, pos + sep_len, j); - j = pos; - } -#ifndef STRINGLIB_MUTABLE - if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) { - /* No match in str_obj, so just use it as list[0] */ - Py_INCREF(str_obj); - PyList_SET_ITEM(list, 0, (PyObject *)str_obj); - count++; - } else -#endif - { - SPLIT_ADD(str, 0, j); - } - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -Py_LOCAL_INLINE(PyObject *) -stringlib_splitlines(PyObject* str_obj, - const STRINGLIB_CHAR* str, Py_ssize_t str_len, - int keepends) -{ - /* This does not use the preallocated list because splitlines is - usually run with hundreds of newlines. The overhead of - switching between PyList_SET_ITEM and append causes about a - 2-3% slowdown for that common case. A smarter implementation - could move the if check out, so the SET_ITEMs are done first - and the appends only done when the prealloc buffer is full. - That's too much work for little gain.*/ - - register Py_ssize_t i; - register Py_ssize_t j; - PyObject *list = PyList_New(0); - PyObject *sub; - - if (list == NULL) - return NULL; - - for (i = j = 0; i < str_len; ) { - Py_ssize_t eol; - - /* Find a line and append it */ - while (i < str_len && !STRINGLIB_ISLINEBREAK(str[i])) - i++; - - /* Skip the line break reading CRLF as one line break */ - eol = i; - if (i < str_len) { - if (str[i] == '\r' && i + 1 < str_len && str[i+1] == '\n') - i += 2; - else - i++; - if (keepends) - eol = i; - } -#ifndef STRINGLIB_MUTABLE - if (j == 0 && eol == str_len && STRINGLIB_CHECK_EXACT(str_obj)) { - /* No linebreak in str_obj, so just use it as list[0] */ - if (PyList_Append(list, str_obj)) - goto onError; - break; - } -#endif - SPLIT_APPEND(str, j, eol); - j = i; - } - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -#endif From nnorwitz at gmail.com Wed Jan 13 10:32:30 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 13 Jan 2010 04:32:30 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100113093230.GA5192@kbk-i386-bb.psfb.org> 342 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19651 refs] [19651 refs] [19651 refs] [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 3.341s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 342 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [870493 refs] From python-checkins at python.org Wed Jan 13 12:47:49 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 13 Jan 2010 11:47:49 -0000 Subject: [Python-checkins] r77466 - in python/trunk: Misc/NEWS Modules/_ctypes/libffi/fficonfig.py.in setup.py Message-ID: Author: antoine.pitrou Date: Wed Jan 13 12:47:49 2010 New Revision: 77466 Log: Issue #7661: Allow ctypes to be built from a non-ASCII directory path. Patch by Florent Xicluna. Modified: python/trunk/Misc/NEWS python/trunk/Modules/_ctypes/libffi/fficonfig.py.in python/trunk/setup.py Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Wed Jan 13 12:47:49 2010 @@ -39,6 +39,12 @@ Extension extra options may change the output without changing the .c file). Initial patch by Collin Winter. +Build +----- + +- Issue #7661: Allow ctypes to be built from a non-ASCII directory path. + Patch by Florent Xicluna. + What's New in Python 2.7 alpha 2? ================================= Modified: python/trunk/Modules/_ctypes/libffi/fficonfig.py.in ============================================================================== --- python/trunk/Modules/_ctypes/libffi/fficonfig.py.in (original) +++ python/trunk/Modules/_ctypes/libffi/fficonfig.py.in Wed Jan 13 12:47:49 2010 @@ -28,8 +28,6 @@ 'PA_HPUX': ['src/pa/hpux32.S', 'src/pa/ffi.c'], } -ffi_srcdir = '@srcdir@' ffi_sources += ffi_platforms['@TARGET@'] -ffi_sources = [os.path.join('@srcdir@', f) for f in ffi_sources] ffi_cflags = '@CFLAGS@' Modified: python/trunk/setup.py ============================================================================== --- python/trunk/setup.py (original) +++ python/trunk/setup.py Wed Jan 13 12:47:49 2010 @@ -813,7 +813,7 @@ print "being ignored (4.6.x must be >= 4.6.21)" continue - if ( (not db_ver_inc_map.has_key(db_ver)) and + if ( (db_ver not in db_ver_inc_map) and allow_db_ver(db_ver) ): # save the include directory with the db.h version # (first occurrence only) @@ -1732,17 +1732,18 @@ return False fficonfig = {} - execfile(ffi_configfile, globals(), fficonfig) - ffi_srcdir = os.path.join(fficonfig['ffi_srcdir'], 'src') + exec open(ffi_configfile) in fficonfig # Add .S (preprocessed assembly) to C compiler source extensions. self.compiler_obj.src_extensions.append('.S') include_dirs = [os.path.join(ffi_builddir, 'include'), - ffi_builddir, ffi_srcdir] + ffi_builddir, + os.path.join(ffi_srcdir, 'src')] extra_compile_args = fficonfig['ffi_cflags'].split() - ext.sources.extend(fficonfig['ffi_sources']) + ext.sources.extend(os.path.join(ffi_srcdir, f) for f in + fficonfig['ffi_sources']) ext.include_dirs.extend(include_dirs) ext.extra_compile_args.extend(extra_compile_args) return True From python-checkins at python.org Wed Jan 13 12:57:43 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 13 Jan 2010 11:57:43 -0000 Subject: [Python-checkins] r77467 - python/trunk/setup.py Message-ID: Author: antoine.pitrou Date: Wed Jan 13 12:57:42 2010 New Revision: 77467 Log: Use `with` Modified: python/trunk/setup.py Modified: python/trunk/setup.py ============================================================================== --- python/trunk/setup.py (original) +++ python/trunk/setup.py Wed Jan 13 12:57:42 2010 @@ -1732,7 +1732,8 @@ return False fficonfig = {} - exec open(ffi_configfile) in fficonfig + with open(ffi_configfile) as f: + exec f in fficonfig # Add .S (preprocessed assembly) to C compiler source extensions. self.compiler_obj.src_extensions.append('.S') From python-checkins at python.org Wed Jan 13 13:04:20 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 13 Jan 2010 12:04:20 -0000 Subject: [Python-checkins] r77468 - in python/branches/py3k: Modules/_ctypes/libffi/fficonfig.py.in setup.py Message-ID: Author: antoine.pitrou Date: Wed Jan 13 13:04:20 2010 New Revision: 77468 Log: Note: I'm merging these changes out of consistency, but they don't seem to be needed in py3k (except perhaps for non-utf8 paths). Merged revisions 77466-77467 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77466 | antoine.pitrou | 2010-01-13 12:47:49 +0100 (mer., 13 janv. 2010) | 5 lines Issue #7661: Allow ctypes to be built from a non-ASCII directory path. Patch by Florent Xicluna. ........ r77467 | antoine.pitrou | 2010-01-13 12:57:42 +0100 (mer., 13 janv. 2010) | 3 lines Use `with` ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Modules/_ctypes/libffi/fficonfig.py.in python/branches/py3k/setup.py Modified: python/branches/py3k/Modules/_ctypes/libffi/fficonfig.py.in ============================================================================== --- python/branches/py3k/Modules/_ctypes/libffi/fficonfig.py.in (original) +++ python/branches/py3k/Modules/_ctypes/libffi/fficonfig.py.in Wed Jan 13 13:04:20 2010 @@ -28,8 +28,6 @@ 'PA_HPUX': ['src/pa/hpux32.S', 'src/pa/ffi.c'], } -ffi_srcdir = '@srcdir@' ffi_sources += ffi_platforms['@TARGET@'] -ffi_sources = [os.path.join('@srcdir@', f) for f in ffi_sources] ffi_cflags = '@CFLAGS@' Modified: python/branches/py3k/setup.py ============================================================================== --- python/branches/py3k/setup.py (original) +++ python/branches/py3k/setup.py Wed Jan 13 13:04:20 2010 @@ -1498,22 +1498,19 @@ return False fficonfig = {} - fp = open(ffi_configfile) - try: - script = fp.read() - finally: - fp.close() - exec(script, globals(), fficonfig) - ffi_srcdir = os.path.join(fficonfig['ffi_srcdir'], 'src') + with open(ffi_configfile) as f: + exec(f.read(), globals(), fficonfig) # Add .S (preprocessed assembly) to C compiler source extensions. self.compiler_obj.src_extensions.append('.S') include_dirs = [os.path.join(ffi_builddir, 'include'), - ffi_builddir, ffi_srcdir] + ffi_builddir, + os.path.join(ffi_srcdir, 'src')] extra_compile_args = fficonfig['ffi_cflags'].split() - ext.sources.extend(fficonfig['ffi_sources']) + ext.sources.extend(os.path.join(ffi_srcdir, f) for f in + fficonfig['ffi_sources']) ext.include_dirs.extend(include_dirs) ext.extra_compile_args.extend(extra_compile_args) return True From nnorwitz at gmail.com Wed Jan 13 14:23:12 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 13 Jan 2010 08:23:12 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100113132312.GA3011@kbk-i386-bb.psfb.org> 348 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-28135 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.531s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 348 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [888107 refs] From python-checkins at python.org Wed Jan 13 14:43:37 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 13 Jan 2010 13:43:37 -0000 Subject: [Python-checkins] r77469 - python/trunk/Objects/stringlib/fastsearch.h Message-ID: Author: antoine.pitrou Date: Wed Jan 13 14:43:37 2010 New Revision: 77469 Log: Test commit to try to diagnose failures of the IA-64 buildbot Modified: python/trunk/Objects/stringlib/fastsearch.h Modified: python/trunk/Objects/stringlib/fastsearch.h ============================================================================== --- python/trunk/Objects/stringlib/fastsearch.h (original) +++ python/trunk/Objects/stringlib/fastsearch.h Wed Jan 13 14:43:37 2010 @@ -18,8 +18,8 @@ #define FAST_SEARCH 1 #define FAST_RSEARCH 2 -#define BLOOM_ADD(mask, ch) ((mask |= (1 << ((ch) & (LONG_BIT - 1))))) -#define BLOOM(mask, ch) ((mask & (1 << ((ch) & (LONG_BIT - 1))))) +#define BLOOM_ADD(mask, ch) ((mask |= (1 << ((ch) & 0x1F)))) +#define BLOOM(mask, ch) ((mask & (1 << ((ch) & 0x1F)))) Py_LOCAL_INLINE(Py_ssize_t) fastsearch(const STRINGLIB_CHAR* s, Py_ssize_t n, From python-checkins at python.org Wed Jan 13 15:01:26 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 13 Jan 2010 14:01:26 -0000 Subject: [Python-checkins] r77470 - in python/trunk/Objects: stringlib/fastsearch.h unicodeobject.c Message-ID: Author: antoine.pitrou Date: Wed Jan 13 15:01:26 2010 New Revision: 77470 Log: Sanitize bloom filter macros Modified: python/trunk/Objects/stringlib/fastsearch.h python/trunk/Objects/unicodeobject.c Modified: python/trunk/Objects/stringlib/fastsearch.h ============================================================================== --- python/trunk/Objects/stringlib/fastsearch.h (original) +++ python/trunk/Objects/stringlib/fastsearch.h Wed Jan 13 15:01:26 2010 @@ -18,15 +18,27 @@ #define FAST_SEARCH 1 #define FAST_RSEARCH 2 -#define BLOOM_ADD(mask, ch) ((mask |= (1 << ((ch) & 0x1F)))) -#define BLOOM(mask, ch) ((mask & (1 << ((ch) & 0x1F)))) +#if LONG_BIT >= 128 +#define STRINGLIB_BLOOM_WIDTH 128 +#elif LONG_BIT >= 64 +#define STRINGLIB_BLOOM_WIDTH 64 +#elif LONG_BIT >= 32 +#define STRINGLIB_BLOOM_WIDTH 32 +#else +#error "LONG_BIT is smaller than 32" +#endif + +#define STRINGLIB_BLOOM_ADD(mask, ch) \ + ((mask |= (1UL << ((ch) & (STRINGLIB_BLOOM_WIDTH -1))))) +#define STRINGLIB_BLOOM(mask, ch) \ + ((mask & (1UL << ((ch) & (STRINGLIB_BLOOM_WIDTH -1))))) Py_LOCAL_INLINE(Py_ssize_t) fastsearch(const STRINGLIB_CHAR* s, Py_ssize_t n, const STRINGLIB_CHAR* p, Py_ssize_t m, Py_ssize_t maxcount, int mode) { - long mask; + unsigned long mask; Py_ssize_t skip, count = 0; Py_ssize_t i, j, mlast, w; @@ -70,12 +82,12 @@ /* process pattern[:-1] */ for (i = 0; i < mlast; i++) { - BLOOM_ADD(mask, p[i]); + STRINGLIB_BLOOM_ADD(mask, p[i]); if (p[i] == p[mlast]) skip = mlast - i - 1; } /* process pattern[-1] outside the loop */ - BLOOM_ADD(mask, p[mlast]); + STRINGLIB_BLOOM_ADD(mask, p[mlast]); for (i = 0; i <= w; i++) { /* note: using mlast in the skip path slows things down on x86 */ @@ -95,13 +107,13 @@ continue; } /* miss: check if next character is part of pattern */ - if (!BLOOM(mask, s[i+m])) + if (!STRINGLIB_BLOOM(mask, s[i+m])) i = i + m; else i = i + skip; } else { /* skip: check if next character is part of pattern */ - if (!BLOOM(mask, s[i+m])) + if (!STRINGLIB_BLOOM(mask, s[i+m])) i = i + m; } } @@ -110,10 +122,10 @@ /* create compressed boyer-moore delta 1 table */ /* process pattern[0] outside the loop */ - BLOOM_ADD(mask, p[0]); + STRINGLIB_BLOOM_ADD(mask, p[0]); /* process pattern[:0:-1] */ for (i = mlast; i > 0; i--) { - BLOOM_ADD(mask, p[i]); + STRINGLIB_BLOOM_ADD(mask, p[i]); if (p[i] == p[0]) skip = i - 1; } @@ -128,13 +140,13 @@ /* got a match! */ return i; /* miss: check if previous character is part of pattern */ - if (!BLOOM(mask, s[i-1])) + if (!STRINGLIB_BLOOM(mask, s[i-1])) i = i - m; else i = i - skip; } else { /* skip: check if previous character is part of pattern */ - if (!BLOOM(mask, s[i-1])) + if (!STRINGLIB_BLOOM(mask, s[i-1])) i = i - m; } } Modified: python/trunk/Objects/unicodeobject.c ============================================================================== --- python/trunk/Objects/unicodeobject.c (original) +++ python/trunk/Objects/unicodeobject.c Wed Jan 13 15:01:26 2010 @@ -190,12 +190,22 @@ /* the linebreak mask is set up by Unicode_Init below */ +#if LONG_BIT >= 128 +#define BLOOM_WIDTH 128 +#elif LONG_BIT >= 64 +#define BLOOM_WIDTH 64 +#elif LONG_BIT >= 32 +#define BLOOM_WIDTH 32 +#else +#error "LONG_BIT is smaller than 32" +#endif + #define BLOOM_MASK unsigned long static BLOOM_MASK bloom_linebreak; -#define BLOOM_ADD(mask, ch) ((mask |= (1 << ((ch) & (LONG_BIT - 1))))) -#define BLOOM(mask, ch) ((mask & (1 << ((ch) & (LONG_BIT - 1))))) +#define BLOOM_ADD(mask, ch) ((mask |= (1UL << ((ch) & (BLOOM_WIDTH - 1))))) +#define BLOOM(mask, ch) ((mask & (1UL << ((ch) & (BLOOM_WIDTH - 1))))) #define BLOOM_LINEBREAK(ch) \ ((ch) < 128U ? ascii_linebreak[(ch)] : \ @@ -205,7 +215,7 @@ { /* calculate simple bloom-style bitmask for a given unicode string */ - long mask; + BLOOM_MASK mask; Py_ssize_t i; mask = 0; From python-checkins at python.org Wed Jan 13 15:19:13 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 13 Jan 2010 14:19:13 -0000 Subject: [Python-checkins] r77471 - in python/branches/py3k: Objects/stringlib/fastsearch.h Objects/unicodeobject.c Message-ID: Author: antoine.pitrou Date: Wed Jan 13 15:19:12 2010 New Revision: 77471 Log: Merged revisions 77469-77470 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77469 | antoine.pitrou | 2010-01-13 14:43:37 +0100 (mer., 13 janv. 2010) | 3 lines Test commit to try to diagnose failures of the IA-64 buildbot ........ r77470 | antoine.pitrou | 2010-01-13 15:01:26 +0100 (mer., 13 janv. 2010) | 3 lines Sanitize bloom filter macros ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Objects/stringlib/fastsearch.h python/branches/py3k/Objects/unicodeobject.c Modified: python/branches/py3k/Objects/stringlib/fastsearch.h ============================================================================== --- python/branches/py3k/Objects/stringlib/fastsearch.h (original) +++ python/branches/py3k/Objects/stringlib/fastsearch.h Wed Jan 13 15:19:12 2010 @@ -18,15 +18,27 @@ #define FAST_SEARCH 1 #define FAST_RSEARCH 2 -#define BLOOM_ADD(mask, ch) ((mask |= (1 << ((ch) & (LONG_BIT - 1))))) -#define BLOOM(mask, ch) ((mask & (1 << ((ch) & (LONG_BIT - 1))))) +#if LONG_BIT >= 128 +#define STRINGLIB_BLOOM_WIDTH 128 +#elif LONG_BIT >= 64 +#define STRINGLIB_BLOOM_WIDTH 64 +#elif LONG_BIT >= 32 +#define STRINGLIB_BLOOM_WIDTH 32 +#else +#error "LONG_BIT is smaller than 32" +#endif + +#define STRINGLIB_BLOOM_ADD(mask, ch) \ + ((mask |= (1UL << ((ch) & (STRINGLIB_BLOOM_WIDTH -1))))) +#define STRINGLIB_BLOOM(mask, ch) \ + ((mask & (1UL << ((ch) & (STRINGLIB_BLOOM_WIDTH -1))))) Py_LOCAL_INLINE(Py_ssize_t) fastsearch(const STRINGLIB_CHAR* s, Py_ssize_t n, const STRINGLIB_CHAR* p, Py_ssize_t m, Py_ssize_t maxcount, int mode) { - long mask; + unsigned long mask; Py_ssize_t skip, count = 0; Py_ssize_t i, j, mlast, w; @@ -70,12 +82,12 @@ /* process pattern[:-1] */ for (i = 0; i < mlast; i++) { - BLOOM_ADD(mask, p[i]); + STRINGLIB_BLOOM_ADD(mask, p[i]); if (p[i] == p[mlast]) skip = mlast - i - 1; } /* process pattern[-1] outside the loop */ - BLOOM_ADD(mask, p[mlast]); + STRINGLIB_BLOOM_ADD(mask, p[mlast]); for (i = 0; i <= w; i++) { /* note: using mlast in the skip path slows things down on x86 */ @@ -95,13 +107,13 @@ continue; } /* miss: check if next character is part of pattern */ - if (!BLOOM(mask, s[i+m])) + if (!STRINGLIB_BLOOM(mask, s[i+m])) i = i + m; else i = i + skip; } else { /* skip: check if next character is part of pattern */ - if (!BLOOM(mask, s[i+m])) + if (!STRINGLIB_BLOOM(mask, s[i+m])) i = i + m; } } @@ -110,10 +122,10 @@ /* create compressed boyer-moore delta 1 table */ /* process pattern[0] outside the loop */ - BLOOM_ADD(mask, p[0]); + STRINGLIB_BLOOM_ADD(mask, p[0]); /* process pattern[:0:-1] */ for (i = mlast; i > 0; i--) { - BLOOM_ADD(mask, p[i]); + STRINGLIB_BLOOM_ADD(mask, p[i]); if (p[i] == p[0]) skip = i - 1; } @@ -128,13 +140,13 @@ /* got a match! */ return i; /* miss: check if previous character is part of pattern */ - if (!BLOOM(mask, s[i-1])) + if (!STRINGLIB_BLOOM(mask, s[i-1])) i = i - m; else i = i - skip; } else { /* skip: check if previous character is part of pattern */ - if (!BLOOM(mask, s[i-1])) + if (!STRINGLIB_BLOOM(mask, s[i-1])) i = i - m; } } Modified: python/branches/py3k/Objects/unicodeobject.c ============================================================================== --- python/branches/py3k/Objects/unicodeobject.c (original) +++ python/branches/py3k/Objects/unicodeobject.c Wed Jan 13 15:19:12 2010 @@ -206,12 +206,22 @@ /* the linebreak mask is set up by Unicode_Init below */ +#if LONG_BIT >= 128 +#define BLOOM_WIDTH 128 +#elif LONG_BIT >= 64 +#define BLOOM_WIDTH 64 +#elif LONG_BIT >= 32 +#define BLOOM_WIDTH 32 +#else +#error "LONG_BIT is smaller than 32" +#endif + #define BLOOM_MASK unsigned long static BLOOM_MASK bloom_linebreak; -#define BLOOM_ADD(mask, ch) ((mask |= (1 << ((ch) & (LONG_BIT - 1))))) -#define BLOOM(mask, ch) ((mask & (1 << ((ch) & (LONG_BIT - 1))))) +#define BLOOM_ADD(mask, ch) ((mask |= (1UL << ((ch) & (BLOOM_WIDTH - 1))))) +#define BLOOM(mask, ch) ((mask & (1UL << ((ch) & (BLOOM_WIDTH - 1))))) #define BLOOM_LINEBREAK(ch) \ ((ch) < 128U ? ascii_linebreak[(ch)] : \ @@ -221,7 +231,7 @@ { /* calculate simple bloom-style bitmask for a given unicode string */ - long mask; + BLOOM_MASK mask; Py_ssize_t i; mask = 0; From python-checkins at python.org Wed Jan 13 15:32:11 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 13 Jan 2010 14:32:11 -0000 Subject: [Python-checkins] r77472 - in python/trunk: Doc/library/gzip.rst Lib/gzip.py Lib/test/test_gzip.py Misc/NEWS Message-ID: Author: antoine.pitrou Date: Wed Jan 13 15:32:10 2010 New Revision: 77472 Log: Issue #2846: Add support for gzip.GzipFile reading zero-padded files. Patch by Brian Curtin. Modified: python/trunk/Doc/library/gzip.rst python/trunk/Lib/gzip.py python/trunk/Lib/test/test_gzip.py python/trunk/Misc/NEWS Modified: python/trunk/Doc/library/gzip.rst ============================================================================== --- python/trunk/Doc/library/gzip.rst (original) +++ python/trunk/Doc/library/gzip.rst Wed Jan 13 15:32:10 2010 @@ -72,6 +72,9 @@ .. versionchanged:: 2.7 Support for the :keyword:`with` statement was added. + .. versionchanged:: 2.7 + Support for zero-padded files was added. + .. function:: open(filename[, mode[, compresslevel]]) Modified: python/trunk/Lib/gzip.py ============================================================================== --- python/trunk/Lib/gzip.py (original) +++ python/trunk/Lib/gzip.py Wed Jan 13 15:32:10 2010 @@ -330,6 +330,15 @@ elif isize != (self.size & 0xffffffffL): raise IOError, "Incorrect length of data produced" + # Gzip files can be padded with zeroes and still have archives. + # Consume all zero bytes and set the file position to the first + # non-zero byte. See http://www.gzip.org/#faq8 + c = "\x00" + while c == "\x00": + c = self.fileobj.read(1) + if c: + self.fileobj.seek(-1, 1) + @property def closed(self): return self.fileobj is None Modified: python/trunk/Lib/test/test_gzip.py ============================================================================== --- python/trunk/Lib/test/test_gzip.py (original) +++ python/trunk/Lib/test/test_gzip.py Wed Jan 13 15:32:10 2010 @@ -252,6 +252,18 @@ else: self.fail("1/0 didn't raise an exception") + def test_zero_padded_file(self): + with gzip.GzipFile(self.filename, "wb") as f: + f.write(data1 * 50) + + # Pad the file with zeroes + with open(self.filename, "ab") as f: + f.write("\x00" * 50) + + with gzip.GzipFile(self.filename, "rb") as f: + d = f.read() + self.assertEqual(d, data1 * 50, "Incorrect data in file") + def test_main(verbose=None): test_support.run_unittest(TestGzip) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Wed Jan 13 15:32:10 2010 @@ -32,6 +32,9 @@ Library ------- +- Issue #2846: Add support for gzip.GzipFile reading zero-padded files. + Patch by Brian Curtin. + - Issue #5827: Make sure that normpath preserves unicode. Initial patch by Matt Giuca. From python-checkins at python.org Wed Jan 13 15:32:51 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 13 Jan 2010 14:32:51 -0000 Subject: [Python-checkins] r77473 - python/trunk/Misc/ACKS Message-ID: Author: antoine.pitrou Date: Wed Jan 13 15:32:51 2010 New Revision: 77473 Log: Add ACKS entry for r77472. Modified: python/trunk/Misc/ACKS Modified: python/trunk/Misc/ACKS ============================================================================== --- python/trunk/Misc/ACKS (original) +++ python/trunk/Misc/ACKS Wed Jan 13 15:32:51 2010 @@ -165,6 +165,7 @@ Drew Csillag John Cugini Tom Culliton +Brian Curtin Lisandro Dalcin Andrew Dalke Lars Damerow From python-checkins at python.org Wed Jan 13 15:37:27 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 13 Jan 2010 14:37:27 -0000 Subject: [Python-checkins] r77474 - in python/branches/py3k: Doc/library/gzip.rst Lib/gzip.py Lib/test/test_gzip.py Misc/ACKS Misc/NEWS Message-ID: Author: antoine.pitrou Date: Wed Jan 13 15:37:26 2010 New Revision: 77474 Log: Merged revisions 77472-77473 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77472 | antoine.pitrou | 2010-01-13 15:32:10 +0100 (mer., 13 janv. 2010) | 5 lines Issue #2846: Add support for gzip.GzipFile reading zero-padded files. Patch by Brian Curtin. ........ r77473 | antoine.pitrou | 2010-01-13 15:32:51 +0100 (mer., 13 janv. 2010) | 3 lines Add ACKS entry for r77472. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/library/gzip.rst python/branches/py3k/Lib/gzip.py python/branches/py3k/Lib/test/test_gzip.py python/branches/py3k/Misc/ACKS python/branches/py3k/Misc/NEWS Modified: python/branches/py3k/Doc/library/gzip.rst ============================================================================== --- python/branches/py3k/Doc/library/gzip.rst (original) +++ python/branches/py3k/Doc/library/gzip.rst Wed Jan 13 15:37:26 2010 @@ -72,6 +72,9 @@ .. versionchanged:: 3.1 Support for the :keyword:`with` statement was added. + .. versionchanged:: 3.2 + Support for zero-padded files was added. + .. function:: open(filename, mode='rb', compresslevel=9) Modified: python/branches/py3k/Lib/gzip.py ============================================================================== --- python/branches/py3k/Lib/gzip.py (original) +++ python/branches/py3k/Lib/gzip.py Wed Jan 13 15:37:26 2010 @@ -348,6 +348,15 @@ elif isize != (self.size & 0xffffffff): raise IOError("Incorrect length of data produced") + # Gzip files can be padded with zeroes and still have archives. + # Consume all zero bytes and set the file position to the first + # non-zero byte. See http://www.gzip.org/#faq8 + c = b"\x00" + while c == b"\x00": + c = self.fileobj.read(1) + if c: + self.fileobj.seek(-1, 1) + @property def closed(self): return self.fileobj is None Modified: python/branches/py3k/Lib/test/test_gzip.py ============================================================================== --- python/branches/py3k/Lib/test/test_gzip.py (original) +++ python/branches/py3k/Lib/test/test_gzip.py Wed Jan 13 15:37:26 2010 @@ -253,6 +253,18 @@ else: self.fail("1/0 didn't raise an exception") + def test_zero_padded_file(self): + with gzip.GzipFile(self.filename, "wb") as f: + f.write(data1 * 50) + + # Pad the file with zeroes + with open(self.filename, "ab") as f: + f.write(b"\x00" * 50) + + with gzip.GzipFile(self.filename, "rb") as f: + d = f.read() + self.assertEqual(d, data1 * 50, "Incorrect data in file") + def test_main(verbose=None): support.run_unittest(TestGzip) Modified: python/branches/py3k/Misc/ACKS ============================================================================== --- python/branches/py3k/Misc/ACKS (original) +++ python/branches/py3k/Misc/ACKS Wed Jan 13 15:37:26 2010 @@ -164,6 +164,7 @@ Drew Csillag John Cugini Tom Culliton +Brian Curtin Lisandro Dalcin Andrew Dalke Lars Damerow Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Wed Jan 13 15:37:26 2010 @@ -213,6 +213,9 @@ Library ------- +- Issue #2846: Add support for gzip.GzipFile reading zero-padded files. + Patch by Brian Curtin. + - Issue #7681: Use floor division in appropiate places in the wave module. - Issue #5372: Drop the reuse of .o files in Distutils' ccompiler (since From python-checkins at python.org Wed Jan 13 16:02:14 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 13 Jan 2010 15:02:14 -0000 Subject: [Python-checkins] r77475 - python/trunk/Lib/test/test_bytes.py Message-ID: Author: antoine.pitrou Date: Wed Jan 13 16:02:13 2010 New Revision: 77475 Log: Issue #7625: Add more tests that bytearray methods return new objects, even if identical. Patch by Florent Xicluna (again). Modified: python/trunk/Lib/test/test_bytes.py Modified: python/trunk/Lib/test/test_bytes.py ============================================================================== --- python/trunk/Lib/test/test_bytes.py (original) +++ python/trunk/Lib/test/test_bytes.py Wed Jan 13 16:02:13 2010 @@ -922,7 +922,13 @@ self.assertEqual(val, newval) self.assertTrue(val is not newval, methname+' returned self on a mutable object') - + for expr in ('val.split()[0]', 'val.rsplit()[0]', + 'val.partition(".")[0]', 'val.rpartition(".")[2]', + 'val.splitlines()[0]', 'val.replace("", "")'): + newval = eval(expr) + self.assertEqual(val, newval) + self.assertTrue(val is not newval, + expr+' returned val on a mutable object') class FixedStringTest(test.string_tests.BaseTest): From python-checkins at python.org Wed Jan 13 16:03:39 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 13 Jan 2010 15:03:39 -0000 Subject: [Python-checkins] r77476 - in python/branches/py3k: Lib/test/test_bytes.py Message-ID: Author: antoine.pitrou Date: Wed Jan 13 16:03:39 2010 New Revision: 77476 Log: Merged revisions 77475 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77475 | antoine.pitrou | 2010-01-13 16:02:13 +0100 (mer., 13 janv. 2010) | 4 lines Issue #7625: Add more tests that bytearray methods return new objects, even if identical. Patch by Florent Xicluna (again). ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_bytes.py Modified: python/branches/py3k/Lib/test/test_bytes.py ============================================================================== --- python/branches/py3k/Lib/test/test_bytes.py (original) +++ python/branches/py3k/Lib/test/test_bytes.py Wed Jan 13 16:03:39 2010 @@ -972,7 +972,13 @@ self.assertEqual(val, newval) self.assertTrue(val is not newval, methname+' returned self on a mutable object') - + for expr in ('val.split()[0]', 'val.rsplit()[0]', + 'val.partition(b".")[0]', 'val.rpartition(b".")[2]', + 'val.splitlines()[0]', 'val.replace(b"", b"")'): + newval = eval(expr) + self.assertEqual(val, newval) + self.assertTrue(val is not newval, + expr+' returned val on a mutable object') class FixedStringTest(test.string_tests.BaseTest): From python-checkins at python.org Wed Jan 13 19:21:54 2010 From: python-checkins at python.org (mark.dickinson) Date: Wed, 13 Jan 2010 18:21:54 -0000 Subject: [Python-checkins] r77477 - python/trunk/Python/dtoa.c Message-ID: Author: mark.dickinson Date: Wed Jan 13 19:21:53 2010 New Revision: 77477 Log: Add comments explaining the role of the bigcomp function in dtoa.c. Modified: python/trunk/Python/dtoa.c Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Wed Jan 13 19:21:53 2010 @@ -1151,7 +1151,66 @@ return ulp(x); } -/* return 0 on success, -1 on failure */ +/* The bigcomp function handles some hard cases for strtod, for inputs + with more than STRTOD_DIGLIM digits. It's called once an initial + estimate for the double corresponding to the input string has + already been obtained by the code in _Py_dg_strtod. + + The bigcomp function is only called after _Py_dg_strtod has found a + double value rv such that either rv or rv + 1ulp represents the + correctly rounded value corresponding to the original string. It + determines which of these two values is the correct one by + computing the decimal digits of rv + 0.5ulp and comparing them with + the digits of s0. + + In the following, write dv for the absolute value of the number represented + by the input string. + + Inputs: + + s0 points to the first significant digit of the input string. + + rv is a (possibly scaled) estimate for the closest double value to the + value represented by the original input to _Py_dg_strtod. If + bc->scale is nonzero, then rv/2^(bc->scale) is the approximation to + the input value. + + bc is a struct containing information gathered during the parsing and + estimation steps of _Py_dg_strtod. Description of fields follows: + + bc->dp0 gives the position of the decimal point in the input string + (if any), relative to the start of s0. If there's no decimal + point, it points to one past the last significant digit. + + bc->dp1 gives the position immediately following the decimal point in + the input string, relative to the start of s0. If there's no + decimal point, it points to one past the last significant digit. + + bc->dplen gives the length of the decimal separator. In the current + implementation, which only allows '.' as a decimal separator, it's + 1 if a separator is present in the significant digits of s0, and 0 + otherwise. + + bc->dsign is 1 if rv < decimal value, 0 if rv >= decimal value. In + normal use, it should almost always be 1 when bigcomp is entered. + + bc->e0 gives the exponent of the input value, such that dv = (integer + given by the bd->nd digits of s0) * 10**e0 + + bc->nd gives the total number of significant digits of s0. + + bc->nd0 gives the number of significant digits of s0 before the + decimal separator. If there's no decimal separator, bc->nd0 == + bc->nd. + + bc->scale is the value used to scale rv to avoid doing arithmetic with + subnormal values. It's either 0 or 2*P (=106). + + Outputs: + + On successful exit, rv/2^(bc->scale) is the closest double to dv. + + Returns 0 on success, -1 on failure (e.g., due to a failed malloc call). */ static int bigcomp(U *rv, const char *s0, BCinfo *bc) From python-checkins at python.org Wed Jan 13 20:02:38 2010 From: python-checkins at python.org (mark.dickinson) Date: Wed, 13 Jan 2010 19:02:38 -0000 Subject: [Python-checkins] r77478 - python/trunk/Python/dtoa.c Message-ID: Author: mark.dickinson Date: Wed Jan 13 20:02:37 2010 New Revision: 77478 Log: Clarify that sulp expects a nonnegative input, but that +0.0 is fine. Modified: python/trunk/Python/dtoa.c Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Wed Jan 13 20:02:37 2010 @@ -1130,11 +1130,11 @@ return q; } -/* version of ulp(x) that takes bc.scale into account. +/* sulp(x) is a version of ulp(x) that takes bc.scale into account. - Assuming that x is finite and nonzero, and x / 2^bc.scale is exactly - representable as a double, sulp(x) is equivalent to 2^bc.scale * ulp(x / - 2^bc.scale). */ + Assuming that x is finite and nonnegative (positive zero is fine + here) and x / 2^bc.scale is exactly representable as a double, + sulp(x) is equivalent to 2^bc.scale * ulp(x / 2^bc.scale). */ static double sulp(U *x, BCinfo *bc) @@ -1147,8 +1147,10 @@ word1(&u) = 0; return u.d; } - else + else { + assert(word0(x) || word1(x)); /* x != 0.0 */ return ulp(x); + } } /* The bigcomp function handles some hard cases for strtod, for inputs From python-checkins at python.org Wed Jan 13 20:21:00 2010 From: python-checkins at python.org (brett.cannon) Date: Wed, 13 Jan 2010 19:21:00 -0000 Subject: [Python-checkins] r77479 - python/branches/py3k/Doc/library/importlib.rst Message-ID: Author: brett.cannon Date: Wed Jan 13 20:21:00 2010 New Revision: 77479 Log: Fix the wrong numbering of a PEP. Modified: python/branches/py3k/Doc/library/importlib.rst Modified: python/branches/py3k/Doc/library/importlib.rst ============================================================================== --- python/branches/py3k/Doc/library/importlib.rst (original) +++ python/branches/py3k/Doc/library/importlib.rst Wed Jan 13 20:21:00 2010 @@ -54,7 +54,7 @@ :pep:`366` Main module explicit relative imports - :pep:`3128` + :pep:`3120` Using UTF-8 as the Default Source Encoding From python-checkins at python.org Wed Jan 13 20:25:46 2010 From: python-checkins at python.org (brett.cannon) Date: Wed, 13 Jan 2010 19:25:46 -0000 Subject: [Python-checkins] r77480 - in python/branches/release31-maint: Doc/library/importlib.rst Message-ID: Author: brett.cannon Date: Wed Jan 13 20:25:46 2010 New Revision: 77480 Log: Merged revisions 77479 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ........ r77479 | brett.cannon | 2010-01-13 11:21:00 -0800 (Wed, 13 Jan 2010) | 1 line Fix the wrong numbering of a PEP. ........ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Doc/library/importlib.rst Modified: python/branches/release31-maint/Doc/library/importlib.rst ============================================================================== --- python/branches/release31-maint/Doc/library/importlib.rst (original) +++ python/branches/release31-maint/Doc/library/importlib.rst Wed Jan 13 20:25:46 2010 @@ -54,7 +54,7 @@ :pep:`366` Main module explicit relative imports - :pep:`3128` + :pep:`3120` Using UTF-8 as the Default Source Encoding From python-checkins at python.org Wed Jan 13 21:55:03 2010 From: python-checkins at python.org (mark.dickinson) Date: Wed, 13 Jan 2010 20:55:03 -0000 Subject: [Python-checkins] r77481 - python/trunk/Python/dtoa.c Message-ID: Author: mark.dickinson Date: Wed Jan 13 21:55:03 2010 New Revision: 77481 Log: Simplify and annotate the bigcomp function, removing unused special cases. Modified: python/trunk/Python/dtoa.c Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Wed Jan 13 21:55:03 2010 @@ -1163,7 +1163,7 @@ correctly rounded value corresponding to the original string. It determines which of these two values is the correct one by computing the decimal digits of rv + 0.5ulp and comparing them with - the digits of s0. + the corresponding digits of s0. In the following, write dv for the absolute value of the number represented by the input string. @@ -1218,49 +1218,41 @@ bigcomp(U *rv, const char *s0, BCinfo *bc) { Bigint *b, *d; - int b2, bbits, d2, dd, dig, dsign, i, j, nd, nd0, p2, p5, speccase; + int b2, bbits, d2, dd, dig, i, j, nd, nd0, p2, p5; - dsign = bc->dsign; nd = bc->nd; nd0 = bc->nd0; p5 = nd + bc->e0; - speccase = 0; if (rv->d == 0.) { /* special case: value near underflow-to-zero */ /* threshold was rounded to zero */ - b = i2b(1); + b = i2b(0); if (b == NULL) return -1; - p2 = Emin - P + 1; - bbits = 1; - word0(rv) = (P+2) << Exp_shift; - i = 0; - { - speccase = 1; - --p2; - dsign = 0; - goto have_i; - } + p2 = Emin - P + 1; /* = -1074 for IEEE 754 binary64 */ + bbits = 0; } - else - { + else { b = d2b(rv, &p2, &bbits); if (b == NULL) return -1; + p2 -= bc->scale; } - p2 -= bc->scale; - /* floor(log2(rv)) == bbits - 1 + p2 */ - /* Check for denormal case. */ + /* now rv/2^(bc->scale) = b * 2**p2, and b has bbits significant bits */ + + /* Replace (b, p2) by (b << i, p2 - i), with i the largest integer such + that b << i has at most P significant bits and p2 - i >= Emin - P + + 1. */ i = P - bbits; - if (i > (j = P - Emin - 1 + p2)) { + j = p2 - (Emin - P + 1); + if (i > j) i = j; - } - { - b = lshift(b, ++i); - if (b == NULL) - return -1; - b->x[0] |= 1; - } - have_i: + /* increment i so that we shift b by an extra bit; then or-ing a 1 into + the lsb of b gives us rv/2^(bc->scale) + 0.5ulp. */ + b = lshift(b, ++i); + if (b == NULL) + return -1; + b->x[0] |= 1; + p2 -= p5 + i; d = i2b(1); if (d == NULL) { @@ -1363,28 +1355,12 @@ ret: Bfree(b); Bfree(d); - if (speccase) { - if (dd <= 0) - rv->d = 0.; - } - else if (dd < 0) { - if (!dsign) /* does not happen for round-near */ - retlow1: - dval(rv) -= sulp(rv, bc); - } - else if (dd > 0) { - if (dsign) { - rethi1: - dval(rv) += sulp(rv, bc); - } - } - else { + if (dd > 0) + dval(rv) += sulp(rv, bc); + else if (dd == 0) { /* Exact half-way case: apply round-even rule. */ - if (word1(rv) & 1) { - if (dsign) - goto rethi1; - goto retlow1; - } + if (word1(rv) & 1) + dval(rv) += sulp(rv, bc); } return 0; From nnorwitz at gmail.com Wed Jan 13 22:32:08 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 13 Jan 2010 16:32:08 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100113213208.GA30544@kbk-i386-bb.psfb.org> 342 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.548s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 342 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [871661 refs] From nnorwitz at gmail.com Wed Jan 13 22:48:21 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 13 Jan 2010 16:48:21 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100113214821.GA5378@kbk-i386-bb.psfb.org> 342 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19651 refs] [19651 refs] [19651 refs] [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 2.134s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 342 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [870550 refs] From python-checkins at python.org Wed Jan 13 23:15:53 2010 From: python-checkins at python.org (mark.dickinson) Date: Wed, 13 Jan 2010 22:15:53 -0000 Subject: [Python-checkins] r77482 - python/trunk/Python/dtoa.c Message-ID: Author: mark.dickinson Date: Wed Jan 13 23:15:53 2010 New Revision: 77482 Log: Fix buggy comparison: LHS of comparison was being treated as unsigned. Modified: python/trunk/Python/dtoa.c Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Wed Jan 13 23:15:53 2010 @@ -1141,7 +1141,7 @@ { U u; - if (bc->scale && 2*P + 1 - ((word0(x) & Exp_mask) >> Exp_shift) > 0) { + if (bc->scale && 2*P + 1 > (int)((word0(x) & Exp_mask) >> Exp_shift)) { /* rv/2^bc->scale is subnormal */ word0(&u) = (P+2)*Exp_msk1; word1(&u) = 0; From python-checkins at python.org Wed Jan 13 23:20:10 2010 From: python-checkins at python.org (mark.dickinson) Date: Wed, 13 Jan 2010 22:20:10 -0000 Subject: [Python-checkins] r77483 - python/trunk/Python/dtoa.c Message-ID: Author: mark.dickinson Date: Wed Jan 13 23:20:10 2010 New Revision: 77483 Log: More dtoa.c cleanup; remove the need for bc.dplen, bc.dp0 and bc.dp1. Modified: python/trunk/Python/dtoa.c Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Wed Jan 13 23:20:10 2010 @@ -270,7 +270,7 @@ typedef struct BCinfo BCinfo; struct BCinfo { - int dp0, dp1, dplen, dsign, e0, nd, nd0, scale; + int dsign, e0, nd, nd0, scale; }; #define FFFFFFFF 0xffffffffUL @@ -437,7 +437,7 @@ NULL on failure. */ static Bigint * -s2b(const char *s, int nd0, int nd, ULong y9, int dplen) +s2b(const char *s, int nd0, int nd, ULong y9) { Bigint *b; int i, k; @@ -451,18 +451,16 @@ b->x[0] = y9; b->wds = 1; - i = 9; - if (9 < nd0) { - s += 9; - do { - b = multadd(b, 10, *s++ - '0'); - if (b == NULL) - return NULL; - } while(++i < nd0); - s += dplen; + if (nd <= 9) + return b; + + s += 9; + for (i = 9; i < nd0; i++) { + b = multadd(b, 10, *s++ - '0'); + if (b == NULL) + return NULL; } - else - s += dplen + 9; + s++; for(; i < nd; i++) { b = multadd(b, 10, *s++ - '0'); if (b == NULL) @@ -1180,26 +1178,14 @@ bc is a struct containing information gathered during the parsing and estimation steps of _Py_dg_strtod. Description of fields follows: - bc->dp0 gives the position of the decimal point in the input string - (if any), relative to the start of s0. If there's no decimal - point, it points to one past the last significant digit. - - bc->dp1 gives the position immediately following the decimal point in - the input string, relative to the start of s0. If there's no - decimal point, it points to one past the last significant digit. - - bc->dplen gives the length of the decimal separator. In the current - implementation, which only allows '.' as a decimal separator, it's - 1 if a separator is present in the significant digits of s0, and 0 - otherwise. - bc->dsign is 1 if rv < decimal value, 0 if rv >= decimal value. In normal use, it should almost always be 1 when bigcomp is entered. bc->e0 gives the exponent of the input value, such that dv = (integer given by the bd->nd digits of s0) * 10**e0 - bc->nd gives the total number of significant digits of s0. + bc->nd gives the total number of significant digits of s0. It will + be at least 1. bc->nd0 gives the number of significant digits of s0 before the decimal separator. If there's no decimal separator, bc->nd0 == @@ -1218,13 +1204,14 @@ bigcomp(U *rv, const char *s0, BCinfo *bc) { Bigint *b, *d; - int b2, bbits, d2, dd, dig, i, j, nd, nd0, p2, p5; + int b2, bbits, d2, dd, i, nd, nd0, p2, p5; + dd = 0; /* silence compiler warning about possibly unused variable */ nd = bc->nd; nd0 = bc->nd0; p5 = nd + bc->e0; - if (rv->d == 0.) { /* special case: value near underflow-to-zero */ - /* threshold was rounded to zero */ + if (rv->d == 0.) { + /* special case because d2b doesn't handle 0.0 */ b = i2b(0); if (b == NULL) return -1; @@ -1243,9 +1230,8 @@ that b << i has at most P significant bits and p2 - i >= Emin - P + 1. */ i = P - bbits; - j = p2 - (Emin - P + 1); - if (i > j) - i = j; + if (i > p2 - (Emin - P + 1)) + i = p2 - (Emin - P + 1); /* increment i so that we shift b by an extra bit; then or-ing a 1 into the lsb of b gives us rv/2^(bc->scale) + 0.5ulp. */ b = lshift(b, ++i); @@ -1300,55 +1286,43 @@ } } - /* Now 10*b/d = exactly half-way between the two floating-point values - on either side of the input string. If b >= d, round down. */ + /* if b >= d, round down */ if (cmp(b, d) >= 0) { dd = -1; goto ret; } - /* Compute first digit of 10*b/d. */ - b = multadd(b, 10, 0); - if (b == NULL) { - Bfree(d); - return -1; - } - dig = quorem(b, d); - assert(dig < 10); - /* Compare b/d with s0 */ - - assert(nd > 0); - dd = 9999; /* silence gcc compiler warning */ - for(i = 0; i < nd0; ) { - if ((dd = s0[i++] - '0' - dig)) + for(i = 0; i < nd0; i++) { + b = multadd(b, 10, 0); + if (b == NULL) { + Bfree(d); + return -1; + } + dd = *s0++ - '0' - quorem(b, d); + if (dd) goto ret; if (!b->x[0] && b->wds == 1) { if (i < nd) dd = 1; goto ret; } + } + s0++; + for(; i < nd; i++) { b = multadd(b, 10, 0); if (b == NULL) { Bfree(d); return -1; } - dig = quorem(b,d); - } - for(j = bc->dp1; i++ < nd;) { - if ((dd = s0[j++] - '0' - dig)) + dd = *s0++ - '0' - quorem(b, d); + if (dd) goto ret; if (!b->x[0] && b->wds == 1) { if (i < nd) dd = 1; goto ret; } - b = multadd(b, 10, 0); - if (b == NULL) { - Bfree(d); - return -1; - } - dig = quorem(b,d); } if (b->x[0] || b->wds > 1) dd = -1; @@ -1369,7 +1343,7 @@ double _Py_dg_strtod(const char *s00, char **se) { - int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, e, e1, error; + int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, dp0, dp1, dplen, e, e1, error; int esign, i, j, k, nd, nd0, nf, nz, nz0, sign; const char *s, *s0, *s1; double aadj, aadj1; @@ -1378,7 +1352,7 @@ BCinfo bc; Bigint *bb, *bb1, *bd, *bd0, *bs, *delta; - sign = nz0 = nz = bc.dplen = 0; + sign = nz0 = nz = dplen = 0; dval(&rv) = 0.; for(s = s00;;s++) switch(*s) { case '-': @@ -1417,11 +1391,11 @@ else if (nd < 16) z = 10*z + c - '0'; nd0 = nd; - bc.dp0 = bc.dp1 = s - s0; + dp0 = dp1 = s - s0; if (c == '.') { c = *++s; - bc.dp1 = s - s0; - bc.dplen = bc.dp1 - bc.dp0; + dp1 = s - s0; + dplen = 1; if (!nd) { for(; c == '0'; c = *++s) nz++; @@ -1624,10 +1598,10 @@ /* in IEEE arithmetic. */ i = j = 18; if (i > nd0) - j += bc.dplen; + j += dplen; for(;;) { - if (--j <= bc.dp1 && j >= bc.dp0) - j = bc.dp0 - 1; + if (--j <= dp1 && j >= dp0) + j = dp0 - 1; if (s0[j] != '0') break; --i; @@ -1640,11 +1614,11 @@ y = 0; for(i = 0; i < nd0; ++i) y = 10*y + s0[i] - '0'; - for(j = bc.dp1; i < nd; ++i) + for(j = dp1; i < nd; ++i) y = 10*y + s0[j++] - '0'; } } - bd0 = s2b(s0, nd0, nd, y, bc.dplen); + bd0 = s2b(s0, nd0, nd, y); if (bd0 == NULL) goto failed_malloc; From solipsis at pitrou.net Thu Jan 14 00:50:56 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Thu, 14 Jan 2010 00:50:56 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77479): sum=0 Message-ID: <20100113235056.A2B4817714@ns6635.ovh.net> py3k results for svn r77479 (hg cset b22d535cf94c) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflog6WmXik', '-x', 'test_httpservers'] From nnorwitz at gmail.com Thu Jan 14 01:59:48 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Wed, 13 Jan 2010 19:59:48 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100114005948.GA32543@kbk-i386-bb.psfb.org> 348 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-25206 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.557s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 348 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [888163 refs] From python-checkins at python.org Thu Jan 14 02:12:34 2010 From: python-checkins at python.org (skip.montanaro) Date: Thu, 14 Jan 2010 01:12:34 -0000 Subject: [Python-checkins] r77484 - python/trunk/Misc/gdbinit Message-ID: Author: skip.montanaro Date: Thu Jan 14 02:12:34 2010 New Revision: 77484 Log: Update PyEval_EvalFrame to PyEval_EvalFrameEx. This looks to have been done partially before. Also add a comment describing how this might have to work with different versions of the interpreter. Modified: python/trunk/Misc/gdbinit Modified: python/trunk/Misc/gdbinit ============================================================================== --- python/trunk/Misc/gdbinit (original) +++ python/trunk/Misc/gdbinit Thu Jan 14 02:12:34 2010 @@ -115,12 +115,18 @@ # interpreter, but the test can be extended by an interested party). If # Py_Main <= $pc <= Py_GetArgcArv is true, $pc is in Py_Main(), so the while # tests succeeds as long as it's not true. In a similar fashion the if -# statement tests to see if we are in PyEval_EvalFrame(). +# statement tests to see if we are in PyEval_EvalFrameEx(). + +# Note: The name of the main interpreter function and the function which +# follow it has changed over time. This version of pystack works with this +# version of Python. If you try using it with older or newer versions of +# the interpreter you may will have to change the functions you compare with +# $pc. # print the entire Python call stack define pystack while $pc < Py_Main || $pc > Py_GetArgcArgv - if $pc > PyEval_EvalFrame && $pc < PyEval_EvalCodeEx + if $pc > PyEval_EvalFrameEx && $pc < PyEval_EvalCodeEx pyframe end up-silently 1 @@ -131,7 +137,7 @@ # print the entire Python call stack - verbose mode define pystackv while $pc < Py_Main || $pc > Py_GetArgcArgv - if $pc > PyEval_EvalFrame && $pc < PyEval_EvalCodeEx + if $pc > PyEval_EvalFrameEx && $pc < PyEval_EvalCodeEx pyframev end up-silently 1 From python-checkins at python.org Thu Jan 14 02:14:50 2010 From: python-checkins at python.org (skip.montanaro) Date: Thu, 14 Jan 2010 01:14:50 -0000 Subject: [Python-checkins] r77485 - python/branches/py3k/Misc/gdbinit Message-ID: Author: skip.montanaro Date: Thu Jan 14 02:14:50 2010 New Revision: 77485 Log: Make similar changes to 3.x version. Modified: python/branches/py3k/Misc/gdbinit Modified: python/branches/py3k/Misc/gdbinit ============================================================================== --- python/branches/py3k/Misc/gdbinit (original) +++ python/branches/py3k/Misc/gdbinit Thu Jan 14 02:14:50 2010 @@ -115,12 +115,18 @@ # interpreter, but the test can be extended by an interested party). If # Py_Main <= $pc <= Py_GetArgcArv is true, $pc is in Py_Main(), so the while # tests succeeds as long as it's not true. In a similar fashion the if -# statement tests to see if we are in PyEval_EvalFrame(). +# statement tests to see if we are in PyEval_EvalFrameEx(). + +# Note: The name of the main interpreter function and the function which +# follow it has changed over time. This version of pystack works with this +# version of Python. If you try using it with older or newer versions of +# the interpreter you may will have to change the functions you compare with +# $pc. # print the entire Python call stack define pystack while $pc < Py_Main || $pc > Py_GetArgcArgv - if $pc > PyEval_EvalFrame && $pc < PyEval_EvalCodeEx + if $pc > PyEval_EvalFrameEx && $pc < PyEval_EvalCodeEx pyframe end up-silently 1 @@ -131,7 +137,7 @@ # print the entire Python call stack - verbose mode define pystackv while $pc < Py_Main || $pc > Py_GetArgcArgv - if $pc > PyEval_EvalFrame && $pc < PyEval_EvalCodeEx + if $pc > PyEval_EvalFrameEx && $pc < PyEval_EvalCodeEx pyframev end up-silently 1 From python-checkins at python.org Thu Jan 14 03:40:11 2010 From: python-checkins at python.org (benjamin.peterson) Date: Thu, 14 Jan 2010 02:40:11 -0000 Subject: [Python-checkins] r77486 - python/trunk/Lib/test/test_popen.py Message-ID: Author: benjamin.peterson Date: Thu Jan 14 03:40:10 2010 New Revision: 77486 Log: use more robust quoting Modified: python/trunk/Lib/test/test_popen.py Modified: python/trunk/Lib/test/test_popen.py ============================================================================== --- python/trunk/Lib/test/test_popen.py (original) +++ python/trunk/Lib/test/test_popen.py Thu Jan 14 03:40:10 2010 @@ -17,7 +17,7 @@ class PopenTest(unittest.TestCase): def _do_test_commandline(self, cmdline, expected): - cmd = '%r -c "import sys;print sys.argv" %s' % (python, cmdline) + cmd = '"%s" -c "import sys;print sys.argv" %s' % (python, cmdline) data = os.popen(cmd).read() got = eval(data)[1:] # strip off argv[0] self.assertEqual(got, expected) From nnorwitz at gmail.com Thu Jan 14 10:15:50 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 14 Jan 2010 04:15:50 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100114091550.GA7320@kbk-i386-bb.psfb.org> 342 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.479s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 342 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [871647 refs] From nnorwitz at gmail.com Thu Jan 14 10:27:06 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 14 Jan 2010 04:27:06 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100114092706.GA11420@kbk-i386-bb.psfb.org> 342 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19651 refs] [19651 refs] [19651 refs] [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.561s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 342 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [870549 refs] From nnorwitz at gmail.com Thu Jan 14 12:22:21 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 14 Jan 2010 06:22:21 -0500 Subject: [Python-checkins] Python Regression Test Failures refleak (1) Message-ID: <20100114112221.GA10987@kbk-i386-bb.psfb.org> More important issues: ---------------------- test_bz2 leaked [-91, 0, 0] references, sum=-91 Less important issues: ---------------------- test_threadsignals leaked [0, 8, 0] references, sum=8 From python-checkins at python.org Thu Jan 14 12:34:10 2010 From: python-checkins at python.org (ezio.melotti) Date: Thu, 14 Jan 2010 11:34:10 -0000 Subject: [Python-checkins] r77487 - python/trunk/Objects/bytearrayobject.c Message-ID: Author: ezio.melotti Date: Thu Jan 14 12:34:10 2010 New Revision: 77487 Log: Fixed typo Modified: python/trunk/Objects/bytearrayobject.c Modified: python/trunk/Objects/bytearrayobject.c ============================================================================== --- python/trunk/Objects/bytearrayobject.c (original) +++ python/trunk/Objects/bytearrayobject.c Thu Jan 14 12:34:10 2010 @@ -1032,7 +1032,7 @@ PyObject_IsInstance(other, (PyObject*)&PyUnicode_Type)) { if (Py_BytesWarningFlag && op == Py_EQ) { if (PyErr_WarnEx(PyExc_BytesWarning, - "Comparsion between bytearray and string", 1)) + "Comparison between bytearray and string", 1)) return NULL; } From python-checkins at python.org Thu Jan 14 12:39:50 2010 From: python-checkins at python.org (ezio.melotti) Date: Thu, 14 Jan 2010 11:39:50 -0000 Subject: [Python-checkins] r77488 - in python/branches/release26-maint: Objects/bytearrayobject.c Message-ID: Author: ezio.melotti Date: Thu Jan 14 12:39:50 2010 New Revision: 77488 Log: Merged revisions 77487 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77487 | ezio.melotti | 2010-01-14 13:34:10 +0200 (Thu, 14 Jan 2010) | 1 line Fixed typo ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Objects/bytearrayobject.c Modified: python/branches/release26-maint/Objects/bytearrayobject.c ============================================================================== --- python/branches/release26-maint/Objects/bytearrayobject.c (original) +++ python/branches/release26-maint/Objects/bytearrayobject.c Thu Jan 14 12:39:50 2010 @@ -1029,7 +1029,7 @@ PyObject_IsInstance(other, (PyObject*)&PyUnicode_Type)) { if (Py_BytesWarningFlag && op == Py_EQ) { if (PyErr_WarnEx(PyExc_BytesWarning, - "Comparsion between bytearray and string", 1)) + "Comparison between bytearray and string", 1)) return NULL; } From nnorwitz at gmail.com Thu Jan 14 12:45:00 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 14 Jan 2010 06:45:00 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100114114500.GA28011@kbk-i386-bb.psfb.org> 348 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-10995 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.555s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 348 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [888162 refs] From python-checkins at python.org Thu Jan 14 13:20:19 2010 From: python-checkins at python.org (vinay.sajip) Date: Thu, 14 Jan 2010 12:20:19 -0000 Subject: [Python-checkins] r77489 - peps/trunk/pep-0391.txt Message-ID: Author: vinay.sajip Date: Thu Jan 14 13:20:19 2010 New Revision: 77489 Log: Removed comment about provisionality of prefixes. Modified: peps/trunk/pep-0391.txt Modified: peps/trunk/pep-0391.txt ============================================================================== --- peps/trunk/pep-0391.txt (original) +++ peps/trunk/pep-0391.txt Thu Jan 14 13:20:19 2010 @@ -348,10 +348,6 @@ to ``config_dict['handlers']['myhandler']['mykey']['123']`` if that fails. -Note: the ``ext`` and ``cfg`` prefixes are provisional. If better -alternatives are suggested during the PEP review process, they will be -used. - Handler Ids ''''''''''' From python-checkins at python.org Thu Jan 14 14:02:37 2010 From: python-checkins at python.org (mark.dickinson) Date: Thu, 14 Jan 2010 13:02:37 -0000 Subject: [Python-checkins] r77490 - python/trunk/Python/dtoa.c Message-ID: Author: mark.dickinson Date: Thu Jan 14 14:02:36 2010 New Revision: 77490 Log: Fix off-by-one error introduced in r77483. I have a test for this, but it currently fails due to a different dtoa.c bug; I'll add the test once that bug is fixed. Modified: python/trunk/Python/dtoa.c Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Thu Jan 14 14:02:36 2010 @@ -1303,7 +1303,7 @@ if (dd) goto ret; if (!b->x[0] && b->wds == 1) { - if (i < nd) + if (i < nd - 1) dd = 1; goto ret; } @@ -1319,7 +1319,7 @@ if (dd) goto ret; if (!b->x[0] && b->wds == 1) { - if (i < nd) + if (i < nd - 1) dd = 1; goto ret; } From python-checkins at python.org Thu Jan 14 14:14:49 2010 From: python-checkins at python.org (mark.dickinson) Date: Thu, 14 Jan 2010 13:14:49 -0000 Subject: [Python-checkins] r77491 - python/trunk/Python/dtoa.c Message-ID: Author: mark.dickinson Date: Thu Jan 14 14:14:49 2010 New Revision: 77491 Log: Issue 7632: fix a dtoa.c bug (bug 6) causing incorrect rounding. Tests to follow. Modified: python/trunk/Python/dtoa.c Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Thu Jan 14 14:14:49 2010 @@ -1204,7 +1204,7 @@ bigcomp(U *rv, const char *s0, BCinfo *bc) { Bigint *b, *d; - int b2, bbits, d2, dd, i, nd, nd0, p2, p5; + int b2, bbits, d2, dd, i, nd, nd0, odd, p2, p5; dd = 0; /* silence compiler warning about possibly unused variable */ nd = bc->nd; @@ -1237,6 +1237,9 @@ b = lshift(b, ++i); if (b == NULL) return -1; + /* record whether the lsb of rv/2^(bc->scale) is odd: in the exact halfway + case, this is used for round to even. */ + odd = b->x[0] & 2; b->x[0] |= 1; p2 -= p5 + i; @@ -1291,7 +1294,7 @@ dd = -1; goto ret; } - + /* Compare b/d with s0 */ for(i = 0; i < nd0; i++) { b = multadd(b, 10, 0); @@ -1329,14 +1332,8 @@ ret: Bfree(b); Bfree(d); - if (dd > 0) + if (dd > 0 || (dd == 0 && odd)) dval(rv) += sulp(rv, bc); - else if (dd == 0) { - /* Exact half-way case: apply round-even rule. */ - if (word1(rv) & 1) - dval(rv) += sulp(rv, bc); - } - return 0; } From python-checkins at python.org Thu Jan 14 15:40:20 2010 From: python-checkins at python.org (mark.dickinson) Date: Thu, 14 Jan 2010 14:40:20 -0000 Subject: [Python-checkins] r77492 - python/trunk/Python/dtoa.c Message-ID: Author: mark.dickinson Date: Thu Jan 14 15:40:20 2010 New Revision: 77492 Log: Issue 7632: fix incorrect rounding for long input strings with values very close to a power of 2. (See Bug 4 in the tracker discussion.) Modified: python/trunk/Python/dtoa.c Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Thu Jan 14 15:40:20 2010 @@ -1738,6 +1738,30 @@ if (bc.nd > nd && i <= 0) { if (bc.dsign) break; /* Must use bigcomp(). */ + + /* Here rv overestimates the truncated decimal value by at most + 0.5 ulp(rv). Hence rv either overestimates the true decimal + value by <= 0.5 ulp(rv), or underestimates it by some small + amount (< 0.1 ulp(rv)); either way, rv is within 0.5 ulps of + the true decimal value, so it's possible to exit. + + Exception: if scaled rv is a normal exact power of 2, but not + DBL_MIN, then rv - 0.5 ulp(rv) takes us all the way down to the + next double, so the correctly rounded result is either rv - 0.5 + ulp(rv) or rv; in this case, use bigcomp to distinguish. */ + + if (!word1(&rv) && !(word0(&rv) & Bndry_mask)) { + /* rv can't be 0, since it's an overestimate for some + nonzero value. So rv is a normal power of 2. */ + j = (int)(word0(&rv) & Exp_mask) >> Exp_shift; + /* rv / 2^bc.scale = 2^(j - 1023 - bc.scale); use bigcomp if + rv / 2^bc.scale >= 2^-1021. */ + if (j - bc.scale >= 2) { + dval(&rv) -= 0.5 * sulp(&rv, &bc); + break; + } + } + { bc.nd = nd; i = -1; /* Discarded digits make delta smaller. */ From python-checkins at python.org Thu Jan 14 16:22:33 2010 From: python-checkins at python.org (mark.dickinson) Date: Thu, 14 Jan 2010 15:22:33 -0000 Subject: [Python-checkins] r77493 - python/trunk/Lib/test/test_strtod.py Message-ID: Author: mark.dickinson Date: Thu Jan 14 16:22:33 2010 New Revision: 77493 Log: Issue #7632: add tests for bugs fixed so far. Added: python/trunk/Lib/test/test_strtod.py Added: python/trunk/Lib/test/test_strtod.py ============================================================================== --- (empty file) +++ python/trunk/Lib/test/test_strtod.py Thu Jan 14 16:22:33 2010 @@ -0,0 +1,269 @@ +# Tests for the correctly-rounded string -> float conversions +# introduced in Python 2.7 and 3.1. + +import random +import struct +import unittest +import re +import sys +from test import test_support + +# Correctly rounded str -> float in pure Python, for comparison. + +strtod_parser = re.compile(r""" # A numeric string consists of: + (?P[-+])? # an optional sign, followed by + (?=\d|\.\d) # a number with at least one digit + (?P\d*) # having a (possibly empty) integer part + (?:\.(?P\d*))? # followed by an optional fractional part + (?:E(?P[-+]?\d+))? # and an optional exponent + \Z +""", re.VERBOSE | re.IGNORECASE).match + +def strtod(s, mant_dig=53, min_exp = -1021, max_exp = 1024): + """Convert a finite decimal string to a hex string representing an + IEEE 754 binary64 float. Return 'inf' or '-inf' on overflow. + This function makes no use of floating-point arithmetic at any + stage.""" + + # parse string into a pair of integers 'a' and 'b' such that + # abs(decimal value) = a/b, along with a boolean 'negative'. + m = strtod_parser(s) + if m is None: + raise ValueError('invalid numeric string') + fraction = m.group('frac') or '' + intpart = int(m.group('int') + fraction) + exp = int(m.group('exp') or '0') - len(fraction) + negative = m.group('sign') == '-' + a, b = intpart*10**max(exp, 0), 10**max(0, -exp) + + # quick return for zeros + if not a: + return '-0x0.0p+0' if negative else '0x0.0p+0' + + # compute exponent e for result; may be one too small in the case + # that the rounded value of a/b lies in a different binade from a/b + d = a.bit_length() - b.bit_length() + d += (a >> d if d >= 0 else a << -d) >= b + e = max(d, min_exp) - mant_dig + + # approximate a/b by number of the form q * 2**e; adjust e if necessary + a, b = a << max(-e, 0), b << max(e, 0) + q, r = divmod(a, b) + if 2*r > b or 2*r == b and q & 1: + q += 1 + if q.bit_length() == mant_dig+1: + q //= 2 + e += 1 + + # double check that (q, e) has the right form + assert q.bit_length() <= mant_dig and e >= min_exp - mant_dig + assert q.bit_length() == mant_dig or e == min_exp - mant_dig + + # check for overflow and underflow + if e + q.bit_length() > max_exp: + return '-inf' if negative else 'inf' + if not q: + return '-0x0.0p+0' if negative else '0x0.0p+0' + + # for hex representation, shift so # bits after point is a multiple of 4 + hexdigs = 1 + (mant_dig-2)//4 + shift = 3 - (mant_dig-2)%4 + q, e = q << shift, e - shift + return '{}0x{:x}.{:0{}x}p{:+d}'.format( + '-' if negative else '', + q // 16**hexdigs, + q % 16**hexdigs, + hexdigs, + e + 4*hexdigs) + +TEST_SIZE = 10 + + at unittest.skipUnless(getattr(sys, 'float_repr_style', '') == 'short', + "applies only when using short float repr style") +class StrtodTests(unittest.TestCase): + def check_strtod(self, s): + """Compare the result of Python's builtin correctly rounded + string->float conversion (using float) to a pure Python + correctly rounded string->float implementation. Fail if the + two methods give different results.""" + + try: + fs = float(s) + except OverflowError: + got = '-inf' if s[0] == '-' else 'inf' + else: + got = fs.hex() + expected = strtod(s) + self.assertEqual(expected, got, + "Incorrectly rounded str->float conversion for {}: " + "expected {}, got {}".format(s, expected, got)) + + def test_halfway_cases(self): + # test halfway cases for the round-half-to-even rule + for i in xrange(1000): + for j in xrange(TEST_SIZE): + # bit pattern for a random finite positive (or +0.0) float + bits = random.randrange(2047*2**52) + + # convert bit pattern to a number of the form m * 2**e + e, m = divmod(bits, 2**52) + if e: + m, e = m + 2**52, e - 1 + e -= 1074 + + # add 0.5 ulps + m, e = 2*m + 1, e - 1 + + # convert to a decimal string + if e >= 0: + digits = m << e + exponent = 0 + else: + # m * 2**e = (m * 5**-e) * 10**e + digits = m * 5**-e + exponent = e + s = '{}e{}'.format(digits, exponent) + + # for the moment, ignore errors from trailing zeros + if digits % 10 == 0: + continue + self.check_strtod(s) + + # get expected answer via struct, to triple check + #fs = struct.unpack('scale != 0 (issue 7632, bug 6). + '104308485241983990666713401708072175773165034278685' #... + '682646111762292409330928739751702404658197872319129' #... + '036519947435319418387839758990478549477777586673075' #... + '945844895981012024387992135617064532141489278815239' #... + '849108105951619997829153633535314849999674266169258' #... + '928940692239684771590065027025835804863585454872499' #... + '320500023126142553932654370362024104462255244034053' #... + '203998964360882487378334860197725139151265590832887' #... + '433736189468858614521708567646743455601905935595381' #... + '852723723645799866672558576993978025033590728687206' #... + '296379801363024094048327273913079612469982585674824' #... + '156000783167963081616214710691759864332339239688734' #... + '656548790656486646106983450809073750535624894296242' #... + '072010195710276073042036425579852459556183541199012' #... + '652571123898996574563824424330960027873516082763671875e-1075', + # demonstration that original fix for issue 7632 bug 1 was + # buggy; the exit condition was too strong + '247032822920623295e-341', + # issue 7632 bug 5: the following 2 strings convert differently + '1000000000000000000000000000000000000000e-16', + #'10000000000000000000000000000000000000000e-17', + ] + for s in test_strings: + self.check_strtod(s) + +def test_main(): + test_support.run_unittest(StrtodTests) + +if __name__ == "__main__": + test_main() From python-checkins at python.org Thu Jan 14 16:37:50 2010 From: python-checkins at python.org (mark.dickinson) Date: Thu, 14 Jan 2010 15:37:50 -0000 Subject: [Python-checkins] r77494 - in python/branches/py3k: Lib/test/test_strtod.py Python/dtoa.c Message-ID: Author: mark.dickinson Date: Thu Jan 14 16:37:49 2010 New Revision: 77494 Log: Merged revisions 77477-77478,77481-77483,77490-77493 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77477 | mark.dickinson | 2010-01-13 18:21:53 +0000 (Wed, 13 Jan 2010) | 1 line Add comments explaining the role of the bigcomp function in dtoa.c. ........ r77478 | mark.dickinson | 2010-01-13 19:02:37 +0000 (Wed, 13 Jan 2010) | 1 line Clarify that sulp expects a nonnegative input, but that +0.0 is fine. ........ r77481 | mark.dickinson | 2010-01-13 20:55:03 +0000 (Wed, 13 Jan 2010) | 1 line Simplify and annotate the bigcomp function, removing unused special cases. ........ r77482 | mark.dickinson | 2010-01-13 22:15:53 +0000 (Wed, 13 Jan 2010) | 1 line Fix buggy comparison: LHS of comparison was being treated as unsigned. ........ r77483 | mark.dickinson | 2010-01-13 22:20:10 +0000 (Wed, 13 Jan 2010) | 1 line More dtoa.c cleanup; remove the need for bc.dplen, bc.dp0 and bc.dp1. ........ r77490 | mark.dickinson | 2010-01-14 13:02:36 +0000 (Thu, 14 Jan 2010) | 1 line Fix off-by-one error introduced in r77483. I have a test for this, but it currently fails due to a different dtoa.c bug; I'll add the test once that bug is fixed. ........ r77491 | mark.dickinson | 2010-01-14 13:14:49 +0000 (Thu, 14 Jan 2010) | 1 line Issue 7632: fix a dtoa.c bug (bug 6) causing incorrect rounding. Tests to follow. ........ r77492 | mark.dickinson | 2010-01-14 14:40:20 +0000 (Thu, 14 Jan 2010) | 1 line Issue 7632: fix incorrect rounding for long input strings with values very close to a power of 2. (See Bug 4 in the tracker discussion.) ........ r77493 | mark.dickinson | 2010-01-14 15:22:33 +0000 (Thu, 14 Jan 2010) | 1 line Issue #7632: add tests for bugs fixed so far. ........ Added: python/branches/py3k/Lib/test/test_strtod.py - copied, changed from r77493, /python/trunk/Lib/test/test_strtod.py Modified: python/branches/py3k/ (props changed) python/branches/py3k/Python/dtoa.c Copied: python/branches/py3k/Lib/test/test_strtod.py (from r77493, /python/trunk/Lib/test/test_strtod.py) ============================================================================== --- /python/trunk/Lib/test/test_strtod.py (original) +++ python/branches/py3k/Lib/test/test_strtod.py Thu Jan 14 16:37:49 2010 @@ -6,7 +6,7 @@ import unittest import re import sys -from test import test_support +import test.support # Correctly rounded str -> float in pure Python, for comparison. @@ -100,8 +100,8 @@ def test_halfway_cases(self): # test halfway cases for the round-half-to-even rule - for i in xrange(1000): - for j in xrange(TEST_SIZE): + for i in range(1000): + for j in range(TEST_SIZE): # bit pattern for a random finite positive (or +0.0) float bits = random.randrange(2047*2**52) @@ -144,8 +144,8 @@ (0, -327, 4941), # zero ] for n, e, u in boundaries: - for j in xrange(1000): - for i in xrange(TEST_SIZE): + for j in range(1000): + for i in range(TEST_SIZE): digits = n + random.randrange(-3*u, 3*u) exponent = e s = '{}e{}'.format(digits, exponent) @@ -158,38 +158,38 @@ # test values close to 2**-1075, the underflow boundary; similar # to boundary_tests, except that the random error doesn't scale # with n - for exponent in xrange(-400, -320): + for exponent in range(-400, -320): base = 10**-exponent // 2**1075 - for j in xrange(TEST_SIZE): + for j in range(TEST_SIZE): digits = base + random.randrange(-1000, 1000) s = '{}e{}'.format(digits, exponent) self.check_strtod(s) def test_bigcomp(self): DIG10 = 10**50 - for i in xrange(1000): - for j in xrange(TEST_SIZE): + for i in range(1000): + for j in range(TEST_SIZE): digits = random.randrange(DIG10) exponent = random.randrange(-400, 400) s = '{}e{}'.format(digits, exponent) self.check_strtod(s) def test_parsing(self): - digits = tuple(map(str, xrange(10))) + digits = tuple(map(str, range(10))) signs = ('+', '-', '') # put together random short valid strings # \d*[.\d*]?e - for i in xrange(1000): - for j in xrange(TEST_SIZE): + for i in range(1000): + for j in range(TEST_SIZE): s = random.choice(signs) intpart_len = random.randrange(5) - s += ''.join(random.choice(digits) for _ in xrange(intpart_len)) + s += ''.join(random.choice(digits) for _ in range(intpart_len)) if random.choice([True, False]): s += '.' fracpart_len = random.randrange(5) s += ''.join(random.choice(digits) - for _ in xrange(fracpart_len)) + for _ in range(fracpart_len)) else: fracpart_len = 0 if random.choice([True, False]): @@ -197,7 +197,7 @@ s += random.choice(signs) exponent_len = random.randrange(1, 4) s += ''.join(random.choice(digits) - for _ in xrange(exponent_len)) + for _ in range(exponent_len)) if intpart_len + fracpart_len: self.check_strtod(s) @@ -263,7 +263,7 @@ self.check_strtod(s) def test_main(): - test_support.run_unittest(StrtodTests) + test.support.run_unittest(StrtodTests) if __name__ == "__main__": test_main() Modified: python/branches/py3k/Python/dtoa.c ============================================================================== --- python/branches/py3k/Python/dtoa.c (original) +++ python/branches/py3k/Python/dtoa.c Thu Jan 14 16:37:49 2010 @@ -270,7 +270,7 @@ typedef struct BCinfo BCinfo; struct BCinfo { - int dp0, dp1, dplen, dsign, e0, nd, nd0, scale; + int dsign, e0, nd, nd0, scale; }; #define FFFFFFFF 0xffffffffUL @@ -437,7 +437,7 @@ NULL on failure. */ static Bigint * -s2b(const char *s, int nd0, int nd, ULong y9, int dplen) +s2b(const char *s, int nd0, int nd, ULong y9) { Bigint *b; int i, k; @@ -451,18 +451,16 @@ b->x[0] = y9; b->wds = 1; - i = 9; - if (9 < nd0) { - s += 9; - do { - b = multadd(b, 10, *s++ - '0'); - if (b == NULL) - return NULL; - } while(++i < nd0); - s += dplen; + if (nd <= 9) + return b; + + s += 9; + for (i = 9; i < nd0; i++) { + b = multadd(b, 10, *s++ - '0'); + if (b == NULL) + return NULL; } - else - s += dplen + 9; + s++; for(; i < nd; i++) { b = multadd(b, 10, *s++ - '0'); if (b == NULL) @@ -1130,76 +1128,120 @@ return q; } -/* version of ulp(x) that takes bc.scale into account. +/* sulp(x) is a version of ulp(x) that takes bc.scale into account. - Assuming that x is finite and nonzero, and x / 2^bc.scale is exactly - representable as a double, sulp(x) is equivalent to 2^bc.scale * ulp(x / - 2^bc.scale). */ + Assuming that x is finite and nonnegative (positive zero is fine + here) and x / 2^bc.scale is exactly representable as a double, + sulp(x) is equivalent to 2^bc.scale * ulp(x / 2^bc.scale). */ static double sulp(U *x, BCinfo *bc) { U u; - if (bc->scale && 2*P + 1 - ((word0(x) & Exp_mask) >> Exp_shift) > 0) { + if (bc->scale && 2*P + 1 > (int)((word0(x) & Exp_mask) >> Exp_shift)) { /* rv/2^bc->scale is subnormal */ word0(&u) = (P+2)*Exp_msk1; word1(&u) = 0; return u.d; } - else + else { + assert(word0(x) || word1(x)); /* x != 0.0 */ return ulp(x); + } } -/* return 0 on success, -1 on failure */ +/* The bigcomp function handles some hard cases for strtod, for inputs + with more than STRTOD_DIGLIM digits. It's called once an initial + estimate for the double corresponding to the input string has + already been obtained by the code in _Py_dg_strtod. + + The bigcomp function is only called after _Py_dg_strtod has found a + double value rv such that either rv or rv + 1ulp represents the + correctly rounded value corresponding to the original string. It + determines which of these two values is the correct one by + computing the decimal digits of rv + 0.5ulp and comparing them with + the corresponding digits of s0. + + In the following, write dv for the absolute value of the number represented + by the input string. + + Inputs: + + s0 points to the first significant digit of the input string. + + rv is a (possibly scaled) estimate for the closest double value to the + value represented by the original input to _Py_dg_strtod. If + bc->scale is nonzero, then rv/2^(bc->scale) is the approximation to + the input value. + + bc is a struct containing information gathered during the parsing and + estimation steps of _Py_dg_strtod. Description of fields follows: + + bc->dsign is 1 if rv < decimal value, 0 if rv >= decimal value. In + normal use, it should almost always be 1 when bigcomp is entered. + + bc->e0 gives the exponent of the input value, such that dv = (integer + given by the bd->nd digits of s0) * 10**e0 + + bc->nd gives the total number of significant digits of s0. It will + be at least 1. + + bc->nd0 gives the number of significant digits of s0 before the + decimal separator. If there's no decimal separator, bc->nd0 == + bc->nd. + + bc->scale is the value used to scale rv to avoid doing arithmetic with + subnormal values. It's either 0 or 2*P (=106). + + Outputs: + + On successful exit, rv/2^(bc->scale) is the closest double to dv. + + Returns 0 on success, -1 on failure (e.g., due to a failed malloc call). */ static int bigcomp(U *rv, const char *s0, BCinfo *bc) { Bigint *b, *d; - int b2, bbits, d2, dd, dig, dsign, i, j, nd, nd0, p2, p5, speccase; + int b2, bbits, d2, dd, i, nd, nd0, odd, p2, p5; - dsign = bc->dsign; + dd = 0; /* silence compiler warning about possibly unused variable */ nd = bc->nd; nd0 = bc->nd0; p5 = nd + bc->e0; - speccase = 0; - if (rv->d == 0.) { /* special case: value near underflow-to-zero */ - /* threshold was rounded to zero */ - b = i2b(1); + if (rv->d == 0.) { + /* special case because d2b doesn't handle 0.0 */ + b = i2b(0); if (b == NULL) return -1; - p2 = Emin - P + 1; - bbits = 1; - word0(rv) = (P+2) << Exp_shift; - i = 0; - { - speccase = 1; - --p2; - dsign = 0; - goto have_i; - } + p2 = Emin - P + 1; /* = -1074 for IEEE 754 binary64 */ + bbits = 0; } - else - { + else { b = d2b(rv, &p2, &bbits); if (b == NULL) return -1; + p2 -= bc->scale; } - p2 -= bc->scale; - /* floor(log2(rv)) == bbits - 1 + p2 */ - /* Check for denormal case. */ + /* now rv/2^(bc->scale) = b * 2**p2, and b has bbits significant bits */ + + /* Replace (b, p2) by (b << i, p2 - i), with i the largest integer such + that b << i has at most P significant bits and p2 - i >= Emin - P + + 1. */ i = P - bbits; - if (i > (j = P - Emin - 1 + p2)) { - i = j; - } - { - b = lshift(b, ++i); - if (b == NULL) - return -1; - b->x[0] |= 1; - } - have_i: + if (i > p2 - (Emin - P + 1)) + i = p2 - (Emin - P + 1); + /* increment i so that we shift b by an extra bit; then or-ing a 1 into + the lsb of b gives us rv/2^(bc->scale) + 0.5ulp. */ + b = lshift(b, ++i); + if (b == NULL) + return -1; + /* record whether the lsb of rv/2^(bc->scale) is odd: in the exact halfway + case, this is used for round to even. */ + odd = b->x[0] & 2; + b->x[0] |= 1; + p2 -= p5 + i; d = i2b(1); if (d == NULL) { @@ -1247,92 +1289,58 @@ } } - /* Now 10*b/d = exactly half-way between the two floating-point values - on either side of the input string. If b >= d, round down. */ + /* if b >= d, round down */ if (cmp(b, d) >= 0) { dd = -1; goto ret; } - - /* Compute first digit of 10*b/d. */ - b = multadd(b, 10, 0); - if (b == NULL) { - Bfree(d); - return -1; - } - dig = quorem(b, d); - assert(dig < 10); /* Compare b/d with s0 */ - - assert(nd > 0); - dd = 9999; /* silence gcc compiler warning */ - for(i = 0; i < nd0; ) { - if ((dd = s0[i++] - '0' - dig)) - goto ret; - if (!b->x[0] && b->wds == 1) { - if (i < nd) - dd = 1; - goto ret; - } + for(i = 0; i < nd0; i++) { b = multadd(b, 10, 0); if (b == NULL) { Bfree(d); return -1; } - dig = quorem(b,d); - } - for(j = bc->dp1; i++ < nd;) { - if ((dd = s0[j++] - '0' - dig)) + dd = *s0++ - '0' - quorem(b, d); + if (dd) goto ret; if (!b->x[0] && b->wds == 1) { - if (i < nd) + if (i < nd - 1) dd = 1; goto ret; } + } + s0++; + for(; i < nd; i++) { b = multadd(b, 10, 0); if (b == NULL) { Bfree(d); return -1; } - dig = quorem(b,d); + dd = *s0++ - '0' - quorem(b, d); + if (dd) + goto ret; + if (!b->x[0] && b->wds == 1) { + if (i < nd - 1) + dd = 1; + goto ret; + } } if (b->x[0] || b->wds > 1) dd = -1; ret: Bfree(b); Bfree(d); - if (speccase) { - if (dd <= 0) - rv->d = 0.; - } - else if (dd < 0) { - if (!dsign) /* does not happen for round-near */ - retlow1: - dval(rv) -= sulp(rv, bc); - } - else if (dd > 0) { - if (dsign) { - rethi1: - dval(rv) += sulp(rv, bc); - } - } - else { - /* Exact half-way case: apply round-even rule. */ - if (word1(rv) & 1) { - if (dsign) - goto rethi1; - goto retlow1; - } - } - + if (dd > 0 || (dd == 0 && odd)) + dval(rv) += sulp(rv, bc); return 0; } double _Py_dg_strtod(const char *s00, char **se) { - int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, e, e1, error; + int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, dp0, dp1, dplen, e, e1, error; int esign, i, j, k, nd, nd0, nf, nz, nz0, sign; const char *s, *s0, *s1; double aadj, aadj1; @@ -1341,7 +1349,7 @@ BCinfo bc; Bigint *bb, *bb1, *bd, *bd0, *bs, *delta; - sign = nz0 = nz = bc.dplen = 0; + sign = nz0 = nz = dplen = 0; dval(&rv) = 0.; for(s = s00;;s++) switch(*s) { case '-': @@ -1380,11 +1388,11 @@ else if (nd < 16) z = 10*z + c - '0'; nd0 = nd; - bc.dp0 = bc.dp1 = s - s0; + dp0 = dp1 = s - s0; if (c == '.') { c = *++s; - bc.dp1 = s - s0; - bc.dplen = bc.dp1 - bc.dp0; + dp1 = s - s0; + dplen = 1; if (!nd) { for(; c == '0'; c = *++s) nz++; @@ -1587,10 +1595,10 @@ /* in IEEE arithmetic. */ i = j = 18; if (i > nd0) - j += bc.dplen; + j += dplen; for(;;) { - if (--j <= bc.dp1 && j >= bc.dp0) - j = bc.dp0 - 1; + if (--j <= dp1 && j >= dp0) + j = dp0 - 1; if (s0[j] != '0') break; --i; @@ -1603,11 +1611,11 @@ y = 0; for(i = 0; i < nd0; ++i) y = 10*y + s0[i] - '0'; - for(j = bc.dp1; i < nd; ++i) + for(j = dp1; i < nd; ++i) y = 10*y + s0[j++] - '0'; } } - bd0 = s2b(s0, nd0, nd, y, bc.dplen); + bd0 = s2b(s0, nd0, nd, y); if (bd0 == NULL) goto failed_malloc; @@ -1730,6 +1738,30 @@ if (bc.nd > nd && i <= 0) { if (bc.dsign) break; /* Must use bigcomp(). */ + + /* Here rv overestimates the truncated decimal value by at most + 0.5 ulp(rv). Hence rv either overestimates the true decimal + value by <= 0.5 ulp(rv), or underestimates it by some small + amount (< 0.1 ulp(rv)); either way, rv is within 0.5 ulps of + the true decimal value, so it's possible to exit. + + Exception: if scaled rv is a normal exact power of 2, but not + DBL_MIN, then rv - 0.5 ulp(rv) takes us all the way down to the + next double, so the correctly rounded result is either rv - 0.5 + ulp(rv) or rv; in this case, use bigcomp to distinguish. */ + + if (!word1(&rv) && !(word0(&rv) & Bndry_mask)) { + /* rv can't be 0, since it's an overestimate for some + nonzero value. So rv is a normal power of 2. */ + j = (int)(word0(&rv) & Exp_mask) >> Exp_shift; + /* rv / 2^bc.scale = 2^(j - 1023 - bc.scale); use bigcomp if + rv / 2^bc.scale >= 2^-1021. */ + if (j - bc.scale >= 2) { + dval(&rv) -= 0.5 * sulp(&rv, &bc); + break; + } + } + { bc.nd = nd; i = -1; /* Discarded digits make delta smaller. */ From python-checkins at python.org Thu Jan 14 16:42:47 2010 From: python-checkins at python.org (mark.dickinson) Date: Thu, 14 Jan 2010 15:42:47 -0000 Subject: [Python-checkins] r77495 - python/branches/release26-maint Message-ID: Author: mark.dickinson Date: Thu Jan 14 16:42:47 2010 New Revision: 77495 Log: Blocked revisions 77477-77478,77481-77483,77490-77493 via svnmerge ........ r77477 | mark.dickinson | 2010-01-13 18:21:53 +0000 (Wed, 13 Jan 2010) | 1 line Add comments explaining the role of the bigcomp function in dtoa.c. ........ r77478 | mark.dickinson | 2010-01-13 19:02:37 +0000 (Wed, 13 Jan 2010) | 1 line Clarify that sulp expects a nonnegative input, but that +0.0 is fine. ........ r77481 | mark.dickinson | 2010-01-13 20:55:03 +0000 (Wed, 13 Jan 2010) | 1 line Simplify and annotate the bigcomp function, removing unused special cases. ........ r77482 | mark.dickinson | 2010-01-13 22:15:53 +0000 (Wed, 13 Jan 2010) | 1 line Fix buggy comparison: LHS of comparison was being treated as unsigned. ........ r77483 | mark.dickinson | 2010-01-13 22:20:10 +0000 (Wed, 13 Jan 2010) | 1 line More dtoa.c cleanup; remove the need for bc.dplen, bc.dp0 and bc.dp1. ........ r77490 | mark.dickinson | 2010-01-14 13:02:36 +0000 (Thu, 14 Jan 2010) | 1 line Fix off-by-one error introduced in r77483. I have a test for this, but it currently fails due to a different dtoa.c bug; I'll add the test once that bug is fixed. ........ r77491 | mark.dickinson | 2010-01-14 13:14:49 +0000 (Thu, 14 Jan 2010) | 1 line Issue 7632: fix a dtoa.c bug (bug 6) causing incorrect rounding. Tests to follow. ........ r77492 | mark.dickinson | 2010-01-14 14:40:20 +0000 (Thu, 14 Jan 2010) | 1 line Issue 7632: fix incorrect rounding for long input strings with values very close to a power of 2. (See Bug 4 in the tracker discussion.) ........ r77493 | mark.dickinson | 2010-01-14 15:22:33 +0000 (Thu, 14 Jan 2010) | 1 line Issue #7632: add tests for bugs fixed so far. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Thu Jan 14 16:43:57 2010 From: python-checkins at python.org (mark.dickinson) Date: Thu, 14 Jan 2010 15:43:57 -0000 Subject: [Python-checkins] r77496 - in python/branches/release31-maint: Lib/test/test_strtod.py Python/dtoa.c Message-ID: Author: mark.dickinson Date: Thu Jan 14 16:43:57 2010 New Revision: 77496 Log: Merged revisions 77494 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77494 | mark.dickinson | 2010-01-14 15:37:49 +0000 (Thu, 14 Jan 2010) | 41 lines Merged revisions 77477-77478,77481-77483,77490-77493 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77477 | mark.dickinson | 2010-01-13 18:21:53 +0000 (Wed, 13 Jan 2010) | 1 line Add comments explaining the role of the bigcomp function in dtoa.c. ........ r77478 | mark.dickinson | 2010-01-13 19:02:37 +0000 (Wed, 13 Jan 2010) | 1 line Clarify that sulp expects a nonnegative input, but that +0.0 is fine. ........ r77481 | mark.dickinson | 2010-01-13 20:55:03 +0000 (Wed, 13 Jan 2010) | 1 line Simplify and annotate the bigcomp function, removing unused special cases. ........ r77482 | mark.dickinson | 2010-01-13 22:15:53 +0000 (Wed, 13 Jan 2010) | 1 line Fix buggy comparison: LHS of comparison was being treated as unsigned. ........ r77483 | mark.dickinson | 2010-01-13 22:20:10 +0000 (Wed, 13 Jan 2010) | 1 line More dtoa.c cleanup; remove the need for bc.dplen, bc.dp0 and bc.dp1. ........ r77490 | mark.dickinson | 2010-01-14 13:02:36 +0000 (Thu, 14 Jan 2010) | 1 line Fix off-by-one error introduced in r77483. I have a test for this, but it currently fails due to a different dtoa.c bug; I'll add the test once that bug is fixed. ........ r77491 | mark.dickinson | 2010-01-14 13:14:49 +0000 (Thu, 14 Jan 2010) | 1 line Issue 7632: fix a dtoa.c bug (bug 6) causing incorrect rounding. Tests to follow. ........ r77492 | mark.dickinson | 2010-01-14 14:40:20 +0000 (Thu, 14 Jan 2010) | 1 line Issue 7632: fix incorrect rounding for long input strings with values very close to a power of 2. (See Bug 4 in the tracker discussion.) ........ r77493 | mark.dickinson | 2010-01-14 15:22:33 +0000 (Thu, 14 Jan 2010) | 1 line Issue #7632: add tests for bugs fixed so far. ........ ................ Added: python/branches/release31-maint/Lib/test/test_strtod.py - copied unchanged from r77494, /python/branches/py3k/Lib/test/test_strtod.py Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Python/dtoa.c Modified: python/branches/release31-maint/Python/dtoa.c ============================================================================== --- python/branches/release31-maint/Python/dtoa.c (original) +++ python/branches/release31-maint/Python/dtoa.c Thu Jan 14 16:43:57 2010 @@ -270,7 +270,7 @@ typedef struct BCinfo BCinfo; struct BCinfo { - int dp0, dp1, dplen, dsign, e0, nd, nd0, scale; + int dsign, e0, nd, nd0, scale; }; #define FFFFFFFF 0xffffffffUL @@ -437,7 +437,7 @@ NULL on failure. */ static Bigint * -s2b(const char *s, int nd0, int nd, ULong y9, int dplen) +s2b(const char *s, int nd0, int nd, ULong y9) { Bigint *b; int i, k; @@ -451,18 +451,16 @@ b->x[0] = y9; b->wds = 1; - i = 9; - if (9 < nd0) { - s += 9; - do { - b = multadd(b, 10, *s++ - '0'); - if (b == NULL) - return NULL; - } while(++i < nd0); - s += dplen; + if (nd <= 9) + return b; + + s += 9; + for (i = 9; i < nd0; i++) { + b = multadd(b, 10, *s++ - '0'); + if (b == NULL) + return NULL; } - else - s += dplen + 9; + s++; for(; i < nd; i++) { b = multadd(b, 10, *s++ - '0'); if (b == NULL) @@ -1130,76 +1128,120 @@ return q; } -/* version of ulp(x) that takes bc.scale into account. +/* sulp(x) is a version of ulp(x) that takes bc.scale into account. - Assuming that x is finite and nonzero, and x / 2^bc.scale is exactly - representable as a double, sulp(x) is equivalent to 2^bc.scale * ulp(x / - 2^bc.scale). */ + Assuming that x is finite and nonnegative (positive zero is fine + here) and x / 2^bc.scale is exactly representable as a double, + sulp(x) is equivalent to 2^bc.scale * ulp(x / 2^bc.scale). */ static double sulp(U *x, BCinfo *bc) { U u; - if (bc->scale && 2*P + 1 - ((word0(x) & Exp_mask) >> Exp_shift) > 0) { + if (bc->scale && 2*P + 1 > (int)((word0(x) & Exp_mask) >> Exp_shift)) { /* rv/2^bc->scale is subnormal */ word0(&u) = (P+2)*Exp_msk1; word1(&u) = 0; return u.d; } - else + else { + assert(word0(x) || word1(x)); /* x != 0.0 */ return ulp(x); + } } -/* return 0 on success, -1 on failure */ +/* The bigcomp function handles some hard cases for strtod, for inputs + with more than STRTOD_DIGLIM digits. It's called once an initial + estimate for the double corresponding to the input string has + already been obtained by the code in _Py_dg_strtod. + + The bigcomp function is only called after _Py_dg_strtod has found a + double value rv such that either rv or rv + 1ulp represents the + correctly rounded value corresponding to the original string. It + determines which of these two values is the correct one by + computing the decimal digits of rv + 0.5ulp and comparing them with + the corresponding digits of s0. + + In the following, write dv for the absolute value of the number represented + by the input string. + + Inputs: + + s0 points to the first significant digit of the input string. + + rv is a (possibly scaled) estimate for the closest double value to the + value represented by the original input to _Py_dg_strtod. If + bc->scale is nonzero, then rv/2^(bc->scale) is the approximation to + the input value. + + bc is a struct containing information gathered during the parsing and + estimation steps of _Py_dg_strtod. Description of fields follows: + + bc->dsign is 1 if rv < decimal value, 0 if rv >= decimal value. In + normal use, it should almost always be 1 when bigcomp is entered. + + bc->e0 gives the exponent of the input value, such that dv = (integer + given by the bd->nd digits of s0) * 10**e0 + + bc->nd gives the total number of significant digits of s0. It will + be at least 1. + + bc->nd0 gives the number of significant digits of s0 before the + decimal separator. If there's no decimal separator, bc->nd0 == + bc->nd. + + bc->scale is the value used to scale rv to avoid doing arithmetic with + subnormal values. It's either 0 or 2*P (=106). + + Outputs: + + On successful exit, rv/2^(bc->scale) is the closest double to dv. + + Returns 0 on success, -1 on failure (e.g., due to a failed malloc call). */ static int bigcomp(U *rv, const char *s0, BCinfo *bc) { Bigint *b, *d; - int b2, bbits, d2, dd, dig, dsign, i, j, nd, nd0, p2, p5, speccase; + int b2, bbits, d2, dd, i, nd, nd0, odd, p2, p5; - dsign = bc->dsign; + dd = 0; /* silence compiler warning about possibly unused variable */ nd = bc->nd; nd0 = bc->nd0; p5 = nd + bc->e0; - speccase = 0; - if (rv->d == 0.) { /* special case: value near underflow-to-zero */ - /* threshold was rounded to zero */ - b = i2b(1); + if (rv->d == 0.) { + /* special case because d2b doesn't handle 0.0 */ + b = i2b(0); if (b == NULL) return -1; - p2 = Emin - P + 1; - bbits = 1; - word0(rv) = (P+2) << Exp_shift; - i = 0; - { - speccase = 1; - --p2; - dsign = 0; - goto have_i; - } + p2 = Emin - P + 1; /* = -1074 for IEEE 754 binary64 */ + bbits = 0; } - else - { + else { b = d2b(rv, &p2, &bbits); if (b == NULL) return -1; + p2 -= bc->scale; } - p2 -= bc->scale; - /* floor(log2(rv)) == bbits - 1 + p2 */ - /* Check for denormal case. */ + /* now rv/2^(bc->scale) = b * 2**p2, and b has bbits significant bits */ + + /* Replace (b, p2) by (b << i, p2 - i), with i the largest integer such + that b << i has at most P significant bits and p2 - i >= Emin - P + + 1. */ i = P - bbits; - if (i > (j = P - Emin - 1 + p2)) { - i = j; - } - { - b = lshift(b, ++i); - if (b == NULL) - return -1; - b->x[0] |= 1; - } - have_i: + if (i > p2 - (Emin - P + 1)) + i = p2 - (Emin - P + 1); + /* increment i so that we shift b by an extra bit; then or-ing a 1 into + the lsb of b gives us rv/2^(bc->scale) + 0.5ulp. */ + b = lshift(b, ++i); + if (b == NULL) + return -1; + /* record whether the lsb of rv/2^(bc->scale) is odd: in the exact halfway + case, this is used for round to even. */ + odd = b->x[0] & 2; + b->x[0] |= 1; + p2 -= p5 + i; d = i2b(1); if (d == NULL) { @@ -1247,92 +1289,58 @@ } } - /* Now 10*b/d = exactly half-way between the two floating-point values - on either side of the input string. If b >= d, round down. */ + /* if b >= d, round down */ if (cmp(b, d) >= 0) { dd = -1; goto ret; } - - /* Compute first digit of 10*b/d. */ - b = multadd(b, 10, 0); - if (b == NULL) { - Bfree(d); - return -1; - } - dig = quorem(b, d); - assert(dig < 10); /* Compare b/d with s0 */ - - assert(nd > 0); - dd = 9999; /* silence gcc compiler warning */ - for(i = 0; i < nd0; ) { - if ((dd = s0[i++] - '0' - dig)) - goto ret; - if (!b->x[0] && b->wds == 1) { - if (i < nd) - dd = 1; - goto ret; - } + for(i = 0; i < nd0; i++) { b = multadd(b, 10, 0); if (b == NULL) { Bfree(d); return -1; } - dig = quorem(b,d); - } - for(j = bc->dp1; i++ < nd;) { - if ((dd = s0[j++] - '0' - dig)) + dd = *s0++ - '0' - quorem(b, d); + if (dd) goto ret; if (!b->x[0] && b->wds == 1) { - if (i < nd) + if (i < nd - 1) dd = 1; goto ret; } + } + s0++; + for(; i < nd; i++) { b = multadd(b, 10, 0); if (b == NULL) { Bfree(d); return -1; } - dig = quorem(b,d); + dd = *s0++ - '0' - quorem(b, d); + if (dd) + goto ret; + if (!b->x[0] && b->wds == 1) { + if (i < nd - 1) + dd = 1; + goto ret; + } } if (b->x[0] || b->wds > 1) dd = -1; ret: Bfree(b); Bfree(d); - if (speccase) { - if (dd <= 0) - rv->d = 0.; - } - else if (dd < 0) { - if (!dsign) /* does not happen for round-near */ - retlow1: - dval(rv) -= sulp(rv, bc); - } - else if (dd > 0) { - if (dsign) { - rethi1: - dval(rv) += sulp(rv, bc); - } - } - else { - /* Exact half-way case: apply round-even rule. */ - if (word1(rv) & 1) { - if (dsign) - goto rethi1; - goto retlow1; - } - } - + if (dd > 0 || (dd == 0 && odd)) + dval(rv) += sulp(rv, bc); return 0; } double _Py_dg_strtod(const char *s00, char **se) { - int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, e, e1, error; + int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, dp0, dp1, dplen, e, e1, error; int esign, i, j, k, nd, nd0, nf, nz, nz0, sign; const char *s, *s0, *s1; double aadj, aadj1; @@ -1341,7 +1349,7 @@ BCinfo bc; Bigint *bb, *bb1, *bd, *bd0, *bs, *delta; - sign = nz0 = nz = bc.dplen = 0; + sign = nz0 = nz = dplen = 0; dval(&rv) = 0.; for(s = s00;;s++) switch(*s) { case '-': @@ -1380,11 +1388,11 @@ else if (nd < 16) z = 10*z + c - '0'; nd0 = nd; - bc.dp0 = bc.dp1 = s - s0; + dp0 = dp1 = s - s0; if (c == '.') { c = *++s; - bc.dp1 = s - s0; - bc.dplen = bc.dp1 - bc.dp0; + dp1 = s - s0; + dplen = 1; if (!nd) { for(; c == '0'; c = *++s) nz++; @@ -1587,10 +1595,10 @@ /* in IEEE arithmetic. */ i = j = 18; if (i > nd0) - j += bc.dplen; + j += dplen; for(;;) { - if (--j <= bc.dp1 && j >= bc.dp0) - j = bc.dp0 - 1; + if (--j <= dp1 && j >= dp0) + j = dp0 - 1; if (s0[j] != '0') break; --i; @@ -1603,11 +1611,11 @@ y = 0; for(i = 0; i < nd0; ++i) y = 10*y + s0[i] - '0'; - for(j = bc.dp1; i < nd; ++i) + for(j = dp1; i < nd; ++i) y = 10*y + s0[j++] - '0'; } } - bd0 = s2b(s0, nd0, nd, y, bc.dplen); + bd0 = s2b(s0, nd0, nd, y); if (bd0 == NULL) goto failed_malloc; @@ -1730,6 +1738,30 @@ if (bc.nd > nd && i <= 0) { if (bc.dsign) break; /* Must use bigcomp(). */ + + /* Here rv overestimates the truncated decimal value by at most + 0.5 ulp(rv). Hence rv either overestimates the true decimal + value by <= 0.5 ulp(rv), or underestimates it by some small + amount (< 0.1 ulp(rv)); either way, rv is within 0.5 ulps of + the true decimal value, so it's possible to exit. + + Exception: if scaled rv is a normal exact power of 2, but not + DBL_MIN, then rv - 0.5 ulp(rv) takes us all the way down to the + next double, so the correctly rounded result is either rv - 0.5 + ulp(rv) or rv; in this case, use bigcomp to distinguish. */ + + if (!word1(&rv) && !(word0(&rv) & Bndry_mask)) { + /* rv can't be 0, since it's an overestimate for some + nonzero value. So rv is a normal power of 2. */ + j = (int)(word0(&rv) & Exp_mask) >> Exp_shift; + /* rv / 2^bc.scale = 2^(j - 1023 - bc.scale); use bigcomp if + rv / 2^bc.scale >= 2^-1021. */ + if (j - bc.scale >= 2) { + dval(&rv) -= 0.5 * sulp(&rv, &bc); + break; + } + } + { bc.nd = nd; i = -1; /* Discarded digits make delta smaller. */ From python-checkins at python.org Thu Jan 14 17:27:10 2010 From: python-checkins at python.org (antoine.pitrou) Date: Thu, 14 Jan 2010 16:27:10 -0000 Subject: [Python-checkins] r77497 - in python/trunk: Lib/test/test_binascii.py Misc/NEWS Modules/binascii.c Message-ID: Author: antoine.pitrou Date: Thu Jan 14 17:27:09 2010 New Revision: 77497 Log: Issue #7703: Add support for the new buffer API to functions of the binascii module. Backported from py3k by Florent Xicluna, with some additional tests. Modified: python/trunk/Lib/test/test_binascii.py python/trunk/Misc/NEWS python/trunk/Modules/binascii.c Modified: python/trunk/Lib/test/test_binascii.py ============================================================================== --- python/trunk/Lib/test/test_binascii.py (original) +++ python/trunk/Lib/test/test_binascii.py Thu Jan 14 17:27:09 2010 @@ -3,14 +3,19 @@ from test import test_support import unittest import binascii +import array class BinASCIITest(unittest.TestCase): + type2test = str # Create binary test data - data = "The quick brown fox jumps over the lazy dog.\r\n" + rawdata = "The quick brown fox jumps over the lazy dog.\r\n" # Be slow so we don't depend on other modules - data += "".join(map(chr, xrange(256))) - data += "\r\nHello world.\n" + rawdata += "".join(map(chr, xrange(256))) + rawdata += "\r\nHello world.\n" + + def setUp(self): + self.data = self.type2test(self.rawdata) def test_exceptions(self): # Check module exceptions @@ -26,10 +31,10 @@ prefixes.extend(["crc_", "rlecode_", "rledecode_"]) for prefix in prefixes: name = prefix + suffix - self.assertTrue(callable(getattr(binascii, name))) + self.assertTrue(hasattr(getattr(binascii, name), '__call__')) self.assertRaises(TypeError, getattr(binascii, name)) for name in ("hexlify", "unhexlify"): - self.assertTrue(callable(getattr(binascii, name))) + self.assertTrue(hasattr(getattr(binascii, name), '__call__')) self.assertRaises(TypeError, getattr(binascii, name)) def test_base64valid(self): @@ -44,7 +49,7 @@ for line in lines: b = binascii.a2b_base64(line) res = res + b - self.assertEqual(res, self.data) + self.assertEqual(res, self.rawdata) def test_base64invalid(self): # Test base64 with random invalid characters sprinkled throughout @@ -77,7 +82,7 @@ for line in map(addnoise, lines): b = binascii.a2b_base64(line) res += b - self.assertEqual(res, self.data) + self.assertEqual(res, self.rawdata) # Test base64 with just invalid characters, which should return # empty strings. TBD: shouldn't it raise an exception instead ? @@ -94,7 +99,7 @@ for line in lines: b = binascii.a2b_uu(line) res += b - self.assertEqual(res, self.data) + self.assertEqual(res, self.rawdata) self.assertEqual(binascii.a2b_uu("\x7f"), "\x00"*31) self.assertEqual(binascii.a2b_uu("\x80"), "\x00"*32) @@ -167,8 +172,20 @@ f('') binascii.crc_hqx('', 0) + +class ArrayBinASCIITest(BinASCIITest): + def type2test(self, s): + return array.array('c', s) + + +class MemoryviewBinASCIITest(BinASCIITest): + type2test = memoryview + + def test_main(): - test_support.run_unittest(BinASCIITest) + test_support.run_unittest(BinASCIITest, + ArrayBinASCIITest, + MemoryviewBinASCIITest) if __name__ == "__main__": test_main() Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Thu Jan 14 17:27:09 2010 @@ -32,6 +32,10 @@ Library ------- +- Issue #7703: Add support for the new buffer API to functions of the + binascii module. Backported from py3k by Florent Xicluna, with some + additional tests. + - Issue #2846: Add support for gzip.GzipFile reading zero-padded files. Patch by Brian Curtin. Modified: python/trunk/Modules/binascii.c ============================================================================== --- python/trunk/Modules/binascii.c (original) +++ python/trunk/Modules/binascii.c Thu Jan 14 17:27:09 2010 @@ -188,6 +188,7 @@ static PyObject * binascii_a2b_uu(PyObject *self, PyObject *args) { + Py_buffer pascii; unsigned char *ascii_data, *bin_data; int leftbits = 0; unsigned char this_ch; @@ -195,8 +196,10 @@ PyObject *rv; Py_ssize_t ascii_len, bin_len; - if ( !PyArg_ParseTuple(args, "t#:a2b_uu", &ascii_data, &ascii_len) ) + if ( !PyArg_ParseTuple(args, "s*:a2b_uu", &pascii) ) return NULL; + ascii_data = pascii.buf; + ascii_len = pascii.len; assert(ascii_len >= 0); @@ -205,9 +208,11 @@ ascii_len--; /* Allocate the buffer */ - if ( (rv=PyString_FromStringAndSize(NULL, bin_len)) == NULL ) + if ( (rv=PyString_FromStringAndSize(NULL, bin_len)) == NULL ) { + PyBuffer_Release(&pascii); return NULL; - bin_data = (unsigned char *)PyString_AsString(rv); + } + bin_data = (unsigned char *)PyString_AS_STRING(rv); for( ; bin_len > 0 ; ascii_len--, ascii_data++ ) { /* XXX is it really best to add NULs if there's no more data */ @@ -226,6 +231,7 @@ */ if ( this_ch < ' ' || this_ch > (' ' + 64)) { PyErr_SetString(Error, "Illegal char"); + PyBuffer_Release(&pascii); Py_DECREF(rv); return NULL; } @@ -254,10 +260,12 @@ if ( this_ch != ' ' && this_ch != ' '+64 && this_ch != '\n' && this_ch != '\r' ) { PyErr_SetString(Error, "Trailing garbage"); + PyBuffer_Release(&pascii); Py_DECREF(rv); return NULL; } } + PyBuffer_Release(&pascii); return rv; } @@ -266,6 +274,7 @@ static PyObject * binascii_b2a_uu(PyObject *self, PyObject *args) { + Py_buffer pbin; unsigned char *ascii_data, *bin_data; int leftbits = 0; unsigned char this_ch; @@ -273,18 +282,23 @@ PyObject *rv; Py_ssize_t bin_len; - if ( !PyArg_ParseTuple(args, "s#:b2a_uu", &bin_data, &bin_len) ) + if ( !PyArg_ParseTuple(args, "s*:b2a_uu", &pbin) ) return NULL; + bin_data = pbin.buf; + bin_len = pbin.len; if ( bin_len > 45 ) { /* The 45 is a limit that appears in all uuencode's */ PyErr_SetString(Error, "At most 45 bytes at once"); + PyBuffer_Release(&pbin); return NULL; } /* We're lazy and allocate to much (fixed up later) */ - if ( (rv=PyString_FromStringAndSize(NULL, bin_len*2+2)) == NULL ) + if ( (rv=PyString_FromStringAndSize(NULL, bin_len*2+2)) == NULL ) { + PyBuffer_Release(&pbin); return NULL; - ascii_data = (unsigned char *)PyString_AsString(rv); + } + ascii_data = (unsigned char *)PyString_AS_STRING(rv); /* Store the length */ *ascii_data++ = ' ' + (bin_len & 077); @@ -306,8 +320,13 @@ } *ascii_data++ = '\n'; /* Append a courtesy newline */ - _PyString_Resize(&rv, (ascii_data - - (unsigned char *)PyString_AsString(rv))); + if (_PyString_Resize(&rv, + (ascii_data - + (unsigned char *)PyString_AS_STRING(rv))) < 0) { + Py_DECREF(rv); + rv = NULL; + } + PyBuffer_Release(&pbin); return rv; } @@ -342,6 +361,7 @@ static PyObject * binascii_a2b_base64(PyObject *self, PyObject *args) { + Py_buffer pascii; unsigned char *ascii_data, *bin_data; int leftbits = 0; unsigned char this_ch; @@ -350,20 +370,26 @@ Py_ssize_t ascii_len, bin_len; int quad_pos = 0; - if ( !PyArg_ParseTuple(args, "t#:a2b_base64", &ascii_data, &ascii_len) ) + if ( !PyArg_ParseTuple(args, "s*:a2b_base64", &pascii) ) return NULL; + ascii_data = pascii.buf; + ascii_len = pascii.len; assert(ascii_len >= 0); - if (ascii_len > PY_SSIZE_T_MAX - 3) + if (ascii_len > PY_SSIZE_T_MAX - 3) { + PyBuffer_Release(&pascii); return PyErr_NoMemory(); + } bin_len = ((ascii_len+3)/4)*3; /* Upper bound, corrected later */ /* Allocate the buffer */ - if ( (rv=PyString_FromStringAndSize(NULL, bin_len)) == NULL ) + if ( (rv=PyString_FromStringAndSize(NULL, bin_len)) == NULL ) { + PyBuffer_Release(&pascii); return NULL; - bin_data = (unsigned char *)PyString_AsString(rv); + } + bin_data = (unsigned char *)PyString_AS_STRING(rv); bin_len = 0; for( ; ascii_len > 0; ascii_len--, ascii_data++) { @@ -415,6 +441,7 @@ } if (leftbits != 0) { + PyBuffer_Release(&pascii); PyErr_SetString(Error, "Incorrect padding"); Py_DECREF(rv); return NULL; @@ -424,12 +451,17 @@ ** (because the input was all invalid) return the shared empty ** string instead; _PyString_Resize() won't do this for us. */ - if (bin_len > 0) - _PyString_Resize(&rv, bin_len); + if (bin_len > 0) { + if (_PyString_Resize(&rv, bin_len) < 0) { + Py_DECREF(rv); + rv = NULL; + } + } else { Py_DECREF(rv); - rv = PyString_FromString(""); + rv = PyString_FromStringAndSize("", 0); } + PyBuffer_Release(&pascii); return rv; } @@ -438,6 +470,7 @@ static PyObject * binascii_b2a_base64(PyObject *self, PyObject *args) { + Py_buffer pbuf; unsigned char *ascii_data, *bin_data; int leftbits = 0; unsigned char this_ch; @@ -445,22 +478,27 @@ PyObject *rv; Py_ssize_t bin_len; - if ( !PyArg_ParseTuple(args, "s#:b2a_base64", &bin_data, &bin_len) ) + if ( !PyArg_ParseTuple(args, "s*:b2a_base64", &pbuf) ) return NULL; + bin_data = pbuf.buf; + bin_len = pbuf.len; assert(bin_len >= 0); if ( bin_len > BASE64_MAXBIN ) { PyErr_SetString(Error, "Too much data for base64 line"); + PyBuffer_Release(&pbuf); return NULL; } /* We're lazy and allocate too much (fixed up later). "+3" leaves room for up to two pad characters and a trailing newline. Note that 'b' gets encoded as 'Yg==\n' (1 in, 5 out). */ - if ( (rv=PyString_FromStringAndSize(NULL, bin_len*2 + 3)) == NULL ) + if ( (rv=PyString_FromStringAndSize(NULL, bin_len*2 + 3)) == NULL ) { + PyBuffer_Release(&pbuf); return NULL; - ascii_data = (unsigned char *)PyString_AsString(rv); + } + ascii_data = (unsigned char *)PyString_AS_STRING(rv); for( ; bin_len > 0 ; bin_len--, bin_data++ ) { /* Shift the data into our buffer */ @@ -484,8 +522,13 @@ } *ascii_data++ = '\n'; /* Append a courtesy newline */ - _PyString_Resize(&rv, (ascii_data - - (unsigned char *)PyString_AsString(rv))); + if (_PyString_Resize(&rv, + (ascii_data - + (unsigned char *)PyString_AS_STRING(rv))) < 0) { + Py_DECREF(rv); + rv = NULL; + } + PyBuffer_Release(&pbuf); return rv; } @@ -515,7 +558,7 @@ would preclude subsequent resizing. */ if ( (rv=PyString_FromStringAndSize(NULL, len+2)) == NULL ) return NULL; - bin_data = (unsigned char *)PyString_AsString(rv); + bin_data = (unsigned char *)PyString_AS_STRING(rv); for( ; len > 0 ; len--, ascii_data++ ) { /* Get the byte and look it up */ @@ -549,8 +592,12 @@ Py_DECREF(rv); return NULL; } - _PyString_Resize( - &rv, (bin_data - (unsigned char *)PyString_AsString(rv))); + if (_PyString_Resize(&rv, + (bin_data - + (unsigned char *)PyString_AS_STRING(rv))) < 0) { + Py_DECREF(rv); + rv = NULL; + } if (rv) { PyObject *rrv = Py_BuildValue("Oi", rv, done); Py_DECREF(rv); @@ -565,23 +612,30 @@ static PyObject * binascii_rlecode_hqx(PyObject *self, PyObject *args) { + Py_buffer pbuf; unsigned char *in_data, *out_data; PyObject *rv; unsigned char ch; Py_ssize_t in, inend, len; - if ( !PyArg_ParseTuple(args, "s#:rlecode_hqx", &in_data, &len) ) + if ( !PyArg_ParseTuple(args, "s*:rlecode_hqx", &pbuf) ) return NULL; + in_data = pbuf.buf; + len = pbuf.len; assert(len >= 0); - if (len > PY_SSIZE_T_MAX / 2 - 2) + if (len > PY_SSIZE_T_MAX / 2 - 2) { + PyBuffer_Release(&pbuf); return PyErr_NoMemory(); + } /* Worst case: output is twice as big as input (fixed later) */ - if ( (rv=PyString_FromStringAndSize(NULL, len*2+2)) == NULL ) + if ( (rv=PyString_FromStringAndSize(NULL, len*2+2)) == NULL ) { + PyBuffer_Release(&pbuf); return NULL; - out_data = (unsigned char *)PyString_AsString(rv); + } + out_data = (unsigned char *)PyString_AS_STRING(rv); for( in=0; in= 0); - if (len > PY_SSIZE_T_MAX / 2 - 2) + if (len > PY_SSIZE_T_MAX / 2 - 2) { + PyBuffer_Release(&pbin); return PyErr_NoMemory(); + } /* Allocate a buffer that is at least large enough */ - if ( (rv=PyString_FromStringAndSize(NULL, len*2+2)) == NULL ) + if ( (rv=PyString_FromStringAndSize(NULL, len*2+2)) == NULL ) { + PyBuffer_Release(&pbin); return NULL; - ascii_data = (unsigned char *)PyString_AsString(rv); + } + ascii_data = (unsigned char *)PyString_AS_STRING(rv); for( ; len > 0 ; len--, bin_data++ ) { /* Shift into our buffer, and output any 6bits ready */ @@ -652,8 +718,13 @@ leftchar <<= (6-leftbits); *ascii_data++ = table_b2a_hqx[leftchar & 0x3f]; } - _PyString_Resize(&rv, (ascii_data - - (unsigned char *)PyString_AsString(rv))); + if (_PyString_Resize(&rv, + (ascii_data - + (unsigned char *)PyString_AS_STRING(rv))) < 0) { + Py_DECREF(rv); + rv = NULL; + } + PyBuffer_Release(&pbin); return rv; } @@ -662,28 +733,37 @@ static PyObject * binascii_rledecode_hqx(PyObject *self, PyObject *args) { + Py_buffer pin; unsigned char *in_data, *out_data; unsigned char in_byte, in_repeat; PyObject *rv; Py_ssize_t in_len, out_len, out_len_left; - if ( !PyArg_ParseTuple(args, "s#:rledecode_hqx", &in_data, &in_len) ) + if ( !PyArg_ParseTuple(args, "s*:rledecode_hqx", &pin) ) return NULL; + in_data = pin.buf; + in_len = pin.len; assert(in_len >= 0); /* Empty string is a special case */ - if ( in_len == 0 ) - return PyString_FromString(""); - else if (in_len > PY_SSIZE_T_MAX / 2) - return PyErr_NoMemory(); + if ( in_len == 0 ) { + PyBuffer_Release(&pin); + return PyString_FromStringAndSize("", 0); + } + else if (in_len > PY_SSIZE_T_MAX / 2) { + PyBuffer_Release(&pin); + return PyErr_NoMemory(); + } /* Allocate a buffer of reasonable size. Resized when needed */ out_len = in_len*2; - if ( (rv=PyString_FromStringAndSize(NULL, out_len)) == NULL ) + if ( (rv=PyString_FromStringAndSize(NULL, out_len)) == NULL ) { + PyBuffer_Release(&pin); return NULL; + } out_len_left = out_len; - out_data = (unsigned char *)PyString_AsString(rv); + out_data = (unsigned char *)PyString_AS_STRING(rv); /* ** We need two macros here to get/put bytes and handle @@ -694,6 +774,7 @@ if ( --in_len < 0 ) { \ PyErr_SetString(Incomplete, ""); \ Py_DECREF(rv); \ + PyBuffer_Release(&pin); \ return NULL; \ } \ b = *in_data++; \ @@ -703,9 +784,9 @@ do { \ if ( --out_len_left < 0 ) { \ if ( out_len > PY_SSIZE_T_MAX / 2) return PyErr_NoMemory(); \ - _PyString_Resize(&rv, 2*out_len); \ - if ( rv == NULL ) return NULL; \ - out_data = (unsigned char *)PyString_AsString(rv) \ + if (_PyString_Resize(&rv, 2*out_len) < 0) \ + { Py_DECREF(rv); PyBuffer_Release(&pin); return NULL; } \ + out_data = (unsigned char *)PyString_AS_STRING(rv) \ + out_len; \ out_len_left = out_len-1; \ out_len = out_len * 2; \ @@ -726,6 +807,7 @@ ** of the string only). This is a programmer error. */ PyErr_SetString(Error, "Orphaned RLE code at start"); + PyBuffer_Release(&pin); Py_DECREF(rv); return NULL; } @@ -753,8 +835,13 @@ OUTBYTE(in_byte); } } - _PyString_Resize(&rv, (out_data - - (unsigned char *)PyString_AsString(rv))); + if (_PyString_Resize(&rv, + (out_data - + (unsigned char *)PyString_AS_STRING(rv))) < 0) { + Py_DECREF(rv); + rv = NULL; + } + PyBuffer_Release(&pin); return rv; } @@ -764,17 +851,21 @@ static PyObject * binascii_crc_hqx(PyObject *self, PyObject *args) { + Py_buffer pin; unsigned char *bin_data; unsigned int crc; Py_ssize_t len; - if ( !PyArg_ParseTuple(args, "s#i:crc_hqx", &bin_data, &len, &crc) ) + if ( !PyArg_ParseTuple(args, "s*i:crc_hqx", &pin, &crc) ) return NULL; + bin_data = pin.buf; + len = pin.len; while(len-- > 0) { crc=((crc<<8)&0xff00)^crctab_hqx[((crc>>8)&0xff)^*bin_data++]; } + PyBuffer_Release(&pin); return Py_BuildValue("i", crc); } @@ -787,17 +878,21 @@ binascii_crc32(PyObject *self, PyObject *args) { unsigned int crc32val = 0; /* crc32(0L, Z_NULL, 0) */ + Py_buffer pbuf; Byte *buf; Py_ssize_t len; int signed_val; - if (!PyArg_ParseTuple(args, "s#|I:crc32", &buf, &len, &crc32val)) - return NULL; + if (!PyArg_ParseTuple(args, "s*|I:crc32", &pbuf, &crc32val)) + return NULL; /* In Python 2.x we return a signed integer regardless of native platform * long size (the 32bit unsigned long is treated as 32-bit signed and sign * extended into a 64-bit long inside the integer object). 3.0 does the * right thing and returns unsigned. http://bugs.python.org/issue1202 */ + buf = (Byte*)pbuf.buf; + len = pbuf.len; signed_val = crc32(crc32val, buf, len); + PyBuffer_Release(&pbuf); return PyInt_FromLong(signed_val); } #else /* USE_ZLIB_CRC32 */ @@ -922,13 +1017,16 @@ static PyObject * binascii_crc32(PyObject *self, PyObject *args) { /* By Jim Ahlstrom; All rights transferred to CNRI */ + Py_buffer pbin; unsigned char *bin_data; unsigned int crc = 0U; /* initial value of CRC */ Py_ssize_t len; int result; - if ( !PyArg_ParseTuple(args, "s#|I:crc32", &bin_data, &len, &crc) ) + if ( !PyArg_ParseTuple(args, "s*|I:crc32", &pbin, &crc) ) return NULL; + bin_data = pbin.buf; + len = pbin.len; crc = ~ crc; while (len-- > 0) @@ -936,6 +1034,7 @@ /* Note: (crc >> 8) MUST zero fill on left */ result = (int)(crc ^ 0xFFFFFFFFU); + PyBuffer_Release(&pbin); return PyInt_FromLong(result); } #endif /* USE_ZLIB_CRC32 */ @@ -944,25 +1043,30 @@ static PyObject * binascii_hexlify(PyObject *self, PyObject *args) { + Py_buffer parg; char* argbuf; Py_ssize_t arglen; PyObject *retval; char* retbuf; Py_ssize_t i, j; - if (!PyArg_ParseTuple(args, "s#:b2a_hex", &argbuf, &arglen)) + if (!PyArg_ParseTuple(args, "s*:b2a_hex", &parg)) return NULL; + argbuf = parg.buf; + arglen = parg.len; assert(arglen >= 0); - if (arglen > PY_SSIZE_T_MAX / 2) + if (arglen > PY_SSIZE_T_MAX / 2) { + PyBuffer_Release(&parg); return PyErr_NoMemory(); + } retval = PyString_FromStringAndSize(NULL, arglen*2); - if (!retval) + if (!retval) { + PyBuffer_Release(&parg); return NULL; - retbuf = PyString_AsString(retval); - if (!retbuf) - goto finally; + } + retbuf = PyString_AS_STRING(retval); /* make hex version of string, taken from shamodule.c */ for (i=j=0; i < arglen; i++) { @@ -974,11 +1078,8 @@ c = (c>9) ? c+'a'-10 : c + '0'; retbuf[j++] = c; } + PyBuffer_Release(&parg); return retval; - - finally: - Py_DECREF(retval); - return NULL; } PyDoc_STRVAR(doc_hexlify, @@ -1005,14 +1106,17 @@ static PyObject * binascii_unhexlify(PyObject *self, PyObject *args) { + Py_buffer parg; char* argbuf; Py_ssize_t arglen; PyObject *retval; char* retbuf; Py_ssize_t i, j; - if (!PyArg_ParseTuple(args, "s#:a2b_hex", &argbuf, &arglen)) + if (!PyArg_ParseTuple(args, "s*:a2b_hex", &parg)) return NULL; + argbuf = parg.buf; + arglen = parg.len; assert(arglen >= 0); @@ -1021,16 +1125,17 @@ * raise an exception. */ if (arglen % 2) { + PyBuffer_Release(&parg); PyErr_SetString(PyExc_TypeError, "Odd-length string"); return NULL; } retval = PyString_FromStringAndSize(NULL, (arglen/2)); - if (!retval) + if (!retval) { + PyBuffer_Release(&parg); return NULL; - retbuf = PyString_AsString(retval); - if (!retbuf) - goto finally; + } + retbuf = PyString_AS_STRING(retval); for (i=j=0; i < arglen; i += 2) { int top = to_int(Py_CHARMASK(argbuf[i])); @@ -1042,9 +1147,11 @@ } retbuf[j++] = (top << 4) + bot; } + PyBuffer_Release(&parg); return retval; finally: + PyBuffer_Release(&parg); Py_DECREF(retval); return NULL; } @@ -1077,15 +1184,18 @@ { Py_ssize_t in, out; char ch; + Py_buffer pdata; unsigned char *data, *odata; Py_ssize_t datalen = 0; PyObject *rv; static char *kwlist[] = {"data", "header", NULL}; int header = 0; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|i", kwlist, &data, - &datalen, &header)) + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s*|i", kwlist, &pdata, + &header)) return NULL; + data = pdata.buf; + datalen = pdata.len; /* We allocate the output same size as input, this is overkill. * The previous implementation used calloc() so we'll zero out the @@ -1093,6 +1203,7 @@ */ odata = (unsigned char *) PyMem_Malloc(datalen); if (odata == NULL) { + PyBuffer_Release(&pdata); PyErr_NoMemory(); return NULL; } @@ -1143,9 +1254,11 @@ } } if ((rv = PyString_FromStringAndSize((char *)odata, out)) == NULL) { + PyBuffer_Release(&pdata); PyMem_Free(odata); return NULL; } + PyBuffer_Release(&pdata); PyMem_Free(odata); return rv; } @@ -1176,6 +1289,7 @@ binascii_b2a_qp (PyObject *self, PyObject *args, PyObject *kwargs) { Py_ssize_t in, out; + Py_buffer pdata; unsigned char *data, *odata; Py_ssize_t datalen = 0, odatalen = 0; PyObject *rv; @@ -1189,9 +1303,11 @@ int crlf = 0; unsigned char *p; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|iii", kwlist, &data, - &datalen, "etabs, &istext, &header)) + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s*|iii", kwlist, &pdata, + "etabs, &istext, &header)) return NULL; + data = pdata.buf; + datalen = pdata.len; /* See if this string is using CRLF line ends */ /* XXX: this function has the side effect of converting all of @@ -1269,6 +1385,7 @@ */ odata = (unsigned char *) PyMem_Malloc(odatalen); if (odata == NULL) { + PyBuffer_Release(&pdata); PyErr_NoMemory(); return NULL; } @@ -1343,9 +1460,11 @@ } } if ((rv = PyString_FromStringAndSize((char *)odata, out)) == NULL) { + PyBuffer_Release(&pdata); PyMem_Free(odata); return NULL; } + PyBuffer_Release(&pdata); PyMem_Free(odata); return rv; } From python-checkins at python.org Thu Jan 14 17:33:35 2010 From: python-checkins at python.org (antoine.pitrou) Date: Thu, 14 Jan 2010 16:33:35 -0000 Subject: [Python-checkins] r77498 - in python/branches/py3k: Lib/test/test_binascii.py Message-ID: Author: antoine.pitrou Date: Thu Jan 14 17:33:34 2010 New Revision: 77498 Log: Merge note: only the tests have been kept here, since the rest was already a backport. Merged revisions 77497 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77497 | antoine.pitrou | 2010-01-14 17:27:09 +0100 (jeu., 14 janv. 2010) | 5 lines Issue #7703: Add support for the new buffer API to functions of the binascii module. Backported from py3k by Florent Xicluna, with some additional tests. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_binascii.py Modified: python/branches/py3k/Lib/test/test_binascii.py ============================================================================== --- python/branches/py3k/Lib/test/test_binascii.py (original) +++ python/branches/py3k/Lib/test/test_binascii.py Thu Jan 14 17:33:34 2010 @@ -3,14 +3,19 @@ from test import support import unittest import binascii +import array class BinASCIITest(unittest.TestCase): + type2test = bytes # Create binary test data - data = b"The quick brown fox jumps over the lazy dog.\r\n" + rawdata = b"The quick brown fox jumps over the lazy dog.\r\n" # Be slow so we don't depend on other modules - data += bytes(range(256)) - data += b"\r\nHello world.\n" + rawdata += bytes(range(256)) + rawdata += b"\r\nHello world.\n" + + def setUp(self): + self.data = self.type2test(self.rawdata) def test_exceptions(self): # Check module exceptions @@ -44,7 +49,7 @@ for line in lines: b = binascii.a2b_base64(line) res += b - self.assertEqual(res, self.data) + self.assertEqual(res, self.rawdata) def test_base64invalid(self): # Test base64 with random invalid characters sprinkled throughout @@ -76,7 +81,7 @@ for line in map(addnoise, lines): b = binascii.a2b_base64(line) res += b - self.assertEqual(res, self.data) + self.assertEqual(res, self.rawdata) # Test base64 with just invalid characters, which should return # empty strings. TBD: shouldn't it raise an exception instead ? @@ -93,7 +98,7 @@ for line in lines: b = binascii.a2b_uu(line) res += b - self.assertEqual(res, self.data) + self.assertEqual(res, self.rawdata) self.assertEqual(binascii.a2b_uu(b"\x7f"), b"\x00"*31) self.assertEqual(binascii.a2b_uu(b"\x80"), b"\x00"*32) @@ -176,8 +181,20 @@ binascii.crc_hqx, binascii.crc32): self.assertRaises(TypeError, f, "test") + +class ArrayBinASCIITest(BinASCIITest): + def type2test(self, s): + return array.array('B', list(s)) + + +class MemoryviewBinASCIITest(BinASCIITest): + type2test = memoryview + + def test_main(): - support.run_unittest(BinASCIITest) + support.run_unittest(BinASCIITest, + ArrayBinASCIITest, + MemoryviewBinASCIITest) if __name__ == "__main__": test_main() From python-checkins at python.org Thu Jan 14 18:25:25 2010 From: python-checkins at python.org (antoine.pitrou) Date: Thu, 14 Jan 2010 17:25:25 -0000 Subject: [Python-checkins] r77499 - in python/trunk: Lib/test/test_re.py Misc/NEWS Modules/_sre.c Message-ID: Author: antoine.pitrou Date: Thu Jan 14 18:25:24 2010 New Revision: 77499 Log: Issue #3299: Fix possible crash in the _sre module when given bad argument values in debug mode. Patch by Victor Stinner. Modified: python/trunk/Lib/test/test_re.py python/trunk/Misc/NEWS python/trunk/Modules/_sre.c Modified: python/trunk/Lib/test/test_re.py ============================================================================== --- python/trunk/Lib/test/test_re.py (original) +++ python/trunk/Lib/test/test_re.py Thu Jan 14 18:25:24 2010 @@ -703,6 +703,12 @@ self.assertEqual(pattern.sub('#', 'a\nb\nc'), 'a#\nb#\nc#') self.assertEqual(pattern.sub('#', '\n'), '#\n#') + def test_dealloc(self): + # issue 3299: check for segfault in debug build + import _sre + long_overflow = sys.maxsize + 2 + self.assertRaises(TypeError, re.finditer, "a", {}) + self.assertRaises(OverflowError, _sre.compile, "abc", 0, [long_overflow]) def run_re_tests(): from test.re_tests import benchmarks, tests, SUCCEED, FAIL, SYNTAX_ERROR Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Thu Jan 14 18:25:24 2010 @@ -32,6 +32,9 @@ Library ------- +- Issue #3299: Fix possible crash in the _sre module when given bad + argument values in debug mode. Patch by Victor Stinner. + - Issue #7703: Add support for the new buffer API to functions of the binascii module. Backported from py3k by Florent Xicluna, with some additional tests. Modified: python/trunk/Modules/_sre.c ============================================================================== --- python/trunk/Modules/_sre.c (original) +++ python/trunk/Modules/_sre.c Thu Jan 14 18:25:24 2010 @@ -2684,6 +2684,10 @@ self = PyObject_NEW_VAR(PatternObject, &Pattern_Type, n); if (!self) return NULL; + self->weakreflist = NULL; + self->pattern = NULL; + self->groupindex = NULL; + self->indexgroup = NULL; self->codesize = n; @@ -2700,7 +2704,7 @@ } if (PyErr_Occurred()) { - PyObject_DEL(self); + Py_DECREF(self); return NULL; } @@ -3718,7 +3722,7 @@ scanner_dealloc(ScannerObject* self) { state_fini(&self->state); - Py_DECREF(self->pattern); + Py_XDECREF(self->pattern); PyObject_DEL(self); } @@ -3840,10 +3844,11 @@ self = PyObject_NEW(ScannerObject, &Scanner_Type); if (!self) return NULL; + self->pattern = NULL; string = state_init(&self->state, pattern, string, start, end); if (!string) { - PyObject_DEL(self); + Py_DECREF(self); return NULL; } From python-checkins at python.org Thu Jan 14 18:34:09 2010 From: python-checkins at python.org (antoine.pitrou) Date: Thu, 14 Jan 2010 17:34:09 -0000 Subject: [Python-checkins] r77500 - in python/branches/release26-maint: Lib/test/test_re.py Misc/NEWS Modules/_sre.c Message-ID: Author: antoine.pitrou Date: Thu Jan 14 18:34:09 2010 New Revision: 77500 Log: Merged revisions 77499 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77499 | antoine.pitrou | 2010-01-14 18:25:24 +0100 (jeu., 14 janv. 2010) | 4 lines Issue #3299: Fix possible crash in the _sre module when given bad argument values in debug mode. Patch by Victor Stinner. ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/test/test_re.py python/branches/release26-maint/Misc/NEWS python/branches/release26-maint/Modules/_sre.c Modified: python/branches/release26-maint/Lib/test/test_re.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_re.py (original) +++ python/branches/release26-maint/Lib/test/test_re.py Thu Jan 14 18:34:09 2010 @@ -685,6 +685,12 @@ self.assertEqual(pattern.sub('#', 'a\nb\nc'), 'a#\nb#\nc#') self.assertEqual(pattern.sub('#', '\n'), '#\n#') + def test_dealloc(self): + # issue 3299: check for segfault in debug build + import _sre + long_overflow = sys.maxsize + 2 + self.assertRaises(TypeError, re.finditer, "a", {}) + self.assertRaises(OverflowError, _sre.compile, "abc", 0, [long_overflow]) def run_re_tests(): from test.re_tests import benchmarks, tests, SUCCEED, FAIL, SYNTAX_ERROR Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Thu Jan 14 18:34:09 2010 @@ -48,6 +48,9 @@ Library ------- +- Issue #3299: Fix possible crash in the _sre module when given bad + argument values in debug mode. Patch by Victor Stinner. + - Issue #5827: Make sure that normpath preserves unicode. Initial patch by Matt Giuca. Modified: python/branches/release26-maint/Modules/_sre.c ============================================================================== --- python/branches/release26-maint/Modules/_sre.c (original) +++ python/branches/release26-maint/Modules/_sre.c Thu Jan 14 18:34:09 2010 @@ -2684,6 +2684,10 @@ self = PyObject_NEW_VAR(PatternObject, &Pattern_Type, n); if (!self) return NULL; + self->weakreflist = NULL; + self->pattern = NULL; + self->groupindex = NULL; + self->indexgroup = NULL; self->codesize = n; @@ -2700,7 +2704,7 @@ } if (PyErr_Occurred()) { - PyObject_DEL(self); + Py_DECREF(self); return NULL; } @@ -3718,7 +3722,7 @@ scanner_dealloc(ScannerObject* self) { state_fini(&self->state); - Py_DECREF(self->pattern); + Py_XDECREF(self->pattern); PyObject_DEL(self); } @@ -3840,10 +3844,11 @@ self = PyObject_NEW(ScannerObject, &Scanner_Type); if (!self) return NULL; + self->pattern = NULL; string = state_init(&self->state, pattern, string, start, end); if (!string) { - PyObject_DEL(self); + Py_DECREF(self); return NULL; } From python-checkins at python.org Thu Jan 14 18:34:49 2010 From: python-checkins at python.org (antoine.pitrou) Date: Thu, 14 Jan 2010 17:34:49 -0000 Subject: [Python-checkins] r77501 - in python/branches/py3k: Lib/test/test_re.py Misc/NEWS Modules/_sre.c Message-ID: Author: antoine.pitrou Date: Thu Jan 14 18:34:48 2010 New Revision: 77501 Log: Merged revisions 77499 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77499 | antoine.pitrou | 2010-01-14 18:25:24 +0100 (jeu., 14 janv. 2010) | 4 lines Issue #3299: Fix possible crash in the _sre module when given bad argument values in debug mode. Patch by Victor Stinner. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_re.py python/branches/py3k/Misc/NEWS python/branches/py3k/Modules/_sre.c Modified: python/branches/py3k/Lib/test/test_re.py ============================================================================== --- python/branches/py3k/Lib/test/test_re.py (original) +++ python/branches/py3k/Lib/test/test_re.py Thu Jan 14 18:34:48 2010 @@ -717,6 +717,12 @@ self.assertRaises(ValueError, re.compile, '(?a)\w', re.UNICODE) self.assertRaises(ValueError, re.compile, '(?au)\w') + def test_dealloc(self): + # issue 3299: check for segfault in debug build + import _sre + long_overflow = sys.maxsize + 2 + self.assertRaises(TypeError, re.finditer, "a", {}) + self.assertRaises(OverflowError, _sre.compile, "abc", 0, [long_overflow]) def run_re_tests(): from test.re_tests import benchmarks, tests, SUCCEED, FAIL, SYNTAX_ERROR Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Thu Jan 14 18:34:48 2010 @@ -213,6 +213,9 @@ Library ------- +- Issue #3299: Fix possible crash in the _sre module when given bad + argument values in debug mode. Patch by Victor Stinner. + - Issue #2846: Add support for gzip.GzipFile reading zero-padded files. Patch by Brian Curtin. Modified: python/branches/py3k/Modules/_sre.c ============================================================================== --- python/branches/py3k/Modules/_sre.c (original) +++ python/branches/py3k/Modules/_sre.c Thu Jan 14 18:34:48 2010 @@ -2674,6 +2674,10 @@ self = PyObject_NEW_VAR(PatternObject, &Pattern_Type, n); if (!self) return NULL; + self->weakreflist = NULL; + self->pattern = NULL; + self->groupindex = NULL; + self->indexgroup = NULL; self->codesize = n; @@ -2689,7 +2693,7 @@ } if (PyErr_Occurred()) { - PyObject_DEL(self); + Py_DECREF(self); return NULL; } @@ -3730,7 +3734,7 @@ scanner_dealloc(ScannerObject* self) { state_fini(&self->state); - Py_DECREF(self->pattern); + Py_XDECREF(self->pattern); PyObject_DEL(self); } @@ -3860,10 +3864,11 @@ self = PyObject_NEW(ScannerObject, &Scanner_Type); if (!self) return NULL; + self->pattern = NULL; string = state_init(&self->state, pattern, string, start, end); if (!string) { - PyObject_DEL(self); + Py_DECREF(self); return NULL; } From python-checkins at python.org Thu Jan 14 18:37:24 2010 From: python-checkins at python.org (antoine.pitrou) Date: Thu, 14 Jan 2010 17:37:24 -0000 Subject: [Python-checkins] r77502 - in python/branches/release31-maint: Lib/test/test_re.py Misc/NEWS Modules/_sre.c Message-ID: Author: antoine.pitrou Date: Thu Jan 14 18:37:24 2010 New Revision: 77502 Log: Merged revisions 77501 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77501 | antoine.pitrou | 2010-01-14 18:34:48 +0100 (jeu., 14 janv. 2010) | 10 lines Merged revisions 77499 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77499 | antoine.pitrou | 2010-01-14 18:25:24 +0100 (jeu., 14 janv. 2010) | 4 lines Issue #3299: Fix possible crash in the _sre module when given bad argument values in debug mode. Patch by Victor Stinner. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/test/test_re.py python/branches/release31-maint/Misc/NEWS python/branches/release31-maint/Modules/_sre.c Modified: python/branches/release31-maint/Lib/test/test_re.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_re.py (original) +++ python/branches/release31-maint/Lib/test/test_re.py Thu Jan 14 18:37:24 2010 @@ -696,6 +696,12 @@ self.assertRaises(ValueError, re.compile, '(?a)\w', re.UNICODE) self.assertRaises(ValueError, re.compile, '(?au)\w') + def test_dealloc(self): + # issue 3299: check for segfault in debug build + import _sre + long_overflow = sys.maxsize + 2 + self.assertRaises(TypeError, re.finditer, "a", {}) + self.assertRaises(OverflowError, _sre.compile, "abc", 0, [long_overflow]) def run_re_tests(): from test.re_tests import benchmarks, tests, SUCCEED, FAIL, SYNTAX_ERROR Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Thu Jan 14 18:37:24 2010 @@ -65,6 +65,9 @@ Library ------- +- Issue #3299: Fix possible crash in the _sre module when given bad + argument values in debug mode. Patch by Victor Stinner. + - Issue #7681: Use floor division in appropiate places in the wave module. - Issue #5372: Drop the reuse of .o files in Distutils' ccompiler (since Modified: python/branches/release31-maint/Modules/_sre.c ============================================================================== --- python/branches/release31-maint/Modules/_sre.c (original) +++ python/branches/release31-maint/Modules/_sre.c Thu Jan 14 18:37:24 2010 @@ -2674,6 +2674,10 @@ self = PyObject_NEW_VAR(PatternObject, &Pattern_Type, n); if (!self) return NULL; + self->weakreflist = NULL; + self->pattern = NULL; + self->groupindex = NULL; + self->indexgroup = NULL; self->codesize = n; @@ -2689,7 +2693,7 @@ } if (PyErr_Occurred()) { - PyObject_DEL(self); + Py_DECREF(self); return NULL; } @@ -3730,7 +3734,7 @@ scanner_dealloc(ScannerObject* self) { state_fini(&self->state); - Py_DECREF(self->pattern); + Py_XDECREF(self->pattern); PyObject_DEL(self); } @@ -3860,10 +3864,11 @@ self = PyObject_NEW(ScannerObject, &Scanner_Type); if (!self) return NULL; + self->pattern = NULL; string = state_init(&self->state, pattern, string, start, end); if (!string) { - PyObject_DEL(self); + Py_DECREF(self); return NULL; } From python-checkins at python.org Thu Jan 14 18:41:59 2010 From: python-checkins at python.org (martin.v.loewis) Date: Thu, 14 Jan 2010 17:41:59 -0000 Subject: [Python-checkins] r77503 - in python/branches/release25-maint: Include/patchlevel.h Lib/idlelib/NEWS.txt Lib/idlelib/idlever.py Misc/NEWS README Message-ID: Author: martin.v.loewis Date: Thu Jan 14 18:41:58 2010 New Revision: 77503 Log: Prepare for 2.5.5c1. Modified: python/branches/release25-maint/Include/patchlevel.h python/branches/release25-maint/Lib/idlelib/NEWS.txt python/branches/release25-maint/Lib/idlelib/idlever.py python/branches/release25-maint/Misc/NEWS python/branches/release25-maint/README Modified: python/branches/release25-maint/Include/patchlevel.h ============================================================================== --- python/branches/release25-maint/Include/patchlevel.h (original) +++ python/branches/release25-maint/Include/patchlevel.h Thu Jan 14 18:41:58 2010 @@ -21,12 +21,12 @@ /* Version parsed out into numeric values */ #define PY_MAJOR_VERSION 2 #define PY_MINOR_VERSION 5 -#define PY_MICRO_VERSION 4 -#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL -#define PY_RELEASE_SERIAL 0 +#define PY_MICRO_VERSION 5 +#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_GAMMA +#define PY_RELEASE_SERIAL 1 /* Version as a string */ -#define PY_VERSION "2.5.4" +#define PY_VERSION "2.5.5c1" /* Subversion Revision number of this file (not of the repository) */ #define PY_PATCHLEVEL_REVISION "$Revision$" Modified: python/branches/release25-maint/Lib/idlelib/NEWS.txt ============================================================================== --- python/branches/release25-maint/Lib/idlelib/NEWS.txt (original) +++ python/branches/release25-maint/Lib/idlelib/NEWS.txt Thu Jan 14 18:41:58 2010 @@ -1,3 +1,8 @@ +What's New in IDLE 1.2.5c1? +========================= + +*Release date: 14-Jan-2010* + What's New in IDLE 1.2.4? ========================= Modified: python/branches/release25-maint/Lib/idlelib/idlever.py ============================================================================== --- python/branches/release25-maint/Lib/idlelib/idlever.py (original) +++ python/branches/release25-maint/Lib/idlelib/idlever.py Thu Jan 14 18:41:58 2010 @@ -1 +1 @@ -IDLE_VERSION = "1.2.4" +IDLE_VERSION = "1.2.5c1" Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Thu Jan 14 18:41:58 2010 @@ -4,10 +4,10 @@ (editors: check NEWS.help for information about editing NEWS using ReST.) -What's New in Python 2.5.5? -=========================== +What's New in Python 2.5.5c1? +============================= -*Release date: XX-XXX-20XX* +*Release date: 14-Jan-2010* Core and builtins ----------------- Modified: python/branches/release25-maint/README ============================================================================== --- python/branches/release25-maint/README (original) +++ python/branches/release25-maint/README Thu Jan 14 18:41:58 2010 @@ -1,7 +1,7 @@ -This is Python version 2.5.4 -============================ +This is Python version 2.5.5c1 +============================== -Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Python Software +Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Python Software Foundation. All rights reserved. From python-checkins at python.org Thu Jan 14 18:53:16 2010 From: python-checkins at python.org (martin.v.loewis) Date: Thu, 14 Jan 2010 17:53:16 -0000 Subject: [Python-checkins] r77504 - python/tags/r255c1 Message-ID: Author: martin.v.loewis Date: Thu Jan 14 18:53:16 2010 New Revision: 77504 Log: Tagging for release of Python 2.5.5c1 Added: python/tags/r255c1/ - copied from r77503, /python/branches/release25-maint/ From python-checkins at python.org Thu Jan 14 21:00:29 2010 From: python-checkins at python.org (brett.cannon) Date: Thu, 14 Jan 2010 20:00:29 -0000 Subject: [Python-checkins] r77505 - in python/trunk: Lib/warnings.py Misc/NEWS Python/_warnings.c Message-ID: Author: brett.cannon Date: Thu Jan 14 21:00:28 2010 New Revision: 77505 Log: The silencing of DeprecationWarning was not taking -3 into consideration. Since Py3K warnings are DeprecationWarning by default this was causing -3 to essentially be a no-op. Now DeprecationWarning is only silenced if -3 is not used. Closes issue #7700. Thanks Ezio Melotti and Florent Xicluna for patch help. Modified: python/trunk/Lib/warnings.py python/trunk/Misc/NEWS python/trunk/Python/_warnings.c Modified: python/trunk/Lib/warnings.py ============================================================================== --- python/trunk/Lib/warnings.py (original) +++ python/trunk/Lib/warnings.py Thu Jan 14 21:00:28 2010 @@ -383,8 +383,11 @@ # Module initialization _processoptions(sys.warnoptions) if not _warnings_defaults: - for cls in (DeprecationWarning, PendingDeprecationWarning, ImportWarning): - simplefilter("ignore", category=cls, append=True) + silence = [ImportWarning, PendingDeprecationWarning] + if not sys.py3kwarning: # Don't silence DeprecationWarning if -3 was used. + silence.append(DeprecationWarning) + for cls in silence: + simplefilter("ignore", category=cls) bytes_warning = sys.flags.bytes_warning if bytes_warning > 1: bytes_action = "error" Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Thu Jan 14 21:00:28 2010 @@ -21,7 +21,8 @@ values. Also fix a number of bugs in dtoa.c that could lead to incorrectly rounded results when converting strings to floats. -- Issue #7319: Silence DeprecationWarning by default. +- Issue #7319, #7770: Silence DeprecationWarning by default when -3 is not + used. - Issue #2335: Backport set literals syntax from Python 3.x. Modified: python/trunk/Python/_warnings.c ============================================================================== --- python/trunk/Python/_warnings.c (original) +++ python/trunk/Python/_warnings.c Thu Jan 14 21:00:28 2010 @@ -839,31 +839,37 @@ static PyObject * init_filters(void) { - PyObject *filters = PyList_New(4); + // Don't silence DeprecationWarning if -3 was used. + PyObject *filters = PyList_New(Py_Py3kWarningFlag ? 3 : 4); + unsigned int pos = 0; // Post-incremented in each use. + unsigned int x; const char *bytes_action; + if (filters == NULL) return NULL; - PyList_SET_ITEM(filters, 0, - create_filter(PyExc_DeprecationWarning, "ignore")); - PyList_SET_ITEM(filters, 1, + if (!Py_Py3kWarningFlag) { + PyList_SET_ITEM(filters, pos++, + create_filter(PyExc_DeprecationWarning, "ignore")); + } + PyList_SET_ITEM(filters, pos++, create_filter(PyExc_PendingDeprecationWarning, "ignore")); - PyList_SET_ITEM(filters, 2, create_filter(PyExc_ImportWarning, "ignore")); + PyList_SET_ITEM(filters, pos++, + create_filter(PyExc_ImportWarning, "ignore")); if (Py_BytesWarningFlag > 1) bytes_action = "error"; else if (Py_BytesWarningFlag) bytes_action = "default"; else bytes_action = "ignore"; - PyList_SET_ITEM(filters, 3, create_filter(PyExc_BytesWarning, + PyList_SET_ITEM(filters, pos++, create_filter(PyExc_BytesWarning, bytes_action)); - if (PyList_GET_ITEM(filters, 0) == NULL || - PyList_GET_ITEM(filters, 1) == NULL || - PyList_GET_ITEM(filters, 2) == NULL || - PyList_GET_ITEM(filters, 3) == NULL) { - Py_DECREF(filters); - return NULL; + for (x = 0; x < pos; x += 1) { + if (PyList_GET_ITEM(filters, x) == NULL) { + Py_DECREF(filters); + return NULL; + } } return filters; From nnorwitz at gmail.com Thu Jan 14 22:16:23 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 14 Jan 2010 16:16:23 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100114211623.GA14991@kbk-i386-bb.psfb.org> 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.560s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [872343 refs] From nnorwitz at gmail.com Thu Jan 14 22:28:29 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 14 Jan 2010 16:28:29 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100114212829.GA19091@kbk-i386-bb.psfb.org> 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19651 refs] [19651 refs] [19651 refs] [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.507s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [871241 refs] From nnorwitz at gmail.com Fri Jan 15 00:32:18 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 14 Jan 2010 18:32:18 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100114233218.GA25983@kbk-i386-bb.psfb.org> 349 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-18651 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.499s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 349 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [888844 refs] From solipsis at pitrou.net Fri Jan 15 00:53:20 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Fri, 15 Jan 2010 00:53:20 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77501): sum=3 Message-ID: <20100114235320.7766517714@ns6635.ovh.net> py3k results for svn r77501 (hg cset 73ec9581a463) -------------------------------------------------- test_multiprocessing leaked [0, 3, 0] references, sum=3 Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogKOIyrH', '-x', 'test_httpservers'] From python-checkins at python.org Fri Jan 15 01:18:01 2010 From: python-checkins at python.org (antoine.pitrou) Date: Fri, 15 Jan 2010 00:18:01 -0000 Subject: [Python-checkins] r77506 - in python/trunk: Lib/test/test_binascii.py Misc/NEWS Modules/binascii.c Message-ID: Author: antoine.pitrou Date: Fri Jan 15 01:18:00 2010 New Revision: 77506 Log: Issue #7701: Fix crash in binascii.b2a_uu() in debug mode when given a 1-byte argument. Patch by Victor Stinner. Modified: python/trunk/Lib/test/test_binascii.py python/trunk/Misc/NEWS python/trunk/Modules/binascii.c Modified: python/trunk/Lib/test/test_binascii.py ============================================================================== --- python/trunk/Lib/test/test_binascii.py (original) +++ python/trunk/Lib/test/test_binascii.py Fri Jan 15 01:18:00 2010 @@ -109,6 +109,9 @@ self.assertRaises(binascii.Error, binascii.b2a_uu, 46*"!") + # Issue #7701 (crash on a pydebug build) + self.assertEqual(binascii.b2a_uu('x'), '!> \n') + def test_crc32(self): crc = binascii.crc32("Test the CRC-32 of") crc = binascii.crc32(" this string.", crc) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Fri Jan 15 01:18:00 2010 @@ -33,6 +33,9 @@ Library ------- +- Issue #7701: Fix crash in binascii.b2a_uu() in debug mode when given a + 1-byte argument. Patch by Victor Stinner. + - Issue #3299: Fix possible crash in the _sre module when given bad argument values in debug mode. Patch by Victor Stinner. Modified: python/trunk/Modules/binascii.c ============================================================================== --- python/trunk/Modules/binascii.c (original) +++ python/trunk/Modules/binascii.c Fri Jan 15 01:18:00 2010 @@ -294,7 +294,7 @@ } /* We're lazy and allocate to much (fixed up later) */ - if ( (rv=PyString_FromStringAndSize(NULL, bin_len*2+2)) == NULL ) { + if ( (rv=PyString_FromStringAndSize(NULL, 2 + (bin_len+2)/3*4)) == NULL ) { PyBuffer_Release(&pbin); return NULL; } From python-checkins at python.org Fri Jan 15 01:23:23 2010 From: python-checkins at python.org (antoine.pitrou) Date: Fri, 15 Jan 2010 00:23:23 -0000 Subject: [Python-checkins] r77507 - in python/branches/release26-maint: Lib/test/test_binascii.py Misc/NEWS Modules/binascii.c Message-ID: Author: antoine.pitrou Date: Fri Jan 15 01:23:22 2010 New Revision: 77507 Log: Merged revisions 77506 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77506 | antoine.pitrou | 2010-01-15 01:18:00 +0100 (ven., 15 janv. 2010) | 4 lines Issue #7701: Fix crash in binascii.b2a_uu() in debug mode when given a 1-byte argument. Patch by Victor Stinner. ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/test/test_binascii.py python/branches/release26-maint/Misc/NEWS python/branches/release26-maint/Modules/binascii.c Modified: python/branches/release26-maint/Lib/test/test_binascii.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_binascii.py (original) +++ python/branches/release26-maint/Lib/test/test_binascii.py Fri Jan 15 01:23:22 2010 @@ -104,6 +104,9 @@ self.assertRaises(binascii.Error, binascii.b2a_uu, 46*"!") + # Issue #7701 (crash on a pydebug build) + self.assertEqual(binascii.b2a_uu('x'), '!> \n') + def test_crc32(self): crc = binascii.crc32("Test the CRC-32 of") crc = binascii.crc32(" this string.", crc) Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Fri Jan 15 01:23:22 2010 @@ -48,6 +48,9 @@ Library ------- +- Issue #7701: Fix crash in binascii.b2a_uu() in debug mode when given a + 1-byte argument. Patch by Victor Stinner. + - Issue #3299: Fix possible crash in the _sre module when given bad argument values in debug mode. Patch by Victor Stinner. Modified: python/branches/release26-maint/Modules/binascii.c ============================================================================== --- python/branches/release26-maint/Modules/binascii.c (original) +++ python/branches/release26-maint/Modules/binascii.c Fri Jan 15 01:23:22 2010 @@ -282,7 +282,7 @@ } /* We're lazy and allocate to much (fixed up later) */ - if ( (rv=PyString_FromStringAndSize(NULL, bin_len*2+2)) == NULL ) + if ( (rv=PyString_FromStringAndSize(NULL, 2 + (bin_len+2)/3*4)) == NULL ) return NULL; ascii_data = (unsigned char *)PyString_AsString(rv); From python-checkins at python.org Fri Jan 15 01:27:43 2010 From: python-checkins at python.org (antoine.pitrou) Date: Fri, 15 Jan 2010 00:27:43 -0000 Subject: [Python-checkins] r77508 - in python/branches/py3k: Lib/test/test_binascii.py Misc/NEWS Modules/binascii.c Message-ID: Author: antoine.pitrou Date: Fri Jan 15 01:27:43 2010 New Revision: 77508 Log: Merged revisions 77506 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77506 | antoine.pitrou | 2010-01-15 01:18:00 +0100 (ven., 15 janv. 2010) | 4 lines Issue #7701: Fix crash in binascii.b2a_uu() in debug mode when given a 1-byte argument. Patch by Victor Stinner. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_binascii.py python/branches/py3k/Misc/NEWS python/branches/py3k/Modules/binascii.c Modified: python/branches/py3k/Lib/test/test_binascii.py ============================================================================== --- python/branches/py3k/Lib/test/test_binascii.py (original) +++ python/branches/py3k/Lib/test/test_binascii.py Fri Jan 15 01:27:43 2010 @@ -108,6 +108,9 @@ self.assertRaises(binascii.Error, binascii.b2a_uu, 46*b"!") + # Issue #7701 (crash on a pydebug build) + self.assertEqual(binascii.b2a_uu(b'x'), b'!> \n') + def test_crc32(self): crc = binascii.crc32(b"Test the CRC-32 of") crc = binascii.crc32(b" this string.", crc) Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Fri Jan 15 01:27:43 2010 @@ -213,6 +213,9 @@ Library ------- +- Issue #7701: Fix crash in binascii.b2a_uu() in debug mode when given a + 1-byte argument. Patch by Victor Stinner. + - Issue #3299: Fix possible crash in the _sre module when given bad argument values in debug mode. Patch by Victor Stinner. Modified: python/branches/py3k/Modules/binascii.c ============================================================================== --- python/branches/py3k/Modules/binascii.c (original) +++ python/branches/py3k/Modules/binascii.c Fri Jan 15 01:27:43 2010 @@ -294,7 +294,7 @@ } /* We're lazy and allocate to much (fixed up later) */ - if ( (rv=PyBytes_FromStringAndSize(NULL, bin_len*2+2)) == NULL ) { + if ( (rv=PyBytes_FromStringAndSize(NULL, 2 + (bin_len+2)/3*4)) == NULL ) { PyBuffer_Release(&pbin); return NULL; } From python-checkins at python.org Fri Jan 15 01:31:02 2010 From: python-checkins at python.org (antoine.pitrou) Date: Fri, 15 Jan 2010 00:31:02 -0000 Subject: [Python-checkins] r77509 - in python/branches/release31-maint: Lib/test/test_binascii.py Misc/NEWS Modules/binascii.c Message-ID: Author: antoine.pitrou Date: Fri Jan 15 01:31:01 2010 New Revision: 77509 Log: Merged revisions 77508 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77508 | antoine.pitrou | 2010-01-15 01:27:43 +0100 (ven., 15 janv. 2010) | 10 lines Merged revisions 77506 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77506 | antoine.pitrou | 2010-01-15 01:18:00 +0100 (ven., 15 janv. 2010) | 4 lines Issue #7701: Fix crash in binascii.b2a_uu() in debug mode when given a 1-byte argument. Patch by Victor Stinner. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/test/test_binascii.py python/branches/release31-maint/Misc/NEWS python/branches/release31-maint/Modules/binascii.c Modified: python/branches/release31-maint/Lib/test/test_binascii.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_binascii.py (original) +++ python/branches/release31-maint/Lib/test/test_binascii.py Fri Jan 15 01:31:01 2010 @@ -103,6 +103,9 @@ self.assertRaises(binascii.Error, binascii.b2a_uu, 46*b"!") + # Issue #7701 (crash on a pydebug build) + self.assertEqual(binascii.b2a_uu(b'x'), b'!> \n') + def test_crc32(self): crc = binascii.crc32(b"Test the CRC-32 of") crc = binascii.crc32(b" this string.", crc) Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Fri Jan 15 01:31:01 2010 @@ -65,6 +65,9 @@ Library ------- +- Issue #7701: Fix crash in binascii.b2a_uu() in debug mode when given a + 1-byte argument. Patch by Victor Stinner. + - Issue #3299: Fix possible crash in the _sre module when given bad argument values in debug mode. Patch by Victor Stinner. Modified: python/branches/release31-maint/Modules/binascii.c ============================================================================== --- python/branches/release31-maint/Modules/binascii.c (original) +++ python/branches/release31-maint/Modules/binascii.c Fri Jan 15 01:31:01 2010 @@ -294,7 +294,7 @@ } /* We're lazy and allocate to much (fixed up later) */ - if ( (rv=PyBytes_FromStringAndSize(NULL, bin_len*2+2)) == NULL ) { + if ( (rv=PyBytes_FromStringAndSize(NULL, 2 + (bin_len+2)/3*4)) == NULL ) { PyBuffer_Release(&pbin); return NULL; } From python-checkins at python.org Fri Jan 15 02:31:45 2010 From: python-checkins at python.org (brett.cannon) Date: Fri, 15 Jan 2010 01:31:45 -0000 Subject: [Python-checkins] r77510 - python/trunk/Python/_warnings.c Message-ID: Author: brett.cannon Date: Fri Jan 15 02:31:45 2010 New Revision: 77510 Log: Remove C++/C99-style comments. Modified: python/trunk/Python/_warnings.c Modified: python/trunk/Python/_warnings.c ============================================================================== --- python/trunk/Python/_warnings.c (original) +++ python/trunk/Python/_warnings.c Fri Jan 15 02:31:45 2010 @@ -839,9 +839,9 @@ static PyObject * init_filters(void) { - // Don't silence DeprecationWarning if -3 was used. + /* Don't silence DeprecationWarning if -3 was used. */ PyObject *filters = PyList_New(Py_Py3kWarningFlag ? 3 : 4); - unsigned int pos = 0; // Post-incremented in each use. + unsigned int pos = 0; /* Post-incremented in each use. */ unsigned int x; const char *bytes_action; From python-checkins at python.org Fri Jan 15 03:26:07 2010 From: python-checkins at python.org (benjamin.peterson) Date: Fri, 15 Jan 2010 02:26:07 -0000 Subject: [Python-checkins] r77511 - python/trunk/Lib/test/test_popen.py Message-ID: Author: benjamin.peterson Date: Fri Jan 15 03:26:07 2010 New Revision: 77511 Log: try to fix for windows Modified: python/trunk/Lib/test/test_popen.py Modified: python/trunk/Lib/test/test_popen.py ============================================================================== --- python/trunk/Lib/test/test_popen.py (original) +++ python/trunk/Lib/test/test_popen.py Fri Jan 15 03:26:07 2010 @@ -18,7 +18,7 @@ class PopenTest(unittest.TestCase): def _do_test_commandline(self, cmdline, expected): cmd = '"%s" -c "import sys;print sys.argv" %s' % (python, cmdline) - data = os.popen(cmd).read() + data = os.popen(cmd).read() + '\n' got = eval(data)[1:] # strip off argv[0] self.assertEqual(got, expected) From nnorwitz at gmail.com Fri Jan 15 10:16:25 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 15 Jan 2010 04:16:25 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100115091625.GA21762@kbk-i386-bb.psfb.org> 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.534s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [872337 refs] From nnorwitz at gmail.com Fri Jan 15 10:28:29 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 15 Jan 2010 04:28:29 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100115092829.GA25862@kbk-i386-bb.psfb.org> 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19651 refs] [19651 refs] [19651 refs] [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.558s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [871240 refs] From nnorwitz at gmail.com Fri Jan 15 12:52:13 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 15 Jan 2010 06:52:13 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100115115213.GA307@kbk-i386-bb.psfb.org> 349 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-25429 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.555s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 349 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [888864 refs] From nnorwitz at gmail.com Fri Jan 15 22:16:28 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 15 Jan 2010 16:16:28 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100115211628.GA19475@kbk-i386-bb.psfb.org> 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.536s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [872347 refs] From nnorwitz at gmail.com Fri Jan 15 22:28:20 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 15 Jan 2010 16:28:20 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100115212820.GA23578@kbk-i386-bb.psfb.org> 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19651 refs] [19651 refs] [19651 refs] [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.556s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [871246 refs] From python-checkins at python.org Sat Jan 16 00:25:15 2010 From: python-checkins at python.org (vinay.sajip) Date: Fri, 15 Jan 2010 23:25:15 -0000 Subject: [Python-checkins] r77512 - python/branches/release26-maint/Misc/NEWS Message-ID: Author: vinay.sajip Date: Sat Jan 16 00:25:14 2010 New Revision: 77512 Log: Fixed issue-number mistake in NEWS update. Modified: python/branches/release26-maint/Misc/NEWS Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Sat Jan 16 00:25:14 2010 @@ -423,7 +423,7 @@ - Issue #6258: Support AMD64 in bdist_msi. -- Issue #5262: Fixed bug in next rollover time computation in +- Issue #6252: Fixed bug in next rollover time computation in TimedRotatingFileHandler. - Issue #6121: pydoc now ignores leading and trailing spaces in the From python-checkins at python.org Sat Jan 16 00:27:06 2010 From: python-checkins at python.org (vinay.sajip) Date: Fri, 15 Jan 2010 23:27:06 -0000 Subject: [Python-checkins] r77513 - python/trunk/Misc/NEWS Message-ID: Author: vinay.sajip Date: Sat Jan 16 00:27:05 2010 New Revision: 77513 Log: Fixed issue-number mistake in NEWS update. Modified: python/trunk/Misc/NEWS Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Jan 16 00:27:05 2010 @@ -1043,7 +1043,7 @@ - Issue #6258: Support AMD64 in bdist_msi. -- Issue #5262: Fixed bug in next rollover time computation in +- Issue #6252: Fixed bug in next rollover time computation in TimedRotatingFileHandler. - Issue #6263: Fixed syntax error in distutils.cygwincompiler. From solipsis at pitrou.net Sat Jan 16 00:53:38 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Sat, 16 Jan 2010 00:53:38 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77508): sum=0 Message-ID: <20100115235338.8AE641770A@ns6635.ovh.net> py3k results for svn r77508 (hg cset b9b230917198) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogZKa-Vf', '-x', 'test_httpservers'] From nnorwitz at gmail.com Sat Jan 16 01:10:01 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 15 Jan 2010 19:10:01 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100116001001.GA30553@kbk-i386-bb.psfb.org> 349 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-23205 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.555s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 349 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [888847 refs] From python-checkins at python.org Sat Jan 16 05:25:53 2010 From: python-checkins at python.org (sean.reifschneider) Date: Sat, 16 Jan 2010 04:25:53 -0000 Subject: [Python-checkins] r77514 - python/branches/release26-maint/Misc/RPM/python-2.6.spec Message-ID: Author: sean.reifschneider Date: Sat Jan 16 05:25:53 2010 New Revision: 77514 Log: issue5063: Fixes for building RPM on CentOS plus misc .spec file enhancements. Modified: python/branches/release26-maint/Misc/RPM/python-2.6.spec Modified: python/branches/release26-maint/Misc/RPM/python-2.6.spec ============================================================================== --- python/branches/release26-maint/Misc/RPM/python-2.6.spec (original) +++ python/branches/release26-maint/Misc/RPM/python-2.6.spec Sat Jan 16 05:25:53 2010 @@ -25,6 +25,11 @@ %define config_ipv6 yes %define config_ipv6 no +# Build shared libraries or .a library? +#WARNING: Commenting out doesn't work. Last line is what's used. +%define config_sharedlib no +%define config_sharedlib yes + # Location of the HTML directory. %define config_htmldir /var/www/html/python @@ -35,7 +40,7 @@ %define name python #--start constants-- %define version 2.6.4 -%define libver 2.6 +%define libvers 2.6 #--end constants-- %define release 1pydotorg %define __prefix /usr @@ -46,6 +51,8 @@ %define binsuffix %(if [ "%{config_binsuffix}" = none ]; then echo ; else echo "%{config_binsuffix}"; fi) %define include_tkinter %(if [ \\( "%{config_tkinter}" = auto -a -f /usr/bin/wish \\) -o "%{config_tkinter}" = yes ]; then echo 1; else echo 0; fi) %define libdirname %(( uname -m | egrep -q '_64$' && [ -d /usr/lib64 ] && echo lib64 ) || echo lib) +%define sharedlib %(if [ "%{config_sharedlib}" = yes ]; then echo --enable-shared; else echo ; fi) +%define include_sharedlib %(if [ "%{config_sharedlib}" = yes ]; then echo 1; else echo 0; fi) # detect if documentation is available %define include_docs %(if [ -f "%{_sourcedir}/html-%{version}.tar.bz2" ]; then echo 1; else echo 0; fi) @@ -54,7 +61,7 @@ Name: %{name}%{binsuffix} Version: %{version} Release: %{release} -Copyright: Modified CNRI Open Source License +License: Modified CNRI Open Source License Group: Development/Languages Source: Python-%{version}.tar.bz2 %if %{include_docs} @@ -223,7 +230,14 @@ # BUILD ######## %build -./configure --enable-unicode=ucs4 %{ipv6} %{pymalloc} --prefix=%{__prefix} +echo "Setting for ipv6: %{ipv6}" +echo "Setting for pymalloc: %{pymalloc}" +echo "Setting for binsuffix: %{binsuffix}" +echo "Setting for include_tkinter: %{include_tkinter}" +echo "Setting for libdirname: %{libdirname}" +echo "Setting for sharedlib: %{sharedlib}" +echo "Setting for include_sharedlib: %{include_sharedlib}" +./configure --enable-unicode=ucs4 %{sharedlib} %{ipv6} %{pymalloc} --prefix=%{__prefix} make ########## @@ -254,11 +268,10 @@ # add the binsuffix if [ ! -z "%{binsuffix}" ] then - ( cd $RPM_BUILD_ROOT%{__prefix}/bin; rm -f python[0-9a-zA-Z]*; - mv -f python python"%{binsuffix}" ) - ( cd $RPM_BUILD_ROOT%{__prefix}/man/man1; mv python.1 python%{binsuffix}.1 ) - ( cd $RPM_BUILD_ROOT%{__prefix}/bin; mv -f pydoc pydoc"%{binsuffix}" ) - ( cd $RPM_BUILD_ROOT%{__prefix}/bin; mv -f idle idle"%{binsuffix}" ) + rm -f $RPM_BUILD_ROOT%{__prefix}/bin/python[0-9a-zA-Z]* + ( cd $RPM_BUILD_ROOT%{__prefix}/bin; + for file in *; do mv "$file" "$file"%{binsuffix}; done ) + ( cd $RPM_BUILD_ROOT%{_mandir}/man1; mv python.1 python%{binsuffix}.1 ) fi ######## @@ -273,17 +286,23 @@ # MAKE FILE LISTS rm -f mainpkg.files -find "$RPM_BUILD_ROOT""%{__prefix}"/%{libdirname}/python%{libvers}/lib-dynload -type f | +find "$RPM_BUILD_ROOT""%{__prefix}"/%{libdirname}/python%{libvers} -type f | sed "s|^${RPM_BUILD_ROOT}|/|" | - grep -v -e '_tkinter.so$' >mainpkg.files -find "$RPM_BUILD_ROOT""%{__prefix}"/bin -type f | + grep -v -e '/python%{libvers}/config$' -e '_tkinter.so$' >mainpkg.files +find "$RPM_BUILD_ROOT""%{__prefix}"/bin -type f -o -type l | sed "s|^${RPM_BUILD_ROOT}|/|" | + grep -v -e '/bin/2to3%{binsuffix}$' | + grep -v -e '/bin/pydoc%{binsuffix}$' | + grep -v -e '/bin/smtpd.py%{binsuffix}$' | grep -v -e '/bin/idle%{binsuffix}$' >>mainpkg.files rm -f tools.files find "$RPM_BUILD_ROOT""%{__prefix}"/%{libdirname}/python%{libvers}/idlelib \ "$RPM_BUILD_ROOT""%{__prefix}"/%{libdirname}/python%{libvers}/Tools -type f | sed "s|^${RPM_BUILD_ROOT}|/|" >tools.files +echo "%{__prefix}"/bin/2to3%{binsuffix} >>tools.files +echo "%{__prefix}"/bin/pydoc%{binsuffix} >>tools.files +echo "%{__prefix}"/bin/smtpd.py%{binsuffix} >>tools.files echo "%{__prefix}"/bin/idle%{binsuffix} >>tools.files ###### @@ -341,29 +360,13 @@ %defattr(-,root,root) %doc Misc/README Misc/cheatsheet Misc/Porting %doc LICENSE Misc/ACKS Misc/HISTORY Misc/NEWS -%{__prefix}/man/man1/python%{binsuffix}.1* +%{_mandir}/man1/python%{binsuffix}.1* %attr(755,root,root) %dir %{__prefix}/include/python%{libvers} %attr(755,root,root) %dir %{__prefix}/%{libdirname}/python%{libvers}/ -%{__prefix}/%{libdirname}/python%{libvers}/*.txt -%{__prefix}/%{libdirname}/python%{libvers}/*.py* -%{__prefix}/%{libdirname}/python%{libvers}/pdb.doc -%{__prefix}/%{libdirname}/python%{libvers}/profile.doc -%{__prefix}/%{libdirname}/python%{libvers}/curses -%{__prefix}/%{libdirname}/python%{libvers}/distutils -%{__prefix}/%{libdirname}/python%{libvers}/encodings -%{__prefix}/%{libdirname}/python%{libvers}/plat-linux2 -%{__prefix}/%{libdirname}/python%{libvers}/site-packages -%{__prefix}/%{libdirname}/python%{libvers}/test -%{__prefix}/%{libdirname}/python%{libvers}/xml -%{__prefix}/%{libdirname}/python%{libvers}/email -%{__prefix}/%{libdirname}/python%{libvers}/email/mime -%{__prefix}/%{libdirname}/python%{libvers}/sqlite3 -%{__prefix}/%{libdirname}/python%{libvers}/compiler -%{__prefix}/%{libdirname}/python%{libvers}/bsddb -%{__prefix}/%{libdirname}/python%{libvers}/hotshot -%{__prefix}/%{libdirname}/python%{libvers}/logging -%{__prefix}/%{libdirname}/python%{libvers}/lib-old +%if %{include_sharedlib} +%{__prefix}/%{libdirname}/libpython* +%endif %files devel %defattr(-,root,root) From python-checkins at python.org Sat Jan 16 05:27:59 2010 From: python-checkins at python.org (sean.reifschneider) Date: Sat, 16 Jan 2010 04:27:59 -0000 Subject: [Python-checkins] r77515 - python/trunk/Misc/RPM/python-2.7.spec Message-ID: Author: sean.reifschneider Date: Sat Jan 16 05:27:58 2010 New Revision: 77515 Log: issue5063: Fixes for building RPM on CentOS plus misc .spec file enhancements. Modified: python/trunk/Misc/RPM/python-2.7.spec Modified: python/trunk/Misc/RPM/python-2.7.spec ============================================================================== --- python/trunk/Misc/RPM/python-2.7.spec (original) +++ python/trunk/Misc/RPM/python-2.7.spec Sat Jan 16 05:27:58 2010 @@ -25,6 +25,11 @@ %define config_ipv6 yes %define config_ipv6 no +# Build shared libraries or .a library? +#WARNING: Commenting out doesn't work. Last line is what's used. +%define config_sharedlib no +%define config_sharedlib yes + # Location of the HTML directory. %define config_htmldir /var/www/html/python @@ -35,7 +40,7 @@ %define name python #--start constants-- %define version 2.7a2 -%define libver 2.7 +%define libvers 2.7 #--end constants-- %define release 1pydotorg %define __prefix /usr @@ -46,6 +51,8 @@ %define binsuffix %(if [ "%{config_binsuffix}" = none ]; then echo ; else echo "%{config_binsuffix}"; fi) %define include_tkinter %(if [ \\( "%{config_tkinter}" = auto -a -f /usr/bin/wish \\) -o "%{config_tkinter}" = yes ]; then echo 1; else echo 0; fi) %define libdirname %(( uname -m | egrep -q '_64$' && [ -d /usr/lib64 ] && echo lib64 ) || echo lib) +%define sharedlib %(if [ "%{config_sharedlib}" = yes ]; then echo --enable-shared; else echo ; fi) +%define include_sharedlib %(if [ "%{config_sharedlib}" = yes ]; then echo 1; else echo 0; fi) # detect if documentation is available %define include_docs %(if [ -f "%{_sourcedir}/html-%{version}.tar.bz2" ]; then echo 1; else echo 0; fi) @@ -54,7 +61,7 @@ Name: %{name}%{binsuffix} Version: %{version} Release: %{release} -Copyright: Modified CNRI Open Source License +License: Modified CNRI Open Source License Group: Development/Languages Source: Python-%{version}.tar.bz2 %if %{include_docs} @@ -223,7 +230,14 @@ # BUILD ######## %build -./configure --enable-unicode=ucs4 %{ipv6} %{pymalloc} --prefix=%{__prefix} +echo "Setting for ipv6: %{ipv6}" +echo "Setting for pymalloc: %{pymalloc}" +echo "Setting for binsuffix: %{binsuffix}" +echo "Setting for include_tkinter: %{include_tkinter}" +echo "Setting for libdirname: %{libdirname}" +echo "Setting for sharedlib: %{sharedlib}" +echo "Setting for include_sharedlib: %{include_sharedlib}" +./configure --enable-unicode=ucs4 %{sharedlib} %{ipv6} %{pymalloc} --prefix=%{__prefix} make ########## @@ -254,11 +268,10 @@ # add the binsuffix if [ ! -z "%{binsuffix}" ] then - ( cd $RPM_BUILD_ROOT%{__prefix}/bin; rm -f python[0-9a-zA-Z]*; - mv -f python python"%{binsuffix}" ) - ( cd $RPM_BUILD_ROOT%{__prefix}/man/man1; mv python.1 python%{binsuffix}.1 ) - ( cd $RPM_BUILD_ROOT%{__prefix}/bin; mv -f pydoc pydoc"%{binsuffix}" ) - ( cd $RPM_BUILD_ROOT%{__prefix}/bin; mv -f idle idle"%{binsuffix}" ) + rm -f $RPM_BUILD_ROOT%{__prefix}/bin/python[0-9a-zA-Z]* + ( cd $RPM_BUILD_ROOT%{__prefix}/bin; + for file in *; do mv "$file" "$file"%{binsuffix}; done ) + ( cd $RPM_BUILD_ROOT%{_mandir}/man1; mv python.1 python%{binsuffix}.1 ) fi ######## @@ -273,17 +286,23 @@ # MAKE FILE LISTS rm -f mainpkg.files -find "$RPM_BUILD_ROOT""%{__prefix}"/%{libdirname}/python%{libvers}/lib-dynload -type f | +find "$RPM_BUILD_ROOT""%{__prefix}"/%{libdirname}/python%{libvers} -type f | sed "s|^${RPM_BUILD_ROOT}|/|" | - grep -v -e '_tkinter.so$' >mainpkg.files -find "$RPM_BUILD_ROOT""%{__prefix}"/bin -type f | + grep -v -e '/python%{libvers}/config$' -e '_tkinter.so$' >mainpkg.files +find "$RPM_BUILD_ROOT""%{__prefix}"/bin -type f -o -type l | sed "s|^${RPM_BUILD_ROOT}|/|" | + grep -v -e '/bin/2to3%{binsuffix}$' | + grep -v -e '/bin/pydoc%{binsuffix}$' | + grep -v -e '/bin/smtpd.py%{binsuffix}$' | grep -v -e '/bin/idle%{binsuffix}$' >>mainpkg.files rm -f tools.files find "$RPM_BUILD_ROOT""%{__prefix}"/%{libdirname}/python%{libvers}/idlelib \ "$RPM_BUILD_ROOT""%{__prefix}"/%{libdirname}/python%{libvers}/Tools -type f | sed "s|^${RPM_BUILD_ROOT}|/|" >tools.files +echo "%{__prefix}"/bin/2to3%{binsuffix} >>tools.files +echo "%{__prefix}"/bin/pydoc%{binsuffix} >>tools.files +echo "%{__prefix}"/bin/smtpd.py%{binsuffix} >>tools.files echo "%{__prefix}"/bin/idle%{binsuffix} >>tools.files ###### @@ -341,29 +360,13 @@ %defattr(-,root,root) %doc Misc/README Misc/cheatsheet Misc/Porting %doc LICENSE Misc/ACKS Misc/HISTORY Misc/NEWS -%{__prefix}/man/man1/python%{binsuffix}.1* +%{_mandir}/man1/python%{binsuffix}.1* %attr(755,root,root) %dir %{__prefix}/include/python%{libvers} %attr(755,root,root) %dir %{__prefix}/%{libdirname}/python%{libvers}/ -%{__prefix}/%{libdirname}/python%{libvers}/*.txt -%{__prefix}/%{libdirname}/python%{libvers}/*.py* -%{__prefix}/%{libdirname}/python%{libvers}/pdb.doc -%{__prefix}/%{libdirname}/python%{libvers}/profile.doc -%{__prefix}/%{libdirname}/python%{libvers}/curses -%{__prefix}/%{libdirname}/python%{libvers}/distutils -%{__prefix}/%{libdirname}/python%{libvers}/encodings -%{__prefix}/%{libdirname}/python%{libvers}/plat-linux2 -%{__prefix}/%{libdirname}/python%{libvers}/site-packages -%{__prefix}/%{libdirname}/python%{libvers}/test -%{__prefix}/%{libdirname}/python%{libvers}/xml -%{__prefix}/%{libdirname}/python%{libvers}/email -%{__prefix}/%{libdirname}/python%{libvers}/email/mime -%{__prefix}/%{libdirname}/python%{libvers}/sqlite3 -%{__prefix}/%{libdirname}/python%{libvers}/compiler -%{__prefix}/%{libdirname}/python%{libvers}/bsddb -%{__prefix}/%{libdirname}/python%{libvers}/hotshot -%{__prefix}/%{libdirname}/python%{libvers}/logging -%{__prefix}/%{libdirname}/python%{libvers}/lib-old +%if %{include_sharedlib} +%{__prefix}/%{libdirname}/libpython* +%endif %files devel %defattr(-,root,root) From python-checkins at python.org Sat Jan 16 05:35:26 2010 From: python-checkins at python.org (sean.reifschneider) Date: Sat, 16 Jan 2010 04:35:26 -0000 Subject: [Python-checkins] r77516 - python/branches/py3k/Misc/RPM/python-3.2.spec Message-ID: Author: sean.reifschneider Date: Sat Jan 16 05:35:26 2010 New Revision: 77516 Log: issue5063: Fixes for building RPM on CentOS plus misc .spec file enhancements. Modified: python/branches/py3k/Misc/RPM/python-3.2.spec Modified: python/branches/py3k/Misc/RPM/python-3.2.spec ============================================================================== --- python/branches/py3k/Misc/RPM/python-3.2.spec (original) +++ python/branches/py3k/Misc/RPM/python-3.2.spec Sat Jan 16 05:35:26 2010 @@ -25,6 +25,11 @@ %define config_ipv6 yes %define config_ipv6 no +# Build shared libraries or .a library? +#WARNING: Commenting out doesn't work. Last line is what's used. +%define config_sharedlib no +%define config_sharedlib yes + # Location of the HTML directory. %define config_htmldir /var/www/html/python @@ -35,7 +40,7 @@ %define name python #--start constants-- %define version 3.2a0 -%define libver 3.2 +%define libvers 3.2 #--end constants-- %define release 1pydotorg %define __prefix /usr @@ -46,6 +51,8 @@ %define binsuffix %(if [ "%{config_binsuffix}" = none ]; then echo ; else echo "%{config_binsuffix}"; fi) %define include_tkinter %(if [ \\( "%{config_tkinter}" = auto -a -f /usr/bin/wish \\) -o "%{config_tkinter}" = yes ]; then echo 1; else echo 0; fi) %define libdirname %(( uname -m | egrep -q '_64$' && [ -d /usr/lib64 ] && echo lib64 ) || echo lib) +%define sharedlib %(if [ "%{config_sharedlib}" = yes ]; then echo --enable-shared; else echo ; fi) +%define include_sharedlib %(if [ "%{config_sharedlib}" = yes ]; then echo 1; else echo 0; fi) # detect if documentation is available %define include_docs %(if [ -f "%{_sourcedir}/html-%{version}.tar.bz2" ]; then echo 1; else echo 0; fi) @@ -54,7 +61,7 @@ Name: %{name}%{binsuffix} Version: %{version} Release: %{release} -Copyright: Modified CNRI Open Source License +License: Modified CNRI Open Source License Group: Development/Languages Source: Python-%{version}.tar.bz2 %if %{include_docs} @@ -223,7 +230,14 @@ # BUILD ######## %build -./configure --enable-unicode=ucs4 %{ipv6} %{pymalloc} --prefix=%{__prefix} +echo "Setting for ipv6: %{ipv6}" +echo "Setting for pymalloc: %{pymalloc}" +echo "Setting for binsuffix: %{binsuffix}" +echo "Setting for include_tkinter: %{include_tkinter}" +echo "Setting for libdirname: %{libdirname}" +echo "Setting for sharedlib: %{sharedlib}" +echo "Setting for include_sharedlib: %{include_sharedlib}" +./configure --enable-unicode=ucs4 %{sharedlib} %{ipv6} %{pymalloc} --prefix=%{__prefix} make ########## @@ -254,11 +268,10 @@ # add the binsuffix if [ ! -z "%{binsuffix}" ] then - ( cd $RPM_BUILD_ROOT%{__prefix}/bin; rm -f python[0-9a-zA-Z]*; - mv -f python python"%{binsuffix}" ) - ( cd $RPM_BUILD_ROOT%{__prefix}/man/man1; mv python.1 python%{binsuffix}.1 ) - ( cd $RPM_BUILD_ROOT%{__prefix}/bin; mv -f pydoc pydoc"%{binsuffix}" ) - ( cd $RPM_BUILD_ROOT%{__prefix}/bin; mv -f idle idle"%{binsuffix}" ) + rm -f $RPM_BUILD_ROOT%{__prefix}/bin/python[0-9a-zA-Z]* + ( cd $RPM_BUILD_ROOT%{__prefix}/bin; + for file in *; do mv "$file" "$file"%{binsuffix}; done ) + ( cd $RPM_BUILD_ROOT%{_mandir}/man1; mv python.1 python%{binsuffix}.1 ) fi ######## @@ -273,17 +286,23 @@ # MAKE FILE LISTS rm -f mainpkg.files -find "$RPM_BUILD_ROOT""%{__prefix}"/%{libdirname}/python%{libvers}/lib-dynload -type f | +find "$RPM_BUILD_ROOT""%{__prefix}"/%{libdirname}/python%{libvers} -type f | sed "s|^${RPM_BUILD_ROOT}|/|" | - grep -v -e '_tkinter.so$' >mainpkg.files -find "$RPM_BUILD_ROOT""%{__prefix}"/bin -type f | + grep -v -e '/python%{libvers}/config$' -e '_tkinter.so$' >mainpkg.files +find "$RPM_BUILD_ROOT""%{__prefix}"/bin -type f -o -type l | sed "s|^${RPM_BUILD_ROOT}|/|" | + grep -v -e '/bin/2to3%{binsuffix}$' | + grep -v -e '/bin/pydoc%{binsuffix}$' | + grep -v -e '/bin/smtpd.py%{binsuffix}$' | grep -v -e '/bin/idle%{binsuffix}$' >>mainpkg.files rm -f tools.files find "$RPM_BUILD_ROOT""%{__prefix}"/%{libdirname}/python%{libvers}/idlelib \ "$RPM_BUILD_ROOT""%{__prefix}"/%{libdirname}/python%{libvers}/Tools -type f | sed "s|^${RPM_BUILD_ROOT}|/|" >tools.files +echo "%{__prefix}"/bin/2to3%{binsuffix} >>tools.files +echo "%{__prefix}"/bin/pydoc%{binsuffix} >>tools.files +echo "%{__prefix}"/bin/smtpd.py%{binsuffix} >>tools.files echo "%{__prefix}"/bin/idle%{binsuffix} >>tools.files ###### @@ -341,28 +360,13 @@ %defattr(-,root,root) %doc Misc/README Misc/cheatsheet Misc/Porting %doc LICENSE Misc/ACKS Misc/HISTORY Misc/NEWS -%{__prefix}/man/man1/python%{binsuffix}.1* +%{_mandir}/man1/python%{binsuffix}.1* %attr(755,root,root) %dir %{__prefix}/include/python%{libvers} %attr(755,root,root) %dir %{__prefix}/%{libdirname}/python%{libvers}/ -%{__prefix}/%{libdirname}/python%{libvers}/*.txt -%{__prefix}/%{libdirname}/python%{libvers}/*.py* -%{__prefix}/%{libdirname}/python%{libvers}/pdb.doc -%{__prefix}/%{libdirname}/python%{libvers}/profile.doc -%{__prefix}/%{libdirname}/python%{libvers}/curses -%{__prefix}/%{libdirname}/python%{libvers}/distutils -%{__prefix}/%{libdirname}/python%{libvers}/encodings -%{__prefix}/%{libdirname}/python%{libvers}/plat-linux2 -%{__prefix}/%{libdirname}/python%{libvers}/site-packages -%{__prefix}/%{libdirname}/python%{libvers}/test -%{__prefix}/%{libdirname}/python%{libvers}/xml -%{__prefix}/%{libdirname}/python%{libvers}/email -%{__prefix}/%{libdirname}/python%{libvers}/email/mime -%{__prefix}/%{libdirname}/python%{libvers}/sqlite3 -%{__prefix}/%{libdirname}/python%{libvers}/compiler -%{__prefix}/%{libdirname}/python%{libvers}/hotshot -%{__prefix}/%{libdirname}/python%{libvers}/logging -%{__prefix}/%{libdirname}/python%{libvers}/lib-old +%if %{include_sharedlib} +%{__prefix}/%{libdirname}/libpython* +%endif %files devel %defattr(-,root,root) From python-checkins at python.org Sat Jan 16 06:15:18 2010 From: python-checkins at python.org (r.david.murray) Date: Sat, 16 Jan 2010 05:15:18 -0000 Subject: [Python-checkins] r77517 - in python/trunk: Lib/email/generator.py Lib/email/test/data/msg_45.txt Lib/email/test/test_email.py Misc/NEWS Message-ID: Author: r.david.murray Date: Sat Jan 16 06:15:17 2010 New Revision: 77517 Log: Issue #1670765: Prevent email.generator.Generator from re-wrapping headers in multipart/signed MIME parts, which fixes one of the sources of invalid modifications to such parts by Generator. Patch and tests by Martin von Gagern. Added: python/trunk/Lib/email/test/data/msg_45.txt Modified: python/trunk/Lib/email/generator.py python/trunk/Lib/email/test/test_email.py python/trunk/Misc/NEWS Modified: python/trunk/Lib/email/generator.py ============================================================================== --- python/trunk/Lib/email/generator.py (original) +++ python/trunk/Lib/email/generator.py Sat Jan 16 06:15:17 2010 @@ -237,6 +237,17 @@ print >> self._fp self._fp.write(msg.epilogue) + def _handle_multipart_signed(self, msg): + # The contents of signed parts has to stay unmodified in order to keep + # the signature intact per RFC1847 2.1, so we disable header wrapping. + # RDM: This isn't enough to completely preserve the part, but it helps. + old_maxheaderlen = self._maxheaderlen + try: + self._maxheaderlen = 0 + self._handle_multipart(msg) + finally: + self._maxheaderlen = old_maxheaderlen + def _handle_message_delivery_status(self, msg): # We can't just write the headers directly to self's file object # because this will leave an extra newline between the last header Added: python/trunk/Lib/email/test/data/msg_45.txt ============================================================================== --- (empty file) +++ python/trunk/Lib/email/test/data/msg_45.txt Sat Jan 16 06:15:17 2010 @@ -0,0 +1,33 @@ +From: +To: +Subject: test +X-Long-Line: Some really long line contains a lot of text and thus has to be rewrapped because it is some + really long + line +MIME-Version: 1.0 +Content-Type: multipart/signed; boundary="borderline"; + protocol="application/pgp-signature"; micalg=pgp-sha1 + +This is an OpenPGP/MIME signed message (RFC 2440 and 3156) +--borderline +Content-Type: text/plain +X-Long-Line: Another really long line contains a lot of text and thus has to be rewrapped because it is another + really long + line + +This is the signed contents. + +--borderline +Content-Type: application/pgp-signature; name="signature.asc" +Content-Description: OpenPGP digital signature +Content-Disposition: attachment; filename="signature.asc" + +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.0.6 (GNU/Linux) + +iD8DBQFG03voRhp6o4m9dFsRApSZAKCCAN3IkJlVRg6NvAiMHlvvIuMGPQCeLZtj +FGwfnRHFBFO/S4/DKysm0lI= +=t7+s +-----END PGP SIGNATURE----- + +--borderline-- Modified: python/trunk/Lib/email/test/test_email.py ============================================================================== --- python/trunk/Lib/email/test/test_email.py (original) +++ python/trunk/Lib/email/test/test_email.py Sat Jan 16 06:15:17 2010 @@ -3276,6 +3276,42 @@ +# Tests to ensure that signed parts of an email are completely preserved, as +# required by RFC1847 section 2.1. Note that these are incomplete, because the +# email package does not currently always preserve the body. See issue 96843. +class TestSigned(TestEmailBase): + + def _msg_and_obj(self, filename): + fp = openfile(findfile(filename)) + try: + original = fp.read() + msg = email.message_from_string(original) + finally: + fp.close() + return original, msg + + def _signed_parts_eq(self, original, result): + # Extract the first mime part of each message + import re + repart = re.compile(r'^--([^\n]+)\n(.*?)\n--\1$', re.S | re.M) + inpart = repart.search(original).group(2) + outpart = repart.search(result).group(2) + self.assertEqual(outpart, inpart) + + def test_long_headers_as_string(self): + original, msg = self._msg_and_obj('msg_45.txt') + result = msg.as_string() + self._signed_parts_eq(original, result) + + def test_long_headers_flatten(self): + original, msg = self._msg_and_obj('msg_45.txt') + fp = StringIO() + Generator(fp).flatten(msg) + result = fp.getvalue() + self._signed_parts_eq(original, result) + + + def _testclasses(): mod = sys.modules[__name__] return [getattr(mod, name) for name in dir(mod) if name.startswith('Test')] Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Jan 16 06:15:17 2010 @@ -30,9 +30,14 @@ - Issue #1967: Backport dictionary views from Python 3.x. + Library ------- +- Issue #1670765: Prevent email.generator.Generator from re-wrapping + headers in multipart/signed MIME parts, which fixes one of the sources of + invalid modifications to such parts by Generator. + - Issue #7701: Fix crash in binascii.b2a_uu() in debug mode when given a 1-byte argument. Patch by Victor Stinner. @@ -53,6 +58,7 @@ Extension extra options may change the output without changing the .c file). Initial patch by Collin Winter. + Build ----- From nnorwitz at gmail.com Sat Jan 16 10:16:16 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 16 Jan 2010 04:16:16 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100116091616.GA5268@kbk-i386-bb.psfb.org> 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.536s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [872485 refs] From nnorwitz at gmail.com Sat Jan 16 10:28:25 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 16 Jan 2010 04:28:25 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100116092825.GA15409@kbk-i386-bb.psfb.org> 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19651 refs] [19651 refs] [19651 refs] [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.530s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [871380 refs] From python-checkins at python.org Sat Jan 16 11:31:22 2010 From: python-checkins at python.org (matthias.klose) Date: Sat, 16 Jan 2010 10:31:22 -0000 Subject: [Python-checkins] r77518 - python/branches/release26-maint/Misc/NEWS Message-ID: Author: matthias.klose Date: Sat Jan 16 11:31:22 2010 New Revision: 77518 Log: - Move two NEWS entries to 2.6.5 Modified: python/branches/release26-maint/Misc/NEWS Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Sat Jan 16 11:31:22 2010 @@ -155,6 +155,11 @@ - Issue #7048: Force Decimal.logb to round its result when that result is too large to fit in the current precision. +- Issue #1488943: difflib.Differ() doesn't always add hints for tab characters + +- Issue #5037: Proxy the __unicode__ special method instead to __unicode__ + instead of __str__. + Build ----- @@ -349,11 +354,6 @@ Library ------- -- Issue #1488943: difflib.Differ() doesn't always add hints for tab characters - -- Issue #5037: Proxy the __unicode__ special method instead to __unicode__ - instead of __str__. - - Issue #6894: Fixed the issue urllib2 doesn't respect "no_proxy" environment - Issue #6790: Make it possible again to pass an `array.array` to From python-checkins at python.org Sat Jan 16 11:44:00 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 16 Jan 2010 10:44:00 -0000 Subject: [Python-checkins] r77519 - in python/trunk: Lib/test/test_strtod.py Misc/NEWS Python/dtoa.c Message-ID: Author: mark.dickinson Date: Sat Jan 16 11:44:00 2010 New Revision: 77519 Log: Issue #7632: Fix a serious wrong output bug for string -> float conversion. Also remove some now unused variables, and add comments clarifying the possible outputs of the parsing section of _Py_dg_strtod. Thanks Eric Smith for reviewing. Modified: python/trunk/Lib/test/test_strtod.py python/trunk/Misc/NEWS python/trunk/Python/dtoa.c Modified: python/trunk/Lib/test/test_strtod.py ============================================================================== --- python/trunk/Lib/test/test_strtod.py (original) +++ python/trunk/Lib/test/test_strtod.py Sat Jan 16 11:44:00 2010 @@ -258,6 +258,8 @@ # issue 7632 bug 5: the following 2 strings convert differently '1000000000000000000000000000000000000000e-16', #'10000000000000000000000000000000000000000e-17', + # issue 7632 bug 8: the following produced 10.0 + '10.900000000000000012345678912345678912345', ] for s in test_strings: self.check_strtod(s) Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Jan 16 11:44:00 2010 @@ -16,10 +16,12 @@ methods of bytes, bytearray and unicode objects by using a common implementation based on stringlib's fast search. Patch by Florent Xicluna. -- Issue #7632: Fix a crash in dtoa.c that occurred in debug builds - when parsing certain long numeric strings corresponding to subnormal - values. Also fix a number of bugs in dtoa.c that could lead to - incorrectly rounded results when converting strings to floats. +- Issue #7632: Fix various str -> float conversion bugs present in 2.7 + alpha 2, including: (1) a serious 'wrong output' bug that could + occur for long (> 40 digit) input strings, (2) a crash in dtoa.c + that occurred in debug builds when parsing certain long numeric + strings corresponding to subnormal values, and (3) a number of flaws + that could lead to incorrectly rounded results. - Issue #7319, #7770: Silence DeprecationWarning by default when -3 is not used. Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Sat Jan 16 11:44:00 2010 @@ -1340,7 +1340,7 @@ double _Py_dg_strtod(const char *s00, char **se) { - int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, dp0, dp1, dplen, e, e1, error; + int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, e, e1, error; int esign, i, j, k, nd, nd0, nf, nz, nz0, sign; const char *s, *s0, *s1; double aadj, aadj1; @@ -1349,7 +1349,7 @@ BCinfo bc; Bigint *bb, *bb1, *bd, *bd0, *bs, *delta; - sign = nz0 = nz = dplen = 0; + sign = nz0 = nz = 0; dval(&rv) = 0.; for(s = s00;;s++) switch(*s) { case '-': @@ -1388,11 +1388,8 @@ else if (nd < 16) z = 10*z + c - '0'; nd0 = nd; - dp0 = dp1 = s - s0; if (c == '.') { c = *++s; - dp1 = s - s0; - dplen = 1; if (!nd) { for(; c == '0'; c = *++s) nz++; @@ -1477,6 +1474,32 @@ if (!nd0) nd0 = nd; + + /* Summary of parsing results. The parsing stage gives values + * s0, nd0, nd, e, y and z such that: + * + * - nd >= nd0 >= 1 + * + * - the nd significant digits are in s0[0:nd0] and s0[nd0+1:nd+1] + * (using the usual Python half-open slice notation) + * + * - the absolute value of the number represented by the original input + * string is n * 10**e, where n is the integer represented by the + * concatenation of s0[0:nd0] and s0[nd0+1:nd+1] + * + * - the first significant digit is nonzero + * + * - the last significant digit may or may not be nonzero; (some code + * currently assumes that it's nonzero; this is a bug) + * + * - y contains the value represented by the first min(9, nd) + * significant digits + * + * - if nd > 9, z contains the value represented by significant digits + * with indices in [9, min(16, nd)). So y * 10**(min(16, nd) - 9) + z + * gives the value represented by the first min(16, nd) sig. digits. + */ + k = nd < DBL_DIG + 1 ? nd : DBL_DIG + 1; dval(&rv) = y; if (k > 9) { @@ -1593,15 +1616,18 @@ /* ASSERT(STRTOD_DIGLIM >= 18); 18 == one more than the */ /* minimum number of decimal digits to distinguish double values */ /* in IEEE arithmetic. */ - i = j = 18; - if (i > nd0) - j += dplen; - for(;;) { - if (--j <= dp1 && j >= dp0) - j = dp0 - 1; - if (s0[j] != '0') - break; + + /* Truncate input to 18 significant digits, then discard any trailing + zeros on the result by updating nd, nd0, e and y suitably. (There's + no need to update z; it's not reused beyond this point.) */ + for (i = 18; i > 0; ) { + /* scan back until we hit a nonzero digit. significant digit 'i' + is s0[i] if i < nd0, s0[i+1] if i >= nd0. */ --i; + if (s0[i < nd0 ? i : i+1] != '0') { + ++i; + break; + } } e += nd - i; nd = i; @@ -1611,8 +1637,8 @@ y = 0; for(i = 0; i < nd0; ++i) y = 10*y + s0[i] - '0'; - for(j = dp1; i < nd; ++i) - y = 10*y + s0[j++] - '0'; + for(; i < nd; ++i) + y = 10*y + s0[i+1] - '0'; } } bd0 = s2b(s0, nd0, nd, y); From nnorwitz at gmail.com Sat Jan 16 13:08:47 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 16 Jan 2010 07:08:47 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100116120847.GA10093@kbk-i386-bb.psfb.org> 349 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-2740 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.506s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 349 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [889008 refs] From ncoghlan at gmail.com Sat Jan 16 15:14:46 2010 From: ncoghlan at gmail.com (Nick Coghlan) Date: Sun, 17 Jan 2010 00:14:46 +1000 Subject: [Python-checkins] r77519 - in python/trunk: Lib/test/test_strtod.py Misc/NEWS Python/dtoa.c In-Reply-To: <4b519879.0867f10a.3a42.ffffa2efSMTPIN_ADDED@mx.google.com> References: <4b519879.0867f10a.3a42.ffffa2efSMTPIN_ADDED@mx.google.com> Message-ID: <4B51C9D6.5010704@gmail.com> mark.dickinson wrote: > + * - the nd significant digits are in s0[0:nd0] and s0[nd0+1:nd+1] > + * (using the usual Python half-open slice notation) Could you include something here as to what gets stored in s0[nd0] between the two parts of the number? Always \0? An arbitrary value that isn't used for anything? That would keep me from wondering if there was an off-by-one error in the indices of the second slice. Cheers, Nick. -- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia --------------------------------------------------------------- From python-checkins at python.org Sat Jan 16 15:41:22 2010 From: python-checkins at python.org (georg.brandl) Date: Sat, 16 Jan 2010 14:41:22 -0000 Subject: [Python-checkins] r77520 - python/branches/py3k/Doc/library/os.rst Message-ID: Author: georg.brandl Date: Sat Jan 16 15:41:21 2010 New Revision: 77520 Log: Remove L suffix for integers. Modified: python/branches/py3k/Doc/library/os.rst Modified: python/branches/py3k/Doc/library/os.rst ============================================================================== --- python/branches/py3k/Doc/library/os.rst (original) +++ python/branches/py3k/Doc/library/os.rst Sat Jan 16 15:41:21 2010 @@ -1065,9 +1065,9 @@ >>> import os >>> statinfo = os.stat('somefile.txt') >>> statinfo - (33188, 422511L, 769L, 1, 1032, 100, 926L, 1105022698,1105022732, 1105022732) + (33188, 422511, 769, 1, 1032, 100, 926, 1105022698,1105022732, 1105022732) >>> statinfo.st_size - 926L + 926 >>> From python-checkins at python.org Sat Jan 16 15:46:27 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 16 Jan 2010 14:46:27 -0000 Subject: [Python-checkins] r77521 - python/branches/py3k/Doc/library/math.rst Message-ID: Author: ezio.melotti Date: Sat Jan 16 15:46:27 2010 New Revision: 77521 Log: remove obsolete sentence Modified: python/branches/py3k/Doc/library/math.rst Modified: python/branches/py3k/Doc/library/math.rst ============================================================================== --- python/branches/py3k/Doc/library/math.rst (original) +++ python/branches/py3k/Doc/library/math.rst Sat Jan 16 15:46:27 2010 @@ -347,10 +347,7 @@ error-reporting behavior from the platform C implementation. As a result, the specific exceptions raised in error cases (and even whether some arguments are considered to be exceptional at all) are not defined in any - useful cross-platform or cross-release way. For example, whether - ``math.log(0)`` returns ``-Inf`` or raises :exc:`ValueError` or - :exc:`OverflowError` isn't defined, and in cases where ``math.log(0)`` raises - :exc:`OverflowError`, ``math.log(0L)`` may raise :exc:`ValueError` instead. + useful cross-platform or cross-release way. All functions return a quiet *NaN* if at least one of the args is *NaN*. Signaling *NaN*\s raise an exception. The exception type still depends on the From python-checkins at python.org Sat Jan 16 15:52:34 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 16 Jan 2010 14:52:34 -0000 Subject: [Python-checkins] r77522 - in python/branches/release31-maint: Doc/library/math.rst Doc/library/os.rst Message-ID: Author: ezio.melotti Date: Sat Jan 16 15:52:34 2010 New Revision: 77522 Log: Merged revisions 77520-77521 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ........ r77520 | georg.brandl | 2010-01-16 16:41:21 +0200 (Sat, 16 Jan 2010) | 1 line Remove L suffix for integers. ........ r77521 | ezio.melotti | 2010-01-16 16:46:27 +0200 (Sat, 16 Jan 2010) | 1 line remove obsolete sentence ........ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Doc/library/math.rst python/branches/release31-maint/Doc/library/os.rst Modified: python/branches/release31-maint/Doc/library/math.rst ============================================================================== --- python/branches/release31-maint/Doc/library/math.rst (original) +++ python/branches/release31-maint/Doc/library/math.rst Sat Jan 16 15:52:34 2010 @@ -299,10 +299,7 @@ error-reporting behavior from the platform C implementation. As a result, the specific exceptions raised in error cases (and even whether some arguments are considered to be exceptional at all) are not defined in any - useful cross-platform or cross-release way. For example, whether - ``math.log(0)`` returns ``-Inf`` or raises :exc:`ValueError` or - :exc:`OverflowError` isn't defined, and in cases where ``math.log(0)`` raises - :exc:`OverflowError`, ``math.log(0L)`` may raise :exc:`ValueError` instead. + useful cross-platform or cross-release way. All functions return a quiet *NaN* if at least one of the args is *NaN*. Signaling *NaN*\s raise an exception. The exception type still depends on the Modified: python/branches/release31-maint/Doc/library/os.rst ============================================================================== --- python/branches/release31-maint/Doc/library/os.rst (original) +++ python/branches/release31-maint/Doc/library/os.rst Sat Jan 16 15:52:34 2010 @@ -1026,9 +1026,9 @@ >>> import os >>> statinfo = os.stat('somefile.txt') >>> statinfo - (33188, 422511L, 769L, 1, 1032, 100, 926L, 1105022698,1105022732, 1105022732) + (33188, 422511, 769, 1, 1032, 100, 926, 1105022698,1105022732, 1105022732) >>> statinfo.st_size - 926L + 926 >>> From dickinsm at gmail.com Sat Jan 16 15:57:14 2010 From: dickinsm at gmail.com (Mark Dickinson) Date: Sat, 16 Jan 2010 14:57:14 +0000 Subject: [Python-checkins] r77519 - in python/trunk: Lib/test/test_strtod.py Misc/NEWS Python/dtoa.c In-Reply-To: <4B51C9D6.5010704@gmail.com> References: <4b519879.0867f10a.3a42.ffffa2efSMTPIN_ADDED@mx.google.com> <4B51C9D6.5010704@gmail.com> Message-ID: <5c6f2a5d1001160657h32d3c200q577e963ad785b73@mail.gmail.com> On Sat, Jan 16, 2010 at 2:14 PM, Nick Coghlan wrote: > mark.dickinson wrote: >> + ? ? * ?- the nd significant digits are in s0[0:nd0] and s0[nd0+1:nd+1] >> + ? ? * ? ?(using the usual Python half-open slice notation) > > Could you include something here as to what gets stored in s0[nd0] > between the two parts of the number? Always \0? An arbitrary value that > isn't used for anything? That would keep me from wondering if there was > an off-by-one error in the indices of the second slice. Will do. The quick answer is: if nd0 != nd, then s0[nd0] will be the decimal point. If nd0 == nd, then s0[nd0] is probably either 'e', 'E', '.' or '\0', but it could actually be any character at all. Note that s0 is just a pointer to the first significant digit in the input string s00; it's not a newly-constructed char*. I'll clarify this in the comments, too. Mark From python-checkins at python.org Sat Jan 16 16:09:48 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 16 Jan 2010 15:09:48 -0000 Subject: [Python-checkins] r77523 - python/branches/py3k/Lib/test/crashers/bogus_code_obj.py Message-ID: Author: ezio.melotti Date: Sat Jan 16 16:09:48 2010 New Revision: 77523 Log: Fixed crasher. Patch by Florent Xicluna. Modified: python/branches/py3k/Lib/test/crashers/bogus_code_obj.py Modified: python/branches/py3k/Lib/test/crashers/bogus_code_obj.py ============================================================================== --- python/branches/py3k/Lib/test/crashers/bogus_code_obj.py (original) +++ python/branches/py3k/Lib/test/crashers/bogus_code_obj.py Sat Jan 16 16:09:48 2010 @@ -14,6 +14,6 @@ import types -co = types.CodeType(0, 0, 0, 0, '\x04\x71\x00\x00', (), - (), (), '', '', 1, '') +co = types.CodeType(0, 0, 0, 0, 0, b'\x04\x71\x00\x00', + (), (), (), '', '', 1, b'') exec(co) From python-checkins at python.org Sat Jan 16 16:11:38 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 16 Jan 2010 15:11:38 -0000 Subject: [Python-checkins] r77524 - in python/branches/release31-maint: Lib/test/crashers/bogus_code_obj.py Message-ID: Author: ezio.melotti Date: Sat Jan 16 16:11:38 2010 New Revision: 77524 Log: Merged revisions 77523 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ........ r77523 | ezio.melotti | 2010-01-16 17:09:48 +0200 (Sat, 16 Jan 2010) | 1 line Fixed crasher. Patch by Florent Xicluna. ........ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/test/crashers/bogus_code_obj.py Modified: python/branches/release31-maint/Lib/test/crashers/bogus_code_obj.py ============================================================================== --- python/branches/release31-maint/Lib/test/crashers/bogus_code_obj.py (original) +++ python/branches/release31-maint/Lib/test/crashers/bogus_code_obj.py Sat Jan 16 16:11:38 2010 @@ -14,6 +14,6 @@ import types -co = types.CodeType(0, 0, 0, 0, '\x04\x71\x00\x00', (), - (), (), '', '', 1, '') +co = types.CodeType(0, 0, 0, 0, 0, b'\x04\x71\x00\x00', + (), (), (), '', '', 1, b'') exec(co) From ncoghlan at gmail.com Sat Jan 16 16:34:56 2010 From: ncoghlan at gmail.com (Nick Coghlan) Date: Sun, 17 Jan 2010 01:34:56 +1000 Subject: [Python-checkins] r77519 - in python/trunk: Lib/test/test_strtod.py Misc/NEWS Python/dtoa.c In-Reply-To: <5c6f2a5d1001160657h32d3c200q577e963ad785b73@mail.gmail.com> References: <4b519879.0867f10a.3a42.ffffa2efSMTPIN_ADDED@mx.google.com> <4B51C9D6.5010704@gmail.com> <5c6f2a5d1001160657h32d3c200q577e963ad785b73@mail.gmail.com> Message-ID: <4B51DCA0.9080805@gmail.com> Mark Dickinson wrote: > On Sat, Jan 16, 2010 at 2:14 PM, Nick Coghlan wrote: >> mark.dickinson wrote: >>> + * - the nd significant digits are in s0[0:nd0] and s0[nd0+1:nd+1] >>> + * (using the usual Python half-open slice notation) >> Could you include something here as to what gets stored in s0[nd0] >> between the two parts of the number? Always \0? An arbitrary value that >> isn't used for anything? That would keep me from wondering if there was >> an off-by-one error in the indices of the second slice. > > Will do. > > The quick answer is: if nd0 != nd, then s0[nd0] will be the decimal point. > If nd0 == nd, then s0[nd0] is probably either 'e', 'E', '.' or '\0', > but it could > actually be any character at all. > > Note that s0 is just a pointer to the first significant digit in the input > string s00; it's not a newly-constructed char*. I'll clarify this in the > comments, too. Thanks - while I was also interested in the details of the answer, it was more the "no, really, that +1 is meant to be there" reassurance I was after :) Cheers, Nick. -- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia --------------------------------------------------------------- From python-checkins at python.org Sat Jan 16 17:08:33 2010 From: python-checkins at python.org (r.david.murray) Date: Sat, 16 Jan 2010 16:08:33 -0000 Subject: [Python-checkins] r77525 - python/trunk/Lib/email/test/test_email.py Message-ID: Author: r.david.murray Date: Sat Jan 16 17:08:32 2010 New Revision: 77525 Log: Fix issue number in comment. Modified: python/trunk/Lib/email/test/test_email.py Modified: python/trunk/Lib/email/test/test_email.py ============================================================================== --- python/trunk/Lib/email/test/test_email.py (original) +++ python/trunk/Lib/email/test/test_email.py Sat Jan 16 17:08:32 2010 @@ -3278,7 +3278,7 @@ # Tests to ensure that signed parts of an email are completely preserved, as # required by RFC1847 section 2.1. Note that these are incomplete, because the -# email package does not currently always preserve the body. See issue 96843. +# email package does not currently always preserve the body. See issue 1670765. class TestSigned(TestEmailBase): def _msg_and_obj(self, filename): From python-checkins at python.org Sat Jan 16 17:32:39 2010 From: python-checkins at python.org (r.david.murray) Date: Sat, 16 Jan 2010 16:32:39 -0000 Subject: [Python-checkins] r77526 - in python/branches/release26-maint: Lib/email/generator.py Lib/email/test/test_email.py Misc/NEWS Message-ID: Author: r.david.murray Date: Sat Jan 16 17:32:39 2010 New Revision: 77526 Log: Merged revisions 77517,77525 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77517 | r.david.murray | 2010-01-16 00:15:17 -0500 (Sat, 16 Jan 2010) | 6 lines Issue #1670765: Prevent email.generator.Generator from re-wrapping headers in multipart/signed MIME parts, which fixes one of the sources of invalid modifications to such parts by Generator. Patch and tests by Martin von Gagern. ........ r77525 | r.david.murray | 2010-01-16 11:08:32 -0500 (Sat, 16 Jan 2010) | 2 lines Fix issue number in comment. ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/email/generator.py python/branches/release26-maint/Lib/email/test/test_email.py python/branches/release26-maint/Misc/NEWS Modified: python/branches/release26-maint/Lib/email/generator.py ============================================================================== --- python/branches/release26-maint/Lib/email/generator.py (original) +++ python/branches/release26-maint/Lib/email/generator.py Sat Jan 16 17:32:39 2010 @@ -235,6 +235,17 @@ print >> self._fp self._fp.write(msg.epilogue) + def _handle_multipart_signed(self, msg): + # The contents of signed parts has to stay unmodified in order to keep + # the signature intact per RFC1847 2.1, so we disable header wrapping. + # RDM: This isn't enough to completely preserve the part, but it helps. + old_maxheaderlen = self._maxheaderlen + try: + self._maxheaderlen = 0 + self._handle_multipart(msg) + finally: + self._maxheaderlen = old_maxheaderlen + def _handle_message_delivery_status(self, msg): # We can't just write the headers directly to self's file object # because this will leave an extra newline between the last header Modified: python/branches/release26-maint/Lib/email/test/test_email.py ============================================================================== --- python/branches/release26-maint/Lib/email/test/test_email.py (original) +++ python/branches/release26-maint/Lib/email/test/test_email.py Sat Jan 16 17:32:39 2010 @@ -3267,6 +3267,42 @@ +# Tests to ensure that signed parts of an email are completely preserved, as +# required by RFC1847 section 2.1. Note that these are incomplete, because the +# email package does not currently always preserve the body. See issue 1670765. +class TestSigned(TestEmailBase): + + def _msg_and_obj(self, filename): + fp = openfile(findfile(filename)) + try: + original = fp.read() + msg = email.message_from_string(original) + finally: + fp.close() + return original, msg + + def _signed_parts_eq(self, original, result): + # Extract the first mime part of each message + import re + repart = re.compile(r'^--([^\n]+)\n(.*?)\n--\1$', re.S | re.M) + inpart = repart.search(original).group(2) + outpart = repart.search(result).group(2) + self.assertEqual(outpart, inpart) + + def test_long_headers_as_string(self): + original, msg = self._msg_and_obj('msg_45.txt') + result = msg.as_string() + self._signed_parts_eq(original, result) + + def test_long_headers_flatten(self): + original, msg = self._msg_and_obj('msg_45.txt') + fp = StringIO() + Generator(fp).flatten(msg) + result = fp.getvalue() + self._signed_parts_eq(original, result) + + + def _testclasses(): mod = sys.modules[__name__] return [getattr(mod, name) for name in dir(mod) if name.startswith('Test')] Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Sat Jan 16 17:32:39 2010 @@ -48,6 +48,10 @@ Library ------- +- Issue #1670765: Prevent email.generator.Generator from re-wrapping + headers in multipart/signed MIME parts, which fixes one of the sources of + invalid modifications to such parts by Generator. + - Issue #7701: Fix crash in binascii.b2a_uu() in debug mode when given a 1-byte argument. Patch by Victor Stinner. From python-checkins at python.org Sat Jan 16 17:34:46 2010 From: python-checkins at python.org (r.david.murray) Date: Sat, 16 Jan 2010 16:34:46 -0000 Subject: [Python-checkins] r77527 - python/branches/release26-maint/Lib/email/test/data/msg_45.txt Message-ID: Author: r.david.murray Date: Sat Jan 16 17:34:46 2010 New Revision: 77527 Log: Add data file omitted by svnmerge. Added: python/branches/release26-maint/Lib/email/test/data/msg_45.txt Added: python/branches/release26-maint/Lib/email/test/data/msg_45.txt ============================================================================== --- (empty file) +++ python/branches/release26-maint/Lib/email/test/data/msg_45.txt Sat Jan 16 17:34:46 2010 @@ -0,0 +1,33 @@ +From: +To: +Subject: test +X-Long-Line: Some really long line contains a lot of text and thus has to be rewrapped because it is some + really long + line +MIME-Version: 1.0 +Content-Type: multipart/signed; boundary="borderline"; + protocol="application/pgp-signature"; micalg=pgp-sha1 + +This is an OpenPGP/MIME signed message (RFC 2440 and 3156) +--borderline +Content-Type: text/plain +X-Long-Line: Another really long line contains a lot of text and thus has to be rewrapped because it is another + really long + line + +This is the signed contents. + +--borderline +Content-Type: application/pgp-signature; name="signature.asc" +Content-Description: OpenPGP digital signature +Content-Disposition: attachment; filename="signature.asc" + +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.0.6 (GNU/Linux) + +iD8DBQFG03voRhp6o4m9dFsRApSZAKCCAN3IkJlVRg6NvAiMHlvvIuMGPQCeLZtj +FGwfnRHFBFO/S4/DKysm0lI= +=t7+s +-----END PGP SIGNATURE----- + +--borderline-- From python-checkins at python.org Sat Jan 16 18:45:56 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sat, 16 Jan 2010 17:45:56 -0000 Subject: [Python-checkins] r77528 - in python/trunk: Lib/test/test_binascii.py Modules/binascii.c Message-ID: Author: antoine.pitrou Date: Sat Jan 16 18:45:56 2010 New Revision: 77528 Log: Followup to #7703: a2b_hqx() didn't follow the new buffer API (neither in trunk nor in py3k). Patch by Florent Xicluna as well as additional tests. Modified: python/trunk/Lib/test/test_binascii.py python/trunk/Modules/binascii.c Modified: python/trunk/Lib/test/test_binascii.py ============================================================================== --- python/trunk/Lib/test/test_binascii.py (original) +++ python/trunk/Lib/test/test_binascii.py Sat Jan 16 18:45:56 2010 @@ -5,6 +5,14 @@ import binascii import array +# Note: "*_hex" functions are aliases for "(un)hexlify" +b2a_functions = ['b2a_base64', 'b2a_hex', 'b2a_hqx', 'b2a_qp', 'b2a_uu', + 'hexlify', 'rlecode_hqx'] +a2b_functions = ['a2b_base64', 'a2b_hex', 'a2b_hqx', 'a2b_qp', 'a2b_uu', + 'unhexlify', 'rledecode_hqx'] +all_functions = a2b_functions + b2a_functions + ['crc32', 'crc_hqx'] + + class BinASCIITest(unittest.TestCase): type2test = str @@ -24,30 +32,45 @@ def test_functions(self): # Check presence of all functions - funcs = [] - for suffix in "base64", "hqx", "uu", "hex": - prefixes = ["a2b_", "b2a_"] - if suffix == "hqx": - prefixes.extend(["crc_", "rlecode_", "rledecode_"]) - for prefix in prefixes: - name = prefix + suffix - self.assertTrue(hasattr(getattr(binascii, name), '__call__')) - self.assertRaises(TypeError, getattr(binascii, name)) - for name in ("hexlify", "unhexlify"): + for name in all_functions: self.assertTrue(hasattr(getattr(binascii, name), '__call__')) self.assertRaises(TypeError, getattr(binascii, name)) + def test_returned_value(self): + # Limit to the minimum of all limits (b2a_uu) + MAX_ALL = 45 + raw = self.rawdata[:MAX_ALL] + for fa, fb in zip(a2b_functions, b2a_functions): + a2b = getattr(binascii, fa) + b2a = getattr(binascii, fb) + try: + a = b2a(self.type2test(raw)) + res = a2b(self.type2test(a)) + except Exception, err: + self.fail("{}/{} conversion raises {!r}".format(fb, fa, err)) + if fb == 'b2a_hqx': + # b2a_hqx returns a tuple + res, _ = res + self.assertEqual(res, raw, "{}/{} conversion: " + "{!r} != {!r}".format(fb, fa, res, raw)) + self.assertIsInstance(res, str) + self.assertIsInstance(a, str) + self.assertLess(max(ord(c) for c in a), 128) + self.assertIsInstance(binascii.crc_hqx(raw, 0), int) + self.assertIsInstance(binascii.crc32(raw), int) + def test_base64valid(self): # Test base64 with valid data MAX_BASE64 = 57 lines = [] - for i in range(0, len(self.data), MAX_BASE64): - b = self.data[i:i+MAX_BASE64] + for i in range(0, len(self.rawdata), MAX_BASE64): + b = self.type2test(self.rawdata[i:i+MAX_BASE64]) a = binascii.b2a_base64(b) lines.append(a) res = "" for line in lines: - b = binascii.a2b_base64(line) + a = self.type2test(line) + b = binascii.a2b_base64(a) res = res + b self.assertEqual(res, self.rawdata) @@ -57,7 +80,7 @@ MAX_BASE64 = 57 lines = [] for i in range(0, len(self.data), MAX_BASE64): - b = self.data[i:i+MAX_BASE64] + b = self.type2test(self.rawdata[i:i+MAX_BASE64]) a = binascii.b2a_base64(b) lines.append(a) @@ -80,24 +103,26 @@ return res + noise + line res = "" for line in map(addnoise, lines): - b = binascii.a2b_base64(line) + a = self.type2test(line) + b = binascii.a2b_base64(a) res += b self.assertEqual(res, self.rawdata) # Test base64 with just invalid characters, which should return # empty strings. TBD: shouldn't it raise an exception instead ? - self.assertEqual(binascii.a2b_base64(fillers), '') + self.assertEqual(binascii.a2b_base64(self.type2test(fillers)), '') def test_uu(self): MAX_UU = 45 lines = [] for i in range(0, len(self.data), MAX_UU): - b = self.data[i:i+MAX_UU] + b = self.type2test(self.rawdata[i:i+MAX_UU]) a = binascii.b2a_uu(b) lines.append(a) res = "" for line in lines: - b = binascii.a2b_uu(line) + a = self.type2test(line) + b = binascii.a2b_uu(a) res += b self.assertEqual(res, self.rawdata) @@ -113,19 +138,27 @@ self.assertEqual(binascii.b2a_uu('x'), '!> \n') def test_crc32(self): - crc = binascii.crc32("Test the CRC-32 of") - crc = binascii.crc32(" this string.", crc) + crc = binascii.crc32(self.type2test("Test the CRC-32 of")) + crc = binascii.crc32(self.type2test(" this string."), crc) self.assertEqual(crc, 1571220330) self.assertRaises(TypeError, binascii.crc32) - # The hqx test is in test_binhex.py + def test_hqx(self): + # Perform binhex4 style RLE-compression + # Then calculate the hexbin4 binary-to-ASCII translation + rle = binascii.rlecode_hqx(self.data) + a = binascii.b2a_hqx(self.type2test(rle)) + b, _ = binascii.a2b_hqx(self.type2test(a)) + res = binascii.rledecode_hqx(b) + + self.assertEqual(res, self.rawdata) def test_hex(self): # test hexlification s = '{s\005\000\000\000worldi\002\000\000\000s\005\000\000\000helloi\001\000\000\0000' - t = binascii.b2a_hex(s) - u = binascii.a2b_hex(t) + t = binascii.b2a_hex(self.type2test(s)) + u = binascii.a2b_hex(self.type2test(t)) self.assertEqual(s, u) self.assertRaises(TypeError, binascii.a2b_hex, t[:-1]) self.assertRaises(TypeError, binascii.a2b_hex, t[:-1] + 'q') @@ -167,13 +200,17 @@ def test_empty_string(self): # A test for SF bug #1022953. Make sure SystemError is not raised. - for n in ['b2a_qp', 'a2b_hex', 'b2a_base64', 'a2b_uu', 'a2b_qp', - 'b2a_hex', 'unhexlify', 'hexlify', 'crc32', 'b2a_hqx', - 'a2b_hqx', 'a2b_base64', 'rlecode_hqx', 'b2a_uu', - 'rledecode_hqx']: - f = getattr(binascii, n) - f('') - binascii.crc_hqx('', 0) + empty = self.type2test('') + for func in all_functions: + if func == 'crc_hqx': + # crc_hqx needs 2 arguments + binascii.crc_hqx(empty, 0) + continue + f = getattr(binascii, func) + try: + f(empty) + except Exception, err: + self.fail("{}({!r}) raises {!r}".format(func, empty, err)) class ArrayBinASCIITest(BinASCIITest): @@ -181,6 +218,10 @@ return array.array('c', s) +class BytearrayBinASCIITest(BinASCIITest): + type2test = bytearray + + class MemoryviewBinASCIITest(BinASCIITest): type2test = memoryview @@ -188,6 +229,7 @@ def test_main(): test_support.run_unittest(BinASCIITest, ArrayBinASCIITest, + BytearrayBinASCIITest, MemoryviewBinASCIITest) if __name__ == "__main__": Modified: python/trunk/Modules/binascii.c ============================================================================== --- python/trunk/Modules/binascii.c (original) +++ python/trunk/Modules/binascii.c Sat Jan 16 18:45:56 2010 @@ -537,6 +537,7 @@ static PyObject * binascii_a2b_hqx(PyObject *self, PyObject *args) { + Py_buffer pascii; unsigned char *ascii_data, *bin_data; int leftbits = 0; unsigned char this_ch; @@ -545,19 +546,25 @@ Py_ssize_t len; int done = 0; - if ( !PyArg_ParseTuple(args, "t#:a2b_hqx", &ascii_data, &len) ) + if ( !PyArg_ParseTuple(args, "s*:a2b_hqx", &pascii) ) return NULL; + ascii_data = pascii.buf; + len = pascii.len; assert(len >= 0); - if (len > PY_SSIZE_T_MAX - 2) + if (len > PY_SSIZE_T_MAX - 2) { + PyBuffer_Release(&pascii); return PyErr_NoMemory(); + } /* Allocate a string that is too big (fixed later) Add two to the initial length to prevent interning which would preclude subsequent resizing. */ - if ( (rv=PyString_FromStringAndSize(NULL, len+2)) == NULL ) + if ( (rv=PyString_FromStringAndSize(NULL, len+2)) == NULL ) { + PyBuffer_Release(&pascii); return NULL; + } bin_data = (unsigned char *)PyString_AS_STRING(rv); for( ; len > 0 ; len--, ascii_data++ ) { @@ -567,6 +574,7 @@ continue; if ( this_ch == FAIL ) { PyErr_SetString(Error, "Illegal char"); + PyBuffer_Release(&pascii); Py_DECREF(rv); return NULL; } @@ -589,6 +597,7 @@ if ( leftbits && !done ) { PyErr_SetString(Incomplete, "String has incomplete number of bytes"); + PyBuffer_Release(&pascii); Py_DECREF(rv); return NULL; } @@ -600,10 +609,12 @@ } if (rv) { PyObject *rrv = Py_BuildValue("Oi", rv, done); + PyBuffer_Release(&pascii); Py_DECREF(rv); return rrv; } + PyBuffer_Release(&pascii); return NULL; } From python-checkins at python.org Sat Jan 16 18:55:53 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sat, 16 Jan 2010 17:55:53 -0000 Subject: [Python-checkins] r77529 - in python/branches/py3k: Lib/test/test_binascii.py Misc/NEWS Modules/binascii.c Message-ID: Author: antoine.pitrou Date: Sat Jan 16 18:55:52 2010 New Revision: 77529 Log: Merged revisions 77528 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77528 | antoine.pitrou | 2010-01-16 18:45:56 +0100 (sam., 16 janv. 2010) | 4 lines Followup to #7703: a2b_hqx() didn't follow the new buffer API (neither in trunk nor in py3k). Patch by Florent Xicluna as well as additional tests. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_binascii.py python/branches/py3k/Misc/NEWS python/branches/py3k/Modules/binascii.c Modified: python/branches/py3k/Lib/test/test_binascii.py ============================================================================== --- python/branches/py3k/Lib/test/test_binascii.py (original) +++ python/branches/py3k/Lib/test/test_binascii.py Sat Jan 16 18:55:52 2010 @@ -5,6 +5,14 @@ import binascii import array +# Note: "*_hex" functions are aliases for "(un)hexlify" +b2a_functions = ['b2a_base64', 'b2a_hex', 'b2a_hqx', 'b2a_qp', 'b2a_uu', + 'hexlify', 'rlecode_hqx'] +a2b_functions = ['a2b_base64', 'a2b_hex', 'a2b_hqx', 'a2b_qp', 'a2b_uu', + 'unhexlify', 'rledecode_hqx'] +all_functions = a2b_functions + b2a_functions + ['crc32', 'crc_hqx'] + + class BinASCIITest(unittest.TestCase): type2test = bytes @@ -24,30 +32,45 @@ def test_functions(self): # Check presence of all functions - funcs = [] - for suffix in "base64", "hqx", "uu", "hex": - prefixes = ["a2b_", "b2a_"] - if suffix == "hqx": - prefixes.extend(["crc_", "rlecode_", "rledecode_"]) - for prefix in prefixes: - name = prefix + suffix - self.assertTrue(hasattr(getattr(binascii, name), '__call__')) - self.assertRaises(TypeError, getattr(binascii, name)) - for name in ("hexlify", "unhexlify"): + for name in all_functions: self.assertTrue(hasattr(getattr(binascii, name), '__call__')) self.assertRaises(TypeError, getattr(binascii, name)) + def test_returned_value(self): + # Limit to the minimum of all limits (b2a_uu) + MAX_ALL = 45 + raw = self.rawdata[:MAX_ALL] + for fa, fb in zip(a2b_functions, b2a_functions): + a2b = getattr(binascii, fa) + b2a = getattr(binascii, fb) + try: + a = b2a(self.type2test(raw)) + res = a2b(self.type2test(a)) + except Exception as err: + self.fail("{}/{} conversion raises {!r}".format(fb, fa, err)) + if fb == 'b2a_hqx': + # b2a_hqx returns a tuple + res, _ = res + self.assertEqual(res, raw, "{}/{} conversion: " + "{!r} != {!r}".format(fb, fa, res, raw)) + self.assertIsInstance(res, bytes) + self.assertIsInstance(a, bytes) + self.assertLess(max(c for c in a), 128) + self.assertIsInstance(binascii.crc_hqx(raw, 0), int) + self.assertIsInstance(binascii.crc32(raw), int) + def test_base64valid(self): # Test base64 with valid data MAX_BASE64 = 57 lines = [] - for i in range(0, len(self.data), MAX_BASE64): - b = self.data[i:i+MAX_BASE64] + for i in range(0, len(self.rawdata), MAX_BASE64): + b = self.type2test(self.rawdata[i:i+MAX_BASE64]) a = binascii.b2a_base64(b) lines.append(a) res = bytes() for line in lines: - b = binascii.a2b_base64(line) + a = self.type2test(line) + b = binascii.a2b_base64(a) res += b self.assertEqual(res, self.rawdata) @@ -57,7 +80,7 @@ MAX_BASE64 = 57 lines = [] for i in range(0, len(self.data), MAX_BASE64): - b = self.data[i:i+MAX_BASE64] + b = self.type2test(self.rawdata[i:i+MAX_BASE64]) a = binascii.b2a_base64(b) lines.append(a) @@ -79,24 +102,26 @@ return res + noise + line res = bytearray() for line in map(addnoise, lines): - b = binascii.a2b_base64(line) + a = self.type2test(line) + b = binascii.a2b_base64(a) res += b self.assertEqual(res, self.rawdata) # Test base64 with just invalid characters, which should return # empty strings. TBD: shouldn't it raise an exception instead ? - self.assertEqual(binascii.a2b_base64(fillers), b'') + self.assertEqual(binascii.a2b_base64(self.type2test(fillers)), b'') def test_uu(self): MAX_UU = 45 lines = [] for i in range(0, len(self.data), MAX_UU): - b = self.data[i:i+MAX_UU] + b = self.type2test(self.rawdata[i:i+MAX_UU]) a = binascii.b2a_uu(b) lines.append(a) res = bytes() for line in lines: - b = binascii.a2b_uu(line) + a = self.type2test(line) + b = binascii.a2b_uu(a) res += b self.assertEqual(res, self.rawdata) @@ -112,19 +137,27 @@ self.assertEqual(binascii.b2a_uu(b'x'), b'!> \n') def test_crc32(self): - crc = binascii.crc32(b"Test the CRC-32 of") - crc = binascii.crc32(b" this string.", crc) + crc = binascii.crc32(self.type2test(b"Test the CRC-32 of")) + crc = binascii.crc32(self.type2test(b" this string."), crc) self.assertEqual(crc, 1571220330) self.assertRaises(TypeError, binascii.crc32) - # The hqx test is in test_binhex.py + def test_hqx(self): + # Perform binhex4 style RLE-compression + # Then calculate the hexbin4 binary-to-ASCII translation + rle = binascii.rlecode_hqx(self.data) + a = binascii.b2a_hqx(self.type2test(rle)) + b, _ = binascii.a2b_hqx(self.type2test(a)) + res = binascii.rledecode_hqx(b) + + self.assertEqual(res, self.rawdata) def test_hex(self): # test hexlification s = b'{s\005\000\000\000worldi\002\000\000\000s\005\000\000\000helloi\001\000\000\0000' - t = binascii.b2a_hex(s) - u = binascii.a2b_hex(t) + t = binascii.b2a_hex(self.type2test(s)) + u = binascii.a2b_hex(self.type2test(t)) self.assertEqual(s, u) self.assertRaises(binascii.Error, binascii.a2b_hex, t[:-1]) self.assertRaises(binascii.Error, binascii.a2b_hex, t[:-1] + b'q') @@ -165,16 +198,17 @@ def test_empty_string(self): # A test for SF bug #1022953. Make sure SystemError is not raised. - for n in ['b2a_qp', 'a2b_hex', 'b2a_base64', 'a2b_uu', 'a2b_qp', - 'b2a_hex', 'unhexlify', 'hexlify', 'crc32', 'b2a_hqx', - 'a2b_hqx', 'a2b_base64', 'rlecode_hqx', 'b2a_uu', - 'rledecode_hqx']: - f = getattr(binascii, n) + empty = self.type2test(b'') + for func in all_functions: + if func == 'crc_hqx': + # crc_hqx needs 2 arguments + binascii.crc_hqx(empty, 0) + continue + f = getattr(binascii, func) try: - f(b'') - except SystemError as err: - self.fail("%s(b'') raises SystemError: %s" % (n, err)) - binascii.crc_hqx(b'', 0) + f(empty) + except Exception as err: + self.fail("{}({!r}) raises {!r}".format(func, empty, err)) def test_no_binary_strings(self): # b2a_ must not accept strings @@ -190,6 +224,10 @@ return array.array('B', list(s)) +class BytearrayBinASCIITest(BinASCIITest): + type2test = bytearray + + class MemoryviewBinASCIITest(BinASCIITest): type2test = memoryview @@ -197,6 +235,7 @@ def test_main(): support.run_unittest(BinASCIITest, ArrayBinASCIITest, + BytearrayBinASCIITest, MemoryviewBinASCIITest) if __name__ == "__main__": Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Sat Jan 16 18:55:52 2010 @@ -213,6 +213,9 @@ Library ------- +- Issue #7703: Add support for the new buffer API to `binascii.a2bhqx`. + Patch by Florent Xicluna, along with some additional tests. + - Issue #7701: Fix crash in binascii.b2a_uu() in debug mode when given a 1-byte argument. Patch by Victor Stinner. Modified: python/branches/py3k/Modules/binascii.c ============================================================================== --- python/branches/py3k/Modules/binascii.c (original) +++ python/branches/py3k/Modules/binascii.c Sat Jan 16 18:55:52 2010 @@ -537,6 +537,7 @@ static PyObject * binascii_a2b_hqx(PyObject *self, PyObject *args) { + Py_buffer pascii; unsigned char *ascii_data, *bin_data; int leftbits = 0; unsigned char this_ch; @@ -545,19 +546,26 @@ Py_ssize_t len; int done = 0; - if ( !PyArg_ParseTuple(args, "t#:a2b_hqx", &ascii_data, &len) ) + if ( !PyArg_ParseTuple(args, "s*:a2b_hqx", &pascii) ) return NULL; + ascii_data = pascii.buf; + len = pascii.len; assert(len >= 0); - if (len > PY_SSIZE_T_MAX - 2) + if (len > PY_SSIZE_T_MAX - 2) { + PyBuffer_Release(&pascii); return PyErr_NoMemory(); + } /* Allocate a string that is too big (fixed later) Add two to the initial length to prevent interning which would preclude subsequent resizing. */ if ( (rv=PyBytes_FromStringAndSize(NULL, len+2)) == NULL ) + if ( (rv=PyBytes_FromStringAndSize(NULL, len+2)) == NULL ) { + PyBuffer_Release(&pascii); return NULL; + } bin_data = (unsigned char *)PyBytes_AS_STRING(rv); for( ; len > 0 ; len--, ascii_data++ ) { @@ -567,6 +575,7 @@ continue; if ( this_ch == FAIL ) { PyErr_SetString(Error, "Illegal char"); + PyBuffer_Release(&pascii); Py_DECREF(rv); return NULL; } @@ -589,6 +598,7 @@ if ( leftbits && !done ) { PyErr_SetString(Incomplete, "String has incomplete number of bytes"); + PyBuffer_Release(&pascii); Py_DECREF(rv); return NULL; } @@ -600,10 +610,12 @@ } if (rv) { PyObject *rrv = Py_BuildValue("Oi", rv, done); + PyBuffer_Release(&pascii); Py_DECREF(rv); return rrv; } + PyBuffer_Release(&pascii); return NULL; } From python-checkins at python.org Sat Jan 16 18:57:49 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 16 Jan 2010 17:57:49 -0000 Subject: [Python-checkins] r77530 - in python/trunk: Lib/test/test_strtod.py Python/dtoa.c Message-ID: Author: mark.dickinson Date: Sat Jan 16 18:57:49 2010 New Revision: 77530 Log: Issue #7632: Fix one more case of incorrect rounding for str -> float conversion (see bug 5 in the issue tracker). Modified: python/trunk/Lib/test/test_strtod.py python/trunk/Python/dtoa.c Modified: python/trunk/Lib/test/test_strtod.py ============================================================================== --- python/trunk/Lib/test/test_strtod.py (original) +++ python/trunk/Lib/test/test_strtod.py Sat Jan 16 18:57:49 2010 @@ -123,10 +123,6 @@ digits = m * 5**-e exponent = e s = '{}e{}'.format(digits, exponent) - - # for the moment, ignore errors from trailing zeros - if digits % 10 == 0: - continue self.check_strtod(s) # get expected answer via struct, to triple check @@ -175,7 +171,8 @@ self.check_strtod(s) def test_parsing(self): - digits = tuple(map(str, xrange(10))) + # make '0' more likely to be chosen than other digits + digits = '000000123456789' signs = ('+', '-', '') # put together random short valid strings @@ -257,7 +254,7 @@ '247032822920623295e-341', # issue 7632 bug 5: the following 2 strings convert differently '1000000000000000000000000000000000000000e-16', - #'10000000000000000000000000000000000000000e-17', + '10000000000000000000000000000000000000000e-17', # issue 7632 bug 8: the following produced 10.0 '10.900000000000000012345678912345678912345', ] Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Sat Jan 16 18:57:49 2010 @@ -1381,12 +1381,8 @@ goto ret; } s0 = s; - y = z = 0; for(nd = nf = 0; (c = *s) >= '0' && c <= '9'; nd++, s++) - if (nd < 9) - y = 10*y + c - '0'; - else if (nd < 16) - z = 10*z + c - '0'; + ; nd0 = nd; if (c == '.') { c = *++s; @@ -1406,15 +1402,7 @@ nz++; if (c -= '0') { nf += nz; - for(i = 1; i < nz; i++) - if (nd++ < 9) - y *= 10; - else if (nd <= DBL_DIG + 1) - z *= 10; - if (nd++ < 9) - y = 10*y + c; - else if (nd <= DBL_DIG + 1) - z = 10*z + c; + nd += nz; nz = 0; } } @@ -1465,32 +1453,59 @@ } goto ret; } - bc.e0 = e1 = e -= nf; + e -= nf; + if (!nd0) + nd0 = nd; + + /* strip trailing zeros */ + for (i = nd; i > 0; ) { + /* scan back until we hit a nonzero digit. significant digit 'i' + is s0[i] if i < nd0, s0[i+1] if i >= nd0. */ + --i; + if (s0[i < nd0 ? i : i+1] != '0') { + ++i; + break; + } + } + e += nd - i; + nd = i; + if (nd0 > nd) + nd0 = nd; /* Now we have nd0 digits, starting at s0, followed by a * decimal point, followed by nd-nd0 digits. The number we're * after is the integer represented by those digits times * 10**e */ - if (!nd0) - nd0 = nd; + bc.e0 = e1 = e; /* Summary of parsing results. The parsing stage gives values - * s0, nd0, nd, e, y and z such that: + * s0, nd0, nd, e, sign, where: * - * - nd >= nd0 >= 1 + * - s0 points to the first significant digit of the input string s00; * - * - the nd significant digits are in s0[0:nd0] and s0[nd0+1:nd+1] - * (using the usual Python half-open slice notation) + * - nd is the total number of significant digits (here, and + * below, 'significant digits' means the set of digits of the + * significand of the input that remain after ignoring leading + * and trailing zeros. * - * - the absolute value of the number represented by the original input - * string is n * 10**e, where n is the integer represented by the - * concatenation of s0[0:nd0] and s0[nd0+1:nd+1] + * - nd0 indicates the position of the decimal point (if + * present): so the nd significant digits are in s0[0:nd0] and + * s0[nd0+1:nd+1] using the usual Python half-open slice + * notation. (If nd0 < nd, then s0[nd0] necessarily contains + * a '.' character; if nd0 == nd, then it could be anything.) * - * - the first significant digit is nonzero + * - e is the adjusted exponent: the absolute value of the number + * represented by the original input string is n * 10**e, where + * n is the integer represented by the concatenation of + * s0[0:nd0] and s0[nd0+1:nd+1] * - * - the last significant digit may or may not be nonzero; (some code - * currently assumes that it's nonzero; this is a bug) + * - sign gives the sign of the input: 1 for negative, 0 for positive + * + * - the first and last significant digits are nonzero + */ + + /* put first DBL_DIG+1 digits into integer y and z. * * - y contains the value represented by the first min(9, nd) * significant digits @@ -1500,6 +1515,16 @@ * gives the value represented by the first min(16, nd) sig. digits. */ + y = z = 0; + for (i = 0; i < nd; i++) { + if (i < 9) + y = 10*y + s0[i < nd0 ? i : i+1] - '0'; + else if (i < DBL_DIG+1) + z = 10*z + s0[i < nd0 ? i : i+1] - '0'; + else + break; + } + k = nd < DBL_DIG + 1 ? nd : DBL_DIG + 1; dval(&rv) = y; if (k > 9) { From python-checkins at python.org Sat Jan 16 19:02:16 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 16 Jan 2010 18:02:16 -0000 Subject: [Python-checkins] r77531 - in tracker/instances/python-dev: extensions/openid_login.py html/page.html html/user.item.html html/user.openid.html lib lib/openid.py schema.py Message-ID: Author: martin.v.loewis Date: Sat Jan 16 19:02:15 2010 New Revision: 77531 Log: Add OpenID support. Added: tracker/instances/python-dev/extensions/openid_login.py (contents, props changed) tracker/instances/python-dev/html/user.openid.html - copied, changed from r77383, /tracker/instances/python-dev/html/user.register.html tracker/instances/python-dev/lib/ tracker/instances/python-dev/lib/openid.py (contents, props changed) Modified: tracker/instances/python-dev/html/page.html tracker/instances/python-dev/html/user.item.html tracker/instances/python-dev/schema.py Added: tracker/instances/python-dev/extensions/openid_login.py ============================================================================== --- (empty file) +++ tracker/instances/python-dev/extensions/openid_login.py Sat Jan 16 19:02:15 2010 @@ -0,0 +1,283 @@ +import openid, urllib, cgi, collections, calendar, time +from roundup.cgi.actions import Action, LoginAction, RegisterAction +from roundup.cgi.exceptions import * +from roundup import date, password + +good_providers = ['Google', 'myOpenID', 'Launchpad'] +providers = {} +for p in openid.providers: + if p[0] not in good_providers: continue + providers[p[0]] = p + +class Openid: + 'Helper class for OpenID' + + # Session management: Recycle expired session objects + def get_session(self, provider, discovered=None): + sessions = self.db.openid_session.filter(None, {'provider_id':provider}) + for session_id in sessions: + # Match may not have been exact + if self.db.openid_session.get(session_id, 'provider_id') != provider: + continue + expires = self.db.openid_session.get(session_id, 'expires') + if discovered and discovered[1] != self.db.openid_session.get(session_id, 'url'): + # User has changed provider; don't reuse session + break + elif expires > date.Date('.')+date.Interval("1:00"): + # valid for another hour + return self.db.openid_session.getnode(session_id) + elif expores < date.Date('.')-date.Interval("1d"): + # expired more than one day ago + break + else: + session_id = None + # need to create new session + if discovered: + stypes, url, op_local = discovered + else: + stypes, url, op_local = openid.discover(provider) + now = date.Date('.') + session_data = openid.associate(stypes, url) + if session_id: + session = self.db.openid_session.getnode(session_id) + session.assoc_handle = session_data['assoc_handle'] + else: + session_id = self.db.openid_session.create(assoc_handle=session_data['assoc_handle']) + session = self.db.openid_session.getnode(session_id) + session.provider_id = provider + session.url = url + session.stypes = " ".join(stypes) + session.mac_key = session_data['mac_key'] + session.expires = now + date.Interval(int(session_data['expires_in'])) + self.db.commit() + return session + +class OpenidLogin(LoginAction, Openid): + 'Extended versoin of LoginAction, supporting OpenID identifiers in username field.' + def handle(self): + if 'openid_identifier' in self.form: + username = self.form['openid_identifier'].value + # copy into __login_name for call to base action + self.form.value.append(cgi.MiniFieldStorage('__login_name', username)) + else: + # Let base action raise the exception + return LoginAction.handle(self) + if '__login_password' in self.form and self.form['__login_password'].value: + # assume standard login if password provided + return LoginAction.handle(self) + try: + self.db.user.lookup(username) + except KeyError: + # not a user name - it must be an openid + pass + else: + return LoginAction.handle(self) + # Login an OpenID + type, claimed = openid.normalize_uri(username) + if type == 'xri': + raise ValueError, "XRIs are not supported" + stypes, url, op_local = discovered = openid.discover(claimed) + session = self.get_session(claimed, discovered) # one session per claimed id + realm = self.base+"?@action=openid_return" + return_to = realm + "&__came_from=%s" % urllib.quote(self.client.path) + url = openid.request_authentication(session.stypes, session.url, + session.assoc_handle, return_to, realm=realm, + claimed=claimed, op_local=op_local) + raise Redirect, url + + +class OpenidProviderLogin(Action, Openid): + 'Login action with provider-guided login' + def handle(self): + if 'provider' not in self.form: + self.client.error_message.append(self._('Provider name required')) + return + provider = self.form['provider'].value + if provider not in providers: + self.client.error_message.append(self._('Unsupported provider')) + return + provider_id = providers[provider][2] + session = self.get_session(provider_id) + realm = self.base+"?@action=openid_return" + return_to = realm + "&__came_from=%s" % urllib.quote(self.client.path) + url = openid.request_authentication(session.stypes, session.url, + session.assoc_handle, return_to, realm=realm) + raise Redirect, url + +class OpenidReturn(Action): + def handle(self): + # parse again to get cgi kind of result + query = cgi.parse_qs(self.client.env['QUERY_STRING']) + if 'openid.identity' not in query: + return self.rp_discovery() + if 'openid.response_nonce' in query: + nonce = query['openid.response_nonce'][0] + stamp = openid.parse_nonce(nonce) + utc = calendar.timegm(stamp.utctimetuple()) + if utc < time.time()-3600: + # Old nonce + raise ValueError, "Replay detected" + try: + self.db.openid_nonce.lookup(nonce) + except KeyError: + pass + else: + raise ValueError, "Replay detected" + # Consume nonce; reuse expired nonces + old = self.db.openid_nonce.filter(None, {'created':';.-1d'}) + stamp = date.Date(stamp) + if old: + self.db.openid_nonce.set(old[0], created=stamp, nonce=nonce) + else: + self.db.openid_nonce.create(created=stamp, nonce=nonce) + self.db.commit() + handle = query['openid.assoc_handle'][0] + try: + session = self.db.openid_session.lookup(handle) + except KeyError: + raise ValueError, 'Not authenticated (no session)' + session = self.db.openid_session.getnode(session[0]) + try: + signed = openid.authenticate(session, query) + except Exception, e: + raise ValueError, "Authentication failed: "+repr(e) + if 'openid.claimed_id' in query: + if 'claimed_id' not in signed: + raise ValueError, 'Incomplete signature' + claimed = query['openid.claimed_id'][0] + else: + # OpenID 1, claimed ID not reported - should set cookie + if 'identity' not in signed: + raise ValueError, 'Incomplete signature' + claimed = query['openid.identity'][0] + if self.user != 'anonymous': + # Existing user claims OpenID + + # ID must be currently unassigned + if self.db.user.filter(None, {'openids':claimed}): + raise ValueError, 'OpenID already claimed' + openids = self.db.user.get(self.userid, 'openids') + if openids: + openids += ' ' + else: + openids = '' + openids += claimed + self.db.user.set(self.userid, openids=openids) + self.db.commit() + raise Redirect, '%suser%s' % (self.base, self.userid) + + # Check whether this is a successful login + user = self.db.user.filter(None, {'openids':claimed}) + if user: + # there should be only one user with that ID + assert len(user)==1 + self.client.userid = user[0] + self.client.user = self.db.user.get(self.client.userid, 'username') + # From LoginAction.verifyLogin + if not self.hasPermission("Web Access"): + raise exceptions.LoginError, self._( + "You do not have permission to login") + # From LoginAction.handle + self.client.opendb(self.client.user) + self.client.session_api.set(user=self.client.user) + if self.form.has_key('remember'): + self.client.session_api.update(set_cookie=True, expire=24*3600*365) + if self.form.has_key('__came_from'): + raise Redirect, self.form['__came_from'].value + return + + # New user, bring up registration form + self.client.classname = 'user' + self.client.nodeid = None + self.client.template = 'openid' + openid_fields = [] + for key in self.form: + if key.startswith('openid'): + openid_fields.append((key, self.form.getfirst(key))) + pt = self.client.instance.templates.get('user', 'openid') + username = openid.get_username(query) + realname = None + if username: + if isinstance(username, tuple): + realname = ' '.join(username) + username = '.'.join(username) + username = username.replace(' ','.') + result = pt.render(self.client, None, None, + realname=realname, + username=username, + email=openid.get_email(query), + claimed=claimed, + openid_fields=openid_fields) + self.client.additional_headers['Content-Type'] = pt.content_type + return result + +class OpenidDelete(Action): + def handle(self): + if not self.form.has_key('openid'): + self.client.error_message.append('OpenID required') + return + ID = self.form['openid'].value + openids = self.db.user.get(self.userid, 'openids') + if openids: + openids = openids.split() + else: + openids = [] + if ID not in openids: + raise ValueError, "You don't own this ID" + openids.remove(ID) + self.db.user.set(self.userid, openids=' '.join(openids)) + self.db.commit() + +class OpenidRegister(RegisterAction): + def handle(self): + query = collections.defaultdict(list) + if 'openid.identity' not in self.form: + raise ValueError, "OpenID fields missing" + try: + handle = self.form['openid.assoc_handle'].value + session = self.db.openid_session.lookup(handle) + session = self.db.openid_session.getnode(session[0]) + except Exception, e: + raise ValueError, "Not authenticated (no session): "+str(e) + # re-authenticate fields + for key in self.form: + if key.startswith("openid"): + query[key].append(self.form[key].value) + try: + signed = openid.authenticate(session, query) + except Exception, e: + raise + raise ValueError, "Authentication failed: "+repr(e) + if 'openid.claimed_id' in query: + if 'claimed_id' not in signed: + raise ValueError, 'Incomplete signature' + claimed = query['openid.claimed_id'][0] + else: + # OpenID 1, claimed ID not reported - should set cookie + if 'identity' not in signed: + raise ValueError, 'Incomplete signature' + claimed = query['openid.identity'][0] + + # OpenID signature is still authentic, now pass it on to the base + # register method; also fake password + self.form.value.append(cgi.MiniFieldStorage('openids', claimed)) + pwd = password.generatePassword() + self.form.value.append(cgi.MiniFieldStorage('password', pwd)) + self.form.value.append(cgi.MiniFieldStorage('@confirm at password', pwd)) + return RegisterAction.handle(self) + +def openid_links(request): + res = [] + for prov, icon, url in providers.values(): + res.append({'href':request.env['PATH_INFO']+'?@action=openid_login&provider='+prov, + 'src':icon, + 'title':prov}) + return res + +def init(instance): + instance.registerAction('login', OpenidLogin) # override standard login action + instance.registerAction('openid_login', OpenidProviderLogin) + instance.registerAction('openid_return', OpenidReturn) + instance.registerAction('openid_delete', OpenidDelete) + instance.registerAction('openid_register', OpenidRegister) + instance.registerUtil('openid_links', openid_links) Modified: tracker/instances/python-dev/html/page.html ============================================================================== --- tracker/instances/python-dev/html/page.html (original) +++ tracker/instances/python-dev/html/page.html Sat Jan 16 19:02:15 2010 @@ -133,8 +133,11 @@
    • - Login
      -
      + Login(OpenID possible)
      + + + +

      Modified: tracker/instances/python-dev/html/user.item.html ============================================================================== --- tracker/instances/python-dev/html/user.item.html (original) +++ tracker/instances/python-dev/html/user.item.html Sat Jan 16 19:02:15 2010 @@ -155,6 +155,30 @@
    • + + + + + +
      OpenIDs
      +
      + + + +
      +
      + +

      +

      + + + + + + +
      +

      + Copied: tracker/instances/python-dev/html/user.openid.html (from r77383, /tracker/instances/python-dev/html/user.register.html) ============================================================================== --- /tracker/instances/python-dev/html/user.register.html (original) +++ tracker/instances/python-dev/html/user.openid.html Sat Jan 16 19:02:15 2010 @@ -1,7 +1,7 @@ Registering with <span i18n:name="tracker" - tal:replace="db/config/TRACKER_NAME" /> + tal:replace="db/config/TRACKER_NAME" /> using OpenID Registering with @@ -18,30 +18,28 @@ enctype="multipart/form-data" tal:attributes="action context/designator"> +
      - + - + - - - - - - + + @@ -54,7 +52,7 @@ - + @@ -66,7 +64,7 @@ Added: tracker/instances/python-dev/lib/openid.py ============================================================================== --- (empty file) +++ tracker/instances/python-dev/lib/openid.py Sat Jan 16 19:02:15 2010 @@ -0,0 +1,675 @@ +# -*- coding: utf-8 -*- +# OpenID relying party library +# Copyright Martin v. L?wis, 2009 +# Licensed under the Academic Free License, version 3 + +# This library implements OpenID Authentication 2.0, +# in the role of a relying party +# It has the following assumptions and limitations: +# - service discovery requires YADIS (HTML discovery not implemented) +# - only provider-directed mode (identifier_select) is supported +# - direct requests require https +# - as a signature algorithm, HMAC-SHA1 is requested + +import urlparse, urllib, httplib, BeautifulSoup, xml.etree.ElementTree +import cStringIO, base64, hmac, sha, datetime, re, binascii, struct +import itertools + +# Importing M2Crypto patches urllib; don't let them do that +orig = urllib.URLopener.open_https.im_func +from M2Crypto import DH +urllib.URLopener.open_https = orig + +# Don't use urllib2, since it breaks in 2.5 +# for https://login.launchpad.net//+xrds + +# Don't use urllib, since it sometimes selects HTTP/1.1 (e.g. in PyPI) +# and then fails to parse chunked responses. + +def normalize_uri(uri): + """Normalize an uri according to OpenID section 7.2. Return a pair + type,value, where type can be either 'xri' or 'uri'.""" + + # 7.2 Normalization + if uri.startswith('xri://'): + uri = uri[6:] + if uri[0] in ("=", "@", "+", "$", "!", ")"): + return 'xri', uri + if not uri.startswith('http'): + uri = 'http://' + uri + # RFC 3986, section 6 + + # 6.2.2.1 case normalization + parts = urlparse.urlparse(uri) # already lower-cases scheme + if '@' in parts.netloc: + userinfo,hostname = parts.netloc.rsplit('@', 1) + else: + userinfo,hostname = None,parts.netloc + if ':' in hostname: + host,port = hostname.rsplit(':', 1) + if ']' in port: + # IPv6 + host,port = hostname,None + else: + host,port = hostname,None + netloc = hostname = host.lower() + if port: + netloc = hostname = host+':'+port + if userinfo: + netloc = userinfo + '@' + hostname + parts = list(parts) + parts[1] = netloc + uri = urlparse.urlunparse(parts) + + # 6.2.2.2. normalize case in % escapes + # XXX should restrict search to parts that can be pct-encoded + for match in re.findall('%[0-9a-fA-F][0-9a-fA-F]', uri): + m2 = match.upper() + if m2 != match: + uri = uri.replace(match, m2) + + # 6.2.2.3 remove dot segments + parts = urlparse.urlparse(uri) + path = parts.path + newpath = '' + while path: + if path.startswith('../'): + path = path[3:] + elif path.startswith('./'): + path = path[2:] + elif path.startswith('/./'): + newpath += '/'; path = path[3:] + elif path == '/.': + newpath += '/'; path = '' + elif path.startswith('/../'): + newpath = newpath.rsplit('/', 1)[0] + path = path[3:] # leave / + elif path == '/..': + newpath = newpath.rsplit('/', 1)[0] + path = '/' + elif path == '.' or path=='..': + path = '' + else: + pos = path.find('/', 1) + if pos == -1: + pos = len(path) + newpath += path[:pos] + path = path[pos:] + parts = list(parts) + parts[2] = newpath + uri = urlparse.urlunparse(parts) + + # 6.2.3 scheme based normalization + + # XXX port normalization doesn't support a standalone : + # (e.g. http://www.python.org:/) + parts = urlparse.urlparse(uri) + netloc = parts.netloc + if parts.scheme == 'http' and parts.port == 80: + netloc = parts.netloc[:-3] + if parts.scheme == 'https' and parts.port == 443: + netloc = parts.netloc[:-4] + # other default ports not considered here + + path = parts.path + if parts.scheme in ('http', 'https') and parts.path=='': + path = '/' + + # 6.2.5 protocol-based normalization not done, as it + # is not appropriate to resolve the URL just for normalization + # it seems like a bug in the OpenID spec that it doesn't specify + # which normalizations exactly should be performed + + parts = list(parts) + parts[1] = netloc + parts[2] = path + return 'uri', urlparse.urlunparse(parts) + + +def parse_response(s): + '''Parse a key-value form (OpenID section 4.1.1) into a dictionary''' + res = {} + for line in s.splitlines(): + k,v = line.split(':', 1) + res[k] = v + return res + +def discover(url): + '''Perform service discovery on the OP URL. + Return list of service types, and the auth/2.0 URL, + or None if discovery fails.''' + scheme, netloc, path, query, fragment = urlparse.urlsplit(url) + assert not fragment + if scheme == 'https': + conn = httplib.HTTPSConnection(netloc) + elif scheme == 'http': + conn = httplib.HTTPConnection(netloc) + else: + raise ValueError, "Unsupported scheme "+scheme + # conn.set_debuglevel(1) + if query: + path += '?'+query + # httplib in 2.5 incorrectly sends https port in Host + # header even if it is 443 + conn.putrequest("GET", path, skip_host=1) + conn.putheader('Host', netloc) + conn.putheader('Accept', "text/html; q=0.3, "+ + "application/xhtml+xml; q=0.5, "+ + "application/xrds+xml") + conn.endheaders() + + res = conn.getresponse() + data = res.read() + conn.close() + + content_type = res.msg.gettype() + + # Yadis 6.2.5 option 2 and 3: header includes x-xrds-location + xrds_loc = res.msg.get('x-xrds-location') + if xrds_loc and content_type != 'application/xrds+xml': + return discover(xrds_loc) + + if content_type == 'text/html': + soup = BeautifulSoup.BeautifulSoup(data) + # Yadis 6.2.5 option 1: meta tag + meta = soup.find('meta', {'http-equiv':lambda v:v and v.lower()=='x-xrds-location'}) + if meta: + xrds_loc = meta['content'] + return discover(xrds_loc) + # OpenID 7.3.3: attempt html based discovery + op_endpoint = soup.find('link', {'rel':lambda v:v and 'openid2.provider' in v.lower()}) + if op_endpoint: + op_endpoint = op_endpoint['href'] + op_local = soup.find('link', {'rel':lambda v:v and 'openid2.local_id' in v.lower()}) + if op_local: + op_local = op_local['href'] + else: + op_local = None + return ['http://specs.openid.net/auth/2.0/signon'], op_endpoint, op_local + # 14.2.1: 1.1 compatibility + op_endpoint = soup.find('link', {'rel':lambda v:v and 'openid.server' in v.lower()}) + if op_endpoint: + op_local = soup.find('link', {'rel':lambda v:v and 'openid.delegate' in v.lower()}) + if op_local: + op_local = op_local['href'] + else: + op_local = None + return ['http://openid.net/signon/1.1'], op_endpoint, op_local + # Discovery failed + return None + + if content_type == 'application/xrds+xml': + # Yadis 6.2.5 option 4 + doc = xml.etree.ElementTree.fromstring(data) + for svc in doc.findall(".//{xri://$xrd*($v*2.0)}Service"): + services = [x.text for x in svc.findall("{xri://$xrd*($v*2.0)}Type")] + if 'http://specs.openid.net/auth/2.0/server' in services: + # 7.3.2.1.1 OP Identifier Element + uri = svc.find("{xri://$xrd*($v*2.0)}URI") + if uri is not None: + op_local = None + op_endpoint = uri.text + break + elif 'http://specs.openid.net/auth/2.0/signon' in services: + # 7.3.2.1.2. Claimed Identifier Element + op_local = svc.find("{xri://$xrd*($v*2.0)}LocalID") + if op_local is not None: + op_local = op_local.text + uri = svc.find("{xri://$xrd*($v*2.0)}URI") + if uri is not None: + op_endpoint = uri.text + break + elif 'http://openid.net/server/1.0' in services or \ + 'http://openid.net/server/1.1' in services or \ + 'http://openid.net/signon/1.0' in services or \ + 'http://openid.net/signon/1.1' in services: + # 14.2.1 says we also need to check for the 1.x types; + # XXX should check 1.x only if no 2.0 service is found + op_local = svc.find("{http://openid.net/xmlns/1.0}Delegate") + if op_local is not None: + op_local = op_local.text + uri = svc.find("{xri://$xrd*($v*2.0)}URI") + if uri is not None: + op_endpoint = uri.text + break + else: + return None # No OpenID 2.0 service found + return services, op_endpoint, op_local + +def is_compat_1x(services): + for uri in ('http://specs.openid.net/auth/2.0/signon', + 'http://specs.openid.net/auth/2.0/server'): + if uri in services: + return False + for uri in ('http://openid.net/signon/1.0', + 'http://openid.net/signon/1.1', + 'http://openid.net/server/1.0', + 'http://openid.net/server/1.1'): + if uri in services: + return True + raise ValueError, "Neither 1.x nor 2.0 service found" + +def is_op_endpoint(services): + for uri in ('http://specs.openid.net/auth/2.0/server', + 'http://openid.net/server/1.0', + 'http://openid.net/server/1.1'): + if uri in services: + return True + return False + +# OpenSSL MPI integer representation +def bin2mpi(bin): + if ord(bin[0]) >= 128: + # avoid interpretation as a negative number + bin = "\x00" + bin + return struct.pack(">i", len(bin))+bin +def mpi2bin(mpi): + assert len(mpi)-4 == struct.unpack(">i", mpi[:4])[0] + return mpi[4:] + +# Appendix B; DH default prime +dh_prime = """ +DCF93A0B883972EC0E19989AC5A2CE310E1D37717E8D9571BB7623731866E61E +F75A2E27898B057F9891C2E27A639C3F29B60814581CD3B2CA3986D268370557 +7D45C2E7E52DC81C7A171876E5CEA74B1448BFDFAF18828EFD2519F14E45E382 +6634AF1949E5B535CC829A483B8A76223E5D490A257F05BDFF16F2FB22C583AB +""" +dh_prime = binascii.unhexlify("".join(dh_prime.split())) +# OpenSSL MPI representation: dh_prime, 2 +dh = DH.set_params(bin2mpi(dh_prime), '\x00\x00\x00\x01\x02') +dh.gen_key() +dh_public_base64 = base64.b64encode(mpi2bin(dh.pub)) + +def string_xor(s1, s2): + res = [] + for c1, c2 in itertools.izip(s1, s2): + res.append(chr(ord(c1) ^ ord(c2))) + return ''.join(res) + +def associate(services, url): + '''Create an association (OpenID section 8) between RP and OP. + Return response as a dictionary.''' + data = { + 'openid.ns':"http://specs.openid.net/auth/2.0", + 'openid.mode':"associate", + 'openid.assoc_type':"HMAC-SHA1", + 'openid.session_type':"no-encryption", + } + if url.startswith('http:'): + # Use DH exchange + data['openid.session_type'] = "DH-SHA1" + # No need to send key and generator + data['openid.dh_consumer_public'] = dh_public_base64 + if is_compat_1x(services): + # 14.2.1: clear session_type in 1.1 compatibility mode + data['openid.session_type'] = '' + res = urllib.urlopen(url, urllib.urlencode(data)) + data = parse_response(res.read()) + if url.startswith('http:'): + enc_mac_key = base64.b64decode(data['enc_mac_key']) + dh_server_public = base64.b64decode(data['dh_server_public']) + # compute_key does not return an MPI + shared_secret = dh.compute_key(bin2mpi(dh_server_public)) + if ord(shared_secret[0]) >= 128: + # btwoc: add leading zero if number would otherwise be negative + shared_secret = '\x00' + shared_secret + shared_secret = sha.new(shared_secret).digest() + if len(shared_secret) != len(enc_mac_key): + raise ValueError, "incorrect DH key size" + # Fake mac_key result + data['mac_key'] = base64.b64encode(string_xor(enc_mac_key, shared_secret)) + return data + +def request_authentication(services, url, assoc_handle, return_to, + claimed=None, op_local=None, realm=None): + '''Request authentication (OpenID section 9). + services is the list of discovered service types, + url the OP service URL, assoc_handle the established session + dictionary, and return_to the return URL. + + The return_to URL will also be passed as realm, and the + OP may perform RP discovery on it; always request these + data through SREG 1.0 as well. + + If AX or SREG 1.1 are supported, request email address, + first/last name, or nickname. + + Return the URL that the browser should be redirected to.''' + + if is_op_endpoint(services): + # claimed is an OP identifier + claimed = op_local = None + + if claimed is None: + claimed = "http://specs.openid.net/auth/2.0/identifier_select" + if op_local is None: + op_local = "http://specs.openid.net/auth/2.0/identifier_select" + if realm is None: + realm = return_to + data = { + 'openid.ns':"http://specs.openid.net/auth/2.0", + 'openid.mode':"checkid_setup", + 'openid.assoc_handle':assoc_handle, + 'openid.return_to':return_to, + 'openid.claimed_id':claimed, + 'openid.identity':op_local, + 'openid.realm':realm, + 'openid.ns.sreg':"http://openid.net/sreg/1.0", + 'openid.sreg.required':'nickname,email', + } + if is_compat_1x(services): + del data['openid.ns'] + del data['openid.claimed_id'] + del data['openid.realm'] + data['openid.trust_root'] = return_to + if "http://openid.net/srv/ax/1.0" in services: + data.update({ + 'openid.ns.ax':"http://openid.net/srv/ax/1.0", + 'openid.ax.mode':'fetch_request', + 'openid.ax.required':'email,first,last', + 'openid.ax.type.email':'http://axschema.org/contact/email', + 'openid.ax.type.first':"http://axschema.org/namePerson/first", + 'openid.ax.type.last':"http://axschema.org/namePerson/last", + }) + if "http://openid.net/extensions/sreg/1.1" in services: + data.update({ + 'openid.ns.sreg11':"http://openid.net/extensions/sreg/1.1", + 'openid.sreg11.required':'nickname,email' + }) + if '?' in url: + return url+'&'+urllib.urlencode(data) + else: + return url+"?"+urllib.urlencode(data) + +class NotAuthenticated(Exception): + pass + +def authenticate(session, response): + '''Process an authentication response. + session must be the established session (minimally including + assoc_handle and mac_key), response is the query string as parsed + by cgi.parse_qs. + If authentication succeeds, return the list of signed fields. + If the user was not authenticated, NotAuthenticated is raised. + If the HTTP request is invalid (missing parameters, failure to + validate signature), different exceptions will be raised, typically + ValueError. + + Callers must check openid.response_nonce for replay attacks. + ''' + + # 1.1 compat: openid.ns may not be sent + # if response['openid.ns'][0] != 'http://specs.openid.net/auth/2.0': + # raise ValueError('missing openid.ns') + if session['assoc_handle'] != response['openid.assoc_handle'][0]: + raise ValueError('incorrect session') + if response['openid.mode'][0] == 'cancel': + raise NotAuthenticated('provider did not authenticate user (cancelled)') + if response['openid.mode'][0] != 'id_res': + raise ValueError('invalid openid.mode') + if 'openid.identity' not in response: + raise ValueError('missing openid.identity') + + # Won't check nonce value - caller must verify this is not a replay + + signed = response['openid.signed'][0].split(',') + query = [] + for name in signed: + value = response['openid.'+name][0] + query.append('%s:%s\n' % (name, value)) + query = ''.join(query) + + mac_key = base64.decodestring(session['mac_key']) + transmitted_sig = base64.decodestring(response['openid.sig'][0]) + computed_sig = hmac.new(mac_key, query, sha).digest() + + if transmitted_sig != computed_sig: + raise ValueError('Invalid signature') + + # Check that all critical fields are signed. OpenID 2.0 says + # that in a positive assertion, op_endpoint, return_to, + # response_nonce and assoc_handle must be signed, and claimed_id + # and identity if present in the response. 1.1 compatibility + # says that response_nonce and op_endpoint may be missing. + # In addition, OpenID 1.1 providers apparently fail to sign + # assoc_handle often. + if response['openid.mode'][0] == 'id_res': + if 'return_to' not in signed or \ + ('openid.identity' in response and 'identity' not in signed) or \ + ('openid.claimed_id' in response and 'claimed_id' not in signed): + raise ValueError, "Critical field missing in signature" + + return signed + +def parse_nonce(nonce): + '''Split a nonce into a (timestamp, ID) pair''' + stamp = nonce.split('Z', 1)[0] + stamp = datetime.datetime.strptime(stamp,"%Y-%m-%dT%H:%M:%S") + return stamp + +def get_namespaces(resp): + res = {} + for k, v in resp.items(): + if k.startswith('openid.ns.'): + k = k.rsplit('.', 1)[1] + res[v[0]] = k + return res + +def get_ax(resp, ns, validated): + if "http://openid.net/srv/ax/1.0" not in ns: + return {} + ax = ns["http://openid.net/srv/ax/1.0"]+"." + oax = "openid."+ax + res = {} + for k, v in resp.items(): + if k.startswith(oax+"type."): + k = k.rsplit('.',1)[1] + value_name = oax+"value."+k + if ax+"value."+k not in validated: + continue + res[v[0]] = resp[value_name][0] + return res + + +def get_email(resp): + "Return the email address embedded response, or None." + + validated = resp['openid.signed'][0] + + # SREG 1.0; doesn't require namespace, as the protocol doesn't + # specify one + if 'openid.sreg.email' in resp and \ + 'sreg.email' in validated: + return resp['openid.sreg.email'][0] + + ns = get_namespaces(resp) + + ax = get_ax(resp, ns, validated) + if "http://axschema.org/contact/email" in ax: + return ax["http://axschema.org/contact/email"] + + # TODO: SREG 1.1 + return None + +def get_username(resp): + "Return either nickname or (first, last) or None." + + validated = resp['openid.signed'][0] + if 'openid.sreg.nickname' in resp and \ + 'sreg.nickname' in validated: + return resp['openid.sreg.nickname'][0] + + ns = get_namespaces(resp) + + ax = get_ax(resp, ns, validated) + if "http://axschema.org/namePerson/first" in ax and \ + "http://axschema.org/namePerson/last" in ax: + return (ax["http://axschema.org/namePerson/first"], + ax["http://axschema.org/namePerson/last"]) + + # TODO: SREG 1.1 + return + + +################ Test Server ################################# + +import BaseHTTPServer, cgi + +# supported providers +providers = ( + ('Google', 'http://www.google.com/favicon.ico', 'https://www.google.com/accounts/o8/id'), + ('Yahoo', 'http://www.yahoo.com/favicon.ico', 'http://yahoo.com/'), + # Verisigns service URL is not https + #('Verisign', 'https://pip.verisignlabs.com/favicon.ico', 'https://pip.verisignlabs.com') + ('myOpenID', 'https://www.myopenid.com/favicon.ico', 'https://www.myopenid.com/'), + ('Launchpad', 'https://login.launchpad.net/favicon.ico', 'https://login.launchpad.net/') + ) + +sessions = [] +class Handler(BaseHTTPServer.BaseHTTPRequestHandler): + + def write(self, payload, type): + self.send_response(200) + self.send_header("Content-type", type) + self.send_header("Content-length", str(len(payload))) + self.end_headers() + self.wfile.write(payload) + + def do_GET(self): + if self.path == '/': + return self.root() + path = self.path + i = path.rfind('?') + if i >= 0: + query = cgi.parse_qs(path[i+1:]) + path = path[:i] + else: + query = {} + if path == '/': + if 'provider' in query: + prov = [p for p in providers if p[0] == query['provider'][0]] + if len(prov) != 1: + return self.not_found() + prov = prov[0] + services, url, op_local = discover(prov[2]) + session = associate(services, url) + sessions.append(session) + self.send_response(307) # temporary redirect - do not cache + self.send_header("Location", request_authentication + (services, url, session['assoc_handle'], + self.base_url+"?returned=1")) + self.end_headers() + return + if 'claimed' in query: + kind, claimed = normalize_uri(query['claimed'][0]) + if kind == 'xri': + return self.error('XRI resolution not supported') + res = discover(claimed) + if res is None: + return self.error('Discovery failed') + services, url, op_local = res + session = associate(services, url) + sessions.append(session) + self.send_response(307) + self.send_header("Location", request_authentication + (services, url, session['assoc_handle'], + self.base_url+"?returned=1", + claimed, op_local)) + self.end_headers() + return + if 'returned' in query: + if 'openid.identity' not in query: + return self.rp_discovery() + handle = query['openid.assoc_handle'][0] + for session in sessions: + if session['assoc_handle'] == handle: + break + else: + session = None + if not session: + return self.error('Not authenticated (no session)') + try: + signed = authenticate(session, query) + except Exception, e: + self.error("Authentication failed: "+repr(e)) + return + if 'openid.claimed_id' in query: + if 'claimed_id' not in signed: + return self.error('Incomplete signature') + claimed = query['openid.claimed_id'][0] + else: + # OpenID 1, claimed ID not reported - should set cookie + if 'identity' not in signed: + return self.error('Incomplete signature') + claimed = query['openid.identity'][0] + payload = "Hello "+claimed+"\n" + email = get_email(query) + if email: + payload += 'Your email is '+email+"\n" + else: + payload += 'No email address is known\n' + username = get_username(query) + if isinstance(username, tuple): + username = " ".join(username) + if username: + payload += 'Your nickname is '+username+'\n' + else: + payload += 'No nickname is known\n' + return self.write(payload, "text/plain") + + return self.not_found() + + + + def debug(self, value): + payload = repr(value) + self.write(payload, "text/plain") + + def error(self, text): + self.write(text, "text/plain") + + def root(self): + payload = "OpenID login\n" + + for name, icon, provider in providers: + payload += "

      %s

      \n" % ( + self.base_url, name, icon, name) + payload += "Type your OpenID:\n" + payload += "" + self.write(payload, "text/html") + + def rp_discovery(self): + payload = ''' + + + http://specs.openid.net/auth/2.0/return_to + %s + + + + ''' % (self.base_url+"/?returned=1") + self.write(payload, 'application/xrds+xml') + + def not_found(self): + self.send_response(404) + self.end_headers() + +# OpenID providers often attempt relying-party discovery +# This requires the test server to use a globally valid URL +# If Python cannot correctly determine the base URL, you +# can pass it as command line argument +def test_server(): + import socket, sys + if len(sys.argv) > 1: + base_url = sys.argv[1] + else: + base_url = "http://" + socket.getfqdn() + ":8000/" + Handler.base_url = base_url + BaseHTTPServer.HTTPServer.address_family = socket.AF_INET6 + httpd = BaseHTTPServer.HTTPServer(('', 8000), Handler) + httpd.serve_forever() + +if __name__ == '__main__': + test_server() Modified: tracker/instances/python-dev/schema.py ============================================================================== --- tracker/instances/python-dev/schema.py (original) +++ tracker/instances/python-dev/schema.py Sat Jan 16 19:02:15 2010 @@ -1,4 +1,3 @@ - # # TRACKER SCHEMA # @@ -72,7 +71,6 @@ name=String(), description=String()) keyword.setkey("name") - # User-defined saved searches query = Class(db, "query", @@ -95,11 +93,27 @@ roles=String(), # comma-separated string of Role names timezone=String(), contrib_form=Boolean(), - contrib_form_date=Date()) + contrib_form_date=Date(), + openids=String(), # space separated list + ) user.setkey("username") db.security.addPermission(name='Register', klass='user', description='User is allowed to register new user') +openid_session = Class(db, 'openid_session', + provider_id=String(), # or user id + url=String(), + stypes=String(), # space-separated list of session types + assoc_handle=String(), + expires=Date(), + mac_key=String()) +openid_session.setkey('assoc_handle') + +openid_nonce = Class(db, 'openid_nonce', + created=Date(), + nonce=String()) +openid_nonce.setkey('nonce') + # FileClass automatically gets this property in addition to the Class ones: # content = String() [saved to disk in /db/files/] # type = String() [MIME type of the content, default 'text/plain'] @@ -373,4 +387,3 @@ # vim: set filetype=python sts=4 sw=4 et si : - From python-checkins at python.org Sat Jan 16 19:05:15 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sat, 16 Jan 2010 18:05:15 -0000 Subject: [Python-checkins] r77532 - in python/branches/release26-maint: Misc/NEWS Modules/_ctypes/libffi/fficonfig.py.in setup.py Message-ID: Author: antoine.pitrou Date: Sat Jan 16 19:05:15 2010 New Revision: 77532 Log: Merged revisions 77466 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77466 | antoine.pitrou | 2010-01-13 12:47:49 +0100 (mer., 13 janv. 2010) | 5 lines Issue #7661: Allow ctypes to be built from a non-ASCII directory path. Patch by Florent Xicluna. ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Misc/NEWS python/branches/release26-maint/Modules/_ctypes/libffi/fficonfig.py.in python/branches/release26-maint/setup.py Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Sat Jan 16 19:05:15 2010 @@ -167,6 +167,9 @@ Build ----- +- Issue #7661: Allow ctypes to be built from a non-ASCII directory path. + Patch by Florent Xicluna. + - Issue #7589: Only build the nis module when the correct header files are found. Modified: python/branches/release26-maint/Modules/_ctypes/libffi/fficonfig.py.in ============================================================================== --- python/branches/release26-maint/Modules/_ctypes/libffi/fficonfig.py.in (original) +++ python/branches/release26-maint/Modules/_ctypes/libffi/fficonfig.py.in Sat Jan 16 19:05:15 2010 @@ -28,8 +28,6 @@ 'PA_HPUX': ['src/pa/hpux32.S', 'src/pa/ffi.c'], } -ffi_srcdir = '@srcdir@' ffi_sources += ffi_platforms['@TARGET@'] -ffi_sources = [os.path.join('@srcdir@', f) for f in ffi_sources] ffi_cflags = '@CFLAGS@' Modified: python/branches/release26-maint/setup.py ============================================================================== --- python/branches/release26-maint/setup.py (original) +++ python/branches/release26-maint/setup.py Sat Jan 16 19:05:15 2010 @@ -814,7 +814,7 @@ print "being ignored (4.6.x must be >= 4.6.21)" continue - if ( (not db_ver_inc_map.has_key(db_ver)) and + if ( (db_ver not in db_ver_inc_map) and allow_db_ver(db_ver) ): # save the include directory with the db.h version # (first occurrence only) @@ -1712,17 +1712,18 @@ return False fficonfig = {} - execfile(ffi_configfile, globals(), fficonfig) - ffi_srcdir = os.path.join(fficonfig['ffi_srcdir'], 'src') + exec open(ffi_configfile) in fficonfig # Add .S (preprocessed assembly) to C compiler source extensions. self.compiler.src_extensions.append('.S') include_dirs = [os.path.join(ffi_builddir, 'include'), - ffi_builddir, ffi_srcdir] + ffi_builddir, + os.path.join(ffi_srcdir, 'src')] extra_compile_args = fficonfig['ffi_cflags'].split() - ext.sources.extend(fficonfig['ffi_sources']) + ext.sources.extend(os.path.join(ffi_srcdir, f) for f in + fficonfig['ffi_sources']) ext.include_dirs.extend(include_dirs) ext.extra_compile_args.extend(extra_compile_args) return True From python-checkins at python.org Sat Jan 16 19:06:17 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 16 Jan 2010 18:06:17 -0000 Subject: [Python-checkins] r77533 - python/trunk/Python/dtoa.c Message-ID: Author: mark.dickinson Date: Sat Jan 16 19:06:17 2010 New Revision: 77533 Log: Fix multiple uses of variable 'L' in _Py_dg_strtod, where one use requires an unsigned long and the other a signed long. See also r77421. Modified: python/trunk/Python/dtoa.c Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Sat Jan 16 19:06:17 2010 @@ -1345,7 +1345,8 @@ const char *s, *s0, *s1; double aadj, aadj1; U aadj2, adj, rv, rv0; - ULong y, z, L; + ULong y, z, abse; + Long L; BCinfo bc; Bigint *bb, *bb1, *bd, *bd0, *bs, *delta; @@ -1425,17 +1426,17 @@ while(c == '0') c = *++s; if (c > '0' && c <= '9') { - L = c - '0'; + abse = c - '0'; s1 = s; while((c = *++s) >= '0' && c <= '9') - L = 10*L + c - '0'; - if (s - s1 > 8 || L > MAX_ABS_EXP) + abse = 10*abse + c - '0'; + if (s - s1 > 8 || abse > MAX_ABS_EXP) /* Avoid confusion from exponents * so large that e might overflow. */ e = (int)MAX_ABS_EXP; /* safe for 16 bit ints */ else - e = (int)L; + e = (int)abse; if (esign) e = -e; } From python-checkins at python.org Sat Jan 16 19:08:05 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sat, 16 Jan 2010 18:08:05 -0000 Subject: [Python-checkins] r77534 - python/branches/release31-maint Message-ID: Author: antoine.pitrou Date: Sat Jan 16 19:08:04 2010 New Revision: 77534 Log: Blocked revisions 77468 via svnmerge ................ r77468 | antoine.pitrou | 2010-01-13 13:04:20 +0100 (mer., 13 janv. 2010) | 18 lines Note: I'm merging these changes out of consistency, but they don't seem to be needed in py3k (except perhaps for non-utf8 paths). Merged revisions 77466-77467 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77466 | antoine.pitrou | 2010-01-13 12:47:49 +0100 (mer., 13 janv. 2010) | 5 lines Issue #7661: Allow ctypes to be built from a non-ASCII directory path. Patch by Florent Xicluna. ........ r77467 | antoine.pitrou | 2010-01-13 12:57:42 +0100 (mer., 13 janv. 2010) | 3 lines Use `with` ........ ................ Modified: python/branches/release31-maint/ (props changed) From python-checkins at python.org Sat Jan 16 19:10:26 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 16 Jan 2010 18:10:26 -0000 Subject: [Python-checkins] r77535 - in python/branches/py3k: Lib/test/test_strtod.py Misc/NEWS Python/dtoa.c Message-ID: Author: mark.dickinson Date: Sat Jan 16 19:10:25 2010 New Revision: 77535 Log: Merged revisions 77519,77530,77533 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77519 | mark.dickinson | 2010-01-16 10:44:00 +0000 (Sat, 16 Jan 2010) | 5 lines Issue #7632: Fix a serious wrong output bug for string -> float conversion. Also remove some now unused variables, and add comments clarifying the possible outputs of the parsing section of _Py_dg_strtod. Thanks Eric Smith for reviewing. ........ r77530 | mark.dickinson | 2010-01-16 17:57:49 +0000 (Sat, 16 Jan 2010) | 3 lines Issue #7632: Fix one more case of incorrect rounding for str -> float conversion (see bug 5 in the issue tracker). ........ r77533 | mark.dickinson | 2010-01-16 18:06:17 +0000 (Sat, 16 Jan 2010) | 1 line Fix multiple uses of variable 'L' in _Py_dg_strtod, where one use requires an unsigned long and the other a signed long. See also r77421. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_strtod.py python/branches/py3k/Misc/NEWS python/branches/py3k/Python/dtoa.c Modified: python/branches/py3k/Lib/test/test_strtod.py ============================================================================== --- python/branches/py3k/Lib/test/test_strtod.py (original) +++ python/branches/py3k/Lib/test/test_strtod.py Sat Jan 16 19:10:25 2010 @@ -123,10 +123,6 @@ digits = m * 5**-e exponent = e s = '{}e{}'.format(digits, exponent) - - # for the moment, ignore errors from trailing zeros - if digits % 10 == 0: - continue self.check_strtod(s) # get expected answer via struct, to triple check @@ -175,7 +171,8 @@ self.check_strtod(s) def test_parsing(self): - digits = tuple(map(str, range(10))) + # make '0' more likely to be chosen than other digits + digits = '000000123456789' signs = ('+', '-', '') # put together random short valid strings @@ -257,7 +254,9 @@ '247032822920623295e-341', # issue 7632 bug 5: the following 2 strings convert differently '1000000000000000000000000000000000000000e-16', - #'10000000000000000000000000000000000000000e-17', + '10000000000000000000000000000000000000000e-17', + # issue 7632 bug 8: the following produced 10.0 + '10.900000000000000012345678912345678912345', ] for s in test_strings: self.check_strtod(s) Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Sat Jan 16 19:10:25 2010 @@ -16,10 +16,12 @@ methods of bytes, bytearray and unicode objects by using a common implementation based on stringlib's fast search. Patch by Florent Xicluna. -- Issue #7632: Fix a crash in dtoa.c that occurred in debug builds - when parsing certain long numeric strings corresponding to subnormal - values. Also fix a number of bugs in dtoa.c that could lead to - incorrectly rounded results when converting strings to floats. +- Issue #7632: Fix various str -> float conversion bugs present in 2.7 + alpha 2, including: (1) a serious 'wrong output' bug that could + occur for long (> 40 digit) input strings, (2) a crash in dtoa.c + that occurred in debug builds when parsing certain long numeric + strings corresponding to subnormal values, and (3) a number of flaws + that could lead to incorrectly rounded results. - The __complex__ method is now looked up on the class of instances to make it consistent with other special methods. Modified: python/branches/py3k/Python/dtoa.c ============================================================================== --- python/branches/py3k/Python/dtoa.c (original) +++ python/branches/py3k/Python/dtoa.c Sat Jan 16 19:10:25 2010 @@ -1340,16 +1340,17 @@ double _Py_dg_strtod(const char *s00, char **se) { - int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, dp0, dp1, dplen, e, e1, error; + int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, e, e1, error; int esign, i, j, k, nd, nd0, nf, nz, nz0, sign; const char *s, *s0, *s1; double aadj, aadj1; U aadj2, adj, rv, rv0; - ULong y, z, L; + ULong y, z, abse; + Long L; BCinfo bc; Bigint *bb, *bb1, *bd, *bd0, *bs, *delta; - sign = nz0 = nz = dplen = 0; + sign = nz0 = nz = 0; dval(&rv) = 0.; for(s = s00;;s++) switch(*s) { case '-': @@ -1381,18 +1382,11 @@ goto ret; } s0 = s; - y = z = 0; for(nd = nf = 0; (c = *s) >= '0' && c <= '9'; nd++, s++) - if (nd < 9) - y = 10*y + c - '0'; - else if (nd < 16) - z = 10*z + c - '0'; + ; nd0 = nd; - dp0 = dp1 = s - s0; if (c == '.') { c = *++s; - dp1 = s - s0; - dplen = 1; if (!nd) { for(; c == '0'; c = *++s) nz++; @@ -1409,15 +1403,7 @@ nz++; if (c -= '0') { nf += nz; - for(i = 1; i < nz; i++) - if (nd++ < 9) - y *= 10; - else if (nd <= DBL_DIG + 1) - z *= 10; - if (nd++ < 9) - y = 10*y + c; - else if (nd <= DBL_DIG + 1) - z = 10*z + c; + nd += nz; nz = 0; } } @@ -1440,17 +1426,17 @@ while(c == '0') c = *++s; if (c > '0' && c <= '9') { - L = c - '0'; + abse = c - '0'; s1 = s; while((c = *++s) >= '0' && c <= '9') - L = 10*L + c - '0'; - if (s - s1 > 8 || L > MAX_ABS_EXP) + abse = 10*abse + c - '0'; + if (s - s1 > 8 || abse > MAX_ABS_EXP) /* Avoid confusion from exponents * so large that e might overflow. */ e = (int)MAX_ABS_EXP; /* safe for 16 bit ints */ else - e = (int)L; + e = (int)abse; if (esign) e = -e; } @@ -1468,15 +1454,78 @@ } goto ret; } - bc.e0 = e1 = e -= nf; + e -= nf; + if (!nd0) + nd0 = nd; + + /* strip trailing zeros */ + for (i = nd; i > 0; ) { + /* scan back until we hit a nonzero digit. significant digit 'i' + is s0[i] if i < nd0, s0[i+1] if i >= nd0. */ + --i; + if (s0[i < nd0 ? i : i+1] != '0') { + ++i; + break; + } + } + e += nd - i; + nd = i; + if (nd0 > nd) + nd0 = nd; /* Now we have nd0 digits, starting at s0, followed by a * decimal point, followed by nd-nd0 digits. The number we're * after is the integer represented by those digits times * 10**e */ - if (!nd0) - nd0 = nd; + bc.e0 = e1 = e; + + /* Summary of parsing results. The parsing stage gives values + * s0, nd0, nd, e, sign, where: + * + * - s0 points to the first significant digit of the input string s00; + * + * - nd is the total number of significant digits (here, and + * below, 'significant digits' means the set of digits of the + * significand of the input that remain after ignoring leading + * and trailing zeros. + * + * - nd0 indicates the position of the decimal point (if + * present): so the nd significant digits are in s0[0:nd0] and + * s0[nd0+1:nd+1] using the usual Python half-open slice + * notation. (If nd0 < nd, then s0[nd0] necessarily contains + * a '.' character; if nd0 == nd, then it could be anything.) + * + * - e is the adjusted exponent: the absolute value of the number + * represented by the original input string is n * 10**e, where + * n is the integer represented by the concatenation of + * s0[0:nd0] and s0[nd0+1:nd+1] + * + * - sign gives the sign of the input: 1 for negative, 0 for positive + * + * - the first and last significant digits are nonzero + */ + + /* put first DBL_DIG+1 digits into integer y and z. + * + * - y contains the value represented by the first min(9, nd) + * significant digits + * + * - if nd > 9, z contains the value represented by significant digits + * with indices in [9, min(16, nd)). So y * 10**(min(16, nd) - 9) + z + * gives the value represented by the first min(16, nd) sig. digits. + */ + + y = z = 0; + for (i = 0; i < nd; i++) { + if (i < 9) + y = 10*y + s0[i < nd0 ? i : i+1] - '0'; + else if (i < DBL_DIG+1) + z = 10*z + s0[i < nd0 ? i : i+1] - '0'; + else + break; + } + k = nd < DBL_DIG + 1 ? nd : DBL_DIG + 1; dval(&rv) = y; if (k > 9) { @@ -1593,15 +1642,18 @@ /* ASSERT(STRTOD_DIGLIM >= 18); 18 == one more than the */ /* minimum number of decimal digits to distinguish double values */ /* in IEEE arithmetic. */ - i = j = 18; - if (i > nd0) - j += dplen; - for(;;) { - if (--j <= dp1 && j >= dp0) - j = dp0 - 1; - if (s0[j] != '0') - break; + + /* Truncate input to 18 significant digits, then discard any trailing + zeros on the result by updating nd, nd0, e and y suitably. (There's + no need to update z; it's not reused beyond this point.) */ + for (i = 18; i > 0; ) { + /* scan back until we hit a nonzero digit. significant digit 'i' + is s0[i] if i < nd0, s0[i+1] if i >= nd0. */ --i; + if (s0[i < nd0 ? i : i+1] != '0') { + ++i; + break; + } } e += nd - i; nd = i; @@ -1611,8 +1663,8 @@ y = 0; for(i = 0; i < nd0; ++i) y = 10*y + s0[i] - '0'; - for(j = dp1; i < nd; ++i) - y = 10*y + s0[j++] - '0'; + for(; i < nd; ++i) + y = 10*y + s0[i+1] - '0'; } } bd0 = s2b(s0, nd0, nd, y); From python-checkins at python.org Sat Jan 16 19:11:25 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 16 Jan 2010 18:11:25 -0000 Subject: [Python-checkins] r77536 - tracker/instances/python-dev/lib/openid.py Message-ID: Author: martin.v.loewis Date: Sat Jan 16 19:11:25 2010 New Revision: 77536 Log: Fix ElementTree usage for Python 2.4. Modified: tracker/instances/python-dev/lib/openid.py Modified: tracker/instances/python-dev/lib/openid.py ============================================================================== --- tracker/instances/python-dev/lib/openid.py (original) +++ tracker/instances/python-dev/lib/openid.py Sat Jan 16 19:11:25 2010 @@ -11,10 +11,15 @@ # - direct requests require https # - as a signature algorithm, HMAC-SHA1 is requested -import urlparse, urllib, httplib, BeautifulSoup, xml.etree.ElementTree +import urlparse, urllib, httplib, BeautifulSoup import cStringIO, base64, hmac, sha, datetime, re, binascii, struct import itertools +try: + from xml.etree import ElementTree +except ImportError: + from elementtree import ElementTree + # Importing M2Crypto patches urllib; don't let them do that orig = urllib.URLopener.open_https.im_func from M2Crypto import DH @@ -200,7 +205,7 @@ if content_type == 'application/xrds+xml': # Yadis 6.2.5 option 4 - doc = xml.etree.ElementTree.fromstring(data) + doc = ElementTree.fromstring(data) for svc in doc.findall(".//{xri://$xrd*($v*2.0)}Service"): services = [x.text for x in svc.findall("{xri://$xrd*($v*2.0)}Type")] if 'http://specs.openid.net/auth/2.0/server' in services: From python-checkins at python.org Sat Jan 16 19:12:47 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 16 Jan 2010 18:12:47 -0000 Subject: [Python-checkins] r77537 - in python/branches/release31-maint: Lib/test/test_strtod.py Misc/NEWS Python/dtoa.c Message-ID: Author: mark.dickinson Date: Sat Jan 16 19:12:46 2010 New Revision: 77537 Log: Merged revisions 77535 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77535 | mark.dickinson | 2010-01-16 18:10:25 +0000 (Sat, 16 Jan 2010) | 21 lines Merged revisions 77519,77530,77533 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77519 | mark.dickinson | 2010-01-16 10:44:00 +0000 (Sat, 16 Jan 2010) | 5 lines Issue #7632: Fix a serious wrong output bug for string -> float conversion. Also remove some now unused variables, and add comments clarifying the possible outputs of the parsing section of _Py_dg_strtod. Thanks Eric Smith for reviewing. ........ r77530 | mark.dickinson | 2010-01-16 17:57:49 +0000 (Sat, 16 Jan 2010) | 3 lines Issue #7632: Fix one more case of incorrect rounding for str -> float conversion (see bug 5 in the issue tracker). ........ r77533 | mark.dickinson | 2010-01-16 18:06:17 +0000 (Sat, 16 Jan 2010) | 1 line Fix multiple uses of variable 'L' in _Py_dg_strtod, where one use requires an unsigned long and the other a signed long. See also r77421. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/test/test_strtod.py python/branches/release31-maint/Misc/NEWS python/branches/release31-maint/Python/dtoa.c Modified: python/branches/release31-maint/Lib/test/test_strtod.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_strtod.py (original) +++ python/branches/release31-maint/Lib/test/test_strtod.py Sat Jan 16 19:12:46 2010 @@ -123,10 +123,6 @@ digits = m * 5**-e exponent = e s = '{}e{}'.format(digits, exponent) - - # for the moment, ignore errors from trailing zeros - if digits % 10 == 0: - continue self.check_strtod(s) # get expected answer via struct, to triple check @@ -175,7 +171,8 @@ self.check_strtod(s) def test_parsing(self): - digits = tuple(map(str, range(10))) + # make '0' more likely to be chosen than other digits + digits = '000000123456789' signs = ('+', '-', '') # put together random short valid strings @@ -257,7 +254,9 @@ '247032822920623295e-341', # issue 7632 bug 5: the following 2 strings convert differently '1000000000000000000000000000000000000000e-16', - #'10000000000000000000000000000000000000000e-17', + '10000000000000000000000000000000000000000e-17', + # issue 7632 bug 8: the following produced 10.0 + '10.900000000000000012345678912345678912345', ] for s in test_strings: self.check_strtod(s) Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Sat Jan 16 19:12:46 2010 @@ -12,10 +12,12 @@ Core and Builtins ----------------- -- Issue #7632: Fix a crash in dtoa.c that occurred in debug builds - when parsing certain long numeric strings corresponding to subnormal - values. Also fix a number of bugs in dtoa.c that could lead to - incorrectly rounded results when converting strings to floats. +- Issue #7632: Fix various str -> float conversion bugs present in 2.7 + alpha 2, including: (1) a serious 'wrong output' bug that could + occur for long (> 40 digit) input strings, (2) a crash in dtoa.c + that occurred in debug builds when parsing certain long numeric + strings corresponding to subnormal values, and (3) a number of flaws + that could lead to incorrectly rounded results. - Issue #7604: Deleting an unset slotted attribute did not raise an AttributeError. Modified: python/branches/release31-maint/Python/dtoa.c ============================================================================== --- python/branches/release31-maint/Python/dtoa.c (original) +++ python/branches/release31-maint/Python/dtoa.c Sat Jan 16 19:12:46 2010 @@ -1340,16 +1340,17 @@ double _Py_dg_strtod(const char *s00, char **se) { - int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, dp0, dp1, dplen, e, e1, error; + int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, e, e1, error; int esign, i, j, k, nd, nd0, nf, nz, nz0, sign; const char *s, *s0, *s1; double aadj, aadj1; U aadj2, adj, rv, rv0; - ULong y, z, L; + ULong y, z, abse; + Long L; BCinfo bc; Bigint *bb, *bb1, *bd, *bd0, *bs, *delta; - sign = nz0 = nz = dplen = 0; + sign = nz0 = nz = 0; dval(&rv) = 0.; for(s = s00;;s++) switch(*s) { case '-': @@ -1381,18 +1382,11 @@ goto ret; } s0 = s; - y = z = 0; for(nd = nf = 0; (c = *s) >= '0' && c <= '9'; nd++, s++) - if (nd < 9) - y = 10*y + c - '0'; - else if (nd < 16) - z = 10*z + c - '0'; + ; nd0 = nd; - dp0 = dp1 = s - s0; if (c == '.') { c = *++s; - dp1 = s - s0; - dplen = 1; if (!nd) { for(; c == '0'; c = *++s) nz++; @@ -1409,15 +1403,7 @@ nz++; if (c -= '0') { nf += nz; - for(i = 1; i < nz; i++) - if (nd++ < 9) - y *= 10; - else if (nd <= DBL_DIG + 1) - z *= 10; - if (nd++ < 9) - y = 10*y + c; - else if (nd <= DBL_DIG + 1) - z = 10*z + c; + nd += nz; nz = 0; } } @@ -1440,17 +1426,17 @@ while(c == '0') c = *++s; if (c > '0' && c <= '9') { - L = c - '0'; + abse = c - '0'; s1 = s; while((c = *++s) >= '0' && c <= '9') - L = 10*L + c - '0'; - if (s - s1 > 8 || L > MAX_ABS_EXP) + abse = 10*abse + c - '0'; + if (s - s1 > 8 || abse > MAX_ABS_EXP) /* Avoid confusion from exponents * so large that e might overflow. */ e = (int)MAX_ABS_EXP; /* safe for 16 bit ints */ else - e = (int)L; + e = (int)abse; if (esign) e = -e; } @@ -1468,15 +1454,78 @@ } goto ret; } - bc.e0 = e1 = e -= nf; + e -= nf; + if (!nd0) + nd0 = nd; + + /* strip trailing zeros */ + for (i = nd; i > 0; ) { + /* scan back until we hit a nonzero digit. significant digit 'i' + is s0[i] if i < nd0, s0[i+1] if i >= nd0. */ + --i; + if (s0[i < nd0 ? i : i+1] != '0') { + ++i; + break; + } + } + e += nd - i; + nd = i; + if (nd0 > nd) + nd0 = nd; /* Now we have nd0 digits, starting at s0, followed by a * decimal point, followed by nd-nd0 digits. The number we're * after is the integer represented by those digits times * 10**e */ - if (!nd0) - nd0 = nd; + bc.e0 = e1 = e; + + /* Summary of parsing results. The parsing stage gives values + * s0, nd0, nd, e, sign, where: + * + * - s0 points to the first significant digit of the input string s00; + * + * - nd is the total number of significant digits (here, and + * below, 'significant digits' means the set of digits of the + * significand of the input that remain after ignoring leading + * and trailing zeros. + * + * - nd0 indicates the position of the decimal point (if + * present): so the nd significant digits are in s0[0:nd0] and + * s0[nd0+1:nd+1] using the usual Python half-open slice + * notation. (If nd0 < nd, then s0[nd0] necessarily contains + * a '.' character; if nd0 == nd, then it could be anything.) + * + * - e is the adjusted exponent: the absolute value of the number + * represented by the original input string is n * 10**e, where + * n is the integer represented by the concatenation of + * s0[0:nd0] and s0[nd0+1:nd+1] + * + * - sign gives the sign of the input: 1 for negative, 0 for positive + * + * - the first and last significant digits are nonzero + */ + + /* put first DBL_DIG+1 digits into integer y and z. + * + * - y contains the value represented by the first min(9, nd) + * significant digits + * + * - if nd > 9, z contains the value represented by significant digits + * with indices in [9, min(16, nd)). So y * 10**(min(16, nd) - 9) + z + * gives the value represented by the first min(16, nd) sig. digits. + */ + + y = z = 0; + for (i = 0; i < nd; i++) { + if (i < 9) + y = 10*y + s0[i < nd0 ? i : i+1] - '0'; + else if (i < DBL_DIG+1) + z = 10*z + s0[i < nd0 ? i : i+1] - '0'; + else + break; + } + k = nd < DBL_DIG + 1 ? nd : DBL_DIG + 1; dval(&rv) = y; if (k > 9) { @@ -1593,15 +1642,18 @@ /* ASSERT(STRTOD_DIGLIM >= 18); 18 == one more than the */ /* minimum number of decimal digits to distinguish double values */ /* in IEEE arithmetic. */ - i = j = 18; - if (i > nd0) - j += dplen; - for(;;) { - if (--j <= dp1 && j >= dp0) - j = dp0 - 1; - if (s0[j] != '0') - break; + + /* Truncate input to 18 significant digits, then discard any trailing + zeros on the result by updating nd, nd0, e and y suitably. (There's + no need to update z; it's not reused beyond this point.) */ + for (i = 18; i > 0; ) { + /* scan back until we hit a nonzero digit. significant digit 'i' + is s0[i] if i < nd0, s0[i+1] if i >= nd0. */ --i; + if (s0[i < nd0 ? i : i+1] != '0') { + ++i; + break; + } } e += nd - i; nd = i; @@ -1611,8 +1663,8 @@ y = 0; for(i = 0; i < nd0; ++i) y = 10*y + s0[i] - '0'; - for(j = dp1; i < nd; ++i) - y = 10*y + s0[j++] - '0'; + for(; i < nd; ++i) + y = 10*y + s0[i+1] - '0'; } } bd0 = s2b(s0, nd0, nd, y); From python-checkins at python.org Sat Jan 16 19:14:00 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 16 Jan 2010 18:14:00 -0000 Subject: [Python-checkins] r77538 - python/branches/release26-maint Message-ID: Author: mark.dickinson Date: Sat Jan 16 19:13:59 2010 New Revision: 77538 Log: Blocked revisions 77519,77530,77533 via svnmerge ........ r77519 | mark.dickinson | 2010-01-16 10:44:00 +0000 (Sat, 16 Jan 2010) | 5 lines Issue #7632: Fix a serious wrong output bug for string -> float conversion. Also remove some now unused variables, and add comments clarifying the possible outputs of the parsing section of _Py_dg_strtod. Thanks Eric Smith for reviewing. ........ r77530 | mark.dickinson | 2010-01-16 17:57:49 +0000 (Sat, 16 Jan 2010) | 3 lines Issue #7632: Fix one more case of incorrect rounding for str -> float conversion (see bug 5 in the issue tracker). ........ r77533 | mark.dickinson | 2010-01-16 18:06:17 +0000 (Sat, 16 Jan 2010) | 1 line Fix multiple uses of variable 'L' in _Py_dg_strtod, where one use requires an unsigned long and the other a signed long. See also r77421. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Sat Jan 16 19:15:15 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sat, 16 Jan 2010 18:15:15 -0000 Subject: [Python-checkins] r77539 - python/branches/py3k/Modules/binascii.c Message-ID: Author: antoine.pitrou Date: Sat Jan 16 19:15:15 2010 New Revision: 77539 Log: Remove duplicated line when merging (it was even valid C!). Thanks Florent for noticing. Modified: python/branches/py3k/Modules/binascii.c Modified: python/branches/py3k/Modules/binascii.c ============================================================================== --- python/branches/py3k/Modules/binascii.c (original) +++ python/branches/py3k/Modules/binascii.c Sat Jan 16 19:15:15 2010 @@ -561,7 +561,6 @@ /* Allocate a string that is too big (fixed later) Add two to the initial length to prevent interning which would preclude subsequent resizing. */ - if ( (rv=PyBytes_FromStringAndSize(NULL, len+2)) == NULL ) if ( (rv=PyBytes_FromStringAndSize(NULL, len+2)) == NULL ) { PyBuffer_Release(&pascii); return NULL; From python-checkins at python.org Sat Jan 16 19:18:56 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 16 Jan 2010 18:18:56 -0000 Subject: [Python-checkins] r77540 - tracker/instances/python-dev/lib/openid.py Message-ID: Author: martin.v.loewis Date: Sat Jan 16 19:18:55 2010 New Revision: 77540 Log: Work around lack of datetime.strptime in Python 2.4. Modified: tracker/instances/python-dev/lib/openid.py Modified: tracker/instances/python-dev/lib/openid.py ============================================================================== --- tracker/instances/python-dev/lib/openid.py (original) +++ tracker/instances/python-dev/lib/openid.py Sat Jan 16 19:18:55 2010 @@ -449,7 +449,8 @@ def parse_nonce(nonce): '''Split a nonce into a (timestamp, ID) pair''' stamp = nonce.split('Z', 1)[0] - stamp = datetime.datetime.strptime(stamp,"%Y-%m-%dT%H:%M:%S") + stamp = time.strptime(stamp, "%Y-%m-%dT%H:%M:%S")[:6] + stamp = datetime.datetime(*stamp) return stamp def get_namespaces(resp): From python-checkins at python.org Sat Jan 16 19:20:10 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 16 Jan 2010 18:20:10 -0000 Subject: [Python-checkins] r77541 - tracker/instances/python-dev/lib/openid.py Message-ID: Author: martin.v.loewis Date: Sat Jan 16 19:20:10 2010 New Revision: 77541 Log: Add missing import. Modified: tracker/instances/python-dev/lib/openid.py Modified: tracker/instances/python-dev/lib/openid.py ============================================================================== --- tracker/instances/python-dev/lib/openid.py (original) +++ tracker/instances/python-dev/lib/openid.py Sat Jan 16 19:20:10 2010 @@ -11,7 +11,7 @@ # - direct requests require https # - as a signature algorithm, HMAC-SHA1 is requested -import urlparse, urllib, httplib, BeautifulSoup +import urlparse, urllib, httplib, BeautifulSoup, time import cStringIO, base64, hmac, sha, datetime, re, binascii, struct import itertools From python-checkins at python.org Sat Jan 16 19:30:04 2010 From: python-checkins at python.org (r.david.murray) Date: Sat, 16 Jan 2010 18:30:04 -0000 Subject: [Python-checkins] r77542 - in python/branches/py3k: Lib/email/generator.py Lib/email/test/data/msg_45.txt Lib/email/test/test_email.py Misc/NEWS Message-ID: Author: r.david.murray Date: Sat Jan 16 19:30:03 2010 New Revision: 77542 Log: Merged revisions 77517,77525 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk Merge adds an additional test for as_string with a maxheaderlen specified. ........ r77517 | r.david.murray | 2010-01-16 00:15:17 -0500 (Sat, 16 Jan 2010) | 6 lines Issue #1670765: Prevent email.generator.Generator from re-wrapping headers in multipart/signed MIME parts, which fixes one of the sources of invalid modifications to such parts by Generator. Patch and tests by Martin von Gagern. ........ r77525 | r.david.murray | 2010-01-16 11:08:32 -0500 (Sat, 16 Jan 2010) | 2 lines Fix issue number in comment. ........ Added: python/branches/py3k/Lib/email/test/data/msg_45.txt Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/email/generator.py python/branches/py3k/Lib/email/test/test_email.py python/branches/py3k/Misc/NEWS Modified: python/branches/py3k/Lib/email/generator.py ============================================================================== --- python/branches/py3k/Lib/email/generator.py (original) +++ python/branches/py3k/Lib/email/generator.py Sat Jan 16 19:30:03 2010 @@ -215,6 +215,17 @@ print(file=self._fp) self._fp.write(msg.epilogue) + def _handle_multipart_signed(self, msg): + # The contents of signed parts has to stay unmodified in order to keep + # the signature intact per RFC1847 2.1, so we disable header wrapping. + # RDM: This isn't enough to completely preserve the part, but it helps. + old_maxheaderlen = self._maxheaderlen + try: + self._maxheaderlen = 0 + self._handle_multipart(msg) + finally: + self._maxheaderlen = old_maxheaderlen + def _handle_message_delivery_status(self, msg): # We can't just write the headers directly to self's file object # because this will leave an extra newline between the last header Added: python/branches/py3k/Lib/email/test/data/msg_45.txt ============================================================================== --- (empty file) +++ python/branches/py3k/Lib/email/test/data/msg_45.txt Sat Jan 16 19:30:03 2010 @@ -0,0 +1,33 @@ +From: +To: +Subject: test +X-Long-Line: Some really long line contains a lot of text and thus has to be rewrapped because it is some + really long + line +MIME-Version: 1.0 +Content-Type: multipart/signed; boundary="borderline"; + protocol="application/pgp-signature"; micalg=pgp-sha1 + +This is an OpenPGP/MIME signed message (RFC 2440 and 3156) +--borderline +Content-Type: text/plain +X-Long-Line: Another really long line contains a lot of text and thus has to be rewrapped because it is another + really long + line + +This is the signed contents. + +--borderline +Content-Type: application/pgp-signature; name="signature.asc" +Content-Description: OpenPGP digital signature +Content-Disposition: attachment; filename="signature.asc" + +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.0.6 (GNU/Linux) + +iD8DBQFG03voRhp6o4m9dFsRApSZAKCCAN3IkJlVRg6NvAiMHlvvIuMGPQCeLZtj +FGwfnRHFBFO/S4/DKysm0lI= +=t7+s +-----END PGP SIGNATURE----- + +--borderline-- Modified: python/branches/py3k/Lib/email/test/test_email.py ============================================================================== --- python/branches/py3k/Lib/email/test/test_email.py (original) +++ python/branches/py3k/Lib/email/test/test_email.py Sat Jan 16 19:30:03 2010 @@ -3387,6 +3387,44 @@ +# Tests to ensure that signed parts of an email are completely preserved, as +# required by RFC1847 section 2.1. Note that these are incomplete, because the +# email package does not currently always preserve the body. See issue 1670765. +class TestSigned(TestEmailBase): + + def _msg_and_obj(self, filename): + with openfile(findfile(filename)) as fp: + original = fp.read() + msg = email.message_from_string(original) + return original, msg + + def _signed_parts_eq(self, original, result): + # Extract the first mime part of each message + import re + repart = re.compile(r'^--([^\n]+)\n(.*?)\n--\1$', re.S | re.M) + inpart = repart.search(original).group(2) + outpart = repart.search(result).group(2) + self.assertEqual(outpart, inpart) + + def test_long_headers_as_string(self): + original, msg = self._msg_and_obj('msg_45.txt') + result = msg.as_string() + self._signed_parts_eq(original, result) + + def test_long_headers_as_string_maxheaderlen(self): + original, msg = self._msg_and_obj('msg_45.txt') + result = msg.as_string(maxheaderlen=60) + self._signed_parts_eq(original, result) + + def test_long_headers_flatten(self): + original, msg = self._msg_and_obj('msg_45.txt') + fp = StringIO() + Generator(fp).flatten(msg) + result = fp.getvalue() + self._signed_parts_eq(original, result) + + + def _testclasses(): mod = sys.modules[__name__] return [getattr(mod, name) for name in dir(mod) if name.startswith('Test')] Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Sat Jan 16 19:30:03 2010 @@ -215,6 +215,10 @@ Library ------- +- Issue #1670765: Prevent email.generator.Generator from re-wrapping + headers in multipart/signed MIME parts, which fixes one of the sources of + invalid modifications to such parts by Generator. + - Issue #7703: Add support for the new buffer API to `binascii.a2bhqx`. Patch by Florent Xicluna, along with some additional tests. From python-checkins at python.org Sat Jan 16 19:37:38 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sat, 16 Jan 2010 18:37:38 -0000 Subject: [Python-checkins] r77543 - in python/branches/py3k: Lib/test/test_peepholer.py Misc/NEWS Python/peephole.c Message-ID: Author: antoine.pitrou Date: Sat Jan 16 19:37:38 2010 New Revision: 77543 Log: Issue #6690: Optimize the bytecode for expressions such as `x in {1, 2, 3}`, where the right hand operand is a set of constants, by turning the set into a frozenset and pre-building it as a constant. The comparison operation is made against the constant instead of building a new set each time it is executed (a similar optimization already existed which turned a list of constants into a pre-built tuple). Patch and additional tests by Dave Malcolm. Modified: python/branches/py3k/Lib/test/test_peepholer.py python/branches/py3k/Misc/NEWS python/branches/py3k/Python/peephole.c Modified: python/branches/py3k/Lib/test/test_peepholer.py ============================================================================== --- python/branches/py3k/Lib/test/test_peepholer.py (original) +++ python/branches/py3k/Lib/test/test_peepholer.py Sat Jan 16 19:37:38 2010 @@ -1,4 +1,5 @@ import dis +import re import sys from io import StringIO import unittest @@ -115,6 +116,54 @@ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ],) + def test_folding_of_lists_of_constants(self): + for line, elem in ( + # in/not in constants with BUILD_LIST should be folded to a tuple: + ('a in [1,2,3]', '(1, 2, 3)'), + ('a not in ["a","b","c"]', "(('a', 'b', 'c'))"), + ('a in [None, 1, None]', '((None, 1, None))'), + ('a not in [(1, 2), 3, 4]', '(((1, 2), 3, 4))'), + ): + asm = dis_single(line) + self.assertIn(elem, asm) + self.assertNotIn('BUILD_LIST', asm) + + def test_folding_of_sets_of_constants(self): + for line, elem in ( + # in/not in constants with BUILD_SET should be folded to a frozenset: + ('a in {1,2,3}', frozenset({1, 2, 3})), + ('a not in {"a","b","c"}', frozenset({'a', 'c', 'b'})), + ('a in {None, 1, None}', frozenset({1, None})), + ('a not in {(1, 2), 3, 4}', frozenset({(1, 2), 3, 4})), + ('a in {1, 2, 3, 3, 2, 1}', frozenset({1, 2, 3})), + ): + asm = dis_single(line) + self.assertNotIn('BUILD_SET', asm) + + # Verify that the frozenset 'elem' is in the disassembly + # The ordering of the elements in repr( frozenset ) isn't + # guaranteed, so we jump through some hoops to ensure that we have + # the frozenset we expect: + self.assertIn('frozenset', asm) + # Extract the frozenset literal from the disassembly: + m = re.match(r'.*(frozenset\({.*}\)).*', asm, re.DOTALL) + self.assertTrue(m) + self.assertEqual(eval(m.group(1)), elem) + + # Ensure that the resulting code actually works: + def f(a): + return a in {1, 2, 3} + + def g(a): + return a not in {1, 2, 3} + + self.assertTrue(f(3)) + self.assertTrue(not f(4)) + + self.assertTrue(not g(3)) + self.assertTrue(g(4)) + + def test_folding_of_binops_on_constants(self): for line, elem in ( ('a = 2+3+4', '(9)'), # chained fold Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Sat Jan 16 19:37:38 2010 @@ -12,6 +12,14 @@ Core and Builtins ----------------- +- Issue #6690: Optimize the bytecode for expressions such as `x in {1, 2, 3}`, + where the right hand operand is a set of constants, by turning the set into + a frozenset and pre-building it as a constant. The comparison operation + is made against the constant instead of building a new set each time it is + executed (a similar optimization already existed which turned a list of + constants into a pre-built tuple). Patch and additional tests by Dave + Malcolm. + - Issue #7622: Improve the split(), rsplit(), splitlines() and replace() methods of bytes, bytearray and unicode objects by using a common implementation based on stringlib's fast search. Patch by Florent Xicluna. Modified: python/branches/py3k/Python/peephole.c ============================================================================== --- python/branches/py3k/Python/peephole.c (original) +++ python/branches/py3k/Python/peephole.c Sat Jan 16 19:37:38 2010 @@ -31,7 +31,8 @@ new constant (c1, c2, ... cn) can be appended. Called with codestr pointing to the first LOAD_CONST. Bails out with no change if one or more of the LOAD_CONSTs is missing. - Also works for BUILD_LIST when followed by an "in" or "not in" test. + Also works for BUILD_LIST and BUILT_SET when followed by an "in" or "not in" + test; for BUILD_SET it assembles a frozenset rather than a tuple. */ static int tuple_of_constants(unsigned char *codestr, Py_ssize_t n, PyObject *consts) @@ -41,7 +42,7 @@ /* Pre-conditions */ assert(PyList_CheckExact(consts)); - assert(codestr[n*3] == BUILD_TUPLE || codestr[n*3] == BUILD_LIST); + assert(codestr[n*3] == BUILD_TUPLE || codestr[n*3] == BUILD_LIST || codestr[n*3] == BUILD_SET); assert(GETARG(codestr, (n*3)) == n); for (i=0 ; i= 0 && j <= lastlc && ((opcode == BUILD_TUPLE && ISBASICBLOCK(blocks, h, 3*(j+1))) || - (opcode == BUILD_LIST && + ((opcode == BUILD_LIST || opcode == BUILD_SET) && codestr[i+3]==COMPARE_OP && ISBASICBLOCK(blocks, h, 3*(j+2)) && (GETARG(codestr,i+3)==6 || From python-checkins at python.org Sat Jan 16 19:38:02 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 16 Jan 2010 18:38:02 -0000 Subject: [Python-checkins] r77544 - python/trunk/Misc/NEWS Message-ID: Author: ezio.melotti Date: Sat Jan 16 19:38:01 2010 New Revision: 77544 Log: typo: use one instead instead of two Modified: python/trunk/Misc/NEWS Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Jan 16 19:38:01 2010 @@ -774,8 +774,8 @@ - Issue #7354: distutils.tests.test_msvc9compiler - dragfullwindows can be 2. -- Issue #5037: Proxy the __unicode__ special method instead to __unicode__ - instead of __str__. +- Issue #5037: Proxy the __unicode__ special method to __unicode__ instead of + __str__. - Issue #7341: Close the internal file object in the TarFile constructor in case of an error. From python-checkins at python.org Sat Jan 16 19:39:55 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 16 Jan 2010 18:39:55 -0000 Subject: [Python-checkins] r77545 - tracker/instances/python-dev/extensions/openid_login.py Message-ID: Author: martin.v.loewis Date: Sat Jan 16 19:39:54 2010 New Revision: 77545 Log: Drop defaultdict usage for 2.4. Modified: tracker/instances/python-dev/extensions/openid_login.py Modified: tracker/instances/python-dev/extensions/openid_login.py ============================================================================== --- tracker/instances/python-dev/extensions/openid_login.py (original) +++ tracker/instances/python-dev/extensions/openid_login.py Sat Jan 16 19:39:54 2010 @@ -230,7 +230,7 @@ class OpenidRegister(RegisterAction): def handle(self): - query = collections.defaultdict(list) + query = {} if 'openid.identity' not in self.form: raise ValueError, "OpenID fields missing" try: @@ -242,7 +242,11 @@ # re-authenticate fields for key in self.form: if key.startswith("openid"): - query[key].append(self.form[key].value) + value = self.form[key].value + try: + query[key].append(value) + except KeyError: + query[key] = [value] try: signed = openid.authenticate(session, query) except Exception, e: From python-checkins at python.org Sat Jan 16 19:41:00 2010 From: python-checkins at python.org (r.david.murray) Date: Sat, 16 Jan 2010 18:41:00 -0000 Subject: [Python-checkins] r77546 - in python/branches/release31-maint: Lib/email/generator.py Lib/email/test/data/msg_45.txt Lib/email/test/test_email.py Misc/NEWS Message-ID: Author: r.david.murray Date: Sat Jan 16 19:41:00 2010 New Revision: 77546 Log: Merged revisions 77542 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77542 | r.david.murray | 2010-01-16 13:30:03 -0500 (Sat, 16 Jan 2010) | 18 lines Merged revisions 77517,77525 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk Merge adds an additional test for as_string with a maxheaderlen specified. ........ r77517 | r.david.murray | 2010-01-16 00:15:17 -0500 (Sat, 16 Jan 2010) | 6 lines Issue #1670765: Prevent email.generator.Generator from re-wrapping headers in multipart/signed MIME parts, which fixes one of the sources of invalid modifications to such parts by Generator. Patch and tests by Martin von Gagern. ........ r77525 | r.david.murray | 2010-01-16 11:08:32 -0500 (Sat, 16 Jan 2010) | 2 lines Fix issue number in comment. ........ ................ Added: python/branches/release31-maint/Lib/email/test/data/msg_45.txt Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/email/generator.py python/branches/release31-maint/Lib/email/test/test_email.py python/branches/release31-maint/Misc/NEWS Modified: python/branches/release31-maint/Lib/email/generator.py ============================================================================== --- python/branches/release31-maint/Lib/email/generator.py (original) +++ python/branches/release31-maint/Lib/email/generator.py Sat Jan 16 19:41:00 2010 @@ -215,6 +215,17 @@ print(file=self._fp) self._fp.write(msg.epilogue) + def _handle_multipart_signed(self, msg): + # The contents of signed parts has to stay unmodified in order to keep + # the signature intact per RFC1847 2.1, so we disable header wrapping. + # RDM: This isn't enough to completely preserve the part, but it helps. + old_maxheaderlen = self._maxheaderlen + try: + self._maxheaderlen = 0 + self._handle_multipart(msg) + finally: + self._maxheaderlen = old_maxheaderlen + def _handle_message_delivery_status(self, msg): # We can't just write the headers directly to self's file object # because this will leave an extra newline between the last header Added: python/branches/release31-maint/Lib/email/test/data/msg_45.txt ============================================================================== --- (empty file) +++ python/branches/release31-maint/Lib/email/test/data/msg_45.txt Sat Jan 16 19:41:00 2010 @@ -0,0 +1,33 @@ +From: +To: +Subject: test +X-Long-Line: Some really long line contains a lot of text and thus has to be rewrapped because it is some + really long + line +MIME-Version: 1.0 +Content-Type: multipart/signed; boundary="borderline"; + protocol="application/pgp-signature"; micalg=pgp-sha1 + +This is an OpenPGP/MIME signed message (RFC 2440 and 3156) +--borderline +Content-Type: text/plain +X-Long-Line: Another really long line contains a lot of text and thus has to be rewrapped because it is another + really long + line + +This is the signed contents. + +--borderline +Content-Type: application/pgp-signature; name="signature.asc" +Content-Description: OpenPGP digital signature +Content-Disposition: attachment; filename="signature.asc" + +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.0.6 (GNU/Linux) + +iD8DBQFG03voRhp6o4m9dFsRApSZAKCCAN3IkJlVRg6NvAiMHlvvIuMGPQCeLZtj +FGwfnRHFBFO/S4/DKysm0lI= +=t7+s +-----END PGP SIGNATURE----- + +--borderline-- Modified: python/branches/release31-maint/Lib/email/test/test_email.py ============================================================================== --- python/branches/release31-maint/Lib/email/test/test_email.py (original) +++ python/branches/release31-maint/Lib/email/test/test_email.py Sat Jan 16 19:41:00 2010 @@ -3387,6 +3387,44 @@ +# Tests to ensure that signed parts of an email are completely preserved, as +# required by RFC1847 section 2.1. Note that these are incomplete, because the +# email package does not currently always preserve the body. See issue 1670765. +class TestSigned(TestEmailBase): + + def _msg_and_obj(self, filename): + with openfile(findfile(filename)) as fp: + original = fp.read() + msg = email.message_from_string(original) + return original, msg + + def _signed_parts_eq(self, original, result): + # Extract the first mime part of each message + import re + repart = re.compile(r'^--([^\n]+)\n(.*?)\n--\1$', re.S | re.M) + inpart = repart.search(original).group(2) + outpart = repart.search(result).group(2) + self.assertEqual(outpart, inpart) + + def test_long_headers_as_string(self): + original, msg = self._msg_and_obj('msg_45.txt') + result = msg.as_string() + self._signed_parts_eq(original, result) + + def test_long_headers_as_string_maxheaderlen(self): + original, msg = self._msg_and_obj('msg_45.txt') + result = msg.as_string(maxheaderlen=60) + self._signed_parts_eq(original, result) + + def test_long_headers_flatten(self): + original, msg = self._msg_and_obj('msg_45.txt') + fp = StringIO() + Generator(fp).flatten(msg) + result = fp.getvalue() + self._signed_parts_eq(original, result) + + + def _testclasses(): mod = sys.modules[__name__] return [getattr(mod, name) for name in dir(mod) if name.startswith('Test')] Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Sat Jan 16 19:41:00 2010 @@ -67,6 +67,10 @@ Library ------- +- Issue #1670765: Prevent email.generator.Generator from re-wrapping + headers in multipart/signed MIME parts, which fixes one of the sources of + invalid modifications to such parts by Generator. + - Issue #7701: Fix crash in binascii.b2a_uu() in debug mode when given a 1-byte argument. Patch by Victor Stinner. From python-checkins at python.org Sat Jan 16 19:43:14 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 16 Jan 2010 18:43:14 -0000 Subject: [Python-checkins] r77547 - in python/branches/release26-maint: Misc/NEWS Message-ID: Author: ezio.melotti Date: Sat Jan 16 19:43:14 2010 New Revision: 77547 Log: Merged revisions 77544 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77544 | ezio.melotti | 2010-01-16 20:38:01 +0200 (Sat, 16 Jan 2010) | 1 line typo: use one instead instead of two ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Misc/NEWS Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Sat Jan 16 19:43:14 2010 @@ -161,8 +161,8 @@ - Issue #1488943: difflib.Differ() doesn't always add hints for tab characters -- Issue #5037: Proxy the __unicode__ special method instead to __unicode__ - instead of __str__. +- Issue #5037: Proxy the __unicode__ special method to __unicode__ instead of + __str__. Build ----- From python-checkins at python.org Sat Jan 16 20:36:42 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 16 Jan 2010 19:36:42 -0000 Subject: [Python-checkins] r77548 - python/trunk/Doc/library/unittest.rst Message-ID: Author: ezio.melotti Date: Sat Jan 16 20:36:42 2010 New Revision: 77548 Log: remove wrong markup Modified: python/trunk/Doc/library/unittest.rst Modified: python/trunk/Doc/library/unittest.rst ============================================================================== --- python/trunk/Doc/library/unittest.rst (original) +++ python/trunk/Doc/library/unittest.rst Sat Jan 16 20:36:42 2010 @@ -785,7 +785,7 @@ .. versionadded:: 2.7 - .. method:: assertRegexpMatches(text, regexp[, msg=None]): + .. method:: assertRegexpMatches(text, regexp, msg=None) Verifies that a *regexp* search matches *text*. Fails with an error message including the pattern and the *text*. *regexp* may be From python-checkins at python.org Sat Jan 16 20:40:06 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 16 Jan 2010 19:40:06 -0000 Subject: [Python-checkins] r77549 - in python/branches/py3k: Doc/library/unittest.rst Message-ID: Author: ezio.melotti Date: Sat Jan 16 20:40:06 2010 New Revision: 77549 Log: Merged revisions 77548 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77548 | ezio.melotti | 2010-01-16 21:36:42 +0200 (Sat, 16 Jan 2010) | 1 line remove wrong markup ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/library/unittest.rst Modified: python/branches/py3k/Doc/library/unittest.rst ============================================================================== --- python/branches/py3k/Doc/library/unittest.rst (original) +++ python/branches/py3k/Doc/library/unittest.rst Sat Jan 16 20:40:06 2010 @@ -780,7 +780,7 @@ .. versionadded:: 3.1 - .. method:: assertRegexpMatches(text, regexp, msg=None): + .. method:: assertRegexpMatches(text, regexp, msg=None) Verifies that a *regexp* search matches *text*. Fails with an error message including the pattern and the *text*. *regexp* may be From python-checkins at python.org Sat Jan 16 21:33:03 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 16 Jan 2010 20:33:03 -0000 Subject: [Python-checkins] r77550 - python/trunk/Lib/test/test_strtod.py Message-ID: Author: mark.dickinson Date: Sat Jan 16 21:33:02 2010 New Revision: 77550 Log: Add better error reporting for MemoryErrors caused by str->float conversions. Modified: python/trunk/Lib/test/test_strtod.py Modified: python/trunk/Lib/test/test_strtod.py ============================================================================== --- python/trunk/Lib/test/test_strtod.py (original) +++ python/trunk/Lib/test/test_strtod.py Sat Jan 16 21:33:02 2010 @@ -91,6 +91,8 @@ fs = float(s) except OverflowError: got = '-inf' if s[0] == '-' else 'inf' + except MemoryError: + got = 'memory error' else: got = fs.hex() expected = strtod(s) From python-checkins at python.org Sat Jan 16 21:34:30 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 16 Jan 2010 20:34:30 -0000 Subject: [Python-checkins] r77551 - in python/branches/py3k: Lib/test/test_strtod.py Message-ID: Author: mark.dickinson Date: Sat Jan 16 21:34:30 2010 New Revision: 77551 Log: Merged revisions 77550 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77550 | mark.dickinson | 2010-01-16 20:33:02 +0000 (Sat, 16 Jan 2010) | 1 line Add better error reporting for MemoryErrors caused by str->float conversions. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_strtod.py Modified: python/branches/py3k/Lib/test/test_strtod.py ============================================================================== --- python/branches/py3k/Lib/test/test_strtod.py (original) +++ python/branches/py3k/Lib/test/test_strtod.py Sat Jan 16 21:34:30 2010 @@ -91,6 +91,8 @@ fs = float(s) except OverflowError: got = '-inf' if s[0] == '-' else 'inf' + except MemoryError: + got = 'memory error' else: got = fs.hex() expected = strtod(s) From python-checkins at python.org Sat Jan 16 21:35:50 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 16 Jan 2010 20:35:50 -0000 Subject: [Python-checkins] r77552 - in python/branches/release31-maint: Lib/test/test_strtod.py Message-ID: Author: mark.dickinson Date: Sat Jan 16 21:35:50 2010 New Revision: 77552 Log: Merged revisions 77551 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77551 | mark.dickinson | 2010-01-16 20:34:30 +0000 (Sat, 16 Jan 2010) | 9 lines Merged revisions 77550 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77550 | mark.dickinson | 2010-01-16 20:33:02 +0000 (Sat, 16 Jan 2010) | 1 line Add better error reporting for MemoryErrors caused by str->float conversions. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/test/test_strtod.py Modified: python/branches/release31-maint/Lib/test/test_strtod.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_strtod.py (original) +++ python/branches/release31-maint/Lib/test/test_strtod.py Sat Jan 16 21:35:50 2010 @@ -91,6 +91,8 @@ fs = float(s) except OverflowError: got = '-inf' if s[0] == '-' else 'inf' + except MemoryError: + got = 'memory error' else: got = fs.hex() expected = strtod(s) From python-checkins at python.org Sat Jan 16 22:18:49 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 16 Jan 2010 21:18:49 -0000 Subject: [Python-checkins] r77553 - tracker/instances/python-dev/lib/openid.py Message-ID: Author: martin.v.loewis Date: Sat Jan 16 22:18:49 2010 New Revision: 77553 Log: Port urlparse usage to 2.4. Modified: tracker/instances/python-dev/lib/openid.py Modified: tracker/instances/python-dev/lib/openid.py ============================================================================== --- tracker/instances/python-dev/lib/openid.py (original) +++ tracker/instances/python-dev/lib/openid.py Sat Jan 16 22:18:49 2010 @@ -46,10 +46,10 @@ # 6.2.2.1 case normalization parts = urlparse.urlparse(uri) # already lower-cases scheme - if '@' in parts.netloc: - userinfo,hostname = parts.netloc.rsplit('@', 1) + if '@' in parts[1]: #netloc + userinfo,hostname = parts[1].rsplit('@', 1) else: - userinfo,hostname = None,parts.netloc + userinfo,hostname = None,parts[1] if ':' in hostname: host,port = hostname.rsplit(':', 1) if ']' in port: @@ -75,7 +75,7 @@ # 6.2.2.3 remove dot segments parts = urlparse.urlparse(uri) - path = parts.path + path = parts[2] #path newpath = '' while path: if path.startswith('../'): @@ -106,18 +106,18 @@ # 6.2.3 scheme based normalization - # XXX port normalization doesn't support a standalone : - # (e.g. http://www.python.org:/) - parts = urlparse.urlparse(uri) - netloc = parts.netloc - if parts.scheme == 'http' and parts.port == 80: - netloc = parts.netloc[:-3] - if parts.scheme == 'https' and parts.port == 443: - netloc = parts.netloc[:-4] + parts = urlparse.urlparse(uri) + netloc = parts[1] + if netloc.endswith(':'): + netloc = netloc[:-1] + elif parts[0] == 'http' and netloc.endswith(':80'): + netloc = netloc[:-3] + elif parts[0] == 'https' and netloc.endswith(':443'): + netloc = netloc[:-4] # other default ports not considered here - path = parts.path - if parts.scheme in ('http', 'https') and parts.path=='': + path = parts[2] + if parts[0] in ('http', 'https') and parts[2]=='': path = '/' # 6.2.5 protocol-based normalization not done, as it From python-checkins at python.org Sat Jan 16 22:22:36 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 16 Jan 2010 21:22:36 -0000 Subject: [Python-checkins] r77554 - tracker/instances/python-dev/html/page.html Message-ID: Author: martin.v.loewis Date: Sat Jan 16 22:22:36 2010 New Revision: 77554 Log: Add space. Modified: tracker/instances/python-dev/html/page.html Modified: tracker/instances/python-dev/html/page.html ============================================================================== --- tracker/instances/python-dev/html/page.html (original) +++ tracker/instances/python-dev/html/page.html Sat Jan 16 22:22:36 2010 @@ -133,7 +133,7 @@
      • - Login(OpenID possible)
        + Login (OpenID possible)
        From python-checkins at python.org Sat Jan 16 22:23:02 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 16 Jan 2010 21:23:02 -0000 Subject: [Python-checkins] r77555 - python/branches/release26-maint Message-ID: Author: mark.dickinson Date: Sat Jan 16 22:23:02 2010 New Revision: 77555 Log: Blocked revisions 77550 via svnmerge ........ r77550 | mark.dickinson | 2010-01-16 20:33:02 +0000 (Sat, 16 Jan 2010) | 1 line Add better error reporting for MemoryErrors caused by str->float conversions. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Sat Jan 16 22:25:16 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 16 Jan 2010 21:25:16 -0000 Subject: [Python-checkins] r77556 - tracker/instances/python-dev/html/user.openid.html Message-ID: Author: martin.v.loewis Date: Sat Jan 16 22:25:16 2010 New Revision: 77556 Log: Explain that this is a registration page. Modified: tracker/instances/python-dev/html/user.openid.html Modified: tracker/instances/python-dev/html/user.openid.html ============================================================================== --- tracker/instances/python-dev/html/user.openid.html (original) +++ tracker/instances/python-dev/html/user.openid.html Sat Jan 16 22:25:16 2010 @@ -7,11 +7,9 @@ tal:replace="db/config/TRACKER_NAME" />
      Namerealname
      Login Nameusername
      Login Passwordpassword
      Confirm PasswordpasswordOpenID
      Roles roles - +
      E-mail addressaddress
      Alternate E-mail addresses
      One address per line
      - +
      -

      NOTE: If you have previously created or modified issue -reports using the sourceforge issue tracker previously used for python -bugs, your username on sourceforge already exists in this tracker. Use -the Password recovery form to -get a password for your account.

      +

      If you already have a tracker account and want to associate this +OpenID with it, you should login to your account, and then claim +the OpenID on Your Details page.

      343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.556s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [872632 refs] From nnorwitz at gmail.com Sat Jan 16 22:40:15 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 16 Jan 2010 16:40:15 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100116214015.GA16172@kbk-i386-bb.psfb.org> 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19651 refs] [19651 refs] [19651 refs] [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.556s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [871528 refs] From python-checkins at python.org Sat Jan 16 23:02:32 2010 From: python-checkins at python.org (matthias.klose) Date: Sat, 16 Jan 2010 22:02:32 -0000 Subject: [Python-checkins] r77557 - python/branches/release31-maint/Misc/NEWS Message-ID: Author: matthias.klose Date: Sat Jan 16 23:02:32 2010 New Revision: 77557 Log: - Move new NEWS entries from 3.1.1 to 3.1.2 Modified: python/branches/release31-maint/Misc/NEWS Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Sat Jan 16 23:02:32 2010 @@ -253,6 +253,9 @@ distutils.unixcompiler. Initial patch by Sridhar Ratnakumar and Michael Haubenwallner. +- Issue #7066: archive_util.make_archive now restores the cwd if an error is + raised. Initial patch by Ezio Melotti. + Extension Modules ----------------- @@ -308,6 +311,9 @@ - Make PyUnicode_CompareWithASCIIString return not equal if the Python string has '\0' at the end. +- Issue #7414: 'C' code wasn't being skipped properly (for keyword arguments) + in PyArg_ParseTupleAndKeywords. + Build ----- @@ -322,8 +328,13 @@ - Issue #6801 : symmetric_difference_update also accepts |. Thanks to Carl Chenet. -- Issue #7541: when using ``python-config`` with a framework install the compiler might - use the wrong library. +- Issue #7541: when using ``python-config`` with a framework install the + compiler might use the wrong library. + +- Issue #6491: Allow --with-dbmliborder to specify that no dbms will be built. + +- Issue #7589: Only build the nis module when the correct header files are + found. Documentation ------------- @@ -365,9 +376,6 @@ C-API ----- -- Issue #7414: 'C' code wasn't being skipped properly (for keyword arguments) - in PyArg_ParseTupleAndKeywords. - - Issue #6624: yArg_ParseTuple with "s" format when parsing argument with NUL: Bogus TypeError detail string. @@ -447,11 +455,6 @@ Build ----- -- Issue #6491: Allow --with-dbmliborder to specify that no dbms will be built. - -- Issue #7589: Only build the nis module when the correct header files are - found. - - Issue 4601: 'make install' did not set the appropriate permissions on directories. @@ -1284,9 +1287,6 @@ Library ------- -- Issue #7066: archive_util.make_archive now restores the cwd if an error is - raised. Initial patch by Ezio Melotti. - - Issue #6545: Removed assert statements in distutils.Extension, so the behavior is similar when used with -O. From solipsis at pitrou.net Sun Jan 17 00:54:00 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Sun, 17 Jan 2010 00:54:00 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77551): sum=0 Message-ID: <20100116235400.5D46E1770A@ns6635.ovh.net> py3k results for svn r77551 (hg cset aa42a743d110) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflog7EhdFM', '-x', 'test_httpservers'] From python-checkins at python.org Sun Jan 17 01:15:08 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sun, 17 Jan 2010 00:15:08 -0000 Subject: [Python-checkins] r77558 - tracker/instances/python-dev/lib/openid.py Message-ID: Author: martin.v.loewis Date: Sun Jan 17 01:15:08 2010 New Revision: 77558 Log: Implement HTTP redirect. Modified: tracker/instances/python-dev/lib/openid.py Modified: tracker/instances/python-dev/lib/openid.py ============================================================================== --- tracker/instances/python-dev/lib/openid.py (original) +++ tracker/instances/python-dev/lib/openid.py Sun Jan 17 01:15:08 2010 @@ -167,6 +167,9 @@ data = res.read() conn.close() + if res.status in (301, 302, 303, 307): + return discover(res.msg.get('location')) + content_type = res.msg.gettype() # Yadis 6.2.5 option 2 and 3: header includes x-xrds-location From nnorwitz at gmail.com Sun Jan 17 02:29:35 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 16 Jan 2010 20:29:35 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100117012935.GA3283@kbk-i386-bb.psfb.org> 349 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-28406 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.484s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [21198 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 349 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [889146 refs] From python-checkins at python.org Sun Jan 17 09:33:18 2010 From: python-checkins at python.org (georg.brandl) Date: Sun, 17 Jan 2010 08:33:18 -0000 Subject: [Python-checkins] r77559 - in python/branches/release26-maint: Doc/library/calendar.rst Message-ID: Author: georg.brandl Date: Sun Jan 17 09:33:18 2010 New Revision: 77559 Log: Merged revisions 76471 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r76471 | georg.brandl | 2009-11-23 20:53:19 +0100 (Mo, 23 Nov 2009) | 1 line #7345: fix arguments of formatyear(). ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Doc/library/calendar.rst Modified: python/branches/release26-maint/Doc/library/calendar.rst ============================================================================== --- python/branches/release26-maint/Doc/library/calendar.rst (original) +++ python/branches/release26-maint/Doc/library/calendar.rst Sun Jan 17 09:33:18 2010 @@ -129,7 +129,7 @@ Print a month's calendar as returned by :meth:`formatmonth`. - .. method:: formatyear(theyear, themonth[, w[, l[, c[, m]]]]) + .. method:: formatyear(theyear[, w[, l[, c[, m]]]]) Return a *m*-column calendar for an entire year as a multi-line string. Optional parameters *w*, *l*, and *c* are for date column width, lines per @@ -160,7 +160,7 @@ used. - .. method:: formatyear(theyear, themonth[, width]) + .. method:: formatyear(theyear[, width]) Return a year's calendar as an HTML table. *width* (defaulting to 3) specifies the number of months per row. From python-checkins at python.org Sun Jan 17 09:42:18 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sun, 17 Jan 2010 08:42:18 -0000 Subject: [Python-checkins] r77560 - tracker/instances/python-dev/extensions/openid_login.py Message-ID: Author: martin.v.loewis Date: Sun Jan 17 09:42:17 2010 New Revision: 77560 Log: Fix typo. Modified: tracker/instances/python-dev/extensions/openid_login.py Modified: tracker/instances/python-dev/extensions/openid_login.py ============================================================================== --- tracker/instances/python-dev/extensions/openid_login.py (original) +++ tracker/instances/python-dev/extensions/openid_login.py Sun Jan 17 09:42:17 2010 @@ -26,7 +26,7 @@ elif expires > date.Date('.')+date.Interval("1:00"): # valid for another hour return self.db.openid_session.getnode(session_id) - elif expores < date.Date('.')-date.Interval("1d"): + elif expires < date.Date('.')-date.Interval("1d"): # expired more than one day ago break else: From python-checkins at python.org Sun Jan 17 09:42:31 2010 From: python-checkins at python.org (georg.brandl) Date: Sun, 17 Jan 2010 08:42:31 -0000 Subject: [Python-checkins] r77561 - python/trunk/Doc/library/datetime.rst Message-ID: Author: georg.brandl Date: Sun Jan 17 09:42:30 2010 New Revision: 77561 Log: #7699: improve datetime docs: straightforward linking to strftime/strptime section, mark classmethods as such. Modified: python/trunk/Doc/library/datetime.rst Modified: python/trunk/Doc/library/datetime.rst ============================================================================== --- python/trunk/Doc/library/datetime.rst (original) +++ python/trunk/Doc/library/datetime.rst Sun Jan 17 09:42:30 2010 @@ -38,7 +38,6 @@ The :mod:`datetime` module exports the following constants: - .. data:: MINYEAR The smallest year number allowed in a :class:`date` or :class:`datetime` object. @@ -63,7 +62,6 @@ Available Types --------------- - .. class:: date :noindex: @@ -133,7 +131,6 @@ A :class:`timedelta` object represents a duration, the difference between two dates or times. - .. class:: timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]]) All arguments are optional and default to ``0``. Arguments may be ints, longs, @@ -170,8 +167,8 @@ >>> (d.days, d.seconds, d.microseconds) (-1, 86399, 999999) -Class attributes are: +Class attributes are: .. attribute:: timedelta.min @@ -328,16 +325,16 @@ If an argument outside those ranges is given, :exc:`ValueError` is raised. -Other constructors, all class methods: +Other constructors, all class methods: -.. method:: date.today() +.. classmethod:: date.today() Return the current local date. This is equivalent to ``date.fromtimestamp(time.time())``. -.. method:: date.fromtimestamp(timestamp) +.. classmethod:: date.fromtimestamp(timestamp) Return the local date corresponding to the POSIX timestamp, such as is returned by :func:`time.time`. This may raise :exc:`ValueError`, if the timestamp is out @@ -347,15 +344,15 @@ timestamp, leap seconds are ignored by :meth:`fromtimestamp`. -.. method:: date.fromordinal(ordinal) +.. classmethod:: date.fromordinal(ordinal) Return the date corresponding to the proleptic Gregorian ordinal, where January 1 of year 1 has ordinal 1. :exc:`ValueError` is raised unless ``1 <= ordinal <= date.max.toordinal()``. For any date *d*, ``date.fromordinal(d.toordinal()) == d``. -Class attributes: +Class attributes: .. attribute:: date.min @@ -372,8 +369,8 @@ The smallest possible difference between non-equal date objects, ``timedelta(days=1)``. -Instance attributes (read-only): +Instance attributes (read-only): .. attribute:: date.year @@ -389,6 +386,7 @@ Between 1 and the number of days in the given month of the given year. + Supported operations: +-------------------------------+----------------------------------------------+ @@ -441,7 +439,6 @@ Instance methods: - .. method:: date.replace(year, month, day) Return a date with the same value, except for those members given new values by @@ -521,7 +518,8 @@ Return a string representing the date, controlled by an explicit format string. Format codes referring to hours, minutes or seconds will see 0 values. See - section :ref:`strftime-behavior`. + section :ref:`strftime-strptime-behavior`. + Example of counting days to an event:: @@ -588,7 +586,6 @@ Constructor: - .. class:: datetime(year, month, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]) The year, month and day arguments are required. *tzinfo* may be ``None``, or an @@ -607,15 +604,14 @@ Other constructors, all class methods: - -.. method:: datetime.today() +.. classmethod:: datetime.today() Return the current local datetime, with :attr:`tzinfo` ``None``. This is equivalent to ``datetime.fromtimestamp(time.time())``. See also :meth:`now`, :meth:`fromtimestamp`. -.. method:: datetime.now([tz]) +.. classmethod:: datetime.now([tz]) Return the current local date and time. If optional argument *tz* is ``None`` or not specified, this is like :meth:`today`, but, if possible, supplies more @@ -629,14 +625,14 @@ See also :meth:`today`, :meth:`utcnow`. -.. method:: datetime.utcnow() +.. classmethod:: datetime.utcnow() Return the current UTC date and time, with :attr:`tzinfo` ``None``. This is like :meth:`now`, but returns the current UTC date and time, as a naive :class:`datetime` object. See also :meth:`now`. -.. method:: datetime.fromtimestamp(timestamp[, tz]) +.. classmethod:: datetime.fromtimestamp(timestamp[, tz]) Return the local date and time corresponding to the POSIX timestamp, such as is returned by :func:`time.time`. If optional argument *tz* is ``None`` or not @@ -657,7 +653,7 @@ identical :class:`datetime` objects. See also :meth:`utcfromtimestamp`. -.. method:: datetime.utcfromtimestamp(timestamp) +.. classmethod:: datetime.utcfromtimestamp(timestamp) Return the UTC :class:`datetime` corresponding to the POSIX timestamp, with :attr:`tzinfo` ``None``. This may raise :exc:`ValueError`, if the timestamp is @@ -666,7 +662,7 @@ :meth:`fromtimestamp`. -.. method:: datetime.fromordinal(ordinal) +.. classmethod:: datetime.fromordinal(ordinal) Return the :class:`datetime` corresponding to the proleptic Gregorian ordinal, where January 1 of year 1 has ordinal 1. :exc:`ValueError` is raised unless ``1 @@ -674,7 +670,7 @@ microsecond of the result are all 0, and :attr:`tzinfo` is ``None``. -.. method:: datetime.combine(date, time) +.. classmethod:: datetime.combine(date, time) Return a new :class:`datetime` object whose date members are equal to the given :class:`date` object's, and whose time and :attr:`tzinfo` members are equal to @@ -683,18 +679,18 @@ object, its time and :attr:`tzinfo` members are ignored. -.. method:: datetime.strptime(date_string, format) +.. classmethod:: datetime.strptime(date_string, format) Return a :class:`datetime` corresponding to *date_string*, parsed according to *format*. This is equivalent to ``datetime(*(time.strptime(date_string, format)[0:6]))``. :exc:`ValueError` is raised if the date_string and format can't be parsed by :func:`time.strptime` or if it returns a value which isn't a - time tuple. + time tuple. See section :ref:`strftime-strptime-behavior`. .. versionadded:: 2.5 -Class attributes: +Class attributes: .. attribute:: datetime.min @@ -713,8 +709,8 @@ The smallest possible difference between non-equal :class:`datetime` objects, ``timedelta(microseconds=1)``. -Instance attributes (read-only): +Instance attributes (read-only): .. attribute:: datetime.year @@ -756,6 +752,7 @@ The object passed as the *tzinfo* argument to the :class:`datetime` constructor, or ``None`` if none was passed. + Supported operations: +---------------------------------------+-------------------------------+ @@ -829,7 +826,6 @@ Instance methods: - .. method:: datetime.date() Return :class:`date` object with same year, month and day. @@ -1007,7 +1003,8 @@ .. method:: datetime.strftime(format) Return a string representing the date and time, controlled by an explicit format - string. See section :ref:`strftime-behavior`. + string. See section :ref:`strftime-strptime-behavior`. + Examples of working with datetime objects: @@ -1120,7 +1117,6 @@ A time object represents a (local) time of day, independent of any particular day, and subject to adjustment via a :class:`tzinfo` object. - .. class:: time(hour[, minute[, second[, microsecond[, tzinfo]]]]) All arguments are optional. *tzinfo* may be ``None``, or an instance of a @@ -1154,8 +1150,8 @@ ``timedelta(microseconds=1)``, although note that arithmetic on :class:`time` objects is not supported. -Instance attributes (read-only): +Instance attributes (read-only): .. attribute:: time.hour @@ -1182,6 +1178,7 @@ The object passed as the tzinfo argument to the :class:`time` constructor, or ``None`` if none was passed. + Supported operations: * comparison of :class:`time` to :class:`time`, where *a* is considered less @@ -1204,8 +1201,8 @@ only if, after converting it to minutes and subtracting :meth:`utcoffset` (or ``0`` if that's ``None``), the result is non-zero. -Instance methods: +Instance methods: .. method:: time.replace([hour[, minute[, second[, microsecond[, tzinfo]]]]]) @@ -1231,7 +1228,7 @@ .. method:: time.strftime(format) Return a string representing the time, controlled by an explicit format string. - See section :ref:`strftime-behavior`. + See section :ref:`strftime-strptime-behavior`. .. method:: time.utcoffset() @@ -1256,6 +1253,7 @@ ``self.tzinfo.tzname(None)``, or raises an exception if the latter doesn't return ``None`` or a string object. + Example: >>> from datetime import time, tzinfo @@ -1392,6 +1390,7 @@ The default implementation of :meth:`tzname` raises :exc:`NotImplementedError`. + These methods are called by a :class:`datetime` or :class:`time` object, in response to their methods of the same names. A :class:`datetime` object passes itself as the argument, and a :class:`time` object passes ``None`` as the @@ -1495,10 +1494,10 @@ EST (fixed offset -5 hours), or only EDT (fixed offset -4 hours)). -.. _strftime-behavior: +.. _strftime-strptime-behavior: -:meth:`strftime` Behavior -------------------------- +:meth:`strftime` and :meth:`strptime` Behavior +---------------------------------------------- :class:`date`, :class:`datetime`, and :class:`time` objects all support a ``strftime(format)`` method, to create a string representing the time under the @@ -1506,9 +1505,14 @@ acts like the :mod:`time` module's ``time.strftime(fmt, d.timetuple())`` although not all objects support a :meth:`timetuple` method. +Conversely, the :meth:`datetime.strptime` class method creates a +:class:`datetime` object from a string representing a date and time and a +corresponding format string. ``datetime.strptime(date_string, format)`` is +equivalent to ``datetime(*(time.strptime(date_string, format)[0:6]))``. + For :class:`time` objects, the format codes for year, month, and day should not be used, as time objects have no such values. If they're used anyway, ``1900`` -is substituted for the year, and ``0`` for the month and day. +is substituted for the year, and ``1`` for the month and day. For :class:`date` objects, the format codes for hours, minutes, seconds, and microseconds should not be used, as :class:`date` objects have no such @@ -1635,14 +1639,14 @@ Notes: (1) - When used with the :func:`strptime` function, the ``%f`` directive + When used with the :meth:`strptime` method, the ``%f`` directive accepts from one to six digits and zero pads on the right. ``%f`` is an extension to the set of format characters in the C standard (but implemented separately in datetime objects, and therefore always available). (2) - When used with the :func:`strptime` function, the ``%p`` directive only affects + When used with the :meth:`strptime` method, the ``%p`` directive only affects the output hour field if the ``%I`` directive is used to parse the hour. (3) @@ -1650,11 +1654,11 @@ accounts for leap seconds and the (very rare) double leap seconds. The :mod:`time` module may produce and does accept leap seconds since it is based on the Posix standard, but the :mod:`datetime` module - does not accept leap seconds in :func:`strptime` input nor will it + does not accept leap seconds in :meth:`strptime` input nor will it produce them in :func:`strftime` output. (4) - When used with the :func:`strptime` function, ``%U`` and ``%W`` are only used in + When used with the :meth:`strptime` method, ``%U`` and ``%W`` are only used in calculations when the day of the week and the year are specified. (5) From python-checkins at python.org Sun Jan 17 09:50:15 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sun, 17 Jan 2010 08:50:15 -0000 Subject: [Python-checkins] r77562 - tracker/instances/python-dev/extensions/openid_login.py Message-ID: Author: martin.v.loewis Date: Sun Jan 17 09:50:15 2010 New Revision: 77562 Log: Report failed discoveries. Modified: tracker/instances/python-dev/extensions/openid_login.py Modified: tracker/instances/python-dev/extensions/openid_login.py ============================================================================== --- tracker/instances/python-dev/extensions/openid_login.py (original) +++ tracker/instances/python-dev/extensions/openid_login.py Sun Jan 17 09:50:15 2010 @@ -76,7 +76,10 @@ type, claimed = openid.normalize_uri(username) if type == 'xri': raise ValueError, "XRIs are not supported" - stypes, url, op_local = discovered = openid.discover(claimed) + discovered = openid.discover(claimed) + if not discovered: + raise ValueError, "OpenID provider discovery failed" + stypes, url, op_local = discovered session = self.get_session(claimed, discovered) # one session per claimed id realm = self.base+"?@action=openid_return" return_to = realm + "&__came_from=%s" % urllib.quote(self.client.path) From python-checkins at python.org Sun Jan 17 09:54:22 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sun, 17 Jan 2010 08:54:22 -0000 Subject: [Python-checkins] r77563 - tracker/instances/python-dev/lib/openid.py Message-ID: Author: martin.v.loewis Date: Sun Jan 17 09:54:21 2010 New Revision: 77563 Log: Catch socket errors. Modified: tracker/instances/python-dev/lib/openid.py Modified: tracker/instances/python-dev/lib/openid.py ============================================================================== --- tracker/instances/python-dev/lib/openid.py (original) +++ tracker/instances/python-dev/lib/openid.py Sun Jan 17 09:54:21 2010 @@ -154,6 +154,11 @@ # conn.set_debuglevel(1) if query: path += '?'+query + try: + h.connect() + except: + # DNS or TCP error + return None # httplib in 2.5 incorrectly sends https port in Host # header even if it is 443 conn.putrequest("GET", path, skip_host=1) From python-checkins at python.org Sun Jan 17 09:55:44 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sun, 17 Jan 2010 08:55:44 -0000 Subject: [Python-checkins] r77564 - tracker/instances/python-dev/lib/openid.py Message-ID: Author: martin.v.loewis Date: Sun Jan 17 09:55:44 2010 New Revision: 77564 Log: Fix typo. Modified: tracker/instances/python-dev/lib/openid.py Modified: tracker/instances/python-dev/lib/openid.py ============================================================================== --- tracker/instances/python-dev/lib/openid.py (original) +++ tracker/instances/python-dev/lib/openid.py Sun Jan 17 09:55:44 2010 @@ -155,7 +155,7 @@ if query: path += '?'+query try: - h.connect() + conn.connect() except: # DNS or TCP error return None From python-checkins at python.org Sun Jan 17 10:12:52 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sun, 17 Jan 2010 09:12:52 -0000 Subject: [Python-checkins] r77565 - tracker/instances/python-dev/extensions/openid_login.py Message-ID: Author: martin.v.loewis Date: Sun Jan 17 10:12:52 2010 New Revision: 77565 Log: Implement RP discovery. Modified: tracker/instances/python-dev/extensions/openid_login.py Modified: tracker/instances/python-dev/extensions/openid_login.py ============================================================================== --- tracker/instances/python-dev/extensions/openid_login.py (original) +++ tracker/instances/python-dev/extensions/openid_login.py Sun Jan 17 10:12:52 2010 @@ -112,7 +112,19 @@ # parse again to get cgi kind of result query = cgi.parse_qs(self.client.env['QUERY_STRING']) if 'openid.identity' not in query: - return self.rp_discovery() + # RP discovery + payload = ''' + + + http://specs.openid.net/auth/2.0/return_to + %s?@action=openid_return + + + + ''' % self.base + self.client.additional_headers['Content-Type'] = 'application/xrds+xml' + return payload if 'openid.response_nonce' in query: nonce = query['openid.response_nonce'][0] stamp = openid.parse_nonce(nonce) From nnorwitz at gmail.com Sun Jan 17 10:16:15 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 17 Jan 2010 04:16:15 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100117091615.GA6040@kbk-i386-bb.psfb.org> 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.505s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [872634 refs] From nnorwitz at gmail.com Sun Jan 17 10:28:20 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 17 Jan 2010 04:28:20 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100117092820.GA10150@kbk-i386-bb.psfb.org> 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19651 refs] [19651 refs] [19651 refs] [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.586s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [871528 refs] From python-checkins at python.org Sun Jan 17 12:10:03 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 17 Jan 2010 11:10:03 -0000 Subject: [Python-checkins] r77566 - python/trunk/Lib/test/test_strtod.py Message-ID: Author: mark.dickinson Date: Sun Jan 17 12:10:03 2010 New Revision: 77566 Log: Increase number of strtod tests slightly, to make it more likely that a memory leak is detected. Modified: python/trunk/Lib/test/test_strtod.py Modified: python/trunk/Lib/test/test_strtod.py ============================================================================== --- python/trunk/Lib/test/test_strtod.py (original) +++ python/trunk/Lib/test/test_strtod.py Sun Jan 17 12:10:03 2010 @@ -76,7 +76,7 @@ hexdigs, e + 4*hexdigs) -TEST_SIZE = 10 +TEST_SIZE = 16 @unittest.skipUnless(getattr(sys, 'float_repr_style', '') == 'short', "applies only when using short float repr style") From python-checkins at python.org Sun Jan 17 12:12:22 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 17 Jan 2010 11:12:22 -0000 Subject: [Python-checkins] r77567 - python/branches/release26-maint Message-ID: Author: mark.dickinson Date: Sun Jan 17 12:12:21 2010 New Revision: 77567 Log: Blocked revisions 77566 via svnmerge ........ r77566 | mark.dickinson | 2010-01-17 11:10:03 +0000 (Sun, 17 Jan 2010) | 1 line Increase number of strtod tests slightly, to make it more likely that a memory leak is detected. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Sun Jan 17 12:13:30 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 17 Jan 2010 11:13:30 -0000 Subject: [Python-checkins] r77568 - in python/branches/py3k: Lib/test/test_strtod.py Message-ID: Author: mark.dickinson Date: Sun Jan 17 12:13:30 2010 New Revision: 77568 Log: Merged revisions 77566 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77566 | mark.dickinson | 2010-01-17 11:10:03 +0000 (Sun, 17 Jan 2010) | 1 line Increase number of strtod tests slightly, to make it more likely that a memory leak is detected. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_strtod.py Modified: python/branches/py3k/Lib/test/test_strtod.py ============================================================================== --- python/branches/py3k/Lib/test/test_strtod.py (original) +++ python/branches/py3k/Lib/test/test_strtod.py Sun Jan 17 12:13:30 2010 @@ -76,7 +76,7 @@ hexdigs, e + 4*hexdigs) -TEST_SIZE = 10 +TEST_SIZE = 16 @unittest.skipUnless(getattr(sys, 'float_repr_style', '') == 'short', "applies only when using short float repr style") From python-checkins at python.org Sun Jan 17 12:14:48 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 17 Jan 2010 11:14:48 -0000 Subject: [Python-checkins] r77569 - in python/branches/release31-maint: Lib/test/test_strtod.py Message-ID: Author: mark.dickinson Date: Sun Jan 17 12:14:48 2010 New Revision: 77569 Log: Merged revisions 77568 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77568 | mark.dickinson | 2010-01-17 11:13:30 +0000 (Sun, 17 Jan 2010) | 9 lines Merged revisions 77566 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77566 | mark.dickinson | 2010-01-17 11:10:03 +0000 (Sun, 17 Jan 2010) | 1 line Increase number of strtod tests slightly, to make it more likely that a memory leak is detected. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/test/test_strtod.py Modified: python/branches/release31-maint/Lib/test/test_strtod.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_strtod.py (original) +++ python/branches/release31-maint/Lib/test/test_strtod.py Sun Jan 17 12:14:48 2010 @@ -76,7 +76,7 @@ hexdigs, e + 4*hexdigs) -TEST_SIZE = 10 +TEST_SIZE = 16 @unittest.skipUnless(getattr(sys, 'float_repr_style', '') == 'short', "applies only when using short float repr style") From python-checkins at python.org Sun Jan 17 13:14:42 2010 From: python-checkins at python.org (georg.brandl) Date: Sun, 17 Jan 2010 12:14:42 -0000 Subject: [Python-checkins] r77570 - python/trunk/Objects/stringlib/README.txt Message-ID: Author: georg.brandl Date: Sun Jan 17 13:14:42 2010 New Revision: 77570 Log: Add note about usage of STRINGLIB_EMPTY. Modified: python/trunk/Objects/stringlib/README.txt Modified: python/trunk/Objects/stringlib/README.txt ============================================================================== --- python/trunk/Objects/stringlib/README.txt (original) +++ python/trunk/Objects/stringlib/README.txt Sun Jan 17 13:14:42 2010 @@ -13,7 +13,8 @@ STRINGLIB_EMPTY - a PyObject representing the empty string + a PyObject representing the empty string, only to be used if + STRINGLIB_MUTABLE is 0 Py_ssize_t STRINGLIB_LEN(PyObject*) @@ -31,9 +32,9 @@ int STRINGLIB_CHECK_EXACT(PyObject *) - returns true if the object is an instance of our type, not a subclass. + returns true if the object is an instance of our type, not a subclass STRINGLIB_MUTABLE - Must be 0 or 1 to tell the cpp macros in stringlib code if the object - being operated on is mutable or not. + must be 0 or 1 to tell the cpp macros in stringlib code if the object + being operated on is mutable or not From python-checkins at python.org Sun Jan 17 13:16:23 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sun, 17 Jan 2010 12:16:23 -0000 Subject: [Python-checkins] r77571 - in python/branches/py3k: Lib/test/test_os.py Misc/NEWS Modules/posixmodule.c Message-ID: Author: antoine.pitrou Date: Sun Jan 17 13:16:23 2010 New Revision: 77571 Log: Issue #7561: Fix crashes when using bytearray objects with the posix module. Modified: python/branches/py3k/Lib/test/test_os.py python/branches/py3k/Misc/NEWS python/branches/py3k/Modules/posixmodule.c Modified: python/branches/py3k/Lib/test/test_os.py ============================================================================== --- python/branches/py3k/Lib/test/test_os.py (original) +++ python/branches/py3k/Lib/test/test_os.py Sun Jan 17 13:16:23 2010 @@ -564,6 +564,14 @@ def test_execvpe_with_bad_arglist(self): self.assertRaises(ValueError, os.execvpe, 'notepad', [], None) +class ArgTests(unittest.TestCase): + def test_bytearray(self): + # Issue #7561: posix module didn't release bytearray exports properly. + b = bytearray(os.sep.encode('ascii')) + self.assertRaises(OSError, os.mkdir, b) + # Check object is still resizable. + b[:] = b'' + class Win32ErrorTests(unittest.TestCase): def test_rename(self): self.assertRaises(WindowsError, os.rename, support.TESTFN, support.TESTFN+".bak") @@ -750,6 +758,7 @@ def test_main(): support.run_unittest( + ArgTests, FileTests, StatAttributeTests, EnvironTests, Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Sun Jan 17 13:16:23 2010 @@ -223,6 +223,9 @@ Library ------- +- Issue #7561: Fix crashes when using bytearray objects with the posix + module. + - Issue #1670765: Prevent email.generator.Generator from re-wrapping headers in multipart/signed MIME parts, which fixes one of the sources of invalid modifications to such parts by Generator. Modified: python/branches/py3k/Modules/posixmodule.c ============================================================================== --- python/branches/py3k/Modules/posixmodule.c (original) +++ python/branches/py3k/Modules/posixmodule.c Sun Jan 17 13:16:23 2010 @@ -580,7 +580,7 @@ release_bytes(PyObject* o) { if (PyByteArray_Check(o)) - o->ob_type->tp_as_buffer->bf_releasebuffer(NULL, 0); + o->ob_type->tp_as_buffer->bf_releasebuffer(o, 0); Py_DECREF(o); } From python-checkins at python.org Sun Jan 17 13:19:46 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sun, 17 Jan 2010 12:19:46 -0000 Subject: [Python-checkins] r77572 - in python/branches/release31-maint: Lib/test/test_os.py Misc/NEWS Modules/posixmodule.c Message-ID: Author: antoine.pitrou Date: Sun Jan 17 13:19:45 2010 New Revision: 77572 Log: Merged revisions 77571 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ........ r77571 | antoine.pitrou | 2010-01-17 13:16:23 +0100 (dim., 17 janv. 2010) | 4 lines Issue #7561: Fix crashes when using bytearray objects with the posix module. ........ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/test/test_os.py python/branches/release31-maint/Misc/NEWS python/branches/release31-maint/Modules/posixmodule.c Modified: python/branches/release31-maint/Lib/test/test_os.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_os.py (original) +++ python/branches/release31-maint/Lib/test/test_os.py Sun Jan 17 13:19:45 2010 @@ -564,6 +564,14 @@ def test_execvpe_with_bad_arglist(self): self.assertRaises(ValueError, os.execvpe, 'notepad', [], None) +class ArgTests(unittest.TestCase): + def test_bytearray(self): + # Issue #7561: posix module didn't release bytearray exports properly. + b = bytearray(os.sep.encode('ascii')) + self.assertRaises(OSError, os.mkdir, b) + # Check object is still resizable. + b[:] = b'' + class Win32ErrorTests(unittest.TestCase): def test_rename(self): self.assertRaises(WindowsError, os.rename, support.TESTFN, support.TESTFN+".bak") @@ -750,6 +758,7 @@ def test_main(): support.run_unittest( + ArgTests, FileTests, StatAttributeTests, EnvironTests, Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Sun Jan 17 13:19:45 2010 @@ -67,6 +67,9 @@ Library ------- +- Issue #7561: Fix crashes when using bytearray objects with the posix + module. + - Issue #1670765: Prevent email.generator.Generator from re-wrapping headers in multipart/signed MIME parts, which fixes one of the sources of invalid modifications to such parts by Generator. Modified: python/branches/release31-maint/Modules/posixmodule.c ============================================================================== --- python/branches/release31-maint/Modules/posixmodule.c (original) +++ python/branches/release31-maint/Modules/posixmodule.c Sun Jan 17 13:19:45 2010 @@ -580,7 +580,7 @@ release_bytes(PyObject* o) { if (PyByteArray_Check(o)) - o->ob_type->tp_as_buffer->bf_releasebuffer(NULL, 0); + o->ob_type->tp_as_buffer->bf_releasebuffer(o, 0); Py_DECREF(o); } From python-checkins at python.org Sun Jan 17 13:26:20 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sun, 17 Jan 2010 12:26:20 -0000 Subject: [Python-checkins] r77573 - in python/trunk: Include/bytearrayobject.h Lib/test/test_bytes.py Misc/NEWS Objects/bytearrayobject.c Message-ID: Author: antoine.pitrou Date: Sun Jan 17 13:26:20 2010 New Revision: 77573 Log: Issue #7561: Operations on empty bytearrays (such as `int(bytearray())`) could crash in many places because of the PyByteArray_AS_STRING() macro returning NULL. The macro now returns a statically allocated empty string instead. Modified: python/trunk/Include/bytearrayobject.h python/trunk/Lib/test/test_bytes.py python/trunk/Misc/NEWS python/trunk/Objects/bytearrayobject.c Modified: python/trunk/Include/bytearrayobject.h ============================================================================== --- python/trunk/Include/bytearrayobject.h (original) +++ python/trunk/Include/bytearrayobject.h Sun Jan 17 13:26:20 2010 @@ -44,9 +44,13 @@ PyAPI_FUNC(int) PyByteArray_Resize(PyObject *, Py_ssize_t); /* Macros, trading safety for speed */ -#define PyByteArray_AS_STRING(self) (assert(PyByteArray_Check(self)),((PyByteArrayObject *)(self))->ob_bytes) +#define PyByteArray_AS_STRING(self) \ + (assert(PyByteArray_Check(self)), \ + Py_SIZE(self) ? ((PyByteArrayObject *)(self))->ob_bytes : _PyByteArray_empty_string) #define PyByteArray_GET_SIZE(self) (assert(PyByteArray_Check(self)),Py_SIZE(self)) +extern char _PyByteArray_empty_string[]; + #ifdef __cplusplus } #endif Modified: python/trunk/Lib/test/test_bytes.py ============================================================================== --- python/trunk/Lib/test/test_bytes.py (original) +++ python/trunk/Lib/test/test_bytes.py Sun Jan 17 13:26:20 2010 @@ -783,6 +783,13 @@ self.assertRaises(BufferError, delslice) self.assertEquals(b, orig) + def test_empty_bytearray(self): + # Issue #7561: operations on empty bytearrays could crash in many + # situations, due to a fragile implementation of the + # PyByteArray_AS_STRING() C macro. + self.assertRaises(ValueError, int, bytearray(b'')) + + class AssortedBytesTest(unittest.TestCase): # # Test various combinations of bytes and bytearray Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Jan 17 13:26:20 2010 @@ -12,6 +12,11 @@ Core and Builtins ----------------- +- Issue #7561: Operations on empty bytearrays (such as `int(bytearray())`) + could crash in many places because of the PyByteArray_AS_STRING() macro + returning NULL. The macro now returns a statically allocated empty + string instead. + - Issue #7622: Improve the split(), rsplit(), splitlines() and replace() methods of bytes, bytearray and unicode objects by using a common implementation based on stringlib's fast search. Patch by Florent Xicluna. Modified: python/trunk/Objects/bytearrayobject.c ============================================================================== --- python/trunk/Objects/bytearrayobject.c (original) +++ python/trunk/Objects/bytearrayobject.c Sun Jan 17 13:26:20 2010 @@ -5,23 +5,16 @@ #include "structmember.h" #include "bytes_methods.h" -static PyByteArrayObject *nullbytes = NULL; +char _PyByteArray_empty_string[] = ""; void PyByteArray_Fini(void) { - Py_CLEAR(nullbytes); } int PyByteArray_Init(void) { - nullbytes = PyObject_New(PyByteArrayObject, &PyByteArray_Type); - if (nullbytes == NULL) - return 0; - nullbytes->ob_bytes = NULL; - Py_SIZE(nullbytes) = nullbytes->ob_alloc = 0; - nullbytes->ob_exports = 0; return 1; } @@ -74,7 +67,7 @@ "accessing non-existent bytes segment"); return -1; } - *ptr = (void *)self->ob_bytes; + *ptr = (void *)PyByteArray_AS_STRING(self); return Py_SIZE(self); } @@ -86,7 +79,7 @@ "accessing non-existent bytes segment"); return -1; } - *ptr = (void *)self->ob_bytes; + *ptr = (void *)PyByteArray_AS_STRING(self); return Py_SIZE(self); } @@ -106,7 +99,7 @@ "accessing non-existent bytes segment"); return -1; } - *ptr = self->ob_bytes; + *ptr = PyByteArray_AS_STRING(self); return Py_SIZE(self); } @@ -119,10 +112,7 @@ obj->ob_exports++; return 0; } - if (obj->ob_bytes == NULL) - ptr = ""; - else - ptr = obj->ob_bytes; + ptr = (void *) PyByteArray_AS_STRING(obj); ret = PyBuffer_FillInfo(view, (PyObject*)obj, ptr, Py_SIZE(obj), 0, flags); if (ret >= 0) { obj->ob_exports++; @@ -201,7 +191,7 @@ Py_DECREF(new); return PyErr_NoMemory(); } - if (bytes != NULL) + if (bytes != NULL && size > 0) memcpy(new->ob_bytes, bytes, size); new->ob_bytes[size] = '\0'; /* Trailing null byte */ } @@ -1114,7 +1104,6 @@ #define STRINGLIB_LEN PyByteArray_GET_SIZE #define STRINGLIB_STR PyByteArray_AS_STRING #define STRINGLIB_NEW PyByteArray_FromStringAndSize -#define STRINGLIB_EMPTY nullbytes #define STRINGLIB_ISSPACE Py_ISSPACE #define STRINGLIB_ISLINEBREAK(x) ((x == '\n') || (x == '\r')) #define STRINGLIB_CHECK_EXACT PyByteArray_CheckExact From python-checkins at python.org Sun Jan 17 13:31:11 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sun, 17 Jan 2010 12:31:11 -0000 Subject: [Python-checkins] r77574 - in python/branches/release26-maint: Include/bytearrayobject.h Lib/test/test_bytes.py Misc/NEWS Objects/bytearrayobject.c Message-ID: Author: antoine.pitrou Date: Sun Jan 17 13:31:10 2010 New Revision: 77574 Log: Merged revisions 77573 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77573 | antoine.pitrou | 2010-01-17 13:26:20 +0100 (dim., 17 janv. 2010) | 6 lines Issue #7561: Operations on empty bytearrays (such as `int(bytearray())`) could crash in many places because of the PyByteArray_AS_STRING() macro returning NULL. The macro now returns a statically allocated empty string instead. ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Include/bytearrayobject.h python/branches/release26-maint/Lib/test/test_bytes.py python/branches/release26-maint/Misc/NEWS python/branches/release26-maint/Objects/bytearrayobject.c Modified: python/branches/release26-maint/Include/bytearrayobject.h ============================================================================== --- python/branches/release26-maint/Include/bytearrayobject.h (original) +++ python/branches/release26-maint/Include/bytearrayobject.h Sun Jan 17 13:31:10 2010 @@ -44,9 +44,13 @@ PyAPI_FUNC(int) PyByteArray_Resize(PyObject *, Py_ssize_t); /* Macros, trading safety for speed */ -#define PyByteArray_AS_STRING(self) (assert(PyByteArray_Check(self)),((PyByteArrayObject *)(self))->ob_bytes) +#define PyByteArray_AS_STRING(self) \ + (assert(PyByteArray_Check(self)), \ + Py_SIZE(self) ? ((PyByteArrayObject *)(self))->ob_bytes : _PyByteArray_empty_string) #define PyByteArray_GET_SIZE(self) (assert(PyByteArray_Check(self)),Py_SIZE(self)) +extern char _PyByteArray_empty_string[]; + #ifdef __cplusplus } #endif Modified: python/branches/release26-maint/Lib/test/test_bytes.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_bytes.py (original) +++ python/branches/release26-maint/Lib/test/test_bytes.py Sun Jan 17 13:31:10 2010 @@ -787,6 +787,13 @@ self.assertRaises(BufferError, delslice) self.assertEquals(b, orig) + def test_empty_bytearray(self): + # Issue #7561: operations on empty bytearrays could crash in many + # situations, due to a fragile implementation of the + # PyByteArray_AS_STRING() C macro. + self.assertRaises(ValueError, int, bytearray(b'')) + + class AssortedBytesTest(unittest.TestCase): # # Test various combinations of bytes and bytearray Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Sun Jan 17 13:31:10 2010 @@ -12,6 +12,11 @@ Core and Builtins ----------------- +- Issue #7561: Operations on empty bytearrays (such as `int(bytearray())`) + could crash in many places because of the PyByteArray_AS_STRING() macro + returning NULL. The macro now returns a statically allocated empty + string instead. + - Issue #7604: Deleting an unset slotted attribute did not raise an AttributeError. Modified: python/branches/release26-maint/Objects/bytearrayobject.c ============================================================================== --- python/branches/release26-maint/Objects/bytearrayobject.c (original) +++ python/branches/release26-maint/Objects/bytearrayobject.c Sun Jan 17 13:31:10 2010 @@ -6,6 +6,7 @@ #include "bytes_methods.h" static PyByteArrayObject *nullbytes = NULL; +char _PyByteArray_empty_string[] = ""; void PyByteArray_Fini(void) @@ -74,7 +75,7 @@ "accessing non-existent bytes segment"); return -1; } - *ptr = (void *)self->ob_bytes; + *ptr = (void *)PyByteArray_AS_STRING(self); return Py_SIZE(self); } @@ -86,7 +87,7 @@ "accessing non-existent bytes segment"); return -1; } - *ptr = (void *)self->ob_bytes; + *ptr = (void *)PyByteArray_AS_STRING(self); return Py_SIZE(self); } @@ -106,7 +107,7 @@ "accessing non-existent bytes segment"); return -1; } - *ptr = self->ob_bytes; + *ptr = PyByteArray_AS_STRING(self); return Py_SIZE(self); } @@ -119,10 +120,7 @@ obj->ob_exports++; return 0; } - if (obj->ob_bytes == NULL) - ptr = ""; - else - ptr = obj->ob_bytes; + ptr = (void *) PyByteArray_AS_STRING(obj); ret = PyBuffer_FillInfo(view, (PyObject*)obj, ptr, Py_SIZE(obj), 0, flags); if (ret >= 0) { obj->ob_exports++; @@ -201,7 +199,7 @@ Py_DECREF(new); return PyErr_NoMemory(); } - if (bytes != NULL) + if (bytes != NULL && size > 0) memcpy(new->ob_bytes, bytes, size); new->ob_bytes[size] = '\0'; /* Trailing null byte */ } From python-checkins at python.org Sun Jan 17 13:38:11 2010 From: python-checkins at python.org (ronald.oussoren) Date: Sun, 17 Jan 2010 12:38:11 -0000 Subject: [Python-checkins] r77575 - python/trunk/Mac/README Message-ID: Author: ronald.oussoren Date: Sun Jan 17 13:38:11 2010 New Revision: 77575 Log: Add text to Mac/README to warn about non-universal libraries when building a universal Python. Based on issue7679. Modified: python/trunk/Mac/README Modified: python/trunk/Mac/README ============================================================================== --- python/trunk/Mac/README (original) +++ python/trunk/Mac/README Sun Jan 17 13:38:11 2010 @@ -224,6 +224,25 @@ from within the BuildScript directory. The script accepts a number of command-line arguments, run it with --help for more information. +Configure warnings +================== + +The configure script sometimes emits warnings like the one below:: + + configure: WARNING: libintl.h: present but cannot be compiled + configure: WARNING: libintl.h: check for missing prerequisite headers? + configure: WARNING: libintl.h: see the Autoconf documentation + configure: WARNING: libintl.h: section "Present But Cannot Be Compiled" + configure: WARNING: libintl.h: proceeding with the preprocessor's result + configure: WARNING: libintl.h: in the future, the compiler will take precedence + configure: WARNING: ## -------------------------------------- ## + configure: WARNING: ## Report this to http://bugs.python.org/ ## + configure: WARNING: ## -------------------------------------- ## + +This almost always means you are trying to build a universal binary for +Python and have libaries in ``/usr/local`` that don't contain the required +architectures. Temporarily move ``/usr/local`` aside to finish the build. + Odds and ends ============= From python-checkins at python.org Sun Jan 17 13:38:54 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sun, 17 Jan 2010 12:38:54 -0000 Subject: [Python-checkins] r77576 - in python/branches/py3k: Include/bytearrayobject.h Lib/test/test_bytes.py Misc/NEWS Objects/bytearrayobject.c Message-ID: Author: antoine.pitrou Date: Sun Jan 17 13:38:54 2010 New Revision: 77576 Log: Merged revisions 77573 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77573 | antoine.pitrou | 2010-01-17 13:26:20 +0100 (dim., 17 janv. 2010) | 6 lines Issue #7561: Operations on empty bytearrays (such as `int(bytearray())`) could crash in many places because of the PyByteArray_AS_STRING() macro returning NULL. The macro now returns a statically allocated empty string instead. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Include/bytearrayobject.h python/branches/py3k/Lib/test/test_bytes.py python/branches/py3k/Misc/NEWS python/branches/py3k/Objects/bytearrayobject.c Modified: python/branches/py3k/Include/bytearrayobject.h ============================================================================== --- python/branches/py3k/Include/bytearrayobject.h (original) +++ python/branches/py3k/Include/bytearrayobject.h Sun Jan 17 13:38:54 2010 @@ -44,9 +44,13 @@ PyAPI_FUNC(int) PyByteArray_Resize(PyObject *, Py_ssize_t); /* Macros, trading safety for speed */ -#define PyByteArray_AS_STRING(self) (assert(PyByteArray_Check(self)),((PyByteArrayObject *)(self))->ob_bytes) +#define PyByteArray_AS_STRING(self) \ + (assert(PyByteArray_Check(self)), \ + Py_SIZE(self) ? ((PyByteArrayObject *)(self))->ob_bytes : _PyByteArray_empty_string) #define PyByteArray_GET_SIZE(self) (assert(PyByteArray_Check(self)),Py_SIZE(self)) +extern char _PyByteArray_empty_string[]; + #ifdef __cplusplus } #endif Modified: python/branches/py3k/Lib/test/test_bytes.py ============================================================================== --- python/branches/py3k/Lib/test/test_bytes.py (original) +++ python/branches/py3k/Lib/test/test_bytes.py Sun Jan 17 13:38:54 2010 @@ -817,6 +817,14 @@ self.assertRaises(BufferError, delslice) self.assertEquals(b, orig) + def test_empty_bytearray(self): + # Issue #7561: operations on empty bytearrays could crash in many + # situations, due to a fragile implementation of the + # PyByteArray_AS_STRING() C macro. + self.assertRaises(ValueError, int, bytearray(b'')) + self.assertRaises((ValueError, OSError), os.mkdir, bytearray(b'')) + + class AssortedBytesTest(unittest.TestCase): # # Test various combinations of bytes and bytearray Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Sun Jan 17 13:38:54 2010 @@ -12,6 +12,11 @@ Core and Builtins ----------------- +- Issue #7561: Operations on empty bytearrays (such as `int(bytearray())`) + could crash in many places because of the PyByteArray_AS_STRING() macro + returning NULL. The macro now returns a statically allocated empty + string instead. + - Issue #6690: Optimize the bytecode for expressions such as `x in {1, 2, 3}`, where the right hand operand is a set of constants, by turning the set into a frozenset and pre-building it as a constant. The comparison operation Modified: python/branches/py3k/Objects/bytearrayobject.c ============================================================================== --- python/branches/py3k/Objects/bytearrayobject.c (original) +++ python/branches/py3k/Objects/bytearrayobject.c Sun Jan 17 13:38:54 2010 @@ -5,23 +5,16 @@ #include "structmember.h" #include "bytes_methods.h" -static PyByteArrayObject *nullbytes = NULL; +char _PyByteArray_empty_string[] = ""; void PyByteArray_Fini(void) { - Py_CLEAR(nullbytes); } int PyByteArray_Init(void) { - nullbytes = PyObject_New(PyByteArrayObject, &PyByteArray_Type); - if (nullbytes == NULL) - return 0; - nullbytes->ob_bytes = NULL; - Py_SIZE(nullbytes) = nullbytes->ob_alloc = 0; - nullbytes->ob_exports = 0; return 1; } @@ -65,10 +58,7 @@ obj->ob_exports++; return 0; } - if (obj->ob_bytes == NULL) - ptr = ""; - else - ptr = obj->ob_bytes; + ptr = (void *) PyByteArray_AS_STRING(obj); ret = PyBuffer_FillInfo(view, (PyObject*)obj, ptr, Py_SIZE(obj), 0, flags); if (ret >= 0) { obj->ob_exports++; @@ -152,7 +142,7 @@ Py_DECREF(new); return PyErr_NoMemory(); } - if (bytes != NULL) + if (bytes != NULL && size > 0) memcpy(new->ob_bytes, bytes, size); new->ob_bytes[size] = '\0'; /* Trailing null byte */ } @@ -1038,7 +1028,6 @@ #define STRINGLIB_LEN PyByteArray_GET_SIZE #define STRINGLIB_STR PyByteArray_AS_STRING #define STRINGLIB_NEW PyByteArray_FromStringAndSize -#define STRINGLIB_EMPTY nullbytes #define STRINGLIB_ISSPACE Py_ISSPACE #define STRINGLIB_ISLINEBREAK(x) ((x == '\n') || (x == '\r')) #define STRINGLIB_CHECK_EXACT PyByteArray_CheckExact From python-checkins at python.org Sun Jan 17 13:43:00 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sun, 17 Jan 2010 12:43:00 -0000 Subject: [Python-checkins] r77577 - in python/branches/release31-maint: Include/bytearrayobject.h Lib/test/test_bytes.py Misc/NEWS Objects/bytearrayobject.c Message-ID: Author: antoine.pitrou Date: Sun Jan 17 13:43:00 2010 New Revision: 77577 Log: Merged revisions 77576 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77576 | antoine.pitrou | 2010-01-17 13:38:54 +0100 (dim., 17 janv. 2010) | 12 lines Merged revisions 77573 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77573 | antoine.pitrou | 2010-01-17 13:26:20 +0100 (dim., 17 janv. 2010) | 6 lines Issue #7561: Operations on empty bytearrays (such as `int(bytearray())`) could crash in many places because of the PyByteArray_AS_STRING() macro returning NULL. The macro now returns a statically allocated empty string instead. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Include/bytearrayobject.h python/branches/release31-maint/Lib/test/test_bytes.py python/branches/release31-maint/Misc/NEWS python/branches/release31-maint/Objects/bytearrayobject.c Modified: python/branches/release31-maint/Include/bytearrayobject.h ============================================================================== --- python/branches/release31-maint/Include/bytearrayobject.h (original) +++ python/branches/release31-maint/Include/bytearrayobject.h Sun Jan 17 13:43:00 2010 @@ -44,9 +44,13 @@ PyAPI_FUNC(int) PyByteArray_Resize(PyObject *, Py_ssize_t); /* Macros, trading safety for speed */ -#define PyByteArray_AS_STRING(self) (assert(PyByteArray_Check(self)),((PyByteArrayObject *)(self))->ob_bytes) +#define PyByteArray_AS_STRING(self) \ + (assert(PyByteArray_Check(self)), \ + Py_SIZE(self) ? ((PyByteArrayObject *)(self))->ob_bytes : _PyByteArray_empty_string) #define PyByteArray_GET_SIZE(self) (assert(PyByteArray_Check(self)),Py_SIZE(self)) +extern char _PyByteArray_empty_string[]; + #ifdef __cplusplus } #endif Modified: python/branches/release31-maint/Lib/test/test_bytes.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_bytes.py (original) +++ python/branches/release31-maint/Lib/test/test_bytes.py Sun Jan 17 13:43:00 2010 @@ -811,6 +811,14 @@ self.assertRaises(BufferError, delslice) self.assertEquals(b, orig) + def test_empty_bytearray(self): + # Issue #7561: operations on empty bytearrays could crash in many + # situations, due to a fragile implementation of the + # PyByteArray_AS_STRING() C macro. + self.assertRaises(ValueError, int, bytearray(b'')) + self.assertRaises((ValueError, OSError), os.mkdir, bytearray(b'')) + + class AssortedBytesTest(unittest.TestCase): # # Test various combinations of bytes and bytearray Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Sun Jan 17 13:43:00 2010 @@ -12,6 +12,11 @@ Core and Builtins ----------------- +- Issue #7561: Operations on empty bytearrays (such as `int(bytearray())`) + could crash in many places because of the PyByteArray_AS_STRING() macro + returning NULL. The macro now returns a statically allocated empty + string instead. + - Issue #7632: Fix various str -> float conversion bugs present in 2.7 alpha 2, including: (1) a serious 'wrong output' bug that could occur for long (> 40 digit) input strings, (2) a crash in dtoa.c Modified: python/branches/release31-maint/Objects/bytearrayobject.c ============================================================================== --- python/branches/release31-maint/Objects/bytearrayobject.c (original) +++ python/branches/release31-maint/Objects/bytearrayobject.c Sun Jan 17 13:43:00 2010 @@ -6,6 +6,7 @@ #include "bytes_methods.h" static PyByteArrayObject *nullbytes = NULL; +char _PyByteArray_empty_string[] = ""; void PyByteArray_Fini(void) @@ -65,10 +66,7 @@ obj->ob_exports++; return 0; } - if (obj->ob_bytes == NULL) - ptr = ""; - else - ptr = obj->ob_bytes; + ptr = (void *) PyByteArray_AS_STRING(obj); ret = PyBuffer_FillInfo(view, (PyObject*)obj, ptr, Py_SIZE(obj), 0, flags); if (ret >= 0) { obj->ob_exports++; @@ -152,7 +150,7 @@ Py_DECREF(new); return PyErr_NoMemory(); } - if (bytes != NULL) + if (bytes != NULL && size > 0) memcpy(new->ob_bytes, bytes, size); new->ob_bytes[size] = '\0'; /* Trailing null byte */ } From nnorwitz at gmail.com Sun Jan 17 13:49:40 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 17 Jan 2010 07:49:40 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100117124940.GA29872@kbk-i386-bb.psfb.org> 349 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-5283 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler testCompileLibrary still working, be patient... test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19648 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.973s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15449 refs] [15449 refs] [15449 refs] [25475 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17037 refs] [17037 refs] test_plistlib test_poll test_popen [15454 refs] [15454 refs] [15454 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20960 refs] [20959 refs] [20959 refs] test_pyexpat test_queue test_quopri [18303 refs] [18303 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15449 refs] [15449 refs] [15452 refs] [15449 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [17310 refs] [15664 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] [15449 refs] . [15449 refs] [15449 refs] this bit of output is from a test of stdout in a different process ... [15449 refs] [15449 refs] [15664 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15449 refs] [15449 refs] [15678 refs] [15472 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15452 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18760 refs] [20340 refs] [20154 refs] [20154 refs] [20154 refs] [20154 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 349 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [889149 refs] From python-checkins at python.org Sun Jan 17 14:37:57 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 17 Jan 2010 13:37:57 -0000 Subject: [Python-checkins] r77578 - in python/trunk: Misc/NEWS Python/dtoa.c Message-ID: Author: mark.dickinson Date: Sun Jan 17 14:37:57 2010 New Revision: 77578 Log: Issue #7632: Fix a memory leak in _Py_dg_strtod. Modified: python/trunk/Misc/NEWS python/trunk/Python/dtoa.c Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Jan 17 14:37:57 2010 @@ -25,8 +25,9 @@ alpha 2, including: (1) a serious 'wrong output' bug that could occur for long (> 40 digit) input strings, (2) a crash in dtoa.c that occurred in debug builds when parsing certain long numeric - strings corresponding to subnormal values, and (3) a number of flaws - that could lead to incorrectly rounded results. + strings corresponding to subnormal values, (3) a memory leak for + some values large enough to cause overflow, and (4) a number of + flaws that could lead to incorrectly rounded results. - Issue #7319, #7770: Silence DeprecationWarning by default when -3 is not used. Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Sun Jan 17 14:37:57 2010 @@ -1939,8 +1939,14 @@ dval(&rv) += adj.d; if ((word0(&rv) & Exp_mask) >= Exp_msk1*(DBL_MAX_EXP+Bias-P)) { - if (word0(&rv0) == Big0 && word1(&rv0) == Big1) + if (word0(&rv0) == Big0 && word1(&rv0) == Big1) { + Bfree(bb); + Bfree(bd); + Bfree(bs); + Bfree(bd0); + Bfree(delta); goto ovfl; + } word0(&rv) = Big0; word1(&rv) = Big1; goto cont; From python-checkins at python.org Sun Jan 17 15:39:12 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 17 Jan 2010 14:39:12 -0000 Subject: [Python-checkins] r77579 - in python/branches/py3k: Misc/NEWS Python/dtoa.c Message-ID: Author: mark.dickinson Date: Sun Jan 17 15:39:12 2010 New Revision: 77579 Log: Merged revisions 77578 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77578 | mark.dickinson | 2010-01-17 13:37:57 +0000 (Sun, 17 Jan 2010) | 2 lines Issue #7632: Fix a memory leak in _Py_dg_strtod. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Misc/NEWS python/branches/py3k/Python/dtoa.c Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Sun Jan 17 15:39:12 2010 @@ -33,8 +33,9 @@ alpha 2, including: (1) a serious 'wrong output' bug that could occur for long (> 40 digit) input strings, (2) a crash in dtoa.c that occurred in debug builds when parsing certain long numeric - strings corresponding to subnormal values, and (3) a number of flaws - that could lead to incorrectly rounded results. + strings corresponding to subnormal values, (3) a memory leak for + some values large enough to cause overflow, and (4) a number of + flaws that could lead to incorrectly rounded results. - The __complex__ method is now looked up on the class of instances to make it consistent with other special methods. Modified: python/branches/py3k/Python/dtoa.c ============================================================================== --- python/branches/py3k/Python/dtoa.c (original) +++ python/branches/py3k/Python/dtoa.c Sun Jan 17 15:39:12 2010 @@ -1939,8 +1939,14 @@ dval(&rv) += adj.d; if ((word0(&rv) & Exp_mask) >= Exp_msk1*(DBL_MAX_EXP+Bias-P)) { - if (word0(&rv0) == Big0 && word1(&rv0) == Big1) + if (word0(&rv0) == Big0 && word1(&rv0) == Big1) { + Bfree(bb); + Bfree(bd); + Bfree(bs); + Bfree(bd0); + Bfree(delta); goto ovfl; + } word0(&rv) = Big0; word1(&rv) = Big1; goto cont; From python-checkins at python.org Sun Jan 17 15:41:03 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 17 Jan 2010 14:41:03 -0000 Subject: [Python-checkins] r77580 - in python/branches/release31-maint: Misc/NEWS Python/dtoa.c Message-ID: Author: mark.dickinson Date: Sun Jan 17 15:41:03 2010 New Revision: 77580 Log: Merged revisions 77579 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77579 | mark.dickinson | 2010-01-17 14:39:12 +0000 (Sun, 17 Jan 2010) | 9 lines Merged revisions 77578 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77578 | mark.dickinson | 2010-01-17 13:37:57 +0000 (Sun, 17 Jan 2010) | 2 lines Issue #7632: Fix a memory leak in _Py_dg_strtod. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Misc/NEWS python/branches/release31-maint/Python/dtoa.c Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Sun Jan 17 15:41:03 2010 @@ -21,8 +21,9 @@ alpha 2, including: (1) a serious 'wrong output' bug that could occur for long (> 40 digit) input strings, (2) a crash in dtoa.c that occurred in debug builds when parsing certain long numeric - strings corresponding to subnormal values, and (3) a number of flaws - that could lead to incorrectly rounded results. + strings corresponding to subnormal values, (3) a memory leak for + some values large enough to cause overflow, and (4) a number of + flaws that could lead to incorrectly rounded results. - Issue #7604: Deleting an unset slotted attribute did not raise an AttributeError. Modified: python/branches/release31-maint/Python/dtoa.c ============================================================================== --- python/branches/release31-maint/Python/dtoa.c (original) +++ python/branches/release31-maint/Python/dtoa.c Sun Jan 17 15:41:03 2010 @@ -1939,8 +1939,14 @@ dval(&rv) += adj.d; if ((word0(&rv) & Exp_mask) >= Exp_msk1*(DBL_MAX_EXP+Bias-P)) { - if (word0(&rv0) == Big0 && word1(&rv0) == Big1) + if (word0(&rv0) == Big0 && word1(&rv0) == Big1) { + Bfree(bb); + Bfree(bd); + Bfree(bs); + Bfree(bd0); + Bfree(delta); goto ovfl; + } word0(&rv) = Big0; word1(&rv) = Big1; goto cont; From python-checkins at python.org Sun Jan 17 16:55:46 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sun, 17 Jan 2010 15:55:46 -0000 Subject: [Python-checkins] r77581 - python/trunk/Include/bytearrayobject.h Message-ID: Author: antoine.pitrou Date: Sun Jan 17 16:55:45 2010 New Revision: 77581 Log: Use PyAPI_DATA. Modified: python/trunk/Include/bytearrayobject.h Modified: python/trunk/Include/bytearrayobject.h ============================================================================== --- python/trunk/Include/bytearrayobject.h (original) +++ python/trunk/Include/bytearrayobject.h Sun Jan 17 16:55:45 2010 @@ -49,7 +49,7 @@ Py_SIZE(self) ? ((PyByteArrayObject *)(self))->ob_bytes : _PyByteArray_empty_string) #define PyByteArray_GET_SIZE(self) (assert(PyByteArray_Check(self)),Py_SIZE(self)) -extern char _PyByteArray_empty_string[]; +PyAPI_DATA(char) _PyByteArray_empty_string[]; #ifdef __cplusplus } From python-checkins at python.org Sun Jan 17 17:06:27 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sun, 17 Jan 2010 16:06:27 -0000 Subject: [Python-checkins] r77582 - in python/branches/release26-maint: Include/bytearrayobject.h Message-ID: Author: antoine.pitrou Date: Sun Jan 17 17:06:27 2010 New Revision: 77582 Log: Merged revisions 77581 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77581 | antoine.pitrou | 2010-01-17 16:55:45 +0100 (dim., 17 janv. 2010) | 3 lines Use PyAPI_DATA. ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Include/bytearrayobject.h Modified: python/branches/release26-maint/Include/bytearrayobject.h ============================================================================== --- python/branches/release26-maint/Include/bytearrayobject.h (original) +++ python/branches/release26-maint/Include/bytearrayobject.h Sun Jan 17 17:06:27 2010 @@ -49,7 +49,7 @@ Py_SIZE(self) ? ((PyByteArrayObject *)(self))->ob_bytes : _PyByteArray_empty_string) #define PyByteArray_GET_SIZE(self) (assert(PyByteArray_Check(self)),Py_SIZE(self)) -extern char _PyByteArray_empty_string[]; +PyAPI_DATA(char) _PyByteArray_empty_string[]; #ifdef __cplusplus } From python-checkins at python.org Sun Jan 17 17:15:30 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sun, 17 Jan 2010 16:15:30 -0000 Subject: [Python-checkins] r77583 - in python/branches/py3k: Include/bytearrayobject.h Message-ID: Author: antoine.pitrou Date: Sun Jan 17 17:15:29 2010 New Revision: 77583 Log: Merged revisions 77581 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77581 | antoine.pitrou | 2010-01-17 16:55:45 +0100 (dim., 17 janv. 2010) | 3 lines Use PyAPI_DATA. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Include/bytearrayobject.h Modified: python/branches/py3k/Include/bytearrayobject.h ============================================================================== --- python/branches/py3k/Include/bytearrayobject.h (original) +++ python/branches/py3k/Include/bytearrayobject.h Sun Jan 17 17:15:29 2010 @@ -49,7 +49,7 @@ Py_SIZE(self) ? ((PyByteArrayObject *)(self))->ob_bytes : _PyByteArray_empty_string) #define PyByteArray_GET_SIZE(self) (assert(PyByteArray_Check(self)),Py_SIZE(self)) -extern char _PyByteArray_empty_string[]; +PyAPI_DATA(char) _PyByteArray_empty_string[]; #ifdef __cplusplus } From python-checkins at python.org Sun Jan 17 17:20:29 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sun, 17 Jan 2010 16:20:29 -0000 Subject: [Python-checkins] r77584 - in python/branches/release31-maint: Include/bytearrayobject.h Message-ID: Author: antoine.pitrou Date: Sun Jan 17 17:20:28 2010 New Revision: 77584 Log: Merged revisions 77583 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77583 | antoine.pitrou | 2010-01-17 17:15:29 +0100 (dim., 17 janv. 2010) | 9 lines Merged revisions 77581 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77581 | antoine.pitrou | 2010-01-17 16:55:45 +0100 (dim., 17 janv. 2010) | 3 lines Use PyAPI_DATA. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Include/bytearrayobject.h Modified: python/branches/release31-maint/Include/bytearrayobject.h ============================================================================== --- python/branches/release31-maint/Include/bytearrayobject.h (original) +++ python/branches/release31-maint/Include/bytearrayobject.h Sun Jan 17 17:20:28 2010 @@ -49,7 +49,7 @@ Py_SIZE(self) ? ((PyByteArrayObject *)(self))->ob_bytes : _PyByteArray_empty_string) #define PyByteArray_GET_SIZE(self) (assert(PyByteArray_Check(self)),Py_SIZE(self)) -extern char _PyByteArray_empty_string[]; +PyAPI_DATA(char) _PyByteArray_empty_string[]; #ifdef __cplusplus } From python-checkins at python.org Sun Jan 17 17:25:57 2010 From: python-checkins at python.org (ronald.oussoren) Date: Sun, 17 Jan 2010 16:25:57 -0000 Subject: [Python-checkins] r77585 - in python/trunk: Include/pyport.h Mac/Makefile.in Mac/Tools/pythonw.c Misc/NEWS Modules/posixmodule.c configure configure.in pyconfig.h.in Message-ID: Author: ronald.oussoren Date: Sun Jan 17 17:25:57 2010 New Revision: 77585 Log: - Issue #7658: Ensure that the new pythonw executable works on OSX 10.4 - Issue #7714: Use ``gcc -dumpversion`` to detect the version of GCC on MacOSX. - Make configure look for util.h as well as libutil.h. The former is the header file that on OSX contains the defition of openpty. (Needed to compile for OSX 10.4 on OSX 10.6) - Use the correct definition of CC to compile the pythonw executable Modified: python/trunk/Include/pyport.h python/trunk/Mac/Makefile.in python/trunk/Mac/Tools/pythonw.c python/trunk/Misc/NEWS python/trunk/Modules/posixmodule.c python/trunk/configure python/trunk/configure.in python/trunk/pyconfig.h.in Modified: python/trunk/Include/pyport.h ============================================================================== --- python/trunk/Include/pyport.h (original) +++ python/trunk/Include/pyport.h Sun Jan 17 17:25:57 2010 @@ -627,7 +627,7 @@ #endif #if defined(HAVE_OPENPTY) || defined(HAVE_FORKPTY) -#if !defined(HAVE_PTY_H) && !defined(HAVE_LIBUTIL_H) +#if !defined(HAVE_PTY_H) && !defined(HAVE_LIBUTIL_H) && !defined(HAVE_UTIL_H) /* BSDI does not supply a prototype for the 'openpty' and 'forkpty' functions, even though they are included in libutil. */ #include Modified: python/trunk/Mac/Makefile.in ============================================================================== --- python/trunk/Mac/Makefile.in (original) +++ python/trunk/Mac/Makefile.in Sun Jan 17 17:25:57 2010 @@ -16,6 +16,7 @@ PYTHONFRAMEWORK=@PYTHONFRAMEWORK@ PYTHONFRAMEWORKIDENTIFIER=@PYTHONFRAMEWORKIDENTIFIER@ LIPO_32BIT_FLAGS=@LIPO_32BIT_FLAGS@ +CC=@CC@ # These are normally glimpsed from the previous set Modified: python/trunk/Mac/Tools/pythonw.c ============================================================================== --- python/trunk/Mac/Tools/pythonw.c (original) +++ python/trunk/Mac/Tools/pythonw.c Sun Jan 17 17:25:57 2010 @@ -6,16 +6,26 @@ * * This program uses posix_spawn rather than plain execv because we need * slightly more control over how the "real" interpreter is executed. + * + * On OSX 10.4 (and earlier) this falls back to using exec because the + * posix_spawnv functions aren't available there. */ +#pragma weak_import posix_spawnattr_init +#pragma weak_import posix_spawnattr_setbinpref_np +#pragma weak_import posix_spawnattr_setflags +#pragma weak_import posix_spawn + +#include #include +#ifdef HAVE_SPAWN_H #include +#endif #include #include #include #include #include #include -#include extern char** environ; @@ -74,6 +84,7 @@ return g_path; } +#ifdef HAVE_SPAWN_H static void setup_spawnattr(posix_spawnattr_t* spawnattr) { @@ -132,16 +143,28 @@ /* NOTREACHTED */ } } +#endif int main(int argc, char **argv) { - posix_spawnattr_t spawnattr = NULL; char* exec_path = get_python_path(); +#ifdef HAVE_SPAWN_H - setup_spawnattr(&spawnattr); - posix_spawn(NULL, exec_path, NULL, - &spawnattr, argv, environ); - err(1, "posix_spawn: %s", argv[0]); + /* We're weak-linking to posix-spawnv to ensure that + * an executable build on 10.5 can work on 10.4. + */ + if (posix_spawn != NULL) { + posix_spawnattr_t spawnattr = NULL; + + + setup_spawnattr(&spawnattr); + posix_spawn(NULL, exec_path, NULL, + &spawnattr, argv, environ); + err(1, "posix_spawn: %s", argv[0]); + } +#endif + execve(exec_path, argv, environ); + err(1, "execve: %s", argv[0]); /* NOTREACHED */ } Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Jan 17 17:25:57 2010 @@ -66,10 +66,14 @@ Extension extra options may change the output without changing the .c file). Initial patch by Collin Winter. - Build ----- +- Issue #7658: Ensure that the new pythonw executable works on OSX 10.4 + +- Issue #7714: Use ``gcc -dumpversion`` to detect the version of GCC on + MacOSX. + - Issue #7661: Allow ctypes to be built from a non-ASCII directory path. Patch by Florent Xicluna. Modified: python/trunk/Modules/posixmodule.c ============================================================================== --- python/trunk/Modules/posixmodule.c (original) +++ python/trunk/Modules/posixmodule.c Sun Jan 17 17:25:57 2010 @@ -3667,6 +3667,10 @@ #else #ifdef HAVE_LIBUTIL_H #include +#else +#ifdef HAVE_UTIL_H +#include +#endif /* HAVE_UTIL_H */ #endif /* HAVE_LIBUTIL_H */ #endif /* HAVE_PTY_H */ #ifdef HAVE_STROPTS_H Modified: python/trunk/configure ============================================================================== --- python/trunk/configure (original) +++ python/trunk/configure Sun Jan 17 17:25:57 2010 @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 77193 . +# From configure.in Revision: 77212 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for python 2.7. # @@ -2142,6 +2142,8 @@ # has no effect, don't bother defining them Darwin/[6789].*) define_xopen_source=no;; + Darwin/1[0-9].*) + define_xopen_source=no;; # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined # or has another value. By not (re)defining it, the defaults come in place. @@ -3861,7 +3863,7 @@ { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi -rm -f conftest* +rm -f -r conftest* @@ -4685,7 +4687,63 @@ Darwin*) # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd # used to be here, but non-Apple gcc doesn't accept them. + if test "${CC}" = gcc + then + { echo "$as_me:$LINENO: checking which compiler should be used" >&5 +echo $ECHO_N "checking which compiler should be used... $ECHO_C" >&6; } + case "${UNIVERSALSDK}" in + */MacOSX10.4u.sdk) + # Build using 10.4 SDK, force usage of gcc when the + # compiler is gcc, otherwise the user will get very + # confusing error messages when building on OSX 10.6 + CC=gcc-4.0 + CPP=cpp-4.0 + ;; + esac + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } + fi + + # Calculate the right deployment target for this build. + # + cur_target=`sw_vers -productVersion | sed 's/\(10\.[0-9]*\).*/\1/'` + if test ${cur_target} '>' 10.2; then + cur_target=10.3 + if test ${enable_universalsdk}; then + if test "${UNIVERSAL_ARCHS}" = "all"; then + # Ensure that the default platform for a + # 4-way universal build is OSX 10.5, + # that's the first OS release where + # 4-way builds make sense. + cur_target='10.5' + + elif test "${UNIVERSAL_ARCHS}" = "3-way"; then + cur_target='10.5' + + elif test "${UNIVERSAL_ARCHS}" = "intel"; then + cur_target='10.5' + elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then + cur_target='10.5' + fi + else + if test `arch` = "i386"; then + # On Intel macs default to a deployment + # target of 10.4, that's the first OSX + # release with Intel support. + cur_target="10.4" + fi + fi + fi + CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}} + + # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the + # environment with a value that is the same as what we'll use + # in the Makefile to ensure that we'll get the same compiler + # environment during configure and build time. + MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET" + export MACOSX_DEPLOYMENT_TARGET + EXPORT_MACOSX_DEPLOYMENT_TARGET='' if test "${enable_universalsdk}"; then UNIVERSAL_ARCH_FLAGS="" @@ -4694,6 +4752,39 @@ ARCH_RUN_32BIT="" LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" + + # You have to use different flags on various versions of + # OSX to extract PPC code from an universal binary, basically + # '-arch ppc' on OSX 10.4 and '-arch ppc7400' on anything + # newer. + # Because '-arch pp7400' works on OSX 10.5 or higher this + # test is only present in the '32-bit' branch, all other + # branches require OSX 10.5 to compile. + + { echo "$as_me:$LINENO: checking lipo flag for extracting ppc code" >&5 +echo $ECHO_N "checking lipo flag for extracting ppc code... $ECHO_C" >&6; } + FN="test.$$" + cat >${FN}.c <<-EOF + int main() { return 0; } +EOF + ${CC} ${CFLAGS} -arch ppc -arch i386 -o ${FN} ${FN}.c -isysroot ${UNIVERSALSDK} + if test $? != 0 ; then + rm ${FN} ${FN}.c + { echo "$as_me:$LINENO: result: failed, assumee -extract ppc7400" >&5 +echo "${ECHO_T}failed, assumee -extract ppc7400" >&6; } + else + lipo -extract -output "${FN}.out" -arch ppc7400 "${FN}" 2>/dev/null + if test $? != 0 ; then + LIPO_32BIT_FLAGS="-extract ppc -extract i386" + { echo "$as_me:$LINENO: result: \"'-extract ppc'\"" >&5 +echo "${ECHO_T}\"'-extract ppc'\"" >&6; } + else + { echo "$as_me:$LINENO: result: \"'-extract ppc7400'\"" >&5 +echo "${ECHO_T}\"'-extract ppc7400'\"" >&6; } + fi + rm -f ${FN} ${FN}.c ${FN}.out + fi + elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64" LIPO_32BIT_FLAGS="" @@ -4726,49 +4817,11 @@ tgt=`sw_vers -productVersion | sed 's/\(10\.[0-9]*\).*/\1/'` if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}" + CPPFLAGS="-isysroot ${UNIVERSALSDK}" fi - fi - # Calculate the right deployment target for this build. - # - cur_target=`sw_vers -productVersion | sed 's/\(10\.[0-9]*\).*/\1/'` - if test ${cur_target} '>' 10.2; then - cur_target=10.3 - if test ${enable_universalsdk}; then - if test "${UNIVERSAL_ARCHS}" = "all"; then - # Ensure that the default platform for a - # 4-way universal build is OSX 10.5, - # that's the first OS release where - # 4-way builds make sense. - cur_target='10.5' - - elif test "${UNIVERSAL_ARCHS}" = "3-way"; then - cur_target='10.5' - - elif test "${UNIVERSAL_ARCHS}" = "intel"; then - cur_target='10.5' - - elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then - cur_target='10.5' - fi - else - if test `arch` = "i386"; then - # On Intel macs default to a deployment - # target of 10.4, that's the first OSX - # release with Intel support. - cur_target="10.4" - fi - fi fi - CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}} - # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the - # environment with a value that is the same as what we'll use - # in the Makefile to ensure that we'll get the same compiler - # environment during configure and build time. - MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET" - export MACOSX_DEPLOYMENT_TARGET - EXPORT_MACOSX_DEPLOYMENT_TARGET='' ;; OSF*) @@ -5414,7 +5467,7 @@ else ac_cv_header_stdc=no fi -rm -f conftest* +rm -f -r conftest* fi @@ -5435,7 +5488,7 @@ else ac_cv_header_stdc=no fi -rm -f conftest* +rm -f -r conftest* fi @@ -5643,6 +5696,8 @@ + + for ac_header in asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \ fcntl.h grp.h \ ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \ @@ -5654,7 +5709,7 @@ sys/termio.h sys/time.h \ sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \ sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \ -bluetooth/bluetooth.h linux/tipc.h +bluetooth/bluetooth.h linux/tipc.h spawn.h util.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then @@ -6533,7 +6588,7 @@ fi -rm -f conftest* +rm -f -r conftest* { echo "$as_me:$LINENO: result: $was_it_defined" >&5 echo "${ECHO_T}$was_it_defined" >&6; } @@ -7063,7 +7118,7 @@ else ac_cv_type_uid_t=no fi -rm -f conftest* +rm -f -r conftest* fi { echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 @@ -14508,7 +14563,7 @@ LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';; Darwin/*) - gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3` + gcc_version=`gcc -dumpversion` if test ${gcc_version} '<' 4.0 then LIBTOOL_CRUFT="-lcc_dynamic" @@ -15850,7 +15905,7 @@ else unistd_defines_pthreads=no fi -rm -f conftest* +rm -f -r conftest* { echo "$as_me:$LINENO: result: $unistd_defines_pthreads" >&5 echo "${ECHO_T}$unistd_defines_pthreads" >&6; } @@ -17464,7 +17519,7 @@ $EGREP "yes" >/dev/null 2>&1; then ipv6type=$i fi -rm -f conftest* +rm -f -r conftest* ;; kame) @@ -17487,7 +17542,7 @@ ipv6libdir=/usr/local/v6/lib ipv6trylibc=yes fi -rm -f conftest* +rm -f -r conftest* ;; linux-glibc) @@ -17508,7 +17563,7 @@ ipv6type=$i; ipv6trylibc=yes fi -rm -f conftest* +rm -f -r conftest* ;; linux-inet6) @@ -17546,7 +17601,7 @@ ipv6lib=inet6; ipv6libdir=/usr/local/v6/lib fi -rm -f conftest* +rm -f -r conftest* ;; v6d) @@ -17569,7 +17624,7 @@ ipv6libdir=/usr/local/v6/lib; BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS" fi -rm -f conftest* +rm -f -r conftest* ;; zeta) @@ -17591,7 +17646,7 @@ ipv6lib=inet6; ipv6libdir=/usr/local/v6/lib fi -rm -f conftest* +rm -f -r conftest* ;; esac @@ -26134,7 +26189,7 @@ _ACEOF fi -rm -f conftest* +rm -f -r conftest* cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -26153,7 +26208,7 @@ _ACEOF fi -rm -f conftest* +rm -f -r conftest* fi @@ -26423,7 +26478,7 @@ _ACEOF fi -rm -f conftest* +rm -f -r conftest* fi Modified: python/trunk/configure.in ============================================================================== --- python/trunk/configure.in (original) +++ python/trunk/configure.in Sun Jan 17 17:25:57 2010 @@ -307,6 +307,8 @@ # has no effect, don't bother defining them Darwin/@<:@6789@:>@.*) define_xopen_source=no;; + Darwin/1@<:@0-9@:>@.*) + define_xopen_source=no;; # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined # or has another value. By not (re)defining it, the defaults come in place. @@ -935,46 +937,19 @@ Darwin*) # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd # used to be here, but non-Apple gcc doesn't accept them. - - - if test "${enable_universalsdk}"; then - UNIVERSAL_ARCH_FLAGS="" - if test "$UNIVERSAL_ARCHS" = "32-bit" ; then - UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386" - ARCH_RUN_32BIT="" - LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" - - elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then - UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64" - LIPO_32BIT_FLAGS="" - ARCH_RUN_32BIT="true" - - elif test "$UNIVERSAL_ARCHS" = "all" ; then - UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64" - LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" - ARCH_RUN_32BIT="arch -i386 -ppc" - - elif test "$UNIVERSAL_ARCHS" = "intel" ; then - UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64" - LIPO_32BIT_FLAGS="-extract i386" - ARCH_RUN_32BIT="arch -i386" - - elif test "$UNIVERSAL_ARCHS" = "3-way" ; then - UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64" - LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" - ARCH_RUN_32BIT="arch -i386 -ppc7400" - - else - AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way]) - - fi - - - BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}" - tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'` - if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then - CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}" - fi + if test "${CC}" = gcc + then + AC_MSG_CHECKING(which compiler should be used) + case "${UNIVERSALSDK}" in + */MacOSX10.4u.sdk) + # Build using 10.4 SDK, force usage of gcc when the + # compiler is gcc, otherwise the user will get very + # confusing error messages when building on OSX 10.6 + CC=gcc-4.0 + CPP=cpp-4.0 + ;; + esac + AC_MSG_RESULT($CC) fi # Calculate the right deployment target for this build. @@ -1018,6 +993,78 @@ export MACOSX_DEPLOYMENT_TARGET EXPORT_MACOSX_DEPLOYMENT_TARGET='' + if test "${enable_universalsdk}"; then + UNIVERSAL_ARCH_FLAGS="" + if test "$UNIVERSAL_ARCHS" = "32-bit" ; then + UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386" + ARCH_RUN_32BIT="" + LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" + + + # You have to use different flags on various versions of + # OSX to extract PPC code from an universal binary, basically + # '-arch ppc' on OSX 10.4 and '-arch ppc7400' on anything + # newer. + # Because '-arch pp7400' works on OSX 10.5 or higher this + # test is only present in the '32-bit' branch, all other + # branches require OSX 10.5 to compile. + + AC_MSG_CHECKING(lipo flag for extracting ppc code) + FN="test.$$" + cat >${FN}.c <<-EOF + int main() { return 0; } +EOF + ${CC} ${CFLAGS} -arch ppc -arch i386 -o ${FN} ${FN}.c -isysroot ${UNIVERSALSDK} + if test $? != 0 ; then + rm ${FN} ${FN}.c + AC_MSG_RESULT([failed, assumee -extract ppc7400]) + else + lipo -extract -output "${FN}.out" -arch ppc7400 "${FN}" 2>/dev/null + if test $? != 0 ; then + LIPO_32BIT_FLAGS="-extract ppc -extract i386" + AC_MSG_RESULT("'-extract ppc'") + else + AC_MSG_RESULT("'-extract ppc7400'") + fi + rm -f ${FN} ${FN}.c ${FN}.out + fi + + elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then + UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64" + LIPO_32BIT_FLAGS="" + ARCH_RUN_32BIT="true" + + elif test "$UNIVERSAL_ARCHS" = "all" ; then + UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64" + LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" + ARCH_RUN_32BIT="arch -i386 -ppc" + + elif test "$UNIVERSAL_ARCHS" = "intel" ; then + UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64" + LIPO_32BIT_FLAGS="-extract i386" + ARCH_RUN_32BIT="arch -i386" + + elif test "$UNIVERSAL_ARCHS" = "3-way" ; then + UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64" + LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" + ARCH_RUN_32BIT="arch -i386 -ppc7400" + + else + AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way]) + + fi + + + BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}" + tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'` + if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then + CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}" + CPPFLAGS="-isysroot ${UNIVERSALSDK}" + fi + + fi + + ;; OSF*) BASECFLAGS="$BASECFLAGS -mieee" @@ -1297,7 +1344,7 @@ sys/termio.h sys/time.h \ sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \ sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \ -bluetooth/bluetooth.h linux/tipc.h) +bluetooth/bluetooth.h linux/tipc.h spawn.h util.h) AC_HEADER_DIRENT AC_HEADER_MAJOR @@ -1557,7 +1604,7 @@ LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';; Darwin/*) - gcc_version=`gcc -v 2>&1 | grep version | cut -d\ -f3` + gcc_version=`gcc -dumpversion` if test ${gcc_version} '<' 4.0 then LIBTOOL_CRUFT="-lcc_dynamic" Modified: python/trunk/pyconfig.h.in ============================================================================== --- python/trunk/pyconfig.h.in (original) +++ python/trunk/pyconfig.h.in Sun Jan 17 17:25:57 2010 @@ -634,6 +634,9 @@ /* Define if you have the 'socketpair' function. */ #undef HAVE_SOCKETPAIR +/* Define to 1 if you have the header file. */ +#undef HAVE_SPAWN_H + /* Define if your compiler provides ssize_t */ #undef HAVE_SSIZE_T @@ -849,6 +852,9 @@ Include/unicodeobject.h). */ #undef HAVE_USABLE_WCHAR_T +/* Define to 1 if you have the header file. */ +#undef HAVE_UTIL_H + /* Define to 1 if you have the `utimes' function. */ #undef HAVE_UTIMES From python-checkins at python.org Sun Jan 17 19:52:29 2010 From: python-checkins at python.org (ronald.oussoren) Date: Sun, 17 Jan 2010 18:52:29 -0000 Subject: [Python-checkins] r77586 - python/branches/release31-maint/Lib/distutils/tests/test_util.py Message-ID: Author: ronald.oussoren Date: Sun Jan 17 19:52:29 2010 New Revision: 77586 Log: Ensure that distutils.tests.test_util will pass in 64-bit builds. Fixes #7591 Modified: python/branches/release31-maint/Lib/distutils/tests/test_util.py Modified: python/branches/release31-maint/Lib/distutils/tests/test_util.py ============================================================================== --- python/branches/release31-maint/Lib/distutils/tests/test_util.py (original) +++ python/branches/release31-maint/Lib/distutils/tests/test_util.py Sun Jan 17 19:52:29 2010 @@ -96,7 +96,12 @@ get_config_vars()['CFLAGS'] = ('-fno-strict-aliasing -DNDEBUG -g ' '-fwrapv -O3 -Wall -Wstrict-prototypes') - self.assertEquals(get_platform(), 'macosx-10.3-i386') + cursize = sys.maxsize + sys.maxsize = (2 ** 31)-1 + try: + self.assertEquals(get_platform(), 'macosx-10.3-i386') + finally: + sys.maxsize = cursize # macbook with fat binaries (fat, universal or fat64) os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.4' From python-checkins at python.org Sun Jan 17 20:27:57 2010 From: python-checkins at python.org (ronald.oussoren) Date: Sun, 17 Jan 2010 19:27:57 -0000 Subject: [Python-checkins] r77587 - in python/trunk: configure configure.in Message-ID: Author: ronald.oussoren Date: Sun Jan 17 20:27:57 2010 New Revision: 77587 Log: This patch ensures that the configure-script mentions checking for --enable-universalsdk and that it doesn't default to the 10.4u SDK when that SDK does not exist. (This affects OSX) This patch should fix most of issue 4834, although I haven't gotten enough information from the user to be sure. Modified: python/trunk/configure python/trunk/configure.in Modified: python/trunk/configure ============================================================================== --- python/trunk/configure (original) +++ python/trunk/configure Sun Jan 17 20:27:57 2010 @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 77212 . +# From configure.in Revision: 77585 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for python 2.7. # @@ -1890,12 +1890,18 @@ CONFIG_ARGS="$ac_configure_args" +{ echo "$as_me:$LINENO: checking for --enable-universalsdk" >&5 +echo $ECHO_N "checking for --enable-universalsdk... $ECHO_C" >&6; } # Check whether --enable-universalsdk was given. if test "${enable_universalsdk+set}" = set; then enableval=$enable_universalsdk; case $enableval in yes) enableval=/Developer/SDKs/MacOSX10.4u.sdk + if test ! -d "${enableval}" + then + enableval=/ + fi ;; esac case $enableval in @@ -1905,9 +1911,16 @@ ;; *) UNIVERSALSDK=$enableval + if test ! -d "${UNIVERSALSDK}" + then + { { echo "$as_me:$LINENO: error: --enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}" >&5 +echo "$as_me: error: --enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}" >&2;} + { (exit 1); exit 1; }; } + fi ;; esac + else UNIVERSALSDK= @@ -1915,6 +1928,14 @@ fi +if test -n "${UNIVERSALSDK}" +then + { echo "$as_me:$LINENO: result: ${UNIVERSALSDK}" >&5 +echo "${ECHO_T}${UNIVERSALSDK}" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi Modified: python/trunk/configure.in ============================================================================== --- python/trunk/configure.in (original) +++ python/trunk/configure.in Sun Jan 17 20:27:57 2010 @@ -86,12 +86,17 @@ AC_SUBST(CONFIG_ARGS) CONFIG_ARGS="$ac_configure_args" +AC_MSG_CHECKING([for --enable-universalsdk]) AC_ARG_ENABLE(universalsdk, AC_HELP_STRING(--enable-universalsdk@<:@=SDKDIR@:>@, Build against Mac OS X 10.4u SDK (ppc/i386)), [ case $enableval in yes) enableval=/Developer/SDKs/MacOSX10.4u.sdk + if test ! -d "${enableval}" + then + enableval=/ + fi ;; esac case $enableval in @@ -101,12 +106,23 @@ ;; *) UNIVERSALSDK=$enableval + if test ! -d "${UNIVERSALSDK}" + then + AC_MSG_ERROR([--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}]) + fi ;; esac + ],[ UNIVERSALSDK= enable_universalsdk= ]) +if test -n "${UNIVERSALSDK}" +then + AC_MSG_RESULT(${UNIVERSALSDK}) +else + AC_MSG_RESULT(no) +fi AC_SUBST(UNIVERSALSDK) AC_SUBST(ARCH_RUN_32BIT) From python-checkins at python.org Sun Jan 17 20:32:03 2010 From: python-checkins at python.org (ronald.oussoren) Date: Sun, 17 Jan 2010 19:32:03 -0000 Subject: [Python-checkins] r77588 - in python/trunk: configure configure.in Message-ID: Author: ronald.oussoren Date: Sun Jan 17 20:32:00 2010 New Revision: 77588 Log: Explicitly use /usr/bin/arch on OSX, fixes issue 7715 Modified: python/trunk/configure python/trunk/configure.in Modified: python/trunk/configure ============================================================================== --- python/trunk/configure (original) +++ python/trunk/configure Sun Jan 17 20:32:00 2010 @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 77585 . +# From configure.in Revision: 77587 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for python 2.7. # @@ -4814,17 +4814,17 @@ elif test "$UNIVERSAL_ARCHS" = "all" ; then UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64" LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" - ARCH_RUN_32BIT="arch -i386 -ppc" + ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc" elif test "$UNIVERSAL_ARCHS" = "intel" ; then UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64" LIPO_32BIT_FLAGS="-extract i386" - ARCH_RUN_32BIT="arch -i386" + ARCH_RUN_32BIT="/usr/bin/arch -i386" elif test "$UNIVERSAL_ARCHS" = "3-way" ; then UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64" LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" - ARCH_RUN_32BIT="arch -i386 -ppc7400" + ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc7400" else { { echo "$as_me:$LINENO: error: proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way" >&5 Modified: python/trunk/configure.in ============================================================================== --- python/trunk/configure.in (original) +++ python/trunk/configure.in Sun Jan 17 20:32:00 2010 @@ -1053,17 +1053,17 @@ elif test "$UNIVERSAL_ARCHS" = "all" ; then UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64" LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" - ARCH_RUN_32BIT="arch -i386 -ppc" + ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc" elif test "$UNIVERSAL_ARCHS" = "intel" ; then UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64" LIPO_32BIT_FLAGS="-extract i386" - ARCH_RUN_32BIT="arch -i386" + ARCH_RUN_32BIT="/usr/bin/arch -i386" elif test "$UNIVERSAL_ARCHS" = "3-way" ; then UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64" LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" - ARCH_RUN_32BIT="arch -i386 -ppc7400" + ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc7400" else AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way]) From python-checkins at python.org Sun Jan 17 21:57:56 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 17 Jan 2010 20:57:56 -0000 Subject: [Python-checkins] r77589 - in python/trunk: Misc/NEWS Python/dtoa.c Message-ID: Author: mark.dickinson Date: Sun Jan 17 21:57:56 2010 New Revision: 77589 Log: Issue #7632: When Py_USING_MEMORY_DEBUGGER is defined, disable the private memory allocation scheme in dtoa.c, along with a piece of code that caches powers of 5 for future use. This makes it easier to detect dtoa.c memory leaks with Valgrind or similar tools. Patch by Stefan Krah. Modified: python/trunk/Misc/NEWS python/trunk/Python/dtoa.c Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Jan 17 21:57:56 2010 @@ -69,6 +69,10 @@ Build ----- +- Issue #7632: When Py_USING_MEMORY_DEBUGGER is defined, disable the + private memory allocation scheme in dtoa.c and use PyMem_Malloc and + PyMem_Free instead. Also disable caching of powers of 5. + - Issue #7658: Ensure that the new pythonw executable works on OSX 10.4 - Issue #7714: Use ``gcc -dumpversion`` to detect the version of GCC on Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Sun Jan 17 21:57:56 2010 @@ -308,6 +308,8 @@ typedef struct Bigint Bigint; +#ifndef Py_USING_MEMORY_DEBUGGER + /* Memory management: memory is allocated from, and returned to, Kmax+1 pools of memory, where pool k (0 <= k <= Kmax) is for Bigints b with b->maxwds == 1 << k. These pools are maintained as linked lists, with freelist[k] @@ -375,6 +377,48 @@ } } +#else + +/* Alternative versions of Balloc and Bfree that use PyMem_Malloc and + PyMem_Free directly in place of the custom memory allocation scheme above. + These are provided for the benefit of memory debugging tools like + Valgrind. */ + +/* Allocate space for a Bigint with up to 1<k = k; + rv->maxwds = x; + rv->sign = rv->wds = 0; + return rv; +} + +/* Free a Bigint allocated with Balloc */ + +static void +Bfree(Bigint *v) +{ + if (v) { + FREE((void*)v); + } +} + +#endif /* Py_USING_MEMORY_DEBUGGER */ + #define Bcopy(x,y) memcpy((char *)&x->sign, (char *)&y->sign, \ y->wds*sizeof(Long) + 2*sizeof(int)) @@ -652,6 +696,8 @@ return c; } +#ifndef Py_USING_MEMORY_DEBUGGER + /* p5s is a linked list of powers of 5 of the form 5**(2**i), i >= 2 */ static Bigint *p5s; @@ -711,6 +757,58 @@ return b; } +#else + +/* Version of pow5mult that doesn't cache powers of 5. Provided for + the benefit of memory debugging tools like Valgrind. */ + +static Bigint * +pow5mult(Bigint *b, int k) +{ + Bigint *b1, *p5, *p51; + int i; + static int p05[3] = { 5, 25, 125 }; + + if ((i = k & 3)) { + b = multadd(b, p05[i-1], 0); + if (b == NULL) + return NULL; + } + + if (!(k >>= 2)) + return b; + p5 = i2b(625); + if (p5 == NULL) { + Bfree(b); + return NULL; + } + + for(;;) { + if (k & 1) { + b1 = mult(b, p5); + Bfree(b); + b = b1; + if (b == NULL) { + Bfree(p5); + return NULL; + } + } + if (!(k >>= 1)) + break; + p51 = mult(p5, p5); + Bfree(p5); + p5 = p51; + if (p5 == NULL) { + Bfree(b); + return NULL; + } + } + Bfree(p5); + return b; +} + +#endif /* Py_USING_MEMORY_DEBUGGER */ + /* shift a Bigint b left by k bits. Return a pointer to the shifted result, or NULL on failure. If the returned pointer is distinct from b then the original b will have been Bfree'd. Ignores the sign of b. */ From python-checkins at python.org Sun Jan 17 22:02:56 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 17 Jan 2010 21:02:56 -0000 Subject: [Python-checkins] r77590 - in python/branches/py3k: Misc/NEWS Python/dtoa.c Message-ID: Author: mark.dickinson Date: Sun Jan 17 22:02:55 2010 New Revision: 77590 Log: Merged revisions 77589 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77589 | mark.dickinson | 2010-01-17 20:57:56 +0000 (Sun, 17 Jan 2010) | 7 lines Issue #7632: When Py_USING_MEMORY_DEBUGGER is defined, disable the private memory allocation scheme in dtoa.c, along with a piece of code that caches powers of 5 for future use. This makes it easier to detect dtoa.c memory leaks with Valgrind or similar tools. Patch by Stefan Krah. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Misc/NEWS python/branches/py3k/Python/dtoa.c Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Sun Jan 17 22:02:55 2010 @@ -613,6 +613,10 @@ Build ----- +- Issue #7632: When Py_USING_MEMORY_DEBUGGER is defined, disable the + private memory allocation scheme in dtoa.c and use PyMem_Malloc and + PyMem_Free instead. Also disable caching of powers of 5. + - Issue #6491: Allow --with-dbmliborder to specify that no dbms will be built. - Issue #6943: Use pkg-config to find the libffi headers when the Modified: python/branches/py3k/Python/dtoa.c ============================================================================== --- python/branches/py3k/Python/dtoa.c (original) +++ python/branches/py3k/Python/dtoa.c Sun Jan 17 22:02:55 2010 @@ -308,6 +308,8 @@ typedef struct Bigint Bigint; +#ifndef Py_USING_MEMORY_DEBUGGER + /* Memory management: memory is allocated from, and returned to, Kmax+1 pools of memory, where pool k (0 <= k <= Kmax) is for Bigints b with b->maxwds == 1 << k. These pools are maintained as linked lists, with freelist[k] @@ -375,6 +377,48 @@ } } +#else + +/* Alternative versions of Balloc and Bfree that use PyMem_Malloc and + PyMem_Free directly in place of the custom memory allocation scheme above. + These are provided for the benefit of memory debugging tools like + Valgrind. */ + +/* Allocate space for a Bigint with up to 1<k = k; + rv->maxwds = x; + rv->sign = rv->wds = 0; + return rv; +} + +/* Free a Bigint allocated with Balloc */ + +static void +Bfree(Bigint *v) +{ + if (v) { + FREE((void*)v); + } +} + +#endif /* Py_USING_MEMORY_DEBUGGER */ + #define Bcopy(x,y) memcpy((char *)&x->sign, (char *)&y->sign, \ y->wds*sizeof(Long) + 2*sizeof(int)) @@ -652,6 +696,8 @@ return c; } +#ifndef Py_USING_MEMORY_DEBUGGER + /* p5s is a linked list of powers of 5 of the form 5**(2**i), i >= 2 */ static Bigint *p5s; @@ -711,6 +757,58 @@ return b; } +#else + +/* Version of pow5mult that doesn't cache powers of 5. Provided for + the benefit of memory debugging tools like Valgrind. */ + +static Bigint * +pow5mult(Bigint *b, int k) +{ + Bigint *b1, *p5, *p51; + int i; + static int p05[3] = { 5, 25, 125 }; + + if ((i = k & 3)) { + b = multadd(b, p05[i-1], 0); + if (b == NULL) + return NULL; + } + + if (!(k >>= 2)) + return b; + p5 = i2b(625); + if (p5 == NULL) { + Bfree(b); + return NULL; + } + + for(;;) { + if (k & 1) { + b1 = mult(b, p5); + Bfree(b); + b = b1; + if (b == NULL) { + Bfree(p5); + return NULL; + } + } + if (!(k >>= 1)) + break; + p51 = mult(p5, p5); + Bfree(p5); + p5 = p51; + if (p5 == NULL) { + Bfree(b); + return NULL; + } + } + Bfree(p5); + return b; +} + +#endif /* Py_USING_MEMORY_DEBUGGER */ + /* shift a Bigint b left by k bits. Return a pointer to the shifted result, or NULL on failure. If the returned pointer is distinct from b then the original b will have been Bfree'd. Ignores the sign of b. */ From python-checkins at python.org Sun Jan 17 22:06:28 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 17 Jan 2010 21:06:28 -0000 Subject: [Python-checkins] r77591 - in python/branches/release31-maint: Misc/NEWS Python/dtoa.c Message-ID: Author: mark.dickinson Date: Sun Jan 17 22:06:28 2010 New Revision: 77591 Log: Merged revisions 77590 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77590 | mark.dickinson | 2010-01-17 21:02:55 +0000 (Sun, 17 Jan 2010) | 14 lines Merged revisions 77589 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77589 | mark.dickinson | 2010-01-17 20:57:56 +0000 (Sun, 17 Jan 2010) | 7 lines Issue #7632: When Py_USING_MEMORY_DEBUGGER is defined, disable the private memory allocation scheme in dtoa.c, along with a piece of code that caches powers of 5 for future use. This makes it easier to detect dtoa.c memory leaks with Valgrind or similar tools. Patch by Stefan Krah. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Misc/NEWS python/branches/release31-maint/Python/dtoa.c Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Sun Jan 17 22:06:28 2010 @@ -326,6 +326,10 @@ Build ----- +- Issue #7632: When Py_USING_MEMORY_DEBUGGER is defined, disable the + private memory allocation scheme in dtoa.c and use PyMem_Malloc and + PyMem_Free instead. Also disable caching of powers of 5. + - Switch to OpenSSL 0.9.8l on Windows. - Issue #6603: Change READ_TIMESTAMP macro in ceval.c so that it Modified: python/branches/release31-maint/Python/dtoa.c ============================================================================== --- python/branches/release31-maint/Python/dtoa.c (original) +++ python/branches/release31-maint/Python/dtoa.c Sun Jan 17 22:06:28 2010 @@ -308,6 +308,8 @@ typedef struct Bigint Bigint; +#ifndef Py_USING_MEMORY_DEBUGGER + /* Memory management: memory is allocated from, and returned to, Kmax+1 pools of memory, where pool k (0 <= k <= Kmax) is for Bigints b with b->maxwds == 1 << k. These pools are maintained as linked lists, with freelist[k] @@ -375,6 +377,48 @@ } } +#else + +/* Alternative versions of Balloc and Bfree that use PyMem_Malloc and + PyMem_Free directly in place of the custom memory allocation scheme above. + These are provided for the benefit of memory debugging tools like + Valgrind. */ + +/* Allocate space for a Bigint with up to 1<k = k; + rv->maxwds = x; + rv->sign = rv->wds = 0; + return rv; +} + +/* Free a Bigint allocated with Balloc */ + +static void +Bfree(Bigint *v) +{ + if (v) { + FREE((void*)v); + } +} + +#endif /* Py_USING_MEMORY_DEBUGGER */ + #define Bcopy(x,y) memcpy((char *)&x->sign, (char *)&y->sign, \ y->wds*sizeof(Long) + 2*sizeof(int)) @@ -652,6 +696,8 @@ return c; } +#ifndef Py_USING_MEMORY_DEBUGGER + /* p5s is a linked list of powers of 5 of the form 5**(2**i), i >= 2 */ static Bigint *p5s; @@ -711,6 +757,58 @@ return b; } +#else + +/* Version of pow5mult that doesn't cache powers of 5. Provided for + the benefit of memory debugging tools like Valgrind. */ + +static Bigint * +pow5mult(Bigint *b, int k) +{ + Bigint *b1, *p5, *p51; + int i; + static int p05[3] = { 5, 25, 125 }; + + if ((i = k & 3)) { + b = multadd(b, p05[i-1], 0); + if (b == NULL) + return NULL; + } + + if (!(k >>= 2)) + return b; + p5 = i2b(625); + if (p5 == NULL) { + Bfree(b); + return NULL; + } + + for(;;) { + if (k & 1) { + b1 = mult(b, p5); + Bfree(b); + b = b1; + if (b == NULL) { + Bfree(p5); + return NULL; + } + } + if (!(k >>= 1)) + break; + p51 = mult(p5, p5); + Bfree(p5); + p5 = p51; + if (p5 == NULL) { + Bfree(b); + return NULL; + } + } + Bfree(p5); + return b; +} + +#endif /* Py_USING_MEMORY_DEBUGGER */ + /* shift a Bigint b left by k bits. Return a pointer to the shifted result, or NULL on failure. If the returned pointer is distinct from b then the original b will have been Bfree'd. Ignores the sign of b. */ From python-checkins at python.org Sun Jan 17 22:11:54 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 17 Jan 2010 21:11:54 -0000 Subject: [Python-checkins] r77592 - python/branches/release26-maint Message-ID: Author: mark.dickinson Date: Sun Jan 17 22:11:54 2010 New Revision: 77592 Log: Blocked revisions 77578,77589 via svnmerge ........ r77578 | mark.dickinson | 2010-01-17 13:37:57 +0000 (Sun, 17 Jan 2010) | 2 lines Issue #7632: Fix a memory leak in _Py_dg_strtod. ........ r77589 | mark.dickinson | 2010-01-17 20:57:56 +0000 (Sun, 17 Jan 2010) | 7 lines Issue #7632: When Py_USING_MEMORY_DEBUGGER is defined, disable the private memory allocation scheme in dtoa.c, along with a piece of code that caches powers of 5 for future use. This makes it easier to detect dtoa.c memory leaks with Valgrind or similar tools. Patch by Stefan Krah. ........ Modified: python/branches/release26-maint/ (props changed) From nnorwitz at gmail.com Sun Jan 17 22:25:32 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 17 Jan 2010 16:25:32 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (2) Message-ID: <20100117212532.GA7985@kbk-i386-bb.psfb.org> 342 tests OK. 2 tests failed: test_hashlib test_smtplib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19647 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.581s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15448 refs] [15448 refs] [15448 refs] [25474 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17036 refs] [17036 refs] test_plistlib test_poll test_popen [15453 refs] [15453 refs] [15453 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20958 refs] [20958 refs] test_pyexpat test_queue test_quopri [18302 refs] [18302 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15448 refs] [15448 refs] [15451 refs] [15448 refs] test_slice test_smtplib test test_smtplib failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_smtplib.py", line 227, in testSend smtp.quit() File "/tmp/python-test/local/lib/python2.7/smtplib.py", line 733, in quit res = self.docmd("quit") File "/tmp/python-test/local/lib/python2.7/smtplib.py", line 366, in docmd return self.getreply() File "/tmp/python-test/local/lib/python2.7/smtplib.py", line 343, in getreply raise SMTPServerDisconnected("Connection unexpectedly closed") SMTPServerDisconnected: Connection unexpectedly closed Re-running test 'test_smtplib' in verbose mode testBasic1 (test.test_smtplib.GeneralTests) ... ok testBasic2 (test.test_smtplib.GeneralTests) ... ok testLocalHostName (test.test_smtplib.GeneralTests) ... ok testTimeoutDefault (test.test_smtplib.GeneralTests) ... ok testTimeoutNone (test.test_smtplib.GeneralTests) ... ok testTimeoutValue (test.test_smtplib.GeneralTests) ... ok testBasic (test.test_smtplib.DebuggingServerTests) ... ok testHELP (test.test_smtplib.DebuggingServerTests) ... ok testNOOP (test.test_smtplib.DebuggingServerTests) ... ok testNotImplemented (test.test_smtplib.DebuggingServerTests) ... ok testRSET (test.test_smtplib.DebuggingServerTests) ... ok testSecondHELO (test.test_smtplib.DebuggingServerTests) ... ok testSend (test.test_smtplib.DebuggingServerTests) ... ok testVRFY (test.test_smtplib.DebuggingServerTests) ... ok testNonnumericPort (test.test_smtplib.NonConnectingTests) ... ok testNotConnected (test.test_smtplib.NonConnectingTests) ... ok testFailingHELO (test.test_smtplib.BadHELOServerTests) ... ok testAUTH_CRAM_MD5 (test.test_smtplib.SMTPSimTests) ... ok testAUTH_LOGIN (test.test_smtplib.SMTPSimTests) ... ok testAUTH_PLAIN (test.test_smtplib.SMTPSimTests) ... ok testBasic (test.test_smtplib.SMTPSimTests) ... ok testEHLO (test.test_smtplib.SMTPSimTests) ... ok testEXPN (test.test_smtplib.SMTPSimTests) ... ok testVRFY (test.test_smtplib.SMTPSimTests) ... ok ---------------------------------------------------------------------- Ran 24 tests in 15.566s OK test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15448 refs] [15448 refs] [15677 refs] [15471 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15451 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18759 refs] [20339 refs] [20153 refs] [20153 refs] [20153 refs] [20153 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 342 tests OK. 2 tests failed: test_hashlib test_smtplib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [872651 refs] From nnorwitz at gmail.com Sun Jan 17 22:49:37 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 17 Jan 2010 16:49:37 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100117214937.GA17412@kbk-i386-bb.psfb.org> 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19650 refs] [19650 refs] [19650 refs] [19647 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.777s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15448 refs] [15448 refs] [15448 refs] [25474 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17036 refs] [17036 refs] test_plistlib test_poll test_popen [15453 refs] [15453 refs] [15453 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20958 refs] [20958 refs] test_pyexpat test_queue test_quopri [18302 refs] [18302 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15448 refs] [15448 refs] [15451 refs] [15448 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15448 refs] [15448 refs] [15677 refs] [15471 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15451 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18759 refs] [20339 refs] [20153 refs] [20153 refs] [20153 refs] [20153 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [871557 refs] From python-checkins at python.org Mon Jan 18 00:33:53 2010 From: python-checkins at python.org (georg.brandl) Date: Sun, 17 Jan 2010 23:33:53 -0000 Subject: [Python-checkins] r77593 - in python/trunk/Doc: distutils/examples.rst whatsnew/2.7.rst Message-ID: Author: georg.brandl Date: Mon Jan 18 00:33:53 2010 New Revision: 77593 Log: Fix internal reference. Modified: python/trunk/Doc/distutils/examples.rst python/trunk/Doc/whatsnew/2.7.rst Modified: python/trunk/Doc/distutils/examples.rst ============================================================================== --- python/trunk/Doc/distutils/examples.rst (original) +++ python/trunk/Doc/distutils/examples.rst Mon Jan 18 00:33:53 2010 @@ -285,8 +285,11 @@ warning: check: Title underline too short. (line 2) warning: check: Could not finish the parsing. + +.. _reading-metadata: + Reading the metadata -===================== +==================== The :func:`distutils.core.setup` function provides a command-line interface that allows you to query the metadata fields of a project through the Modified: python/trunk/Doc/whatsnew/2.7.rst ============================================================================== --- python/trunk/Doc/whatsnew/2.7.rst (original) +++ python/trunk/Doc/whatsnew/2.7.rst Mon Jan 18 00:33:53 2010 @@ -612,8 +612,8 @@ The :class:`distutils.dist.DistributionMetadata` class' :meth:`read_pkg_file` method will read the contents of a package's - :file:`PKG-INFO` metadata file. For an example of its use, - XXX link to file:///MacDev/svn.python.org/python-trunk/Doc/build/html/distutils/examples.html#reading-the-metadata + :file:`PKG-INFO` metadata file. For an example of its use, see + :ref:`reading-metadata`. (Contributed by Tarek Ziade; :issue:`7457`.) :file:`setup.py` files will now accept a :option:`--no-user-cfg` switch From solipsis at pitrou.net Mon Jan 18 00:54:15 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Mon, 18 Jan 2010 00:54:15 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77590): sum=0 Message-ID: <20100117235415.D2DB61770A@ns6635.ovh.net> py3k results for svn r77590 (hg cset 407767c626c5) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogjoNmHn', '-x', 'test_httpservers'] From nnorwitz at gmail.com Mon Jan 18 01:44:56 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 17 Jan 2010 19:44:56 -0500 Subject: [Python-checkins] Python Regression Test Failures refleak (1) Message-ID: <20100118004456.GA4676@kbk-i386-bb.psfb.org> More important issues: ---------------------- test_distutils leaked [0, 0, 50] references, sum=50 Less important issues: ---------------------- test_ctypes leaked [0, 81, -81] references, sum=0 From nnorwitz at gmail.com Mon Jan 18 02:07:53 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 17 Jan 2010 20:07:53 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100118010753.GA12039@kbk-i386-bb.psfb.org> 349 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-4684 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19647 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.480s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15448 refs] [15448 refs] [15448 refs] [25474 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17036 refs] [17036 refs] test_plistlib test_poll test_popen [15453 refs] [15453 refs] [15453 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20958 refs] [20958 refs] test_pyexpat test_queue test_quopri [18302 refs] [18302 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15448 refs] [15448 refs] [15451 refs] [15448 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15448 refs] [15448 refs] [15677 refs] [15471 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15451 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18759 refs] [20339 refs] [20153 refs] [20153 refs] [20153 refs] [20153 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 349 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [889172 refs] From python-checkins at python.org Mon Jan 18 10:10:27 2010 From: python-checkins at python.org (ezio.melotti) Date: Mon, 18 Jan 2010 09:10:27 -0000 Subject: [Python-checkins] r77595 - python/trunk/Lib/ssl.py Message-ID: Author: ezio.melotti Date: Mon Jan 18 10:10:26 2010 New Revision: 77595 Log: #7730: remove spaces after functions names Modified: python/trunk/Lib/ssl.py Modified: python/trunk/Lib/ssl.py ============================================================================== --- python/trunk/Lib/ssl.py (original) +++ python/trunk/Lib/ssl.py Mon Jan 18 10:10:26 2010 @@ -78,7 +78,7 @@ from socket import getnameinfo as _getnameinfo import base64 # for DER-to-PEM translation -class SSLSocket (socket): +class SSLSocket(socket): """This class implements a subtype of socket.socket that wraps the underlying OS socket in an SSL context when necessary, and @@ -156,14 +156,14 @@ return self._sslobj.peer_certificate(binary_form) - def cipher (self): + def cipher(self): if not self._sslobj: return None else: return self._sslobj.cipher() - def send (self, data, flags=0): + def send(self, data, flags=0): if self._sslobj: if flags != 0: raise ValueError( @@ -184,14 +184,14 @@ else: return socket.send(self, data, flags) - def sendto (self, data, addr, flags=0): + def sendto(self, data, addr, flags=0): if self._sslobj: raise ValueError("sendto not allowed on instances of %s" % self.__class__) else: return socket.sendto(self, data, addr, flags) - def sendall (self, data, flags=0): + def sendall(self, data, flags=0): if self._sslobj: if flags != 0: raise ValueError( @@ -206,7 +206,7 @@ else: return socket.sendall(self, data, flags) - def recv (self, buflen=1024, flags=0): + def recv(self, buflen=1024, flags=0): if self._sslobj: if flags != 0: raise ValueError( @@ -223,7 +223,7 @@ else: return socket.recv(self, buflen, flags) - def recv_into (self, buffer, nbytes=None, flags=0): + def recv_into(self, buffer, nbytes=None, flags=0): if buffer and (nbytes is None): nbytes = len(buffer) elif nbytes is None: @@ -247,27 +247,27 @@ else: return socket.recv_into(self, buffer, nbytes, flags) - def recvfrom (self, addr, buflen=1024, flags=0): + def recvfrom(self, addr, buflen=1024, flags=0): if self._sslobj: raise ValueError("recvfrom not allowed on instances of %s" % self.__class__) else: return socket.recvfrom(self, addr, buflen, flags) - def recvfrom_into (self, buffer, nbytes=None, flags=0): + def recvfrom_into(self, buffer, nbytes=None, flags=0): if self._sslobj: raise ValueError("recvfrom_into not allowed on instances of %s" % self.__class__) else: return socket.recvfrom_into(self, buffer, nbytes, flags) - def pending (self): + def pending(self): if self._sslobj: return self._sslobj.pending() else: return 0 - def unwrap (self): + def unwrap(self): if self._sslobj: s = self._sslobj.shutdown() self._sslobj = None @@ -275,18 +275,18 @@ else: raise ValueError("No SSL wrapper around " + str(self)) - def shutdown (self, how): + def shutdown(self, how): self._sslobj = None socket.shutdown(self, how) - def close (self): + def close(self): if self._makefile_refs < 1: self._sslobj = None socket.close(self) else: self._makefile_refs -= 1 - def do_handshake (self): + def do_handshake(self): """Perform a TLS/SSL handshake.""" @@ -394,7 +394,7 @@ d = pem_cert_string.strip()[len(PEM_HEADER):-len(PEM_FOOTER)] return base64.decodestring(d) -def get_server_certificate (addr, ssl_version=PROTOCOL_SSLv3, ca_certs=None): +def get_server_certificate(addr, ssl_version=PROTOCOL_SSLv3, ca_certs=None): """Retrieve the certificate from the server at the specified address, and return it as a PEM-encoded string. @@ -413,7 +413,7 @@ s.close() return DER_cert_to_PEM_cert(dercert) -def get_protocol_name (protocol_code): +def get_protocol_name(protocol_code): if protocol_code == PROTOCOL_TLSv1: return "TLSv1" elif protocol_code == PROTOCOL_SSLv23: @@ -428,7 +428,7 @@ # a replacement for the old socket.ssl function -def sslwrap_simple (sock, keyfile=None, certfile=None): +def sslwrap_simple(sock, keyfile=None, certfile=None): """A replacement for the old socket.ssl function. Designed for compability with Python 2.5 and earlier. Will disappear in From python-checkins at python.org Mon Jan 18 10:12:07 2010 From: python-checkins at python.org (ezio.melotti) Date: Mon, 18 Jan 2010 09:12:07 -0000 Subject: [Python-checkins] r77596 - in python/branches/release26-maint: Lib/ssl.py Message-ID: Author: ezio.melotti Date: Mon Jan 18 10:12:06 2010 New Revision: 77596 Log: Merged revisions 77595 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77595 | ezio.melotti | 2010-01-18 11:10:26 +0200 (Mon, 18 Jan 2010) | 1 line #7730: remove spaces after functions names ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/ssl.py Modified: python/branches/release26-maint/Lib/ssl.py ============================================================================== --- python/branches/release26-maint/Lib/ssl.py (original) +++ python/branches/release26-maint/Lib/ssl.py Mon Jan 18 10:12:06 2010 @@ -78,7 +78,7 @@ from socket import getnameinfo as _getnameinfo import base64 # for DER-to-PEM translation -class SSLSocket (socket): +class SSLSocket(socket): """This class implements a subtype of socket.socket that wraps the underlying OS socket in an SSL context when necessary, and @@ -156,14 +156,14 @@ return self._sslobj.peer_certificate(binary_form) - def cipher (self): + def cipher(self): if not self._sslobj: return None else: return self._sslobj.cipher() - def send (self, data, flags=0): + def send(self, data, flags=0): if self._sslobj: if flags != 0: raise ValueError( @@ -184,14 +184,14 @@ else: return socket.send(self, data, flags) - def sendto (self, data, addr, flags=0): + def sendto(self, data, addr, flags=0): if self._sslobj: raise ValueError("sendto not allowed on instances of %s" % self.__class__) else: return socket.sendto(self, data, addr, flags) - def sendall (self, data, flags=0): + def sendall(self, data, flags=0): if self._sslobj: if flags != 0: raise ValueError( @@ -206,7 +206,7 @@ else: return socket.sendall(self, data, flags) - def recv (self, buflen=1024, flags=0): + def recv(self, buflen=1024, flags=0): if self._sslobj: if flags != 0: raise ValueError( @@ -223,7 +223,7 @@ else: return socket.recv(self, buflen, flags) - def recv_into (self, buffer, nbytes=None, flags=0): + def recv_into(self, buffer, nbytes=None, flags=0): if buffer and (nbytes is None): nbytes = len(buffer) elif nbytes is None: @@ -247,27 +247,27 @@ else: return socket.recv_into(self, buffer, nbytes, flags) - def recvfrom (self, addr, buflen=1024, flags=0): + def recvfrom(self, addr, buflen=1024, flags=0): if self._sslobj: raise ValueError("recvfrom not allowed on instances of %s" % self.__class__) else: return socket.recvfrom(self, addr, buflen, flags) - def recvfrom_into (self, buffer, nbytes=None, flags=0): + def recvfrom_into(self, buffer, nbytes=None, flags=0): if self._sslobj: raise ValueError("recvfrom_into not allowed on instances of %s" % self.__class__) else: return socket.recvfrom_into(self, buffer, nbytes, flags) - def pending (self): + def pending(self): if self._sslobj: return self._sslobj.pending() else: return 0 - def unwrap (self): + def unwrap(self): if self._sslobj: s = self._sslobj.shutdown() self._sslobj = None @@ -275,18 +275,18 @@ else: raise ValueError("No SSL wrapper around " + str(self)) - def shutdown (self, how): + def shutdown(self, how): self._sslobj = None socket.shutdown(self, how) - def close (self): + def close(self): if self._makefile_refs < 1: self._sslobj = None socket.close(self) else: self._makefile_refs -= 1 - def do_handshake (self): + def do_handshake(self): """Perform a TLS/SSL handshake.""" @@ -394,7 +394,7 @@ d = pem_cert_string.strip()[len(PEM_HEADER):-len(PEM_FOOTER)] return base64.decodestring(d) -def get_server_certificate (addr, ssl_version=PROTOCOL_SSLv3, ca_certs=None): +def get_server_certificate(addr, ssl_version=PROTOCOL_SSLv3, ca_certs=None): """Retrieve the certificate from the server at the specified address, and return it as a PEM-encoded string. @@ -413,7 +413,7 @@ s.close() return DER_cert_to_PEM_cert(dercert) -def get_protocol_name (protocol_code): +def get_protocol_name(protocol_code): if protocol_code == PROTOCOL_TLSv1: return "TLSv1" elif protocol_code == PROTOCOL_SSLv23: @@ -428,7 +428,7 @@ # a replacement for the old socket.ssl function -def sslwrap_simple (sock, keyfile=None, certfile=None): +def sslwrap_simple(sock, keyfile=None, certfile=None): """A replacement for the old socket.ssl function. Designed for compability with Python 2.5 and earlier. Will disappear in From python-checkins at python.org Mon Jan 18 10:15:14 2010 From: python-checkins at python.org (ezio.melotti) Date: Mon, 18 Jan 2010 09:15:14 -0000 Subject: [Python-checkins] r77597 - in python/branches/py3k: Lib/ssl.py Message-ID: Author: ezio.melotti Date: Mon Jan 18 10:15:14 2010 New Revision: 77597 Log: Merged revisions 77595 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77595 | ezio.melotti | 2010-01-18 11:10:26 +0200 (Mon, 18 Jan 2010) | 1 line #7730: remove spaces after functions names ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/ssl.py Modified: python/branches/py3k/Lib/ssl.py ============================================================================== --- python/branches/py3k/Lib/ssl.py (original) +++ python/branches/py3k/Lib/ssl.py Mon Jan 18 10:15:14 2010 @@ -304,7 +304,7 @@ self._sslobj = None socket.shutdown(self, how) - def unwrap (self): + def unwrap(self): if self._sslobj: s = self._sslobj.shutdown() self._sslobj = None From python-checkins at python.org Mon Jan 18 10:16:18 2010 From: python-checkins at python.org (ezio.melotti) Date: Mon, 18 Jan 2010 09:16:18 -0000 Subject: [Python-checkins] r77598 - in python/branches/release31-maint: Lib/ssl.py Message-ID: Author: ezio.melotti Date: Mon Jan 18 10:16:17 2010 New Revision: 77598 Log: Merged revisions 77597 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77597 | ezio.melotti | 2010-01-18 11:15:14 +0200 (Mon, 18 Jan 2010) | 9 lines Merged revisions 77595 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77595 | ezio.melotti | 2010-01-18 11:10:26 +0200 (Mon, 18 Jan 2010) | 1 line #7730: remove spaces after functions names ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/ssl.py Modified: python/branches/release31-maint/Lib/ssl.py ============================================================================== --- python/branches/release31-maint/Lib/ssl.py (original) +++ python/branches/release31-maint/Lib/ssl.py Mon Jan 18 10:16:17 2010 @@ -304,7 +304,7 @@ self._sslobj = None socket.shutdown(self, how) - def unwrap (self): + def unwrap(self): if self._sslobj: s = self._sslobj.shutdown() self._sslobj = None From nnorwitz at gmail.com Mon Jan 18 10:17:02 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 18 Jan 2010 04:17:02 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100118091702.GA6657@kbk-i386-bb.psfb.org> 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19647 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.506s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15448 refs] [15448 refs] [15448 refs] [25474 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17036 refs] [17036 refs] test_plistlib test_poll test_popen [15453 refs] [15453 refs] [15453 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20958 refs] [20958 refs] test_pyexpat test_queue test_quopri [18302 refs] [18302 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15448 refs] [15448 refs] [15451 refs] [15448 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15448 refs] [15448 refs] [15677 refs] [15471 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15451 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18759 refs] [20339 refs] [20153 refs] [20153 refs] [20153 refs] [20153 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [872649 refs] From nnorwitz at gmail.com Mon Jan 18 10:39:55 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 18 Jan 2010 04:39:55 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100118093955.GA16286@kbk-i386-bb.psfb.org> 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19650 refs] [19650 refs] [19650 refs] [19647 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.477s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15448 refs] [15448 refs] [15448 refs] [25474 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17036 refs] [17036 refs] test_plistlib test_poll test_popen [15453 refs] [15453 refs] [15453 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20958 refs] [20958 refs] test_pyexpat test_queue test_quopri [18302 refs] [18302 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15448 refs] [15448 refs] [15451 refs] [15448 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15448 refs] [15448 refs] [15677 refs] [15471 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15451 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18759 refs] [20339 refs] [20153 refs] [20153 refs] [20153 refs] [20153 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [871557 refs] From nnorwitz at gmail.com Mon Jan 18 14:22:17 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 18 Jan 2010 08:22:17 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100118132217.GA11078@kbk-i386-bb.psfb.org> 349 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-3713 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19647 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.479s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15448 refs] [15448 refs] [15448 refs] [25474 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17036 refs] [17036 refs] test_plistlib test_poll test_popen [15453 refs] [15453 refs] [15453 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20958 refs] [20958 refs] test_pyexpat test_queue test_quopri [18302 refs] [18302 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15448 refs] [15448 refs] [15451 refs] [15448 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15448 refs] [15448 refs] [15677 refs] [15471 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15451 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18759 refs] [20339 refs] [20153 refs] [20153 refs] [20153 refs] [20153 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 349 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [889181 refs] From python-checkins at python.org Mon Jan 18 22:04:00 2010 From: python-checkins at python.org (antoine.pitrou) Date: Mon, 18 Jan 2010 21:04:00 -0000 Subject: [Python-checkins] r77599 - in python/trunk/Tools/iobench: iobench.py Message-ID: Author: antoine.pitrou Date: Mon Jan 18 22:04:00 2010 New Revision: 77599 Log: Add iobench to the Tools directory (see December python-dev discussion) Added: python/trunk/Tools/iobench/ python/trunk/Tools/iobench/iobench.py (contents, props changed) Added: python/trunk/Tools/iobench/iobench.py ============================================================================== --- (empty file) +++ python/trunk/Tools/iobench/iobench.py Mon Jan 18 22:04:00 2010 @@ -0,0 +1,539 @@ +# -*- coding: utf-8 -*- +# This file should be kept compatible with both Python 2.6 and Python >= 3.0. + +import time +import os +import re +import sys +import hashlib +import functools +import itertools +from optparse import OptionParser + +out = sys.stdout + +TEXT_ENCODING = 'utf8' +NEWLINES = 'lf' + +# Compatibility +try: + xrange +except NameError: + xrange = range + +def text_open(fn, mode, encoding=None): + try: + return open(fn, mode, encoding=encoding or TEXT_ENCODING) + except TypeError: + return open(fn, mode) + +def get_file_sizes(): + for s in ['20 KB', '400 KB', '10 MB']: + size, unit = s.split() + size = int(size) * {'KB': 1024, 'MB': 1024 ** 2}[unit] + yield s.replace(' ', ''), size + +def get_binary_files(): + return ((name + ".bin", size) for name, size in get_file_sizes()) + +def get_text_files(): + return (("%s-%s-%s.txt" % (name, TEXT_ENCODING, NEWLINES), size) + for name, size in get_file_sizes()) + +def with_open_mode(mode): + def decorate(f): + f.file_open_mode = mode + return f + return decorate + +def with_sizes(*sizes): + def decorate(f): + f.file_sizes = sizes + return f + return decorate + + +# Here begin the tests + + at with_open_mode("r") + at with_sizes("medium") +def read_bytewise(f): + """ read one unit at a time """ + f.seek(0) + while f.read(1): + pass + + at with_open_mode("r") + at with_sizes("medium") +def read_small_chunks(f): + """ read 20 units at a time """ + f.seek(0) + while f.read(20): + pass + + at with_open_mode("r") + at with_sizes("medium") +def read_big_chunks(f): + """ read 4096 units at a time """ + f.seek(0) + while f.read(4096): + pass + + at with_open_mode("r") + at with_sizes("small", "medium", "large") +def read_whole_file(f): + """ read whole contents at once """ + f.seek(0) + while f.read(): + pass + + at with_open_mode("rt") + at with_sizes("medium") +def read_lines(f): + """ read one line at a time """ + f.seek(0) + for line in f: + pass + + at with_open_mode("r") + at with_sizes("medium") +def seek_forward_bytewise(f): + """ seek forward one unit at a time """ + f.seek(0, 2) + size = f.tell() + f.seek(0, 0) + for i in xrange(0, size - 1): + f.seek(i, 0) + + at with_open_mode("r") + at with_sizes("medium") +def seek_forward_blockwise(f): + """ seek forward 1000 units at a time """ + f.seek(0, 2) + size = f.tell() + f.seek(0, 0) + for i in xrange(0, size - 1, 1000): + f.seek(i, 0) + + at with_open_mode("rb") + at with_sizes("medium") +def read_seek_bytewise(f): + """ alternate read & seek one unit """ + f.seek(0) + while f.read(1): + f.seek(1, 1) + + at with_open_mode("rb") + at with_sizes("medium") +def read_seek_blockwise(f): + """ alternate read & seek 1000 units """ + f.seek(0) + while f.read(1000): + f.seek(1000, 1) + + + at with_open_mode("w") + at with_sizes("small") +def write_bytewise(f, source): + """ write one unit at a time """ + for i in xrange(0, len(source)): + f.write(source[i:i+1]) + + at with_open_mode("w") + at with_sizes("medium") +def write_small_chunks(f, source): + """ write 20 units at a time """ + for i in xrange(0, len(source), 20): + f.write(source[i:i+20]) + + at with_open_mode("w") + at with_sizes("medium") +def write_medium_chunks(f, source): + """ write 4096 units at a time """ + for i in xrange(0, len(source), 4096): + f.write(source[i:i+4096]) + + at with_open_mode("w") + at with_sizes("large") +def write_large_chunks(f, source): + """ write 1e6 units at a time """ + for i in xrange(0, len(source), 1000000): + f.write(source[i:i+1000000]) + + + at with_open_mode("w+") + at with_sizes("small") +def modify_bytewise(f, source): + """ modify one unit at a time """ + f.seek(0) + for i in xrange(0, len(source)): + f.write(source[i:i+1]) + + at with_open_mode("w+") + at with_sizes("medium") +def modify_small_chunks(f, source): + """ modify 20 units at a time """ + f.seek(0) + for i in xrange(0, len(source), 20): + f.write(source[i:i+20]) + + at with_open_mode("w+") + at with_sizes("medium") +def modify_medium_chunks(f, source): + """ modify 4096 units at a time """ + f.seek(0) + for i in xrange(0, len(source), 4096): + f.write(source[i:i+4096]) + + at with_open_mode("wb+") + at with_sizes("medium") +def modify_seek_forward_bytewise(f, source): + """ alternate write & seek one unit """ + f.seek(0) + for i in xrange(0, len(source), 2): + f.write(source[i:i+1]) + f.seek(i+2) + + at with_open_mode("wb+") + at with_sizes("medium") +def modify_seek_forward_blockwise(f, source): + """ alternate write & seek 1000 units """ + f.seek(0) + for i in xrange(0, len(source), 2000): + f.write(source[i:i+1000]) + f.seek(i+2000) + +# XXX the 2 following tests don't work with py3k's text IO + at with_open_mode("wb+") + at with_sizes("medium") +def read_modify_bytewise(f, source): + """ alternate read & write one unit """ + f.seek(0) + for i in xrange(0, len(source), 2): + f.read(1) + f.write(source[i+1:i+2]) + + at with_open_mode("wb+") + at with_sizes("medium") +def read_modify_blockwise(f, source): + """ alternate read & write 1000 units """ + f.seek(0) + for i in xrange(0, len(source), 2000): + f.read(1000) + f.write(source[i+1000:i+2000]) + + +read_tests = [ + read_bytewise, read_small_chunks, read_lines, read_big_chunks, + None, read_whole_file, None, + seek_forward_bytewise, seek_forward_blockwise, + read_seek_bytewise, read_seek_blockwise, +] + +write_tests = [ + write_bytewise, write_small_chunks, write_medium_chunks, write_large_chunks, +] + +modify_tests = [ + modify_bytewise, modify_small_chunks, modify_medium_chunks, + None, + modify_seek_forward_bytewise, modify_seek_forward_blockwise, + read_modify_bytewise, read_modify_blockwise, +] + +def run_during(duration, func): + _t = time.time + n = 0 + start = os.times() + start_timestamp = _t() + real_start = start[4] or start_timestamp + while True: + func() + n += 1 + if _t() - start_timestamp > duration: + break + end = os.times() + real = (end[4] if start[4] else time.time()) - real_start + return n, real, sum(end[0:2]) - sum(start[0:2]) + +def warm_cache(filename): + with open(filename, "rb") as f: + f.read() + + +def run_all_tests(options): + def print_label(filename, func): + name = re.split(r'[-.]', filename)[0] + out.write( + ("[%s] %s... " + % (name.center(7), func.__doc__.strip()) + ).ljust(52)) + out.flush() + + def print_results(size, n, real, cpu): + bw = n * float(size) / 1024 ** 2 / real + bw = ("%4d MB/s" if bw > 100 else "%.3g MB/s") % bw + out.write(bw.rjust(12) + "\n") + if cpu < 0.90 * real: + out.write(" warning: test above used only %d%% CPU, " + "result may be flawed!\n" % (100.0 * cpu / real)) + + def run_one_test(name, size, open_func, test_func, *args): + mode = test_func.file_open_mode + print_label(name, test_func) + if "w" not in mode or "+" in mode: + warm_cache(name) + with open_func(name) as f: + n, real, cpu = run_during(1.5, lambda: test_func(f, *args)) + print_results(size, n, real, cpu) + + def run_test_family(tests, mode_filter, files, open_func, *make_args): + for test_func in tests: + if test_func is None: + out.write("\n") + continue + if mode_filter in test_func.file_open_mode: + continue + for s in test_func.file_sizes: + name, size = files[size_names[s]] + #name += file_ext + args = tuple(f(name, size) for f in make_args) + run_one_test(name, size, + open_func, test_func, *args) + + size_names = { + "small": 0, + "medium": 1, + "large": 2, + } + + binary_files = list(get_binary_files()) + text_files = list(get_text_files()) + if "b" in options: + print("Binary unit = one byte") + if "t" in options: + print("Text unit = one character (%s-decoded)" % TEXT_ENCODING) + + # Binary reads + if "b" in options and "r" in options: + print("\n** Binary input **\n") + run_test_family(read_tests, "t", binary_files, lambda fn: open(fn, "rb")) + + # Text reads + if "t" in options and "r" in options: + print("\n** Text input **\n") + run_test_family(read_tests, "b", text_files, lambda fn: text_open(fn, "r")) + + # Binary writes + if "b" in options and "w" in options: + print("\n** Binary append **\n") + def make_test_source(name, size): + with open(name, "rb") as f: + return f.read() + run_test_family(write_tests, "t", binary_files, + lambda fn: open(os.devnull, "wb"), make_test_source) + + # Text writes + if "t" in options and "w" in options: + print("\n** Text append **\n") + def make_test_source(name, size): + with text_open(name, "r") as f: + return f.read() + run_test_family(write_tests, "b", text_files, + lambda fn: text_open(os.devnull, "w"), make_test_source) + + # Binary overwrites + if "b" in options and "w" in options: + print("\n** Binary overwrite **\n") + def make_test_source(name, size): + with open(name, "rb") as f: + return f.read() + run_test_family(modify_tests, "t", binary_files, + lambda fn: open(fn, "r+b"), make_test_source) + + # Text overwrites + if "t" in options and "w" in options: + print("\n** Text overwrite **\n") + def make_test_source(name, size): + with text_open(name, "r") as f: + return f.read() + run_test_family(modify_tests, "b", text_files, + lambda fn: open(fn, "r+"), make_test_source) + + +def prepare_files(): + print("Preparing files...") + # Binary files + for name, size in get_binary_files(): + if os.path.isfile(name) and os.path.getsize(name) == size: + continue + with open(name, "wb") as f: + f.write(os.urandom(size)) + # Text files + chunk = [] + with text_open(__file__, "rU", encoding='utf8') as f: + for line in f: + if line.startswith("# "): + break + else: + raise RuntimeError( + "Couldn't find chunk marker in %s !" % __file__) + if NEWLINES == "all": + it = itertools.cycle(["\n", "\r", "\r\n"]) + else: + it = itertools.repeat( + {"cr": "\r", "lf": "\n", "crlf": "\r\n"}[NEWLINES]) + chunk = "".join(line.replace("\n", next(it)) for line in f) + if isinstance(chunk, bytes): + chunk = chunk.decode('utf8') + chunk = chunk.encode(TEXT_ENCODING) + for name, size in get_text_files(): + if os.path.isfile(name) and os.path.getsize(name) == size: + continue + head = chunk * (size // len(chunk)) + tail = chunk[:size % len(chunk)] + # Adjust tail to end on a character boundary + while True: + try: + tail.decode(TEXT_ENCODING) + break + except UnicodeDecodeError: + tail = tail[:-1] + with open(name, "wb") as f: + f.write(head) + f.write(tail) + +def main(): + global TEXT_ENCODING, NEWLINES + + usage = "usage: %prog [-h|--help] [options]" + parser = OptionParser(usage=usage) + parser.add_option("-b", "--binary", + action="store_true", dest="binary", default=False, + help="run binary I/O tests") + parser.add_option("-t", "--text", + action="store_true", dest="text", default=False, + help="run text I/O tests") + parser.add_option("-r", "--read", + action="store_true", dest="read", default=False, + help="run read tests") + parser.add_option("-w", "--write", + action="store_true", dest="write", default=False, + help="run write & modify tests") + parser.add_option("-E", "--encoding", + action="store", dest="encoding", default=None, + help="encoding for text tests (default: %s)" % TEXT_ENCODING) + parser.add_option("-N", "--newlines", + action="store", dest="newlines", default='lf', + help="line endings for text tests " + "(one of: {lf (default), cr, crlf, all})") + options, args = parser.parse_args() + if args: + parser.error("unexpected arguments") + NEWLINES = options.newlines.lower() + if NEWLINES not in ('lf', 'cr', 'crlf', 'all'): + parser.error("invalid 'newlines' option: %r" % NEWLINES) + + test_options = "" + if options.read: + test_options += "r" + if options.write: + test_options += "w" + elif not options.read: + test_options += "rw" + if options.text: + test_options += "t" + if options.binary: + test_options += "b" + elif not options.text: + test_options += "tb" + + if options.encoding: + TEXT_ENCODING = options.encoding + + prepare_files() + run_all_tests(test_options) + +if __name__ == "__main__": + main() + + +# -- This part to exercise text reading. Don't change anything! -- +# + +""" +1. +G?ttir allar, +??r gangi fram, +um sko?ask skyli, +um skyggnast skyli, +?v? at ?v?st er at vita, +hvar ?vinir +sitja ? fleti fyrir. + +2. +Gefendr heilir! +Gestr er inn kominn, +hvar skal sitja sj?? +Mj?k er br??r, +s? er ? br?ndum skal +s?ns of freista frama. + +3. +Elds er ??rf, +?eims inn er kominn +ok ? kn? kalinn; +matar ok v??a +er manni ??rf, +?eim er hefr um fjall farit. + +4. +Vatns er ??rf, +?eim er til ver?ar kemr, +?erru ok ?j??la?ar, +g??s of ??is, +ef s?r geta m?tti, +or?s ok endr??gu. + +5. +Vits er ??rf, +?eim er v??a ratar; +d?lt er heima hvat; +at augabrag?i ver?r, +s? er ekki kann +ok me? snotrum sitr. + +6. +At hyggjandi sinni +skyli-t ma?r hr?sinn vera, +heldr g?tinn at ge?i; +?? er horskr ok ??gull +kemr heimisgar?a til, +sjaldan ver?r v?ti v?rum, +?v? at ?brig?ra vin +f?r ma?r aldregi +en mannvit mikit. + +7. +Inn vari gestr, +er til ver?ar kemr, +?unnu hlj??i ?egir, +eyrum hl??ir, +en augum sko?ar; +sv? n?sisk fr??ra hverr fyrir. + +8. +Hinn er s?ll, +er s?r of getr +lof ok l?knstafi; +?d?lla er vi? ?at, +er ma?r eiga skal +annars brj?stum ?. +""" + +""" +C'est revenir tard, je le sens, sur un sujet trop rebattu et d?j? presque oubli?. Mon ?tat, qui ne me permet plus aucun travail suivi, mon aversion pour le genre pol?mique, ont caus? ma lenteur ? ?crire et ma r?pugnance ? publier. J'aurais m?me tout ? fait supprim? ces Lettres, ou plut?t je lie les aurais point ?crites, s'il n'e?t ?t? question que de moi : Mais ma patrie ne m'est pas tellement devenue ?trang?re que je puisse voir tranquillement opprimer ses citoyens, surtout lorsqu'ils n'ont compromis leurs droits qu'en d?fendant ma cause. Je serais le dernier des hommes si dans une telle occasion j'?coutais un sentiment qui n'est plus ni douceur ni patience, mais faiblesse et l?chet?, dans celui qu'il emp?che de remplir son devoir. +Rien de moins important pour le public, j'en conviens, que la mati?re de ces lettres. La constitution d'une petite R?publique, le sort d'un petit particulier, l'expos? de quelques injustices, la r?futation de quelques sophismes ; tout cela n'a rien en soi d'assez consid?rable pour m?riter beaucoup de lecteurs : mais si mes sujets sont petits mes objets sont grands, et dignes de l'attention de tout honn?te homme. Laissons Gen?ve ? sa place, et Rousseau dans sa d?pression ; mais la religion, mais la libert?, la justice ! voil?, qui que vous soyez, ce qui n'est pas au-dessous de vous. +Qu'on ne cherche pas m?me ici dans le style le d?dommagement de l'aridit? de la mati?re. Ceux que quelques traits heureux de ma plume ont si fort irrit?s trouveront de quoi s'apaiser dans ces lettres, L'honneur de d?fendre un opprim? e?t enflamm? mon coeur si j'avais parl? pour un autre. R?duit au triste emploi de me d?fendre moi-m?me, j'ai d? me borner ? raisonner ; m'?chauffer e?t ?t? m'avilir. J'aurai donc trouv? gr?ce en ce point devant ceux qui s'imaginent qu'il est essentiel ? la v?rit? d'?tre dite froidement ; opinion que pourtant j'ai peine ? comprendre. Lorsqu'une vive persuasion nous anime, le moyen d'employer un langage glac? ? Quand Archim?de tout transport? courait nu dans les rues de Syracuse, en avait-il moins trouv? la v?rit? parce qu'il se passionnait pour elle ? Tout au contraire, celui qui la sent ne peut s'abstenir de l'adorer ; celui qui demeure froid ne l'a pas vue. +Quoi qu'il en soit, je prie les lecteurs de vouloir bien mettre ? part mon beau style, et d'examiner seulement si je raisonne bien ou mal ; car enfin, de cela seul qu'un auteur s'exprime en bons termes, je ne vois pas comment il peut s'ensuivre que cet auteur ne sait ce qu'il dit. +""" From python-checkins at python.org Mon Jan 18 22:10:32 2010 From: python-checkins at python.org (antoine.pitrou) Date: Mon, 18 Jan 2010 21:10:32 -0000 Subject: [Python-checkins] r77600 - in python/trunk/Tools/ccbench: ccbench.py Message-ID: Author: antoine.pitrou Date: Mon Jan 18 22:10:31 2010 New Revision: 77600 Log: Add ccbench to the Tools directory Added: python/trunk/Tools/ccbench/ python/trunk/Tools/ccbench/ccbench.py (contents, props changed) Added: python/trunk/Tools/ccbench/ccbench.py ============================================================================== --- (empty file) +++ python/trunk/Tools/ccbench/ccbench.py Mon Jan 18 22:10:31 2010 @@ -0,0 +1,462 @@ +# -*- coding: utf-8 -*- +# This file should be kept compatible with both Python 2.6 and Python >= 3.0. + +from __future__ import division +from __future__ import print_function + +""" +ccbench, a Python concurrency benchmark. +""" + +import time +import os +import sys +import functools +import itertools +import threading +import subprocess +import socket +from optparse import OptionParser, SUPPRESS_HELP +import platform + +# Compatibility +try: + xrange +except NameError: + xrange = range + +try: + map = itertools.imap +except AttributeError: + pass + + +THROUGHPUT_DURATION = 2.0 + +LATENCY_PING_INTERVAL = 0.1 +LATENCY_DURATION = 2.0 + + +def task_pidigits(): + """Pi calculation (Python)""" + _map = map + _count = itertools.count + _islice = itertools.islice + + def calc_ndigits(n): + # From http://shootout.alioth.debian.org/ + def gen_x(): + return _map(lambda k: (k, 4*k + 2, 0, 2*k + 1), _count(1)) + + def compose(a, b): + aq, ar, as_, at = a + bq, br, bs, bt = b + return (aq * bq, + aq * br + ar * bt, + as_ * bq + at * bs, + as_ * br + at * bt) + + def extract(z, j): + q, r, s, t = z + return (q*j + r) // (s*j + t) + + def pi_digits(): + z = (1, 0, 0, 1) + x = gen_x() + while 1: + y = extract(z, 3) + while y != extract(z, 4): + z = compose(z, next(x)) + y = extract(z, 3) + z = compose((10, -10*y, 0, 1), z) + yield y + + return list(_islice(pi_digits(), n)) + + return calc_ndigits, (50, ) + +def task_regex(): + """regular expression (C)""" + # XXX this task gives horrendous latency results. + import re + # Taken from the `inspect` module + pat = re.compile(r'^(\s*def\s)|(.*(? return the previous one. + if end_event: + return niters, duration + niters += step + duration = t2 - start_time + if duration >= min_duration: + end_event.append(None) + return niters, duration + if t2 - t1 < 0.01: + # Minimize interference of measurement on overall runtime + step = step * 3 // 2 + elif do_yield: + # OS scheduling of Python threads is sometimes so bad that we + # have to force thread switching ourselves, otherwise we get + # completely useless results. + _sleep(0.0001) + t1 = t2 + + +def run_throughput_test(func, args, nthreads): + assert nthreads >= 1 + + # Warm up + func(*args) + + results = [] + loop = TimedLoop(func, args) + end_event = [] + + if nthreads == 1: + # Pure single-threaded performance, without any switching or + # synchronization overhead. + start_time = time.time() + results.append(loop(start_time, THROUGHPUT_DURATION, + end_event, do_yield=False)) + return results + + started = False + ready_cond = threading.Condition() + start_cond = threading.Condition() + ready = [] + + def run(): + with ready_cond: + ready.append(None) + ready_cond.notify() + with start_cond: + while not started: + start_cond.wait() + results.append(loop(start_time, THROUGHPUT_DURATION, + end_event, do_yield=True)) + + threads = [] + for i in range(nthreads): + threads.append(threading.Thread(target=run)) + for t in threads: + t.setDaemon(True) + t.start() + # We don't want measurements to include thread startup overhead, + # so we arrange for timing to start after all threads are ready. + with ready_cond: + while len(ready) < nthreads: + ready_cond.wait() + with start_cond: + start_time = time.time() + started = True + start_cond.notify(nthreads) + for t in threads: + t.join() + + return results + +def run_throughput_tests(max_threads): + for task in throughput_tasks: + print(task.__doc__) + print() + func, args = task() + nthreads = 1 + baseline_speed = None + while nthreads <= max_threads: + results = run_throughput_test(func, args, nthreads) + # Taking the max duration rather than average gives pessimistic + # results rather than optimistic. + speed = sum(r[0] for r in results) / max(r[1] for r in results) + print("threads=%d: %d" % (nthreads, speed), end="") + if baseline_speed is None: + print(" iterations/s.") + baseline_speed = speed + else: + print(" ( %d %%)" % (speed / baseline_speed * 100)) + nthreads += 1 + print() + + +LAT_END = "END" + +def _sendto(sock, s, addr): + sock.sendto(s.encode('ascii'), addr) + +def _recv(sock, n): + return sock.recv(n).decode('ascii') + +def latency_client(addr, nb_pings, interval): + sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + _time = time.time + _sleep = time.sleep + def _ping(): + _sendto(sock, "%r\n" % _time(), addr) + # The first ping signals the parent process that we are ready. + _ping() + # We give the parent a bit of time to notice. + _sleep(1.0) + for i in range(nb_pings): + _sleep(interval) + _ping() + _sendto(sock, LAT_END + "\n", addr) + +def run_latency_client(**kwargs): + cmd_line = [sys.executable, '-E', os.path.abspath(__file__)] + cmd_line.extend(['--latclient', repr(kwargs)]) + return subprocess.Popen(cmd_line) #, stdin=subprocess.PIPE, + #stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + +def run_latency_test(func, args, nthreads): + # Create a listening socket to receive the pings. We use UDP which should + # be painlessly cross-platform. + sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + sock.bind(("127.0.0.1", 0)) + addr = sock.getsockname() + + interval = LATENCY_PING_INTERVAL + duration = LATENCY_DURATION + nb_pings = int(duration / interval) + + results = [] + threads = [] + end_event = [] + start_cond = threading.Condition() + started = False + if nthreads > 0: + # Warm up + func(*args) + + results = [] + loop = TimedLoop(func, args) + ready = [] + ready_cond = threading.Condition() + + def run(): + with ready_cond: + ready.append(None) + ready_cond.notify() + with start_cond: + while not started: + start_cond.wait() + loop(start_time, duration * 1.5, end_event, do_yield=False) + + for i in range(nthreads): + threads.append(threading.Thread(target=run)) + for t in threads: + t.setDaemon(True) + t.start() + # Wait for threads to be ready + with ready_cond: + while len(ready) < nthreads: + ready_cond.wait() + + # Run the client and wait for the first ping(s) to arrive before + # unblocking the background threads. + chunks = [] + process = run_latency_client(addr=sock.getsockname(), + nb_pings=nb_pings, interval=interval) + s = _recv(sock, 4096) + _time = time.time + + with start_cond: + start_time = _time() + started = True + start_cond.notify(nthreads) + + while LAT_END not in s: + s = _recv(sock, 4096) + t = _time() + chunks.append((t, s)) + + # Tell the background threads to stop. + end_event.append(None) + for t in threads: + t.join() + process.wait() + + for recv_time, chunk in chunks: + # NOTE: it is assumed that a line sent by a client wasn't received + # in two chunks because the lines are very small. + for line in chunk.splitlines(): + line = line.strip() + if line and line != LAT_END: + send_time = eval(line) + assert isinstance(send_time, float) + results.append((send_time, recv_time)) + + return results + +def run_latency_tests(max_threads): + for task in latency_tasks: + print("Background CPU task:", task.__doc__) + print() + func, args = task() + nthreads = 0 + while nthreads <= max_threads: + results = run_latency_test(func, args, nthreads) + n = len(results) + # We print out milliseconds + lats = [1000 * (t2 - t1) for (t1, t2) in results] + #print(list(map(int, lats))) + avg = sum(lats) / n + dev = (sum((x - avg) ** 2 for x in lats) / n) ** 0.5 + print("CPU threads=%d: %d ms. (std dev: %d ms.)" % (nthreads, avg, dev), end="") + print() + #print(" [... from %d samples]" % n) + nthreads += 1 + print() + + +def main(): + usage = "usage: %prog [-h|--help] [options]" + parser = OptionParser(usage=usage) + parser.add_option("-t", "--throughput", + action="store_true", dest="throughput", default=False, + help="run throughput tests") + parser.add_option("-l", "--latency", + action="store_true", dest="latency", default=False, + help="run latency tests") + parser.add_option("-i", "--interval", + action="store", type="int", dest="check_interval", default=None, + help="sys.setcheckinterval() value") + parser.add_option("-I", "--switch-interval", + action="store", type="float", dest="switch_interval", default=None, + help="sys.setswitchinterval() value") + parser.add_option("-n", "--num-threads", + action="store", type="int", dest="nthreads", default=4, + help="max number of threads in tests") + + # Hidden option to run the pinging client + parser.add_option("", "--latclient", + action="store", dest="latclient", default=None, + help=SUPPRESS_HELP) + + options, args = parser.parse_args() + if args: + parser.error("unexpected arguments") + + if options.latclient: + kwargs = eval(options.latclient) + latency_client(**kwargs) + return + + if not options.throughput and not options.latency: + options.throughput = options.latency = True + if options.check_interval: + sys.setcheckinterval(options.check_interval) + if options.switch_interval: + sys.setswitchinterval(options.switch_interval) + + print("== %s %s (%s) ==" % ( + platform.python_implementation(), + platform.python_version(), + platform.python_build()[0], + )) + # Processor identification often has repeated spaces + cpu = ' '.join(platform.processor().split()) + print("== %s %s on '%s' ==" % ( + platform.machine(), + platform.system(), + cpu, + )) + print() + + if options.throughput: + print("--- Throughput ---") + print() + run_throughput_tests(options.nthreads) + + if options.latency: + print("--- Latency ---") + print() + run_latency_tests(options.nthreads) + +if __name__ == "__main__": + main() From python-checkins at python.org Mon Jan 18 22:15:21 2010 From: python-checkins at python.org (antoine.pitrou) Date: Mon, 18 Jan 2010 21:15:21 -0000 Subject: [Python-checkins] r77601 - python/trunk/Misc/NEWS Message-ID: Author: antoine.pitrou Date: Mon Jan 18 22:15:21 2010 New Revision: 77601 Log: Add a NEWS entry for r77599 and r77600. Modified: python/trunk/Misc/NEWS Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Mon Jan 18 22:15:21 2010 @@ -81,6 +81,13 @@ - Issue #7661: Allow ctypes to be built from a non-ASCII directory path. Patch by Florent Xicluna. +Tools/Demos +----------- + +- iobench (a file I/O benchmark) and ccbench (a concurrency benchmark) were + added to the `Tools/` directory. They were previously living in the + sandbox. + What's New in Python 2.7 alpha 2? ================================= From python-checkins at python.org Mon Jan 18 22:20:54 2010 From: python-checkins at python.org (antoine.pitrou) Date: Mon, 18 Jan 2010 21:20:54 -0000 Subject: [Python-checkins] r77602 - in python/branches/py3k: Misc/NEWS Tools/ccbench Tools/iobench Message-ID: Author: antoine.pitrou Date: Mon Jan 18 22:20:53 2010 New Revision: 77602 Log: Merged revisions 77599-77601 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77599 | antoine.pitrou | 2010-01-18 22:04:00 +0100 (lun., 18 janv. 2010) | 3 lines Add iobench to the Tools directory (see December python-dev discussion) ........ r77600 | antoine.pitrou | 2010-01-18 22:10:31 +0100 (lun., 18 janv. 2010) | 3 lines Add ccbench to the Tools directory ........ r77601 | antoine.pitrou | 2010-01-18 22:15:21 +0100 (lun., 18 janv. 2010) | 3 lines Add a NEWS entry for r77599 and r77600. ........ Added: python/branches/py3k/Tools/ccbench/ - copied from r77601, /python/trunk/Tools/ccbench/ python/branches/py3k/Tools/iobench/ - copied from r77601, /python/trunk/Tools/iobench/ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Misc/NEWS Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Mon Jan 18 22:20:53 2010 @@ -724,6 +724,13 @@ - Removed importlib's custom test discovery code and switched to unittest.TestLoader.discover(). +Tools/Demos +----------- + +- iobench (a file I/O benchmark) and ccbench (a concurrency benchmark) were + added to the `Tools/` directory. They were previously living in the + sandbox. + What's New in Python 3.1? ========================= From nnorwitz at gmail.com Mon Jan 18 22:21:38 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 18 Jan 2010 16:21:38 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100118212137.GA10512@kbk-i386-bb.psfb.org> 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19647 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.509s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15448 refs] [15448 refs] [15448 refs] [25474 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17036 refs] [17036 refs] test_plistlib test_poll test_popen [15453 refs] [15453 refs] [15453 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20958 refs] [20958 refs] test_pyexpat test_queue test_quopri [18302 refs] [18302 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15448 refs] [15448 refs] [15451 refs] [15448 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15448 refs] [15448 refs] [15677 refs] [15471 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15451 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18759 refs] [20339 refs] [20153 refs] [20153 refs] [20153 refs] [20153 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [872659 refs] From nnorwitz at gmail.com Mon Jan 18 22:44:25 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 18 Jan 2010 16:44:25 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100118214425.GA20431@kbk-i386-bb.psfb.org> 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19650 refs] [19650 refs] [19650 refs] [19647 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.782s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15448 refs] [15448 refs] [15448 refs] [25474 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17036 refs] [17036 refs] test_plistlib test_poll test_popen [15453 refs] [15453 refs] [15453 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20958 refs] [20958 refs] test_pyexpat test_queue test_quopri [18302 refs] [18302 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15448 refs] [15448 refs] [15451 refs] [15448 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15448 refs] [15448 refs] [15677 refs] [15471 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15451 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18759 refs] [21197 refs] [20153 refs] [20153 refs] [20153 refs] [20153 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 343 tests OK. 1 test failed: test_hashlib 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [871559 refs] From python-checkins at python.org Tue Jan 19 00:07:56 2010 From: python-checkins at python.org (benjamin.peterson) Date: Mon, 18 Jan 2010 23:07:56 -0000 Subject: [Python-checkins] r77603 - in python/trunk: Doc/reference/datamodel.rst Lib/test/test_descr.py Message-ID: Author: benjamin.peterson Date: Tue Jan 19 00:07:56 2010 New Revision: 77603 Log: data descriptors do not override the class dictionary if __get__ is not defined Adjust documentation and add a test to verify this behavior. See http://mail.python.org/pipermail/python-dev/2010-January/095637.html for discussion. Modified: python/trunk/Doc/reference/datamodel.rst python/trunk/Lib/test/test_descr.py Modified: python/trunk/Doc/reference/datamodel.rst ============================================================================== --- python/trunk/Doc/reference/datamodel.rst (original) +++ python/trunk/Doc/reference/datamodel.rst Tue Jan 19 00:07:56 2010 @@ -1603,11 +1603,17 @@ ``A.__dict__['m'].__get__(obj, A)``. For instance bindings, the precedence of descriptor invocation depends on the -which descriptor methods are defined. Normally, data descriptors define both -:meth:`__get__` and :meth:`__set__`, while non-data descriptors have just the -:meth:`__get__` method. Data descriptors always override a redefinition in an +which descriptor methods are defined. A descriptor can define any combination +of :meth:`__get__`, :meth:`__set__` and :meth:`__delete__`. If it does not +define :meth:`__get__`, then accessing the attribute will return the descriptor +object itself unless there is a value in the object's instance dictionary. If +the descriptor defines :meth:`__set__` and/or :meth:`__delete__`, it is a data +descriptor; if it defines neither, it is a non-data descriptor. Normally, data +descriptors define both :meth:`__get__` and :meth:`__set__`, while non-data +descriptors have just the :meth:`__get__` method. Data descriptors with +:meth:`__set__` and :meth:`__get__` defined always override a redefinition in an instance dictionary. In contrast, non-data descriptors can be overridden by -instances. [#]_ +instances. Python methods (including :func:`staticmethod` and :func:`classmethod`) are implemented as non-data descriptors. Accordingly, instances can redefine and @@ -2434,13 +2440,6 @@ controlled conditions. It generally isn't a good idea though, since it can lead to some very strange behaviour if it is handled incorrectly. -.. [#] A descriptor can define any combination of :meth:`__get__`, - :meth:`__set__` and :meth:`__delete__`. If it does not define :meth:`__get__`, - then accessing the attribute even on an instance will return the descriptor - object itself. If the descriptor defines :meth:`__set__` and/or - :meth:`__delete__`, it is a data descriptor; if it defines neither, it is a - non-data descriptor. - .. [#] For operands of the same type, it is assumed that if the non-reflected method (such as :meth:`__add__`) fails the operation is not supported, which is why the reflected method is not called. Modified: python/trunk/Lib/test/test_descr.py ============================================================================== --- python/trunk/Lib/test/test_descr.py (original) +++ python/trunk/Lib/test/test_descr.py Tue Jan 19 00:07:56 2010 @@ -4496,6 +4496,26 @@ c[1:2] = 3 self.assertEqual(c.value, 3) + def test_set_and_no_get(self): + # See + # http://mail.python.org/pipermail/python-dev/2010-January/095637.html + class Descr(object): + + def __init__(self, name): + self.name = name + + def __set__(self, obj, value): + obj.__dict__[self.name] = value + descr = Descr("a") + + class X(object): + a = descr + + x = X() + self.assertIs(x.a, descr) + x.a = 42 + self.assertEqual(x.a, 42) + def test_getattr_hooks(self): # issue 4230 From solipsis at pitrou.net Tue Jan 19 00:54:46 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Tue, 19 Jan 2010 00:54:46 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77602): sum=0 Message-ID: <20100118235446.7CCB81770A@ns6635.ovh.net> py3k results for svn r77602 (hg cset ffbab16e64b4) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogL6895O', '-x', 'test_httpservers'] From python-checkins at python.org Tue Jan 19 01:09:58 2010 From: python-checkins at python.org (benjamin.peterson) Date: Tue, 19 Jan 2010 00:09:58 -0000 Subject: [Python-checkins] r77604 - in python/branches/py3k/Lib/test: test_bigmem.py test_builtin.py test_bytes.py test_cgi.py test_cmd_line.py test_cmd_line_script.py test_collections.py test_compile.py test_contains.py test_copyreg.py test_csv.py test_datetime.py test_dbm.py test_dbm_dumb.py test_dbm_gnu.py test_dbm_ndbm.py test_decimal.py test_defaultdict.py test_deque.py test_descr.py test_dict.py test_dictviews.py test_exceptions.py test_float.py test_funcattrs.py test_glob.py test_http_cookiejar.py test_import.py test_inspect.py test_ioctl.py test_iter.py test_mmap.py test_multiprocessing.py test_os.py test_peepholer.py test_pep352.py test_poplib.py test_posix.py test_posixpath.py test_pwd.py test_pyclbr.py test_pydoc.py test_raise.py test_random.py test_range.py test_reprlib.py test_runpy.py test_sax.py test_scope.py test_set.py test_site.py test_socket.py test_structseq.py test_subprocess.py test_sys.py test_tarfile.py test_telnetlib.py test_tempfile.py test_threading.py test_threading_local.py test_traceback.py test_types.py test_unicode.py test_unicode_file.py test_unicodedata.py test_unittest.py test_urllib2.py test_userdict.py test_warnings.py test_weakref.py test_weakset.py test_wsgiref.py test_zipfile.py test_zipimport.py test_zipimport_support.py Message-ID: Author: benjamin.peterson Date: Tue Jan 19 01:09:57 2010 New Revision: 77604 Log: use assert[Not]In where appropriate A patch from Dave Malcolm. Modified: python/branches/py3k/Lib/test/test_bigmem.py python/branches/py3k/Lib/test/test_builtin.py python/branches/py3k/Lib/test/test_bytes.py python/branches/py3k/Lib/test/test_cgi.py python/branches/py3k/Lib/test/test_cmd_line.py python/branches/py3k/Lib/test/test_cmd_line_script.py python/branches/py3k/Lib/test/test_collections.py python/branches/py3k/Lib/test/test_compile.py python/branches/py3k/Lib/test/test_contains.py python/branches/py3k/Lib/test/test_copyreg.py python/branches/py3k/Lib/test/test_csv.py python/branches/py3k/Lib/test/test_datetime.py python/branches/py3k/Lib/test/test_dbm.py python/branches/py3k/Lib/test/test_dbm_dumb.py python/branches/py3k/Lib/test/test_dbm_gnu.py python/branches/py3k/Lib/test/test_dbm_ndbm.py python/branches/py3k/Lib/test/test_decimal.py python/branches/py3k/Lib/test/test_defaultdict.py python/branches/py3k/Lib/test/test_deque.py python/branches/py3k/Lib/test/test_descr.py python/branches/py3k/Lib/test/test_dict.py python/branches/py3k/Lib/test/test_dictviews.py python/branches/py3k/Lib/test/test_exceptions.py python/branches/py3k/Lib/test/test_float.py python/branches/py3k/Lib/test/test_funcattrs.py python/branches/py3k/Lib/test/test_glob.py python/branches/py3k/Lib/test/test_http_cookiejar.py python/branches/py3k/Lib/test/test_import.py python/branches/py3k/Lib/test/test_inspect.py python/branches/py3k/Lib/test/test_ioctl.py python/branches/py3k/Lib/test/test_iter.py python/branches/py3k/Lib/test/test_mmap.py python/branches/py3k/Lib/test/test_multiprocessing.py python/branches/py3k/Lib/test/test_os.py python/branches/py3k/Lib/test/test_peepholer.py python/branches/py3k/Lib/test/test_pep352.py python/branches/py3k/Lib/test/test_poplib.py python/branches/py3k/Lib/test/test_posix.py python/branches/py3k/Lib/test/test_posixpath.py python/branches/py3k/Lib/test/test_pwd.py python/branches/py3k/Lib/test/test_pyclbr.py python/branches/py3k/Lib/test/test_pydoc.py python/branches/py3k/Lib/test/test_raise.py python/branches/py3k/Lib/test/test_random.py python/branches/py3k/Lib/test/test_range.py python/branches/py3k/Lib/test/test_reprlib.py python/branches/py3k/Lib/test/test_runpy.py python/branches/py3k/Lib/test/test_sax.py python/branches/py3k/Lib/test/test_scope.py python/branches/py3k/Lib/test/test_set.py python/branches/py3k/Lib/test/test_site.py python/branches/py3k/Lib/test/test_socket.py python/branches/py3k/Lib/test/test_structseq.py python/branches/py3k/Lib/test/test_subprocess.py python/branches/py3k/Lib/test/test_sys.py python/branches/py3k/Lib/test/test_tarfile.py python/branches/py3k/Lib/test/test_telnetlib.py python/branches/py3k/Lib/test/test_tempfile.py python/branches/py3k/Lib/test/test_threading.py python/branches/py3k/Lib/test/test_threading_local.py python/branches/py3k/Lib/test/test_traceback.py python/branches/py3k/Lib/test/test_types.py python/branches/py3k/Lib/test/test_unicode.py python/branches/py3k/Lib/test/test_unicode_file.py python/branches/py3k/Lib/test/test_unicodedata.py python/branches/py3k/Lib/test/test_unittest.py python/branches/py3k/Lib/test/test_urllib2.py python/branches/py3k/Lib/test/test_userdict.py python/branches/py3k/Lib/test/test_warnings.py python/branches/py3k/Lib/test/test_weakref.py python/branches/py3k/Lib/test/test_weakset.py python/branches/py3k/Lib/test/test_wsgiref.py python/branches/py3k/Lib/test/test_zipfile.py python/branches/py3k/Lib/test/test_zipimport.py python/branches/py3k/Lib/test/test_zipimport_support.py Modified: python/branches/py3k/Lib/test/test_bigmem.py ============================================================================== --- python/branches/py3k/Lib/test/test_bigmem.py (original) +++ python/branches/py3k/Lib/test/test_bigmem.py Tue Jan 19 01:09:57 2010 @@ -519,12 +519,12 @@ edge = _('-') * (size // 2) s = _('').join([edge, SUBSTR, edge]) del edge - self.assertTrue(SUBSTR in s) + self.assertIn(SUBSTR, s) self.assertFalse(SUBSTR * 2 in s) - self.assertTrue(_('-') in s) + self.assertIn(_('-'), s) self.assertFalse(_('a') in s) s += _('a') - self.assertTrue(_('a') in s) + self.assertIn(_('a'), s) @bigmemtest(minsize=_2G + 10, memuse=2) def test_compare(self, size): @@ -768,7 +768,7 @@ def test_contains(self, size): t = (1, 2, 3, 4, 5) * size self.assertEquals(len(t), size * 5) - self.assertTrue(5 in t) + self.assertIn(5, t) self.assertFalse((1, 2, 3, 4, 5) in t) self.assertFalse(0 in t) @@ -917,7 +917,7 @@ def test_contains(self, size): l = [1, 2, 3, 4, 5] * size self.assertEquals(len(l), size * 5) - self.assertTrue(5 in l) + self.assertIn(5, l) self.assertFalse([1, 2, 3, 4, 5] in l) self.assertFalse(0 in l) Modified: python/branches/py3k/Lib/test/test_builtin.py ============================================================================== --- python/branches/py3k/Lib/test/test_builtin.py (original) +++ python/branches/py3k/Lib/test/test_builtin.py Tue Jan 19 01:09:57 2010 @@ -248,11 +248,11 @@ # dir() - local scope local_var = 1 - self.assertTrue('local_var' in dir()) + self.assertIn('local_var', dir()) # dir(module) import sys - self.assertTrue('exit' in dir(sys)) + self.assertIn('exit', dir(sys)) # dir(module_with_invalid__dict__) import types @@ -262,8 +262,8 @@ self.assertRaises(TypeError, dir, f) # dir(type) - self.assertTrue("strip" in dir(str)) - self.assertTrue("__mro__" not in dir(str)) + self.assertIn("strip", dir(str)) + self.assertNotIn("__mro__", dir(str)) # dir(obj) class Foo(object): @@ -272,13 +272,13 @@ self.y = 8 self.z = 9 f = Foo() - self.assertTrue("y" in dir(f)) + self.assertIn("y", dir(f)) # dir(obj_no__dict__) class Foo(object): __slots__ = [] f = Foo() - self.assertTrue("__repr__" in dir(f)) + self.assertIn("__repr__", dir(f)) # dir(obj_no__class__with__dict__) # (an ugly trick to cause getattr(f, "__class__") to fail) @@ -287,8 +287,8 @@ def __init__(self): self.bar = "wow" f = Foo() - self.assertTrue("__repr__" not in dir(f)) - self.assertTrue("bar" in dir(f)) + self.assertNotIn("__repr__", dir(f)) + self.assertIn("bar", dir(f)) # dir(obj_using __dir__) class Foo(object): @@ -914,18 +914,18 @@ self.assertEqual(list(range(a+4, a, -2)), [a+4, a+2]) seq = list(range(a, b, c)) - self.assertTrue(a in seq) - self.assertTrue(b not in seq) + self.assertIn(a, seq) + self.assertNotIn(b, seq) self.assertEqual(len(seq), 2) seq = list(range(b, a, -c)) - self.assertTrue(b in seq) - self.assertTrue(a not in seq) + self.assertIn(b, seq) + self.assertNotIn(a, seq) self.assertEqual(len(seq), 2) seq = list(range(-a, -b, -c)) - self.assertTrue(-a in seq) - self.assertTrue(-b not in seq) + self.assertIn(-a, seq) + self.assertNotIn(-b, seq) self.assertEqual(len(seq), 2) self.assertRaises(TypeError, range) Modified: python/branches/py3k/Lib/test/test_bytes.py ============================================================================== --- python/branches/py3k/Lib/test/test_bytes.py (original) +++ python/branches/py3k/Lib/test/test_bytes.py Tue Jan 19 01:09:57 2010 @@ -229,8 +229,8 @@ def test_contains(self): b = self.type2test(b"abc") - self.assertTrue(ord('a') in b) - self.assertTrue(int(ord('a')) in b) + self.assertIn(ord('a'), b) + self.assertIn(int(ord('a')), b) self.assertFalse(200 in b) self.assertFalse(200 in b) self.assertRaises(ValueError, lambda: 300 in b) @@ -239,13 +239,13 @@ self.assertRaises(TypeError, lambda: float(ord('a')) in b) self.assertRaises(TypeError, lambda: "a" in b) for f in bytes, bytearray: - self.assertTrue(f(b"") in b) - self.assertTrue(f(b"a") in b) - self.assertTrue(f(b"b") in b) - self.assertTrue(f(b"c") in b) - self.assertTrue(f(b"ab") in b) - self.assertTrue(f(b"bc") in b) - self.assertTrue(f(b"abc") in b) + self.assertIn(f(b""), b) + self.assertIn(f(b"a"), b) + self.assertIn(f(b"b"), b) + self.assertIn(f(b"c"), b) + self.assertIn(f(b"ab"), b) + self.assertIn(f(b"bc"), b) + self.assertIn(f(b"abc"), b) self.assertFalse(f(b"ac") in b) self.assertFalse(f(b"d") in b) self.assertFalse(f(b"dab") in b) Modified: python/branches/py3k/Lib/test/test_cgi.py ============================================================================== --- python/branches/py3k/Lib/test/test_cgi.py (original) +++ python/branches/py3k/Lib/test/test_cgi.py Tue Jan 19 01:09:57 2010 @@ -143,7 +143,7 @@ # test individual fields for key in expect.keys(): expect_val = expect[key] - self.assertTrue(key in fs) + self.assertIn(key, fs) if len(expect_val) > 1: self.assertEqual(fs.getvalue(key), expect_val) else: Modified: python/branches/py3k/Lib/test/test_cmd_line.py ============================================================================== --- python/branches/py3k/Lib/test/test_cmd_line.py (original) +++ python/branches/py3k/Lib/test/test_cmd_line.py Tue Jan 19 01:09:57 2010 @@ -49,7 +49,7 @@ def verify_valid_flag(self, cmd_line): data = self.start_python(cmd_line) self.assertTrue(data == b'' or data.endswith(b'\n')) - self.assertTrue(b'Traceback' not in data) + self.assertNotIn(b'Traceback', data) def test_optimize(self): self.verify_valid_flag('-O') @@ -65,7 +65,7 @@ self.verify_valid_flag('-S') def test_usage(self): - self.assertTrue(b'usage' in self.start_python('-h')) + self.assertIn(b'usage', self.start_python('-h')) def test_version(self): version = ('Python %d.%d' % sys.version_info[:2]).encode("ascii") @@ -77,10 +77,10 @@ # codec), a recursion loop can occur. data, rc = self.start_python_and_exit_code('-v') self.assertEqual(rc, 0) - self.assertTrue(b'stack overflow' not in data) + self.assertNotIn(b'stack overflow', data) data, rc = self.start_python_and_exit_code('-vv') self.assertEqual(rc, 0) - self.assertTrue(b'stack overflow' not in data) + self.assertNotIn(b'stack overflow', data) def test_run_module(self): # Test expected operation of the '-m' switch @@ -166,8 +166,8 @@ p = _spawn_python_with_env('-S', '-c', 'import sys; print(sys.path)') stdout, _ = p.communicate() - self.assertTrue(path1.encode('ascii') in stdout) - self.assertTrue(path2.encode('ascii') in stdout) + self.assertIn(path1.encode('ascii'), stdout) + self.assertIn(path2.encode('ascii'), stdout) def test_main(): Modified: python/branches/py3k/Lib/test/test_cmd_line_script.py ============================================================================== --- python/branches/py3k/Lib/test/test_cmd_line_script.py (original) +++ python/branches/py3k/Lib/test/test_cmd_line_script.py Tue Jan 19 01:09:57 2010 @@ -80,9 +80,9 @@ print(printed_file) print(printed_package) print(printed_argv0) - self.assertTrue(printed_file.encode('utf-8') in data) - self.assertTrue(printed_package.encode('utf-8') in data) - self.assertTrue(printed_argv0.encode('utf-8') in data) + self.assertIn(printed_file.encode('utf-8'), data) + self.assertIn(printed_package.encode('utf-8'), data) + self.assertIn(printed_argv0.encode('utf-8'), data) def _check_import_error(self, script_name, expected_msg, *cmd_line_switches): @@ -92,7 +92,7 @@ print('Output from test script %r:' % script_name) print(data) print('Expected output: %r' % expected_msg) - self.assertTrue(expected_msg.encode('utf-8') in data) + self.assertIn(expected_msg.encode('utf-8'), data) def test_basic_script(self): with temp_dir() as script_dir: Modified: python/branches/py3k/Lib/test/test_collections.py ============================================================================== --- python/branches/py3k/Lib/test/test_collections.py (original) +++ python/branches/py3k/Lib/test/test_collections.py Tue Jan 19 01:09:57 2010 @@ -44,9 +44,9 @@ namedtuple('_', 'a b c') # Test leading underscores in a typename nt = namedtuple('nt', 'the quick brown fox') # check unicode input - self.assertTrue("u'" not in repr(nt._fields)) + self.assertNotIn("u'", repr(nt._fields)) nt = namedtuple('nt', ('the', 'quick')) # check unicode input - self.assertTrue("u'" not in repr(nt._fields)) + self.assertNotIn("u'", repr(nt._fields)) self.assertRaises(TypeError, Point._make, [11]) # catch too few args self.assertRaises(TypeError, Point._make, [11, 22, 33]) # catch too many args @@ -75,8 +75,8 @@ self.assertRaises(TypeError, eval, 'Point(XXX=1, y=2)', locals()) # wrong keyword argument self.assertRaises(TypeError, eval, 'Point(x=1)', locals()) # missing keyword argument self.assertEqual(repr(p), 'Point(x=11, y=22)') - self.assertTrue('__dict__' not in dir(p)) # verify instance has no dict - self.assertTrue('__weakref__' not in dir(p)) + self.assertNotIn('__dict__', dir(p)) # verify instance has no dict + self.assertNotIn('__weakref__', dir(p)) self.assertEqual(p, Point._make([11, 22])) # test _make classmethod self.assertEqual(p._fields, ('x', 'y')) # test _fields attribute self.assertEqual(p._replace(x=1), (1, 22)) # test _replace method @@ -598,6 +598,7 @@ c = Counter(a=10, b=-2, c=0) for elem in c: self.assertTrue(elem in c) + self.assertIn(elem, c) def test_multiset_operations(self): # Verify that adding a zero counter will strip zeros and negatives @@ -697,7 +698,7 @@ pairs = [('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)] od = OrderedDict(pairs) del od['a'] - self.assertTrue('a' not in od) + self.assertNotIn('a', od) with self.assertRaises(KeyError): del od['a'] self.assertEqual(list(od.items()), pairs[:2] + pairs[3:]) Modified: python/branches/py3k/Lib/test/test_compile.py ============================================================================== --- python/branches/py3k/Lib/test/test_compile.py (original) +++ python/branches/py3k/Lib/test/test_compile.py Tue Jan 19 01:09:57 2010 @@ -389,10 +389,10 @@ import __mangled_mod import __package__.module - self.assertTrue("_A__mangled" in A.f.__code__.co_varnames) - self.assertTrue("__not_mangled__" in A.f.__code__.co_varnames) - self.assertTrue("_A__mangled_mod" in A.f.__code__.co_varnames) - self.assertTrue("__package__" in A.f.__code__.co_varnames) + self.assertIn("_A__mangled", A.f.__code__.co_varnames) + self.assertIn("__not_mangled__", A.f.__code__.co_varnames) + self.assertIn("_A__mangled_mod", A.f.__code__.co_varnames) + self.assertIn("__package__", A.f.__code__.co_varnames) def test_compile_ast(self): fname = __file__ Modified: python/branches/py3k/Lib/test/test_contains.py ============================================================================== --- python/branches/py3k/Lib/test/test_contains.py (original) +++ python/branches/py3k/Lib/test/test_contains.py Tue Jan 19 01:09:57 2010 @@ -20,19 +20,19 @@ a = base_set(1) b = myset(1) c = seq(1) - self.assertTrue(1 in b) - self.assertTrue(0 not in b) - self.assertTrue(1 in c) - self.assertTrue(0 not in c) + self.assertIn(1, b) + self.assertNotIn(0, b) + self.assertIn(1, c) + self.assertNotIn(0, c) self.assertRaises(TypeError, lambda: 1 in a) self.assertRaises(TypeError, lambda: 1 not in a) # test char in string - self.assertTrue('c' in 'abc') - self.assertTrue('d' not in 'abc') + self.assertIn('c', 'abc') + self.assertNotIn('d', 'abc') - self.assertTrue('' in '') - self.assertTrue('' in 'abc') + self.assertIn('', '') + self.assertIn('', 'abc') self.assertRaises(TypeError, lambda: None in 'abc') @@ -40,15 +40,15 @@ # a collection of tests on builtin sequence types a = range(10) for i in a: - self.assertTrue(i in a) - self.assertTrue(16 not in a) - self.assertTrue(a not in a) + self.assertIn(i, a) + self.assertNotIn(16, a) + self.assertNotIn(a, a) a = tuple(a) for i in a: - self.assertTrue(i in a) - self.assertTrue(16 not in a) - self.assertTrue(a not in a) + self.assertIn(i, a) + self.assertNotIn(16, a) + self.assertNotIn(a, a) class Deviant1: """Behaves strangely when compared @@ -64,7 +64,7 @@ self.aList.remove(14) return 0 - self.assertTrue(Deviant1() not in Deviant1.aList) + self.assertNotIn(Deviant1(), Deviant1.aList) def test_nonreflexive(self): # containment and equality tests involving elements that are @@ -81,7 +81,7 @@ for constructor in constructors: container = constructor(values) for elem in container: - self.assertTrue(elem in container) + self.assertIn(elem, container) self.assertTrue(container == constructor(values)) self.assertTrue(container == container) Modified: python/branches/py3k/Lib/test/test_copyreg.py ============================================================================== --- python/branches/py3k/Lib/test/test_copyreg.py (original) +++ python/branches/py3k/Lib/test/test_copyreg.py Tue Jan 19 01:09:57 2010 @@ -54,7 +54,7 @@ self.assertTrue(copyreg._extension_registry[mod, func] == code) self.assertTrue(copyreg._inverted_registry[code] == (mod, func)) # Shouldn't be in the cache. - self.assertTrue(code not in copyreg._extension_cache) + self.assertNotIn(code, copyreg._extension_cache) # Redundant registration should be OK. copyreg.add_extension(mod, func, code) # shouldn't blow up # Conflicting code. @@ -81,7 +81,7 @@ e.restore() # Shouldn't be there anymore. - self.assertTrue((mod, func) not in copyreg._extension_registry) + self.assertNotIn((mod, func), copyreg._extension_registry) # The code *may* be in copyreg._extension_registry, though, if # we happened to pick on a registered code. So don't check for # that. Modified: python/branches/py3k/Lib/test/test_csv.py ============================================================================== --- python/branches/py3k/Lib/test/test_csv.py (original) +++ python/branches/py3k/Lib/test/test_csv.py Tue Jan 19 01:09:57 2010 @@ -811,7 +811,7 @@ # given that all three lines in sample3 are equal, # I think that any character could have been 'guessed' as the # delimiter, depending on dictionary order - self.assertTrue(dialect.delimiter in self.sample3) + self.assertIn(dialect.delimiter, self.sample3) dialect = sniffer.sniff(self.sample3, delimiters="?,") self.assertEqual(dialect.delimiter, "?") dialect = sniffer.sniff(self.sample3, delimiters="/,") Modified: python/branches/py3k/Lib/test/test_datetime.py ============================================================================== --- python/branches/py3k/Lib/test/test_datetime.py (original) +++ python/branches/py3k/Lib/test/test_datetime.py Tue Jan 19 01:09:57 2010 @@ -139,10 +139,10 @@ self.assertFalse(() == me) self.assertTrue(() != me) - self.assertTrue(me in [1, 20, [], me]) + self.assertIn(me, [1, 20, [], me]) self.assertFalse(me not in [1, 20, [], me]) - self.assertTrue([] in [me, 1, 20, []]) + self.assertIn([], [me, 1, 20, []]) self.assertFalse([] not in [me, 1, 20, []]) def test_harmful_mixed_comparison(self): Modified: python/branches/py3k/Lib/test/test_dbm.py ============================================================================== --- python/branches/py3k/Lib/test/test_dbm.py (original) +++ python/branches/py3k/Lib/test/test_dbm.py Tue Jan 19 01:09:57 2010 @@ -131,7 +131,7 @@ f = module.open(_fname, 'w') f[b"1"] = b"1" # and test that we can find it - self.assertTrue(b"1" in f) + self.assertIn(b"1", f) # and read it self.assertTrue(f[b"1"] == b"1") f.close() @@ -154,9 +154,9 @@ self.d[k] = v self.assertEqual(sorted(self.d.keys()), sorted(k for (k, v) in a)) for k, v in a: - self.assertTrue(k in self.d) + self.assertIn(k, self.d) self.assertEqual(self.d[k], v) - self.assertTrue(b'xxx' not in self.d) + self.assertNotIn(b'xxx', self.d) self.assertRaises(KeyError, lambda: self.d[b'xxx']) self.d.close() Modified: python/branches/py3k/Lib/test/test_dbm_dumb.py ============================================================================== --- python/branches/py3k/Lib/test/test_dbm_dumb.py (original) +++ python/branches/py3k/Lib/test/test_dbm_dumb.py Tue Jan 19 01:09:57 2010 @@ -93,7 +93,7 @@ def test_write_contains(self): f = dumbdbm.open(_fname) f[b'1'] = b'hello' - self.assertTrue(b'1' in f) + self.assertIn(b'1', f) f.close() def test_write_write_read(self): @@ -118,7 +118,7 @@ f['1'] = 'a' f.close() f = dumbdbm.open(_fname, 'r') - self.assertTrue('\u00fc' in f) + self.assertIn('\u00fc', f) self.assertEqual(f['\u00fc'.encode('utf-8')], self._dict['\u00fc'.encode('utf-8')]) self.assertEqual(f[b'1'], b'a') Modified: python/branches/py3k/Lib/test/test_dbm_gnu.py ============================================================================== --- python/branches/py3k/Lib/test/test_dbm_gnu.py (original) +++ python/branches/py3k/Lib/test/test_dbm_gnu.py Tue Jan 19 01:09:57 2010 @@ -24,11 +24,11 @@ self.g[b'bytes'] = b'data' key_set = set(self.g.keys()) self.assertEqual(key_set, set([b'a', b'bytes', b'12345678910'])) - self.assertTrue(b'a' in self.g) + self.assertIn(b'a', self.g) self.assertEqual(self.g[b'bytes'], b'data') key = self.g.firstkey() while key: - self.assertTrue(key in key_set) + self.assertIn(key, key_set) key_set.remove(key) key = self.g.nextkey(key) self.assertRaises(KeyError, lambda: self.g['xxx']) Modified: python/branches/py3k/Lib/test/test_dbm_ndbm.py ============================================================================== --- python/branches/py3k/Lib/test/test_dbm_ndbm.py (original) +++ python/branches/py3k/Lib/test/test_dbm_ndbm.py Tue Jan 19 01:09:57 2010 @@ -24,7 +24,7 @@ self.d[b'bytes'] = b'data' self.d['12345678910'] = '019237410982340912840198242' self.d.keys() - self.assertTrue(b'a' in self.d) + self.assertIn(b'a', self.d) self.assertEqual(self.d[b'bytes'], b'data') self.d.close() Modified: python/branches/py3k/Lib/test/test_decimal.py ============================================================================== --- python/branches/py3k/Lib/test/test_decimal.py (original) +++ python/branches/py3k/Lib/test/test_decimal.py Tue Jan 19 01:09:57 2010 @@ -1673,8 +1673,8 @@ self.assertEqual(v1, v2) def test_equality_with_other_types(self): - self.assertTrue(Decimal(10) in ['a', 1.0, Decimal(10), (1,2), {}]) - self.assertTrue(Decimal(10) not in ['a', 1.0, (1,2), {}]) + self.assertIn(Decimal(10), ['a', 1.0, Decimal(10), (1,2), {}]) + self.assertNotIn(Decimal(10), ['a', 1.0, (1,2), {}]) def test_copy(self): # All copies should be deep Modified: python/branches/py3k/Lib/test/test_defaultdict.py ============================================================================== --- python/branches/py3k/Lib/test/test_defaultdict.py (original) +++ python/branches/py3k/Lib/test/test_defaultdict.py Tue Jan 19 01:09:57 2010 @@ -32,14 +32,14 @@ self.assertEqual(d2["foo"], 1) self.assertEqual(d2["bar"], 2) self.assertEqual(d2[42], []) - self.assertTrue("foo" in d2) - self.assertTrue("foo" in d2.keys()) - self.assertTrue("bar" in d2) - self.assertTrue("bar" in d2.keys()) - self.assertTrue(42 in d2) - self.assertTrue(42 in d2.keys()) - self.assertTrue(12 not in d2) - self.assertTrue(12 not in d2.keys()) + self.assertIn("foo", d2) + self.assertIn("foo", d2.keys()) + self.assertIn("bar", d2) + self.assertIn("bar", d2.keys()) + self.assertIn(42, d2) + self.assertIn(42, d2.keys()) + self.assertNotIn(12, d2) + self.assertNotIn(12, d2.keys()) d2.default_factory = None self.assertEqual(d2.default_factory, None) try: Modified: python/branches/py3k/Lib/test/test_deque.py ============================================================================== --- python/branches/py3k/Lib/test/test_deque.py (original) +++ python/branches/py3k/Lib/test/test_deque.py Tue Jan 19 01:09:57 2010 @@ -199,9 +199,9 @@ self.assertEqual(len(d), n-i) j = random.randrange(-len(d), len(d)) val = d[j] - self.assertTrue(val in d) + self.assertIn(val, d) del d[j] - self.assertTrue(val not in d) + self.assertNotIn(val, d) self.assertEqual(len(d), 0) def test_reverse(self): @@ -328,7 +328,7 @@ e = eval(repr(d)) self.assertEqual(list(d), list(e)) d.append(d) - self.assertTrue('...' in repr(d)) + self.assertIn('...', repr(d)) def test_print(self): d = deque(range(200)) Modified: python/branches/py3k/Lib/test/test_descr.py ============================================================================== --- python/branches/py3k/Lib/test/test_descr.py (original) +++ python/branches/py3k/Lib/test/test_descr.py Tue Jan 19 01:09:57 2010 @@ -500,7 +500,7 @@ return 42 self.assertEqual(C.name, 'C') self.assertEqual(C.bases, ()) - self.assertTrue('spam' in C.dict) + self.assertIn('spam', C.dict) c = C() self.assertEqual(c.spam(), 42) @@ -1651,9 +1651,9 @@ # depending on whether this test is run standalone or from a framework. self.assertTrue(str(c1).find('C object at ') >= 0) self.assertEqual(str(c1), repr(c1)) - self.assertTrue(-1 not in c1) + self.assertNotIn(-1, c1) for i in range(10): - self.assertTrue(i in c1) + self.assertIn(i, c1) self.assertFalse(10 in c1) # Test the default behavior for dynamic classes class D(object): @@ -1674,9 +1674,9 @@ # depending on whether this test is run standalone or from a framework. self.assertTrue(str(d1).find('D object at ') >= 0) self.assertEqual(str(d1), repr(d1)) - self.assertTrue(-1 not in d1) + self.assertNotIn(-1, d1) for i in range(10): - self.assertTrue(i in d1) + self.assertIn(i, d1) self.assertFalse(10 in d1) # Test overridden behavior class Proxy(object): @@ -1723,7 +1723,7 @@ p10 = Proxy(range(10)) self.assertFalse(-1 in p10) for i in range(10): - self.assertTrue(i in p10) + self.assertIn(i, p10) self.assertFalse(10 in p10) def test_weakrefs(self): @@ -1784,10 +1784,10 @@ self.assertTrue(isinstance(raw, property)) attrs = dir(raw) - self.assertTrue("__doc__" in attrs) - self.assertTrue("fget" in attrs) - self.assertTrue("fset" in attrs) - self.assertTrue("fdel" in attrs) + self.assertIn("__doc__", attrs) + self.assertIn("fget", attrs) + self.assertIn("fset", attrs) + self.assertIn("fdel", attrs) self.assertEqual(raw.__doc__, "I'm the x property.") self.assertTrue(raw.fget is C.__dict__['getx']) @@ -2012,12 +2012,12 @@ c = C() self.assertEqual(interesting(dir(c)), cstuff) - ## self.assertTrue('__self__' in dir(C.Cmethod)) + ## self.assertIn('__self__', dir(C.Cmethod)) c.cdata = 2 c.cmethod = lambda self: 0 self.assertEqual(interesting(dir(c)), cstuff + ['cdata', 'cmethod']) - ## self.assertTrue('__self__' in dir(c.Cmethod)) + ## self.assertIn('__self__', dir(c.Cmethod)) class A(C): Adata = 1 @@ -2025,13 +2025,13 @@ astuff = ['Adata', 'Amethod'] + cstuff self.assertEqual(interesting(dir(A)), astuff) - ## self.assertTrue('__self__' in dir(A.Amethod)) + ## self.assertIn('__self__', dir(A.Amethod)) a = A() self.assertEqual(interesting(dir(a)), astuff) a.adata = 42 a.amethod = lambda self: 3 self.assertEqual(interesting(dir(a)), astuff + ['adata', 'amethod']) - ## self.assertTrue('__self__' in dir(a.Amethod)) + ## self.assertIn('__self__', dir(a.Amethod)) # Try a module subclass. import sys @@ -2583,7 +2583,7 @@ self.assertEqual(d[cistr('one')], 1) self.assertEqual(d[cistr('tWo')], 2) self.assertEqual(d[cistr('THrEE')], 3) - self.assertTrue(cistr('ONe') in d) + self.assertIn(cistr('ONe'), d) self.assertEqual(d.get(cistr('thrEE')), 3) def test_classic_comparisons(self): Modified: python/branches/py3k/Lib/test/test_dict.py ============================================================================== --- python/branches/py3k/Lib/test/test_dict.py (original) +++ python/branches/py3k/Lib/test/test_dict.py Tue Jan 19 01:09:57 2010 @@ -35,7 +35,9 @@ d = {'a': 1, 'b': 2} k = d.keys() self.assertTrue('a' in d) + self.assertIn('a', d) self.assertTrue('b' in d) + self.assertIn('b', d) self.assertRaises(TypeError, d.keys, None) self.assertEqual(repr(dict(a=1).keys()), "dict_keys(['a'])") @@ -60,10 +62,14 @@ d = {} self.assertTrue(not ('a' in d)) self.assertTrue('a' not in d) + self.assertNotIn('a', d) d = {'a': 1, 'b': 2} self.assertTrue('a' in d) + self.assertIn('a', d) self.assertTrue('b' in d) + self.assertIn('b', d) self.assertTrue('c' not in d) + self.assertNotIn('c', d) self.assertRaises(TypeError, d.__contains__) @@ -519,7 +525,9 @@ self.assertEqual(d[1], 2) self.assertEqual(d[3], 4) self.assertTrue(2 not in d) + self.assertNotIn(2, d) self.assertTrue(2 not in d.keys()) + self.assertNotIn(2, d.keys()) self.assertEqual(d[2], 42) class E(dict): def __missing__(self, key): Modified: python/branches/py3k/Lib/test/test_dictviews.py ============================================================================== --- python/branches/py3k/Lib/test/test_dictviews.py (original) +++ python/branches/py3k/Lib/test/test_dictviews.py Tue Jan 19 01:09:57 2010 @@ -24,10 +24,10 @@ self.assertNotEqual(keys, {1, "b"}) self.assertNotEqual(keys, {1}) self.assertNotEqual(keys, 42) - self.assertTrue(1 in keys) - self.assertTrue("a" in keys) - self.assertTrue(10 not in keys) - self.assertTrue("Z" not in keys) + self.assertIn(1, keys) + self.assertIn("a", keys) + self.assertNotIn(10, keys) + self.assertNotIn("Z", keys) self.assertEqual(d.keys(), d.keys()) e = {1: 11, "a": "def"} self.assertEqual(d.keys(), e.keys()) @@ -44,13 +44,13 @@ self.assertNotEqual(items, {(1, 10), ("a", "def")}) self.assertNotEqual(items, {(1, 10)}) self.assertNotEqual(items, 42) - self.assertTrue((1, 10) in items) - self.assertTrue(("a", "ABC") in items) - self.assertTrue((1, 11) not in items) - self.assertTrue(1 not in items) - self.assertTrue(() not in items) - self.assertTrue((1,) not in items) - self.assertTrue((1, 2, 3) not in items) + self.assertIn((1, 10), items) + self.assertIn(("a", "ABC"), items) + self.assertNotIn((1, 11), items) + self.assertNotIn(1, items) + self.assertNotIn((), items) + self.assertNotIn((1,), items) + self.assertNotIn((1, 2, 3), items) self.assertEqual(d.items(), d.items()) e = d.copy() self.assertEqual(d.items(), e.items()) Modified: python/branches/py3k/Lib/test/test_exceptions.py ============================================================================== --- python/branches/py3k/Lib/test/test_exceptions.py (original) +++ python/branches/py3k/Lib/test/test_exceptions.py Tue Jan 19 01:09:57 2010 @@ -337,7 +337,7 @@ try: Exception().__traceback__ = 5 except TypeError as e: - self.assertTrue("__traceback__ must be a traceback" in str(e)) + self.assertIn("__traceback__ must be a traceback", str(e)) else: self.fail("No exception raised") @@ -597,7 +597,7 @@ return sys.exc_info() e, v, tb = g() self.assertTrue(isinstance(v, RuntimeError), type(v)) - self.assertTrue("maximum recursion depth exceeded" in str(v), str(v)) + self.assertIn("maximum recursion depth exceeded", str(v)) def test_MemoryError(self): Modified: python/branches/py3k/Lib/test/test_float.py ============================================================================== --- python/branches/py3k/Lib/test/test_float.py (original) +++ python/branches/py3k/Lib/test/test_float.py Tue Jan 19 01:09:57 2010 @@ -213,11 +213,16 @@ def test_float_containment(self): floats = (INF, -INF, 0.0, 1.0, NAN) for f in floats: + self.assertIn(f, [f]) self.assertTrue(f in [f], "'%r' not in []" % f) + self.assertIn(f, (f,)) self.assertTrue(f in (f,), "'%r' not in ()" % f) + self.assertIn(f, {f}) self.assertTrue(f in {f}, "'%r' not in set()" % f) + self.assertIn(f, {f: None}) self.assertTrue(f in {f: None}, "'%r' not in {}" % f) self.assertEqual([f].count(f), 1, "[].count('%r') != 1" % f) + self.assertIn(f, floats) self.assertTrue(f in floats, "'%r' not in container" % f) for f in floats: Modified: python/branches/py3k/Lib/test/test_funcattrs.py ============================================================================== --- python/branches/py3k/Lib/test/test_funcattrs.py (original) +++ python/branches/py3k/Lib/test/test_funcattrs.py Tue Jan 19 01:09:57 2010 @@ -35,11 +35,11 @@ def test_dir_includes_correct_attrs(self): self.b.known_attr = 7 - self.assertTrue('known_attr' in dir(self.b), + self.assertIn('known_attr', dir(self.b), "set attributes not in dir listing of method") # Test on underlying function object of method self.F.a.known_attr = 7 - self.assertTrue('known_attr' in dir(self.fi.a), "set attribute on function " + self.assertIn('known_attr', dir(self.fi.a), "set attribute on function " "implementations, should show up in next dir") def test_duplicate_function_equality(self): Modified: python/branches/py3k/Lib/test/test_glob.py ============================================================================== --- python/branches/py3k/Lib/test/test_glob.py (original) +++ python/branches/py3k/Lib/test/test_glob.py Tue Jan 19 01:09:57 2010 @@ -96,7 +96,7 @@ res = glob.glob(self.tempdir + '*' + os.sep) self.assertEqual(len(res), 1) # either of these results are reasonable - self.assertTrue(res[0] in [self.tempdir, self.tempdir + os.sep]) + self.assertIn(res[0], [self.tempdir, self.tempdir + os.sep]) def test_glob_broken_symlinks(self): if hasattr(os, 'symlink'): Modified: python/branches/py3k/Lib/test/test_http_cookiejar.py ============================================================================== --- python/branches/py3k/Lib/test/test_http_cookiejar.py (original) +++ python/branches/py3k/Lib/test/test_http_cookiejar.py Tue Jan 19 01:09:57 2010 @@ -441,8 +441,8 @@ interact_netscape(c, "http://www.acme.com/", 'version=eggs; spam=eggs') cookies = c._cookies["www.acme.com"]["/"] - self.assertTrue('expires' in cookies) - self.assertTrue('version' in cookies) + self.assertIn('expires', cookies) + self.assertIn('version', cookies) def test_expires(self): # if expires is in future, keep cookie... @@ -457,7 +457,8 @@ now) h = interact_netscape(c, "http://www.acme.com/") self.assertEquals(len(c), 1) - self.assertTrue('spam="bar"' in h and "foo" not in h) + self.assertIn('spam="bar"', h) + self.assertNotIn("foo", h) # max-age takes precedence over expires, and zero max-age is request to # delete both new cookie and any old matching cookie @@ -478,7 +479,7 @@ self.assertEquals(len(c), 2) c.clear_session_cookies() self.assertEquals(len(c), 1) - self.assertTrue('spam="bar"' in h) + self.assertIn('spam="bar"', h) # XXX RFC 2965 expiry rules (some apply to V0 too) @@ -488,39 +489,39 @@ c = CookieJar(pol) interact_2965(c, "http://www.acme.com/", 'spam="bar"; Version="1"') - self.assertTrue("/" in c._cookies["www.acme.com"]) + self.assertIn("/", c._cookies["www.acme.com"]) c = CookieJar(pol) interact_2965(c, "http://www.acme.com/blah", 'eggs="bar"; Version="1"') - self.assertTrue("/" in c._cookies["www.acme.com"]) + self.assertIn("/", c._cookies["www.acme.com"]) c = CookieJar(pol) interact_2965(c, "http://www.acme.com/blah/rhubarb", 'eggs="bar"; Version="1"') - self.assertTrue("/blah/" in c._cookies["www.acme.com"]) + self.assertIn("/blah/", c._cookies["www.acme.com"]) c = CookieJar(pol) interact_2965(c, "http://www.acme.com/blah/rhubarb/", 'eggs="bar"; Version="1"') - self.assertTrue("/blah/rhubarb/" in c._cookies["www.acme.com"]) + self.assertIn("/blah/rhubarb/", c._cookies["www.acme.com"]) # Netscape c = CookieJar() interact_netscape(c, "http://www.acme.com/", 'spam="bar"') - self.assertTrue("/" in c._cookies["www.acme.com"]) + self.assertIn("/", c._cookies["www.acme.com"]) c = CookieJar() interact_netscape(c, "http://www.acme.com/blah", 'eggs="bar"') - self.assertTrue("/" in c._cookies["www.acme.com"]) + self.assertIn("/", c._cookies["www.acme.com"]) c = CookieJar() interact_netscape(c, "http://www.acme.com/blah/rhubarb", 'eggs="bar"') - self.assertTrue("/blah" in c._cookies["www.acme.com"]) + self.assertIn("/blah", c._cookies["www.acme.com"]) c = CookieJar() interact_netscape(c, "http://www.acme.com/blah/rhubarb/", 'eggs="bar"') - self.assertTrue("/blah/rhubarb" in c._cookies["www.acme.com"]) + self.assertIn("/blah/rhubarb", c._cookies["www.acme.com"]) def test_escape_path(self): cases = [ @@ -877,21 +878,21 @@ url = "http://foo.bar.com/" interact_2965(c, url, "spam=eggs; Version=1") h = interact_2965(c, url) - self.assertTrue("Domain" not in h, + self.assertNotIn("Domain", h, "absent domain returned with domain present") c = CookieJar(pol) url = "http://foo.bar.com/" interact_2965(c, url, 'spam=eggs; Version=1; Domain=.bar.com') h = interact_2965(c, url) - self.assertTrue('$Domain=".bar.com"' in h, "domain not returned") + self.assertIn('$Domain=".bar.com"', h, "domain not returned") c = CookieJar(pol) url = "http://foo.bar.com/" # note missing initial dot in Domain interact_2965(c, url, 'spam=eggs; Version=1; Domain=bar.com') h = interact_2965(c, url) - self.assertTrue('$Domain="bar.com"' in h, "domain not returned") + self.assertIn('$Domain="bar.com"', h, "domain not returned") def test_path_mirror(self): pol = DefaultCookiePolicy(rfc2965=True) @@ -907,7 +908,7 @@ url = "http://foo.bar.com/" interact_2965(c, url, 'spam=eggs; Version=1; Path=/') h = interact_2965(c, url) - self.assertTrue('$Path="/"' in h, "path not returned") + self.assertIn('$Path="/"', h, "path not returned") def test_port_mirror(self): pol = DefaultCookiePolicy(rfc2965=True) @@ -1449,7 +1450,8 @@ c, "http://www.acme.com/foo%2f%25/<<%0anew\345/\346\370\345", 'bar=baz; path="/foo/"; version=1'); version_re = re.compile(r'^\$version=\"?1\"?', re.I) - self.assertTrue("foo=bar" in cookie and version_re.search(cookie)) + self.assertIn("foo=bar", cookie) + self.assertTrue(version_re.search(cookie)) cookie = interact_2965( c, "http://www.acme.com/foo/%25/<<%0anew\345/\346\370\345") @@ -1493,11 +1495,11 @@ new_c = save_and_restore(c, True) self.assertEquals(len(new_c), 6) # none discarded - self.assertTrue("name='foo1', value='bar'" in repr(new_c)) + self.assertIn("name='foo1', value='bar'", repr(new_c)) new_c = save_and_restore(c, False) self.assertEquals(len(new_c), 4) # 2 of them discarded on save - self.assertTrue("name='foo1', value='bar'" in repr(new_c)) + self.assertIn("name='foo1', value='bar'", repr(new_c)) def test_netscape_misc(self): # Some additional Netscape cookies tests. @@ -1519,9 +1521,8 @@ req = urllib.request.Request("http://foo.bar.acme.com/foo") c.add_cookie_header(req) - self.assertTrue( - "PART_NUMBER=3,4" in req.get_header("Cookie") and - "Customer=WILE_E_COYOTE" in req.get_header("Cookie")) + self.assertIn("PART_NUMBER=3,4", req.get_header("Cookie")) + self.assertIn("Customer=WILE_E_COYOTE",req.get_header("Cookie")) def test_intranet_domains_2965(self): # Test handling of local intranet hostnames without a dot. @@ -1530,11 +1531,12 @@ "foo1=bar; PORT; Discard; Version=1;") cookie = interact_2965(c, "http://example/", 'foo2=bar; domain=".local"; Version=1') - self.assertTrue("foo1=bar" in cookie) + self.assertIn("foo1=bar", cookie) interact_2965(c, "http://example/", 'foo3=bar; Version=1') cookie = interact_2965(c, "http://example/") - self.assertTrue("foo2=bar" in cookie and len(c) == 3) + self.assertIn("foo2=bar", cookie) + self.assertEquals(len(c), 3) def test_intranet_domains_ns(self): c = CookieJar(DefaultCookiePolicy(rfc2965 = False)) @@ -1542,10 +1544,10 @@ cookie = interact_netscape(c, "http://example/", 'foo2=bar; domain=.local') self.assertEquals(len(c), 2) - self.assertTrue("foo1=bar" in cookie) + self.assertIn("foo1=bar", cookie) cookie = interact_netscape(c, "http://example/") - self.assertTrue("foo2=bar" in cookie) + self.assertIn("foo2=bar", cookie) self.assertEquals(len(c), 2) def test_empty_path(self): Modified: python/branches/py3k/Lib/test/test_import.py ============================================================================== --- python/branches/py3k/Lib/test/test_import.py (original) +++ python/branches/py3k/Lib/test/test_import.py Tue Jan 19 01:09:57 2010 @@ -209,7 +209,7 @@ sys.path.insert(0, os.curdir) try: mod = __import__(TESTFN) - self.assertTrue(TESTFN in sys.modules, "expected module in sys.modules") + self.assertIn(TESTFN, sys.modules) self.assertEquals(mod.a, 1, "module has wrong attribute values") self.assertEquals(mod.b, 2, "module has wrong attribute values") @@ -253,7 +253,7 @@ del sys.modules[TESTFN] mod = __import__(TESTFN) ext = mod.__file__[-4:] - self.assertTrue(ext in ('.pyc', '.pyo'), ext) + self.assertIn(ext, ('.pyc', '.pyo')) finally: sys.path.pop(0) remove_files(TESTFN) Modified: python/branches/py3k/Lib/test/test_inspect.py ============================================================================== --- python/branches/py3k/Lib/test/test_inspect.py (original) +++ python/branches/py3k/Lib/test/test_inspect.py Tue Jan 19 01:09:57 2010 @@ -117,8 +117,8 @@ x = C() x.a = 42 members = dict(inspect.getmembers(x)) - self.assertTrue('a' in members) - self.assertTrue('b' not in members) + self.assertIn('a', members) + self.assertNotIn('b', members) def test_isabstract(self): from abc import ABCMeta, abstractmethod @@ -471,25 +471,25 @@ datablob = '1' attrs = attrs_wo_objs(A) - self.assertTrue(('s', 'static method', A) in attrs, 'missing static method') - self.assertTrue(('c', 'class method', A) in attrs, 'missing class method') - self.assertTrue(('p', 'property', A) in attrs, 'missing property') + self.assertIn(('s', 'static method', A), attrs, 'missing static method') + self.assertIn(('c', 'class method', A), attrs, 'missing class method') + self.assertIn(('p', 'property', A), attrs, 'missing property') self.assertTrue(('m', 'method', A) in attrs, 'missing plain method: %r' % attrs) - self.assertTrue(('m1', 'method', A) in attrs, 'missing plain method') - self.assertTrue(('datablob', 'data', A) in attrs, 'missing data') + self.assertIn(('m1', 'method', A), attrs, 'missing plain method') + self.assertIn(('datablob', 'data', A), attrs, 'missing data') class B(A): def m(self): pass attrs = attrs_wo_objs(B) - self.assertTrue(('s', 'static method', A) in attrs, 'missing static method') - self.assertTrue(('c', 'class method', A) in attrs, 'missing class method') - self.assertTrue(('p', 'property', A) in attrs, 'missing property') - self.assertTrue(('m', 'method', B) in attrs, 'missing plain method') - self.assertTrue(('m1', 'method', A) in attrs, 'missing plain method') - self.assertTrue(('datablob', 'data', A) in attrs, 'missing data') + self.assertIn(('s', 'static method', A), attrs, 'missing static method') + self.assertIn(('c', 'class method', A), attrs, 'missing class method') + self.assertIn(('p', 'property', A), attrs, 'missing property') + self.assertIn(('m', 'method', B), attrs, 'missing plain method') + self.assertIn(('m1', 'method', A), attrs, 'missing plain method') + self.assertIn(('datablob', 'data', A), attrs, 'missing data') class C(A): @@ -498,24 +498,24 @@ def c(self): pass attrs = attrs_wo_objs(C) - self.assertTrue(('s', 'static method', A) in attrs, 'missing static method') - self.assertTrue(('c', 'method', C) in attrs, 'missing plain method') - self.assertTrue(('p', 'property', A) in attrs, 'missing property') - self.assertTrue(('m', 'method', C) in attrs, 'missing plain method') - self.assertTrue(('m1', 'method', A) in attrs, 'missing plain method') - self.assertTrue(('datablob', 'data', A) in attrs, 'missing data') + self.assertIn(('s', 'static method', A), attrs, 'missing static method') + self.assertIn(('c', 'method', C), attrs, 'missing plain method') + self.assertIn(('p', 'property', A), attrs, 'missing property') + self.assertIn(('m', 'method', C), attrs, 'missing plain method') + self.assertIn(('m1', 'method', A), attrs, 'missing plain method') + self.assertIn(('datablob', 'data', A), attrs, 'missing data') class D(B, C): def m1(self): pass attrs = attrs_wo_objs(D) - self.assertTrue(('s', 'static method', A) in attrs, 'missing static method') - self.assertTrue(('c', 'method', C) in attrs, 'missing plain method') - self.assertTrue(('p', 'property', A) in attrs, 'missing property') - self.assertTrue(('m', 'method', B) in attrs, 'missing plain method') - self.assertTrue(('m1', 'method', D) in attrs, 'missing plain method') - self.assertTrue(('datablob', 'data', A) in attrs, 'missing data') + self.assertIn(('s', 'static method', A), attrs, 'missing static method') + self.assertIn(('c', 'method', C), attrs, 'missing plain method') + self.assertIn(('p', 'property', A), attrs, 'missing property') + self.assertIn(('m', 'method', B), attrs, 'missing plain method') + self.assertIn(('m1', 'method', D), attrs, 'missing plain method') + self.assertIn(('datablob', 'data', A), attrs, 'missing data') def test_main(): run_unittest(TestDecorators, TestRetrievingSourceCode, TestOneliners, Modified: python/branches/py3k/Lib/test/test_ioctl.py ============================================================================== --- python/branches/py3k/Lib/test/test_ioctl.py (original) +++ python/branches/py3k/Lib/test/test_ioctl.py Tue Jan 19 01:09:57 2010 @@ -24,7 +24,7 @@ tty = open("/dev/tty", "r") r = fcntl.ioctl(tty, termios.TIOCGPGRP, " ") rpgrp = struct.unpack("i", r)[0] - self.assertTrue(rpgrp in ids, "%s not in %s" % (rpgrp, ids)) + self.assertIn(rpgrp, ids) def test_ioctl_mutate(self): import array @@ -34,7 +34,7 @@ r = fcntl.ioctl(tty, termios.TIOCGPGRP, buf, 1) rpgrp = buf[0] self.assertEquals(r, 0) - self.assertTrue(rpgrp in ids, "%s not in %s" % (rpgrp, ids)) + self.assertIn(rpgrp, ids) def test_ioctl_signed_unsigned_code_param(self): if not pty: Modified: python/branches/py3k/Lib/test/test_iter.py ============================================================================== --- python/branches/py3k/Lib/test/test_iter.py (original) +++ python/branches/py3k/Lib/test/test_iter.py Tue Jan 19 01:09:57 2010 @@ -542,23 +542,23 @@ def test_in_and_not_in(self): for sc5 in IteratingSequenceClass(5), SequenceClass(5): for i in range(5): - self.assertTrue(i in sc5) + self.assertIn(i, sc5) for i in "abc", -1, 5, 42.42, (3, 4), [], {1: 1}, 3-12j, sc5: - self.assertTrue(i not in sc5) + self.assertNotIn(i, sc5) self.assertRaises(TypeError, lambda: 3 in 12) self.assertRaises(TypeError, lambda: 3 not in map) d = {"one": 1, "two": 2, "three": 3, 1j: 2j} for k in d: - self.assertTrue(k in d) - self.assertTrue(k not in d.values()) + self.assertIn(k, d) + self.assertNotIn(k, d.values()) for v in d.values(): - self.assertTrue(v in d.values()) - self.assertTrue(v not in d) + self.assertIn(v, d.values()) + self.assertNotIn(v, d) for k, v in d.items(): - self.assertTrue((k, v) in d.items()) - self.assertTrue((v, k) not in d.items()) + self.assertIn((k, v), d.items()) + self.assertNotIn((v, k), d.items()) f = open(TESTFN, "w") try: @@ -569,9 +569,9 @@ try: for chunk in "abc": f.seek(0, 0) - self.assertTrue(chunk not in f) + self.assertNotIn(chunk, f) f.seek(0, 0) - self.assertTrue((chunk + "\n") in f) + self.assertIn((chunk + "\n"), f) finally: f.close() try: Modified: python/branches/py3k/Lib/test/test_mmap.py ============================================================================== --- python/branches/py3k/Lib/test/test_mmap.py (original) +++ python/branches/py3k/Lib/test/test_mmap.py Tue Jan 19 01:09:57 2010 @@ -502,7 +502,7 @@ def test_error(self): self.assertTrue(issubclass(mmap.error, EnvironmentError)) - self.assertTrue("mmap.error" in str(mmap.error)) + self.assertIn("mmap.error", str(mmap.error)) def test_io_methods(self): data = b"0123456789" Modified: python/branches/py3k/Lib/test/test_multiprocessing.py ============================================================================== --- python/branches/py3k/Lib/test/test_multiprocessing.py (original) +++ python/branches/py3k/Lib/test/test_multiprocessing.py Tue Jan 19 01:09:57 2010 @@ -163,7 +163,7 @@ self.assertEquals(p.authkey, current.authkey) self.assertEquals(p.is_alive(), False) self.assertEquals(p.daemon, True) - self.assertTrue(p not in self.active_children()) + self.assertNotIn(p, self.active_children()) self.assertTrue(type(self.active_children()) is list) self.assertEqual(p.exitcode, None) @@ -171,7 +171,7 @@ self.assertEquals(p.exitcode, None) self.assertEquals(p.is_alive(), True) - self.assertTrue(p in self.active_children()) + self.assertIn(p, self.active_children()) self.assertEquals(q.get(), args[1:]) self.assertEquals(q.get(), kwargs) @@ -184,7 +184,7 @@ self.assertEquals(p.exitcode, 0) self.assertEquals(p.is_alive(), False) - self.assertTrue(p not in self.active_children()) + self.assertNotIn(p, self.active_children()) def _test_terminate(self): time.sleep(1000) @@ -198,7 +198,7 @@ p.start() self.assertEqual(p.is_alive(), True) - self.assertTrue(p in self.active_children()) + self.assertIn(p, self.active_children()) self.assertEqual(p.exitcode, None) p.terminate() @@ -208,7 +208,7 @@ self.assertTimingAlmostEqual(join.elapsed, 0.0) self.assertEqual(p.is_alive(), False) - self.assertTrue(p not in self.active_children()) + self.assertNotIn(p, self.active_children()) p.join() @@ -227,13 +227,13 @@ self.assertEqual(type(self.active_children()), list) p = self.Process(target=time.sleep, args=(DELTA,)) - self.assertTrue(p not in self.active_children()) + self.assertNotIn(p, self.active_children()) p.start() - self.assertTrue(p in self.active_children()) + self.assertIn(p, self.active_children()) p.join() - self.assertTrue(p not in self.active_children()) + self.assertNotIn(p, self.active_children()) def _test_recursion(self, wconn, id): from multiprocessing import forking Modified: python/branches/py3k/Lib/test/test_os.py ============================================================================== --- python/branches/py3k/Lib/test/test_os.py (original) +++ python/branches/py3k/Lib/test/test_os.py Tue Jan 19 01:09:57 2010 @@ -228,7 +228,7 @@ def trunc(x): return x self.assertEquals(trunc(getattr(result, attr)), result[getattr(stat, name)]) - self.assertTrue(attr in members) + self.assertIn(attr, members) try: result[200] Modified: python/branches/py3k/Lib/test/test_peepholer.py ============================================================================== --- python/branches/py3k/Lib/test/test_peepholer.py (original) +++ python/branches/py3k/Lib/test/test_peepholer.py Tue Jan 19 01:09:57 2010 @@ -26,9 +26,9 @@ del x asm = disassemble(unot) for elem in ('UNARY_NOT', 'POP_JUMP_IF_FALSE'): - self.assertTrue(elem not in asm) + self.assertNotIn(elem, asm) for elem in ('POP_JUMP_IF_TRUE',): - self.assertTrue(elem in asm) + self.assertIn(elem, asm) def test_elim_inversion_of_is_or_in(self): for line, elem in ( @@ -38,7 +38,7 @@ ('not a not in b', '(in)',), ): asm = dis_single(line) - self.assertTrue(elem in asm) + self.assertIn(elem, asm) def test_global_as_constant(self): # LOAD_GLOBAL None/True/False --> LOAD_CONST None/True/False @@ -55,14 +55,14 @@ for func, name in ((f, 'None'), (g, 'True'), (h, 'False')): asm = disassemble(func) for elem in ('LOAD_GLOBAL',): - self.assertTrue(elem not in asm) + self.assertNotIn(elem, asm) for elem in ('LOAD_CONST', '('+name+')'): - self.assertTrue(elem in asm) + self.assertIn(elem, asm) def f(): 'Adding a docstring made this test fail in Py2.5.0' return None - self.assertTrue('LOAD_CONST' in disassemble(f)) - self.assertTrue('LOAD_GLOBAL' not in disassemble(f)) + self.assertIn('LOAD_CONST', disassemble(f)) + self.assertNotIn('LOAD_GLOBAL', disassemble(f)) def test_while_one(self): # Skip over: LOAD_CONST trueconst POP_JUMP_IF_FALSE xx @@ -72,9 +72,9 @@ return list asm = disassemble(f) for elem in ('LOAD_CONST', 'POP_JUMP_IF_FALSE'): - self.assertTrue(elem not in asm) + self.assertNotIn(elem, asm) for elem in ('JUMP_ABSOLUTE',): - self.assertTrue(elem in asm) + self.assertIn(elem, asm) def test_pack_unpack(self): for line, elem in ( @@ -83,9 +83,9 @@ ('a, b, c = a, b, c', 'ROT_THREE',), ): asm = dis_single(line) - self.assertTrue(elem in asm) - self.assertTrue('BUILD_TUPLE' not in asm) - self.assertTrue('UNPACK_TUPLE' not in asm) + self.assertIn(elem, asm) + self.assertNotIn('BUILD_TUPLE', asm) + self.assertNotIn('UNPACK_TUPLE', asm) def test_folding_of_tuples_of_constants(self): for line, elem in ( @@ -96,8 +96,8 @@ ('((1, 2), 3, 4)', '(((1, 2), 3, 4))'), ): asm = dis_single(line) - self.assertTrue(elem in asm) - self.assertTrue('BUILD_TUPLE' not in asm) + self.assertIn(elem, asm) + self.assertNotIn('BUILD_TUPLE', asm) # Bug 1053819: Tuple of constants misidentified when presented with: # . . . opcode_with_arg 100 unary_opcode BUILD_TUPLE 1 . . . @@ -183,17 +183,17 @@ ('a = 13 | 7', '(15)'), # binary or ): asm = dis_single(line) - self.assertTrue(elem in asm, asm) - self.assertTrue('BINARY_' not in asm) + self.assertIn(elem, asm, asm) + self.assertNotIn('BINARY_', asm) # Verify that unfoldables are skipped asm = dis_single('a=2+"b"') - self.assertTrue('(2)' in asm) - self.assertTrue("('b')" in asm) + self.assertIn('(2)', asm) + self.assertIn("('b')", asm) # Verify that large sequences do not result from folding asm = dis_single('a="x"*1000') - self.assertTrue('(1000)' in asm) + self.assertIn('(1000)', asm) def test_folding_of_unaryops_on_constants(self): for line, elem in ( @@ -202,8 +202,8 @@ ('+1', '(1)'), # unary positive ): asm = dis_single(line) - self.assertTrue(elem in asm, asm) - self.assertTrue('UNARY_' not in asm) + self.assertIn(elem, asm, asm) + self.assertNotIn('UNARY_', asm) # Verify that unfoldables are skipped for line, elem in ( @@ -211,16 +211,16 @@ ('~"abc"', "('abc')"), # unary invert ): asm = dis_single(line) - self.assertTrue(elem in asm, asm) - self.assertTrue('UNARY_' in asm) + self.assertIn(elem, asm, asm) + self.assertIn('UNARY_', asm) def test_elim_extra_return(self): # RETURN LOAD_CONST None RETURN --> RETURN def f(x): return x asm = disassemble(f) - self.assertTrue('LOAD_CONST' not in asm) - self.assertTrue('(None)' not in asm) + self.assertNotIn('LOAD_CONST', asm) + self.assertNotIn('(None)', asm) self.assertEqual(asm.split().count('RETURN_VALUE'), 1) def test_elim_jump_to_return(self): @@ -228,8 +228,8 @@ def f(cond, true_value, false_value): return true_value if cond else false_value asm = disassemble(f) - self.assertTrue('JUMP_FORWARD' not in asm) - self.assertTrue('JUMP_ABSOLUTE' not in asm) + self.assertNotIn('JUMP_FORWARD', asm) + self.assertNotIn('JUMP_ABSOLUTE', asm) self.assertEqual(asm.split().count('RETURN_VALUE'), 2) def test_elim_jump_after_return1(self): @@ -244,8 +244,8 @@ return 5 return 6 asm = disassemble(f) - self.assertTrue('JUMP_FORWARD' not in asm) - self.assertTrue('JUMP_ABSOLUTE' not in asm) + self.assertNotIn('JUMP_FORWARD', asm) + self.assertNotIn('JUMP_ABSOLUTE', asm) self.assertEqual(asm.split().count('RETURN_VALUE'), 6) def test_elim_jump_after_return2(self): @@ -254,7 +254,7 @@ while 1: if cond1: return 4 asm = disassemble(f) - self.assertTrue('JUMP_FORWARD' not in asm) + self.assertNotIn('JUMP_FORWARD', asm) # There should be one jump for the while loop. self.assertEqual(asm.split().count('JUMP_ABSOLUTE'), 1) self.assertEqual(asm.split().count('RETURN_VALUE'), 2) @@ -265,7 +265,7 @@ pass return g asm = disassemble(f) - self.assertTrue('BINARY_ADD' not in asm) + self.assertNotIn('BINARY_ADD', asm) def test_main(verbose=None): Modified: python/branches/py3k/Lib/test/test_pep352.py ============================================================================== --- python/branches/py3k/Lib/test/test_pep352.py (original) +++ python/branches/py3k/Lib/test/test_pep352.py Tue Jan 19 01:09:57 2010 @@ -73,7 +73,7 @@ self.verify_instance_interface(exc()) except TypeError: pass - self.assertTrue(exc_name in exc_set) + self.assertIn(exc_name, exc_set) exc_set.discard(exc_name) last_exc = exc last_depth = depth Modified: python/branches/py3k/Lib/test/test_poplib.py ============================================================================== --- python/branches/py3k/Lib/test/test_poplib.py (original) +++ python/branches/py3k/Lib/test/test_poplib.py Tue Jan 19 01:09:57 2010 @@ -258,7 +258,7 @@ self.client = poplib.POP3_SSL(self.server.host, self.server.port) def test__all__(self): - self.assertTrue('POP3_SSL' in poplib.__all__) + self.assertIn('POP3_SSL', poplib.__all__) class TestTimeouts(TestCase): Modified: python/branches/py3k/Lib/test/test_posix.py ============================================================================== --- python/branches/py3k/Lib/test/test_posix.py (original) +++ python/branches/py3k/Lib/test/test_posix.py Tue Jan 19 01:09:57 2010 @@ -251,7 +251,7 @@ def test_lsdir(self): if hasattr(posix, 'lsdir'): - self.assertTrue(support.TESTFN in posix.lsdir(os.curdir)) + self.assertIn(support.TESTFN, posix.lsdir(os.curdir)) def test_access(self): if hasattr(posix, 'access'): Modified: python/branches/py3k/Lib/test/test_posixpath.py ============================================================================== --- python/branches/py3k/Lib/test/test_posixpath.py (original) +++ python/branches/py3k/Lib/test/test_posixpath.py Tue Jan 19 01:09:57 2010 @@ -481,14 +481,14 @@ self.assertRaises(TypeError, posixpath.normpath) def test_abspath(self): - self.assertTrue("foo" in posixpath.abspath("foo")) - self.assertTrue(b"foo" in posixpath.abspath(b"foo")) + self.assertIn("foo", posixpath.abspath("foo")) + self.assertIn(b"foo", posixpath.abspath(b"foo")) self.assertRaises(TypeError, posixpath.abspath) def test_realpath(self): - self.assertTrue("foo" in realpath("foo")) - self.assertTrue(b"foo" in realpath(b"foo")) + self.assertIn("foo", realpath("foo")) + self.assertIn(b"foo", realpath(b"foo")) self.assertRaises(TypeError, posixpath.realpath) if hasattr(os, "symlink"): Modified: python/branches/py3k/Lib/test/test_pwd.py ============================================================================== --- python/branches/py3k/Lib/test/test_pwd.py (original) +++ python/branches/py3k/Lib/test/test_pwd.py Tue Jan 19 01:09:57 2010 @@ -43,8 +43,8 @@ for e in entries: if not e[0] or e[0] == '+': continue # skip NIS entries etc. - self.assertTrue(pwd.getpwnam(e.pw_name) in entriesbyname[e.pw_name]) - self.assertTrue(pwd.getpwuid(e.pw_uid) in entriesbyuid[e.pw_uid]) + self.assertIn(pwd.getpwnam(e.pw_name), entriesbyname[e.pw_name]) + self.assertIn(pwd.getpwuid(e.pw_uid), entriesbyuid[e.pw_uid]) def test_errors(self): self.assertRaises(TypeError, pwd.getpwuid) Modified: python/branches/py3k/Lib/test/test_pyclbr.py ============================================================================== --- python/branches/py3k/Lib/test/test_pyclbr.py (original) +++ python/branches/py3k/Lib/test/test_pyclbr.py Tue Jan 19 01:09:57 2010 @@ -40,6 +40,7 @@ if key in ignore: return if key not in obj: print("***",key, file=sys.stderr) + self.assertIn(key, obj) self.assertTrue(key in obj, "%r in %r" % (key, obj)) def assertEqualsOrIgnored(self, a, b, ignore): Modified: python/branches/py3k/Lib/test/test_pydoc.py ============================================================================== --- python/branches/py3k/Lib/test/test_pydoc.py (original) +++ python/branches/py3k/Lib/test/test_pydoc.py Tue Jan 19 01:09:57 2010 @@ -313,7 +313,7 @@ # Check that pydocfodder module can be described from test import pydocfodder doc = pydoc.render_doc(pydocfodder) - self.assertTrue("pydocfodder" in doc) + self.assertIn("pydocfodder", doc) def test_classic_class(self): class C: "Classic class" @@ -321,7 +321,7 @@ self.assertEqual(pydoc.describe(C), 'class C') self.assertEqual(pydoc.describe(c), 'C') expected = 'C in module %s' % __name__ - self.assertTrue(expected in pydoc.render_doc(c)) + self.assertIn(expected, pydoc.render_doc(c)) def test_class(self): class C(object): "New-style class" @@ -330,7 +330,7 @@ self.assertEqual(pydoc.describe(C), 'class C') self.assertEqual(pydoc.describe(c), 'C') expected = 'C in module %s object' % __name__ - self.assertTrue(expected in pydoc.render_doc(c)) + self.assertIn(expected, pydoc.render_doc(c)) def test_main(): Modified: python/branches/py3k/Lib/test/test_raise.py ============================================================================== --- python/branches/py3k/Lib/test/test_raise.py (original) +++ python/branches/py3k/Lib/test/test_raise.py Tue Jan 19 01:09:57 2010 @@ -28,7 +28,7 @@ try: raise except RuntimeError as e: - self.assertTrue("No active exception" in str(e)) + self.assertIn("No active exception", str(e)) else: self.fail("No exception raised") @@ -127,7 +127,7 @@ try: raise IndexError from 5 except TypeError as e: - self.assertTrue("exception cause" in str(e)) + self.assertIn("exception cause", str(e)) else: self.fail("No exception raised") Modified: python/branches/py3k/Lib/test/test_random.py ============================================================================== --- python/branches/py3k/Lib/test/test_random.py (original) +++ python/branches/py3k/Lib/test/test_random.py Tue Jan 19 01:09:57 2010 @@ -211,7 +211,7 @@ n += n - 1 # check 1 below the next power of two k = int(1.00001 + _log(n, 2)) - self.assertTrue(k in [numbits, numbits+1]) + self.assertIn(k, [numbits, numbits+1]) self.assertTrue(2**k > n > 2**(k-2)) n -= n >> 15 # check a little farther below the next power of two @@ -367,7 +367,7 @@ n += n - 1 # check 1 below the next power of two k = int(1.00001 + _log(n, 2)) - self.assertTrue(k in [numbits, numbits+1]) + self.assertIn(k, [numbits, numbits+1]) self.assertTrue(2**k > n > 2**(k-2)) n -= n >> 15 # check a little farther below the next power of two Modified: python/branches/py3k/Lib/test/test_range.py ============================================================================== --- python/branches/py3k/Lib/test/test_range.py (original) +++ python/branches/py3k/Lib/test/test_range.py Tue Jan 19 01:09:57 2010 @@ -59,18 +59,18 @@ self.assertEqual(list(range(a+4, a, -2)), [a+4, a+2]) seq = list(range(a, b, c)) - self.assertTrue(a in seq) - self.assertTrue(b not in seq) + self.assertIn(a, seq) + self.assertNotIn(b, seq) self.assertEqual(len(seq), 2) seq = list(range(b, a, -c)) - self.assertTrue(b in seq) - self.assertTrue(a not in seq) + self.assertIn(b, seq) + self.assertNotIn(a, seq) self.assertEqual(len(seq), 2) seq = list(range(-a, -b, -c)) - self.assertTrue(-a in seq) - self.assertTrue(-b not in seq) + self.assertIn(-a, seq) + self.assertNotIn(-b, seq) self.assertEqual(len(seq), 2) self.assertRaises(TypeError, range) @@ -114,13 +114,13 @@ def test_types(self): # Non-integer objects *equal* to any of the range's items are supposed # to be contained in the range. - self.assertTrue(1.0 in range(3)) - self.assertTrue(True in range(3)) - self.assertTrue(1+0j in range(3)) + self.assertIn(1.0, range(3)) + self.assertIn(True, range(3)) + self.assertIn(1+0j, range(3)) class C1: def __eq__(self, other): return True - self.assertTrue(C1() in range(3)) + self.assertIn(C1(), range(3)) # Objects are never coerced into other types for comparison. class C2: @@ -128,32 +128,32 @@ def __index__(self): return 1 self.assertFalse(C2() in range(3)) # ..except if explicitly told so. - self.assertTrue(int(C2()) in range(3)) + self.assertIn(int(C2()), range(3)) # Check that the range.__contains__ optimization is only # used for ints, not for instances of subclasses of int. class C3(int): def __eq__(self, other): return True - self.assertTrue(C3(11) in range(10)) - self.assertTrue(C3(11) in list(range(10))) + self.assertIn(C3(11), range(10)) + self.assertIn(C3(11), list(range(10))) def test_strided_limits(self): r = range(0, 101, 2) - self.assertTrue(0 in r) + self.assertIn(0, r) self.assertFalse(1 in r) - self.assertTrue(2 in r) + self.assertIn(2, r) self.assertFalse(99 in r) - self.assertTrue(100 in r) + self.assertIn(100, r) self.assertFalse(101 in r) r = range(0, -20, -1) - self.assertTrue(0 in r) - self.assertTrue(-1 in r) - self.assertTrue(-19 in r) + self.assertIn(0, r) + self.assertIn(-1, r) + self.assertIn(-19, r) self.assertFalse(-20 in r) r = range(0, -20, -2) - self.assertTrue(-18 in r) + self.assertIn(-18, r) self.assertFalse(-19 in r) self.assertFalse(-20 in r) Modified: python/branches/py3k/Lib/test/test_reprlib.py ============================================================================== --- python/branches/py3k/Lib/test/test_reprlib.py (original) +++ python/branches/py3k/Lib/test/test_reprlib.py Tue Jan 19 01:09:57 2010 @@ -125,7 +125,7 @@ s = r(ClassWithFailingRepr) self.assertTrue(s.startswith("")) - self.assertTrue(s.find("...") in [12, 13]) + self.assertIn(s.find("..."), [12, 13]) def test_lambda(self): self.assertTrue(repr(lambda x: x).startswith( Modified: python/branches/py3k/Lib/test/test_runpy.py ============================================================================== --- python/branches/py3k/Lib/test/test_runpy.py (original) +++ python/branches/py3k/Lib/test/test_runpy.py Tue Jan 19 01:09:57 2010 @@ -165,14 +165,14 @@ try: if verbose: print("Running from source:", mod_name) d1 = run_module(mod_name) # Read from source - self.assertTrue("x" in d1) + self.assertIn("x", d1) self.assertEqual(d1["x"], 1) del d1 # Ensure __loader__ entry doesn't keep file open __import__(mod_name) os.remove(mod_fname) if verbose: print("Running from compiled:", mod_name) d2 = run_module(mod_name) # Read from bytecode - self.assertTrue("x" in d2) + self.assertIn("x", d2) self.assertEqual(d2["x"], 1) del d2 # Ensure __loader__ entry doesn't keep file open finally: @@ -187,14 +187,14 @@ try: if verbose: print("Running from source:", pkg_name) d1 = run_module(pkg_name) # Read from source - self.assertTrue("x" in d1) + self.assertIn("x", d1) self.assertTrue(d1["x"] == 1) del d1 # Ensure __loader__ entry doesn't keep file open __import__(mod_name) os.remove(mod_fname) if verbose: print("Running from compiled:", pkg_name) d2 = run_module(pkg_name) # Read from bytecode - self.assertTrue("x" in d2) + self.assertIn("x", d2) self.assertTrue(d2["x"] == 1) del d2 # Ensure __loader__ entry doesn't keep file open finally: @@ -239,19 +239,19 @@ pkg_name = mod_name.rpartition('.')[0] if verbose: print("Running from source:", mod_name) d1 = run_module(mod_name, run_name=run_name) # Read from source - self.assertTrue("__package__" in d1) + self.assertIn("__package__", d1) self.assertTrue(d1["__package__"] == pkg_name) - self.assertTrue("sibling" in d1) - self.assertTrue("nephew" in d1) + self.assertIn("sibling", d1) + self.assertIn("nephew", d1) del d1 # Ensure __loader__ entry doesn't keep file open __import__(mod_name) os.remove(mod_fname) if verbose: print("Running from compiled:", mod_name) d2 = run_module(mod_name, run_name=run_name) # Read from bytecode - self.assertTrue("__package__" in d2) + self.assertIn("__package__", d2) self.assertTrue(d2["__package__"] == pkg_name) - self.assertTrue("sibling" in d2) - self.assertTrue("nephew" in d2) + self.assertIn("sibling", d2) + self.assertIn("nephew", d2) del d2 # Ensure __loader__ entry doesn't keep file open finally: self._del_pkg(pkg_dir, depth, mod_name) Modified: python/branches/py3k/Lib/test/test_sax.py ============================================================================== --- python/branches/py3k/Lib/test/test_sax.py (original) +++ python/branches/py3k/Lib/test/test_sax.py Tue Jan 19 01:09:57 2010 @@ -59,7 +59,7 @@ self.assertEquals(attrs.getNames(), ["attr"]) self.assertEquals(attrs.getQNames(), ["attr"]) self.assertEquals(len(attrs), 1) - self.assertTrue("attr" in attrs) + self.assertIn("attr", attrs) self.assertEquals(list(attrs.keys()), ["attr"]) self.assertEquals(attrs.get("attr"), "val") self.assertEquals(attrs.get("attr", 25), "val") @@ -436,7 +436,7 @@ self.assertTrue((attrs.getQNames() == [] or attrs.getQNames() == ["ns:attr"])) self.assertEquals(len(attrs), 1) - self.assertTrue((ns_uri, "attr") in attrs) + self.assertIn((ns_uri, "attr"), attrs) self.assertEquals(attrs.get((ns_uri, "attr")), "val") self.assertEquals(attrs.get((ns_uri, "attr"), 25), "val") self.assertEquals(list(attrs.items()), [((ns_uri, "attr"), "val")]) @@ -626,7 +626,7 @@ self.assertEquals(attrs.getNames(), [(ns_uri, "attr")]) self.assertEquals(attrs.getQNames(), ["ns:attr"]) self.assertEquals(len(attrs), 1) - self.assertTrue((ns_uri, "attr") in attrs) + self.assertIn((ns_uri, "attr"), attrs) self.assertEquals(list(attrs.keys()), [(ns_uri, "attr")]) self.assertEquals(attrs.get((ns_uri, "attr")), "val") self.assertEquals(attrs.get((ns_uri, "attr"), 25), "val") Modified: python/branches/py3k/Lib/test/test_scope.py ============================================================================== --- python/branches/py3k/Lib/test/test_scope.py (original) +++ python/branches/py3k/Lib/test/test_scope.py Tue Jan 19 01:09:57 2010 @@ -447,7 +447,7 @@ return g d = f(2)(4) - self.assertTrue('h' in d) + self.assertIn('h', d) del d['h'] self.assertEqual(d, {'x': 2, 'y': 7, 'w': 6}) @@ -481,8 +481,8 @@ return C varnames = f(1).z - self.assertTrue("x" not in varnames) - self.assertTrue("y" in varnames) + self.assertNotIn("x", varnames) + self.assertIn("y", varnames) def testLocalsClass_WithTrace(self): # Issue23728: after the trace function returns, the locals() @@ -660,7 +660,7 @@ c = f(0) self.assertEqual(c.get(), 1) - self.assertTrue("x" not in c.__class__.__dict__) + self.assertNotIn("x", c.__class__.__dict__) def testNonLocalGenerator(self): Modified: python/branches/py3k/Lib/test/test_set.py ============================================================================== --- python/branches/py3k/Lib/test/test_set.py (original) +++ python/branches/py3k/Lib/test/test_set.py Tue Jan 19 01:09:57 2010 @@ -65,7 +65,7 @@ self.assertEqual(c in self.s, c in self.d) self.assertRaises(TypeError, self.s.__contains__, [[]]) s = self.thetype([frozenset(self.letters)]) - self.assertTrue(self.thetype(self.letters) in s) + self.assertIn(self.thetype(self.letters), s) def test_union(self): u = self.s.union(self.otherword) @@ -269,7 +269,7 @@ s=H() f=set() f.add(s) - self.assertTrue(s in f) + self.assertIn(s, f) f.remove(s) f.add(s) f.discard(s) @@ -379,7 +379,7 @@ def test_add(self): self.s.add('Q') - self.assertTrue('Q' in self.s) + self.assertIn('Q', self.s) dup = self.s.copy() self.s.add('Q') self.assertEqual(self.s, dup) @@ -387,13 +387,13 @@ def test_remove(self): self.s.remove('a') - self.assertTrue('a' not in self.s) + self.assertNotIn('a', self.s) self.assertRaises(KeyError, self.s.remove, 'Q') self.assertRaises(TypeError, self.s.remove, []) s = self.thetype([frozenset(self.word)]) - self.assertTrue(self.thetype(self.word) in s) + self.assertIn(self.thetype(self.word), s) s.remove(self.thetype(self.word)) - self.assertTrue(self.thetype(self.word) not in s) + self.assertNotIn(self.thetype(self.word), s) self.assertRaises(KeyError, self.s.remove, self.thetype(self.word)) def test_remove_keyerror_unpacking(self): @@ -420,26 +420,26 @@ def test_discard(self): self.s.discard('a') - self.assertTrue('a' not in self.s) + self.assertNotIn('a', self.s) self.s.discard('Q') self.assertRaises(TypeError, self.s.discard, []) s = self.thetype([frozenset(self.word)]) - self.assertTrue(self.thetype(self.word) in s) + self.assertIn(self.thetype(self.word), s) s.discard(self.thetype(self.word)) - self.assertTrue(self.thetype(self.word) not in s) + self.assertNotIn(self.thetype(self.word), s) s.discard(self.thetype(self.word)) def test_pop(self): for i in range(len(self.s)): elem = self.s.pop() - self.assertTrue(elem not in self.s) + self.assertNotIn(elem, self.s) self.assertRaises(KeyError, self.s.pop) def test_update(self): retval = self.s.update(self.otherword) self.assertEqual(retval, None) for c in (self.word + self.otherword): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) self.assertRaises(PassThru, self.s.update, check_pass_thru()) self.assertRaises(TypeError, self.s.update, [[]]) for p, q in (('cdc', 'abcd'), ('efgfe', 'abcefg'), ('ccb', 'abc'), ('ef', 'abcef')): @@ -457,16 +457,16 @@ def test_ior(self): self.s |= set(self.otherword) for c in (self.word + self.otherword): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) def test_intersection_update(self): retval = self.s.intersection_update(self.otherword) self.assertEqual(retval, None) for c in (self.word + self.otherword): if c in self.otherword and c in self.word: - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) self.assertRaises(PassThru, self.s.intersection_update, check_pass_thru()) self.assertRaises(TypeError, self.s.intersection_update, [[]]) for p, q in (('cdc', 'c'), ('efgfe', ''), ('ccb', 'bc'), ('ef', '')): @@ -484,18 +484,18 @@ self.s &= set(self.otherword) for c in (self.word + self.otherword): if c in self.otherword and c in self.word: - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) def test_difference_update(self): retval = self.s.difference_update(self.otherword) self.assertEqual(retval, None) for c in (self.word + self.otherword): if c in self.word and c not in self.otherword: - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) self.assertRaises(PassThru, self.s.difference_update, check_pass_thru()) self.assertRaises(TypeError, self.s.difference_update, [[]]) self.assertRaises(TypeError, self.s.symmetric_difference_update, [[]]) @@ -521,18 +521,18 @@ self.s -= set(self.otherword) for c in (self.word + self.otherword): if c in self.word and c not in self.otherword: - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) def test_symmetric_difference_update(self): retval = self.s.symmetric_difference_update(self.otherword) self.assertEqual(retval, None) for c in (self.word + self.otherword): if (c in self.word) ^ (c in self.otherword): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) self.assertRaises(PassThru, self.s.symmetric_difference_update, check_pass_thru()) self.assertRaises(TypeError, self.s.symmetric_difference_update, [[]]) for p, q in (('cdc', 'abd'), ('efgfe', 'abcefg'), ('ccb', 'a'), ('ef', 'abcef')): @@ -545,9 +545,9 @@ self.s ^= set(self.otherword) for c in (self.word + self.otherword): if (c in self.word) ^ (c in self.otherword): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) def test_inplace_on_self(self): t = self.s.copy() @@ -814,7 +814,7 @@ def test_iteration(self): for v in self.set: - self.assertTrue(v in self.values) + self.assertIn(v, self.values) setiter = iter(self.set) # note: __length_hint__ is an internal undocumented API, # don't rely on it in your own programs @@ -849,10 +849,10 @@ self.repr = "{3}" def test_in(self): - self.assertTrue(3 in self.set) + self.assertIn(3, self.set) def test_not_in(self): - self.assertTrue(2 not in self.set) + self.assertNotIn(2, self.set) #------------------------------------------------------------------------------ @@ -866,10 +866,10 @@ self.repr = "{(0, 'zero')}" def test_in(self): - self.assertTrue((0, "zero") in self.set) + self.assertIn((0, "zero"), self.set) def test_not_in(self): - self.assertTrue(9 not in self.set) + self.assertNotIn(9, self.set) #------------------------------------------------------------------------------ @@ -1186,7 +1186,7 @@ popped[self.set.pop()] = None self.assertEqual(len(popped), len(self.values)) for v in self.values: - self.assertTrue(v in popped) + self.assertIn(v, popped) def test_update_empty_tuple(self): self.set.update(()) @@ -1760,7 +1760,7 @@ edge = vertex # Cuboctahedron vertices are edges in Cube self.assertEqual(len(edge), 2) # Two cube vertices define an edge for cubevert in edge: - self.assertTrue(cubevert in g) + self.assertIn(cubevert, g) #============================================================================== Modified: python/branches/py3k/Lib/test/test_site.py ============================================================================== --- python/branches/py3k/Lib/test/test_site.py (original) +++ python/branches/py3k/Lib/test/test_site.py Tue Jan 19 01:09:57 2010 @@ -270,7 +270,7 @@ site.removeduppaths() seen_paths = set() for path in sys.path: - self.assertTrue(path not in seen_paths) + self.assertNotIn(path, seen_paths) seen_paths.add(path) def test_add_build_dir(self): Modified: python/branches/py3k/Lib/test/test_socket.py ============================================================================== --- python/branches/py3k/Lib/test/test_socket.py (original) +++ python/branches/py3k/Lib/test/test_socket.py Tue Jan 19 01:09:57 2010 @@ -502,7 +502,7 @@ # it reasonable to get the host's addr in addition to 0.0.0.0. # At least for eCos. This is required for the S/390 to pass. my_ip_addr = socket.gethostbyname(socket.gethostname()) - self.assertTrue(name[0] in ("0.0.0.0", my_ip_addr), '%s invalid' % name[0]) + self.assertIn(name[0], ("0.0.0.0", my_ip_addr), '%s invalid' % name[0]) self.assertEqual(name[1], port) def testGetSockOpt(self): Modified: python/branches/py3k/Lib/test/test_structseq.py ============================================================================== --- python/branches/py3k/Lib/test/test_structseq.py (original) +++ python/branches/py3k/Lib/test/test_structseq.py Tue Jan 19 01:09:57 2010 @@ -50,8 +50,8 @@ def test_contains(self): t1 = time.gmtime() for item in t1: - self.assertTrue(item in t1) - self.assertTrue(-42 not in t1) + self.assertIn(item, t1) + self.assertNotIn(-42, t1) def test_hash(self): t1 = time.gmtime() Modified: python/branches/py3k/Lib/test/test_subprocess.py ============================================================================== --- python/branches/py3k/Lib/test/test_subprocess.py (original) +++ python/branches/py3k/Lib/test/test_subprocess.py Tue Jan 19 01:09:57 2010 @@ -77,7 +77,7 @@ # check_output() function with zero return code output = subprocess.check_output( [sys.executable, "-c", "print('BDFL')"]) - self.assertTrue(b'BDFL' in output) + self.assertIn(b'BDFL', output) def test_check_output_nonzero(self): # check_call() function with non-zero return code @@ -94,7 +94,7 @@ output = subprocess.check_output( [sys.executable, "-c", "import sys; sys.stderr.write('BDFL')"], stderr=subprocess.STDOUT) - self.assertTrue(b'BDFL' in output) + self.assertIn(b'BDFL', output) def test_check_output_stdout_arg(self): # check_output() function stderr redirected to stdout @@ -103,7 +103,7 @@ [sys.executable, "-c", "print('will not be run')"], stdout=sys.stdout) except ValueError as e: - self.assertTrue('stdout' in e.args[0]) + self.assertIn('stdout', e.args[0]) else: self.fail("Expected ValueError when stdout arg supplied.") Modified: python/branches/py3k/Lib/test/test_sys.py ============================================================================== --- python/branches/py3k/Lib/test/test_sys.py (original) +++ python/branches/py3k/Lib/test/test_sys.py Tue Jan 19 01:09:57 2010 @@ -318,8 +318,8 @@ d = sys._current_frames() main_id = _thread.get_ident() - self.assertTrue(main_id in d) - self.assertTrue(thread_id in d) + self.assertIn(main_id, d) + self.assertIn(thread_id, d) # Verify that the captured main-thread frame is _this_ frame. frame = d.pop(main_id) @@ -341,7 +341,7 @@ # And the next record must be for g456(). filename, lineno, funcname, sourceline = stack[i+1] self.assertEqual(funcname, "g456") - self.assertTrue(sourceline in ["leave_g.wait()", "entered_g.set()"]) + self.assertIn(sourceline, ["leave_g.wait()", "entered_g.set()"]) # Reap the spawned thread. leave_g.set() @@ -353,13 +353,13 @@ # "thread id" 0. d = sys._current_frames() self.assertEqual(len(d), 1) - self.assertTrue(0 in d) + self.assertIn(0, d) self.assertTrue(d[0] is sys._getframe()) def test_attributes(self): self.assertTrue(isinstance(sys.api_version, int)) self.assertTrue(isinstance(sys.argv, list)) - self.assertTrue(sys.byteorder in ("little", "big")) + self.assertIn(sys.byteorder, ("little", "big")) self.assertTrue(isinstance(sys.builtin_module_names, tuple)) self.assertTrue(isinstance(sys.copyright, str)) self.assertTrue(isinstance(sys.exec_prefix, str)) @@ -383,7 +383,7 @@ self.assertTrue(isinstance(vi[0], int)) self.assertTrue(isinstance(vi[1], int)) self.assertTrue(isinstance(vi[2], int)) - self.assertTrue(vi[3] in ("alpha", "beta", "candidate", "final")) + self.assertIn(vi[3], ("alpha", "beta", "candidate", "final")) self.assertTrue(isinstance(vi[4], int)) self.assertTrue(isinstance(vi.major, int)) self.assertTrue(isinstance(vi.minor, int)) @@ -398,7 +398,7 @@ self.assertEqual(vi[4], vi.serial) self.assertTrue(vi > (1,0,0)) self.assertIsInstance(sys.float_repr_style, str) - self.assertTrue(sys.float_repr_style in ('short', 'legacy')) + self.assertIn(sys.float_repr_style, ('short', 'legacy')) def test_43581(self): # Can't use sys.stdout, as this is a StringIO object when Modified: python/branches/py3k/Lib/test/test_tarfile.py ============================================================================== --- python/branches/py3k/Lib/test/test_tarfile.py (original) +++ python/branches/py3k/Lib/test/test_tarfile.py Tue Jan 19 01:09:57 2010 @@ -485,7 +485,7 @@ def test_find_ustar_longname(self): name = "ustar/" + "12345/" * 39 + "1234567/longname" - self.assertTrue(name in self.tar.getnames()) + self.assertIn(name, self.tar.getnames()) def test_find_regtype_oldv7(self): tarinfo = self.tar.getmember("misc/regtype-old-v7") Modified: python/branches/py3k/Lib/test/test_telnetlib.py ============================================================================== --- python/branches/py3k/Lib/test/test_telnetlib.py (original) +++ python/branches/py3k/Lib/test/test_telnetlib.py Tue Jan 19 01:09:57 2010 @@ -284,7 +284,7 @@ txt = telnet.read_all() cmd = nego.seen self.assertTrue(len(cmd) > 0) # we expect at least one command - self.assertTrue(cmd[:1] in self.cmds) + self.assertIn(cmd[:1], self.cmds) self.assertEqual(cmd[1:2], tl.NOOPT) self.assertEqual(data_len, len(txt + cmd)) nego.sb_getter = None # break the nego => telnet cycle @@ -331,7 +331,7 @@ telnet = test_telnet([a]) telnet.set_debuglevel(1) txt = telnet.read_all() - self.assertTrue(b in telnet._messages) + self.assertIn(b, telnet._messages) return def test_debuglevel_write(self): @@ -339,7 +339,7 @@ telnet.set_debuglevel(1) telnet.write(b'xxx') expected = "send b'xxx'\n" - self.assertTrue(expected in telnet._messages) + self.assertIn(expected, telnet._messages) def test_main(verbose=None): support.run_unittest(GeneralTests, ReadTests, WriteTests, OptionTests) Modified: python/branches/py3k/Lib/test/test_tempfile.py ============================================================================== --- python/branches/py3k/Lib/test/test_tempfile.py (original) +++ python/branches/py3k/Lib/test/test_tempfile.py Tue Jan 19 01:09:57 2010 @@ -160,14 +160,14 @@ for envname in 'TMPDIR', 'TEMP', 'TMP': dirname = os.getenv(envname) if not dirname: raise ValueError - self.assertTrue(dirname in cand) + self.assertIn(dirname, cand) try: dirname = os.getcwd() except (AttributeError, os.error): dirname = os.curdir - self.assertTrue(dirname in cand) + self.assertIn(dirname, cand) # Not practical to try to verify the presence of OS-specific # paths in this list. Modified: python/branches/py3k/Lib/test/test_threading.py ============================================================================== --- python/branches/py3k/Lib/test/test_threading.py (original) +++ python/branches/py3k/Lib/test/test_threading.py Tue Jan 19 01:09:57 2010 @@ -153,7 +153,7 @@ tid = _thread.start_new_thread(f, (mutex,)) # Wait for the thread to finish. mutex.acquire() - self.assertTrue(tid in threading._active) + self.assertIn(tid, threading._active) self.assertTrue(isinstance(threading._active[tid], threading._DummyThread)) del threading._active[tid] Modified: python/branches/py3k/Lib/test/test_threading_local.py ============================================================================== --- python/branches/py3k/Lib/test/test_threading_local.py (original) +++ python/branches/py3k/Lib/test/test_threading_local.py Tue Jan 19 01:09:57 2010 @@ -40,7 +40,7 @@ local.someothervar = None gc.collect() deadlist = [weak for weak in weaklist if weak() is None] - self.assertTrue(len(deadlist) in (n-1, n), (n, len(deadlist))) + self.assertIn(len(deadlist), (n-1, n), (n, len(deadlist))) def test_derived(self): # Issue 3088: if there is a threads switch inside the __init__ Modified: python/branches/py3k/Lib/test/test_traceback.py ============================================================================== --- python/branches/py3k/Lib/test/test_traceback.py (original) +++ python/branches/py3k/Lib/test/test_traceback.py Tue Jan 19 01:09:57 2010 @@ -41,12 +41,12 @@ SyntaxError) self.assertEqual(len(err), 4) self.assertTrue(err[1].strip() == "return x!") - self.assertTrue("^" in err[2]) # third line has caret + self.assertIn("^", err[2]) # third line has caret self.assertEqual(err[1].find("!"), err[2].find("^")) # in the right place err = self.get_exception_format(self.syntax_error_with_caret_2, SyntaxError) - self.assertTrue("^" in err[2]) # third line has caret + self.assertIn("^", err[2]) # third line has caret self.assertTrue(err[2].count('\n') == 1) # and no additional newline self.assertTrue(err[1].find("+") == err[2].find("^")) # in the right place @@ -64,7 +64,7 @@ IndentationError) self.assertEqual(len(err), 4) self.assertEqual(err[1].strip(), "print(2)") - self.assertTrue("^" in err[2]) + self.assertIn("^", err[2]) self.assertEqual(err[1].find(")"), err[2].find("^")) def test_base_exception(self): @@ -210,7 +210,7 @@ def check_zero_div(self, msg): lines = msg.splitlines() self.assertTrue(lines[-3].startswith(' File')) - self.assertTrue('1/0 # In zero_div' in lines[-2], lines[-2]) + self.assertIn('1/0 # In zero_div', lines[-2]) self.assertTrue(lines[-1].startswith('ZeroDivisionError'), lines[-1]) def test_simple(self): @@ -222,7 +222,7 @@ self.assertEquals(len(lines), 4) self.assertTrue(lines[0].startswith('Traceback')) self.assertTrue(lines[1].startswith(' File')) - self.assertTrue('1/0 # Marker' in lines[2]) + self.assertIn('1/0 # Marker', lines[2]) self.assertTrue(lines[3].startswith('ZeroDivisionError')) def test_cause(self): @@ -237,7 +237,7 @@ self.assertEquals(len(blocks), 3) self.assertEquals(blocks[1], cause_message) self.check_zero_div(blocks[0]) - self.assertTrue('inner_raise() # Marker' in blocks[2]) + self.assertIn('inner_raise() # Marker', blocks[2]) def test_context(self): def inner_raise(): @@ -251,7 +251,7 @@ self.assertEquals(len(blocks), 3) self.assertEquals(blocks[1], context_message) self.check_zero_div(blocks[0]) - self.assertTrue('inner_raise() # Marker' in blocks[2]) + self.assertIn('inner_raise() # Marker', blocks[2]) def test_cause_and_context(self): # When both a cause and a context are set, only the cause should be @@ -289,11 +289,11 @@ self.assertEquals(len(blocks), 3) self.assertEquals(blocks[1], cause_message) # The first block is the KeyError raised from the ZeroDivisionError - self.assertTrue('raise KeyError from e' in blocks[0]) - self.assertTrue('1/0' not in blocks[0]) + self.assertIn('raise KeyError from e', blocks[0]) + self.assertNotIn('1/0', blocks[0]) # The second block (apart from the boundary) is the ZeroDivisionError # re-raised from the KeyError - self.assertTrue('inner_raise() # Marker' in blocks[2]) + self.assertIn('inner_raise() # Marker', blocks[2]) self.check_zero_div(blocks[2]) Modified: python/branches/py3k/Lib/test/test_types.py ============================================================================== --- python/branches/py3k/Lib/test/test_types.py (original) +++ python/branches/py3k/Lib/test/test_types.py Tue Jan 19 01:09:57 2010 @@ -434,13 +434,13 @@ result = f.__format__(fmt) self.assertEqual(len(result), 98) self.assertEqual(result[-7], '.') - self.assertTrue(result[:12] in ('112340000000', '112339999999')) + self.assertIn(result[:12], ('112340000000', '112339999999')) f = 1.1234e200 for fmt in 'f', 'F': result = f.__format__(fmt) self.assertEqual(len(result), 208) self.assertEqual(result[-7], '.') - self.assertTrue(result[:12] in ('112340000000', '112339999999')) + self.assertIn(result[:12], ('112340000000', '112339999999')) test( 1.0, 'e', '1.000000e+00') Modified: python/branches/py3k/Lib/test/test_unicode.py ============================================================================== --- python/branches/py3k/Lib/test/test_unicode.py (original) +++ python/branches/py3k/Lib/test/test_unicode.py Tue Jan 19 01:09:57 2010 @@ -436,32 +436,32 @@ def test_contains(self): # Testing Unicode contains method - self.assertTrue('a' in 'abdb') - self.assertTrue('a' in 'bdab') - self.assertTrue('a' in 'bdaba') - self.assertTrue('a' in 'bdba') - self.assertTrue('a' not in 'bdb') - self.assertTrue('a' in 'bdba') - self.assertTrue('a' in ('a',1,None)) - self.assertTrue('a' in (1,None,'a')) - self.assertTrue('a' in ('a',1,None)) - self.assertTrue('a' in (1,None,'a')) - self.assertTrue('a' not in ('x',1,'y')) - self.assertTrue('a' not in ('x',1,None)) - self.assertTrue('abcd' not in 'abcxxxx') - self.assertTrue('ab' in 'abcd') - self.assertTrue('ab' in 'abc') - self.assertTrue('ab' in (1,None,'ab')) - self.assertTrue('' in 'abc') - self.assertTrue('' in '') - self.assertTrue('' in 'abc') - self.assertTrue('\0' not in 'abc') - self.assertTrue('\0' in '\0abc') - self.assertTrue('\0' in 'abc\0') - self.assertTrue('a' in '\0abc') - self.assertTrue('asdf' in 'asdf') - self.assertTrue('asdf' not in 'asd') - self.assertTrue('asdf' not in '') + self.assertIn('a', 'abdb') + self.assertIn('a', 'bdab') + self.assertIn('a', 'bdaba') + self.assertIn('a', 'bdba') + self.assertNotIn('a', 'bdb') + self.assertIn('a', 'bdba') + self.assertIn('a', ('a',1,None)) + self.assertIn('a', (1,None,'a')) + self.assertIn('a', ('a',1,None)) + self.assertIn('a', (1,None,'a')) + self.assertNotIn('a', ('x',1,'y')) + self.assertNotIn('a', ('x',1,None)) + self.assertNotIn('abcd', 'abcxxxx') + self.assertIn('ab', 'abcd') + self.assertIn('ab', 'abc') + self.assertIn('ab', (1,None,'ab')) + self.assertIn('', 'abc') + self.assertIn('', '') + self.assertIn('', 'abc') + self.assertNotIn('\0', 'abc') + self.assertIn('\0', '\0abc') + self.assertIn('\0', 'abc\0') + self.assertIn('a', '\0abc') + self.assertIn('asdf', 'asdf') + self.assertNotIn('asdf', 'asd') + self.assertNotIn('asdf', '') self.assertRaises(TypeError, "abc".__contains__) Modified: python/branches/py3k/Lib/test/test_unicode_file.py ============================================================================== --- python/branches/py3k/Lib/test/test_unicode_file.py (original) +++ python/branches/py3k/Lib/test/test_unicode_file.py Tue Jan 19 01:09:57 2010 @@ -47,7 +47,7 @@ base = unicodedata.normalize("NFD", base) file_list = [unicodedata.normalize("NFD", f) for f in file_list] - self.assertTrue(base in file_list) + self.assertIn(base, file_list) # Do as many "equivalancy' tests as we can - ie, check that although we # have different types for the filename, they refer to the same file. Modified: python/branches/py3k/Lib/test/test_unicodedata.py ============================================================================== --- python/branches/py3k/Lib/test/test_unicodedata.py (original) +++ python/branches/py3k/Lib/test/test_unicodedata.py Tue Jan 19 01:09:57 2010 @@ -220,7 +220,7 @@ self.assertEqual(popen.returncode, 1) error = "SyntaxError: (unicode error) \\N escapes not supported " \ "(can't load unicodedata module)" - self.assertTrue(error in popen.stderr.read().decode("ascii")) + self.assertIn(error, popen.stderr.read().decode("ascii")) def test_decimal_numeric_consistent(self): # Test that decimal and numeric are consistent, Modified: python/branches/py3k/Lib/test/test_unittest.py ============================================================================== --- python/branches/py3k/Lib/test/test_unittest.py (original) +++ python/branches/py3k/Lib/test/test_unittest.py Tue Jan 19 01:09:57 2010 @@ -636,7 +636,7 @@ self.assertEqual(list(suite), []) # audioop should now be loaded, thanks to loadTestsFromName() - self.assertTrue(module_name in sys.modules) + self.assertIn(module_name, sys.modules) finally: if module_name in sys.modules: del sys.modules[module_name] @@ -1024,7 +1024,7 @@ self.assertEqual(list(suite), [unittest.TestSuite()]) # audioop should now be loaded, thanks to loadTestsFromName() - self.assertTrue(module_name in sys.modules) + self.assertIn(module_name, sys.modules) finally: if module_name in sys.modules: del sys.modules[module_name] Modified: python/branches/py3k/Lib/test/test_urllib2.py ============================================================================== --- python/branches/py3k/Lib/test/test_urllib2.py (original) +++ python/branches/py3k/Lib/test/test_urllib2.py Tue Jan 19 01:09:57 2010 @@ -787,8 +787,8 @@ r = MockResponse(200, "OK", {}, "") newreq = h.do_request_(req) if data is None: # GET - self.assertTrue("Content-length" not in req.unredirected_hdrs) - self.assertTrue("Content-type" not in req.unredirected_hdrs) + self.assertNotIn("Content-length", req.unredirected_hdrs) + self.assertNotIn("Content-type", req.unredirected_hdrs) else: # POST self.assertEqual(req.unredirected_hdrs["Content-length"], "0") self.assertEqual(req.unredirected_hdrs["Content-type"], @@ -907,13 +907,13 @@ # now it's a GET, there should not be headers regarding content # (possibly dragged from before being a POST) headers = [x.lower() for x in o.req.headers] - self.assertTrue("content-length" not in headers) - self.assertTrue("content-type" not in headers) + self.assertNotIn("content-length", headers) + self.assertNotIn("content-type", headers) self.assertEqual(o.req.headers["Nonsense"], "viking=withhold") - self.assertTrue("Spam" not in o.req.headers) - self.assertTrue("Spam" not in o.req.unredirected_hdrs) + self.assertNotIn("Spam", o.req.headers) + self.assertNotIn("Spam", o.req.unredirected_hdrs) # loop detection req = Request(from_url) Modified: python/branches/py3k/Lib/test/test_userdict.py ============================================================================== --- python/branches/py3k/Lib/test/test_userdict.py (original) +++ python/branches/py3k/Lib/test/test_userdict.py Tue Jan 19 01:09:57 2010 @@ -95,7 +95,7 @@ # Test "in". for i in u2.keys(): - self.assertTrue(i in u2) + self.assertIn(i, u2) self.assertEqual(i in u1, i in d1) self.assertEqual(i in u0, i in d0) @@ -122,7 +122,7 @@ # Test setdefault t = collections.UserDict() self.assertEqual(t.setdefault("x", 42), 42) - self.assertTrue("x" in t) + self.assertIn("x", t) self.assertEqual(t.setdefault("x", 23), 42) # Test pop @@ -152,8 +152,8 @@ d = D({1: 2, 3: 4}) self.assertEqual(d[1], 2) self.assertEqual(d[3], 4) - self.assertTrue(2 not in d) - self.assertTrue(2 not in d.keys()) + self.assertNotIn(2, d) + self.assertNotIn(2, d.keys()) self.assertEqual(d[2], 42) class E(collections.UserDict): def __missing__(self, key): Modified: python/branches/py3k/Lib/test/test_warnings.py ============================================================================== --- python/branches/py3k/Lib/test/test_warnings.py (original) +++ python/branches/py3k/Lib/test/test_warnings.py Tue Jan 19 01:09:57 2010 @@ -483,7 +483,7 @@ with support.captured_output('stderr') as stream: self.module.warn(text) result = stream.getvalue() - self.assertTrue(text in result) + self.assertIn(text, result) def test_showwarning_not_callable(self): with original_warnings.catch_warnings(module=self.module): Modified: python/branches/py3k/Lib/test/test_weakref.py ============================================================================== --- python/branches/py3k/Lib/test/test_weakref.py (original) +++ python/branches/py3k/Lib/test/test_weakref.py Tue Jan 19 01:09:57 2010 @@ -193,7 +193,7 @@ def __bytes__(self): return b"bytes" instance = C() - self.assertTrue("__bytes__" in dir(weakref.proxy(instance))) + self.assertIn("__bytes__", dir(weakref.proxy(instance))) self.assertEqual(bytes(weakref.proxy(instance)), b"bytes") def test_proxy_index(self): @@ -715,8 +715,8 @@ refs = weakref.getweakrefs(o) self.assertEqual(len(refs), 3) self.assertTrue(r2 is refs[0]) - self.assertTrue(r1 in refs[1:]) - self.assertTrue(r3 in refs[1:]) + self.assertIn(r1, refs[1:]) + self.assertIn(r3, refs[1:]) def test_subclass_refs_dont_conflate_callbacks(self): class MyRef(weakref.ref): @@ -726,8 +726,8 @@ r2 = MyRef(o, str) self.assertTrue(r1 is not r2) refs = weakref.getweakrefs(o) - self.assertTrue(r1 in refs) - self.assertTrue(r2 in refs) + self.assertIn(r1, refs) + self.assertIn(r2, refs) def test_subclass_refs_with_slots(self): class MyRef(weakref.ref): @@ -860,8 +860,8 @@ "deleting the keys did not clear the dictionary") o = Object(42) dict[o] = "What is the meaning of the universe?" - self.assertTrue(o in dict) - self.assertTrue(34 not in dict) + self.assertIn(o, dict) + self.assertNotIn(34, dict) def test_weak_keyed_iters(self): dict, objects = self.make_weak_keyed_dict() @@ -873,8 +873,8 @@ objects2 = list(objects) for wr in refs: ob = wr() - self.assertTrue(ob in dict) - self.assertTrue(ob in dict) + self.assertIn(ob, dict) + self.assertIn(ob, dict) self.assertEqual(ob.arg, dict[ob]) objects2.remove(ob) self.assertEqual(len(objects2), 0) @@ -884,8 +884,8 @@ self.assertEqual(len(list(dict.keyrefs())), len(objects)) for wr in dict.keyrefs(): ob = wr() - self.assertTrue(ob in dict) - self.assertTrue(ob in dict) + self.assertIn(ob, dict) + self.assertIn(ob, dict) self.assertEqual(ob.arg, dict[ob]) objects2.remove(ob) self.assertEqual(len(objects2), 0) @@ -1091,13 +1091,13 @@ weakdict = klass() o = weakdict.setdefault(key, value1) self.assertTrue(o is value1) - self.assertTrue(key in weakdict) + self.assertIn(key, weakdict) self.assertTrue(weakdict.get(key) is value1) self.assertTrue(weakdict[key] is value1) o = weakdict.setdefault(key, value2) self.assertTrue(o is value1) - self.assertTrue(key in weakdict) + self.assertIn(key, weakdict) self.assertTrue(weakdict.get(key) is value1) self.assertTrue(weakdict[key] is value1) Modified: python/branches/py3k/Lib/test/test_weakset.py ============================================================================== --- python/branches/py3k/Lib/test/test_weakset.py (original) +++ python/branches/py3k/Lib/test/test_weakset.py Tue Jan 19 01:09:57 2010 @@ -51,9 +51,9 @@ for c in self.letters: self.assertEqual(c in self.s, c in self.d) self.assertRaises(TypeError, self.s.__contains__, [[]]) - self.assertTrue(self.obj in self.fs) + self.assertIn(self.obj, self.fs) del self.obj - self.assertTrue(ustr('F') not in self.fs) + self.assertNotIn(ustr('F'), self.fs) def test_union(self): u = self.s.union(self.items2) @@ -150,7 +150,7 @@ s=H() f=set() f.add(s) - self.assertTrue(s in f) + self.assertIn(s, f) f.remove(s) f.add(s) f.discard(s) @@ -185,7 +185,7 @@ def test_add(self): x = ustr('Q') self.s.add(x) - self.assertTrue(x in self.s) + self.assertIn(x, self.s) dup = self.s.copy() self.s.add(x) self.assertEqual(self.s, dup) @@ -198,66 +198,66 @@ def test_remove(self): x = ustr('a') self.s.remove(x) - self.assertTrue(x not in self.s) + self.assertNotIn(x, self.s) self.assertRaises(KeyError, self.s.remove, x) self.assertRaises(TypeError, self.s.remove, []) def test_discard(self): a, q = ustr('a'), ustr('Q') self.s.discard(a) - self.assertTrue(a not in self.s) + self.assertNotIn(a, self.s) self.s.discard(q) self.assertRaises(TypeError, self.s.discard, []) def test_pop(self): for i in range(len(self.s)): elem = self.s.pop() - self.assertTrue(elem not in self.s) + self.assertNotIn(elem, self.s) self.assertRaises(KeyError, self.s.pop) def test_update(self): retval = self.s.update(self.items2) self.assertEqual(retval, None) for c in (self.items + self.items2): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) self.assertRaises(TypeError, self.s.update, [[]]) def test_update_set(self): self.s.update(set(self.items2)) for c in (self.items + self.items2): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) def test_ior(self): self.s |= set(self.items2) for c in (self.items + self.items2): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) def test_intersection_update(self): retval = self.s.intersection_update(self.items2) self.assertEqual(retval, None) for c in (self.items + self.items2): if c in self.items2 and c in self.items: - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) self.assertRaises(TypeError, self.s.intersection_update, [[]]) def test_iand(self): self.s &= set(self.items2) for c in (self.items + self.items2): if c in self.items2 and c in self.items: - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) def test_difference_update(self): retval = self.s.difference_update(self.items2) self.assertEqual(retval, None) for c in (self.items + self.items2): if c in self.items and c not in self.items2: - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) self.assertRaises(TypeError, self.s.difference_update, [[]]) self.assertRaises(TypeError, self.s.symmetric_difference_update, [[]]) @@ -265,27 +265,27 @@ self.s -= set(self.items2) for c in (self.items + self.items2): if c in self.items and c not in self.items2: - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) def test_symmetric_difference_update(self): retval = self.s.symmetric_difference_update(self.items2) self.assertEqual(retval, None) for c in (self.items + self.items2): if (c in self.items) ^ (c in self.items2): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) self.assertRaises(TypeError, self.s.symmetric_difference_update, [[]]) def test_ixor(self): self.s ^= set(self.items2) for c in (self.items + self.items2): if (c in self.items) ^ (c in self.items2): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) def test_inplace_on_self(self): t = self.s.copy() @@ -348,7 +348,7 @@ self.assertFalse(u in s) with testcontext() as u: s.add(u) - self.assertTrue(u in s) + self.assertIn(u, s) t = s.copy() with testcontext() as u: s.update(t) Modified: python/branches/py3k/Lib/test/test_wsgiref.py ============================================================================== --- python/branches/py3k/Lib/test/test_wsgiref.py (original) +++ python/branches/py3k/Lib/test/test_wsgiref.py Tue Jan 19 01:09:57 2010 @@ -440,7 +440,7 @@ h.get("content-disposition")) del h['content-disposition'] - self.assertTrue(b'content-disposition' not in h) + self.assertNotIn(b'content-disposition', h) class ErrorHandler(BaseCGIHandler): @@ -493,7 +493,7 @@ if k not in empty: self.assertEqual(env[k],v) for k,v in empty.items(): - self.assertTrue(k in env) + self.assertIn(k, env) def testEnviron(self): h = TestHandler(X="Y") @@ -506,7 +506,7 @@ h = BaseCGIHandler(None,None,None,{}) h.setup_environ() for key in 'wsgi.url_scheme', 'wsgi.input', 'wsgi.errors': - self.assertTrue(key in h.environ) + self.assertIn(key, h.environ) def testScheme(self): h=TestHandler(HTTPS="on"); h.setup_environ() @@ -593,7 +593,7 @@ "\r\n%s" % (h.error_status,len(h.error_body),h.error_body) ).encode("iso-8859-1")) - self.assertTrue("AssertionError" in h.stderr.getvalue()) + self.assertIn("AssertionError", h.stderr.getvalue()) def testErrorAfterOutput(self): MSG = "Some output has been sent" @@ -606,7 +606,7 @@ self.assertEqual(h.stdout.getvalue(), ("Status: 200 OK\r\n" "\r\n"+MSG).encode("iso-8859-1")) - self.assertTrue("AssertionError" in h.stderr.getvalue()) + self.assertIn("AssertionError", h.stderr.getvalue()) def testHeaderFormats(self): Modified: python/branches/py3k/Lib/test/test_zipfile.py ============================================================================== --- python/branches/py3k/Lib/test/test_zipfile.py (original) +++ python/branches/py3k/Lib/test/test_zipfile.py Tue Jan 19 01:09:57 2010 @@ -63,9 +63,9 @@ lines = directory.splitlines() self.assertEqual(len(lines), 4) # Number of files + header - self.assertTrue('File Name' in lines[0]) - self.assertTrue('Modified' in lines[0]) - self.assertTrue('Size' in lines[0]) + self.assertIn('File Name', lines[0]) + self.assertIn('Modified', lines[0]) + self.assertIn('Size', lines[0]) fn, date, time_, size = lines[1].split() self.assertEqual(fn, 'another.name') @@ -76,17 +76,17 @@ # Check the namelist names = zipfp.namelist() self.assertEqual(len(names), 3) - self.assertTrue(TESTFN in names) - self.assertTrue("another.name" in names) - self.assertTrue("strfile" in names) + self.assertIn(TESTFN, names) + self.assertIn("another.name", names) + self.assertIn("strfile", names) # Check infolist infos = zipfp.infolist() names = [i.filename for i in infos] self.assertEqual(len(names), 3) - self.assertTrue(TESTFN in names) - self.assertTrue("another.name" in names) - self.assertTrue("strfile" in names) + self.assertIn(TESTFN, names) + self.assertIn("another.name", names) + self.assertIn("strfile", names) for i in infos: self.assertEqual(i.file_size, len(self.data)) @@ -459,9 +459,9 @@ lines = directory.splitlines() self.assertEqual(len(lines), 4) # Number of files + header - self.assertTrue('File Name' in lines[0]) - self.assertTrue('Modified' in lines[0]) - self.assertTrue('Size' in lines[0]) + self.assertIn('File Name', lines[0]) + self.assertIn('Modified', lines[0]) + self.assertIn('Size', lines[0]) fn, date, time_, size = lines[1].split() self.assertEqual(fn, 'another.name') @@ -472,17 +472,17 @@ # Check the namelist names = zipfp.namelist() self.assertEqual(len(names), 3) - self.assertTrue(TESTFN in names) - self.assertTrue("another.name" in names) - self.assertTrue("strfile" in names) + self.assertIn(TESTFN, names) + self.assertIn("another.name", names) + self.assertIn("strfile", names) # Check infolist infos = zipfp.infolist() names = [i.filename for i in infos] self.assertEqual(len(names), 3) - self.assertTrue(TESTFN in names) - self.assertTrue("another.name" in names) - self.assertTrue("strfile" in names) + self.assertIn(TESTFN, names) + self.assertIn("another.name", names) + self.assertIn("strfile", names) for i in infos: self.assertEqual(i.file_size, len(self.data)) @@ -528,7 +528,7 @@ zipfp.writepy(fn) bn = os.path.basename(fn) - self.assertTrue(bn not in zipfp.namelist()) + self.assertNotIn(bn, zipfp.namelist()) self.assertTrue(bn + 'o' in zipfp.namelist() or bn + 'c' in zipfp.namelist()) @@ -540,7 +540,7 @@ zipfp.writepy(fn, "testpackage") bn = "%s/%s" % ("testpackage", os.path.basename(fn)) - self.assertTrue(bn not in zipfp.namelist()) + self.assertNotIn(bn, zipfp.namelist()) self.assertTrue(bn + 'o' in zipfp.namelist() or bn + 'c' in zipfp.namelist()) @@ -577,7 +577,7 @@ names = zipfp.namelist() self.assertTrue('mod1.pyc' in names or 'mod1.pyo' in names) self.assertTrue('mod2.pyc' in names or 'mod2.pyo' in names) - self.assertTrue('mod2.txt' not in names) + self.assertNotIn('mod2.txt', names) finally: shutil.rmtree(TESTFN2) Modified: python/branches/py3k/Lib/test/test_zipimport.py ============================================================================== --- python/branches/py3k/Lib/test/test_zipimport.py (original) +++ python/branches/py3k/Lib/test/test_zipimport.py Tue Jan 19 01:09:57 2010 @@ -294,7 +294,7 @@ z.close() zi = zipimport.zipimporter(TEMP_ZIP) self.assertEquals(data, zi.get_data(name)) - self.assertTrue('zipimporter object' in repr(zi)) + self.assertIn('zipimporter object', repr(zi)) finally: z.close() os.remove(TEMP_ZIP) Modified: python/branches/py3k/Lib/test/test_zipimport_support.py ============================================================================== --- python/branches/py3k/Lib/test/test_zipimport_support.py (original) +++ python/branches/py3k/Lib/test/test_zipimport_support.py Tue Jan 19 01:09:57 2010 @@ -185,7 +185,7 @@ print ("Expected line", expected) print ("Got stdout:") print (data) - self.assertTrue(expected.encode('utf-8') in data) + self.assertIn(expected.encode('utf-8'), data) zip_name, run_name = make_zip_script(d, "test_zip", script_name, '__main__.py') exit_code, data = run_python(zip_name) @@ -194,7 +194,7 @@ print ("Expected line", expected) print ("Got stdout:") print (data) - self.assertTrue(expected.encode('utf-8') in data) + self.assertIn(expected.encode('utf-8'), data) def test_pdb_issue4201(self): test_src = textwrap.dedent("""\ @@ -209,13 +209,13 @@ p = spawn_python(script_name) p.stdin.write(b'l\n') data = kill_python(p) - self.assertTrue(script_name.encode('utf-8') in data) + self.assertIn(script_name.encode('utf-8'), data) zip_name, run_name = make_zip_script(d, "test_zip", script_name, '__main__.py') p = spawn_python(zip_name) p.stdin.write(b'l\n') data = kill_python(p) - self.assertTrue(run_name.encode('utf-8') in data) + self.assertIn(run_name.encode('utf-8'), data) def test_main(): From nnorwitz at gmail.com Tue Jan 19 01:51:51 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 18 Jan 2010 19:51:51 -0500 Subject: [Python-checkins] Python Regression Test Failures refleak (2) Message-ID: <20100119005151.GA25781@kbk-i386-bb.psfb.org> More important issues: ---------------------- test_bz2 leaked [0, 0, 91] references, sum=91 test_distutils leaked [0, 0, 50] references, sum=50 Less important issues: ---------------------- test_popen2 leaked [25, 25, -50] references, sum=0 From nnorwitz at gmail.com Tue Jan 19 02:13:46 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Mon, 18 Jan 2010 20:13:46 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100119011346.GA659@kbk-i386-bb.psfb.org> 349 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-25789 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19647 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test test_hashlib failed -- multiple errors occurred; run in verbose mode for details Re-running test 'test_hashlib' in verbose mode test_case_md5_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_huge (test.test_hashlib.HashLibTestCase) ... ok test_case_md5_uintmax (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_0 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_1 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_2 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha1_3 (test.test_hashlib.HashLibTestCase) ... ok test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ... ERROR test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ... ERROR test_hash_array (test.test_hashlib.HashLibTestCase) ... ERROR test_hexdigest (test.test_hashlib.HashLibTestCase) ... ok test_large_update (test.test_hashlib.HashLibTestCase) ... ok test_threaded_hashing (test.test_hashlib.HashLibTestCase) ... ok test_unicode (test.test_hashlib.HashLibTestCase) ... ERROR test_unknown_hash (test.test_hashlib.HashLibTestCase) ... ok ====================================================================== ERROR: test_case_sha224_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 219, in test_case_sha224_0 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 223, in test_case_sha224_1 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 228, in test_case_sha224_2 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha224_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 232, in test_case_sha224_3 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 237, in test_case_sha256_0 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 241, in test_case_sha256_1 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 246, in test_case_sha256_2 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha256_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 250, in test_case_sha256_3 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 256, in test_case_sha384_0 "274edebfe76f65fbd51ad2f14898b95b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 261, in test_case_sha384_1 "8086072ba1e7cc2358baeca134c825a7") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 268, in test_case_sha384_2 "fcc7c71a557e2db966c3e9fa91746039") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha384_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 273, in test_case_sha384_3 "07b8b3dc38ecc4ebae97ddd87f3d8985") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_0 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 279, in test_case_sha512_0 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_1 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 284, in test_case_sha512_1 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_2 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 291, in test_case_sha512_2 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_case_sha512_3 (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 296, in test_case_sha512_3 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ====================================================================== ERROR: test_hash_array (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 103, in test_hash_array c = cons(a) ValueError: unsupported hash type ====================================================================== ERROR: test_unicode (test.test_hashlib.HashLibTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 161, in test_unicode self.check_unicode('sha224') File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 154, in check_unicode self.check(algorithm_name, u'spam', expected) File "/tmp/python-test/local/lib/python2.7/test/test_hashlib.py", line 143, in check computed = hash_object_constructor(data).hexdigest() ValueError: unsupported hash type ---------------------------------------------------------------------- Ran 31 tests in 0.479s FAILED (errors=18) test test_hashlib failed -- multiple errors occurred test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15448 refs] [15448 refs] [15448 refs] [25474 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17036 refs] [17036 refs] test_plistlib test_poll test_popen [15453 refs] [15453 refs] [15453 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20958 refs] [20958 refs] test_pyexpat test_queue test_quopri [18302 refs] [18302 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15448 refs] [15448 refs] [15451 refs] [15448 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15448 refs] [15448 refs] [15677 refs] [15471 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15451 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18759 refs] [20339 refs] [20153 refs] [20153 refs] [20153 refs] [20153 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 349 tests OK. 1 test failed: test_hashlib 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [889171 refs] From python-checkins at python.org Tue Jan 19 03:40:12 2010 From: python-checkins at python.org (martin.v.loewis) Date: Tue, 19 Jan 2010 02:40:12 -0000 Subject: [Python-checkins] r77605 - tracker/instances/python-dev/lib/openid.py Message-ID: Author: martin.v.loewis Date: Tue Jan 19 03:40:11 2010 New Revision: 77605 Log: Unwrap openid.server href. Modified: tracker/instances/python-dev/lib/openid.py Modified: tracker/instances/python-dev/lib/openid.py ============================================================================== --- tracker/instances/python-dev/lib/openid.py (original) +++ tracker/instances/python-dev/lib/openid.py Tue Jan 19 03:40:11 2010 @@ -202,6 +202,7 @@ # 14.2.1: 1.1 compatibility op_endpoint = soup.find('link', {'rel':lambda v:v and 'openid.server' in v.lower()}) if op_endpoint: + op_endpoint = op_endpoint['href'] op_local = soup.find('link', {'rel':lambda v:v and 'openid.delegate' in v.lower()}) if op_local: op_local = op_local['href'] From python-checkins at python.org Tue Jan 19 04:01:18 2010 From: python-checkins at python.org (martin.v.loewis) Date: Tue, 19 Jan 2010 03:01:18 -0000 Subject: [Python-checkins] r77606 - tracker/instances/python-dev/lib/openid.py Message-ID: Author: martin.v.loewis Date: Tue Jan 19 04:01:18 2010 New Revision: 77606 Log: Report errors in associate. Clear session_type for 1.1 only if it was no-encryption. Clear openid.ns for 1.1. Modified: tracker/instances/python-dev/lib/openid.py Modified: tracker/instances/python-dev/lib/openid.py ============================================================================== --- tracker/instances/python-dev/lib/openid.py (original) +++ tracker/instances/python-dev/lib/openid.py Tue Jan 19 04:01:18 2010 @@ -316,9 +316,13 @@ data['openid.dh_consumer_public'] = dh_public_base64 if is_compat_1x(services): # 14.2.1: clear session_type in 1.1 compatibility mode - data['openid.session_type'] = '' + if data['openid.session_type'] == "no-encryption": + data['openid.session_type'] = '' + del data['openid.ns'] res = urllib.urlopen(url, urllib.urlencode(data)) data = parse_response(res.read()) + if 'error' in data: + raise ValueError, "associate failed: "+data['error'] if url.startswith('http:'): enc_mac_key = base64.b64decode(data['enc_mac_key']) dh_server_public = base64.b64decode(data['dh_server_public']) From python-checkins at python.org Tue Jan 19 09:01:00 2010 From: python-checkins at python.org (gregory.p.smith) Date: Tue, 19 Jan 2010 08:01:00 -0000 Subject: [Python-checkins] r77607 - python/trunk/Lib/test/test_hashlib.py Message-ID: Author: gregory.p.smith Date: Tue Jan 19 09:01:00 2010 New Revision: 77607 Log: Add a pydebug mode only debug print to help debug the errors in http://www.python.org/dev/buildbot/all/builders/x86%20gentoo%20trunk/builds/5700/ Will be removed shortly. Modified: python/trunk/Lib/test/test_hashlib.py Modified: python/trunk/Lib/test/test_hashlib.py ============================================================================== --- python/trunk/Lib/test/test_hashlib.py (original) +++ python/trunk/Lib/test/test_hashlib.py Tue Jan 19 09:01:00 2010 @@ -140,6 +140,10 @@ # 2 is for hashlib.name(...) and hashlib.new(name, ...) self.assertGreaterEqual(len(constructors), 2) for hash_object_constructor in constructors: + if COMPILED_WITH_PYDEBUG: + # XXX(gps): This is temporary to debug a buildbot failure. + # http://www.python.org/dev/buildbot/all/builders/x86%20gentoo%20trunk/builds/5700/ + print "test_hashlib check calling", hash_object_constructor computed = hash_object_constructor(data).hexdigest() self.assertEqual( computed, digest, From python-checkins at python.org Tue Jan 19 09:19:05 2010 From: python-checkins at python.org (gregory.p.smith) Date: Tue, 19 Jan 2010 08:19:05 -0000 Subject: [Python-checkins] r77608 - python/trunk/Modules/_hashopenssl.c Message-ID: Author: gregory.p.smith Date: Tue Jan 19 09:19:03 2010 New Revision: 77608 Log: Do not compile stubs for the sha2 series hashes in the openssl hashlib module when the openssl version is too old to support them. That leads both compiled code bloat and to unittests attempting to test implementations that don't exist for comparison purposes on such platforms. Modified: python/trunk/Modules/_hashopenssl.c Modified: python/trunk/Modules/_hashopenssl.c ============================================================================== --- python/trunk/Modules/_hashopenssl.c (original) +++ python/trunk/Modules/_hashopenssl.c Tue Jan 19 09:19:03 2010 @@ -48,6 +48,10 @@ #define HASH_OBJ_CONSTRUCTOR 0 #endif +/* Minimum OpenSSL version needed to support sha224 and higher. */ +#if defined(OPENSSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER >= 0x00908000) +#define _OPENSSL_SUPPORTS_SHA2 +#endif typedef struct { PyObject_HEAD @@ -69,10 +73,12 @@ DEFINE_CONSTS_FOR_NEW(md5) DEFINE_CONSTS_FOR_NEW(sha1) +#ifdef _OPENSSL_SUPPORTS_SHA2 DEFINE_CONSTS_FOR_NEW(sha224) DEFINE_CONSTS_FOR_NEW(sha256) DEFINE_CONSTS_FOR_NEW(sha384) DEFINE_CONSTS_FOR_NEW(sha512) +#endif static EVPobject * @@ -529,10 +535,12 @@ GEN_CONSTRUCTOR(md5) GEN_CONSTRUCTOR(sha1) +#ifdef _OPENSSL_SUPPORTS_SHA2 GEN_CONSTRUCTOR(sha224) GEN_CONSTRUCTOR(sha256) GEN_CONSTRUCTOR(sha384) GEN_CONSTRUCTOR(sha512) +#endif /* List of functions exported by this module */ @@ -540,10 +548,12 @@ {"new", (PyCFunction)EVP_new, METH_VARARGS|METH_KEYWORDS, EVP_new__doc__}, CONSTRUCTOR_METH_DEF(md5), CONSTRUCTOR_METH_DEF(sha1), +#ifdef _OPENSSL_SUPPORTS_SHA2 CONSTRUCTOR_METH_DEF(sha224), CONSTRUCTOR_METH_DEF(sha256), CONSTRUCTOR_METH_DEF(sha384), CONSTRUCTOR_METH_DEF(sha512), +#endif {NULL, NULL} /* Sentinel */ }; @@ -578,8 +588,10 @@ /* these constants are used by the convenience constructors */ INIT_CONSTRUCTOR_CONSTANTS(md5); INIT_CONSTRUCTOR_CONSTANTS(sha1); +#ifdef _OPENSSL_SUPPORTS_SHA2 INIT_CONSTRUCTOR_CONSTANTS(sha224); INIT_CONSTRUCTOR_CONSTANTS(sha256); INIT_CONSTRUCTOR_CONSTANTS(sha384); INIT_CONSTRUCTOR_CONSTANTS(sha512); +#endif } From python-checkins at python.org Tue Jan 19 09:25:26 2010 From: python-checkins at python.org (gregory.p.smith) Date: Tue, 19 Jan 2010 08:25:26 -0000 Subject: [Python-checkins] r77609 - python/trunk/Lib/test/test_hashlib.py Message-ID: Author: gregory.p.smith Date: Tue Jan 19 09:25:26 2010 New Revision: 77609 Log: Revert debugprint code in r77607. Modified: python/trunk/Lib/test/test_hashlib.py Modified: python/trunk/Lib/test/test_hashlib.py ============================================================================== --- python/trunk/Lib/test/test_hashlib.py (original) +++ python/trunk/Lib/test/test_hashlib.py Tue Jan 19 09:25:26 2010 @@ -140,10 +140,6 @@ # 2 is for hashlib.name(...) and hashlib.new(name, ...) self.assertGreaterEqual(len(constructors), 2) for hash_object_constructor in constructors: - if COMPILED_WITH_PYDEBUG: - # XXX(gps): This is temporary to debug a buildbot failure. - # http://www.python.org/dev/buildbot/all/builders/x86%20gentoo%20trunk/builds/5700/ - print "test_hashlib check calling", hash_object_constructor computed = hash_object_constructor(data).hexdigest() self.assertEqual( computed, digest, From nnorwitz at gmail.com Tue Jan 19 13:09:39 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Tue, 19 Jan 2010 07:09:39 -0500 Subject: [Python-checkins] Python Regression Test Failures refleak (1) Message-ID: <20100119120939.GA3431@kbk-i386-bb.psfb.org> More important issues: ---------------------- test_distutils leaked [0, -50, 0] references, sum=-50 Less important issues: ---------------------- From python-checkins at python.org Tue Jan 19 21:33:32 2010 From: python-checkins at python.org (martin.v.loewis) Date: Tue, 19 Jan 2010 20:33:32 -0000 Subject: [Python-checkins] r77610 - tracker/instances/python-dev/extensions/openid_login.py Message-ID: Author: martin.v.loewis Date: Tue Jan 19 21:33:32 2010 New Revision: 77610 Log: Remove bogus re-raise. Modified: tracker/instances/python-dev/extensions/openid_login.py Modified: tracker/instances/python-dev/extensions/openid_login.py ============================================================================== --- tracker/instances/python-dev/extensions/openid_login.py (original) +++ tracker/instances/python-dev/extensions/openid_login.py Tue Jan 19 21:33:32 2010 @@ -265,7 +265,6 @@ try: signed = openid.authenticate(session, query) except Exception, e: - raise raise ValueError, "Authentication failed: "+repr(e) if 'openid.claimed_id' in query: if 'claimed_id' not in signed: From solipsis at pitrou.net Wed Jan 20 00:54:00 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Wed, 20 Jan 2010 00:54:00 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77604): sum=0 Message-ID: <20100119235400.D00C51770A@ns6635.ovh.net> py3k results for svn r77604 (hg cset 0f280e67b80a) -------------------------------------------------- test_os leaked [-23, 23, 0] references, sum=0 Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogLvnQGE', '-x', 'test_httpservers'] From python-checkins at python.org Wed Jan 20 18:36:32 2010 From: python-checkins at python.org (mark.dickinson) Date: Wed, 20 Jan 2010 17:36:32 -0000 Subject: [Python-checkins] r77614 - in python/trunk: Lib/test/test_strtod.py Python/dtoa.c Message-ID: Author: mark.dickinson Date: Wed Jan 20 18:36:31 2010 New Revision: 77614 Log: Various dtoa.c cleanups. 1. Despagghetify _Py_dg_strtod parsing code and exit points. 2. Simplify bigcomp comparison loop. 3. Don't set ERANGE on _Py_dg_strtod underflow (it was set inconsistently anyway). 4. Remove unused dsign field from BCinfo struct. Modified: python/trunk/Lib/test/test_strtod.py python/trunk/Python/dtoa.c Modified: python/trunk/Lib/test/test_strtod.py ============================================================================== --- python/trunk/Lib/test/test_strtod.py (original) +++ python/trunk/Lib/test/test_strtod.py Wed Jan 20 18:36:31 2010 @@ -164,10 +164,10 @@ self.check_strtod(s) def test_bigcomp(self): - DIG10 = 10**50 - for i in xrange(1000): - for j in xrange(TEST_SIZE): - digits = random.randrange(DIG10) + for ndigs in 5, 10, 14, 15, 16, 17, 18, 19, 20, 40, 41, 50: + dig10 = 10**ndigs + for i in xrange(100 * TEST_SIZE): + digits = random.randrange(dig10) exponent = random.randrange(-400, 400) s = '{}e{}'.format(digits, exponent) self.check_strtod(s) @@ -259,6 +259,43 @@ '10000000000000000000000000000000000000000e-17', # issue 7632 bug 8: the following produced 10.0 '10.900000000000000012345678912345678912345', + # exercise exit conditions in bigcomp comparison loop + '2602129298404963083833853479113577253105939995688e2', + '260212929840496308383385347911357725310593999568896e0', + '26021292984049630838338534791135772531059399956889601e-2', + '260212929840496308383385347911357725310593999568895e0', + '260212929840496308383385347911357725310593999568897e0', + '260212929840496308383385347911357725310593999568996e0', + '260212929840496308383385347911357725310593999568866e0', + # 2**53 + '9007199254740992.00', + # 2**1024 - 2**970: exact overflow boundary. All values + # smaller than this should round to something finite; any value + # greater than or equal to this one overflows. + '179769313486231580793728971405303415079934132710037' #... + '826936173778980444968292764750946649017977587207096' #... + '330286416692887910946555547851940402630657488671505' #... + '820681908902000708383676273854845817711531764475730' #... + '270069855571366959622842914819860834936475292719074' #... + '168444365510704342711559699508093042880177904174497792', + # 2**1024 - 2**970 - tiny + '179769313486231580793728971405303415079934132710037' #... + '826936173778980444968292764750946649017977587207096' #... + '330286416692887910946555547851940402630657488671505' #... + '820681908902000708383676273854845817711531764475730' #... + '270069855571366959622842914819860834936475292719074' #... + '168444365510704342711559699508093042880177904174497791.999', + # 2**1024 - 2**970 + tiny + '179769313486231580793728971405303415079934132710037' #... + '826936173778980444968292764750946649017977587207096' #... + '330286416692887910946555547851940402630657488671505' #... + '820681908902000708383676273854845817711531764475730' #... + '270069855571366959622842914819860834936475292719074' #... + '168444365510704342711559699508093042880177904174497792.001', + # 1 - 2**-54, +-tiny + '999999999999999944488848768742172978818416595458984375e-54', + '9999999999999999444888487687421729788184165954589843749999999e-54', + '9999999999999999444888487687421729788184165954589843750000001e-54', ] for s in test_strings: self.check_strtod(s) Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Wed Jan 20 18:36:31 2010 @@ -270,7 +270,7 @@ typedef struct BCinfo BCinfo; struct BCinfo { - int dsign, e0, nd, nd0, scale; + int e0, nd, nd0, scale; }; #define FFFFFFFF 0xffffffffUL @@ -967,8 +967,8 @@ return c; } -/* Given a positive normal double x, return the difference between x and the next - double up. Doesn't give correct results for subnormals. */ +/* Given a positive normal double x, return the difference between x and the + next double up. Doesn't give correct results for subnormals. */ static double ulp(U *x) @@ -1276,9 +1276,6 @@ bc is a struct containing information gathered during the parsing and estimation steps of _Py_dg_strtod. Description of fields follows: - bc->dsign is 1 if rv < decimal value, 0 if rv >= decimal value. In - normal use, it should almost always be 1 when bigcomp is entered. - bc->e0 gives the exponent of the input value, such that dv = (integer given by the bd->nd digits of s0) * 10**e0 @@ -1387,47 +1384,37 @@ } } - /* if b >= d, round down */ - if (cmp(b, d) >= 0) { + /* Compare s0 with b/d: set dd to -1, 0, or 1 according as s0 < b/d, s0 == + * b/d, or s0 > b/d. Here the digits of s0 are thought of as representing + * a number in the range [0.1, 1). */ + if (cmp(b, d) >= 0) + /* b/d >= 1 */ dd = -1; - goto ret; - } + else { + i = 0; + for(;;) { + b = multadd(b, 10, 0); + if (b == NULL) { + Bfree(d); + return -1; + } + dd = s0[i < nd0 ? i : i+1] - '0' - quorem(b, d); + i++; - /* Compare b/d with s0 */ - for(i = 0; i < nd0; i++) { - b = multadd(b, 10, 0); - if (b == NULL) { - Bfree(d); - return -1; - } - dd = *s0++ - '0' - quorem(b, d); - if (dd) - goto ret; - if (!b->x[0] && b->wds == 1) { - if (i < nd - 1) - dd = 1; - goto ret; - } - } - s0++; - for(; i < nd; i++) { - b = multadd(b, 10, 0); - if (b == NULL) { - Bfree(d); - return -1; - } - dd = *s0++ - '0' - quorem(b, d); - if (dd) - goto ret; - if (!b->x[0] && b->wds == 1) { - if (i < nd - 1) - dd = 1; - goto ret; + if (dd) + break; + if (!b->x[0] && b->wds == 1) { + /* b/d == 0 */ + dd = i < nd; + break; + } + if (!(i < nd)) { + /* b/d != 0, but digits of s0 exhausted */ + dd = -1; + break; + } } } - if (b->x[0] || b->wds > 1) - dd = -1; - ret: Bfree(b); Bfree(d); if (dd > 0 || (dd == 0 && odd)) @@ -1438,128 +1425,129 @@ double _Py_dg_strtod(const char *s00, char **se) { - int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, e, e1, error; - int esign, i, j, k, nd, nd0, nf, nz, nz0, sign; + int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, dsign, e, e1, error; + int esign, i, j, k, lz, nd, nd0, sign; const char *s, *s0, *s1; double aadj, aadj1; U aadj2, adj, rv, rv0; - ULong y, z, abse; + ULong y, z, abs_exp; Long L; BCinfo bc; Bigint *bb, *bb1, *bd, *bd0, *bs, *delta; - sign = nz0 = nz = 0; dval(&rv) = 0.; - for(s = s00;;s++) switch(*s) { - case '-': - sign = 1; - /* no break */ - case '+': - if (*++s) - goto break2; - /* no break */ - case 0: - goto ret0; - /* modify original dtoa.c so that it doesn't accept leading whitespace - case '\t': - case '\n': - case '\v': - case '\f': - case '\r': - case ' ': - continue; - */ - default: - goto break2; - } - break2: - if (*s == '0') { - nz0 = 1; - while(*++s == '0') ; - if (!*s) - goto ret; + + /* Start parsing. */ + c = *(s = s00); + + /* Parse optional sign, if present. */ + sign = 0; + switch (c) { + case '-': + sign = 1; + /* no break */ + case '+': + c = *++s; } - s0 = s; - for(nd = nf = 0; (c = *s) >= '0' && c <= '9'; nd++, s++) - ; - nd0 = nd; + + /* Skip leading zeros: lz is true iff there were leading zeros. */ + s1 = s; + while (c == '0') + c = *++s; + lz = s != s1; + + /* Point s0 at the first nonzero digit (if any). nd0 will be the position + of the point relative to s0. nd will be the total number of digits + ignoring leading zeros. */ + s0 = s1 = s; + while ('0' <= c && c <= '9') + c = *++s; + nd0 = nd = s - s1; + + /* Parse decimal point and following digits. */ if (c == '.') { c = *++s; if (!nd) { - for(; c == '0'; c = *++s) - nz++; - if (c > '0' && c <= '9') { - s0 = s; - nf += nz; - nz = 0; - goto have_dig; - } - goto dig_done; - } - for(; c >= '0' && c <= '9'; c = *++s) { - have_dig: - nz++; - if (c -= '0') { - nf += nz; - nd += nz; - nz = 0; - } + s1 = s; + while (c == '0') + c = *++s; + lz = lz || s != s1; + nd0 -= s - s1; + s0 = s; } + s1 = s; + while ('0' <= c && c <= '9') + c = *++s; + nd += s - s1; } - dig_done: + + /* Now lz is true if and only if there were leading zero digits, and nd + gives the total number of digits ignoring leading zeros. A valid input + must have at least one digit. */ + if (!nd && !lz) { + *se = (char *)s00; + goto parse_error; + } + + /* Parse exponent. */ e = 0; if (c == 'e' || c == 'E') { - if (!nd && !nz && !nz0) { - goto ret0; - } s00 = s; + c = *++s; + + /* Exponent sign. */ esign = 0; - switch(c = *++s) { + switch (c) { case '-': esign = 1; + /* no break */ case '+': c = *++s; } - if (c >= '0' && c <= '9') { - while(c == '0') - c = *++s; - if (c > '0' && c <= '9') { - abse = c - '0'; - s1 = s; - while((c = *++s) >= '0' && c <= '9') - abse = 10*abse + c - '0'; - if (s - s1 > 8 || abse > MAX_ABS_EXP) - /* Avoid confusion from exponents - * so large that e might overflow. - */ - e = (int)MAX_ABS_EXP; /* safe for 16 bit ints */ - else - e = (int)abse; - if (esign) - e = -e; - } - else - e = 0; + + /* Skip zeros. lz is true iff there are leading zeros. */ + s1 = s; + while (c == '0') + c = *++s; + lz = s != s1; + + /* Get absolute value of the exponent. */ + s1 = s; + abs_exp = 0; + while ('0' <= c && c <= '9') { + abs_exp = 10*abs_exp + (c - '0'); + c = *++s; } + + /* abs_exp will be correct modulo 2**32. But 10**9 < 2**32, so if + there are at most 9 significant exponent digits then overflow is + impossible. */ + if (s - s1 > 9 || abs_exp > MAX_ABS_EXP) + e = (int)MAX_ABS_EXP; else + e = (int)abs_exp; + if (esign) + e = -e; + + /* A valid exponent must have at least one digit. */ + if (s == s1 && !lz) s = s00; } - if (!nd) { - if (!nz && !nz0) { - ret0: - s = s00; - sign = 0; - } - goto ret; - } - e -= nf; - if (!nd0) + + /* Adjust exponent to take into account position of the point. */ + e -= nd - nd0; + if (nd0 <= 0) nd0 = nd; - /* strip trailing zeros */ + /* Finished parsing. Set se to indicate how far we parsed */ + if (se) + *se = (char *)s; + + /* If all digits were zero, exit with return value +-0.0. Otherwise, + strip trailing zeros: scan back until we hit a nonzero digit. */ + if (!nd) + goto ret; for (i = nd; i > 0; ) { - /* scan back until we hit a nonzero digit. significant digit 'i' - is s0[i] if i < nd0, s0[i+1] if i >= nd0. */ --i; if (s0[i < nd0 ? i : i+1] != '0') { ++i; @@ -1571,28 +1559,21 @@ if (nd0 > nd) nd0 = nd; - /* Now we have nd0 digits, starting at s0, followed by a - * decimal point, followed by nd-nd0 digits. The number we're - * after is the integer represented by those digits times - * 10**e */ - - bc.e0 = e1 = e; - - /* Summary of parsing results. The parsing stage gives values - * s0, nd0, nd, e, sign, where: + /* Summary of parsing results. After parsing, and dealing with zero + * inputs, we have values s0, nd0, nd, e, sign, where: * - * - s0 points to the first significant digit of the input string s00; + * - s0 points to the first significant digit of the input string * * - nd is the total number of significant digits (here, and * below, 'significant digits' means the set of digits of the * significand of the input that remain after ignoring leading - * and trailing zeros. + * and trailing zeros). * - * - nd0 indicates the position of the decimal point (if - * present): so the nd significant digits are in s0[0:nd0] and - * s0[nd0+1:nd+1] using the usual Python half-open slice - * notation. (If nd0 < nd, then s0[nd0] necessarily contains - * a '.' character; if nd0 == nd, then it could be anything.) + * - nd0 indicates the position of the decimal point, if present; it + * satisfies 1 <= nd0 <= nd. The nd significant digits are in + * s0[0:nd0] and s0[nd0+1:nd+1] using the usual Python half-open slice + * notation. (If nd0 < nd, then s0[nd0] contains a '.' character; if + * nd0 == nd, then s0[nd0] could be any non-digit character.) * * - e is the adjusted exponent: the absolute value of the number * represented by the original input string is n * 10**e, where @@ -1614,6 +1595,7 @@ * gives the value represented by the first min(16, nd) sig. digits. */ + bc.e0 = e1 = e; y = z = 0; for (i = 0; i < nd; i++) { if (i < 9) @@ -1666,14 +1648,8 @@ if ((i = e1 & 15)) dval(&rv) *= tens[i]; if (e1 &= ~15) { - if (e1 > DBL_MAX_10_EXP) { - ovfl: - errno = ERANGE; - /* Can't trust HUGE_VAL */ - word0(&rv) = Exp_mask; - word1(&rv) = 0; - goto ret; - } + if (e1 > DBL_MAX_10_EXP) + goto ovfl; e1 >>= 4; for(j = 0; e1 > 1; j++, e1 >>= 1) if (e1 & 1) @@ -1719,12 +1695,8 @@ else word1(&rv) &= 0xffffffff << j; } - if (!dval(&rv)) { - undfl: - dval(&rv) = 0.; - errno = ERANGE; - goto ret; - } + if (!dval(&rv)) + goto undfl; } } @@ -1882,11 +1854,11 @@ Bfree(bd0); goto failed_malloc; } - bc.dsign = delta->sign; + dsign = delta->sign; delta->sign = 0; i = cmp(delta, bs); if (bc.nd > nd && i <= 0) { - if (bc.dsign) + if (dsign) break; /* Must use bigcomp(). */ /* Here rv overestimates the truncated decimal value by at most @@ -1908,7 +1880,7 @@ rv / 2^bc.scale >= 2^-1021. */ if (j - bc.scale >= 2) { dval(&rv) -= 0.5 * sulp(&rv, &bc); - break; + break; /* Use bigcomp. */ } } @@ -1922,7 +1894,7 @@ /* Error is less than half an ulp -- check for * special case of mantissa a power of two. */ - if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask + if (dsign || word1(&rv) || word0(&rv) & Bndry_mask || (word0(&rv) & Exp_mask) <= (2*P+1)*Exp_msk1 ) { break; @@ -1945,7 +1917,7 @@ } if (i == 0) { /* exactly half-way between */ - if (bc.dsign) { + if (dsign) { if ((word0(&rv) & Bndry_mask1) == Bndry_mask1 && word1(&rv) == ( (bc.scale && @@ -1957,7 +1929,7 @@ + Exp_msk1 ; word1(&rv) = 0; - bc.dsign = 0; + dsign = 0; break; } } @@ -1972,7 +1944,7 @@ /* accept rv */ break; /* rv = smallest denormal */ - if (bc.nd >nd) + if (bc.nd > nd) break; goto undfl; } @@ -1984,7 +1956,7 @@ } if (!(word1(&rv) & LSB)) break; - if (bc.dsign) + if (dsign) dval(&rv) += ulp(&rv); else { dval(&rv) -= ulp(&rv); @@ -1994,11 +1966,11 @@ goto undfl; } } - bc.dsign = 1 - bc.dsign; + dsign = 1 - dsign; break; } if ((aadj = ratio(delta, bs)) <= 2.) { - if (bc.dsign) + if (dsign) aadj = aadj1 = 1.; else if (word1(&rv) || word0(&rv) & Bndry_mask) { if (word1(&rv) == Tiny1 && !word0(&rv)) { @@ -2022,7 +1994,7 @@ } else { aadj *= 0.5; - aadj1 = bc.dsign ? aadj : -aadj; + aadj1 = dsign ? aadj : -aadj; if (Flt_Rounds == 0) aadj1 += 0.5; } @@ -2058,7 +2030,7 @@ if ((z = (ULong)aadj) <= 0) z = 1; aadj = z; - aadj1 = bc.dsign ? aadj : -aadj; + aadj1 = dsign ? aadj : -aadj; } dval(&aadj2) = aadj1; word0(&aadj2) += (2*P+1)*Exp_msk1 - y; @@ -2075,7 +2047,7 @@ L = (Long)aadj; aadj -= L; /* The tolerances below are conservative. */ - if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask) { + if (dsign || word1(&rv) || word0(&rv) & Bndry_mask) { if (aadj < .4999999 || aadj > .5000001) break; } @@ -2104,20 +2076,28 @@ word0(&rv0) = Exp_1 - 2*P*Exp_msk1; word1(&rv0) = 0; dval(&rv) *= dval(&rv0); - /* try to avoid the bug of testing an 8087 register value */ - if (!(word0(&rv) & Exp_mask)) - errno = ERANGE; } + ret: - if (se) - *se = (char *)s; return sign ? -dval(&rv) : dval(&rv); + parse_error: + return 0.0; + failed_malloc: - if (se) - *se = (char *)s00; errno = ENOMEM; return -1.0; + + undfl: + return sign ? -0.0 : 0.0; + + ovfl: + errno = ERANGE; + /* Can't trust HUGE_VAL */ + word0(&rv) = Exp_mask; + word1(&rv) = 0; + return sign ? -dval(&rv) : dval(&rv); + } static char * From python-checkins at python.org Wed Jan 20 19:02:42 2010 From: python-checkins at python.org (mark.dickinson) Date: Wed, 20 Jan 2010 18:02:42 -0000 Subject: [Python-checkins] r77615 - python/trunk/Python/dtoa.c Message-ID: Author: mark.dickinson Date: Wed Jan 20 19:02:41 2010 New Revision: 77615 Log: Don't try to put a value into a NULL pointer. Modified: python/trunk/Python/dtoa.c Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Wed Jan 20 19:02:41 2010 @@ -1485,7 +1485,8 @@ gives the total number of digits ignoring leading zeros. A valid input must have at least one digit. */ if (!nd && !lz) { - *se = (char *)s00; + if (se) + *se = (char *)s00; goto parse_error; } From python-checkins at python.org Wed Jan 20 22:23:25 2010 From: python-checkins at python.org (mark.dickinson) Date: Wed, 20 Jan 2010 21:23:25 -0000 Subject: [Python-checkins] r77616 - python/trunk/Python/dtoa.c Message-ID: Author: mark.dickinson Date: Wed Jan 20 22:23:25 2010 New Revision: 77616 Log: Additional explanatory comments for _Py_dg_strtod. Modified: python/trunk/Python/dtoa.c Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Wed Jan 20 22:23:25 2010 @@ -1672,6 +1672,16 @@ } } else if (e1 < 0) { + /* The input decimal value lies in [10**e1, 10**(e1+16)). + + If e1 <= -512, underflow immediately. + If e1 <= -256, set bc.scale to 2*P. + + So for input value < 1e-256, bc.scale is always set; + for input value >= 1e-240, bc.scale is never set. + For input values in [1e-256, 1e-240), bc.scale may or may + not be set. */ + e1 = -e1; if ((i = e1 & 15)) dval(&rv) /= tens[i]; @@ -1742,7 +1752,34 @@ if (bd0 == NULL) goto failed_malloc; + /* Notation for the comments below. Write: + + - dv for the absolute value of the number represented by the original + decimal input string. + + - if we've truncated dv, write tdv for the truncated value. + Otherwise, set tdv == dv. + + - srv for the quantity rv/2^bc.scale; so srv is the current binary + approximation to tdv (and dv). It should be exactly representable + in an IEEE 754 double. + */ + for(;;) { + + /* This is the main correction loop for _Py_dg_strtod. + + We've got a decimal value tdv, and a floating-point approximation + srv=rv/2^bc.scale to tdv. The aim is to determine whether srv is + close enough (i.e., within 0.5 ulps) to tdv, and to compute a new + approximation if not. + + To determine whether srv is close enough to tdv, compute integers + bd, bb and bs proportional to tdv, srv and 0.5 ulp(srv) + respectively, and then use integer arithmetic to determine whether + |tdv - srv| is less than, equal to, or greater than 0.5 ulp(srv). + */ + bd = Balloc(bd0->k); if (bd == NULL) { Bfree(bd0); @@ -1755,6 +1792,7 @@ Bfree(bd0); goto failed_malloc; } + /* tdv = bd * 10^e; srv = bb * 2^(bbe - scale) */ bs = i2b(1); if (bs == NULL) { Bfree(bb); @@ -1775,6 +1813,17 @@ bb2 += bbe; else bd2 -= bbe; + + /* At this stage e = bd2 - bb2 + bbe = bd5 - bb5, so: + + tdv = bd * 2^(bbe + bd2 - bb2) * 5^(bd5 - bb5) + srv = bb * 2^(bbe - scale). + + Compute j such that + + 0.5 ulp(srv) = 2^(bbe - scale - j) + */ + bs2 = bb2; j = bbe - bc.scale; i = j + bbbits - 1; /* logb(rv) */ @@ -1782,9 +1831,26 @@ j += P - Emin; else j = P + 1 - bbbits; + + /* Now we have: + + M * tdv = bd * 2^(bd2 + scale + j) * 5^bd5 + M * srv = bb * 2^(bb2 + j) * 5^bb5 + M * 0.5 ulp(srv) = 2^bs2 * 5^bb5 + + where M is the constant (currently) represented by 2^(j + scale + + bb2 - bbe) * 5^bb5. + */ + bb2 += j; bd2 += j; bd2 += bc.scale; + + /* After the adjustments above, tdv, srv and 0.5 ulp(srv) are + proportional to: bd * 2^bd2 * 5^bd5, bb * 2^bb2 * 5^bb5, and + bs * 2^bs2 * 5^bb5, respectively. */ + + /* Remove excess powers of 2. i = min(bb2, bd2, bs2). */ i = bb2 < bd2 ? bb2 : bd2; if (i > bs2) i = bs2; @@ -1793,6 +1859,8 @@ bd2 -= i; bs2 -= i; } + + /* Scale bb, bd, bs by the appropriate powers of 2 and 5. */ if (bb5 > 0) { bs = pow5mult(bs, bb5); if (bs == NULL) { @@ -1847,6 +1915,11 @@ goto failed_malloc; } } + + /* Now bd, bb and bs are scaled versions of tdv, srv and 0.5 ulp(srv), + respectively. Compute the difference |tdv - srv|, and compare + with 0.5 ulp(srv). */ + delta = diff(bb, bd); if (delta == NULL) { Bfree(bb); From python-checkins at python.org Wed Jan 20 23:08:05 2010 From: python-checkins at python.org (collin.winter) Date: Wed, 20 Jan 2010 22:08:05 -0000 Subject: [Python-checkins] r77617 - peps/trunk/pep-3146.txt Message-ID: Author: collin.winter Date: Wed Jan 20 23:08:04 2010 New Revision: 77617 Log: Add PEP 3146: Merge Unladen Swallow into CPython. Added: peps/trunk/pep-3146.txt Added: peps/trunk/pep-3146.txt ============================================================================== --- (empty file) +++ peps/trunk/pep-3146.txt Wed Jan 20 23:08:04 2010 @@ -0,0 +1,1315 @@ +PEP: 3146 +Title: Merging Unladen Swallow into CPython +Version: $Revision$ +Last-Modified: $Date$ +Author: Collin Winter , + Jeffrey Yasskin , + Reid Kleckner +Status: Draft +Type: Standards Track +Content-Type: text/x-rst +Created: 1-Jan-2010 +Python-Version: 3.3 +Post-History: + + +Abstract +======== + +This PEP proposes the merger of the Unladen Swallow project [#us]_ into +CPython's source tree. Unladen Swallow is an open-source branch of CPython +focused on performance. Unladen Swallow is source-compatible with valid Python +2.6.4 applications and C extension modules. + +Unladen Swallow adds a just-in-time (JIT) compiler to CPython, allowing for the +compilation of selected Python code to optimized machine code. Beyond classical +static compiler optimizations, Unladen Swallow's JIT compiler takes advantage of +data collected at runtime to make checked assumptions about code behaviour, +allowing the production of faster machine code. + +This PEP proposes to integrate Unladen Swallow into CPython's development tree +in a separate ``py3k-jit`` branch, targeted for eventual merger with the main +``py3k`` branch. While Unladen Swallow is by no means finished or perfect, we +feel that Unladen Swallow has reached sufficient maturity to warrant +incorporation into CPython's roadmap. We have sought to create a stable platform +that the wider CPython development team can build upon, a platform that will +yield increasing performance for years to come. + +This PEP will detail Unladen Swallow's implementation and how it differs from +CPython 2.6.4; the benchmarks used to measure performance; the tools used to +ensure correctness and compatibility; the impact on CPython's current platform +support; and the impact on the CPython core development process. The PEP +concludes with a proposed merger plan and brief notes on possible directions +for future work. + +We seek the following from the BDFL: + +- Approval for the overall concept of adding a just-in-time compiler to CPython, + following the design laid out below. +- Permission to continue working on the just-in-time compiler in the CPython + source tree. +- Permission to eventually merge the just-in-time compiler into the ``py3k`` + branch once all blocking issues have been addressed. +- A pony. + + +Rationale, Implementation +========================= + +Many companies and individuals would like Python to be faster, to enable its +use in more projects. Google is one such company. + +Unladen Swallow is a Google-sponsored branch of CPython, initiated to improve +the performance of Google's numerous Python libraries, tools and applications. +To make the adoption of Unladen Swallow as easy as possible, the project +initially aimed at four goals: + +- A performance improvement of 5x over the baseline of CPython 2.6.4 for + single-threaded code. +- 100% source compatibility with valid CPython 2.6 applications. +- 100% source compatibility with valid CPython 2.6 C extension modules. +- Design for eventual merger back into CPython. + +We chose 2.6.4 as our baseline because Google uses CPython 2.4 internally, and +jumping directly from CPython 2.4 to CPython 3.x was considered infeasible. + +To achieve the desired performance, Unladen Swallow has implemented a +just-in-time (JIT) compiler [#jit]_ in the tradition of Urs Hoelzle's work on +Self [#urs-self]_, gathering feedback at runtime and using that to inform +compile-time optimizations. This is similar to the approach taken by the current +breed of JavaScript engines [#v8]_, [#squirrelfishextreme]_; most Java virtual +machines [#hotspot]_; Rubinius [#rubinius]_, MacRuby [#macruby]_, and other Ruby +implementations; Psyco [#psyco]_; and others. + +We explicitly reject any suggestion that our ideas are original. We have sought +to reuse the published work of other researchers wherever possible. If we have +done any original work, it is by accident. We have tried, as much as possible, +to take good ideas from all corners of the academic and industrial community. A +partial list of the research papers that have informed Unladen Swallow is +available on the Unladen Swallow wiki [#us-relevantpapers]_. + +The key observation about optimizing dynamic languages is that they are only +dynamic in theory; in practice, each individual function or snippet of code is +relatively static, using a stable set of types and child functions. The current +CPython bytecode interpreter assumes the worst about the code it is running, +that at any moment the user might override the ``len()`` function or pass a +never-before-seen type into a function. In practice this never happens, but user +code pays for that support. Unladen Swallow takes advantage of the relatively +static nature of user code to improve performance. + +At a high level, the Unladen Swallow JIT compiler works by translating a +function's CPython bytecode to platform-specific machine code, using data +collected at runtime, as well as classical compiler optimizations, to improve +the quality of the generated machine code. Because we only want to spend +resources compiling Python code that will actually benefit the runtime of the +program, an online heuristic is used to assess how hot a given function is. Once +the hotness value for a function crosses a given threshold, it is selected for +compilation and optimization. Until a function is judged hot, however, it runs +in the standard CPython eval loop, which in Unladen Swallow has been +instrumented to record interesting data about each bytecode executed. This +runtime data is used to reduce the flexibility of the generated machine code, +allowing us to optimize for the common case. For example, we collect data on + +- Whether a branch was taken/not taken. If a branch is never taken, we will not + compile it to machine code. +- Types used by operators. If we find that ``a + b`` is only ever adding + integers, the generated machine code for that snippet will not support adding + floats. +- Functions called at each callsite. If we find that a particular ``foo()`` + callsite is always calling the same ``foo`` function, we can optimize the + call or inline it away + +Refer to [#us-llvm-notes]_ for a complete list of data points gathered and how +they are used. + +However, if by chance the historically-untaken branch is now taken, or some +integer-optimized ``a + b`` snippet receives two strings, we must support this. +We cannot change Python semantics. Each of these sections of optimized machine +code is preceded by a `guard`, which checks whether the simplifying assumptions +we made when optimizing still hold. If the assumptions are still valid, we run +the optimized machine code; if they are not, we revert back to the interpreter +and pick up where we left off. + +We have chosen to reuse a set of existing compiler libraries called LLVM +[#llvm]_ for code generation and code optimization. This has saved our small +team from needing to understand and debug code generation on multiple machine +instruction sets and from needing to implement a large set of classical compiler +optimizations. The project would not have been possible without such code reuse. +We have found LLVM easy to modify and its community receptive to our suggestions +and modifications. + +In somewhat more depth, Unladen Swallow's JIT works by compiling CPython +bytecode to LLVM's own intermediate representation (IR) [#llvm-langref]_, taking +into account any runtime data from the CPython eval loop. We then run a set of +LLVM's built-in optimization passes, producing a smaller, optimized version of +the original LLVM IR. LLVM then lowers the IR to platform-specific machine code, +performing register allocation, instruction scheduling, and any necessary +relocations. This arrangement of the compilation pipeline allows the LLVM-based +JIT to be easily omitted from a compiled ``python`` binary by passing +``--without-llvm`` to ``./configure``; various use cases for this flag are +discussed later. + +For a complete detailing of how Unladen Swallow works, consult the Unladen +Swallow documentation [#us-projectplan]_, [#us-llvm-notes]_. + +Unladen Swallow has focused on improving the performance of single-threaded, +pure-Python code. We have not made an effort to remove CPython's global +interpreter lock (GIL); we feel this is separate from our work, and due to its +sensitivity, is best done in a mainline development branch. We considered +making GIL-removal a part of Unladen Swallow, but were concerned by the +possibility of introducing subtle bugs when porting our work from CPython 2.6 +to 3.x. + +A JIT compiler is an extremely versatile tool, and we have by no means +exhausted its full potential. We have tried to create a sufficiently flexible +framework that the wider CPython development community can build upon it for +years to come, extracting increased performance in each subsequent release. + + +Performance +=========== + +Benchmarks +---------- + +Unladen Swallow has developed a fairly large suite of benchmarks, ranging from +synthetic microbenchmarks designed to test a single feature up through +whole-application macrobenchmarks. The inspiration for these benchmarks has come +variously from third-party contributors (in the case of the ``html5lib`` +benchmark), Google's own internal workloads (``slowspitfire``, ``pickle``, +``unpickle``), as well as tools and libraries in heavy use throughout the wider +Python community (``django``, ``2to3``, ``spambayes``). These benchmarks are run +through a single interface called ``perf.py`` that takes care of collecting +memory usage information, graphing performance, and running statistics on the +benchmark results to ensure significance. + +The full list of available benchmarks is available on the Unladen Swallow wiki +[#us-benchmarks]_, including instructions on downloading and running the +benchmarks for yourself. All our benchmarks are open-source; none are +Google-proprietary. We believe this collection of benchmarks serves as a useful +tool to benchmark any complete Python implementation, and indeed, PyPy is +already using these benchmarks for their own performance testing +[#pypy-bmarks]_, [#us-wider-perf-issue]_. We welcome this, and we seek +additional workloads for the benchmark suite from the Python community. + +We have focused our efforts on collecting macrobenchmarks and benchmarks that +simulate real applications as well as possible, when running a whole application +is not feasible. Along a different axis, our benchmark collection originally +focused on the kinds of workloads seen by Google's Python code (webapps, text +processing), though we have since expanded the collection to include workloads +Google cares nothing about. We have so far shied away from heavily-numerical +workloads, since NumPy [#numpy]_ already does an excellent job on such code and +so improving numerical performance was not an initial high priority for the +team; we have begun to incorporate such benchmarks into the collection +[#us-nbody]_ and have started work on optimizing numerical Python code. + +Beyond these benchmarks, there are also a variety of workloads we are explicitly +not interested in benchmarking. Unladen Swallow is focused on improving the +performance of pure-Python code, so the performance of extension modules like +NumPy is uninteresting since NumPy's core routines are implemented in +C. Similarly, workloads that involve a lot of IO like GUIs, databases or +socket-heavy applications would, we feel, fail to accurately measure interpreter +or code generation optimizations. That said, there's certainly room to improve +the performance of C-language extensions modules in the standard library, and +as such, we have added benchmarks for the ``cPickle`` and ``re`` modules. + + +Performance vs CPython 2.6.4 +---------------------------- + +The charts below compare the arithmetic mean of multiple benchmark iterations +for CPython 2.6.4 and Unladen Swallow. ``perf.py`` gathers more data than this, +and indeed, arithmetic mean is not the whole story; we reproduce only the mean +for the sake of conciseness. We include the ``t`` score from the Student's +two-tailed T-test [#students-t-test]_ at the 95% confidence interval to indicate +the significance of the result. Most benchmarks are run for 100 iterations, +though some longer-running whole-application benchmarks are run for fewer +iterations. + +A description of each of these benchmarks is available on the Unladen Swallow +wiki [#us-benchmarks]_. + +Command: +:: + + ./perf.py -r -b default,apps ../a/python ../b/python + + +32-bit; gcc 4.0.3; Ubuntu Dapper; Intel Core2 Duo 6600 @ 2.4GHz; 2 cores; 4MB L2 cache; 4GB RAM + ++--------------+---------------+----------------------+--------------+---------------+----------------------------+ +| Benchmark | CPython 2.6.4 | Unladen Swallow r988 | Change | Significance | Timeline | ++==============+===============+======================+==============+===============+============================+ +| 2to3 | 25.13 s | 24.87 s | 1.01x faster | t=8.94 | http://tinyurl.com/yamhrpg | ++--------------+---------------+----------------------+--------------+---------------+----------------------------+ +| django | 1.08 s | 0.80 s | 1.35x faster | t=315.59 | http://tinyurl.com/y9mrn8s | ++--------------+---------------+----------------------+--------------+---------------+----------------------------+ +| html5lib | 14.29 s | 13.20 s | 1.08x faster | t=2.17 | http://tinyurl.com/y8tyslu | ++--------------+---------------+----------------------+--------------+---------------+----------------------------+ +| nbody | 0.51 s | 0.28 s | 1.84x faster | t=78.007 | http://tinyurl.com/y989qhg | ++--------------+---------------+----------------------+--------------+---------------+----------------------------+ +| rietveld | 0.75 s | 0.55 s | 1.37x faster | Insignificant | http://tinyurl.com/ye7mqd3 | ++--------------+---------------+----------------------+--------------+---------------+----------------------------+ +| slowpickle | 0.75 s | 0.55 s | 1.37x faster | t=20.78 | http://tinyurl.com/ybrsfnd | ++--------------+---------------+----------------------+--------------+---------------+----------------------------+ +| slowspitfire | 0.83 s | 0.61 s | 1.36x faster | t=2124.66 | http://tinyurl.com/yfknhaw | ++--------------+---------------+----------------------+--------------+---------------+----------------------------+ +| slowunpickle | 0.33 s | 0.26 s | 1.26x faster | t=15.12 | http://tinyurl.com/yzlakoo | ++--------------+---------------+----------------------+--------------+---------------+----------------------------+ +| spambayes | 0.31 s | 0.34 s | 1.10x slower | Insignificant | http://tinyurl.com/yem62ub | ++--------------+---------------+----------------------+--------------+---------------+----------------------------+ + + +64-bit; gcc 4.2.4; Ubuntu Hardy; AMD Opteron 8214 HE @ 2.2 GHz; 4 cores; 1MB L2 cache; 8GB RAM + ++--------------+---------------+----------------------+--------------+---------------+----------------------------+ +| Benchmark | CPython 2.6.4 | Unladen Swallow r988 | Change | Significance | Timeline | ++==============+===============+======================+==============+===============+============================+ +| 2to3 | 31.98 s | 30.41 s | 1.05x faster | t=8.35 | http://tinyurl.com/ybcrl3b | ++--------------+---------------+----------------------+--------------+---------------+----------------------------+ +| django | 1.22 s | 0.94 s | 1.30x faster | t=106.68 | http://tinyurl.com/ybwqll6 | ++--------------+---------------+----------------------+--------------+---------------+----------------------------+ +| html5lib | 18.97 s | 17.79 s | 1.06x faster | t=2.78 | http://tinyurl.com/yzlyqvk | ++--------------+---------------+----------------------+--------------+---------------+----------------------------+ +| nbody | 0.77 s | 0.27 s | 2.86x faster | t=133.49 | http://tinyurl.com/yeyqhbg | ++--------------+---------------+----------------------+--------------+---------------+----------------------------+ +| rietveld | 0.74 s | 0.80 s | 1.08x slower | t=-2.45 | http://tinyurl.com/yzjc6ff | ++--------------+---------------+----------------------+--------------+---------------+----------------------------+ +| slowpickle | 0.91 s | 0.62 s | 1.48x faster | t=28.04 | http://tinyurl.com/yf7en6k | ++--------------+---------------+----------------------+--------------+---------------+----------------------------+ +| slowspitfire | 1.01 s | 0.72 s | 1.40x faster | t=98.70 | http://tinyurl.com/yc8pe2o | ++--------------+---------------+----------------------+--------------+---------------+----------------------------+ +| slowunpickle | 0.51 s | 0.34 s | 1.51x faster | t=32.65 | http://tinyurl.com/yjufu4j | ++--------------+---------------+----------------------+--------------+---------------+----------------------------+ +| spambayes | 0.43 s | 0.45 s | 1.06x slower | Insignificant | http://tinyurl.com/yztbjfp | ++--------------+---------------+----------------------+--------------+---------------+----------------------------+ + + +Many of these benchmarks take a hit under Unladen Swallow because the current +version blocks execution to compile Python functions down to machine code. This +leads to the behaviour seen in the timeline graphs for the ``html5lib`` and +``rietveld`` benchmarks, for example, and slows down the overall performance of +``2to3``. We have an active development branch to fix this problem +([#us-background-thread]_, [#us-background-thread-issue]_), but working within +the strictures of CPython's current threading system has complicated the process +and required far more care and time than originally anticipated. We view this +issue as critical to final merger into the ``py3k`` branch. + +We have obviously not met our initial goal of a 5x performance improvement. A +`performance retrospective`_ follows, which addresses why we failed to meet our +initial performance goal. We maintain a list of yet-to-be-implemented +performance work [#us-perf-punchlist]_. + + +Memory Usage +------------ + +The following table shows maximum memory usage (in kilobytes) for each of +Unladen Swallow's default benchmarks for both CPython 2.6.4 and Unladen Swallow +r988, as well as a timeline of memory usage across the lifetime of the +benchmark. We include tables for both 32- and 64-bit binaries. Memory usage was +measured on Linux 2.6 systems by summing the ``Private_`` sections from the +kernel's ``/proc/$pid/smaps`` pseudo-files [#smaps]_. + +Command: + +:: + + ./perf.py -r --track_memory -b default,apps ../a/python ../b/python + + +32-bit + ++--------------+---------------+----------------------+--------+----------------------------+ +| Benchmark | CPython 2.6.4 | Unladen Swallow r988 | Change | Timeline | ++==============+===============+======================+========+============================+ +| 2to3 | 26396 kb | 46896 kb | 1.77x | http://tinyurl.com/yhr2h4z | ++--------------+---------------+----------------------+--------+----------------------------+ +| django | 10028 kb | 27740 kb | 2.76x | http://tinyurl.com/yhan8vs | ++--------------+---------------+----------------------+--------+----------------------------+ +| html5lib | 150028 kb | 173924 kb | 1.15x | http://tinyurl.com/ybt44en | ++--------------+---------------+----------------------+--------+----------------------------+ +| nbody | 3020 kb | 16036 kb | 5.31x | http://tinyurl.com/ya8hltw | ++--------------+---------------+----------------------+--------+----------------------------+ +| rietveld | 15008 kb | 46400 kb | 3.09x | http://tinyurl.com/yhd5dra | ++--------------+---------------+----------------------+--------+----------------------------+ +| slowpickle | 4608 kb | 16656 kb | 3.61x | http://tinyurl.com/ybukyvo | ++--------------+---------------+----------------------+--------+----------------------------+ +| slowspitfire | 85776 kb | 97620 kb | 1.13x | http://tinyurl.com/y9vj35z | ++--------------+---------------+----------------------+--------+----------------------------+ +| slowunpickle | 3448 kb | 13744 kb | 3.98x | http://tinyurl.com/yexh4d5 | ++--------------+---------------+----------------------+--------+----------------------------+ +| spambayes | 7352 kb | 46480 kb | 6.32x | http://tinyurl.com/yem62ub | ++--------------+---------------+----------------------+--------+----------------------------+ + + +64-bit + ++--------------+---------------+----------------------+--------+----------------------------+ +| Benchmark | CPython 2.6.4 | Unladen Swallow r988 | Change | Timeline | ++==============+===============+======================+========+============================+ +| 2to3 | 51596 kb | 82340 kb | 1.59x | http://tinyurl.com/yljg6rs | ++--------------+---------------+----------------------+--------+----------------------------+ +| django | 16020 kb | 38908 kb | 2.43x | http://tinyurl.com/ylqsebh | ++--------------+---------------+----------------------+--------+----------------------------+ +| html5lib | 259232 kb | 324968 kb | 1.25x | http://tinyurl.com/yha6oee | ++--------------+---------------+----------------------+--------+----------------------------+ +| nbody | 4296 kb | 23012 kb | 5.35x | http://tinyurl.com/yztozza | ++--------------+---------------+----------------------+--------+----------------------------+ +| rietveld | 24140 kb | 73960 kb | 3.06x | http://tinyurl.com/ybg2nq7 | ++--------------+---------------+----------------------+--------+----------------------------+ +| slowpickle | 4928 kb | 23300 kb | 4.73x | http://tinyurl.com/yk5tpbr | ++--------------+---------------+----------------------+--------+----------------------------+ +| slowspitfire | 133276 kb | 148676 kb | 1.11x | http://tinyurl.com/y8bz2xe | ++--------------+---------------+----------------------+--------+----------------------------+ +| slowunpickle | 4896 kb | 16948 kb | 3.46x | http://tinyurl.com/ygywwoc | ++--------------+---------------+----------------------+--------+----------------------------+ +| spambayes | 10728 kb | 84992 kb | 7.92x | http://tinyurl.com/yhjban5 | ++--------------+---------------+----------------------+--------+----------------------------+ + + +The increased memory usage comes from a) LLVM code generation, analysis and +optimization libraries; b) native code; c) memory usage issues or leaks in +LLVM; d) data structures needed to optimize and generate machine code; e) +as-yet uncategorized other sources. + +While we have made significant progress in reducing memory usage since the +initial naive JIT implementation [#us-memory-issue]_, there is obviously more +to do. We believe that there are still memory savings to be made without +sacrificing performance. We have tended to focus on raw performance, and we +have not yet made a concerted push to reduce memory usage. We view reducing +memory usage as a blocking issue for final merger into the ``py3k`` branch. We +seek guidance from the community on an acceptable level of increased memory +usage. + + +Start-up Time +------------- + +Statically linking LLVM's code generation, analysis and optimization libraries +increases the time needed to start the Python binary. C++ static initializers +used by LLVM also increase start-up time, as does importing the collection of +pre-compiled C runtime routines we want to inline to Python code. + +Results from Unladen Swallow's ``startup`` benchmarks: + +:: + + $ ./perf.py -r -b startup /tmp/cpy-26/bin/python /tmp/unladen/bin/python + + ### normal_startup ### + Min: 0.219186 -> 0.352075: 1.6063x slower + Avg: 0.227228 -> 0.364384: 1.6036x slower + Significant (t=-51.879098, a=0.95) + Stddev: 0.00762 -> 0.02532: 3.3227x larger + Timeline: http://tinyurl.com/yfe8z3r + + ### startup_nosite ### + Min: 0.105949 -> 0.264912: 2.5004x slower + Avg: 0.107574 -> 0.267505: 2.4867x slower + Significant (t=-703.557403, a=0.95) + Stddev: 0.00214 -> 0.00240: 1.1209x larger + Timeline: http://tinyurl.com/yajn8fa + + +Unladen Swallow has made headway toward optimizing startup time, but there is +still more work to do and further optimizations to implement. Improving start-up +time is a high-priority item [#us-issue-startup-time]_ in Unladen Swallow's +merger punchlist. + + +Binary Size +----------- + +Statically linking LLVM's code generation, analysis and optimization libraries +significantly increases the size of the ``python`` binary. + + +32-bit; gcc 4.0.3 + ++-------------+---------------+---------------+----------------------+ +| Binary size | CPython 2.6.4 | CPython 3.1.1 | Unladen Swallow r988 | ++=============+===============+===============+======================+ +| Release | 3.8M | 4.0M | 74M | ++-------------+---------------+---------------+----------------------+ +| Debug | 3.3M | 3.6M | 118M | ++-------------+---------------+---------------+----------------------+ + +64-bit; gcc 4.2.4 + ++-------------+---------------+---------------+----------------------+ +| Binary size | CPython 2.6.4 | CPython 3.1.1 | Unladen Swallow r988 | ++=============+===============+===============+======================+ +| Release | 5.5M | 5.7M | 89M | ++-------------+---------------+---------------+----------------------+ +| Debug | 4.1M | 4.4M | 128M | ++-------------+---------------+---------------+----------------------+ + +The increased binary size is due to statically linking LLVM's code generation, +analysis and optimization libraries into the ``python`` binary. This can be +straightforwardly addressed by modifying LLVM to better support shared linking +and then using that, instead of the current static linking. For the moment, +though, static linking provides an accurate look at the cost of linking against +LLVM. + +Unladen Swallow recently experienced a regression in binary size, going from +19MB in Unladen's 2009Q3 release up to the current 74MB shown in the table +above. Resolution of this issue [#us-binary-size]_ will block final merger into +the ``py3k`` branch. + + +Performance Retrospective +------------------------- + +Our initial goal for Unladen Swallow was a 5x performance improvement over +CPython 2.6. We did not hit that, nor to put it bluntly, even come close. Why +did the project not hit that goal, and can an LLVM-based JIT ever hit that goal? + +Why did Unladen Swallow not achieve its 5x goal? The primary reason was +that LLVM required more work than we had initially anticipated. Based on the +fact that Apple was shipping products based on LLVM [#llvm-users]_, and +other high-level languages had successfully implemented LLVM-based JITs +([#rubinius]_, [#macruby]_, [#hlvm]_), we had assumed that LLVM's JIT was +relatively free of show-stopper bugs. + +That turned out to be incorrect. We had to turn our attention away from +performance to fix a number of critical bugs in LLVM's JIT infrastructure (for +example, [#llvm-far-call-issue]_, [#llvm-jmm-rev]_) as well as a number of +nice-to-have enhancements that would enable further optimizations along various +axes (for example, [#llvm-globaldce-rev]_, +[#llvm-memleak-rev]_, [#llvm-availext-issue]_). LLVM's static code generation +facilities, tools and optimization passes are stable and stress-tested, but the +just-in-time infrastructure was relatively untested and buggy. We have fixed +this. + +(Our hypothesis is that we hit these problems -- problems other projects had +avoided -- because of the complexity and thoroughness of CPython's standard +library test suite.) + +We also diverted engineering effort away from performance and into support tools +such as gdb and oProfile. gdb did not work well with JIT compilers at all, and +LLVM previously had no integration with oProfile. Having JIT-aware debuggers and +profilers has been very valuable to the project, and we do not regret +channeling our time in these directions. See the `Debugging`_ and `Profiling`_ +sections for more information. + +Can an LLVM-based CPython JIT ever hit the 5x performance target? The benchmark +results for JIT-based JavaScript implementations suggest that 5x is indeed +possible, as do the results PyPy's JIT has delivered for numeric workloads. The +experience of Self-92 [#urs-self]_ is also instructive. + +Can LLVM deliver this? We believe that we have only begun to scratch the surface +of what our LLVM-based JIT can deliver. The optimizations we have incorporated +into this system thus far have borne significant fruit (for example, +[#us-specialization-issue]_, [#us-direct-calling-issue]_, +[#us-fast-globals-issue]_). Our experience to date is that the limiting factor +on Unladen Swallow's performance is the engineering cycles needed to implement +the literature. We have found LLVM easy to work with and to modify, and its +built-in optimizations have greatly simplified the task of implementing +Python-level optimizations. + +An overview of further performance opportunities is discussed in the +`Future Work`_ section. + + + +Correctness and Compatibility +============================= + +Unladen Swallow's correctness test suite includes CPython's test suite (under +``Lib/test/``), as well as a number of important third-party applications and +libraries [#tested-apps]_. A full list of these applications and libraries is +reproduced below. Any dependencies needed by these packages, such as +``zope.interface`` [#zope-interface]_, are also tested indirectly as a part of +testing the primary package, thus widening the corpus of tested third-party +Python code. + +- 2to3 +- Cheetah +- cvs2svn +- Django +- Nose +- NumPy +- PyCrypto +- pyOpenSSL +- PyXML +- Setuptools +- SQLAlchemy +- SWIG +- SymPy +- Twisted +- ZODB + +These applications pass all relevant tests when run under Unladen Swallow. Note +that some tests that failed against our baseline of CPython 2.6.4 were disabled, +as were tests that made assumptions about CPython internals such as exact +bytecode numbers or bytecode format. Any package with disabled tests includes +a ``README.unladen`` file that details the changes (for example, +[#us-sqlalchemy-readme]_). + +In addition, Unladen Swallow is tested automatically against an array of +internal Google Python libraries and applications. These include Google's +internal Python bindings for BigTable [#bigtable]_, the Mondrian code review +application [#mondrian]_, and Google's Python standard library, among others. +The changes needed to run these projects under Unladen Swallow have consistently +broken into one of three camps: + +- Adding CPython 2.6 C API compatibility. Since Google still primarily uses + CPython 2.4 internally, we have needed to convert uses of ``int`` to + ``Py_ssize_t`` and similar API changes. +- Fixing or disabling explicit, incorrect tests of the CPython version number. +- Conditionally disabling code that worked around or depending on bugs in + CPython 2.4 that have since been fixed. + +Testing against this wide range of public and proprietary applications and +libraries has been instrumental in ensuring the correctness of Unladen Swallow. +Testing has exposed bugs that we have duly corrected. Our automated regression +testing regime has given us high confidence in our changes as we have moved +forward. + +In addition to third-party testing, we have added further tests to CPython's +test suite for corner cases of the language or implementation that we felt were +untested or underspecified (for example, [#us-import-tests]_, +[#us-tracing-tests]_). These have been especially important when implementing +optimizations, helping make sure we have not accidentally broken the darker +corners of Python. + +We have also constructed a test suite focused solely on the LLVM-based JIT +compiler and the optimizations implemented for it [#us-test_llvm]_. Because of +the complexity and subtlety inherent in writing an optimizing compiler, we have +attempted to exhaustively enumerate the constructs, scenarios and corner cases +we are compiling and optimizing. The JIT tests also include tests for things +like the JIT hotness model, making it easier for future CPython developers to +maintain and improve. + +We have recently begun using fuzz testing [#fuzz-testing]_ to stress-test the +compiler. We have used both pyfuzz [#pyfuzz]_ and Fusil [#fusil]_ in the past, +and we recommend they be introduced as an automated part of the CPython testing +process. + +Known Incompatibilities +----------------------- + +The only application or library we know to not work with Unladen Swallow that +does work with CPython 2.6.4 is Psyco [#psyco]_. We are aware of some libraries +such as PyGame [#pygame]_ that work well with CPython 2.6.4, but suffer some +degradation due to changes made in Unladen Swallow. We are tracking this issue +[#us-background-thread-issue]_ and are working to resolve these instances of +degradation. + +While Unladen Swallow is source-compatible with CPython 2.6.4, it is not +binary compatible. C extension modules compiled against one will need to be +recompiled to work with the other. + + +Platform Support +================ + +Unladen Swallow is inherently limited by the platform support provided by LLVM, +especially LLVM's JIT compilation system [#llvm-hardware]_. LLVM's JIT has the +best support on x86 and x86-64 systems, and these are the platforms where +Unladen Swallow has received the most testing. We are confident in LLVM/Unladen +Swallow's support for x86 and x86-64 hardware. PPC and ARM support exists, but +is not widely used and may be buggy. + +Unladen Swallow is known to work on the following operating systems: Linux, +Darwin, Windows. Unladen Swallow has received the most testing on Linux and +Darwin, though it still builds and passes its tests on Windows. + +In order to support hardware and software platforms where LLVM's JIT does not +work, Unladen Swallow provides a ``./configure --without-llvm`` option. This +flag carves out any part of Unladen Swallow that depends on LLVM, yielding a +Python binary that works and passes its tests, but has no performance +advantages. This configuration is recommended for hardware unsupported by LLVM, +or systems that care more about memory usage than performance. + + +Impact on CPython Development +============================= + +Experimenting with Changes to Python or CPython Bytecode +-------------------------------------------------------- + +Unladen Swallow's JIT compiler operates on CPython bytecode, and as such, it is +immune to Python languages changes that only affect the parser. + +We recommend that changes to the CPython bytecode compiler or the semantics of +individual bytecodes be prototyped in the interpreter loop first, then be ported +to the JIT compiler once the semantics are clear. To make this easier, Unladen +Swallow includes a ``--without-llvm`` configure-time option that strips out the +JIT compiler and all associated infrastructure. This leaves the current burden +of experimentation unchanged so that developers can prototype in the current +low-barrier-to-entry interpreter loop. + +Unladen Swallow began implementing its JIT compiler by doing straightforward, +naive translations from bytecode implementations into LLVM API calls. We found +this process to be easily understood, and we recommend the same approach for +CPython. We include several sample changes from the Unladen Swallow repository +here as examples of this style of development: [#us-r359]_, [#us-r376]_, +[#us-r417]_, [#us-r517]_. + + +Debugging +--------- + +The Unladen Swallow team implemented changes to gdb to make it easier to use gdb +to debug JIT-compiled Python code. These changes were released in gdb 7.0 +[#gdb70]_. They make it possible for gdb to identify and unwind past +JIT-generated call stack frames. This allows gdb to continue to function as +before for CPython development if one is changing, for example, the ``list`` +type or builtin functions. + +Example backtrace after our changes, where ``baz``, ``bar`` and ``foo`` are +JIT-compiled: + +:: + + Program received signal SIGSEGV, Segmentation fault. + 0x00002aaaabe7d1a8 in baz () + (gdb) bt + #0 0x00002aaaabe7d1a8 in baz () + #1 0x00002aaaabe7d12c in bar () + #2 0x00002aaaabe7d0aa in foo () + #3 0x00002aaaabe7d02c in main () + #4 0x0000000000b870a2 in llvm::JIT::runFunction (this=0x1405b70, F=0x14024e0, ArgValues=...) + at /home/rnk/llvm-gdb/lib/ExecutionEngine/JIT/JIT.cpp:395 + #5 0x0000000000baa4c5 in llvm::ExecutionEngine::runFunctionAsMain + (this=0x1405b70, Fn=0x14024e0, argv=..., envp=0x7fffffffe3c0) + at /home/rnk/llvm-gdb/lib/ExecutionEngine/ExecutionEngine.cpp:377 + #6 0x00000000007ebd52 in main (argc=2, argv=0x7fffffffe3a8, + envp=0x7fffffffe3c0) at /home/rnk/llvm-gdb/tools/lli/lli.cpp:208 + +Previously, the JIT-compiled frames would have caused gdb to unwind incorrectly, +generating lots of obviously-incorrect ``#6 0x00002aaaabe7d0aa in ?? ()``-style +stack frames. + +Highlights: + +- gdb 7.0 is able to correctly parse JIT-compiled stack frames, allowing full + use of gdb on non-JIT-compiled functions, that is, the vast majority of the + CPython codebase. +- Disassembling inside a JIT-compiled stack frame automatically prints the full + list of instructions making up that function. This is an advance over the + state of gdb before our work: developers needed to guess the starting address + of the function and manually disassemble the assembly code. +- Flexible underlying mechanism allows CPython to add more and more information, + and eventually reach parity with C/C++ support in gdb for JIT-compiled machine + code. + +Lowlights: + +- gdb cannot print local variables or tell you what line you're currently + executing inside a JIT-compiled function. Nor can it step through + JIT-compiled code, except for one instruction at a time. +- Not yet integrated with Apple's gdb or Microsoft's Visual Studio debuggers. + +The Unladen Swallow team is working with Apple to get these changes +incorporated into their future gdb releases. + + +Profiling +--------- + +Unladen Swallow integrates with oProfile 0.9.4 and newer [#oprofile]_ to support +assembly-level profiling on Linux systems. This means that oProfile will +correctly symbolize JIT-compiled functions in its reports. + +Example report, where the ``#u#``-prefixed symbol names are JIT-compiled Python +functions: + +:: + + $ opreport -l ./python | less + CPU: Core 2, speed 1600 MHz (estimated) + Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (Unhalted core cycles) count 100000 + samples % image name symbol name + 79589 4.2329 python PyString_FromFormatV + 62971 3.3491 python PyEval_EvalCodeEx + 62713 3.3354 python tupledealloc + 57071 3.0353 python _PyEval_CallFunction + 50009 2.6597 24532.jo #u#force_unicode + 47468 2.5246 python PyUnicodeUCS2_Decode + 45829 2.4374 python PyFrame_New + 45173 2.4025 python lookdict_string + 43082 2.2913 python PyType_IsSubtype + 39763 2.1148 24532.jo #u#render5 + 38145 2.0287 python _PyType_Lookup + 37643 2.0020 python PyObject_GC_UnTrack + 37105 1.9734 python frame_dealloc + 36849 1.9598 python PyEval_EvalFrame + 35630 1.8950 24532.jo #u#resolve + 33313 1.7717 python PyObject_IsInstance + 33208 1.7662 python PyDict_GetItem + 33168 1.7640 python PyTuple_New + 30458 1.6199 python PyCFunction_NewEx + +This support is functional, but as-yet unpolished. Unladen Swallow maintains a +punchlist of items we feel are important to improve in our oProfile integration +to make it more useful to core CPython developers [#us-oprofile-punchlist]_. + +Highlights: + +- Symbolization of JITted frames working in oProfile on Linux. + +Lowlights: + +- No work yet invested in improving symbolization of JIT-compiled frames for + Apple's Shark [#shark]_ or Microsoft's Visual Studio profiling tools. +- Some polishing still desired for oProfile output. + +We recommend using oProfile 0.9.5 (and newer) to work around a now-fixed bug on +x86-64 platforms in oProfile. oProfile 0.9.4 will work fine on 32-bit platforms, +however. + +Given the ease of integrating oProfile with LLVM [#llvm-oprofile-change]_ and +Unladen Swallow [#us-oprofile-change]_, other profiling tools should be easy as +well, provided they support a similar JIT interface [#oprofile-jit-interface]_. + + +Addition of C++ to CPython +-------------------------- + +In order to use LLVM, Unladen Swallow has introduced C++ into the core CPython +tree and build process. This is an unavoidable part of depending on LLVM; though +LLVM offers a C API [#llvm-c-api]_, it is limited and does not expose the +functionality needed by CPython. Because of this, we have implemented the +internal details of the Unladen Swallow JIT and its supporting infrastructure +in C++. We do not propose converting the entire CPython codebase to C++. + +Highlights: + +- Easy use of LLVM's full, powerful code generation and related APIs. +- Convenient, abstract data structures simplify code. +- C++ is limited to relatively small corners of the CPython codebase. + +Lowlights: + +- Developers must know two related languages, C and C++ to work on the full + range of CPython's internals. +- A C++ style guide will need to be developed and enforced. See `Open Issues`_. + + +Managing LLVM Releases, C++ API Changes +--------------------------------------- + +LLVM is released regularly every six months. This means that LLVM may be +released two or three times during the course of development of a CPython 3.x +release. Each LLVM release brings newer and more powerful optimizations, +improved platform support and more sophisticated code generation. + +LLVM releases usually include incompatible changes to the LLVM C++ API; the +release notes for LLVM 2.6 [#llvm-26-whatsnew]_ include a list of +intentionally-introduced incompatibilities. Unladen Swallow has tracked LLVM +trunk closely over the course of development. Our experience has been +that LLVM API changes are obvious and easily or mechanically remedied. We +include two such changes from the Unladen Swallow tree as references here: +[#us-llvm-r820]_, [#us-llvm-r532]_. + +Due to API incompatibilities, we recommend that an LLVM-based CPython target +compatibility with a single version of LLVM at a time. This will lower the +overhead on the core development team. Pegging to an LLVM version should not be +a problem from a packaging perspective, because pre-built LLVM packages +generally become available via standard system package managers fairly quickly +following an LLVM release, and failing that, llvm.org itself includes binary +releases. + +Pre-built LLVM packages are available from MacPorts [#llvm-macports]_ for +Darwin, and from most major Linux distributions ([#llvm-ubuntu]_, +[#llvm-debian]_, [#llvm-fedora]_). LLVM itself provides additional binaries, +such as for MinGW [#llvm-mingw]_. + +LLVM is currently intended to be statically linked; this means that binary +releases of CPython will include the relevant parts (not all!) of LLVM. This +will increase the binary size, as noted above. + +Unladen Swallow has tasked a full-time engineer with fixing any remaining +critical issues in LLVM before LLVM's 2.7 release. We would like CPython 3.x to +be able to depend on a released version of LLVM, rather than closely tracking +LLVM trunk as Unladen Swallow has done. We believe we will finish this work +before the release of LLVM 2.7, expected in May 2010. + + +Building CPython +---------------- + +In addition to a runtime dependency on LLVM, Unladen Swallow includes a +build-time dependency on Clang [#clang]_, an LLVM-based C/C++ compiler. We use +this to compile parts of the C-language Python runtime to LLVM's intermediate +representation; this allows us to perform cross-language inlining, yielding +increased performance. Clang is not required to run Unladen Swallow. Clang +binary packages are available from most major Linux distributions (for example, +[#clang-debian]_). + +We examined the impact of Unladen Swallow on the time needed to build Python, +including configure, full builds and incremental builds after touching a single +C source file. + ++-------------+---------------+---------------+----------------------+ +| ./configure | CPython 2.6.4 | CPython 3.1.1 | Unladen Swallow r988 | ++=============+===============+===============+======================+ +| Run 1 | 0m20.795s | 0m16.558s | 0m15.477s | ++-------------+---------------+---------------+----------------------+ +| Run 2 | 0m15.255s | 0m16.349s | 0m15.391s | ++-------------+---------------+---------------+----------------------+ +| Run 3 | 0m15.228s | 0m16.299s | 0m15.528s | ++-------------+---------------+---------------+----------------------+ + ++-------------+---------------+---------------+----------------------+ +| Full make | CPython 2.6.4 | CPython 3.1.1 | Unladen Swallow r988 | ++=============+===============+===============+======================+ +| Run 1 | 1m30.776s | 1m22.367s | 1m54.053s | ++-------------+---------------+---------------+----------------------+ +| Run 2 | 1m21.374s | 1m22.064s | 1m49.448s | ++-------------+---------------+---------------+----------------------+ +| Run 3 | 1m22.047s | 1m23.645s | 1m49.305s | ++-------------+---------------+---------------+----------------------+ + +Full builds take a hit due to a) additional ``.cc`` files needed for LLVM +interaction, b) statically linking LLVM into ``libpython``, c) compiling parts +of the Python runtime to LLVM IR to enable cross-language inlining. + +Incremental builds, however, are significantly slower. The table below shows +incremental rebuild times after touching ``Objects/listobject.c``. + ++-------------+---------------+---------------+----------------------+ +| Incr make | CPython 2.6.4 | CPython 3.1.1 | Unladen Swallow r988 | ++=============+===============+===============+======================+ +| Run 1 | 0m1.854s | 0m1.456s | 0m24.464s | ++-------------+---------------+---------------+----------------------+ +| Run 2 | 0m1.437s | 0m1.442s | 0m24.416s | ++-------------+---------------+---------------+----------------------+ +| Run 3 | 0m1.440s | 0m1.425s | 0m24.352s | ++-------------+---------------+---------------+----------------------+ + +As with full builds, this extra time comes from a) additional ``.cc`` files +needed for LLVM interaction, and b) statically linking LLVM into ``libpython``. + +If ``libpython`` were linked shared against LLVM, this overhead would go down. +Incremental builds of Unladen Swallow also currently (as of r988) suffer from a +known bug in the Unladen Swallow ``Makefile`` [#rebuild-too-much]_ where too +many ``.cc`` files are recompiled. We consider this a blocking issue for full +merger with the ``py3k`` branch. + + +Proposed Merge Plan +=================== + +We propose focusing our efforts on eventual merger with CPython's 3.x line of +development. The BDFL has indicated that 2.7 is to be the final release of +CPython's 2.x line of development [#bdfl-27-final]_, and since 2.7 alpha 1 has +already been released [#cpy-27a1]_, we have missed the window. Python 3 is the +future, and that is where we will target our performance efforts. + +We recommend the following plan for merger of Unladen Swallow into the CPython +source tree: + +- Creation of a branch in the CPython SVN repository to work in, call it + ``py3k-jit`` as a strawman. This will be a branch of the CPython ``py3k`` + branch. +- We will keep this branch closely integrated to ``py3k``. The further we + deviate, the harder our work will be. +- Any JIT-related patches will go into the ``py3k-jit`` branch. +- Non-JIT-related patches will go into the ``py3k`` branch (once reviewed and + approved) and be merged back into the ``py3k-jit`` branch. +- Potentially-contentious issues, such as the introduction of new command line + flags or environment variables, will be discussed on python-dev. + + +Because Google uses CPython 2.x internally, Unladen Swallow is based on CPython +2.6. We would need to port our compiler to Python 3; this would be done as +patches are applied to the ``py3k-jit`` branch, so that the branch remains a +consistent implementation of Python 3 at all times. + +We believe this approach will be minimally disruptive to the 3.2 or 3.3 release +process while we iron out any remaining issues blocking final merger into +``py3k``. Unladen Swallow maintains a punchlist of known issues needed before +final merger [#us-punchlist]_, which includes all problems mentioned in this +PEP; we trust the CPython community will have its own concerns. + +See the `Open Issues`_ section for questions about code review policy for the +``py3k-jit`` branch. + + +Future Work +=========== + +A JIT compiler is an extremely flexible tool, and we have by no means exhausted +its full potential. Unladen Swallow maintains a list of yet-to-be-implemented +performance optimizations [#us-perf-punchlist]_ that the team has not yet +had time to fully implement. Examples: + +- Python/Python inlining [#inlining]_. Our compiler currently performs no + inlining between pure-Python functions. Work on this is on-going + [#us-inlining]_. +- Unboxing [#unboxing]_. Unboxing is critical for numerical performance. PyPy + in particular has demonstrated the value of unboxing to heavily-numeric + workloads. +- Recompilation, adaptation. Unladen Swallow currently only compiles a Python + function once, based on its usage pattern up to that point. If the usage + pattern changes, limitations in LLVM [#us-recompile-issue]_ prevent us from + recompiling the function to better serve the new usage pattern. +- JIT-compile regular expressions. Modern JavaScript engines reuse their JIT + compilation infrastructure to boost regex performance [#us-regex-perf]_. + Unladen Swallow has developed benchmarks for Python regular expression + performance ([#us-bm-re-compile]_, [#us-bm-re-v8]_, [#us-bm-re-effbot]_), but + work on regex performance is still at an early stage [#us-regex-issue]_. +- Trace compilation [#traces-waste-of-time]_, [#traces-explicit-pipeline]_. + Based on the results of PyPy and Tracemonkey [#tracemonkey]_, we believe that + a CPython JIT should incorporate trace compilation to some degree. We + initially avoided a purely-tracing JIT compiler in favor of a simpler, + function-at-a-time compiler. However this function-at-a-time compiler has laid + the groundwork for a future tracing compiler implemented in the same terms. + +This list is by no means exhaustive. There is a vast literature on optimizations +for dynamic languages that could and should be implemented in terms of Unladen +Swallow's LLVM-based JIT compiler [#us-relevantpapers]_. + + +Open Issues +=========== + +- *Code review policy for the ``py3k-jit`` branch.* How does the CPython + community want us to procede with respect to checkins on the ``py3k-jit`` + branch? Pre-commit reviews? Post-commit reviews? + + Unladen Swallow has enforced pre-commit reviews in our trunk, but we realize + this may lead to long review/checkin cycles in a purely-volunteer + organization. We would like a non-Google-affiliated member of the CPython + development team to review our work for correctness and compatibility, but we + realize this may not be possible for every commit. +- *How to link LLVM.* Should we change LLVM to better support shared linking, + and then use shared linking to link the parts of it we need into CPython? +- *Prioritization of remaining issues.* We would like input from the CPython + development team on how to prioritize the remaining issues in the Unladen + Swallow codebase. Some issues like memory usage are obviously critical before + merger with ``py3k``, but others may fall into a "nice to have" category that + could be kept for resolution into a future CPython 3.x release. + +- *Create a C++ style guide.* Should PEP 7 be extended to include C++, or + should a separate C++ style PEP be created? Unladen Swallow maintains its own + style guide [#us-styleguide]_, which may serve as a starting point; the + Unladen Swallow style guide is based on both LLVM's [#llvm-styleguide]_ and + Google's [#google-styleguide]_ C++ style guides. + + +Unladen Swallow Community +========================= + +We would like to thank the community of developers who have contributed to +Unladen Swallow, in particular: James Abbatiello, Joerg Blank, Eric Christopher, +Alex Gaynor, Chris Lattner, Nick Lewycky, Evan Phoenix and Thomas Wouters. + + +Licensing +========= + +All work on Unladen Swallow is licensed to the Python Software Foundation (PSF) +under the terms of the Python Software Foundation License v2 [#psf-lic]_ under +the umbrella of Google's blanket Contributor License Agreement with the PSF. + + +References +========== + +.. [#us] + http://code.google.com/p/unladen-swallow/ + +.. [#llvm] + http://llvm.org/ + +.. [#clang] + http://clang.llvm.org/ + +.. [#tested-apps] + http://code.google.com/p/unladen-swallow/wiki/Testing + +.. [#llvm-hardware] + http://llvm.org/docs/GettingStarted.html#hardware + +.. [#rebuild-too-much] + http://code.google.com/p/unladen-swallow/issues/detail?id=115 + +.. [#llvm-c-api] + http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm-c/ + +.. [#llvm-26-whatsnew] + http://llvm.org/releases/2.6/docs/ReleaseNotes.html#whatsnew + +.. [#us-llvm-r820] + http://code.google.com/p/unladen-swallow/source/detail?r=820 + +.. [#us-llvm-r532] + http://code.google.com/p/unladen-swallow/source/detail?r=532 + +.. [#llvm-macports] + http://trac.macports.org/browser/trunk/dports/lang/llvm/Portfile + +.. [#llvm-ubuntu] + http://packages.ubuntu.com/karmic/llvm + +.. [#llvm-debian] + http://packages.debian.org/unstable/devel/llvm + +.. [#clang-debian] + http://packages.debian.org/sid/clang + +.. [#llvm-fedora] + http://koji.fedoraproject.org/koji/buildinfo?buildID=134384 + +.. [#gdb70] + http://www.gnu.org/software/gdb/download/ANNOUNCEMENT + +.. [#oprofile] + http://oprofile.sourceforge.net/news/ + +.. [#us-oprofile-punchlist] + http://code.google.com/p/unladen-swallow/issues/detail?id=63 + +.. [#shark] + http://developer.apple.com/tools/sharkoptimize.html + +.. [#llvm-oprofile-change] + http://llvm.org/viewvc/llvm-project?view=rev&revision=75279 + +.. [#us-oprofile-change] + http://code.google.com/p/unladen-swallow/source/detail?r=986 + +.. [#oprofile-jit-interface] + http://oprofile.sourceforge.net/doc/devel/jit-interface.html + +.. [#llvm-mingw] + http://llvm.org/releases/download.html + +.. [#us-r359] + http://code.google.com/p/unladen-swallow/source/detail?r=359 + +.. [#us-r376] + http://code.google.com/p/unladen-swallow/source/detail?r=376 + +.. [#us-r417] + http://code.google.com/p/unladen-swallow/source/detail?r=417 + +.. [#us-r517] + http://code.google.com/p/unladen-swallow/source/detail?r=517 + +.. [#bdfl-27-final] + http://mail.python.org/pipermail/python-dev/2010-January/095682.html + +.. [#cpy-27a1] + http://www.python.org/dev/peps/pep-0373/ + +.. [#cpy-32]_ + http://www.python.org/dev/peps/pep-0392/ + +.. [#us-punchlist] + http://code.google.com/p/unladen-swallow/issues/list?q=label:Merger + +.. [#us-binary-size] + http://code.google.com/p/unladen-swallow/issues/detail?id=118 + +.. [#us-issue-startup-time] + http://code.google.com/p/unladen-swallow/issues/detail?id=64 + +.. [#zope-interface] + http://www.zope.org/Products/ZopeInterface + +.. [#bigtable] + http://en.wikipedia.org/wiki/BigTable + +.. [#mondrian] + http://www.niallkennedy.com/blog/2006/11/google-mondrian.html + +.. [#us-sqlalchemy-readme] + http://code.google.com/p/unladen-swallow/source/browse/tests/lib/sqlalchemy/README.unladen + +.. [#us-test_llvm] + http://code.google.com/p/unladen-swallow/source/browse/trunk/Lib/test/test_llvm.py + +.. [#fuzz-testing] + http://en.wikipedia.org/wiki/Fuzz_testing + +.. [#pyfuzz] + http://bitbucket.org/ebo/pyfuzz/overview/ + +.. [#fusil] + http://lwn.net/Articles/322826/ + +.. [#us-memory-issue] + http://code.google.com/p/unladen-swallow/issues/detail?id=68 + +.. [#us-benchmarks] + http://code.google.com/p/unladen-swallow/wiki/Benchmarks + +.. [#students-t-test] + http://en.wikipedia.org/wiki/Student's_t-test + +.. [#smaps] + http://bmaurer.blogspot.com/2006/03/memory-usage-with-smaps.html + +.. [#us-background-thread] + http://code.google.com/p/unladen-swallow/source/browse/branches/background-thread + +.. [#us-background-thread-issue] + http://code.google.com/p/unladen-swallow/issues/detail?id=40 + +.. [#us-import-tests] + http://code.google.com/p/unladen-swallow/source/detail?r=888 + +.. [#us-tracing-tests] + http://code.google.com/p/unladen-swallow/source/diff?spec=svn576&r=576&format=side&path=/trunk/Lib/test/test_trace.py + +.. [#us-perf-punchlist] + http://code.google.com/p/unladen-swallow/issues/list?q=label:Performance + +.. [#jit] + http://en.wikipedia.org/wiki/Just-in-time_compilation + +.. [#urs-self] + http://research.sun.com/self/papers/urs-thesis.html + +.. [#us-projectplan] + http://code.google.com/p/unladen-swallow/wiki/ProjectPlan + +.. [#us-relevantpapers] + http://code.google.com/p/unladen-swallow/wiki/RelevantPapers + +.. [#us-llvm-notes] + http://code.google.com/p/unladen-swallow/source/browse/trunk/Python/llvm_notes.txt + +.. [#psf-lic] + http://www.python.org/psf/license/ + +.. [#v8] + http://code.google.com/p/v8/ + +.. [#squirrelfishextreme] + http://webkit.org/blog/214/introducing-squirrelfish-extreme/ + +.. [#rubinius] + http://rubini.us/ + +.. [#parrot-on-llvm] + http://lists.parrot.org/pipermail/parrot-dev/2009-September/002811.html + +.. [#macruby] + http://www.macruby.org/ + +.. [#hotspot] + http://en.wikipedia.org/wiki/HotSpot + +.. [#psyco] + http://psyco.sourceforge.net/ + +.. [#pypy] + http://codespeak.net/pypy/dist/pypy/doc/ + +.. [#inlining] + http://en.wikipedia.org/wiki/Inline_expansion + +.. [#unboxing] + http://en.wikipedia.org/wiki/Object_type_(object-oriented_programming) + +.. [#us-inlining] + http://code.google.com/p/unladen-swallow/issues/detail?id=86 + +.. [#us-styleguide] + http://code.google.com/p/unladen-swallow/wiki/StyleGuide + +.. [#llvm-styleguide] + http://llvm.org/docs/CodingStandards.html + +.. [#google-styleguide] + http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml + +.. [#us-recompile-issue] + http://code.google.com/p/unladen-swallow/issues/detail?id=41 + +.. [#us-regex-perf] + http://code.google.com/p/unladen-swallow/wiki/ProjectPlan#Regular_Expressions + +.. [#us-bm-re-compile] + http://code.google.com/p/unladen-swallow/source/browse/tests/performance/bm_regex_compile.py + +.. [#us-bm-re-v8] + http://code.google.com/p/unladen-swallow/source/browse/tests/performance/bm_regex_v8.py + +.. [#us-bm-re-effbot] + http://code.google.com/p/unladen-swallow/source/browse/tests/performance/bm_regex_effbot.py + +.. [#us-regex-issue] + http://code.google.com/p/unladen-swallow/issues/detail?id=13 + +.. [#pygame] + http://www.pygame.org/ + +.. [#numpy] + http://numpy.scipy.org/ + +.. [#pypy-bmarks] + http://codespeak.net:8099/plotsummary.html + +.. [#llvm-users] + http://llvm.org/Users.html + +.. [#hlvm] + http://www.ffconsultancy.com/ocaml/hlvm/ + +.. [#llvm-far-call-issue] + http://llvm.org/PR5201 + +.. [#llvm-jmm-rev] + http://llvm.org/viewvc/llvm-project?view=rev&revision=76828 + +.. [#llvm-memleak-rev] + http://llvm.org/viewvc/llvm-project?rev=91611&view=rev + +.. [#llvm-globaldce-rev] + http://llvm.org/viewvc/llvm-project?rev=85182&view=rev + +.. [#llvm-availext-issue] + http://llvm.org/PR5735 + +.. [#us-specialization-issue] + http://code.google.com/p/unladen-swallow/issues/detail?id=73 + +.. [#us-direct-calling-issue] + http://code.google.com/p/unladen-swallow/issues/detail?id=88 + +.. [#us-fast-globals-issue] + http://code.google.com/p/unladen-swallow/issues/detail?id=67 + +.. [#traces-waste-of-time] + http://www.ics.uci.edu/~franz/Site/pubs-pdf/C44Prepub.pdf + +.. [#traces-explicit-pipeline] + http://www.ics.uci.edu/~franz/Site/pubs-pdf/ICS-TR-07-12.pdf + +.. [#tracemonkey] + https://wiki.mozilla.org/JavaScript:TraceMonkey + +.. [#llvm-langref] + http://llvm.org/docs/LangRef.html + +.. [#us-wider-perf-issue] + http://code.google.com/p/unladen-swallow/issues/detail?id=120 + +.. [#us-nbody] + http://code.google.com/p/unladen-swallow/source/browse/tests/performance/bm_nbody.py + + +Copyright +========= + +This document has been placed in the public domain. + +.. + Local Variables: + mode: indented-text + indent-tabs-mode: nil + sentence-end-double-space: t + fill-column: 70 + coding: utf-8 + End: + + + From solipsis at pitrou.net Thu Jan 21 00:54:14 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Thu, 21 Jan 2010 00:54:14 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77604): sum=0 Message-ID: <20100120235414.8E3931770A@ns6635.ovh.net> py3k results for svn r77604 (hg cset 0f280e67b80a) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflognOwsfZ', '-x', 'test_httpservers'] From python-checkins at python.org Thu Jan 21 02:23:17 2010 From: python-checkins at python.org (benjamin.peterson) Date: Thu, 21 Jan 2010 01:23:17 -0000 Subject: [Python-checkins] r77618 - in peps/trunk: pep-3107.txt pep-3109.txt pep-3110.txt pep-3129.txt pep-3133.txt pep-3141.txt Message-ID: Author: benjamin.peterson Date: Thu Jan 21 02:23:17 2010 New Revision: 77618 Log: normalize Collin and Jeffery's email address Modified: peps/trunk/pep-3107.txt peps/trunk/pep-3109.txt peps/trunk/pep-3110.txt peps/trunk/pep-3129.txt peps/trunk/pep-3133.txt peps/trunk/pep-3141.txt Modified: peps/trunk/pep-3107.txt ============================================================================== --- peps/trunk/pep-3107.txt (original) +++ peps/trunk/pep-3107.txt Thu Jan 21 02:23:17 2010 @@ -2,7 +2,7 @@ Title: Function Annotations Version: $Revision$ Last-Modified: $Date$ -Author: Collin Winter , +Author: Collin Winter , Tony Lownds Status: Final Type: Standards Track Modified: peps/trunk/pep-3109.txt ============================================================================== --- peps/trunk/pep-3109.txt (original) +++ peps/trunk/pep-3109.txt Thu Jan 21 02:23:17 2010 @@ -2,7 +2,7 @@ Title: Raising Exceptions in Python 3000 Version: $Revision$ Last-Modified: $Date$ -Author: Collin Winter +Author: Collin Winter Status: Final Type: Standards Track Content-Type: text/x-rst Modified: peps/trunk/pep-3110.txt ============================================================================== --- peps/trunk/pep-3110.txt (original) +++ peps/trunk/pep-3110.txt Thu Jan 21 02:23:17 2010 @@ -2,7 +2,7 @@ Title: Catching Exceptions in Python 3000 Version: $Revision$ Last-Modified: $Date$ -Author: Collin Winter +Author: Collin Winter Status: Final Type: Standards Track Content-Type: text/x-rst Modified: peps/trunk/pep-3129.txt ============================================================================== --- peps/trunk/pep-3129.txt (original) +++ peps/trunk/pep-3129.txt Thu Jan 21 02:23:17 2010 @@ -2,7 +2,7 @@ Title: Class Decorators Version: $Revision$ Last-Modified: $Date$ -Author: Collin Winter +Author: Collin Winter Status: Final Type: Standards Track Content-Type: text/x-rst Modified: peps/trunk/pep-3133.txt ============================================================================== --- peps/trunk/pep-3133.txt (original) +++ peps/trunk/pep-3133.txt Thu Jan 21 02:23:17 2010 @@ -2,7 +2,7 @@ Title: Introducing Roles Version: $Revision$ Last-Modified: $Date$ -Author: Collin Winter +Author: Collin Winter Status: Rejected Type: Standards Track Content-Type: text/x-rst Modified: peps/trunk/pep-3141.txt ============================================================================== --- peps/trunk/pep-3141.txt (original) +++ peps/trunk/pep-3141.txt Thu Jan 21 02:23:17 2010 @@ -2,7 +2,7 @@ Title: A Type Hierarchy for Numbers Version: $Revision$ Last-Modified: $Date$ -Author: Jeffrey Yasskin +Author: Jeffrey Yasskin Status: Final Type: Standards Track Content-Type: text/x-rst From python-checkins at python.org Thu Jan 21 07:30:03 2010 From: python-checkins at python.org (martin.v.loewis) Date: Thu, 21 Jan 2010 06:30:03 -0000 Subject: [Python-checkins] r77619 - tracker/instances/python-dev/lib/openid.py Message-ID: Author: martin.v.loewis Date: Thu Jan 21 07:30:03 2010 New Revision: 77619 Log: Copy r723 from PyPI: Encode Unicode strings as UTF-8 for authentication. Modified: tracker/instances/python-dev/lib/openid.py Modified: tracker/instances/python-dev/lib/openid.py ============================================================================== --- tracker/instances/python-dev/lib/openid.py (original) +++ tracker/instances/python-dev/lib/openid.py Thu Jan 21 07:30:03 2010 @@ -433,7 +433,11 @@ signed = response['openid.signed'][0].split(',') query = [] for name in signed: + if isinstance(name, unicode): + name = name.encode('ascii') value = response['openid.'+name][0] + if isinstance(value, unicode): + value = value.encode('utf-8') query.append('%s:%s\n' % (name, value)) query = ''.join(query) From python-checkins at python.org Thu Jan 21 15:47:00 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 14:47:00 -0000 Subject: [Python-checkins] r77622 - python/branches/py3k-cdecimal/Modules/cdecimal/basearith.c Message-ID: Author: stefan.krah Date: Thu Jan 21 15:47:00 2010 New Revision: 77622 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/basearith.c Modified: python/branches/py3k-cdecimal/Modules/cdecimal/basearith.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/basearith.c (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/basearith.c Thu Jan 21 15:47:00 2010 @@ -28,11 +28,11 @@ */ mpd_uint_t _mpd_baseadd(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, - size_t m, size_t n) + mpd_size_t m, mpd_size_t n) { mpd_uint_t s; mpd_uint_t carry = 0; - size_t i; + mpd_size_t i; assert(n > 0 && m >= n); @@ -61,11 +61,11 @@ * has to make sure that w is big enough. */ void -_mpd_baseaddto(mpd_uint_t *w, const mpd_uint_t *u, size_t n) +_mpd_baseaddto(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n) { mpd_uint_t s; mpd_uint_t carry = 0; - size_t i; + mpd_size_t i; if (n == 0) return; @@ -88,11 +88,11 @@ * final carry. */ mpd_uint_t -_mpd_shortadd(mpd_uint_t *w, size_t m, mpd_uint_t v) +_mpd_shortadd(mpd_uint_t *w, mpd_size_t m, mpd_uint_t v) { mpd_uint_t s; mpd_uint_t carry = 0; - size_t i; + mpd_size_t i; /* add v to u */ s = w[0] + v; @@ -111,11 +111,11 @@ /* Increment u. The calling function has to handle a possible carry. */ mpd_uint_t -_mpd_baseincr(mpd_uint_t *u, size_t n) +_mpd_baseincr(mpd_uint_t *u, mpd_size_t n) { mpd_uint_t s; mpd_uint_t carry = 1; - size_t i; + mpd_size_t i; assert(n > 0); @@ -135,11 +135,11 @@ * number in u >= number in v; */ void -_mpd_basesub(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, size_t m, size_t n) +_mpd_basesub(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, mpd_size_t m, mpd_size_t n) { mpd_uint_t d; mpd_uint_t borrow = 0; - size_t i; + mpd_size_t i; assert(m > 0 && n > 0); @@ -166,11 +166,11 @@ * further, but eventually w can absorb the final borrow. */ void -_mpd_basesubfrom(mpd_uint_t *w, const mpd_uint_t *u, size_t n) +_mpd_basesubfrom(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n) { mpd_uint_t d; mpd_uint_t borrow = 0; - size_t i; + mpd_size_t i; if (n == 0) return; @@ -190,11 +190,11 @@ /* w := product of u (len n) and v (single word) */ void -_mpd_shortmul(mpd_uint_t *w, const mpd_uint_t *u, size_t n, mpd_uint_t v) +_mpd_shortmul(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n, mpd_uint_t v) { mpd_uint_t hi, lo; mpd_uint_t carry = 0; - size_t i; + mpd_size_t i; assert(n > 0); @@ -215,11 +215,11 @@ * w must be initialized to zero */ void -_mpd_basemul(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, size_t m, size_t n) +_mpd_basemul(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, mpd_size_t m, mpd_size_t n) { mpd_uint_t hi, lo; mpd_uint_t carry; - size_t i, j; + mpd_size_t i, j; assert(m > 0 && n > 0); @@ -244,15 +244,15 @@ * w := quotient of u (len n) divided by a single word v */ mpd_uint_t -_mpd_shortdiv(mpd_uint_t *w, const mpd_uint_t *u, size_t n, mpd_uint_t v) +_mpd_shortdiv(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n, mpd_uint_t v) { mpd_uint_t hi, lo; mpd_uint_t rem = 0; - size_t i; + mpd_size_t i; assert(n > 0); - for (i=n-1; i != SIZE_MAX; i--) { + for (i=n-1; i != MPD_SIZE_MAX; i--) { _mpd_mul_words(&hi, &lo, rem, MPD_RADIX); lo = u[i] + lo; @@ -276,7 +276,7 @@ */ int _mpd_basedivmod(mpd_uint_t *q, mpd_uint_t *r, const mpd_uint_t *uconst, const mpd_uint_t *vconst, - size_t nplusm, size_t n) + mpd_size_t nplusm, mpd_size_t n) { mpd_uint_t ustatic[MPD_MINALLOC_MAX]; mpd_uint_t vstatic[MPD_MINALLOC_MAX]; @@ -285,7 +285,7 @@ mpd_uint_t d, qhat, rhat, w2[2]; mpd_uint_t hi, lo, x; mpd_uint_t carry; - size_t i, j, m; + mpd_size_t i, j, m; int retval = 0; assert(n > 1 && nplusm >= n); @@ -311,7 +311,7 @@ /* D2: loop */ rhat = 0; - for (j=m; j != SIZE_MAX; j--) { + for (j=m; j != MPD_SIZE_MAX; j--) { /* D3: calculate qhat and rhat */ rhat = _mpd_shortdiv(w2, u+j+n-1, 2, v[n-1]); @@ -375,7 +375,7 @@ /* Leftshift of src by shift digits; src may equal dest. */ void -_mpd_baseshiftl(mpd_uint_t *dest, mpd_uint_t *src, size_t n, size_t m, size_t shift) +_mpd_baseshiftl(mpd_uint_t *dest, mpd_uint_t *src, mpd_size_t n, mpd_size_t m, mpd_size_t shift) { #if defined(__GNUC__) && !defined(__INTEL_COMPILER) /* spurious uninitialized warnings */ @@ -399,7 +399,7 @@ if (h != 0) { dest[n--] = h; } - for (; m != SIZE_MAX; m--,n--) { + for (; m != MPD_SIZE_MAX; m--,n--) { _mpd_divmod_pow10(&h, &l, src[m], MPD_RDIGITS-r); dest[n] = ph * lprev + h; lprev = l; @@ -407,7 +407,7 @@ dest[q] = ph * lprev; } else { - while (--m != SIZE_MAX) { + while (--m != MPD_SIZE_MAX) { dest[m+q] = src[m]; } } @@ -417,7 +417,7 @@ /* Rightshift of src by shift digits; src may equal dest. */ mpd_uint_t -_mpd_baseshiftr(mpd_uint_t *dest, mpd_uint_t *src, size_t slen, size_t shift) +_mpd_baseshiftr(mpd_uint_t *dest, mpd_uint_t *src, mpd_size_t slen, mpd_size_t shift) { #if defined(__GNUC__) && !defined(__INTEL_COMPILER) /* spurious uninitialized warnings */ @@ -427,7 +427,7 @@ #endif mpd_uint_t rnd, rest; /* rounding digit, rest */ mpd_uint_t q, r; - size_t i, j; + mpd_size_t i, j; mpd_uint_t ph; assert(slen > 0); @@ -482,11 +482,11 @@ * final carry. */ mpd_uint_t -_mpd_shortadd_b(mpd_uint_t *w, size_t m, mpd_uint_t v, mpd_uint_t b) +_mpd_shortadd_b(mpd_uint_t *w, mpd_size_t m, mpd_uint_t v, mpd_uint_t b) { mpd_uint_t s; mpd_uint_t carry = 0; - size_t i; + mpd_size_t i; /* add v to u */ s = w[0] + v; @@ -505,11 +505,11 @@ /* w := product of u (len n) and v (single word) */ void -_mpd_shortmul_b(mpd_uint_t *w, const mpd_uint_t *u, size_t n, mpd_uint_t v, mpd_uint_t b) +_mpd_shortmul_b(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n, mpd_uint_t v, mpd_uint_t b) { mpd_uint_t hi, lo; mpd_uint_t carry = 0; - size_t i; + mpd_size_t i; assert(n > 0); @@ -529,15 +529,15 @@ * w := quotient of u (len n) divided by a single word v */ mpd_uint_t -_mpd_shortdiv_b(mpd_uint_t *w, const mpd_uint_t *u, size_t n, mpd_uint_t v, mpd_uint_t b) +_mpd_shortdiv_b(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n, mpd_uint_t v, mpd_uint_t b) { mpd_uint_t hi, lo; mpd_uint_t rem = 0; - size_t i; + mpd_size_t i; assert(n > 0); - for (i=n-1; i != SIZE_MAX; i--) { + for (i=n-1; i != MPD_SIZE_MAX; i--) { _mpd_mul_words(&hi, &lo, rem, b); lo = u[i] + lo; From python-checkins at python.org Thu Jan 21 15:48:20 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 14:48:20 -0000 Subject: [Python-checkins] r77623 - python/branches/py3k-cdecimal/Modules/cdecimal/basearith.h Message-ID: Author: stefan.krah Date: Thu Jan 21 15:48:20 2010 New Revision: 77623 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/basearith.h Modified: python/branches/py3k-cdecimal/Modules/cdecimal/basearith.h ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/basearith.h (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/basearith.h Thu Jan 21 15:48:20 2010 @@ -13,21 +13,21 @@ #include "typearith.h" -mpd_uint_t _mpd_baseadd(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, size_t m, size_t n); -void _mpd_baseaddto(mpd_uint_t *w, const mpd_uint_t *u, size_t n); -mpd_uint_t _mpd_shortadd(mpd_uint_t *w, size_t m, mpd_uint_t v); -mpd_uint_t _mpd_shortadd_b(mpd_uint_t *w, size_t m, mpd_uint_t v, mpd_uint_t b); -mpd_uint_t _mpd_baseincr(mpd_uint_t *u, size_t n); -void _mpd_basesub(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, size_t m, size_t n); -void _mpd_basesubfrom(mpd_uint_t *w, const mpd_uint_t *u, size_t n); -void _mpd_basemul(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, size_t m, size_t n); -void _mpd_shortmul(mpd_uint_t *w, const mpd_uint_t *u, size_t n, mpd_uint_t v); -void _mpd_shortmul_b(mpd_uint_t *w, const mpd_uint_t *u, size_t n, mpd_uint_t v, mpd_uint_t b); -mpd_uint_t _mpd_shortdiv(mpd_uint_t *w, const mpd_uint_t *u, size_t n, mpd_uint_t v); -mpd_uint_t _mpd_shortdiv_b(mpd_uint_t *w, const mpd_uint_t *u, size_t n, mpd_uint_t v, mpd_uint_t b); -int _mpd_basedivmod(mpd_uint_t *q, mpd_uint_t *r, const mpd_uint_t *uconst, const mpd_uint_t *vconst, size_t nplusm, size_t n); -void _mpd_baseshiftl(mpd_uint_t *dest, mpd_uint_t *src, size_t n, size_t m, size_t shift); -mpd_uint_t _mpd_baseshiftr(mpd_uint_t *dest, mpd_uint_t *src, size_t slen, size_t shift); +mpd_uint_t _mpd_baseadd(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, mpd_size_t m, mpd_size_t n); +void _mpd_baseaddto(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n); +mpd_uint_t _mpd_shortadd(mpd_uint_t *w, mpd_size_t m, mpd_uint_t v); +mpd_uint_t _mpd_shortadd_b(mpd_uint_t *w, mpd_size_t m, mpd_uint_t v, mpd_uint_t b); +mpd_uint_t _mpd_baseincr(mpd_uint_t *u, mpd_size_t n); +void _mpd_basesub(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, mpd_size_t m, mpd_size_t n); +void _mpd_basesubfrom(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n); +void _mpd_basemul(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, mpd_size_t m, mpd_size_t n); +void _mpd_shortmul(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n, mpd_uint_t v); +void _mpd_shortmul_b(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n, mpd_uint_t v, mpd_uint_t b); +mpd_uint_t _mpd_shortdiv(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n, mpd_uint_t v); +mpd_uint_t _mpd_shortdiv_b(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n, mpd_uint_t v, mpd_uint_t b); +int _mpd_basedivmod(mpd_uint_t *q, mpd_uint_t *r, const mpd_uint_t *uconst, const mpd_uint_t *vconst, mpd_size_t nplusm, mpd_size_t n); +void _mpd_baseshiftl(mpd_uint_t *dest, mpd_uint_t *src, mpd_size_t n, mpd_size_t m, mpd_size_t shift); +mpd_uint_t _mpd_baseshiftr(mpd_uint_t *dest, mpd_uint_t *src, mpd_size_t slen, mpd_size_t shift); From python-checkins at python.org Thu Jan 21 15:50:42 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 14:50:42 -0000 Subject: [Python-checkins] r77624 - python/branches/py3k-cdecimal/Modules/cdecimal/bits.h Message-ID: Author: stefan.krah Date: Thu Jan 21 15:50:41 2010 New Revision: 77624 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/bits.h Modified: python/branches/py3k-cdecimal/Modules/cdecimal/bits.h ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/bits.h (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/bits.h Thu Jan 21 15:50:41 2010 @@ -9,12 +9,12 @@ #include -#include "vccompat.h" +#include "mpdecimal.h" /* Check if n is a power of 2 */ static inline int -ispower2(size_t n) +ispower2(mpd_size_t n) { return n != 0 && (n & (n-1)) == 0; } @@ -24,10 +24,10 @@ * Caller has to make sure that n is not 0. */ static inline int -std_bsr(size_t n) +std_bsr(mpd_size_t n) { int pos = 0; - size_t tmp; + mpd_size_t tmp; #ifdef CONFIG_64 tmp = n >> 32; @@ -53,7 +53,7 @@ * Caller has to make sure that n is not 0. */ static inline int -std_bsf(size_t n) +std_bsf(mpd_size_t n) { int pos; @@ -77,15 +77,15 @@ } -#ifdef __GNUC__ +#if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__)) /* * Bit scan reverse. * Caller has to make sure that a is not 0. */ static inline int -x86_bsr(size_t a) +x86_bsr(mpd_size_t a) { - size_t retval; + mpd_size_t retval; __asm__ ( #ifdef CONFIG_64 @@ -106,9 +106,9 @@ * Caller has to make sure that a is not 0. */ static inline int -x86_bsf(size_t a) +x86_bsf(mpd_size_t a) { - size_t retval; + mpd_size_t retval; __asm__ ( #ifdef CONFIG_64 @@ -119,11 +119,11 @@ :"=r" (retval) :"r" (a) :"cc" - ); + ); return (int)retval; } -#endif /* __GNUC__ */ +#endif /* __GNUC__ (amd64|i386) */ #ifdef _MSC_VER @@ -133,7 +133,7 @@ * Caller has to make sure that a is not 0. */ static inline int __cdecl -x86_bsr(size_t a) +x86_bsr(mpd_size_t a) { unsigned long retval; @@ -151,7 +151,7 @@ * Caller has to make sure that a is not 0. */ static inline int __cdecl -x86_bsf(size_t a) +x86_bsf(mpd_size_t a) { unsigned long retval; From python-checkins at python.org Thu Jan 21 16:03:04 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:03:04 -0000 Subject: [Python-checkins] r77625 - python/branches/py3k-cdecimal/Modules/cdecimal/cdecimal.c Message-ID: Author: stefan.krah Date: Thu Jan 21 16:03:04 2010 New Revision: 77625 Log: Adapt conversions to mpd_ssize_t for 64-bit+CONFIG_32+ANSI. ValueError -> TypeError in two places in from_tuple. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/cdecimal.c Modified: python/branches/py3k-cdecimal/Modules/cdecimal/cdecimal.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/cdecimal.c (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/cdecimal.c Thu Jan 21 16:03:04 2010 @@ -18,13 +18,9 @@ #if defined(_MSC_VER) && defined (CONFIG_64) #define _PyLong_AsMpdSsize PyLong_AsLongLong - #define _PyInt_AsMpdSsize PyInt_AsSsize_t - #define _PyInt_FromMpdSsize PyInt_FromSsize_t #define _PyLong_FromMpdSsize PyLong_FromSsize_t #else #define _PyLong_AsMpdSsize PyLong_AsLong - #define _PyInt_AsMpdSsize PyInt_AsLong - #define _PyInt_FromMpdSsize PyInt_FromLong #define _PyLong_FromMpdSsize PyLong_FromLong #endif @@ -279,7 +275,11 @@ static mpd_ssize_t PyLong_AsMpdSsize(PyObject *v) { +#if MPD_SIZE_MAX == SIZE_MAX mpd_ssize_t x; +#else + int64_t x; +#endif if (!PyLong_Check(v)) { PyErr_SetString(PyExc_TypeError, "long argument required"); @@ -290,6 +290,12 @@ if (PyErr_Occurred()) { return MPD_SSIZE_MAX; } +#if MPD_SIZE_MAX < SIZE_MAX + if (x < MPD_SSIZE_MIN || x > MPD_SSIZE_MAX) { + PyErr_SetString(PyExc_ValueError, "argument out of range"); + return MPD_SSIZE_MAX; + } +#endif return x; } @@ -1846,8 +1852,13 @@ } tmp = PyTuple_GET_ITEM(v, 0); + if (!PyLong_Check(tmp)) { + PyErr_SetString(PyExc_TypeError, + "sign must be 0 or 1"); + return NULL; + } sign = PyLong_AsLong(tmp); - if (!PyLong_Check(tmp) || (sign != 0 && sign != 1)) { + if (sign != 0 && sign != 1) { PyErr_SetString(PyExc_ValueError, "sign must be 0 or 1"); return NULL; @@ -1873,7 +1884,7 @@ else { Py_DECREF(tmp); PyErr_SetString(PyExc_ValueError, - "string argument in the third position" + "string argument in the third position " "must be 'F', 'n' or 'N'"); return NULL; } @@ -1882,10 +1893,7 @@ else { exp = PyLong_AsMpdSsize(tmp); if (PyErr_Occurred()) { - PyErr_SetString(PyExc_ValueError, - "exponent not an integer or " - "out of range"); - return NULL; + return NULL; } } @@ -1915,6 +1923,12 @@ } for (i = 0; i < tsize; i++) { tmp = PyTuple_GET_ITEM(dtuple, i); + if (!PyLong_Check(tmp)) { + PyMem_Free(decstring); + PyErr_SetString(PyExc_TypeError, + "coefficient must be a tuple of digits"); + return NULL; + } l = PyLong_AsLong(tmp); if (l < 0 || l > 9) { PyMem_Free(decstring); @@ -2674,7 +2688,7 @@ declen = strlen(cp); err = 0; - cp = mpd_realloc(cp, declen+dtaglen+3, sizeof *cp, &err); + cp = mpd_realloc(cp, (mpd_size_t)(declen+dtaglen+3), sizeof *cp, &err); if (err) { mpd_free(cp); PyErr_NoMemory(); @@ -2715,8 +2729,6 @@ PyDecObject *a = (PyDecObject *)self; PyDecObject *result; PyObject *x = NULL; - mpd_uint_t dq[1] = {1}; - mpd_t q = {MPD_STATIC|MPD_CONST_DATA,0,1,1,1,dq}; uint32_t status = 0; mpd_context_t *ctx; @@ -2727,15 +2739,24 @@ ctx = mpd_ctx(); if (x) { + mpd_uint_t dq[1] = {1}; + mpd_t q = {MPD_STATIC|MPD_CONST_DATA,0,1,1,1,dq}; + mpd_ssize_t y; + if (!PyLong_Check(x)) { PyErr_SetString(PyExc_ValueError, "optional arg must be an integer"); return NULL; } + + y = PyLong_AsMpdSsize(x); + if (y == MPD_SSIZE_MAX || y == MPD_SSIZE_MIN) { + return NULL; + } if ((result = dec_alloc()) == NULL) { return NULL; } - q.exp = -_PyLong_AsMpdSsize(x); + q.exp = -y; mpd_qquantize(result->dec, a->dec, &q, ctx, &status); if (dec_addstatus(ctx, status)) { Py_DECREF(result); From python-checkins at python.org Thu Jan 21 16:03:52 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:03:52 -0000 Subject: [Python-checkins] r77626 - python/branches/py3k-cdecimal/Modules/cdecimal/constants.c Message-ID: Author: stefan.krah Date: Thu Jan 21 16:03:51 2010 New Revision: 77626 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/constants.c Modified: python/branches/py3k-cdecimal/Modules/cdecimal/constants.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/constants.c (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/constants.c Thu Jan 21 16:03:51 2010 @@ -24,7 +24,7 @@ const mpd_uint_t UH_P1P2 = 18446744052234715141ULL; /* (P1*P2) / 2^64 */ /* transpose.c */ - const size_t mpd_bits[64] = { + const mpd_size_t mpd_bits[64] = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824, @@ -74,7 +74,7 @@ const mpd_uint_t UH_P1P2 = 990904320ULL; /* (P1*P2) / 2^32 */ /* transpose.c */ - const size_t mpd_bits[32] = { + const mpd_size_t mpd_bits[32] = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824, From python-checkins at python.org Thu Jan 21 16:04:15 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:04:15 -0000 Subject: [Python-checkins] r77627 - python/branches/py3k-cdecimal/Modules/cdecimal/constants.h Message-ID: Author: stefan.krah Date: Thu Jan 21 16:04:15 2010 New Revision: 77627 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/constants.h Modified: python/branches/py3k-cdecimal/Modules/cdecimal/constants.h ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/constants.h (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/constants.h Thu Jan 21 16:04:15 2010 @@ -56,7 +56,7 @@ extern const mpd_uint_t mpd_moduli[]; extern const mpd_uint_t mpd_roots[]; -extern const size_t mpd_bits[]; +extern const mpd_size_t mpd_bits[]; extern const mpd_uint_t mpd_pow10[]; extern const mpd_uint_t INV_P1_MOD_P2; From python-checkins at python.org Thu Jan 21 16:06:13 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:06:13 -0000 Subject: [Python-checkins] r77628 - python/branches/py3k-cdecimal/Modules/cdecimal/convolute.c Message-ID: Author: stefan.krah Date: Thu Jan 21 16:06:12 2010 New Revision: 77628 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/convolute.c Modified: python/branches/py3k-cdecimal/Modules/cdecimal/convolute.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/convolute.c (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/convolute.c Thu Jan 21 16:06:12 2010 @@ -18,16 +18,16 @@ /* Convolute the data in c1 and c2. Result is in c1. */ int -fnt_convolute(mpd_uint_t *c1, mpd_uint_t *c2, size_t n, int modnum) +fnt_convolute(mpd_uint_t *c1, mpd_uint_t *c2, mpd_size_t n, int modnum) { - int (*fnt)(mpd_uint_t *, size_t, int, int); - int (*inv_fnt)(mpd_uint_t *, size_t, int, int); + int (*fnt)(mpd_uint_t *, mpd_size_t, int, int); + int (*inv_fnt)(mpd_uint_t *, mpd_size_t, int, int); #ifdef PPRO double dmod; uint32_t dinvmod[3]; #endif mpd_uint_t n_inv, umod; - size_t i; + mpd_size_t i; SETMODULUS(modnum); @@ -85,16 +85,16 @@ /* Autoconvolute the data in c1. Result is in c1. */ int -fnt_autoconvolute(mpd_uint_t *c1, size_t n, int modnum) +fnt_autoconvolute(mpd_uint_t *c1, mpd_size_t n, int modnum) { - int (*fnt)(mpd_uint_t *, size_t, int, int); - int (*inv_fnt)(mpd_uint_t *, size_t, int, int); + int (*fnt)(mpd_uint_t *, mpd_size_t, int, int); + int (*inv_fnt)(mpd_uint_t *, mpd_size_t, int, int); #ifdef PPRO double dmod; uint32_t dinvmod[3]; #endif mpd_uint_t n_inv, umod; - size_t i; + mpd_size_t i; SETMODULUS(modnum); From python-checkins at python.org Thu Jan 21 16:06:34 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:06:34 -0000 Subject: [Python-checkins] r77629 - python/branches/py3k-cdecimal/Modules/cdecimal/convolute.h Message-ID: Author: stefan.krah Date: Thu Jan 21 16:06:34 2010 New Revision: 77629 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/convolute.h Modified: python/branches/py3k-cdecimal/Modules/cdecimal/convolute.h ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/convolute.h (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/convolute.h Thu Jan 21 16:06:34 2010 @@ -13,8 +13,8 @@ #define SIX_STEP_THRESHOLD 4096 -int fnt_convolute(mpd_uint_t *c1, mpd_uint_t *c2, size_t n, int modnum); -int fnt_autoconvolute(mpd_uint_t *c1, size_t n, int modnum); +int fnt_convolute(mpd_uint_t *c1, mpd_uint_t *c2, mpd_size_t n, int modnum); +int fnt_autoconvolute(mpd_uint_t *c1, mpd_size_t n, int modnum); #endif From python-checkins at python.org Thu Jan 21 16:07:02 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:07:02 -0000 Subject: [Python-checkins] r77630 - python/branches/py3k-cdecimal/Modules/cdecimal/crt.c Message-ID: Author: stefan.krah Date: Thu Jan 21 16:07:02 2010 New Revision: 77630 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/crt.c Modified: python/branches/py3k-cdecimal/Modules/cdecimal/crt.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/crt.c (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/crt.c Thu Jan 21 16:07:02 2010 @@ -116,7 +116,7 @@ * The carries do not increase. (c_i + zmax) cannot overflow. */ void -crt3(mpd_uint_t *x1, mpd_uint_t *x2, mpd_uint_t *x3, size_t rsize) +crt3(mpd_uint_t *x1, mpd_uint_t *x2, mpd_uint_t *x3, mpd_size_t rsize) { mpd_uint_t p1 = mpd_moduli[P1]; mpd_uint_t umod; @@ -129,7 +129,7 @@ mpd_uint_t z[3], t[3]; mpd_uint_t carry[3] = {0,0,0}; mpd_uint_t hi, lo; - size_t i; + mpd_size_t i; for (i = 0; i < rsize; i++) { From python-checkins at python.org Thu Jan 21 16:07:22 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:07:22 -0000 Subject: [Python-checkins] r77631 - python/branches/py3k-cdecimal/Modules/cdecimal/crt.h Message-ID: Author: stefan.krah Date: Thu Jan 21 16:07:22 2010 New Revision: 77631 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/crt.h Modified: python/branches/py3k-cdecimal/Modules/cdecimal/crt.h ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/crt.h (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/crt.h Thu Jan 21 16:07:22 2010 @@ -11,7 +11,7 @@ #include #include "mpdecimal.h" -void crt3(mpd_uint_t *x1, mpd_uint_t *x2, mpd_uint_t *x3, size_t nmemb); +void crt3(mpd_uint_t *x1, mpd_uint_t *x2, mpd_uint_t *x3, mpd_size_t nmemb); #endif From python-checkins at python.org Thu Jan 21 16:08:09 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:08:09 -0000 Subject: [Python-checkins] r77632 - python/branches/py3k-cdecimal/Modules/cdecimal/difradix2.c Message-ID: Author: stefan.krah Date: Thu Jan 21 16:08:09 2010 New Revision: 77632 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/difradix2.c Modified: python/branches/py3k-cdecimal/Modules/cdecimal/difradix2.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/difradix2.c (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/difradix2.c Thu Jan 21 16:08:09 2010 @@ -19,11 +19,11 @@ * Chapter 1.13.4. [http://www.jjj.de/fxt/] */ static inline void -bitreverse_permute(mpd_uint_t a[], size_t n) +bitreverse_permute(mpd_uint_t a[], mpd_size_t n) { - size_t x = 0; - size_t r = 0; - size_t t; + mpd_size_t x = 0; + mpd_size_t r = 0; + mpd_uint_t t; do { if (r > x) { @@ -39,7 +39,7 @@ /* Fast Number Theoretic Transform, decimation in frequency. */ void -fnt_dif2(mpd_uint_t a[], size_t n, struct fnt_params *tparams) +fnt_dif2(mpd_uint_t a[], mpd_size_t n, struct fnt_params *tparams) { mpd_uint_t *wtable = tparams->wtable; mpd_uint_t umod; @@ -47,10 +47,10 @@ double dmod; uint32_t dinvmod[3]; #endif - mpd_uint_t m ,mhalf; mpd_uint_t u0, u1, v0, v1; - mpd_uint_t j, r; mpd_uint_t w, w0, w1, wstep; + mpd_size_t m ,mhalf; + mpd_size_t j, r; assert(ispower2(n)); From python-checkins at python.org Thu Jan 21 16:08:33 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:08:33 -0000 Subject: [Python-checkins] r77633 - python/branches/py3k-cdecimal/Modules/cdecimal/difradix2.h Message-ID: Author: stefan.krah Date: Thu Jan 21 16:08:33 2010 New Revision: 77633 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/difradix2.h Modified: python/branches/py3k-cdecimal/Modules/cdecimal/difradix2.h ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/difradix2.h (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/difradix2.h Thu Jan 21 16:08:33 2010 @@ -13,7 +13,7 @@ #include "numbertheory.h" -void fnt_dif2(mpd_uint_t a[], size_t n, struct fnt_params *tparams); +void fnt_dif2(mpd_uint_t a[], mpd_size_t n, struct fnt_params *tparams); #endif From python-checkins at python.org Thu Jan 21 16:11:25 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:11:25 -0000 Subject: [Python-checkins] r77634 - python/branches/py3k-cdecimal/Modules/cdecimal/fnt.c Message-ID: Author: stefan.krah Date: Thu Jan 21 16:11:24 2010 New Revision: 77634 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/fnt.c Modified: python/branches/py3k-cdecimal/Modules/cdecimal/fnt.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/fnt.c (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/fnt.c Thu Jan 21 16:11:24 2010 @@ -16,7 +16,7 @@ /* forward transform, sign = -1 */ int -std_fnt(mpd_uint_t *a, size_t n, int modnum, int ordered UNUSED) +std_fnt(mpd_uint_t *a, mpd_size_t n, int modnum, int ordered UNUSED) { struct fnt_params *tparams; @@ -35,7 +35,7 @@ /* reverse transform, sign = 1 */ int -std_inv_fnt(mpd_uint_t *a, size_t n, int modnum, int ordered UNUSED) +std_inv_fnt(mpd_uint_t *a, mpd_size_t n, int modnum, int ordered UNUSED) { struct fnt_params *tparams; From python-checkins at python.org Thu Jan 21 16:11:45 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:11:45 -0000 Subject: [Python-checkins] r77635 - python/branches/py3k-cdecimal/Modules/cdecimal/fnt.h Message-ID: Author: stefan.krah Date: Thu Jan 21 16:11:44 2010 New Revision: 77635 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/fnt.h Modified: python/branches/py3k-cdecimal/Modules/cdecimal/fnt.h ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/fnt.h (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/fnt.h Thu Jan 21 16:11:44 2010 @@ -11,8 +11,8 @@ #include #include "mpdecimal.h" -int std_fnt(mpd_uint_t a[], size_t n, int modnum, int ordered UNUSED); -int std_inv_fnt(mpd_uint_t a[], size_t n, int modnum, int ordered UNUSED); +int std_fnt(mpd_uint_t a[], mpd_size_t n, int modnum, int ordered UNUSED); +int std_inv_fnt(mpd_uint_t a[], mpd_size_t n, int modnum, int ordered UNUSED); #endif From python-checkins at python.org Thu Jan 21 16:12:26 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:12:26 -0000 Subject: [Python-checkins] r77636 - python/branches/py3k-cdecimal/Modules/cdecimal/fourstep.c Message-ID: Author: stefan.krah Date: Thu Jan 21 16:12:26 2010 New Revision: 77636 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/fourstep.c Modified: python/branches/py3k-cdecimal/Modules/cdecimal/fourstep.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/fourstep.c (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/fourstep.c Thu Jan 21 16:12:26 2010 @@ -118,10 +118,10 @@ /* forward transform, sign = -1; transform length = 3 * 2^n */ int -four_step_fnt(mpd_uint_t *a, size_t n, int modnum, int ordered) +four_step_fnt(mpd_uint_t *a, mpd_size_t n, int modnum, int ordered) { - size_t R = 3; /* number of rows */ - size_t C = n / 3; /* number of columns */ + mpd_size_t R = 3; /* number of rows */ + mpd_size_t C = n / 3; /* number of columns */ mpd_uint_t w3table[3]; mpd_uint_t kernel, w0, w1, wstep; mpd_uint_t *s, *p0, *p1, *p2; @@ -130,7 +130,7 @@ double dmod; uint32_t dinvmod[3]; #endif - size_t i, k; + mpd_size_t i, k; assert(n >= 48); @@ -177,10 +177,10 @@ /* backward transform, sign = 1; transform length = 3 * 2^n */ int -inv_four_step_fnt(mpd_uint_t *a, size_t n, int modnum, int ordered) +inv_four_step_fnt(mpd_uint_t *a, mpd_size_t n, int modnum, int ordered) { - size_t R = 3; /* number of rows */ - size_t C = n / 3; /* number of columns */ + mpd_size_t R = 3; /* number of rows */ + mpd_size_t C = n / 3; /* number of columns */ mpd_uint_t w3table[3]; mpd_uint_t kernel, w0, w1, wstep; mpd_uint_t *s, *p0, *p1, *p2; @@ -189,7 +189,7 @@ double dmod; uint32_t dinvmod[3]; #endif - size_t i, k; + mpd_size_t i, k; assert(n >= 48); From python-checkins at python.org Thu Jan 21 16:12:48 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:12:48 -0000 Subject: [Python-checkins] r77637 - python/branches/py3k-cdecimal/Modules/cdecimal/fourstep.h Message-ID: Author: stefan.krah Date: Thu Jan 21 16:12:47 2010 New Revision: 77637 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/fourstep.h Modified: python/branches/py3k-cdecimal/Modules/cdecimal/fourstep.h ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/fourstep.h (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/fourstep.h Thu Jan 21 16:12:47 2010 @@ -11,8 +11,8 @@ #include #include "mpdecimal.h" -int four_step_fnt(mpd_uint_t *a, size_t n, int modnum, int ordered); -int inv_four_step_fnt(mpd_uint_t *a, size_t n, int modnum, int ordered); +int four_step_fnt(mpd_uint_t *a, mpd_size_t n, int modnum, int ordered); +int inv_four_step_fnt(mpd_uint_t *a, mpd_size_t n, int modnum, int ordered); #endif From python-checkins at python.org Thu Jan 21 16:18:44 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:18:44 -0000 Subject: [Python-checkins] r77638 - python/branches/py3k-cdecimal/Modules/cdecimal/io.c Message-ID: Author: stefan.krah Date: Thu Jan 21 16:18:39 2010 New Revision: 77638 Log: Guard against absurd combinations of min_width and multi-byte separators. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/io.c Modified: python/branches/py3k-cdecimal/Modules/cdecimal/io.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/io.c (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/io.c Thu Jan 21 16:18:39 2010 @@ -17,6 +17,7 @@ #include "memory.h" #include "mpdecimal.h" #include "typearith.h" +#include "io.h" /* @@ -54,7 +55,6 @@ return retval; } - /* * Scan 'len' words. The most significant word contains 'r' digits, * the remaining words are full words. Skip dpoint. The string 's' must @@ -780,6 +780,13 @@ return 1; } +/* + * The following functions assume that spec->min_width <= MPD_MAX_PREC, which + * is made sure in mpd_qformat_spec. Then, even with a spec that inserts a + * four-byte separator after each digit, nbytes in the following struct + * cannot overflow. + */ + /* Multibyte string */ typedef struct { mpd_ssize_t nbytes; /* length in bytes */ @@ -977,11 +984,12 @@ n_fill = strlen(spec->fill); add_chars = (spec->min_width - result->nchars); - add_bytes = mul_size_t(add_chars, n_fill); + /* max value: MPD_MAX_PREC * 4 */ + add_bytes = add_chars * n_fill; - cp = result->data = mpd_realloc(result->data, - result->nbytes+add_bytes+1, - sizeof *result->data, &err); + cp = result->data = mpd_realloc(result->data, + result->nbytes+add_bytes+1, + sizeof *result->data, &err); if (err) { *status |= MPD_Malloc_error; mpd_free(result->data); @@ -1048,6 +1056,10 @@ int flags = 0; + if (spec->min_width > MPD_MAX_PREC) { + return NULL; + } + if (!mpd_qcopy(&tmp, dec, status)) { return NULL; } From python-checkins at python.org Thu Jan 21 16:20:21 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:20:21 -0000 Subject: [Python-checkins] r77639 - python/branches/py3k-cdecimal/Modules/cdecimal/io.h Message-ID: Author: stefan.krah Date: Thu Jan 21 16:20:20 2010 New Revision: 77639 Log: Adapt mpd_strtossize for 64-bit+CONFIG_32+ANSI. Added: python/branches/py3k-cdecimal/Modules/cdecimal/io.h (contents, props changed) Added: python/branches/py3k-cdecimal/Modules/cdecimal/io.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/io.h Thu Jan 21 16:20:20 2010 @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#ifndef IO_H +#define IO_H + + +#include "mpdecimal.h" + + +#if SIZE_MAX == MPD_SIZE_MAX + #define mpd_strtossize _mpd_strtossize +#else +static inline mpd_ssize_t +mpd_strtossize(const char *s, char **end, int base) +{ + int64_t retval; + + errno = 0; + retval = _mpd_strtossize(s, end, base); + if (errno == 0 && (retval > MPD_SSIZE_MAX || retval < MPD_SSIZE_MIN)) { + errno = ERANGE; + } + if (errno == ERANGE) { + return (retval < 0) ? MPD_SSIZE_MIN : MPD_SSIZE_MAX; + } + + return (mpd_ssize_t)retval; +} +#endif + + +#endif From python-checkins at python.org Thu Jan 21 16:21:31 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:21:31 -0000 Subject: [Python-checkins] r77640 - python/branches/py3k-cdecimal/Modules/cdecimal/memory.c Message-ID: Author: stefan.krah Date: Thu Jan 21 16:21:31 2010 New Revision: 77640 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/memory.c Modified: python/branches/py3k-cdecimal/Modules/cdecimal/memory.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/memory.c (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/memory.c Thu Jan 21 16:21:31 2010 @@ -26,6 +26,11 @@ void *ptr; size_t req; +#if MPD_SIZE_MAX < SIZE_MAX + if (size > MPD_SIZE_MAX) { + return NULL; + } +#endif req = mul_size_t(nmemb, size); if ((ptr = mpd_mallocfunc(req)) == NULL) { return NULL; @@ -39,10 +44,10 @@ /* malloc with overflow checking */ void * -mpd_alloc(size_t nmemb, size_t size) +mpd_alloc(mpd_size_t nmemb, mpd_size_t size) { void *ptr; - size_t req; + mpd_size_t req; req = mul_size_t(nmemb, size); if ((ptr = mpd_mallocfunc(req)) == NULL) { @@ -54,7 +59,7 @@ /* calloc with overflow checking */ void * -mpd_calloc(size_t nmemb, size_t size) +mpd_calloc(mpd_size_t nmemb, mpd_size_t size) { void *ptr; @@ -67,10 +72,10 @@ /* realloc with overflow checking */ void * -mpd_realloc(void *ptr, size_t nmemb, size_t size, uint8_t *err) +mpd_realloc(void *ptr, mpd_size_t nmemb, mpd_size_t size, uint8_t *err) { void *new; - size_t req; + mpd_size_t req; req = mul_size_t(nmemb, size); if ((new = mpd_reallocfunc(ptr, req)) == NULL) { @@ -83,10 +88,10 @@ /* struct hack malloc with overflow checking */ void * -mpd_sh_alloc(size_t struct_size, size_t nmemb, size_t size) +mpd_sh_alloc(mpd_size_t struct_size, mpd_size_t nmemb, mpd_size_t size) { void *ptr; - size_t req; + mpd_size_t req; req = mul_size_t(nmemb, size); req = add_size_t(req, struct_size); @@ -99,10 +104,10 @@ /* mpd_callocfunc must have overflow checking */ void * -mpd_sh_calloc(size_t struct_size, size_t nmemb, size_t size) +mpd_sh_calloc(mpd_size_t struct_size, mpd_size_t nmemb, mpd_size_t size) { void *ptr; - size_t req; + mpd_size_t req; req = mul_size_t(nmemb, size); req = add_size_t(req, struct_size); @@ -115,10 +120,10 @@ /* struct hack realloc with overflow checking */ void * -mpd_sh_realloc(void *ptr, size_t struct_size, size_t nmemb, size_t size, uint8_t *err) +mpd_sh_realloc(void *ptr, mpd_size_t struct_size, mpd_size_t nmemb, mpd_size_t size, uint8_t *err) { void *new; - size_t req; + mpd_size_t req; req = mul_size_t(nmemb, size); req = add_size_t(req, struct_size); From python-checkins at python.org Thu Jan 21 16:24:31 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:24:31 -0000 Subject: [Python-checkins] r77641 - python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal32.h Message-ID: Author: stefan.krah Date: Thu Jan 21 16:24:31 2010 New Revision: 77641 Log: Enable CONFIG_32+ANSI on 64-bit platforms. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal32.h Modified: python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal32.h ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal32.h (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal32.h Thu Jan 21 16:24:31 2010 @@ -46,11 +46,15 @@ typedef uint32_t mpd_uint_t; /* unsigned mod type */ typedef uint64_t mpd_uuint_t; /* double width unsigned mod type */ +/* enable CONFIG_32+ANSI on 64-bit platforms without resorting to -m32 */ +#define MPD_SIZE_MAX UINT32_MAX +typedef uint32_t mpd_size_t; /* unsigned size type */ + /* type for dec->len, dec->exp, ctx->prec */ #define MPD_SSIZE_MAX INT32_MAX #define MPD_SSIZE_MIN INT32_MIN typedef int32_t mpd_ssize_t; -#define mpd_strtossize strtol +#define _mpd_strtossize strtol /* decimal arithmetic */ #define MPD_RADIX 1000000000UL /* 10**9 */ @@ -67,13 +71,11 @@ #define MPD_MIN_ETINY (MPD_MIN_EMIN-(MPD_MAX_PREC-1)) #define MPD_EXP_INF 1000000001L /* allows for emax=999999999 in the tests */ #define MPD_EXP_CLAMP (-2000000001L) /* allows for emin=-999999999 in the tests */ +#define MPD_MAXIMPORT 94444445L /* ceil((2*MPD_MAX_PREC)/MPD_RDIGITS) */ -#if SIZE_MAX < MPD_SSIZE_MAX - #error "unsupported platform: need size_t >= mpd_ssize_t" -#endif -#if MPD_SSIZE_MAX > MPD_UINT_MAX - #error "unsupported platform: need mpd_ssize_t <= mpd_uint_t" +#if SIZE_MAX < MPD_SIZE_MAX + #error "unsupported platform: need size_t >= mpd_size_t" #endif @@ -270,6 +272,8 @@ void mpd_qset_i32(mpd_t *result, int32_t a, const mpd_context_t *ctx, uint32_t *status); void mpd_qset_uint(mpd_t *result, mpd_uint_t a, const mpd_context_t *ctx, uint32_t *status); void mpd_qset_u32(mpd_t *result, uint32_t a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qset_i64(mpd_t *result, int64_t a, const mpd_context_t *ctx, uint32_t *status); +void mpd_qset_u64(mpd_t *result, uint64_t a, const mpd_context_t *ctx, uint32_t *status); /* quietly assign a C integer type to an mpd_t with a static coefficient */ void mpd_qsset_ssize(mpd_t *result, mpd_ssize_t a, const mpd_context_t *ctx, uint32_t *status); @@ -374,12 +378,12 @@ size_t mpd_sizeinbase(mpd_t *a, uint32_t base); -int mpd_qimport_u16(mpd_t *result, const uint16_t *srcdata, size_t srclen, - uint8_t srcsign, uint32_t base, - const mpd_context_t *ctx, uint32_t *status); -int mpd_qimport_u32(mpd_t *result, const uint32_t *srcdata, size_t srclen, - uint8_t srcsign, uint32_t base, - const mpd_context_t *ctx, uint32_t *status); +void mpd_qimport_u16(mpd_t *result, const uint16_t *srcdata, size_t srclen, + uint8_t srcsign, uint32_t srcbase, + const mpd_context_t *ctx, uint32_t *status); +void mpd_qimport_u32(mpd_t *result, const uint32_t *srcdata, size_t srclen, + uint8_t srcsign, uint32_t srcbase, + const mpd_context_t *ctx, uint32_t *status); size_t mpd_qexport_u16(uint16_t *rdata, size_t rlen, uint32_t base, const mpd_t *src, uint32_t *status); size_t mpd_qexport_u32(uint32_t *rdata, size_t rlen, uint32_t base, @@ -490,19 +494,19 @@ void *mpd_callocfunc_em(size_t nmemb, size_t size); -void *mpd_alloc(size_t nmemb, size_t size); -void *mpd_calloc(size_t nmemb, size_t size); -void *mpd_realloc(void *ptr, size_t nmemb, size_t size, uint8_t *err); -void *mpd_sh_alloc(size_t struct_size, size_t nmemb, size_t size); -void *mpd_sh_calloc(size_t struct_size, size_t nmemb, size_t size); -void *mpd_sh_realloc(void *ptr, size_t struct_size, size_t nmemb, size_t size, uint8_t *err); +void *mpd_alloc(mpd_size_t nmemb, mpd_size_t size); +void *mpd_calloc(mpd_size_t nmemb, mpd_size_t size); +void *mpd_realloc(void *ptr, mpd_size_t nmemb, mpd_size_t size, uint8_t *err); +void *mpd_sh_alloc(mpd_size_t struct_size, mpd_size_t nmemb, mpd_size_t size); +void *mpd_sh_calloc(mpd_size_t struct_size, mpd_size_t nmemb, mpd_size_t size); +void *mpd_sh_realloc(void *ptr, mpd_size_t struct_size, mpd_size_t nmemb, mpd_size_t size, uint8_t *err); mpd_t *mpd_qnew(void); mpd_t *mpd_new(mpd_context_t *ctx); mpd_t *mpd_qnew_size(mpd_ssize_t size); void mpd_del(mpd_t *dec); -void mpd_uint_zero(mpd_uint_t *dest, size_t len); +void mpd_uint_zero(mpd_uint_t *dest, mpd_size_t len); int mpd_qresize(mpd_t *result, mpd_ssize_t size, uint32_t *status); int mpd_qresize_zero(mpd_t *result, mpd_ssize_t size, uint32_t *status); void mpd_minalloc(mpd_t *result); From python-checkins at python.org Thu Jan 21 16:25:08 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:25:08 -0000 Subject: [Python-checkins] r77642 - python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal64.h Message-ID: Author: stefan.krah Date: Thu Jan 21 16:25:07 2010 New Revision: 77642 Log: Enable CONFIG_32+ANSI on 64-bit platforms. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal64.h Modified: python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal64.h ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal64.h (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal64.h Thu Jan 21 16:25:07 2010 @@ -44,11 +44,15 @@ #define MPD_BITS_PER_UINT 64 typedef uint64_t mpd_uint_t; /* unsigned mod type */ +/* enable CONFIG_32+ANSI on 64-bit platforms without resorting to -m32 */ +#define MPD_SIZE_MAX SIZE_MAX +typedef size_t mpd_size_t; /* unsigned size type */ + /* type for exp, digits, len, prec */ #define MPD_SSIZE_MAX INT64_MAX #define MPD_SSIZE_MIN INT64_MIN typedef int64_t mpd_ssize_t; -#define mpd_strtossize strtoll +#define _mpd_strtossize strtoll /* decimal arithmetic */ #define MPD_RADIX 10000000000000000000ULL /* 10**19 */ @@ -65,13 +69,11 @@ #define MPD_MIN_ETINY (MPD_MIN_EMIN-(MPD_MAX_PREC-1)) #define MPD_EXP_INF (MPD_ELIMIT+1) #define MPD_EXP_CLAMP (2*MPD_MIN_ETINY) +#define MPD_MAXIMPORT 105263157894736842L /* (2*MPD_MAX_PREC)/MPD_RDIGITS */ -#if SIZE_MAX < MPD_SSIZE_MAX - #error "unsupported platform: need size_t >= mpd_ssize_t" -#endif -#if MPD_SSIZE_MAX > MPD_UINT_MAX - #error "unsupported platform: need mpd_ssize_t <= mpd_uint_t" +#if MPD_SIZE_MAX != MPD_UINT_MAX + #error "unsupported platform: need mpd_size_t == mpd_uint_t" #endif @@ -384,12 +386,12 @@ size_t mpd_sizeinbase(mpd_t *a, uint32_t base); -int mpd_qimport_u16(mpd_t *result, const uint16_t *srcdata, size_t srclen, - uint8_t srcsign, uint32_t base, - const mpd_context_t *ctx, uint32_t *status); -int mpd_qimport_u32(mpd_t *result, const uint32_t *srcdata, size_t srclen, - uint8_t srcsign, uint32_t base, - const mpd_context_t *ctx, uint32_t *status); +void mpd_qimport_u16(mpd_t *result, const uint16_t *srcdata, size_t srclen, + uint8_t srcsign, uint32_t srcbase, + const mpd_context_t *ctx, uint32_t *status); +void mpd_qimport_u32(mpd_t *result, const uint32_t *srcdata, size_t srclen, + uint8_t srcsign, uint32_t srcbase, + const mpd_context_t *ctx, uint32_t *status); size_t mpd_qexport_u16(uint16_t *rdata, size_t rlen, uint32_t base, const mpd_t *src, uint32_t *status); size_t mpd_qexport_u32(uint32_t *rdata, size_t rlen, uint32_t base, @@ -500,19 +502,19 @@ void *mpd_callocfunc_em(size_t nmemb, size_t size); -void *mpd_alloc(size_t nmemb, size_t size); -void *mpd_calloc(size_t nmemb, size_t size); -void *mpd_realloc(void *ptr, size_t nmemb, size_t size, uint8_t *err); -void *mpd_sh_alloc(size_t struct_size, size_t nmemb, size_t size); -void *mpd_sh_calloc(size_t struct_size, size_t nmemb, size_t size); -void *mpd_sh_realloc(void *ptr, size_t struct_size, size_t nmemb, size_t size, uint8_t *err); +void *mpd_alloc(mpd_size_t nmemb, mpd_size_t size); +void *mpd_calloc(mpd_size_t nmemb, mpd_size_t size); +void *mpd_realloc(void *ptr, mpd_size_t nmemb, mpd_size_t size, uint8_t *err); +void *mpd_sh_alloc(mpd_size_t struct_size, mpd_size_t nmemb, mpd_size_t size); +void *mpd_sh_calloc(mpd_size_t struct_size, mpd_size_t nmemb, mpd_size_t size); +void *mpd_sh_realloc(void *ptr, mpd_size_t struct_size, mpd_size_t nmemb, mpd_size_t size, uint8_t *err); mpd_t *mpd_qnew(void); mpd_t *mpd_new(mpd_context_t *ctx); mpd_t *mpd_qnew_size(mpd_ssize_t size); void mpd_del(mpd_t *dec); -void mpd_uint_zero(mpd_uint_t *dest, size_t len); +void mpd_uint_zero(mpd_uint_t *dest, mpd_size_t len); int mpd_qresize(mpd_t *result, mpd_ssize_t size, uint32_t *status); int mpd_qresize_zero(mpd_t *result, mpd_ssize_t size, uint32_t *status); void mpd_minalloc(mpd_t *result); From python-checkins at python.org Thu Jan 21 16:35:17 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:35:17 -0000 Subject: [Python-checkins] r77643 - python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal.c Message-ID: Author: stefan.krah Date: Thu Jan 21 16:35:17 2010 New Revision: 77643 Log: 1. Enable CONFIG_32+ANSI on 64 bit platforms: - Change size_t to mpd_size_t. - Add mpd_qset_i64 and mpd_qset_u64 for CONFIG_32. - Add several size checks to the conversion functions. 2. Add the Newton division test functions. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal.c Modified: python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal.c (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal.c Thu Jan 21 16:35:17 2010 @@ -17,6 +17,7 @@ #include "memory.h" #include "typearith.h" #include "umodarith.h" +#include "mptest.h" #include "mptypes.h" #include "mpdecimal.h" @@ -397,9 +398,9 @@ /* Fill destination with zeros */ ALWAYS_INLINE void -mpd_uint_zero(mpd_uint_t *dest, size_t len) +mpd_uint_zero(mpd_uint_t *dest, mpd_size_t len) { - size_t i; + mpd_size_t i; for (i = 0; i < len; i++) { dest[i] = 0; @@ -995,23 +996,23 @@ void mpd_qsset_ssize(mpd_t *result, mpd_ssize_t a, const mpd_context_t *ctx, uint32_t *status) { - int adj = 0; + mpd_uint_t u; + uint8_t sign = MPD_POS; - mpd_clear_flags(result); if (a < 0) { if (a == MPD_SSIZE_MIN) { - adj = 1; - a += 1; + u = (mpd_uint_t)MPD_SSIZE_MAX + + (-(MPD_SSIZE_MIN+MPD_SSIZE_MAX)); + } + else { + u = -a; } - result->flags |= MPD_NEG; - a = -a; + sign = MPD_NEG; } - result->exp = 0; - _mpd_div_word(&result->data[1], &result->data[0], a, MPD_RADIX); - result->data[0] += adj; - result->len = (result->data[1] == 0) ? 1 : 2; - mpd_setdigits(result); - + else { + u = a; + } + _ssettriple(result, sign, u, 0); mpd_qfinalize(result, ctx, status); } @@ -1083,21 +1084,87 @@ mpd_qset_uint(result, a, ctx, status); } -#ifdef CONFIG_64 +#ifdef CONFIG_32 +/* set a decimal from a uint64_t */ +static void +_c32setu64(mpd_t *result, uint64_t u, uint32_t *status) +{ + mpd_uint_t w[3]; + uint64_t q; + int i, len; + + len = 0; + do { + q = u / MPD_RADIX; + w[len] = (mpd_uint_t)(u - q * MPD_RADIX); + u = q; len++; + } while (u != 0); + + if (!mpd_qresize(result, len, status)) { + return; + } + for (i = 0; i < len; i++) { + result->data[i] = w[i]; + } + + result->exp = 0; + result->len = len; + mpd_setdigits(result); +} + +static void +_c32_qset_u64(mpd_t *result, uint64_t a, const mpd_context_t *ctx, uint32_t *status) +{ + _c32setu64(result, a, status); + mpd_qfinalize(result, ctx, status); +} + +/* set a decimal from an int64_t */ +static void +_c32_qset_i64(mpd_t *result, int64_t a, const mpd_context_t *ctx, uint32_t *status) +{ + uint64_t u; + uint8_t sign = MPD_POS; + + if (a < 0) { + if (a == INT64_MAX) { + u = (uint64_t)INT64_MAX + (-(INT64_MIN+INT64_MAX)); + } + else { + u = -a; + } + sign = MPD_NEG; + } + else { + u = a; + } + _c32setu64(result, u, status); + mpd_set_sign(result, sign); + mpd_qfinalize(result, ctx, status); +} +#endif /* CONFIG_32 */ + /* quietly set a decimal from an int64_t */ void mpd_qset_i64(mpd_t *result, int64_t a, const mpd_context_t *ctx, uint32_t *status) { +#ifdef CONFIG_64 mpd_qset_ssize(result, a, ctx, status); +#else + _c32_qset_i64(result, a, ctx, status); +#endif } /* quietly set a decimal from a uint64_t */ void mpd_qset_u64(mpd_t *result, uint64_t a, const mpd_context_t *ctx, uint32_t *status) { +#ifdef CONFIG_64 mpd_qset_uint(result, a, ctx, status); -} +#else + _c32_qset_u64(result, a, ctx, status); #endif +} /* @@ -1704,7 +1771,7 @@ * big and small, except that no allocation for the left shift is needed. */ static int -_mpd_basecmp(mpd_uint_t *big, mpd_uint_t *small, size_t n, size_t m, size_t shift) +_mpd_basecmp(mpd_uint_t *big, mpd_uint_t *small, mpd_size_t n, mpd_size_t m, mpd_size_t shift) { #if defined(__GNUC__) && !defined(__INTEL_COMPILER) /* spurious uninitialized warnings */ @@ -1729,7 +1796,7 @@ CMP_EQUAL_OR_RETURN(big[n], h) --n; } - for (; m != SIZE_MAX; m--,n--) { + for (; m != MPD_SIZE_MAX; m--,n--) { _mpd_divmod_pow10(&h, &l, small[m], MPD_RDIGITS-r); x = ph * lprev + h; CMP_EQUAL_OR_RETURN(big[n], x) @@ -1739,7 +1806,7 @@ CMP_EQUAL_OR_RETURN(big[q], x) } else { - while (--m != SIZE_MAX) { + while (--m != MPD_SIZE_MAX) { CMP_EQUAL_OR_RETURN(big[m+q], small[m]) } } @@ -4347,10 +4414,10 @@ } /* Minimum space needed for the result array in _karatsuba_rec(). */ -static inline size_t -_kmul_resultsize(size_t la, size_t lb) +static inline mpd_size_t +_kmul_resultsize(mpd_size_t la, mpd_size_t lb) { - size_t n, m; + mpd_size_t n, m; n = add_size_t(la, lb); n = add_size_t(n, 1); @@ -4362,10 +4429,10 @@ } /* Work space needed in _karatsuba_rec(). lim >= 4 */ -static inline size_t -_kmul_worksize(size_t n, size_t lim) +static inline mpd_size_t +_kmul_worksize(mpd_size_t n, mpd_size_t lim) { - size_t m; + mpd_size_t m; if (n <= lim) { return 0; @@ -4389,9 +4456,9 @@ */ static void _karatsuba_rec(mpd_uint_t *c, const mpd_uint_t *a, const mpd_uint_t *b, mpd_uint_t *w, - size_t la, size_t lb) + mpd_size_t la, mpd_size_t lb) { - size_t m, lt; + mpd_size_t m, lt; assert (la >= lb && lb > 0); @@ -4461,10 +4528,10 @@ * Conditions: ulen >= vlen, ulen >= 4 */ mpd_uint_t * -_mpd_kmul(const mpd_uint_t *u, const mpd_uint_t *v, size_t ulen, size_t vlen, size_t *rsize) +_mpd_kmul(const mpd_uint_t *u, const mpd_uint_t *v, mpd_size_t ulen, mpd_size_t vlen, mpd_size_t *rsize) { mpd_uint_t *result = NULL, *w = NULL; - size_t m; + mpd_size_t m; assert(ulen >= 4); assert(ulen >= vlen); @@ -4489,11 +4556,11 @@ /* Determine the minimum length for the number theoretic transform. */ -static inline size_t -_mpd_get_transform_len(size_t rsize) +static inline mpd_size_t +_mpd_get_transform_len(mpd_size_t rsize) { - size_t log2rsize; - size_t x, step; + mpd_size_t log2rsize; + mpd_size_t x, step; assert(rsize >= 4); log2rsize = BSR(rsize); @@ -4516,7 +4583,7 @@ return 3*MPD_MAXTRANSFORM_2N; } else { - return SIZE_MAX; + return MPD_SIZE_MAX; } } @@ -4568,10 +4635,10 @@ * a pointer to the result or NULL in case of failure (malloc error). */ mpd_uint_t * -_mpd_fntmul(const mpd_uint_t *u, const mpd_uint_t *v, size_t ulen, size_t vlen, size_t *rsize) +_mpd_fntmul(const mpd_uint_t *u, const mpd_uint_t *v, mpd_size_t ulen, mpd_size_t vlen, mpd_size_t *rsize) { mpd_uint_t *c1 = NULL, *c2 = NULL, *c3 = NULL, *vtmp = NULL; - size_t n; + mpd_size_t n; #ifdef PPRO unsigned int cw; @@ -4579,7 +4646,7 @@ #endif *rsize = add_size_t(ulen, vlen); - if ((n = _mpd_get_transform_len(*rsize)) == SIZE_MAX) { + if ((n = _mpd_get_transform_len(*rsize)) == MPD_SIZE_MAX) { goto malloc_error; } @@ -4644,9 +4711,9 @@ */ static int _karatsuba_rec_fnt(mpd_uint_t *c, const mpd_uint_t *a, const mpd_uint_t *b, mpd_uint_t *w, - size_t la, size_t lb) + mpd_size_t la, mpd_size_t lb) { - size_t m, lt; + mpd_size_t m, lt; assert (la >= lb && lb > 0); @@ -4657,7 +4724,7 @@ } else { mpd_uint_t *result; - size_t dummy; + mpd_size_t dummy; if ((result = _mpd_fntmul(a, b, la, lb, &dummy)) == NULL) { return 0; @@ -4741,10 +4808,10 @@ * (malloc error). Conditions: ulen >= vlen, ulen >= 4. */ mpd_uint_t * -_mpd_kmul_fnt(const mpd_uint_t *u, const mpd_uint_t *v, size_t ulen, size_t vlen, size_t *rsize) +_mpd_kmul_fnt(const mpd_uint_t *u, const mpd_uint_t *v, mpd_size_t ulen, mpd_size_t vlen, mpd_size_t *rsize) { mpd_uint_t *result = NULL, *w = NULL; - size_t m; + mpd_size_t m; assert(ulen >= 4); assert(ulen >= vlen); @@ -4804,7 +4871,7 @@ mpd_t *big = (mpd_t *)a, *small = (mpd_t *)b; mpd_uint_t *rdata = NULL; mpd_uint_t rbuf[MPD_MINALLOC_MAX]; - size_t rsize, i; + mpd_size_t rsize, i; if (mpd_isspecial(a) || mpd_isspecial(b)) { @@ -4825,7 +4892,7 @@ _mpd_singlemul(result->data, big->data[0], small->data[0]); goto finish; } - if (rsize <= (size_t)MPD_MINALLOC_MAX) { + if (rsize <= (mpd_size_t)MPD_MINALLOC_MAX) { if (big->len == 2) { _mpd_mul_2_le2(rbuf, big->data, small->data, small->len); } @@ -6703,36 +6770,36 @@ /* * Returns the space needed to import a base 'base' integer of length 'srclen'. */ -static inline size_t +static inline mpd_ssize_t _mpd_importsize(size_t srclen, uint32_t base) { -#ifdef CONFIG_64 +#if SIZE_MAX == UINT64_MAX #if defined(__x86_64__) && defined(HAVE_80BIT_LONG_DOUBLE) - return (long double)srclen * (log10(base)/MPD_RDIGITS) + 3; + long double x = (long double)srclen * (log10(base)/MPD_RDIGITS) + 3; #else + double x; if (srclen > (1ULL<<53)) { - return SIZE_MAX; + return MPD_SSIZE_MAX; } - return (double)srclen * (log10(base)/MPD_RDIGITS) + 3; + x = (double)srclen * (log10(base)/MPD_RDIGITS) + 3; #endif -#else /* CONFIG_32 */ -{ - double x = srclen * (log10(base) / MPD_RDIGITS) + 3; - return (x > SIZE_MAX) ? SIZE_MAX : x; -} +#else + double x = srclen * (log10(base)/MPD_RDIGITS) + 3; #endif + return (x > MPD_MAXIMPORT) ? MPD_SSIZE_MAX : (mpd_ssize_t)x; } static inline size_t -_to_base_u16(uint16_t *w, size_t wlen, mpd_uint_t base, mpd_uint_t *u, mpd_ssize_t ulen) +_to_base_u16(uint16_t *w, size_t wlen, mpd_uint_t wbase, + mpd_uint_t *u, mpd_ssize_t ulen) { size_t n = 0; assert(wlen > 0 && ulen > 0); do { - w[n++] = (uint16_t)_mpd_shortdiv(u, u, ulen, base); + w[n++] = (uint16_t)_mpd_shortdiv(u, u, ulen, wbase); /* ulen will be at least 1. u[ulen-1] can only be zero if ulen == 1 */ ulen = _mpd_real_size(u, ulen); @@ -6745,16 +6812,17 @@ } static inline void -_from_base_u16(mpd_uint_t *w, size_t wlen, const mpd_uint_t *u, size_t ulen, uint16_t base) +_from_base_u16(mpd_uint_t *w, mpd_ssize_t wlen, + const mpd_uint_t *u, size_t ulen, uint16_t ubase) { - size_t m = 1; + mpd_ssize_t m = 1; mpd_uint_t carry; assert(wlen > 0 && ulen > 0); w[0] = u[--ulen]; while (--ulen != SIZE_MAX && m < wlen) { - _mpd_shortmul(w, w, m, base); + _mpd_shortmul(w, w, m, ubase); m = _mpd_real_size(w, m+1); carry = _mpd_shortadd(w, m, u[ulen]); if (carry) w[m++] = carry; @@ -6767,7 +6835,7 @@ /* target base wbase <= source base ubase */ static inline size_t _baseconv_to_smaller(uint32_t *w, size_t wlen, mpd_uint_t wbase, - mpd_uint_t *u, size_t ulen, mpd_uint_t ubase) + mpd_uint_t *u, mpd_ssize_t ulen, mpd_uint_t ubase) { size_t n = 0; @@ -6788,10 +6856,10 @@ /* target base wbase >= source base ubase */ static inline void -_baseconv_to_larger(mpd_uint_t *w, size_t wlen, mpd_uint_t wbase, +_baseconv_to_larger(mpd_uint_t *w, mpd_ssize_t wlen, mpd_uint_t wbase, const mpd_uint_t *u, size_t ulen, mpd_uint_t ubase) { - size_t m = 1; + mpd_ssize_t m = 1; mpd_uint_t carry; assert(wlen > 0 && ulen > 0); @@ -6814,20 +6882,21 @@ * The least significant word of the result is rdata[0]. */ size_t -mpd_qexport_u16(uint16_t *rdata, size_t rlen, uint32_t base, const mpd_t *src, - uint32_t *status) +mpd_qexport_u16(uint16_t *rdata, size_t rlen, uint32_t rbase, + const mpd_t *src, uint32_t *status) { mpd_t *tsrc; size_t n; - assert(base <= (1U<<16)); + assert(rbase <= (1U<<16)); + assert(rlen <= SIZE_MAX/(sizeof *rdata)); if (mpd_isspecial(src) || !_mpd_isint(src)) { *status |= MPD_Invalid_operation; return SIZE_MAX; } - memset(rdata, 0, mul_size_t(rlen, sizeof *rdata)); + memset(rdata, 0, rlen * (sizeof *rdata)); if (mpd_iszero(src)) { return 1; @@ -6849,7 +6918,7 @@ } } - n = _to_base_u16(rdata, rlen, base, tsrc->data, tsrc->len); + n = _to_base_u16(rdata, rlen, rbase, tsrc->data, tsrc->len); mpd_del(tsrc); return n; @@ -6860,8 +6929,8 @@ * The least significant word of the result is rdata[0]. */ size_t -mpd_qexport_u32(uint32_t *rdata, size_t rlen, uint32_t base, const mpd_t *src, - uint32_t *status) +mpd_qexport_u32(uint32_t *rdata, size_t rlen, uint32_t rbase, + const mpd_t *src, uint32_t *status) { mpd_t *tsrc; size_t n; @@ -6870,8 +6939,15 @@ *status |= MPD_Invalid_operation; return SIZE_MAX; } +#if MPD_SIZE_MAX < SIZE_MAX + if (rlen > MPD_SSIZE_MAX) { + *status |= MPD_Invalid_operation; + return SIZE_MAX; + } +#endif - memset(rdata, 0, mul_size_t(rlen, sizeof *rdata)); + assert(rlen <= SIZE_MAX/(sizeof *rdata)); + memset(rdata, 0, rlen * (sizeof *rdata)); if (mpd_iszero(src)) { return 1; @@ -6894,14 +6970,14 @@ } #ifdef CONFIG_64 - n = _baseconv_to_smaller(rdata, rlen, base, tsrc->data, tsrc->len, MPD_RADIX); + n = _baseconv_to_smaller(rdata, rlen, rbase, tsrc->data, tsrc->len, MPD_RADIX); #else - if (base <= MPD_RADIX) { - n = _baseconv_to_smaller(rdata, rlen, base, tsrc->data, tsrc->len, MPD_RADIX); + if (rbase <= MPD_RADIX) { + n = _baseconv_to_smaller(rdata, rlen, rbase, tsrc->data, tsrc->len, MPD_RADIX); } else { - _baseconv_to_larger(rdata, rlen, base, tsrc->data, tsrc->len, MPD_RADIX); - n = _mpd_real_size(rdata, rlen); + _baseconv_to_larger(rdata, (mpd_ssize_t)rlen, rbase, tsrc->data, tsrc->len, MPD_RADIX); + n = _mpd_real_size(rdata, (mpd_ssize_t)rlen); } #endif @@ -6914,26 +6990,30 @@ * Converts a multiprecision integer with base <= UINT16_MAX+1 to an mpd_t. * The least significant word of the source is srcdata[0]. */ -int -mpd_qimport_u16(mpd_t *result, const uint16_t *srcdata, size_t srclen, - uint8_t srcsign, uint32_t base, +void +mpd_qimport_u16(mpd_t *result, + const uint16_t *srcdata, size_t srclen, + uint8_t srcsign, uint32_t srcbase, const mpd_context_t *ctx, uint32_t *status) { mpd_uint_t *usrc; /* uint16_t src copied to an mpd_uint_t array */ - size_t rlen; /* length of the result */ + mpd_ssize_t rlen; /* length of the result */ size_t n = 0; assert(srclen > 0); - assert(base <= (1U<<16)); + assert(srcbase <= (1U<<16)); - if ((rlen = _mpd_importsize(srclen, base)) == SIZE_MAX) { - mpd_seterror(result, MPD_Malloc_error, status); - return 0; + if ((rlen = _mpd_importsize(srclen, srcbase)) == MPD_SSIZE_MAX) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; } - - if ((usrc = mpd_alloc(srclen, sizeof *usrc)) == NULL) { + if (srclen > MPD_SIZE_MAX/(sizeof *usrc)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + if ((usrc = mpd_alloc((mpd_size_t)srclen, sizeof *usrc)) == NULL) { mpd_seterror(result, MPD_Malloc_error, status); - return 0; + return; } for (n = 0; n < srclen; n++) { usrc[n] = srcdata[n]; @@ -6944,7 +7024,7 @@ goto finish; } - _from_base_u16(result->data, rlen, usrc, srclen, base); + _from_base_u16(result->data, rlen, usrc, srclen, srcbase); mpd_set_flags(result, srcsign); result->exp = 0; @@ -6954,34 +7034,38 @@ mpd_qresize(result, result->len, status); mpd_qfinalize(result, ctx, status); + finish: mpd_free(usrc); - return 1; } /* * Converts a multiprecision integer with base <= UINT32_MAX to an mpd_t. * The least significant word of the source is srcdata[0]. */ -int -mpd_qimport_u32(mpd_t *result, const uint32_t *srcdata, size_t srclen, - uint8_t srcsign, uint32_t base, +void +mpd_qimport_u32(mpd_t *result, + const uint32_t *srcdata, size_t srclen, + uint8_t srcsign, uint32_t srcbase, const mpd_context_t *ctx, uint32_t *status) { mpd_uint_t *usrc; /* uint32_t src copied to an mpd_uint_t array */ - size_t rlen; /* length of the result */ + mpd_ssize_t rlen; /* length of the result */ size_t n = 0; assert(srclen > 0); - if ((rlen = _mpd_importsize(srclen, base)) == SIZE_MAX) { - mpd_seterror(result, MPD_Malloc_error, status); - return 0; + if ((rlen = _mpd_importsize(srclen, srcbase)) == MPD_SSIZE_MAX) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; } - - if ((usrc = mpd_alloc(srclen, sizeof *usrc)) == NULL) { + if (srclen > MPD_SIZE_MAX/(sizeof *usrc)) { + mpd_seterror(result, MPD_Invalid_operation, status); + return; + } + if ((usrc = mpd_alloc((mpd_size_t)srclen, sizeof *usrc)) == NULL) { mpd_seterror(result, MPD_Malloc_error, status); - return 0; + return; } for (n = 0; n < srclen; n++) { usrc[n] = srcdata[n]; @@ -6993,13 +7077,13 @@ } #ifdef CONFIG_64 - _baseconv_to_larger(result->data, rlen, MPD_RADIX, usrc, srclen, base); + _baseconv_to_larger(result->data, rlen, MPD_RADIX, usrc, srclen, srcbase); #else - if (base <= MPD_RADIX) { - _baseconv_to_larger(result->data, rlen, MPD_RADIX, usrc, srclen, base); + if (srcbase <= MPD_RADIX) { + _baseconv_to_larger(result->data, rlen, MPD_RADIX, usrc, srclen, srcbase); } else { - _baseconv_to_smaller(result->data, rlen, MPD_RADIX, usrc, srclen, base); + _baseconv_to_smaller(result->data, rlen, MPD_RADIX, usrc, (mpd_ssize_t)srclen, srcbase); } #endif @@ -7011,9 +7095,377 @@ mpd_qresize(result, result->len, status); mpd_qfinalize(result, ctx, status); + finish: mpd_free(usrc); - return 1; +} + + +/*********************************************************************/ +/* Testcases for Newton Division */ +/*********************************************************************/ + +void +mpd_qtest_newtondiv(mpd_t *q, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + MPD_NEW_STATIC(aligned,0,0,0,0); + mpd_uint_t ld, carry = 0; + mpd_ssize_t shift, exp, tz; + mpd_ssize_t newsize; + mpd_uint_t rem; + uint8_t sign_a = mpd_sign(a); + uint8_t sign_b = mpd_sign(b); + + + if (mpd_isspecial(a) || mpd_isspecial(b)) { + if (mpd_qcheck_nans(q, a, b, ctx, status)) { + return; + } + _mpd_qdiv_inf(q, a, b, ctx, status); + return; + } + if (mpd_iszerocoeff(b)) { + if (mpd_iszerocoeff(a)) { + mpd_seterror(q, MPD_Division_undefined, status); + } + else { + mpd_setspecial(q, sign_a^sign_b, MPD_INF); + *status |= MPD_Division_by_zero; + } + return; + } + if (mpd_iszerocoeff(a)) { + exp = a->exp - b->exp; + _settriple(q, sign_a^sign_b, 0, exp); + mpd_qfinalize(q, ctx, status); + return; + } + + shift = (b->digits - a->digits) + ctx->prec + 1; + /* exp = ideal_exp - shift */ + exp = (a->exp - b->exp) - shift; + if (shift > 0) { + if (!mpd_qshiftl(&aligned, a, shift, status)) { + mpd_seterror(q, MPD_Malloc_error, status); + goto finish; + } + a = &aligned; + } + else if (shift < 0) { + shift = -shift; + if (!mpd_qshiftl(&aligned, b, shift, status)) { + mpd_seterror(q, MPD_Malloc_error, status); + goto finish; + } + b = &aligned; + } + + + newsize = a->len - b->len + 1; + if ((q != b && q != a) || (q == b && newsize > b->len)) { + if (!mpd_qresize(q, newsize, status)) { + mpd_seterror(q, MPD_Malloc_error, status); + goto finish; + } + } + + + { /* some compilers need a new block here for the declaration of r */ + MPD_NEW_STATIC(r,0,0,0,0); + _mpd_qbarrett_divmod(q, &r, a, b, ctx, status); + rem = !mpd_iszerocoeff(&r); + mpd_del(&r); + newsize = q->len; + } + + + newsize = _mpd_real_size(q->data, newsize); + /* resize to smaller cannot fail */ + mpd_qresize(q, newsize, status); + q->len = newsize; + mpd_setdigits(q); + + if (rem) { + ld = mpd_lsd(q->data[0]); + if (ld == 0 || ld == 5) { + carry = _mpd_baseincr(q->data, q->len); + if (carry) { + if (!mpd_qresize(q, q->len+1, status)) { + mpd_seterror(q, MPD_Malloc_error, status); + goto finish; + } + q->data[q->len] = 1; + } + } + } + else if (1) { /* SET_IDEAL_EXP */ + tz = mpd_trail_zeros(q); + /* right now: shift = ideal_exp - exp */ + shift = (tz > shift) ? shift : tz; + mpd_qshiftr_inplace(q, shift); + exp += shift; + } + + mpd_set_flags(q, sign_a^sign_b); + q->exp = exp; + + +finish: + mpd_del(&aligned); + mpd_qfinalize(q, ctx, status); +} + +void +_mpd_qtest_barrett_divmod(mpd_t *q, mpd_t *r, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + MPD_NEW_STATIC(aligned,0,0,0,0); + mpd_ssize_t qsize, rsize; + mpd_ssize_t ideal_exp, expdiff, shift; + uint8_t sign_a = mpd_sign(a); + uint8_t sign_ab = mpd_sign(a)^mpd_sign(b); + + + ideal_exp = (a->exp > b->exp) ? b->exp : a->exp; + if (mpd_iszerocoeff(a)) { + if (!mpd_qcopy(r, a, status)) { + goto nanresult; + } + r->exp = ideal_exp; + _settriple(q, sign_ab, 0, 0); + return; + } + + expdiff = mpd_adjexp(a) - mpd_adjexp(b); + if (expdiff < 0) { + if (a->exp > b->exp) { + /* positive and less than b->digits - a->digits */ + shift = a->exp - b->exp; + if (!mpd_qshiftl(r, a, shift, status)) { + goto nanresult; + } + r->exp = ideal_exp; + } + else { + if (!mpd_qcopy(r, a, status)) { + goto nanresult; + } + } + _settriple(q, sign_ab, 0, 0); + return; + } + if (expdiff > ctx->prec) { + *status |= MPD_Division_impossible; + goto nanresult; + } + + + /* + * At this point we have: + * (1) 0 <= a->exp + a->digits - b->exp - b->digits <= prec + * (2) a->exp - b->exp >= b->digits - a->digits + * (3) a->exp - b->exp <= prec + b->digits - a->digits + */ + if (a->exp != b->exp) { + shift = a->exp - b->exp; + if (shift > 0) { + /* by (3), after the shift a->digits <= prec + b->digits */ + if (!mpd_qshiftl(&aligned, a, shift, status)) { + goto nanresult; + } + a = &aligned; + } + else { + shift = -shift; + /* by (2), after the shift b->digits <= a->digits */ + if (!mpd_qshiftl(&aligned, b, shift, status)) { + goto nanresult; + } + b = &aligned; + } + } + + + qsize = a->len - b->len + 1; + if (!(q == a && qsize < a->len) && !(q == b && qsize < b->len)) { + if (!mpd_qresize(q, qsize, status)) { + goto nanresult; + } + } + + rsize = b->len; + if (!(r == a && rsize < a->len)) { + if (!mpd_qresize(r, rsize, status)) { + goto nanresult; + } + } + + _mpd_qbarrett_divmod(q, r, a, b, ctx, status); + if (mpd_isinfinite(q) || q->digits > ctx->prec) { + *status |= MPD_Division_impossible; + goto nanresult; + } + qsize = q->len; + rsize = r->len; + + qsize = _mpd_real_size(q->data, qsize); + /* resize to smaller cannot fail */ + mpd_qresize(q, qsize, status); + q->len = qsize; + mpd_setdigits(q); + mpd_set_flags(q, sign_ab); + q->exp = 0; + if (q->digits > ctx->prec) { + *status |= MPD_Division_impossible; + goto nanresult; + } + + rsize = _mpd_real_size(r->data, rsize); + /* resize to smaller cannot fail */ + mpd_qresize(r, rsize, status); + r->len = rsize; + mpd_setdigits(r); + mpd_set_flags(r, sign_a); + r->exp = ideal_exp; + +out: + mpd_del(&aligned); + return; + +nanresult: + mpd_setspecial(q, MPD_POS, MPD_NAN); + mpd_setspecial(r, MPD_POS, MPD_NAN); + goto out; +} + +void +mpd_qtest_newtondivint(mpd_t *q, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + mpd_t *r; + uint8_t sign = mpd_sign(a)^mpd_sign(b); + + if (mpd_isspecial(a) || mpd_isspecial(b)) { + if (mpd_qcheck_nans(q, a, b, ctx, status)) { + return; + } + if (mpd_isinfinite(a) && mpd_isinfinite(b)) { + mpd_seterror(q, MPD_Invalid_operation, status); + return; + } + if (mpd_isinfinite(a)) { + mpd_setspecial(q, sign, MPD_INF); + return; + } + if (mpd_isinfinite(b)) { + _settriple(q, sign, 0, 0); + return; + } + /* debug */ + abort(); + } + if (mpd_iszerocoeff(b)) { + if (mpd_iszerocoeff(a)) { + mpd_seterror(q, MPD_Division_undefined, status); + } + else { + mpd_setspecial(q, sign, MPD_INF); + *status |= MPD_Division_by_zero; + } + return; + } + + r = mpd_qnew(); + _mpd_qtest_barrett_divmod(q, r, a, b, ctx, status); + mpd_del(r); + mpd_qfinalize(q, ctx, status); +} + +void +mpd_qtest_newtonrem(mpd_t *r, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + mpd_t *q; + + if (mpd_isspecial(a) || mpd_isspecial(b)) { + if (mpd_qcheck_nans(r, a, b, ctx, status)) { + return; + } + if (mpd_isinfinite(a)) { + mpd_seterror(r, MPD_Invalid_operation, status); + return; + } + if (mpd_isinfinite(b)) { + mpd_qcopy(r, a, status); + return; + } + /* debug */ + abort(); + } + if (mpd_iszerocoeff(b)) { + if (mpd_iszerocoeff(a)) { + mpd_seterror(r, MPD_Division_undefined, status); + } + else { + mpd_seterror(r, MPD_Invalid_operation, status); + } + return; + } + + q = mpd_qnew(); + _mpd_qtest_barrett_divmod(q, r, a, b, ctx, status); + mpd_del(q); + mpd_qfinalize(r, ctx, status); +} + +void +mpd_qtest_newton_divmod(mpd_t *q, mpd_t *r, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) +{ + uint8_t sign = mpd_sign(a)^mpd_sign(b); + + if (mpd_isspecial(a) || mpd_isspecial(b)) { + if (mpd_qcheck_nans(q, a, b, ctx, status)) { + mpd_qcopy(r, q, status); + return; + } + if (mpd_isinfinite(a)) { + /* decimal.py returns Inf for q if b is normal. */ + mpd_setspecial(q, MPD_POS, MPD_NAN); + mpd_setspecial(r, MPD_POS, MPD_NAN); + *status |= MPD_Invalid_operation; + return; + } + if (mpd_isinfinite(b)) { + if (!mpd_qcopy(r, a, status)) { + mpd_seterror(q, MPD_Malloc_error, status); + } + else { + _settriple(q, sign, 0, 0); + } + return; + } + /* debug */ + abort(); + } + if (mpd_iszerocoeff(b)) { + if (mpd_iszerocoeff(a)) { + mpd_setspecial(q, MPD_POS, MPD_NAN); + mpd_setspecial(r, MPD_POS, MPD_NAN); + *status |= MPD_Division_undefined; + } + else { + mpd_setspecial(q, MPD_POS, MPD_NAN); + mpd_setspecial(r, MPD_POS, MPD_NAN); + *status |= (MPD_Division_by_zero|MPD_Invalid_operation); + } + return; + } + + _mpd_qtest_barrett_divmod(q, r, a, b, ctx, status); + mpd_qfinalize(q, ctx, status); + mpd_qfinalize(r, ctx, status); } From python-checkins at python.org Thu Jan 21 16:38:43 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:38:43 -0000 Subject: [Python-checkins] r77644 - python/branches/py3k-cdecimal/Modules/cdecimal/mptest.h Message-ID: Author: stefan.krah Date: Thu Jan 21 16:38:42 2010 New Revision: 77644 Log: Add header file for extended tests. Added: python/branches/py3k-cdecimal/Modules/cdecimal/mptest.h (contents, props changed) Added: python/branches/py3k-cdecimal/Modules/cdecimal/mptest.h ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Modules/cdecimal/mptest.h Thu Jan 21 16:38:42 2010 @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#ifndef MPTEST_H +#define MPTEST_H + + +#include "mpdecimal.h" + + +/* newton division undergoes the same rigorous tests as standard division */ +void mpd_qtest_newtondiv(mpd_t *q, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qtest_newtondivint(mpd_t *q, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qtest_newtonrem(mpd_t *r, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); +void mpd_qtest_newton_divmod(mpd_t *q, mpd_t *r, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, uint32_t *status); + +/* fenv */ +unsigned int mpd_set_fenv(void); +void mpd_restore_fenv(unsigned int); + +mpd_uint_t *_mpd_fntmul(const mpd_uint_t *u, const mpd_uint_t *v, mpd_size_t ulen, mpd_size_t vlen, mpd_size_t *rsize); +mpd_uint_t *_mpd_kmul(const mpd_uint_t *u, const mpd_uint_t *v, mpd_size_t ulen, mpd_size_t vlen, mpd_size_t *rsize); +mpd_uint_t *_mpd_kmul_fnt(const mpd_uint_t *u, const mpd_uint_t *v, mpd_size_t ulen, mpd_size_t vlen, mpd_size_t *rsize); + + +#endif + + From python-checkins at python.org Thu Jan 21 16:41:10 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:41:10 -0000 Subject: [Python-checkins] r77645 - python/branches/py3k-cdecimal/Modules/cdecimal/mptypes.h Message-ID: Author: stefan.krah Date: Thu Jan 21 16:41:10 2010 New Revision: 77645 Log: Fix OS specific conversion specifiers. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/mptypes.h Modified: python/branches/py3k-cdecimal/Modules/cdecimal/mptypes.h ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/mptypes.h (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/mptypes.h Thu Jan 21 16:41:10 2010 @@ -10,10 +10,10 @@ #if defined(CONFIG_64) #if defined(_MSC_VER) - #define PRI_size_t "llu" + #define PRI_mpd_size_t "llu" #define PRI_mpd_ssize_t "lld" #else - #define PRI_size_t "lu" + #define PRI_mpd_size_t "lu" #define PRI_mpd_ssize_t "ld" #endif #define PRI_time_t "ld" @@ -21,21 +21,31 @@ #define ONE_UM 1ULL #elif defined(CONFIG_32) #if defined (__OpenBSD__) - #define PRI_size_t "lu" - #define PRI_mpd_ssize_t "ld" + #define PRI_mpd_size_t "u" + #define PRI_mpd_ssize_t "d" #define PRI_time_t "d" + #elif defined(__FreeBSD__) + #define PRI_mpd_size_t "u" + #define PRI_mpd_ssize_t "d" + #if defined(__x86_64__) + #define PRI_time_t "ld" + #else + #define PRI_time_t "d" + #endif #else - #define PRI_size_t "u" + #define PRI_mpd_size_t "u" #define PRI_mpd_ssize_t "d" #define PRI_time_t "ld" #endif - #define CONV_mpd_ssize_t "l" + #if MPD_SSIZE_MAX != INT_MAX + #error "define CONV_mpd_ssize_t" + #endif + #define CONV_mpd_ssize_t "i" #define ONE_UM 1UL #else #error "define CONFIG_64 or CONFIG_32" #endif - #endif From python-checkins at python.org Thu Jan 21 16:41:44 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:41:44 -0000 Subject: [Python-checkins] r77646 - python/branches/py3k-cdecimal/Modules/cdecimal/numbertheory.c Message-ID: Author: stefan.krah Date: Thu Jan 21 16:41:44 2010 New Revision: 77646 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/numbertheory.c Modified: python/branches/py3k-cdecimal/Modules/cdecimal/numbertheory.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/numbertheory.c (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/numbertheory.c Thu Jan 21 16:41:44 2010 @@ -35,7 +35,7 @@ /* initialize transform parameters */ struct fnt_params * -_mpd_init_fnt_params(size_t n, int sign, int modnum) +_mpd_init_fnt_params(mpd_size_t n, int sign, int modnum) { struct fnt_params *tparams; mpd_uint_t umod; @@ -45,7 +45,7 @@ #endif mpd_uint_t kernel, imag, w; mpd_uint_t i; - size_t nhalf; + mpd_size_t nhalf; assert(ispower2(n)); assert(sign == -1 || sign == 1); From python-checkins at python.org Thu Jan 21 16:42:10 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:42:10 -0000 Subject: [Python-checkins] r77647 - python/branches/py3k-cdecimal/Modules/cdecimal/numbertheory.h Message-ID: Author: stefan.krah Date: Thu Jan 21 16:42:09 2010 New Revision: 77647 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/numbertheory.h Modified: python/branches/py3k-cdecimal/Modules/cdecimal/numbertheory.h ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/numbertheory.h (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/numbertheory.h Thu Jan 21 16:42:09 2010 @@ -23,7 +23,7 @@ mpd_uint_t _mpd_getkernel(mpd_uint_t n, int sign, int modnum); -struct fnt_params *_mpd_init_fnt_params(size_t n, int sign, int modnum); +struct fnt_params *_mpd_init_fnt_params(mpd_size_t n, int sign, int modnum); void _mpd_init_w3table(mpd_uint_t w3table[3], int sign, int modnum); From python-checkins at python.org Thu Jan 21 16:42:45 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:42:45 -0000 Subject: [Python-checkins] r77648 - python/branches/py3k-cdecimal/Modules/cdecimal/sixstep.c Message-ID: Author: stefan.krah Date: Thu Jan 21 16:42:45 2010 New Revision: 77648 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/sixstep.c Modified: python/branches/py3k-cdecimal/Modules/cdecimal/sixstep.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/sixstep.c (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/sixstep.c Thu Jan 21 16:42:45 2010 @@ -29,10 +29,10 @@ /* forward transform with sign = -1 */ int -six_step_fnt(mpd_uint_t *a, size_t n, int modnum, int ordered) +six_step_fnt(mpd_uint_t *a, mpd_size_t n, int modnum, int ordered) { struct fnt_params *tparams; - size_t log2n, C, R; + mpd_size_t log2n, C, R; mpd_uint_t kernel; mpd_uint_t umod; #ifdef PPRO @@ -40,7 +40,7 @@ uint32_t dinvmod[3]; #endif mpd_uint_t *x, w0, w1, wstep; - size_t i, k; + mpd_size_t i, k; assert(ispower2(n)); @@ -103,10 +103,10 @@ /* reverse transform, sign = 1 */ int -inv_six_step_fnt(mpd_uint_t *a, size_t n, int modnum, int ordered) +inv_six_step_fnt(mpd_uint_t *a, mpd_size_t n, int modnum, int ordered) { struct fnt_params *tparams; - size_t log2n, C, R; + mpd_size_t log2n, C, R; mpd_uint_t kernel; mpd_uint_t umod; #ifdef PPRO @@ -114,7 +114,7 @@ uint32_t dinvmod[3]; #endif mpd_uint_t *x, w0, w1, wstep; - size_t i, k; + mpd_size_t i, k; assert(ispower2(n)); From python-checkins at python.org Thu Jan 21 16:43:07 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:43:07 -0000 Subject: [Python-checkins] r77649 - python/branches/py3k-cdecimal/Modules/cdecimal/sixstep.h Message-ID: Author: stefan.krah Date: Thu Jan 21 16:43:07 2010 New Revision: 77649 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/sixstep.h Modified: python/branches/py3k-cdecimal/Modules/cdecimal/sixstep.h ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/sixstep.h (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/sixstep.h Thu Jan 21 16:43:07 2010 @@ -12,8 +12,8 @@ #include "mpdecimal.h" -int six_step_fnt(mpd_uint_t *a, size_t n, int modnum, int ordered); -int inv_six_step_fnt(mpd_uint_t *a, size_t n, int modnum, int ordered); +int six_step_fnt(mpd_uint_t *a, mpd_size_t n, int modnum, int ordered); +int inv_six_step_fnt(mpd_uint_t *a, mpd_size_t n, int modnum, int ordered); #endif From python-checkins at python.org Thu Jan 21 16:43:53 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:43:53 -0000 Subject: [Python-checkins] r77650 - python/branches/py3k-cdecimal/Modules/cdecimal/transpose.c Message-ID: Author: stefan.krah Date: Thu Jan 21 16:43:53 2010 New Revision: 77650 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/transpose.c Modified: python/branches/py3k-cdecimal/Modules/cdecimal/transpose.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/transpose.c (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/transpose.c Thu Jan 21 16:43:53 2010 @@ -22,10 +22,10 @@ /* Definition of the matrix transpose */ void -std_trans(mpd_uint_t dest[], mpd_uint_t src[], size_t rows, size_t cols) +std_trans(mpd_uint_t dest[], mpd_uint_t src[], mpd_size_t rows, mpd_size_t cols) { - size_t idest, isrc; - size_t r, c; + mpd_size_t idest, isrc; + mpd_size_t r, c; for (r = 0; r < rows; r++) { isrc = r * cols; @@ -44,17 +44,17 @@ * BACKWARD_CYCLE: reverse the even/odd permutation. */ static int -swap_halfrows_pow2(mpd_uint_t *matrix, size_t rows, size_t cols, int dir) +swap_halfrows_pow2(mpd_uint_t *matrix, mpd_size_t rows, mpd_size_t cols, int dir) { mpd_uint_t buf1[BUFSIZE]; mpd_uint_t buf2[BUFSIZE]; mpd_uint_t *readbuf, *writebuf, *hp; - size_t *done, dbits; - size_t b = BUFSIZE, stride; - size_t hn, hmax; /* halfrow number */ - size_t m, r=0; - size_t offset; - size_t next; + mpd_size_t *done, dbits; + mpd_size_t b = BUFSIZE, stride; + mpd_size_t hn, hmax; /* halfrow number */ + mpd_size_t m, r=0; + mpd_size_t offset; + mpd_size_t next; assert(cols == mul_size_t(2, rows)); @@ -120,11 +120,11 @@ /* In-place transpose of a square matrix */ static inline void -squaretrans(mpd_uint_t *buf, size_t cols) +squaretrans(mpd_uint_t *buf, mpd_size_t cols) { mpd_uint_t tmp; - size_t idest, isrc; - size_t r, c; + mpd_size_t idest, isrc; + mpd_size_t r, c; for (r = 0; r < cols; r++) { c = r+1; @@ -146,14 +146,14 @@ * then a square tranposition is done on each individual block. */ static void -squaretrans_pow2(mpd_uint_t *matrix, size_t size) +squaretrans_pow2(mpd_uint_t *matrix, mpd_size_t size) { mpd_uint_t buf1[SIDE*SIDE]; mpd_uint_t buf2[SIDE*SIDE]; mpd_uint_t *to, *from; - size_t b = size; - size_t r, c; - size_t i; + mpd_size_t b = size; + mpd_size_t r, c; + mpd_size_t i; while (b > SIDE) b >>= 1; @@ -216,9 +216,9 @@ * or a (2*2^n) x 2^n matrix. */ int -transpose_pow2(mpd_uint_t *matrix, size_t rows, size_t cols) +transpose_pow2(mpd_uint_t *matrix, mpd_size_t rows, mpd_size_t cols) { - size_t size = mul_size_t(rows, cols); + mpd_size_t size = mul_size_t(rows, cols); assert(ispower2(rows)); assert(ispower2(cols)); From python-checkins at python.org Thu Jan 21 16:44:19 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:44:19 -0000 Subject: [Python-checkins] r77651 - python/branches/py3k-cdecimal/Modules/cdecimal/transpose3.c Message-ID: Author: stefan.krah Date: Thu Jan 21 16:44:19 2010 New Revision: 77651 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/transpose3.c Modified: python/branches/py3k-cdecimal/Modules/cdecimal/transpose3.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/transpose3.c (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/transpose3.c Thu Jan 21 16:44:19 2010 @@ -59,37 +59,37 @@ /* Cycle start points */ -static const size_t c0[] = {SIZE_MAX}; /* 2^0 blocks */ -static const size_t c1[] = {1, SIZE_MAX}; /* 2^1 blocks */ -static const size_t c2[] = {1, 2, SIZE_MAX}; /* 2^2 blocks */ -static const size_t c3[] = {1, 5, SIZE_MAX}; /* (...) */ -static const size_t c4[] = {1, 5, SIZE_MAX}; -static const size_t c5[] = {1, 5, 7, 19, SIZE_MAX}; -static const size_t c6[] = {1, 7, SIZE_MAX}; -static const size_t c7[] = {1, 5, SIZE_MAX}; -static const size_t c8[] = { - 1, 2, 4, 5, 7, 8, 10, 13, 14, 26, 59, 118, 236, 413, SIZE_MAX +static const mpd_size_t c0[] = {MPD_SIZE_MAX}; /* 2^0 blocks */ +static const mpd_size_t c1[] = {1, MPD_SIZE_MAX}; /* 2^1 blocks */ +static const mpd_size_t c2[] = {1, 2, MPD_SIZE_MAX}; /* 2^2 blocks */ +static const mpd_size_t c3[] = {1, 5, MPD_SIZE_MAX}; /* (...) */ +static const mpd_size_t c4[] = {1, 5, MPD_SIZE_MAX}; +static const mpd_size_t c5[] = {1, 5, 7, 19, MPD_SIZE_MAX}; +static const mpd_size_t c6[] = {1, 7, MPD_SIZE_MAX}; +static const mpd_size_t c7[] = {1, 5, MPD_SIZE_MAX}; +static const mpd_size_t c8[] = { + 1, 2, 4, 5, 7, 8, 10, 13, 14, 26, 59, 118, 236, 413, MPD_SIZE_MAX }; -static const size_t c9[] = { +static const mpd_size_t c9[] = { 1, 2, 4, 5, 7, 10, 11, 13, 14, 17, 20, 22, 23, 25, 28, 34, 35, 37, 46, 50, - 53, 68, 70, 74, 92, 100, 140, 307, SIZE_MAX + 53, 68, 70, 74, 92, 100, 140, 307, MPD_SIZE_MAX }; -static const size_t c10[] = {1, 2, 17, 34, 37, 74, 83, 166, SIZE_MAX}; -static const size_t c11[] = {1, 5, SIZE_MAX}; -static const size_t c12[] = { +static const mpd_size_t c10[] = {1, 2, 17, 34, 37, 74, 83, 166, MPD_SIZE_MAX}; +static const mpd_size_t c11[] = {1, 5, MPD_SIZE_MAX}; +static const mpd_size_t c12[] = { 1, 2, 4, 5, 7, 8, 11, 13, 14, 16, 17, 22, 25, 26, 32, 35, 41, 44, 49, 52, 53, 55, 61, 65, 77, 82, 88, 103, 104, 154, 164, 176, 275, 352, 385, 539, - 1117, 2234, SIZE_MAX + 1117, 2234, MPD_SIZE_MAX }; -static const size_t c13[] = {1, 5, 11, 25, 55, 125, 983, 4915, SIZE_MAX}; -static const size_t c14[] = { - 1, 2, 5, 7, 10, 13, 14, 23, 26, 46, 115, 230, 2137, 10685, SIZE_MAX +static const mpd_size_t c13[] = {1, 5, 11, 25, 55, 125, 983, 4915, MPD_SIZE_MAX}; +static const mpd_size_t c14[] = { + 1, 2, 5, 7, 10, 13, 14, 23, 26, 46, 115, 230, 2137, 10685, MPD_SIZE_MAX }; -static const size_t c15[] = {1, 5, 11, 17, 23, 31, 197, 499, 985, 2167, SIZE_MAX}; -static const size_t c16[] = { - 1, 2, 4, 5, 8, 10, 11, 22, 421, 467, 842, 934, 1868, 3736, SIZE_MAX +static const mpd_size_t c15[] = {1, 5, 11, 17, 23, 31, 197, 499, 985, 2167, MPD_SIZE_MAX}; +static const mpd_size_t c16[] = { + 1, 2, 4, 5, 8, 10, 11, 22, 421, 467, 842, 934, 1868, 3736, MPD_SIZE_MAX }; -static const size_t c17[] = { +static const mpd_size_t c17[] = { 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 32, 34, 38, 40, 41, 43, 44, 46, 47, 50, 52, 53, 55, 56, 58, 59, 62, 64, 65, 67, 68, 71, 73, 76, 77, 80, 82, 83, 85, 86, 88, 91, 92, 94, 95, 97, 100, 103, @@ -99,15 +99,15 @@ 275, 277, 287, 295, 304, 310, 311, 320, 322, 326, 335, 337, 340, 341, 359, 365, 380, 388, 410, 412, 442, 460, 470, 485, 502, 515, 530, 544, 548, 550, 571, 575, 577, 589, 605, 613, 622, 644, 680, 685, 691, 715, 730, 745, 905, - 935, 970, 1226, 1795, 78643, SIZE_MAX + 935, 970, 1226, 1795, 78643, MPD_SIZE_MAX }; -static const size_t c18[] = {1, 7, SIZE_MAX}; -static const size_t c19[] = {1, 5, 7, 13, 71, 355, 22153, 155071, SIZE_MAX}; -static const size_t c20[] = { - 1, 2, 4, 5, 7, 8, 10, 13, 14, 26, 241979, 483958, 967916, 1693853, SIZE_MAX +static const mpd_size_t c18[] = {1, 7, MPD_SIZE_MAX}; +static const mpd_size_t c19[] = {1, 5, 7, 13, 71, 355, 22153, 155071, MPD_SIZE_MAX}; +static const mpd_size_t c20[] = { + 1, 2, 4, 5, 7, 8, 10, 13, 14, 26, 241979, 483958, 967916, 1693853, MPD_SIZE_MAX }; -static const size_t c21[] = {1, 2, 4, 5, 7, 10, 14, 19, 20, 1258291, SIZE_MAX}; -static const size_t c22[] = { +static const mpd_size_t c21[] = {1, 2, 4, 5, 7, 10, 14, 19, 20, 1258291, MPD_SIZE_MAX}; +static const mpd_size_t c22[] = { 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 32, 34, 35, 37, 38, 40, 41, 43, 46, 47, 49, 50, 52, 56, 58, 61, 62, 64, 67, 68, 70, 71, 73, 74, 76, 77, 79, 82, 83, 85, 86, 92, 94, 95, 97, 98, 100, 101, @@ -126,16 +126,16 @@ 1445, 1463, 1723, 2299, 103991, 207982, 415964, 519955, 727937, 831928, 1039910, 1143901, 1351883, 1663856, 1767847, 1975829, 2079820, 2287802, 2599775, 2703766, 3223721, 3535694, 3639685, 3951658, 4159640, 6343451, - 6967397, 7903316, SIZE_MAX + 6967397, 7903316, MPD_SIZE_MAX }; -static const size_t c23[] = { +static const mpd_size_t c23[] = { 1, 5, 7, 11, 13, 17, 19, 23, 25, 29, 31, 35, 37, 43, 47, 49, 59, 61, 65, 67, 71, 77, 83, 85, 95, 97, 101, 103, 107, 113, 119, 125, 133, 145, 151, 163, 175, 179, 185, 187, 199, 203, 209, 217, 221, 229, 239, 247, 269, 281, 289, 319, 341, 377, 413, 421, 475, 479, 493, 551, 587, 703, 725, 841, 1421, 1463, 1885, - 1943, 2407, 2755, 45673, 502403, 867787, 1324517, SIZE_MAX + 1943, 2407, 2755, 45673, 502403, 867787, 1324517, MPD_SIZE_MAX }; -static const size_t c24[] = { +static const mpd_size_t c24[] = { 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 32, 34, 35, 37, 38, 40, 41, 43, 44, 47, 49, 50, 52, 53, 55, 56, 58, 59, 61, 62, 65, 67, 68, 70, 71, 73, 74, 76, 79, 80, 82, 83, 85, 86, 88, 89, 91, 94, @@ -167,13 +167,13 @@ 76690, 84359, 99697, 105008, 107366, 130373, 131260, 144386, 168718, 176387, 191725, 199394, 203453, 222401, 260746, 283753, 288772, 314429, 329767, 375781, 406457, 421795, 444802, 452471, 498485, 544499, 605851, 651865, - 659534, 682541, 751562, 904942, 1234709, 1510793, 1648835, SIZE_MAX + 659534, 682541, 751562, 904942, 1234709, 1510793, 1648835, MPD_SIZE_MAX }; -static const size_t c25[] = { +static const mpd_size_t c25[] = { 1, 5, 7, 11, 13, 17, 23, 25, 31, 49, 67, 115, 161, 253, 391, 875333, 4376665, - 6127331, 20132659, 21883325, SIZE_MAX + 6127331, 20132659, 21883325, MPD_SIZE_MAX }; -static const size_t c26[] = { +static const mpd_size_t c26[] = { 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 32, 34, 35, 37, 38, 40, 41, 43, 44, 46, 47, 49, 50, 52, 53, 55, 56, 58, 59, 61, 62, 64, 65, 67, 68, 70, 71, 73, 74, 76, 77, 79, 80, 82, 83, 88, 89, 91, @@ -223,17 +223,17 @@ 164617, 173666, 217694, 329234, 658468, 823085, 1152319, 1316936, 1646170, 1810787, 2798489, 3127723, 3292340, 3621574, 3786191, 4773893, 5761595, 6090829, 6255446, 6584680, 6749297, 7243148, 8066233, 9053935, 9547786, - 12675509, 13498594, 21894061, SIZE_MAX + 12675509, 13498594, 21894061, MPD_SIZE_MAX }; -static const size_t c27[] = { +static const mpd_size_t c27[] = { 1, 2, 4, 5, 7, 10, 11, 13, 14, 17, 19, 20, 22, 23, 26, 31, 35, 37, 43, 47, 52, 55, 59, 61, 65, 67, 70, 71, 74, 83, 85, 89, 91, 94, 130, 131, 134, 142, 163, 182, 188, 268, 329, 335, 517, 611, 658, 670, 799, 893, 1034, 1081, 1222, 1273, 1457, 2021, 2444, 2867, 3149, 3337, 4277, 6298, 12596, 127867, 255734, 511468, 639335, 1278670, 1406537, 6009749, 8567089, 12019498, 24038996, 42835445, - SIZE_MAX + MPD_SIZE_MAX }; -static const size_t c28[] = { +static const mpd_size_t c28[] = { 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 34, 35, 37, 38, 40, 41, 43, 44, 46, 49, 50, 52, 53, 55, 56, 58, 61, 62, 65, 67, 68, 70, 71, 73, 74, 76, 77, 79, 82, 83, 85, 86, 88, 92, 95, 98, 100, 101, 103, @@ -267,9 +267,9 @@ 5724295, 5802710, 5818393, 5990906, 6037955, 6053638, 6147736, 6367298, 6508445, 6759373, 6931886, 7041667, 7088716, 7167131, 7590572, 8123794, 8829529, 9064774, 9425483, 9754826, 10335097, 11307443, 11448590, 13518746, - 18129548, SIZE_MAX + 18129548, MPD_SIZE_MAX }; -static const size_t c29[] = { +static const mpd_size_t c29[] = { 1, 5, 7, 11, 13, 17, 19, 23, 25, 29, 31, 35, 37, 41, 43, 47, 49, 53, 55, 59, 61, 65, 67, 71, 73, 77, 79, 83, 85, 89, 91, 95, 97, 101, 103, 107, 109, 113, 115, 119, 121, 125, 127, 131, 133, 137, 139, 143, 145, 149, 151, 155, 157, @@ -332,9 +332,9 @@ 3700259, 4100287, 4300301, 4700329, 4900343, 5300371, 5900413, 6100427, 7100497, 7900553, 8300581, 8500595, 10300721, 10700749, 10935295, 14301001, 16604255, 23245957, 23501645, 36529361, 43171063, 56454467, 83021275, - 96304679, 156079997, 176005103, 322122547, SIZE_MAX + 96304679, 156079997, 176005103, 322122547, MPD_SIZE_MAX }; -static const size_t c30[] = { +static const mpd_size_t c30[] = { 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 32, 34, 35, 37, 38, 40, 41, 43, 44, 46, 47, 50, 52, 53, 55, 56, 58, 61, 62, 64, 65, 67, 68, 70, 71, 73, 74, 76, 77, 79, 80, 82, 83, 85, 86, 88, 89, 91, @@ -384,13 +384,13 @@ 43100, 45686, 46979, 48703, 49996, 51289, 52582, 57754, 58616, 59047, 61633, 62926, 70253, 76718, 96113, 97406, 98699, 102578, 113353, 142661, 153005, 7473841, 37369205, 52316887, 82212251, 97159933, 142002979, - 171898343, 231689071, 261584435, 351270527, SIZE_MAX + 171898343, 231689071, 261584435, 351270527, MPD_SIZE_MAX }; #ifdef CONFIG_64 -#if SIZE_MAX != 18446744073709551615ULL - #error "transpose3: need 64 bits for SIZE_MAX" +#if MPD_SIZE_MAX != 18446744073709551615ULL + #error "transpose3: need 64 bits for MPD_SIZE_MAX" #endif /* Maximum n for 3 * 2^n matrix, limited by log2(2^n/BMEMB) <= 30. * This limit can be raised by increasing BMEMB or by extending @@ -401,17 +401,17 @@ /* END CONFIG_64 */ #else -#if SIZE_MAX != 4294967295UL - #error "transpose3: need 32 bits for SIZE_MAX" +#if MPD_SIZE_MAX != 4294967295UL + #error "transpose3: need 32 bits for MPD_SIZE_MAX" #endif -#define MAXN 30 /* maximum n for 3 * 2^n matrix, limited by SIZE_MAX */ +#define MAXN 30 /* maximum n for 3 * 2^n matrix, limited by MPD_SIZE_MAX */ #define BMEMB 4096 /* block members */ #endif /* END CONFIG_32 */ /* all cycles */ -static const size_t *start[] = { +static const mpd_size_t *start[] = { c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30 }; @@ -423,16 +423,16 @@ * nprime blocks of size BMEMB, and the blocks are transposed cyclically. */ static void -_block_transpose_3xpow2(mpd_uint_t *matrix, size_t rows, size_t cols) +_block_transpose_3xpow2(mpd_uint_t *matrix, mpd_size_t rows, mpd_size_t cols) { mpd_uint_t buf1[BMEMB]; mpd_uint_t buf2[BMEMB]; mpd_uint_t *readbuf, *writebuf; - size_t nprime; /* number of blocks per row (or column) */ - size_t log2n; - size_t a, mod; - size_t s, next; - size_t i; + mpd_size_t nprime; /* number of blocks per row (or column) */ + mpd_size_t log2n; + mpd_size_t a, mod; + mpd_size_t s, next; + mpd_size_t i; if (rows == 3) { @@ -447,7 +447,7 @@ log2n = BSR(nprime); mod = 3 * nprime - 1; - for (i = 0; start[log2n][i] != SIZE_MAX; i++) { + for (i = 0; start[log2n][i] != MPD_SIZE_MAX; i++) { s = start[log2n][i]; @@ -478,11 +478,11 @@ * Maximum size: 3 x 2^MAXN or 2^MAXN x 3 */ void -transpose_3xpow2(mpd_uint_t *matrix, size_t rows, size_t cols) +transpose_3xpow2(mpd_uint_t *matrix, mpd_size_t rows, mpd_size_t cols) { mpd_uint_t buf[3*BMEMB]; mpd_uint_t *p; - size_t msize, bsize; + mpd_size_t msize, bsize; msize = mul_size_t(rows, cols); bsize = 3*BMEMB; From python-checkins at python.org Thu Jan 21 16:47:05 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:47:05 -0000 Subject: [Python-checkins] r77652 - python/branches/py3k-cdecimal/Modules/cdecimal/typearith.h Message-ID: Author: stefan.krah Date: Thu Jan 21 16:47:05 2010 New Revision: 77652 Log: 1. Change size_t to mpd_size_t. 2. Fix warnings in Visual Studio. 3. Add checks for __x86_64__ and __i386__. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/typearith.h Modified: python/branches/py3k-cdecimal/Modules/cdecimal/typearith.h ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/typearith.h (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/typearith.h Thu Jan 21 16:47:05 2010 @@ -21,8 +21,8 @@ ** ------------------------------------------------------------ */ -#if defined (CONFIG_64) -#if defined (__GNUC__) +#if defined(CONFIG_64) +#if defined(__GNUC__) && defined(__x86_64__) static inline void _mpd_mul_words(mpd_uint_t *hi, mpd_uint_t *lo, mpd_uint_t a, mpd_uint_t b) { @@ -52,9 +52,9 @@ *q = qq; *r = rr; } -/* END CONFIG_64: __GNUC__ */ +/* END __GNUC__ (amd64) */ -#elif defined (_MSC_VER) +#elif defined(_MSC_VER) #include #pragma intrinsic(_umul128) @@ -65,7 +65,7 @@ } void _mpd_div_words(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t hi, mpd_uint_t lo, mpd_uint_t d); -/* END CONFIG_64: _MSC_VER */ +/* END _MSC_VER (amd64) */ #else #error "need platform specific 128 bit multiplication and division" @@ -119,8 +119,8 @@ } /* END CONFIG_64 */ -#elif defined (CONFIG_32) -#if defined (ANSI) +#elif defined(CONFIG_32) +#if defined(ANSI) static inline void _mpd_mul_words(mpd_uint_t *hi, mpd_uint_t *lo, mpd_uint_t a, mpd_uint_t b) { @@ -129,7 +129,7 @@ hl = (mpd_uuint_t)a * b; *hi = hl >> 32; - *lo = hl; + *lo = (mpd_uint_t)hl; } static inline void @@ -138,12 +138,12 @@ mpd_uuint_t hl; hl = ((mpd_uuint_t)hi<<32) + lo; - *q = hl / d; /* quotient is known to fit */ - *r = hl - (mpd_uuint_t)(*q) * d; + *q = (mpd_uint_t)(hl / d); /* quotient is known to fit */ + *r = (mpd_uint_t)(hl - (mpd_uuint_t)(*q) * d); } -/* END CONFIG_32: ANSI */ +/* END ANSI */ -#elif defined(__GNUC__) +#elif defined(__GNUC__) && defined(__i386__) static inline void _mpd_mul_words(mpd_uint_t *hi, mpd_uint_t *lo, mpd_uint_t a, mpd_uint_t b) { @@ -173,9 +173,9 @@ *q = qq; *r = rr; } -/* END CONFIG_32: __GNUC__ */ +/* END __GNUC__ (i386) */ -#elif defined (_MSC_VER) +#elif defined(_MSC_VER) static inline void __cdecl _mpd_mul_words(mpd_uint_t *hi, mpd_uint_t *lo, mpd_uint_t a, mpd_uint_t b) { @@ -208,7 +208,7 @@ *q = qq; *r = rr; } -/* END CONFIG_32: _MSC_VER */ +/* END _MSC_VER (i386) */ #else #error "need platform specific 64 bit multiplication and division" @@ -265,17 +265,17 @@ ** Arithmetic with overflow checking ** ------------------------------------------------------------ */ -static inline size_t -add_size_t(size_t a, size_t b) +static inline mpd_size_t +add_size_t(mpd_size_t a, mpd_size_t b) { - if (a > SIZE_MAX - b) { + if (a > MPD_SIZE_MAX - b) { mpd_err_fatal("add_size_t(): overflow: check the context"); } return a + b; } -static inline size_t -sub_size_t(size_t a, size_t b) +static inline mpd_size_t +sub_size_t(mpd_size_t a, mpd_size_t b) { if (b > a) { mpd_err_fatal("sub_size_t(): overflow: check the context"); @@ -283,12 +283,12 @@ return a - b; } -#if SIZE_MAX != MPD_UINT_MAX - #error "adapt mul_size_t(), mod_mpd_ssize_t() and mulmod_size_t()" +#if MPD_SIZE_MAX != MPD_UINT_MAX + #error "adapt mul_size_t() and mulmod_size_t()" #endif -static inline size_t -mul_size_t(size_t a, size_t b) +static inline mpd_size_t +mul_size_t(mpd_size_t a, mpd_size_t b) { mpd_uint_t hi, lo; @@ -306,8 +306,8 @@ return (r < 0) ? r + m : r; } -static inline size_t -mulmod_size_t(size_t a, size_t b, size_t m) +static inline mpd_size_t +mulmod_size_t(mpd_size_t a, mpd_size_t b, mpd_size_t m) { mpd_uint_t hi, lo; mpd_uint_t q, r; From python-checkins at python.org Thu Jan 21 16:49:04 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 15:49:04 -0000 Subject: [Python-checkins] r77653 - python/branches/py3k-cdecimal/Modules/cdecimal/transpose.h Message-ID: Author: stefan.krah Date: Thu Jan 21 16:49:04 2010 New Revision: 77653 Log: Change size_t to mpd_size_t. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/transpose.h Modified: python/branches/py3k-cdecimal/Modules/cdecimal/transpose.h ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/transpose.h (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/transpose.h Thu Jan 21 16:49:04 2010 @@ -15,9 +15,9 @@ enum {FORWARD_CYCLE, BACKWARD_CYCLE}; -void std_trans(mpd_uint_t dest[], mpd_uint_t src[], size_t rows, size_t cols); -int transpose_pow2(mpd_uint_t *matrix, size_t rows, size_t cols); -void transpose_3xpow2(mpd_uint_t *matrix, size_t rows, size_t cols); +void std_trans(mpd_uint_t dest[], mpd_uint_t src[], mpd_size_t rows, mpd_size_t cols); +int transpose_pow2(mpd_uint_t *matrix, mpd_size_t rows, mpd_size_t cols); +void transpose_3xpow2(mpd_uint_t *matrix, mpd_size_t rows, mpd_size_t cols); static inline void pointerswap(mpd_uint_t **a, mpd_uint_t **b) From python-checkins at python.org Thu Jan 21 17:20:40 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 16:20:40 -0000 Subject: [Python-checkins] r77654 - python/branches/py3k-cdecimal/setup.py Message-ID: Author: stefan.krah Date: Thu Jan 21 17:20:40 2010 New Revision: 77654 Log: Adapt setup.py for 64-bit+CONFIG_32+ANSI. Modified: python/branches/py3k-cdecimal/setup.py Modified: python/branches/py3k-cdecimal/setup.py ============================================================================== --- python/branches/py3k-cdecimal/setup.py (original) +++ python/branches/py3k-cdecimal/setup.py Thu Jan 21 17:20:40 2010 @@ -1630,6 +1630,7 @@ 'cdecimal/docstrings.h', 'cdecimal/fnt.h', 'cdecimal/fourstep.h', + 'cdecimal/io.h', 'cdecimal/memory.h', 'cdecimal/mpdecimal.h', 'cdecimal/mpdecimal32.h', @@ -1644,17 +1645,21 @@ extra_objects = [] platform = util.get_platform() cc = sysconfig.get_config_var('CC') - size = sysconfig.get_config_var('SIZEOF_SIZE_T') - x87 = sysconfig.get_config_var('HAVE_GCC_ASM_FOR_X87') - if size == 8: - define_macros = [('CONFIG_64', '1')] - elif size == 4: + SIZEOF_SIZE_T = sysconfig.get_config_var('SIZEOF_SIZE_T') + HAVE_GCC_ASM_FOR_X87 = sysconfig.get_config_var('HAVE_GCC_ASM_FOR_X87') + define_macros = [('CONFIG_32', '1')] + if SIZEOF_SIZE_T == 8: + if HAVE_GCC_ASM_FOR_X87: # HAVE_GCC_ASM_FOR_AMD64 + define_macros = [('CONFIG_64', '1')] + else: + define_macros = [('CONFIG_32', '1'), ('ANSI', '1')] + elif SIZEOF_SIZE_T == 4: define_macros = [('CONFIG_32', '1')] - mtune = 'ANSI' - if x87 and 'gcc' in cc: + if HAVE_GCC_ASM_FOR_X87 and 'gcc' in cc: # XXX icc >= 11.0 and clang work as well. - mtune = 'PPRO' - define_macros.append((mtune, '1')) + define_macros.append(('PPRO', '1')) + else: + define_macros.append(('ANSI', '1')) else: raise DistutilsError("cdecimal: unsupported architecture") # Not recommended: TLS is very slow! From python-checkins at python.org Thu Jan 21 17:24:53 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 16:24:53 -0000 Subject: [Python-checkins] r77655 - python/branches/py3k-cdecimal/Doc/library/cdecimal.rst Message-ID: Author: stefan.krah Date: Thu Jan 21 17:24:52 2010 New Revision: 77655 Log: Add cdecimal documentation. Added: python/branches/py3k-cdecimal/Doc/library/cdecimal.rst (contents, props changed) Added: python/branches/py3k-cdecimal/Doc/library/cdecimal.rst ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Doc/library/cdecimal.rst Thu Jan 21 17:24:52 2010 @@ -0,0 +1,131 @@ +:mod:`cdecimal` --- Decimal fixed point and floating point arithmetic +===================================================================== + +.. module:: cdecimal + :synopsis: C-Implementation of the General Decimal Arithmetic Specification. + +.. moduleauthor:: Stefan Krah + +.. import modules for testing inline doctests with the Sphinx doctest builder +.. testsetup:: * + + import cdecimal + import math + from cdecimal import * + # make sure each group gets a fresh context + setcontext(Context()) + + +The :mod:`cdecimal` module is a C implementation of :mod:`decimal`. Since it is +almost fully compatible with :mod:`decimal`, this documentation will only list +the differences between the two modules. + + +Setting Context Values +---------------------- + +* *prec*, *Emin*, *Emax*, *rounding*, *capitals* and *_clamp* are implemented as + getters/setters. + +* An additional field *_allcr* toggles correct rounding for :meth:`exp`, + :meth:`ln` and :meth:`log10`. + +* *traps* and *flags* have the custom type :class:`SignalDict`, + which behaves like a dictionary for most purposes. This is the familiar + interface from :mod:`decimal`. + +* Internally, *traps* and *flags* are just C unsigned integers. :mod:`cdecimal` + provides the option to access the integers directly using the getters/setters + *_traps* and *_flags*. + +* Use of the two interfaces can be mixed freely. The following table shows + how the :class:`SignalDict` items and the C-flags are related: + + +---------------------------+------------------------------------+--------------------------------+ + | SignalDict | C signals | C conditions | + +===========================+====================================+================================+ + | :const:`InvalidOperation` | :const:`DecIEEEInvalidOperation` | n/a | + +---------------------------+------------------------------------+--------------------------------+ + | n/a | n/a | :const:`DecConversionSyntax` | + +---------------------------+------------------------------------+--------------------------------+ + | n/a | n/a | :const:`DecDivisionImpossible` | + +---------------------------+------------------------------------+--------------------------------+ + | n/a | n/a | :const:`DecDivisionUndefined` | + +---------------------------+------------------------------------+--------------------------------+ + | n/a | n/a | :const:`DecInvalidContext` | + +---------------------------+------------------------------------+--------------------------------+ + | n/a | n/a | :const:`DecInvalidOperation` | + +---------------------------+------------------------------------+--------------------------------+ + | n/a | n/a | :const:`DecMallocError` | + +---------------------------+------------------------------------+--------------------------------+ + | :const:`Clamped` | :const:`DecClamped` | :const:`DecClamped` | + +---------------------------+------------------------------------+--------------------------------+ + | :const:`DivisionByZero` | :const:`DecDivisionByZero` | :const:`DecDivisionByZero` | + +---------------------------+------------------------------------+--------------------------------+ + | :const:`Inexact` | :const:`DecInexact` | :const:`DecInexact` | + +---------------------------+------------------------------------+--------------------------------+ + | :const:`Rounded` | :const:`DecRounded` | :const:`DecRounded` | + +---------------------------+------------------------------------+--------------------------------+ + | :const:`Subnormal` | :const:`DecSubnormal` | :const:`DecSubnormal` | + +---------------------------+------------------------------------+--------------------------------+ + | :const:`Overflow` | :const:`DecOverflow` | :const:`DecOverflow` | + +---------------------------+------------------------------------+--------------------------------+ + | :const:`Underflow` | :const:`DecUnderflow` | :const:`DecUnderflow` | + +---------------------------+------------------------------------+--------------------------------+ + + +Context Limits +-------------- + + ++------------+-----------------+---------------------+------------------------------+ +| | decimal | cdecimal, 32-bit | cdecimal, 64-bit | ++============+=================+=====================+==============================+ +| max *Emax* | unlimited | :const:`425000000` | :const:`999999999999999999` | ++------------+-----------------+---------------------+------------------------------+ +| min *Emin* | unlimited | :const:`-425000000` | :const:`-999999999999999999` | ++------------+-----------------+---------------------+------------------------------+ +| max *prec* | unlimited | :const:`425000000` | :const:`999999999999999999` | ++------------+-----------------+---------------------+------------------------------+ +| min *Etop* | may be negative | :const:`0` | :const:`0` | ++------------+-----------------+---------------------+------------------------------+ + + +*Etop* is only relevant if *_clamp* is set to 1. In this case, the maximum exponent +is defined as *Etop* = *Emax* - (*prec*-1). + + +Thread local default contexts +----------------------------- + +When no context is given, all operations use the default context. In :mod:`decimal`, +this default context is thread local. For :mod:`cdecimal`, thread local default contexts +can be enabled at compile time. However, the performance penalty is so huge that +this is not the default. + +The consequences for threaded programs are: + +* One new context has to be created for each thread. + +* Only context methods or methods that take a context argument can be used. + + +Unlimited reading of decimals +----------------------------- + +The :class:`Decimal` constructor is supposed to read input as if there were no limits. +Since the context of cdecimal has limits, the following approach is used: + +If the :const:`Inexact` or :const:`Rounded` conditions occur during conversion, +:const:`InvalidOperation` is raised and the result is :const:`NaN`. In this case, +the :meth:`create_decimal` context method has to be used. + + +Correct rounding in the power method +------------------------------------ + +The :meth:`power()` method in :mod:`decimal` is correctly rounded. :mod:`cdecimal` +currently only guarantees an error less than one ULP (which is standard conforming). + + + From python-checkins at python.org Thu Jan 21 17:25:37 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 16:25:37 -0000 Subject: [Python-checkins] r77656 - python/branches/py3k-cdecimal/Doc/library/numeric.rst Message-ID: Author: stefan.krah Date: Thu Jan 21 17:25:36 2010 New Revision: 77656 Log: Add cdecimal documentation. Modified: python/branches/py3k-cdecimal/Doc/library/numeric.rst Modified: python/branches/py3k-cdecimal/Doc/library/numeric.rst ============================================================================== --- python/branches/py3k-cdecimal/Doc/library/numeric.rst (original) +++ python/branches/py3k-cdecimal/Doc/library/numeric.rst Thu Jan 21 17:25:36 2010 @@ -8,9 +8,9 @@ The modules described in this chapter provide numeric and math-related functions and data types. The :mod:`numbers` module defines an abstract hierarchy of numeric types. The :mod:`math` and :mod:`cmath` modules contain various -mathematical functions for floating-point and complex numbers. For users more -interested in decimal accuracy than in speed, the :mod:`decimal` module supports -exact representations of decimal numbers. +mathematical functions for floating-point and complex numbers. The :mod:`decimal` +and :mod:`cdecimal` modules support exact representations of decimal numbers, +using arbitrary precision arithmetic. The following modules are documented in this chapter: @@ -20,6 +20,7 @@ numbers.rst math.rst cmath.rst + cdecimal.rst decimal.rst fractions.rst random.rst From python-checkins at python.org Thu Jan 21 17:36:48 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 16:36:48 -0000 Subject: [Python-checkins] r77657 - python/branches/py3k-cdecimal/Lib/test/decimal_tests.py Message-ID: Author: stefan.krah Date: Thu Jan 21 17:36:47 2010 New Revision: 77657 Log: Add unified tests for decimal and cdecimal. Added: python/branches/py3k-cdecimal/Lib/test/decimal_tests.py (contents, props changed) Added: python/branches/py3k-cdecimal/Lib/test/decimal_tests.py ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_tests.py Thu Jan 21 17:36:47 2010 @@ -0,0 +1,1964 @@ +# Copyright (c) 2004 Python Software Foundation. +# All rights reserved. + +# Written by Eric Price +# and Facundo Batista +# and Raymond Hettinger +# and Aahz (aahz at pobox.com) +# and Tim Peters + +""" +These are the test cases for the Decimal and Cdecimal modules. + +There are two groups of tests, Arithmetic and Behaviour. The former test +the Decimal arithmetic using the tests provided by Mike Cowlishaw. The latter +test the pythonic behaviour according to PEP 327. + +Cowlishaw's tests can be downloaded from: + + www2.hursley.ibm.com/decimal/dectest.zip + +This test module can be called from command line with one parameter (Arithmetic +or Behaviour) to test each part, or without parameter to test both parts. If +you're working through IDLE, you can import this test module and call test_main() +with the corresponding argument. +""" + +import glob +import math +import os, sys +import pickle, copy +import unittest +import numbers +from test.support import run_unittest, run_doctest, is_resource_enabled +import random +try: + import threading +except ImportError: + threading = None + + +if sys.modules['have_decimal']: + from decimal import * + HAVE_CDECIMAL = False + HAVE_CONFIG_64 = False +elif sys.modules['have_cdecimal']: + from cdecimal import * + HAVE_CDECIMAL = True + HAVE_CONFIG_64 = (MAX_EMAX == 999999999999999999) + + +if HAVE_CDECIMAL and (not HAVE_CONFIG_64): + readcontext = Context() + readcontext.unsafe_setprec(1070000000) + readcontext.unsafe_setemax(1070000000) + readcontext.unsafe_setemin(-1070000000) + readcontext._traps = 0 + def read_unlimited(v, context): + savetraps = context._traps + saveflags = context._flags + context._traps = 0 + vv = Decimal(v, context) + context._traps = savetraps + if context._flags & DecInvalidOperation: + # Do it the hard way + context._flags = saveflags + vv = readcontext.create_decimal(v) + return vv +else: + def read_unlimited(v, context): + return Decimal(v, context) + +if HAVE_CDECIMAL: + def is_integer(v): + return v.is_integer() + def is_special(v): + return v.is_special() + def raise_error(context, flag): + context.flags[flag] = True + if context.traps[flag]: + raise flag + def make_grouping(lst): + return ''.join([chr(x) for x in lst]) + def get_fmt(x, override=None, fmt='n'): + return Decimal.__format__(Decimal(x), fmt, override) +else: + def is_integer(v): + return v._isinteger() + def is_special(v): + return v._is_special + def raise_error(context, flag): + context._raise_error(flag) + def make_grouping(lst): + return lst + def get_fmt(x, locale, fmt='n'): + return Decimal.__format__(Decimal(x), fmt, _localeconv=locale) + + +# Useful Test Constant +Signals = tuple(getcontext().flags.keys()) + +# Tests are built around these assumed context defaults. +# test_main() restores the original context. +def init(): + global ORIGINAL_CONTEXT + ORIGINAL_CONTEXT = getcontext().copy() + DefaultTestContext = Context( + prec = 9, + rounding = ROUND_HALF_EVEN, + traps = dict.fromkeys(Signals, 0) + ) + setcontext(DefaultTestContext) + +TESTDATADIR = 'decimaltestdata' +if __name__ == '__main__': + file = sys.argv[0] +else: + file = __file__ +testdir = os.path.dirname(file) or os.curdir +directory = testdir + os.sep + TESTDATADIR + os.sep + +skip_expected = not os.path.isdir(directory) + +# list of individual .decTest test ids that correspond to tests that +# we're skipping for one reason or another. +skipped_test_ids = [ + 'scbx164', # skipping apparently implementation-specific scaleb + 'scbx165', # tests, pending clarification of scaleb rules. +] + +# XXX: BEGIN CDECIMAL SKIPS +cdecimal_status_diff = {} +cdecimal_result_diff = {} +cdecimal_skipped_disagreements = [] +if HAVE_CDECIMAL: + if HAVE_CONFIG_64: + # 64 bit version: With a reduced working precision in mpd_qpow() + # the status matches. + cdecimal_status_diff = { + "pwsx803": ([Inexact, Rounded, Subnormal, Underflow], + [Inexact, Rounded]), + "pwsx805": ([Inexact, Rounded, Subnormal, Underflow], + [Inexact, Rounded]) + } + # These are skipped for decNumber, too. + cdecimal_result_diff = { + "powx4302": ("1.000000", "1.000001"), + "powx4303": ("1.000000", "1.000001"), + "powx4342": ("1.000000", "0.9999999"), + "powx4343": ("1.000000", "0.9999999") + } + # Disagreements: + # http://bugs.python.org/issue7049 + cdecimal_skipped_disagreements = ['pwmx325', 'pwmx326'] +# END CDECIMAL SKIPS + +# Make sure it actually raises errors when not expected and caught in flags +# Slower, since it runs some things several times. +EXTENDEDERRORTEST = False + +#Map the test cases' error names to the actual errors +ErrorNames = {'clamped' : Clamped, + 'conversion_syntax' : InvalidOperation, + 'division_by_zero' : DivisionByZero, + 'division_impossible' : InvalidOperation, + 'division_undefined' : InvalidOperation, + 'inexact' : Inexact, + 'invalid_context' : InvalidOperation, + 'invalid_operation' : InvalidOperation, + 'overflow' : Overflow, + 'rounded' : Rounded, + 'subnormal' : Subnormal, + 'underflow' : Underflow} + + +def Nonfunction(*args): + """Doesn't do anything.""" + return None + +RoundingDict = {'ceiling' : ROUND_CEILING, #Maps test-case names to roundings. + 'down' : ROUND_DOWN, + 'floor' : ROUND_FLOOR, + 'half_down' : ROUND_HALF_DOWN, + 'half_even' : ROUND_HALF_EVEN, + 'half_up' : ROUND_HALF_UP, + 'up' : ROUND_UP, + '05up' : ROUND_05UP} + +# Name adapter to be able to change the Decimal and Context +# interface without changing the test files from Cowlishaw +nameAdapter = {'and':'logical_and', + 'apply':'_apply', + 'class':'number_class', + 'comparesig':'compare_signal', + 'comparetotal':'compare_total', + 'comparetotmag':'compare_total_mag', + 'copy':'copy_decimal', + 'copyabs':'copy_abs', + 'copynegate':'copy_negate', + 'copysign':'copy_sign', + 'divideint':'divide_int', + 'invert':'logical_invert', + 'iscanonical':'is_canonical', + 'isfinite':'is_finite', + 'isinfinite':'is_infinite', + 'isnan':'is_nan', + 'isnormal':'is_normal', + 'isqnan':'is_qnan', + 'issigned':'is_signed', + 'issnan':'is_snan', + 'issubnormal':'is_subnormal', + 'iszero':'is_zero', + 'maxmag':'max_mag', + 'minmag':'min_mag', + 'nextminus':'next_minus', + 'nextplus':'next_plus', + 'nexttoward':'next_toward', + 'or':'logical_or', + 'reduce':'normalize', + 'remaindernear':'remainder_near', + 'samequantum':'same_quantum', + 'squareroot':'sqrt', + 'toeng':'to_eng_string', + 'tointegral':'to_integral_value', + 'tointegralx':'to_integral_exact', + 'tosci':'to_sci_string', + 'xor':'logical_xor', + } + +# The following functions return True/False rather than a Decimal instance + +LOGICAL_FUNCTIONS = ( + 'is_canonical', + 'is_finite', + 'is_infinite', + 'is_nan', + 'is_normal', + 'is_qnan', + 'is_signed', + 'is_snan', + 'is_subnormal', + 'is_zero', + 'same_quantum', + ) + +# For some operations (currently exp, ln, log10, power), the decNumber +# reference implementation imposes additional restrictions on the +# context and operands. These restrictions are not part of the +# specification; however, the effect of these restrictions does show +# up in some of the testcases. We skip testcases that violate these +# restrictions, since Decimal behaves differently from decNumber for +# these testcases so these testcases would otherwise fail. + +decNumberRestricted = ('power', 'ln', 'log10', 'exp') +DEC_MAX_MATH = 999999 +def outside_decNumber_bounds(v, context): + if (context.prec > DEC_MAX_MATH or + context.Emax > DEC_MAX_MATH or + -context.Emin > DEC_MAX_MATH): + return True + if not is_special(v) and v and ( + v.adjusted() > DEC_MAX_MATH or + v.adjusted() < 1-2*DEC_MAX_MATH): + return True + return False + +class DecimalTest(unittest.TestCase): + """Class which tests the Decimal class against the test cases. + + Changed for unittest. + """ + def setUp(self): + self.context = Context() + self.ignore_list = ['#'] + # Basically, a # means return NaN InvalidOperation. + # Different from a sNaN in trim + + self.ChangeDict = {'precision' : self.change_precision, + 'rounding' : self.change_rounding_method, + 'maxexponent' : self.change_max_exponent, + 'minexponent' : self.change_min_exponent, + 'clamp' : self.change_clamp} + + def eval_file(self, file): + global skip_expected + if skip_expected: + raise unittest.SkipTest + return + for line in open(file): + line = line.replace('\r\n', '').replace('\n', '') + #print line + try: + t = self.eval_line(line) + except DecimalException as exception: + #Exception raised where there shoudn't have been one. + self.fail('Exception "'+exception.__class__.__name__ + '" raised on line '+line) + + return + + def eval_line(self, s): + if s.find(' -> ') >= 0 and s[:2] != '--' and not s.startswith(' --'): + s = (s.split('->')[0] + '->' + + s.split('->')[1].split('--')[0]).strip() + else: + s = s.split('--')[0].strip() + + for ignore in self.ignore_list: + if s.find(ignore) >= 0: + #print s.split()[0], 'NotImplemented--', ignore + return + if not s: + return + elif ':' in s: + return self.eval_directive(s) + else: + return self.eval_equation(s) + + def eval_directive(self, s): + funct, value = (x.strip().lower() for x in s.split(':')) + if funct == 'rounding': + value = RoundingDict[value] + else: + try: + value = int(value) + except ValueError: + pass + + funct = self.ChangeDict.get(funct, Nonfunction) + funct(value) + + def eval_equation(self, s): + #global DEFAULT_PRECISION + #print DEFAULT_PRECISION + + if not TEST_ALL and random.random() < 0.90: + return + + try: + Sides = s.split('->') + L = Sides[0].strip().split() + id = L[0] + if DEBUG: + print("Test ", id, end=" ") + funct = L[1].lower() + valstemp = L[2:] + L = Sides[1].strip().split() + ans = L[0] + exceptions = L[1:] + except (TypeError, AttributeError, IndexError): + raise InvalidOperation + def FixQuotes(val): + val = val.replace("''", 'SingleQuote').replace('""', 'DoubleQuote') + val = val.replace("'", '').replace('"', '') + val = val.replace('SingleQuote', "'").replace('DoubleQuote', '"') + return val + + if id in skipped_test_ids or id in cdecimal_skipped_disagreements: # XXX + return + + fname = nameAdapter.get(funct, funct) + if fname == 'rescale': + return + funct = getattr(self.context, fname) + vals = [] + conglomerate = '' + quote = 0 + theirexceptions = [ErrorNames[x.lower()] for x in exceptions] + if id in cdecimal_status_diff: # XXX + t = cdecimal_status_diff[id] + theirexceptions = t[0] + + for exception in Signals: + self.context.traps[exception] = 1 #Catch these bugs... + for exception in theirexceptions: + self.context.traps[exception] = 0 + for i, val in enumerate(valstemp): + if val.count("'") % 2 == 1: + quote = 1 - quote + if quote: + conglomerate = conglomerate + ' ' + val + continue + else: + val = conglomerate + val + conglomerate = '' + v = FixQuotes(val) + if fname in ('to_sci_string', 'to_eng_string'): + if EXTENDEDERRORTEST: + for error in theirexceptions: + self.context.traps[error] = 1 + try: + funct(self.context.create_decimal(v)) + except error: + pass + except Signals as e: + self.fail("Raised %s in %s when %s disabled" % \ + (e, s, error)) + else: + self.fail("Did not raise %s in %s" % (error, s)) + self.context.traps[error] = 0 + v = self.context.create_decimal(v) + else: + v = read_unlimited(v, self.context) # XXX + vals.append(v) + + ans = FixQuotes(ans) + + # XXX: Negative Etop and three argument power/powmod. + if HAVE_CDECIMAL: + if self.context._clamp and self.context.prec > self.context.Emax: + # extra.decTest has some of these: I don't think this combination + # is a valid context: Etop would be negative! + # (squareroot.decTest has a single one, too) + if DEBUG: print(self.context) + return + if fname == 'power' and len(vals) == 3: + # name is different + fname = 'powmod' + funct = getattr(self.context, fname) + + # skip tests that are related to bounds imposed in the decNumber + # reference implementation + if fname in decNumberRestricted: + if fname == 'power': + if not (is_integer(vals[1]) and + -1999999997 <= vals[1] <= 999999999): + if outside_decNumber_bounds(vals[0], self.context) or \ + outside_decNumber_bounds(vals[1], self.context): + #print "Skipping test %s" % s + return + else: + if outside_decNumber_bounds(vals[0], self.context): + #print "Skipping test %s" % s + return + + + if EXTENDEDERRORTEST and fname not in ('to_sci_string', 'to_eng_string'): + for error in theirexceptions: + self.context.traps[error] = 1 + try: + funct(*vals) + except error: + pass + except Signals as e: + self.fail("Raised %s in %s when %s disabled" % \ + (e, s, error)) + else: + self.fail("Did not raise %s in %s" % (error, s)) + self.context.traps[error] = 0 + if DEBUG: + print("--", self.context) + try: + result = str(funct(*vals)) + if fname in LOGICAL_FUNCTIONS: + result = str(int(eval(result))) # 'True', 'False' -> '1', '0' + except Signals as error: + self.fail("Raised %s in %s" % (error, s)) + except: #Catch any error long enough to state the test case. + print("ERROR:", s) + raise + + myexceptions = self.getexceptions() + self.context.clear_flags() + + myexceptions.sort(key=repr) + theirexceptions.sort(key=repr) + + if id in cdecimal_result_diff: # XXX + t = cdecimal_result_diff[id] + self.assert_(result == t[0] and ans == t[1]) + else: + self.assertEqual(result, ans, + 'Incorrect answer for ' + s + ' -- got ' + result) + + self.assertEqual(myexceptions, theirexceptions, + 'Incorrect flags set in ' + s + ' -- got ' + str(myexceptions)) + return + + def getexceptions(self): + return [e for e in Signals if self.context.flags[e]] + + def change_precision(self, prec): + if (not HAVE_CDECIMAL) or HAVE_CONFIG_64: + self.context.prec = prec + else: # XXX + self.context.unsafe_setprec(prec) + def change_rounding_method(self, rounding): + self.context.rounding = rounding + def change_min_exponent(self, exp): + if (not HAVE_CDECIMAL) or HAVE_CONFIG_64: + self.context.Emin = exp + else: # XXX + self.context.unsafe_setemin(exp) + def change_max_exponent(self, exp): + if (not HAVE_CDECIMAL) or HAVE_CONFIG_64: + self.context.Emax = exp + else: # XXX + self.context.unsafe_setemax(exp) + def change_clamp(self, clamp): + self.context._clamp = clamp + + + +# The following classes test the behaviour of Decimal according to PEP 327 + +class DecimalExplicitConstructionTest(unittest.TestCase): + '''Unit tests for Explicit Construction cases of Decimal.''' + + def test_explicit_empty(self): + self.assertEqual(Decimal(), Decimal("0")) + + def test_explicit_from_None(self): + self.assertRaises(TypeError, Decimal, None) + + def test_explicit_from_int(self): + + #positive + d = Decimal(45) + self.assertEqual(str(d), '45') + + #very large positive + d = Decimal(500000123) + self.assertEqual(str(d), '500000123') + + #negative + d = Decimal(-45) + self.assertEqual(str(d), '-45') + + #zero + d = Decimal(0) + self.assertEqual(str(d), '0') + + def test_explicit_from_string(self): + + #empty + self.assertEqual(str(Decimal('')), 'NaN') + + #int + self.assertEqual(str(Decimal('45')), '45') + + #float + self.assertEqual(str(Decimal('45.34')), '45.34') + + #engineer notation + self.assertEqual(str(Decimal('45e2')), '4.5E+3') + + #just not a number + self.assertEqual(str(Decimal('ugly')), 'NaN') + + #leading and trailing whitespace permitted + self.assertEqual(str(Decimal('1.3E4 \n')), '1.3E+4') + self.assertEqual(str(Decimal(' -7.89')), '-7.89') + + def test_explicit_from_tuples(self): + + #zero + d = Decimal( (0, (0,), 0) ) + self.assertEqual(str(d), '0') + + #int + d = Decimal( (1, (4, 5), 0) ) + self.assertEqual(str(d), '-45') + + #float + d = Decimal( (0, (4, 5, 3, 4), -2) ) + self.assertEqual(str(d), '45.34') + + #weird + d = Decimal( (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) ) + self.assertEqual(str(d), '-4.34913534E-17') + + #wrong number of items + self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 9, 1)) ) + + #bad sign + self.assertRaises(ValueError, Decimal, (8, (4, 3, 4, 9, 1), 2) ) + self.assertRaises(TypeError, Decimal, (0., (4, 3, 4, 9, 1), 2) ) + self.assertRaises(TypeError, Decimal, (Decimal(1), (4, 3, 4, 9, 1), 2)) + + #bad exp + self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 9, 1), 'wrong!') ) + self.assertRaises(TypeError, Decimal, (1, (4, 3, 4, 9, 1), 0.) ) + self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 9, 1), '1') ) + + #bad coefficients + self.assertRaises(TypeError, Decimal, (1, (4, 3, 4, None, 1), 2) ) + self.assertRaises(ValueError, Decimal, (1, (4, -3, 4, 9, 1), 2) ) + self.assertRaises(ValueError, Decimal, (1, (4, 10, 4, 9, 1), 2) ) + self.assertRaises(TypeError, Decimal, (1, (4, 3, 4, 'a', 1), 2) ) + + def test_explicit_from_Decimal(self): + + #positive + d = Decimal(45) + e = Decimal(d) + self.assertEqual(str(e), '45') + + #very large positive + d = Decimal(500000123) + e = Decimal(d) + self.assertEqual(str(e), '500000123') + + #negative + d = Decimal(-45) + e = Decimal(d) + self.assertEqual(str(e), '-45') + + #zero + d = Decimal(0) + e = Decimal(d) + self.assertEqual(str(e), '0') + + def test_explicit_context_create_decimal(self): + + nc = copy.copy(getcontext()) + nc.prec = 3 + + # empty + d = Decimal() + self.assertEqual(str(d), '0') + d = nc.create_decimal() + self.assertEqual(str(d), '0') + + # from None + self.assertRaises(TypeError, nc.create_decimal, None) + + # from int + d = nc.create_decimal(456) + self.assertTrue(isinstance(d, Decimal)) + self.assertEqual(nc.create_decimal(45678), + nc.create_decimal('457E+2')) + + # from string + d = Decimal('456789') + self.assertEqual(str(d), '456789') + d = nc.create_decimal('456789') + self.assertEqual(str(d), '4.57E+5') + # leading and trailing whitespace should result in a NaN; + # spaces are already checked in Cowlishaw's test-suite, so + # here we just check that a trailing newline results in a NaN + self.assertEqual(str(nc.create_decimal('3.14\n')), 'NaN') + + # from tuples + d = Decimal( (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) ) + self.assertEqual(str(d), '-4.34913534E-17') + d = nc.create_decimal( (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) ) + self.assertEqual(str(d), '-4.35E-17') + + # from Decimal + prevdec = Decimal(500000123) + d = Decimal(prevdec) + self.assertEqual(str(d), '500000123') + d = nc.create_decimal(prevdec) + self.assertEqual(str(d), '5.00E+8') + + def test_unicode_digits(self): + test_values = { + '\uff11': '1', + '\u0660.\u0660\u0663\u0667\u0662e-\u0663' : '0.0000372', + '-nan\u0c68\u0c6a\u0c66\u0c66' : '-NaN2400', + } + for input, expected in test_values.items(): + self.assertEqual(str(Decimal(input)), expected) + + +class DecimalImplicitConstructionTest(unittest.TestCase): + '''Unit tests for Implicit Construction cases of Decimal.''' + + def test_implicit_from_None(self): + self.assertRaises(TypeError, eval, 'Decimal(5) + None', globals()) + + def test_implicit_from_int(self): + #normal + self.assertEqual(str(Decimal(5) + 45), '50') + #exceeding precision + self.assertEqual(Decimal(5) + 123456789000, Decimal(123456789000)) + + def test_implicit_from_string(self): + self.assertRaises(TypeError, eval, 'Decimal(5) + "3"', globals()) + + def test_implicit_from_float(self): + self.assertRaises(TypeError, eval, 'Decimal(5) + 2.2', globals()) + + def test_implicit_from_Decimal(self): + self.assertEqual(Decimal(5) + Decimal(45), Decimal(50)) + + def test_rop(self): + # Allow other classes to be trained to interact with Decimals + class E: + def __divmod__(self, other): + return 'divmod ' + str(other) + def __rdivmod__(self, other): + return str(other) + ' rdivmod' + def __lt__(self, other): + return 'lt ' + str(other) + def __gt__(self, other): + return 'gt ' + str(other) + def __le__(self, other): + return 'le ' + str(other) + def __ge__(self, other): + return 'ge ' + str(other) + def __eq__(self, other): + return 'eq ' + str(other) + def __ne__(self, other): + return 'ne ' + str(other) + + self.assertEqual(divmod(E(), Decimal(10)), 'divmod 10') + self.assertEqual(divmod(Decimal(10), E()), '10 rdivmod') + self.assertEqual(eval('Decimal(10) < E()'), 'gt 10') + self.assertEqual(eval('Decimal(10) > E()'), 'lt 10') + self.assertEqual(eval('Decimal(10) <= E()'), 'ge 10') + self.assertEqual(eval('Decimal(10) >= E()'), 'le 10') + self.assertEqual(eval('Decimal(10) == E()'), 'eq 10') + self.assertEqual(eval('Decimal(10) != E()'), 'ne 10') + + # insert operator methods and then exercise them + oplist = [ + ('+', '__add__', '__radd__'), + ('-', '__sub__', '__rsub__'), + ('*', '__mul__', '__rmul__'), + ('/', '__truediv__', '__rtruediv__'), + ('%', '__mod__', '__rmod__'), + ('//', '__floordiv__', '__rfloordiv__'), + ('**', '__pow__', '__rpow__') + ] + + for sym, lop, rop in oplist: + setattr(E, lop, lambda self, other: 'str' + lop + str(other)) + setattr(E, rop, lambda self, other: str(other) + rop + 'str') + self.assertEqual(eval('E()' + sym + 'Decimal(10)'), + 'str' + lop + '10') + self.assertEqual(eval('Decimal(10)' + sym + 'E()'), + '10' + rop + 'str') + + +class DecimalFormatTest(unittest.TestCase): + '''Unit tests for the format function.''' + def test_formatting(self): + # triples giving a format, a Decimal, and the expected result + test_values = [ + ('e', '0E-15', '0e-15'), + ('e', '2.3E-15', '2.3e-15'), + ('e', '2.30E+2', '2.30e+2'), # preserve significant zeros + ('e', '2.30000E-15', '2.30000e-15'), + ('e', '1.23456789123456789e40', '1.23456789123456789e+40'), + ('e', '1.5', '1.5e+0'), + ('e', '0.15', '1.5e-1'), + ('e', '0.015', '1.5e-2'), + ('e', '0.0000000000015', '1.5e-12'), + ('e', '15.0', '1.50e+1'), + ('e', '-15', '-1.5e+1'), + ('e', '0', '0e+0'), + ('e', '0E1', '0e+1'), + ('e', '0.0', '0e-1'), + ('e', '0.00', '0e-2'), + ('.6e', '0E-15', '0.000000e-9'), + ('.6e', '0', '0.000000e+6'), + ('.6e', '9.999999', '9.999999e+0'), + ('.6e', '9.9999999', '1.000000e+1'), + ('.6e', '-1.23e5', '-1.230000e+5'), + ('.6e', '1.23456789e-3', '1.234568e-3'), + ('f', '0', '0'), + ('f', '0.0', '0.0'), + ('f', '0E-2', '0.00'), + ('f', '0.00E-8', '0.0000000000'), + ('f', '0E1', '0'), # loses exponent information + ('f', '3.2E1', '32'), + ('f', '3.2E2', '320'), + ('f', '3.20E2', '320'), + ('f', '3.200E2', '320.0'), + ('f', '3.2E-6', '0.0000032'), + ('.6f', '0E-15', '0.000000'), # all zeros treated equally + ('.6f', '0E1', '0.000000'), + ('.6f', '0', '0.000000'), + ('.0f', '0', '0'), # no decimal point + ('.0f', '0e-2', '0'), + ('.0f', '3.14159265', '3'), + ('.1f', '3.14159265', '3.1'), + ('.4f', '3.14159265', '3.1416'), + ('.6f', '3.14159265', '3.141593'), + ('.7f', '3.14159265', '3.1415926'), # round-half-even! + ('.8f', '3.14159265', '3.14159265'), + ('.9f', '3.14159265', '3.141592650'), + + ('g', '0', '0'), + ('g', '0.0', '0.0'), + ('g', '0E1', '0e+1'), + ('G', '0E1', '0E+1'), + ('g', '0E-5', '0.00000'), + ('g', '0E-6', '0.000000'), + ('g', '0E-7', '0e-7'), + ('g', '-0E2', '-0e+2'), + ('.0g', '3.14159265', '3'), # 0 sig fig -> 1 sig fig + ('.1g', '3.14159265', '3'), + ('.2g', '3.14159265', '3.1'), + ('.5g', '3.14159265', '3.1416'), + ('.7g', '3.14159265', '3.141593'), + ('.8g', '3.14159265', '3.1415926'), # round-half-even! + ('.9g', '3.14159265', '3.14159265'), + ('.10g', '3.14159265', '3.14159265'), # don't pad + + ('%', '0E1', '0%'), + ('%', '0E0', '0%'), + ('%', '0E-1', '0%'), + ('%', '0E-2', '0%'), + ('%', '0E-3', '0.0%'), + ('%', '0E-4', '0.00%'), + + ('.3%', '0', '0.000%'), # all zeros treated equally + ('.3%', '0E10', '0.000%'), + ('.3%', '0E-10', '0.000%'), + ('.3%', '2.34', '234.000%'), + ('.3%', '1.234567', '123.457%'), + ('.0%', '1.23', '123%'), + + ('e', 'NaN', 'NaN'), + ('f', '-NaN123', '-NaN123'), + ('+g', 'NaN456', '+NaN456'), + ('.3e', 'Inf', 'Infinity'), + ('.16f', '-Inf', '-Infinity'), + ('.0g', '-sNaN', '-sNaN'), + + ('', '1.00', '1.00'), + + # test alignment and padding + ('6', '123', ' 123'), + ('<6', '123', '123 '), + ('>6', '123', ' 123'), + ('^6', '123', ' 123 '), + ('=+6', '123', '+ 123'), + ('#<10', 'NaN', 'NaN#######'), + ('#<10', '-4.3', '-4.3######'), + ('#<+10', '0.0130', '+0.0130###'), + ('#< 10', '0.0130', ' 0.0130###'), + ('@>10', '-Inf', '@-Infinity'), + ('#>5', '-Inf', '-Infinity'), + ('?^5', '123', '?123?'), + ('%^6', '123', '%123%%'), + (' ^6', '-45.6', '-45.6 '), + ('/=10', '-45.6', '-/////45.6'), + ('/=+10', '45.6', '+/////45.6'), + ('/= 10', '45.6', ' /////45.6'), + + # thousands separator + (',', '1234567', '1,234,567'), + (',', '123456', '123,456'), + (',', '12345', '12,345'), + (',', '1234', '1,234'), + (',', '123', '123'), + (',', '12', '12'), + (',', '1', '1'), + (',', '0', '0'), + (',', '-1234567', '-1,234,567'), + (',', '-123456', '-123,456'), + ('7,', '123456', '123,456'), + ('8,', '123456', ' 123,456'), + ('08,', '123456', '0,123,456'), # special case: extra 0 needed + ('+08,', '123456', '+123,456'), # but not if there's a sign + (' 08,', '123456', ' 123,456'), + ('08,', '-123456', '-123,456'), + ('+09,', '123456', '+0,123,456'), + # ... with fractional part... + ('07,', '1234.56', '1,234.56'), + ('08,', '1234.56', '1,234.56'), + ('09,', '1234.56', '01,234.56'), + ('010,', '1234.56', '001,234.56'), + ('011,', '1234.56', '0,001,234.56'), + ('012,', '1234.56', '0,001,234.56'), + ('08,.1f', '1234.5', '01,234.5'), + # no thousands separators in fraction part + (',', '1.23456789', '1.23456789'), + (',%', '123.456789', '12,345.6789%'), + (',e', '123456', '1.23456e+5'), + (',E', '123456', '1.23456E+5'), + + # issue 6850 + ('a=-7.0', '0.12345', 'aaaa0.1'), + ] + for fmt, d, result in test_values: + self.assertEqual(format(Decimal(d), fmt), result) + + def test_n_format(self): + try: + from locale import CHAR_MAX + except ImportError: + return + + # Set up some localeconv-like dictionaries + en_US = { + 'decimal_point' : '.', + 'grouping' : make_grouping([3, 3, 0]), + 'thousands_sep' : ',' + } + + fr_FR = { + 'decimal_point' : ',', + 'grouping' : make_grouping([CHAR_MAX]), + 'thousands_sep' : '' + } + + ru_RU = { + 'decimal_point' : ',', + 'grouping': make_grouping([3, 3, 0]), + 'thousands_sep' : ' ' + } + + crazy = { + 'decimal_point' : '&', + 'grouping': make_grouping([1, 4, 2, CHAR_MAX]), + 'thousands_sep' : '-' + } + + dotsep_wide = { + 'decimal_point' : b'\xc2\xbf'.decode('utf-8'), + 'grouping': make_grouping([3, 3, 0]), + 'thousands_sep' : b'\xc2\xb4'.decode('utf-8') + } + + self.assertEqual(get_fmt(Decimal('12.7'), en_US), '12.7') + self.assertEqual(get_fmt(Decimal('12.7'), fr_FR), '12,7') + self.assertEqual(get_fmt(Decimal('12.7'), ru_RU), '12,7') + self.assertEqual(get_fmt(Decimal('12.7'), crazy), '1-2&7') + + self.assertEqual(get_fmt(123456789, en_US), '123,456,789') + self.assertEqual(get_fmt(123456789, fr_FR), '123456789') + self.assertEqual(get_fmt(123456789, ru_RU), '123 456 789') + self.assertEqual(get_fmt(1234567890123, crazy), '123456-78-9012-3') + + self.assertEqual(get_fmt(123456789, en_US, '.6n'), '1.23457e+8') + self.assertEqual(get_fmt(123456789, fr_FR, '.6n'), '1,23457e+8') + self.assertEqual(get_fmt(123456789, ru_RU, '.6n'), '1,23457e+8') + self.assertEqual(get_fmt(123456789, crazy, '.6n'), '1&23457e+8') + + # zero padding + self.assertEqual(get_fmt(1234, fr_FR, '03n'), '1234') + self.assertEqual(get_fmt(1234, fr_FR, '04n'), '1234') + self.assertEqual(get_fmt(1234, fr_FR, '05n'), '01234') + self.assertEqual(get_fmt(1234, fr_FR, '06n'), '001234') + + self.assertEqual(get_fmt(12345, en_US, '05n'), '12,345') + self.assertEqual(get_fmt(12345, en_US, '06n'), '12,345') + self.assertEqual(get_fmt(12345, en_US, '07n'), '012,345') + self.assertEqual(get_fmt(12345, en_US, '08n'), '0,012,345') + self.assertEqual(get_fmt(12345, en_US, '09n'), '0,012,345') + self.assertEqual(get_fmt(12345, en_US, '010n'), '00,012,345') + + self.assertEqual(get_fmt(123456, crazy, '06n'), '1-2345-6') + self.assertEqual(get_fmt(123456, crazy, '07n'), '1-2345-6') + self.assertEqual(get_fmt(123456, crazy, '08n'), '1-2345-6') + self.assertEqual(get_fmt(123456, crazy, '09n'), '01-2345-6') + self.assertEqual(get_fmt(123456, crazy, '010n'), '0-01-2345-6') + self.assertEqual(get_fmt(123456, crazy, '011n'), '0-01-2345-6') + self.assertEqual(get_fmt(123456, crazy, '012n'), '00-01-2345-6') + self.assertEqual(get_fmt(123456, crazy, '013n'), '000-01-2345-6') + + # wide char separator and decimal point + self.assertEqual(get_fmt(Decimal('-1.5'), dotsep_wide, '020n'), + '-0?000?000?000?001?5') + +class DecimalArithmeticOperatorsTest(unittest.TestCase): + '''Unit tests for all arithmetic operators, binary and unary.''' + + def test_addition(self): + + d1 = Decimal('-11.1') + d2 = Decimal('22.2') + + #two Decimals + self.assertEqual(d1+d2, Decimal('11.1')) + self.assertEqual(d2+d1, Decimal('11.1')) + + #with other type, left + c = d1 + 5 + self.assertEqual(c, Decimal('-6.1')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 5 + d1 + self.assertEqual(c, Decimal('-6.1')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 += d2 + self.assertEqual(d1, Decimal('11.1')) + + #inline with other type + d1 += 5 + self.assertEqual(d1, Decimal('16.1')) + + def test_subtraction(self): + + d1 = Decimal('-11.1') + d2 = Decimal('22.2') + + #two Decimals + self.assertEqual(d1-d2, Decimal('-33.3')) + self.assertEqual(d2-d1, Decimal('33.3')) + + #with other type, left + c = d1 - 5 + self.assertEqual(c, Decimal('-16.1')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 5 - d1 + self.assertEqual(c, Decimal('16.1')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 -= d2 + self.assertEqual(d1, Decimal('-33.3')) + + #inline with other type + d1 -= 5 + self.assertEqual(d1, Decimal('-38.3')) + + def test_multiplication(self): + + d1 = Decimal('-5') + d2 = Decimal('3') + + #two Decimals + self.assertEqual(d1*d2, Decimal('-15')) + self.assertEqual(d2*d1, Decimal('-15')) + + #with other type, left + c = d1 * 5 + self.assertEqual(c, Decimal('-25')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 5 * d1 + self.assertEqual(c, Decimal('-25')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 *= d2 + self.assertEqual(d1, Decimal('-15')) + + #inline with other type + d1 *= 5 + self.assertEqual(d1, Decimal('-75')) + + def test_division(self): + + d1 = Decimal('-5') + d2 = Decimal('2') + + #two Decimals + self.assertEqual(d1/d2, Decimal('-2.5')) + self.assertEqual(d2/d1, Decimal('-0.4')) + + #with other type, left + c = d1 / 4 + self.assertEqual(c, Decimal('-1.25')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 4 / d1 + self.assertEqual(c, Decimal('-0.8')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 /= d2 + self.assertEqual(d1, Decimal('-2.5')) + + #inline with other type + d1 /= 4 + self.assertEqual(d1, Decimal('-0.625')) + + def test_floor_division(self): + + d1 = Decimal('5') + d2 = Decimal('2') + + #two Decimals + self.assertEqual(d1//d2, Decimal('2')) + self.assertEqual(d2//d1, Decimal('0')) + + #with other type, left + c = d1 // 4 + self.assertEqual(c, Decimal('1')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 7 // d1 + self.assertEqual(c, Decimal('1')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 //= d2 + self.assertEqual(d1, Decimal('2')) + + #inline with other type + d1 //= 2 + self.assertEqual(d1, Decimal('1')) + + def test_powering(self): + + d1 = Decimal('5') + d2 = Decimal('2') + + #two Decimals + self.assertEqual(d1**d2, Decimal('25')) + self.assertEqual(d2**d1, Decimal('32')) + + #with other type, left + c = d1 ** 4 + self.assertEqual(c, Decimal('625')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 7 ** d1 + self.assertEqual(c, Decimal('16807')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 **= d2 + self.assertEqual(d1, Decimal('25')) + + #inline with other type + d1 **= 4 + self.assertEqual(d1, Decimal('390625')) + + def test_module(self): + + d1 = Decimal('5') + d2 = Decimal('2') + + #two Decimals + self.assertEqual(d1%d2, Decimal('1')) + self.assertEqual(d2%d1, Decimal('2')) + + #with other type, left + c = d1 % 4 + self.assertEqual(c, Decimal('1')) + self.assertEqual(type(c), type(d1)) + + #with other type, right + c = 7 % d1 + self.assertEqual(c, Decimal('2')) + self.assertEqual(type(c), type(d1)) + + #inline with decimal + d1 %= d2 + self.assertEqual(d1, Decimal('1')) + + #inline with other type + d1 %= 4 + self.assertEqual(d1, Decimal('1')) + + def test_floor_div_module(self): + + d1 = Decimal('5') + d2 = Decimal('2') + + #two Decimals + (p, q) = divmod(d1, d2) + self.assertEqual(p, Decimal('2')) + self.assertEqual(q, Decimal('1')) + self.assertEqual(type(p), type(d1)) + self.assertEqual(type(q), type(d1)) + + #with other type, left + (p, q) = divmod(d1, 4) + self.assertEqual(p, Decimal('1')) + self.assertEqual(q, Decimal('1')) + self.assertEqual(type(p), type(d1)) + self.assertEqual(type(q), type(d1)) + + #with other type, right + (p, q) = divmod(7, d1) + self.assertEqual(p, Decimal('1')) + self.assertEqual(q, Decimal('2')) + self.assertEqual(type(p), type(d1)) + self.assertEqual(type(q), type(d1)) + + def test_unary_operators(self): + self.assertEqual(+Decimal(45), Decimal(+45)) # + + self.assertEqual(-Decimal(45), Decimal(-45)) # - + self.assertEqual(abs(Decimal(45)), abs(Decimal(-45))) # abs + + def test_nan_comparisons(self): + n = Decimal('NaN') + s = Decimal('sNaN') + i = Decimal('Inf') + f = Decimal('2') + for x, y in [(n, n), (n, i), (i, n), (n, f), (f, n), + (s, n), (n, s), (s, i), (i, s), (s, f), (f, s), (s, s)]: + self.assertTrue(x != y) + self.assertTrue(not (x == y)) + self.assertTrue(not (x < y)) + self.assertTrue(not (x <= y)) + self.assertTrue(not (x > y)) + self.assertTrue(not (x >= y)) + +# The following are two functions used to test threading in the next class + +def thfunc1(cls): + d1 = Decimal(1) + d3 = Decimal(3) + test1 = d1/d3 + cls.synchro.wait() + test2 = d1/d3 + cls.finish1.set() + + cls.assertEqual(test1, Decimal('0.333333333333333333333333')) + cls.assertEqual(test2, Decimal('0.333333333333333333333333')) + return + +def thfunc2(cls): + d1 = Decimal(1) + d3 = Decimal(3) + test1 = d1/d3 + thiscontext = getcontext() + thiscontext.prec = 18 + test2 = d1/d3 + cls.synchro.set() + cls.finish2.set() + + cls.assertEqual(test1, Decimal('0.333333333333333333333333')) + cls.assertEqual(test2, Decimal('0.333333333333333333')) + return + + +class DecimalUseOfContextTest(unittest.TestCase): + '''Unit tests for Use of Context cases in Decimal.''' + + try: + import threading + except ImportError: + threading = None + + # Take care executing this test from IDLE, there's an issue in threading + # that hangs IDLE and I couldn't find it + + def test_threading(self): + # Test the "threading isolation" of a Context. Also test changing + # the DefaultContext, which acts as a template for the thread-local + # contexts. + saveprec = DefaultContext.prec + DefaultContext.prec = 24 + + self.synchro = threading.Event() + self.finish1 = threading.Event() + self.finish2 = threading.Event() + + th1 = threading.Thread(target=thfunc1, args=(self,)) + th2 = threading.Thread(target=thfunc2, args=(self,)) + + th1.start() + th2.start() + + self.finish1.wait() + self.finish2.wait() + + DefaultContext.prec = saveprec + return + + if threading is None: + del test_threading + + +class DecimalUsabilityTest(unittest.TestCase): + '''Unit tests for Usability cases of Decimal.''' + + def test_comparison_operators(self): + + da = Decimal('23.42') + db = Decimal('23.42') + dc = Decimal('45') + + #two Decimals + self.assertTrue(dc > da) + self.assertTrue(dc >= da) + self.assertTrue(da < dc) + self.assertTrue(da <= dc) + self.assertEqual(da, db) + self.assertTrue(da != dc) + self.assertTrue(da <= db) + self.assertTrue(da >= db) + + #a Decimal and an int + self.assertTrue(dc > 23) + self.assertTrue(23 < dc) + self.assertEqual(dc, 45) + + #a Decimal and uncomparable + self.assertNotEqual(da, 'ugly') + self.assertNotEqual(da, 32.7) + self.assertNotEqual(da, object()) + self.assertNotEqual(da, object) + + # sortable + a = list(map(Decimal, range(100))) + b = a[:] + random.shuffle(a) + a.sort() + self.assertEqual(a, b) + + def test_copy_and_deepcopy_methods(self): + d = Decimal('43.24') + c = copy.copy(d) + self.assertEqual(id(c), id(d)) + dc = copy.deepcopy(d) + self.assertEqual(id(dc), id(d)) + + def test_hash_method(self): + #just that it's hashable + hash(Decimal(23)) + + test_values = [Decimal(sign*(2**m + n)) + for m in [0, 14, 15, 16, 17, 30, 31, + 32, 33, 62, 63, 64, 65, 66] + for n in range(-10, 10) + for sign in [-1, 1]] + test_values.extend([ + Decimal("-0"), # zeros + Decimal("0.00"), + Decimal("-0.000"), + Decimal("0E10"), + Decimal("-0E12"), + Decimal("10.0"), # negative exponent + Decimal("-23.00000"), + Decimal("1230E100"), # positive exponent + Decimal("-4.5678E50"), + # a value for which hash(n) != hash(n % (2**64-1)) + # in Python pre-2.6 + Decimal(2**64 + 2**32 - 1), + # selection of values which fail with the old (before + # version 2.6) long.__hash__ + Decimal("1.634E100"), + Decimal("90.697E100"), + Decimal("188.83E100"), + Decimal("1652.9E100"), + Decimal("56531E100"), + ]) + + # check that hash(d) == hash(int(d)) for integral values + for value in test_values: + self.assertEqual(hash(value), hash(int(value))) + + #the same hash that to an int + self.assertEqual(hash(Decimal(23)), hash(23)) + self.assertRaises(TypeError, hash, Decimal('NaN')) + self.assertTrue(hash(Decimal('Inf'))) + self.assertTrue(hash(Decimal('-Inf'))) + + # check that the value of the hash doesn't depend on the + # current context (issue #1757) + c = getcontext() + old_precision = c.prec + x = Decimal("123456789.1") + + c.prec = 6 + h1 = hash(x) + c.prec = 10 + h2 = hash(x) + c.prec = 16 + h3 = hash(x) + + self.assertEqual(h1, h2) + self.assertEqual(h1, h3) + c.prec = old_precision + + def test_min_and_max_methods(self): + + d1 = Decimal('15.32') + d2 = Decimal('28.5') + l1 = 15 + l2 = 28 + + #between Decimals + self.assertTrue(min(d1,d2) is d1) + self.assertTrue(min(d2,d1) is d1) + self.assertTrue(max(d1,d2) is d2) + self.assertTrue(max(d2,d1) is d2) + + #between Decimal and long + self.assertTrue(min(d1,l2) is d1) + self.assertTrue(min(l2,d1) is d1) + self.assertTrue(max(l1,d2) is d2) + self.assertTrue(max(d2,l1) is d2) + + def test_as_nonzero(self): + #as false + self.assertFalse(Decimal(0)) + #as true + self.assertTrue(Decimal('0.372')) + + def test_tostring_methods(self): + #Test str and repr methods. + + d = Decimal('15.32') + self.assertEqual(str(d), '15.32') # str + self.assertEqual(repr(d), "Decimal('15.32')") # repr + + def test_tonum_methods(self): + #Test float and int methods. + + d1 = Decimal('66') + d2 = Decimal('15.32') + + #int + self.assertEqual(int(d1), 66) + self.assertEqual(int(d2), 15) + + #float + self.assertEqual(float(d1), 66) + self.assertEqual(float(d2), 15.32) + + #floor + test_pairs = [ + ('123.00', 123), + ('3.2', 3), + ('3.54', 3), + ('3.899', 3), + ('-2.3', -3), + ('-11.0', -11), + ('0.0', 0), + ('-0E3', 0), + ] + for d, i in test_pairs: + self.assertEqual(math.floor(Decimal(d)), i) + self.assertRaises(ValueError, math.floor, Decimal('-NaN')) + self.assertRaises(ValueError, math.floor, Decimal('sNaN')) + self.assertRaises(ValueError, math.floor, Decimal('NaN123')) + self.assertRaises(OverflowError, math.floor, Decimal('Inf')) + self.assertRaises(OverflowError, math.floor, Decimal('-Inf')) + + #ceiling + test_pairs = [ + ('123.00', 123), + ('3.2', 4), + ('3.54', 4), + ('3.899', 4), + ('-2.3', -2), + ('-11.0', -11), + ('0.0', 0), + ('-0E3', 0), + ] + for d, i in test_pairs: + self.assertEqual(math.ceil(Decimal(d)), i) + self.assertRaises(ValueError, math.ceil, Decimal('-NaN')) + self.assertRaises(ValueError, math.ceil, Decimal('sNaN')) + self.assertRaises(ValueError, math.ceil, Decimal('NaN123')) + self.assertRaises(OverflowError, math.ceil, Decimal('Inf')) + self.assertRaises(OverflowError, math.ceil, Decimal('-Inf')) + + #round, single argument + test_pairs = [ + ('123.00', 123), + ('3.2', 3), + ('3.54', 4), + ('3.899', 4), + ('-2.3', -2), + ('-11.0', -11), + ('0.0', 0), + ('-0E3', 0), + ('-3.5', -4), + ('-2.5', -2), + ('-1.5', -2), + ('-0.5', 0), + ('0.5', 0), + ('1.5', 2), + ('2.5', 2), + ('3.5', 4), + ] + for d, i in test_pairs: + self.assertEqual(round(Decimal(d)), i) + self.assertRaises(ValueError, round, Decimal('-NaN')) + self.assertRaises(ValueError, round, Decimal('sNaN')) + self.assertRaises(ValueError, round, Decimal('NaN123')) + self.assertRaises(OverflowError, round, Decimal('Inf')) + self.assertRaises(OverflowError, round, Decimal('-Inf')) + + #round, two arguments; this is essentially equivalent + #to quantize, which is already extensively tested + test_triples = [ + ('123.456', -4, '0E+4'), + ('123.456', -3, '0E+3'), + ('123.456', -2, '1E+2'), + ('123.456', -1, '1.2E+2'), + ('123.456', 0, '123'), + ('123.456', 1, '123.5'), + ('123.456', 2, '123.46'), + ('123.456', 3, '123.456'), + ('123.456', 4, '123.4560'), + ('123.455', 2, '123.46'), + ('123.445', 2, '123.44'), + ('Inf', 4, 'NaN'), + ('-Inf', -23, 'NaN'), + ('sNaN314', 3, 'NaN314'), + ] + for d, n, r in test_triples: + self.assertEqual(str(round(Decimal(d), n)), r) + + + + def test_eval_round_trip(self): + + #with zero + d = Decimal( (0, (0,), 0) ) + self.assertEqual(d, eval(repr(d))) + + #int + d = Decimal( (1, (4, 5), 0) ) + self.assertEqual(d, eval(repr(d))) + + #float + d = Decimal( (0, (4, 5, 3, 4), -2) ) + self.assertEqual(d, eval(repr(d))) + + #weird + d = Decimal( (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) ) + self.assertEqual(d, eval(repr(d))) + + def test_as_tuple(self): + + #with zero + d = Decimal(0) + self.assertEqual(d.as_tuple(), (0, (0,), 0) ) + + #int + d = Decimal(-45) + self.assertEqual(d.as_tuple(), (1, (4, 5), 0) ) + + #complicated string + d = Decimal("-4.34913534E-17") + self.assertEqual(d.as_tuple(), (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) ) + + # XXX empty tuple, like in the NaN case + d = Decimal("Infinity") + if HAVE_CDECIMAL: + self.assertEqual(d.as_tuple(), (0, (), 'F') ) + else: + self.assertEqual(d.as_tuple(), (0, (0,), 'F') ) + + #leading zeros in coefficient should be stripped + d = Decimal( (0, (0, 0, 4, 0, 5, 3, 4), -2) ) + self.assertEqual(d.as_tuple(), (0, (4, 0, 5, 3, 4), -2) ) + d = Decimal( (1, (0, 0, 0), 37) ) + self.assertEqual(d.as_tuple(), (1, (0,), 37)) + d = Decimal( (1, (), 37) ) + self.assertEqual(d.as_tuple(), (1, (0,), 37)) + + #leading zeros in NaN diagnostic info should be stripped + d = Decimal( (0, (0, 0, 4, 0, 5, 3, 4), 'n') ) + self.assertEqual(d.as_tuple(), (0, (4, 0, 5, 3, 4), 'n') ) + d = Decimal( (1, (0, 0, 0), 'N') ) + self.assertEqual(d.as_tuple(), (1, (), 'N') ) + d = Decimal( (1, (), 'n') ) + self.assertEqual(d.as_tuple(), (1, (), 'n') ) + + # XXX coefficient in infinity should raise an error + if not HAVE_CDECIMAL: + d = Decimal( (0, (4, 5, 3, 4), 'F') ) + self.assertEqual(d.as_tuple(), (0, (0,), 'F')) + d = Decimal( (1, (0, 2, 7, 1), 'F') ) + self.assertEqual(d.as_tuple(), (1, (0,), 'F')) + + def test_immutability_operations(self): + # Do operations and check that it didn't change change internal objects. + # XXX Cdecimal: checked extensively in the library runtest. + if HAVE_CDECIMAL: return + + d1 = Decimal('-25e55') + b1 = Decimal('-25e55') + d2 = Decimal('33e+33') + b2 = Decimal('33e+33') + + def checkSameDec(operation, useOther=False): + if useOther: + eval("d1." + operation + "(d2)") + self.assertEqual(d1._sign, b1._sign) + self.assertEqual(d1._int, b1._int) + self.assertEqual(d1._exp, b1._exp) + self.assertEqual(d2._sign, b2._sign) + self.assertEqual(d2._int, b2._int) + self.assertEqual(d2._exp, b2._exp) + else: + eval("d1." + operation + "()") + self.assertEqual(d1._sign, b1._sign) + self.assertEqual(d1._int, b1._int) + self.assertEqual(d1._exp, b1._exp) + return + + Decimal(d1) + self.assertEqual(d1._sign, b1._sign) + self.assertEqual(d1._int, b1._int) + self.assertEqual(d1._exp, b1._exp) + + checkSameDec("__abs__") + checkSameDec("__add__", True) + checkSameDec("__divmod__", True) + checkSameDec("__eq__", True) + checkSameDec("__ne__", True) + checkSameDec("__le__", True) + checkSameDec("__lt__", True) + checkSameDec("__ge__", True) + checkSameDec("__gt__", True) + checkSameDec("__float__") + checkSameDec("__floordiv__", True) + checkSameDec("__hash__") + checkSameDec("__int__") + checkSameDec("__trunc__") + checkSameDec("__mod__", True) + checkSameDec("__mul__", True) + checkSameDec("__neg__") + checkSameDec("__bool__") + checkSameDec("__pos__") + checkSameDec("__pow__", True) + checkSameDec("__radd__", True) + checkSameDec("__rdivmod__", True) + checkSameDec("__repr__") + checkSameDec("__rfloordiv__", True) + checkSameDec("__rmod__", True) + checkSameDec("__rmul__", True) + checkSameDec("__rpow__", True) + checkSameDec("__rsub__", True) + checkSameDec("__str__") + checkSameDec("__sub__", True) + checkSameDec("__truediv__", True) + checkSameDec("adjusted") + checkSameDec("as_tuple") + checkSameDec("compare", True) + checkSameDec("max", True) + checkSameDec("min", True) + checkSameDec("normalize") + checkSameDec("quantize", True) + checkSameDec("remainder_near", True) + checkSameDec("same_quantum", True) + checkSameDec("sqrt") + checkSameDec("to_eng_string") + checkSameDec("to_integral") + + def test_subclassing(self): + # Different behaviours when subclassing Decimal + + class MyDecimal(Decimal): + pass + + d1 = MyDecimal(1) + d2 = MyDecimal(2) + d = d1 + d2 + self.assertTrue(type(d) is Decimal) + + d = d1.max(d2) + self.assertTrue(type(d) is Decimal) + + def test_implicit_context(self): + # Check results when context given implicitly. (Issue 2478) + c = getcontext() + self.assertEqual(str(Decimal(0).sqrt()), + str(c.sqrt(Decimal(0)))) + + def test_conversions_from_int(self): + # Check that methods taking a second Decimal argument will + # always accept an integer in place of a Decimal. + self.assertEqual(Decimal(4).compare(3), + Decimal(4).compare(Decimal(3))) + self.assertEqual(Decimal(4).compare_signal(3), + Decimal(4).compare_signal(Decimal(3))) + self.assertEqual(Decimal(4).compare_total(3), + Decimal(4).compare_total(Decimal(3))) + self.assertEqual(Decimal(4).compare_total_mag(3), + Decimal(4).compare_total_mag(Decimal(3))) + self.assertEqual(Decimal(10101).logical_and(1001), + Decimal(10101).logical_and(Decimal(1001))) + self.assertEqual(Decimal(10101).logical_or(1001), + Decimal(10101).logical_or(Decimal(1001))) + self.assertEqual(Decimal(10101).logical_xor(1001), + Decimal(10101).logical_xor(Decimal(1001))) + self.assertEqual(Decimal(567).max(123), + Decimal(567).max(Decimal(123))) + self.assertEqual(Decimal(567).max_mag(123), + Decimal(567).max_mag(Decimal(123))) + self.assertEqual(Decimal(567).min(123), + Decimal(567).min(Decimal(123))) + self.assertEqual(Decimal(567).min_mag(123), + Decimal(567).min_mag(Decimal(123))) + self.assertEqual(Decimal(567).next_toward(123), + Decimal(567).next_toward(Decimal(123))) + self.assertEqual(Decimal(1234).quantize(100), + Decimal(1234).quantize(Decimal(100))) + self.assertEqual(Decimal(768).remainder_near(1234), + Decimal(768).remainder_near(Decimal(1234))) + self.assertEqual(Decimal(123).rotate(1), + Decimal(123).rotate(Decimal(1))) + self.assertEqual(Decimal(1234).same_quantum(1000), + Decimal(1234).same_quantum(Decimal(1000))) + self.assertEqual(Decimal('9.123').scaleb(-100), + Decimal('9.123').scaleb(Decimal(-100))) + self.assertEqual(Decimal(456).shift(-1), + Decimal(456).shift(Decimal(-1))) + + self.assertEqual(Decimal(-12).fma(Decimal(45), 67), + Decimal(-12).fma(Decimal(45), Decimal(67))) + self.assertEqual(Decimal(-12).fma(45, 67), + Decimal(-12).fma(Decimal(45), Decimal(67))) + self.assertEqual(Decimal(-12).fma(45, Decimal(67)), + Decimal(-12).fma(Decimal(45), Decimal(67))) + + +class DecimalPythonAPItests(unittest.TestCase): + + def test_abc(self): + self.assertTrue(issubclass(Decimal, numbers.Number)) + self.assertTrue(not issubclass(Decimal, numbers.Real)) + self.assertTrue(isinstance(Decimal(0), numbers.Number)) + self.assertTrue(not isinstance(Decimal(0), numbers.Real)) + + def test_pickle(self): + d = Decimal('-3.141590000') + p = pickle.dumps(d) + e = pickle.loads(p) + self.assertEqual(d, e) + + def test_int(self): + for x in range(-250, 250): + s = '%0.2f' % (x / 100.0) + # should work the same as for floats + self.assertEqual(int(Decimal(s)), int(float(s))) + # should work the same as to_integral in the ROUND_DOWN mode + d = Decimal(s) + r = d.to_integral(ROUND_DOWN) + self.assertEqual(Decimal(int(d)), r) + + self.assertRaises(ValueError, int, Decimal('-nan')) + self.assertRaises(ValueError, int, Decimal('snan')) + self.assertRaises(OverflowError, int, Decimal('inf')) + self.assertRaises(OverflowError, int, Decimal('-inf')) + + def test_trunc(self): + for x in range(-250, 250): + s = '%0.2f' % (x / 100.0) + # should work the same as for floats + self.assertEqual(int(Decimal(s)), int(float(s))) + # should work the same as to_integral in the ROUND_DOWN mode + d = Decimal(s) + r = d.to_integral(ROUND_DOWN) + self.assertEqual(Decimal(math.trunc(d)), r) + + def test_from_float(self): + + class MyDecimal(Decimal): + pass + + r = MyDecimal.from_float(0.1) + self.assertEqual(type(r), MyDecimal) + self.assertEqual(str(r), + '0.1000000000000000055511151231257827021181583404541015625') + bigint = 12345678901234567890123456789 + self.assertEqual(MyDecimal.from_float(bigint), MyDecimal(bigint)) + self.assertTrue(MyDecimal.from_float(float('nan')).is_qnan()) + self.assertTrue(MyDecimal.from_float(float('inf')).is_infinite()) + self.assertTrue(MyDecimal.from_float(float('-inf')).is_infinite()) + self.assertEqual(str(MyDecimal.from_float(float('nan'))), + str(Decimal('NaN'))) + self.assertEqual(str(MyDecimal.from_float(float('inf'))), + str(Decimal('Infinity'))) + self.assertEqual(str(MyDecimal.from_float(float('-inf'))), + str(Decimal('-Infinity'))) + self.assertRaises(TypeError, MyDecimal.from_float, 'abc') + for i in range(200): + x = random.expovariate(0.01) * (random.random() * 2.0 - 1.0) + self.assertEqual(x, float(MyDecimal.from_float(x))) # roundtrip + + def test_create_decimal_from_float(self): + context = Context(prec=5, rounding=ROUND_DOWN) + self.assertEqual( + context.create_decimal_from_float(math.pi), + Decimal('3.1415') + ) + context = Context(prec=5, rounding=ROUND_UP) + self.assertEqual( + context.create_decimal_from_float(math.pi), + Decimal('3.1416') + ) + context = Context(prec=5, traps=[Inexact]) + self.assertRaises( + Inexact, + context.create_decimal_from_float, + math.pi + ) + self.assertEqual(repr(context.create_decimal_from_float(-0.0)), + "Decimal('-0')") + self.assertEqual(repr(context.create_decimal_from_float(1.0)), + "Decimal('1')") + self.assertEqual(repr(context.create_decimal_from_float(10)), + "Decimal('10')") + +class ContextAPItests(unittest.TestCase): + + def test_pickle(self): + c = Context() + e = pickle.loads(pickle.dumps(c)) + if HAVE_CDECIMAL: # XXX + self.assertEqual(c.prec, e.prec) + self.assertEqual(c.Emin, e.Emin) + self.assertEqual(c.Emax, e.Emax) + self.assertEqual(c.rounding, e.rounding) + self.assertEqual(c.capitals, e.capitals) + self.assertEqual(c.traps, e.traps) + self.assertEqual(c.flags, e.flags) + self.assertEqual(c._clamp, e._clamp) + else: + for k in vars(c): + v1 = vars(c)[k] + v2 = vars(e)[k] + self.assertEqual(v1, v2) + + def test_equality_with_other_types(self): + self.assertTrue(Decimal(10) in ['a', 1.0, Decimal(10), (1,2), {}]) + self.assertTrue(Decimal(10) not in ['a', 1.0, (1,2), {}]) + + def test_copy(self): + # All copies should be deep + c = Context() + d = c.copy() + self.assertNotEqual(id(c), id(d)) + self.assertNotEqual(id(c.flags), id(d.flags)) + self.assertNotEqual(id(c.traps), id(d.traps)) + +class WithStatementTest(unittest.TestCase): + # Can't do these as docstrings until Python 2.6 + # as doctest can't handle __future__ statements + + def test_localcontext(self): + # Use a copy of the current context in the block + orig_ctx = getcontext() + with localcontext() as enter_ctx: + set_ctx = getcontext() + final_ctx = getcontext() + self.assertTrue(orig_ctx is final_ctx, 'did not restore context correctly') + self.assertTrue(orig_ctx is not set_ctx, 'did not copy the context') + self.assertTrue(set_ctx is enter_ctx, '__enter__ returned wrong context') + + def test_localcontextarg(self): + # Use a copy of the supplied context in the block + orig_ctx = getcontext() + new_ctx = Context(prec=42) + with localcontext(new_ctx) as enter_ctx: + set_ctx = getcontext() + final_ctx = getcontext() + self.assertTrue(orig_ctx is final_ctx, 'did not restore context correctly') + self.assertTrue(set_ctx.prec == new_ctx.prec, 'did not set correct context') + self.assertTrue(new_ctx is not set_ctx, 'did not copy the context') + self.assertTrue(set_ctx is enter_ctx, '__enter__ returned wrong context') + +class ContextFlags(unittest.TestCase): + def test_flags_irrelevant(self): + # check that the result (numeric result + flags raised) of an + # arithmetic operation doesn't depend on the current flags + + context = Context(prec=9, Emin = -425000000, Emax = 425000000, + rounding=ROUND_HALF_EVEN, traps=[], flags=[]) + + # operations that raise various flags, in the form (function, arglist) + operations = [ + (context._apply, [Decimal("100E-425000010")]), + (context.sqrt, [Decimal(2)]), + (context.add, [Decimal("1.23456789"), Decimal("9.87654321")]), + (context.multiply, [Decimal("1.23456789"), Decimal("9.87654321")]), + (context.subtract, [Decimal("1.23456789"), Decimal("9.87654321")]), + ] + + # try various flags individually, then a whole lot at once + flagsets = [[Inexact], [Rounded], [Underflow], [Clamped], [Subnormal], + [Inexact, Rounded, Underflow, Clamped, Subnormal]] + + for fn, args in operations: + # find answer and flags raised using a clean context + context.clear_flags() + ans = fn(*args) + flags = [k for k, v in context.flags.items() if v] + + for extra_flags in flagsets: + # set flags, before calling operation + context.clear_flags() + for flag in extra_flags: + raise_error(context, flag) # XXX + new_ans = fn(*args) + + # flags that we expect to be set after the operation + expected_flags = list(flags) + for flag in extra_flags: + if flag not in expected_flags: + expected_flags.append(flag) + expected_flags.sort(key=id) + + # flags we actually got + new_flags = [k for k,v in context.flags.items() if v] + new_flags.sort(key=id) + + self.assertEqual(ans, new_ans, + "operation produces different answers depending on flags set: " + + "expected %s, got %s." % (ans, new_ans)) + self.assertEqual(new_flags, expected_flags, + "operation raises different flags depending on flags set: " + + "expected %s, got %s" % (expected_flags, new_flags)) + +def test_main(arith=False, verbose=None, todo_tests=None, debug=None): + """ Execute the tests. + + Runs all arithmetic tests if arith is True or if the "decimal" resource + is enabled in regrtest.py + """ + + init() + global TEST_ALL, DEBUG + TEST_ALL = arith or is_resource_enabled('decimal') + DEBUG = debug + + if todo_tests is None: + test_classes = [ + DecimalExplicitConstructionTest, + DecimalImplicitConstructionTest, + DecimalArithmeticOperatorsTest, + DecimalFormatTest, + DecimalUseOfContextTest, + DecimalUsabilityTest, + DecimalPythonAPItests, + ContextAPItests, + DecimalTest, + WithStatementTest, + ContextFlags + ] + else: + test_classes = [DecimalTest] + + # Dynamically build custom test definition for each file in the test + # directory and add the definitions to the DecimalTest class. This + # procedure insures that new files do not get skipped. + for filename in os.listdir(directory): + if '.decTest' not in filename or filename.startswith("."): + continue + head, tail = filename.split('.') + if todo_tests is not None and head not in todo_tests: + continue + tester = lambda self, f=filename: self.eval_file(directory + f) + setattr(DecimalTest, 'test_' + head, tester) + del filename, head, tail, tester + + + try: + run_unittest(*test_classes) + if todo_tests is None: + import decimal as DecimalModule + run_doctest(DecimalModule, verbose) + finally: + setcontext(ORIGINAL_CONTEXT) + +if __name__ == '__main__': + import optparse + p = optparse.OptionParser("test_decimal.py [--debug] [{--skip | test1 [test2 [...]]}]") + p.add_option('--debug', '-d', action='store_true', help='shows the test number and context before each test') + p.add_option('--skip', '-s', action='store_true', help='skip over 90% of the arithmetic tests') + (opt, args) = p.parse_args() + + if opt.skip: + test_main(arith=False, verbose=True) + elif args: + test_main(arith=True, verbose=True, todo_tests=args, debug=opt.debug) + else: + test_main(arith=True, verbose=True) From python-checkins at python.org Thu Jan 21 17:39:07 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 16:39:07 -0000 Subject: [Python-checkins] r77658 - python/branches/py3k-cdecimal/Lib/test/test_cdecimal.py Message-ID: Author: stefan.krah Date: Thu Jan 21 17:39:07 2010 New Revision: 77658 Log: test_cdecimal.py imports unified tests. Modified: python/branches/py3k-cdecimal/Lib/test/test_cdecimal.py Modified: python/branches/py3k-cdecimal/Lib/test/test_cdecimal.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_cdecimal.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_cdecimal.py Thu Jan 21 17:39:07 2010 @@ -1,1937 +1,22 @@ -# Copyright (c) 2004 Python Software Foundation. +# Copyright (c) 2010 Python Software Foundation. # All rights reserved. -# Written by Eric Price -# and Facundo Batista -# and Raymond Hettinger -# and Aahz (aahz at pobox.com) -# and Tim Peters -# Adapted for cdecimal by Stefan Krah. +import sys +from test.support import import_fresh_module +# abuse sys.modules as a communication channel +sys.modules['have_cdecimal'] = True +sys.modules['have_decimal'] = False +m = import_fresh_module('test.decimal_tests') -""" -These are the test cases for the cdecimal module. - -There are two groups of tests, Arithmetic and Behaviour. The former test -the Decimal arithmetic using the tests provided by Mike Cowlishaw. The latter -test the pythonic behaviour according to PEP 327. - -Cowlishaw's tests can be downloaded from: - - www2.hursley.ibm.com/decimal/dectest.zip - -This test module can be called from command line with one parameter (Arithmetic -or Behaviour) to test each part, or without parameter to test both parts. If -you're working through IDLE, you can import this test module and call test_main() -with the corresponding argument. -""" - -import glob -import math -import os, sys, platform -import pickle, copy -import unittest -from cdecimal import * -import numbers -from test.support import run_unittest, run_doctest, is_resource_enabled -import random -try: - import threading -except ImportError: - threading = None - - -HAVE_64BIT = (platform.architecture()[0] == '64bit') - -# Useful Test Constant -Signals = tuple(getcontext().flags.keys()) - -# Tests are built around these assumed context defaults. -# test_main() restores the original context. -def init(): - global ORIGINAL_CONTEXT - ORIGINAL_CONTEXT = getcontext().copy() - DefaultTestContext = Context( - prec = 9, - rounding = ROUND_HALF_EVEN, - traps = dict.fromkeys(Signals, 0) - ) - setcontext(DefaultTestContext) - - -# The official limits for the 32-bit version are -425000000 -# and 425000000. The following values are safe for all tests -# in the test suite. -readcontext = Context() -readcontext.unsafe_setprec(1070000000) -readcontext.unsafe_setemax(1070000000) -readcontext.unsafe_setemin(-1070000000) -readcontext._traps = 0 - - -TESTDATADIR = 'decimaltestdata' -if __name__ == '__main__': - file = sys.argv[0] -else: - file = __file__ -testdir = os.path.dirname(file) or os.curdir -directory = testdir + os.sep + TESTDATADIR + os.sep - -skip_expected = not os.path.isdir(directory) - -# list of individual .decTest test ids that correspond to tests that -# we're skipping for one reason or another. -skipped_test_ids = [ - 'scbx164', # skipping apparently implementation-specific scaleb - 'scbx165', # tests, pending clarification of scaleb rules. -] - -# XXX: BEGIN FASTDEC SKIPS -status_cases = {} -if HAVE_64BIT: - # 64 bit version: With a reduced working precision in mpd_qpow() - # the status matches. - status_cases = { - "pwsx803": ([Inexact, Rounded, Subnormal, Underflow], [Inexact, Rounded]), - "pwsx805": ([Inexact, Rounded, Subnormal, Underflow], [Inexact, Rounded]) - } - -# These are skipped for decNumber, too. They might as well be added to -# the ULP cases. -skip_cases = { - "powx4302": ("1.000000", "1.000001"), - "powx4303": ("1.000000", "1.000001"), - "powx4342": ("1.000000", "0.9999999"), - "powx4343": ("1.000000", "0.9999999") -} - -# Disagreements: -# pwmx325 power 0 1 1234567890 -> NaN Invalid_operation -- got 0 -disagree = ['pwmx325', 'pwmx326'] -# END FASTDEC SKIPS - - -# Make sure it actually raises errors when not expected and caught in flags -# Slower, since it runs some things several times. -EXTENDEDERRORTEST = True - -#Map the test cases' error names to the actual errors -ErrorNames = {'clamped' : Clamped, - 'conversion_syntax' : InvalidOperation, - 'division_by_zero' : DivisionByZero, - 'division_impossible' : InvalidOperation, - 'division_undefined' : InvalidOperation, - 'inexact' : Inexact, - 'invalid_context' : InvalidOperation, - 'invalid_operation' : InvalidOperation, - 'overflow' : Overflow, - 'rounded' : Rounded, - 'subnormal' : Subnormal, - 'underflow' : Underflow} - - -def Nonfunction(*args): - """Doesn't do anything.""" - return None - -RoundingDict = {'ceiling' : ROUND_CEILING, #Maps test-case names to roundings. - 'down' : ROUND_DOWN, - 'floor' : ROUND_FLOOR, - 'half_down' : ROUND_HALF_DOWN, - 'half_even' : ROUND_HALF_EVEN, - 'half_up' : ROUND_HALF_UP, - 'up' : ROUND_UP, - '05up' : ROUND_05UP} - -# Name adapter to be able to change the Decimal and Context -# interface without changing the test files from Cowlishaw -nameAdapter = {'and':'logical_and', - 'apply':'_apply', - 'class':'number_class', - 'comparesig':'compare_signal', - 'comparetotal':'compare_total', - 'comparetotmag':'compare_total_mag', - 'copy':'copy_decimal', - 'copyabs':'copy_abs', - 'copynegate':'copy_negate', - 'copysign':'copy_sign', - 'divideint':'divide_int', - 'invert':'logical_invert', - 'iscanonical':'is_canonical', - 'isfinite':'is_finite', - 'isinfinite':'is_infinite', - 'isnan':'is_nan', - 'isnormal':'is_normal', - 'isqnan':'is_qnan', - 'issigned':'is_signed', - 'issnan':'is_snan', - 'issubnormal':'is_subnormal', - 'iszero':'is_zero', - 'maxmag':'max_mag', - 'minmag':'min_mag', - 'nextminus':'next_minus', - 'nextplus':'next_plus', - 'nexttoward':'next_toward', - 'or':'logical_or', - 'reduce':'normalize', - 'remaindernear':'remainder_near', - 'samequantum':'same_quantum', - 'squareroot':'sqrt', - 'toeng':'to_eng_string', - 'tointegral':'to_integral_value', - 'tointegralx':'to_integral_exact', - 'tosci':'to_sci_string', - 'xor':'logical_xor', - } - -# The following functions return True/False rather than a Decimal instance - -LOGICAL_FUNCTIONS = ( - 'is_canonical', - 'is_finite', - 'is_infinite', - 'is_nan', - 'is_normal', - 'is_qnan', - 'is_signed', - 'is_snan', - 'is_subnormal', - 'is_zero', - 'same_quantum', - ) - -# For some operations (currently exp, ln, log10, power), the decNumber -# reference implementation imposes additional restrictions on the -# context and operands. These restrictions are not part of the -# specification; however, the effect of these restrictions does show -# up in some of the testcases. We skip testcases that violate these -# restrictions, since Decimal behaves differently from decNumber for -# these testcases so these testcases would otherwise fail. - -decNumberRestricted = ('power', 'ln', 'log10', 'exp') -DEC_MAX_MATH = 999999 -def outside_decNumber_bounds(v, context): - if (context.prec > DEC_MAX_MATH or - context.Emax > DEC_MAX_MATH or - -context.Emin > DEC_MAX_MATH): - return True - if not v.is_special() and v and ( - v.adjusted() > DEC_MAX_MATH or - v.adjusted() < 1-2*DEC_MAX_MATH): - return True - return False - -class DecimalTest(unittest.TestCase): - """Class which tests the Decimal class against the test cases. - - Changed for unittest. - """ - def setUp(self): - self.context = Context() - self.ignore_list = ['#'] - # Basically, a # means return NaN InvalidOperation. - # Different from a sNaN in trim - - self.ChangeDict = {'precision' : self.change_precision, - 'rounding' : self.change_rounding_method, - 'maxexponent' : self.change_max_exponent, - 'minexponent' : self.change_min_exponent, - 'clamp' : self.change_clamp} - - def eval_file(self, file): - global skip_expected - if skip_expected: - raise unittest.SkipTest - return - for line in open(file): - line = line.replace('\r\n', '').replace('\n', '') - #print line - try: - t = self.eval_line(line) - except DecimalException as exception: - #Exception raised where there shoudn't have been one. - self.fail('Exception "'+exception.__class__.__name__ + '" raised on line '+line) - - return - - def eval_line(self, s): - if s.find(' -> ') >= 0 and s[:2] != '--' and not s.startswith(' --'): - s = (s.split('->')[0] + '->' + - s.split('->')[1].split('--')[0]).strip() - else: - s = s.split('--')[0].strip() - - for ignore in self.ignore_list: - if s.find(ignore) >= 0: - #print s.split()[0], 'NotImplemented--', ignore - return - if not s: - return - elif ':' in s: - return self.eval_directive(s) - else: - return self.eval_equation(s) - - def eval_directive(self, s): - funct, value = (x.strip().lower() for x in s.split(':')) - if funct == 'rounding': - value = RoundingDict[value] - else: - try: - value = int(value) - except ValueError: - pass - - funct = self.ChangeDict.get(funct, Nonfunction) - funct(value) - - def eval_equation(self, s): - #global DEFAULT_PRECISION - #print DEFAULT_PRECISION - - if not TEST_ALL and random.random() < 0.90: - return - - try: - Sides = s.split('->') - L = Sides[0].strip().split() - id = L[0] - if DEBUG: - print("Test ", id, end=" ") - funct = L[1].lower() - valstemp = L[2:] - L = Sides[1].strip().split() - ans = L[0] - exceptions = L[1:] - except (TypeError, AttributeError, IndexError): - raise InvalidOperation - def FixQuotes(val): - val = val.replace("''", 'SingleQuote').replace('""', 'DoubleQuote') - val = val.replace("'", '').replace('"', '') - val = val.replace('SingleQuote', "'").replace('DoubleQuote', '"') - return val - - if id in skipped_test_ids: - return - - fname = nameAdapter.get(funct, funct) - if fname == 'rescale': - return - funct = getattr(self.context, fname) - - vals = [] - conglomerate = '' - quote = 0 - theirexceptions = [ErrorNames[x.lower()] for x in exceptions] - # XXX STATUS CASES - if id in status_cases: - t = status_cases[id] - theirexceptions = t[0] - - for exception in Signals: - self.context.traps[exception] = 1 #Catch these bugs... - for exception in theirexceptions: - self.context.traps[exception] = 0 - for i, val in enumerate(valstemp): - if val.count("'") % 2 == 1: - quote = 1 - quote - if quote: - conglomerate = conglomerate + ' ' + val - continue - else: - val = conglomerate + val - conglomerate = '' - v = FixQuotes(val) - if fname in ('to_sci_string', 'to_eng_string'): - if EXTENDEDERRORTEST: - for error in theirexceptions: - self.context.traps[error] = 1 - try: - funct(self.context.create_decimal(v)) - except error: - pass - except Signals as e: - self.fail("Raised %s in %s when %s disabled" % \ - (e, s, error)) - else: - self.fail("Did not raise %s in %s" % (error, s)) - self.context.traps[error] = 0 - v = self.context.create_decimal(v) - else: - # 32-bit version has limits +-425000000 - savetraps = self.context._traps - self.context._traps = 0 - vv = v - v = Decimal(vv, self.context) - if self.context._flags & 0x100: # MPD_Invalid_operation - v = readcontext.create_decimal(vv) - self.context._flags = 0 - self.context._traps = savetraps - vals.append(v) - - ans = FixQuotes(ans) - - # XXX: Shortcuts, disagreements between cdecimal and decimal - if self.context._clamp and self.context.prec > self.context.Emax: - # extra.decTest has some of these: I don't think this combination - # is a valid context: Etop would be negative! - # (squareroot.decTest has a single one, too) - if DEBUG: print(self.context) - return - if id in disagree: - return - if fname == 'power' and len(vals) == 3: - # name is different - fname = 'powmod' - funct = getattr(self.context, fname) - - # skip tests that are related to bounds imposed in the decNumber - # reference implementation - if fname in decNumberRestricted: - if fname == 'power': - if not (vals[1].is_integer() and - -1999999997 <= vals[1] <= 999999999): - if outside_decNumber_bounds(vals[0], self.context) or \ - outside_decNumber_bounds(vals[1], self.context): - #print "Skipping test %s" % s - return - else: - if outside_decNumber_bounds(vals[0], self.context): - #print "Skipping test %s" % s - return - - - if EXTENDEDERRORTEST and fname not in ('to_sci_string', 'to_eng_string'): - for error in theirexceptions: - self.context.traps[error] = 1 - try: - funct(*vals) - except error: - pass - except Signals as e: - self.fail("Raised %s in %s when %s disabled" % \ - (e, s, error)) - else: - self.fail("Did not raise %s in %s" % (error, s)) - self.context.traps[error] = 0 - if DEBUG: - print("--", self.context) - try: - result = str(funct(*vals)) - if fname in LOGICAL_FUNCTIONS: - result = str(int(eval(result))) # 'True', 'False' -> '1', '0' - except Signals as error: - self.fail("Raised %s in %s" % (error, s)) - except: #Catch any error long enough to state the test case. - print("ERROR:", s) - raise - - myexceptions = self.getexceptions() - self.context.clear_flags() - - myexceptions.sort(key=repr) - theirexceptions.sort(key=repr) - - # XXX SKIPS - if id in skip_cases: - t = skip_cases[id] - self.assert_(result == t[0] and ans == t[1]) - else: - self.assertEqual(result, ans, - 'Incorrect answer for ' + s + ' -- got ' + result) - - self.assertEqual(myexceptions, theirexceptions, - 'Incorrect flags set in ' + s + ' -- got ' + str(myexceptions)) - return - - def getexceptions(self): - return [e for e in Signals if self.context.flags[e]] - - def change_precision(self, prec): - if HAVE_64BIT: - self.context.prec = prec - else: - self.context.unsafe_setprec(prec) - def change_rounding_method(self, rounding): - self.context.rounding = rounding - def change_min_exponent(self, exp): - if HAVE_64BIT: - self.context.Emin = exp - else: - self.context.unsafe_setemin(exp) - def change_max_exponent(self, exp): - if HAVE_64BIT: - self.context.Emax = exp - else: - self.context.unsafe_setemax(exp) - def change_clamp(self, clamp): - self.context._clamp = clamp - - - -# The following classes test the behaviour of Decimal according to PEP 327 - -class DecimalExplicitConstructionTest(unittest.TestCase): - '''Unit tests for Explicit Construction cases of Decimal.''' - - def test_explicit_empty(self): - self.assertEqual(Decimal(), Decimal("0")) - - def test_explicit_from_None(self): - self.assertRaises(TypeError, Decimal, None) - - def test_explicit_from_int(self): - - #positive - d = Decimal(45) - self.assertEqual(str(d), '45') - - #very large positive - d = Decimal(500000123) - self.assertEqual(str(d), '500000123') - - #negative - d = Decimal(-45) - self.assertEqual(str(d), '-45') - - #zero - d = Decimal(0) - self.assertEqual(str(d), '0') - - def test_explicit_from_string(self): - - #empty - self.assertEqual(str(Decimal('')), 'NaN') - - #int - self.assertEqual(str(Decimal('45')), '45') - - #float - self.assertEqual(str(Decimal('45.34')), '45.34') - - #engineer notation - self.assertEqual(str(Decimal('45e2')), '4.5E+3') - - #just not a number - self.assertEqual(str(Decimal('ugly')), 'NaN') - - #leading and trailing whitespace permitted - self.assertEqual(str(Decimal('1.3E4 \n')), '1.3E+4') - self.assertEqual(str(Decimal(' -7.89')), '-7.89') - - def test_explicit_from_tuples(self): - - #zero - d = Decimal( (0, (0,), 0) ) - self.assertEqual(str(d), '0') - - #int - d = Decimal( (1, (4, 5), 0) ) - self.assertEqual(str(d), '-45') - - #float - d = Decimal( (0, (4, 5, 3, 4), -2) ) - self.assertEqual(str(d), '45.34') - - #weird - d = Decimal( (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) ) - self.assertEqual(str(d), '-4.34913534E-17') - - #wrong number of items - self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 9, 1)) ) - - #bad sign - self.assertRaises(ValueError, Decimal, (8, (4, 3, 4, 9, 1), 2) ) - self.assertRaises(ValueError, Decimal, (0., (4, 3, 4, 9, 1), 2) ) - self.assertRaises(ValueError, Decimal, (Decimal(1), (4, 3, 4, 9, 1), 2)) - - #bad exp - self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 9, 1), 'wrong!') ) - self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 9, 1), 0.) ) - self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 9, 1), '1') ) - - #bad coefficients - self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, None, 1), 2) ) - self.assertRaises(ValueError, Decimal, (1, (4, -3, 4, 9, 1), 2) ) - self.assertRaises(ValueError, Decimal, (1, (4, 10, 4, 9, 1), 2) ) - self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 'a', 1), 2) ) - - def test_explicit_from_Decimal(self): - - #positive - d = Decimal(45) - e = Decimal(d) - self.assertEqual(str(e), '45') - # XXX cdecimal has behaviour of int() - # self.assertNotEqual(id(d), id(e)) - self.assertEqual(id(d), id(e)) - - #very large positive - d = Decimal(500000123) - e = Decimal(d) - self.assertEqual(str(e), '500000123') - self.assertEqual(id(d), id(e)) - - #negative - d = Decimal(-45) - e = Decimal(d) - self.assertEqual(str(e), '-45') - self.assertEqual(id(d), id(e)) - - #zero - d = Decimal(0) - e = Decimal(d) - self.assertEqual(str(e), '0') - self.assertEqual(id(d), id(e)) - - def test_explicit_context_create_decimal(self): - - nc = copy.copy(getcontext()) - nc.prec = 3 - - # empty - d = Decimal() - self.assertEqual(str(d), '0') - d = nc.create_decimal() - self.assertEqual(str(d), '0') - - # from None - self.assertRaises(TypeError, nc.create_decimal, None) - - # from int - d = nc.create_decimal(456) - self.assertTrue(isinstance(d, Decimal)) - self.assertEqual(nc.create_decimal(45678), - nc.create_decimal('457E+2')) - - # from string - d = Decimal('456789') - self.assertEqual(str(d), '456789') - d = nc.create_decimal('456789') - self.assertEqual(str(d), '4.57E+5') - # leading and trailing whitespace should result in a NaN; - # spaces are already checked in Cowlishaw's test-suite, so - # here we just check that a trailing newline results in a NaN - self.assertEqual(str(nc.create_decimal('3.14\n')), 'NaN') - - # from tuples - d = Decimal( (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) ) - self.assertEqual(str(d), '-4.34913534E-17') - d = nc.create_decimal( (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) ) - self.assertEqual(str(d), '-4.35E-17') - - # from Decimal - prevdec = Decimal(500000123) - d = Decimal(prevdec) - self.assertEqual(str(d), '500000123') - d = nc.create_decimal(prevdec) - self.assertEqual(str(d), '5.00E+8') - - def test_unicode_digits(self): - test_values = { - '\uff11': '1', - '\u0660.\u0660\u0663\u0667\u0662e-\u0663' : '0.0000372', - '-nan\u0c68\u0c6a\u0c66\u0c66' : '-NaN2400', - } - for input, expected in test_values.items(): - self.assertEqual(str(Decimal(input)), expected) - - -class DecimalImplicitConstructionTest(unittest.TestCase): - '''Unit tests for Implicit Construction cases of Decimal.''' - - def test_implicit_from_None(self): - self.assertRaises(TypeError, eval, 'Decimal(5) + None', globals()) - - def test_implicit_from_int(self): - #normal - self.assertEqual(str(Decimal(5) + 45), '50') - #exceeding precision - self.assertEqual(Decimal(5) + 123456789000, Decimal(123456789000)) - - def test_implicit_from_string(self): - self.assertRaises(TypeError, eval, 'Decimal(5) + "3"', globals()) - - def test_implicit_from_float(self): - self.assertRaises(TypeError, eval, 'Decimal(5) + 2.2', globals()) - - def test_implicit_from_Decimal(self): - self.assertEqual(Decimal(5) + Decimal(45), Decimal(50)) - - def test_rop(self): - # Allow other classes to be trained to interact with Decimals - class E: - def __divmod__(self, other): - return 'divmod ' + str(other) - def __rdivmod__(self, other): - return str(other) + ' rdivmod' - def __lt__(self, other): - return 'lt ' + str(other) - def __gt__(self, other): - return 'gt ' + str(other) - def __le__(self, other): - return 'le ' + str(other) - def __ge__(self, other): - return 'ge ' + str(other) - def __eq__(self, other): - return 'eq ' + str(other) - def __ne__(self, other): - return 'ne ' + str(other) - - self.assertEqual(divmod(E(), Decimal(10)), 'divmod 10') - self.assertEqual(divmod(Decimal(10), E()), '10 rdivmod') - self.assertEqual(eval('Decimal(10) < E()'), 'gt 10') - self.assertEqual(eval('Decimal(10) > E()'), 'lt 10') - self.assertEqual(eval('Decimal(10) <= E()'), 'ge 10') - self.assertEqual(eval('Decimal(10) >= E()'), 'le 10') - self.assertEqual(eval('Decimal(10) == E()'), 'eq 10') - self.assertEqual(eval('Decimal(10) != E()'), 'ne 10') - - # insert operator methods and then exercise them - oplist = [ - ('+', '__add__', '__radd__'), - ('-', '__sub__', '__rsub__'), - ('*', '__mul__', '__rmul__'), - ('/', '__truediv__', '__rtruediv__'), - ('%', '__mod__', '__rmod__'), - ('//', '__floordiv__', '__rfloordiv__'), - ('**', '__pow__', '__rpow__') - ] - - for sym, lop, rop in oplist: - setattr(E, lop, lambda self, other: 'str' + lop + str(other)) - setattr(E, rop, lambda self, other: str(other) + rop + 'str') - self.assertEqual(eval('E()' + sym + 'Decimal(10)'), - 'str' + lop + '10') - self.assertEqual(eval('Decimal(10)' + sym + 'E()'), - '10' + rop + 'str') - - -class DecimalFormatTest(unittest.TestCase): - '''Unit tests for the format function.''' - def test_formatting(self): - # triples giving a format, a Decimal, and the expected result - test_values = [ - ('e', '0E-15', '0e-15'), - ('e', '2.3E-15', '2.3e-15'), - ('e', '2.30E+2', '2.30e+2'), # preserve significant zeros - ('e', '2.30000E-15', '2.30000e-15'), - ('e', '1.23456789123456789e40', '1.23456789123456789e+40'), - ('e', '1.5', '1.5e+0'), - ('e', '0.15', '1.5e-1'), - ('e', '0.015', '1.5e-2'), - ('e', '0.0000000000015', '1.5e-12'), - ('e', '15.0', '1.50e+1'), - ('e', '-15', '-1.5e+1'), - ('e', '0', '0e+0'), - ('e', '0E1', '0e+1'), - ('e', '0.0', '0e-1'), - ('e', '0.00', '0e-2'), - ('.6e', '0E-15', '0.000000e-9'), - ('.6e', '0', '0.000000e+6'), - ('.6e', '9.999999', '9.999999e+0'), - ('.6e', '9.9999999', '1.000000e+1'), - ('.6e', '-1.23e5', '-1.230000e+5'), - ('.6e', '1.23456789e-3', '1.234568e-3'), - ('f', '0', '0'), - ('f', '0.0', '0.0'), - ('f', '0E-2', '0.00'), - ('f', '0.00E-8', '0.0000000000'), - ('f', '0E1', '0'), # loses exponent information - ('f', '3.2E1', '32'), - ('f', '3.2E2', '320'), - ('f', '3.20E2', '320'), - ('f', '3.200E2', '320.0'), - ('f', '3.2E-6', '0.0000032'), - ('.6f', '0E-15', '0.000000'), # all zeros treated equally - ('.6f', '0E1', '0.000000'), - ('.6f', '0', '0.000000'), - ('.0f', '0', '0'), # no decimal point - ('.0f', '0e-2', '0'), - ('.0f', '3.14159265', '3'), - ('.1f', '3.14159265', '3.1'), - ('.4f', '3.14159265', '3.1416'), - ('.6f', '3.14159265', '3.141593'), - ('.7f', '3.14159265', '3.1415926'), # round-half-even! - ('.8f', '3.14159265', '3.14159265'), - ('.9f', '3.14159265', '3.141592650'), - - ('g', '0', '0'), - ('g', '0.0', '0.0'), - ('g', '0E1', '0e+1'), - ('G', '0E1', '0E+1'), - ('g', '0E-5', '0.00000'), - ('g', '0E-6', '0.000000'), - ('g', '0E-7', '0e-7'), - ('g', '-0E2', '-0e+2'), - ('.0g', '3.14159265', '3'), # 0 sig fig -> 1 sig fig - ('.1g', '3.14159265', '3'), - ('.2g', '3.14159265', '3.1'), - ('.5g', '3.14159265', '3.1416'), - ('.7g', '3.14159265', '3.141593'), - ('.8g', '3.14159265', '3.1415926'), # round-half-even! - ('.9g', '3.14159265', '3.14159265'), - ('.10g', '3.14159265', '3.14159265'), # don't pad - - ('%', '0E1', '0%'), - ('%', '0E0', '0%'), - ('%', '0E-1', '0%'), - ('%', '0E-2', '0%'), - ('%', '0E-3', '0.0%'), - ('%', '0E-4', '0.00%'), - - ('.3%', '0', '0.000%'), # all zeros treated equally - ('.3%', '0E10', '0.000%'), - ('.3%', '0E-10', '0.000%'), - ('.3%', '2.34', '234.000%'), - ('.3%', '1.234567', '123.457%'), - ('.0%', '1.23', '123%'), - - ('e', 'NaN', 'NaN'), - ('f', '-NaN123', '-NaN123'), - ('+g', 'NaN456', '+NaN456'), - ('.3e', 'Inf', 'Infinity'), - ('.16f', '-Inf', '-Infinity'), - ('.0g', '-sNaN', '-sNaN'), - - ('', '1.00', '1.00'), - - # test alignment and padding - ('6', '123', ' 123'), - ('<6', '123', '123 '), - ('>6', '123', ' 123'), - ('^6', '123', ' 123 '), - ('=+6', '123', '+ 123'), - ('#<10', 'NaN', 'NaN#######'), - ('#<10', '-4.3', '-4.3######'), - ('#<+10', '0.0130', '+0.0130###'), - ('#< 10', '0.0130', ' 0.0130###'), - ('@>10', '-Inf', '@-Infinity'), - ('#>5', '-Inf', '-Infinity'), - ('?^5', '123', '?123?'), - ('%^6', '123', '%123%%'), - (' ^6', '-45.6', '-45.6 '), - ('/=10', '-45.6', '-/////45.6'), - ('/=+10', '45.6', '+/////45.6'), - ('/= 10', '45.6', ' /////45.6'), - - # thousands separator - (',', '1234567', '1,234,567'), - (',', '123456', '123,456'), - (',', '12345', '12,345'), - (',', '1234', '1,234'), - (',', '123', '123'), - (',', '12', '12'), - (',', '1', '1'), - (',', '0', '0'), - (',', '-1234567', '-1,234,567'), - (',', '-123456', '-123,456'), - ('7,', '123456', '123,456'), - ('8,', '123456', ' 123,456'), - ('08,', '123456', '0,123,456'), # special case: extra 0 needed - ('+08,', '123456', '+123,456'), # but not if there's a sign - (' 08,', '123456', ' 123,456'), - ('08,', '-123456', '-123,456'), - ('+09,', '123456', '+0,123,456'), - # ... with fractional part... - ('07,', '1234.56', '1,234.56'), - ('08,', '1234.56', '1,234.56'), - ('09,', '1234.56', '01,234.56'), - ('010,', '1234.56', '001,234.56'), - ('011,', '1234.56', '0,001,234.56'), - ('012,', '1234.56', '0,001,234.56'), - ('08,.1f', '1234.5', '01,234.5'), - # no thousands separators in fraction part - (',', '1.23456789', '1.23456789'), - (',%', '123.456789', '12,345.6789%'), - (',e', '123456', '1.23456e+5'), - (',E', '123456', '1.23456E+5'), - - # issue 6850 - ('a=-7.0', '0.12345', 'aaaa0.1'), - ] - for fmt, d, result in test_values: - self.assertEqual(format(Decimal(d), fmt), result) - - def test_n_format(self): - try: - from locale import CHAR_MAX - except ImportError: - return - - # Set up some localeconv-like dictionaries - en_US = { - 'decimal_point': '.', - 'thousands_sep': ',', - 'grouping': b'\003\003'.decode() - } - - fr_FR = { - 'decimal_point': ',', - 'thousands_sep': '', - 'grouping': str(CHAR_MAX) - } - - ru_RU = { - 'decimal_point': ',', - 'thousands_sep': ' ', - 'grouping': b'\003\003'.decode() - } - - crazy = { - 'decimal_point': '&', - 'thousands_sep': '-', - 'grouping': b'\001\004\002'.decode() + str(CHAR_MAX) - } - - dotsep_utf8 = { - 'decimal_point': b'\xc2\xbf'.decode(), - 'thousands_sep': b'\xc2\xb4'.decode(), - 'grouping': b'\003\003'.decode() - } - - def get_fmt(x, override=None, fmt='n'): - return Decimal.__format__(Decimal(x), fmt, override) - - self.assertEqual(get_fmt(Decimal('12.7'), en_US), '12.7') - self.assertEqual(get_fmt(Decimal('12.7'), fr_FR), '12,7') - self.assertEqual(get_fmt(Decimal('12.7'), ru_RU), '12,7') - self.assertEqual(get_fmt(Decimal('12.7'), crazy), '1-2&7') - - self.assertEqual(get_fmt(123456789, en_US), '123,456,789') - self.assertEqual(get_fmt(123456789, fr_FR), '123456789') - self.assertEqual(get_fmt(123456789, ru_RU), '123 456 789') - self.assertEqual(get_fmt(1234567890123, crazy), '123456-78-9012-3') - - self.assertEqual(get_fmt(123456789, en_US, '.6n'), '1.23457e+8') - self.assertEqual(get_fmt(123456789, fr_FR, '.6n'), '1,23457e+8') - self.assertEqual(get_fmt(123456789, ru_RU, '.6n'), '1,23457e+8') - self.assertEqual(get_fmt(123456789, crazy, '.6n'), '1&23457e+8') - - # zero padding - self.assertEqual(get_fmt(1234, fr_FR, '03n'), '1234') - self.assertEqual(get_fmt(1234, fr_FR, '04n'), '1234') - self.assertEqual(get_fmt(1234, fr_FR, '05n'), '01234') - self.assertEqual(get_fmt(1234, fr_FR, '06n'), '001234') - - self.assertEqual(get_fmt(12345, en_US, '05n'), '12,345') - self.assertEqual(get_fmt(12345, en_US, '06n'), '12,345') - self.assertEqual(get_fmt(12345, en_US, '07n'), '012,345') - self.assertEqual(get_fmt(12345, en_US, '08n'), '0,012,345') - self.assertEqual(get_fmt(12345, en_US, '09n'), '0,012,345') - self.assertEqual(get_fmt(12345, en_US, '010n'), '00,012,345') - - self.assertEqual(get_fmt(123456, crazy, '06n'), '1-2345-6') - self.assertEqual(get_fmt(123456, crazy, '07n'), '1-2345-6') - self.assertEqual(get_fmt(123456, crazy, '08n'), '1-2345-6') - self.assertEqual(get_fmt(123456, crazy, '09n'), '01-2345-6') - self.assertEqual(get_fmt(123456, crazy, '010n'), '0-01-2345-6') - self.assertEqual(get_fmt(123456, crazy, '011n'), '0-01-2345-6') - self.assertEqual(get_fmt(123456, crazy, '012n'), '00-01-2345-6') - self.assertEqual(get_fmt(123456, crazy, '013n'), '000-01-2345-6') - - # UTF-8 separator and decimal point - self.assertEqual(get_fmt(Decimal('-1.5'), dotsep_utf8, '020n'), - '-0?000?000?000?001?5') - - -class DecimalArithmeticOperatorsTest(unittest.TestCase): - '''Unit tests for all arithmetic operators, binary and unary.''' - - def test_addition(self): - - d1 = Decimal('-11.1') - d2 = Decimal('22.2') - - #two Decimals - self.assertEqual(d1+d2, Decimal('11.1')) - self.assertEqual(d2+d1, Decimal('11.1')) - - #with other type, left - c = d1 + 5 - self.assertEqual(c, Decimal('-6.1')) - self.assertEqual(type(c), type(d1)) - - #with other type, right - c = 5 + d1 - self.assertEqual(c, Decimal('-6.1')) - self.assertEqual(type(c), type(d1)) - - #inline with decimal - d1 += d2 - self.assertEqual(d1, Decimal('11.1')) - - #inline with other type - d1 += 5 - self.assertEqual(d1, Decimal('16.1')) - - def test_subtraction(self): - - d1 = Decimal('-11.1') - d2 = Decimal('22.2') - - #two Decimals - self.assertEqual(d1-d2, Decimal('-33.3')) - self.assertEqual(d2-d1, Decimal('33.3')) - - #with other type, left - c = d1 - 5 - self.assertEqual(c, Decimal('-16.1')) - self.assertEqual(type(c), type(d1)) - - #with other type, right - c = 5 - d1 - self.assertEqual(c, Decimal('16.1')) - self.assertEqual(type(c), type(d1)) - - #inline with decimal - d1 -= d2 - self.assertEqual(d1, Decimal('-33.3')) - - #inline with other type - d1 -= 5 - self.assertEqual(d1, Decimal('-38.3')) - - def test_multiplication(self): - - d1 = Decimal('-5') - d2 = Decimal('3') - - #two Decimals - self.assertEqual(d1*d2, Decimal('-15')) - self.assertEqual(d2*d1, Decimal('-15')) - - #with other type, left - c = d1 * 5 - self.assertEqual(c, Decimal('-25')) - self.assertEqual(type(c), type(d1)) - - #with other type, right - c = 5 * d1 - self.assertEqual(c, Decimal('-25')) - self.assertEqual(type(c), type(d1)) - - #inline with decimal - d1 *= d2 - self.assertEqual(d1, Decimal('-15')) - - #inline with other type - d1 *= 5 - self.assertEqual(d1, Decimal('-75')) - - def test_division(self): - - d1 = Decimal('-5') - d2 = Decimal('2') - - #two Decimals - self.assertEqual(d1/d2, Decimal('-2.5')) - self.assertEqual(d2/d1, Decimal('-0.4')) - - #with other type, left - c = d1 / 4 - self.assertEqual(c, Decimal('-1.25')) - self.assertEqual(type(c), type(d1)) - - #with other type, right - c = 4 / d1 - self.assertEqual(c, Decimal('-0.8')) - self.assertEqual(type(c), type(d1)) - - #inline with decimal - d1 /= d2 - self.assertEqual(d1, Decimal('-2.5')) - - #inline with other type - d1 /= 4 - self.assertEqual(d1, Decimal('-0.625')) - - def test_floor_division(self): - - d1 = Decimal('5') - d2 = Decimal('2') - - #two Decimals - self.assertEqual(d1//d2, Decimal('2')) - self.assertEqual(d2//d1, Decimal('0')) - - #with other type, left - c = d1 // 4 - self.assertEqual(c, Decimal('1')) - self.assertEqual(type(c), type(d1)) - - #with other type, right - c = 7 // d1 - self.assertEqual(c, Decimal('1')) - self.assertEqual(type(c), type(d1)) - - #inline with decimal - d1 //= d2 - self.assertEqual(d1, Decimal('2')) - - #inline with other type - d1 //= 2 - self.assertEqual(d1, Decimal('1')) - - def test_powering(self): - - d1 = Decimal('5') - d2 = Decimal('2') - - #two Decimals - self.assertEqual(d1**d2, Decimal('25')) - self.assertEqual(d2**d1, Decimal('32')) - - #with other type, left - c = d1 ** 4 - self.assertEqual(c, Decimal('625')) - self.assertEqual(type(c), type(d1)) - - #with other type, right - c = 7 ** d1 - self.assertEqual(c, Decimal('16807')) - self.assertEqual(type(c), type(d1)) - - #inline with decimal - d1 **= d2 - self.assertEqual(d1, Decimal('25')) - - #inline with other type - d1 **= 4 - self.assertEqual(d1, Decimal('390625')) - - def test_module(self): - - d1 = Decimal('5') - d2 = Decimal('2') - - #two Decimals - self.assertEqual(d1%d2, Decimal('1')) - self.assertEqual(d2%d1, Decimal('2')) - - #with other type, left - c = d1 % 4 - self.assertEqual(c, Decimal('1')) - self.assertEqual(type(c), type(d1)) - - #with other type, right - c = 7 % d1 - self.assertEqual(c, Decimal('2')) - self.assertEqual(type(c), type(d1)) - - #inline with decimal - d1 %= d2 - self.assertEqual(d1, Decimal('1')) - - #inline with other type - d1 %= 4 - self.assertEqual(d1, Decimal('1')) - - def test_floor_div_module(self): - - d1 = Decimal('5') - d2 = Decimal('2') - - #two Decimals - (p, q) = divmod(d1, d2) - self.assertEqual(p, Decimal('2')) - self.assertEqual(q, Decimal('1')) - self.assertEqual(type(p), type(d1)) - self.assertEqual(type(q), type(d1)) - - #with other type, left - (p, q) = divmod(d1, 4) - self.assertEqual(p, Decimal('1')) - self.assertEqual(q, Decimal('1')) - self.assertEqual(type(p), type(d1)) - self.assertEqual(type(q), type(d1)) - - #with other type, right - (p, q) = divmod(7, d1) - self.assertEqual(p, Decimal('1')) - self.assertEqual(q, Decimal('2')) - self.assertEqual(type(p), type(d1)) - self.assertEqual(type(q), type(d1)) - - def test_unary_operators(self): - self.assertEqual(+Decimal(45), Decimal(+45)) # + - self.assertEqual(-Decimal(45), Decimal(-45)) # - - self.assertEqual(abs(Decimal(45)), abs(Decimal(-45))) # abs - - def test_nan_comparisons(self): - n = Decimal('NaN') - s = Decimal('sNaN') - i = Decimal('Inf') - f = Decimal('2') - for x, y in [(n, n), (n, i), (i, n), (n, f), (f, n), - (s, n), (n, s), (s, i), (i, s), (s, f), (f, s), (s, s)]: - self.assertTrue(x != y) - self.assertTrue(not (x == y)) - self.assertTrue(not (x < y)) - self.assertTrue(not (x <= y)) - self.assertTrue(not (x > y)) - self.assertTrue(not (x >= y)) - -# The following are two functions used to test threading in the next class - -def thfunc1(cls): - d1 = Decimal(1) - d3 = Decimal(3) - test1 = d1/d3 - cls.synchro.wait() - test2 = d1/d3 - cls.finish1.set() - - cls.assertEqual(test1, Decimal('0.333333333333333333333333')) - cls.assertEqual(test2, Decimal('0.333333333333333333333333')) - return - -def thfunc2(cls): - d1 = Decimal(1) - d3 = Decimal(3) - test1 = d1/d3 - thiscontext = getcontext() - thiscontext.prec = 18 - test2 = d1/d3 - cls.synchro.set() - cls.finish2.set() - - cls.assertEqual(test1, Decimal('0.333333333333333333333333')) - cls.assertEqual(test2, Decimal('0.333333333333333333')) - return - - -class DecimalUseOfContextTest(unittest.TestCase): - '''Unit tests for Use of Context cases in Decimal.''' - - try: - import threading - except ImportError: - threading = None - - # Take care executing this test from IDLE, there's an issue in threading - # that hangs IDLE and I couldn't find it - - def test_threading(self): - # Test the "threading isolation" of a Context. Also test changing - # the DefaultContext, which acts as a template for the thread-local - # contexts. - - DefaultContext.prec = 24 - - self.synchro = threading.Event() - self.finish1 = threading.Event() - self.finish2 = threading.Event() - - th1 = threading.Thread(target=thfunc1, args=(self,)) - th2 = threading.Thread(target=thfunc2, args=(self,)) - - th1.start() - th2.start() - - self.finish1.wait() - self.finish2.wait() - return - - if threading is None: - del test_threading - - -class DecimalUsabilityTest(unittest.TestCase): - '''Unit tests for Usability cases of Decimal.''' - - def test_comparison_operators(self): - - da = Decimal('23.42') - db = Decimal('23.42') - dc = Decimal('45') - - #two Decimals - self.assertTrue(dc > da) - self.assertTrue(dc >= da) - self.assertTrue(da < dc) - self.assertTrue(da <= dc) - self.assertEqual(da, db) - self.assertTrue(da != dc) - self.assertTrue(da <= db) - self.assertTrue(da >= db) - - #a Decimal and an int - self.assertTrue(dc > 23) - self.assertTrue(23 < dc) - self.assertEqual(dc, 45) - - #a Decimal and uncomparable - self.assertNotEqual(da, 'ugly') - self.assertNotEqual(da, 32.7) - self.assertNotEqual(da, object()) - self.assertNotEqual(da, object) - - # sortable - a = list(map(Decimal, range(100))) - b = a[:] - random.shuffle(a) - a.sort() - self.assertEqual(a, b) - - def test_copy_and_deepcopy_methods(self): - d = Decimal('43.24') - c = copy.copy(d) - self.assertEqual(id(c), id(d)) - dc = copy.deepcopy(d) - self.assertEqual(id(dc), id(d)) - - def test_hash_method(self): - #just that it's hashable - hash(Decimal(23)) - - test_values = [Decimal(sign*(2**m + n)) - for m in [0, 14, 15, 16, 17, 30, 31, - 32, 33, 62, 63, 64, 65, 66] - for n in range(-10, 10) - for sign in [-1, 1]] - test_values.extend([ - Decimal("-0"), # zeros - Decimal("0.00"), - Decimal("-0.000"), - Decimal("0E10"), - Decimal("-0E12"), - Decimal("10.0"), # negative exponent - Decimal("-23.00000"), - Decimal("1230E100"), # positive exponent - Decimal("-4.5678E50"), - # a value for which hash(n) != hash(n % (2**64-1)) - # in Python pre-2.6 - Decimal(2**64 + 2**32 - 1), - # selection of values which fail with the old (before - # version 2.6) long.__hash__ - Decimal("1.634E100"), - Decimal("90.697E100"), - Decimal("188.83E100"), - Decimal("1652.9E100"), - Decimal("56531E100"), - ]) - - # check that hash(d) == hash(int(d)) for integral values - for value in test_values: - self.assertEqual(hash(value), hash(int(value))) - - #the same hash that to an int - self.assertEqual(hash(Decimal(23)), hash(23)) - self.assertRaises(TypeError, hash, Decimal('NaN')) - self.assertTrue(hash(Decimal('Inf'))) - self.assertTrue(hash(Decimal('-Inf'))) - - # check that the value of the hash doesn't depend on the - # current context (issue #1757) - c = getcontext() - old_precision = c.prec - x = Decimal("123456789.1") - - c.prec = 6 - h1 = hash(x) - c.prec = 10 - h2 = hash(x) - c.prec = 16 - h3 = hash(x) - - self.assertEqual(h1, h2) - self.assertEqual(h1, h3) - c.prec = old_precision - - def test_min_and_max_methods(self): - - d1 = Decimal('15.32') - d2 = Decimal('28.5') - l1 = 15 - l2 = 28 - - #between Decimals - self.assertTrue(min(d1,d2) is d1) - self.assertTrue(min(d2,d1) is d1) - self.assertTrue(max(d1,d2) is d2) - self.assertTrue(max(d2,d1) is d2) - - #between Decimal and long - self.assertTrue(min(d1,l2) is d1) - self.assertTrue(min(l2,d1) is d1) - self.assertTrue(max(l1,d2) is d2) - self.assertTrue(max(d2,l1) is d2) - - def test_as_nonzero(self): - #as false - self.assertFalse(Decimal(0)) - #as true - self.assertTrue(Decimal('0.372')) - - def test_tostring_methods(self): - #Test str and repr methods. - - d = Decimal('15.32') - self.assertEqual(str(d), '15.32') # str - self.assertEqual(repr(d), "Decimal('15.32')") # repr - - def test_tonum_methods(self): - #Test float, int and long methods. - - d1 = Decimal('66') - d2 = Decimal('15.32') - - #int - self.assertEqual(int(d1), 66) - self.assertEqual(int(d2), 15) - - #long - self.assertEqual(int(d1), 66) - self.assertEqual(int(d2), 15) - - #float - self.assertEqual(float(d1), 66) - self.assertEqual(float(d2), 15.32) - - #floor - test_pairs = [ - ('123.00', 123), - ('3.2', 3), - ('3.54', 3), - ('3.899', 3), - ('-2.3', -3), - ('-11.0', -11), - ('0.0', 0), - ('-0E3', 0), - ] - for d, i in test_pairs: - self.assertEqual(math.floor(Decimal(d)), i) - self.assertRaises(ValueError, math.floor, Decimal('-NaN')) - self.assertRaises(ValueError, math.floor, Decimal('sNaN')) - self.assertRaises(ValueError, math.floor, Decimal('NaN123')) - self.assertRaises(OverflowError, math.floor, Decimal('Inf')) - self.assertRaises(OverflowError, math.floor, Decimal('-Inf')) - - #ceiling - test_pairs = [ - ('123.00', 123), - ('3.2', 4), - ('3.54', 4), - ('3.899', 4), - ('-2.3', -2), - ('-11.0', -11), - ('0.0', 0), - ('-0E3', 0), - ] - for d, i in test_pairs: - self.assertEqual(math.ceil(Decimal(d)), i) - self.assertRaises(ValueError, math.ceil, Decimal('-NaN')) - self.assertRaises(ValueError, math.ceil, Decimal('sNaN')) - self.assertRaises(ValueError, math.ceil, Decimal('NaN123')) - self.assertRaises(OverflowError, math.ceil, Decimal('Inf')) - self.assertRaises(OverflowError, math.ceil, Decimal('-Inf')) - - #round, single argument - test_pairs = [ - ('123.00', 123), - ('3.2', 3), - ('3.54', 4), - ('3.899', 4), - ('-2.3', -2), - ('-11.0', -11), - ('0.0', 0), - ('-0E3', 0), - ('-3.5', -4), - ('-2.5', -2), - ('-1.5', -2), - ('-0.5', 0), - ('0.5', 0), - ('1.5', 2), - ('2.5', 2), - ('3.5', 4), - ] - for d, i in test_pairs: - self.assertEqual(round(Decimal(d)), i) - self.assertRaises(ValueError, round, Decimal('-NaN')) - self.assertRaises(ValueError, round, Decimal('sNaN')) - self.assertRaises(ValueError, round, Decimal('NaN123')) - self.assertRaises(OverflowError, round, Decimal('Inf')) - self.assertRaises(OverflowError, round, Decimal('-Inf')) - - #round, two arguments; this is essentially equivalent - #to quantize, which is already extensively tested - test_triples = [ - ('123.456', -4, '0E+4'), - ('123.456', -3, '0E+3'), - ('123.456', -2, '1E+2'), - ('123.456', -1, '1.2E+2'), - ('123.456', 0, '123'), - ('123.456', 1, '123.5'), - ('123.456', 2, '123.46'), - ('123.456', 3, '123.456'), - ('123.456', 4, '123.4560'), - ('123.455', 2, '123.46'), - ('123.445', 2, '123.44'), - ('Inf', 4, 'NaN'), - ('-Inf', -23, 'NaN'), - ('sNaN314', 3, 'NaN314'), - ] - for d, n, r in test_triples: - self.assertEqual(str(round(Decimal(d), n)), r) - - - - def test_eval_round_trip(self): - - #with zero - d = Decimal( (0, (0,), 0) ) - self.assertEqual(d, eval(repr(d))) - - #int - d = Decimal( (1, (4, 5), 0) ) - self.assertEqual(d, eval(repr(d))) - - #float - d = Decimal( (0, (4, 5, 3, 4), -2) ) - self.assertEqual(d, eval(repr(d))) - - #weird - d = Decimal( (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) ) - self.assertEqual(d, eval(repr(d))) - - def test_as_tuple(self): - - #with zero - d = Decimal(0) - self.assertEqual(d.as_tuple(), (0, (0,), 0) ) - - #int - d = Decimal(-45) - self.assertEqual(d.as_tuple(), (1, (4, 5), 0) ) - - #complicated string - d = Decimal("-4.34913534E-17") - self.assertEqual(d.as_tuple(), (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) ) - - # XXX empty tuple, like in the NaN case - d = Decimal("Infinity") - self.assertEqual(d.as_tuple(), (0, (), 'F') ) - - #leading zeros in coefficient should be stripped - d = Decimal( (0, (0, 0, 4, 0, 5, 3, 4), -2) ) - self.assertEqual(d.as_tuple(), (0, (4, 0, 5, 3, 4), -2) ) - d = Decimal( (1, (0, 0, 0), 37) ) - self.assertEqual(d.as_tuple(), (1, (0,), 37)) - d = Decimal( (1, (), 37) ) - self.assertEqual(d.as_tuple(), (1, (0,), 37)) - - #leading zeros in NaN diagnostic info should be stripped - d = Decimal( (0, (0, 0, 4, 0, 5, 3, 4), 'n') ) - self.assertEqual(d.as_tuple(), (0, (4, 0, 5, 3, 4), 'n') ) - d = Decimal( (1, (0, 0, 0), 'N') ) - self.assertEqual(d.as_tuple(), (1, (), 'N') ) - d = Decimal( (1, (), 'n') ) - self.assertEqual(d.as_tuple(), (1, (), 'n') ) - - # XXX coefficient in infinity should raise an error - # d = Decimal( (0, (4, 5, 3, 4), 'F') ) - # self.assertEqual(d.as_tuple(), (0, (0,), 'F')) - # d = Decimal( (1, (0, 2, 7, 1), 'F') ) - # self.assertEqual(d.as_tuple(), (1, (0,), 'F')) - - def XXX_test_immutability_operations(self): - # XXX Checked extensively in the library runtest. - # Do operations and check that it didn't change change internal objects. - - d1 = Decimal('-25e55') - b1 = Decimal('-25e55') - d2 = Decimal('33e+33') - b2 = Decimal('33e+33') - - def checkSameDec(operation, useOther=False): - if useOther: - eval("d1." + operation + "(d2)") - self.assertEqual(d1._sign, b1._sign) - self.assertEqual(d1._int, b1._int) - self.assertEqual(d1._exp, b1._exp) - self.assertEqual(d2._sign, b2._sign) - self.assertEqual(d2._int, b2._int) - self.assertEqual(d2._exp, b2._exp) - else: - eval("d1." + operation + "()") - self.assertEqual(d1._sign, b1._sign) - self.assertEqual(d1._int, b1._int) - self.assertEqual(d1._exp, b1._exp) - return - - Decimal(d1) - self.assertEqual(d1._sign, b1._sign) - self.assertEqual(d1._int, b1._int) - self.assertEqual(d1._exp, b1._exp) - - checkSameDec("__abs__") - checkSameDec("__add__", True) - checkSameDec("__divmod__", True) - checkSameDec("__eq__", True) - checkSameDec("__ne__", True) - checkSameDec("__le__", True) - checkSameDec("__lt__", True) - checkSameDec("__ge__", True) - checkSameDec("__gt__", True) - checkSameDec("__float__") - checkSameDec("__floordiv__", True) - checkSameDec("__hash__") - checkSameDec("__int__") - checkSameDec("__trunc__") - checkSameDec("__mod__", True) - checkSameDec("__mul__", True) - checkSameDec("__neg__") - checkSameDec("__bool__") - checkSameDec("__pos__") - checkSameDec("__pow__", True) - checkSameDec("__radd__", True) - checkSameDec("__rdivmod__", True) - checkSameDec("__repr__") - checkSameDec("__rfloordiv__", True) - checkSameDec("__rmod__", True) - checkSameDec("__rmul__", True) - checkSameDec("__rpow__", True) - checkSameDec("__rsub__", True) - checkSameDec("__str__") - checkSameDec("__sub__", True) - checkSameDec("__truediv__", True) - checkSameDec("adjusted") - checkSameDec("as_tuple") - checkSameDec("compare", True) - checkSameDec("max", True) - checkSameDec("min", True) - checkSameDec("normalize") - checkSameDec("quantize", True) - checkSameDec("remainder_near", True) - checkSameDec("same_quantum", True) - checkSameDec("sqrt") - checkSameDec("to_eng_string") - checkSameDec("to_integral") - - def test_subclassing(self): - # Different behaviours when subclassing Decimal - - class MyDecimal(Decimal): - pass - - d1 = MyDecimal(1) - d2 = MyDecimal(2) - d = d1 + d2 - self.assertTrue(type(d) is Decimal) - - d = d1.max(d2) - self.assertTrue(type(d) is Decimal) - - def test_implicit_context(self): - # Check results when context given implicitly. (Issue 2478) - c = getcontext() - self.assertEqual(str(Decimal(0).sqrt()), - str(c.sqrt(Decimal(0)))) - - def test_conversions_from_int(self): - # Check that methods taking a second Decimal argument will - # always accept an integer in place of a Decimal. - self.assertEqual(Decimal(4).compare(3), - Decimal(4).compare(Decimal(3))) - self.assertEqual(Decimal(4).compare_signal(3), - Decimal(4).compare_signal(Decimal(3))) - self.assertEqual(Decimal(4).compare_total(3), - Decimal(4).compare_total(Decimal(3))) - self.assertEqual(Decimal(4).compare_total_mag(3), - Decimal(4).compare_total_mag(Decimal(3))) - self.assertEqual(Decimal(10101).logical_and(1001), - Decimal(10101).logical_and(Decimal(1001))) - self.assertEqual(Decimal(10101).logical_or(1001), - Decimal(10101).logical_or(Decimal(1001))) - self.assertEqual(Decimal(10101).logical_xor(1001), - Decimal(10101).logical_xor(Decimal(1001))) - self.assertEqual(Decimal(567).max(123), - Decimal(567).max(Decimal(123))) - self.assertEqual(Decimal(567).max_mag(123), - Decimal(567).max_mag(Decimal(123))) - self.assertEqual(Decimal(567).min(123), - Decimal(567).min(Decimal(123))) - self.assertEqual(Decimal(567).min_mag(123), - Decimal(567).min_mag(Decimal(123))) - self.assertEqual(Decimal(567).next_toward(123), - Decimal(567).next_toward(Decimal(123))) - self.assertEqual(Decimal(1234).quantize(100), - Decimal(1234).quantize(Decimal(100))) - self.assertEqual(Decimal(768).remainder_near(1234), - Decimal(768).remainder_near(Decimal(1234))) - self.assertEqual(Decimal(123).rotate(1), - Decimal(123).rotate(Decimal(1))) - self.assertEqual(Decimal(1234).same_quantum(1000), - Decimal(1234).same_quantum(Decimal(1000))) - self.assertEqual(Decimal('9.123').scaleb(-100), - Decimal('9.123').scaleb(Decimal(-100))) - self.assertEqual(Decimal(456).shift(-1), - Decimal(456).shift(Decimal(-1))) - - self.assertEqual(Decimal(-12).fma(Decimal(45), 67), - Decimal(-12).fma(Decimal(45), Decimal(67))) - self.assertEqual(Decimal(-12).fma(45, 67), - Decimal(-12).fma(Decimal(45), Decimal(67))) - self.assertEqual(Decimal(-12).fma(45, Decimal(67)), - Decimal(-12).fma(Decimal(45), Decimal(67))) - - -class DecimalPythonAPItests(unittest.TestCase): - - def test_abc(self): - self.assertTrue(issubclass(Decimal, numbers.Number)) - self.assertTrue(not issubclass(Decimal, numbers.Real)) - self.assertTrue(isinstance(Decimal(0), numbers.Number)) - self.assertTrue(not isinstance(Decimal(0), numbers.Real)) - - def test_pickle(self): - d = Decimal('-3.141590000') - p = pickle.dumps(d) - e = pickle.loads(p) - self.assertEqual(d, e) - - def test_int(self): - for x in range(-250, 250): - s = '%0.2f' % (x / 100.0) - # should work the same as for floats - self.assertEqual(int(Decimal(s)), int(float(s))) - # should work the same as to_integral in the ROUND_DOWN mode - d = Decimal(s) - r = d.to_integral(ROUND_DOWN) - self.assertEqual(Decimal(int(d)), r) - - self.assertRaises(ValueError, int, Decimal('-nan')) - self.assertRaises(ValueError, int, Decimal('snan')) - self.assertRaises(OverflowError, int, Decimal('inf')) - self.assertRaises(OverflowError, int, Decimal('-inf')) - - def test_trunc(self): - for x in range(-250, 250): - s = '%0.2f' % (x / 100.0) - # should work the same as for floats - self.assertEqual(int(Decimal(s)), int(float(s))) - # should work the same as to_integral in the ROUND_DOWN mode - d = Decimal(s) - r = d.to_integral(ROUND_DOWN) - self.assertEqual(Decimal(math.trunc(d)), r) - - def test_from_float(self): - - class MyDecimal(Decimal): - pass - - r = MyDecimal.from_float(0.1) - self.assertEqual(type(r), MyDecimal) - self.assertEqual(str(r), - '0.1000000000000000055511151231257827021181583404541015625') - bigint = 12345678901234567890123456789 - self.assertEqual(MyDecimal.from_float(bigint), MyDecimal(bigint)) - self.assertTrue(MyDecimal.from_float(float('nan')).is_qnan()) - self.assertTrue(MyDecimal.from_float(float('inf')).is_infinite()) - self.assertTrue(MyDecimal.from_float(float('-inf')).is_infinite()) - self.assertEqual(str(MyDecimal.from_float(float('nan'))), - str(Decimal('NaN'))) - self.assertEqual(str(MyDecimal.from_float(float('inf'))), - str(Decimal('Infinity'))) - self.assertEqual(str(MyDecimal.from_float(float('-inf'))), - str(Decimal('-Infinity'))) - self.assertRaises(TypeError, MyDecimal.from_float, 'abc') - for i in range(200): - x = random.expovariate(0.01) * (random.random() * 2.0 - 1.0) - self.assertEqual(x, float(MyDecimal.from_float(x))) # roundtrip - - def test_create_decimal_from_float(self): - context = Context(prec=5, rounding=ROUND_DOWN) - self.assertEqual( - context.create_decimal_from_float(math.pi), - Decimal('3.1415') - ) - context = Context(prec=5, rounding=ROUND_UP) - self.assertEqual( - context.create_decimal_from_float(math.pi), - Decimal('3.1416') - ) - context = Context(prec=5, traps=[Inexact]) - self.assertRaises( - Inexact, - context.create_decimal_from_float, - math.pi - ) - self.assertEqual(repr(context.create_decimal_from_float(-0.0)), - "Decimal('-0')") - self.assertEqual(repr(context.create_decimal_from_float(1.0)), - "Decimal('1')") - self.assertEqual(repr(context.create_decimal_from_float(10)), - "Decimal('10')") - -class ContextAPItests(unittest.TestCase): - - def test_pickle(self): - c = Context() - e = pickle.loads(pickle.dumps(c)) - # XXX some are getters/setters - #for k in vars(c): - # v1 = vars(c)[k] - # v2 = vars(e)[k] - # self.assertEqual(v1, v2) - self.assertEqual(c.prec, e.prec) - self.assertEqual(c.Emin, e.Emin) - self.assertEqual(c.Emax, e.Emax) - self.assertEqual(c.rounding, e.rounding) - self.assertEqual(c.capitals, e.capitals) - self.assertEqual(c.traps, e.traps) - self.assertEqual(c.flags, e.flags) - self.assertEqual(c._clamp, e._clamp) - - def test_equality_with_other_types(self): - self.assertTrue(Decimal(10) in ['a', 1.0, Decimal(10), (1,2), {}]) - self.assertTrue(Decimal(10) not in ['a', 1.0, (1,2), {}]) - - def test_copy(self): - # All copies should be deep - c = Context() - d = c.copy() - self.assertNotEqual(id(c), id(d)) - self.assertNotEqual(id(c.flags), id(d.flags)) - self.assertNotEqual(id(c.traps), id(d.traps)) - -class WithStatementTest(unittest.TestCase): - # Can't do these as docstrings until Python 2.6 - # as doctest can't handle __future__ statements - - def test_localcontext(self): - # Use a copy of the current context in the block - orig_ctx = getcontext() - with localcontext() as enter_ctx: - set_ctx = getcontext() - final_ctx = getcontext() - self.assertTrue(orig_ctx is final_ctx, 'did not restore context correctly') - self.assertTrue(orig_ctx is not set_ctx, 'did not copy the context') - self.assertTrue(set_ctx is enter_ctx, '__enter__ returned wrong context') - - def test_localcontextarg(self): - # Use a copy of the supplied context in the block - orig_ctx = getcontext() - new_ctx = Context(prec=42) - with localcontext(new_ctx) as enter_ctx: - set_ctx = getcontext() - final_ctx = getcontext() - self.assertTrue(orig_ctx is final_ctx, 'did not restore context correctly') - self.assertTrue(set_ctx.prec == new_ctx.prec, 'did not set correct context') - self.assertTrue(new_ctx is not set_ctx, 'did not copy the context') - self.assertTrue(set_ctx is enter_ctx, '__enter__ returned wrong context') - -class ContextFlags(unittest.TestCase): - def test_flags_irrelevant(self): - # check that the result (numeric result + flags raised) of an - # arithmetic operation doesn't depend on the current flags - - # XXX 32-bit limits - context = Context(prec=9, Emin = -425000000, Emax = 425000000, - rounding=ROUND_HALF_EVEN, traps=[], flags=[]) - - # operations that raise various flags, in the form (function, arglist) - operations = [ - (context._apply, [Decimal("100E-425000010")]), - (context.sqrt, [Decimal(2)]), - (context.add, [Decimal("1.23456789"), Decimal("9.87654321")]), - (context.multiply, [Decimal("1.23456789"), Decimal("9.87654321")]), - (context.subtract, [Decimal("1.23456789"), Decimal("9.87654321")]), - ] - - # try various flags individually, then a whole lot at once - flagsets = [[Inexact], [Rounded], [Underflow], [Clamped], [Subnormal], - [Inexact, Rounded, Underflow, Clamped, Subnormal]] - - for fn, args in operations: - # find answer and flags raised using a clean context - context.clear_flags() - ans = fn(*args) - flags = [k for k, v in context.flags.items() if v] - - for extra_flags in flagsets: - # set flags, before calling operation - context.clear_flags() - for flag in extra_flags: - # XXX _raise_error - # context._raise_error(flag) - context.flags[flag] = True - new_ans = fn(*args) - - # flags that we expect to be set after the operation - expected_flags = list(flags) - for flag in extra_flags: - if flag not in expected_flags: - expected_flags.append(flag) - expected_flags.sort(key=id) - - # flags we actually got - new_flags = [k for k,v in context.flags.items() if v] - new_flags.sort(key=id) - - self.assertEqual(ans, new_ans, - "operation produces different answers depending on flags set: " + - "expected %s, got %s." % (ans, new_ans)) - self.assertEqual(new_flags, expected_flags, - "operation raises different flags depending on flags set: " + - "expected %s, got %s" % (expected_flags, new_flags)) - def test_main(arith=False, verbose=None, todo_tests=None, debug=None): - """ Execute the tests. - - Runs all arithmetic tests if arith is True or if the "decimal" resource - is enabled in regrtest.py - """ - - init() - global TEST_ALL, DEBUG - TEST_ALL = arith or is_resource_enabled('decimal') - DEBUG = debug - - if todo_tests is None: - test_classes = [ - DecimalExplicitConstructionTest, - DecimalImplicitConstructionTest, - DecimalArithmeticOperatorsTest, - DecimalFormatTest, - DecimalUseOfContextTest, - DecimalUsabilityTest, - DecimalPythonAPItests, - ContextAPItests, - DecimalTest, - WithStatementTest, - ContextFlags - ] - else: - test_classes = [DecimalTest] - - # Dynamically build custom test definition for each file in the test - # directory and add the definitions to the DecimalTest class. This - # procedure insures that new files do not get skipped. - for filename in os.listdir(directory): - if '.decTest' not in filename or filename.startswith("."): - continue - head, tail = filename.split('.') - if todo_tests is not None and head not in todo_tests: - continue - tester = lambda self, f=filename: self.eval_file(directory + f) - setattr(DecimalTest, 'test_' + head, tester) - del filename, head, tail, tester - + return m.test_main(arith, verbose, todo_tests, debug) - try: - run_unittest(*test_classes) - if todo_tests is None: - import decimal as DecimalModule - run_doctest(DecimalModule, verbose) - finally: - setcontext(ORIGINAL_CONTEXT) if __name__ == '__main__': import optparse - p = optparse.OptionParser("test_decimal.py [--debug] [{--skip | test1 [test2 [...]]}]") + p = optparse.OptionParser("test_cdecimal.py [--debug] [{--skip | test1 [test2 [...]]}]") p.add_option('--debug', '-d', action='store_true', help='shows the test number and context before each test') p.add_option('--skip', '-s', action='store_true', help='skip over 90% of the arithmetic tests') (opt, args) = p.parse_args() From python-checkins at python.org Thu Jan 21 17:51:25 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 16:51:25 -0000 Subject: [Python-checkins] r77659 - python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/ctx-deccheck.py Message-ID: Author: stefan.krah Date: Thu Jan 21 17:51:24 2010 New Revision: 77659 Log: Whitespace. Modified: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/ctx-deccheck.py Modified: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/ctx-deccheck.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/ctx-deccheck.py (original) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/ctx-deccheck.py Thu Jan 21 17:51:24 2010 @@ -1,5 +1,3 @@ -#!/usr/bin/env python - # # Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. # Licensed to PSF under a Contributor Agreement. From python-checkins at python.org Thu Jan 21 17:51:42 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 16:51:42 -0000 Subject: [Python-checkins] r77660 - python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/deccheck.py Message-ID: Author: stefan.krah Date: Thu Jan 21 17:51:42 2010 New Revision: 77660 Log: Whitespace. Modified: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/deccheck.py Modified: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/deccheck.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/deccheck.py (original) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/deccheck.py Thu Jan 21 17:51:42 2010 @@ -1,5 +1,3 @@ -#!/usr/bin/env python - # # Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. # Licensed to PSF under a Contributor Agreement. From python-checkins at python.org Thu Jan 21 17:58:26 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 16:58:26 -0000 Subject: [Python-checkins] r77661 - python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/randdec.py Message-ID: Author: stefan.krah Date: Thu Jan 21 17:58:26 2010 New Revision: 77661 Log: Whitespace. Modified: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/randdec.py Modified: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/randdec.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/randdec.py (original) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/randdec.py Thu Jan 21 17:58:26 2010 @@ -1,5 +1,3 @@ -#!/usr/bin/env python - # # Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. # Licensed to PSF under a Contributor Agreement. From python-checkins at python.org Thu Jan 21 18:00:08 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 17:00:08 -0000 Subject: [Python-checkins] r77662 - python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/README.txt Message-ID: Author: stefan.krah Date: Thu Jan 21 18:00:08 2010 New Revision: 77662 Log: Update README. Modified: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/README.txt Modified: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/README.txt ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/README.txt (original) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/README.txt Thu Jan 21 18:00:08 2010 @@ -3,8 +3,8 @@ Tests against decimal.py: -../../../python deccheck.py -../../../python ctx-deccheck.py +../../../python deccheck.py [--short|--medium|--long|--all] +../../../python ctx-deccheck.py [--short|--medium|--long|--all] You should not see errors apart from an occasional "Cannot convert byte to string", From python-checkins at python.org Thu Jan 21 18:02:53 2010 From: python-checkins at python.org (mark.dickinson) Date: Thu, 21 Jan 2010 17:02:53 -0000 Subject: [Python-checkins] r77663 - python/trunk/Lib/test/test_strtod.py Message-ID: Author: mark.dickinson Date: Thu Jan 21 18:02:53 2010 New Revision: 77663 Log: Additional testcases for strtod. Modified: python/trunk/Lib/test/test_strtod.py Modified: python/trunk/Lib/test/test_strtod.py ============================================================================== --- python/trunk/Lib/test/test_strtod.py (original) +++ python/trunk/Lib/test/test_strtod.py Thu Jan 21 18:02:53 2010 @@ -100,6 +100,49 @@ "Incorrectly rounded str->float conversion for {}: " "expected {}, got {}".format(s, expected, got)) + def test_short_halfway_cases(self): + # exact halfway cases with a small number of significant digits + for k in 0, 5, 10, 15, 20: + # upper = smallest integer >= 2**54/5**k + upper = -(-2**54/5**k) + # lower = smallest odd number >= 2**53/5**k + lower = -(-2**53/5**k) + if lower % 2 == 0: + lower += 1 + for i in xrange(10 * TEST_SIZE): + # Select a random odd n in [2**53/5**k, + # 2**54/5**k). Then n * 10**k gives a halfway case + # with small number of significant digits. + n, e = random.randrange(lower, upper, 2), k + + # Remove any additional powers of 5. + while n % 5 == 0: + n, e = n // 5, e + 1 + assert n % 10 in (1, 3, 7, 9) + + # Try numbers of the form n * 2**p2 * 10**e, p2 >= 0, + # until n * 2**p2 has more than 20 significant digits. + digits, exponent = n, e + while digits < 10**20: + s = '{}e{}'.format(digits, exponent) + self.check_strtod(s) + # Same again, but with extra trailing zeros. + s = '{}e{}'.format(digits * 10**40, exponent - 40) + self.check_strtod(s) + digits *= 2 + + # Try numbers of the form n * 5**p2 * 10**(e - p5), p5 + # >= 0, with n * 5**p5 < 10**20. + digits, exponent = n, e + while digits < 10**20: + s = '{}e{}'.format(digits, exponent) + self.check_strtod(s) + # Same again, but with extra trailing zeros. + s = '{}e{}'.format(digits * 10**40, exponent - 40) + self.check_strtod(s) + digits *= 5 + exponent -= 1 + def test_halfway_cases(self): # test halfway cases for the round-half-to-even rule for i in xrange(1000): @@ -254,9 +297,20 @@ # demonstration that original fix for issue 7632 bug 1 was # buggy; the exit condition was too strong '247032822920623295e-341', + # demonstrate similar problem to issue 7632 bug1: crash + # with 'oversized quotient in quorem' message. + '99037485700245683102805043437346965248029601286431e-373', + '99617639833743863161109961162881027406769510558457e-373', + '98852915025769345295749278351563179840130565591462e-372', + '99059944827693569659153042769690930905148015876788e-373', + '98914979205069368270421829889078356254059760327101e-372', # issue 7632 bug 5: the following 2 strings convert differently '1000000000000000000000000000000000000000e-16', '10000000000000000000000000000000000000000e-17', + # issue 7632 bug 7 + '991633793189150720000000000000000000000000000000000000000e-33', + # And another, similar, failing halfway case + '4106250198039490000000000000000000000000000000000000000e-38', # issue 7632 bug 8: the following produced 10.0 '10.900000000000000012345678912345678912345', # exercise exit conditions in bigcomp comparison loop From python-checkins at python.org Thu Jan 21 18:27:10 2010 From: python-checkins at python.org (stefan.krah) Date: Thu, 21 Jan 2010 17:27:10 -0000 Subject: [Python-checkins] r77664 - in python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests: Makefile.unix Makefile.vc README.txt additional.decTest karatsuba_fnt.c karatsuba_fnt2.c mpd_mpz_add.c mpd_mpz_divmod.c mpd_mpz_mul.c mpd_mpz_sub.c obj obj/.empty official.decTest ppro_mulmod.c runallconfigs.bat runallconfigs.sh runalltests.bat runalltests.sh runtest.c test_transpose.c testdata testdata/baseconv.decTest testdata/binop_eq.decTest testdata/divmod.decTest testdata/divmod_eq.decTest testdata/fma_eq.decTest testdata/format.decTest testdata/invroot.decTest testdata/largeint.decTest testdata/powmod.decTest testdata/powmod_eq.decTest testdata/shiftlr.decTest testdata/testruntest.decTest vg-runalltests.sh Message-ID: Author: stefan.krah Date: Thu Jan 21 18:27:06 2010 New Revision: 77664 Log: Initial import of Lib/test/decimal_extended_tests/c_tests. Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/Makefile.unix (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/Makefile.vc (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/README.txt (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/additional.decTest (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/karatsuba_fnt.c (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/karatsuba_fnt2.c (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/mpd_mpz_add.c (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/mpd_mpz_divmod.c (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/mpd_mpz_mul.c (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/mpd_mpz_sub.c (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/obj/ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/obj/.empty (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/official.decTest (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/ppro_mulmod.c (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/runallconfigs.bat (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/runallconfigs.sh (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/runalltests.bat (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/runalltests.sh (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/runtest.c (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/test_transpose.c (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/baseconv.decTest (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/binop_eq.decTest (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/divmod.decTest (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/divmod_eq.decTest (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/fma_eq.decTest (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/format.decTest (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/invroot.decTest (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/largeint.decTest (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/powmod.decTest (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/powmod_eq.decTest (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/shiftlr.decTest (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/testruntest.decTest (contents, props changed) python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/vg-runalltests.sh (contents, props changed) Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/Makefile.unix ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/Makefile.unix Thu Jan 21 18:27:06 2010 @@ -0,0 +1,209 @@ + + +CC = gcc + +ifeq ($(machine), x64-asm) +CFLAGS = -DCONFIG_64 -Wall -W -O2 -fomit-frame-pointer -s +endif + +ifeq ($(machine), x64-ansi) +CFLAGS = -DCONFIG_32 -DANSI -Wall -W -O2 -fomit-frame-pointer -s +endif + +ifeq ($(machine), ppro) +CFLAGS = -DCONFIG_32 -DPPRO -DANSI -Wall -W -O2 -fomit-frame-pointer -s +endif + +ifeq ($(machine), ansi) +CFLAGS = -DCONFIG_32 -DANSI -Wall -W -O2 -fomit-frame-pointer -s +endif + + +GMPINC = -I/usr/include -I/usr/local/include +GMPLIBS = -L/usr/lib -L/usr/local/lib +SRCDIR = ../../../../Modules/cdecimal +OBJDIR = obj +OBJS = $(OBJDIR)/basearith.o $(OBJDIR)/context.o $(OBJDIR)/constants.o \ + $(OBJDIR)/convolute.o $(OBJDIR)/crt.o $(OBJDIR)/mpdecimal.o \ + $(OBJDIR)/difradix2.o $(OBJDIR)/error.o $(OBJDIR)/fnt.o \ + $(OBJDIR)/fourstep.o $(OBJDIR)/io.o $(OBJDIR)/memory.o \ + $(OBJDIR)/numbertheory.o $(OBJDIR)/sixstep.o $(OBJDIR)/transpose.o \ + $(OBJDIR)/transpose3.o + + +default: runtest karatsuba_fnt karatsuba_fnt2 ppro_mulmod test_transpose +gmp: runtest karatsuba_fnt karatsuba_fnt2 ppro_mulmod test_transpose \ + mpd_mpz_add mpd_mpz_divmod mpd_mpz_mul mpd_mpz_sub + + +runtest: Makefile $(OBJDIR)/runtest.o $(OBJS) + $(CC) $(CFLAGS) -o runtest $(OBJDIR)/runtest.o $(OBJS) -lm +karatsuba_fnt: Makefile $(OBJDIR)/karatsuba_fnt.o $(OBJS) + $(CC) $(CFLAGS) -o karatsuba_fnt $(OBJDIR)/karatsuba_fnt.o $(OBJS) -lm +karatsuba_fnt2: Makefile $(OBJDIR)/karatsuba_fnt2.o $(OBJS) + $(CC) $(CFLAGS) -o karatsuba_fnt2 $(OBJDIR)/karatsuba_fnt2.o $(OBJS) -lm +ppro_mulmod: Makefile $(OBJDIR)/ppro_mulmod.o $(OBJS) + $(CC) $(CFLAGS) -o ppro_mulmod $(OBJDIR)/ppro_mulmod.o $(OBJS) -lm +test_transpose: Makefile $(OBJDIR)/test_transpose.o $(OBJS) + $(CC) $(CFLAGS) -o test_transpose $(OBJDIR)/test_transpose.o $(OBJS) -lm + + +mpd_mpz_add: Makefile $(OBJDIR)/mpd_mpz_add.o $(OBJS) + $(CC) $(GMPLIBS) $(CFLAGS) -o mpd_mpz_add $(OBJDIR)/mpd_mpz_add.o $(OBJS) -lm -lgmp +mpd_mpz_divmod: Makefile $(OBJDIR)/mpd_mpz_divmod.o $(OBJS) + $(CC) $(GMPLIBS) $(CFLAGS) -o mpd_mpz_divmod $(OBJDIR)/mpd_mpz_divmod.o $(OBJS) -lm -lgmp +mpd_mpz_mul: Makefile $(OBJDIR)/mpd_mpz_mul.o $(OBJDIR)/mpd_mpz_divmod.o $(OBJS) + $(CC) $(GMPLIBS) $(CFLAGS) -o mpd_mpz_mul $(OBJDIR)/mpd_mpz_divmod.o $(OBJS) -lm -lgmp +mpd_mpz_sub: Makefile $(OBJDIR)/mpd_mpz_sub.o $(OBJDIR)/mpd_mpz_divmod.o $(OBJS) + $(CC) $(GMPLIBS) $(CFLAGS) -o mpd_mpz_sub $(OBJDIR)/mpd_mpz_sub.o $(OBJS) -lm -lgmp + + +# dectest +$(OBJDIR)/runtest.o:\ +Makefile runtest.c $(SRCDIR)/io.h $(SRCDIR)/mpdecimal.h $(SRCDIR)/memory.h \ + $(SRCDIR)/mptest.h $(SRCDIR)/mptypes.h + $(CC) -I$(SRCDIR) $(CFLAGS) -c runtest.c -o $(OBJDIR)/runtest.o + +# extended tests +$(OBJDIR)/karatsuba_fnt.o:\ +Makefile karatsuba_fnt.c $(SRCDIR)/mpdecimal.h $(SRCDIR)/mptypes.h \ + $(SRCDIR)/mptest.h + $(CC) -I$(SRCDIR) $(CFLAGS) -c karatsuba_fnt.c -o $(OBJDIR)/karatsuba_fnt.o + +$(OBJDIR)/karatsuba_fnt2.o:\ +Makefile karatsuba_fnt2.c $(SRCDIR)/mpdecimal.h $(SRCDIR)/mptypes.h \ + $(SRCDIR)/mptest.h + $(CC) -I$(SRCDIR) $(CFLAGS) -c karatsuba_fnt2.c -o $(OBJDIR)/karatsuba_fnt2.o + +$(OBJDIR)/ppro_mulmod.o:\ +Makefile ppro_mulmod.c $(SRCDIR)/mpdecimal.h $(SRCDIR)/constants.h \ + $(SRCDIR)/numbertheory.h $(SRCDIR)/mptypes.h \ + $(SRCDIR)/mptest.h $(SRCDIR)/umodarith.h \ + $(SRCDIR)/typearith.h + $(CC) -I$(SRCDIR) $(CFLAGS) -c ppro_mulmod.c -o $(OBJDIR)/ppro_mulmod.o + +$(OBJDIR)/test_transpose.o:\ +Makefile test_transpose.c $(SRCDIR)/bits.h $(SRCDIR)/mpdecimal.h \ + $(SRCDIR)/constants.h $(SRCDIR)/mptypes.h \ + $(SRCDIR)/mptest.h $(SRCDIR)/typearith.h \ + $(SRCDIR)/transpose.h + $(CC) -I$(SRCDIR) $(CFLAGS) -c test_transpose.c -o $(OBJDIR)/test_transpose.o + +# tests against gmp +$(OBJDIR)/mpd_mpz_add.o:\ +Makefile mpd_mpz_add.c $(SRCDIR)/mpdecimal.h $(SRCDIR)/mptypes.h + $(CC) -I$(SRCDIR) $(GMPINC) $(CFLAGS) -c mpd_mpz_add.c -o $(OBJDIR)/mpd_mpz_add.o + +$(OBJDIR)/mpd_mpz_divmod.o:\ +Makefile mpd_mpz_divmod.c $(SRCDIR)/mpdecimal.h $(SRCDIR)/mptypes.h + $(CC) -I$(SRCDIR) $(GMPINC) $(CFLAGS) -c mpd_mpz_divmod.c -o $(OBJDIR)/mpd_mpz_divmod.o + +$(OBJDIR)/mpd_mpz_mul.o:\ +Makefile mpd_mpz_mul.c $(SRCDIR)/mpdecimal.h $(SRCDIR)/mptypes.h + $(CC) -I$(SRCDIR) $(GMPINC) $(CFLAGS) -c mpd_mpz_mul.c -o $(OBJDIR)/mpd_mpz_mul.o + +$(OBJDIR)/mpd_mpz_sub.o:\ +Makefile mpd_mpz_sub.c $(SRCDIR)/mpdecimal.h $(SRCDIR)/mptypes.h + $(CC) -I$(SRCDIR) $(GMPINC) $(CFLAGS) -c mpd_mpz_sub.c -o $(OBJDIR)/mpd_mpz_sub.o + + +$(OBJDIR)/basearith.o:\ +Makefile $(SRCDIR)/basearith.c $(SRCDIR)/constants.h $(SRCDIR)/mpdecimal.h \ + $(SRCDIR)/memory.h $(SRCDIR)/typearith.h $(SRCDIR)/basearith.h + $(CC) $(CFLAGS) -c $(SRCDIR)/basearith.c -o $(OBJDIR)/basearith.o + +$(OBJDIR)/constants.o:\ +Makefile $(SRCDIR)/constants.c $(SRCDIR)/mpdecimal.h $(SRCDIR)/constants.h + $(CC) $(CFLAGS) -c $(SRCDIR)/constants.c -o $(OBJDIR)/constants.o + +$(OBJDIR)/context.o:\ +Makefile $(SRCDIR)/context.c $(SRCDIR)/mpdecimal.h + $(CC) $(CFLAGS) -c $(SRCDIR)/context.c -o $(OBJDIR)/context.o + +$(OBJDIR)/convolute.o:\ +Makefile $(SRCDIR)/convolute.c $(SRCDIR)/bits.h $(SRCDIR)/mpdecimal.h \ + $(SRCDIR)/constants.h $(SRCDIR)/fnt.h $(SRCDIR)/fourstep.h \ + $(SRCDIR)/numbertheory.h $(SRCDIR)/sixstep.h $(SRCDIR)/umodarith.h \ + $(SRCDIR)/typearith.h $(SRCDIR)/convolute.h $(SRCDIR)/vccompat.h + $(CC) $(CFLAGS) -c $(SRCDIR)/convolute.c -o $(OBJDIR)/convolute.o + +$(OBJDIR)/crt.o:\ +Makefile $(SRCDIR)/crt.c $(SRCDIR)/mpdecimal.h $(SRCDIR)/numbertheory.h \ + $(SRCDIR)/constants.h $(SRCDIR)/umodarith.h $(SRCDIR)/typearith.h \ + $(SRCDIR)/crt.h + $(CC) $(CFLAGS) -c $(SRCDIR)/crt.c -o $(OBJDIR)/crt.o + +$(OBJDIR)/difradix2.o:\ +Makefile $(SRCDIR)/difradix2.c $(SRCDIR)/bits.h $(SRCDIR)/mpdecimal.h \ + $(SRCDIR)/numbertheory.h $(SRCDIR)/constants.h $(SRCDIR)/umodarith.h \ + $(SRCDIR)/typearith.h $(SRCDIR)/difradix2.h $(SRCDIR)/vccompat.h + $(CC) $(CFLAGS) -c $(SRCDIR)/difradix2.c -o $(OBJDIR)/difradix2.o + +$(OBJDIR)/error.o:\ +Makefile $(SRCDIR)/error.c $(SRCDIR)/mpdecimal.h + $(CC) $(CFLAGS) -c $(SRCDIR)/error.c -o $(OBJDIR)/error.o + +$(OBJDIR)/fnt.o:\ +Makefile $(SRCDIR)/fnt.c $(SRCDIR)/bits.h $(SRCDIR)/mpdecimal.h \ + $(SRCDIR)/difradix2.h $(SRCDIR)/numbertheory.h $(SRCDIR)/constants.h \ + $(SRCDIR)/fnt.h $(SRCDIR)/vccompat.h + $(CC) $(CFLAGS) -c $(SRCDIR)/fnt.c -o $(OBJDIR)/fnt.o + +$(OBJDIR)/fourstep.o:\ +Makefile $(SRCDIR)/fourstep.c $(SRCDIR)/mpdecimal.h $(SRCDIR)/numbertheory.h \ + $(SRCDIR)/constants.h $(SRCDIR)/sixstep.h $(SRCDIR)/transpose.h \ + $(SRCDIR)/umodarith.h $(SRCDIR)/typearith.h $(SRCDIR)/fourstep.h + $(CC) $(CFLAGS) -c $(SRCDIR)/fourstep.c -o $(OBJDIR)/fourstep.o + +$(OBJDIR)/io.o:\ +Makefile $(SRCDIR)/io.c $(SRCDIR)/bits.h $(SRCDIR)/mpdecimal.h \ + $(SRCDIR)/constants.h $(SRCDIR)/memory.h $(SRCDIR)/typearith.h \ + $(SRCDIR)/io.h $(SRCDIR)/vccompat.h + $(CC) $(CFLAGS) -c $(SRCDIR)/io.c -o $(OBJDIR)/io.o + +$(OBJDIR)/memory.o:\ +Makefile $(SRCDIR)/memory.c $(SRCDIR)/mpdecimal.h $(SRCDIR)/typearith.h \ + $(SRCDIR)/memory.h + $(CC) $(CFLAGS) -c $(SRCDIR)/memory.c -o $(OBJDIR)/memory.o + +$(OBJDIR)/mpdecimal.o:\ +Makefile $(SRCDIR)/mpdecimal.c $(SRCDIR)/basearith.h $(SRCDIR)/mpdecimal.h \ + $(SRCDIR)/typearith.h $(SRCDIR)/bits.h $(SRCDIR)/convolute.h \ + $(SRCDIR)/crt.h $(SRCDIR)/memory.h $(SRCDIR)/umodarith.h \ + $(SRCDIR)/constants.h $(SRCDIR)/mptypes.h $(SRCDIR)/vccompat.h + $(CC) $(CFLAGS) -c $(SRCDIR)/mpdecimal.c -o $(OBJDIR)/mpdecimal.o + +$(OBJDIR)/numbertheory.o:\ +Makefile $(SRCDIR)/numbertheory.c $(SRCDIR)/bits.h $(SRCDIR)/mpdecimal.h \ + $(SRCDIR)/umodarith.h $(SRCDIR)/constants.h $(SRCDIR)/typearith.h \ + $(SRCDIR)/numbertheory.h $(SRCDIR)/vccompat.h + $(CC) $(CFLAGS) -c $(SRCDIR)/numbertheory.c -o $(OBJDIR)/numbertheory.o + +$(OBJDIR)/sixstep.o:\ +Makefile $(SRCDIR)/sixstep.c $(SRCDIR)/bits.h $(SRCDIR)/mpdecimal.h \ + $(SRCDIR)/difradix2.h $(SRCDIR)/numbertheory.h $(SRCDIR)/constants.h \ + $(SRCDIR)/mptypes.h $(SRCDIR)/transpose.h $(SRCDIR)/umodarith.h \ + $(SRCDIR)/typearith.h $(SRCDIR)/sixstep.h $(SRCDIR)/vccompat.h + $(CC) $(CFLAGS) -c $(SRCDIR)/sixstep.c -o $(OBJDIR)/sixstep.o + +$(OBJDIR)/transpose.o:\ +Makefile $(SRCDIR)/transpose.c $(SRCDIR)/bits.h $(SRCDIR)/mpdecimal.h \ + $(SRCDIR)/constants.h $(SRCDIR)/typearith.h $(SRCDIR)/transpose.h \ + $(SRCDIR)/vccompat.h + $(CC) $(CFLAGS) -c $(SRCDIR)/transpose.c -o $(OBJDIR)/transpose.o + +$(OBJDIR)/transpose3.o:\ +Makefile $(SRCDIR)/transpose3.c $(SRCDIR)/bits.h $(SRCDIR)/mpdecimal.h \ + $(SRCDIR)/constants.h $(SRCDIR)/typearith.h $(SRCDIR)/transpose.h \ + $(SRCDIR)/vccompat.h + $(CC) $(CFLAGS) -c $(SRCDIR)/transpose3.c -o $(OBJDIR)/transpose3.o + + +FORCE: + +clean: FORCE + rm -f $(OBJDIR)/*.o runtest karatsuba_fnt karatsuba_fnt2 ppro_mulmod \ + test_transpose mpd_mpz_add mpd_mpz_divmod mpd_mpz_mul mpd_mpz_sub + + + Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/Makefile.vc ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/Makefile.vc Thu Jan 21 18:27:06 2010 @@ -0,0 +1,193 @@ + + +CC = cl.exe + + + +SRCDIR = ..\..\..\..\Modules\cdecimal +OBJDIR = obj +OBJS = $(OBJDIR)\basearith.obj $(OBJDIR)\context.obj $(OBJDIR)\constants.obj \ + $(OBJDIR)\convolute.obj $(OBJDIR)\crt.obj $(OBJDIR)\mpdecimal.obj \ + $(OBJDIR)\difradix2.obj $(OBJDIR)\error.obj $(OBJDIR)\fnt.obj \ + $(OBJDIR)\fourstep.obj $(OBJDIR)\io.obj $(OBJDIR)\memory.obj \ + $(OBJDIR)\numbertheory.obj $(OBJDIR)\sixstep.obj $(OBJDIR)\transpose.obj \ + $(OBJDIR)\transpose3.obj + + +!if "$(machine)" == "x64-asm" +CFLAGS = /DCONFIG_64 /W3 /D_CRT_SECURE_NO_WARNINGS /nologo /MT /Ox /GS /EHsc +OBJS = $(OBJS) $(OBJDIR)\vcdiv64.obj +GMPLIB = "C:\Program Files\gmp\gmp.lib" +GMPINC = "C:\Program Files\gmp" +!endif + +!if "$(machine)" == "x64-ansi" +CFLAGS = /DCONFIG_32 /DANSI /W3 /D_CRT_SECURE_NO_WARNINGS /nologo /MT /Ox /GS /EHsc +GMPLIB = "C:\Program Files\gmp\gmp.lib" +GMPINC = "C:\Program Files\gmp" +!endif + +!if "$(machine)" == "ppro" +CFLAGS = /DCONFIG_32 /DPPRO /DANSI /W3 /D_CRT_SECURE_NO_WARNINGS /nologo /MT /Ox /GS /EHsc +GMPLIB = "C:\Program Files (x86)\gmp\gmp.lib" +GMPINC = "C:\Program Files (x86)\gmp" + +!endif +!if "$(machine)" == "ansi" +CFLAGS = /DCONFIG_32 /DANSI /W3 /D_CRT_SECURE_NO_WARNINGS /nologo /MT /Ox /GS /EHsc +GMPLIB = "C:\Program Files (x86)\gmp\gmp.lib" +GMPINC = "C:\Program Files (x86)\gmp" +!endif + + +default: runtest karatsuba_fnt karatsuba_fnt2 ppro_mulmod test_transpose +gmp: default mpd_mpz_add mpd_mpz_divmod mpd_mpz_mul mpd_mpz_sub + + +# dectest +runtest:\ +Makefile runtest.c $(SRCDIR)\io.h $(SRCDIR)\mpdecimal.h $(SRCDIR)\memory.h \ + $(SRCDIR)\mptest.h $(SRCDIR)\mptypes.h $(OBJS) + $(CC) -I$(SRCDIR) $(CFLAGS) /Foruntest runtest.c $(OBJS) + +# extended tests +karatsuba_fnt:\ +Makefile karatsuba_fnt.c $(SRCDIR)\mpdecimal.h $(SRCDIR)\mptypes.h \ + $(SRCDIR)\mptest.h $(OBJS) + $(CC) -I$(SRCDIR) $(CFLAGS) /Fokaratsuba_fnt karatsuba_fnt.c $(OBJS) +karatsuba_fnt2:\ +Makefile karatsuba_fnt2.c $(SRCDIR)\mpdecimal.h $(SRCDIR)\mptypes.h \ + $(SRCDIR)\mptest.h $(OBJS) + $(CC) -I$(SRCDIR) $(CFLAGS) /Fokaratsuba_fnt2 karatsuba_fnt2.c $(OBJS) +ppro_mulmod:\ +Makefile ppro_mulmod.c $(SRCDIR)\mpdecimal.h $(SRCDIR)\constants.h \ + $(SRCDIR)\numbertheory.h $(SRCDIR)\mptypes.h \ + $(SRCDIR)\mptest.h $(SRCDIR)\umodarith.h \ + $(SRCDIR)\typearith.h $(OBJS) + $(CC) -I$(SRCDIR) $(CFLAGS) /Foppro_mulmod ppro_mulmod.c $(OBJS) +test_transpose:\ +Makefile test_transpose.c $(SRCDIR)\bits.h $(SRCDIR)\mpdecimal.h \ + $(SRCDIR)\constants.h $(SRCDIR)\mptypes.h \ + $(SRCDIR)\mptest.h $(SRCDIR)\typearith.h \ + $(SRCDIR)\transpose.h $(OBJS) + $(CC) -I$(SRCDIR) $(CFLAGS) /Fotest_transpose test_transpose.c $(OBJS) + +# gmp tests +mpd_mpz_add:\ +Makefile mpd_mpz_add.c $(SRCDIR)\mpdecimal.h $(SRCDIR)\mptypes.h $(OBJS) + $(CC) -I$(SRCDIR) -I$(GMPINC) $(CFLAGS) /Fompd_mpz_add mpd_mpz_add.c $(OBJS) $(GMPLIB) +mpd_mpz_divmod:\ +Makefile mpd_mpz_divmod.c $(SRCDIR)\mpdecimal.h $(SRCDIR)\mptypes.h $(OBJS) + $(CC) -I$(SRCDIR) -I$(GMPINC) $(CFLAGS) /Fompd_mpz_divmod mpd_mpz_divmod.c $(OBJS) $(GMPLIB) +mpd_mpz_mul:\ +Makefile mpd_mpz_mul.c $(SRCDIR)\mpdecimal.h $(SRCDIR)\mptypes.h $(OBJS) + $(CC) -I$(SRCDIR) -I$(GMPINC) $(CFLAGS) /Fompd_mpz_mul mpd_mpz_divmod.c $(OBJS) $(GMPLIB) +mpd_mpz_sub:\ +Makefile mpd_mpz_sub.c $(SRCDIR)\mpdecimal.h $(SRCDIR)\mptypes.h $(OBJS) + $(CC) -I$(SRCDIR) -I$(GMPINC) $(CFLAGS) /Fompd_mpz_sub mpd_mpz_sub.c $(OBJS) $(GMPLIB) + + +$(OBJDIR)\basearith.obj:\ +Makefile $(SRCDIR)\basearith.c $(SRCDIR)\constants.h $(SRCDIR)\mpdecimal.h \ + $(SRCDIR)\memory.h $(SRCDIR)\typearith.h $(SRCDIR)\basearith.h + $(CC) $(CFLAGS) -c $(SRCDIR)\basearith.c /Fo$(OBJDIR)\basearith.obj + +$(OBJDIR)\constants.obj:\ +Makefile $(SRCDIR)\constants.c $(SRCDIR)\mpdecimal.h $(SRCDIR)\constants.h + $(CC) $(CFLAGS) -c $(SRCDIR)\constants.c /Fo$(OBJDIR)\constants.obj + +$(OBJDIR)\context.obj:\ +Makefile $(SRCDIR)\context.c $(SRCDIR)\mpdecimal.h + $(CC) $(CFLAGS) -c $(SRCDIR)\context.c /Fo$(OBJDIR)\context.obj + +$(OBJDIR)\convolute.obj:\ +Makefile $(SRCDIR)\convolute.c $(SRCDIR)\bits.h $(SRCDIR)\mpdecimal.h \ + $(SRCDIR)\constants.h $(SRCDIR)\fnt.h $(SRCDIR)\fourstep.h \ + $(SRCDIR)\numbertheory.h $(SRCDIR)\sixstep.h $(SRCDIR)\umodarith.h \ + $(SRCDIR)\typearith.h $(SRCDIR)\convolute.h $(SRCDIR)\vccompat.h + $(CC) $(CFLAGS) -c $(SRCDIR)\convolute.c /Fo$(OBJDIR)\convolute.obj + +$(OBJDIR)\crt.obj:\ +Makefile $(SRCDIR)\crt.c $(SRCDIR)\mpdecimal.h $(SRCDIR)\numbertheory.h \ + $(SRCDIR)\constants.h $(SRCDIR)\umodarith.h $(SRCDIR)\typearith.h \ + $(SRCDIR)\crt.h + $(CC) $(CFLAGS) -c $(SRCDIR)\crt.c /Fo$(OBJDIR)\crt.obj + +$(OBJDIR)\difradix2.obj:\ +Makefile $(SRCDIR)\difradix2.c $(SRCDIR)\bits.h $(SRCDIR)\mpdecimal.h \ + $(SRCDIR)\numbertheory.h $(SRCDIR)\constants.h $(SRCDIR)\umodarith.h \ + $(SRCDIR)\typearith.h $(SRCDIR)\difradix2.h $(SRCDIR)\vccompat.h + $(CC) $(CFLAGS) -c $(SRCDIR)\difradix2.c /Fo$(OBJDIR)\difradix2.obj + +$(OBJDIR)\error.obj:\ +Makefile $(SRCDIR)\error.c $(SRCDIR)\mpdecimal.h + $(CC) $(CFLAGS) -c $(SRCDIR)\error.c /Fo$(OBJDIR)\error.obj + +$(OBJDIR)\fnt.obj:\ +Makefile $(SRCDIR)\fnt.c $(SRCDIR)\bits.h $(SRCDIR)\mpdecimal.h \ + $(SRCDIR)\difradix2.h $(SRCDIR)\numbertheory.h $(SRCDIR)\constants.h \ + $(SRCDIR)\fnt.h $(SRCDIR)\vccompat.h + $(CC) $(CFLAGS) -c $(SRCDIR)\fnt.c /Fo$(OBJDIR)\fnt.obj + +$(OBJDIR)\fourstep.obj:\ +Makefile $(SRCDIR)\fourstep.c $(SRCDIR)\mpdecimal.h $(SRCDIR)\numbertheory.h \ + $(SRCDIR)\constants.h $(SRCDIR)\sixstep.h $(SRCDIR)\transpose.h \ + $(SRCDIR)\umodarith.h $(SRCDIR)\typearith.h $(SRCDIR)\fourstep.h + $(CC) $(CFLAGS) -c $(SRCDIR)\fourstep.c /Fo$(OBJDIR)\fourstep.obj + +$(OBJDIR)\io.obj:\ +Makefile $(SRCDIR)\io.c $(SRCDIR)\bits.h $(SRCDIR)\mpdecimal.h \ + $(SRCDIR)\constants.h $(SRCDIR)\memory.h $(SRCDIR)\typearith.h \ + $(SRCDIR)\io.h $(SRCDIR)\vccompat.h + $(CC) $(CFLAGS) -c $(SRCDIR)\io.c /Fo$(OBJDIR)\io.obj + +$(OBJDIR)\memory.obj:\ +Makefile $(SRCDIR)\memory.c $(SRCDIR)\mpdecimal.h $(SRCDIR)\typearith.h \ + $(SRCDIR)\memory.h + $(CC) $(CFLAGS) -c $(SRCDIR)\memory.c /Fo$(OBJDIR)\memory.obj + +$(OBJDIR)\mpdecimal.obj:\ +Makefile $(SRCDIR)\mpdecimal.c $(SRCDIR)\basearith.h $(SRCDIR)\mpdecimal.h \ + $(SRCDIR)\typearith.h $(SRCDIR)\bits.h $(SRCDIR)\convolute.h \ + $(SRCDIR)\crt.h $(SRCDIR)\memory.h $(SRCDIR)\umodarith.h \ + $(SRCDIR)\constants.h $(SRCDIR)\mptypes.h $(SRCDIR)\vccompat.h + $(CC) $(CFLAGS) -c $(SRCDIR)\mpdecimal.c /Fo$(OBJDIR)\mpdecimal.obj + +$(OBJDIR)\numbertheory.obj:\ +Makefile $(SRCDIR)\numbertheory.c $(SRCDIR)\bits.h $(SRCDIR)\mpdecimal.h \ + $(SRCDIR)\umodarith.h $(SRCDIR)\constants.h $(SRCDIR)\typearith.h \ + $(SRCDIR)\numbertheory.h $(SRCDIR)\vccompat.h + $(CC) $(CFLAGS) -c $(SRCDIR)\numbertheory.c /Fo$(OBJDIR)\numbertheory.obj + +$(OBJDIR)\sixstep.obj:\ +Makefile $(SRCDIR)\sixstep.c $(SRCDIR)\bits.h $(SRCDIR)\mpdecimal.h \ + $(SRCDIR)\difradix2.h $(SRCDIR)\numbertheory.h $(SRCDIR)\constants.h \ + $(SRCDIR)\mptypes.h $(SRCDIR)\transpose.h $(SRCDIR)\umodarith.h \ + $(SRCDIR)\typearith.h $(SRCDIR)\sixstep.h $(SRCDIR)\vccompat.h + $(CC) $(CFLAGS) -c $(SRCDIR)\sixstep.c /Fo$(OBJDIR)\sixstep.obj + +$(OBJDIR)\transpose.obj:\ +Makefile $(SRCDIR)\transpose.c $(SRCDIR)\bits.h $(SRCDIR)\mpdecimal.h \ + $(SRCDIR)\constants.h $(SRCDIR)\typearith.h $(SRCDIR)\transpose.h \ + $(SRCDIR)\vccompat.h + $(CC) $(CFLAGS) -c $(SRCDIR)\transpose.c /Fo$(OBJDIR)\transpose.obj + +$(OBJDIR)\transpose3.obj:\ +Makefile $(SRCDIR)\transpose3.c $(SRCDIR)\bits.h $(SRCDIR)\mpdecimal.h \ + $(SRCDIR)\constants.h $(SRCDIR)\typearith.h $(SRCDIR)\transpose.h \ + $(SRCDIR)\vccompat.h + $(CC) $(CFLAGS) -c $(SRCDIR)\transpose3.c /Fo$(OBJDIR)\transpose3.obj + +$(OBJDIR)\vcdiv64.obj:\ +Makefile $(SRCDIR)\vcdiv64.asm + ml64 /Fo$(OBJDIR)\vcdiv64.obj /c /Cx $(SRCDIR)\vcdiv64.asm + + + +FORCE: + +clean: FORCE + del /q *.obj *.exe $(OBJDIR)\*.obj + + + Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/README.txt ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/README.txt Thu Jan 21 18:27:06 2010 @@ -0,0 +1,41 @@ + + +Test the libmpdec library directly without any intervention of the Python +interpreter. This is particularly useful when testing with a memory +debugger. + +Some tests require a working gmp installation. + + +1. Tests that do not require gmp: + + make machine=[x64-asm|x64-ansi|ppro|ansi] && ./runalltests.sh # gmake on *BSD + + This runs: + + official.decTest: IBM/Cowlishaw's test cases + additional.decTest: Additional tests (bignum, format, same-pointer arguments etc.) + karatsuba_fnt: Test Karatsuba multiplication against fnt multiplication. + karatsuba_fnt2: Test Karatsuba multiplication against karatsuba-with-fnt-basecase. + ppro_mulmod: Only relevant if PPRO is defined. Tests pentium-pro modular multiplication. + test_transpose: Test the transpose functions (used in the fnt). + +2. Tests that require gmp: + + make machine=[x64-asm|x64-ansi|ppro|ansi] gmp && ./runalltests.sh # gmake on *BSD + + This runs all the above tests and: + + mpd_mpz_add: Test addition against gmp. + mpd_mpz_divmod: Test division with remainder against gmp. + mpd_mpz_mul: Test multiplication against gmp. + mpd_mpz_sub: Test subtraction against gmp. + + +3. Very extensive format tests: + + ../../../../python ../genrandlocale.py | ./runtest - + ../../../../python ../genrandformat.py | ./runtest - + ../../../../python ../genlocale.py | ./runtest - + + Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/additional.decTest ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/additional.decTest Thu Jan 21 18:27:06 2010 @@ -0,0 +1,25 @@ + +-- Additional Tests + +Dectest: ./testdata/baseconv.decTest + +Dectest: ./testdata/binop_eq.decTest + +Dectest: ./testdata/divmod.decTest +Dectest: ./testdata/divmod_eq.decTest + +Dectest: ./testdata/fma_eq.decTest + +Dectest: ./testdata/format.decTest + +Dectest: ./testdata/invroot.decTest + +Dectest: ./testdata/largeint.decTest + +Dectest: ./testdata/powmod.decTest +Dectest: ./testdata/powmod_eq.decTest + +Dectest: ./testdata/shiftlr.decTest + + + Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/karatsuba_fnt.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/karatsuba_fnt.c Thu Jan 21 18:27:06 2010 @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include +#include "mpdecimal.h" +#include "mptypes.h" +#include "mptest.h" + + +/* + * Test Karatsuba multiplication against FNT multiplication. + */ + + +#define WORDS 1200 + + +int +main(int argc UNUSED, char **argv) +{ + mpd_uint_t *a, *b; + mpd_uint_t *fntresult, *kresult; + mpd_size_t alen, blen, k; + double total = (WORDS-1)*(WORDS)-12; + double counter = 0; + mpd_size_t rsize; + time_t seed; + + a = malloc(WORDS * (sizeof *a)); + b = malloc(WORDS * (sizeof *b)); + + for (k = 0; k < WORDS; k++) { + a[k] = MPD_RADIX-1; + } + for (k = 0; k < WORDS; k++) { + b[k] = MPD_RADIX-1; + } + + + /* test with all digits 9 */ + for (alen = 4; alen < WORDS; alen++) { + + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], (counter/total*100)); + + for (blen = 1; blen <= alen; blen++) { + + counter++; + + fntresult = _mpd_fntmul(a, b, alen, blen, &rsize); + kresult = _mpd_kmul(a, b, alen, blen, &rsize); + + for (k = 0; k < alen+blen; k++) { + if (kresult[k] != fntresult[k]) { + fprintf(stderr, " FAIL\n"); + exit(1); + } + } + + mpd_free(fntresult); + mpd_free(kresult); + } + } + + /* random test */ + seed = time(NULL); + srandom((unsigned int)seed); + + for (alen = 4; alen < WORDS; alen++) { + + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], (counter/total*100)); + + for (k = 0; k < alen; k++) { + a[k] = random()%MPD_RADIX; + } + + for (blen = 1; blen <= alen; blen++) { + + counter++; + + for (k = 0; k < blen; k++) { + b[k] = random()%MPD_RADIX; + } + + fntresult = _mpd_fntmul(a, b, alen, blen, &rsize); + kresult = _mpd_kmul(a, b, alen, blen, &rsize); + + for (k = 0; k < alen+blen; k++) { + if (kresult[k] != fntresult[k]) { + fprintf(stderr, " FAIL: seed = %"PRI_time_t"\n", seed); + exit(1); + } + } + + mpd_free(fntresult); + mpd_free(kresult); + } + } + + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], 100.0); + fprintf(stderr, " PASS\n"); + + mpd_free(a); + mpd_free(b); + + return 0; +} + + Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/karatsuba_fnt2.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/karatsuba_fnt2.c Thu Jan 21 18:27:06 2010 @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include +#include "mpdecimal.h" +#include "mptypes.h" +#include "mptest.h" + + +/* + * Test Karatsuba multiplication with FNT basecase against + * FNT multiplication. + */ + + +#define WORDS 1200 + + +int +main(int argc UNUSED, char **argv) +{ + mpd_uint_t *a, *b; + mpd_uint_t *fntresult, *kresult; + mpd_size_t alen, blen, k; + double total = (WORDS-1)*(WORDS)-12; + double counter = 0; + mpd_size_t rsize; + time_t seed; + + a = malloc(WORDS * (sizeof *a)); + b = malloc(WORDS * (sizeof *b)); + + for (k = 0; k < WORDS; k++) { + a[k] = MPD_RADIX-1; + } + for (k = 0; k < WORDS; k++) { + b[k] = MPD_RADIX-1; + } + + + /* test with all digits 9 */ + for (alen = 4; alen < WORDS; alen++) { + + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], (counter/total*100)); + + for (blen = 1; blen <= alen; blen++) { + + counter++; + + fntresult = _mpd_fntmul(a, b, alen, blen, &rsize); + kresult = _mpd_kmul_fnt(a, b, alen, blen, &rsize); + + for (k = 0; k < alen+blen; k++) { + if (kresult[k] != fntresult[k]) { + fprintf(stderr, " FAIL\n"); + exit(1); + } + } + + mpd_free(fntresult); + mpd_free(kresult); + } + } + + /* random test */ + seed = time(NULL); + srandom((unsigned int)seed); + + for (alen = 4; alen < WORDS; alen++) { + + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], (counter/total*100)); + + for (k = 0; k < alen; k++) { + a[k] = random()%MPD_RADIX; + } + + for (blen = 1; blen <= alen; blen++) { + + counter++; + + for (k = 0; k < blen; k++) { + b[k] = random()%MPD_RADIX; + } + + fntresult = _mpd_fntmul(a, b, alen, blen, &rsize); + kresult = _mpd_kmul_fnt(a, b, alen, blen, &rsize); + + for (k = 0; k < alen+blen; k++) { + if (kresult[k] != fntresult[k]) { + fprintf(stderr, " FAIL: seed = %"PRI_time_t"\n", seed); + exit(1); + } + } + + mpd_free(fntresult); + mpd_free(kresult); + } + } + + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], 100.0); + fprintf(stderr, " PASS\n"); + + mpd_free(a); + mpd_free(b); + + return 0; +} + + Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/mpd_mpz_add.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/mpd_mpz_add.c Thu Jan 21 18:27:06 2010 @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include +#include +#include +#include "mpdecimal.h" +#include "mptypes.h" + + +/* + * Test mpd_add against mpz_add, for all possible lengths + * (in decimal digits) from 1x1 upto (WORDS*MPD_RDIGITS)x(WORDS*MPD_RDIGITS). + */ + + +#define WORDS 80 + + +int +main(int argc UNUSED, char **argv) +{ + mpd_context_t ctx; + mpd_t *a, *b, *c; + mpz_t x, y, z; + mpd_ssize_t ma; + char *mpdresult, *mpzresult; + char *s; + size_t alen, blen, k; + double total = (WORDS*MPD_RDIGITS)*(WORDS*MPD_RDIGITS)*63; + double counter = 0; + time_t seed; + uint32_t status; + + + mpd_maxcontext(&ctx); + s = malloc(WORDS*MPD_RDIGITS+1); + seed = time(NULL); + srandom((unsigned int)seed); + + for (ma = MPD_MINALLOC_MIN; ma <= MPD_MINALLOC_MAX; ma++) { + + /* DON'T do this in a real program. You have to be sure + * that no previously allocated decimals will ever be used. */ + MPD_MINALLOC = ma; + + a = mpd_new(&ctx); + b = mpd_new(&ctx); + c = mpd_new(&ctx); + mpz_init(x); + mpz_init(y); + mpz_init(z); + + for (alen = 1; alen <= WORDS*MPD_RDIGITS; alen++) { + + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], + (counter/total*100)); + + for (k = 0; k < alen; k++) { + s[k] = '0' + random()%10; + } + s[k] = '\0'; + mpd_qset_string(a, s, &ctx, &status); + mpz_set_str(x, s, 10); + + for (blen = 1; blen <= WORDS*MPD_RDIGITS; blen++) { + + counter++; + + for (k = 0; k < blen; k++) { + s[k] = '0' + random()%10; + } + s[k] = '\0'; + + mpd_qset_string(b, s, &ctx, &status); + mpz_set_str(y, s, 10); + + mpd_qadd(c, a, b, &ctx, &status); + mpdresult = mpd_to_sci(c, 1); + + mpz_add(z, x, y); + mpzresult = mpz_get_str(NULL, 10, z); + + if (strcmp(mpzresult, mpdresult) != 0) { + fprintf(stderr, " FAIL: seed = %"PRI_time_t"\n", seed); + exit(1); + } + + mpd_free(mpdresult); + mpd_free(mpzresult); + } + } + + mpd_del(a); + mpd_del(b); + mpd_del(c); + mpz_clear(x); + mpz_clear(y); + mpz_clear(z); + } + + free(s); + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], 100.0); + fprintf(stderr, " PASS\n"); + + return 0; +} + + Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/mpd_mpz_divmod.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/mpd_mpz_divmod.c Thu Jan 21 18:27:06 2010 @@ -0,0 +1,133 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include +#include +#include +#include "mpdecimal.h" +#include "mptypes.h" + + +/* + * Test mpd_divmod against mpz_fdiv_qr, for all possible lengths + * (in decimal digits) from 1x1 upto (WORDS*MPD_RDIGITS)x(WORDS*MPD_RDIGITS). + */ + + +#define WORDS 80 + + +int +main(int argc UNUSED, char **argv) +{ + mpd_context_t ctx; + mpd_t *a, *b, *qd, *rd; + mpz_t x, y, qz, rz; + mpd_ssize_t ma; + char *q_mpd, *r_mpd; + char *q_mpz, *r_mpz; + char *s; + size_t alen, blen, k; + double total = (WORDS*MPD_RDIGITS-1)*((WORDS*MPD_RDIGITS)/2)*63; + double counter = 0; + int have_nonzero; + time_t seed; + uint32_t status = 0; + + mpd_maxcontext(&ctx); + s = malloc(WORDS*MPD_RDIGITS+1); + seed = time(NULL); + srandom((unsigned int)seed); + + for (ma = MPD_MINALLOC_MIN; ma <= MPD_MINALLOC_MAX; ma++) { + + /* DON'T do this in a real program. You have to be sure + * that no previously allocated decimals will ever be used. */ + MPD_MINALLOC = ma; + + a = mpd_new(&ctx); + b = mpd_new(&ctx); + qd = mpd_new(&ctx); + rd = mpd_new(&ctx); + mpz_init(x); + mpz_init(y); + mpz_init(qz); + mpz_init(rz); + + for (alen = 1; alen <= WORDS*MPD_RDIGITS; alen++) { + + fprintf(stderr, "\r%s: progress: %2.2f%%", argv[0], + (counter/total*100)); + + for (k = 0; k < alen; k++) { + s[k] = '0' + random()%10; + } + s[k] = '\0'; + mpd_qset_string(a, s, &ctx, &status); + mpz_set_str(x, s, 10); + + for (blen = 1; blen <= alen; blen++) { + + counter++; + + have_nonzero = 0; + while (!have_nonzero) { + for (k = 0; k < blen; k++) { + s[k] = '0' + random()%10; + if (s[k] != '0') { + have_nonzero = 1; + } + } + s[k] = '\0'; + } + + mpd_qset_string(b, s, &ctx, &status); + mpz_set_str(y, s, 10); + + mpd_qdivmod(qd, rd, a, b, &ctx, &status); + q_mpd = mpd_to_sci(qd, 1); + r_mpd = mpd_to_sci(rd, 1); + + mpz_fdiv_qr(qz, rz, x, y); + q_mpz = mpz_get_str(NULL, 10, qz); + r_mpz = mpz_get_str(NULL, 10, rz); + + if (strcmp(q_mpz, q_mpd) != 0) { + fprintf(stderr, " FAIL: seed = %"PRI_time_t"\n", seed); + exit(1); + } + if (strcmp(r_mpz, r_mpd) != 0) { + fprintf(stderr, " FAIL: seed = %"PRI_time_t"\n", seed); + exit(1); + } + + mpd_free(q_mpd); + mpd_free(r_mpd); + mpd_free(q_mpz); + mpd_free(r_mpz); + } + } + + mpd_del(a); + mpd_del(b); + mpd_del(qd); + mpd_del(rd); + mpz_clear(x); + mpz_clear(y); + mpz_clear(qz); + mpz_clear(rz); + } + + free(s); + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], 100.0); + fprintf(stderr, " PASS\n"); + + return 0; +} + + Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/mpd_mpz_mul.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/mpd_mpz_mul.c Thu Jan 21 18:27:06 2010 @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include +#include +#include +#include "mpdecimal.h" +#include "mptypes.h" + + +/* + * Test mpd_mul against mpz_mul, for all possible factor lengths + * (in decimal digits) from 1x1 upto (WORDS*MPD_RDIGITS)*(WORDS*MPD_RDIGITS). + */ + + +#define WORDS 80 + + +int +main(int argc UNUSED, char **argv) +{ + mpd_context_t ctx; + mpd_t *a, *b, *c; + mpz_t x, y, z; + mpd_ssize_t ma; + char *mpdresult, *mpzresult; + char *s; + size_t alen, blen, k; + double total = (WORDS*MPD_RDIGITS)*(WORDS*MPD_RDIGITS)*63; + double counter = 0; + time_t seed; + uint32_t status = 0; + + + mpd_maxcontext(&ctx); + s = malloc(WORDS*MPD_RDIGITS+1); + seed = time(NULL); + srandom((unsigned int)seed); + + for (ma = MPD_MINALLOC_MIN; ma <= MPD_MINALLOC_MAX; ma++) { + + /* DON'T do this in a real program. You have to be sure + * that no previously allocated decimals will ever be used. */ + MPD_MINALLOC = ma; + + a = mpd_new(&ctx); + b = mpd_new(&ctx); + c = mpd_new(&ctx); + mpz_init(x); + mpz_init(y); + mpz_init(z); + + for (alen = 1; alen <= WORDS*MPD_RDIGITS; alen++) { + + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], + (counter/total*100)); + + for (k = 0; k < alen; k++) { + s[k] = '0' + random()%10; + } + s[k] = '\0'; + mpd_qset_string(a, s, &ctx, &status); + mpz_set_str(x, s, 10); + + for (blen = 1; blen <= WORDS*MPD_RDIGITS; blen++) { + + counter++; + + for (k = 0; k < blen; k++) { + s[k] = '0' + random()%10; + } + s[k] = '\0'; + + mpd_qset_string(b, s, &ctx, &status); + mpz_set_str(y, s, 10); + + mpd_qmul(c, a, b, &ctx, &status); + mpdresult = mpd_to_sci(c, 1); + + mpz_mul(z, x, y); + mpzresult = mpz_get_str(NULL, 10, z); + + if (strcmp(mpzresult, mpdresult) != 0) { + fprintf(stderr, " FAIL: seed = %"PRI_time_t"\n", seed); + exit(1); + } + + mpd_free(mpdresult); + mpd_free(mpzresult); + } + } + + mpd_del(a); + mpd_del(b); + mpd_del(c); + mpz_clear(x); + mpz_clear(y); + mpz_clear(z); + } + + free(s); + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], 100.0); + fprintf(stderr, " PASS\n"); + + return 0; +} + + Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/mpd_mpz_sub.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/mpd_mpz_sub.c Thu Jan 21 18:27:06 2010 @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include +#include +#include +#include "mpdecimal.h" +#include "mptypes.h" + + +/* + * Test mpd_sub against mpz_sub, for all possible lengths + * (in decimal digits) from 1x1 upto (WORDS*MPD_RDIGITS)x(WORDS*MPD_RDIGITS). + */ + + +#define WORDS 80 + + +int +main(int argc UNUSED, char **argv) +{ + mpd_context_t ctx; + mpd_t *a, *b, *c; + mpz_t x, y, z; + mpd_ssize_t ma; + char *mpdresult, *mpzresult; + char *s; + size_t alen, blen, k; + double total = (WORDS*MPD_RDIGITS)*(WORDS*MPD_RDIGITS)*63; + double counter = 0; + time_t seed; + uint32_t status = 0; + + + mpd_maxcontext(&ctx); + s = malloc(WORDS*MPD_RDIGITS+1); + seed = time(NULL); + srandom((unsigned int)seed); + + for (ma = MPD_MINALLOC_MIN; ma <= MPD_MINALLOC_MAX; ma++) { + + /* DON'T do this in a real program. You have to be sure + * that no previously allocated decimals will ever be used. */ + MPD_MINALLOC = ma; + + a = mpd_new(&ctx); + b = mpd_new(&ctx); + c = mpd_new(&ctx); + mpz_init(x); + mpz_init(y); + mpz_init(z); + + for (alen = 1; alen <= WORDS*MPD_RDIGITS; alen++) { + + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], + (counter/total*100)); + + for (k = 0; k < alen; k++) { + s[k] = '0' + random()%10; + } + s[k] = '\0'; + mpd_qset_string(a, s, &ctx, &status); + mpz_set_str(x, s, 10); + + for (blen = 1; blen <= WORDS*MPD_RDIGITS; blen++) { + + counter++; + + for (k = 0; k < blen; k++) { + s[k] = '0' + random()%10; + } + s[k] = '\0'; + + mpd_qset_string(b, s, &ctx, &status); + mpz_set_str(y, s, 10); + + mpd_qsub(c, a, b, &ctx, &status); + mpdresult = mpd_to_sci(c, 1); + + mpz_sub(z, x, y); + mpzresult = mpz_get_str(NULL, 10, z); + + if (strcmp(mpzresult, mpdresult) != 0) { + fprintf(stderr, " FAIL: seed = %"PRI_time_t"\n", seed); + exit(1); + } + + mpd_free(mpdresult); + mpd_free(mpzresult); + } + } + + mpd_del(a); + mpd_del(b); + mpd_del(c); + mpz_clear(x); + mpz_clear(y); + mpz_clear(z); + } + + free(s); + fprintf(stderr, "\r%s: progress: %2.4f%%", argv[0], 100.0); + fprintf(stderr, " PASS\n"); + + return 0; +} + + Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/obj/.empty ============================================================================== Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/official.decTest ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/official.decTest Thu Jan 21 18:27:06 2010 @@ -0,0 +1,163 @@ + +-- All tests from the dectest directory. Tests that are skipped are +-- commented out. + +Dectest: ../../decimaltestdata/abs.decTest +Dectest: ../../decimaltestdata/add.decTest +Dectest: ../../decimaltestdata/and.decTest +Dectest: ../../decimaltestdata/base.decTest +Dectest: ../../decimaltestdata/clamp.decTest +Dectest: ../../decimaltestdata/class.decTest +Dectest: ../../decimaltestdata/compare.decTest +Dectest: ../../decimaltestdata/comparetotal.decTest +Dectest: ../../decimaltestdata/comparetotmag.decTest +Dectest: ../../decimaltestdata/copyabs.decTest +Dectest: ../../decimaltestdata/copy.decTest +Dectest: ../../decimaltestdata/copynegate.decTest +Dectest: ../../decimaltestdata/copysign.decTest +Dectest: ../../decimaltestdata/ddAbs.decTest +Dectest: ../../decimaltestdata/ddAdd.decTest +Dectest: ../../decimaltestdata/ddAnd.decTest +Dectest: ../../decimaltestdata/ddBase.decTest +-- Dectest: ../../decimaltestdata/ddCanonical.decTest +Dectest: ../../decimaltestdata/ddClass.decTest +Dectest: ../../decimaltestdata/ddCompare.decTest +Dectest: ../../decimaltestdata/ddCompareSig.decTest +Dectest: ../../decimaltestdata/ddCompareTotal.decTest +Dectest: ../../decimaltestdata/ddCompareTotalMag.decTest +Dectest: ../../decimaltestdata/ddCopyAbs.decTest +Dectest: ../../decimaltestdata/ddCopy.decTest +Dectest: ../../decimaltestdata/ddCopyNegate.decTest +Dectest: ../../decimaltestdata/ddCopySign.decTest +Dectest: ../../decimaltestdata/ddDivide.decTest +Dectest: ../../decimaltestdata/ddDivideInt.decTest +-- Dectest: ../../decimaltestdata/ddEncode.decTest +Dectest: ../../decimaltestdata/ddFMA.decTest +Dectest: ../../decimaltestdata/ddInvert.decTest +Dectest: ../../decimaltestdata/ddLogB.decTest +Dectest: ../../decimaltestdata/ddMax.decTest +Dectest: ../../decimaltestdata/ddMaxMag.decTest +Dectest: ../../decimaltestdata/ddMin.decTest +Dectest: ../../decimaltestdata/ddMinMag.decTest +Dectest: ../../decimaltestdata/ddMinus.decTest +Dectest: ../../decimaltestdata/ddMultiply.decTest +Dectest: ../../decimaltestdata/ddNextMinus.decTest +Dectest: ../../decimaltestdata/ddNextPlus.decTest +Dectest: ../../decimaltestdata/ddNextToward.decTest +Dectest: ../../decimaltestdata/ddOr.decTest +Dectest: ../../decimaltestdata/ddPlus.decTest +Dectest: ../../decimaltestdata/ddQuantize.decTest +Dectest: ../../decimaltestdata/ddReduce.decTest +Dectest: ../../decimaltestdata/ddRemainder.decTest +Dectest: ../../decimaltestdata/ddRemainderNear.decTest +Dectest: ../../decimaltestdata/ddRotate.decTest +Dectest: ../../decimaltestdata/ddSameQuantum.decTest +Dectest: ../../decimaltestdata/ddScaleB.decTest +Dectest: ../../decimaltestdata/ddShift.decTest +Dectest: ../../decimaltestdata/ddSubtract.decTest +Dectest: ../../decimaltestdata/ddToIntegral.decTest +Dectest: ../../decimaltestdata/ddXor.decTest +-- Dectest: ../../decimaltestdata/decDouble.decTest +-- Dectest: ../../decimaltestdata/decQuad.decTest +-- Dectest: ../../decimaltestdata/decSingle.decTest +Dectest: ../../decimaltestdata/divide.decTest +Dectest: ../../decimaltestdata/divideint.decTest +Dectest: ../../decimaltestdata/dqAbs.decTest +Dectest: ../../decimaltestdata/dqAdd.decTest +Dectest: ../../decimaltestdata/dqAnd.decTest +Dectest: ../../decimaltestdata/dqBase.decTest +-- Dectest: ../../decimaltestdata/dqCanonical.decTest +Dectest: ../../decimaltestdata/dqClass.decTest +Dectest: ../../decimaltestdata/dqCompare.decTest +Dectest: ../../decimaltestdata/dqCompareSig.decTest +Dectest: ../../decimaltestdata/dqCompareTotal.decTest +Dectest: ../../decimaltestdata/dqCompareTotalMag.decTest +Dectest: ../../decimaltestdata/dqCopyAbs.decTest +Dectest: ../../decimaltestdata/dqCopy.decTest +Dectest: ../../decimaltestdata/dqCopyNegate.decTest +Dectest: ../../decimaltestdata/dqCopySign.decTest +Dectest: ../../decimaltestdata/dqDivide.decTest +Dectest: ../../decimaltestdata/dqDivideInt.decTest +-- Dectest: ../../decimaltestdata/dqEncode.decTest +Dectest: ../../decimaltestdata/dqFMA.decTest +Dectest: ../../decimaltestdata/dqInvert.decTest +Dectest: ../../decimaltestdata/dqLogB.decTest +Dectest: ../../decimaltestdata/dqMax.decTest +Dectest: ../../decimaltestdata/dqMaxMag.decTest +Dectest: ../../decimaltestdata/dqMin.decTest +Dectest: ../../decimaltestdata/dqMinMag.decTest +Dectest: ../../decimaltestdata/dqMinus.decTest +Dectest: ../../decimaltestdata/dqMultiply.decTest +Dectest: ../../decimaltestdata/dqNextMinus.decTest +Dectest: ../../decimaltestdata/dqNextPlus.decTest +Dectest: ../../decimaltestdata/dqNextToward.decTest +Dectest: ../../decimaltestdata/dqOr.decTest +Dectest: ../../decimaltestdata/dqPlus.decTest +Dectest: ../../decimaltestdata/dqQuantize.decTest +Dectest: ../../decimaltestdata/dqReduce.decTest +Dectest: ../../decimaltestdata/dqRemainder.decTest +Dectest: ../../decimaltestdata/dqRemainderNear.decTest +Dectest: ../../decimaltestdata/dqRotate.decTest +Dectest: ../../decimaltestdata/dqSameQuantum.decTest +Dectest: ../../decimaltestdata/dqScaleB.decTest +Dectest: ../../decimaltestdata/dqShift.decTest +Dectest: ../../decimaltestdata/dqSubtract.decTest +Dectest: ../../decimaltestdata/dqToIntegral.decTest +Dectest: ../../decimaltestdata/dqXor.decTest +Dectest: ../../decimaltestdata/dsBase.decTest +-- Dectest: ../../decimaltestdata/dsEncode.decTest +Dectest: ../../decimaltestdata/exp.decTest +Dectest: ../../decimaltestdata/fma.decTest +Dectest: ../../decimaltestdata/inexact.decTest +Dectest: ../../decimaltestdata/invert.decTest +Dectest: ../../decimaltestdata/ln.decTest +Dectest: ../../decimaltestdata/log10.decTest +Dectest: ../../decimaltestdata/logb.decTest +Dectest: ../../decimaltestdata/max.decTest +Dectest: ../../decimaltestdata/maxmag.decTest +Dectest: ../../decimaltestdata/min.decTest +Dectest: ../../decimaltestdata/minmag.decTest +Dectest: ../../decimaltestdata/minus.decTest +Dectest: ../../decimaltestdata/multiply.decTest +Dectest: ../../decimaltestdata/nextminus.decTest +Dectest: ../../decimaltestdata/nextplus.decTest +Dectest: ../../decimaltestdata/nexttoward.decTest +Dectest: ../../decimaltestdata/or.decTest +Dectest: ../../decimaltestdata/plus.decTest +Dectest: ../../decimaltestdata/power.decTest +Dectest: ../../decimaltestdata/powersqrt.decTest +Dectest: ../../decimaltestdata/quantize.decTest +Dectest: ../../decimaltestdata/randomBound32.decTest +Dectest: ../../decimaltestdata/randoms.decTest +Dectest: ../../decimaltestdata/reduce.decTest +Dectest: ../../decimaltestdata/remainder.decTest +Dectest: ../../decimaltestdata/remainderNear.decTest +Dectest: ../../decimaltestdata/rescale.decTest +Dectest: ../../decimaltestdata/rotate.decTest +Dectest: ../../decimaltestdata/rounding.decTest +Dectest: ../../decimaltestdata/samequantum.decTest +Dectest: ../../decimaltestdata/scaleb.decTest +Dectest: ../../decimaltestdata/shift.decTest +Dectest: ../../decimaltestdata/squareroot.decTest +Dectest: ../../decimaltestdata/subtract.decTest +-- Dectest: ../../decimaltestdata/testall.decTest +Dectest: ../../decimaltestdata/tointegral.decTest +Dectest: ../../decimaltestdata/tointegralx.decTest +-- Dectest: ../../decimaltestdata/trim.decTest +Dectest: ../../decimaltestdata/xor.decTest + + +-- Summary of functions that are not implemented or do not need testing: + +-- Dectest: ../../decimaltestdata/ddCanonical.decTest ==> same as copy() +-- Dectest: ../../decimaltestdata/ddEncode.decTest +-- Dectest: ../../decimaltestdata/decDouble.decTest +-- Dectest: ../../decimaltestdata/decQuad.decTest +-- Dectest: ../../decimaltestdata/decSingle.decTest +-- Dectest: ../../decimaltestdata/dqCanonical.decTest ==> same as copy() +-- Dectest: ../../decimaltestdata/dqEncode.decTest +-- Dectest: ../../decimaltestdata/dsEncode.decTest +-- Dectest: ../../decimaltestdata/testall.decTest +-- Dectest: ../../decimaltestdata/trim.decTest + + Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/ppro_mulmod.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/ppro_mulmod.c Thu Jan 21 18:27:06 2010 @@ -0,0 +1,205 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include "mpdecimal.h" + + +#ifdef PPRO + +#include +#include +#include "constants.h" +#include "numbertheory.h" +#include "mptypes.h" +#include "mptest.h" +#include "umodarith.h" + +/* + * These are random tests for the pentium pro modular multiplication functions. + */ + +int +main(int argc UNUSED, char **argv) +{ + double dmod; + uint32_t dinvmod[3]; + mpd_uint_t umod; + mpd_uint_t a, b, c, d; + mpd_uint_t a1, a2, b1, b2; + long i; + int cw; + + cw = mpd_set_fenv(); + + + fprintf(stderr, "%s:\n", argv[0]); + fprintf(stderr, "testing MULMOD ... "); + + srandom((unsigned int)time(NULL)); + + SETMODULUS(P1); + for (i = 0; i < 100000000; i++) { + a = random()%umod; + b = random()%umod; + c = std_mulmod(a, b, umod); + d = MULMOD(a, b); + if (c != d) { + fprintf(stderr, "FAIL: a: %u b: %u ansi: %u " + "ppro: %u\n", a, b, c, d); + exit(1); + } + } + + SETMODULUS(P2); + for (i = 0; i < 100000000; i++) { + a = random()%umod; + b = random()%umod; + c = std_mulmod(a, b, umod); + d = MULMOD(a, b); + if (c != d) { + fprintf(stderr, "FAIL: a: %u b: %u ansi: %u " + "ppro: %u\n", a, b, c, d); + exit(1); + } + } + + SETMODULUS(P3); + for (i = 0; i < 100000000; i++) { + a = random()%umod; + b = random()%umod; + c = std_mulmod(a, b, umod); + d = MULMOD(a, b); + if (c != d) { + fprintf(stderr, "FAIL: a: %u b: %u ansi: %u " + "ppro: %u\n", a, b, c, d); + exit(1); + } + } + + fprintf(stderr, "PASS\n"); + fprintf(stderr, "testing MULMOD2C ... "); + + SETMODULUS(P1); + for (i = 0; i < 100000000; i++) { + a1 = a2 = a = random()%umod; + b1 = b2 = b = random()%umod; + c = random()%umod; + std_mulmod2c(&a1, &b1, c, umod); + MULMOD2C(&a2, &b2, c); + if (a1 != a2 || b1 != b2) { + fprintf(stderr, "FAIL: a: %u b: %u c: %u " + "ansi1: %u ppro1: %u " + "ansi2: %u ppro2: %u ", + a, b, c, a1, a2, b1, b2); + exit(1); + } + } + + SETMODULUS(P2); + for (i = 0; i < 100000000; i++) { + a1 = a2 = a = random()%umod; + b1 = b2 = b = random()%umod; + c = random()%umod; + std_mulmod2c(&a1, &b1, c, umod); + MULMOD2C(&a2, &b2, c); + if (a1 != a2 || b1 != b2) { + fprintf(stderr, "FAIL: a: %u b: %u c: %u " + "ansi1: %u ppro1: %u " + "ansi2: %u ppro2: %u ", + a, b, c, a1, a2, b1, b2); + exit(1); + } + } + + SETMODULUS(P3); + for (i = 0; i < 100000000; i++) { + a1 = a2 = a = random()%umod; + b1 = b2 = b = random()%umod; + c = random()%umod; + std_mulmod2c(&a1, &b1, c, umod); + MULMOD2C(&a2, &b2, c); + if (a1 != a2 || b1 != b2) { + fprintf(stderr, "FAIL: a: %u b: %u c: %u " + "ansi1: %u ppro1: %u " + "ansi2: %u ppro2: %u ", + a, b, c, a1, a2, b1, b2); + exit(1); + } + } + + fprintf(stderr, "PASS\n"); + fprintf(stderr, "testing MULMOD2 ... "); + + SETMODULUS(P1); + for (i = 0; i < 100000000; i++) { + a1 = a2 = a = random()%umod; + b1 = b2 = b = random()%umod; + c = random()%umod; + d = random()%umod; + std_mulmod2(&a1, c, &b1, d, umod); + MULMOD2(&a2, c, &b2, d); + if (a1 != a2 || b1 != b2) { + fprintf(stderr, "FAIL: a: %u b: %u c: %u d: %u " + "ansi1: %u ppro1: %u " + "ansi2: %u ppro2: %u ", + a, b, c, d, a1, a2, b1, b2); + exit(1); + } + } + + SETMODULUS(P2); + for (i = 0; i < 100000000; i++) { + a1 = a2 = a = random()%umod; + b1 = b2 = b = random()%umod; + c = random()%umod; + d = random()%umod; + std_mulmod2(&a1, c, &b1, d, umod); + MULMOD2(&a2, c, &b2, d); + if (a1 != a2 || b1 != b2) { + fprintf(stderr, "FAIL: a: %u b: %u c: %u d: %u " + "ansi1: %u ppro1: %u " + "ansi2: %u ppro2: %u ", + a, b, c, d, a1, a2, b1, b2); + exit(1); + } + } + + SETMODULUS(P3); + for (i = 0; i < 100000000; i++) { + a1 = a2 = a = random()%umod; + b1 = b2 = b = random()%umod; + c = random()%umod; + d = random()%umod; + std_mulmod2(&a1, c, &b1, d, umod); + MULMOD2(&a2, c, &b2, d); + if (a1 != a2 || b1 != b2) { + fprintf(stderr, "FAIL: a: %u b: %u c: %u d: %u " + "ansi1: %u ppro1: %u " + "ansi2: %u ppro2: %u ", + a, b, c, d, a1, a2, b1, b2); + exit(1); + } + } + + fprintf(stderr, "PASS\n"); + + return 0; +} +/* END PPRO_GCC */ +#else + +int +main(int argc UNUSED, char **argv) +{ + fprintf(stderr, "%s: PASS\n", argv[0]); + return 0; +} + +#endif + + + Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/runallconfigs.bat ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/runallconfigs.bat Thu Jan 21 18:27:06 2010 @@ -0,0 +1,28 @@ + at ECHO OFF + +copy /y Makefile.vc Makefile + + +call vcvars64.bat + +nmake clean +nmake machine=x64-asm gmp +call runalltests.bat + +nmake clean +nmake machine=x64-ansi gmp +call runalltests.bat + + +call vcvars32.bat + +nmake clean +nmake machine=ppro gmp +call runalltests.bat + +nmake clean +nmake machine=ansi gmp +call runalltests.bat + + + Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/runallconfigs.sh ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/runallconfigs.sh Thu Jan 21 18:27:06 2010 @@ -0,0 +1,28 @@ +#/bin/sh + +cp -f Makefile.unix Makefile + +GMAKE=`which gmake` +if [ "$GMAKE" == "" ]; then + GMAKE=make +fi + + +$GMAKE clean +$GMAKE machine=x64-asm gmp +./runalltests.sh + +$GMAKE clean +$GMAKE machine=x64-ansi gmp +./runalltests.sh + +$GMAKE clean +$GMAKE machine=ppro gmp +./runalltests.sh + +$GMAKE clean +$GMAKE machine=ansi gmp +./runalltests.sh + + + Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/runalltests.bat ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/runalltests.bat Thu Jan 21 18:27:06 2010 @@ -0,0 +1,25 @@ + at ECHO OFF +echo. +echo Running official tests ... +echo. +runtest.exe --all official.decTest + +echo. +echo Running additional tests ... +echo. +runtest.exe --all additional.decTest + +echo. +echo Running long tests ... +echo. + +ppro_mulmod.exe +if exist mpd_mpz_add.exe mpd_mpz_add.exe +if exist mpd_mpz_sub.exe mpd_mpz_sub.exe +if exist mpd_mpz_mul.exe mpd_mpz_mul.exe +if exist mpd_mpz_divmod.exe mpd_mpz_divmod.exe +karatsuba_fnt.exe +karatsuba_fnt2.exe +test_transpose.exe + + Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/runalltests.sh ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/runalltests.sh Thu Jan 21 18:27:06 2010 @@ -0,0 +1,29 @@ +#!/bin/sh + +printf "\nRunning official tests ... \n\n" +./runtest --all official.decTest + +printf "\nRunning additional tests ... \n\n" +./runtest --all additional.decTest + + +printf "\nRunning long tests ... \n\n" + +./ppro_mulmod +if [ -f mpd_mpz_add ]; then + ./mpd_mpz_add +fi +if [ -f mpd_mpz_sub ]; then + ./mpd_mpz_sub +fi +if [ -f mpd_mpz_mul ]; then + ./mpd_mpz_mul +fi +if [ -f mpd_mpz_divmod ]; then + ./mpd_mpz_divmod +fi +./karatsuba_fnt +./karatsuba_fnt2 +./test_transpose + + Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/runtest.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/runtest.c Thu Jan 21 18:27:06 2010 @@ -0,0 +1,3101 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include "io.h" +#include "memory.h" +#include "mpdecimal.h" +#include "mptest.h" +#include "mptypes.h" + + +#define MAXLINE 400000 +#define MAXTOKEN 32 + + +int have_fail = 0; +int have_printed = 0; + + +static void +mpd_testcontext(mpd_context_t *ctx) +{ +#if defined(CONFIG_64) + ctx->prec=MPD_MAX_PREC; + ctx->emax=MPD_MAX_EMAX; + ctx->emin=MPD_MIN_EMIN; +#elif defined(CONFIG_32) + /* These ranges are needed for the official testsuite + * and are generally not problematic at all. */ + ctx->prec=999999999; + ctx->emax=999999999; + ctx->emin=-999999999; +#else + #error "config not defined" +#endif + ctx->round=MPD_ROUND_HALF_UP; + ctx->traps=MPD_Traps; + ctx->status=0; + ctx->newtrap=0; + ctx->clamp=0; + ctx->allcr=1; +} + +/* Known differences that are within the spec */ +struct result_diff { + const char *id; + const char *calc; + const char *expected; +}; + +struct status_diff { + const char *id; + uint32_t calc; + uint32_t expected; +}; + +struct result_diff ulp_cases[] = { + /* Cases where the result is allowed to differ by less than one ULP. + * Only needed if ctx->allcr is 0. */ + { "expx013", "1.001000", "1.001001" }, + { "expx020", "1.000000", "1.000001" }, + { "expx109", "0.999999910000004049999878", "0.999999910000004049999879" }, + { "expx1036", "1.005088", "1.005087" }, + {NULL, NULL, NULL} +}; + +struct status_diff status_cases[] = { + /* With a reduced working precision in mpd_qpow() the status matches. */ + { "pwsx803", MPD_Inexact|MPD_Rounded|MPD_Subnormal|MPD_Underflow, MPD_Inexact|MPD_Rounded }, + {NULL, 0, 0} +}; + +char *skipit[] = { + /* NULL reference, decimal16, decimal32, or decimal128 */ + "absx900", + "addx9990", + "addx9991", + "clam090", + "clam091", + "clam092", + "clam093", + "clam094", + "clam095", + "clam096", + "clam097", + "clam098", + "clam099", + "clam189", + "clam190", + "clam191", + "clam192", + "clam193", + "clam194", + "clam195", + "clam196", + "clam197", + "clam198", + "clam199", + "comx990", + "comx991", + "cotx9990", + "cotx9991", + "ctmx9990", + "ctmx9991", + "ddabs900", + "ddadd9990", + "ddadd9991", + "ddcom9990", + "ddcom9991", + "ddcot9990", + "ddcot9991", + "ddctm9990", + "ddctm9991", + "dddiv9998", + "dddiv9999", + "dddvi900", + "dddvi901", + "ddfma2990", + "ddfma2991", + "ddfma39990", + "ddfma39991", + "ddlogb900", + "ddmax900", + "ddmax901", + "ddmxg900", + "ddmxg901", + "ddmin900", + "ddmin901", + "ddmng900", + "ddmng901", + "ddmul9990", + "ddmul9991", + "ddnextm900", + "ddnextm900", + "ddnextp900", + "ddnextp900", + "ddnextt900", + "ddnextt901", + "ddqua998", + "ddqua999", + "ddred900", + "ddrem1000", + "ddrem1001", + "ddrmn1000", + "ddrmn1001", + "ddsub9990", + "ddsub9991", + "ddintx074", + "ddintx094", + "divx9998", + "divx9999", + "dvix900", + "dvix901", + "dqabs900", + "dqadd9990", + "dqadd9991", + "dqcom990", + "dqcom991", + "dqcot9990", + "dqcot9991", + "dqctm9990", + "dqctm9991", + "dqdiv9998", + "dqdiv9999", + "dqdvi900", + "dqdvi901", + "dqfma2990", + "dqfma2991", + "dqadd39990", + "dqadd39991", + "dqlogb900", + "dqmax900", + "dqmax901", + "dqmxg900", + "dqmxg901", + "dqmin900", + "dqmin901", + "dqmng900", + "dqmng901", + "dqmul9990", + "dqmul9991", + "dqnextm900", + "dqnextp900", + "dqnextt900", + "dqnextt901", + "dqqua998", + "dqqua999", + "dqred900", + "dqrem1000", + "dqrem1001", + "dqrmn1000", + "dqrmn1001", + "dqsub9990", + "dqsub9991", + "dqintx074", + "dqintx094", + "expx900", + "fmax2990", + "fmax2991", + "fmax39990", + "fmax39991", + "lnx900", + "logx900", + "logbx900", + "maxx900", + "maxx901", + "mxgx900", + "mxgx901", + "mnm900", + "mnm901", + "mng900", + "mng901", + "minx900", + "mulx990", + "mulx991", + "nextm900", + "nextp900", + "nextt900", + "nextt901", + "plu900", + "powx900", + "powx901", + "pwsx900", + "quax1022", + "quax1023", + "quax1024", + "quax1025", + "quax1026", + "quax1027", + "quax1028", + "quax1029", + "quax0a2", + "quax0a3", + "quax998", + "quax999", + "redx900", + "remx1000", + "remx1001", + "rmnx900", + "rmnx901", + "sqtx9900", + "subx9990", + "subx9991", + /* operand range violations, invalid context */ + "expx901", + "expx902", + "expx903", + "expx905", + "lnx901", + "lnx902", + "lnx903", + "lnx905", + "logx901", + "logx902", + "logx903", + "logx905", + "powx1183", + "powx1184", + "powx4001", + "powx4002", + "powx4003", + "powx4005", + "powx4008", + "powx4010", + "powx4012", + "powx4014", + "scbx164", + "scbx165", + "scbx166", + /* skipped for decNumber, too */ + "powx4302", + "powx4303", + "powx4303", + "powx4342", + "powx4343", + "pwsx805", + NULL +}; + +static inline int +startswith(const char *token, const char *s) +{ + return strncasecmp(token, s, strlen(s)) == 0; +} + +static inline int +eqtoken(const char *token, const char *s) +{ + return strcasecmp(token, s) == 0; +} + +static int +check_skip(char *id) +{ + int i; + + for (i = 0; skipit[i] != NULL; i++) { + if (eqtoken(id, skipit[i])) { +#if RT_VERBOSITY == 2 + if (!have_printed) { + fputs("\n\n", stderr); + have_printed = 1; + } + fprintf(stderr, "SKIP: %s\n", id); +#endif + return 1; + } + } + + return 0; +} + +static char * +nexttoken(char *cp) +{ + static char *start; + static char *end; + + if (cp == NULL) + cp = end; + + for (; *cp != '\0'; cp++) { + if (isspace((unsigned char)*cp)) { + ; + } + else if (*cp == '"') { + start = end = cp+1; + for (; *end != '\0'; end++) { + if (*end == '"' && *(end+1) == '"') + end += 1; + else if (*end == '"') + break; + } + if (*end == '\0') + return NULL; + *end++ = '\0'; + return start; + } + else if (*cp == '\'') { + start = end = cp+1; + for (; *end != '\0'; end++) { + if (*end == '\'' && *(end+1) == '\'') + end += 1; + else if (*end == '\'') + break; + } + if (*end == '\0') + return NULL; + *end++ = '\0'; + return start; + } + else { + start = end = cp; + for (; *end != '\0'; end++) + if (isspace((unsigned char)*end)) + break; + if (*end == '\0') + return NULL; + *end++ = '\0'; + return start; + } + } + + return NULL; +} + +/* split a line into tokens */ +static int +split(char *token[], char line[]) +{ + char *cp; + size_t len; + int n = 0; + + cp = nexttoken(line); + while (n < MAXTOKEN && cp != NULL) { + len = strlen(cp); + if ((token[n] = malloc(len+1)) == NULL) { + mpd_err_fatal("out of memory"); + } + strcpy(token[n], cp); + cp = nexttoken(NULL); + n++; + } + token[n] = NULL; + + return n; +} + +static void +freetoken(char **token) +{ + while (*token != NULL) { + free(*token++); + } +} + +/* returns all expected conditions in a status flag */ +static uint32_t +scan_conditions(char **token) +{ + char *condition = *token; + uint32_t status = 0; + + while (condition != NULL) { + + if (startswith(condition, "--")) + break; + else if (eqtoken(condition, "Clamped")) + status |= MPD_Clamped; + else if (eqtoken(condition, "Conversion_syntax")) + status |= MPD_Conversion_syntax; + else if (eqtoken(condition, "Division_by_zero")) + status |= MPD_Division_by_zero; + else if (eqtoken(condition, "Division_impossible")) + status |= MPD_Division_impossible; + else if (eqtoken(condition, "Division_undefined")) + status |= MPD_Division_undefined; + else if (eqtoken(condition, "Fpu_error")) + status |= MPD_Fpu_error; + else if (eqtoken(condition, "Inexact")) + status |= MPD_Inexact; + else if (eqtoken(condition, "Invalid_context")) + status |= MPD_Invalid_context; + else if (eqtoken(condition, "Invalid_operation")) + status |= MPD_Invalid_operation; + else if (eqtoken(condition, "Malloc_error")) + status |= MPD_Malloc_error; + else if (eqtoken(condition, "Not_implemented")) + status |= MPD_Not_implemented; + else if (eqtoken(condition, "Overflow")) + status |= MPD_Overflow; + else if (eqtoken(condition, "Rounded")) + status |= MPD_Rounded; + else if (eqtoken(condition, "Subnormal")) + status |= MPD_Subnormal; + else if (eqtoken(condition, "Underflow")) + status |= MPD_Underflow; + else + mpd_err_fatal("unknown status: %s", condition); + + condition = *(++token); + } + + return status; +} + +static void +compare_expected(const char *calc, const char *expected, uint32_t expected_status, + char *id, const mpd_context_t *ctx, uint32_t status) +{ + char ctxstatus[MPD_MAX_FLAG_STRING]; + char expstatus[MPD_MAX_FLAG_STRING]; + + +#ifndef RT_VERBOSITY + /* Do not print known pseudo-failures. */ + int i; + + /* known ULP diffs */ + if (ctx->allcr == 0) { + for (i = 0; ulp_cases[i].id != NULL; i++) { + if (eqtoken(id, ulp_cases[i].id) && + strcmp(expected, ulp_cases[i].expected) == 0 && + strcmp(calc, ulp_cases[i].calc) == 0) { + return; + } + } + } + + /* known status diffs */ + for (i = 0; status_cases[i].id != NULL; i++) { + if (eqtoken(id, status_cases[i].id) && + expected_status == status_cases[i].expected && + status == status_cases[i].calc) { + return; + } + } +#endif + + if (strcmp(calc, expected) != 0) { + if (!have_printed) { + fputs("\n\n", stderr); + have_printed = 1; + } + fprintf(stderr, "FAIL: %s calc: %s expected: %s\n", + id, calc, expected); + have_fail = 1; + } + if (status != expected_status) { + if (!have_printed) { + fputs("\n\n", stderr); + have_printed = 1; + } + mpd_snprint_flags(ctxstatus, MPD_MAX_FLAG_STRING, status), + mpd_snprint_flags(expstatus, MPD_MAX_FLAG_STRING, expected_status); + fprintf(stderr, "FAIL: %s: status: calc: %s expected: %s\n", + id, ctxstatus, expstatus); + have_fail = 1; + } +} + +static int +equalmem(const mpd_t *a, const mpd_t *b) +{ + mpd_ssize_t i; + + if (a->flags != b->flags) return 0; + if (a->exp != b->exp) return 0; + if (a->len != b->len) return 0; + if (a->digits != b->digits) return 0; + for (i = 0; i < a->len; i++) + if (a->data[i] != b->data[i]) + return 0; + return 1; +} + +static void +check_equalmem(const mpd_t *a, const mpd_t *b, char *id) +{ + if (!equalmem(a, b)) { + fprintf(stderr, "FAIL: const arg changed: %s\n", id); + } +} + +static unsigned long +get_testno(char *token) +{ + char *number; + + number = strpbrk(token, "0123456789"); + return strtoul(number, NULL, 10); +} + +/* scan a single operand and the expected result */ +static int +scan_1op_result(mpd_t *op1, char **result, char *token[], + const mpd_context_t *ctx, uint32_t *status) +{ + /* operand 1 */ + if (token[2] == NULL) { + mpd_err_fatal("parse error at id %s", token[0]); + } + mpd_qset_string(op1, token[2], ctx, status); + + /* discard "->" */ + if (token[3] == NULL) { + mpd_err_fatal("parse error at id %s", token[0]); + } + + /* expected result */ + if (token[4] == NULL) { + mpd_err_fatal("parse error at id %s", token[0]); + } + *result = token[4]; + + return 5; +} + +/* scan a single operand and two results */ +static int +scan_1op_2results(mpd_t *op1, char **result1, char **result2, char *token[], + const mpd_context_t *ctx, uint32_t *status) +{ + /* operand 1 */ + if (token[2] == NULL) { + mpd_err_fatal("parse error at id %s", token[0]); + } + mpd_qset_string(op1, token[2], ctx, status); + + /* discard "->" */ + if (token[3] == NULL) { + mpd_err_fatal("parse error at id %s", token[0]); + } + + /* expected result1 */ + if (token[4] == NULL) { + mpd_err_fatal("parse error at id %s", token[0]); + } + *result1 = token[4]; + + /* expected result2 */ + if (token[5] == NULL) { + mpd_err_fatal("parse error at id %s", token[0]); + } + *result2 = token[5]; + + return 6; +} + +/* scan decimal operand, string operand and the expected result */ +static int +scan_1op_str_result(mpd_t *op1, char **op2, char **result, char *token[], + const mpd_context_t *ctx, uint32_t *status) +{ + /* operand 1 */ + if (token[2] == NULL) { + mpd_err_fatal("%s", token[0]); + } + mpd_qset_string(op1, token[2], ctx, status); + + /* operand 2 */ + if (token[3] == NULL) { + mpd_err_fatal("%s", token[0]); + } + *op2 = token[3]; + + /* discard "->" */ + if (token[4] == NULL) { + mpd_err_fatal("%s", token[0]); + } + + /* expected result */ + if (token[5] == NULL) { + mpd_err_fatal("%s", token[0]); + } + *result = token[5]; + + return 6; +} + +/* scan two operands and the expected result */ +static int +scan_2ops_result(mpd_t *op1, mpd_t *op2, char **result, char *token[], + const mpd_context_t *ctx, uint32_t *status) +{ + /* operand 1 */ + if (token[2] == NULL) { + mpd_err_fatal("%s", token[0]); + } + mpd_qset_string(op1, token[2], ctx, status); + + /* operand 2 */ + if (token[3] == NULL) { + mpd_err_fatal("%s", token[0]); + } + mpd_qset_string(op2, token[3], ctx, status); + + /* discard "->" */ + if (token[4] == NULL) { + mpd_err_fatal("%s", token[0]); + } + + /* expected result */ + if (token[5] == NULL) { + mpd_err_fatal("%s", token[0]); + } + *result = token[5]; + + return 6; +} + +/* scan two operands and two results */ +static int +scan_2ops_2results(mpd_t *op1, mpd_t *op2, char **result1, char **result2, + char *token[], const mpd_context_t *ctx, uint32_t *status) +{ + /* operand 1 */ + if (token[2] == NULL) { + mpd_err_fatal("%s", token[0]); + } + mpd_qset_string(op1, token[2], ctx, status); + + /* operand 2 */ + if (token[3] == NULL) { + mpd_err_fatal("%s", token[0]); + } + mpd_qset_string(op2, token[3], ctx, status); + + /* discard "->" */ + if (token[4] == NULL) { + mpd_err_fatal("%s", token[0]); + } + + /* expected result1 */ + if (token[5] == NULL) { + mpd_err_fatal("%s", token[0]); + } + *result1 = token[5]; + + /* expected result2 */ + if (token[6] == NULL) { + mpd_err_fatal("%s", token[0]); + } + *result2 = token[6]; + + return 7; +} + +/* scan three operands and the expected result */ +static int +scan_3ops_result(mpd_t *op1, mpd_t *op2, mpd_t *op3, char **result, char *token[], + const mpd_context_t *ctx, uint32_t *status) +{ + /* operand 1 */ + if (token[2] == NULL) { + mpd_err_fatal("%s", token[0]); + } + mpd_qset_string(op1, token[2], ctx, status); + + /* operand 2 */ + if (token[3] == NULL) { + mpd_err_fatal("%s", token[0]); + } + mpd_qset_string(op2, token[3], ctx, status); + + /* operand 2 */ + if (token[4] == NULL) { + mpd_err_fatal("%s", token[0]); + } + mpd_qset_string(op3, token[4], ctx, status); + + /* discard "->" */ + if (token[5] == NULL) { + mpd_err_fatal("%s", token[0]); + } + + /* expected result */ + if (token[6] == NULL) { + mpd_err_fatal("%s", token[0]); + } + *result = token[6]; + + return 7; +} + +mpd_t *op, *op1, *op2, *op3; +mpd_t *tmp, *tmp1, *tmp2, *tmp3; +mpd_t *result, *result1, *result2; + + +/* + * Test a function returning pointer to char, accepting: + * op1, context + * + * This function is used for "toSci", "toEng" and "apply" + * and does not use a maxctx for the conversion of the operand. + */ +static void +_cp_MpdCtx(char **token, + char *(*func)(const mpd_t *, int), + const mpd_context_t *ctx) +{ + char *calc; + char *expected; + uint32_t expstatus; + uint32_t status; + int n; + + status = 0; + /* status should be set in conversion */ + n = scan_1op_result(op, &expected, token, ctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* make a copy of the operand */ + mpd_qcopy(tmp, op, &status); + calc = func(tmp, 1); + + /* compare the calculated result to the expected result */ + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + + /* check if tmp is unaltered */ + check_equalmem(tmp, op, token[0]); +} + +/* Quick and dirty: parse hex escape sequences as printed in bytestring + * output of Python3x. */ +static char * +parse_escapes(const char *s) +{ + char hex[5]; + char *result, *cp; + unsigned int u; + int n; + + cp = result = malloc(strlen(s)+1); + if (result == NULL) { + return NULL; + } + + hex[0] = '0'; + hex[1] = '\0'; + while (*s) { + if (*s == '\\' && *(s+1) == 'x') { + for (n = 1; n < 4; n++) { + if (!s[n]) { + free(result); + return NULL; + } + hex[n] = s[n]; + } + hex[n] = '\0'; + sscanf(hex, "%x%n", &u, &n); + *cp++ = u; + s += n; + } + else { + *cp++ = *s++; + } + } + + *cp = '\0'; + return result; +} + +/* + * Test a function returning pointer to char, accepting: + * op1, fmt, context + * + * This function is used for "mpd_format". + */ +static void +_cp_MpdFmtCtx(char **token, + char *(*func)(const mpd_t *, const char *, const mpd_context_t *, uint32_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *fmt; + char *calc; + char *expected; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + /* conversion should be done as if there were no limits */ + n = scan_1op_str_result(op1, &fmt, &expected, token, &maxctx, &status); + + fmt = parse_escapes(fmt); + expected = parse_escapes(expected); + + expstatus = scan_conditions(token+n); + + status = 0; + /* make a copy of the operand */ + mpd_qcopy(tmp, op1, &status); + calc = func(tmp, fmt, ctx, &status); + if (calc == NULL) { + fprintf(stderr, "%s: NULL result\n", token[0]); + return; + } + + /* compare the calculated result to the expected result */ + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + free(fmt); + free(expected); + + /* check if tmp is unaltered */ + check_equalmem(tmp, op1, token[0]); +} + +/* + * Test a function returning pointer to const char, accepting: + * op1, context + */ +static void +_ccp_MpdCtx(char **token, + const char *(*func)(const mpd_t *, const mpd_context_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + const char *calc; + char *expected; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + /* conversion should be done as if there were no limits */ + n = scan_1op_result(op, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + status = 0; + mpd_qcopy(tmp, op, &status); + calc = func(tmp, ctx); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + check_equalmem(tmp, op, token[0]); +} + +/* Test a unary function */ +static void +_Res_Op_Ctx(char *token[], + void (*func)(mpd_t *, const mpd_t *, const mpd_context_t *, uint32_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_1op_result(op, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* result and tmp are distinct decimals */ + status = 0; + mpd_qcopy(tmp, op, &status); + + func(result, tmp, ctx, &status); + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp, op, token[0]); + + + /* result equals operand */ + status = 0; + mpd_qcopy(tmp, op, &status); + + func(tmp, tmp, ctx, &status); + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); +} + +/* Test a unary function */ +static void +_Res_Op_Status(char *token[], + int (*func)(mpd_t *, const mpd_t *, uint32_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_1op_result(op, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* result and tmp are distinct decimals */ + status = 0; + mpd_qcopy(tmp, op, &status); + + func(result, tmp, &status); + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp, op, token[0]); + + + /* result equals operand */ + status = 0; + mpd_qcopy(tmp, op, &status); + + func(tmp, tmp, &status); + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); +} + +/* Test a binary function */ +static void +_Res_Binop_Ctx(char *token[], + void (*func)(mpd_t *, const mpd_t *, const mpd_t *, const mpd_context_t *, uint32_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_result(op1, op2, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* three distinct decimals */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(result, tmp1, tmp2, ctx, &status); + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp1 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(tmp1, tmp1, tmp2, ctx, &status); + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp2 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(tmp2, tmp1, tmp2, ctx, &status); + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp1, op1, token[0]); +} + +/* Test a binary function */ +static void +_Res_Binop_Status(char *token[], + int (*func)(mpd_t *, const mpd_t *, const mpd_t *, uint32_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_result(op1, op2, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* three distinct decimals */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(result, tmp1, tmp2, &status); + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp1 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(tmp1, tmp1, tmp2, &status); + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp2 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(tmp2, tmp1, tmp2, &status); + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp1, op1, token[0]); +} + +/* Test a binary function where op1 == op2. */ +static void +_Res_EqualBinop_Ctx(char *token[], + void (*func)(mpd_t *, const mpd_t *, const mpd_t *, const mpd_context_t *, uint32_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_1op_result(op, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* equal operands, distinct result */ + status = 0; + mpd_qcopy(tmp, op, &status); + + func(result, tmp, tmp, ctx, &status); + /* hack #1 to resolve disagreement with results generated by decimal.py */ + if (expstatus&MPD_Invalid_operation && status&MPD_Division_impossible) { + expstatus = MPD_Division_impossible; + } + /* hack #2 to resolve disagreement with results generated by decimal.py */ + if (expstatus&MPD_Invalid_operation && status&MPD_Division_undefined) { + expstatus = MPD_Division_undefined; + } + /* hack #3 to resolve disagreement with results generated by decimal.py (power) */ + if ((startswith(expected, "-0E") || startswith(expected, "0E")) && mpd_isnan(result)) { + expected = "NaN"; + expstatus = MPD_Invalid_operation; + } + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp, op, token[0]); + + + /* all parameters equal */ + status = 0; + mpd_qcopy(tmp, op, &status); + + func(tmp, tmp, tmp, ctx, &status); + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); +} + +/* Test a binary function where op1 == op2. */ +static void +_Res_EqualBinop_Status(char *token[], + int (*func)(mpd_t *, const mpd_t *, const mpd_t *, uint32_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_1op_result(op, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* equal operands, distinct result */ + status = 0; + mpd_qcopy(tmp, op, &status); + + func(result, tmp, tmp, &status); + + /* hack #1 to resolve disagreement with results generated by decimal.py */ + if (expstatus&MPD_Invalid_operation && status&MPD_Division_impossible) { + expstatus = MPD_Division_impossible; + } + /* hack #2 to resolve disagreement with results generated by decimal.py */ + if (expstatus&MPD_Invalid_operation && status&MPD_Division_undefined) { + expstatus = MPD_Division_undefined; + } + /* hack #3 to resolve disagreement with results generated by decimal.py (power) */ + if ((startswith(expected, "-0E") || startswith(expected, "0E")) && mpd_isnan(result)) { + expected = "NaN"; + expstatus = MPD_Invalid_operation; + } + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp, op, token[0]); + + + /* all parameters equal */ + status = 0; + mpd_qcopy(tmp, op, &status); + + func(tmp, tmp, tmp, &status); + + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); +} + +/* Test a binary function with a binary result */ +static void +_Binres_Binop_Ctx(char *token[], + void (*func)(mpd_t *, mpd_t*, const mpd_t *, const mpd_t *, const mpd_context_t *, uint32_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected1, *expected2; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_2results(op1, op2, &expected1, &expected2, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* four distinct decimals */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(result1, result2, tmp1, tmp2, ctx, &status); + /* hack #1 to resolve disagreement with results generated by decimal.py */ + if (expstatus&MPD_Invalid_operation && status&MPD_Division_impossible) { + expstatus = MPD_Division_impossible; + } + /* hack #2 to resolve disagreement with results generated by decimal.py */ + if (expstatus&MPD_Invalid_operation && status&MPD_Division_undefined) { + expstatus = MPD_Division_undefined; + } + /* hack #3 to resolve disagreement with results generated by decimal.py */ + if ((startswith(expected1, "-Inf") || startswith(expected1, "Inf")) && mpd_isnan(result1)) { + expected1 = "NaN"; + } + + calc = mpd_to_sci(result1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx, status); + free(calc); + + calc = mpd_to_sci(result2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx, status); + free(calc); + + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + + /* result1 == tmp1 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(tmp1, result2, tmp1, tmp2, ctx, &status); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx, status); + free(calc); + + calc = mpd_to_sci(result2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx, status); + free(calc); + + check_equalmem(tmp2, op2, token[0]); + + + /* result2 == tmp1 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(result1, tmp1, tmp1, tmp2, ctx, &status); + + calc = mpd_to_sci(result1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx, status); + free(calc); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx, status); + free(calc); + + check_equalmem(tmp2, op2, token[0]); + + + /* result1 == tmp2 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(tmp2, result2, tmp1, tmp2, ctx, &status); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx, status); + free(calc); + + calc = mpd_to_sci(result2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx, status); + free(calc); + + check_equalmem(tmp1, op1, token[0]); + + + /* result2 == tmp2 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(result1, tmp2, tmp1, tmp2, ctx, &status); + + calc = mpd_to_sci(result1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx, status); + free(calc); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx, status); + free(calc); + + check_equalmem(tmp1, op1, token[0]); + + + /* result1 == tmp1, result2 == tmp2 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(tmp1, tmp2, tmp1, tmp2, ctx, &status); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx, status); + free(calc); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx, status); + free(calc); + + + /* result1 == tmp2, result2 == tmp1 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(tmp2, tmp1, tmp1, tmp2, ctx, &status); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx, status); + free(calc); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx, status); + free(calc); +} + +/* Test a binary function with a binary result; equal operands */ +static void +_Binres_EqualBinop_Ctx(char *token[], + void (*func)(mpd_t *, mpd_t*, const mpd_t *, const mpd_t *, const mpd_context_t *, uint32_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected1, *expected2; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_1op_2results(op, &expected1, &expected2, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* distinct results */ + status = 0; + mpd_qcopy(tmp, op, &status); + + func(result1, result2, tmp, tmp, ctx, &status); + /* hack #1 to resolve disagreement with results generated by decimal.py */ + if (expstatus&MPD_Invalid_operation && status&MPD_Division_impossible) { + expstatus = MPD_Division_impossible; + } + /* hack #2 to resolve disagreement with results generated by decimal.py */ + if (expstatus&MPD_Invalid_operation && status&MPD_Division_undefined) { + expstatus = MPD_Division_undefined; + } + /* hack #3 to resolve disagreement with results generated by decimal.py */ + if ((startswith(expected1, "-Inf") || startswith(expected1, "Inf")) && mpd_isnan(result1)) { + expected1 = "NaN"; + } + + calc = mpd_to_sci(result1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx, status); + free(calc); + + calc = mpd_to_sci(result2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx, status); + free(calc); + + check_equalmem(tmp, op, token[0]); + + + /* result1 == tmp */ + status = 0; + mpd_qcopy(tmp, op, &status); + + func(tmp, result2, tmp, tmp, ctx, &status); + + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx, status); + free(calc); + + calc = mpd_to_sci(result2, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx, status); + free(calc); + + + /* result2 == tmp */ + status = 0; + mpd_qcopy(tmp, op, &status); + + func(result1, tmp, tmp, tmp, ctx, &status); + + calc = mpd_to_sci(result1, 1); + compare_expected(calc, expected1, expstatus, token[0], ctx, status); + free(calc); + + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected2, expstatus, token[0], ctx, status); + free(calc); +} + +/* Test a ternary function */ +static void +_Res_Ternop_Ctx(char *token[], + void (*func)(mpd_t *, const mpd_t *, const mpd_t *, const mpd_t *, const mpd_context_t *, uint32_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_3ops_result(op1, op2, op3, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* four distinct decimals */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + mpd_qcopy(tmp3, op3, &status); + + func(result, tmp1, tmp2, tmp3, ctx, &status); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + check_equalmem(tmp3, op3, token[0]); + + + /* result == tmp1 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + mpd_qcopy(tmp3, op3, &status); + + func(tmp1, tmp1, tmp2, tmp3, ctx, &status); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp2, op2, token[0]); + check_equalmem(tmp3, op3, token[0]); + + + /* result == tmp2 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + mpd_qcopy(tmp3, op3, &status); + + func(tmp2, tmp1, tmp2, tmp3, ctx, &status); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp3, op3, token[0]); + + + /* result == tmp3 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + mpd_qcopy(tmp3, op3, &status); + + func(tmp3, tmp1, tmp2, tmp3, ctx, &status); + + calc = mpd_to_sci(tmp3, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); +} + +/* Test a ternary function, first and second operand equal */ +static void +_Res_EqEqOp_Ctx(char *token[], + void (*func)(mpd_t *, const mpd_t *, const mpd_t *, const mpd_t *, const mpd_context_t *, uint32_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_result(op1, op2, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* distinct result */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(result, tmp1, tmp1, tmp2, ctx, &status); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp1 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(tmp1, tmp1, tmp1, tmp2, ctx, &status); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp2 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(tmp2, tmp1, tmp1, tmp2, ctx, &status); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp1, op1, token[0]); +} + +/* Test a ternary function, first and third operand equal */ +static void +_Res_EqOpEq_Ctx(char *token[], + void (*func)(mpd_t *, const mpd_t *, const mpd_t *, const mpd_t *, const mpd_context_t *, uint32_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_result(op1, op2, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* distinct result */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(result, tmp1, tmp2, tmp1, ctx, &status); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp1 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(tmp1, tmp1, tmp2, tmp1, ctx, &status); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp2 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(tmp2, tmp1, tmp2, tmp1, ctx, &status); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp1, op1, token[0]); +} + +/* Test a ternary function, second and third operand equal */ +static void +_Res_OpEqEq_Ctx(char *token[], + void (*func)(mpd_t *, const mpd_t *, const mpd_t *, const mpd_t *, const mpd_context_t *, uint32_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_result(op1, op2, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* distinct result */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(result, tmp2, tmp1, tmp1, ctx, &status); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp1 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(tmp1, tmp2, tmp1, tmp1, ctx, &status); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp2 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + func(tmp2, tmp2, tmp1, tmp1, ctx, &status); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp1, op1, token[0]); +} + +/* Test a ternary function, first, second and third operand equal */ +static void +_Res_EqEqEq_Ctx(char *token[], + void (*func)(mpd_t *, const mpd_t *, const mpd_t *, const mpd_t *, const mpd_context_t *, uint32_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_1op_result(op, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* distinct result */ + status = 0; + mpd_qcopy(tmp, op, &status); + + func(result, tmp, tmp, tmp, ctx, &status); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp, op, token[0]); + + + /* result == tmp */ + status = 0; + mpd_qcopy(tmp, op, &status); + + func(tmp, tmp, tmp, tmp, ctx, &status); + + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); +} + +/* + * Test a binary function that returns an additional integer result. + * Used for the comparison functions. + */ +static void +_Int_Res_Binop_Ctx(char *token[], + int (*func)(mpd_t *, const mpd_t *, const mpd_t *, const mpd_context_t *, uint32_t *), + mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + int int_result; + char buf[11]; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_result(op1, op2, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* three distinct decimals */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + int_result = func(result, tmp1, tmp2, ctx, &status); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx, status); + } + + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp1 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + int_result = func(tmp1, tmp1, tmp2, ctx, &status); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx, status); + } + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp2 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + int_result = func(tmp2, tmp1, tmp2, ctx, &status); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx, status); + } + check_equalmem(tmp1, op1, token[0]); +} + +/* + * Test a binary function that returns an additional integer result. + * Equal operands. + * Used for the comparison functions. + */ +static void +_Int_Res_EqualBinop_Ctx(char *token[], + int (*func)(mpd_t *, const mpd_t *, const mpd_t *, const mpd_context_t *, uint32_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + int int_result; + char buf[11]; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_1op_result(op, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* equal operands */ + status = 0; + mpd_qcopy(tmp, op, &status); + + int_result = func(result, tmp, tmp, ctx, &status); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx, status); + } + + check_equalmem(tmp, op, token[0]); + + + /* all parameters equal */ + status = 0; + mpd_qcopy(tmp, op, &status); + + int_result = func(tmp, tmp, tmp, ctx, &status); + + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx, status); + } +} + +/* + * Test a binary function that returns an additional integer result. + * Function does not take a context argument. + * Used for the comparison functions. + */ +static void +_Int_Res_Binop(char *token[], + int (*func)(mpd_t *, const mpd_t *, const mpd_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + int int_result; + char buf[11]; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_result(op1, op2, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* three distinct decimals */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + int_result = func(result, tmp1, tmp2); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx, status); + } + + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp1 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + int_result = func(tmp1, tmp1, tmp2); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx, status); + } + check_equalmem(tmp2, op2, token[0]); + + + /* result == tmp2 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + int_result = func(tmp2, tmp1, tmp2); + + calc = mpd_to_sci(tmp2, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx, status); + } + check_equalmem(tmp1, op1, token[0]); +} + +/* + * Test a binary function that returns an additional integer result. + * Function does not take a context argument. + * Equal operands. + * Used for the comparison functions. + */ +static void +_Int_Res_EqualBinop(char *token[], + int (*func)(mpd_t *, const mpd_t *, const mpd_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + int int_result; + char buf[11]; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_1op_result(op, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* equal operands */ + status = 0; + mpd_qcopy(tmp, op, &status); + + int_result = func(result, tmp, tmp); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx, status); + } + + check_equalmem(tmp, op, token[0]); + + + /* all parameters equal */ + status = 0; + mpd_qcopy(tmp, op, &status); + + int_result = func(tmp, tmp, tmp); + + calc = mpd_to_sci(tmp, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + + snprintf(buf, 11, "%d", int_result); + if (int_result != INT_MAX) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx, status); + } +} + +/* + * Test a binary function that returns only an integer result. + * Used for the cmp functions. + */ +enum {SKIP_NONE, SKIP_NAN, SKIP_NONINT}; +static void +_Int_Binop_Status(int skip, char *token[], + int (*func)(const mpd_t *, const mpd_t *, uint32_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + int int_result; + char buf[11]; + char *expected; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_result(op1, op2, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + /* two distinct decimals */ + int_result = func(tmp1, tmp2, &status); + + snprintf(buf, 11, "%d", int_result); + if (!(skip && int_result == INT_MAX)) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx, status); + } + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); +} + +/* + * Test a binary function that returns only an integer result. + * Equal operands. + * Used for the cmp functions. + */ +static void +_Int_EqualBinop_Status(int skip, char *token[], + int (*func)(const mpd_t *, const mpd_t *, uint32_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + int int_result; + char buf[11]; + char *expected; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_1op_result(op, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + status = 0; + mpd_qcopy(tmp, op, &status); + + /* equal operands */ + int_result = func(tmp, tmp, &status); + + snprintf(buf, 11, "%d", int_result); + if (!(skip && int_result == INT_MAX)) { /* NaN cases are skipped for the int_retval */ + compare_expected(buf, expected, expstatus, token[0], ctx, status); + } + check_equalmem(tmp, op, token[0]); +} + +/* + * Test a binary function that returns an int. + * The function does not take a context argument. + */ +static void +_Int_Binop(char *token[], + int (*func)(const mpd_t *, const mpd_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + int int_result; + char buf[11]; + char *expected; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_result(op1, op2, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* two distinct decimals */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + mpd_qcopy(tmp2, op2, &status); + + int_result = func(tmp1, tmp2); + + snprintf(buf, 11, "%d", int_result); + compare_expected(buf, expected, expstatus, token[0], ctx, status); + check_equalmem(tmp1, op1, token[0]); + check_equalmem(tmp2, op2, token[0]); +} + +/* + * Test a binary function that returns an int. + * Equal operands. + * The function does not take a context argument. + */ +static void +_Int_EqualBinop(char *token[], + int (*func)(const mpd_t *, const mpd_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + int int_result; + char buf[11]; + char *expected; + uint32_t expstatus; + uint32_t status = 0; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_1op_result(op, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* equal operands */ + status = 0; + mpd_qcopy(tmp, op, &status); + + int_result = func(tmp, tmp); + + snprintf(buf, 11, "%d", int_result); + compare_expected(buf, expected, expstatus, token[0], ctx, status); + check_equalmem(tmp, op, token[0]); +} + +static mpd_ssize_t +scan_ssize(char *token[]) +{ + errno = 0; + if (token[1] == NULL) { + errno = 1; + return MPD_SSIZE_MAX; + } + return mpd_strtossize(token[1], NULL, 10); +} + +/* + * Test a function with an mpd_t and an mpd_ssize_t operand. + * Used for the shift functions. + */ +static void +_Res_Op_Lsize_Ctx(int skip, char *token[], + void (*func)(mpd_t *, const mpd_t *, mpd_ssize_t, const mpd_context_t *ctx, uint32_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + uint32_t status = 0; + mpd_ssize_t ssize; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_result(op1, op2, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* only integers are allowed for ssize */ + if (skip && (mpd_isspecial(op2) || op2->exp != 0)) { + /* fprintf(stderr, "SKIP: %s\n", token[0]); */ + return; + } + ssize = mpd_qget_ssize(op2, &status); + if (status&MPD_Invalid_operation) { + mpd_err_fatal("value error: %s", token[0]); + } + + /* two distinct decimals */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + + func(result, tmp1, ssize, ctx, &status); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp1, op1, token[0]); + + + /* result == tmp1 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + + func(tmp1, tmp1, ssize, ctx, &status); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); +} + +/* + * Test a function with an mpd_t and an mpd_ssize_t operand. + * Used for the shift functions. + */ +static void +_Res_Op_Lsize_Status(int skip, char *token[], + int (*func)(mpd_t *, const mpd_t *, mpd_ssize_t, uint32_t *), + const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + char *calc; + char *expected; + uint32_t expstatus; + uint32_t status = 0; + mpd_ssize_t ssize; + int n; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_2ops_result(op1, op2, &expected, token, &maxctx, &status); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + + /* only integers are allowed for ssize */ + if (skip && (mpd_isspecial(op2) || op2->exp != 0)) { + /* fprintf(stderr, "SKIP: %s\n", token[0]); */ + return; + } + ssize = mpd_qget_ssize(op2, &status); + if (status&MPD_Invalid_operation) { + mpd_err_fatal("value error: %s", token[0]); + } + + /* two distinct decimals */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + + func(result, tmp1, ssize, &status); + + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); + check_equalmem(tmp1, op1, token[0]); + + + /* result == tmp1 */ + status = 0; + mpd_qcopy(tmp1, op1, &status); + + func(tmp1, tmp1, ssize, &status); + + calc = mpd_to_sci(tmp1, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + free(calc); +} + +static void +_Baseconv(char *token[], const mpd_context_t *ctx) +{ + mpd_context_t maxctx; + uint32_t base; + uint16_t *data16; + uint32_t *data32; + size_t len16, len32; + char *expected; + uint32_t expstatus; + uint32_t status = 0; + char *calc; + int n = 0; + int i, iter = 0; + + mpd_testcontext(&maxctx); + maxctx.traps = MPD_Malloc_error; + + n = scan_1op_result(op1, &expected, token, &maxctx, &status); + assert(mpd_isinteger(op1)); + + /* scan expected conditions */ + expstatus = scan_conditions(token+n); + + status = 0; + base = (1<<15); + len16 = mpd_sizeinbase(op1, base); + data16 = mpd_alloc(len16, sizeof *data16); + len16 = mpd_qexport_u16(data16, len16, base, op1, &status); + if (len16 == SIZE_MAX) { + mpd_err_fatal("export_to_base failed"); + } + + mpd_qimport_u16(result, data16, len16, MPD_POS, base, ctx, &status); + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + + mpd_free(calc); + mpd_free(data16); + +#ifdef RT_EXT_BASECONV + iter = 16; +#endif + for (i = 2; i <= iter; i++) { + + status = 0; + base = i; + len16 = mpd_sizeinbase(op1, base); + data16 = mpd_alloc((mpd_size_t)len16, sizeof *data16); + len16 = mpd_qexport_u16(data16, len16, base, op1, &status); + if (len16 == SIZE_MAX) { + mpd_err_fatal("export_to_base failed"); + } + + mpd_qimport_u16(result, data16, len16, MPD_POS, base, ctx, &status); + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + + mpd_free(calc); + mpd_free(data16); + } + +#ifdef RT_EXT_BASECONV + iter = 100; +#endif + for (i = 0; i < iter; i++) { + + status = 0; + base = random() % UINT16_MAX; + if (base < 2) base = 2; + + len16 = mpd_sizeinbase(op1, base); + data16 = mpd_alloc((mpd_size_t)len16, sizeof *data16); + len16 = mpd_qexport_u16(data16, len16, base, op1, &status); + if (len16 == SIZE_MAX) { + mpd_err_fatal("export_to_base failed"); + } + + mpd_qimport_u16(result, data16, len16, MPD_POS, base, ctx, &status); + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + + mpd_free(calc); + mpd_free(data16); + } + + + status = 0; + base = 1000000000; + len32 = mpd_sizeinbase(op1, base); + data32 = mpd_alloc((mpd_size_t)len32, sizeof *data32); + len32 = mpd_qexport_u32(data32, len32, base, op1, &status); + if (len32 == SIZE_MAX) { + mpd_err_fatal("export_to_base failed"); + } + + mpd_qimport_u32(result, data32, len32, MPD_POS, base, ctx, &status); + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + + mpd_free(calc); + mpd_free(data32); + + status = 0; + base = (1<<30); + len32 = mpd_sizeinbase(op1, base); + data32 = mpd_alloc((mpd_size_t)len32, sizeof *data32); + len32 = mpd_qexport_u32(data32, len32, base, op1, &status); + if (len32 == SIZE_MAX) { + mpd_err_fatal("export_to_base failed"); + } + + mpd_qimport_u32(result, data32, len32, MPD_POS, base, ctx, &status); + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + + mpd_free(calc); + mpd_free(data32); + + for (i = 2; i <= 16; i++) { + + status = 0; + base = i; + len32 = mpd_sizeinbase(op1, base); + data32 = mpd_alloc((mpd_size_t)len32, sizeof *data32); + len32 = mpd_qexport_u32(data32, len32, base, op1, &status); + if (len32 == SIZE_MAX) { + mpd_err_fatal("export_to_base failed"); + } + + mpd_qimport_u32(result, data32, len32, MPD_POS, base, ctx, &status); + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + + mpd_free(calc); + mpd_free(data32); + } + + for (i = 0; i < 100; i++) { + + status = 0; + base = random() % UINT32_MAX; + if (base < 2) base = 2; + + len32 = mpd_sizeinbase(op1, base); + data32 = mpd_alloc((mpd_size_t)len32, sizeof *data32); + len32 = mpd_qexport_u32(data32, len32, base, op1, &status); + if (len32 == SIZE_MAX) { + mpd_err_fatal("export_to_base failed"); + } + + mpd_qimport_u32(result, data32, len32, MPD_POS, base, ctx, &status); + calc = mpd_to_sci(result, 1); + compare_expected(calc, expected, expstatus, token[0], ctx, status); + + mpd_free(calc); + mpd_free(data32); + } +} + +/* unused for now */ +static inline void +add_clarification(char *filename) +{ + filename = NULL; + return; +} + + +/* process a file */ +static void +doit(char *filename) +{ + FILE *file; + mpd_context_t ctx; + char *line; + char *tmpline; + char *token[MAXTOKEN+1]; + uint32_t testno = 0; + mpd_ssize_t l; + + + mpd_testcontext(&ctx); + + ctx.traps = MPD_Malloc_error; + + if (strcmp(filename, "-") == 0) { + file = stdin; + } + else { + if ((file = fopen(filename, "r")) == NULL) { + mpd_err_fatal("could not open %s", filename); + } + } + + if ((line = mpd_alloc(MAXLINE+1, sizeof *line)) == NULL) { + mpd_err_fatal("out of memory"); + } + if ((tmpline = mpd_alloc(MAXLINE+1, sizeof *line)) == NULL) { + mpd_err_fatal("out of memory"); + } + + add_clarification(filename); + + + while (fgets(line, MAXLINE+1, file) != NULL) { + + /* split a line into tokens */ + strcpy(tmpline, line); + if (split(token, tmpline) == 0) { + goto cleanup; + } + + + /* comments */ + if (startswith(token[0], "--")) { + goto cleanup; + } + /* end comments */ + + + /* directives */ + if (startswith(token[0], "Precision")) { + l = scan_ssize(token); + if (errno != 0) { + mpd_err_fatal("%s: %s", filename, line); + } + /*if (!mpd_qsetprec(&ctx, l)) { + mpd_err_fatal("%s: %s", filename, line); + }*/ + /* use a wider range than officially allowed */ + ctx.prec = l; + goto cleanup; + } + + if (startswith(token[0], "Rounding")) { + if (eqtoken(token[1], "Ceiling")) + ctx.round = MPD_ROUND_CEILING; + else if (eqtoken(token[1], "Up")) + ctx.round = MPD_ROUND_UP; + else if (eqtoken(token[1], "Half_up")) + ctx.round = MPD_ROUND_HALF_UP; + else if (eqtoken(token[1], "Half_even")) + ctx.round = MPD_ROUND_HALF_EVEN; + else if (eqtoken(token[1], "Half_down")) + ctx.round = MPD_ROUND_HALF_DOWN; + else if (eqtoken(token[1], "Down")) + ctx.round = MPD_ROUND_DOWN; + else if (eqtoken(token[1], "Floor")) + ctx.round = MPD_ROUND_FLOOR; + else if (eqtoken(token[1], "05up")) + ctx.round = MPD_ROUND_05UP; + else + mpd_err_fatal("%s: %s", filename, line); + goto cleanup; + } + + if (startswith(token[0], "MaxExponent")) { + l = scan_ssize(token); + if (errno != 0) { + mpd_err_fatal("%s: %s", filename, line); + } + /*if (!mpd_qsetemax(&ctx, l)) { + mpd_err_fatal("%s: %s", filename, line); + }*/ + /* use a wider range than officially allowed */ + ctx.emax = l; + goto cleanup; + } + + if (startswith(token[0], "MinExponent")) { + l = scan_ssize(token); + if (errno != 0) { + mpd_err_fatal("%s: %s", filename, line); + } + /*if (!mpd_qsetemin(&ctx, l)) { + mpd_err_fatal("%s: %s", filename, line); + }*/ + /* use a wider range than officially allowed */ + ctx.emin = l; + goto cleanup; + } + + if (startswith(token[0], "Dectest")) { + if (token[1] == NULL) { + mpd_err_fatal("%s: %s", filename, line); + } + doit(token[1]); + goto cleanup; + } + /* end directives */ + + + /* optional directives */ + if (startswith(token[0], "Version")) { + goto cleanup; + } + + if (startswith(token[0], "Extended")) { + goto cleanup; + } + + if (startswith(token[0], "Clamp")) { + l = scan_ssize(token); + if (errno != 0) { + mpd_err_fatal("%s: %s", filename, line); + } + if (!mpd_qsetclamp(&ctx, (int)l)) { + mpd_err_fatal("%s: %s", filename, line); + } + goto cleanup; + } + if (startswith(token[0], "Locale")) { + if (token[1] == NULL) { + mpd_err_fatal("%s: %s", filename, line); + } + fprintf(stderr, "locale: %s\n", token[1]); + if (setlocale(LC_NUMERIC, token[1]) == NULL) { + mpd_err_fatal("%s: %s", filename, line); + } + goto cleanup; + } + /* end directives */ + + + /* end optional directives */ + + + /* + * Actual tests start here: + * - token[0] is the id + * - token[1] is the operation type + * - testno can be used for setting a watchpoint in the debugger + */ + testno = get_testno(token[0]); + + /* The id is in the skip list */ + if (check_skip(token[0])) { + goto cleanup; + } + + /* Unary functions with char * result */ + if (eqtoken(token[1], "tosci") || eqtoken(token[1], "apply")) { + _cp_MpdCtx(token, mpd_to_sci, &ctx); + } + else if (eqtoken(token[1], "toeng")) { + _cp_MpdCtx(token, mpd_to_eng, &ctx); + } + else if (eqtoken(token[1], "format")) { + _cp_MpdFmtCtx(token, mpd_qformat, &ctx); + } + /* Unary function with const char * result */ + else if (eqtoken(token[1], "class")) { + _ccp_MpdCtx(token, mpd_class, &ctx); + } + + /* Unary functions with mpd_t * result */ + else if (eqtoken(token[1], "abs")) { + _Res_Op_Ctx(token, mpd_qabs, &ctx); + } + else if (eqtoken(token[1], "copy")) { + _Res_Op_Status(token, mpd_qcopy, &ctx); + } + else if (eqtoken(token[1], "copyabs")) { + _Res_Op_Status(token, mpd_qcopy_abs, &ctx); + } + else if (eqtoken(token[1], "copynegate")) { + _Res_Op_Status(token, mpd_qcopy_negate, &ctx); + } + else if (eqtoken(token[1], "exp")) { + _Res_Op_Ctx(token, mpd_qexp, &ctx); + } + else if (eqtoken(token[1], "invert")) { + _Res_Op_Ctx(token, mpd_qinvert, &ctx); + } + else if (eqtoken(token[1], "invroot")) { + _Res_Op_Ctx(token, mpd_qinvroot, &ctx); + } + else if (eqtoken(token[1], "ln")) { + _Res_Op_Ctx(token, mpd_qln, &ctx); + } + else if (eqtoken(token[1], "log10")) { + _Res_Op_Ctx(token, mpd_qlog10, &ctx); + } + else if (eqtoken(token[1], "logb")) { + _Res_Op_Ctx(token, mpd_qlogb, &ctx); + } + else if (eqtoken(token[1], "minus")) { + _Res_Op_Ctx(token, mpd_qminus, &ctx); + } + else if (eqtoken(token[1], "nextminus")) { + _Res_Op_Ctx(token, mpd_qnext_minus, &ctx); + } + else if (eqtoken(token[1], "nextplus")) { + _Res_Op_Ctx(token, mpd_qnext_plus, &ctx); + } + else if (eqtoken(token[1], "plus")) { + _Res_Op_Ctx(token, mpd_qplus, &ctx); + } + else if (eqtoken(token[1], "reduce")) { + _Res_Op_Ctx(token, mpd_qreduce, &ctx); + } + else if (eqtoken(token[1], "squareroot")) { + _Res_Op_Ctx(token, mpd_qsqrt, &ctx); + } + else if (eqtoken(token[1], "tointegral")) { + _Res_Op_Ctx(token, mpd_qround_to_int, &ctx); + } + else if (eqtoken(token[1], "tointegralx")) { + _Res_Op_Ctx(token, mpd_qround_to_intx, &ctx); + } + + /* Binary function returning an int */ + else if (eqtoken(token[1], "samequantum")) { + _Int_Binop(token, mpd_same_quantum, &ctx); + } + /* Binary function returning an int, equal operands */ + else if (eqtoken(token[1], "samequantum_eq")) { + _Int_EqualBinop(token, mpd_same_quantum, &ctx); + } + + /* Binary functions with mpd_t * result */ + else if (eqtoken(token[1], "add")) { + _Res_Binop_Ctx(token, mpd_qadd, &ctx); + } + else if (eqtoken(token[1], "and")) { + _Res_Binop_Ctx(token, mpd_qand, &ctx); + } + else if (eqtoken(token[1], "copysign")) { + _Res_Binop_Status(token, mpd_qcopy_sign, &ctx); + } + else if (eqtoken(token[1], "divide")) { + _Res_Binop_Ctx(token, mpd_qdiv, &ctx); + _Res_Binop_Ctx(token, mpd_qtest_newtondiv, &ctx); + } + else if (eqtoken(token[1], "divideint")) { + _Res_Binop_Ctx(token, mpd_qdivint, &ctx); + _Res_Binop_Ctx(token, mpd_qtest_newtondivint, &ctx); + } + else if (eqtoken(token[1], "max")) { + _Res_Binop_Ctx(token, mpd_qmax, &ctx); + } + else if (eqtoken(token[1], "maxmag")) { + _Res_Binop_Ctx(token, mpd_qmax_mag, &ctx); + } + else if (eqtoken(token[1], "min")) { + _Res_Binop_Ctx(token, mpd_qmin, &ctx); + } + else if (eqtoken(token[1], "minmag")) { + _Res_Binop_Ctx(token, mpd_qmin_mag, &ctx); + } + else if (eqtoken(token[1], "multiply")) { + _Res_Binop_Ctx(token, mpd_qmul, &ctx); + } + else if (eqtoken(token[1], "nexttoward")) { + _Res_Binop_Ctx(token, mpd_qnext_toward, &ctx); + } + else if (eqtoken(token[1], "or")) { + _Res_Binop_Ctx(token, mpd_qor, &ctx); + } + else if (eqtoken(token[1], "power")) { + _Res_Binop_Ctx(token, mpd_qpow, &ctx); + } + else if (eqtoken(token[1], "quantize")) { + _Res_Binop_Ctx(token, mpd_qquantize, &ctx); + } + else if (eqtoken(token[1], "remainder")) { + _Res_Binop_Ctx(token, mpd_qrem, &ctx); + _Res_Binop_Ctx(token, mpd_qtest_newtonrem, &ctx); + } + else if (eqtoken(token[1], "remaindernear")) { + _Res_Binop_Ctx(token, mpd_qrem_near, &ctx); + } + else if (eqtoken(token[1], "rotate")) { + _Res_Binop_Ctx(token, mpd_qrotate, &ctx); + } + else if (eqtoken(token[1], "scaleb")) { + _Res_Binop_Ctx(token, mpd_qscaleb, &ctx); + } + else if (eqtoken(token[1], "shift")) { + _Res_Binop_Ctx(token, mpd_qshift, &ctx); + _Res_Op_Lsize_Ctx(SKIP_NONINT, token, mpd_qshiftn, &ctx); + } + else if (eqtoken(token[1], "subtract")) { + _Res_Binop_Ctx(token, mpd_qsub, &ctx); + } + else if (eqtoken(token[1], "xor")) { + _Res_Binop_Ctx(token, mpd_qxor, &ctx); + } + + /* Binary functions with mpd_t result, equal operands */ + else if (eqtoken(token[1], "add_eq")) { + _Res_EqualBinop_Ctx(token, mpd_qadd, &ctx); + } + else if (eqtoken(token[1], "and_eq")) { + _Res_EqualBinop_Ctx(token, mpd_qand, &ctx); + } + else if (eqtoken(token[1], "copysign_eq")) { + _Res_EqualBinop_Status(token, mpd_qcopy_sign, &ctx); + } + else if (eqtoken(token[1], "divide_eq")) { + _Res_EqualBinop_Ctx(token, mpd_qdiv, &ctx); + _Res_EqualBinop_Ctx(token, mpd_qtest_newtondiv, &ctx); + } + else if (eqtoken(token[1], "divideint_eq")) { + _Res_EqualBinop_Ctx(token, mpd_qdivint, &ctx); + _Res_EqualBinop_Ctx(token, mpd_qtest_newtondivint, &ctx); + } + else if (eqtoken(token[1], "max_eq")) { + _Res_EqualBinop_Ctx(token, mpd_qmax, &ctx); + } + else if (eqtoken(token[1], "maxmag_eq")) { + _Res_EqualBinop_Ctx(token, mpd_qmax_mag, &ctx); + } + else if (eqtoken(token[1], "min_eq")) { + _Res_EqualBinop_Ctx(token, mpd_qmin, &ctx); + } + else if (eqtoken(token[1], "minmag_eq")) { + _Res_EqualBinop_Ctx(token, mpd_qmin_mag, &ctx); + } + else if (eqtoken(token[1], "multiply_eq")) { + _Res_EqualBinop_Ctx(token, mpd_qmul, &ctx); + } + else if (eqtoken(token[1], "nexttoward_eq")) { + _Res_EqualBinop_Ctx(token, mpd_qnext_toward, &ctx); + } + else if (eqtoken(token[1], "or_eq")) { + _Res_EqualBinop_Ctx(token, mpd_qor, &ctx); + } + else if (eqtoken(token[1], "power_eq")) { + _Res_EqualBinop_Ctx(token, mpd_qpow, &ctx); + } + else if (eqtoken(token[1], "quantize_eq")) { + _Res_EqualBinop_Ctx(token, mpd_qquantize, &ctx); + } + else if (eqtoken(token[1], "remainder_eq")) { + _Res_EqualBinop_Ctx(token, mpd_qrem, &ctx); + _Res_EqualBinop_Ctx(token, mpd_qtest_newtonrem, &ctx); + } + else if (eqtoken(token[1], "remaindernear_eq")) { + _Res_EqualBinop_Ctx(token, mpd_qrem_near, &ctx); + } + else if (eqtoken(token[1], "rotate_eq")) { + _Res_EqualBinop_Ctx(token, mpd_qrotate, &ctx); + } + else if (eqtoken(token[1], "scaleb_eq")) { + _Res_EqualBinop_Ctx(token, mpd_qscaleb, &ctx); + } + else if (eqtoken(token[1], "shift_eq")) { + _Res_EqualBinop_Ctx(token, mpd_qshift, &ctx); + } + else if (eqtoken(token[1], "subtract_eq")) { + _Res_EqualBinop_Ctx(token, mpd_qsub, &ctx); + } + else if (eqtoken(token[1], "xor_eq")) { + _Res_EqualBinop_Ctx(token, mpd_qxor, &ctx); + } + + /* Binary function with binary result */ + else if (eqtoken(token[1], "divmod")) { + _Binres_Binop_Ctx(token, mpd_qdivmod, &ctx); + _Binres_Binop_Ctx(token, mpd_qtest_newton_divmod, &ctx); + } + + /* Binary function with binary result, equal operands */ + else if (eqtoken(token[1], "divmod_eq")) { + _Binres_EqualBinop_Ctx(token, mpd_qdivmod, &ctx); + _Binres_EqualBinop_Ctx(token, mpd_qtest_newton_divmod, &ctx); + } + + + /* Ternary functions with mpd_t result */ + else if (eqtoken(token[1], "fma")) { + _Res_Ternop_Ctx(token, mpd_qfma, &ctx); + } + else if (eqtoken(token[1], "powmod")) { + _Res_Ternop_Ctx(token, mpd_qpowmod, &ctx); + } + + /* Ternary functions with mpd_t result, eq_eq_op */ + else if (eqtoken(token[1], "fma_eq_eq_op")) { + _Res_EqEqOp_Ctx(token, mpd_qfma, &ctx); + } + else if (eqtoken(token[1], "powmod_eq_eq_op")) { + _Res_EqEqOp_Ctx(token, mpd_qpowmod, &ctx); + } + + /* Ternary functions with mpd_t result, eq_op_eq */ + else if (eqtoken(token[1], "fma_eq_op_eq")) { + _Res_EqOpEq_Ctx(token, mpd_qfma, &ctx); + } + else if (eqtoken(token[1], "powmod_eq_op_eq")) { + _Res_EqOpEq_Ctx(token, mpd_qpowmod, &ctx); + } + + /* Ternary functions with mpd_t result, op_eq_eq */ + else if (eqtoken(token[1], "fma_op_eq_eq")) { + _Res_OpEqEq_Ctx(token, mpd_qfma, &ctx); + } + else if (eqtoken(token[1], "powmod_op_eq_eq")) { + _Res_OpEqEq_Ctx(token, mpd_qpowmod, &ctx); + } + + /* Ternary functions with mpd_t result, eq_eq_eq */ + else if (eqtoken(token[1], "fma_eq_eq_eq")) { + _Res_EqEqEq_Ctx(token, mpd_qfma, &ctx); + } + else if (eqtoken(token[1], "powmod_eq_eq_eq")) { + _Res_EqEqEq_Ctx(token, mpd_qpowmod, &ctx); + } + + /* Special cases for the comparison functions */ + else if (eqtoken(token[1], "compare")) { + _Int_Res_Binop_Ctx(token, mpd_qcompare, &ctx); + _Int_Binop_Status(SKIP_NAN, token, mpd_qcmp, &ctx); + } + else if (eqtoken(token[1], "comparesig")) { + _Int_Res_Binop_Ctx(token, mpd_qcompare_signal, &ctx); + } + else if (eqtoken(token[1], "comparetotal")) { + _Int_Res_Binop(token, mpd_compare_total, &ctx); + _Int_Binop(token, mpd_cmp_total, &ctx); + } + else if (eqtoken(token[1], "comparetotmag")) { + _Int_Res_Binop(token, mpd_compare_total_mag, &ctx); + _Int_Binop(token, mpd_cmp_total_mag, &ctx); + } + + /* Special cases for the comparison functions, equal operands */ + else if (eqtoken(token[1], "compare_eq")) { + _Int_Res_EqualBinop_Ctx(token, mpd_qcompare, &ctx); + _Int_EqualBinop_Status(SKIP_NAN, token, mpd_qcmp, &ctx); + } + else if (eqtoken(token[1], "comparesig_eq")) { + _Int_Res_EqualBinop_Ctx(token, mpd_qcompare_signal, &ctx); + } + else if (eqtoken(token[1], "comparetotal_eq")) { + _Int_Res_EqualBinop(token, mpd_compare_total, &ctx); + _Int_EqualBinop(token, mpd_cmp_total, &ctx); + } + else if (eqtoken(token[1], "comparetotmag_eq")) { + _Int_Res_EqualBinop(token, mpd_compare_total_mag, &ctx); + _Int_EqualBinop(token, mpd_cmp_total_mag, &ctx); + } + + /* Special cases for the shift functions */ + else if (eqtoken(token[1], "shiftleft")) { + _Res_Op_Lsize_Status(SKIP_NONINT, token, mpd_qshiftl, &ctx); + } + else if (eqtoken(token[1], "shiftright")) { + _Res_Op_Lsize_Status(SKIP_NONINT, token, + (int (*)(mpd_t *, const mpd_t *, mpd_ssize_t, uint32_t *))mpd_qshiftr, &ctx); + } + + /* Special case for the base conversion functions */ + else if (eqtoken(token[1], "baseconv")) { + _Baseconv(token, &ctx); + } + + /* not in the spec any longer */ + else if (eqtoken(token[1], "rescale")) { + ; + } + + /* unknown operation */ + else { + mpd_err_fatal("%s: unknown operation: %s", filename, line); + } + /* end tests */ + + cleanup: + freetoken(token); + } + + mpd_free(line); + mpd_free(tmpline); + if (file != stdin) { + fclose(file); + } +} + + +int main(int argc, char **argv) +{ + mpd_ssize_t ma, limit; + int n = 1; + + if (argc == 2) { + limit = 2; + } + else if (argc == 3) { + if (strcmp(argv[n++], "--all") != 0) { + fputs("runtest: usage: runtest [--all] testfile\n", stderr); + exit(EXIT_FAILURE); + } + limit = MPD_MINALLOC_MAX; + } + else { + fputs("runtest: usage: runtest [--all] testfile\n", stderr); + exit(EXIT_FAILURE); + } + + for (ma = MPD_MINALLOC_MIN; ma <= limit; ma++) { + + /* DON'T do this in a real program. You have to be sure + * that no previously allocated decimals will ever be used. */ + MPD_MINALLOC = ma; + if (n == 2) { + fprintf(stderr, "minalloc: %" PRI_mpd_ssize_t "\n", MPD_MINALLOC); + } + + op = mpd_qnew(); + op1 = mpd_qnew(); + op2 = mpd_qnew(); + op3 = mpd_qnew(); + tmp = mpd_qnew(); + tmp1 = mpd_qnew(); + tmp2 = mpd_qnew(); + tmp3 = mpd_qnew(); + result = mpd_qnew(); + result1 = mpd_qnew(); + result2 = mpd_qnew(); + + doit(argv[n]); + + mpd_del(op); + mpd_del(op1); + mpd_del(op2); + mpd_del(op3); + mpd_del(tmp); + mpd_del(tmp1); + mpd_del(tmp2); + mpd_del(tmp3); + mpd_del(result); + mpd_del(result1); + mpd_del(result2); + + if (have_printed) { + fputc('\n', stderr); + } + } + + return have_fail; +} + + + + Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/test_transpose.c ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/test_transpose.c Thu Jan 21 18:27:06 2010 @@ -0,0 +1,903 @@ +/* + * Copyright (c) 2008-2010 Stefan Krah. All Rights Reserved. + * Licensed to PSF under a Contributor Agreement. + */ + + +#include +#include +#include +#include +#include +#include "bits.h" +#include "constants.h" +#include "mpdecimal.h" +#include "mptypes.h" +#include "typearith.h" +#include "transpose.h" + + + +/* + * All the following is pasted from transpose.c and transpose3.c for the sole + * reason of running the tests with uint8_t arrays, which allow greater sizes. + */ + + +#define BUFSIZE 4096 +#define SIDE 128 + + +static inline void pointerswap_c(uint8_t **a, uint8_t **b) +{ + uint8_t *tmp; + + tmp = *b; + *b = *a; + *a = tmp; +} + +/* Definition of the matrix transpose */ +void +std_trans_c(uint8_t dest[], uint8_t src[], mpd_size_t rows, mpd_size_t cols) +{ + mpd_size_t idest, isrc; + mpd_size_t r, c; + + for (r = 0; r < rows; r++) { + isrc = r * cols; + idest = r; + for (c = 0; c < cols; c++) { + dest[idest] = src[isrc]; + isrc += 1; + idest += rows; + } + } +} + +/* + * Swap half-rows of 2^n * (2*2^n) matrix. + * FORWARD_CYCLE: even/odd permutation of the halfrows. + * BACKWARD_CYCLE: reverse the even/odd permutation. + */ +static int +swap_halfrows_pow2_c(uint8_t *matrix, mpd_size_t rows, mpd_size_t cols, int dir) +{ + uint8_t buf1[BUFSIZE]; + uint8_t buf2[BUFSIZE]; + uint8_t *readbuf, *writebuf, *hp; + mpd_size_t *done, dbits; + mpd_size_t b = BUFSIZE, stride; + mpd_size_t hn, hmax; /* halfrow number */ + mpd_size_t m, r=0; + mpd_size_t offset; + mpd_size_t next; + + + assert(cols == mul_size_t(2, rows)); + + if (dir == FORWARD_CYCLE) { + r = rows; + } + else if (dir == BACKWARD_CYCLE) { + r = 2; + } + else { + mpd_err_fatal("swap_halfrows_pow2_c: illegal argument for \"dir\""); + } + + m = cols - 1; + hmax = rows; /* cycles start at odd halfrows */ + dbits = 8 * sizeof *done; + if ((done = mpd_calloc(hmax/(sizeof *done) + 1, sizeof *done)) == NULL) { + return 0; + } + + for (hn = 1; hn <= hmax; hn += 2) { + + if (done[hn/dbits] & mpd_bits[hn%dbits]) { + continue; + } + + readbuf = buf1; writebuf = buf2; + + for (offset = 0; offset < cols/2; offset += b) { + + stride = (offset + b < cols/2) ? b : cols/2-offset; + + hp = matrix + hn*cols/2; + memcpy(readbuf, hp+offset, stride*(sizeof *readbuf)); + pointerswap_c(&readbuf, &writebuf); + + next = mulmod_size_t(hn, r, m); + hp = matrix + next*cols/2; + + while (next != hn) { + + memcpy(readbuf, hp+offset, stride*(sizeof *readbuf)); + memcpy(hp+offset, writebuf, stride*(sizeof *writebuf)); + pointerswap_c(&readbuf, &writebuf); + + done[next/dbits] |= mpd_bits[next%dbits]; + + next = mulmod_size_t(next, r, m); + hp = matrix + next*cols/2; + + } + + memcpy(hp+offset, writebuf, stride*(sizeof *writebuf)); + + done[hn/dbits] |= mpd_bits[hn%dbits]; + } + } + + mpd_free(done); + return 1; +} + +/* In-place transpose of a square matrix */ +static inline void +squaretrans_c(uint8_t *buf, mpd_size_t cols) +{ + uint8_t tmp; + mpd_size_t idest, isrc; + mpd_size_t r, c; + + for (r = 0; r < cols; r++) { + c = r+1; + isrc = r*cols + c; + idest = c*cols + r; + for (c = r+1; c < cols; c++) { + tmp = buf[isrc]; + buf[isrc] = buf[idest]; + buf[idest] = tmp; + isrc += 1; + idest += cols; + } + } +} + +/* + * Transpose 2^n * 2^n matrix. For cache efficiency, the matrix is split into + * square blocks with side length 'SIDE'. First, the blocks are transposed, + * then a square tranposition is done on each individual block. + */ +static void +squaretrans_pow2_c(uint8_t *matrix, mpd_size_t size) +{ + uint8_t buf1[SIDE*SIDE]; + uint8_t buf2[SIDE*SIDE]; + uint8_t *to, *from; + mpd_size_t b = size; + mpd_size_t r, c; + mpd_size_t i; + + while (b > SIDE) b >>= 1; + + for (r = 0; r < size; r += b) { + + for (c = r; c < size; c += b) { + + from = matrix + r*size + c; + to = buf1; + for (i = 0; i < b; i++) { + memcpy(to, from, b*(sizeof *to)); + from += size; + to += b; + } + squaretrans_c(buf1, b); + + if (r == c) { + to = matrix + r*size + c; + from = buf1; + for (i = 0; i < b; i++) { + memcpy(to, from, b*(sizeof *to)); + from += b; + to += size; + } + continue; + } + else { + from = matrix + c*size + r; + to = buf2; + for (i = 0; i < b; i++) { + memcpy(to, from, b*(sizeof *to)); + from += size; + to += b; + } + squaretrans_c(buf2, b); + + to = matrix + c*size + r; + from = buf1; + for (i = 0; i < b; i++) { + memcpy(to, from, b*(sizeof *to)); + from += b; + to += size; + } + + to = matrix + r*size + c; + from = buf2; + for (i = 0; i < b; i++) { + memcpy(to, from, b*(sizeof *to)); + from += b; + to += size; + } + } + } + } + +} + +/* + * In-place transposition of a 2^n x 2^n or a 2^n x (2*2^n) + * or a (2*2^n) x 2^n matrix. + */ +int +transpose_pow2_c(uint8_t *matrix, mpd_size_t rows, mpd_size_t cols) +{ + mpd_size_t size = mul_size_t(rows, cols); + + assert(ispower2(rows)); + assert(ispower2(cols)); + + if (cols == rows) { + squaretrans_pow2_c(matrix, rows); + } + else if (cols == mul_size_t(2, rows)) { + if (!swap_halfrows_pow2_c(matrix, rows, cols, FORWARD_CYCLE)) { + return 0; + } + squaretrans_pow2_c(matrix, rows); + squaretrans_pow2_c(matrix+(size/2), rows); + } + else if (rows == mul_size_t(2, cols)) { + squaretrans_pow2_c(matrix, cols); + squaretrans_pow2_c(matrix+(size/2), cols); + if (!swap_halfrows_pow2_c(matrix, cols, rows, BACKWARD_CYCLE)) { + return 0; + } + } + else { + mpd_err_fatal("transpose_pow2_c: illegal matrix size"); + } + + return 1; +} + + + +/* Cycle start points */ +static const mpd_size_t c0[] = {MPD_SIZE_MAX}; /* 2^0 blocks */ +static const mpd_size_t c1[] = {1, MPD_SIZE_MAX}; /* 2^1 blocks */ +static const mpd_size_t c2[] = {1, 2, MPD_SIZE_MAX}; /* 2^2 blocks */ +static const mpd_size_t c3[] = {1, 5, MPD_SIZE_MAX}; /* (...) */ +static const mpd_size_t c4[] = {1, 5, MPD_SIZE_MAX}; +static const mpd_size_t c5[] = {1, 5, 7, 19, MPD_SIZE_MAX}; +static const mpd_size_t c6[] = {1, 7, MPD_SIZE_MAX}; +static const mpd_size_t c7[] = {1, 5, MPD_SIZE_MAX}; +static const mpd_size_t c8[] = { + 1, 2, 4, 5, 7, 8, 10, 13, 14, 26, 59, 118, 236, 413, MPD_SIZE_MAX +}; +static const mpd_size_t c9[] = { + 1, 2, 4, 5, 7, 10, 11, 13, 14, 17, 20, 22, 23, 25, 28, 34, 35, 37, 46, 50, + 53, 68, 70, 74, 92, 100, 140, 307, MPD_SIZE_MAX +}; +static const mpd_size_t c10[] = {1, 2, 17, 34, 37, 74, 83, 166, MPD_SIZE_MAX}; +static const mpd_size_t c11[] = {1, 5, MPD_SIZE_MAX}; +static const mpd_size_t c12[] = { + 1, 2, 4, 5, 7, 8, 11, 13, 14, 16, 17, 22, 25, 26, 32, 35, 41, 44, 49, 52, + 53, 55, 61, 65, 77, 82, 88, 103, 104, 154, 164, 176, 275, 352, 385, 539, + 1117, 2234, MPD_SIZE_MAX +}; +static const mpd_size_t c13[] = {1, 5, 11, 25, 55, 125, 983, 4915, MPD_SIZE_MAX}; +static const mpd_size_t c14[] = { + 1, 2, 5, 7, 10, 13, 14, 23, 26, 46, 115, 230, 2137, 10685, MPD_SIZE_MAX +}; +static const mpd_size_t c15[] = {1, 5, 11, 17, 23, 31, 197, 499, 985, 2167, MPD_SIZE_MAX}; +static const mpd_size_t c16[] = { + 1, 2, 4, 5, 8, 10, 11, 22, 421, 467, 842, 934, 1868, 3736, MPD_SIZE_MAX +}; +static const mpd_size_t c17[] = { + 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, + 32, 34, 38, 40, 41, 43, 44, 46, 47, 50, 52, 53, 55, 56, 58, 59, 62, 64, 65, + 67, 68, 71, 73, 76, 77, 80, 82, 83, 85, 86, 88, 91, 92, 94, 95, 97, 100, 103, + 106, 110, 112, 115, 116, 118, 121, 128, 130, 134, 136, 137, 143, 146, 149, + 152, 155, 160, 161, 163, 166, 170, 176, 181, 187, 190, 194, 197, 200, 205, + 206, 209, 215, 221, 224, 227, 230, 232, 235, 251, 256, 263, 265, 272, 274, + 275, 277, 287, 295, 304, 310, 311, 320, 322, 326, 335, 337, 340, 341, 359, + 365, 380, 388, 410, 412, 442, 460, 470, 485, 502, 515, 530, 544, 548, 550, + 571, 575, 577, 589, 605, 613, 622, 644, 680, 685, 691, 715, 730, 745, 905, + 935, 970, 1226, 1795, 78643, MPD_SIZE_MAX +}; +static const mpd_size_t c18[] = {1, 7, MPD_SIZE_MAX}; +static const mpd_size_t c19[] = {1, 5, 7, 13, 71, 355, 22153, 155071, MPD_SIZE_MAX}; +static const mpd_size_t c20[] = { + 1, 2, 4, 5, 7, 8, 10, 13, 14, 26, 241979, 483958, 967916, 1693853, MPD_SIZE_MAX +}; +static const mpd_size_t c21[] = {1, 2, 4, 5, 7, 10, 14, 19, 20, 1258291, MPD_SIZE_MAX}; +static const mpd_size_t c22[] = { + 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, + 32, 34, 35, 37, 38, 40, 41, 43, 46, 47, 49, 50, 52, 56, 58, 61, 62, 64, 67, + 68, 70, 71, 73, 74, 76, 77, 79, 82, 83, 85, 86, 92, 94, 95, 97, 98, 100, 101, + 103, 104, 107, 109, 112, 113, 115, 116, 119, 121, 122, 124, 127, 128, 131, + 133, 136, 139, 140, 142, 143, 145, 146, 148, 149, 151, 152, 154, 155, 157, + 161, 163, 164, 166, 169, 172, 173, 179, 181, 184, 187, 190, 196, 197, 200, + 202, 205, 206, 208, 209, 214, 215, 217, 218, 223, 224, 229, 230, 232, 233, + 239, 241, 245, 248, 253, 257, 263, 266, 269, 272, 278, 280, 281, 283, 284, + 286, 289, 302, 304, 314, 319, 322, 323, 328, 329, 335, 338, 344, 346, 349, + 355, 358, 359, 365, 368, 373, 374, 377, 379, 380, 389, 392, 394, 407, 409, + 410, 416, 418, 425, 430, 431, 433, 436, 437, 448, 451, 457, 458, 460, 463, + 464, 466, 473, 478, 482, 485, 490, 496, 505, 511, 521, 526, 532, 533, 541, + 544, 556, 557, 559, 562, 566, 568, 569, 589, 593, 604, 646, 676, 679, 697, + 703, 713, 716, 743, 746, 749, 784, 799, 814, 815, 827, 832, 865, 866, 871, + 877, 893, 902, 913, 916, 946, 1031, 1039, 1075, 1079, 1114, 1127, 1292, 1387, + 1445, 1463, 1723, 2299, 103991, 207982, 415964, 519955, 727937, 831928, + 1039910, 1143901, 1351883, 1663856, 1767847, 1975829, 2079820, 2287802, + 2599775, 2703766, 3223721, 3535694, 3639685, 3951658, 4159640, 6343451, + 6967397, 7903316, MPD_SIZE_MAX +}; +static const mpd_size_t c23[] = { + 1, 5, 7, 11, 13, 17, 19, 23, 25, 29, 31, 35, 37, 43, 47, 49, 59, 61, 65, 67, + 71, 77, 83, 85, 95, 97, 101, 103, 107, 113, 119, 125, 133, 145, 151, 163, 175, + 179, 185, 187, 199, 203, 209, 217, 221, 229, 239, 247, 269, 281, 289, 319, + 341, 377, 413, 421, 475, 479, 493, 551, 587, 703, 725, 841, 1421, 1463, 1885, + 1943, 2407, 2755, 45673, 502403, 867787, 1324517, MPD_SIZE_MAX +}; +static const mpd_size_t c24[] = { + 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, + 32, 34, 35, 37, 38, 40, 41, 43, 44, 47, 49, 50, 52, 53, 55, 56, 58, 59, 61, + 62, 65, 67, 68, 70, 71, 73, 74, 76, 79, 80, 82, 83, 85, 86, 88, 89, 91, 94, + 95, 97, 98, 100, 101, 103, 106, 107, 109, 112, 113, 115, 116, 118, 119, 121, + 122, 124, 125, 130, 133, 136, 137, 140, 142, 143, 146, 148, 149, 151, 152, + 160, 161, 164, 166, 167, 169, 170, 172, 173, 175, 176, 178, 179, 181, 187, + 188, 190, 191, 193, 194, 196, 197, 199, 200, 202, 203, 211, 212, 214, 215, + 217, 221, 223, 224, 226, 229, 232, 235, 238, 241, 242, 244, 247, 250, 253, + 259, 260, 263, 265, 266, 269, 272, 274, 275, 277, 280, 281, 283, 284, 286, + 287, 292, 293, 295, 296, 298, 301, 302, 304, 305, 307, 313, 317, 328, 329, + 332, 334, 335, 337, 338, 340, 341, 343, 346, 347, 352, 353, 356, 361, 362, + 365, 367, 373, 374, 376, 377, 379, 380, 382, 386, 388, 391, 392, 394, 398, + 400, 401, 406, 419, 422, 424, 425, 428, 430, 433, 434, 437, 442, 445, 446, + 449, 452, 455, 458, 461, 463, 467, 470, 475, 476, 479, 482, 487, 488, 494, + 497, 503, 505, 511, 515, 517, 518, 523, 526, 529, 530, 532, 538, 544, 547, + 548, 551, 557, 560, 565, 566, 568, 569, 571, 572, 575, 577, 581, 583, 587, + 589, 590, 593, 595, 596, 602, 604, 610, 613, 614, 619, 623, 634, 643, 647, + 649, 664, 668, 674, 689, 691, 692, 694, 706, 707, 719, 721, 722, 727, 730, + 733, 737, 745, 748, 754, 760, 764, 767, 776, 781, 787, 788, 791, 800, 805, + 821, 823, 833, 835, 838, 844, 845, 848, 850, 856, 868, 875, 881, 883, 884, + 890, 892, 893, 899, 904, 905, 907, 916, 926, 931, 949, 964, 976, 979, 989, + 991, 995, 1010, 1019, 1022, 1036, 1043, 1046, 1055, 1064, 1073, 1075, 1091, + 1094, 1102, 1114, 1115, 1136, 1138, 1142, 1147, 1166, 1174, 1186, 1190, 1204, + 1211, 1219, 1220, 1238, 1246, 1273, 1279, 1297, 1298, 1301, 1315, 1325, 1327, + 1378, 1388, 1405, 1414, 1451, 1459, 1483, 1490, 1501, 1519, 1531, 1543, 1562, + 1574, 1633, 1646, 1676, 1690, 1709, 1814, 1862, 1867, 2021, 2128, 2171, 2219, + 2267, 2332, 2348, 2491, 2558, 2657, 2971, 3127, 3191, 3211, 3724, 3829, 4079, + 6563, 7669, 13126, 15338, 26252, 32815, 38345, 52504, 53683, 65630, 72193, + 76690, 84359, 99697, 105008, 107366, 130373, 131260, 144386, 168718, 176387, + 191725, 199394, 203453, 222401, 260746, 283753, 288772, 314429, 329767, + 375781, 406457, 421795, 444802, 452471, 498485, 544499, 605851, 651865, + 659534, 682541, 751562, 904942, 1234709, 1510793, 1648835, MPD_SIZE_MAX +}; +static const mpd_size_t c25[] = { + 1, 5, 7, 11, 13, 17, 23, 25, 31, 49, 67, 115, 161, 253, 391, 875333, 4376665, + 6127331, 20132659, 21883325, MPD_SIZE_MAX +}; +static const mpd_size_t c26[] = { + 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, + 32, 34, 35, 37, 38, 40, 41, 43, 44, 46, 47, 49, 50, 52, 53, 55, 56, 58, 59, + 61, 62, 64, 65, 67, 68, 70, 71, 73, 74, 76, 77, 79, 80, 82, 83, 88, 89, 91, + 92, 94, 97, 98, 100, 101, 103, 104, 106, 107, 109, 110, 112, 113, 115, 118, + 121, 122, 124, 125, 128, 130, 131, 133, 134, 136, 137, 139, 140, 142, 143, + 145, 146, 151, 152, 154, 155, 157, 158, 160, 161, 163, 164, 167, 169, 173, + 175, 176, 178, 179, 181, 184, 185, 187, 193, 194, 197, 199, 200, 202, 203, + 205, 206, 208, 209, 211, 212, 214, 215, 217, 218, 220, 221, 223, 224, 226, + 227, 229, 230, 233, 236, 241, 242, 244, 245, 247, 248, 250, 251, 253, 256, + 257, 259, 260, 262, 263, 265, 266, 268, 271, 272, 274, 278, 280, 281, 283, + 284, 286, 287, 289, 290, 292, 295, 301, 302, 304, 305, 307, 310, 313, 314, + 316, 317, 319, 320, 322, 323, 326, 328, 329, 335, 337, 338, 346, 347, 349, + 350, 352, 353, 356, 358, 361, 362, 367, 368, 370, 371, 373, 377, 383, 385, + 386, 391, 394, 395, 397, 398, 400, 401, 403, 404, 406, 407, 409, 410, 412, + 413, 416, 418, 419, 421, 422, 424, 428, 431, 433, 434, 436, 437, 440, 442, + 445, 446, 448, 449, 451, 452, 454, 455, 458, 460, 463, 466, 467, 469, 472, + 473, 481, 482, 484, 485, 488, 490, 491, 493, 494, 496, 500, 502, 503, 506, + 511, 512, 514, 517, 518, 521, 523, 524, 527, 529, 530, 533, 536, 544, 545, + 547, 548, 551, 553, 556, 560, 562, 569, 571, 574, 575, 577, 581, 583, 584, + 587, 589, 593, 599, 604, 605, 608, 610, 611, 614, 617, 620, 623, 625, 628, + 631, 632, 634, 637, 638, 640, 641, 644, 647, 652, 653, 658, 659, 661, 667, + 670, 671, 676, 683, 691, 692, 694, 697, 698, 704, 706, 707, 712, 713, 716, + 719, 722, 724, 727, 731, 733, 734, 736, 737, 746, 749, 751, 757, 763, 766, + 769, 770, 773, 775, 785, 788, 790, 791, 793, 794, 797, 799, 800, 802, 806, + 808, 809, 814, 815, 820, 821, 823, 824, 826, 832, 844, 847, 848, 851, 853, + 859, 862, 865, 868, 871, 874, 880, 881, 883, 890, 892, 895, 896, 901, 902, + 905, 908, 920, 923, 926, 932, 934, 938, 941, 944, 953, 961, 962, 964, 967, + 968, 977, 979, 982, 989, 991, 1000, 1001, 1003, 1004, 1012, 1015, 1019, + 1021, 1024, 1028, 1031, 1034, 1037, 1042, 1046, 1057, 1061, 1067, 1072, + 1079, 1088, 1090, 1093, 1094, 1103, 1106, 1112, 1121, 1124, 1127, 1133, + 1138, 1142, 1145, 1148, 1154, 1157, 1166, 1168, 1169, 1178, 1183, 1205, + 1208, 1216, 1219, 1220, 1223, 1225, 1234, 1240, 1243, 1246, 1247, 1250, + 1262, 1265, 1267, 1271, 1280, 1288, 1289, 1294, 1295, 1303, 1304, 1307, + 1315, 1339, 1342, 1366, 1382, 1393, 1396, 1412, 1415, 1417, 1423, 1424, + 1432, 1448, 1466, 1468, 1474, 1487, 1498, 1501, 1502, 1514, 1523, 1525, + 1538, 1543, 1546, 1549, 1561, 1565, 1570, 1577, 1580, 1582, 1607, 1612, + 1642, 1649, 1664, 1667, 1691, 1717, 1735, 1762, 1780, 1783, 1784, 1840, + 1846, 1852, 1859, 1864, 1868, 1876, 1879, 1888, 1897, 1927, 1928, 1934, + 1949, 1954, 1964, 1982, 2009, 2024, 2030, 2038, 2042, 2053, 2057, 2062, + 2065, 2092, 2114, 2147, 2173, 2188, 2203, 2224, 2233, 2237, 2239, 2266, + 2276, 2293, 2333, 2345, 2383, 2432, 2438, 2441, 2446, 2450, 2468, 2501, + 2530, 2560, 2576, 2659, 2732, 2735, 2786, 2813, 2848, 2915, 2948, 2957, + 2981, 3031, 3046, 3076, 3115, 3157, 3160, 3164, 3185, 3193, 3298, 3407, + 3560, 3619, 3737, 3752, 3856, 3898, 3971, 3985, 4076, 4228, 4478, 4853, + 5896, 6115, 8561, 12230, 15899, 17122, 20791, 23237, 28129, 30575, 35467, + 37913, 45251, 56258, 57481, 75826, 81941, 86833, 108847, 114962, 163882, + 164617, 173666, 217694, 329234, 658468, 823085, 1152319, 1316936, 1646170, + 1810787, 2798489, 3127723, 3292340, 3621574, 3786191, 4773893, 5761595, + 6090829, 6255446, 6584680, 6749297, 7243148, 8066233, 9053935, 9547786, + 12675509, 13498594, 21894061, MPD_SIZE_MAX +}; +static const mpd_size_t c27[] = { + 1, 2, 4, 5, 7, 10, 11, 13, 14, 17, 19, 20, 22, 23, 26, 31, 35, 37, 43, 47, 52, + 55, 59, 61, 65, 67, 70, 71, 74, 83, 85, 89, 91, 94, 130, 131, 134, 142, 163, + 182, 188, 268, 329, 335, 517, 611, 658, 670, 799, 893, 1034, 1081, 1222, 1273, + 1457, 2021, 2444, 2867, 3149, 3337, 4277, 6298, 12596, 127867, 255734, 511468, + 639335, 1278670, 1406537, 6009749, 8567089, 12019498, 24038996, 42835445, + MPD_SIZE_MAX +}; +static const mpd_size_t c28[] = { + 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 34, + 35, 37, 38, 40, 41, 43, 44, 46, 49, 50, 52, 53, 55, 56, 58, 61, 62, 65, 67, + 68, 70, 71, 73, 74, 76, 77, 79, 82, 83, 85, 86, 88, 92, 95, 98, 100, 101, 103, + 104, 106, 107, 109, 110, 113, 115, 116, 119, 121, 122, 124, 125, 127, 130, + 131, 133, 134, 136, 137, 140, 142, 143, 145, 146, 151, 152, 154, 155, 158, + 161, 164, 166, 167, 170, 172, 173, 175, 181, 185, 190, 191, 193, 196, 197, + 200, 203, 205, 206, 209, 214, 217, 218, 221, 226, 230, 232, 238, 239, 242, + 244, 247, 248, 253, 254, 259, 260, 265, 266, 269, 271, 274, 280, 281, 284, + 289, 292, 293, 299, 301, 310, 311, 313, 316, 323, 325, 328, 334, 340, 341, + 343, 344, 346, 347, 350, 355, 359, 362, 365, 367, 370, 371, 379, 380, 382, + 385, 386, 392, 395, 397, 403, 406, 415, 427, 428, 431, 442, 449, 452, 457, + 461, 463, 473, 476, 478, 484, 488, 491, 494, 506, 509, 518, 521, 529, 530, + 532, 538, 539, 545, 548, 551, 563, 578, 586, 587, 593, 595, 598, 601, 613, + 622, 626, 629, 632, 643, 646, 659, 665, 667, 671, 685, 686, 710, 721, 730, + 731, 737, 758, 760, 770, 790, 835, 851, 854, 862, 883, 887, 905, 914, 923, + 926, 937, 952, 956, 983, 1009, 1012, 1025, 1069, 1126, 1156, 1172, 1241, + 1244, 1258, 1273, 1372, 1420, 1447, 1495, 1507, 1580, 1670, 2111, 2138, + 15683, 31366, 51349, 62732, 78415, 102698, 109781, 125464, 156830, 172513, + 203879, 219562, 266611, 313660, 345026, 360709, 392075, 407758, 439124, + 454807, 486173, 533222, 548905, 580271, 627320, 643003, 674369, 690052, + 721418, 768467, 784150, 815516, 831199, 862565, 878248, 909614, 972346, + 1019395, 1050761, 1066444, 1113493, 1144859, 1160542, 1207591, 1301689, + 1348738, 1380104, 1442836, 1536934, 1568300, 1583983, 1615349, 1631032, + 1662398, 1725130, 1772179, 1803545, 1819228, 1897643, 1944692, 1960375, + 1991741, 2038790, 2054473, 2101522, 2226986, 2242669, 2274035, 2289718, + 2368133, 2415182, 2430865, 2524963, 2603378, 2619061, 2697476, 2713159, + 2744525, 2838623, 2901355, 2995453, 3026819, 3073868, 3089551, 3136600, + 3183649, 3215015, 3403211, 3465943, 3544358, 3607090, 3638456, 3795286, + 3967799, 3983482, 4061897, 4077580, 4155995, 4218727, 4406923, 4453972, + 4532387, 4720583, 4877413, 5238122, 5347903, 5394952, 5442001, 5677246, + 5724295, 5802710, 5818393, 5990906, 6037955, 6053638, 6147736, 6367298, + 6508445, 6759373, 6931886, 7041667, 7088716, 7167131, 7590572, 8123794, + 8829529, 9064774, 9425483, 9754826, 10335097, 11307443, 11448590, 13518746, + 18129548, MPD_SIZE_MAX +}; +static const mpd_size_t c29[] = { + 1, 5, 7, 11, 13, 17, 19, 23, 25, 29, 31, 35, 37, 41, 43, 47, 49, 53, 55, 59, + 61, 65, 67, 71, 73, 77, 79, 83, 85, 89, 91, 95, 97, 101, 103, 107, 109, 113, + 115, 119, 121, 125, 127, 131, 133, 137, 139, 143, 145, 149, 151, 155, 157, + 161, 167, 169, 173, 175, 179, 181, 185, 187, 191, 197, 203, 209, 211, 215, + 217, 223, 227, 233, 235, 239, 241, 245, 247, 251, 253, 257, 259, 263, 265, + 269, 271, 275, 277, 281, 283, 289, 293, 295, 299, 305, 307, 313, 317, 319, + 323, 329, 337, 341, 343, 347, 349, 353, 355, 359, 367, 371, 373, 377, 379, + 383, 385, 389, 395, 397, 407, 413, 415, 419, 425, 427, 431, 433, 437, 443, + 445, 449, 455, 457, 469, 479, 481, 485, 487, 491, 493, 497, 499, 503, 511, + 517, 523, 529, 533, 535, 539, 541, 547, 553, 557, 565, 569, 575, 589, 593, + 599, 605, 611, 617, 619, 623, 635, 637, 641, 643, 649, 653, 655, 661, 677, + 679, 685, 701, 703, 707, 715, 719, 721, 727, 731, 739, 743, 745, 755, 761, + 769, 775, 781, 785, 787, 793, 797, 799, 821, 823, 829, 845, 853, 863, 871, + 881, 895, 907, 917, 919, 929, 935, 941, 943, 947, 949, 955, 961, 967, 973, + 977, 979, 991, 997, 1001, 1003, 1007, 1015, 1019, 1027, 1031, 1033, 1043, + 1045, 1049, 1051, 1057, 1063, 1067, 1073, 1075, 1079, 1085, 1087, 1093, + 1097, 1099, 1109, 1117, 1129, 1147, 1151, 1157, 1165, 1169, 1171, 1187, + 1189, 1199, 1201, 1205, 1207, 1211, 1213, 1219, 1235, 1237, 1247, 1249, + 1259, 1261, 1265, 1271, 1279, 1283, 1289, 1291, 1297, 1301, 1303, 1307, + 1313, 1315, 1319, 1321, 1327, 1343, 1345, 1367, 1369, 1375, 1385, 1387, + 1399, 1403, 1409, 1423, 1427, 1439, 1441, 1453, 1463, 1477, 1487, 1499, + 1501, 1511, 1523, 1525, 1535, 1565, 1595, 1627, 1631, 1633, 1637, 1649, + 1657, 1673, 1685, 1687, 1699, 1705, 1711, 1715, 1727, 1745, 1751, 1757, + 1771, 1811, 1823, 1829, 1843, 1865, 1873, 1897, 1957, 1963, 1967, 1975, + 1979, 2017, 2039, 2065, 2075, 2093, 2143, 2153, 2191, 2207, 2231, 2339, + 2359, 2405, 2425, 2437, 2443, 2471, 2473, 2479, 2507, 2533, 2573, 2579, + 2581, 2617, 2645, 2651, 2695, 2729, 2813, 2827, 2867, 2941, 2959, 3007, + 3031, 3055, 3059, 3085, 3173, 3181, 3197, 3221, 3247, 3275, 3377, 3395, + 3467, 3505, 3521, 3553, 3559, 3589, 3607, 3611, 3671, 3715, 3875, 3977, + 3983, 4049, 4129, 4171, 4183, 4187, 4315, 4559, 4691, 4753, 4777, 4807, + 4993, 5141, 5155, 5167, 5279, 5495, 5509, 5723, 5735, 5917, 6017, 6499, + 6887, 7081, 7217, 7265, 7663, 8051, 8245, 9215, 9797, 9991, 10379, 10573, + 11155, 11341, 11737, 12319, 13403, 13483, 13871, 14065, 14453, 15035, 15617, + 16105, 17527, 17557, 18139, 18527, 19589, 22547, 22795, 23183, 23713, 25775, + 29585, 29899, 30361, 31331, 31961, 35431, 36085, 38147, 41873, 42271, 44333, + 48457, 50519, 54643, 54757, 55193, 56705, 60829, 62891, 67015, 69077, 73201, + 74083, 75263, 75757, 79387, 80525, 81449, 85573, 87635, 91759, 93409, 93821, + 97945, 99851, 100007, 104131, 106193, 110317, 112735, 116503, 118565, 119177, + 122689, 124751, 128875, 130937, 135061, 137123, 141247, 147433, 149495, + 151387, 153619, 159805, 161867, 165991, 170713, 172177, 174239, 178363, + 180425, 184549, 186611, 190735, 192797, 196481, 196921, 215479, 217541, + 221665, 223727, 228691, 229913, 234037, 240223, 242285, 248471, 252595, + 254459, 254657, 258781, 260843, 264967, 267029, 271153, 273215, 277339, + 279401, 285587, 291773, 297959, 304145, 308269, 312437, 316517, 322703, + 326827, 328889, 333013, 339199, 347447, 351571, 353633, 357757, 359819, + 363943, 366005, 378377, 382501, 384563, 388687, 390749, 394873, 396935, + 401059, 407245, 419617, 425803, 427865, 431989, 438175, 440237, 441277, + 446423, 450547, 469105, 471167, 483539, 486371, 493849, 495911, 499255, + 500035, 502097, 506221, 508283, 533027, 539213, 545399, 549523, 551585, + 555709, 557771, 582515, 586639, 592825, 607259, 611383, 629941, 636127, + 642313, 673243, 681491, 697987, 700049, 706235, 722731, 724793, 741289, + 743351, 766033, 784591, 799025, 809335, 817583, 821707, 871195, 889753, + 922745, 935117, 945427, 947489, 963985, 970171, 972233, 984605, 990791, + 1007287, 1021721, 1027907, 1032031, 1034093, 1038217, 1050589, 1075333, + 1100077, 1106263, 1112449, 1120697, 1126883, 1163999, 1242355, 1244417, + 1275347, 1285657, 1298029, 1300091, 1310401, 1328959, 1331021, 1368137, + 1384633, 1386695, 1411439, 1427935, 1442369, 1562185, 1681561, 1683623, + 1687747, 1700119, 1751669, 1757855, 1825901, 1900133, 2036225, 2079527, + 2187059, 2500175, 2652763, 2778545, 2914637, 3320851, 3500245, 3663143, + 3700259, 4100287, 4300301, 4700329, 4900343, 5300371, 5900413, 6100427, + 7100497, 7900553, 8300581, 8500595, 10300721, 10700749, 10935295, 14301001, + 16604255, 23245957, 23501645, 36529361, 43171063, 56454467, 83021275, + 96304679, 156079997, 176005103, 322122547, MPD_SIZE_MAX +}; +static const mpd_size_t c30[] = { + 1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, + 32, 34, 35, 37, 38, 40, 41, 43, 44, 46, 47, 50, 52, 53, 55, 56, 58, 61, 62, + 64, 65, 67, 68, 70, 71, 73, 74, 76, 77, 79, 80, 82, 83, 85, 86, 88, 89, 91, + 92, 94, 95, 97, 100, 101, 103, 104, 106, 107, 109, 110, 112, 113, 115, 116, + 119, 122, 124, 125, 127, 128, 130, 133, 134, 136, 137, 142, 143, 145, 146, + 148, 149, 152, 154, 155, 157, 158, 160, 161, 163, 164, 166, 167, 172, 175, + 176, 178, 179, 181, 182, 185, 187, 190, 193, 194, 197, 199, 200, 202, 203, + 205, 206, 208, 209, 211, 212, 214, 215, 217, 218, 220, 221, 223, 224, 226, + 227, 229, 230, 232, 235, 238, 239, 244, 250, 251, 253, 254, 256, 257, 259, + 260, 263, 265, 266, 268, 269, 271, 272, 275, 277, 284, 286, 287, 290, 292, + 296, 298, 299, 304, 308, 311, 313, 316, 317, 319, 320, 322, 323, 325, 326, + 328, 329, 331, 332, 334, 335, 337, 344, 347, 349, 353, 355, 356, 358, 359, + 362, 364, 365, 367, 370, 371, 373, 374, 377, 379, 380, 383, 385, 386, 388, + 389, 391, 394, 395, 397, 398, 401, 403, 404, 407, 410, 415, 416, 421, 422, + 424, 425, 430, 431, 433, 434, 436, 437, 440, 442, 443, 446, 448, 449, 451, + 452, 457, 458, 463, 464, 467, 470, 475, 488, 491, 499, 500, 503, 505, 506, + 508, 511, 512, 514, 515, 518, 520, 521, 523, 526, 527, 530, 532, 533, 535, + 538, 541, 542, 544, 547, 550, 553, 554, 557, 559, 565, 568, 569, 571, 572, + 574, 575, 577, 580, 584, 587, 589, 592, 593, 595, 598, 599, 601, 611, 616, + 619, 622, 623, 625, 626, 629, 631, 632, 635, 638, 640, 641, 646, 650, 652, + 656, 658, 659, 661, 662, 664, 667, 668, 670, 673, 677, 679, 689, 691, 694, + 697, 698, 706, 707, 709, 712, 713, 716, 718, 725, 728, 734, 737, 739, 742, + 748, 757, 758, 760, 761, 769, 770, 772, 773, 776, 778, 779, 781, 782, 788, + 790, 791, 793, 794, 796, 799, 802, 806, 809, 814, 817, 821, 827, 829, 830, + 832, 835, 844, 862, 868, 872, 874, 880, 884, 887, 892, 893, 896, 901, 902, + 911, 919, 925, 928, 935, 943, 965, 971, 977, 982, 983, 985, 991, 1000, + 1010, 1012, 1015, 1016, 1019, 1022, 1024, 1025, 1027, 1028, 1030, 1031, + 1033, 1036, 1043, 1049, 1054, 1060, 1061, 1064, 1066, 1070, 1073, 1082, + 1084, 1100, 1106, 1114, 1130, 1133, 1136, 1148, 1154, 1160, 1168, 1169, + 1174, 1178, 1181, 1184, 1201, 1232, 1237, 1241, 1249, 1250, 1252, 1258, + 1261, 1262, 1264, 1270, 1271, 1285, 1291, 1292, 1301, 1304, 1307, 1318, + 1322, 1324, 1334, 1336, 1343, 1354, 1369, 1373, 1379, 1381, 1382, 1385, + 1388, 1391, 1393, 1396, 1414, 1427, 1429, 1432, 1436, 1439, 1456, 1468, + 1477, 1489, 1495, 1496, 1516, 1520, 1522, 1531, 1538, 1544, 1552, 1555, + 1576, 1582, 1588, 1589, 1592, 1595, 1598, 1612, 1615, 1618, 1625, 1627, + 1634, 1639, 1642, 1649, 1651, 1654, 1675, 1693, 1709, 1724, 1759, 1765, + 1774, 1781, 1783, 1792, 1802, 1822, 1838, 1847, 1856, 1873, 1921, 1925, + 1945, 1951, 2005, 2021, 2029, 2044, 2048, 2050, 2077, 2105, 2108, 2120, + 2123, 2146, 2155, 2164, 2177, 2191, 2200, 2212, 2215, 2260, 2266, 2272, + 2293, 2308, 2315, 2320, 2341, 2356, 2413, 2455, 2495, 2498, 2522, 2540, + 2584, 2602, 2629, 2635, 2648, 2672, 2723, 2738, 2759, 2765, 2782, 2786, + 2833, 2878, 2917, 2954, 2978, 3017, 3110, 3145, 3236, 3350, 3383, 3391, + 3427, 3448, 3529, 3593, 3676, 4310, 4351, 4640, 4741, 4993, 5603, 5789, + 6034, 6896, 6973, 7327, 8189, 8620, 9482, 10775, 12068, 12499, 13361, + 13792, 14654, 15085, 17240, 18533, 21550, 22843, 24136, 24998, 26291, + 26722, 28015, 28877, 29308, 30601, 31463, 36635, 38359, 39221, 41807, + 43100, 45686, 46979, 48703, 49996, 51289, 52582, 57754, 58616, 59047, + 61633, 62926, 70253, 76718, 96113, 97406, 98699, 102578, 113353, 142661, + 153005, 7473841, 37369205, 52316887, 82212251, 97159933, 142002979, + 171898343, 231689071, 261584435, 351270527, MPD_SIZE_MAX +}; + +#ifdef CONFIG_64 + +#if MPD_SIZE_MAX != 18446744073709551615ULL + #error "transpose3: need 64 bits for MPD_SIZE_MAX" +#endif +/* Maximum n for 3 * 2^n matrix, limited by log2(2^n/BMEMB) <= 30. + * This limit can be raised by increasing BMEMB or by extending + * the above cycle tables beyond 30. */ +#define MAXN 42 +#define BMEMB 4096 /* block members */ + +/* END CONFIG_64 */ +#else + +#if MPD_SIZE_MAX != 4294967295UL + #error "transpose3: need 32 bits for MPD_SIZE_MAX" +#endif +#define MAXN 30 /* maximum n for 3 * 2^n matrix, limited by MPD_SIZE_MAX */ +#define BMEMB 4096 /* block members */ + +#endif /* END CONFIG_32 */ + + +/* all cycles */ +static const mpd_size_t *start[] = { + c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, + c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30 +}; + + + +/* + * Block transpose on a 3 x 2^n or a 2^n x 3 matrix. 2^n is split into + * nprime blocks of size BMEMB, and the blocks are transposed cyclically. + */ +static void +_block_transpose_3xpow2_c(uint8_t *matrix, mpd_size_t rows, mpd_size_t cols) +{ + uint8_t buf1[BMEMB]; + uint8_t buf2[BMEMB]; + uint8_t *readbuf, *writebuf; + mpd_size_t nprime; /* number of blocks per row (or column) */ + mpd_size_t log2n; + mpd_size_t a, mod; + mpd_size_t s, next; + mpd_size_t i; + + + if (rows == 3) { + nprime = cols / BMEMB; + a = 3; + } + else { /* cols == 3 */ + nprime = rows / BMEMB; + a = nprime; + } + + log2n = BSR(nprime); + mod = 3 * nprime - 1; + + for (i = 0; start[log2n][i] != MPD_SIZE_MAX; i++) { + + s = start[log2n][i]; + + readbuf = buf1; writebuf = buf2; + + memcpy(readbuf, matrix+BMEMB*s, BMEMB*(sizeof *readbuf)); + + pointerswap_c(&readbuf, &writebuf); + next = mulmod_size_t(s, a, mod); + + while (next != s) { + + memcpy(readbuf, matrix+BMEMB*next, BMEMB*(sizeof *readbuf)); + memcpy(matrix+BMEMB*next, writebuf, BMEMB*(sizeof *writebuf)); + + pointerswap_c(&readbuf, &writebuf); + next = mulmod_size_t(next, a, mod); + + } + + memcpy(matrix+BMEMB*next, writebuf, BMEMB*(sizeof *writebuf)); + } +} + + +/* + * In place transposition of 3 x 2^n or 2^n x 3 matrix. + * Maximum size: 3 x 2^MAXN or 2^MAXN x 3 + */ +void +transpose_3xpow2_c(uint8_t *matrix, mpd_size_t rows, mpd_size_t cols) +{ + uint8_t buf[3*BMEMB]; + uint8_t *p; + mpd_size_t msize, bsize; + + msize = mul_size_t(rows, cols); + bsize = 3*BMEMB; + + if (msize <= bsize) { + std_trans_c(buf, matrix, rows, cols); + memcpy(matrix, buf, msize * (sizeof *matrix)); + } + else if (rows == 3) { + assert(ispower2(cols)); + assert(BSR(cols) <= MAXN); + + _block_transpose_3xpow2_c(matrix, rows, cols); + for (p = matrix; p < matrix+msize; p += bsize) { + std_trans_c(buf, p, rows, BMEMB); + memcpy(p, buf, bsize * (sizeof *matrix)); + } + } + else if (cols == 3) { + assert(ispower2(rows)); + assert(BSR(rows) <= MAXN); + + for (p = matrix; p < matrix+msize; p += bsize) { + std_trans_c(buf, p, BMEMB, cols); + memcpy(p, buf, bsize * (sizeof *matrix)); + } + _block_transpose_3xpow2_c(matrix, rows, cols); + } + else { + mpd_err_fatal("transpose_3xpow2_c: wrong input for rows or cols"); + } +} + + +#include +#define UMOD_ARRAY (1ULL<<28) +#define UMOD_ARRAY3 (3*(1ULL<<26)) +#define UCHAR_ARRAY (1ULL<<29) +#define UCHAR_ARRAY3 (3*(1ULL<<29)) + +/* The faster in-place functions are tested against std_trans(). */ +static void +testit_uint(void (* func)(mpd_uint_t *, mpd_size_t, mpd_size_t), mpd_size_t rows, mpd_size_t cols) +{ + mpd_uint_t *a, *src, *dest; + clock_t start_fast, end_fast, start_std, end_std; + mpd_size_t msize; + mpd_size_t i; + + msize = mul_size_t(rows, cols); + if ((a = mpd_alloc(msize, sizeof *a)) == NULL) { + mpd_err_fatal("out of memory"); + } + if ((src = mpd_alloc(msize, sizeof *src)) == NULL) { + mpd_err_fatal("out of memory"); + } + if ((dest = mpd_alloc(msize, sizeof *dest)) == NULL) { + mpd_err_fatal("out of memory"); + } + + for (i = 0; i < msize; i++) { + a[i] = src[i] = random(); + } + + start_std= clock(); + std_trans(dest, src, rows, cols); + end_std= clock(); + + start_fast = clock(); + func(a, rows, cols); + end_fast = clock(); + + for (i = 0; i < msize; i++) { + if (a[i] != dest[i]) { + fprintf(stderr, "FAIL: a[%"PRI_mpd_size_t"] = %"PRI_mpd_size_t + "\tdest[%"PRI_mpd_size_t"] = %"PRI_mpd_size_t"\n", + i, a[i], i, dest[i]); + exit(1); + } + } + + fprintf(stderr, "size: %10"PRI_mpd_size_t"\tstd_trans: %f sec\t " + "in_place_trans: %f sec\n", + msize, + (double)(end_std-start_std)/(double)CLOCKS_PER_SEC, + (double)(end_fast-start_fast)/(double)CLOCKS_PER_SEC); + + mpd_free(a); + mpd_free(src); + mpd_free(dest); +} + +/* The faster in-place functions are tested against std_trans(). */ +static void +testit_uchar(void (* func)(uint8_t *, mpd_size_t, mpd_size_t), mpd_size_t rows, mpd_size_t cols) +{ + uint8_t *a, *src, *dest; + clock_t start_fast, end_fast, start_std, end_std; + mpd_size_t msize; + mpd_size_t i; + + msize = mul_size_t(rows, cols); + if ((a = mpd_alloc(msize, sizeof *a)) == NULL) { + mpd_err_fatal("out of memory"); + } + if ((src = mpd_alloc(msize, sizeof *src)) == NULL) { + mpd_err_fatal("out of memory"); + } + if ((dest = mpd_alloc(msize, sizeof *dest)) == NULL) { + mpd_err_fatal("out of memory"); + } + + for (i = 0; i < msize; i++) { + a[i] = src[i] = random(); + } + + start_std= clock(); + std_trans_c(dest, src, rows, cols); + end_std= clock(); + + start_fast = clock(); + func(a, rows, cols); + end_fast = clock(); + + for (i = 0; i < msize; i++) { + if (a[i] != dest[i]) { + fprintf(stderr, "FAIL: a[%"PRI_mpd_size_t"] = %d\t" + "dest[%"PRI_mpd_size_t"] = %d\n", + i, a[i], i, dest[i]); + exit(1); + } + } + + fprintf(stderr, "size: %10"PRI_mpd_size_t"\tstd_trans: %f sec\t " + "in_place_trans: %f sec\n", + msize, + (double)(end_std-start_std)/(double)CLOCKS_PER_SEC, + (double)(end_fast-start_fast)/(double)CLOCKS_PER_SEC); + + mpd_free(a); + mpd_free(src); + mpd_free(dest); +} + + +#define transfunc_uint (void (*)(mpd_uint_t *, mpd_size_t, mpd_size_t)) +#define transfunc_uchar (void (*)(uint8_t *, mpd_size_t, mpd_size_t)) + + +int main(void) +{ + mpd_size_t rows, cols; + + + fprintf(stderr, "\n2^n * 2^n mpd_uint_t matrices:\n\n"); + for (rows = 1; mul_size_t(rows, rows) <= UMOD_ARRAY; rows *= 2) { + testit_uint(transfunc_uint transpose_pow2, rows, rows); + } + + fprintf(stderr, "\n2^n * 2*2^n mpd_uint_t matrices:\n\n"); + for (rows = 8, cols = 16; mul_size_t(rows, cols) <= UMOD_ARRAY; rows *= 2, cols*=2) { + testit_uint(transfunc_uint transpose_pow2, rows, cols); + } + + fprintf(stderr, "\n2*2^n * 2^n mpd_uint_t matrices:\n\n"); + for (rows = 16, cols = 8; mul_size_t(rows, cols) <= UMOD_ARRAY; rows *= 2, cols*=2) { + testit_uint(transfunc_uint transpose_pow2, rows, cols); + } + + + fprintf(stderr, "\n2^n * 2^n uint8_t matrices:\n\n"); + for (rows = 1; mul_size_t(rows, rows) <= UCHAR_ARRAY; rows *= 2) { + testit_uchar(transfunc_uchar transpose_pow2_c, rows, rows); + } + + fprintf(stderr, "\n2^n * 2*2^n uint8_t matrices:\n\n"); + for (rows = 8, cols = 16; mul_size_t(rows, cols) <= UCHAR_ARRAY; rows *= 2, cols*=2) { + testit_uchar(transfunc_uchar transpose_pow2_c, rows, cols); + } + + fprintf(stderr, "\n2*2^n * 2^n uint8_t matrices:\n\n"); + for (rows = 16, cols = 8; mul_size_t(rows, cols) <= UCHAR_ARRAY; rows *= 2, cols*=2) { + testit_uchar(transfunc_uchar transpose_pow2_c, rows, cols); + } + + fprintf(stderr, "\n3 * 2^n mpd_uint_t matrices:\n\n"); + for (rows = 3, cols = 4; mul_size_t(rows, cols) <= UMOD_ARRAY3; cols*=2) { + testit_uint(transpose_3xpow2, rows, cols); + } + + fprintf(stderr, "\n2^n * 3 mpd_uint_t matrices:\n\n"); + for (rows = 4, cols = 3; mul_size_t(rows, cols) <= UMOD_ARRAY3; rows *= 2) { + testit_uint(transpose_3xpow2, rows, cols); + } + + + fprintf(stderr, "\n3 * 2^n uint8_t matrices:\n\n"); + for (rows = 3, cols = 4; mul_size_t(rows, cols) <= UCHAR_ARRAY3; cols*=2) { + testit_uchar(transpose_3xpow2_c, rows, cols); + } + + fprintf(stderr, "\n2^n * 3 uint8_t matrices:\n\n"); + for (rows = 4, cols = 3; mul_size_t(rows, cols) <= UCHAR_ARRAY3; rows *= 2) { + testit_uchar(transpose_3xpow2_c, rows, cols); + } + + return 0; +} + + Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/baseconv.decTest ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/baseconv.decTest Thu Jan 21 18:27:06 2010 @@ -0,0 +1,405 @@ +Precision: 425000000 +Maxexponent: 425000000 +Minexponent: -425000000 + + +bconv0 baseconv 0 -> 0 +bconv1 baseconv 1 -> 1 +bconv2 baseconv 2 -> 2 +bconv3 baseconv 3 -> 3 +bconv4 baseconv 4 -> 4 +bconv5 baseconv 5 -> 5 +bconv6 baseconv 6 -> 6 +bconv7 baseconv 7 -> 7 +bconv8 baseconv 8 -> 8 +bconv9 baseconv 9 -> 9 +bconv10 baseconv 10 -> 10 +bconv11 baseconv 11 -> 11 +bconv12 baseconv 12 -> 12 +bconv13 baseconv 13 -> 13 +bconv14 baseconv 14 -> 14 +bconv15 baseconv 15 -> 15 +bconv16 baseconv 16 -> 16 +bconv17 baseconv 17 -> 17 +bconv18 baseconv 18 -> 18 +bconv19 baseconv 19 -> 19 +bconv20 baseconv 20 -> 20 +bconv21 baseconv 21 -> 21 +bconv22 baseconv 22 -> 22 +bconv23 baseconv 23 -> 23 +bconv24 baseconv 24 -> 24 +bconv25 baseconv 25 -> 25 +bconv26 baseconv 26 -> 26 +bconv27 baseconv 27 -> 27 +bconv28 baseconv 28 -> 28 +bconv29 baseconv 29 -> 29 +bconv30 baseconv 30 -> 30 +bconv31 baseconv 31 -> 31 +bconv32 baseconv 32 -> 32 +bconv33 baseconv 33 -> 33 +bconv34 baseconv 34 -> 34 +bconv35 baseconv 35 -> 35 +bconv36 baseconv 36 -> 36 +bconv37 baseconv 37 -> 37 +bconv38 baseconv 38 -> 38 +bconv39 baseconv 39 -> 39 +bconv40 baseconv 40 -> 40 +bconv41 baseconv 41 -> 41 +bconv42 baseconv 42 -> 42 +bconv43 baseconv 43 -> 43 +bconv44 baseconv 44 -> 44 +bconv45 baseconv 45 -> 45 +bconv46 baseconv 46 -> 46 +bconv47 baseconv 47 -> 47 +bconv48 baseconv 48 -> 48 +bconv49 baseconv 49 -> 49 +bconv50 baseconv 50 -> 50 +bconv51 baseconv 51 -> 51 +bconv52 baseconv 52 -> 52 +bconv53 baseconv 53 -> 53 +bconv54 baseconv 54 -> 54 +bconv55 baseconv 55 -> 55 +bconv56 baseconv 56 -> 56 +bconv57 baseconv 57 -> 57 +bconv58 baseconv 58 -> 58 +bconv59 baseconv 59 -> 59 +bconv60 baseconv 60 -> 60 +bconv61 baseconv 61 -> 61 +bconv62 baseconv 62 -> 62 +bconv63 baseconv 63 -> 63 +bconv64 baseconv 64 -> 64 +bconv65 baseconv 65 -> 65 +bconv66 baseconv 66 -> 66 +bconv67 baseconv 67 -> 67 +bconv68 baseconv 68 -> 68 +bconv69 baseconv 69 -> 69 +bconv70 baseconv 70 -> 70 +bconv71 baseconv 71 -> 71 +bconv72 baseconv 72 -> 72 +bconv73 baseconv 73 -> 73 +bconv74 baseconv 74 -> 74 +bconv75 baseconv 75 -> 75 +bconv76 baseconv 76 -> 76 +bconv77 baseconv 77 -> 77 +bconv78 baseconv 78 -> 78 +bconv79 baseconv 79 -> 79 +bconv80 baseconv 80 -> 80 +bconv81 baseconv 81 -> 81 +bconv82 baseconv 82 -> 82 +bconv83 baseconv 83 -> 83 +bconv84 baseconv 84 -> 84 +bconv85 baseconv 85 -> 85 +bconv86 baseconv 86 -> 86 +bconv87 baseconv 87 -> 87 +bconv88 baseconv 88 -> 88 +bconv89 baseconv 89 -> 89 +bconv90 baseconv 90 -> 90 +bconv91 baseconv 91 -> 91 +bconv92 baseconv 92 -> 92 +bconv93 baseconv 93 -> 93 +bconv94 baseconv 94 -> 94 +bconv95 baseconv 95 -> 95 +bconv96 baseconv 96 -> 96 +bconv97 baseconv 97 -> 97 +bconv98 baseconv 98 -> 98 +bconv99 baseconv 99 -> 99 +bconv0 baseconv 1 -> 1 +bconv1 baseconv 10 -> 10 +bconv2 baseconv 100 -> 100 +bconv3 baseconv 1000 -> 1000 +bconv4 baseconv 10000 -> 10000 +bconv5 baseconv 100000 -> 100000 +bconv6 baseconv 1000000 -> 1000000 +bconv7 baseconv 10000000 -> 10000000 +bconv8 baseconv 100000000 -> 100000000 +bconv9 baseconv 1000000000 -> 1000000000 +bconv10 baseconv 10000000000 -> 10000000000 +bconv11 baseconv 100000000000 -> 100000000000 +bconv12 baseconv 1000000000000 -> 1000000000000 +bconv13 baseconv 10000000000000 -> 10000000000000 +bconv14 baseconv 100000000000000 -> 100000000000000 +bconv15 baseconv 1000000000000000 -> 1000000000000000 +bconv16 baseconv 10000000000000000 -> 10000000000000000 +bconv17 baseconv 100000000000000000 -> 100000000000000000 +bconv18 baseconv 1000000000000000000 -> 1000000000000000000 +bconv19 baseconv 10000000000000000000 -> 10000000000000000000 +bconv20 baseconv 100000000000000000000 -> 100000000000000000000 +bconv21 baseconv 1000000000000000000000 -> 1000000000000000000000 +bconv22 baseconv 10000000000000000000000 -> 10000000000000000000000 +bconv23 baseconv 100000000000000000000000 -> 100000000000000000000000 +bconv24 baseconv 1000000000000000000000000 -> 1000000000000000000000000 +bconv25 baseconv 10000000000000000000000000 -> 10000000000000000000000000 +bconv26 baseconv 100000000000000000000000000 -> 100000000000000000000000000 +bconv27 baseconv 1000000000000000000000000000 -> 1000000000000000000000000000 +bconv28 baseconv 10000000000000000000000000000 -> 10000000000000000000000000000 +bconv29 baseconv 100000000000000000000000000000 -> 100000000000000000000000000000 +bconv30 baseconv 1000000000000000000000000000000 -> 1000000000000000000000000000000 +bconv31 baseconv 10000000000000000000000000000000 -> 10000000000000000000000000000000 +bconv32 baseconv 100000000000000000000000000000000 -> 100000000000000000000000000000000 +bconv33 baseconv 1000000000000000000000000000000000 -> 1000000000000000000000000000000000 +bconv34 baseconv 10000000000000000000000000000000000 -> 10000000000000000000000000000000000 +bconv35 baseconv 100000000000000000000000000000000000 -> 100000000000000000000000000000000000 +bconv36 baseconv 1000000000000000000000000000000000000 -> 1000000000000000000000000000000000000 +bconv37 baseconv 10000000000000000000000000000000000000 -> 10000000000000000000000000000000000000 +bconv38 baseconv 100000000000000000000000000000000000000 -> 100000000000000000000000000000000000000 +bconv39 baseconv 1000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000 +bconv40 baseconv 10000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000 +bconv41 baseconv 100000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000 +bconv42 baseconv 1000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000 +bconv43 baseconv 10000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000 +bconv44 baseconv 100000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000 +bconv45 baseconv 1000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000 +bconv46 baseconv 10000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000 +bconv47 baseconv 100000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000 +bconv48 baseconv 1000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000 +bconv49 baseconv 10000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000 +bconv50 baseconv 100000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000 +bconv51 baseconv 1000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000 +bconv52 baseconv 10000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000 +bconv53 baseconv 100000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000 +bconv54 baseconv 1000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000 +bconv55 baseconv 10000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000 +bconv56 baseconv 100000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000 +bconv57 baseconv 1000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000 +bconv58 baseconv 10000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000 +bconv59 baseconv 100000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000 +bconv60 baseconv 1000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000 +bconv61 baseconv 10000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000 +bconv62 baseconv 100000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000 +bconv63 baseconv 1000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000 +bconv64 baseconv 10000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000 +bconv65 baseconv 100000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000 +bconv66 baseconv 1000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000 +bconv67 baseconv 10000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000 +bconv68 baseconv 100000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000 +bconv69 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000 +bconv70 baseconv 10000000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000000 +bconv71 baseconv 100000000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000000 +bconv72 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000000 +bconv73 baseconv 10000000000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000000000 +bconv74 baseconv 100000000000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000000000 +bconv75 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv76 baseconv 10000000000000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv77 baseconv 100000000000000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv78 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv79 baseconv 10000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv80 baseconv 100000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv81 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv82 baseconv 10000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv83 baseconv 100000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv84 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv85 baseconv 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv86 baseconv 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv87 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv88 baseconv 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv89 baseconv 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv90 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv91 baseconv 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv92 baseconv 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv93 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv94 baseconv 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv95 baseconv 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv96 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv97 baseconv 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv98 baseconv 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv99 baseconv 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +bconv0 baseconv 1 -> 1 +bconv1 baseconv 2 -> 2 +bconv2 baseconv 4 -> 4 +bconv3 baseconv 8 -> 8 +bconv4 baseconv 16 -> 16 +bconv5 baseconv 32 -> 32 +bconv6 baseconv 64 -> 64 +bconv7 baseconv 128 -> 128 +bconv8 baseconv 256 -> 256 +bconv9 baseconv 512 -> 512 +bconv10 baseconv 1024 -> 1024 +bconv11 baseconv 2048 -> 2048 +bconv12 baseconv 4096 -> 4096 +bconv13 baseconv 8192 -> 8192 +bconv14 baseconv 16384 -> 16384 +bconv15 baseconv 32768 -> 32768 +bconv16 baseconv 65536 -> 65536 +bconv17 baseconv 131072 -> 131072 +bconv18 baseconv 262144 -> 262144 +bconv19 baseconv 524288 -> 524288 +bconv20 baseconv 1048576 -> 1048576 +bconv21 baseconv 2097152 -> 2097152 +bconv22 baseconv 4194304 -> 4194304 +bconv23 baseconv 8388608 -> 8388608 +bconv24 baseconv 16777216 -> 16777216 +bconv25 baseconv 33554432 -> 33554432 +bconv26 baseconv 67108864 -> 67108864 +bconv27 baseconv 134217728 -> 134217728 +bconv28 baseconv 268435456 -> 268435456 +bconv29 baseconv 536870912 -> 536870912 +bconv30 baseconv 1073741824 -> 1073741824 +bconv31 baseconv 2147483648 -> 2147483648 +bconv32 baseconv 4294967296 -> 4294967296 +bconv33 baseconv 8589934592 -> 8589934592 +bconv34 baseconv 17179869184 -> 17179869184 +bconv35 baseconv 34359738368 -> 34359738368 +bconv36 baseconv 68719476736 -> 68719476736 +bconv37 baseconv 137438953472 -> 137438953472 +bconv38 baseconv 274877906944 -> 274877906944 +bconv39 baseconv 549755813888 -> 549755813888 +bconv40 baseconv 1099511627776 -> 1099511627776 +bconv41 baseconv 2199023255552 -> 2199023255552 +bconv42 baseconv 4398046511104 -> 4398046511104 +bconv43 baseconv 8796093022208 -> 8796093022208 +bconv44 baseconv 17592186044416 -> 17592186044416 +bconv45 baseconv 35184372088832 -> 35184372088832 +bconv46 baseconv 70368744177664 -> 70368744177664 +bconv47 baseconv 140737488355328 -> 140737488355328 +bconv48 baseconv 281474976710656 -> 281474976710656 +bconv49 baseconv 562949953421312 -> 562949953421312 +bconv50 baseconv 1125899906842624 -> 1125899906842624 +bconv51 baseconv 2251799813685248 -> 2251799813685248 +bconv52 baseconv 4503599627370496 -> 4503599627370496 +bconv53 baseconv 9007199254740992 -> 9007199254740992 +bconv54 baseconv 18014398509481984 -> 18014398509481984 +bconv55 baseconv 36028797018963968 -> 36028797018963968 +bconv56 baseconv 72057594037927936 -> 72057594037927936 +bconv57 baseconv 144115188075855872 -> 144115188075855872 +bconv58 baseconv 288230376151711744 -> 288230376151711744 +bconv59 baseconv 576460752303423488 -> 576460752303423488 +bconv60 baseconv 1152921504606846976 -> 1152921504606846976 +bconv61 baseconv 2305843009213693952 -> 2305843009213693952 +bconv62 baseconv 4611686018427387904 -> 4611686018427387904 +bconv63 baseconv 9223372036854775808 -> 9223372036854775808 +bconv64 baseconv 18446744073709551616 -> 18446744073709551616 +bconv65 baseconv 36893488147419103232 -> 36893488147419103232 +bconv66 baseconv 73786976294838206464 -> 73786976294838206464 +bconv67 baseconv 147573952589676412928 -> 147573952589676412928 +bconv68 baseconv 295147905179352825856 -> 295147905179352825856 +bconv69 baseconv 590295810358705651712 -> 590295810358705651712 +bconv70 baseconv 1180591620717411303424 -> 1180591620717411303424 +bconv71 baseconv 2361183241434822606848 -> 2361183241434822606848 +bconv72 baseconv 4722366482869645213696 -> 4722366482869645213696 +bconv73 baseconv 9444732965739290427392 -> 9444732965739290427392 +bconv74 baseconv 18889465931478580854784 -> 18889465931478580854784 +bconv75 baseconv 37778931862957161709568 -> 37778931862957161709568 +bconv76 baseconv 75557863725914323419136 -> 75557863725914323419136 +bconv77 baseconv 151115727451828646838272 -> 151115727451828646838272 +bconv78 baseconv 302231454903657293676544 -> 302231454903657293676544 +bconv79 baseconv 604462909807314587353088 -> 604462909807314587353088 +bconv80 baseconv 1208925819614629174706176 -> 1208925819614629174706176 +bconv81 baseconv 2417851639229258349412352 -> 2417851639229258349412352 +bconv82 baseconv 4835703278458516698824704 -> 4835703278458516698824704 +bconv83 baseconv 9671406556917033397649408 -> 9671406556917033397649408 +bconv84 baseconv 19342813113834066795298816 -> 19342813113834066795298816 +bconv85 baseconv 38685626227668133590597632 -> 38685626227668133590597632 +bconv86 baseconv 77371252455336267181195264 -> 77371252455336267181195264 +bconv87 baseconv 154742504910672534362390528 -> 154742504910672534362390528 +bconv88 baseconv 309485009821345068724781056 -> 309485009821345068724781056 +bconv89 baseconv 618970019642690137449562112 -> 618970019642690137449562112 +bconv90 baseconv 1237940039285380274899124224 -> 1237940039285380274899124224 +bconv91 baseconv 2475880078570760549798248448 -> 2475880078570760549798248448 +bconv92 baseconv 4951760157141521099596496896 -> 4951760157141521099596496896 +bconv93 baseconv 9903520314283042199192993792 -> 9903520314283042199192993792 +bconv94 baseconv 19807040628566084398385987584 -> 19807040628566084398385987584 +bconv95 baseconv 39614081257132168796771975168 -> 39614081257132168796771975168 +bconv96 baseconv 79228162514264337593543950336 -> 79228162514264337593543950336 +bconv97 baseconv 158456325028528675187087900672 -> 158456325028528675187087900672 +bconv98 baseconv 316912650057057350374175801344 -> 316912650057057350374175801344 +bconv99 baseconv 633825300114114700748351602688 -> 633825300114114700748351602688 +bconv0 baseconv 6491583314170016651960765600882241266678157369209968827293693478920422642346481531587856957822735272176502825702006352105971780102301850294086322213302322664347040715971849030973951339424556362307717779218076765556369695864662049459295802567800242575763709155319451802637688617894116374536041436438553255088598018340823760747136302987269567918733314283597905508534002559098376607421780045267678614483953523059894321696806071222585741217040857630480460199343123995957686828057955055817822471099217703508178497070025157348312770738150312853321283542425686124704814692054430786648641233918001350846520921868542146706115842138638604035732907440841257662610929924526023402966747601951086655344453076372535059350343585534773253557333850960007635423214139168749145966886108704409988193837007517140336251823622424393985492337611968149148379319670111733083686958890371624812909716895645978398587519379218716817321602447554096503954940038891579617470595230445818222826319325339987706275220382824180906767151452 -> 6491583314170016651960765600882241266678157369209968827293693478920422642346481531587856957822735272176502825702006352105971780102301850294086322213302322664347040715971849030973951339424556362307717779218076765556369695864662049459295802567800242575763709155319451802637688617894116374536041436438553255088598018340823760747136302987269567918733314283597905508534002559098376607421780045267678614483953523059894321696806071222585741217040857630480460199343123995957686828057955055817822471099217703508178497070025157348312770738150312853321283542425686124704814692054430786648641233918001350846520921868542146706115842138638604035732907440841257662610929924526023402966747601951086655344453076372535059350343585534773253557333850960007635423214139168749145966886108704409988193837007517140336251823622424393985492337611968149148379319670111733083686958890371624812909716895645978398587519379218716817321602447554096503954940038891579617470595230445818222826319325339987706275220382824180906767151452 +bconv1 baseconv 4111279081475686589703492345622963707727266174997802625882189307956954153902192710126460741811610238853328696116227406850135727953626340565034219448900881683684883608691229521286519078350025357285261827715383654277407876218513507584549916689827258877301790157273506446715760963508498885469258966198334440893694548555727773173147536093210593427724829596885869552273915851494583428170108447618828785448908040727858462941432613673636683856145276420428010154140577133784426034632981299516444125975607921808604605790479877488093002169388974010936725862921662219877488692069778006926757706085858986430479679228381497950744698172364364354932687043076968499766229181355411400736380404082838591457713447659358799143029381684625664202305335191893537522455528567800748632454649751212272508551793617234430584411216663042025939557613620312367095302867344424251051570178081633447563541458825805694563136971975316378916225952125882461081260669069949625871045264890932276381748349997938447804782519245868279275475352 -> 4111279081475686589703492345622963707727266174997802625882189307956954153902192710126460741811610238853328696116227406850135727953626340565034219448900881683684883608691229521286519078350025357285261827715383654277407876218513507584549916689827258877301790157273506446715760963508498885469258966198334440893694548555727773173147536093210593427724829596885869552273915851494583428170108447618828785448908040727858462941432613673636683856145276420428010154140577133784426034632981299516444125975607921808604605790479877488093002169388974010936725862921662219877488692069778006926757706085858986430479679228381497950744698172364364354932687043076968499766229181355411400736380404082838591457713447659358799143029381684625664202305335191893537522455528567800748632454649751212272508551793617234430584411216663042025939557613620312367095302867344424251051570178081633447563541458825805694563136971975316378916225952125882461081260669069949625871045264890932276381748349997938447804782519245868279275475352 +bconv2 baseconv 9600797335332092235690111207994089049375445106935598944380399485573174822825377869166990414613498587852823509452222008409000712400416624826815271770380383263075263047060384888381593154421862776767708719168600083946522763268546178543377340193031912449141416981269793084078728504576654693442409980856791320701417892396983663041850360754332772552495358615356273962089696011050766282398256234034836982339869960509240914982904785433483583973779742981292295206102251801464969120684108541500751525623824759490644283465196386670102843548273794500224788944449199133697628700050968582610902336660579177656621845710789382201067989946160402580947720168315431874321966668002843698612531052801151926147468971176444247635962008643173744974022961891904559751410589796142286323691985479739224838423258970926444135643916606765521543073389721638261079195805301217191632151706520777941367381340618851814311534541124394700069511419513100760137605926896495962368746752884289862024927775256038956312359544761436433461272791 -> 9600797335332092235690111207994089049375445106935598944380399485573174822825377869166990414613498587852823509452222008409000712400416624826815271770380383263075263047060384888381593154421862776767708719168600083946522763268546178543377340193031912449141416981269793084078728504576654693442409980856791320701417892396983663041850360754332772552495358615356273962089696011050766282398256234034836982339869960509240914982904785433483583973779742981292295206102251801464969120684108541500751525623824759490644283465196386670102843548273794500224788944449199133697628700050968582610902336660579177656621845710789382201067989946160402580947720168315431874321966668002843698612531052801151926147468971176444247635962008643173744974022961891904559751410589796142286323691985479739224838423258970926444135643916606765521543073389721638261079195805301217191632151706520777941367381340618851814311534541124394700069511419513100760137605926896495962368746752884289862024927775256038956312359544761436433461272791 +bconv3 baseconv 7391857188750838688926825764227067389520943548616283242202404754917931318372010666837031038390661458746271247088740990557650130784333324556842771423189123747055115965433981180219003780005468158937696544938642720016972150003379294733004464283339354283365767131403893643742260321585901979112044055415111875550468044920846892656160098835257261152341044149358306283151659341298340885383066792459518760909303200893733500565570419257141176691352501677872104603472695149194708141862009989045046069217976272761230973716640970061622460016952371487527884064643283124270612278205563307685817019338916023562360693679289303486203686892776512370440999449101169159821841240580776177313468492225025491786937102252424895258707986078084587381798744747683723049832887829922656062251228913742924056046062121265361299904402256389160514737937836491646159281983519255516145101733524659649030957407224920123274864377710913023997875614696779896852423601748304484143171016205991876729973271943704553053974709589492181423319279 -> 7391857188750838688926825764227067389520943548616283242202404754917931318372010666837031038390661458746271247088740990557650130784333324556842771423189123747055115965433981180219003780005468158937696544938642720016972150003379294733004464283339354283365767131403893643742260321585901979112044055415111875550468044920846892656160098835257261152341044149358306283151659341298340885383066792459518760909303200893733500565570419257141176691352501677872104603472695149194708141862009989045046069217976272761230973716640970061622460016952371487527884064643283124270612278205563307685817019338916023562360693679289303486203686892776512370440999449101169159821841240580776177313468492225025491786937102252424895258707986078084587381798744747683723049832887829922656062251228913742924056046062121265361299904402256389160514737937836491646159281983519255516145101733524659649030957407224920123274864377710913023997875614696779896852423601748304484143171016205991876729973271943704553053974709589492181423319279 +bconv4 baseconv 3810312944809156037330447947531565812222415566539036090576331099409637782665851600787099319843033866135488042538934917365940820340820797549748098901796010122900459983471249151829946082755744261111178419062574006617997092675569795239059680479946127950791244158625233081723752938714860889011144827373565865238321030098317014339335278466740284557736877680511037830476589248152692553095292251806612855373747175365425313772655605953292128342938903780907264891639800822117466494476655947032309532878099472930243933079173197542350967400374146431236761555027300506153270803473159970224896568034239437018861021357795008789408604622410923982351692684775466942939834767808784946292286891716007860849129275614267267226400533680419578008432029240296583121485171389459147456717015360473453605523544250780642711790535419038894134289988861827807918994395533473575529508651366584344695782740350763054033994327912466983158199068654685987490986855982699908908070024908329452891704114804725493591316839437780825369503285 -> 3810312944809156037330447947531565812222415566539036090576331099409637782665851600787099319843033866135488042538934917365940820340820797549748098901796010122900459983471249151829946082755744261111178419062574006617997092675569795239059680479946127950791244158625233081723752938714860889011144827373565865238321030098317014339335278466740284557736877680511037830476589248152692553095292251806612855373747175365425313772655605953292128342938903780907264891639800822117466494476655947032309532878099472930243933079173197542350967400374146431236761555027300506153270803473159970224896568034239437018861021357795008789408604622410923982351692684775466942939834767808784946292286891716007860849129275614267267226400533680419578008432029240296583121485171389459147456717015360473453605523544250780642711790535419038894134289988861827807918994395533473575529508651366584344695782740350763054033994327912466983158199068654685987490986855982699908908070024908329452891704114804725493591316839437780825369503285 +bconv5 baseconv 581664078828729394527814192141359952532315020374250650573514758865214035639697481467230138669155013681012285411141892582082940480015406380331044560139168192579068496210381226760275838011032288362321503710350917701271978881023760158155636167413308080567924335721397083086345069663466869008218332774078848618930452320633863085132519051664743279245782924386393783831350980873582281751070154892523902632342109872655636899945710409743770833827628787430788697901131193972931115008142992235521172398754458742331951303042997175644050805744963227496623814654782953338980510324494649885655092311791766190181848805492595062829358056724308720104246455161400109405757805114773952048173975404207567349809495261755140122408322404970089371408815604916043747303955412070895876264678544299565228647120386814322745272992396641738110564515816933340349465146535524257261196750271377184644939359494408817796743968138159504903166545968931680314836698502322818795297311358261187531528463383487383639163344512182961974823199 -> 581664078828729394527814192141359952532315020374250650573514758865214035639697481467230138669155013681012285411141892582082940480015406380331044560139168192579068496210381226760275838011032288362321503710350917701271978881023760158155636167413308080567924335721397083086345069663466869008218332774078848618930452320633863085132519051664743279245782924386393783831350980873582281751070154892523902632342109872655636899945710409743770833827628787430788697901131193972931115008142992235521172398754458742331951303042997175644050805744963227496623814654782953338980510324494649885655092311791766190181848805492595062829358056724308720104246455161400109405757805114773952048173975404207567349809495261755140122408322404970089371408815604916043747303955412070895876264678544299565228647120386814322745272992396641738110564515816933340349465146535524257261196750271377184644939359494408817796743968138159504903166545968931680314836698502322818795297311358261187531528463383487383639163344512182961974823199 +bconv6 baseconv 1597224394916957426933399884230583612104639862888511483918331543496001143084986596238268750856342059758559950609796869219361462753282519959227713376793165082148966467883242625003972828290211442846872783637563675925041812657465357267277979689805945554583733983793325297137473150872901207156306867197974234556666602743077351159781049142721111157102531109180568776365878222621157306803316710993369377551251056075978367047213207196276191716640136792208869116611017117779262947086537506688356841395763194316506751331411834065910515447193074504764739885052789214271633128249195002432841039680256131301866272632771764655682685319651680961500150302937998402225355396697376598748043777520517006966952703804972780573860280435964439028988227174501330209270744041587475823060881868285536437930908473024817379326179043481910640821923730555951877575062410803010077992810632578743139777895363484868415028605858151220981103015288693057936012042461201439738699857479012040063169558179733743022763535724129623801710174 -> 1597224394916957426933399884230583612104639862888511483918331543496001143084986596238268750856342059758559950609796869219361462753282519959227713376793165082148966467883242625003972828290211442846872783637563675925041812657465357267277979689805945554583733983793325297137473150872901207156306867197974234556666602743077351159781049142721111157102531109180568776365878222621157306803316710993369377551251056075978367047213207196276191716640136792208869116611017117779262947086537506688356841395763194316506751331411834065910515447193074504764739885052789214271633128249195002432841039680256131301866272632771764655682685319651680961500150302937998402225355396697376598748043777520517006966952703804972780573860280435964439028988227174501330209270744041587475823060881868285536437930908473024817379326179043481910640821923730555951877575062410803010077992810632578743139777895363484868415028605858151220981103015288693057936012042461201439738699857479012040063169558179733743022763535724129623801710174 +bconv7 baseconv 8494537335500467845803017335439749194665866425449590956859098829595307480455197439262576939094936789928457616118793601350107874469658143763506353198066447541086966098488178696658135213011285714070905546789142098294193815169056323095877646239449646656475541914581502280064977313970533084534992650999132235177084657865857250546997090536269712635726607992754108422522776214712915728655939119658726268871580936369466626718860739593731373436504240887061163908806291218460495488594599164551031312072256435775318731369167697540977550724973584789209120282066365833877498276544998095547772407620241766022441746081249003338436374014851293125970633876119079943143591658862800994849059573686889159389176733059003153379233034613816659792612350870850962288977481684383189663339739491881038826218412717657583061136813919073865983955302240374321847921699285608519193376869374796534203431191622133490411113868972789018853758277298883278108604215524686573147875405580681233813375229835369597122930336579071659011305493 -> 8494537335500467845803017335439749194665866425449590956859098829595307480455197439262576939094936789928457616118793601350107874469658143763506353198066447541086966098488178696658135213011285714070905546789142098294193815169056323095877646239449646656475541914581502280064977313970533084534992650999132235177084657865857250546997090536269712635726607992754108422522776214712915728655939119658726268871580936369466626718860739593731373436504240887061163908806291218460495488594599164551031312072256435775318731369167697540977550724973584789209120282066365833877498276544998095547772407620241766022441746081249003338436374014851293125970633876119079943143591658862800994849059573686889159389176733059003153379233034613816659792612350870850962288977481684383189663339739491881038826218412717657583061136813919073865983955302240374321847921699285608519193376869374796534203431191622133490411113868972789018853758277298883278108604215524686573147875405580681233813375229835369597122930336579071659011305493 +bconv8 baseconv 2919929564262280016326432682972161358466398665016186667001143486624361781190367706444851840197851079596727038093730712199821599251718299339847712563214201624995683686942329198072246518178490343968248165061243767218811498814159781475518688080319940902866549541615061520458199757996522296964801679163389000871217341745667749351644081047030377927111638883433437694480358033912683425282448334012389020309749763957841286214328790748178789279825754956979292994543580131252034787858035703411486731741680089897128428834711018833010096571422396443329799706146308213505878878844626004235264807575864007093926619480833541324015063471078104056420326915116947401067109851932075196138030983716126816420531224588360189015976494005035758026314038292977171140049459616389565699576337363391835485410520435322339155656601552455327045876615610928759606256719025379763038966556553425044449074741425173631085926651516889855508069207136099220288203380161521368983721439855498436947709681774705358138025820342312716902518601 -> 2919929564262280016326432682972161358466398665016186667001143486624361781190367706444851840197851079596727038093730712199821599251718299339847712563214201624995683686942329198072246518178490343968248165061243767218811498814159781475518688080319940902866549541615061520458199757996522296964801679163389000871217341745667749351644081047030377927111638883433437694480358033912683425282448334012389020309749763957841286214328790748178789279825754956979292994543580131252034787858035703411486731741680089897128428834711018833010096571422396443329799706146308213505878878844626004235264807575864007093926619480833541324015063471078104056420326915116947401067109851932075196138030983716126816420531224588360189015976494005035758026314038292977171140049459616389565699576337363391835485410520435322339155656601552455327045876615610928759606256719025379763038966556553425044449074741425173631085926651516889855508069207136099220288203380161521368983721439855498436947709681774705358138025820342312716902518601 +bconv9 baseconv 4443626716871286334620487546377151789025176693244491882959436724484366603768034884502489633564660833009856731580646131411675319919882017589877506937868448502406334198744937656638946567127023414568573508211760000932627934342820738148640158145395011152865009882761742036055119760224421358744931836393477713536940027313145741576813447418061374889876687509017855968575104732154582395247029091962791165645622637986551867577275463143508143180769914404151217527449357643870088881632182984619175942747964816977170294685829354832687433338227420239642880904971272968415767253933179473869456786463849682399363799880300575817039352752950976714029419412544885511510558593153484682012385603963509568541509714291147578741700793254604782043773003984171568431334016620128211596703726226281001856083733522300364401741811461550998767957058404960176412547675707687469107620763960960216261711509428754701027358761185791498601011310619603375093901126951607586513180349052831443595256419965684342691421793872592561337361799 -> 4443626716871286334620487546377151789025176693244491882959436724484366603768034884502489633564660833009856731580646131411675319919882017589877506937868448502406334198744937656638946567127023414568573508211760000932627934342820738148640158145395011152865009882761742036055119760224421358744931836393477713536940027313145741576813447418061374889876687509017855968575104732154582395247029091962791165645622637986551867577275463143508143180769914404151217527449357643870088881632182984619175942747964816977170294685829354832687433338227420239642880904971272968415767253933179473869456786463849682399363799880300575817039352752950976714029419412544885511510558593153484682012385603963509568541509714291147578741700793254604782043773003984171568431334016620128211596703726226281001856083733522300364401741811461550998767957058404960176412547675707687469107620763960960216261711509428754701027358761185791498601011310619603375093901126951607586513180349052831443595256419965684342691421793872592561337361799 +bconv10 baseconv 1379983260050275126662040280723604646692370455950839443636659233046708221508635523843245624754639895760158203939809524597138754045206863299402250888874724022255259118287086780799548920169691742269370474055931677320146112194021520434033403978884513204044886206979544743500199027444529245822948046518453462669157068562264135035866638320311606268725356006573505790752667952838845733950512592079864899075956727747469838881620875654541649015267766468157336998534993076189129919860717264208060443550512004946985594435836401146342820230029829255242839955703978787909712609008504253997989141168796241758138191509829848394288740719759670849184179448070838433146539972380087100607013490138311203014379148698312164236000668592466549171268146190896785659450024963132392937234670239232438182458692716451533268779528479850535110396263068820233830083290801990160104456027045411885593084907281946832353953660620733435160429868604053553016810703677982791127756958214547870412106647432595422414453204760607868194877004 -> 1379983260050275126662040280723604646692370455950839443636659233046708221508635523843245624754639895760158203939809524597138754045206863299402250888874724022255259118287086780799548920169691742269370474055931677320146112194021520434033403978884513204044886206979544743500199027444529245822948046518453462669157068562264135035866638320311606268725356006573505790752667952838845733950512592079864899075956727747469838881620875654541649015267766468157336998534993076189129919860717264208060443550512004946985594435836401146342820230029829255242839955703978787909712609008504253997989141168796241758138191509829848394288740719759670849184179448070838433146539972380087100607013490138311203014379148698312164236000668592466549171268146190896785659450024963132392937234670239232438182458692716451533268779528479850535110396263068820233830083290801990160104456027045411885593084907281946832353953660620733435160429868604053553016810703677982791127756958214547870412106647432595422414453204760607868194877004 +bconv11 baseconv 4448004345146142785629745920492406921764649218759123133036614841100463437011629993211230868726792557532585712700069142158344250332516149356892632985225868080334248588754780661656860500055366984154135010009885132356335418054751384205941100979013354786442763261683125776734514137006625850548304559910700088731913048374843428977968141423787708919133001100785192080257260526304127630707133028535275417603792702320876796709784655885681728626937916613857114266255524165487485164014078045502117716030363584390173296598551817990743667505702424160524751501993088051681468935089580937626823822269740730045193354394033094248754052088555769437778526886414858399214151748299570338391080383194414095504457700964670658371471938937962752629062102133111135965110654972651388800160857073847017908923803154218943527538354613400975236208341063327905151072247074453326667566166621560422749442530002459716596855708664719076429294913819527715642829015343357903395969762624289808091545969969680229018107472919740236991190584 -> 4448004345146142785629745920492406921764649218759123133036614841100463437011629993211230868726792557532585712700069142158344250332516149356892632985225868080334248588754780661656860500055366984154135010009885132356335418054751384205941100979013354786442763261683125776734514137006625850548304559910700088731913048374843428977968141423787708919133001100785192080257260526304127630707133028535275417603792702320876796709784655885681728626937916613857114266255524165487485164014078045502117716030363584390173296598551817990743667505702424160524751501993088051681468935089580937626823822269740730045193354394033094248754052088555769437778526886414858399214151748299570338391080383194414095504457700964670658371471938937962752629062102133111135965110654972651388800160857073847017908923803154218943527538354613400975236208341063327905151072247074453326667566166621560422749442530002459716596855708664719076429294913819527715642829015343357903395969762624289808091545969969680229018107472919740236991190584 +bconv12 baseconv 2675411530661697972430852898801661681502698725601172571530571267139305266067068990605579384929027908364303215846434929394554247086553392279476479296855434807079041303955261516583368959279253834202496061281854706711543327317843903215099744408470007033253076115472469649170930867914277417055267503051837522236460404514404931182596686375579480627613466011047745930273491508669951618778617997711861313935873877372750290889770810876122106979789226450975363691873070029146697956460040693676380099931213890120405670441375528776705152524091709217687625488405936113224802045838772147304101625714510665782464565037104478588470643266375927226542688313423898351945881149049810440655006623442314767290461020158407077494109406746809495626537933971612104303391508777961139105967191744574497198431310802821784957383741617925062521191542542344000749453787214577830269038984475801552098030692122315658253829545295267160142397789592713359314510135489102715798977500916690425600110311037282039995237351296286394154000516 -> 2675411530661697972430852898801661681502698725601172571530571267139305266067068990605579384929027908364303215846434929394554247086553392279476479296855434807079041303955261516583368959279253834202496061281854706711543327317843903215099744408470007033253076115472469649170930867914277417055267503051837522236460404514404931182596686375579480627613466011047745930273491508669951618778617997711861313935873877372750290889770810876122106979789226450975363691873070029146697956460040693676380099931213890120405670441375528776705152524091709217687625488405936113224802045838772147304101625714510665782464565037104478588470643266375927226542688313423898351945881149049810440655006623442314767290461020158407077494109406746809495626537933971612104303391508777961139105967191744574497198431310802821784957383741617925062521191542542344000749453787214577830269038984475801552098030692122315658253829545295267160142397789592713359314510135489102715798977500916690425600110311037282039995237351296286394154000516 +bconv13 baseconv 4457957454927537688461812152803933057893309313661798019888844725916350791923049671091185745445568272000568499916105636792706734333983954150779210807392529079159051278051278262292856024058644300396302761060186609931250532629877809175222068073564884697977277531507942532257281014395414331251905239774181030885476669871480912542821276866009014330598625959273400996805201352616929690225543712626296502785181776274581768976850416282975572063304675361082023309913467922778505608308226543611541487997877655071116584940944135004871269552163099800312817987690937062356716497503037678719348937277376495353097218905809972095176792270051607660593855462162004570037701710694067564048135023380433144703177863199360133492487411261415303726923760045298880744947675329182486533530390893441999080772950540810023230419515085660899162799632900732682585309047544487440036455753860667472938783490922429296280934298800001057796572412100608311248608380585967549537366641301878649954263074006333369819025341934262552309890685 -> 4457957454927537688461812152803933057893309313661798019888844725916350791923049671091185745445568272000568499916105636792706734333983954150779210807392529079159051278051278262292856024058644300396302761060186609931250532629877809175222068073564884697977277531507942532257281014395414331251905239774181030885476669871480912542821276866009014330598625959273400996805201352616929690225543712626296502785181776274581768976850416282975572063304675361082023309913467922778505608308226543611541487997877655071116584940944135004871269552163099800312817987690937062356716497503037678719348937277376495353097218905809972095176792270051607660593855462162004570037701710694067564048135023380433144703177863199360133492487411261415303726923760045298880744947675329182486533530390893441999080772950540810023230419515085660899162799632900732682585309047544487440036455753860667472938783490922429296280934298800001057796572412100608311248608380585967549537366641301878649954263074006333369819025341934262552309890685 +bconv14 baseconv 3901731478067379289321396414220735780483357993523766698533020834981794870543061749700585421631842605264554120650064237776849231193010333912125858536232044522879995336857450253908748494812208231407059194357661803991617918115858949711849246437663986051219000307965439372723683897296674439191008816828076852138736526857966973763732443605971175782980326694206497798763264608229163395058251422643872948895677391283969909824869680456203331471503477925261194825975690758841481994158180416464348234989705882018982843155697677832471562437079133638442212142453990720049730780393460717585117969598323477927436762280026841735600279774322194245541129512682758846245966261565742384251315954742766690109760090572216988257430135321316854504694510840470144404697890543591914116451687894936506325032717134703136027463896647962750522017499458133789196705162230164646819974564691027479003408667421624630291372474382917784211558461382326828652210777230867674043008511866052133772286465654038522233473020187460660858467078 -> 3901731478067379289321396414220735780483357993523766698533020834981794870543061749700585421631842605264554120650064237776849231193010333912125858536232044522879995336857450253908748494812208231407059194357661803991617918115858949711849246437663986051219000307965439372723683897296674439191008816828076852138736526857966973763732443605971175782980326694206497798763264608229163395058251422643872948895677391283969909824869680456203331471503477925261194825975690758841481994158180416464348234989705882018982843155697677832471562437079133638442212142453990720049730780393460717585117969598323477927436762280026841735600279774322194245541129512682758846245966261565742384251315954742766690109760090572216988257430135321316854504694510840470144404697890543591914116451687894936506325032717134703136027463896647962750522017499458133789196705162230164646819974564691027479003408667421624630291372474382917784211558461382326828652210777230867674043008511866052133772286465654038522233473020187460660858467078 +bconv15 baseconv 4654130777947871235106565465151461084422095964715670606799600540876586888520431823265237922949993426848914383289973098627957823808805773242274705666650695023817068332288028053602837119889249722883578055730426987399507049473986719006531206803575340503737373496865980264428850316818313804183401209750356641907562290186962372904449973454829861996980367983026979009094600005922713262266060683650857145428130022094608561372706439532649518814843814449204700558944204035509625563733066128217457931997800137938160343188836384417256521429544967954247542582708910236174322494792390375695183411985047668205931860675174911781721745206295733293972811633532505651050769641655572883401097916816090263881897772298810854275755073672651722154645883152186711420145164721595742845251862241337791179482125602816644393867478451265452176043215132978604355139427712275063409763557305852406678326116558135079952714119015577110992661915124492008146567447428795131052411419705837588440257141317020517357052079636975130227738598 -> 4654130777947871235106565465151461084422095964715670606799600540876586888520431823265237922949993426848914383289973098627957823808805773242274705666650695023817068332288028053602837119889249722883578055730426987399507049473986719006531206803575340503737373496865980264428850316818313804183401209750356641907562290186962372904449973454829861996980367983026979009094600005922713262266060683650857145428130022094608561372706439532649518814843814449204700558944204035509625563733066128217457931997800137938160343188836384417256521429544967954247542582708910236174322494792390375695183411985047668205931860675174911781721745206295733293972811633532505651050769641655572883401097916816090263881897772298810854275755073672651722154645883152186711420145164721595742845251862241337791179482125602816644393867478451265452176043215132978604355139427712275063409763557305852406678326116558135079952714119015577110992661915124492008146567447428795131052411419705837588440257141317020517357052079636975130227738598 +bconv16 baseconv 6649903495575087493771153800953242013577961180039294825715918202194499150476079787233663406652222968364362252354240762502617978661038662922733262331646118100984108166924536086333452849695885092699887063761418150639306461176675118215408077899621015915846473405233244980498161913123975518197703425854340616426702694437109878025845512326109951618461458985590879975476585800012874776322341807433988214260227054910347409817529283536125266823702079634388079248386880483269208890693943579691797774134822687353629137294554151538135718438084289761599848683755669444925895723323735128773089825168205026900265063639996642154127713550940387749894386305836520239159650767511265284302953611296989644915506174898626874724649914780591548426436707748279509955263711360123961926166504566481355303194932535142301013074380419820133190413672212572428476095781855697590992981269974045223785486638733173531369239381887362699000567417791991159639207176177432662607169533803575718624467572452144772728607033970088225282900175 -> 6649903495575087493771153800953242013577961180039294825715918202194499150476079787233663406652222968364362252354240762502617978661038662922733262331646118100984108166924536086333452849695885092699887063761418150639306461176675118215408077899621015915846473405233244980498161913123975518197703425854340616426702694437109878025845512326109951618461458985590879975476585800012874776322341807433988214260227054910347409817529283536125266823702079634388079248386880483269208890693943579691797774134822687353629137294554151538135718438084289761599848683755669444925895723323735128773089825168205026900265063639996642154127713550940387749894386305836520239159650767511265284302953611296989644915506174898626874724649914780591548426436707748279509955263711360123961926166504566481355303194932535142301013074380419820133190413672212572428476095781855697590992981269974045223785486638733173531369239381887362699000567417791991159639207176177432662607169533803575718624467572452144772728607033970088225282900175 +bconv17 baseconv 6996509737946222698867238485076694621072402094269933465387492099143920190430008452426636655634646089930541211959828173942908249372946155950666340823104513423028341919890120057436903702031139750685311557236021391352395003548947349765311587042634256761797972079037345627684387942495896111629633162262050670642880163266515392797316783031120495645608452562147927818125087740040341409692212832018116079662378726408235148798543023397186664678892318065117107346049325182299374158008079604898946210765714053312358673486613834225634180428808852322431968232498746105815007552707092614013713040649910857121689180545859262652255302431621339064799096669259074349938901637338742611849630443991508904205506842943602580668042817746870016056008707055751157074378339256292513649853132024359053663233577846538980614863871469148630959809396046996718160742627778735657199756690312550505304906971080827163200349464601681466034484938492553599162654183170713923036067698101789277789817077614926142926076267939580351751164613 -> 6996509737946222698867238485076694621072402094269933465387492099143920190430008452426636655634646089930541211959828173942908249372946155950666340823104513423028341919890120057436903702031139750685311557236021391352395003548947349765311587042634256761797972079037345627684387942495896111629633162262050670642880163266515392797316783031120495645608452562147927818125087740040341409692212832018116079662378726408235148798543023397186664678892318065117107346049325182299374158008079604898946210765714053312358673486613834225634180428808852322431968232498746105815007552707092614013713040649910857121689180545859262652255302431621339064799096669259074349938901637338742611849630443991508904205506842943602580668042817746870016056008707055751157074378339256292513649853132024359053663233577846538980614863871469148630959809396046996718160742627778735657199756690312550505304906971080827163200349464601681466034484938492553599162654183170713923036067698101789277789817077614926142926076267939580351751164613 +bconv18 baseconv 2116191489308263919842229695571138781766021241069159740738752037964402858674223351204521076524821256755791969175295015726825071758580326486219533321673110521760362531300810374010768467270360551883059931390497457733276857413061518590862834568969071329777624777482160698986908983416052990879749156251779374729403479279235763975000193847000043935597288269667966036560223039666194190128474629654935974693390857486562580101192392344336865753922553121763911200779847981928703530924663154609110960932106742121402848079856596929626043513118690430954732489587924420640003182292969887620959723057268259140753281689542673339334989018519236126840735193611255499741990454998982055551289298915399977830485160133786045165674897211092904631588046969789434726387390025850081843876418781470670389772265799766298216028384685477388376351519666960392987893514723791614620884896648568244970851225259152618635602860192263408161263225316340413871233482525782477895516139728427180060766617995836311771075569755754521011817600 -> 2116191489308263919842229695571138781766021241069159740738752037964402858674223351204521076524821256755791969175295015726825071758580326486219533321673110521760362531300810374010768467270360551883059931390497457733276857413061518590862834568969071329777624777482160698986908983416052990879749156251779374729403479279235763975000193847000043935597288269667966036560223039666194190128474629654935974693390857486562580101192392344336865753922553121763911200779847981928703530924663154609110960932106742121402848079856596929626043513118690430954732489587924420640003182292969887620959723057268259140753281689542673339334989018519236126840735193611255499741990454998982055551289298915399977830485160133786045165674897211092904631588046969789434726387390025850081843876418781470670389772265799766298216028384685477388376351519666960392987893514723791614620884896648568244970851225259152618635602860192263408161263225316340413871233482525782477895516139728427180060766617995836311771075569755754521011817600 +bconv19 baseconv 3657040042388187005449752005773508721366439997895215536309206196053846912612124235946651814867988061086285642444748304248510808131113589460573938621610768020550215610437863758979730599736952685795593974626173569859389589918139817934292825340027189615141761776726092613165279554452207845753530978243066966833901336309557395747038797045769718545056516557961518499578837572752707262714655620719706697257573611516777976662489356063065015549618913961849956103160803527968052164644400918259577486286055618902047069100230870185329523384762479375986191205884796678656663173298967382923840435881655695585395544831070515111803728298446234488834526842163124508944382765785026470495934874129744497219393610952160058482549741625298926474300205119898320251588510907483157020160499964457760009310269992780703907345598149078511197602468887997120082448986866409054761685103267338315908935215667060641522809660805954716651402684172617527591399391859874170975483983020855509846069201137998297873371909477001553808723203 -> 3657040042388187005449752005773508721366439997895215536309206196053846912612124235946651814867988061086285642444748304248510808131113589460573938621610768020550215610437863758979730599736952685795593974626173569859389589918139817934292825340027189615141761776726092613165279554452207845753530978243066966833901336309557395747038797045769718545056516557961518499578837572752707262714655620719706697257573611516777976662489356063065015549618913961849956103160803527968052164644400918259577486286055618902047069100230870185329523384762479375986191205884796678656663173298967382923840435881655695585395544831070515111803728298446234488834526842163124508944382765785026470495934874129744497219393610952160058482549741625298926474300205119898320251588510907483157020160499964457760009310269992780703907345598149078511197602468887997120082448986866409054761685103267338315908935215667060641522809660805954716651402684172617527591399391859874170975483983020855509846069201137998297873371909477001553808723203 +bconv20 baseconv 1907290300779366901668875172193763841989087145111836138769863659204469308435136296787416959119310340505452393350804633310447991517676423170036998132338742466135461248965301062141326103795708839916063047063036192632494906454583674217604242576574267094226403890117973872599991379051480082755531518226394839433698285060291452191292723350752127747720524992813693607046092903905308877425933439510926778650305775042848237025867471460987322373688586656255345989164159354409399460934144745853291332651720120121304556768190072283203161699248244038261036404617128287377578823923303263967968800629523261448086933363365341451104278167418197117594320820097375260567632321120596850440960789648875144459866401734976231298903922816887102453792302823573209977187798936517822870365439650437692621048399349559374424942222932055961494221573113023286117068158511640356530673948373162523061804707818573376705122020437295596158479382403894290215300817040246807634634310157974888632207481833550397293704329123701360403814274 -> 1907290300779366901668875172193763841989087145111836138769863659204469308435136296787416959119310340505452393350804633310447991517676423170036998132338742466135461248965301062141326103795708839916063047063036192632494906454583674217604242576574267094226403890117973872599991379051480082755531518226394839433698285060291452191292723350752127747720524992813693607046092903905308877425933439510926778650305775042848237025867471460987322373688586656255345989164159354409399460934144745853291332651720120121304556768190072283203161699248244038261036404617128287377578823923303263967968800629523261448086933363365341451104278167418197117594320820097375260567632321120596850440960789648875144459866401734976231298903922816887102453792302823573209977187798936517822870365439650437692621048399349559374424942222932055961494221573113023286117068158511640356530673948373162523061804707818573376705122020437295596158479382403894290215300817040246807634634310157974888632207481833550397293704329123701360403814274 +bconv21 baseconv 8328412344011357368290367522944439229409032228696578744651361596318999532108496171340817772581187387192418173158023347185481222055504397931495197777675780884698581348970769415719832334622554398689409623552828941950609808268247216338490168096836094778633394505288615107212721305045534758642753310373006413602629581180049118640023923877038380750468854335183575949093581005089379756478505487068462160099587767722454601624199095499753921546299936767762788071699069263568742532752237287172744750544171703951332022145813717793646206441639319365228865360965994579774363994171221712456133645368925794338746222938853603217313375705740738044103090276908803879718484581435424599650193398252323358235503208373675412086437184679679451678025933986993311321848436400383152155583674981369799366426975966215456068347642477142985913367820490341330688486585340535111257130535692049654058846836932550781187779455705941675984957765321261124949399497002051458474561284647792408852165320773973140760472304867880225855389417 -> 8328412344011357368290367522944439229409032228696578744651361596318999532108496171340817772581187387192418173158023347185481222055504397931495197777675780884698581348970769415719832334622554398689409623552828941950609808268247216338490168096836094778633394505288615107212721305045534758642753310373006413602629581180049118640023923877038380750468854335183575949093581005089379756478505487068462160099587767722454601624199095499753921546299936767762788071699069263568742532752237287172744750544171703951332022145813717793646206441639319365228865360965994579774363994171221712456133645368925794338746222938853603217313375705740738044103090276908803879718484581435424599650193398252323358235503208373675412086437184679679451678025933986993311321848436400383152155583674981369799366426975966215456068347642477142985913367820490341330688486585340535111257130535692049654058846836932550781187779455705941675984957765321261124949399497002051458474561284647792408852165320773973140760472304867880225855389417 +bconv22 baseconv 3315121038768652940226841837053631189007355646557192168697741746644011445033624817385995512923201063642574168250797419031368478058307151407279301815966103873082189098636837520628838577114326829121193713777142906501371351078847040437205965114283690325759508068643058547709123874837372230270155816123290986439667215213492834547149693039386842524862862238608218519477851035441158448519941219447776343525300360515704384334933803837579893117022747558657773292490375981252728912263905250082810734874391494302401911790419857932315996668291676744616309705631968456347189549177461576110195536630394610419034115639346784232281789456099159904848602568218079020991194570834047393672543883052873705792336747276258257811706642737214667938649317459395024679338953204268129881155389186775958574260853719304964487921028029594998601538531171731101589856327194508397584028911542802783359288738613215754262493292449386174119367403622975503466190145175796831773757599253334483168229013517946884835924006753796121456678624 -> 3315121038768652940226841837053631189007355646557192168697741746644011445033624817385995512923201063642574168250797419031368478058307151407279301815966103873082189098636837520628838577114326829121193713777142906501371351078847040437205965114283690325759508068643058547709123874837372230270155816123290986439667215213492834547149693039386842524862862238608218519477851035441158448519941219447776343525300360515704384334933803837579893117022747558657773292490375981252728912263905250082810734874391494302401911790419857932315996668291676744616309705631968456347189549177461576110195536630394610419034115639346784232281789456099159904848602568218079020991194570834047393672543883052873705792336747276258257811706642737214667938649317459395024679338953204268129881155389186775958574260853719304964487921028029594998601538531171731101589856327194508397584028911542802783359288738613215754262493292449386174119367403622975503466190145175796831773757599253334483168229013517946884835924006753796121456678624 +bconv23 baseconv 6804245394199269510260034849949978284687327306683921369181439323876828465556100484976178041716688674305463899900458911076905277468163343462137822632584182743731281984437488681436666726451834179529184078424856695673066640496971437284829916240678022419952687411772136464337324320225373507006271131972344443139360057945368240260971363067201402822727575125099568531251819191664536642544248372067289456726584341697288252957793751361011403471549699801466477354823166069693053656728777101314468017537429026176290497367558839666977995278745969891941831468149748702932620902604503605214651500623972887082337149658187829379376355016799927193548707291452731052528210116066324840524694921179631087998683512916419578405529971986301195979518917420386922728264097722572544898296499789395800327460813295878816222331616588596221312529112368413980403510595503226864025841040537005080129922706121337538857825719544388210087707021436458973221469743142609347923625197028964479981508482347547748024532911494015282509761609 -> 6804245394199269510260034849949978284687327306683921369181439323876828465556100484976178041716688674305463899900458911076905277468163343462137822632584182743731281984437488681436666726451834179529184078424856695673066640496971437284829916240678022419952687411772136464337324320225373507006271131972344443139360057945368240260971363067201402822727575125099568531251819191664536642544248372067289456726584341697288252957793751361011403471549699801466477354823166069693053656728777101314468017537429026176290497367558839666977995278745969891941831468149748702932620902604503605214651500623972887082337149658187829379376355016799927193548707291452731052528210116066324840524694921179631087998683512916419578405529971986301195979518917420386922728264097722572544898296499789395800327460813295878816222331616588596221312529112368413980403510595503226864025841040537005080129922706121337538857825719544388210087707021436458973221469743142609347923625197028964479981508482347547748024532911494015282509761609 +bconv24 baseconv 3686532736301042996488042910928063833489647059297391474122474701750564654110016258961447876266046086834852964908838784834587073241452184635035963961046386305821886799155716293425362673049188661792395475716317976976684769107610705711472976353536366804972042316389741529534690458188594239789604723997641379307797793779518138523424188676397613888973743393771726693858331232740765910599277581866664214078202391294789383117661180484224817280648201737647502698999700953581325303621031625442267785575612996856600367541945211555323989440032278872471874217949251450632203968103482980314632447449153203853357171784778655382011783931470854850604123884194777900839504131153587495521637254979399578885540352544495477433223752505186577601508341374172299226598461655364332506841640420208670096660203392391167006912846780603848291124277608802051055715882837409094312835075322549092043613679068069558022788103362582792012338193726573290684719371733833799193248715968095684163061578300710053097734086131318134072508442 -> 3686532736301042996488042910928063833489647059297391474122474701750564654110016258961447876266046086834852964908838784834587073241452184635035963961046386305821886799155716293425362673049188661792395475716317976976684769107610705711472976353536366804972042316389741529534690458188594239789604723997641379307797793779518138523424188676397613888973743393771726693858331232740765910599277581866664214078202391294789383117661180484224817280648201737647502698999700953581325303621031625442267785575612996856600367541945211555323989440032278872471874217949251450632203968103482980314632447449153203853357171784778655382011783931470854850604123884194777900839504131153587495521637254979399578885540352544495477433223752505186577601508341374172299226598461655364332506841640420208670096660203392391167006912846780603848291124277608802051055715882837409094312835075322549092043613679068069558022788103362582792012338193726573290684719371733833799193248715968095684163061578300710053097734086131318134072508442 +bconv25 baseconv 9806425993239671328964787689608564617574418553508282368444375580341116067815899987605980741331303696938727519029413939870373428052875303489792984890171196972473936801668287197162320517327985197071488157807745918869940805258349578098539677465223440959981935395385316060564419540393298777459389205890799953324298538353919505987331885955502016762413882044537481833192614088945899916184385227531944461676129718921921753347739724401194215163003353869584732936674043658664674098823275556920482819284164873966516006199321915776415829231211413908013546069047895409855580420073719001323986087951105311246597095642947881172848968202435175735519380160089738940599283457821680657206189943586937672628849320700468532705595996038074797550271126672411281331282751684452032124500847395101862340320849995645638709613152547119381445180543376086732985709904442004607047463811239459217966137017602452773783200231982049966238375060398810338741479314473594852526323287888398314240751714108340660375473679080175680982540941 -> 9806425993239671328964787689608564617574418553508282368444375580341116067815899987605980741331303696938727519029413939870373428052875303489792984890171196972473936801668287197162320517327985197071488157807745918869940805258349578098539677465223440959981935395385316060564419540393298777459389205890799953324298538353919505987331885955502016762413882044537481833192614088945899916184385227531944461676129718921921753347739724401194215163003353869584732936674043658664674098823275556920482819284164873966516006199321915776415829231211413908013546069047895409855580420073719001323986087951105311246597095642947881172848968202435175735519380160089738940599283457821680657206189943586937672628849320700468532705595996038074797550271126672411281331282751684452032124500847395101862340320849995645638709613152547119381445180543376086732985709904442004607047463811239459217966137017602452773783200231982049966238375060398810338741479314473594852526323287888398314240751714108340660375473679080175680982540941 +bconv26 baseconv 5916130888921052157563868436065271115971725780622350739858076731106466137697255123313723107278590516969456927830770686259430616477305047671993424735145212659806134287287638001542266925357294137882488836818840569304093986517803426139845072038852269292990680800969209238212679473117880626638045843893226192937862920572923354746205494457476368092131165953754632095472040614753795482618846078204922499068766980579883853147586963630596721642521066731371741755080071899209858124484832480865391717667048153041170504554040212726252583709450749236839364384220162930945690573814746579831780215988682605565267988407477367560243730168405685871433656925714418977440608757588341303558880594720065780582599444281764583014401520157253252207334351799111071355380057269389505231535948957424142627549398508762893929171384459289215449159164498928757202513442408578282203596362868300333913733923522235131526272986498880583818330739060535067111484420019640022198496840864323412417764897401201919435299597412888972729886738 -> 5916130888921052157563868436065271115971725780622350739858076731106466137697255123313723107278590516969456927830770686259430616477305047671993424735145212659806134287287638001542266925357294137882488836818840569304093986517803426139845072038852269292990680800969209238212679473117880626638045843893226192937862920572923354746205494457476368092131165953754632095472040614753795482618846078204922499068766980579883853147586963630596721642521066731371741755080071899209858124484832480865391717667048153041170504554040212726252583709450749236839364384220162930945690573814746579831780215988682605565267988407477367560243730168405685871433656925714418977440608757588341303558880594720065780582599444281764583014401520157253252207334351799111071355380057269389505231535948957424142627549398508762893929171384459289215449159164498928757202513442408578282203596362868300333913733923522235131526272986498880583818330739060535067111484420019640022198496840864323412417764897401201919435299597412888972729886738 +bconv27 baseconv 7275369226125959639152288581118257072486354584593886378635049043920221172449198271838883701950714119646253728366886207200431667633194156185049979953945084319274329428689189570940196597435917503503955733126091393101462333331817625535101453679407634517642160751823322283219139547397583540065078390480388873437631474059635741726218645220222514582640800410149535284105687101924210396486664754344141000519526708507190546015890733341893773711725518795544278775689603064725109311618981653001747651166525191121725854060274403796775730045061561272541678538174953324595712582582966609181850738981313274654973683910198578635364841605686095000492542853598957850649168239127355641352294310703161912533212101994409023855128599075323612962733518940042534688928722761021503474651443122070987854270654460834076028754869251114775457595448695183246026783131165897104690493291655974245507669403553417538538446975373429432818414524762970357885688657753258617452716146032543786726760696399029575673758164951870721717039111 -> 7275369226125959639152288581118257072486354584593886378635049043920221172449198271838883701950714119646253728366886207200431667633194156185049979953945084319274329428689189570940196597435917503503955733126091393101462333331817625535101453679407634517642160751823322283219139547397583540065078390480388873437631474059635741726218645220222514582640800410149535284105687101924210396486664754344141000519526708507190546015890733341893773711725518795544278775689603064725109311618981653001747651166525191121725854060274403796775730045061561272541678538174953324595712582582966609181850738981313274654973683910198578635364841605686095000492542853598957850649168239127355641352294310703161912533212101994409023855128599075323612962733518940042534688928722761021503474651443122070987854270654460834076028754869251114775457595448695183246026783131165897104690493291655974245507669403553417538538446975373429432818414524762970357885688657753258617452716146032543786726760696399029575673758164951870721717039111 +bconv28 baseconv 6936181853903661370294189648248327184827734642073493270422122131281973980787554898303935174911383626495892816275715112673338987288755715868481857300821172506884749192188289982807115712418841300156560406962004223009568721667373354101748696829640867604662898090507583814461683504817651669413529993177123797274962767996915351854056320679498229762727867700522585287428266151756817730538657228416066968330856073220614143749817918368727695675333976756671771168559497265397186285351296289607150944819038053052404298260860833847239961470959510963789777670647424489220427924069052035843610655539573317403576480138140507770258250233937846137745905433789026241541290129894032067761467194927877930901970375621983969081728588244400297449841487055080985108372281612450998413297731552804120065468245488020719508008272467925276208758416542010378563861619491118255936628383662509607074742149818208126190611711579905808043445878961660197452306483614131947589735097400551697760450512428137995480847506688754735583206629 -> 6936181853903661370294189648248327184827734642073493270422122131281973980787554898303935174911383626495892816275715112673338987288755715868481857300821172506884749192188289982807115712418841300156560406962004223009568721667373354101748696829640867604662898090507583814461683504817651669413529993177123797274962767996915351854056320679498229762727867700522585287428266151756817730538657228416066968330856073220614143749817918368727695675333976756671771168559497265397186285351296289607150944819038053052404298260860833847239961470959510963789777670647424489220427924069052035843610655539573317403576480138140507770258250233937846137745905433789026241541290129894032067761467194927877930901970375621983969081728588244400297449841487055080985108372281612450998413297731552804120065468245488020719508008272467925276208758416542010378563861619491118255936628383662509607074742149818208126190611711579905808043445878961660197452306483614131947589735097400551697760450512428137995480847506688754735583206629 +bconv29 baseconv 6598643693280921096277040697343237276354612940998612241915180995498884135486456917941502336856143039655852760319886039890057203623771893671304160111474793308339466148429137395501938619948630730482573531378741497564564478272172826558465171996542010455144732967169803703753153175850488283979722445728025916308259008376565303985907684134811513667076552564501127693845796083868723408308555272045717262999181209882153166393671613963881145827103377487772361618200465096156374703076175272664777364110710702230313312801052930769127495247951688592893534116971268391148600666199131844158004902702590444207540822850471928975467515588814183828088306013611431940021474417877757253302841455495351595543143465513692958962963606252741251648061876917688943307106721157290530319974950613636684454430278850331189346521135177535448718614345941552271157503715618418703044010369802931292837673229022567717006302803135528250568284434770091981809115229562524970028987999906270813570312987067785406168708579050380445152143496 -> 6598643693280921096277040697343237276354612940998612241915180995498884135486456917941502336856143039655852760319886039890057203623771893671304160111474793308339466148429137395501938619948630730482573531378741497564564478272172826558465171996542010455144732967169803703753153175850488283979722445728025916308259008376565303985907684134811513667076552564501127693845796083868723408308555272045717262999181209882153166393671613963881145827103377487772361618200465096156374703076175272664777364110710702230313312801052930769127495247951688592893534116971268391148600666199131844158004902702590444207540822850471928975467515588814183828088306013611431940021474417877757253302841455495351595543143465513692958962963606252741251648061876917688943307106721157290530319974950613636684454430278850331189346521135177535448718614345941552271157503715618418703044010369802931292837673229022567717006302803135528250568284434770091981809115229562524970028987999906270813570312987067785406168708579050380445152143496 +bconv30 baseconv 1004196103346472752674565281340460756966728517262459117954323520421589665427819254142667248662990584242535350070341879422090370943295920871511777118110197784868588411414095230519945091136202145363783889529990295304290900233150081340154309171129047759577137637693000830644427423231541229958760971795349358090445632395232394103411530421494557184062919901350843818778432950317879787413325611976705348300144554688207718145131366219857023385401503395786835765440122315352006748334989418131659627695401721511191840831346883531056207399376758786442181263361990977659310944230849094346885506255005665339603004141435656297078934280499292657930832503603522637716560755051817435846934856130834840354324344976737243935715184209403164420455494024164523600423794139107055254899265022876279581256403089243025870210433900835450349375321300997236945669785889231868991397723295039745819381692990957887095000009927818403461910686945480819856534450846233655354633300191460923627938361343548466791923855656708809373653602 -> 1004196103346472752674565281340460756966728517262459117954323520421589665427819254142667248662990584242535350070341879422090370943295920871511777118110197784868588411414095230519945091136202145363783889529990295304290900233150081340154309171129047759577137637693000830644427423231541229958760971795349358090445632395232394103411530421494557184062919901350843818778432950317879787413325611976705348300144554688207718145131366219857023385401503395786835765440122315352006748334989418131659627695401721511191840831346883531056207399376758786442181263361990977659310944230849094346885506255005665339603004141435656297078934280499292657930832503603522637716560755051817435846934856130834840354324344976737243935715184209403164420455494024164523600423794139107055254899265022876279581256403089243025870210433900835450349375321300997236945669785889231868991397723295039745819381692990957887095000009927818403461910686945480819856534450846233655354633300191460923627938361343548466791923855656708809373653602 +bconv31 baseconv 6752266525911602782261309781182101273913113769485915148140089178958274774606065364647471616727162257211032115563300881118239956504424028638683052023075476886057700162228045438788093014227668254148960390074403458248586810033916508707141095759145754594740061441508007404826827705354166300443543935902562958042346348525597557407385970641687427831021535306457943109637655867177425393712434541225028264700108528124148509580572509801048158964479817437794371869476899571468951093075328706316244378594833011981133468793686815563897806932066916704869658487449478084255890384023679963989773046553602989448081093681804074115952623378079909051486681530374478339690153072449088447631850934413244055912966562232116643709164876283876909834880165297902785336471373481752744050309591967035729193717321345489672215124100912773655784215673962706652767882041886384421822330939545828692146328669692576965861936240738309721988424656215816848239812450750485341730306776309524466777054854468126252423093449386197935663670290 -> 6752266525911602782261309781182101273913113769485915148140089178958274774606065364647471616727162257211032115563300881118239956504424028638683052023075476886057700162228045438788093014227668254148960390074403458248586810033916508707141095759145754594740061441508007404826827705354166300443543935902562958042346348525597557407385970641687427831021535306457943109637655867177425393712434541225028264700108528124148509580572509801048158964479817437794371869476899571468951093075328706316244378594833011981133468793686815563897806932066916704869658487449478084255890384023679963989773046553602989448081093681804074115952623378079909051486681530374478339690153072449088447631850934413244055912966562232116643709164876283876909834880165297902785336471373481752744050309591967035729193717321345489672215124100912773655784215673962706652767882041886384421822330939545828692146328669692576965861936240738309721988424656215816848239812450750485341730306776309524466777054854468126252423093449386197935663670290 +bconv32 baseconv 440257917310780857842885050379591596012036075071213321710948182473797857890030997135164519948347083742128114102407556300875737799780983942275954183063508915004952641113089072574255715897435224666678088129934983100393646248642715641003835014095502488063163943515735856096516326899705087514043632089486677424850306124503171834727275480343810326376593169392613877217949967881808319658787776776410711077590418512166345281650507834288980598016546605895203557155833554212440539414924697400487262258073768695629532591738713885342105556162405739880555951241630882786848561713953645293528153133509469619926532391448370511408130948529847493950976604742114277098648699436364503379391395909014535547756482651213882176818652911095524223923379596043074976709227531637518950502491681028014655168923801167906611729976386248768730674233570453750272640489228917425890079918437257960524790011173183448589629729179813335509345969256152080935282235527666763612946752944717359262890145332816666206536522986834929857422656 -> 440257917310780857842885050379591596012036075071213321710948182473797857890030997135164519948347083742128114102407556300875737799780983942275954183063508915004952641113089072574255715897435224666678088129934983100393646248642715641003835014095502488063163943515735856096516326899705087514043632089486677424850306124503171834727275480343810326376593169392613877217949967881808319658787776776410711077590418512166345281650507834288980598016546605895203557155833554212440539414924697400487262258073768695629532591738713885342105556162405739880555951241630882786848561713953645293528153133509469619926532391448370511408130948529847493950976604742114277098648699436364503379391395909014535547756482651213882176818652911095524223923379596043074976709227531637518950502491681028014655168923801167906611729976386248768730674233570453750272640489228917425890079918437257960524790011173183448589629729179813335509345969256152080935282235527666763612946752944717359262890145332816666206536522986834929857422656 +bconv33 baseconv 3621353659591906193508941253810506896901678343406310586994856313276653053044386287410607428317762846139129646965927449071502639869626408112761769728810904723010711845307914540552831499388815737207970770478797091482893485028243111795169729965554644305570976708388224925905702090112713699364147913641836531255143839947328484917942851975474838601541072125493686621084842258302052974571531215761432665069667504883053907461979969327201761124150368219635334419889799232992470439818171770840319533327219243806435915181225632660122600753485358227736681953614421734470723800561505404821108000842734274203713769000101632463457496443596861734020146282331400706437025446606691234423844959336358952705559868999324825139751226070870320775500819979806400494646682955514937244456822634567159242800461859730120499375643589320058157821284995810648062296525351884262824645523112359005602442729090064605796280713419223146575889922011828760185428898948751655444812589600293065062945975081449295839799302808126472998975032 -> 3621353659591906193508941253810506896901678343406310586994856313276653053044386287410607428317762846139129646965927449071502639869626408112761769728810904723010711845307914540552831499388815737207970770478797091482893485028243111795169729965554644305570976708388224925905702090112713699364147913641836531255143839947328484917942851975474838601541072125493686621084842258302052974571531215761432665069667504883053907461979969327201761124150368219635334419889799232992470439818171770840319533327219243806435915181225632660122600753485358227736681953614421734470723800561505404821108000842734274203713769000101632463457496443596861734020146282331400706437025446606691234423844959336358952705559868999324825139751226070870320775500819979806400494646682955514937244456822634567159242800461859730120499375643589320058157821284995810648062296525351884262824645523112359005602442729090064605796280713419223146575889922011828760185428898948751655444812589600293065062945975081449295839799302808126472998975032 +bconv34 baseconv 308795464510742559038105298998650304693743855190451369231852174029328147828968019648350478584774581215554346346526918171844510869198854254166843295074260340042544887166276876664752431549556107161510308500274009980876373166522982913840289527272231992347198001534349937259004557053378162709310644857639945270377504295414585529256963273256200779045365018036677454863035987215261988585637704991785837763798523983570544859576027424083994485787713082684449909069205930527190273288743083638328440085526809509431265121686599742496560540770977709747428376682194491019161559113803649831195695072597665413143218109307104138026431080332613297706716914987105375345654626687427798906556292847453594207675937769058998973367887583511032056963246095438264673043664061258189467479914955392559746430546324500326847830808190047702458062622776247297602194170423483162848016170210879216185544107801209608310208624210118062804148867599052086976867844545621306890327314696328264871352243288884669295810429126150722004356038 -> 308795464510742559038105298998650304693743855190451369231852174029328147828968019648350478584774581215554346346526918171844510869198854254166843295074260340042544887166276876664752431549556107161510308500274009980876373166522982913840289527272231992347198001534349937259004557053378162709310644857639945270377504295414585529256963273256200779045365018036677454863035987215261988585637704991785837763798523983570544859576027424083994485787713082684449909069205930527190273288743083638328440085526809509431265121686599742496560540770977709747428376682194491019161559113803649831195695072597665413143218109307104138026431080332613297706716914987105375345654626687427798906556292847453594207675937769058998973367887583511032056963246095438264673043664061258189467479914955392559746430546324500326847830808190047702458062622776247297602194170423483162848016170210879216185544107801209608310208624210118062804148867599052086976867844545621306890327314696328264871352243288884669295810429126150722004356038 +bconv35 baseconv 3726041560049006100163654455361941980588163637178625105040559810885265380853813660755795711159298663467502626939222207455776795011811588610725154667543293197865938235542423513004592889500903010573131092713197355793748384727271457585762087222467902810692695066088946860190086424091368150998598721211997257258125099799695191062205677399589742762903614733724680506773107185389405135718823311577607460101130575571498689138483313979792716858273984958318873410404523131884127872978608469487246944318221630200531908398278759310750307522599435665413739802758837182408478435577094399398384171679115775374798853208413837531844250684213948710739334653310823586014699507016691503283407741922804931865316127810210802323179207376593083151896740283801318867157189804347717098485324711798062857615642593358118168628921529175536682368036235022730428002163355353145571774505431895087068942661973353226557773935384585568337201959332169325578170719928539232910297892668474764498160502445962630055590605297452391791541743 -> 3726041560049006100163654455361941980588163637178625105040559810885265380853813660755795711159298663467502626939222207455776795011811588610725154667543293197865938235542423513004592889500903010573131092713197355793748384727271457585762087222467902810692695066088946860190086424091368150998598721211997257258125099799695191062205677399589742762903614733724680506773107185389405135718823311577607460101130575571498689138483313979792716858273984958318873410404523131884127872978608469487246944318221630200531908398278759310750307522599435665413739802758837182408478435577094399398384171679115775374798853208413837531844250684213948710739334653310823586014699507016691503283407741922804931865316127810210802323179207376593083151896740283801318867157189804347717098485324711798062857615642593358118168628921529175536682368036235022730428002163355353145571774505431895087068942661973353226557773935384585568337201959332169325578170719928539232910297892668474764498160502445962630055590605297452391791541743 +bconv36 baseconv 763910724292309486516326277415854118225332049044437015134006833421469612314738033380784731115337197371458681732393523523977599341492606588701422401444374099743578325687621481298789249783813593008548957814059579674887052565189633811888734731294529006436394504452875849915536743426289217024314215755563306884820438175200596397389213836073383556123392632828286911984646171313551189151600580667052605459246569857270359810232738347701166670513010038433944221388753438297395674031133204029575385667008503448682719455099422999994547982773975330618517861295624322461680941813568600806651446117610272011337588720333583866174530342054384298950397765080640768756053011763658354928222772680992044693112829645713742568148323121041527304157173121879422852240330978621677863034185799507545331453179012913449978214038546427613102912784362561820125841308606071796434962184879177846617529826432949065643809170390888677631530384588577149287816456390895559878277577380494507459146979906567844463858286613737185207131233 -> 763910724292309486516326277415854118225332049044437015134006833421469612314738033380784731115337197371458681732393523523977599341492606588701422401444374099743578325687621481298789249783813593008548957814059579674887052565189633811888734731294529006436394504452875849915536743426289217024314215755563306884820438175200596397389213836073383556123392632828286911984646171313551189151600580667052605459246569857270359810232738347701166670513010038433944221388753438297395674031133204029575385667008503448682719455099422999994547982773975330618517861295624322461680941813568600806651446117610272011337588720333583866174530342054384298950397765080640768756053011763658354928222772680992044693112829645713742568148323121041527304157173121879422852240330978621677863034185799507545331453179012913449978214038546427613102912784362561820125841308606071796434962184879177846617529826432949065643809170390888677631530384588577149287816456390895559878277577380494507459146979906567844463858286613737185207131233 +bconv37 baseconv 6411515545958508267730136820938002132508113759229495199541247104652604001059503338423976623452921787201156579581245598712866600199256520892211613414354436773279725384056227551456716358240653787674886753611647804186156853394862677853883332950900858273796500908751310696781256567131321998751357135507574514934672253934561944097811057342562882728600292526208941005701647200982238969900527040553971916032470069621890311699244595775579274839171496623843703670477165252423039634230051398552931354740090014182115836248477494264811315743487512372128756187403475153215582621466879547337803845868875677218447608584482034647674131040792972430980450078326214504048353860255244997647483297098048146469661610342026041301338514520321898973465757980269641911105381237851746688386235286919802211717729068835066589934638629523970293932883686360753917368800885117185991325557106614847018755355002701644869414562432732066345711871930472851440718916540312613617566701117164697552724160814098257993080941501402572355655342 -> 6411515545958508267730136820938002132508113759229495199541247104652604001059503338423976623452921787201156579581245598712866600199256520892211613414354436773279725384056227551456716358240653787674886753611647804186156853394862677853883332950900858273796500908751310696781256567131321998751357135507574514934672253934561944097811057342562882728600292526208941005701647200982238969900527040553971916032470069621890311699244595775579274839171496623843703670477165252423039634230051398552931354740090014182115836248477494264811315743487512372128756187403475153215582621466879547337803845868875677218447608584482034647674131040792972430980450078326214504048353860255244997647483297098048146469661610342026041301338514520321898973465757980269641911105381237851746688386235286919802211717729068835066589934638629523970293932883686360753917368800885117185991325557106614847018755355002701644869414562432732066345711871930472851440718916540312613617566701117164697552724160814098257993080941501402572355655342 +bconv38 baseconv 5174625584624399635838288474476124397203760920636997516118656069770822728294082492749226425608179967823341292123482520809599475995961416113033204588016354020749821257912770919045988476305124209613472190297598127117952435245070935995641443376127236275350158995712787426025492880516833993243056798578723222753765722871885579054282326817290307376724619125441999533393789689705173855158158930760119922239168783730127869648192538407984164482676536809333697348211617179165038177483255555747615585517167803897732394711264086748006469378716987797942387530452026798925622800651506758418722360064878321021237013720855453530839943553473628728898348109463323514238893536755093404757558600965373824422388594361035338899020856603579660866317948378744107552202155377928382155890911406870308625158970319654836274702831571102104395558006228709138525329337571500762473089961969115532087500298686625626553303153317111271265731670675591997951887513670696164727380539163706011247089942921882843877808412750098421753752774 -> 5174625584624399635838288474476124397203760920636997516118656069770822728294082492749226425608179967823341292123482520809599475995961416113033204588016354020749821257912770919045988476305124209613472190297598127117952435245070935995641443376127236275350158995712787426025492880516833993243056798578723222753765722871885579054282326817290307376724619125441999533393789689705173855158158930760119922239168783730127869648192538407984164482676536809333697348211617179165038177483255555747615585517167803897732394711264086748006469378716987797942387530452026798925622800651506758418722360064878321021237013720855453530839943553473628728898348109463323514238893536755093404757558600965373824422388594361035338899020856603579660866317948378744107552202155377928382155890911406870308625158970319654836274702831571102104395558006228709138525329337571500762473089961969115532087500298686625626553303153317111271265731670675591997951887513670696164727380539163706011247089942921882843877808412750098421753752774 +bconv39 baseconv 7163208824566942977148218402930665660687663125682202746391322700451342684941566945643962889878419371252587344191345409455421121862651441157094908122925603939811167255761501922529836164615866567730468003310641456683341227651215776783897261497424016815324650946620339823790757441162270394866242291053815472270918011381537885273997769204549005774733404245486598255591383194160320079197797897693672093342666584962497804702941491250327871060069405925739060917907264492564780120205604616939835556738392439582254619242199495859638526568262688928557403773788067344563251627306375519890338119135501231541471040146227738143000270536117844518543070033436884725515914035040465388084072126791625912299970445080530456380568877946496791520184904260387723710591569546944563044373730264833705711849508322878263146853245514784344288908926879315686479603681521311639279042773336407962820049615921728704542808741590678969226396640480579282556933457717117196373661806557610103528779614190574603333706950356767595599919390 -> 7163208824566942977148218402930665660687663125682202746391322700451342684941566945643962889878419371252587344191345409455421121862651441157094908122925603939811167255761501922529836164615866567730468003310641456683341227651215776783897261497424016815324650946620339823790757441162270394866242291053815472270918011381537885273997769204549005774733404245486598255591383194160320079197797897693672093342666584962497804702941491250327871060069405925739060917907264492564780120205604616939835556738392439582254619242199495859638526568262688928557403773788067344563251627306375519890338119135501231541471040146227738143000270536117844518543070033436884725515914035040465388084072126791625912299970445080530456380568877946496791520184904260387723710591569546944563044373730264833705711849508322878263146853245514784344288908926879315686479603681521311639279042773336407962820049615921728704542808741590678969226396640480579282556933457717117196373661806557610103528779614190574603333706950356767595599919390 +bconv40 baseconv 2442590512156701117031630849457190212515631854179642736927154149600700440091117348527893566301678725981445363707396308072362064192627996877900528379016271258485843917542590411330025226643520492807062043420095626267157212566054324457494027542423685584382725824987540264001060298472929399840148814277659779127514160521181701323428366451327159041320060056644755701962798811149306267781505838684110713067807827509356119600772484650829145745413269832979319281624763361480271814777357901600682023418709682284211749387582567399379397894854112063802397034107651634935041161377371024226477566190149557354212812482218568577263412802676072092824438826362788106625345066467727789258460551135902116876188425340113639931692913189919664142663638442724316612310664449136896951677550235918642162995049238264029634858046113401242567900047528060555287619662603681746132789103481894743474202147194118888177102446780097884374766335791538166576730272590064349313778412822102656012833524867720436833594297581407086029085112 -> 2442590512156701117031630849457190212515631854179642736927154149600700440091117348527893566301678725981445363707396308072362064192627996877900528379016271258485843917542590411330025226643520492807062043420095626267157212566054324457494027542423685584382725824987540264001060298472929399840148814277659779127514160521181701323428366451327159041320060056644755701962798811149306267781505838684110713067807827509356119600772484650829145745413269832979319281624763361480271814777357901600682023418709682284211749387582567399379397894854112063802397034107651634935041161377371024226477566190149557354212812482218568577263412802676072092824438826362788106625345066467727789258460551135902116876188425340113639931692913189919664142663638442724316612310664449136896951677550235918642162995049238264029634858046113401242567900047528060555287619662603681746132789103481894743474202147194118888177102446780097884374766335791538166576730272590064349313778412822102656012833524867720436833594297581407086029085112 +bconv41 baseconv 1462596005916429283054005263808163790493085277256453231136362550444441480911829345109591443209796206205996143605788272858462497102864836795580099108512867538985462460363572315797203463773416440512322096023170114565728430816931447392396454835561720670509142744287685313449298723358830190249313246457363242751828143859005804986813506198858810729333044170595730067552746331339779262417663260428610802775987697888879236785196789738964310600898237498919472772068139976011639976778386479608473763074300198139260661071265553356985348605590760754943853558347054379167855134033261973633120450687421999069146171053425998897271329228658178816747182297407815193265700669387893404841784049557008406972044325991980080200988020008211292852743534484626844455596854632964242521958009293964957224894494458576450042252938179217444854374907750450945728230867014663890313627130176356366699203739386867786915282879269309616437139780723092928085008432838059345028268923873475499721481787352411901385169430155594273302889117 -> 1462596005916429283054005263808163790493085277256453231136362550444441480911829345109591443209796206205996143605788272858462497102864836795580099108512867538985462460363572315797203463773416440512322096023170114565728430816931447392396454835561720670509142744287685313449298723358830190249313246457363242751828143859005804986813506198858810729333044170595730067552746331339779262417663260428610802775987697888879236785196789738964310600898237498919472772068139976011639976778386479608473763074300198139260661071265553356985348605590760754943853558347054379167855134033261973633120450687421999069146171053425998897271329228658178816747182297407815193265700669387893404841784049557008406972044325991980080200988020008211292852743534484626844455596854632964242521958009293964957224894494458576450042252938179217444854374907750450945728230867014663890313627130176356366699203739386867786915282879269309616437139780723092928085008432838059345028268923873475499721481787352411901385169430155594273302889117 +bconv42 baseconv 6003440810579011357507045403594805569479648469548145659676314975675693669555605403166849635619463768037287447283683759357892495488674382913703398731670134123141633248425059632858763785915841384370326798634937968413231654866526023610017045668366783935939450996424348449643388869278053038184741175697746596458028747658017251818090466912148886719813072540787397893148925658020888581382326398733953832989597079154000589107618102335200280135656609005288720668870933525199198931539113380157211442403200039476461777632567144891933528540531448462768277557245603834570087318563441866125250097881324642417557294031750278828906131619039336845594064848455503179335543707564986761779010789905209005665864612210671498279664536789564345869843664582285468055022400799042951851597918357849630840726094858848176940153919452364777054495261694861761379110185958789742113858039058125576792142784114673447347031879914005772415291291687621557738375491780919053257837439454060608958364580485351551249595826247169397001297650 -> 6003440810579011357507045403594805569479648469548145659676314975675693669555605403166849635619463768037287447283683759357892495488674382913703398731670134123141633248425059632858763785915841384370326798634937968413231654866526023610017045668366783935939450996424348449643388869278053038184741175697746596458028747658017251818090466912148886719813072540787397893148925658020888581382326398733953832989597079154000589107618102335200280135656609005288720668870933525199198931539113380157211442403200039476461777632567144891933528540531448462768277557245603834570087318563441866125250097881324642417557294031750278828906131619039336845594064848455503179335543707564986761779010789905209005665864612210671498279664536789564345869843664582285468055022400799042951851597918357849630840726094858848176940153919452364777054495261694861761379110185958789742113858039058125576792142784114673447347031879914005772415291291687621557738375491780919053257837439454060608958364580485351551249595826247169397001297650 +bconv43 baseconv 1930892885265622374044276870708337676283054679224386140053737953615882043569381134303993837045456520856063047650681085219439772289937295606119679527330113425798200499528366612606121904949118540780503011582572413765829037353442053804510263297888686630112839583898430467193615188808253166230639918940163923079913258367053098008008173327297371624183766421877813335411189617019649376072615805990005572079758249229689651653372624609354711132895085329722336426040525879603161827164960280164963826549155566469261174705834914448951779376194003732655331797515490820674887867133338858007686956496864655359146346438455899180907824046602740623937279566625725396576115363574082270342406526226783556135822375085497434833101313279873573516807009956992364962667056138144871066089118413655606360609484287233946958758510470849284132404254082493410759636089433559684148907763897378324494293431521337570825568677336980158347725143065207700294931436564337134040121552210547924978034399816125896806583156081026937672968723 -> 1930892885265622374044276870708337676283054679224386140053737953615882043569381134303993837045456520856063047650681085219439772289937295606119679527330113425798200499528366612606121904949118540780503011582572413765829037353442053804510263297888686630112839583898430467193615188808253166230639918940163923079913258367053098008008173327297371624183766421877813335411189617019649376072615805990005572079758249229689651653372624609354711132895085329722336426040525879603161827164960280164963826549155566469261174705834914448951779376194003732655331797515490820674887867133338858007686956496864655359146346438455899180907824046602740623937279566625725396576115363574082270342406526226783556135822375085497434833101313279873573516807009956992364962667056138144871066089118413655606360609484287233946958758510470849284132404254082493410759636089433559684148907763897378324494293431521337570825568677336980158347725143065207700294931436564337134040121552210547924978034399816125896806583156081026937672968723 +bconv44 baseconv 2128227718880978172629569009101386129143469234047390236985319375081177949255510453146383788406609947830533487946455389647682136675926151876852531056245602176864341646343141309108774297708682259144074848037053716758025297456975761252357335049185823413855793719540456150689763418336345199422245944040220946851227237340366200429484312712081027397321613346477994953512662199783059086828893414729699164757569347048637823566802714179220106095037167923898922319932535318738314133649360497390557153842876264288428047914295018316303728959460861503574522265258336207538910569918423404057814212814078255301175332947024499579836359543804035693201050965026371115670432220956677786149554262014180333503694551658670391204832002197527472206767629703047951711058347082547942544644031172338316258574999017084310088218727010871325879665511714828811142409366445563656896405327456802775618122951317858799233671931686432030388516513809176520437516753761846046491224541379217318649959162716304211059558486737090124874713619 -> 2128227718880978172629569009101386129143469234047390236985319375081177949255510453146383788406609947830533487946455389647682136675926151876852531056245602176864341646343141309108774297708682259144074848037053716758025297456975761252357335049185823413855793719540456150689763418336345199422245944040220946851227237340366200429484312712081027397321613346477994953512662199783059086828893414729699164757569347048637823566802714179220106095037167923898922319932535318738314133649360497390557153842876264288428047914295018316303728959460861503574522265258336207538910569918423404057814212814078255301175332947024499579836359543804035693201050965026371115670432220956677786149554262014180333503694551658670391204832002197527472206767629703047951711058347082547942544644031172338316258574999017084310088218727010871325879665511714828811142409366445563656896405327456802775618122951317858799233671931686432030388516513809176520437516753761846046491224541379217318649959162716304211059558486737090124874713619 +bconv45 baseconv 7112587341013296417883245182232309783033995891092827757735876586944732473748852580345349727993045804248235460727849956179351797880089092025905050220767567285788610972388919790514222434712795678499763686954349499281233857416743630743869400345495572042052411489134144398206084278219131423706940555811702842830805369366275914731128575866358256373239221396704487315057967528991822896730011283375924641204237077417754943121107202767085963141560239532697411010265224271452605423395383338254654603950322214155932723380004506694999620298247780633960338603844429486610040620953645606117414661494286718975579038062506022214247012470633767236546689354833800031601104523742558795104907734575644657628841467033297753882104056251390806528769232910604156190689097743027105720795902968216955803157762556227964539497343869985712107305303563757051687019953021473872487217729507570616444319917712343886700447518225671217138499687269609878420165040533953524324115454492503091456814698467434773089473777616514837129305594 -> 7112587341013296417883245182232309783033995891092827757735876586944732473748852580345349727993045804248235460727849956179351797880089092025905050220767567285788610972388919790514222434712795678499763686954349499281233857416743630743869400345495572042052411489134144398206084278219131423706940555811702842830805369366275914731128575866358256373239221396704487315057967528991822896730011283375924641204237077417754943121107202767085963141560239532697411010265224271452605423395383338254654603950322214155932723380004506694999620298247780633960338603844429486610040620953645606117414661494286718975579038062506022214247012470633767236546689354833800031601104523742558795104907734575644657628841467033297753882104056251390806528769232910604156190689097743027105720795902968216955803157762556227964539497343869985712107305303563757051687019953021473872487217729507570616444319917712343886700447518225671217138499687269609878420165040533953524324115454492503091456814698467434773089473777616514837129305594 +bconv46 baseconv 9699288818276549854335689312945720612571723333931837850529527838873671037566723448610470079396905442950474748706261218079965212657261363655245609034355289244097850206849861185177403434574663556540080597408594579455205712986685487089063400429329730101790849132445713357615860421911863085671131257406207115244013612859267252279732772534348928722883003176038407444582875372461733415683919034177576403950680584882467523210858382654713352234314791425722801777115064170561469572261573844372912528339829198527630890035503396746623001614611640932670232575753384499266601465252231641070361581852054970601407304902021418332566990260912846249837163861932304560797307269825128659595763262962299723570449585845050624429301701413517396256479143720522301033345949704239045155777395853731596108617475273683187458065030875232370157646494259806603125903365610269141807735679317778141172544543397902942704682859135824741836177986154805397512883137015835421200052821416178485135192529026808448820444527873359559175547176 -> 9699288818276549854335689312945720612571723333931837850529527838873671037566723448610470079396905442950474748706261218079965212657261363655245609034355289244097850206849861185177403434574663556540080597408594579455205712986685487089063400429329730101790849132445713357615860421911863085671131257406207115244013612859267252279732772534348928722883003176038407444582875372461733415683919034177576403950680584882467523210858382654713352234314791425722801777115064170561469572261573844372912528339829198527630890035503396746623001614611640932670232575753384499266601465252231641070361581852054970601407304902021418332566990260912846249837163861932304560797307269825128659595763262962299723570449585845050624429301701413517396256479143720522301033345949704239045155777395853731596108617475273683187458065030875232370157646494259806603125903365610269141807735679317778141172544543397902942704682859135824741836177986154805397512883137015835421200052821416178485135192529026808448820444527873359559175547176 +bconv47 baseconv 6012799035139312429408326100257968664231666805057439792483213815042270918792694072622746198116690858047740979869592179482969378755405781085012423013173159696912201318596213081729955668285664859222243423381961343546392744009362817402886453764593862659023853506617447213980074759411478539726305201023070687695279666917686153683068397131632283986621757986801671184822751122332173509257168047679456674846132812446247797046271167539796175037555388918845918920571997379903940944779260648853602433108445980296135729084763891100633805693090404443549368445317362362032070826663170050830091349576633574615281516156191698366157107533728535833879382481125878664850322681467757166471946133948443770671926735438131535304787064914914618089457619620184797550793853420182857316190339257471208275157532556031228171503075040002707917871856288915141013737178161590777415951604123532905781111565862521604155127860595697415897753828827196258455318546805457423115266536992316405693037520374676817264538718440628427782624090 -> 6012799035139312429408326100257968664231666805057439792483213815042270918792694072622746198116690858047740979869592179482969378755405781085012423013173159696912201318596213081729955668285664859222243423381961343546392744009362817402886453764593862659023853506617447213980074759411478539726305201023070687695279666917686153683068397131632283986621757986801671184822751122332173509257168047679456674846132812446247797046271167539796175037555388918845918920571997379903940944779260648853602433108445980296135729084763891100633805693090404443549368445317362362032070826663170050830091349576633574615281516156191698366157107533728535833879382481125878664850322681467757166471946133948443770671926735438131535304787064914914618089457619620184797550793853420182857316190339257471208275157532556031228171503075040002707917871856288915141013737178161590777415951604123532905781111565862521604155127860595697415897753828827196258455318546805457423115266536992316405693037520374676817264538718440628427782624090 +bconv48 baseconv 9919394750026539849552058455142940324804986571394146734628754344884646129540400337188573364384561996629039095484437976838304650267728321324191047492663324697670111224036571949665757517933624370846329296385209317493614452164214622795872352397017525424549137284622743275020996362070081098391439474505221996370196413894684409813360621865922609919658943625701299246634886899150971300063436178595755371976507876544993206828666232702345634907634016774125072429477776468884933618770823018417034257551062282973819554186921879150158146766003769219942048692257272315579679979987502091101699905187309180177277825457017735666405381257212572932433565510486149731214728374524199255191936645406037686369644679402896649555424732277973558272877575566703028017795012846122920442198905343668575803772622886054047408712883224036607929724589831999397971347481661567991667748120359375944349813628143741283558304215254421311864953294659525889872672012252796647940635491318957571904128683274444276904072274816298139561026992 -> 9919394750026539849552058455142940324804986571394146734628754344884646129540400337188573364384561996629039095484437976838304650267728321324191047492663324697670111224036571949665757517933624370846329296385209317493614452164214622795872352397017525424549137284622743275020996362070081098391439474505221996370196413894684409813360621865922609919658943625701299246634886899150971300063436178595755371976507876544993206828666232702345634907634016774125072429477776468884933618770823018417034257551062282973819554186921879150158146766003769219942048692257272315579679979987502091101699905187309180177277825457017735666405381257212572932433565510486149731214728374524199255191936645406037686369644679402896649555424732277973558272877575566703028017795012846122920442198905343668575803772622886054047408712883224036607929724589831999397971347481661567991667748120359375944349813628143741283558304215254421311864953294659525889872672012252796647940635491318957571904128683274444276904072274816298139561026992 +bconv49 baseconv 9233174483737664461625491046802593032578513416662868428994454671378779885631770646941186092718999934888583814715078081648273971810519569902944988673898344036411072326423644291415014771543710084101170197629453857189931052534827770762365497154770603400348185449568970993183249727025554733171076452528668427455303649865923792513669598337391437655324765818931261843079215552927774686787228690905262330190342601372125213353984288927685907074288555016734268380281858164038900625101200147614610331209521799116234489953907220176353809588001367624586415959134731122658518092822318659909563698161843077449455322965542971382450698296201138028978284392955864602626064490594872745888896108166301294814816943809622727265685427875062812097156800905035015577685504710899621905621276607080768286942946472561061238087950967465213808137167802398460211175386983617931863300945063575271565521877968104325881605480106370465224713852826459139171485188400225500972039078132716184835809441358637096071619898150348255381588795 -> 9233174483737664461625491046802593032578513416662868428994454671378779885631770646941186092718999934888583814715078081648273971810519569902944988673898344036411072326423644291415014771543710084101170197629453857189931052534827770762365497154770603400348185449568970993183249727025554733171076452528668427455303649865923792513669598337391437655324765818931261843079215552927774686787228690905262330190342601372125213353984288927685907074288555016734268380281858164038900625101200147614610331209521799116234489953907220176353809588001367624586415959134731122658518092822318659909563698161843077449455322965542971382450698296201138028978284392955864602626064490594872745888896108166301294814816943809622727265685427875062812097156800905035015577685504710899621905621276607080768286942946472561061238087950967465213808137167802398460211175386983617931863300945063575271565521877968104325881605480106370465224713852826459139171485188400225500972039078132716184835809441358637096071619898150348255381588795 +bconv50 baseconv 4773658278267840002596036440176553049013426168298463110992745530786499996857199722504465481275650863282552047289724105114259623114005344649606813472938151621041967905622779312365722730289368336279925000458546320360056506069925427256580562634411935582542300196189152299314961795119325701328593698002218043478211457414754552966763206603095932725768743291305948609920384730358957797020700925464444812450821593661398590529274762767668597215639639084924608296382635924407219898992048052975945795107027548030708406334455622458269822952244015740356221979997678070562061554243501720016988968531585381453053334104779910362463875486237634715139906783301119338089394658517426762218059409611442563091275992906197855105490612045994640670289334486317618559948192751887921347168729185624688493459329011641553734663884742554821014707290494285796089868419253588155541647852437659744082278785414647162099078322033267444285186226158971247217268779735644236987556103812085393444197218249815769366683183205051298829531546 -> 4773658278267840002596036440176553049013426168298463110992745530786499996857199722504465481275650863282552047289724105114259623114005344649606813472938151621041967905622779312365722730289368336279925000458546320360056506069925427256580562634411935582542300196189152299314961795119325701328593698002218043478211457414754552966763206603095932725768743291305948609920384730358957797020700925464444812450821593661398590529274762767668597215639639084924608296382635924407219898992048052975945795107027548030708406334455622458269822952244015740356221979997678070562061554243501720016988968531585381453053334104779910362463875486237634715139906783301119338089394658517426762218059409611442563091275992906197855105490612045994640670289334486317618559948192751887921347168729185624688493459329011641553734663884742554821014707290494285796089868419253588155541647852437659744082278785414647162099078322033267444285186226158971247217268779735644236987556103812085393444197218249815769366683183205051298829531546 +bconv51 baseconv 4094632320924064153761231911482497424314155152945311409551117897660105799751969320171226955014798077982639167608005744221327478580375399026267976689267238211480059795214306669550534361985335416113038520986095059405970306009985490908365755476437328846069538640672353505815812249332294876658407928179340284505072011585167835381010050566490494460274903264966736917232392936579095090524244294501459999891722297108322353817841272816011373661381933022572644403117108688081966160271042655834436305801080916634851382251588543921880768626480132642125936708057518447156537219322320111782473245369234467277066637895823964338340997097539202626954866557695983360175782798393450788228730902161785358425995318732639722818484711563865933227574822771278911983032986071767547298642644476322126039464627551377202504803512892500870402035403985038976381803246692556945361050113256801199120635778734800904433729075919834676133534773946450517427393564388258302574628466258341020331104746426178407338616654459452059342798475 -> 4094632320924064153761231911482497424314155152945311409551117897660105799751969320171226955014798077982639167608005744221327478580375399026267976689267238211480059795214306669550534361985335416113038520986095059405970306009985490908365755476437328846069538640672353505815812249332294876658407928179340284505072011585167835381010050566490494460274903264966736917232392936579095090524244294501459999891722297108322353817841272816011373661381933022572644403117108688081966160271042655834436305801080916634851382251588543921880768626480132642125936708057518447156537219322320111782473245369234467277066637895823964338340997097539202626954866557695983360175782798393450788228730902161785358425995318732639722818484711563865933227574822771278911983032986071767547298642644476322126039464627551377202504803512892500870402035403985038976381803246692556945361050113256801199120635778734800904433729075919834676133534773946450517427393564388258302574628466258341020331104746426178407338616654459452059342798475 +bconv52 baseconv 1195613688712462370161881989925595018995105996850531625209796544182902722193333496655703994623218098757350402402950600588390877213543585813175138154458884174772267583594117191629444294127019377440741892920797253096788840241362167172038198667965230928623364722367646125901761673811034885568702695161278732811884582700694847207660776903749095158752349819697283655239795988638699223941749918908012797892210965773604361822040016295912734277810151708448558789993471291953795386882139051352772553837769661718023417800292552016824846816764941873111114865589826347435137197824596658991275586878913761283282081547885379536437285882792873729874288784602528175738888625608623385170906876256297949136252314631085815621667525299521107807013095240141718850397972742263082543264403546582365503126458148009758981553535042838763563351858626379566066470859529696677757807101362322543604477402978708033954224787673687076159457061279844958619284891322053759905277576341377532876889612956634317541515974021649226322684382 -> 1195613688712462370161881989925595018995105996850531625209796544182902722193333496655703994623218098757350402402950600588390877213543585813175138154458884174772267583594117191629444294127019377440741892920797253096788840241362167172038198667965230928623364722367646125901761673811034885568702695161278732811884582700694847207660776903749095158752349819697283655239795988638699223941749918908012797892210965773604361822040016295912734277810151708448558789993471291953795386882139051352772553837769661718023417800292552016824846816764941873111114865589826347435137197824596658991275586878913761283282081547885379536437285882792873729874288784602528175738888625608623385170906876256297949136252314631085815621667525299521107807013095240141718850397972742263082543264403546582365503126458148009758981553535042838763563351858626379566066470859529696677757807101362322543604477402978708033954224787673687076159457061279844958619284891322053759905277576341377532876889612956634317541515974021649226322684382 +bconv53 baseconv 9499948044070535829617658000073109388317255533160818696004171990892444262466607310445073849981215946633688695059200704326207268272467694691711467087588393758881402434320715744255627690972846993619574537577977178962699161353713899897882183029682903217684523509563381983591114043081050894274344052322317793108904274522259440485781988975321013758944115257129413072546837038124957996751661675596274644497454059997227485645057080907724179993648305437705913134560410868578230840879348358091075170490814100259026828359851846141277765511289021492304068252204856885435121179719724905800150881050023353662023536789236444228860979703993824481841123900294830611488945988856246089733108517317304084609460862729147676217177998497864969056268945139843653602853863265637886328346845623285779260759566732055222069904458152147777699053937960838302815509944344571404628883046719473910600938845106101632722848805019593861914735528570426575802280782817868889233462099542164101168156251956011717993122439249891502735590307 -> 9499948044070535829617658000073109388317255533160818696004171990892444262466607310445073849981215946633688695059200704326207268272467694691711467087588393758881402434320715744255627690972846993619574537577977178962699161353713899897882183029682903217684523509563381983591114043081050894274344052322317793108904274522259440485781988975321013758944115257129413072546837038124957996751661675596274644497454059997227485645057080907724179993648305437705913134560410868578230840879348358091075170490814100259026828359851846141277765511289021492304068252204856885435121179719724905800150881050023353662023536789236444228860979703993824481841123900294830611488945988856246089733108517317304084609460862729147676217177998497864969056268945139843653602853863265637886328346845623285779260759566732055222069904458152147777699053937960838302815509944344571404628883046719473910600938845106101632722848805019593861914735528570426575802280782817868889233462099542164101168156251956011717993122439249891502735590307 +bconv54 baseconv 9681201181288346238161618847971252079317053722777557174860050929517087306003145811583730887554415412269163431310799022759645846508317654822005885690593660193203383584985052675972751012352733288376108146387509156887573116718157199749463765692840989210380774368587807627022401100844443165415781580743816277319667896566395177315449714696435758046861792630882362577222571381967245774608562450349980070290137767329706127528142322516034418205531204936537427350594715389389268666157501423000050981301720365257282545283855204948055125079972651075438323727489171453110884626111787922656372832138247128006763899488284285499432101730775536338063332412034139072744076207749172013795264917873150993264260711793377486271966928067095067225572100261255699461391011000420331725377560660886964853448763697738150442124085830891499994860379939366382720146286282434365772277730713332022886013353980598584107551105313755807966583991388879640960170881288132894265099953913547962938038542484006000610516526113737536843753800 -> 9681201181288346238161618847971252079317053722777557174860050929517087306003145811583730887554415412269163431310799022759645846508317654822005885690593660193203383584985052675972751012352733288376108146387509156887573116718157199749463765692840989210380774368587807627022401100844443165415781580743816277319667896566395177315449714696435758046861792630882362577222571381967245774608562450349980070290137767329706127528142322516034418205531204936537427350594715389389268666157501423000050981301720365257282545283855204948055125079972651075438323727489171453110884626111787922656372832138247128006763899488284285499432101730775536338063332412034139072744076207749172013795264917873150993264260711793377486271966928067095067225572100261255699461391011000420331725377560660886964853448763697738150442124085830891499994860379939366382720146286282434365772277730713332022886013353980598584107551105313755807966583991388879640960170881288132894265099953913547962938038542484006000610516526113737536843753800 +bconv55 baseconv 9131179347186210485354210531777409248283891976203783883553115821608718394283063228562203489420222087084600990598305683322930387205130447096251049481363203196834826757279518719511343992308741248697636433448891267876466457401127568360744155389333217218128820449012892657912424463449376577410301520164080629507138989219074296499522628176569327029008331113882681648558407635554283787639148011707933930752800329014763489669481545570477667563590991337877228940697488891269849643170902977953915538333408880556432346215005831215070180867380833561702241985225082739337224042085880239885734640381830484675976025427641832856929523400894091124961471976444480347814448787528993867409615566713022804642931330884278066080994760159529192295843357999713728956647790190859132479256973735030555572809285144239734673899611474854555418022761308707617796517809089243177699754503820322479457721748975076737681001289558455380655260960564294960096247406484175680073943389491185479014080674905450920168137074522193495576699698 -> 9131179347186210485354210531777409248283891976203783883553115821608718394283063228562203489420222087084600990598305683322930387205130447096251049481363203196834826757279518719511343992308741248697636433448891267876466457401127568360744155389333217218128820449012892657912424463449376577410301520164080629507138989219074296499522628176569327029008331113882681648558407635554283787639148011707933930752800329014763489669481545570477667563590991337877228940697488891269849643170902977953915538333408880556432346215005831215070180867380833561702241985225082739337224042085880239885734640381830484675976025427641832856929523400894091124961471976444480347814448787528993867409615566713022804642931330884278066080994760159529192295843357999713728956647790190859132479256973735030555572809285144239734673899611474854555418022761308707617796517809089243177699754503820322479457721748975076737681001289558455380655260960564294960096247406484175680073943389491185479014080674905450920168137074522193495576699698 +bconv56 baseconv 7698481258094403146365746957977140035675796188881949778279935692808725784247515527819944562646011182663822531793263915434304355340291172618174931130844883140400247300549821476375442490954876902556476720921530658747115171765087488876716545522533746049599568630405953005112902419025791888416044080669819858398123657778169254521282596436578106024316545969926320705196456992531493761155668147188247840593428124249756379938842449859258119623184923042737905971203254863348745747421111929956698767393089978716676780828671351164885913152462462970708833107693224111710452702145778997946491053290885718435918239667278439042874425410167830101967149409121922256716787347830534295885467397602486213807441252894485407823396393272217807341761687939062732449152739912158220633573465017341816078943803097741526255278101589441598502485919872153523958049458445978757638395812408691442581519625719785599517630840215791101031430981383362964880463874948001263987606863863271828983508557349586533621931953310262239703681564 -> 7698481258094403146365746957977140035675796188881949778279935692808725784247515527819944562646011182663822531793263915434304355340291172618174931130844883140400247300549821476375442490954876902556476720921530658747115171765087488876716545522533746049599568630405953005112902419025791888416044080669819858398123657778169254521282596436578106024316545969926320705196456992531493761155668147188247840593428124249756379938842449859258119623184923042737905971203254863348745747421111929956698767393089978716676780828671351164885913152462462970708833107693224111710452702145778997946491053290885718435918239667278439042874425410167830101967149409121922256716787347830534295885467397602486213807441252894485407823396393272217807341761687939062732449152739912158220633573465017341816078943803097741526255278101589441598502485919872153523958049458445978757638395812408691442581519625719785599517630840215791101031430981383362964880463874948001263987606863863271828983508557349586533621931953310262239703681564 +bconv57 baseconv 933060065234974016527711181504861388575102533129269785690302853498231817991947134292360950952101856967471244204652651492419507477989654620300897029910053158332011692601890477477147945347999269327709901969327382754998327046975300678322909722108001744075925483360331204154845618260578492569073508334779352167710947459548176844365443214086024243662366377809095464958025600961255772796769885300359015274605474487418721963066379476080375768055363700277522433801169869102150019595086994654926696439957345818046850460716296421098186533879009817972807294964864576668139398923125135995382958840548745127688451323438746558538934566101891264719832906741260833070035253803704214869788019686954032417776112581957940384236798658123199892655171797413164797100216826009596975610428188835267699359831720631410631897874655923509768303338960725077826723216786174737775813075634307466711571597587069966729884533501458825498058239488183915990645833750784838766328587800878774469119447579906874342772359035662967114904022 -> 933060065234974016527711181504861388575102533129269785690302853498231817991947134292360950952101856967471244204652651492419507477989654620300897029910053158332011692601890477477147945347999269327709901969327382754998327046975300678322909722108001744075925483360331204154845618260578492569073508334779352167710947459548176844365443214086024243662366377809095464958025600961255772796769885300359015274605474487418721963066379476080375768055363700277522433801169869102150019595086994654926696439957345818046850460716296421098186533879009817972807294964864576668139398923125135995382958840548745127688451323438746558538934566101891264719832906741260833070035253803704214869788019686954032417776112581957940384236798658123199892655171797413164797100216826009596975610428188835267699359831720631410631897874655923509768303338960725077826723216786174737775813075634307466711571597587069966729884533501458825498058239488183915990645833750784838766328587800878774469119447579906874342772359035662967114904022 +bconv58 baseconv 8038883002615703704817711911862573631598184532350530435306304742662761818506174740863161107218710591248429474505869142723362424325841608986479857960340812641468931707190856706113567181455663070048287958372239286426769745993344743936462361053162189475316360905577571414784434483605897269253415951627848309488238434241192539532390023707334930322340000989678795699670766612923333981370826878119568603663472145271623717616272357589311783113717275449073067014302505545212079840411851799030366865310043311737018881443143136533978313467111615432603601780757592400884052464821716864423403504520457105469054108324607400721053286538855433939074319618679512117954764457949331315493994536161026129900444056136076609980797546548783741551076295788967514999946510347511692235187508755164405085762930985940197444382124442591154480251201633180499607295170306628565018408429501895249294819056998450607556849233313831723351853975510008950914639767759938908141988175121511842989185772928894936186997526905376566482897707 -> 8038883002615703704817711911862573631598184532350530435306304742662761818506174740863161107218710591248429474505869142723362424325841608986479857960340812641468931707190856706113567181455663070048287958372239286426769745993344743936462361053162189475316360905577571414784434483605897269253415951627848309488238434241192539532390023707334930322340000989678795699670766612923333981370826878119568603663472145271623717616272357589311783113717275449073067014302505545212079840411851799030366865310043311737018881443143136533978313467111615432603601780757592400884052464821716864423403504520457105469054108324607400721053286538855433939074319618679512117954764457949331315493994536161026129900444056136076609980797546548783741551076295788967514999946510347511692235187508755164405085762930985940197444382124442591154480251201633180499607295170306628565018408429501895249294819056998450607556849233313831723351853975510008950914639767759938908141988175121511842989185772928894936186997526905376566482897707 +bconv59 baseconv 3477288854142490731453308883604363698829751766397042638356876850253912557247338116551870168124821056569996127469054311240879102450555238300980462038688068892262081046868630684935628207580363505258992064419769627794897173468730321524808387787706212803483062494226962378618607525039870400474223230921014856338958898766196395346023554116745162253468600784948922588126784720086522242771739618218637975556141323164020918978810455895710128282250206188167283189016982398737778938951187522454071794866807921318653478181070731398786350212822997212049193363719826518933973592933142062520193167778907208306443678518305032512335600961537825398303714858137969205446132451238421168442970087648162807376073119731016520674014003957964377493704707532556500892902334141487232605571926679460386872574429475589785505829312766948386930506654715547070137679370245359252654594742352109687646797295779853417079877636193674529230294434802044049588573118533569908762506547935107248958418026330435976254859127497135719090406579 -> 3477288854142490731453308883604363698829751766397042638356876850253912557247338116551870168124821056569996127469054311240879102450555238300980462038688068892262081046868630684935628207580363505258992064419769627794897173468730321524808387787706212803483062494226962378618607525039870400474223230921014856338958898766196395346023554116745162253468600784948922588126784720086522242771739618218637975556141323164020918978810455895710128282250206188167283189016982398737778938951187522454071794866807921318653478181070731398786350212822997212049193363719826518933973592933142062520193167778907208306443678518305032512335600961537825398303714858137969205446132451238421168442970087648162807376073119731016520674014003957964377493704707532556500892902334141487232605571926679460386872574429475589785505829312766948386930506654715547070137679370245359252654594742352109687646797295779853417079877636193674529230294434802044049588573118533569908762506547935107248958418026330435976254859127497135719090406579 +bconv60 baseconv 2221677747105253129991515895693385979724569432871380145709909530718311585737091713910399124294042457324430994460227074311444159889978483406629658751979986239680446734362375834578888485942564923457487781596423838203566853720781873224044052672664400055133298055288707561289476262511234729770857032076646438500888728322780583472810650158149544948348663360428127471726298380951465255539111140213958366265212137414548632842795281686274550071712160716669612293857952305282110342158240658908386925452263475209078348983063626076468083029240178143711647154226024682823666302924167928636391856500834843184981831601237807608871142898575842709404694094185754791961333009838578605964109011402622847017624478134015740283536363293627429540669280077722066831975856915393445006214492479475917786673418444578474035460021619978830224347366734838082892207246779092722149983149009420076091239392491088817325961950998424399462798695556389318078759893647649874540162041951424428718699396905706394685347502799434450024607265 -> 2221677747105253129991515895693385979724569432871380145709909530718311585737091713910399124294042457324430994460227074311444159889978483406629658751979986239680446734362375834578888485942564923457487781596423838203566853720781873224044052672664400055133298055288707561289476262511234729770857032076646438500888728322780583472810650158149544948348663360428127471726298380951465255539111140213958366265212137414548632842795281686274550071712160716669612293857952305282110342158240658908386925452263475209078348983063626076468083029240178143711647154226024682823666302924167928636391856500834843184981831601237807608871142898575842709404694094185754791961333009838578605964109011402622847017624478134015740283536363293627429540669280077722066831975856915393445006214492479475917786673418444578474035460021619978830224347366734838082892207246779092722149983149009420076091239392491088817325961950998424399462798695556389318078759893647649874540162041951424428718699396905706394685347502799434450024607265 +bconv61 baseconv 6446426203289022446944067871143037197618879166339874942086353847795290392527959325029947698985308278846383220354110601969138538949515123246333393559033666825374012551874900736878906311861971570062529195539956496704084300526582979150268755442065197947576476977166189713910679324122537049102391846344751779647915441175433890634271937654404329151036204407030790779486345967708651224904900903129117720763070841983481288288520372542887040574173556498319598074362332329040146022921765486281866963787213166610242675725213895679450714775512693266280058498003067425875076428907692828653495669685206937799319736371497416359037957424730850136602011598552974929360355776735376606974424054225673374202545263533459147680029943487405708869153706759472899551787354983815693536947175964416495988451139846884463710485969246475516974062004682822653887489507084088674228167842611112165393235719739369051338188836762977960293914749720683073799488793694630490483906002952032073744224976302710045176228512962355488343205725 -> 6446426203289022446944067871143037197618879166339874942086353847795290392527959325029947698985308278846383220354110601969138538949515123246333393559033666825374012551874900736878906311861971570062529195539956496704084300526582979150268755442065197947576476977166189713910679324122537049102391846344751779647915441175433890634271937654404329151036204407030790779486345967708651224904900903129117720763070841983481288288520372542887040574173556498319598074362332329040146022921765486281866963787213166610242675725213895679450714775512693266280058498003067425875076428907692828653495669685206937799319736371497416359037957424730850136602011598552974929360355776735376606974424054225673374202545263533459147680029943487405708869153706759472899551787354983815693536947175964416495988451139846884463710485969246475516974062004682822653887489507084088674228167842611112165393235719739369051338188836762977960293914749720683073799488793694630490483906002952032073744224976302710045176228512962355488343205725 +bconv62 baseconv 4058163341381129988163925181756534464821836830006112445399258125431199638977501538393833228651413348457942321559851603718519535685103294979426663988236497444112625420266257454931961604662935390106351137623206154017299678697090098122349589355298594817912461376487326627468956250288327115841039050839112583124161440117194561258184595566402806102882764334701154619759831535664108595086632091264110374173206374670920920753739197576276401902436609025037848621163010251140662292582615590273551834209681778927596896029873019754707570866120017453538393386512697720377539679664306184483075656672585127596958196904387044715504671353729194771737085689602383400560094063808145252520880489766128458765096981033662005102471346162930149407010064628165779721236051368024416609686846658331125401250706356927765990923632248406753711318575521543531367744508193411411852270736842910798723297818618598991061140777380210327008583967028167436981722517506960790579392485398385850481559309096608615138313611697766282570836002 -> 4058163341381129988163925181756534464821836830006112445399258125431199638977501538393833228651413348457942321559851603718519535685103294979426663988236497444112625420266257454931961604662935390106351137623206154017299678697090098122349589355298594817912461376487326627468956250288327115841039050839112583124161440117194561258184595566402806102882764334701154619759831535664108595086632091264110374173206374670920920753739197576276401902436609025037848621163010251140662292582615590273551834209681778927596896029873019754707570866120017453538393386512697720377539679664306184483075656672585127596958196904387044715504671353729194771737085689602383400560094063808145252520880489766128458765096981033662005102471346162930149407010064628165779721236051368024416609686846658331125401250706356927765990923632248406753711318575521543531367744508193411411852270736842910798723297818618598991061140777380210327008583967028167436981722517506960790579392485398385850481559309096608615138313611697766282570836002 +bconv63 baseconv 8406950892755523931376660654037202098146387857439041752733701540164535058871001088360557390059591304703327011597655300786583404802671361628304338238650834015763131261435738978120016074160349801814322881813215090602918833106312246883246662968423408218102590560005828415774667214358058816218908165140407741028808386573410234772695087736341345800546853400051852565435946321779856248773388131084478853534737063051919742708670239574091146744341484353507359591305645142329283716514049206525995125513678543179711673298132835805657558187822034894673063830270667077717144507131374867555857497241487349223175635123368379509733451513266131470778295874125292318184104285420415290106787149190632979426143432938539130082705142904692619987384214682396023421584099098106616997004420242583521086733427222102959507383836702741247378945251155207199029372749396016571483287604421094881805186053193055926290766231497649774874142816117601569504204785571109899954674170905188244667375034493358961286678829349195105698569686 -> 8406950892755523931376660654037202098146387857439041752733701540164535058871001088360557390059591304703327011597655300786583404802671361628304338238650834015763131261435738978120016074160349801814322881813215090602918833106312246883246662968423408218102590560005828415774667214358058816218908165140407741028808386573410234772695087736341345800546853400051852565435946321779856248773388131084478853534737063051919742708670239574091146744341484353507359591305645142329283716514049206525995125513678543179711673298132835805657558187822034894673063830270667077717144507131374867555857497241487349223175635123368379509733451513266131470778295874125292318184104285420415290106787149190632979426143432938539130082705142904692619987384214682396023421584099098106616997004420242583521086733427222102959507383836702741247378945251155207199029372749396016571483287604421094881805186053193055926290766231497649774874142816117601569504204785571109899954674170905188244667375034493358961286678829349195105698569686 +bconv64 baseconv 5647688966100354364057696188968969015429751356816251620994668637140555851871917355534030523702654179619022948515953760602790154851357593370075652536062282439891965113395509925572338068884604498514271028288558428358683336188255932484378244108914598258026642950898724806096609062135322993895216184994351574543383451289058826354140182936630814334378315448156164414366393500127371296356058022439297207590079530267863802647498160704827735225701131352098900156246616920726629420728242144555825846231688748321741255901840625653736252617643643181798802568589266059683380007034823111463828880641316648151016898222098440888797985538367105598165917764674813454904728893658758599621022207782389612144160989408564639394476394347146791391790897587340385813455563974153162604345037779011378663519524098502262812334457833225038976924794624162776585149230244765098191075549991370014046641083879817819075205118463678334114935856820727294228985903927335458758516518101235510006525099111744003362479932882328513730055697 -> 5647688966100354364057696188968969015429751356816251620994668637140555851871917355534030523702654179619022948515953760602790154851357593370075652536062282439891965113395509925572338068884604498514271028288558428358683336188255932484378244108914598258026642950898724806096609062135322993895216184994351574543383451289058826354140182936630814334378315448156164414366393500127371296356058022439297207590079530267863802647498160704827735225701131352098900156246616920726629420728242144555825846231688748321741255901840625653736252617643643181798802568589266059683380007034823111463828880641316648151016898222098440888797985538367105598165917764674813454904728893658758599621022207782389612144160989408564639394476394347146791391790897587340385813455563974153162604345037779011378663519524098502262812334457833225038976924794624162776585149230244765098191075549991370014046641083879817819075205118463678334114935856820727294228985903927335458758516518101235510006525099111744003362479932882328513730055697 +bconv65 baseconv 4303643024126988377813422678008252137074227312607602958902841494279719418066940860294572640212642986341810157508424117525175727568781972411091870791707959150235359888813728343454667077791290091906713945440123590859266784922331439886087241699669854876593854281538733124785668279591403336336568302343816823470551045529738293770563081676331864762766572662727041867148094538344365432675856819861522023038051110627371108753701062994789389071296990002878768656480929104940365255825579067979693997169155096197312633312996464150383625288961548833164228279244295203251828677253408077267538292334039365205809241284529420311083003350936517276149896533542045491473868435883710276935407588510712498950819735847398823054618846064349494679600895539980821742622931900910741469612604112826527076047997381271355199447570295695672651263700799426192699738726013352555384317577033163225594001365982347480710043230474742810217310250516965581149309286090229155832333270873077496862544454456673571132901197127905894820941626 -> 4303643024126988377813422678008252137074227312607602958902841494279719418066940860294572640212642986341810157508424117525175727568781972411091870791707959150235359888813728343454667077791290091906713945440123590859266784922331439886087241699669854876593854281538733124785668279591403336336568302343816823470551045529738293770563081676331864762766572662727041867148094538344365432675856819861522023038051110627371108753701062994789389071296990002878768656480929104940365255825579067979693997169155096197312633312996464150383625288961548833164228279244295203251828677253408077267538292334039365205809241284529420311083003350936517276149896533542045491473868435883710276935407588510712498950819735847398823054618846064349494679600895539980821742622931900910741469612604112826527076047997381271355199447570295695672651263700799426192699738726013352555384317577033163225594001365982347480710043230474742810217310250516965581149309286090229155832333270873077496862544454456673571132901197127905894820941626 +bconv66 baseconv 5335835484698834876944387633595737636036504202165508279086455820006198045442127520009100419147410481418310384188548200286998275148827760537031777287560961708745676522788474293906099128836292586856951761116483866453754578883428575421057966567029785713601122990542298812305298897558185958135958320187888750093995366388595619625472843981361516921230016506601835539514945240154597661038826270216496857084517022214141028223827296134286120266183100679765421006576219583917546731022060419457554414283660988293753592239015584013028292057752126673644043989399421525099114796194016110250758991374099908959713418677105003232295743420736405802941991296511941478174814055235413811644378166155793547136371895373947683208618280871108974693026337274536234402449637640948433348098220230834897129888411670938495475558490445196033887817289608928795985461110126005249676416480561282969944368908875995104981987298616923906885791503787489529250036531239020442656203742596827949760572879176388068999824193353175642440697264 -> 5335835484698834876944387633595737636036504202165508279086455820006198045442127520009100419147410481418310384188548200286998275148827760537031777287560961708745676522788474293906099128836292586856951761116483866453754578883428575421057966567029785713601122990542298812305298897558185958135958320187888750093995366388595619625472843981361516921230016506601835539514945240154597661038826270216496857084517022214141028223827296134286120266183100679765421006576219583917546731022060419457554414283660988293753592239015584013028292057752126673644043989399421525099114796194016110250758991374099908959713418677105003232295743420736405802941991296511941478174814055235413811644378166155793547136371895373947683208618280871108974693026337274536234402449637640948433348098220230834897129888411670938495475558490445196033887817289608928795985461110126005249676416480561282969944368908875995104981987298616923906885791503787489529250036531239020442656203742596827949760572879176388068999824193353175642440697264 +bconv67 baseconv 9129091747928019647658521399224576461375165290016306906223165566696625834526558333128057952933598410200090827763961361401310443343280365281373936236181125564771699359283222203311361818120518438365620016831594374224828701204091727510634424186798327991718205655447076322053511859816507583554196675368297852454036158180308979651709531932084491488415726926114180975339690954496597653950332090055438059501708751596192253547393886974114215674992857539499149127327172648622584808139655914533962860987370044411883932825928665967576246707952150433909775789244033111097886841015510913489356649504764493139660393909282867438500006930458566961479098010943853253658203508378170139917913005810228284199016726859325182660302051384205209976440472471615133380118443572994088979336213339432663549695022940786447588164053915597304534366557052109427352734925488245976215375939413713456547525640893432265002623220428365126968841314760740005829803839414722416534532318087228727968752113208444581791125880461493882422284019 -> 9129091747928019647658521399224576461375165290016306906223165566696625834526558333128057952933598410200090827763961361401310443343280365281373936236181125564771699359283222203311361818120518438365620016831594374224828701204091727510634424186798327991718205655447076322053511859816507583554196675368297852454036158180308979651709531932084491488415726926114180975339690954496597653950332090055438059501708751596192253547393886974114215674992857539499149127327172648622584808139655914533962860987370044411883932825928665967576246707952150433909775789244033111097886841015510913489356649504764493139660393909282867438500006930458566961479098010943853253658203508378170139917913005810228284199016726859325182660302051384205209976440472471615133380118443572994088979336213339432663549695022940786447588164053915597304534366557052109427352734925488245976215375939413713456547525640893432265002623220428365126968841314760740005829803839414722416534532318087228727968752113208444581791125880461493882422284019 +bconv68 baseconv 6900268356619689735328316924037308197731823978664151646536913448395060888600072144428907591584296316164895762596929158159223240873686583623459715465718416013955231933759988468600214280395215701151779881476822654331428402787838329980501266605629634666039232321654838070390904813276126247705089025960363730017795100421116278990168639641134931401043909104084654864047361458859633461233860093552239801820545348446366618513463235589670924359397456295125078269360780719667676367268772999769827119117523247254472958893414211427072099794161965964526565084372345182751970743069306765132666382655996709403103274830414754150703389454121766348106616371189856004868052566745344982606334278977139056432550805384684663957960585932902801839700120633871029140651911192017752102812898014750252764192143839943538114902737292849329973983868810816104335037222555349216487751849955516160631961554662024099406925850956972723049949156408781107316793143780496034007136738803366213062990156186687113354154240137096750043483483 -> 6900268356619689735328316924037308197731823978664151646536913448395060888600072144428907591584296316164895762596929158159223240873686583623459715465718416013955231933759988468600214280395215701151779881476822654331428402787838329980501266605629634666039232321654838070390904813276126247705089025960363730017795100421116278990168639641134931401043909104084654864047361458859633461233860093552239801820545348446366618513463235589670924359397456295125078269360780719667676367268772999769827119117523247254472958893414211427072099794161965964526565084372345182751970743069306765132666382655996709403103274830414754150703389454121766348106616371189856004868052566745344982606334278977139056432550805384684663957960585932902801839700120633871029140651911192017752102812898014750252764192143839943538114902737292849329973983868810816104335037222555349216487751849955516160631961554662024099406925850956972723049949156408781107316793143780496034007136738803366213062990156186687113354154240137096750043483483 +bconv69 baseconv 5902317478033285052639969958426443415331534100963298572917677485137767710777645791510067987040318815704002046102380559056499576069140225130856023710928274645788720336542561688179656835504067151964603553167820369875037901743403666333946356374149492654740989372381420656107998784874556101744289227529408280165171709363403901488493142660261651414890130272196299763703929030105182053095081485999142807673262280903020694356961712060482350227621125449488408596786220657518228358026972909057360682537642459428945199014596118227915678507873596275380578418781669067343652514458813143705051154895151314182485736623761416158306575176089589598309703147974223695592008076609875305046246341267219118112039891263647272358195902229726581191582355438917227138004383536527416530446888114334055621437548137537151617105080988069350154742754929628014882555546806889633775763716968380233499331929606549710246193613316709215506465990577298515265976613698771776843553680811656116953046619938220006356565765286924768574974365 -> 5902317478033285052639969958426443415331534100963298572917677485137767710777645791510067987040318815704002046102380559056499576069140225130856023710928274645788720336542561688179656835504067151964603553167820369875037901743403666333946356374149492654740989372381420656107998784874556101744289227529408280165171709363403901488493142660261651414890130272196299763703929030105182053095081485999142807673262280903020694356961712060482350227621125449488408596786220657518228358026972909057360682537642459428945199014596118227915678507873596275380578418781669067343652514458813143705051154895151314182485736623761416158306575176089589598309703147974223695592008076609875305046246341267219118112039891263647272358195902229726581191582355438917227138004383536527416530446888114334055621437548137537151617105080988069350154742754929628014882555546806889633775763716968380233499331929606549710246193613316709215506465990577298515265976613698771776843553680811656116953046619938220006356565765286924768574974365 +bconv70 baseconv 7618612588375161987973986123831447508619296856838465164293533739966823894018368729887300038633380083450627587448574134028751880065875262338564382018635166978406432591101743138739499298388611245974265417432879358052242826168409457912513107110950186720266321682523165985361471604318174445688405655205672649458716573299066311194975013589385530855390287294557039673142795989514335820324636631809173139755465221217477350803483231931418787491152967767757274597349476209505357303671510024719654094172114279799325194009355861115285435663306073203048885374201647859066080783247123888390983467494174600931975914093392656394217072436589498313016735514157722284236985627200904536095289967273299885219540575231309698221759603730404909751845431289018037071119511136610349966122938279522557290179469954193393045541041751948180641198956129228604171009531495649354104157212998085753206544094978165257504484578807276864804766426616551743121878029939397287482059538202220979362777420766635472700606552654691456630944882 -> 7618612588375161987973986123831447508619296856838465164293533739966823894018368729887300038633380083450627587448574134028751880065875262338564382018635166978406432591101743138739499298388611245974265417432879358052242826168409457912513107110950186720266321682523165985361471604318174445688405655205672649458716573299066311194975013589385530855390287294557039673142795989514335820324636631809173139755465221217477350803483231931418787491152967767757274597349476209505357303671510024719654094172114279799325194009355861115285435663306073203048885374201647859066080783247123888390983467494174600931975914093392656394217072436589498313016735514157722284236985627200904536095289967273299885219540575231309698221759603730404909751845431289018037071119511136610349966122938279522557290179469954193393045541041751948180641198956129228604171009531495649354104157212998085753206544094978165257504484578807276864804766426616551743121878029939397287482059538202220979362777420766635472700606552654691456630944882 +bconv71 baseconv 7274806580397344519284063172873246281828496073512420391960927384453048993171430811294852993953133663708264940676182576330989070389032188416756346293035717226172734540992730526151308370760779998487899686427975365105921621973758809647457269569506859547747806306991297068405274539447559239528419759016003913683231595280778096964234842143311379517005828368761680253350331820375653177170414943240127688715672454870195944166222433584575825723532119850409069952806340772013421198619665534555202624391346774809212468650895463599943403825940487774964329686020489685248597721079522907711459321744866816990610954240800102338348668095339816266447245172628383539174211561658298581030048802729109320621346110202491421791757970057077622991253600555741918519281783344059958489634830679464823307368001023379421864430160158082185304493791500244706870083457381611799110216505162039835249630972331472319205143569296727787128312968152640568396491580930348551130999142233580349309433232935446943355973407107156214224440615 -> 7274806580397344519284063172873246281828496073512420391960927384453048993171430811294852993953133663708264940676182576330989070389032188416756346293035717226172734540992730526151308370760779998487899686427975365105921621973758809647457269569506859547747806306991297068405274539447559239528419759016003913683231595280778096964234842143311379517005828368761680253350331820375653177170414943240127688715672454870195944166222433584575825723532119850409069952806340772013421198619665534555202624391346774809212468650895463599943403825940487774964329686020489685248597721079522907711459321744866816990610954240800102338348668095339816266447245172628383539174211561658298581030048802729109320621346110202491421791757970057077622991253600555741918519281783344059958489634830679464823307368001023379421864430160158082185304493791500244706870083457381611799110216505162039835249630972331472319205143569296727787128312968152640568396491580930348551130999142233580349309433232935446943355973407107156214224440615 +bconv72 baseconv 6130948253975489346677774988944106163747895783265816819009141290747852451565430157070458633568418091799100581240038365775110987148264812155911759707749008431645333271204025012839981017225764941361557471531893601564045350396896756840122816069474057770363495623100741920342319643357236464606424507006367902011893287733914920442908648126115412153422186144251960891357139215215592026327970026723175114913467734899145209542128404188980472550163684555903818702210116890758734639483837538831670270775867412845106430716975436568801904268966209479051378549439232083487587240656706323144565528743266161960719120375800051306298871290207293418017005955479866176336985731985283764079487364011713883768219165196913353154123285520395957189537840594148405201019435705205048585761314045517222391010397717138713678291199379489644406023369790871408489799126166800211249280667364400757052372503935756443048605432599878481650018018036096762090966416485795787543935549556092000259556169563879061236461507079130681270625925 -> 6130948253975489346677774988944106163747895783265816819009141290747852451565430157070458633568418091799100581240038365775110987148264812155911759707749008431645333271204025012839981017225764941361557471531893601564045350396896756840122816069474057770363495623100741920342319643357236464606424507006367902011893287733914920442908648126115412153422186144251960891357139215215592026327970026723175114913467734899145209542128404188980472550163684555903818702210116890758734639483837538831670270775867412845106430716975436568801904268966209479051378549439232083487587240656706323144565528743266161960719120375800051306298871290207293418017005955479866176336985731985283764079487364011713883768219165196913353154123285520395957189537840594148405201019435705205048585761314045517222391010397717138713678291199379489644406023369790871408489799126166800211249280667364400757052372503935756443048605432599878481650018018036096762090966416485795787543935549556092000259556169563879061236461507079130681270625925 +bconv73 baseconv 2678958050814855438011980110924244323210902342360468724311522260010738198181483026149998432356805208963963777995160925906539233063189268083826650111799451459581886658672068280964914964393628207391282082504655786637944928288796248087211811294173843458515796607606617768871561148449560208060792117386919551441709757668050534993235222494796280077717812390569608054078408592328262644394123921392451017829069514887231300312722917816057215249670096512382379565025509529794789542178756123968570011478858940154429527782037622132071463012809778679141237394162761585003270807195379677938890610594104065381176396282342993743761091890465767646745423865945246575020162172630639737161569848620243918182614571976940777945456694167437277678256741474766859741794654992638619448675100386839533693034646941003248458395060584905946437012088751694250783884538695072973473131512937858343940713533300864618124792139624682150515770784592009091045409633071683675848987325405286883483190515222978186952507953251192484870361219 -> 2678958050814855438011980110924244323210902342360468724311522260010738198181483026149998432356805208963963777995160925906539233063189268083826650111799451459581886658672068280964914964393628207391282082504655786637944928288796248087211811294173843458515796607606617768871561148449560208060792117386919551441709757668050534993235222494796280077717812390569608054078408592328262644394123921392451017829069514887231300312722917816057215249670096512382379565025509529794789542178756123968570011478858940154429527782037622132071463012809778679141237394162761585003270807195379677938890610594104065381176396282342993743761091890465767646745423865945246575020162172630639737161569848620243918182614571976940777945456694167437277678256741474766859741794654992638619448675100386839533693034646941003248458395060584905946437012088751694250783884538695072973473131512937858343940713533300864618124792139624682150515770784592009091045409633071683675848987325405286883483190515222978186952507953251192484870361219 +bconv74 baseconv 1433604913199497674078083474914984329856632815461977485808964290112742699243842118454632257768731064903980996844332397764881040042954540441183450066462705825315928638236440164547779152816344541552057173362160377239921110200948087717995344001956921723233249486869251158297270585414250065333563201135551477824777637564569500840812856514394406672140924513640570751884329574238314876095634048514675248989746921524201575075133617230827469481393704689216637201395892468685969520264008315836936284604180171762514187252148538883776176472924345179343865383884827486803317221574139524252865998797499402116636730467808567569817656360593510938642326360068969637589320557624621985202839567286526486926131587594999476321652210488347596240536648966259299861976821583032299397323373928356009457406421856858993230214235711413831059296448751018420030096070032872351464883917693967225907526345459366982173594073075347012260963163369355523277181104723236080617131840646102841251455769256280107677494490168666994323130447 -> 1433604913199497674078083474914984329856632815461977485808964290112742699243842118454632257768731064903980996844332397764881040042954540441183450066462705825315928638236440164547779152816344541552057173362160377239921110200948087717995344001956921723233249486869251158297270585414250065333563201135551477824777637564569500840812856514394406672140924513640570751884329574238314876095634048514675248989746921524201575075133617230827469481393704689216637201395892468685969520264008315836936284604180171762514187252148538883776176472924345179343865383884827486803317221574139524252865998797499402116636730467808567569817656360593510938642326360068969637589320557624621985202839567286526486926131587594999476321652210488347596240536648966259299861976821583032299397323373928356009457406421856858993230214235711413831059296448751018420030096070032872351464883917693967225907526345459366982173594073075347012260963163369355523277181104723236080617131840646102841251455769256280107677494490168666994323130447 +bconv75 baseconv 9509502087439293521915245914556012667120859453429588799101618722731573819091360650939844804078650572207481579114368041954962927591690413151539514339827409812517143865418129068157137548141538425093778101236468717678225278052294762257694619178735877449349242687058786086953658133226326630635836416906903445634157790895758720446578504578281952712086992016430676892265798993866494945592007642621955012311340761182040069681255863624421559440343018048806657197993910559458637272199081905616558770409596261493882619719522169737246413582412373468772343196102446759619161641353907132443320222236571544065118743662352967211727156497327231828204853316233291931245121981261002714034945910737026280302630694548036668140781375387922334129759545246568883986651913877871123446161111529630342458791066259563697797046846323689489622058506526027808173899921993177412154475515284590741287550290180104689965294436736202097880113113031790963944060391715754049096598243319655925264719458590524909063365293788615391600549199 -> 9509502087439293521915245914556012667120859453429588799101618722731573819091360650939844804078650572207481579114368041954962927591690413151539514339827409812517143865418129068157137548141538425093778101236468717678225278052294762257694619178735877449349242687058786086953658133226326630635836416906903445634157790895758720446578504578281952712086992016430676892265798993866494945592007642621955012311340761182040069681255863624421559440343018048806657197993910559458637272199081905616558770409596261493882619719522169737246413582412373468772343196102446759619161641353907132443320222236571544065118743662352967211727156497327231828204853316233291931245121981261002714034945910737026280302630694548036668140781375387922334129759545246568883986651913877871123446161111529630342458791066259563697797046846323689489622058506526027808173899921993177412154475515284590741287550290180104689965294436736202097880113113031790963944060391715754049096598243319655925264719458590524909063365293788615391600549199 +bconv76 baseconv 4067710689537320871849232028596019890094124528252777462007885299997247441633037514703726893344971731681036853177610970476237991686949525947759101458523337748744105111180336091024763227724041247966098511119921602883212159799916917673257371767804630928878629119716105307837083027827323519419479115170000208740771251424259282440603148004928318427343722466224467840437081495725842063664315946601338872383524986637145038835522730902737295885437161564775084225897608602355703430068054066888671109737692968558105215791951062838049130090345226160565888843510861559829559406688920922633386414214964809977393093311710710293305610560393766382970580823805751664973722002572513997506768317341907969803015335670841722249449604352187087311038724485915587222121563902141070629530397726046741316132604372111408172705209464331334487033647061504991750599409096060547584712215514566838414944330535512232821626204005290769233866562631963708531145880788234634868318151778571100035628380114530308836936226539602390045869124 -> 4067710689537320871849232028596019890094124528252777462007885299997247441633037514703726893344971731681036853177610970476237991686949525947759101458523337748744105111180336091024763227724041247966098511119921602883212159799916917673257371767804630928878629119716105307837083027827323519419479115170000208740771251424259282440603148004928318427343722466224467840437081495725842063664315946601338872383524986637145038835522730902737295885437161564775084225897608602355703430068054066888671109737692968558105215791951062838049130090345226160565888843510861559829559406688920922633386414214964809977393093311710710293305610560393766382970580823805751664973722002572513997506768317341907969803015335670841722249449604352187087311038724485915587222121563902141070629530397726046741316132604372111408172705209464331334487033647061504991750599409096060547584712215514566838414944330535512232821626204005290769233866562631963708531145880788234634868318151778571100035628380114530308836936226539602390045869124 +bconv77 baseconv 3811485366282181991185449609992379835364068910423038084123752549777775495328423022325496354002520125696510063848482205363898048203808352020069352074587796055595132952929486435926665508307191835077206504562365950478641345354404437988748646831254219152328931803561266682295291800994360062160106397654616189431899798197406883807407141275487819300776299215842458595160943031988530907299832371804923983767347515169199263892792934317357299020622216670200593430872334594094812241832634977075619235914127609964096250827939011169465409846825620733974974023090673181994743508948408435450466271071244766160592324527343693663528963823928584931432038490894738677809422764863550247297419446724028390823312956208154768241192636827842253967661698183139989167982144197331546467495827674490051196364311889090339091110789259946267136203559849863668483546801715109310548678105351252184290598725357432253067982366711587217519182604721349738901804566211889856255557444967049226171078141778124247455292456053215501302298179 -> 3811485366282181991185449609992379835364068910423038084123752549777775495328423022325496354002520125696510063848482205363898048203808352020069352074587796055595132952929486435926665508307191835077206504562365950478641345354404437988748646831254219152328931803561266682295291800994360062160106397654616189431899798197406883807407141275487819300776299215842458595160943031988530907299832371804923983767347515169199263892792934317357299020622216670200593430872334594094812241832634977075619235914127609964096250827939011169465409846825620733974974023090673181994743508948408435450466271071244766160592324527343693663528963823928584931432038490894738677809422764863550247297419446724028390823312956208154768241192636827842253967661698183139989167982144197331546467495827674490051196364311889090339091110789259946267136203559849863668483546801715109310548678105351252184290598725357432253067982366711587217519182604721349738901804566211889856255557444967049226171078141778124247455292456053215501302298179 +bconv78 baseconv 1990006068381464682049507550264302037762060389144914435155032181564512582025891607823250149058568412193385329414153759137054000955433528910483683140843695237118579512718408541440729462053300257176045331210843659285088277837145617911786897079697695822903441007426313983594108337849323523801461353403743354205332614568281522016124835207903049932403755935317561601917441459604496836970070735909956513671336330860323860179388331105289023853412948803361252289030773615479632718627401732040030962045909250635807312575103477559082544985107953795183152171682603428723813002693069914001266504241935848121105168305637550903127840183872570436135450397128584518510152749757839238010828541959435668309325917309393438110029245698090678671582148151378731513441520660610414440657938977851671873331032285873152157433944658015277107982301113691126105366410992148669718892349257122548807570025007125466370298794900665689909793941671147289356242383522692067149592303798561909497033391475359270730954911342570894131532358 -> 1990006068381464682049507550264302037762060389144914435155032181564512582025891607823250149058568412193385329414153759137054000955433528910483683140843695237118579512718408541440729462053300257176045331210843659285088277837145617911786897079697695822903441007426313983594108337849323523801461353403743354205332614568281522016124835207903049932403755935317561601917441459604496836970070735909956513671336330860323860179388331105289023853412948803361252289030773615479632718627401732040030962045909250635807312575103477559082544985107953795183152171682603428723813002693069914001266504241935848121105168305637550903127840183872570436135450397128584518510152749757839238010828541959435668309325917309393438110029245698090678671582148151378731513441520660610414440657938977851671873331032285873152157433944658015277107982301113691126105366410992148669718892349257122548807570025007125466370298794900665689909793941671147289356242383522692067149592303798561909497033391475359270730954911342570894131532358 +bconv79 baseconv 6015502869739087840490272225009583235686554415597820260864687529596382958074667901361875270833997129759447836372499555541652650451502594770436693287735337668554595929098876585393766197602427124862906155725316409444214451901418085327300532602678794493356481935382428415228909151655255164373511058123889329082619375667369210764727937344306215620616541202065239644000366634050592525680716301127542499939663309899544761500965235197405555980469459915477937424880270520272510181134527145637344414505867890548334494386092618208486156069437679989693532690668499343526981724430976888868585542016702257206431532422802162575894308454532674685186682402274196609885295851365911976479534913191915118210151797812795159108743079339204564318170806899555009259410527404594039497894336819299935284534331538880011864688710879036892746974953275405849133773110007259543807610050120756488168249583261372342667515892815096343346932768293662319876123910097532366065183592949456550921172097180847279701865234409426840668410766 -> 6015502869739087840490272225009583235686554415597820260864687529596382958074667901361875270833997129759447836372499555541652650451502594770436693287735337668554595929098876585393766197602427124862906155725316409444214451901418085327300532602678794493356481935382428415228909151655255164373511058123889329082619375667369210764727937344306215620616541202065239644000366634050592525680716301127542499939663309899544761500965235197405555980469459915477937424880270520272510181134527145637344414505867890548334494386092618208486156069437679989693532690668499343526981724430976888868585542016702257206431532422802162575894308454532674685186682402274196609885295851365911976479534913191915118210151797812795159108743079339204564318170806899555009259410527404594039497894336819299935284534331538880011864688710879036892746974953275405849133773110007259543807610050120756488168249583261372342667515892815096343346932768293662319876123910097532366065183592949456550921172097180847279701865234409426840668410766 +bconv80 baseconv 4721674509002784842344864141003393673089137680091440668260717371938345795302660565535881788240496853682038707484464310863889151722714658187786119386450529004684034710648752629248535147912138814920166176904926229674566090805847602244383193776500720254132610905647171991232089647680276174361654043546376396157894708786613176450217802422352783707604008874651507753601685162288117251635948934611119586655693590679777088408194900543274105112708385267612004468830226889125841321008539403641032011853954056310027563922203338751062114799121049136446957621664922927963650042590574198841196332234984513656542272799549698840401193003305283764561016970681896533793190753839906709681086564197501303764886900076252600084692622164483878741014064658238710677509984156669556507724226857069599520272720557151925768638001497467599390730948877998183219285938785277230485265916972621101328898463456445570037474012055243061252258859408976670671479137053446114565987363416858266084608753431705108235202206779212956615656596 -> 4721674509002784842344864141003393673089137680091440668260717371938345795302660565535881788240496853682038707484464310863889151722714658187786119386450529004684034710648752629248535147912138814920166176904926229674566090805847602244383193776500720254132610905647171991232089647680276174361654043546376396157894708786613176450217802422352783707604008874651507753601685162288117251635948934611119586655693590679777088408194900543274105112708385267612004468830226889125841321008539403641032011853954056310027563922203338751062114799121049136446957621664922927963650042590574198841196332234984513656542272799549698840401193003305283764561016970681896533793190753839906709681086564197501303764886900076252600084692622164483878741014064658238710677509984156669556507724226857069599520272720557151925768638001497467599390730948877998183219285938785277230485265916972621101328898463456445570037474012055243061252258859408976670671479137053446114565987363416858266084608753431705108235202206779212956615656596 +bconv81 baseconv 9510892144512085249275018397413722351535888803410628276542776410787927123434847518456778687187064714786890066386715732881311830074661041804981173834988813357626357664332734060141367516951356706230731874581947035415957390767207385350129876650445943888250294153598548602119653379910795874829810180533925922043189055449070682598387633907127369536141894111618036481012982562544619189381462522366417048046249419658821886339328607122138996901026714904797108534803209061856381909673693634617534574339342310733046709376826653416507892085968080489984441862034544938076632149184037423758350666641568104387017683563651749512844423775620691271709608581010474996031198621207797055078001455422495530416267114010872474914268815950284203068376243875177350897626724403359371624675822028221636433409884516411003658171567013289001684298493285255722701585168623074041390468611034184099866861509032454298088130296758273871134154763216914951740909725530074990202322051962686179414589290769763667044986291564890577004152222 -> 9510892144512085249275018397413722351535888803410628276542776410787927123434847518456778687187064714786890066386715732881311830074661041804981173834988813357626357664332734060141367516951356706230731874581947035415957390767207385350129876650445943888250294153598548602119653379910795874829810180533925922043189055449070682598387633907127369536141894111618036481012982562544619189381462522366417048046249419658821886339328607122138996901026714904797108534803209061856381909673693634617534574339342310733046709376826653416507892085968080489984441862034544938076632149184037423758350666641568104387017683563651749512844423775620691271709608581010474996031198621207797055078001455422495530416267114010872474914268815950284203068376243875177350897626724403359371624675822028221636433409884516411003658171567013289001684298493285255722701585168623074041390468611034184099866861509032454298088130296758273871134154763216914951740909725530074990202322051962686179414589290769763667044986291564890577004152222 +bconv82 baseconv 3456901425030618394011723130438256490792542318319735523515255306185196939308698752817940822865136996467848018629679285367233218672286722816451896768786204220320586683939393222905940971820644324646129629722387740145771943954328905513705485730905297265414752239534351869403772356050107132008214260482843718173822581181084159755349622083295193667670716324541786008529807599545149693843888823106530719118283570425691982953657691142444783384988527060080133138507780291068300382333834918941607068908852462046319362616584120851220241887029533755241068592099110060289167241261240766570600949484070935606431905912670648928290250704475703033553126233812366842077186976657108776720555272519485274610219573736531176760473936687354077338487468978295230805216233438751757588257783310113962844570833948121068093293399468034885968569831495375430608219776187246141046926597205943086575464162437066336461261879290448349244362708136983100666676756432364748374695161206527985367750583374748236697040433162574257657994893 -> 3456901425030618394011723130438256490792542318319735523515255306185196939308698752817940822865136996467848018629679285367233218672286722816451896768786204220320586683939393222905940971820644324646129629722387740145771943954328905513705485730905297265414752239534351869403772356050107132008214260482843718173822581181084159755349622083295193667670716324541786008529807599545149693843888823106530719118283570425691982953657691142444783384988527060080133138507780291068300382333834918941607068908852462046319362616584120851220241887029533755241068592099110060289167241261240766570600949484070935606431905912670648928290250704475703033553126233812366842077186976657108776720555272519485274610219573736531176760473936687354077338487468978295230805216233438751757588257783310113962844570833948121068093293399468034885968569831495375430608219776187246141046926597205943086575464162437066336461261879290448349244362708136983100666676756432364748374695161206527985367750583374748236697040433162574257657994893 +bconv83 baseconv 1114685497965416656732698379705177154332018255132868450308546205005993405567280072981566695061741881039048516102552874312269051663893747834026795621233419147538326924080953351805348216747199745827176484941805754634850882072791810734029161602760957279716941747344922081910423787336704993154447907572466248131412943004575414810460323173729936766860512018135659466077161376533906814970096913643985088546097058087017433587545159372869081036330282290692599635051036129999032787789351500982758970821530339993622053422466083530988850101164611989418201949687808631372265510607270878926847029899106166493196168843200497034157084670777050096818789192009101112230666951024673468455599767386395901573282160864807212191679488158066023583204287556099026421419828302458850552448077234437815451598944310816734580726283004477487254598344727512076754803216005237951552370014776640778150631007268249727659835185067225850551901050019535365052341639147479041197493091144131435616546556483209665736557431123925160778520001 -> 1114685497965416656732698379705177154332018255132868450308546205005993405567280072981566695061741881039048516102552874312269051663893747834026795621233419147538326924080953351805348216747199745827176484941805754634850882072791810734029161602760957279716941747344922081910423787336704993154447907572466248131412943004575414810460323173729936766860512018135659466077161376533906814970096913643985088546097058087017433587545159372869081036330282290692599635051036129999032787789351500982758970821530339993622053422466083530988850101164611989418201949687808631372265510607270878926847029899106166493196168843200497034157084670777050096818789192009101112230666951024673468455599767386395901573282160864807212191679488158066023583204287556099026421419828302458850552448077234437815451598944310816734580726283004477487254598344727512076754803216005237951552370014776640778150631007268249727659835185067225850551901050019535365052341639147479041197493091144131435616546556483209665736557431123925160778520001 +bconv84 baseconv 4631674675576889759774580763626146757314616877277276688821580847591125241225735322432478386501627625854306251733623874428127495008675943385205168037051093578061722771732017683543179179144921022217700703179037029787433663110453203011907955194739418988523319173536216235147483594651233042156771845192228067507504430126983098504199731847083090992921399795570743065369871623526423674280816910406843708674872183941723181027479292355933701100348267065858817661658539434890633630128909458410130894623225854374629504910047527824037576731766318807423128381424603981879198507514196724903158582298075327249541380671868410844433500977078393764765201588270475184527040319447750509502500248592071105439035508362936062879670073953461728598203549232685754534962081303480388328503169443465060785701125451911129197525848703961391592400511619394502912888633179308354807256663171097995207271107864865900234403718599165590670527562631249338155438288328566019355734457944780825214897697497647022919067727224315808251374972 -> 4631674675576889759774580763626146757314616877277276688821580847591125241225735322432478386501627625854306251733623874428127495008675943385205168037051093578061722771732017683543179179144921022217700703179037029787433663110453203011907955194739418988523319173536216235147483594651233042156771845192228067507504430126983098504199731847083090992921399795570743065369871623526423674280816910406843708674872183941723181027479292355933701100348267065858817661658539434890633630128909458410130894623225854374629504910047527824037576731766318807423128381424603981879198507514196724903158582298075327249541380671868410844433500977078393764765201588270475184527040319447750509502500248592071105439035508362936062879670073953461728598203549232685754534962081303480388328503169443465060785701125451911129197525848703961391592400511619394502912888633179308354807256663171097995207271107864865900234403718599165590670527562631249338155438288328566019355734457944780825214897697497647022919067727224315808251374972 +bconv85 baseconv 5054046050056162480616308689292024548964869387364190422046664401725285272589912290316921591529000996107139664638860857474291630684610120548839746031950778814237657029526620589407213043004465648249228138623631242102783559713715962998576004993902739199314713241903427496721703183412188760822003199242108016386325064523019036728327451956595083438052025928550379054896352039023411102914563041411340310861208383343232255940250328273276066044768014963719305806812780763480860826000566705246728310823754109703346572770708272626973496113309796285567744703659844373782029510124695943291513025323934796579111747179739099339847651916817808633677486719607359693437287945348611501450211335210548158310422843185416620577706151577788251170429894658017301128035163501614461426080704537662209999989390074486940698920319619141918892222935486806938495465456502087109970522080677318154911764017109643515547373078103899589635851628705637553657986340106557721543262227821943218743800561474658667899245079222411395627962954 -> 5054046050056162480616308689292024548964869387364190422046664401725285272589912290316921591529000996107139664638860857474291630684610120548839746031950778814237657029526620589407213043004465648249228138623631242102783559713715962998576004993902739199314713241903427496721703183412188760822003199242108016386325064523019036728327451956595083438052025928550379054896352039023411102914563041411340310861208383343232255940250328273276066044768014963719305806812780763480860826000566705246728310823754109703346572770708272626973496113309796285567744703659844373782029510124695943291513025323934796579111747179739099339847651916817808633677486719607359693437287945348611501450211335210548158310422843185416620577706151577788251170429894658017301128035163501614461426080704537662209999989390074486940698920319619141918892222935486806938495465456502087109970522080677318154911764017109643515547373078103899589635851628705637553657986340106557721543262227821943218743800561474658667899245079222411395627962954 +bconv86 baseconv 498798086249856996078905158527089252178252354616474394172461119910411171631292826073736602556970410082912069200470696003247765310664953329225394473530199291988638309691944270359924785028682212767297352333530901834996778251309520930768516293582423530621731217403165731121251151555770945037545406036989210387357400832932657285754731777142153396155556766391296931072723419377353904084664332660239729906912213077293702082263144782647170522782678472717601795640755406792373723360153845879320728491736575874624660417420637145112254661596762381651155864300611427965335254466320563531053670190079523989944583722257215623345414338537446967131163152599924262184793640362492531320591992541713749468141495745684405707800564874853466580233668785277968189425629507799781330615685510990987541085339778852756645896927436132968727171859406852630944464727944527160320701514605982443736736493640203160533925894246349169821977614700908740834415621048448039933001494956646808220009825648876027231476439483178930098804431 -> 498798086249856996078905158527089252178252354616474394172461119910411171631292826073736602556970410082912069200470696003247765310664953329225394473530199291988638309691944270359924785028682212767297352333530901834996778251309520930768516293582423530621731217403165731121251151555770945037545406036989210387357400832932657285754731777142153396155556766391296931072723419377353904084664332660239729906912213077293702082263144782647170522782678472717601795640755406792373723360153845879320728491736575874624660417420637145112254661596762381651155864300611427965335254466320563531053670190079523989944583722257215623345414338537446967131163152599924262184793640362492531320591992541713749468141495745684405707800564874853466580233668785277968189425629507799781330615685510990987541085339778852756645896927436132968727171859406852630944464727944527160320701514605982443736736493640203160533925894246349169821977614700908740834415621048448039933001494956646808220009825648876027231476439483178930098804431 +bconv87 baseconv 121084496246938756091360326968183447669408003357695636666809434165351641268048810034797802330249990483875867773810508313327536716135763308208501331181295930220779431854631232212252643298451102259222414943353545844517103624925210984235401542435209388315185310776864043097454488263484776327918820928848089893903414946895154202834659531337442361455332848693958803567164818358419400101377269195378942581561478555088084111930102186914135541816369426320520004163316326525600558153337686104116846449762760676421388019724379027306647329766806894319653514150396428629601049286326280060876408923013583131933537846421533082385816840354979038383045769148237482807999001641376034402680082390088048829341450432418674576144627129203205631880795851956476274791549026244858452693841928312590683754547684212576568334042442996455760137191812996355186679921483943941711572378411861774705402169183672753203888713353235469809533415041940845692623738373389551796918423796512694942156566866045678843956187455360350126116818 -> 121084496246938756091360326968183447669408003357695636666809434165351641268048810034797802330249990483875867773810508313327536716135763308208501331181295930220779431854631232212252643298451102259222414943353545844517103624925210984235401542435209388315185310776864043097454488263484776327918820928848089893903414946895154202834659531337442361455332848693958803567164818358419400101377269195378942581561478555088084111930102186914135541816369426320520004163316326525600558153337686104116846449762760676421388019724379027306647329766806894319653514150396428629601049286326280060876408923013583131933537846421533082385816840354979038383045769148237482807999001641376034402680082390088048829341450432418674576144627129203205631880795851956476274791549026244858452693841928312590683754547684212576568334042442996455760137191812996355186679921483943941711572378411861774705402169183672753203888713353235469809533415041940845692623738373389551796918423796512694942156566866045678843956187455360350126116818 +bconv88 baseconv 3137481737709257969498673800458092871980861386091007321911948095053233189128261087722833240292125529604620019280216502476026881444247410867562715300767082875579380442196012176010593786813248040975730912408874428617346092090222073050923633535808533617582795720854509485179351617389335866920030070035436976677262222920765227786329524253192080537960718788349744852406050038158128504037535349581689874764171665428874322444032992147559960663528882817269944494639575999037700918584478363248324361461568174198291278240276477382157142688857722988940751054263417697148253505495273865088092895313510095544438178398818997910540224495283959759019496843768790244096208762693305267120582145971159196622958470378578782511510638566519746278016005922104590038165979540061160654906602140582867267493377424462796039198934864883369751098703135613059224489083381239093433702296894306887513397693253101405485213688643815485747646810201887140599330602036386948395390572760471299638065909323753137250055492175311998736899910 -> 3137481737709257969498673800458092871980861386091007321911948095053233189128261087722833240292125529604620019280216502476026881444247410867562715300767082875579380442196012176010593786813248040975730912408874428617346092090222073050923633535808533617582795720854509485179351617389335866920030070035436976677262222920765227786329524253192080537960718788349744852406050038158128504037535349581689874764171665428874322444032992147559960663528882817269944494639575999037700918584478363248324361461568174198291278240276477382157142688857722988940751054263417697148253505495273865088092895313510095544438178398818997910540224495283959759019496843768790244096208762693305267120582145971159196622958470378578782511510638566519746278016005922104590038165979540061160654906602140582867267493377424462796039198934864883369751098703135613059224489083381239093433702296894306887513397693253101405485213688643815485747646810201887140599330602036386948395390572760471299638065909323753137250055492175311998736899910 +bconv89 baseconv 2046274752132102652044178363915018187996191471099129936085057563665084251800329916037507740480904949808815025253480679644915641694115569208333973860274654636228092750394071421192847367159807217458985278359873738287557215047356486989476970364299183473439826473802435074386745143765137402240377114548259894215298448722134941209647661328655017441203639139184654431025591953069342187753294012484397561486808415192839078718066963498778706567321081645587781132525051084153809411210437209897891178766353450347532715803329831957875980989175465813008789637909513545795020187951251841409542991599712705888791403161544671505051750360940168736268381589442872643007869270333779311675340043386598903905691555406559663117625224081682667164561831570755422842085457569271102177089884660998495831941953998605684252177294606750390252078219918941666127526447626239301212631127530029324651931025029184577610229758483555537728766740503839864160777811101838922959335322519869877028644070845623841344458233546715178955550674 -> 2046274752132102652044178363915018187996191471099129936085057563665084251800329916037507740480904949808815025253480679644915641694115569208333973860274654636228092750394071421192847367159807217458985278359873738287557215047356486989476970364299183473439826473802435074386745143765137402240377114548259894215298448722134941209647661328655017441203639139184654431025591953069342187753294012484397561486808415192839078718066963498778706567321081645587781132525051084153809411210437209897891178766353450347532715803329831957875980989175465813008789637909513545795020187951251841409542991599712705888791403161544671505051750360940168736268381589442872643007869270333779311675340043386598903905691555406559663117625224081682667164561831570755422842085457569271102177089884660998495831941953998605684252177294606750390252078219918941666127526447626239301212631127530029324651931025029184577610229758483555537728766740503839864160777811101838922959335322519869877028644070845623841344458233546715178955550674 +bconv90 baseconv 118602527536459346287751193895858339452846002549469567672070864971092145524351168921356901474700295498090943988126078212996156182208260965087675553829353411264172685784262097902975835505936786187885350305834382769010903305812298167161305432584149340741716813142196798892449073397871436885380305299413074324984593301399377917029044947569039001082971115246671903673763800474556420103836833600126591598131281320412550646566882790480990547073330861095656030934112972929902090660853879104723851870897920221056873164484529692866150707827279262057284693386859303190717797108165415381238767342852108225559390590583594063055600797489006392713705265225186415598014042360384159026486745015499846703494614334336523877321341526209689352446358288246204567860638557940344930196992220212409403846067662601157255298292873989204120276181150905755080578582091637732664052951816628594743961102799491016125721404659205345921999694920153184972342277772759217123721089263939416025455334863658907345554029248989723836157059 -> 118602527536459346287751193895858339452846002549469567672070864971092145524351168921356901474700295498090943988126078212996156182208260965087675553829353411264172685784262097902975835505936786187885350305834382769010903305812298167161305432584149340741716813142196798892449073397871436885380305299413074324984593301399377917029044947569039001082971115246671903673763800474556420103836833600126591598131281320412550646566882790480990547073330861095656030934112972929902090660853879104723851870897920221056873164484529692866150707827279262057284693386859303190717797108165415381238767342852108225559390590583594063055600797489006392713705265225186415598014042360384159026486745015499846703494614334336523877321341526209689352446358288246204567860638557940344930196992220212409403846067662601157255298292873989204120276181150905755080578582091637732664052951816628594743961102799491016125721404659205345921999694920153184972342277772759217123721089263939416025455334863658907345554029248989723836157059 +bconv91 baseconv 141523214243831696736556300460342600164991437925782534056938875593239973798240513308747077020959591382723510242830812715562287973914401103083251377158746287925992865570116456610888001686833962181140883357750299385879321747409378802053920059639577600664323584513509493210890208846766530074890180448612272923888776385753398188650889920755186156716174102510355275398264644143830980598780328955341333863870854267893277618322800225825199698142800067501272826843776047442502095981348280416592394728559086850878362872113166784738034562737547481048712021816109725324286263667609087599720088399605876339426281690899921707322404788744614038093739805335691361866038834727601619137983667959762224522083982537611768463322191011792835742597170769812166435032532577481827369961098718451918623773222349557194994003447199491905464356118150526173572534688020661065721086937847583481054809153151087072641282157075018408142570766926199625674574826493938287132805724356449496651251238196604832668799851646391746245687790 -> 141523214243831696736556300460342600164991437925782534056938875593239973798240513308747077020959591382723510242830812715562287973914401103083251377158746287925992865570116456610888001686833962181140883357750299385879321747409378802053920059639577600664323584513509493210890208846766530074890180448612272923888776385753398188650889920755186156716174102510355275398264644143830980598780328955341333863870854267893277618322800225825199698142800067501272826843776047442502095981348280416592394728559086850878362872113166784738034562737547481048712021816109725324286263667609087599720088399605876339426281690899921707322404788744614038093739805335691361866038834727601619137983667959762224522083982537611768463322191011792835742597170769812166435032532577481827369961098718451918623773222349557194994003447199491905464356118150526173572534688020661065721086937847583481054809153151087072641282157075018408142570766926199625674574826493938287132805724356449496651251238196604832668799851646391746245687790 +bconv92 baseconv 3755450700552863665060044164440695117584422252860478986173745322867745209614779273831966127705061480696706764100640653063971634591772417424084390816709703599482455816117308257634345915584090779505984655443805707415262368382173976373100121233914523389411586661755100602746712444669381841737021307878068126765907353018603600017566799738475118034508504479215123665403317828460935322952577893391668149239321212023827428768855115737489346208924902379096314265342724953280684525139381552163761085944222325645310968913992883000123998156149927369859435314134944162530581569179818418043727395011786716703273773764276795167415314523754634382979497550308615348622193521056016732666235046776787411935055325019689988118053181251754711441077098286631057593405428962426444610044707709312112751391716119181428065839212678467108667920598137851282151341853542029262329368308989554001704532573493495551607537210376600737472576072275509205179692612030860721552552758907794670464048854301950405064249324181471812407661875 -> 3755450700552863665060044164440695117584422252860478986173745322867745209614779273831966127705061480696706764100640653063971634591772417424084390816709703599482455816117308257634345915584090779505984655443805707415262368382173976373100121233914523389411586661755100602746712444669381841737021307878068126765907353018603600017566799738475118034508504479215123665403317828460935322952577893391668149239321212023827428768855115737489346208924902379096314265342724953280684525139381552163761085944222325645310968913992883000123998156149927369859435314134944162530581569179818418043727395011786716703273773764276795167415314523754634382979497550308615348622193521056016732666235046776787411935055325019689988118053181251754711441077098286631057593405428962426444610044707709312112751391716119181428065839212678467108667920598137851282151341853542029262329368308989554001704532573493495551607537210376600737472576072275509205179692612030860721552552758907794670464048854301950405064249324181471812407661875 +bconv93 baseconv 4426029146853417025367720356941836917027374665690585076231982072181802375719225879094506456287598162363440493415597520408360627367807804722812443804182212102710556201664485868653986822911921265542394980866096523331822292089857302503825766321327771183237905376259365828176815054427778913968925205733506946435101071448765190095173850484206969168240307124657049943843457022586339728033712198393245316138542945415417442170167968599828768340428535466623833744709544876932996806493692463913605935402535852488132547124697605104178986160936710519064021308902953927324921667723205719689496299860767067792226694958128596332229027015002027903447940262453023000075291669317898684350240664298882104520447369145419045026184705707568152975652762098104707650014974129272535862471796509436495984413583743333947417250306114061837245520856949355877078169228046739281945076768868416100568966965578154130496745483107654752942312090086395797772317049735055026500775123228843889909232945016464589328812434640081087048664735 -> 4426029146853417025367720356941836917027374665690585076231982072181802375719225879094506456287598162363440493415597520408360627367807804722812443804182212102710556201664485868653986822911921265542394980866096523331822292089857302503825766321327771183237905376259365828176815054427778913968925205733506946435101071448765190095173850484206969168240307124657049943843457022586339728033712198393245316138542945415417442170167968599828768340428535466623833744709544876932996806493692463913605935402535852488132547124697605104178986160936710519064021308902953927324921667723205719689496299860767067792226694958128596332229027015002027903447940262453023000075291669317898684350240664298882104520447369145419045026184705707568152975652762098104707650014974129272535862471796509436495984413583743333947417250306114061837245520856949355877078169228046739281945076768868416100568966965578154130496745483107654752942312090086395797772317049735055026500775123228843889909232945016464589328812434640081087048664735 +bconv94 baseconv 413407499190474245721197465692910644958622579600913565853472039268567791652162926569498188805321540617337163791646710401358612444285196358383191307559495640131471396834119964403690734877144096768341947344066709264888680562181101263567481821983454864512458596952511461723240430185665355805538078457741385224030543001798423357134159475328623269319345988839566717899074071292746576996914030876785981180876783530417782402711186149569023253546669751482836857646495795951764884394064173649164310261889845729207571444055131288806769864413903731285884677081889267276510528616757768402954822263919820875327072313002782675421089097077711511251152353417005893212365773436180534046558288295233081211870361618205643281808406059443286138311705900611735555649996466157009958017918933232162590335690943459553940432074482632197931974705524930098697790174415963631066825802347639934588819616403204859798452365774787980022363637121755679727053200780149141137687144151946275776966273205804764324553145275906291633127239 -> 413407499190474245721197465692910644958622579600913565853472039268567791652162926569498188805321540617337163791646710401358612444285196358383191307559495640131471396834119964403690734877144096768341947344066709264888680562181101263567481821983454864512458596952511461723240430185665355805538078457741385224030543001798423357134159475328623269319345988839566717899074071292746576996914030876785981180876783530417782402711186149569023253546669751482836857646495795951764884394064173649164310261889845729207571444055131288806769864413903731285884677081889267276510528616757768402954822263919820875327072313002782675421089097077711511251152353417005893212365773436180534046558288295233081211870361618205643281808406059443286138311705900611735555649996466157009958017918933232162590335690943459553940432074482632197931974705524930098697790174415963631066825802347639934588819616403204859798452365774787980022363637121755679727053200780149141137687144151946275776966273205804764324553145275906291633127239 +bconv95 baseconv 4520681172690179122037740039999613294057255663272734016948645560400846423498678985416150639182861221351816256638062343564565809241108598064120473492553864621106868100377712775651782960332435071117902507303071761356012183447317894340243374350852674336635677686530295081582125149940043529149042472144875142072371125204575422756989039256493750055126206173936957857223711223392842023193497906156007779757149979675544017556086109407668310760520782670396166925609571394129339909626170620440736755018292780437388858027762778677770232121618213477703702004548714507956410792693743374390048361000309515510251053361456438373404972397367152294319017196837938402122720657271244976683356316930170942271846739396024576861209197805952229495078037698207625789762446755347836696375635545175511611685014700798101157819376657939005968710745756546012795629290878370047738922776362159745410226662256043489876720016077195444613717733053475319593298099836642512122825327858854186179147755511552654961604083141117204553564212 -> 4520681172690179122037740039999613294057255663272734016948645560400846423498678985416150639182861221351816256638062343564565809241108598064120473492553864621106868100377712775651782960332435071117902507303071761356012183447317894340243374350852674336635677686530295081582125149940043529149042472144875142072371125204575422756989039256493750055126206173936957857223711223392842023193497906156007779757149979675544017556086109407668310760520782670396166925609571394129339909626170620440736755018292780437388858027762778677770232121618213477703702004548714507956410792693743374390048361000309515510251053361456438373404972397367152294319017196837938402122720657271244976683356316930170942271846739396024576861209197805952229495078037698207625789762446755347836696375635545175511611685014700798101157819376657939005968710745756546012795629290878370047738922776362159745410226662256043489876720016077195444613717733053475319593298099836642512122825327858854186179147755511552654961604083141117204553564212 +bconv96 baseconv 4752934392506115203776955925114374421888387530452017608298438543417001637871959570232817170915202164912029405619800038334324822516105634767127448499687495203912805111534772015726151501041295928398181015565625988526688120779765901727919555960722521488196012794023719086495224321439131203693047876517094516213849526749245822788006993741407113505990357625149618320986688736271317463030131702394003893446117169451284957928172206561724326823671196352062940410575141913778205064398021138947784958575209694149143987468189846007454178765665941220124399916141385475578948128700218759144360903107297198957777795733106077381886435990980246528154578624667984408319537247518378827211797604316495161767454028441813738269331274246361068766799963883624946544944055846262043689124618439762729180406120501492936736550905857964540348336638021953026440878710394136756855074164023469925934399003240647929056541230411615643763409379492774415376898112917935720874933251752676191115149524402940329413566452554881845625403582 -> 4752934392506115203776955925114374421888387530452017608298438543417001637871959570232817170915202164912029405619800038334324822516105634767127448499687495203912805111534772015726151501041295928398181015565625988526688120779765901727919555960722521488196012794023719086495224321439131203693047876517094516213849526749245822788006993741407113505990357625149618320986688736271317463030131702394003893446117169451284957928172206561724326823671196352062940410575141913778205064398021138947784958575209694149143987468189846007454178765665941220124399916141385475578948128700218759144360903107297198957777795733106077381886435990980246528154578624667984408319537247518378827211797604316495161767454028441813738269331274246361068766799963883624946544944055846262043689124618439762729180406120501492936736550905857964540348336638021953026440878710394136756855074164023469925934399003240647929056541230411615643763409379492774415376898112917935720874933251752676191115149524402940329413566452554881845625403582 +bconv97 baseconv 9440459917940859737378342172502343174665932245324208175145619290395032516234610870287748581194581953230497789517063425451112766475246780379408405805480233601616323311860187678137014412277661309181845742090049365361108712847493832900182576044354227929543851842115981956013992238017506897721214999154224240074880236385458111487366906005595115488232282445545779402862156170051814917490327110748633254506425013425657193896985983945936707437349677120715038924970838207248597726578790595627282787695617262854360845552686317427560136719320839454144810825662155925324280481930396251122861875665282363400812537676534534212255298144149378261891210594916048569660530383085561290634455983667583161703600593574455514882227405682732241081459493903372569117958779207608864201920977655743667175153293670665012521685214989654199506016458748355973187882466079202506231067733853004794890869959253635984166267067113931558452982319482550236235363692233587793277706095095421835317620216908929998627896995578156402084481140 -> 9440459917940859737378342172502343174665932245324208175145619290395032516234610870287748581194581953230497789517063425451112766475246780379408405805480233601616323311860187678137014412277661309181845742090049365361108712847493832900182576044354227929543851842115981956013992238017506897721214999154224240074880236385458111487366906005595115488232282445545779402862156170051814917490327110748633254506425013425657193896985983945936707437349677120715038924970838207248597726578790595627282787695617262854360845552686317427560136719320839454144810825662155925324280481930396251122861875665282363400812537676534534212255298144149378261891210594916048569660530383085561290634455983667583161703600593574455514882227405682732241081459493903372569117958779207608864201920977655743667175153293670665012521685214989654199506016458748355973187882466079202506231067733853004794890869959253635984166267067113931558452982319482550236235363692233587793277706095095421835317620216908929998627896995578156402084481140 +bconv98 baseconv 6704886872507410943521042950791113144577915980841725166060511226204138145394314521104430465504689530540078949710319466249121985246527296056648028474984175774720196046741947700217437210280185308245932651849976382399724052481747749677724507166310908910959976175868245625043071403512812598943508493713790369112251144031591554038385995504194239090851220644540890902596429309453678660681727912003169323034260665137554293950287316648014163760996895994661890730473061402662402938816519578036579623054695262607503915822342733646369296115677530888398689752950928393422090860233673510949078389045234114703739319143306592624524476807557496800809129250211623316637431274033120957833970536207043450663219080219913062475181618134805756777371462456137801488606781977034991206523703225205324401044625775271386324467775015859888342366632607836863630164181334949645837546372900939097845512142401684877569394627266290892397886824734784386115026838858550196257887475567160537308617570136423381156671125001863184307060166 -> 6704886872507410943521042950791113144577915980841725166060511226204138145394314521104430465504689530540078949710319466249121985246527296056648028474984175774720196046741947700217437210280185308245932651849976382399724052481747749677724507166310908910959976175868245625043071403512812598943508493713790369112251144031591554038385995504194239090851220644540890902596429309453678660681727912003169323034260665137554293950287316648014163760996895994661890730473061402662402938816519578036579623054695262607503915822342733646369296115677530888398689752950928393422090860233673510949078389045234114703739319143306592624524476807557496800809129250211623316637431274033120957833970536207043450663219080219913062475181618134805756777371462456137801488606781977034991206523703225205324401044625775271386324467775015859888342366632607836863630164181334949645837546372900939097845512142401684877569394627266290892397886824734784386115026838858550196257887475567160537308617570136423381156671125001863184307060166 +bconv99 baseconv 1155968992608422289594104162818340523170202305209406440396958692240490603649155770909178606143549313015767809829007406432212771080436655252878304905072402738816801551610567766153067073802189286181952144746202629891675215247548892774554807321037972799740861548353429692303649457967202470726168558507714348340834394787597044865285791917229839283803381754995945324742970782152022063374956931939357268847072511766715685009718368127529225488556733251967125395825343393134672282273926070348752742065771661403885298644066488545086645522992379147037625570455758692245653173385562916183902301107591474359052067454234538869737454412735563791526436027650366275283973423818557128399836668678046965511869261784714423275036274417573095996245649139906638721073160619388970589962186269504429261527201672006306620953765275871423637434777343915177962243495106776735301904977080800465873621397235009091525453243093729333196771296396575732423443653180032738027692341835972878252342567845075568912167896200494980620699997 -> 1155968992608422289594104162818340523170202305209406440396958692240490603649155770909178606143549313015767809829007406432212771080436655252878304905072402738816801551610567766153067073802189286181952144746202629891675215247548892774554807321037972799740861548353429692303649457967202470726168558507714348340834394787597044865285791917229839283803381754995945324742970782152022063374956931939357268847072511766715685009718368127529225488556733251967125395825343393134672282273926070348752742065771661403885298644066488545086645522992379147037625570455758692245653173385562916183902301107591474359052067454234538869737454412735563791526436027650366275283973423818557128399836668678046965511869261784714423275036274417573095996245649139906638721073160619388970589962186269504429261527201672006306620953765275871423637434777343915177962243495106776735301904977080800465873621397235009091525453243093729333196771296396575732423443653180032738027692341835972878252342567845075568912167896200494980620699997 Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/binop_eq.decTest ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/binop_eq.decTest Thu Jan 21 18:27:06 2010 @@ -0,0 +1,4403 @@ +rounding: half_even +minExponent: -425000000 +maxExponent: 425000000 +precision: 116 +add_eq0 add_eq -68882998635339425466863586221872749420664434040997630548413636880417776447375217744441898147384895863101 -> -137765997270678850933727172443745498841328868081995261096827273760835552894750435488883796294769791726202 +precision: 27 +add_eq1 add_eq +926069853 -> 1852139706 +precision: 104 +add_eq2 add_eq -Infinity -> -Infinity +precision: 60 +add_eq3 add_eq -8820.48161934364928397387702871614085555803 -> -17640.96323868729856794775405743228171111606 +precision: 81 +add_eq4 add_eq -Inf -> -Infinity +precision: 65 +add_eq5 add_eq -Infinity -> -Infinity +precision: 21 +add_eq6 add_eq -41146525508063927 -> -82293051016127854 +precision: 100 +add_eq7 add_eq -640779228952153854324783733225497121450750153631275044917206111.363254604874E372237657 -> -1.281558457904307708649567466450994242901500307262550089834412222726509209748E+372237720 +precision: 200 +add_eq8 add_eq -.72116638699980904869901174037193762E-281846212 -> -1.44233277399961809739802348074387524E-281846212 +precision: 9 +add_eq9 add_eq +3963 -> 7926 +precision: 197 +add_eq10 add_eq +Infinity -> Infinity +precision: 25 +add_eq11 add_eq -841927932107286e-405002793 -> -1.683855864214572E-405002778 +precision: 278 +add_eq12 add_eq -3517549183442249435902332621531559266259972062322982119140819412759484205433918206253017294915590806165845935005424341503996896726514682476445398431715443301052137989323169545244329718144192803327334857518333767517480135363761842046382210536060518935444198e398717947 -> -7.035098366884498871804665243063118532519944124645964238281638825518968410867836412506034589831181612331691870010848683007993793453029364952890796863430886602104275978646339090488659436288385606654669715036667535034960270727523684092764421072121037870888396E+398718202 +precision: 11 +add_eq13 add_eq +.76369594E+12091955 -> 1.52739188E+12091955 +precision: 209 +add_eq14 add_eq 32114357810775993591114159996371569108094497047513614776553638227043929220222753032336575946843532666826332077968459480186193928185252093942655055069988232897191850662169080168E210809195 -> 6.4228715621551987182228319992743138216188994095027229553107276454087858440445506064673151893687065333652664155936918960372387856370504187885310110139976465794383701324338160336E+210809370 +precision: 91 +add_eq15 add_eq -683782424084810246040057425006165512383833369904542138586101023485116423473570209518851E-144358604 -> -1.367564848169620492080114850012331024767666739809084277172202046970232846947140419037702E-144358517 +precision: 50 +add_eq16 add_eq +1267347059903124863110810459903860343e+49166897 -> 2.534694119806249726221620919807720686E+49166933 +precision: 270 +add_eq17 add_eq +78335694705835409168279849498675702041507853050549836858612575283244278521895568230879473041358260903726542258255570776755457195670.730087634337415691 -> 156671389411670818336559698997351404083015706101099673717225150566488557043791136461758946082716521807453084516511141553510914391341.460175268674831382 +precision: 16 +add_eq18 add_eq 18782798955 -> 37565597910 +precision: 113 +add_eq19 add_eq -4486843092694772134107751364987281242190440510117042803804564046896411244822763252656467974536213231 -> -8973686185389544268215502729974562484380881020234085607609128093792822489645526505312935949072426462 +precision: 38 +add_eq20 add_eq -901977655537195169885649E-56154430 -> -1.803955311074390339771298E-56154406 +precision: 279 +add_eq21 add_eq -41020926029803077426429938239115259275974555103608e+50687786 -> -8.2041852059606154852859876478230518551949110207216E+50687835 +precision: 152 +add_eq22 add_eq 722590581407189452508623101309612881747559526871370484948419036376573920445450935713374778661e249520908 -> 1.445181162814378905017246202619225763495119053742740969896838072753147840890901871426749557322E+249521001 +precision: 29 +add_eq23 add_eq +NaN17682947140354228 -> NaN17682947140354228 +precision: 92 +add_eq24 add_eq +78187728223254 -> 156375456446508 +precision: 238 +add_eq25 add_eq 12035738496035655654113279124069329789099674489152244040643800319431728361487628565627194976813764326598882877782267641805846186981551451340539388430380183201731.147530052764182929482275247292610015164041288138324209975148651928310754856 -> 24071476992071311308226558248138659578199348978304488081287600638863456722975257131254389953627528653197765755564535283611692373963102902681078776860760366403462.295060105528365858964550494585220030328082576276648419950297303856621509712 +precision: 112 +add_eq26 add_eq +.316263196622360666159649274338764679732457803938000057007804734681046581081544 -> 0.632526393244721332319298548677529359464915607876000114015609469362093162163088 +precision: 231 +add_eq27 add_eq -59152987280932162156481514650568.1285947062956147640295546879923358550787162777520206136269763277635073569161760472149242147259031774687063595845026958470299409595859E-326452505 -> -1.183059745618643243129630293011362571894125912295280591093759846717101574325555040412272539526555270147138323520944298484294518063549374127191690053916940598819191718E-326452473 +precision: 28 +add_eq28 add_eq +2.9 -> 5.8 +precision: 295 +add_eq29 add_eq -166481718.5736723183090642309015096774184499313924931 -> -332963437.1473446366181284618030193548368998627849862 +precision: 23 +add_eq30 add_eq -10035306653863455567418E-141720971 -> -2.0070613307726911134836E-141720949 +precision: 234 +add_eq31 add_eq -423174079716064871547932.282964040855085851149609577090301E-172503494 -> -8.46348159432129743095864565928081710171702299219154180602E-172503471 +precision: 82 +add_eq32 add_eq -.17003636072120956345384192382685586606717196052648183079 -> -0.34007272144241912690768384765371173213434392105296366158 +precision: 90 +add_eq33 add_eq -Infinity -> -Infinity +precision: 214 +add_eq34 add_eq -sNaN569700261294529223612019718361067381689000251635299219367345742029813 -> -NaN569700261294529223612019718361067381689000251635299219367345742029813 Invalid_operation +precision: 287 +add_eq35 add_eq +5771523088748479951946530196652401119286587936706699468953779092626962476851306023704482010546792424614335797557912786200898834618105607501378362356684443032987181495731042582020218582892825972994486684021973962567897318.34887412080471432724266103423565612431830143140392700899 -> 11543046177496959903893060393304802238573175873413398937907558185253924953702612047408964021093584849228671595115825572401797669236211215002756724713368886065974362991462085164040437165785651945988973368043947925135794636.69774824160942865448532206847131224863660286280785401798 +precision: 142 +add_eq36 add_eq 2028600036427364398260742061502856151478098265552449778897236584544445887329861879092498916734655679e-329961115 -> 4.057200072854728796521484123005712302956196531104899557794473169088891774659723758184997833469311358E-329961016 +precision: 210 +add_eq37 add_eq -Infinity -> -Infinity +precision: 211 +add_eq38 add_eq 4568410453503752177388774481356461780004248228202230921355717057115494091647106251171625328193087073160231.691637576449618906621582446029970116748076619911246E+151952700 -> 9.136820907007504354777548962712923560008496456404461842711434114230988183294212502343250656386174146320463383275152899237813243164892059940233496153239822492E+151952805 +precision: 211 +add_eq39 add_eq .52536726643468151065419659927947894515446446983972037683107440234475026741743289E-187150116 -> 1.05073453286936302130839319855895789030892893967944075366214880468950053483486578E-187150116 +precision: 277 +add_eq40 add_eq -NaN -> -NaN +precision: 107 +add_eq41 add_eq -.9898219813603694947950150122 -> -1.9796439627207389895900300244 +precision: 166 +add_eq42 add_eq -Inf -> -Infinity +precision: 69 +add_eq43 add_eq +.67733215748051657183618E-394638690 -> 1.35466431496103314367236E-394638690 +precision: 36 +add_eq44 add_eq -.53567e38218481 -> -1.07134E+38218481 +precision: 241 +add_eq45 add_eq -5933594434192137114522076617896271304795030810595678085104997073130435122883533385569443506418245768215845619782657120227082751786111682799201599877360884493167191623695541057791060179485613449517507232463453576577226627 -> -11867188868384274229044153235792542609590061621191356170209994146260870245767066771138887012836491536431691239565314240454165503572223365598403199754721768986334383247391082115582120358971226899035014464926907153154453254 +precision: 39 +add_eq46 add_eq -694742502821120 -> -1389485005642240 +precision: 18 +add_eq47 add_eq -6322662136772517 -> -12645324273545034 +precision: 96 +add_eq48 add_eq -9811057708849.19690 -> -19622115417698.39380 +precision: 81 +add_eq49 add_eq -6193645583645366942466324000895867674129131722128691323238910038913521320900e251229105 -> -1.2387291167290733884932648001791735348258263444257382646477820077827042641800E+251229181 +precision: 145 +add_eq50 add_eq .5717388168181675479793798739060408912049207989649671796926969366450135894836902236013024655143602745074686249263838743970546398768701908532 -> 1.1434776336363350959587597478120817824098415979299343593853938732900271789673804472026049310287205490149372498527677487941092797537403817064 +precision: 126 +add_eq51 add_eq -742417.16107347101461684E-210860490 -> -1.48483432214694202923368E-210860484 +precision: 70 +add_eq52 add_eq +.4147462128592503113428922134014127094305387978534613164e292173290 -> 8.294924257185006226857844268028254188610775957069226328E+292173289 +precision: 184 +add_eq53 add_eq -59042579837112433.28823459 -> -118085159674224866.57646918 +precision: 78 +add_eq54 add_eq 2138229604703280612812582395860887783091451115517627323984446894987139 -> 4276459209406561225625164791721775566182902231035254647968893789974278 +precision: 55 +add_eq55 add_eq Infinity -> Infinity +precision: 222 +add_eq56 add_eq -Inf -> -Infinity +precision: 279 +add_eq57 add_eq +41094596135399713403246823474078307069107822795335763689946690767396405022667973730807370589925435013992557442771640167438807128906730514443083292367585949216305642230099755191573714077.815996474697569867545140169708787929580752589e-99871031 -> 8.2189192270799426806493646948156614138215645590671527379893381534792810045335947461614741179850870027985114885543280334877614257813461028886166584735171898432611284460199510383147428155631992949395139735090280339417575859161505178E-99870847 +precision: 96 +add_eq58 add_eq +2342 -> 4684 +precision: 189 +add_eq59 add_eq 88363636657384329808587257235557508476723.869186837350558423020210128115479843904174576662967182e339296179 -> 1.76727273314768659617174514471115016953447738373674701116846040420256230959687808349153325934364E+339296220 +precision: 254 +add_eq60 add_eq -3915550331730799919376204001967445446.8238574829622312267204594245909618840193637066697552186398295941958269E-159611691 -> -7.8311006634615998387524080039348908936477149659244624534409188491819237680387274133395104372796591883916538E-159611655 +precision: 61 +add_eq61 add_eq -7448126356976537703479857244852938971. -> -14896252713953075406959714489705877942 +precision: 193 +add_eq62 add_eq -.7443354698489434118719516435014834509600686596305434865861710265366178762661142583163778017665533559112779215400051670312e-366268463 -> -1.4886709396978868237439032870029669019201373192610869731723420530732357525322285166327556035331067118225558430800103340624E-366268463 +precision: 226 +add_eq63 add_eq -427287263481430898626788150413858765928614414513456 -> -854574526962861797253576300827717531857228829026912 +precision: 286 +add_eq64 add_eq -Infinity -> -Infinity +precision: 73 +add_eq65 add_eq +.63040096714975097354768E29087504 -> 1.26080193429950194709536E+29087504 +precision: 55 +add_eq66 add_eq +309368017634711871158101159217.75 -> 618736035269423742316202318435.50 +precision: 73 +add_eq67 add_eq 565530548738927273500157239856350E144402084 -> 1.131061097477854547000314479712700E+144402117 +precision: 275 +add_eq68 add_eq +.2191064293665E+56294531 -> 4.382128587330E+56294530 +precision: 125 +add_eq69 add_eq -9162979361027963961437402257741194518726084932821319541340898958167245082874E-412490594 -> -1.8325958722055927922874804515482389037452169865642639082681797916334490165748E-412490518 +precision: 114 +add_eq70 add_eq +.83976365223031017909241454875373895182262480854965 -> 1.67952730446062035818482909750747790364524961709930 +precision: 276 +add_eq71 add_eq +Infinity -> Infinity +precision: 171 +add_eq72 add_eq +93437126.5656440703974331304880224005670593221387603259963064789530971661208392569522293249553579645328678596428836972354616711296798281362150327077058259553551901 -> 186874253.1312881407948662609760448011341186442775206519926129579061943322416785139044586499107159290657357192857673944709233422593596562724300654154116519107103802 +precision: 81 +add_eq73 add_eq -Infinity -> -Infinity +precision: 70 +add_eq74 add_eq +.57794096682626731208e+379515947 -> 1.15588193365253462416E+379515947 +precision: 85 +add_eq75 add_eq -14.E81271140 -> -2.8E+81271141 +precision: 188 +add_eq76 add_eq -.9775730277544241491641919159161146268812545245448365010502323485315730768639820872219334361751891761721586e-122514192 -> -1.9551460555088482983283838318322292537625090490896730021004646970631461537279641744438668723503783523443172E-122514192 +precision: 231 +add_eq77 add_eq -Inf -> -Infinity +precision: 203 +add_eq78 add_eq -68042781045397771522292816039054557083033306588911360015087581119217856166638733208934376292915624102298 -> -136085562090795543044585632078109114166066613177822720030175162238435712333277466417868752585831248204596 +precision: 58 +add_eq79 add_eq +2735 -> 5470 +precision: 88 +add_eq80 add_eq -19705249430226192533720143206917680527709728894 -> -39410498860452385067440286413835361055419457788 +precision: 55 +add_eq81 add_eq +47268891E+388844743 -> 9.4537782E+388844750 +precision: 201 +add_eq82 add_eq +3719250081060827753353824022158305622506216360754075.343124138338091822866213968351332987878402624804147886759050006497706233809809904852000945896192 -> 7438500162121655506707648044316611245012432721508150.686248276676183645732427936702665975756805249608295773518100012995412467619619809704001891792384 +precision: 147 +add_eq83 add_eq -4507408729632993075285946137322E-89370884 -> -9.014817459265986150571892274644E-89370854 +precision: 213 +add_eq84 add_eq -18946245529698534527477539207880208950270436731425498206E-232510777 -> -3.7892491059397069054955078415760417900540873462850996412E-232510722 +precision: 202 +add_eq85 add_eq -.1160872466843020474546838053439180148944913736126154985031388319394436070740662614711081444253895763299276200973534109640860998120660460037206923900325693893491333 -> -0.2321744933686040949093676106878360297889827472252309970062776638788872141481325229422162888507791526598552401947068219281721996241320920074413847800651387786982666 +precision: 30 +add_eq86 add_eq +6196e75176987 -> 1.2392E+75176991 +precision: 261 +add_eq87 add_eq -20879909611696889805431128844755965033513611733955477497132526447325463645980750E284153687 -> -4.1759819223393779610862257689511930067027223467910954994265052894650927291961500E+284153766 +precision: 260 +add_eq88 add_eq 15777051784869834774217858131277114219650548011830230269.6947702542201715E+267645544 -> 3.15541035697396695484357162625542284393010960236604605393895405084403430E+267645599 +precision: 248 +add_eq89 add_eq -.3314890988993856871148614278938772314142062006887188202057252839938411079203255942778079702275160362202511571e-407488052 -> -6.629781977987713742297228557877544628284124013774376404114505679876822158406511885556159404550320724405023142E-407488053 +precision: 2 +add_eq90 add_eq +71 -> 1.4E+2 Rounded Inexact +precision: 169 +add_eq91 add_eq -1936775583675620553757985801533.70200615809472790357079104472296497694860747244500893262888e+332724190 -> -3.87355116735124110751597160306740401231618945580714158208944592995389721494489001786525776E+332724220 +precision: 28 +add_eq92 add_eq 6028281e-27055986 -> 1.2056562E-27055979 +precision: 19 +add_eq93 add_eq Inf -> Infinity +precision: 146 +add_eq94 add_eq -7568122499468077614447019230803397447228374908277620527455659417553638386889418513078019026614286213332688743684803573734265 -> -15136244998936155228894038461606794894456749816555241054911318835107276773778837026156038053228572426665377487369607147468530 +precision: 196 +add_eq95 add_eq 1604660763980250714158392427075712533728179793879263829846207609818838505030558242648447646527046196504349689732999397279905555406298238798104303993704824017.672662433601 -> 3209321527960501428316784854151425067456359587758527659692415219637677010061116485296895293054092393008699379465998794559811110812596477596208607987409648035.345324867202 +precision: 23 +add_eq96 add_eq -75101505200232748675 -> -150203010400465497350 +precision: 184 +add_eq97 add_eq +31422842452474992352848246575325983693456503121955774052367497919549246742315136900757056630872129996690697436.93112146114244757306664156708427554437066171468 -> 62845684904949984705696493150651967386913006243911548104734995839098493484630273801514113261744259993381394873.86224292228489514613328313416855108874132342936 +precision: 258 +add_eq98 add_eq -997565036538917747114922627947784992637915753143515054590082206601.4515423420808541322e+919186 -> -1.9951300730778354942298452558955699852758315062870301091801644132029030846841617082644E+919252 +precision: 297 +add_eq99 add_eq -NaN3692225015753843658446838674575739549149866 -> -NaN3692225015753843658446838674575739549149866 +precision: 229 +compare_eq0 compare_eq -9007353935772116764312875432306874137572149203516326025449391516289574770569042168835349563719357068848819005785238103768955745133965649225157281302191405217212913946343583511293659606356822479556100 -> 0 +precision: 191 +compare_eq1 compare_eq +5916794372888113130055019620156129327439018422817 -> 0 +precision: 199 +compare_eq2 compare_eq -6385564075788557361489053622233363254132221134310928544266570524036736301587945295E-378058779 -> 0 +precision: 67 +compare_eq3 compare_eq -Inf -> 0 +precision: 138 +compare_eq4 compare_eq -731794.5301062241561263430594144186812202291658812531098345748702914099163010 -> 0 +precision: 64 +compare_eq5 compare_eq -74656378421372356611717350391123636755552143017681237816518 -> 0 +precision: 202 +compare_eq6 compare_eq Infinity -> 0 +precision: 166 +compare_eq7 compare_eq -3135268112676303401003012206988648493047143470525854534119158778.621736466496668e202408875 -> 0 +precision: 72 +compare_eq8 compare_eq -211103475906311804063460111467516.611650629842907514261205948039 -> 0 +precision: 226 +compare_eq9 compare_eq +247151100684288841247818405518420486991489238997113284827328194394728120895752620616393699921722802522238696968765129 -> 0 +precision: 213 +compare_eq10 compare_eq 72473614479866.541342177106008e203745652 -> 0 +precision: 81 +compare_eq11 compare_eq -9893686669365087842005e187770999 -> 0 +precision: 61 +compare_eq12 compare_eq +719798193254487550725262309403794826520972209797933659E-207056196 -> 0 +precision: 86 +compare_eq13 compare_eq -8834904932890140954738312548270317E+326893162 -> 0 +precision: 286 +compare_eq14 compare_eq +4732861923965992367477077756422269542642483872091716920679064371688208226350778614637935127074494636137933801927427678692345623266371997170679032064 -> 0 +precision: 167 +compare_eq15 compare_eq +Inf -> 0 +precision: 299 +compare_eq16 compare_eq +12591.4413976810777576488622 -> 0 +precision: 66 +compare_eq17 compare_eq 116741932974250715770498940508884581291e35597230 -> 0 +precision: 67 +compare_eq18 compare_eq -.990252744417428594382738034117697734761076395891 -> 0 +precision: 296 +compare_eq19 compare_eq -5681060144595797043633127.18524117463305393307681289721041904519730457 -> 0 +precision: 255 +compare_eq20 compare_eq +730304626397709830365997833099650354508726032571144630117923605481854245975456299775845771185393001434918550393807780230521935967322466355895162477917973348986037561856746666031151 -> 0 +precision: 211 +compare_eq21 compare_eq -4254933926287947935464416595245014214493488233384119601501584707345520122558187821633820293312294291107860230328393898898372276632 -> 0 +precision: 162 +compare_eq22 compare_eq -794147335845740783746721412911405606235374996808278547957651329296099323760787267455908892781443755539848741366173255083430990537758465959517213344645528019307 -> 0 +precision: 88 +compare_eq23 compare_eq -.91968073570857866355163324199881176276e-341310937 -> 0 +precision: 115 +compare_eq24 compare_eq -Inf -> 0 +precision: 140 +compare_eq25 compare_eq -1972133465063e-117370946 -> 0 +precision: 33 +compare_eq26 compare_eq -93944508708375045473e+123521832 -> 0 +precision: 98 +compare_eq27 compare_eq .785395940277344662788524612832 -> 0 +precision: 169 +compare_eq28 compare_eq 6893914955473388400778406487797306220247981693781278060 -> 0 +precision: 77 +compare_eq29 compare_eq -56898105733392710386080719824.733278705110711100843350259861546411700e135519815 -> 0 +precision: 2 +compare_eq30 compare_eq -46 -> 0 +precision: 208 +compare_eq31 compare_eq Infinity -> 0 +precision: 60 +compare_eq32 compare_eq +101E170147874 -> 0 +precision: 77 +compare_eq33 compare_eq -66258055451775755467691 -> 0 +precision: 69 +compare_eq34 compare_eq +1897535680623417547587049270013143133467911398584597438977961290554 -> 0 +precision: 201 +compare_eq35 compare_eq +Infinity -> 0 +precision: 81 +compare_eq36 compare_eq -2964. -> 0 +precision: 273 +compare_eq37 compare_eq -198974508394979024808079739951986165355645721532590954539888124910127985871393714979286224869911305505052371.45991079666713713678489912150347030550193749468732910306275099512733633348328775648975332365014 -> 0 +precision: 257 +compare_eq38 compare_eq -Inf -> 0 +precision: 217 +compare_eq39 compare_eq -2066391444308.668277764724131630012831233259119 -> 0 +precision: 39 +compare_eq40 compare_eq -8449260028672859015 -> 0 +precision: 117 +compare_eq41 compare_eq +7996192339752622879894203560570261377931132719630641168832842390103509632 -> 0 +precision: 246 +compare_eq42 compare_eq .621739602491313265130828220442314512048666506402357407931301794294424321070098142999551860110495517374132020686360491901268492799941091583144600365815 -> 0 +precision: 237 +compare_eq43 compare_eq -.6332735827544529163950445507505516703221686705762208884639055540485091879970450169072912989599355324655816810653778594544070895E86713243 -> 0 +precision: 257 +compare_eq44 compare_eq +.1277182288063531468560805784932256275452526473784679302678063160415585510873610306E+224019300 -> 0 +precision: 277 +compare_eq45 compare_eq 89178868201045237051962407667621610959409753235165133715944135920042759819399908871954728392764E-86991959 -> 0 +precision: 265 +compare_eq46 compare_eq +88324386722078668271579193759749782941431898032339143208589736362337433632757799609566350683510071551084177840033813915991941233662802262498578768975408899018494404671188603951211763363140019452409300874009545227.1965293920 -> 0 +precision: 126 +compare_eq47 compare_eq +7439319482112839387765.5161495604875859889324844362597311 -> 0 +precision: 229 +compare_eq48 compare_eq +1786.34818903696689288681914890190e+402589201 -> 0 +precision: 270 +compare_eq49 compare_eq +6920765670667989252208419493317093.4703792 -> 0 +precision: 228 +compare_eq50 compare_eq -418730244981491866838672967268977447561018816066706673443653360744583381585453539650868050155525126641116271455901853690267247104884357672914210921849923618900368186580461149681534e+127960255 -> 0 +precision: 171 +compare_eq51 compare_eq -.860031108648211040650227268088699123347461459509181370871160991605527837826222814417778917710675964122439961988391326866566710085406262326993281 -> 0 +precision: 12 +compare_eq52 compare_eq +312 -> 0 +precision: 289 +compare_eq53 compare_eq -57965161388903348743915079271873493452028466186269316289984350892722208589712921378172501460523645733920822603834667212669193536949921266749407010589444370.168837967967024237574639374901517823535355684209175099642543559722312791910474539475336258596 -> 0 +precision: 112 +compare_eq54 compare_eq -7636834335469345853726083094186228657150351657946659168 -> 0 +precision: 34 +compare_eq55 compare_eq -8490774049191 -> 0 +precision: 265 +compare_eq56 compare_eq +.2290660417697529884599773401290365250016788100209681992341111134875657561490049891 -> 0 +precision: 241 +compare_eq57 compare_eq 846426125581058816461248848698482507469272761120480801201134686535236949958561472015611522446267807686291882835969383458E-397419314 -> 0 +precision: 173 +compare_eq58 compare_eq -24826274437662289781 -> 0 +precision: 199 +compare_eq59 compare_eq 479278501724080635557584933192754760541093858843 -> 0 +precision: 300 +compare_eq60 compare_eq 936862575282440780126712802279886124221523377283079974758143265370.466300240626681434796438678 -> 0 +precision: 10 +compare_eq61 compare_eq +945 -> 0 +precision: 288 +compare_eq62 compare_eq -.145260377713219170355463634611793714594878041876034714155948650069869764430543570286554932697246690056716934633807198845325621241158009676371813189817039187404551192218420909160671293727773714298042649759903982658674247989447892746944118244345112761820780312094060635246227683 -> 0 +precision: 66 +compare_eq63 compare_eq 688405296607045181930448545412977012291569481336 -> 0 +precision: 74 +compare_eq64 compare_eq -237375047118729109400227640042325462522683 -> 0 +precision: 73 +compare_eq65 compare_eq -1912568279265251151469188620017960685182403827445381 -> 0 +precision: 12 +compare_eq66 compare_eq -1.4e+165940976 -> 0 +precision: 218 +compare_eq67 compare_eq +180770399264466643670636337655460136422461479935146367023634970315665002519713045524989630825063567363020323362001624610255654587936969903.4702868763940233805689072889388293140404858557468821871376054990851207938084e-62855166 -> 0 +precision: 158 +compare_eq68 compare_eq 43814162216963469838140237940804555863650417044001367159311129.5851618187237587980353426224277338514683035968957923818834572504473316133863394397070e-256639213 -> 0 +precision: 174 +compare_eq69 compare_eq 8228630788.863469510840782113437262545317700231410304998077667310667412677082755905260 -> 0 +precision: 20 +compare_eq70 compare_eq +13674294218 -> 0 +precision: 40 +compare_eq71 compare_eq -.9593579935840389625267202708174E167047834 -> 0 +precision: 85 +compare_eq72 compare_eq +49.130637018328607972310407605668923247953353912 -> 0 +precision: 110 +compare_eq73 compare_eq -34703055561639688623200472 -> 0 +precision: 104 +compare_eq74 compare_eq 6942423911248970195403525.350602635738 -> 0 +precision: 38 +compare_eq75 compare_eq +2995891e-350109900 -> 0 +precision: 6 +compare_eq76 compare_eq +41.514e-93272807 -> 0 +precision: 83 +compare_eq77 compare_eq 883986733650.665794483121877140316157432 -> 0 +precision: 78 +compare_eq78 compare_eq -.8531432400131245548709746450098421508618538527983099792859794024 -> 0 +precision: 3 +compare_eq79 compare_eq -Infinity -> 0 +precision: 281 +compare_eq80 compare_eq +.71427589545839183943272594085797004917353585532052004005311986996003650685761642549874403348788276151755046948424535426445077677264252404783621862 -> 0 +precision: 36 +compare_eq81 compare_eq +603829499360264303518393077530830400E-226494507 -> 0 +precision: 269 +compare_eq82 compare_eq -776175063291600101366895543999053897412353752444533765805847005790728111619705296477560833600391610579614526217307111556043927146337021099851673441404565920794215496790781984778088515352139335819552 -> 0 +precision: 51 +compare_eq83 compare_eq -17 -> 0 +precision: 265 +compare_eq84 compare_eq -518161597424055338969561061851e+119183938 -> 0 +precision: 8 +compare_eq85 compare_eq 77533103 -> 0 +precision: 41 +compare_eq86 compare_eq -Infinity -> 0 +precision: 288 +compare_eq87 compare_eq -.307735241395178289000380750144607402635680544024548717328034910349575240203536 -> 0 +precision: 14 +compare_eq88 compare_eq -9610128.2e126328502 -> 0 +precision: 26 +compare_eq89 compare_eq -25.5 -> 0 +precision: 287 +compare_eq90 compare_eq 9498912911528E423364418 -> 0 +precision: 113 +compare_eq91 compare_eq -9835834697125510303483901957471429469951199273017395166458433801704118589945935768710890412467603065163833 -> 0 +precision: 298 +compare_eq92 compare_eq +5989973200 -> 0 +precision: 21 +compare_eq93 compare_eq +855.55871 -> 0 +precision: 261 +compare_eq94 compare_eq -170154907914149531616787479918808412704670690785004101130413905778369523828316743207760324803815449646295770057821185763813291181572254116186249751 -> 0 +precision: 153 +compare_eq95 compare_eq 8457584552239694621071976525341210303074870891413068486860208541.7615546033117466805201385747294478 -> 0 +precision: 90 +compare_eq96 compare_eq -2389609473350169301064192444054 -> 0 +precision: 17 +compare_eq97 compare_eq +NaN -> NaN +precision: 151 +compare_eq98 compare_eq -8947511627083754886602209 -> 0 +precision: 130 +compare_eq99 compare_eq 976124138088614126470201135226780680.704702147394065847816730859457932432206409349567706054485514784856262724882464446069787 -> 0 +precision: 248 +comparesig_eq0 comparesig_eq +443218328141977116618499219869427792863703940883837500974693489910900558802508122820265027945576438583080053472499267789810322489682277548554477094690233317889310073639439589694465931676 -> 0 +precision: 255 +comparesig_eq1 comparesig_eq 37997421400698793468295234499258938258888893937595659697398091686412465480 -> 0 +precision: 103 +comparesig_eq2 comparesig_eq +Inf -> 0 +precision: 191 +comparesig_eq3 comparesig_eq -6933701919877978919150970419010899976433950357154499492837634590108537724381523643084717306147027867742153815638220191504998319490472095784410069242528741482 -> 0 +precision: 193 +comparesig_eq4 comparesig_eq -47812518464585119626726035403928385947656659998352074179212502021696385806273985217167217928648389886030152648993468188319199223483710363052017557 -> 0 +precision: 163 +comparesig_eq5 comparesig_eq 360337639872546936929007085256394475943155702027596131443312309878840379766218579145537526500698338603338714019025407380306e-418265056 -> 0 +precision: 242 +comparesig_eq6 comparesig_eq -31760299193180193086039340877196612051E-353127402 -> 0 +precision: 137 +comparesig_eq7 comparesig_eq -.998382178397181588724984523380125082139160955422944628402154086189654343 -> 0 +precision: 94 +comparesig_eq8 comparesig_eq -21521287105485335900058835677997929.685115 -> 0 +precision: 130 +comparesig_eq9 comparesig_eq -784068E248558867 -> 0 +precision: 35 +comparesig_eq10 comparesig_eq +51702787700946121114 -> 0 +precision: 137 +comparesig_eq11 comparesig_eq 4667014531958E-147495966 -> 0 +precision: 166 +comparesig_eq12 comparesig_eq +4760165972926658E381246741 -> 0 +precision: 119 +comparesig_eq13 comparesig_eq +5505737404560022093411498104262575867104894784446366690414229636274784147258688774440827920763 -> 0 +precision: 132 +comparesig_eq14 comparesig_eq -347807043852551101647101869412552583233298278825134385405040508165964901659202085513866758597221085826837780440667693198445 -> 0 +precision: 118 +comparesig_eq15 comparesig_eq -50642681 -> 0 +precision: 190 +comparesig_eq16 comparesig_eq -.94361683541474257700162793360802243112269273008329605231046550673638851756932412089551 -> 0 +precision: 232 +comparesig_eq17 comparesig_eq -252557444700430861780 -> 0 +precision: 89 +comparesig_eq18 comparesig_eq -4183946310068446304739.2285521213055446611619030277e-357595691 -> 0 +precision: 46 +comparesig_eq19 comparesig_eq -365136.924140586E-44399100 -> 0 +precision: 96 +comparesig_eq20 comparesig_eq -861426279194159791435914948351498849796524754107803000188924032541099623936859 -> 0 +precision: 231 +comparesig_eq21 comparesig_eq -Infinity -> 0 +precision: 34 +comparesig_eq22 comparesig_eq -18150478437875.E-281898512 -> 0 +precision: 227 +comparesig_eq23 comparesig_eq 57916107015060486447703111925486531310742653212070825099842127990315480932510789419377847269547151321271440862244938257019568953721526841840680184399775395579 -> 0 +precision: 204 +comparesig_eq24 comparesig_eq -182860817813518478024759693816327277831702667588452582010605829748826591672626251536E111616411 -> 0 +precision: 209 +comparesig_eq25 comparesig_eq -79511531912729216167521329108591865165893985791420024207.6552167446519439569057292654485977374938190502497132123700730185171927276352976878957843271050904682654 -> 0 +precision: 182 +comparesig_eq26 comparesig_eq +1269441806540666651697925608827109930 -> 0 +precision: 8 +comparesig_eq27 comparesig_eq -30. -> 0 +precision: 259 +comparesig_eq28 comparesig_eq +224851905702113858.35886883229993744933464854149639851744288954052052504348415853760382663928441048089622941688310835722566004980632091599264978892685180352267553802511339438517250598851386797430618480301600593962328367979899977 -> 0 +precision: 244 +comparesig_eq29 comparesig_eq -.143093784725095670283239974024223403475502540616850769748698331459416123974359162423020785322549107657527135425710818209687219690060596206609226856701577171841263673918699963154804763074987224764175721736349e-402448170 -> 0 +precision: 233 +comparesig_eq30 comparesig_eq +7962.2 -> 0 +precision: 64 +comparesig_eq31 comparesig_eq .345219 -> 0 +precision: 170 +comparesig_eq32 comparesig_eq +NaN -> NaN Invalid_operation +precision: 45 +comparesig_eq33 comparesig_eq +.6565938761315e227931936 -> 0 +precision: 208 +comparesig_eq34 comparesig_eq +.256549465694027632146005314147130212461745309999148219932655 -> 0 +precision: 263 +comparesig_eq35 comparesig_eq -243405782531174049750660374386612021870199513832409370489204978027636588778346722665138689567246206883577946196596 -> 0 +precision: 140 +comparesig_eq36 comparesig_eq +89 -> 0 +precision: 205 +comparesig_eq37 comparesig_eq +80221990337451797941151796155941669650422003663081570320565e+362981946 -> 0 +precision: 157 +comparesig_eq38 comparesig_eq -886.84405929870625327666400733 -> 0 +precision: 55 +comparesig_eq39 comparesig_eq 651055903500107359323E-129425639 -> 0 +precision: 31 +comparesig_eq40 comparesig_eq +5902.3494 -> 0 +precision: 283 +comparesig_eq41 comparesig_eq +3477271273664033393177320831550843067545772483039052858416451284409114092933143001654879327290678728649861697302720629482367E-36514271 -> 0 +precision: 94 +comparesig_eq42 comparesig_eq +26508299325881366146548994474824862480029.61803942978366096670484716835883415710535382125538727 -> 0 +precision: 67 +comparesig_eq43 comparesig_eq -520856914255828430040461625110456078136061468e+189012675 -> 0 +precision: 300 +comparesig_eq44 comparesig_eq -sNaN1719199864504192981369065046718141571733427655329591740479609134773 -> -NaN1719199864504192981369065046718141571733427655329591740479609134773 Invalid_operation +precision: 254 +comparesig_eq45 comparesig_eq 2669871175002759062327e40673202 -> 0 +precision: 255 +comparesig_eq46 comparesig_eq -750319257079568.4932947848244945128065344527137150220007538078979760184761195291229685807617013571494849406376202075283052581611592260170904089086693363050491590096051640E-276665520 -> 0 +precision: 97 +comparesig_eq47 comparesig_eq -Infinity -> 0 +precision: 277 +comparesig_eq48 comparesig_eq -1734650251013986509105600532769007935247090968914151018389034433138215984519308349073258761124514640635670794074633301133868412210488034440073780752109113864696474607025527475031294996743787010473067392708E158775841 -> 0 +precision: 73 +comparesig_eq49 comparesig_eq -.7501411520050394755732161438414587712441297E-91061421 -> 0 +precision: 174 +comparesig_eq50 comparesig_eq +1.5 -> 0 +precision: 107 +comparesig_eq51 comparesig_eq +.1626902790496728212382616245 -> 0 +precision: 206 +comparesig_eq52 comparesig_eq 103567908430272317023394484604560167490830779769562028191578492814130837349369628148 -> 0 +precision: 151 +comparesig_eq53 comparesig_eq -.306901421160199110759338123050230466990247409003649584967108608347728771906346487981474419593001482740810780495693E-355990929 -> 0 +precision: 133 +comparesig_eq54 comparesig_eq -66488371896601189243959190296625593063199862547 -> 0 +precision: 199 +comparesig_eq55 comparesig_eq -304907749247062928133882971570295578000957765414801583802 -> 0 +precision: 88 +comparesig_eq56 comparesig_eq .667134127807274140872 -> 0 +precision: 25 +comparesig_eq57 comparesig_eq -9785E-161261932 -> 0 +precision: 181 +comparesig_eq58 comparesig_eq -436465003290957681609262971267437650067550190657697683590e88881700 -> 0 +precision: 107 +comparesig_eq59 comparesig_eq sNaN438 -> NaN438 Invalid_operation +precision: 122 +comparesig_eq60 comparesig_eq 6805139245289086722722546114.31357051666639 -> 0 +precision: 24 +comparesig_eq61 comparesig_eq +3493.77E410980512 -> 0 +precision: 222 +comparesig_eq62 comparesig_eq +Infinity -> 0 +precision: 200 +comparesig_eq63 comparesig_eq -24070239476950525376458192588411127714052427247715961763332159094311632715690816062902913890792077975174203706352745765162055691844183496657401554817759382337732665161013248073021508 -> 0 +precision: 160 +comparesig_eq64 comparesig_eq +46199393368388981031556113233383197212396288810445815324696453947831093234885877661436732e-113516827 -> 0 +precision: 299 +comparesig_eq65 comparesig_eq -58078542E-124225520 -> 0 +precision: 38 +comparesig_eq66 comparesig_eq 23180251521379780072690958 -> 0 +precision: 180 +comparesig_eq67 comparesig_eq Inf -> 0 +precision: 173 +comparesig_eq68 comparesig_eq +Infinity -> 0 +precision: 236 +comparesig_eq69 comparesig_eq +48796858471830458601744841E343866752 -> 0 +precision: 152 +comparesig_eq70 comparesig_eq 9019750454498797492154956601651600014317388557535384118850700808998770938959 -> 0 +precision: 124 +comparesig_eq71 comparesig_eq -55355253203515762435293691965595753492244794078050.88038218212797322289001081235138416608 -> 0 +precision: 238 +comparesig_eq72 comparesig_eq +.174405081250299296686158122239013835458639588577324575008695620777917187791497809061971402E-191010293 -> 0 +precision: 12 +comparesig_eq73 comparesig_eq -94379E375088835 -> 0 +precision: 24 +comparesig_eq74 comparesig_eq -57275464382E-11669520 -> 0 +precision: 139 +comparesig_eq75 comparesig_eq -59362155200307923174899701631568702172987363782851967e-90376469 -> 0 +precision: 166 +comparesig_eq76 comparesig_eq -sNaN8022955350797271743521220661860068150004094534978599374117523550281156228863 -> -NaN8022955350797271743521220661860068150004094534978599374117523550281156228863 Invalid_operation +precision: 124 +comparesig_eq77 comparesig_eq -.79043627E368736732 -> 0 +precision: 148 +comparesig_eq78 comparesig_eq 72800120530298499018177574575616336173741182688081604999622875361466150782396787003937195 -> 0 +precision: 91 +comparesig_eq79 comparesig_eq -Inf -> 0 +precision: 205 +comparesig_eq80 comparesig_eq -8303662893166624819399739388821812215976959684873666755907439403057259144785438121 -> 0 +precision: 32 +comparesig_eq81 comparesig_eq 3122.654904272676529013962 -> 0 +precision: 137 +comparesig_eq82 comparesig_eq 530314963994043807989826223043725200083572862835089454046771724202946013583378593983874723309546949515330526 -> 0 +precision: 153 +comparesig_eq83 comparesig_eq +5251054043035114272589353544346869055 -> 0 +precision: 196 +comparesig_eq84 comparesig_eq 32907845717664604077678973990832042999133285502613380782541596162687171382272673758091010865741404165786048168265560811741946949627110114276920983513636935702270914992386941571648162875474393229 -> 0 +precision: 267 +comparesig_eq85 comparesig_eq -145477.36085741942368111299133553495166398813458525407671937406523482289386958918608618028201818180367731747981428205891103639921581098266001822509460098220477243360842780947119931643351266878494818464890877817504979308033410860491032 -> 0 +precision: 87 +comparesig_eq86 comparesig_eq -5300872926384109386495104074509939488361476830.58842994843249445415914568507 -> 0 +precision: 296 +comparesig_eq87 comparesig_eq -Infinity -> 0 +precision: 178 +comparesig_eq88 comparesig_eq -7147837014474e-165622920 -> 0 +precision: 146 +comparesig_eq89 comparesig_eq Inf -> 0 +precision: 190 +comparesig_eq90 comparesig_eq +568917471990264033148495754614160410115160.639994862860671e-377147670 -> 0 +precision: 153 +comparesig_eq91 comparesig_eq -Inf -> 0 +precision: 213 +comparesig_eq92 comparesig_eq 963141918525426785654180839756966764384838965304941870521624822134472348537526025036902323387848493593390039238047.1402879 -> 0 +precision: 204 +comparesig_eq93 comparesig_eq +309931186985392315382335507284494613278564708523419399468209419016658416070375696481 -> 0 +precision: 221 +comparesig_eq94 comparesig_eq -154483148338112844837500671040720359610849173958624132217177909015913440740227481602550034901336077278687502351788154995810376052369153755071413705671971918199359534907415169285808896840853941108708314056398524031e-10384050 -> 0 +precision: 70 +comparesig_eq95 comparesig_eq -841750032910036116233146806114682227725010102053515167 -> 0 +precision: 136 +comparesig_eq96 comparesig_eq +290316105781672314935590622.584881501203837876 -> 0 +precision: 40 +comparesig_eq97 comparesig_eq +.54750471332738278883325527266e-370156793 -> 0 +precision: 299 +comparesig_eq98 comparesig_eq -921945294154951074691990e+247382556 -> 0 +precision: 262 +comparesig_eq99 comparesig_eq 844260893664238275326964864428550816106089231301071144471479560384500194785910249144896316305120894479179697189371088409948850574975751581201843734334445699096 -> 0 +precision: 112 +comparetotal_eq0 comparetotal_eq +5246899448694934.76746583E7239466 -> 0 +precision: 79 +comparetotal_eq1 comparetotal_eq -461866196766787289755310460813711109452546567.23424500338922 -> 0 +precision: 40 +comparetotal_eq2 comparetotal_eq 40559967.8048E-198120324 -> 0 +precision: 266 +comparetotal_eq3 comparetotal_eq -9437982050732575696500348294673631751154677609 -> 0 +precision: 124 +comparetotal_eq4 comparetotal_eq -96811735681867.7984178276098534408383E127638675 -> 0 +precision: 75 +comparetotal_eq5 comparetotal_eq 391. -> 0 +precision: 33 +comparetotal_eq6 comparetotal_eq -9.43680350 -> 0 +precision: 294 +comparetotal_eq7 comparetotal_eq 27959604366359647700745733948049612690243207984915855045328511423008092151246906593884074672578372998798271317716359579245043771207423960210775051701414490278138417968439010305878244389012170592302216620518633267137274550542358977200 -> 0 +precision: 138 +comparetotal_eq8 comparetotal_eq -25528965775279494749526155563572623484078432378058720879126682388159906903511297E-244882723 -> 0 +precision: 244 +comparetotal_eq9 comparetotal_eq -9281850005665851235622347297669259701948183160824762561351343345512852597824887595865158304173994318791300854529231998277183746085679426640138406269E+328418863 -> 0 +precision: 278 +comparetotal_eq10 comparetotal_eq 2517236410289071215454366.91690707483733981740428621255157317707 -> 0 +precision: 141 +comparetotal_eq11 comparetotal_eq -75335785477146958137792573755062761314100934398145573120696144720210794533475576369435058E+40891440 -> 0 +precision: 230 +comparetotal_eq12 comparetotal_eq sNaN76354902994648853221883284 -> 0 +precision: 51 +comparetotal_eq13 comparetotal_eq Inf -> 0 +precision: 33 +comparetotal_eq14 comparetotal_eq -4435 -> 0 +precision: 171 +comparetotal_eq15 comparetotal_eq -125136902630654290263592590336273488708373234272833809704043198875429961901519716584164061228408050181599610778152E-245322156 -> 0 +precision: 189 +comparetotal_eq16 comparetotal_eq +6874353725896231282439388654524433172495557684552967996478859896127711650849984146e-150630391 -> 0 +precision: 253 +comparetotal_eq17 comparetotal_eq +1384678513247367538385942433269265625400190754875E-357438088 -> 0 +precision: 101 +comparetotal_eq18 comparetotal_eq +84859581870254002326819092610960254621188154597905194220312e60785947 -> 0 +precision: 161 +comparetotal_eq19 comparetotal_eq -308691504716542199325069259101332601402222081328057497879628665241073542811853839386107229334350606742707231 -> 0 +precision: 204 +comparetotal_eq20 comparetotal_eq 2323395251698126837624275500346909376803797839576402645628745425783507893301316824840857368994e-358974030 -> 0 +precision: 41 +comparetotal_eq21 comparetotal_eq -1539316683112366155205E-306141337 -> 0 +precision: 265 +comparetotal_eq22 comparetotal_eq +Inf -> 0 +precision: 240 +comparetotal_eq23 comparetotal_eq 65660431867198327895984813239366242355925566099.8249504093 -> 0 +precision: 239 +comparetotal_eq24 comparetotal_eq +NaN95426130324013836829372489285384 -> 0 +precision: 138 +comparetotal_eq25 comparetotal_eq +9226862933823272238525523121537169520021744190878478222402215922328906799625007808566045211083097759351857976 -> 0 +precision: 25 +comparetotal_eq26 comparetotal_eq -203976422855E-424643559 -> 0 +precision: 140 +comparetotal_eq27 comparetotal_eq +Inf -> 0 +precision: 230 +comparetotal_eq28 comparetotal_eq 1684507779913004167040538483691332177958320548101419006793272913153083751817973461035071305306495516690230362427305.860040986789016539749886886164782188826619883923253211514960650441865991095447517135053 -> 0 +precision: 34 +comparetotal_eq29 comparetotal_eq -8956225701919633184514 -> 0 +precision: 87 +comparetotal_eq30 comparetotal_eq -79712539275966426244908074 -> 0 +precision: 25 +comparetotal_eq31 comparetotal_eq -2293.6 -> 0 +precision: 162 +comparetotal_eq32 comparetotal_eq -766371632277150743394633971154707100109240657037620916916637308098741854350933973 -> 0 +precision: 193 +comparetotal_eq33 comparetotal_eq .49258617682794966239719251415318456021079673970955370324256964091194138913316036373 -> 0 +precision: 111 +comparetotal_eq34 comparetotal_eq +25420056938045759278713024822597632359908063 -> 0 +precision: 154 +comparetotal_eq35 comparetotal_eq -5840960840830984347784120310482278912119941937220265966441278135936362 -> 0 +precision: 278 +comparetotal_eq36 comparetotal_eq +.96639830484533114195010430496461447034849244108043088176734470614686243285830258209332 -> 0 +precision: 235 +comparetotal_eq37 comparetotal_eq 609078831558529032357231613361636659161231641302280958182155568939673961288731174121447130638911132410478298871891093352545636582955778 -> 0 +precision: 148 +comparetotal_eq38 comparetotal_eq -492431992367754773794292859191445.75707689810540 -> 0 +precision: 152 +comparetotal_eq39 comparetotal_eq 7561355909241527088878491188609477610745.56913866984929236571987563254893811919073173009 -> 0 +precision: 193 +comparetotal_eq40 comparetotal_eq -97493232450091634024533754846117282879608499337334168603594097362055418324023043571440921960766696878459536651882558781266859634290784442567507200076666682 -> 0 +precision: 66 +comparetotal_eq41 comparetotal_eq 6323256972587367812099554833376066222 -> 0 +precision: 212 +comparetotal_eq42 comparetotal_eq -sNaN926217394308182462513194222805142330965398870390251415736522419 -> 0 +precision: 104 +comparetotal_eq43 comparetotal_eq -2924066411578004754670460010376603422457809677564301378945714E+228725290 -> 0 +precision: 221 +comparetotal_eq44 comparetotal_eq -sNaN72278471691941012585765495930850666349054 -> 0 +precision: 168 +comparetotal_eq45 comparetotal_eq +.72938982485106232415414696665038492709364301452992140 -> 0 +precision: 277 +comparetotal_eq46 comparetotal_eq -22098704582652736945471192619729714687018074157376422989502879209389543641043472913691539953723696853389102482357982355964356173574539813401016366920958455291440803568106903771503864 -> 0 +precision: 137 +comparetotal_eq47 comparetotal_eq 13761698928987.3117534779405790 -> 0 +precision: 218 +comparetotal_eq48 comparetotal_eq 1825092551599698804080668795452734416657433282476615071466652089127279932.57161502563813684832853759287015545841978477072074303259312494513928328499217689010083339592916333185803789411 -> 0 +precision: 62 +comparetotal_eq49 comparetotal_eq -sNaN98062353772402443881044971742534150634093809711501114434449121409989773439185630340922455 -> 0 +precision: 24 +comparetotal_eq50 comparetotal_eq -247 -> 0 +precision: 236 +comparetotal_eq51 comparetotal_eq +Infinity -> 0 +precision: 94 +comparetotal_eq52 comparetotal_eq -8706612392446856160472.23971555226 -> 0 +precision: 238 +comparetotal_eq53 comparetotal_eq -Inf -> 0 +precision: 113 +comparetotal_eq54 comparetotal_eq +54551202290261088647145812168868414947482481970450923380422170040735316593692916176673460638260927128 -> 0 +precision: 210 +comparetotal_eq55 comparetotal_eq -23392464704555833073333845747785043899918881228044989416745 -> 0 +precision: 75 +comparetotal_eq56 comparetotal_eq 5199079612634732927128915818763947707905235863932304759051692352380 -> 0 +precision: 71 +comparetotal_eq57 comparetotal_eq -41658558395 -> 0 +precision: 184 +comparetotal_eq58 comparetotal_eq -4905451675849454718192225946712026065208620927977571081231926543837430234603335787807912513755676844e-132315104 -> 0 +precision: 16 +comparetotal_eq59 comparetotal_eq +12980935747451 -> 0 +precision: 222 +comparetotal_eq60 comparetotal_eq -904310269323972185453804687265334252461135435 -> 0 +precision: 171 +comparetotal_eq61 comparetotal_eq +.13265163777084895000705951208680477910509456697936405162894082154219383112099637343513689070459 -> 0 +precision: 228 +comparetotal_eq62 comparetotal_eq -4661337311843780919273456335702781557558524784620266146060070705730805584862376476303516282248214878433633764223010581705801814025705604093630080705239048291927029355334.31807733785261284880500458858695400723E+178120485 -> 0 +precision: 9 +comparetotal_eq63 comparetotal_eq +713 -> 0 +precision: 243 +comparetotal_eq64 comparetotal_eq 6851722859863430703579216465147621767254669001174906.5848239331451825404461044 -> 0 +precision: 259 +comparetotal_eq65 comparetotal_eq +Inf -> 0 +precision: 194 +comparetotal_eq66 comparetotal_eq +Infinity -> 0 +precision: 187 +comparetotal_eq67 comparetotal_eq +4513619 -> 0 +precision: 137 +comparetotal_eq68 comparetotal_eq -5106697075729303473511829 -> 0 +precision: 66 +comparetotal_eq69 comparetotal_eq 5697586627112889837597481858528E-119520701 -> 0 +precision: 218 +comparetotal_eq70 comparetotal_eq -8651463308652248892998532242397472315383840375227251616774121511 -> 0 +precision: 44 +comparetotal_eq71 comparetotal_eq -0.95e-346395845 -> 0 +precision: 181 +comparetotal_eq72 comparetotal_eq -5504806518340895447721421314834288625084006686420266280149683604363743847003188557150256775994512651031656977572639102247717731742591432037631633265543079086114097094244E-252316798 -> 0 +precision: 70 +comparetotal_eq73 comparetotal_eq +3297800735741806144724070844056308651989.8195189445361340170 -> 0 +precision: 10 +comparetotal_eq74 comparetotal_eq 679.48293e357807815 -> 0 +precision: 127 +comparetotal_eq75 comparetotal_eq 537293600434066560272731611207861123E-54528486 -> 0 +precision: 245 +comparetotal_eq76 comparetotal_eq .341128186 -> 0 +precision: 71 +comparetotal_eq77 comparetotal_eq -116376141.9 -> 0 +precision: 5 +comparetotal_eq78 comparetotal_eq -25450 -> 0 +precision: 114 +comparetotal_eq79 comparetotal_eq -6156275624792929643867440115549636403963333307553031343670612158451755789577444e35642861 -> 0 +precision: 183 +comparetotal_eq80 comparetotal_eq 1436806528596721094903626504703250133609839635221562040328384374527759306314808759113699479834004752000528142 -> 0 +precision: 181 +comparetotal_eq81 comparetotal_eq -21882842429873859342811289020455405947295807297433524273.5033688681369572612689959612895523592269217943993881461958038309740663992250165 -> 0 +precision: 16 +comparetotal_eq82 comparetotal_eq +9104497E+151807076 -> 0 +precision: 88 +comparetotal_eq83 comparetotal_eq +78007340379140382503222146584230561293.6112041572340247811438098 -> 0 +precision: 156 +comparetotal_eq84 comparetotal_eq +29027728861723744.987930411887223347 -> 0 +precision: 55 +comparetotal_eq85 comparetotal_eq +.96407480400037326 -> 0 +precision: 154 +comparetotal_eq86 comparetotal_eq +65803825741020559688830869906427484228979e-211972109 -> 0 +precision: 250 +comparetotal_eq87 comparetotal_eq -.641101115445444382735173970445115273523256615609198145148927922338445262727389076631144187678080873779711150802134879655034822629872274567149949318442373926116664816829103814531433035751336957E-89566219 -> 0 +precision: 174 +comparetotal_eq88 comparetotal_eq -6411257720241023569725249883220203650598911781178552350512 -> 0 +precision: 80 +comparetotal_eq89 comparetotal_eq 79664590522408459087457305685717875175295539479013.9839536e+78085169 -> 0 +precision: 193 +comparetotal_eq90 comparetotal_eq +6431716598993424357379670542672958642624896904007690657231917E-32301189 -> 0 +precision: 134 +comparetotal_eq91 comparetotal_eq -7166075910839705669531272023962865308475807 -> 0 +precision: 129 +comparetotal_eq92 comparetotal_eq -6189266627381367415e+143265950 -> 0 +precision: 33 +comparetotal_eq93 comparetotal_eq 877743875606520142232012637658 -> 0 +precision: 296 +comparetotal_eq94 comparetotal_eq 81e-276983863 -> 0 +precision: 294 +comparetotal_eq95 comparetotal_eq +37990227712894018190245008555216423186177188774589232370547312654192878952827434840555479696803907037593108819308685706534637859453591754877110147238939108347755331645878543383812287278522111658280153264936058968155798527779026989303225033371699490579432216 -> 0 +precision: 163 +comparetotal_eq96 comparetotal_eq 44032 -> 0 +precision: 8 +comparetotal_eq97 comparetotal_eq Infinity -> 0 +precision: 290 +comparetotal_eq98 comparetotal_eq 97731522466945259125738531538118925073980868195733645959420939515288449102211831007042885860705615508898582478034856E196236986 -> 0 +precision: 9 +comparetotal_eq99 comparetotal_eq 3745E-366098382 -> 0 +precision: 254 +comparetotmag_eq0 comparetotmag_eq .758599241688130692588376356255616760550215971262736680716244497795320979910 -> 0 +precision: 111 +comparetotmag_eq1 comparetotmag_eq -.9680035 -> 0 +precision: 280 +comparetotmag_eq2 comparetotmag_eq -2978664146700401661050144467205502091778945285794943.5248293726490459289168834361170650892056840210562147124621253082638290597E+7322343 -> 0 +precision: 295 +comparetotmag_eq3 comparetotmag_eq 373073810351083847308492490954096527470990852948834396384108768226709606406334550611804149162380581619848100884564003356 -> 0 +precision: 154 +comparetotmag_eq4 comparetotmag_eq -135085990223239252869521315004690787363062113045882520688592861094582362232.55964478264515146118847138432934464225278618354764781084094e92097362 -> 0 +precision: 243 +comparetotmag_eq5 comparetotmag_eq -1120585765691099973098517057771041784915627514634982800943025329535288084063510001452857743185000682366687360090711916144882751214203633045047994315 -> 0 +precision: 110 +comparetotmag_eq6 comparetotmag_eq -.20986013404104445 -> 0 +precision: 61 +comparetotmag_eq7 comparetotmag_eq -132623430907907261480242121846759045719458101160804991841698e+137555302 -> 0 +precision: 189 +comparetotmag_eq8 comparetotmag_eq -.648067853225656977027614789502827 -> 0 +precision: 269 +comparetotmag_eq9 comparetotmag_eq 9045859255918240474189386605826358421406783106936386724841465300830461793246494305642676288639156880459745974039110790497439518275879018825694328134297921548322228683153608598436165303878673586307015843876744458212064725189171187795112144991950513531319187108946E357466168 -> 0 +precision: 11 +comparetotmag_eq10 comparetotmag_eq Infinity -> 0 +precision: 87 +comparetotmag_eq11 comparetotmag_eq -.566395295580511589782317514717704373645202839050284415466945646386797218341354193980482 -> 0 +precision: 243 +comparetotmag_eq12 comparetotmag_eq -124668041670319474801622709957866055808699098173829793598656287723081972262818475975608150477147475922020664948964116111683568298751080978937176489654649930812285344 -> 0 +precision: 278 +comparetotmag_eq13 comparetotmag_eq +97028962788304318465566675904657057818764168452694328913600937301641.1959 -> 0 +precision: 212 +comparetotmag_eq14 comparetotmag_eq -sNaN -> 0 +precision: 56 +comparetotmag_eq15 comparetotmag_eq 4383.754031837823371188245102 -> 0 +precision: 79 +comparetotmag_eq16 comparetotmag_eq +234942328155740.248917344733058641280365579285605765248299037985196039831755 -> 0 +precision: 249 +comparetotmag_eq17 comparetotmag_eq +.401719198135011875197940475930593041290481963182726261321731761677653679534094866070618897346798586493963537889847022987903115935359554110352729E307502114 -> 0 +precision: 151 +comparetotmag_eq18 comparetotmag_eq 6921450187264584739745876147764680320341.4174560759053687563289470476219096442911606343671248e189923536 -> 0 +precision: 39 +comparetotmag_eq19 comparetotmag_eq 9002690516378.52168050266097 -> 0 +precision: 91 +comparetotmag_eq20 comparetotmag_eq .663496894776070882688311537371 -> 0 +precision: 95 +comparetotmag_eq21 comparetotmag_eq 560062470258092620667281428698450214 -> 0 +precision: 77 +comparetotmag_eq22 comparetotmag_eq -0.2440E+271150960 -> 0 +precision: 217 +comparetotmag_eq23 comparetotmag_eq 173780887620216.10378226384665941189349 -> 0 +precision: 267 +comparetotmag_eq24 comparetotmag_eq 78230449298101544670042493593344496314553350195042268729345261790243785081385101271583765737474227275159585323320773885662468667519818859252260707490033363050325242288980817360068966775725142286459487068404096780654625219633934135953723359797985546299 -> 0 +precision: 226 +comparetotmag_eq25 comparetotmag_eq -.8205874202182345629002759547579312641404716080698336228400981809432098568638844459806005249323 -> 0 +precision: 97 +comparetotmag_eq26 comparetotmag_eq -645255.672557972731110565424678563646186829759532083400809122074405092887321026499 -> 0 +precision: 194 +comparetotmag_eq27 comparetotmag_eq 3092470339262364953567614029395040731734262949366979977206728754128988018295876990492005938624037794831987754236880957081143 -> 0 +precision: 29 +comparetotmag_eq28 comparetotmag_eq 57.E+143179950 -> 0 +precision: 39 +comparetotmag_eq29 comparetotmag_eq .3052 -> 0 +precision: 231 +comparetotmag_eq30 comparetotmag_eq -11523034296905256789870364631805639650738.8569872996432563014933434893670023802189700019E+331657066 -> 0 +precision: 277 +comparetotmag_eq31 comparetotmag_eq -90515524775419567419279770518554407320709327912893406738600436246462958441943655812062367507691060750753609866999314036367777685660204967220930504662997721388277483671062 -> 0 +precision: 285 +comparetotmag_eq32 comparetotmag_eq 6179140642361415325690186156693793.738730648425831193666593780858158061297770583e-284043812 -> 0 +precision: 293 +comparetotmag_eq33 comparetotmag_eq -12172088235619596465522772857578918098776186867553912568305660067671552271962396974216764816085888606529901044151946652845028927008893668958641199542780135016710856979823739224132381477734142547930675222150548736 -> 0 +precision: 176 +comparetotmag_eq34 comparetotmag_eq +Infinity -> 0 +precision: 255 +comparetotmag_eq35 comparetotmag_eq -Inf -> 0 +precision: 15 +comparetotmag_eq36 comparetotmag_eq -4122e+358531764 -> 0 +precision: 160 +comparetotmag_eq37 comparetotmag_eq +99209836347562423364397936968123504985538596349406640871062 -> 0 +precision: 294 +comparetotmag_eq38 comparetotmag_eq -6274600242410175354765985193668908297288007401220476982196317284223594634095415822680987536077051315546711553877665479455778433609317032076173704844621654218043672370668379691155574270173678230.628837963455285227 -> 0 +precision: 239 +comparetotmag_eq39 comparetotmag_eq -sNaN -> 0 +precision: 62 +comparetotmag_eq40 comparetotmag_eq +371.481520 -> 0 +precision: 41 +comparetotmag_eq41 comparetotmag_eq +76e-119165385 -> 0 +precision: 180 +comparetotmag_eq42 comparetotmag_eq +77636783519329095134842179123187271903894703114026946027324920910818395121805022852402e331721542 -> 0 +precision: 8 +comparetotmag_eq43 comparetotmag_eq -Inf -> 0 +precision: 10 +comparetotmag_eq44 comparetotmag_eq -sNaN258004357732449581097733994906900393084904087680886609307961895378612654084553567 -> 0 +precision: 132 +comparetotmag_eq45 comparetotmag_eq +27527580013485996476119702192322738.661301391490391550658742128695647022830523479E137235779 -> 0 +precision: 48 +comparetotmag_eq46 comparetotmag_eq 82485470817836937096244056 -> 0 +precision: 255 +comparetotmag_eq47 comparetotmag_eq -.4545240480666806992206593718235512911624170660928306647649435395532399656843703851738354664868752615029E-209728468 -> 0 +precision: 240 +comparetotmag_eq48 comparetotmag_eq 1931816872.57165251265451007697949828156045975602078460361600105127665167004424334625775351530702643686935081344072634256952928801848111459899389758378667453219890182379063046413635251740610287617 -> 0 +precision: 159 +comparetotmag_eq49 comparetotmag_eq -Inf -> 0 +precision: 194 +comparetotmag_eq50 comparetotmag_eq -3975066.722711992887449936887029840444361475429401656203490909900304013389842275149581694513982747764579266207914742801 -> 0 +precision: 21 +comparetotmag_eq51 comparetotmag_eq -10079.E-207809009 -> 0 +precision: 229 +comparetotmag_eq52 comparetotmag_eq 10200569899324830050599093453054850477748636453922703395142654674574.849e143375381 -> 0 +precision: 222 +comparetotmag_eq53 comparetotmag_eq +553244289317323190960679433857384003867933584946750514180364343937580712510433597776046547013163399668331676417693173398882560589706077783551097015199004622707168774145783728724551878153041861993173657722 -> 0 +precision: 11 +comparetotmag_eq54 comparetotmag_eq -.17431971258 -> 0 +precision: 196 +comparetotmag_eq55 comparetotmag_eq +5255264846971 -> 0 +precision: 211 +comparetotmag_eq56 comparetotmag_eq -645069289478657195831941675695427668936803813710466 -> 0 +precision: 124 +comparetotmag_eq57 comparetotmag_eq -402162222052349632206088624702767314901350802444258898821.96629303682647 -> 0 +precision: 144 +comparetotmag_eq58 comparetotmag_eq -60288765642662458273692255627283073203.7589 -> 0 +precision: 218 +comparetotmag_eq59 comparetotmag_eq +82723898737736981834833812214896018781760838.67504946419842838453506428526339147317460943437394773674445517765276393459455764643507819387056060221525427923304763086016362161663023960903374034798210858401594801E+139529995 -> 0 +precision: 192 +comparetotmag_eq60 comparetotmag_eq -86658459138938909877666041011301431806896078516385 -> 0 +precision: 14 +comparetotmag_eq61 comparetotmag_eq -38106288821. -> 0 +precision: 245 +comparetotmag_eq62 comparetotmag_eq +251921844373822431667748489929316186367893026227940323994511933330531523485294794.890401065351 -> 0 +precision: 60 +comparetotmag_eq63 comparetotmag_eq 25972806562266801.434808181024e-246852717 -> 0 +precision: 243 +comparetotmag_eq64 comparetotmag_eq -887789849375969853218594838098953417293035613559996425627759335308382047656042193874699493820358889353945264082255272206427387287584432443435408670109261041116740162148654680647174010551977335499655092893643654299464954618202 -> 0 +precision: 121 +comparetotmag_eq65 comparetotmag_eq +1542568744044564799567118813327510841041722742225085261417404285874912547648939539346136 -> 0 +precision: 188 +comparetotmag_eq66 comparetotmag_eq +2698968361205775284700858624261137332628173048875236239217930582962826113306018075561808521467294700562915343125335211998362707946715632629182e-397410055 -> 0 +precision: 70 +comparetotmag_eq67 comparetotmag_eq -116482885017708937489473298172566.222073881734104 -> 0 +precision: 152 +comparetotmag_eq68 comparetotmag_eq +30157549153434595985025934176650081461639551880222E-200363402 -> 0 +precision: 114 +comparetotmag_eq69 comparetotmag_eq -94703923470495586024544728165808807896295365391534080267139373949697385466386898755185862208179639361 -> 0 +precision: 76 +comparetotmag_eq70 comparetotmag_eq Infinity -> 0 +precision: 236 +comparetotmag_eq71 comparetotmag_eq +20260230733108105702624386091366857242323388992.939868104137 -> 0 +precision: 300 +comparetotmag_eq72 comparetotmag_eq -29884613642739544930876448336720158271878961415329808384938325673396839119328027317691672466662261565502902330423154954685183482466003069228343340646813836994765410617220891620839763419568456798 -> 0 +precision: 11 +comparetotmag_eq73 comparetotmag_eq +.79738543011 -> 0 +precision: 112 +comparetotmag_eq74 comparetotmag_eq -Inf -> 0 +precision: 245 +comparetotmag_eq75 comparetotmag_eq +5036207952123906386743813264143578961327.29965706349386738762075535729651808105564177474998772894655500517621948426388931367E224881858 -> 0 +precision: 282 +comparetotmag_eq76 comparetotmag_eq +9627449955373209306095691574757611661964370672475811730059058948050316783506426.7381276120263080515110222168916770315414667219220262242525966031941148759660478319471372558971380576037890381615879816695316871292127124795919219363077e-397864912 -> 0 +precision: 143 +comparetotmag_eq77 comparetotmag_eq -.6953443904663710213 -> 0 +precision: 123 +comparetotmag_eq78 comparetotmag_eq -37742640128075951679066e-244117593 -> 0 +precision: 51 +comparetotmag_eq79 comparetotmag_eq .628523014878458151264084 -> 0 +precision: 171 +comparetotmag_eq80 comparetotmag_eq -.11732018595304957201079694501893772565399000970421406226421725880802203756891058447116150922185710404961048139280008455072605042037318585585840659582798142314478 -> 0 +precision: 230 +comparetotmag_eq81 comparetotmag_eq 1505317821001976798286184626182370244052490460561843852848163310003323468347667238484049104997867911445879495887183069218095179974316877 -> 0 +precision: 71 +comparetotmag_eq82 comparetotmag_eq -.99067885648086185095001805782590965268489428603 -> 0 +precision: 199 +comparetotmag_eq83 comparetotmag_eq -8235459159320233496599885276748996091576894642494073280432387500160680585053232162018151093354587459918164280242221560392920133687603361923E145796403 -> 0 +precision: 280 +comparetotmag_eq84 comparetotmag_eq -18231024313180592685558827417860220978702289145263555466246215110628004200818802355562317.9167736707 -> 0 +precision: 94 +comparetotmag_eq85 comparetotmag_eq 5206800267882191048709543045275136397521137708870288 -> 0 +precision: 46 +comparetotmag_eq86 comparetotmag_eq 586873.28881E-124168073 -> 0 +precision: 108 +comparetotmag_eq87 comparetotmag_eq -.69649504379645759716805001407779641488692098118 -> 0 +precision: 220 +comparetotmag_eq88 comparetotmag_eq -580702524779324576511137546759334311502406788153544114659867030842917830314008995139893078957550013081066060455206847069836701891605018375640628137728358952189994176639437239192969376357e+158185780 -> 0 +precision: 170 +comparetotmag_eq89 comparetotmag_eq 4460768346307719818845307199772996288378412192228806517486662537420364224325750546920164455500014306349435992396838.12958335871954019311031365693280558060 -> 0 +precision: 168 +comparetotmag_eq90 comparetotmag_eq -1176136089459685495679203412653362621650257933937974391276027633752443768086155521325395556304613 -> 0 +precision: 40 +comparetotmag_eq91 comparetotmag_eq 62386449357005012e116467876 -> 0 +precision: 43 +comparetotmag_eq92 comparetotmag_eq -606281907e-39276360 -> 0 +precision: 216 +comparetotmag_eq93 comparetotmag_eq +.487947173448970699477755573313092304386603418905545870716639 -> 0 +precision: 43 +comparetotmag_eq94 comparetotmag_eq +800573993765079033838236 -> 0 +precision: 167 +comparetotmag_eq95 comparetotmag_eq -0.85368756569 -> 0 +precision: 91 +comparetotmag_eq96 comparetotmag_eq -NaN -> 0 +precision: 160 +comparetotmag_eq97 comparetotmag_eq +283289819409.8615540 -> 0 +precision: 79 +comparetotmag_eq98 comparetotmag_eq +7761234803627628382889163604124630400932418210247392910118158865538312807006 -> 0 +precision: 255 +comparetotmag_eq99 comparetotmag_eq sNaN -> 0 +precision: 241 +copysign_eq0 copysign_eq +912849910816424783962776495925326137570904169012007696206741038734E-113244462 -> 9.12849910816424783962776495925326137570904169012007696206741038734E-113244397 +precision: 211 +copysign_eq1 copysign_eq -4172999471644727956817324170469907724355.64974450632070660595561325662300620125198931687808841912359413473051980813682954009458996607 -> -4172999471644727956817324170469907724355.64974450632070660595561325662300620125198931687808841912359413473051980813682954009458996607 +precision: 120 +copysign_eq2 copysign_eq -Inf -> -Infinity +precision: 160 +copysign_eq3 copysign_eq -4077199659268756237260256542619435665987629416188900477748234273613039111e-222850925 -> -4.077199659268756237260256542619435665987629416188900477748234273613039111E-222850853 +precision: 244 +copysign_eq4 copysign_eq -120887661871195892572007431690 -> -120887661871195892572007431690 +precision: 297 +copysign_eq5 copysign_eq -34594668308569067809106512607033738577.833475575387314530658554737788428753440579519182667729987481822439547834620969655008944421852347487992137992930068301492426960534568537729535790546911988465956223429 -> -34594668308569067809106512607033738577.833475575387314530658554737788428753440579519182667729987481822439547834620969655008944421852347487992137992930068301492426960534568537729535790546911988465956223429 +precision: 248 +copysign_eq6 copysign_eq .644884437890644703514857542573232 -> 0.644884437890644703514857542573232 +precision: 106 +copysign_eq7 copysign_eq -.8968331380651131451130741639350893328917278913249552498835203308406112 -> -0.8968331380651131451130741639350893328917278913249552498835203308406112 +precision: 58 +copysign_eq8 copysign_eq Infinity -> Infinity +precision: 172 +copysign_eq9 copysign_eq -Infinity -> -Infinity +precision: 26 +copysign_eq10 copysign_eq -69734643e-193062181 -> -6.9734643E-193062174 +precision: 176 +copysign_eq11 copysign_eq +.40005077964360844604790423067969883599249477124226248244752857 -> 0.40005077964360844604790423067969883599249477124226248244752857 +precision: 81 +copysign_eq12 copysign_eq 68818748766527632480393586306372081912414253184621655649755714658701849352 -> 68818748766527632480393586306372081912414253184621655649755714658701849352 +precision: 36 +copysign_eq13 copysign_eq -827760e-303008524 -> -8.27760E-303008519 +precision: 171 +copysign_eq14 copysign_eq -.51472673604698927879358673904608604855401014039879864011921786465262552249594966126266188054E-62866316 -> -5.1472673604698927879358673904608604855401014039879864011921786465262552249594966126266188054E-62866317 +precision: 7 +copysign_eq15 copysign_eq -92 -> -92 +precision: 207 +copysign_eq16 copysign_eq -.8257883235651203903073605796686406369304920526546040255424913084863918822560531714907335433690033483663577422127040032017983707615122654955329893032316030175034415469549126779260753998070316570188e296583593 -> -8.257883235651203903073605796686406369304920526546040255424913084863918822560531714907335433690033483663577422127040032017983707615122654955329893032316030175034415469549126779260753998070316570188E+296583592 +precision: 165 +copysign_eq17 copysign_eq +795127893760870758881277969219733505281559157132196683561219486975246756080873662536969619165268079260 -> 795127893760870758881277969219733505281559157132196683561219486975246756080873662536969619165268079260 +precision: 42 +copysign_eq18 copysign_eq +8664634899443E-295811181 -> 8.664634899443E-295811169 +precision: 187 +copysign_eq19 copysign_eq +.86633371454 -> 0.86633371454 +precision: 3 +copysign_eq20 copysign_eq -51e414021278 -> -5.1E+414021279 +precision: 291 +copysign_eq21 copysign_eq +.73640768910035155043175015975248409287189976354883215487722767318530316439212449319025870084934185124452773776935663078128296767277423761220923680539650499643919491041296020146887072088646993677464986658781992562673199278496827 -> 0.73640768910035155043175015975248409287189976354883215487722767318530316439212449319025870084934185124452773776935663078128296767277423761220923680539650499643919491041296020146887072088646993677464986658781992562673199278496827 +precision: 294 +copysign_eq22 copysign_eq +66238977336323175258405329887607.4688684375671138394635 -> 66238977336323175258405329887607.4688684375671138394635 +precision: 99 +copysign_eq23 copysign_eq -9706005388566098702237829851886105443850716583076063658128733656537 -> -9706005388566098702237829851886105443850716583076063658128733656537 +precision: 34 +copysign_eq24 copysign_eq -NaN26714072432846552083190711068194605835365212862074369044699 -> -NaN26714072432846552083190711068194605835365212862074369044699 +precision: 297 +copysign_eq25 copysign_eq +1444631177890437751833138978079891110807252417672006058137776916747013332945952745849086784157257786852691893615818837449759516899493328502014077171876302510090644020209814e+228663091 -> 1.444631177890437751833138978079891110807252417672006058137776916747013332945952745849086784157257786852691893615818837449759516899493328502014077171876302510090644020209814E+228663262 +precision: 224 +copysign_eq26 copysign_eq 8756872358197145011503076267370326415749027427967971765036825467368789266879765167669527374051191090871376644186283860953859026704162157186390216102E+152494906 -> 8.756872358197145011503076267370326415749027427967971765036825467368789266879765167669527374051191090871376644186283860953859026704162157186390216102E+152495053 +precision: 20 +copysign_eq27 copysign_eq -95409400172429589239 -> -95409400172429589239 +precision: 287 +copysign_eq28 copysign_eq 44451245 -> 44451245 +precision: 64 +copysign_eq29 copysign_eq 87069e-197024248 -> 8.7069E-197024244 +precision: 294 +copysign_eq30 copysign_eq -91490776988288844281004273227639649748559382214791464172820579465608440973797360268043545943193682557256877.153945352203031004983709628619311521172E+36138865 -> -9.1490776988288844281004273227639649748559382214791464172820579465608440973797360268043545943193682557256877153945352203031004983709628619311521172E+36138971 +precision: 245 +copysign_eq31 copysign_eq -61253345745790146082356378249682833220470116955093184.160402301507069626663735194111348050099498909534706088602221084182115292672163917920862048742169331177187156592 -> -61253345745790146082356378249682833220470116955093184.160402301507069626663735194111348050099498909534706088602221084182115292672163917920862048742169331177187156592 +precision: 259 +copysign_eq32 copysign_eq 7557015985852138820968760902376161045767694984326547795741385.154563135497546100E18448436 -> 7.557015985852138820968760902376161045767694984326547795741385154563135497546100E+18448496 +precision: 44 +copysign_eq33 copysign_eq 2446739636984983317815760152982626579251621E-22064059 -> 2.446739636984983317815760152982626579251621E-22064017 +precision: 276 +copysign_eq34 copysign_eq +783706030678546.5729957761 -> 783706030678546.5729957761 +precision: 289 +copysign_eq35 copysign_eq 6550322914927484174665863728756987541082673935650443257110929 -> 6550322914927484174665863728756987541082673935650443257110929 +precision: 118 +copysign_eq36 copysign_eq -8384469036271302020033 -> -8384469036271302020033 +precision: 38 +copysign_eq37 copysign_eq -.905596447938310724517484948798770440 -> -0.905596447938310724517484948798770440 +precision: 96 +copysign_eq38 copysign_eq -633835.9498591171618397620216367326120312804374133843662099053 -> -633835.9498591171618397620216367326120312804374133843662099053 +precision: 100 +copysign_eq39 copysign_eq -45316454094282713193793313663290917447362835651730640999493591285811411363675169215 -> -45316454094282713193793313663290917447362835651730640999493591285811411363675169215 +precision: 47 +copysign_eq40 copysign_eq -5934505716529203624590813773011140.5029189256879e271431908 -> -5.9345057165292036245908137730111405029189256879E+271431941 +precision: 8 +copysign_eq41 copysign_eq +4233 -> 4233 +precision: 179 +copysign_eq42 copysign_eq +Inf -> Infinity +precision: 235 +copysign_eq43 copysign_eq -.8026518628958656320480277762542718247488409258836562277671379 -> -0.8026518628958656320480277762542718247488409258836562277671379 +precision: 8 +copysign_eq44 copysign_eq -Infinity -> -Infinity +precision: 81 +copysign_eq45 copysign_eq -155435472394140381e-331492010 -> -1.55435472394140381E-331491993 +precision: 58 +copysign_eq46 copysign_eq -2742063025234706e-124677414 -> -2.742063025234706E-124677399 +precision: 194 +copysign_eq47 copysign_eq Infinity -> Infinity +precision: 151 +copysign_eq48 copysign_eq -3076.414 -> -3076.414 +precision: 215 +copysign_eq49 copysign_eq -54903986486304064466403075346468319729401566923918723287008306578450300853217224275074413326128851202685101625573573940.44583713644215717635201400150254847090444728107832437126677626214287502 -> -54903986486304064466403075346468319729401566923918723287008306578450300853217224275074413326128851202685101625573573940.44583713644215717635201400150254847090444728107832437126677626214287502 +precision: 288 +copysign_eq50 copysign_eq +Infinity -> Infinity +precision: 40 +copysign_eq51 copysign_eq -63746.6920325064618262220659 -> -63746.6920325064618262220659 +precision: 28 +copysign_eq52 copysign_eq +60037301417642617712E+314405176 -> 6.0037301417642617712E+314405195 +precision: 243 +copysign_eq53 copysign_eq 44954302072535212005008365198258111335643113581706145226221729418076278119523835612300431558733194.60281373107722805681248852122120697444252693825904755823908254120878753982599971139215856237207550137077117083801903577057675566233497981439 -> 44954302072535212005008365198258111335643113581706145226221729418076278119523835612300431558733194.60281373107722805681248852122120697444252693825904755823908254120878753982599971139215856237207550137077117083801903577057675566233497981439 +precision: 80 +copysign_eq54 copysign_eq -59745.2596022109163881688669 -> -59745.2596022109163881688669 +precision: 72 +copysign_eq55 copysign_eq -5175.20039136928065299637389738531970334746406318954626328421102145024 -> -5175.20039136928065299637389738531970334746406318954626328421102145024 +precision: 138 +copysign_eq56 copysign_eq -8164290077736576 -> -8164290077736576 +precision: 144 +copysign_eq57 copysign_eq -925975316863216059914809728928435878342747311186654918782217009964941855230984468623325162944745.7282929068452782252948e178069539 -> -9.259753168632160599148097289284358783427473111866549187822170099649418552309844686233251629447457282929068452782252948E+178069634 +precision: 88 +copysign_eq58 copysign_eq -3755496225268124403053131000917916553139.660 -> -3755496225268124403053131000917916553139.660 +precision: 45 +copysign_eq59 copysign_eq -.1843943837918771963208967506464645456446E-351312522 -> -1.843943837918771963208967506464645456446E-351312523 +precision: 256 +copysign_eq60 copysign_eq +38063018493737556668111060177144569509969844523795708405760584235465403415062925772738156618120096828741854095364675760983323933127274509971098442433472418E+112960435 -> 3.8063018493737556668111060177144569509969844523795708405760584235465403415062925772738156618120096828741854095364675760983323933127274509971098442433472418E+112960589 +precision: 82 +copysign_eq61 copysign_eq 2.10464 -> 2.10464 +precision: 171 +copysign_eq62 copysign_eq +.353648743094555897881114634720361997191466570127345406599783015 -> 0.353648743094555897881114634720361997191466570127345406599783015 +precision: 181 +copysign_eq63 copysign_eq .876123855498551736011864560563868572477936837830531671096196230903793876249501554965957862473800812364839412325508554600325017595570094E132935073 -> 8.76123855498551736011864560563868572477936837830531671096196230903793876249501554965957862473800812364839412325508554600325017595570094E+132935072 +precision: 5 +copysign_eq64 copysign_eq 47.896 -> 47.896 +precision: 57 +copysign_eq65 copysign_eq -NaN -> -NaN +precision: 245 +copysign_eq66 copysign_eq -8880641688431096098426751713709056972393539357471147813953561588595535300427501136851395528026584030844449281563643199883422269918992481002034949115028025958192726235989085104078572630350340627959960155056085.6351892273092682863e-313403941 -> -8.8806416884310960984267517137090569723935393574711478139535615885955353004275011368513955280265840308444492815636431998834222699189924810020349491150280259581927262359890851040785726303503406279599601550560856351892273092682863E-313403734 +precision: 289 +copysign_eq67 copysign_eq -6568252072712.434465979001 -> -6568252072712.434465979001 +precision: 28 +copysign_eq68 copysign_eq +264174 -> 264174 +precision: 239 +copysign_eq69 copysign_eq +.761355904532995600367657792932288441804234566256584874261263934566363378161675965 -> 0.761355904532995600367657792932288441804234566256584874261263934566363378161675965 +precision: 7 +copysign_eq70 copysign_eq +79 -> 79 +precision: 77 +copysign_eq71 copysign_eq 35796142963750491966821448715208186307325780428336899e+308821427 -> 3.5796142963750491966821448715208186307325780428336899E+308821479 +precision: 39 +copysign_eq72 copysign_eq -2.895 -> -2.895 +precision: 283 +copysign_eq73 copysign_eq Inf -> Infinity +precision: 206 +copysign_eq74 copysign_eq +21223726399.1862025101E-412571479 -> 2.12237263991862025101E-412571469 +precision: 272 +copysign_eq75 copysign_eq -14609896731410240465847146776510 -> -14609896731410240465847146776510 +precision: 70 +copysign_eq76 copysign_eq -909262394393264314832651149149512319844.98907157648321734664640604 -> -909262394393264314832651149149512319844.98907157648321734664640604 +precision: 108 +copysign_eq77 copysign_eq -9560885559796837570931059522730522635 -> -9560885559796837570931059522730522635 +precision: 80 +copysign_eq78 copysign_eq -63020099277467465011390.64 -> -63020099277467465011390.64 +precision: 85 +copysign_eq79 copysign_eq -74.51 -> -74.51 +precision: 160 +copysign_eq80 copysign_eq +970124494627917430165803986650936.93767717 -> 970124494627917430165803986650936.93767717 +precision: 258 +copysign_eq81 copysign_eq -67071158450214361034329987185418147961066306271075974531965006043987810791805423363365212685205640814030310537198311705119 -> -67071158450214361034329987185418147961066306271075974531965006043987810791805423363365212685205640814030310537198311705119 +precision: 12 +copysign_eq82 copysign_eq +6.9938E-269174750 -> 6.9938E-269174750 +precision: 20 +copysign_eq83 copysign_eq -739.4 -> -739.4 +precision: 263 +copysign_eq84 copysign_eq +80458928999489219593795861637209983647531900448E-285757632 -> 8.0458928999489219593795861637209983647531900448E-285757586 +precision: 252 +copysign_eq85 copysign_eq -.943146313695692482085431358850768490676790619479323125473369600983527313464567775159767199136799046416392453409767388138641759176155142355073397521065530361364279282707376381898914116491221347274439694234079703553404586824873174784027737864553E-249520272 -> -9.43146313695692482085431358850768490676790619479323125473369600983527313464567775159767199136799046416392453409767388138641759176155142355073397521065530361364279282707376381898914116491221347274439694234079703553404586824873174784027737864553E-249520273 +precision: 19 +copysign_eq86 copysign_eq 2581989035.14589421 -> 2581989035.14589421 +precision: 177 +copysign_eq87 copysign_eq 862110863918676915038913845144452992327358158529330002571726511830207810741719701085082372 -> 862110863918676915038913845144452992327358158529330002571726511830207810741719701085082372 +precision: 68 +copysign_eq88 copysign_eq +67558387757344553075202840915053.989850564148016169845932560039922371 -> 67558387757344553075202840915053.989850564148016169845932560039922371 +precision: 93 +copysign_eq89 copysign_eq -Inf -> -Infinity +precision: 78 +copysign_eq90 copysign_eq -NaN703219585659222470144078690320919791326760950751 -> -NaN703219585659222470144078690320919791326760950751 +precision: 154 +copysign_eq91 copysign_eq -.29452057074837704902232627615653162767335324872037 -> -0.29452057074837704902232627615653162767335324872037 +precision: 9 +copysign_eq92 copysign_eq -Infinity -> -Infinity +precision: 277 +copysign_eq93 copysign_eq -4346942020604226.7554599261567839779094124098257536258920625972951946463849271776713086 -> -4346942020604226.7554599261567839779094124098257536258920625972951946463849271776713086 +precision: 220 +copysign_eq94 copysign_eq .734759197189807569535777711189738297775385226367756552809155424103813447208285759123412438993939677605813235448392602103137976560723964823903240454 -> 0.734759197189807569535777711189738297775385226367756552809155424103813447208285759123412438993939677605813235448392602103137976560723964823903240454 +precision: 205 +copysign_eq95 copysign_eq -21588602070488075367780849611453796003902050727910781.50291200834737493945012277562858844628654049 -> -21588602070488075367780849611453796003902050727910781.50291200834737493945012277562858844628654049 +precision: 135 +copysign_eq96 copysign_eq -.1108621370656874460039116718332511971544303525855597496500788218945082036415e-393133591 -> -1.108621370656874460039116718332511971544303525855597496500788218945082036415E-393133592 +precision: 209 +copysign_eq97 copysign_eq -4192879427696548638281185597786601766594501050575758008859053447167394245205556438137052004020299359326549562277816404818778578146528497013072238419082115791548670681517743171393878948450.8E+355842331 -> -4.1928794276965486382811855977866017665945010505757580088590534471673942452055564381370520040202993593265495622778164048187785781465284970130722384190821157915486706815177431713938789484508E+355842517 +precision: 78 +copysign_eq98 copysign_eq -713457029083041e-73084822 -> -7.13457029083041E-73084808 +precision: 118 +copysign_eq99 copysign_eq -NaN73645398132195864554900320178027488320088359260627968 -> -NaN73645398132195864554900320178027488320088359260627968 +precision: 101 +divide_eq0 divide_eq -Infinity -> NaN Invalid_operation +precision: 245 +divide_eq1 divide_eq Inf -> NaN Invalid_operation +precision: 110 +divide_eq2 divide_eq -.1476808094725729904095250393485863450763071588976156608004151488204454583149499119086353485308969531e-190874140 -> 1 +precision: 252 +divide_eq3 divide_eq -720139078.7030741104805598019890857679520254017138520961247740866753962780770298439853312381187097077639434494159265440701085632001205589332889414225671314382822069 -> 1 +precision: 199 +divide_eq4 divide_eq -.11423548642039778502853331752699438267880556546060947088900423118459e+136020058 -> 1 +precision: 166 +divide_eq5 divide_eq -Inf -> NaN Invalid_operation +precision: 292 +divide_eq6 divide_eq +57566049327259003 -> 1 +precision: 251 +divide_eq7 divide_eq +9049630897567687826736795538426391297e+136212546 -> 1 +precision: 192 +divide_eq8 divide_eq -20855240434763808890488997795553145644765618694284843107013201034649712050079864080577203494538403684650909889345923214.67401532096608857894045837940385205173579226224086590632078120 -> 1 +precision: 298 +divide_eq9 divide_eq .37845592841851474968276142406962568088880599228852907860357259347451055126118792311 -> 1 +precision: 21 +divide_eq10 divide_eq +756589178925911 -> 1 +precision: 253 +divide_eq11 divide_eq +7616540366726289115759482592801393120310510772984495372247478374918334808998133936134691051600873016564865838467138722091889339721855392169064002992883960439547496411674481.6 -> 1 +precision: 152 +divide_eq12 divide_eq -132464569570673129946108463534952339491361707317524150518897310780087454591671438746372034616705624542012933 -> 1 +precision: 199 +divide_eq13 divide_eq +97295483E69909190 -> 1 +precision: 40 +divide_eq14 divide_eq +16125239727365 -> 1 +precision: 285 +divide_eq15 divide_eq -558912397953805315990901700479302738487872408100224141554032211770060719956670370528357559747385688199453070310642436380872070224846959709862988028030172431889225382997421018958990515641631009043170243901962980389765418921328936769632046245994333949554620532625631437368335 -> 1 +precision: 196 +divide_eq16 divide_eq -581760502091189143431438830346977643468801664263826568776486515235354179191847127022864144411030425924 -> 1 +precision: 171 +divide_eq17 divide_eq Inf -> NaN Invalid_operation +precision: 170 +divide_eq18 divide_eq -57102093068241152366346390834968936561555141453709797113707686008461567265330157104573628277415130 -> 1 +precision: 55 +divide_eq19 divide_eq Inf -> NaN Invalid_operation +precision: 164 +divide_eq20 divide_eq +4933541562001816173660814944425102570689578246623106270773884779497866838635610084037716084760670166505219125910520748434625908599105928077183742147 -> 1 +precision: 263 +divide_eq21 divide_eq 780978739001821784651187055095281139871139144514794451667397831088125667013225075092319109815638757980986767938413567745249111066203822578617871443e+172242403 -> 1 +precision: 24 +divide_eq22 divide_eq -669. -> 1 +precision: 139 +divide_eq23 divide_eq -929026873425924449762295114437344056295088895586400717575061122531902368317373.61379 -> 1 +precision: 28 +divide_eq24 divide_eq 32004438.936296670e-388597605 -> 1 +precision: 97 +divide_eq25 divide_eq +685192356940609723816549351427584811512414782271930939 -> 1 +precision: 15 +divide_eq26 divide_eq +24.4 -> 1 +precision: 264 +divide_eq27 divide_eq -76399839137E-312835605 -> 1 +precision: 166 +divide_eq28 divide_eq +286785230408511189389946035072752552272281497439131116949467362921468915707467195901118328632109569893657252024426064460.8 -> 1 +precision: 285 +divide_eq29 divide_eq -156241995206772934084790541418216073206584870776651480411244245887140889823336601575165267249785697487604122261756039 -> 1 +precision: 213 +divide_eq30 divide_eq -18835613161.85875029301502894096673156458933709200124152477782829434405710251917 -> 1 +precision: 208 +divide_eq31 divide_eq +329503882648611474548629054404411878016829780451326673892970516426794656022912026336043853586758662189289385178796276205400609e-24954863 -> 1 +precision: 68 +divide_eq32 divide_eq -642490193725470129122985393648821604455340877964136 -> 1 +precision: 119 +divide_eq33 divide_eq .1213548802720209817457722469194878972433909233797509 -> 1 +precision: 243 +divide_eq34 divide_eq 88390530580202114893633750458552868273412491465.9653514770700 -> 1 +precision: 12 +divide_eq35 divide_eq 1202980602 -> 1 +precision: 95 +divide_eq36 divide_eq -622432682603042167229028927214099123615e+146590683 -> 1 +precision: 234 +divide_eq37 divide_eq -623685917512840505914725819957208408206512955209119450474903177962467.583807976443798750174844935878748577333589070537241247780392426342246659540059980535170984627883840223725460416803667310116204649587839889122149720871 -> 1 +precision: 70 +divide_eq38 divide_eq +307778499491228339010454626807 -> 1 +precision: 24 +divide_eq39 divide_eq -337901622398684.912979 -> 1 +precision: 213 +divide_eq40 divide_eq 712917884.16171091010393155094288085619923697401198341672010183202041106677130168595980396078140846159780896802775036224934370341322361624E+293973671 -> 1 +precision: 294 +divide_eq41 divide_eq -.3274166911418925254250867444878322152615492228251384507549600134687882983374230329357978235008472416506241930093329341487797874986 -> 1 +precision: 48 +divide_eq42 divide_eq -8263521225725846856681077276094893285576261764 -> 1 +precision: 98 +divide_eq43 divide_eq -91057156340472810571826299969430.30620840013880692959175821E-174986185 -> 1 +precision: 23 +divide_eq44 divide_eq -2.e-411141805 -> 1 +precision: 269 +divide_eq45 divide_eq -845141104644763813738850543179104306995361345173618975906028394090238434137826994961014599912709940817914874809854538221832860989281789090938874879129894476815895991550922865065693207755622009091262775678759898 -> 1 +precision: 283 +divide_eq46 divide_eq -5970255057265614965706607283227776119878517813823118844571266884633952649951183994e-392072151 -> 1 +precision: 31 +divide_eq47 divide_eq -1477080315892761879414599E-346711596 -> 1 +precision: 121 +divide_eq48 divide_eq +86165608170213766602.94134869873594684357724094010230038522061903e-183189626 -> 1 +precision: 199 +divide_eq49 divide_eq -711145549607361830875332328381399788166622564159900.51874082473364669851276652848717E+342044570 -> 1 +precision: 294 +divide_eq50 divide_eq -64450169407069787262103392E76952379 -> 1 +precision: 287 +divide_eq51 divide_eq -90184055520871121698254013571145836444773758648611909 -> 1 +precision: 91 +divide_eq52 divide_eq +6603936296659210086718274400236401200188918056620726611241032.810056 -> 1 +precision: 109 +divide_eq53 divide_eq -8909511328776956796073380205763245742260036040182232805865312603009832060830535281798471351184237 -> 1 +precision: 13 +divide_eq54 divide_eq -56199499 -> 1 +precision: 144 +divide_eq55 divide_eq -267655574e-338719954 -> 1 +precision: 18 +divide_eq56 divide_eq 273837873296020.6e-405686955 -> 1 +precision: 201 +divide_eq57 divide_eq -56929515351505776318208129824525130348917134735034916419394700417605978810461536030019272932090671039700604275289853600484594104342438355523803882253313369404757230918341167057021843E407971284 -> 1 +precision: 192 +divide_eq58 divide_eq +13643852775841014921914835623339788973293544009829640956625028574220654641017020473004526206545e-128059292 -> 1 +precision: 234 +divide_eq59 divide_eq 58799228727009310372528109784658383378303035378522080974337590565283047704780E-192434611 -> 1 +precision: 286 +divide_eq60 divide_eq -166472392467877011168252287.71314609218861339244103788374161096476551943678752281727454808068261357535714773332203907202680750485159686496109690833436573258649837840230186318272253915612405029202994851701283208155988214057879124551751337704149435037248282354727029656271611485793059e-29946188 -> 1 +precision: 240 +divide_eq61 divide_eq -888279360979847835372608590812249939937380776052207856364486893324054001511384417846141562527664481222127963121518087254331437123223476884356595902748226934885912129900564029441423621784532048357586E260225656 -> 1 +precision: 180 +divide_eq62 divide_eq -62.7E-86593580 -> 1 +precision: 110 +divide_eq63 divide_eq -Infinity -> NaN Invalid_operation +precision: 217 +divide_eq64 divide_eq +70754612337129752247973555873491063051430174522261007741319032411562791790827763202539570787528083242885556878553538287488e-74868643 -> 1 +precision: 70 +divide_eq65 divide_eq 1101950788010535E-362477493 -> 1 +precision: 39 +divide_eq66 divide_eq +98308 -> 1 +precision: 62 +divide_eq67 divide_eq 31733412607673.128977400104734019098693401832113 -> 1 +precision: 45 +divide_eq68 divide_eq 7.10105853563856 -> 1 +precision: 207 +divide_eq69 divide_eq +675752852781401543055974814670904049316.8654094126562639791610710442e-145757722 -> 1 +precision: 241 +divide_eq70 divide_eq -4450487237728532937.933231 -> 1 +precision: 47 +divide_eq71 divide_eq -61411634909188873 -> 1 +precision: 100 +divide_eq72 divide_eq -626176102238052754 -> 1 +precision: 297 +divide_eq73 divide_eq -22247593796.5012386878556 -> 1 +precision: 50 +divide_eq74 divide_eq Infinity -> NaN Invalid_operation +precision: 188 +divide_eq75 divide_eq +Infinity -> NaN Invalid_operation +precision: 218 +divide_eq76 divide_eq .60790809857379948768881880713460478086089024585645948799639746721516532020406815043420 -> 1 +precision: 104 +divide_eq77 divide_eq -3254165926721719071401463323692639728745870336031849554799508573339804772298352700812.1222415863576 -> 1 +precision: 118 +divide_eq78 divide_eq -83586027649668501381211209989.44413637926882821730E-289951920 -> 1 +precision: 88 +divide_eq79 divide_eq -778570662317039247646 -> 1 +precision: 240 +divide_eq80 divide_eq 620326677397240.850653812628717127618781977887725260304574302740635134337953478311367 -> 1 +precision: 159 +divide_eq81 divide_eq 5551883711060673923753975456747036 -> 1 +precision: 85 +divide_eq82 divide_eq -16190268238164312872356E143566390 -> 1 +precision: 78 +divide_eq83 divide_eq 81154818347518765537255545758243358694575703847736449901270406 -> 1 +precision: 155 +divide_eq84 divide_eq 355337e+284096276 -> 1 +precision: 270 +divide_eq85 divide_eq 7776158154478 -> 1 +precision: 11 +divide_eq86 divide_eq +46.7501 -> 1 +precision: 72 +divide_eq87 divide_eq -53333221565567759554114159498175163529063463758998569160209746321107E-151636004 -> 1 +precision: 295 +divide_eq88 divide_eq +855.55590520063727890779471997433604933429094232004702426385204730260552951829031931901328048264311000526138587859537382229563852264035973356851333978007448964542800066405850229041474808134084696345 -> 1 +precision: 211 +divide_eq89 divide_eq 672745818294864853476261239748209013136324902029245074291428054800276.35383015557432509866443921 -> 1 +precision: 139 +divide_eq90 divide_eq Inf -> NaN Invalid_operation +precision: 182 +divide_eq91 divide_eq -4910043781384861625190274087609084183424764003136029037441096538943948e249027855 -> 1 +precision: 65 +divide_eq92 divide_eq -415916.87217038152248167615003069e-283790548 -> 1 +precision: 265 +divide_eq93 divide_eq +3485778597372958298.98380318471 -> 1 +precision: 112 +divide_eq94 divide_eq -8616887700305395591016141454363938602556599540120895444357409442326130 -> 1 +precision: 246 +divide_eq95 divide_eq +1982799473361129571751244021744791301677731717665778559164756048438636929326418202415376242630399459755098090613246847 -> 1 +precision: 242 +divide_eq96 divide_eq .473970053984103201091652943216177553884386460012308008589725012515469116148195995185557562847667970300402376038790875544508464804678193114512052980263341053940619 -> 1 +precision: 127 +divide_eq97 divide_eq -.240557624603898147566832979637761107201 -> 1 +precision: 15 +divide_eq98 divide_eq -3803013943816 -> 1 +precision: 191 +divide_eq99 divide_eq -8189 -> 1 +precision: 244 +divideint_eq0 divideint_eq -2908370616319578312063941557274194851663041095277377748986724480242388302053977204812657908848362009053864590869125163078562875951481531607893722343701113669128151095333657285531106914454e+70628990 -> 1 +precision: 146 +divideint_eq1 divideint_eq -1256574716053067901997983102369440625154437304394877782 -> 1 +precision: 48 +divideint_eq2 divideint_eq -.548918 -> 1 +precision: 155 +divideint_eq3 divideint_eq 32033489823530180352278187856323894032970304484771521282 -> 1 +precision: 12 +divideint_eq4 divideint_eq +247 -> 1 +precision: 290 +divideint_eq5 divideint_eq sNaN738420135455820970672439082041 -> NaN738420135455820970672439082041 Invalid_operation +precision: 154 +divideint_eq6 divideint_eq -.88564365385881011147819297802214956637652639618629 -> 1 +precision: 216 +divideint_eq7 divideint_eq -9884933188567325553.77519905302476176408714388097345911E78908392 -> 1 +precision: 205 +divideint_eq8 divideint_eq -5350396155712467491 -> 1 +precision: 234 +divideint_eq9 divideint_eq +6004358545820654718334648210758559991824860952390138598137690580139579473495934597594525805129685369437231986616808441371264778276324910307676711146650002546604936039388892971395984365602782E-199272347 -> 1 +precision: 82 +divideint_eq10 divideint_eq -443736763339300096531.99077517853669822 -> 1 +precision: 87 +divideint_eq11 divideint_eq Infinity -> NaN Invalid_operation +precision: 52 +divideint_eq12 divideint_eq +370695164030916.81799222 -> 1 +precision: 237 +divideint_eq13 divideint_eq NaN8481 -> NaN8481 +precision: 222 +divideint_eq14 divideint_eq 82238825985885512360657.2193113351280794952782825424364332055449866184869603877069771701448761430244616977832957549588845178699507856839E160927102 -> 1 +precision: 184 +divideint_eq15 divideint_eq -1202185937853107090293318245928017185131634933099973941340860888519320536829854521269204353763041931948598706911101644704568386327501811436624630721279906422089114399737446E-285606062 -> 1 +precision: 212 +divideint_eq16 divideint_eq -8999 -> 1 +precision: 132 +divideint_eq17 divideint_eq -13264787870372981492769808151945677174137786452679797229576746419058916024e157878286 -> 1 +precision: 2 +divideint_eq18 divideint_eq 3.6 -> 1 +precision: 60 +divideint_eq19 divideint_eq -1258030159714393.5880857539836422313 -> 1 +precision: 176 +divideint_eq20 divideint_eq 52842529310334863950155288548647656600941538583676136431851411817224865117107058305426027141486412102503702646996254719559538864045123297309580612856661100544955 -> 1 +precision: 169 +divideint_eq21 divideint_eq -597098254464732797344863769410517742685082451098117201998335217751815839395991669907927666850 -> 1 +precision: 21 +divideint_eq22 divideint_eq -.955 -> 1 +precision: 221 +divideint_eq23 divideint_eq -Infinity -> NaN Invalid_operation +precision: 8 +divideint_eq24 divideint_eq +NaN -> NaN +precision: 35 +divideint_eq25 divideint_eq -504981104763665254793727130766237 -> 1 +precision: 188 +divideint_eq26 divideint_eq +928252263160018659536867470102178541255281990402081126496025623238266017805407059555810456186962650736373263418301045526946196313651944537240367412459730411665e-314943780 -> 1 +precision: 135 +divideint_eq27 divideint_eq -sNaN57618544980879995812520729112652122135666362935014001 -> -NaN57618544980879995812520729112652122135666362935014001 Invalid_operation +precision: 55 +divideint_eq28 divideint_eq -49.e-243945635 -> 1 +precision: 24 +divideint_eq29 divideint_eq 543948.1 -> 1 +precision: 35 +divideint_eq30 divideint_eq -68144748254307118885948690E-323697561 -> 1 +precision: 224 +divideint_eq31 divideint_eq sNaN -> NaN Invalid_operation +precision: 276 +divideint_eq32 divideint_eq -8700868367695844338608077858640024559476621310905162076.243575 -> 1 +precision: 100 +divideint_eq33 divideint_eq -273776598077639196306582616387076661209470441299194130996003e-380514960 -> 1 +precision: 72 +divideint_eq34 divideint_eq -806694729211834.97e+204513402 -> 1 +precision: 237 +divideint_eq35 divideint_eq 976018181126506514567133304986460821711165181527654155891264929380451247300975330881111222125949477347065225571806643998108168622938882 -> 1 +precision: 198 +divideint_eq36 divideint_eq -3351153694033693759143552550759684667114200537887889741171670355062477664768135976 -> 1 +precision: 238 +divideint_eq37 divideint_eq -3811106476587934406189323754079849409380066844337492094738040348142839403251075078530745298644255385345345658193608088868567091795633769296358758713994618933453150 -> 1 +precision: 115 +divideint_eq38 divideint_eq -Inf -> NaN Invalid_operation +precision: 143 +divideint_eq39 divideint_eq 752360514372561842392306793359076119859331657991649031514096188375489213269728895855175 -> 1 +precision: 23 +divideint_eq40 divideint_eq -65826272684087e-189901812 -> 1 +precision: 154 +divideint_eq41 divideint_eq -Inf -> NaN Invalid_operation +precision: 145 +divideint_eq42 divideint_eq 9346756156957516795187377095629312073.68927595314817464361343166122628317396293984682878750749652397464184586575e+179318302 -> 1 +precision: 58 +divideint_eq43 divideint_eq -973420415713792696322214 -> 1 +precision: 189 +divideint_eq44 divideint_eq +47114247859996370684107328823566468584346444259104557331421540571100826509821427029368337493105070748869227331098707021690114584178883249327040053324543807385e+197976057 -> 1 +precision: 220 +divideint_eq45 divideint_eq 41629229434806566772235264186616210626738601961827509191888976253174197349572153258105167005453982350268197650983486410981435964014763197868093451880600821296275337419 -> 1 +precision: 203 +divideint_eq46 divideint_eq +580558304844.3971143541089941118037763511616825368650185111033112445359667375539943802771118327409918494034519551505664614756280251364425538993191916175432 -> 1 +precision: 18 +divideint_eq47 divideint_eq -366827704880521e401217436 -> 1 +precision: 97 +divideint_eq48 divideint_eq 88969.849992380750633496e-138384568 -> 1 +precision: 49 +divideint_eq49 divideint_eq -445632069169299394.997270791006185987654891276617 -> 1 +precision: 47 +divideint_eq50 divideint_eq -357177784109492555223519860538873611 -> 1 +precision: 178 +divideint_eq51 divideint_eq -48130418374141952724895846775742663246225122130321759930546932.18959 -> 1 +precision: 206 +divideint_eq52 divideint_eq +83680520978925049.525750755001819649412145135139113066968813355339220784940918687346191750285652758560968743324817575795007386787930804589e-348572820 -> 1 +precision: 43 +divideint_eq53 divideint_eq -49546005227034532863459820331039E-111851760 -> 1 +precision: 87 +divideint_eq54 divideint_eq -.409020013460156742400503188502042913565621425625241744231110494489182996035732 -> 1 +precision: 178 +divideint_eq55 divideint_eq -sNaN -> -NaN Invalid_operation +precision: 51 +divideint_eq56 divideint_eq 167739739308336337299604868E-167615854 -> 1 +precision: 220 +divideint_eq57 divideint_eq -5300924390991611325843577898308932510583029979720544901227984758608363165247154935394674245504898222957637889493955194995842619467356519270 -> 1 +precision: 52 +divideint_eq58 divideint_eq -42651184065238845325304233737813712812 -> 1 +precision: 160 +divideint_eq59 divideint_eq +Inf -> NaN Invalid_operation +precision: 296 +divideint_eq60 divideint_eq +95430223596390508793159877962590069515961834544.6494147401442188720362424000640936757021492011291255745625035788820000915581847243524343038266669934538108614005420466638827705495042289164326067136339396157449e-407784882 -> 1 +precision: 255 +divideint_eq61 divideint_eq -121410613239230278911368994469581498390989145061325120418293384741884952420202154199990781814331376978964064149553438076434112399733295955837885246553638214847379464843337620114E273623794 -> 1 +precision: 275 +divideint_eq62 divideint_eq -187563482316330537787159E-112385481 -> 1 +precision: 110 +divideint_eq63 divideint_eq +21515317087206151725444363496466671364497643357513607420052655.821902302251545278495192674529458969113592533 -> 1 +precision: 213 +divideint_eq64 divideint_eq -1886987509176720549221042721476020002574865555172260813975013733194E+24574208 -> 1 +precision: 189 +divideint_eq65 divideint_eq +28687311737550585944.4177e-33505340 -> 1 +precision: 236 +divideint_eq66 divideint_eq +5006675062343712217596493479021890779566957551625846964589963890609148614541390157258076880316846645663302760804622389184180006899273308957713918674683004665350029 -> 1 +precision: 126 +divideint_eq67 divideint_eq +6815719732515474416961007346323602899979093543072955946681395720331.125314412873076067000567297869 -> 1 +precision: 21 +divideint_eq68 divideint_eq -.792 -> 1 +precision: 281 +divideint_eq69 divideint_eq -.8383348825282366989534716394521356066079031392274329051537498369e182940300 -> 1 +precision: 177 +divideint_eq70 divideint_eq -533418438307368782835414547018323522458181065714916485951533133837656607133903494697352e+216617247 -> 1 +precision: 276 +divideint_eq71 divideint_eq -837478756121790407162.36186256535813229581475852017787150119955838740997259230e-214314979 -> 1 +precision: 80 +divideint_eq72 divideint_eq -51095903532848.94133284549122562773070 -> 1 +precision: 209 +divideint_eq73 divideint_eq -3.3015189510722583289122955034E398579675 -> 1 +precision: 153 +divideint_eq74 divideint_eq -35742507729436918675061614674503020 -> 1 +precision: 28 +divideint_eq75 divideint_eq 56.32623636404638934 -> 1 +precision: 35 +divideint_eq76 divideint_eq +Infinity -> NaN Invalid_operation +precision: 38 +divideint_eq77 divideint_eq 857849415966661550412458225068493.408e-2366498 -> 1 +precision: 152 +divideint_eq78 divideint_eq -353 -> 1 +precision: 118 +divideint_eq79 divideint_eq -36617.25 -> 1 +precision: 20 +divideint_eq80 divideint_eq -.931901204 -> 1 +precision: 163 +divideint_eq81 divideint_eq -889024687096555682605466206734283843817504069813556776171917662633865117389491619048336240572088980616142246280291097043456345078866E-245314465 -> 1 +precision: 217 +divideint_eq82 divideint_eq -719511744944539985837404914536213770456639586192998550449999886650459561943147800231642307240665229289904206011419445726529877851508228981 -> 1 +precision: 276 +divideint_eq83 divideint_eq 38635311730811169411884941975212349138920181925390903350004284821634908119573815531343089808514860724620692003395997608988667052894071632076454632582724008077702696221244258168666412373542526281 -> 1 +precision: 69 +divideint_eq84 divideint_eq -377160544521169 -> 1 +precision: 110 +divideint_eq85 divideint_eq .6382839411149205759751620565412460150380282638623079027720570602606918960251622 -> 1 +precision: 244 +divideint_eq86 divideint_eq -83167632219887.92201177147864817358219598989868240652309419056540E-100575961 -> 1 +precision: 186 +divideint_eq87 divideint_eq -46866659854597783338828542637553964365276529852718550786762008902451475255188384948672064085122095618137174767903859271e85529184 -> 1 +precision: 247 +divideint_eq88 divideint_eq .9273920078284177218690390635524459153491242451236812112099941725079123806e193934064 -> 1 +precision: 239 +divideint_eq89 divideint_eq -NaN5909740711744069586903692332152732281199748863039971497992084820912 -> -NaN5909740711744069586903692332152732281199748863039971497992084820912 +precision: 224 +divideint_eq90 divideint_eq -27675489644781362117231076616909842314387207424897538941017992252395965826543694898934757316552657320248552272040698992242687334754772295031146803477158222618269801814659780916921247518626857018E+99528979 -> 1 +precision: 11 +divideint_eq91 divideint_eq +28.E-365700090 -> 1 +precision: 158 +divideint_eq92 divideint_eq 2661080395562812271520283.931452934712795147 -> 1 +precision: 258 +divideint_eq93 divideint_eq +9132012704571220154227071574821062143837885377313300363948422539955951697856848730532010914894561752737531291267311852389877202801459118053271543193841704731 -> 1 +precision: 30 +divideint_eq94 divideint_eq -329361572097.241299907978 -> 1 +precision: 247 +divideint_eq95 divideint_eq +58163889412647430370505650736.62357340643611516340823425586247480110373134808064686589155225353140800112994772089786466337862984605313179969040728678726692784748288401005105042386648488384915268156121278494329291911e-101624952 -> 1 +precision: 75 +divideint_eq96 divideint_eq 2541387136605309125 -> 1 +precision: 21 +divideint_eq97 divideint_eq 3310590756712741 -> 1 +precision: 46 +divideint_eq98 divideint_eq +5770521035560761100078283398634812198E+401568072 -> 1 +precision: 263 +divideint_eq99 divideint_eq 49475220356.11756009359270024890241783361 -> 1 +precision: 244 +max_eq0 max_eq .61294353288401045160234726659703776857233668892879406879158469530386283829784686098050819994417591592406536447001206247327327803974300306587239104367929855E-108365476 -> 6.1294353288401045160234726659703776857233668892879406879158469530386283829784686098050819994417591592406536447001206247327327803974300306587239104367929855E-108365477 +precision: 107 +max_eq1 max_eq -958729752001 -> -958729752001 +precision: 199 +max_eq2 max_eq -.637566550670430113984667897604832832741908552919926875765957932741785302822548141271360493973713346918868565941e-187260823 -> -6.37566550670430113984667897604832832741908552919926875765957932741785302822548141271360493973713346918868565941E-187260824 +precision: 28 +max_eq3 max_eq -57974311645.849948 -> -57974311645.849948 +precision: 132 +max_eq4 max_eq .668324604065071924776 -> 0.668324604065071924776 +precision: 230 +max_eq5 max_eq -.869973015889144486301646146285255253145557991929351692578558371031535761613541108808398357176829336657303142023672804268136315546673203199228573096410641659930337151745455577814825361374803550942293007421859 -> -0.869973015889144486301646146285255253145557991929351692578558371031535761613541108808398357176829336657303142023672804268136315546673203199228573096410641659930337151745455577814825361374803550942293007421859 +precision: 221 +max_eq6 max_eq 754918800247502604263379996026800987522966083429432015163456664578317020777659634571570823040956000714576255817323020021499116714751061874005618752003899715121928086258729446252267792529700510514903109663220134413 -> 754918800247502604263379996026800987522966083429432015163456664578317020777659634571570823040956000714576255817323020021499116714751061874005618752003899715121928086258729446252267792529700510514903109663220134413 +precision: 37 +max_eq7 max_eq +4888293 -> 4888293 +precision: 83 +max_eq8 max_eq -89038569449765209243731429.7 -> -89038569449765209243731429.7 +precision: 225 +max_eq9 max_eq -99807911226125283362195687098572969950547308536901384240245113421617253175005137180356838842850539991218427299590485301565785735488433036443598493481732070195775307282648099368774410275454101857833040 -> -99807911226125283362195687098572969950547308536901384240245113421617253175005137180356838842850539991218427299590485301565785735488433036443598493481732070195775307282648099368774410275454101857833040 +precision: 133 +max_eq10 max_eq 76732202723321 -> 76732202723321 +precision: 282 +max_eq11 max_eq -.36771565765770022868540325825573706348121784800150866458657240941566719574137913460106946053641536228430323912032867303 -> -0.36771565765770022868540325825573706348121784800150866458657240941566719574137913460106946053641536228430323912032867303 +precision: 219 +max_eq12 max_eq 239933247601545603173599922008736950305620015008789244156257798840933816317109894398670957764863235335487439375025719281522181147254049501362284837406390817235068148063597384425208501298105 -> 239933247601545603173599922008736950305620015008789244156257798840933816317109894398670957764863235335487439375025719281522181147254049501362284837406390817235068148063597384425208501298105 +precision: 234 +max_eq13 max_eq 189308763460111567287781998750146650424865113593517299367404216331183999950659382165580071654658255169613435647719012913937958279857653412909032632962728156511243095178589885282959285369975930321979010843127104949342928487817817e+243863801 -> 1.89308763460111567287781998750146650424865113593517299367404216331183999950659382165580071654658255169613435647719012913937958279857653412909032632962728156511243095178589885282959285369975930321979010843127104949342928487817817E+243864028 +precision: 135 +max_eq14 max_eq Infinity -> Infinity +precision: 80 +max_eq15 max_eq .310272844496420 -> 0.310272844496420 +precision: 25 +max_eq16 max_eq -56107e+184138130 -> -5.6107E+184138134 +precision: 163 +max_eq17 max_eq -6820415058658865347155974649152556481495537428193566039694682736953541238924443832736383992834883045555121467286797440703458901970883919894103136141213 -> -6820415058658865347155974649152556481495537428193566039694682736953541238924443832736383992834883045555121467286797440703458901970883919894103136141213 +precision: 22 +max_eq18 max_eq -13582450391E-170724899 -> -1.3582450391E-170724889 +precision: 37 +max_eq19 max_eq 383709654076225 -> 383709654076225 +precision: 276 +max_eq20 max_eq +.867441613129135766677199502956360957236229406826122 -> 0.867441613129135766677199502956360957236229406826122 +precision: 172 +max_eq21 max_eq -6533339154874443120224881557829358844776352306364542070970231086714569434949672340323847917249387816877796049906104068527030831768417809051238993813563562 -> -6533339154874443120224881557829358844776352306364542070970231086714569434949672340323847917249387816877796049906104068527030831768417809051238993813563562 +precision: 231 +max_eq22 max_eq +sNaN1498932342166733896677841437664426983441980199032 -> NaN1498932342166733896677841437664426983441980199032 Invalid_operation +precision: 250 +max_eq23 max_eq +217000633598458773541156955143262676639421134264928013010145511575172260268955049344424897175.3388963039806724393611473198508859914919 -> 217000633598458773541156955143262676639421134264928013010145511575172260268955049344424897175.3388963039806724393611473198508859914919 +precision: 236 +max_eq24 max_eq +73231166339431677691327226289270885231978212118792088160194951034616585303170547610736996155481982314799037539065093271634531358488783240413280672 -> 73231166339431677691327226289270885231978212118792088160194951034616585303170547610736996155481982314799037539065093271634531358488783240413280672 +precision: 121 +max_eq25 max_eq -924676917348801943335306388524 -> -924676917348801943335306388524 +precision: 222 +max_eq26 max_eq -81795612957899609685636898031285849314459630055420787441.6175e-283740439 -> -8.17956129578996096856368980312858493144596300554207874416175E-283740384 +precision: 13 +max_eq27 max_eq 73246E-313886321 -> 7.3246E-313886317 +precision: 9 +max_eq28 max_eq .655e+226154678 -> 6.55E+226154677 +precision: 166 +max_eq29 max_eq +4005509523237638043925991039746146703751720611134475976536537793212938598146411821835171022127221476667946837728126746233467279781229011299794990635978361843735E-226894112 -> 4.005509523237638043925991039746146703751720611134475976536537793212938598146411821835171022127221476667946837728126746233467279781229011299794990635978361843735E-226893953 +precision: 245 +max_eq30 max_eq -Infinity -> -Infinity +precision: 294 +max_eq31 max_eq -71839888401719648842417671450515779204880259940844845419351459297.224643944589971581612262834276205477107370702335043777702874406576874071356715706456864622e-206977024 -> -7.1839888401719648842417671450515779204880259940844845419351459297224643944589971581612262834276205477107370702335043777702874406576874071356715706456864622E-206976960 +precision: 127 +max_eq32 max_eq +53272187176953593747976766373268542332264864771830720939.61465 -> 53272187176953593747976766373268542332264864771830720939.61465 +precision: 291 +max_eq33 max_eq 3930006161890868126699733674 -> 3930006161890868126699733674 +precision: 24 +max_eq34 max_eq -Inf -> -Infinity +precision: 85 +max_eq35 max_eq 93078292872826821557062804648664023914549949 -> 93078292872826821557062804648664023914549949 +precision: 99 +max_eq36 max_eq -12589227765540231881757 -> -12589227765540231881757 +precision: 237 +max_eq37 max_eq +.658537391911369667168587960845918993179681225105767587482286342578856931277560680081994638430030884403661209711 -> 0.658537391911369667168587960845918993179681225105767587482286342578856931277560680081994638430030884403661209711 +precision: 47 +max_eq38 max_eq -5014.4668884154720700459425691433194109273E-23577926 -> -5.0144668884154720700459425691433194109273E-23577923 +precision: 99 +max_eq39 max_eq 1712263E+241332942 -> 1.712263E+241332948 +precision: 272 +max_eq40 max_eq sNaN -> NaN Invalid_operation +precision: 296 +max_eq41 max_eq 2932838202910929365968075806003398724 -> 2932838202910929365968075806003398724 +precision: 253 +max_eq42 max_eq -5997269884479528705339909263811384503913666244918851610755065988480572220073176294489908561114433931425393639741E-48828073 -> -5.997269884479528705339909263811384503913666244918851610755065988480572220073176294489908561114433931425393639741E-48827962 +precision: 48 +max_eq43 max_eq -.3871527 -> -0.3871527 +precision: 25 +max_eq44 max_eq 357761020156912575.18046E-10375878 -> 3.5776102015691257518046E-10375861 +precision: 85 +max_eq45 max_eq +Inf -> Infinity +precision: 130 +max_eq46 max_eq -Infinity -> -Infinity +precision: 3 +max_eq47 max_eq 594 -> 594 +precision: 270 +max_eq48 max_eq -3118321986631404546919966497133242926239456656999895663931949148352751871236974584267503805297770414798775854392905337998276727349598318370834457710938843 -> -3118321986631404546919966497133242926239456656999895663931949148352751871236974584267503805297770414798775854392905337998276727349598318370834457710938843 +precision: 220 +max_eq49 max_eq +.1314138665592630564212725925252955494928143568658139830691640213610799646320820453081445369755213696680742513666368718984518903479288899579339096022867752007515007583697990402976077826932388413358972112025451664 -> 0.1314138665592630564212725925252955494928143568658139830691640213610799646320820453081445369755213696680742513666368718984518903479288899579339096022867752007515007583697990402976077826932388413358972112025451664 +precision: 23 +max_eq50 max_eq -3.9 -> -3.9 +precision: 102 +max_eq51 max_eq -624149906240773580996E+335551037 -> -6.24149906240773580996E+335551057 +precision: 33 +max_eq52 max_eq 1618e+308227548 -> 1.618E+308227551 +precision: 227 +max_eq53 max_eq -NaN -> -NaN +precision: 57 +max_eq54 max_eq -4.19304296451257399361242187172321466723295293898 -> -4.19304296451257399361242187172321466723295293898 +precision: 181 +max_eq55 max_eq +9178e+407539606 -> 9.178E+407539609 +precision: 266 +max_eq56 max_eq +405901285958716350459499205566933519254497908443400622800098783028506222338639188345653121153796791486.6475319446791209564922510854050390998970 -> 405901285958716350459499205566933519254497908443400622800098783028506222338639188345653121153796791486.6475319446791209564922510854050390998970 +precision: 198 +max_eq57 max_eq -.9996627295307099376957106834610160823838756839094469162405960707045269039 -> -0.9996627295307099376957106834610160823838756839094469162405960707045269039 +precision: 147 +max_eq58 max_eq 855418981263698892251772310416893334120267101214477023706655.50440299261199109961978087532635053129058358558792627194835 -> 855418981263698892251772310416893334120267101214477023706655.50440299261199109961978087532635053129058358558792627194835 +precision: 64 +max_eq59 max_eq -.724930973654359453754376532879555822180532480467904E+59385769 -> -7.24930973654359453754376532879555822180532480467904E+59385768 +precision: 285 +max_eq60 max_eq -541736090308987960995674029925969878064643486932040209067412 -> -541736090308987960995674029925969878064643486932040209067412 +precision: 144 +max_eq61 max_eq .34756763378502577181629253196334156671489441533615334561E344490503 -> 3.4756763378502577181629253196334156671489441533615334561E+344490502 +precision: 200 +max_eq62 max_eq -23305847079475864385863302887649895553776348790901075597760739336649602368700008612937081019397068062416451382583696285126057.732947773953639451560179534453199099612071546497368748871703396299e-256795588 -> -2.3305847079475864385863302887649895553776348790901075597760739336649602368700008612937081019397068062416451382583696285126057732947773953639451560179534453199099612071546497368748871703396299E-256795464 +precision: 177 +max_eq63 max_eq 6078279745316087413813881124110468108596252687470019108851520803744788.34646909488254223294411091614542841e+136372693 -> 6.07827974531608741381388112411046810859625268747001910885152080374478834646909488254223294411091614542841E+136372762 +precision: 9 +max_eq64 max_eq .3325100 -> 0.3325100 +precision: 102 +max_eq65 max_eq +28.34637294368198379664359886457776343512188479384528560409025391502 -> 28.34637294368198379664359886457776343512188479384528560409025391502 +precision: 144 +max_eq66 max_eq 3367976445756630287154311869005044846984031144.495348E+183511724 -> 3.367976445756630287154311869005044846984031144495348E+183511769 +precision: 111 +max_eq67 max_eq -91129.84923210254481652947965589910 -> -91129.84923210254481652947965589910 +precision: 202 +max_eq68 max_eq +58179459916809491728710892146172588938691053076732934148741660486354742820640300695651174984511711201695550672721073553582470612994790475369767058148715698125076e+372242727 -> 5.8179459916809491728710892146172588938691053076732934148741660486354742820640300695651174984511711201695550672721073553582470612994790475369767058148715698125076E+372242887 +precision: 117 +max_eq69 max_eq +918391494580395076142220454191929304 -> 918391494580395076142220454191929304 +precision: 101 +max_eq70 max_eq -21005975106457295488136196880655737041 -> -21005975106457295488136196880655737041 +precision: 257 +max_eq71 max_eq 8726185.791537875056770423674909267602977714470342967872287410309203775690482376885813071181424973202781524748391798701302530574331436356565431 -> 8726185.791537875056770423674909267602977714470342967872287410309203775690482376885813071181424973202781524748391798701302530574331436356565431 +precision: 224 +max_eq72 max_eq -72749754417419091998372956785862468659354007545E-259477633 -> -7.2749754417419091998372956785862468659354007545E-259477587 +precision: 60 +max_eq73 max_eq 60e-376327764 -> 6.0E-376327763 +precision: 187 +max_eq74 max_eq +.4766369278876156091073447746438901720020360676e+316580116 -> 4.766369278876156091073447746438901720020360676E+316580115 +precision: 236 +max_eq75 max_eq -2548657789854748931247107443451260080284196195160630254861879252491944427405730113748158451563143431305482746420981161638846299944893507746210941335709158016766367888214829.727883125135671737594818575823480051 -> -2548657789854748931247107443451260080284196195160630254861879252491944427405730113748158451563143431305482746420981161638846299944893507746210941335709158016766367888214829.727883125135671737594818575823480051 +precision: 142 +max_eq76 max_eq 537458242112174378967021084003121178402e119952675 -> 5.37458242112174378967021084003121178402E+119952713 +precision: 154 +max_eq77 max_eq 30964253838829159775032086592823257655e-336198011 -> 3.0964253838829159775032086592823257655E-336197974 +precision: 28 +max_eq78 max_eq -607377862 -> -607377862 +precision: 3 +max_eq79 max_eq -.88e+410166653 -> -8.8E+410166652 +precision: 246 +max_eq80 max_eq 27021747278823119570615539555270651.39102190987326297254679904e-404096416 -> 2.702174727882311957061553955527065139102190987326297254679904E-404096382 +precision: 165 +max_eq81 max_eq +91002585031115427114044145257118517848891604342007114790214733063517906663536475351202560693812510316329099497016471874.13587749025181315 -> 91002585031115427114044145257118517848891604342007114790214733063517906663536475351202560693812510316329099497016471874.13587749025181315 +precision: 12 +max_eq82 max_eq -348. -> -348 +precision: 140 +max_eq83 max_eq +7393417788365164630255213406316801545754945908014028847485871024411717922077210221000073400440486192122279292366909891007161465204960941919 -> 7393417788365164630255213406316801545754945908014028847485871024411717922077210221000073400440486192122279292366909891007161465204960941919 +precision: 118 +max_eq84 max_eq +33210681838615368770031479055108377877 -> 33210681838615368770031479055108377877 +precision: 219 +max_eq85 max_eq +48775767232835846109677218377648 -> 48775767232835846109677218377648 +precision: 115 +max_eq86 max_eq -875456941378741636184304558421476462979559473084302488737411382985 -> -875456941378741636184304558421476462979559473084302488737411382985 +precision: 139 +max_eq87 max_eq -4538728687277941399086979198039965242256478794374356337702446803724697658701407 -> -4538728687277941399086979198039965242256478794374356337702446803724697658701407 +precision: 79 +max_eq88 max_eq -sNaN -> -NaN Invalid_operation +precision: 37 +max_eq89 max_eq -77430622462625969559352175366 -> -77430622462625969559352175366 +precision: 266 +max_eq90 max_eq 9142033884001296096671583135831468588299294398727238906167719431442787422057487008689372227329651.1510996291063602904361132702144928661913553123537050716011248849539511936344156761137768 -> 9142033884001296096671583135831468588299294398727238906167719431442787422057487008689372227329651.1510996291063602904361132702144928661913553123537050716011248849539511936344156761137768 +precision: 90 +max_eq91 max_eq +.491509 -> 0.491509 +precision: 20 +max_eq92 max_eq +3608660395864.57 -> 3608660395864.57 +precision: 113 +max_eq93 max_eq -.8730363246458466972143244965619864057173311803231078657140695985958568198400e-385985922 -> -8.730363246458466972143244965619864057173311803231078657140695985958568198400E-385985923 +precision: 194 +max_eq94 max_eq -45096915955720628205322338356707614699418798750264297852538217272117969.6025775624510228220668739444521790184282 -> -45096915955720628205322338356707614699418798750264297852538217272117969.6025775624510228220668739444521790184282 +precision: 211 +max_eq95 max_eq -4896126628984028065616830256638418334383630119549561254488289928236.4966194698593368197648713E-146231155 -> -4.8961266289840280656168302566384183343836301195495612544882899282364966194698593368197648713E-146231089 +precision: 77 +max_eq96 max_eq +65142035758588664111383055736335706511502158628361595609377 -> 65142035758588664111383055736335706511502158628361595609377 +precision: 185 +max_eq97 max_eq -628329396971581563666082360438141762504168536778689109179006385053202967638602742493647359482899732375811678001733E+327713952 -> -6.28329396971581563666082360438141762504168536778689109179006385053202967638602742493647359482899732375811678001733E+327714065 +precision: 100 +max_eq98 max_eq 61025963348231601586991752 -> 61025963348231601586991752 +precision: 260 +max_eq99 max_eq -.1560349291628608026040399725259619603339306610102299561369746243409055949304734329833437909256654205234970724625416813742561E10565639 -> -1.560349291628608026040399725259619603339306610102299561369746243409055949304734329833437909256654205234970724625416813742561E+10565638 +precision: 158 +maxmag_eq0 maxmag_eq .48737010816330155615387981604048954941401470648949899340946554397957322384905023328136258323652328055945619174202435294531545423005742073792116642271 -> 0.48737010816330155615387981604048954941401470648949899340946554397957322384905023328136258323652328055945619174202435294531545423005742073792116642271 +precision: 125 +maxmag_eq1 maxmag_eq .867049357676692568304662108070292464722909902766555830155 -> 0.867049357676692568304662108070292464722909902766555830155 +precision: 135 +maxmag_eq2 maxmag_eq NaN6070908532835254314072874 -> NaN6070908532835254314072874 +precision: 246 +maxmag_eq3 maxmag_eq -780459963068683325442595627661381517269900589154880756253673348781541244543635650732536e+169411012 -> -7.80459963068683325442595627661381517269900589154880756253673348781541244543635650732536E+169411098 +precision: 104 +maxmag_eq4 maxmag_eq +65086680884345880097462044459985320.9265728591855989536407992726220606797771007850965603 -> 65086680884345880097462044459985320.9265728591855989536407992726220606797771007850965603 +precision: 125 +maxmag_eq5 maxmag_eq 603622065890933742799997909270348856169538291199118494755591321809949495154997983864 -> 603622065890933742799997909270348856169538291199118494755591321809949495154997983864 +precision: 239 +maxmag_eq6 maxmag_eq -703722741831136946635921160893226762412958163946709466393652260971391985693501522309710921651868602452881560604085580005739928737659730648374925067897929660716157950698627343932416804468375E360578666 -> -7.03722741831136946635921160893226762412958163946709466393652260971391985693501522309710921651868602452881560604085580005739928737659730648374925067897929660716157950698627343932416804468375E+360578854 +precision: 273 +maxmag_eq7 maxmag_eq -92732566108566126746743678018503095277731029045809558744171141606112086139676443804828326777328687742839708037939578018872140714253857655787704648693259655999882886743535459296599554155208951831615469163 -> -92732566108566126746743678018503095277731029045809558744171141606112086139676443804828326777328687742839708037939578018872140714253857655787704648693259655999882886743535459296599554155208951831615469163 +precision: 248 +maxmag_eq8 maxmag_eq -89850528585653235442938416747024496752414541835055401410680700713332850987257062766288031751572641276 -> -89850528585653235442938416747024496752414541835055401410680700713332850987257062766288031751572641276 +precision: 94 +maxmag_eq9 maxmag_eq +408084468001119846905418214753484.393651364200481136258136925247716252418839232526955186 -> 408084468001119846905418214753484.393651364200481136258136925247716252418839232526955186 +precision: 49 +maxmag_eq10 maxmag_eq 3401080926675112148189908232191876 -> 3401080926675112148189908232191876 +precision: 94 +maxmag_eq11 maxmag_eq +1182360832221882161492416431016071805210376980002877006272027440245559047248219489E-254445576 -> 1.182360832221882161492416431016071805210376980002877006272027440245559047248219489E-254445495 +precision: 198 +maxmag_eq12 maxmag_eq .682488968041381672544730962406559541261948517290182481897066407742883906752847231199901 -> 0.682488968041381672544730962406559541261948517290182481897066407742883906752847231199901 +precision: 131 +maxmag_eq13 maxmag_eq +337e103395347 -> 3.37E+103395349 +precision: 167 +maxmag_eq14 maxmag_eq -173117529134826005253027463364141603024507402624336956876087409932509702958993125289839661308276522443543257327995 -> -173117529134826005253027463364141603024507402624336956876087409932509702958993125289839661308276522443543257327995 +precision: 56 +maxmag_eq15 maxmag_eq 2472292267773799030650818951090826959851467867084E-410520767 -> 2.472292267773799030650818951090826959851467867084E-410520719 +precision: 133 +maxmag_eq16 maxmag_eq -639258962129310990184700664613920490784466156856E-406780777 -> -6.39258962129310990184700664613920490784466156856E-406780730 +precision: 152 +maxmag_eq17 maxmag_eq -9641537496500831580504343498906336610110472454860096013102114465460891898789345629841439216866811043465E-138884002 -> -9.641537496500831580504343498906336610110472454860096013102114465460891898789345629841439216866811043465E-138883900 +precision: 259 +maxmag_eq18 maxmag_eq +21430 -> 21430 +precision: 97 +maxmag_eq19 maxmag_eq 675633677731703835008326851579091475211292873824424380488226078 -> 675633677731703835008326851579091475211292873824424380488226078 +precision: 138 +maxmag_eq20 maxmag_eq .8635160459590649471720649841878800447567191618934675566634333008e-98385244 -> 8.635160459590649471720649841878800447567191618934675566634333008E-98385245 +precision: 207 +maxmag_eq21 maxmag_eq +.59064883297743426150428608002578658567996292720588149406009834949530825746678498940172661508133424735024775964995152335297260470472972750401540428510518338567522392691519135285134800187685275837327023105 -> 0.59064883297743426150428608002578658567996292720588149406009834949530825746678498940172661508133424735024775964995152335297260470472972750401540428510518338567522392691519135285134800187685275837327023105 +precision: 268 +maxmag_eq22 maxmag_eq +.220317836639504477711173282628164688363745782099937030746118480743250322025970628100759325584619313567218556490237873454486761694693459765357533291178887885716446786265569107740807042576878160 -> 0.220317836639504477711173282628164688363745782099937030746118480743250322025970628100759325584619313567218556490237873454486761694693459765357533291178887885716446786265569107740807042576878160 +precision: 296 +maxmag_eq23 maxmag_eq +88462756150289777056506590798090696.972395256972587 -> 88462756150289777056506590798090696.972395256972587 +precision: 258 +maxmag_eq24 maxmag_eq -17146050277374876873123591791286495879264918632201694367.30901106492431821456726063201319834471846437864591019929749320175575583445517507363991171392357594727533550235559810780053373536942062132563015538255353873685104434170734343820732320512382154275160 -> -17146050277374876873123591791286495879264918632201694367.30901106492431821456726063201319834471846437864591019929749320175575583445517507363991171392357594727533550235559810780053373536942062132563015538255353873685104434170734343820732320512382154275160 +precision: 192 +maxmag_eq25 maxmag_eq +1439671935609471545303978982569635756769716846697238244611146232838720481552385255702382459513202521313527593806337079273665700680831161571302e-388774214 -> 1.439671935609471545303978982569635756769716846697238244611146232838720481552385255702382459513202521313527593806337079273665700680831161571302E-388774073 +precision: 156 +maxmag_eq26 maxmag_eq 817529365434840899982064725750029621936486318502789312816421110106046605930996839841796658875063679452375300292849 -> 817529365434840899982064725750029621936486318502789312816421110106046605930996839841796658875063679452375300292849 +precision: 35 +maxmag_eq27 maxmag_eq -Infinity -> -Infinity +precision: 247 +maxmag_eq28 maxmag_eq -sNaN572246046135663979022865157586898740115728660233289695 -> -NaN572246046135663979022865157586898740115728660233289695 Invalid_operation +precision: 62 +maxmag_eq29 maxmag_eq -8500539207181190789647635.2308820167639520659563240355430e393787645 -> -8.5005392071811907896476352308820167639520659563240355430E+393787669 +precision: 228 +maxmag_eq30 maxmag_eq +32216302597099892084186123300728089967345521225292564070398090260482108147130163181796011767424411680938742212020127542066886970133260753326703033127247196656422675636462716060790791248053695120 -> 32216302597099892084186123300728089967345521225292564070398090260482108147130163181796011767424411680938742212020127542066886970133260753326703033127247196656422675636462716060790791248053695120 +precision: 261 +maxmag_eq31 maxmag_eq +1430e-232740594 -> 1.430E-232740591 +precision: 241 +maxmag_eq32 maxmag_eq .431005234E-359080603 -> 4.31005234E-359080604 +precision: 213 +maxmag_eq33 maxmag_eq -59520141763315398985873777139991554578468075670396448791405772069407397306759592156042 -> -59520141763315398985873777139991554578468075670396448791405772069407397306759592156042 +precision: 206 +maxmag_eq34 maxmag_eq -17518668915570461873825683930088060045543956730827489986192996575136023394965866305430614187707512695651807.391848159e217114964 -> -1.7518668915570461873825683930088060045543956730827489986192996575136023394965866305430614187707512695651807391848159E+217115070 +precision: 71 +maxmag_eq35 maxmag_eq -.768843016431506579864900122916887 -> -0.768843016431506579864900122916887 +precision: 167 +maxmag_eq36 maxmag_eq 325930759874772605.7324651752440487636426420 -> 325930759874772605.7324651752440487636426420 +precision: 131 +maxmag_eq37 maxmag_eq -301377830381941856522472527111534428476975791648905 -> -301377830381941856522472527111534428476975791648905 +precision: 164 +maxmag_eq38 maxmag_eq -5499498736972806250e-93425423 -> -5.499498736972806250E-93425405 +precision: 193 +maxmag_eq39 maxmag_eq -NaN -> -NaN +precision: 248 +maxmag_eq40 maxmag_eq -615581638102290393944268964626438150262230257349596347621534153083556399614366561555184051232583226121120937933517958577769839507331801476712318890423582558298632615300281265927627885E-108876652 -> -6.15581638102290393944268964626438150262230257349596347621534153083556399614366561555184051232583226121120937933517958577769839507331801476712318890423582558298632615300281265927627885E-108876470 +precision: 70 +maxmag_eq41 maxmag_eq -269785880741346169312838739963181381090407965734163460811739E157490887 -> -2.69785880741346169312838739963181381090407965734163460811739E+157490946 +precision: 223 +maxmag_eq42 maxmag_eq -1817801981240361907979326771993138070908148205560910147915730287713653857633721983176954912415928684818916784073738884009694809973450871878208722276519935992134979950.932653E-43738715 -> -1.817801981240361907979326771993138070908148205560910147915730287713653857633721983176954912415928684818916784073738884009694809973450871878208722276519935992134979950932653E-43738550 +precision: 67 +maxmag_eq43 maxmag_eq 407359651653186795528086.9477521413762 -> 407359651653186795528086.9477521413762 +precision: 111 +maxmag_eq44 maxmag_eq 5131920886842283563.6944209878118551816646209271539008050422623971574E-227217097 -> 5.1319208868422835636944209878118551816646209271539008050422623971574E-227217079 +precision: 173 +maxmag_eq45 maxmag_eq -Inf -> -Infinity +precision: 152 +maxmag_eq46 maxmag_eq +14916597872173098024686459351136345776601936010468891664841249467386845887094955936.27113770776163139648210011306640012039222959676201628340654387903e-296872017 -> 1.491659787217309802468645935113634577660193601046889166484124946738684588709495593627113770776163139648210011306640012039222959676201628340654387903E-296871935 +precision: 178 +maxmag_eq47 maxmag_eq -68439768649279434437684832730611992496270293957713423568308415722118800019626276396175355840371117873422834591 -> -68439768649279434437684832730611992496270293957713423568308415722118800019626276396175355840371117873422834591 +precision: 51 +maxmag_eq48 maxmag_eq -149676. -> -149676 +precision: 4 +maxmag_eq49 maxmag_eq .287E-185732916 -> 2.87E-185732917 +precision: 192 +maxmag_eq50 maxmag_eq +78941755411167870824360219610125748029E187226380 -> 7.8941755411167870824360219610125748029E+187226417 +precision: 88 +maxmag_eq51 maxmag_eq -7881635895059918235997951478260991840145523978255897 -> -7881635895059918235997951478260991840145523978255897 +precision: 85 +maxmag_eq52 maxmag_eq -33362618375151748677E-58580925 -> -3.3362618375151748677E-58580906 +precision: 22 +maxmag_eq53 maxmag_eq -Infinity -> -Infinity +precision: 12 +maxmag_eq54 maxmag_eq -96.6282602E-402007712 -> -9.66282602E-402007711 +precision: 194 +maxmag_eq55 maxmag_eq -46843438496662389695711507055870469379614984845269641324732865383251629391616802790.7063038564505325901986538168052076964673201449E-89326585 -> -4.68434384966623896957115070558704693796149848452696413247328653832516293916168027907063038564505325901986538168052076964673201449E-89326503 +precision: 290 +maxmag_eq56 maxmag_eq +5733548553250324495108224582524323978475287586909666383981755257840973651718904514064080517899633793272096105101195695426798119544854133067348395814080180506089804273143475301095178907833284435639155918366252591401162568695937903130526456257007932403589114461041254224318286 -> 5733548553250324495108224582524323978475287586909666383981755257840973651718904514064080517899633793272096105101195695426798119544854133067348395814080180506089804273143475301095178907833284435639155918366252591401162568695937903130526456257007932403589114461041254224318286 +precision: 126 +maxmag_eq57 maxmag_eq -3208562991558424568227222990314772253427912689909255480632709137811902892115643964360030085212308312343451549656558 -> -3208562991558424568227222990314772253427912689909255480632709137811902892115643964360030085212308312343451549656558 +precision: 31 +maxmag_eq58 maxmag_eq -Infinity -> -Infinity +precision: 251 +maxmag_eq59 maxmag_eq 8.8634711E-60861575 -> 8.8634711E-60861575 +precision: 20 +maxmag_eq60 maxmag_eq -882117864 -> -882117864 +precision: 26 +maxmag_eq61 maxmag_eq -.7299722221592 -> -0.7299722221592 +precision: 213 +maxmag_eq62 maxmag_eq 16978213894191346769767420105922575324E-394637039 -> 1.6978213894191346769767420105922575324E-394637002 +precision: 136 +maxmag_eq63 maxmag_eq 4583705328.6237554802e-381726097 -> 4.5837053286237554802E-381726088 +precision: 223 +maxmag_eq64 maxmag_eq -Inf -> -Infinity +precision: 49 +maxmag_eq65 maxmag_eq -432289.755273829034397961739E+303224974 -> -4.32289755273829034397961739E+303224979 +precision: 44 +maxmag_eq66 maxmag_eq -22426332 -> -22426332 +precision: 264 +maxmag_eq67 maxmag_eq 2477585289780403660019774201102659673286137081907288458565007180233178269049551987397162358720824422706518722851421516688526410673844371316060164935909266467809306069394048985969487297002951114038601783463783289098594103030382192684923652705e-298131158 -> 2.477585289780403660019774201102659673286137081907288458565007180233178269049551987397162358720824422706518722851421516688526410673844371316060164935909266467809306069394048985969487297002951114038601783463783289098594103030382192684923652705E-298130918 +precision: 114 +maxmag_eq68 maxmag_eq Infinity -> Infinity +precision: 289 +maxmag_eq69 maxmag_eq NaN7691932095348383803910914165405794276532805882 -> NaN7691932095348383803910914165405794276532805882 +precision: 74 +maxmag_eq70 maxmag_eq +4067997540825929964667973952522631698731 -> 4067997540825929964667973952522631698731 +precision: 222 +maxmag_eq71 maxmag_eq -NaN -> -NaN +precision: 242 +maxmag_eq72 maxmag_eq -NaN -> -NaN +precision: 150 +maxmag_eq73 maxmag_eq -585864731.35 -> -585864731.35 +precision: 96 +maxmag_eq74 maxmag_eq -76187243653862565417160934422392731 -> -76187243653862565417160934422392731 +precision: 151 +maxmag_eq75 maxmag_eq +2.927e-232753720 -> 2.927E-232753720 +precision: 182 +maxmag_eq76 maxmag_eq -519485983167038436627160564461959219093602981371042003341185307588610545416433045266047963864546491818089655436552966560868236068624809462e45341977 -> -5.19485983167038436627160564461959219093602981371042003341185307588610545416433045266047963864546491818089655436552966560868236068624809462E+45342114 +precision: 253 +maxmag_eq77 maxmag_eq -3328248499253107351579631166254983226486285929376003994675281380715455104575095512624153 -> -3328248499253107351579631166254983226486285929376003994675281380715455104575095512624153 +precision: 217 +maxmag_eq78 maxmag_eq +sNaN -> NaN Invalid_operation +precision: 273 +maxmag_eq79 maxmag_eq +5780335750349426338626573943142239107862195436442339387837790871330753271348646571979223848529293716158390911136875536520712066020487658655591595460663063204295028020618769093609044271361086032620978996213168897854560701495706722047E-204435356 -> 5.780335750349426338626573943142239107862195436442339387837790871330753271348646571979223848529293716158390911136875536520712066020487658655591595460663063204295028020618769093609044271361086032620978996213168897854560701495706722047E-204435125 +precision: 136 +maxmag_eq80 maxmag_eq +23347642734631.37243522 -> 23347642734631.37243522 +precision: 51 +maxmag_eq81 maxmag_eq 74663513019358194854385400e-252137854 -> 7.4663513019358194854385400E-252137829 +precision: 78 +maxmag_eq82 maxmag_eq -.53589064082233001695187796033474562966798565477282816320529867081626 -> -0.53589064082233001695187796033474562966798565477282816320529867081626 +precision: 225 +maxmag_eq83 maxmag_eq 791411412267746516523625175165454891550733100882836142347102510037160397687252450268025839294551830894 -> 791411412267746516523625175165454891550733100882836142347102510037160397687252450268025839294551830894 +precision: 194 +maxmag_eq84 maxmag_eq 4688337430084082391493162531330376555727592195902604383733e-69668533 -> 4.688337430084082391493162531330376555727592195902604383733E-69668476 +precision: 133 +maxmag_eq85 maxmag_eq 262465743569522109715869628385835407044952499067371876940981440 -> 262465743569522109715869628385835407044952499067371876940981440 +precision: 37 +maxmag_eq86 maxmag_eq 46265213588 -> 46265213588 +precision: 51 +maxmag_eq87 maxmag_eq -Infinity -> -Infinity +precision: 55 +maxmag_eq88 maxmag_eq -278600.4478886613268555170002754938480483 -> -278600.4478886613268555170002754938480483 +precision: 60 +maxmag_eq89 maxmag_eq .5941279394263400723029887039614452e-219173570 -> 5.941279394263400723029887039614452E-219173571 +precision: 268 +maxmag_eq90 maxmag_eq Inf -> Infinity +precision: 2 +maxmag_eq91 maxmag_eq -7.8e+291406561 -> -7.8E+291406561 +precision: 263 +maxmag_eq92 maxmag_eq +.14448534656994399157540140573877156107807635464968310509392863286124562406127439512653004849021706845309547489863599156997680194402836499714210717564843062381697119050841151728459718789163919361546324859604002398566428501e-351669773 -> 1.4448534656994399157540140573877156107807635464968310509392863286124562406127439512653004849021706845309547489863599156997680194402836499714210717564843062381697119050841151728459718789163919361546324859604002398566428501E-351669774 +precision: 220 +maxmag_eq93 maxmag_eq -275240692.845 -> -275240692.845 +precision: 181 +maxmag_eq94 maxmag_eq -.4084162061931534009788087745673162665561360487578672995548093618135374268377757445925263070E-89595698 -> -4.084162061931534009788087745673162665561360487578672995548093618135374268377757445925263070E-89595699 +precision: 184 +maxmag_eq95 maxmag_eq -31784399e144820250 -> -3.1784399E+144820257 +precision: 121 +maxmag_eq96 maxmag_eq -51. -> -51 +precision: 103 +maxmag_eq97 maxmag_eq -3950088257099742565855841260917309602648596 -> -3950088257099742565855841260917309602648596 +precision: 253 +maxmag_eq98 maxmag_eq +.876059850568377594354786563248179218717420486551375898432458453596147501748367980675198904021818304186362852601059637353258651208260595670214143107575367822026579908393113348708046E+285712468 -> 8.76059850568377594354786563248179218717420486551375898432458453596147501748367980675198904021818304186362852601059637353258651208260595670214143107575367822026579908393113348708046E+285712467 +precision: 186 +maxmag_eq99 maxmag_eq +55526732406258062188212487659285682211465157264992897125157180455165742988783119699570136409386026143704098702892771814078 -> 55526732406258062188212487659285682211465157264992897125157180455165742988783119699570136409386026143704098702892771814078 +precision: 16 +min_eq0 min_eq 7097E334037297 -> 7.097E+334037300 +precision: 41 +min_eq1 min_eq .6441974486 -> 0.6441974486 +precision: 103 +min_eq2 min_eq 11843922759.53986304284145110278202857571596e-50851319 -> 1.184392275953986304284145110278202857571596E-50851309 +precision: 199 +min_eq3 min_eq .942480380640582646596674040776179396572530806116235431222201573444509333308524379940343524719246430890468683940239795642927858112494180601491235303959089584567604356480170927436344787049047603863 -> 0.942480380640582646596674040776179396572530806116235431222201573444509333308524379940343524719246430890468683940239795642927858112494180601491235303959089584567604356480170927436344787049047603863 +precision: 227 +min_eq4 min_eq +30254371433160372330787517559196846839691959722107107533460029584599718282754661212415149548700177861574065195059757769919.166490366788692940459564675427541005278 -> 30254371433160372330787517559196846839691959722107107533460029584599718282754661212415149548700177861574065195059757769919.166490366788692940459564675427541005278 +precision: 158 +min_eq5 min_eq +1180539.82419882582773941638522128817042612913399384966e-367280054 -> 1.18053982419882582773941638522128817042612913399384966E-367280048 +precision: 133 +min_eq6 min_eq 4099781492916617049075051281339869037732470482972708614320036774834.70819621598486807E-198919584 -> 4.09978149291661704907505128133986903773247048297270861432003677483470819621598486807E-198919518 +precision: 26 +min_eq7 min_eq +4.73879154913 -> 4.73879154913 +precision: 115 +min_eq8 min_eq +4632031388651767810767591955635299736082626250025151809924730797784955104454183425.7 -> 4632031388651767810767591955635299736082626250025151809924730797784955104454183425.7 +precision: 121 +min_eq9 min_eq -8771387303723953E+301493219 -> -8.771387303723953E+301493234 +precision: 132 +min_eq10 min_eq -3721986804529671864820327962762217804E389171719 -> -3.721986804529671864820327962762217804E+389171755 +precision: 213 +min_eq11 min_eq 879698885528342905782072446461820837891775586684142073372195792089224330041874489569685275735839986914282595655998931589898558460841505997508642630008600360648583230 -> 879698885528342905782072446461820837891775586684142073372195792089224330041874489569685275735839986914282595655998931589898558460841505997508642630008600360648583230 +precision: 131 +min_eq12 min_eq +7409797538.273309941717158508677869133434546956e-329172107 -> 7.409797538273309941717158508677869133434546956E-329172098 +precision: 27 +min_eq13 min_eq -1334.40810969 -> -1334.40810969 +precision: 219 +min_eq14 min_eq -56663758054909204875886723862602659999953195811647563037320303917902233794104002667567518630983886.5 -> -56663758054909204875886723862602659999953195811647563037320303917902233794104002667567518630983886.5 +precision: 155 +min_eq15 min_eq -63345026963179.245981759888213281536651955331757 -> -63345026963179.245981759888213281536651955331757 +precision: 128 +min_eq16 min_eq .3007825632655570461642768192280452 -> 0.3007825632655570461642768192280452 +precision: 212 +min_eq17 min_eq +95960915831451771736459835474613202192416936671321121855179886636108100016401312707559866 -> 95960915831451771736459835474613202192416936671321121855179886636108100016401312707559866 +precision: 25 +min_eq18 min_eq -637123427680937339 -> -637123427680937339 +precision: 234 +min_eq19 min_eq -56813725095151850835137821217759546576099014210103086880151622878563025077247808454190012152860929180846912298573676056089624882662347160062204468358043790208526250085952128739425148187183460e-150638618 -> -5.6813725095151850835137821217759546576099014210103086880151622878563025077247808454190012152860929180846912298573676056089624882662347160062204468358043790208526250085952128739425148187183460E-150638428 +precision: 155 +min_eq20 min_eq -47409416000753915252071784143127153324537647872194957581412185930689304500011015202697479378886187588146422394970620706196476918987440661871124229505 -> -47409416000753915252071784143127153324537647872194957581412185930689304500011015202697479378886187588146422394970620706196476918987440661871124229505 +precision: 127 +min_eq21 min_eq +.49446860991155912392880565149890938425635698251039759687653454215E38692156 -> 4.9446860991155912392880565149890938425635698251039759687653454215E+38692155 +precision: 35 +min_eq22 min_eq -.457120 -> -0.457120 +precision: 210 +min_eq23 min_eq .6623857005785525E+259270803 -> 6.623857005785525E+259270802 +precision: 41 +min_eq24 min_eq +3808351061848880948344719675244 -> 3808351061848880948344719675244 +precision: 88 +min_eq25 min_eq -NaN -> -NaN +precision: 159 +min_eq26 min_eq +968850498725657820473208715834E-17459161 -> 9.68850498725657820473208715834E-17459132 +precision: 184 +min_eq27 min_eq -76482589212052759688418867.6711104 -> -76482589212052759688418867.6711104 +precision: 178 +min_eq28 min_eq -2235410054.1350064144657818905936068 -> -2235410054.1350064144657818905936068 +precision: 66 +min_eq29 min_eq +2819549578040290822252e-270142588 -> 2.819549578040290822252E-270142567 +precision: 103 +min_eq30 min_eq +115114844571176904e-199469828 -> 1.15114844571176904E-199469811 +precision: 13 +min_eq31 min_eq +8778122404e+66494217 -> 8.778122404E+66494226 +precision: 172 +min_eq32 min_eq 631545619651343981603904591224987273808111272294156821416141049361763534583103337330130016560394508459756289162430820513721761417808889041736524277E-216099059 -> 6.31545619651343981603904591224987273808111272294156821416141049361763534583103337330130016560394508459756289162430820513721761417808889041736524277E-216098913 +precision: 17 +min_eq33 min_eq -NaN7552458262839381428282407381217450053728526 -> -NaN81217450053728526 +precision: 146 +min_eq34 min_eq -6593963570.9005613497148604558823178850102819867383132767696230896982466525205569151324127605107964896015581018255539405157974401141e+372489617 -> -6.5939635709005613497148604558823178850102819867383132767696230896982466525205569151324127605107964896015581018255539405157974401141E+372489626 +precision: 200 +min_eq35 min_eq -80094213785272516874099.10537231870096553210041090390168862994533266553461992757742455651223159504E-68311120 -> -8.009421378527251687409910537231870096553210041090390168862994533266553461992757742455651223159504E-68311098 +precision: 12 +min_eq36 min_eq 80.6E-412559326 -> 8.06E-412559325 +precision: 186 +min_eq37 min_eq +178489559067530234045840251440293481510468842106954615443107503079344553193577688117067610039274.526970972022877475505049610676873004126613232973970635870191446585079244 -> 178489559067530234045840251440293481510468842106954615443107503079344553193577688117067610039274.526970972022877475505049610676873004126613232973970635870191446585079244 +precision: 288 +min_eq38 min_eq -7544052338431672011550412533856963673506100024716199668011104754284890983255585547.24213793602771840231233019276145228666478506010302305632897927254158860215540258639856294212091779783009398 -> -7544052338431672011550412533856963673506100024716199668011104754284890983255585547.24213793602771840231233019276145228666478506010302305632897927254158860215540258639856294212091779783009398 +precision: 256 +min_eq39 min_eq Inf -> Infinity +precision: 174 +min_eq40 min_eq 5757143964.508841069398182810323863993016781200801242378745777252806365460292014897071440728034646419161629010819099787466469588458945234600759 -> 5757143964.508841069398182810323863993016781200801242378745777252806365460292014897071440728034646419161629010819099787466469588458945234600759 +precision: 222 +min_eq41 min_eq .8240426115710798118448691774120534251534980390452975788899675412279060737564587972373395542602346533612412711548294722748062426046215216021376621796018262445762961609426462052886035701333781169775e-215478472 -> 8.240426115710798118448691774120534251534980390452975788899675412279060737564587972373395542602346533612412711548294722748062426046215216021376621796018262445762961609426462052886035701333781169775E-215478473 +precision: 118 +min_eq42 min_eq -sNaN1120560468805819410849420631510051835839268890172707 -> -NaN1120560468805819410849420631510051835839268890172707 Invalid_operation +precision: 262 +min_eq43 min_eq -962290095538412277275227838194991159614354503285162609021892708325785292726897792650081536714378359905362355080899317473883152581497053601131 -> -962290095538412277275227838194991159614354503285162609021892708325785292726897792650081536714378359905362355080899317473883152581497053601131 +precision: 38 +min_eq44 min_eq .810422653859515502323700E-43999367 -> 8.10422653859515502323700E-43999368 +precision: 216 +min_eq45 min_eq +371317511328736576431618155905716613569005163084235611.102816156144053529270133941247895618785977542E343875215 -> 3.71317511328736576431618155905716613569005163084235611102816156144053529270133941247895618785977542E+343875268 +precision: 50 +min_eq46 min_eq +732.8941603143921262956513792605 -> 732.8941603143921262956513792605 +precision: 43 +min_eq47 min_eq +628583707272834772578468754115 -> 628583707272834772578468754115 +precision: 256 +min_eq48 min_eq -Infinity -> -Infinity +precision: 97 +min_eq49 min_eq +1559331888812581 -> 1559331888812581 +precision: 52 +min_eq50 min_eq -Inf -> -Infinity +precision: 245 +min_eq51 min_eq +.8285139299604400021588683804005994017 -> 0.8285139299604400021588683804005994017 +precision: 70 +min_eq52 min_eq -5757719682458699538469748534816336593481687857888183889E-245167925 -> -5.757719682458699538469748534816336593481687857888183889E-245167871 +precision: 269 +min_eq53 min_eq -Inf -> -Infinity +precision: 248 +min_eq54 min_eq 6200645754884986343276379852089500080763192210960592447891846817774525852342137012158831363112789599959379382548401912808046380972976089546.841690309854726700606544165595868464071372481759082053421474E-310933144 -> 6.200645754884986343276379852089500080763192210960592447891846817774525852342137012158831363112789599959379382548401912808046380972976089546841690309854726700606544165595868464071372481759082053421474E-310933006 +precision: 56 +min_eq55 min_eq -sNaN53128268 -> -NaN53128268 Invalid_operation +precision: 253 +min_eq56 min_eq -85193 -> -85193 +precision: 294 +min_eq57 min_eq 6561260301125510978534804584761979668211023605473860167985021210593261835016760496075842601168022896564524434517523974665965266152032821528642633742981679281047254870 -> 6561260301125510978534804584761979668211023605473860167985021210593261835016760496075842601168022896564524434517523974665965266152032821528642633742981679281047254870 +precision: 170 +min_eq58 min_eq -116008356922660871780780760567E36732836 -> -1.16008356922660871780780760567E+36732865 +precision: 286 +min_eq59 min_eq -9969255082922.21389230016149501975484767296419465410149854661088122852080731780028734975035420184591510422917569510780485238426217924019916458751189155910449438733411899550899823421292568767677960054692944016827559756366596939632137330218794 -> -9969255082922.21389230016149501975484767296419465410149854661088122852080731780028734975035420184591510422917569510780485238426217924019916458751189155910449438733411899550899823421292568767677960054692944016827559756366596939632137330218794 +precision: 108 +min_eq60 min_eq -850224322639428478417316545163308193411243391015442567571703813194075 -> -850224322639428478417316545163308193411243391015442567571703813194075 +precision: 107 +min_eq61 min_eq -3447843580442041469397720218628559103892 -> -3447843580442041469397720218628559103892 +precision: 251 +min_eq62 min_eq -.33662912914885287189077013990462221438479972065192093364163234793000187795934867881584099073841923407743796974891323689257995240829322818908774984598636270306460452740554266679 -> -0.33662912914885287189077013990462221438479972065192093364163234793000187795934867881584099073841923407743796974891323689257995240829322818908774984598636270306460452740554266679 +precision: 34 +min_eq63 min_eq -4678348868 -> -4678348868 +precision: 67 +min_eq64 min_eq +116207606438.512675631704407197 -> 116207606438.512675631704407197 +precision: 147 +min_eq65 min_eq 708762778805006154561084615973055866631 -> 708762778805006154561084615973055866631 +precision: 193 +min_eq66 min_eq -2010202264010036091114298096330100953 -> -2010202264010036091114298096330100953 +precision: 83 +min_eq67 min_eq +.2236137281534572778005741105283265834799010201581448699E-132100813 -> 2.236137281534572778005741105283265834799010201581448699E-132100814 +precision: 266 +min_eq68 min_eq 695686175618626885166891293300433386070057413242663e-206337634 -> 6.95686175618626885166891293300433386070057413242663E-206337584 +precision: 299 +min_eq69 min_eq 5522089369954182983686955458070448526794E47319377 -> 5.522089369954182983686955458070448526794E+47319416 +precision: 246 +min_eq70 min_eq -547.5400834123157546005764730280406556066105230516569739223238101901837237580907978106386613763453230370654354412 -> -547.5400834123157546005764730280406556066105230516569739223238101901837237580907978106386613763453230370654354412 +precision: 91 +min_eq71 min_eq -.448529205584091779991925180362500730234271E+38563611 -> -4.48529205584091779991925180362500730234271E+38563610 +precision: 47 +min_eq72 min_eq +45490920834663004963036206100733837952967689799E+19963413 -> 4.5490920834663004963036206100733837952967689799E+19963459 +precision: 73 +min_eq73 min_eq +5353679537757861806014532243806533068068589698620E+287143228 -> 5.353679537757861806014532243806533068068589698620E+287143276 +precision: 17 +min_eq74 min_eq -6.29755 -> -6.29755 +precision: 60 +min_eq75 min_eq +379242028387e-115922230 -> 3.79242028387E-115922219 +precision: 136 +min_eq76 min_eq +883015405991109780076552338366065381314449244265930702069402 -> 883015405991109780076552338366065381314449244265930702069402 +precision: 200 +min_eq77 min_eq 597993045374462888895744812461166929501716210141156581883072925588503155243211969153635290720672368158452098753869232448821506987841520808020293171074062089514314468928110534497 -> 597993045374462888895744812461166929501716210141156581883072925588503155243211969153635290720672368158452098753869232448821506987841520808020293171074062089514314468928110534497 +precision: 266 +min_eq78 min_eq -13307569794612601790793564801582894832414810098812539215668588431777376340961031355697732994223795662917670037133184135987084217860209399893416312486424866575081080993739743378499345488926219104322345355763017570752724947237110639586035102 -> -13307569794612601790793564801582894832414810098812539215668588431777376340961031355697732994223795662917670037133184135987084217860209399893416312486424866575081080993739743378499345488926219104322345355763017570752724947237110639586035102 +precision: 7 +min_eq79 min_eq 419.6 -> 419.6 +precision: 246 +min_eq80 min_eq -685448434807982585044103102259856642248795871115016945582752601768464824.137882116285928129169312773106 -> -685448434807982585044103102259856642248795871115016945582752601768464824.137882116285928129169312773106 +precision: 152 +min_eq81 min_eq sNaN -> NaN Invalid_operation +precision: 245 +min_eq82 min_eq +509157056095621444491004287874696949047216443205986168889515323506363 -> 509157056095621444491004287874696949047216443205986168889515323506363 +precision: 162 +min_eq83 min_eq -702301631047736721327014499001081924462986929469759303459887006949780049499241753598005084296852022066186.15267101510899557516853740926870814643263 -> -702301631047736721327014499001081924462986929469759303459887006949780049499241753598005084296852022066186.15267101510899557516853740926870814643263 +precision: 261 +min_eq84 min_eq +Inf -> Infinity +precision: 155 +min_eq85 min_eq -485336977074 -> -485336977074 +precision: 170 +min_eq86 min_eq -.87054058768728705991838035268281219983118128870145755042690500724189345370125917981971225932974400859828102734178140232393478332108189020385965E-390126877 -> -8.7054058768728705991838035268281219983118128870145755042690500724189345370125917981971225932974400859828102734178140232393478332108189020385965E-390126878 +precision: 159 +min_eq87 min_eq -38781382575424878941299617764912951220842064984523110751935120597067416714085299766825822887897782500258004637343771297575461841662562483 -> -38781382575424878941299617764912951220842064984523110751935120597067416714085299766825822887897782500258004637343771297575461841662562483 +precision: 16 +min_eq88 min_eq Inf -> Infinity +precision: 143 +min_eq89 min_eq -6902589986971234768684016330307651262428484861998227741359909770064990706650238036403413102910811511882317100002764414820968308102058284792318 -> -6902589986971234768684016330307651262428484861998227741359909770064990706650238036403413102910811511882317100002764414820968308102058284792318 +precision: 81 +min_eq90 min_eq -Infinity -> -Infinity +precision: 78 +min_eq91 min_eq 1384569501173216522.491901768020218721403473420355695023887044710629639 -> 1384569501173216522.491901768020218721403473420355695023887044710629639 +precision: 156 +min_eq92 min_eq Inf -> Infinity +precision: 182 +min_eq93 min_eq -934350170220411432480453331907885722639880711774826161530629012883791803156580874639704409376963640814602614440318659844680110182789882479617546887180e+38556400 -> -9.34350170220411432480453331907885722639880711774826161530629012883791803156580874639704409376963640814602614440318659844680110182789882479617546887180E+38556549 +precision: 153 +min_eq94 min_eq 51363013085036665975663154431827945713909500572530733704272935 -> 51363013085036665975663154431827945713909500572530733704272935 +precision: 176 +min_eq95 min_eq 897223630307102615581133648162033164229000170412277606214648847772449243120262508158595770387248470800821035868831602608877979839468349400157932636e-81421169 -> 8.97223630307102615581133648162033164229000170412277606214648847772449243120262508158595770387248470800821035868831602608877979839468349400157932636E-81421023 +precision: 174 +min_eq96 min_eq 16999388035024078492091270836129604938286869385538665773013799059539551473159892825838452223484471844342661379055053679649146484 -> 16999388035024078492091270836129604938286869385538665773013799059539551473159892825838452223484471844342661379055053679649146484 +precision: 291 +min_eq97 min_eq -102253591679263130414666298406925864131083144076763320189714868675484500544519779959214274898499684733 -> -102253591679263130414666298406925864131083144076763320189714868675484500544519779959214274898499684733 +precision: 130 +min_eq98 min_eq +49451974495684599603106217276738571145224746261949716485e56610869 -> 4.9451974495684599603106217276738571145224746261949716485E+56610924 +precision: 279 +min_eq99 min_eq +6146175.994645965 -> 6146175.994645965 +precision: 90 +minmag_eq0 minmag_eq +619334386544815.606216e+357209456 -> 6.19334386544815606216E+357209470 +precision: 161 +minmag_eq1 minmag_eq -25. -> -25 +precision: 11 +minmag_eq2 minmag_eq -57227026699e+402726035 -> -5.7227026699E+402726045 +precision: 267 +minmag_eq3 minmag_eq +6581196541043406847808351515295479058802416493764645542759747134753457180375244128143865256854408384548181762615495141763366358391724546798242071162692101659217 -> 6581196541043406847808351515295479058802416493764645542759747134753457180375244128143865256854408384548181762615495141763366358391724546798242071162692101659217 +precision: 147 +minmag_eq4 minmag_eq 321548943382273633319.40278531 -> 321548943382273633319.40278531 +precision: 126 +minmag_eq5 minmag_eq -5367761309552950417862676055231912212757297477021961.79421123458486170272449906879102856806966398897450 -> -5367761309552950417862676055231912212757297477021961.79421123458486170272449906879102856806966398897450 +precision: 146 +minmag_eq6 minmag_eq -4175909218757382872473009361088672887922313234498561681751235406240921758004591668690785379262881031895104867000430789328761918955 -> -4175909218757382872473009361088672887922313234498561681751235406240921758004591668690785379262881031895104867000430789328761918955 +precision: 171 +minmag_eq7 minmag_eq 9733996913436748626313792324364156336990632091995976143839169743147933974347317777470899137750852983920408304405877 -> 9733996913436748626313792324364156336990632091995976143839169743147933974347317777470899137750852983920408304405877 +precision: 173 +minmag_eq8 minmag_eq +45089388850525978911634842785017268841967841409146610652415978391057843373512695e+225947827 -> 4.5089388850525978911634842785017268841967841409146610652415978391057843373512695E+225947906 +precision: 168 +minmag_eq9 minmag_eq 2803674117333422286075343514997541643810209638720529332643790341827237855037941045034045234036668102889372583175440285126961066133 -> 2803674117333422286075343514997541643810209638720529332643790341827237855037941045034045234036668102889372583175440285126961066133 +precision: 241 +minmag_eq10 minmag_eq +9481430730431705107015328941561886263205904242022707224819071975718055253569096745083137620279542423196905221661923360485929882063115487178522064271663125799290844692592476340425.463200583210419830899692E196500551 -> 9.481430730431705107015328941561886263205904242022707224819071975718055253569096745083137620279542423196905221661923360485929882063115487178522064271663125799290844692592476340425463200583210419830899692E+196500728 +precision: 234 +minmag_eq11 minmag_eq -Inf -> -Infinity +precision: 180 +minmag_eq12 minmag_eq +79717566564681479526501240473362354303620688119645568267493811384439660321665982330533541912567439526940926696209184478722233501181043023243547 -> 79717566564681479526501240473362354303620688119645568267493811384439660321665982330533541912567439526940926696209184478722233501181043023243547 +precision: 117 +minmag_eq13 minmag_eq +72954290496. -> 72954290496 +precision: 114 +minmag_eq14 minmag_eq 224493930873853962005.76364988805204719638E-88404637 -> 2.2449393087385396200576364988805204719638E-88404617 +precision: 199 +minmag_eq15 minmag_eq -.3034380849218175287652552160547249911485765440205624228516461490957558795694597551071090716313640625668723614757071275673108818330437943593885043707108 -> -0.3034380849218175287652552160547249911485765440205624228516461490957558795694597551071090716313640625668723614757071275673108818330437943593885043707108 +precision: 71 +minmag_eq16 minmag_eq -69417145.845139649083140258546888802910876e215141183 -> -6.9417145845139649083140258546888802910876E+215141190 +precision: 259 +minmag_eq17 minmag_eq -5254786305041184143045843160453555009414973553444366553347178565274772461234685081462383316619634329972285715431716033217192586950012895927482037229707456695924084219046044727938736835718231329993912959488214 -> -5254786305041184143045843160453555009414973553444366553347178565274772461234685081462383316619634329972285715431716033217192586950012895927482037229707456695924084219046044727938736835718231329993912959488214 +precision: 215 +minmag_eq18 minmag_eq -Infinity -> -Infinity +precision: 147 +minmag_eq19 minmag_eq .1062731991843925095781334880049360428725115574083745409177227892127574 -> 0.1062731991843925095781334880049360428725115574083745409177227892127574 +precision: 100 +minmag_eq20 minmag_eq -152708028179618784480090003989985054366208.50 -> -152708028179618784480090003989985054366208.50 +precision: 56 +minmag_eq21 minmag_eq +33480.E-414125855 -> 3.3480E-414125851 +precision: 135 +minmag_eq22 minmag_eq -5623372766096859071709769964603689885381759853809173236350508606021321257959970515212775705297073996372601515040381626045181971538E370835654 -> -5.623372766096859071709769964603689885381759853809173236350508606021321257959970515212775705297073996372601515040381626045181971538E+370835783 +precision: 159 +minmag_eq23 minmag_eq 947103000539594659719919624363501027720280160869456093616857900326252953751025e+68000794 -> 9.47103000539594659719919624363501027720280160869456093616857900326252953751025E+68000871 +precision: 43 +minmag_eq24 minmag_eq 80E-96253372 -> 8.0E-96253371 +precision: 221 +minmag_eq25 minmag_eq 4404422971787571256450125048765638148861001410180017158730484568233130315217530828605274414682.4707708891825387691653959271316841203938550259E-322281828 -> 4.4044229717875712564501250487656381488610014101800171587304845682331303152175308286052744146824707708891825387691653959271316841203938550259E-322281735 +precision: 258 +minmag_eq26 minmag_eq +Infinity -> Infinity +precision: 274 +minmag_eq27 minmag_eq -57633439789778082954233171819722280311760412347313388446001225042913647092583121644052964198994817170972653510415165097485932235E-209605179 -> -5.7633439789778082954233171819722280311760412347313388446001225042913647092583121644052964198994817170972653510415165097485932235E-209605052 +precision: 268 +minmag_eq28 minmag_eq +648659878740172788172033363550088366124354836327107621198068711401394100260736914508076504738359695136691308991848600870161554971876628216885500380512276693760491626840696851291159406951866298e+298514678 -> 6.48659878740172788172033363550088366124354836327107621198068711401394100260736914508076504738359695136691308991848600870161554971876628216885500380512276693760491626840696851291159406951866298E+298514869 +precision: 215 +minmag_eq29 minmag_eq 10527875519891878494355247130312580307005266118983521633233713716866640102103267264766033140E-373245060 -> 1.0527875519891878494355247130312580307005266118983521633233713716866640102103267264766033140E-373244969 +precision: 173 +minmag_eq30 minmag_eq +8.7464815 -> 8.7464815 +precision: 8 +minmag_eq31 minmag_eq +41063.3 -> 41063.3 +precision: 5 +minmag_eq32 minmag_eq +97.319 -> 97.319 +precision: 20 +minmag_eq33 minmag_eq 900187890. -> 900187890 +precision: 113 +minmag_eq34 minmag_eq 621221205479054 -> 621221205479054 +precision: 148 +minmag_eq35 minmag_eq 2491744786568440110529787.979582136671160462624636895284012141845571757822357136783705060859135921715880619643317864560400E-192914947 -> 2.491744786568440110529787979582136671160462624636895284012141845571757822357136783705060859135921715880619643317864560400E-192914923 +precision: 15 +minmag_eq36 minmag_eq -5090132183444 -> -5090132183444 +precision: 235 +minmag_eq37 minmag_eq -78967481285800961903871150379917690267738513857.4229308621676062412565716216819254e-62633844 -> -7.89674812858009619038711503799176902677385138574229308621676062412565716216819254E-62633798 +precision: 236 +minmag_eq38 minmag_eq -8437622739824750677325147861405090437280983451995121523873385334710670693194406072011196358982106767307444370174272 -> -8437622739824750677325147861405090437280983451995121523873385334710670693194406072011196358982106767307444370174272 +precision: 174 +minmag_eq39 minmag_eq -2317370392208895054530748964706673970875229786520568323565481983465 -> -2317370392208895054530748964706673970875229786520568323565481983465 +precision: 275 +minmag_eq40 minmag_eq -.77570094549933764821339384447379292618387125523381156374968302091264059996330443251829461159963396397333455627727508311496714114381944342966670732405994535449684774433627539559861425889328016039338954597385074939659572899980965152240416335946529 -> -0.77570094549933764821339384447379292618387125523381156374968302091264059996330443251829461159963396397333455627727508311496714114381944342966670732405994535449684774433627539559861425889328016039338954597385074939659572899980965152240416335946529 +precision: 185 +minmag_eq41 minmag_eq -.6647793984536 -> -0.6647793984536 +precision: 291 +minmag_eq42 minmag_eq -8645840166911672951616525436292875247197735491905399232.84770283905161276257468136998932278185665079012215117 -> -8645840166911672951616525436292875247197735491905399232.84770283905161276257468136998932278185665079012215117 +precision: 5 +minmag_eq43 minmag_eq -206.6 -> -206.6 +precision: 78 +minmag_eq44 minmag_eq -694868970998506357864191846909018061585793432e-185909994 -> -6.94868970998506357864191846909018061585793432E-185909950 +precision: 192 +minmag_eq45 minmag_eq -571031894586 -> -571031894586 +precision: 29 +minmag_eq46 minmag_eq -922839610.513803 -> -922839610.513803 +precision: 71 +minmag_eq47 minmag_eq 8243587202350714301.144958543298042762147962433e303156223 -> 8.243587202350714301144958543298042762147962433E+303156241 +precision: 46 +minmag_eq48 minmag_eq -Infinity -> -Infinity +precision: 2 +minmag_eq49 minmag_eq -Infinity -> -Infinity +precision: 33 +minmag_eq50 minmag_eq 90.7 -> 90.7 +precision: 113 +minmag_eq51 minmag_eq +Inf -> Infinity +precision: 148 +minmag_eq52 minmag_eq -87006499231222464013994752661901524407154702810629375219619656799461232362262617473230974899677576493023288220527966 -> -87006499231222464013994752661901524407154702810629375219619656799461232362262617473230974899677576493023288220527966 +precision: 59 +minmag_eq53 minmag_eq +12659984 -> 12659984 +precision: 285 +minmag_eq54 minmag_eq -866645322920881282475124283041498927256469183513767256675684484090833800721081527385121118722295634876015971297445189435957882434146792844587586417018030736748032975680915052687662832089299609895246500801379402660271731513823117196441459773927300984373706990145503347861578835486841384E-151960562 -> -8.66645322920881282475124283041498927256469183513767256675684484090833800721081527385121118722295634876015971297445189435957882434146792844587586417018030736748032975680915052687662832089299609895246500801379402660271731513823117196441459773927300984373706990145503347861578835486841384E-151960278 +precision: 230 +minmag_eq55 minmag_eq -7567220192780481464251424848337660615968089.755937140422306E156125807 -> -7.567220192780481464251424848337660615968089755937140422306E+156125849 +precision: 292 +minmag_eq56 minmag_eq 7764751561962887556190204970281573784478568712641114139524123917904546866163126079056138175410147317965014623162239049552630606989340148132711914751251318755884344153442902700380825403498091434381827681180101785343633893406391894643581072254881540141053001337834680366459264E+174524065 -> 7.764751561962887556190204970281573784478568712641114139524123917904546866163126079056138175410147317965014623162239049552630606989340148132711914751251318755884344153442902700380825403498091434381827681180101785343633893406391894643581072254881540141053001337834680366459264E+174524338 +precision: 91 +minmag_eq57 minmag_eq +Infinity -> Infinity +precision: 13 +minmag_eq58 minmag_eq +687165563 -> 687165563 +precision: 79 +minmag_eq59 minmag_eq 268119756605910178341226072431311858392143123 -> 268119756605910178341226072431311858392143123 +precision: 247 +minmag_eq60 minmag_eq -922561169824518123126321971902959165679211335955927675241709594982958282764575172947051767611886676375672143459016078317456923012547761247923529251284889526981405548784670675506814.25654273313210424684251252285056880555704 -> -922561169824518123126321971902959165679211335955927675241709594982958282764575172947051767611886676375672143459016078317456923012547761247923529251284889526981405548784670675506814.25654273313210424684251252285056880555704 +precision: 116 +minmag_eq61 minmag_eq 9999197914235967670842873e-94535512 -> 9.999197914235967670842873E-94535488 +precision: 233 +minmag_eq62 minmag_eq +.257847035807878790609338297119763567215190742752192714925e322964357 -> 2.57847035807878790609338297119763567215190742752192714925E+322964356 +precision: 24 +minmag_eq63 minmag_eq +8773.2 -> 8773.2 +precision: 214 +minmag_eq64 minmag_eq -Infinity -> -Infinity +precision: 83 +minmag_eq65 minmag_eq 6569898991187779E-135486606 -> 6.569898991187779E-135486591 +precision: 67 +minmag_eq66 minmag_eq -4306602578084019062231151114268158542727046093603034629 -> -4306602578084019062231151114268158542727046093603034629 +precision: 68 +minmag_eq67 minmag_eq -sNaN -> -NaN Invalid_operation +precision: 57 +minmag_eq68 minmag_eq -Infinity -> -Infinity +precision: 186 +minmag_eq69 minmag_eq +9270202144847981944455985866034353174533344916452 -> 9270202144847981944455985866034353174533344916452 +precision: 49 +minmag_eq70 minmag_eq -5604616837.1499730135861 -> -5604616837.1499730135861 +precision: 153 +minmag_eq71 minmag_eq -471089252123754055089940736638429327897872868248612126407176314082646728643601168864224076415043442340257.12E-236388301 -> -4.7108925212375405508994073663842932789787286824861212640717631408264672864360116886422407641504344234025712E-236388197 +precision: 2 +minmag_eq72 minmag_eq -Inf -> -Infinity +precision: 34 +minmag_eq73 minmag_eq .380767468994339365769615632 -> 0.380767468994339365769615632 +precision: 112 +minmag_eq74 minmag_eq +4327956 -> 4327956 +precision: 46 +minmag_eq75 minmag_eq -652167036866475 -> -652167036866475 +precision: 106 +minmag_eq76 minmag_eq -909769895141409627386991197786530867268697990916089465308996738973808351746 -> -909769895141409627386991197786530867268697990916089465308996738973808351746 +precision: 285 +minmag_eq77 minmag_eq -6010301972852581097211276922531582652416067889761104928728920607041152941611577587949924475919550111031988516589102049405325292650484013801937698724565035027656244920704321697433347870077594589784496882218450911208317117040034208837312793368779678391053341211898902.401e-233699943 -> -6.010301972852581097211276922531582652416067889761104928728920607041152941611577587949924475919550111031988516589102049405325292650484013801937698724565035027656244920704321697433347870077594589784496882218450911208317117040034208837312793368779678391053341211898902401E-233699679 +precision: 162 +minmag_eq78 minmag_eq +73794090944792747016405182986704467515296328626672673537829504191759525218498005851815258737717417582416053595917920083265459053 -> 73794090944792747016405182986704467515296328626672673537829504191759525218498005851815258737717417582416053595917920083265459053 +precision: 279 +minmag_eq79 minmag_eq -773531952645105341074759866619882793277748890374116238014575789850918754490578915791528759413104940875347460754637966486208305956396017899889238631218470465959808784112679104291786642538252120202514876426825269299913189082773646320485097442672553765 -> -773531952645105341074759866619882793277748890374116238014575789850918754490578915791528759413104940875347460754637966486208305956396017899889238631218470465959808784112679104291786642538252120202514876426825269299913189082773646320485097442672553765 +precision: 22 +minmag_eq80 minmag_eq -13912 -> -13912 +precision: 19 +minmag_eq81 minmag_eq 44365305351714366e165233083 -> 4.4365305351714366E+165233099 +precision: 37 +minmag_eq82 minmag_eq NaN -> NaN +precision: 16 +minmag_eq83 minmag_eq -.81414E-193726306 -> -8.1414E-193726307 +precision: 75 +minmag_eq84 minmag_eq -124100283128303991040113233482454097520e355294831 -> -1.24100283128303991040113233482454097520E+355294869 +precision: 144 +minmag_eq85 minmag_eq 216913172340126890362401717091665795724902052366431865733499315 -> 216913172340126890362401717091665795724902052366431865733499315 +precision: 197 +minmag_eq86 minmag_eq sNaN -> NaN Invalid_operation +precision: 46 +minmag_eq87 minmag_eq -2804904855187272225014E+86511985 -> -2.804904855187272225014E+86512006 +precision: 26 +minmag_eq88 minmag_eq -737001649971147338e128494618 -> -7.37001649971147338E+128494635 +precision: 130 +minmag_eq89 minmag_eq .1196480913915386306272061942393091870882722315252941107567299874908094561816997793327 -> 0.1196480913915386306272061942393091870882722315252941107567299874908094561816997793327 +precision: 117 +minmag_eq90 minmag_eq +163783897153852726500106446624981394313511199559354418249 -> 163783897153852726500106446624981394313511199559354418249 +precision: 164 +minmag_eq91 minmag_eq +645796746134547681389408154125669154755364643751621055711382819987819149676808660104.996 -> 645796746134547681389408154125669154755364643751621055711382819987819149676808660104.996 +precision: 158 +minmag_eq92 minmag_eq -7056784853315467479953443087472781401893720913045776538466249232771032569668890e-4020239 -> -7.056784853315467479953443087472781401893720913045776538466249232771032569668890E-4020161 +precision: 265 +minmag_eq93 minmag_eq +410379929003368495195278912773958252781714746132962E297965086 -> 4.10379929003368495195278912773958252781714746132962E+297965136 +precision: 94 +minmag_eq94 minmag_eq +903209890848663454156871268696607849552213557311E+249375815 -> 9.03209890848663454156871268696607849552213557311E+249375862 +precision: 9 +minmag_eq95 minmag_eq +2009145e+90835593 -> 2.009145E+90835599 +precision: 157 +minmag_eq96 minmag_eq +823595732661955241575481545179547410e+83024492 -> 8.23595732661955241575481545179547410E+83024527 +precision: 3 +minmag_eq97 minmag_eq -Inf -> -Infinity +precision: 180 +minmag_eq98 minmag_eq -585071008625707882283089406228075046396899528902743860623317377995381368414288677477880095024169744038087280728742006273574415538612e+277181126 -> -5.85071008625707882283089406228075046396899528902743860623317377995381368414288677477880095024169744038087280728742006273574415538612E+277181257 +precision: 38 +minmag_eq99 minmag_eq +.856961587954147745564950 -> 0.856961587954147745564950 +precision: 76 +multiply_eq0 multiply_eq +16419229917556917718044035 -> 269591111085596147004142137735461565267426199081225 +precision: 21 +multiply_eq1 multiply_eq +5.27711105277744423e-348158313 -> 0E-425000020 Underflow Rounded Subnormal Clamped Inexact +precision: 278 +multiply_eq2 multiply_eq -6664806075076388444254278574457907452610852619351140118595076295885005928261948442952173366828510943.5651810811283835688616929023851440722615036023551258692569428673415952266628583588357514409494167690245906937983273700631861797209161670422021194047417670493 -> 44419640018375133959657264569994391869252583277792521563745885287478782379373822379877813758225841710455703409646847018096194059833426395490012213317757065764464876001531781992989618090898311438091986.913029698424689156300540510171524758384044321218222478889056070036790662139668 Rounded Inexact +precision: 171 +multiply_eq3 multiply_eq -37118321385762739549301918472781207996855642785071941584989875771332771087734580316212213969140254718406511687e347686222 -> Infinity Overflow Rounded Inexact +precision: 67 +multiply_eq4 multiply_eq -38084957144010564784770754863829912250917 -> 1.450463960661121355486459677321660779936809727333553250390059862263E+81 Rounded Inexact +precision: 76 +multiply_eq5 multiply_eq -.8447151778630887852239296621E-330230694 -> 0E-425000075 Underflow Rounded Subnormal Clamped Inexact +precision: 283 +multiply_eq6 multiply_eq 9841868366641824295924550794398610484890900058146686780872418000114821268572535468508453754918208216197771892838588292719763188723152 -> 96862372946305010425592056799142754400675290905395396312992265316889895284544520751815609934884196522748723384659927360633794242904631269912024570874140282660315046492133298310147702269228171305118524226305618135223344368834539571772901156870440913687722380100815104 +precision: 288 +multiply_eq7 multiply_eq +5517621488005561211381e+9592079 -> 3.0444146884900703462830262436928024163927161E+19184201 +precision: 155 +multiply_eq8 multiply_eq -8222720123898570411160862934400763645993039428631269348e+33325629 -> 6.7613126235966521133377051665297778624131824595329193902744756171052377467007191100578824808902206877724345104E+66651367 +precision: 31 +multiply_eq9 multiply_eq -786857406467766870E-375916382 -> 0E-425000030 Underflow Rounded Subnormal Clamped Inexact +precision: 98 +multiply_eq10 multiply_eq -255173697e+33805822 -> 6.5113615640647809E+67611660 +precision: 163 +multiply_eq11 multiply_eq -3224295653358592867912226530151739391001356610477361093788325988442645292919055879268067751477699800 -> 1.039608246026711525954097921835656904102238846135464249116499425471483442199453935168081050080499801355907690264535912910843181230513276378406351830748001107926565E+199 Rounded Inexact +precision: 265 +multiply_eq12 multiply_eq +.838309758527200323932574280306366768054810343032365927998589937914908134199044400830386855207436380955582018260691693307334036369E-107581381 -> 7.02763251241932916224816088035920235842253365245581459999839052727739346070076316657183665026433036289110323174932656923078689481757117703216302277782248497198572001069579991789969486159370142830529524815440924483171701226272746593934893570575344861814704161E-215162763 +precision: 234 +multiply_eq13 multiply_eq -.5323140491042792336747471718762316634175624345814365396516851466285252836363446055788309356090721920126846646125655755148326477411595658854258810293992558599837231E+278620808 -> Infinity Overflow Rounded Inexact +precision: 46 +multiply_eq14 multiply_eq -2808690174378219992617198697654.7019e-60190545 -> 7.888740495648755829891607413832069980217938975E-120381030 Rounded Inexact +precision: 285 +multiply_eq15 multiply_eq NaN -> NaN +precision: 224 +multiply_eq16 multiply_eq +16257590840112853741382274514361138770622961345141887846933056856813437238310475223516050589385343758731075367463613504830433171285315251866100915250141149768173204291267014960212402874704285661007953479442417121198282366130 -> 2.6430925992452136550432512613303017355771279419180559738999100419827318611838668954611222838891662130136958784771540680451419962276620414708581519516988419765300098142910447926766380108555736550474682125716169032553370027582E+446 Rounded Inexact +precision: 159 +multiply_eq17 multiply_eq -NaN9623175470648510492952684399616499300527860163904479887904840 -> -NaN9623175470648510492952684399616499300527860163904479887904840 +precision: 103 +multiply_eq18 multiply_eq -Infinity -> Infinity +precision: 174 +multiply_eq19 multiply_eq -3951E+180113994 -> 1.5610401E+360227995 +precision: 256 +multiply_eq20 multiply_eq +880116.798802676300818 -> 774605579534.670596057135125422868427469124 +precision: 137 +multiply_eq21 multiply_eq 737787096656999871151824892236574478863952734991893609725652786013503688405865010715538290084740808753590878 -> 5.4432979999356527045060695538098496974858560095551934006335532408162961339717731226574259669538882771354473722836908806101370323930529498E+215 Rounded Inexact +precision: 146 +multiply_eq22 multiply_eq +34742652057044588183237637884723391156905162381525005249421.65338520887526455780661436705079613644755613227159531416884820305048E+19100019 -> 1.2070518719568645547211600136570969424789735298396426307835201179141432289613163239651191635254045653489602115712286793214298094220897870222266684E+38200155 Rounded Inexact +precision: 58 +multiply_eq23 multiply_eq NaN -> NaN +precision: 166 +multiply_eq24 multiply_eq 15228001915691695459421892392713972287707870437027660363965520055556775864199922718488077864112198155248463116357629526872573314740680572503761472028 -> 2.318920423443099467868252069069294668745765557768068694776531568016996335339122499476554881493848945075635598775959452236332923223586335972249200109301871728911279333E+296 Rounded Inexact +precision: 104 +multiply_eq25 multiply_eq -47486327776923.986E-208892737 -> 2.254951325737462510289724022128196E-417785447 +precision: 69 +multiply_eq26 multiply_eq +.769901612640434347322691855695000893701172388426474929E-145786405 -> 5.92748493146341417177972840988347441676568827054603166775255262969640E-291572811 Rounded Inexact +precision: 242 +multiply_eq27 multiply_eq -Infinity -> Infinity +precision: 180 +multiply_eq28 multiply_eq 917889603974165594925849461948899542301069659110461452163672030156175113623209252832831477637311754377003382359607462576712576301974833108761518978013296662356E108824664 -> 8.42521325083850552314492160469312233304478538487659675017667634487691940305422354171007899622672274910305192612413101459411014252090495664057007819187425211405584817699123877123473E+217649645 Rounded Inexact +precision: 159 +multiply_eq29 multiply_eq +Infinity -> Infinity +precision: 51 +multiply_eq30 multiply_eq -554035887727838e293390741 -> Infinity Overflow Rounded Inexact +precision: 181 +multiply_eq31 multiply_eq 7903945132162441126797761249898776835087243243.3973341558949527231638953925112 -> 62472348652234348930805906678946671664946238459969135750783923597534878804040704949286434323.08007540852395157906236098492533394472896619568160031304212544 +precision: 108 +multiply_eq32 multiply_eq .1902528946430918434248828133132101806309710485979570251072978823037 -> 0.0361961639200754050523247727670139227163699237175682963851444692294044451488019386635259766155021016978621565 Rounded Inexact +precision: 253 +multiply_eq33 multiply_eq -84522968139734182734622300153173860895400239299225865206204938261502191109218398874550751814596065104979252921158094007876016481764762786916837056792587689789492393128429713263250677187491238743527032320464837815582204520792742074469582089296E287711602 -> Infinity Overflow Rounded Inexact +precision: 287 +multiply_eq34 multiply_eq -.924018461606422460695946 -> 0.853810117389499619063950224554738171178660834916 +precision: 75 +multiply_eq35 multiply_eq .7042095351108433032404 -> 0.49591106934103004707785839230124326914019216 +precision: 118 +multiply_eq36 multiply_eq -234487610613587019048547324395033553178 -> 54984439531269207623925702083454604623340324464850612714058699480435753899684 +precision: 94 +multiply_eq37 multiply_eq -9930065407265266098105690502011158763928950088536257532285904666806373920 -> 9.860619899256629505796873707054316095749098631775419860635925523772595660811912018250355233755E+145 Rounded Inexact +precision: 49 +multiply_eq38 multiply_eq 7556498145715421797176057790512916931 -> 5.710066422620060799201872221272193114604138350058E+73 Rounded Inexact +precision: 5 +multiply_eq39 multiply_eq .7190 -> 0.51696 Rounded Inexact +precision: 130 +multiply_eq40 multiply_eq +32189410213939877846510382459916914809206525167835153129299079910396824979060948353923029434594 -> 1.036158129921296932472750873497932195432233208042584735321010226286305347931674882016823639964585878662124430563963341185340122381E+189 Rounded Inexact +precision: 125 +multiply_eq41 multiply_eq +1502887313124081185844508822556692 -> 2258670275949320048990811140954620796701965297456130294583553982864 +precision: 5 +multiply_eq42 multiply_eq -28055 -> 7.8708E+8 Rounded Inexact +precision: 211 +multiply_eq43 multiply_eq 1059854516807298982505840201080351093495236751452256836 -> 1123291596796833201393771114133681253642489576023280862220587682630955461442903860167627909360895917708730896 +precision: 166 +multiply_eq44 multiply_eq -7304134603848592782617778041454886851362.6158484556670020045641680222985409910859328400060359753667100673029063068221475308541032471 -> 53350382311138439424469248741839398527069877468492364165880016783496043301456243.72147815549295470643348720828461470562657838924087614409996772594689571657781773118716 Rounded Inexact +precision: 195 +multiply_eq45 multiply_eq -71963353363023980021730116712297529666845048457730009088784882506550485660635997232491234823E-145722234 -> 5.178724227251454775323834190214040046884011536913859914050628294972747964251950788209334138848321699966573872720343745716820391587701665410123563182798127047244786159621331523327841329E-291444285 +precision: 298 +multiply_eq46 multiply_eq -30818343608043702524568140989632564886081076479242706518456175826890107103157983175708E385509233 -> Infinity Overflow Rounded Inexact +precision: 157 +multiply_eq47 multiply_eq -Infinity -> Infinity +precision: 288 +multiply_eq48 multiply_eq Inf -> Infinity +precision: 224 +multiply_eq49 multiply_eq -84787222720728123285551670193787966122922900430723999147189762747052273641068302138973575224465411278935671694780581551507237310290385490182736882946803412673313081 -> 7.1888731366943553007599054010963342472929370133928560173062718656716870454249508028496134238385994956739895193086874330861632484897970971903993755958273592913923397248724933629866695928266500014440238764048855089403843134422E+327 Rounded Inexact +precision: 61 +multiply_eq50 multiply_eq -4188677796396623450290310940559590.27 -> 1.754502168202607329536518054263585391133254952915625695491025E+67 Rounded Inexact +precision: 43 +multiply_eq51 multiply_eq +.5543102731444506856916717008181774600089801E73351313 -> 3.072598789134755270624414692105906698750600E+146702625 Rounded Inexact +precision: 91 +multiply_eq52 multiply_eq +30280027948404201765010023854429232944970 -> 916880092556139572186432280691364932868092790568683662197028979549807619048300900 +precision: 194 +multiply_eq53 multiply_eq -45275504288351776978909081855122322656836776839354313735646021309088249369996574476557995903822552510114687 -> 2.0498712885645601471781593892303578290485916434010092258112807502489658328848002839061551453011003654385765641164538006522275149260782074041728143006903305594236350929401132489478110648273394442E+213 Rounded Inexact +precision: 7 +multiply_eq54 multiply_eq +397057 -> 1.576543E+11 Rounded Inexact +precision: 244 +multiply_eq55 multiply_eq 9274101833222445281491647096053759498502676047675777003442525056043915491896695516816309077888131329807921790703259430992449838273176265659603949776365387559013398 -> 8.600896481297992027469725251866049417732039929087002611865095722747519554545916991742788147428919688925857275664634059415163368109651242476482536861791554025316057116060996026001469573462094069980172796805041526625019044898672082465091285877748E+325 Rounded Inexact +precision: 169 +multiply_eq56 multiply_eq -Inf -> Infinity +precision: 275 +multiply_eq57 multiply_eq -96605972554224867499146596624770450937142149115782314567503512200655059234885346933655256705268.33916555276829580287754340303467757430197636938461119616198883164274995285350047020638773370215476653743655848407321482750638385203 -> 9332713933147648369817736029302338884201285509424752109641258366104124910134631396940385659236128188969800243569838362907233450036590826530179923585699121310972661335466501506999029623862276.4451410318334237777338154269507819975784318299628363233536039881847205093877603886482 Rounded Inexact +precision: 16 +multiply_eq58 multiply_eq 452089533E-294823806 -> 0E-425000015 Underflow Rounded Subnormal Clamped Inexact +precision: 89 +multiply_eq59 multiply_eq -325068625224217046022086392.1750 -> 105669611105162478754195969997946425971039838819307901.23062500 +precision: 215 +multiply_eq60 multiply_eq +96155278391114591368580211541180092272347840058552249589283434267236080497800 -> 9245837562472748678775084993493438952122151779683494312392792166264443345039556131154756423614594203530820279319554459970405584703149610226641495804840000 +precision: 119 +multiply_eq61 multiply_eq +Inf -> Infinity +precision: 153 +multiply_eq62 multiply_eq +41263179030909377905825366338800215063256514765079822798185569704434308703352578579454212603880655741287108536176902301668539134418909204337999 -> 1.70264994373687938756882411048210114796506523629942601587113843662126094732766713843832771353627151201948835694416521568662147925373880833527879662168710E+285 Rounded Inexact +precision: 240 +multiply_eq63 multiply_eq 786 -> 617796 +precision: 286 +multiply_eq64 multiply_eq -869970374645017737415601370701781845794646838186435982730150655303040609761712383901548920156257560446962866471769318887524329056835332568847992.35977551918865e46048962 -> 7.568484527599925209282169173894252701258058294434344214073193450124520536915830522716130342582675408575434052771980398158634458055214386150684893487626563599453160175585788042383609277123411617565916668317112501552521911259207619778301467795898716489283434225884556759895286570799005658E+92098211 Rounded Inexact +precision: 261 +multiply_eq65 multiply_eq 357131092727320121777104034194592593096960701711645955011434993534748701416091466781991379675187815209362834564577538689518973984506330200624834605498850530e-318708829 -> 0E-425000260 Underflow Rounded Subnormal Clamped Inexact +precision: 81 +multiply_eq66 multiply_eq -570790775562895863872734468580575535833.10750241915182428020E+210296576 -> 3.25802109467692158085276970945671733573123759135832619474436436651529319927113500E+420593229 Rounded Inexact +precision: 268 +multiply_eq67 multiply_eq -438812349236686277153020082229007516560349813822 -> 192556277842619523563183943246724124722457450694631284236151256948593241030869286154350062247684 +precision: 289 +multiply_eq68 multiply_eq +409855414936301217922498119478465349821413983279681798107606807992981087773273734859890949552400387844884873578398715733265542525300991251669913868334669157375411598926122744332009140864686700389409298819957291.796008194050411001e-144450574 -> 1.679814611526076434773193440292890738182207134665123443772745095315005255967151734914927781138842512942000497531182690475445311009050536404389062814798592547839775271682952702925914357931001254945351634242558936754689181177972651457739485421353204696454869267819249643277951051880854687337E-288900729 Rounded Inexact +precision: 265 +multiply_eq69 multiply_eq -827994621603.81711087315577190329 -> 685575093404848281106062.2882452589947095085365918301945891128241 +precision: 291 +multiply_eq70 multiply_eq -357691448027818300433728985577 -> 127943171992237440326852955620237697259074151129653474022929 +precision: 49 +multiply_eq71 multiply_eq -5365640556666458506565507995310933.37917E-377689767 -> 0E-425000048 Underflow Rounded Subnormal Clamped Inexact +precision: 230 +multiply_eq72 multiply_eq 294895083879892334502000368021910215.37686531840023133394184285059732628802730379079276055015008336264811295076047744104846944822614193950407840671609482614161939512667E-189988200 -> 8.6963110496528735802272844703083624791536603285834018470397672908320550012661279329659216443108881224255109005004600637387994272056045104545076281577281904120711672329453373188068431411551929709645008778205198439684174201083860511E-379976330 Rounded Inexact +precision: 60 +multiply_eq73 multiply_eq Inf -> Infinity +precision: 16 +multiply_eq74 multiply_eq -34 -> 1156 +precision: 153 +multiply_eq75 multiply_eq +120415123045492984958486146531190873.2569958908389519111664124059811896026604e+273785964 -> Infinity Overflow Rounded Inexact +precision: 286 +multiply_eq76 multiply_eq -.868082417719782572691362256176544619769189140540305901941373981733153312824026789266693023769642706965531347578067761410988450164383232627464216388945370984306744692034414960340748951698031045428774345314313314697420688 -> 0.7535670839542230803508788366788122548221014967467429876661531500186845329227264047783464998658652228988711473317952181327981408192299552945021159760967109633923635038362748155933848586426939466592843706347783294709011333679599350187473134129083038395461496828538233941736682419113175580 Rounded Inexact +precision: 214 +multiply_eq77 multiply_eq -2874233321797786166974837.3847433837913171249423308798989362882324248774185110765488091334076841985 -> 8261217188132736209940357527788264570836071998511.42329873762719090824275668052771246202308318346747617615534976169425758501514426701146342682097242700324869556575855507655848419937620670658740225 +precision: 189 +multiply_eq78 multiply_eq -10927053989556746406552170451544603483861351599505829125417030438748104447163504271585224966049540770696123427887230561035073495653398364080836E-249006495 -> 0E-425000188 Underflow Rounded Subnormal Clamped Inexact +precision: 269 +multiply_eq79 multiply_eq -211199368306250714139984615773096950339091457937206723107686346847481273196206752715031466908126722315646305960044731608832271221106552181702328363851029535948672842877992781863632513527271718277807618771566918e+326510380 -> Infinity Overflow Rounded Inexact +precision: 150 +multiply_eq80 multiply_eq 4729123968490026567418890498093883343425100.9420488027326986340941357089 -> 22364613509346857794115011937782824501810440802072254215310602330810218707091258918298.61046127764731219337278786799274364225216481689010553921 +precision: 240 +multiply_eq81 multiply_eq +84475226313115800156754553308774317304992427341126048712701904406471577793172715136104 -> 7136063860652132062866856942380171225080917203706869150092200437417949255930088287003967414778100353555372769165124579446478955809647384357138222642881068395183423244298816 +precision: 72 +multiply_eq82 multiply_eq -36587533428 -> 1338647602345017431184 +precision: 253 +multiply_eq83 multiply_eq -818146546758629854583419085943906855308293573229539227195520719987672503003962322027236962 -> 669363771973070907015332444336228675153661153691374698288920602595824669486872228153512610120196067297616241447917968794523209159030261700078526815913384861159299228233380098989444 +precision: 272 +multiply_eq84 multiply_eq -28985768513438101931028178763607791e+249244182 -> Infinity Overflow Rounded Inexact +precision: 206 +multiply_eq85 multiply_eq Infinity -> Infinity +precision: 51 +multiply_eq86 multiply_eq +61275585163163618547306473514092243.24929140270 -> 3.75469733708811738102847509517694894443056781083884E+69 Rounded Inexact +precision: 105 +multiply_eq87 multiply_eq +.5778623779669754835231667539281210957382238455E-207501150 -> 3.3392492786964763275388453571941842546634674232102520608670593582913859622611609106480787025E-415002301 +precision: 111 +multiply_eq88 multiply_eq -97 -> 9409 +precision: 187 +multiply_eq89 multiply_eq +418889543445049653436501847e-73928086 -> 1.75468449607602141078718470440922242272952044434411409E-147856119 +precision: 53 +multiply_eq90 multiply_eq -94053805494401104514605783774313224131269335846365817 -> 8.8461183279786353960351562232249914931580034309204177E+105 Rounded Inexact +precision: 263 +multiply_eq91 multiply_eq +8536473205314094627866.319644269595197214315565487355299745503166828240219127233944110249778740156152813769894527750650168 -> 72871374785045492774329223365799544215243163.042261904305010864953078263322785858124586521408469998913698378809558489128651780357229627108292226103843314057086122939753966787609125733913468421900494345381188323535396484641809633136746718428224 +precision: 128 +multiply_eq92 multiply_eq +606431192633665067013393869970388020674407379693467588831818 -> 367758791399089388236916066216359768184732844348287425892619231673886023647820221354056923532649395130259388921889185124 +precision: 28 +multiply_eq93 multiply_eq -sNaN -> -NaN Invalid_operation +precision: 159 +multiply_eq94 multiply_eq +7038e+145971838 -> 4.9533444E+291943683 +precision: 79 +multiply_eq95 multiply_eq -7911783194701843441934946.12214080162935851781433146143988047963583255 -> 62596313319966507933932627357885223354593013743755.43822065110458111172470632858 Rounded Inexact +precision: 299 +multiply_eq96 multiply_eq -9973688148027574124095535366989471368151775403034404762849710875675287972118252454560123210601380677241893836202 -> 99474455274105701333367004951235078034762047391549878426089520240042184324688999969089345576435779826886310948794396630214854845178646757249498988999017482397962504855628450474767971263786842401275783853084365500520005784804 +precision: 180 +multiply_eq97 multiply_eq +81801677027774888001560230139773788507555659311748447309567723831230434168248349695216 -> 6691514364556393834801055287378095035898077165438527302060495411740155755641810503574595947921410834573995020154919147074886788757138373950175728519833982651689880093286656 +precision: 132 +multiply_eq98 multiply_eq 65399967908124902413118521928282124293357153749862840977240444 -> 4277155802383767124083181785232893242629935813631999488389252775540482143717414891601303931490381175050054356400805389317136 +precision: 264 +multiply_eq99 multiply_eq -241845742537868444605345823970698749479269980699517014409201743907113200891868130511408364496283486712322131145797091662081107989318049205966920514011840772E112041248 -> 5.84893631836929504572339796317640198610511667502864490518097490015304130565212482296488155709910789356409214814173995989671481084026440744440376207422647173079767391807114052109953745128651230160767048839225752283768040207328287596491128961347077199440117140544755E+224082806 Rounded Inexact +precision: 34 +nexttoward_eq0 nexttoward_eq -78134744367691536194708531 -> -78134744367691536194708531 +precision: 256 +nexttoward_eq1 nexttoward_eq -.9716552985528761115565754826047804734852935214517890583367718424757677131519850854315753227631657578593783950729321560575735862125122766647317598700566398E386704677 -> -9.716552985528761115565754826047804734852935214517890583367718424757677131519850854315753227631657578593783950729321560575735862125122766647317598700566398E+386704676 +precision: 200 +nexttoward_eq2 nexttoward_eq -.8537008685979470753640770866065301180915124288689 -> -0.8537008685979470753640770866065301180915124288689 +precision: 245 +nexttoward_eq3 nexttoward_eq -70290856388430953986183693893632096272240142430364811680157491852638650363369282531040423127137037103226200281827507764285490036733854749310969803490008848644296653728537977753030133988103839922172 -> -70290856388430953986183693893632096272240142430364811680157491852638650363369282531040423127137037103226200281827507764285490036733854749310969803490008848644296653728537977753030133988103839922172 +precision: 41 +nexttoward_eq4 nexttoward_eq 5 -> 5 +precision: 265 +nexttoward_eq5 nexttoward_eq -670048103273024993560 -> -670048103273024993560 +precision: 211 +nexttoward_eq6 nexttoward_eq +Inf -> Infinity +precision: 36 +nexttoward_eq7 nexttoward_eq 95162 -> 95162 +precision: 161 +nexttoward_eq8 nexttoward_eq -246067591343327950585287005374149807583030609440906178671582218107467143227620126306301146967696144130792347460438406350001843970985084537586470277956856478 -> -246067591343327950585287005374149807583030609440906178671582218107467143227620126306301146967696144130792347460438406350001843970985084537586470277956856478 +precision: 60 +nexttoward_eq9 nexttoward_eq 2256567779.194553368241504820461e-236173066 -> 2.256567779194553368241504820461E-236173057 +precision: 191 +nexttoward_eq10 nexttoward_eq -555416516071327802148724 -> -555416516071327802148724 +precision: 50 +nexttoward_eq11 nexttoward_eq +204.93313839928299475208531778849150495e-786551 -> 2.0493313839928299475208531778849150495E-786549 +precision: 254 +nexttoward_eq12 nexttoward_eq +.25185222903231758246444908048712578178055568438098657322373463503203228444856773958738700757890928951302852682940928001153208743807197816617706408810114874241417541776E-325990973 -> 2.5185222903231758246444908048712578178055568438098657322373463503203228444856773958738700757890928951302852682940928001153208743807197816617706408810114874241417541776E-325990974 +precision: 289 +nexttoward_eq13 nexttoward_eq 466504746661211308664655369345266147509416722150730739590003867929e+150099755 -> 4.66504746661211308664655369345266147509416722150730739590003867929E+150099820 +precision: 2 +nexttoward_eq14 nexttoward_eq -46. -> -46 +precision: 170 +nexttoward_eq15 nexttoward_eq -.880287274016281490821485199588724656290123356406655586361922094219744229099338778939071354644395326450 -> -0.880287274016281490821485199588724656290123356406655586361922094219744229099338778939071354644395326450 +precision: 123 +nexttoward_eq16 nexttoward_eq -7755518556156542781944.72909051583979652829537981930826565394329261640010931751883746580848494628016827710e-214241731 -> -7.75551855615654278194472909051583979652829537981930826565394329261640010931751883746580848494628016827710E-214241710 +precision: 273 +nexttoward_eq17 nexttoward_eq +675870716020308098920940626.5905401618175781636735478602298927548148261389818741408386339796650079841877769121967878566862001106082901291309486226038086498777150426712670811473366388944191823078587018736243671227E+165953299 -> 6.758707160203080989209406265905401618175781636735478602298927548148261389818741408386339796650079841877769121967878566862001106082901291309486226038086498777150426712670811473366388944191823078587018736243671227E+165953325 +precision: 125 +nexttoward_eq18 nexttoward_eq -.772209259374873667605820518160576014686572293990530484286858175869642299646634594203118090712492719275823297209e+100016979 -> -7.72209259374873667605820518160576014686572293990530484286858175869642299646634594203118090712492719275823297209E+100016978 +precision: 17 +nexttoward_eq19 nexttoward_eq 0.91663531398223e-290245841 -> 9.1663531398223E-290245842 +precision: 58 +nexttoward_eq20 nexttoward_eq +.6972510146105181572261254949746 -> 0.6972510146105181572261254949746 +precision: 127 +nexttoward_eq21 nexttoward_eq -.54416660557967051167152342708131579034 -> -0.54416660557967051167152342708131579034 +precision: 208 +nexttoward_eq22 nexttoward_eq 768307133108546267946608073298177950348726364690426748864410710114898040031452626684884841194770 -> 768307133108546267946608073298177950348726364690426748864410710114898040031452626684884841194770 +precision: 92 +nexttoward_eq23 nexttoward_eq -72360942067781663e+412246278 -> -7.2360942067781663E+412246294 +precision: 138 +nexttoward_eq24 nexttoward_eq 7023828439200843350154.2883417350819279143631191e309322786 -> 7.0238284392008433501542883417350819279143631191E+309322807 +precision: 19 +nexttoward_eq25 nexttoward_eq -6427899.1259668E+358582054 -> -6.4278991259668E+358582060 +precision: 208 +nexttoward_eq26 nexttoward_eq -375940732543421101732412182743113735263916910174657168486093711611188446108490727154858815404179248564289457522363819790685461700189109988063465398563728947002206E-123571103 -> -3.75940732543421101732412182743113735263916910174657168486093711611188446108490727154858815404179248564289457522363819790685461700189109988063465398563728947002206E-123570942 +precision: 141 +nexttoward_eq27 nexttoward_eq 24471020614132723154947612492088802206192592493948105468079198 -> 24471020614132723154947612492088802206192592493948105468079198 +precision: 32 +nexttoward_eq28 nexttoward_eq sNaN -> NaN Invalid_operation +precision: 282 +nexttoward_eq29 nexttoward_eq -83225377621647694793313841279E+221505954 -> -8.3225377621647694793313841279E+221505982 +precision: 270 +nexttoward_eq30 nexttoward_eq 28371563699025255201042622314638890053399716782017357129749170759361172839338510950151941821416522048059253131118767504833403972675231336439864831427055611268441444997804311073128488574331274799404000719807739 -> 28371563699025255201042622314638890053399716782017357129749170759361172839338510950151941821416522048059253131118767504833403972675231336439864831427055611268441444997804311073128488574331274799404000719807739 +precision: 223 +nexttoward_eq31 nexttoward_eq -NaN2386089134646771667726627496583057393688330987595628520354639158596045593150321850054681059077 -> -NaN2386089134646771667726627496583057393688330987595628520354639158596045593150321850054681059077 +precision: 87 +nexttoward_eq32 nexttoward_eq .687263005588869965603560051224263089585704631903622770 -> 0.687263005588869965603560051224263089585704631903622770 +precision: 217 +nexttoward_eq33 nexttoward_eq 37608255854020097232006021936815870242993382480302641622575823910564487966012903262767063065350985901191120.2772249319987671043259987491314742190441943082011452403361138217501516219711005302396287144E-383993353 -> 3.76082558540200972320060219368158702429933824803026416225758239105644879660129032627670630653509859011911202772249319987671043259987491314742190441943082011452403361138217501516219711005302396287144E-383993247 +precision: 227 +nexttoward_eq34 nexttoward_eq +94498e-161153743 -> 9.4498E-161153739 +precision: 220 +nexttoward_eq35 nexttoward_eq -1583376316134617581029966230498989279592089008670078727078315651098548428761977512.16508124992212223664954726095e23371325 -> -1.58337631613461758102996623049898927959208900867007872707831565109854842876197751216508124992212223664954726095E+23371406 +precision: 230 +nexttoward_eq36 nexttoward_eq +.9450997161354574525124853935572252378087010777258953966101e-166876616 -> 9.450997161354574525124853935572252378087010777258953966101E-166876617 +precision: 223 +nexttoward_eq37 nexttoward_eq -3669485176500259696884089987.290312778980763e-52056152 -> -3.669485176500259696884089987290312778980763E-52056125 +precision: 5 +nexttoward_eq38 nexttoward_eq +39.9 -> 39.9 +precision: 133 +nexttoward_eq39 nexttoward_eq +12276252031793972024827768671410009811452103003565748359180832913507630337444738238812248136623042442643397861120439976454159183408e350258099 -> 1.2276252031793972024827768671410009811452103003565748359180832913507630337444738238812248136623042442643397861120439976454159183408E+350258229 +precision: 207 +nexttoward_eq40 nexttoward_eq -.35426827680338493697818467897407267880542926060849190098323004082957027865141517569225900567015646130254907205879 -> -0.35426827680338493697818467897407267880542926060849190098323004082957027865141517569225900567015646130254907205879 +precision: 111 +nexttoward_eq41 nexttoward_eq 1680296007584820539921529745284029064727300211749166125809186955166025092140471744405445841074E-305372601 -> 1.680296007584820539921529745284029064727300211749166125809186955166025092140471744405445841074E-305372508 +precision: 182 +nexttoward_eq42 nexttoward_eq -7002049194173484004980130464092758169 -> -7002049194173484004980130464092758169 +precision: 137 +nexttoward_eq43 nexttoward_eq 730750944135984618307828771224063793554232406955753833395691223061832728055225478833664679173894E78737494 -> 7.30750944135984618307828771224063793554232406955753833395691223061832728055225478833664679173894E+78737589 +precision: 235 +nexttoward_eq44 nexttoward_eq -63062388118.905 -> -63062388118.905 +precision: 193 +nexttoward_eq45 nexttoward_eq -2411198856727843218446102367961538416469216161045186262398488905789777100813949029067104481510904362932902604535606670065757897919357511396649309530914379856909867e+5400281 -> -2.411198856727843218446102367961538416469216161045186262398488905789777100813949029067104481510904362932902604535606670065757897919357511396649309530914379856909867E+5400443 +precision: 286 +nexttoward_eq46 nexttoward_eq 70233464446472103615534035744113472378672336776354651673284716360790041611079174297114909713212339265117345155268273924548721393729077355399 -> 70233464446472103615534035744113472378672336776354651673284716360790041611079174297114909713212339265117345155268273924548721393729077355399 +precision: 268 +nexttoward_eq47 nexttoward_eq -sNaN -> -NaN Invalid_operation +precision: 194 +nexttoward_eq48 nexttoward_eq -6703309699806729580254991549360189380863651473993832004628594195600629625.599703949647311447E-321858435 -> -6.703309699806729580254991549360189380863651473993832004628594195600629625599703949647311447E-321858363 +precision: 211 +nexttoward_eq49 nexttoward_eq -Inf -> -Infinity +precision: 132 +nexttoward_eq50 nexttoward_eq Inf -> Infinity +precision: 232 +nexttoward_eq51 nexttoward_eq -180771923615393858999551.90657208381253319887065007786868149112540133421911549575862 -> -180771923615393858999551.90657208381253319887065007786868149112540133421911549575862 +precision: 34 +nexttoward_eq52 nexttoward_eq +37491.12273200 -> 37491.12273200 +precision: 204 +nexttoward_eq53 nexttoward_eq -.536355506726664898658325244898408964259667956331591402152152059571211386496557 -> -0.536355506726664898658325244898408964259667956331591402152152059571211386496557 +precision: 290 +nexttoward_eq54 nexttoward_eq -2742153674879382244640699040554824911177836727743027552124484428863127018189532419468211654361240874514202768000877717436521406900828518781727374074067519565738502978338647966290841515644168699260575383041924581042119619 -> -2742153674879382244640699040554824911177836727743027552124484428863127018189532419468211654361240874514202768000877717436521406900828518781727374074067519565738502978338647966290841515644168699260575383041924581042119619 +precision: 99 +nexttoward_eq55 nexttoward_eq -NaN5698654648330873367577 -> -NaN5698654648330873367577 +precision: 26 +nexttoward_eq56 nexttoward_eq 453.88 -> 453.88 +precision: 232 +nexttoward_eq57 nexttoward_eq -Inf -> -Infinity +precision: 114 +nexttoward_eq58 nexttoward_eq -77384594586952864760886889793958516409271295355680109275499E-384296133 -> -7.7384594586952864760886889793958516409271295355680109275499E-384296075 +precision: 10 +nexttoward_eq59 nexttoward_eq .4357057E-318522993 -> 4.357057E-318522994 +precision: 197 +nexttoward_eq60 nexttoward_eq 90146747989737103108883137428599337992649638032245790490092336.22084971697541900082317728771 -> 90146747989737103108883137428599337992649638032245790490092336.22084971697541900082317728771 +precision: 64 +nexttoward_eq61 nexttoward_eq -791082881927345758638810914851 -> -791082881927345758638810914851 +precision: 163 +nexttoward_eq62 nexttoward_eq -405813636434317598512349823336224821271202269488769694869389390755889587 -> -405813636434317598512349823336224821271202269488769694869389390755889587 +precision: 81 +nexttoward_eq63 nexttoward_eq -.731424573872721179307819 -> -0.731424573872721179307819 +precision: 253 +nexttoward_eq64 nexttoward_eq -85876020361388696709189621603541692639049856939053808741873138116477748006134254888091925052315466124907915898589039456576744223007716433670154806181958402824090985620909274098968456608085413994860073477279002 -> -85876020361388696709189621603541692639049856939053808741873138116477748006134254888091925052315466124907915898589039456576744223007716433670154806181958402824090985620909274098968456608085413994860073477279002 +precision: 57 +nexttoward_eq65 nexttoward_eq -91758358216459340989057475155529741 -> -91758358216459340989057475155529741 +precision: 33 +nexttoward_eq66 nexttoward_eq 5773099399335637167097935173882 -> 5773099399335637167097935173882 +precision: 192 +nexttoward_eq67 nexttoward_eq +974245016900493005401944617238774728303261098181046294214511095134706547662075408841920135617828142E44430867 -> 9.74245016900493005401944617238774728303261098181046294214511095134706547662075408841920135617828142E+44430965 +precision: 253 +nexttoward_eq68 nexttoward_eq -47367913390932087163354546495104036208899633712073347534314607224712526066209598972308372751505622035988479330092891340649055561592311089990794720197e42910478 -> -4.7367913390932087163354546495104036208899633712073347534314607224712526066209598972308372751505622035988479330092891340649055561592311089990794720197E+42910626 +precision: 120 +nexttoward_eq69 nexttoward_eq .349644826051775504856160027113688415216836635135102842609036527586818977245257989 -> 0.349644826051775504856160027113688415216836635135102842609036527586818977245257989 +precision: 94 +nexttoward_eq70 nexttoward_eq -850418546517602534053114597710149620397620521194876461125636453 -> -850418546517602534053114597710149620397620521194876461125636453 +precision: 115 +nexttoward_eq71 nexttoward_eq +589797863906967629635846069743879585985668826349e+186694155 -> 5.89797863906967629635846069743879585985668826349E+186694202 +precision: 68 +nexttoward_eq72 nexttoward_eq -2374771639668965339459261814 -> -2374771639668965339459261814 +precision: 60 +nexttoward_eq73 nexttoward_eq .326727255038186517622546708656150848549720908 -> 0.326727255038186517622546708656150848549720908 +precision: 194 +nexttoward_eq74 nexttoward_eq +Inf -> Infinity +precision: 81 +nexttoward_eq75 nexttoward_eq -902517334527801812433915023717013632.911547827782180627721470697927546734 -> -902517334527801812433915023717013632.911547827782180627721470697927546734 +precision: 226 +nexttoward_eq76 nexttoward_eq -4571205709492999505211046879338420857482957356789567636581349601724526031679638497117312848471373415371619376766903529637842e-79539834 -> -4.571205709492999505211046879338420857482957356789567636581349601724526031679638497117312848471373415371619376766903529637842E-79539711 +precision: 90 +nexttoward_eq77 nexttoward_eq -.5088167e-10893082 -> -5.088167E-10893083 +precision: 211 +nexttoward_eq78 nexttoward_eq -4157694825814771496610032825993626455654159126218605859355538026793134576245506882259276619655841269919160631786117751786619758573815191228176211762594225796728405521 -> -4157694825814771496610032825993626455654159126218605859355538026793134576245506882259276619655841269919160631786117751786619758573815191228176211762594225796728405521 +precision: 226 +nexttoward_eq79 nexttoward_eq +4234.2301325852902111139082640578066512227722918 -> 4234.2301325852902111139082640578066512227722918 +precision: 131 +nexttoward_eq80 nexttoward_eq +74555291306.12236089385948325703866864491942073721610184416035230E+156736621 -> 7.455529130612236089385948325703866864491942073721610184416035230E+156736631 +precision: 270 +nexttoward_eq81 nexttoward_eq -71798062633101742741999181726094034610435635228100033944755210731739562598436187637209717195954134649873275479331477261382885373331093926848857139575018154045976570579259300548621433398254478288384900498029311991868637077754459872290435926067 -> -71798062633101742741999181726094034610435635228100033944755210731739562598436187637209717195954134649873275479331477261382885373331093926848857139575018154045976570579259300548621433398254478288384900498029311991868637077754459872290435926067 +precision: 129 +nexttoward_eq82 nexttoward_eq -NaN -> -NaN +precision: 194 +nexttoward_eq83 nexttoward_eq -Inf -> -Infinity +precision: 247 +nexttoward_eq84 nexttoward_eq 40102902149552782881429358580956050743674745059487 -> 40102902149552782881429358580956050743674745059487 +precision: 82 +nexttoward_eq85 nexttoward_eq -15930896220890339033451243599939294540185825746058575137834996921404777153E-173038624 -> -1.5930896220890339033451243599939294540185825746058575137834996921404777153E-173038551 +precision: 264 +nexttoward_eq86 nexttoward_eq -5469849101174582100619294969316525863921623755187731895217144672853338914881894323820637166489688121504355844814257449383393433609876445158370487061931.1877903696573370850326930 -> -5469849101174582100619294969316525863921623755187731895217144672853338914881894323820637166489688121504355844814257449383393433609876445158370487061931.1877903696573370850326930 +precision: 8 +nexttoward_eq87 nexttoward_eq -5.826 -> -5.826 +precision: 111 +nexttoward_eq88 nexttoward_eq 4229236701227937556331137041031361644246908814604574172918275 -> 4229236701227937556331137041031361644246908814604574172918275 +precision: 235 +nexttoward_eq89 nexttoward_eq +.1480421070101469094741162069930076546581804284369644265392577971843232052458158 -> 0.1480421070101469094741162069930076546581804284369644265392577971843232052458158 +precision: 162 +nexttoward_eq90 nexttoward_eq -5219029708764979502935813628711639739624607821693646295950135605909615656448632458329734999100404034569230321797340082832429475621601696713 -> -5219029708764979502935813628711639739624607821693646295950135605909615656448632458329734999100404034569230321797340082832429475621601696713 +precision: 13 +nexttoward_eq91 nexttoward_eq +.42E88089193 -> 4.2E+88089192 +precision: 274 +nexttoward_eq92 nexttoward_eq 38275669014358860837996346295674356432510462492708056066233041450162979822771617.18150924318112876254573379145568425969358350766612543733406493510748131616962909278278096504752610 -> 38275669014358860837996346295674356432510462492708056066233041450162979822771617.18150924318112876254573379145568425969358350766612543733406493510748131616962909278278096504752610 +precision: 144 +nexttoward_eq93 nexttoward_eq Infinity -> Infinity +precision: 180 +nexttoward_eq94 nexttoward_eq -69501447191835722092149891969121305062554877082317174330500885715083514605008514337070323 -> -69501447191835722092149891969121305062554877082317174330500885715083514605008514337070323 +precision: 7 +nexttoward_eq95 nexttoward_eq -.3506 -> -0.3506 +precision: 291 +nexttoward_eq96 nexttoward_eq -21500340084017455088211276817343582223562176860373321572280572648021869729139625492970499021E-69477832 -> -2.1500340084017455088211276817343582223562176860373321572280572648021869729139625492970499021E-69477741 +precision: 134 +nexttoward_eq97 nexttoward_eq -8282293266655201005765837716244293151507233460430231057785589716874355679092841231550393389602050252e-365370549 -> -8.282293266655201005765837716244293151507233460430231057785589716874355679092841231550393389602050252E-365370450 +precision: 225 +nexttoward_eq98 nexttoward_eq -5354825967650968357768330247506153701588652344589235343640120283721749038287488 -> -5354825967650968357768330247506153701588652344589235343640120283721749038287488 +precision: 63 +nexttoward_eq99 nexttoward_eq -.50587390541575477830305491441E-242877962 -> -5.0587390541575477830305491441E-242877963 +precision: 36 +power_eq0 power_eq -362429158631567479322670636751195 -> -0E-425000035 Underflow Rounded Subnormal Clamped Inexact +precision: 182 +power_eq1 power_eq Inf -> Infinity +precision: 24 +power_eq2 power_eq 336328251898.680440 -> Infinity Overflow Rounded Inexact +precision: 266 +power_eq3 power_eq -Infinity -> NaN Invalid_operation +precision: 249 +power_eq4 power_eq -84148398145563222567972356500153049060301808865655786681709084908640618066628209148190757861103363818833545205916267335277521478237644477014453263486119418709238.73617191403374801288722828575195496082540384620181527e111739739 -> 0E-425000248 Underflow Rounded Subnormal Clamped Inexact +precision: 86 +power_eq5 power_eq -96894973e-104779155 -> NaN Invalid_operation +precision: 43 +power_eq6 power_eq +811348122101671807916378 -> Infinity Overflow Rounded Inexact +precision: 292 +power_eq7 power_eq 53817533037343519747465332046533250780143278180064156998505947836067376175E-288610517 -> 1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Rounded Inexact +precision: 80 +power_eq8 power_eq 1765634103742659654793240404818053332869884780233871683068871088533846682e-95475983 -> 1.0000000000000000000000000000000000000000000000000000000000000000000000000000000 Rounded Inexact +precision: 241 +power_eq9 power_eq -7688667600.4148 -> NaN Invalid_operation +precision: 64 +power_eq10 power_eq -sNaN -> -NaN Invalid_operation +precision: 35 +power_eq11 power_eq -55947032460443.621489307663775485805e+203039834 -> 0E-425000034 Underflow Rounded Subnormal Clamped Inexact +precision: 264 +power_eq12 power_eq +.6302729162804254304212747762501792615338058155857169658848203615324386785087192325386882075848184152741052846519616755963481203110553407436335337664963 -> 0.747563923370209568431142758200770602941652056211712412234599628978714909159050057152343990926248768132411011287051209654890464381800059571594148012412029694391362089442377433072020298391180950596903523553870314556668128175261638628566516305100943642828881348140074 Rounded Inexact +precision: 270 +power_eq13 power_eq -94942461976979685795579473419613216971054577257518719888291326549177224244887041478847900320541775894897231041017722975742137594778504523137041630275302612409348105987406511499678939149458569231177372438985477420767221170055823405805767724242097E-373608178 -> NaN Invalid_operation +precision: 136 +power_eq14 power_eq -10320078013400118 -> 0E-425000135 Underflow Rounded Subnormal Clamped Inexact +precision: 51 +power_eq15 power_eq +.30184065923463985955179681854266823098862 -> 0.696587649756521381251433776384454491557556311517727 Rounded Inexact +precision: 211 +power_eq16 power_eq -525338921683739736490582483132948984202790665376110323601659474129892514523290494503515205005638100490708290921903946386424425280123e-170758465 -> NaN Invalid_operation +precision: 224 +power_eq17 power_eq -646746209836261797477940103476570791348361208967438329900241534505436798073795989031572428 -> 0E-425000223 Underflow Rounded Subnormal Clamped Inexact +precision: 96 +power_eq18 power_eq -.645300907286e-220601334 -> NaN Invalid_operation +precision: 188 +power_eq19 power_eq -Inf -> NaN Invalid_operation +precision: 106 +power_eq20 power_eq -3663240987582367577886398514613731702483866652446941115635573791149545934054602730471.11641988 -> NaN Invalid_operation +precision: 247 +power_eq21 power_eq -488785302819283812385321.655881216348345989192129590859127321051665604182037547377547980482112158452391460908228971 -> NaN Invalid_operation +precision: 276 +power_eq22 power_eq 809675716902293177921418662285213497928073105525829612803544674808011480451348e218151256 -> Infinity Overflow Rounded Inexact +precision: 28 +power_eq23 power_eq -6248633922746878680889354 -> 0E-425000027 Underflow Rounded Subnormal Clamped Inexact +precision: 238 +power_eq24 power_eq -1614388618270226993686.40709176831708861390337724386228227237316101111618604608140410991408961442976638530084060726966968986302379217727396622631077157133525750616874020328736 -> NaN Invalid_operation +precision: 201 +power_eq25 power_eq -82636933206574875204854301055127131926424682626404278252847728377770928210549737101108800894549951893717280567 -> -0E-425000200 Underflow Rounded Subnormal Clamped Inexact +precision: 118 +power_eq26 power_eq -Inf -> NaN Invalid_operation +precision: 80 +power_eq27 power_eq 9178.369e+395285776 -> Infinity Overflow Rounded Inexact +precision: 116 +power_eq28 power_eq -63942.639 -> NaN Invalid_operation +precision: 27 +power_eq29 power_eq -7084704957075 -> -0E-425000026 Underflow Rounded Subnormal Clamped Inexact +precision: 215 +power_eq30 power_eq +947556.3619384524807202260E-369312200 -> 1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Rounded Inexact +precision: 226 +power_eq31 power_eq 7746853910633777740534281162440156284189896229141911247918482240083757040587011515345857257831273116288193903723544589819776591001955484373273801323959673534294617935101567810121294150351893788232912006013616 -> Infinity Overflow Rounded Inexact +precision: 224 +power_eq32 power_eq -61971951038050811001678937367477737096187202571352991814082377666779711113283061950090867569187416563136672404032645048631009136874434852842872913641279696056002704765717398667351620636673213989487.959764049373000140002 -> NaN Invalid_operation +precision: 38 +power_eq33 power_eq 9953781420830927411 -> Infinity Overflow Rounded Inexact +precision: 289 +power_eq34 power_eq -8024212522590172944741555.6757732305367379438367781361522367738465 -> NaN Invalid_operation +precision: 109 +power_eq35 power_eq 4960986022345427488469912397884662 -> Infinity Overflow Rounded Inexact +precision: 136 +power_eq36 power_eq 6868044517077647560217354096937951848583318074269698081426902694890142526067332991230019598323795875220348576 -> Infinity Overflow Rounded Inexact +precision: 5 +power_eq37 power_eq +8363. -> 5.1786E+32802 Rounded Inexact +precision: 168 +power_eq38 power_eq -.42913933632491 -> NaN Invalid_operation +precision: 167 +power_eq39 power_eq +.441980445298355222892e-39157041 -> 1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Rounded Inexact +precision: 166 +power_eq40 power_eq 1062795436509.382005383 -> Infinity Overflow Rounded Inexact +precision: 215 +power_eq41 power_eq 385201.55438157611614416e+407597746 -> Infinity Overflow Rounded Inexact +precision: 130 +power_eq42 power_eq -614947914649136270527999685021198289254338565927 -> -0E-425000129 Underflow Rounded Subnormal Clamped Inexact +precision: 193 +power_eq43 power_eq +Infinity -> Infinity +precision: 299 +power_eq44 power_eq +98281235535742014523207127191858293883053132876153636.4774606 -> Infinity Overflow Rounded Inexact +precision: 94 +power_eq45 power_eq -557994841532689189203642.24742232402628996802e-337538473 -> NaN Invalid_operation +precision: 43 +power_eq46 power_eq -481.751468610E8173587 -> 0E-425000042 Underflow Rounded Subnormal Clamped Inexact +precision: 105 +power_eq47 power_eq -.68225952093769506095028114003381731997477752756768746714318295 -> NaN Invalid_operation +precision: 207 +power_eq48 power_eq -6426273160092084195699730168209478619977624180370830772749255686020854532521221997654977938238514026859656168480758073523183E+355179861 -> 0E-425000206 Underflow Rounded Subnormal Clamped Inexact +precision: 113 +power_eq49 power_eq -124455889531136908341892905703077046995573210949680941403805789266 -> 0E-425000112 Underflow Rounded Subnormal Clamped Inexact +precision: 52 +power_eq50 power_eq 858258771.4469756966951870E-2354480 -> 1.000000000000000000000000000000000000000000000000000 Rounded Inexact +precision: 150 +power_eq51 power_eq +6468465433963.39062983529295319863396794950631136344876579254 -> Infinity Overflow Rounded Inexact +precision: 292 +power_eq52 power_eq -.749188367127585181056545333056228447445847725060006364599672456558040630550009838439063085918403729106169813259299022362325 -> NaN Invalid_operation +precision: 76 +power_eq53 power_eq -4252446136.387206935383 -> NaN Invalid_operation +precision: 23 +power_eq54 power_eq Inf -> Infinity +precision: 278 +power_eq55 power_eq -189203989688114997249296813664864978647604091461309592270474709397479773702904004330576920548003557768670934839256121811707573.5666221741738813494344300292428156380052429260801522982821740869413255616336057072787988 -> NaN Invalid_operation +precision: 162 +power_eq56 power_eq 864016252063876082648653973042182781941479265337756514124654115716878264549505228.8617898946195005816473871887459149561634425121063354 -> Infinity Overflow Rounded Inexact +precision: 39 +power_eq57 power_eq 71524701242299606856477947129663e-344024142 -> 1.00000000000000000000000000000000000000 Rounded Inexact +precision: 282 +power_eq58 power_eq -46386995328710669012824195985058198399976013576994886401291363022427791619608681160948065757196688865481781317007553127108313935471925280739004994496311204364246474450627742832748149241245118782760105047195247921190690973 -> -0E-425000281 Underflow Rounded Subnormal Clamped Inexact +precision: 208 +power_eq59 power_eq 9990057113161832293663359984002792445701294382606492455282402330220701671749812829194014987228100424598772925894051139581470450406688533329071090462468738320698866532524246522291 -> Infinity Overflow Rounded Inexact +precision: 262 +power_eq60 power_eq -529583657531387298997148579887511426101990832277861182505975986493636094040294257044950804147765458024347235286552028991558064390280025377814707657491618909781279915692281660701.295404275661240968806045948871676817591794 -> NaN Invalid_operation +precision: 76 +power_eq61 power_eq 458040718355789904374260920828382011143543106 -> Infinity Overflow Rounded Inexact +precision: 131 +power_eq62 power_eq +9843580022 -> Infinity Overflow Rounded Inexact +precision: 26 +power_eq63 power_eq +64339362182596551924736e-73800091 -> 1.0000000000000000000000000 Rounded Inexact +precision: 217 +power_eq64 power_eq +22222777114312231723267742251440087315952965328923503856501.99237838007582820384651274407935117 -> Infinity Overflow Rounded Inexact +precision: 26 +power_eq65 power_eq -80785500910143210230678632E316722316 -> 0E-425000025 Underflow Rounded Subnormal Clamped Inexact +precision: 11 +power_eq66 power_eq 717156 -> 2.8373376802E+4199388 Rounded Inexact +precision: 220 +power_eq67 power_eq -70849125829842132928349475801239873987335215797973192063932100794933617579828301641076489413182064720177135748641197808466156097953341534822946973745570647195236565573444474493791532 -> 0E-425000219 Underflow Rounded Subnormal Clamped Inexact +precision: 8 +power_eq68 power_eq -50178e-395411401 -> NaN Invalid_operation +precision: 99 +power_eq69 power_eq +1.56899942010995333560226965336967016741799925540741002315042952171966626797322414809721 -> 2.02736541336651896017607024055007722391834603978115506886055562227915484297277873483652658809892840 Rounded Inexact +precision: 144 +power_eq70 power_eq +2235.319607 -> 6.99100985149423923551679946658669320898053559536480468516629394350510547973555114211625522034865583517457915522520135014200955432364177364666121E+7486 Rounded Inexact +precision: 83 +power_eq71 power_eq +92889340341466473427642188192310916 -> Infinity Overflow Rounded Inexact +precision: 164 +power_eq72 power_eq +Infinity -> Infinity +precision: 95 +power_eq73 power_eq .29E+406102454 -> Infinity Overflow Rounded Inexact +precision: 151 +power_eq74 power_eq Inf -> Infinity +precision: 149 +power_eq75 power_eq -312501715771797056323693052854464661893964546965923092988270402739760883857346005440345657724923840468525460664271393051921707967135 -> -0E-425000148 Underflow Rounded Subnormal Clamped Inexact +precision: 84 +power_eq76 power_eq -1041082330465960398675002731965116868E-292534699 -> NaN Invalid_operation +precision: 79 +power_eq77 power_eq -76329043381040339104865157406496790088121010109080110e-148953360 -> NaN Invalid_operation +precision: 113 +power_eq78 power_eq -28872132833606322881390721714017884367320865292169251609509133923.61731518045381138595046559654721070041706314756 -> NaN Invalid_operation +precision: 240 +power_eq79 power_eq 78043510277411598061431863359174008907638492457321459123426890640339880188815887108410370221271884058776462235170455752475803143383511566E-110795004 -> 1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Rounded Inexact +precision: 94 +power_eq80 power_eq -8336946879.93129621022762347949912851 -> NaN Invalid_operation +precision: 225 +power_eq81 power_eq 3287278458263 -> Infinity Overflow Rounded Inexact +precision: 185 +power_eq82 power_eq +21285032370392956545830231140691727083632.212230981204347930752284947324577742651323907282870084991838940675457669537104808839793897618371701373147513371679586214449482622E-76639533 -> 1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Rounded Inexact +precision: 40 +power_eq83 power_eq 237 -> 6.536691733735010979201401374972481645578E+562 Rounded Inexact +precision: 275 +power_eq84 power_eq -561650490627777050357556698794902260529882582572433041185785311130776380381168332820247983805818125568329510407488407245060662244385043372378006798225445680169574299496230735682254433945074843062147114533330179623823713091130e+183736831 -> 0E-425000274 Underflow Rounded Subnormal Clamped Inexact +precision: 177 +power_eq85 power_eq -.8895076390129096320992421937362732054439E-113846363 -> NaN Invalid_operation +precision: 100 +power_eq86 power_eq -Infinity -> NaN Invalid_operation +precision: 129 +power_eq87 power_eq +488031399213940017990273147.461194199649184545575958035444040702105446238440920404159356601038376 -> Infinity Overflow Rounded Inexact +precision: 230 +power_eq88 power_eq -2216513.7 -> NaN Invalid_operation +precision: 261 +power_eq89 power_eq 4406905470108275471817759256150927651075467258186882189468768.57346004480914039036137898855304846021884747521627854302872633896760499987283945352645486174165493226035711091040156221145018362787360876 -> Infinity Overflow Rounded Inexact +precision: 216 +power_eq90 power_eq .414851898851124312898581033460349927926858946996600574248877518263743273027105367570072116394840349312 -> 0.694196180155363032046662671043094604564297923084684698676006928759392240568388191727106381242778131770854032954814135133799631509910068536843195346417829931885644564658619813573400226692342128231577981131028578316068 Rounded Inexact +precision: 200 +power_eq91 power_eq +.2411983775347998185262137949927100768461090511515828619222298742118902667394019232482894360351107 -> 0.70962630033086715313348013736373556269497866351224587428690094234906829768843145224483959303898824955211759929288708339580522537790496009103198593207087198182343415234146897579363345533498120609830484 Rounded Inexact +precision: 185 +power_eq92 power_eq -544576857633923754363120488732775.4614727812147693634146223959575085654632536429396791526334512722 -> NaN Invalid_operation +precision: 7 +power_eq93 power_eq -795 -> -1.614852E-2306 Rounded Inexact +precision: 165 +power_eq94 power_eq -26969200337161089684886514719133231865043981663694117406871833142976471147135094925485802413599641522886963482403019356260104405377513e296074619 -> 0E-425000164 Underflow Rounded Subnormal Clamped Inexact +precision: 37 +power_eq95 power_eq 9750398705839207111297424212 -> Infinity Overflow Rounded Inexact +precision: 185 +power_eq96 power_eq -97249147.888816223439395644146 -> NaN Invalid_operation +precision: 217 +power_eq97 power_eq -740224832379721210047010683914507011287418493682712878709012798725681444.245154703994169461347 -> NaN Invalid_operation +precision: 262 +power_eq98 power_eq +57843250191089471286540010894256588908697072726050945329408200344447468966452266743574363981784000300041145488916127068273122224761859432617052712825758665920155664640329688232661148137625978648897929803382542108676952862441 -> Infinity Overflow Rounded Inexact +precision: 289 +power_eq99 power_eq -746575366888433451617578285843158580344519395226425074225881100805991586 -> 0E-425000288 Underflow Rounded Subnormal Clamped Inexact +precision: 91 +quantize_eq0 quantize_eq 290548.8E-1423999 -> 2.905488E-1423994 +precision: 44 +quantize_eq1 quantize_eq +448658.9 -> 448658.9 +precision: 172 +quantize_eq2 quantize_eq -817350403193055 -> -817350403193055 +precision: 244 +quantize_eq3 quantize_eq -Inf -> -Infinity +precision: 2 +quantize_eq4 quantize_eq 32e+69609967 -> 3.2E+69609968 +precision: 10 +quantize_eq5 quantize_eq +32263516e-26480836 -> 3.2263516E-26480829 +precision: 15 +quantize_eq6 quantize_eq +5037 -> 5037 +precision: 209 +quantize_eq7 quantize_eq -7110403823184112878559966189490296022439025870992698565813432699367444117759994118799284821249245701646312303E-57210732 -> -7.110403823184112878559966189490296022439025870992698565813432699367444117759994118799284821249245701646312303E-57210624 +precision: 65 +quantize_eq8 quantize_eq -5186499923298793145080500717723571890228108501e+162460105 -> -5.186499923298793145080500717723571890228108501E+162460150 +precision: 111 +quantize_eq9 quantize_eq -9.2 -> -9.2 +precision: 259 +quantize_eq10 quantize_eq +9257121.113589624748942605425565850754466273753250228279028856152878106989447501950674164300105107897483978307244536 -> 9257121.113589624748942605425565850754466273753250228279028856152878106989447501950674164300105107897483978307244536 +precision: 188 +quantize_eq11 quantize_eq -70559695905893215599571846001514545747928179442544295173868393954.4580823107774609377068010040232999511413831272806254735134555500879908242697072175558570432895061443439123431e+310037880 -> -7.05596959058932155995718460015145457479281794425442951738683939544580823107774609377068010040232999511413831272806254735134555500879908242697072175558570432895061443439123431E+310037944 +precision: 69 +quantize_eq12 quantize_eq -51883582238430845134659126296011415258707432931040996796542941962646 -> -51883582238430845134659126296011415258707432931040996796542941962646 +precision: 92 +quantize_eq13 quantize_eq -981899 -> -981899 +precision: 57 +quantize_eq14 quantize_eq +17536.7223004796422372E77707598 -> 1.75367223004796422372E+77707602 +precision: 193 +quantize_eq15 quantize_eq -8490302843606946392952930760712102510257728717487323000598215037990407864613031204696740005201409124274702686586196749357167824674002 -> -8490302843606946392952930760712102510257728717487323000598215037990407864613031204696740005201409124274702686586196749357167824674002 +precision: 264 +quantize_eq16 quantize_eq +381637552007995294.96394288831521584185220620036368925619408732281416433376040138625591822377458404761200291477e108446804 -> 3.8163755200799529496394288831521584185220620036368925619408732281416433376040138625591822377458404761200291477E+108446821 +precision: 60 +quantize_eq17 quantize_eq +213210180862012996638951529383495534.501239729617 -> 213210180862012996638951529383495534.501239729617 +precision: 170 +quantize_eq18 quantize_eq 827189983197259024088437859212300905507741990105054602377853307574907295886063673334297256548221067386309742664250174624370396962525172556829 -> 827189983197259024088437859212300905507741990105054602377853307574907295886063673334297256548221067386309742664250174624370396962525172556829 +precision: 56 +quantize_eq19 quantize_eq Inf -> Infinity +precision: 218 +quantize_eq20 quantize_eq +68250709883801207250964395068723791548 -> 68250709883801207250964395068723791548 +precision: 225 +quantize_eq21 quantize_eq -Infinity -> -Infinity +precision: 278 +quantize_eq22 quantize_eq +Inf -> Infinity +precision: 148 +quantize_eq23 quantize_eq 27919236890712487919250219194087963193722704772793231879401933900356412060593917244829241820836023255352025560401776396450980660 -> 27919236890712487919250219194087963193722704772793231879401933900356412060593917244829241820836023255352025560401776396450980660 +precision: 132 +quantize_eq24 quantize_eq 898437048931164322050895007405972769526838620886035922465166877145702493523935255651139600514 -> 898437048931164322050895007405972769526838620886035922465166877145702493523935255651139600514 +precision: 139 +quantize_eq25 quantize_eq 17412 -> 17412 +precision: 67 +quantize_eq26 quantize_eq +867243424633396550443015593215676999 -> 867243424633396550443015593215676999 +precision: 176 +quantize_eq27 quantize_eq -80120978957606977020539E-282230056 -> -8.0120978957606977020539E-282230034 +precision: 19 +quantize_eq28 quantize_eq -95542.4E+76419170 -> -9.55424E+76419174 +precision: 175 +quantize_eq29 quantize_eq -2978941608891203266725236855879475011965976301737778658631009733041851274136588549807827845331811445296522795865182509841821182888 -> -2978941608891203266725236855879475011965976301737778658631009733041851274136588549807827845331811445296522795865182509841821182888 +precision: 48 +quantize_eq30 quantize_eq Infinity -> Infinity +precision: 67 +quantize_eq31 quantize_eq 8465122901462739863179190680617120915966139118 -> 8465122901462739863179190680617120915966139118 +precision: 256 +quantize_eq32 quantize_eq +7081079532214410002686780339791718594116093372143539480542373957104211077383709200285271820899501962.18723672986351461682261971721667876237991E+389633177 -> 7.08107953221441000268678033979171859411609337214353948054237395710421107738370920028527182089950196218723672986351461682261971721667876237991E+389633276 +precision: 300 +quantize_eq33 quantize_eq -.295625642533485547554661278791138705733987026103059801914244424613869528559802038284705063217446258211430460565211581659309295263691124087618563179517772081759244589862864506735875255421193924473722271563519559612563274475412905110680335327644682436747623541 -> -0.295625642533485547554661278791138705733987026103059801914244424613869528559802038284705063217446258211430460565211581659309295263691124087618563179517772081759244589862864506735875255421193924473722271563519559612563274475412905110680335327644682436747623541 +precision: 222 +quantize_eq34 quantize_eq -8592981399190121374843148326814236994640255685216980769310460163941611630012410326314.83319393315955090224043726675936495978434716197710305222884611896426668895919819612 -> -8592981399190121374843148326814236994640255685216980769310460163941611630012410326314.83319393315955090224043726675936495978434716197710305222884611896426668895919819612 +precision: 197 +quantize_eq35 quantize_eq -75384980585512904024903701e321225803 -> -7.5384980585512904024903701E+321225828 +precision: 219 +quantize_eq36 quantize_eq -81525227625848252203415017991558387737618358076960364771269846232922220257257375456297493038456.772814904867541382782077606549742492930513714322692676326494063582998042541276 -> -81525227625848252203415017991558387737618358076960364771269846232922220257257375456297493038456.772814904867541382782077606549742492930513714322692676326494063582998042541276 +precision: 115 +quantize_eq37 quantize_eq -Inf -> -Infinity +precision: 269 +quantize_eq38 quantize_eq -3554595657727e-414560976 -> -3.554595657727E-414560964 +precision: 154 +quantize_eq39 quantize_eq 46168224090265929928726.46566082349236072049364565338434224619764824468223781162339659895041814086469317932529162318326009343844800685647248756805250611e+252046439 -> 4.616822409026592992872646566082349236072049364565338434224619764824468223781162339659895041814086469317932529162318326009343844800685647248756805250611E+252046461 +precision: 56 +quantize_eq40 quantize_eq -.1583e32320641 -> -1.583E+32320640 +precision: 53 +quantize_eq41 quantize_eq +sNaN -> NaN Invalid_operation +precision: 40 +quantize_eq42 quantize_eq -79625642943719361401339459726419 -> -79625642943719361401339459726419 +precision: 58 +quantize_eq43 quantize_eq 5791069763096633158 -> 5791069763096633158 +precision: 260 +quantize_eq44 quantize_eq 7760821663097539129401711393960938069306252420460185059 -> 7760821663097539129401711393960938069306252420460185059 +precision: 180 +quantize_eq45 quantize_eq -642181420078075504488075848907596167527537520458728451095988889150607360440904623640199990122225343532653257820529630016422399917940818470695093451005e+92541312 -> -6.42181420078075504488075848907596167527537520458728451095988889150607360440904623640199990122225343532653257820529630016422399917940818470695093451005E+92541461 +precision: 162 +quantize_eq46 quantize_eq 56E-312226813 -> 5.6E-312226812 +precision: 255 +quantize_eq47 quantize_eq 97313463012301454295898013252247275769894565492321137086370724532279401185048728272151151993856619570495E-276655768 -> 9.7313463012301454295898013252247275769894565492321137086370724532279401185048728272151151993856619570495E-276655665 +precision: 273 +quantize_eq48 quantize_eq -Infinity -> -Infinity +precision: 18 +quantize_eq49 quantize_eq 746881 -> 746881 +precision: 43 +quantize_eq50 quantize_eq sNaN -> NaN Invalid_operation +precision: 189 +quantize_eq51 quantize_eq 8984060206418449194333365704085389598788919468437229423998908913847578327559146579636282750131729159256368090630608987121305185285893106660281498862120375304523091899451 -> 8984060206418449194333365704085389598788919468437229423998908913847578327559146579636282750131729159256368090630608987121305185285893106660281498862120375304523091899451 +precision: 189 +quantize_eq52 quantize_eq +76005286894E-270142113 -> 7.6005286894E-270142103 +precision: 73 +quantize_eq53 quantize_eq -442225789279217247841545246112132 -> -442225789279217247841545246112132 +precision: 279 +quantize_eq54 quantize_eq -873119186969684637144787064261158396281514978635433975956334760185192555937425516463737937353576398977098601095927822006277434026691647994183380e+239366196 -> -8.73119186969684637144787064261158396281514978635433975956334760185192555937425516463737937353576398977098601095927822006277434026691647994183380E+239366339 +precision: 128 +quantize_eq55 quantize_eq -56695385467 -> -56695385467 +precision: 68 +quantize_eq56 quantize_eq -.418 -> -0.418 +precision: 84 +quantize_eq57 quantize_eq -5502535390345288021893754390591636093616595153498574270169 -> -5502535390345288021893754390591636093616595153498574270169 +precision: 169 +quantize_eq58 quantize_eq 85336073168919221817964620839167171778748376135317320836679.3953193164418142623329405839555859412166463745239800577525647 -> 85336073168919221817964620839167171778748376135317320836679.3953193164418142623329405839555859412166463745239800577525647 +precision: 204 +quantize_eq59 quantize_eq -.2345866662119098 -> -0.2345866662119098 +precision: 225 +quantize_eq60 quantize_eq -79653854654312886692600743023506553486019965768460326381225277010219813500608260231260086985321417663705652589150947014925072649495054229344434124785389676294124837859087329727585840601212739323 -> -79653854654312886692600743023506553486019965768460326381225277010219813500608260231260086985321417663705652589150947014925072649495054229344434124785389676294124837859087329727585840601212739323 +precision: 132 +quantize_eq61 quantize_eq +.62004820146664440148888872267749940238528462703658e-169618687 -> 6.2004820146664440148888872267749940238528462703658E-169618688 +precision: 11 +quantize_eq62 quantize_eq -.373 -> -0.373 +precision: 235 +quantize_eq63 quantize_eq -Infinity -> -Infinity +precision: 189 +quantize_eq64 quantize_eq 1101572012730753945748851934089962480689976178136800312429258608768326195254210650726774200883533940320397491882268210277989743025494490617613084189822235411665068767197613257824493001249 -> 1101572012730753945748851934089962480689976178136800312429258608768326195254210650726774200883533940320397491882268210277989743025494490617613084189822235411665068767197613257824493001249 +precision: 201 +quantize_eq65 quantize_eq -657550289254.3689081208965240655 -> -657550289254.3689081208965240655 +precision: 137 +quantize_eq66 quantize_eq .421534969074981751671607662863760112327986982775027612734990245584754 -> 0.421534969074981751671607662863760112327986982775027612734990245584754 +precision: 190 +quantize_eq67 quantize_eq +97558927737331.5611054827E+328198930 -> 9.75589277373315611054827E+328198943 +precision: 149 +quantize_eq68 quantize_eq .847525034910320202380420232472743755971510884980824473750656705870728509737665390215628836871333552e-143267263 -> 8.47525034910320202380420232472743755971510884980824473750656705870728509737665390215628836871333552E-143267264 +precision: 165 +quantize_eq69 quantize_eq +sNaN722570960055478324504603248188543 -> NaN722570960055478324504603248188543 Invalid_operation +precision: 206 +quantize_eq70 quantize_eq -.6981388298877867281880647805288436105218625997650 -> -0.6981388298877867281880647805288436105218625997650 +precision: 183 +quantize_eq71 quantize_eq -472205576406261364347325912306387892644523093430916242430469185531568436134410723488275435E+401753669 -> -4.72205576406261364347325912306387892644523093430916242430469185531568436134410723488275435E+401753758 +precision: 181 +quantize_eq72 quantize_eq .47887516418e-33315711 -> 4.7887516418E-33315712 +precision: 95 +quantize_eq73 quantize_eq -5493848330244028419095598833820407035740045960357415894560237906027069840529776e-327618667 -> -5.493848330244028419095598833820407035740045960357415894560237906027069840529776E-327618589 +precision: 29 +quantize_eq74 quantize_eq +84 -> 84 +precision: 229 +quantize_eq75 quantize_eq -355354928668150e-253573304 -> -3.55354928668150E-253573290 +precision: 297 +quantize_eq76 quantize_eq -sNaN -> -NaN Invalid_operation +precision: 7 +quantize_eq77 quantize_eq 74.160 -> 74.160 +precision: 239 +quantize_eq78 quantize_eq -832716912212611398841103935141846054730095929463051195059e-101574675 -> -8.32716912212611398841103935141846054730095929463051195059E-101574619 +precision: 147 +quantize_eq79 quantize_eq Inf -> Infinity +precision: 260 +quantize_eq80 quantize_eq Inf -> Infinity +precision: 233 +quantize_eq81 quantize_eq -96065312091573928416203623119377645877953467097495700274695560821318565497938901152871159834267148640115973613325662240776786544040013423996634697759749532992880673.779 -> -96065312091573928416203623119377645877953467097495700274695560821318565497938901152871159834267148640115973613325662240776786544040013423996634697759749532992880673.779 +precision: 146 +quantize_eq82 quantize_eq -Infinity -> -Infinity +precision: 216 +quantize_eq83 quantize_eq +661.68812974381 -> 661.68812974381 +precision: 127 +quantize_eq84 quantize_eq -158939534424733925067343631640.1362E-162145398 -> -1.589395344247339250673436316401362E-162145369 +precision: 150 +quantize_eq85 quantize_eq +Infinity -> Infinity +precision: 120 +quantize_eq86 quantize_eq 8277132368480015104593332435780392067153227933693935530303308011919268e-130623500 -> 8.277132368480015104593332435780392067153227933693935530303308011919268E-130623431 +precision: 90 +quantize_eq87 quantize_eq 795351e-29931705 -> 7.95351E-29931700 +precision: 278 +quantize_eq88 quantize_eq +8698516181841060137789032610358005286351014389903188353942331434071120204295201449446518297268E-133572772 -> 8.698516181841060137789032610358005286351014389903188353942331434071120204295201449446518297268E-133572679 +precision: 139 +quantize_eq89 quantize_eq -Inf -> -Infinity +precision: 152 +quantize_eq90 quantize_eq 6.32648220e-279816178 -> 6.32648220E-279816178 +precision: 131 +quantize_eq91 quantize_eq +2479995.4716469 -> 2479995.4716469 +precision: 224 +quantize_eq92 quantize_eq -664584248679738325573034158611231917557028904339360014283015490957188345795295420173546.7619457501319848388250378e+65584375 -> -6.645842486797383255730341586112319175570289043393600142830154909571883457952954201735467619457501319848388250378E+65584461 +precision: 29 +quantize_eq93 quantize_eq 43466. -> 43466 +precision: 149 +quantize_eq94 quantize_eq -8840149333425472810331592257345296170.1388756404577438040650971971379203393329026856787867368393723930299016139230505118091670442561290209422144 -> -8840149333425472810331592257345296170.1388756404577438040650971971379203393329026856787867368393723930299016139230505118091670442561290209422144 +precision: 142 +quantize_eq95 quantize_eq -695184463263795170192277714865251447089248895571793508163996910677.42396682340910732633643239516080034295819989969334203684655125777672157937 -> -695184463263795170192277714865251447089248895571793508163996910677.42396682340910732633643239516080034295819989969334203684655125777672157937 +precision: 111 +quantize_eq96 quantize_eq +60536206206365541015275650304551131987295639313E+158900418 -> 6.0536206206365541015275650304551131987295639313E+158900464 +precision: 193 +quantize_eq97 quantize_eq +58153113777083591013856477275365807019410976749417644125139810511571640112415670679051807726795736303887839695 -> 58153113777083591013856477275365807019410976749417644125139810511571640112415670679051807726795736303887839695 +precision: 161 +quantize_eq98 quantize_eq -4197958964e-263966418 -> -4.197958964E-263966409 +precision: 161 +quantize_eq99 quantize_eq -49736044103750520902978 -> -49736044103750520902978 +precision: 110 +remainder_eq0 remainder_eq -Inf -> NaN Invalid_operation +precision: 16 +remainder_eq1 remainder_eq sNaN460775004703274183220066311976364703831583353664689242969039224111678635108913486986092583934266 -> NaN6986092583934266 Invalid_operation +precision: 57 +remainder_eq2 remainder_eq -975534984681769723475932500908516678693056e-17495830 -> -0E-17495830 +precision: 135 +remainder_eq3 remainder_eq +11977297089104076419957660197153508631.85895636320 -> 0E-11 +precision: 226 +remainder_eq4 remainder_eq 917511712849866739046179678409197877089804750534939633061801314093861452333164960426558969900434463678797453330475203252600861226352358315357986517716731814228759606680967352499623E356949449 -> 0E+356949449 +precision: 174 +remainder_eq5 remainder_eq 3458344492050263669709423365061545310537949301960653627511283593054174521508359 -> 0 +precision: 128 +remainder_eq6 remainder_eq -858516401039691011143.e-336363137 -> -0E-336363137 +precision: 173 +remainder_eq7 remainder_eq -7255455584162 -> -0 +precision: 132 +remainder_eq8 remainder_eq 699079.915090065914566157803030258979118185005129013885092078635994E312948369 -> 0E+312948309 +precision: 237 +remainder_eq9 remainder_eq +sNaN -> NaN Invalid_operation +precision: 65 +remainder_eq10 remainder_eq -5321437270901756491141490862881674308176189 -> -0 +precision: 194 +remainder_eq11 remainder_eq -5784322374.20470188486123903878566751572960E-308319571 -> -0E-308319603 +precision: 171 +remainder_eq12 remainder_eq +858067516703710224423613996610.6297533512237212335565098014661651521527955810103863158843918 -> 0E-61 +precision: 52 +remainder_eq13 remainder_eq 641061589793255425134882 -> 0 +precision: 199 +remainder_eq14 remainder_eq 980528190474441136528292314442581300939908364007049627730020434212520789154374427565946318379049056614451716784597043358906807481040069787495294030622792124482423320439473 -> 0 +precision: 246 +remainder_eq15 remainder_eq -437146753750538666226.86724944843262549715601173476958592705435039251979006955952993888469760807155263827765 -> -0E-86 +precision: 255 +remainder_eq16 remainder_eq +Infinity -> NaN Invalid_operation +precision: 16 +remainder_eq17 remainder_eq -.16876217684E325803225 -> -0E+325803214 +precision: 91 +remainder_eq18 remainder_eq +99380629080393406921828180591.339710022002043958e+316275212 -> 0E+316275194 +precision: 64 +remainder_eq19 remainder_eq +7741759432242076336561604211630837.2686904672359269E+373567008 -> 0E+373566992 +precision: 39 +remainder_eq20 remainder_eq -.23530609365782394431955602042586174325 -> -0E-38 +precision: 54 +remainder_eq21 remainder_eq +5580649463769301037154465855.853553425 -> 0E-9 +precision: 65 +remainder_eq22 remainder_eq +848215311974760.1896 -> 0.0000 +precision: 161 +remainder_eq23 remainder_eq 71 -> 0 +precision: 284 +remainder_eq24 remainder_eq -.7072091376479685698583057329845753721934501542790734127589731946196508218831187850290352099065012324773700122366310746623178640100946190743876831029921335811958758845967599839742032141243740351 -> -0E-193 +precision: 73 +remainder_eq25 remainder_eq -4726046499902744114746912591670560820743532897606469074256899497588065e-9554964 -> -0E-9554964 +precision: 18 +remainder_eq26 remainder_eq +357.6E+67804727 -> 0E+67804726 +precision: 77 +remainder_eq27 remainder_eq -55.24905436713541297E-130078901 -> -0E-130078918 +precision: 127 +remainder_eq28 remainder_eq +Infinity -> NaN Invalid_operation +precision: 112 +remainder_eq29 remainder_eq NaN30426854998464840958400892852452426103588824455640339687801907463636142341 -> NaN30426854998464840958400892852452426103588824455640339687801907463636142341 +precision: 53 +remainder_eq30 remainder_eq -9253353344734188638867070934361717914973114450 -> -0 +precision: 37 +remainder_eq31 remainder_eq .55455578594282424624221800003080949 -> 0E-35 +precision: 8 +remainder_eq32 remainder_eq +89.35 -> 0.00 +precision: 27 +remainder_eq33 remainder_eq 3264844e+96266630 -> 0E+96266630 +precision: 102 +remainder_eq34 remainder_eq -2323414000053591731599322541525894545861646450094894881377162120133837292 -> -0 +precision: 166 +remainder_eq35 remainder_eq -.77640809450679565805484129084918602294832660098795769503530220792269916940669923295086265143e-332500918 -> -0E-332501010 +precision: 174 +remainder_eq36 remainder_eq +645677348981702821927195273471094748579708019442275160166379368053775803829883220100839284026228212 -> 0 +precision: 23 +remainder_eq37 remainder_eq 995182334027683 -> 0 +precision: 245 +remainder_eq38 remainder_eq -9372380644555712022768847328350689238489885344106398.9 -> -0.0 +precision: 199 +remainder_eq39 remainder_eq -Inf -> NaN Invalid_operation +precision: 2 +remainder_eq40 remainder_eq -77E-156487829 -> -0E-156487829 +precision: 127 +remainder_eq41 remainder_eq -59387283599480769357566503350171.71635096387731730844462170525112666 -> -0E-35 +precision: 113 +remainder_eq42 remainder_eq -48551354477143543315722383431248161932869775373358362634908759943811083068515868558 -> -0 +precision: 8 +remainder_eq43 remainder_eq 20.927e-75802171 -> 0E-75802174 +precision: 153 +remainder_eq44 remainder_eq +5815105370766934593828371504761474394599166930712722774190759491654588985260682430887013263803680811953300897479607560970456986007530528468285076155966E+272586697 -> 0E+272586697 +precision: 216 +remainder_eq45 remainder_eq Inf -> NaN Invalid_operation +precision: 197 +remainder_eq46 remainder_eq -470447226693385359736266360468463709190881728270352081504992607978062430383873076896060295781842042003705 -> -0 +precision: 2 +remainder_eq47 remainder_eq Inf -> NaN Invalid_operation +precision: 112 +remainder_eq48 remainder_eq -354375269055232670035 -> -0 +precision: 232 +remainder_eq49 remainder_eq -.9732718237088027981324527227773153536588896235566611669878790394181489671240837345321170239051670100980404441353E-278467861 -> -0E-278467973 +precision: 245 +remainder_eq50 remainder_eq 71278354209089966745282314144000e-49927244 -> 0E-49927244 +precision: 16 +remainder_eq51 remainder_eq 2454533923130428 -> 0 +precision: 253 +remainder_eq52 remainder_eq +595684290619560078145745979844632933412247260703383271015595445182021708731622226027818685374146221141351490220453613727110654886258612352261608873251794347605104321438062064077491104903296853638914980e-386089592 -> 0E-386089592 +precision: 145 +remainder_eq53 remainder_eq .566778430877492098783342686491671899833864286168021327770229484849E-171419646 -> 0E-171419712 +precision: 299 +remainder_eq54 remainder_eq -3840050308446959919687768338652332513866.620699 -> -0.000000 +precision: 192 +remainder_eq55 remainder_eq -288182183667133111742908679996431726641.98448103449165878880521944263560312851088843987 -> -0E-47 +precision: 57 +remainder_eq56 remainder_eq 19128106043228601979059.68324853474437975694278 -> 0E-23 +precision: 147 +remainder_eq57 remainder_eq +154143997202760519223936600647524167848367263290608269277044038696.18e+94606684 -> 0E+94606682 +precision: 94 +remainder_eq58 remainder_eq -9798300881913885766710055041723422429836607149112315261998070208079792625583445 -> -0 +precision: 154 +remainder_eq59 remainder_eq -6.21 -> -0.00 +precision: 96 +remainder_eq60 remainder_eq .5368889440634422411076839640469548640938155532542108110781184445879563070877358470 -> 0E-82 +precision: 253 +remainder_eq61 remainder_eq -Infinity -> NaN Invalid_operation +precision: 252 +remainder_eq62 remainder_eq +532351335430389133751565525134128756681667264663653664692205611845411869719122830484512265087578514337810100904203432E125119435 -> 0E+125119435 +precision: 21 +remainder_eq63 remainder_eq +6588.52176383E-181868784 -> 0E-181868792 +precision: 137 +remainder_eq64 remainder_eq 7803230527021687086308141479664389053923001443026964470174249340321653883771530096717540790949130492206549916021088049 -> 0 +precision: 300 +remainder_eq65 remainder_eq -7046629152088889914955727605.82526380134373568351272791636146275588004922613033482637382291365652243788922897863499619969273823815138706532329129049050160382455735507270481 -> -0E-143 +precision: 251 +remainder_eq66 remainder_eq +Inf -> NaN Invalid_operation +precision: 154 +remainder_eq67 remainder_eq -Infinity -> NaN Invalid_operation +precision: 23 +remainder_eq68 remainder_eq -964780019 -> -0 +precision: 156 +remainder_eq69 remainder_eq 515857212280797360533104406818011007679030608894614486884155085776479483339307273570386878503499417095050121746331354909613310691802 -> 0 +precision: 214 +remainder_eq70 remainder_eq 875157008158241594623343914728.196830800387559632598766241220906276568091579554079449407060104465136120980115549064587115483463 -> 0E-96 +precision: 143 +remainder_eq71 remainder_eq -.416186498516827042121917291009009659987359961643215949360207428252204783721887072 -> -0E-81 +precision: 57 +remainder_eq72 remainder_eq -8136405302 -> -0 +precision: 252 +remainder_eq73 remainder_eq -3768650235270870133729717830580653861249546961478.4293753335016794759387001501334645480 -> -0E-37 +precision: 236 +remainder_eq74 remainder_eq .53053078833539221385330748043177496746474730434295738557835880763388848890280122271323 -> 0E-86 +precision: 71 +remainder_eq75 remainder_eq 14783977679222100389448430861927259685281274236246274487503650321904222e-139807650 -> 0E-139807650 +precision: 16 +remainder_eq76 remainder_eq -9751682463.946221 -> -0.000000 +precision: 58 +remainder_eq77 remainder_eq Inf -> NaN Invalid_operation +precision: 247 +remainder_eq78 remainder_eq +470456242891740913671055215586296056043673564 -> 0 +precision: 66 +remainder_eq79 remainder_eq +2851156900429585824663312062431652010314144980106681978543241989 -> 0 +precision: 125 +remainder_eq80 remainder_eq +.53413243558675104462847715640 -> 0E-29 +precision: 238 +remainder_eq81 remainder_eq -77592321627891437154144939759496.5586263904561939056667168728886977730038623427835983214353914536701683260493274364665102803350457 -> -0E-97 +precision: 20 +remainder_eq82 remainder_eq -7.149209766 -> -0E-9 +precision: 16 +remainder_eq83 remainder_eq -.730591E-66461480 -> -0E-66461486 +precision: 260 +remainder_eq84 remainder_eq +155581642252420115031694452969752872872903902902167503874885283654735878878945182862146983740810211586832501988239085304653714809584946 -> 0 +precision: 214 +remainder_eq85 remainder_eq 330880265401797603607519687119948341178192171240649828562751814425029175273293851408568595145279.778499034938529139741376821109502175E122628189 -> 0E+122628153 +precision: 49 +remainder_eq86 remainder_eq +.26051218465023926875 -> 0E-20 +precision: 194 +remainder_eq87 remainder_eq 379754715260450093082689930722218077210538747689368891079034851697910734281958968341287244917689459308321627585348191692821266537593563963412446746163950107657007E+76756563 -> 0E+76756563 +precision: 135 +remainder_eq88 remainder_eq 1671095733991046671876549016477834234 -> 0 +precision: 2 +remainder_eq89 remainder_eq -.7 -> -0.0 +precision: 51 +remainder_eq90 remainder_eq +Inf -> NaN Invalid_operation +precision: 201 +remainder_eq91 remainder_eq -940066666305850890138006447110886362705819041758397291715757633045996334e-353276341 -> -0E-353276341 +precision: 249 +remainder_eq92 remainder_eq 293911532775524418500564696937598820076382318214406311862015465822e-184880018 -> 0E-184880018 +precision: 182 +remainder_eq93 remainder_eq -73695667.368289306679529510498868175221597220246294564 -> -0E-45 +precision: 293 +remainder_eq94 remainder_eq -.2410395288683668659488128539759859736270614170914536522054684080755337279265762000973103034496403456719313229268494375798244142722601359278044949533942337186176234336394219109161654536775828898587246536182776452848639326698105367055986E-305601249 -> -0E-305601484 +precision: 208 +remainder_eq95 remainder_eq -3286467061159789300849601530719392275137914690042739475178537150195858612015894973319 -> -0 +precision: 107 +remainder_eq96 remainder_eq +55632206579070092122941755861705249059978221001496137746653698283321891222 -> 0 +precision: 99 +remainder_eq97 remainder_eq -723235697637543723552026055316562501485537466.6665923465540842101973194910627134149518980561427E-96927573 -> -0E-96927622 +precision: 128 +remainder_eq98 remainder_eq -16405292808754152362066188388623466196.84582308001223610094525622469727207930877005715243114740767364168553479416985024E16049972 -> -0E+16049892 +precision: 261 +remainder_eq99 remainder_eq -85495026195255732721853828661338830201971833445378398216934163771052263424513347.4500048160125913131549485009432711919815082826128013 -> -0E-52 +precision: 222 +remaindernear_eq0 remaindernear_eq +606302560422303238839300023784949387340467879977016801015961108154411606509462813597451715049853691310868412854381471077355940382201615032 -> 0 +precision: 70 +remaindernear_eq1 remaindernear_eq -NaN -> -NaN +precision: 125 +remaindernear_eq2 remaindernear_eq -2353922789310.187 -> -0.000 +precision: 51 +remaindernear_eq3 remaindernear_eq +Inf -> NaN Invalid_operation +precision: 36 +remaindernear_eq4 remaindernear_eq -48380E-99742895 -> -0E-99742895 +precision: 220 +remaindernear_eq5 remaindernear_eq +5098964800274259385458492848916946866191980063594538086443644520609779321064210764884739737185280160857779226169331441727584716167572281698575.33336373615908528762660979371024117620107690582679815 -> 0E-53 +precision: 94 +remaindernear_eq6 remaindernear_eq 599794212013676502049283225325753470245829960223956827008606168465059 -> 0 +precision: 60 +remaindernear_eq7 remaindernear_eq -403822481.3 -> -0.0 +precision: 246 +remaindernear_eq8 remaindernear_eq +302180646645460006078925929169298332165584552847913832703378201303658415424845774874448261470293530343995716348760102258303263896845547628393456795682078985643881877663587915830E-225260778 -> 0E-225260778 +precision: 99 +remaindernear_eq9 remaindernear_eq -8462306725933181151030294775 -> -0 +precision: 58 +remaindernear_eq10 remaindernear_eq +9383207.863e-20427078 -> 0E-20427081 +precision: 290 +remaindernear_eq11 remaindernear_eq +5025736264851039508283448176928801276206923346333487559949229688963366936911803040073626123328237526732998249539191625781729809935935191432583871683398194669482482633636204562686411418523317812748935890532976224990699382707772917163798323937807985533455407011239844892 -> 0 +precision: 168 +remaindernear_eq12 remaindernear_eq -48946020241e-252609518 -> -0E-252609518 +precision: 73 +remaindernear_eq13 remaindernear_eq +39017702548.78114498 -> 0E-8 +precision: 153 +remaindernear_eq14 remaindernear_eq -332026988078914437426596113840 -> -0 +precision: 258 +remaindernear_eq15 remaindernear_eq .441748580632e-66035091 -> 0E-66035103 +precision: 75 +remaindernear_eq16 remaindernear_eq -0.576E-98345482 -> -0E-98345485 +precision: 204 +remaindernear_eq17 remaindernear_eq -3592 -> -0 +precision: 227 +remaindernear_eq18 remaindernear_eq -785957861477783977015793012123461E-187220820 -> -0E-187220820 +precision: 296 +remaindernear_eq19 remaindernear_eq -.972938278858762092767558052746347834459058037676122110104749530522609406581666694868582937656001881338048985684843415515728081283854790858640236551867163561732 -> -0E-159 +precision: 189 +remaindernear_eq20 remaindernear_eq -Infinity -> NaN Invalid_operation +precision: 46 +remaindernear_eq21 remaindernear_eq -NaN2601819083192218332647846718 -> -NaN2601819083192218332647846718 +precision: 135 +remaindernear_eq22 remaindernear_eq +Infinity -> NaN Invalid_operation +precision: 131 +remaindernear_eq23 remaindernear_eq -62093065968928385519253498414164 -> -0 +precision: 23 +remaindernear_eq24 remaindernear_eq 5958.78102799521824146e+264312477 -> 0E+264312460 +precision: 20 +remaindernear_eq25 remaindernear_eq +64613110692025e388110841 -> 0E+388110841 +precision: 62 +remaindernear_eq26 remaindernear_eq +.60917670636707062983 -> 0E-20 +precision: 108 +remaindernear_eq27 remaindernear_eq -3353826543981991554753831688075355002165517116186801417108061947165856583649 -> -0 +precision: 10 +remaindernear_eq28 remaindernear_eq -389 -> -0 +precision: 167 +remaindernear_eq29 remaindernear_eq -34863371662731772305073717356225924083922443593493740 -> -0 +precision: 86 +remaindernear_eq30 remaindernear_eq -94554353087581293962108968580655895810756233 -> -0 +precision: 242 +remaindernear_eq31 remaindernear_eq -69602183864897018887749370831843804231461081519850263122545904351627997957359621651959591355604738567344718534143224448916180573328052671166006177600663367756120947848778674069838059 -> -0 +precision: 246 +remaindernear_eq32 remaindernear_eq +89491922579782964077010356510524436552550650347376091229381397 -> 0 +precision: 51 +remaindernear_eq33 remaindernear_eq -6432644767622795462.4105093808E-149986300 -> -0E-149986310 +precision: 161 +remaindernear_eq34 remaindernear_eq -67300977892329279373311165155739566074674162730203014743229870496647958461583826650608987444068452837099363883269588099588831144082560064369652297739E-247958987 -> -0E-247958987 +precision: 300 +remaindernear_eq35 remaindernear_eq +98814677971827180354822238126541057494712316441656323379391.97395814455837570118653136258432263415968875268973216260625829017367641651535955051922220276145592646012892147267530765594866740316383765998612585774111393728926399556502229736 -> 0E-176 +precision: 32 +remaindernear_eq36 remaindernear_eq -296177117783525327327395 -> -0 +precision: 288 +remaindernear_eq37 remaindernear_eq +.255961351911795070919356594607754868828921006199828 -> 0E-51 +precision: 85 +remaindernear_eq38 remaindernear_eq -79592920018009323045886934246698193595799369 -> -0 +precision: 299 +remaindernear_eq39 remaindernear_eq -sNaN -> -NaN Invalid_operation +precision: 191 +remaindernear_eq40 remaindernear_eq 8867354409558727140125067139256149884946296884662958e-360702705 -> 0E-360702705 +precision: 51 +remaindernear_eq41 remaindernear_eq -NaN -> -NaN +precision: 158 +remaindernear_eq42 remaindernear_eq -846744856787148334881494273627114969348002375719722162917175224051114940681231055794615854309540285997684963358845538083907742E+65482475 -> -0E+65482475 +precision: 30 +remaindernear_eq43 remaindernear_eq +760278408490664941168420973518 -> 0 +precision: 125 +remaindernear_eq44 remaindernear_eq -77685995260E-339305116 -> -0E-339305116 +precision: 34 +remaindernear_eq45 remaindernear_eq -918e423786264 -> -0E+423786264 +precision: 268 +remaindernear_eq46 remaindernear_eq 589955024899835824570456702724287319970695861820634952845012350278100767354081188564509707282164952407573461526428307060338373548090908823998373658965751201278726267831576069137 -> 0 +precision: 52 +remaindernear_eq47 remaindernear_eq 3540195E+199828637 -> 0E+199828637 +precision: 142 +remaindernear_eq48 remaindernear_eq -.588264627168394422500129985235607735447583281693995221317398040088192495665063224464216794746043617774599 -> -0E-105 +precision: 142 +remaindernear_eq49 remaindernear_eq -97700857399977420018591250002666609e323525579 -> -0E+323525579 +precision: 269 +remaindernear_eq50 remaindernear_eq -92704875288085722754525454610770821297757472932211455975620395460057604991362945820692474845245490451269179616842808360367513322609017743462242091642790879480521034e+189879778 -> -0E+189879778 +precision: 139 +remaindernear_eq51 remaindernear_eq +7648419743597366287010014792938216163181345473809558760512080853165021527546948828724550093852311845E-277396445 -> 0E-277396445 +precision: 104 +remaindernear_eq52 remaindernear_eq -84006448219207679878631280295.363574985326049467365190399391868946076036E132890578 -> -0E+132890536 +precision: 256 +remaindernear_eq53 remaindernear_eq 67613952436249968541585362937927984617670223701119715974227871975463848099659123109163200245398224217302215311976174 -> 0 +precision: 189 +remaindernear_eq54 remaindernear_eq +7788351454646450049230167323113500435589263246103817293212539600923717558517294514085207605499514559967420604500463 -> 0 +precision: 254 +remaindernear_eq55 remaindernear_eq +.555783237429177198381777855546100267326126837673790914211885946525303303436769802937520088983944016108888274044429011064642484266511958523489822590564534416460226 -> 0E-162 +precision: 159 +remaindernear_eq56 remaindernear_eq -Inf -> NaN Invalid_operation +precision: 120 +remaindernear_eq57 remaindernear_eq -89290873836440576038035E-243863756 -> -0E-243863756 +precision: 282 +remaindernear_eq58 remaindernear_eq 21242413865505135106480533300417086781738060463211733599389887886390182010438888504481665696286288258889706870253778470909306494905943163805506577794096508318838786340264010115150450487092188162741552E29454108 -> 0E+29454108 +precision: 300 +remaindernear_eq59 remaindernear_eq -7297331464151815024067130645482293383275925776845865791899979474590266567890200528197687369271948684971798430821548262 -> -0 +precision: 232 +remaindernear_eq60 remaindernear_eq +1008828741724469255537470357534310090068205937952949039029641145082850570783544629883830.6335742194270193732847630413098945132671785365600 -> 0E-49 +precision: 28 +remaindernear_eq61 remaindernear_eq -745743806E185249914 -> -0E+185249914 +precision: 62 +remaindernear_eq62 remaindernear_eq -753335857013233270019484400839637586495133745068254716211e+28793933 -> -0E+28793933 +precision: 115 +remaindernear_eq63 remaindernear_eq +164906493403441028753471298592852360524266915811126063645078615292591302735758035 -> 0 +precision: 56 +remaindernear_eq64 remaindernear_eq -71860233684473121552586876942861103551603075 -> -0 +precision: 237 +remaindernear_eq65 remaindernear_eq +.275180126774282888921599 -> 0E-24 +precision: 251 +remaindernear_eq66 remaindernear_eq -.44625456671193628608529529727371061939108302788958301092865448738525405320960822772414585655243828247022971104653348775473961107344028525859896495360497689634574492780328871498801693457298454524791123221508017837791290979615 -> -0E-224 +precision: 250 +remaindernear_eq67 remaindernear_eq +70714860946965783780849287387697722465418989185963840826679393904896876269463529341398961145619466781005007041493020285087379831770642160332977852262622984354229294738523572017901334780333261963433012322694916080695371480527761e+139996010 -> 0E+139996010 +precision: 101 +remaindernear_eq68 remaindernear_eq -87215650264985879034088518741280439676571993450727125720126347338351275489156668003063445E-406364170 -> -0E-406364170 +precision: 40 +remaindernear_eq69 remaindernear_eq -3721487696198e+329062403 -> -0E+329062403 +precision: 2 +remaindernear_eq70 remaindernear_eq -57E-119980987 -> -0E-119980987 +precision: 166 +remaindernear_eq71 remaindernear_eq 627934971401137018687110537939662251724832655120775565722903074467093995150014629844575036967790513698991703063818975651202406236356827031594112631020313794e146583839 -> 0E+146583839 +precision: 54 +remaindernear_eq72 remaindernear_eq +748138.7021707588185785132025676749 -> 0E-28 +precision: 186 +remaindernear_eq73 remaindernear_eq 95492002708289932332412546381329511153002113489532769323805326675260051765598634621121659191676811021899438523623486468430008139 -> 0 +precision: 217 +remaindernear_eq74 remaindernear_eq +265154252736494199743131991453370631753586340964102244960957605354350.1261565178025653178817204 -> 0E-25 +precision: 183 +remaindernear_eq75 remaindernear_eq sNaN9968012941511136464847008021806294602941970895865093333747066229880090 -> NaN9968012941511136464847008021806294602941970895865093333747066229880090 Invalid_operation +precision: 287 +remaindernear_eq76 remaindernear_eq -9728459152395309929221901570665612872241803610359965905624986190602869006340683836812157589.4558670576889243953353827595984659237438664513891696181 -> -0E-55 +precision: 110 +remaindernear_eq77 remaindernear_eq +736818491348267e-410676853 -> 0E-410676853 +precision: 187 +remaindernear_eq78 remaindernear_eq +921468338335591387911039862456658648483274607793568486113275251074050209044953537973958930445223084918200279988969.9571632730937490408286694918 -> 0E-28 +precision: 188 +remaindernear_eq79 remaindernear_eq 82599992169653010120165550178357192682841981083346902709977824815278421821905772291635708366128960217815016884 -> 0 +precision: 279 +remaindernear_eq80 remaindernear_eq -Infinity -> NaN Invalid_operation +precision: 267 +remaindernear_eq81 remaindernear_eq -45341536494066251561428751121610184143122276676404417600205657344736835871516729870855523567308624218184060914794135500829484318575828066316532403208470936879022695038502990871375337.71752001227496337118285591552406407581551765307500465685080435721065E103211596 -> -0E+103211528 +precision: 143 +remaindernear_eq82 remaindernear_eq +5290192 -> 0 +precision: 208 +remaindernear_eq83 remaindernear_eq 73085034398755096874074976294786895616277209.24976304907170395208354696147372305444764890046580613661528866783825904762303630161745773144661 -> 0E-95 +precision: 186 +remaindernear_eq84 remaindernear_eq +31906387488.7442571110674951285406862710719091648893754358176927255255e-132151596 -> 0E-132151654 +precision: 156 +remaindernear_eq85 remaindernear_eq 16795467621899666153527792466165 -> 0 +precision: 140 +remaindernear_eq86 remaindernear_eq -Inf -> NaN Invalid_operation +precision: 44 +remaindernear_eq87 remaindernear_eq +6341173522.20 -> 0.00 +precision: 92 +remaindernear_eq88 remaindernear_eq .41 -> 0.00 +precision: 2 +remaindernear_eq89 remaindernear_eq -13e-243579538 -> -0E-243579538 +precision: 200 +remaindernear_eq90 remaindernear_eq 57018242945763783776684138980107228686920886672473658940124144667783714584368509492418157153767216436773896063596842154660428014176023223693730783775.63828859019758151886086669939426922913291517e-18230152 -> 0E-18230196 +precision: 261 +remaindernear_eq91 remaindernear_eq +1348119855074872278702291815029833671328501764307569933435154165042853352047247117441415.6430717413781943 -> 0E-16 +precision: 296 +remaindernear_eq92 remaindernear_eq +sNaN74214766040412537182718535844872747714904 -> NaN74214766040412537182718535844872747714904 Invalid_operation +precision: 26 +remaindernear_eq93 remaindernear_eq -Inf -> NaN Invalid_operation +precision: 224 +remaindernear_eq94 remaindernear_eq -55697892304945023574559898355515361485232829436675811937807517119356348196443878382681003597491621700923443209973147957320323652884675840730560716224292025348357915496399493907618 -> -0 +precision: 155 +remaindernear_eq95 remaindernear_eq -6975778953786023757193728467119981417395938303538606357727731111194651818901915.22033248096236217632e+34261929 -> -0E+34261909 +precision: 30 +remaindernear_eq96 remaindernear_eq -6363221683064 -> -0 +precision: 235 +remaindernear_eq97 remaindernear_eq 63349880932834945230800885943069785501411145530722619421385141972447786416514039870033607598019323692325868929393339471699660904394910705320306002924 -> 0 +precision: 100 +remaindernear_eq98 remaindernear_eq +27389866393693004444697586144340891859 -> 0 +precision: 81 +remaindernear_eq99 remaindernear_eq 349394818252885093844922090941643428923637208565591617135.43354111856110643e+48064321 -> 0E+48064304 +precision: 113 +scaleb_eq0 scaleb_eq +28258509532563303179334762468260 -> NaN Invalid_operation +precision: 97 +scaleb_eq1 scaleb_eq -355173523612534322755756088153651046755274842352515124622e286352359 -> NaN Invalid_operation +precision: 243 +scaleb_eq2 scaleb_eq +3076125131539695041932655972073595060309801498731436619642463661596236944843686575554514765045119482474211794 -> NaN Invalid_operation +precision: 106 +scaleb_eq3 scaleb_eq +6058768226064406205890208842296452282026.8442726e+399453895 -> NaN Invalid_operation +precision: 72 +scaleb_eq4 scaleb_eq +Inf -> NaN Invalid_operation +precision: 68 +scaleb_eq5 scaleb_eq 2913725987334249761993229664181129.57193116084555994595221304215414 -> NaN Invalid_operation +precision: 210 +scaleb_eq6 scaleb_eq +Infinity -> NaN Invalid_operation +precision: 103 +scaleb_eq7 scaleb_eq -1918699345349348993235 -> NaN Invalid_operation +precision: 217 +scaleb_eq8 scaleb_eq 4553885240.398491278413754040408840781625407178420497052622863641953426194005088042636876764199670187500954754101520849997657782582460131944618593357533292290320866218294589739795677301E-119930725 -> NaN Invalid_operation +precision: 165 +scaleb_eq9 scaleb_eq -7527.67286756583959647255452150059283488799987189883612944549034553473097324819445757336387 -> NaN Invalid_operation +precision: 18 +scaleb_eq10 scaleb_eq -8493722e152026249 -> NaN Invalid_operation +precision: 198 +scaleb_eq11 scaleb_eq 3216803109.9674037063287336017230673895011036939070286296032309685974919389590518231271055309290132872209143337176038594973165139914408511353425207391796 -> NaN Invalid_operation +precision: 224 +scaleb_eq12 scaleb_eq -35029946389178804250466933662990e-112167301 -> NaN Invalid_operation +precision: 252 +scaleb_eq13 scaleb_eq -70459220119449667840748081338345495328871867324778080416583852134210572862301583945564368920676 -> NaN Invalid_operation +precision: 140 +scaleb_eq14 scaleb_eq -316782294170574558051536637479341974980828961560478700699528272801476173435007673983482360307355512874065201816535504e+226909990 -> NaN Invalid_operation +precision: 273 +scaleb_eq15 scaleb_eq 485288087969639.6756659644751657028826097460560728673997175649618566449198574605193939208285177457216275031377685525609099 -> NaN Invalid_operation +precision: 91 +scaleb_eq16 scaleb_eq 8066502956862591807123.508141852 -> NaN Invalid_operation +precision: 235 +scaleb_eq17 scaleb_eq +44375960688122308340439206.8113139386383959035049648300070083 -> NaN Invalid_operation +precision: 86 +scaleb_eq18 scaleb_eq 5742886005504587213.3887109 -> NaN Invalid_operation +precision: 191 +scaleb_eq19 scaleb_eq +Inf -> NaN Invalid_operation +precision: 213 +scaleb_eq20 scaleb_eq 77551618918775374146920484589805537060996121024589719.3346140971995562486338457277743 -> NaN Invalid_operation +precision: 136 +scaleb_eq21 scaleb_eq -7655368179156566873034810924829402517883684011561736818339296429579311898962779162 -> NaN Invalid_operation +precision: 167 +scaleb_eq22 scaleb_eq -62126990321181883440096857636373547210.66118440935923560421485474411916958467474801657332856394913E33940814 -> NaN Invalid_operation +precision: 28 +scaleb_eq23 scaleb_eq 268542 -> 2.68542E+268547 +precision: 124 +scaleb_eq24 scaleb_eq +53378707450771681408785275512672391843550514356991942711820967167 -> NaN Invalid_operation +precision: 173 +scaleb_eq25 scaleb_eq -605310698807419573791386401112828635947238410068420446076567155063421912988178099782345853551867998626785843 -> NaN Invalid_operation +precision: 204 +scaleb_eq26 scaleb_eq +43700154072041972264479649238906618451256047967788500433766515980573093384561 -> NaN Invalid_operation +precision: 58 +scaleb_eq27 scaleb_eq Infinity -> NaN Invalid_operation +precision: 142 +scaleb_eq28 scaleb_eq 2346352105088512289863462408218834103462880445 -> NaN Invalid_operation +precision: 296 +scaleb_eq29 scaleb_eq +67466074714346149708761039738854465897093989704432260889668005178106063513296431285537102750985984377228035E-272491648 -> NaN Invalid_operation +precision: 252 +scaleb_eq30 scaleb_eq -63581738247072750296811844234145879729981882875119095994028909475648354639325384781207068279428250704846692212047647796467513875098255789362512196666.958712291544200361941742323021118004767284484067653746E276219424 -> NaN Invalid_operation +precision: 299 +scaleb_eq31 scaleb_eq +81447402543943 -> NaN Invalid_operation +precision: 125 +scaleb_eq32 scaleb_eq -3251923133678675182176242985039053586554463977402729756952541753184779833776765943513.2741918668249233 -> NaN Invalid_operation +precision: 259 +scaleb_eq33 scaleb_eq -.857365315214046550105390739220786259595416172286400214717174994992481112391081117928645419600520348958 -> NaN Invalid_operation +precision: 20 +scaleb_eq34 scaleb_eq +Infinity -> NaN Invalid_operation +precision: 104 +scaleb_eq35 scaleb_eq -3483210054921467215205960893523961528102062224665537178041954476944301472E153234023 -> NaN Invalid_operation +precision: 73 +scaleb_eq36 scaleb_eq +sNaN -> NaN Invalid_operation +precision: 69 +scaleb_eq37 scaleb_eq +78792901323704141184024073.51 -> NaN Invalid_operation +precision: 280 +scaleb_eq38 scaleb_eq +.23594045506438332644270561991824687015610724042798761071230403066194760849133274686783372951458955076670867414802585722952710071166 -> NaN Invalid_operation +precision: 25 +scaleb_eq39 scaleb_eq -15935579489E+191316626 -> NaN Invalid_operation +precision: 78 +scaleb_eq40 scaleb_eq 4384566200889549465417683 -> NaN Invalid_operation +precision: 15 +scaleb_eq41 scaleb_eq -1479540 -> -1.479540E-1479534 +precision: 218 +scaleb_eq42 scaleb_eq -Inf -> NaN Invalid_operation +precision: 5 +scaleb_eq43 scaleb_eq -27.e-117995185 -> NaN Invalid_operation +precision: 271 +scaleb_eq44 scaleb_eq 51798743778975387851205382060 -> NaN Invalid_operation +precision: 154 +scaleb_eq45 scaleb_eq -.8740502941271956922285575e+414267695 -> NaN Invalid_operation +precision: 96 +scaleb_eq46 scaleb_eq 49324148399117701399013088728422812283542338716305275203086912284263606347006062034 -> NaN Invalid_operation +precision: 87 +scaleb_eq47 scaleb_eq +37693298130788780013869149209805058077513e-49660975 -> NaN Invalid_operation +precision: 101 +scaleb_eq48 scaleb_eq -.5984222149126 -> NaN Invalid_operation +precision: 12 +scaleb_eq49 scaleb_eq -857838368209E352504891 -> NaN Invalid_operation +precision: 227 +scaleb_eq50 scaleb_eq +3380118910676953952180668662957558448578133764970842804938621803909033320131340836302229359806561710526335607775304757767415 -> NaN Invalid_operation +precision: 270 +scaleb_eq51 scaleb_eq -15203679330939016185930981848481508084803716747789058624319E337956550 -> NaN Invalid_operation +precision: 87 +scaleb_eq52 scaleb_eq 93977639330177918323380313922748671531140944619885720200637257554878047420.6074335 -> NaN Invalid_operation +precision: 137 +scaleb_eq53 scaleb_eq -7097261684416661686199E-76401671 -> NaN Invalid_operation +precision: 189 +scaleb_eq54 scaleb_eq +4145140586475512897951896422656663234608115891502468498519929756676495750516677325879773297734775706318510915507564810621806516598968112856526627646337639499634184 -> NaN Invalid_operation +precision: 33 +scaleb_eq55 scaleb_eq 15709510808 -> NaN Invalid_operation +precision: 21 +scaleb_eq56 scaleb_eq -868233814.8126E+251562791 -> NaN Invalid_operation +precision: 29 +scaleb_eq57 scaleb_eq -78663355e-85074432 -> NaN Invalid_operation +precision: 265 +scaleb_eq58 scaleb_eq -41237265089769476283911180668208581065721924281958879459993277449985112909290636386340495904397773235030720675770625862211480212551666309874307063 -> NaN Invalid_operation +precision: 180 +scaleb_eq59 scaleb_eq -sNaN150306602860870952346120391977464328 -> -NaN150306602860870952346120391977464328 Invalid_operation +precision: 67 +scaleb_eq60 scaleb_eq +498339718773144134 -> NaN Invalid_operation +precision: 65 +scaleb_eq61 scaleb_eq .9249181023788278395811701572154111099818325 -> NaN Invalid_operation +precision: 9 +scaleb_eq62 scaleb_eq -237551200 -> -2.37551200E-237551192 +precision: 137 +scaleb_eq63 scaleb_eq -85980862422821254941571783112912941392862111705600045349450677983958830908988483604317296728681899036281453808546270966339 -> NaN Invalid_operation +precision: 177 +scaleb_eq64 scaleb_eq -22860501629833234109122380618228336032750302204812278141837541658 -> NaN Invalid_operation +precision: 239 +scaleb_eq65 scaleb_eq -11952.7184 -> NaN Invalid_operation +precision: 28 +scaleb_eq66 scaleb_eq +.2226197715 -> NaN Invalid_operation +precision: 262 +scaleb_eq67 scaleb_eq +Infinity -> NaN Invalid_operation +precision: 14 +scaleb_eq68 scaleb_eq +9.847 -> NaN Invalid_operation +precision: 94 +scaleb_eq69 scaleb_eq +.72926470138249873694383512 -> NaN Invalid_operation +precision: 275 +scaleb_eq70 scaleb_eq -6892817.6770509041598625187756228311184116433953e-39339214 -> NaN Invalid_operation +precision: 140 +scaleb_eq71 scaleb_eq 2100724448310751592501822545985578829721483193421855391249561382312301031486983147808222124420260911657604583977113634222854696972 -> NaN Invalid_operation +precision: 275 +scaleb_eq72 scaleb_eq +30186613760385131139842102075401110521005601347030195403923931115410222000493780089002422841280065368764600894280682068e-134891412 -> NaN Invalid_operation +precision: 7 +scaleb_eq73 scaleb_eq -545901e-329054749 -> NaN Invalid_operation +precision: 267 +scaleb_eq74 scaleb_eq -24780311122479363452593063147302863616460.292222911863241544395272063490479284169598726930223480784198866905566869195268592546970365078637018857921695191192809882038468355736131547751140132326658238805426561174179529 -> NaN Invalid_operation +precision: 239 +scaleb_eq75 scaleb_eq sNaN7084812 -> NaN7084812 Invalid_operation +precision: 13 +scaleb_eq76 scaleb_eq +7.1 -> NaN Invalid_operation +precision: 270 +scaleb_eq77 scaleb_eq -238664088635606420499898471023231655465289190004926961899040075049133251562876259996438333282578542310087850990117068940165165903695404531144424373961078737254234337682001840727337503478521165571821729268846732305887938684236015694360870 -> NaN Invalid_operation +precision: 59 +scaleb_eq78 scaleb_eq +85306933757567770689 -> NaN Invalid_operation +precision: 277 +scaleb_eq79 scaleb_eq Inf -> NaN Invalid_operation +precision: 40 +scaleb_eq80 scaleb_eq 3583053124800779979592774812138785461 -> NaN Invalid_operation +precision: 239 +scaleb_eq81 scaleb_eq 579098286909822923737649154521793952747555900261028488602816172058573595818910513150272696631886659921433960237675377667475859804616213122353524879056827904553260118505951216783645442144984382416416262503845090 -> NaN Invalid_operation +precision: 216 +scaleb_eq82 scaleb_eq 6399099582214756430069271537268170095597498091738666350140300772729040794252429960025748703090053913468675781810623451915754794468589184301737279466513 -> NaN Invalid_operation +precision: 41 +scaleb_eq83 scaleb_eq -Inf -> NaN Invalid_operation +precision: 194 +scaleb_eq84 scaleb_eq 9.64266014869098e-220895857 -> NaN Invalid_operation +precision: 292 +scaleb_eq85 scaleb_eq -.7530168234417384132857456446300725977874692119163131142964213148326148 -> NaN Invalid_operation +precision: 136 +scaleb_eq86 scaleb_eq -62661848032104023069446261358905406614482037643207744124648 -> NaN Invalid_operation +precision: 252 +scaleb_eq87 scaleb_eq -Infinity -> NaN Invalid_operation +precision: 238 +scaleb_eq88 scaleb_eq 143546845861041990060322684886810107381454139689572725811455288461906047074995527e-127588293 -> NaN Invalid_operation +precision: 188 +scaleb_eq89 scaleb_eq 549594636922986928915266244329120480311386453401718289956222234187138269487793994e+382834954 -> NaN Invalid_operation +precision: 100 +scaleb_eq90 scaleb_eq +76105833567872825324716048.6835667199393662070898309498956632327770577144579639027223E+423695188 -> NaN Invalid_operation +precision: 208 +scaleb_eq91 scaleb_eq .86289711151123983900536359336389723399318519906644048668289593781678004811269496917624510067 -> NaN Invalid_operation +precision: 34 +scaleb_eq92 scaleb_eq +916269671505610925729 -> NaN Invalid_operation +precision: 290 +scaleb_eq93 scaleb_eq -925545362179925226065811738507223023250468376948987768593156999686888829375381542877030737230952724384014871389223682783381310204226037957876313326052240796394179604181189802583242621886579408631269640897354786896501787415653536 -> NaN Invalid_operation +precision: 66 +scaleb_eq94 scaleb_eq .880686941424197683386631881691437128635448 -> NaN Invalid_operation +precision: 258 +scaleb_eq95 scaleb_eq -3709675741916488562724697137368486160074319966072124727025445013286773046104296544630857988625115209971096134701051839178531501762177997843780658964879529312056957703184626337232272654206058998002736504319451012607.72745145550191255373895768227070229253e+306439510 -> NaN Invalid_operation +precision: 149 +scaleb_eq96 scaleb_eq -318427623216498655888407091711921190884499748652676780446018209512913063007760334404201763797287942084677556983333007305056106483994 -> NaN Invalid_operation +precision: 178 +scaleb_eq97 scaleb_eq -71231340763162078630464457351867481226585756943636275526567525779946732784105884892646180177.25214499346204718793029546277 -> NaN Invalid_operation +precision: 281 +scaleb_eq98 scaleb_eq -340219887145696159611037362142956314181385186221234816430614774573529625470528833020101049287176774807699463575637463137372651887826491996103034022115121705369519495054609e-202284746 -> NaN Invalid_operation +precision: 292 +scaleb_eq99 scaleb_eq -2333625653119145104608406475497516506160394226135053851621142635577283859868904203252477078302181491194732386001798828322731623494839249042820917486282 -> NaN Invalid_operation +precision: 33 +shift_eq0 shift_eq +64 -> NaN Invalid_operation +precision: 169 +shift_eq1 shift_eq -386447786368645346510.1434983997906521501294859729181025272575211783388857414313903624919491724794e308674405 -> NaN Invalid_operation +precision: 64 +shift_eq2 shift_eq .1064629116843833794591007955659963903297906158674535586 -> NaN Invalid_operation +precision: 271 +shift_eq3 shift_eq -6004760564421997267465337542056145268077576692427060243147887257835298306846683703091362342173151245516033730629367039345848260215473868275162806395658358744146002456539191927790139484782 -> NaN Invalid_operation +precision: 292 +shift_eq4 shift_eq 5016040850972822158392e+72304768 -> NaN Invalid_operation +precision: 134 +shift_eq5 shift_eq -916543010238684246123647 -> NaN Invalid_operation +precision: 299 +shift_eq6 shift_eq -.692530223907051608797808298942810e-239533460 -> NaN Invalid_operation +precision: 45 +shift_eq7 shift_eq -6830741495103690088657692052185543694324641e-388966750 -> NaN Invalid_operation +precision: 299 +shift_eq8 shift_eq +.55023071217980208334517013292560956175701560737307008458759887723128870874390392422716528877085751586827374527403442676257949626 -> NaN Invalid_operation +precision: 68 +shift_eq9 shift_eq -742.480 -> NaN Invalid_operation +precision: 98 +shift_eq10 shift_eq -28827789104604298713031017607612538166326688451377674218004690823398957 -> NaN Invalid_operation +precision: 234 +shift_eq11 shift_eq -Inf -> NaN Invalid_operation +precision: 243 +shift_eq12 shift_eq -652836419017537467905959659262907641906846627121432678278349199204135985608479229194748471221677408486746560160749133588524689705403242683716162775335255012408877859775935563095198829198626e-304404952 -> NaN Invalid_operation +precision: 138 +shift_eq13 shift_eq -6400480512625468956113632017678063816435851911561986426508.8368764891224739944187745632193278804583821 -> NaN Invalid_operation +precision: 74 +shift_eq14 shift_eq 50.65663 -> NaN Invalid_operation +precision: 149 +shift_eq15 shift_eq +47694117927132457225220247832535341853211279445885087937284097482164496908981342154365490437288868398724902222e-62955980 -> NaN Invalid_operation +precision: 213 +shift_eq16 shift_eq -5670450288624787954119422350461412081266087975125441507206250638667789751962315577 -> NaN Invalid_operation +precision: 278 +shift_eq17 shift_eq -138627046480478792325179756784734135151509634091123491335095114586889484147855742053280134584120971347241772614375528753740910817965224832478160295677709146850979819949961890773792188583381417380E217688532 -> NaN Invalid_operation +precision: 172 +shift_eq18 shift_eq +561495928834182.676992e-222229974 -> NaN Invalid_operation +precision: 230 +shift_eq19 shift_eq +19836162002458314554512874505398304679097941974615637095703516357 -> NaN Invalid_operation +precision: 49 +shift_eq20 shift_eq Infinity -> NaN Invalid_operation +precision: 185 +shift_eq21 shift_eq -51983232827193633807937198937302349561156806074620 -> NaN Invalid_operation +precision: 38 +shift_eq22 shift_eq -42358237111213 -> NaN Invalid_operation +precision: 270 +shift_eq23 shift_eq -sNaN -> -NaN Invalid_operation +precision: 117 +shift_eq24 shift_eq .37768769863590927183280294943790276003745833982954120488005305248124583086745100678463207887922496e+286692409 -> NaN Invalid_operation +precision: 153 +shift_eq25 shift_eq +8820366721283952975343910516353411754182183277171239548414464573475026 -> NaN Invalid_operation +precision: 41 +shift_eq26 shift_eq +244909. -> NaN Invalid_operation +precision: 183 +shift_eq27 shift_eq -1525822407075896618985442741847789737147588428554858478489195691802946884368434933435747492464058461210447052559481176977949549660752966591 -> NaN Invalid_operation +precision: 121 +shift_eq28 shift_eq -296216.2073E165330998 -> NaN Invalid_operation +precision: 13 +shift_eq29 shift_eq +Inf -> NaN Invalid_operation +precision: 220 +shift_eq30 shift_eq -.42314261152947925892489870998457589918041196616694718941447901966145447170131684346864797329534139794174723637577766096722679038926026127559794252393087957554303661e-268085340 -> NaN Invalid_operation +precision: 266 +shift_eq31 shift_eq +4157875631946050618116271406977127163724261416689710022074506534081561216201477607028940973031622944176859942692168090800342575409510987539288061003904463782088153475229413902762453916246907957044364655338544568 -> NaN Invalid_operation +precision: 260 +shift_eq32 shift_eq +173961701567559703277384909764962872878238368253679983254254181961148E+234528901 -> NaN Invalid_operation +precision: 7 +shift_eq33 shift_eq 30 -> NaN Invalid_operation +precision: 151 +shift_eq34 shift_eq -.7570328093818e-138497582 -> NaN Invalid_operation +precision: 176 +shift_eq35 shift_eq +Infinity -> NaN Invalid_operation +precision: 82 +shift_eq36 shift_eq -552045155910112427061598461259141E-148559202 -> NaN Invalid_operation +precision: 220 +shift_eq37 shift_eq -3421614945804565586661233997006776876978398521351523545326176458919228832623905809504907256930683604413 -> NaN Invalid_operation +precision: 70 +shift_eq38 shift_eq Inf -> NaN Invalid_operation +precision: 89 +shift_eq39 shift_eq +.65835219775505683254679076334317816174092922809126518160561763757176637311049109709329794e-410345720 -> NaN Invalid_operation +precision: 68 +shift_eq40 shift_eq +7131464551716429028567681527923774337.1552E-418849530 -> NaN Invalid_operation +precision: 285 +shift_eq41 shift_eq -2132259291878538007699827320202307468796284863762818088825206743586076899827306013980837624833883149962749598787151529700012634296466321814555210163.3978000930806465548081941234102923272663132002747178265670203998448315061693 -> NaN Invalid_operation +precision: 210 +shift_eq42 shift_eq -67639122320381651312646266207798462885970419791777.28 -> NaN Invalid_operation +precision: 271 +shift_eq43 shift_eq -875411636751889557636296171692397864813680411208488138273027374070169807023043285468941313813914706391707458012445538759.72154902287021960396385750098e302580951 -> NaN Invalid_operation +precision: 217 +shift_eq44 shift_eq +99838400437361693957301114433028771958661471706763854143515830385567283781398327989489413752007475033976997650214337e-37816908 -> NaN Invalid_operation +precision: 244 +shift_eq45 shift_eq +96285319343998397594452689986022622608137166022737835544657727488935743571121728150722745062704252030513560056481423846962503550082691E+280982698 -> NaN Invalid_operation +precision: 251 +shift_eq46 shift_eq -84628757113834595271449660075644912278519 -> NaN Invalid_operation +precision: 106 +shift_eq47 shift_eq 96156700883752056493898110039844748092418019857507193966220179.7477367792127500 -> NaN Invalid_operation +precision: 249 +shift_eq48 shift_eq -755813084510154767014537283228855649129701845413738811761416720250850770682150456732002691737618414995864.14446357293324842938738818 -> NaN Invalid_operation +precision: 100 +shift_eq49 shift_eq -.17313382221395196512 -> NaN Invalid_operation +precision: 270 +shift_eq50 shift_eq +789702012967772058649309779452279488475177494868171360E+52290522 -> NaN Invalid_operation +precision: 185 +shift_eq51 shift_eq 103729174011924824294886318787186726583566495035341730560959505599890193739484973823632790014713689964736260721466944400728945769197469046576 -> NaN Invalid_operation +precision: 156 +shift_eq52 shift_eq -.739083680473617073609111140236747783952922852854314599279329013585318e+75001489 -> NaN Invalid_operation +precision: 274 +shift_eq53 shift_eq +NaN864343525309550615455295848 -> NaN864343525309550615455295848 +precision: 253 +shift_eq54 shift_eq +.1999470335956438550050894723235652440089383850597600604183632229 -> NaN Invalid_operation +precision: 34 +shift_eq55 shift_eq -775 -> NaN Invalid_operation +precision: 111 +shift_eq56 shift_eq +966334081278076042412050377504319011093512266117239119679242107814814598000001898027927894024900915481134864 -> NaN Invalid_operation +precision: 203 +shift_eq57 shift_eq +.464786276744473734103980428723084753951070519285022792203034497056011361419419396843274809652910830767993109189311382396723952483718243623985633492738E-104648440 -> NaN Invalid_operation +precision: 219 +shift_eq58 shift_eq -.9257054068297119574788505610422743421986181511809273803654191176099808492164869556113641585377568933347361914528763850398750167008175151765389E-344995490 -> NaN Invalid_operation +precision: 90 +shift_eq59 shift_eq +48356731030138275242810330401328066161373059929337732289780632722243929646664612934 -> NaN Invalid_operation +precision: 257 +shift_eq60 shift_eq -Inf -> NaN Invalid_operation +precision: 126 +shift_eq61 shift_eq -sNaN -> -NaN Invalid_operation +precision: 8 +shift_eq62 shift_eq +8665 -> NaN Invalid_operation +precision: 240 +shift_eq63 shift_eq 13385519941539547204306873720249419611151077748425348662647616061805114607159252657412896097567429972834869001930624552518589032618324233560214063974512359284090441828568016676263219427896496101348329371351583104E125493764 -> NaN Invalid_operation +precision: 20 +shift_eq64 shift_eq +51.7985 -> NaN Invalid_operation +precision: 72 +shift_eq65 shift_eq .43846764562175612750632822E+76797765 -> NaN Invalid_operation +precision: 102 +shift_eq66 shift_eq 2080829 -> NaN Invalid_operation +precision: 262 +shift_eq67 shift_eq +21895050859138951713781269323126711696852420722945583641230879185801330908941224879336665208720778278795696231601358007636617229745765526853750881194479331229595456759913011188577732222264481620192245431e159370255 -> NaN Invalid_operation +precision: 282 +shift_eq68 shift_eq 26 -> 2600000000000000000000000000 +precision: 223 +shift_eq69 shift_eq +262461234151755146110684902221811010510352331760948740885276059467491151419518611752449931047333753339825800920056359602797613146072603882932760350027447295.57651224288688757433314 -> NaN Invalid_operation +precision: 112 +shift_eq70 shift_eq +9156577028697332384061219055945246549582E-342632944 -> NaN Invalid_operation +precision: 149 +shift_eq71 shift_eq -711001361674801040390204828358107087309085675810054430484472131408227971873832884832684069 -> NaN Invalid_operation +precision: 209 +shift_eq72 shift_eq 859922044719593743904252492942092876840815201282147290978034247304667904297282 -> NaN Invalid_operation +precision: 109 +shift_eq73 shift_eq 797877766003749584605438818109419567801994375637308262E-293167887 -> NaN Invalid_operation +precision: 54 +shift_eq74 shift_eq +214099468411.963122022 -> NaN Invalid_operation +precision: 172 +shift_eq75 shift_eq 975683085404289260554748632761338536822979543719988222970785593557538900754715122606126999334941064011356150208e+282282897 -> NaN Invalid_operation +precision: 166 +shift_eq76 shift_eq -1864754575944064295477548037951317330687906299480549235686849592 -> NaN Invalid_operation +precision: 72 +shift_eq77 shift_eq -21124195217509295351705894e30773689 -> NaN Invalid_operation +precision: 128 +shift_eq78 shift_eq -5529318159066270583769971336381968617990e-312309788 -> NaN Invalid_operation +precision: 82 +shift_eq79 shift_eq +29891487166764121879600329483908.87237365149814932449722212291771762197698516498 -> NaN Invalid_operation +precision: 2 +shift_eq80 shift_eq -54. -> NaN Invalid_operation +precision: 177 +shift_eq81 shift_eq -Infinity -> NaN Invalid_operation +precision: 263 +shift_eq82 shift_eq -sNaN6475580351159906899292914180090523594720083903683761860911 -> -NaN6475580351159906899292914180090523594720083903683761860911 Invalid_operation +precision: 125 +shift_eq83 shift_eq -.35139977705512383113476967802449652035597378816150686819620109995236721579024320019887472459307615574769375352804965632 -> NaN Invalid_operation +precision: 8 +shift_eq84 shift_eq .28 -> NaN Invalid_operation +precision: 193 +shift_eq85 shift_eq +2032064149697500180292908870659792357730.3051313560639454680634319210096826285940624668317159074469879505123578151311748383761 -> NaN Invalid_operation +precision: 118 +shift_eq86 shift_eq +634698 -> NaN Invalid_operation +precision: 148 +shift_eq87 shift_eq 2984506394629110011224803185964301.700339719055784475539169431415029088515540979786432E-276272515 -> NaN Invalid_operation +precision: 206 +shift_eq88 shift_eq 14665859202082774967174285825271180824247130258486908497600285790287671010583883380571017259750282544487184282345046752.2744667613921596881257900746549665430320538466963911792838344830510918400292e+31774561 -> NaN Invalid_operation +precision: 212 +shift_eq89 shift_eq -2385899937619527644133304932405667046405836131725965635267498813742567350468609138140707108984118615623E-90759159 -> NaN Invalid_operation +precision: 234 +shift_eq90 shift_eq 5040418230541890608066290758106084809245035.6 -> NaN Invalid_operation +precision: 26 +shift_eq91 shift_eq +81637e388107601 -> NaN Invalid_operation +precision: 168 +shift_eq92 shift_eq +42892329402470 -> NaN Invalid_operation +precision: 219 +shift_eq93 shift_eq -7126242938 -> NaN Invalid_operation +precision: 120 +shift_eq94 shift_eq -1654600.E141220874 -> NaN Invalid_operation +precision: 293 +shift_eq95 shift_eq -2262561079538735951729913863600020717030746938613798106325008079038595967625667763696164353223842016122338093107575477154159491112015780241496900181192530423363213523533787555883898 -> NaN Invalid_operation +precision: 10 +shift_eq96 shift_eq +.5317 -> NaN Invalid_operation +precision: 128 +shift_eq97 shift_eq -26602327315939748332147385634145018748526838818750249.9054001002038412849553E-22041227 -> NaN Invalid_operation +precision: 113 +shift_eq98 shift_eq -81949773146733472812214475960759914227142033552795417 -> NaN Invalid_operation +precision: 199 +shift_eq99 shift_eq -sNaN -> -NaN Invalid_operation +precision: 259 +subtract_eq0 subtract_eq -.784626254375705635359421742211628372073214972658015192255951E-322501478 -> 0E-322501538 +precision: 43 +subtract_eq1 subtract_eq +89690.7376661374 -> 0E-10 +precision: 233 +subtract_eq2 subtract_eq +Infinity -> NaN Invalid_operation +precision: 156 +subtract_eq3 subtract_eq -1696595486664094057000153353905744472872288822732910291230927 -> 0 +precision: 207 +subtract_eq4 subtract_eq -932223855054587073208851893328456 -> 0 +precision: 249 +subtract_eq5 subtract_eq -69506935943178640332772578456921852991436142192006587306848274120043803839683075040553351841270398732583010718890533028284474031982916586017516408027449325 -> 0 +precision: 259 +subtract_eq6 subtract_eq 73008413578764546886980722570522937187505470585898639858485130251398856206130378796715596432510577141810043329393904.85633811124633788207424013696324792785438445058975323257588664548822097457246422187344610018513436338346158935162e-361686425 -> 0E-361686538 +precision: 72 +subtract_eq7 subtract_eq Inf -> NaN Invalid_operation +precision: 300 +subtract_eq8 subtract_eq .6866289246792190335033106899071725521824271654342898500569004024256511280211463495525012692398032460821520922249199603734470543576516763324054582705224717917969242648688822581165948355253575454499878928952611648475 -> 0E-214 +precision: 20 +subtract_eq9 subtract_eq +9.9613298 -> 0E-7 +precision: 207 +subtract_eq10 subtract_eq -NaN2800629440185365174148708536527662046002782613484794451982204659114992004470 -> -NaN2800629440185365174148708536527662046002782613484794451982204659114992004470 +precision: 95 +subtract_eq11 subtract_eq +38502481077709629647441149813564807233258990654979197944822632286329064984250161993207083 -> 0 +precision: 64 +subtract_eq12 subtract_eq +822309406918140999502129203329e+140175266 -> 0E+140175266 +precision: 126 +subtract_eq13 subtract_eq -.8260847844401803040716824650552386406945603781774026899613301432815275165945e-360625326 -> 0E-360625402 +precision: 279 +subtract_eq14 subtract_eq -896360096131092415634197547231343181596614533028637049515427394570899377465149537238826645012356406368181987247841973517748058093699570526783418708378353312913916693256751753846475441222773913965863972461e-60365139 -> 0E-60365139 +precision: 4 +subtract_eq15 subtract_eq -2264 -> 0 +precision: 177 +subtract_eq16 subtract_eq -3620367697982680500854437240935059855111912613131533685630968916646864 -> 0 +precision: 270 +subtract_eq17 subtract_eq -82522081523623544855544797225040376255504646863336943669759408517988856854580378209366074611001706956.916367729532433484574756874992873025640273 -> 0E-42 +precision: 263 +subtract_eq18 subtract_eq 190128 -> 0 +precision: 50 +subtract_eq19 subtract_eq -Infinity -> NaN Invalid_operation +precision: 260 +subtract_eq20 subtract_eq -6218871316990039401473137891426984.97 -> 0.00 +precision: 152 +subtract_eq21 subtract_eq .4482685130185376975052021640415014546864756627740677159648880709963578885784195648822020 -> 0E-88 +precision: 231 +subtract_eq22 subtract_eq -9472476170184967170916388944424428073.762179364482871478927377748220986887757575383768526145177454174581E+213679881 -> 0E+213679815 +precision: 3 +subtract_eq23 subtract_eq +56. -> 0 +precision: 236 +subtract_eq24 subtract_eq +Inf -> NaN Invalid_operation +precision: 122 +subtract_eq25 subtract_eq -79894E-145988177 -> 0E-145988177 +precision: 184 +subtract_eq26 subtract_eq +103353.5250752219059388110692730326272621973176735935204327719242 -> 0E-58 +precision: 197 +subtract_eq27 subtract_eq -5113427982038661575882141067487915156515412197299944909968031227821423562708795539612812428279275786476756374213333236846298280130007195792209864400629418703083906385E160582720 -> 0E+160582720 +precision: 41 +subtract_eq28 subtract_eq -85349735803691540321632391615071309 -> 0 +precision: 77 +subtract_eq29 subtract_eq 7036697875727661049844 -> 0 +precision: 171 +subtract_eq30 subtract_eq 882609617004678952088218496428744604434917294343771925e329016152 -> 0E+329016152 +precision: 52 +subtract_eq31 subtract_eq .10611783212646 -> 0E-14 +precision: 110 +subtract_eq32 subtract_eq 87897339146038196738963670956641932288763089237002161131178937351781985352220980911654809 -> 0 +precision: 126 +subtract_eq33 subtract_eq -1145618753143858381423648685820936483630E+407557285 -> 0E+407557285 +precision: 110 +subtract_eq34 subtract_eq -8029185730312292772341128369772573577943104734083904853726394054980.6695163104110 -> 0E-13 +precision: 275 +subtract_eq35 subtract_eq -785600384399039518794460742627937135275458261013708063831107561523639170871895730369746409497058627520635467714518429438650516834527897328040996843083083187421449481466533801170493887607724616394419186 -> 0 +precision: 244 +subtract_eq36 subtract_eq NaN78 -> NaN78 +precision: 161 +subtract_eq37 subtract_eq -386915269266879289821816865408106199322932374422724693435121007513604E188956348 -> 0E+188956348 +precision: 250 +subtract_eq38 subtract_eq -NaN52162733346091749140089490292822394879994595943362967945 -> -NaN52162733346091749140089490292822394879994595943362967945 +precision: 292 +subtract_eq39 subtract_eq +546500504473398297705158627716940614016851366495326864571184239953894144409507393262667800017044108039617151442099705287378492063981141523015026 -> 0 +precision: 270 +subtract_eq40 subtract_eq 606785121125588261372005202871001932776313606066026434012674E-10716434 -> 0E-10716434 +precision: 81 +subtract_eq41 subtract_eq -30066727443346E-176563152 -> 0E-176563152 +precision: 242 +subtract_eq42 subtract_eq -7099430521688213091161836055747309139553447085157596685710554221717088778548679431392543590244.24132552333131288176201333601141450064276896E-388093596 -> 0E-388093640 +precision: 136 +subtract_eq43 subtract_eq +56944539861e-289258488 -> 0E-289258488 +precision: 251 +subtract_eq44 subtract_eq -810590044389667611634819457938143569716576789459165086753932599256125478978799781735149544943406225684255896089478282450429352126703836367811622767603826209221319446043410409658931975394810487360974358705183622300651128210686551366e-80621037 -> 0E-80621037 +precision: 65 +subtract_eq45 subtract_eq -6140436048281797228904.139052224363381146363401593084991105961e-69973553 -> 0E-69973592 +precision: 227 +subtract_eq46 subtract_eq .66789586385489795490645905418601883434056853152017854291474237222321820375855287e-200737001 -> 0E-200737081 +precision: 210 +subtract_eq47 subtract_eq -193041945619755966149009257309691955464104646051429137191319666773613 -> 0 +precision: 204 +subtract_eq48 subtract_eq -53156962752408745239896930321508294541017212300918658043611177053148851317118002173899964529782806422928329363301145118977370207613834705987023644e361340385 -> 0E+361340385 +precision: 136 +subtract_eq49 subtract_eq 77923357693463067701670562633098422265175300163426338757006090702530387793267441e+130276390 -> 0E+130276390 +precision: 233 +subtract_eq50 subtract_eq -.63680172281755911339211526077176805413314366532566175427265887036805681670367764759467245880573E+67433220 -> 0E+67433125 +precision: 66 +subtract_eq51 subtract_eq +63363260710622901 -> 0 +precision: 235 +subtract_eq52 subtract_eq -Inf -> NaN Invalid_operation +precision: 29 +subtract_eq53 subtract_eq 93965370.1E-191153437 -> 0E-191153438 +precision: 184 +subtract_eq54 subtract_eq -NaN19970 -> -NaN19970 +precision: 257 +subtract_eq55 subtract_eq +.4772676955184643695930468345736390213819557112612244482834897363658338477397376448929161911010356 -> 0E-97 +precision: 203 +subtract_eq56 subtract_eq -881328409836490372092698601413592750003528157199948431280910637886415927198203893720250085131859315530645 -> 0 +precision: 293 +subtract_eq57 subtract_eq 80. -> 0 +precision: 159 +subtract_eq58 subtract_eq +6414774783.e-281590695 -> 0E-281590695 +precision: 247 +subtract_eq59 subtract_eq -Infinity -> NaN Invalid_operation +precision: 92 +subtract_eq60 subtract_eq Inf -> NaN Invalid_operation +precision: 286 +subtract_eq61 subtract_eq +307879416243853256648330793136E-398067194 -> 0E-398067194 +precision: 247 +subtract_eq62 subtract_eq +882830021016837913740547843730175072197339406476406967288626607974464439237698111113411262141234132159278489475964568519898283413415841469832317694488782373986879315855793351192586581239100529104 -> 0 +precision: 2 +subtract_eq63 subtract_eq -sNaN -> -NaN Invalid_operation +precision: 211 +subtract_eq64 subtract_eq -659523529091494518004165669780399742776383806883968746260394901050731145240542453563120904651992889744317237978324019705501089903130431993 -> 0 +precision: 236 +subtract_eq65 subtract_eq -758451741904712653552666981837494823720647872763444329862121366388157498325526572450163431150323779174312784256352133709238828093950307071260780562081557888232504256308 -> 0 +precision: 50 +subtract_eq66 subtract_eq +53223051128459e375001933 -> 0E+375001933 +precision: 123 +subtract_eq67 subtract_eq +Infinity -> NaN Invalid_operation +precision: 79 +subtract_eq68 subtract_eq -Inf -> NaN Invalid_operation +precision: 108 +subtract_eq69 subtract_eq -Infinity -> NaN Invalid_operation +precision: 90 +subtract_eq70 subtract_eq -13110917766559954785645934870849694768016229279629054053e-175876701 -> 0E-175876701 +precision: 232 +subtract_eq71 subtract_eq 592724827123329320751500766118905071768607362935376105923812409893311661716874666184002081652164188444256594660308294639761258845656328252148489975494774447912011040456893201430691341611681749 -> 0 +precision: 281 +subtract_eq72 subtract_eq -74325985524385419906.78261197100230469690438162421900203638279187114 -> 0E-47 +precision: 91 +subtract_eq73 subtract_eq +.5219851052 -> 0E-10 +precision: 179 +subtract_eq74 subtract_eq -21688966901917452973044867315266509574531693030805077269152156287138859345255776425038854543.148978084716379911356724479814908005587949e+389754405 -> 0E+389754363 +precision: 118 +subtract_eq75 subtract_eq +352458526057101.65282289448920 -> 0E-14 +precision: 276 +subtract_eq76 subtract_eq -Inf -> NaN Invalid_operation +precision: 298 +subtract_eq77 subtract_eq -49089516713724335980773372349422180642533976365826056430044789049191604846903426487987785760305319197553483133961584730351040637450679345197893658007750141084026 -> 0 +precision: 271 +subtract_eq78 subtract_eq +.9165987320776988604542543005148927647992887963923331720216606237245980965099745680857380866298029513674826849351051046985376556968190203687245538121377507354774022074456146382060232917152145014413970879460211259893212214472983802787423315855572706130496814 -> 0E-256 +precision: 102 +subtract_eq79 subtract_eq Infinity -> NaN Invalid_operation +precision: 26 +subtract_eq80 subtract_eq -875064.42316832576 -> 0E-11 +precision: 294 +subtract_eq81 subtract_eq -Infinity -> NaN Invalid_operation +precision: 186 +subtract_eq82 subtract_eq -18486.67228238716789548444032480327915222485066788726400961320840035812224544877204911398969565356250521820827501877403027837300576411161449591571109094178123975225362228741180719904 -> 0E-176 +precision: 203 +subtract_eq83 subtract_eq +7090413797206016022307797799814 -> 0 +precision: 132 +subtract_eq84 subtract_eq -4233012281757742696744880729990596936695780407037980021152312685725.347040277449446135 -> 0E-18 +precision: 266 +subtract_eq85 subtract_eq 354988173436847910529293850269444734033125047862259695048868344080925480685010249325998.56419164331527975684E-160937522 -> 0E-160937542 +precision: 107 +subtract_eq86 subtract_eq -9509723875142094709622386775921905708816.594757137228869487803234e+271353563 -> 0E+271353539 +precision: 110 +subtract_eq87 subtract_eq -15652769761458911682614053419656680583759248187686533460363471140657233 -> 0 +precision: 145 +subtract_eq88 subtract_eq 2705666486297163357594911092974214113984646045059798797399409607861313445760508740941294924011573248690232281E-173938906 -> 0E-173938906 +precision: 174 +subtract_eq89 subtract_eq -649777430141529441115920528640986122649598021918973274138559967143177247308027943074275523733179973978465052242055330245474224115636215161397731767339533378E-189633645 -> 0E-189633645 +precision: 97 +subtract_eq90 subtract_eq 58197384589709307992685616379085554162003339711093143914941264901036549251183704091 -> 0 +precision: 250 +subtract_eq91 subtract_eq -.26203093531334752254041929609681161783546715139840861410222e-365927753 -> 0E-365927812 +precision: 292 +subtract_eq92 subtract_eq +NaN -> NaN +precision: 124 +subtract_eq93 subtract_eq +8676552223939835291918165880929525695338268118512315691140014547000302833967897744586553538221931673214600554884785531459 -> 0 +precision: 8 +subtract_eq94 subtract_eq 5612 -> 0 +precision: 115 +subtract_eq95 subtract_eq 189.e-407634206 -> 0E-407634206 +precision: 29 +subtract_eq96 subtract_eq 426101300295420544587421E-79791903 -> 0E-79791903 +precision: 67 +subtract_eq97 subtract_eq -4455991746618922963260236997038066432547374042861936223226294659398 -> 0 +precision: 129 +subtract_eq98 subtract_eq -.75082176424768542833122551238117139905228318521682275623747526787760942295428612113929441343020163705289545 -> 0E-107 +precision: 292 +subtract_eq99 subtract_eq -Infinity -> NaN Invalid_operation +precision: 65 +samequantum_eq0 samequantum_eq 6636023718924230245771726417014590970982891492 -> 1 +precision: 141 +samequantum_eq1 samequantum_eq -659081287982687032640963310 -> 1 +precision: 116 +samequantum_eq2 samequantum_eq +.956099822146866314870e+96185702 -> 1 +precision: 149 +samequantum_eq3 samequantum_eq -17322291811668211169796873906973661143274805238972025027923756544867591724585218264945967539083295638318e340259937 -> 1 +precision: 197 +samequantum_eq4 samequantum_eq .509396036360769292103211472276406936046811061945620981180786871760740262832397290042308949488479710196346139497136968129574832908362698251025799488 -> 1 +precision: 191 +samequantum_eq5 samequantum_eq +84146237284213446821567986513125010003633236814558891298261753200123777404082423873654214050145313163988608010112516577844321123074495743480370115 -> 1 +precision: 258 +samequantum_eq6 samequantum_eq 275955838601353512494577621759462612832442472887865107845123679608218317250659719962585260805411138329795159240303527198350059521776995235155 -> 1 +precision: 157 +samequantum_eq7 samequantum_eq +409867877825863980546884946929229409061872859979460840644908465164727275265653106859513463895533459079158874501257311517113153024256E-175652516 -> 1 +precision: 147 +samequantum_eq8 samequantum_eq +3450520745012120387 -> 1 +precision: 233 +samequantum_eq9 samequantum_eq -863583145831219717539478944666925768512947040647632400477815844776449215448019536350648320339463567702567745268852434273721619912899617431564913 -> 1 +precision: 184 +samequantum_eq10 samequantum_eq 132884900172472808233684759193469.475327331839097561061203440512930482686000622791807e-268685697 -> 1 +precision: 141 +samequantum_eq11 samequantum_eq +.6110731165744071131715605852881334424188713970005216974027 -> 1 +precision: 3 +samequantum_eq12 samequantum_eq 55E-112890844 -> 1 +precision: 229 +samequantum_eq13 samequantum_eq -.8009636924284118062076836454858803719972702060711010971605774931139886447596381875917841623576031864721511037853952037633225269404894288575230072990543882433860896095089095364826600993014083450038974215902791420 -> 1 +precision: 267 +samequantum_eq14 samequantum_eq 55202514881932030952.17255907615942e384076912 -> 1 +precision: 105 +samequantum_eq15 samequantum_eq +.267886639090 -> 1 +precision: 11 +samequantum_eq16 samequantum_eq +.27844 -> 1 +precision: 235 +samequantum_eq17 samequantum_eq +9646182495399112615046112754085510349892669626965787387367544324284173841119067976808704403660205294493405152803924086698985354397619539021524892422990598930110468430458124779047933542344680220922853356938764935109939.146531985043E-2299473 -> 1 +precision: 292 +samequantum_eq18 samequantum_eq -329646180833649789359181380730260369955201414651883457765378021063854867649649673381275668665842926282585642697843189685297545288428581E+366429638 -> 1 +precision: 224 +samequantum_eq19 samequantum_eq 4768818293001023026161929156343776858975937516530388559670260546080042739474198027281711872170934577031609463260183919948708740964528077203582862489387947042177484716262 -> 1 +precision: 274 +samequantum_eq20 samequantum_eq -Infinity -> 1 +precision: 163 +samequantum_eq21 samequantum_eq -68207365541577911098741641113873006256817457201808451514767E+209696746 -> 1 +precision: 226 +samequantum_eq22 samequantum_eq -22034421469638270677732274085990679654382820855276299964792085570742291390405034443726378869480296260313033771303271469094905071578648726962170017041308730570941977507940442033468e+169075718 -> 1 +precision: 244 +samequantum_eq23 samequantum_eq .235039685254851408133013164487206930772647005842420377438877847370827300411494730413E+200895650 -> 1 +precision: 267 +samequantum_eq24 samequantum_eq -37046156342610278865737421022842913796217595538183.501432834601643969158188108046929916882028164933709952243507008158626727196017026992955247572871440510101866724910051261809550926476542174984177564596958576350482 -> 1 +precision: 162 +samequantum_eq25 samequantum_eq -NaN29692247862404002295474583605389385489408066109656694054 -> 1 +precision: 105 +samequantum_eq26 samequantum_eq +.292993135 -> 1 +precision: 235 +samequantum_eq27 samequantum_eq -Inf -> 1 +precision: 128 +samequantum_eq28 samequantum_eq +65207120311698694539729147950925766699309158708298691999790028418135871767915723656556122412491651625e57832031 -> 1 +precision: 231 +samequantum_eq29 samequantum_eq -9233325489791730990232295783171803199007579385390782332213422595915140897432438049508287498184967513240390185247513985E+61111976 -> 1 +precision: 42 +samequantum_eq30 samequantum_eq -29611140897430 -> 1 +precision: 123 +samequantum_eq31 samequantum_eq 73021811403325803065564289752873426338434122121173657354285755578925482684696750e-341987291 -> 1 +precision: 132 +samequantum_eq32 samequantum_eq 77785181196219091516566322094076286013046899681422268919778597126502937308935685230 -> 1 +precision: 141 +samequantum_eq33 samequantum_eq 341533982536562818.767688227389531654195953518805653616526871064682043294178064112019487117263517974948007850061246429932264107E211012554 -> 1 +precision: 4 +samequantum_eq34 samequantum_eq -8389E-329282299 -> 1 +precision: 136 +samequantum_eq35 samequantum_eq -40296223624677956926413576343132258024544885467759849.201577893856649377714503179054324844139350003400471282E-164183575 -> 1 +precision: 292 +samequantum_eq36 samequantum_eq 9622200771076799483566222584291083605039244517111671681385828577686644077561300820845475858005356699414758492459407 -> 1 +precision: 171 +samequantum_eq37 samequantum_eq 429549354152373289462463093983582475613365441302E+159083263 -> 1 +precision: 155 +samequantum_eq38 samequantum_eq +97726677497580231259059047653333038926827.2247802828691860690556607025486624002820502436412947446512530218200552 -> 1 +precision: 109 +samequantum_eq39 samequantum_eq +4712840883561965989631084556865362657520642204681500401383533649072798360974926327212538877473216072E171591299 -> 1 +precision: 110 +samequantum_eq40 samequantum_eq +98698847724100608215039127086241 -> 1 +precision: 95 +samequantum_eq41 samequantum_eq +75146851422435024814063890274004486193724868086410920423351613832E60313368 -> 1 +precision: 24 +samequantum_eq42 samequantum_eq +.1586655 -> 1 +precision: 163 +samequantum_eq43 samequantum_eq +215259 -> 1 +precision: 125 +samequantum_eq44 samequantum_eq .510414543541185700288421636093259649003830074921309777593729931136098850172498877836E-236561715 -> 1 +precision: 148 +samequantum_eq45 samequantum_eq -7047521360841210519607746409591594341093713379938703018332918386400398779773137978955439499347778152 -> 1 +precision: 116 +samequantum_eq46 samequantum_eq 661062352641471598065348975185380583113649876634729207082575012694210298 -> 1 +precision: 196 +samequantum_eq47 samequantum_eq 162776134353855333831263518645278339562691033327503159951505432613.83929480108965765558501027264973888101472311763 -> 1 +precision: 204 +samequantum_eq48 samequantum_eq -Inf -> 1 +precision: 91 +samequantum_eq49 samequantum_eq -.58050631153774822790173694055243609362004059700002406 -> 1 +precision: 7 +samequantum_eq50 samequantum_eq +937. -> 1 +precision: 141 +samequantum_eq51 samequantum_eq -83727364697855217097616308750449386149335340801997468168630488605543238561581071783026561055672057569693 -> 1 +precision: 197 +samequantum_eq52 samequantum_eq NaN -> 1 +precision: 298 +samequantum_eq53 samequantum_eq -86123393608017516943830004881142644470246979135410683323974109871518163695097513062138216873035133906098137665267173095086968608387255678287205325105964765394014881762504596496597391677096764354655986584431506842165100808101434450129970889216320E-12735549 -> 1 +precision: 245 +samequantum_eq54 samequantum_eq -98288247332507445214668001684766323944682028189479117.748114153493190138576569566726071944319363164076891525441811058784342327768577367017793305538694118336111910327259 -> 1 +precision: 15 +samequantum_eq55 samequantum_eq 281154915.3 -> 1 +precision: 193 +samequantum_eq56 samequantum_eq -5472399503047429253644681324875558188850525090918021117342433699058985e+354977599 -> 1 +precision: 198 +samequantum_eq57 samequantum_eq 792339587199573289036600727171448722117970652737871388348972808075872515287826811678830716055295506486988678802288 -> 1 +precision: 138 +samequantum_eq58 samequantum_eq +.137313924180090976883119754321542296386183730838576758627767926418054230482450 -> 1 +precision: 107 +samequantum_eq59 samequantum_eq 6575156871800 -> 1 +precision: 152 +samequantum_eq60 samequantum_eq -80014250060464417177182807169528523333055928790781917727750817726743912036065674252822514297572465074 -> 1 +precision: 278 +samequantum_eq61 samequantum_eq 412925898426131380613527492427249989928732293310624437424533967513397491862007752969989298456679719388001963403815964652027861685525375346605068362086479984381369644817757259894013096201021550937303557508240224E+263812712 -> 1 +precision: 39 +samequantum_eq62 samequantum_eq 4474544931139291277674181.28 -> 1 +precision: 63 +samequantum_eq63 samequantum_eq -979372402302085785729310.12823654438733758920234773048925984817 -> 1 +precision: 55 +samequantum_eq64 samequantum_eq .51823822154 -> 1 +precision: 12 +samequantum_eq65 samequantum_eq +58963 -> 1 +precision: 189 +samequantum_eq66 samequantum_eq -.9896337014234095079049369923073328464027336713012626411632621353013921196853285361957452592222044726933862473927143241246924663495849419905671686267367848047884589491e304887607 -> 1 +precision: 95 +samequantum_eq67 samequantum_eq -3838782301519245468212342602935198130078078634994905648482136973534744587985715870274347698 -> 1 +precision: 82 +samequantum_eq68 samequantum_eq +78385 -> 1 +precision: 251 +samequantum_eq69 samequantum_eq -790385580658836350106598.788782753470203642620895277914992216060606487223288955086858216261e-386263099 -> 1 +precision: 293 +samequantum_eq70 samequantum_eq -37085768638458254452455259577610787679411955797350306007681814148968648761954148303749387554.999250646395952374576447101569912e223686395 -> 1 +precision: 47 +samequantum_eq71 samequantum_eq -4767934421861945062e-224269396 -> 1 +precision: 93 +samequantum_eq72 samequantum_eq +220735962409905.7632637983104 -> 1 +precision: 159 +samequantum_eq73 samequantum_eq 21007214125622205899189081972697637543024595591615723560187802216928477087563133096220569654423968685365055907899291794 -> 1 +precision: 132 +samequantum_eq74 samequantum_eq -15754388646661812890916019755809247780283923067986857644773849979845727794.1776188451415482432224838798079944202695E+195633237 -> 1 +precision: 221 +samequantum_eq75 samequantum_eq +9173910724284584240398259860278507680348364140988998211589499304249081589481190049484715370172220 -> 1 +precision: 152 +samequantum_eq76 samequantum_eq -27654852.6589282110297027341326915430809174 -> 1 +precision: 207 +samequantum_eq77 samequantum_eq -53.6569459704255484942239E+248417561 -> 1 +precision: 233 +samequantum_eq78 samequantum_eq -9304282497063303761E+290956599 -> 1 +precision: 109 +samequantum_eq79 samequantum_eq -332234050119501343140022952097958053186197893214041613064119772547819732426150620 -> 1 +precision: 207 +samequantum_eq80 samequantum_eq -8476106210440444482771969627620796177168109409845354748464659110071505623706552420444738479077423021809075105192625199270277871587044108548440754582805.330149072509047338966912029186880954889352 -> 1 +precision: 198 +samequantum_eq81 samequantum_eq 29874290472513565770058695422422677083299476782520849483518849698389622083530665348133421186227419993360325571470976296083638532042529049626967019771228385845498 -> 1 +precision: 147 +samequantum_eq82 samequantum_eq +Inf -> 1 +precision: 126 +samequantum_eq83 samequantum_eq +87597530015351399251790076073 -> 1 +precision: 160 +samequantum_eq84 samequantum_eq +69398577 -> 1 +precision: 287 +samequantum_eq85 samequantum_eq NaN -> 1 +precision: 106 +samequantum_eq86 samequantum_eq -Infinity -> 1 +precision: 174 +samequantum_eq87 samequantum_eq -61e+112658204 -> 1 +precision: 242 +samequantum_eq88 samequantum_eq +sNaN -> 1 +precision: 292 +samequantum_eq89 samequantum_eq +Inf -> 1 +precision: 186 +samequantum_eq90 samequantum_eq -19201382543454535608999049241930464018454330008332212559522223678041846446843289161049810506499341543.9328104719646818e+276559929 -> 1 +precision: 287 +samequantum_eq91 samequantum_eq 686892402169021883.143942639770199297784573934851178719352132139801877149686701880782e237900536 -> 1 +precision: 165 +samequantum_eq92 samequantum_eq +.46127300805423420554555994480778723952998437699193246530263e+90228093 -> 1 +precision: 107 +samequantum_eq93 samequantum_eq -1059943186953767077520372189330284323518615759030124544624074882349355617299491078589060940715452387 -> 1 +precision: 214 +samequantum_eq94 samequantum_eq 628333539005452432679958649554560240496136263351381798533960885325060412538798492374377924327985577316774146807589265594876943516567E390085418 -> 1 +precision: 274 +samequantum_eq95 samequantum_eq +717867170184432434489E-309257 -> 1 +precision: 281 +samequantum_eq96 samequantum_eq -6541874e52586261 -> 1 +precision: 207 +samequantum_eq97 samequantum_eq +7946179467285238831685666582169154515417786797391811582427614436701637140764646057090631876238695748365001951751228982205798866206615904722823303105470061221294848967122670954258054433875 -> 1 +precision: 130 +samequantum_eq98 samequantum_eq -369104297433255855920185980001743277639e357916372 -> 1 +precision: 192 +samequantum_eq99 samequantum_eq .10230436545631979541026308423306426700600106122403245986318832401922118063405308206074787322577439719950304279579798445836170633987560313215748176850765682832754962300 -> 1 Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/divmod.decTest ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/divmod.decTest Thu Jan 21 18:27:06 2010 @@ -0,0 +1,2010 @@ +-- +-- Short random test for divmod. +-- + +rounding: half_even +minExponent: -999999999 +maxExponent: 999999999 + + + +precision: 4 +divmod0 divmod +.19e-911565689 3 -> 0 1.9E-911565690 +precision: 134 +divmod1 divmod -7511169757701755204403067994764250868266023726415875410280423917144182133410083809891399408586918959074 4246476766758966627011583811854662354887063790038443 -> -1768800389183453909698778567576755142065118498146502 -2797376381641405358930320502134014338018800092982688 +precision: 262 +divmod2 divmod -Inf +7.905442548849169790507598032704018880614786823147752534821712985326338770302489617E486798639 -> -Infinity NaN Invalid_operation +precision: 216 +divmod3 divmod -757719995173294752327540483701116946913961037738625667311193429926112129713646725612959034118065582310312494071362898125823373077706316701639971503.7061421 62623122235568293491576846461787522859478144460815517209962234575328066320595 -> -12099684080314501435119346718279324158329411218353503927245988982340212 -27825671910110331254919071614638382146665442212850800774501568154918287705363.7061421 +precision: 9 +divmod4 divmod 58874 71 -> 829 15 +precision: 116 +divmod5 divmod +3063381499118251189501526595347827951861335053395539502198531440261650283119762539089812335694541778324502355. -76749343404.801352414257193436129675283483836083180040 -> -39914106925462107547516026578786697339811753476585911930459847553164645698379574738124471247887325 65485070510.377475623744069994407636169843182391007000 +precision: 283 +divmod6 divmod 95278944315426441161268668778245716190365285291981028721055159872588435895652229864009295064155047238968855611752168694053328381.14909336E658980559 +18040019163941167631186142057368746456016977211755934999856876663470 -> NaN NaN Invalid_operation +precision: 277 +divmod7 divmod -960844681639178696822800383823190011066535408855585593389704044686042551945657391933477890981818985694456829172359882833715427345447350422194974660885488266545254468740121537348553950677899772903977774952209337946261758103111395779963602437779507102716027099349e-937535433 -4135373772592782415894426263434928319350907173926886268437928383930213988895761946878830469875372904457219769344565180985406404576e+683803724 -> 0 -9.60844681639178696822800383823190011066535408855585593389704044686042551945657391933477890981818985694456829172359882833715427345447350422194974660885488266545254468740121537348553950677899772903977774952209337946261758103111395779963602437779507102716027099349E-937535173 +precision: 55 +divmod8 divmod +158876768812 -773546 -> -205387 476510 +precision: 289 +divmod9 divmod 50947250081216918161706808870464861718990251782783004768889691455353730587 -5981129016058069760853924837734920386e-352163026 -> NaN NaN Invalid_operation +precision: 282 +divmod10 divmod 16185773577934747568221191480696684920984706832876871467198848888724529920070608027836128911875.524356902566291e-920047206 +sNaN5732084142444230736746243019792893792765745282 -> NaN5732084142444230736746243019792893792765745282 NaN5732084142444230736746243019792893792765745282 Invalid_operation +precision: 59 +divmod11 divmod -Inf -7244664E38763763 -> Infinity NaN Invalid_operation +precision: 78 +divmod12 divmod +.478536 +449. -> 0 0.478536 +precision: 223 +divmod13 divmod 22018697323333630054226483729348219322430402559596643e54209663 984796586037718.64226130961 -> NaN NaN Invalid_operation +precision: 195 +divmod14 divmod -475199998271606118563252102.802817799112702924176260428E-480759377 -154301726514172474100424010 -> 0 -4.75199998271606118563252102802817799112702924176260428E-480759351 +precision: 244 +divmod15 divmod -7514971566202107510330228184865473013967457743899072281809471427133840766219052629651745828416600099444352306458725219539250055200933782841388213669701297234588219505478662268475330850e+97278644 57942577980656735092266671077431813770108226505323423817708309944228184050029326545283590212e-154531224 -> NaN NaN Invalid_operation +precision: 226 +divmod16 divmod -.6410850156 87904 -> -0 -0.6410850156 +precision: 245 +divmod17 divmod 231197.15452134146890695612321457e+818649808 1193854219024762E+997408976 -> 0 2.3119715452134146890695612321457E+818649813 +precision: 52 +divmod18 divmod +98624949624597968479064127073302423541404e-413796284 26741316.665082928014 -> 0 9.8624949624597968479064127073302423541404E-413796244 +precision: 68 +divmod19 divmod +4620506488e+462352211 36873 -> NaN NaN Invalid_operation +precision: 197 +divmod20 divmod -9093104978581144244260517666379081942669839648021820354035884780963322607048016833328390419717986010726821586964114465469691571698490758148844408595673599009029028964815417105610626448253747583198E-597311333 -3040224350668899866283530264271390903834179189526458392484973888387344792073.8712200766642597472234e-254848673 -> 0 -9.093104978581144244260517666379081942669839648021820354035884780963322607048016833328390419717986010726821586964114465469691571698490758148844408595673599009029028964815417105610626448253747583198E-597311138 +precision: 17 +divmod21 divmod -222. +Inf -> -0 -222 +precision: 147 +divmod22 divmod +Infinity -Infinity -> NaN NaN Invalid_operation +precision: 185 +divmod23 divmod +884906904484052585245232010921648770121311961951047695213151115351995538806947425.3209078197729965665124749924898516108999609799168 -Inf -> -0 884906904484052585245232010921648770121311961951047695213151115351995538806947425.3209078197729965665124749924898516108999609799168 +precision: 277 +divmod24 divmod 20555693380562544678359266818486517458570825253490966813528395387981978059097988510183259736171482117957962919235048905220998503185929376503197e-670166370 94711973907076355538449056746762218069650530382044205916108650316434715 -> 0 2.0555693380562544678359266818486517458570825253490966813528395387981978059097988510183259736171482117957962919235048905220998503185929376503197E-670166228 +precision: 271 +divmod25 divmod 94141069299048180819866071155858389621745969357675329432366776102572315372673963803208301770515872284007927833656439133560841669961967098867711 +97596084591484893617586908092791319816427668681537211794256029804493171e-982162147 -> NaN NaN Invalid_operation +precision: 6 +divmod26 divmod -89e-964603805 4E-810846152 -> -0 -8.9E-964603804 +precision: 13 +divmod27 divmod -4612e329539252 .14 -> NaN NaN Invalid_operation +precision: 77 +divmod28 divmod -.7668428128414658245374475479286275106336632663053266162 -149789.2772741451013253614 -> 0 -0.7668428128414658245374475479286275106336632663053266162 +precision: 96 +divmod29 divmod +35.39 -4.e-784735656 -> NaN NaN Invalid_operation +precision: 264 +divmod30 divmod -6038006437931361143428531856707793138838390398882156436007334387434138249220383258667665378532762954254771014223031915876431341638983183769248583568985890131960387E-677345570 -15832188347329921343692031644797080336134306792863981635680.5378673730314278373792E-341976749 -> 0 -6.038006437931361143428531856707793138838390398882156436007334387434138249220383258667665378532762954254771014223031915876431341638983183769248583568985890131960387E-677345408 +precision: 10 +divmod31 divmod -78273. +1.5e-213179468 -> NaN NaN Invalid_operation +precision: 99 +divmod32 divmod 3515200834773.55219096874995084234437876043913834436796531358411152041286418552512E613479058 -6824309203143832356363701884392920849367 -> NaN NaN Invalid_operation +precision: 180 +divmod33 divmod +227481090101976963156893924734511262272077621784929975642803847391513170360125702004991421675900502227847690565191872064269712336565705023466200732757119696299938333506 439677976294995885323446574830623451906948293205505201666574025279055728122765390623. -> 517381134299416574358021793720614360465363287175501812358711480791039358398860198233 104048424643529895379325907674228112163218033084229471083948047619622998258478964347 +precision: 199 +divmod34 divmod -.82983667474428066946738427265714785722388923640155595139206641972276812010079785956518467768669551932903244505273534039698e-78356216 -963220462799821194915324604001776503982741689156.5804242836138 -> 0 -8.2983667474428066946738427265714785722388923640155595139206641972276812010079785956518467768669551932903244505273534039698E-78356217 +precision: 118 +divmod35 divmod -59562319022462366067011255229614928383350531769816460799929149597805195125054608 +.6829642923311529608562640801448874023400E-881094763 -> NaN NaN Invalid_operation +precision: 251 +divmod36 divmod -632390350498297725110279714077626226362857411549087035314619504343134923788007074057246523085968880157673672327643701347840296442396435630340384436 9836565041395204562.881487778408146134447826759978190142657824233968526306 -> -64289754384483830591996750407666005252460721156481300663569187187626801352864879247689930459770539134891395266700474073900178522 -2407461735403577619.135843055540900503593727112496404657958965457346800268 +precision: 247 +divmod37 divmod -4621226385583621060785676572915683898 -.391798620291681202e-916472046 -> NaN NaN Invalid_operation +precision: 293 +divmod38 divmod -66249.714239715764832047860456268401060169641335374279420077878528644130464673869084744677570548242020177846450005281391876832603742 -.73262361608930656111769288631715885733216982255698254862543052862E713835367 -> 0 -66249.714239715764832047860456268401060169641335374279420077878528644130464673869084744677570548242020177846450005281391876832603742 +precision: 264 +divmod39 divmod -21246596290329306444577899927878430637441050358124854564053466059281394572077509028844061953341372694199140.5754862714906 +213990277459730420944526131417186432011728744246188737737684 -> -99287671115467286432188953818839450414213831568 -35454200320408672856705985711328348977680180325806951790628.5754862714906 +precision: 248 +divmod40 divmod -251267938950125114287965632981485791172785995153225283.5221 75407021061639076370247946450e+713350130 -> -0 -251267938950125114287965632981485791172785995153225283.5221 +precision: 284 +divmod41 divmod +2210484708807004801147643774831368888485134737 -2924761098153755646.3193 -> -755782997183039972839049219 1524651296464485847.3733 +precision: 45 +divmod42 divmod -Inf 1793057787185332. -> -Infinity NaN Invalid_operation +precision: 28 +divmod43 divmod -29199. -57 -> 512 -15 +precision: 246 +divmod44 divmod 156814943541406966774944582436787847953534606689167974829625894761391244961266787548294349367621081779789278952611657344911075750181.324379 -.180141604153620668247399305471265843245024273777894822130012247041495 -> -870509310040776282034759855039887187403025932309067017629316147173053209478029120774192423219610255348411426263432800058625955076552 0.009306182858650485602164541762099868715562524749395799733461754474760 +precision: 26 +divmod45 divmod +11229E-754938308 +34 -> 0 1.1229E-754938304 +precision: 138 +divmod46 divmod +.2132761304435706664382196980322095494868793793760281410759080790420276933820686053463294594177334793567044308725283436345E-594254118 53477061107476077565898945438626361386596996053885848736587 -> 0 2.132761304435706664382196980322095494868793793760281410759080790420276933820686053463294594177334793567044308725283436345E-594254119 +precision: 231 +divmod47 divmod -.34033046308691982746814236395116366374422170478453710403315516718868629668556399812952338543855739366877501234450613309819173980663269334445425335293435142151180102850880544503158759855553084980965651073469e754318188 -.34225336728815975648671770726362583117491318557494996930473542502874143863477015229912135994584874118791 -> NaN NaN Invalid_operation +precision: 261 +divmod48 divmod 164142387289982071388670323709695842374342399500819716419272351466990229166034621887910852949900856675800608973438966207410258621564298561387265427895136074014835537677743452649554837288697861503047517604857973007.1820199684292643012870854960 6663042317307811969.58835128485359157302007613081591171246824516250021258131013059849889886147675572500417717920910665813e-811861274 -> NaN NaN Invalid_operation +precision: 248 +divmod49 divmod -186932846866581178007800664810668570234480429397183753448691119225943879746002988621398334607255341383698402603311974871980565932427672.1394098365109540190941326509541095825303 -527158404564447303314877460356971999001889309178970774823339181843630385338236249259210 -> 354604698033848498524190179391583380818301496448 -335843385879494379966538461697092074049981128648522073280765721996425540410291486141592.1394098365109540190941326509541095825303 +precision: 250 +divmod50 divmod -79723610556767546735595880122908196870981458722223710364901611996120984676570345516373555461373113844016839532E-279085616 +149593.6132457553787693610512699936712502015927072864171 -> -0 -7.9723610556767546735595880122908196870981458722223710364901611996120984676570345516373555461373113844016839532E-279085507 +precision: 185 +divmod51 divmod +3254610873826986780274153485956327365873530646517053E+659652312 501097875306257.94382491956 -> NaN NaN Invalid_operation +precision: 43 +divmod52 divmod -496846631004839577237180.332093 +3088622709552.96e-875185508 -> NaN NaN Invalid_operation +precision: 69 +divmod53 divmod 230579451776550921155507489693031237006334283823 -816967534276708239294624 -> -282238206663489376712466 754188849266674426701039 +precision: 105 +divmod54 divmod Inf .310086577427191866605 -> Infinity NaN Invalid_operation +precision: 136 +divmod55 divmod +24754072511862945173415243651143527887441752428559111390051731396931084012069872680552638654790117045448552145877545776803837 +86249044066776896067110334700543117141005983879351865222059429 -> 287006920247110378284686020876367377547098440162771722479884862 26769515812380340020464554747255582391034272009680219335340039 +precision: 55 +divmod56 divmod -720943649253002893757141 -26392.4136260 -> 27316321253118681846 -9611.7664040 +precision: 197 +divmod57 divmod -sNaN -Infinity -> -NaN -NaN Invalid_operation +precision: 252 +divmod58 divmod -2408425551394149152418140570685647658216989050073416954734589774283215790906039391731445593169730778797428522123803833223728397188768559906290497430.18188042518985679834381347662556028203e-946016217 -117471939198401043778915855916747426611237041754153087529958793423044698574647735380436214041 -> 0 -2.40842555139414915241814057068564765821698905007341695473458977428321579090603939173144559316973077879742852212380383322372839718876855990629049743018188042518985679834381347662556028203E-946016070 +precision: 73 +divmod59 divmod -46838900822243252001 6067131332E+361997441 -> -0 -46838900822243252001 +precision: 119 +divmod60 divmod .29710504707442803271433301062233400148972305067963266041512977334667175052716876430358025717559782571789385135307807427e+408570266 316018911136590957402752480309236024133069474131769799.16590 -> NaN NaN Invalid_operation +precision: 140 +divmod61 divmod -214687667640839295841829261181379942033639E-240743052 +186568236910233017488.e571569835 -> -0 -2.14687667640839295841829261181379942033639E-240743011 +precision: 23 +divmod62 divmod -.523534241 +1.22e+155587078 -> -0 -0.523534241 +precision: 272 +divmod63 divmod -NaN -44485102142991032450162050929317053656048214616015526446319357869250131578e-695277730 -> -NaN -NaN +precision: 156 +divmod64 divmod -9488789631032893765681067886064875200742855421092235928282782779713188704059279530632045806885763621143417873513339568693035931768200783e882997064 -3558808259032011203710019484713657180741302425340044662120068190543E-88424819 -> NaN NaN Invalid_operation +precision: 140 +divmod65 divmod .821471151709654628597012210965e-954108783 -939215019598697.e+527182836 -> -0 8.21471151709654628597012210965E-954108784 +precision: 212 +divmod66 divmod +sNaN -74283981155218351447551175198448789535094967644058320798472768622437169705e+400017002 -> NaN NaN Invalid_operation +precision: 280 +divmod67 divmod -.8035036460133777812744126685458972421247380319467237061443011718322029524244469228538973320139410755629636 -5085810292113960324519794570011199337454932977392610E-685718704 -> NaN NaN Invalid_operation +precision: 242 +divmod68 divmod -Infinity -.575890607087314269179363100808413489594023146302653881524598888357812861740124828879327281891811408 -> Infinity NaN Invalid_operation +precision: 278 +divmod69 divmod -743634247418936401431226004065033694694334038832806446983595295599279121431067674896829732412242732551758216397334718375716374938735128617362.169616637086142228560E+763998530 .680036254008426298956553270564536882756609534039825022755801682050279784327600154 -> NaN NaN Invalid_operation +precision: 23 +divmod70 divmod 7 +6 -> 1 1 +precision: 133 +divmod71 divmod -8727780368289174581243 -Inf -> 0 -8727780368289174581243 +precision: 253 +divmod72 divmod -970E-583510498 -9 -> 0 -9.70E-583510496 +precision: 151 +divmod73 divmod -96165659260709401212850337659307351858065528330354218246221850226286604628 -.2076940636792702835753348366615107239 -> 463015926200049549432938645578853244935478889996674682094694481055324790867 -0.0469447565229846465575188319547213787 +precision: 59 +divmod74 divmod -Infinity -Inf -> NaN NaN Invalid_operation +precision: 233 +divmod75 divmod +14061186924277037992085289958918001647546172008085569067065242793427906587119912547743728201543341559691562008162340843981052704986588682729989654256736535477 -8111178742569144483812498776454850239976275602862091195316409761491579705347154 -> -1733556536053264285494828444779092676535588822369737968413795323604303602935527 5043935532468382727069071380517313007933745652526231048882618930744603721595319 +precision: 160 +divmod76 divmod 7035011056077616549221289.230217842717433998785231761704675e+340216512 -350421628718469097258.86497669 -> NaN NaN Invalid_operation +precision: 278 +divmod77 divmod 5856395735436252038840467493370798423648098150728601153208311857848817207044629993122893881792049518937739959533790426809349367085986420587420904806667219225590016442344841819655681799 +29114612635912500502339509060466156402693237577217113238540886977336237227488889759150571992 -> 201149704743537036319444269302166186024779094270152456004089734868809880557215100883741980574 14106746714137661631908940655250202529232539007335706861944742728905136530793309724603198391 +precision: 239 +divmod78 divmod -44205699775358667790073304770763018856068221332387986143773232620263572337988440419306832485846296511951723310556973459851693336300122670681231532478112698217 +Inf -> -0 -44205699775358667790073304770763018856068221332387986143773232620263572337988440419306832485846296511951723310556973459851693336300122670681231532478112698217 +precision: 149 +divmod79 divmod .7169138207197493454717274223879399877030718226863240189185380588874370366203594943381001189251941054440224389250838133532 -991659710882437678706810708297924273843245819993872736915034e+740179395 -> -0 0.7169138207197493454717274223879399877030718226863240189185380588874370366203594943381001189251941054440224389250838133532 +precision: 300 +divmod80 divmod -10575313748269576905560526803840058241990189010299829317895166729151666561703937836051367162855756051538839503001480208092184244526061300889167687521986639715658163363820.24564405630109129381429770482385531603641037294525359578720867175859509408740840965781011208632286844045804698014509539e-636072511 -158877471688640708919355246084822626370916770044741070410141755684952828819785701749573217702989981066776146780152023513783668397904572107348902. -> 0 -1.057531374826957690556052680384005824199018901029982931789516672915166656170393783605136716285575605153883950300148020809218424452606130088916768752198663971565816336382024564405630109129381429770482385531603641037294525359578720867175859509408740840965781011208632286844045804698014509539E-636072342 +precision: 101 +divmod81 divmod +7162475425615567358631.223525319188927736806526927856754687 +.11109742714045329867509607424 -> 64470218707770005103898 0.101057544145941666503405540336754687 +precision: 16 +divmod82 divmod -.39423023150e-185945130 321323e-577378552 -> NaN NaN Invalid_operation +precision: 108 +divmod83 divmod +.1538937684544802256592642134657630667545346608579556965528409184091120083064601179721480523959009153491209e708933087 +.34351981908398099192296625490809289872628898852728074E+829974862 -> 0 1.538937684544802256592642134657630667545346608579556965528409184091120083064601179721480523959009153491209E+708933086 +precision: 190 +divmod84 divmod -44764585967256313695844 +38272517592.e-686185357 -> NaN NaN Invalid_operation +precision: 251 +divmod85 divmod 3522307160388626302778576568513981403760576663354038877695878112516948256980711014499532808149405212443382654975043808241943295190404276140939824918543332816125062424175228093445054484235880378741798168118132442217 -891759780646762822195509797479085846.18196965272431890242985757719329145229648514487779134115820445586429266 -> -3949838551626557517442600296555084585795483847899449886913562108937247183615775024501459492298816642913603896781934088978290693849259802270090891952268784057467957991831252592403 14867105815841923700563805962719404.55881164887940411130921220293585958041359811771217170045467041511533802 +precision: 30 +divmod86 divmod -18872455.E-971883317 1413 -> -0 -1.8872455E-971883310 +precision: 80 +divmod87 divmod 7719471272699699485363770491344536266221261639882234282e-215115052 839769180691320016.75941197 -> 0 7.719471272699699485363770491344536266221261639882234282E-215114998 +precision: 36 +divmod88 divmod -Inf -861 -> Infinity NaN Invalid_operation +precision: 171 +divmod89 divmod 5.496 -26 -> -0 5.496 +precision: 149 +divmod90 divmod +2685186666520932059977826005820637796951289635950787437122475192682106e162388613 +9135330210656333488134081939730169 -> NaN NaN Invalid_operation +precision: 257 +divmod91 divmod -5774319230886218996012278847294.673811E140925772 -912685959252539623 -> NaN NaN Invalid_operation +precision: 285 +divmod92 divmod -Infinity +6053525259831955078036367E647293920 -> -Infinity NaN Invalid_operation +precision: 62 +divmod93 divmod -813.9733885661447924236687032459684914e631560368 +.850873190761175275 -> NaN NaN Invalid_operation +precision: 27 +divmod94 divmod 839895643636027394 -209904868E+820944050 -> -0 839895643636027394 +precision: 26 +divmod95 divmod -.3073215903110714195 623.523609 -> -0 -0.3073215903110714195 +precision: 53 +divmod96 divmod +10716690565.42819848132072657071722 7919239.5879960602E+231896674 -> 0 10716690565.42819848132072657071722 +precision: 114 +divmod97 divmod -86.e963883885 2 -> NaN NaN Invalid_operation +precision: 105 +divmod98 divmod -Inf -38913.89417119305197203125381322218665553961146150 -> Infinity NaN Invalid_operation +precision: 270 +divmod99 divmod -.7750272692898839114914863075291175669308e417763229 +54386644431129155555 -> NaN NaN Invalid_operation +precision: 218 +divmod100 divmod +363428784324467773136779002881077636615285630363949376863630322944545013804541316580009120723414084464890867771841592427927482591561415882349597076163310940128643483850707688855163497 +Infinity -> 0 363428784324467773136779002881077636615285630363949376863630322944545013804541316580009120723414084464890867771841592427927482591561415882349597076163310940128643483850707688855163497 +precision: 2 +divmod101 divmod +0.0E+303158629 -1 -> -0 0 +precision: 78 +divmod102 divmod -.5749354078993745 -5295322.4E761038718 -> 0 -0.5749354078993745 +precision: 32 +divmod103 divmod -93906.561e-65404130 -1105 -> 0 -9.3906561E-65404126 +precision: 154 +divmod104 divmod +.40984770482965756 +NaN56759548430164575986140923006176125025952350895213000365200861789245690992178 -> NaN56759548430164575986140923006176125025952350895213000365200861789245690992178 NaN56759548430164575986140923006176125025952350895213000365200861789245690992178 +precision: 257 +divmod105 divmod -909221290495276348213915735102117928638142997933077564265277512012452730118111477515674826931683319223803659854282230581939758419505684106219490112555561910039596622119861087096159 -1622874178190952265481998642725226544974606.8290485920426420464257681998438233933865124438e-801721624 -> NaN NaN Invalid_operation +precision: 72 +divmod106 divmod +4905567085901846170635551068776479605307047241451012545943164428817 -Inf -> -0 4905567085901846170635551068776479605307047241451012545943164428817 +precision: 175 +divmod107 divmod -70772401532332037468898551821262487138937960169041355089711934907497666736682554324370904890600441281388323165830986 Infinity -> -0 -70772401532332037468898551821262487138937960169041355089711934907497666736682554324370904890600441281388323165830986 +precision: 194 +divmod108 divmod +960198539421340854407290721070295691645029449746410064708 -7061411287209424330862487263 -> -135978276914783493017148512265 3103051768495009888448284013 +precision: 167 +divmod109 divmod -9009433734713295.119036719e-415575626 .563444856787 -> -0 -9.009433734713295119036719E-415575611 +precision: 239 +divmod110 divmod -60114.830021794 -6864461.E-135286754 -> NaN NaN Invalid_operation +precision: 89 +divmod111 divmod 877121008086007516143808904269771 -Inf -> -0 877121008086007516143808904269771 +precision: 82 +divmod112 divmod +9650938569039296218314027413936499791369754360285852380 -119520668110420276626136418 -> -80747026615707897504970114681 38255970468957600875299722 +precision: 196 +divmod113 divmod 3497613538383952082208968990605098812601229299714792667390223929006895131319588.58335548960400028774365761114155412587500298694450725207705121 -5584203449746885577893902091874767001.822395670974946130502115699391536e-855926274 -> NaN NaN Invalid_operation +precision: 180 +divmod114 divmod -2091583936766111660418405432154426709 +Infinity -> -0 -2091583936766111660418405432154426709 +precision: 111 +divmod115 divmod -533758817389542810130225388783983847472024473338059635934518165642861889905545854133729156002096649377 -605893913256928615359242360810040183403856677769282 -> 880944346379665641246250817970849774795419416574636 -134426812127509398610695386778682060098936155518025 +precision: 71 +divmod116 divmod -4812656305742150220373849176631406964473517560996457378796536135 +649993.50996174085230039953613485 -> -7404160552349864374088532037967169024031240622472636176048 -481124.54383060918193149793192720 +precision: 177 +divmod117 divmod +704912763170299935.38525733349015E+334504187 -5425962330.625072e-464504008 -> NaN NaN Invalid_operation +precision: 79 +divmod118 divmod -452421274711950456915967213737752848906 -1653062207623072726 -> 273686781190457455113 -764147602473300868 +precision: 3 +divmod119 divmod -sNaN +.0E-251312611 -> -NaN -NaN Invalid_operation +precision: 263 +divmod120 divmod 234573682437864959986634400287983066231031 -792119350626055280173 -> -296134265944227393450 287169589621811164181 +precision: 144 +divmod121 divmod 14470173589794391386673238238014119797674290709771747879758720895328055994494891840245679367860460086824234636083948536551694398558508018 -Infinity -> -0 14470173589794391386673238238014119797674290709771747879758720895328055994494891840245679367860460086824234636083948536551694398558508018 +precision: 56 +divmod122 divmod 1334164e-167977713 +735e-285823620 -> NaN NaN Invalid_operation +precision: 50 +divmod123 divmod -79713420891403117599723 65399311176e239486132 -> -0 -79713420891403117599723 +precision: 245 +divmod124 divmod -446058243488042211607281758874420.633 579137.492203020537 -> -770211304730506894755526566 -246338.673852914058 +precision: 200 +divmod125 divmod 38950226171182285084336990683382763887221112366695053798051829720287521891376017832727218263751337587684477726349752065604136825799709132798127796 -.9351633396483943154185155537608072091448273598765603376954253212209851791e-337890536 -> NaN NaN Invalid_operation +precision: 220 +divmod126 divmod 13.612798e634479407 -8002 -> NaN NaN Invalid_operation +precision: 75 +divmod127 divmod .557301018378633741705440295536899068045636515E-758336583 +Inf -> 0 5.57301018378633741705440295536899068045636515E-758336584 +precision: 26 +divmod128 divmod +245371 +5.0E-741771260 -> NaN NaN Invalid_operation +precision: 250 +divmod129 divmod +46490103880529 -7793205 -> -5965466 4421999 +precision: 74 +divmod130 divmod +55933999840403723036930 -5011886481 -> -11160268703700 2298357230 +precision: 274 +divmod131 divmod -4788925068117183607490313282038472099947078593020448717002832265225408104519221079866995624264916247582858156007287656791685101777850.6590560844894198067255558111117947966790897961690521686202483623518957565937256229475385441226235262614098911118460 -.9787401480610208706247671644360161512743299983200299921511537332793364700547219973421060880970591016952859621253301154861946 -> 4892948427225048945819841442698132528827334280036408659134279902922332337245723059070773124263956120784921887848726895567951447703261 -0.1888169799142302758885471445009328086447005023763734531136214559508524319922644097089669376087905297677328409979054770994094 +precision: 109 +divmod132 divmod -69330315520007602260578 -53.975201990 -> 1284484595960427312901 -33.592127010 +precision: 207 +divmod133 divmod -188272447033011690956525728977820565712347363832493581916020250350471833497434129656948648270595213124853240137889E806432882 -961254207828491787736355347956884816452435834982293347047 -> NaN NaN Invalid_operation +precision: 37 +divmod134 divmod +.280872024291785E-964496847 -1962644 -> -0 2.80872024291785E-964496848 +precision: 218 +divmod135 divmod +Infinity -.419181315801919162594537922733701819033617479153899335540503043888392738793582325E-136999333 -> -Infinity NaN Invalid_operation +precision: 174 +divmod136 divmod -Infinity -28189321519475376104808848472638770966811370962525853425306362010842003768304e+645741422 -> Infinity NaN Invalid_operation +precision: 26 +divmod137 divmod +.660554547369247 487091.2 -> 0 0.660554547369247 +precision: 195 +divmod138 divmod -Inf -1590773075570846002422437033818812.86530681e316268058 -> Infinity NaN Invalid_operation +precision: 240 +divmod139 divmod -.217099393965614870562715904957313821572034631 -81.1304590757837240516 -> 0 -0.217099393965614870562715904957313821572034631 +precision: 117 +divmod140 divmod -69670439597538544544560887433970616887221821713806772855806025982148 +5664346516302910228771202611846773 -> -12299819475559217961759095069613392 -5062464863329417687975457773198132 +precision: 161 +divmod141 divmod -311982464973091232838280743251186559519561067984334858684918456369107252662832139086503754170999628865E932520878 -37822591377753673511592509033391627867636503125723 -> NaN NaN Invalid_operation +precision: 31 +divmod142 divmod -.78384 -90 -> 0 -0.78384 +precision: 287 +divmod143 divmod -17728882684376439581763346467148964348616740823340443691834.9327501579 -Inf -> 0 -17728882684376439581763346467148964348616740823340443691834.9327501579 +precision: 203 +divmod144 divmod 1524293522351935350946310410043328489340063564275060647871377431954E-354788772 +421286643239365921065245721.551866E181243478 -> 0 1.524293522351935350946310410043328489340063564275060647871377431954E-354788706 +precision: 75 +divmod145 divmod +.453291279508350337069413219062522147247 665018315.60170428900 -> 0 0.453291279508350337069413219062522147247 +precision: 222 +divmod146 divmod -9967019962213925395741599277327681110990872.20298482959148238627846234045916208406974603442980925684984736196594868347660528636112585638 +5966958229802755216615246113585284818792849756972521643709005908721e-75321286 -> NaN NaN Invalid_operation +precision: 30 +divmod147 divmod 3011443 -537 -> -5607 484 +precision: 19 +divmod148 divmod 930080 -986 -> -943 282 +precision: 174 +divmod149 divmod 717824919532758100684713485976829495807274469518929528231342180742991485100213157609326 +5426258039629499092697423157281976772410308E-870809929 -> NaN NaN Invalid_operation +precision: 3 +divmod150 divmod -572e-211443746 +9 -> -0 -5.72E-211443744 +precision: 240 +divmod151 divmod +28049530837159499758194431497877839317393617717730260816126406992842854902684061051996042265544183870602418223752055046102006943782315782415823.3266725638352716605 .608370691549976835447444670526761402705193169291083261089444866798808488401823367 -> 46105986410516076713754625979286639574663747650846680919097188232664130621700812224349344214432368691938483596735385067068265691493447997667119 0.407196013011573375831293573435669824987129932267480590232509366611431918098230327 +precision: 122 +divmod152 divmod 8760582412e-583654913 +61696 -> 0 8.760582412E-583654904 +precision: 96 +divmod153 divmod -15390558237249561483275299093671197257801333.75880300873645817193816876424717274301e408717588 +40174109057973124165485727261996299972649 -> NaN NaN Invalid_operation +precision: 166 +divmod154 divmod +489716931701909254869257080278885427811982813338452883401184367085436267017522930995547302566852193885916724060581708957240668 -4953290758624661789713915481715780607818461551702097095304515e534224891 -> -0 489716931701909254869257080278885427811982813338452883401184367085436267017522930995547302566852193885916724060581708957240668 +precision: 253 +divmod155 divmod -301179236121989073923651665413778825778942045652 .971138863279568588491979 -> -310129938683430574147274120261275761023841567394 -0.769958013204029843067274 +precision: 141 +divmod156 divmod +85295650338847291696411905839374922237456705.8819018265319169958921850 8186943162091385555997073477585334 -> 10418497924 692195782972810063076659425610089.8819018265319169958921850 +precision: 25 +divmod157 divmod +6203129626.2e590620421 Inf -> 0 6.2031296262E+590620430 +precision: 297 +divmod158 divmod -14385036488739725764219800696977198887350661857645014350650338674962555159248077343954653224635561419798854842716383412988689102667302067255807729920420574438476825288985792643975972.7982971260154630747613008412184504296426671700883292594678260 .4713737720458929497515925356916075332423177736256683314468345134568702060236586347566573319328796542605180550768577923867 -> -30517261124446267733537282612652742720020595533583674253649746562192990941255732540895446411039615905859423855212511099029010095304289203182132884470535486149314687437867980892148837 -0.4267413013372475739832055203724575552012770182864588076182500534133819906038964407263942532105531623831556670418181407321 +precision: 124 +divmod159 divmod -88215981846702128308160713724802404453949036220301802523619683011153971780 .8148131628105619384043482681813964174 -> -108265288133559146528265982178943532074463690659989084523357256247404163988 -0.6836897481040651478913438187347034088 +precision: 93 +divmod160 divmod +487743940408090276433745096838510184212857774949445061141892000915290687764575503296809556 -Infinity -> -0 487743940408090276433745096838510184212857774949445061141892000915290687764575503296809556 +precision: 282 +divmod161 divmod -574753871169E992231882 96.4140 -> NaN NaN Invalid_operation +precision: 133 +divmod162 divmod 39435807109760385174526053949329299055369121396474539 -93989976032587499713050661 -> -419574605446090313289879354 33581267139727917416521545 +precision: 132 +divmod163 divmod 619567009931408282909171306643e+881220211 +.129026720372765 -> NaN NaN Invalid_operation +precision: 124 +divmod164 divmod 479764366982182578269601525966602708556991145289765876828415269152815219653802469624955064854193025201347890 -Inf -> -0 479764366982182578269601525966602708556991145289765876828415269152815219653802469624955064854193025201347890 +precision: 135 +divmod165 divmod -633389558432744423239278999883110740172847958681957080264447170.33987073e+576730598 -63.572357987649222012537879980917363 -> NaN NaN Invalid_operation +precision: 132 +divmod166 divmod -Inf -28692818645 -> Infinity NaN Invalid_operation +precision: 271 +divmod167 divmod -3252228018638560077859989067775950262975041442080000133036350042622312707327780077335301995067147776959479570075036962963708068078670254151193788368545810701306230562860750776887735111330E-120215683 -163628405591787741995660796092176102837688317056867494749327374316773768677369073796067248606 -> 0 -3.252228018638560077859989067775950262975041442080000133036350042622312707327780077335301995067147776959479570075036962963708068078670254151193788368545810701306230562860750776887735111330E-120215497 +precision: 74 +divmod168 divmod -31.460364807392473547966741584891869874216043585351325313296301821 +.21437586655732746904422195169155 -> -146 -0.161488290022663067510336637925569874216043585351325313296301821 +precision: 115 +divmod169 divmod -7.72614650585920009311705087753607809650433764774523586525699 244723970404118620522649687577 -> -0 -7.72614650585920009311705087753607809650433764774523586525699 +precision: 108 +divmod170 divmod -455464291306804232091994952805459059595343426521232754552674599 -219022545555651098939831678365E-799613238 -> NaN NaN Invalid_operation +precision: 33 +divmod171 divmod 1583434906351634313049004574514 +772955189155951. -> 2048546835012141 121632377173423 +precision: 91 +divmod172 divmod +50419915954933715325206355131292907748659689838946165933102341005 -4678232695620123.4664375207642682e-972116511 -> NaN NaN Invalid_operation +precision: 124 +divmod173 divmod +883632545841149251134215874001448265746611263726374036518750613589411306306104651 +Infinity -> 0 883632545841149251134215874001448265746611263726374036518750613589411306306104651 +precision: 40 +divmod174 divmod -9468382280758722202092704 -sNaN199189593453928764076617370972428883060885854827339151 -> -NaN8764076617370972428883060885854827339151 -NaN8764076617370972428883060885854827339151 Invalid_operation +precision: 209 +divmod175 divmod 59173272369789189767549057186812654359030282499964.4965193759494854869099138920068337642944876167702627586390049000985051737516954506528571952443955963455375514445004795275618358904132961822372042300904 -sNaN -> -NaN -NaN Invalid_operation +precision: 76 +divmod176 divmod 6105133569856829505250792888430263119036582E-3318946 -613576944558197164010 -> -0 6.105133569856829505250792888430263119036582E-3318904 +precision: 227 +divmod177 divmod -9968426740367088E419950805 +5.5626971E+823490253 -> -0 -9.968426740367088E+419950820 +precision: 87 +divmod178 divmod -61523114396 -15999 -> 3845434 -15830 +precision: 175 +divmod179 divmod -47696092580589842105871751596243898574999451728268493520742314380430464214161743662156159480015584036 -NaN -> -NaN -NaN +precision: 72 +divmod180 divmod 51974475.7981 +232811e-763638231 -> NaN NaN Invalid_operation +precision: 243 +divmod181 divmod -76616447915161787027563003728491780991844070260531784 NaN -> NaN NaN +precision: 170 +divmod182 divmod 226348471948455452951288565448658045508562123801396057718548785698167919167085676706619019571040549917641382355487490633437711613877084330 -68676722201592979504076607885460882814225850711637153402815.5047337795E+371481055 -> -0 226348471948455452951288565448658045508562123801396057718548785698167919167085676706619019571040549917641382355487490633437711613877084330 +precision: 110 +divmod183 divmod -999039005748076774611455630442234574488024681930464346 -9046662339394.16684095679780 -> 110431777850015346924630277736340959043353 -2744007589461.32290974497660 +precision: 134 +divmod184 divmod 119024486363235385678375.7276502421335050042923063632245702425609454597931428408733331928571426404791754454605313045858776629322826818 +349307196355030061283347697747224957569421248727617096025571086057 -> 0 119024486363235385678375.7276502421335050042923063632245702425609454597931428408733331928571426404791754454605313045858776629322826818 +precision: 105 +divmod185 divmod +7202926554865904812936210511332 -10507352.2178559 -> -685513001327342316795597 5748598.0995277 +precision: 131 +divmod186 divmod -Infinity +Infinity -> NaN NaN Invalid_operation +precision: 46 +divmod187 divmod -NaN 272.3131191681846 -> -NaN -NaN +precision: 213 +divmod188 divmod -291872252720381905736744798305856735975605578316690794194512660138095519853432156514063323371745174941601815366513 -404289633758260084047887602692125331768337470412545141301e-351346230 -> NaN NaN Invalid_operation +precision: 98 +divmod189 divmod -3628127538565989624569334180433363518040441493345135164564638 -Inf -> 0 -3628127538565989624569334180433363518040441493345135164564638 +precision: 7 +divmod190 divmod 7383.514e-662258557 -122 -> -0 7.383514E-662258554 +precision: 144 +divmod191 divmod -1.4436465622369997 12512422 -> -0 -1.4436465622369997 +precision: 285 +divmod192 divmod .644396412552730502169047761264515E-641256023 +9735324210052432e-893036613 -> NaN NaN Invalid_operation +precision: 262 +divmod193 divmod +3094021638156276661698876320195589425193579383342205759262147756E-871594726 -34405397372855903907575295112960 -> -0 3.094021638156276661698876320195589425193579383342205759262147756E-871594663 +precision: 298 +divmod194 divmod -0.29943454E+72170125 +.5444E-309976139 -> NaN NaN Invalid_operation +precision: 46 +divmod195 divmod -.88230999634181056208011478996720090151709e771254853 -35220448980207632204 -> NaN NaN Invalid_operation +precision: 103 +divmod196 divmod +13906553166398823835420881.782493032922183610 -6623242210141493416153e-311458191 -> NaN NaN Invalid_operation +precision: 19 +divmod197 divmod -246119380 -.62178 -> 395830325 -0.52150 +precision: 36 +divmod198 divmod 78158823443827434028964132E-9790027 +5404227538214 -> 0 7.8158823443827434028964132E-9790002 +precision: 170 +divmod199 divmod -75882235305218267270774626614445090632566686929861284727356778858878e954050199 -9255134906461903502255721718861013e696855587 -> NaN NaN Invalid_operation +precision: 218 +divmod200 divmod -386645203670667600984874475439752174649137190441215477549811026970076817615917099234497998297307148182140493989879718340429525539825039852972794321773461145124122630803298795426019648243298 1830313381506852024097879110735497011894745336926265517749691898756205931992226257385094764292 -> -211245356984907200553212376748994129071649411085806411519135259946530472348708428269936318326229 -1152575765877732301288712709618542476015998725789212067482702930565390164677344883582932028430 +precision: 291 +divmod201 divmod -26442233471869345158816252962419512370880605987308499655800242041199259942581399241774940150444974284942695609155117824880481214226119290314564793275882168 -767114331392527868599707452341635125530159870565318960769077679974098.4481235E130662771 -> 0 -26442233471869345158816252962419512370880605987308499655800242041199259942581399241774940150444974284942695609155117824880481214226119290314564793275882168 +precision: 120 +divmod202 divmod +729022242757622387399432325746920223817.8e116302535 -.85289177269742218437 -> NaN NaN Invalid_operation +precision: 180 +divmod203 divmod 94842649898868458507367663344386148821 -244481926.2618681435E-525162652 -> NaN NaN Invalid_operation +precision: 132 +divmod204 divmod 77830260311982 184.3204 -> 422255270235 158.7060 +precision: 170 +divmod205 divmod +253437433348953524862283772714859169876797998034012805104865775111937629592159185791171131817711502636240200430076305847436459943283337078119673384281906936370E-860058711 -9004344206731718115871502279453373231834813060237152110160633467285615835063329 -> -0 2.53437433348953524862283772714859169876797998034012805104865775111937629592159185791171131817711502636240200430076305847436459943283337078119673384281906936370E-860058553 +precision: 45 +divmod206 divmod 91332925055.48187535E+313821141 -6.74594198E-809774484 -> NaN NaN Invalid_operation +precision: 61 +divmod207 divmod -13773845439430577743349258182933405e+385599678 -2632440649544850.2 -> NaN NaN Invalid_operation +precision: 6 +divmod208 divmod -.9766E-29860889 -13. -> 0 -9.766E-29860890 +precision: 80 +divmod209 divmod +.7810107327775675189E+32169708 +.158929517E-689298025 -> NaN NaN Invalid_operation +precision: 186 +divmod210 divmod -Infinity -441610448850298407118076.34961467212525243069408400645367562E305279921 -> Infinity NaN Invalid_operation +precision: 134 +divmod211 divmod -38693337030497996669440905903813537547043235731.5165814023123413732057223405155294016867370938013737152032497541684035307 Infinity -> -0 -38693337030497996669440905903813537547043235731.5165814023123413732057223405155294016867370938013737152032497541684035307 +precision: 4 +divmod212 divmod 1671. 68.e845303089 -> 0 1671 +precision: 235 +divmod213 divmod +.616243142625367449445370294842594553206325520455080437768811407097411528169763237355274335613362183889187685535353896213179926083610803872664308636e+714788583 -5346260694819956472082090404053431836036799832633787190467440330361847504 -> NaN NaN Invalid_operation +precision: 216 +divmod214 divmod +586126205361493279447761113847359505139519782271568258969985751212369082278865155799265402285244332085333389906559873652181555988171782418605419889464594646344522801271514980 +576942542625530978.399521493201993912561612417764480637141650266535899717481001947221719 -> 1015917811666599577506025321162894571296470704898588557588012042444902014537856790109170512092024340817393511267436583395665993964663767755945019814854090469 316952465919938963.188652121818339003904126711892047387721724488391731842167222772303789 +precision: 278 +divmod215 divmod 993912101583271564198937361713410073362433.3671372816266549336140462892092867421270809 -5769071628756951641667317322777729217682047E+233433187 -> -0 993912101583271564198937361713410073362433.3671372816266549336140462892092867421270809 +precision: 256 +divmod216 divmod +.845403892876970602288255595204239348354997037029447446939457227740474151295791686855926348743752524328323828041089123568874495008694135948041560599710125356676870833997867365092197552275176771394514363639694813068386E-680697580 -384793689565381718385091217972813680364826633998736542024413478492197882254078840014188071465161453735243765E-434574770 -> -0 8.45403892876970602288255595204239348354997037029447446939457227740474151295791686855926348743752524328323828041089123568874495008694135948041560599710125356676870833997867365092197552275176771394514363639694813068386E-680697581 +precision: 35 +divmod217 divmod +280787571220292580441641132294317 -5415227130043441 -> -51851485538343448 5191025714569749 +precision: 38 +divmod218 divmod 971501492858936.49E-327987913 +408.4844 -> 0 9.7150149285893649E-327987899 +precision: 48 +divmod219 divmod 75779007383809604649872.2515 7658234669079E+316336828 -> 0 75779007383809604649872.2515 +precision: 222 +divmod220 divmod +203785439484713013565.22926193109841685548526702150739150549822261991334925319617883182490204363117262640831612895270508655161019329481e382055407 -6512624258445.210438448827396279893523316711577868360235754072699062e-830360049 -> NaN NaN Invalid_operation +precision: 92 +divmod221 divmod +.98864E-515182880 -7.2 -> -0 9.8864E-515182881 +precision: 4 +divmod222 divmod -Inf -.60e+918768485 -> Infinity NaN Invalid_operation +precision: 49 +divmod223 divmod +1651752682151241232116595881159351882906 -61320679119772.83239e+299517790 -> -0 1651752682151241232116595881159351882906 +precision: 217 +divmod224 divmod +NaN 693633458997215338 -> NaN NaN +precision: 115 +divmod225 divmod +57820125940992756926416607022594026186537115674433083750459464091584188703778702176473484593862 +Inf -> 0 57820125940992756926416607022594026186537115674433083750459464091584188703778702176473484593862 +precision: 182 +divmod226 divmod +588002187300412973740185895021303872475536460074118795449346845885379755992220378405051133722238511299948868091594855240228825765604568635 +4887906605152184089977323126028779093675762800084.88476911158895471540 -> 120297345018953289055691444355231045475776938737966267739092415300746327372226195682894760 4132514517644044323122122399205074881009423037251.34539764797604869600 +precision: 83 +divmod227 divmod 91.920 -36e486533441 -> -0 91.920 +precision: 274 +divmod228 divmod -sNaN -.195108841575223099941529583105881344893881725845456598260893371811991244648637081296100051149865E902540108 -> -NaN -NaN Invalid_operation +precision: 258 +divmod229 divmod 86169432349423069501359904254114655468093743388224330840306e+28187897 +40051662472307093229214842852 -> NaN NaN Invalid_operation +precision: 222 +divmod230 divmod -19463032246387332843998949335991876653247712703713459122770805454720383953624238227966343E-623478889 315548606593391859.53629160875746201462910624e653668073 -> -0 -1.9463032246387332843998949335991876653247712703713459122770805454720383953624238227966343E-623478801 +precision: 118 +divmod231 divmod -646349143888110268674825744430662981012760117589145429920 -1551232747500762324942404837 -> 416668062822592411921624015783 -359825239617420527881887549 +precision: 222 +divmod232 divmod 82470406553101997.1773857072606336491308922987831618084585626896321001966335175975704564684450743897763581200355126171862044127584612500713611811288909621065636164889557431256885037180194628760037021389451344045680912588 525340009878979780964393378886208568058425609844200.7198520837247878830054971147176551527763496713434644861E-411292175 -> NaN NaN Invalid_operation +precision: 153 +divmod233 divmod -379381828279859387479171586839885892786853117784412357256 8526348.476338633489891075084 -> -44495229034172988543451938727754481241398879310179 -3078073.744241356645385519964 +precision: 65 +divmod234 divmod -32952778843251441427352296616711137971217731333520466207257023699E-200607449 +46603325420340175085502887329731 -> -0 -3.2952778843251441427352296616711137971217731333520466207257023699E-200607385 +precision: 34 +divmod235 divmod +Infinity -24740E+451846435 -> -Infinity NaN Invalid_operation +precision: 186 +divmod236 divmod -7757759093696423743837099889882858995219291276822452145949349421845619280255548077760421915589035941732817955742919394591346923911555782032780076672906121555623177182070614914e951410213 -298766145617945428411942883466577225653159890261952052489815844855030450823190989204423 -> NaN NaN Invalid_operation +precision: 52 +divmod237 divmod +305182809573329525267360563582 755494592837443E411637411 -> 0 305182809573329525267360563582 +precision: 107 +divmod238 divmod 5545372940688522424083909151129084556439411304287283236330345862203906833196198746944014385 -175467249924153311537052993963327649392536473 -> -31603464139806947011740163165901545180561013596 49207235155206009513785866276914504665127477 +precision: 165 +divmod239 divmod 2110546305500663541893923835276917736808249358214629585702200088640965847387963760111297541569605558971155873951688853492 -.525669232268566597326762983645770701835567715144209938952379e-245166361 -> NaN NaN Invalid_operation +precision: 63 +divmod240 divmod +84740 5.9 -> 14362 4.2 +precision: 16 +divmod241 divmod 9696 +Inf -> 0 9696 +precision: 292 +divmod242 divmod +Inf 41234270072018.2774869485244534512607600188761121347993605447374283332763008142442221178059344165286745238 -> Infinity NaN Invalid_operation +precision: 71 +divmod243 divmod +79447311559005794688036688703528652246215119833178503395037e-387115032 -Inf -> -0 7.9447311559005794688036688703528652246215119833178503395037E-387114974 +precision: 292 +divmod244 divmod 5721101671479067384055699727450213 -9222426.6177134479E-7845307 -> NaN NaN Invalid_operation +precision: 287 +divmod245 divmod -439054302279635259339475845118349.32143134073674124786126690316400603409237344000323295916040 +6750679799651.2795484008524638194508545870226615 -> -65038531719770729681 -3352631826007.85405655337732675727778576549802453409237344000323295916040 +precision: 120 +divmod246 divmod -329990002023258726 +34.4203655 -> -9587056884194292 -22.3462740 +precision: 298 +divmod247 divmod +854221094821672290689142808122752461973521194276188402314394569351e340759199 -Infinity -> -0 8.54221094821672290689142808122752461973521194276188402314394569351E+340759264 +precision: 200 +divmod248 divmod +9343871472815147376232547377566997313770122642276997376075281e961984897 +51597829508512352832033.5247338e-597709058 -> NaN NaN Invalid_operation +precision: 48 +divmod249 divmod -34842162997690845791128E-32978560 10879812265 -> -0 -3.4842162997690845791128E-32978538 +precision: 105 +divmod250 divmod .584056649454977841560762 810220416611e-307598347 -> NaN NaN Invalid_operation +precision: 221 +divmod251 divmod -44107584701293266372938802991964302022E+553895035 +.5037773402080065348 -> NaN NaN Invalid_operation +precision: 260 +divmod252 divmod +.299281762754051091202150981148604574060549143811340859809541175467472248304265168494489425565 -.8852986179508124536015932021920711388632049778 -> -0 0.299281762754051091202150981148604574060549143811340859809541175467472248304265168494489425565 +precision: 283 +divmod253 divmod -7804577128664417950809020752452754929090956268233056764828812779585236257101237272245586562726424118802335309621790615836578849282296726573422046278129023151698447408667226289794354840912309757098021 -25855186698571.5400470802935602843152729745638231701530628495747439483502892049861375044464908004613 -> 301857310861948215244229835373882882415064621782144862151065044652857335095836483565196510011038301082830355986973880705615073053562476301217610064464433579485998886941307093063987408044 -5514257824530.1690168648348403636666654426949699745352582694771987602027445942211667860906134693028 +precision: 240 +divmod254 divmod 62125584624905167281457216593091376480958302346719573383961957051603339120928421667806826870766282991761834120881153416498029399060938245826777137874027700277226585605720420560489642601954905 69591058368912294649342804032629276570338116654175866334058007526444585024818090152766328210431E-834138049 -> NaN NaN Invalid_operation +precision: 220 +divmod255 divmod Inf +701657838368086684321161595947051580806341962318000746540655256.487315715425392443812256430357078429390 -> Infinity NaN Invalid_operation +precision: 228 +divmod256 divmod -9275359388017839117146746096336710608664552843669349715046769428091615251170806369048925 16583879604022603610836828604841187109443302 -> -559299730189068545996205554204141260725532990 -13513511488378993431386838723666430233515945 +precision: 243 +divmod257 divmod 5893411040049996759E147477830 +15304006e-248907082 -> NaN NaN Invalid_operation +precision: 106 +divmod258 divmod +sNaN9148594846885208041482465965639798645039507780620345458767279642798598 -3264808954.1940762874264210200570901103843631414 -> NaN9148594846885208041482465965639798645039507780620345458767279642798598 NaN9148594846885208041482465965639798645039507780620345458767279642798598 Invalid_operation +precision: 56 +divmod259 divmod -sNaN22732887069657929393354348402843182308766016343895109111861968038 +31520197447143882096086707 -> -NaN69657929393354348402843182308766016343895109111861968038 -NaN69657929393354348402843182308766016343895109111861968038 Invalid_operation +precision: 127 +divmod260 divmod .81872481971477102394807849139574183708841385 +6610584981142240081822 -> 0 0.81872481971477102394807849139574183708841385 +precision: 149 +divmod261 divmod +81975684469767989257967125011 NaN387838675301094241755798214598571 -> NaN387838675301094241755798214598571 NaN387838675301094241755798214598571 +precision: 80 +divmod262 divmod -290802775702299162568241758791931491661459305990269693948E-523776555 +3327110260698569449852033048 -> -0 -2.90802775702299162568241758791931491661459305990269693948E-523776499 +precision: 233 +divmod263 divmod -621101221453193812994967485623637188326081497429e554156234 -620757365134828262030093 -> NaN NaN Invalid_operation +precision: 250 +divmod264 divmod -23617583497886890620918852821913634307584262435923089134914141854586468012097512067212633265480613308721144917874675046993643875136487503168939544220468389778709572461320704870650288158707851993995613520840523018570458131996426787140541 -.4370650469137909452973643334747630567260009660496533113977762810151138175172063556627410239295056044976098153051552193 -> 54036770189370346739550722546938360376440430396284605738589435021733713456926354044644634346038586174654517705772730379769795539365097703629678554704853944542926972213775676156755151101495694454394687973141783234583415641526976506905980 -0.3868091174358986929087037985102590696753096846221587288927186169460341320386223760372462962475440343669754577086185860 +precision: 70 +divmod265 divmod -.22115004811672795582421798770933605114387831321982706924469578387094E+832226264 -7530077337902943991324910363966408E-110759612 -> NaN NaN Invalid_operation +precision: 31 +divmod266 divmod -.2880986961073725E221898497 +24216016 -> NaN NaN Invalid_operation +precision: 89 +divmod267 divmod 16562048620044490576636852801413E-555139572 5961150364696640 -> 0 1.6562048620044490576636852801413E-555139541 +precision: 284 +divmod268 divmod 882197657585960712660665271138417702084982858242984370900201321164598980798657873196676125960.484478369106749081674683409538476494 -8470777126961388606905433097606237503437.170752547798843268189412 -> -104146012150176824652870752988267962739158770977592699 7628113347236726652237115889729816440228.664670768536240961371695409538476494 +precision: 249 +divmod269 divmod -NaN45144453732835894320331708170255865402871531372362507234849846257404327668294804182323675 -82834350040868368368 -> -NaN45144453732835894320331708170255865402871531372362507234849846257404327668294804182323675 -NaN45144453732835894320331708170255865402871531372362507234849846257404327668294804182323675 +precision: 61 +divmod270 divmod -217607381089613 +6113.777 -> -35592953601 -1752.023 +precision: 195 +divmod271 divmod -627012506608325059530479E760409385 -868697283655 -> NaN NaN Invalid_operation +precision: 148 +divmod272 divmod -387088043785311160. +Infinity -> -0 -387088043785311160 +precision: 134 +divmod273 divmod +33418078038302824638674823890539146953327046152794815673272969285264972169008109316673292058240150183895703422134534605375657325006890 -4385014920515243057912483468578919253436119769284651341619991365752. -> -7620972481064254046657700224803023086267575538167694731437078387496 2464353676626576456711625792014396813440733438591494123330405569898 +precision: 298 +divmod274 divmod -711513787292050042608421048763262195892447621469605071092997127885067062525024426889471870518805053647193442826157336707987637 -994961178156930940221501021658100125301431032901876285510149165 -> 715117135132910721692004718836280196138707672450338431068703340 -969013674661891568298683562753881428484542160202756370174276537 +precision: 32 +divmod275 divmod -6426.1611E-630617448 -796.1 -> 0 -6.4261611E-630617445 +precision: 155 +divmod276 divmod -7578808838840987669062306 50324111100e+452044282 -> -0 -7578808838840987669062306 +precision: 282 +divmod277 divmod +188536827276698439246392594348325861858736339280644632405296875252707799642556497199031662185023765648499219182785629158042311425940970649134465289223233612318175634112298694356604826672881546624646411 +4743481058162990621979128056141356204059544263439121686060012524543639606753842865056701998468580414e-363794400 -> NaN NaN Invalid_operation +precision: 23 +divmod278 divmod +.6873732 -507 -> -0 0.6873732 +precision: 295 +divmod279 divmod +29044955543068982310348338547615916770599720308192407563055981985922540397289878064073914747102864919630935601707360956273359122821578724106 +.2542088384201371589695409853506396429089009695184811600919067388258862 -> 114256277333149505042633264394291372655684500630184039324971920753826341620793518264965860365609063455049905373272124306472234182682454945622 0.0829595547013596340289216808961560427990997257390999501960772530397836 +precision: 133 +divmod280 divmod -5461599222063081554318834.9032331230962413205378348024091545997235226898071357363032189e261161486 2110470909119750830749951829051199341812552 -> NaN NaN Invalid_operation +precision: 186 +divmod281 divmod -668070961321153785779645836162754876 -Infinity -> 0 -668070961321153785779645836162754876 +precision: 272 +divmod282 divmod -Inf +327383341048126791144172139268356928769530332523608279650751685522532767850185955859765264176048991650532142057098994315852E-920003171 -> -Infinity NaN Invalid_operation +precision: 145 +divmod283 divmod -26.563 -4 -> 6 -2.563 +precision: 250 +divmod284 divmod 7755495749895420025465667135984366218794379756697949811927033.8495549289104563286641559739344506551112173752097214062548968634723614212606705918566563386774483205732752196668909844101832108440360295250232537249764540213951612205555616E-135061760 310739448502599009292574810910387118704751226366429857033091807257288459299932097984868018012735430163550623204094173E678290460 -> 0 7.7554957498954200254656671359843662187943797566979498119270338495549289104563286641559739344506551112173752097214062548968634723614212606705918566563386774483205732752196668909844101832108440360295250232537249764540213951612205555616E-135061700 +precision: 39 +divmod285 divmod +249043547807160707166690402528155236915 +3438562371916419848 -> 72426648369434939377 2405004671395682219 +precision: 279 +divmod286 divmod -332194120057570846446219964024266.4251194864470 -64337760549792598924287 -> 5163283851 -1321839021128925235029.4251194864470 +precision: 278 +divmod287 divmod -879061030561563020970273993117630921072.60224844915586069605364160485655246466942789716979325247E-826118464 +5063644099535438668089148617682809099.5832348132E-308585909 -> -0 -8.7906103056156302097027399311763092107260224844915586069605364160485655246466942789716979325247E-826118426 +precision: 88 +divmod288 divmod -28035964510438233069361578526957629885666953904157754685871477701934266619637078511409 +82244686463261994044253232757879476889006.75 -> -340884812333276525226770857307448528732468923 -56297356752417967817282071749378913799178.75 +precision: 290 +divmod289 divmod -8850735487720619108641242964843621042915286575323749991745077547356991621504688244047790322874139208968792475861470944998171321246481182523286605618649621097913756069243762009460663967177710093047109801387993908353447551 +52701607605793492081213104239146802374685702370428706099104985934372597310608294755776494760885507686502479984 -> -167940521927222140843025930700346721381455481865588503769031696989367213557054048015645507726406303133457386758 -51636323305322219552920531425313442983402049999317499824578198096143795115036661246607806417705554357511795679 +precision: 216 +divmod290 divmod -3414842567299524766816589099722796366411001550665e+814255574 -349370823600487468955449 -> NaN NaN Invalid_operation +precision: 18 +divmod291 divmod +6622026766308E-288013480 -sNaN19089550370006704241278780243068807199056755378103371163142213481053766757700915962394 -> -NaN766757700915962394 -NaN766757700915962394 Invalid_operation +precision: 285 +divmod292 divmod 57063920079914196170729834778678999920065459482596817201124237352313737366674888264896420250323393312956840139235896852745043900002458782417253661207791339324740267196280808846911953502484844198331888559639546218885801999453783018387949509419808194023731492 -63660383243769946487400869905895567178719189432071184654234662208639395798947262007363887847480821402350473631294605717950331228 -> -896380404456624034825298578053744725833135439971159145662696696242599098586946980696847629750024913063402010716273692837954573110 19107766792550473789554607270948359794484425368162872723699133695601692288298403851451054767249879399042377176131163852181652412 +precision: 35 +divmod293 divmod -Inf -9947837416373 -> Infinity NaN Invalid_operation +precision: 192 +divmod294 divmod -5270292945193977701619768.9306180e+764543323 +954575890632773 -> NaN NaN Invalid_operation +precision: 25 +divmod295 divmod -597E-346495898 +Infinity -> -0 -5.97E-346495896 +precision: 293 +divmod296 divmod +Infinity -5319174150859870629218859051681060774367977006063 -> -Infinity NaN Invalid_operation +precision: 79 +divmod297 divmod -360.9 +Inf -> -0 -360.9 +precision: 64 +divmod298 divmod -83522351801234856197494825694778.27917372483484403807722341732235 -.86134162082970485128447405503004 -> 96967741696703626713916424023933 -0.49217595157762538139028742337503 +precision: 143 +divmod299 divmod +305341087733750980235428485606062E-491525223 +7794343847798054 -> 0 3.05341087733750980235428485606062E-491525191 +precision: 171 +divmod300 divmod +737283651167166284734378981637.5326347233498826095 -879660674339288175295179E-711174031 -> NaN NaN Invalid_operation +precision: 223 +divmod301 divmod +46770216172536961216863169044886724791478463084352246978987882785.9208095019788866193155980 -480114382222849855314811057797253726788744980E-1521510 -> NaN NaN Invalid_operation +precision: 231 +divmod302 divmod -455125833998624335197809728360296706088196043939974748666010142492132497449160191293602081317622482533098340243121540152810926306428837599730209382108019127330193e-758380832 +1152455850464463119283243118382682355357634073931571913.29929902038411640497358782 -> -0 -4.55125833998624335197809728360296706088196043939974748666010142492132497449160191293602081317622482533098340243121540152810926306428837599730209382108019127330193E-758380671 +precision: 96 +divmod303 divmod 114.53640165158887E504474680 -7.360110 -> NaN NaN Invalid_operation +precision: 210 +divmod304 divmod 199794817075674013258638852375866065400175131301814400016773822376149736830875516333889900215029558200197303937582536234238506542772083080005000870419052962380211913729530799546868 -882113052190299535820078100120629584285623827894570722850365608842305693494063198781784821E559428706 -> -0 199794817075674013258638852375866065400175131301814400016773822376149736830875516333889900215029558200197303937582536234238506542772083080005000870419052962380211913729530799546868 +precision: 191 +divmod305 divmod -527091986713058234575662830E+215798625 -963447646669E-571199059 -> NaN NaN Invalid_operation +precision: 26 +divmod306 divmod 20.164725004 -781.38E-973643216 -> NaN NaN Invalid_operation +precision: 204 +divmod307 divmod 586544143280701081422511649207071975320382324758572150697874372575241396975188513851928060383407283625012366919.222751329228543702012077938302 +2059699109020993271344825568682280300933382430003071412160980590405008 -> 284771761424655153629811048729964446791888 392378034184398453147112395871666824231888267153529944105504803391815.222751329228543702012077938302 +precision: 128 +divmod308 divmod -.5295688891420803503939454483069157898584920 +8587188656060145142E-655604199 -> NaN NaN Invalid_operation +precision: 282 +divmod309 divmod -540142712790531380323344790024485997705402435236788506470852675725765327356178228590613334420416052790922592835343722890680928498929067414710880137114271702722681223669558473730150935508084760380612593673018078249.655299323912140912411925993357189521330049472232e-905993374 -4966456233710853496743918183173318964527932287488333018461417720378641602581943218157874577339798088142553712772536151.18278875358 -> 0 -5.40142712790531380323344790024485997705402435236788506470852675725765327356178228590613334420416052790922592835343722890680928498929067414710880137114271702722681223669558473730150935508084760380612593673018078249655299323912140912411925993357189521330049472232E-905993162 +precision: 206 +divmod310 divmod -981852741950941185707336180779592622083786915 +1532999135158679255023E+997237226 -> -0 -981852741950941185707336180779592622083786915 +precision: 66 +divmod311 divmod +70353589693685673979799989156879587994891659168730E+736725722 -NaN6385678473951246938739954234885984826684516851552558391363159546639757939397 -> -NaN951246938739954234885984826684516851552558391363159546639757939397 -NaN951246938739954234885984826684516851552558391363159546639757939397 +precision: 9 +divmod312 divmod -Inf 5 -> -Infinity NaN Invalid_operation +precision: 121 +divmod313 divmod +772125651597071395227669.8453912078501145852516E-525667357 -.30865268597405353678885E-849851145 -> NaN NaN Invalid_operation +precision: 287 +divmod314 divmod -73325623257530834005617.783280178661562517484281150597715534618417368017000434035929233888205408702006069188297900355049080226228235185899600710544112553246375599895864592005670734288836728490895215915142587325156066377205982848788756708075393473450990453376999722 -13722477530154336162488142190813788394078004972678136155475396299885041450389021726964251367976984601591943414893.28723229757036730E-778750590 -> NaN NaN Invalid_operation +precision: 235 +divmod315 divmod Infinity -97964.915737333133 -> -Infinity NaN Invalid_operation +precision: 267 +divmod316 divmod -26687905306181010E819605444 -59076907e+633682092 -> NaN NaN Invalid_operation +precision: 146 +divmod317 divmod -6940.63701347e-128150735 -607717. -> 0 -6.94063701347E-128150732 +precision: 185 +divmod318 divmod -494165090778250925799172222819917729854885370646866140041459099249226287124259603482023266642707639835480992839810886255211799880401157580385260250939448352988677e34804343 +834447095035559458020077950171727185730392035660983205568800885452235937043764462 -> NaN NaN Invalid_operation +precision: 203 +divmod319 divmod 516393982689340434734.776659560794792E797228035 +Inf -> 0 5.16393982689340434734776659560794792E+797228055 +precision: 285 +divmod320 divmod Inf -2312851461492801513026197162.1764603769011410e633592655 -> -Infinity NaN Invalid_operation +precision: 31 +divmod321 divmod -720660522725.821e821607786 +5918.988E+992540089 -> -0 -7.20660522725821E+821607797 +precision: 89 +divmod322 divmod 99655706164145182376803514566634940372115837979351923440391899249968662777469 -1230737617782699497506867059498642.8654 -> -80972341077609372935420733130046747636024232 940548610944858569246217175469154.6272 +precision: 37 +divmod323 divmod -789157812274429679.10943167310889e-68733215 -4201886809631103e+648930656 -> 0 -7.8915781227442967910943167310889E-68733198 +precision: 277 +divmod324 divmod 979016499901148558605179233085384992384800626223117905227952744136495352916592353e-750830494 1565467532955537290126026683046247274326 -> 0 9.79016499901148558605179233085384992384800626223117905227952744136495352916592353E-750830414 +precision: 212 +divmod325 divmod 877682598503985142668343660469525042984.7287275457652071026864467907043931698174162069e+769512445 +Infinity -> 0 8.776825985039851426683436604695250429847287275457652071026864467907043931698174162069E+769512483 +precision: 263 +divmod326 divmod -73876070761222428202682187929822948895592066194636821905977908298232321505166410915563513 +19417680587274127271269718596499044968681284E-837998720 -> NaN NaN Invalid_operation +precision: 256 +divmod327 divmod -Inf +.601002206479990715735250416600321373498670E-204021118 -> -Infinity NaN Invalid_operation +precision: 203 +divmod328 divmod 6219994997717667741006938560591841290080447228747265955767158230202281811714726518996426170165E354577250 +4796938521991179719497445156476490983259942012e+594288623 -> 0 6.219994997717667741006938560591841290080447228747265955767158230202281811714726518996426170165E+354577343 +precision: 288 +divmod329 divmod +51107628725866577491864738038392446919827862110219339030978126264652854403204893590811364135026038712484915730315169330721435713351240869664581529453763261942691228269098363695875753676853119228324686790201298311586705757603398210355156031043526095740219615808981829797124516121379 -.57248769829699936987329707857873808071988208684821627179054587751317670165217654767998104354408875770742880061602628012389580287311843515022 -> -89272885474916505121204404654596832229210766611713553740192591801688328129402691558905246802392113698535855287656048027123745537692302723736469487441259570889199360427706943889615231424636375660335866983773206067860207492848289894649889654966025061808269013712711279965959148523397 0.50257257490452955821607426430365985486056155873081654184649495571462274080761225136908879523726057838974706102811064801941143866718512030266 +precision: 257 +divmod330 divmod -.83289601438226034138437095354857367214702149150696044680430351 -1820795034258064772669162002626 -> 0 -0.83289601438226034138437095354857367214702149150696044680430351 +precision: 133 +divmod331 divmod 64302788458707413727603048222520445890186315758071523338596765e-913221313 -5948557.117968925077771784918811e-251877061 -> -0 6.4302788458707413727603048222520445890186315758071523338596765E-913221252 +precision: 211 +divmod332 divmod 906874479643490083468590877.517402980478848304959221 -7315546514041174367953538 -> -123 7062258416425636210305703.517402980478848304959221 +precision: 240 +divmod333 divmod Infinity 6397534977799714026335209995652964376533543885675244 -> Infinity NaN Invalid_operation +precision: 289 +divmod334 divmod -Inf -309421604609251.89065742395370052895436617224906829885466351375726 -> Infinity NaN Invalid_operation +precision: 284 +divmod335 divmod .63605508716583244209386314223286485400331447950194734840854865511661619268954536789426E-372988794 Infinity -> 0 6.3605508716583244209386314223286485400331447950194734840854865511661619268954536789426E-372988795 +precision: 148 +divmod336 divmod 29823469368630167139841136939786670196296619707923646541640543603936930896479553204456 -6108512981355697289908611460226807581937121 -> -4882279772451473727367448725672832319978182 2525237790954025683875607091167751537310434 +precision: 207 +divmod337 divmod -.31238946665801130650348892811113818645E-669235737 -806.8519446649228674 -> 0 -3.1238946665801130650348892811113818645E-669235738 +precision: 234 +divmod338 divmod -60345848701888602780563829555.749439474495184960838865884431602158502863909541785591518755861192380290997660159753024858806789929575316063221402667397478785193999242268835242681035771658091901046097129581147890623331085240469e243864130 -9908427043880606288195915261121433874673881275893738024062515396363630902887388707480690053534225531517001476936.E-31687339 -> NaN NaN Invalid_operation +precision: 250 +divmod339 divmod -98495851121966800559889957941233116870947868345617.34510839192321286320554055252699116314064155581187248887776583552827478915669063949414515905975796656601757228599 971815724508352305070078271698993001357309129101010253657701540829899086581036238E469447318 -> -0 -98495851121966800559889957941233116870947868345617.34510839192321286320554055252699116314064155581187248887776583552827478915669063949414515905975796656601757228599 +precision: 200 +divmod340 divmod +127149660292121E+887700704 -Infinity -> -0 1.27149660292121E+887700718 +precision: 175 +divmod341 divmod -131625626879875399.25008377857241112742189658645173210199752796202 -67092368412938976860535441052981 -> 0 -131625626879875399.25008377857241112742189658645173210199752796202 +precision: 159 +divmod342 divmod 32412698737.974525 -46535 -> -696523 932.974525 +precision: 281 +divmod343 divmod +6090531619585901530827.27195861984011662987087229933304848401371294289E+940052622 -Infinity -> -0 6.09053161958590153082727195861984011662987087229933304848401371294289E+940052643 +precision: 66 +divmod344 divmod -68871011820401925642103238340 +Infinity -> -0 -68871011820401925642103238340 +precision: 199 +divmod345 divmod -29096432218250392426785059733733121083497796291306942145694288376412441828347224932758735408877358639013295566852832055209646692612791169874914137602723910327 +Inf -> -0 -29096432218250392426785059733733121083497796291306942145694288376412441828347224932758735408877358639013295566852832055209646692612791169874914137602723910327 +precision: 170 +divmod346 divmod +31. -Inf -> -0 31 +precision: 281 +divmod347 divmod +90017555042251489077132555 8372699.352919 -> 10751318212670372693 3408887.559133 +precision: 105 +divmod348 divmod -8058450604709.1190677595160888987815437 -.8291199050952671445e358021826 -> 0 -8058450604709.1190677595160888987815437 +precision: 16 +divmod349 divmod -781884095070 +969715e+494471456 -> -0 -781884095070 +precision: 201 +divmod350 divmod -634079.7706912528008745299727260063583620392271131170140413782366169364E-973492774 +.37986931813614181697608837789737581 -> -0 -6.340797706912528008745299727260063583620392271131170140413782366169364E-973492769 +precision: 50 +divmod351 divmod -4051162528362642040110 .94259288154 -> -4297892131058626454169 -0.36954385974 +precision: 257 +divmod352 divmod -171023604561538097861556619230545652235205277419718311372797630815914685557685883562533284709849625157082755952580029583020674237438599179152431177555075492191870358240619254604508630727041920485465010408723334261231781054123589473604762043201133541e+88664952 -8232751368931245956437141388354976180347620562621733056426908319269761464018424375079173964761631313245924348814766767391217 -> NaN NaN Invalid_operation +precision: 197 +divmod353 divmod -5122437775948709679497993545232536816373631299924328037977e-640068419 68163505657099738935383713678e-955028662 -> NaN NaN Invalid_operation +precision: 169 +divmod354 divmod -.35240846870997443895348412535 +Inf -> -0 -0.35240846870997443895348412535 +precision: 234 +divmod355 divmod -2804126286059273498453954093409745178428914933760068194249001514415659742947560344672488093938963070315539220265195970994898853306402122535E653424316 +2357848097123126229831296934243523337.75586001702238920520414944977895 -> NaN NaN Invalid_operation +precision: 251 +divmod356 divmod -638352230e559601472 -7535E-408171842 -> NaN NaN Invalid_operation +precision: 48 +divmod357 divmod -2787970608432330284791991 738473915242 -> -3775313590485 -539697119621 +precision: 189 +divmod358 divmod +Infinity -7.939872E+377594345 -> -Infinity NaN Invalid_operation +precision: 223 +divmod359 divmod -.30166054385357118293753113398275381187885240455756998805048702724015044146952302530703895598357321950293195257611410519694289228556018752506615306523039324278841302733671433473968183467 -33484014009911447915536921607153993833760155599424762488370716528098289700379030.793704276712e-926414177 -> NaN NaN Invalid_operation +precision: 269 +divmod360 divmod -5802277489023560613609741593774547810381305360363308591205776547850924189169848596210225654907485815432130553809132982075490869341540553630281155465521772897449382132132452049923144751995734143233E-735967641 -3962090838183627530427634.8735966071530211817336721139105391323285822076792959795475072129556148139E+873457435 -> 0 -5.802277489023560613609741593774547810381305360363308591205776547850924189169848596210225654907485815432130553809132982075490869341540553630281155465521772897449382132132452049923144751995734143233E-735967446 +precision: 205 +divmod361 divmod -827489580608024011102733736399019793659826403778157014122811.3266130861 32272303532064685365479039080410315 -> -25640858880304529194983551 -3538735253697525074995344258394246.3266130861 +precision: 177 +divmod362 divmod -1891892623762490248752989493582.2290E979599513 467069556361856026E-132120828 -> NaN NaN Invalid_operation +precision: 167 +divmod363 divmod +.2289813058203838377055919514490809744859806398229197714921553331073180179064478381062389178021100583574792505855458291580140E-279561377 -3684026891741636626.5857090951932967631878282553355273153206773E-861867524 -> NaN NaN Invalid_operation +precision: 270 +divmod364 divmod 16778376424200759981491887434084949026984650448493307529973179893112185655841694079646893165823349515930042978234182184116324688226936090818719684860927109769931031688011824548293609818457950937596100329918146165863201828064967339212536824557828325e-365732233 Infinity -> 0 1.6778376424200759981491887434084949026984650448493307529973179893112185655841694079646893165823349515930042978234182184116324688226936090818719684860927109769931031688011824548293609818457950937596100329918146165863201828064967339212536824557828325E-365731986 +precision: 116 +divmod365 divmod -478488704380804038925351.6107192617151647952305535394530402016506 +57.612531285537511431245534535293 -> -8305288688138567895866 -6.3539969378096510472434277407150402016506 +precision: 174 +divmod366 divmod -89.1650711116624468830005919566919143384401302918490433686134380589326513720e160862436 9617175967841979842924344429164022257 -> NaN NaN Invalid_operation +precision: 280 +divmod367 divmod 2974952959338904.37207905 +404289225634 -> 7358 192837123932.37207905 +precision: 158 +divmod368 divmod -142130921.1596060791200755467843643064946860 +sNaN -> NaN NaN Invalid_operation +precision: 176 +divmod369 divmod +.90340308149694868446461585997541557032184371130956784887509735344734315867638559655268283858742363157531218363 sNaN -> NaN NaN Invalid_operation +precision: 276 +divmod370 divmod +908784095829730215678569623525181554758280062408213128364882024474434990579938768577060015405672711269150123038185143921793390443473088330321507090630763548318008E+896199262 +27254987646931305308581.773104497541343708165702777877858564759734850426059791819 -> NaN NaN Invalid_operation +precision: 142 +divmod371 divmod 129077538586974452307659829258838081783322740669522759910E-8534402 -9286887225808475962275381994e757107425 -> -0 1.29077538586974452307659829258838081783322740669522759910E-8534346 +precision: 79 +divmod372 divmod -1829248157480.820972639331414757923920 -835930284775717261 -> 0 -1829248157480.820972639331414757923920 +precision: 54 +divmod373 divmod -Inf 1203970774451930887067e-657535828 -> -Infinity NaN Invalid_operation +precision: 142 +divmod374 divmod 3683455000796675477024975266099722553152334540423308144788296564040285424747974851583346658562222657727576457476309073773805804936797654e-106879718 -sNaN -> -NaN -NaN Invalid_operation +precision: 77 +divmod375 divmod -753321.35 -2697 -> 279 -858.35 +precision: 84 +divmod376 divmod 25716184763316974763302880006462115458256 -68260223999196.166714 -> -376737479847997699065395020 63737811066070.635720 +precision: 116 +divmod377 divmod -695271121932597865729487711321399 .3848787316974280 -> -1806468024009142985562481334377837 -0.1888426868967640 +precision: 58 +divmod378 divmod +Infinity 6728445114.0 -> Infinity NaN Invalid_operation +precision: 212 +divmod379 divmod 53100658678877200900683332041599488124.9352289e347633831 -26101798286757609.88920E-211826909 -> NaN NaN Invalid_operation +precision: 52 +divmod380 divmod 892309349946835620174804493383975843271033714299 +NaN160287124507573600544004080351733884508950488075147844886870 -> NaN4507573600544004080351733884508950488075147844886870 NaN4507573600544004080351733884508950488075147844886870 +precision: 44 +divmod381 divmod -.232567731708720115439076124078 +303137838823654E863150064 -> -0 -0.232567731708720115439076124078 +precision: 183 +divmod382 divmod -17155858.391350336811492084677275278581566081 +3204347794300649205233E-640226968 -> NaN NaN Invalid_operation +precision: 200 +divmod383 divmod -6491683242654919793158535241960594150653182239990740310631988216105099427121806561058986379.65589839181070790665377407690470046003551033952851859140160e-266512648 -32170306253056384211264615017548.7081637260765034483256119388495911827582650E-31024139 -> 0 -6.49168324265491979315853524196059415065318223999074031063198821610509942712180656105898637965589839181070790665377407690470046003551033952851859140160E-266512558 +precision: 257 +divmod384 divmod .110650404141326096517366984 -4022817931606 -> -0 0.110650404141326096517366984 +precision: 63 +divmod385 divmod 9132273817077816717936478246501936558135320849801e423103175 603410010.817675472294207 -> NaN NaN Invalid_operation +precision: 126 +divmod386 divmod -5454033423575484724579966442844.27077820125666700969 -2199889084274250568232148 -> 2479231 -209281150214051209924656.27077820125666700969 +precision: 285 +divmod387 divmod Infinity -787314891862116622110821463242133597349622905297157 -> -Infinity NaN Invalid_operation +precision: 187 +divmod388 divmod +.47844273941792152236152910455894543226151609378862952734060269842707655268341 386776935.17325380953887138754163217815 -> 0 0.47844273941792152236152910455894543226151609378862952734060269842707655268341 +precision: 199 +divmod389 divmod -Inf -74598315790667795223073235234103914024769607189539256460485108e+213394861 -> Infinity NaN Invalid_operation +precision: 204 +divmod390 divmod 1723992370235839574.194626014062243490044266659974072018929126481539862640365621925826722968436753026947 +88370794911042064192252082322935798907319181958032 -> 0 1723992370235839574.194626014062243490044266659974072018929126481539862640365621925826722968436753026947 +precision: 232 +divmod391 divmod -284250687265664371818160430669338873102688590059326589077141646647851446821308493748954559085767996366679499774317582869382153037711 -796491550125864694.973206836093852759921340383579402485542463975309 -> 356878471869219418352695583627556116481123937504749351464803332086941055985722748938786090316945341843563543570948 -182445810502040523.692249385224312514301704373536353976718438277068 +precision: 173 +divmod392 divmod -692710280490800196673190230980912368767577564599803051276204844406675286521286229220327801042734745791289445785354 44284465620588420783033909374934059604138041228960.6568694e-583867231 -> NaN NaN Invalid_operation +precision: 140 +divmod393 divmod +233421531147225 +24344270E+440968808 -> 0 233421531147225 +precision: 294 +divmod394 divmod +74872439336653041032556620E-740905067 -79479.20454679E-799697578 -> NaN NaN Invalid_operation +precision: 263 +divmod395 divmod +9633 60. -> 160 33 +precision: 49 +divmod396 divmod -sNaN -327711914395612.811617e+624139191 -> -NaN -NaN Invalid_operation +precision: 181 +divmod397 divmod +56439518084429886920431355448070853630391642715290106499513368463569925904278328966914073893034914887e-653454324 +.47091042759547504982742431623233339464302309583215e812793529 -> 0 5.6439518084429886920431355448070853630391642715290106499513368463569925904278328966914073893034914887E-653454224 +precision: 229 +divmod398 divmod -4988251723276375118597793218290408322314465441440614588797665244810422693717876215669548132287501597207812782972293019771060042909150 +914842279863623399173708460983394134471310294982549425243850205.59 -> -5452581098481783761172937565862996685668698784153833348707138191398416 -147444156473748786485891055351567734647255101624387215531708804.56 +precision: 281 +divmod399 divmod -6.5283381714708884350689891456076097670863678351797749954676004880045506365936769351039928828135863844701038929466532979460390487871454708224054093204934570 +295976782966294797950852396553125.7279423250137522114921289388544445794649727 -> -0 -6.5283381714708884350689891456076097670863678351797749954676004880045506365936769351039928828135863844701038929466532979460390487871454708224054093204934570 +precision: 104 +divmod400 divmod -57695663973016983647090268654947430051870039256075262814375098956212191 -80972255618316.288871567023154007372 -> 712536208018959578415943668534698270873506430603879040539 -38185961184374.350923670563707146492 +precision: 55 +divmod401 divmod +424209 -28.5 -> -14884 15.0 +precision: 229 +divmod402 divmod 616074405677191197109121826144222953427177224128931108120578 15.2469243014775172942555878423 -> 40406471068888952069172425243891904739353685024539086412819 14.2905924237365599483447295563 +precision: 256 +divmod403 divmod +Infinity Inf -> NaN NaN Invalid_operation +precision: 255 +divmod404 divmod +1364480338844537331796705218142022118457039142961580501118515706992663846212438060540581893485041256968754371704091832692689713191272963519912291433680848405906946555407032027894748540216184102 .258801281158079999808831508631917541859474349312346692057650603071290395604213526935650518571783e245849268 -> 0 1364480338844537331796705218142022118457039142961580501118515706992663846212438060540581893485041256968754371704091832692689713191272963519912291433680848405906946555407032027894748540216184102 +precision: 111 +divmod405 divmod -16095978884562527027288974545289842517943E-847700907 -77013460437124925788E-645838676 -> 0 -1.6095978884562527027288974545289842517943E-847700867 +precision: 288 +divmod406 divmod Inf -5589535054E+424305478 -> -Infinity NaN Invalid_operation +precision: 82 +divmod407 divmod -91135812420861036408709014967197711642830826002565819870970040963444e947660786 -7700486085545972339916875627862863e953771935 -> 0 -9.1135812420861036408709014967197711642830826002565819870970040963444E+947660853 +precision: 81 +divmod408 divmod +1319248522673387750626620099e+8718996 -7413742534530e-530080200 -> NaN NaN Invalid_operation +precision: 284 +divmod409 divmod -5872196589226605082435479913854157674815567357303249083514018052129681624357112219526466792994102282216959009933643649967399403303892310468075807476011058679956450057960229341371482149517311290134886382622082326806139286083700 Inf -> -0 -5872196589226605082435479913854157674815567357303249083514018052129681624357112219526466792994102282216959009933643649967399403303892310468075807476011058679956450057960229341371482149517311290134886382622082326806139286083700 +precision: 191 +divmod410 divmod -7501716553704212243523278428338999997835964056423346979376091741.6527786 5786598344871514900520032998238038 -> -1296394894999538743788967011782 -4186512885844906669214067389528025.6527786 +precision: 69 +divmod411 divmod +Infinity 6305953624427677709. -> Infinity NaN Invalid_operation +precision: 234 +divmod412 divmod sNaN642188 -650638025694573623335 -> NaN642188 NaN642188 Invalid_operation +precision: 233 +divmod413 divmod 82516396651225576418049882841782625587255227654548041753.491863208490899 Inf -> 0 82516396651225576418049882841782625587255227654548041753.491863208490899 +precision: 98 +divmod414 divmod +37487308318.6498557483774647160412106628250545865442993 101658050463702569.503473447 -> 0 37487308318.6498557483774647160412106628250545865442993 +precision: 273 +divmod415 divmod -708454271131544887499134170547742837413633062514771829120968030E-43817285 -9957883339282189136280574358167 -> 0 -7.08454271131544887499134170547742837413633062514771829120968030E-43817223 +precision: 212 +divmod416 divmod +1872070772968e-167534092 -9.53669e-60148117 -> -0 1.872070772968E-167534080 +precision: 253 +divmod417 divmod -484889255511209827799166727051998248034345252259154578466593197308137243454912339973014496949910404218970577692188927579108.50791334925533449207920 +3989509690262864737716512472671780596964615266963344566767951147377177007e-552053275 -> NaN NaN Invalid_operation +precision: 191 +divmod418 divmod -5096897417377480599979585510616e-385907634 .788069093606420 -> -0 -5.096897417377480599979585510616E-385907604 +precision: 273 +divmod419 divmod -9717841123068706385766146470585226397998793052221160854932029676517496496043 .15276821817360163245117310136530577268e-885110774 -> NaN NaN Invalid_operation +precision: 185 +divmod420 divmod 74691090868448466201459853414271594873692269933628686027200776259269473506344174706240946231592736405459945921557816766188826580595620978805600.810937448151746545217810618757387675589 Infinity -> 0 74691090868448466201459853414271594873692269933628686027200776259269473506344174706240946231592736405459945921557816766188826580595620978805600.810937448151746545217810618757387675589 +precision: 6 +divmod421 divmod 372 -0 -> -Infinity NaN Division_by_zero Invalid_operation +precision: 154 +divmod422 divmod 5417682436655992785416322314431763537191.75959398721706073207164569663316766027655427645056016253473052899112367220904312601423123971E+625151717 +Inf -> 0 5.41768243665599278541632231443176353719175959398721706073207164569663316766027655427645056016253473052899112367220904312601423123971E+625151756 +precision: 93 +divmod423 divmod -.86562457510446588137741374351 436100561.85783E-832434401 -> NaN NaN Invalid_operation +precision: 243 +divmod424 divmod -37819654882192112907763065140408.9709376366379377310090256571527015 995443764454236492447345921962470 -> -0 -37819654882192112907763065140408.9709376366379377310090256571527015 +precision: 173 +divmod425 divmod +734162903427925696840141561303898412993159326515089798617459403068660640257027495516111301780517142091249e266070121 +7957909533551561636199252556227572341486625614564051 -> NaN NaN Invalid_operation +precision: 2 +divmod426 divmod sNaN92093417291700554454902968805249579244515 +4 -> NaN15 NaN15 Invalid_operation +precision: 246 +divmod427 divmod -551966672513708641567611541677326820476.88056911638316869795671391517162706476225148432334863 -3435333149590009011255264323513842849229461007e25851213 -> 0 -551966672513708641567611541677326820476.88056911638316869795671391517162706476225148432334863 +precision: 168 +divmod428 divmod -12947465080806131.7728723504182394759802314429772437203622826316104819520830130075102191137633147167360272328137271783741213246199562993002352572009276423981 608667182922203851531733893940957753912424916638761664556263682460853165824315 -> -0 -12947465080806131.7728723504182394759802314429772437203622826316104819520830130075102191137633147167360272328137271783741213246199562993002352572009276423981 +precision: 154 +divmod429 divmod 79773231452473031118778361634666254497218661671139648729690457480034904540329850933747126436258596239466783650998910 -3523809402171784637648691536512036123687180902523575880884 -> -22638350247691435816344564608399360226745631020347752615981 1055270346441146430587750578980620195902740682816200191706 +precision: 131 +divmod430 divmod +211445925570553 7489.728 -> 28231455878 331.816 +precision: 184 +divmod431 divmod -306987330402125819037620754829475753631522731724491034108427962325788922392889181814234159589723303115386118098523019008512871722.341017344287715542047002351595609577669239470 -693402415965037396663638546908914322508323649413359018272871391278092112377912705881141E84313894 -> 0 -306987330402125819037620754829475753631522731724491034108427962325788922392889181814234159589723303115386118098523019008512871722.341017344287715542047002351595609577669239470 +precision: 287 +divmod432 divmod -.4879824443046314533261504284853091010692123628227623323548909363935260900174495630191160191357906431271434957136591787452024200418296648570880135736711675224276587554930347106139956765788305151114666513734404592448097938533631073405208E+391202335 Inf -> -0 -4.879824443046314533261504284853091010692123628227623323548909363935260900174495630191160191357906431271434957136591787452024200418296648570880135736711675224276587554930347106139956765788305151114666513734404592448097938533631073405208E+391202334 +precision: 96 +divmod433 divmod -4678.e-117068450 -Inf -> 0 -4.678E-117068447 +precision: 2 +divmod434 divmod +45.e918934309 -0 -> -Infinity NaN Division_by_zero Invalid_operation +precision: 114 +divmod435 divmod -.14367970339182304378837903076989053594213341617201459913711373871636e-229482236 +1370484327221486121306797172027318 -> -0 -1.4367970339182304378837903076989053594213341617201459913711373871636E-229482237 +precision: 95 +divmod436 divmod 4489984147392718031196136944211007723238864871783270321134479727E-745090152 +71554901469052406148639899731.446 -> 0 4.489984147392718031196136944211007723238864871783270321134479727E-745090089 +precision: 178 +divmod437 divmod 558280627577129471613083677224600687526163679609715905633583348675154725910319592349734048503968534317517722196150065252967901574339876835028884112087879749758E-354085849 -.478476399575338545168292105329709835344817281884843614632541185146060185299735E+675349483 -> -0 5.58280627577129471613083677224600687526163679609715905633583348675154725910319592349734048503968534317517722196150065252967901574339876835028884112087879749758E-354085691 +precision: 235 +divmod438 divmod +53841281690447162029142049817357874191916314241572562064.66521710 -.41086089248594087335049989583655e686132750 -> -0 53841281690447162029142049817357874191916314241572562064.66521710 +precision: 89 +divmod439 divmod -Inf -15E185788057 -> Infinity NaN Invalid_operation +precision: 180 +divmod440 divmod .110202023293248662137418192581845915697517927476618 +Inf -> 0 0.110202023293248662137418192581845915697517927476618 +precision: 246 +divmod441 divmod 8602651746019050707940916596127775514543393344023617835198298069020156830254534783874614406210213945837172261322115402170439020661052993098381622739677232166751772015315362767217358.519071877629966108915499011857e-908107730 -905584440129116781220440170731197831844310624758806222449704426230406171105376300481994851190596808642446 -> -0 8.602651746019050707940916596127775514543393344023617835198298069020156830254534783874614406210213945837172261322115402170439020661052993098381622739677232166751772015315362767217358519071877629966108915499011857E-908107550 +precision: 131 +divmod442 divmod -Infinity 70983979842.76 -> -Infinity NaN Invalid_operation +precision: 38 +divmod443 divmod -7067219902921191973404017756468251 .9971615749040051 -> -7087336777494199130793718813933319 -0.6391542225640731 +precision: 183 +divmod444 divmod -818089508866099487592798573417735970888328223226984547537020079088249416151796579875607124340363856442782106963274987788286028753740853969951047133189257386821575499.141413 +1805063087648034362103358432419602025809463345428597899339956485836261330351920276824e-25434312 -> NaN NaN Invalid_operation +precision: 88 +divmod445 divmod -.94779825567 -.838550 -> 1 -0.10924825567 +precision: 84 +divmod446 divmod 81773907946662926745653349 +938879251118E425091966 -> 0 81773907946662926745653349 +precision: 132 +divmod447 divmod 4192522383353430958879924784211183702233897506558038654340881750751193857509494298180935264949804183855774 -.93626170044603043109288468453253563881343212790950093E39467846 -> -0 4192522383353430958879924784211183702233897506558038654340881750751193857509494298180935264949804183855774 +precision: 134 +divmod448 divmod -267455863607963518067979768670298128346556507121635159780408075088057126142418918757199199575837446682 800333849847151217873972294726691802827511362182360e-895696023 -> NaN NaN Invalid_operation +precision: 296 +divmod449 divmod -8443578396905368.8365465 -41888421297 -> 201573 -3650805187.8365465 +precision: 208 +divmod450 divmod 94423987691964813686793337136762602351375565054365694287309673425077688.6223615839934011014705154617375200320517919484115831070898112940294260614748455783622162142986176094903617121324E-512432846 -Inf -> -0 9.44239876919648136867933371367626023513755650543656942873096734250776886223615839934011014705154617375200320517919484115831070898112940294260614748455783622162142986176094903617121324E-512432776 +precision: 126 +divmod451 divmod -233277968607217545818573494232176 .9274823563284819E+550531472 -> -0 -233277968607217545818573494232176 +precision: 50 +divmod452 divmod +42113115164447921096912249931726786256679431 +9281004387844328671477 -> 4537560096362524110183 1737476784592299329140 +precision: 259 +divmod453 divmod -6386254212130624712534441573192962601510189089028092932593267711198947761617274740235729664020010385321433130024459603933061443254848026320605571e-782938757 +402395299572760090727026752335313256047995325261289871420951455038476586 -> -0 -6.386254212130624712534441573192962601510189089028092932593267711198947761617274740235729664020010385321433130024459603933061443254848026320605571E-782938613 +precision: 279 +divmod454 divmod 7811015644022679890736587134204613193473453559431172427990878323383297118590897373803071744616793832012 3373674726445876075880885139516611051.33362759959951e+795484167 -> 0 7811015644022679890736587134204613193473453559431172427990878323383297118590897373803071744616793832012 +precision: 177 +divmod455 divmod 9988484520609.265242913601638207552930882753779613463406262635505061100884792996779750286275087949369461967784030884192615796548104572006815081272 +185258302004237175728849728303176407889813152262232596521985641252455354 -> 0 9988484520609.265242913601638207552930882753779613463406262635505061100884792996779750286275087949369461967784030884192615796548104572006815081272 +precision: 63 +divmod456 divmod +.969286231711641208213837677790095923465056138855 71221709790423539552646E-146140050 -> NaN NaN Invalid_operation +precision: 143 +divmod457 divmod +87467962380027279239524476149685966757E-997211347 -5378050291003311116 -> -0 8.7467962380027279239524476149685966757E-997211310 +precision: 163 +divmod458 divmod -Infinity -70500695515786287766276347421e969760892 -> Infinity NaN Invalid_operation +precision: 17 +divmod459 divmod 1162685504237 +855682E978294482 -> 0 1162685504237 +precision: 79 +divmod460 divmod +1178594349717872338318011223098 -15463443009570e-462891834 -> NaN NaN Invalid_operation +precision: 209 +divmod461 divmod -.53662945822753041733065683545513535461818735509363701966128048430866633415828802936039222701645702642561289380766031709100158739463131107038369412236446763432417153973290740169838638231249332524184183e-817114198 -6957775724024401712213653693877857265414220236825334286597297511795862609283412273657506547251640191 -> 0 -5.3662945822753041733065683545513535461818735509363701966128048430866633415828802936039222701645702642561289380766031709100158739463131107038369412236446763432417153973290740169838638231249332524184183E-817114199 +precision: 93 +divmod462 divmod 85599.510104223050210124212032610182984733871732443e+23982228 +NaN -> NaN NaN +precision: 195 +divmod463 divmod +Inf -88743600534933e82182420 -> -Infinity NaN Invalid_operation +precision: 22 +divmod464 divmod -Inf -1237886702 -> Infinity NaN Invalid_operation +precision: 156 +divmod465 divmod +292783585 -sNaN5446261226431216091415684499290577181945468406213519 -> -NaN5446261226431216091415684499290577181945468406213519 -NaN5446261226431216091415684499290577181945468406213519 Invalid_operation +precision: 158 +divmod466 divmod Infinity 265256467694977464417362453093281992581832568594990765295308613632570955 -> Infinity NaN Invalid_operation +precision: 164 +divmod467 divmod -301760885027419959328245360182476667117076501070103821568049172796825980120958443320402307434907331347424413600136348224968486447281E-618996735 +3045449643467175324449926577994019428038980.98577547931271928432425 -> -0 -3.01760885027419959328245360182476667117076501070103821568049172796825980120958443320402307434907331347424413600136348224968486447281E-618996604 +precision: 56 +divmod468 divmod -Infinity NaN -> NaN NaN +precision: 244 +divmod469 divmod +.9591343612737043e-622765571 -.85349022 -> -0 9.591343612737043E-622765572 +precision: 230 +divmod470 divmod -6138202573215604853537183915445829354185952831365633837320721524369865524271617307490608147748059246009664947926221586351899248388866285599910210701016540480774418188689829233636173507734262210283105785 -.71977295262980498793864299823961865874132484943447134646528153255292638217853460527619420891384029177 -> 8527970592377367408304409096545292694583355289260761131320985475157392126390540722261476153299865292142252438854922530996931888475666890515326826347419470370247657057570265424425887469599080555636486328 -0.48582678644167150120724527160405621254013922204848042899914916900601607229078950284863139196286407944 +precision: 99 +divmod471 divmod -2381954568843304039894.4790237378556748589435208484334064496608568 -795911018102296036295050952589630 -> 0 -2381954568843304039894.4790237378556748589435208484334064496608568 +precision: 121 +divmod472 divmod -50411117246435144867789365588632537845784997624787983734732268224048952265628233943733979422997366506486309457 -2324309562188724396725031018154032775279418612222458460E-509041872 -> NaN NaN Invalid_operation +precision: 240 +divmod473 divmod -.358347659855595180796886213549877904103160082723143595374286944300488824860503622642878472527643419127938090529 -4652461804458978059098366862838908648684102.875846410684E-957900580 -> NaN NaN Invalid_operation +precision: 288 +divmod474 divmod -.400977031022035915e-747075748 899455423E-445688089 -> -0 -4.00977031022035915E-747075749 +precision: 180 +divmod475 divmod -2682894223828119581027717647846884564382296146930803638075188867692173747538503210399960340247979386431449704807536513853470832258415953638453063477331171991156643e+275022525 -51729236977321717.7977365007936362925559348172012710702425120954970299430486172912E273969257 -> NaN NaN Invalid_operation +precision: 77 +divmod476 divmod 44867127261429559255 -4265387.29E+21412379 -> -0 44867127261429559255 +precision: 170 +divmod477 divmod +21685069906187150428073630391387944634463948244387279239854483142119218927875271E464565409 -6135713584858318577575842151061187372324 -> NaN NaN Invalid_operation +precision: 231 +divmod478 divmod -sNaN 581593462337084261882565026136230819081556583749781578897 -> -NaN -NaN Invalid_operation +precision: 193 +divmod479 divmod -159878223983581972419377844015578350145981744960565688455571877763418163809119571e-799064955 sNaN5178128527856010203135877854546617283745716037845944681720 -> NaN5178128527856010203135877854546617283745716037845944681720 NaN5178128527856010203135877854546617283745716037845944681720 Invalid_operation +precision: 69 +divmod480 divmod Infinity -98353306183 -> -Infinity NaN Invalid_operation +precision: 134 +divmod481 divmod 739244313546332670559865010254103079636917118958017098722371913169232.503017e-367891982 -2618856870395316611991630633728223149e+633953249 -> -0 7.39244313546332670559865010254103079636917118958017098722371913169232503017E-367891914 +precision: 19 +divmod482 divmod -31651491401E+640980036 +Inf -> -0 -3.1651491401E+640980046 +precision: 91 +divmod483 divmod -78890097251061976422129080868359601152635546662481824136956080 -471666942.547966760136661192871 -> 167258058885564466351469303579106344869032400830192615 -329014114.417519466521405152335 +precision: 131 +divmod484 divmod 802230715362 -.899345 -> -892016651409 0.572895 +precision: 215 +divmod485 divmod -607714865592026653590017413882716067629745735017901223839905671068045467647952819700551539132618178531238170033348005320769272300050925907662095368177917282834082198391157980357100770715615771346210785481988249178 +6437201398678483010855762504809619243918028969722481652318350627592274404685367513356677265192979269665205 -> -94406688241381836521356474557851397690931619805767961602275839882409444838418941840477114001200855602345583 -4636518390788144670418251727894034305015299144866501096994623287806437071413390001786591695341804867709663 +precision: 4 +divmod486 divmod -124 9E-269337103 -> NaN NaN Invalid_operation +precision: 108 +divmod487 divmod Inf -95237596316531894 -> -Infinity NaN Invalid_operation +precision: 69 +divmod488 divmod -6554090183787.3925189 738776.9880 -> -8871540 -583665.8725189 +precision: 277 +divmod489 divmod 723634757575311013298436867040856848781206576391053400718238991855182610292109601267416256314155280 +8440917595817849416344837921541144236469240905993 -> 85729394862691735322691334102490607626731987079790 1031961228125117062761009923977493862426333973810 +precision: 159 +divmod490 divmod -109105912522137528359729234229255191052996025740814421303718239879834776892187030167879561255442e-837179506 -355357001235743450574363249190945621924556124561 -> 0 -1.09105912522137528359729234229255191052996025740814421303718239879834776892187030167879561255442E-837179411 +precision: 136 +divmod491 divmod +844100814552796483230419002896907158802790398E-935414981 -1220114143390972840901E-90245067 -> -0 8.44100814552796483230419002896907158802790398E-935414937 +precision: 83 +divmod492 divmod -657123340247333684255493176668 -136488344426861 -> 4814501509317240 -97236266793028 +precision: 244 +divmod493 divmod -Infinity -88055291267001203522562441076642801917034424321156236166692820898199917009824178694494991859019260120811180429820724684 -> Infinity NaN Invalid_operation +precision: 193 +divmod494 divmod -760465773991929363 669191600e-509164468 -> NaN NaN Invalid_operation +precision: 101 +divmod495 divmod +752010591555092499130364179746 +58580426519.1551e-724228815 -> NaN NaN Invalid_operation +precision: 261 +divmod496 divmod +65034567131560276494434075743272439766484613221 -86373756906761012.957895E-963966212 -> NaN NaN Invalid_operation +precision: 148 +divmod497 divmod -1804302005777935224105688409376930254917985346832551107013385360320025460630439.35432574188221855352e-781140461 +641503077984937594183711064435331074788508502702E563746423 -> -0 -1.80430200577793522410568840937693025491798534683255110701338536032002546063043935432574188221855352E-781140383 +precision: 219 +divmod498 divmod 28964204954403197748716371701294883604856163184151454633427540335366978333612274643732200055449308795131597398380284516870705888434882189073726279004462089409017529523329999257 -.1697610798484773878494912222573988992849370351297937405596844256951514878531605109437298 -> -170617464145819534103969663597102533857861271011327038883701675530311513921365404209426181084421361947823630493165445961310966143683795377013819800240051877857144197524862604704 0.0591541864098795822360861009708485314212725149233945837665442857215655415078799952150208 +precision: 169 +divmod499 divmod +9256007327950309946765042988987696260407918812024760655685863307763383958126680202987961730484787311510454521479890344203226452577890848621137899254479740620877E-90376023 -29694339376628965615461772049488914093247129741069620755160720208070906622093056 -> -0 9.256007327950309946765042988987696260407918812024760655685863307763383958126680202987961730484787311510454521479890344203226452577890848621137899254479740620877E-90375864 +precision: 119 +divmod500 divmod +2567546283164375772429515888554323440330240618797483674122800211588658e-399817625 -2300547679246128985574399940421.402 -> -0 2.567546283164375772429515888554323440330240618797483674122800211588658E-399817556 +precision: 22 +divmod501 divmod +8.40593006866126292 +994983707E443880287 -> 0 8.40593006866126292 +precision: 28 +divmod502 divmod .1984252397796034101 -Inf -> -0 0.1984252397796034101 +precision: 291 +divmod503 divmod -7581064779858757800493501174208887927008890959579682889619354391694895346204379541156291999673380134617826343327154060565017 Infinity -> -0 -7581064779858757800493501174208887927008890959579682889619354391694895346204379541156291999673380134617826343327154060565017 +precision: 185 +divmod504 divmod +22791776015513797897797675510849078040126665654509369789154111E53628698 -2886204875591678417587288441798 -> NaN NaN Invalid_operation +precision: 134 +divmod505 divmod -628429869476503629709539502448900034510855760171815294933283014378207314993144073029675429522866616642198813442376714964374182.944431e237960572 +260413814538119005469836624918033158847208794224950845478213499853e+597635478 -> -0 -6.28429869476503629709539502448900034510855760171815294933283014378207314993144073029675429522866616642198813442376714964374182944431E+237960697 +precision: 86 +divmod506 divmod 2700378005276832057823715300553.2077960547966711071576716080E-148193564 -19109185533633911584421684100 -> -0 2.7003780052768320578237153005532077960547966711071576716080E-148193534 +precision: 9 +divmod507 divmod -.6792 -49e999260339 -> 0 -0.6792 +precision: 277 +divmod508 divmod 73808921748820650058183730371378946829462851691625353839470415950241855633164627181463089060369301522491198E-98361765 +59966154542194706064868563064430894025750482004473639 -> 0 7.3808921748820650058183730371378946829462851691625353839470415950241855633164627181463089060369301522491198E-98361659 +precision: 229 +divmod509 divmod -82577059642719459556564235444315038624639589206691528930825998650345828273689047731905526506059784457477681923663281372322922836814339589899065421234275807200899083033105070699441834899277359268345098368865813400178274046251857E347470906 -NaN -> -NaN -NaN +precision: 87 +divmod510 divmod -382519297737311948362155477761167809958957827980400425463E-279869133 -9848273315193768165096886415e-666840744 -> NaN NaN Invalid_operation +precision: 279 +divmod511 divmod -Infinity +99923.349498400499336819718391614875467049459779264473124035261691e-897680620 -> -Infinity NaN Invalid_operation +precision: 138 +divmod512 divmod Infinity 40671098445565129805.3297274602680259636e+589044260 -> Infinity NaN Invalid_operation +precision: 120 +divmod513 divmod -57897449449716489595999661301540953824278915838911491608 1359610029810585.188170062854 -> -42583864623139404392731001610970278815981 -285460757911993.950530330226 +precision: 228 +divmod514 divmod .15900780056146540856656245592190675084204676916923820533330135108426851050223011869965417283313538396495979986561149891497839926088921869405635768095037779247822944768006002523521459531385505748671 -Inf -> -0 0.15900780056146540856656245592190675084204676916923820533330135108426851050223011869965417283313538396495979986561149891497839926088921869405635768095037779247822944768006002523521459531385505748671 +precision: 295 +divmod515 divmod .57858912706147494361517388076334199681198993935416060313546118947665891301454468 -9477552311696790559648761237283766166324 -> -0 0.57858912706147494361517388076334199681198993935416060313546118947665891301454468 +precision: 86 +divmod516 divmod +10946500046414 -3.15552e+970861638 -> -0 10946500046414 +precision: 267 +divmod517 divmod 90044897892818027144287102960873e+853944861 8048546040641212E-696850828 -> NaN NaN Invalid_operation +precision: 292 +divmod518 divmod -.414308131873443896428316906138419127330215293188e-137890672 -663994229078852747650985 -> 0 -4.14308131873443896428316906138419127330215293188E-137890673 +precision: 266 +divmod519 divmod 95475817599790936508648410909880519659720330955950567529684241253641174400724316104515.468896411279454981851416 +5354904410233925645057097604.15452377599245635746158422e-318236012 -> NaN NaN Invalid_operation +precision: 205 +divmod520 divmod 3258885329796497073885733179657844.5510334877161793845611330389126950365060419335717672882927556e+782748572 -.198195390213694625641154357807404835061340164145e+592230120 -> NaN NaN Invalid_operation +precision: 179 +divmod521 divmod -48840701589967121371389584332911336468174195576187717335382296929508621837 8752769049619414935697401519184432293 -> -5580028595875130158193887116922744226 -1181947718812698256964196814054931619 +precision: 111 +divmod522 divmod -69670257605332620035675744125876387610733292116532925400310276217581895275900289661411904969495011628891 +51896092215944354071462308361933.29517738487255150471 -> -1342495256009418765727472906553392194689077944697189334188185017593190933 -34266849319856159463149218859442.77972415676052120557 +precision: 173 +divmod523 divmod 48816821939284579824355 +0.4881201981e-520474552 -> NaN NaN Invalid_operation +precision: 183 +divmod524 divmod .86931423045231611066515850681699627181344487300186092045039769290446803448637891690260366140668798073220896507573285274268948459e-998754016 4331779394971517774331633691253011753655632410002770740990335867e+740158340 -> 0 8.6931423045231611066515850681699627181344487300186092045039769290446803448637891690260366140668798073220896507573285274268948459E-998754017 +precision: 118 +divmod525 divmod 8710450520128744831444 -26372872097 -> -330280694802 7306091650 +precision: 182 +divmod526 divmod -4542707414.2046007047166036592257495121547551073704823000408967763223390601577402157553714452147 -NaN -> -NaN -NaN +precision: 17 +divmod527 divmod -6180274 +415.9 -> -14860 -0.0 +precision: 36 +divmod528 divmod +87844422154486308718.5177053788704188e713105698 -2.6927012829628757 -> NaN NaN Invalid_operation +precision: 267 +divmod529 divmod -642878136022742433620660764383626812737621748290779786755476887034501729783852578495857950532489435843405216613567446492162493200463915548203053129532538371531037892966591470924859860149101831460669396129 +93471578561014109002207499550252944522637346438373326727511147159420471518621512335495708491888847301 -> -6877792650127333017824344108759265720264300074238307071201358141916251620619992352908951092755734211760 -55437853880198771689073613508421813244019140480718710802984785126921108548011085303542770904430936369 +precision: 240 +divmod530 divmod -6941374808709050821850403676166497234068783454085282796465766 -365322099560711943445255720196 -> 19000697787119450002992255649081 -61210739118635660172695925890 +precision: 71 +divmod531 divmod +3135249078904916081643825879883985426652371322 -sNaN7767899162610210401635850790179124645907710577213794270011343419831605798780 -> -NaN99162610210401635850790179124645907710577213794270011343419831605798780 -NaN99162610210401635850790179124645907710577213794270011343419831605798780 Invalid_operation +precision: 279 +divmod532 divmod -.154880947305349008609009154333878687274390586667863041242794353532460720755343126590 +923778043344755435154733219817465923910066 -> -0 -0.154880947305349008609009154333878687274390586667863041242794353532460720755343126590 +precision: 136 +divmod533 divmod 94.673396204030 +4854518e+818429283 -> 0 94.673396204030 +precision: 80 +divmod534 divmod -4410060915204969688725377097639230864773388396574 656899066824626064926509 -> -6713452854367251420873341 -250099586486711626100005 +precision: 183 +divmod535 divmod 46683400010.9911065042526144792588273897556888017702160939091366078394997084828911415458498022814950754250641078356269128667793562060979040084641171062843540 322651368163796465730032575144358796337534009084900489842556747093531137271470 -> 0 46683400010.9911065042526144792588273897556888017702160939091366078394997084828911415458498022814950754250641078356269128667793562060979040084641171062843540 +precision: 94 +divmod536 divmod +611429542927920689 -Infinity -> -0 611429542927920689 +precision: 38 +divmod537 divmod -75619 -.35e25703774 -> 0 -75619 +precision: 264 +divmod538 divmod 278491929000741168769849904323427917474018784394263735252433727692365673746851070189560588858710668302285264318997671732869666452179762612466923734346473978539597851827 -85955190569732652095691018389817990792215724972748312781463041801932292879656290.5440 -> -3239966395918926144215869352541899236876283110133229355104040018703870112738931924661444 1846811413013474987463260882426440747138107754371819161878703426288667295753241.4640 +precision: 231 +divmod539 divmod -.8051446829189366976707956678558570087133400916450109351490927414403901740666E+867402713 +2.7003500046328718577446842699514436456 -> NaN NaN Invalid_operation +precision: 238 +divmod540 divmod -1938264856256364966856329985483306291208388907887888779060750813280203268127932985906551029326569333791112943716881080780879537774528517409438148770421717676523838113285265418137187970769441463635090765602e-857156932 .95434373022534672167548713245113734005001424327938954438291302308994737230487025639373208554504971796 -> -0 -1.938264856256364966856329985483306291208388907887888779060750813280203268127932985906551029326569333791112943716881080780879537774528517409438148770421717676523838113285265418137187970769441463635090765602E-857156728 +precision: 26 +divmod541 divmod -34719677772.16121085 -970083168 -> 35 -766766892.16121085 +precision: 112 +divmod542 divmod -3347361 -993. -> 3370 -951 +precision: 161 +divmod543 divmod -.61065527605966813636689758467364064186860179688E-159569181 +25895340945837536336608E-575547731 -> NaN NaN Invalid_operation +precision: 21 +divmod544 divmod -53369168077170614468e803184494 1524746331 -> NaN NaN Invalid_operation +precision: 19 +divmod545 divmod +3179094.4734 -7.517 -> -422920 4.8334 +precision: 73 +divmod546 divmod -61911563965616153911336841465177029890443854 +4632203676251147404144e-95697829 -> NaN NaN Invalid_operation +precision: 41 +divmod547 divmod 634159992571751E+974976513 -.84522034 -> NaN NaN Invalid_operation +precision: 216 +divmod548 divmod 693194401170339005384733560912950677955286227160150866358157365310113388293232181260143874389623854130321216009097383934730626341426461463370877617434920418775517979000038410576E880194221 -3852145958845684223144187235159785277094035397151010467230920129127257544329879007323266 -> NaN NaN Invalid_operation +precision: 256 +divmod549 divmod -9366879032446785233864871331943889961843022670354821252444719028340048969262011354521412777727315839015785313222004298154247066637710079594551575575183470040024913574228074072801495945154 -4821294738155798953089743177348982551274984676475930383509137090595761892848934274.84301337074 -> 1942814024273845761892297585856715252258450872240795039544979295753257487385906512325370905764658606888777 -1899784472654804200969397815927245682191357858931004374437969184902800350445343595.51695381502 +precision: 261 +divmod550 divmod -1909943168905193391503982333566733752334601195768049032121131456589486212474495421864491200362048629243601215940 -13466172964669302799211165612240750384510884688604568427e-497816756 -> NaN NaN Invalid_operation +precision: 195 +divmod551 divmod +313535790986050695901883743440311514951632695453236600570069109180996207755604011014502048331524629861698174 +652152167129576342030470608680279278393586113046136548 -> 480770910209601680281258226904816961600149936581245063 467741438033685107161098274279509306928636942112835650 +precision: 36 +divmod552 divmod +324068.5517383731513558751316745005 +13237372573762714 -> 0 324068.5517383731513558751316745005 +precision: 241 +divmod553 divmod .62939505406231005553261748771889089256865437557659132571926245527150690267307349528363594687192417774172028600462E642424937 36726447079982636580027598660974381623057114915446430095 -> NaN NaN Invalid_operation +precision: 188 +divmod554 divmod 783010086181434181034799475690288039962062722086511729870815054514549.7898592903797172016396900664330200748215e456915612 -65204201259091049903598223899688086.8820000185075573635 -> NaN NaN Invalid_operation +precision: 270 +divmod555 divmod -.4671360312009126762917865581177124036680478446863459666313439502007155619267336779420465635896005556728270718406666227231437057318554795532253830708694589 +Inf -> -0 -0.4671360312009126762917865581177124036680478446863459666313439502007155619267336779420465635896005556728270718406666227231437057318554795532253830708694589 +precision: 279 +divmod556 divmod -97529609088984500573469848230739976526464605584015217724769837128937775942 +79.768439362198420485314442320117268E+386008150 -> -0 -97529609088984500573469848230739976526464605584015217724769837128937775942 +precision: 245 +divmod557 divmod -4602e-21911787 58e816091629 -> -0 -4.602E-21911784 +precision: 232 +divmod558 divmod -344046572847341319651741947894611757500597504403727922666677570197278059602730784616591365660312206233E+662082140 +.666898064681439703094049462484987150926855887459562 -> NaN NaN Invalid_operation +precision: 298 +divmod559 divmod -Infinity -663379331569778614709290883318449911819360348094386603007711328614456113659874639650725.479924711871614363086130775756311 -> Infinity NaN Invalid_operation +precision: 260 +divmod560 divmod -35457281634761138.394948327854610628837668999784139681162894696302929198446315006463e-539565672 841091763070512958930725688473217968051048 -> -0 -3.5457281634761138394948327854610628837668999784139681162894696302929198446315006463E-539565656 +precision: 58 +divmod561 divmod -5367311636662158142139.859518379911388e+265243526 +854485693699022308E307118995 -> -0 -5.367311636662158142139859518379911388E+265243547 +precision: 268 +divmod562 divmod +517364454361125207174499053718950459.288447659656819248170740978308260298469203844214038108234518325504097153267311984536455292845663546424359447164551258018775300049479396002586738131996503082827184251783282554709926966493785099034802581648089279958243374741141416 .520016869406281654864016529665126479866237670133634413190213061103098376125992323243127023945348473425294313669253401955969112422842 -> 994899367306709132549248596286524862 0.388421840726915299009019639367326442740482377570863245489890339578844743505337849033834735462949655667317926915330551175726010351675396002586738131996503082827184251783282554709926966493785099034802581648089279958243374741141416 +precision: 197 +divmod563 divmod +4282026237091954764768993348888339687611289690076042999911269892918648510838519106493461536668172759168097294520.8444881433049996698163762266178572157780845376030065666834477430644724283553903305E-631884227 .33724286938466956835621813390281595875784156959157125863567846263616707617313694685128549535600E-737254915 -> NaN NaN Invalid_operation +precision: 127 +divmod564 divmod 415325450209688854702752569085757166663508536575754538144026970100330340510319605144107859880252210e-524534914 2054374778158771876436809146038904483152726159026e-492345447 -> 0 4.15325450209688854702752569085757166663508536575754538144026970100330340510319605144107859880252210E-524534816 +precision: 256 +divmod565 divmod -2159435783394655686809638832512687198885270607.249866987204355270156861121295231783948766929106437790436262959610000305E556383137 -62254941047436911474025954874530100316173267681514630571475E-214801949 -> NaN NaN Invalid_operation +precision: 121 +divmod566 divmod -76489202609278592619045346528883535486640569440032840075846990847e+353390046 932607130610428103107301723343225 -> NaN NaN Invalid_operation +precision: 74 +divmod567 divmod -5661664033273261629814164773035375575892787372504726246929746157 -474467599409700995.48912271094379 -> 11932667352453788813244744243339744314556782753 -193206962762083606.33583337554613 +precision: 201 +divmod568 divmod -.806696188072039823523345918061119324128311995063263224928250634148876206677574894425864540844819319294977098173935462568067072 -546423751758564655009135584616763563578509318831067899825760735 -> 0 -0.806696188072039823523345918061119324128311995063263224928250634148876206677574894425864540844819319294977098173935462568067072 +precision: 91 +divmod569 divmod +91069956747072909697850823794672595687805632879876286589 +1957186346331305602657292459e-996630141 -> NaN NaN Invalid_operation +precision: 124 +divmod570 divmod -927586442414246615432083749552057715283177080160808580491607002947173944025723902899596156703070 +.505856017610584093348527730500118067441424905332e+48467526 -> -0 -927586442414246615432083749552057715283177080160808580491607002947173944025723902899596156703070 +precision: 91 +divmod571 divmod -9503410521317045835016080805028728597427885419761313507632521831701506719115 28814231959066216172412892259037634167E-678342145 -> NaN NaN Invalid_operation +precision: 48 +divmod572 divmod +962459451014057681510460901442372E951354557 -Inf -> -0 9.62459451014057681510460901442372E+951354589 +precision: 244 +divmod573 divmod +88515999977214136203927802873637903239.130369961403883850276933788421052582942262838154226872080652189007876216922486289641984068571810515917433235 6903765346775306091662625948212129108083957506085881155036254235189227187 -> 0 88515999977214136203927802873637903239.130369961403883850276933788421052582942262838154226872080652189007876216922486289641984068571810515917433235 +precision: 155 +divmod574 divmod +.555443032717713075665891077603443719572531210480020668782738303680512096185503235789363211930275288592814605593095610362749808499831856070040482556 752077.1632872344653214295487951366038151802282302899607909320605905282177 -> 0 0.555443032717713075665891077603443719572531210480020668782738303680512096185503235789363211930275288592814605593095610362749808499831856070040482556 +precision: 273 +divmod575 divmod 86852580059.5509787065482422686385030197952634989154409094302071908711052833E830488815 36694308343.38374563951550544522816364 -> NaN NaN Invalid_operation +precision: 111 +divmod576 divmod -287126414.868908101169868415435220E+828257279 +22158262880959920 -> NaN NaN Invalid_operation +precision: 261 +divmod577 divmod -Infinity 96777383952659836402319594170996355766367960910393101689245019668008878518184.7E477824686 -> -Infinity NaN Invalid_operation +precision: 9 +divmod578 divmod -917005E393139220 -.986 -> NaN NaN Invalid_operation +precision: 79 +divmod579 divmod -84938601734958617765202688578953805871178300333751 -416705648207450802510534. -> 203833574371598580260241509 -379332794540855943777945 +precision: 286 +divmod580 divmod 985204378082578457560746592129621750553951389215441663061478584761879992365133069922606325238241934521609913280513240070301044194505557369356173189051217364090032626682878702262378792.394488808822514490986889143886221143182186029 +669011276057273187474356970385366719350964556005791198854934417240475166467857765766091315045461875861574791466770 -> 1472627462856450253314837193907698513541103959500998217020979273849587 223238262776954362082379538280966891034532727791892618091686831022783742866405464269904340541389885698086173654802.394488808822514490986889143886221143182186029 +precision: 74 +divmod581 divmod -29782671068547175.68667698628220081196 -208129631512623246 -> 0 -29782671068547175.68667698628220081196 +precision: 224 +divmod582 divmod -83882836230085.5954418414670990468343810291903593867184611944442906 +860847628463206326425243928135140e+312565990 -> -0 -83882836230085.5954418414670990468343810291903593867184611944442906 +precision: 75 +divmod583 divmod -640957082553224984783028378 -3202897749546 -> 200117872212460 -2842802485218 +precision: 200 +divmod584 divmod -260510.687043836341013342732772319e+92909780 -.4329004228531895 -> NaN NaN Invalid_operation +precision: 144 +divmod585 divmod -1455614420605409841168069556128694814512590106446791827138760929195438088254394981849141995385716591142881009937075689825679479 +143940211448278937151036601709365967201437896308025464681731197 -> -10112632223890027617392643432142113488722072170699999809302197192 -28432724248537806393581738074017189297372973756419975393480655 +precision: 83 +divmod586 divmod 10577.5514708928 0.254273e-791266316 -> NaN NaN Invalid_operation +precision: 58 +divmod587 divmod +.794457363833297883954604 -492381639.213 -> -0 0.794457363833297883954604 +precision: 281 +divmod588 divmod 18254577884262845254534186152.5250446638935761638781498205496923719058261624470161205926510602426669053207005e754922838 -458429278995528576842184166273472703289018997832073259 -> NaN NaN Invalid_operation +precision: 293 +divmod589 divmod -7505149577360006106192023226979322533779580672831024699818274890136516609701 +72873963764421319189507882620297326462e-234960391 -> NaN NaN Invalid_operation +precision: 139 +divmod590 divmod -.65848704254155497794563143905896959363769494731496605221869634e-202152328 -1430322410830667995033718210645 -> 0 -6.5848704254155497794563143905896959363769494731496605221869634E-202152329 +precision: 212 +divmod591 divmod Inf 7912318545190925057651299917938457832 -> Infinity NaN Invalid_operation +precision: 127 +divmod592 divmod 1614971608323392137825493618307996874023493863322562508137254205407636134212374434340177179845390247.58120074402386 -121534033977876760488646313442922685726282641019582810171 -> -13288225161828913913623827233705190561960420 119485136636702910918163281927915637659518705461369958427.58120074402386 +precision: 224 +divmod593 divmod -5209393486462072290734789334862473236458642800556015164330816596484066695208950308899110751645126959626182245109982424311003487321521440772098474863657566995466888625665E702047064 .119725108363299846232635161399452133102147570389498089125080834971937331885052202594E+626299293 -> NaN NaN Invalid_operation +precision: 48 +divmod594 divmod -.3357731111387109013059718193e296972187 +98334.535480064E-891779348 -> NaN NaN Invalid_operation +precision: 96 +divmod595 divmod -347662541191758495202517353789589830363 5136349873830232828e+993483161 -> -0 -347662541191758495202517353789589830363 +precision: 218 +divmod596 divmod -461606.3395932471671910878034345686 98.3432521743505855 -> -4693 -81.4571390198694395878034345686 +precision: 87 +divmod597 divmod -233680685161676786939632065831951 Infinity -> -0 -233680685161676786939632065831951 +precision: 246 +divmod598 divmod +6080246.8703060103337757281730196913251422000179176122237009053072136631491625512425012 +1939713596792498188301996650022252023118921 -> 0 6080246.8703060103337757281730196913251422000179176122237009053072136631491625512425012 +precision: 6 +divmod599 divmod -880.4e-769009042 -15. -> 0 -8.804E-769009040 +precision: 133 +divmod600 divmod -7163797103607194931920857394262519263673707008544471084208475474322040955686997598556265218405865310745297417171115.143641257012 -887916390581778799732899411323281001641593991236518413016768592 -> 8068098730459684538977248291593596405487087817231382 -47101631195674000695684318168685181720120823249433207802816971.143641257012 +precision: 75 +divmod601 divmod +69954029639043033581049025056293173717672e732035815 58051735004979494381e+14867809 -> NaN NaN Invalid_operation +precision: 164 +divmod602 divmod -7305543867171614594117605347186146967352958475205202881509741864872491303.581590086649E996097760 -988525330520256161704902644374338144067541E+51312540 -> NaN NaN Invalid_operation +precision: 19 +divmod603 divmod -325 -8 -> 40 -5 +precision: 192 +divmod604 divmod 69631871441231.229477265993206295462700097411793939297356233 -.802132775558941657916916374070 -> -86808410730642 0.747470798319846581920616844471793939297356233 +precision: 36 +divmod605 divmod 76928256343409619721727E+301097247 -52630465765 -> NaN NaN Invalid_operation +precision: 141 +divmod606 divmod -64398 -68. -> 947 -2 +precision: 80 +divmod607 divmod 42373518490811253818555118394847071418354021e458203400 -Inf -> -0 4.2373518490811253818555118394847071418354021E+458203443 +precision: 264 +divmod608 divmod 621299470475.2332629028231365e-211835456 -Infinity -> -0 6.212994704752332629028231365E-211835445 +precision: 156 +divmod609 divmod -584769263861963857191676898315.985411607771892725094480939615434513719072400046292318041079 -522593018820876956715046062209909144984346075e+955688331 -> 0 -584769263861963857191676898315.985411607771892725094480939615434513719072400046292318041079 +precision: 128 +divmod610 divmod -.13144202002989791284956390897623499841830567970713136243338545911690931269934840584755070832147313578607511354E-742533808 +263736112.8108088201942239780719731134743027038270539849 -> -0 -1.3144202002989791284956390897623499841830567970713136243338545911690931269934840584755070832147313578607511354E-742533809 +precision: 158 +divmod611 divmod +5407567342214094562.8967130749 +20327004978549 -> 266028 14861780661190.8967130749 +precision: 3 +divmod612 divmod +54 +3. -> 18 0 +precision: 226 +divmod613 divmod -98233652932088950644896823241900654788318896894079e-721944612 2064463428559347167836904 -> -0 -9.8233652932088950644896823241900654788318896894079E-721944563 +precision: 284 +divmod614 divmod -857371113915170315791956009308615934222509159775559.35411598421 +493942480973997615118667411860 -> -1735771161501503867611 -362936745616650990331708509099.35411598421 +precision: 202 +divmod615 divmod -942139798395928537689783326978589767331002021023582608e889058901 -439900641067147983535020051E-145869419 -> NaN NaN Invalid_operation +precision: 213 +divmod616 divmod -NaN -73023565139404560676377537120781239361364007657221.545083411340892189153775 -> -NaN -NaN +precision: 223 +divmod617 divmod .628659649544271695479075419670492081725061811208484423280176468644651723589679833636188002386177759357911882437477478323077046708408279204341070499928854390067675069830893142522787795001e-576524382 -597514384835509765075480789044918059865182455579.443916137310456019534619936323103155250851368E-607703771 -> NaN NaN Invalid_operation +precision: 25 +divmod618 divmod -726312797579e+422743639 -377331 -> NaN NaN Invalid_operation +precision: 181 +divmod619 divmod +.476929053207647400479940272837389482320390999886714e-90781922 2703050847087131983052741 -> 0 4.76929053207647400479940272837389482320390999886714E-90781923 +precision: 299 +divmod620 divmod -.631741773063388821893733736523086997986392672208318278027426770091945515808239773222458561482275698566946239840157125519595527190471337657766266645682599629795952217332655966806567037250632280513551666042169162678520344002 -906450645645060168779593165198677524212510820199669523565390540093081557468120281933763432184003597721059832447e-276861615 -> NaN NaN Invalid_operation +precision: 201 +divmod621 divmod -6597984314453346611598493356740167485964128888490234425360946703125091564615035053 -82966491727654698181561340469926349539885 -> 79525892647261135820923695238897862640264 -54299407166577103332330869957076940105413 +precision: 277 +divmod622 divmod -.96591509807556705238989537066407865861021767995997764964030435780324897973122623206867959136602488449789125595693688785475800408975505564859427124238191566308416459128495952306041772424200923526750991033668166908747053371241578 42882007470572649685063883273819486311393498968295303308770838511859880388701805581450542193653859962642592817169 -> -0 -0.96591509807556705238989537066407865861021767995997764964030435780324897973122623206867959136602488449789125595693688785475800408975505564859427124238191566308416459128495952306041772424200923526750991033668166908747053371241578 +precision: 223 +divmod623 divmod -.682092733449869642710895926976870519837837318228427660628999995954336295771441938323779969037251812928751164896952437791545854173494170080611669686009742444349293142704127591616659899983842138812459414974e-143641787 540320549886060610741421606053748613713398708666409587126319925441579658190398482461147328591300288688 -> -0 -6.82092733449869642710895926976870519837837318228427660628999995954336295771441938323779969037251812928751164896952437791545854173494170080611669686009742444349293142704127591616659899983842138812459414974E-143641788 +precision: 300 +divmod624 divmod .8911847767490549318605100167607688932303412584850663784555907895625472355021994166435552334953594668503648472311606455972513942675825680063368914012043934669321902514792836540 +1741384995218626058155210075542255304077499.939987946149512416539316081507266560478026458 -> 0 0.8911847767490549318605100167607688932303412584850663784555907895625472355021994166435552334953594668503648472311606455972513942675825680063368914012043934669321902514792836540 +precision: 43 +divmod625 divmod -61533129825898528.695 -134676838.0 -> 456894672 -101891392.695 +precision: 272 +divmod626 divmod +645085811090069167129664035529326275298316308664765295692422911546107854147621326916029950560021891889655794200001035793593334830410218858010878047507365839817478345243826267590039280384305 -Inf -> -0 645085811090069167129664035529326275298316308664765295692422911546107854147621326916029950560021891889655794200001035793593334830410218858010878047507365839817478345243826267590039280384305 +precision: 219 +divmod627 divmod -1600728139221868543572315933696731868248446486539241414 -632633969019880293773556914e-542873260 -> NaN NaN Invalid_operation +precision: 183 +divmod628 divmod -614557421719.63137107268 +Inf -> -0 -614557421719.63137107268 +precision: 273 +divmod629 divmod -Inf -791382126196521509019618809646558396841190719473140123926246558e-95744022 -> Infinity NaN Invalid_operation +precision: 44 +divmod630 divmod +23990 68e-498298473 -> NaN NaN Invalid_operation +precision: 178 +divmod631 divmod 233208144738128333331510108525648371090768928580093968545909 -612050232953105591322884791913 -> -381027785273298647713205388044 432445304725359555276610457737 +precision: 255 +divmod632 divmod -8623097822137791141684e+665980724 -90216055717 -> NaN NaN Invalid_operation +precision: 17 +divmod633 divmod +10.6734648355 +9323.40E912427396 -> 0 10.6734648355 +precision: 139 +divmod634 divmod +4763455172805384724374914696107547291530183956124171003523715208205121552180312430469e173200958 Inf -> 0 4.763455172805384724374914696107547291530183956124171003523715208205121552180312430469E+173201042 +precision: 78 +divmod635 divmod -775450755741508716327557067176897 -1492880428663609 -> 519432595439457774 -1363526661230531 +precision: 184 +divmod636 divmod +2.549023 -5831.E-799815691 -> NaN NaN Invalid_operation +precision: 75 +divmod637 divmod -89952533795934304441289866803.7 -.77536098911655 -> 116013747220409746720893009518 -0.31702643867710 +precision: 224 +divmod638 divmod +61729345290225509491097216818353943663864508094336737060960656355086458168014444710985559773495210132559762785770978003858073141182443214211223714291766306984839543318013406118421.5193105329542245843125758556384378452e-900495481 621754330658802405298229307135409977373376015828012013711539122778862561934077876239894048943985429588969010E-524712968 -> 0 6.17293452902255094910972168183539436638645080943367370609606563550864581680144447109855597734952101325597627857709780038580731411824432142112237142917663069848395433180134061184215193105329542245843125758556384378452E-900495303 +precision: 184 +divmod639 divmod .18031865147065322450743120784389856146152e+641211808 -19997077657509916405 -> NaN NaN Invalid_operation +precision: 137 +divmod640 divmod 87.849937e-444222070 -2422 -> -0 8.7849937E-444222069 +precision: 23 +divmod641 divmod -19192766396466526631 +43884.9115e215967530 -> -0 -19192766396466526631 +precision: 269 +divmod642 divmod -2548831058318384185416345870615146946747445940996236581061882140688171453839891330696541353991723903102624189949587823361158039445593420774206719858664732310949766997778412151159581556.3405899398421361031881499502626237687496331055340234177962592255715684878149106588864 55403222207247525477591961629249396479245301194540623143056523470020374119289926708550068615565904711172495274306419757158527269709115e-904260785 -> NaN NaN Invalid_operation +precision: 296 +divmod643 divmod -518674366467411828511032291617344021306442702059741378454793332237153929542319776560758699704686098749467347326.9536553e-66369657 +.4178966096507973466342885841979490558594640560110721284496 -> -0 -5.186743664674118285110322916173440213064427020597413784547933322371539295423197765607586997046860987494673473269536553E-66369547 +precision: 37 +divmod644 divmod 72421e-434556227 -50e-452440141 -> NaN NaN Invalid_operation +precision: 232 +divmod645 divmod -55361436545759049388963221284140207782077955430487609.46588713293393241578011566891846288989841467042513459205476604084961664932153894077556726152651075024381561546637652548787865584763 -26753670911768047237547080553167591918013804016965806956033846567072151102600231584579022150e+280487412 -> 0 -55361436545759049388963221284140207782077955430487609.46588713293393241578011566891846288989841467042513459205476604084961664932153894077556726152651075024381561546637652548787865584763 +precision: 65 +divmod646 divmod +188087154759679781262355018529740 -2401644353508857 -> -78315989827919430 828010631138230 +precision: 63 +divmod647 divmod NaN -Inf -> NaN NaN +precision: 136 +divmod648 divmod +749072417129163303818288876883907.767254425710E-893931216 -4463233286991.201455538 -> -0 7.49072417129163303818288876883907767254425710E-893931184 +precision: 66 +divmod649 divmod -212907407495524179.766974228054475048266988E184345309 sNaN81260222139795876287256967671943301598391680415917986 -> NaN81260222139795876287256967671943301598391680415917986 NaN81260222139795876287256967671943301598391680415917986 Invalid_operation +precision: 272 +divmod650 divmod 841461901330216688757423212256775577679187039095835845654167293902675034555835077051564736553754835024893537523228166138906490557103041871496277479141270951436793.559661469085516563e-315232854 -891245276351515716992776512353636688607579847726577346903336193837809705861222068503143072 -> -0 8.41461901330216688757423212256775577679187039095835845654167293902675034555835077051564736553754835024893537523228166138906490557103041871496277479141270951436793559661469085516563E-315232693 +precision: 234 +divmod651 divmod +730474418641397.2823466462971828654126983192622591131692767638245092488116576771824215988389877494934636989355245041169858625720340857882855710441784414002857880067799517665042 +295816094329160376611275459815184129597402138911625379485217206645594799697239686727315 -> 0 730474418641397.2823466462971828654126983192622591131692767638245092488116576771824215988389877494934636989355245041169858625720340857882855710441784414002857880067799517665042 +precision: 33 +divmod652 divmod +61340556.51678813343 +54.698526 -> 1121429 43.20313413343 +precision: 51 +divmod653 divmod -545523235803500423110821519760987158821576817335617E-359593942 .6348322473865422531959480 -> -0 -5.45523235803500423110821519760987158821576817335617E-359593892 +precision: 244 +divmod654 divmod -.652427694458791062979510281756674011414375287 -.3006627971234826680338 -> 2 -0.051102100211825726911910281756674011414375287 +precision: 96 +divmod655 divmod -606666367138385646527297668191362531407614710184886939906044 +625362341954641475804487439804e901162673 -> -0 -606666367138385646527297668191362531407614710184886939906044 +precision: 36 +divmod656 divmod 72814892405616.97759936012566103 -.5842547909953117e+220616127 -> -0 72814892405616.97759936012566103 +precision: 183 +divmod657 divmod 6475095103368501995555013281987 -791646400189811 -> -8179276886519013 97444752905444 +precision: 181 +divmod658 divmod -628829301383.6839e-339030835 -sNaN2169416481307002560677795697242456221685525433078645429339 -> -NaN2169416481307002560677795697242456221685525433078645429339 -NaN2169416481307002560677795697242456221685525433078645429339 Invalid_operation +precision: 24 +divmod659 divmod +496249651981190209. +.35101062 -> 1413773896588058244 0.17744872 +precision: 189 +divmod660 divmod +506047 -686 -> -737 465 +precision: 144 +divmod661 divmod -651180500703286174640591236919615890136128783778993066128047334354501356056379122195392609399. +346438524620882378053826346825842323072196741 -> -1879642286942226441402830413056133364973902495131 -118946995110544637125684763418582682166041328 +precision: 204 +divmod662 divmod -850546368317464563721535081950745456311111986196016862716880509220391967056149758251498065985209497297153335348618776251883236517111202869774345 NaN7642419504237847974166012955573500862314667541605 -> NaN7642419504237847974166012955573500862314667541605 NaN7642419504237847974166012955573500862314667541605 +precision: 142 +divmod663 divmod 7722935286970470489067444303287216390425462550411513689365810155.468423368e+542064531 +.528214112155297120939365002316415747E-210794201 -> NaN NaN Invalid_operation +precision: 237 +divmod664 divmod -43812314670625462837817521905690564720776332453671674504205434291045206853128826997150113003469912684102263096039894043359084007257744528612121738087981920242467351888208e-185075763 -25423542659129450112327744835010330522687311148661271286358003244141416193426072091.60 -> 0 -4.3812314670625462837817521905690564720776332453671674504205434291045206853128826997150113003469912684102263096039894043359084007257744528612121738087981920242467351888208E-185075594 +precision: 13 +divmod665 divmod 6122 89E-646846816 -> NaN NaN Invalid_operation +precision: 229 +divmod666 divmod +29132133861046101384109618654689 -1435498554198341E-600912478 -> NaN NaN Invalid_operation +precision: 136 +divmod667 divmod -4673758799785895759846280467721988538520688246141597662001107826682344536714422335235391075658840616026964768026361664145566468464E+537801575 30711808524427255064557181787235193428891423430378701927510046182. -> NaN NaN Invalid_operation +precision: 11 +divmod668 divmod -59 +Inf -> -0 -59 +precision: 207 +divmod669 divmod -Inf 92510679205850914123057541637168320833688144253059638610989801895912926538676657531029 -> -Infinity NaN Invalid_operation +precision: 10 +divmod670 divmod +0.1 -4 -> -0 0.1 +precision: 29 +divmod671 divmod -9996195332784.81 -65574697 -> 152439 -54096801.81 +precision: 196 +divmod672 divmod +22291558672730300716288536 -9796601078396E206209542 -> -0 22291558672730300716288536 +precision: 118 +divmod673 divmod -9347687903724197513669895028679150664621200633736377091886738555.918810818689545719278088808802031904972553271205e985391522 -2492357065036489897969628283366721912481080819339.2180839E921518751 -> NaN NaN Invalid_operation +precision: 27 +divmod674 divmod +142382649 15332e781393598 -> 0 142382649 +precision: 50 +divmod675 divmod -9161 +9.8 -> -934 -7.8 +precision: 150 +divmod676 divmod +92474176857877 -6826750e+600379186 -> -0 92474176857877 +precision: 193 +divmod677 divmod -283754369150700201576345178842320711884210.358404134680396719435859778212169999698874799269049292907057918092078825834121027084853856322891e+887179142 -239286224029770071952958262205830509253341258059847437230799895967071 -> NaN NaN Invalid_operation +precision: 141 +divmod678 divmod +937033004867585752912572075073030314179583203.22E-432329990 -32098733970014156184769e-928020290 -> NaN NaN Invalid_operation +precision: 257 +divmod679 divmod -Inf -679922860250675493652e-192218679 -> Infinity NaN Invalid_operation +precision: 42 +divmod680 divmod -456414086561555550112725661106 -195869861622817E-695433839 -> NaN NaN Invalid_operation +precision: 28 +divmod681 divmod -.22755394 79.49E-349611458 -> NaN NaN Invalid_operation +precision: 80 +divmod682 divmod -715392197E-582675046 -sNaN -> -NaN -NaN Invalid_operation +precision: 181 +divmod683 divmod -141964971109851809686069280058762741573105471245740589083505457332541475115418862657387256367551453995877577023240210252951844698015820921347207484346E14929093 -84303933493965.932229442103985047528270547184004770933271918910585254396675e+924899148 -> 0 -1.41964971109851809686069280058762741573105471245740589083505457332541475115418862657387256367551453995877577023240210252951844698015820921347207484346E+14929242 +precision: 138 +divmod684 divmod +922198230467412744.885263091545020502666770754048891761487751859648416210582704658791615385902896524883 -369094381421572386587988051710466697322954607199675 -> -0 922198230467412744.885263091545020502666770754048891761487751859648416210582704658791615385902896524883 +precision: 279 +divmod685 divmod -.569508769699226698865939862798237944839018665693273820463268960422461370294324104788344668519506025237150365733229990344676257982331410281090557596034570098753715950442E397751335 565356994294988178440923781485545051927912336080540679907836718998274484277560595254 -> NaN NaN Invalid_operation +precision: 263 +divmod686 divmod -155096605259056430868220717791891023098277055378107858303968590211309677674322844235731644277951145274848534037336117956457477424254447329475131782669527585709022898428551680590897944944015373769446447734.48494550985433756574271285535474069658805364932 +Inf -> -0 -155096605259056430868220717791891023098277055378107858303968590211309677674322844235731644277951145274848534037336117956457477424254447329475131782669527585709022898428551680590897944944015373769446447734.48494550985433756574271285535474069658805364932 +precision: 226 +divmod687 divmod sNaN4 -.67040667420 -> NaN4 NaN4 Invalid_operation +precision: 282 +divmod688 divmod -Infinity 22226184416334608186261776710792553128133 -> -Infinity NaN Invalid_operation +precision: 96 +divmod689 divmod 31445850158578803776080404463062757291683989401483809097519762516692757519e432275750 -1183734621943356972233603832879060017 -> NaN NaN Invalid_operation +precision: 39 +divmod690 divmod .15603329928729630711 +.2035539999 -> 0 0.15603329928729630711 +precision: 94 +divmod691 divmod -4949100607410 +585433. -> -8453743 -481691 +precision: 60 +divmod692 divmod -6775349121589369208918 +56783442713 -> -119319097220 -30621651058 +precision: 267 +divmod693 divmod +510156490587761.3619370021649297472835716187173400573898612838928212606850959275147812064460747151309323910296216626 -7311338097649292717259680169297373856820760751057132805262 -> -0 510156490587761.3619370021649297472835716187173400573898612838928212606850959275147812064460747151309323910296216626 +precision: 218 +divmod694 divmod 3287172251526972637297775784942993841859296894040653056.37715335766590077900257911375581311365294197051628451355934 .132107492329571077548481731362303350569096784886519781707E-564439318 -> NaN NaN Invalid_operation +precision: 87 +divmod695 divmod -NaN75595912978247168431381216767973229999363579548734322557126517606606714831065691994538847 +6634125507 -> -NaN595912978247168431381216767973229999363579548734322557126517606606714831065691994538847 -NaN595912978247168431381216767973229999363579548734322557126517606606714831065691994538847 +precision: 209 +divmod696 divmod +661003347776751756476523676684214617198237698419096502511074577945748917524839491048531980440928383989913065869515110621672124958791863447165100216019110362 697783106368577860657628602332117375214155352177265649060194966314816406673680 -> 947290557400799883235585712456460826197432662029256269290615974186855466701783 64083070647124910477946146732956260277662822775526200123664078311556463938922 +precision: 287 +divmod697 divmod Inf -545029562408.7061977871541466160690349853311994798629401861686150945077924748582330703774181060001 -> -Infinity NaN Invalid_operation +precision: 115 +divmod698 divmod -1789186367525061254368422092619985799444777753525598592980524 486834960088043319657873731155 -> -3675139450136222297948397906368 -1295587667165816692098485484 +precision: 127 +divmod699 divmod -872435051904404344808704712212581050727073766070744968828722779895540752426786998420460956430168699459948 -8432235367501602208495113288798218055982937134210583e+987679287 -> 0 -872435051904404344808704712212581050727073766070744968828722779895540752426786998420460956430168699459948 +precision: 254 +divmod700 divmod -677848675914981252227151950620421313840482074246836653204071483464071627551076013211235818093752640581436944813879677027446929857733345957551650176885898787660627011045146363322681396672 -179662493671695918185522706431063785385659454828223666408095681624286320873860671429611312058 -> 3772900298008998029063115431930942329775887653990733103525978241527525523751418581194646059952 -92681597136032517850040988170790900652231414388470335539898060175203908091499670423832895456 +precision: 110 +divmod701 divmod -Inf -3903. -> Infinity NaN Invalid_operation +precision: 187 +divmod702 divmod 28551158764019024658599572715177697114697826486200626020843162910656051100492891697332340813849006932611782785643303662676725944018867076216626054688490141230456562703E+431812038 -67218662814933546786680309100545609871143125589324377043426667880357846842688593427 -> NaN NaN Invalid_operation +precision: 214 +divmod703 divmod 6620800681493791057347893002113269515464828980319971051773910066363083116356667481 +892661323769659990036112.21214066848030784 -> 7416923423470966098013212517919973439847486996743284350873 550950290174599657366163.00145576238725568 +precision: 180 +divmod704 divmod -1389756727543170026083858280045303411468365173576794049043300172458607188138666346578539275334471244764096515020085E233754079 +998605195011659502708677.620870888476868192474237733111023 -> NaN NaN Invalid_operation +precision: 254 +divmod705 divmod -299115099738093354265195182551731125503486552490140754126781531937567610582358908012987254967914433081417644593553320409735501411948662125356545308274324984859741909741444487123135058383802136538970771197083062614398340244022472484e-410311612 +656684265806322515024392977612546528595534590153827290406.1611719853014153903209781138357840532726707652251471552779e963409325 -> -0 -2.99115099738093354265195182551731125503486552490140754126781531937567610582358908012987254967914433081417644593553320409735501411948662125356545308274324984859741909741444487123135058383802136538970771197083062614398340244022472484E-410311382 +precision: 256 +divmod706 divmod +2012664298362192721005061787150524812681433620062278744366336164152559942567966373420798322022070018014577577602382104041 .713463553286753507639206177002497444165668482466888196397425 -> 2820977033921826223347857838641333100857369293543322573981522124779188364597291909800336905929171993141709666595538591884 0.587563777687151206690942408763491047263760852167073856501300 +precision: 135 +divmod707 divmod -2380435. -16e35103931 -> 0 -2380435 +precision: 15 +divmod708 divmod -66374202e-601795321 -280.2e-322723706 -> 0 -6.6374202E-601795314 +precision: 281 +divmod709 divmod -8486099141626668903910658616123611785555392095888533659095200576946899251322707738468007741835274938755916091411933306162167709128951274576105642822557331179967279320354824025651666135482089397613310257035570732256678976591822972291350301121061134186049046108760513541908E-543137112 630863958342869681332649891005934796722256918927109542414554988652556709845840525162838479378188121392216726634326601962652986714051448 -> -0 -8.486099141626668903910658616123611785555392095888533659095200576946899251322707738468007741835274938755916091411933306162167709128951274576105642822557331179967279320354824025651666135482089397613310257035570732256678976591822972291350301121061134186049046108760513541908E-543136842 +precision: 94 +divmod710 divmod -934644450010.34844 +62408581e874287969 -> -0 -934644450010.34844 +precision: 33 +divmod711 divmod -59560e-871487822 -36e-307287320 -> 0 -5.9560E-871487818 +precision: 254 +divmod712 divmod -.4318338501844584529506352288128648075659096909032914131292643064619107729269750900890314080835696420458792798043512574601209039576539392751225195029780733861225350833E+227510962 NaN540625987654637350499791715507 -> NaN540625987654637350499791715507 NaN540625987654637350499791715507 +precision: 197 +divmod713 divmod -2903125370813437048024904126384171784876236886809936890745406486233854440320967269002766113643534791.682379144259378817566475389224367733 +440932466326557428827579132900555164993823977616865152668.82718887564 -> -6584058994338973605051963926506073188250584 -104714416124995557051899480774206134064986679712369156129.044845770499378817566475389224367733 +precision: 119 +divmod714 divmod -.5447750494093126052647090200044258754760795916020604893034868167143955888287 +.90213087057046027483059374203098907818 -> -0 -0.5447750494093126052647090200044258754760795916020604893034868167143955888287 +precision: 25 +divmod715 divmod -NaN1716555739043085793400496260536991 -870750612e-334684377 -> -NaN9043085793400496260536991 -NaN9043085793400496260536991 +precision: 242 +divmod716 divmod -680448653346905153658952368871947015332259504479952088742689876658183322974384864211684099077785667018021509406868164054675133868696984503391763293725553329720287006086129734541881434594957283210929363605 519991693595388608369708545796570860203878715965789628503095230607223550434667206860.80587527652658172 -> -1308576005593600716891810985606714469651905092494583481573615819893303245746189040460120964111012033796878096035804579201 -196256060106940653810755389417213331496880355480823350605475918044543287835942125158.47110862446119428 +precision: 26 +divmod717 divmod -333080064961623407641457E-43782448 -sNaN -> -NaN -NaN Invalid_operation +precision: 277 +divmod718 divmod .8382003761505493912176018393280891600981763961766606141902058794933047144319580514927571001409635346833490551273686662834155722918130695060236191677609569893289284376095640329311268816090e96183489 -271552679831145422247662998272458709881331644628190758751071960626855260468789520180216893227 -> NaN NaN Invalid_operation +precision: 288 +divmod719 divmod 268537505.355848880850715597420579276975402006096437362616743222456334698543868521535829524025010251622282700585211705759245363E-692979050 -713208995122178551714446820962127549144020607265063044285859789 -> -0 2.68537505355848880850715597420579276975402006096437362616743222456334698543868521535829524025010251622282700585211705759245363E-692979042 +precision: 203 +divmod720 divmod -33209196107934709.4753936921940104126360274336553 -453015384093788063209963 -> 0 -33209196107934709.4753936921940104126360274336553 +precision: 277 +divmod721 divmod 8094779069827764148700554889970731898444746594911291438564289411058926285660468230630739033338636805939919104153650543504686322405686656085773416842271111372894311126210931586445564994314741161875529420225186690580363734385587805474737106255894216746334418633387561138310735e-798776410 +44209539609120155806151852067258633493828675309623120669371318919701489862667277111805684377460287698551049322776516377815117340113718740e+900611697 -> 0 8.094779069827764148700554889970731898444746594911291438564289411058926285660468230630739033338636805939919104153650543504686322405686656085773416842271111372894311126210931586445564994314741161875529420225186690580363734385587805474737106255894216746334418633387561138310735E-798776137 +precision: 104 +divmod722 divmod +.61953721156468567639133906661091939133661 -3.828446184602272887 -> -0 0.61953721156468567639133906661091939133661 +precision: 285 +divmod723 divmod 528198453214203781.2703141513950651215612050762720609604908E-645054839 7175765936410.9623847471655684e+86822695 -> 0 5.281984532142037812703141513950651215612050762720609604908E-645054822 +precision: 175 +divmod724 divmod 145847836336748079959096526 820.4602758835 -> 177763434286558341617358 741.7276142070 +precision: 28 +divmod725 divmod Infinity +Infinity -> NaN NaN Invalid_operation +precision: 231 +divmod726 divmod +48488208839160640313665343754808517577201988228443711255.458401325784344816940857929750237129467788539953866816494623561965859562176406410959166553998319682616523797715937602253318489829612585964619457427506 2242702904940524036178729351752677099967510387752971491108031456891760511739424900118049823036721595419 -> 0 48488208839160640313665343754808517577201988228443711255.458401325784344816940857929750237129467788539953866816494623561965859562176406410959166553998319682616523797715937602253318489829612585964619457427506 +precision: 46 +divmod727 divmod -4015406154021335 +44040528e-496765553 -> NaN NaN Invalid_operation +precision: 160 +divmod728 divmod 302263676981047965742312.698511022298757664686360853167627603672281016435858 6424546872504800600015507731389459.558 -> 0 302263676981047965742312.698511022298757664686360853167627603672281016435858 +precision: 24 +divmod729 divmod -.79049013860824224064908 Inf -> -0 -0.79049013860824224064908 +precision: 289 +divmod730 divmod -63413434391860437964529619132939737502775856652956943995123483016186266656952278043482257113697900858264311559508392909340356487897821758389326087300 +57935924295345943753206878722024006342638025663079614514078902.961565679968E44493753 -> -0 -63413434391860437964529619132939737502775856652956943995123483016186266656952278043482257113697900858264311559508392909340356487897821758389326087300 +precision: 15 +divmod731 divmod 6.6 +1.E-151808301 -> NaN NaN Invalid_operation +precision: 232 +divmod732 divmod +634586390725051660324125941543366323489640886157010931365779891401503725192416501001733691030216198193540765677790112134938363980730977042956036528352667324215673575709152462100359610343705797064444683524188377071274107771196669519 1561651277029522752236100289802437450067514803291232781033788506316078435558707700373045909180630288068334692174740 -> 406356015622209177981072762404138107009638192553855181980370878143224452295357058654629034930016183796801303010764939 54502778765602977445865482312815592912361457492650633340519599967165288084311973348889063762106487628706343228659 +precision: 136 +divmod733 divmod 1352477721152656711280398 +689558392.994e+168411242 -> 0 1352477721152656711280398 +precision: 10 +divmod734 divmod -335 +6 -> -55 -5 +precision: 169 +divmod735 divmod -7383733751283337979512038710627799522142420730410973990663803082442751876402358706263889038561046684464242544140181143742276793437945.224455284182754965 -33065591024904626510707902551396141419352786090724704450652320453294.688596e+649341674 -> 0 -7383733751283337979512038710627799522142420730410973990663803082442751876402358706263889038561046684464242544140181143742276793437945.224455284182754965 +precision: 229 +divmod736 divmod -32142528093257339328213988143317241671082768282741688237317437147608185941081026112102750029197756410223076805695138084224019151948997757349345008255e-694581450 Inf -> -0 -3.2142528093257339328213988143317241671082768282741688237317437147608185941081026112102750029197756410223076805695138084224019151948997757349345008255E-694581302 +precision: 270 +divmod737 divmod +.709976726919256925975367287560923953852170193357540273447060809139738672e-337965552 -NaN291205309049877248139711045790617 -> -NaN291205309049877248139711045790617 -NaN291205309049877248139711045790617 +precision: 6 +divmod738 divmod +7.23E-523342367 +2. -> 0 7.23E-523342367 +precision: 76 +divmod739 divmod 6771167029343801790020911003518123454951369416E-695033968 -1805842444274144.2067189 -> -0 6.771167029343801790020911003518123454951369416E-695033923 +precision: 93 +divmod740 divmod +1723. -Inf -> -0 1723 +precision: 118 +divmod741 divmod 72419072340377219055896032529820729927622917749117677564942184211777328456832019910866057 -653305669073258180437542994.15234796488247627 -> -110850212647177464146953691022278810752636281618607744844375403 519503060455341529111158860.23789437188081319 +precision: 119 +divmod742 divmod 3772184815619033038088771182008975948895942321640227911273434882621495022417907898 -785328549979.57903534031563425565210455246 -> -4803320617488211117076580530110176974574725554687866688874983612467702 129667540547.13061190491816990511108535308 +precision: 106 +divmod743 divmod +86 8 -> 10 6 +precision: 250 +divmod744 divmod +sNaN -60366074858276897051089865632608019813178353875388761917338478069272779343250241436227090414280201E-851215283 -> NaN NaN Invalid_operation +precision: 285 +divmod745 divmod 21985264E+146237577 -338.1 -> NaN NaN Invalid_operation +precision: 39 +divmod746 divmod -.661941941174457208E444834263 +345229553 -> NaN NaN Invalid_operation +precision: 67 +divmod747 divmod +.1978E+730508054 -45 -> NaN NaN Invalid_operation +precision: 38 +divmod748 divmod 681795336E859720959 -6098e-511958775 -> NaN NaN Invalid_operation +precision: 31 +divmod749 divmod +.764361E136699659 +919. -> NaN NaN Invalid_operation +precision: 144 +divmod750 divmod 3.37 0E+523862383 -> Infinity NaN Division_by_zero Invalid_operation +precision: 198 +divmod751 divmod 425.7642081858E929116602 +981419e934065864 -> 0 4.257642081858E+929116604 +precision: 233 +divmod752 divmod -.96252702740170503130477646165325574711887504529116044047200964464040551404512106215715717470025310005725908990064082 -7567396548642942258914747931652913691971521241647190940816 -> 0 -0.96252702740170503130477646165325574711887504529116044047200964464040551404512106215715717470025310005725908990064082 +precision: 38 +divmod753 divmod 25401104762454878.e-752679734 -.39497727 -> -0 2.5401104762454878E-752679718 +precision: 84 +divmod754 divmod -.19390604613987509879422E+228850349 -72570542747 -> NaN NaN Invalid_operation +precision: 6 +divmod755 divmod +8646 -66 -> -131 0 +precision: 178 +divmod756 divmod Infinity +.126202339501980745939433901869154558806848189057619390596643989143E+647452821 -> Infinity NaN Invalid_operation +precision: 241 +divmod757 divmod -546116261631751188264094545806355190112363292828.8856369410283476637665699294057549180629153129648303045915114041470421811053357053886560372788808189110592451978143740210246928735613E-796949708 -6014946952269754153644811876701089044742727947926611181148649784333287183.13707662827422658E856520612 -> 0 -5.461162616317511882640945458063551901123632928288856369410283476637665699294057549180629153129648303045915114041470421811053357053886560372788808189110592451978143740210246928735613E-796949661 +precision: 53 +divmod758 divmod +.850721E-147674336 -795 -> -0 8.50721E-147674337 +precision: 243 +divmod759 divmod -332649956359292963742222867656361601673974274927687383553558623645.5758977671757974178244323190623032307479003489183454 -Infinity -> 0 -332649956359292963742222867656361601673974274927687383553558623645.5758977671757974178244323190623032307479003489183454 +precision: 166 +divmod760 divmod +3453480996034973707841651276529807929579238809606117194789899254689817317956985902884923 +sNaN -> NaN NaN Invalid_operation +precision: 246 +divmod761 divmod -3365940257088.379677135904439565542435046505328357556122517531679216278307020802364548954595001282896275512804305715973406069331251417075449674803560584350065444267088492103 2959713796526717096214659849994474281142642136635164123757666370302629067414432040483 -> -0 -3365940257088.379677135904439565542435046505328357556122517531679216278307020802364548954595001282896275512804305715973406069331251417075449674803560584350065444267088492103 +precision: 33 +divmod762 divmod -3636960 -858 -> 4238 -756 +precision: 75 +divmod763 divmod -18782515101E757043302 -429.9e-909016188 -> NaN NaN Invalid_operation +precision: 227 +divmod764 divmod -268658019917530050422526919200037233115357353452869846201439605583035562022677268549486452622980128634335488829573462394451759611389356874226100998169943304e+417277751 -1919947.65324748180371630192380426491969930305565386259052051589340627209174762 -> NaN NaN Invalid_operation +precision: 222 +divmod765 divmod -.33548544804798689462645096413637289389366478486101101212582344422859287958421044107998581216655935089313023301290751362169988020459761436109283493308301267719615862924338 -3488343480104273604093189042923527081744356079040012532997830009048049140105174033595e+986160344 -> 0 -0.33548544804798689462645096413637289389366478486101101212582344422859287958421044107998581216655935089313023301290751362169988020459761436109283493308301267719615862924338 +precision: 269 +divmod766 divmod -663396948126782606705903428410851661122241248367952295392693496243570821263974330133759164132550912794224600195048306197095776371659807593844581586645107962062385636187436217498651641767209727826251038520822756611197351178740312058319340482679201547423524726391322e+394894246 -885140305528673129579169670627195526580762315854151737316126367070627609585626778650885588744139274803155995348888790387822213623972 -> NaN NaN Invalid_operation +precision: 176 +divmod767 divmod +5719728715268.152944675289453174327904103974203 +94846876551427388022813 -> 0 5719728715268.152944675289453174327904103974203 +precision: 235 +divmod768 divmod 998820146746704090478283426271522954288468432503158237941726031962616710036990414076673050291433671983067732747837967656132944156426174538482844436298520062605669195379464185502282021 38733544.2032426573655296324685932570788050690712072345700000810278530639921317785966080056E955080762 -> 0 998820146746704090478283426271522954288468432503158237941726031962616710036990414076673050291433671983067732747837967656132944156426174538482844436298520062605669195379464185502282021 +precision: 20 +divmod769 divmod 580367476313716270E+643587442 .1678535319E-107501399 -> NaN NaN Invalid_operation +precision: 56 +divmod770 divmod -36367067441127425 -246.95508E-646633423 -> NaN NaN Invalid_operation +precision: 256 +divmod771 divmod -42911610817534419125127243397646005186884E+188008953 -92463050964079637165 -> NaN NaN Invalid_operation +precision: 184 +divmod772 divmod -3183433905103394565106886568273559659610479407972800580250225559332597225463875490580139763850704640825910731795358076511864166749962090387258931304124185667877119561582912775142 +56181563376855092134262271183000629783634890408614936677001571829798359234577358853729469 -> -56663320024569873155975007679695874117046292671116363455820733458263460913836072506819854 -29000672739607777614015977566238015012805874318488666534531629346030527852003038078697616 +precision: 138 +divmod773 divmod -394852592953041516202414930615773871021505990642350410095786986666933 +1620210100939851495306489530647551E-930352060 -> NaN NaN Invalid_operation +precision: 105 +divmod774 divmod -83940.40E-292019060 693e+510328170 -> -0 -8.394040E-292019056 +precision: 297 +divmod775 divmod +4677960158801510908501115716611192716786819551590100535938060056298591745369300283024600494277145851916970161 -356162894630342768804733050311.113873734371908107546430 -> -13134327661102120436536579881538724590162334613896007769340974417610977116064367 313521588849238037989309417108.532692637753345678940190 +precision: 277 +divmod776 divmod -672031777442363978300937709511574641888129648493218303130054067650798147482449775361745356644798236534435571410698338700475642741399676342375185682159417119494181342135846201074575347109646186820988313582303920337516604509557 -9029280287421029864018012065559770865971315661480405754935453641169664486129442216066513210193333989911389414577 -> 74428055841681232336163677638687150555723459908171079062942753378627578447546762012429078743236133259804566505315 -8680245181495888852398933881620369094744188722452462447819028693314472190302232271001009417522756092215995532802 +precision: 206 +divmod777 divmod 93852777807669442719069628681.533749082478858071269430360324896278457428472575021787085640748220163002698442551758719844111357398836453934003589766613837964762581436951 -.258131255381014993283404075617894390621409694232480795242593902508349253833573847725e+435345375 -> -0 93852777807669442719069628681.533749082478858071269430360324896278457428472575021787085640748220163002698442551758719844111357398836453934003589766613837964762581436951 +precision: 183 +divmod778 divmod Infinity -3966 -> -Infinity NaN Invalid_operation +precision: 13 +divmod779 divmod 37742857268E976210488 -18947E610563525 -> NaN NaN Invalid_operation +precision: 157 +divmod780 divmod +Inf -Infinity -> NaN NaN Invalid_operation +precision: 221 +divmod781 divmod sNaN +45397807783149190066182910285779588.E566044165 -> NaN NaN Invalid_operation +precision: 170 +divmod782 divmod 91966179180325874400454073646249343207280514867498965777813335532284082153473217979986700384345329801676038567915234127410769435302 8002094230947577876110674978712744623082079648547931893224552379 -> 11492763834828721537712446742204641472580899176898797047149443106145 3120636784641157664053170782193184193458996733821726915760166347 +precision: 124 +divmod783 divmod 9685840732434903845644239230369660401190641363704085585410388021951166687185779620296768886733742650385149708147309307433627 74869584139358474904588769116556798233380088224903395366784625e+615203266 -> 0 9685840732434903845644239230369660401190641363704085585410388021951166687185779620296768886733742650385149708147309307433627 +precision: 249 +divmod784 divmod -793353760625756101907671677068380024894195031824674406834539580815164337568145929371588185653675097982158296921736391669415763584921092599351822934992967242298893926867885 -3350066849627091062314400521811357344360723222805244327380107820793198278285362290162E-534666396 -> NaN NaN Invalid_operation +precision: 165 +divmod785 divmod +6741815940851974898643115077060785149951640722139480107943494777000358102131236596854596853410378e-253515246 .813773095365695102817541601768318117375428285895e+510365696 -> 0 6.741815940851974898643115077060785149951640722139480107943494777000358102131236596854596853410378E-253515150 +precision: 167 +divmod786 divmod +6038254795704263374924549228888529154168077694681991956980154284890433587962063229754331698391594092504022139443748587759167 +76686492068524403619216252534111394278793634741342442650367245E266226820 -> 0 6038254795704263374924549228888529154168077694681991956980154284890433587962063229754331698391594092504022139443748587759167 +precision: 277 +divmod787 divmod +NaN779879974307 +50950802327934308392473812591354375459301801693452091724462131052178730768564481308493962402070219039747237808608024456 -> NaN779879974307 NaN779879974307 +precision: 49 +divmod788 divmod -.966198 -233 -> 0 -0.966198 +precision: 199 +divmod789 divmod -613645560148425252320978869363418658481731.88214960917e-915783795 -601038478349192601922010955. -> 0 -6.1364556014842525232097886936341865848173188214960917E-915783754 +precision: 171 +divmod790 divmod -5334453130742179216989878538079551504015413839783917528121401836256526353044038753902479050717405394872607076 -251301648724.526741022276104355939747110239035212009451e-201725906 -> NaN NaN Invalid_operation +precision: 114 +divmod791 divmod -502050962855511.36574904392675794739 -33509370539388595 -> 0 -502050962855511.36574904392675794739 +precision: 27 +divmod792 divmod +64925237 -3096E-116134570 -> NaN NaN Invalid_operation +precision: 150 +divmod793 divmod -19555494414641997596635672594081093825175398701630444049208330494868871320174424518444760.341708832986514550231187945499940429636223501721144850 +.21625323222291105580098914502252479310608809371856860624469494956691315 -> -90428680365269384652356536020378140389022987228611404523225243727198728255499876575028774 -0.17336443045031101895862617848791378163449666619872340561877670039102190 +precision: 3 +divmod794 divmod 134e-284511461 -9. -> -0 1.34E-284511459 +precision: 61 +divmod795 divmod -.364559644380903141565890672992312967835 -Inf -> 0 -0.364559644380903141565890672992312967835 +precision: 244 +divmod796 divmod .78168675387428836464457475395710410600207174881653369283311691361367126181584701339541312999591985518615546465541834526039141901013 76391091874742811718862539558037112882533278839533893982710421165E54449178 -> 0 0.78168675387428836464457475395710410600207174881653369283311691361367126181584701339541312999591985518615546465541834526039141901013 +precision: 235 +divmod797 divmod +3083612020283261826766394661494070303236686164E+581177016 -.60888605336112044997212 -> NaN NaN Invalid_operation +precision: 2 +divmod798 divmod -74 -8.e-584167694 -> NaN NaN Invalid_operation +precision: 196 +divmod799 divmod -.98560826235498738080631906433918572498785432468482464031850196303767E913718014 -5372772682698253805741188026463431e-627767580 -> NaN NaN Invalid_operation +precision: 33 +divmod800 divmod 5380669 .515e-476955210 -> NaN NaN Invalid_operation +precision: 20 +divmod801 divmod +871632.56 -.3160 -> -2758330 0.2800 +precision: 61 +divmod802 divmod -14395960.96727899801841054365674429011520E-760088132 -Inf -> 0 -1.439596096727899801841054365674429011520E-760088125 +precision: 210 +divmod803 divmod -616914500027754010208762899541028761143206263 +756331973915233883040.e-518599844 -> NaN NaN Invalid_operation +precision: 155 +divmod804 divmod 85611245313442430044484038440271.879214292084e582252547 +66412612039321.5190037 -> NaN NaN Invalid_operation +precision: 251 +divmod805 divmod -455066573248566768381054514247547538723230151847973883880458783752018750 +763392740863483817404203449077262817 -> -596110689674406432612321625966584148 -501928302381711058777933692609993834 +precision: 241 +divmod806 divmod +Infinity -631584.256 -> -Infinity NaN Invalid_operation +precision: 120 +divmod807 divmod -177469.56916805750151869653664700650033191422283920009291907766096904E-907778733 -3103666011118412200208412264283085 -> 0 -1.7746956916805750151869653664700650033191422283920009291907766096904E-907778728 +precision: 278 +divmod808 divmod -157355780372983388411135748690430033867179495685563974787136030737475702019054150426343316995 +544834006132864313626951443923263666502619394 -> -288814168355361967194943740675494008270135225285 -316831447748645995985550264322800385543139705 +precision: 76 +divmod809 divmod Infinity +591576e-132969154 -> Infinity NaN Invalid_operation +precision: 114 +divmod810 divmod 872.1353E425726299 -.862E394488751 -> NaN NaN Invalid_operation +precision: 240 +divmod811 divmod -.24293493069258970194 -Inf -> 0 -0.24293493069258970194 +precision: 271 +divmod812 divmod +Inf -302.44303324802578049998746301218178990684590615 -> -Infinity NaN Invalid_operation +precision: 256 +divmod813 divmod +32672460024506198.23006E479520265 80123018535 -> NaN NaN Invalid_operation +precision: 39 +divmod814 divmod 20285334557825811488190902849822 -.3868037053068788 -> -52443485622072874283021476428974 0.1963905781736488 +precision: 41 +divmod815 divmod -14.8 -8.e+3229653 -> 0 -14.8 +precision: 289 +divmod816 divmod -37628509788017674234346694294250303885692485780077901584581859789474306967 +23760696017329081473071.57464088953757 -> -1583645098635770572362735336726217512475452865947734 -10948136532614686088620.10955695063362 +precision: 151 +divmod817 divmod 85158963361446825221409705771855958019870584734204344349908155592875805333474297349629015884173089014779148717428569143505429 -2821588312031545781167058901360127627854173539777809934141989 -> -30181214955534142154139480420860638553395948662493704442743735802 2472398751659204257310979737005693598038974916240771772715251 +precision: 288 +divmod818 divmod -3606063190552329940348642325139642621321503016581174861668662602942401551905424414656457872652359109040271563404113894581045819539446100614581491675434228.860732690937838056438285738642590401246405889335387813e-177944484 -73321116854989956298731079076775557289433141787558256717390061866678482529937131048974000497044879575203 -> 0 -3.606063190552329940348642325139642621321503016581174861668662602942401551905424414656457872652359109040271563404113894581045819539446100614581491675434228860732690937838056438285738642590401246405889335387813E-177944331 +precision: 198 +divmod819 divmod +.18296419665668057690973361491006124413547088772299280813785173421970315359963479188376585861410018010962543005294385420E-588056934 79608252469962260814.224266039315740884258480469096056933374 -> 0 1.8296419665668057690973361491006124413547088772299280813785173421970315359963479188376585861410018010962543005294385420E-588056935 +precision: 147 +divmod820 divmod -2455623803389748239507793622011949946783358228975516335601592094044761687360335235381 +143383189254616547370902058514278697525817 -> -17126302017380212896583916509035937279670560 -24889196579789684050637832068715480387861 +precision: 239 +divmod821 divmod 4413216785560995521042669066988606113918323770195256483593361304656430356032786e-148043681 +4718630721524884353510.25318067911210000e-63879732 -> 0 4.413216785560995521042669066988606113918323770195256483593361304656430356032786E-148043603 +precision: 299 +divmod822 divmod +7655270700986961223794879098330472041862255343444818607513216617491193836520317209 +Inf -> 0 7655270700986961223794879098330472041862255343444818607513216617491193836520317209 +precision: 153 +divmod823 divmod -718814165189340442694962531230940647801694358612351564476624655962736751132368396036001162472650834753786302438435385788215469544396363770687917166329e-601932769 31972550589429690066097650149868070392154176761647618318482514993887419503 -> -0 -7.18814165189340442694962531230940647801694358612351564476624655962736751132368396036001162472650834753786302438435385788215469544396363770687917166329E-601932620 +precision: 134 +divmod824 divmod -63513367994797105E+977118370 -90222279.8E415974394 -> NaN NaN Invalid_operation +precision: 48 +divmod825 divmod -846849 56 -> -15122 -17 +precision: 75 +divmod826 divmod -48262304956031471369374008046148000165256872E+995935611 5130563420585594828225 -> NaN NaN Invalid_operation +precision: 196 +divmod827 divmod 68258132367390683540544787152464748575617632356513197614404497852562011657683077065953834935628810406414298550609003756966331 -Inf -> -0 68258132367390683540544787152464748575617632356513197614404497852562011657683077065953834935628810406414298550609003756966331 +precision: 151 +divmod828 divmod 659006609206515013043784023232283671018468944234090236569489931576568433912718227340371940154549981140 .346444222923033126335279111917737311476932756612902 -> 1902201178724580697804165678384997753601918534729019931601685946794601175966413032268377734084943646317 0.276738649842605958107783585980805094213809633018066 +precision: 21 +divmod829 divmod 84 -7E59845500 -> -0 84 +precision: 210 +divmod830 divmod 409415528607268621230989493623158547454729994532715649738489603 +4062119977649343533905393065258 -> 100788635210176159862378229565925 1312650428145919230611200355953 +precision: 219 +divmod831 divmod +.43938227932179775 1.9301110 -> 0 0.43938227932179775 +precision: 281 +divmod832 divmod -584146277199566.66260190981305237222521977413754310433536902394014449304207860300206681374137717818379735E762540120 -469622197755562052971935973051022951233078702814317 -> NaN NaN Invalid_operation +precision: 18 +divmod833 divmod +2225934137e-601769817 -12527 -> -0 2.225934137E-601769808 +precision: 164 +divmod834 divmod -31268715573974976027605859205063774924263331642773514499258 62230795875802086454072532319E-137497623 -> NaN NaN Invalid_operation +precision: 11 +divmod835 divmod +73.419e-825245510 -1.3 -> -0 7.3419E-825245509 +precision: 193 +divmod836 divmod +3515989501695122361563540270591446290589190 -758943239364183757287E300238372 -> -0 3515989501695122361563540270591446290589190 +precision: 52 +divmod837 divmod -4179089710556 -895443 -> 4667063 -816647 +precision: 6 +divmod838 divmod .8233 97e-465115737 -> NaN NaN Invalid_operation +precision: 111 +divmod839 divmod 5616748461179813004169921389418560530281624470591350605041769131475E+182659465 123361898296137245044604026223631 -> NaN NaN Invalid_operation +precision: 15 +divmod840 divmod 1013722 6.20e+790695990 -> 0 1013722 +precision: 111 +divmod841 divmod -214750.2709047 -4360.34 -> 49 -1093.6109047 +precision: 183 +divmod842 divmod +17.4537E+105346078 -141 -> NaN NaN Invalid_operation +precision: 177 +divmod843 divmod 67333924366266452228416804246160333138751377459995073454496664636352 -867352837412554366746112.4785204448 -> -77631526020176293228206296966236192533513342 263448740365347353014804.6794254784 +precision: 213 +divmod844 divmod -91637571440373139652097221144133487865 -NaN608084453943072253054517119633950566151992629946435244279813645350472465558454756630921913219 -> -NaN608084453943072253054517119633950566151992629946435244279813645350472465558454756630921913219 -NaN608084453943072253054517119633950566151992629946435244279813645350472465558454756630921913219 +precision: 176 +divmod845 divmod -.693861 +824E-746693936 -> NaN NaN Invalid_operation +precision: 290 +divmod846 divmod +307662662052342523033153600397454647036 NaN -> NaN NaN +precision: 60 +divmod847 divmod -Infinity -5787110384803151.38095 -> Infinity NaN Invalid_operation +precision: 250 +divmod848 divmod -84897296456768157559065484543852689337764572403136093651415683063942489256678094919801683123132861474823317891772193435459924975705744999683526791437930 -771853178472391662345177525582483628028.1752545717102838396788748299686670010E+964717447 -> 0 -84897296456768157559065484543852689337764572403136093651415683063942489256678094919801683123132861474823317891772193435459924975705744999683526791437930 +precision: 163 +divmod849 divmod -77529779554715384699572078928708374331954523680376407254436838616.e302337635 -151413722537642619931920321313417e+394932833 -> 0 -7.7529779554715384699572078928708374331954523680376407254436838616E+302337699 +precision: 179 +divmod850 divmod -693844.80201858201075356707138741613358546713769557100439000990160706291245157267182834785497654720892256474756639867086701078227037142034359325543770584085387769472320076548e-267067315 -Inf -> 0 -6.9384480201858201075356707138741613358546713769557100439000990160706291245157267182834785497654720892256474756639867086701078227037142034359325543770584085387769472320076548E-267067310 +precision: 245 +divmod851 divmod +Inf 8215556651622264425370016280958485129396828300451544e+226105783 -> Infinity NaN Invalid_operation +precision: 49 +divmod852 divmod 9518776561e-443743042 2499 -> 0 9.518776561E-443743033 +precision: 196 +divmod853 divmod .9936361 -.833 -> -1 0.1606361 +precision: 53 +divmod854 divmod +NaN3423817046070778834769592263170970774102999436307253353337610769588028088 26376104831758440472405306 -> NaN69592263170970774102999436307253353337610769588028088 NaN69592263170970774102999436307253353337610769588028088 +precision: 121 +divmod855 divmod -Inf 36397592061796269748430855243 -> -Infinity NaN Invalid_operation +precision: 168 +divmod856 divmod -19124665080851301137113523583478971116264025896367658157811761247121605539627624930109669689496712721514675828196710075219990408930809363435957523510E+745848589 +.79902409790675912561840022493352439429885620582276126177583974382257074491 -> NaN NaN Invalid_operation +precision: 217 +divmod857 divmod 7310310962480623575935578390577812755400733048 9591596309567691664932 -> 762157906415278521195068 8985274073752133777672 +precision: 253 +divmod858 divmod -664996987908921455061528862910155173952041248982693418677209222660883593850197793586618551954794120418204689442169459556277790340664495206.58864853993357558985659460929848053601449451354345205662213729911113220113366421999996216035495965985430667391e-15073479 -3504110519599408175240304054188606855983869240346633168570333763150993812997562893720569265201043720540783020042444686927192 -> 0 -6.6499698790892145506152886291015517395204124898269341867720922266088359385019779358661855195479412041820468944216945955627779034066449520658864853993357558985659460929848053601449451354345205662213729911113220113366421999996216035495965985430667391E-15073342 +precision: 220 +divmod859 divmod -82100127667038105980685913451124139649545849161333324371168204826787491134431904609382174607094678.38480665772435860939768924465438894224040659503864 .46707899182523898918590513105882675513735968965162868786122858171627900066E-531931909 -> NaN NaN Invalid_operation +precision: 206 +divmod860 divmod +3500853659002257270 +204.107029 -> 17152048492177392 47.911632 +precision: 83 +divmod861 divmod sNaN -21485067726E-78387361 -> NaN NaN Invalid_operation +precision: 61 +divmod862 divmod -2503053229202957737.99561355869013205417959492713151 +NaN888362077462749323 -> NaN888362077462749323 NaN888362077462749323 +precision: 295 +divmod863 divmod -.138104793333978873418633044569534E+959989510 Infinity -> -0 -1.38104793333978873418633044569534E+959989509 +precision: 65 +divmod864 divmod +Inf -35982637998801 -> -Infinity NaN Invalid_operation +precision: 97 +divmod865 divmod +.2985 30e+54491282 -> 0 0.2985 +precision: 290 +divmod866 divmod sNaN48394069834396137341908105251000425438773708631520361854165084707420970705885607903300 -88843161.426e-819276102 -> NaN48394069834396137341908105251000425438773708631520361854165084707420970705885607903300 NaN48394069834396137341908105251000425438773708631520361854165084707420970705885607903300 Invalid_operation +precision: 71 +divmod867 divmod +53853647575553585451167089209539999012838233770977706684743339e467932298 -.4940424451897103954871076420839 -> NaN NaN Invalid_operation +precision: 78 +divmod868 divmod -625898.45840403636658363E-852846482 -.49694971324e-808615270 -> 0 -6.2589845840403636658363E-852846477 +precision: 85 +divmod869 divmod -1646790206943622152419753582.603206612010362807608066143222735596926160269e+584282180 -.75733768093789943054298953846618832 -> NaN NaN Invalid_operation +precision: 290 +divmod870 divmod +73343893769760351870709002791324842228221648425666721003322407396214407 -82862259298873174876600743370486342 -> -885130267872840137416205268192097509 27159091193528990551854060979492329 +precision: 42 +divmod871 divmod -62953606385416470 +41844183e-541981856 -> NaN NaN Invalid_operation +precision: 8 +divmod872 divmod -911E+347482425 4 -> NaN NaN Invalid_operation +precision: 4 +divmod873 divmod -7196 -6.e-322125227 -> NaN NaN Invalid_operation +precision: 214 +divmod874 divmod 6846338485096671924689032843357870140390223767039936854471372552683673613679720427701772543E+398328023 -229788002632234590347188457012968866259951431e886540943 -> -0 6.846338485096671924689032843357870140390223767039936854471372552683673613679720427701772543E+398328113 +precision: 153 +divmod875 divmod 209640345144653571193571054259558692079415275002992699277E-910738014 +1668657654991612106140788285e-746830019 -> 0 2.09640345144653571193571054259558692079415275002992699277E-910737958 +precision: 245 +divmod876 divmod -144340509059903480906628865370880834591476631 -99073.72128677691481093e-884128719 -> NaN NaN Invalid_operation +precision: 234 +divmod877 divmod +58595297412071798653603935672754321494310622738289 -4540340688994900061488571 -> -12905484725870450166160661 1063065600021479021432858 +precision: 188 +divmod878 divmod -731207904554029568961425206972689191544636079274898525703602080054969978272038102317751773570179327372746774644732 .477000212654487159690125664768899749793674192555803999529 -> -1532929934108177315407551113043955158679940751224198522532930717236631839683810241003627901246220795486767483616094 -0.423894019507280576294766704520260960036564459975207180274 +precision: 181 +divmod879 divmod -329312647075682783463552478651153055083803653787730572187063766283574294359342151394062260773725489178907879493140600389663600621.1088718618E-653963951 -183671746329753668478734442.980288901842048188510383014446970166242042 -> 0 -3.293126470756827834635524786511530550838036537877305721870637662835742943593421513940622607737254891789078794931406003896636006211088718618E-653963823 +precision: 227 +divmod880 divmod sNaN3721498361150223077274096026882 +159207124520295440965235104.12281240223802775736897962491325125088E-304620846 -> NaN3721498361150223077274096026882 NaN3721498361150223077274096026882 Invalid_operation +precision: 274 +divmod881 divmod +731489393471636727714573514505041.269072053063926344918E+795589771 -816732786302814399040854052E-918593172 -> NaN NaN Invalid_operation +precision: 73 +divmod882 divmod 5354829509071467739885116620128091203170810085366978837367.6 20133104640064714206271894539E516929410 -> 0 5354829509071467739885116620128091203170810085366978837367.6 +precision: 122 +divmod883 divmod +1623614306540415668418137 -419188049521 -> -3873236148777 355268832320 +precision: 120 +divmod884 divmod -6827556358798286290097808120398213513370126745150632399e792737071 .605748256166077110986040007 -> NaN NaN Invalid_operation +precision: 158 +divmod885 divmod -4480491127405E+869774174 -.494336e-876938374 -> NaN NaN Invalid_operation +precision: 249 +divmod886 divmod -156790742484810818 +0.25332153 -> -618939663299881451 -0.01405997 +precision: 236 +divmod887 divmod -241579954585892373429970634357244.5327343839434098564656864111999949959 +64136233593161479187238140274597051 -> -0 -241579954585892373429970634357244.5327343839434098564656864111999949959 +precision: 111 +divmod888 divmod +Infinity -.23998281156765343088 -> -Infinity NaN Invalid_operation +precision: 248 +divmod889 divmod 86915785688952398712774897473107953.77994340309884160178079 -96434509443997564320123248225E-658406364 -> NaN NaN Invalid_operation +precision: 198 +divmod890 divmod +147095524977041605260913542096800447775122486435092 +1412508789350170613484343e799511643 -> 0 147095524977041605260913542096800447775122486435092 +precision: 253 +divmod891 divmod -812445317228823071296178637570220177941291267228573141651143260082595241223692729340107.233662911489724279183501696371 -5856253933754133418884221176584379394154163485271959693817 -> 138731230991550860020144513444 -1244251683893229484693983709543365545377320555370049164359.233662911489724279183501696371 +precision: 33 +divmod892 divmod +91450268737635673266672458612782 5838803534303987 -> 15662501435499486 4530815752362100 +precision: 25 +divmod893 divmod 67052402423820200113053E-166607678 -66376590068e608748558 -> -0 6.7052402423820200113053E-166607656 +precision: 20 +divmod894 divmod -.216041828 -sNaN748806008631346347897452215589992026746664733612621367385824207198931390587617692491 -> -NaN98931390587617692491 -NaN98931390587617692491 Invalid_operation +precision: 80 +divmod895 divmod -.5245778702260037454104224642688 -.4227495746726426 -> 1 -0.1018282955533611454104224642688 +precision: 262 +divmod896 divmod +46978034173420691009052784663490977711875745292641026 -sNaN -> -NaN -NaN Invalid_operation +precision: 148 +divmod897 divmod 641892245885019093168003.909884782304984306 -685209324854271843441E+28259917 -> -0 641892245885019093168003.909884782304984306 +precision: 298 +divmod898 divmod +1605087959611896933797672616559780191393504494807961250149359366429565781401818650953985079948071929243924100482144.94674914694 +7978155558720010459974924031605744828245979874.9596320524959494e-959686940 -> NaN NaN Invalid_operation +precision: 257 +divmod899 divmod -5579443161973294310880334903508747533064880339727616182598254043320571034140840 +69592011904041812829186179040111746466E-845050285 -> NaN NaN Invalid_operation +precision: 135 +divmod900 divmod -30813964645928337843035766720104421846570778005.1660606132324 +29134297809796031.3052195767772 -> -1057652559436923867124954403550 -1139783272316354.7876033741724 +precision: 2 +divmod901 divmod -57e+668436457 -2e-909786598 -> NaN NaN Invalid_operation +precision: 11 +divmod902 divmod -86171510431 -97697 -> 882028 -20915 +precision: 32 +divmod903 divmod .911901e+726286597 -374. -> NaN NaN Invalid_operation +precision: 119 +divmod904 divmod -6556239128132023994056707090450464066682442160447914848035244452225346230303745323951E-546997187 -sNaN70413664899473772535 -> -NaN70413664899473772535 -NaN70413664899473772535 Invalid_operation +precision: 113 +divmod905 divmod +590153406688198499463533516488301547977486040487757926759770895302213 -.61458380968087546581414266293257073e687732205 -> -0 590153406688198499463533516488301547977486040487757926759770895302213 +precision: 287 +divmod906 divmod -149895334352788152587610698334955358299967597505557544503474452660896945505015799271154535791635862013055357282715600823039070250328774748650694614814605798087306020325687471857433005154227201999082439323093509524070525190105931877905203392118948088166858114074163149e-479025951 -.3063957370200973876658142531721516061971689359480628295023390659596449428556789553858524201838360322411769343282805654150751002702229 -> 0 -1.49895334352788152587610698334955358299967597505557544503474452660896945505015799271154535791635862013055357282715600823039070250328774748650694614814605798087306020325687471857433005154227201999082439323093509524070525190105931877905203392118948088166858114074163149E-479025685 +precision: 153 +divmod907 divmod -49949484299346098310602939409731797590153041848376950467223740249881757454320374426132972808745684934318015232392380507640106987 +Infinity -> -0 -49949484299346098310602939409731797590153041848376950467223740249881757454320374426132972808745684934318015232392380507640106987 +precision: 283 +divmod908 divmod +93711123948785371299080726856063624872227416137071239 8077499226593483169164737 -> 11601502063938430526208423042 4540521689172639052401285 +precision: 183 +divmod909 divmod -46298701357041040172491356213386500121 -8959997556.251372591 -> 5167267185774903221593450225 -6192657289.312217025 +precision: 38 +divmod910 divmod -28993.847087716348912188E+463060901 -757390534756e-574802843 -> NaN NaN Invalid_operation +precision: 79 +divmod911 divmod -612147120456254413440E-747485050 -35348.76446E-128398080 -> 0 -6.12147120456254413440E-747485030 +precision: 237 +divmod912 divmod 47501927966648431987403455519505605002706687137045235062171273790073e-127202157 -4100299594906559353394657089939571e-330090743 -> NaN NaN Invalid_operation +precision: 218 +divmod913 divmod 87743337613976961271893258012696352647869826490195009008369849288380231235204859667526891157307173399274639843429232678607557359483395419 -.44124658690084089253951761996746011768322745145884499260027100322192E+256829482 -> -0 87743337613976961271893258012696352647869826490195009008369849288380231235204859667526891157307173399274639843429232678607557359483395419 +precision: 73 +divmod914 divmod +1900926956032156709378408281658212292853800351661247727371 -.9549064751242956742425232e+568733017 -> -0 1900926956032156709378408281658212292853800351661247727371 +precision: 40 +divmod915 divmod -.86580 -19. -> 0 -0.86580 +precision: 51 +divmod916 divmod +29691715531447.4094303050611475055908425900234594E-230361115 829477020404783680795118E704470477 -> 0 2.96917155314474094303050611475055908425900234594E-230361102 +precision: 254 +divmod917 divmod +345914988856568228867233823451483305869503353495413654023455596591267157291635670950708787929918257163961405851093571237 -765698732323462061199575229415724455568445588681962955123336 -> -451763825972275177468669879524084606839669833270718884770015 419655492543406970298652238792286463551531800096684774001197 +precision: 73 +divmod918 divmod -99055870844818044663974810371929000185610562 -6912002503368820025629E73845022 -> 0 -99055870844818044663974810371929000185610562 +precision: 88 +divmod919 divmod -794851786200645474257205582798105653540580694561154962628 +0.483882685326948224468320063 -> -1642653912411812574318967667247185376082302566441510856706 -0.213858812304759628262107522 +precision: 230 +divmod920 divmod -5453024657112767354073903784228390139.71461 Inf -> -0 -5453024657112767354073903784228390139.71461 +precision: 109 +divmod921 divmod -8234202012896019771485150592222578364224.184558850233250173223292306792780109 .56627738511396520477169486483696897103 -> -14540933876847049550881502553137403552219 -0.36725952453403359473463978418947689343 +precision: 163 +divmod922 divmod 190125738245523082327455762996992458197805793139298.5065700037739009187777898618129515309717571548415945297866496092 -Infinity -> -0 190125738245523082327455762996992458197805793139298.5065700037739009187777898618129515309717571548415945297866496092 +precision: 255 +divmod923 divmod -4043614.8706 .56622 -> -7141420 -0.03820 +precision: 42 +divmod924 divmod -3695.2689639673218923902030348203 -9074710658766668 -> 0 -3695.2689639673218923902030348203 +precision: 132 +divmod925 divmod -97416885862163271606179221143.90722398128769672079967078864741017241972173766402007428503521 +69609231430322869900563919989489655421245.213e-480607860 -> NaN NaN Invalid_operation +precision: 263 +divmod926 divmod -5701213402 +90224 -> -63189 -49066 +precision: 45 +divmod927 divmod -1982543821068766727303921951470370E-586549506 -82286431155895709 -> 0 -1.982543821068766727303921951470370E-586549473 +precision: 169 +divmod928 divmod .4672891738432864325049265571210803804680250214804659076878455324215069877775111934625425565763648975245250862854922660141690386e179137126 -.942018187032558887257589185704232804149684486748949994514149571e587865649 -> -0 4.672891738432864325049265571210803804680250214804659076878455324215069877775111934625425565763648975245250862854922660141690386E+179137125 +precision: 99 +divmod929 divmod 781548417841682876491132562937910492356193313560734080529774556872526492404215068E-336988529 2374791287528455367743610345386833750163e302653449 -> 0 7.81548417841682876491132562937910492356193313560734080529774556872526492404215068E-336988449 +precision: 91 +divmod930 divmod +182156485721038278756801581004648700890156954212828e-775144218 -7622362701704683575961347e+721878446 -> -0 1.82156485721038278756801581004648700890156954212828E-775144168 +precision: 38 +divmod931 divmod 49001432 5206. -> 9412 2560 +precision: 96 +divmod932 divmod 9772638306405482671807525080372883856919 +48681.42890391814013 -> 200746743192226405690800470653196010 42451.13640046311870 +precision: 298 +divmod933 divmod 6279901731171405649153663444747928724262908948565287871042994543774428435891910946543668494016207869273446693873768397381516313022824101669165774713632.2160489662556163422286760013543881506105 -Infinity -> -0 6279901731171405649153663444747928724262908948565287871042994543774428435891910946543668494016207869273446693873768397381516313022824101669165774713632.2160489662556163422286760013543881506105 +precision: 204 +divmod934 divmod -9999301241827709327567573891564977176655815838681766137363968640619410690070439231591490841569444995193991008986937194406312383815195354936466733879628630241395047361243793 -96361989351220054673594857554355271582777612968532539135784708658497075455628423543314 -> 103768107208561967731913326618649974058588703467455765588689000817566226819261233735136 -83537717504867549595303079930847283020359315049481910813144197768993186881731261563089 +precision: 252 +divmod935 divmod -821939363223520510088017581184617505300540462013665405949259909105109410337768718319544012931834948124839299 143002260899861330491248149742550808699091065211836725e+74348519 -> -0 -821939363223520510088017581184617505300540462013665405949259909105109410337768718319544012931834948124839299 +precision: 112 +divmod936 divmod +.97 -7 -> -0 0.97 +precision: 214 +divmod937 divmod -30441635329627899905266755773546151171986467544965292293133234669507089392669333467148243708542285429266494011180954086658238790257212867904562146446175803428724E-132112846 +61698609687278270570344714701093147493765868992238790005229085365135809727595043e85988107 -> -0 -3.0441635329627899905266755773546151171986467544965292293133234669507089392669333467148243708542285429266494011180954086658238790257212867904562146446175803428724E-132112686 +precision: 60 +divmod938 divmod +228386433925488155385584823346243476475485707039357e-546423224 +9823868637119189327409370e-614929623 -> NaN NaN Invalid_operation +precision: 31 +divmod939 divmod 1447755274677 +NaN3837279293541255606010930 -> NaN3837279293541255606010930 NaN3837279293541255606010930 +precision: 20 +divmod940 divmod -45800404e+380914700 -141 -> NaN NaN Invalid_operation +precision: 54 +divmod941 divmod +5444112048432038898792510459146 -49515994400757 -> -109946535747019338 14132309620280 +precision: 150 +divmod942 divmod -77037348362318319743998769449175772206574443722193628725754541306475064879110195468 .2092556389875634348032927829262626950751 -> -368149449807165456500111205383044084009538130263493342507602399063394905803082993506 -0.0060499037818768975815760086534085176994 +precision: 131 +divmod943 divmod -3438499344287708445946932756129303156644763392252296697712582125287791049906503945971251461499274860 65135489917911823516666473745114511546451508504503e-424827172 -> NaN NaN Invalid_operation +precision: 220 +divmod944 divmod +73828589924459461023234675683299987330005899582404475068576564026327748228627950742407704573683192813414181692114774966523555031315590688239102862524069870681881979645048918258035999052595286252093224469904846926711 +82825095772361515748304133446419728585009118452700545141672347361465601508631000900411552535785611231659202E-749517297 -> NaN NaN Invalid_operation +precision: 189 +divmod945 divmod 424804024548996620908283922070640370325048760806360924344329953444046090824697532840200131527295651604675657184545 .767751684141629255813905328020787597190282871582629229470 -> 553309140603111798696665170401691906130903087951309503427474733995525183396107087622728888439324658197007575810443 0.136684785229128679672574867960938074110823955984130644790 +precision: 218 +divmod946 divmod -Inf 12825049552921484653205584576320290875592013739216028178.3112156055224239145644974320375906416063112 -> -Infinity NaN Invalid_operation +precision: 36 +divmod947 divmod 30493585323374252887940490 Infinity -> 0 30493585323374252887940490 +precision: 222 +divmod948 divmod -9799215371983085056773437957004981728983709309347072931870319423576 -7396554.27778197600207483818690488 -> 1324835187300430558795475980577884179796001572337988814802879 -3113751.51449692490526932367685048 +precision: 121 +divmod949 divmod +2862763319600286 -44303900 -> -64616508 10819086 +precision: 163 +divmod950 divmod -8714729862031719496419703026029430724320.291594167959640503125088295450457524792390e-278814435 42811013276109440952673280450233301486061 -> -0 -8.714729862031719496419703026029430724320291594167959640503125088295450457524792390E-278814396 +precision: 245 +divmod951 divmod +865112584839166309777747452394442442805116510 +Inf -> 0 865112584839166309777747452394442442805116510 +precision: 75 +divmod952 divmod -589566234232871314132898983745562002970090988302068187993263639574076045 +496897267076346974143169096209443914 -> -1186495224056617711163331409384523775 -16836233392003529075375249112020695 +precision: 145 +divmod953 divmod +.63668512E+666905625 -.2128E-712480353 -> NaN NaN Invalid_operation +precision: 11 +divmod954 divmod -14.1814924e-594425224 -53225 -> 0 -1.41814924E-594425223 +precision: 221 +divmod955 divmod 75026479277192669932558650199463085523285879603696239205124935678297877011488308291877850500854948559297018828596689099780601100644086180E-874705284 483046610291998595507884900238879911527205392.82806762332810782184545e515254434 -> 0 7.5026479277192669932558650199463085523285879603696239205124935678297877011488308291877850500854948559297018828596689099780601100644086180E-874705148 +precision: 46 +divmod956 divmod -26477746988069526107573259e-747395134 79084264.65948 -> -0 -2.6477746988069526107573259E-747395109 +precision: 105 +divmod957 divmod +Infinity 545548438096 -> Infinity NaN Invalid_operation +precision: 204 +divmod958 divmod +Inf -569118287268320855877786773507622882720432897190116517359227685277771074 -> -Infinity NaN Invalid_operation +precision: 87 +divmod959 divmod 465482074716256195222013624300282775521371186807580 8912789716134293772244681e+587474053 -> 0 465482074716256195222013624300282775521371186807580 +precision: 211 +divmod960 divmod -75001758336119035177849952860650480569151e-411476382 -83280624192220929099.e-692436210 -> NaN NaN Invalid_operation +precision: 184 +divmod961 divmod 92187667332545920235119187.24314529428053349004218694835947749117284713091401454257488854205 -296107103318790256163625449745477954145616149 -> -0 92187667332545920235119187.24314529428053349004218694835947749117284713091401454257488854205 +precision: 294 +divmod962 divmod -Infinity -74928996104994418144305125418367258257018195762.8944676611587864 -> Infinity NaN Invalid_operation +precision: 71 +divmod963 divmod -553803408436346757841544266336473 -.7186659572750232E+788968998 -> 0 -553803408436346757841544266336473 +precision: 178 +divmod964 divmod .23417395633185561966698886270714 .4312102223067150 -> 0 0.23417395633185561966698886270714 +precision: 66 +divmod965 divmod +1516287537121155996912960480695309 -89.932244586751540 -> -16860332399003965662032064521717 79.069555186805820 +precision: 259 +divmod966 divmod +NaN 602817063878.751495144599184528989700017408859551323965130180477407229885918337936E+919904537 -> NaN NaN +precision: 24 +divmod967 divmod -8363261193640.65e826887668 -5764618 -> NaN NaN Invalid_operation +precision: 108 +divmod968 divmod 3214407624469518142878896486 +Infinity -> 0 3214407624469518142878896486 +precision: 121 +divmod969 divmod 847268837935438645810579622932262100888356891 -53396632.86422721986690 -> -15867458161450134019429873629145172815 28070312.71219820167650 +precision: 130 +divmod970 divmod -.4868149478611481352554040786837041083077890244526292847327265157850 -387139917063384084450556.629985853 -> 0 -0.4868149478611481352554040786837041083077890244526292847327265157850 +precision: 152 +divmod971 divmod -733403311460207e-387854926 +4272048 -> -0 -7.33403311460207E-387854912 +precision: 282 +divmod972 divmod +Infinity 607600695.692958 -> Infinity NaN Invalid_operation +precision: 255 +divmod973 divmod -30021646139587110569654675069411558697589232876500190638615242464108634501897322999213113694282437552908866199943481316028382367210238735746261394977781434962598993056753017087130987537628605257974346e480826965 -3596417558752872519079695010859377519192314911234750227795231406486717646566994618196000030558224080E77194166 -> NaN NaN Invalid_operation +precision: 161 +divmod974 divmod -967586638321934345562249760462355747330796145918429425277224746892485929147515199077.74081675574 32824987657025788235109280375275788619806586644 -> -29477136394743905637854716446989819022 -6162693246139891603876629648799496502392856909.74081675574 +precision: 132 +divmod975 divmod +744095291701514589871638455166614512288600810760589350149756113021136198162615E-32598807 770126283204683155232358631108683540232E715835843 -> 0 7.44095291701514589871638455166614512288600810760589350149756113021136198162615E-32598730 +precision: 174 +divmod976 divmod -367495429831045070954020688423485855971623610606684377535404265 30678.1647991494855530168697049 -> -11979055208714226297859924628147614297453592888491143417818 -29519.1685295820209238329380918 +precision: 94 +divmod977 divmod +947108428.6146619616e-292792895 +1.62570580e-155400554 -> 0 9.471084286146619616E-292792887 +precision: 40 +divmod978 divmod 369788717451 477827e+622579013 -> 0 369788717451 +precision: 154 +divmod979 divmod +Inf -3279654533764681853355553530430767025384741.2097280272 -> -Infinity NaN Invalid_operation +precision: 152 +divmod980 divmod -Infinity .241540e-172576784 -> -Infinity NaN Invalid_operation +precision: 71 +divmod981 divmod -86499254394345603939 +2828762512 -> -30578478761 -1240596307 +precision: 3 +divmod982 divmod -73 +7E+811771295 -> -0 -73 +precision: 191 +divmod983 divmod 855689859582960627303630450 87419921031.82 -> 9788270790950472 73582874430.96 +precision: 241 +divmod984 divmod 27493248394888623231146089246405054748841928158747740368426161844899679969865288254128063029366308116359228E571091314 +.77915967308492009644379372357322997510830140343909452 -> NaN NaN Invalid_operation +precision: 222 +divmod985 divmod -347190822755705982061917984244654029159299339609.76026983434605351445046174805681158684085244117230911397498447611760450314 -7305244112880977827760632832620562992257972149113333771102747E+837861036 -> 0 -347190822755705982061917984244654029159299339609.76026983434605351445046174805681158684085244117230911397498447611760450314 +precision: 166 +divmod986 divmod -6211881551375378829621038E+446472945 -398046977993 -> NaN NaN Invalid_operation +precision: 150 +divmod987 divmod NaN -60.9220233168007000363296180296660159211e-530030862 -> NaN NaN +precision: 164 +divmod988 divmod -.299681455008444198449777222108021092022325552603082042684853319571089861280853062174945130592598246956703005909391086135607415659560100978345920657659e-275612771 -143712164364188922672275952317498836374104867006218414957299.81154877505361 -> 0 -2.99681455008444198449777222108021092022325552603082042684853319571089861280853062174945130592598246956703005909391086135607415659560100978345920657659E-275612772 +precision: 237 +divmod989 divmod +75872400323363057556041616567454113910770761029367160464361775948692405125707571161155357049473680906311797530739306886012089725765102039858888351383181935747125792617374854824562839 -8227492686848226360918207587105123682933903085963365442995637022455658082750150509375393984e-872536823 -> NaN NaN Invalid_operation +precision: 163 +divmod990 divmod +57397.952466577101501629926317 -.18674508741475 -> -307359 0.169143866956251629926317 +precision: 225 +divmod991 divmod -.71502712387191884923704980192304733566801791013901922425099011950214546329824581434461777820933572871e+79661258 81956940898555052842031604594894061364739716350810 -> NaN NaN Invalid_operation +precision: 6 +divmod992 divmod -96.602e-810003995 Infinity -> -0 -9.6602E-810003994 +precision: 98 +divmod993 divmod 348406073797567000509031060610196663219488388598058173117907628123455567786689648126 -1441404836142096521878099.38031526185862244 -> -241712851977152964782922198614251952651585514109561331621437 751859481162464736015342.65626349560675372 +precision: 203 +divmod994 divmod -Infinity +47869891600794358138726074076943856579449607468453502866035235497010 -> -Infinity NaN Invalid_operation +precision: 144 +divmod995 divmod 6206299448622738812046239863847920175001372849397381662236546491305455435987826101260659050396806119871206896998155523057468669 -349427275515578763746010489856513389329379456291009722536506584 -> -17761348021459873035610368801375269026499575819872672762974216182 347358923375911184768799206851519577098664381693295715175126381 +precision: 292 +divmod996 divmod -.5664126996338399292007237667910241957890725322542829037284349821344091353621732420923932869950571876068 -497575294878909221828663018854024250562639510430114e797401815 -> 0 -0.5664126996338399292007237667910241957890725322542829037284349821344091353621732420923932869950571876068 +precision: 176 +divmod997 divmod +806614933117739.8964725205766493528327537588783124768302278197677251423346010684093332508168391556116593560918385629404009043173105562482534344465076075066792975666E+974426778 -144551761358325394794540277788936464846.9199666401804653740897169451441454017099898 -> NaN NaN Invalid_operation +precision: 236 +divmod998 divmod -.6182 +95. -> -0 -0.6182 +precision: 194 +divmod999 divmod +94069942403404916171145225972851900103507611374066740020893301062941.867844770653854825769680556761173045515350217 +.24855606912973496315299700953081116891838043954058079768 -> 378465682744220921701372210558238088360740897685588580141922521360510 0.21795046618719005106736628927103289438008050566534838320 Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/divmod_eq.decTest ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/divmod_eq.decTest Thu Jan 21 18:27:06 2010 @@ -0,0 +1,2010 @@ +-- +-- Tests binary functions with both operands pointing to the same decimal. +-- The tests are random. +-- + +rounding: half_even +minExponent: -999999999 +maxExponent: 999999999 + + +precision: 287 +divmod_eq0 divmod_eq 53464363333374808283597687012581545556435043430877416069601812915742085729084642883631769946846145248101886580777706430843020189140428608578077608617960084403336009490995063314174483207370023308095611980240 -> 1 0 +precision: 150 +divmod_eq1 divmod_eq +60282411403474423437251944856221834213664804070443619110124159546725081821627.9520731524443948144720661450464724117304412956005906597494085920338030465 -> 1 0E-73 +precision: 85 +divmod_eq2 divmod_eq -63467629447618961271624908961051190267743022525700e648470929 -> 1 -0E+648470929 +precision: 108 +divmod_eq3 divmod_eq -762879944390665.371815875601 -> 1 -0E-12 +precision: 288 +divmod_eq4 divmod_eq +997594334066627951033394333915508375011722549244112196997015462663582982961809024613180076099282803800482019887107098847480355044678421823378359002130300510590127911433084709732427595232911169827362243916e+685827935 -> 1 0E+685827935 +precision: 152 +divmod_eq5 divmod_eq NaN832667949710977289184673168 -> NaN832667949710977289184673168 NaN832667949710977289184673168 +precision: 61 +divmod_eq6 divmod_eq -sNaN -> -NaN -NaN Invalid_operation +precision: 12 +divmod_eq7 divmod_eq -250606270412 -> 1 -0 +precision: 135 +divmod_eq8 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 24 +divmod_eq9 divmod_eq -76055012871 -> 1 -0 +precision: 182 +divmod_eq10 divmod_eq 83542251601461897232191794166173085401568082209284348867004240280628151957E-123881576 -> 1 0E-123881576 +precision: 268 +divmod_eq11 divmod_eq 25217609567122285964471898171122472313775219353867927954644050658215682980863474205227115302147969044815699324981589251023600550104018301454854034696303525434325473109274633035048576419282966532100961091E+428438078 -> 1 0E+428438078 +precision: 146 +divmod_eq12 divmod_eq 237891543845203059343898625842339741522959606167929795593236668287030561164857178.8674834023214818099624e495341870 -> 1 0E+495341848 +precision: 175 +divmod_eq13 divmod_eq -624486520641684870510222593233263369549269541865020921753746257084232388554067883696480034366518491.803050265063571939817816022574699692118789939353658564018862657150469250e271339981 -> 1 -0E+271339909 +precision: 38 +divmod_eq14 divmod_eq -.49549945556281437721075847786E-293934761 -> 1 -0E-293934790 +precision: 160 +divmod_eq15 divmod_eq 6439721575376014220466555296780909616861282020535698034e+523268522 -> 1 0E+523268522 +precision: 209 +divmod_eq16 divmod_eq +.864382208890765802588387146087984270777777183E-78681381 -> 1 0E-78681426 +precision: 287 +divmod_eq17 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 105 +divmod_eq18 divmod_eq -2296114411619668321102132320210732170325581199648640154523045481418066212280947402212308087990889 -> 1 -0 +precision: 216 +divmod_eq19 divmod_eq -72499760135762907318683393547388270191276962617907889270937493824626.8609387535086072123734512291064149494599650674785561301557964790991109627223994876880975667071725232264 -> 1 -0E-103 +precision: 177 +divmod_eq20 divmod_eq -602329874961556145732709262519020399030 -> 1 -0 +precision: 120 +divmod_eq21 divmod_eq 605346465368949707205 -> 1 0 +precision: 299 +divmod_eq22 divmod_eq -NaN -> -NaN -NaN +precision: 215 +divmod_eq23 divmod_eq +.859210872763380019695755516617812057083304606701831278736432420104323678594526580219315082439316330854718463797399802289467720618008821966135758410422345129280452816607546072439372254699203545710518 -> 1 0E-198 +precision: 71 +divmod_eq24 divmod_eq -2187562097781110568369202126752208478245925935058306 -> 1 -0 +precision: 254 +divmod_eq25 divmod_eq 8095321441539552219030352339253094741310342509803565261892869350935285482654276530.60967719649351174547788312045006521831612745351745541033 -> 1 0E-56 +precision: 165 +divmod_eq26 divmod_eq +98476117314065604303184933585802184337242433967355435689143782636521990578857919074666975607367373104866007913836751769234055465314494844E-774349744 -> 1 0E-774349744 +precision: 107 +divmod_eq27 divmod_eq -62284353301034 -> 1 -0 +precision: 208 +divmod_eq28 divmod_eq -405703916584946187339588755122298833227050382148619889574233323470871927925383628683023471580384585665209218581358227457521399861319625088667058199283670965579234990162231856227991059751296617924383500005115 -> 1 -0 +precision: 249 +divmod_eq29 divmod_eq -2385680788988254374730807959458616979585725543859186026963966406590096468981873292469401851945034377497902483187421521277018000832569821451797.5280369733419139368208020768984127681840 -> 1 -0E-40 +precision: 20 +divmod_eq30 divmod_eq -51.482237 -> 1 -0.000000 +precision: 144 +divmod_eq31 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 125 +divmod_eq32 divmod_eq +5197142681717416592985957649160129100928119150921314012534558482721058592924e+533525987 -> 1 0E+533525987 +precision: 133 +divmod_eq33 divmod_eq -42223760256214305217288191645583486423066815206309438645534904343220690074186227399974896087788E-883972441 -> 1 -0E-883972441 +precision: 99 +divmod_eq34 divmod_eq -540288412703989088324101602638520539 -> 1 -0 +precision: 276 +divmod_eq35 divmod_eq -42 -> 1 -0 +precision: 189 +divmod_eq36 divmod_eq -414770529362441743.502800784854148E-924883872 -> 1 -0E-924883887 +precision: 226 +divmod_eq37 divmod_eq -122103740689866609813149805358597902815117162755424791485849336568303923370578525587223684979.77668042705559094381 -> 1 -0E-20 +precision: 256 +divmod_eq38 divmod_eq -93429962092663391728680017614256726146956696242118543189766822043606551265409299488963361819462007518894007390733026454601256090251457894245829231587850963044445786811654183538041329178407314949868722063974455473105186197129532461226010105530975 -> 1 -0 +precision: 257 +divmod_eq39 divmod_eq +5363.678189 -> 1 0.000000 +precision: 15 +divmod_eq40 divmod_eq -1.11 -> 1 -0.00 +precision: 30 +divmod_eq41 divmod_eq 1484.957E-18415126 -> 1 0E-18415129 +precision: 147 +divmod_eq42 divmod_eq +.724365549601958373061594204603726255265461738E-846772663 -> 1 0E-846772708 +precision: 14 +divmod_eq43 divmod_eq 2.235343528191 -> 1 0E-12 +precision: 271 +divmod_eq44 divmod_eq -3112862458167369216150698235682116.74266524076306991 -> 1 -0E-17 +precision: 129 +divmod_eq45 divmod_eq +2473727781802613137059572213.889177 -> 1 0.000000 +precision: 195 +divmod_eq46 divmod_eq 4923403255739504086409612423068733041095492282024351686209100681564418463954508076395026323050251666626116755500368387153233787830687470280617641354052927183009455269009506212788497026 -> 1 0 +precision: 54 +divmod_eq47 divmod_eq -341.154353941696390403305091822463 -> 1 -0E-30 +precision: 235 +divmod_eq48 divmod_eq -348849317976202851 -> 1 -0 +precision: 142 +divmod_eq49 divmod_eq -53281607984204574454992.85153993230543592391240521932346680770305738574055522 -> 1 -0E-53 +precision: 89 +divmod_eq50 divmod_eq +639322655075658284864501796148572695116980237109129131740966911 -> 1 0 +precision: 86 +divmod_eq51 divmod_eq +3118520608155038015097966 -> 1 0 +precision: 275 +divmod_eq52 divmod_eq +968958421369594655202604230528305465566154249.279146578148372305691666256569545838652560927549195430822655157798930178784969279192586555404772182319932983240140556698438836877731188744737943342648577927870 -> 1 0E-159 +precision: 106 +divmod_eq53 divmod_eq -5383839463.11353306259257099633E126493576 -> 1 -0E+126493556 +precision: 152 +divmod_eq54 divmod_eq -926891096999095630862429037881226804420485799805109773388345011078027185049653736399061221337784709078330702640028602101977211194450167477766358966 -> 1 -0 +precision: 180 +divmod_eq55 divmod_eq -sNaN181293545943518158696883231497008283253210761505960375779161042209981 -> -NaN181293545943518158696883231497008283253210761505960375779161042209981 -NaN181293545943518158696883231497008283253210761505960375779161042209981 Invalid_operation +precision: 63 +divmod_eq56 divmod_eq -153378400604553963250338755763742790055406127429824E+149881683 -> 1 -0E+149881683 +precision: 153 +divmod_eq57 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 90 +divmod_eq58 divmod_eq +713176 -> 1 0 +precision: 298 +divmod_eq59 divmod_eq +565998932303460438714500951746078107780951734345615650834505308212468209352517951724996822757702128281770743151617518219664946374794686715791235824879596349532571366818130166877120341581373119055758 -> 1 0 +precision: 292 +divmod_eq60 divmod_eq .97870393172360230443100647033317015054169636315777107902529431594158694332662248031989750429360287729873006062041960203417490856472131939678413967794241443875917420335399307011538922669649466404776340393342620127273932320097610173562059473092416540152869415 -> 1 0E-257 +precision: 43 +divmod_eq61 divmod_eq -2229541013528323048628399 -> 1 -0 +precision: 118 +divmod_eq62 divmod_eq +7674519950072794467599738284 -> 1 0 +precision: 31 +divmod_eq63 divmod_eq -9588654 -> 1 -0 +precision: 39 +divmod_eq64 divmod_eq Inf -> NaN NaN Invalid_operation +precision: 280 +divmod_eq65 divmod_eq 2481002409183328634392591820527821585715925899241928261627100002588761787432751456 -> 1 0 +precision: 133 +divmod_eq66 divmod_eq 16222162494747464113974374182947930026667980137372748705619064155988595916264e+991871225 -> 1 0E+991871225 +precision: 146 +divmod_eq67 divmod_eq +671390474584 -> 1 0 +precision: 279 +divmod_eq68 divmod_eq +277811721684566295357369923.84595668648455793441455098892582432404960347223389364643398424613011058932940959599611915995896384903396700045509201464884341045299481518805809731503486151671071827506131912134200851345578312863109269801667900536593183932090316352249526984657746280664e-627295248 -> 1 0E-627295499 +precision: 134 +divmod_eq69 divmod_eq -532376460267931555633274345263150500518938362494755630052898.598731277931103864139494415071962 -> 1 -0E-33 +precision: 86 +divmod_eq70 divmod_eq -55388722348496010330451537276370455593198227804672813986163.246707808241894741 -> 1 -0E-18 +precision: 36 +divmod_eq71 divmod_eq +5520513112268662150249031703626137 -> 1 0 +precision: 89 +divmod_eq72 divmod_eq +3571034308487975436825268866624235456145236510447948 -> 1 0 +precision: 32 +divmod_eq73 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 202 +divmod_eq74 divmod_eq -54455912284423905204535947714484914600905457451.67699563511653477423610580947001300622433244305013119152676624118986975906673721625083808740189472923229907629273857781442793430182778340442 -> 1 -0E-140 +precision: 236 +divmod_eq75 divmod_eq 737142819863460365258620882839024713096639010132687321805052197979887237289394762058948006 -> 1 0 +precision: 65 +divmod_eq76 divmod_eq -.4844271484531862901316355961882132 -> 1 -0E-34 +precision: 131 +divmod_eq77 divmod_eq -82055961057053823844 -> 1 -0 +precision: 49 +divmod_eq78 divmod_eq +.1278017114524 -> 1 0E-13 +precision: 16 +divmod_eq79 divmod_eq .26593E+867916136 -> 1 0E+867916131 +precision: 57 +divmod_eq80 divmod_eq -2928 -> 1 -0 +precision: 202 +divmod_eq81 divmod_eq .2436323487472693944483338472060043701142931170235641463232780177433084598344826971233971473693838557135322655666862504924399245975424690098105307163352034998870273624506443485010273741010889466900203608 -> 1 0E-202 +precision: 50 +divmod_eq82 divmod_eq 3229118766282116389 -> 1 0 +precision: 128 +divmod_eq83 divmod_eq -353217 -> 1 -0 +precision: 237 +divmod_eq84 divmod_eq +8952945727256741368484117984533237136797532694624451799425154416318349214077171987911741267360243984867724.24083293855144702715914245533417014003733762831596064439183e379300807 -> 1 0E+379300748 +precision: 241 +divmod_eq85 divmod_eq .8802964692482340897876789908522346079238644307908 -> 1 0E-49 +precision: 214 +divmod_eq86 divmod_eq -2667732491032129698862578439011099389667186127491417742984096074955327525 -> 1 -0 +precision: 240 +divmod_eq87 divmod_eq -.416532628180938439246293272193123930651122611174329589457565176645866576348391528647008177485915098310297410099346101509095856384803903453615121178770752304640192030591 -> 1 -0E-168 +precision: 224 +divmod_eq88 divmod_eq -.15505333323504875956096576743893722845824504875196741466681416293705282853643 -> 1 -0E-77 +precision: 50 +divmod_eq89 divmod_eq -45490444275117551622386486537015139196713012461529 -> 1 -0 +precision: 65 +divmod_eq90 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 72 +divmod_eq91 divmod_eq -7967511917180 -> 1 -0 +precision: 122 +divmod_eq92 divmod_eq .647994470911796025803235101546481548974 -> 1 0E-39 +precision: 173 +divmod_eq93 divmod_eq 543249666827706649565525870978211465783115952872288787045121 -> 1 0 +precision: 246 +divmod_eq94 divmod_eq 197310568047035387852382184816617724129357344414939176906413141183744558314848880712048491398604699714774965453168118423060229443350867739117842410595557474518588350014227639426307312424575274781260 -> 1 0 +precision: 233 +divmod_eq95 divmod_eq -67294738367873681345043093621762171404406801145879502217316626782273714636857845968781631779727222557166291714266478599780772252555641354152146583770584712291276471077440259309611531349 -> 1 -0 +precision: 142 +divmod_eq96 divmod_eq +9315310416417575888949704.7570337998257958966782984779562365077621770730098012049297412269569552e-228103043 -> 1 0E-228103113 +precision: 20 +divmod_eq97 divmod_eq +985765373882 -> 1 0 +precision: 131 +divmod_eq98 divmod_eq -.3762828208341E-106659662 -> 1 -0E-106659675 +precision: 11 +divmod_eq99 divmod_eq -481903E+890412410 -> 1 -0E+890412410 +precision: 79 +divmod_eq100 divmod_eq -740640783097689747743726944019728629880766 -> 1 -0 +precision: 136 +divmod_eq101 divmod_eq .818529386468828597598305678387729826871 -> 1 0E-39 +precision: 265 +divmod_eq102 divmod_eq -55520858.126755899541 -> 1 -0E-12 +precision: 260 +divmod_eq103 divmod_eq 5338369612062216799220058852896243244078070467380015626597662433795140766339246370604010755152309835070971402004903878375376405395966328736017695756964241030224661897468567209388670144624397 -> 1 0 +precision: 263 +divmod_eq104 divmod_eq -4229493779774760132802843932516116658783601633557875037028346232812704526632013210875339293503208416523116722112419420011080285497497905884655845001106e263891020 -> 1 -0E+263891020 +precision: 79 +divmod_eq105 divmod_eq -61660677337165.71901401e-901402713 -> 1 -0E-901402721 +precision: 176 +divmod_eq106 divmod_eq -64109340231793728683.9238039098025613313390 -> 1 -0E-22 +precision: 289 +divmod_eq107 divmod_eq 80551060.16958 -> 1 0.00000 +precision: 258 +divmod_eq108 divmod_eq +.88146564183215174603063964854027598581321659898936005999999016339243256500874953537254688203079455629165603570624186498103150398216479557241567191220209935645 -> 1 0E-158 +precision: 9 +divmod_eq109 divmod_eq -.7744 -> 1 -0.0000 +precision: 55 +divmod_eq110 divmod_eq 43187566607251452279858472124925846446517913700876595 -> 1 0 +precision: 286 +divmod_eq111 divmod_eq -82509343023671236033514434832079986468381029199396218848681393935443730893594469609414819654223603679893679715242618488404644749419991986055486295843844302660663441258047921026958375229601964537327040542693721224482177515908341829692386428683369 -> 1 -0 +precision: 296 +divmod_eq112 divmod_eq 69085850583646107215461854371705601235972378.60615503795642165777143341660150037619992984575445859937600695215242413816474293357701134031633948296880835415042533376414558513430938984601118689262172147 -> 1 0E-155 +precision: 151 +divmod_eq113 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 193 +divmod_eq114 divmod_eq +61945128660490526165418557875474853986311581735442381205499972605454068180649011815841754238935443829113562.215816187980342987912898321865879084967375631289378213352528334999776324231 -> 1 0E-75 +precision: 276 +divmod_eq115 divmod_eq -233844972717621521204775431471981096560139614804088847837964685892430575598071317864284905914095328729608585331824990952628882169696908616824102921530793861557404819266356543156122040328283379695011049379604934984055292172173 -> 1 -0 +precision: 183 +divmod_eq116 divmod_eq .46771809967513682604779822390705624963795075301981584942103268785116075795846623992808196702336538355713747397740378447298475514633756010891187645578439464975978 -> 1 0E-161 +precision: 250 +divmod_eq117 divmod_eq 23084291723761901387529178158028297781327756723548055673188879848695667042924380354791399024228744432616104074972262126580269005592412100044495350306080703703778407e+398290276 -> 1 0E+398290276 +precision: 61 +divmod_eq118 divmod_eq -.65889075881E-863088406 -> 1 -0E-863088417 +precision: 195 +divmod_eq119 divmod_eq -471294746.36135846e-875673014 -> 1 -0E-875673022 +precision: 25 +divmod_eq120 divmod_eq -.818e+66460883 -> 1 -0E+66460880 +precision: 146 +divmod_eq121 divmod_eq .90762008743696182031755911567457678414532499114089158641604082039941725117579151140146562680789222122753097843288869014E-709174583 -> 1 0E-709174702 +precision: 179 +divmod_eq122 divmod_eq -8139301187136441115318934932949983468004640340798805076557366152758731488829849130463472780050601997874712318836693993647316 -> 1 -0 +precision: 72 +divmod_eq123 divmod_eq +Inf -> NaN NaN Invalid_operation +precision: 6 +divmod_eq124 divmod_eq +.22641 -> 1 0.00000 +precision: 30 +divmod_eq125 divmod_eq -sNaN -> -NaN -NaN Invalid_operation +precision: 190 +divmod_eq126 divmod_eq -.8439231523459774551780424262834507291133795825668861072859916976946669245685049195345267060214798662287111429194688457214567082211571 -> 1 -0E-133 +precision: 107 +divmod_eq127 divmod_eq -1798217333802960749958934893787460899409413.9522546 -> 1 -0E-7 +precision: 103 +divmod_eq128 divmod_eq +61416004456357307661168571110E737033803 -> 1 0E+737033803 +precision: 119 +divmod_eq129 divmod_eq -25202258100323.8355522798869826944383335370574406134988770423848050496737996781905372898195377973350105644441 -> 1 -0E-94 +precision: 143 +divmod_eq130 divmod_eq -1903355119798219264732627027589177327620962781466657835048047115043620729585272563847813953677298040558007128260340176205 -> 1 -0 +precision: 155 +divmod_eq131 divmod_eq 49097325383342488901572076166453036807 -> 1 0 +precision: 156 +divmod_eq132 divmod_eq -.8792269347027352531326383505 -> 1 -0E-28 +precision: 85 +divmod_eq133 divmod_eq -479.2535980486669604759296298949037509358944428007518491160353740694865654113331727091e-614715456 -> 1 -0E-614715538 +precision: 136 +divmod_eq134 divmod_eq .20386536154489439234353518719801814499913231535990330706 -> 1 0E-56 +precision: 166 +divmod_eq135 divmod_eq 57535588947813935235634997773625116603788775.6584671091034090475841840543520261006866494929305054702533763632798199893361624779798057E686739163 -> 1 0E+686739075 +precision: 185 +divmod_eq136 divmod_eq -655717399149.9818158E-847497216 -> 1 -0E-847497223 +precision: 114 +divmod_eq137 divmod_eq -15766604008601505966951523998914892259032003239488752611820734247760406991024343170972 -> 1 -0 +precision: 197 +divmod_eq138 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 177 +divmod_eq139 divmod_eq -52159698716033245149190361837975512407201452114768658384306632837002078341490913773606159662566673412770836698942756244795204e-432859200 -> 1 -0E-432859200 +precision: 113 +divmod_eq140 divmod_eq -34464.0e+98307558 -> 1 -0E+98307557 +precision: 263 +divmod_eq141 divmod_eq -.78743210652646091022659480768123649392557868364765625529960642796205787203913751428450158677753156705494596266227976964594765603 -> 1 -0E-128 +precision: 82 +divmod_eq142 divmod_eq -102579850840778145498307399785703261.79924751883457340736983499391896960862019575 -> 1 -0E-44 +precision: 178 +divmod_eq143 divmod_eq -3312007797153734983895498806816359812940899662753451088 -> 1 -0 +precision: 196 +divmod_eq144 divmod_eq 7365340924095387151136850125363764055566564669398431666759761010857963359769344302382500998146811598564014541701340199244077987 -> 1 0 +precision: 94 +divmod_eq145 divmod_eq -.75712284307697401892473126e-222133997 -> 1 -0E-222134023 +precision: 167 +divmod_eq146 divmod_eq -40306138948914940192283648124276210987649398364552486820649584533792965203848608823957280494757102977833438455520784474806510149 -> 1 -0 +precision: 73 +divmod_eq147 divmod_eq 2576202718283462462778890468584E630374296 -> 1 0E+630374296 +precision: 248 +divmod_eq148 divmod_eq -400740262097842642582630638495734075085559568160839023706273417009206801184990e+872755931 -> 1 -0E+872755931 +precision: 110 +divmod_eq149 divmod_eq -48039656425751.4748870 -> 1 -0E-7 +precision: 299 +divmod_eq150 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 269 +divmod_eq151 divmod_eq .743994948194398864716485775699465201 -> 1 0E-36 +precision: 149 +divmod_eq152 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 3 +divmod_eq153 divmod_eq -.459 -> 1 -0.000 +precision: 81 +divmod_eq154 divmod_eq -7360849693031.99693764399119182348491360611486456686154101671562748847 -> 1 -0E-56 +precision: 282 +divmod_eq155 divmod_eq -.1498372072498109826410030863461801235622635284582334148923217685229920836215810502044270521964942477276802486386765743782427506038265292455800938995529947996151 -> 1 -0E-160 +precision: 299 +divmod_eq156 divmod_eq NaN -> NaN NaN +precision: 226 +divmod_eq157 divmod_eq .7574089928610457501798781552584858205375108672225755639453166186318383378311237617023320917469549416796953327592778255539633176583365040300896416955261020901855007445 -> 1 0E-166 +precision: 240 +divmod_eq158 divmod_eq 965263311479684544403932835376454511961514650279766828256808703191516377854468604690528321510348392446438600434711801357322576221153530194200284536199127120452670961898122779598557677340372529234433838882156633996814441393020882 -> 1 0 +precision: 267 +divmod_eq159 divmod_eq -17999697341685907599259485914181550833171764882268242229588466202302511867248181602565251345956742250704569718389485715411578146474219748936388972229919097774596043430438719E-543001688 -> 1 -0E-543001688 +precision: 45 +divmod_eq160 divmod_eq -996221.771449987638060051033e+321708067 -> 1 -0E+321708046 +precision: 140 +divmod_eq161 divmod_eq -185819062050219354269888038659381978096230875996.72311050213380319905240994071822347190305E+746874085 -> 1 -0E+746874044 +precision: 244 +divmod_eq162 divmod_eq 99758885187076848236011536113889274286765296536251739003924787778169012484451873118614492644857901807e+855468716 -> 1 0E+855468716 +precision: 29 +divmod_eq163 divmod_eq 58376021086 -> 1 0 +precision: 209 +divmod_eq164 divmod_eq 1201572181995586625791578282718743423302551740943585659767613543884332151323048986542829580040766367691083641623851193361231753795340585916398488988570649539299485620129 -> 1 0 +precision: 59 +divmod_eq165 divmod_eq +9250283034289048919570 -> 1 0 +precision: 229 +divmod_eq166 divmod_eq -286109404288911314513741947714041420403547188556091720323740742104618631693861178547024779981511748584563841440868608614184442467989100363178897866376104474133135923692038250736305784396198504111.1726994820953641218 -> 1 -0E-19 +precision: 136 +divmod_eq167 divmod_eq 20987963710668352169342399955440515618203374491084787745.961266071135244221103420921586 -> 1 0E-30 +precision: 100 +divmod_eq168 divmod_eq -615328975.1678748784798578997 -> 1 -0E-19 +precision: 16 +divmod_eq169 divmod_eq +50996 -> 1 0 +precision: 98 +divmod_eq170 divmod_eq -7017833005092151380323167583186272019699151896500566099644500015027531548458093410 -> 1 -0 +precision: 72 +divmod_eq171 divmod_eq -.24349571856273952568351548132493480853110629651503903628909919919122 -> 1 -0E-68 +precision: 244 +divmod_eq172 divmod_eq -.9655125268589106318914199135112143718039380992157156205967914247441501655943077698688317781197747423966598089141338295278047681012855769730996843486046404890563782696511836597725665416255767667058724848234337619935059474885068072963258770083 -> 1 -0E-241 +precision: 270 +divmod_eq173 divmod_eq -6359372690652682586899850373271156159518476399884434758290255761552007760961448463596200504418236858205586414573131454778092937641350735169081365473754256906957236195925568116742440085573832330455 -> 1 -0 +precision: 235 +divmod_eq174 divmod_eq +1278820515796428013094960237720692222290021406883288784539066403050339419788272810681054759509485819674520738253348767937656.9158339046349610982158264158699760326873353534491587955785244367120971458118512427092903566642838391 -> 1 0E-100 +precision: 77 +divmod_eq175 divmod_eq 56399 -> 1 0 +precision: 278 +divmod_eq176 divmod_eq -801365268002792821910630618649795016.22270E-871893515 -> 1 -0E-871893520 +precision: 7 +divmod_eq177 divmod_eq -79E+479385319 -> 1 -0E+479385319 +precision: 80 +divmod_eq178 divmod_eq +.9301106553173610199e-260901071 -> 1 0E-260901090 +precision: 219 +divmod_eq179 divmod_eq +7825767247889492041341904236211441870170336195849926102101587205173762504158688288091879341890170963058424708485239434985424664818838215331512785628385910713 -> 1 0 +precision: 266 +divmod_eq180 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 83 +divmod_eq181 divmod_eq -870631362244229888385612219698987146068651185454679404027E37262213 -> 1 -0E+37262213 +precision: 250 +divmod_eq182 divmod_eq 226364720391915745529709983786509738.351524712112148540169294854288693720738E-712510778 -> 1 0E-712510817 +precision: 132 +divmod_eq183 divmod_eq +3621394231420636208712363904786779675160814683493630051778939803928616804617 -> 1 0 +precision: 277 +divmod_eq184 divmod_eq -.146370867914922902682974999958606926844961305046584461329075331450225255307407984534778539506761534379792339348257705134229978305343817499138853690680955989725 -> 1 -0E-159 +precision: 288 +divmod_eq185 divmod_eq -972029121035446548852241169171174398901261904939169556225888792932044877930777147405106164529691109 -> 1 -0 +precision: 208 +divmod_eq186 divmod_eq -.2997132792596149334499580836653284341713428886037765368743099113039962367562256120414697769992751 -> 1 -0E-97 +precision: 86 +divmod_eq187 divmod_eq 27172320652971343e742570996 -> 1 0E+742570996 +precision: 224 +divmod_eq188 divmod_eq +72373842043333636042424711090233399975197054211893120932299018989646895957774280360396335478443172533373152122440015438737085308140125948 -> 1 0 +precision: 270 +divmod_eq189 divmod_eq +43148664815631926155150671721461026945898163059950485756525729018945622422378723119778919580111315098086488637519229725217862528823209E-714280748 -> 1 0E-714280748 +precision: 12 +divmod_eq190 divmod_eq 67136. -> 1 0 +precision: 138 +divmod_eq191 divmod_eq +57709862635521448929079528243838312350803255454118969234791105424121827678119744056119155960405e-406220045 -> 1 0E-406220045 +precision: 283 +divmod_eq192 divmod_eq -.83897932337021685243575786288560054975142121039975410332290038905659395423180 -> 1 -0E-77 +precision: 45 +divmod_eq193 divmod_eq 315 -> 1 0 +precision: 47 +divmod_eq194 divmod_eq -.8085871084032661037474775523 -> 1 -0E-28 +precision: 41 +divmod_eq195 divmod_eq -18.983488 -> 1 -0.000000 +precision: 229 +divmod_eq196 divmod_eq +7627002452425918119414394650047051 -> 1 0 +precision: 170 +divmod_eq197 divmod_eq 6910932880820270492537015152507020202936114574691653341734192466162214657196311304305346540266741446276513616601782782685642152679245E-896568081 -> 1 0E-896568081 +precision: 255 +divmod_eq198 divmod_eq -739725470518992390926008392445364623498899646955466855574776208747928431663437363541129690074885278823751469026511161221993903388488317534835162118191863682941393369e-566745935 -> 1 -0E-566745935 +precision: 204 +divmod_eq199 divmod_eq -4018889997341760809779224195616670067172597487512709086441241824597703165749220508043878198293681815733786581725857552648874460915824201937710150615080752437809709099695395891469438e-770208123 -> 1 -0E-770208123 +precision: 145 +divmod_eq200 divmod_eq -706394259884580005733047900707818331229407690152485758629e-305730456 -> 1 -0E-305730456 +precision: 20 +divmod_eq201 divmod_eq 5551575953.47385496 -> 1 0E-8 +precision: 297 +divmod_eq202 divmod_eq .811936447816230264256078610828829019672387954850182349493187035287389160034529569495488918882349093481777803992125157389151489634183901037253549919230109251602688415043746812109652991113326674880700062741548557574599389701174978142087883704081599410103567173920326632108486843343170206124603E-213641173 -> 1 0E-213641464 +precision: 224 +divmod_eq203 divmod_eq +.7009870555372628111315305686579155658588448134076585960910374771568639357678201774095278742943162075027132578119120963423073027601787326521348248030852456691933324183263177278195448963048534812162 -> 1 0E-196 +precision: 185 +divmod_eq204 divmod_eq Inf -> NaN NaN Invalid_operation +precision: 167 +divmod_eq205 divmod_eq -.190384424118737790716827383387923916157045164939155205149417687569796065450836645287286351522660204824559e+743619280 -> 1 -0E+743619175 +precision: 79 +divmod_eq206 divmod_eq +4131917622 -> 1 0 +precision: 217 +divmod_eq207 divmod_eq -.23145355497834420400076390683927612360517381223534670822050243876331873402937689829330139530061012202717571674622358738409416796 -> 1 -0E-128 +precision: 43 +divmod_eq208 divmod_eq -722919139049e-170415738 -> 1 -0E-170415738 +precision: 186 +divmod_eq209 divmod_eq -21079017612E+807773075 -> 1 -0E+807773075 +precision: 219 +divmod_eq210 divmod_eq -217076302473891195309880023944280918800519537645114812507371658778383750597983704280697630814014534864994918054942491475e-642094143 -> 1 -0E-642094143 +precision: 74 +divmod_eq211 divmod_eq +1690728029878025570379336979309437400020815269 -> 1 0 +precision: 131 +divmod_eq212 divmod_eq -96747732967075254846654081300593355811460345314781971856594205127520534834875969438455850397794916429741936710 -> 1 -0 +precision: 289 +divmod_eq213 divmod_eq -980014654096133625043625416817241128385308250828191806793677256370652686996240181581168505985217155627900149562940097800170856290667811112167421864706774239239893360602499473224E+55221766 -> 1 -0E+55221766 +precision: 238 +divmod_eq214 divmod_eq .270982762263070361554367950680839878507879612027452510538719140938076164 -> 1 0E-72 +precision: 36 +divmod_eq215 divmod_eq +632400592664992213065E-798215546 -> 1 0E-798215546 +precision: 154 +divmod_eq216 divmod_eq -636229225 -> 1 -0 +precision: 255 +divmod_eq217 divmod_eq -426609080120921910988683054767920677095674401039245057610302600888869964400.20495518600344478E+623543633 -> 1 -0E+623543616 +precision: 106 +divmod_eq218 divmod_eq -132691313484063733676312935e814304116 -> 1 -0E+814304116 +precision: 219 +divmod_eq219 divmod_eq -sNaN200291912083935301100159010082279542866665627045061515197672190347661636611613 -> -NaN200291912083935301100159010082279542866665627045061515197672190347661636611613 -NaN200291912083935301100159010082279542866665627045061515197672190347661636611613 Invalid_operation +precision: 288 +divmod_eq220 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 264 +divmod_eq221 divmod_eq +227374286549067911226242306712445839893424391644309023720288202593225721034202424151773958906365212211702112452.919667194437731739115784127107208733887 -> 1 0E-39 +precision: 117 +divmod_eq222 divmod_eq -2885493664618949873185079399275947897610709995046239459078770215586981400300800939 -> 1 -0 +precision: 295 +divmod_eq223 divmod_eq +.106212041843578100157489181898193923514371086792301540862522207402668859412327013596890421761803937085795200609828563344880188745905452632933844667 -> 1 0E-147 +precision: 262 +divmod_eq224 divmod_eq +4659789677361664285673239269560665678674971590730123419877517039665450398084874649184020114955268925494074027415944071987211965743696783319452296389562860960693452 -> 1 0 +precision: 106 +divmod_eq225 divmod_eq +571729476815890537807495898829433262695535253052144197 -> 1 0 +precision: 191 +divmod_eq226 divmod_eq 140673167743592469130622871415612 -> 1 0 +precision: 56 +divmod_eq227 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 32 +divmod_eq228 divmod_eq +87126 -> 1 0 +precision: 100 +divmod_eq229 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 184 +divmod_eq230 divmod_eq .401819146433868215217721175861430023423804384071758281011418040464434554232085379970404769305679123077350965434446180694074177529007611507689453466 -> 1 0E-147 +precision: 245 +divmod_eq231 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 198 +divmod_eq232 divmod_eq -.7017373697458102497465426001314924679862485603168188467637098855213188178049181786748697213533179057372871707294611698502847511150891056526222702968164196568 -> 1 -0E-157 +precision: 31 +divmod_eq233 divmod_eq 61966085100.636327894057 -> 1 0E-12 +precision: 72 +divmod_eq234 divmod_eq -7239709312295049030483877347594351553322436 -> 1 -0 +precision: 199 +divmod_eq235 divmod_eq 412124138359409020846410455446750919422 -> 1 0 +precision: 260 +divmod_eq236 divmod_eq -4298917544571885442567138710268645474222448557455235959232502907805020354315072045883000141370214069607920865297349756711267611925038925924102166814846785885277567751566397749233513E775399610 -> 1 -0E+775399610 +precision: 275 +divmod_eq237 divmod_eq 81231829003772602221777612631385555640458375116824910952550618.99398795331124116928691723995592124511972157674477722837756750824920 -> 1 0E-68 +precision: 125 +divmod_eq238 divmod_eq -952129799881562963298100449721310400446413969E-448370081 -> 1 -0E-448370081 +precision: 6 +divmod_eq239 divmod_eq +Inf -> NaN NaN Invalid_operation +precision: 249 +divmod_eq240 divmod_eq +45391007593547390985849432148145038092324610865949894167283510153092363894126826016663763321369997036784780627545079132418935331762535811862924179106049899175698404141384668440747 -> 1 0 +precision: 209 +divmod_eq241 divmod_eq -3804503743374.457875068054519699098467695500166125741142184788585 -> 1 -0E-51 +precision: 55 +divmod_eq242 divmod_eq -496091.71152309e188618407 -> 1 -0E+188618399 +precision: 281 +divmod_eq243 divmod_eq -38900582853176129358645.46219534301522628554205660766831918345 -> 1 -0E-38 +precision: 232 +divmod_eq244 divmod_eq -.380514884804066043092905129319757134456348741858019995753570175143258541080484238860621E-484574797 -> 1 -0E-484574884 +precision: 154 +divmod_eq245 divmod_eq -540259373832671617749779786910777277422476823959599380637940556301107135392374852502689553343 -> 1 -0 +precision: 39 +divmod_eq246 divmod_eq -2919384945540206245 -> 1 -0 +precision: 54 +divmod_eq247 divmod_eq -435703847482202227938497546124e+872312620 -> 1 -0E+872312620 +precision: 111 +divmod_eq248 divmod_eq -.99694179535205745294906793136489714163165035688042526521894746493774646175429622156 -> 1 -0E-83 +precision: 113 +divmod_eq249 divmod_eq 5089812028969170557920406817250318943263965744e-343080668 -> 1 0E-343080668 +precision: 217 +divmod_eq250 divmod_eq -3497056694364872155201365898148929485418245740 -> 1 -0 +precision: 159 +divmod_eq251 divmod_eq .2681 -> 1 0.0000 +precision: 14 +divmod_eq252 divmod_eq -4987773837 -> 1 -0 +precision: 35 +divmod_eq253 divmod_eq +27.70195e144737033 -> 1 0E+144737028 +precision: 134 +divmod_eq254 divmod_eq -793017446123071842163388216879 -> 1 -0 +precision: 141 +divmod_eq255 divmod_eq +604165257037682761058689242365001750017216246219539.60466023442458461735533131419468166529191559422345754e-80614608 -> 1 0E-80614661 +precision: 182 +divmod_eq256 divmod_eq +.73752831171658829698130664449200922342818709902621175996068140723877E469175566 -> 1 0E+469175498 +precision: 270 +divmod_eq257 divmod_eq -69294817174946743030309117372193553064418e448035025 -> 1 -0E+448035025 +precision: 72 +divmod_eq258 divmod_eq .360394060830907817117794816182E510001819 -> 1 0E+510001789 +precision: 253 +divmod_eq259 divmod_eq 12990614273021172468405199287195591916114284480953514565023783561873328138477623059188234000588247801180093374502164060500085597501117556236721778003255244E-512608518 -> 1 0E-512608518 +precision: 42 +divmod_eq260 divmod_eq 41441907298400843835577195201676532e-202617833 -> 1 0E-202617833 +precision: 240 +divmod_eq261 divmod_eq -6489932372626863836896029367443995006873403119900992800144719833349037811070898720812966664229903195818440142001870796751644458207273691310173661010512750921664862556512557119864881062126137771591300 -> 1 -0 +precision: 163 +divmod_eq262 divmod_eq +6261495608772873745620463634509417696103399848283192240929140989254149919519197436387206744537927e-136737872 -> 1 0E-136737872 +precision: 199 +divmod_eq263 divmod_eq 38465392875857315275053422901774553029584123812429902979691946950566172173409514246602063794766787317789505561340290649444687769703029742403665106558300631627028334446 -> 1 0 +precision: 26 +divmod_eq264 divmod_eq +3816853876.41914844334425e+221107871 -> 1 0E+221107857 +precision: 274 +divmod_eq265 divmod_eq -12665735744726552.85769157622233657679271272359976365598897079892729914156002483920440480855744228244118759361716135935699028743631780196153525670730359653845951908270364148309474974217 -> 1 -0E-167 +precision: 156 +divmod_eq266 divmod_eq -944436674043274913557924459631287E-668410384 -> 1 -0E-668410384 +precision: 198 +divmod_eq267 divmod_eq -6014222280848161691989565635136851256147019391354554751040178322992370888511840923986662 -> 1 -0 +precision: 190 +divmod_eq268 divmod_eq -79910022227366428312003331786182688143770222844647503183709428518967151771718868432987472893862765985013113071187151568422922894742844001642375779860161908849366342879912844564192079E-401805923 -> 1 -0E-401805923 +precision: 12 +divmod_eq269 divmod_eq +2.67E+792803716 -> 1 0E+792803714 +precision: 138 +divmod_eq270 divmod_eq 4.8552630 -> 1 0E-7 +precision: 104 +divmod_eq271 divmod_eq -7606111709234747 -> 1 -0 +precision: 278 +divmod_eq272 divmod_eq +126.688278089954985404059E-782958077 -> 1 0E-782958098 +precision: 88 +divmod_eq273 divmod_eq +86612247E+243230505 -> 1 0E+243230505 +precision: 111 +divmod_eq274 divmod_eq +8888400719231085522731165648427607E956797154 -> 1 0E+956797154 +precision: 113 +divmod_eq275 divmod_eq -93199042152897733880678240.6210611235514910 -> 1 -0E-16 +precision: 240 +divmod_eq276 divmod_eq .21023829304046108855044379734718446484234494499283164911641471083234574127514174984600003742064000108641222318692160014450630352392661236262382941120896888562723329702955113509962532629459562060263980980081e-203047195 -> 1 0E-203047401 +precision: 176 +divmod_eq277 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 186 +divmod_eq278 divmod_eq -476863283770282523463109878604154427727751933294836700724712397e369887431 -> 1 -0E+369887431 +precision: 272 +divmod_eq279 divmod_eq -463346776326194917072654304932114812156645129014098131440918185503934262860745604136610440560749561634347492889961136613785606941493540132764053525963656176931649620775464247000370171131337484535985151806039011253373 -> 1 -0 +precision: 50 +divmod_eq280 divmod_eq -678626674246256095793125498861521990923185e+388834833 -> 1 -0E+388834833 +precision: 108 +divmod_eq281 divmod_eq -7.59277651021991131347367053 -> 1 -0E-26 +precision: 192 +divmod_eq282 divmod_eq sNaN619546676563305793589168845713994335413387907344463727395027417573928 -> NaN619546676563305793589168845713994335413387907344463727395027417573928 NaN619546676563305793589168845713994335413387907344463727395027417573928 Invalid_operation +precision: 173 +divmod_eq283 divmod_eq -861707084873714254686786146400875423964843114991 -> 1 -0 +precision: 87 +divmod_eq284 divmod_eq .802530984785827813890391057116947370 -> 1 0E-36 +precision: 299 +divmod_eq285 divmod_eq -903803753668047402052077088109746792933167232983040248427208925553710520093217640951170816718073155296116089886386643872097812152051094998736425956 -> 1 -0 +precision: 222 +divmod_eq286 divmod_eq 810537.31862867 -> 1 0E-8 +precision: 122 +divmod_eq287 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 40 +divmod_eq288 divmod_eq 69001782314.35424818e-230340994 -> 1 0E-230341002 +precision: 88 +divmod_eq289 divmod_eq +552921 -> 1 0 +precision: 236 +divmod_eq290 divmod_eq +.24756465741281511300284909783407353957469294096211985976393134482913116202276425132568440001701268949791835855264161172505947678974149861867892277888250754910511815e+521155075 -> 1 0E+521154911 +precision: 103 +divmod_eq291 divmod_eq -6911338372997289073725678731571486571863792996658970072291094263620547756507994741561107531029E62962848 -> 1 -0E+62962848 +precision: 159 +divmod_eq292 divmod_eq -8682165511953427714807153954553342750050041115130366367317008502671675050733497256587226434522776485324 -> 1 -0 +precision: 40 +divmod_eq293 divmod_eq Inf -> NaN NaN Invalid_operation +precision: 47 +divmod_eq294 divmod_eq -94173001878111506927856651749840295 -> 1 -0 +precision: 153 +divmod_eq295 divmod_eq +813206314996735549185312638710233565538935721711993224368836466053591988916209323896506114990395531825805020659787791626217392953304299999564716287E-46826953 -> 1 0E-46826953 +precision: 171 +divmod_eq296 divmod_eq -4062272430848156783529114865548079466122411294327154484102334459071114786252677649769024609895074932260622205682115570141675822011543231198937455157234470461983E-742145080 -> 1 -0E-742145080 +precision: 80 +divmod_eq297 divmod_eq +66455458362681382313612353018276910841221296690158501982459700894689959128403 -> 1 0 +precision: 179 +divmod_eq298 divmod_eq -16e68173557 -> 1 -0E+68173557 +precision: 53 +divmod_eq299 divmod_eq -71207181607922296892334776156636627205.309276213675 -> 1 -0E-12 +precision: 237 +divmod_eq300 divmod_eq +262939669313886873329363989758265847327E-574153877 -> 1 0E-574153877 +precision: 233 +divmod_eq301 divmod_eq -98123261994660429885685349993633896090723100804362840650987527574652479038300643911646166401722597606E-612981464 -> 1 -0E-612981464 +precision: 92 +divmod_eq302 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 159 +divmod_eq303 divmod_eq -652942670e828596976 -> 1 -0E+828596976 +precision: 113 +divmod_eq304 divmod_eq -752390972306355e-126707509 -> 1 -0E-126707509 +precision: 118 +divmod_eq305 divmod_eq -729173814212386326980099922353811081051576314 -> 1 -0 +precision: 268 +divmod_eq306 divmod_eq -111550382413296597970.e563443854 -> 1 -0E+563443854 +precision: 244 +divmod_eq307 divmod_eq Inf -> NaN NaN Invalid_operation +precision: 7 +divmod_eq308 divmod_eq -.210947 -> 1 -0.000000 +precision: 131 +divmod_eq309 divmod_eq +.33252758865477765940599221579231776706715657995892102221361347828631757098033866645 -> 1 0E-83 +precision: 21 +divmod_eq310 divmod_eq +63 -> 1 0 +precision: 150 +divmod_eq311 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 3 +divmod_eq312 divmod_eq +642e-969290440 -> 1 0E-969290440 +precision: 130 +divmod_eq313 divmod_eq 8529033969223255798909664497534806148598997359654068673124538150497002 -> 1 0 +precision: 269 +divmod_eq314 divmod_eq -816380754272063628472903287481767545913109737756013600470967935793699786600095809942597237830818924341095069183539760347928600295208802435800554505874803701734190647975583182707773783471606383881825890181477025325515758157331397712410089022428359924158703615e-307567946 -> 1 -0E-307567946 +precision: 248 +divmod_eq315 divmod_eq 314540838118451591432246935337179513550039357002500304257637138364373322960093510117060279860301402192362462480087689698461857077358072709645786018764533650954381655674.99211935177108991480944000517958832404419663142733623593 -> 1 0E-56 +precision: 148 +divmod_eq316 divmod_eq -685472420854137765815748.920823846320441842812195795441061172222139343411309 -> 1 -0E-51 +precision: 46 +divmod_eq317 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 126 +divmod_eq318 divmod_eq -41006 -> 1 -0 +precision: 134 +divmod_eq319 divmod_eq 47618223758391166518451028494199577273771383319675869 -> 1 0 +precision: 80 +divmod_eq320 divmod_eq -816480715637 -> 1 -0 +precision: 48 +divmod_eq321 divmod_eq +61558146549768824e-335889290 -> 1 0E-335889290 +precision: 121 +divmod_eq322 divmod_eq .324305393491073801643699911581855444454734970932825369948172071 -> 1 0E-63 +precision: 49 +divmod_eq323 divmod_eq +7459190592867645.79975944 -> 1 0E-8 +precision: 219 +divmod_eq324 divmod_eq -674926013077737893546184791239424080600157454725217152921244131088904886934759157047861681338710575094019098736541527194437352735666 -> 1 -0 +precision: 233 +divmod_eq325 divmod_eq +7377755570233368018898260672677759296060960166147674582700053773620676460214E-418811731 -> 1 0E-418811731 +precision: 103 +divmod_eq326 divmod_eq +.3277166134234131842738157606634e-930849436 -> 1 0E-930849467 +precision: 198 +divmod_eq327 divmod_eq +Inf -> NaN NaN Invalid_operation +precision: 51 +divmod_eq328 divmod_eq +976171162527535698247390765939750091644993469067E-422480066 -> 1 0E-422480066 +precision: 28 +divmod_eq329 divmod_eq -837399302 -> 1 -0 +precision: 64 +divmod_eq330 divmod_eq 931 -> 1 0 +precision: 43 +divmod_eq331 divmod_eq -3504722789645875179254875175394E+872214912 -> 1 -0E+872214912 +precision: 229 +divmod_eq332 divmod_eq +sNaN4152060737202136144314624530584159113747 -> NaN4152060737202136144314624530584159113747 NaN4152060737202136144314624530584159113747 Invalid_operation +precision: 198 +divmod_eq333 divmod_eq +.885235739411369550820263686510823813961392601681832172256723840332483267 -> 1 0E-72 +precision: 242 +divmod_eq334 divmod_eq -3963158773811298036687967859878464266520228277309532638986459515095797899261507544883051 -> 1 -0 +precision: 260 +divmod_eq335 divmod_eq -156508623085642348756016827322829432764818851958001036919E262012608 -> 1 -0E+262012608 +precision: 224 +divmod_eq336 divmod_eq -6543517004170311793546071870355877457723805211271532299592145258736782506024302798043620507698164732785658414226950933273056222985360847860101602148016571148704834232570784597 -> 1 -0 +precision: 225 +divmod_eq337 divmod_eq +203738910022757394016772703699295096244278411285917339542029.4794735764314115294862296575221726230839536471221741142366031960548428352859941280163280122484303010723195370246925497282418858255796162464952107043250 -> 1 0E-151 +precision: 138 +divmod_eq338 divmod_eq -409894357437526513334074533718895631761004134990269291670659054889333537730234956082522503232513534485294130448143034101962 -> 1 -0 +precision: 109 +divmod_eq339 divmod_eq 80494402768990854006540158788996712385823187685646211960054950806762366908841818978021084429042699e-198062577 -> 1 0E-198062577 +precision: 46 +divmod_eq340 divmod_eq .3560724730087360243989 -> 1 0E-22 +precision: 62 +divmod_eq341 divmod_eq +8.18517549E424818831 -> 1 0E+424818823 +precision: 280 +divmod_eq342 divmod_eq +610027737999659490833503400155160907799347541599735882470382326608451929070372613581125993818032659130220772912537828120247886161225061088928887023690258741141245799458976396736738925 -> 1 0 +precision: 45 +divmod_eq343 divmod_eq -.49e-723613403 -> 1 -0E-723613405 +precision: 28 +divmod_eq344 divmod_eq 488146527599046573 -> 1 0 +precision: 290 +divmod_eq345 divmod_eq +.88710016007956796980408148871613078724059388273353295275672344763569450865128775465619954758588093446294661548468331331431029191394869981598651530447683e+920561829 -> 1 0E+920561677 +precision: 279 +divmod_eq346 divmod_eq +56200052385704999062882491196729893581857214992098781491.781718577546370556812168726711398402117205906536665528752774428763201486138654952101500659780376e773314102 -> 1 0E+773314006 +precision: 249 +divmod_eq347 divmod_eq -.66590379069859416146801045448650472885580130089096470846368070072024233857027335577777412778111879860607685797085241168155851096087793698391728597366002954207953411695043888109545691788170845659165753903586626974751040607999722725586 -> 1 -0E-233 +precision: 177 +divmod_eq348 divmod_eq -301305360577111978825109331980770622109138518091915685799226051222394201233324158544220464963288711365059349522460164930364590279416483681931368907464552895774.68 -> 1 -0.00 +precision: 242 +divmod_eq349 divmod_eq -.89069388310409880067436315269544433810181647859144285295666802440201837752849819426559177199 -> 1 -0E-92 +precision: 162 +divmod_eq350 divmod_eq 4005887.86914203345804597361387212297086961303744607417524741864772561506 -> 1 0E-65 +precision: 144 +divmod_eq351 divmod_eq +87.6809 -> 1 0.0000 +precision: 80 +divmod_eq352 divmod_eq -9820638601712818 -> 1 -0 +precision: 157 +divmod_eq353 divmod_eq -.74681722652673810933067996779349098975017665323137459259323110738454404225391622366407640808959713429500667700524192452827352507836760047446852 -> 1 -0E-143 +precision: 53 +divmod_eq354 divmod_eq -8817046 -> 1 -0 +precision: 274 +divmod_eq355 divmod_eq -45309634177393925589656043045478368589109.1334411002150315020942453389040797740494583 -> 1 -0E-43 +precision: 159 +divmod_eq356 divmod_eq -998300914155867783923365103607820057e-139357218 -> 1 -0E-139357218 +precision: 75 +divmod_eq357 divmod_eq -6346839436 -> 1 -0 +precision: 240 +divmod_eq358 divmod_eq +38431357177512911937217717836244780932114838631711199485889365789021 -> 1 0 +precision: 212 +divmod_eq359 divmod_eq -79885510202073328545126094851287625536441848074365579241920838656559446593162208372939398937766873683327777055E-4714068 -> 1 -0E-4714068 +precision: 32 +divmod_eq360 divmod_eq -25679490222380420698869731e-647254822 -> 1 -0E-647254822 +precision: 93 +divmod_eq361 divmod_eq 58889361939084323123414507469000265142003450428883831227522471976009041182 -> 1 0 +precision: 102 +divmod_eq362 divmod_eq -.688818671592909304028199863605314750879655139231130873216714950733188246079776E-694730108 -> 1 -0E-694730186 +precision: 90 +divmod_eq363 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 212 +divmod_eq364 divmod_eq -536503933205792.5138608794168801225805421365162513e+535107346 -> 1 -0E+535107312 +precision: 58 +divmod_eq365 divmod_eq 40912208785 -> 1 0 +precision: 179 +divmod_eq366 divmod_eq -68628134404402696913115209307763747041710160100300956389103740919728909281765301508843985630880E72459491 -> 1 -0E+72459491 +precision: 150 +divmod_eq367 divmod_eq 5134.2568841 -> 1 0E-7 +precision: 3 +divmod_eq368 divmod_eq -8. -> 1 -0 +precision: 177 +divmod_eq369 divmod_eq 27421228704036513910667506431996749127626839128457215989735117 -> 1 0 +precision: 130 +divmod_eq370 divmod_eq 104985869965944066.1991464735938758871421534376 -> 1 0E-28 +precision: 200 +divmod_eq371 divmod_eq +21112035632322733468452656635135053294662909849992528449974646415175895416784924430933835794226000762335900744080828578353417751217217043720432571636879395353327028061722318507040872061986726828E794526880 -> 1 0E+794526880 +precision: 118 +divmod_eq372 divmod_eq .5054441947130525035248383296419E404271307 -> 1 0E+404271276 +precision: 120 +divmod_eq373 divmod_eq +sNaN -> NaN NaN Invalid_operation +precision: 271 +divmod_eq374 divmod_eq .673985817185337071822038e+186409101 -> 1 0E+186409077 +precision: 143 +divmod_eq375 divmod_eq +1525776440068593552466990335793785624275501951481884929702158754054496219361308124690445389691363665004538510608585552346465816665971243 -> 1 0 +precision: 133 +divmod_eq376 divmod_eq -8543976202819628993150212269009E902768398 -> 1 -0E+902768398 +precision: 160 +divmod_eq377 divmod_eq -4760219335826528817567582838786776067964907978656437353042275E748145783 -> 1 -0E+748145783 +precision: 44 +divmod_eq378 divmod_eq -.877920498295e-831042934 -> 1 -0E-831042946 +precision: 277 +divmod_eq379 divmod_eq -3324334999787190680181324277268888637315192331201336273730985238608420744754749358418787484299908304508738937949967034605181124250949364172404966149724715421654 -> 1 -0 +precision: 49 +divmod_eq380 divmod_eq +35740161636934 -> 1 0 +precision: 197 +divmod_eq381 divmod_eq +92617329659803174747922083494106906216423515271914.38231417826848642130 -> 1 0E-20 +precision: 79 +divmod_eq382 divmod_eq -75146058596485722433968192174097723626664E-983805215 -> 1 -0E-983805215 +precision: 229 +divmod_eq383 divmod_eq +61313579996709927063188476150299611924316342142832432339243886680013935170675469362128959335482161020276536556366505611420049397012234160441782037633835267761358754557854308017719512647217516304373903319060 -> 1 0 +precision: 299 +divmod_eq384 divmod_eq -410246 -> 1 -0 +precision: 51 +divmod_eq385 divmod_eq -606106940e738880496 -> 1 -0E+738880496 +precision: 245 +divmod_eq386 divmod_eq 154513898242833235789282903252431927598254592108868575119384381366932440907327475107061919012035669550127237378420277476934990433249117692457870585814184378418776791353203987642993931485945967996920877457008567672871949711621973097073 -> 1 0 +precision: 188 +divmod_eq387 divmod_eq -594034360457847087816937598257997060257603280324178551649077454990720774466777443701491868075336639676866886108141042101444221213740625007296641524619331.72644900490235298203557778021547E-744211432 -> 1 -0E-744211464 +precision: 116 +divmod_eq388 divmod_eq -857970919579711008044557008470716125827575891430099591630106073447380373570734047227474733e-165028324 -> 1 -0E-165028324 +precision: 283 +divmod_eq389 divmod_eq -.15864202961574127389503584876442964413600143217145706 -> 1 -0E-53 +precision: 98 +divmod_eq390 divmod_eq -3789459316938929520019224834879405334243896026383121180600918519184541387184493 -> 1 -0 +precision: 59 +divmod_eq391 divmod_eq -63941.7760 -> 1 -0.0000 +precision: 71 +divmod_eq392 divmod_eq 90397326641528877.22 -> 1 0.00 +precision: 273 +divmod_eq393 divmod_eq +42025319972111.95E-359189882 -> 1 0E-359189884 +precision: 173 +divmod_eq394 divmod_eq 87424798180698219774358335662465473406 -> 1 0 +precision: 199 +divmod_eq395 divmod_eq 39205379457912787096081389492512512104502373398591829874574615136621225447228011042207599229823861139093598342880033633395495527796077939916081155297880793375568893e-653908914 -> 1 0E-653908914 +precision: 220 +divmod_eq396 divmod_eq -9146981017563922867993602352588365830636958111.82205098726697180038465205132274756514148921451069271778089199238633960493173809368577372164946009651778902146164902219793936324103685748382348681732139322998 -> 1 -0E-158 +precision: 134 +divmod_eq397 divmod_eq .1731695894970410406160752964184483815261755829989811437797582225559396993930421706225941841224459258921495284276729684921880E-12592075 -> 1 0E-12592199 +precision: 21 +divmod_eq398 divmod_eq +125851264588288e+730011370 -> 1 0E+730011370 +precision: 227 +divmod_eq399 divmod_eq +94593998225503171379726905283202128213299.9435350942364108899333 -> 1 0E-22 +precision: 152 +divmod_eq400 divmod_eq +67538152461717505904925656309960926791069377141326526796750157801726999327891729317519089058811138091388922779682202147024755 -> 1 0 +precision: 115 +divmod_eq401 divmod_eq -3021348116198451541306378124161006440381079231328968314564834272912954606344354167219041026228485168 -> 1 -0 +precision: 12 +divmod_eq402 divmod_eq 215.5E-261474745 -> 1 0E-261474746 +precision: 102 +divmod_eq403 divmod_eq +797492929183595571568688966617802601179704869637218017873755065193499290175918328218455665920027e+977977035 -> 1 0E+977977035 +precision: 136 +divmod_eq404 divmod_eq 1178772556975498997228387938412811896833650081956385249109913048907.28021794967915337926577925412362667164053479703772564850 -> 1 0E-56 +precision: 186 +divmod_eq405 divmod_eq Inf -> NaN NaN Invalid_operation +precision: 128 +divmod_eq406 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 215 +divmod_eq407 divmod_eq -6687423395142231494344340026734473333565367217982407160618278508051448207777914131901385658444727478796118540939362368322534674243499371393982034124574803646540504262368373634692390797e835983000 -> 1 -0E+835983000 +precision: 161 +divmod_eq408 divmod_eq -68576209.85 -> 1 -0.00 +precision: 180 +divmod_eq409 divmod_eq +3223763969010265240649650988394470377104916983007862508483483870846676194835.6309148126911445615104923893398941423717160086141031105138016592555342988679945033039943470540817535044e+379850336 -> 1 0E+379850233 +precision: 126 +divmod_eq410 divmod_eq +3498.50848 -> 1 0.00000 +precision: 20 +divmod_eq411 divmod_eq 2016.24298 -> 1 0.00000 +precision: 50 +divmod_eq412 divmod_eq -654779597004975093159516714910672568455e942648888 -> 1 -0E+942648888 +precision: 245 +divmod_eq413 divmod_eq -86594378792660089738837537865732935142020453.180181178847022693059462570504345825835921696291076813e276754776 -> 1 -0E+276754722 +precision: 185 +divmod_eq414 divmod_eq -.8410025518982276507821162032976437571474936784207322943420401369049650149406718405153933533545967341947041605764092 -> 1 -0E-115 +precision: 299 +divmod_eq415 divmod_eq -95634.599416677287964556368995784389952176838663997393365923286547794999022479496676025586670136259538941279514639554550993606023991548578278817905486945833550E131940412 -> 1 -0E+131940259 +precision: 263 +divmod_eq416 divmod_eq -233644129248346837162717993538.418322901199592833023839060724777342128610510922249960288637786127248198259e145857081 -> 1 -0E+145857006 +precision: 263 +divmod_eq417 divmod_eq -2.9883637841902467810673905582689533276140665222456762332921 -> 1 -0E-58 +precision: 289 +divmod_eq418 divmod_eq 265021651163657645308471686683829777325372818958537294301277769378836130797043639928183493713546.7765821721659429 -> 1 0E-16 +precision: 89 +divmod_eq419 divmod_eq +45875146918724022274236466725233163223123E+575958754 -> 1 0E+575958754 +precision: 99 +divmod_eq420 divmod_eq 53641371674233642887342755902.92118867752551e-694735761 -> 1 0E-694735775 +precision: 22 +divmod_eq421 divmod_eq +.620056180542618489124E-777642248 -> 1 0E-777642269 +precision: 91 +divmod_eq422 divmod_eq +Inf -> NaN NaN Invalid_operation +precision: 226 +divmod_eq423 divmod_eq -63852965.94072432036102986047796359646632911152717886198195396975180022149103866855295332e-59444147 -> 1 -0E-59444227 +precision: 293 +divmod_eq424 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 239 +divmod_eq425 divmod_eq -52566986254574519122039551705706813571.97819575050115907395057119759126916723387590634511379144220360276505395700746888244313846321E+90481938 -> 1 -0E+90481846 +precision: 202 +divmod_eq426 divmod_eq 46764073311688230245375630098897674910812325227296978722854565339001561598054220143248724540003756215424697028339550029559827825351511318856842978697699846600848515269 -> 1 0 +precision: 137 +divmod_eq427 divmod_eq +6771352479646683662582264745243068491015131139509441725006630879153468469928691412530449130004329786618955880 -> 1 0 +precision: 123 +divmod_eq428 divmod_eq 21823404978953591097142868915808223616606986.396527917999820 -> 1 0E-15 +precision: 196 +divmod_eq429 divmod_eq 88896352290701645815722888916844568469.984426573689723344100303457452198014804780904410793644255463843495 -> 1 0E-66 +precision: 3 +divmod_eq430 divmod_eq 63.5E-242983760 -> 1 0E-242983761 +precision: 46 +divmod_eq431 divmod_eq +382137666974004596733298877594619244 -> 1 0 +precision: 74 +divmod_eq432 divmod_eq -193370112961645039.518197251945 -> 1 -0E-12 +precision: 196 +divmod_eq433 divmod_eq +Inf -> NaN NaN Invalid_operation +precision: 181 +divmod_eq434 divmod_eq +20615183815398032276714008862077053734177636419555972399425694205864314127048508187739602977216499450382550532211429756640329560909321948928006E-976074493 -> 1 0E-976074493 +precision: 228 +divmod_eq435 divmod_eq +9585936870102042201677066635265621313262599893674607572643607236559932.8384075500256698965085348877133761649296795940550632745445077294234919432452148828544389519227797571822975889805842498416178887749041 -> 1 0E-133 +precision: 226 +divmod_eq436 divmod_eq -865192150680034480320864117450955946808002681554936928619512774343307430989534247755181736041949928384908969510641388876638.1817691903763525431322305646397347697359 -> 1 -0E-40 +precision: 100 +divmod_eq437 divmod_eq -94942272544142139340201468202559086528752151 -> 1 -0 +precision: 249 +divmod_eq438 divmod_eq -7637201344327736676148580812596174864903725968025783639559528615636758138535451968812841601862098262228085732550821.88009445230099374318110026150486777611701760691201010607811475061268 -> 1 -0E-68 +precision: 118 +divmod_eq439 divmod_eq +6491871289865891277815573838274901622686190248552094007549380059308904007 -> 1 0 +precision: 18 +divmod_eq440 divmod_eq -7497 -> 1 -0 +precision: 130 +divmod_eq441 divmod_eq -3671450732275416171096045715420649298128924724236994848594957318339359.E-234554726 -> 1 -0E-234554726 +precision: 255 +divmod_eq442 divmod_eq 4901E-194624870 -> 1 0E-194624870 +precision: 267 +divmod_eq443 divmod_eq -904407948048951453730797403974479639915821674459102139691761352415000104988272143906427419477771125874917241598970962638205996708325e+465695482 -> 1 -0E+465695482 +precision: 219 +divmod_eq444 divmod_eq -295945049892540131009363599364696871487668744844901957144620470476009655e703832704 -> 1 -0E+703832704 +precision: 246 +divmod_eq445 divmod_eq +1663675626282255722795429664437986853752684761074963497859 -> 1 0 +precision: 42 +divmod_eq446 divmod_eq -4628733077603.5410632750e+371578982 -> 1 -0E+371578972 +precision: 67 +divmod_eq447 divmod_eq -99550160014606304147020128469753921426456916152168956010831518014 -> 1 -0 +precision: 148 +divmod_eq448 divmod_eq -9812443144551981074209958097289721738242526779444909975207585295269882278435065.83736612331838427363767632941240774511490397 -> 1 -0E-44 +precision: 262 +divmod_eq449 divmod_eq -39000785336130439813689735519751973477239005576968824131253516711484853118867505980363929779592094890438732772115112112366151970 -> 1 -0 +precision: 258 +divmod_eq450 divmod_eq +7358920452524134838568149898704339967193349870806211329421481219405146598685.78845517371155586685587590864873853421152628816041992393569029251626904757E-860103391 -> 1 0E-860103465 +precision: 35 +divmod_eq451 divmod_eq 30161926544570937159 -> 1 0 +precision: 244 +divmod_eq452 divmod_eq +4624420780348137720463044627706.67032112706952228367815849 -> 1 0E-26 +precision: 32 +divmod_eq453 divmod_eq +19121410746633173.89589593E-543793506 -> 1 0E-543793514 +precision: 228 +divmod_eq454 divmod_eq +34972399328348504855077044124773355240194512742167518769659590423615481 -> 1 0 +precision: 90 +divmod_eq455 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 7 +divmod_eq456 divmod_eq +463.6 -> 1 0.0 +precision: 289 +divmod_eq457 divmod_eq +7111266734227836245360680073200478981201686740009606490311141701027277306887767740874441613101149453596150354979983171305525702506080134934467525638830900012475861011370112280194379013507169278552792391286346002818655658525074 -> 1 0 +precision: 65 +divmod_eq458 divmod_eq +32.758613812981501617538605868719547109693141e+162116484 -> 1 0E+162116442 +precision: 29 +divmod_eq459 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 148 +divmod_eq460 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 71 +divmod_eq461 divmod_eq 839501209.0 -> 1 0.0 +precision: 279 +divmod_eq462 divmod_eq 4156444312114896013968630479830087218264875789303041678587552558629992459643433120553821407015494900738661121955020734594198411725504232 -> 1 0 +precision: 80 +divmod_eq463 divmod_eq +87179587352038136063072293022558233193778541898035750847954709808090600730 -> 1 0 +precision: 279 +divmod_eq464 divmod_eq -NaN -> -NaN -NaN +precision: 22 +divmod_eq465 divmod_eq -8.38535 -> 1 -0.00000 +precision: 257 +divmod_eq466 divmod_eq +sNaN -> NaN NaN Invalid_operation +precision: 106 +divmod_eq467 divmod_eq 87198195253083035634080824374303067097913629311565862496905096990799598211461025096906 -> 1 0 +precision: 212 +divmod_eq468 divmod_eq -197. -> 1 -0 +precision: 65 +divmod_eq469 divmod_eq -sNaN -> -NaN -NaN Invalid_operation +precision: 162 +divmod_eq470 divmod_eq -7187130307160040082207800462170577827633576514.44868174193195 -> 1 -0E-14 +precision: 41 +divmod_eq471 divmod_eq -75750056 -> 1 -0 +precision: 144 +divmod_eq472 divmod_eq -65445E693857346 -> 1 -0E+693857346 +precision: 123 +divmod_eq473 divmod_eq -.86186047790142848067949773063197266251281141370625261490855635081442440595770235 -> 1 -0E-80 +precision: 19 +divmod_eq474 divmod_eq 14626 -> 1 0 +precision: 264 +divmod_eq475 divmod_eq -sNaN -> -NaN -NaN Invalid_operation +precision: 158 +divmod_eq476 divmod_eq -.748274668077823991461415750 -> 1 -0E-27 +precision: 274 +divmod_eq477 divmod_eq Inf -> NaN NaN Invalid_operation +precision: 16 +divmod_eq478 divmod_eq 277198294887. -> 1 0 +precision: 26 +divmod_eq479 divmod_eq +42467305612 -> 1 0 +precision: 288 +divmod_eq480 divmod_eq -608051667135769921609875740350485118589739596612315313932498656242559524219710846921541709352131284838264964715385902235580878291266870904134060778515182567586119683011568622808610484356234206 -> 1 -0 +precision: 158 +divmod_eq481 divmod_eq +155633042210420338001359932709878055108723099291977002943.109375569173009519273384828526530699480448 -> 1 0E-42 +precision: 166 +divmod_eq482 divmod_eq 6664092816866928120.4916408596323973316854543686214283389877515948840368711263819642521524179863917258844E-152648825 -> 1 0E-152648910 +precision: 47 +divmod_eq483 divmod_eq -293763334976451744965998815434333623e-682159360 -> 1 -0E-682159360 +precision: 299 +divmod_eq484 divmod_eq -9505002555305743902548943324887188819285082574369157359091657515246078872662168535837547290537949.69288212409835739017387338872555921824808145579723766751826215819873065582998766106094438192565212188721496933564547 -> 1 -0E-116 +precision: 58 +divmod_eq485 divmod_eq +8839751458908E-94896988 -> 1 0E-94896988 +precision: 53 +divmod_eq486 divmod_eq .677124262494 -> 1 0E-12 +precision: 263 +divmod_eq487 divmod_eq +79059962052601794207173349634630176025720454624031641213930716767336639217989843714934372071480259566689578225820706614119458410150009066977680466643386880298118865305257170472504632742724647623776279661409e105034407 -> 1 0E+105034407 +precision: 32 +divmod_eq488 divmod_eq 413593595607819264800818362890E-287351272 -> 1 0E-287351272 +precision: 262 +divmod_eq489 divmod_eq 3998549453076813015149003897575058e+414749686 -> 1 0E+414749686 +precision: 88 +divmod_eq490 divmod_eq +19079.587833E+788892578 -> 1 0E+788892572 +precision: 77 +divmod_eq491 divmod_eq 59592552796975383.817338639 -> 1 0E-9 +precision: 90 +divmod_eq492 divmod_eq 3265053971877486986289549449194641 -> 1 0 +precision: 83 +divmod_eq493 divmod_eq 2520033380807233537208854141377683336693886359402027510339683124463054835 -> 1 0 +precision: 227 +divmod_eq494 divmod_eq +Inf -> NaN NaN Invalid_operation +precision: 103 +divmod_eq495 divmod_eq +624704629398610022217666309020254328484001820437352028803378799486101637441859294228289732.813477 -> 1 0.000000 +precision: 69 +divmod_eq496 divmod_eq -6790667.798446744 -> 1 -0E-9 +precision: 159 +divmod_eq497 divmod_eq -17082312810782035246497064059743770903154199953585422246649468501175195947844393274729043605040190168257418363109918785738169171334761 -> 1 -0 +precision: 20 +divmod_eq498 divmod_eq +695.727E+897544624 -> 1 0E+897544621 +precision: 118 +divmod_eq499 divmod_eq -8718032724305360185042602058929924259428835847752717094789405060 -> 1 -0 +precision: 37 +divmod_eq500 divmod_eq -602972340252772e-357892488 -> 1 -0E-357892488 +precision: 208 +divmod_eq501 divmod_eq -76163159465303995968695036645044495856356335552.9901154461858253336611676996249349249198 -> 1 -0E-40 +precision: 212 +divmod_eq502 divmod_eq +.3680268109640594122967121413986835980608690625271801918358808522992931757452528070997234850151158505336954672993024965407519487264448 -> 1 0E-133 +precision: 48 +divmod_eq503 divmod_eq -38777481445.38546663858717973462 -> 1 -0E-20 +precision: 25 +divmod_eq504 divmod_eq -.32 -> 1 -0.00 +precision: 162 +divmod_eq505 divmod_eq +9486566443988112046478347658062391545175397195561851e-951968344 -> 1 0E-951968344 +precision: 119 +divmod_eq506 divmod_eq 969642.39896795395622559567372027611509376637486426298418550652561303344548452228444695933e959680167 -> 1 0E+959680084 +precision: 279 +divmod_eq507 divmod_eq 789570917773528249435799198482002366612.182350714776779207648810 -> 1 0E-24 +precision: 13 +divmod_eq508 divmod_eq -193686 -> 1 -0 +precision: 215 +divmod_eq509 divmod_eq 20503284239769631868433936259087101921041773564191505027685393654164596606378262806906331332678683383103637158947243198 -> 1 0 +precision: 68 +divmod_eq510 divmod_eq +503046407860607819633103767917822774 -> 1 0 +precision: 98 +divmod_eq511 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 41 +divmod_eq512 divmod_eq -4450844334.52005 -> 1 -0.00000 +precision: 224 +divmod_eq513 divmod_eq 57174676411665294301310080309173812709496172346457158569682760905785978136791218723916083250225456169646412131439522788499102891284431556735257162E-254302617 -> 1 0E-254302617 +precision: 290 +divmod_eq514 divmod_eq 22359498331278487371154423160191431175177844345273905769911425552409210117315412632482294634730061338475190535873750720592441521245434109652852025181616068041866956153782300452901065084487131379873488466459827319057607307900391621468548559094343297822024633521347031774161 -> 1 0 +precision: 173 +divmod_eq515 divmod_eq -15756340549094185833447009386306499682618414875743261368035605949596753533502599959922121883.E-167912311 -> 1 -0E-167912311 +precision: 291 +divmod_eq516 divmod_eq +812107824264559212841705086338438800 -> 1 0 +precision: 227 +divmod_eq517 divmod_eq -6621059127520271475766297644129249491648190877933658983051827564762955290439666811903456301565359118299484034354896033183110450465282341071786264460740156930580174712701016086136006908736016015124416186476 -> 1 -0 +precision: 74 +divmod_eq518 divmod_eq -76645569435711.468574343E870258484 -> 1 -0E+870258475 +precision: 288 +divmod_eq519 divmod_eq -4841245117975284473280254813134828719145810370239637045341198306365848146300384608652233274094255029107554448965377767413655609746181935096E244024068 -> 1 -0E+244024068 +precision: 44 +divmod_eq520 divmod_eq -73107965305356430e+690589557 -> 1 -0E+690589557 +precision: 131 +divmod_eq521 divmod_eq -864317913086124244546724768596877369005167700180182762420048708177229017492145869011861597050869724632 -> 1 -0 +precision: 129 +divmod_eq522 divmod_eq +39722481350e-808381749 -> 1 0E-808381749 +precision: 236 +divmod_eq523 divmod_eq -8545862838795734275325 -> 1 -0 +precision: 47 +divmod_eq524 divmod_eq -689638646285406730271713 -> 1 -0 +precision: 176 +divmod_eq525 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 264 +divmod_eq526 divmod_eq .654817573018216518071695928830920899542657113979594197020569740238067660276582001237132497949327776951333463936034963075627414579287014765463349923021658918622030150725021023155644216553829721723e-517725901 -> 1 0E-517726096 +precision: 284 +divmod_eq527 divmod_eq +.3872604254127092033705340152347101985114076034751965396234228412409957528751025935016883227927370654339730766035293581423582779926221694564154660251494240102157221951707189988332464158830490277793693524582661261100018487746984523 -> 1 0E-229 +precision: 56 +divmod_eq528 divmod_eq sNaN961430659500649003027303237543257015198633281764083229213384050797282460894989317655 -> NaN43257015198633281764083229213384050797282460894989317655 NaN43257015198633281764083229213384050797282460894989317655 Invalid_operation +precision: 225 +divmod_eq529 divmod_eq -8432401840705767896227477916971765138137780734687525191 -> 1 -0 +precision: 173 +divmod_eq530 divmod_eq 65165040003179746618208247905699196063923148510143431570728554330906154033023500191402462118630774961036306342296277853624.51736747947968114185782618576373876563562766 -> 1 0E-44 +precision: 177 +divmod_eq531 divmod_eq 83681311036585925355618727949880434366756202326502705584818912.400873150718700265239049185132441 -> 1 0E-33 +precision: 141 +divmod_eq532 divmod_eq -371493393289469.620661645651119509096225903691168091698046366E-441671948 -> 1 -0E-441671993 +precision: 17 +divmod_eq533 divmod_eq 9954473011. -> 1 0 +precision: 47 +divmod_eq534 divmod_eq -1381977516476212503441810109342781E-892795596 -> 1 -0E-892795596 +precision: 186 +divmod_eq535 divmod_eq -6.34166992382333698408481032522602872708211443823059678504354034101718534858e+418100333 -> 1 -0E+418100259 +precision: 223 +divmod_eq536 divmod_eq -.72599225297033390298296675982799917974946284656161113882690646344617329960487494750898927e-98850640 -> 1 -0E-98850729 +precision: 170 +divmod_eq537 divmod_eq -96986136434938783942736284631584043683049156 -> 1 -0 +precision: 259 +divmod_eq538 divmod_eq -190467185056385246289884224855317848169684051945255771384488790621258284547219561287165639980161843580422597495575589384044872106719358105817592145606760759782327788443659340646957313684273834925967803792890105171 -> 1 -0 +precision: 267 +divmod_eq539 divmod_eq -7901619302493857521969257328638263817590698611674334734333500228829216450460992683103473307215076934709386376476794159721468121009126832125872012061143672729213502380344152668334896187565457095 -> 1 -0 +precision: 260 +divmod_eq540 divmod_eq 60131508966041854631527559344880649737512447668537526910983049764101225879346409446678241015736811203266817120084749943655254646486107489314634030891941907140525702214768415822472757177531094115978869630065104765778987e+267040201 -> 1 0E+267040201 +precision: 13 +divmod_eq541 divmod_eq +53367842 -> 1 0 +precision: 33 +divmod_eq542 divmod_eq +Inf -> NaN NaN Invalid_operation +precision: 272 +divmod_eq543 divmod_eq +.5708017298630578350292872877470050654716114174638850346545989446837360673103907463610958707353434522797660052814488478888233382726690507122063 -> 1 0E-142 +precision: 99 +divmod_eq544 divmod_eq +53765704824.9650712110743 -> 1 0E-13 +precision: 171 +divmod_eq545 divmod_eq +217922111128228958224152999486448175047409832931016392805757079572981617860569688340905244939942342256267065882807553727067738568968290822081313635376187794137264972955 -> 1 0 +precision: 85 +divmod_eq546 divmod_eq -4277556188895385205231525056865526917226137858239180763209580679902245071625086323846e83044315 -> 1 -0E+83044315 +precision: 193 +divmod_eq547 divmod_eq .24324643566195501475158030155935825378715515527439283161207790004979683931778761052436843092319927280314916180949098259950647563061593345563951854733767585882175604319e-29259246 -> 1 0E-29259413 +precision: 177 +divmod_eq548 divmod_eq NaN -> NaN NaN +precision: 248 +divmod_eq549 divmod_eq .988715385993486305074978355569182186824055265312180517406342930629014658618752246526702782207630281652333657228032523305139207748059242620334633041879676215156013720967684912202888660354843841220281921300537625511530886612732337427 -> 1 0E-231 +precision: 100 +divmod_eq550 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 275 +divmod_eq551 divmod_eq -26140954239807870296248820499731344306413456993706731260977808408631199871.320076410326698005739173537 -> 1 -0E-27 +precision: 80 +divmod_eq552 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 78 +divmod_eq553 divmod_eq +365 -> 1 0 +precision: 156 +divmod_eq554 divmod_eq -.1703337641265451440324574154155140550612153542640056339533653092667195102091848376893937487322255296699639736451472377477109147974347584938380360714102090 -> 1 -0E-154 +precision: 289 +divmod_eq555 divmod_eq -sNaN -> -NaN -NaN Invalid_operation +precision: 184 +divmod_eq556 divmod_eq 1071958036205665584096120380333919568758037689590192734574541102126065480929712215 -> 1 0 +precision: 87 +divmod_eq557 divmod_eq -.974157974661702083206003116837577673717247947740393961989225e-686231621 -> 1 -0E-686231681 +precision: 226 +divmod_eq558 divmod_eq -6704911610068005949208376488235424390283525743875674590556560894544814461965835316423971327898693001340302776461421807920607907067924180088415010252290115163393691939623E173115428 -> 1 -0E+173115428 +precision: 168 +divmod_eq559 divmod_eq -645624767021999426552361271686390111690038103156381654962645340248521854342693980877062E+64537787 -> 1 -0E+64537787 +precision: 272 +divmod_eq560 divmod_eq -213983230634859161142794521532642015319969716492145525113073413209755479358820988408828770288702861276278189602955340000205017638901047193829265153126464924634443566988850933081879323882019490082385446376948937905061131198893093472152871585586492283475865 -> 1 -0 +precision: 126 +divmod_eq561 divmod_eq +666553789999059821034020138728621947610565830111665670303185104284615583416265854475205243619146539263725053226361548746782E-479128693 -> 1 0E-479128693 +precision: 71 +divmod_eq562 divmod_eq +6321750818353982059508484240198908973698342194.10460177 -> 1 0E-8 +precision: 250 +divmod_eq563 divmod_eq -384863230727867964106915776138538875396371453409665 -> 1 -0 +precision: 162 +divmod_eq564 divmod_eq -50123114750152673123263010057968337473928274420990872625184781198.6025891133111111130720562162500104729723613010863556260086278236127534582621437386622563 -> 1 -0E-88 +precision: 290 +divmod_eq565 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 90 +divmod_eq566 divmod_eq -377441331176481650631887619662318 -> 1 -0 +precision: 7 +divmod_eq567 divmod_eq -1.1E341467129 -> 1 -0E+341467128 +precision: 105 +divmod_eq568 divmod_eq 38409276120515.654245860145736588390075133334011813611575665367002518 -> 1 0E-54 +precision: 291 +divmod_eq569 divmod_eq -9859443699.770277965835607037039846508455334001094983718072387594267051229130457228543911460129772 -> 1 -0E-87 +precision: 52 +divmod_eq570 divmod_eq 48856987284925e-734545909 -> 1 0E-734545909 +precision: 228 +divmod_eq571 divmod_eq -8614925881064.93738698951271228299472033616779389910500116682982519080632859476206477794798598445594 -> 1 -0E-86 +precision: 152 +divmod_eq572 divmod_eq 312492546446446382745394692837897450886325414230622788354886530031452465791211337101970963450376034090086951398927124700892936877209e182934930 -> 1 0E+182934930 +precision: 81 +divmod_eq573 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 177 +divmod_eq574 divmod_eq +3782832931274761934191224254051877090511311095858945128283237031040377240716908640057963022263957680414561147.995941009748e+152109631 -> 1 0E+152109619 +precision: 56 +divmod_eq575 divmod_eq +NaN45173224542048962961758368338427 -> NaN45173224542048962961758368338427 NaN45173224542048962961758368338427 +precision: 153 +divmod_eq576 divmod_eq -40460232.5 -> 1 -0.0 +precision: 246 +divmod_eq577 divmod_eq 8576088168496984297931026455383813689654852996547422403366745257276692937028005934672630037793E+303453357 -> 1 0E+303453357 +precision: 82 +divmod_eq578 divmod_eq .255979533E-146595647 -> 1 0E-146595656 +precision: 120 +divmod_eq579 divmod_eq .2110 -> 1 0.0000 +precision: 17 +divmod_eq580 divmod_eq -98.38623885 -> 1 -0E-8 +precision: 237 +divmod_eq581 divmod_eq sNaN -> NaN NaN Invalid_operation +precision: 55 +divmod_eq582 divmod_eq 105239925990022247589841167605821736257684466133068977 -> 1 0 +precision: 136 +divmod_eq583 divmod_eq +881454030745968009002500250086051525498208532014691135711581428278073064136686423426634309725593331384770 -> 1 0 +precision: 115 +divmod_eq584 divmod_eq -29550652176.25352099644351161932688343268294392861779277E-550348704 -> 1 -0E-550348748 +precision: 276 +divmod_eq585 divmod_eq -8158856424692527933.504671173279422 -> 1 -0E-15 +precision: 27 +divmod_eq586 divmod_eq NaN5405225870575464341549737694836007681136327450608311618 -> NaN836007681136327450608311618 NaN836007681136327450608311618 +precision: 261 +divmod_eq587 divmod_eq -3863300910379861536999299671664737984953665677492664180036725771929476281404179229526759019441758326852473400113 -> 1 -0 +precision: 121 +divmod_eq588 divmod_eq +6964831026701709938369386745682622297577176113105543139025880827459679504009441157795513E-672480319 -> 1 0E-672480319 +precision: 169 +divmod_eq589 divmod_eq -7579544774.7931256633670734886 -> 1 -0E-19 +precision: 139 +divmod_eq590 divmod_eq -9443542402136464005563275647699704923461725352903392257291351366698751660235087780976559498402279319677472845379141641672 -> 1 -0 +precision: 291 +divmod_eq591 divmod_eq +928096063836978451058104986959489458531359946112847273058131776406460535856507811820478929381587588588750243671125926369831080246578223260950257498561664 -> 1 0 +precision: 254 +divmod_eq592 divmod_eq 44478306308565841961679889997774503603520626486361598170444316244691295799830271796762154163098685623041436703 -> 1 0 +precision: 72 +divmod_eq593 divmod_eq +745760396452102701896125953649118993371563704719570881193750334397219e+36863864 -> 1 0E+36863864 +precision: 237 +divmod_eq594 divmod_eq +462438244020280469040489126478122489107057126844323729473271493564426553063208332259323000141686448150309360773248691934390832011174751371519452468020200059398038248990974173675709305189765671511013345352814111191195791607956 -> 1 0 +precision: 223 +divmod_eq595 divmod_eq -16202986876553279352544125302160860102028131708055292108076175906596912607327661397481211788468658024088205876864014389159639217206715982782666075666630883911438868141200660313304880.73949578 -> 1 -0E-8 +precision: 110 +divmod_eq596 divmod_eq -8232063730149771563532866953478842642169837487687.54286005297475965108349 -> 1 -0E-23 +precision: 253 +divmod_eq597 divmod_eq -557082282116300527936540263920590769865235580903395873299037937039923944960498344928222585144530863466168789555442716503430460612973648026780606324325298671927367947366226865224232049081067822931652637e-290907274 -> 1 -0E-290907274 +precision: 250 +divmod_eq598 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 47 +divmod_eq599 divmod_eq -356701419894145122101470362005791091771 -> 1 -0 +precision: 191 +divmod_eq600 divmod_eq -81940904546777092892011612346199331963431891340081341043870074869319128963953173807507268320e+984335198 -> 1 -0E+984335198 +precision: 124 +divmod_eq601 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 251 +divmod_eq602 divmod_eq 975816174048445648533680336668258493685513491073656280.233849520595447065363808106243451624326511406527673708659490282530 -> 1 0E-66 +precision: 78 +divmod_eq603 divmod_eq +.3239432336255527867423914752179360552560903546945160304637605722239 -> 1 0E-67 +precision: 96 +divmod_eq604 divmod_eq +718991370524421112159386.7828815849146694823018735580071754913344326816860E-170864995 -> 1 0E-170865044 +precision: 121 +divmod_eq605 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 280 +divmod_eq606 divmod_eq 435790636165749849621650728547998802640390202027095901950150475833200694013771458090069662761436438171120829776489760105423008169542 -> 1 0 +precision: 235 +divmod_eq607 divmod_eq -399166572149206194440222683943835630907427646501031423282740510013258238051521611042317351232304990978475478503048265194216337418598404133420074946997407588383653940349541884308101129006832095352 -> 1 -0 +precision: 128 +divmod_eq608 divmod_eq +467686448396730403256679347104782333198253882436213606848390134289343628246929648208139976 -> 1 0 +precision: 141 +divmod_eq609 divmod_eq +2437.786234082216772883162814669693793849769704035493767738010E-4028158 -> 1 0E-4028215 +precision: 265 +divmod_eq610 divmod_eq 808541700964247280606446477356579245014426230972156836813754521724633709998531780166349808907443812360400458420698847264856588582775460323114535244689255404947555606621365013754608350299271586283430432540326662965456905161520655635384318804E574570588 -> 1 0E+574570588 +precision: 215 +divmod_eq611 divmod_eq -6329564934552997683945748013164615003904481259993862139238442058082955735758358149693202850 -> 1 -0 +precision: 171 +divmod_eq612 divmod_eq -4227049029399961677168500810773423 -> 1 -0 +precision: 134 +divmod_eq613 divmod_eq -55567137.90500079872353 -> 1 -0E-14 +precision: 238 +divmod_eq614 divmod_eq -639509866733606279644681403324822807533204473805925629873699982564170278744 -> 1 -0 +precision: 284 +divmod_eq615 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 216 +divmod_eq616 divmod_eq -4453226812814133177164047245839913251706048704865223282319848659534835061023014831597748E-851890897 -> 1 -0E-851890897 +precision: 182 +divmod_eq617 divmod_eq -6043.58387025914583079942327578837716768221272537842565007835711293213274 -> 1 -0E-68 +precision: 297 +divmod_eq618 divmod_eq -.6601299097017622877051321635176346914287804662684214958372895891090016653152527102096192424533381363993329413182365881490780843176858980831376783986134405676735932571236658825 -> 1 -0E-175 +precision: 66 +divmod_eq619 divmod_eq -66156436678333004144457606492238701897414e41742015 -> 1 -0E+41742015 +precision: 263 +divmod_eq620 divmod_eq -.292212177896505872519431586126298346919343415706848148391758130522098624541 -> 1 -0E-75 +precision: 229 +divmod_eq621 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 89 +divmod_eq622 divmod_eq -611914873614909559123220521607089607013278.902446552004611719953465191e-581594846 -> 1 -0E-581594873 +precision: 222 +divmod_eq623 divmod_eq +69722 -> 1 0 +precision: 282 +divmod_eq624 divmod_eq 13442659917333623515916991980891190989466428138236588581989208854911937.59448203490162732161043121926667265772760710844868712816860302190615642043085355055953056616905396638266 -> 1 0E-104 +precision: 19 +divmod_eq625 divmod_eq 467582777771261745 -> 1 0 +precision: 186 +divmod_eq626 divmod_eq -75239460285687973266562067634510055425893809560075181713842505023034527715767 -> 1 -0 +precision: 92 +divmod_eq627 divmod_eq -43677207293741263940408754.789059845404674980218678361615187707749912 -> 1 -0E-42 +precision: 202 +divmod_eq628 divmod_eq 234592176777526150905232773666341467601739733291e+635242666 -> 1 0E+635242666 +precision: 261 +divmod_eq629 divmod_eq -2.83677104E802987642 -> 1 -0E+802987634 +precision: 284 +divmod_eq630 divmod_eq -890629849946462071.2740458107070 -> 1 -0E-13 +precision: 241 +divmod_eq631 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 195 +divmod_eq632 divmod_eq 891642899261882573623180641072332799529528863638118813799714937273301e422551576 -> 1 0E+422551576 +precision: 53 +divmod_eq633 divmod_eq +5488718 -> 1 0 +precision: 292 +divmod_eq634 divmod_eq .6762451206776231089020243795643131448460352708258200810314516420470221361378669375965834535470952865899750831602042116102570670441486141714970762256072866050778582313731917298331054989067653736E+762846958 -> 1 0E+762846765 +precision: 86 +divmod_eq635 divmod_eq .88787010184018122152274583588318125703657898645738539487075521757285272434 -> 1 0E-74 +precision: 280 +divmod_eq636 divmod_eq 615800414702206989.85489405519871723396550596634259134153608975919096422748063411570438334 -> 1 0E-71 +precision: 168 +divmod_eq637 divmod_eq 659382872511501997986703803425871851932687646879501643917766791662686309220799717727634522308397286174474785214767243640118098092340311796167617314877908357543880 -> 1 0 +precision: 5 +divmod_eq638 divmod_eq +29440.E571832034 -> 1 0E+571832034 +precision: 22 +divmod_eq639 divmod_eq -673.33719773094070 -> 1 -0E-14 +precision: 162 +divmod_eq640 divmod_eq +2502892973210436991869e413859207 -> 1 0E+413859207 +precision: 20 +divmod_eq641 divmod_eq +82.77e-762048873 -> 1 0E-762048875 +precision: 145 +divmod_eq642 divmod_eq 4563312539565899877608558747808752276220313434168 -> 1 0 +precision: 247 +divmod_eq643 divmod_eq 2853410116755449144878973234075472293673292762068042512432113547360771458957500489087705604483311491508077886492470174355362102241029139652779921126395177710102519245159313936925522956170525255955828021228760603092880096568 -> 1 0 +precision: 3 +divmod_eq644 divmod_eq -24 -> 1 -0 +precision: 227 +divmod_eq645 divmod_eq 3424146075921540418977.9017107688456087002288373314009788784927428607796791696051158894105331117647677847356390612568850659752 -> 1 0E-103 +precision: 164 +divmod_eq646 divmod_eq +30371275011600299581185129948108331212356849845310351081767746784864223973744456713737533999059779618538178e248342252 -> 1 0E+248342252 +precision: 30 +divmod_eq647 divmod_eq 2417542337 -> 1 0 +precision: 288 +divmod_eq648 divmod_eq 96498231753171195804919022130512852668295308811734108 -> 1 0 +precision: 76 +divmod_eq649 divmod_eq +159589642081032.2 -> 1 0.0 +precision: 20 +divmod_eq650 divmod_eq -3857805303877179 -> 1 -0 +precision: 277 +divmod_eq651 divmod_eq 5319031209354093764651668668311129708961965699507193069282105659576481678914325593556E-389685600 -> 1 0E-389685600 +precision: 172 +divmod_eq652 divmod_eq +.7467144297090340293470990896915158602677578 -> 1 0E-43 +precision: 216 +divmod_eq653 divmod_eq +464977872700668178482691416525217968434205974923163824636481883922505252674687637292522860750800175452872169200299209118921682863 -> 1 0 +precision: 299 +divmod_eq654 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 211 +divmod_eq655 divmod_eq -105049623122482119875158400660208815452832312348 -> 1 -0 +precision: 148 +divmod_eq656 divmod_eq 653334286667973734841772 -> 1 0 +precision: 51 +divmod_eq657 divmod_eq -33075683732641187847698147616338831310538E-864937504 -> 1 -0E-864937504 +precision: 228 +divmod_eq658 divmod_eq -.27057500312526848270694480105208826957042104039899598338509213253469178916082446633563998898819126930087549423151977897492408 -> 1 -0E-125 +precision: 231 +divmod_eq659 divmod_eq +.115729533514533768970011605326978899757003273960310682172811174627585429884398626895356702420859 -> 1 0E-96 +precision: 150 +divmod_eq660 divmod_eq -8635440885670859969340840168344864693745930733723064729727740762385660064759713500551442587865078360357508625051223656624621890234196192972e-379150212 -> 1 -0E-379150212 +precision: 133 +divmod_eq661 divmod_eq +.187439325816262283481935887425274450411643449318267009972643379475478809176913769962701314207147126945015239974903481381 -> 1 0E-120 +precision: 283 +divmod_eq662 divmod_eq -88791692911554468664358557542182233474529767033938909787979710130482727181511125631728768117323849408E-193930091 -> 1 -0E-193930091 +precision: 31 +divmod_eq663 divmod_eq +917101570579528289042457 -> 1 0 +precision: 24 +divmod_eq664 divmod_eq 5.211586249193004668 -> 1 0E-18 +precision: 287 +divmod_eq665 divmod_eq -7672084742227500548673175016311492670221816019360656164709493842905215 -> 1 -0 +precision: 3 +divmod_eq666 divmod_eq .0e49002077 -> NaN NaN Invalid_operation +precision: 89 +divmod_eq667 divmod_eq -2486125595.7824804719213644181939944323 -> 1 -0E-28 +precision: 206 +divmod_eq668 divmod_eq +4198043792649633390349623022954899983341969E533980563 -> 1 0E+533980563 +precision: 145 +divmod_eq669 divmod_eq Inf -> NaN NaN Invalid_operation +precision: 95 +divmod_eq670 divmod_eq +426962.517921125308281978778928 -> 1 0E-24 +precision: 69 +divmod_eq671 divmod_eq -6583020800865939394617142640434636387381058033586847374237259666708e-895045131 -> 1 -0E-895045131 +precision: 293 +divmod_eq672 divmod_eq -620319602166629094089561178011293486620919351314722926838116132205225372662053118714048457539076679972107953153573186032556965867 -> 1 -0 +precision: 141 +divmod_eq673 divmod_eq 844724588980572117147337790573953183040057123241730852500780469726679897985086768327825457943341527092091533102161142360065568172962622 -> 1 0 +precision: 244 +divmod_eq674 divmod_eq 47878248427173838537E+932226408 -> 1 0E+932226408 +precision: 83 +divmod_eq675 divmod_eq 7175926367258256143627140487529877040581986788670844938 -> 1 0 +precision: 80 +divmod_eq676 divmod_eq -32214030317540395628322379708424690974910124458 -> 1 -0 +precision: 70 +divmod_eq677 divmod_eq +sNaN -> NaN NaN Invalid_operation +precision: 42 +divmod_eq678 divmod_eq -858649764229157479720.e-527609059 -> 1 -0E-527609059 +precision: 107 +divmod_eq679 divmod_eq +.7236856096530227431751263837290413000167415277129E973226881 -> 1 0E+973226832 +precision: 238 +divmod_eq680 divmod_eq -sNaN523751392602614304571102923843350981619734907656886627735124062927210615001734443116561 -> -NaN523751392602614304571102923843350981619734907656886627735124062927210615001734443116561 -NaN523751392602614304571102923843350981619734907656886627735124062927210615001734443116561 Invalid_operation +precision: 275 +divmod_eq681 divmod_eq -21308914951682086872600053203319559107300330787084405467145740990312156655960239073938440980568579439307889151087772571891335798197574723058289053917662e-700390392 -> 1 -0E-700390392 +precision: 134 +divmod_eq682 divmod_eq +406728.2041 -> 1 0.0000 +precision: 63 +divmod_eq683 divmod_eq -NaN31704670101557659613838 -> -NaN31704670101557659613838 -NaN31704670101557659613838 +precision: 181 +divmod_eq684 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 80 +divmod_eq685 divmod_eq -721107623799502372865851164843732844124011136548950384954397716e+961862608 -> 1 -0E+961862608 +precision: 242 +divmod_eq686 divmod_eq .36 -> 1 0.00 +precision: 40 +divmod_eq687 divmod_eq +3721223421294419458 -> 1 0 +precision: 176 +divmod_eq688 divmod_eq +929773128009018304522652919819262484972977750961289400243146620907915500012592946052225364791835E+823837004 -> 1 0E+823837004 +precision: 296 +divmod_eq689 divmod_eq .1058898336023801518943639248880440712581449549723550019090321522028523009597986556408910012247693079876620720493154067860797171750819240928526318195729295251585445208379903411426160028619485997266891896364862206857626284344024769220633387369524197800757520845943217891096059592288584 -> 1 0E-283 +precision: 58 +divmod_eq690 divmod_eq -.50067489312944279940342732932944 -> 1 -0E-32 +precision: 233 +divmod_eq691 divmod_eq +14382452069299297319380420398.47786649231585431747007560453407411e837348911 -> 1 0E+837348876 +precision: 160 +divmod_eq692 divmod_eq -44399590570829422789500910440277147492828717746603854258772189436512907829824113188134788637440462423 -> 1 -0 +precision: 254 +divmod_eq693 divmod_eq -66490615048586946253496183767484438927107588769562393366498E594039577 -> 1 -0E+594039577 +precision: 175 +divmod_eq694 divmod_eq -389966682825200180223349589124148023737854918187429208315.3340768530084159462949 -> 1 -0E-22 +precision: 28 +divmod_eq695 divmod_eq -554359549027471484.631 -> 1 -0.000 +precision: 232 +divmod_eq696 divmod_eq NaN604970057170380 -> NaN604970057170380 NaN604970057170380 +precision: 286 +divmod_eq697 divmod_eq -9229137627163924248956109933973558553856398095876921595124909734624064364464529330446130400346531523400277818969139996155687561362454425012215698234786481272498360445616902759046542363429379502977252700416990585861005488853366860813 -> 1 -0 +precision: 212 +divmod_eq698 divmod_eq 731549551902429 -> 1 0 +precision: 212 +divmod_eq699 divmod_eq 421352405187264157688423976022045844869920522761419185612912396070146076947777104861981485184786977079645947196076030557327801771400058963035165631928183627670647171271123379104915308736E94479972 -> 1 0E+94479972 +precision: 84 +divmod_eq700 divmod_eq -.7101616733028358722293083544479120067437630295227912697139296345313334988 -> 1 -0E-73 +precision: 115 +divmod_eq701 divmod_eq -7500130592483121577985261425498517174822107971550844063235999529789606921982238386. -> 1 -0 +precision: 173 +divmod_eq702 divmod_eq -1114402.8426903496804995186156e-26087029 -> 1 -0E-26087051 +precision: 42 +divmod_eq703 divmod_eq +585025701008857 -> 1 0 +precision: 86 +divmod_eq704 divmod_eq -.14506471400454848207117107842969090526073619928550810737 -> 1 -0E-56 +precision: 53 +divmod_eq705 divmod_eq sNaN902625985243479294796741083687487848991891088029413 -> NaN902625985243479294796741083687487848991891088029413 NaN902625985243479294796741083687487848991891088029413 Invalid_operation +precision: 139 +divmod_eq706 divmod_eq +9168020217.7754311074679565405771941432228670000978600780748212833565443745045649 -> 1 0E-70 +precision: 63 +divmod_eq707 divmod_eq +986680930912182783686718176 -> 1 0 +precision: 299 +divmod_eq708 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 61 +divmod_eq709 divmod_eq -8263380.7842239848044506419296881895229972526422e+383679637 -> 1 -0E+383679597 +precision: 45 +divmod_eq710 divmod_eq .2650045e131054594 -> 1 0E+131054587 +precision: 296 +divmod_eq711 divmod_eq -5823143673750255830816103827932501946779280439874827834066439513773422234456738102935712042114380560637940665660143738118206534872547520334559550677142493827407182745159784736867707560596379069975816874617864 -> 1 -0 +precision: 61 +divmod_eq712 divmod_eq -69859565249279613250244392E+836730945 -> 1 -0E+836730945 +precision: 150 +divmod_eq713 divmod_eq -553586393776388468835716993360642249452182142279338266029907147479238456951040306799548903320 -> 1 -0 +precision: 4 +divmod_eq714 divmod_eq -.3643 -> 1 -0.0000 +precision: 77 +divmod_eq715 divmod_eq -1806268769050407242 -> 1 -0 +precision: 23 +divmod_eq716 divmod_eq 690e942946468 -> 1 0E+942946468 +precision: 237 +divmod_eq717 divmod_eq -37529632190481836832800402019860511818633420970180727594128 -> 1 -0 +precision: 211 +divmod_eq718 divmod_eq 60377146578517408661535310074199983214.7582655097980659547503 -> 1 0E-22 +precision: 217 +divmod_eq719 divmod_eq 4380128069012346320969282870532395637907837537537202712373309038033655246178956880000052656236074626856794270246173793541238811519104628132757295444661776583282176829299587570345 -> 1 0 +precision: 110 +divmod_eq720 divmod_eq +.31048581048142578876605520605372485593534899566441911 -> 1 0E-53 +precision: 255 +divmod_eq721 divmod_eq -46658194532303786150890734294618438982723545099313406521085783322146785384418116686712599627633512911617514764770337393047775801945891134794591607908159955141490579652808003121107097722878849190220699159116762278604898695462 -> 1 -0 +precision: 53 +divmod_eq722 divmod_eq -87004747111735260288127403940 -> 1 -0 +precision: 261 +divmod_eq723 divmod_eq -30955994660354367567869539681851169912676591656569984860160758756693048340420459802486611936668755225868299675445352874510933429035480091696032043874823815321327331271424900173672107138596245968375317161847510.196230537938836453436666396 -> 1 -0E-27 +precision: 103 +divmod_eq724 divmod_eq .9016235040446107965340888 -> 1 0E-25 +precision: 43 +divmod_eq725 divmod_eq 58023.7 -> 1 0.0 +precision: 90 +divmod_eq726 divmod_eq -27938548618073638665350455527567354724637213036292627331224518987 -> 1 -0 +precision: 128 +divmod_eq727 divmod_eq 5770927952011810543965934715407776581664527002237720552832481619419 -> 1 0 +precision: 7 +divmod_eq728 divmod_eq -4.20636 -> 1 -0.00000 +precision: 163 +divmod_eq729 divmod_eq -2671608227183030454066656931267143698319319675046599320743571943722042155e-173001265 -> 1 -0E-173001265 +precision: 83 +divmod_eq730 divmod_eq -7701957517984626 -> 1 -0 +precision: 199 +divmod_eq731 divmod_eq 237849635087820497544370309402858429745871272457259553868083530558992081459751953477292333389116947465644122558070324476424489848667231 -> 1 0 +precision: 232 +divmod_eq732 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 39 +divmod_eq733 divmod_eq -.3831474747660337466 -> 1 -0E-19 +precision: 111 +divmod_eq734 divmod_eq 503461950286121711671221602712325345208152665394.386231086299650158532727921942886486546528153808605606632273 -> 1 0E-60 +precision: 198 +divmod_eq735 divmod_eq .8764121885360643616913322125558697613796821094222385023801992808238790054628E-759766864 -> 1 0E-759766940 +precision: 188 +divmod_eq736 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 13 +divmod_eq737 divmod_eq +8367.92 -> 1 0.00 +precision: 159 +divmod_eq738 divmod_eq -751005510988109931335080850602776954486241084962429844848139081817024972738069064623405024602227688630023625643880871339899027256195e+640632213 -> 1 -0E+640632213 +precision: 220 +divmod_eq739 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 153 +divmod_eq740 divmod_eq 50129.59746375373183 -> 1 0E-14 +precision: 203 +divmod_eq741 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 215 +divmod_eq742 divmod_eq -306633474080882178150873814617313417562775069482858561901385676925593179323241308363667308414783792350495274953948102145497561802913e-545221863 -> 1 -0E-545221863 +precision: 292 +divmod_eq743 divmod_eq -2725131309693922054433607871315408499316944482399055342905668674810776279451355126108164839048974147218379792036919270022029050332595143336292726332468466147400749152925567469026127455334632765680344862322148472894939202915531895378604e-679423111 -> 1 -0E-679423111 +precision: 282 +divmod_eq744 divmod_eq +3399013298156793241405793308648698413722558075621584041931120452221806555400689959814332082260815096125558377810904391271063012839210811055281630872839825413051024396911307678222816738249964522931240186333957426743794876311180422761 -> 1 0 +precision: 59 +divmod_eq745 divmod_eq +382504762.47380385 -> 1 0E-8 +precision: 293 +divmod_eq746 divmod_eq -761060534977033256361665872851177989263183774384922782452688759599159518727042574018902981819827265830820537372454879073463874624726568300871990843434449224603503816609198838886152536766495549075801046212e+976315442 -> 1 -0E+976315442 +precision: 17 +divmod_eq747 divmod_eq .309923622888 -> 1 0E-12 +precision: 85 +divmod_eq748 divmod_eq +57E560573038 -> 1 0E+560573038 +precision: 208 +divmod_eq749 divmod_eq 4670485953760346709705696294605643820819303434363506423243792422344739220625155904305301401969380381376422051618904178820188866131520448785 -> 1 0 +precision: 88 +divmod_eq750 divmod_eq -314227227427516E+397979338 -> 1 -0E+397979338 +precision: 231 +divmod_eq751 divmod_eq -912.918494 -> 1 -0.000000 +precision: 98 +divmod_eq752 divmod_eq 2033530619818270E-149668445 -> 1 0E-149668445 +precision: 101 +divmod_eq753 divmod_eq -9474937598471588085584259481537052 -> 1 -0 +precision: 129 +divmod_eq754 divmod_eq -sNaN -> -NaN -NaN Invalid_operation +precision: 242 +divmod_eq755 divmod_eq -873082.242657506010977395405799815476 -> 1 -0E-30 +precision: 252 +divmod_eq756 divmod_eq -5218085465730952683333608771934211488546031886274240187.5827128934263 -> 1 -0E-13 +precision: 297 +divmod_eq757 divmod_eq -.73656584069912568052600536588127465404248626403951980289963631e+640429494 -> 1 -0E+640429432 +precision: 249 +divmod_eq758 divmod_eq -.895845911288035709028993329468951246468351807708831069700820561045805135122 -> 1 -0E-75 +precision: 80 +divmod_eq759 divmod_eq +8488641153 -> 1 0 +precision: 277 +divmod_eq760 divmod_eq 2612255092996286927616340721354428359850587514159341842 -> 1 0 +precision: 234 +divmod_eq761 divmod_eq -50774599663628335786717429370339832074380609.2885158460990501287 -> 1 -0E-19 +precision: 172 +divmod_eq762 divmod_eq -407194405348996101872503979893695867129569553417943.9755468514547455884365446069839216847562239954873857538389455010446024141699643783588808972 -> 1 -0E-91 +precision: 63 +divmod_eq763 divmod_eq sNaN -> NaN NaN Invalid_operation +precision: 105 +divmod_eq764 divmod_eq +77.145644428341792769240758E-842981262 -> 1 0E-842981286 +precision: 69 +divmod_eq765 divmod_eq +2306683671958410281935251971564629587 -> 1 0 +precision: 270 +divmod_eq766 divmod_eq -152014163389.954 -> 1 -0.000 +precision: 286 +divmod_eq767 divmod_eq +497.7873559 -> 1 0E-7 +precision: 183 +divmod_eq768 divmod_eq 242971881204494404.167770617079454000719302587317917300306741173798584162194684013687579731970008930222100537909620882924417582949175606701146282818098365129 -> 1 0E-138 +precision: 107 +divmod_eq769 divmod_eq +287331223550660.7616 -> 1 0.0000 +precision: 100 +divmod_eq770 divmod_eq -16731955628867020636505107105 -> 1 -0 +precision: 251 +divmod_eq771 divmod_eq -9903688641725454582565056571999074116826683877315450757137903850254299542283781590693047403050846032652e-995584115 -> 1 -0E-995584115 +precision: 172 +divmod_eq772 divmod_eq 546878264955241943669423234102069543091524833358973370137815493213 -> 1 0 +precision: 188 +divmod_eq773 divmod_eq -.340514282482497906e-730565522 -> 1 -0E-730565540 +precision: 13 +divmod_eq774 divmod_eq -76224 -> 1 -0 +precision: 80 +divmod_eq775 divmod_eq +.35660906221779540191680706564699171385974517689379571468957191870e+636419100 -> 1 0E+636419035 +precision: 112 +divmod_eq776 divmod_eq -49336108749862123913058650077422934081112658439621404953372730687124434689506 -> 1 -0 +precision: 11 +divmod_eq777 divmod_eq -5640329831. -> 1 -0 +precision: 40 +divmod_eq778 divmod_eq -.430994381631895658060e+565949670 -> 1 -0E+565949649 +precision: 178 +divmod_eq779 divmod_eq +NaN -> NaN NaN +precision: 15 +divmod_eq780 divmod_eq +3.80E-547677686 -> 1 0E-547677688 +precision: 281 +divmod_eq781 divmod_eq -6525469644280496797154761612600523419169450528034304765454188031326216428567740081366446665297656955659961446852889147919695045665162784365076207768323251218258840675983120115969956345989290389954215772837696128092662364758648850712377536246183338821245780155495011100389179874636 -> 1 -0 +precision: 34 +divmod_eq782 divmod_eq -30311326258375731749088e-364954265 -> 1 -0E-364954265 +precision: 39 +divmod_eq783 divmod_eq +763288167.136E-716460465 -> 1 0E-716460468 +precision: 135 +divmod_eq784 divmod_eq 125034522986353712566301502502603566111561285642255223932317211621390202131659979294616972176929378698563621156589163744004889 -> 1 0 +precision: 27 +divmod_eq785 divmod_eq -71.7745948219842991245625 -> 1 -0E-22 +precision: 162 +divmod_eq786 divmod_eq -7465272354313331146027291273985800868976691041081102142748286283850504347710909274364350296360812518259696213509763303484E410860825 -> 1 -0E+410860825 +precision: 195 +divmod_eq787 divmod_eq -6826927383391642450259819100571861431907680726708825013899182003441791061271955211125852326569305629697037375566979073836443730995834338292968926167913647779388282926975436762379761E+418721891 -> 1 -0E+418721891 +precision: 231 +divmod_eq788 divmod_eq -28580218772247789076242638506209165524163497800468857715765623122607688030400077322768925211547827132759480699661329326299748087127019149003260811209692830351439603299320339292423503286276719512126709664169025 -> 1 -0 +precision: 288 +divmod_eq789 divmod_eq -549554623498399940766972965740039961853867033670.9442119732840592877184840477580085556828546677008119365185872319253487656734373652655234148744172233233139826742643221931937806313242946190243049681992478451456380455293262612483653703995969146E-571018063 -> 1 -0E-571018256 +precision: 30 +divmod_eq790 divmod_eq -17776054898 -> 1 -0 +precision: 80 +divmod_eq791 divmod_eq -8437652587392636052273928042012166662e+458434131 -> 1 -0E+458434131 +precision: 171 +divmod_eq792 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 239 +divmod_eq793 divmod_eq 174303040353562303440912.42123105E+529592449 -> 1 0E+529592441 +precision: 112 +divmod_eq794 divmod_eq -2382742608486633369206258948780874621769718178644910414509400187755487500276565429236712078337685e-962284137 -> 1 -0E-962284137 +precision: 85 +divmod_eq795 divmod_eq 186252292910976 -> 1 0 +precision: 17 +divmod_eq796 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 289 +divmod_eq797 divmod_eq +196128101428952171767649740150442771505692071059141237561013916717552135695507224248754641994685858187002741047554440767e-541103261 -> 1 0E-541103261 +precision: 196 +divmod_eq798 divmod_eq -73979019964219244793662503454650797297012643880139876290 -> 1 -0 +precision: 116 +divmod_eq799 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 228 +divmod_eq800 divmod_eq -2548672422205796881209291241628436910086733686381172394236539698241697271157228023015395801359981698234576011725095311727047247060 -> 1 -0 +precision: 43 +divmod_eq801 divmod_eq -33813391111431737413619268952825509 -> 1 -0 +precision: 274 +divmod_eq802 divmod_eq +299890782910043767520741801016624873893479557359734402240190885827917265411267571e+666580758 -> 1 0E+666580758 +precision: 129 +divmod_eq803 divmod_eq 34454922409122565809393422865.78458933005607809845763899496545861447144 -> 1 0E-41 +precision: 137 +divmod_eq804 divmod_eq -1325870350459904985639271035426902009715257224455292921654091061836 -> 1 -0 +precision: 81 +divmod_eq805 divmod_eq -4519571510225.195 -> 1 -0.000 +precision: 241 +divmod_eq806 divmod_eq 4305462436624742200849125302331048310384873657707558333523464822307317020427528661502426285616558172951459572825295272859142719159261409484057899522606989323199317088261404657850676845133575823025791889018734884E428402521 -> 1 0E+428402521 +precision: 18 +divmod_eq807 divmod_eq -192607.731288 -> 1 -0.000000 +precision: 197 +divmod_eq808 divmod_eq .85018274169593799363913266586603791826693440807423959327706955924259745677409236247522716306482200084873155466583790545482009219968747785852273230936553826230418639804545541505348470599817019540784 -> 1 0E-197 +precision: 156 +divmod_eq809 divmod_eq 912778091982518390318e-808006553 -> 1 0E-808006553 +precision: 97 +divmod_eq810 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 153 +divmod_eq811 divmod_eq 757770949710368280505626751199430680462643530052250553356195675115010000210092053287449 -> 1 0 +precision: 193 +divmod_eq812 divmod_eq -.675141803536640080213353040198275008536285741110822388362427593072179207361813241271350930181045798762265531661830707256139231288883487636e-863734781 -> 1 -0E-863734919 +precision: 171 +divmod_eq813 divmod_eq -4196649014156665853.9630576048746566080734959 -> 1 -0E-25 +precision: 113 +divmod_eq814 divmod_eq +sNaN5896000943063894043269077973450203866087955515 -> NaN5896000943063894043269077973450203866087955515 NaN5896000943063894043269077973450203866087955515 Invalid_operation +precision: 105 +divmod_eq815 divmod_eq -.8717972344095538047138201404249496688379406833854450037143798531019158420880969941123271486620826885223 -> 1 -0E-103 +precision: 12 +divmod_eq816 divmod_eq 37 -> 1 0 +precision: 10 +divmod_eq817 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 206 +divmod_eq818 divmod_eq +8309769181721629567901948173286338164303243343635558653076974345286407743624 -> 1 0 +precision: 180 +divmod_eq819 divmod_eq +.5442495774575376306942638587666176078623190696088910158041929320409169557354301826665438722898599183030481155763275125005259 -> 1 0E-124 +precision: 89 +divmod_eq820 divmod_eq +90504348616966571053180888388192277606468040934 -> 1 0 +precision: 196 +divmod_eq821 divmod_eq +5647263381930734815214287174031055727814212572227373138867149972396764200328218812499298758055615922971980042998725e-830630005 -> 1 0E-830630005 +precision: 98 +divmod_eq822 divmod_eq -.99363780428633770494632821459409492929452688664307123430451585981309228794961589 -> 1 -0E-80 +precision: 284 +divmod_eq823 divmod_eq 1014159228378568949056640718771948516076835006005160962122696426973702587213755286273553431553155956692897767387189091762494300476891802591092054340460743925549968485E-844482431 -> 1 0E-844482431 +precision: 142 +divmod_eq824 divmod_eq Inf -> NaN NaN Invalid_operation +precision: 141 +divmod_eq825 divmod_eq +31267576171139048727437706235359044407265602084953190697e+857783883 -> 1 0E+857783883 +precision: 64 +divmod_eq826 divmod_eq +.815271630337857530512944007767009874 -> 1 0E-36 +precision: 118 +divmod_eq827 divmod_eq -575124598898727892847899049 -> 1 -0 +precision: 165 +divmod_eq828 divmod_eq 2168 -> 1 0 +precision: 11 +divmod_eq829 divmod_eq 41189 -> 1 0 +precision: 55 +divmod_eq830 divmod_eq -722189644149923786872314908646343740302380003176 -> 1 -0 +precision: 281 +divmod_eq831 divmod_eq -.4110 -> 1 -0.0000 +precision: 11 +divmod_eq832 divmod_eq -2270869642 -> 1 -0 +precision: 214 +divmod_eq833 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 63 +divmod_eq834 divmod_eq .97212886463218148596570774135E+977164414 -> 1 0E+977164385 +precision: 140 +divmod_eq835 divmod_eq 3612318134456029199700008240735330.6462600 -> 1 0E-7 +precision: 221 +divmod_eq836 divmod_eq -83369675206828051584786931912027511374816547538666643206277857494535859884873798448982844003650406514429335393463122719863388606440121510786534882029 -> 1 -0 +precision: 104 +divmod_eq837 divmod_eq -738288182474561675992E+455817820 -> 1 -0E+455817820 +precision: 37 +divmod_eq838 divmod_eq -6641121795077E+296122327 -> 1 -0E+296122327 +precision: 290 +divmod_eq839 divmod_eq -3656464309769430219735933480932720239843378500941905481666534298.42912031612818993554249002485031089878812719421452569833824368673667923401659758777577 -> 1 -0E-86 +precision: 100 +divmod_eq840 divmod_eq -.542774115631 -> 1 -0E-12 +precision: 124 +divmod_eq841 divmod_eq -9073381099772760244525457961188362632347066846135960922278783165387265525939721758976948095171242896137E295016306 -> 1 -0E+295016306 +precision: 216 +divmod_eq842 divmod_eq -66628202300623453922073515985802224360558926624516572843584836315850376896690426670835730743963449379434295721543474883294375761824149658755094191448529423389083687047079443030468982312978944225857612976197 -> 1 -0 +precision: 245 +divmod_eq843 divmod_eq +981177692530800947642723387464843.9557721647250366796071855257487002651728563371795928158279353026925662809763727745373984090817873432261004496267303018110318003045890721 -> 1 0E-136 +precision: 228 +divmod_eq844 divmod_eq -9788755298036809359744720358198010254583 -> 1 -0 +precision: 140 +divmod_eq845 divmod_eq +Inf -> NaN NaN Invalid_operation +precision: 290 +divmod_eq846 divmod_eq +3845899615163259894610616870076698937186136575711075264047440983821769123205E+650229819 -> 1 0E+650229819 +precision: 273 +divmod_eq847 divmod_eq +850033132612883918227278462530226377041277725902698782032727425245926499330124185740118431198886335871341836674519309212685397202865705995919406766709508205482972170060696984900414849760404993274339879007059417013771566699965586710888240249511139637227439322 -> 1 0 +precision: 295 +divmod_eq848 divmod_eq +61329941896293513092190072472273372091915086368035106032722195472841060417475 -> 1 0 +precision: 76 +divmod_eq849 divmod_eq -3364225749.33523686286854014865211897988064 -> 1 -0E-32 +precision: 104 +divmod_eq850 divmod_eq -34341195331506750946978561857071810106757271147585767759842484202175 -> 1 -0 +precision: 139 +divmod_eq851 divmod_eq 56740682858507165382601329401657124042250347759519842288200434170673262816606196716791253842890215801151743453525677379457453362697456 -> 1 0 +precision: 269 +divmod_eq852 divmod_eq 96925177544649378337408891703587293953712073066341786895132407415144595657750328796200624776257608439585935026745406919721764860982278283 -> 1 0 +precision: 212 +divmod_eq853 divmod_eq -5858044989857763630.1137389992888453803648254728096739600191012543219329621440537927194826312081802653977403378519518474836366e-345553237 -> 1 -0E-345553343 +precision: 186 +divmod_eq854 divmod_eq +336914816973401787746476349900074869810477383356615674644618377273094835422439980681412841992320057123777503000585334575669482194071150041493765571742861858020327645223369E-900156547 -> 1 0E-900156547 +precision: 222 +divmod_eq855 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 260 +divmod_eq856 divmod_eq -69253871739875962804233274716667686099970384410706775826888224775370465994504811394447272516488106728273081283215282074491615132065772043212866536694366973810109339166174264727159824386339039932297400231298834728077160457532979326422759786533703564523656354 -> 1 -0 +precision: 273 +divmod_eq857 divmod_eq -51287026428446660374214576019466624695430411446336288129786458580260664210251198809950569668548948388214811497230879.5543E-373194028 -> 1 -0E-373194032 +precision: 175 +divmod_eq858 divmod_eq +146425741759879281656249873969597531402600301445760463279292072261173488007293105957556852597713968190758565032890422170915983 -> 1 0 +precision: 291 +divmod_eq859 divmod_eq 9727094361949432634948442693.1602987539596178149609082722709629555391455706476139229176621271655301811732897242305892947174242638967423337181994712972111412931991034124009103811606692779607220e944598964 -> 1 0E+944598801 +precision: 92 +divmod_eq860 divmod_eq +7468759504664040423508145738083596109338434394399262434.567076464537110 -> 1 0E-15 +precision: 185 +divmod_eq861 divmod_eq -79432220305622810212567854164952261726514212813 -> 1 -0 +precision: 17 +divmod_eq862 divmod_eq -7045399325 -> 1 -0 +precision: 69 +divmod_eq863 divmod_eq -97919555857479352315479840958778038247055438473703939893227441375 -> 1 -0 +precision: 8 +divmod_eq864 divmod_eq -.93e-605214084 -> 1 -0E-605214086 +precision: 34 +divmod_eq865 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 73 +divmod_eq866 divmod_eq -Inf -> NaN NaN Invalid_operation +precision: 286 +divmod_eq867 divmod_eq .814263138117638873794268202019368297945239854126716820726236031436794159196316803028842517784117381500261984377461700008585316797573281026993214520747752414212521412650277742808783456E+722775814 -> 1 0E+722775631 +precision: 91 +divmod_eq868 divmod_eq -47725111523953262003782812474416910404291530.2141586172 -> 1 -0E-10 +precision: 100 +divmod_eq869 divmod_eq +76193212854988145002785926227186180640257141264644725627612115040531180315028813923370786038633 -> 1 0 +precision: 268 +divmod_eq870 divmod_eq 5029040365425419484716827743748171345317034340224795851426150182880203934190366254205512022146599367853079949217285878715306466740198107905689725752689070274165734327144185672981961884678148847563301879067047005472632832576060377063546115415E312206983 -> 1 0E+312206983 +precision: 19 +divmod_eq871 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 29 +divmod_eq872 divmod_eq -445974996900213E-382215927 -> 1 -0E-382215927 +precision: 83 +divmod_eq873 divmod_eq +6903.655194494603095869262159075629076230088298683316453797970422213471714761266e759646864 -> 1 0E+759646789 +precision: 155 +divmod_eq874 divmod_eq -NaN -> -NaN -NaN +precision: 152 +divmod_eq875 divmod_eq -sNaN96288359382817074196340556670554552475567225748072373361975378166522 -> -NaN96288359382817074196340556670554552475567225748072373361975378166522 -NaN96288359382817074196340556670554552475567225748072373361975378166522 Invalid_operation +precision: 109 +divmod_eq876 divmod_eq -.6971497534745501642427837541893905174303955735889007052634624177 -> 1 -0E-64 +precision: 265 +divmod_eq877 divmod_eq -7117613067051004888951886808208306445961542957164795724707649823808867596322375525124100476804411126225717435981435162955709296290 -> 1 -0 +precision: 129 +divmod_eq878 divmod_eq +11947276481316896678184328879608573023598667518636446 -> 1 0 +precision: 138 +divmod_eq879 divmod_eq -94698734452325283498643320344389590558624114879891226681890943634043407581051886916980497016581315858231 -> 1 -0 +precision: 269 +divmod_eq880 divmod_eq -.3095849265902585537665373084266056515646106571143986776544e+999319159 -> 1 -0E+999319101 +precision: 291 +divmod_eq881 divmod_eq 113757814457645201095872104400327601075669814445688424742900764193.863119685098030687860172694076911215370185008301226899858451781740825551713527365554382996541540495297562976342067E-225791 -> 1 0E-225905 +precision: 266 +divmod_eq882 divmod_eq 8235372795582608814203791247659283074005373581243091337933685934684531969341578126495057714419356886124500455611869685763175244870463105683314070214234383156011824370159.464359226184632243716981890162282555234159403217 -> 1 0E-48 +precision: 166 +divmod_eq883 divmod_eq +2053908587977367971874697738300340564995842966062185455130074849353456087294774740079525272600967103.99018485950089835687010814094500698445246314896534868157605586439 -> 1 0E-65 +precision: 71 +divmod_eq884 divmod_eq -286467142972368849565 -> 1 -0 +precision: 128 +divmod_eq885 divmod_eq +26535578301877259760409082894774455853473053705236459608289485227952880575326113 -> 1 0 +precision: 229 +divmod_eq886 divmod_eq 73851860447574306830624758166723121442972528661019977042951998477983039297284888760527774425511301753500269095460739741388714075682456031912164648069227206819294028950858492109624172272756344152749E-673659230 -> 1 0E-673659230 +precision: 159 +divmod_eq887 divmod_eq 97304197689404979174491662411604691921434674551041287003664842474 -> 1 0 +precision: 2 +divmod_eq888 divmod_eq -NaN62130933440770174021118085797080638786991287164284240 -> -NaN40 -NaN40 +precision: 49 +divmod_eq889 divmod_eq 607.51211751769944226214914161372123327594952328 -> 1 0E-44 +precision: 133 +divmod_eq890 divmod_eq +11153640625651561900023388255009888109266958478667900288826898673567880806544468640919859E-375102484 -> 1 0E-375102484 +precision: 62 +divmod_eq891 divmod_eq +17338844563169415412687669280265081864589991585215754.3408275E845793763 -> 1 0E+845793756 +precision: 238 +divmod_eq892 divmod_eq -900529484802180005250127927712054692133207130028918903028216498324576614675832412124701089276111406573197214168587896757674889903403789984205656152780167913014657318869569963349939795077755916e+501158674 -> 1 -0E+501158674 +precision: 97 +divmod_eq893 divmod_eq -5980501.589425492318990869836057419988057220712374998902480611330822580754569711434 -> 1 -0E-75 +precision: 115 +divmod_eq894 divmod_eq +53.5E+448307456 -> 1 0E+448307455 +precision: 48 +divmod_eq895 divmod_eq -7954553707043767721337336336.807616492612848E+263703793 -> 1 -0E+263703778 +precision: 51 +divmod_eq896 divmod_eq +57549644344356474044719973019313441823968080E+687176541 -> 1 0E+687176541 +precision: 230 +divmod_eq897 divmod_eq +344412.2301 -> 1 0.0000 +precision: 28 +divmod_eq898 divmod_eq +18979.71633512 -> 1 0E-8 +precision: 273 +divmod_eq899 divmod_eq -694343737306433040042138124138300812130697529836061158360133960452602542638849663287863547739292492008478299367392704903260074464777 -> 1 -0 +precision: 76 +divmod_eq900 divmod_eq 5920665294505469743727361 -> 1 0 +precision: 219 +divmod_eq901 divmod_eq +sNaN3582512917102019890137289655628317139766068055625769906610764283810 -> NaN3582512917102019890137289655628317139766068055625769906610764283810 NaN3582512917102019890137289655628317139766068055625769906610764283810 Invalid_operation +precision: 29 +divmod_eq902 divmod_eq sNaN25026886746045668050375708314591916968930805599505348419150672850694486 -> NaN5599505348419150672850694486 NaN5599505348419150672850694486 Invalid_operation +precision: 276 +divmod_eq903 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 5 +divmod_eq904 divmod_eq -2.12 -> 1 -0.00 +precision: 180 +divmod_eq905 divmod_eq -398960573935159533669787984269128306200893516273991145575343096637752178 -> 1 -0 +precision: 230 +divmod_eq906 divmod_eq +319341450627555313899441345053025478360759552528389137325552365583696041029398390012072820745321088090219546309476.999225957998768110394665077343696983113068633681683151083763864863427738741360569380158 -> 1 0E-87 +precision: 177 +divmod_eq907 divmod_eq -82699511936795233505038414752253406571174636634780444129338997779795017577753388060545049234532911543819302093683564813619651690 -> 1 -0 +precision: 280 +divmod_eq908 divmod_eq -83037604002334.32803446519944121466109599770478072757079803287168896360927888789226238346725460157940902035511439748233440707260154841206228095132892584582680473e-979994000 -> 1 -0E-979994146 +precision: 235 +divmod_eq909 divmod_eq Infinity -> NaN NaN Invalid_operation +precision: 8 +divmod_eq910 divmod_eq -8539005E-990897130 -> 1 -0E-990897130 +precision: 85 +divmod_eq911 divmod_eq -.206854253264775010025298812647670218798137320472633189486592472E401450409 -> 1 -0E+401450346 +precision: 78 +divmod_eq912 divmod_eq 28958634038687067165927410245936079425965347639 -> 1 0 +precision: 180 +divmod_eq913 divmod_eq +4824672516491419312582943788980213763328675767060392853403403864953907850631586319993481592160801160917693030028681995608073900514449e-454645659 -> 1 0E-454645659 +precision: 213 +divmod_eq914 divmod_eq .47101582208987317592388344565738787339193378677 -> 1 0E-47 +precision: 22 +divmod_eq915 divmod_eq +473150631.544893746377 -> 1 0E-12 +precision: 247 +divmod_eq916 divmod_eq +237623941826635654883476595579565745901116647318624657820816140069354802462385219314516 -> 1 0 +precision: 220 +divmod_eq917 divmod_eq -83730498619903253016141624870125819524306774745267098205718321777500821972626915572807285895950738411921731843874382101173447906921870344745898262829826839423519974425904193062426683125 -> 1 -0 +precision: 215 +divmod_eq918 divmod_eq 187717321017257386498298298138550180963680319811857016648118371888398428892E-821636867 -> 1 0E-821636867 +precision: 233 +divmod_eq919 divmod_eq -82351182143758660496852279942177416546850457938983957211374795671637247405397 -> 1 -0 +precision: 114 +divmod_eq920 divmod_eq +67313520193688631282604 -> 1 0 +precision: 10 +divmod_eq921 divmod_eq NaN -> NaN NaN +precision: 69 +divmod_eq922 divmod_eq -263652676109635556278077787078688301012793644301889115544061047009e-461575235 -> 1 -0E-461575235 +precision: 218 +divmod_eq923 divmod_eq +.92646447685005651940545913563 -> 1 0E-29 +precision: 190 +divmod_eq924 divmod_eq -830670827805754941279022136052628382206338941960089096470062280517.5E-233609391 -> 1 -0E-233609392 +precision: 45 +divmod_eq925 divmod_eq -7538823954831835568532138502E-46482427 -> 1 -0E-46482427 +precision: 207 +divmod_eq926 divmod_eq sNaN641153154370919049839219596336518693095618308361734228451689 -> NaN641153154370919049839219596336518693095618308361734228451689 NaN641153154370919049839219596336518693095618308361734228451689 Invalid_operation +precision: 70 +divmod_eq927 divmod_eq 937320704 -> 1 0 +precision: 239 +divmod_eq928 divmod_eq 325405582713.5484273437 -> 1 0E-10 +precision: 244 +divmod_eq929 divmod_eq +162494738031014796599850966382032538503319808288310824.816961434864449741755083595076385436622085117296099977053735393496638522559253648169671208967344853554137714629335997949821409060820425541331268153149348056561520679527663760 -> 1 0E-174 +precision: 24 +divmod_eq930 divmod_eq +1212 -> 1 0 +precision: 86 +divmod_eq931 divmod_eq -58097.80505964243265472514410527527 -> 1 -0E-29 +precision: 4 +divmod_eq932 divmod_eq 14 -> 1 0 +precision: 177 +divmod_eq933 divmod_eq -4660638145183372351937844971935304224658229995024664660795662938491.6469425384189696002560033569733393314110954076944547339280322084788844137259140891427262302229023 -> 1 -0E-97 +precision: 294 +divmod_eq934 divmod_eq -774079701292984.1154527517942510327027861761192773708742701715700874179503459381865493165 -> 1 -0E-73 +precision: 246 +divmod_eq935 divmod_eq -3.711 -> 1 -0.000 +precision: 238 +divmod_eq936 divmod_eq +sNaN6163797316887685792820105850139329784081392713913900690722470073 -> NaN6163797316887685792820105850139329784081392713913900690722470073 NaN6163797316887685792820105850139329784081392713913900690722470073 Invalid_operation +precision: 78 +divmod_eq937 divmod_eq -.7207427785758131164106820266 -> 1 -0E-28 +precision: 241 +divmod_eq938 divmod_eq -.253629499266508398679019 -> 1 -0E-24 +precision: 263 +divmod_eq939 divmod_eq -.546733249356133291085812381437862816091841088701464556936921170153254355004809294988583137805917869003982585348274076005568905326205039915445200832 -> 1 -0E-147 +precision: 219 +divmod_eq940 divmod_eq +798186486578447313634724459728988700253527542383563861812999588818669278411426499648909979422448976025488013472076299604737368960106806237994898998 -> 1 0 +precision: 277 +divmod_eq941 divmod_eq +8834156e+489880157 -> 1 0E+489880157 +precision: 52 +divmod_eq942 divmod_eq NaN1096850364614725644948031240282763961090472251191295535449626735863028684571764480 -> NaN2763961090472251191295535449626735863028684571764480 NaN2763961090472251191295535449626735863028684571764480 +precision: 174 +divmod_eq943 divmod_eq -.690304021135913758964965008623145848370096880402523733996516521424756485431706826041033606441045087652220208682734870922911159220091284811402247943292 -> 1 -0E-150 +precision: 83 +divmod_eq944 divmod_eq .54113098367820046910951401287169720312622877496159783655805844250127226571954576e+433709785 -> 1 0E+433709705 +precision: 22 +divmod_eq945 divmod_eq -223439076767159118 -> 1 -0 +precision: 111 +divmod_eq946 divmod_eq 21276780296290119546837541486062443049 -> 1 0 +precision: 63 +divmod_eq947 divmod_eq -NaN881815317499426449171240750591682325069 -> -NaN881815317499426449171240750591682325069 -NaN881815317499426449171240750591682325069 +precision: 263 +divmod_eq948 divmod_eq -83732084324549666407537356857544214865765804302190676731356808374777351511516474454291738208297234010029051345570650143310154777795593609135208568664638752E-228721523 -> 1 -0E-228721523 +precision: 266 +divmod_eq949 divmod_eq -.13659506662465750384633732441976590797007504254089391887860612766205333890451732779853350283955306157762046281282705100064075601883066069192281772696762030876632417331834622716564499995941695648984916445332509869305008557689249130511671272186495e-598869447 -> 1 -0E-598869692 +precision: 215 +divmod_eq950 divmod_eq +.2516052709796350183215861204783732578009751800792914947154815007709448679728230549844 -> 1 0E-85 +precision: 116 +divmod_eq951 divmod_eq 86735509727721960023211854948665983025940818 -> 1 0 +precision: 83 +divmod_eq952 divmod_eq +sNaN5869256997442437232517258420811035487161248 -> NaN5869256997442437232517258420811035487161248 NaN5869256997442437232517258420811035487161248 Invalid_operation +precision: 226 +divmod_eq953 divmod_eq -9207141812359770002108068865540613671279390970954880242212626744304248114534861857177468442826327948503783567040590131258339928334753713132395708428938287058416542078440992243779755095938492887166210865237752662920920215232e-817927168 -> 1 -0E-817927168 +precision: 113 +divmod_eq954 divmod_eq 683786291602823536914149790855798713756950973680237206147225e-465742970 -> 1 0E-465742970 +precision: 193 +divmod_eq955 divmod_eq -708188387313908090466561877029413483610723706029524503580449898390099012830237042041267593827515708370995741746568495514642293475511596034269626757313929618 -> 1 -0 +precision: 220 +divmod_eq956 divmod_eq 36098191336232025839484747849352803541274066917550668695462689904961717052652120169435517211708182262972296683606123354757315831089274973431952281582119487257437383199055209960500143048189173455151379955537132684898 -> 1 0 +precision: 5 +divmod_eq957 divmod_eq -177E-291580996 -> 1 -0E-291580996 +precision: 246 +divmod_eq958 divmod_eq +1360127157654509933440 -> 1 0 +precision: 90 +divmod_eq959 divmod_eq -508297366703992546565866749.3284968750057576 -> 1 -0E-16 +precision: 127 +divmod_eq960 divmod_eq -385745956726724886.48821927392769329 -> 1 -0E-17 +precision: 250 +divmod_eq961 divmod_eq -547872560984669841109663477419388171138815763395339071640146413562536631147286471758279106393710.9575595102 -> 1 -0E-10 +precision: 42 +divmod_eq962 divmod_eq -138774773067875557344.112159050961021616947 -> 1 -0E-21 +precision: 141 +divmod_eq963 divmod_eq +7782091009001034572465021683709207605942209318061886918165787777277413.759990096075487716181790077281e632019086 -> 1 0E+632019056 +precision: 282 +divmod_eq964 divmod_eq +Infinity -> NaN NaN Invalid_operation +precision: 61 +divmod_eq965 divmod_eq .825058816624692813599615160593716180128052345996978 -> 1 0E-51 +precision: 264 +divmod_eq966 divmod_eq -3800281013164927746730286121586700997162030673438062395120872981904061452730394929858585470223801101439882722992742549644686383898605311086754414543144106161326961337108710580255186845012897287225041931220912960779846012843093089084244005570478013934065e-453558535 -> 1 -0E-453558535 +precision: 33 +divmod_eq967 divmod_eq -91411272674965247817383605520406 -> 1 -0 +precision: 171 +divmod_eq968 divmod_eq +57.7 -> 1 0.0 +precision: 199 +divmod_eq969 divmod_eq .791325566640678062083021348801967711299690610052261819034010054561018122987488950551809582139605802769562573911414582008621324751911951759473329003041021378539008066842232347158718434787976542971689e71055220 -> 1 0E+71055022 +precision: 231 +divmod_eq970 divmod_eq -62060882066709341105604995723998256839380121197658968386238762804081489806686372667431780634447846361568756981487115896547286684584242916193603339973140475816486747741536937558637914382433876555652900302043698585681276322021E-364237670 -> 1 -0E-364237670 +precision: 251 +divmod_eq971 divmod_eq +90113469 -> 1 0 +precision: 165 +divmod_eq972 divmod_eq 80007543780003038617706346203296054186269288335494925646969007182732557504036092680782815029797566420041660929409144310009997844260077531e-165429206 -> 1 0E-165429206 +precision: 277 +divmod_eq973 divmod_eq -.709969294008661799211549420591887984591424773770638588040749977651721167990305622348776859113314292080908367849877983294074251992466007295812407271352861749454907767967636868088605842916079270746816091484682926464563059201928938333299562408 -> 1 -0E-240 +precision: 244 +divmod_eq974 divmod_eq 47598610663601095597157087052984594056386663259520357973572275869418658375037184414143663086692 -> 1 0 +precision: 41 +divmod_eq975 divmod_eq -9.5835113 -> 1 -0E-7 +precision: 285 +divmod_eq976 divmod_eq -78823048603919674614614322379424400855894250316148840100136 -> 1 -0 +precision: 241 +divmod_eq977 divmod_eq -.6514050082304734667540923 -> 1 -0E-25 +precision: 28 +divmod_eq978 divmod_eq 4017039755039571977360 -> 1 0 +precision: 166 +divmod_eq979 divmod_eq -53063520991591187779777968140604094021825872610086319768056350913610657101371555599298790799302654306247107239960809025 -> 1 -0 +precision: 11 +divmod_eq980 divmod_eq -68197E-855320687 -> 1 -0E-855320687 +precision: 133 +divmod_eq981 divmod_eq -39986829858160084961222E+326439154 -> 1 -0E+326439154 +precision: 258 +divmod_eq982 divmod_eq -89925499422352057708385026058578991112269227250359724334529499706978539789236667740363507434353060038155645685657010527330337308613601 -> 1 -0 +precision: 231 +divmod_eq983 divmod_eq -Infinity -> NaN NaN Invalid_operation +precision: 212 +divmod_eq984 divmod_eq .353 -> 1 0.000 +precision: 144 +divmod_eq985 divmod_eq -.104892041993278462403155096946939074859506672458218405718152797831528188845817382294053244956794016745230805537570017510400217e-436429920 -> 1 -0E-436430046 +precision: 243 +divmod_eq986 divmod_eq NaN169054674269094646439350719907 -> NaN169054674269094646439350719907 NaN169054674269094646439350719907 +precision: 49 +divmod_eq987 divmod_eq +925221556003062591944514199581221943336953 -> 1 0 +precision: 6 +divmod_eq988 divmod_eq 74e355484854 -> 1 0E+355484854 +precision: 175 +divmod_eq989 divmod_eq +34315010682232319952622219492433916389940597586053.44542604579198509647152147054395272798628538815514755547987229353155567050258666556559266150676541484078 -> 1 0E-104 +precision: 274 +divmod_eq990 divmod_eq -1755688721701332926298855838142270112781001133971648821970344379781689912863370524708160056721513980423050512493374788046662315214750402232470267541578679319903494060771624029445908803330962610464052225463264027427805509671753130016054266585252508260070 -> 1 -0 +precision: 200 +divmod_eq991 divmod_eq 81643885931447222058378704467701769267030829545491683718991687445981373748791731233258143538554705659290324776.759772648069E-46067172 -> 1 0E-46067184 +precision: 206 +divmod_eq992 divmod_eq +742861697104690192003040070177248481254396507354402356573839108625551040047688310368245907662389E-674887303 -> 1 0E-674887303 +precision: 217 +divmod_eq993 divmod_eq Inf -> NaN NaN Invalid_operation +precision: 217 +divmod_eq994 divmod_eq 85856094926073980561952068705618060341350573481145616452257235733981104040153677086588781141088949807463372635616936530544833181491034106257163020113 -> 1 0 +precision: 25 +divmod_eq995 divmod_eq -59817929864285423554763 -> 1 -0 +precision: 174 +divmod_eq996 divmod_eq +86316828984530210955191424087798313133877907940393498.79262290548382320915285060086201E475532754 -> 1 0E+475532722 +precision: 111 +divmod_eq997 divmod_eq -800732873249143224844306188394573179806841173400976347422559450081201391141463290052879780382166599948545518578 -> 1 -0 +precision: 36 +divmod_eq998 divmod_eq -353555.842152e589679505 -> 1 -0E+589679499 +precision: 189 +divmod_eq999 divmod_eq 964767157703212359181510 -> 1 0 Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/fma_eq.decTest ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/fma_eq.decTest Thu Jan 21 18:27:06 2010 @@ -0,0 +1,810 @@ +-- +-- Tests fma with various equal operands pointing to the same decimal. +-- The tests are random. +-- + +rounding: half_even +minExponent: -999999999 +maxExponent: 999999999 + + +precision: 90 +fma_eq_eq_op0 fma_eq_eq_op 1171338855698368789056737337147116733764903254 6334341367673830006086235053199346622349828839 -> 1.37203471486876402097062945058787905483129562161521709249566934082907767436352197432961736E+90 Rounded Inexact +precision: 159 +fma_eq_eq_op1 fma_eq_eq_op 8846971720773377832118709116655976973169530112542418661239912443 6256181023698902965000946039667715131691025387162696107046936851 -> 78268908628163862019856367747135852723774224319783179476206001612701777270473207771109192335032068044416291512398851733353165100 +precision: 255 +fma_eq_eq_op2 fma_eq_eq_op 43160782777719481063272448014 49812293344537606155996723694 -> 1862853169985486563497651896052778055443061751840329267890 +precision: 93 +fma_eq_eq_op3 fma_eq_eq_op 2032071158752304061247812627062271522999803982027661360583876846812153089899539485250840 6360518457329636924305818275371080716215939771089431758009813661626572665849888335794576 -> 4.12931319423293173438185246065285707617873245447024136224145210538137905488220974932370465884E+174 Rounded Inexact +precision: 227 +fma_eq_eq_op4 fma_eq_eq_op 95019985613539095380134663979529421356656050721802478521977200303668310888 94197867895449893953505329706678321477778056838953868383808842326244093635 -> 9028797665997176656298151698503832425497797348392415467972558968046789558677401017404152498353487199247588110290399071760384180693759079897263442179 +precision: 16 +fma_eq_eq_op5 fma_eq_eq_op 67169 40270 -> 4511714831 +precision: 5 +fma_eq_eq_op6 fma_eq_eq_op 6035 2016 -> 3.6423E+7 Rounded Inexact +precision: 255 +fma_eq_eq_op7 fma_eq_eq_op 919714835167928220697646 3151474554386379581146725 -> 845875378027969376609761190338051688806531088041 +precision: 105 +fma_eq_eq_op8 fma_eq_eq_op 58579003124809768895928117957313023553972689968155401536107 22794089507146936899463699393953759679522227930126086846282 -> 3.43149960709647266874523823106657285395941102795802322964548707530581174913438709191028985167041180921451E+117 Rounded Inexact +precision: 289 +fma_eq_eq_op9 fma_eq_eq_op 6321362770115478028524034566684857904461014331846496299246563180914 32450823797853435926597568489482833970766353654307932459296863082394 -> 39959627271402029920542995495141283901003961831157061583783573635210750339026361102773680005604968764917492752009838209213726756957790 +precision: 55 +fma_eq_eq_op10 fma_eq_eq_op 39761884238052333 77824034961941106 -> 1581007438160274635843692208683995 +precision: 28 +fma_eq_eq_op11 fma_eq_eq_op 29207002 95382734 -> 853049061210738 +precision: 113 +fma_eq_eq_op12 fma_eq_eq_op 9920719456660795669387529712912849276834068505892470380963323514190331190298016458913474135546987 260630857608668459485898773458211679011402442943622770781592317441212422021975265378485821653434 -> 9.8420674537768072843903470170026509979119974651642347484874365516173350444970853431534683067125707754851430995880E+193 Rounded Inexact +precision: 251 +fma_eq_eq_op13 fma_eq_eq_op 2687293332990479408111011206027031441206498772219491635582831064397692054590788181818533617541850913052804269257555046970074678138286341245902 6868680505236553401291011930357017021221331841218539811296027125922992102170075379745347828892152238374532744002915901123324117536171066922318 -> 7.2215454575350796427811037173593786986835121269340288665616432949197399303838961208742351747645215690138308580147807387575417287646389468779244303336903932438309402857067598509803897385135643804460622338311955832363618935013535707023605373671303706398E+282 Rounded Inexact +precision: 270 +fma_eq_eq_op14 fma_eq_eq_op 4142770244507408737694289233754225199473641658092064739266239436764311613758679323664580870116711451279 7032248618403290957205640502249393109300206816717356020722219303857965719999106425326189255844382234130 -> 17162545298775975176388468839741641147214630140789271545826260055507883599248192962413805213756308129007602703363991517876495456414184094838455179469111148081087410436567654384482810332868617575494772969971 +precision: 152 +fma_eq_eq_op15 fma_eq_eq_op 9609039364262843755162443476219003253904241787210398361 4582921401580637664966964943612588298867459030119501898 -> 92333637503952876475944081994454694834775591957949791725766664009421273476790925898319780313776748714430988219 +precision: 112 +fma_eq_eq_op16 fma_eq_eq_op 586383988415267445273220419940131761801076068325345444470214379490294331453039400115120021381 883042758413607078927498338006758859177980474826535853700933576710670188697769748427700340278 -> 3.438461818697965054642125299988054839561426325171779503332210986806412552656799610603777763362193385451418139564E+185 Rounded Inexact +precision: 156 +fma_eq_eq_op17 fma_eq_eq_op 1206433326869742401116446050700669204932833028355736557631070997591867524926617013214183483517803253711718540803593573297989296892464067834575497336 85275614159310039238944599455057818253492804007182045386856554315551326909294071167147634320705362699890189553749778183308328180484738344068863896058 -> 1.45548137218199471224073208879254689512608192993759643946680129831316998230074043077527777902945154239589116847217848426060477592867106615240560513128852631E+294 Rounded Inexact +precision: 219 +fma_eq_eq_op18 fma_eq_eq_op 35727166458674908067967 69952778734247567639155 -> 1276430423165865371540733826980713196259152244 +precision: 82 +fma_eq_eq_op19 fma_eq_eq_op 136831165503 407089955845 -> 18722767853316467198854 +precision: 266 +fma_eq_eq_op20 fma_eq_eq_op 737667968468271760037774478957340970259100526723697860792462847753060807692332619001803815229002289814895181809410240755209853536394645273033904170100971905597314043755427777204515509447421571110125962504912882034447213479 39512155254732703209389643895098290912109353706810590032080671777577209517850490909324619762731759206889254116132653143492713078604153529862634811889474349899076688229927479621594460860339757816962702992682374923901034578573 -> 5.4415403170410717961697584751831598791865919149917171192071576682769208155734785192956894729598938092699432431192678003775639423878379755431417855281758343111785229956369843987790926495260079424986102474931103017727789983576036497596264451118286849765613473500304868E+443 Rounded Inexact +precision: 45 +fma_eq_eq_op21 fma_eq_eq_op 19504819998998669309889754407534565953989 13441506831737592232871798822678997241217 -> 3.80438003193338450258850422277293366111738793E+80 Rounded Inexact +precision: 159 +fma_eq_eq_op22 fma_eq_eq_op 782083265393447452693444388996458570514965908772856096830241405476749549661506614264571050829865402260660845 327185936565608197559176977401077574830757110040013706455325431022079235030822199332348669588343005859320756 -> 6.11654234008477561971644961715520944920726582409557960704532496040381194363875538470107276855339946714787389342211674436957484605701795622398857661510626240063E+215 Rounded Inexact +precision: 24 +fma_eq_eq_op23 fma_eq_eq_op 824230219106550 345201439767974 -> 6.79355454088431765881693E+29 Rounded Inexact +precision: 149 +fma_eq_eq_op24 fma_eq_eq_op 4680091136565499264079325331838686303817566723149494256228270373448947114810568294285051813966589156322061984611657440367048021342473717632 2754438032845676054481241463251416977933854757097325386984591278758436851292015568510355713902887080589901259441453388451924853434844602158 -> 2.1903253046558946682784136790471247234311352215543774586351928266586292728844575229228530720889801760726189467199433801422850383126954587901906336337E+277 Rounded Inexact +precision: 167 +fma_eq_eq_op25 fma_eq_eq_op 4800853161721968330783965083304713968829699125446446720648954175158379057675050623640448627168556683454478279900398246046669076061502 6880412930892811997776805510729734798025589017755091542747528342705200910885541990713367382708697134162487113474399145322182249344547 -> 2.3048191080415819807493423027249113591472064736405285526915814111279556354549685112079927809110005316329284101854151819161792318373943608320356654174800389749526431562E+265 Rounded Inexact +precision: 262 +fma_eq_eq_op26 fma_eq_eq_op 56845219726279424518441179629679026682939674373313592109125578857952747412892339778834350570261053520366828012537771712880270302878278470335474326567061733357693509847539305789604879202733368927819000486605636569262764704926536040997825441058300649935856686 238440661987106453512216345581330742724532255980404733789745631473775878035502893704277890018395812559413024884660566933881000137566871495446238985116849138431575190743684657498833902787617872411881680090732504474847374402552487934283976031214999627833023331 -> 3.231379005728987411371319268172985250425989051224627826082428734465352828173543877953931995842122110243253086634001025841654109015054676601663819641691489985060316431714866460809026507099457948215198472496972370473272600795818215666075729491668191554347574634192E+513 Rounded Inexact +precision: 203 +fma_eq_eq_op27 fma_eq_eq_op 556831127109653204483456865016421621243935346993513988303067101460412503290668244852257385158757760913162731132658140718852279594734661821456687345446500703776744590388648587932027417349350910125 548303346561072486691867262632838888364641333812577535529302895837631664503322468753697427074075037756828590508824731142337340611328514881444320205406299720861446757743454162842856923907390576440 -> 3.1006090411820676387539330325945265445227814946311938037739493128277150651918402239779826626534885924302889230606997109149198733769352712462268012476993704589802824485607085105128927177793161369873391939E+389 Rounded Inexact +precision: 61 +fma_eq_eq_op28 fma_eq_eq_op 38349256718435 53008306141319 -> 1470665490856484993174990544 +precision: 292 +fma_eq_eq_op29 fma_eq_eq_op 18344290834655328742791871479950344534980973 862534216923404836814525750635664078909825958 -> 336513006226419497655736798879847414902577908724729948371741801913656971478144381852687 +precision: 125 +fma_eq_eq_op30 fma_eq_eq_op 7075865937649968789577445285320153574408617647683131013605060692629009690825152828853948416303372617035420079210720 1922991366673920219982386590031242686320345871481290115937004105438859352539147347865540338497610231427681848298470 -> 5.0067878767595072005990790863181010980493507514639522193748735852116365576488807066268279478619997833051745927470016904063647E+229 Rounded Inexact +precision: 90 +fma_eq_eq_op31 fma_eq_eq_op 8788021824837780067252678241448195755954368462439 5147797262341549481926040820281569170341383909015 -> 7.72293275938251460061593236576792734146660055207141459652213159906733560334711742241585223E+97 Rounded Inexact +precision: 249 +fma_eq_eq_op32 fma_eq_eq_op 1531352382614938242535139966246269788195071891529106986854989846587822 20448235172085923436915402193221074770845394222717697114213608402256 -> 2345040119740448209356309654161456301955533392203525705611235020347730307302573907359413953840361315722685839376575625934948513069967105940 +precision: 168 +fma_eq_eq_op33 fma_eq_eq_op 2278556424983748976382810641359609662512673427408972656741873091577920729177701111293471390232910508232262425659154768850 5987329046382942421270262612787698712851528247750716238574387932088021344725887102524951228761384837636130769503260700196 -> 5.19181938183472287644871698862522511032683053252487647895291753389152791229903494079765818660427589003858347861344147812741113837075601291655260273415761273427826919191E+240 Rounded Inexact +precision: 138 +fma_eq_eq_op34 fma_eq_eq_op 743069258948717338590125763846785175434030184136673 172968393152319937240773663998303451093109634135364 -> 552151923594595942575863623478159103862455033899106013394486596285095817633953939490715363803977644293 +precision: 2 +fma_eq_eq_op35 fma_eq_eq_op 56 82 -> 3.2E+3 Rounded Inexact +precision: 292 +fma_eq_eq_op36 fma_eq_eq_op 205752428085972506938477755017298950617784157457100336351186255448214254741160350169679001960182114909684020983571086725337079282324366988593953377940158434799735179384709955024627638699694172933811940340143778906146177557871 108028342770468392110781563654259274375182471046142685222831981751694357636249484084287449116980939207122872261974532297905146453711231126243565987957430717688534370348125541464043959227054531015707628831276511226061524866198 -> 4.233406166327328809506856138688348791184540568733709013468460431879397908184138671134051973924326300298515056283147380089076188812270636210400947866176756300708901945181694839052622021557255181342468573256665942619483736695427657446617972662909026070923854402855621271004608079394510346049681E+448 Rounded Inexact +precision: 50 +fma_eq_eq_op37 fma_eq_eq_op 8697564439859034166666 906046782789596285062 -> 75647627185500394761499247327030338661840618 +precision: 262 +fma_eq_eq_op38 fma_eq_eq_op 942206763350568177696776520800398585826486526190641004 314012393183928641708389641780964790847254787180522579 -> 887753584903553584959875249609130120154997245162244285596103146936434966233430779444796589101822987586650595 +precision: 232 +fma_eq_eq_op39 fma_eq_eq_op 109733323783440637186262596300082 257785018071740245121458304926577 -> 12041402348561418597151161280048407073903996985160442214098133301 +precision: 206 +fma_eq_eq_op40 fma_eq_eq_op 6344557800765208699003697619565350134839009283418510241999356354458664499593540322378496357952805973150300976340554091574298053536809886242699954987024216698819770139742019103367465048489950067299282017 6883026901510833149053923894212844946365097649879184133938497442127210561883874060579963667506714303990256068123025072258596040803213740145747403742965766405420136509031149810680348458374256661229368284 -> 4.0253413687250661640369068275140481117761786903480355437061096237215149841788738086484818594286497729014438557417591187824482048361994920261245510480236253133257209218803494934260736169453339855194611819302E+403 Rounded Inexact +precision: 44 +fma_eq_eq_op41 fma_eq_eq_op 87250607185526 83953278509539 -> 7612668454243045216262406215 +precision: 22 +fma_eq_eq_op42 fma_eq_eq_op 7637259297477 4769315474780 -> 5.832772957690364889404E+25 Rounded Inexact +precision: 190 +fma_eq_eq_op43 fma_eq_eq_op 34893551228236972471470459178334983915287805488951929420551775225843700159015510638904034996694306682869235542787204229174446647940153066903755123871085897 4841134954803021874341047232335343848358755807102398288743670534152787157856628969496924060658168796349008424396048449498979199703009333067617403643925054 -> 1.217559917317597930129816627608063915574512779831669114615667312999662319994160116509337379318008125580912016311076842147592595932851294896646797704313997594779473712919612174040858046966352E+309 Rounded Inexact +precision: 115 +fma_eq_eq_op44 fma_eq_eq_op 31963828069397172171675022972259842422378108991929704539880 87381857357324810694296271270593284949488509481407921914870 -> 1.021686304849982554779581317787830973084042992649874105948350433067194666113466628690542320236538131163114890432329E+117 Rounded Inexact +precision: 185 +fma_eq_eq_op45 fma_eq_eq_op 11317301085042440533794584541266395584828739699889495618840423256785319332081241324432724835228504746795923362629001492184331218938490428246674265606 41615101501043261680382341581635428511189636409358375368209960155352793418822591265209586602949438854861890864933837556447719240304500736964397058669 -> 1.2808130384950280182332466279090558132496418792992141145563618560578755249139070579969887070796498580780097729553700452377829842413921694777581455037338024465740755654049993688356849657E+296 Rounded Inexact +precision: 242 +fma_eq_eq_op46 fma_eq_eq_op 419403190058739337215155289186999237123502568536276039989883873111441249229 349956518291463340964089786077232094982317228330145857520119417749037816752 -> 175899035831447030816493998997275700278393809316037530619027720637071399594420190352117952515460489069706724627036077053917913529460839281469130911193 +precision: 279 +fma_eq_eq_op47 fma_eq_eq_op 7977825179090074887313530550841866395443916653453679676811764244997248872722119236572835886183674811771172569904076182363574281917468878627483225884194213655410006224546529438527916332636595 6186821682734051403443481558740130342197155609693865912004713897683128361655865624921759001771003563902793540026937986500792416575187863450303997732822551235180580722690259774886217512448245 -> 6.36456945881235854490190568771085079808274574677889864552223035803487022821746318402114289744204260917171906702671698868640245392918208748469102082641271604120624619066067069502683429980154522259513780664191216241557392783846649398108033242019027704673364634369118207973843407247E+379 Rounded Inexact +precision: 52 +fma_eq_eq_op48 fma_eq_eq_op 1914890886959830523121 8228806468274681068085 -> 3666807108961806438587533789995007196648726 +precision: 164 +fma_eq_eq_op49 fma_eq_eq_op 558331513528226380087881522024353309491826315304679782667903534491203335163075762204499605932697238035518293829427021229063 254136671632976519542098216837203031155250167174077232217904199543669360007210653496870209040022461673020992339425452374150 -> 3.1173407899872003728098303493394708877360929845564484212757328119720832280223422577820918219512933910202022843885482071110121592398245368131451731936672808007795951E+245 Rounded Inexact +precision: 227 +fma_eq_eq_op50 fma_eq_eq_op 9957834973123833369854645073818390228446531457986181509318110602657164058294457791620643223442458963051038501314361762870681885064931170886590621278889239251626526934246086985112655558437775018054753493568397838679116251509327 4612760212414105647920194160390169408282887282893916291772038025397850681750551443877864620139197940920604797585534832103828085139844353176650508797939831819331076092779506071773051552393773641409930862143296341481721165797125 -> 9.9158477351968135251341391988631423054083448940251425704777543581363522040314850001545147327871729117122040671538881612236555905005473050287412041796556743272550105616319852026497578076977940508848045998278154851202465416121157E+451 Rounded Inexact +precision: 287 +fma_eq_eq_op51 fma_eq_eq_op 6399770919808459529429921820964231541075 7179625636131106026190147373493518931803 -> 40957067826026016132921683447226877738467820308716209172386670125177362931087428 +precision: 278 +fma_eq_eq_op52 fma_eq_eq_op 42145441191473047298020468711292635029429377518455823664011846620276725650723404282683923635109258247206324940673197122960 15340420199174423261900207237933197176641536395421782130534981263269368784657261065012591800055865092835268108775524797728 -> 1776238213223913072639790003318243080589626234127720283004787162864739697372639697986792491941919161427326577100828381190591077293434646175699664586569899248314156943474448407056941413832608800958689349020937927223960279791818879270396883959328 +precision: 204 +fma_eq_eq_op53 fma_eq_eq_op 56427605940374969771790978594207113439308936993146569532627102049171487128310917950706054567438459994447465728734673349557724690 40020191943407292942075335115053006335871748992067079090605165011439318707984469862832095825675985095020614226024122988897064851 -> 3.18407471216224057664420673865154530636270273878143746293502044088948958042471081595063241952632981844662414668256307858750647372962647182257487217487852607384671588017344543823027216421851745500221185963E+255 Rounded Inexact +precision: 41 +fma_eq_eq_op54 fma_eq_eq_op 28246972267082969 44710722526079939 -> 797891442257354410083770855934900 +precision: 270 +fma_eq_eq_op55 fma_eq_eq_op 932762364870906249820540404193009917028701688462806603648463483431125018888400071673238071071 948758757294308549719782580864602151815770279628466824520548935743245810515819598338218865453 -> 870045629319565641568441382321652417776914118194481739692850152102541350612639194746444201753703701981789472605543680002589556948608960801791143932231743888298096098524212019739065952494 +precision: 277 +fma_eq_eq_op56 fma_eq_eq_op 44755432475028441514869479545311018884133902034798595294869451809844868548830204151484055547061185716783839700952139956310684412039634470593839675166038134124511884174078842516992081377662813862167201872945849125809614924919253973058 77981640415275795542451542521115045172372662677710800344792066798292990880847685562565981534084198415347662933635958179006179126019886623010107549764843231153940924297544064540722197655510693617119077767799764148551308685829381030401 -> 2.003048736026830450221456209376890087910686751388996237534782672768946247594606110507463851554599055857884980074678570303911983639238785064018092018469191366460570407168299711743064803410389656062188719754955305132883778654902538096625042624634216513376523269197793846273833432E+465 Rounded Inexact +precision: 155 +fma_eq_eq_op57 fma_eq_eq_op 69578521411563282828762662677392621253545070640152637570963841047046019603 75160185871815188731380402231078753715133033189050621899318227211937905631 -> 4841170641819370203644340431017845034250443903470282765391856898560528523877609455791832749300795307764276628473556254813769958692996433697798183240 +precision: 284 +fma_eq_eq_op58 fma_eq_eq_op 26019907723665241138265260352030784657531055195674817128723901423968515767464423320726748 60279123544799972199958725484770008488056791336389957909340187569989338894481646631391484 -> 677035597948054070791853663084863484129457269044134195468201233641138088887128629475691023557751846582509514336360734206991302247910039385561554789500773683445186320101514046988 +precision: 240 +fma_eq_eq_op59 fma_eq_eq_op 927024371835082 5483050759121106 -> 859374185976233856314965067830 +precision: 246 +fma_eq_eq_op60 fma_eq_eq_op 24144413560019527617627622481560244633105713785127062428572923951778715944947393635911789410619623350194857688260655923787751068207556709588491122430565013980769301365420857009640531184961 67238622304823194647393331407498640744130591686644348268420789982395880662268372589526954868412743279703253863176658538640137984851960528937569520425059768365464744543640558972941853970388 -> 5.82952706157254839351686107876538251585224547672804572259927795854348606085992978188355181835852584555625130625189935382494432218838259043376942290313123003777209784037362682892980610298148676753823025822293052196234367419787502822615808427048227E+374 Rounded Inexact +precision: 265 +fma_eq_eq_op61 fma_eq_eq_op 13198215899922131942999562363157453830884247111682130245668507180884071495173502075845649820391007705927955788445175854051424385 810321163113382417318135988455938832844638637558223535447328457409028411880705221955408943415366305458526016285361693541211120076 -> 174192902940957371143995498783233586113445964139634014433297314570668072912854220330104275168383379818745869540509404229990915361716234919069791370397699408930736180871782322229187216218977720745146439629215712583697581973984864966612150381937588583748301 +precision: 63 +fma_eq_eq_op62 fma_eq_eq_op 70372742581187467646576010289108970248 32839190235676664006961459555098056046 -> 4.95232289839807576643055406036945865017609651444458925591205910E+75 Rounded Inexact +precision: 39 +fma_eq_eq_op63 fma_eq_eq_op 385757927220080789 675121587364522725 -> 148809178413133147597885947051385246 +precision: 140 +fma_eq_eq_op64 fma_eq_eq_op 484241408946576020719122775367829315458066219793403164842947019850860459489338507690376115237818 803348447078271516767084428433273244090326227785161822245452360831496953910485123119294506263176 -> 2.3448974213856507500013653353841992095738568744396113501978746512238428217546897173089829694079123407571455298947684811068669701652056502737E+191 Rounded Inexact +precision: 4 +fma_eq_eq_op65 fma_eq_eq_op 4732 3237 -> 2.240E+7 Rounded Inexact +precision: 157 +fma_eq_eq_op66 fma_eq_eq_op 850764062260643776159856229736330501958392574420097864759893947410314226804103191170973970719114874870052030321174948243 594630915742877925604156546222433488993826688951545568462877123392103170423202184769520166751882866655870557197303266398 -> 7.237994896342325595494912727438406923379973902228956549194128061082345920259501521218674697971089891721288141922979835284433506253818878177668750045026748881E+239 Rounded Inexact +precision: 35 +fma_eq_eq_op67 fma_eq_eq_op 368566295871840314972492732351230 14945143584666617744344450403010 -> 1.3584111445268893520219488136557431E+65 Rounded Inexact +precision: 186 +fma_eq_eq_op68 fma_eq_eq_op 8070760402161295016910106785393231432001888494005344727473067235220751783449893484370327 872079251864278261292623117248702281674170678474389104944642831511568792854833546347548 -> 65137173469094748475062036556766440114296908514327197652874841752342742463503095017591411697866804417591671750083994719104566281196481897108044231386590293933748519469224434477 +precision: 86 +fma_eq_eq_op69 fma_eq_eq_op 750665521941777343 22569557920689070 -> 563498725832121001607695527708828719 +precision: 158 +fma_eq_eq_op70 fma_eq_eq_op 6360677373 3742816852 -> 40458216647136997981 +precision: 220 +fma_eq_eq_op71 fma_eq_eq_op 721445143333551 992437672650841 -> 520483094839568939334514920442 +precision: 213 +fma_eq_eq_op72 fma_eq_eq_op 100638453821693426452964787128372137994438919601311338792490319217408557650210678422660527585704751092258426442503532231993678056905867113283 749675752232054070592872225387966252582247274414124016809749691108370623293591898855771578432922049180534593819677392864715839317496058206224 -> 1.01280983876211202321713939561612205430484170647767547080010342338279821938714319875345837301593241135291751381564165994619244463593569411352288933417785985263029768461552037478381217802410041501343221994864028644E+280 Rounded Inexact +precision: 94 +fma_eq_eq_op73 fma_eq_eq_op 534916244488413060250446667021536055936785044460309389103 637914114191895158301416026315112960211324618676349876273 -> 2.861353886175876956579765783141639143808604698191922671085025628016206004565219115942961691510E+113 Rounded Inexact +precision: 243 +fma_eq_eq_op74 fma_eq_eq_op 40750062087630534952676865928623924968802173332361455036085863786754049439880542847459100782750172367067762781157837364773988679097744640132 47910071687674462178333882011183931799057430251265596371212862855818522795729671380822046295261996134417553023410424341103733310421831370973 -> 1.66056756014574347250860936120654692346072499402637244610195856031090817288387108920340991590666479085937846398586682198405082304046657813575197383178070151966243341073153474646123182583045629316740295261945882733655235388106510727718991865711E+279 Rounded Inexact +precision: 176 +fma_eq_eq_op75 fma_eq_eq_op 753710649317742644212823374391365029539749059092316744367696946182775533927142794540841113716808362072905074252308879081983861019443207713940802018160934362 104470515717127477074847035816541152583288763967340424588194297407834857755076652297384909907259832606797243423679191847853770411952380920598987416382383625 -> 5.6807974289497323027020678722112829223413908844874187514458255485255701998293932045171539191212521487477804938307348108072793718468411283470099318942141246290504684529699173206E+311 Rounded Inexact +precision: 176 +fma_eq_eq_op76 fma_eq_eq_op 29787846939137 16314469850977 -> 887315825269469854252155746 +precision: 88 +fma_eq_eq_op77 fma_eq_eq_op 66338777433282195231986190497677125357363109589759405 41072363836768545385970131567161767692558764342285896 -> 4.400833391342551042863851022058840385027280404084656986417376461886505202295203907045408E+105 Rounded Inexact +precision: 182 +fma_eq_eq_op78 fma_eq_eq_op 556636606470346402438846457295889775196549394294934954679139184670126178654647602767664546024291895922924735811329922233754407350177154256340473318 584464978303992348438207619772521687023561053224918002577379283956886275148980469914091775979605871266645596632785308568565042138565171302912822469 -> 3.0984431166282328641696496737578135306274349888910162127313879471702586424981263065540776486310538376311591038812388936547409401578452549299802906846753503435031826063796021406360319E+293 Rounded Inexact +precision: 248 +fma_eq_eq_op79 fma_eq_eq_op 20960721433721852961185072525362285048458769570797646343247 29481459219677077529860998452710054790716103631647688309538 -> 439351843022086691159494005221613026432069627878408829470433651316587162048032537902393094436945952980106958630812547 +precision: 80 +fma_eq_eq_op80 fma_eq_eq_op 5154938778279163978006211097154878341016 486294814903821806069194644841687452740 -> 26573393807806279715367845945771467977130898149006905402924555404264710075364996 +precision: 149 +fma_eq_eq_op81 fma_eq_eq_op 879542159752376021871396038793532898353033700229609797256048143250366569997796469918480796433794573470756315188195969901100556689995 4337981676774697894689324692470171355862828941873295425398218902433634228458168833224419129237380929200627742916890647264639320396309 -> 7.7359441078187414287926746289605077183452051141538578285226997481867127126504177452270887818631369011306564522452035101924843349773946073300313005770E+263 Rounded Inexact +precision: 236 +fma_eq_eq_op82 fma_eq_eq_op 61905588386537115819097955720649593197224541260214821077963587933076546580413247211308765567771198138208138887692736926293473260594920550577706621276199640765029972028189828265694361397368525838983706030506099646856699585716064 94917742625978865553124769114852454884908739322763281173828133404045824388222993618058642373483981311244813255336903495200451251408695209810093129014014037778406314382272805101076575967317454905758766111853304893574755295510072 -> 3.8323018734833590266216630627163007019067108159925610203289649660434726673104818429210554489850885256663386723760713311239348463745224905262771964845831151946750242183222289710617323709015867090016964981975118743726754263166105276770179E+453 Rounded Inexact +precision: 265 +fma_eq_eq_op83 fma_eq_eq_op 4795424220486646480449572465375447649177689635149472 3737099687042242584083504688735043018762120589311856 -> 22996093454429961038088097375147022216179394275494439621458815929390955137050296393465227237388371190640 +precision: 289 +fma_eq_eq_op84 fma_eq_eq_op 289726725424743448118401598574171821164477538918851309533571973040524410219724838125138792939350204776121799680947835046262327675753280036658336786188582727232328216161741708718742923534349538057220541699615864286902322560908233824 54931335291904106786296424581711050020035976156077199075370648311706385634413067446618523941983498856158251320111664976337504133005244059313576750162133253809210643376144131671983555268205585100398641542025109816961473583736673324 -> 8.394157542534468155751081149882825313476971205063611797870236852837927432448400751916356186169967040377768259604984070278231546084095034999503833244202979566660863210128184733430690678688467491814866465118349106052380753360994310922332378213220895598810130018457494498562447455390522459895E+460 Rounded Inexact +precision: 273 +fma_eq_eq_op85 fma_eq_eq_op 20799235663476243932546889430881426368603714856572244032276473880388504238449666878734190554945596322121615183848567269976679617345859938410586933273187326752096765536803532170172320630632588510249822816362592371796770459588162153503329854439725105674538139 69357423936601857221760869714021518479862516231570135784771421388700172350358658602094944919491666345268684089795519350964220918137525014578345401187174137291037443606696697679975255327584218009921483253066699778275106352627261858567436974178144200237294408 -> 4.32608204184822069141460066424301199870505452606915135479731303768575497363262836649227428847486313321145459431801932040904565916393691522457966854144106355291589175065894294951887117166450328704352591255253214049116077784423043964068787459408057152175429512801873246579634E+512 Rounded Inexact +precision: 41 +fma_eq_eq_op86 fma_eq_eq_op 415680289618377 66554530732600 -> 172790103177217848078826846729 +precision: 220 +fma_eq_eq_op87 fma_eq_eq_op 9470412895108059165509124468 18016938664625081926256629043 -> 89688720403829010853932780005081896739670588090172912067 +precision: 264 +fma_eq_eq_op88 fma_eq_eq_op 2355722527347427402872593994228201594274396766 5898756801444825907897647004877264713194868716 -> 5549428625852150848008854166523360682251455796728202369724192551496270207731848306386127472 +precision: 290 +fma_eq_eq_op89 fma_eq_eq_op 50703550 7039494 -> 2570849989641994 +precision: 200 +fma_eq_eq_op90 fma_eq_eq_op 878452470620663828963060760056770758543575310672980321566641248586514615151178096369642458613966642710153812703876841619325448705795935502226979323955534945239263924291215465507246222501496429805 79369484237608855483623699253427808570905741500748088568512213698925325745766808678914283123306369537493026241121816715779174728840633919135411559112087907704591192174434813017501844556423296698 -> 7.7167874313954824756974011544698276692709036877675714548111017660738658267759825211120129229941775954700333519966829388055575181418370718751715900842369832485705546715669106724043390777434836084084758E+389 Rounded Inexact +precision: 113 +fma_eq_eq_op91 fma_eq_eq_op 41964053984294341258412224337648242 8389567414687763382810539645123344 -> 1760981826796769777171544789237582641995372800215849786637290970813908 +precision: 252 +fma_eq_eq_op92 fma_eq_eq_op 827070378781743428221791947644567020223122717621689844665112313751434047915838745557430800469179864072415714346703926828020116334698827963163664076191982238543813741773699603721026038594719454189811108522292747129943570225673916354078266195229266353 911237299256994813123528906514311447993923680601626860100924933254610859496162948179258384118757345102804976073979413438120211057589873801270645384065347796941742324212503147872712638268634617406565373233120994309552281110424222738936123977574219339 -> 6.84045411458176549967949455519456489082655864777425476118399269618098227007778526297956189671643741802067788643634954540542642058320679023551481819793151580340588010304233970990552449927097851770930080360373767841612237175972603409764311232826375266295E+497 Rounded Inexact +precision: 236 +fma_eq_eq_op93 fma_eq_eq_op 8915161373991765040711659981865598343534439627756925777185015846867345772210861646861075628922565360194494537337224273701421345041688317985014258962943323299105250267702835845047290597332256657788932963 8648467810351376939402850967162222368346461685645522552667857462565144854843030553838740138503675990404006735110637289709659792637534902268171313555758791087104518385956030069135771574255882160817382248 -> 7.9480102324314735894072324898053926240891169690545764924751543161142992328581601696087392103793637033880410517745847086189367271351274057433270552562124164870797796273604598027726563540565403898006443823685622273996237565183357879679264E+403 Rounded Inexact +precision: 273 +fma_eq_eq_op94 fma_eq_eq_op 214862566695958644646494784699348758504083874959022122 9210983405034183715951857150563792624505640181875704803 -> 46165922567175276921614499750425229405020491652465954964467113960664311194019843387944626444284868361087687 +precision: 111 +fma_eq_eq_op95 fma_eq_eq_op 209878347951498897797451558601092714699069293461471084051406111 922103864308072129114787202192991872273526913553584325068602003 -> 4.40489209388504415894523003733071091852366818774151659680895231773906822870108674808130858958180330344058830910E+124 Rounded Inexact +precision: 241 +fma_eq_eq_op96 fma_eq_eq_op 4486393344107764566055106797696261253206560730269739866812015315373641106936169340549452404227910691220953988345220345737431399879667838069444762030792690496135185927800624640159996615471097786175358264520674464 9071755386330930115760089995872452609741469846797088905499773628506938347003617245618487704575087292786413157478517010038779686604144079492727127806679535164669061312177432810221331446227998229374825958288898405 -> 2.012772523805445079974897215048436751641983698152905944161768599477558103346514092893445136052582934856602555207158487264371502747880485740182550532618524489904815281156889856892927844324404883076775364018847495496267736301610016981824863385E+421 Rounded Inexact +precision: 281 +fma_eq_eq_op97 fma_eq_eq_op 772642996028648219098312256213195221913246758068882490363535460327596 459513259209012062737496437476397247012849825151700395524883816529509 -> 596977199312125707669189520825670445086296409019234610220117112565420809027105148032212272761021398237790898270841239004072650099455668725 +precision: 136 +fma_eq_eq_op98 fma_eq_eq_op 903274502394323970812962043768690759432227353770797925068727270712640843209325840498338062027620479456102848628661938 411388176616041049582067972826812966404363727937807525843306321821896777886010867292278459851077612130371633948032769 -> 8.159048266757135808809730444178344396135690199880189780185425209757635022350339918984751232214861327918292784970377735266708625939167886E+233 Rounded Inexact +precision: 124 +fma_eq_eq_op99 fma_eq_eq_op 1271001737971773010556280685223527043 1627641562225585871745449006431644302 -> 1615445417927267538717846958402923423545095939763361509987542255383968151 +precision: 297 +fma_eq_op_eq0 fma_eq_op_eq 7707694623466593197623664898434087270493181481772613014059500867197405509607210296163396133440674504157017327327043456064896434663100866355390862900300493884836563591146011100465795418724503881025923756920085380412931240976554612739176481209179807309673107812697875300690953696 833569419247331981323914366270293897038827426858412740460452927777819647623216017681084883230383147876673487260445558515604737911294141003022961737243794317460386918170257673236772078757969862833593551077542410828156263330714820568596065673113199139107821913961847629074679251 -> 6.42489853101883124031418513229291474242034892987247111416617411630725705981031046036236423612722233814771379536069494331138540659898799103704728705873366317393027279521928821942186629091032042774488540266861239256372750574701774509671740230660024091922788447779720193773524304316953397651596439286E+552 Rounded Inexact +precision: 236 +fma_eq_op_eq1 fma_eq_op_eq 29398140409773691926982623306819161448661642232524417340891284353622716489464066777983986052050366098625815124036942629446983509902547195715697372816885886831466690622758741736630 68837975700903398680383700062262324342079452614048856150054870964400740533538933256377626535418748018551754331140216210267669298749611625192711410773135272269831532733407407445080 -> 2.0237084751797476886208402782082605572153699762191748228346858787806696528725777745585561286788976973757658917052213349471979967530872768199116573719583403642491251566529785606951104167497083565148026241200224199858888877685253567845319E+357 Rounded Inexact +precision: 203 +fma_eq_op_eq2 fma_eq_op_eq 561547017344187513631446787549846209828475312007265509126898012116993700273241928122178615515110141526974070164557538760117985566174090136 830741004045580104548156299609792478246833174349476231303400864561919232000024379723939763542638442598586513283570306739791850808394964594 -> 4.6650013300731112039770519601286248663814558066440461269521915866488422598599211669741117736646086388191014500298938378563490607982411095235033043900148183715267888976445117469708870818662550829103499539E+275 Rounded Inexact +precision: 96 +fma_eq_op_eq3 fma_eq_op_eq 740766784220777507995555777619762 258406424429341487252226125968731 -> 191418896046512655185160464196550580846435725552039032247397281784 +precision: 267 +fma_eq_op_eq4 fma_eq_op_eq 940840559221966399102 54769101606816228156 -> 51528992183841678575219980145666951915014 +precision: 206 +fma_eq_op_eq5 fma_eq_op_eq 99207900985846751792404498409506556238106363253631518881919546044143351842704095267213683678922855818731656665931834259332113197687457831 24648168335121922781839100099466219432205760666514996153856149052022501072196778615682985274013692891745988017920664640368889529141763061 -> 2.4452930436732588939607614884121629118617689378380144761508266673193695209477248362760844300825552313211564432125609621513246916042098634443997802645225168447518474017298302689832835197072259140489149233056E+273 Rounded Inexact +precision: 113 +fma_eq_op_eq6 fma_eq_op_eq 5068 3595 -> 18224528 +precision: 244 +fma_eq_op_eq7 fma_eq_op_eq 2041601281196659351691906279817408919848 5008513532614299603525669514945728882299 -> 10225387645076160373739866457211073027837056702101879715947832299721899325890400 +precision: 55 +fma_eq_op_eq8 fma_eq_op_eq 767855147152124 824028995267434 -> 632734905418693193114008281940 +precision: 101 +fma_eq_op_eq9 fma_eq_op_eq 390198805966743430519815641396787300237643774732461095207699 255459233476062073287895453508181110036803444582089655562974 -> 9.9679887875538952831370003847167599419519683406161398079493718041589552883215822861493718463748718806E+118 Rounded Inexact +precision: 158 +fma_eq_op_eq10 fma_eq_op_eq 86074863087461509281732876135109207519215378581865685103721800009095183 42438830692808189943552377297809136198917458518789736189752954651620204 -> 3652916541475424219214182180150747989572648040122572976014941826986296139682476612342011085629978899600454936901036543117371426316187010972515 +precision: 223 +fma_eq_op_eq11 fma_eq_op_eq 395597983765620947780869051617253741748930862230304190314464329462317362733635180475402581172740920254332581479991721586612382147842837289926669 957761411059650500997481486842144516524772392690608453024191636540175697237003712265083651233157955283020078824909418037579620936365611085389949 -> 3.788884831437138301629752990670616364876438996445729394847761189890200768738005283839819464244184327630229767476402489046127525171902891377088469225598232400524283623973191265966574566229440421493055701192128324970854044068E+287 Rounded Inexact +precision: 125 +fma_eq_op_eq12 fma_eq_op_eq 45536329186105858355404 4347493461499667961087 -> 197968893397291716013764604756220845546519552 +precision: 250 +fma_eq_op_eq13 fma_eq_op_eq 7910900381877640892565140867141244403588975669943834231481949791470576820266387348220148297334424369905172125932238043037337821359091266052070876899548630787462037421 771872058951822863863677567724605624232028855616083722901116909923973813794296694479660652261957724192937086555403520959469114032400054020615418615220273472442984993 -> 6.106202965922656437148248850559179375878099796328072165765091499461390839417141233766263297229845666984676016394058126057384409193842150132273645765678432765199496670670754998955264912731545592790548862873511998411333448660540569391130036565741686384E+330 Rounded Inexact +precision: 253 +fma_eq_op_eq14 fma_eq_op_eq 781665471222511298424 10078493274067241585 -> 7878010194286681104561729818784949060464 +precision: 266 +fma_eq_op_eq15 fma_eq_op_eq 48841673944903339605885303148589837422645895433435723823793663818388866836259820925051913594809569639865738498565316012940079014526746996591767923886301675693915291339459497715864130770023802284010459554527831981336157972689293436022931950241013686692976102330597122 91564376968144179969513823646689905263066690058226949088624924178629393465386704284485779283073803727632112244907798304105573916080249532996327692910407854013932577752656597459720296672661131349737967018602559789321737137718648182521689246625917184627908220217973847 -> 4.4721574448463150410557867270976197715919498242196180850523869089189084329582809477391778392927933581416910456110293413075707614287892358697857009425357294446730891240281995275247002098867687961111207893299466537273944058661579768237409385254484685817847064242320693E+531 Rounded Inexact +precision: 73 +fma_eq_op_eq16 fma_eq_op_eq 70460635762977408460975100089966291282680303871192927356866382593290 857784527906260617247993317114397472737412964257548043699144950057070 -> 6.044004318392055968662526292720381922208482752362433995402813852436634150E+136 Rounded Inexact +precision: 104 +fma_eq_op_eq17 fma_eq_op_eq 118435661874111332064627 8043836124967486070449072 -> 952677055467411126366825230572211760470148240771 +precision: 50 +fma_eq_op_eq18 fma_eq_op_eq 8515841369802 9707133724467 -> 82664410953024763163715336 +precision: 104 +fma_eq_op_eq19 fma_eq_op_eq 194313454176195713648637679947949128727 101722529806389759750367622258912095507 -> 19766056134220619220705771858063973412280586555861476437621818479690410458316 +precision: 24 +fma_eq_op_eq20 fma_eq_op_eq 2030810651695821778610 335546195605486555027 -> 6.81430788171631840620189E+41 Rounded Inexact +precision: 184 +fma_eq_op_eq21 fma_eq_op_eq 16259791276461035366781679986216080028113073375611757855976948660361889829660712605274099155524357085018160719979362660845652335792694190301913854575255204217535709722 99647933016952264292651433245586050378152533852776480616649424129389776926839452327216100109391880818038875943625326417315599457773834588256800810570904904791960102008 -> 1.620254591986414008401606951475319823965445173701525970661004929442262115582915111075556904614283026579355467015928953704776266696947199527318250020914170725379859610349709101748155226E+333 Rounded Inexact +precision: 215 +fma_eq_op_eq22 fma_eq_op_eq 46172873400901156081846799614219759525 763941009906259958168820173886601111118 -> 35273351536158317003267442069977931406516340383322530056530277172109983658475 +precision: 215 +fma_eq_op_eq23 fma_eq_op_eq 80987518647492939599941565354636305189361467191744626014633313970998347335272060741036984027449431758159347135460644918684212829310351360121370212832010202713206002301772406148739445192781341865831430978 44100113245091219660843258236006089694773640054778885751894568011066637814379408425910026746600126698731916028590219063233735557537666668066460107053116002315911498129401618581395037643439526871289210460 -> 3.5715587437933755256789293854379320415892785599145258458188090232559395259381806837756502442043298066492017413751099287196974685944223055081140260507068543151390784614348490736005755168673868493418790478031610156647E+405 Rounded Inexact +precision: 85 +fma_eq_op_eq24 fma_eq_op_eq 5390586213777894631086786010452107864055450578063962 5759173873332869852881843504522282087602574674514643 -> 3.104532328433800702422913317184653588725478678938060194280121752479733418619861454244E+103 Rounded Inexact +precision: 262 +fma_eq_op_eq25 fma_eq_op_eq 1254293303165902020720613182747933611048026902692620518703593720443145049268369008780855368887987579551547578718597783028861157123407967361387385312891725324883464002010143528590296183174894 4814109787133104936261390368823816677385389472754036109029826670532665583196889368769743757600919553544838830869551365245661162598608939091619134676213571833381240489225402794845434681246351 -> 6.038305666706479632805166890686113078271960768950437271093011285610067855045554478205946723832447313749597321123147789136332685360934700806313791062182476023741667333075832832385523884546312185432050384858317054910519058961131863435181919381931537229829222193641E+378 Rounded Inexact +precision: 152 +fma_eq_op_eq26 fma_eq_op_eq 8462987444779480784433907369491079397244905226069509640259626247278824695738059894187103093 7590246958444767503893320106529515959412108178251502589122246967114588470716798241957368748 -> 6.4236164712093708806163996063190959489626955168292715058407536680923155845397300359731902729804032921295623170743958507894730476582086374816652858696126E+181 Rounded Inexact +precision: 110 +fma_eq_op_eq27 fma_eq_op_eq 64574610142694299374819229841310593595350021 82727311902252874173836876560209130050729322 -> 5342083914241053282208706242508812876477279883768329679446158252240087155711972513365783 +precision: 82 +fma_eq_op_eq28 fma_eq_op_eq 577026734107416067550761804595292962317240536174430048620879711211578990 773579376203171668293315514077144111958141210621976819509011884252515945 -> 4.463759810233683227267392718887219028812116885420564668588182758634181441320574309E+143 Rounded Inexact +precision: 91 +fma_eq_op_eq29 fma_eq_op_eq 991539079725779518090826865584280627729254240841543916589996224207717131742168686600989196 977142335095511524733191941655090673886157519462755646886647274129586725148111939348511997 -> 9.688748117017027673396004724696415927558063650712568649679071019592876044849518654405678941E+179 Rounded Inexact +precision: 242 +fma_eq_op_eq30 fma_eq_op_eq 71192081580125168409908898770313521767992393903530503590559270524204887444199 65810855008966545666665077712829889384223942932097506561714849317100275888122 -> 4685211758656135390668233127515078777760306189026492221265584041345831984546401004854247052461586231673803923315646510500554790857272191618967306329348477 +precision: 261 +fma_eq_op_eq31 fma_eq_op_eq 962340298753059692378593935102176389690846318862499736281250435129309332751036290981322061945931274438580432312613922 12830253757588172771916479499713617171887610378923128379569138706381721581957062012974686286658958972709479148207547 -> 12347070234154968894430239221772295012578382716815871599684117261893847669544632979630634746581631583137526583951528267346685051880811655095799490674450709928960372857317066497169524592309204581877931370101712267811670599116850283256 +precision: 187 +fma_eq_op_eq32 fma_eq_op_eq 946134122462693038614806297547817155689089319089539342984746042648215818818427742878697991693437804419303011818885370905962090124426032885239058669192375336603830430871762572 927535743694826369532840399588599280588846960122003367896261519520733138132251325147071923536200003550933033958354923254984329791516673715466942132298172098474263967341684429 -> 8.775732169134859147544048758568263980258464829010724400387994702104972450671041061225633551190964700071924687538368977127481478616221969165150752064739398179536372606533613404087640007129E+347 Rounded Inexact +precision: 275 +fma_eq_op_eq33 fma_eq_op_eq 21129292461280993840512914410795081155985699338008797046990338395639613812182792945 82347647002689396236378163893426362493036753373985081145415262478776144777355607199 -> 1739947517018153488210434390916883258902776583288294986535755883951598393342111848527887912907295683905423053966535265353689781143655323710850246700365847152351204000 +precision: 281 +fma_eq_op_eq34 fma_eq_op_eq 703643348921480 679062390619982 -> 477817734662471045531585934840 +precision: 290 +fma_eq_op_eq35 fma_eq_op_eq 616594936118993501279235109024845955434344301564622769717259221715842426770935084466762891611903932815310373532969154945403321687377830035885161304671544214384051956098583021 742652550202030547298577338495683779057745896067405411831758897658484802922775751024332555259821502554346849186908517089966830355503567477688325157073802837184820682884791047 -> 4.5791580175042863956410380487604416991298215111820104380660924124560551550236668306322423100225752056084497055568907987635446395756516782512887117134942804963845146147547843570284518432738914206742574881734014558458264433638925845461177330975810915202547698050947825627474966589175431375316E+347 Rounded Inexact +precision: 16 +fma_eq_op_eq36 fma_eq_op_eq 9036352 7205227 -> 65108976448256 +precision: 277 +fma_eq_op_eq37 fma_eq_op_eq 1135 9440 -> 10715535 +precision: 116 +fma_eq_op_eq38 fma_eq_op_eq 398966043746657269311582 429219644156723025695655 -> 171244063327555824849730934130183407915767887792 +precision: 131 +fma_eq_op_eq39 fma_eq_op_eq 2614688305795637369728664580140001190904419379670299096902914874893207946194694 5927629223234287269967358409949309929885262863566446340935167071868293804345684 -> 1.5498902811083168523694925219478491403326209618283037013914476367119571415729025685323867549014633709647911700641888854674959975279E+157 Rounded Inexact +precision: 111 +fma_eq_op_eq40 fma_eq_op_eq 20800372037998295325407640397739952219376354924081660932221348712785572028166116464182901 90680793720931828406061039834105104716191647483647809563043876313824550886799990940545000 -> 1.88619424609636179763657508804171108909865100294614445841810831710446229911886670793053498785418196363523425591E+177 Rounded Inexact +precision: 266 +fma_eq_op_eq41 fma_eq_op_eq 26917560071253598673482734743809050688756946539635739733404122055248934774695260576623972115902531176226846294342738573806355060520208672133625059610069251602896917030464981466853344068667819806337156160279 31888328476717747697850851913541332345478408646667219251350304275490257633090211990515403659658944926033210332689360828006984791826453143762744394696238403752590985454128373518574622593209977927522192954098 -> 8.5835599734391673636999960027070509028384110089640638992365986870943748527402225777890813030547605656223487338053782695309040180817037207665784574359585243956752580360413693084671029646366263198826028811237811006153271549364688630282653598602454444797705193317037276E+410 Rounded Inexact +precision: 156 +fma_eq_op_eq42 fma_eq_op_eq 4137961816318052133906613950526831544053421481201474982649150967995784785 2061142875757074874596928576427260364285053554494164053825146983210698319 -> 8528930517858758812856031379031857714137030731260056679873569473203624189877020022436883749492839370514359762761032815390790235443139276281061200 +precision: 134 +fma_eq_op_eq43 fma_eq_op_eq 35412414568228478651359441959360607526925003653818444010282303133272608680670576205734838096676332 49155501310096766125357392920515520709441683220248559446636947560474370238888844319616984457642719 -> 1.7407149907022447888735232467730021375263507672680924233241306393003616674200305272862439914158424369795868893786351286893414343463213E+195 Rounded Inexact +precision: 123 +fma_eq_op_eq44 fma_eq_op_eq 7571399047606814572278045057858772244405832267507373237718954730283401497219271391793313590361599287634252277597194 494049762407855587256932801096324736013249769884986203977746245038785445656282492435312499908628489584254516830991 -> 3.74064790056521081393035902675668288050105798809907728884937372755804928258374883803658444594632104991433441841668440245632E+228 Rounded Inexact +precision: 75 +fma_eq_op_eq45 fma_eq_op_eq 5014632905716672072127 1683159381718959767503 -> 8440426421133624434313235178860037838761008 +precision: 72 +fma_eq_op_eq46 fma_eq_op_eq 45297046456356796733998289 53140573476287433995361710 -> 2407111025472833695156068571064213917833885810112479 +precision: 9 +fma_eq_op_eq47 fma_eq_op_eq 561 190 -> 107151 +precision: 145 +fma_eq_op_eq48 fma_eq_op_eq 4378697283307187771714089827269007915833860 7838301128791541411699998414865719942190990 -> 34321547858383185710570276099332372130555335580152776463967168768991205251689144755260 +precision: 193 +fma_eq_op_eq49 fma_eq_op_eq 62678398721458813030762375786572401 72369693586382007263919313698465319 -> 4536016509957052065557965418727248949406995943380442344409056767633320 +precision: 54 +fma_eq_op_eq50 fma_eq_op_eq 28836430696994499183588591726072724111200042 87424499186719227107687277593933811126721461 -> 2.52101051201728094916834248186472696031468108663197633E+87 Rounded Inexact +precision: 121 +fma_eq_op_eq51 fma_eq_op_eq 823002510413513462774324722978578261626541298271115106231270295339472891835 559840934659785872589830940115379892033431991123595254197143333821422161463 -> 4.607504946572515326979535891864362677882685657991685707920857752545972173318694858087953464979081019853694276251106534626E+149 Rounded Inexact +precision: 84 +fma_eq_op_eq52 fma_eq_op_eq 610641155527221935930345208898496630528770984480455983869622748357182528540934 124747938556985970303930314660116002062074148608743052815865926087285764518313 -> 7.61762253500767958945216063715132813877864851017326634791160202248053720136715705466E+154 Rounded Inexact +precision: 71 +fma_eq_op_eq53 fma_eq_op_eq 629646725766993440450381827100767 442791747424438217281872047725780 -> 278802373962443074236475501290232021003016818552450842415070774027 +precision: 237 +fma_eq_op_eq54 fma_eq_op_eq 35872493107 22290962739 -> 799632407239043833180 +precision: 135 +fma_eq_op_eq55 fma_eq_op_eq 3549890872298 8059967215794 -> 28612004050371794953546910 +precision: 232 +fma_eq_op_eq56 fma_eq_op_eq 35768949480993491108889117700289466730561622644672393757 72696401239266149878228802354024346254974408379175142527 -> 2600273903377343535547920940720594172270331805977302172807525631758536694177395073838963313914578058677412397696 +precision: 142 +fma_eq_op_eq57 fma_eq_op_eq 112940508475413346182469115592059319483362611157507703 517346977118883618621607065006473305212021730311072754 -> 58429430654024749809476307980814283938714931664368073395097196121120110253461241071415284795145850105931765 +precision: 76 +fma_eq_op_eq58 fma_eq_op_eq 550423722253049033923930660412081333285689240832 6007212153808232499240222125637853709288336346892 -> 3.306512074062883038570433228375772266483616734061859706280876243410898312528E+96 Rounded Inexact +precision: 15 +fma_eq_op_eq59 fma_eq_op_eq 4912 951228 -> 4672436848 +precision: 91 +fma_eq_op_eq60 fma_eq_op_eq 462437453506437790572 386179098969112675171 -> 178583679124687080823559163001428000078384 +precision: 42 +fma_eq_op_eq61 fma_eq_op_eq 22217436830614415815534656389316751126 34958524914539394039589478010915578147 -> 7.76688818980239206216313072685278737509054E+74 Rounded Inexact +precision: 196 +fma_eq_op_eq62 fma_eq_op_eq 76008908225652963835806774124889260246168899651304315630842494381795510001938432584388008080923876049818173574183020344102 8493106258868481713614577655056677658265906999915611240981044204568573750947247663774618983680853242773260934336105519567700 -> 6.455517341810532101559264509552779839663037813662680170130537264206181187221985053809284332518254774366141064408464503662347656126476900262452829486033167750864628515273348236096138300118236508955E+245 Rounded Inexact +precision: 197 +fma_eq_op_eq63 fma_eq_op_eq 1797232960849031574248018969305814648144800811137555197285807013064169263024063 6543891320327120029968096429106641070544449372848378987230594664363956469987027 -> 11760897173105788449140132745296297642055951047149262283700012720954393278266624216865897250592568163081356091202040904657922381767229871279103090857661854764 +precision: 294 +fma_eq_op_eq64 fma_eq_op_eq 6854352600709798665065081146055297091928450331438297748063327216678320236952939335030 2611827097461400517484227915339972254180880743506462570673330326179707983847254465741 -> 17902383858088875423818270747644800916789033379053937979702020574742230713990568585004512330078755816897372290845172317825673429594885621974585997833152006787379395542260 +precision: 23 +fma_eq_op_eq65 fma_eq_op_eq 47063 67912 -> 3196189519 +precision: 281 +fma_eq_op_eq66 fma_eq_op_eq 9472458747186939721023918776662814175070473586714509306206855768147544419476905213039274283548663698957100498859664279125019178 26121689069848783757121669019027153012971528789833172974739534514194750408635116650225615921118132812991828268100843158180917236 -> 247436622120986586934849757237185508762539101729422458827906706685703973944639031009775052127689245271011503607313166771860255486599489341629102281268287647854345354315892339266667385693982210230863974385891874689615262363007211294296226846979371255771186 +precision: 155 +fma_eq_op_eq67 fma_eq_op_eq 69695737487702521131066476329528195070039453478328120205864643291187905318726412358185451228985087416671443356638040653518057298682483864050 2767696151224110728560554111215902009897858210601372910307079078920436582280180975070404214848373033650737058857486677426403486442711384477 -> 1.9289662440144024007338298830344239453792286287839988922980815907101979033310457227557177560058936589016400944625737462400697687406765645543889125555243606E+278 Rounded Inexact +precision: 284 +fma_eq_op_eq68 fma_eq_op_eq 42237596382851738877250677077379510412565394116716146868517550 84361430339955336061408848881653269419115719477303326233011772 -> 3563224044979096442429971288314780015766985285014111059375212127584722572754169750160621674592554492196159623932972207116150 +precision: 247 +fma_eq_op_eq69 fma_eq_op_eq 27692581055110337887944930586154923255861876275349878430072859048862433944537128054440509637835304778249606525439289899998706716856546023727410216508276578305312982354627313253888423027318403120196329532873454442061314721947274464201810099 65551064479151772848984422352270732542653075131286156385894473850583087662968111912890502435508826701975000727249306840930942562796831389770193032805930049864463569104416891773416473329106754432875019750676877464573478244255345154206455360 -> 1.815278166337674593274620958372435989335363369404344150359413126373063973058178603223004692450507964963461510670942314511890560763782803369163615140678255728564168108346613679592720870372017495950904640055342039350711240855612540918625176693686083E+477 Rounded Inexact +precision: 234 +fma_eq_op_eq70 fma_eq_op_eq 9745921900282137887664227062381977636110588862254436054449232081299818614062984172582896113781765468949440960 9900664466201488997281832396823125538348124514693021864724775133490854821331257671380477345732706277586508475 -> 96491102648498253990184411124289480291977686088458984598390205843331419633522911584559397549809240257340304845328455809166460112821969457650053098076462374094291651091321008779439124680688546296621048815867858501576960 +precision: 85 +fma_eq_op_eq71 fma_eq_op_eq 621175294149688378704311660032914311679859179347088215916579478063455491 932328304099551519149480878674801743170945864253215680541557138066228930 -> 5.791393085431190324366277277431469155735504870591070867801744667104423311389436665286E+143 Rounded Inexact +precision: 190 +fma_eq_op_eq72 fma_eq_op_eq 84681332618495127813580918698699086387358330401265183620341596788836950192498737368376249568953497982463161765420384637130745576815 4712750422965912827471287988633164739774291109306636678420583703109133895919492486054751898421771160919003338175804166694380448802 -> 3.990819861151300640319646482451306587027500702128063680889750593892844991134817925131636531772859278170709890393449232500175109882856710812726317408456980521583261972568591562520722580997016E+260 Rounded Inexact +precision: 227 +fma_eq_op_eq73 fma_eq_op_eq 47564847093165657385303937552397926211128469579031420842955267444512743380377447386089572799915840647636016764251747762512 746149420795972165579204220602581530006991943713818586796017090615753712865687082330983768381201719953876310037192212725458 -> 3.5490483108814535568154034729744526860833875106953511932995605814771769948730646157350446981330390449974429688736322413934343236766821817293433379386370567006674122817290566181793801223958504872798555195487716601817099608685001E+244 Rounded Inexact +precision: 236 +fma_eq_op_eq74 fma_eq_op_eq 2372453798256068657631337457098670888377858563331817977317289757302458883896952651551736227935467421060833815154624276626244132376459048010029896396886165663241775163938305853009218103681005600286483894742055529049281480820895 8021349729443508368463728777626125711997296339987792298413001961700433131250078152970751975795863968509348937738227444138139317764934566670414866998653559420769491756045765948091532432287721404224788064438093479489716045663727 -> 1.9030281632758540112816647849687743853050209451225388495835690530067943943973434699287055755898312710581647551561997651095885466672986780617769711264493425938626277040597106184511774177452866181100119963613747570825769588937105548651356E+451 Rounded Inexact +precision: 279 +fma_eq_op_eq75 fma_eq_op_eq 905854078827943766824149080437380173140614771123604594925887163144715908760534162630015524004267241277636775688332985788313996691733505155560451044857387401217710214374193163463122006757890240980943314387 112436292533011165696666411205480512259809476700189537364774487793536983784570870591750295192416865868956275402351993947723258818287691058163763705564912802676728322666377950447522374209325871764382038844 -> 1.01850874199320041633382190541926847053259962397662597368042627532145304273203950728130750212326338648911019226513087188799736028239995002453525793461435611257430993926078024470115383686335945072227161420623490114385964283061588005641927230181183901057310922355247325936479768693E+407 Rounded Inexact +precision: 294 +fma_eq_op_eq76 fma_eq_op_eq 200655095010206479160863746386125608412968936643824614214674071213305262037290779447253840338385135004684319191146688441852668834745241894151837203835 679052414778664149983196297654865781562166195325128733338970126351941263183827529222366696950644057922622478738775752490037857326713115606569917317755 -> 1.36255326804322993308545142238282916819408070666808951803419633781086614167387874336658396584677871519671983698174040161908468967336160264566333265186135439133489939889554923890400943926148360784951912751957353545916660547844168966540474979936926429018492296044549416267327566734557470819214237E+299 Rounded Inexact +precision: 150 +fma_eq_op_eq77 fma_eq_op_eq 79452505236 91438719369 -> 7265035329518059621320 +precision: 181 +fma_eq_op_eq78 fma_eq_op_eq 14175589077878576372583081374627277491769097925775528447652629091139313057552517138479337815328277774677582984787755409 70032836450677983293754646736901719703656679863902207546850500989047333352588410600657018194226657232290664008764800788 -> 9.927567114830874646338777146508299021626483043526944415599157595583080130243918172859089580562322640258577406260112890073256913925220503112621203449174302896673074605849447022232972E+236 Rounded Inexact +precision: 26 +fma_eq_op_eq79 fma_eq_op_eq 13529940 16215689 -> 219397312758600 +precision: 203 +fma_eq_op_eq80 fma_eq_op_eq 4846232030133068869 4933761715953138208 -> 23910154056896390458930017628472315621 +precision: 170 +fma_eq_op_eq81 fma_eq_op_eq 5945875594436 9509387921171 -> 56541637558521083809798992 +precision: 7 +fma_eq_op_eq82 fma_eq_op_eq 200595 139054 -> 2.789374E+10 Rounded Inexact +precision: 160 +fma_eq_op_eq83 fma_eq_op_eq 5529628213653386309212002082728608889157609079308497333951936620906191637703 2079356592562496881826539182470101415550767537568081525617950823464662918500 -> 11498068880479751853022612653335992182214024440083059971758115810229387986169436801007093115700815129332508406972060894455272371720537737285276807843203 +precision: 185 +fma_eq_op_eq84 fma_eq_op_eq 1107838765898455929332 8520854193944695578909 -> 9439732594620374001963665679511415789588120 +precision: 243 +fma_eq_op_eq85 fma_eq_op_eq 9584719753329430042611866911100646255846048485567727319355614720745516030190907651677007778045122650448907301246109526132114380345 3583711558570325808435278498306424364020926345079228045177206871293128223322937416940924135100022143266205136282210283191463142698 -> 3.43488709656640004672037702574183883776837993339205211198190275930606482578070958989969186656908953745957485711195023059798446258159452534611168655305290181833423450426790501341490483010541221633123406702705587813247077024060989681431953059484E+259 Rounded Inexact +precision: 18 +fma_eq_op_eq86 fma_eq_op_eq 8312999412329 2670676265273 -> 2.22013302237437705E+25 Rounded Inexact +precision: 66 +fma_eq_op_eq87 fma_eq_op_eq 326821183464308410350209826060 289343577002386992158441402000 -> 94563610263716366884055376745497947352869475765472745946060 +precision: 276 +fma_eq_op_eq88 fma_eq_op_eq 70532187165805159472326631772567522123499351127413364077123122363989680687416857747713920516176947537759995917871466274273958358529074059044419581353997659755728916746184265344732 6419417411707240863027080245532762459688100413955466885403661364284829764847620104738502866475337389232224272444177593714675922097428929703736678899414098869327011078680811021843 -> 4.52775550377963629472616746701279416227843801516679892897004624106537063075429906418774940071719986741820097823607731316499625113747696081417131424332490307799500519235689382381631429282637048715296434660504120488062438853491283299731467872879737897051631012299429897125340138E+356 Rounded Inexact +precision: 53 +fma_eq_op_eq89 fma_eq_op_eq 6354770205598788134200323444137 9888505671814287172892615158954 -> 6.2839181221140060280866667401001174361103207293464761E+61 Rounded Inexact +precision: 160 +fma_eq_op_eq90 fma_eq_op_eq 8224348052764483239516518931183408872286499122549080438513757457652230067080774341382537293925 8262832939817678412809770915302469728322094186562658544293335628515619136339682605955416066401 -> 6.795641399890775398297011177494100812116318952433076725290272756543724314025579683661993583988670583091934028866075079787628081171845595799327048525765130337279E+187 Rounded Inexact +precision: 131 +fma_eq_op_eq91 fma_eq_op_eq 944275586698452577745977997215416055587390409005898 5426537304720737124303580386992427038336678179708710 -> 5124146697156213583120628752025103256841424149780881669884590486143780765583019983107689983056720977478 +precision: 279 +fma_eq_op_eq92 fma_eq_op_eq 413662 6699378 -> 2771278515898 +precision: 7 +fma_eq_op_eq93 fma_eq_op_eq 71 26 -> 1917 +precision: 101 +fma_eq_op_eq94 fma_eq_op_eq 7376561552882242270870529294936084 3205410930708597238969612762699335 -> 23644911032653523527418171255770877258146298343742393495707429240224 +precision: 152 +fma_eq_op_eq95 fma_eq_op_eq 69499201429054116775884849266157883130189353 71026610339111101518044081112112649642285259 -> 4936292698780820172366195464529029892043485145453637519056228201802558403749379440836780 +precision: 50 +fma_eq_op_eq96 fma_eq_op_eq 373486664675 6613902877463 -> 2470204526188414582384200 +precision: 299 +fma_eq_op_eq97 fma_eq_op_eq 698871495486962099750332596140473116360103750551195265871830103327978989686680388773346299565525828319614674366542656890688670329 99276143901774923700755219389733901496468922629334015087401701950284884002266397621999962309494021178045203099019038151228321764 -> 69381267154812293569782226263474905732436317050626975123602151340232389919394156361128313763720597276540185807625199050344547812119345485311075211761325397005709803116978156291079683320195852024745260939977370789926544522766534726155547339784170954020410685 +precision: 107 +fma_eq_op_eq98 fma_eq_op_eq 3722074444375194722514 1200000723552614114923 -> 4466492026366927825042221679384229886198936 +precision: 215 +fma_eq_op_eq99 fma_eq_op_eq 805165390781294477680155486991654401276132794556043841924683995064073486147488910488338899750889228 830408246356621941040532919921095915768594167873906040366869737300896026600589142653119706123853345 -> 668615980185738961338948514390669883700489114567955653548279761353778188556848493215609481074072611236220065653060801233206339744006335241929393898115680289830270983673872877101888546033165363156888 +precision: 47 +fma_op_eq_eq0 fma_op_eq_eq 36 421 -> 15192 +precision: 69 +fma_op_eq_eq1 fma_op_eq_eq 13765947060883268574608674597876015641609240 14243712605383856902978609791039924049327208 -> 1.96078193676149868835112108747510783999722591741473712179422216410966E+86 Rounded Inexact +precision: 264 +fma_op_eq_eq2 fma_op_eq_eq 880481388066472130771755613963772309759189099620184865889847282527159978160610362514141373973193801054608511427156634148366896110469298202638366892757660440421508192985821184337339 9467104538121062523348476372513636087068772793907308962638304214158683058526239781491424561199436074363714885972568203828718188516424833258539153707094517715342885656148044527892916 -> 8.33560934469523065348051318322299499095962448124097274563314939372142051146062360275483127346361822133696206915452476737744483193858405234548929174660625791625529704433988685001321252150584325808444137213746423626623545795013264702579393069633954953980654303352757E+360 Rounded Inexact +precision: 228 +fma_op_eq_eq3 fma_op_eq_eq 9970473232436143841698767308502755666670576691316255338881321136363093978822494165172618881335852 62845138603359325847293431998796016740025026205336371647826961708543774341953300931314586447103592 -> 626595772233533543820565523625969103455215392284398586813231939954705076225530426960244714963154108218226748882735115422363599079216329236518246897301054383603025153907222188895499402172068916236 +precision: 168 +fma_op_eq_eq4 fma_op_eq_eq 235426291027124849698785249842172133846346544734208003692516656070618397717660344346615018499746653609354660184017940496331860466891922431268001736357652989 327121894753777670552213013377512494371086863220580184915095692823313143466672542672642669932079655948559481918822434953003332736028960199965520565030736331 -> 7.70130943956473674451054980290649412997604382548154853871259801229393343078784865803212936089467133975888851938110386198385834983830986281176989001823791444029017759901E+310 Rounded Inexact +precision: 218 +fma_op_eq_eq5 fma_op_eq_eq 961007686014347083599700800421576638989714622222122279498071665964134457595849939074222612818452646923360837850018452501767620753934689890726607442341648102990793863 159885671553917873492891388830478126622613536070606702105915015159216933386160118591716661197279280725504772222825648327035848015136015155458606639336454978271136034 -> 1.5365135924688053293562265494231589930904885223453784161390861288989593378802008815381628923077997311517748223099522830482051078363502645672250587190116316304834881142134690923976202076605167543112550183972427925377904E+329 Rounded Inexact +precision: 300 +fma_op_eq_eq6 fma_op_eq_eq 96127870465679504882312426471547879520129437858172538448383882475519072987016440667368008414134058731842196434717880623557658472775058219028372702841423241776993107355411673927371233754 85338710342696917190438191850545921466753928276359265224388699455853235671667141490858207096497170465333132960901390250258649726086974986542222757882268929596206663708773847768610351580 -> 8.20342849353091308476538276323416478350329271098684145463107031808082370388615644617238678442565050020344481370252823104434691209202098552007568207973852724394103668949813828592621746661074873903353258065170087877333429145998872784206399140430019815099984786991587425922263490269855220404519697650372E+369 Rounded Inexact +precision: 236 +fma_op_eq_eq7 fma_op_eq_eq 7026734658136219291338864208323452160673266923636853731394101 6953120989634376985031283719911076962153024031412444410153601 -> 48857736240078284722758245550587639623338074785263212843192077190368458248266868737071410779812130922146737471275006701802 +precision: 15 +fma_op_eq_eq8 fma_op_eq_eq 421199617 864415168 -> 3.64091338111790E+17 Rounded Inexact +precision: 112 +fma_op_eq_eq9 fma_op_eq_eq 778608301258382830065221 240444154213596935257718 -> 187211814459757341898167196518600220279213690899 +precision: 228 +fma_op_eq_eq10 fma_op_eq_eq 79979625627742455941956207373545017497046016 55259099552222521922379510830099733926415690 -> 4419602094712908085959410838809335481305321485604732540369832719012388674446703371437056 +precision: 161 +fma_op_eq_eq11 fma_op_eq_eq 7643849287101152302900886119 7709962043520428035301244706 -> 58933787869940567223552743446634959584519698853958522133 +precision: 155 +fma_op_eq_eq12 fma_op_eq_eq 13167438567411807326988421180169862458520242453910751765 33740621173766485174386291640567349926133094854812689397 -> 444277556531884260553745479312437406815003235867165915058030048747384703149662595809082588435875688907625287470 +precision: 79 +fma_op_eq_eq13 fma_op_eq_eq 6710186033544328761768 2862277505611520373781 -> 19206414542282523106512834343502660591166576 +precision: 248 +fma_op_eq_eq14 fma_op_eq_eq 873817804514672532593375935093474846780040572739016702475141373417147499781269323298072940384164369774031330506085206147652730680026547508571260597636882624993780735 526778198809592877744311672743870430134243164748191410359591781558985103112034083359384331886775012619926146688332966095025801093907345109089402089093142161800134012 -> 4.6030816914999213226088495795194542315034704440091178852507927408460849434614121473521528464914880095945907236338505388529604500647409671213343638145195026390724026046093041925222561243328108220753077614000891037478418225621738754403874674729416541E+329 Rounded Inexact +precision: 132 +fma_op_eq_eq15 fma_op_eq_eq 52976689401404293155179223278252664066662049983355240206064941 59876202432709105825058139109780243248061048352240098674074511 -> 3172042978813238441080214727266430486207223727071260946719404265345622993898710803878785501021973210965814676750222544883792 +precision: 250 +fma_op_eq_eq16 fma_op_eq_eq 58682866303376235342768850726091896454987098767732113948756794855633099171167069433761170789824824246526785283523073183755397771857205839460799086630966735434060215698617653258520120997116691209437261890053528792100193922298431165055130670630992 23620518980257245303389478348372489728681842743896842596536885236174134043960245078212155551297739766616849042477060149282677245409228514191018678117803957377597203647766692800687772737075910603531421849901914465205825181180007495852149928480914 -> 1.386119757334796696740794659757792911214591053698933236121912688568132983956975851653771453350500791670050727222595993955086657782891867955113420204987969155214964627324983970868686917206125924765422694361480501968542767724068903640321019160956016385E+489 Rounded Inexact +precision: 16 +fma_op_eq_eq17 fma_op_eq_eq 1698553765 8839997560 -> 1.501521113982737E+19 Rounded Inexact +precision: 200 +fma_op_eq_eq18 fma_op_eq_eq 623082162008563719093968416466738826766772045083602026026552876415067791792364927427889958291731491464463847026134280237822408380124602386271151330363419846239940388330769668 726192499903325029889855354929593993824365046845187282614979081268385671181477471475782352111199803345341225304146525526826353711641876140742151474808398055717382758600454259 -> 4.5247759287416745918980445840438994726817183780703390549922737051656135166396916106132170203760968076771840481270255556775175761283398013264385432366885151854933779761123137648612533789626027047806110E+347 Rounded Inexact +precision: 276 +fma_op_eq_eq19 fma_op_eq_eq 947499746452394773984692645033288862751857843871342365637690065770374985818781165446013862971280031976485384058541981938874370253254430622986749587279863860342133524360412086584700693510874846012900089379198088671740505782922497963955803821861348233336458345938978095786 611510958703640708465174648513124140368657751545273029520306270737495736741392714218890694449327483678330269199360020834143908217050315027449229320210008672074999273615439823022771273895322746714453587608636378183978832184557198857910558911773714206978270205994853984864 -> 5.79406478324560422497909285284216508909010369340606105153191800294025488180680055810641704560744056256115064582804301413217553652262034433228259546423915972731386233713754966311451626823570547301725918619816639201657508179372141835550028429462754201885690158795402006016704652E+539 Rounded Inexact +precision: 201 +fma_op_eq_eq20 fma_op_eq_eq 4957748999486046318588496981763090120162825629063295384275153344253583896862114663921786248500368884111247745161795359341024785774830222586016716728885856 2575057133749960095336372511663848471387944302978157730108128887013754966150285493890087413275020773315086193752170865049481148430901386611098327545344046 -> 1.27664869284682708189580603760570987968772124114135225479620592692940777618131982905028457415290564644019609840324904720018627213650808869909757916508728471966847962096086888597572209246397792365869387E+307 Rounded Inexact +precision: 167 +fma_op_eq_eq21 fma_op_eq_eq 52387708413456922616631509550440266337836053556773043659051511906090554653674752784114736935136169773435152971317647 36699208541326108242652523882213515093413549521026437699947979621028765031721335915557867386317041185831173078268518 -> 1.9225874360676399173551644409946987728783270131113172340869568380141481300587887391982179198632756359707945338102102450195733965149058583925424054251290980838262853278E+231 Rounded Inexact +precision: 88 +fma_op_eq_eq22 fma_op_eq_eq 44006482663546376353755825176714865801617735600419614688001266379319184583112821257130 58000813713318144146046263958247553945738216206952690282573552574529265038340693217408 -> 2.552411803146717835677873485276262493678899611171056934140417008501300205260354909530506E+171 Rounded Inexact +precision: 209 +fma_op_eq_eq23 fma_op_eq_eq 6266709390616044980863655039744588344113493617275242677093252001264334318650796879118903834052763535596560530327626319417109080912456190295729609785515388571742796004881861388053930222605885726527744965581 601546269914601944984503573542321502108880203858938034630685827176905259100450346596856042274081332611709630107592787653950116934725538866371144939110976744450151330734683671598254878107165889980406237654 -> 3.7697156585638900670847959733634657344258617887977176081755636693160093444500790124134211186727305071687505437451064657793207562998383344199246163323521785949126694586950490548273713077101470355433760957274430E+408 Rounded Inexact +precision: 183 +fma_op_eq_eq24 fma_op_eq_eq 366558618602413671815567624863100366283952159895859567880558860292 1200024497751843735016976421402219388810736935244877730303621142380 -> 439879322184971110419101644406717294779035456705340517350704621942731561566061451533735254359022695772734705851536393282568419235252 +precision: 281 +fma_op_eq_eq25 fma_op_eq_eq 2503543156983176601620771750698894957028528770997580290862310263023256343271747617182662315711008034458251329721153902009149663481635105623241575647682624 3156439444935938821658340236439456725735883201248958781902542036741605333736094361399453169290496583602707997911439327422307109059769665654912873622773061 -> 7.9022823728011459020913137028873468214837627972775748119628390354372502552281884098582626032568353117892575894863215421986334638295147326643780359222849523748237086221017132138364283522989524221249866091807546034867427475674144833868888985513700747335622552957249890993823856112358E+306 Rounded Inexact +precision: 73 +fma_op_eq_eq26 fma_op_eq_eq 77533038 69725544 -> 5406033330055710 +precision: 269 +fma_op_eq_eq27 fma_op_eq_eq 4682653256519265041778106990675991700322000058060516736322408252720418330807587285967766864089929210610918993428246352562745791984439143781546148718227517131972487284226786087981240594065293473552463698649881106068865625082443899408618099961713505828 986326214819984647189907535182531321256387489919004823573061100959066550143087172262692905531718898994032254686232381501597233088400291702566772899750921175820682265876293102751619367087755209263816511967317338596938404227251176457553459394238829809 -> 4.6186236618171212851791732282422726975454455841285264587875588641925768773503650618421603271283588868845511607225637437338176012239278767477988915707617992555124648682361301591336520935720310833084176606445086865990304205472825772737014023215693204024303402814231710064E+498 Rounded Inexact +precision: 114 +fma_op_eq_eq28 fma_op_eq_eq 61083470318875763718412961464018462557570088975953379320685250792820697441336630548407603587754940039 36290373944236345487069672069048329215731561807240652736203912964104743179553680347852276991122406447 -> 2.21674197968366318956421483917598522980539719714051966667118086280840206708495218727646036899309498139666121168698E+201 Rounded Inexact +precision: 25 +fma_op_eq_eq29 fma_op_eq_eq 92881378239455 65131380447413 -> 6.049492382594103561527519E+27 Rounded Inexact +precision: 163 +fma_op_eq_eq30 fma_op_eq_eq 1243431666511603599421122 1200129525069187292067791 -> 1492279055386558904638841079984604829993580702624 +precision: 5 +fma_op_eq_eq31 fma_op_eq_eq 2537 5639 -> 1.4309E+7 Rounded Inexact +precision: 79 +fma_op_eq_eq32 fma_op_eq_eq 377068342149668402034132363406109 860767957983628070097285580473383 -> 324568346892442064329836052693642753370744995478889804326857502856 +precision: 292 +fma_op_eq_eq33 fma_op_eq_eq 14789233944480244113446723003608610705109996647852799291968435342656306539548887107488636777304071591856676793457446699859712181148884018811412178823612877108208033270260500152121556805105144224739030921979782068468058699911498259722813373611569214561137669628648403909941950282 97529135694678030941679907516362544390659206351502046666804038843363165769592228068665200355548461441538246041603191594765841827803741637386097906240074819491459346863732613813966331694019855975531008056805927381766954990526994072893568435269994366661239500872635221878562440183 -> 1.442381204191552148660690570850821635971962199531344466869377630445737106364190798206825963246019652965127749309028828335988737286649076589175277527215671322968334174722886564728482806267606396767349066332813923322492774447274523413777737994422810973441257150995650715729415460663681816053662E+555 Rounded Inexact +precision: 227 +fma_op_eq_eq34 fma_op_eq_eq 22777759311842954095411800648168092161523590204496820975985482316587824828061058845670993327016412016838100396498 18245177444007655917269798315188165614447125238408971896773928485080160916453238762086700260042197565520483394186 -> 415584260421472412772817656937067117488732444826280316293214448850127861258032369588961910176930372829434438546813750081875046837132173870813851400440240780960173827057519842515090896042770458243116297816098817400749528357126 +precision: 270 +fma_op_eq_eq35 fma_op_eq_eq 8119424138434326617669675009636348033306933832543207410858968407299246399638750710261004336635730150 845568041540381954052681408806245442254892414511369515116662739496510823768491032001209813692562929 -> 6865525567171616646966753703643568784267554005495570121688326346143615856579977913450229849607836750419693043838081433303122795326589730736460142811314243193754119238878250924475310723109565373339500 +precision: 163 +fma_op_eq_eq36 fma_op_eq_eq 82555330379004379414578814187603515585819983624412018466659545050280873457421570193360095513995885093698500762296169948848112078795002343996464 36937120011937946818303151468248635407693743945641743932494476383185292965504842542277596167605389100410140355904680937868432636947908551714843 -> 3.049356145834471386593828243961695777480451704350380419039145239051572596613387734436439108026406836637719848618857263571384196377552912929634425250649873824126783E+285 Rounded Inexact +precision: 172 +fma_op_eq_eq37 fma_op_eq_eq 54281553457205059957127001910219011734600424088668424935674630314652836 17012832609845772576598309867459437618024700593417485274930924847283416 -> 923482982769824779367669618427225784372661029281151925251692855959484927269051221110296670576501235421694921361005322509780913911304054820612 +precision: 228 +fma_op_eq_eq38 fma_op_eq_eq 33420900381650575326568375188662363771884382232539253104 6393189690313449903477863744976161417930783188702829300 -> 213666155760961301359156991769065845813578034060988462836796138713144812617289764510736955524592398266146400304 +precision: 269 +fma_op_eq_eq39 fma_op_eq_eq 780818078976708012523332869590235298182821 382550588796763688227941857752187975521561 -> 298702415855697580935650618627158169802005291153659396994301651081476610368303486402 +precision: 238 +fma_op_eq_eq40 fma_op_eq_eq 92833976869374797883048356472119872220587369015027737702798388034709405795218376892819617464196098190835921439704343845368230657643127740903630851505810065798252204512113172540367944361898704689070223561185095510379 9618851353093100464887989605700861211506625069240911860111153372784865214691144355938689311364442414947069361975797335000130354495420294003563520832558370449907792144170862533318609250378396089032092164973026391322 -> 8.929562240229993652854008870049735562759466679483938698908264608094309857359751467288347929969561983751762447756579952155388433615955062586146043538244765247760475872296253367428361639913973113947297458789628140589860630401487551576395534E+428 Rounded Inexact +precision: 50 +fma_op_eq_eq41 fma_op_eq_eq 263793782180916805 925591407524171625 -> 244165258144959529824355622847574930 +precision: 58 +fma_op_eq_eq42 fma_op_eq_eq 1317315932265083384777481543539984931737477760 7843712093800174953874539964659480424868088452 -> 1.033264690926328664217091380695276458014348478164307670510E+91 Rounded Inexact +precision: 179 +fma_op_eq_eq43 fma_op_eq_eq 373677231381225660585701713988942174756710212704277308138438296490171716292698047312575444708163489941958912580595828724962778337740366048352652568137525114375702838555952 143047098125180063411199863310237618391557432263396146974734310531510881032920836188298101665439847651698585144396070873895926618537671611402848457912372142934208027197126 -> 5.3453443584535801949541042155186966360887455320342061226290304091973426952975443416278631161624533724942998125488748336047033795007466263664723408896347073466105876071186270007368E+340 Rounded Inexact +precision: 270 +fma_op_eq_eq44 fma_op_eq_eq 56954202225505884181342319953005 80706889510617287654095827065005 -> 4596596506179256624361133280182767860966938844286745461000043030 +precision: 39 +fma_op_eq_eq45 fma_op_eq_eq 6047685178927604822937 1357312434143868401155 -> 8.20859829114602360939791078720654066612E+42 Rounded Inexact +precision: 225 +fma_op_eq_eq46 fma_op_eq_eq 62334708109218038054579047603739120765174465 22038893407797279618947996347179808280089753 -> 1373787987625213047135089213643307777161156514178853370646148748349803660496727668931610 +precision: 173 +fma_op_eq_eq47 fma_op_eq_eq 946433353118447687746299759011596431067276963145800394324090883555404907377252015636433788788894604523388889584126211675129568469495126715051272352563535154286598321008266 661971356395037536386888104042939078465639688011514154589285910148888393565351123123428955897781193041455194664277217756949974306044840596076910974820908806337199552670611 -> 6.2651177050132234464277593175857304846310215462887510958186903469446123855893576427793532074619364814782892838497359626208467677515041901924043006935209224125007853699198479E+341 Rounded Inexact +precision: 278 +fma_op_eq_eq48 fma_op_eq_eq 73295723846298238562590494057644826921337922890431183613186419290292765459988533420484310443390626003200524636694880364410891627191841915666677346788482236359505199276301 5762408915996614258325497924522772004268949083885748869725709093196378244595501648413212112815962461887445442564381301715090740603629505929146736660264845733529525642143 -> 4.2235993259633462310137727951215451054471544481528882729594582573773344582684273589529210531156430501178876174121811211199232648939524196577563311468839760795525895450290326462693287517304614119442397014920376603254338158808043363334532514313823372618292856183376969124414111893E+338 Rounded Inexact +precision: 47 +fma_op_eq_eq49 fma_op_eq_eq 880343625103901341073829117611 174304528900465389626872940821 -> 1.5344788084426343959915908120829195570141678406E+59 Rounded Inexact +precision: 74 +fma_op_eq_eq50 fma_op_eq_eq 781 582 -> 455323 +precision: 221 +fma_op_eq_eq51 fma_op_eq_eq 1979407591688401874858092399171858283804 9415679267942151468624782672503298136941 -> 18637467023867788826981541160132654926164205255824841165167684702202602692687368 +precision: 13 +fma_op_eq_eq52 fma_op_eq_eq 195561 828725 -> 162066485286 +precision: 272 +fma_op_eq_eq53 fma_op_eq_eq 273472498603847707101103835292804155929000662240290267136924758162603001136116517419167252659133791 666147846250568379787549090215195226778256180071565083573352991899335138137696088896444893243984173 -> 182173115953714718289058124708167153472685065197154404178769363298763576871659319506916737420913811062711656696714881215877082301857799956746553160903156490502323613792952518702898653567424552623634 +precision: 148 +fma_op_eq_eq54 fma_op_eq_eq 6544462091365439554147032990556685441842893296793732731200950821209683702576591842895186773027118976182212657378688328791974713808938070032003 8615191990814685611192877781536785830347498645978776422104518925437283399011634118924021308663978859087256636069017086564757491419219040964441 -> 5.638179739372186210854936217949770497444816976903357552344129571462124467176318663336678024060939576199924375879456621896203910232059022731915400013E+283 Rounded Inexact +precision: 254 +fma_op_eq_eq55 fma_op_eq_eq 33367133530528087560476378870478656119468135313631422323692088228146690256178168850955818149725912628863196313672589880 71614274110436030567467678850976946174768486910161042012945706979676952239657558753431359267165360323248965862154223090 -> 2389563046934759605778122575109042537861643208762001788403225038534364824814405722317729642771580968095804143901988683071233278336822549971753472011747272880445621487549033593839767004555040887170808834735969537531267916881068933268919080 +precision: 107 +fma_op_eq_eq56 fma_op_eq_eq 31268668324067325460231423927515092207762300493 93986370409850434336268394457720653057375119445 -> 2938828643328548849351441774138491839866796727157722229409174625862530953826247768161619686878 +precision: 91 +fma_op_eq_eq57 fma_op_eq_eq 3502 8864 -> 31045230 +precision: 279 +fma_op_eq_eq58 fma_op_eq_eq 825997864584183046837902903320520300673646894 453439379889674908074032668926005589665919005 -> 374539959507247628223786943036973140733813777065330784837444230168205658883906636047467364 +precision: 63 +fma_op_eq_eq59 fma_op_eq_eq 5052869867228188687527418223737042 2974688587671265757983867408202186 -> 1.50307143290317167348890937910510469271298835499560276945298573E+67 Rounded Inexact +precision: 166 +fma_op_eq_eq60 fma_op_eq_eq 83710191699661447959391230 79344024927307011833280456 -> 6641903536887586443768822592716148971796771576192110 +precision: 150 +fma_op_eq_eq61 fma_op_eq_eq 5958578538160673245157459258422045804097568621728180956723999199872224469388911811 9966663112445479301529916510873433315898010951368914687466844495430171508420343418 -> 5.93871449188952897668871495142074526246000617865662597051137891048279638196139925164041126308016074440056525791966043125095331875640627203449136738153E+163 Rounded Inexact +precision: 139 +fma_op_eq_eq62 fma_op_eq_eq 677958973217810336101858631081191087793600681577115547002107680442305575108008298037 704025177829571315417300045858272047467169127082792512009652270625441966743614054989 -> 4.773001866808224986378015253303433795839963088556975875214438746903650945460750764780696275061161366725509835615966459037509489373202529975E+167 Rounded Inexact +precision: 239 +fma_op_eq_eq63 fma_op_eq_eq 607118506948202668052307675071630721257250037920305105506026304188885789258526204 548889011148719247425577081782737212363014540749479400087891108325791342367096365 -> 333240676928885798146269147317215452165826928274651142863614158018663653591901897731545430158686455770980086867911769023485138133090136652009019769172572004174664 +precision: 239 +fma_op_eq_eq64 fma_op_eq_eq 9709447008762357567356231637381745789554936087643619430144915895973235495089 8479800114274496611070520550766003021455626511368180040732585147422829103922 -> 82334169854445208997850205724580866442301121514348676881671006656711273531866069801210647996915306825355758825018476827161083939123954691462539137134147 +precision: 65 +fma_op_eq_eq65 fma_op_eq_eq 60825209693258519494537571798651260008293121434 67236555648481175773290559746050092831958132496 -> 4.0896775963713130737542823967553474206253278773342503269562620909E+93 Rounded Inexact +precision: 86 +fma_op_eq_eq66 fma_op_eq_eq 1793203387642481461490736269086339234885756359625219387889169137269352551371239620 799280047433075189963253304187230378779003726803975318477608872001415944282263822 -> 1.4332716887320336994829613868103858902369475355920175870800922985898192330890866612418E+162 Rounded Inexact +precision: 174 +fma_op_eq_eq67 fma_op_eq_eq 131471907967342935432964014310704429 375822237520572740896322295673121083 -> 49410066623385636421991844182544232949547526192427643513757433052081036 +precision: 108 +fma_op_eq_eq68 fma_op_eq_eq 88066344481105493017903815788588068 95651084507940618182883997225544308 -> 8423641358267631382356469934369839143796036979142157622848181882705012 +precision: 43 +fma_op_eq_eq69 fma_op_eq_eq 785324931036606 260953668056348 -> 204933421370101652509789711494 +precision: 177 +fma_op_eq_eq70 fma_op_eq_eq 93142003698064825780605390225941054234327004171051532980627424036641103843788476887943664416803997904615447158038853794473942506913238131147050 38977325615179437977051548693114682823773385631489243320838635210284612228461191305495895688702807543507701233608414194284248605818976409821820 -> 3.63042620658972007255101146637829036413944470147622022232074408752611489239632764557899854143955302184237504212300122055502651583330069073466284219289865535382900937865652691037E+285 Rounded Inexact +precision: 57 +fma_op_eq_eq71 fma_op_eq_eq 5772172834320108640120514481143520838 1378583485188533073436515650387219262 -> 7.95742214304758845953708339994425446941802499840584976446E+72 Rounded Inexact +precision: 108 +fma_op_eq_eq72 fma_op_eq_eq 514513336736873 699451776591293 -> 359877267460520513468940583662 +precision: 251 +fma_op_eq_eq73 fma_op_eq_eq 3248310214355658510139317575215831664688238414172735786969393897867099313202308503510572422704104889886730242239216901169803024331797386219197384222627280254488176931958446680293734420895626160919568825661505828015 4984284546872106196923953587251550139727499045129245824207836606085851142816851275478356008807200678106060644680290501149650634046042872752180379118500778476791898711488677311061513862084804887880131579278453811957 -> 1.6190502404859727527211730706546852523890190084034527085455127640544133927576261730919035862559224407889665750023787270181085514540932911481780172831122388929955974759733794834367863582633116933168578896618489044928329040930922663008599596732608102185E+427 Rounded Inexact +precision: 220 +fma_op_eq_eq74 fma_op_eq_eq 95410673001658775961584078058631082935145751135802 18627137592360129899305876679102885529492513885709 -> 1777227733781577900131522029902817052405533178672872851683377132237527284919041245426348488917189420 +precision: 289 +fma_op_eq_eq75 fma_op_eq_eq 69899563712777297276968653123624521695925018979027358859256654076170557632857207558395304483317264475352487337913855565103902488845545316340042902746714864503852654819072317086278248015464015573330439605340208010357 5667867561940385462058693160668724608377455658026152075695971405106051961768520416625998332944523025545766526033568528106015808815413874108140928564594882121211697983185341039889644145391595325355721635625200191744 -> 3.961814697614356979731254017798340484146782039116469993525160868007790783298594758838842993622500669716983596741766556905648873818195265207849036296959840143909200365932096852776544955873266628061276070810986259313572064247831356149918947386211942344277722753856623351200138817399020780284E+428 Rounded Inexact +precision: 164 +fma_op_eq_eq76 fma_op_eq_eq 91711546392213769070421768689032443504084881230955504571090867370630377956339405966036629154303267506213247586034857181688281058041441456117695387067 92852008302391896098360025924669608274486225581755261470232149321905494779231851462211615970764891498111811893190204837751671300317876010571012114188 -> 8.5156012670350324310911859769288719178973806602605124720730722751956586810487386936803601523930487230363177377204115486554907399890969433408300288373565499221411808E+297 Rounded Inexact +precision: 164 +fma_op_eq_eq77 fma_op_eq_eq 14256000994938194023329091822423839591545850608486993034903850320087128925321538284711060549853722738871005359998549048493066058449850252858759610713437 44108228437991949882828100187589078312264320524061619900643217079716389913184008131074406442873192548103861911425330022228154499523802187596953850110291 -> 6.2880694849697438119375391058813215914886741406972615498244651599711850525068590342378281827080605503776131631196566557332846703003526969786347539430552631628970604E+302 Rounded Inexact +precision: 181 +fma_op_eq_eq78 fma_op_eq_eq 835438770855994167502260372064103482395533396555751133137581125993857993979739428839961747211170895568721601618245431195501751 95465917957110489027478360750414522444333972181588353234387135695946443128433844917575715622693991585382005168535820421450473 -> 7.975592915672756867375090016156105719728860871576699281363180101953299917690308145180134976707519983011137720667079515151282157763555228939111984336816932332495708970842430801612863E+250 Rounded Inexact +precision: 205 +fma_op_eq_eq79 fma_op_eq_eq 136517585339167381593682741 483581031736579475698330272 -> 66017314768501098505369492490287022863352618597918293 +precision: 196 +fma_op_eq_eq80 fma_op_eq_eq 959123722808695099207355525233980943967076411794709899456893257258274680410664532153228113148925627746733152885505417170 450383016541175003651922923004531740885114632894297069341007135503399523164258171439982760504438699821149964153601181702 -> 4.319730355147818739990694704752031463005548069535335872402977090161255809953807823183458669276054917692623323072682474870483573132867738173463789388811537701510336675696334686833528428824177015969E+239 Rounded Inexact +precision: 136 +fma_op_eq_eq81 fma_op_eq_eq 3338413706002030893547241497806388558132300979142322881831748569053766628589669267322108167368 3535385020547715040127639174816577265000752369069825659125125315511941654354629949142286494904 -> 1.180257780859076350756969521523798288664403810663559715800576411767025133857946360670461011351541929774336647051493817749566913330506340E+187 Rounded Inexact +precision: 113 +fma_op_eq_eq82 fma_op_eq_eq 15378603022059464024964825584140445361447661532879550233084017455730317 90110226927208498727905306256533456186076017858911769674042752343337031 -> 1.3857694081412327093446333232799930758140961930083640108447062723391141462056215491026594682796122382731568297052E+141 Rounded Inexact +precision: 59 +fma_op_eq_eq83 fma_op_eq_eq 8364311191063955947178615285710260033456575846986576 5931838110240155083523800916055473330288354668068490 -> 4.9615739889061397187544284191660030191284686210297596357153E+103 Rounded Inexact +precision: 163 +fma_op_eq_eq84 fma_op_eq_eq 15992147194749985843073012169008423831403148306520834134626966128695743345468988609804545619578 29704087877726915770338520725647492642746037825287585779382942833458545593171022903870430331190 -> 4.750321456263975565245853843849513942999633939424801001848386239290808303461294153031822314004887353492294892511474786432720292233109289985616879416192239072901602E+188 Rounded Inexact +precision: 50 +fma_op_eq_eq85 fma_op_eq_eq 21161825259450484714508121525 66057455209965475394717362109 -> 1.3978963242372664195772671906772176770258715495193E+57 Rounded Inexact +precision: 126 +fma_op_eq_eq86 fma_op_eq_eq 4060291709027632392610400794931971310559844070758489621466616829988521435394404023 8514486774187679795700740154514706898643584854995032278507948299196450333789312838 -> 3.45713000558596671258509480396266419557649825214064829980116823096676261233118848582927245711192993108515407923740897529510941E+163 Rounded Inexact +precision: 279 +fma_op_eq_eq87 fma_op_eq_eq 35345190732358075954950859690736683236905868025553806261098737756446972066284986093337176385434926397471970788365377358517465265205627532811085814828518952391410241415280410945676387190342271154918539962748225968284490109589697378052592155390852638597002204820490781268880989525 67786932654849903519868309235577994228628922609245373272359042753542570552558131346509987379165495880212070892825153436846728964763203258948631142112668987424666112364450128494714866149404265232197925813453140411939195803800612067554912492501169370969308132141302912695216702678 -> 2.39594206384718183538511853520372508228230788772253554187785123733812058850262183127354136748003721983675480810535098869531586171210677801239389328385706641565819631017039171456845651413889351573645047110972234794494492970357387192615449121529009593013749141912393830415398935424E+555 Rounded Inexact +precision: 58 +fma_op_eq_eq88 fma_op_eq_eq 16751150036471444090899224603186016259885974764104290560 276181926663155103474098888739834022535798908421350501774 -> 4.626364890896264308772242802878858162101438170416580885750E+111 Rounded Inexact +precision: 87 +fma_op_eq_eq89 fma_op_eq_eq 3826423754439834559880781789143562657086 118351330252776129421329751168697330933 -> 452862341448776411314989277956131037550085921552763742726734963584201302098324 +precision: 45 +fma_op_eq_eq90 fma_op_eq_eq 92207730277356 73704160696000 -> 6796093369775763481730053356 +precision: 215 +fma_op_eq_eq91 fma_op_eq_eq 952340822336638055147942075365503586525849388272467829960581387438654463829541958808790779197576304585477039132081823494934981222827921 6229400053467418309886286653195536521911922718185161443838820378884329515127454953417399270106263193086308138303789933981548512547620389 -> 5.9325119695830582221927150357353218592170560378191959312634700071478422525605129499327150332354017873058233241922648402980428452057922684073581501753186522531650033722100070366782986496846826923436578426668306264373E+270 Rounded Inexact +precision: 21 +fma_op_eq_eq92 fma_op_eq_eq 7166430721292 6319980740955 -> 4.52917041399608556856E+25 Rounded Inexact +precision: 263 +fma_op_eq_eq93 fma_op_eq_eq 986151252318672162299 722032547291408122498 -> 712033300726263001940966220809248201465201 +precision: 172 +fma_op_eq_eq94 fma_op_eq_eq 532510957517745142876681311043104652849662883381889187430937279999145013043206279882407463604484493469760125719390236224056826300307472460 456945917969035754905085699047933925149321877028551817973132805779481247201314448633781870313609423970518672950005275773525371571543255117 -> 2.433287083115162557975193447343292933109646059311537783235534398475726898336452416446215674013464641205200344798163292648731823860004048663908122399754555489182471726425924E+275 Rounded Inexact +precision: 65 +fma_op_eq_eq95 fma_op_eq_eq 9309407526370897414852410775070603566220395471555456979 4613656445390243441881167177425989238627776172476768460 -> 4.2950408036805533553433085299142448915578265605793403758422485113E+109 Rounded Inexact +precision: 87 +fma_op_eq_eq96 fma_op_eq_eq 85179739432708078884705705085931490204814676978484168094004292191438 92974729003388482039110950268044747951111762299009478842852491949201 -> 7.91956319033527738758001726447146319597717960494030114706047217793449198317356623054339E+135 Rounded Inexact +precision: 154 +fma_op_eq_eq97 fma_op_eq_eq 1029209972582745540445754409276121322438715987671394519557040049954526884951119832502300508245763404649590229903110168283751297261320203624 6796285151324757592131620531056269203736245051024253590750994471722162948903588657014921586816602827043152738853135272582263508026219762153 -> 6.994804454259474387836774238379731046250610062228506021497234496326254852358948357977435164108261079305852864471518679872491300636747173713999124072879328E+276 Rounded Inexact +precision: 119 +fma_op_eq_eq98 fma_op_eq_eq 74635734674632023355508414009632786215479022824134189427193208708 20031696633645061862817175233084425145963191505688640537682213030 -> 1.4950803950314523188064618299496325943655154371053948422489563212865234922686222046294810610594054653262104445072838289E+129 Rounded Inexact +precision: 26 +fma_op_eq_eq99 fma_op_eq_eq 495601485 730541592 -> 362057498345065605 +precision: 8 +fma_eq_eq_eq0 fma_eq_eq_eq 38773384 -> 1.5033753E+15 Rounded Inexact +precision: 24 +fma_eq_eq_eq1 fma_eq_eq_eq 31527179 -> 993963047225220 +precision: 60 +fma_eq_eq_eq2 fma_eq_eq_eq 67327471667323190302855368621679211173438733 -> 4.53298844111420693080619241212175560937626761685471175980777E+87 Rounded Inexact +precision: 258 +fma_eq_eq_eq3 fma_eq_eq_eq 632238594480 -> 399725640350678125064880 +precision: 298 +fma_eq_eq_eq4 fma_eq_eq_eq 805730857667611179419734478536 -> 649202214997784304918991535093533402902582951539307579181832 +precision: 57 +fma_eq_eq_eq5 fma_eq_eq_eq 34 -> 1190 +precision: 93 +fma_eq_eq_eq6 fma_eq_eq_eq 9260796971717 -> 85762360551372018494899806 +precision: 127 +fma_eq_eq_eq7 fma_eq_eq_eq 2241042404273406472298687757928905097911782329546686179344800673292626131979050621650534347673681104728934662381068051 -> 5.022271057751530211973572337243540199763230419486397809276632123420260331578473319096606478251170504686410320738489148299635751E+234 Rounded Inexact +precision: 273 +fma_eq_eq_eq8 fma_eq_eq_eq 48018731863982988480079191955558185740981809697833661165901609558596530223372912779690157469970418079367005778694568333846727199735773357399157770518232582576792286354226045467376222324069180600516198898372628911158596270930270282960132620035662482545 -> 2.30579860982509517126864753739127866714196198895353115031257075341359267054723885979509035056407993956207334244212275390263468757771537678083792632815469543170994898538115320338361720013437638583085056964799976947626405334132845031839543765210857588616636338253695941178584E+501 Rounded Inexact +precision: 121 +fma_eq_eq_eq9 fma_eq_eq_eq 84091041883020716484966578131261285972 -> 7071303324971944327298986552154918711117592094380170001154979405154425270756 +precision: 39 +fma_eq_eq_eq10 fma_eq_eq_eq 9686855779955175703880366571613069883 -> 9.38351749016509954161002039230203204335E+73 Rounded Inexact +precision: 288 +fma_eq_eq_eq11 fma_eq_eq_eq 2666163980698609277213715490508 -> 7108430371974654182490140927732659145321361405592288753588572 +precision: 11 +fma_eq_eq_eq12 fma_eq_eq_eq 1988091167 -> 3.9525064903E+18 Rounded Inexact +precision: 251 +fma_eq_eq_eq13 fma_eq_eq_eq 19919562526846239838281133537561892318037135582496023470599107147616530469790361704561065470463764388858836523617779144934017003788665269481414845782328917 -> 3.9678897126093695541798245759913344629068412105725838544343735671263042377394224359581991116769230951127769957961522090029614776683486306537840921421313948485614516476158511747661251408100391313469680544322230628763707901547294897991289098112296935460E+308 Rounded Inexact +precision: 163 +fma_eq_eq_eq14 fma_eq_eq_eq 819301104853765283909469338519682046382395174621074061059916 -> 671254300414600496056718490215667236849443909969435022398531322171428965081446830292328394295837778207398888955402986972 +precision: 184 +fma_eq_eq_eq15 fma_eq_eq_eq 2655014173119252414921651147853386334936302749167715674666589057 -> 7049100259464107632577142102689564135945033017889296017278882602673055067487780604460184416638442943510007277563615481578738306 +precision: 258 +fma_eq_eq_eq16 fma_eq_eq_eq 274672159592625554960022062054173949930790874184217273771062803232958182444855984148399388063973339994890249581839343924834138375758635310774673621254542206604797895270414344330827633251430165481625753286848322946232156989198281339810243332691645751725724456 -> 7.54447952552767626700898853357779972538932497903072698081359451284026403323811655160671165896515447550265675331758868350489828441034273379835763717199596931604276426537228864489651106362349840377277766990553280193690844074193870212286104291402659215070137484E+514 Rounded Inexact +precision: 108 +fma_eq_eq_eq17 fma_eq_eq_eq 4172646682745295595558658061955366134539464577164384685588187851183389128 -> 1.74109803390253195123895625219403526774477666954796117662671267737133880048793553113091488125535051059516477E+145 Rounded Inexact +precision: 139 +fma_eq_eq_eq18 fma_eq_eq_eq 17002226163064735 -> 289075694500002997792553963684960 +precision: 28 +fma_eq_eq_eq19 fma_eq_eq_eq 398362496352483558 -> 1.586926785001824764502886910E+35 Rounded Inexact +precision: 255 +fma_eq_eq_eq20 fma_eq_eq_eq 480356492392732049478887020832588743650672274539857496289819688662601573401104298410430096246763578146514473358592342299281192489319330392518301184473487644366239517380297516125228537027117849793742551087340557625667955297882910361970633599520382857 -> 2.30742359783848843321535657470833459448957719737694532768451884444653822120622846012920002655865737454237632849879323259836629363912704210916562842805226263611139453783169326805706098354963180086447025707596979962237278759925383844142626367537211866365145E+497 Rounded Inexact +precision: 117 +fma_eq_eq_eq21 fma_eq_eq_eq 9180931925319630 -> 84289511017353217348409588656530 +precision: 246 +fma_eq_eq_eq22 fma_eq_eq_eq 5872395136901061220430089981866422643966360089240599679210961948090423128700539215593494543572039277937298770896709733238368936716827334849231701427715379036548167996136543837 -> 3.44850246438992335529956797980723802800222761930798148604977251134764001750396253842860287089236603113724103434792339626962294142971372316505666519304744843718610184220793642603338161086667192949039003412682012021703540342909428101334917319372397E+349 Rounded Inexact +precision: 10 +fma_eq_eq_eq23 fma_eq_eq_eq 303743 -> 9.226011379E+10 Rounded Inexact +precision: 223 +fma_eq_eq_eq24 fma_eq_eq_eq 76108445943432 -> 5792495543924386964989882056 +precision: 94 +fma_eq_eq_eq25 fma_eq_eq_eq 4535263490681311712358285547302103491944237070669696740115234265132818294990616912 -> 2.056861492990683636920001413274437515779528976102663152275192152053520191543344316682516927949E+163 Rounded Inexact +precision: 17 +fma_eq_eq_eq26 fma_eq_eq_eq 24879269662461467 -> 6.1897805893747554E+32 Rounded Inexact +precision: 159 +fma_eq_eq_eq27 fma_eq_eq_eq 864297009028315766657601108667460192167574246564102527678253778589662260437 -> 747009319815292545860214913314147354095175263533701601466062373257491746652526195632807565236298729454157771734421527799806347244210197134262077691406 +precision: 226 +fma_eq_eq_eq28 fma_eq_eq_eq 396547873585541706009205767176845680679234811023816574600693764088297560751950681150185887520868625849383928988910219961902016031716231375534584217075727618744045211580708647588093875244394085183934167890922810133076 -> 1.572502160452147654843428202627938962807983124347178993369014699847398128349360379674068218406363847220561213152174040890692154660141733879436147390358426877002577182454905708728378596027749390706021638118736409531172221279675E+431 Rounded Inexact +precision: 150 +fma_eq_eq_eq29 fma_eq_eq_eq 14149963724793536208061233 -> 200221473412972965292123640504891309262788885541522 +precision: 149 +fma_eq_eq_eq30 fma_eq_eq_eq 3112879505315724174781090585413303031816490691894476667849861403684350762107346899563132471705495700579653331198471336768628240299299315520103 -> 9.6900188146146676509178712443042465605995191909283830096336482939439598432482295491940008013529923178360128480273075406660352509402329391676685009655E+282 Rounded Inexact +precision: 157 +fma_eq_eq_eq31 fma_eq_eq_eq 799334029485285934080206525530258570197990919533033224580371005629805542926043422942946439823276535907155328431811 -> 6.389348906931839630462222202244844419724046565692176884228663035197585963689875770734900549507852774634261706595981644005381546948422758062190362039236216754E+227 Rounded Inexact +precision: 63 +fma_eq_eq_eq32 fma_eq_eq_eq 627796090316770591185495 -> 394127931017022777246828686665198319360089580520 +precision: 282 +fma_eq_eq_eq33 fma_eq_eq_eq 570303303816312376260584338782726301120691961453745550053844106608561382641704995456882879894354990447775402681568004841035460376327688901193043441387251959028 -> 3.25245858343801098588745969871921435296343161395117248109441940040425940071356422622362008557534235315817222096069058838041850734791726364000117895718707089335878666804400868232520834428962581183869985133264249910731986778446585603770276872040642192763128877849964201643799333428933E+317 Rounded Inexact +precision: 274 +fma_eq_eq_eq34 fma_eq_eq_eq 13433649590219973270600632607874947297663063296724537580122463887411936180198824355723851794205247075100723132031510376476377316690022564691925975804189268224221692053000434305244555456349328695978760339071 -> 1.804629413128172557728786828128185722110525557743071401980298861480404202431046296086712859088925410425807834629091006998453072479497525902617145828154792852052442458915545206602552132573468541856167575768692723192993737796790939260005428961804198523956366911602345972122798E+410 Rounded Inexact +precision: 24 +fma_eq_eq_eq35 fma_eq_eq_eq 57280647950695 -> 3.28107262965151658379893E+27 Rounded Inexact +precision: 168 +fma_eq_eq_eq36 fma_eq_eq_eq 27687533317964573540162694987132303431014690198127185873443272495376866752400002751440937001656545239474788 -> 7.66599501233398346549832912227851069225728682350613531160641872581928710784671610238295937520182639454851179054756438559356529487637339893554454382376888652952606652424E+212 Rounded Inexact +precision: 35 +fma_eq_eq_eq37 fma_eq_eq_eq 926752510 -> 858870215718052610 +precision: 219 +fma_eq_eq_eq38 fma_eq_eq_eq 270783417766306611811893 -> 73323659337202135219459989646803034615028055342 +precision: 286 +fma_eq_eq_eq39 fma_eq_eq_eq 74140601320702656469580941101957987182951838420497377726682140812564093842559970535164630440778532066595822542345138967619934 -> 5496828764195376488752732249535581150249939335274893748301521104337865791659597825462030035836462850748231747044276483744418310423299857763109444760942735019122883879550655082855026424536719453816022783538417692015494336319605034296752195259641784290 +precision: 204 +fma_eq_eq_eq40 fma_eq_eq_eq 645133636 -> 416197408943714132 +precision: 224 +fma_eq_eq_eq41 fma_eq_eq_eq 720189581207256422348569782970558939247995573113684155694454964839624836499439903056079653067526821338564016040184557527188147264224137697798391691273848880633897963351796882647890844774 -> 5.1867303287948339298450624049838429177872682155865054190825450126568386532891385265745317814822210513048209823853605458313922768248231688548896770699239215986027504525710486545032219101070353034429248543803633464798522176630E+371 Rounded Inexact +precision: 201 +fma_eq_eq_eq42 fma_eq_eq_eq 831 -> 691392 +precision: 117 +fma_eq_eq_eq43 fma_eq_eq_eq 438845 -> 192585372870 +precision: 241 +fma_eq_eq_eq44 fma_eq_eq_eq 93792011174032829038289325833763465834992604773896302957745136064784324159764864260221035349063523235228870375146219999100076581366080533827893169435249635273139388638095 -> 8.796941360069899061328129322636294710158852968765195853630859981471817698155576029452528637891804310709441796908409421964641100355174676615489109335842257582865394988274528057950023551381973800881135495206627365906605398602904158004834740696E+339 Rounded Inexact +precision: 16 +fma_eq_eq_eq45 fma_eq_eq_eq 517 -> 267806 +precision: 201 +fma_eq_eq_eq46 fma_eq_eq_eq 62022 -> 3846790506 +precision: 2 +fma_eq_eq_eq47 fma_eq_eq_eq 55 -> 3.1E+3 Rounded Inexact +precision: 216 +fma_eq_eq_eq48 fma_eq_eq_eq 804035326046526317103221615953725439850444032103599366800515697148630373677 -> 646472805530743881081501033450390402150175593485334734820001510551166409441986485582676353771715028219827494417037145704021880311719719414513284874006 +precision: 98 +fma_eq_eq_eq49 fma_eq_eq_eq 64261841304053498923517878615016800037918260650652213598579679752349262 -> 4.1295842477873562990820843600647074024867733560296023599359010202986121797516374107094812433204847E+141 Rounded Inexact +precision: 16 +fma_eq_eq_eq50 fma_eq_eq_eq 183859 -> 33804315740 +precision: 267 +fma_eq_eq_eq51 fma_eq_eq_eq 215081078776050035183574690607164293558315287115392711786385502550433583339015671825534324865604227561458786350290877499174086005082647027832142337495096325504763488864 -> 4.62598704474694409006960018070382567385695251981941502093112561464832575450547436084879082355306058774521989667948732325673612611455880884377550776395200711503388551855337228669386327412781998485215926191651375694653071171167111263364269268563104460300326939482282456E+334 Rounded Inexact +precision: 262 +fma_eq_eq_eq52 fma_eq_eq_eq 4496524436287575458057613610981125330851870174945851087752310418199676816368787589869829797531757480575933390062913126996876225540614965117112768778887566840609136120997530012962936061624813988046640591717922364942 -> 2.021873200613129824478260503932270225504121909680776942253232287220390536747693289715709360103177682705276917476498634277515854676750820676381576186346357688163371987240381006483818031953980973442638967503921865440119237823835177848926043107353765524279418852455E+427 Rounded Inexact +precision: 122 +fma_eq_eq_eq53 fma_eq_eq_eq 5715604496302480921876342639533168837 -> 32668134758153136650152792201203736396687291061894960168458893334281101406 +precision: 132 +fma_eq_eq_eq54 fma_eq_eq_eq 99483653854700306697201187349920946107318863589603143397402061887752 -> 9.89699738428182719142849225530482278911544024101427723694105650226017054530597321985602168956296080312592245614217320485206810390950E+135 Rounded Inexact +precision: 292 +fma_eq_eq_eq55 fma_eq_eq_eq 16304742129717703943089426419277889014214681336610966563008906503242517460494154821503949537307178434244289287228299113987488042082155663663570301088497334995149 -> 2.658446159165914080755942776556177401729610106796030976940702440524457114049386567093675249945883854372146889235643410887900740442653158768658130833004461242108846176595851752713015845248863305096467734397875050697566931855917026953840491339332380899866129572389115657890699243393034517562254E+320 Rounded Inexact +precision: 19 +fma_eq_eq_eq56 fma_eq_eq_eq 93192 -> 8684842056 +precision: 290 +fma_eq_eq_eq57 fma_eq_eq_eq 12278626098189233731377800890240053081034676131474160911322512411600196985379812048983153443524994103542239203322522202219991723016277776010574432208947541269496109667390743707653005841686218431413058313413548987246709537067663228055779520901197443824732808396608032433150628679607640589 -> 1.5076465885913376606947058442258946419660859335478327360168504419107366242313077700939224160183617822509270369301316604046021576832732815666705337081365464900361170751721126437254165944437808698814512560885920245839879242760100440419254668424105669075962103809864267151754807209686420465065E+572 Rounded Inexact +precision: 77 +fma_eq_eq_eq58 fma_eq_eq_eq 4972084692628973663361478967 -> 24721626190675355510937149542775790089702532948944866056 +precision: 102 +fma_eq_eq_eq59 fma_eq_eq_eq 62225216998055092625977326819162034774110859279915049441024847677641746721179872659992909068513096269 -> 3.87197763045504443321686066149808251431039650370545942812653631477854293726951308328123451424031948389E+201 Rounded Inexact +precision: 97 +fma_eq_eq_eq60 fma_eq_eq_eq 92472633865975198634352074677444133301877156119386337806190622605630 -> 8.551188014110703210746125838677300777078622525464020503943810085166101673501020884192192491546416E+135 Rounded Inexact +precision: 101 +fma_eq_eq_eq61 fma_eq_eq_eq 808469994 -> 653623732006830030 +precision: 37 +fma_eq_eq_eq62 fma_eq_eq_eq 2140535270795376040294 -> 4.581891245519033834959259919504558088E+42 Rounded Inexact +precision: 266 +fma_eq_eq_eq63 fma_eq_eq_eq 987637609345661545972787996126998 -> 975428047394013566695097735481837947116914120854146248636140619002 +precision: 25 +fma_eq_eq_eq64 fma_eq_eq_eq 814561 -> 663510437282 +precision: 201 +fma_eq_eq_eq65 fma_eq_eq_eq 69004775464122293474034998056581892325901651032958901863506088333574 -> 4761659036853934082729010065638011243297982802972446788773564418872374217000925562412145409581055550883761665208838432399967214383947050 +precision: 80 +fma_eq_eq_eq66 fma_eq_eq_eq 3846908545457669069341297329742581073760578149155929337209362011 -> 1.4798705357115239132471929415376564789437116778915922585937938249969045855158543E+127 Rounded Inexact +precision: 100 +fma_eq_eq_eq67 fma_eq_eq_eq 66 -> 4422 +precision: 196 +fma_eq_eq_eq68 fma_eq_eq_eq 734231232096514322860627460475835435589777531793515115158758724204343521017307720673349014351183296206 -> 5.390955021859654843685235437136533526301717421734733272967107380671634058294506530577524491919123121876899639148378469065179476524634843819037024699157325904232843971757256195483769511631383164623E+203 Rounded Inexact +precision: 133 +fma_eq_eq_eq69 fma_eq_eq_eq 5841388179639790924222532933216060795158976427881164250441297251076274730047701620512057001339429684137322 -> 3.412181586523547032497930970977051084154895922504497402389975818644874850698831968717407478955141329846382979660455370901067143488499E+211 Rounded Inexact +precision: 24 +fma_eq_eq_eq70 fma_eq_eq_eq 41 -> 1722 +precision: 225 +fma_eq_eq_eq71 fma_eq_eq_eq 4381746945213362111116583498561560343138699277330914902512191210601652974270 -> 19199706291886630582173203957779183179697606208105656086084259963770683706052321836407389267073654219511685327420790451112048888127398826058538935007170 +precision: 112 +fma_eq_eq_eq72 fma_eq_eq_eq 44509067760564052262482827572416033030 -> 1981057112914482298342377111468935038742832880296525639602149317374467013930 +precision: 178 +fma_eq_eq_eq73 fma_eq_eq_eq 9839108565151727491870826686854730097332554009722483876181721527753509841829911767 -> 96808057356842085754647458688315307401198992497610463336362010165662304400308207245195267560860209648218959341997436443704714635744318823065276594634661476834974056 +precision: 17 +fma_eq_eq_eq74 fma_eq_eq_eq 91972626143436892 -> 8.4589639597204114E+33 Rounded Inexact +precision: 175 +fma_eq_eq_eq75 fma_eq_eq_eq 33739744624512456144 -> 1138370367327317180269121895636035804880 +precision: 68 +fma_eq_eq_eq76 fma_eq_eq_eq 895871622655999453609086844040312264 -> 8.0258596428029347350210805295393164597908513250537031291922155466912E+71 Rounded Inexact +precision: 6 +fma_eq_eq_eq77 fma_eq_eq_eq 15 -> 240 +precision: 8 +fma_eq_eq_eq78 fma_eq_eq_eq 80706719 -> 6.5135746E+15 Rounded Inexact +precision: 197 +fma_eq_eq_eq79 fma_eq_eq_eq 411005612883124916702275176914887335064641581121705751655881708854011926633332198619762680650389320411893447001028310666102616561391012165088295582330102790598405990560751961763387908 -> 1.6892561382143313850324488026102355185546460318683584502532161708994289229585422035258249408819618686755293801034576489467667048015840982901394977587849752046932179819839020958645092391121318324547E+365 Rounded Inexact +precision: 192 +fma_eq_eq_eq80 fma_eq_eq_eq 9967926641 -> 99359561530325469522 +precision: 255 +fma_eq_eq_eq81 fma_eq_eq_eq 987978966394877350577170031955436481594788127781410594345992784442920699577766392324184673334310392548331492363188757722563390 -> 976102438038690189196032024753883432098475008627494814780416841011581926032241686126042662467204098994736658000079439576368561177388745803256375043700206668672429070143418959193664684625799973339279176507732387715732576993637690946100820899070290855490 +precision: 163 +fma_eq_eq_eq82 fma_eq_eq_eq 8449108075938347908196038689250915708965612540306286561468103035 -> 71387427278886611402477515141540536687461162476113873356131412922727263234458467573632749993406836927917684399093032282844314260 +precision: 146 +fma_eq_eq_eq83 fma_eq_eq_eq 1279 -> 1637120 +precision: 138 +fma_eq_eq_eq84 fma_eq_eq_eq 613921884157226553784444168107982162996903432213550762847181631989740908435563 -> 3.76900079847159100253066776370262964651401869966817481988722142312334755682529442035375023622462602191248980502338219946638422780085754499E+155 Rounded Inexact +precision: 75 +fma_eq_eq_eq85 fma_eq_eq_eq 7868336412171236572284025176428916998103945764763207397 -> 6.19107178950997276575662525669283256710414590412202404201136551084710321136E+109 Rounded Inexact +precision: 207 +fma_eq_eq_eq86 fma_eq_eq_eq 14289179959268044485833060549427362142718494223786660670925363245441482924271943938880963093125884 -> 204180663908347513471244304291407493909520949422298394553073538064002190166915339917870535626515817345921914899854627220511949615656248788103494730062084603303097568623279492776247845977363907340 +precision: 120 +fma_eq_eq_eq87 fma_eq_eq_eq 4280245563847938449640609468 -> 18320502086839956543261634858704746930679589204131852492 +precision: 261 +fma_eq_eq_eq88 fma_eq_eq_eq 59977200121988214104116697205038906688221581745640776 -> 3597264534473023044811980323523934918524869597052659631181674268460802482470896745572727677775460579522952 +precision: 83 +fma_eq_eq_eq89 fma_eq_eq_eq 7497847056144700053891782716639914957105647563807495766425070 -> 5.6217710477337744882172026874696821968969727500650235277532774943542449156752793189E+121 Rounded Inexact +precision: 15 +fma_eq_eq_eq90 fma_eq_eq_eq 88853 -> 7894944462 +precision: 50 +fma_eq_eq_eq91 fma_eq_eq_eq 1046171078 -> 1094473925489853162 +precision: 205 +fma_eq_eq_eq92 fma_eq_eq_eq 82487345979153327797576215582434383157401231407876087776035083220460534545871 -> 6804162246684542674614758254153021490081047075454828901411165431925573328594922699575303631818890296554445488037452861616886347303360911920401068737694512 +precision: 172 +fma_eq_eq_eq93 fma_eq_eq_eq 284263633313647992732592649 -> 80805813224676124893023831457115758475961598101429850 +precision: 65 +fma_eq_eq_eq94 fma_eq_eq_eq 8979611169 -> 80633416755409157730 +precision: 22 +fma_eq_eq_eq95 fma_eq_eq_eq 581022950628 -> 3.375876691570483485450E+23 Rounded Inexact +precision: 138 +fma_eq_eq_eq96 fma_eq_eq_eq 63560104918541540762780550997064970815734077310186066818670104871556375574978099540969382553764175330575148449115395896151875972009648948 -> 4.03988693725600856212370440796435105122940210602383918190370933557548211668177986802839953601560236033879009471598939093976588659931452613E+273 Rounded Inexact +precision: 70 +fma_eq_eq_eq97 fma_eq_eq_eq 790403855592797519111407112476905467363601738151512304 -> 6.247382549359599140315936110169684405124735574511108275334930473437209E+107 Rounded Inexact +precision: 276 +fma_eq_eq_eq98 fma_eq_eq_eq 5375960574514548 -> 28900952098734794375086438158852 +precision: 270 +fma_eq_eq_eq99 fma_eq_eq_eq 204312860513632740299284782560627481345950545659981638530021763459181774850758413810862452506127096087745498721045426868088988567408361833754 -> 4.17437449712631485841868516662323741201856106031038769647397635264685732800763606762277793339825329314295875596483975682957039203316802928685675537734960563211496600985966536629133192856932908149054341473118175904139754915741418505721693686396452313547997897853697568703E+280 Rounded Inexact Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/format.decTest ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/format.decTest Thu Jan 21 18:27:06 2010 @@ -0,0 +1,12201 @@ +rounding: half_even +xfmt1 format .12345 '\xe6\xae\x8d<50.23' -> '0.12345\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d\xe6\xae\x8d' +xfmt2 format -1234567890123456.1 '\xe9\xbb\x89=26,.32F' -> '-1,234,567,890,123,456.10000000000000000000000000000000' +xfmt3 format 8025031e0 '\xe1\x9e\xbe< 34,.29F' -> ' 8,025,031.00000000000000000000000000000' +xfmt4 format -2815980E0 ',' -> '-2,815,980' +xfmt5 format 6376521e250 '\xec\x95\xad^-57.17n' -> '\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad6.376521e+256\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad\xec\x95\xad' +xfmt6 format -4224434E112 '\xe0\xa1\x87=94,.45%' -> '-4,224,434,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000%' +xfmt7 format 268685043008125307698143410e0 '\xe9\xa9\xb9=+' -> '+268685043008125307698143410' +xfmt8 format -633747851664969979273920829e0 '\xe8\xb7\xb9> ,' -> '-633,747,851,664,969,979,273,920,829' +xfmt9 format 479926103871023205653953149e74 '' -> '4.79926103871023205653953149E+100' +xfmt10 format -231723474525793070954539441e257 '20E' -> '-2.31723474525793070954539441E+283' +xfmt11 format 178871066719926112874509390545453079e0 '\xe7\x91\x80< 2,.98G' -> ' 178,871,066,719,926,112,874,509,390,545,453,079' +xfmt12 format -262497556859658565007453678979798282E0 '\xe1\xba\xb4^ 71.50F' -> '-262497556859658565007453678979798282.00000000000000000000000000000000000000000000000000' +xfmt13 format 511578879022878405944318783588002779e309 '' -> '5.11578879022878405944318783588002779E+344' +xfmt14 format -459459972838748227748801368146809134e11 '+062,.18F' -> '-45,945,997,283,874,822,774,880,136,814,680,913,400,000,000,000.000000000000000000' +xfmt15 format 3680787989441073668299559499E0 '\xe9\xb7\xa2=-16' -> '3680787989441073668299559499' +xfmt16 format -6988236289620978945736673114E0 '\xee\x91\x86>' -> '-6988236289620978945736673114' +xfmt17 format 3870112604717144776639936000E134 '+47' -> ' +3.870112604717144776639936000E+161' +xfmt18 format -1634426438292569695875849910E325 '+50,.45e' -> '-1.634426438292569695875849910000000000000000000e+352' +xfmt19 format 725957015604063175785220119017794934262157E0 ' 0' -> ' 725957015604063175785220119017794934262157' +xfmt20 format -502899947158378518880707010422028630098846e0 '\xef\x87\xbb<.77' -> '-502899947158378518880707010422028630098846' +xfmt21 format 560411437598417891921111437789635187200570e235 '\xe3\x8c\xb6>-82,.61f' -> '5,604,114,375,984,178,919,211,114,377,896,351,872,005,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000' +xfmt22 format -742269743814747464337122287570425871218118E255 '' -> '-7.42269743814747464337122287570425871218118E+296' +xfmt23 format 8318582498e0 '\xe3\x8b\x82>-8,.89E' -> '8.31858249800000000000000000000000000000000000000000000000000000000000000000000000000000000E+9' +xfmt24 format -4884598865e0 '064,' -> '-000,000,000,000,000,000,000,000,000,000,000,000,004,884,598,865' +xfmt25 format 6266584026e43 '-72,' -> ' 6.266584026E+52' +xfmt26 format -8035867548e269 ' 073.99' -> '-000000000000000000000000000000000000000000000000000000008.035867548E+278' +xfmt27 format 686963874503256545363E0 '\xe8\xa9\x89= 48,.53F' -> ' 686,963,874,503,256,545,363.00000000000000000000000000000000000000000000000000000' +xfmt28 format -904063193502685788763e0 '\xea\xae\x80<-96,.68%' -> '-90,406,319,350,268,578,876,300.00000000000000000000000000000000000000000000000000000000000000000000%' +xfmt29 format 697367879690355044480E108 '\xc9\xb5^' -> '6.97367879690355044480E+128' +xfmt30 format -682577998339717047933e10 '1' -> '-6.82577998339717047933E+30' +xfmt31 format 76661760809535141237287404159269E0 '41' -> ' 76661760809535141237287404159269' +xfmt32 format -62112346768930405474183190686650e0 '' -> '-62112346768930405474183190686650' +xfmt33 format 16263125937577912134319225930745e336 '+045.47n' -> '+0000001.6263125937577912134319225930745e+367' +xfmt34 format -79770093262205965606099037896933e291 '-015,.50' -> '-7.9770093262205965606099037896933E+322' +xfmt35 format 502951157556822E0 ' 44,E' -> ' 5.02951157556822E+14' +xfmt36 format -606742511576821e0 '' -> '-606742511576821' +xfmt37 format 183755511200768e112 '\xe8\x97\x83^,g' -> '1.83755511200768e+126' +xfmt38 format -647778939286549E286 ' 01,.28' -> '-6.47778939286549E+300' +xfmt39 format 7839726330497551409323630080551916593e0 '' -> '7839726330497551409323630080551916593' +xfmt40 format -9889242139280485930284818661295257172e0 '' -> '-9889242139280485930284818661295257172' +xfmt41 format 7358888490671269282600942779930618607e333 ',f' -> '7,358,888,490,671,269,282,600,942,779,930,618,607,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt42 format -6392320858826303823515567085305741290E98 '' -> '-6.392320858826303823515567085305741290E+134' +xfmt43 format 7549990891045241E0 '\xe4\xb3\xba> 85,.95' -> '\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba\xe4\xb3\xba 7,549,990,891,045,241' +xfmt44 format -8014674908801153e0 '\xed\x85\x87< 88,.11f' -> '-8,014,674,908,801,153.00000000000\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87\xed\x85\x87' +xfmt45 format 4637939542496309e270 '\xeb\x8d\xa4< 45,.66G' -> ' 4.637939542496309E+285\xeb\x8d\xa4\xeb\x8d\xa4\xeb\x8d\xa4\xeb\x8d\xa4\xeb\x8d\xa4\xeb\x8d\xa4\xeb\x8d\xa4\xeb\x8d\xa4\xeb\x8d\xa4\xeb\x8d\xa4\xeb\x8d\xa4\xeb\x8d\xa4\xeb\x8d\xa4\xeb\x8d\xa4\xeb\x8d\xa4\xeb\x8d\xa4\xeb\x8d\xa4\xeb\x8d\xa4\xeb\x8d\xa4\xeb\x8d\xa4\xeb\x8d\xa4\xeb\x8d\xa4' +xfmt46 format -6200029268882161E158 '-0' -> '-6.200029268882161E+173' +xfmt47 format 8562790090552934405955596791179822366528325e0 ',' -> '8,562,790,090,552,934,405,955,596,791,179,822,366,528,325' +xfmt48 format -4927323635473363639307412143186589973586487E0 '96,.42' -> ' -4.92732363547336363930741214318658997358649E+42' +xfmt49 format 3678123425294023648592530756335762770635419E127 '' -> '3.678123425294023648592530756335762770635419E+169' +xfmt50 format -8768027037187497263660414019829590223667262E333 '\xe0\xb4\xbd^-9,.34' -> '-8.768027037187497263660414019829590E+375' +xfmt51 format 2780525083665077682537154181866307e0 '\xe8\x89\x96^+62,.54G' -> '\xe8\x89\x96\xe8\x89\x96\xe8\x89\x96\xe8\x89\x96\xe8\x89\x96\xe8\x89\x96\xe8\x89\x96\xe8\x89\x96+2,780,525,083,665,077,682,537,154,181,866,307\xe8\x89\x96\xe8\x89\x96\xe8\x89\x96\xe8\x89\x96\xe8\x89\x96\xe8\x89\x96\xe8\x89\x96\xe8\x89\x96' +xfmt52 format -4675413104034267852158545983159949e0 '' -> '-4675413104034267852158545983159949' +xfmt53 format 7278806325548589884248154459629284E90 '83' -> ' 7.278806325548589884248154459629284E+123' +xfmt54 format -1453003239774925695372403523197324E179 '\xe2\x8e\x92>-8,.81E' -> '-1.453003239774925695372403523197324000000000000000000000000000000000000000000000000E+212' +xfmt55 format 4666671954380477638315e0 '' -> '4666671954380477638315' +xfmt56 format -3569570506372951762065e0 '\xe7\xa7\x95<-.88' -> '-3569570506372951762065' +xfmt57 format 6260172861032523922813E151 '\xe2\xad\x98>86E' -> '\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x98\xe2\xad\x986.260172861032523922813E+172' +xfmt58 format -2188745259340489534144E60 '+' -> '-2.188745259340489534144E+81' +xfmt59 format 37090418581952922616028077E0 '+.1' -> '+4E+25' +xfmt60 format -18384832724042502759921126E0 ',' -> '-18,384,832,724,042,502,759,921,126' +xfmt61 format 78070274049208520644838991E120 '\xeb\xb2\xaf<+,f' -> '+78,070,274,049,208,520,644,838,991,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt62 format -75797508756614092428663378E252 '' -> '-7.5797508756614092428663378E+277' +xfmt63 format 38795987869739943008019266689539505086E0 ' 9,.72g' -> ' 38,795,987,869,739,943,008,019,266,689,539,505,086' +xfmt64 format -33100065538446890802963481550835147846E0 '\xee\x82\xbd^-65.49%' -> '-3310006553844689080296348155083514784600.0000000000000000000000000000000000000000000000000%' +xfmt65 format 52331145348542670810615573118476051120e92 '\xe2\xb0\x9e^+,.92e' -> '+5.23311453485426708106155731184760511200000000000000000000000000000000000000000000000000000000e+129' +xfmt66 format -48933528932681195776399414614458653822E377 '0' -> '-4.8933528932681195776399414614458653822E+414' +xfmt67 format 73377301975177e0 '\xe7\x99\x89< 23,.71G' -> ' 73,377,301,975,177\xe7\x99\x89\xe7\x99\x89\xe7\x99\x89\xe7\x99\x89' +xfmt68 format -46656480810347E0 '-78' -> ' -46656480810347' +xfmt69 format 83416038608385e153 '\xea\x9b\x8e>+4,' -> '+8.3416038608385E+166' +xfmt70 format -23546967319842e246 '' -> '-2.3546967319842E+259' +xfmt71 format 601580006756438919960169646067539e0 '+' -> '+601580006756438919960169646067539' +xfmt72 format -411511170383274363000973182531606e0 '\xe4\x89\x99^+99,.71F' -> '-411,511,170,383,274,363,000,973,182,531,606.00000000000000000000000000000000000000000000000000000000000000000000000' +xfmt73 format 719262674604785544534758874940722e67 '\xe6\xb4\x9b>-77,G' -> '\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b\xe6\xb4\x9b7.19262674604785544534758874940722E+99' +xfmt74 format -762853155248999256112652846403479E158 '' -> '-7.62853155248999256112652846403479E+190' +xfmt75 format 823155740E0 '+,' -> '+823,155,740' +xfmt76 format -394932159e0 '' -> '-394932159' +xfmt77 format 232760092e212 '' -> '2.32760092E+220' +xfmt78 format -346588789E83 '\xe6\xbb\xbe<-,G' -> '-3.46588789E+91' +xfmt79 format 14355076919890718e0 '0,.25F' -> '14,355,076,919,890,718.0000000000000000000000000' +xfmt80 format -23067745242735031E0 '\xe1\xa9\xad=-62n' -> '-\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad\xe1\xa9\xad23067745242735031' +xfmt81 format 49257271154197009E290 '' -> '4.9257271154197009E+306' +xfmt82 format -75769535130966491E362 '' -> '-7.5769535130966491E+378' +xfmt83 format 3e0 '\xcc\x90>-41.15E' -> '\xcc\x90\xcc\x90\xcc\x90\xcc\x90\xcc\x90\xcc\x90\xcc\x90\xcc\x90\xcc\x90\xcc\x90\xcc\x90\xcc\x90\xcc\x90\xcc\x90\xcc\x90\xcc\x90\xcc\x90\xcc\x90\xcc\x90\xcc\x90\xcc\x903.000000000000000E+0' +xfmt84 format -8e0 '\xe1\x93\xb6< 60,.74%' -> '-800.00000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt85 format 6e70 '\xe6\xae\x85^70,.62F' -> '60,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000' +xfmt86 format -6E227 '\xec\xa0\xae^49,.64E' -> '-6.0000000000000000000000000000000000000000000000000000000000000000E+227' +xfmt87 format 33862409710606656725135853578401881923931288E0 '\xe2\x91\xaf^ 13.96E' -> ' 3.386240971060665672513585357840188192393128800000000000000000000000000000000000000000000000000000E+43' +xfmt88 format -62749754626355049714661580535635007531150366e0 '\xe7\x98\xba<92,.11%' -> '-6,274,975,462,635,504,971,466,158,053,563,500,753,115,036,600.00000000000%\xe7\x98\xba\xe7\x98\xba\xe7\x98\xba\xe7\x98\xba\xe7\x98\xba\xe7\x98\xba\xe7\x98\xba\xe7\x98\xba\xe7\x98\xba\xe7\x98\xba\xe7\x98\xba\xe7\x98\xba\xe7\x98\xba\xe7\x98\xba\xe7\x98\xba\xe7\x98\xba\xe7\x98\xba' +xfmt89 format 87244084709928412071116316601898473843211107e161 '\xef\x98\x8b<+E' -> '+8.7244084709928412071116316601898473843211107E+204' +xfmt90 format -73130854181159588662247516348283067216620647E333 '\xec\xbe\x9a<-61,.97' -> '-7.3130854181159588662247516348283067216620647E+376\xec\xbe\x9a\xec\xbe\x9a\xec\xbe\x9a\xec\xbe\x9a\xec\xbe\x9a\xec\xbe\x9a\xec\xbe\x9a\xec\xbe\x9a\xec\xbe\x9a\xec\xbe\x9a' +xfmt91 format 34891427462116034562E0 '\xe9\x8c\x88> 95.30' -> '\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88\xe9\x8c\x88 34891427462116034562' +xfmt92 format -80470285930853746826E0 '\xef\x93\x8a>.52n' -> '-80470285930853746826' +xfmt93 format 14458900605287246116E241 '\xef\xb9\xa1=-56,.57G' -> '\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa1\xef\xb9\xa11.4458900605287246116E+260' +xfmt94 format -41440671185193714467e306 '0f' -> '-41440671185193714467000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt95 format 0e0 '40' -> ' 0' +xfmt96 format 0E0 '\xe5\x81\xac>' -> '0' +xfmt97 format 0E177 '0,.13f' -> '0.0000000000000' +xfmt98 format 0E274 ',g' -> '0e+274' +xfmt99 format 762636865454028612651862e0 '' -> '762636865454028612651862' +xfmt100 format -553278573409768734731401E0 '\xe6\xa2\x93>' -> '-553278573409768734731401' +xfmt101 format 292601122473691505775240E190 'F' -> '2926011224736915057752400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt102 format -451834564914547035332523e304 '017%' -> '-451834564914547035332523000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt103 format 34821282E0 '+027,.91g' -> '+00,000,000,000,034,821,282' +xfmt104 format -48039137E0 ',' -> '-48,039,137' +xfmt105 format 81569084E325 '\xeb\xba\xb6^,.32' -> '8.1569084E+332' +xfmt106 format -57576899E67 ' 036.34' -> '-00000000000000000000005.7576899E+74' +xfmt107 format 4077478791648964402412067830106555480962e0 '\xe7\xb1\x9d^+91,.83F' -> '+4,077,478,791,648,964,402,412,067,830,106,555,480,962.00000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt108 format -4274073321779257641671930827578469763983e0 '97' -> ' -4274073321779257641671930827578469763983' +xfmt109 format 3501071403968301955431349231360017553161E42 '\xe6\x86\x81^68' -> '\xe6\x86\x81\xe6\x86\x81\xe6\x86\x81\xe6\x86\x81\xe6\x86\x81\xe6\x86\x81\xe6\x86\x81\xe6\x86\x81\xe6\x86\x81\xe6\x86\x81\xe6\x86\x813.501071403968301955431349231360017553161E+81\xe6\x86\x81\xe6\x86\x81\xe6\x86\x81\xe6\x86\x81\xe6\x86\x81\xe6\x86\x81\xe6\x86\x81\xe6\x86\x81\xe6\x86\x81\xe6\x86\x81\xe6\x86\x81\xe6\x86\x81' +xfmt110 format -7937521080658095167355319066762442547371E317 '\xe5\xb3\xae>+,g' -> '-7.937521080658095167355319066762442547371e+356' +xfmt111 format 7188288683457277090915151865022e0 '0,F' -> '7,188,288,683,457,277,090,915,151,865,022' +xfmt112 format -9529396393921579270565508691361E0 '+0,%' -> '-952,939,639,392,157,927,056,550,869,136,100%' +xfmt113 format 4018945654088905155954667629110E18 '\xe4\xa9\xa3^+28,' -> '+4.018945654088905155954667629110E+48' +xfmt114 format -3700114752704870202980739207191E126 '\xed\x91\xb6=.14e' -> '-3.70011475270487e+156' +xfmt115 format 470797300066833786410493453053E0 '' -> '470797300066833786410493453053' +xfmt116 format -111404752808673225346030672924e0 '\xe4\xa6\xb5^49G' -> '\xe4\xa6\xb5\xe4\xa6\xb5\xe4\xa6\xb5\xe4\xa6\xb5\xe4\xa6\xb5\xe4\xa6\xb5\xe4\xa6\xb5\xe4\xa6\xb5\xe4\xa6\xb5-111404752808673225346030672924\xe4\xa6\xb5\xe4\xa6\xb5\xe4\xa6\xb5\xe4\xa6\xb5\xe4\xa6\xb5\xe4\xa6\xb5\xe4\xa6\xb5\xe4\xa6\xb5\xe4\xa6\xb5' +xfmt117 format 249636684575371553892126440762e260 '\xe2\xb6\xb9=-23,.73g' -> '2.49636684575371553892126440762e+289' +xfmt118 format -607307014506173342526274517519e321 '\xe9\x8a\x94^+36.68f' -> '-607307014506173342526274517519000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000000000000' +xfmt119 format 80681204491e0 '' -> '80681204491' +xfmt120 format -87522629309E0 '' -> '-87522629309' +xfmt121 format 95017876068e304 '\xe4\x81\x9e>,f' -> '950,178,760,680,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt122 format -91866410786e142 ',' -> '-9.1866410786E+152' +xfmt123 format 12345.123456789012345678 '\xea\xb1\xba^.4' -> '1.235E+4' +xfmt124 format -1234567890123.123456789 '0,' -> '-1,234,567,890,123.123456789' +xfmt125 format 70288714369194332734006E0 '-' -> '70288714369194332734006' +xfmt126 format -83513827857177167670660e0 '\xec\xa4\x87^' -> '-83513827857177167670660' +xfmt127 format 92771514935101319430487E132 '-' -> '9.2771514935101319430487E+154' +xfmt128 format -25044820581435749733202e309 '019,.23F' -> '-25,044,820,581,435,749,733,202,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000' +xfmt129 format 6149442694102943862761006E0 '-094' -> '0000000000000000000000000000000000000000000000000000000000000000000006149442694102943862761006' +xfmt130 format -5927612715883224396793336e0 '' -> '-5927612715883224396793336' +xfmt131 format 6624306367126002866843530E1 '\xe5\xa6\xba^ 16,.52f' -> ' 66,243,063,671,260,028,668,435,300.0000000000000000000000000000000000000000000000000000' +xfmt132 format -6749233704039300117935283E114 '' -> '-6.749233704039300117935283E+138' +xfmt133 format 39698412785512342073190716019496266376834118e0 '\xd3\xa2=+76,.5g' -> '+\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa2\xd3\xa23.9698e+43' +xfmt134 format -27960092790381143530829833458504142374334653e0 '\xeb\xbf\xa6^ 44,.91' -> '-27,960,092,790,381,143,530,829,833,458,504,142,374,334,653' +xfmt135 format 84892990893785311795147186879300730822724582E280 '\xed\x98\xb0>80.6g' -> '\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb0\xed\x98\xb08.48930e+323' +xfmt136 format -62645365291566151637744781674711669314846788E129 ' ,' -> '-6.2645365291566151637744781674711669314846788E+172' +xfmt137 format 989998208920770258602376800182666625983700E0 '' -> '989998208920770258602376800182666625983700' +xfmt138 format -114192260712960552515882246069743554345609e0 '0' -> '-114192260712960552515882246069743554345609' +xfmt139 format 295561434137252559005350438724193408094978E299 '-' -> '2.95561434137252559005350438724193408094978E+340' +xfmt140 format -348927999092327022305815927908640037090028e151 '\xe5\x9a\xb6<,' -> '-3.48927999092327022305815927908640037090028E+192' +xfmt141 format 736109835163026131006666854833425008289E0 '' -> '736109835163026131006666854833425008289' +xfmt142 format -945354780668007616038768655037715596917e0 '' -> '-945354780668007616038768655037715596917' +xfmt143 format 584345419851165447299399676609222742592E7 '' -> '5.84345419851165447299399676609222742592E+45' +xfmt144 format -984256023529407525958613665654635250546e383 '+n' -> '-9.84256023529407525958613665654635250546e+421' +xfmt145 format 465778e0 '23' -> ' 465778' +xfmt146 format -166828e0 '+.12' -> '-166828' +xfmt147 format 474050e160 '' -> '4.74050E+165' +xfmt148 format -419049e218 '' -> '-4.19049E+223' +xfmt149 format 250111443267293401565075201361079109E0 '026,.4' -> '00,000,000,000,002.501E+35' +xfmt150 format -834213396688762896894118078344294631E0 '\xef\xba\x8a= 1.90e' -> '-8.342133966887628968941180783442946310000000000000000000000000000000000000000000000000000000e+35' +xfmt151 format 944618877090232499171914077314336814E20 '\xe8\x81\xb1<+84,.51E' -> '+9.446188770902324991719140773143368140000000000000000E+55\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1\xe8\x81\xb1' +xfmt152 format -799358776243285321125607476987065209E197 '\xea\xae\xb5=+69,.65g' -> '-\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb5\xea\xae\xb57.99358776243285321125607476987065209e+232' +xfmt153 format 91809018380178366e0 '' -> '91809018380178366' +xfmt154 format -87533437928615564e0 '05,.62' -> '-87,533,437,928,615,564' +xfmt155 format 56788779765995563e200 '\xeb\xa6\x8c=+62,.8f' -> '+5,678,877,976,599,556,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000' +xfmt156 format -10541612016245484E27 ' 081,' -> '-000,000,000,000,000,000,000,000,000,000,000,000,000,000,001.0541612016245484E+43' +xfmt157 format 2E0 '\xef\xa5\x9f= ,.74G' -> ' 2' +xfmt158 format -1E0 '\xe4\x91\x8c<-23,' -> '-1\xe4\x91\x8c\xe4\x91\x8c\xe4\x91\x8c\xe4\x91\x8c\xe4\x91\x8c\xe4\x91\x8c\xe4\x91\x8c\xe4\x91\x8c\xe4\x91\x8c\xe4\x91\x8c\xe4\x91\x8c\xe4\x91\x8c\xe4\x91\x8c\xe4\x91\x8c\xe4\x91\x8c\xe4\x91\x8c\xe4\x91\x8c\xe4\x91\x8c\xe4\x91\x8c\xe4\x91\x8c\xe4\x91\x8c' +xfmt159 format 2e72 '.74' -> '2E+72' +xfmt160 format -5e88 '' -> '-5E+88' +xfmt161 format 2090328710071312456373511874968476e0 ' 0.68' -> ' 2090328710071312456373511874968476' +xfmt162 format -4459198665532513356774283185362480E0 '\xe7\x80\x8b<+6,.11' -> '-4.4591986655E+33' +xfmt163 format 8955873178736985603241978617728877e161 '\xeb\x9d\x9d>-,.22e' -> '8.9558731787369856032420e+194' +xfmt164 format -2633523980748126755238872819274670E354 '\xec\xbe\xb7^+,.16F' -> '-2,633,523,980,748,126,755,238,872,819,274,670,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000' +xfmt165 format 341669516307327e0 '\xe3\x93\xb8<-72,.41E' -> '3.41669516307327000000000000000000000000000E+14\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8\xe3\x93\xb8' +xfmt166 format -735040980206621E0 '' -> '-735040980206621' +xfmt167 format 571382076783220e236 '\xef\x87\x89>-42,.16F' -> '57,138,207,678,322,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000' +xfmt168 format -178282925558976E15 '\xef\xa6\x82= 45,.67G' -> '-\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x82\xef\xa6\x821.78282925558976E+29' +xfmt169 format 38e0 '-g' -> '38' +xfmt170 format -52e0 '%' -> '-5200%' +xfmt171 format 44E2 '\xe5\x82\x93<+,.39' -> '+4.4E+3' +xfmt172 format -10e315 '\xe9\xbd\xa6<45f' -> '-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt173 format 0e0 '' -> '0' +xfmt174 format 0E0 '085.77' -> '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt175 format 0e209 '\xe3\x86\x9c^-40,.66G' -> '\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c0E+209\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c\xe3\x86\x9c' +xfmt176 format 0E26 '' -> '0E+26' +xfmt177 format 213529957E0 '\xe2\x97\x9b<-21,.74%' -> '21,352,995,700.00000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt178 format -613027206E0 '\xe4\x99\xb7<-,E' -> '-6.13027206E+8' +xfmt179 format 740057289E323 '' -> '7.40057289E+331' +xfmt180 format -256044974E108 ',' -> '-2.56044974E+116' +xfmt181 format 829078996295837998388E0 '\xe6\x83\x88^-49,.83e' -> '8.29078996295837998388000000000000000000000000000000000000000000000000000000000000000e+20' +xfmt182 format -412025667689109898781e0 '\xe5\xbf\x9c<-23,.22g' -> '-412,025,667,689,109,898,781' +xfmt183 format 668224022793386970841e246 '+0.67' -> '+6.68224022793386970841E+266' +xfmt184 format -390831757842471621233E309 '\xe3\x8b\xbd> 8,.28g' -> '-3.90831757842471621233e+329' +xfmt185 format 86087E0 '27' -> ' 86087' +xfmt186 format -35247E0 '\xe0\xad\xbe^ 4,E' -> '-3.5247E+4' +xfmt187 format 51023E248 '\xe7\x9f\xaf^-,.21%' -> '510,230,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000%' +xfmt188 format -72831e141 '0' -> '-7.2831E+145' +xfmt189 format 5436e0 '0' -> '5436' +xfmt190 format -9527E0 '\xe7\x9b\xbc>-G' -> '-9527' +xfmt191 format 9108E6 '+0,.43%' -> '+910,800,000,000.0000000000000000000000000000000000000000000%' +xfmt192 format -8511e31 '0,.93' -> '-8.511E+34' +xfmt193 format 8820170463379251410e0 'E' -> '8.820170463379251410E+18' +xfmt194 format -5425652420174994542E0 '' -> '-5425652420174994542' +xfmt195 format 7463926581778692074e107 '' -> '7.463926581778692074E+125' +xfmt196 format -7285604470674709274e18 '' -> '-7.285604470674709274E+36' +xfmt197 format 1105862679768326173873991746349E0 '\xe1\x97\xaa<-62,.62F' -> '1,105,862,679,768,326,173,873,991,746,349.00000000000000000000000000000000000000000000000000000000000000' +xfmt198 format -2569889108083502643720762056765E0 ',.33' -> '-2,569,889,108,083,502,643,720,762,056,765' +xfmt199 format 8660753914986561876352415305094E270 '\xe8\xbe\xbc^+84,.32' -> '\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc+8.660753914986561876352415305094E+300\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc\xe8\xbe\xbc' +xfmt200 format -3181166087722633614636821364735e256 '-015,%' -> '-3,181,166,087,722,633,614,636,821,364,735,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt201 format 787803168043877100383594119328E0 '\xe4\x9c\xb9= 66,.14F' -> ' \xe4\x9c\xb9\xe4\x9c\xb9\xe4\x9c\xb9\xe4\x9c\xb9\xe4\x9c\xb9\xe4\x9c\xb9\xe4\x9c\xb9\xe4\x9c\xb9\xe4\x9c\xb9\xe4\x9c\xb9\xe4\x9c\xb9787,803,168,043,877,100,383,594,119,328.00000000000000' +xfmt202 format -497545730120711422646750618662E0 '\xec\xbc\xb0=+,.85' -> '-497,545,730,120,711,422,646,750,618,662' +xfmt203 format 799410446241161923800497303978e235 '\xea\x8b\xb5<+97,.42%' -> '+799,410,446,241,161,923,800,497,303,978,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000%' +xfmt204 format -914275298711652227780160699052E191 '098' -> '-00000000000000000000000000000000000000000000000000000000000009.14275298711652227780160699052E+220' +xfmt205 format 14501221494806657735279055663496614805E0 '\xe4\xa5\x82<+58,.85G' -> '+14,501,221,494,806,657,735,279,055,663,496,614,805\xe4\xa5\x82\xe4\xa5\x82\xe4\xa5\x82\xe4\xa5\x82\xe4\xa5\x82\xe4\xa5\x82\xe4\xa5\x82' +xfmt206 format -37128432206668676057467859029107911921e0 '\xe5\x8a\x9f>-32,' -> '-37,128,432,206,668,676,057,467,859,029,107,911,921' +xfmt207 format 52694362500938518357909912974019787398e141 '\xe9\x89\x81=+37,g' -> '+5.2694362500938518357909912974019787398e+178' +xfmt208 format -23087834907902522779741609286232174381E322 '\xe8\x82\xa1> ,' -> '-2.3087834907902522779741609286232174381E+359' +xfmt209 format 46518387940e0 '' -> '46518387940' +xfmt210 format -44668679532E0 '99,g' -> ' -44,668,679,532' +xfmt211 format 41508727220E113 '10' -> '4.1508727220E+123' +xfmt212 format -62352779345E313 '0E' -> '-6.2352779345E+323' +xfmt213 format 93152241011400e0 '0,' -> '93,152,241,011,400' +xfmt214 format -18553678723180E0 '\xe8\x9e\x80^+30,.18e' -> '\xe8\x9e\x80\xe8\x9e\x80-1.855367872318000000e+13\xe8\x9e\x80\xe8\x9e\x80\xe8\x9e\x80' +xfmt215 format 64322927483184E132 '' -> '6.4322927483184E+145' +xfmt216 format -23340157985166E132 '\xea\xa0\xb5<-.65E' -> '-2.33401579851660000000000000000000000000000000000000000000000000000E+145' +xfmt217 format 3701714153422659E0 '\xe1\x8e\xa6<' -> '3701714153422659' +xfmt218 format -8962575638640472E0 '-066.64' -> '-00000000000000000000000000000000000000000000000008962575638640472' +xfmt219 format 2874217645765175E175 '\xe4\xa2\xb2<+84,.63G' -> '+2.874217645765175E+190\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2\xe4\xa2\xb2' +xfmt220 format -4705669188063131E138 '\xea\x89\x86>.43' -> '-4.705669188063131E+153' +xfmt221 format 17722931359952130693e0 '+57,.4' -> ' +1.772E+19' +xfmt222 format -58893378299518914989e0 '' -> '-58893378299518914989' +xfmt223 format 76944827161137152700E251 '\xe1\x95\xb9<+61,.95g' -> '+7.6944827161137152700e+270\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9\xe1\x95\xb9' +xfmt224 format -12543064318558781147e155 '52,.63E' -> '-1.254306431855878114700000000000000000000000000000000000000000000E+174' +xfmt225 format 572545649850e0 '+96,.26' -> ' +572,545,649,850' +xfmt226 format -267927494447E0 '\xe3\xae\xb3>+53.15E' -> '\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3\xe3\xae\xb3-2.679274944470000E+11' +xfmt227 format 963948142477E269 '\xdb\x90=20,.32f' -> '96,394,814,247,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000' +xfmt228 format -873052387736e193 '+15,e' -> '-8.73052387736e+204' +xfmt229 format 50968223559944858346877757663524e0 '\xe7\x8c\xb0>+79' -> '\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0\xe7\x8c\xb0+50968223559944858346877757663524' +xfmt230 format -91356931190104205833564875176375E0 '\xef\xb9\xb4<' -> '-91356931190104205833564875176375' +xfmt231 format 74116881915383871658291393320578e93 '\xe9\x88\xaa<37,' -> '7.4116881915383871658291393320578E+124' +xfmt232 format -46463611768888524401669476403437E201 '070.35e' -> '-0000000000000000000000000004.64636117688885244016694764034370000e+232' +xfmt233 format 5685057978797E0 '\xed\x87\xae>-25,.65f' -> '5,685,057,978,797.00000000000000000000000000000000000000000000000000000000000000000' +xfmt234 format -3706164086459e0 '0' -> '-3706164086459' +xfmt235 format 6087376526599e104 '\xec\x8d\x8d^-28,.81E' -> '6.087376526599000000000000000000000000000000000000000000000000000000000000000000000E+116' +xfmt236 format -9831682038597E136 '\xc5\xa5>,.36e' -> '-9.831682038597000000000000000000000000e+148' +xfmt237 format 5329664567960776415243670878063408262477e0 '\xe3\xb7\xa9^+36.74F' -> '+5329664567960776415243670878063408262477.00000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt238 format -8419863737441726014118063683602877879935e0 '\xe5\x8e\xbd^53.99E' -> '-8.419863737441726014118063683602877879935000000000000000000000000000000000000000000000000000000000000E+39' +xfmt239 format 2593938214949219508215648841392532182421e49 '039,e' -> '2.593938214949219508215648841392532182421e+88' +xfmt240 format -7464387126625627283831401345936083841657e220 '\xeb\xb6\xa3< 88,f' -> '-74,643,871,266,256,272,838,314,013,459,360,838,416,570,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt241 format 42929591812458052959718267E0 '0' -> '42929591812458052959718267' +xfmt242 format -61858689340080944049966424e0 '\xe2\xa5\xa3^+19,.78E' -> '-6.185868934008094404996642400000000000000000000000000000000000000000000000000000E+25' +xfmt243 format 21232962386140355911188475e330 '-0' -> '2.1232962386140355911188475E+355' +xfmt244 format -44080380696974200087836967E183 '' -> '-4.4080380696974200087836967E+208' +xfmt245 format 123456789.1234567890123456789012 '' -> '123456789.1234567890123456789012' +xfmt246 format -123456789.12345678901 '\xe6\x9f\xac=' -> '-123456789.12345678901' +xfmt247 format 4711745790786962881308422817244890e0 '' -> '4711745790786962881308422817244890' +xfmt248 format -4225546170621108949187266274106933E0 '' -> '-4225546170621108949187266274106933' +xfmt249 format 9061306912974595153713081400954465e244 '\xef\xac\x80< 10,.92G' -> ' 9.061306912974595153713081400954465E+277' +xfmt250 format -3594097196479842397913666548389403e295 '\xef\xa1\x87> 11,.32' -> '-3.5940971964798423979136665483894E+328' +xfmt251 format 68828555250508e0 'n' -> '68828555250508' +xfmt252 format -92277863283759e0 '\xed\x99\xb2=+' -> '-92277863283759' +xfmt253 format 16248991582256E158 '-061,F' -> '1,624,899,158,225,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt254 format -18651807544491e193 '\xea\x99\x91=,f' -> '-186,518,075,444,910,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt255 format 970447824631947961557757009666711223208e0 '\xee\xb3\xa3=-,e' -> '9.70447824631947961557757009666711223208e+38' +xfmt256 format -887335694210938741827691796958337928586E0 ' 055,.40%' -> '-88,733,569,421,093,874,182,769,179,695,833,792,858,600.0000000000000000000000000000000000000000%' +xfmt257 format 805730772929922720907234357417883752755e253 '\xe5\xb4\x8c>+,f' -> '+8,057,307,729,299,227,209,072,343,574,178,837,527,550,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt258 format -250072118867031147148178186651074927484E308 '\xea\xaf\x96^.9F' -> '-25007211886703114714817818665107492748400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000' +xfmt259 format 818903973700667619178E0 '\xe1\xa5\x86= ,.93' -> ' 818,903,973,700,667,619,178' +xfmt260 format -471682484156524122262E0 '\xeb\x88\x8a=' -> '-471682484156524122262' +xfmt261 format 452094002428838861733E191 '\xe1\x8e\xa0=+14,.34G' -> '+4.52094002428838861733E+211' +xfmt262 format -982738377749851208823E166 '\xe6\xa6\x8c>36,G' -> '\xe6\xa6\x8c\xe6\xa6\x8c\xe6\xa6\x8c\xe6\xa6\x8c\xe6\xa6\x8c\xe6\xa6\x8c\xe6\xa6\x8c\xe6\xa6\x8c-9.82738377749851208823E+186' +xfmt263 format 75277909813E0 '\xea\x82\x93>,.72f' -> '75,277,909,813.000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt264 format -75516416164E0 '\xee\x99\x91>.61e' -> '-7.5516416164000000000000000000000000000000000000000000000000000e+10' +xfmt265 format 29392531093e301 '52.24' -> ' 2.9392531093E+311' +xfmt266 format -26201069386E14 '-0,' -> '-2.6201069386E+24' +xfmt267 format 5512253513565279697365131277E0 '\xea\x81\xb0< 24,.93f' -> ' 5,512,253,513,565,279,697,365,131,277.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt268 format -3555498166651767192029075187e0 ',' -> '-3,555,498,166,651,767,192,029,075,187' +xfmt269 format 2958286376037244553677266426E289 '4' -> '2.958286376037244553677266426E+316' +xfmt270 format -3301792559358061520868822494E352 '\xe3\xa3\xb9> 28,.71e' -> '-3.30179255935806152086882249400000000000000000000000000000000000000000000e+379' +xfmt271 format 650307698742111e0 '' -> '650307698742111' +xfmt272 format -860360493774319e0 'e' -> '-8.60360493774319e+14' +xfmt273 format 510693172414365E350 '\xe1\xa5\xb8=22,e' -> '\xe1\xa5\xb85.10693172414365e+364' +xfmt274 format -471431605263455e134 '\xe5\xa4\x85= 35,.45g' -> '-\xe5\xa4\x85\xe5\xa4\x85\xe5\xa4\x85\xe5\xa4\x85\xe5\xa4\x85\xe5\xa4\x85\xe5\xa4\x85\xe5\xa4\x85\xe5\xa4\x85\xe5\xa4\x85\xe5\xa4\x85\xe5\xa4\x85\xe5\xa4\x854.71431605263455e+148' +xfmt275 format 678303729708E0 '' -> '678303729708' +xfmt276 format -106592001575e0 '0,.62f' -> '-106,592,001,575.00000000000000000000000000000000000000000000000000000000000000' +xfmt277 format 354201744876e315 '' -> '3.54201744876E+326' +xfmt278 format -926389539472E98 '.27' -> '-9.26389539472E+109' +xfmt279 format 3909911822289662e0 '\xe3\xa0\xb8=.28F' -> '3909911822289662.0000000000000000000000000000' +xfmt280 format -7724165499791728E0 '' -> '-7724165499791728' +xfmt281 format 9101683906329829E211 '\xe8\x9c\x87^ 76,.51%' -> ' 9,101,683,906,329,829,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000%' +xfmt282 format -7683951185490461e198 '\xe5\x88\xb1^-77,E' -> '\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1-7.683951185490461E+213\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1\xe5\x88\xb1' +xfmt283 format 598422887877832374042099472902927E0 '\xe1\x83\xad^,' -> '598,422,887,877,832,374,042,099,472,902,927' +xfmt284 format -341954634217756705539395521222847E0 '64.67e' -> '-3.4195463421775670553939552122284700000000000000000000000000000000000e+32' +xfmt285 format 959588975904123441317742248521225E351 '' -> '9.59588975904123441317742248521225E+383' +xfmt286 format -336194814647745284130811289692724e89 '\xe4\x93\x86= 90,.47e' -> '-\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x86\xe4\x93\x863.36194814647745284130811289692724000000000000000e+121' +xfmt287 format 0e0 '\xe2\x8d\x83=+81,.94f' -> '+0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt288 format 0e0 '+068,.83' -> '+000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt289 format 0E354 '+,.15F' -> '+0.000000000000000' +xfmt290 format 0e82 '\xeb\xba\x8c^-' -> '0E+82' +xfmt291 format 37654847966922709948994863110365e0 ' 69,%' -> ' 3,765,484,796,692,270,994,899,486,311,036,500%' +xfmt292 format -55783634357840329925838031525395e0 '+042,' -> '-55,783,634,357,840,329,925,838,031,525,395' +xfmt293 format 68191141061922509337429070980098e128 '' -> '6.8191141061922509337429070980098E+159' +xfmt294 format -44012975939032936626371176327503e201 '\xe1\x93\x97>-49,.14F' -> '-44,012,975,939,032,936,626,371,176,327,503,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000' +xfmt295 format 113768091198958191035433388048501404e0 '\xed\x87\x8a<' -> '113768091198958191035433388048501404' +xfmt296 format -468689210438813085362254568274133318e0 '' -> '-468689210438813085362254568274133318' +xfmt297 format 704991263367976541338274321378057559e266 '\xe2\x9d\xa8^ 53,.37e' -> '\xe2\x9d\xa8\xe2\x9d\xa8\xe2\x9d\xa8\xe2\x9d\xa8 7.0499126336797654133827432137805755900e+301\xe2\x9d\xa8\xe2\x9d\xa8\xe2\x9d\xa8\xe2\x9d\xa8' +xfmt298 format -878351302657758129156729857954308131e308 '\xe1\xb8\x9a<-47.95e' -> '-8.78351302657758129156729857954308131000000000000000000000000000000000000000000000000000000000000e+343' +xfmt299 format 7450618705701e0 '\xe1\xb4\xaa^+79,.76F' -> '+7,450,618,705,701.0000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt300 format -2048606025080e0 '-' -> '-2048606025080' +xfmt301 format 6473858314015E154 '073,.38g' -> '000,000,000,000,000,000,000,000,000,000,000,000,000,006.473858314015e+166' +xfmt302 format -4007922350993E4 '\xe6\xbe\x96<-4,f' -> '-40,079,223,509,930,000' +xfmt303 format 5351628425211726198591643e0 '\xee\xac\xb8>+84.32E' -> '\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8\xee\xac\xb8+5.35162842521172619859164300000000E+24' +xfmt304 format -6578427439356319777204217e0 '+86,.2e' -> ' -6.58e+24' +xfmt305 format 8240803239469856008431132e166 '' -> '8.240803239469856008431132E+190' +xfmt306 format -7890206638837599596454966E50 ',f' -> '-789,020,663,883,759,959,645,496,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt307 format 5740909E0 '\xea\x9b\x8c^ 97,.72F' -> '\xea\x9b\x8c\xea\x9b\x8c\xea\x9b\x8c\xea\x9b\x8c\xea\x9b\x8c\xea\x9b\x8c\xea\x9b\x8c 5,740,909.000000000000000000000000000000000000000000000000000000000000000000000000\xea\x9b\x8c\xea\x9b\x8c\xea\x9b\x8c\xea\x9b\x8c\xea\x9b\x8c\xea\x9b\x8c\xea\x9b\x8c' +xfmt308 format -9788786e0 '' -> '-9788786' +xfmt309 format 2895600e98 '\xe3\x89\x9b^ 85' -> '\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b 2.895600E+104\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b\xe3\x89\x9b' +xfmt310 format -2540260E171 '58.48' -> ' -2.540260E+177' +xfmt311 format 15576478276119804E0 '-0.13g' -> '1.557647827612e+16' +xfmt312 format -33149916324114496E0 '\xe8\xad\xa4>.7g' -> '-3.314992e+16' +xfmt313 format 37889071994158864E95 '\xeb\x81\xbd^+25,E' -> '+3.7889071994158864E+111\xeb\x81\xbd' +xfmt314 format -18070615122324004E90 '\xe2\x85\xaa^25,.46G' -> '-1.8070615122324004E+106\xe2\x85\xaa' +xfmt315 format 85771102836485889581309692126e0 '0' -> '85771102836485889581309692126' +xfmt316 format -11553181077388923407235886082E0 '\xee\xad\x89>-13,.97' -> '-11,553,181,077,388,923,407,235,886,082' +xfmt317 format 69087313020444802647526770264E259 '-16.3g' -> ' 6.91e+287' +xfmt318 format -87822332970598530168676322807e114 '\xe8\x8b\xb6=.8%' -> '-8782233297059853016867632280700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000%' +xfmt319 format 151323143790524339492134450183E0 '\xee\x91\x83=-53,.83F' -> '151,323,143,790,524,339,492,134,450,183.00000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt320 format -451389205446086905006699606774e0 ' 0,' -> '-451,389,205,446,086,905,006,699,606,774' +xfmt321 format 119608102995263489363362427657e309 '0' -> '1.19608102995263489363362427657E+338' +xfmt322 format -189131901304509579900380265774E201 '' -> '-1.89131901304509579900380265774E+230' +xfmt323 format 5616600275910777408764339766977582989E0 '.2' -> '5.6E+36' +xfmt324 format -3359563057796377888806341091825217597e0 '\xeb\xa0\xa2<50E' -> '-3.359563057796377888806341091825217597E+36\xeb\xa0\xa2\xeb\xa0\xa2\xeb\xa0\xa2\xeb\xa0\xa2\xeb\xa0\xa2\xeb\xa0\xa2\xeb\xa0\xa2' +xfmt325 format 6072964985398192616151739088222471498E92 '05,' -> '6.072964985398192616151739088222471498E+128' +xfmt326 format -7361965729454781969552763804633076504e155 '036,e' -> '-7.361965729454781969552763804633076504e+191' +xfmt327 format 100463042457358924279285856E0 '\xe5\x86\xbd>+,.38F' -> '+100,463,042,457,358,924,279,285,856.00000000000000000000000000000000000000' +xfmt328 format -938571524406219883711490603e0 '\xe3\xb2\xaa= 43,.27G' -> '-\xe3\xb2\xaa\xe3\xb2\xaa\xe3\xb2\xaa\xe3\xb2\xaa\xe3\xb2\xaa\xe3\xb2\xaa\xe3\xb2\xaa938,571,524,406,219,883,711,490,603' +xfmt329 format 578566879640051014254656802E176 '-' -> '5.78566879640051014254656802E+202' +xfmt330 format -856637515835506341538286745e154 '\xec\x95\xa2^+65,g' -> '\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2-8.56637515835506341538286745e+180\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2\xec\x95\xa2' +xfmt331 format 88341044782176445871528557964142958e0 '-057,.82e' -> '8.8341044782176445871528557964142958000000000000000000000000000000000000000000000000e+34' +xfmt332 format -39232400649226966016193591076956002E0 '\xe6\x8c\xb3<+' -> '-39232400649226966016193591076956002' +xfmt333 format 33600086738889410790851263880876436E119 '\xee\x84\xb5=+40,.32%' -> '+336,000,867,388,894,107,908,512,638,808,764,360,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000%' +xfmt334 format -10515586778527592923381203440530103E138 '\xec\xba\x97<25.55' -> '-1.0515586778527592923381203440530103E+172' +xfmt335 format 8e0 '\xe5\x8a\x9a<.40' -> '8' +xfmt336 format -5e0 '\xec\x9d\xa5<+95' -> '-5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5\xec\x9d\xa5' +xfmt337 format 4e192 '\xe9\x8a\xa6=1,e' -> '4e+192' +xfmt338 format -8E267 '' -> '-8E+267' +xfmt339 format 935246E0 '\xe1\x88\x94<+,' -> '+935,246' +xfmt340 format -379267E0 '\xe8\x99\x9c= 16g' -> '-\xe8\x99\x9c\xe8\x99\x9c\xe8\x99\x9c\xe8\x99\x9c\xe8\x99\x9c\xe8\x99\x9c\xe8\x99\x9c\xe8\x99\x9c\xe8\x99\x9c379267' +xfmt341 format 994395e147 '+057,F' -> '+994,395,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt342 format -433956e111 '' -> '-4.33956E+116' +xfmt343 format 8271892817143325807399e0 '\xe0\xb8\xb5<' -> '8271892817143325807399' +xfmt344 format -7742170338933676912470E0 '\xd7\xb6^-56' -> '\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6-7742170338933676912470\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6\xd7\xb6' +xfmt345 format 6142694658274126797518e218 '\xeb\xb5\x9f<+79.38n' -> '+6.142694658274126797518e+239\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f\xeb\xb5\x9f' +xfmt346 format -5053540212535627764319e14 '.34' -> '-5.053540212535627764319E+35' +xfmt347 format 6906884156530067306158566848542546787205E0 '\xe6\xab\xa7^' -> '6906884156530067306158566848542546787205' +xfmt348 format -4282183749157262130681912859169550639982e0 '054.49f' -> '-4282183749157262130681912859169550639982.0000000000000000000000000000000000000000000000000' +xfmt349 format 9115920037807984969110725549242078276541E195 '+' -> '+9.115920037807984969110725549242078276541E+234' +xfmt350 format -5192031773804807233475201279356025523478E172 '\xe3\xae\x9e> 26,.36e' -> '-5.192031773804807233475201279356025523e+211' +xfmt351 format 98856201052651020038566E0 '.13' -> '9.885620105265E+22' +xfmt352 format -79077709265709027299916e0 '012,.1' -> '-000,008E+22' +xfmt353 format 40799305254658034532616e313 ',' -> '4.0799305254658034532616E+335' +xfmt354 format -82740244292279211942954e104 '' -> '-8.2740244292279211942954E+126' +xfmt355 format 447067967258524760e0 ',' -> '447,067,967,258,524,760' +xfmt356 format -450792203137842388e0 '' -> '-450792203137842388' +xfmt357 format 826928895159395681e278 '\xd3\x83=-39.66' -> '\xd3\x83\xd3\x83\xd3\x83\xd3\x83\xd3\x83\xd3\x83\xd3\x83\xd3\x83\xd3\x83\xd3\x83\xd3\x83\xd3\x83\xd3\x83\xd3\x83\xd3\x838.26928895159395681E+295' +xfmt358 format -565783867409138595E239 '\xe4\x83\xb2^,F' -> '-56,578,386,740,913,859,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt359 format 9624301754506485930E0 '' -> '9624301754506485930' +xfmt360 format -1527379989837052181e0 '\xec\x84\xa1^27.45F' -> '-1527379989837052181.000000000000000000000000000000000000000000000' +xfmt361 format 4545416010885108629E329 '\xe9\x85\xbb=-64,E' -> '\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb\xe9\x85\xbb4.545416010885108629E+347' +xfmt362 format -7862150175320256282e204 '' -> '-7.862150175320256282E+222' +xfmt363 format 31203944671195065473207295E0 '\xe4\xa9\x97>-,.88' -> '31,203,944,671,195,065,473,207,295' +xfmt364 format -24198742414038401480569968e0 '0f' -> '-24198742414038401480569968' +xfmt365 format 39464323582322945551888974e177 ',' -> '3.9464323582322945551888974E+202' +xfmt366 format -17639115889476768421416503E196 '0' -> '-1.7639115889476768421416503E+221' +xfmt367 format 12345678901.123456789012345678901 '' -> '12345678901.123456789012345678901' +xfmt368 format -1.123456789012345 '+019,E' -> '-1.123456789012345E+0' +xfmt369 format 521995261524315092345000137100672235E0 '\xe3\x84\x8a^+92,.89%' -> '+52,199,526,152,431,509,234,500,013,710,067,223,500.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt370 format -961606327509174386646313324402485692e0 '\xe6\xac\xb7^-61,.75e' -> '-9.616063275091743866463133244024856920000000000000000000000000000000000000000e+35' +xfmt371 format 310049422639498239351824413042835308e274 '\xe3\x81\x8f<+.74' -> '+3.10049422639498239351824413042835308E+309' +xfmt372 format -375372254555718610889968459782645610E241 '\xed\x85\xa6>83,.1E' -> '\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6\xed\x85\xa6-3.8E+276' +xfmt373 format 4597e0 '' -> '4597' +xfmt374 format -7297e0 '' -> '-7297' +xfmt375 format 1947e338 '\xe3\xb5\x9b= 87,.7' -> ' \xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b\xe3\xb5\x9b1.947E+341' +xfmt376 format -7170E180 '\xd9\x9d=+30,.91f' -> '-7,170,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt377 format 4979580153913115347762895175557289632729E0 '\xe5\xa5\xbe^ 34,.8G' -> '\xe5\xa5\xbe\xe5\xa5\xbe\xe5\xa5\xbe\xe5\xa5\xbe\xe5\xa5\xbe\xe5\xa5\xbe\xe5\xa5\xbe\xe5\xa5\xbe\xe5\xa5\xbe\xe5\xa5\xbe 4.9795802E+39\xe5\xa5\xbe\xe5\xa5\xbe\xe5\xa5\xbe\xe5\xa5\xbe\xe5\xa5\xbe\xe5\xa5\xbe\xe5\xa5\xbe\xe5\xa5\xbe\xe5\xa5\xbe\xe5\xa5\xbe' +xfmt378 format -2312130804750071922171587141902222051324e0 '-' -> '-2312130804750071922171587141902222051324' +xfmt379 format 6191354357134419067222686283266646990906e71 '' -> '6.191354357134419067222686283266646990906E+110' +xfmt380 format -1062951108330453642355257027546598944533E63 '\xe3\x88\xb5=-' -> '-1.062951108330453642355257027546598944533E+102' +xfmt381 format 51207980e0 '' -> '51207980' +xfmt382 format -88196314E0 '\xeb\xb0\xb3=92,.65F' -> '-\xeb\xb0\xb3\xeb\xb0\xb3\xeb\xb0\xb3\xeb\xb0\xb3\xeb\xb0\xb3\xeb\xb0\xb3\xeb\xb0\xb3\xeb\xb0\xb3\xeb\xb0\xb3\xeb\xb0\xb3\xeb\xb0\xb3\xeb\xb0\xb3\xeb\xb0\xb3\xeb\xb0\xb3\xeb\xb0\xb388,196,314.00000000000000000000000000000000000000000000000000000000000000000' +xfmt383 format 58752659e31 '\xe7\xbb\x99^ 28.13' -> '\xe7\xbb\x99\xe7\xbb\x99\xe7\xbb\x99\xe7\xbb\x99\xe7\xbb\x99\xe7\xbb\x99\xe7\xbb\x99 5.8752659E+38\xe7\xbb\x99\xe7\xbb\x99\xe7\xbb\x99\xe7\xbb\x99\xe7\xbb\x99\xe7\xbb\x99\xe7\xbb\x99' +xfmt384 format -68387651E123 '\xe9\x96\x88>-30,.81' -> '\xe9\x96\x88\xe9\x96\x88\xe9\x96\x88\xe9\x96\x88\xe9\x96\x88\xe9\x96\x88\xe9\x96\x88\xe9\x96\x88\xe9\x96\x88\xe9\x96\x88\xe9\x96\x88\xe9\x96\x88\xe9\x96\x88\xe9\x96\x88\xe9\x96\x88-6.8387651E+130' +xfmt385 format 5926441776745644369167126143726E0 'e' -> '5.926441776745644369167126143726e+30' +xfmt386 format -2249487044096975995540616023240E0 '\xe9\xab\x8c^-27,.54F' -> '-2,249,487,044,096,975,995,540,616,023,240.000000000000000000000000000000000000000000000000000000' +xfmt387 format 6396678669082041184402743205656E182 '\xe4\x88\x82=+.48F' -> '+639667866908204118440274320565600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000' +xfmt388 format -7411491025839895210843701879465e69 '\xe5\xb1\xb7^+1,.91G' -> '-7.411491025839895210843701879465E+99' +xfmt389 format 48831021748819224422204009064616711427E0 '\xe1\x87\x81^%' -> '4883102174881922442220400906461671142700%' +xfmt390 format -14218129154887489154385146756126679559e0 '\xe6\xb2\x90^-.39' -> '-14218129154887489154385146756126679559' +xfmt391 format 98178144803289159490951079042014510553e237 '' -> '9.8178144803289159490951079042014510553E+274' +xfmt392 format -50116420284849192992995065222156796668e209 '\xe6\xbe\x94<' -> '-5.0116420284849192992995065222156796668E+246' +xfmt393 format 78846895074740541321e0 '' -> '78846895074740541321' +xfmt394 format -92669460991736947066e0 '\xea\x87\x81>+86,g' -> '\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81\xea\x87\x81-92,669,460,991,736,947,066' +xfmt395 format 34565782751630730834e112 '\xe7\xad\xbc=+45,.43e' -> '+3.4565782751630730834000000000000000000000000e+131' +xfmt396 format -54540591968266178550E338 '\xe7\xa9\x8f> 67,.34%' -> '-545,405,919,682,661,785,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000%' +xfmt397 format 926E0 '' -> '926' +xfmt398 format -776E0 '' -> '-776' +xfmt399 format 229E239 '18,.36E' -> '2.290000000000000000000000000000000000E+241' +xfmt400 format -106e6 '\xe2\x88\x94=+13,.75E' -> '-1.060000000000000000000000000000000000000000000000000000000000000000000000000E+8' +xfmt401 format 1360134483203728620442841375590792323661322E0 '0f' -> '1360134483203728620442841375590792323661322' +xfmt402 format -1962497049713774668966767854739207011733959e0 '\xe8\xb5\x99<65' -> '-1962497049713774668966767854739207011733959\xe8\xb5\x99\xe8\xb5\x99\xe8\xb5\x99\xe8\xb5\x99\xe8\xb5\x99\xe8\xb5\x99\xe8\xb5\x99\xe8\xb5\x99\xe8\xb5\x99\xe8\xb5\x99\xe8\xb5\x99\xe8\xb5\x99\xe8\xb5\x99\xe8\xb5\x99\xe8\xb5\x99\xe8\xb5\x99\xe8\xb5\x99\xe8\xb5\x99\xe8\xb5\x99\xe8\xb5\x99\xe8\xb5\x99' +xfmt403 format 7092160263338927227512372450262807578854535E257 '\xe5\x9d\x84>' -> '7.092160263338927227512372450262807578854535E+299' +xfmt404 format -5363492181305469084916285169313460142530592E127 '\xe4\x8c\x80< 78,.67' -> '-5.363492181305469084916285169313460142530592E+169\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80' +xfmt405 format 6305146683932127E0 '\xe4\x9b\x97^-84,.88%' -> '630,514,668,393,212,700.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt406 format -8595154756208369e0 '' -> '-8595154756208369' +xfmt407 format 8448649765798664e10 '\xe8\xa7\xa4= 57G' -> ' \xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa4\xe8\xa7\xa48.448649765798664E+25' +xfmt408 format -8518321777166516e180 '\xeb\xba\x86<10.54G' -> '-8.518321777166516E+195' +xfmt409 format 47007407981155820163010268836705e0 '\xe0\xb1\x81=70.39F' -> '47007407981155820163010268836705.000000000000000000000000000000000000000' +xfmt410 format -84437980973866204041268914557399E0 '\xe3\xbb\xac>,.53' -> '-84,437,980,973,866,204,041,268,914,557,399' +xfmt411 format 76740812799572789990943175800700E89 '\xef\x8c\x8b^-43,.21G' -> '\xef\x8c\x8b\xef\x8c\x8b\xef\x8c\x8b\xef\x8c\x8b\xef\x8c\x8b\xef\x8c\x8b\xef\x8c\x8b\xef\x8c\x8b7.67408127995727899909E+120\xef\x8c\x8b\xef\x8c\x8b\xef\x8c\x8b\xef\x8c\x8b\xef\x8c\x8b\xef\x8c\x8b\xef\x8c\x8b\xef\x8c\x8b' +xfmt412 format -42456795777008195690239198326433E5 '-f' -> '-4245679577700819569023919832643300000' +xfmt413 format 7904117032759384169283717646e0 '' -> '7904117032759384169283717646' +xfmt414 format -3189321849488628556813868424E0 '38.55g' -> ' -3189321849488628556813868424' +xfmt415 format 7934995513939603986178075554E95 '' -> '7.934995513939603986178075554E+122' +xfmt416 format -9551888866139585629935477794E52 '\xe6\x95\x95<+93,.73%' -> '-9,551,888,866,139,585,629,935,477,794,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt417 format 590807525091663687864E0 '\xef\x97\x9f^-67,.9' -> '\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f5.90807525E+20\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f\xef\x97\x9f' +xfmt418 format -287515134010886213057E0 '-,G' -> '-287,515,134,010,886,213,057' +xfmt419 format 744139670247030946604E298 '0' -> '7.44139670247030946604E+318' +xfmt420 format -363108069798069460608E205 '\xef\x86\xa2=.71G' -> '-3.63108069798069460608E+225' +xfmt421 format 339019654745E0 ',' -> '339,019,654,745' +xfmt422 format -350296473286E0 '\xed\x8e\x8a^ 55' -> '\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a-350296473286\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a\xed\x8e\x8a' +xfmt423 format 629736534489E97 '+0' -> '+6.29736534489E+108' +xfmt424 format -957007717744E52 '\xe9\x91\xa8=1,' -> '-9.57007717744E+63' +xfmt425 format 84759446500994973279088041344e0 ',' -> '84,759,446,500,994,973,279,088,041,344' +xfmt426 format -55611790646407029663185720064e0 '\xe1\x85\x8c<50,.71e' -> '-5.56117906464070296631857200640000000000000000000000000000000000000000000e+28' +xfmt427 format 28877033685747395205646148644E152 '+095,%' -> '+288,770,336,857,473,952,056,461,486,440,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt428 format -69146296698548009670830899643e0 ' 084.97f' -> '-69146296698548009670830899643.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt429 format 33783782194771296536031E0 '\xe9\xa3\x9b> 25,.71E' -> ' 3.37837821947712965360310000000000000000000000000000000000000000000000000E+22' +xfmt430 format -22252356087949725446625e0 '012.95f' -> '-22252356087949725446625.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt431 format 25948374366503856611721e41 '\xe8\xa3\xb1^+96f' -> '\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1+2594837436650385661172100000000000000000000000000000000000000000\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1\xe8\xa3\xb1' +xfmt432 format -23290119536112504746366e246 '\xe1\xae\x82^ 20,.75g' -> '-2.3290119536112504746366e+268' +xfmt433 format 78378359145395015780037030288310842e0 '\xe5\xb2\xa5>+59,.58e' -> '+7.8378359145395015780037030288310842000000000000000000000000e+34' +xfmt434 format -63645024658124276788028020430496834e0 '+65,e' -> ' -6.3645024658124276788028020430496834e+34' +xfmt435 format 17938420918403810991436404615503996e7 ',F' -> '179,384,209,184,038,109,914,364,046,155,039,960,000,000' +xfmt436 format -44165230060918034671060738931503126E69 '\xef\x9e\x9a<+52,' -> '-4.4165230060918034671060738931503126E+103\xef\x9e\x9a\xef\x9e\x9a\xef\x9e\x9a\xef\x9e\x9a\xef\x9e\x9a\xef\x9e\x9a\xef\x9e\x9a\xef\x9e\x9a\xef\x9e\x9a\xef\x9e\x9a' +xfmt437 format 112579832619464212770399752056900881948115e0 '' -> '112579832619464212770399752056900881948115' +xfmt438 format -296774905928416695278196309062122326720030E0 '' -> '-296774905928416695278196309062122326720030' +xfmt439 format 335461392055219841969816343869263663834611e274 '\xe5\xaa\xb9> 1,.98E' -> ' 3.35461392055219841969816343869263663834611000000000000000000000000000000000000000000000000000000000E+315' +xfmt440 format -532457436253913548054616830980839259341241E173 '048.70' -> '-5.32457436253913548054616830980839259341241E+214' +xfmt441 format 771877043650700988E0 '+' -> '+771877043650700988' +xfmt442 format -342106134460007032e0 '' -> '-342106134460007032' +xfmt443 format 395454969135241547e36 '+094,g' -> '+000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,003.95454969135241547e+53' +xfmt444 format -705675525669734258E364 '' -> '-7.05675525669734258E+381' +xfmt445 format 6548437143975982177012649390306076e0 '\xe3\x9c\xa7<11,.11%' -> '654,843,714,397,598,217,701,264,939,030,607,600.00000000000%' +xfmt446 format -5255232713278184617543539325850324e0 '78,' -> ' -5,255,232,713,278,184,617,543,539,325,850,324' +xfmt447 format 4350053905634789308613495599320436e330 '-.99F' -> '4350053905634789308613495599320436000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt448 format -2488485789662154970308079048063598e22 '' -> '-2.488485789662154970308079048063598E+55' +xfmt449 format 325643413864851617102828865817368558864E0 '-042,E' -> '3.25643413864851617102828865817368558864E+38' +xfmt450 format -581241540224106661977432068018790628340e0 '' -> '-581241540224106661977432068018790628340' +xfmt451 format 628991738944160353838915772705240649936E0 '\xe1\xa9\x81^90,.86%' -> '62,899,173,894,416,035,383,891,577,270,524,064,993,600.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt452 format -111423687246206948556617511994474705622e136 '089' -> '-00000000000000000000000000000000000000000001.11423687246206948556617511994474705622E+174' +xfmt453 format 5948510E0 '\xe8\xa7\x96= 95,.18E' -> ' \xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x96\xe8\xa7\x965.948510000000000000E+6' +xfmt454 format -8730902e0 '\xe9\x9e\xb9=-34,.20' -> '-\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb98,730,902' +xfmt455 format 6528664e159 '\xef\x88\x9b^65.42e' -> '\xef\x88\x9b\xef\x88\x9b\xef\x88\x9b\xef\x88\x9b\xef\x88\x9b\xef\x88\x9b\xef\x88\x9b\xef\x88\x9b6.528664000000000000000000000000000000000000e+165\xef\x88\x9b\xef\x88\x9b\xef\x88\x9b\xef\x88\x9b\xef\x88\x9b\xef\x88\x9b\xef\x88\x9b\xef\x88\x9b' +xfmt456 format -3428060e6 '' -> '-3.428060E+12' +xfmt457 format 46663855786e0 '' -> '46663855786' +xfmt458 format -32934707770E0 '' -> '-32934707770' +xfmt459 format 24661200764e303 ',' -> '2.4661200764E+313' +xfmt460 format -66955268746E331 '\xd1\xab<79,.28' -> '-6.6955268746E+341\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab\xd1\xab' +xfmt461 format 9833851393675291304e0 '+f' -> '+9833851393675291304' +xfmt462 format -4160045262702683710e0 'f' -> '-4160045262702683710' +xfmt463 format 8359804509187483866e21 '\xd6\x9e^52,.89g' -> '\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e8.359804509187483866e+39\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e\xd6\x9e' +xfmt464 format -3084882517807276559e375 '-020,f' -> '-3,084,882,517,807,276,559,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt465 format 99104122760120E0 '\xe3\xb9\xac<+,.54e' -> '+9.910412276012000000000000000000000000000000000000000000e+13' +xfmt466 format -36472516240123e0 '0.33E' -> '-3.647251624012300000000000000000000E+13' +xfmt467 format 20532368419927E108 '-0,.29' -> '2.0532368419927E+121' +xfmt468 format -68575520086631E228 '-,g' -> '-6.8575520086631e+241' +xfmt469 format 168088909574687940444632591E0 '\xef\xa1\x83> ,.88%' -> ' 16,808,890,957,468,794,044,463,259,100.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt470 format -829940300721719937787476512E0 '' -> '-829940300721719937787476512' +xfmt471 format 436740777394664101751853375E275 '19,' -> '4.36740777394664101751853375E+301' +xfmt472 format -604687405298399927473270313e92 '\xe0\xb2\xb6<-,F' -> '-60,468,740,529,839,992,747,327,031,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt473 format 98E0 '069,.38g' -> '0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,098' +xfmt474 format -79e0 '.79' -> '-79' +xfmt475 format 77E28 '\xe2\xbe\xb7>-,.35' -> '7.7E+29' +xfmt476 format -50e166 '\xe5\xb4\x8f^ 46,.39%' -> '-50,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000%' +xfmt477 format 910478390895505233141029711231e0 '0' -> '910478390895505233141029711231' +xfmt478 format -882294894408379213065577746868e0 '0,' -> '-882,294,894,408,379,213,065,577,746,868' +xfmt479 format 732045759817693935543018898838E260 '84' -> ' 7.32045759817693935543018898838E+289' +xfmt480 format -763342379229741097411722440427e265 '.88' -> '-7.63342379229741097411722440427E+294' +xfmt481 format 618037156505675e0 '' -> '618037156505675' +xfmt482 format -112234225044861e0 '\xee\xbd\x97=-39,.22E' -> '-\xee\xbd\x97\xee\xbd\x97\xee\xbd\x97\xee\xbd\x97\xee\xbd\x97\xee\xbd\x97\xee\xbd\x97\xee\xbd\x97\xee\xbd\x97\xee\xbd\x971.1223422504486100000000E+14' +xfmt483 format 927307679103331e291 '033,.39%' -> '92,730,767,910,333,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000%' +xfmt484 format -662058796208314e311 '\xe8\xb4\x82< 33,f' -> '-66,205,879,620,831,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt485 format 986276e0 '\xe6\x8e\x97^-.62' -> '986276' +xfmt486 format -116173E0 '\xec\x84\xa7<+3,.35g' -> '-116,173' +xfmt487 format 272404e161 '\xef\x84\x8a<36,.1E' -> '2.7E+166\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a\xef\x84\x8a' +xfmt488 format -200200E173 '' -> '-2.00200E+178' +xfmt489 format 1234567890123456789.12345678901234567 '+011,E' -> '+1.23456789012345678912345678901234567E+18' +xfmt490 format -.1234567890123456789 '\xe1\x89\x8a> ,.33g' -> '-0.1234567890123456789' +xfmt491 format 89742768054e0 '-' -> '89742768054' +xfmt492 format -51725301888e0 '\xe7\xbd\xa4^ 2,.6' -> '-5.17253E+10' +xfmt493 format 39059770469E306 '71g' -> ' 3.9059770469e+316' +xfmt494 format -98957606315e155 '33,.51G' -> ' -9.8957606315E+165' +xfmt495 format 6841908419786319E0 ' ' -> ' 6841908419786319' +xfmt496 format -7546509316785775E0 ',' -> '-7,546,509,316,785,775' +xfmt497 format 6793687521856948e357 '97' -> ' 6.793687521856948E+372' +xfmt498 format -4785541955457694E47 '-75' -> ' -4.785541955457694E+62' +xfmt499 format 3943785E0 '\xe5\x8c\x94=-51,%' -> '\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94\xe5\x8c\x94394,378,500%' +xfmt500 format -9364721e0 '0' -> '-9364721' +xfmt501 format 3540569e262 '\xec\xb6\x93=.19n' -> '3.540569e+268' +xfmt502 format -3942646E165 '\xe2\x8d\xa6<,' -> '-3.942646E+171' +xfmt503 format 747379477744469400646808E0 '37' -> ' 747379477744469400646808' +xfmt504 format -989771389811815436347309E0 '\xe3\xad\x82= 4,.59G' -> '-989,771,389,811,815,436,347,309' +xfmt505 format 942947021737955018153814e26 '\xec\x97\x87>+.18' -> '+9.42947021737955018E+49' +xfmt506 format -182587103869982043183351E350 '\xe9\x80\x8a^-30,.73g' -> '-1.82587103869982043183351e+373' +xfmt507 format 349695786922E0 '\xee\x89\xba=-81,.28E' -> '\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba\xee\x89\xba3.4969578692200000000000000000E+11' +xfmt508 format -666917767091e0 '\xef\x8d\x94=,' -> '-666,917,767,091' +xfmt509 format 303980924455e147 '' -> '3.03980924455E+158' +xfmt510 format -451911504096E193 '\xea\xa1\x9f=+f' -> '-4519115040960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt511 format 76746931175297779200141206599281617e0 '-.69f' -> '76746931175297779200141206599281617.000000000000000000000000000000000000000000000000000000000000000000000' +xfmt512 format -42433012288439512071388247062203340e0 '\xe7\xaa\x99<91e' -> '-4.2433012288439512071388247062203340e+34\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99\xe7\xaa\x99' +xfmt513 format 76579534551916684537355715509298933e328 '\xe2\x8c\xa5^ 53,.42F' -> ' 765,795,345,519,166,845,373,557,155,092,989,330,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000' +xfmt514 format -24404711995335073710377218786362636E180 '\xed\x98\xb4<-51' -> '-2.4404711995335073710377218786362636E+214\xed\x98\xb4\xed\x98\xb4\xed\x98\xb4\xed\x98\xb4\xed\x98\xb4\xed\x98\xb4\xed\x98\xb4\xed\x98\xb4\xed\x98\xb4' +xfmt515 format 2197180643176e0 '\xec\xb7\xa3< 72,.97e' -> ' 2.1971806431760000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+12' +xfmt516 format -7890952630981e0 '' -> '-7890952630981' +xfmt517 format 3843169847411e212 '\xea\x96\x97=-58,.70%' -> '38,431,698,474,110,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt518 format -3096152161898E195 '' -> '-3.096152161898E+207' +xfmt519 format 347603786957533533994035048399421e0 '\xe2\xaf\xae=+,.11e' -> '+3.47603786958e+32' +xfmt520 format -339522712067834162515672344928924E0 '' -> '-339522712067834162515672344928924' +xfmt521 format 186348688490769649975769114899288E181 '\xef\xb4\x9b>-15,%' -> '186,348,688,490,769,649,975,769,114,899,288,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt522 format -490052152149363496277118277224523E215 '+089,.12%' -> '-4,900,521,521,493,634,962,771,182,772,245,230,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000%' +xfmt523 format 3E0 '\xea\x9d\xaf<30.35%' -> '300.00000000000000000000000000000000000%' +xfmt524 format -8E0 '' -> '-8' +xfmt525 format 4e57 '\xe9\x9b\x9c^ 10' -> '\xe9\x9b\x9c\xe9\x9b\x9c 4E+57\xe9\x9b\x9c\xe9\x9b\x9c' +xfmt526 format -7e35 '+075F' -> '-00000000000000000000000000000000000000700000000000000000000000000000000000' +xfmt527 format 13192e0 '-045n' -> '000000000000000000000000000000000000000013192' +xfmt528 format -34878E0 '\xe8\x81\x9f<-45,.12f' -> '-34,878.000000000000\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f\xe8\x81\x9f' +xfmt529 format 34403e107 '\xe6\x9d\xa1=77' -> '\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa1\xe6\x9d\xa13.4403E+111' +xfmt530 format -15150E363 '\xe9\x99\xb4^49.76%' -> '-1515000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt531 format 610927E0 '081,' -> '0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,610,927' +xfmt532 format -215970e0 '\xe2\xb8\x8d^31,.35' -> '\xe2\xb8\x8d\xe2\xb8\x8d\xe2\xb8\x8d\xe2\xb8\x8d\xe2\xb8\x8d\xe2\xb8\x8d\xe2\xb8\x8d\xe2\xb8\x8d\xe2\xb8\x8d\xe2\xb8\x8d\xe2\xb8\x8d-215,970\xe2\xb8\x8d\xe2\xb8\x8d\xe2\xb8\x8d\xe2\xb8\x8d\xe2\xb8\x8d\xe2\xb8\x8d\xe2\xb8\x8d\xe2\xb8\x8d\xe2\xb8\x8d\xe2\xb8\x8d\xe2\xb8\x8d\xe2\xb8\x8d' +xfmt533 format 977736e208 '\xe3\x94\xbb>-22,.36F' -> '9,777,360,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000' +xfmt534 format -469283e106 '\xe3\xa6\x8e^45' -> '\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e-4.69283E+111\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e\xe3\xa6\x8e' +xfmt535 format 1373423478162005181830819097716685314078881e0 '\xe2\x9a\xa8>' -> '1373423478162005181830819097716685314078881' +xfmt536 format -8997082295840181619546160667757742126938559E0 '\xec\x98\x8e< ,' -> '-8,997,082,295,840,181,619,546,160,667,757,742,126,938,559' +xfmt537 format 2141178953143213346790121533012749373685087e110 ' 25,' -> ' 2.141178953143213346790121533012749373685087E+152' +xfmt538 format -4692126334187238393545779681056853926549011e136 '-044,.75G' -> '-4.692126334187238393545779681056853926549011E+178' +xfmt539 format 23946137748546905925420873042589E0 '78' -> ' 23946137748546905925420873042589' +xfmt540 format -72754270416193918182599264246277E0 '\xe5\xba\xa2> 95,' -> '\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2\xe5\xba\xa2-72,754,270,416,193,918,182,599,264,246,277' +xfmt541 format 21720323967893697024433259469961e68 '' -> '2.1720323967893697024433259469961E+99' +xfmt542 format -10854328516457469963310162752462e299 '+037.10' -> '-000000000000000000001.085432852E+330' +xfmt543 format 63603786881183268E0 '\xe6\x9e\xaf> ,.79F' -> ' 63,603,786,881,183,268.0000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt544 format -28231619455487186e0 '+25' -> ' -28231619455487186' +xfmt545 format 13424853955878369e317 '\xec\x97\x94>+59.29G' -> '\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94\xec\x97\x94+1.3424853955878369E+333' +xfmt546 format -61594265368296011E272 '' -> '-6.1594265368296011E+288' +xfmt547 format 726690368266741186749997230447402511e0 '\xef\x83\x99^.48' -> '726690368266741186749997230447402511' +xfmt548 format -226019804433205725896561958712019522e0 ' 59' -> ' -226019804433205725896561958712019522' +xfmt549 format 891156314499115994479822450302231263e22 '\xeb\x87\x89=+68' -> '+\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x89\xeb\x87\x898.91156314499115994479822450302231263E+57' +xfmt550 format -792341189910523860099441115212505408e256 '025.67f' -> '-7923411899105238600994411152125054080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000000' +xfmt551 format 193E0 ',' -> '193' +xfmt552 format -673E0 '\xeb\x8e\x86>10e' -> '\xeb\x8e\x86\xeb\x8e\x86-6.73e+2' +xfmt553 format 791e330 '67,' -> ' 7.91E+332' +xfmt554 format -264e69 '\xe8\x8e\xb1> 29,.92g' -> '\xe8\x8e\xb1\xe8\x8e\xb1\xe8\x8e\xb1\xe8\x8e\xb1\xe8\x8e\xb1\xe8\x8e\xb1\xe8\x8e\xb1\xe8\x8e\xb1\xe8\x8e\xb1\xe8\x8e\xb1\xe8\x8e\xb1\xe8\x8e\xb1\xe8\x8e\xb1\xe8\x8e\xb1\xe8\x8e\xb1\xe8\x8e\xb1\xe8\x8e\xb1\xe8\x8e\xb1\xe8\x8e\xb1\xe8\x8e\xb1-2.64e+71' +xfmt555 format 384322839811698E0 '\xe4\xbe\x8b=+,.97e' -> '+3.8432283981169800000000000000000000000000000000000000000000000000000000000000000000000000000000000e+14' +xfmt556 format -716858196484250E0 '+010,.46E' -> '-7.1685819648425000000000000000000000000000000000E+14' +xfmt557 format 757146481864726e194 '\xe0\xba\xaf<-46,.32E' -> '7.57146481864726000000000000000000E+208\xe0\xba\xaf\xe0\xba\xaf\xe0\xba\xaf\xe0\xba\xaf\xe0\xba\xaf\xe0\xba\xaf\xe0\xba\xaf' +xfmt558 format -592346091448675E101 '\xeb\x98\xba=,' -> '-5.92346091448675E+115' +xfmt559 format 8731454695615411980908100069E0 '048,.57f' -> '8,731,454,695,615,411,980,908,100,069.000000000000000000000000000000000000000000000000000000000' +xfmt560 format -1684366862856092917001134975E0 ' .25' -> '-1.684366862856092917001135E+27' +xfmt561 format 6294025670751125797205295083E370 '0' -> '6.294025670751125797205295083E+397' +xfmt562 format -9842388000121209416313298059e312 '\xea\x97\xa8^ ,.60G' -> '-9.842388000121209416313298059E+339' +xfmt563 format 19060532365318e0 '\xef\xa7\xa0> 40,.56F' -> ' 19,060,532,365,318.00000000000000000000000000000000000000000000000000000000' +xfmt564 format -68461875068381e0 '\xe9\x86\x84^ g' -> '-68461875068381' +xfmt565 format 76502046908552E312 '\xe8\xa9\x85^+,.96f' -> '+76,502,046,908,552,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt566 format -56975421260920e139 '\xe4\xb1\xba< 79' -> '-5.6975421260920E+152\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba\xe4\xb1\xba' +xfmt567 format 61771947E0 '\xe5\xb4\x83<' -> '61771947' +xfmt568 format -93846769E0 '' -> '-93846769' +xfmt569 format 75354918e340 '0' -> '7.5354918E+347' +xfmt570 format -72791499E84 '' -> '-7.2791499E+91' +xfmt571 format 748449919089487005e0 '' -> '748449919089487005' +xfmt572 format -501454088942486489e0 '47,' -> ' -501,454,088,942,486,489' +xfmt573 format 881595883475362594E381 '056,.30' -> '0,000,000,000,000,000,000,000,008.81595883475362594E+398' +xfmt574 format -283776189543990598e86 '03.56' -> '-2.83776189543990598E+103' +xfmt575 format 90095743569915562049860e0 '' -> '90095743569915562049860' +xfmt576 format -50126137998412576905925e0 '.87' -> '-50126137998412576905925' +xfmt577 format 36910517570801196887473E369 '086,%' -> '3,691,051,757,080,119,688,747,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt578 format -60026700918463722153244e243 '0,.89' -> '-6.0026700918463722153244E+265' +xfmt579 format 1360431336078156045659464062007E0 '\xee\x90\x8d^+99%' -> '\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d+136043133607815604565946406200700%\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d\xee\x90\x8d' +xfmt580 format -3723581528564170058655073897435e0 '0,E' -> '-3.723581528564170058655073897435E+30' +xfmt581 format 6155734098508356719813180970612E171 '\xe0\xa7\xbd<+.94E' -> '+6.1557340985083567198131809706120000000000000000000000000000000000000000000000000000000000000000E+201' +xfmt582 format -8654405930325456248489588261451e104 '.59G' -> '-8.654405930325456248489588261451E+134' +xfmt583 format 534757448688454169109E0 '+,' -> '+534,757,448,688,454,169,109' +xfmt584 format -295058449630573345610E0 '\xea\x8a\x80>g' -> '-295058449630573345610' +xfmt585 format 875836371417325607592E193 '\xec\xb5\xab< 75.56' -> ' 8.75836371417325607592E+213\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab\xec\xb5\xab' +xfmt586 format -367205972673729239043E60 '\xe2\xbe\xa9<' -> '-3.67205972673729239043E+80' +xfmt587 format 5201992617987455759035286372879540121269E0 '+6,' -> '+5,201,992,617,987,455,759,035,286,372,879,540,121,269' +xfmt588 format -9883371033570500811362215874428531755471E0 '\xe2\xbf\xb8=' -> '-9883371033570500811362215874428531755471' +xfmt589 format 7328200494654484282615284713882361648211E201 '.1' -> '7E+240' +xfmt590 format -6257707172825365797332470717385070311567E146 '\xe8\xa7\x8b^+E' -> '-6.257707172825365797332470717385070311567E+185' +xfmt591 format 9885325950e0 '' -> '9885325950' +xfmt592 format -7868257041e0 '\xe5\x9b\xb3<.23' -> '-7868257041' +xfmt593 format 7627330474E62 '\xee\x96\xaa^ 81,' -> '\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa 7.627330474E+71\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa\xee\x96\xaa' +xfmt594 format -7017688472e225 '\xe5\xb5\x9c<-,.76' -> '-7.017688472E+234' +xfmt595 format 35450194252745228177315569967779824142e0 '88' -> ' 35450194252745228177315569967779824142' +xfmt596 format -37795497879591602216056151602335249378e0 '\xe1\x9c\xb0= 7e' -> '-3.7795497879591602216056151602335249378e+37' +xfmt597 format 15796789239585077500561374891882533544e78 '\xe5\xb6\xb8= 48,.43g' -> ' \xe5\xb6\xb8\xe5\xb6\xb8\xe5\xb6\xb81.5796789239585077500561374891882533544e+115' +xfmt598 format -19688729605249252236177478514228104866E80 '\xe6\x92\xbd<+72,.8' -> '-1.9688730E+117\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd\xe6\x92\xbd' +xfmt599 format 250770391312687421922909380894e0 '\xef\xb1\xb1=9' -> '250770391312687421922909380894' +xfmt600 format -771540162964608519970763443813e0 ',' -> '-771,540,162,964,608,519,970,763,443,813' +xfmt601 format 504482462227047396304900000663E188 '.95' -> '5.04482462227047396304900000663E+217' +xfmt602 format -424803366943165421059675959861e70 '\xe4\x98\xae<+64.53' -> '-4.24803366943165421059675959861E+99\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae\xe4\x98\xae' +xfmt603 format 8021270411878960804028e0 '' -> '8021270411878960804028' +xfmt604 format -2739824366639117591029E0 '\xe7\x8d\x8a>66,.34' -> '\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a\xe7\x8d\x8a-2,739,824,366,639,117,591,029' +xfmt605 format 1461435229017426248017E76 '' -> '1.461435229017426248017E+97' +xfmt606 format -3661324267728541555781e282 '\xef\x80\x8e=-22,.97%' -> '-366,132,426,772,854,155,578,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt607 format 52603420103187477789140015203E0 '+022,.50f' -> '+52,603,420,103,187,477,789,140,015,203.00000000000000000000000000000000000000000000000000' +xfmt608 format -23689713241341117285934544727e0 '\xe3\x88\x99= .16F' -> '-23689713241341117285934544727.0000000000000000' +xfmt609 format 95014776302359012778249214902e208 ' .84' -> ' 9.5014776302359012778249214902E+236' +xfmt610 format -35654923889467064474306819540e41 '\xe8\xa7\x89= 71.90g' -> '-\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x89\xe8\xa7\x893.5654923889467064474306819540e+69' +xfmt611 format 12345678. '' -> '12345678' +xfmt612 format -12345678901.12345678901 '' -> '-12345678901.12345678901' +xfmt613 format 1451177004567911918858E0 '0' -> '1451177004567911918858' +xfmt614 format -2308395739143353473525E0 '' -> '-2308395739143353473525' +xfmt615 format 4436276319562609027771E214 '\xef\xa8\x85=+,.26' -> '+4.436276319562609027771E+235' +xfmt616 format -8323703969267624874926E172 '' -> '-8.323703969267624874926E+193' +xfmt617 format 7584336486732858223485848070E0 '-16.44' -> '7584336486732858223485848070' +xfmt618 format -9058454534024874684741538005E0 '\xe5\xba\x81> 14,.60e' -> '-9.058454534024874684741538005000000000000000000000000000000000e+27' +xfmt619 format 4812192805707269956914101543E282 '\xe8\xb6\x9c<+87.23%' -> '+481219280570726995691410154300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000%' +xfmt620 format -5618726811531250217513357316e325 '+,f' -> '-56,187,268,115,312,502,175,133,573,160,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt621 format 293266930237393330222983349735e0 '' -> '293266930237393330222983349735' +xfmt622 format -179214943478592008520711490016E0 ',' -> '-179,214,943,478,592,008,520,711,490,016' +xfmt623 format 376057497733565736489128054834e270 '+049' -> '+0000000000003.76057497733565736489128054834E+299' +xfmt624 format -974531122289006869933898650123e302 '\xe9\xb0\xb1=+,.58' -> '-9.74531122289006869933898650123E+331' +xfmt625 format 7199100780409932e0 '\xe7\x8d\xbd>52.89G' -> '\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd\xe7\x8d\xbd7199100780409932' +xfmt626 format -4136245822056398E0 ' 65.95' -> ' -4136245822056398' +xfmt627 format 2027353601307463E73 '\xea\xb8\x98>+,.4e' -> '+2.0274e+88' +xfmt628 format -5449208331511766e342 '\xe8\xa2\x81<-,.23e' -> '-5.44920833151176600000000e+357' +xfmt629 format 99225877474402783943904515150e0 '0.21' -> '9.92258774744027839439E+28' +xfmt630 format -78423788360876575812905833406e0 '' -> '-78423788360876575812905833406' +xfmt631 format 16088261530124742163477094550E148 '+E' -> '+1.6088261530124742163477094550E+176' +xfmt632 format -77512291139460427562419897334E248 '\xe6\x8b\x86>.40G' -> '-7.7512291139460427562419897334E+276' +xfmt633 format 0e0 '\xeb\x9f\x92> 74,.68F' -> '\xeb\x9f\x92\xeb\x9f\x92\xeb\x9f\x92 0.00000000000000000000000000000000000000000000000000000000000000000000' +xfmt634 format 0e0 '\xef\xa3\x9b=,F' -> '0' +xfmt635 format 0E306 '' -> '0E+306' +xfmt636 format 0E120 '\xeb\x91\xa9>62,.65%' -> '0.00000000000000000000000000000000000000000000000000000000000000000%' +xfmt637 format 1073818012141E0 '\xec\xa7\xa3^12,.60' -> '1,073,818,012,141' +xfmt638 format -1098087731779E0 '\xef\xa4\xad< ,.92G' -> '-1,098,087,731,779' +xfmt639 format 1615644202126E128 '\xee\xb4\x89>-61,E' -> '\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x89\xee\xb4\x891.615644202126E+140' +xfmt640 format -1434164116531e374 '.25%' -> '-14341641165310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000%' +xfmt641 format 786466120895211e0 '\xef\xbe\x81> 23,.65%' -> ' 78,646,612,089,521,100.00000000000000000000000000000000000000000000000000000000000000000%' +xfmt642 format -788721560448806e0 '\xef\x8a\xb2^+16,.93e' -> '-7.887215604488060000000000000000000000000000000000000000000000000000000000000000000000000000000e+14' +xfmt643 format 242290573490039e140 '7>-35,.91E' -> '2.4229057349003900000000000000000000000000000000000000000000000000000000000000000000000000000E+154' +xfmt644 format -740316495682860E172 '' -> '-7.40316495682860E+186' +xfmt645 format 1327165571497055144E0 '\xea\xa9\x9a<36,.15' -> '1.32716557149706E+18\xea\xa9\x9a\xea\xa9\x9a\xea\xa9\x9a\xea\xa9\x9a\xea\xa9\x9a\xea\xa9\x9a\xea\xa9\x9a\xea\xa9\x9a\xea\xa9\x9a\xea\xa9\x9a\xea\xa9\x9a\xea\xa9\x9a\xea\xa9\x9a\xea\xa9\x9a\xea\xa9\x9a\xea\xa9\x9a' +xfmt646 format -2819706952605373886E0 '\xee\xbb\x81>+58,.33' -> '\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81\xee\xbb\x81-2,819,706,952,605,373,886' +xfmt647 format 5102146834559515883E53 '\xe4\xac\x84=-.95G' -> '5.102146834559515883E+71' +xfmt648 format -6743516856947812486e2 '\xeb\x82\x8b< 51.17g' -> '-6.7435168569478125e+20\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b\xeb\x82\x8b' +xfmt649 format 22643523810568134402440171380964323e0 '' -> '22643523810568134402440171380964323' +xfmt650 format -83896679411150583734810862462532171E0 '\xc9\x8d^-,.27F' -> '-83,896,679,411,150,583,734,810,862,462,532,171.000000000000000000000000000' +xfmt651 format 24127533951726713084836551595995247e183 '\xe9\xa0\x86^-27.5F' -> '24127533951726713084836551595995247000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000' +xfmt652 format -94218853673661603222800183748422597E362 '+34,%' -> '-942,188,536,736,616,032,228,001,837,484,225,970,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt653 format 6236451265072246906823159842510947e0 '\xe7\x81\x8c^ 52,.69E' -> ' 6.236451265072246906823159842510947000000000000000000000000000000000000E+33' +xfmt654 format -5158705746974400553251330151878550E0 '' -> '-5158705746974400553251330151878550' +xfmt655 format 2873596308316319465996064690701085e3 '\xed\x8b\xb5< 56,.90F' -> ' 2,873,596,308,316,319,465,996,064,690,701,085,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt656 format -4504899449371655953710562547100487E124 '\xe7\xbc\xa0>+,g' -> '-4.504899449371655953710562547100487e+157' +xfmt657 format 386615875085e0 '0' -> '386615875085' +xfmt658 format -343409913163E0 '\xed\x8d\xa2^-42.42g' -> '\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2-343409913163\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2\xed\x8d\xa2' +xfmt659 format 248341946048e258 '\xef\x89\x9a>-17,.45' -> '2.48341946048E+269' +xfmt660 format -831910420869E4 '0,.90g' -> '-8.31910420869e+15' +xfmt661 format 2638433596848588241830675851011151378E0 ',' -> '2,638,433,596,848,588,241,830,675,851,011,151,378' +xfmt662 format -5466760108870060853789593155524560826E0 ',.71' -> '-5,466,760,108,870,060,853,789,593,155,524,560,826' +xfmt663 format 1883543298717160216145733712677978088E168 ' 0,.96e' -> ' 1.883543298717160216145733712677978088000000000000000000000000000000000000000000000000000000000000e+204' +xfmt664 format -6027724002477834958014929202685812067E300 '\xe9\xab\xa6<-86,.57' -> '-6.027724002477834958014929202685812067E+336\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6\xe9\xab\xa6' +xfmt665 format 19228e0 '59e' -> ' 1.9228e+4' +xfmt666 format -81823E0 '0.68F' -> '-81823.00000000000000000000000000000000000000000000000000000000000000000000' +xfmt667 format 46922E357 '0.12G' -> '4.6922E+361' +xfmt668 format -76463e227 '\xe8\xbb\x90^' -> '-7.6463E+231' +xfmt669 format 5973783299e0 '.79' -> '5973783299' +xfmt670 format -8079221043E0 '\xcc\x97<-9.9G' -> '-8.07922104E+9' +xfmt671 format 4306421311e153 '011,F' -> '4,306,421,311,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt672 format -4783641179e219 '\xef\x91\xaf< .47' -> '-4.783641179E+228' +xfmt673 format 6457330882303466909022289338216e0 '-0,.49E' -> '6.4573308823034669090222893382160000000000000000000E+30' +xfmt674 format -7600596910460523477136413099733E0 '84' -> ' -7600596910460523477136413099733' +xfmt675 format 5466485266412390174305441103598E218 '\xe7\xb7\xad<+54.83g' -> '+5.466485266412390174305441103598e+248\xe7\xb7\xad\xe7\xb7\xad\xe7\xb7\xad\xe7\xb7\xad\xe7\xb7\xad\xe7\xb7\xad\xe7\xb7\xad\xe7\xb7\xad\xe7\xb7\xad\xe7\xb7\xad\xe7\xb7\xad\xe7\xb7\xad\xe7\xb7\xad\xe7\xb7\xad\xe7\xb7\xad\xe7\xb7\xad' +xfmt676 format -1534580687961097686690130497861e193 '' -> '-1.534580687961097686690130497861E+223' +xfmt677 format 802316320956356024E0 '\xe9\x85\xb8^f' -> '802316320956356024' +xfmt678 format -838500277246982294e0 '\xeb\x92\x9d>-64,g' -> '\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d\xeb\x92\x9d-838,500,277,246,982,294' +xfmt679 format 361255174508689292e152 '+03,G' -> '+3.61255174508689292E+169' +xfmt680 format -529056806890846182e83 '\xe3\xa6\xb7<-' -> '-5.29056806890846182E+100' +xfmt681 format 11258328355636493627067447455204169175317E0 ' 037F' -> ' 11258328355636493627067447455204169175317' +xfmt682 format -27599972877904089555421882566342902053539e0 '' -> '-27599972877904089555421882566342902053539' +xfmt683 format 19076030974175690592877975671642384229515e237 '\xe3\x91\xab>-55' -> '\xe3\x91\xab\xe3\x91\xab\xe3\x91\xab\xe3\x91\xab\xe3\x91\xab\xe3\x91\xab\xe3\x91\xab\xe3\x91\xab1.9076030974175690592877975671642384229515E+277' +xfmt684 format -94157332917821651329503641001491490999515e125 '\xe7\x93\xb8=+22,.32E' -> '-9.41573329178216513295036410014915E+165' +xfmt685 format 20e0 '' -> '20' +xfmt686 format -97e0 '\xe8\xb1\x80^52,.58F' -> '-97.0000000000000000000000000000000000000000000000000000000000' +xfmt687 format 45E172 '\xe3\xbd\xb8^+86,.92G' -> '\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8+4.5E+173\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8\xe3\xbd\xb8' +xfmt688 format -20e128 '-' -> '-2.0E+129' +xfmt689 format 7638e0 '\xe6\xb2\xa0^ 10,.69F' -> ' 7,638.000000000000000000000000000000000000000000000000000000000000000000000' +xfmt690 format -2611E0 ',.43' -> '-2,611' +xfmt691 format 4967e254 ',' -> '4.967E+257' +xfmt692 format -2744e63 '\xe4\x88\x80=93e' -> '-\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x80\xe4\x88\x802.744e+66' +xfmt693 format 108952079151018676690222E0 '\xec\xb5\xa3=22' -> '108952079151018676690222' +xfmt694 format -967476889221842654701685e0 '\xeb\x98\xaa>,.41' -> '-967,476,889,221,842,654,701,685' +xfmt695 format 797225643220929559094705E83 '\xec\x8d\xb3^-88,.19%' -> '7,972,256,432,209,295,590,947,050,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000%' +xfmt696 format -934691476410262263125167e285 '\xe2\x98\xa8<+36,.17' -> '-9.3469147641026226E+308\xe2\x98\xa8\xe2\x98\xa8\xe2\x98\xa8\xe2\x98\xa8\xe2\x98\xa8\xe2\x98\xa8\xe2\x98\xa8\xe2\x98\xa8\xe2\x98\xa8\xe2\x98\xa8\xe2\x98\xa8\xe2\x98\xa8' +xfmt697 format 47318163275440905901161706284262868400794927e0 '\xe9\xae\xbd=+69G' -> '+\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd\xe9\xae\xbd47318163275440905901161706284262868400794927' +xfmt698 format -98158503568700570997541145904264332850764652E0 '034.12' -> '-00000000000000009.81585035687E+43' +xfmt699 format 96102662987729380876666891734797619005575212e332 '\xe1\x8d\xbd<51,.46g' -> '9.6102662987729380876666891734797619005575212e+375\xe1\x8d\xbd' +xfmt700 format -33029320307921685296719058190627483677388031e220 '\xe1\xa4\x9c>+10,' -> '-3.3029320307921685296719058190627483677388031E+263' +xfmt701 format 16982351464824931550083971e0 '\xef\x85\x93<+,.59%' -> '+1,698,235,146,482,493,155,008,397,100.00000000000000000000000000000000000000000000000000000000000%' +xfmt702 format -53437294317887440736525680e0 '43' -> ' -53437294317887440736525680' +xfmt703 format 75137542036915477942171722e5 '\xe4\x9b\xbf>+18,.66G' -> '+7.5137542036915477942171722E+30' +xfmt704 format -72767754707832181492373430e301 '\xe7\xa0\xbb^+,.49g' -> '-7.2767754707832181492373430e+326' +xfmt705 format 734305572626410965795370534593423368995E0 '+1,F' -> '+734,305,572,626,410,965,795,370,534,593,423,368,995' +xfmt706 format -600608933233008131226714783417094981702e0 '.15n' -> '-6.00608933233008e+38' +xfmt707 format 156947566211668308155952803912783133783E177 '\xe0\xbf\xb0=-52,.45F' -> '156,947,566,211,668,308,155,952,803,912,783,133,783,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000' +xfmt708 format -372724465794252579659970506312478639515E161 '38.69E' -> '-3.727244657942525796599705063124786395150000000000000000000000000000000E+199' +xfmt709 format 48971946274189883604443051351856593692e0 '.84' -> '48971946274189883604443051351856593692' +xfmt710 format -93271194446443915717644685652365198256E0 '\xe7\xa2\x8f^+8,f' -> '-93,271,194,446,443,915,717,644,685,652,365,198,256' +xfmt711 format 33517928942341270064534407983364526718e268 ',' -> '3.3517928942341270064534407983364526718E+305' +xfmt712 format -28569369657155715850031167931201780286e361 ' ,' -> '-2.8569369657155715850031167931201780286E+398' +xfmt713 format 63402745830738856816E0 '+39E' -> ' +6.3402745830738856816E+19' +xfmt714 format -71305316640281030358e0 '-0.82' -> '-71305316640281030358' +xfmt715 format 41507281051412084346e156 '' -> '4.1507281051412084346E+175' +xfmt716 format -26390231325182627897e6 '+099,' -> '-00,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,002.6390231325182627897E+25' +xfmt717 format 745E0 '\xeb\xa1\x88^81.52' -> '\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88745\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88\xeb\xa1\x88' +xfmt718 format -510E0 '0' -> '-510' +xfmt719 format 850e91 '\xe4\xb5\x87=,%' -> '850,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt720 format -551e191 ' ,e' -> '-5.51e+193' +xfmt721 format 87244158633e0 '034' -> '0000000000000000000000087244158633' +xfmt722 format -90340545694E0 '\xea\xb1\x8a>.23F' -> '-90340545694.00000000000000000000000' +xfmt723 format 54360018274E368 '\xe5\x9e\xb9^,f' -> '5,436,001,827,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt724 format -96818461225E236 '\xe7\xad\x94=,.34e' -> '-9.6818461225000000000000000000000000e+246' +xfmt725 format 31835093459209193225175487674022E0 '\xea\x83\x8f> ,.65g' -> ' 31,835,093,459,209,193,225,175,487,674,022' +xfmt726 format -61766487792495922645564177745802e0 '\xeb\x81\xb2= 78,.47F' -> '-61,766,487,792,495,922,645,564,177,745,802.00000000000000000000000000000000000000000000000' +xfmt727 format 30206162594034480800493098218579e346 '\xe7\xa6\x84>-50,.43' -> '\xe7\xa6\x84\xe7\xa6\x84\xe7\xa6\x84\xe7\xa6\x84\xe7\xa6\x84\xe7\xa6\x84\xe7\xa6\x84\xe7\xa6\x84\xe7\xa6\x84\xe7\xa6\x84\xe7\xa6\x84\xe7\xa6\x843.0206162594034480800493098218579E+377' +xfmt728 format -72946532698577199453323022716179E45 '-091,%' -> '-7,294,653,269,857,719,945,332,302,271,617,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt729 format 379689038e0 '\xe5\x9c\x9c=32,.79e' -> '3.7968903800000000000000000000000000000000000000000000000000000000000000000000000e+8' +xfmt730 format -860810225e0 '\xea\xa8\xa1< 87.54G' -> '-860810225\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1\xea\xa8\xa1' +xfmt731 format 551572464e41 '18,.41f' -> '55,157,246,400,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000' +xfmt732 format -448839933E211 '\xe7\xad\x94<-66,.33f' -> '-4,488,399,330,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000' +xfmt733 format 123456789012345678.1234567890123 '' -> '123456789012345678.1234567890123' +xfmt734 format -123456.123456789 '\xee\xa9\xbc>+g' -> '-123456.123456789' +xfmt735 format 2541445784341253924304574007405954046e0 '-,' -> '2,541,445,784,341,253,924,304,574,007,405,954,046' +xfmt736 format -6538678994891071587046960211611369918E0 '\xe8\xa1\x97^96,.57f' -> '-6,538,678,994,891,071,587,046,960,211,611,369,918.000000000000000000000000000000000000000000000000000000000' +xfmt737 format 2207018158097549086315684102452980419E319 '5,.10' -> '2.207018158E+355' +xfmt738 format -7779427356999804259709947582567148791E73 '\xee\xa0\x90>52,' -> '\xee\xa0\x90\xee\xa0\x90\xee\xa0\x90\xee\xa0\x90\xee\xa0\x90\xee\xa0\x90\xee\xa0\x90\xee\xa0\x90-7.779427356999804259709947582567148791E+109' +xfmt739 format 6588175765156570e0 ' ' -> ' 6588175765156570' +xfmt740 format -6124153575057981e0 'n' -> '-6124153575057981' +xfmt741 format 5316325920931312e247 '\xeb\x91\x93^ 71,%' -> ' 5,316,325,920,931,312,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt742 format -9279665898652034e168 '' -> '-9.279665898652034E+183' +xfmt743 format 35e0 '.15F' -> '35.000000000000000' +xfmt744 format -91e0 '' -> '-91' +xfmt745 format 23e96 '' -> '2.3E+97' +xfmt746 format -66e144 '\xe1\xa7\xb2>,' -> '-6.6E+145' +xfmt747 format 8391586E0 '\xe7\x87\x80>-%' -> '839158600%' +xfmt748 format -8333408e0 '\xeb\x90\x89<-79' -> '-8333408\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89\xeb\x90\x89' +xfmt749 format 6379505E311 '46,.23' -> ' 6.379505E+317' +xfmt750 format -9134573E324 '\xe4\xac\x9c<,f' -> '-9,134,573,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt751 format 29206e0 '\xe6\x8e\xb8^-36,.19%' -> '\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb82,920,600.0000000000000000000%\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8' +xfmt752 format -14904e0 '0' -> '-14904' +xfmt753 format 23633E54 '-' -> '2.3633E+58' +xfmt754 format -30172E238 '\xe0\xb7\x92<,G' -> '-3.0172E+242' +xfmt755 format 99259339118010012478484800777e0 '10,' -> '99,259,339,118,010,012,478,484,800,777' +xfmt756 format -27170350240631796787687965495e0 '85' -> ' -27170350240631796787687965495' +xfmt757 format 99707341868849687020121536964e355 '\xec\x85\xa2^-31,.63' -> '9.9707341868849687020121536964E+383' +xfmt758 format -85154270789294283904763806714E197 '\xe6\xa7\xad>83' -> '\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad\xe6\xa7\xad-8.5154270789294283904763806714E+225' +xfmt759 format 169010726199639E0 '+21,' -> ' +169,010,726,199,639' +xfmt760 format -634387349508986e0 '\xe3\xbf\x8b=-41,.41E' -> '-6.34387349508986000000000000000000000000000E+14' +xfmt761 format 107069818252668E46 ' 0,.58' -> ' 1.07069818252668E+60' +xfmt762 format -248041551759111e374 '035,.48g' -> '-00,000,000,002.48041551759111e+388' +xfmt763 format 73641924349442217595E0 '\xe0\xae\x94< 23.99e' -> ' 7.364192434944221759500000000000000000000000000000000000000000000000000000000000000000000000000000000e+19' +xfmt764 format -80842943191725501337E0 '%' -> '-8084294319172550133700%' +xfmt765 format 52950393703460175695e184 '61,.65' -> ' 5.2950393703460175695E+203' +xfmt766 format -35123351585348037536E21 '068,.21g' -> '-000,000,000,000,000,000,000,000,000,000,003.5123351585348037536e+40' +xfmt767 format 256309304019e0 '\xe4\x8f\x93< 20,e' -> ' 2.56309304019e+11\xe4\x8f\x93\xe4\x8f\x93' +xfmt768 format -472763192267e0 '\xe9\xa5\x97=-50,.70e' -> '-4.7276319226700000000000000000000000000000000000000000000000000000000000e+11' +xfmt769 format 309690566886e299 ' .16' -> ' 3.09690566886E+310' +xfmt770 format -767707685155e72 '\xeb\xb9\x97>+6,.87g' -> '-7.67707685155e+83' +xfmt771 format 8258611292540204894485E0 '' -> '8258611292540204894485' +xfmt772 format -1231342225203500679265e0 ' 78g' -> ' -1231342225203500679265' +xfmt773 format 8438573865365730843931E150 '25' -> '8.438573865365730843931E+171' +xfmt774 format -5581739206401635426860e172 '0e' -> '-5.581739206401635426860e+193' +xfmt775 format 481552468290612722769341989184e0 '\xea\x8f\x86^-84,' -> '\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86481,552,468,290,612,722,769,341,989,184\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86\xea\x8f\x86' +xfmt776 format -687180726266462959964598923168e0 '\xe9\xbe\xba>+8.31F' -> '-687180726266462959964598923168.0000000000000000000000000000000' +xfmt777 format 775830536825471298233802538654E188 '0' -> '7.75830536825471298233802538654E+217' +xfmt778 format -875790167703547089318367244364e53 '\xeb\xa2\xad<+95,' -> '-8.75790167703547089318367244364E+82\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad\xeb\xa2\xad' +xfmt779 format 43655324E0 '\xed\x96\xa1> 41,.79' -> '\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1\xed\x96\xa1 43,655,324' +xfmt780 format -91549419E0 '0%' -> '-9154941900%' +xfmt781 format 58283017e280 ',.3f' -> '582,830,170,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000' +xfmt782 format -15735066e237 '044' -> '-000000000000000000000000000001.5735066E+244' +xfmt783 format 3044166665602906178944480E0 '58.8%' -> ' 304416666560290617894448000.00000000%' +xfmt784 format -9781374379846506826068457E0 '\xec\x91\x81>+93,.95%' -> '-978,137,437,984,650,682,606,845,700.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt785 format 1883129495496356942217127E285 '+,.52' -> '+1.883129495496356942217127E+309' +xfmt786 format -7054795104817513372635483E198 'n' -> '-7.054795104817513372635483e+222' +xfmt787 format 7766616793591E0 '\xe9\x88\x82> 90,.14' -> '\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82\xe9\x88\x82 7,766,616,793,591' +xfmt788 format -6266912865662e0 '\xec\xb0\xa7= 80,.65g' -> '-\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa7\xec\xb0\xa76,266,912,865,662' +xfmt789 format 7915217146315e281 '92.38g' -> ' 7.915217146315e+293' +xfmt790 format -2138555804574e3 '0' -> '-2.138555804574E+15' +xfmt791 format 421E0 '047,.42F' -> '0,421.000000000000000000000000000000000000000000' +xfmt792 format -838e0 '\xe8\x8d\x8d^8,' -> '\xe8\x8d\x8d\xe8\x8d\x8d-838\xe8\x8d\x8d\xe8\x8d\x8d' +xfmt793 format 520e208 '\xed\x91\x8c=' -> '5.20E+210' +xfmt794 format -665E119 ',' -> '-6.65E+121' +xfmt795 format 254831241942226813143097423205261300297E0 '\xee\xa7\x8c> E' -> ' 2.54831241942226813143097423205261300297E+38' +xfmt796 format -600287458461145421288072986178164770717E0 '\xe9\xb0\x88>-29,.28g' -> '-6.002874584611454212880729862e+38' +xfmt797 format 357207239245260842275115941336969505880e138 '\xe2\xa4\xb3^37,.4%' -> '35,720,723,924,526,084,227,511,594,133,696,950,588,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000%' +xfmt798 format -669216535092879697501804125463137499964e360 '\xe4\xb8\x91<-31,.40G' -> '-6.69216535092879697501804125463137499964E+398' +xfmt799 format 8E0 '\xe6\xa4\xb7<3' -> '8\xe6\xa4\xb7\xe6\xa4\xb7' +xfmt800 format -6e0 ' ,f' -> '-6' +xfmt801 format 4e28 '\xeb\xb3\x9f=+72.65n' -> '+\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f\xeb\xb3\x9f4e+28' +xfmt802 format -3E127 '\xe9\xbf\x8c= 73,.86e' -> '-3.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+127' +xfmt803 format 939071217574115936558E0 '' -> '939071217574115936558' +xfmt804 format -770658258497395303472e0 '\xe6\xb2\xaa= 49.26' -> '-\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa\xe6\xb2\xaa770658258497395303472' +xfmt805 format 586982313029748763765E363 '\xe2\xbd\xaf<-13,.73' -> '5.86982313029748763765E+383' +xfmt806 format -296432613419445352226E317 '.33' -> '-2.96432613419445352226E+337' +xfmt807 format 999640722611683700999348737068230628608928e0 ',.43' -> '999,640,722,611,683,700,999,348,737,068,230,628,608,928' +xfmt808 format -334968990148240261828445752720112898606570E0 '\xc4\xb4^+32,.68' -> '-334,968,990,148,240,261,828,445,752,720,112,898,606,570' +xfmt809 format 347712702530128933528077484927530938109403e32 '\xe9\xa8\xa3<-68,.48G' -> '3.47712702530128933528077484927530938109403E+73\xe9\xa8\xa3\xe9\xa8\xa3\xe9\xa8\xa3\xe9\xa8\xa3\xe9\xa8\xa3\xe9\xa8\xa3\xe9\xa8\xa3\xe9\xa8\xa3\xe9\xa8\xa3\xe9\xa8\xa3\xe9\xa8\xa3\xe9\xa8\xa3\xe9\xa8\xa3\xe9\xa8\xa3\xe9\xa8\xa3\xe9\xa8\xa3\xe9\xa8\xa3\xe9\xa8\xa3\xe9\xa8\xa3\xe9\xa8\xa3\xe9\xa8\xa3' +xfmt810 format -751073661923055765641753119804314427837833e29 '' -> '-7.51073661923055765641753119804314427837833E+70' +xfmt811 format 98007123209720167666920323675365625e0 '+090,.68' -> '+0,000,000,000,000,000,000,000,000,000,000,098,007,123,209,720,167,666,920,323,675,365,625' +xfmt812 format -54356299284231129904800547236953751E0 '-' -> '-54356299284231129904800547236953751' +xfmt813 format 79200075203993128896360329069003957e267 '' -> '7.9200075203993128896360329069003957E+301' +xfmt814 format -18256629284995145823451402410409249e344 '0f' -> '-1825662928499514582345140241040924900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt815 format 7971e0 '68.72F' -> '7971.000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt816 format -2965E0 '\xec\xb8\x95= ' -> '-2965' +xfmt817 format 5225E239 '94' -> ' 5.225E+242' +xfmt818 format -5459E270 '\xe4\xa1\xb1^ 95,.30E' -> '\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1-5.459000000000000000000000000000E+273\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1\xe4\xa1\xb1' +xfmt819 format 903546e0 '017' -> '00000000000903546' +xfmt820 format -250503e0 '-.24' -> '-250503' +xfmt821 format 526083E272 '' -> '5.26083E+277' +xfmt822 format -426018e250 '\xea\xb6\xbe=+g' -> '-4.26018e+255' +xfmt823 format 39827416746283820761251318e0 '0' -> '39827416746283820761251318' +xfmt824 format -55413776282631317703973784e0 ',.90' -> '-55,413,776,282,631,317,703,973,784' +xfmt825 format 44284343512945470018822566E156 ',.12' -> '4.42843435129E+181' +xfmt826 format -93288248323414837386949555e363 '\xec\x86\xa7=52,.19g' -> '-\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa7\xec\x86\xa79.328824832341483739e+388' +xfmt827 format 21738838837882852518092E0 '07,.70' -> '21,738,838,837,882,852,518,092' +xfmt828 format -91551818429008644610768e0 '0,' -> '-91,551,818,429,008,644,610,768' +xfmt829 format 50972002008394469100168e91 '\xe7\xa5\xac=,g' -> '5.0972002008394469100168e+113' +xfmt830 format -22900281634296682571624E7 '\xe8\x82\xa1<-,.83G' -> '-2.2900281634296682571624E+29' +xfmt831 format 457500720316802781973403176696718E0 '-0,.25e' -> '4.5750072031680278197340318e+32' +xfmt832 format -128632504741432916491068425909714E0 '' -> '-128632504741432916491068425909714' +xfmt833 format 561433055059383207400621343305464e339 'F' -> '561433055059383207400621343305464000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt834 format -780084192457912077741061055901352E336 '\xed\x99\xac> 30,.25' -> '-7.800841924579120777410611E+368' +xfmt835 format 553236642258915904317277738e0 '' -> '553236642258915904317277738' +xfmt836 format -536883718527102236319842514E0 '0,.89' -> '-536,883,718,527,102,236,319,842,514' +xfmt837 format 824179042840244467246932269E253 '+.39' -> '+8.24179042840244467246932269E+279' +xfmt838 format -287635570738186308282537514E221 '\xe8\x92\x97<-29,.30G' -> '-2.87635570738186308282537514E+247' +xfmt839 format 81373332020E0 ',' -> '81,373,332,020' +xfmt840 format -96251595628e0 '054,' -> '-0,000,000,000,000,000,000,000,000,000,096,251,595,628' +xfmt841 format 85723322349e335 '\xe6\x8d\xa6=+38,.19E' -> '+\xe6\x8d\xa6\xe6\x8d\xa6\xe6\x8d\xa6\xe6\x8d\xa6\xe6\x8d\xa6\xe6\x8d\xa6\xe6\x8d\xa6\xe6\x8d\xa6\xe6\x8d\xa6\xe6\x8d\xa6\xe6\x8d\xa68.5723322349000000000E+345' +xfmt842 format -56640322484e19 '\xec\x90\x98> 46,.64%' -> '-56,640,322,484,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000%' +xfmt843 format 811310894775587859182803060449545074e0 '\xe7\x97\xad<67F' -> '811310894775587859182803060449545074\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad\xe7\x97\xad' +xfmt844 format -852397065570930403126091641089133264E0 '021%' -> '-85239706557093040312609164108913326400%' +xfmt845 format 186231406141727727585652660405806761E383 '3' -> '1.86231406141727727585652660405806761E+418' +xfmt846 format -872685767810265725406672924212122786e269 '\xec\x87\xa0>-12,.40%' -> '-8,726,857,678,102,657,254,066,729,242,121,227,860,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000%' +xfmt847 format 6860565056897675974E0 '0.31E' -> '6.8605650568976759740000000000000E+18' +xfmt848 format -7814129904766567641E0 '\xe6\xb0\xbe=.26' -> '-7814129904766567641' +xfmt849 format 2805394401698975313e99 '\xeb\xb5\x85=36.50%' -> '280539440169897531300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000%' +xfmt850 format -1785595071442075921E196 '\xe3\xb9\xa7=+.28' -> '-1.785595071442075921E+214' +xfmt851 format 38772186350394543960558406134190e0 '\xeb\xa9\xba>' -> '38772186350394543960558406134190' +xfmt852 format -20161295025084338410158977592364E0 '\xef\xaa\xb9= 36,.56%' -> '-2,016,129,502,508,433,841,015,897,759,236,400.00000000000000000000000000000000000000000000000000000000%' +xfmt853 format 32148902740650788496879893126388E31 '79' -> ' 3.2148902740650788496879893126388E+62' +xfmt854 format -58407925471979940941304417429579E127 '\xe9\xba\xa1>+,.52g' -> '-5.8407925471979940941304417429579e+158' +xfmt855 format 1234567.123456789 '0,.44%' -> '123,456,712.34567890000000000000000000000000000000000000%' +xfmt856 format -12345678901234.1234567890123456789 '-063,.96g' -> '-00,000,000,000,000,000,012,345,678,901,234.1234567890123456789' +xfmt857 format 8003568015885943916060956815877E0 '.74' -> '8003568015885943916060956815877' +xfmt858 format -9931012907287822785780119116028E0 '\xe6\x8d\x8d< .94F' -> '-9931012907287822785780119116028.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt859 format 4816932930744401167491812272502E171 '0,.73f' -> '4,816,932,930,744,401,167,491,812,272,502,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt860 format -8937291645329596692340440345749E292 '' -> '-8.937291645329596692340440345749E+322' +xfmt861 format 12e0 '95' -> ' 12' +xfmt862 format -47e0 '' -> '-47' +xfmt863 format 11E208 '\xed\x81\x99<43' -> '1.1E+209\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99\xed\x81\x99' +xfmt864 format -10E12 '\xe3\xb4\x9a^+88,.36' -> '\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a-1.0E+13\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a\xe3\xb4\x9a' +xfmt865 format 88004433594e0 '\xe8\xa0\x9d>+29,' -> '\xe8\xa0\x9d\xe8\xa0\x9d\xe8\xa0\x9d\xe8\xa0\x9d\xe8\xa0\x9d\xe8\xa0\x9d\xe8\xa0\x9d\xe8\xa0\x9d\xe8\xa0\x9d\xe8\xa0\x9d\xe8\xa0\x9d\xe8\xa0\x9d\xe8\xa0\x9d\xe8\xa0\x9d+88,004,433,594' +xfmt866 format -87044059874e0 '057' -> '-00000000000000000000000000000000000000000000087044059874' +xfmt867 format 10660557528e53 '\xe8\xa7\x91<24,f' -> '1,066,055,752,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt868 format -33513554511E25 '+51,.6g' -> ' -3.35136e+35' +xfmt869 format 4945388159889589515082157652367770945E0 '\xe5\xa9\xa1<+14.63E' -> '+4.945388159889589515082157652367770945000000000000000000000000000E+36' +xfmt870 format -1525068303012327190002558402404230924E0 'G' -> '-1525068303012327190002558402404230924' +xfmt871 format 4671550126444163780869044138316074700e2 '\xe1\x9d\xb7> e' -> ' 4.671550126444163780869044138316074700e+38' +xfmt872 format -2225159010407606900698875646899100958E321 '.8' -> '-2.2251590E+357' +xfmt873 format 913840848692879169869016200E0 '' -> '913840848692879169869016200' +xfmt874 format -618260381212294932174665395e0 '-048,' -> '-000,000,000,618,260,381,212,294,932,174,665,395' +xfmt875 format 470409935266068299421654457E107 '\xe6\xbb\xaf>+93,.2e' -> '\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf\xe6\xbb\xaf+4.70e+133' +xfmt876 format -296772545026675431274754794e199 '.13' -> '-2.967725450267E+225' +xfmt877 format 544E0 '-0,' -> '544' +xfmt878 format -992e0 '\xe2\xbc\x84= ,.90G' -> '-992' +xfmt879 format 289e278 '' -> '2.89E+280' +xfmt880 format -511e1 '-074.59f' -> '-0000000005110.00000000000000000000000000000000000000000000000000000000000' +xfmt881 format 42341592244857209219011618298e0 '\xe7\xb4\xb6 '42341592244857209219011618298' +xfmt882 format -44172966770718674148103847278E0 '\xee\x9b\xb5>-.26' -> '-4.4172966770718674148103847E+28' +xfmt883 format 90984110379721840182452814813e116 '\xe8\x83\xa7<+49,.91' -> '+9.0984110379721840182452814813E+144\xe8\x83\xa7\xe8\x83\xa7\xe8\x83\xa7\xe8\x83\xa7\xe8\x83\xa7\xe8\x83\xa7\xe8\x83\xa7\xe8\x83\xa7\xe8\x83\xa7\xe8\x83\xa7\xe8\x83\xa7\xe8\x83\xa7\xe8\x83\xa7' +xfmt884 format -89094280780337223554598771232E319 '' -> '-8.9094280780337223554598771232E+347' +xfmt885 format 647522243334998481e0 '\xe4\xb3\x99=.33e' -> '6.475222433349984810000000000000000e+17' +xfmt886 format -691859125911822734e0 '+.83' -> '-691859125911822734' +xfmt887 format 271693916685893819E209 '' -> '2.71693916685893819E+226' +xfmt888 format -768454398008959098E370 '\xe4\x84\xb5>-19,.64e' -> '-7.6845439800895909800000000000000000000000000000000000000000000000e+387' +xfmt889 format 803591999091137543681682898796427151E0 '\xec\x81\x9e= ,g' -> ' 803,591,999,091,137,543,681,682,898,796,427,151' +xfmt890 format -681758837039991670030069355512854696e0 '\xec\x8a\x81 '-6.81758837039991670030069355512854696E+35' +xfmt891 format 591027868284666865401096850276818144e203 '\xe4\xae\x9a^ 76,%' -> ' 5,910,278,682,846,668,654,010,968,502,768,181,440,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt892 format -500694264028481509633401857805291574e40 '60,' -> ' -5.00694264028481509633401857805291574E+75' +xfmt893 format 660037616452662441064044880310456949551907E0 '\xeb\x86\x8d= n' -> ' 660037616452662441064044880310456949551907' +xfmt894 format -589087267814035443628330108377795095128854E0 '+,' -> '-589,087,267,814,035,443,628,330,108,377,795,095,128,854' +xfmt895 format 332431899642960782752350237518531655631253E131 '\xee\xb7\x82=95.2' -> '\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x82\xee\xb7\x823.3E+172' +xfmt896 format -121583546809165317618251567872963507393608E71 '+0' -> '-1.21583546809165317618251567872963507393608E+112' +xfmt897 format 9427539192894166749120912753478262e0 '' -> '9427539192894166749120912753478262' +xfmt898 format -7730322246247867459584370156759821E0 ' 0.13n' -> '-7.730322246248e+33' +xfmt899 format 9501834318544191086761998429738117E232 ' 0' -> ' 9.501834318544191086761998429738117E+265' +xfmt900 format -6120499597584302124232962287467837E331 '\xec\x8b\x8a= 81,.58' -> '-\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a\xec\x8b\x8a6.120499597584302124232962287467837E+364' +xfmt901 format 565926e0 '\xe9\x97\xb6>-63,.10G' -> '\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6\xe9\x97\xb6565,926' +xfmt902 format -888967E0 ' 48n' -> ' -888967' +xfmt903 format 970540e180 '`=F' -> '970540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt904 format -142219E71 '\xec\x90\xa4> 36,.6E' -> '\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4\xec\x90\xa4-1.422190E+76' +xfmt905 format 48588985489582282E0 '\xed\x99\x9d=.22' -> '48588985489582282' +xfmt906 format -72292438320847902e0 '\xe6\x8d\xb7=-46,.73f' -> '-72,292,438,320,847,902.0000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt907 format 73987561520500005e172 '\xee\x9d\x9e=.48f' -> '739875615205000050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000' +xfmt908 format -55131278824792844e237 '\xe7\xad\xa4>26,%' -> '-5,513,127,882,479,284,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt909 format 73248747537033985848646383778579250505543e0 '-08F' -> '73248747537033985848646383778579250505543' +xfmt910 format -57623503242372136246280995455177606775338E0 '\xe9\xa7\x87>' -> '-57623503242372136246280995455177606775338' +xfmt911 format 29661382679076067693939964589910823479700E337 '\xeb\xac\x81< 81,.61' -> ' 2.9661382679076067693939964589910823479700E+377\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81\xeb\xac\x81' +xfmt912 format -91380575987682115844603253383479334426134e373 '\xeb\xb0\x9f<20,.51' -> '-9.1380575987682115844603253383479334426134E+413' +xfmt913 format 365405525933264700801304836561E0 '\xe5\x92\xb4<+87,.85' -> '+365,405,525,933,264,700,801,304,836,561\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4\xe5\x92\xb4' +xfmt914 format -764211738609213487826466129229E0 '\xe5\x88\xa3<-19,g' -> '-764,211,738,609,213,487,826,466,129,229' +xfmt915 format 181127852118106231946372955636e204 '0n' -> '1.81127852118106231946372955636e+233' +xfmt916 format -726721297494595954795201683837E200 '\xef\xaf\x9e=78,.33F' -> '-72,672,129,749,459,595,479,520,168,383,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000' +xfmt917 format 155484441575252113740428090638796E0 '\xe5\xa9\xbb<' -> '155484441575252113740428090638796' +xfmt918 format -377938376650493577690169631253833e0 ',f' -> '-377,938,376,650,493,577,690,169,631,253,833' +xfmt919 format 336234667712080702973839538549321e339 '\xec\x82\x83^62' -> '\xec\x82\x83\xec\x82\x83\xec\x82\x83\xec\x82\x83\xec\x82\x83\xec\x82\x83\xec\x82\x83\xec\x82\x83\xec\x82\x83\xec\x82\x83\xec\x82\x833.36234667712080702973839538549321E+371\xec\x82\x83\xec\x82\x83\xec\x82\x83\xec\x82\x83\xec\x82\x83\xec\x82\x83\xec\x82\x83\xec\x82\x83\xec\x82\x83\xec\x82\x83\xec\x82\x83\xec\x82\x83' +xfmt920 format -114347498245373116374755307155579E377 '\xe4\x8b\xad>-40,.9E' -> '\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad\xe4\x8b\xad-1.143474982E+409' +xfmt921 format 5453542565829989927650948368E0 '0' -> '5453542565829989927650948368' +xfmt922 format -5462337139116304219996921846e0 '0,' -> '-5,462,337,139,116,304,219,996,921,846' +xfmt923 format 8803211905766765486785682474E211 '+17.14' -> '+8.8032119057668E+238' +xfmt924 format -6650359431126846829736077241e204 '\xed\x8e\xbb^,' -> '-6.650359431126846829736077241E+231' +xfmt925 format 370040184e0 '066.83' -> '000000000000000000000000000000000000000000000000000000000370040184' +xfmt926 format -426215383e0 ' 046.64f' -> '-426215383.0000000000000000000000000000000000000000000000000000000000000000' +xfmt927 format 678261738e37 '\xea\xb7\x8d^-15,' -> '6.78261738E+45\xea\xb7\x8d' +xfmt928 format -137758900E3 '\xe1\xbb\x8e< ,f' -> '-137,758,900,000' +xfmt929 format 775013544051127458546721E0 '+011,.78F' -> '+775,013,544,051,127,458,546,721.000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt930 format -652172166530177318843555e0 '\xec\xa2\xad= 7,.54f' -> '-652,172,166,530,177,318,843,555.000000000000000000000000000000000000000000000000000000' +xfmt931 format 214770997219598198998235e176 '\xef\xb4\xb1> 13,.43F' -> ' 21,477,099,721,959,819,899,823,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000' +xfmt932 format -633549647242366674488950E6 '\xe7\xaa\x99>66,.57E' -> '\xe7\xaa\x99\xe7\xaa\x99-6.335496472423666744889500000000000000000000000000000000000E+29' +xfmt933 format 24714440586226921245116341374311e0 '\xee\x8b\x99=+65,.39f' -> '+24,714,440,586,226,921,245,116,341,374,311.000000000000000000000000000000000000000' +xfmt934 format -71395025062276873568976871676479e0 ',' -> '-71,395,025,062,276,873,568,976,871,676,479' +xfmt935 format 87725415187475149769860773330137e46 '+06,.59E' -> '+8.77254151874751497698607733301370000000000000000000000000000E+77' +xfmt936 format -12702324723033723994060241631882e262 '0.67n' -> '-1.2702324723033723994060241631882e+293' +xfmt937 format 8089833438e0 '.67' -> '8089833438' +xfmt938 format -1822585887e0 '.72' -> '-1822585887' +xfmt939 format 8338936924E323 '+,G' -> '+8.338936924E+332' +xfmt940 format -7592125269e247 '' -> '-7.592125269E+256' +xfmt941 format 472138162561223550093397735995441882825e0 '' -> '472138162561223550093397735995441882825' +xfmt942 format -287235041177787864840787916447315045050e0 '.11' -> '-2.8723504118E+38' +xfmt943 format 754853972718501896115745754468078039977E349 '\xe6\xa2\x83<43' -> '7.54853972718501896115745754468078039977E+387' +xfmt944 format -105701565223591983505322138490023470090E88 '\xec\x87\x80>77,.98f' -> '-1,057,015,652,235,919,835,053,221,384,900,234,700,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt945 format 5e0 '-.18' -> '5' +xfmt946 format -9e0 '\xe1\x8c\xa8<-87.35' -> '-9\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8\xe1\x8c\xa8' +xfmt947 format 7e352 '' -> '7E+352' +xfmt948 format -1e195 '020.56f' -> '-1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000' +xfmt949 format 9063691569207974542039933839012998397552E0 '.37' -> '9.063691569207974542039933839012998398E+39' +xfmt950 format -2916273344985711213675687493628007152984E0 '\xe1\x8f\x98> 3,.6F' -> '-2,916,273,344,985,711,213,675,687,493,628,007,152,984.000000' +xfmt951 format 9382108604494335606459317158252369359882E104 'e' -> '9.382108604494335606459317158252369359882e+143' +xfmt952 format -5732603719160516814223880284759529683225E291 '-85' -> ' -5.732603719160516814223880284759529683225E+330' +xfmt953 format 4504290926644e0 '26,' -> ' 4,504,290,926,644' +xfmt954 format -3541802232122e0 '\xe4\xbb\x91^-10.56e' -> '-3.54180223212200000000000000000000000000000000000000000000e+12' +xfmt955 format 8169702378486e240 '' -> '8.169702378486E+252' +xfmt956 format -5376991224366e156 ',.68' -> '-5.376991224366E+168' +xfmt957 format 30012232157595573153778522761246524E0 '+0,' -> '+30,012,232,157,595,573,153,778,522,761,246,524' +xfmt958 format -20985362949514512063257593308529631e0 '+90,F' -> ' -20,985,362,949,514,512,063,257,593,308,529,631' +xfmt959 format 57854559459178795926296716415654262e116 '\xe3\x8b\x85<+,.11' -> '+5.7854559459E+150' +xfmt960 format -74155544555075528240509267803824761E194 '\xec\xa0\xb6=-32n' -> '-7.4155544555075528240509267803824761e+228' +xfmt961 format 89602628803870331711439e0 '\xe3\x85\xa0^-,' -> '89,602,628,803,870,331,711,439' +xfmt962 format -96382852664888091008742E0 '\xed\x85\x82^+29.11' -> '\xed\x85\x82\xed\x85\x82\xed\x85\x82\xed\x85\x82\xed\x85\x82\xed\x85\x82-9.6382852665E+22\xed\x85\x82\xed\x85\x82\xed\x85\x82\xed\x85\x82\xed\x85\x82\xed\x85\x82' +xfmt963 format 74553215036018902048027E157 '+85g' -> ' +7.4553215036018902048027e+179' +xfmt964 format -52704087758886165935162E286 ' ,g' -> '-5.2704087758886165935162e+308' +xfmt965 format 15631296325794286697830819705864203419125808e0 '-.5G' -> '1.5631E+43' +xfmt966 format -17288180350478232060903769844539063514532443E0 '\xe6\x8b\x81< ,.58%' -> '-1,728,818,035,047,823,206,090,376,984,453,906,351,453,244,300.0000000000000000000000000000000000000000000000000000000000%' +xfmt967 format 62432682413309048875431701432277976536978960E199 '\xe8\xbd\xa6>,' -> '6.2432682413309048875431701432277976536978960E+242' +xfmt968 format -46671691671557465024396869032726634209139632E101 '\xed\x84\x82<-15,.17F' -> '-4,667,169,167,155,746,502,439,686,903,272,663,420,913,963,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000' +xfmt969 format 7440857246485772349393723214043373294649857E0 '-' -> '7440857246485772349393723214043373294649857' +xfmt970 format -8880441560270866575727676747123874807590722E0 '\xef\x85\x84=.91' -> '-8880441560270866575727676747123874807590722' +xfmt971 format 7924519834003576517040690871792096632832265e237 '0,.76' -> '7.924519834003576517040690871792096632832265E+279' +xfmt972 format -9183921008318446003013054517154150800927658e9 '\xee\xbb\xbd>+62.33e' -> '\xee\xbb\xbd\xee\xbb\xbd\xee\xbb\xbd\xee\xbb\xbd\xee\xbb\xbd\xee\xbb\xbd\xee\xbb\xbd\xee\xbb\xbd\xee\xbb\xbd\xee\xbb\xbd\xee\xbb\xbd\xee\xbb\xbd\xee\xbb\xbd\xee\xbb\xbd\xee\xbb\xbd\xee\xbb\xbd\xee\xbb\xbd\xee\xbb\xbd\xee\xbb\xbd\xee\xbb\xbd\xee\xbb\xbd\xee\xbb\xbd-9.183921008318446003013054517154151e+51' +xfmt973 format 0e0 '\xec\xa4\x86=-88,.60F' -> '\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x86\xec\xa4\x860.000000000000000000000000000000000000000000000000000000000000' +xfmt974 format 0e0 '\xe4\x90\xa7<36,.45f' -> '0.000000000000000000000000000000000000000000000' +xfmt975 format 0E200 '\xe9\xba\xbb=n' -> '0e+200' +xfmt976 format 0e328 '076.73' -> '00000000000000000000000000000000000000000000000000000000000000000000000E+328' +xfmt977 format 123456.1234567 ' 02,' -> ' 123,456.1234567' +xfmt978 format -1234.1234567 '-,.15F' -> '-1,234.123456700000000' +xfmt979 format 9115956676987e0 '%' -> '911595667698700%' +xfmt980 format -5761528873794e0 '\xe0\xa4\xa3>7.81f' -> '-5761528873794.000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt981 format 3436586769975e46 '\xef\x93\x9d>-97,.65G' -> '\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d\xef\x93\x9d3.436586769975E+58' +xfmt982 format -5715368356699E117 ' F' -> '-5715368356699000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt983 format 312423750486965971843114721750620351304e0 '\xe6\x9d\x87^-23.46f' -> '312423750486965971843114721750620351304.0000000000000000000000000000000000000000000000' +xfmt984 format -503781679946998026866485022390994331924e0 '\xe3\x9f\xaf^ ,.88E' -> '-5.0378167994699802686648502239099433192400000000000000000000000000000000000000000000000000E+38' +xfmt985 format 847742250427510561941100187870567887277E82 '\xe1\xb5\x92^+35,.14%' -> '+847,742,250,427,510,561,941,100,187,870,567,887,277,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000%' +xfmt986 format -595294921218092801633878521935967934200E336 'n' -> '-5.95294921218092801633878521935967934200e+374' +xfmt987 format 97210592874181103E0 '' -> '97210592874181103' +xfmt988 format -46571193330903630e0 '.65' -> '-46571193330903630' +xfmt989 format 50882693256447698e124 '\xe5\xa2\xbb< ,.43e' -> ' 5.0882693256447698000000000000000000000000000e+140' +xfmt990 format -43940336707964518e140 '-0,.79e' -> '-4.3940336707964518000000000000000000000000000000000000000000000000000000000000000e+156' +xfmt991 format 848282107778905681E0 '0,' -> '848,282,107,778,905,681' +xfmt992 format -284374936958179981e0 '0' -> '-284374936958179981' +xfmt993 format 373735768812664269E108 '+026G' -> '+03.73735768812664269E+125' +xfmt994 format -236049301200614470E235 '01,.71' -> '-2.36049301200614470E+252' +xfmt995 format 4110603034227238033152606115430527e0 '\xef\x88\x8d< 16,.12F' -> ' 4,110,603,034,227,238,033,152,606,115,430,527.000000000000' +xfmt996 format -9897500733487964842651351946281428E0 '\xec\x9f\xb9^-55,.79E' -> '-9.8975007334879648426513519462814280000000000000000000000000000000000000000000000E+33' +xfmt997 format 6771597810339868408752598049487320E84 '+0,.93' -> '+6.771597810339868408752598049487320E+117' +xfmt998 format -8997945487933613684979216822138508E273 '0,' -> '-8.997945487933613684979216822138508E+306' +xfmt999 format 131598344226988906110408001771986795260796e0 '\xe0\xac\xbd=-,.40' -> '1.315983442269889061104080017719867952608E+41' +xfmt1000 format -120731067989092243854912719597206734999485e0 '27,.74g' -> '-120,731,067,989,092,243,854,912,719,597,206,734,999,485' +xfmt1001 format 884529308082717075160388393711732942932878E197 '10,' -> '8.84529308082717075160388393711732942932878E+238' +xfmt1002 format -526353485719416493639667259178941022360831E137 '-,.14' -> '-5.2635348571942E+178' +xfmt1003 format 340168447755871374680740172195629190e0 '\xe6\xb9\xa4> 33,.32' -> ' 3.4016844775587137468074017219563E+35' +xfmt1004 format -370176719041473606059020573890563303e0 '94,' -> ' -370,176,719,041,473,606,059,020,573,890,563,303' +xfmt1005 format 790837166060168780397277630240610282E222 '\xec\xaf\xbc^ 98,.66e' -> '\xec\xaf\xbc\xec\xaf\xbc\xec\xaf\xbc\xec\xaf\xbc\xec\xaf\xbc\xec\xaf\xbc\xec\xaf\xbc\xec\xaf\xbc\xec\xaf\xbc\xec\xaf\xbc\xec\xaf\xbc\xec\xaf\xbc 7.908371660601687803972776302406102820000000000000000000000000000000e+257\xec\xaf\xbc\xec\xaf\xbc\xec\xaf\xbc\xec\xaf\xbc\xec\xaf\xbc\xec\xaf\xbc\xec\xaf\xbc\xec\xaf\xbc\xec\xaf\xbc\xec\xaf\xbc\xec\xaf\xbc\xec\xaf\xbc' +xfmt1006 format -805584095258427089418102662631499463E265 '-89,' -> ' -8.05584095258427089418102662631499463E+300' +xfmt1007 format 31426204594497e0 '088.41e' -> '000000000000000000000000000000000000000003.14262045944970000000000000000000000000000e+13' +xfmt1008 format -52101290481733e0 '\xee\xa4\xa6^44,.50e' -> '-5.21012904817330000000000000000000000000000000000000e+13' +xfmt1009 format 25771518755137e253 '\xeb\x9d\x97>-62,.4%' -> '25,771,518,755,137,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000%' +xfmt1010 format -66757014392150e77 '+60' -> ' -6.6757014392150E+90' +xfmt1011 format 591173024553499963213082e0 '' -> '591173024553499963213082' +xfmt1012 format -765227123562845565194930e0 '.4%' -> '-76522712356284556519493000.0000%' +xfmt1013 format 946358384642112953567902E267 ',.50e' -> '9.46358384642112953567902000000000000000000000000000e+290' +xfmt1014 format -833050157584357896131004E275 '\xe4\x98\x82= 99,.92' -> '-\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x82\xe4\x98\x828.33050157584357896131004E+298' +xfmt1015 format 43123318839552783360E0 ',f' -> '43,123,318,839,552,783,360' +xfmt1016 format -54049383882724182726E0 '' -> '-54049383882724182726' +xfmt1017 format 28974241007356063633e246 '' -> '2.8974241007356063633E+265' +xfmt1018 format -89152768866469106903e174 '.89' -> '-8.9152768866469106903E+193' +xfmt1019 format 979361834373753708525627854593e0 '\xe3\xbd\xb8<25,.98G' -> '979,361,834,373,753,708,525,627,854,593' +xfmt1020 format -117344054364005800165103390351e0 '+' -> '-117344054364005800165103390351' +xfmt1021 format 253581455227360403896012168233E147 '\xe8\x90\xb5=17,.12G' -> '2.53581455227E+176' +xfmt1022 format -626830260248154600153639114247e27 '0,' -> '-6.26830260248154600153639114247E+56' +xfmt1023 format 11577609487467917661764088827973075871e0 '' -> '11577609487467917661764088827973075871' +xfmt1024 format -46791487715974043259382187571767379121e0 '021,.86' -> '-46,791,487,715,974,043,259,382,187,571,767,379,121' +xfmt1025 format 92736393585819066639810237608132643575e177 '\xeb\xa8\xa0=+14.38f' -> '+92736393585819066639810237608132643575000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000' +xfmt1026 format -35093148875044551560880091400460075955e336 '' -> '-3.5093148875044551560880091400460075955E+373' +xfmt1027 format 429789631341375940246400081356801e0 '\xe0\xb7\x83^-73,.80F' -> '429,789,631,341,375,940,246,400,081,356,801.00000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1028 format -170148269100813203679293932851034e0 '.35' -> '-170148269100813203679293932851034' +xfmt1029 format 533710432905733539419673511006350E230 '\xeb\x9a\xb6^+60.92F' -> '+53371043290573353941967351100635000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1030 format -986551174186243179909957804996921e77 '\xef\x9e\xb6> 51,.61e' -> '-9.8655117418624317990995780499692100000000000000000000000000000e+109' +xfmt1031 format 91244135813e0 ',' -> '91,244,135,813' +xfmt1032 format -72249650270e0 '\xe2\xa7\xb8<-89,.62g' -> '-72,249,650,270\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8\xe2\xa7\xb8' +xfmt1033 format 16596629528e193 '\xeb\xa0\x95<+65,.53e' -> '+1.65966295280000000000000000000000000000000000000000000e+203\xeb\xa0\x95\xeb\xa0\x95\xeb\xa0\x95\xeb\xa0\x95' +xfmt1034 format -43440615486E326 '+042,.73' -> '-0,000,000,000,000,000,004.3440615486E+336' +xfmt1035 format 596e0 'F' -> '596' +xfmt1036 format -772E0 '\xe8\xbc\x9d< ,.80' -> '-772' +xfmt1037 format 122e16 '01,' -> '1.22E+18' +xfmt1038 format -635E365 '.83g' -> '-6.35e+367' +xfmt1039 format 894645E0 '\xeb\xaf\x97=+,.79g' -> '+894,645' +xfmt1040 format -876937e0 ' 073,.94' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,876,937' +xfmt1041 format 183606e133 '\xed\x84\xae>+39,.46F' -> '+1,836,060,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000' +xfmt1042 format -581623e27 '' -> '-5.81623E+32' +xfmt1043 format 48546287883264240703714053322361845591855116E0 '' -> '48546287883264240703714053322361845591855116' +xfmt1044 format -97649335464218241047937046553845288801508679e0 '\xec\x87\x9b< 38,%' -> '-9,764,933,546,421,824,104,793,704,655,384,528,880,150,867,900%' +xfmt1045 format 66298164638212259996011516234088207294410098E26 '\xe8\xb8\x90<+89,' -> '+6.6298164638212259996011516234088207294410098E+69\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90\xe8\xb8\x90' +xfmt1046 format -89691499892397272658543364702320569401574774E278 '' -> '-8.9691499892397272658543364702320569401574774E+321' +xfmt1047 format 4068524974873806462091E0 '-' -> '4068524974873806462091' +xfmt1048 format -2011339424992917082131e0 '\xe5\xaa\x9b^ 5,.75' -> '-2,011,339,424,992,917,082,131' +xfmt1049 format 2192548307137005114459e333 '\xef\xb9\xb6>-21.88%' -> '219254830713700511445900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1050 format -1304921682378312273771E292 '\xed\x83\xb4<-66,.34f' -> '-13,049,216,823,783,122,737,710,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000' +xfmt1051 format 7267211332543507E0 '+0' -> '+7267211332543507' +xfmt1052 format -2217160313685154E0 '0' -> '-2217160313685154' +xfmt1053 format 7425369056278683e45 '\xef\xb1\x88=n' -> '7.425369056278683e+60' +xfmt1054 format -6335932142399663e183 '\xe5\x84\xbe^n' -> '-6.335932142399663e+198' +xfmt1055 format 51533698023850987057961e0 '.63' -> '51533698023850987057961' +xfmt1056 format -65405884917774031313241e0 '018,.1F' -> '-65,405,884,917,774,031,313,241.0' +xfmt1057 format 86910280332022171363032e146 '+84,G' -> ' +8.6910280332022171363032E+168' +xfmt1058 format -80742916559907669646447e242 '043.80' -> '-00000000000008.0742916559907669646447E+264' +xfmt1059 format 0e0 '-5,%' -> ' 0%' +xfmt1060 format 0E0 '\xee\xa2\x91>' -> '0' +xfmt1061 format 0e27 '\xee\x98\x86=68.64' -> '\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x86\xee\x98\x860E+27' +xfmt1062 format 0e290 '' -> '0E+290' +xfmt1063 format 787224586729298781900E0 '91,.65E' -> ' 7.87224586729298781900000000000000000000000000000000000000000000000E+20' +xfmt1064 format -221273936396314221683e0 '\xe1\x90\x8f^-47,.48' -> '\xe1\x90\x8f\xe1\x90\x8f\xe1\x90\x8f\xe1\x90\x8f\xe1\x90\x8f\xe1\x90\x8f\xe1\x90\x8f\xe1\x90\x8f\xe1\x90\x8f-221,273,936,396,314,221,683\xe1\x90\x8f\xe1\x90\x8f\xe1\x90\x8f\xe1\x90\x8f\xe1\x90\x8f\xe1\x90\x8f\xe1\x90\x8f\xe1\x90\x8f\xe1\x90\x8f\xe1\x90\x8f' +xfmt1065 format 288159818000026852663e359 '\xeb\xb1\xaa> 8,.51G' -> ' 2.88159818000026852663E+379' +xfmt1066 format -372555452336541931498e337 '+0.41' -> '-3.72555452336541931498E+357' +xfmt1067 format 4967531823576932635405793e0 '' -> '4967531823576932635405793' +xfmt1068 format -1143242091934452027061311e0 '' -> '-1143242091934452027061311' +xfmt1069 format 9499336271268302189450471e363 '\xe9\xb3\x89< 22,.52' -> ' 9.499336271268302189450471E+387' +xfmt1070 format -8548236600159028217852013E324 '\xeb\xae\xab=+82,.50F' -> '-8,548,236,600,159,028,217,852,013,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000' +xfmt1071 format 49445029204115294391958356765755E0 '' -> '49445029204115294391958356765755' +xfmt1072 format -74884079236529290276115346548803e0 '' -> '-74884079236529290276115346548803' +xfmt1073 format 35875165048506410101195411344436e299 '\xef\xa9\x82<-,.30%' -> '358,751,650,485,064,101,011,954,113,444,360,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000%' +xfmt1074 format -75675938439044921878287546569552e50 '' -> '-7.5675938439044921878287546569552E+81' +xfmt1075 format 7525437141227613675463356180743941559525205e0 '' -> '7525437141227613675463356180743941559525205' +xfmt1076 format -3904141842701675173027487585299320871346189e0 '0,E' -> '-3.904141842701675173027487585299320871346189E+42' +xfmt1077 format 9540901633367770015234895865645016829231759e66 '\xef\x9c\xac> 22,' -> ' 9.540901633367770015234895865645016829231759E+108' +xfmt1078 format -4407855953498756423382836071693138005471986e300 ',.67' -> '-4.407855953498756423382836071693138005471986E+342' +xfmt1079 format 472274208575433865214844171E0 '11' -> '472274208575433865214844171' +xfmt1080 format -548518005130250459595039066E0 '-,' -> '-548,518,005,130,250,459,595,039,066' +xfmt1081 format 873011377046352474232683058e381 '' -> '8.73011377046352474232683058E+407' +xfmt1082 format -531244719444703999254913047e21 '' -> '-5.31244719444703999254913047E+47' +xfmt1083 format 9608144207e0 '+026.49' -> '+0000000000000009608144207' +xfmt1084 format -5194646698e0 '\xe6\x9e\x9f>-35G' -> '\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f\xe6\x9e\x9f-5194646698' +xfmt1085 format 8250444137E81 '' -> '8.250444137E+90' +xfmt1086 format -7631336698e88 '\xee\x8f\xb6=80,.9' -> '-\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb6\xee\x8f\xb67.63133670E+97' +xfmt1087 format 89738201672481652390130551171256146E0 '\xec\xbf\x92^+56,.9g' -> '\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92+8.97382017e+34\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92\xec\xbf\x92' +xfmt1088 format -51823380420796407524207184458583337E0 '\xee\x9d\xae^ 17,.84E' -> '-5.182338042079640752420718445858333700000000000000000000000000000000000000000000000000E+34' +xfmt1089 format 77087683787674665815794349322140795e248 '0,' -> '7.7087683787674665815794349322140795E+282' +xfmt1090 format -54066607767804802588849691119522393E19 ' ' -> '-5.4066607767804802588849691119522393E+53' +xfmt1091 format 23839213492155006471488003459543494277917e0 '\xe1\xac\xb5< ,' -> ' 23,839,213,492,155,006,471,488,003,459,543,494,277,917' +xfmt1092 format -76812393451889876468238338282723545297901e0 '\xee\x84\x9b^-36,E' -> '-7.6812393451889876468238338282723545297901E+40' +xfmt1093 format 84973078470705756638178217848472708331749e10 '0' -> '8.4973078470705756638178217848472708331749E+50' +xfmt1094 format -27766986552099835423307170194342507586283e339 '\xeb\x9a\xb9< 95,.83%' -> '-2,776,698,655,209,983,542,330,717,019,434,250,758,628,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1095 format 3E0 '' -> '3' +xfmt1096 format -2e0 '\xe5\xa0\x80=-20,.33g' -> '-\xe5\xa0\x80\xe5\xa0\x80\xe5\xa0\x80\xe5\xa0\x80\xe5\xa0\x80\xe5\xa0\x80\xe5\xa0\x80\xe5\xa0\x80\xe5\xa0\x80\xe5\xa0\x80\xe5\xa0\x80\xe5\xa0\x80\xe5\xa0\x80\xe5\xa0\x80\xe5\xa0\x80\xe5\xa0\x80\xe5\xa0\x80\xe5\xa0\x802' +xfmt1097 format 3e247 '0.9' -> '3E+247' +xfmt1098 format -9E358 '' -> '-9E+358' +xfmt1099 format 12345678901.1234567 '48.9' -> ' 1.23456789E+10' +xfmt1100 format -1234567.1234567890 '-0' -> '-1234567.1234567890' +xfmt1101 format 138789207722395812982911749e0 ' ,.67' -> ' 138,789,207,722,395,812,982,911,749' +xfmt1102 format -700061464871563097891627363e0 ',' -> '-700,061,464,871,563,097,891,627,363' +xfmt1103 format 845608111686996678534295268e285 '\xee\x9f\xb9> 51,.55g' -> '\xee\x9f\xb9\xee\x9f\xb9\xee\x9f\xb9\xee\x9f\xb9\xee\x9f\xb9\xee\x9f\xb9\xee\x9f\xb9\xee\x9f\xb9\xee\x9f\xb9\xee\x9f\xb9\xee\x9f\xb9\xee\x9f\xb9\xee\x9f\xb9\xee\x9f\xb9\xee\x9f\xb9\xee\x9f\xb9\xee\x9f\xb9 8.45608111686996678534295268e+311' +xfmt1104 format -267971694173581763900198004e112 '\xe7\xae\xb1=g' -> '-2.67971694173581763900198004e+138' +xfmt1105 format 684998707773175749298858E0 '+0,' -> '+684,998,707,773,175,749,298,858' +xfmt1106 format -364244116383834431984852e0 '60' -> ' -364244116383834431984852' +xfmt1107 format 819314729690740159193226E83 ' 065,.82%' -> ' 8,193,147,296,907,401,591,932,260,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1108 format -111200194830925189009263e273 '\xee\x8d\x82< 26,.7G' -> '-1.112002E+296\xee\x8d\x82\xee\x8d\x82\xee\x8d\x82\xee\x8d\x82\xee\x8d\x82\xee\x8d\x82\xee\x8d\x82\xee\x8d\x82\xee\x8d\x82\xee\x8d\x82\xee\x8d\x82\xee\x8d\x82' +xfmt1109 format 4964586859709218616597379082755e0 '' -> '4964586859709218616597379082755' +xfmt1110 format -4949855621930341121177051200442E0 '+56.50%' -> '-494985562193034112117705120044200.00000000000000000000000000000000000000000000000000%' +xfmt1111 format 3688759347912026457139333342639E177 '\xe7\xa9\x93^2,' -> '3.688759347912026457139333342639E+207' +xfmt1112 format -8901455093289052232028288656369e359 '\xe9\x9d\xb2>+' -> '-8.901455093289052232028288656369E+389' +xfmt1113 format 0e0 ' 019,.70' -> ' 00,000,000,000,000' +xfmt1114 format 0E0 '+94.43' -> ' +0' +xfmt1115 format 0e381 '-073E' -> '00000000000000000000000000000000000000000000000000000000000000000000E+381' +xfmt1116 format 0e158 '\xe7\xb1\xb9>+9,.58e' -> '+0.0000000000000000000000000000000000000000000000000000000000e+216' +xfmt1117 format 3151292070021599061757159094e0 '\xd4\x96<-43,.81E' -> '3.151292070021599061757159094000000000000000000000000000000000000000000000000000000E+27' +xfmt1118 format -7877413822195075209134095915E0 '\xe2\x97\xb3>,.59%' -> '-787,741,382,219,507,520,913,409,591,500.00000000000000000000000000000000000000000000000000000000000%' +xfmt1119 format 5297036630109992053998416205E98 '\xe9\x8c\xad>-' -> '5.297036630109992053998416205E+125' +xfmt1120 format -5868131594892723432416161014e319 ' ' -> '-5.868131594892723432416161014E+346' +xfmt1121 format 374346365834274700130933341039140e0 '\xee\x85\xa4<+3,.90e' -> '+3.743463658342747001309333410391400000000000000000000000000000000000000000000000000000000000e+32' +xfmt1122 format -139019972122627974416748041541651E0 '\xe6\xae\x98^ 26,.80f' -> '-139,019,972,122,627,974,416,748,041,541,651.00000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1123 format 602158298080177566847051088581532e171 ' 89.71' -> ' 6.02158298080177566847051088581532E+203' +xfmt1124 format -329418875797567591397673166450419E91 '\xe1\xb1\xa2=,.85E' -> '-3.2941887579756759139767316645041900000000000000000000000000000000000000000000000000000E+123' +xfmt1125 format 36504428185342439928580E0 ' 061,.71' -> ' 0,000,000,000,000,000,000,000,036,504,428,185,342,439,928,580' +xfmt1126 format -65778890583736142763927E0 '' -> '-65778890583736142763927' +xfmt1127 format 95344990271990118777309e106 '\xe6\xa1\x90<-,.18g' -> '9.53449902719901188e+128' +xfmt1128 format -27244351863439392214480E320 '' -> '-2.7244351863439392214480E+342' +xfmt1129 format 466184033E0 '015,' -> '000,466,184,033' +xfmt1130 format -946596882e0 '' -> '-946596882' +xfmt1131 format 499809691E348 '0F' -> '499809691000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1132 format -414608777e324 '0' -> '-4.14608777E+332' +xfmt1133 format 24392670736098321910E0 '' -> '24392670736098321910' +xfmt1134 format -99802835700022589755E0 ' 60n' -> ' -99802835700022589755' +xfmt1135 format 30164013069057929843e133 '\xed\x98\xbc>.43%' -> '30164013069057929843000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000%' +xfmt1136 format -17379647429004640982E50 '' -> '-1.7379647429004640982E+69' +xfmt1137 format 3802163750140701493855847178579323e0 '' -> '3802163750140701493855847178579323' +xfmt1138 format -2153096917325377854047128102178585E0 '-' -> '-2153096917325377854047128102178585' +xfmt1139 format 6093878818478471931566271787402161E327 '0' -> '6.093878818478471931566271787402161E+360' +xfmt1140 format -5923067988609787173199047989217099E154 '\xeb\x97\x84=+,F' -> '-59,230,679,886,097,871,731,990,479,892,170,990,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt1141 format 2038213783924404354E0 '\xeb\xaa\x93=+1,.71' -> '+2,038,213,783,924,404,354' +xfmt1142 format -4357882138443768553E0 '' -> '-4357882138443768553' +xfmt1143 format 2265789150361064236e258 '.2' -> '2.3E+276' +xfmt1144 format -4643259595285479024e372 '' -> '-4.643259595285479024E+390' +xfmt1145 format 140572316047798e0 '' -> '140572316047798' +xfmt1146 format -391991098858804e0 '.63E' -> '-3.919910988588040000000000000000000000000000000000000000000000000E+14' +xfmt1147 format 375516788039234E305 '\xe7\xa2\xae= 64,.76e' -> ' 3.7551678803923400000000000000000000000000000000000000000000000000000000000000e+319' +xfmt1148 format -289621488331929e311 '\xe4\xa4\xbb<+97,.2F' -> '-28,962,148,833,192,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00' +xfmt1149 format 2352194348088103588137e0 '\xed\x95\xa1> 57,e' -> '\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1\xed\x95\xa1 2.352194348088103588137e+21' +xfmt1150 format -9345075711019732920971E0 '+0' -> '-9345075711019732920971' +xfmt1151 format 5165801695053583577968e81 '\xed\x88\xa2=,' -> '5.165801695053583577968E+102' +xfmt1152 format -7097654697813217275387e288 '87' -> ' -7.097654697813217275387E+309' +xfmt1153 format 926416086094843417314110475292101868E0 '\xe2\xa4\x86>63G' -> '\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86\xe2\xa4\x86926416086094843417314110475292101868' +xfmt1154 format -383260009888432569391627949472299557e0 '-05,%' -> '-38,326,000,988,843,256,939,162,794,947,229,955,700%' +xfmt1155 format 803217433307228297478330634169679026e81 '\xe5\xa9\xab< 69,.8F' -> ' 803,217,433,307,228,297,478,330,634,169,679,026,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000' +xfmt1156 format -914749595601195043103441223733893804e209 ' 0,F' -> '-91,474,959,560,119,504,310,344,122,373,389,380,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt1157 format 4e0 '\xe8\xaa\x9e<2,.39' -> '4\xe8\xaa\x9e' +xfmt1158 format -2E0 '' -> '-2' +xfmt1159 format 9E295 '+' -> '+9E+295' +xfmt1160 format -8e48 '-0,.77%' -> '-800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1161 format 5658864678E0 '\xe7\xbb\x91^92.66F' -> '\xe7\xbb\x91\xe7\xbb\x91\xe7\xbb\x91\xe7\xbb\x91\xe7\xbb\x91\xe7\xbb\x91\xe7\xbb\x915658864678.000000000000000000000000000000000000000000000000000000000000000000\xe7\xbb\x91\xe7\xbb\x91\xe7\xbb\x91\xe7\xbb\x91\xe7\xbb\x91\xe7\xbb\x91\xe7\xbb\x91\xe7\xbb\x91' +xfmt1162 format -7650586842e0 '\xe0\xac\xad=.22%' -> '-765058684200.0000000000000000000000%' +xfmt1163 format 1886879620E79 '\xea\xae\x88>,.51F' -> '18,868,796,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000' +xfmt1164 format -1977372097e212 '\xe8\x8e\x8f^16,e' -> '-1.977372097e+221' +xfmt1165 format 85801537482533279614437349562325031769E0 '' -> '85801537482533279614437349562325031769' +xfmt1166 format -62842861523212015752020098671594870264e0 '\xef\x9b\x95<+94,.11' -> '-6.2842861523E+37\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95\xef\x9b\x95' +xfmt1167 format 67587172865099644292181878137372787003E44 '022,.44g' -> '6.7587172865099644292181878137372787003e+81' +xfmt1168 format -65329585270440748015111994640297461479e96 '\xe1\x9f\xa4< 2,.5' -> '-6.5330E+133' +xfmt1169 format 38283874388e0 ',.74' -> '38,283,874,388' +xfmt1170 format -81031191889E0 '' -> '-81031191889' +xfmt1171 format 42517922374e30 '\xe7\x8d\xad^45,' -> '\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad4.2517922374E+40\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad\xe7\x8d\xad' +xfmt1172 format -69695975013E198 '' -> '-6.9695975013E+208' +xfmt1173 format 7571689183894229284307748E0 '\xef\x82\x90^+33,.26F' -> '+7,571,689,183,894,229,284,307,748.00000000000000000000000000' +xfmt1174 format -3238644340764806129434275E0 ',.31' -> '-3,238,644,340,764,806,129,434,275' +xfmt1175 format 1297103611596157473040403E365 '\xe4\xa8\xa1>-49,.19e' -> '\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa1\xe4\xa8\xa11.2971036115961574730e+389' +xfmt1176 format -9276326680659185443503504E60 '-096,%' -> '-927,632,668,065,918,544,350,350,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt1177 format 227291114599294242326009580889316408699E0 ' 099.2' -> ' 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002.3E+38' +xfmt1178 format -215505096705733111212328010581324501816e0 '+' -> '-215505096705733111212328010581324501816' +xfmt1179 format 377005942503961041357993188905428515966e100 '067.2g' -> '000000000000000000000000000000000000000000000000000000000003.8e+138' +xfmt1180 format -515960532882475202240692407198616404631E238 ' 0,.63' -> '-5.15960532882475202240692407198616404631E+276' +xfmt1181 format 72528e0 '\xe3\x8c\x93>59' -> '\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x93\xe3\x8c\x9372528' +xfmt1182 format -90753e0 '\xcc\x96<45,.73%' -> '-9,075,300.0000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1183 format 78187e73 '+23' -> ' +7.8187E+77' +xfmt1184 format -48813e54 '\xef\x85\x93>-79,.70e' -> '\xef\x85\x93\xef\x85\x93-4.8813000000000000000000000000000000000000000000000000000000000000000000e+58' +xfmt1185 format 93722568522016624026802909957559454342604446e0 '' -> '93722568522016624026802909957559454342604446' +xfmt1186 format -73573811763423706133863208863854337992484660e0 '\xed\x88\x91>+77.14F' -> '\xed\x88\x91\xed\x88\x91\xed\x88\x91\xed\x88\x91\xed\x88\x91\xed\x88\x91\xed\x88\x91\xed\x88\x91\xed\x88\x91\xed\x88\x91\xed\x88\x91\xed\x88\x91\xed\x88\x91\xed\x88\x91\xed\x88\x91\xed\x88\x91\xed\x88\x91-73573811763423706133863208863854337992484660.00000000000000' +xfmt1187 format 87412085800348994768980372981314184132544109E75 '\xeb\x84\xab>62,.44' -> '\xeb\x84\xab\xeb\x84\xab\xeb\x84\xab\xeb\x84\xab\xeb\x84\xab\xeb\x84\xab\xeb\x84\xab\xeb\x84\xab\xeb\x84\xab\xeb\x84\xab\xeb\x84\xab\xeb\x84\xab8.7412085800348994768980372981314184132544109E+118' +xfmt1188 format -79551900907223493027347862631784821164179487E365 '' -> '-7.9551900907223493027347862631784821164179487E+408' +xfmt1189 format 8999e0 '' -> '8999' +xfmt1190 format -9494e0 '011,.30e' -> '-9.494000000000000000000000000000e+3' +xfmt1191 format 6137E219 '\xe1\x89\xbd<-91,G' -> '6.137E+222\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd' +xfmt1192 format -5445E323 '098,.45e' -> '-00,000,000,000,000,000,000,000,000,000,000,005.445000000000000000000000000000000000000000000e+326' +xfmt1193 format 9916405082934072004503333166163465427E0 '\xee\xaa\x8c^ 4,.36G' -> ' 9.91640508293407200450333316616346543E+36' +xfmt1194 format -2186799480824994857889618458632419274E0 '+0' -> '-2186799480824994857889618458632419274' +xfmt1195 format 4553382579366458203982499922800611717E150 '\xe5\xb8\x82= 33,' -> ' 4.553382579366458203982499922800611717E+186' +xfmt1196 format -7143932017830288343599060705130320103E177 '\xeb\xb1\xb4=+,.82E' -> '-7.1439320178302883435990607051303201030000000000000000000000000000000000000000000000E+213' +xfmt1197 format 957e0 ' 090.59E' -> ' 00000000000000000000000009.57000000000000000000000000000000000000000000000000000000000E+2' +xfmt1198 format -998E0 '0,.48g' -> '-998' +xfmt1199 format 739e168 '\xec\x91\x88=F' -> '739000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1200 format -116e92 '37' -> ' -1.16E+94' +xfmt1201 format 21855159335264369245223626363006123825047E0 '\xe4\x91\xbb>+54,e' -> '\xe4\x91\xbb\xe4\x91\xbb\xe4\x91\xbb\xe4\x91\xbb\xe4\x91\xbb\xe4\x91\xbb\xe4\x91\xbb+2.1855159335264369245223626363006123825047e+40' +xfmt1202 format -40570180499514545939475310433939158273415e0 '\xe1\x87\xbf>92' -> '\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf\xe1\x87\xbf-40570180499514545939475310433939158273415' +xfmt1203 format 79521965708498741689150172199710618122294E210 '+0,.73E' -> '+7.9521965708498741689150172199710618122294000000000000000000000000000000000E+250' +xfmt1204 format -60486287075501595981262670563551809028113E300 '\xe1\x90\xba=-,.69e' -> '-6.048628707550159598126267056355180902811300000000000000000000000000000e+340' +xfmt1205 format 23253153269854264745545991556606E0 '' -> '23253153269854264745545991556606' +xfmt1206 format -85844949555762066426764363170719E0 ' 0.25g' -> '-8.584494955576206642676436e+31' +xfmt1207 format 84842073387564577568644045907060E253 '' -> '8.4842073387564577568644045907060E+284' +xfmt1208 format -58156285638924070903681109783578E193 '\xee\x96\x96<+49.35' -> '-5.8156285638924070903681109783578E+224\xee\x96\x96\xee\x96\x96\xee\x96\x96\xee\x96\x96\xee\x96\x96\xee\x96\x96\xee\x96\x96\xee\x96\x96\xee\x96\x96\xee\x96\x96' +xfmt1209 format 6237302289004352e0 '' -> '6237302289004352' +xfmt1210 format -6252675168668183E0 '\xea\xb3\x86<-40,.28' -> '-6,252,675,168,668,183\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86' +xfmt1211 format 9855337227137350E130 '0,' -> '9.855337227137350E+145' +xfmt1212 format -1927936945756031e54 '054,.86' -> '-0,000,000,000,000,000,000,000,001.927936945756031E+69' +xfmt1213 format 587155973118892736e0 '-' -> '587155973118892736' +xfmt1214 format -642125468663228334e0 '\xe9\x93\x89<-79,.5G' -> '-6.4213E+17\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89\xe9\x93\x89' +xfmt1215 format 922175286683434479e254 '\xec\xbd\x8b^.94n' -> '9.22175286683434479e+271' +xfmt1216 format -192754809742929327E253 '+2,G' -> '-1.92754809742929327E+270' +xfmt1217 format 497629310494725187125e0 '\xe9\xb6\xb5=4f' -> '497629310494725187125' +xfmt1218 format -631705934282371645341e0 '\xe2\xa8\xa9=87,.69e' -> '-\xe2\xa8\xa9\xe2\xa8\xa9\xe2\xa8\xa9\xe2\xa8\xa9\xe2\xa8\xa9\xe2\xa8\xa9\xe2\xa8\xa9\xe2\xa8\xa9\xe2\xa8\xa9\xe2\xa8\xa9\xe2\xa8\xa96.317059342823716453410000000000000000000000000000000000000000000000000e+20' +xfmt1219 format 801313950987817934354E124 '\xe0\xb9\x89<52,g' -> '8.01313950987817934354e+144\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89\xe0\xb9\x89' +xfmt1220 format -115802452893730198460E319 '\xea\xbf\x92^+70.77' -> '\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92-1.15802452893730198460E+339\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92\xea\xbf\x92' +xfmt1221 format 1234567890123456789.1 '\xe7\x95\xb3>90.61' -> '\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb3\xe7\x95\xb31234567890123456789.1' +xfmt1222 format -123456.1234 '-070,.72e' -> '-1.234561234000000000000000000000000000000000000000000000000000000000000000e+5' +xfmt1223 format 8711979691088272368297507021612e0 '\xe7\x86\x88=' -> '8711979691088272368297507021612' +xfmt1224 format -1176566176072730815389409135990E0 '\xe0\xa3\xad^+70f' -> '\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad-1176566176072730815389409135990\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad\xe0\xa3\xad' +xfmt1225 format 8727387051579136237900491446857e13 '\xea\xae\x96>-7.58' -> '8.727387051579136237900491446857E+43' +xfmt1226 format -3377821661955554758802517279889E315 '72,.43' -> ' -3.377821661955554758802517279889E+345' +xfmt1227 format 640682447772909471761368805377633450E0 '\xef\x84\xb0<-1,.61' -> '640,682,447,772,909,471,761,368,805,377,633,450' +xfmt1228 format -159349470431643213117887153257364341e0 '\xe1\xad\x84< 58,.15' -> '-1.59349470431643E+35\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84\xe1\xad\x84' +xfmt1229 format 818149167916447869772257924659088173e363 '+.45' -> '+8.18149167916447869772257924659088173E+398' +xfmt1230 format -165071913462952502202270324351244223e298 '\xeb\x8c\x85^ .46' -> '-1.65071913462952502202270324351244223E+333' +xfmt1231 format 1e0 '093,E' -> '00,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,001E+0' +xfmt1232 format -6E0 '\xe3\x8f\x86^+46,.97E' -> '-6.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E+0' +xfmt1233 format 2E22 '0,' -> '2E+22' +xfmt1234 format -2e336 '.34' -> '-2E+336' +xfmt1235 format 94827469016244044698260e0 '0,.52F' -> '94,827,469,016,244,044,698,260.0000000000000000000000000000000000000000000000000000' +xfmt1236 format -33371328685651136640909e0 '\xe0\xa9\x87= 39,g' -> '-\xe0\xa9\x87\xe0\xa9\x87\xe0\xa9\x87\xe0\xa9\x87\xe0\xa9\x87\xe0\xa9\x87\xe0\xa9\x87\xe0\xa9\x8733,371,328,685,651,136,640,909' +xfmt1237 format 71066102816955663837648e101 '\xef\xba\xa6>-27.88' -> '7.1066102816955663837648E+123' +xfmt1238 format -14265320009857268800045e276 '\xe4\xb2\x97> 81,.47' -> '\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97\xe4\xb2\x97-1.4265320009857268800045E+298' +xfmt1239 format 26656895202609461039645001708784135e0 '\xe6\x93\xbb> 11.84' -> ' 26656895202609461039645001708784135' +xfmt1240 format -74215619120344694777511720099071394e0 '\xe8\xa7\xa8^ .23' -> '-7.4215619120344694777512E+34' +xfmt1241 format 31551296794342017602637635056356653e148 '.73' -> '3.1551296794342017602637635056356653E+182' +xfmt1242 format -28887426876675894877132520950588569E365 '' -> '-2.8887426876675894877132520950588569E+399' +xfmt1243 format 985680137479363405936559937210367e0 '+0,' -> '+985,680,137,479,363,405,936,559,937,210,367' +xfmt1244 format -912773423957247380054229676215179e0 '\xeb\xa7\xa1>+10.1G' -> '\xeb\xa7\xa1\xeb\xa7\xa1\xeb\xa7\xa1\xeb\xa7\xa1-9E+32' +xfmt1245 format 874803711585040475517814640524749e55 '.3' -> '8.75E+87' +xfmt1246 format -829558639046021150634504656680767E39 '\xe9\x85\x87=,' -> '-8.29558639046021150634504656680767E+71' +xfmt1247 format 9213702285749173311128067519565139559063E0 '\xea\x95\xbe^+47.30' -> '\xea\x95\xbe\xea\x95\xbe\xea\x95\xbe\xea\x95\xbe\xea\x95\xbe+9.21370228574917331112806751957E+39\xea\x95\xbe\xea\x95\xbe\xea\x95\xbe\xea\x95\xbe\xea\x95\xbe\xea\x95\xbe' +xfmt1248 format -2955460480257236253801085051412051273640e0 '\xef\xa7\xbd=-33,.70E' -> '-2.9554604802572362538010850514120512736400000000000000000000000000000000E+39' +xfmt1249 format 6522870666791372951454359067405043273712E43 '' -> '6.522870666791372951454359067405043273712E+82' +xfmt1250 format -8943359251887872692799639589863118548360e264 '\xef\x8d\xaf<47,.91E' -> '-8.9433592518878726927996395898631185483600000000000000000000000000000000000000000000000000000E+303' +xfmt1251 format 3292315033724964E0 '\xe9\xa9\xb8^+95,.6g' -> '\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8+3.29232e+15\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8\xe9\xa9\xb8' +xfmt1252 format -2979688307183608e0 '\xe5\xb5\x83^-47,.34f' -> '-2,979,688,307,183,608.0000000000000000000000000000000000' +xfmt1253 format 5122245774624687e346 '44,E' -> ' 5.122245774624687E+361' +xfmt1254 format -2216024599055152E245 '' -> '-2.216024599055152E+260' +xfmt1255 format 20707880329370798942641682271E0 '' -> '20707880329370798942641682271' +xfmt1256 format -81966687745397963448393810772E0 '\xe7\x9c\xb9^-91,.78f' -> '-81,966,687,745,397,963,448,393,810,772.000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1257 format 95784454605784504649130995300e65 ' ,.53' -> ' 9.5784454605784504649130995300E+93' +xfmt1258 format -69271202541202006606594329715e24 ' 57.31' -> ' -6.9271202541202006606594329715E+52' +xfmt1259 format 705e0 '+038.71' -> '+0000000000000000000000000000000000705' +xfmt1260 format -184e0 '' -> '-184' +xfmt1261 format 322e367 'E' -> '3.22E+369' +xfmt1262 format -728e110 '+0,F' -> '-72,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt1263 format 4247649583412082604e0 '' -> '4247649583412082604' +xfmt1264 format -1431116297784488479e0 '.35' -> '-1431116297784488479' +xfmt1265 format 6894644483318298229E294 '\xe4\xbb\xb8<-.59f' -> '6894644483318298229000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000' +xfmt1266 format -4510735341319494194e264 '\xe1\xbf\x9f^34,.60F' -> '-4,510,735,341,319,494,194,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000' +xfmt1267 format 963736486374887752089347717113e0 ',E' -> '9.63736486374887752089347717113E+29' +xfmt1268 format -209533441072043004301134268167e0 '\xe7\xaa\xb0>+.32n' -> '-209533441072043004301134268167' +xfmt1269 format 511631107756404534665932532919E305 '021G' -> '5.11631107756404534665932532919E+334' +xfmt1270 format -696922784768664510562281936739E286 '\xe0\xa7\xac>31,.29F' -> '-6,969,227,847,686,645,105,622,819,367,390,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000' +xfmt1271 format 5175114305893790800428929E0 '\xed\x98\xb3^78,.28' -> '\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb35,175,114,305,893,790,800,428,929\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3\xed\x98\xb3' +xfmt1272 format -3718127755713326384698666E0 '\xc5\xb2>' -> '-3718127755713326384698666' +xfmt1273 format 7031922477157492440443257E143 '\xe9\xb3\x8a=.18' -> '7.03192247715749244E+167' +xfmt1274 format -3747080574577094664792756e191 ' 0n' -> '-3.747080574577094664792756e+215' +xfmt1275 format 298816734174082E0 '\xe8\x9c\xbf< 47.12' -> ' 2.98816734174E+14\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf\xe8\x9c\xbf' +xfmt1276 format -566251942806744E0 '\xe4\x96\x8e^.67' -> '-566251942806744' +xfmt1277 format 446762520360586e264 '-81e' -> ' 4.46762520360586e+278' +xfmt1278 format -589637234034190E383 '\xe8\xb9\xb4<85.37' -> '-5.89637234034190E+397\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4\xe8\xb9\xb4' +xfmt1279 format 830747271711564490226540163030414597269654E0 '\xe5\x8c\x81>-69' -> '\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81\xe5\x8c\x81830747271711564490226540163030414597269654' +xfmt1280 format -611834193752745102558603045955938342279888E0 '' -> '-611834193752745102558603045955938342279888' +xfmt1281 format 840493053646780426909780681947493869016593E201 '\xe9\xba\xae^-1,.32F' -> '840,493,053,646,780,426,909,780,681,947,493,869,016,593,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000' +xfmt1282 format -695868664168966671135606665876086493759154E217 '' -> '-6.95868664168966671135606665876086493759154E+258' +xfmt1283 format 58081069050992585696E0 '\xe9\xbe\xbb>-23,.28%' -> '5,808,106,905,099,258,569,600.0000000000000000000000000000%' +xfmt1284 format -54631323763995445488e0 '\xe5\x94\x96= 16,.46e' -> '-5.4631323763995445488000000000000000000000000000e+19' +xfmt1285 format 59749200095820998499e149 '' -> '5.9749200095820998499E+168' +xfmt1286 format -20019457719467078405e101 '\xee\x81\xb7< F' -> '-2001945771946707840500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1287 format 84318390241765886004002817712949020000788962e0 '' -> '84318390241765886004002817712949020000788962' +xfmt1288 format -44353777026244273921976035511367409633582544E0 '044,.9F' -> '-44,353,777,026,244,273,921,976,035,511,367,409,633,582,544.000000000' +xfmt1289 format 47290844352096547684307111322681495695042471e295 '\xe7\x86\xb3>+.50' -> '+4.7290844352096547684307111322681495695042471E+338' +xfmt1290 format -31664832512214783291867998973371809834873479e311 '' -> '-3.1664832512214783291867998973371809834873479E+354' +xfmt1291 format 2498E0 '\xef\x81\x91=-,' -> '2,498' +xfmt1292 format -8946e0 '' -> '-8946' +xfmt1293 format 3989e192 '.29' -> '3.989E+195' +xfmt1294 format -5847E262 '' -> '-5.847E+265' +xfmt1295 format 18353e0 '' -> '18353' +xfmt1296 format -52190e0 '-081.88E' -> '-5.2190000000000000000000000000000000000000000000000000000000000000000000000000000000000000E+4' +xfmt1297 format 57022E306 ',' -> '5.7022E+310' +xfmt1298 format -94492E315 ' 43.81g' -> ' -9.4492e+319' +xfmt1299 format 0E0 ' 0,.8G' -> ' 0' +xfmt1300 format 0e0 '\xe7\xb5\xb3<+,.63F' -> '+0.000000000000000000000000000000000000000000000000000000000000000' +xfmt1301 format 0e85 '' -> '0E+85' +xfmt1302 format 0E203 '+0,' -> '+0E+203' +xfmt1303 format 7406827E0 '' -> '7406827' +xfmt1304 format -4990445e0 '' -> '-4990445' +xfmt1305 format 6557716E226 '030,.93G' -> '00,000,000,000,006.557716E+232' +xfmt1306 format -2808195e130 ' 068%' -> '-2808195000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1307 format 590409597017331493685650E0 '08,.50e' -> '5.90409597017331493685650000000000000000000000000000e+23' +xfmt1308 format -595957635327385565150404E0 '\xeb\x91\x93^+' -> '-595957635327385565150404' +xfmt1309 format 208230180666026418436536e250 ',' -> '2.08230180666026418436536E+273' +xfmt1310 format -418778417311127567021540E50 '0g' -> '-4.18778417311127567021540e+73' +xfmt1311 format 7131402214881670819268255119013170E0 '\xe4\x92\xb6^-,f' -> '7,131,402,214,881,670,819,268,255,119,013,170' +xfmt1312 format -1473791582511267692160849821878372e0 '\xe5\x92\xbb<+91,.17e' -> '-1.47379158251126769e+33\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb' +xfmt1313 format 5622677602350854891917573981139050e172 '\xe7\xb2\xbc^-' -> '5.622677602350854891917573981139050E+205' +xfmt1314 format -1171010201106572360151897942846201E321 '+010,.34E' -> '-1.1710102011065723601518979428462010E+354' +xfmt1315 format 72347353359745533636478070846571375789820E0 '\xe8\xaa\xb0>.1' -> '7E+40' +xfmt1316 format -42502440499130616664996480703691482101920e0 '' -> '-42502440499130616664996480703691482101920' +xfmt1317 format 88474467335333073853190279050870125043202e219 '' -> '8.8474467335333073853190279050870125043202E+259' +xfmt1318 format -25639457137558407332307907474765778641039e91 '' -> '-2.5639457137558407332307907474765778641039E+131' +xfmt1319 format 29487330495E0 '\xe5\x82\xa4<+48,.93g' -> '+29,487,330,495\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4\xe5\x82\xa4' +xfmt1320 format -26481480837E0 ' 042.17' -> '-00000000000000000000000000000026481480837' +xfmt1321 format 48988038306E359 '\xef\x89\xb8>49,%' -> '489,880,383,060,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt1322 format -42938580381e73 ' 057,.11E' -> '-0,000,000,000,000,000,000,000,000,000,004.29385803810E+83' +xfmt1323 format 53643699377577545E0 ',.63G' -> '53,643,699,377,577,545' +xfmt1324 format -19456460302626871E0 '23.1' -> ' -2E+16' +xfmt1325 format 82171293779874920E107 '04e' -> '8.2171293779874920e+123' +xfmt1326 format -56289710928720534E86 '\xec\x91\x9d<-20,.98e' -> '-5.62897109287205340000000000000000000000000000000000000000000000000000000000000000000000000000000000e+102' +xfmt1327 format 96158031354594587320409026164525687096e0 '-089f' -> '00000000000000000000000000000000000000000000000000096158031354594587320409026164525687096' +xfmt1328 format -22874834809829266602130795325837127569e0 '' -> '-22874834809829266602130795325837127569' +xfmt1329 format 23095975095440592633121077731559179946e296 '+,g' -> '+2.3095975095440592633121077731559179946e+333' +xfmt1330 format -64793443069761374156284086214867092021e220 '' -> '-6.4793443069761374156284086214867092021E+257' +xfmt1331 format 590686570256660007125429685369630668539e0 '' -> '590686570256660007125429685369630668539' +xfmt1332 format -538373276235994733388749830283159443710E0 ',' -> '-538,373,276,235,994,733,388,749,830,283,159,443,710' +xfmt1333 format 299771383625382621901105658704640729742E135 '\xe7\x9f\xba= .86' -> ' 2.99771383625382621901105658704640729742E+173' +xfmt1334 format -293325235301046695190892973040184266636E140 '\xec\x9a\xb9< ,.8' -> '-2.9332524E+178' +xfmt1335 format 8411567701240127094336E0 '\xe8\xbd\xa9=-12,.32f' -> '8,411,567,701,240,127,094,336.00000000000000000000000000000000' +xfmt1336 format -7854549374007470726075E0 '\xe7\xb4\x99^' -> '-7854549374007470726075' +xfmt1337 format 6438242020055550304642e14 '' -> '6.438242020055550304642E+35' +xfmt1338 format -5247710509152193612461e306 '\xe5\x80\x91>.32' -> '-5.247710509152193612461E+327' +xfmt1339 format 747425e0 '\xed\x85\x9e= 9,.41e' -> ' 7.47425000000000000000000000000000000000000e+5' +xfmt1340 format -572687E0 '\xe2\xb7\x92< 51,.57f' -> '-572,687.000000000000000000000000000000000000000000000000000000000' +xfmt1341 format 687280E110 '' -> '6.87280E+115' +xfmt1342 format -393829e137 '' -> '-3.93829E+142' +xfmt1343 format 12345678901234567.12345 '012,.35f' -> '12,345,678,901,234,567.12345000000000000000000000000000000' +xfmt1344 format -1234567890.123456789012345678 '056.45%' -> '-123456789012.345678901234567800000000000000000000000000000%' +xfmt1345 format 307923356957416512E0 '\xef\x92\x95<-,.57f' -> '307,923,356,957,416,512.000000000000000000000000000000000000000000000000000000000' +xfmt1346 format -424412174369991910e0 '\xef\x95\xb5<82,.87G' -> '-424,412,174,369,991,910\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5\xef\x95\xb5' +xfmt1347 format 177773020075535955E70 '-0,F' -> '1,777,730,200,755,359,550,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt1348 format -422020909212362350e100 '-' -> '-4.22020909212362350E+117' +xfmt1349 format 64886E0 '080,.47G' -> '0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,064,886' +xfmt1350 format -41090E0 ',' -> '-41,090' +xfmt1351 format 38979e377 '\xee\xa5\xbe=40,' -> '\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe\xee\xa5\xbe3.8979E+381' +xfmt1352 format -56321E146 '' -> '-5.6321E+150' +xfmt1353 format 83053300916752500655742e0 '\xe1\xa3\xa7=e' -> '8.3053300916752500655742e+22' +xfmt1354 format -47650352705286811564210e0 '\xe7\xbe\xb5= 20.22e' -> '-4.7650352705286811564210e+22' +xfmt1355 format 46523244947504431912196e35 '\xe4\x86\x9c= 67' -> ' \xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c\xe4\x86\x9c4.6523244947504431912196E+57' +xfmt1356 format -61483351723039115613389e111 '069.24g' -> '-0000000000000000000000000000000000000006.1483351723039115613389e+133' +xfmt1357 format 4812476200043052221977352881000909e0 '\xe3\x92\xbf^,.82' -> '4,812,476,200,043,052,221,977,352,881,000,909' +xfmt1358 format -8488548614482109650458013475197164E0 '' -> '-8488548614482109650458013475197164' +xfmt1359 format 4722306653957648411915692458240238E184 'g' -> '4.722306653957648411915692458240238e+217' +xfmt1360 format -9182490970567212250184963036586505E193 '\xe1\x99\x8e=-7E' -> '-9.182490970567212250184963036586505E+226' +xfmt1361 format 569955164575e0 '029,G' -> '0,000,000,000,569,955,164,575' +xfmt1362 format -602119929750e0 '\xeb\xad\x8b>+26,.6e' -> '\xeb\xad\x8b\xeb\xad\x8b\xeb\xad\x8b\xeb\xad\x8b\xeb\xad\x8b\xeb\xad\x8b\xeb\xad\x8b\xeb\xad\x8b\xeb\xad\x8b\xeb\xad\x8b\xeb\xad\x8b\xeb\xad\x8b\xeb\xad\x8b-6.021199e+11' +xfmt1363 format 909675273700e77 ' 0.4E' -> ' 9.0968E+88' +xfmt1364 format -880390385469E12 '\xed\x96\xbd>18.77' -> '-8.80390385469E+23' +xfmt1365 format 6879827371076641604887436133772886861703421e0 '\xe2\xb4\xab<' -> '6879827371076641604887436133772886861703421' +xfmt1366 format -9345274799018715220275512750557264872153281e0 '' -> '-9345274799018715220275512750557264872153281' +xfmt1367 format 6814537118877325646985580759773766751334375E132 '\xeb\xb0\x9c^+89.43g' -> '\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c+6.814537118877325646985580759773766751334375e+174\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c\xeb\xb0\x9c' +xfmt1368 format -5073264983738545773644357231296365529942666E161 '' -> '-5.073264983738545773644357231296365529942666E+203' +xfmt1369 format 4247910638440987E0 '\xeb\x91\xb4<' -> '4247910638440987' +xfmt1370 format -6482320416865322e0 '\xea\x8e\xa0>-36,.81g' -> '\xea\x8e\xa0\xea\x8e\xa0\xea\x8e\xa0\xea\x8e\xa0\xea\x8e\xa0\xea\x8e\xa0\xea\x8e\xa0\xea\x8e\xa0\xea\x8e\xa0\xea\x8e\xa0\xea\x8e\xa0\xea\x8e\xa0\xea\x8e\xa0\xea\x8e\xa0-6,482,320,416,865,322' +xfmt1371 format 3746161782717708e24 '\xeb\xaa\xab^70F' -> '\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab3746161782717708000000000000000000000000\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab\xeb\xaa\xab' +xfmt1372 format -4394650832492789e112 '\xe6\x93\x80>+17,.17' -> '-4.394650832492789E+127' +xfmt1373 format 74854267772376977e0 ' 0,.34' -> ' 74,854,267,772,376,977' +xfmt1374 format -69119955798318367e0 '+02,.18' -> '-69,119,955,798,318,367' +xfmt1375 format 42926165371923850e22 '\xea\xa8\xad^E' -> '4.2926165371923850E+38' +xfmt1376 format -50257725004047281e294 '+0.81e' -> '-5.025772500404728100000000000000000000000000000000000000000000000000000000000000000e+310' +xfmt1377 format 6139625674815978187E0 '.9f' -> '6139625674815978187.000000000' +xfmt1378 format -3163002890119215345E0 '\xea\xb6\x91>45,.28' -> '\xea\xb6\x91\xea\xb6\x91\xea\xb6\x91\xea\xb6\x91\xea\xb6\x91\xea\xb6\x91\xea\xb6\x91\xea\xb6\x91\xea\xb6\x91\xea\xb6\x91\xea\xb6\x91\xea\xb6\x91\xea\xb6\x91\xea\xb6\x91\xea\xb6\x91\xea\xb6\x91\xea\xb6\x91\xea\xb6\x91\xea\xb6\x91-3,163,002,890,119,215,345' +xfmt1379 format 3208740755836372185E29 '.86' -> '3.208740755836372185E+47' +xfmt1380 format -6101888250293485406E267 '+35,e' -> ' -6.101888250293485406e+285' +xfmt1381 format 3791727741953124867535454429140e0 '-f' -> '3791727741953124867535454429140' +xfmt1382 format -8053638599648731243148564958705E0 '\xe4\x95\xbc>' -> '-8053638599648731243148564958705' +xfmt1383 format 3479429983961477390261119470519e158 '\xe8\x91\x9c>.67' -> '3.479429983961477390261119470519E+188' +xfmt1384 format -8858195429156100262731355933313E273 ' ,%' -> '-885,819,542,915,610,026,273,135,593,331,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt1385 format 546077269586725434127406785E0 '97' -> ' 546077269586725434127406785' +xfmt1386 format -406024203272823552706237048e0 '\xe7\x93\xbe= 88.92' -> '-\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe\xe7\x93\xbe406024203272823552706237048' +xfmt1387 format 570970984184939446564132065E47 '\xc7\x80^ 94' -> '\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80 5.70970984184939446564132065E+73\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80\xc7\x80' +xfmt1388 format -507939591332506227049842206E77 '' -> '-5.07939591332506227049842206E+103' +xfmt1389 format 5396291334109350833852212676E0 '055,%' -> '00,000,000,000,539,629,133,410,935,083,385,221,267,600%' +xfmt1390 format -2708032348751443438013861156E0 '' -> '-2708032348751443438013861156' +xfmt1391 format 3856598532390839428325025397e215 '-,%' -> '38,565,985,323,908,394,283,250,253,970,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt1392 format -4660980835890218012691135791E29 '\xe3\x96\xa8<+29,.18g' -> '-4.66098083589021801e+56\xe3\x96\xa8\xe3\x96\xa8\xe3\x96\xa8\xe3\x96\xa8\xe3\x96\xa8' +xfmt1393 format 65983202324508217160497196727836832923510536e0 '\xed\x96\xb2^+29,e' -> '+6.5983202324508217160497196727836832923510536e+43' +xfmt1394 format -47322226675874573269503479623138710855401532e0 '0.26n' -> '-4.7322226675874573269503480e+43' +xfmt1395 format 28507069431100281191062078120418006519052849E282 '\xe2\x94\x94>25,.44' -> '2.8507069431100281191062078120418006519052849E+325' +xfmt1396 format -47384609782029655752627365140845068483203963E48 '\xe8\xaa\x8a^ 85,.11%' -> '-4,738,460,978,202,965,575,262,736,514,084,506,848,320,396,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000%' +xfmt1397 format 3669109290E0 '.61G' -> '3669109290' +xfmt1398 format -2958598295e0 ' 028.62' -> '-000000000000000002958598295' +xfmt1399 format 3785967479e3 '\xe4\x88\xb2>91' -> '\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb2\xe4\x88\xb23.785967479E+12' +xfmt1400 format -2707417779E205 '\xe4\x84\xae<+30E' -> '-2.707417779E+214\xe4\x84\xae\xe4\x84\xae\xe4\x84\xae\xe4\x84\xae\xe4\x84\xae\xe4\x84\xae\xe4\x84\xae\xe4\x84\xae\xe4\x84\xae\xe4\x84\xae\xe4\x84\xae\xe4\x84\xae\xe4\x84\xae' +xfmt1401 format 65750145208E0 '\xee\xb4\xb6^,' -> '65,750,145,208' +xfmt1402 format -57868374609E0 '\xe8\x9d\x81<-' -> '-57868374609' +xfmt1403 format 47803927164E268 '\xe1\xb3\xb7^%' -> '47803927164000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1404 format -16739750269E236 '' -> '-1.6739750269E+246' +xfmt1405 format 6751E0 '\xe9\xb2\x85>+73,.52%' -> '\xe9\xb2\x85\xe9\xb2\x85\xe9\xb2\x85\xe9\xb2\x85\xe9\xb2\x85\xe9\xb2\x85\xe9\xb2\x85\xe9\xb2\x85\xe9\xb2\x85\xe9\xb2\x85\xe9\xb2\x85+675,100.0000000000000000000000000000000000000000000000000000%' +xfmt1406 format -2717E0 '0' -> '-2717' +xfmt1407 format 4466e354 '\xef\x8b\xb2=+,.67f' -> '+4,466,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000' +xfmt1408 format -4714E123 '+31,G' -> ' -4.714E+126' +xfmt1409 format 42949417E0 '\xe6\xb5\xb7^-7,.41' -> '42,949,417' +xfmt1410 format -32115409e0 ' 0' -> '-32115409' +xfmt1411 format 67009805E46 '\xe3\x8c\x86>n' -> '6.7009805e+53' +xfmt1412 format -76477000e164 '\xe8\x8b\x87>-.19' -> '-7.6477000E+171' +xfmt1413 format 295E0 '\xe2\xb4\x91<-,.88' -> '295' +xfmt1414 format -344E0 'f' -> '-344' +xfmt1415 format 908E328 '\xec\x87\xaf^66,%' -> '908,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt1416 format -282e82 '0,%' -> '-282,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt1417 format 0e0 '\xeb\x98\x89^-,.60G' -> '0' +xfmt1418 format 0e0 '\xe7\x92\xbb^-91,e' -> '\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb0e+0\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb\xe7\x92\xbb' +xfmt1419 format 0E278 ' 0.65g' -> ' 0e+278' +xfmt1420 format 0e72 '' -> '0E+72' +xfmt1421 format 833404441272116130420415293215509376543446E0 '\xee\xbb\x91>+,F' -> '+833,404,441,272,116,130,420,415,293,215,509,376,543,446' +xfmt1422 format -270163834807225824875007255990102610006708E0 '74' -> ' -270163834807225824875007255990102610006708' +xfmt1423 format 616966119074241396665653102222288684462642E168 '.2' -> '6.2E+209' +xfmt1424 format -995524468092019310109415293998164697792827e28 '\xe3\x95\x9b<+1,.66%' -> '-995,524,468,092,019,310,109,415,293,998,164,697,792,827,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1425 format 864330768823595841380308320244424433730E0 '+81' -> ' +864330768823595841380308320244424433730' +xfmt1426 format -880166122087543485382062104237153210133e0 '\xed\x96\x87^ 45,.1e' -> '\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87-8.8e+38\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87\xed\x96\x87' +xfmt1427 format 122637031961141794936908923277972487335E218 ',' -> '1.22637031961141794936908923277972487335E+256' +xfmt1428 format -108280418426622887699302194521982810543e229 '\xe9\x95\xa3> 15,.46%' -> '-108,280,418,426,622,887,699,302,194,521,982,810,543,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000%' +xfmt1429 format 96380109704630076200836894E0 '\xed\x8b\x91^ .16F' -> ' 96380109704630076200836894.0000000000000000' +xfmt1430 format -31789091534634658272323155e0 '7' -> '-31789091534634658272323155' +xfmt1431 format 23724394936080364646502432E36 '\xef\x94\x8b^+47,.88G' -> '\xef\x94\x8b\xef\x94\x8b\xef\x94\x8b\xef\x94\x8b\xef\x94\x8b\xef\x94\x8b\xef\x94\x8b+2.3724394936080364646502432E+61\xef\x94\x8b\xef\x94\x8b\xef\x94\x8b\xef\x94\x8b\xef\x94\x8b\xef\x94\x8b\xef\x94\x8b\xef\x94\x8b' +xfmt1432 format -54463330940760405057415442E118 ' ' -> '-5.4463330940760405057415442E+143' +xfmt1433 format 532929048421675966960e0 '-0.6' -> '5.32929E+20' +xfmt1434 format -491291485046518109983e0 '052.3' -> '-00000000000000000000000000000000000000000004.91E+20' +xfmt1435 format 315701959827489578542e117 '\xe2\xbd\x8e> .83G' -> ' 3.15701959827489578542E+137' +xfmt1436 format -167837950494421114960e242 '\xe4\x9b\x9c<+54.62' -> '-1.67837950494421114960E+262\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c\xe4\x9b\x9c' +xfmt1437 format 4820403522287134853165382216629667688E0 '' -> '4820403522287134853165382216629667688' +xfmt1438 format -4677483420725035530796985778082083432E0 '10,.61f' -> '-4,677,483,420,725,035,530,796,985,778,082,083,432.0000000000000000000000000000000000000000000000000000000000000' +xfmt1439 format 5891012953614950503897287733912283111E94 '\xe6\x85\x87=25,.80' -> '5.891012953614950503897287733912283111E+130' +xfmt1440 format -9386086720103201123720788950058225314E31 '.60' -> '-9.386086720103201123720788950058225314E+67' +xfmt1441 format 60851400970938930472991938796295E0 '\xe1\xa5\x9a< 65,.1g' -> ' 6e+31\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a\xe1\xa5\x9a' +xfmt1442 format -93123378450753283147927908278356E0 '\xec\x8a\x91>+44,.13f' -> '-93,123,378,450,753,283,147,927,908,278,356.0000000000000' +xfmt1443 format 83171819414336316239407716537769E259 '' -> '8.3171819414336316239407716537769E+290' +xfmt1444 format -64433290470229860242488428798913E290 'F' -> '-6443329047022986024248842879891300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1445 format 608894419934121673024054590214642E0 '' -> '608894419934121673024054590214642' +xfmt1446 format -867372131410113770102004416828677e0 '+0.3' -> '-8.67E+32' +xfmt1447 format 344667793000093541256145825329505E255 '\xeb\xa9\x9f^-84,.70e' -> '\xeb\xa9\x9f\xeb\xa9\x9f\xeb\xa9\x9f3.4466779300009354125614582532950500000000000000000000000000000000000000e+287\xeb\xa9\x9f\xeb\xa9\x9f\xeb\xa9\x9f\xeb\xa9\x9f' +xfmt1448 format -833419803662073676042284239348300E213 '\xe6\x8f\xaa=,.81' -> '-8.33419803662073676042284239348300E+245' +xfmt1449 format 86453134134240004882128873350762562726e0 '' -> '86453134134240004882128873350762562726' +xfmt1450 format -56998001924155771557692737183404260522e0 ' 092.82' -> '-0000000000000000000000000000000000000000000000000000056998001924155771557692737183404260522' +xfmt1451 format 59612585344829931001193925000942810630E66 '\xe9\x8d\x9c<' -> '5.9612585344829931001193925000942810630E+103' +xfmt1452 format -43892657878241665488340024753956608162e262 '\xe4\xbb\xb6>99,.70' -> '\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6\xe4\xbb\xb6-4.3892657878241665488340024753956608162E+299' +xfmt1453 format 440610950E0 '0.63' -> '440610950' +xfmt1454 format -541362591e0 '' -> '-541362591' +xfmt1455 format 443726695e150 '\xed\x8d\x83=-,.10G' -> '4.43726695E+158' +xfmt1456 format -135335841e352 '\xe3\xb4\x8f^+.95' -> '-1.35335841E+360' +xfmt1457 format 8218137171273090106340631e0 '+25' -> '+8218137171273090106340631' +xfmt1458 format -9368928497077326499086082e0 '\xec\xa9\xb3<95' -> '-9368928497077326499086082\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3\xec\xa9\xb3' +xfmt1459 format 5867862985497337287481533E56 '18,.97G' -> '5.867862985497337287481533E+80' +xfmt1460 format -7886156480985046762542010E159 '\xe6\xa0\xb9< 8,.84f' -> '-7,886,156,480,985,046,762,542,010,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1461 format 37532818209868132551129602486e0 '\xeb\xbc\xa1^' -> '37532818209868132551129602486' +xfmt1462 format -69642259435981926411527235870e0 '' -> '-69642259435981926411527235870' +xfmt1463 format 86800173460335811532700047102E278 '' -> '8.6800173460335811532700047102E+306' +xfmt1464 format -14071677334398475920643759901E143 '\xe8\xb1\xac^+57,.94F' -> '-1,407,167,733,439,847,592,064,375,990,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1465 format 12.123456789012345 '-,' -> '12.123456789012345' +xfmt1466 format -123456789012345678901.12345678901234567 '\xe5\x8a\xa0=-31,f' -> '-123,456,789,012,345,678,901.12345678901234567' +xfmt1467 format 3E0 '\xe9\xad\xad=+89,G' -> '+\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad\xe9\xad\xad3' +xfmt1468 format -4E0 ',' -> '-4' +xfmt1469 format 6e143 '\xef\x99\x97^ 70%' -> ' 60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1470 format -3E48 '\xec\xb8\x8d<31,.50G' -> '-3E+48\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d\xec\xb8\x8d' +xfmt1471 format 8317E0 '\xea\x92\x93^+85,.5E' -> '\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93+8.31700E+3\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93\xea\x92\x93' +xfmt1472 format -1166E0 '096.62G' -> '-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001166' +xfmt1473 format 3717E61 '\xe8\x85\xae<-38,.79' -> '3.717E+64\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae\xe8\x85\xae' +xfmt1474 format -7381e244 '\xe5\xb9\x96=57,F' -> '-73,810,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt1475 format 666368684030773541E0 ',F' -> '666,368,684,030,773,541' +xfmt1476 format -126005939157792202E0 '\xe1\xb1\xa1=' -> '-126005939157792202' +xfmt1477 format 720863440117068505e89 '\xe2\x8a\x8d=-78,.11g' -> '\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d\xe2\x8a\x8d7.2086344012e+106' +xfmt1478 format -992634085758132153E266 '\xea\x9a\xad^-,.55f' -> '-99,263,408,575,813,215,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000' +xfmt1479 format 582669070124797E0 '\xec\xb6\xa4<+20,.74%' -> '+58,266,907,012,479,700.00000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1480 format -928486289620384e0 ' ,.24' -> '-928,486,289,620,384' +xfmt1481 format 182914809125844e86 '\xe8\x86\xb1< .28' -> ' 1.82914809125844E+100' +xfmt1482 format -587259609008584e340 '\xe4\xa1\x91<+60,E' -> '-5.87259609008584E+354\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91\xe4\xa1\x91' +xfmt1483 format 8040652550034e0 '059,e' -> '00,000,000,000,000,000,000,000,000,000,008.040652550034e+12' +xfmt1484 format -3707384418910e0 ',' -> '-3,707,384,418,910' +xfmt1485 format 1135696203609E243 '+081,.68%' -> '+113,569,620,360,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1486 format -9734293436231e15 '.97' -> '-9.734293436231E+27' +xfmt1487 format 82401651834938070000568835196398488227394627E0 '0,' -> '82,401,651,834,938,070,000,568,835,196,398,488,227,394,627' +xfmt1488 format -72852525107276187288171461594257974290896531e0 '\xe3\x96\x86=16.8' -> '-\xe3\x96\x86\xe3\x96\x867.2852525E+43' +xfmt1489 format 43017976739605419966478294694714219883375095e151 '\xe5\x9f\xae^65e' -> '\xe5\x9f\xae\xe5\x9f\xae\xe5\x9f\xae\xe5\x9f\xae\xe5\x9f\xae\xe5\x9f\xae\xe5\x9f\xae4.3017976739605419966478294694714219883375095e+194\xe5\x9f\xae\xe5\x9f\xae\xe5\x9f\xae\xe5\x9f\xae\xe5\x9f\xae\xe5\x9f\xae\xe5\x9f\xae\xe5\x9f\xae' +xfmt1490 format -14816261660940076682685814663158705750317485e153 ' 062E' -> '-000000000001.4816261660940076682685814663158705750317485E+196' +xfmt1491 format 6014355786367587272929352512906244e0 '56.18' -> ' 6.01435578636758727E+33' +xfmt1492 format -7266108591204584924322315306602806e0 '\xe7\x99\xaf>2,.5e' -> '-7.26611e+33' +xfmt1493 format 1388003044203974741611303122627901E379 '' -> '1.388003044203974741611303122627901E+412' +xfmt1494 format -6244589015658788774050816570734495e96 '' -> '-6.244589015658788774050816570734495E+129' +xfmt1495 format 367777241807737711072285E0 '\xe8\x9b\x93<.85g' -> '367777241807737711072285' +xfmt1496 format -813127718272542802644058E0 '\xe7\xac\xac^e' -> '-8.13127718272542802644058e+23' +xfmt1497 format 371520045860375129758006E146 '\xe8\xb9\xb6>24,E' -> '3.71520045860375129758006E+169' +xfmt1498 format -638488378703452700309329e127 '' -> '-6.38488378703452700309329E+150' +xfmt1499 format 258859555094855746059383279E0 '\xe2\xa5\xa6^+' -> '+258859555094855746059383279' +xfmt1500 format -874570874256726513585609946e0 '\xe9\xad\x85> 95,.56E' -> '\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85\xe9\xad\x85-8.74570874256726513585609946000000000000000000000000000000E+26' +xfmt1501 format 886324721695588169681168806e358 '\xee\x8e\x91> 9,.80G' -> ' 8.86324721695588169681168806E+384' +xfmt1502 format -726639411413163179665331605e169 '' -> '-7.26639411413163179665331605E+195' +xfmt1503 format 88273877146635E0 '\xe6\xaa\x83>+75,.68E' -> '+8.82738771466350000000000000000000000000000000000000000000000000000000E+13' +xfmt1504 format -82518702496277E0 '\xed\x92\xac=,G' -> '-82,518,702,496,277' +xfmt1505 format 51406385968829e133 '\xe4\xb2\x8f<%' -> '51406385968829000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1506 format -63248121926025E282 '93' -> ' -6.3248121926025E+295' +xfmt1507 format 14424753726081641347495583542151704596955E0 '\xee\x8c\x89>38.73' -> '14424753726081641347495583542151704596955' +xfmt1508 format -16786528224021234260822084678598033454400E0 ',.66' -> '-16,786,528,224,021,234,260,822,084,678,598,033,454,400' +xfmt1509 format 65887941961683116616685448588073292650694e188 '' -> '6.5887941961683116616685448588073292650694E+228' +xfmt1510 format -12541207996679352786262160766677587119102E38 '' -> '-1.2541207996679352786262160766677587119102E+78' +xfmt1511 format 58786156984e0 '0.89' -> '58786156984' +xfmt1512 format -65121133860e0 '\xe3\xb2\x9a<30.88f' -> '-65121133860.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1513 format 50279312445E143 '-070' -> '000000000000000000000000000000000000000000000000000005.0279312445E+153' +xfmt1514 format -80854271706e293 '' -> '-8.0854271706E+303' +xfmt1515 format 4144256096973353165e0 '84,g' -> ' 4,144,256,096,973,353,165' +xfmt1516 format -5020143270708016561e0 '\xe9\x90\xba^+98,.87g' -> '\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba-5,020,143,270,708,016,561\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba\xe9\x90\xba' +xfmt1517 format 5804713801702131470E302 '75,' -> ' 5.804713801702131470E+320' +xfmt1518 format -5538267603265078012E145 '' -> '-5.538267603265078012E+163' +xfmt1519 format 21982777426543937494E0 '\xe5\xb4\x95^58.92' -> '\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x9521982777426543937494\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95\xe5\xb4\x95' +xfmt1520 format -92032227146456946493e0 '023.23E' -> '-9.20322271464569464930000E+19' +xfmt1521 format 28765724553181149203E116 '\xe9\xbf\xb2<+25.92g' -> '+2.8765724553181149203e+135' +xfmt1522 format -30900099348747899741e202 '\xe3\xae\x8e=+78,.26E' -> '-\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e\xe3\xae\x8e3.09000993487478997410000000E+221' +xfmt1523 format 789818498591521731659765145974632e0 '' -> '789818498591521731659765145974632' +xfmt1524 format -834503535949804170906916389148842E0 '\xef\x8f\x99< 59,' -> '-834,503,535,949,804,170,906,916,389,148,842\xef\x8f\x99\xef\x8f\x99\xef\x8f\x99\xef\x8f\x99\xef\x8f\x99\xef\x8f\x99\xef\x8f\x99\xef\x8f\x99\xef\x8f\x99\xef\x8f\x99\xef\x8f\x99\xef\x8f\x99\xef\x8f\x99\xef\x8f\x99\xef\x8f\x99' +xfmt1525 format 878842591965063335081749820858828E299 '-087,.59f' -> '87,884,259,196,506,333,508,174,982,085,882,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000' +xfmt1526 format -999585773059707028032599755452086E198 '\xee\xb4\x93= 62,.17e' -> '-\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x93\xee\xb4\x939.99585773059707028e+230' +xfmt1527 format 1633285828659992E0 '\xe4\xaa\xac<49%' -> '163328582865999200%\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac\xe4\xaa\xac' +xfmt1528 format -4459138868808592e0 '' -> '-4459138868808592' +xfmt1529 format 1514291527311821E372 '0' -> '1.514291527311821E+387' +xfmt1530 format -5920774989767230E53 '\xe1\x9e\xb5>,' -> '-5.920774989767230E+68' +xfmt1531 format 863857398518517946307976689481058011829e0 '' -> '863857398518517946307976689481058011829' +xfmt1532 format -982870918559497707629038940656437932749e0 '-0' -> '-982870918559497707629038940656437932749' +xfmt1533 format 899967573295891673911788390300386017153e349 ' 049,' -> ' 0,008.99967573295891673911788390300386017153E+387' +xfmt1534 format -620424851696416924920397905350845873748E150 '' -> '-6.20424851696416924920397905350845873748E+188' +xfmt1535 format 325965744925e0 '\xeb\xba\xa4^-28,.46E' -> '3.2596574492500000000000000000000000000000000000E+11' +xfmt1536 format -875346584607E0 ' 035.8' -> '-0000000000000000000008.7534658E+11' +xfmt1537 format 230284384340e223 '020.67%' -> '230284384340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1538 format -115719761959E194 '22' -> ' -1.15719761959E+205' +xfmt1539 format 59e0 '-0e' -> '5.9e+1' +xfmt1540 format -44E0 ' 013,E' -> '-000,004.4E+1' +xfmt1541 format 35E376 '\xef\xb7\xb9> 24,g' -> '\xef\xb7\xb9\xef\xb7\xb9\xef\xb7\xb9\xef\xb7\xb9\xef\xb7\xb9\xef\xb7\xb9\xef\xb7\xb9\xef\xb7\xb9\xef\xb7\xb9\xef\xb7\xb9\xef\xb7\xb9\xef\xb7\xb9\xef\xb7\xb9\xef\xb7\xb9\xef\xb7\xb9 3.5e+377' +xfmt1542 format -83E169 ',' -> '-8.3E+170' +xfmt1543 format 6789882e0 '\xe0\xbc\xa7^ 81,.80%' -> ' 678,988,200.00000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1544 format -5777485E0 '-0,.10' -> '-5,777,485' +xfmt1545 format 5820919e349 ',' -> '5.820919E+355' +xfmt1546 format -6835707e380 '' -> '-6.835707E+386' +xfmt1547 format 80628177390546211710023634026205e0 '8,.36' -> '80,628,177,390,546,211,710,023,634,026,205' +xfmt1548 format -84239036242675060674325538158693E0 '083,.95G' -> '-00,000,000,000,000,000,000,000,000,000,084,239,036,242,675,060,674,325,538,158,693' +xfmt1549 format 69302847536182010539115832514975e150 ' 0,.79e' -> ' 6.9302847536182010539115832514975000000000000000000000000000000000000000000000000e+181' +xfmt1550 format -34130216205959206541547123589579E204 '-' -> '-3.4130216205959206541547123589579E+235' +xfmt1551 format 8904151000820762579825E0 ',.28' -> '8,904,151,000,820,762,579,825' +xfmt1552 format -6400656114719527216644e0 '' -> '-6400656114719527216644' +xfmt1553 format 5657108009257918861382e91 '-' -> '5.657108009257918861382E+112' +xfmt1554 format -1845867493947508003397E239 '0.80n' -> '-1.845867493947508003397e+260' +xfmt1555 format 230E0 '\xeb\xa0\xbf<93,.86' -> '230\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf\xeb\xa0\xbf' +xfmt1556 format -123e0 '\xef\xad\xbc^-18,.93g' -> '\xef\xad\xbc\xef\xad\xbc\xef\xad\xbc\xef\xad\xbc\xef\xad\xbc\xef\xad\xbc\xef\xad\xbc-123\xef\xad\xbc\xef\xad\xbc\xef\xad\xbc\xef\xad\xbc\xef\xad\xbc\xef\xad\xbc\xef\xad\xbc' +xfmt1557 format 846e11 '%' -> '8460000000000000%' +xfmt1558 format -455E307 '\xe1\x87\xa4< 54,' -> '-4.55E+309\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4\xe1\x87\xa4' +xfmt1559 format 908956e0 '\xe1\xb2\x98= 67,.5E' -> ' \xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x98\xe1\xb2\x989.08956E+5' +xfmt1560 format -651066E0 '0' -> '-651066' +xfmt1561 format 860735E314 '\xd0\x92> .18' -> ' 8.60735E+319' +xfmt1562 format -850247e143 '0' -> '-8.50247E+148' +xfmt1563 format 0E0 '\xec\xac\x8f^+,E' -> '+0E+0' +xfmt1564 format 0e0 ',' -> '0' +xfmt1565 format 0e24 '.25n' -> '0e+24' +xfmt1566 format 0e152 '\xe4\x90\x94<-37,' -> '0E+152\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94\xe4\x90\x94' +xfmt1567 format 522910921217571748222118672735308559526302E0 '\xe8\x87\x96>62,E' -> '\xe8\x87\x96\xe8\x87\x96\xe8\x87\x96\xe8\x87\x96\xe8\x87\x96\xe8\x87\x96\xe8\x87\x96\xe8\x87\x96\xe8\x87\x96\xe8\x87\x96\xe8\x87\x96\xe8\x87\x96\xe8\x87\x96\xe8\x87\x96\xe8\x87\x965.22910921217571748222118672735308559526302E+41' +xfmt1568 format -354537021850298002536379627830061252395709E0 '\xe6\x9f\xa1=+.92f' -> '-354537021850298002536379627830061252395709.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1569 format 924184102162864361703638084003663135295164e303 ',F' -> '924,184,102,162,864,361,703,638,084,003,663,135,295,164,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt1570 format -643132486374262401396193348657032716047832e148 '\xe4\x84\xb1^45,.85E' -> '-6.4313248637426240139619334865703271604783200000000000000000000000000000000000000000000E+189' +xfmt1571 format 92406516318643741174113114205475005904e0 '' -> '92406516318643741174113114205475005904' +xfmt1572 format -87593118900191371340609436059617259574e0 '\xe6\x81\x80^+88,.25e' -> '\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80-8.7593118900191371340609436e+37\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80\xe6\x81\x80' +xfmt1573 format 62724205384594867220744504643941758700e26 ' 020,.83F' -> ' 6,272,420,538,459,486,722,074,450,464,394,175,870,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1574 format -82055234504007390005038239313045378220e62 '0' -> '-8.2055234504007390005038239313045378220E+99' +xfmt1575 format 339032808E0 '' -> '339032808' +xfmt1576 format -344293815e0 '+90,' -> ' -344,293,815' +xfmt1577 format 508965875e34 '\xe7\xa6\x99>-,.39e' -> '5.089658750000000000000000000000000000000e+42' +xfmt1578 format -584953081e366 '' -> '-5.84953081E+374' +xfmt1579 format 94165275000665894600272208739e0 '0,' -> '94,165,275,000,665,894,600,272,208,739' +xfmt1580 format -61592997940055867811505660689E0 '+0,G' -> '-61,592,997,940,055,867,811,505,660,689' +xfmt1581 format 42841840147539982726695856132e197 '\xe8\x9a\x91> .19' -> ' 4.284184014753998273E+225' +xfmt1582 format -47404757727056714128092507270E101 'F' -> '-4740475772705671412809250727000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1583 format 6228431763667979896915965412595627732808e0 '\xea\xb0\x9e=+79,.38g' -> '+\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e\xea\xb0\x9e6.2284317636679798969159654125956277328e+39' +xfmt1584 format -6552882654489474942840975956790326812737E0 '\xeb\x85\x9c=+94,.28g' -> '-\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c\xeb\x85\x9c6.552882654489474942840975957e+39' +xfmt1585 format 3200974302540930039153669050978325680426e313 '\xc7\xb4>,.39F' -> '32,009,743,025,409,300,391,536,690,509,783,256,804,260,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000' +xfmt1586 format -6869804674994312932870558061022275593326e179 '\xe1\xb8\x9d=' -> '-6.869804674994312932870558061022275593326E+218' +xfmt1587 format 12345678901234567.123456 '\xeb\x8b\xaa^-94,' -> '\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa12,345,678,901,234,567.123456\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa\xeb\x8b\xaa' +xfmt1588 format -1234567890123456.1234567890123456789012 '1' -> '-1234567890123456.1234567890123456789012' +xfmt1589 format 49213877865022458E0 'n' -> '49213877865022458' +xfmt1590 format -49990593600278562e0 '\xe3\x83\x80>+9,.80F' -> '-49,990,593,600,278,562.00000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1591 format 30149722003201205E73 '\xe1\xb7\xa5<+81,.32e' -> '+3.01497220032012050000000000000000e+89\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5\xe1\xb7\xa5' +xfmt1592 format -44135045920537718e92 '.64' -> '-4.4135045920537718E+108' +xfmt1593 format 2E0 '\xe4\x91\xb1=+24.69e' -> '+2.000000000000000000000000000000000000000000000000000000000000000000000e+0' +xfmt1594 format -5E0 '35' -> ' -5' +xfmt1595 format 1E16 '83,.16' -> ' 1E+16' +xfmt1596 format -7e64 ',.92' -> '-7E+64' +xfmt1597 format 546773819E0 '\xed\x93\x96>-41,.96g' -> '\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96\xed\x93\x96546,773,819' +xfmt1598 format -668133280E0 '-0,' -> '-668,133,280' +xfmt1599 format 818951456E208 '\xe3\xb3\xbc> .85%' -> ' 818951456000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1600 format -876214447E353 '\xe2\x8e\xb2=-57e' -> '-\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb2\xe2\x8e\xb28.76214447e+361' +xfmt1601 format 37114E0 ' 045.83E' -> ' 3.71140000000000000000000000000000000000000000000000000000000000000000000000000000000E+4' +xfmt1602 format -10716e0 '\xe9\x87\xa8=80,.59F' -> '-\xe9\x87\xa8\xe9\x87\xa8\xe9\x87\xa8\xe9\x87\xa8\xe9\x87\xa8\xe9\x87\xa8\xe9\x87\xa8\xe9\x87\xa8\xe9\x87\xa8\xe9\x87\xa8\xe9\x87\xa8\xe9\x87\xa8\xe9\x87\xa810,716.00000000000000000000000000000000000000000000000000000000000' +xfmt1603 format 82045E367 '\xee\xbb\x82>-.33e' -> '8.204500000000000000000000000000000e+371' +xfmt1604 format -49690E136 '\xd4\x80>+23,.18' -> '\xd4\x80\xd4\x80\xd4\x80\xd4\x80\xd4\x80\xd4\x80\xd4\x80\xd4\x80\xd4\x80\xd4\x80\xd4\x80-4.9690E+140' +xfmt1605 format 75540357923072E0 '\xe6\xad\x90= 97,e' -> ' \xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x90\xe6\xad\x907.5540357923072e+13' +xfmt1606 format -86415617373609e0 '\xed\x8d\xbe<8.57n' -> '-86415617373609' +xfmt1607 format 75563029084464E248 '.84' -> '7.5563029084464E+261' +xfmt1608 format -68523874425856e137 '-65,f' -> '-6,852,387,442,585,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt1609 format 86951307653149375025156076e0 '' -> '86951307653149375025156076' +xfmt1610 format -20748819148473349097175032E0 '\xe8\x8d\x9e^ 87.25G' -> '\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e-2.074881914847334909717503E+25\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e\xe8\x8d\x9e' +xfmt1611 format 52592904356861901792035177E125 ',.39' -> '5.2592904356861901792035177E+150' +xfmt1612 format -54038054189672206518309761E59 '58,' -> ' -5.4038054189672206518309761E+84' +xfmt1613 format 722104554740443692418337874617083628706e0 '-40.72n' -> ' 722104554740443692418337874617083628706' +xfmt1614 format -697057121954840272655400160381902871182e0 '0.87' -> '-697057121954840272655400160381902871182' +xfmt1615 format 687808937585734645719954669897651439200E358 '0,' -> '6.87808937585734645719954669897651439200E+396' +xfmt1616 format -850377789429877025611296788612543205260e42 ' 0,e' -> '-8.50377789429877025611296788612543205260e+80' +xfmt1617 format 102660525424340729E0 '' -> '102660525424340729' +xfmt1618 format -356203881152799499E0 ',%' -> '-35,620,388,115,279,949,900%' +xfmt1619 format 883597116133397143e239 ',' -> '8.83597116133397143E+256' +xfmt1620 format -713856701624221604e383 '\xe8\xb1\xbd= 24,G' -> '-7.13856701624221604E+400' +xfmt1621 format 24373374590572107980521703413446467706E0 '\xe9\x9e\x82>83,.91E' -> '2.4373374590572107980521703413446467706000000000000000000000000000000000000000000000000000000E+37' +xfmt1622 format -13016256608316661924744885128835580999e0 '.40g' -> '-13016256608316661924744885128835580999' +xfmt1623 format 28670280803335744355906024627109170241E188 'g' -> '2.8670280803335744355906024627109170241e+225' +xfmt1624 format -11212171503088341721966054154511693108E336 ' 080,%' -> '-1,121,217,150,308,834,172,196,605,415,451,169,310,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt1625 format 394415759525207040791023E0 '68' -> ' 394415759525207040791023' +xfmt1626 format -106017360857731788946409e0 '+' -> '-106017360857731788946409' +xfmt1627 format 548216795658619694461461e30 '' -> '5.48216795658619694461461E+53' +xfmt1628 format -364158815918041831499929E3 '' -> '-3.64158815918041831499929E+26' +xfmt1629 format 24516007E0 '' -> '24516007' +xfmt1630 format -48323942e0 '020,g' -> '-000,000,048,323,942' +xfmt1631 format 88778325E314 '\xec\xab\xa9<+74f' -> '+8877832500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1632 format -18754939E43 '\xe5\xa1\x8b= 19,.24e' -> '-1.875493900000000000000000e+50' +xfmt1633 format 1831809030578962302830876162872057797741E0 '059' -> '00000000000000000001831809030578962302830876162872057797741' +xfmt1634 format -3448669217222838226390752244450233603020e0 '' -> '-3448669217222838226390752244450233603020' +xfmt1635 format 6652631607421413451823416212018800546867E202 '' -> '6.652631607421413451823416212018800546867E+241' +xfmt1636 format -7341747843224670530524582191534782203322E152 ',.54' -> '-7.341747843224670530524582191534782203322E+191' +xfmt1637 format 93634960731e0 '+081.14%' -> '+0000000000000000000000000000000000000000000000000009363496073100.00000000000000%' +xfmt1638 format -22469860423e0 '\xea\xb9\x89^+42,.98g' -> '\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89-22,469,860,423\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89\xea\xb9\x89' +xfmt1639 format 96161785992E155 '' -> '9.6161785992E+165' +xfmt1640 format -38600231140E158 '\xe5\x94\xb1^ 53,.26e' -> '\xe5\x94\xb1\xe5\x94\xb1\xe5\x94\xb1\xe5\x94\xb1\xe5\x94\xb1\xe5\x94\xb1\xe5\x94\xb1\xe5\x94\xb1\xe5\x94\xb1-3.86002311400000000000000000e+168\xe5\x94\xb1\xe5\x94\xb1\xe5\x94\xb1\xe5\x94\xb1\xe5\x94\xb1\xe5\x94\xb1\xe5\x94\xb1\xe5\x94\xb1\xe5\x94\xb1\xe5\x94\xb1' +xfmt1641 format 64705753944269657211154e0 '\xe3\xb3\xa9=+38,.40e' -> '+6.4705753944269657211154000000000000000000e+22' +xfmt1642 format -94616331866302848412488e0 'G' -> '-94616331866302848412488' +xfmt1643 format 31585116750722530497419e242 '\xea\x90\xbf>+38,.79G' -> '\xea\x90\xbf\xea\x90\xbf\xea\x90\xbf\xea\x90\xbf\xea\x90\xbf\xea\x90\xbf\xea\x90\xbf\xea\x90\xbf+3.1585116750722530497419E+264' +xfmt1644 format -39544355658355114569158E19 '024.28F' -> '-395443556583551145691580000000000000000000.0000000000000000000000000000' +xfmt1645 format 343439418514775762746601192914430137543160E0 '-0,g' -> '343,439,418,514,775,762,746,601,192,914,430,137,543,160' +xfmt1646 format -196721291737807781604631285963807213446270E0 '\xe7\x93\xbf>91.94n' -> '\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf\xe7\x93\xbf-196721291737807781604631285963807213446270' +xfmt1647 format 534118059085690977472934179729937562791019E166 '\xe6\x8b\xa4>-96,.32F' -> '5,341,180,590,856,909,774,729,341,797,299,375,627,910,190,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000' +xfmt1648 format -822415999375069568911585072162611434529521e86 '+98.86' -> ' -8.22415999375069568911585072162611434529521E+127' +xfmt1649 format 22162948190821712576e0 '089.67g' -> '00000000000000000000000000000000000000000000000000000000000000000000022162948190821712576' +xfmt1650 format -92716579127642678887E0 ',' -> '-92,716,579,127,642,678,887' +xfmt1651 format 13025789260091069838e126 '\xef\xaf\x8d^,.51E' -> '1.302578926009106983800000000000000000000000000000000E+145' +xfmt1652 format -44780079950086749409E299 '' -> '-4.4780079950086749409E+318' +xfmt1653 format 841828653465725512230379657979947552E0 '030,.54' -> '841,828,653,465,725,512,230,379,657,979,947,552' +xfmt1654 format -671061131202263235366732976457433704e0 '%' -> '-67106113120226323536673297645743370400%' +xfmt1655 format 194776418825836203045313242636630613e129 '62.60F' -> '194776418825836203045313242636630613000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000' +xfmt1656 format -766471571817010372634634857381386305e323 '' -> '-7.66471571817010372634634857381386305E+358' +xfmt1657 format 529888398397818647145778056408851e0 '\xec\x8b\xb0=-28,F' -> '529,888,398,397,818,647,145,778,056,408,851' +xfmt1658 format -360481776693445012526705891303612e0 '\xea\xaf\x8c=-24,.40g' -> '-360,481,776,693,445,012,526,705,891,303,612' +xfmt1659 format 843778384618787480817069391736299e149 ' 047,%' -> ' 8,437,783,846,187,874,808,170,693,917,362,990,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt1660 format -748714323161601987302405880620823e149 '.65' -> '-7.48714323161601987302405880620823E+181' +xfmt1661 format 75686742453575784001026112280e0 ',' -> '75,686,742,453,575,784,001,026,112,280' +xfmt1662 format -10479807512306909770620772609E0 ' 094,.20E' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,001.04798075123069097706E+28' +xfmt1663 format 38549773079770082145054746448e244 ' .31E' -> ' 3.8549773079770082145054746448000E+272' +xfmt1664 format -73676572171397329870670302309e366 '\xe9\xb7\xb9= 51,.58' -> '-\xe9\xb7\xb9\xe9\xb7\xb9\xe9\xb7\xb9\xe9\xb7\xb9\xe9\xb7\xb9\xe9\xb7\xb9\xe9\xb7\xb9\xe9\xb7\xb9\xe9\xb7\xb9\xe9\xb7\xb9\xe9\xb7\xb9\xe9\xb7\xb9\xe9\xb7\xb9\xe9\xb7\xb9\xe9\xb7\xb97.3676572171397329870670302309E+394' +xfmt1665 format 8956044842744269614068684277157742325654185e0 '\xeb\x93\xa5>+.82' -> '+8956044842744269614068684277157742325654185' +xfmt1666 format -3493944736768818338132524155986217612824102e0 '\xe6\xbf\x9f^,' -> '-3,493,944,736,768,818,338,132,524,155,986,217,612,824,102' +xfmt1667 format 8188719549351895778038273721532488407293588e279 '\xeb\xad\x83=.10' -> '8.188719549E+321' +xfmt1668 format -8888156789367087837428447942892490072303541e65 ' 07,f' -> '-888,815,678,936,708,783,742,844,794,289,249,007,230,354,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt1669 format 8819116e0 '19,.35g' -> ' 8,819,116' +xfmt1670 format -9101395E0 '-95' -> ' -9101395' +xfmt1671 format 7822271e346 '.76' -> '7.822271E+352' +xfmt1672 format -7421206e347 '\xeb\x9c\xb9<49,.72' -> '-7.421206E+353\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9\xeb\x9c\xb9' +xfmt1673 format 304021957855005743880E0 ' 0,.34G' -> ' 304,021,957,855,005,743,880' +xfmt1674 format -510395582733695728151E0 '\xe8\x87\xa3=-' -> '-510395582733695728151' +xfmt1675 format 173321615743556330598E297 '\xea\xb3\xb1>+%' -> '+17332161574355633059800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1676 format -264323993886727679045e329 '\xea\xb3\xb5>+47,.47e' -> '-2.64323993886727679045000000000000000000000000000e+349' +xfmt1677 format 95324378977436022590066245430050918592790e0 '+0' -> '+95324378977436022590066245430050918592790' +xfmt1678 format -19165081492500423270034675166723519959590E0 '0.85' -> '-19165081492500423270034675166723519959590' +xfmt1679 format 82991562697534141346826112661060108540303e166 '-37,e' -> '8.2991562697534141346826112661060108540303e+206' +xfmt1680 format -21179576620570106220160414330882249135802e147 '\xeb\x98\x94^84,.61g' -> '\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94-2.1179576620570106220160414330882249135802e+187\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94\xeb\x98\x94' +xfmt1681 format 9569508755477055e0 ' 0e' -> ' 9.569508755477055e+15' +xfmt1682 format -5625124450066201E0 '-012,F' -> '-5,625,124,450,066,201' +xfmt1683 format 3651986451309178e202 ' ' -> ' 3.651986451309178E+217' +xfmt1684 format -4609477807678862E365 '10,.81F' -> '-460,947,780,767,886,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1685 format 2595721679275681355E0 '\xe6\xa3\xbb<-24,.92' -> '2,595,721,679,275,681,355' +xfmt1686 format -9097412260237318922E0 '\xe9\xa2\x8d<+17,.23%' -> '-909,741,226,023,731,892,200.00000000000000000000000%' +xfmt1687 format 7128818029538489432E103 '\xe1\xaa\x8c=+,' -> '+7.128818029538489432E+121' +xfmt1688 format -5828021478905092896E367 '\xe3\x90\x85= 87,.8E' -> '-\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x85\xe3\x90\x855.82802148E+385' +xfmt1689 format 9462562302039141253469e0 '' -> '9462562302039141253469' +xfmt1690 format -6654816954198745775825E0 '\xe2\x8e\xac^-' -> '-6654816954198745775825' +xfmt1691 format 4399686354413824602473E253 '+.37' -> '+4.399686354413824602473E+274' +xfmt1692 format -4776523045453881427095E14 '\xe4\xb6\x81^ ' -> '-4.776523045453881427095E+35' +xfmt1693 format 2774248088515507342986304E0 '\xe3\x9f\x80^+56,.47F' -> '+2,774,248,088,515,507,342,986,304.00000000000000000000000000000000000000000000000' +xfmt1694 format -6604826929167891832825218E0 'F' -> '-6604826929167891832825218' +xfmt1695 format 9641046607138492649416095E265 ' 8,' -> ' 9.641046607138492649416095E+289' +xfmt1696 format -2770721748745707573648009E173 '' -> '-2.770721748745707573648009E+197' +xfmt1697 format 36e0 '' -> '36' +xfmt1698 format -30e0 '\xe4\xb2\x9b>,%' -> '-3,000%' +xfmt1699 format 15e237 '\xe7\x93\xb5=-51,.1f' -> '15,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0' +xfmt1700 format -17e110 '63,.2g' -> ' -1.7e+111' +xfmt1701 format 2994335479722e0 ' 0.11e' -> ' 2.99433547972e+12' +xfmt1702 format -6469004458661e0 '\xef\xa1\xbb>-.98%' -> '-646900445866100.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1703 format 6295294427916E226 '\xe7\xb4\x85> 17,.48G' -> ' 6.295294427916E+238' +xfmt1704 format -3605457097028E359 '-' -> '-3.605457097028E+371' +xfmt1705 format 528542904809422110991126362439E0 '+.74%' -> '+52854290480942211099112636243900.00000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1706 format -186546665117952220743535047419E0 '\xe8\xbd\x82>+80,.3F' -> '\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82\xe8\xbd\x82-186,546,665,117,952,220,743,535,047,419.000' +xfmt1707 format 881571555582962812999508637548E107 '' -> '8.81571555582962812999508637548E+136' +xfmt1708 format -959176481364364489352611235141E364 '\xe5\x8f\xa2^ 79,.9F' -> '-9,591,764,813,643,644,893,526,112,351,410,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000' +xfmt1709 format 12345678901234.1234567890123456789 '%' -> '1234567890123412.34567890123456789%' +xfmt1710 format -1234567890123456789.123456789012345678901 '-090,E' -> '-0,000,000,000,000,000,000,000,000,000,000,001.234567890123456789123456789012345678901E+18' +xfmt1711 format 5173717607219827e0 '\xee\x92\x9b>+1' -> '+5173717607219827' +xfmt1712 format -2639862260784208E0 '89,.36E' -> ' -2.639862260784208000000000000000000000E+15' +xfmt1713 format 8206679055890398e118 ',.93' -> '8.206679055890398E+133' +xfmt1714 format -3828053569856594e26 '012G' -> '-3.828053569856594E+41' +xfmt1715 format 20747213687e0 '-011' -> '20747213687' +xfmt1716 format -20687624063E0 '\xe6\xbe\x91>-39,.99E' -> '-2.068762406300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E+10' +xfmt1717 format 34912394474E198 '\xee\xa2\xa9> 61,.19' -> '\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9\xee\xa2\xa9 3.4912394474E+208' +xfmt1718 format -76899652010E90 '' -> '-7.6899652010E+100' +xfmt1719 format 4592212642645781117333181075e0 '\xe6\xb7\xa7>90g' -> '\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa7\xe6\xb7\xa74592212642645781117333181075' +xfmt1720 format -3305673085448182838831564458e0 '\xe9\x8a\x8b<-88,.25' -> '-3.305673085448182838831564E+27\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b' +xfmt1721 format 5824199955873914279022047271e189 ',%' -> '582,419,995,587,391,427,902,204,727,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt1722 format -1565229470603000329010128975e65 '\xe4\x90\x92=-80.60f' -> '-156522947060300032901012897500000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000' +xfmt1723 format 812020e0 '' -> '812020' +xfmt1724 format -260928E0 '\xe6\x8e\xb8> 86,.22' -> '\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8\xe6\x8e\xb8-260,928' +xfmt1725 format 111456E247 '70.6' -> ' 1.11456E+252' +xfmt1726 format -466865e376 '\xea\x92\xb2^95,.36G' -> '\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2-4.66865E+381\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2\xea\x92\xb2' +xfmt1727 format 95400556204275442e0 '0G' -> '95400556204275442' +xfmt1728 format -73321106658757978e0 '-031,.67' -> '-00,000,073,321,106,658,757,978' +xfmt1729 format 53276716351055013e183 '\xe6\xb0\xaf>+.79' -> '+5.3276716351055013E+199' +xfmt1730 format -75142320239589362e108 '+013,.29%' -> '-7,514,232,023,958,936,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000%' +xfmt1731 format 221383369737566847356e0 '\xe3\xaf\x9c^-,e' -> '2.21383369737566847356e+20' +xfmt1732 format -350833978428168155988E0 '' -> '-350833978428168155988' +xfmt1733 format 796739107649876209479e166 '0E' -> '7.96739107649876209479E+186' +xfmt1734 format -162541495385847327781e257 '+.73' -> '-1.62541495385847327781E+277' +xfmt1735 format 78E0 '\xef\x83\xab^.60' -> '78' +xfmt1736 format -82E0 ',.37' -> '-82' +xfmt1737 format 52E271 '\xea\xaa\x8a= 53,.91g' -> ' \xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a\xea\xaa\x8a5.2e+272' +xfmt1738 format -11e271 '\xee\x82\x92< 98,.54G' -> '-1.1E+272\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92\xee\x82\x92' +xfmt1739 format 124834105722416736890214024489780e0 '\xee\x9f\xaf^.79' -> '124834105722416736890214024489780' +xfmt1740 format -333768962452790779929786909148060e0 '\xe7\xa1\xba=86,.88%' -> '-33,376,896,245,279,077,992,978,690,914,806,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1741 format 639830028251789717181122356119893E29 '\xe9\x85\x91>88,.25g' -> '\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x91\xe9\x85\x916.398300282517897171811224e+61' +xfmt1742 format -732019652317661290675827692060951E213 '' -> '-7.32019652317661290675827692060951E+245' +xfmt1743 format 92052E0 '' -> '92052' +xfmt1744 format -24187e0 '\xdf\x84<7' -> '-24187\xdf\x84' +xfmt1745 format 31030E94 '\xe8\xa1\xb3^' -> '3.1030E+98' +xfmt1746 format -24289E193 '0' -> '-2.4289E+197' +xfmt1747 format 4E0 '81.94G' -> ' 4' +xfmt1748 format -7E0 '' -> '-7' +xfmt1749 format 5E70 '\xef\x92\xb0<' -> '5E+70' +xfmt1750 format -9E201 '042.25' -> '-000000000000000000000000000000000009E+201' +xfmt1751 format 899167935120366116488014368206e0 '\xe4\xa5\x83< 65,f' -> ' 899,167,935,120,366,116,488,014,368,206\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83\xe4\xa5\x83' +xfmt1752 format -411477194411684513513600519297E0 '\xe9\xa8\xac^+77.41' -> '\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac-411477194411684513513600519297\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac\xe9\xa8\xac' +xfmt1753 format 571391781758974768135263938466E94 '\xe6\xb9\x99=.99%' -> '571391781758974768135263938466000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1754 format -734293982917626333595799832605e115 '\xe1\x8f\x8b<,.70g' -> '-7.34293982917626333595799832605e+144' +xfmt1755 format 30968710099802E0 '.14' -> '30968710099802' +xfmt1756 format -62924819326989E0 ',' -> '-62,924,819,326,989' +xfmt1757 format 93922107704044E160 '0,E' -> '9.3922107704044E+173' +xfmt1758 format -79147427479693E212 '016.58f' -> '-7914742747969300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000' +xfmt1759 format 833e0 '+0.22e' -> '+8.3300000000000000000000e+2' +xfmt1760 format -254E0 '\xe7\xaa\x9a>' -> '-254' +xfmt1761 format 548e185 ' ' -> ' 5.48E+187' +xfmt1762 format -562e381 '\xe2\x9d\xa6> 42.56E' -> '-5.62000000000000000000000000000000000000000000000000000000E+383' +xfmt1763 format 612496442975635E0 '' -> '612496442975635' +xfmt1764 format -952871535637055E0 '\xed\x91\xa4<-28,.44%' -> '-95,287,153,563,705,500.00000000000000000000000000000000000000000000%' +xfmt1765 format 136454149603067e83 '+' -> '+1.36454149603067E+97' +xfmt1766 format -408293800762382e63 'G' -> '-4.08293800762382E+77' +xfmt1767 format 13659145E0 ' 091,.18' -> ' 00,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,013,659,145' +xfmt1768 format -67445878E0 ' 91F' -> ' -67445878' +xfmt1769 format 84718388E363 '+067.69n' -> '+00000000000000000000000000000000000000000000000000008.4718388e+370' +xfmt1770 format -25230135e190 '43.22G' -> ' -2.5230135E+197' +xfmt1771 format 6096293428E0 '0' -> '6096293428' +xfmt1772 format -9504704219E0 '\xeb\xbc\x88>+,.98e' -> '-9.50470421900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+9' +xfmt1773 format 9642958517e121 '\xd6\xbc>86,.92E' -> '9.64295851700000000000000000000000000000000000000000000000000000000000000000000000000000000000E+130' +xfmt1774 format -7145717851E175 '\xe2\x88\xae<+45.84n' -> '-7.145717851e+184\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae' +xfmt1775 format 272968517913696142209480546600901692e0 '\xe6\x8e\xbd>-,.73' -> '272,968,517,913,696,142,209,480,546,600,901,692' +xfmt1776 format -497056071052570020032881720131795534E0 ',' -> '-497,056,071,052,570,020,032,881,720,131,795,534' +xfmt1777 format 329516588547299085291009303434720517e281 '29,.41e' -> '3.29516588547299085291009303434720517000000e+316' +xfmt1778 format -773567743792777593849793844174509709E193 '0' -> '-7.73567743792777593849793844174509709E+228' +xfmt1779 format 0E0 '\xe8\xa0\x9b> 73,g' -> '\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b\xe8\xa0\x9b 0' +xfmt1780 format 0E0 '\xeb\xb2\xb5^+68,.99E' -> '+0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E+99' +xfmt1781 format 0e114 '\xed\x9e\x85<-87,.35F' -> '0.00000000000000000000000000000000000\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85\xed\x9e\x85' +xfmt1782 format 0E298 '\xe8\xbb\xbe>' -> '0E+298' +xfmt1783 format 36453170645172156864296440114E0 '\xe1\xba\x89>-5f' -> '36453170645172156864296440114' +xfmt1784 format -80038356206829802169213519683E0 '99' -> ' -80038356206829802169213519683' +xfmt1785 format 28960671397668913535164108942E339 ',' -> '2.8960671397668913535164108942E+367' +xfmt1786 format -42232496646746514590886462486E190 '\xe1\xad\x9c>+51f' -> '-422324966467465145908864624860000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1787 format 5992222988531548170849321228583394041454E0 '\xe3\xa5\xaa= 36' -> ' 5992222988531548170849321228583394041454' +xfmt1788 format -8852002317762847277526669045094053689040e0 '\xe4\x85\xb2>,.4e' -> '-8.8520e+39' +xfmt1789 format 3229577177154777818831279111275158870776E321 '\xe2\xaf\xb5>5,' -> '3.229577177154777818831279111275158870776E+360' +xfmt1790 format -5985492638219867842714598366857529212647E200 '\xe7\x85\x81>-66,G' -> '\xe7\x85\x81\xe7\x85\x81\xe7\x85\x81\xe7\x85\x81\xe7\x85\x81\xe7\x85\x81\xe7\x85\x81\xe7\x85\x81\xe7\x85\x81\xe7\x85\x81\xe7\x85\x81\xe7\x85\x81\xe7\x85\x81\xe7\x85\x81\xe7\x85\x81\xe7\x85\x81\xe7\x85\x81\xe7\x85\x81\xe7\x85\x81-5.985492638219867842714598366857529212647E+239' +xfmt1791 format 8681e0 '\xef\x87\x80<32' -> '8681\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80\xef\x87\x80' +xfmt1792 format -4579e0 '-0' -> '-4579' +xfmt1793 format 1592e280 '\xe8\x92\x90>-67,.68g' -> '\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x90\xe8\x92\x901.592e+283' +xfmt1794 format -7939E58 '\xeb\x95\xbe^+55' -> '\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe-7.939E+61\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe\xeb\x95\xbe' +xfmt1795 format 7953485024550859348768e0 '\xe2\xb1\xbb=' -> '7953485024550859348768' +xfmt1796 format -9018360729488390268314E0 '\xee\xa8\xa1=-,.21E' -> '-9.018360729488390268314E+21' +xfmt1797 format 5159734515195111524289e289 ' 095,.69g' -> ' 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,005.159734515195111524289e+310' +xfmt1798 format -3236607826055736622732E160 '5.57%' -> '-3236607826055736622732000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000%' +xfmt1799 format 993486538982223182739701396496623993506E0 '' -> '993486538982223182739701396496623993506' +xfmt1800 format -492329605260677448950898666929983065245e0 '\xee\x9a\x84<68.10%' -> '-49232960526067744895089866692998306524500.0000000000%\xee\x9a\x84\xee\x9a\x84\xee\x9a\x84\xee\x9a\x84\xee\x9a\x84\xee\x9a\x84\xee\x9a\x84\xee\x9a\x84\xee\x9a\x84\xee\x9a\x84\xee\x9a\x84\xee\x9a\x84\xee\x9a\x84\xee\x9a\x84' +xfmt1801 format 191838756354791112872991808614631796167e19 '\xeb\x8a\xa4^ 12,' -> ' 1.91838756354791112872991808614631796167E+57' +xfmt1802 format -440666700532843534093315724818012556265E260 '.27' -> '-4.40666700532843534093315725E+298' +xfmt1803 format 67593080685732254942957671988759131590e0 '\xee\x88\xbc<,' -> '67,593,080,685,732,254,942,957,671,988,759,131,590' +xfmt1804 format -67609641300489566788363347159481882693e0 '' -> '-67609641300489566788363347159481882693' +xfmt1805 format 19957111984018058427730554854947928768E29 '\xeb\xaa\x8d>+F' -> '+1995711198401805842773055485494792876800000000000000000000000000000' +xfmt1806 format -88629859808129391871778821229976399216E190 '0,' -> '-8.8629859808129391871778821229976399216E+227' +xfmt1807 format 339976133956778724332465914E0 '' -> '339976133956778724332465914' +xfmt1808 format -614440692587887110850940545E0 '+,' -> '-614,440,692,587,887,110,850,940,545' +xfmt1809 format 478348535090153863870098907e114 '\xef\x8f\x9f=57.3E' -> '\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f\xef\x8f\x9f4.783E+140' +xfmt1810 format -372813193085123610320507486e309 '-94.42g' -> ' -3.72813193085123610320507486e+335' +xfmt1811 format 5304717585798203436999697825182887066310782E0 '.65' -> '5304717585798203436999697825182887066310782' +xfmt1812 format -2720424962243414249465654269881820255378246E0 '\xec\x9e\xa2=20' -> '-2720424962243414249465654269881820255378246' +xfmt1813 format 6271219902747610146190414169072367774003554e226 '\xe6\x8d\xb2= .67' -> ' 6.271219902747610146190414169072367774003554E+268' +xfmt1814 format -4188472337510569547417084181358277112678303e236 '\xe1\xbd\xb9<%' -> '-41884723375105695474170841813582771126783030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1815 format 1293652623917663787497741310326910791e0 '\xe9\x94\xb2>' -> '1293652623917663787497741310326910791' +xfmt1816 format -9072942481974288473161021740702037626e0 '+99.61' -> ' -9072942481974288473161021740702037626' +xfmt1817 format 6322859856191522721294591815605812967e240 '056.63f' -> '6322859856191522721294591815605812967000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000' +xfmt1818 format -9089137469497988577627689859365552121e223 '\xea\xba\xa3=-53,.91E' -> '-9.0891374694979885776276898593655521210000000000000000000000000000000000000000000000000000000E+259' +xfmt1819 format 689519656e0 '\xe4\x91\xa2>-' -> '689519656' +xfmt1820 format -821079038e0 '\xe8\x97\xb7^16.44f' -> '-821079038.00000000000000000000000000000000000000000000' +xfmt1821 format 238461488e248 '068.4G' -> '00000000000000000000000000000000000000000000000000000000002.385E+256' +xfmt1822 format -155840415e268 '35' -> ' -1.55840415E+276' +xfmt1823 format 28182705900147987132696E0 '+015.45' -> '+28182705900147987132696' +xfmt1824 format -26184562425772284001412E0 '\xe5\xb3\xb5< 24,.26f' -> '-26,184,562,425,772,284,001,412.00000000000000000000000000' +xfmt1825 format 63560093616082815755401E136 '' -> '6.3560093616082815755401E+158' +xfmt1826 format -47607678766891889514730E1 '' -> '-4.7607678766891889514730E+23' +xfmt1827 format 4877418967292022516090543212571E0 '\xea\xa6\x98< .30' -> ' 4.87741896729202251609054321257E+30' +xfmt1828 format -4096182245710628014053817600686e0 '' -> '-4096182245710628014053817600686' +xfmt1829 format 8081358118343792334832056600422E277 '\xeb\xb4\xa7^+.25g' -> '+8.081358118343792334832057e+307' +xfmt1830 format -7179794283681136826733504593056e207 '\xe4\xb7\x82^+54.2e' -> '\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82-7.18e+237\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82\xe4\xb7\x82' +xfmt1831 format 123456789012345678.1234567890123456 '\xdc\x92^+.94F' -> '+123456789012345678.1234567890123456000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1832 format -1.1234567890123456789012 '\xea\x90\x82>+96,.34e' -> '\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82\xea\x90\x82-1.1234567890123456789012000000000000e+0' +xfmt1833 format 513889057680E0 '' -> '513889057680' +xfmt1834 format -629137792563e0 '\xee\xa2\x8e> 89,.5' -> '\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e\xee\xa2\x8e-6.2914E+11' +xfmt1835 format 509175278356E272 '\xe2\xa4\xbe=21,.79f' -> '50,917,527,835,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1836 format -912810381393E265 '' -> '-9.12810381393E+276' +xfmt1837 format 95562E0 '\xef\x9a\x97=-90,.14e' -> '\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x97\xef\x9a\x979.55620000000000e+4' +xfmt1838 format -52255e0 '+95,' -> ' -52,255' +xfmt1839 format 86430E310 '\xdd\x9b>+5,.46g' -> '+8.6430e+314' +xfmt1840 format -48405e88 'g' -> '-4.8405e+92' +xfmt1841 format 163660819542849772156403324219154795781E0 'G' -> '163660819542849772156403324219154795781' +xfmt1842 format -474898225202834331524991672889894002429E0 '\xe7\xa2\x81> 68,.56G' -> '\xe7\xa2\x81\xe7\xa2\x81\xe7\xa2\x81\xe7\xa2\x81\xe7\xa2\x81\xe7\xa2\x81\xe7\xa2\x81\xe7\xa2\x81\xe7\xa2\x81\xe7\xa2\x81\xe7\xa2\x81\xe7\xa2\x81\xe7\xa2\x81\xe7\xa2\x81\xe7\xa2\x81\xe7\xa2\x81-474,898,225,202,834,331,524,991,672,889,894,002,429' +xfmt1843 format 218088806422949931985926003013868143887e1 '\xec\x9e\xb4=.88' -> '2.18088806422949931985926003013868143887E+39' +xfmt1844 format -809148064871204926497226529707916821596e152 '' -> '-8.09148064871204926497226529707916821596E+190' +xfmt1845 format 58219830405131168154258814933236e0 '+028,.45' -> '+58,219,830,405,131,168,154,258,814,933,236' +xfmt1846 format -91974776865879284281343484993863E0 '\xe2\x88\x9e<32e' -> '-9.1974776865879284281343484993863e+31' +xfmt1847 format 62649504676167916308932569273503E253 '\xef\x91\x98>-42,.6G' -> '\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x98\xef\x91\x986.26495E+284' +xfmt1848 format -89063322011394509110844086986086E367 '\xe2\x86\x9c>54.63E' -> '-8.906332201139450911084408698608600000000000000000000000000000000E+398' +xfmt1849 format 6426943446416098238673517E0 '\xe1\xb0\x8d^+94,.98' -> '\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d+6,426,943,446,416,098,238,673,517\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d\xe1\xb0\x8d' +xfmt1850 format -6016182195914869434105126E0 '' -> '-6016182195914869434105126' +xfmt1851 format 5467375982235186875537200E210 '58' -> ' 5.467375982235186875537200E+234' +xfmt1852 format -2805395691441801210492953e251 '\xed\x8c\xbc=' -> '-2.805395691441801210492953E+275' +xfmt1853 format 966909958903376919030552864688293029654641E0 '072.91' -> '000000000000000000000000000000966909958903376919030552864688293029654641' +xfmt1854 format -817165179448049781682468303340542286282424e0 '\xe1\x9b\xb7^-66,.97F' -> '-817,165,179,448,049,781,682,468,303,340,542,286,282,424.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1855 format 681996352215566572996536844828002616310658e91 '\xe7\xb6\x93< 71,.71' -> ' 6.81996352215566572996536844828002616310658E+132\xe7\xb6\x93\xe7\xb6\x93\xe7\xb6\x93\xe7\xb6\x93\xe7\xb6\x93\xe7\xb6\x93\xe7\xb6\x93\xe7\xb6\x93\xe7\xb6\x93\xe7\xb6\x93\xe7\xb6\x93\xe7\xb6\x93\xe7\xb6\x93\xe7\xb6\x93\xe7\xb6\x93\xe7\xb6\x93\xe7\xb6\x93\xe7\xb6\x93\xe7\xb6\x93\xe7\xb6\x93\xe7\xb6\x93\xe7\xb6\x93' +xfmt1856 format -393818952285572310805005705802152402457853E116 '\xe2\x96\xb2<38,.37' -> '-3.938189522855723108050057058021524025E+157' +xfmt1857 format 50447191498689451359E0 '\xe0\xa9\x8e< ,' -> ' 50,447,191,498,689,451,359' +xfmt1858 format -94594453178686135791E0 '\xe1\x87\xaf<+2,.76' -> '-94,594,453,178,686,135,791' +xfmt1859 format 97374814661068188371E155 '+0,.25f' -> '+9,737,481,466,106,818,837,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000' +xfmt1860 format -46740926799958367346e330 '-0.22' -> '-4.6740926799958367346E+349' +xfmt1861 format 49741322808467938963831365085451027894e0 '\xe6\xb9\x99^.94F' -> '49741322808467938963831365085451027894.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1862 format -30700151622725230828376422181218218744e0 '\xe9\xa3\x8f^-34,.29E' -> '-3.07001516227252308283764221812E+37' +xfmt1863 format 35976902868811625843537935823590397190E247 '\xe3\xb4\x91= 99,f' -> ' 359,769,028,688,116,258,435,379,358,235,903,971,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt1864 format -22928337561596023239065804360083536709E128 '\xe6\xaa\x9e>57' -> '\xe6\xaa\x9e\xe6\xaa\x9e\xe6\xaa\x9e\xe6\xaa\x9e\xe6\xaa\x9e\xe6\xaa\x9e\xe6\xaa\x9e\xe6\xaa\x9e\xe6\xaa\x9e\xe6\xaa\x9e\xe6\xaa\x9e\xe6\xaa\x9e-2.2928337561596023239065804360083536709E+165' +xfmt1865 format 0e0 '89e' -> ' 0e+0' +xfmt1866 format 0e0 '\xe5\xaa\xb3= ,.57G' -> ' 0' +xfmt1867 format 0E260 '099,.3' -> '00,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000E+260' +xfmt1868 format 0e346 '47' -> ' 0E+346' +xfmt1869 format 5945449292420718697669893709644112189572E0 '16.68' -> '5945449292420718697669893709644112189572' +xfmt1870 format -3321607166140545258626387201904088180954E0 '+' -> '-3321607166140545258626387201904088180954' +xfmt1871 format 3547114714125419027163186627718128034395E97 '\xe7\x96\xa8> ,e' -> ' 3.547114714125419027163186627718128034395e+136' +xfmt1872 format -8498310757428719875573431172003029915372e188 '\xe3\xac\xa1=-92,G' -> '-\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa1\xe3\xac\xa18.498310757428719875573431172003029915372E+227' +xfmt1873 format 263329943015631827427821156e0 '7' -> '263329943015631827427821156' +xfmt1874 format -109175957925422711689899562E0 '\xe7\x9a\x8d<,G' -> '-109,175,957,925,422,711,689,899,562' +xfmt1875 format 939643491461018394330442809e190 '011' -> '9.39643491461018394330442809E+216' +xfmt1876 format -162262002285352914336205844e346 '\xe1\x83\xb8< 15,' -> '-1.62262002285352914336205844E+372' +xfmt1877 format 610527553541194267086E0 '+05,.16E' -> '+6.1052755354119427E+20' +xfmt1878 format -481848575370256027996e0 '' -> '-481848575370256027996' +xfmt1879 format 444942944935038085816e61 '46%' -> '444942944935038085816000000000000000000000000000000000000000000000000000000000000000%' +xfmt1880 format -187705160732756567277E227 '\xe4\xb8\xa2<-21,.74E' -> '-1.87705160732756567277000000000000000000000000000000000000000000000000000000E+247' +xfmt1881 format 31E0 '' -> '31' +xfmt1882 format -34e0 '-0,e' -> '-3.4e+1' +xfmt1883 format 93e290 '' -> '9.3E+291' +xfmt1884 format -75E289 '\xee\xa4\xb1< 76,.77g' -> '-7.5e+290\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1\xee\xa4\xb1' +xfmt1885 format 56191251477568553E0 '\xe9\x87\xb2> 31g' -> '\xe9\x87\xb2\xe9\x87\xb2\xe9\x87\xb2\xe9\x87\xb2\xe9\x87\xb2\xe9\x87\xb2\xe9\x87\xb2\xe9\x87\xb2\xe9\x87\xb2\xe9\x87\xb2\xe9\x87\xb2\xe9\x87\xb2\xe9\x87\xb2 56191251477568553' +xfmt1886 format -81586181837105152e0 '\xef\xa3\x8e^-.81n' -> '-81586181837105152' +xfmt1887 format 78300122962459488E110 '\xe5\x9a\xbc<-,%' -> '783,001,229,624,594,880,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt1888 format -94869655094873280E219 '\xe6\x83\x9d^.83' -> '-9.4869655094873280E+235' +xfmt1889 format 43386637715278421770588769685717332125076404e0 '\xea\xad\xa1>E' -> '4.3386637715278421770588769685717332125076404E+43' +xfmt1890 format -60908028301420580015417260534220053423522794E0 '\xec\xb2\xa5=+1,G' -> '-60,908,028,301,420,580,015,417,260,534,220,053,423,522,794' +xfmt1891 format 32878653964588328077070527488924439295512818e21 '\xe2\xa6\x9e^ 48,.26' -> '\xe2\xa6\x9e\xe2\xa6\x9e\xe2\xa6\x9e\xe2\xa6\x9e\xe2\xa6\x9e\xe2\xa6\x9e\xe2\xa6\x9e\xe2\xa6\x9e 3.2878653964588328077070527E+64\xe2\xa6\x9e\xe2\xa6\x9e\xe2\xa6\x9e\xe2\xa6\x9e\xe2\xa6\x9e\xe2\xa6\x9e\xe2\xa6\x9e\xe2\xa6\x9e' +xfmt1892 format -36838999441282015755506595890334046401941127e70 '\xe9\x96\xb0>-' -> '-3.6838999441282015755506595890334046401941127E+113' +xfmt1893 format 6547E0 '0' -> '6547' +xfmt1894 format -7878E0 '\xe8\xbc\xbf^+99.67E' -> '\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf-7.8780000000000000000000000000000000000000000000000000000000000000000E+3\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf\xe8\xbc\xbf' +xfmt1895 format 6075E109 '\xe8\xb9\x95^ .64%' -> ' 6075000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000%' +xfmt1896 format -4323E201 '\xe7\x8b\x87<74' -> '-4.323E+204\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87' +xfmt1897 format 93436376347647347115320571880e0 '+,E' -> '+9.3436376347647347115320571880E+28' +xfmt1898 format -14078698468443294245364867314E0 '\xef\x9e\xbe=95,.64%' -> '-1,407,869,846,844,329,424,536,486,731,400.0000000000000000000000000000000000000000000000000000000000000000%' +xfmt1899 format 33065310352047909754021957447e140 'f' -> '3306531035204790975402195744700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1900 format -33864544981471257233671500052E339 '' -> '-3.3864544981471257233671500052E+367' +xfmt1901 format 7430294087019461384447425622e0 '\xed\x8f\xa7^-,g' -> '7,430,294,087,019,461,384,447,425,622' +xfmt1902 format -7842198981009536005684765628e0 ' ' -> '-7842198981009536005684765628' +xfmt1903 format 6534535052138092914648079429e275 '87,' -> ' 6.534535052138092914648079429E+302' +xfmt1904 format -4541952941016410808928946168E332 '' -> '-4.541952941016410808928946168E+359' +xfmt1905 format 7208631916224165451932992582502499113e0 '\xec\xb7\xb6<+4,%' -> '+720,863,191,622,416,545,193,299,258,250,249,911,300%' +xfmt1906 format -6884842056519886656511365195382247684E0 '\xe8\xbf\x9f^ ' -> '-6884842056519886656511365195382247684' +xfmt1907 format 8292820193956778472367745004553529484E368 '' -> '8.292820193956778472367745004553529484E+404' +xfmt1908 format -3772472492993573152806936938771831124E195 '0G' -> '-3.772472492993573152806936938771831124E+231' +xfmt1909 format 996769E0 '-.1' -> '1E+6' +xfmt1910 format -616283E0 ' 014,.95F' -> '-616,283.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1911 format 631937E367 '\xef\xa5\xaa^ 66.25n' -> '\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa 6.31937e+372\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa\xef\xa5\xaa' +xfmt1912 format -948196e17 '\xe3\xa8\x9b<-99,.14' -> '-9.48196E+22\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b\xe3\xa8\x9b' +xfmt1913 format 58289184732283e0 '' -> '58289184732283' +xfmt1914 format -46826932016552E0 '\xef\xbf\x89<76,.48' -> '-46,826,932,016,552\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89\xef\xbf\x89' +xfmt1915 format 40625314204486e304 '\xc2\xbc= 32,' -> ' \xc2\xbc\xc2\xbc\xc2\xbc\xc2\xbc\xc2\xbc\xc2\xbc\xc2\xbc\xc2\xbc\xc2\xbc\xc2\xbc\xc2\xbc4.0625314204486E+317' +xfmt1916 format -48598168738270E312 ' %' -> '-4859816873827000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1917 format 8e0 '%' -> '800%' +xfmt1918 format -2e0 '\xea\x83\xaa=25,.42G' -> '-\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa\xea\x83\xaa2' +xfmt1919 format 8e339 '-09,.7E' -> '8.0000000E+339' +xfmt1920 format -9E291 '' -> '-9E+291' +xfmt1921 format 70579237238351532065010113289981156900226E0 '\xeb\x86\x84^+90,.39E' -> '\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84+7.057923723835153206501011328998115690023E+40\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84\xeb\x86\x84' +xfmt1922 format -97074016261873760708978815963925601564729e0 '46,f' -> '-97,074,016,261,873,760,708,978,815,963,925,601,564,729' +xfmt1923 format 63816029930658590639426848524138744973583e59 '\xe8\x86\xae=+92,.71F' -> '+6,381,602,993,065,859,063,942,684,852,413,874,497,358,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1924 format -67510401663289022522114807500689802942307e372 ' 0%' -> '-6751040166328902252211480750068980294230700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1925 format 80940229E0 '\xe9\xbe\x90>87,.94F' -> '80,940,229.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1926 format -48703390e0 '\xe1\x95\xb7^' -> '-48703390' +xfmt1927 format 92317419e148 ',' -> '9.2317419E+155' +xfmt1928 format -88461109e300 '\xe2\xa4\xad>+6,G' -> '-8.8461109E+307' +xfmt1929 format 303E0 '-0F' -> '303' +xfmt1930 format -783e0 '\xe4\x8a\xae=9.65' -> '-\xe4\x8a\xae\xe4\x8a\xae\xe4\x8a\xae\xe4\x8a\xae\xe4\x8a\xae783' +xfmt1931 format 741E299 '0n' -> '7.41e+301' +xfmt1932 format -372e254 '' -> '-3.72E+256' +xfmt1933 format 740878183E0 '-64,.15F' -> ' 740,878,183.000000000000000' +xfmt1934 format -209016197E0 '\xe4\xbf\xbc=-84G' -> '-\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc\xe4\xbf\xbc209016197' +xfmt1935 format 437305837e195 '\xe5\x91\xb8>+43n' -> '\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8\xe5\x91\xb8+4.37305837e+203' +xfmt1936 format -385883694E254 '\xe6\xb8\x9f< 40,.7%' -> '-3,858,836,940,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000%' +xfmt1937 format 75139426456e0 '086,F' -> '00,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,075,139,426,456' +xfmt1938 format -96692728876e0 'f' -> '-96692728876' +xfmt1939 format 61604117372e288 'e' -> '6.1604117372e+298' +xfmt1940 format -96355459099E312 '.84E' -> '-9.635545909900000000000000000000000000000000000000000000000000000000000000000000000000E+322' +xfmt1941 format 42573046774904810192774E0 '\xe3\xb3\x9b< ,.51g' -> ' 42,573,046,774,904,810,192,774' +xfmt1942 format -22347530985078013301767E0 '58' -> ' -22347530985078013301767' +xfmt1943 format 65485183628956478737339e287 '\xe7\xa1\xa2> ,.93F' -> ' 6,548,518,362,895,647,873,733,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1944 format -41425337517562604417462E114 ',%' -> '-4,142,533,751,756,260,441,746,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt1945 format 9189648795e0 '' -> '9189648795' +xfmt1946 format -4974998352e0 '+27' -> ' -4974998352' +xfmt1947 format 4076116287E236 '81' -> ' 4.076116287E+245' +xfmt1948 format -2123165478E361 '\xe8\x8c\x9e^-85,.4' -> '\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e-2.123E+370\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e\xe8\x8c\x9e' +xfmt1949 format 842375386409826e0 '\xe8\x89\xaf^ 61,.28G' -> '\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf 842,375,386,409,826\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf\xe8\x89\xaf' +xfmt1950 format -478905290220143e0 '\xeb\x9f\xa2=,' -> '-478,905,290,220,143' +xfmt1951 format 311458938757707e98 '\xe0\xb1\x9a< 18,.41' -> ' 3.11458938757707E+112' +xfmt1952 format -369621370054084e148 '\xec\xac\x82^,' -> '-3.69621370054084E+162' +xfmt1953 format 12345678901234567890.1 '\xef\x98\x9c< 12,.34F' -> ' 12,345,678,901,234,567,890.1000000000000000000000000000000000' +xfmt1954 format -1234567890123456789012.123 '024.97' -> '-1234567890123456789012.123' +xfmt1955 format 292001574899165261780685190791808473275E0 '\xea\x8a\xab^31.77n' -> '292001574899165261780685190791808473275' +xfmt1956 format -831271591578454177417254506272795479704E0 '\xe6\x84\x96=,.5e' -> '-8.31272e+38' +xfmt1957 format 841757158197445676620004389771103482004E378 '-0,.55' -> '8.41757158197445676620004389771103482004E+416' +xfmt1958 format -845971154982530390597272642797169480046E176 '\xef\xbd\x8b> ,.33' -> '-8.45971154982530390597272642797169E+214' +xfmt1959 format 8E0 '\xe4\xae\xa5>.87' -> '8' +xfmt1960 format -5e0 '0' -> '-5' +xfmt1961 format 2E81 '\xe6\x9c\xb0< 17,f' -> ' 2,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt1962 format -3E38 '-' -> '-3E+38' +xfmt1963 format 5244879885003119546688732058E0 '\xe3\x8a\xae> ,.68f' -> ' 5,244,879,885,003,119,546,688,732,058.00000000000000000000000000000000000000000000000000000000000000000000' +xfmt1964 format -1795108769133662068226246801E0 '\xe5\xaa\x8f=,' -> '-1,795,108,769,133,662,068,226,246,801' +xfmt1965 format 8526315380407010197035290669E212 '81,.98G' -> ' 8.526315380407010197035290669E+239' +xfmt1966 format -4518446342853493123215127559e173 '\xef\x9a\x8a^n' -> '-4.518446342853493123215127559e+200' +xfmt1967 format 588617422741621860382212106E0 '\xed\x9c\x8d^-68,.7f' -> '\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d588,617,422,741,621,860,382,212,106.0000000\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d\xed\x9c\x8d' +xfmt1968 format -291497929163286535973276858E0 '\xe9\x90\xa0=-33,.56G' -> '-291,497,929,163,286,535,973,276,858' +xfmt1969 format 728039285985752932291744741e162 '\xe4\x9c\x9d< 25,.69g' -> ' 7.28039285985752932291744741e+188' +xfmt1970 format -725156884917915174751462508e122 ' ' -> '-7.25156884917915174751462508E+148' +xfmt1971 format 965390785316371e0 '\xe8\xbe\x9c^97,.43' -> '\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c965,390,785,316,371\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c\xe8\xbe\x9c' +xfmt1972 format -200160824279308E0 ' 86,.85' -> ' -200,160,824,279,308' +xfmt1973 format 307820997644984E158 '\xeb\x8c\x82^66%' -> '3078209976449840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt1974 format -324880828689005E320 '\xe4\x85\xb6<+97,.25E' -> '-3.2488082868900500000000000E+334\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6\xe4\x85\xb6' +xfmt1975 format 94926587067364097654959E0 '\xec\xa2\x83= ,.92G' -> ' 94,926,587,067,364,097,654,959' +xfmt1976 format -14631159153474493936131e0 '\xe7\x96\xbb< 91' -> '-14631159153474493936131\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb\xe7\x96\xbb' +xfmt1977 format 57325725636143679269640e54 '\xee\x9c\x84^ 40,f' -> ' 57,325,725,636,143,679,269,640,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt1978 format -68334641080922296870343E146 '81,' -> ' -6.8334641080922296870343E+168' +xfmt1979 format 40462567549854798e0 ',.39' -> '40,462,567,549,854,798' +xfmt1980 format -53713951729732936e0 '\xec\x84\x87^ 14.11f' -> '-53713951729732936.00000000000' +xfmt1981 format 26764961656689218e172 '093F' -> '267649616566892180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1982 format -16506555046647529E290 '0.92G' -> '-1.6506555046647529E+306' +xfmt1983 format 5135687535347779528320423592036892416375e0 '0E' -> '5.135687535347779528320423592036892416375E+39' +xfmt1984 format -3600964478549990137185847509231224868922e0 '018,.32e' -> '-3.60096447854999013718584750923122e+39' +xfmt1985 format 8127716460579075910131503961257403801702e344 '\xe8\xa3\x8e^,.90F' -> '812,771,646,057,907,591,013,150,396,125,740,380,170,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt1986 format -7770916097931960314134749317307551586947E263 '\xe5\xb2\x8d>94,.40e' -> '\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d\xe5\xb2\x8d-7.7709160979319603141347493173075515869470e+302' +xfmt1987 format 688428125e0 '\xe9\x9d\x98^F' -> '688428125' +xfmt1988 format -704925114E0 '\xe8\x80\xba=.22%' -> '-70492511400.0000000000000000000000%' +xfmt1989 format 698917136E326 '\xef\xbe\x93>+36,.58e' -> '+6.9891713600000000000000000000000000000000000000000000000000e+334' +xfmt1990 format -144558574E167 ',E' -> '-1.44558574E+175' +xfmt1991 format 10430872204545e0 '\xed\x8d\xb3> ,' -> ' 10,430,872,204,545' +xfmt1992 format -30767216754204e0 '\xe6\xb8\xbe= 54,F' -> '-\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe\xe6\xb8\xbe30,767,216,754,204' +xfmt1993 format 20644282650680E283 '\xe6\xb3\xbe^e' -> '2.0644282650680e+296' +xfmt1994 format -39077132118535e237 '67,%' -> '-3,907,713,211,853,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt1995 format 377672E0 '' -> '377672' +xfmt1996 format -104985E0 '\xeb\x9f\x90> 6.80e' -> '-1.04985000000000000000000000000000000000000000000000000000000000000000000000000000e+5' +xfmt1997 format 252049E56 '\xea\xb7\xa7< ,.34e' -> ' 2.5204900000000000000000000000000000e+61' +xfmt1998 format -933159E5 '\xe9\xb0\x85>-,.32F' -> '-93,315,900,000.00000000000000000000000000000000' +xfmt1999 format 243971806727570789e0 '-08,.27g' -> '243,971,806,727,570,789' +xfmt2000 format -857874748528912387e0 ',e' -> '-8.57874748528912387e+17' +xfmt2001 format 376485071311071148e368 '063' -> '0000000000000000000000000000000000000003.76485071311071148E+385' +xfmt2002 format -234666577858080001E210 '-0.59' -> '-2.34666577858080001E+227' +xfmt2003 format 57403581308E0 '\xe2\x93\xbd^-41,.77G' -> '\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd57,403,581,308\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd\xe2\x93\xbd' +xfmt2004 format -89770817509e0 '\xec\x87\x9a<5' -> '-89770817509' +xfmt2005 format 91222142629e121 '\xe1\x8b\x95^ 64,.70%' -> ' 91,222,142,629,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt2006 format -81330170900E31 '0,.88f' -> '-813,301,709,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2007 format 5779727610242256513408614E0 '\xe7\x88\xa2=' -> '5779727610242256513408614' +xfmt2008 format -7444629084748246578570198e0 ' 071,' -> '-00,000,000,000,000,000,000,000,000,007,444,629,084,748,246,578,570,198' +xfmt2009 format 5177756088801542361524623e307 ' 08,.51g' -> ' 5.177756088801542361524623e+331' +xfmt2010 format -4392877154928743166985850e75 '\xed\x8d\xb3=+7,g' -> '-4.392877154928743166985850e+99' +xfmt2011 format 18323E0 '\xe2\xa3\x96^ 1,.15e' -> ' 1.832300000000000e+4' +xfmt2012 format -18075e0 '0.20' -> '-18075' +xfmt2013 format 98221e231 '\xec\x8f\x98^ .50' -> ' 9.8221E+235' +xfmt2014 format -72630e141 ' .64E' -> '-7.2630000000000000000000000000000000000000000000000000000000000000E+145' +xfmt2015 format 515054016056700506882307692032e0 '\xe7\x80\x9b^ 89,.13f' -> '\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b 515,054,016,056,700,506,882,307,692,032.0000000000000\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b\xe7\x80\x9b' +xfmt2016 format -340348703658384460784825519853e0 '' -> '-340348703658384460784825519853' +xfmt2017 format 379971388650406066127730785192E142 '\xe0\xa9\xb6<-71,.10' -> '3.799713887E+171\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6\xe0\xa9\xb6' +xfmt2018 format -534452754186028291005227015911E328 '\xe5\x84\x89>+37,.26%' -> '-534,452,754,186,028,291,005,227,015,911,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000%' +xfmt2019 format 3607558587416485677432772066503e0 '+029,.70' -> '+3,607,558,587,416,485,677,432,772,066,503' +xfmt2020 format -8103932326297982519818942244412e0 '-' -> '-8103932326297982519818942244412' +xfmt2021 format 9841454136517403571825857636608E165 '\xe2\xb2\x8b=+.63' -> '+9.841454136517403571825857636608E+195' +xfmt2022 format -6424810971049598075372820260281e253 '98f' -> '-64248109710495980753728202602810000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2023 format 141390546335723838920074681579325103E0 ' ,.13' -> ' 1.413905463357E+35' +xfmt2024 format -624432503785822200819897864059260173e0 '+' -> '-624432503785822200819897864059260173' +xfmt2025 format 773223656473364135389892015022702514e163 '\xd5\x9f> 17.29n' -> ' 7.7322365647336413538989201502e+198' +xfmt2026 format -887550816899636364028582388567919290E223 'E' -> '-8.87550816899636364028582388567919290E+258' +xfmt2027 format 836527195973e0 '\xe5\xb3\x93=90,.51' -> '\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93\xe5\xb3\x93836,527,195,973' +xfmt2028 format -627176448592e0 '\xe2\xb8\x9f^-87,.3g' -> '\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f-6.27e+11\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f\xe2\xb8\x9f' +xfmt2029 format 975123200447E145 '.3' -> '9.75E+156' +xfmt2030 format -454579668794e42 '+091F' -> '-000000000000000000000000000000000000454579668794000000000000000000000000000000000000000000' +xfmt2031 format 739871981610853196730604985065453E0 '37' -> ' 739871981610853196730604985065453' +xfmt2032 format -618784090893363448360988100043859E0 '-54' -> ' -618784090893363448360988100043859' +xfmt2033 format 646137605034013055190606155035330e180 '+0,' -> '+6.46137605034013055190606155035330E+212' +xfmt2034 format -530036227525242501877458388230559E200 '0,G' -> '-5.30036227525242501877458388230559E+232' +xfmt2035 format 723124548447650067287E0 '\xeb\xa6\x91>' -> '723124548447650067287' +xfmt2036 format -824360732715485078552E0 '' -> '-824360732715485078552' +xfmt2037 format 592962140621537252028E239 '+0,.60' -> '+5.92962140621537252028E+259' +xfmt2038 format -569144900582627208917E319 '0.55' -> '-5.69144900582627208917E+339' +xfmt2039 format 36519610301757612160129418941968910528E0 '' -> '36519610301757612160129418941968910528' +xfmt2040 format -99233843326567601764230697785445056019e0 ' 0' -> '-99233843326567601764230697785445056019' +xfmt2041 format 21399123181585541564050757257965063850E240 '+' -> '+2.1399123181585541564050757257965063850E+277' +xfmt2042 format -52845550066797236564268551275474608533E216 '088.8F' -> '-52845550066797236564268551275474608533000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000' +xfmt2043 format 706045762377549051174506e0 '\xe6\x9a\xa4>+58,G' -> '\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4\xe6\x9a\xa4+706,045,762,377,549,051,174,506' +xfmt2044 format -362201982794493951944848e0 '\xea\xbd\xa1^2.11G' -> '-3.6220198279E+23' +xfmt2045 format 407429090286950751696599E372 '\xeb\x8d\x9a=.96f' -> '407429090286950751696599000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2046 format -119075790457006125458044e170 '64,' -> ' -1.19075790457006125458044E+193' +xfmt2047 format 457709862720401505574031182565513721295620E0 '0,e' -> '4.57709862720401505574031182565513721295620e+41' +xfmt2048 format -191804743055306595718627948057908769446337E0 '\xe1\xb7\x86>25,.74F' -> '-191,804,743,055,306,595,718,627,948,057,908,769,446,337.00000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2049 format 959803167919954158764862845813815830958453e163 '\xec\x8e\xa7= 52,.62%' -> ' 959,803,167,919,954,158,764,862,845,813,815,830,958,453,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000%' +xfmt2050 format -570326905102419820671372196760889500626054e126 ',E' -> '-5.70326905102419820671372196760889500626054E+167' +xfmt2051 format 8171593950153173153700891374164733022E0 '\xe7\xb7\xac< 70,.48g' -> ' 8,171,593,950,153,173,153,700,891,374,164,733,022\xe7\xb7\xac\xe7\xb7\xac\xe7\xb7\xac\xe7\xb7\xac\xe7\xb7\xac\xe7\xb7\xac\xe7\xb7\xac\xe7\xb7\xac\xe7\xb7\xac\xe7\xb7\xac\xe7\xb7\xac\xe7\xb7\xac\xe7\xb7\xac\xe7\xb7\xac\xe7\xb7\xac\xe7\xb7\xac\xe7\xb7\xac\xe7\xb7\xac\xe7\xb7\xac\xe7\xb7\xac' +xfmt2052 format -6375560728586501763920968758999884374E0 '.80' -> '-6375560728586501763920968758999884374' +xfmt2053 format 9426019293658054298030026482388262931e136 '\xe7\x92\xa0= 26,.70G' -> ' 9.426019293658054298030026482388262931E+172' +xfmt2054 format -2239411391402833641776014109426720599E297 '\xef\xba\x81=+,.99f' -> '-2,239,411,391,402,833,641,776,014,109,426,720,599,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2055 format 41110055806536818453368128549264910868533316E0 'G' -> '41110055806536818453368128549264910868533316' +xfmt2056 format -16256102809435783844704603816325327702532825e0 '\xe1\x82\x9b=+71,.48%' -> '-1,625,610,280,943,578,384,470,460,381,632,532,770,253,282,500.000000000000000000000000000000000000000000000000%' +xfmt2057 format 19869655536390294830426035599663592118284008e96 '+6.61g' -> '+1.9869655536390294830426035599663592118284008e+139' +xfmt2058 format -79237377142172033422492879816716611142559555e109 '\xe6\xb6\xa3^42,.88' -> '-7.9237377142172033422492879816716611142559555E+152' +xfmt2059 format 8436527e0 '\xe7\x97\x90> 38,.71F' -> ' 8,436,527.00000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2060 format -6146473E0 '' -> '-6146473' +xfmt2061 format 6073100e99 '\xe9\xa4\x90^ 11,.55e' -> ' 6.0731000000000000000000000000000000000000000000000000000e+105' +xfmt2062 format -3838457E7 ' 23,e' -> ' -3.838457e+13' +xfmt2063 format 8255532669109966257152e0 '75n' -> ' 8255532669109966257152' +xfmt2064 format -3163097839011654768194e0 '\xed\x8c\xb1<56.5G' -> '-3.1631E+21\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1\xed\x8c\xb1' +xfmt2065 format 2958720020464201065047e355 '\xe1\x9e\xa2>+4,.74G' -> '+2.958720020464201065047E+376' +xfmt2066 format -2823762137951717435134E316 '\xe1\x9f\xab^-74,F' -> '-28,237,621,379,517,174,351,340,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt2067 format 58106960E0 '\xea\x80\x92^ 67,.44' -> '\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92 58,106,960\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92\xea\x80\x92' +xfmt2068 format -69216253e0 '07%' -> '-6921625300%' +xfmt2069 format 99238277E302 '085G' -> '000000000000000000000000000000000000000000000000000000000000000000000009.9238277E+309' +xfmt2070 format -53168166E255 '+0' -> '-5.3168166E+262' +xfmt2071 format 3607168046461E0 '' -> '3607168046461' +xfmt2072 format -7654805194690E0 '\xe1\x93\xb3^' -> '-7654805194690' +xfmt2073 format 8183946379037E120 '-,' -> '8.183946379037E+132' +xfmt2074 format -5174782483173e164 '\xec\x82\xaa<' -> '-5.174782483173E+176' +xfmt2075 format 123456789012.123456 '\xe9\x97\xaf>' -> '123456789012.123456' +xfmt2076 format -12345.123 '\xef\xb6\x99> 20,.2E' -> '\xef\xb6\x99\xef\xb6\x99\xef\xb6\x99\xef\xb6\x99\xef\xb6\x99\xef\xb6\x99\xef\xb6\x99\xef\xb6\x99\xef\xb6\x99\xef\xb6\x99\xef\xb6\x99\xef\xb6\x99-1.23E+4' +xfmt2077 format 95266043770014E0 '\xe6\x9b\xbd> ,' -> ' 95,266,043,770,014' +xfmt2078 format -13865743851286e0 'n' -> '-13865743851286' +xfmt2079 format 64252934822315e35 '\xe6\xac\xb2>+13.91' -> '+6.4252934822315E+48' +xfmt2080 format -26691403219651E325 ' 0G' -> '-2.6691403219651E+338' +xfmt2081 format 8833171867903118638e0 '\xe5\xb0\x86=E' -> '8.833171867903118638E+18' +xfmt2082 format -8122055519485507010E0 '\xeb\x81\x9d=80.84E' -> '-8.122055519485507010000000000000000000000000000000000000000000000000000000000000000000E+18' +xfmt2083 format 5466454578644787214E80 '' -> '5.466454578644787214E+98' +xfmt2084 format -8564720024700553491e321 '\xee\x82\xb3=-68.58n' -> '-\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb3\xee\x82\xb38.564720024700553491e+339' +xfmt2085 format 365214e0 '' -> '365214' +xfmt2086 format -979624e0 '\xe6\x85\x98^,' -> '-979,624' +xfmt2087 format 887253e224 ',' -> '8.87253E+229' +xfmt2088 format -281214e19 '\xef\xba\x98>12,.73%' -> '-281,214,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt2089 format 203935617798624081972089579773633e0 '\xe4\xb0\x81^-.30%' -> '20393561779862408197208957977363300.000000000000000000000000000000%' +xfmt2090 format -670479796476803449783206255365577E0 '0.89' -> '-670479796476803449783206255365577' +xfmt2091 format 862367548091004932787939874437694E240 '\xe1\x99\x97^+47,.83F' -> '+862,367,548,091,004,932,787,939,874,437,694,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2092 format -678319747662209230186899097141989E175 '\xe3\x89\x82>27' -> '-6.78319747662209230186899097141989E+207' +xfmt2093 format 10215691319640662276361e0 '\xe5\xaf\x81<-50,.43%' -> '1,021,569,131,964,066,227,636,100.0000000000000000000000000000000000000000000%' +xfmt2094 format -55943258702074981738249E0 '\xe6\x84\xbb^ 23.6E' -> '\xe6\x84\xbb\xe6\x84\xbb\xe6\x84\xbb\xe6\x84\xbb\xe6\x84\xbb-5.594326E+22\xe6\x84\xbb\xe6\x84\xbb\xe6\x84\xbb\xe6\x84\xbb\xe6\x84\xbb' +xfmt2095 format 78548728671841424244790E217 '\xea\x8c\xb7^24,' -> '7.8548728671841424244790E+239' +xfmt2096 format -44313036699523862250379E261 '' -> '-4.4313036699523862250379E+283' +xfmt2097 format 143999325029788e0 '\xea\x8d\xb2< 81,.18E' -> ' 1.439993250297880000E+14\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2\xea\x8d\xb2' +xfmt2098 format -953771377764920E0 '\xe5\xb7\x89=+,.3g' -> '-9.54e+14' +xfmt2099 format 562142467791973E325 '.26' -> '5.62142467791973E+339' +xfmt2100 format -535250162877248E106 '-0' -> '-5.35250162877248E+120' +xfmt2101 format 0e0 '-2' -> ' 0' +xfmt2102 format 0e0 ',.77' -> '0' +xfmt2103 format 0e73 '0,.3e' -> '0.000e+76' +xfmt2104 format 0E17 '\xe0\xac\x9e^' -> '0E+17' +xfmt2105 format 59137214768934335218260295549526529289e0 ' .83F' -> ' 59137214768934335218260295549526529289.00000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2106 format -11300997110253121154743766329365022231E0 '\xe0\xab\x9e=93,.65' -> '-\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e\xe0\xab\x9e11,300,997,110,253,121,154,743,766,329,365,022,231' +xfmt2107 format 36571504547406893904170112984970251075e18 '\xe2\x95\xa4>+10,.15E' -> '+3.657150454740689E+55' +xfmt2108 format -52617885352326770757056279094043677112E336 '\xe0\xb5\xb5=+17,.70f' -> '-52,617,885,352,326,770,757,056,279,094,043,677,112,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2109 format 4300492386211070161177338060507261158298390E0 '\xe5\x8d\x88< 29,.40f' -> ' 4,300,492,386,211,070,161,177,338,060,507,261,158,298,390.0000000000000000000000000000000000000000' +xfmt2110 format -5723742112153935518529826453610278395255916E0 '\xe1\x8f\xbe=-' -> '-5723742112153935518529826453610278395255916' +xfmt2111 format 9455534267499072821496974808506345281715741E186 '\xc4\xa5> 51,e' -> '\xc4\xa5 9.455534267499072821496974808506345281715741e+228' +xfmt2112 format -4052075743083482377400989568590444254974142E164 '' -> '-4.052075743083482377400989568590444254974142E+206' +xfmt2113 format 3849419001551e0 '\xe9\xb2\x8a^-95,.95E' -> '3.84941900155100000000000000000000000000000000000000000000000000000000000000000000000000000000000E+12' +xfmt2114 format -9508345033202E0 '\xeb\xb8\x8e^59E' -> '\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e-9.508345033202E+12\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e\xeb\xb8\x8e' +xfmt2115 format 3128098065427E308 '' -> '3.128098065427E+320' +xfmt2116 format -2263970062811E32 '' -> '-2.263970062811E+44' +xfmt2117 format 474100230357498544295e0 '0.33' -> '474100230357498544295' +xfmt2118 format -843711398583385235859e0 '.62' -> '-843711398583385235859' +xfmt2119 format 839408380044287541163e58 '0' -> '8.39408380044287541163E+78' +xfmt2120 format -527848325143721761471e360 '\xe4\x99\xba<+58,.38e' -> '-5.27848325143721761471000000000000000000e+380\xe4\x99\xba\xe4\x99\xba\xe4\x99\xba\xe4\x99\xba\xe4\x99\xba\xe4\x99\xba\xe4\x99\xba\xe4\x99\xba\xe4\x99\xba\xe4\x99\xba\xe4\x99\xba\xe4\x99\xba' +xfmt2121 format 184775863463e0 '' -> '184775863463' +xfmt2122 format -712846227897E0 '88' -> ' -712846227897' +xfmt2123 format 544919176534e367 '\xe2\xa7\xbc=' -> '5.44919176534E+378' +xfmt2124 format -892113911312E162 ' 067,.15' -> '-0,000,000,000,000,000,000,000,000,000,000,000,008.92113911312E+173' +xfmt2125 format 732370267e0 '\xe3\xa2\xae^15,.73f' -> '732,370,267.0000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2126 format -132098382E0 '\xe6\x90\x87>+98,.69F' -> '\xe6\x90\x87\xe6\x90\x87\xe6\x90\x87\xe6\x90\x87\xe6\x90\x87\xe6\x90\x87\xe6\x90\x87\xe6\x90\x87\xe6\x90\x87\xe6\x90\x87\xe6\x90\x87\xe6\x90\x87\xe6\x90\x87\xe6\x90\x87\xe6\x90\x87\xe6\x90\x87-132,098,382.000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2127 format 349788594e61 'g' -> '3.49788594e+69' +xfmt2128 format -715774200E379 '.13' -> '-7.15774200E+387' +xfmt2129 format 8260088627e0 '0,' -> '8,260,088,627' +xfmt2130 format -5427295503E0 '+' -> '-5427295503' +xfmt2131 format 4470889215e329 ',E' -> '4.470889215E+338' +xfmt2132 format -8389728866e193 ',' -> '-8.389728866E+202' +xfmt2133 format 3E0 ' 87,' -> ' 3' +xfmt2134 format -5E0 '\xeb\xb6\x8e> 83,.1F' -> '\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e\xeb\xb6\x8e-5.0' +xfmt2135 format 2E200 '\xe0\xbf\x9d> ,.22F' -> ' 200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000' +xfmt2136 format -2e367 '\xec\xb6\xb0< 33,.53e' -> '-2.00000000000000000000000000000000000000000000000000000e+367' +xfmt2137 format 371051791248887550924282460146025251e0 '12.10F' -> '371051791248887550924282460146025251.0000000000' +xfmt2138 format -903581224000912931813703270961057493E0 '\xe2\x9d\xa5=-16,.83E' -> '-9.03581224000912931813703270961057493000000000000000000000000000000000000000000000000E+35' +xfmt2139 format 376691733846572193760366031575626590E169 '+,.91E' -> '+3.7669173384657219376036603157562659000000000000000000000000000000000000000000000000000000000E+204' +xfmt2140 format -963788797331586688489976757888420102E379 '\xd4\x82<+71.36E' -> '-9.637887973315866884899767578884201020E+414\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82\xd4\x82' +xfmt2141 format 574071612559543959114950673123313030552149e0 '038.47g' -> '574071612559543959114950673123313030552149' +xfmt2142 format -669752217826804421207992082004971286841557e0 '\xeb\xb4\xab^+91.61e' -> '\xeb\xb4\xab\xeb\xb4\xab\xeb\xb4\xab\xeb\xb4\xab\xeb\xb4\xab\xeb\xb4\xab\xeb\xb4\xab\xeb\xb4\xab\xeb\xb4\xab\xeb\xb4\xab\xeb\xb4\xab-6.6975221782680442120799208200497128684155700000000000000000000e+41\xeb\xb4\xab\xeb\xb4\xab\xeb\xb4\xab\xeb\xb4\xab\xeb\xb4\xab\xeb\xb4\xab\xeb\xb4\xab\xeb\xb4\xab\xeb\xb4\xab\xeb\xb4\xab\xeb\xb4\xab\xeb\xb4\xab' +xfmt2143 format 773006641842575348322695105865999428280912e287 '\xe8\x9e\xbc^' -> '7.73006641842575348322695105865999428280912E+328' +xfmt2144 format -745707433987665120029896793982247201709607e323 '' -> '-7.45707433987665120029896793982247201709607E+364' +xfmt2145 format 438111334863967773051772105e0 '1,.65' -> '438,111,334,863,967,773,051,772,105' +xfmt2146 format -598259385368403585861314647e0 '+058' -> '-000000000000000000000000000000598259385368403585861314647' +xfmt2147 format 442167333504499496101494902E328 '\xec\x9e\xb1=-67,.18F' -> '4,421,673,335,044,994,961,014,949,020,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000' +xfmt2148 format -447294517590624513876849565e130 '' -> '-4.47294517590624513876849565E+156' +xfmt2149 format 41115921792712781060672950710133075E0 '\xe4\xb5\xbd=-.81%' -> '4111592179271278106067295071013307500.000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt2150 format -33254625350586237063939672485161476e0 '\xe3\x91\xbc=+70,.28%' -> '-3,325,462,535,058,623,706,393,967,248,516,147,600.0000000000000000000000000000%' +xfmt2151 format 13568805602776751125194041836465379e70 '' -> '1.3568805602776751125194041836465379E+104' +xfmt2152 format -11850869416894652422302119884552007e240 ' 0,' -> '-1.1850869416894652422302119884552007E+274' +xfmt2153 format 1162562932692028882051703797E0 '' -> '1162562932692028882051703797' +xfmt2154 format -1305898271421144766164469664E0 ' 0,.12' -> '-1.30589827142E+27' +xfmt2155 format 4944802417948074717322768574E182 '0.13' -> '4.944802417948E+209' +xfmt2156 format -5309815696990230227431998606e96 '1' -> '-5.309815696990230227431998606E+123' +xfmt2157 format 85083002090043966837727320419761372100504049e0 '\xef\xb8\x82^.14' -> '8.5083002090044E+43' +xfmt2158 format -84066318113275232876031222103274316009784681e0 '' -> '-84066318113275232876031222103274316009784681' +xfmt2159 format 16223487680786237844960048271316546399077156E181 '\xee\xa5\x85=' -> '1.6223487680786237844960048271316546399077156E+224' +xfmt2160 format -92730978021352321193010166187378539200816684e78 ',' -> '-9.2730978021352321193010166187378539200816684E+121' +xfmt2161 format 27763897740085810992825314970480E0 '\xe1\x9e\xbf<-,.23' -> '2.7763897740085810992825E+31' +xfmt2162 format -99831175475977295485937609379216e0 '\xe6\x86\xb9=.96%' -> '-9983117547597729548593760937921600.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt2163 format 11188635780002538677064235675227e138 '0.55' -> '1.1188635780002538677064235675227E+169' +xfmt2164 format -32977115446761777119951754921397e361 '\xe3\x99\xba>+,e' -> '-3.2977115446761777119951754921397e+392' +xfmt2165 format 40582E0 '-09' -> '000040582' +xfmt2166 format -37386E0 '' -> '-37386' +xfmt2167 format 15691e124 '' -> '1.5691E+128' +xfmt2168 format -51384E268 '\xeb\xa5\xa7=+86,.14G' -> '-\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa7\xeb\xa5\xa75.1384E+272' +xfmt2169 format 29236027992790324913370737E0 '+0,F' -> '+29,236,027,992,790,324,913,370,737' +xfmt2170 format -89626202083347398974800593e0 '' -> '-89626202083347398974800593' +xfmt2171 format 17332931216158101546781740E381 '\xea\x80\xbb>+g' -> '+1.7332931216158101546781740e+406' +xfmt2172 format -70454384654692753549867383E101 '' -> '-7.0454384654692753549867383E+126' +xfmt2173 format 427815073752329197647526E0 '24' -> '427815073752329197647526' +xfmt2174 format -768543966201297379203658E0 '.24' -> '-768543966201297379203658' +xfmt2175 format 403495403673373681895466E261 '-8' -> '4.03495403673373681895466E+284' +xfmt2176 format -139861595427667658713228e339 '\xeb\x9b\xaf>90,.39E' -> '\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf\xeb\x9b\xaf-1.398615954276676587132280000000000000000E+362' +xfmt2177 format 76782549756555753e0 '\xef\xa1\xbb<' -> '76782549756555753' +xfmt2178 format -53262685681207089E0 '\xea\x8e\x94<+83' -> '-53262685681207089\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94\xea\x8e\x94' +xfmt2179 format 91964687467252852e179 '\xeb\x8c\x85<-7,.85E' -> '9.1964687467252852000000000000000000000000000000000000000000000000000000000000000000000E+195' +xfmt2180 format -24685641634224974e27 '\xe9\xbb\x92= ,.38%' -> '-2,468,564,163,422,497,400,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000%' +xfmt2181 format 884664503461763579e0 '' -> '884664503461763579' +xfmt2182 format -598454713429701284E0 '+09,.60e' -> '-5.984547134297012840000000000000000000000000000000000000000000e+17' +xfmt2183 format 655670630457499827e244 '' -> '6.55670630457499827E+261' +xfmt2184 format -524477650979786176e97 'g' -> '-5.24477650979786176e+114' +xfmt2185 format 519E0 '\xe8\xb2\xa2<+1,.12e' -> '+5.190000000000e+2' +xfmt2186 format -924E0 ' 16.61f' -> '-924.0000000000000000000000000000000000000000000000000000000000000' +xfmt2187 format 587E237 '\xe7\xbe\xbf<+,G' -> '+5.87E+239' +xfmt2188 format -250E248 '+068,.51' -> '-000,000,000,000,000,000,000,000,000,000,000,000,000,000,002.50E+250' +xfmt2189 format 5121130882945284258335340777731493033e0 '\xe8\x9e\x9e<+6,G' -> '+5,121,130,882,945,284,258,335,340,777,731,493,033' +xfmt2190 format -8062810933199873341185779937446174702e0 '+088.96G' -> '-000000000000000000000000000000000000000000000000008062810933199873341185779937446174702' +xfmt2191 format 7267591775850987954975245333898202361E203 '+,f' -> '+726,759,177,585,098,795,497,524,533,389,820,236,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt2192 format -4669727042386827121057837129490723556E57 '1,.73g' -> '-4.669727042386827121057837129490723556e+93' +xfmt2193 format 8724088652232183862212639025155247961166E0 ',.36g' -> '8.72408865223218386221263902515524796e+39' +xfmt2194 format -6040441138131312409989055037988053062247e0 '\xef\xa5\x96>84.63g' -> '\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96\xef\xa5\x96-6040441138131312409989055037988053062247' +xfmt2195 format 9642534837949740403478040001424308099170e102 '\xe7\xac\x93^' -> '9.642534837949740403478040001424308099170E+141' +xfmt2196 format -8658115988422466369981999326980187929431e226 '0.40n' -> '-8.658115988422466369981999326980187929431e+265' +xfmt2197 format 123456789. '\xee\xab\xb0=40,.75e' -> '1.234567890000000000000000000000000000000000000000000000000000000000000000000e+8' +xfmt2198 format -123456789012345.1234567 '+025,.67%' -> '-12,345,678,901,234,512.3456700000000000000000000000000000000000000000000000000000000000000%' +xfmt2199 format 4416540468080688593369443470964787956E0 'f' -> '4416540468080688593369443470964787956' +xfmt2200 format -1274387375833027444027420377622022224e0 '-063.28E' -> '-00000000000000000000000000001.2743873758330274440274203776E+36' +xfmt2201 format 5030256043898162851628250947278297988E43 '.82' -> '5.030256043898162851628250947278297988E+79' +xfmt2202 format -9315167934316348107062161187807947354E31 '\xef\xb4\xae<+70' -> '-9.315167934316348107062161187807947354E+67\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae\xef\xb4\xae' +xfmt2203 format 68403630946620542298572E0 '.73F' -> '68403630946620542298572.0000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2204 format -78713233459068400152460e0 '' -> '-78713233459068400152460' +xfmt2205 format 76355062453984792901061e259 '\xe1\xaf\xbf=-49,E' -> '\xe1\xaf\xbf\xe1\xaf\xbf\xe1\xaf\xbf\xe1\xaf\xbf\xe1\xaf\xbf\xe1\xaf\xbf\xe1\xaf\xbf\xe1\xaf\xbf\xe1\xaf\xbf\xe1\xaf\xbf\xe1\xaf\xbf\xe1\xaf\xbf\xe1\xaf\xbf\xe1\xaf\xbf\xe1\xaf\xbf\xe1\xaf\xbf\xe1\xaf\xbf\xe1\xaf\xbf\xe1\xaf\xbf\xe1\xaf\xbf7.6355062453984792901061E+281' +xfmt2206 format -57452427658676597544412E315 '\xe8\xa3\xa0^+,.90%' -> '-5,745,242,765,867,659,754,441,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt2207 format 855008656896481377725230123774E0 '\xeb\x86\xa3<60e' -> '8.55008656896481377725230123774e+29\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3\xeb\x86\xa3' +xfmt2208 format -646583941628434616093041911082E0 '\xe6\xbe\xb0^+92f' -> '\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0-646583941628434616093041911082\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0\xe6\xbe\xb0' +xfmt2209 format 216982491899453736571127732815E222 '' -> '2.16982491899453736571127732815E+251' +xfmt2210 format -137460593858616626162032300946E122 '\xe6\x90\xa7< 12.18%' -> '-1374605938586166261620323009460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000%' +xfmt2211 format 13196843771e0 '\xe7\x8f\x8c<37,.72%' -> '1,319,684,377,100.000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt2212 format -87094499454e0 '62' -> ' -87094499454' +xfmt2213 format 31282641730e173 '\xef\xac\xa6<69.9f' -> '3128264173000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000' +xfmt2214 format -74839240255E340 '\xe8\x9e\x9a<+44,.51E' -> '-7.483924025500000000000000000000000000000000000000000E+350' +xfmt2215 format 718018702462097006E0 '\xe7\x8b\x9a=+31,.44g' -> '+\xe7\x8b\x9a\xe7\x8b\x9a\xe7\x8b\x9a\xe7\x8b\x9a\xe7\x8b\x9a\xe7\x8b\x9a\xe7\x8b\x9a718,018,702,462,097,006' +xfmt2216 format -413945891109795726e0 '-.49f' -> '-413945891109795726.0000000000000000000000000000000000000000000000000' +xfmt2217 format 191249513984336853E145 '\xe3\xa4\x89<24,.90%' -> '191,249,513,984,336,853,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt2218 format -793877940391803195E288 '' -> '-7.93877940391803195E+305' +xfmt2219 format 9388895434845945357861876826E0 '\xea\xa2\x95>85,.33' -> '\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x95\xea\xa2\x959,388,895,434,845,945,357,861,876,826' +xfmt2220 format -4786939092163403717074052932e0 '87,' -> ' -4,786,939,092,163,403,717,074,052,932' +xfmt2221 format 6960971170856097989499556645E228 '\xed\x83\xa2>+20.36' -> '+6.960971170856097989499556645E+255' +xfmt2222 format -7107418337975671748798749865e328 '\xe1\xab\xaf< 97,.61f' -> '-71,074,183,379,756,717,487,987,498,650,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000' +xfmt2223 format 469861699080478014652380550E0 '' -> '469861699080478014652380550' +xfmt2224 format -798935255558709896604344823E0 '.68F' -> '-798935255558709896604344823.00000000000000000000000000000000000000000000000000000000000000000000' +xfmt2225 format 239291388703784909817078050e339 '\xeb\x9f\xaf> 3,.51G' -> ' 2.39291388703784909817078050E+365' +xfmt2226 format -455337063884812191000200380E10 '\xe8\xaf\x91=+72,.65e' -> '-4.55337063884812191000200380000000000000000000000000000000000000000e+36' +xfmt2227 format 11894629257901854547E0 '\xef\xad\xb7^58,.74F' -> '11,894,629,257,901,854,547.00000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2228 format -53835540737966320306E0 '\xe9\xb8\x90^+45,%' -> '\xe9\xb8\x90\xe9\xb8\x90\xe9\xb8\x90\xe9\xb8\x90\xe9\xb8\x90\xe9\xb8\x90\xe9\xb8\x90-5,383,554,073,796,632,030,600%\xe9\xb8\x90\xe9\xb8\x90\xe9\xb8\x90\xe9\xb8\x90\xe9\xb8\x90\xe9\xb8\x90\xe9\xb8\x90' +xfmt2229 format 79447543622620950868e178 '0,' -> '7.9447543622620950868E+197' +xfmt2230 format -79413229097641729910E212 '+059,.20F' -> '-7,941,322,909,764,172,991,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000' +xfmt2231 format 9078677623319462068995713111410639256077937e0 '093.56f' -> '9078677623319462068995713111410639256077937.00000000000000000000000000000000000000000000000000000000' +xfmt2232 format -4845819157570472807627690681791639489441141E0 '\xed\x99\xad>+87,.81e' -> '-4.845819157570472807627690681791639489441141000000000000000000000000000000000000000e+42' +xfmt2233 format 9510586560085231487123260612110012511524497e377 '\xe4\x9c\xbe>-,.55' -> '9.510586560085231487123260612110012511524497E+419' +xfmt2234 format -1545388591957395060366753577642631594981184E70 '\xe3\xbb\x9d>+84,.75F' -> '-15,453,885,919,573,950,603,667,535,776,426,315,949,811,840,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2235 format 32758060735291325589972283881612423879298E0 '.99e' -> '3.275806073529132558997228388161242387929800000000000000000000000000000000000000000000000000000000000e+40' +xfmt2236 format -72372408586878492754100868232980077003259E0 '42e' -> '-7.2372408586878492754100868232980077003259e+40' +xfmt2237 format 68903441356176756234253418352820550903561E176 '\xe5\x90\xa1=56.20f' -> '6890344135617675623425341835282055090356100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000' +xfmt2238 format -12530979732341574938331631106392980333919E153 '\xea\x91\xb0<+3,.40' -> '-1.253097973234157493833163110639298033392E+193' +xfmt2239 format 84977e0 '\xe5\xa2\x8c=,' -> '84,977' +xfmt2240 format -53432e0 ' ,.73' -> '-53,432' +xfmt2241 format 69972e10 'n' -> '6.9972e+14' +xfmt2242 format -92673E309 '' -> '-9.2673E+313' +xfmt2243 format 7314921127306E0 '\xe0\xa8\xa4< 33,.92F' -> ' 7,314,921,127,306.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2244 format -7613219861455e0 '+63,g' -> ' -7,613,219,861,455' +xfmt2245 format 8676858519015E91 '\xe8\x9c\xbf=-92,.99f' -> '86,768,585,190,150,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2246 format -7230324808491e171 '-0,.69' -> '-7.230324808491E+183' +xfmt2247 format 832093056077E0 '081,e' -> '0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,008.32093056077e+11' +xfmt2248 format -428737847955E0 '\xec\x87\xb9>30,.18e' -> '\xec\x87\xb9\xec\x87\xb9\xec\x87\xb9\xec\x87\xb9\xec\x87\xb9-4.287378479550000000e+11' +xfmt2249 format 300372663579e166 ',.49%' -> '300,372,663,579,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000%' +xfmt2250 format -227268106274E362 '' -> '-2.27268106274E+373' +xfmt2251 format 86990779770657735477993493903283275E0 '\xe8\x9e\x87> 89.57' -> '\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87\xe8\x9e\x87 86990779770657735477993493903283275' +xfmt2252 format -54219004390774246680029926846492595E0 '\xef\x8d\xac^+,E' -> '-5.4219004390774246680029926846492595E+34' +xfmt2253 format 73282359923424275952297146538204631E322 '+51.46%' -> '+73282359923424275952297146538204631000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000%' +xfmt2254 format -79597001175406616217770128782382199E22 '-097,G' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,007.9597001175406616217770128782382199E+56' +xfmt2255 format 25571829826667E0 '+g' -> '+25571829826667' +xfmt2256 format -73713782775930e0 '\xe3\x9c\x8f>+,.24%' -> '-7,371,378,277,593,000.000000000000000000000000%' +xfmt2257 format 66766456491333E125 '' -> '6.6766456491333E+138' +xfmt2258 format -41013916371661E10 '.28' -> '-4.1013916371661E+23' +xfmt2259 format 102133899870403959416367885004065682E0 '\xe2\xa1\xa3= ,.10g' -> ' 1.021338999e+35' +xfmt2260 format -890545848441704038749935164328166049E0 ',' -> '-890,545,848,441,704,038,749,935,164,328,166,049' +xfmt2261 format 778139450509331409954651007138491507E117 '\xee\xb6\xb6< f' -> ' 778139450509331409954651007138491507000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2262 format -583218018220165041731636792440760176E175 ' 074.46g' -> '-00000000000000000000000000000005.83218018220165041731636792440760176e+210' +xfmt2263 format 3837995993957523249886E0 '\xe8\xa9\x85= 93,.83f' -> ' 3,837,995,993,957,523,249,886.00000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2264 format -4136993880489396711616e0 '\xe4\x91\x9d^+,.28%' -> '-413,699,388,048,939,671,161,600.0000000000000000000000000000%' +xfmt2265 format 7984812006213880484130E149 '\xe1\xb1\xb6<+74,.43G' -> '+7.984812006213880484130E+170\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6\xe1\xb1\xb6' +xfmt2266 format -8221989903166653580991E281 '' -> '-8.221989903166653580991E+302' +xfmt2267 format 8E0 '34' -> ' 8' +xfmt2268 format -8E0 '0' -> '-8' +xfmt2269 format 2e104 ' 028,.67E' -> ' 2.0000000000000000000000000000000000000000000000000000000000000000000E+104' +xfmt2270 format -1E370 '\xe9\x8c\xa7=-,.15f' -> '-10,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000' +xfmt2271 format 5617989385108729E0 '\xe1\xab\xac=,G' -> '5,617,989,385,108,729' +xfmt2272 format -2320782507203750e0 '38' -> ' -2320782507203750' +xfmt2273 format 3595434780466948e126 '\xe6\xb0\x86=-12,.67e' -> '3.5954347804669480000000000000000000000000000000000000000000000000000e+141' +xfmt2274 format -8504876840198327e160 '\xea\x8d\xa3=+80,.39G' -> '-\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa38.504876840198327E+175' +xfmt2275 format 90724264190622313031737176E0 '27.83n' -> ' 90724264190622313031737176' +xfmt2276 format -56397015985077185836190896E0 '' -> '-56397015985077185836190896' +xfmt2277 format 46576916703587881858968311E145 '090,.5g' -> '0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,004.6577e+170' +xfmt2278 format -73588902334742861309160327e302 '+,' -> '-7.3588902334742861309160327E+327' +xfmt2279 format 8155424461E0 ' 0.84%' -> ' 815542446100.000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt2280 format -3003953835E0 '\xed\x8e\x93=93,.60g' -> '-\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x93\xed\x8e\x933,003,953,835' +xfmt2281 format 3569051413E65 '-0,e' -> '3.569051413e+74' +xfmt2282 format -8562711566e374 '\xe2\x82\xbd^ 70,.59e' -> '\xe2\x82\xbd-8.56271156600000000000000000000000000000000000000000000000000e+383\xe2\x82\xbd\xe2\x82\xbd' +xfmt2283 format 57886420282194573974600678760253E0 '\xe9\x8f\xb7^.40E' -> '5.7886420282194573974600678760253000000000E+31' +xfmt2284 format -36288148473042322563294860819567E0 ',' -> '-36,288,148,473,042,322,563,294,860,819,567' +xfmt2285 format 39772404212767765073536283328661E148 '\xe2\xb7\x99>,.4' -> '3.977E+179' +xfmt2286 format -58915733935994944955446260348730e89 '\xef\x9d\xb7>+15,.81G' -> '-5.8915733935994944955446260348730E+120' +xfmt2287 format 8887051041113533676181912188110647e0 '0' -> '8887051041113533676181912188110647' +xfmt2288 format -4340058487535398676914395548208685e0 '+0,.12' -> '-4.34005848754E+33' +xfmt2289 format 6622623466689519413101705785215619e46 '\xed\x8f\xa6= 10,.79G' -> ' 6.622623466689519413101705785215619E+79' +xfmt2290 format -5081299350095173388781807671862578e336 '\xeb\xaa\x96>,.58E' -> '-5.0812993500951733887818076718625780000000000000000000000000E+369' +xfmt2291 format 0e0 '\xec\x87\xbe> 56,.99f' -> ' 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2292 format 0e0 '0' -> '0' +xfmt2293 format 0e350 '' -> '0E+350' +xfmt2294 format 0E65 '0' -> '0E+65' +xfmt2295 format 531E0 'g' -> '531' +xfmt2296 format -981e0 '\xe4\xbb\xaf< 65,.77g' -> '-981\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf\xe4\xbb\xaf' +xfmt2297 format 538e346 'g' -> '5.38e+348' +xfmt2298 format -124E90 '\xe9\x9e\x8d> 71,.47' -> '\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d\xe9\x9e\x8d-1.24E+92' +xfmt2299 format 730732e0 '094.61' -> '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000730732' +xfmt2300 format -299991e0 '\xee\xa7\x80=-28.45f' -> '-299991.000000000000000000000000000000000000000000000' +xfmt2301 format 295679E104 ' ,.74' -> ' 2.95679E+109' +xfmt2302 format -397156e148 '\xec\x93\x90= .45' -> '-3.97156E+153' +xfmt2303 format 95774109150981583e0 '' -> '95774109150981583' +xfmt2304 format -15608526532142746E0 '\xe0\xb9\x90> ,.54' -> '-15,608,526,532,142,746' +xfmt2305 format 80979344119015270e332 '\xe9\x86\xa6^ 80,.66e' -> '\xe9\x86\xa6\xe9\x86\xa6\xe9\x86\xa6 8.097934411901527000000000000000000000000000000000000000000000000000e+348\xe9\x86\xa6\xe9\x86\xa6\xe9\x86\xa6' +xfmt2306 format -22810266243178033E31 '0' -> '-2.2810266243178033E+47' +xfmt2307 format 147542025059032715615e0 ',' -> '147,542,025,059,032,715,615' +xfmt2308 format -230750319270375313081E0 '09,.95f' -> '-230,750,319,270,375,313,081.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2309 format 298784233345577817036E39 '\xe2\xac\x8f^-.1' -> '3E+59' +xfmt2310 format -749993994975046463464e85 '\xef\xa6\x84= 4F' -> '-7499939949750464634640000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2311 format 1066563827132940290621668992331418460241E0 '\xef\xa1\x93<,.38f' -> '1,066,563,827,132,940,290,621,668,992,331,418,460,241.00000000000000000000000000000000000000' +xfmt2312 format -2615718464553102285851474793942263932521e0 '-60,' -> ' -2,615,718,464,553,102,285,851,474,793,942,263,932,521' +xfmt2313 format 2949200217628177227385760732783782271767E313 '\xe6\xa4\x98^+' -> '+2.949200217628177227385760732783782271767E+352' +xfmt2314 format -4065963154698401237062120941087841010101E6 '\xee\xb4\xbe>-,.83e' -> '-4.06596315469840123706212094108784101010100000000000000000000000000000000000000000000e+45' +xfmt2315 format 1282319e0 '\xe8\x8c\xbf=-34,' -> '\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf\xe8\x8c\xbf1,282,319' +xfmt2316 format -7104046e0 '\xe4\xae\x95>+29.17' -> '\xe4\xae\x95\xe4\xae\x95\xe4\xae\x95\xe4\xae\x95\xe4\xae\x95\xe4\xae\x95\xe4\xae\x95\xe4\xae\x95\xe4\xae\x95\xe4\xae\x95\xe4\xae\x95\xe4\xae\x95\xe4\xae\x95\xe4\xae\x95\xe4\xae\x95\xe4\xae\x95\xe4\xae\x95\xe4\xae\x95\xe4\xae\x95\xe4\xae\x95\xe4\xae\x95-7104046' +xfmt2317 format 1887274e142 '\xed\x91\xb2<+32,.57e' -> '+1.887274000000000000000000000000000000000000000000000000000e+148' +xfmt2318 format -9151410e121 '\xe4\xba\x93<-98,.68E' -> '-9.15141000000000000000000000000000000000000000000000000000000000000000E+127\xe4\xba\x93\xe4\xba\x93\xe4\xba\x93\xe4\xba\x93\xe4\xba\x93\xe4\xba\x93\xe4\xba\x93\xe4\xba\x93\xe4\xba\x93\xe4\xba\x93\xe4\xba\x93\xe4\xba\x93\xe4\xba\x93\xe4\xba\x93\xe4\xba\x93\xe4\xba\x93\xe4\xba\x93\xe4\xba\x93\xe4\xba\x93\xe4\xba\x93\xe4\xba\x93\xe4\xba\x93' +xfmt2319 format 123.1234567890123456789 '\xe5\x8f\xaf>-,.87%' -> '12,312.345678901234567890000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt2320 format -1.123456789012 '\xeb\xa6\x94=,' -> '-1.123456789012' +xfmt2321 format 433680843891846279484350e0 '\xe8\xa9\x95^,.92e' -> '4.33680843891846279484350000000000000000000000000000000000000000000000000000000000000000000000e+23' +xfmt2322 format -166481912131326332628378e0 '\xe1\xb1\x9f^-41,.46%' -> '-16,648,191,213,132,633,262,837,800.0000000000000000000000000000000000000000000000%' +xfmt2323 format 456220576066295909919968e132 '-' -> '4.56220576066295909919968E+155' +xfmt2324 format -781760536665823277636434E97 '0G' -> '-7.81760536665823277636434E+120' +xfmt2325 format 843924455199604781484086368E0 '-048.5' -> '000000000000000000000000000000000000008.4392E+26' +xfmt2326 format -248957895444912074106935885E0 '\xe2\xb4\xb4<25g' -> '-248957895444912074106935885' +xfmt2327 format 970949235177466754660474914e310 ',' -> '9.70949235177466754660474914E+336' +xfmt2328 format -966366542806815266473560706e360 '' -> '-9.66366542806815266473560706E+386' +xfmt2329 format 7238225E0 ' ,' -> ' 7,238,225' +xfmt2330 format -1063566E0 '\xe0\xae\x95<+97,E' -> '-1.063566E+6\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95\xe0\xae\x95' +xfmt2331 format 7196813E123 '.65' -> '7.196813E+129' +xfmt2332 format -1707185E21 '\xed\x93\xbb^81,.55E' -> '\xed\x93\xbb\xed\x93\xbb\xed\x93\xbb\xed\x93\xbb\xed\x93\xbb\xed\x93\xbb\xed\x93\xbb\xed\x93\xbb\xed\x93\xbb-1.7071850000000000000000000000000000000000000000000000000E+27\xed\x93\xbb\xed\x93\xbb\xed\x93\xbb\xed\x93\xbb\xed\x93\xbb\xed\x93\xbb\xed\x93\xbb\xed\x93\xbb\xed\x93\xbb\xed\x93\xbb' +xfmt2333 format 2E0 '' -> '2' +xfmt2334 format -4e0 '' -> '-4' +xfmt2335 format 7E270 '\xe4\xbb\xac=+,' -> '+7E+270' +xfmt2336 format -5e179 '\xea\x93\x91=92,.32' -> '-\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x91\xea\x93\x915E+179' +xfmt2337 format 4304518814591831473644980087E0 ',.20%' -> '430,451,881,459,183,147,364,498,008,700.00000000000000000000%' +xfmt2338 format -1397754070158538944489202008E0 '\xe7\xb1\xbe<+6,.79g' -> '-1,397,754,070,158,538,944,489,202,008' +xfmt2339 format 4197193697895111967902708175e316 '\xe3\x9c\x9c>66,' -> '\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c\xe3\x9c\x9c4.197193697895111967902708175E+343' +xfmt2340 format -5467934505739755868968780360e373 '010,.85%' -> '-5,467,934,505,739,755,868,968,780,360,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt2341 format 4330E0 '' -> '4330' +xfmt2342 format -5742E0 '-0,F' -> '-5,742' +xfmt2343 format 6670E258 '' -> '6.670E+261' +xfmt2344 format -3793E278 '\xe5\xb5\x97^+86,.11g' -> '\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97-3.793e+281\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97\xe5\xb5\x97' +xfmt2345 format 66443187058862162618748810648875860806360154E0 ',.90' -> '66,443,187,058,862,162,618,748,810,648,875,860,806,360,154' +xfmt2346 format -49959395957912892384930443605074206427360460e0 '\xec\xb1\x82>+36,.95%' -> '-4,995,939,595,791,289,238,493,044,360,507,420,642,736,046,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt2347 format 59445556311087751508404199941887593515034779E52 '\xe5\x88\x88>-44,' -> '5.9445556311087751508404199941887593515034779E+95' +xfmt2348 format -66922259188057235480374518502474929002562157e155 '\xe4\xb7\x82>-,.48' -> '-6.6922259188057235480374518502474929002562157E+198' +xfmt2349 format 377871269045531919455195975705220E0 '\xe6\xbc\x9e=62,.61' -> '\xe6\xbc\x9e\xe6\xbc\x9e\xe6\xbc\x9e\xe6\xbc\x9e\xe6\xbc\x9e\xe6\xbc\x9e\xe6\xbc\x9e\xe6\xbc\x9e\xe6\xbc\x9e\xe6\xbc\x9e\xe6\xbc\x9e\xe6\xbc\x9e\xe6\xbc\x9e\xe6\xbc\x9e\xe6\xbc\x9e\xe6\xbc\x9e\xe6\xbc\x9e\xe6\xbc\x9e\xe6\xbc\x9e377,871,269,045,531,919,455,195,975,705,220' +xfmt2350 format -922898983091346958801164887585634e0 '\xc5\xbe=+29,.80F' -> '-922,898,983,091,346,958,801,164,887,585,634.00000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2351 format 510536859880454079329587750317703e322 '\xe4\x90\x9c<-.17n' -> '5.1053685988045408e+354' +xfmt2352 format -467931832824805957678862733344889E247 '+' -> '-4.67931832824805957678862733344889E+279' +xfmt2353 format 9803080580852853212673582443142969918310E0 '\xe9\xa2\x9a^-86' -> '\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a9803080580852853212673582443142969918310\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a\xe9\xa2\x9a' +xfmt2354 format -8184659664655047036745758296600302230044E0 ',.37' -> '-8.184659664655047036745758296600302230E+39' +xfmt2355 format 8578081935557821560133872762775711226343E14 '\xeb\x96\x8e<.16' -> '8.578081935557822E+53' +xfmt2356 format -3268983875387223631324189225610332867898E121 '\xee\x89\x8a<-23,.86f' -> '-32,689,838,753,872,236,313,241,892,256,103,328,678,980,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2357 format 6406827847221133165193910298748663591E0 '' -> '6406827847221133165193910298748663591' +xfmt2358 format -4582007138234876841462261391537707094E0 '\xe6\x93\xae^+60,.18%' -> '-458,200,713,823,487,684,146,226,139,153,770,709,400.000000000000000000%' +xfmt2359 format 7574891781910611709663771632532911778e8 '-0,e' -> '7.574891781910611709663771632532911778e+44' +xfmt2360 format -1787464658446916934075204446836173033e261 '\xeb\xb0\xaf= 19,.53E' -> '-1.78746465844691693407520444683617303300000000000000000E+297' +xfmt2361 format 33004749642232E0 '\xef\x8e\x81>+61,.25E' -> '\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81\xef\x8e\x81+3.3004749642232000000000000E+13' +xfmt2362 format -47983689744569e0 '-083.43f' -> '-00000000000000000000000047983689744569.0000000000000000000000000000000000000000000' +xfmt2363 format 43968290984348E351 '\xe8\x9e\xb5=35,' -> '\xe8\x9e\xb5\xe8\x9e\xb5\xe8\x9e\xb5\xe8\x9e\xb5\xe8\x9e\xb5\xe8\x9e\xb5\xe8\x9e\xb5\xe8\x9e\xb5\xe8\x9e\xb5\xe8\x9e\xb5\xe8\x9e\xb5\xe8\x9e\xb5\xe8\x9e\xb5\xe8\x9e\xb5\xe8\x9e\xb54.3968290984348E+364' +xfmt2364 format -86307003498760E103 '+052,.4E' -> '-0,000,000,000,000,000,000,000,000,000,008.6307E+116' +xfmt2365 format 74608439835758060671304746377181320815501E0 '\xe6\x90\x95^ .99G' -> ' 74608439835758060671304746377181320815501' +xfmt2366 format -31937512130021783335891420167961728200159e0 '\xe9\xbf\xb9>+86' -> '\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9\xe9\xbf\xb9-31937512130021783335891420167961728200159' +xfmt2367 format 60256559309120681746907711793834330920159E262 '\xe6\xba\x89>-65,.76g' -> '\xe6\xba\x89\xe6\xba\x89\xe6\xba\x89\xe6\xba\x89\xe6\xba\x89\xe6\xba\x89\xe6\xba\x89\xe6\xba\x89\xe6\xba\x89\xe6\xba\x89\xe6\xba\x89\xe6\xba\x89\xe6\xba\x89\xe6\xba\x89\xe6\xba\x89\xe6\xba\x89\xe6\xba\x89\xe6\xba\x896.0256559309120681746907711793834330920159e+302' +xfmt2368 format -58372291102710369215296624749414873983990E49 '90.2' -> ' -5.8E+89' +xfmt2369 format 9952136112787361983514387203193e0 '-041,.40e' -> '9.9521361127873619835143872031930000000000e+30' +xfmt2370 format -2462819102628603676468370435498e0 '+07,.96E' -> '-2.462819102628603676468370435498000000000000000000000000000000000000000000000000000000000000000000E+30' +xfmt2371 format 6575030085281003801684257203512E222 '0,' -> '6.575030085281003801684257203512E+252' +xfmt2372 format -6107329543623597728950011953748E44 '61' -> ' -6.107329543623597728950011953748E+74' +xfmt2373 format 95713396902829629312717e0 '\xe1\xaa\x8d=,' -> '95,713,396,902,829,629,312,717' +xfmt2374 format -27320298550676572804893e0 '085' -> '-000000000000000000000000000000000000000000000000000000000000027320298550676572804893' +xfmt2375 format 22824295433660353462828e133 '\xe7\xa4\xa3< ,.2%' -> ' 22,824,295,433,660,353,462,828,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00%' +xfmt2376 format -17178096227712173407090E302 '' -> '-1.7178096227712173407090E+324' +xfmt2377 format 29933600098e0 '0,.39E' -> '2.993360009800000000000000000000000000000E+10' +xfmt2378 format -44313422185E0 '0,.37g' -> '-44,313,422,185' +xfmt2379 format 31885149480E129 '\xe5\xa7\xac<+35,f' -> '+31,885,149,480,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt2380 format -38985373709E33 'F' -> '-38985373709000000000000000000000000000000000' +xfmt2381 format 0e0 '+0F' -> '+0' +xfmt2382 format 0e0 '\xee\xa8\x8d<-,' -> '0' +xfmt2383 format 0E202 '\xe8\x94\x9c=' -> '0E+202' +xfmt2384 format 0e124 '55' -> ' 0E+124' +xfmt2385 format 6730850775935402871071855E0 '\xe7\x86\x93=95,' -> '\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x93\xe7\x86\x936,730,850,775,935,402,871,071,855' +xfmt2386 format -1355644831978231150146094E0 '\xe1\xad\xb1< 79,.8' -> '-1.3556448E+24\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1\xe1\xad\xb1' +xfmt2387 format 8895585961221784477707187e205 ',.54G' -> '8.895585961221784477707187E+229' +xfmt2388 format -9811674161964731050095736E150 '\xe9\xae\x84>' -> '-9.811674161964731050095736E+174' +xfmt2389 format 193849e0 '+022,.72e' -> '+1.938490000000000000000000000000000000000000000000000000000000000000000000e+5' +xfmt2390 format -962764e0 '\xeb\xb4\xa3=36' -> '-\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3\xeb\xb4\xa3962764' +xfmt2391 format 240258E72 '\xe3\xb6\xaf<-61.97f' -> '240258000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2392 format -919770E339 '\xea\xb2\xaa^ 23,.18f' -> '-919,770,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000' +xfmt2393 format 915607199E0 '\xec\x9c\xa5^ 6,.96F' -> ' 915,607,199.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2394 format -912555556E0 '\xc3\xad>59,.11' -> '\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad\xc3\xad-912,555,556' +xfmt2395 format 138787505e55 '3,' -> '1.38787505E+63' +xfmt2396 format -715066076E42 '+083f' -> '-0000000000000000000000000000000715066076000000000000000000000000000000000000000000' +xfmt2397 format 19185916309522258898980819666367163E0 '' -> '19185916309522258898980819666367163' +xfmt2398 format -84988242760161056306424002578112311E0 '\xea\x81\xbd^-61,.71f' -> '-84,988,242,760,161,056,306,424,002,578,112,311.00000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2399 format 57965772270017633259574156298845779e373 '\xe3\x9e\xa7>-97,.14e' -> '\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa7\xe3\x9e\xa75.79657722700176e+407' +xfmt2400 format -76348841833917733601979383716943345e172 '+023,.7g' -> '-00,000,007.634884e+206' +xfmt2401 format 3020271645010811665e0 '0.63g' -> '3020271645010811665' +xfmt2402 format -3370832099188241889e0 '\xec\xbd\x91= 37,.48' -> '-\xec\xbd\x91\xec\xbd\x91\xec\xbd\x91\xec\xbd\x91\xec\xbd\x91\xec\xbd\x91\xec\xbd\x91\xec\xbd\x91\xec\xbd\x91\xec\xbd\x91\xec\xbd\x913,370,832,099,188,241,889' +xfmt2403 format 2574973529067201880e14 '\xe5\xbe\x8b> 89,.91G' -> '\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b\xe5\xbe\x8b 2.574973529067201880E+32' +xfmt2404 format -3037890146325325494E26 '\xe7\xb6\x83^,' -> '-3.037890146325325494E+44' +xfmt2405 format 9345427531780e0 '-51.43F' -> '9345427531780.0000000000000000000000000000000000000000000' +xfmt2406 format -8882381170304e0 ' .88e' -> '-8.8823811703040000000000000000000000000000000000000000000000000000000000000000000000000000e+12' +xfmt2407 format 8832396127068E28 '\xea\xb9\xb0^' -> '8.832396127068E+40' +xfmt2408 format -6426632682835E174 '22.57' -> ' -6.426632682835E+186' +xfmt2409 format 9715845056527028789006531914131260725154294E0 '\xe5\xb1\xb4^34,.49F' -> '9,715,845,056,527,028,789,006,531,914,131,260,725,154,294.0000000000000000000000000000000000000000000000000' +xfmt2410 format -1781527921083772204821263068080599728497840e0 '\xe3\x8d\xa2^ 46,.10g' -> '\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2-1.781527921e+42\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2\xe3\x8d\xa2' +xfmt2411 format 4749978979026247249883039260391685472563940E7 '' -> '4.749978979026247249883039260391685472563940E+49' +xfmt2412 format -1282929634253653947859878620893255224543680E317 '73' -> ' -1.282929634253653947859878620893255224543680E+359' +xfmt2413 format 85e0 '\xee\xbf\xb6=+18,.39G' -> '+\xee\xbf\xb6\xee\xbf\xb6\xee\xbf\xb6\xee\xbf\xb6\xee\xbf\xb6\xee\xbf\xb6\xee\xbf\xb6\xee\xbf\xb6\xee\xbf\xb6\xee\xbf\xb6\xee\xbf\xb6\xee\xbf\xb6\xee\xbf\xb6\xee\xbf\xb6\xee\xbf\xb685' +xfmt2414 format -37E0 '+0,g' -> '-37' +xfmt2415 format 49E380 '-61,.8' -> ' 4.9E+381' +xfmt2416 format -75e4 '\xe3\x90\x96=60,f' -> '-\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96\xe3\x90\x96750,000' +xfmt2417 format 607996240772520e0 '' -> '607996240772520' +xfmt2418 format -924791972447889e0 '\xe9\xb7\xa6<,E' -> '-9.24791972447889E+14' +xfmt2419 format 561886196198061e145 '' -> '5.61886196198061E+159' +xfmt2420 format -893396276491359e282 'g' -> '-8.93396276491359e+296' +xfmt2421 format 14074e0 '\xe9\x8a\xa6= 9,.1' -> ' \xe9\x8a\xa6\xe9\x8a\xa6\xe9\x8a\xa6\xe9\x8a\xa61E+4' +xfmt2422 format -58313e0 '\xe1\xbf\xb4^+59,.7' -> '\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4-58,313\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4\xe1\xbf\xb4' +xfmt2423 format 38664E374 '+083' -> '+000000000000000000000000000000000000000000000000000000000000000000000003.8664E+378' +xfmt2424 format -87023e371 '\xe8\xaf\xac^ 87,.94g' -> '\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac-8.7023e+375\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac\xe8\xaf\xac' +xfmt2425 format 62162623829611521e0 '\xea\x97\x9a>+90,F' -> '\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a\xea\x97\x9a+62,162,623,829,611,521' +xfmt2426 format -35187678788520145E0 ' ' -> '-35187678788520145' +xfmt2427 format 92905234487936574e128 '0,.68F' -> '9,290,523,448,793,657,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000' +xfmt2428 format -74123861919360348E220 '' -> '-7.4123861919360348E+236' +xfmt2429 format 8976864087E0 '-,.42f' -> '8,976,864,087.000000000000000000000000000000000000000000' +xfmt2430 format -3659465231E0 '' -> '-3659465231' +xfmt2431 format 1206667407E175 '\xeb\x84\xb1> ,.85F' -> ' 12,066,674,070,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2432 format -4566732466e317 '' -> '-4.566732466E+326' +xfmt2433 format 496735466191663683e0 '-,' -> '496,735,466,191,663,683' +xfmt2434 format -301851187630479446E0 '\xe7\x9b\xb9^+36,.48%' -> '-30,185,118,763,047,944,600.000000000000000000000000000000000000000000000000%' +xfmt2435 format 781519361730477915E151 '+096E' -> '+000000000000000000000000000000000000000000000000000000000000000000000007.81519361730477915E+168' +xfmt2436 format -270861917434251541e18 '\xef\x8a\xa5>-55,.74f' -> '-270,861,917,434,251,541,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2437 format 175279850820775091202321190468536484981862E0 '' -> '175279850820775091202321190468536484981862' +xfmt2438 format -962711610480382646697963630485894447793466e0 '' -> '-962711610480382646697963630485894447793466' +xfmt2439 format 804769559710891735267208974469559345868001e343 '+' -> '+8.04769559710891735267208974469559345868001E+384' +xfmt2440 format -446693260578250619647871428865156322639503e353 '\xe7\x9f\x9f>+86,.72E' -> '\xe7\x9f\x9f\xe7\x9f\x9f\xe7\x9f\x9f\xe7\x9f\x9f\xe7\x9f\x9f\xe7\x9f\x9f-4.466932605782506196478714288651563226395030000000000000000000000000000000E+394' +xfmt2441 format 1234567890123.123 '\xe6\x85\xaf>.40G' -> '1234567890123.123' +xfmt2442 format -1234567890123456789.1234567890123 '' -> '-1234567890123456789.1234567890123' +xfmt2443 format 97665836348095E0 'B=' -> '97665836348095' +xfmt2444 format -13971320551115E0 '\xe6\xb1\x80^+51,.27g' -> '\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80-13,971,320,551,115\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80\xe6\xb1\x80' +xfmt2445 format 81323883198311E187 ',.4' -> '8.132E+200' +xfmt2446 format -11551526555650e6 '\xe1\xbc\x8c<-83,.61%' -> '-1,155,152,655,565,000,000,000.0000000000000000000000000000000000000000000000000000000000000%' +xfmt2447 format 1713715685643707E0 '026' -> '00000000001713715685643707' +xfmt2448 format -8722168874660519e0 '-' -> '-8722168874660519' +xfmt2449 format 9337266228036186e159 '\xea\xa5\x97<-.19F' -> '9337266228036186000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000' +xfmt2450 format -2031932227043933E182 '\xe5\xa9\xbb> 60.17G' -> '\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb\xe5\xa9\xbb-2.031932227043933E+197' +xfmt2451 format 6497664888571409626900529e0 '\xe8\xbf\x92^e' -> '6.497664888571409626900529e+24' +xfmt2452 format -5104739348217024783957395e0 '' -> '-5104739348217024783957395' +xfmt2453 format 3422127534381638356071505e194 '\xe9\x90\xae>.56' -> '3.422127534381638356071505E+218' +xfmt2454 format -1349453348938886948322407e127 '' -> '-1.349453348938886948322407E+151' +xfmt2455 format 26231463672550932e0 '\xe8\xba\x82^48,.8' -> '\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x822.6231464E+16\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82\xe8\xba\x82' +xfmt2456 format -20689187381677212E0 '\xe4\x8b\x88=+90,.33%' -> '-\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x88\xe4\x8b\x882,068,918,738,167,721,200.000000000000000000000000000000000%' +xfmt2457 format 60457862533297624e276 '' -> '6.0457862533297624E+292' +xfmt2458 format -51064177612550275E160 '\xef\xb0\xac^.54E' -> '-5.106417761255027500000000000000000000000000000000000000E+176' +xfmt2459 format 34833234004E0 '\xe8\xbc\xaa^+86,.17E' -> '\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa+3.48332340040000000E+10\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa\xe8\xbc\xaa' +xfmt2460 format -29312893919E0 '\xe3\x80\xb7=77.50e' -> '-\xe3\x80\xb7\xe3\x80\xb7\xe3\x80\xb7\xe3\x80\xb7\xe3\x80\xb7\xe3\x80\xb7\xe3\x80\xb7\xe3\x80\xb7\xe3\x80\xb7\xe3\x80\xb7\xe3\x80\xb7\xe3\x80\xb7\xe3\x80\xb7\xe3\x80\xb7\xe3\x80\xb7\xe3\x80\xb7\xe3\x80\xb7\xe3\x80\xb7\xe3\x80\xb7\xe3\x80\xb72.93128939190000000000000000000000000000000000000000e+10' +xfmt2461 format 70501840953E287 '' -> '7.0501840953E+297' +xfmt2462 format -14010764440e307 '\xeb\x9b\xa5<' -> '-1.4010764440E+317' +xfmt2463 format 66294839271592426545e0 '.38' -> '66294839271592426545' +xfmt2464 format -12696297740081225919e0 ' ' -> '-12696297740081225919' +xfmt2465 format 90622918455958929366e223 ',' -> '9.0622918455958929366E+242' +xfmt2466 format -96276066003605738615e295 '\xea\x8d\xb3>86' -> '\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3\xea\x8d\xb3-9.6276066003605738615E+314' +xfmt2467 format 0e0 '\xe0\xad\xa9<-90.65' -> '0\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9\xe0\xad\xa9' +xfmt2468 format 0e0 '0.31' -> '0' +xfmt2469 format 0E236 ',' -> '0E+236' +xfmt2470 format 0e276 '\xe5\x84\x9c^-17,.77' -> '\xe5\x84\x9c\xe5\x84\x9c\xe5\x84\x9c\xe5\x84\x9c\xe5\x84\x9c0E+276\xe5\x84\x9c\xe5\x84\x9c\xe5\x84\x9c\xe5\x84\x9c\xe5\x84\x9c\xe5\x84\x9c' +xfmt2471 format 31958055831846787364898412e0 '\xeb\xa5\xae>.14n' -> '3.1958055831847e+25' +xfmt2472 format -25321554947244590805144677e0 '\xe1\x9b\x91>-74,e' -> '\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91\xe1\x9b\x91-2.5321554947244590805144677e+25' +xfmt2473 format 15227517101130634379204181e17 '\xe3\x86\xa8^ 61,F' -> '\xe3\x86\xa8 1,522,751,710,113,063,437,920,418,100,000,000,000,000,000\xe3\x86\xa8\xe3\x86\xa8' +xfmt2474 format -20533610457224970755564373e93 '\xe5\xa9\xab<37F' -> '-20533610457224970755564373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2475 format 264261748663465655976579525192e0 '\xe2\xb3\xb5= 27E' -> ' 2.64261748663465655976579525192E+29' +xfmt2476 format -491866999372460171638979413872e0 ' f' -> '-491866999372460171638979413872' +xfmt2477 format 847279180585713700749129012670E122 '\xef\x87\xbf>,' -> '8.47279180585713700749129012670E+151' +xfmt2478 format -890150723520742068950166970007E230 '\xe4\xad\xa8^48.59n' -> '\xe4\xad\xa8\xe4\xad\xa8\xe4\xad\xa8\xe4\xad\xa8\xe4\xad\xa8-8.90150723520742068950166970007e+259\xe4\xad\xa8\xe4\xad\xa8\xe4\xad\xa8\xe4\xad\xa8\xe4\xad\xa8\xe4\xad\xa8' +xfmt2479 format 73448614590577764482562123364274448e0 '\xe5\x86\xb0= ,g' -> ' 73,448,614,590,577,764,482,562,123,364,274,448' +xfmt2480 format -41449128174906879938414829363694824e0 '\xe9\x82\xba^-g' -> '-41449128174906879938414829363694824' +xfmt2481 format 89521890634101963234094460060826593E117 '\xe2\x96\xb4^+83,.78E' -> '+8.952189063410196323409446006082659300000000000000000000000000000000000000000000E+151' +xfmt2482 format -19102974618380163478181507608524884e195 '68' -> ' -1.9102974618380163478181507608524884E+229' +xfmt2483 format 9481351940626476758606347914109822981759846e0 '\xe7\xb6\xbd^+72,.21%' -> '+948,135,194,062,647,675,860,634,791,410,982,298,175,984,600.000000000000000000000%' +xfmt2484 format -3431367068451460586112932714459965208884738e0 '-41G' -> '-3431367068451460586112932714459965208884738' +xfmt2485 format 7088775394809059602235538584203663049034278E2 '' -> '7.088775394809059602235538584203663049034278E+44' +xfmt2486 format -9845025074191595857306153432165642216013658e23 '\xeb\x96\xa3^ 84,.63F' -> '-984,502,507,419,159,585,730,615,343,216,564,221,601,365,800,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000' +xfmt2487 format 78577960228861844125930E0 '\xe2\x97\x83<39,.70E' -> '7.8577960228861844125930000000000000000000000000000000000000000000000000E+22' +xfmt2488 format -73966355475965625949037e0 ',e' -> '-7.3966355475965625949037e+22' +xfmt2489 format 44478085052010238292622E41 '' -> '4.4478085052010238292622E+63' +xfmt2490 format -10292573154291496984820E287 '\xe5\x83\xb3<36.20' -> '-1.0292573154291496985E+309\xe5\x83\xb3\xe5\x83\xb3\xe5\x83\xb3\xe5\x83\xb3\xe5\x83\xb3\xe5\x83\xb3\xe5\x83\xb3\xe5\x83\xb3\xe5\x83\xb3' +xfmt2491 format 9568360E0 ',' -> '9,568,360' +xfmt2492 format -4566956e0 ' 76.14G' -> ' -4566956' +xfmt2493 format 1149024e260 '+80.66' -> ' +1.149024E+266' +xfmt2494 format -3044617E34 '30' -> ' -3.044617E+40' +xfmt2495 format 659578494989166649697033E0 '' -> '659578494989166649697033' +xfmt2496 format -502978124030880433561178e0 '+0.85%' -> '-50297812403088043356117800.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt2497 format 156040852882158295426171E92 '-98' -> ' 1.56040852882158295426171E+115' +xfmt2498 format -603693241432691321134743e236 '\xec\xa2\x96^-' -> '-6.03693241432691321134743E+259' +xfmt2499 format 72197089e0 '' -> '72197089' +xfmt2500 format -43540709e0 ',g' -> '-43,540,709' +xfmt2501 format 55825248E340 '\xe3\xaa\x85=12G' -> '5.5825248E+347' +xfmt2502 format -82014517E187 '\xef\xa5\x95<94,g' -> '-8.2014517e+194\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95\xef\xa5\x95' +xfmt2503 format 214E0 '' -> '214' +xfmt2504 format -868E0 ' 067.37g' -> '-000000000000000000000000000000000000000000000000000000000000000868' +xfmt2505 format 664E316 ' 99,f' -> ' 6,640,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt2506 format -265E340 '' -> '-2.65E+342' +xfmt2507 format 8561045906614137267212e0 '\xe9\x89\x8e^ 89.60%' -> '\xe9\x89\x8e 856104590661413726721200.000000000000000000000000000000000000000000000000000000000000%\xe9\x89\x8e' +xfmt2508 format -7838057265707558715312E0 '0,.30G' -> '-7,838,057,265,707,558,715,312' +xfmt2509 format 5954140880101873361855E98 '\xe3\x8d\x85=' -> '5.954140880101873361855E+119' +xfmt2510 format -7374542849823063939947e324 '\xe9\xb4\x9d=,G' -> '-7.374542849823063939947E+345' +xfmt2511 format 9412377290267134147077104745e0 '+,F' -> '+9,412,377,290,267,134,147,077,104,745' +xfmt2512 format -6540830394826168254855871080E0 ' ' -> '-6540830394826168254855871080' +xfmt2513 format 1705890474618912757663396748e181 '\xea\x80\x94^+,' -> '+1.705890474618912757663396748E+208' +xfmt2514 format -3237339848813143272813772913e175 '0' -> '-3.237339848813143272813772913E+202' +xfmt2515 format 959804706492949579954258317106999145E0 '01,.19' -> '9.598047064929495800E+35' +xfmt2516 format -673257897696686210227888388028060220e0 '+' -> '-673257897696686210227888388028060220' +xfmt2517 format 562909513784236388220200664227366836E232 '+30.3' -> ' +5.63E+267' +xfmt2518 format -451358264663026686167113729280437510e189 ' 0,f' -> '-451,358,264,663,026,686,167,113,729,280,437,510,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt2519 format 27596531126200219755243913978686912391e0 '0,%' -> '2,759,653,112,620,021,975,524,391,397,868,691,239,100%' +xfmt2520 format -72133277337308279407599947870772767653e0 '\xe5\x9a\x9f<-,.53g' -> '-72,133,277,337,308,279,407,599,947,870,772,767,653' +xfmt2521 format 89542302698392066720480631909428129501E82 ' 23' -> ' 8.9542302698392066720480631909428129501E+119' +xfmt2522 format -93999753193799237993899703636189765333E16 '\xe3\xa1\xbf=' -> '-9.3999753193799237993899703636189765333E+53' +xfmt2523 format 89221708478473751813942182901505E0 '\xe3\xb3\xbb>' -> '89221708478473751813942182901505' +xfmt2524 format -25366932936742789756022092170054e0 '' -> '-25366932936742789756022092170054' +xfmt2525 format 18919470962150028733468022337574e127 '\xe1\xac\xb4> 23,.90' -> ' 1.8919470962150028733468022337574E+158' +xfmt2526 format -37712973842683808965927250709052E225 '\xe7\x97\xb0< ,.59' -> '-3.7712973842683808965927250709052E+256' +xfmt2527 format 53e0 '0' -> '53' +xfmt2528 format -60e0 '\xe1\x88\xb9= 66,.55%' -> '-\xe1\x88\xb9\xe1\x88\xb9\xe1\x88\xb96,000.0000000000000000000000000000000000000000000000000000000%' +xfmt2529 format 72E287 '\xec\x88\xa4^+93,.71e' -> '\xec\x88\xa4\xec\x88\xa4\xec\x88\xa4\xec\x88\xa4\xec\x88\xa4\xec\x88\xa4\xec\x88\xa4+7.20000000000000000000000000000000000000000000000000000000000000000000000e+288\xec\x88\xa4\xec\x88\xa4\xec\x88\xa4\xec\x88\xa4\xec\x88\xa4\xec\x88\xa4\xec\x88\xa4' +xfmt2530 format -12e129 '' -> '-1.2E+130' +xfmt2531 format 83090036878704660859422919153529554332037032E0 '\xe7\xa8\xac<46' -> '83090036878704660859422919153529554332037032\xe7\xa8\xac\xe7\xa8\xac' +xfmt2532 format -45195985593355825642270972048486797555459753e0 '\xe8\x8f\x81^ 80,.14f' -> '\xe8\x8f\x81\xe8\x8f\x81\xe8\x8f\x81-45,195,985,593,355,825,642,270,972,048,486,797,555,459,753.00000000000000\xe8\x8f\x81\xe8\x8f\x81\xe8\x8f\x81' +xfmt2533 format 76491332173077291152948306282130156344048650E107 '\xee\xad\xa7< .10G' -> ' 7.649133217E+150' +xfmt2534 format -46138185984881129143711947919013803439173723E18 '\xe5\x9f\xb5<68' -> '-4.6138185984881129143711947919013803439173723E+61\xe5\x9f\xb5\xe5\x9f\xb5\xe5\x9f\xb5\xe5\x9f\xb5\xe5\x9f\xb5\xe5\x9f\xb5\xe5\x9f\xb5\xe5\x9f\xb5\xe5\x9f\xb5\xe5\x9f\xb5\xe5\x9f\xb5\xe5\x9f\xb5\xe5\x9f\xb5\xe5\x9f\xb5\xe5\x9f\xb5\xe5\x9f\xb5\xe5\x9f\xb5\xe5\x9f\xb5' +xfmt2535 format 81594338165678327414071132322122772006656e0 '\xe2\x88\x94^,.7F' -> '81,594,338,165,678,327,414,071,132,322,122,772,006,656.0000000' +xfmt2536 format -30958396966958580675136788630332822216953E0 ' ,' -> '-30,958,396,966,958,580,675,136,788,630,332,822,216,953' +xfmt2537 format 21654796065370576074509582262206748175252e353 '\xeb\xb9\xa7>50,.30' -> '\xeb\xb9\xa7\xeb\xb9\xa7\xeb\xb9\xa7\xeb\xb9\xa7\xeb\xb9\xa7\xeb\xb9\xa7\xeb\xb9\xa7\xeb\xb9\xa7\xeb\xb9\xa7\xeb\xb9\xa7\xeb\xb9\xa7\xeb\xb9\xa7\xeb\xb9\xa7\xeb\xb9\xa72.16547960653705760745095822622E+393' +xfmt2538 format -63835269108113292455980863760371171953823E369 '.96' -> '-6.3835269108113292455980863760371171953823E+409' +xfmt2539 format 3894549853415467952801339651646948480120E0 '.21' -> '3.89454985341546795280E+39' +xfmt2540 format -4281336392872337931506571023293560364218e0 '\xec\x92\x94=20,' -> '-4,281,336,392,872,337,931,506,571,023,293,560,364,218' +xfmt2541 format 6702318476306157256004891301625549672943E140 '073,f' -> '670,231,847,630,615,725,600,489,130,162,554,967,294,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt2542 format -1707371399489423826600059922711390387875E127 '0' -> '-1.707371399489423826600059922711390387875E+166' +xfmt2543 format 33000776424404542462328789581E0 '\xe1\x92\xa3^.64' -> '33000776424404542462328789581' +xfmt2544 format -81578112062221395533695347482E0 '\xe8\x88\xb8^41g' -> '\xe8\x88\xb8\xe8\x88\xb8\xe8\x88\xb8\xe8\x88\xb8\xe8\x88\xb8-81578112062221395533695347482\xe8\x88\xb8\xe8\x88\xb8\xe8\x88\xb8\xe8\x88\xb8\xe8\x88\xb8\xe8\x88\xb8' +xfmt2545 format 54095959685470957741580996497e315 '\xe3\x9a\x9a>5,.70' -> '5.4095959685470957741580996497E+343' +xfmt2546 format -42353121656216930861836712731e262 '-043,.15F' -> '-423,531,216,562,169,308,618,367,127,310,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000' +xfmt2547 format 3051199882E0 '\xe7\x9e\x99=+99,.60f' -> '+\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x99\xe7\x9e\x993,051,199,882.000000000000000000000000000000000000000000000000000000000000' +xfmt2548 format -5259195628e0 '' -> '-5259195628' +xfmt2549 format 7693323716E119 '.19' -> '7.693323716E+128' +xfmt2550 format -2320522077e268 '\xe8\x97\xa2^ 62,.54e' -> '-2.320522077000000000000000000000000000000000000000000000e+277' +xfmt2551 format 6E0 '\xe4\xb1\x9c>93f' -> '\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c\xe4\xb1\x9c6' +xfmt2552 format -8e0 '[^ ,' -> '-8' +xfmt2553 format 8e184 ' 0,.60' -> ' 8E+184' +xfmt2554 format -9e19 '\xe4\x81\x8b>-23.31' -> '\xe4\x81\x8b\xe4\x81\x8b\xe4\x81\x8b\xe4\x81\x8b\xe4\x81\x8b\xe4\x81\x8b\xe4\x81\x8b\xe4\x81\x8b\xe4\x81\x8b\xe4\x81\x8b\xe4\x81\x8b\xe4\x81\x8b\xe4\x81\x8b\xe4\x81\x8b\xe4\x81\x8b\xe4\x81\x8b\xe4\x81\x8b-9E+19' +xfmt2555 format 162053571e0 '' -> '162053571' +xfmt2556 format -421260864E0 '\xe1\xb9\x82^-58,.87' -> '\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82-421,260,864\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82\xe1\xb9\x82' +xfmt2557 format 566904190E180 '' -> '5.66904190E+188' +xfmt2558 format -900346884E123 '\xe1\xbe\x9c>,.28' -> '-9.00346884E+131' +xfmt2559 format 151332042481615867264447785141890610531428e0 '+041,.57F' -> '+151,332,042,481,615,867,264,447,785,141,890,610,531,428.000000000000000000000000000000000000000000000000000000000' +xfmt2560 format -578497479443345444803751292868965268205397e0 '\xe9\x96\xb8^.64E' -> '-5.7849747944334544480375129286896526820539700000000000000000000000E+41' +xfmt2561 format 409427727281518773971047095576711831652821e311 '33.79' -> '4.09427727281518773971047095576711831652821E+352' +xfmt2562 format -136685343604689161673580306095854811460834e277 '-018,.32g' -> '-1.3668534360468916167358030609585e+318' +xfmt2563 format 1234567890123456789.123 '77.44' -> ' 1234567890123456789.123' +xfmt2564 format -1234567890123456789.1234 '\xec\x82\xa4=.7n' -> '-1.234568e+18' +xfmt2565 format 2126241227592865927956204403996081e0 '\xec\x9b\x9c<59,f' -> '2,126,241,227,592,865,927,956,204,403,996,081\xec\x9b\x9c\xec\x9b\x9c\xec\x9b\x9c\xec\x9b\x9c\xec\x9b\x9c\xec\x9b\x9c\xec\x9b\x9c\xec\x9b\x9c\xec\x9b\x9c\xec\x9b\x9c\xec\x9b\x9c\xec\x9b\x9c\xec\x9b\x9c\xec\x9b\x9c' +xfmt2566 format -7622773886264919513493936158246283e0 '' -> '-7622773886264919513493936158246283' +xfmt2567 format 1349342725177928913405086505749552E241 '0G' -> '1.349342725177928913405086505749552E+274' +xfmt2568 format -7605228967697846063267764463596167e316 '\xe7\xb7\xa0=-,.9%' -> '-7,605,228,967,697,846,063,267,764,463,596,167,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000%' +xfmt2569 format 14103705374759054501385332461E0 '058,g' -> '00,000,000,000,000,014,103,705,374,759,054,501,385,332,461' +xfmt2570 format -71144118789173789697090842694E0 '\xef\xb2\xaa<+,.15F' -> '-71,144,118,789,173,789,697,090,842,694.000000000000000' +xfmt2571 format 57945765452402324320968617699E225 ' 0,f' -> ' 57,945,765,452,402,324,320,968,617,699,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt2572 format -41039363283896417830114132639E143 '\xe3\xaa\x8e>,.61' -> '-4.1039363283896417830114132639E+171' +xfmt2573 format 7662647408579583837084364501091831119363E0 '\xeb\x8b\x89^80' -> '\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x897662647408579583837084364501091831119363\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89\xeb\x8b\x89' +xfmt2574 format -7248332294986633831846135297691631771450e0 '\xef\x90\xb8^-94.97' -> '\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8-7248332294986633831846135297691631771450\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8\xef\x90\xb8' +xfmt2575 format 3442994888794630138579496957842400336248E377 '27,%' -> '34,429,948,887,946,301,385,794,969,578,424,003,362,480,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt2576 format -3200973206837490836536047733374961842853e115 '\xe8\x96\x80<-80%' -> '-3200973206837490836536047733374961842853000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt2577 format 973217453086234865182552480944360980595E0 '\xe9\xbf\xbf^-.32F' -> '973217453086234865182552480944360980595.00000000000000000000000000000000' +xfmt2578 format -392113275146733189914281258074339612908E0 '' -> '-392113275146733189914281258074339612908' +xfmt2579 format 255136550232862193160653567685127430859E269 '' -> '2.55136550232862193160653567685127430859E+307' +xfmt2580 format -508154783443982063562191176014567616954e93 '\xeb\xba\x93^.16' -> '-5.081547834439821E+131' +xfmt2581 format 4137466143897255165E0 '\xe4\x8e\xb3=+6,.49f' -> '+4,137,466,143,897,255,165.0000000000000000000000000000000000000000000000000' +xfmt2582 format -5962057275625064968E0 '\xea\x9e\xb2=-43,.96f' -> '-5,962,057,275,625,064,968.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2583 format 8677214975092041937e9 '\xe1\x88\xbc>16,' -> '8.677214975092041937E+27' +xfmt2584 format -9759750125394507240e168 '\xee\x91\x8c>2,.25' -> '-9.759750125394507240E+186' +xfmt2585 format 92268490643697124E0 '\xe1\xbc\xaa>.39' -> '92268490643697124' +xfmt2586 format -44096990536797527E0 '\xe5\x88\x93<.52f' -> '-44096990536797527.0000000000000000000000000000000000000000000000000000' +xfmt2587 format 72118441710258882e211 ' 057' -> ' 0000000000000000000000000000000007.2118441710258882E+227' +xfmt2588 format -96636008213198920e38 '-088,E' -> '-00,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,009.6636008213198920E+54' +xfmt2589 format 13796912055212917853268864E0 'g' -> '13796912055212917853268864' +xfmt2590 format -46348601072202036832101488E0 '028.71E' -> '-4.63486010722020368321014880000000000000000000000000000000000000000000000E+25' +xfmt2591 format 80383316785515557487627477E194 '\xec\xa2\xb7<-47,F' -> '8,038,331,678,551,555,748,762,747,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt2592 format -40340146171548546171750546E48 '\xec\xa2\xbd<+76.57e' -> '-4.034014617154854617175054600000000000000000000000000000000e+73\xec\xa2\xbd\xec\xa2\xbd\xec\xa2\xbd\xec\xa2\xbd\xec\xa2\xbd\xec\xa2\xbd\xec\xa2\xbd\xec\xa2\xbd\xec\xa2\xbd\xec\xa2\xbd\xec\xa2\xbd\xec\xa2\xbd' +xfmt2593 format 5e0 ' 096,.82E' -> ' 0,000,005.0000000000000000000000000000000000000000000000000000000000000000000000000000000000E+0' +xfmt2594 format -1e0 '\xe8\xba\xbd=+76,.85' -> '-\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd\xe8\xba\xbd1' +xfmt2595 format 1e367 '0.53e' -> '1.00000000000000000000000000000000000000000000000000000e+367' +xfmt2596 format -2E270 '-0,' -> '-2E+270' +xfmt2597 format 571434541671980417e0 '\xe1\x89\xba<-58,.28G' -> '571,434,541,671,980,417\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba\xe1\x89\xba' +xfmt2598 format -954624955082426653E0 '\xee\xb8\xa9>-20.45' -> '\xee\xb8\xa9-954624955082426653' +xfmt2599 format 402380321876577411E169 '0,E' -> '4.02380321876577411E+186' +xfmt2600 format -927844882397776415e226 '\xe1\xa3\x88^-89,.19' -> '\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88-9.27844882397776415E+243\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88\xe1\xa3\x88' +xfmt2601 format 37050073900316535983106143649415067436E0 '-f' -> '37050073900316535983106143649415067436' +xfmt2602 format -33410019997093021662174152846502391748E0 '\xea\x80\xbc> 50,F' -> '-33,410,019,997,093,021,662,174,152,846,502,391,748' +xfmt2603 format 99055872548021232772583221593112374271E269 '\xe1\xad\x86>+' -> '+9.9055872548021232772583221593112374271E+306' +xfmt2604 format -68315046957469921474917939043565084955E338 '\xe4\x9c\x85^1' -> '-6.8315046957469921474917939043565084955E+375' +xfmt2605 format 32e0 '' -> '32' +xfmt2606 format -80e0 ' 093,.17' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,080' +xfmt2607 format 52e147 '-31.15' -> ' 5.2E+148' +xfmt2608 format -80E373 ' 0,' -> '-8.0E+374' +xfmt2609 format 48117527057965471609554e0 '\xe6\xa3\x9b>-41,.28E' -> '\xe6\xa3\x9b\xe6\xa3\x9b\xe6\xa3\x9b\xe6\xa3\x9b\xe6\xa3\x9b\xe6\xa3\x9b\xe6\xa3\x9b4.8117527057965471609554000000E+22' +xfmt2610 format -81660218519774592209269E0 '\xed\x89\xb3> 73,.60f' -> '-81,660,218,519,774,592,209,269.000000000000000000000000000000000000000000000000000000000000' +xfmt2611 format 42096188721875784018422e241 '' -> '4.2096188721875784018422E+263' +xfmt2612 format -15737253185755110801983e317 '\xe9\xae\x9d= 69,.14e' -> '-\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d\xe9\xae\x9d1.57372531857551e+339' +xfmt2613 format 49723e0 '.47n' -> '49723' +xfmt2614 format -68064E0 '\xeb\xad\x88>6' -> '-68064' +xfmt2615 format 64262E289 '' -> '6.4262E+293' +xfmt2616 format -83936e269 ',.33' -> '-8.3936E+273' +xfmt2617 format 866404347718278359306546e0 '-,.80G' -> '866,404,347,718,278,359,306,546' +xfmt2618 format -646526766837794559110147e0 '\xef\x95\xa1^63g' -> '\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1-646526766837794559110147\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1\xef\x95\xa1' +xfmt2619 format 534222594632586308035059e360 '089.43' -> '000000000000000000000000000000000000000000000000000000000005.34222594632586308035059E+383' +xfmt2620 format -340566993417767124817078e170 '+,F' -> '-34,056,699,341,776,712,481,707,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt2621 format 729138714E0 '\xe8\xb9\x81^+33,' -> '\xe8\xb9\x81\xe8\xb9\x81\xe8\xb9\x81\xe8\xb9\x81\xe8\xb9\x81\xe8\xb9\x81\xe8\xb9\x81\xe8\xb9\x81\xe8\xb9\x81\xe8\xb9\x81+729,138,714\xe8\xb9\x81\xe8\xb9\x81\xe8\xb9\x81\xe8\xb9\x81\xe8\xb9\x81\xe8\xb9\x81\xe8\xb9\x81\xe8\xb9\x81\xe8\xb9\x81\xe8\xb9\x81\xe8\xb9\x81' +xfmt2622 format -619551017e0 '-076' -> '-000000000000000000000000000000000000000000000000000000000000000000619551017' +xfmt2623 format 417729176E316 '\xe7\x9a\x81>' -> '4.17729176E+324' +xfmt2624 format -489891443e379 '\xe2\xb6\xa4^22,.50%' -> '-489,891,443,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000%' +xfmt2625 format 8209e0 '\xe2\xbf\x9d>-76,.16%' -> '\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d\xe2\xbf\x9d820,900.0000000000000000%' +xfmt2626 format -8268e0 '\xe7\xa9\xb9^.8F' -> '-8268.00000000' +xfmt2627 format 8791e107 '+0.58G' -> '+8.791E+110' +xfmt2628 format -5180e31 '\xe7\xb7\xa1^-8,.28f' -> '-51,800,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000' +xfmt2629 format 6252316632961209112396683782021e0 '' -> '6252316632961209112396683782021' +xfmt2630 format -1533777227780937542091512559817e0 '' -> '-1533777227780937542091512559817' +xfmt2631 format 9405322402643017437060605626546e295 '\xec\x9d\x92<,e' -> '9.405322402643017437060605626546e+325' +xfmt2632 format -8324503413445860370510805408862e365 '' -> '-8.324503413445860370510805408862E+395' +xfmt2633 format 83643321673275634626674073441110307e0 '\xe5\xb4\xb7<77.22' -> '8.364332167327563462667E+34\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7\xe5\xb4\xb7' +xfmt2634 format -27790834657446407209841275610798786E0 '.72' -> '-27790834657446407209841275610798786' +xfmt2635 format 67509512104343896188107219062136784e54 '\xe8\x84\xb5<-82,.47F' -> '67,509,512,104,343,896,188,107,219,062,136,784,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000' +xfmt2636 format -89111397650052739705140726404801610E368 '.91' -> '-8.9111397650052739705140726404801610E+402' +xfmt2637 format 24896020131601591091310817224051259827920893E0 '\xe9\x83\x9d>' -> '24896020131601591091310817224051259827920893' +xfmt2638 format -86434109696593355330034473420796041181342142E0 '\xec\xa0\x94< 89,.66g' -> '-86,434,109,696,593,355,330,034,473,420,796,041,181,342,142\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94\xec\xa0\x94' +xfmt2639 format 88464621909590959320770949040356701399951539E51 ' 095,%' -> ' 8,846,462,190,959,095,932,077,094,904,035,670,139,995,153,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt2640 format -76865998489775754665923241786922053623049742E142 '\xe2\xae\x99^+51,.17e' -> '\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99-7.68659984897757547e+185\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99\xe2\xae\x99' +xfmt2641 format 5870545E0 '\xe1\x8f\xaa>29,.42E' -> '5.870545000000000000000000000000000000000000E+6' +xfmt2642 format -6452643E0 '\xef\xb9\xae=,G' -> '-6,452,643' +xfmt2643 format 6430945e12 '\xdc\xa1=73,.36' -> '\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa16.430945E+18' +xfmt2644 format -3193048E189 '-0,.41' -> '-3.193048E+195' +xfmt2645 format 27350770074221e0 '+13,' -> '+27,350,770,074,221' +xfmt2646 format -66726561767161E0 '03,' -> '-66,726,561,767,161' +xfmt2647 format 14449465516498e67 '\xea\x86\xb6> ,G' -> ' 1.4449465516498E+80' +xfmt2648 format -78619013300883E264 ' 075%' -> '-7861901330088300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt2649 format 354892310285219840499e0 '\xe9\x93\xb5= 43,.25G' -> ' \xe9\x93\xb5\xe9\x93\xb5\xe9\x93\xb5\xe9\x93\xb5\xe9\x93\xb5\xe9\x93\xb5\xe9\x93\xb5\xe9\x93\xb5\xe9\x93\xb5\xe9\x93\xb5\xe9\x93\xb5\xe9\x93\xb5\xe9\x93\xb5\xe9\x93\xb5\xe9\x93\xb5354,892,310,285,219,840,499' +xfmt2650 format -465862891505345494809E0 '\xe1\xb0\xa5=-2,.43g' -> '-465,862,891,505,345,494,809' +xfmt2651 format 385661555706562202428e127 '\xc9\xa4 '3.85661555706562202428e+147' +xfmt2652 format -595565424288893671906e122 '\xeb\xa1\x8f<-,.15%' -> '-5,955,654,242,888,936,719,060,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000%' +xfmt2653 format 396e0 '+.77' -> '+396' +xfmt2654 format -147E0 'E' -> '-1.47E+2' +xfmt2655 format 249e151 '047.10' -> '000000000000000000000000000000000000002.49E+153' +xfmt2656 format -844E126 '' -> '-8.44E+128' +xfmt2657 format 935558348674044274479844693226E0 '0.3' -> '9.36E+29' +xfmt2658 format -289185828992125195289611330396e0 '' -> '-289185828992125195289611330396' +xfmt2659 format 648129824331904046305469972025e116 '\xe4\x8b\x83<-85,.39e' -> '6.481298243319040463054699720250000000000e+145\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83\xe4\x8b\x83' +xfmt2660 format -273875051097390553090605819626E80 '\xe6\xaf\x85<-73,.31g' -> '-2.73875051097390553090605819626e+109\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85\xe6\xaf\x85' +xfmt2661 format 9395618894023369857892E0 '' -> '9395618894023369857892' +xfmt2662 format -4954715790280866714566e0 '\xe4\xb9\x9e>+77,.84e' -> '-4.954715790280866714566000000000000000000000000000000000000000000000000000000000000000e+21' +xfmt2663 format 4133120909441074617239e365 '' -> '4.133120909441074617239E+386' +xfmt2664 format -9841378892902450478683E169 ' 0E' -> '-9.841378892902450478683E+190' +xfmt2665 format 25674900136908306955730876853571e0 '\xe2\x8d\xa1>+56.5G' -> '\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1\xe2\x8d\xa1+2.5675E+31' +xfmt2666 format -21485380717140371248934255754954E0 '04E' -> '-2.1485380717140371248934255754954E+31' +xfmt2667 format 42701057530464750942682914903444e84 '' -> '4.2701057530464750942682914903444E+115' +xfmt2668 format -65979667539558057963325028721525e38 '0g' -> '-6.5979667539558057963325028721525e+69' +xfmt2669 format 9117493659185700E0 '\xef\xad\xb9^-5,.1g' -> '9e+15' +xfmt2670 format -8956563748545725E0 '82' -> ' -8956563748545725' +xfmt2671 format 5500079597591095E224 '' -> '5.500079597591095E+239' +xfmt2672 format -6239672820865938e230 '0' -> '-6.239672820865938E+245' +xfmt2673 format 13729087721474220826674656745762345621098E0 '\xe8\xa1\xa0^69' -> '\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa013729087721474220826674656745762345621098\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0\xe8\xa1\xa0' +xfmt2674 format -24696871131448816019608331797887610517166e0 '' -> '-24696871131448816019608331797887610517166' +xfmt2675 format 30857121946478887731818744384345710101697E186 'g' -> '3.0857121946478887731818744384345710101697e+226' +xfmt2676 format -18669897723660813718716981093138855337370e143 '-020,.20%' -> '-186,698,977,236,608,137,187,169,810,931,388,553,373,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000%' +xfmt2677 format 454496763171391037075168442e0 '' -> '454496763171391037075168442' +xfmt2678 format -755431359088134510000106589e0 '\xd2\x8b= 63.39' -> '-\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b\xd2\x8b755431359088134510000106589' +xfmt2679 format 443120732118568284725269928E253 ' 0.82e' -> ' 4.4312073211856828472526992800000000000000000000000000000000000000000000000000000000e+279' +xfmt2680 format -958151763882458994400155843e239 '' -> '-9.58151763882458994400155843E+265' +xfmt2681 format 3169886642417366887937556574778318979415829e0 '\xe0\xa4\x80=,' -> '3,169,886,642,417,366,887,937,556,574,778,318,979,415,829' +xfmt2682 format -7131741674122179472611804842525285697065634E0 '\xe3\x91\xa2^ 59,.33e' -> '\xe3\x91\xa2\xe3\x91\xa2\xe3\x91\xa2\xe3\x91\xa2\xe3\x91\xa2\xe3\x91\xa2\xe3\x91\xa2\xe3\x91\xa2\xe3\x91\xa2-7.131741674122179472611804842525286e+42\xe3\x91\xa2\xe3\x91\xa2\xe3\x91\xa2\xe3\x91\xa2\xe3\x91\xa2\xe3\x91\xa2\xe3\x91\xa2\xe3\x91\xa2\xe3\x91\xa2\xe3\x91\xa2' +xfmt2683 format 7096959510780368661784421197119358562001432E209 '.72' -> '7.096959510780368661784421197119358562001432E+251' +xfmt2684 format -8365169252892115152020253809290844849847446E139 '' -> '-8.365169252892115152020253809290844849847446E+181' +xfmt2685 format 123456.1 '' -> '123456.1' +xfmt2686 format -1234567.1234567890123456789012 '7>80,.72E' -> '77-1.234567123456789012345678901200000000000000000000000000000000000000000000E+6' +xfmt2687 format 9978493119654204748804E0 'E' -> '9.978493119654204748804E+21' +xfmt2688 format -7691173031315827130325E0 '' -> '-7691173031315827130325' +xfmt2689 format 7664445504206684019973e245 '\xed\x82\xaa< 18,.29g' -> ' 7.664445504206684019973e+266' +xfmt2690 format -4578940478672956984950e269 '\xe8\xab\x96<-15,.93E' -> '-4.578940478672956984950000000000000000000000000000000000000000000000000000000000000000000000000E+290' +xfmt2691 format 879167286074656377666420118E0 '\xe8\x89\x87<69,.47' -> '879,167,286,074,656,377,666,420,118\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87\xe8\x89\x87' +xfmt2692 format -809630879060137960404412884e0 '+.59' -> '-809630879060137960404412884' +xfmt2693 format 111714640604485564707679635E365 '\xe4\x81\xb0<+,.13%' -> '+1,117,146,406,044,855,647,076,796,350,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000%' +xfmt2694 format -767365172220346530550113339e238 '\xd5\x90= .48%' -> '-767365172220346530550113339000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000%' +xfmt2695 format 3018302612603148230779069640498705738e0 '\xe7\xa9\xa2<+2.69n' -> '+3018302612603148230779069640498705738' +xfmt2696 format -9775267116406608963099246840249540585e0 '\xe4\x9c\xb7>-.91n' -> '-9775267116406608963099246840249540585' +xfmt2697 format 2949805899259601384046079588064319038E265 '' -> '2.949805899259601384046079588064319038E+301' +xfmt2698 format -4770605237587401206624726792561960299E159 '\xe5\xb6\x91=' -> '-4.770605237587401206624726792561960299E+195' +xfmt2699 format 696312158718960524480486750566537199E0 ',' -> '696,312,158,718,960,524,480,486,750,566,537,199' +xfmt2700 format -995149479721638232711747495671070427e0 '0E' -> '-9.95149479721638232711747495671070427E+35' +xfmt2701 format 371444885521942732265200531286696823E364 '\xe1\x99\xbc>e' -> '3.71444885521942732265200531286696823e+399' +xfmt2702 format -573546094855583297409913961779050222e351 ',' -> '-5.73546094855583297409913961779050222E+386' +xfmt2703 format 267276167959055866E0 '+.34' -> '+267276167959055866' +xfmt2704 format -726052351771193417e0 '0,' -> '-726,052,351,771,193,417' +xfmt2705 format 368080864074418115E248 '\xe8\xab\x9d^-50,' -> '\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d3.68080864074418115E+265\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d\xe8\xab\x9d' +xfmt2706 format -215056580068382328e365 'G' -> '-2.15056580068382328E+382' +xfmt2707 format 275037480e0 '\xe7\x90\x8f=,.18' -> '275,037,480' +xfmt2708 format -789994832E0 '\xec\x93\xa2=' -> '-789994832' +xfmt2709 format 825596112e143 '+066G' -> '+000000000000000000000000000000000000000000000000008.25596112E+151' +xfmt2710 format -259970283e212 '\xed\x83\xa8=69,.24F' -> '-25,997,028,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000' +xfmt2711 format 299065e0 '\xec\xa6\x9e^-,.90f' -> '299,065.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2712 format -934470e0 '\xee\xa1\x99< 78,.25' -> '-934,470\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99\xee\xa1\x99' +xfmt2713 format 721246e224 '64' -> ' 7.21246E+229' +xfmt2714 format -578494e9 '\xed\x95\xb8>+53g' -> '\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8\xed\x95\xb8-5.78494e+14' +xfmt2715 format 3033355791188275e0 '30.90' -> ' 3033355791188275' +xfmt2716 format -5019752547601544e0 '-63,' -> ' -5,019,752,547,601,544' +xfmt2717 format 8588011762323744E60 '\xed\x99\x83<+' -> '+8.588011762323744E+75' +xfmt2718 format -6008269794529906E141 '\xe3\x92\xbc>,.5' -> '-6.0083E+156' +xfmt2719 format 89321322277724472881014375055034329629324E0 '\xef\x88\xb0= 27,.1' -> ' \xef\x88\xb0\xef\x88\xb0\xef\x88\xb0\xef\x88\xb0\xef\x88\xb0\xef\x88\xb0\xef\x88\xb0\xef\x88\xb0\xef\x88\xb0\xef\x88\xb0\xef\x88\xb0\xef\x88\xb0\xef\x88\xb0\xef\x88\xb0\xef\x88\xb0\xef\x88\xb0\xef\x88\xb0\xef\x88\xb0\xef\x88\xb0\xef\x88\xb0\xef\x88\xb09E+40' +xfmt2720 format -32191751442390575741582268227435539471002e0 ' 072,.56' -> '-000,000,000,000,032,191,751,442,390,575,741,582,268,227,435,539,471,002' +xfmt2721 format 30944380206089070733107273074524656109057E246 '\xe5\x92\x8f^+70,.46f' -> '+30,944,380,206,089,070,733,107,273,074,524,656,109,057,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000' +xfmt2722 format -95315432063691614267213710464561374046827e302 '\xe7\x95\xb4<-G' -> '-9.5315432063691614267213710464561374046827E+342' +xfmt2723 format 6477007471E0 '' -> '6477007471' +xfmt2724 format -1040340787E0 '-37e' -> ' -1.040340787e+9' +xfmt2725 format 5729415948E148 '\xe2\xa0\xba<' -> '5.729415948E+157' +xfmt2726 format -4295795469e137 '+0,.81f' -> '-429,579,546,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2727 format 17698568929242391825027899087030007343e0 '\xeb\x97\xb6=,g' -> '17,698,568,929,242,391,825,027,899,087,030,007,343' +xfmt2728 format -58564670289453471855343109374999638602e0 '-' -> '-58564670289453471855343109374999638602' +xfmt2729 format 15362741585790163683335439378820057288E302 '0G' -> '1.5362741585790163683335439378820057288E+339' +xfmt2730 format -80507950729374519981287280672356996569E228 '\xe9\x91\xab>,g' -> '-8.0507950729374519981287280672356996569e+265' +xfmt2731 format 83695E0 '\xec\xae\xaf=39,.9e' -> '\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf\xec\xae\xaf8.369500000e+4' +xfmt2732 format -75391e0 '+01,.58' -> '-75,391' +xfmt2733 format 38545E174 '27,.26' -> ' 3.8545E+178' +xfmt2734 format -81532E191 '\xe4\xa7\xac^n' -> '-8.1532e+195' +xfmt2735 format 761094042204339385005764070115060934482e0 '\xe3\x8d\xb2= 87,.46%' -> ' 76,109,404,220,433,938,500,576,407,011,506,093,448,200.0000000000000000000000000000000000000000000000%' +xfmt2736 format -515479282271762639169519779618592958392E0 '+020,E' -> '-5.15479282271762639169519779618592958392E+38' +xfmt2737 format 464865733389302926512018181308272920771E289 '\xe6\xb4\xba<+,' -> '+4.64865733389302926512018181308272920771E+327' +xfmt2738 format -316993225269299476496285908230087203362E60 '+056e' -> '-000000000003.16993225269299476496285908230087203362e+98' +xfmt2739 format 370730228436988351945125157448420e0 '55' -> ' 370730228436988351945125157448420' +xfmt2740 format -231921149673656686680368653224243E0 '047' -> '-0000000000000231921149673656686680368653224243' +xfmt2741 format 626191695630783807519310717522773E353 '\xeb\xaf\x86>-24,.15' -> '\xeb\xaf\x86\xeb\xaf\x86\xeb\xaf\x866.26191695630784E+385' +xfmt2742 format -123040747782812748376268788562842e314 '\xe4\x83\x99>+79,.10%' -> '-1,230,407,477,828,127,483,762,687,885,628,420,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000%' +xfmt2743 format 2363484e0 'G' -> '2363484' +xfmt2744 format -2422617e0 '+068,.95' -> '-000,000,000,000,000,000,000,000,000,000,000,000,000,000,002,422,617' +xfmt2745 format 1975137E76 '' -> '1.975137E+82' +xfmt2746 format -8837666e49 '89,' -> ' -8.837666E+55' +xfmt2747 format 455577144638395566966787221096e0 '0,' -> '455,577,144,638,395,566,966,787,221,096' +xfmt2748 format -668595554083756560152781930429e0 ',.58f' -> '-668,595,554,083,756,560,152,781,930,429.0000000000000000000000000000000000000000000000000000000000' +xfmt2749 format 262340243287983866105793636175E96 '-051,.97' -> '0,000,000,000,002.62340243287983866105793636175E+125' +xfmt2750 format -868010394711098239827220819178E292 '\xe2\x93\x98<93F' -> '-8680103947110982398272208191780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2751 format 612E0 '049.68G' -> '0000000000000000000000000000000000000000000000612' +xfmt2752 format -814e0 '\xe3\xbf\xa2<28,.97' -> '-814\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2\xe3\xbf\xa2' +xfmt2753 format 653e6 '' -> '6.53E+8' +xfmt2754 format -584E311 ' ' -> '-5.84E+313' +xfmt2755 format 5484531412606906087E0 ' 0,.6e' -> ' 5.484531e+18' +xfmt2756 format -6681565476645005965E0 '\xea\x98\xab^,.48f' -> '-6,681,565,476,645,005,965.000000000000000000000000000000000000000000000000' +xfmt2757 format 6242116602689119646e146 '\xec\xae\xa3^+,.11' -> '+6.2421166027E+164' +xfmt2758 format -1688172826801539026e285 '\xe6\xb2\x8b>+75,.29E' -> '\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b\xe6\xb2\x8b-1.68817282680153902600000000000E+303' +xfmt2759 format 26095224450821e0 '' -> '26095224450821' +xfmt2760 format -15310779796121e0 '\xe8\x91\xbe>69,.57G' -> '\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe\xe8\x91\xbe-15,310,779,796,121' +xfmt2761 format 17059094333761e216 '%' -> '1705909433376100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt2762 format -36089058171412e92 '\xef\x8e\x9f>30e' -> '\xef\x8e\x9f\xef\x8e\x9f\xef\x8e\x9f\xef\x8e\x9f\xef\x8e\x9f\xef\x8e\x9f\xef\x8e\x9f\xef\x8e\x9f\xef\x8e\x9f-3.6089058171412e+105' +xfmt2763 format 76e0 '\xe9\xa3\xb5<-69,.72%' -> '7,600.000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt2764 format -54e0 '\xec\xa0\xab= ,.67g' -> '-54' +xfmt2765 format 63e119 '79' -> ' 6.3E+120' +xfmt2766 format -65e257 '\xee\xa7\xad^+,.64E' -> '-6.5000000000000000000000000000000000000000000000000000000000000000E+258' +xfmt2767 format 9563942550235976388201644e0 '\xe8\x98\xac=97,' -> '\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac\xe8\x98\xac9,563,942,550,235,976,388,201,644' +xfmt2768 format -4875561496294366437070457E0 '\xe7\xa7\x8d>39,' -> '\xe7\xa7\x8d\xe7\xa7\x8d\xe7\xa7\x8d\xe7\xa7\x8d\xe7\xa7\x8d-4,875,561,496,294,366,437,070,457' +xfmt2769 format 6682168236676232574384585e303 ',' -> '6.682168236676232574384585E+327' +xfmt2770 format -7001660976085103572293251e93 'n' -> '-7.001660976085103572293251e+117' +xfmt2771 format 706884124568e0 '' -> '706884124568' +xfmt2772 format -688546807826E0 '+0,' -> '-688,546,807,826' +xfmt2773 format 104752627145E133 '\xe6\x85\xb8<+57,.52G' -> '+1.04752627145E+144\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8\xe6\x85\xb8' +xfmt2774 format -410072838066E26 '\xec\x86\xaa<+,.51E' -> '-4.100728380660000000000000000000000000000000000000000E+37' +xfmt2775 format 86591247e0 '-06' -> '86591247' +xfmt2776 format -60298217e0 ' 03.63' -> '-60298217' +xfmt2777 format 91151883e259 '-059,.20%' -> '91,151,883,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000%' +xfmt2778 format -91566506e109 '' -> '-9.1566506E+116' +xfmt2779 format 66824381365631029416e0 '' -> '66824381365631029416' +xfmt2780 format -60521871339784378403e0 '17' -> '-60521871339784378403' +xfmt2781 format 87446341620036104326e351 '074' -> '0000000000000000000000000000000000000000000000008.7446341620036104326E+370' +xfmt2782 format -50688114021722981906E322 '\xeb\xa9\x8c=-71,.15' -> '-\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c\xeb\xa9\x8c5.06881140217230E+341' +xfmt2783 format 8383245656429967937627708546E0 '\xef\x97\xa7>-,.53%' -> '838,324,565,642,996,793,762,770,854,600.00000000000000000000000000000000000000000000000000000%' +xfmt2784 format -6186083500749388838001299899E0 '' -> '-6186083500749388838001299899' +xfmt2785 format 5603181681996208928617011127e268 ' 0,.14' -> ' 5.6031816819962E+295' +xfmt2786 format -6634744103902453891608344473E307 '\xed\x9b\xa7^+95,G' -> '\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7-6.634744103902453891608344473E+334\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7\xed\x9b\xa7' +xfmt2787 format 44324331150e0 '+0,' -> '+44,324,331,150' +xfmt2788 format -94919611908E0 '\xe9\xa9\xb4 '-94919611908' +xfmt2789 format 13764944081e333 '+0,.63' -> '+1.3764944081E+343' +xfmt2790 format -65211908709e76 '\xee\x98\xb0^' -> '-6.5211908709E+86' +xfmt2791 format 1429875383296877779904498108902E0 '\xec\x82\x86^-44,.89E' -> '1.42987538329687777990449810890200000000000000000000000000000000000000000000000000000000000E+30' +xfmt2792 format -2622293033408736691534146025984e0 '' -> '-2622293033408736691534146025984' +xfmt2793 format 1545739646540050426930423631006e271 '' -> '1.545739646540050426930423631006E+301' +xfmt2794 format -1309495393636853291245850851710e250 '+085.5n' -> '-00000000000000000000000000000000000000000000000000000000000000000000000001.3095e+280' +xfmt2795 format 8936683478963418571521448021153246E0 '0g' -> '8936683478963418571521448021153246' +xfmt2796 format -6511161974728428794060031617809033E0 '\xe9\xae\xa6=.89n' -> '-6511161974728428794060031617809033' +xfmt2797 format 9163530574383779152198376568175208e114 '\xe3\x9b\xb2^ .61' -> ' 9.163530574383779152198376568175208E+147' +xfmt2798 format -2046384754133801879140275678734840E162 '\xe3\x83\xad>33,.86' -> '-2.046384754133801879140275678734840E+195' +xfmt2799 format 16417483320167993789696E0 ' 012,.12%' -> ' 1,641,748,332,016,799,378,969,600.000000000000%' +xfmt2800 format -11244888994640120082522e0 '' -> '-11244888994640120082522' +xfmt2801 format 51286910479291850826624e134 '\xec\xae\x94=72,.33g' -> '\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x94\xec\xae\x945.1286910479291850826624e+156' +xfmt2802 format -52107495467670106193006e284 '\xec\x9f\x92^+.4' -> '-5.211E+306' +xfmt2803 format 832910035393394653569016956819998472345760E0 '+' -> '+832910035393394653569016956819998472345760' +xfmt2804 format -589266447542315886364593851326894001223348e0 '\xe5\xb8\xbd< 61,.68e' -> '-5.89266447542315886364593851326894001223348000000000000000000000000000e+41' +xfmt2805 format 755544854843183139428624581309038166924979E13 ' ' -> ' 7.55544854843183139428624581309038166924979E+54' +xfmt2806 format -800444921527313812490784291085755513015625e215 '\xe9\x96\xa1^ 34,.14E' -> '\xe9\x96\xa1\xe9\x96\xa1\xe9\x96\xa1\xe9\x96\xa1\xe9\x96\xa1\xe9\x96\xa1-8.00444921527314E+256\xe9\x96\xa1\xe9\x96\xa1\xe9\x96\xa1\xe9\x96\xa1\xe9\x96\xa1\xe9\x96\xa1' +xfmt2807 format 1234567890123456789.12345 '\xca\x8a= ,.56e' -> ' 1.23456789012345678912345000000000000000000000000000000000e+18' +xfmt2808 format -123456789.12345 '\xee\x99\x87<64.77' -> '-123456789.12345\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87\xee\x99\x87' +xfmt2809 format 1249194137735833730427453890701E0 '\xe2\x8b\xb2^+75,e' -> '\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2+1.249194137735833730427453890701e+30\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2\xe2\x8b\xb2' +xfmt2810 format -3102489689241903637417899476006e0 '2,.96' -> '-3,102,489,689,241,903,637,417,899,476,006' +xfmt2811 format 2403906659878264131600398511284E145 '60,' -> ' 2.403906659878264131600398511284E+175' +xfmt2812 format -7656118276165455547224653076086E30 '\xe3\x9d\xa8^' -> '-7.656118276165455547224653076086E+60' +xfmt2813 format 1483877487951059509238565323E0 '\xe6\x9c\x96>e' -> '1.483877487951059509238565323e+27' +xfmt2814 format -7269008091750546269239269402e0 '\xe6\xaa\xa6>-52,.54f' -> '-7,269,008,091,750,546,269,239,269,402.000000000000000000000000000000000000000000000000000000' +xfmt2815 format 2047451479882357672325035478e265 '\xe4\xaa\x86< ,%' -> ' 2,047,451,479,882,357,672,325,035,478,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt2816 format -4540669313011489726393492663E7 '47,' -> ' -4.540669313011489726393492663E+34' +xfmt2817 format 436084E0 '\xed\x9d\xbd^,' -> '436,084' +xfmt2818 format -842254E0 '0' -> '-842254' +xfmt2819 format 419595e367 '0' -> '4.19595E+372' +xfmt2820 format -104790E12 '\xe7\x98\xb8^35,.17f' -> '-104,790,000,000,000,000.00000000000000000' +xfmt2821 format 90390729393853693526e0 '\xec\xa8\x86<+86,.65' -> '+90,390,729,393,853,693,526\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86\xec\xa8\x86' +xfmt2822 format -91895784280546230558E0 '\xe2\xa6\xb4= 48,' -> '-\xe2\xa6\xb4\xe2\xa6\xb4\xe2\xa6\xb4\xe2\xa6\xb4\xe2\xa6\xb4\xe2\xa6\xb4\xe2\xa6\xb4\xe2\xa6\xb4\xe2\xa6\xb4\xe2\xa6\xb4\xe2\xa6\xb4\xe2\xa6\xb4\xe2\xa6\xb4\xe2\xa6\xb4\xe2\xa6\xb4\xe2\xa6\xb4\xe2\xa6\xb4\xe2\xa6\xb4\xe2\xa6\xb4\xe2\xa6\xb4\xe2\xa6\xb491,895,784,280,546,230,558' +xfmt2823 format 49424582072823507311e342 '\xe8\xbf\xa4^ ,.88' -> ' 4.9424582072823507311E+361' +xfmt2824 format -20341705371807888272E176 'n' -> '-2.0341705371807888272e+195' +xfmt2825 format 15796765271722067714543908954331301416434E0 '\xe9\x9d\xae= 23,.86f' -> ' 15,796,765,271,722,067,714,543,908,954,331,301,416,434.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2826 format -59047349258650915597192163601217707306752E0 '\xef\xbb\xa1= 21,.31%' -> '-5,904,734,925,865,091,559,719,216,360,121,770,730,675,200.0000000000000000000000000000000%' +xfmt2827 format 97335892934610780280671195738157237890656E182 '0,' -> '9.7335892934610780280671195738157237890656E+222' +xfmt2828 format -70415409278779880097786245644608008805445E328 '\xec\xbf\xbb=-50.15' -> '-\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb\xec\xbf\xbb7.04154092787799E+368' +xfmt2829 format 347653970650709848762285746911e0 '\xeb\xbb\xae> 46,.6G' -> '\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae\xeb\xbb\xae 3.47654E+29' +xfmt2830 format -850981204046121932034764375123e0 '\xed\x90\x9c> .93g' -> '-850981204046121932034764375123' +xfmt2831 format 939222261608643564483243565565E295 '\xeb\x9d\xba= ,.50g' -> ' 9.39222261608643564483243565565e+324' +xfmt2832 format -399811795436593138178068283756E38 '\xe6\xa0\xa5=74,.13G' -> '-\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa5\xe6\xa0\xa53.998117954366E+67' +xfmt2833 format 98015053789449e0 '+027,.67' -> '+00,000,098,015,053,789,449' +xfmt2834 format -98250160110167e0 '\xe8\x9f\x8f= %' -> '-9825016011016700%' +xfmt2835 format 24171451108341e106 '+,' -> '+2.4171451108341E+119' +xfmt2836 format -38089470023259e196 '091,.21G' -> '-000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,003.8089470023259E+209' +xfmt2837 format 77087867579281172828287972360464e0 '78' -> ' 77087867579281172828287972360464' +xfmt2838 format -94888061487048430644626066497328E0 '' -> '-94888061487048430644626066497328' +xfmt2839 format 52094475257293755214389456828982E269 '.34e' -> '5.2094475257293755214389456828982000e+300' +xfmt2840 format -37118724257454957827088066281701e242 '\xe7\xbd\x9d^-28,.34%' -> '-371,187,242,574,549,578,270,880,662,817,010,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000%' +xfmt2841 format 69113E0 '\xe0\xae\xa8=+63.21F' -> '+\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa8\xe0\xae\xa869113.000000000000000000000' +xfmt2842 format -39562e0 ' 082,.79E' -> '-3.9562000000000000000000000000000000000000000000000000000000000000000000000000000E+4' +xfmt2843 format 39332e34 '\xea\x8a\x94>%' -> '39332000000000000000000000000000000000000%' +xfmt2844 format -85091e273 '-060' -> '-0000000000000000000000000000000000000000000000008.5091E+277' +xfmt2845 format 9117365392875329961989631e0 '0.18G' -> '9.11736539287532996E+24' +xfmt2846 format -4382058771105027579560738E0 '\xe3\xb5\x9e=99' -> '-\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e\xe3\xb5\x9e4382058771105027579560738' +xfmt2847 format 1493838118193723442546688e232 '014,.18e' -> '1.493838118193723443e+256' +xfmt2848 format -9030916111320403932642084e7 '-083,E' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,009.030916111320403932642084E+31' +xfmt2849 format 430684310e0 '\xe6\x83\xb7=76,.54' -> '\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7\xe6\x83\xb7430,684,310' +xfmt2850 format -325196490e0 '064,.43' -> '-000,000,000,000,000,000,000,000,000,000,000,000,000,325,196,490' +xfmt2851 format 338896805e291 '\xef\x8b\x82=-10,.54f' -> '338,896,805,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000' +xfmt2852 format -855231850e375 '\xe1\xa2\xa8<-88,.79e' -> '-8.5523185000000000000000000000000000000000000000000000000000000000000000000000000e+383\xe1\xa2\xa8' +xfmt2853 format 306113455549732922e0 '\xeb\x94\xa2=58,%' -> '\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa2\xeb\x94\xa230,611,345,554,973,292,200%' +xfmt2854 format -780004464252858663E0 '\xe1\xa7\x9c^75.96' -> '\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c-780004464252858663\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c\xe1\xa7\x9c' +xfmt2855 format 476151442876103186e79 ' 063,.89' -> ' 0,000,000,000,000,000,000,000,000,000,004.76151442876103186E+96' +xfmt2856 format -622225176356577597E167 '\xe0\xa8\x9e^34.92n' -> '\xe0\xa8\x9e\xe0\xa8\x9e\xe0\xa8\x9e\xe0\xa8\x9e-6.22225176356577597e+184\xe0\xa8\x9e\xe0\xa8\x9e\xe0\xa8\x9e\xe0\xa8\x9e\xe0\xa8\x9e' +xfmt2857 format 38095044248110198539708E0 ',G' -> '38,095,044,248,110,198,539,708' +xfmt2858 format -80831921096296458308702E0 '\xe3\xb0\x8e= 99.53' -> '-\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e\xe3\xb0\x8e80831921096296458308702' +xfmt2859 format 43760157261431905336145E27 '\xe5\x9e\x92= ,.10E' -> ' 4.3760157261E+49' +xfmt2860 format -29064302749976093047573e198 '+79,F' -> '-29,064,302,749,976,093,047,573,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt2861 format 71846554555685595803578147E0 '\xe6\xa0\xa8>97g' -> '\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa8\xe6\xa0\xa871846554555685595803578147' +xfmt2862 format -69727767613973758829876629e0 '\xe6\xae\x93< 34,.55%' -> '-6,972,776,761,397,375,882,987,662,900.0000000000000000000000000000000000000000000000000000000%' +xfmt2863 format 99473007791509142043248340e129 '\xe6\xb4\x9b<+43,.46E' -> '+9.9473007791509142043248340000000000000000000000E+154' +xfmt2864 format -56367441266790167358672544e90 '\xe6\xb2\x81< 22,.73f' -> '-56,367,441,266,790,167,358,672,544,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2865 format 0E0 '\xee\xa8\x9b^ 64,.42F' -> '\xee\xa8\x9b\xee\xa8\x9b\xee\xa8\x9b\xee\xa8\x9b\xee\xa8\x9b\xee\xa8\x9b\xee\xa8\x9b\xee\xa8\x9b\xee\xa8\x9b 0.000000000000000000000000000000000000000000\xee\xa8\x9b\xee\xa8\x9b\xee\xa8\x9b\xee\xa8\x9b\xee\xa8\x9b\xee\xa8\x9b\xee\xa8\x9b\xee\xa8\x9b\xee\xa8\x9b\xee\xa8\x9b' +xfmt2866 format 0E0 '' -> '0' +xfmt2867 format 0E204 '\xe8\x9a\xab=-9,.69' -> '\xe8\x9a\xab\xe8\x9a\xab\xe8\x9a\xab0E+204' +xfmt2868 format 0E150 '-,%' -> '0%' +xfmt2869 format 8013693561160695450564384095914991476e0 '045,.35g' -> '00,008.0136935611606954505643840959149915e+36' +xfmt2870 format -8581922992073456385939680298733333098E0 '' -> '-8581922992073456385939680298733333098' +xfmt2871 format 2628318085880281422403453653846103754e305 '\xec\xbf\xae=+9,.59e' -> '+2.62831808588028142240345365384610375400000000000000000000000e+341' +xfmt2872 format -4029402803048406191554471125665515401e326 '\xe2\x9e\x8e>.98F' -> '-402940280304840619155447112566551540100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2873 format 108996828229527324410582295513137E0 '' -> '108996828229527324410582295513137' +xfmt2874 format -598174351502315408011501181485910E0 '\xc4\xba^56.83E' -> '-5.98174351502315408011501181485910000000000000000000000000000000000000000000000000000E+32' +xfmt2875 format 693085611325868352498970950992470e123 '' -> '6.93085611325868352498970950992470E+155' +xfmt2876 format -659060201172438426646034115505512e220 '\xe3\xa2\xb0>60,' -> '\xe3\xa2\xb0\xe3\xa2\xb0\xe3\xa2\xb0\xe3\xa2\xb0\xe3\xa2\xb0\xe3\xa2\xb0\xe3\xa2\xb0\xe3\xa2\xb0\xe3\xa2\xb0\xe3\xa2\xb0\xe3\xa2\xb0\xe3\xa2\xb0\xe3\xa2\xb0\xe3\xa2\xb0\xe3\xa2\xb0\xe3\xa2\xb0\xe3\xa2\xb0\xe3\xa2\xb0\xe3\xa2\xb0\xe3\xa2\xb0-6.59060201172438426646034115505512E+252' +xfmt2877 format 842735392000E0 '-015,.51E' -> '8.427353920000000000000000000000000000000000000000000E+11' +xfmt2878 format -196558527429E0 '\xe1\x98\xa1< 30,.41%' -> '-19,655,852,742,900.00000000000000000000000000000000000000000%' +xfmt2879 format 386118168722e363 '' -> '3.86118168722E+374' +xfmt2880 format -655614753506E23 '\xe5\x99\x81^-86,.30' -> '\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81-6.55614753506E+34\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81\xe5\x99\x81' +xfmt2881 format 277765494878109606795753319767049045853492e0 '0' -> '277765494878109606795753319767049045853492' +xfmt2882 format -777234585543780502600336975794195047950164e0 '\xeb\xa7\xa6> 41,.32F' -> '-777,234,585,543,780,502,600,336,975,794,195,047,950,164.00000000000000000000000000000000' +xfmt2883 format 351185802204523848608386192536683464895407e47 '\xef\xb7\xb3<%' -> '3511858022045238486083861925366834648954070000000000000000000000000000000000000000000000000%' +xfmt2884 format -534104253217219321787674016377758153697813e11 '+' -> '-5.34104253217219321787674016377758153697813E+52' +xfmt2885 format 5379e0 '\xe8\xb3\x8d^+15,.77e' -> '+5.37900000000000000000000000000000000000000000000000000000000000000000000000000e+3' +xfmt2886 format -5557E0 '03' -> '-5557' +xfmt2887 format 3006e371 '' -> '3.006E+374' +xfmt2888 format -8727E269 '+' -> '-8.727E+272' +xfmt2889 format 378937825948502283479868322783005019929e0 '\xeb\x8a\xad=+,.71e' -> '+3.78937825948502283479868322783005019929000000000000000000000000000000000e+38' +xfmt2890 format -511694843991479387039643471824769425384e0 '\xef\xa6\xac>-89,e' -> '\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac\xef\xa6\xac-5.11694843991479387039643471824769425384e+38' +xfmt2891 format 472723025973425827045890912598434023889e296 '.39' -> '4.72723025973425827045890912598434023889E+334' +xfmt2892 format -462539802479690118556173286628566440723E263 '0' -> '-4.62539802479690118556173286628566440723E+301' +xfmt2893 format 17973450189562853e0 '' -> '17973450189562853' +xfmt2894 format -35490893235531610E0 '\xee\xb1\xb6>+.37' -> '-35490893235531610' +xfmt2895 format 97408770300560440e312 ' 062.71G' -> ' 000000000000000000000000000000000000009.7408770300560440E+328' +xfmt2896 format -29106163317847775e190 '+98,.60f' -> '-291,061,633,178,477,750,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000' +xfmt2897 format 3384289083555978304634e0 '' -> '3384289083555978304634' +xfmt2898 format -3528643564175133548995e0 '\xee\xbd\xa3<29,.64' -> '-3,528,643,564,175,133,548,995' +xfmt2899 format 6399945003681519974494E335 '\xef\x82\xb5>16,F' -> '639,994,500,368,151,997,449,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt2900 format -5385113841254758266034e163 '\xe6\xbf\xbe>-,.86E' -> '-5.38511384125475826603400000000000000000000000000000000000000000000000000000000000000000E+184' +xfmt2901 format 4285575612e0 '' -> '4285575612' +xfmt2902 format -7249495128e0 '\xe4\xa4\x96<+.90n' -> '-7249495128' +xfmt2903 format 1356988467E49 '-0,.46E' -> '1.3569884670000000000000000000000000000000000000E+58' +xfmt2904 format -8435887856E3 '\xe1\x8b\x83< ' -> '-8.435887856E+12' +xfmt2905 format 739500143267628760491417e0 '\xeb\x85\x80>-21,.31%' -> '73,950,014,326,762,876,049,141,700.0000000000000000000000000000000%' +xfmt2906 format -507062507878819454910678E0 '\xe4\x85\x8f^ g' -> '-507062507878819454910678' +xfmt2907 format 875316098362196886720980E367 '\xe7\xa6\xa4^ 82,.57e' -> '\xe7\xa6\xa4\xe7\xa6\xa4\xe7\xa6\xa4\xe7\xa6\xa4\xe7\xa6\xa4\xe7\xa6\xa4\xe7\xa6\xa4\xe7\xa6\xa4 8.753160983621968867209800000000000000000000000000000000000e+390\xe7\xa6\xa4\xe7\xa6\xa4\xe7\xa6\xa4\xe7\xa6\xa4\xe7\xa6\xa4\xe7\xa6\xa4\xe7\xa6\xa4\xe7\xa6\xa4\xe7\xa6\xa4' +xfmt2908 format -311170360096126952956990E75 ',' -> '-3.11170360096126952956990E+98' +xfmt2909 format 23385510e0 '-,' -> '23,385,510' +xfmt2910 format -61851405E0 '\xe6\xb5\xb8^ 23,.21' -> '\xe6\xb5\xb8\xe6\xb5\xb8\xe6\xb5\xb8\xe6\xb5\xb8\xe6\xb5\xb8\xe6\xb5\xb8-61,851,405\xe6\xb5\xb8\xe6\xb5\xb8\xe6\xb5\xb8\xe6\xb5\xb8\xe6\xb5\xb8\xe6\xb5\xb8' +xfmt2911 format 15935017E200 '' -> '1.5935017E+207' +xfmt2912 format -94445520e39 '+011.25g' -> '-9.4445520e+46' +xfmt2913 format 3362502803345295917273192336044935266429e0 '0.64e' -> '3.3625028033452959172731923360449352664290000000000000000000000000e+39' +xfmt2914 format -7053336202458731093106458634891672081549e0 '+0.18' -> '-7.05333620245873109E+39' +xfmt2915 format 7668038923016424360725676189333692627467e96 '\xe8\x9e\xb2<,G' -> '7.668038923016424360725676189333692627467E+135' +xfmt2916 format -8503900439487692449399671132613431340865e60 ',' -> '-8.503900439487692449399671132613431340865E+99' +xfmt2917 format 138e0 '\xe5\x8c\xab<-55,f' -> '138\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab\xe5\x8c\xab' +xfmt2918 format -721E0 '\xe9\xa8\x9d= 79f' -> '-\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d\xe9\xa8\x9d721' +xfmt2919 format 440e320 '\xe5\x85\x82=+20.81G' -> '+\xe5\x85\x82\xe5\x85\x82\xe5\x85\x82\xe5\x85\x82\xe5\x85\x82\xe5\x85\x82\xe5\x85\x82\xe5\x85\x82\xe5\x85\x82\xe5\x85\x824.40E+322' +xfmt2920 format -335E264 '\xee\xbb\x86^66f' -> '-335000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2921 format 7750979856828E0 '\xeb\x84\xb5^ .7e' -> ' 7.7509799e+12' +xfmt2922 format -6449484881662E0 'G' -> '-6449484881662' +xfmt2923 format 1113300222473e100 '048%' -> '1113300222473000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt2924 format -2393211026898e254 '\xe7\x90\xac<-65,.72%' -> '-23,932,110,268,980,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt2925 format 7416773e0 '' -> '7416773' +xfmt2926 format -4203321E0 '07f' -> '-4203321' +xfmt2927 format 1505889E332 ',' -> '1.505889E+338' +xfmt2928 format -9134043E292 ' ' -> '-9.134043E+298' +xfmt2929 format 123456789012345678.12345678 ' 76,E' -> ' 1.2345678901234567812345678E+17' +xfmt2930 format -1.12345678 '-013.68E' -> '-1.12345678000000000000000000000000000000000000000000000000000000000000E+0' +xfmt2931 format 8979195673E0 '\xee\xb6\xa8=,.65' -> '8,979,195,673' +xfmt2932 format -3292933876E0 '\xec\x81\x88= 89,' -> '-\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x88\xec\x81\x883,292,933,876' +xfmt2933 format 6821212896e209 '\xe8\x98\xb5<-,.96' -> '6.821212896E+218' +xfmt2934 format -4221721260E148 '\xea\x9f\x9c^+33,.61' -> '\xea\x9f\x9c\xea\x9f\x9c\xea\x9f\x9c\xea\x9f\x9c\xea\x9f\x9c\xea\x9f\x9c\xea\x9f\x9c\xea\x9f\x9c-4.221721260E+157\xea\x9f\x9c\xea\x9f\x9c\xea\x9f\x9c\xea\x9f\x9c\xea\x9f\x9c\xea\x9f\x9c\xea\x9f\x9c\xea\x9f\x9c' +xfmt2935 format 4326023786952717486070490283032e0 '-0.38f' -> '4326023786952717486070490283032.00000000000000000000000000000000000000' +xfmt2936 format -8910198523312468190551755640449E0 '\xee\x9e\x8e>41,' -> '-8,910,198,523,312,468,190,551,755,640,449' +xfmt2937 format 7477485265285395733675558411350e73 '62.83' -> ' 7.477485265285395733675558411350E+103' +xfmt2938 format -1683274933620677057065075140057E214 '\xe9\x8b\xbf<-77,.44%' -> '-1,683,274,933,620,677,057,065,075,140,057,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000%' +xfmt2939 format 99211e0 ',G' -> '99,211' +xfmt2940 format -61989e0 '079,.70e' -> '-0,006.1989000000000000000000000000000000000000000000000000000000000000000000e+4' +xfmt2941 format 83193E357 '\xe0\xb5\x83^+79' -> '\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83+8.3193E+361\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83\xe0\xb5\x83' +xfmt2942 format -48064E80 '\xe2\x98\xa4=,.34' -> '-4.8064E+84' +xfmt2943 format 7397604051244952994144492E0 '-.1g' -> '7e+24' +xfmt2944 format -7824232050335007506582111E0 '\xe2\xa7\xab>+58,.19g' -> '\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab\xe2\xa7\xab-7.824232050335007507e+24' +xfmt2945 format 4280190338577132530614208E169 '\xef\x85\x94=,G' -> '4.280190338577132530614208E+193' +xfmt2946 format -3160169839998846672545381e314 '' -> '-3.160169839998846672545381E+338' +xfmt2947 format 1207086902902134E0 '\xe1\xb6\xb7^ 38,.62%' -> ' 120,708,690,290,213,400.00000000000000000000000000000000000000000000000000000000000000%' +xfmt2948 format -5600284822119641E0 '+044,.17' -> '-000,000,000,000,000,005,600,284,822,119,641' +xfmt2949 format 8667101736262536E33 '' -> '8.667101736262536E+48' +xfmt2950 format -2763195279629073e348 '\xeb\xbc\x84=-,.70%' -> '-276,319,527,962,907,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt2951 format 24143411152868581e0 '' -> '24143411152868581' +xfmt2952 format -69029952658563632E0 '' -> '-69029952658563632' +xfmt2953 format 19607428738079332E53 '\xec\x90\x8e=+69,.22' -> '+\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e\xec\x90\x8e1.9607428738079332E+69' +xfmt2954 format -43867276365721518E340 '\xe3\xad\xb0^-93,.18g' -> '\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0-4.3867276365721518e+356\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0\xe3\xad\xb0' +xfmt2955 format 345184033851705573870351745934954006177E0 ' g' -> ' 345184033851705573870351745934954006177' +xfmt2956 format -942833547405523522498992669086161638146e0 '' -> '-942833547405523522498992669086161638146' +xfmt2957 format 477215444727389900465117075802480339729E62 '\xe1\x80\x8b=,' -> '4.77215444727389900465117075802480339729E+100' +xfmt2958 format -499266916800406891657464256660072794384E263 '' -> '-4.99266916800406891657464256660072794384E+301' +xfmt2959 format 72180333553836211727290404270502465045235650e0 'g' -> '72180333553836211727290404270502465045235650' +xfmt2960 format -86891209789681932345707640803268041793710631E0 '\xee\x8d\xa7> 89,.1f' -> '\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7\xee\x8d\xa7-86,891,209,789,681,932,345,707,640,803,268,041,793,710,631.0' +xfmt2961 format 79375628672831593391124494412753721056521320e134 '\xeb\x88\xb8<-25.39' -> '7.93756286728315933911244944127537210565E+177' +xfmt2962 format -10603737611742142137920052710013869821343645e230 '\xeb\x99\x98< 45,.40%' -> '-106,037,376,117,421,421,379,200,527,100,138,698,213,436,450,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000%' +xfmt2963 format 0E0 '' -> '0' +xfmt2964 format 0e0 '\xec\xb9\xa8<+2,.7F' -> '+0.0000000' +xfmt2965 format 0e211 '' -> '0E+211' +xfmt2966 format 0E224 ' 058n' -> ' 0000000000000000000000000000000000000000000000000000e+224' +xfmt2967 format 3950921607281367918948599786870665566e0 '-%' -> '395092160728136791894859978687066556600%' +xfmt2968 format -6781209540677632307390467290456620366e0 '-79' -> ' -6781209540677632307390467290456620366' +xfmt2969 format 1387273454670777451281631447635705387e143 '\xec\xac\xb3>.51' -> '1.387273454670777451281631447635705387E+179' +xfmt2970 format -3946778168569341916154109422435572414e302 '032,' -> '-3.946778168569341916154109422435572414E+338' +xfmt2971 format 30566333285201205254460929803583367E0 '\xe6\xac\x85^4,.34f' -> '30,566,333,285,201,205,254,460,929,803,583,367.0000000000000000000000000000000000' +xfmt2972 format -55722322356849146103535396670208439E0 '0e' -> '-5.5722322356849146103535396670208439e+34' +xfmt2973 format 44781136586786159735677213512909073e375 '\xea\xa7\x95=g' -> '4.4781136586786159735677213512909073e+409' +xfmt2974 format -12180680720371329985599436760082084e8 '0G' -> '-1.2180680720371329985599436760082084E+42' +xfmt2975 format 8161415647695825307e0 '\xe1\x91\xad< 3,%' -> ' 816,141,564,769,582,530,700%' +xfmt2976 format -4923109550001162976E0 '\xe3\x87\xa5< 61,.33f' -> '-4,923,109,550,001,162,976.000000000000000000000000000000000\xe3\x87\xa5' +xfmt2977 format 4048631071142874488E17 ',.21g' -> '4.048631071142874488e+35' +xfmt2978 format -8534247680095901844e127 '%' -> '-8534247680095901844000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt2979 format 540654014458506970063672624E0 '022.5' -> '0000000000005.4065E+26' +xfmt2980 format -843317804510942838310812159e0 '' -> '-843317804510942838310812159' +xfmt2981 format 171999228961657814511263452E73 '085.66g' -> '000000000000000000000000000000000000000000000000000001.71999228961657814511263452e+99' +xfmt2982 format -527692717561639481797439590E285 '0.68' -> '-5.27692717561639481797439590E+311' +xfmt2983 format 122838987201412e0 '+0.78' -> '+122838987201412' +xfmt2984 format -764930068296205e0 ',' -> '-764,930,068,296,205' +xfmt2985 format 330847879078358E259 '\xe9\xa8\xbc^,e' -> '3.30847879078358e+273' +xfmt2986 format -641867745264919e49 '-87.76g' -> ' -6.41867745264919e+63' +xfmt2987 format 94660651392490137680299471781468e0 '\xe4\xb2\xb6<+,.59f' -> '+94,660,651,392,490,137,680,299,471,781,468.00000000000000000000000000000000000000000000000000000000000' +xfmt2988 format -88228572639217678631382338852607e0 '' -> '-88228572639217678631382338852607' +xfmt2989 format 31145867954631212968570823006393e214 '' -> '3.1145867954631212968570823006393E+245' +xfmt2990 format -77906716590177029278513264634076e5 '\xed\x9e\x93<-99,' -> '-7.7906716590177029278513264634076E+36\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93\xed\x9e\x93' +xfmt2991 format 115879706517334858489121346914229604e0 '\xe4\xa8\xa6^ ,.57f' -> ' 115,879,706,517,334,858,489,121,346,914,229,604.000000000000000000000000000000000000000000000000000000000' +xfmt2992 format -152236051894997887904473076812075710e0 '\xeb\xa9\xae<+59,.74f' -> '-152,236,051,894,997,887,904,473,076,812,075,710.00000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2993 format 931780844464907926079055012567141660e322 ',.10' -> '9.317808445E+357' +xfmt2994 format -652510447132742973619637953927409185E90 '\xea\xb9\xb0^ ' -> '-6.52510447132742973619637953927409185E+125' +xfmt2995 format 3831037257576769058378424127422622334051E0 '\xe7\x95\x86<-53.86n' -> '3831037257576769058378424127422622334051\xe7\x95\x86\xe7\x95\x86\xe7\x95\x86\xe7\x95\x86\xe7\x95\x86\xe7\x95\x86\xe7\x95\x86\xe7\x95\x86\xe7\x95\x86\xe7\x95\x86\xe7\x95\x86\xe7\x95\x86\xe7\x95\x86' +xfmt2996 format -8286062964520355105034374402839641396151E0 '\xef\xac\xbb=-54,.94F' -> '-8,286,062,964,520,355,105,034,374,402,839,641,396,151.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2997 format 7502855465641258350368157611660112579954e330 'f' -> '7502855465641258350368157611660112579954000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt2998 format -1455416063270594440612327609601895564917E316 '' -> '-1.455416063270594440612327609601895564917E+355' +xfmt2999 format 78856179500666937399635E0 '\xe2\xae\x90> 38,.35g' -> '\xe2\xae\x90\xe2\xae\x90\xe2\xae\x90\xe2\xae\x90\xe2\xae\x90\xe2\xae\x90\xe2\xae\x90 78,856,179,500,666,937,399,635' +xfmt3000 format -80023373006313324169703e0 '019,.81' -> '-80,023,373,006,313,324,169,703' +xfmt3001 format 15011181216627616633560E92 ',' -> '1.5011181216627616633560E+114' +xfmt3002 format -24251416052567577229922e16 '\xeb\x90\xaa<-8,.64E' -> '-2.4251416052567577229922000000000000000000000000000000000000000000E+38' +xfmt3003 format 19206369635154107399548795e0 '\xee\x90\xa9<3,' -> '19,206,369,635,154,107,399,548,795' +xfmt3004 format -92490082595403049609581562e0 '\xe5\xac\xac^38,.60g' -> '\xe5\xac\xac-92,490,082,595,403,049,609,581,562\xe5\xac\xac\xe5\xac\xac' +xfmt3005 format 37982327764963657100845548E261 ' 71,E' -> ' 3.7982327764963657100845548E+286' +xfmt3006 format -16611620172088927818641832E275 '\xe8\xa4\x97<11,.53' -> '-1.6611620172088927818641832E+300' +xfmt3007 format 375e0 '+085E' -> '+000000000000000000000000000000000000000000000000000000000000000000000000000003.75E+2' +xfmt3008 format -386e0 ' .43G' -> '-386' +xfmt3009 format 113e259 '' -> '1.13E+261' +xfmt3010 format -326E196 '-.30' -> '-3.26E+198' +xfmt3011 format 701605079089752320512401281615406e0 '' -> '701605079089752320512401281615406' +xfmt3012 format -824009659693293937615244476012807E0 '\xe5\xa2\xb2^+97,.30e' -> '\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2-8.240096596932939376152444760128e+32\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2\xe5\xa2\xb2' +xfmt3013 format 143567751835298534244854759268772e74 '-' -> '1.43567751835298534244854759268772E+106' +xfmt3014 format -552346460620668082659021267023114E359 '\xea\xaa\xa3^-12,.28G' -> '-5.523464606206680826590212670E+391' +xfmt3015 format 5338085891064812706696103407409410692629997e0 '' -> '5338085891064812706696103407409410692629997' +xfmt3016 format -4765323690973505630459301351404878102885793e0 '23,.24F' -> '-4,765,323,690,973,505,630,459,301,351,404,878,102,885,793.000000000000000000000000' +xfmt3017 format 8183160733772843119696490256223393088087145E12 '' -> '8.183160733772843119696490256223393088087145E+54' +xfmt3018 format -8495279513121304610551632832762537170704719e216 '\xe5\xb7\x84<-,' -> '-8.495279513121304610551632832762537170704719E+258' +xfmt3019 format 734142e0 'f' -> '734142' +xfmt3020 format -453358E0 '\xe7\xb6\xa2^37,%' -> '\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2-45,335,800%\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2\xe7\xb6\xa2' +xfmt3021 format 712116e311 '\xe3\xaa\xb5< 48,.29%' -> ' 7,121,160,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000%' +xfmt3022 format -160255e57 '\xeb\xa2\x85=40,.99E' -> '-1.602550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E+62' +xfmt3023 format 75783357130620505867048906044E0 '\xe9\x8e\xab<87' -> '75783357130620505867048906044\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab\xe9\x8e\xab' +xfmt3024 format -98794522221806352704570297762e0 '\xe6\xae\x80^-21,E' -> '-9.8794522221806352704570297762E+28' +xfmt3025 format 99671799376147681279418203746E168 '\xe7\x84\x9e<' -> '9.9671799376147681279418203746E+196' +xfmt3026 format -68732951646683286987299470347e120 '\xea\x90\xa8= ,.22g' -> '-6.873295164668328698730e+148' +xfmt3027 format 18675987769194484423663068778298104506e0 '-93,g' -> ' 18,675,987,769,194,484,423,663,068,778,298,104,506' +xfmt3028 format -46508770405857229997094886091228040756e0 '\xea\x84\x9b=-31.83E' -> '-4.65087704058572299970948860912280407560000000000000000000000000000000000000000000000E+37' +xfmt3029 format 39475724724932142206180704265974772969E48 '29,.85G' -> '3.9475724724932142206180704265974772969E+85' +xfmt3030 format -86920514776687624210221910096864586474e47 '+0.66' -> '-8.6920514776687624210221910096864586474E+84' +xfmt3031 format 63524511869911e0 ' 31' -> ' 63524511869911' +xfmt3032 format -51990290419050E0 '\xe7\x81\x8b^+4,' -> '-51,990,290,419,050' +xfmt3033 format 83903189148849e362 '0,g' -> '8.3903189148849e+375' +xfmt3034 format -39234400134133E354 '-' -> '-3.9234400134133E+367' +xfmt3035 format 976054641570371449844043E0 '-045,.23E' -> '0,000,000,000,009.76054641570371449844043E+23' +xfmt3036 format -689323116914097836999082e0 '.14' -> '-6.8932311691410E+23' +xfmt3037 format 645083705598540196108752e101 '-0.37' -> '6.45083705598540196108752E+124' +xfmt3038 format -627716593312940194571882E57 '\xe7\x85\xbd=91.39E' -> '-\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd\xe7\x85\xbd6.277165933129401945718820000000000000000E+80' +xfmt3039 format 827585894173292826e0 ' 7.1F' -> ' 827585894173292826.0' +xfmt3040 format -740951122498881015E0 '\xef\xb4\x98<+27,.51e' -> '-7.409511224988810150000000000000000000000000000000000e+17' +xfmt3041 format 258243586923331775E353 '-0,g' -> '2.58243586923331775e+370' +xfmt3042 format -399074036277362812e358 '+46,E' -> ' -3.99074036277362812E+375' +xfmt3043 format 683283468486274361018142372777884104108700E0 '\xef\xbe\x8c^+56,.38%' -> '+68,328,346,848,627,436,101,814,237,277,788,410,410,870,000.00000000000000000000000000000000000000%' +xfmt3044 format -487996432520751750033186783258016432679922e0 '+063.60%' -> '-48799643252075175003318678325801643267992200.000000000000000000000000000000000000000000000000000000000000%' +xfmt3045 format 332486708436751449182498297966282104981162E360 '\xe5\x90\xbc<-65,.28%' -> '33,248,670,843,675,144,918,249,829,796,628,210,498,116,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000%' +xfmt3046 format -198816909532998742464006740317347387036656E264 '' -> '-1.98816909532998742464006740317347387036656E+305' +xfmt3047 format 85806855670770549039284547013797217113856e0 '' -> '85806855670770549039284547013797217113856' +xfmt3048 format -75997333116454062029822491234402952189823e0 '\xe2\xb4\xad> 43,.80F' -> '-75,997,333,116,454,062,029,822,491,234,402,952,189,823.00000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3049 format 37230924633821822202962354002046883330007e316 '\xe9\xad\xb0^-59,.9E' -> '\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb03.723092463E+356\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0\xe9\xad\xb0' +xfmt3050 format -61603751895218119355616184187720443277834e43 '\xe9\xa8\x86=+.31' -> '-6.160375189521811935561618418772E+83' +xfmt3051 format 12345.1234567890123456789012 '\xe4\xbd\xa7^+28.34%' -> '+1234512.3456789012345678901200000000000000%' +xfmt3052 format -1.12345678 '013,.83' -> '-001.12345678' +xfmt3053 format 5146026872148645312904215387485240721945E0 '' -> '5146026872148645312904215387485240721945' +xfmt3054 format -8791044821978273642485960858172430697386E0 '' -> '-8791044821978273642485960858172430697386' +xfmt3055 format 3397162974182369015720474793317776303398e84 '\xe5\x95\x9e^,F' -> '3,397,162,974,182,369,015,720,474,793,317,776,303,398,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt3056 format -2399216270655035704596689437976793856671e372 '.26g' -> '-2.3992162706550357045966894e+411' +xfmt3057 format 146917558378067783335E0 ' .75E' -> ' 1.469175583780677833350000000000000000000000000000000000000000000000000000000E+20' +xfmt3058 format -599631733275208079189E0 '0,.79' -> '-599,631,733,275,208,079,189' +xfmt3059 format 330313110163380797945E215 '\xe2\xa5\xa0> 63,.11f' -> ' 33,031,311,016,338,079,794,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000' +xfmt3060 format -530645027235611827174E191 '\xeb\xa4\x8a<-.1' -> '-5E+211' +xfmt3061 format 3E0 '\xee\x85\x8f=.57' -> '3' +xfmt3062 format -9e0 '\xe7\xa8\x9a^ 36.97' -> '\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a-9\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a\xe7\xa8\x9a' +xfmt3063 format 3e382 '0' -> '3E+382' +xfmt3064 format -5E126 '\xe6\x88\x9d=' -> '-5E+126' +xfmt3065 format 62381414659094e0 'g' -> '62381414659094' +xfmt3066 format -72556032949454E0 ' ' -> '-72556032949454' +xfmt3067 format 99791177479216e51 '0' -> '9.9791177479216E+64' +xfmt3068 format -80672509596124E96 '054,.49G' -> '-00,000,000,000,000,000,000,000,008.0672509596124E+109' +xfmt3069 format 4798479558e0 '0' -> '4798479558' +xfmt3070 format -7620367239E0 '\xeb\xa0\x90> 11,' -> '-7,620,367,239' +xfmt3071 format 4653449741E259 '+' -> '+4.653449741E+268' +xfmt3072 format -6026905697E14 ',' -> '-6.026905697E+23' +xfmt3073 format 316049924839484524e0 '0F' -> '316049924839484524' +xfmt3074 format -927258081133422177E0 '.42' -> '-927258081133422177' +xfmt3075 format 844760410364850634E317 '' -> '8.44760410364850634E+334' +xfmt3076 format -855974356279114840e91 '65.65' -> ' -8.55974356279114840E+108' +xfmt3077 format 4054977853008839779819520E0 ' 091,.57' -> ' 00,000,000,000,000,000,000,000,000,000,000,000,000,000,004,054,977,853,008,839,779,819,520' +xfmt3078 format -3842100232242875824705257E0 '+' -> '-3842100232242875824705257' +xfmt3079 format 1371363730829842998122497E132 '0' -> '1.371363730829842998122497E+156' +xfmt3080 format -8797552251800683125087684e331 '\xe3\x9d\x8e>-6,.82f' -> '-87,975,522,518,006,831,250,876,840,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3081 format 5886E0 '.10g' -> '5886' +xfmt3082 format -9319E0 '\xe4\x8a\x8f>,.30G' -> '-9,319' +xfmt3083 format 2175E5 ' 093,.79f' -> ' 0,217,500,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3084 format -4086e23 ' 033,.12e' -> '-000,000,000,004.086000000000e+26' +xfmt3085 format 285412126760e0 ',' -> '285,412,126,760' +xfmt3086 format -778644985308E0 '\xe3\xa5\x82^-43,.85F' -> '-778,644,985,308.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3087 format 305903820349E185 ' 076.2e' -> ' 0000000000000000000000000000000000000000000000000000000000000000003.06e+196' +xfmt3088 format -540172672732e224 '' -> '-5.40172672732E+235' +xfmt3089 format 67e0 '' -> '67' +xfmt3090 format -82E0 '' -> '-82' +xfmt3091 format 41e49 '\xe1\x84\xae< 31.63n' -> ' 4.1e+50\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae\xe1\x84\xae' +xfmt3092 format -90e134 '\xe8\x91\xa1>.94e' -> '-9.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+135' +xfmt3093 format 761621473344354101007775581817E0 '6,%' -> '76,162,147,334,435,410,100,777,558,181,700%' +xfmt3094 format -607653794464075229237444134742e0 '+051,.85' -> '-00,000,000,607,653,794,464,075,229,237,444,134,742' +xfmt3095 format 101175595849345022764918781098E93 '+,f' -> '+101,175,595,849,345,022,764,918,781,098,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt3096 format -322042436259258962764074541802E137 '\xe8\xa7\x85>-,.89' -> '-3.22042436259258962764074541802E+166' +xfmt3097 format 5940968745677582477557028740731363E0 '\xe5\xbf\x8e^+27,.50E' -> '+5.94096874567758247755702874073136300000000000000000E+33' +xfmt3098 format -4811763683955238807754639520900736e0 '\xe8\xae\xae=-57,.16E' -> '-\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae4.8117636839552388E+33' +xfmt3099 format 1450806853102442775779201484390611E131 '' -> '1.450806853102442775779201484390611E+164' +xfmt3100 format -6459623411917146938648009747407212E266 '' -> '-6.459623411917146938648009747407212E+299' +xfmt3101 format 259288786229663635146537E0 ' ,.73' -> ' 259,288,786,229,663,635,146,537' +xfmt3102 format -478840160541849356751286E0 '.56' -> '-478840160541849356751286' +xfmt3103 format 687233876876717183805036E209 '+82,F' -> '+68,723,387,687,671,718,380,503,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt3104 format -162030131633628450385125E350 '-049,.77E' -> '-1.62030131633628450385125000000000000000000000000000000000000000000000000000000E+373' +xfmt3105 format 557342606432262914326871417010219042848E0 '-44.31' -> ' 5.573426064322629143268714170102E+38' +xfmt3106 format -553911071690629100421732120728673324256e0 '' -> '-553911071690629100421732120728673324256' +xfmt3107 format 346555292939886112496885911196342387596e237 '\xeb\x90\x8f<+61,f' -> '+346,555,292,939,886,112,496,885,911,196,342,387,596,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt3108 format -506556892948067037101734367453858767446e54 '' -> '-5.06556892948067037101734367453858767446E+92' +xfmt3109 format 402450643e0 '\xe2\xb5\x9a^ 97n' -> '\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a 402450643\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a\xe2\xb5\x9a' +xfmt3110 format -433678250e0 'G' -> '-433678250' +xfmt3111 format 287815208e214 '\xe7\xbd\x85> 81,.46F' -> ' 2,878,152,080,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000' +xfmt3112 format -698927218E372 '\xe6\xab\xab>,g' -> '-6.98927218e+380' +xfmt3113 format 9986472413574030389159446287894E0 ' 0.2G' -> ' 1.0E+31' +xfmt3114 format -9766157227973466581512563423265E0 '\xe6\xab\x91>69,.40g' -> '\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91\xe6\xab\x91-9,766,157,227,973,466,581,512,563,423,265' +xfmt3115 format 3983873197526999083014894237606e27 '\xe8\xb5\x8b>-' -> '3.983873197526999083014894237606E+57' +xfmt3116 format -3668476284400338605700660582354e330 '\xee\x99\x8a<+17E' -> '-3.668476284400338605700660582354E+360' +xfmt3117 format 376e0 '\xe8\x8f\x9d>49.45e' -> '3.760000000000000000000000000000000000000000000e+2' +xfmt3118 format -111e0 '' -> '-111' +xfmt3119 format 260E53 '\xe4\xaa\x80<+55,.59g' -> '+2.60e+55\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80\xe4\xaa\x80' +xfmt3120 format -466e283 ' 062F' -> '-4660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3121 format 148773719203891655160700704264505067360991E0 '\xe5\x8c\xb6= .27' -> ' 1.48773719203891655160700704E+41' +xfmt3122 format -106642850801401466678417152790710308137688e0 ' 040' -> '-106642850801401466678417152790710308137688' +xfmt3123 format 729282782856886331640756341663054881241577e354 '0,.95e' -> '7.29282782856886331640756341663054881241577000000000000000000000000000000000000000000000000000000e+395' +xfmt3124 format -662831946829344147499167497096360862393399e38 '\xe8\x81\xad< 36e' -> '-6.62831946829344147499167497096360862393399e+79' +xfmt3125 format 234243987839051051042126826e0 '\xe4\x8a\xb7^+63,.94F' -> '+234,243,987,839,051,051,042,126,826.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3126 format -668314519485669033833565538E0 '0' -> '-668314519485669033833565538' +xfmt3127 format 502669709082948642425275811E290 '077,.99%' -> '5,026,697,090,829,486,424,252,758,110,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt3128 format -164441111717697795638937287e331 '\xeb\xb4\x8a^+75,%' -> '-164,441,111,717,697,795,638,937,287,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt3129 format 75508888679598268332E0 '' -> '75508888679598268332' +xfmt3130 format -84451825562452427924e0 '-,.39F' -> '-84,451,825,562,452,427,924.000000000000000000000000000000000000000' +xfmt3131 format 81305646637455740356E75 '61,.20' -> ' 8.1305646637455740356E+94' +xfmt3132 format -62512152722608428850e31 '' -> '-6.2512152722608428850E+50' +xfmt3133 format 43192512052947212357186597e0 '\xe9\x98\xbb<82,g' -> '43,192,512,052,947,212,357,186,597\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb\xe9\x98\xbb' +xfmt3134 format -49938492234593774890757121e0 '\xe2\x9d\xba=-52,%' -> '-\xe2\x9d\xba\xe2\x9d\xba\xe2\x9d\xba\xe2\x9d\xba\xe2\x9d\xba\xe2\x9d\xba\xe2\x9d\xba\xe2\x9d\xba\xe2\x9d\xba\xe2\x9d\xba\xe2\x9d\xba\xe2\x9d\xba\xe2\x9d\xba4,993,849,223,459,377,489,075,712,100%' +xfmt3135 format 83215689851183248413090374E259 '\xea\x89\x98^+' -> '+8.3215689851183248413090374E+284' +xfmt3136 format -76079739339825335627037339e205 '\xed\x8a\x85^86,.78f' -> '-760,797,393,398,253,356,270,373,390,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3137 format 64094890467283802136935432876063130124118E0 '\xeb\x96\xb1>29.74' -> '64094890467283802136935432876063130124118' +xfmt3138 format -81567291457713326929495840907198036272990e0 '\xe7\xa6\x88^,.1g' -> '-8e+40' +xfmt3139 format 71941165577098159836516402359752892481835E73 '31' -> '7.1941165577098159836516402359752892481835E+113' +xfmt3140 format -73757066270063317379434496486202872900266e286 '\xea\xa3\xb3^-1e' -> '-7.3757066270063317379434496486202872900266e+326' +xfmt3141 format 131356889405654359490522249125266601e0 '\xe2\x88\xa0=-17,F' -> '131,356,889,405,654,359,490,522,249,125,266,601' +xfmt3142 format -132923380837331324756936152829947193E0 '' -> '-132923380837331324756936152829947193' +xfmt3143 format 929921795427981628504201887009205527E372 '\xe5\xbe\xa8>-,.7%' -> '92,992,179,542,798,162,850,420,188,700,920,552,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000%' +xfmt3144 format -582766939043787055574605098231546760E214 '\xee\xa9\xb9=-,.61F' -> '-5,827,669,390,437,870,555,746,050,982,315,467,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000' +xfmt3145 format 879666E0 '\xee\x8b\xa9>' -> '879666' +xfmt3146 format -141311E0 ' 096,' -> '-000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,141,311' +xfmt3147 format 928970E287 '0g' -> '9.28970e+292' +xfmt3148 format -135734e59 '' -> '-1.35734E+64' +xfmt3149 format 27420007371496279973701772393798E0 '' -> '27420007371496279973701772393798' +xfmt3150 format -51742912633119961564097065583120E0 '' -> '-51742912633119961564097065583120' +xfmt3151 format 29572843630672693714135962618408E330 '.39' -> '2.9572843630672693714135962618408E+361' +xfmt3152 format -47855408173792027007550640105280E372 '\xec\x9a\xa5< 19,f' -> '-47,855,408,173,792,027,007,550,640,105,280,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt3153 format 6606879163912781756e0 '\xec\xb1\xaf< 62,.46E' -> ' 6.6068791639127817560000000000000000000000000000E+18\xec\xb1\xaf\xec\xb1\xaf\xec\xb1\xaf\xec\xb1\xaf\xec\xb1\xaf\xec\xb1\xaf\xec\xb1\xaf\xec\xb1\xaf\xec\xb1\xaf' +xfmt3154 format -4057777907240873980E0 '\xe9\x8d\xa4^ 5,.61e' -> '-4.0577779072408739800000000000000000000000000000000000000000000e+18' +xfmt3155 format 3530859452272178298e279 '\xea\xa2\xa2^ ' -> ' 3.530859452272178298E+297' +xfmt3156 format -2978264524549630241e234 '-,' -> '-2.978264524549630241E+252' +xfmt3157 format 76723258900e0 '\xed\x80\xab=' -> '76723258900' +xfmt3158 format -19901584723E0 '\xea\xba\x86<-50,.78' -> '-19,901,584,723\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86\xea\xba\x86' +xfmt3159 format 86838715755E236 ' ' -> ' 8.6838715755E+246' +xfmt3160 format -40864889390E45 ',' -> '-4.0864889390E+55' +xfmt3161 format 66783804e0 'E' -> '6.6783804E+7' +xfmt3162 format -26617014e0 '+0n' -> '-26617014' +xfmt3163 format 32351193e77 '-067,' -> '000,000,000,000,000,000,000,000,000,000,000,000,000,003.2351193E+84' +xfmt3164 format -69338844e353 '\xe9\xba\x87>+44,.91F' -> '-6,933,884,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3165 format 73977e0 '\xe7\xbc\xa5= ,.69G' -> ' 73,977' +xfmt3166 format -80004e0 '\xdc\xa1<-93,.10g' -> '-80,004\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1\xdc\xa1' +xfmt3167 format 24878e159 '0,.75g' -> '2.4878e+163' +xfmt3168 format -88178E263 '\xe3\xa3\xba= 8,.11' -> '-8.8178E+267' +xfmt3169 format 52442027606160776213223043807320244e0 '\xef\x88\xa2^+59,.22' -> '\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2+5.244202760616077621322E+34\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2\xef\x88\xa2' +xfmt3170 format -96445473195936085553992586885780365e0 '0,.37' -> '-96,445,473,195,936,085,553,992,586,885,780,365' +xfmt3171 format 91385140579150652899741557125115235E334 '\xe2\x98\xba^ .85g' -> ' 9.1385140579150652899741557125115235e+368' +xfmt3172 format -69861273167753470341089354662787280E171 '-22,.11e' -> ' -6.98612731678e+205' +xfmt3173 format 12345678901234567890.1234567890123456 ',' -> '12,345,678,901,234,567,890.1234567890123456' +xfmt3174 format -1234567.12345 '-83,.42' -> ' -1,234,567.12345' +xfmt3175 format 626485357308183963724681153416227896123e0 '\xe4\x83\xb7=-42.66e' -> '6.264853573081839637246811534162278961230000000000000000000000000000e+38' +xfmt3176 format -771529478035050401102447935781520305290e0 '49' -> ' -771529478035050401102447935781520305290' +xfmt3177 format 733406615077573648809239988968477088261e98 '\xe2\xa6\xb7>18.2G' -> '\xe2\xa6\xb7\xe2\xa6\xb7\xe2\xa6\xb7\xe2\xa6\xb7\xe2\xa6\xb7\xe2\xa6\xb7\xe2\xa6\xb7\xe2\xa6\xb7\xe2\xa6\xb7\xe2\xa6\xb77.3E+136' +xfmt3178 format -722817104084700359692859939200447748819E178 '010' -> '-7.22817104084700359692859939200447748819E+216' +xfmt3179 format 87358E0 '\xe7\xab\x98=31' -> '\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x98\xe7\xab\x9887358' +xfmt3180 format -25028E0 ' 0' -> '-25028' +xfmt3181 format 10281e119 '\xe7\x99\xb4> 59,.41f' -> ' 1,028,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000' +xfmt3182 format -13476e45 '-032,.96G' -> '-00,000,000,000,000,001.3476E+49' +xfmt3183 format 25374033941931685185270218589681e0 '0' -> '25374033941931685185270218589681' +xfmt3184 format -96794087806626264573778948426096E0 '\xee\xb6\x9d=.12' -> '-9.67940878066E+31' +xfmt3185 format 50144882012080126091072301538465e251 '\xe2\xa9\xbb<62,.91G' -> '5.0144882012080126091072301538465E+282\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb\xe2\xa9\xbb' +xfmt3186 format -69827737499837364379837267628584E128 ',' -> '-6.9827737499837364379837267628584E+159' +xfmt3187 format 4054935997290633E0 '' -> '4054935997290633' +xfmt3188 format -1045832076886172E0 ',' -> '-1,045,832,076,886,172' +xfmt3189 format 9300783323900980E33 '\xe6\x80\xac>+96,.95e' -> '+9.30078332390098000000000000000000000000000000000000000000000000000000000000000000000000000000000e+48' +xfmt3190 format -5423092591091089e311 '\xea\x8b\xa0>-64,.95%' -> '-54,230,925,910,910,890,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt3191 format 1635397100728338270950409372e0 '+024,.73' -> '+1,635,397,100,728,338,270,950,409,372' +xfmt3192 format -8136980928525639178151698436e0 '\xef\x8a\xab=' -> '-8136980928525639178151698436' +xfmt3193 format 2306461180052144789522622584e199 '\xed\x8b\xb3>41g' -> '\xed\x8b\xb3\xed\x8b\xb3\xed\x8b\xb3\xed\x8b\xb3\xed\x8b\xb3\xed\x8b\xb3\xed\x8b\xb32.306461180052144789522622584e+226' +xfmt3194 format -8596309463950187419722810731E267 '\xea\xb2\xad<+96,.59' -> '-8.596309463950187419722810731E+294\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad\xea\xb2\xad' +xfmt3195 format 8E0 '' -> '8' +xfmt3196 format -4E0 '+19,.20f' -> '-4.00000000000000000000' +xfmt3197 format 9e285 ' 23.92E' -> ' 9.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E+285' +xfmt3198 format -6e81 '' -> '-6E+81' +xfmt3199 format 765441399812624256429646308253427189729098E0 '\xe4\xa9\xb2=-21,' -> '765,441,399,812,624,256,429,646,308,253,427,189,729,098' +xfmt3200 format -217025400246928725164798994870300146875139E0 '\xe3\x87\x91=-97,.9G' -> '-\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x91\xe3\x87\x912.17025400E+41' +xfmt3201 format 386046612671948315750477268032409377551485e316 '\xeb\x97\x8c=-6,.38g' -> '3.8604661267194831575047726803240937755e+357' +xfmt3202 format -982410739865904409246958047980073090484646E67 '\xee\x8a\xb6=+31,.33g' -> '-9.82410739865904409246958047980073e+108' +xfmt3203 format 1311442856615632218215665437064653022182911E0 '\xe6\xb3\x90>.42' -> '1.31144285661563221821566543706465302218291E+42' +xfmt3204 format -9595823959054766734798285303422842042134500E0 '' -> '-9595823959054766734798285303422842042134500' +xfmt3205 format 9290570257289637589644652171618191293133823E204 '' -> '9.290570257289637589644652171618191293133823E+246' +xfmt3206 format -8142246311778774387409546949156674045514985E284 '\xea\xa3\xa0< 8.10n' -> '-8.142246312e+326' +xfmt3207 format 481677E0 '36' -> ' 481677' +xfmt3208 format -364529e0 '\xee\xb3\x8a=2,' -> '-364,529' +xfmt3209 format 411688e37 '\xe8\x87\xb8=75,' -> '\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb8\xe8\x87\xb84.11688E+42' +xfmt3210 format -331350e320 '\xe7\x98\x85^.50' -> '-3.31350E+325' +xfmt3211 format 2605188095846157724064934568869108E0 '\xe4\x85\xa2^' -> '2605188095846157724064934568869108' +xfmt3212 format -5856928071903927097060435390231358E0 '-01' -> '-5856928071903927097060435390231358' +xfmt3213 format 3259524859527602694681732865947502e336 '\xe4\xad\x82<54' -> '3.259524859527602694681732865947502E+369\xe4\xad\x82\xe4\xad\x82\xe4\xad\x82\xe4\xad\x82\xe4\xad\x82\xe4\xad\x82\xe4\xad\x82\xe4\xad\x82\xe4\xad\x82\xe4\xad\x82\xe4\xad\x82\xe4\xad\x82\xe4\xad\x82\xe4\xad\x82' +xfmt3214 format -3487115907029239614705410254379642e264 '\xec\x8f\xa4^+,.31' -> '-3.487115907029239614705410254380E+297' +xfmt3215 format 0e0 '0' -> '0' +xfmt3216 format 0E0 '-92' -> ' 0' +xfmt3217 format 0E367 '-0E' -> '0E+367' +xfmt3218 format 0e219 '+09.61%' -> '+0.0000000000000000000000000000000000000000000000000000000000000%' +xfmt3219 format 897e0 '\xe5\x82\xb9>,G' -> '897' +xfmt3220 format -638e0 '\xec\x96\x96> 19,.26%' -> '-63,800.00000000000000000000000000%' +xfmt3221 format 271E237 '\xe8\xa2\x96^+8.19F' -> '+271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000' +xfmt3222 format -775E5 '-85.66' -> ' -7.75E+7' +xfmt3223 format 663113483663164009E0 '.22' -> '663113483663164009' +xfmt3224 format -233271254749015509E0 '' -> '-233271254749015509' +xfmt3225 format 108372195607033145E160 '-34,' -> ' 1.08372195607033145E+177' +xfmt3226 format -306003852771494278E234 ' 022,.88' -> '-3.06003852771494278E+251' +xfmt3227 format 401384989164e0 ' 16.35F' -> ' 401384989164.00000000000000000000000000000000000' +xfmt3228 format -970486332001e0 '\xea\x8f\x98^-,f' -> '-970,486,332,001' +xfmt3229 format 652222401959e51 '-0f' -> '652222401959000000000000000000000000000000000000000000000000000' +xfmt3230 format -906389323565E33 '' -> '-9.06389323565E+44' +xfmt3231 format 755205748415589446412963845e0 '+33,.77e' -> '+7.55205748415589446412963845000000000000000000000000000000000000000000000000000e+26' +xfmt3232 format -178150988579296364523701493E0 '\xe6\xb0\x88> 1.27' -> '-178150988579296364523701493' +xfmt3233 format 295716380084729200577654846E24 '+0' -> '+2.95716380084729200577654846E+50' +xfmt3234 format -125303585755077611837216823e250 '\xe7\xa1\x81>+8,.37f' -> '-1,253,035,857,550,776,118,372,168,230,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000' +xfmt3235 format 7978924613860765709E0 '+,' -> '+7,978,924,613,860,765,709' +xfmt3236 format -3918453032056026322E0 '0.44' -> '-3918453032056026322' +xfmt3237 format 5350661404667687575e155 '' -> '5.350661404667687575E+173' +xfmt3238 format -5746078910198682392E122 '-76,e' -> ' -5.746078910198682392e+140' +xfmt3239 format 611621052337640E0 '+49.2' -> ' +6.1E+14' +xfmt3240 format -855428892449479E0 ' 078' -> '-00000000000000000000000000000000000000000000000000000000000000855428892449479' +xfmt3241 format 318426210221040e283 '+020,.58' -> '+3.18426210221040E+297' +xfmt3242 format -389648825633106e105 '-045.1f' -> '-389648825633106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0' +xfmt3243 format 3185598697e0 '\xd2\x94^-36' -> '\xd2\x94\xd2\x94\xd2\x94\xd2\x94\xd2\x94\xd2\x94\xd2\x94\xd2\x94\xd2\x94\xd2\x94\xd2\x94\xd2\x94\xd2\x943185598697\xd2\x94\xd2\x94\xd2\x94\xd2\x94\xd2\x94\xd2\x94\xd2\x94\xd2\x94\xd2\x94\xd2\x94\xd2\x94\xd2\x94\xd2\x94' +xfmt3244 format -7841225838E0 '' -> '-7841225838' +xfmt3245 format 4926729695e171 '034F' -> '4926729695000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3246 format -4782511840E143 '\xec\x80\x9d=-23,.8g' -> '-\xec\x80\x9d\xec\x80\x9d\xec\x80\x9d\xec\x80\x9d\xec\x80\x9d\xec\x80\x9d\xec\x80\x9d\xec\x80\x9d4.7825118e+152' +xfmt3247 format 5100088106119381657876E0 '\xe1\x9b\xab>33,.48%' -> '510,008,810,611,938,165,787,600.000000000000000000000000000000000000000000000000%' +xfmt3248 format -4048615889791058190064e0 '\xea\xb4\x81=-69,.69F' -> '-4,048,615,889,791,058,190,064.000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3249 format 2700832920925607570271E331 '' -> '2.700832920925607570271E+352' +xfmt3250 format -3552846106629579370987e127 ' 26,.6' -> ' -3.55285E+148' +xfmt3251 format 67005495219269506708E0 't= 88.43G' -> ' ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt67005495219269506708' +xfmt3252 format -84380841858057418303E0 '\xe7\xaf\xbc=-20,.70' -> '-84,380,841,858,057,418,303' +xfmt3253 format 28772164215076840393e377 '\xec\x9f\x8f<-3,.52E' -> '2.8772164215076840393000000000000000000000000000000000E+396' +xfmt3254 format -20662084135098433836E258 '\xe4\x90\xac> 46,.33E' -> '\xe4\x90\xac\xe4\x90\xac\xe4\x90\xac\xe4\x90\xac\xe4\x90\xac-2.066208413509843383600000000000000E+277' +xfmt3255 format 78687267801440928762364344193E0 '\xe4\x87\xbe>-.42F' -> '78687267801440928762364344193.000000000000000000000000000000000000000000' +xfmt3256 format -49835508036104615775945822588e0 ' E' -> '-4.9835508036104615775945822588E+28' +xfmt3257 format 85496686117181357378868297287E75 ' 0,.58F' -> ' 85,496,686,117,181,357,378,868,297,287,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000' +xfmt3258 format -27648861350847931760220727753E155 '+0,f' -> '-2,764,886,135,084,793,176,022,072,775,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt3259 format 75777865388559768e0 '\xd3\x85>-,.80E' -> '7.57778653885597680000000000000000000000000000000000000000000000000000000000000000E+16' +xfmt3260 format -86777927762172424E0 '\xe0\xbe\xb6^+87.68F' -> '-86777927762172424.00000000000000000000000000000000000000000000000000000000000000000000' +xfmt3261 format 52916994810949662e5 '' -> '5.2916994810949662E+21' +xfmt3262 format -36960188107627011E254 '' -> '-3.6960188107627011E+270' +xfmt3263 format 5543219E0 ',' -> '5,543,219' +xfmt3264 format -7259812e0 ',' -> '-7,259,812' +xfmt3265 format 7422721e232 '63.93' -> ' 7.422721E+238' +xfmt3266 format -6054271e276 '' -> '-6.054271E+282' +xfmt3267 format 735614073371122096750E0 '' -> '735614073371122096750' +xfmt3268 format -402705046933637758740E0 '\xe4\x93\xbb=+33,.82' -> '-\xe4\x93\xbb\xe4\x93\xbb\xe4\x93\xbb\xe4\x93\xbb\xe4\x93\xbb402,705,046,933,637,758,740' +xfmt3269 format 506752372635279902539e69 '\xe9\x80\x8f> 62,.43g' -> '\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f\xe9\x80\x8f 5.06752372635279902539e+89' +xfmt3270 format -622591144933675172428E68 '\xef\x9f\xb8>90,.37g' -> '\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8\xef\x9f\xb8-6.22591144933675172428e+88' +xfmt3271 format 57181176197e0 '0' -> '57181176197' +xfmt3272 format -60363381089E0 '.83' -> '-60363381089' +xfmt3273 format 51201284366e332 ' 025,' -> ' 0,000,005.1201284366E+342' +xfmt3274 format -99069290791e131 '\xec\x8c\x9b= 67' -> '-\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b\xec\x8c\x9b9.9069290791E+141' +xfmt3275 format 51467289186978686379256179266916808848532672e0 '' -> '51467289186978686379256179266916808848532672' +xfmt3276 format -34729685761658325699724483976281115686728488E0 '\xea\x84\xb9= 94,.74F' -> '-34,729,685,761,658,325,699,724,483,976,281,115,686,728,488.00000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3277 format 47155223560079897268284248374116554430780391e115 'E' -> '4.7155223560079897268284248374116554430780391E+158' +xfmt3278 format -76733920582510038756679472141149735110557391e195 '\xe1\x9b\x99>-90,' -> '\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99\xe1\x9b\x99-7.6733920582510038756679472141149735110557391E+238' +xfmt3279 format 4208266358690459328437422E0 '\xed\x9f\x87< 72,.23f' -> ' 4,208,266,358,690,459,328,437,422.00000000000000000000000\xed\x9f\x87\xed\x9f\x87\xed\x9f\x87\xed\x9f\x87\xed\x9f\x87\xed\x9f\x87\xed\x9f\x87\xed\x9f\x87\xed\x9f\x87\xed\x9f\x87\xed\x9f\x87\xed\x9f\x87\xed\x9f\x87\xed\x9f\x87' +xfmt3280 format -5650789341431648037215456E0 '0,' -> '-5,650,789,341,431,648,037,215,456' +xfmt3281 format 9133774199349830871461110E116 ' 015,.43G' -> ' 9.133774199349830871461110E+140' +xfmt3282 format -8155474671155857384504601e154 '\xe0\xb6\x8e< 67,.68g' -> '-8.155474671155857384504601e+178\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e' +xfmt3283 format 62717866200812584887392130E0 '\xe3\xa8\x9c= 67,.87E' -> ' 6.271786620081258488739213000000000000000000000000000000000000000000000000000000000000000E+25' +xfmt3284 format -80849123914256943397868582e0 '-0.78F' -> '-80849123914256943397868582.000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3285 format 81329147394384811608364725E364 '\xe3\xac\xb8^93.78' -> '\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb88.1329147394384811608364725E+389\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8\xe3\xac\xb8' +xfmt3286 format -25063774196472130216846638e112 ' 86,.24E' -> ' -2.506377419647213021684664E+137' +xfmt3287 format 7561370877931997480601240770527e0 '\xe9\x83\xb9=64,.49' -> '\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb9\xe9\x83\xb97,561,370,877,931,997,480,601,240,770,527' +xfmt3288 format -2757274572000265559195173171486E0 '' -> '-2757274572000265559195173171486' +xfmt3289 format 1517086809723653332905329724075E275 '-0' -> '1.517086809723653332905329724075E+305' +xfmt3290 format -1463655399909174038609447277559e66 'e' -> '-1.463655399909174038609447277559e+96' +xfmt3291 format 25983180773318189877343E0 '\xe9\xa4\x9e< 71,.71G' -> ' 25,983,180,773,318,189,877,343\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e\xe9\xa4\x9e' +xfmt3292 format -94139818473767205690675e0 '' -> '-94139818473767205690675' +xfmt3293 format 64081648746622457880337E23 ' 091.65' -> ' 000000000000000000000000000000000000000000000000000000000000006.4081648746622457880337E+45' +xfmt3294 format -23608510685320707231812e370 '034,.78' -> '-0,002.3608510685320707231812E+392' +xfmt3295 format 123456789012345. '0' -> '123456789012345' +xfmt3296 format -123456789.1 '\xea\xb2\xa4> .89F' -> '-123456789.10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3297 format 8187273391798247926104364729e0 '\xe4\xad\x90<3' -> '8187273391798247926104364729' +xfmt3298 format -2626804090194383668673277278E0 ' 40,.34G' -> ' -2,626,804,090,194,383,668,673,277,278' +xfmt3299 format 8312554032351397034533986848e244 '\xee\x8a\x9f^-41,g' -> '\xee\x8a\x9f\xee\x8a\x9f\xee\x8a\x9f8.312554032351397034533986848e+271\xee\x8a\x9f\xee\x8a\x9f\xee\x8a\x9f\xee\x8a\x9f' +xfmt3300 format -3984628548205944081332012458e357 '\xe5\xac\xba> 89,.73%' -> '-398,462,854,820,594,408,133,201,245,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt3301 format 3423110478540897777494337309828134891482E0 '+0,' -> '+3,423,110,478,540,897,777,494,337,309,828,134,891,482' +xfmt3302 format -9961659575167800452697795561230704755329E0 '' -> '-9961659575167800452697795561230704755329' +xfmt3303 format 7276371193600382476000830925697439113827E128 '082,' -> '0,000,000,000,000,000,000,000,000,007.276371193600382476000830925697439113827E+167' +xfmt3304 format -9966113924361659030612131481726648959874e14 ' 085,.13%' -> '-99,661,139,243,616,590,306,121,314,817,266,489,598,740,000,000,000,000,000.0000000000000%' +xfmt3305 format 812e0 '\xe3\xa1\x89<+84.90E' -> '+8.120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E+2' +xfmt3306 format -235E0 '\xe9\x9e\xb9=-39' -> '-\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9\xe9\x9e\xb9235' +xfmt3307 format 940E298 '\xed\x80\x84>+' -> '+9.40E+300' +xfmt3308 format -912e358 '' -> '-9.12E+360' +xfmt3309 format 7599E0 '+047,' -> '+00,000,000,000,000,000,000,000,000,000,007,599' +xfmt3310 format -1813E0 '\xe3\xbb\xb8= 62.35G' -> '-\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb8\xe3\xbb\xb81813' +xfmt3311 format 9964E103 '44,.49%' -> '9,964,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000%' +xfmt3312 format -8518E315 '\xed\x9e\x8a<' -> '-8.518E+318' +xfmt3313 format 31294009712189992450400793359057E0 '+' -> '+31294009712189992450400793359057' +xfmt3314 format -15352048513775790782884718337941E0 '\xe9\xb6\xb2>.8' -> '-1.5352049E+31' +xfmt3315 format 36405568682438590701079527456782e136 '\xe6\xa8\xb4<.61E' -> '3.6405568682438590701079527456782000000000000000000000000000000E+167' +xfmt3316 format -49294333876674074518654481441639e282 '\xe5\xa2\xad<38%' -> '-4929433387667407451865448144163900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt3317 format 556705607701087979502697939756880360069175E0 '0,.58E' -> '5.5670560770108797950269793975688036006917500000000000000000E+41' +xfmt3318 format -618402326609440023917269799405101861756552e0 '49.50g' -> ' -618402326609440023917269799405101861756552' +xfmt3319 format 614953671297695159209840513912602238615117E366 '\xe5\xa9\xa0=.9' -> '6.14953671E+407' +xfmt3320 format -964483594841246504038610475179025656835116e30 '' -> '-9.64483594841246504038610475179025656835116E+71' +xfmt3321 format 302300551100046161123507027251E0 '\xec\x9e\x8b<71' -> '302300551100046161123507027251\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b\xec\x9e\x8b' +xfmt3322 format -868189400937169612285088065130e0 '\xe7\x95\xb1<+36,.29F' -> '-868,189,400,937,169,612,285,088,065,130.00000000000000000000000000000' +xfmt3323 format 969626893325848602638653226531e354 'g' -> '9.69626893325848602638653226531e+383' +xfmt3324 format -250894299647337930434890503931e271 '48' -> ' -2.50894299647337930434890503931E+300' +xfmt3325 format 12565795850e0 '\xe1\x94\x8a^71,.62E' -> '\xe1\x94\x8a1.25657958500000000000000000000000000000000000000000000000000000E+10\xe1\x94\x8a\xe1\x94\x8a' +xfmt3326 format -48305748985E0 '\xe4\xab\x94<+28,.82e' -> '-4.8305748985000000000000000000000000000000000000000000000000000000000000000000000000e+10' +xfmt3327 format 68430149223e119 '\xe2\x96\x80= 83' -> ' \xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x80\xe2\x96\x806.8430149223E+129' +xfmt3328 format -39412019344E222 '' -> '-3.9412019344E+232' +xfmt3329 format 15451832884790530014138763720015475e0 '+16,F' -> '+15,451,832,884,790,530,014,138,763,720,015,475' +xfmt3330 format -39019318161432655140322056881317652e0 '70e' -> ' -3.9019318161432655140322056881317652e+34' +xfmt3331 format 86552195201675999260022514480470071e68 '\xe9\x88\xb7<-74,.65' -> '8.6552195201675999260022514480470071E+102\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7\xe9\x88\xb7' +xfmt3332 format -11718370956229520826258108818538197E252 '+077E' -> '-000000000000000000000000000000000001.1718370956229520826258108818538197E+286' +xfmt3333 format 2360129966184776026715558547514030986380846E0 '+032,.73e' -> '+2.3601299661847760267155585475140309863808460000000000000000000000000000000e+42' +xfmt3334 format -4928117344737829500935245931856915665581390e0 '0' -> '-4928117344737829500935245931856915665581390' +xfmt3335 format 3946062580167525179535634296723781800944628e340 '-48.46' -> '3.946062580167525179535634296723781800944628E+382' +xfmt3336 format -7675277866674994682711828610696289799692654e299 '-075,' -> '-00,000,000,000,000,000,007.675277866674994682711828610696289799692654E+341' +xfmt3337 format 20940934054522475890259589870094763212E0 '-0,.76' -> '20,940,934,054,522,475,890,259,589,870,094,763,212' +xfmt3338 format -75148158863674543418291807750261547507E0 '\xd0\x8e>-,' -> '-75,148,158,863,674,543,418,291,807,750,261,547,507' +xfmt3339 format 63316858726549611548541664267766500424e352 '\xe1\xa6\xa0= 85' -> ' \xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa0\xe1\xa6\xa06.3316858726549611548541664267766500424E+389' +xfmt3340 format -47685956598576365277814499875445854257e309 '-0,%' -> '-4,768,595,659,857,636,527,781,449,987,544,585,425,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt3341 format 4679368112514198112158069905204616216e0 ',f' -> '4,679,368,112,514,198,112,158,069,905,204,616,216' +xfmt3342 format -8441234236297637384461218980105852194E0 '\xe9\x89\xb9>+11,.49F' -> '-8,441,234,236,297,637,384,461,218,980,105,852,194.0000000000000000000000000000000000000000000000000' +xfmt3343 format 4093153047513727320783300722652110206e166 '.68n' -> '4.093153047513727320783300722652110206e+202' +xfmt3344 format -5749550947488121689172323772742849489E220 '\xe0\xbb\x9e=-2,.46g' -> '-5.749550947488121689172323772742849489e+256' +xfmt3345 format 1294053644456103502444215861262783e0 '\xe0\xb1\xa8>-,.23' -> '1.2940536444561035024442E+33' +xfmt3346 format -1453090689904151289007407326947648e0 '-094,.5' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,001.4531E+33' +xfmt3347 format 5549969886662710700979576456803401E319 '\xe7\x89\x88<54.75' -> '5.549969886662710700979576456803401E+352\xe7\x89\x88\xe7\x89\x88\xe7\x89\x88\xe7\x89\x88\xe7\x89\x88\xe7\x89\x88\xe7\x89\x88\xe7\x89\x88\xe7\x89\x88\xe7\x89\x88\xe7\x89\x88\xe7\x89\x88\xe7\x89\x88\xe7\x89\x88' +xfmt3348 format -6925225877432466453820769718138323e64 '\xea\x8c\xbf<+29,.92F' -> '-69,252,258,774,324,664,538,207,697,181,383,230,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3349 format 3114330350868053386E0 '\xe9\xa1\xb7< ,.58f' -> ' 3,114,330,350,868,053,386.0000000000000000000000000000000000000000000000000000000000' +xfmt3350 format -4406640665631483104E0 '\xe6\xbe\xb3>,.6g' -> '-4.40664e+18' +xfmt3351 format 3342151345462553275e347 '\xeb\x82\x83^ ,F' -> ' 334,215,134,546,255,327,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt3352 format -8233868071372970308e334 '+8.58' -> '-8.233868071372970308E+352' +xfmt3353 format 234340023807347e0 'E' -> '2.34340023807347E+14' +xfmt3354 format -249256806161838E0 '' -> '-249256806161838' +xfmt3355 format 389367681164650E323 '+60,.86' -> ' +3.89367681164650E+337' +xfmt3356 format -536725437404593E371 ' 0.73n' -> '-5.36725437404593e+385' +xfmt3357 format 62455946630268774942227E0 '\xe6\xb3\xa9=+30,.21F' -> '+62,455,946,630,268,774,942,227.000000000000000000000' +xfmt3358 format -66859664412714836632054E0 '\xea\x88\xb4>,.65e' -> '-6.68596644127148366320540000000000000000000000000000000000000000000e+22' +xfmt3359 format 85427370738059634084404E239 '' -> '8.5427370738059634084404E+261' +xfmt3360 format -25992202391773859659767e164 ' 55' -> ' -2.5992202391773859659767E+186' +xfmt3361 format 27869352011345688313e0 '\xe6\x90\x8c=-.36g' -> '27869352011345688313' +xfmt3362 format -34157908584161240721E0 '-14,G' -> '-34,157,908,584,161,240,721' +xfmt3363 format 47174014049343916725e318 '\xe4\x84\xaa<+96,.79E' -> '+4.7174014049343916725000000000000000000000000000000000000000000000000000000000000E+337\xe4\x84\xaa\xe4\x84\xaa\xe4\x84\xaa\xe4\x84\xaa\xe4\x84\xaa\xe4\x84\xaa\xe4\x84\xaa\xe4\x84\xaa\xe4\x84\xaa' +xfmt3364 format -36957209724317997164e126 '\xe6\xb3\x9e=' -> '-3.6957209724317997164E+145' +xfmt3365 format 17869037352242138631904877e0 '\xe1\xac\xa1^.71' -> '17869037352242138631904877' +xfmt3366 format -85599062741041194891747176e0 '\xe5\xac\xbd=-,.80F' -> '-85,599,062,741,041,194,891,747,176.00000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3367 format 23458412162249098148718731e13 '\xe2\xaa\xb5<+39,.67f' -> '+234,584,121,622,490,981,487,187,310,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000' +xfmt3368 format -44912533765114253817627931E239 '-030,.81g' -> '-4.4912533765114253817627931e+264' +xfmt3369 format 275374789181753498974545974796275E0 '\xe6\x8f\x80>-,.98F' -> '275,374,789,181,753,498,974,545,974,796,275.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3370 format -138641793032912143258994692449416e0 '\xe1\x8c\xbf<+14.72n' -> '-138641793032912143258994692449416' +xfmt3371 format 184294453439108934831424165486547E21 '' -> '1.84294453439108934831424165486547E+53' +xfmt3372 format -984524099351633726691934217562394e88 '\xe1\xa3\x89^ 71,f' -> '-9,845,240,993,516,337,266,919,342,175,623,940,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt3373 format 36520629469110826885118341222299467656360565E0 ',e' -> '3.6520629469110826885118341222299467656360565e+43' +xfmt3374 format -56589979166480620765051190695850625004791809E0 '\xd4\xab<84,F' -> '-56,589,979,166,480,620,765,051,190,695,850,625,004,791,809\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab\xd4\xab' +xfmt3375 format 47435152497819296592312584323474376258762250e4 '' -> '4.7435152497819296592312584323474376258762250E+47' +xfmt3376 format -54637486058061897282300746169437059199904726E352 '0,' -> '-5.4637486058061897282300746169437059199904726E+395' +xfmt3377 format 865076744130E0 '\xe5\x88\x8a>' -> '865076744130' +xfmt3378 format -328516360843E0 '\xeb\xaa\xbd<7,.6f' -> '-328,516,360,843.000000' +xfmt3379 format 273429674868E374 '-45' -> ' 2.73429674868E+385' +xfmt3380 format -572591967028e198 '\xe9\xb1\x8d<55,.67%' -> '-57,259,196,702,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000%' +xfmt3381 format 301037986281438287258817236e0 '\xe5\xae\xbc> 11,.97G' -> ' 301,037,986,281,438,287,258,817,236' +xfmt3382 format -118585465399184967152154155E0 '' -> '-118585465399184967152154155' +xfmt3383 format 260887443833891193321343016E39 '\xe7\xaa\x85^+44.51f' -> '+260887443833891193321343016000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000' +xfmt3384 format -501927012968907730776108878E201 '\xe1\xa2\x95<-61,.77f' -> '-501,927,012,968,907,730,776,108,878,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3385 format 0e0 '\xe4\x8d\x86^ ,.12E' -> ' 0.000000000000E+12' +xfmt3386 format 0E0 '\xee\xa1\xa8^ ' -> ' 0' +xfmt3387 format 0E256 '\xef\xbc\xa5=-' -> '0E+256' +xfmt3388 format 0e195 '' -> '0E+195' +xfmt3389 format 765437122694988906186986E0 '' -> '765437122694988906186986' +xfmt3390 format -141485012068176874044169E0 '' -> '-141485012068176874044169' +xfmt3391 format 615368622890185069484701e205 '\xe9\xa4\xbc> ,.63F' -> ' 6,153,686,228,901,850,694,847,010,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000' +xfmt3392 format -719611985551571595794542E214 '+0' -> '-7.19611985551571595794542E+237' +xfmt3393 format 5E0 '+069,.42E' -> '+00,000,000,000,000,005.000000000000000000000000000000000000000000E+0' +xfmt3394 format -1E0 '' -> '-1' +xfmt3395 format 7e340 '\xe8\xae\xae^+81.90' -> '\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae+7E+340\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae\xe8\xae\xae' +xfmt3396 format -5e334 '11' -> ' -5E+334' +xfmt3397 format 848130196391232567892664346553852690201e0 '\xe5\xac\x8d<96,.30' -> '8.48130196391232567892664346554E+38\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d\xe5\xac\x8d' +xfmt3398 format -762196662961594235438458207180672893230e0 '\xe7\xbc\x94^-.82f' -> '-762196662961594235438458207180672893230.0000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3399 format 548554106630271683698428667055066891127e300 '\xeb\xa7\x93=8,.32E' -> '5.48554106630271683698428667055067E+338' +xfmt3400 format -297489274374336456970603360930619715782e155 '\xe1\x8d\xa5=84,' -> '-\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa5\xe1\x8d\xa52.97489274374336456970603360930619715782E+193' +xfmt3401 format 65231279937904456808979497989776026820590E0 '051,.62g' -> '65,231,279,937,904,456,808,979,497,989,776,026,820,590' +xfmt3402 format -32716781685613681815087356961019085939906e0 '\xe4\xa4\xa4>37' -> '-32716781685613681815087356961019085939906' +xfmt3403 format 22881530420053655513178098643116748723915E177 '0' -> '2.2881530420053655513178098643116748723915E+217' +xfmt3404 format -91194786255478847816232778628341922010467E87 ' ' -> '-9.1194786255478847816232778628341922010467E+127' +xfmt3405 format 33918E0 ',' -> '33,918' +xfmt3406 format -56211E0 '\xed\x82\x81>66,.16g' -> '\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81\xed\x82\x81-56,211' +xfmt3407 format 45984E222 '\xe6\xb6\xae>.95' -> '4.5984E+226' +xfmt3408 format -39209E93 '\xea\x84\x97> 28,.41E' -> '-3.92090000000000000000000000000000000000000E+97' +xfmt3409 format 59182639457263643E0 '+0.49g' -> '+59182639457263643' +xfmt3410 format -92881494217536390e0 ' 0,.33' -> '-92,881,494,217,536,390' +xfmt3411 format 69906909152266187E14 '\xe3\xa7\x91=-' -> '6.9906909152266187E+30' +xfmt3412 format -47080781608369889E296 '.34' -> '-4.7080781608369889E+312' +xfmt3413 format 6565459547E0 ',.9' -> '6.56545955E+9' +xfmt3414 format -5258880161E0 ',g' -> '-5,258,880,161' +xfmt3415 format 4242438004E210 '30,.88e' -> '4.2424380040000000000000000000000000000000000000000000000000000000000000000000000000000000e+219' +xfmt3416 format -5420716238E381 '\xe2\x83\x97< 53,.77F' -> '-5,420,716,238,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3417 format 1234567890.12 '-0,' -> '1,234,567,890.12' +xfmt3418 format -123456789012.1234567890123 '\xe2\xb2\xb9< ' -> '-123456789012.1234567890123' +xfmt3419 format 207705609392e0 '\xe8\x8d\xa8> 10,.14' -> ' 207,705,609,392' +xfmt3420 format -696291055515E0 '\xe8\x86\xad=52' -> '-\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad\xe8\x86\xad696291055515' +xfmt3421 format 570393552671e340 '\xe8\x9e\xa3=+1,.9%' -> '+570,393,552,671,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000%' +xfmt3422 format -405717130649E346 '+83,.41G' -> ' -4.05717130649E+357' +xfmt3423 format 92314883878994483028908925606813040401e0 '+033' -> '+92314883878994483028908925606813040401' +xfmt3424 format -83798598201723804038072527029896922208e0 '%' -> '-8379859820172380403807252702989692220800%' +xfmt3425 format 57674415335656759109437754168300056695E258 '\xe6\xb8\x92^+71,.16e' -> '\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92+5.7674415335656759e+295\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92\xe6\xb8\x92' +xfmt3426 format -30148299489224315311762712250706858499e369 '\xef\xb9\x8f> ,' -> '-3.0148299489224315311762712250706858499E+406' +xfmt3427 format 2714688742512025415510913465554596033015967E0 '.88' -> '2714688742512025415510913465554596033015967' +xfmt3428 format -2241922960921568231023841652804022227729007e0 'f' -> '-2241922960921568231023841652804022227729007' +xfmt3429 format 7668278901329157468428130728842539460325530e146 '\xe8\xb4\x8e=-94,.3g' -> '\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e\xe8\xb4\x8e7.67e+188' +xfmt3430 format -1117716243300320035857100497230909792687096e48 '\xea\x81\x98>.39n' -> '-1.11771624330032003585710049723090979269e+90' +xfmt3431 format 2147538573775446114500515396071924860e0 '' -> '2147538573775446114500515396071924860' +xfmt3432 format -2915598320217149428822374295315482405e0 '0' -> '-2915598320217149428822374295315482405' +xfmt3433 format 8170046475728073279164106732566703195E90 '\xec\xa5\xa9= 80,.32F' -> ' 8,170,046,475,728,073,279,164,106,732,566,703,195,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000' +xfmt3434 format -1607237900585757466637772713749458837e373 '-088,.77F' -> '-16,072,379,005,857,574,666,377,727,137,494,588,370,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3435 format 15977038944929436740690862362509179656121337e0 ',.93' -> '15,977,038,944,929,436,740,690,862,362,509,179,656,121,337' +xfmt3436 format -74249060254990873257358515541443852673985263e0 '' -> '-74249060254990873257358515541443852673985263' +xfmt3437 format 32530905698045235322862126281217435769705864e283 '\xe7\x92\x8d^+27,E' -> '+3.2530905698045235322862126281217435769705864E+326' +xfmt3438 format -24237859303879080292322327790140488555619349e220 '\xe9\x96\xb1> 13,.72f' -> '-242,378,593,038,790,802,923,223,277,901,404,885,556,193,490,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3439 format 31711e0 ' ,g' -> ' 31,711' +xfmt3440 format -91189E0 '88.38' -> ' -91189' +xfmt3441 format 78628e38 '77' -> ' 7.8628E+42' +xfmt3442 format -29308E105 'E' -> '-2.9308E+109' +xfmt3443 format 3091622772778829816E0 '-.68' -> '3091622772778829816' +xfmt3444 format -9477437366941456401E0 '' -> '-9477437366941456401' +xfmt3445 format 5319768329705234909E1 '\xea\xad\x9e<+' -> '+5.319768329705234909E+19' +xfmt3446 format -3756258896188280673E298 ' 046,.93F' -> '-37,562,588,961,882,806,730,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3447 format 763038400e0 '\xcb\xb5=,.53e' -> '7.63038400000000000000000000000000000000000000000000000e+8' +xfmt3448 format -145968105E0 '062.57n' -> '-0000000000000000000000000000000000000000000000000000145968105' +xfmt3449 format 223236337E262 '\xe4\xa8\xb6^ 38.18n' -> '\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6 2.23236337e+270\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6' +xfmt3450 format -231815210E345 '\xe9\x9f\xba>+94,.97' -> '\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba\xe9\x9f\xba-2.31815210E+353' +xfmt3451 format 9187923192706896992237313E0 '' -> '9187923192706896992237313' +xfmt3452 format -4372026199953497610809110e0 '\xe5\xa9\x82^-,G' -> '-4,372,026,199,953,497,610,809,110' +xfmt3453 format 7756673827996935033415349e328 '' -> '7.756673827996935033415349E+352' +xfmt3454 format -3319924852830778589195735e132 '' -> '-3.319924852830778589195735E+156' +xfmt3455 format 44887090E0 '+0E' -> '+4.4887090E+7' +xfmt3456 format -51751109e0 '\xea\x93\x9b>75,.60' -> '\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b\xea\x93\x9b-51,751,109' +xfmt3457 format 13119527E80 '\xe5\xb5\xb4= 15' -> ' \xe5\xb5\xb41.3119527E+87' +xfmt3458 format -26204200E308 '82' -> ' -2.6204200E+315' +xfmt3459 format 51965346015501879991851722283544846738614E0 ' 31,.36' -> ' 5.19653460155018799918517222835448467E+40' +xfmt3460 format -10125032988749937065086858803197286910516E0 '012.70F' -> '-10125032988749937065086858803197286910516.0000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3461 format 17531231754933649289540994387648680602691e220 '\xe4\x89\x8e^+91.20' -> '\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e+1.7531231754933649290E+260\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e\xe4\x89\x8e' +xfmt3462 format -71792711310747733310871010981251505771555e262 '\xe5\xa9\xb6>-,.46G' -> '-7.1792711310747733310871010981251505771555E+302' +xfmt3463 format 243E0 '0.76' -> '243' +xfmt3464 format -647E0 '\xe2\xa7\xa4> 27,.70%' -> '-64,700.0000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt3465 format 110E238 '\xee\x96\x94=E' -> '1.10E+240' +xfmt3466 format -524E270 '\xe4\x8d\x86^+84,.91F' -> '-524,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3467 format 30E0 '\xe5\x97\xa6>+59,.82e' -> '+3.0000000000000000000000000000000000000000000000000000000000000000000000000000000000e+1' +xfmt3468 format -38E0 '\xea\xa8\x9e< 2,.11f' -> '-38.00000000000' +xfmt3469 format 49e44 '\xdd\xb0<+68g' -> '+4.9e+45\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0\xdd\xb0' +xfmt3470 format -73E251 '-' -> '-7.3E+252' +xfmt3471 format 2665436390261564509789972913319925836994e0 '.3F' -> '2665436390261564509789972913319925836994.000' +xfmt3472 format -2808358281271682434432113460004828191655e0 '.81g' -> '-2808358281271682434432113460004828191655' +xfmt3473 format 2330234267076571153203360390338865565375E249 '\xcb\xa3=+,%' -> '+233,023,426,707,657,115,320,336,039,033,886,556,537,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt3474 format -9353873236883814587762082447206730956097E0 '\xec\x84\x87< 85,E' -> '-9.353873236883814587762082447206730956097E+39\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87\xec\x84\x87' +xfmt3475 format 2322484989846369090098265412e0 '' -> '2322484989846369090098265412' +xfmt3476 format -2540778555737374679871722075E0 '0' -> '-2540778555737374679871722075' +xfmt3477 format 1381692838612129518259546016E369 '-.45e' -> '1.381692838612129518259546016000000000000000000e+396' +xfmt3478 format -6304140105186365369842956485E144 '\xe1\x87\x9a>+16,.63%' -> '-630,414,010,518,636,536,984,295,648,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000%' +xfmt3479 format 54573144941084021533591e0 '\xe9\xbb\x94<-25.69' -> '54573144941084021533591\xe9\xbb\x94\xe9\xbb\x94' +xfmt3480 format -50278156672903022158660e0 '-0.98' -> '-50278156672903022158660' +xfmt3481 format 82393665702646399346845E158 '' -> '8.2393665702646399346845E+180' +xfmt3482 format -80269283512084384726074e293 '\xec\xae\x83>,' -> '-8.0269283512084384726074E+315' +xfmt3483 format 13298113561825516377426131E0 '\xed\x84\xa3> 49,.99' -> '\xed\x84\xa3\xed\x84\xa3\xed\x84\xa3\xed\x84\xa3\xed\x84\xa3\xed\x84\xa3\xed\x84\xa3\xed\x84\xa3\xed\x84\xa3\xed\x84\xa3\xed\x84\xa3\xed\x84\xa3\xed\x84\xa3\xed\x84\xa3 13,298,113,561,825,516,377,426,131' +xfmt3484 format -19070647861581548860336651E0 '075E' -> '-00000000000000000000000000000000000000000001.9070647861581548860336651E+25' +xfmt3485 format 77248327753382397625742768e59 '\xe7\xa4\x87=-37,.28f' -> '7,724,832,775,338,239,762,574,276,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000' +xfmt3486 format -13749602439409486995941991E41 '\xe4\xa8\xbb<-,.32F' -> '-1,374,960,243,940,948,699,594,199,100,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000' +xfmt3487 format 33067110571e0 '1' -> '33067110571' +xfmt3488 format -92483829045E0 '' -> '-92483829045' +xfmt3489 format 72452791045e331 '' -> '7.2452791045E+341' +xfmt3490 format -99068198710E361 '090,.18' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,009.9068198710E+371' +xfmt3491 format 7024245E0 '+071,.73G' -> '+00,000,000,000,000,000,000,000,000,000,000,000,000,000,000,007,024,245' +xfmt3492 format -3254145e0 '\xe6\xad\x83>6,' -> '-3,254,145' +xfmt3493 format 4812502E103 'F' -> '48125020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3494 format -4885481e383 '' -> '-4.885481E+389' +xfmt3495 format 75491192956533227725459257553e0 '\xed\x8d\xa9>+93,.26G' -> '\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9\xed\x8d\xa9+7.5491192956533227725459258E+28' +xfmt3496 format -57637875420631425489469938552e0 '\xe4\xa5\x8a<-6,.42g' -> '-57,637,875,420,631,425,489,469,938,552' +xfmt3497 format 83215078803441462257670937422e265 '0' -> '8.3215078803441462257670937422E+293' +xfmt3498 format -75568655485706384174363520480e98 ' 0,' -> '-7.5568655485706384174363520480E+126' +xfmt3499 format 1872379496450717E0 '031,.29' -> '000,000,001,872,379,496,450,717' +xfmt3500 format -1671353242302869e0 '' -> '-1671353242302869' +xfmt3501 format 3894788217908675E337 ',' -> '3.894788217908675E+352' +xfmt3502 format -3759980702490741E312 '' -> '-3.759980702490741E+327' +xfmt3503 format 3698e0 '\xe5\xa7\x9b=87,' -> '\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b\xe5\xa7\x9b3,698' +xfmt3504 format -5365E0 '\xe5\x8d\x8a=+' -> '-5365' +xfmt3505 format 5829e271 '\xe7\xbf\x8f^ ' -> ' 5.829E+274' +xfmt3506 format -1817e30 '\xe8\x86\xaf=' -> '-1.817E+33' +xfmt3507 format 937226744957112319341730291747590410981402e0 '\xe7\xad\xae= 18,.52g' -> ' 937,226,744,957,112,319,341,730,291,747,590,410,981,402' +xfmt3508 format -506500025770473572659163304266637664937392e0 '+06.52F' -> '-506500025770473572659163304266637664937392.0000000000000000000000000000000000000000000000000000' +xfmt3509 format 621810561444941925075257051212882466299810e290 '' -> '6.21810561444941925075257051212882466299810E+331' +xfmt3510 format -928490312504997667105653347418771201941230E35 '' -> '-9.28490312504997667105653347418771201941230E+76' +xfmt3511 format 442756613751584017746463888155008391009e0 '0,.71G' -> '442,756,613,751,584,017,746,463,888,155,008,391,009' +xfmt3512 format -101518828854788012776152293311232357311E0 ',' -> '-101,518,828,854,788,012,776,152,293,311,232,357,311' +xfmt3513 format 159186578305115631485518680475842661326e45 '' -> '1.59186578305115631485518680475842661326E+83' +xfmt3514 format -564002368076732575647966680771686541315e112 'F' -> '-5640023680767325756479666807716865413150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3515 format 37524199799179793E0 '' -> '37524199799179793' +xfmt3516 format -29999284989178753E0 '\xe9\xab\xa7^1,.41G' -> '-29,999,284,989,178,753' +xfmt3517 format 88470307618211143e342 '\xe3\x89\x9d> 32,' -> '\xe3\x89\x9d\xe3\x89\x9d\xe3\x89\x9d\xe3\x89\x9d\xe3\x89\x9d\xe3\x89\x9d\xe3\x89\x9d\xe3\x89\x9d 8.8470307618211143E+358' +xfmt3518 format -33626798356474933e121 '10g' -> '-3.3626798356474933e+137' +xfmt3519 format 382267198749881102253700248959040E0 '+095,.98F' -> '+382,267,198,749,881,102,253,700,248,959,040.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3520 format -804275639267299751345269451343602E0 '\xc8\xbd= .58e' -> '-8.0427563926729975134526945134360200000000000000000000000000e+32' +xfmt3521 format 558708233450363243788591961147510E220 '\xe7\x9d\x96^-71,.30e' -> '\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x965.587082334503632437885919611475e+252\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96\xe7\x9d\x96' +xfmt3522 format -590078349793835911438304681276791E185 ',' -> '-5.90078349793835911438304681276791E+217' +xfmt3523 format 1e0 '89,' -> ' 1' +xfmt3524 format -7e0 '-81g' -> ' -7' +xfmt3525 format 1E93 '\xe1\x94\xba>.11' -> '1E+93' +xfmt3526 format -1e42 '\xe6\x8a\x98= 73,.27g' -> '-\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x98\xe6\x8a\x981e+42' +xfmt3527 format 930294788313036506773258069135E0 '\xe4\x86\xbd>.1' -> '9E+29' +xfmt3528 format -958646372613449788184893127723E0 '-' -> '-958646372613449788184893127723' +xfmt3529 format 875392399357925182592316570393E357 '' -> '8.75392399357925182592316570393E+386' +xfmt3530 format -107790268679622604724713862067e155 ',' -> '-1.07790268679622604724713862067E+184' +xfmt3531 format 3959158666e0 ',g' -> '3,959,158,666' +xfmt3532 format -2385625136e0 '.3F' -> '-2385625136.000' +xfmt3533 format 6973357604E168 'g' -> '6.973357604e+177' +xfmt3534 format -8478895175e382 '\xec\x9f\x9e^.74' -> '-8.478895175E+391' +xfmt3535 format 79314867699220343341E0 '093,G' -> '0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,079,314,867,699,220,343,341' +xfmt3536 format -39123470337575560978e0 '\xe4\xa0\x85^+71,.88e' -> '-3.9123470337575560978000000000000000000000000000000000000000000000000000000000000000000000e+19' +xfmt3537 format 77430611098509985568e278 '' -> '7.7430611098509985568E+297' +xfmt3538 format -45678871234236894596e246 ',g' -> '-4.5678871234236894596e+265' +xfmt3539 format .123456789012345 '04.40E' -> '1.2345678901234500000000000000000000000000E-1' +xfmt3540 format -12345678901234.123456789 '\xe9\xa2\x9e^ 75,.1E' -> '\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e-1.2E+13\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e\xe9\xa2\x9e' +xfmt3541 format 5040165275869069523249017944E0 ',' -> '5,040,165,275,869,069,523,249,017,944' +xfmt3542 format -4665822495392779044088005070e0 '\xe8\xb6\x85=+18.21g' -> '-4.66582249539277904409e+27' +xfmt3543 format 9346909077724407317995808728E383 '' -> '9.346909077724407317995808728E+410' +xfmt3544 format -9102038254282081253241417284E229 '' -> '-9.102038254282081253241417284E+256' +xfmt3545 format 925089122000550346941462290E0 '' -> '925089122000550346941462290' +xfmt3546 format -386091323435738202130927664e0 '\xe7\x92\x9c>,' -> '-386,091,323,435,738,202,130,927,664' +xfmt3547 format 706873425662780530579615419E231 '\xe2\x8e\x86^+54,.85%' -> '+70,687,342,566,278,053,057,961,541,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt3548 format -884407436753406519073636867E358 '\xe3\x90\xb8^+,.46' -> '-8.84407436753406519073636867E+384' +xfmt3549 format 4449351428618575387217289417917615e0 'F' -> '4449351428618575387217289417917615' +xfmt3550 format -6212702937116099038692899764052149E0 '\xe2\xac\xa1=-12,.25e' -> '-6.2127029371160990386928998e+33' +xfmt3551 format 5360854016821096286454514110297469E81 '\xea\x9f\x99= 29,.45E' -> ' 5.360854016821096286454514110297469000000000000E+114' +xfmt3552 format -9472229235754468541671016740560731e78 '\xeb\x89\xac<+,.4F' -> '-9,472,229,235,754,468,541,671,016,740,560,731,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000' +xfmt3553 format 83107e0 '\xec\x85\xaa< 86,.66F' -> ' 83,107.000000000000000000000000000000000000000000000000000000000000000000\xec\x85\xaa\xec\x85\xaa\xec\x85\xaa\xec\x85\xaa\xec\x85\xaa\xec\x85\xaa\xec\x85\xaa\xec\x85\xaa\xec\x85\xaa\xec\x85\xaa\xec\x85\xaa\xec\x85\xaa' +xfmt3554 format -76076e0 '0.43G' -> '-76076' +xfmt3555 format 15184E182 '\xe2\xb5\xa8^ 49.69E' -> ' 1.518400000000000000000000000000000000000000000000000000000000000000000E+186' +xfmt3556 format -60240E114 '\xe7\xbf\xb4^,.92' -> '-6.0240E+118' +xfmt3557 format 310068833607367067120605734219022e0 '5,.22' -> '3.100688336073670671206E+32' +xfmt3558 format -309232882034163965203792750087904e0 '\xea\x98\x9a^' -> '-309232882034163965203792750087904' +xfmt3559 format 928861622980769436384036779238940E135 '%' -> '92886162298076943638403677923894000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt3560 format -374523558959456873282352636365081e210 '41.24F' -> '-374523558959456873282352636365081000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000' +xfmt3561 format 2239288598933730958238581840213439025224e0 '\xe6\x95\x8c<-78,.58G' -> '2,239,288,598,933,730,958,238,581,840,213,439,025,224\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c\xe6\x95\x8c' +xfmt3562 format -1906139236674952138307924722261860859093e0 '\xef\xa4\xaf<+.9' -> '-1.90613924E+39' +xfmt3563 format 6790011681162625411707911448480087050961E362 '+22' -> '+6.790011681162625411707911448480087050961E+401' +xfmt3564 format -5590896051844380289623945145334271383661e213 '.2g' -> '-5.6e+252' +xfmt3565 format 68836657858966841117580082229E0 '' -> '68836657858966841117580082229' +xfmt3566 format -61917744211124536477648676670e0 '0,' -> '-61,917,744,211,124,536,477,648,676,670' +xfmt3567 format 67463189596362813294533546610E109 '091,.96f' -> '674,631,895,963,628,132,945,335,466,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3568 format -26932901178056707421421855443e59 '\xe3\xa5\x82^ ,.11%' -> '-269,329,011,780,567,074,214,218,554,430,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000%' +xfmt3569 format 3737223160670343163312686838569004071e0 '038,e' -> '3.737223160670343163312686838569004071e+36' +xfmt3570 format -3850502751249715535207616672433495585E0 '\xc5\x94^80,e' -> '\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94-3.850502751249715535207616672433495585e+36\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94\xc5\x94' +xfmt3571 format 6164243060280977511849390903757050134E146 '\xef\x9e\xa3^+16.21G' -> '+6.16424306028097751185E+182' +xfmt3572 format -3111923809457156289892383699689906823E114 '\xec\x98\x83<-84,.4e' -> '-3.1119e+150\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83\xec\x98\x83' +xfmt3573 format 68225910128018990266785699853433497107319e0 '' -> '68225910128018990266785699853433497107319' +xfmt3574 format -86987855392410279096069523502553677589826E0 '\xe5\x96\x9f= 30,.6%' -> '-8,698,785,539,241,027,909,606,952,350,255,367,758,982,600.000000%' +xfmt3575 format 63605019612451804619902392799462258307281e120 ',.89' -> '6.3605019612451804619902392799462258307281E+160' +xfmt3576 format -77750662903829225348760818381011602406537e314 '\xe2\x9c\x89=91.24' -> '-\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x89\xe2\x9c\x897.77506629038292253487608E+354' +xfmt3577 format 2813451668883174e0 '\xe1\xbb\xb4=25.70n' -> '\xe1\xbb\xb4\xe1\xbb\xb4\xe1\xbb\xb4\xe1\xbb\xb4\xe1\xbb\xb4\xe1\xbb\xb4\xe1\xbb\xb4\xe1\xbb\xb4\xe1\xbb\xb42813451668883174' +xfmt3578 format -8002659957965112E0 '\xef\xa7\xa2= 2,.93g' -> '-8,002,659,957,965,112' +xfmt3579 format 3338293301828845e47 '.27e' -> '3.338293301828845000000000000e+62' +xfmt3580 format -9165611189140672E159 '\xe8\x87\xaf<,F' -> '-9,165,611,189,140,672,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt3581 format 7995810239019e0 '70,.42' -> ' 7,995,810,239,019' +xfmt3582 format -3184476732885E0 '\xe7\xa6\x86>75,E' -> '\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86\xe7\xa6\x86-3.184476732885E+12' +xfmt3583 format 6188863783950e313 '\xe0\xa6\xbf=+47,.67E' -> '+6.1888637839500000000000000000000000000000000000000000000000000000000E+325' +xfmt3584 format -8643711367457e379 '' -> '-8.643711367457E+391' +xfmt3585 format 87129885622931632990067e0 '\xec\xa8\x84=+47' -> '+\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x8487129885622931632990067' +xfmt3586 format -93568702306505663407699e0 '\xe5\x82\xbc=64,' -> '-\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc\xe5\x82\xbc93,568,702,306,505,663,407,699' +xfmt3587 format 21338039647024214963762E44 '\xe5\xbc\xaa< 58,.66' -> ' 2.1338039647024214963762E+66\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa\xe5\xbc\xaa' +xfmt3588 format -61373272539410581247692E341 '087' -> '-0000000000000000000000000000000000000000000000000000000006.1373272539410581247692E+363' +xfmt3589 format 69821788921394628e0 '54,.73' -> ' 69,821,788,921,394,628' +xfmt3590 format -32313545949765943e0 ' 041,.79E' -> '-3.2313545949765943000000000000000000000000000000000000000000000000000000000000000E+16' +xfmt3591 format 60762216729615499E203 '-' -> '6.0762216729615499E+219' +xfmt3592 format -29701124678541655e301 '0' -> '-2.9701124678541655E+317' +xfmt3593 format 26261909059174660557092908723953112268E0 '68.5f' -> ' 26261909059174660557092908723953112268.00000' +xfmt3594 format -38844809444706102453390710738771784267e0 '\xe9\xb1\xa0= 31,.54G' -> '-38,844,809,444,706,102,453,390,710,738,771,784,267' +xfmt3595 format 51639818553569764683825511541647826641E232 '\xe5\xa8\x8c=85F' -> '516398185535697646838255115416478266410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3596 format -44924344742818753062262630643441101640E360 '-080,.48G' -> '-0,000,000,000,000,000,000,000,000,004.4924344742818753062262630643441101640E+397' +xfmt3597 format 58966199902301548377945346136153080e0 '\xee\x8a\xae>81,.41F' -> '58,966,199,902,301,548,377,945,346,136,153,080.00000000000000000000000000000000000000000' +xfmt3598 format -49139014752779173899333871714623715e0 '\xe3\x84\x89>-12,.18f' -> '-49,139,014,752,779,173,899,333,871,714,623,715.000000000000000000' +xfmt3599 format 16674557826611140032747123076713930E110 '' -> '1.6674557826611140032747123076713930E+144' +xfmt3600 format -90212924115479041499724497929799832e166 '' -> '-9.0212924115479041499724497929799832E+200' +xfmt3601 format 192685749821964547425929794940e0 '\xea\xb4\xb7< 61,.61' -> ' 192,685,749,821,964,547,425,929,794,940\xea\xb4\xb7\xea\xb4\xb7\xea\xb4\xb7\xea\xb4\xb7\xea\xb4\xb7\xea\xb4\xb7\xea\xb4\xb7\xea\xb4\xb7\xea\xb4\xb7\xea\xb4\xb7\xea\xb4\xb7\xea\xb4\xb7\xea\xb4\xb7\xea\xb4\xb7\xea\xb4\xb7\xea\xb4\xb7\xea\xb4\xb7\xea\xb4\xb7\xea\xb4\xb7\xea\xb4\xb7\xea\xb4\xb7' +xfmt3602 format -163255033783263742934607078627e0 '\xe8\xb2\x8c=79,.59e' -> '-\xe8\xb2\x8c\xe8\xb2\x8c\xe8\xb2\x8c\xe8\xb2\x8c\xe8\xb2\x8c\xe8\xb2\x8c\xe8\xb2\x8c\xe8\xb2\x8c\xe8\xb2\x8c\xe8\xb2\x8c\xe8\xb2\x8c\xe8\xb2\x8c\xe8\xb2\x8c1.63255033783263742934607078627000000000000000000000000000000e+29' +xfmt3603 format 827034715271371002432108653695e198 '\xe6\x91\xb0<+' -> '+8.27034715271371002432108653695E+227' +xfmt3604 format -859700942202850126184401230705E65 '\xee\xb9\x8d^+61,.38e' -> '\xee\xb9\x8d\xee\xb9\x8d\xee\xb9\x8d\xee\xb9\x8d\xee\xb9\x8d\xee\xb9\x8d\xee\xb9\x8d\xee\xb9\x8d-8.59700942202850126184401230705000000000e+94\xee\xb9\x8d\xee\xb9\x8d\xee\xb9\x8d\xee\xb9\x8d\xee\xb9\x8d\xee\xb9\x8d\xee\xb9\x8d\xee\xb9\x8d' +xfmt3605 format 3747994574813518504E0 '\xe0\xa1\xad^+17,.67G' -> '+3,747,994,574,813,518,504' +xfmt3606 format -2748268967363287192E0 '\xe5\xbb\x9a=+1,.97F' -> '-2,748,268,967,363,287,192.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3607 format 9892643183438301411e225 '\xe8\xb2\xb0>+G' -> '+9.892643183438301411E+243' +xfmt3608 format -6564004156935113783E212 '' -> '-6.564004156935113783E+230' +xfmt3609 format 849145580886727431893826335862706227E0 '\xe7\x88\x8c^ 61,.66' -> '\xe7\x88\x8c\xe7\x88\x8c\xe7\x88\x8c\xe7\x88\x8c\xe7\x88\x8c\xe7\x88\x8c 849,145,580,886,727,431,893,826,335,862,706,227\xe7\x88\x8c\xe7\x88\x8c\xe7\x88\x8c\xe7\x88\x8c\xe7\x88\x8c\xe7\x88\x8c\xe7\x88\x8c' +xfmt3610 format -213876426275340252858281678690452166e0 ',' -> '-213,876,426,275,340,252,858,281,678,690,452,166' +xfmt3611 format 634673075847178955153252353111344311e240 '032.88G' -> '6.34673075847178955153252353111344311E+275' +xfmt3612 format -102253703569077258405480026320303120E17 '\xe2\x99\x9b<37' -> '-1.02253703569077258405480026320303120E+52' +xfmt3613 format 302013236793750111094842e0 '\xe1\x98\xb7^+84,.76f' -> '+302,013,236,793,750,111,094,842.0000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3614 format -580184693075886632723613E0 '64' -> ' -580184693075886632723613' +xfmt3615 format 669847893878572141633010e167 '\xec\xbf\xbb^34,.94E' -> '6.6984789387857214163301000000000000000000000000000000000000000000000000000000000000000000000000E+190' +xfmt3616 format -731325667270017065181992E22 ',' -> '-7.31325667270017065181992E+45' +xfmt3617 format 689465825351e0 '-0,.24f' -> '689,465,825,351.000000000000000000000000' +xfmt3618 format -807519582869e0 '\xe1\x83\xb9<10,' -> '-807,519,582,869' +xfmt3619 format 667355365064E261 ' ,' -> ' 6.67355365064E+272' +xfmt3620 format -792545123489e362 '' -> '-7.92545123489E+373' +xfmt3621 format 42642360774E0 '\xee\xa5\x99=+,.38f' -> '+42,642,360,774.00000000000000000000000000000000000000' +xfmt3622 format -72339578186E0 '-34,%' -> ' -7,233,957,818,600%' +xfmt3623 format 58580759181e290 '\xe7\xaf\xb8<-82,.7f' -> '5,858,075,918,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000' +xfmt3624 format -35174915141E121 '\xef\xb9\xbb^+25.75g' -> '\xef\xb9\xbb\xef\xb9\xbb\xef\xb9\xbb-3.5174915141e+131\xef\xb9\xbb\xef\xb9\xbb\xef\xb9\xbb\xef\xb9\xbb' +xfmt3625 format 607254055382151815546852986211260353406E0 '\xcc\xb2<-48,.23' -> '6.0725405538215181554685E+38\xcc\xb2\xcc\xb2\xcc\xb2\xcc\xb2\xcc\xb2\xcc\xb2\xcc\xb2\xcc\xb2\xcc\xb2\xcc\xb2\xcc\xb2\xcc\xb2\xcc\xb2\xcc\xb2\xcc\xb2\xcc\xb2\xcc\xb2\xcc\xb2\xcc\xb2\xcc\xb2' +xfmt3626 format -484664410391695007171213818815346595217e0 '\xe3\x8a\xb1< ,F' -> '-484,664,410,391,695,007,171,213,818,815,346,595,217' +xfmt3627 format 776097618139036052288125152071522652598E266 '\xe5\x94\xb9>-31,.92%' -> '7,760,976,181,390,360,522,881,251,520,715,226,525,980,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt3628 format -805439941580314610764897686856072510732E149 '\xed\x95\x91<,.78' -> '-8.05439941580314610764897686856072510732E+187' +xfmt3629 format 326353993518686206698383510195865916418513e0 '\xe4\xb2\xa5<-7.35E' -> '3.26353993518686206698383510195865916E+41' +xfmt3630 format -361219389774762330472741787536143318114421e0 '58' -> ' -361219389774762330472741787536143318114421' +xfmt3631 format 193157152180764241885803031742078581334740E163 '\xe2\x8a\xb2<+13F' -> '+1931571521807642418858030317420785813347400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3632 format -570550345812542634744573663115382709305828E235 '\xec\x85\xae= 60,.65E' -> '-5.70550345812542634744573663115382709305828000000000000000000000000E+276' +xfmt3633 format 0e0 '11,f' -> ' 0' +xfmt3634 format 0e0 '\xe1\xaf\xb7^f' -> '0' +xfmt3635 format 0e291 '\xec\xa7\xab<-88.86g' -> '0e+291\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab\xec\xa7\xab' +xfmt3636 format 0e27 '\xeb\xb7\xb2< .45e' -> ' 0.000000000000000000000000000000000000000000000e+72' +xfmt3637 format 6844e0 '\xe7\x9c\xbb> .96' -> ' 6844' +xfmt3638 format -2428e0 ',.67' -> '-2,428' +xfmt3639 format 6849e299 '' -> '6.849E+302' +xfmt3640 format -3552E349 '58,e' -> ' -3.552e+352' +xfmt3641 format 9117575726482472213649730043358907961068601e0 '\xee\xad\xbc> ,.26' -> ' 9.1175757264824722136497300E+42' +xfmt3642 format -9783622333008069576693472754527295830361516E0 '+78' -> ' -9783622333008069576693472754527295830361516' +xfmt3643 format 7887481290708078677606406671048436580762057E120 '0.2' -> '7.9E+162' +xfmt3644 format -4266532596066156132995168430909177353809630E178 '\xef\x93\xa5>+87' -> '\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5\xef\x93\xa5-4.266532596066156132995168430909177353809630E+220' +xfmt3645 format 37710318e0 ' ,.65%' -> ' 3,771,031,800.00000000000000000000000000000000000000000000000000000000000000000%' +xfmt3646 format -99525437E0 '\xec\xa1\xb5^+21.2E' -> '\xec\xa1\xb5\xec\xa1\xb5\xec\xa1\xb5\xec\xa1\xb5\xec\xa1\xb5\xec\xa1\xb5-9.95E+7\xec\xa1\xb5\xec\xa1\xb5\xec\xa1\xb5\xec\xa1\xb5\xec\xa1\xb5\xec\xa1\xb5\xec\xa1\xb5' +xfmt3647 format 87999447E41 '\xe9\xb9\x82^ .62F' -> ' 8799944700000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000000' +xfmt3648 format -24385800e74 '' -> '-2.4385800E+81' +xfmt3649 format 4573981802e0 '' -> '4573981802' +xfmt3650 format -4301631388e0 '\xe4\x84\xb6=-,' -> '-4,301,631,388' +xfmt3651 format 6605548297e27 '-0,.35e' -> '6.60554829700000000000000000000000000e+36' +xfmt3652 format -3702724773e310 '' -> '-3.702724773E+319' +xfmt3653 format 301375632912722932376E0 '\xea\x8f\xb5<-95,.76f' -> '301,375,632,912,722,932,376.0000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3654 format -685379581136225800285e0 '' -> '-685379581136225800285' +xfmt3655 format 350284222691015477782E299 'G' -> '3.50284222691015477782E+319' +xfmt3656 format -120533702331205223258e233 '\xe9\xac\x8b=43,' -> '-\xe9\xac\x8b\xe9\xac\x8b\xe9\xac\x8b\xe9\xac\x8b\xe9\xac\x8b\xe9\xac\x8b\xe9\xac\x8b\xe9\xac\x8b\xe9\xac\x8b\xe9\xac\x8b\xe9\xac\x8b\xe9\xac\x8b\xe9\xac\x8b\xe9\xac\x8b\xe9\xac\x8b1.20533702331205223258E+253' +xfmt3657 format 4926450380725093070153e0 '.40' -> '4926450380725093070153' +xfmt3658 format -8834216129145898016048e0 '-50,' -> ' -8,834,216,129,145,898,016,048' +xfmt3659 format 1422284085702983811078e136 '\xee\xbb\x8c^ 4,.99f' -> ' 14,222,840,857,029,838,110,780,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3660 format -3358512466450207871085e283 '\xed\x88\x83=,' -> '-3.358512466450207871085E+304' +xfmt3661 format 12345678901234.12345678901234 '\xce\xac=39,E' -> '\xce\xac\xce\xac\xce\xac\xce\xac\xce\xac\xce\xac1.234567890123412345678901234E+13' +xfmt3662 format -12345678901.123456 '\xe5\xa9\x9b=-8.3e' -> '-1.235e+10' +xfmt3663 format 54187521857137175994022172962990403255888e0 '+,.73%' -> '+5,418,752,185,713,717,599,402,217,296,299,040,325,588,800.0000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt3664 format -91779028423491160837590795126509040267112e0 '\xe0\xa9\xb3=-4,%' -> '-9,177,902,842,349,116,083,759,079,512,650,904,026,711,200%' +xfmt3665 format 84970265815432367482742937007549632958233E50 '+0.33n' -> '+8.49702658154323674827429370075496e+90' +xfmt3666 format -76460332445440625773548471711420408677545E202 '\xe4\x8a\x9b^+60.94E' -> '-7.6460332445440625773548471711420408677545000000000000000000000000000000000000000000000000000000E+242' +xfmt3667 format 79737311474464756849375785e0 '\xec\x9e\xb7^+73,.69e' -> '+7.973731147446475684937578500000000000000000000000000000000000000000000e+25' +xfmt3668 format -47098282518125355430492764E0 '\xeb\xa7\x88>,' -> '-47,098,282,518,125,355,430,492,764' +xfmt3669 format 45301670695481112776203221e71 '17f' -> '4530167069548111277620322100000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3670 format -94475096900756208719358380e315 '\xe1\x92\xb7^+,' -> '-9.4475096900756208719358380E+340' +xfmt3671 format 830106489740E0 '\xe5\x87\xae^+84,E' -> '\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae+8.30106489740E+11\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae\xe5\x87\xae' +xfmt3672 format -284574927737e0 '30' -> ' -284574927737' +xfmt3673 format 610885555471E285 '+,' -> '+6.10885555471E+296' +xfmt3674 format -303383916844e187 '090.87' -> '-000000000000000000000000000000000000000000000000000000000000000000000003.03383916844E+198' +xfmt3675 format 2772074663151E0 '+0,' -> '+2,772,074,663,151' +xfmt3676 format -4781257179798e0 '20.9' -> ' -4.78125718E+12' +xfmt3677 format 3148779291717E264 '\xe4\xa2\xb4<+50,.66' -> '+3.148779291717E+276\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4\xe4\xa2\xb4' +xfmt3678 format -1674603835412E0 '\xe4\x86\xa5>38,e' -> '\xe4\x86\xa5\xe4\x86\xa5\xe4\x86\xa5\xe4\x86\xa5\xe4\x86\xa5\xe4\x86\xa5\xe4\x86\xa5\xe4\x86\xa5\xe4\x86\xa5\xe4\x86\xa5\xe4\x86\xa5\xe4\x86\xa5\xe4\x86\xa5\xe4\x86\xa5\xe4\x86\xa5\xe4\x86\xa5\xe4\x86\xa5\xe4\x86\xa5\xe4\x86\xa5-1.674603835412e+12' +xfmt3679 format 5631628889555199967645468554943E0 '' -> '5631628889555199967645468554943' +xfmt3680 format -7345279622388425877624687961008E0 '\xe9\xa1\xae>,.93' -> '-7,345,279,622,388,425,877,624,687,961,008' +xfmt3681 format 6827978439353378877779548857154e325 '66,.96G' -> ' 6.827978439353378877779548857154E+355' +xfmt3682 format -7888829805682605947312495548214e85 '+,g' -> '-7.888829805682605947312495548214e+115' +xfmt3683 format 8015777866919906952E0 '0,' -> '8,015,777,866,919,906,952' +xfmt3684 format -8374572773264931310E0 ' 07,.93' -> '-8,374,572,773,264,931,310' +xfmt3685 format 8407417150067341314E343 '' -> '8.407417150067341314E+361' +xfmt3686 format -4896057303243069262E362 '\xee\xbc\x9d^+12,.30' -> '-4.896057303243069262E+380' +xfmt3687 format 1981052859147189E0 '\xec\xb0\xb0< 81,.48g' -> ' 1,981,052,859,147,189\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0\xec\xb0\xb0' +xfmt3688 format -4967965336792265E0 '\xd3\xa0^-,' -> '-4,967,965,336,792,265' +xfmt3689 format 2337766382547363E277 '\xe3\x8e\xa7>87,.33%' -> '2,337,766,382,547,363,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000%' +xfmt3690 format -7533703043147121E256 '\xe1\xa5\xab=53' -> '-\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab\xe1\xa5\xab7.533703043147121E+271' +xfmt3691 format 2479826438756200438948e0 '' -> '2479826438756200438948' +xfmt3692 format -8024947520345171984847e0 '' -> '-8024947520345171984847' +xfmt3693 format 3183913096784281354860E189 '+0,.46F' -> '+3,183,913,096,784,281,354,860,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000' +xfmt3694 format -5274982691913009555873e351 '+053,e' -> '-0,000,000,000,000,000,005.274982691913009555873e+372' +xfmt3695 format 851005957259953492134814488473116E0 '\xe1\x82\x83=g' -> '851005957259953492134814488473116' +xfmt3696 format -571882077698474216992376705090660e0 '\xd1\x90^-,.61E' -> '-5.7188207769847421699237670509066000000000000000000000000000000E+32' +xfmt3697 format 451129591932612874787458012152232E58 '\xe8\x8a\x9b>+13,G' -> '+4.51129591932612874787458012152232E+90' +xfmt3698 format -787787813552821126747070770930141E69 '\xe0\xa5\xb8^+6.70F' -> '-787787813552821126747070770930141000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3699 format 455184E0 '\xee\x9c\x95<.92' -> '455184' +xfmt3700 format -474468E0 '-' -> '-474468' +xfmt3701 format 943610E153 ' 031,.82' -> ' 000,000,000,000,009.43610E+158' +xfmt3702 format -956238e5 '' -> '-9.56238E+10' +xfmt3703 format 16157258050e0 '+0.49' -> '+16157258050' +xfmt3704 format -76455334496E0 '055,g' -> '-00,000,000,000,000,000,000,000,000,000,076,455,334,496' +xfmt3705 format 55775361218E338 '\xe1\x88\xa4= 92,.72f' -> ' 5,577,536,121,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3706 format -90925679311E71 '' -> '-9.0925679311E+81' +xfmt3707 format 1572293953845947383820518173e0 '\xe5\xb8\x8f> ,.53' -> ' 1,572,293,953,845,947,383,820,518,173' +xfmt3708 format -5510641935738485324033012925e0 '\xe0\xb4\xb2^ 83,.76' -> '\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2-5,510,641,935,738,485,324,033,012,925\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2\xe0\xb4\xb2' +xfmt3709 format 6736631481146524858205132585e178 '\xed\x88\xab>' -> '6.736631481146524858205132585E+205' +xfmt3710 format -1178786072192137855140353603E83 '\xe6\xbc\x9b=+36,.55F' -> '-117,878,607,219,213,785,514,035,360,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000' +xfmt3711 format 837734648985690663016612496e0 'g' -> '837734648985690663016612496' +xfmt3712 format -355025968525810943262695273E0 '%' -> '-35502596852581094326269527300%' +xfmt3713 format 610233260261231321645900678E373 '\xe2\xb3\xbf<-17,.90G' -> '6.10233260261231321645900678E+399' +xfmt3714 format -945600950896127077807849744E262 '' -> '-9.45600950896127077807849744E+288' +xfmt3715 format 49671110896767660985847969228756662e0 '\xe8\x98\x94> 23.59' -> ' 49671110896767660985847969228756662' +xfmt3716 format -17374428227464320550612014444314775e0 '-f' -> '-17374428227464320550612014444314775' +xfmt3717 format 77217307684818279219788766499233879e114 '\xe3\xab\xbe=7' -> '7.7217307684818279219788766499233879E+148' +xfmt3718 format -88693353897790536433972755613900642E365 '+053,.34G' -> '-0,000,000,008.869335389779053643397275561390064E+399' +xfmt3719 format 40762E0 '\xe1\x8f\x9e^+52,.36E' -> '\xe1\x8f\x9e\xe1\x8f\x9e\xe1\x8f\x9e\xe1\x8f\x9e\xe1\x8f\x9e+4.076200000000000000000000000000000000E+4\xe1\x8f\x9e\xe1\x8f\x9e\xe1\x8f\x9e\xe1\x8f\x9e\xe1\x8f\x9e' +xfmt3720 format -27320E0 '-084,.60F' -> '-00,000,000,000,027,320.000000000000000000000000000000000000000000000000000000000000' +xfmt3721 format 39737E289 '' -> '3.9737E+293' +xfmt3722 format -64580E233 '\xec\xae\x9a=9,' -> '-6.4580E+237' +xfmt3723 format 6441897447400316890645407547667529815226E0 '\xe3\xbc\x8c< 73.1e' -> ' 6.4e+39\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c\xe3\xbc\x8c' +xfmt3724 format -8314208741740404301871589991023876339763E0 '\xd7\xb7>+.5' -> '-8.3142E+39' +xfmt3725 format 9247422687600012087742570044210089243817E295 '\xd0\xbd^ 79,.30E' -> '\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd 9.247422687600012087742570044210E+334\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd\xd0\xbd' +xfmt3726 format -4824574014953037257473467800183669707449E182 '\xe6\x83\xa2>,' -> '-4.824574014953037257473467800183669707449E+221' +xfmt3727 format 5245e0 '\xee\xba\xb8=-.10' -> '5245' +xfmt3728 format -1501e0 '.30' -> '-1501' +xfmt3729 format 2699E333 ' 0,%' -> ' 269,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt3730 format -1405e312 '.91' -> '-1.405E+315' +xfmt3731 format 7130240746388529074573654415422665887E0 '\xe3\x94\xb1=' -> '7130240746388529074573654415422665887' +xfmt3732 format -9754736426266517205668427018005440520E0 '\xef\x9c\x85<+60,.85g' -> '-9,754,736,426,266,517,205,668,427,018,005,440,520\xef\x9c\x85\xef\x9c\x85\xef\x9c\x85\xef\x9c\x85\xef\x9c\x85\xef\x9c\x85\xef\x9c\x85\xef\x9c\x85\xef\x9c\x85\xef\x9c\x85' +xfmt3733 format 8602229510533949858815821484086891477E175 '\xe3\xb1\x86> 33,.36%' -> ' 8,602,229,510,533,949,858,815,821,484,086,891,477,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000%' +xfmt3734 format -9807918761716624493667425697238746668E9 '0' -> '-9.807918761716624493667425697238746668E+45' +xfmt3735 format 90926301751408715071e0 '\xe4\x82\xb7^+21,.49G' -> '+90,926,301,751,408,715,071' +xfmt3736 format -52499245204478762607E0 '\xc9\xaa^97,.13%' -> '\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa-5,249,924,520,447,876,260,700.0000000000000%\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa\xc9\xaa' +xfmt3737 format 31145817064096887891e317 ' 0' -> ' 3.1145817064096887891E+336' +xfmt3738 format -13926245271470515387e197 '0E' -> '-1.3926245271470515387E+216' +xfmt3739 format 2382852e0 ',' -> '2,382,852' +xfmt3740 format -9533707E0 '.82' -> '-9533707' +xfmt3741 format 2473039E273 '\xe7\xb3\x8b>98,.38%' -> '247,303,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000%' +xfmt3742 format -1414773E155 '\xe2\x93\xbb>-60,.82G' -> '\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb\xe2\x93\xbb-1.414773E+161' +xfmt3743 format 0e0 '\xef\xa2\xa3=+14,.22e' -> '+0.0000000000000000000000e+22' +xfmt3744 format 0E0 '' -> '0' +xfmt3745 format 0E158 '\xe2\xab\x8f=-70,.79F' -> '0.0000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3746 format 0E234 '' -> '0E+234' +xfmt3747 format 369360022859747719778396e0 '057g' -> '000000000000000000000000000000000369360022859747719778396' +xfmt3748 format -257817535796859864767675E0 '31' -> ' -257817535796859864767675' +xfmt3749 format 339597882258206894540912e246 '\xec\x8a\x86> 40,.39e' -> ' 3.395978822582068945409120000000000000000e+269' +xfmt3750 format -205873530861382557648755E9 '0' -> '-2.05873530861382557648755E+32' +xfmt3751 format 498553935E0 '-038,.93F' -> '498,553,935.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3752 format -256386210E0 '' -> '-256386210' +xfmt3753 format 959985878e41 '021,' -> '0,000,009.59985878E+49' +xfmt3754 format -565573791e294 '\xec\xa1\xa6=20,.60f' -> '-565,573,791,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000' +xfmt3755 format 88895357398732499150637450032909727750108610e0 '+21,' -> '+88,895,357,398,732,499,150,637,450,032,909,727,750,108,610' +xfmt3756 format -64045101697772962792690665949446357479565131e0 '' -> '-64045101697772962792690665949446357479565131' +xfmt3757 format 79206123244476926476478287242055477497127648E103 ' 0,.78g' -> ' 7.9206123244476926476478287242055477497127648e+146' +xfmt3758 format -21368719975604697339805172522479155573471319e359 '\xe8\x84\x9b^,.62%' -> '-213,687,199,756,046,973,398,051,725,224,791,555,734,713,190,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000%' +xfmt3759 format 462127799803777340e0 '\xec\xbf\xad= 1.12' -> ' 4.62127799804E+17' +xfmt3760 format -781748471696185493E0 '\xe2\x8d\x8e=-,.59' -> '-781,748,471,696,185,493' +xfmt3761 format 338914371033510392e307 '\xe7\xa8\xbc= 21,.42f' -> ' 3,389,143,710,335,103,920,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000' +xfmt3762 format -603439509717990596e244 ',' -> '-6.03439509717990596E+261' +xfmt3763 format 797135190820280933056282921499325180903e0 '\xe2\xbd\x9f^42,.68G' -> '797,135,190,820,280,933,056,282,921,499,325,180,903' +xfmt3764 format -124456119877758432845025948153087859557e0 '\xe2\xa7\x8e=+58,.20G' -> '-\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e\xe2\xa7\x8e1.2445611987775843285E+38' +xfmt3765 format 167991580272599377669491622915037687297E60 '+051,' -> '+000,001.67991580272599377669491622915037687297E+98' +xfmt3766 format -518763086356273152396851992803988371770E240 '\xe2\xaa\x93> 27.73G' -> '-5.18763086356273152396851992803988371770E+278' +xfmt3767 format 7E0 ' 30,F' -> ' 7' +xfmt3768 format -3E0 '\xe3\xad\x9a=+3,.34F' -> '-3.0000000000000000000000000000000000' +xfmt3769 format 7E369 '7' -> ' 7E+369' +xfmt3770 format -1e333 '-014,.81' -> '-0,000,001E+333' +xfmt3771 format 388266627790349116904E0 '' -> '388266627790349116904' +xfmt3772 format -880046135009907970743E0 '' -> '-880046135009907970743' +xfmt3773 format 974472129996181095468e162 '0,' -> '9.74472129996181095468E+182' +xfmt3774 format -243577438509513635174e206 '0' -> '-2.43577438509513635174E+226' +xfmt3775 format 52E0 '\xe1\x87\x8f>+93,.56e' -> '\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f\xe1\x87\x8f+5.20000000000000000000000000000000000000000000000000000000e+1' +xfmt3776 format -60e0 '\xe8\x88\xbd>g' -> '-60' +xfmt3777 format 80e249 '\xec\x95\x9c^ 36,e' -> '\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c 8.0e+250\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c\xec\x95\x9c' +xfmt3778 format -51e223 '\xe1\x87\x8d=-n' -> '-5.1e+224' +xfmt3779 format 16238804420582584e0 '\xee\x84\x92< 14.57%' -> ' 1623880442058258400.000000000000000000000000000000000000000000000000000000000%' +xfmt3780 format -72279769866802441E0 ',.77' -> '-72,279,769,866,802,441' +xfmt3781 format 17630603613891639E274 '\xe9\xb1\x89<+62,.62G' -> '+1.7630603613891639E+290\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89\xe9\xb1\x89' +xfmt3782 format -34351970558062904e133 '\xec\x8e\xa8<,.99' -> '-3.4351970558062904E+149' +xfmt3783 format 1234567890.1234567890123456789 '\xe7\x9a\x95>23%' -> '123456789012.34567890123456789%' +xfmt3784 format -1234567890.123456789012345678 '\xe9\x84\xa1<38.66F' -> '-1234567890.123456789012345678000000000000000000000000000000000000000000000000' +xfmt3785 format 254186e0 '\xe9\x9a\xaf<+91,.20' -> '+254,186\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf\xe9\x9a\xaf' +xfmt3786 format -174981e0 'G' -> '-174981' +xfmt3787 format 786533e106 '\xeb\xa8\xa1>98,.86' -> '\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa1\xeb\xa8\xa17.86533E+111' +xfmt3788 format -824533e161 '' -> '-8.24533E+166' +xfmt3789 format 7071515512491470246298234250e0 '\xe4\xa7\xb2^ 35,.25F' -> ' 7,071,515,512,491,470,246,298,234,250.0000000000000000000000000' +xfmt3790 format -5529986504712835228765096075E0 '\xe7\xbf\xbc<-89,' -> '-5,529,986,504,712,835,228,765,096,075\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc\xe7\xbf\xbc' +xfmt3791 format 3208376137094322583850383548e305 ' 07,.84E' -> ' 3.208376137094322583850383548000000000000000000000000000000000000000000000000000000000E+332' +xfmt3792 format -6721473179000818730810161182e8 '-078,.6F' -> '-00,000,000,000,000,000,672,147,317,900,081,873,081,016,118,200,000,000.000000' +xfmt3793 format 37047400697236279442e0 '+0,e' -> '+3.7047400697236279442e+19' +xfmt3794 format -86403634526339785551e0 '' -> '-86403634526339785551' +xfmt3795 format 86901881551064123561E372 '\xe8\x9b\xba>,.42%' -> '8,690,188,155,106,412,356,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000%' +xfmt3796 format -51446403100778052386E115 '\xe3\x9d\xbb=-50,g' -> '-\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb\xe3\x9d\xbb5.1446403100778052386e+134' +xfmt3797 format 8990e0 '\xe6\x8e\xa0^ 49,.68' -> '\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0 8,990\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0\xe6\x8e\xa0' +xfmt3798 format -4518e0 ',' -> '-4,518' +xfmt3799 format 4964E19 '+95' -> ' +4.964E+22' +xfmt3800 format -8309E355 ',.74' -> '-8.309E+358' +xfmt3801 format 95412286528124116430512939036972327460399062E0 '54,.78' -> '95,412,286,528,124,116,430,512,939,036,972,327,460,399,062' +xfmt3802 format -78759228065021057948209064653953089261044689E0 '\xef\x93\xa4^36,E' -> '-7.8759228065021057948209064653953089261044689E+43' +xfmt3803 format 87314349457484689425646182368351745682587279E380 'F' -> '8731434945748468942564618236835174568258727900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3804 format -73735737895612480836755162543445370707251114E14 '.30n' -> '-7.37357378956124808367551625434e+57' +xfmt3805 format 859992727640623e0 '\xeb\xb0\xb8= 19,.62f' -> ' 859,992,727,640,623.00000000000000000000000000000000000000000000000000000000000000' +xfmt3806 format -117624580187051e0 '%' -> '-11762458018705100%' +xfmt3807 format 535422532681227E94 '0' -> '5.35422532681227E+108' +xfmt3808 format -683700039428002e3 '0' -> '-6.83700039428002E+17' +xfmt3809 format 7150388781067749753329347877234910e0 '\xe2\x82\x99<-15,.65G' -> '7,150,388,781,067,749,753,329,347,877,234,910' +xfmt3810 format -2605867651094129359803463923441692E0 '\xe4\x96\x82^,.81' -> '-2,605,867,651,094,129,359,803,463,923,441,692' +xfmt3811 format 9262479961632236141523759879428323e265 '\xef\x85\x94= 98,.43%' -> ' 9,262,479,961,632,236,141,523,759,879,428,323,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000%' +xfmt3812 format -3498976406389709702617322811566590e94 '81.99' -> ' -3.498976406389709702617322811566590E+127' +xfmt3813 format 846E0 '09,g' -> '0,000,846' +xfmt3814 format -844e0 '-057,.48G' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,844' +xfmt3815 format 379e10 '\xe8\x8c\xbe<-,.18%' -> '379,000,000,000,000.000000000000000000%' +xfmt3816 format -882e253 '-0.95' -> '-8.82E+255' +xfmt3817 format 5460148697030719462680521081807008223854e0 '\xe6\x93\xa5< 18,.74F' -> ' 5,460,148,697,030,719,462,680,521,081,807,008,223,854.00000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3818 format -8076272083284805294891311826049924887275E0 '\xe1\x9f\xbe=54,.32g' -> '-\xe1\x9f\xbe\xe1\x9f\xbe\xe1\x9f\xbe\xe1\x9f\xbe\xe1\x9f\xbe\xe1\x9f\xbe\xe1\x9f\xbe\xe1\x9f\xbe\xe1\x9f\xbe\xe1\x9f\xbe\xe1\x9f\xbe\xe1\x9f\xbe\xe1\x9f\xbe\xe1\x9f\xbe\xe1\x9f\xbe\xe1\x9f\xbe8.0762720832848052948913118260499e+39' +xfmt3819 format 3360562545918368193961126097274454717834e71 '092' -> '00000000000000000000000000000000000000000000003.360562545918368193961126097274454717834E+110' +xfmt3820 format -2995046077741527160086310707031008931072e164 '\xec\xaa\x8d=E' -> '-2.995046077741527160086310707031008931072E+203' +xfmt3821 format 3283864407249003306732E0 '' -> '3283864407249003306732' +xfmt3822 format -1281351537978678705148e0 '054.7' -> '-000000000000000000000000000000000000000001.281352E+21' +xfmt3823 format 9171819466434692776872E219 '\xea\xb1\x9e^-81.46F' -> '9171819466434692776872000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000' +xfmt3824 format -1500077547652389154090E256 '\xe5\x84\x9b> 59,.1e' -> '\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b\xe5\x84\x9b-1.5e+277' +xfmt3825 format 4331123295E0 'G' -> '4331123295' +xfmt3826 format -5585684330E0 '\xe7\x92\x9f>,' -> '-5,585,684,330' +xfmt3827 format 4119277816e370 '\xe9\xbc\xbc^ 6,.20G' -> ' 4.119277816E+379' +xfmt3828 format -2535744400E184 '\xe2\x9b\xb8^66,.17' -> '\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8-2.535744400E+193\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8\xe2\x9b\xb8' +xfmt3829 format 819895886726730597363943810267162556937397E0 '\xe0\xa9\xb0^ 23E' -> ' 8.19895886726730597363943810267162556937397E+41' +xfmt3830 format -292025990731303596300908112067087563095932E0 '\xea\xbc\xb8<+,' -> '-292,025,990,731,303,596,300,908,112,067,087,563,095,932' +xfmt3831 format 449509285155587316199844883217342551250518e94 '\xeb\xa5\xa0= 22.29' -> ' 4.4950928515558731619984488322E+135' +xfmt3832 format -454564198901422519612591098928057311940012e172 '\xef\x94\x87>-,.64E' -> '-4.5456419890142251961259109892805731194001200000000000000000000000E+213' +xfmt3833 format 3474726344560218043119216802765E0 '\xe4\xa1\xba>+2,.61G' -> '+3,474,726,344,560,218,043,119,216,802,765' +xfmt3834 format -5423413012756527287959547336018e0 '' -> '-5423413012756527287959547336018' +xfmt3835 format 1986145380271805310796674651315e129 '\xed\x8e\x80< G' -> ' 1.986145380271805310796674651315E+159' +xfmt3836 format -6323994692512248598241602745191e38 '\xee\xa0\xa6<+70.12' -> '-6.32399469251E+68\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6\xee\xa0\xa6' +xfmt3837 format 310280403692416557430960615560E0 '' -> '310280403692416557430960615560' +xfmt3838 format -563450804652213451494103836288E0 '+g' -> '-563450804652213451494103836288' +xfmt3839 format 756348913766377517113123336438e372 '+0,.5g' -> '+7.5635e+401' +xfmt3840 format -708961769025617815142621753983E73 'g' -> '-7.08961769025617815142621753983e+102' +xfmt3841 format 29024177786891267329910482e0 ' 51' -> ' 29024177786891267329910482' +xfmt3842 format -55854193758850538109432584e0 '' -> '-55854193758850538109432584' +xfmt3843 format 15543698091660639719274065e190 '' -> '1.5543698091660639719274065E+215' +xfmt3844 format -68333766083900730690530905e343 'F' -> '-683337660839007306905309050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3845 format 627755767577657393e0 ',' -> '627,755,767,577,657,393' +xfmt3846 format -349619316835445098E0 '\xee\xa4\x8d<-57,.34f' -> '-349,619,316,835,445,098.0000000000000000000000000000000000' +xfmt3847 format 982193325747804073E76 '\xe8\x8a\x9a< 72,.31f' -> ' 9,821,933,257,478,040,730,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000' +xfmt3848 format -976172325426145660E345 '.46' -> '-9.76172325426145660E+362' +xfmt3849 format 778368276726392903489779e0 '' -> '778368276726392903489779' +xfmt3850 format -389092625775745436736900E0 'e' -> '-3.89092625775745436736900e+23' +xfmt3851 format 716097991714015146226689E131 '\xe0\xae\x80=,.71F' -> '71,609,799,171,401,514,622,668,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3852 format -940818678597637401391100e13 '' -> '-9.40818678597637401391100E+36' +xfmt3853 format 942716504884761344961879340400500777E0 ',' -> '942,716,504,884,761,344,961,879,340,400,500,777' +xfmt3854 format -801121395784709183772897615116667747e0 '-06,.74f' -> '-801,121,395,784,709,183,772,897,615,116,667,747.00000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3855 format 558571934893542897660117949940227350E294 'g' -> '5.58571934893542897660117949940227350e+329' +xfmt3856 format -887114161123478244369911544765820765E200 ',' -> '-8.87114161123478244369911544765820765E+235' +xfmt3857 format 8354408639574310705e0 '\xe4\xa7\x92<+99,.80' -> '+8,354,408,639,574,310,705\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92\xe4\xa7\x92' +xfmt3858 format -5147636883895929662E0 '0e' -> '-5.147636883895929662e+18' +xfmt3859 format 9367672593619022445E348 '-0,.60E' -> '9.367672593619022445000000000000000000000000000000000000000000E+366' +xfmt3860 format -3256160152317892883e68 '.91n' -> '-3.256160152317892883e+86' +xfmt3861 format 30844058309341280020417784331817392E0 '\xed\x9b\x9c< 22,.79F' -> ' 30,844,058,309,341,280,020,417,784,331,817,392.0000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3862 format -35309735463334198288691997590210099e0 '\xe4\x83\x9b^96.87n' -> '\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b-35309735463334198288691997590210099\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b\xe4\x83\x9b' +xfmt3863 format 48723593978218685748895996533671070E219 '+,f' -> '+48,723,593,978,218,685,748,895,996,533,671,070,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt3864 format -68756131760335122710204825638934683e64 '\xdd\x93>+18,.77E' -> '-6.87561317603351227102048256389346830000000000000000000000000000000000000000000E+98' +xfmt3865 format 85056455271067684023334884642974E0 '' -> '85056455271067684023334884642974' +xfmt3866 format -39569792692160127378390394471600E0 'A>56,.26' -> 'AAAAAAAAAAAAAAAAAAAAAAAA-3.9569792692160127378390394E+31' +xfmt3867 format 65449574314202385687770024396317e192 '\xe7\x90\x8d^ 96,.67F' -> ' 65,449,574,314,202,385,687,770,024,396,317,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000' +xfmt3868 format -47157122823154074331936986216463E69 '.93g' -> '-4.7157122823154074331936986216463e+100' +xfmt3869 format 943501001799524046687418398E0 '\xe9\x90\x96>-85,.87G' -> '\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96\xe9\x90\x96943,501,001,799,524,046,687,418,398' +xfmt3870 format -897400188945662511626707784e0 '\xe5\xb5\xa4=22,.35' -> '-897,400,188,945,662,511,626,707,784' +xfmt3871 format 145276360297758994135773035E15 '\xe5\x90\x91< 3,.57%' -> ' 14,527,636,029,775,899,413,577,303,500,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000%' +xfmt3872 format -735861312491619507248525751E262 '\xe4\x9b\x9f^89,.76F' -> '-7,358,613,124,916,195,072,485,257,510,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3873 format 993241835587e0 ',G' -> '993,241,835,587' +xfmt3874 format -659612373318e0 '+061,.3' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,006.60E+11' +xfmt3875 format 243209773615e181 '0.10' -> '2.432097736E+192' +xfmt3876 format -647721451275E217 '\xe7\x92\x95>-9.90f' -> '-6477214512750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3877 format 4745321330520725E0 '\xe0\xa9\xae<-' -> '4745321330520725' +xfmt3878 format -6493970909609820E0 'n' -> '-6493970909609820' +xfmt3879 format 2068284321583982E330 '\xe6\x9c\x8c<-,.32f' -> '2,068,284,321,583,982,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000' +xfmt3880 format -3711760852555131e278 '.57' -> '-3.711760852555131E+293' +xfmt3881 format 2780641062464332958290267E0 '\xe1\xbf\xb3>-92,' -> '\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb3\xe1\xbf\xb32,780,641,062,464,332,958,290,267' +xfmt3882 format -6591685923396247909622150e0 '\xe4\x85\xab=+19,.42G' -> '-6,591,685,923,396,247,909,622,150' +xfmt3883 format 5572083872844725439473981E107 '\xea\xae\xa2=,f' -> '557,208,387,284,472,543,947,398,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt3884 format -3295300890906521433953158E171 '\xe6\x90\x9c>+.48F' -> '-3295300890906521433953158000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000' +xfmt3885 format 918491212E0 '\xee\x83\x9a^ 25n' -> '\xee\x83\x9a\xee\x83\x9a\xee\x83\x9a\xee\x83\x9a\xee\x83\x9a\xee\x83\x9a\xee\x83\x9a 918491212\xee\x83\x9a\xee\x83\x9a\xee\x83\x9a\xee\x83\x9a\xee\x83\x9a\xee\x83\x9a\xee\x83\x9a\xee\x83\x9a' +xfmt3886 format -614934904E0 ' f' -> '-614934904' +xfmt3887 format 348780215e133 '\xe7\x9a\xba^ 17.89G' -> ' 3.48780215E+141\xe7\x9a\xba' +xfmt3888 format -241980004E146 '-031,F' -> '-24,198,000,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt3889 format 41873727653786057550817141706594817220E0 '\xe9\xb4\xad<+19E' -> '+4.1873727653786057550817141706594817220E+37' +xfmt3890 format -91068301777634243572332039884247968227E0 '\xe2\xba\x9e^ ,.87f' -> '-91,068,301,777,634,243,572,332,039,884,247,968,227.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt3891 format 62827100948676789572225502769538642398e83 '+' -> '+6.2827100948676789572225502769538642398E+120' +xfmt3892 format -79024773339048854808076799512793882048e261 '\xe5\xb6\xaa>-17,.49f' -> '-79,024,773,339,048,854,808,076,799,512,793,882,048,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000' +xfmt3893 format 900573744665499289653329108587781162476E0 '\xe9\x9f\xa3>+15g' -> '+900573744665499289653329108587781162476' +xfmt3894 format -963781290511412569856048520204962259892e0 '' -> '-963781290511412569856048520204962259892' +xfmt3895 format 265125707092364465536496766891582272995E315 '\xef\xaa\xaa^-73.89' -> '\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa2.65125707092364465536496766891582272995E+353\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa\xef\xaa\xaa' +xfmt3896 format -727077437609611709999571004266065922030E382 ',' -> '-7.27077437609611709999571004266065922030E+420' +xfmt3897 format 5719812e0 '\xe9\x97\xa6>36.38E' -> '5.71981200000000000000000000000000000000E+6' +xfmt3898 format -4545518e0 '' -> '-4545518' +xfmt3899 format 6363430E94 '\xee\xbc\xb1<4.13' -> '6.363430E+100' +xfmt3900 format -5863652e158 '\xee\x80\xb3= ,.4G' -> '-5.864E+164' +xfmt3901 format 82545222552752276826700474853281293961948e0 '+79.35G' -> ' +8.2545222552752276826700474853281294E+40' +xfmt3902 format -31879765597850789677266872956382082254364e0 ',.22' -> '-3.187976559785078967727E+40' +xfmt3903 format 74478554852821818504538248011906209402273E220 '5.28n' -> '7.447855485282181850453824801e+260' +xfmt3904 format -24697107631499950873230696638116143686275E326 '+96.76n' -> ' -2.4697107631499950873230696638116143686275e+366' +xfmt3905 format 1234.1234567890123 '\xe5\x91\xa0=+42,G' -> '+\xe5\x91\xa0\xe5\x91\xa0\xe5\x91\xa0\xe5\x91\xa0\xe5\x91\xa0\xe5\x91\xa0\xe5\x91\xa0\xe5\x91\xa0\xe5\x91\xa0\xe5\x91\xa0\xe5\x91\xa0\xe5\x91\xa0\xe5\x91\xa0\xe5\x91\xa0\xe5\x91\xa0\xe5\x91\xa0\xe5\x91\xa0\xe5\x91\xa0\xe5\x91\xa0\xe5\x91\xa0\xe5\x91\xa0\xe5\x91\xa01,234.1234567890123' +xfmt3906 format -1.123456789012345678 '+78' -> ' -1.123456789012345678' +xfmt3907 format 58805082e0 '\xe2\x8c\x9a< 25,.27f' -> ' 58,805,082.000000000000000000000000000' +xfmt3908 format -34209854e0 '\xe1\x88\xb2<-79,.79e' -> '-3.4209854000000000000000000000000000000000000000000000000000000000000000000000000e+7' +xfmt3909 format 75608299e156 '\xe9\xb7\xb1< 6,.8G' -> ' 7.5608299E+163' +xfmt3910 format -10957558E196 '075.58' -> '-0000000000000000000000000000000000000000000000000000000000001.0957558E+203' +xfmt3911 format 95408902715128565138915940157944672409E0 '\xe4\x83\xba= 48,.90G' -> ' 95,408,902,715,128,565,138,915,940,157,944,672,409' +xfmt3912 format -40615249745360020594961414036184951117e0 '\xe1\x8a\x82>+33,.50F' -> '-40,615,249,745,360,020,594,961,414,036,184,951,117.00000000000000000000000000000000000000000000000000' +xfmt3913 format 36094983488360029426338256764537360685E21 '\xef\x91\xa2>-5,.68e' -> '3.60949834883600294263382567645373606850000000000000000000000000000000e+58' +xfmt3914 format -38234114617700697141163942852252948843E242 '\xe6\x91\x98=n' -> '-3.8234114617700697141163942852252948843e+279' +xfmt3915 format 0e0 '0.59' -> '0' +xfmt3916 format 0e0 '' -> '0' +xfmt3917 format 0e344 '\xea\xac\x94=.34%' -> '0.0000000000000000000000000000000000%' +xfmt3918 format 0e96 ',.12' -> '0E+96' +xfmt3919 format 94409522211072554831608371789681311989276404e0 '\xe5\xb9\x8e< 57,F' -> ' 94,409,522,211,072,554,831,608,371,789,681,311,989,276,404' +xfmt3920 format -50244647667885331993050367825471086000821855E0 '\xe6\x95\xac<+18,.86%' -> '-5,024,464,766,788,533,199,305,036,782,547,108,600,082,185,500.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt3921 format 15639534267203911925922082168933968261059386E240 '-46,%' -> '1,563,953,426,720,391,192,592,208,216,893,396,826,105,938,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt3922 format -61535611521711062053094544830914909576509266e151 '033,F' -> '-615,356,115,217,110,620,530,945,448,309,149,095,765,092,660,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt3923 format 315035044233359297e0 ',%' -> '31,503,504,423,335,929,700%' +xfmt3924 format -832695272090006105E0 '0' -> '-832695272090006105' +xfmt3925 format 685127676339201958e276 '\xef\x9e\x9d< 87E' -> ' 6.85127676339201958E+293\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d\xef\x9e\x9d' +xfmt3926 format -370156876549581841E242 '' -> '-3.70156876549581841E+259' +xfmt3927 format 67095486724023622e0 '+99g' -> ' +67095486724023622' +xfmt3928 format -60475702120823463E0 '\xed\x97\xbb<+,' -> '-60,475,702,120,823,463' +xfmt3929 format 89809218428851799e197 '\xec\xa5\xbb=+25,.36' -> '+\xec\xa5\xbb8.9809218428851799E+213' +xfmt3930 format -50074499068175174E53 '\xeb\x91\x82=+88,E' -> '-\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x82\xeb\x91\x825.0074499068175174E+69' +xfmt3931 format 6581422e0 '\xec\xa3\xa5^-76,F' -> '\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa56,581,422\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5\xec\xa3\xa5' +xfmt3932 format -9201220e0 '0' -> '-9201220' +xfmt3933 format 3995369E301 '\xe6\x8b\xb0= 95,.66G' -> ' \xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb0\xe6\x8b\xb03.995369E+307' +xfmt3934 format -5541304e324 '\xe4\x8a\xa5< 93,.81' -> '-5.541304E+330\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5\xe4\x8a\xa5' +xfmt3935 format 62867060489134287411757139686738E0 ',' -> '62,867,060,489,134,287,411,757,139,686,738' +xfmt3936 format -36240061698102329637482231787298e0 '\xec\xaa\xb1= ,' -> '-36,240,061,698,102,329,637,482,231,787,298' +xfmt3937 format 26859367027999071025911021649841E63 '' -> '2.6859367027999071025911021649841E+94' +xfmt3938 format -55530750260981079297113006905635E339 '.10' -> '-5.553075026E+370' +xfmt3939 format 350e0 '\xe9\x95\xbe=-91,.13F' -> '\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe\xe9\x95\xbe350.0000000000000' +xfmt3940 format -992e0 '\xec\xad\x87=+54,.70e' -> '-9.9200000000000000000000000000000000000000000000000000000000000000000000e+2' +xfmt3941 format 190e88 ' ,' -> ' 1.90E+90' +xfmt3942 format -563e115 ' g' -> '-5.63e+117' +xfmt3943 format 885580667258350814828225410410878E0 '\xe8\xb9\x9d<36,.93' -> '885,580,667,258,350,814,828,225,410,410,878' +xfmt3944 format -522747094045044589193384214317205E0 '-0.63' -> '-522747094045044589193384214317205' +xfmt3945 format 548017625925246345843224012390866E86 '\xef\xb6\x85<+44,' -> '+5.48017625925246345843224012390866E+118\xef\xb6\x85\xef\xb6\x85\xef\xb6\x85\xef\xb6\x85' +xfmt3946 format -375240517547512245813379682661055E223 '-' -> '-3.75240517547512245813379682661055E+255' +xfmt3947 format 9392182176355684E0 '' -> '9392182176355684' +xfmt3948 format -8977989818445792E0 ' ' -> '-8977989818445792' +xfmt3949 format 1262433551793356E296 ' ' -> ' 1.262433551793356E+311' +xfmt3950 format -4526899083631133e138 '68' -> ' -4.526899083631133E+153' +xfmt3951 format 39793024580E0 '31' -> ' 39793024580' +xfmt3952 format -62926417474e0 '' -> '-62926417474' +xfmt3953 format 42647899353E50 '\xef\x8e\xa5>-38,.26%' -> '426,478,993,530,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000%' +xfmt3954 format -42546813419E10 '%' -> '-42546813419000000000000%' +xfmt3955 format 2564020583399160412e0 '\xe6\x80\xa8<88,.22G' -> '2,564,020,583,399,160,412\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8\xe6\x80\xa8' +xfmt3956 format -1976131994187754342e0 '\xe0\xba\x94^-99' -> '\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94-1976131994187754342\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94\xe0\xba\x94' +xfmt3957 format 9809959236535991854E76 '\xe6\x85\xa0>63,E' -> '\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa0\xe6\x85\xa09.809959236535991854E+94' +xfmt3958 format -1818053415205024448e319 ' ' -> '-1.818053415205024448E+337' +xfmt3959 format 3158340906791779229857795046059248299413e0 '\xef\xb6\xb9=67,g' -> '\xef\xb6\xb9\xef\xb6\xb9\xef\xb6\xb9\xef\xb6\xb9\xef\xb6\xb9\xef\xb6\xb9\xef\xb6\xb9\xef\xb6\xb9\xef\xb6\xb9\xef\xb6\xb9\xef\xb6\xb9\xef\xb6\xb9\xef\xb6\xb9\xef\xb6\xb93,158,340,906,791,779,229,857,795,046,059,248,299,413' +xfmt3960 format -1162949119786105646757282030764511003010e0 '77.91' -> ' -1162949119786105646757282030764511003010' +xfmt3961 format 1083670669000948080854654942607517253877e7 '0' -> '1.083670669000948080854654942607517253877E+46' +xfmt3962 format -9362773562168371688741333604056039317811e132 '\xe7\x8c\xb8=+.26F' -> '-9362773562168371688741333604056039317811000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000' +xfmt3963 format 13795094138495088958242109E0 '\xeb\x82\x8b>n' -> '13795094138495088958242109' +xfmt3964 format -68181295192554389295626049e0 '.38' -> '-68181295192554389295626049' +xfmt3965 format 13642613287477491333612839E375 ' 061' -> ' 00000000000000000000000000001.3642613287477491333612839E+400' +xfmt3966 format -27371586526446842759979549E176 '\xe4\x83\xab^95,.19F' -> '-2,737,158,652,644,684,275,997,954,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000' +xfmt3967 format 34868488709994e0 '' -> '34868488709994' +xfmt3968 format -18550358640871E0 '90g' -> ' -18550358640871' +xfmt3969 format 72469851663078e32 '\xe0\xbd\x9c=F' -> '7246985166307800000000000000000000000000000000' +xfmt3970 format -62075660414777E17 '\xe5\x96\x9f=51' -> '-\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f\xe5\x96\x9f6.2075660414777E+30' +xfmt3971 format 481493e0 '\xe9\x85\x9c>60' -> '\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c\xe9\x85\x9c481493' +xfmt3972 format -553173E0 '\xe6\xb4\xb7=+83,.84e' -> '-5.531730000000000000000000000000000000000000000000000000000000000000000000000000000000e+5' +xfmt3973 format 364920e177 '\xe5\xac\xbe< ,.2f' -> ' 364,920,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00' +xfmt3974 format -972548e287 '\xea\x89\xa7^14,.78e' -> '-9.725480000000000000000000000000000000000000000000000000000000000000000000000000e+292' +xfmt3975 format 9583576903534559494267727974530445918703698E0 '+080,.20g' -> '+000,000,000,000,000,000,000,000,000,000,000,000,000,009.5835769035345594943e+42' +xfmt3976 format -6614824202670046071507948311735493639065152e0 '\xe3\x89\x84>-25,.98g' -> '-6,614,824,202,670,046,071,507,948,311,735,493,639,065,152' +xfmt3977 format 1204620981150709667117225798466586120006226E285 '\xe9\xab\x88>+20,' -> '+1.204620981150709667117225798466586120006226E+327' +xfmt3978 format -7633402557426417595512627890531696360326131E44 '\xeb\x84\xa5<.35G' -> '-7.6334025574264175955126278905316964E+86' +xfmt3979 format 587665939009039e0 '4,.39' -> '587,665,939,009,039' +xfmt3980 format -964470568330904E0 '-0.82' -> '-964470568330904' +xfmt3981 format 181845861157993e252 ' ' -> ' 1.81845861157993E+266' +xfmt3982 format -464003631158618E1 '+93.54f' -> ' -4640036311586180.000000000000000000000000000000000000000000000000000000' +xfmt3983 format 4881290632349402335578e0 '55' -> ' 4881290632349402335578' +xfmt3984 format -8678439714068884944858E0 '' -> '-8678439714068884944858' +xfmt3985 format 6566592202891233476417E62 '055,' -> '0,000,000,000,000,000,000,006.566592202891233476417E+83' +xfmt3986 format -2851727789179334165571E111 '-,.56%' -> '-285,172,778,917,933,416,557,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000%' +xfmt3987 format 670283536782945156278636747719425458E0 '\xef\xb4\x86^+37,.86' -> '+670,283,536,782,945,156,278,636,747,719,425,458' +xfmt3988 format -106065076979927887387105466006326258E0 '\xe2\x9e\x85<+91,f' -> '-106,065,076,979,927,887,387,105,466,006,326,258\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85\xe2\x9e\x85' +xfmt3989 format 892871950366310435636797262773062140E270 '\xe6\xb1\x9e^+35,G' -> '+8.92871950366310435636797262773062140E+305' +xfmt3990 format -886673700650480834455311159189880056e151 ',' -> '-8.86673700650480834455311159189880056E+186' +xfmt3991 format 726997605600386668403483e0 '020F' -> '726997605600386668403483' +xfmt3992 format -712455299339576936288679e0 '' -> '-712455299339576936288679' +xfmt3993 format 717516730993836024081813E251 '\xe3\xbb\xa6<+26.82%' -> '+7175167309938360240818130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt3994 format -227205680074139147719676E15 '89' -> ' -2.27205680074139147719676E+38' +xfmt3995 format 32E0 '\xcf\xa9=+77,.22g' -> '+\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa9\xcf\xa932' +xfmt3996 format -99E0 '\xe6\x85\xbd>+33,.36%' -> '-9,900.000000000000000000000000000000000000%' +xfmt3997 format 56E291 '\xe5\xbe\xa2=-88,f' -> '56,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt3998 format -27e27 '\xe7\x91\x9a>-41,.44G' -> '\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a\xe7\x91\x9a-2.7E+28' +xfmt3999 format 2521176787257337204840485269682e0 '\xec\xac\xb6=-86,.10F' -> '\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb6\xec\xac\xb62,521,176,787,257,337,204,840,485,269,682.0000000000' +xfmt4000 format -6213501855183731812920471158337E0 '\xef\x83\x94< 77,.43g' -> '-6,213,501,855,183,731,812,920,471,158,337\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94\xef\x83\x94' +xfmt4001 format 3058528058226366269643030757361E59 '\xe3\xac\x99< 75,' -> ' 3.058528058226366269643030757361E+89\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99\xe3\xac\x99' +xfmt4002 format -9267262358127648264291897744194E138 '\xe1\x8c\x87>-14f' -> '-9267262358127648264291897744194000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4003 format 947677202458499797645828672E0 '\xee\x8f\xac=,' -> '947,677,202,458,499,797,645,828,672' +xfmt4004 format -812133422880657999230665846E0 '\xe7\x98\x84> F' -> '-812133422880657999230665846' +xfmt4005 format 835032207231983214554572020E166 '' -> '8.35032207231983214554572020E+192' +xfmt4006 format -313750201319500669332621470E334 ',' -> '-3.13750201319500669332621470E+360' +xfmt4007 format 198381760005727810691768096336070387492149E0 '\xe8\xaf\x9e^ ,F' -> ' 198,381,760,005,727,810,691,768,096,336,070,387,492,149' +xfmt4008 format -809135063922620899224133801521509715524324E0 '\xee\x89\xbe=26,.83e' -> '-8.09135063922620899224133801521509715524324000000000000000000000000000000000000000000e+41' +xfmt4009 format 777297001518009232308238893936241655568906E368 '\xe2\xac\x86^+70.32' -> '\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86+7.7729700151800923230823889393624E+409\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86\xe2\xac\x86' +xfmt4010 format -615564690784614623870533885530645688019787e6 '' -> '-6.15564690784614623870533885530645688019787E+47' +xfmt4011 format 3E0 '\xe0\xb5\x9a^-.72' -> '3' +xfmt4012 format -4e0 '\xea\x8a\x83=-13,.41%' -> '-400.00000000000000000000000000000000000000000%' +xfmt4013 format 4E284 '\xeb\x8e\x9a= 1,.89%' -> ' 40,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt4014 format -5e348 ' ,.76' -> '-5E+348' +xfmt4015 format 9846094536601207516802005214377019E0 '65' -> ' 9846094536601207516802005214377019' +xfmt4016 format -3832781467447912803117499755951386e0 '+061.90' -> '-000000000000000000000000003832781467447912803117499755951386' +xfmt4017 format 5903623631357084265482092744362775E172 '\xeb\xa4\xb2= 45,.45f' -> ' 59,036,236,313,570,842,654,820,927,443,627,750,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000' +xfmt4018 format -8938780019535737079498322992037901e105 '-,' -> '-8.938780019535737079498322992037901E+138' +xfmt4019 format 76097157524590369500744206213539589767648E0 '\xeb\xa5\x83=-94,.53%' -> '7,609,715,752,459,036,950,074,420,621,353,958,976,764,800.00000000000000000000000000000000000000000000000000000%' +xfmt4020 format -77683074730202526548259706306739394862882e0 '' -> '-77683074730202526548259706306739394862882' +xfmt4021 format 83739894984136105856937866889033691715863e345 '8G' -> '8.3739894984136105856937866889033691715863E+385' +xfmt4022 format -88715496597670373630280358140563939106478e234 '50,.15g' -> ' -8.87154965976704e+274' +xfmt4023 format 4914223801776E0 '' -> '4914223801776' +xfmt4024 format -9865997807625e0 '\xee\xa7\xb9>+,.20f' -> '-9,865,997,807,625.00000000000000000000' +xfmt4025 format 2061318419204E2 '\xeb\x96\x97<79.7' -> '2.061318E+14\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97\xeb\x96\x97' +xfmt4026 format -7784253839539E107 '\xe7\x93\xab<81.83' -> '-7.784253839539E+119\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab\xe7\x93\xab' +xfmt4027 format 12345.123 '022,.6' -> '0,000,000,000,012,345.1' +xfmt4028 format -12345678901234567890.12345678901 '+' -> '-12345678901234567890.12345678901' +xfmt4029 format 91506585431247975795699447577314951800e0 '-077,F' -> '0,000,000,000,000,000,000,091,506,585,431,247,975,795,699,447,577,314,951,800' +xfmt4030 format -55856801137581245693987036671516288212E0 '' -> '-55856801137581245693987036671516288212' +xfmt4031 format 24500961947729721928097196482937318073E43 '\xe7\x86\xa5=+57,.1g' -> '+\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa5\xe7\x86\xa52e+80' +xfmt4032 format -66763355269813628223987955930038338004E208 '\xe7\xbd\x8f= 76,.31E' -> '-\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f\xe7\xbd\x8f6.6763355269813628223987955930038E+245' +xfmt4033 format 2461151596511e0 '+042,' -> '+0,000,000,000,000,000,002,461,151,596,511' +xfmt4034 format -6746530031476e0 '\xe3\x97\x92=,e' -> '-6.746530031476e+12' +xfmt4035 format 9235075413250e219 '.96' -> '9.235075413250E+231' +xfmt4036 format -9418452333096e143 ' 62,.53%' -> '-94,184,523,330,960,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000%' +xfmt4037 format 1E0 '\xea\x99\xbe> .28' -> ' 1' +xfmt4038 format -7e0 '\xed\x97\x9f^37,.58f' -> '-7.0000000000000000000000000000000000000000000000000000000000' +xfmt4039 format 8E32 '\xe1\x9a\xbf>54,.22F' -> '800,000,000,000,000,000,000,000,000,000,000.0000000000000000000000' +xfmt4040 format -6e176 ',F' -> '-600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt4041 format 31286300754894E0 '0' -> '31286300754894' +xfmt4042 format -10407800020705e0 '-91' -> ' -10407800020705' +xfmt4043 format 70549807647174E233 '' -> '7.0549807647174E+246' +xfmt4044 format -71256067039667e256 '\xeb\xb1\xa2> ,.28F' -> '-712,560,670,396,670,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000' +xfmt4045 format 729537516237753e0 ' 67.81F' -> ' 729537516237753.000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4046 format -242038002166468e0 '\xeb\xb5\xa6>+,' -> '-242,038,002,166,468' +xfmt4047 format 187898070295528E159 '.49' -> '1.87898070295528E+173' +xfmt4048 format -242653183561776E198 '\xe4\xb8\x9c=,' -> '-2.42653183561776E+212' +xfmt4049 format 592776292096287075581914208394206E0 '+040,.52' -> '+592,776,292,096,287,075,581,914,208,394,206' +xfmt4050 format -458226971565363455107801207368603E0 '-0,.34f' -> '-458,226,971,565,363,455,107,801,207,368,603.0000000000000000000000000000000000' +xfmt4051 format 365460163278422983599700055096005E190 'g' -> '3.65460163278422983599700055096005e+222' +xfmt4052 format -586233628701727169767493393109613E202 '\xe2\xb9\x84^97,.59' -> '\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84-5.86233628701727169767493393109613E+234\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84\xe2\xb9\x84' +xfmt4053 format 40510e0 '\xe6\x9d\x97^+85,.48F' -> '\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97+40,510.000000000000000000000000000000000000000000000000\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97\xe6\x9d\x97' +xfmt4054 format -52493e0 '\xe2\x8a\xa4^ 38,.56g' -> '\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4-52,493\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4\xe2\x8a\xa4' +xfmt4055 format 56104E32 '\xef\xaa\xb4^+48' -> '\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4+5.6104E+36\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4\xef\xaa\xb4' +xfmt4056 format -30868E239 '\xcf\x8d^24,.57%' -> '-308,680,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000%' +xfmt4057 format 554122891839858103110e0 '\xe8\xad\xa2=80.50g' -> '\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2\xe8\xad\xa2554122891839858103110' +xfmt4058 format -959020957603262345632E0 '\xc7\x89<+,' -> '-959,020,957,603,262,345,632' +xfmt4059 format 921606038583243911320E177 '\xe5\xbe\x92=.38' -> '9.21606038583243911320E+197' +xfmt4060 format -953052383907776724036e23 '\xe9\xa1\xb5>-45.53%' -> '-9530523839077767240360000000000000000000000000.00000000000000000000000000000000000000000000000000000%' +xfmt4061 format 483667754229290243940461610E0 '0G' -> '483667754229290243940461610' +xfmt4062 format -716180635126451505100081753E0 '\xe3\x9d\xa9< 11.93G' -> '-716180635126451505100081753' +xfmt4063 format 254516719524013127683087888e133 '' -> '2.54516719524013127683087888E+159' +xfmt4064 format -429006382623034094643467719e5 '-042,.2%' -> '-4,290,063,826,230,340,946,434,677,190,000,000.00%' +xfmt4065 format 4380750e0 '-0,.15F' -> '4,380,750.000000000000000' +xfmt4066 format -1589378e0 '\xe6\x8b\xba=+.76e' -> '-1.5893780000000000000000000000000000000000000000000000000000000000000000000000e+6' +xfmt4067 format 6721043e305 '\xe7\xa8\x9e<,.73E' -> '6.7210430000000000000000000000000000000000000000000000000000000000000000000E+311' +xfmt4068 format -9514386E139 '\xe4\x86\xb0=-,%' -> '-9,514,386,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt4069 format 1594580473343729313441926250505026365993830E0 '\xec\xa8\x84=-99,.89' -> '\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x84\xec\xa8\x841,594,580,473,343,729,313,441,926,250,505,026,365,993,830' +xfmt4070 format -4878293544209956235578924242020102643183011E0 '+0e' -> '-4.878293544209956235578924242020102643183011e+42' +xfmt4071 format 9023679720735342399710695168519124454772037e126 '\xd7\xb0<+7,.63' -> '+9.023679720735342399710695168519124454772037E+168' +xfmt4072 format -1174255101793313450077978463873485446172175e117 '\xe9\xb2\x81^ 5,.74f' -> '-1,174,255,101,793,313,450,077,978,463,873,485,446,172,175,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4073 format 44234931793E0 '\xef\x85\xb8^' -> '44234931793' +xfmt4074 format -24792892463e0 '\xe7\x93\x9c<+,.39' -> '-24,792,892,463' +xfmt4075 format 64422027621E158 '04,F' -> '6,442,202,762,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt4076 format -91157610392E72 '' -> '-9.1157610392E+82' +xfmt4077 format 54663093663084555610876851320129111826678928e0 '\xeb\x87\xa9^.95%' -> '5466309366308455561087685132012911182667892800.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt4078 format -63950896006960653373680288571304246869758568E0 '\xec\xb7\x80= G' -> '-63950896006960653373680288571304246869758568' +xfmt4079 format 80200876642505964630267361109120173942979012e64 '-050,.34g' -> '000,000,008.020087664250596463026736110912017e+107' +xfmt4080 format -55153547968821302620759807573316969655320075E32 '' -> '-5.5153547968821302620759807573316969655320075E+75' +xfmt4081 format 0e0 ',' -> '0' +xfmt4082 format 0E0 '\xe1\x93\x90^ 64,.94f' -> ' 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4083 format 0e371 '' -> '0E+371' +xfmt4084 format 0E237 '\xed\x8b\xa4=14,.36e' -> '0.000000000000000000000000000000000000e+273' +xfmt4085 format 97889157865449663270E0 '\xe9\x83\x8a=-33,.74G' -> '\xe9\x83\x8a\xe9\x83\x8a\xe9\x83\x8a\xe9\x83\x8a\xe9\x83\x8a\xe9\x83\x8a\xe9\x83\x8a97,889,157,865,449,663,270' +xfmt4086 format -55246163092370840137e0 ' 0,' -> '-55,246,163,092,370,840,137' +xfmt4087 format 93698393944663324705E182 '-071,' -> '00,000,000,000,000,000,000,000,000,000,000,009.3698393944663324705E+201' +xfmt4088 format -37753160821683864526e99 '93' -> ' -3.7753160821683864526E+118' +xfmt4089 format 95908120885160680E0 '\xe8\xae\x80<+77.10G' -> '+9.590812089E+16\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80\xe8\xae\x80' +xfmt4090 format -11396399760196225E0 '0.85F' -> '-11396399760196225.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4091 format 16894892661962503E349 '\xe3\x83\xa6>-,' -> '1.6894892661962503E+365' +xfmt4092 format -31874670882307245e58 '\xef\x8e\xac> 19,.86e' -> '-3.18746708823072450000000000000000000000000000000000000000000000000000000000000000000000e+74' +xfmt4093 format 932008604655372923744783E0 '\xe2\x95\x80<42,' -> '932,008,604,655,372,923,744,783\xe2\x95\x80\xe2\x95\x80\xe2\x95\x80\xe2\x95\x80\xe2\x95\x80\xe2\x95\x80\xe2\x95\x80\xe2\x95\x80\xe2\x95\x80\xe2\x95\x80\xe2\x95\x80' +xfmt4094 format -514873492854327741939381E0 '' -> '-514873492854327741939381' +xfmt4095 format 669736985010941397935147E0 '\xeb\xb4\xa9>F' -> '669736985010941397935147' +xfmt4096 format -433676681242417566528799E370 '073,.87' -> '-000,000,000,000,000,000,000,000,000,000,004.33676681242417566528799E+393' +xfmt4097 format 9477904886191789399116e0 '\xe0\xba\x97^ 2.8G' -> ' 9.4779049E+21' +xfmt4098 format -7408575734697070609528e0 '\xe4\x82\xbc=+77,F' -> '-\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc\xe4\x82\xbc7,408,575,734,697,070,609,528' +xfmt4099 format 4964003287682018864245E89 'F' -> '496400328768201886424500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4100 format -7457406773648664423069e313 '0,.93' -> '-7.457406773648664423069E+334' +xfmt4101 format 7245580251059850E0 '\xe8\xa8\x91> 74,.39F' -> '\xe8\xa8\x91\xe8\xa8\x91\xe8\xa8\x91\xe8\xa8\x91\xe8\xa8\x91\xe8\xa8\x91\xe8\xa8\x91\xe8\xa8\x91\xe8\xa8\x91\xe8\xa8\x91\xe8\xa8\x91\xe8\xa8\x91 7,245,580,251,059,850.000000000000000000000000000000000000000' +xfmt4102 format -5413671749552912e0 '\xef\xa5\x87<' -> '-5413671749552912' +xfmt4103 format 9359140516702996e208 '.3' -> '9.36E+223' +xfmt4104 format -8558692541232785E149 '\xe6\x98\x9a<,.80G' -> '-8.558692541232785E+164' +xfmt4105 format 511E0 ',' -> '511' +xfmt4106 format -442e0 '\xe5\xa2\xbf=-,' -> '-442' +xfmt4107 format 637E23 '' -> '6.37E+25' +xfmt4108 format -256E36 '' -> '-2.56E+38' +xfmt4109 format 66742263327072262528508E0 '%' -> '6674226332707226252850800%' +xfmt4110 format -68187141653615739342797E0 '\xe2\xa1\x93>,.90' -> '-68,187,141,653,615,739,342,797' +xfmt4111 format 32640417299102980604899E65 '-0,F' -> '3,264,041,729,910,298,060,489,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt4112 format -44335342167347190640851e15 '\xe7\x9c\xaf< 98,.38F' -> '-44,335,342,167,347,190,640,851,000,000,000,000,000.00000000000000000000000000000000000000\xe7\x9c\xaf\xe7\x9c\xaf\xe7\x9c\xaf\xe7\x9c\xaf\xe7\x9c\xaf\xe7\x9c\xaf\xe7\x9c\xaf\xe7\x9c\xaf' +xfmt4113 format 42e0 '\xee\xa1\xb2>G' -> '42' +xfmt4114 format -47e0 '\xee\x86\x89<,E' -> '-4.7E+1' +xfmt4115 format 38e36 '\xe3\xb9\x9a<' -> '3.8E+37' +xfmt4116 format -72E122 '\xed\x9e\xab^ E' -> '-7.2E+123' +xfmt4117 format 90136226E0 '' -> '90136226' +xfmt4118 format -77607479E0 '\xef\xb5\x99<-42,.87E' -> '-7.760747900000000000000000000000000000000000000000000000000000000000000000000000000000000E+7' +xfmt4119 format 12325520E337 '\xe8\xb5\x87< 35,E' -> ' 1.2325520E+344\xe8\xb5\x87\xe8\xb5\x87\xe8\xb5\x87\xe8\xb5\x87\xe8\xb5\x87\xe8\xb5\x87\xe8\xb5\x87\xe8\xb5\x87\xe8\xb5\x87\xe8\xb5\x87\xe8\xb5\x87\xe8\xb5\x87\xe8\xb5\x87\xe8\xb5\x87\xe8\xb5\x87\xe8\xb5\x87\xe8\xb5\x87\xe8\xb5\x87\xe8\xb5\x87\xe8\xb5\x87' +xfmt4120 format -76163323E67 '\xe4\x82\xb9< 33,.78e' -> '-7.616332300000000000000000000000000000000000000000000000000000000000000000000000e+74' +xfmt4121 format 4955E0 ' ,f' -> ' 4,955' +xfmt4122 format -1091e0 '\xe5\x91\x9b< ,.69F' -> '-1,091.000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4123 format 5617e63 '020' -> '000000000005.617E+66' +xfmt4124 format -1477e369 ' 080.65G' -> '-0000000000000000000000000000000000000000000000000000000000000000000001.477E+372' +xfmt4125 format 972918E0 '\xe9\xb2\x89=-54,.96' -> '\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89\xe9\xb2\x89972,918' +xfmt4126 format -843128e0 '' -> '-843128' +xfmt4127 format 336680E231 '\xe8\xaa\xad=85,.84f' -> '336,680,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4128 format -730757E299 '\xde\xb6>+66,.54f' -> '-73,075,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000' +xfmt4129 format 519173547024e0 '\xeb\x85\xaf^' -> '519173547024' +xfmt4130 format -540352547173E0 '-030F' -> '-00000000000000000540352547173' +xfmt4131 format 105725504551e85 '\xec\x9d\x93^73' -> '\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x931.05725504551E+96\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93\xec\x9d\x93' +xfmt4132 format -237649925673E351 '\xe8\xa9\x96=1,.42' -> '-2.37649925673E+362' +xfmt4133 format 94379797762766684281283827345473095E0 ' 34%' -> ' 9437979776276668428128382734547309500%' +xfmt4134 format -24119578750122840500420691882318376e0 ',' -> '-24,119,578,750,122,840,500,420,691,882,318,376' +xfmt4135 format 75705967556635026340103769146688456e354 '\xe9\x94\x95>+66,.88g' -> '\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95\xe9\x94\x95+7.5705967556635026340103769146688456e+388' +xfmt4136 format -41009095281223629128998648231210593e229 ',' -> '-4.1009095281223629128998648231210593E+263' +xfmt4137 format 3852251845170056592521272109e0 '\xe8\x99\x9c=+27,.25e' -> '+3.8522518451700565925212721e+27' +xfmt4138 format -8950728574350099827680934248E0 '' -> '-8950728574350099827680934248' +xfmt4139 format 7369692436347600570963762117e322 '' -> '7.369692436347600570963762117E+349' +xfmt4140 format -2226919460042962114368768596E207 '' -> '-2.226919460042962114368768596E+234' +xfmt4141 format 7397132922e0 '\xee\x81\xa7<-38.85' -> '7397132922\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7\xee\x81\xa7' +xfmt4142 format -8352934818e0 '0.33' -> '-8352934818' +xfmt4143 format 6313015935e272 '54,' -> ' 6.313015935E+281' +xfmt4144 format -8653185307e45 '\xe6\x84\x9a=+79,.56g' -> '-\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a\xe6\x84\x9a8.653185307e+54' +xfmt4145 format 5869741400976283023345454318220694222511E0 '' -> '5869741400976283023345454318220694222511' +xfmt4146 format -9686560856629352580257283803574529288016E0 '\xea\xbc\x8a= g' -> '-9686560856629352580257283803574529288016' +xfmt4147 format 5735165271329255823655361982383280166975E166 ' 015' -> ' 5.735165271329255823655361982383280166975E+205' +xfmt4148 format -8677276732785764820341315051347245799963e215 '\xef\xbf\xac^+26,G' -> '-8.677276732785764820341315051347245799963E+254' +xfmt4149 format 1234567890.1234567890123456789 '\xef\xb1\x8f>-63,e' -> '\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f\xef\xb1\x8f1.2345678901234567890123456789e+9' +xfmt4150 format -.1 '' -> '-0.1' +xfmt4151 format 9701891232227351244170605e0 '' -> '9701891232227351244170605' +xfmt4152 format -5833004609719321841667140e0 '0%' -> '-583300460971932184166714000%' +xfmt4153 format 8138029349984547059554007e146 '\xc4\x9c<-71,.66G' -> '8.138029349984547059554007E+170\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c\xc4\x9c' +xfmt4154 format -6051090663843862218946442e230 ' ' -> '-6.051090663843862218946442E+254' +xfmt4155 format 49182669436490047516487437568827267E0 '\xe6\x8d\x9e< ,.25G' -> ' 4.918266943649004751648744E+34' +xfmt4156 format -46370479561991212324711641433229944E0 '\xeb\x96\xa9> 51,.35%' -> '-4,637,047,956,199,121,232,471,164,143,322,994,400.00000000000000000000000000000000000%' +xfmt4157 format 75985054134131260935298112461037912E207 '\xe2\x80\xa7< 33,.8e' -> ' 7.59850541e+241\xe2\x80\xa7\xe2\x80\xa7\xe2\x80\xa7\xe2\x80\xa7\xe2\x80\xa7\xe2\x80\xa7\xe2\x80\xa7\xe2\x80\xa7\xe2\x80\xa7\xe2\x80\xa7\xe2\x80\xa7\xe2\x80\xa7\xe2\x80\xa7\xe2\x80\xa7\xe2\x80\xa7\xe2\x80\xa7\xe2\x80\xa7' +xfmt4158 format -93175961087633593003123581428449071e105 ',.71%' -> '-9,317,596,108,763,359,300,312,358,142,844,907,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt4159 format 49608681935549251054064502761012e0 ',F' -> '49,608,681,935,549,251,054,064,502,761,012' +xfmt4160 format -40925591406795672471644563373249E0 '\xef\xaa\xae^ ' -> '-40925591406795672471644563373249' +xfmt4161 format 65131964089077229216981935224435e161 '\xe3\xb7\x92<-65,.12' -> '6.51319640891E+192\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92\xe3\xb7\x92' +xfmt4162 format -76009104553705908463795836338958e380 '' -> '-7.6009104553705908463795836338958E+411' +xfmt4163 format 25178359796006e0 '' -> '25178359796006' +xfmt4164 format -68613092072144e0 '\xec\xa2\x9a=,.43' -> '-68,613,092,072,144' +xfmt4165 format 77777951206209E23 '' -> '7.7777951206209E+36' +xfmt4166 format -81534389973555e61 '\xef\xbe\xa2>+.88' -> '-8.1534389973555E+74' +xfmt4167 format 1346335085456334E0 '\xe5\x8a\x98<+29%' -> '+134633508545633400%\xe5\x8a\x98\xe5\x8a\x98\xe5\x8a\x98\xe5\x8a\x98\xe5\x8a\x98\xe5\x8a\x98\xe5\x8a\x98\xe5\x8a\x98\xe5\x8a\x98' +xfmt4168 format -9821022329362741e0 '\xd8\xac=-66.23' -> '-\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac\xd8\xac9821022329362741' +xfmt4169 format 3859362475121998e324 '-,' -> '3.859362475121998E+339' +xfmt4170 format -1059624131461708e293 '\xe4\xa8\xbe=' -> '-1.059624131461708E+308' +xfmt4171 format 947733405207594917E0 '\xe6\xaf\xaf^91,f' -> '\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf947,733,405,207,594,917\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf\xe6\xaf\xaf' +xfmt4172 format -144611743357897781e0 '' -> '-144611743357897781' +xfmt4173 format 184947983955027309E53 '\xeb\xa6\xbb<84.32f' -> '18494798395502730900000000000000000000000000000000000000000000000000000.00000000000000000000000000000000' +xfmt4174 format -814519118296252122e125 '\xe9\xb4\x82=,' -> '-8.14519118296252122E+142' +xfmt4175 format 647e0 '0.50' -> '647' +xfmt4176 format -567E0 '60' -> ' -567' +xfmt4177 format 317e309 '' -> '3.17E+311' +xfmt4178 format -961e365 ' 85g' -> ' -9.61e+367' +xfmt4179 format 509249807E0 '' -> '509249807' +xfmt4180 format -459727175e0 '+58,e' -> ' -4.59727175e+8' +xfmt4181 format 628973453E217 '0,F' -> '6,289,734,530,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt4182 format -834421045E357 '\xec\xb0\xbb>' -> '-8.34421045E+365' +xfmt4183 format 4500890124842e0 '\xe3\xb1\xb3>+22,.43G' -> '\xe3\xb1\xb3\xe3\xb1\xb3\xe3\xb1\xb3\xe3\xb1\xb3+4,500,890,124,842' +xfmt4184 format -1053394131477e0 '\xe0\xb8\x8e>42,.79f' -> '-1,053,394,131,477.0000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4185 format 7653972114450E258 '0,.63f' -> '7,653,972,114,450,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000' +xfmt4186 format -3023699212510E282 ',' -> '-3.023699212510E+294' +xfmt4187 format 80060225838805755E0 '' -> '80060225838805755' +xfmt4188 format -29223784734669847e0 '\xe5\x81\xa8=+' -> '-29223784734669847' +xfmt4189 format 50599565666436680e358 '\xef\x80\x84^+9,.19' -> '+5.0599565666436680E+374' +xfmt4190 format -33824575459265694e148 '+052.27f' -> '-338245754592656940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000' +xfmt4191 format 81955469715836812217154462E0 '\xeb\xa0\x86^ 50,.14%' -> ' 8,195,546,971,583,681,221,715,446,200.00000000000000%' +xfmt4192 format -90553794439183356789414501e0 '62' -> ' -90553794439183356789414501' +xfmt4193 format 80275743276187366469099954E171 '\xe9\x9d\x85^-24,E' -> '8.0275743276187366469099954E+196' +xfmt4194 format -42641929523789459666939154E264 '' -> '-4.2641929523789459666939154E+289' +xfmt4195 format 7103e0 ' ' -> ' 7103' +xfmt4196 format -8186e0 '\xea\x83\xba<+f' -> '-8186' +xfmt4197 format 1967e212 '\xee\xbe\x8f>36e' -> '\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f\xee\xbe\x8f1.967e+215' +xfmt4198 format -1884E63 '' -> '-1.884E+66' +xfmt4199 format 58719967347706069033411526819833376675356538E0 '\xe1\x92\x87^98,.45g' -> '\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x8758,719,967,347,706,069,033,411,526,819,833,376,675,356,538\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87\xe1\x92\x87' +xfmt4200 format -63380945980353826215688295858722546153877895E0 '\xe9\xb1\x85<-43,.39e' -> '-6.338094598035382621568829585872254615388e+43' +xfmt4201 format 55616456356090444364870951872277633242817034e301 '\xeb\x9f\xbf< 14.26' -> ' 5.5616456356090444364870952E+344' +xfmt4202 format -19174629081942943418799176792996281517523924E140 '-0' -> '-1.9174629081942943418799176792996281517523924E+183' +xfmt4203 format 83655385827593878689362E0 ',' -> '83,655,385,827,593,878,689,362' +xfmt4204 format -47769587808403397951028E0 '\xe3\xa0\xa7<,G' -> '-47,769,587,808,403,397,951,028' +xfmt4205 format 61010986422408047566985E233 '\xee\x86\xa3^+19,' -> '+6.1010986422408047566985E+255' +xfmt4206 format -12802179343586703528454E290 '' -> '-1.2802179343586703528454E+312' +xfmt4207 format 7519410925931487543e0 '+' -> '+7519410925931487543' +xfmt4208 format -7679428153981136357e0 '\xee\xb2\xae<+,.95e' -> '-7.67942815398113635700000000000000000000000000000000000000000000000000000000000000000000000000000e+18' +xfmt4209 format 2687565083176505997e285 '\xe3\xbc\x93<55,G' -> '2.687565083176505997E+303\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93\xe3\xbc\x93' +xfmt4210 format -4457215976675024969E276 ',f' -> '-4,457,215,976,675,024,969,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt4211 format 233556883697660904302385065861816617850115E0 '42' -> '233556883697660904302385065861816617850115' +xfmt4212 format -762331860147941845771418721633958139475034E0 ' 0' -> '-762331860147941845771418721633958139475034' +xfmt4213 format 479067376423285796649707032846681593617766e227 ',.34' -> '4.790673764232857966497070328466816E+268' +xfmt4214 format -930019040921970783529802156046683069728578e71 '\xef\xad\xbd>-71' -> '\xef\xad\xbd\xef\xad\xbd\xef\xad\xbd\xef\xad\xbd\xef\xad\xbd\xef\xad\xbd\xef\xad\xbd\xef\xad\xbd\xef\xad\xbd\xef\xad\xbd\xef\xad\xbd\xef\xad\xbd\xef\xad\xbd\xef\xad\xbd\xef\xad\xbd\xef\xad\xbd\xef\xad\xbd\xef\xad\xbd\xef\xad\xbd\xef\xad\xbd\xef\xad\xbd\xef\xad\xbd-9.30019040921970783529802156046683069728578E+112' +xfmt4215 format 5109217708601870570610614389246774526821E0 '\xe6\xbc\xa8= 52,.16E' -> ' \xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa8\xe6\xbc\xa85.1092177086018706E+39' +xfmt4216 format -7702444057284838414976749078653769219838e0 '0,f' -> '-7,702,444,057,284,838,414,976,749,078,653,769,219,838' +xfmt4217 format 2162274570517155200870122376111516194596E72 '+054,.98' -> '+0,000,002.162274570517155200870122376111516194596E+111' +xfmt4218 format -5622775516090478047432838295009079306593E257 '\xeb\x84\x9a= 43' -> '-5.622775516090478047432838295009079306593E+296' +xfmt4219 format 8714643945252560142143676613e0 '42g' -> ' 8714643945252560142143676613' +xfmt4220 format -5863898442427982436636166917e0 '\xea\xbf\x96=+50,.1' -> '-\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x96\xea\xbf\x966E+27' +xfmt4221 format 4051332483096161743696050116E257 '\xe8\xb7\x90>+72,.74g' -> '\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90\xe8\xb7\x90+4.051332483096161743696050116e+284' +xfmt4222 format -9648597769388695615866776324E203 '44.79' -> ' -9.648597769388695615866776324E+230' +xfmt4223 format 891411987525723116933814832351696128187e0 '0,.33F' -> '891,411,987,525,723,116,933,814,832,351,696,128,187.000000000000000000000000000000000' +xfmt4224 format -701998691743417826321565428791032483584e0 '\xea\xbc\x97=89.53n' -> '-\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97\xea\xbc\x97701998691743417826321565428791032483584' +xfmt4225 format 613871100924640990584733488421047917053e290 '' -> '6.13871100924640990584733488421047917053E+328' +xfmt4226 format -772012210894674491303019555980309352564e228 '0' -> '-7.72012210894674491303019555980309352564E+266' +xfmt4227 format 37584101879695151515E0 '032,.88g' -> '0,000,037,584,101,879,695,151,515' +xfmt4228 format -33824313114874160162E0 '\xda\x8a^-30,.72G' -> '\xda\x8a-33,824,313,114,874,160,162\xda\x8a\xda\x8a' +xfmt4229 format 42007138778749431291e150 '\xe8\xa9\x9b<,' -> '4.2007138778749431291E+169' +xfmt4230 format -19015990371749358055e375 '\xe7\xad\x8a<.95' -> '-1.9015990371749358055E+394' +xfmt4231 format 139366314725E0 '\xed\x94\x8d=,g' -> '139,366,314,725' +xfmt4232 format -240486380547e0 ',' -> '-240,486,380,547' +xfmt4233 format 352431317103E205 '\xe9\xb5\xb1=,.92F' -> '3,524,313,171,030,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4234 format -700179607096e20 '\xee\x8f\x81=-,.43' -> '-7.00179607096E+31' +xfmt4235 format 300235680526686277960136479972306E0 '' -> '300235680526686277960136479972306' +xfmt4236 format -660414913858436392400474449117222e0 '\xe2\xab\x9f<+9,.82f' -> '-660,414,913,858,436,392,400,474,449,117,222.0000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4237 format 171681525349160451789244487002438e27 '\xef\x8e\x94^-18,.92' -> '1.71681525349160451789244487002438E+59' +xfmt4238 format -948197603196641323006978426426606E191 '\xe1\x8d\x81^+12,.54g' -> '-9.48197603196641323006978426426606e+223' +xfmt4239 format 3118923231215617655540498307870443E0 ',' -> '3,118,923,231,215,617,655,540,498,307,870,443' +xfmt4240 format -6626025424568628663242981435111462E0 '-,.23' -> '-6.6260254245686286632430E+33' +xfmt4241 format 4880412116042590819673654717438390e164 '\xe3\x90\xae=-.49' -> '4.880412116042590819673654717438390E+197' +xfmt4242 format -8065640875223388604813131816369603e149 '\xe2\x8d\xbd=42,.73e' -> '-8.0656408752233886048131318163696030000000000000000000000000000000000000000e+182' +xfmt4243 format 186868591061965912540e0 '\xe2\xab\xbf<-,g' -> '186,868,591,061,965,912,540' +xfmt4244 format -655779727978486584505e0 '\xe6\x8f\x84=94,.88G' -> '-\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84\xe6\x8f\x84655,779,727,978,486,584,505' +xfmt4245 format 251995259349928555895e57 '' -> '2.51995259349928555895E+77' +xfmt4246 format -976370198967317273691e255 '\xec\xbc\x91<-70,.8e' -> '-9.76370199e+275\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91\xec\xbc\x91' +xfmt4247 format 14e0 '-087,.7' -> '000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,014' +xfmt4248 format -36E0 '\xe4\xba\xbc= 77,.2g' -> '-\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc\xe4\xba\xbc36' +xfmt4249 format 95e136 '\xeb\xad\x96=90,.69f' -> '950,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4250 format -63E97 '\xe4\x8c\x80=41,.90G' -> '-\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x80\xe4\x8c\x806.3E+98' +xfmt4251 format 31191729505E0 '\xe6\x97\x86^+10,.53g' -> '+31,191,729,505' +xfmt4252 format -75541062527e0 '\xea\x8c\x8f<,.55f' -> '-75,541,062,527.0000000000000000000000000000000000000000000000000000000' +xfmt4253 format 94693088447e208 '025,' -> '0,000,009.4693088447E+218' +xfmt4254 format -42180314572e381 '\xee\x98\x81<23,.81' -> '-4.2180314572E+391\xee\x98\x81\xee\x98\x81\xee\x98\x81\xee\x98\x81\xee\x98\x81' +xfmt4255 format 4731650967465464218506765613761490097824818E0 '-013,G' -> '4,731,650,967,465,464,218,506,765,613,761,490,097,824,818' +xfmt4256 format -5287815592974785381283368329126702941943300e0 '\xea\xbe\x82<+84,.92' -> '-5,287,815,592,974,785,381,283,368,329,126,702,941,943,300\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82\xea\xbe\x82' +xfmt4257 format 2411741179444069415481892072981131296112847E62 '-.49' -> '2.411741179444069415481892072981131296112847E+104' +xfmt4258 format -7777026310928871201816394301834762636402963e322 '' -> '-7.777026310928871201816394301834762636402963E+364' +xfmt4259 format 82288e0 ' 42.53' -> ' 82288' +xfmt4260 format -16113E0 '\xe5\xaa\x87^,.50%' -> '-1,611,300.00000000000000000000000000000000000000000000000000%' +xfmt4261 format 88942e130 '0' -> '8.8942E+134' +xfmt4262 format -14203E36 '07,.69' -> '-1.4203E+40' +xfmt4263 format 3245808099498462353799065806594065153E0 '\xe3\xb5\xb4>,F' -> '3,245,808,099,498,462,353,799,065,806,594,065,153' +xfmt4264 format -7457381398780317198257873612665721036e0 '+0,F' -> '-7,457,381,398,780,317,198,257,873,612,665,721,036' +xfmt4265 format 7878899549898730236071566064315243360e44 '\xee\x9f\xbe^,g' -> '7.878899549898730236071566064315243360e+80' +xfmt4266 format -2947390290378749029473788317116176250E139 '' -> '-2.947390290378749029473788317116176250E+175' +xfmt4267 format 7e0 '0,' -> '7' +xfmt4268 format -3E0 '' -> '-3' +xfmt4269 format 8E231 '\xe7\x88\x80^13.28g' -> '\xe7\x88\x80\xe7\x88\x80\xe7\x88\x808e+231\xe7\x88\x80\xe7\x88\x80\xe7\x88\x80\xe7\x88\x80' +xfmt4270 format -5e220 '\xe1\xa5\xb5>,.7' -> '-5E+220' +xfmt4271 format 1234567890123456789.123456789012345 '' -> '1234567890123456789.123456789012345' +xfmt4272 format -1.1234567890123 'n' -> '-1.1234567890123' +xfmt4273 format 83515417220002658415972338E0 '-59,E' -> ' 8.3515417220002658415972338E+25' +xfmt4274 format -37197003897951551156864895E0 '\xe5\x9e\x86^' -> '-37197003897951551156864895' +xfmt4275 format 58107401236957959662045762E168 '\xeb\xb2\x88^-20,.49f' -> '58,107,401,236,957,959,662,045,762,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000' +xfmt4276 format -40424597495416220543676057e197 '25.29' -> '-4.0424597495416220543676057E+222' +xfmt4277 format 3045e0 '\xea\xac\x91=49' -> '\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x91\xea\xac\x913045' +xfmt4278 format -6151E0 '\xe5\x88\x87=' -> '-6151' +xfmt4279 format 3251e193 '-07,.5F' -> '32,510,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000' +xfmt4280 format -5798e381 ' 010f' -> '-5798000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4281 format 4507885079461969622844863157e0 '\xec\xaa\xaf^+34,.24%' -> '+450,788,507,946,196,962,284,486,315,700.000000000000000000000000%' +xfmt4282 format -8430936229206795239269609907E0 '\xe9\x86\xa3^+20,F' -> '-8,430,936,229,206,795,239,269,609,907' +xfmt4283 format 8279855104316376497530585059e348 '\xe2\xa0\x92<+49.24G' -> '+8.27985510431637649753059E+375\xe2\xa0\x92\xe2\xa0\x92\xe2\xa0\x92\xe2\xa0\x92\xe2\xa0\x92\xe2\xa0\x92\xe2\xa0\x92\xe2\xa0\x92\xe2\xa0\x92\xe2\xa0\x92\xe2\xa0\x92\xe2\xa0\x92\xe2\xa0\x92\xe2\xa0\x92\xe2\xa0\x92\xe2\xa0\x92\xe2\xa0\x92\xe2\xa0\x92' +xfmt4284 format -2827595511489525186278049336E194 '13,.64' -> '-2.827595511489525186278049336E+221' +xfmt4285 format 96591735252E0 '\xcc\x9b>-91,.2G' -> '\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b\xcc\x9b9.7E+10' +xfmt4286 format -21539380786E0 '\xe3\x80\xa9<-20,.60%' -> '-2,153,938,078,600.000000000000000000000000000000000000000000000000000000000000%' +xfmt4287 format 51369328530E69 '\xee\xaa\x87> ,.18E' -> ' 5.136932853000000000E+79' +xfmt4288 format -22128721262E110 '\xec\xb0\x90^ .14e' -> '-2.21287212620000e+120' +xfmt4289 format 1058031112720142447188E0 '\xee\x86\x89<+82,.68f' -> '+1,058,031,112,720,142,447,188.00000000000000000000000000000000000000000000000000000000000000000000' +xfmt4290 format -4153607448091965458092E0 '+082,.74g' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,004,153,607,448,091,965,458,092' +xfmt4291 format 2182243435927688737783E167 '\xe4\xa9\x94^45,.91f' -> '218,224,343,592,768,873,778,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4292 format -3503212498914711367985E47 '13G' -> '-3.503212498914711367985E+68' +xfmt4293 format 67495973E0 ',.26' -> '67,495,973' +xfmt4294 format -90859074e0 '\xdc\xb8=+48,g' -> '-\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb8\xdc\xb890,859,074' +xfmt4295 format 49852337e193 ' 079,.1g' -> ' 0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,005e+200' +xfmt4296 format -72452767e259 ' 17,' -> ' -7.2452767E+266' +xfmt4297 format 899986108829805919290805597214128530100544e0 '0,.96E' -> '8.999861088298059192908055972141285301005440000000000000000000000000000000000000000000000000000000E+41' +xfmt4298 format -545302595746361233058358203580285737787692e0 '\xed\x8a\xa3^76,e' -> '\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3-5.45302595746361233058358203580285737787692e+41\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3\xed\x8a\xa3' +xfmt4299 format 919539288603582275024841780333662118816818e232 '\xe6\x89\xbd^ 23,.64e' -> ' 9.1953928860358227502484178033366211881681800000000000000000000000e+273' +xfmt4300 format -483132397426413474826127474048170575832331e193 '\xe5\xa9\x8f^-44,.73f' -> '-4,831,323,974,264,134,748,261,274,740,481,705,758,323,310,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4301 format 31023106712476E0 '\xe5\x89\xb1>+86,.77g' -> '\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1\xe5\x89\xb1+31,023,106,712,476' +xfmt4302 format -40093931507456e0 '\xe9\xba\xad< 63.62' -> '-40093931507456\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad\xe9\xba\xad' +xfmt4303 format 23761141636307e217 '+08,e' -> '+2.3761141636307e+230' +xfmt4304 format -62467388650379E143 '-67.60F' -> '-6246738865037900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000' +xfmt4305 format 487271213e0 '057E' -> '000000000000000000000000000000000000000000004.87271213E+8' +xfmt4306 format -465575965e0 '\xe1\x8f\xa2=+14,.59E' -> '-4.65575965000000000000000000000000000000000000000000000000000E+8' +xfmt4307 format 560148073e341 '\xe4\x80\xb1<-11,.50E' -> '5.60148073000000000000000000000000000000000000000000E+349' +xfmt4308 format -402870871e45 '' -> '-4.02870871E+53' +xfmt4309 format 86506E0 '\xe9\xb4\xb3> ,f' -> ' 86,506' +xfmt4310 format -21911E0 '\xe1\x93\x8c> .47e' -> '-2.19110000000000000000000000000000000000000000000e+4' +xfmt4311 format 79768E88 '-,f' -> '797,680,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt4312 format -11602E94 '\xe8\x8f\x88=4' -> '-1.1602E+98' +xfmt4313 format 6027558581004E0 '\xea\x9a\x81^,.89' -> '6,027,558,581,004' +xfmt4314 format -9424791594592e0 '\xeb\xbf\xac^+49,.96G' -> '\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac-9,424,791,594,592\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac\xeb\xbf\xac' +xfmt4315 format 7850077012200E295 '0,.11f' -> '78,500,770,122,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000' +xfmt4316 format -6815466478519e185 '' -> '-6.815466478519E+197' +xfmt4317 format 0E0 '\xef\xb5\xa0>39.98' -> '\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa0\xef\xb5\xa00' +xfmt4318 format 0E0 '\xec\xb2\xaa<-.66' -> '0' +xfmt4319 format 0e51 '' -> '0E+51' +xfmt4320 format 0e94 '' -> '0E+94' +xfmt4321 format 69625328950562374557706223472507e0 '\xe7\x98\xac^+71,.62F' -> '+69,625,328,950,562,374,557,706,223,472,507.00000000000000000000000000000000000000000000000000000000000000' +xfmt4322 format -98325604285529068799885202953219e0 '\xef\x9d\x82=-38,.12g' -> '-\xef\x9d\x82\xef\x9d\x82\xef\x9d\x82\xef\x9d\x82\xef\x9d\x82\xef\x9d\x82\xef\x9d\x82\xef\x9d\x82\xef\x9d\x82\xef\x9d\x82\xef\x9d\x82\xef\x9d\x82\xef\x9d\x82\xef\x9d\x82\xef\x9d\x82\xef\x9d\x82\xef\x9d\x82\xef\x9d\x82\xef\x9d\x82\xef\x9d\x829.83256042855e+31' +xfmt4323 format 77062073281109031876599600373189e119 ',' -> '7.7062073281109031876599600373189E+150' +xfmt4324 format -25408702785902230807784618935475e86 '\xef\xa4\x83^ 97,' -> '\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83-2.5408702785902230807784618935475E+117\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83\xef\xa4\x83' +xfmt4325 format 15763387182223182318047191627702893848395E0 '.96' -> '15763387182223182318047191627702893848395' +xfmt4326 format -12765769434232210731929110757968543011532e0 '\xeb\xa7\x82^ 48g' -> '\xeb\xa7\x82\xeb\xa7\x82\xeb\xa7\x82-12765769434232210731929110757968543011532\xeb\xa7\x82\xeb\xa7\x82\xeb\xa7\x82' +xfmt4327 format 75583855768234889361618305514290125506870E6 '\xe9\x9c\xaa^ 83,.3G' -> '\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa 7.56E+46\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa\xe9\x9c\xaa' +xfmt4328 format -38795869759399633360478715296357148353581E27 '\xe4\x8e\x9c<-,.77f' -> '-38,795,869,759,399,633,360,478,715,296,357,148,353,581,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4329 format 3509757E0 '\xe6\xb3\xbe<+,' -> '+3,509,757' +xfmt4330 format -8610810E0 '\xe1\x85\x96^-1,.38G' -> '-8,610,810' +xfmt4331 format 6756756E54 '\xe0\xac\xa3>+74,.14g' -> '\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3\xe0\xac\xa3+6.756756e+60' +xfmt4332 format -3912659E23 '0E' -> '-3.912659E+29' +xfmt4333 format 229531399061630484e0 '\xe4\x84\x82^-1.90' -> '229531399061630484' +xfmt4334 format -970093601786442398E0 ' ' -> '-970093601786442398' +xfmt4335 format 386262955500990932E366 ' ,' -> ' 3.86262955500990932E+383' +xfmt4336 format -433884312841224716e356 '+014,.29G' -> '-4.33884312841224716E+373' +xfmt4337 format 7632694509839114311995362411128822051919e0 '\xe7\x95\xb2= 81,.52g' -> ' \xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb2\xe7\x95\xb27,632,694,509,839,114,311,995,362,411,128,822,051,919' +xfmt4338 format -4956292856907082082251151409248796996581E0 '-060' -> '-00000000000000000004956292856907082082251151409248796996581' +xfmt4339 format 1106273781811468964024883928018809751754e111 '\xcf\xbb>88.49g' -> '\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb\xcf\xbb1.106273781811468964024883928018809751754e+150' +xfmt4340 format -5921517618340245502345137713980639876540e263 '' -> '-5.921517618340245502345137713980639876540E+302' +xfmt4341 format 172170660761013621353514519990848775139e0 'E' -> '1.72170660761013621353514519990848775139E+38' +xfmt4342 format -631553541073786276891557418808270145157e0 '' -> '-631553541073786276891557418808270145157' +xfmt4343 format 435206445215950892395590409363403638176E313 '\xe2\x84\x8f=79.98' -> '\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f\xe2\x84\x8f4.35206445215950892395590409363403638176E+351' +xfmt4344 format -174191013520314527879629279069957722721E297 '52f' -> '-174191013520314527879629279069957722721000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4345 format 8517163122196832884341605058085927903621293E0 '\xe7\xa2\xbf< 29,.63%' -> ' 851,716,312,219,683,288,434,160,505,808,592,790,362,129,300.000000000000000000000000000000000000000000000000000000000000000%' +xfmt4346 format -5747496645424357644762040571316679411965631E0 '\xed\x9c\x8f<+90,' -> '-5,747,496,645,424,357,644,762,040,571,316,679,411,965,631\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f\xed\x9c\x8f' +xfmt4347 format 9350434807244750676289211679296913806318108E218 '056.26' -> '0000000000000000000000009.3504348072447506762892117E+260' +xfmt4348 format -3830727550476754897788622781936004825893654E311 '\xe8\xb8\xa7>+88,.46g' -> '\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7\xe8\xb8\xa7-3.830727550476754897788622781936004825893654e+353' +xfmt4349 format 90253539394839054730222914206932691E0 '-079,.41' -> '000,000,000,000,000,000,000,000,090,253,539,394,839,054,730,222,914,206,932,691' +xfmt4350 format -15394379435392813435730466277389195e0 '\xe7\x8d\x8f=-86,.55' -> '-\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f\xe7\x8d\x8f15,394,379,435,392,813,435,730,466,277,389,195' +xfmt4351 format 96535373275128962871594041349782980E198 '' -> '9.6535373275128962871594041349782980E+232' +xfmt4352 format -63364099812333325194897257708732442e316 '+0,.89e' -> '-6.33640998123333251948972577087324420000000000000000000000000000000000000000000000000000000e+350' +xfmt4353 format 517444987580661575579026E0 ' 019' -> ' 517444987580661575579026' +xfmt4354 format -480847813636599917606490e0 '\xe6\xbf\x9f<+92,.52e' -> '-4.8084781363659991760649000000000000000000000000000000e+23\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f\xe6\xbf\x9f' +xfmt4355 format 132391511345791425684266e318 '\xeb\x8a\xa4<+62.22n' -> '+1.323915113457914256843e+341\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4\xeb\x8a\xa4' +xfmt4356 format -103191923732778202326337e364 '\xe3\xb9\x95^ 52,.66e' -> '-1.031919237327782023263370000000000000000000000000000000000000000000e+387' +xfmt4357 format 3994414648599140907547239e0 '\xe3\x89\x8a^-,' -> '3,994,414,648,599,140,907,547,239' +xfmt4358 format -5786586394454301907416480E0 '\xec\xb5\x9c^-.86' -> '-5786586394454301907416480' +xfmt4359 format 3850850154795008947000827E266 '12.60' -> '3.850850154795008947000827E+290' +xfmt4360 format -2906732726362140977145442e112 '088.65g' -> '-000000000000000000000000000000000000000000000000000000002.906732726362140977145442e+136' +xfmt4361 format 25e0 '\xeb\xbb\xa4<-G' -> '25' +xfmt4362 format -82E0 '-' -> '-82' +xfmt4363 format 37E53 '' -> '3.7E+54' +xfmt4364 format -78e244 '\xe5\xbc\xab^46,.70%' -> '-78,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt4365 format 710139e0 '\xe0\xad\x92>+' -> '+710139' +xfmt4366 format -350538E0 '\xe7\x99\x99>+36,.64f' -> '-350,538.0000000000000000000000000000000000000000000000000000000000000000' +xfmt4367 format 319504e145 ',' -> '3.19504E+150' +xfmt4368 format -693429E295 '\xe6\xbb\x8b>-45.51F' -> '-6934290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000' +xfmt4369 format 705505097435232098704397090918967627e0 '\xec\xbf\x9f<91,g' -> '705,505,097,435,232,098,704,397,090,918,967,627\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f\xec\xbf\x9f' +xfmt4370 format -357051329310535472198534961959923341E0 'f' -> '-357051329310535472198534961959923341' +xfmt4371 format 214906976435589494009083648533017518e341 '\xe7\xa8\xb4=75,.59' -> '\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb4\xe7\xa8\xb42.14906976435589494009083648533017518E+376' +xfmt4372 format -106078891866451824393598424910189861E302 '\xe8\xad\xbf=-72,.14F' -> '-10,607,889,186,645,182,439,359,842,491,018,986,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000' +xfmt4373 format 494789796809308537666490539190417e0 '\xee\xbc\x92< 91.94' -> ' 494789796809308537666490539190417\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92\xee\xbc\x92' +xfmt4374 format -760719734370569975766588794929409E0 '' -> '-760719734370569975766588794929409' +xfmt4375 format 257118601261718411915686055110037e357 '\xe6\xba\x9f<,.58f' -> '257,118,601,261,718,411,915,686,055,110,037,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000' +xfmt4376 format -780391175586013345204614685790631e289 '\xeb\xbb\x86^-.18%' -> '-780391175586013345204614685790631000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000%' +xfmt4377 format 409E0 '\xe4\xb9\xaf>%' -> '40900%' +xfmt4378 format -668E0 '\xd6\x8e=+82,' -> '-\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e\xd6\x8e668' +xfmt4379 format 423e85 '\xe4\xb8\xb8^-55,.77f' -> '4,230,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4380 format -151e376 '7.62e' -> '-1.51000000000000000000000000000000000000000000000000000000000000e+378' +xfmt4381 format 75033751950709206e0 '\xee\xac\x88=+53,.29f' -> '+75,033,751,950,709,206.00000000000000000000000000000' +xfmt4382 format -17704075589202666e0 '.73' -> '-17704075589202666' +xfmt4383 format 22746560176510782e183 '\xe1\xa6\xb2=35' -> '\xe1\xa6\xb2\xe1\xa6\xb2\xe1\xa6\xb2\xe1\xa6\xb2\xe1\xa6\xb2\xe1\xa6\xb2\xe1\xa6\xb2\xe1\xa6\xb2\xe1\xa6\xb2\xe1\xa6\xb2\xe1\xa6\xb2\xe1\xa6\xb22.2746560176510782E+199' +xfmt4384 format -74182958454377602E253 '' -> '-7.4182958454377602E+269' +xfmt4385 format 7e0 ' .12' -> ' 7' +xfmt4386 format -3e0 '' -> '-3' +xfmt4387 format 3E370 '' -> '3E+370' +xfmt4388 format -2E43 '\xe3\x9c\x99>88F' -> '\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99\xe3\x9c\x99-20000000000000000000000000000000000000000000' +xfmt4389 format 50248905276291962538443679776518137930748821e0 'g' -> '50248905276291962538443679776518137930748821' +xfmt4390 format -32521189723536402570141748233875538928437600e0 '\xec\x9e\x80=,' -> '-32,521,189,723,536,402,570,141,748,233,875,538,928,437,600' +xfmt4391 format 96740313302763242564097207845133392382039004e150 '' -> '9.6740313302763242564097207845133392382039004E+193' +xfmt4392 format -92268731042648173316135375521578719533311658E108 '\xe0\xaf\xb7=-63.72n' -> '-\xe0\xaf\xb7\xe0\xaf\xb7\xe0\xaf\xb7\xe0\xaf\xb7\xe0\xaf\xb7\xe0\xaf\xb7\xe0\xaf\xb7\xe0\xaf\xb7\xe0\xaf\xb7\xe0\xaf\xb7\xe0\xaf\xb7\xe0\xaf\xb79.2268731042648173316135375521578719533311658e+151' +xfmt4393 format 1234567890123.123456789012345678901 ' 030,.28f' -> ' 1,234,567,890,123.1234567890123456789010000000' +xfmt4394 format -12345678901234.1234567 '0.45' -> '-12345678901234.1234567' +xfmt4395 format 88791064128413136882483006511080e0 '0,' -> '88,791,064,128,413,136,882,483,006,511,080' +xfmt4396 format -12522039397149088785383983555250E0 '-' -> '-12522039397149088785383983555250' +xfmt4397 format 74454401292710909370036711975630e283 '' -> '7.4454401292710909370036711975630E+314' +xfmt4398 format -18267394724819970081888132752287E372 ',' -> '-1.8267394724819970081888132752287E+403' +xfmt4399 format 37561232914609015052718e0 ',E' -> '3.7561232914609015052718E+22' +xfmt4400 format -25412800260106049562353E0 '0' -> '-25412800260106049562353' +xfmt4401 format 24838237533597314656134E91 '' -> '2.4838237533597314656134E+113' +xfmt4402 format -57884285277672404548022e274 '\xee\x98\xb8>+72,g' -> '\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8\xee\x98\xb8-5.7884285277672404548022e+296' +xfmt4403 format 425243753424292601360065E0 '055,.44f' -> '425,243,753,424,292,601,360,065.00000000000000000000000000000000000000000000' +xfmt4404 format -851620488323738107086950E0 '-0' -> '-851620488323738107086950' +xfmt4405 format 211950775396514139604220e363 '\xe1\xab\x80^+61,.4e' -> '\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80+2.1195e+386\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80\xe1\xab\x80' +xfmt4406 format -932104216297678942514081e328 '+022,.65' -> '-9.32104216297678942514081E+351' +xfmt4407 format 881527226718870039e0 '0E' -> '8.81527226718870039E+17' +xfmt4408 format -387376624214249740e0 '' -> '-387376624214249740' +xfmt4409 format 291362908537357088e223 '\xe9\x8e\xac=.47n' -> '2.91362908537357088e+240' +xfmt4410 format -896885275725747179E16 '' -> '-8.96885275725747179E+33' +xfmt4411 format 708933607818384122240964931e0 '-,%' -> '70,893,360,781,838,412,224,096,493,100%' +xfmt4412 format -352505977331605695102137641e0 ',' -> '-352,505,977,331,605,695,102,137,641' +xfmt4413 format 902610477577003598109042491e325 '\xe5\x95\xbc> 94,.73E' -> '\xe5\x95\xbc\xe5\x95\xbc\xe5\x95\xbc\xe5\x95\xbc\xe5\x95\xbc\xe5\x95\xbc\xe5\x95\xbc\xe5\x95\xbc\xe5\x95\xbc\xe5\x95\xbc\xe5\x95\xbc\xe5\x95\xbc\xe5\x95\xbc 9.0261047757700359810904249100000000000000000000000000000000000000000000000E+351' +xfmt4414 format -437160359065469347926095451E239 '+7,.28f' -> '-43,716,035,906,546,934,792,609,545,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000' +xfmt4415 format 21326791839566E0 '-020,.50E' -> '2.13267918395660000000000000000000000000000000000000E+13' +xfmt4416 format -83923372334001e0 '16' -> ' -83923372334001' +xfmt4417 format 11389603737051e85 '\xee\xa2\xa5=-,G' -> '1.1389603737051E+98' +xfmt4418 format -47650526122991E220 '\xea\xb5\x95>' -> '-4.7650526122991E+233' +xfmt4419 format 373689938279941477720562708837118684886E0 '+091,' -> '+00,000,000,000,000,000,000,000,000,000,373,689,938,279,941,477,720,562,708,837,118,684,886' +xfmt4420 format -130738258130564064909246694278123642274e0 '31,.32g' -> '-1.3073825813056406490924669427812e+38' +xfmt4421 format 846879613133631194106216192817300915854e118 '\xe5\xbf\x80<,e' -> '8.46879613133631194106216192817300915854e+156' +xfmt4422 format -172694038523600072062111834633169488202e369 '\xee\xa4\xb3= ,.66' -> '-1.72694038523600072062111834633169488202E+407' +xfmt4423 format 904235134501090799039653143256922130417767e0 '.27' -> '9.04235134501090799039653143E+41' +xfmt4424 format -739969560704162596701068021059266471856379E0 '\xe2\xbe\x9c> ,.7G' -> '-7.399696E+41' +xfmt4425 format 453524290634624130005866983340644356800803e70 '\xe7\xaf\xaa= 48,.77g' -> ' 4.53524290634624130005866983340644356800803e+111' +xfmt4426 format -854528800988251342369896825838256228407411e192 '057,' -> '-0,000,008.54528800988251342369896825838256228407411E+233' +xfmt4427 format 4527657558E0 '\xed\x9f\xb5=.83' -> '4527657558' +xfmt4428 format -1040229114e0 '\xed\x92\xb4=-99,.68%' -> '-\xed\x92\xb4\xed\x92\xb4\xed\x92\xb4\xed\x92\xb4\xed\x92\xb4\xed\x92\xb4\xed\x92\xb4\xed\x92\xb4\xed\x92\xb4\xed\x92\xb4\xed\x92\xb4\xed\x92\xb4\xed\x92\xb4104,022,911,400.00000000000000000000000000000000000000000000000000000000000000000000%' +xfmt4429 format 9192948301E332 '' -> '9.192948301E+341' +xfmt4430 format -9560409167e366 '\xe8\x80\xb4> 4,.35F' -> '-9,560,409,167,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000' +xfmt4431 format 3875475E0 '\xe6\xb8\x9d=+96,.83%' -> '+387,547,500.00000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt4432 format -4066792E0 '' -> '-4066792' +xfmt4433 format 5907351e164 '\xe5\x96\xae=43,.57' -> '\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae\xe5\x96\xae5.907351E+170' +xfmt4434 format -5835208E125 '093' -> '-00000000000000000000000000000000000000000000000000000000000000000000000000000005.835208E+131' +xfmt4435 format 51995673e0 '\xe7\xab\x80=+7,.47f' -> '+51,995,673.00000000000000000000000000000000000000000000000' +xfmt4436 format -57372884e0 '0,' -> '-57,372,884' +xfmt4437 format 91513741E96 '0G' -> '9.1513741E+103' +xfmt4438 format -40975426E33 '' -> '-4.0975426E+40' +xfmt4439 format 9576368356552e0 '99,' -> ' 9,576,368,356,552' +xfmt4440 format -1396707530671e0 '77n' -> ' -1396707530671' +xfmt4441 format 4920868659343e173 '\xe6\xbe\x9b=+.83' -> '+4.920868659343E+185' +xfmt4442 format -5330744480668E222 '\xea\xa2\xbc<-.85' -> '-5.330744480668E+234' +xfmt4443 format 37E0 '\xef\x89\x8e=+10,e' -> '+\xef\x89\x8e\xef\x89\x8e\xef\x89\x8e3.7e+1' +xfmt4444 format -47e0 '' -> '-47' +xfmt4445 format 45e353 '\xe4\xa1\xa0=-16,.29g' -> '\xe4\xa1\xa0\xe4\xa1\xa0\xe4\xa1\xa0\xe4\xa1\xa0\xe4\xa1\xa0\xe4\xa1\xa0\xe4\xa1\xa0\xe4\xa1\xa04.5e+354' +xfmt4446 format -17e161 '\xef\x8b\x88>+99,.54g' -> '\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88\xef\x8b\x88-1.7e+162' +xfmt4447 format 7080501907561847095861739616705680845696E0 '' -> '7080501907561847095861739616705680845696' +xfmt4448 format -3414759155156697857869625265119854126761e0 '' -> '-3414759155156697857869625265119854126761' +xfmt4449 format 6437443964848944171393759545686761172116E65 '\xe2\xb4\x87>+92,.8e' -> '\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87\xe2\xb4\x87+6.43744396e+104' +xfmt4450 format -4153231534656165184945324812275723684208E86 '\xe3\xb1\xb1^ 31,.73' -> '-4.153231534656165184945324812275723684208E+125' +xfmt4451 format 298E0 ',' -> '298' +xfmt4452 format -362E0 '' -> '-362' +xfmt4453 format 884E199 '\xe5\xbe\x86^-99,.45E' -> '\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x868.840000000000000000000000000000000000000000000E+201\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86\xe5\xbe\x86' +xfmt4454 format -828e18 '\xeb\x98\x81^20,e' -> '\xeb\x98\x81\xeb\x98\x81\xeb\x98\x81\xeb\x98\x81\xeb\x98\x81-8.28e+20\xeb\x98\x81\xeb\x98\x81\xeb\x98\x81\xeb\x98\x81\xeb\x98\x81\xeb\x98\x81' +xfmt4455 format 34155E0 '-56' -> ' 34155' +xfmt4456 format -45416e0 '\xe2\x9c\xba= 77,.64G' -> '-\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba\xe2\x9c\xba45,416' +xfmt4457 format 55947e132 '\xe4\xbf\xbf=,.24' -> '5.5947E+136' +xfmt4458 format -13442E268 '0' -> '-1.3442E+272' +xfmt4459 format 277882199759729997124E0 '' -> '277882199759729997124' +xfmt4460 format -611423283408023684093E0 ',g' -> '-611,423,283,408,023,684,093' +xfmt4461 format 838843463888052838098e272 '' -> '8.38843463888052838098E+292' +xfmt4462 format -534017469048021196237E52 'E' -> '-5.34017469048021196237E+72' +xfmt4463 format 62091148788035030503E0 '\xed\x9d\x8a<72,.93f' -> '62,091,148,788,035,030,503.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4464 format -24827429381600685682e0 '090.80' -> '-00000000000000000000000000000000000000000000000000000000000000000000024827429381600685682' +xfmt4465 format 19091279502646909938E56 '\xe4\xb1\x8a^+91,.5e' -> '\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a+1.90913e+75\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a\xe4\xb1\x8a' +xfmt4466 format -31818013998907503898e256 '\xe9\x89\x8e< .52E' -> '-3.1818013998907503898000000000000000000000000000000000E+275' +xfmt4467 format 70296546522218379e0 '\xe4\x9b\xab>,.66f' -> '70,296,546,522,218,379.000000000000000000000000000000000000000000000000000000000000000000' +xfmt4468 format -63250015763234623e0 '+,.87' -> '-63,250,015,763,234,623' +xfmt4469 format 50924067078027289E99 '+44,.48f' -> '+50,924,067,078,027,289,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000' +xfmt4470 format -29614594837357481E295 '-067.74n' -> '-00000000000000000000000000000000000000000002.9614594837357481e+311' +xfmt4471 format 18473517015284019672589023972E0 ' .8' -> ' 1.8473517E+28' +xfmt4472 format -24064210476806208819348433435e0 '\xee\xab\xb3=97.71' -> '-\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb3\xee\xab\xb324064210476806208819348433435' +xfmt4473 format 58638120146317707329459522268e190 '\xe9\x89\xa8<80,G' -> '5.8638120146317707329459522268E+218\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8\xe9\x89\xa8' +xfmt4474 format -28734795833548517046014144421e383 '\xe5\x9a\xa5> 50,.69F' -> '-2,873,479,583,354,851,704,601,414,442,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4475 format 4389064512885886332399365391274606845E0 '045,e' -> '0,004.389064512885886332399365391274606845e+36' +xfmt4476 format -3461733151476277840250848270031048313E0 '\xef\x8a\xa0>-,F' -> '-3,461,733,151,476,277,840,250,848,270,031,048,313' +xfmt4477 format 5086746856957693907236884851484822517E73 '0f' -> '50867468569576939072368848514848225170000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4478 format -5824032043657568745053975293986620122E144 ' ' -> '-5.824032043657568745053975293986620122E+180' +xfmt4479 format 5423645979439820080639553295875E0 '0,F' -> '5,423,645,979,439,820,080,639,553,295,875' +xfmt4480 format -2671947179311819862501006528504E0 '\xe8\xbe\xa9<-,.82E' -> '-2.6719471793118198625010065285040000000000000000000000000000000000000000000000000000E+30' +xfmt4481 format 1047877788953335575322775199653E242 '' -> '1.047877788953335575322775199653E+272' +xfmt4482 format -8177260125003778241463597328680E166 '\xe7\xb9\xbb< 39,' -> '-8.177260125003778241463597328680E+196\xe7\xb9\xbb' +xfmt4483 format 358334E0 '\xe1\xa8\x81^83,.96' -> '\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81358,334\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81\xe1\xa8\x81' +xfmt4484 format -236122E0 '\xeb\xab\xa7=-66,.81E' -> '-2.361220000000000000000000000000000000000000000000000000000000000000000000000000000E+5' +xfmt4485 format 944951E9 ',.35' -> '9.44951E+14' +xfmt4486 format -393882e138 '\xe8\x8c\xac=.52g' -> '-3.93882e+143' +xfmt4487 format 48190244244063689923675377390002232495747E0 '013,' -> '48,190,244,244,063,689,923,675,377,390,002,232,495,747' +xfmt4488 format -48567911315964636564336901660357930913465E0 '\xec\xa6\x8d<-,.83G' -> '-48,567,911,315,964,636,564,336,901,660,357,930,913,465' +xfmt4489 format 19249875784447863585791622525331998848474E7 '\xe3\x88\xa7= 14,.61%' -> ' 19,249,875,784,447,863,585,791,622,525,331,998,848,474,000,000,000.0000000000000000000000000000000000000000000000000000000000000%' +xfmt4490 format -27718766847233056543184320427094015037660E229 '87.2' -> ' -2.8E+269' +xfmt4491 format 1449234124338115E0 '\xea\xac\x96> 4,.69' -> ' 1,449,234,124,338,115' +xfmt4492 format -1127808177172409e0 '\xe3\xa8\x8f<-,%' -> '-112,780,817,717,240,900%' +xfmt4493 format 9955513902551647e138 '\xe1\xae\xbd>g' -> '9.955513902551647e+153' +xfmt4494 format -1646123664421038e374 'E' -> '-1.646123664421038E+389' +xfmt4495 format 440537267943E0 '\xe0\xb5\x90^,' -> '440,537,267,943' +xfmt4496 format -332871143698E0 '0%' -> '-33287114369800%' +xfmt4497 format 568495719300E283 '\xe9\x91\xa0=32.84F' -> '5684957193000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4498 format -585946427601E95 '\xeb\x8d\x92> 43F' -> '-58594642760100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4499 format 251792591359028260547345988920656E0 '-90.81g' -> ' 251792591359028260547345988920656' +xfmt4500 format -789601792682818565412131054693565e0 '' -> '-789601792682818565412131054693565' +xfmt4501 format 925162543963534241085238293890832e160 '' -> '9.25162543963534241085238293890832E+192' +xfmt4502 format -222577174225597424997165472835240e375 '\xe2\x8d\xa2<+86,.87%' -> '-22,257,717,422,559,742,499,716,547,283,524,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt4503 format 829564759283731e0 '50' -> ' 829564759283731' +xfmt4504 format -205491372881415E0 '\xe9\xb4\x86=' -> '-205491372881415' +xfmt4505 format 256359462769247e305 '' -> '2.56359462769247E+319' +xfmt4506 format -702543043023593E207 '' -> '-7.02543043023593E+221' +xfmt4507 format 2126915835189503951e0 '' -> '2126915835189503951' +xfmt4508 format -7205392053898132029E0 '\xe0\xba\xa3^' -> '-7205392053898132029' +xfmt4509 format 2266850865800705959e245 ' 0,' -> ' 2.266850865800705959E+263' +xfmt4510 format -9583701479157346610E21 '30n' -> ' -9.583701479157346610e+39' +xfmt4511 format 3837762442960826053657828e0 '\xe6\x87\xb2<+66,.56E' -> '+3.83776244296082605365782800000000000000000000000000000000E+24\xe6\x87\xb2\xe6\x87\xb2\xe6\x87\xb2' +xfmt4512 format -7022938941977590742217823e0 '-,' -> '-7,022,938,941,977,590,742,217,823' +xfmt4513 format 2985948775535241548906722E368 '\xeb\xbf\x96=+26.49f' -> '+298594877553524154890672200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000' +xfmt4514 format -8345583263429006255857167E244 '\xe9\xaf\xb3< n' -> '-8.345583263429006255857167e+268' +xfmt4515 format 1234567890123456789.12345678901234567890 '-10,' -> '1,234,567,890,123,456,789.12345678901234567890' +xfmt4516 format -1234567890.123 '\xeb\xae\xa7<+99E' -> '-1.234567890123E+9\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7\xeb\xae\xa7' +xfmt4517 format 3E0 ',.32' -> '3' +xfmt4518 format -8E0 ',.48' -> '-8' +xfmt4519 format 8E178 '0.88' -> '8E+178' +xfmt4520 format -1E30 '' -> '-1E+30' +xfmt4521 format 9667589235284e0 '\xe4\xa2\x87= 29,.99F' -> ' 9,667,589,235,284.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4522 format -3542811780889E0 '\xef\xa1\xae^-,.41' -> '-3,542,811,780,889' +xfmt4523 format 4234336803193E341 'F' -> '423433680319300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4524 format -4916540960659E216 '\xe2\x89\xb8^78.40n' -> '\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8-4.916540960659e+228\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8\xe2\x89\xb8' +xfmt4525 format 1240935052678584300407804659070338e0 '.39G' -> '1240935052678584300407804659070338' +xfmt4526 format -3186458599449165850407300340962138E0 '' -> '-3186458599449165850407300340962138' +xfmt4527 format 6140249396444156410026326706305231e228 '\xef\xb9\xbb= G' -> ' 6.140249396444156410026326706305231E+261' +xfmt4528 format -2126295368204398971345538744170620e221 '\xe3\x81\x9e=+37,.93%' -> '-21,262,953,682,043,989,713,455,387,441,706,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt4529 format 143923467351027488919663595E0 '91,.76f' -> '143,923,467,351,027,488,919,663,595.0000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4530 format -163619846624039153942004492e0 '\xe5\x9c\x8a^,.91e' -> '-1.6361984662403915394200449200000000000000000000000000000000000000000000000000000000000000000e+26' +xfmt4531 format 345907751566775136796508193E160 '+054,.41g' -> '+0,000,000,000,000,003.45907751566775136796508193e+186' +xfmt4532 format -306675655109598473401042699E270 '' -> '-3.06675655109598473401042699E+296' +xfmt4533 format 472016611E0 '\xe5\x8f\xa9^-35,.49%' -> '47,201,661,100.0000000000000000000000000000000000000000000000000%' +xfmt4534 format -319581388E0 '\xe5\xa6\xbd<+' -> '-319581388' +xfmt4535 format 867855947e294 '\xe1\x9b\x95^-' -> '8.67855947E+302' +xfmt4536 format -121296884E248 ' ,F' -> '-12,129,688,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt4537 format 84e0 '\xe8\x9f\x99>,.52f' -> '84.0000000000000000000000000000000000000000000000000000' +xfmt4538 format -16e0 '' -> '-16' +xfmt4539 format 26E219 '\xe1\xac\xa4>+71,.10e' -> '\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4\xe1\xac\xa4+2.6000000000e+220' +xfmt4540 format -45e328 '\xe9\x9f\x90=+40,.63F' -> '-450,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000' +xfmt4541 format 2699389304136926608852320e0 '' -> '2699389304136926608852320' +xfmt4542 format -8101305576277992147265600e0 ',' -> '-8,101,305,576,277,992,147,265,600' +xfmt4543 format 4779334510810640591634253e379 '\xe5\x93\x9f^-72' -> '\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f4.779334510810640591634253E+403\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f\xe5\x93\x9f' +xfmt4544 format -9991998031283300177337355E140 '\xee\xbd\xb4<+,.83E' -> '-9.99199803128330017733735500000000000000000000000000000000000000000000000000000000000E+164' +xfmt4545 format 53872336912E0 '\xeb\xb5\xaa^ ,.54E' -> ' 5.387233691200000000000000000000000000000000000000000000E+10' +xfmt4546 format -51405826012e0 '\xee\xbf\x87>.30' -> '-51405826012' +xfmt4547 format 13955449912e126 '\xe9\x92\x8c^+34,.56' -> '\xe9\x92\x8c\xe9\x92\x8c\xe9\x92\x8c\xe9\x92\x8c\xe9\x92\x8c\xe9\x92\x8c\xe9\x92\x8c\xe9\x92\x8c+1.3955449912E+136\xe9\x92\x8c\xe9\x92\x8c\xe9\x92\x8c\xe9\x92\x8c\xe9\x92\x8c\xe9\x92\x8c\xe9\x92\x8c\xe9\x92\x8c' +xfmt4548 format -69208249506e344 '\xe0\xa8\x91<' -> '-6.9208249506E+354' +xfmt4549 format 42629815699206187009659507012E0 '' -> '42629815699206187009659507012' +xfmt4550 format -97503570011287214872532605270E0 '38' -> ' -97503570011287214872532605270' +xfmt4551 format 91811860685472014923455044565e275 '\xe9\xb1\x93>,.12E' -> '9.181186068547E+303' +xfmt4552 format -81144095715250145703590713266e219 '\xe3\x80\x9c=-22,.26%' -> '-8,114,409,571,525,014,570,359,071,326,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000%' +xfmt4553 format 6006158006083730779554350967249274692179e0 '' -> '6006158006083730779554350967249274692179' +xfmt4554 format -9042402788826679704157802258581583843872e0 '95' -> ' -9042402788826679704157802258581583843872' +xfmt4555 format 5345788039841263086413359970553841111594E368 '18' -> '5.345788039841263086413359970553841111594E+407' +xfmt4556 format -3051446213510638461047296282190252248417E92 ' 0.28' -> '-3.051446213510638461047296282E+131' +xfmt4557 format 88710012294479041896658325563745076942E0 '-062,' -> '00,000,000,088,710,012,294,479,041,896,658,325,563,745,076,942' +xfmt4558 format -29307366616212799252203377249496243763E0 '\xe2\x91\x99=88' -> '-\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x99\xe2\x91\x9929307366616212799252203377249496243763' +xfmt4559 format 50174816352363886358041630388885880048e356 '' -> '5.0174816352363886358041630388885880048E+393' +xfmt4560 format -66927834360024848862201775159014723591e318 '\xdb\xa2<23,.3e' -> '-6.693e+355\xdb\xa2\xdb\xa2\xdb\xa2\xdb\xa2\xdb\xa2\xdb\xa2\xdb\xa2\xdb\xa2\xdb\xa2\xdb\xa2\xdb\xa2\xdb\xa2' +xfmt4561 format 7480319e0 '\xed\x80\x87<+60,.24F' -> '+7,480,319.000000000000000000000000\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87\xed\x80\x87' +xfmt4562 format -7369106e0 ',' -> '-7,369,106' +xfmt4563 format 1320754e225 '' -> '1.320754E+231' +xfmt4564 format -6551454e380 '\xed\x96\x85=-,.92g' -> '-6.551454e+386' +xfmt4565 format 6985591865521265279268904509625e0 '' -> '6985591865521265279268904509625' +xfmt4566 format -5114006369789697886455808780305e0 '\xed\x85\x84>-' -> '-5114006369789697886455808780305' +xfmt4567 format 9271886692957179448749594072686E372 '084.72' -> '000000000000000000000000000000000000000000000009.271886692957179448749594072686E+402' +xfmt4568 format -7963908947127007186621314348896e244 '\xe4\x85\x9e= 41,' -> '-\xe4\x85\x9e\xe4\x85\x9e\xe4\x85\x9e7.963908947127007186621314348896E+274' +xfmt4569 format 296E0 '\xed\x96\x8a<.99' -> '296' +xfmt4570 format -815E0 '\xe5\xb3\x84^10,e' -> '\xe5\xb3\x84-8.15e+2\xe5\xb3\x84' +xfmt4571 format 885e383 '' -> '8.85E+385' +xfmt4572 format -640e312 '\xd7\xaa> ,.30e' -> '-6.400000000000000000000000000000e+314' +xfmt4573 format 1257469147542932548607936351E0 '\xe2\xa5\xb2< 81,.69G' -> ' 1,257,469,147,542,932,548,607,936,351\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2\xe2\xa5\xb2' +xfmt4574 format -7494412776924603810680148967e0 '\xe1\xb4\x86<+91,.23E' -> '-7.49441277692460381068015E+27\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86\xe1\xb4\x86' +xfmt4575 format 5797677583464584283110605951E141 '\xef\x86\xab^ 86,.8g' -> '\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab 5.7976776e+168\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab\xef\x86\xab' +xfmt4576 format -2231286123370557266227327168e269 '-,g' -> '-2.231286123370557266227327168e+296' +xfmt4577 format 951070403524663878877816903063807897864437E0 '\xec\xa2\xbc<+,e' -> '+9.51070403524663878877816903063807897864437e+41' +xfmt4578 format -596429444111551214136047648350009757489738E0 '-079.5' -> '-000000000000000000000000000000000000000000000000000000000000000000005.9643E+41' +xfmt4579 format 389981752597685985415661778261031917007065e297 '' -> '3.89981752597685985415661778261031917007065E+338' +xfmt4580 format -389012425966985394472339048246652998516479e306 '087,G' -> '-000,000,000,000,000,000,000,000,000,003.89012425966985394472339048246652998516479E+347' +xfmt4581 format 45259486023152036756861816838757664E0 '\xeb\x9e\xad= 6,.80g' -> ' 45,259,486,023,152,036,756,861,816,838,757,664' +xfmt4582 format -35618595760741928749388550231331630E0 '\xe1\xb7\xb2>+58,.57g' -> '\xe1\xb7\xb2\xe1\xb7\xb2\xe1\xb7\xb2\xe1\xb7\xb2\xe1\xb7\xb2\xe1\xb7\xb2\xe1\xb7\xb2\xe1\xb7\xb2\xe1\xb7\xb2\xe1\xb7\xb2\xe1\xb7\xb2-35,618,595,760,741,928,749,388,550,231,331,630' +xfmt4583 format 45755011337366977208070714379164447E352 '' -> '4.5755011337366977208070714379164447E+386' +xfmt4584 format -95990022414490237339304783575632866e42 ',.74' -> '-9.5990022414490237339304783575632866E+76' +xfmt4585 format 66643532648987e0 '\xef\xad\xbe^+40.46' -> '\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe+66643532648987\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe\xef\xad\xbe' +xfmt4586 format -22518465800759E0 '' -> '-22518465800759' +xfmt4587 format 15347393215072E380 '\xee\xbf\xa4=-52,.5e' -> '\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa4\xee\xbf\xa41.53474e+393' +xfmt4588 format -38373401584596E96 '' -> '-3.8373401584596E+109' +xfmt4589 format 37087823807389431104028195741900269896295e0 ' ' -> ' 37087823807389431104028195741900269896295' +xfmt4590 format -30725126065478733859116516028820240409803e0 '0,' -> '-30,725,126,065,478,733,859,116,516,028,820,240,409,803' +xfmt4591 format 26044993210620059241851689853460979928639e193 '\xea\xa1\xb9<+.17g' -> '+2.6044993210620059e+233' +xfmt4592 format -72681803149966824433130063469891908504966E246 '+82,.81E' -> '-7.268180314996682443313006346989190850496600000000000000000000000000000000000000000E+286' +xfmt4593 format 9940932634600264576027e0 '-58,F' -> ' 9,940,932,634,600,264,576,027' +xfmt4594 format -3365159258183376498132e0 '\xe8\x9d\x91>' -> '-3365159258183376498132' +xfmt4595 format 2294653493777153196513e57 '\xe8\x89\x9b<-33,%' -> '229,465,349,377,715,319,651,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt4596 format -2522175411833584019301E188 ' 084' -> '-00000000000000000000000000000000000000000000000000000002.522175411833584019301E+209' +xfmt4597 format 4632859222400384979045243997775347459e0 ',' -> '4,632,859,222,400,384,979,045,243,997,775,347,459' +xfmt4598 format -2370203073780293524080339767424313912E0 '\xec\xba\xb8>-90,g' -> '\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8\xec\xba\xb8-2,370,203,073,780,293,524,080,339,767,424,313,912' +xfmt4599 format 2197484664145519136367342001072922310e31 '\xe4\xbb\xab<14,.68E' -> '2.19748466414551913636734200107292231000000000000000000000000000000000E+67' +xfmt4600 format -2417893831992124971618242365049349724E350 '\xe2\xbe\x9d<+14,.61g' -> '-2.417893831992124971618242365049349724e+386' +xfmt4601 format 463689739955188E0 '\xe2\xaf\x84=76.36G' -> '\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84\xe2\xaf\x84463689739955188' +xfmt4602 format -128002509387380e0 '72' -> ' -128002509387380' +xfmt4603 format 613565879214435e118 '' -> '6.13565879214435E+132' +xfmt4604 format -115839151645455e252 '+,' -> '-1.15839151645455E+266' +xfmt4605 format 8455334568e0 '-.34' -> '8455334568' +xfmt4606 format -8516746695E0 '\xeb\x80\x9e^+53,.87E' -> '-8.516746695000000000000000000000000000000000000000000000000000000000000000000000000000000E+9' +xfmt4607 format 8820009657E45 '\xee\xb3\x8c< 35,.36%' -> ' 882,000,965,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000%' +xfmt4608 format -1367486005E113 '\xeb\x91\x85^-25,.99E' -> '-1.367486005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E+122' +xfmt4609 format 79833765819870818531E0 '63F' -> ' 79833765819870818531' +xfmt4610 format -64183357467873419056e0 '\xe8\xaf\xbf^+.34n' -> '-64183357467873419056' +xfmt4611 format 85694124802816459585e170 '' -> '8.5694124802816459585E+189' +xfmt4612 format -27629605998724443066E60 '0G' -> '-2.7629605998724443066E+79' +xfmt4613 format 602760539310173976752940e0 '\xe4\x99\xb9>65,.26' -> '\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9\xe4\x99\xb9602,760,539,310,173,976,752,940' +xfmt4614 format -262252672371618634536806e0 '' -> '-262252672371618634536806' +xfmt4615 format 942999884432894097694555E108 '' -> '9.42999884432894097694555E+131' +xfmt4616 format -732952291495388554877100e125 '\xe5\xbe\xac= 5,.23G' -> '-7.3295229149538855487710E+148' +xfmt4617 format 7180902262540495320E0 '.90' -> '7180902262540495320' +xfmt4618 format -3073699921138330654E0 '.15%' -> '-307369992113833065400.000000000000000%' +xfmt4619 format 2277056740921128814e267 '\xe5\xb8\x93=+30,.8' -> '+\xe5\xb8\x93\xe5\xb8\x93\xe5\xb8\x93\xe5\xb8\x93\xe5\xb8\x93\xe5\xb8\x93\xe5\xb8\x93\xe5\xb8\x93\xe5\xb8\x93\xe5\xb8\x93\xe5\xb8\x93\xe5\xb8\x93\xe5\xb8\x93\xe5\xb8\x93\xe5\xb8\x932.2770567E+285' +xfmt4620 format -9039691021207325304E12 '\xec\xaa\xb6<' -> '-9.039691021207325304E+30' +xfmt4621 format 780609470978215316878696180902686226E0 '\xe2\xb8\xab>81.77' -> '\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab\xe2\xb8\xab780609470978215316878696180902686226' +xfmt4622 format -690933806963673987484796229385642729e0 '+025,.59F' -> '-690,933,806,963,673,987,484,796,229,385,642,729.00000000000000000000000000000000000000000000000000000000000' +xfmt4623 format 298082087135713645599010319887504785E283 '\xeb\x9a\xb0< ,.39' -> ' 2.98082087135713645599010319887504785E+318' +xfmt4624 format -272140665359169839905066198067104027E201 '\xeb\x88\xa2^ ,.66e' -> '-2.721406653591698399050661980671040270000000000000000000000000000000e+236' +xfmt4625 format 12714621407547797508721447900926062136960896E0 '\xe1\xb9\xb1^+55,.70g' -> '+12,714,621,407,547,797,508,721,447,900,926,062,136,960,896' +xfmt4626 format -16558669814704636329335548937828703612642471E0 '+,.72' -> '-16,558,669,814,704,636,329,335,548,937,828,703,612,642,471' +xfmt4627 format 90331596588253953117357633945682233763811986E39 '\xe0\xbb\x9b=' -> '9.0331596588253953117357633945682233763811986E+82' +xfmt4628 format -97329063375583732239039712984198629424300203E88 '' -> '-9.7329063375583732239039712984198629424300203E+131' +xfmt4629 format 842642920187309498876371178211871859150E0 '\xe4\x93\xa8<9,' -> '842,642,920,187,309,498,876,371,178,211,871,859,150' +xfmt4630 format -960810791634059770507106176023208886657e0 '\xe2\x9e\xaa=' -> '-960810791634059770507106176023208886657' +xfmt4631 format 839143703357535835153386532308239832172E206 '\xe6\xa3\x9a<.91' -> '8.39143703357535835153386532308239832172E+244' +xfmt4632 format -274125186569517781515160383531005279114E260 '' -> '-2.74125186569517781515160383531005279114E+298' +xfmt4633 format 506501568943545746998183758451e0 ' 0' -> ' 506501568943545746998183758451' +xfmt4634 format -990303631344674407582079787916E0 '057' -> '-00000000000000000000000000990303631344674407582079787916' +xfmt4635 format 657816104030941467094092177942E298 ' 0.13g' -> ' 6.578161040309e+327' +xfmt4636 format -213788756305257559001670996847E292 'e' -> '-2.13788756305257559001670996847e+321' +xfmt4637 format 1234567890123456789012.12345678 '072' -> '000000000000000000000000000000000000000001234567890123456789012.12345678' +xfmt4638 format -12345678901234567.12345678 '-0.77' -> '-12345678901234567.12345678' +xfmt4639 format 70303618168614e0 '-,.81' -> '70,303,618,168,614' +xfmt4640 format -71430795638903e0 ' ' -> '-71430795638903' +xfmt4641 format 92508222544864E223 '' -> '9.2508222544864E+236' +xfmt4642 format -91902761043631e31 '\xe9\x86\x96>,e' -> '-9.1902761043631e+44' +xfmt4643 format 9650247E0 '.44n' -> '9650247' +xfmt4644 format -6292520e0 '\xec\xac\x93^,' -> '-6,292,520' +xfmt4645 format 1055979e380 '041,.4%' -> '10,559,790,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000%' +xfmt4646 format -6495844e175 '\xee\x8c\x80=.76' -> '-6.495844E+181' +xfmt4647 format 304333014760669646668610404727067e0 '' -> '304333014760669646668610404727067' +xfmt4648 format -756886946425881723757679456026263E0 '+,' -> '-756,886,946,425,881,723,757,679,456,026,263' +xfmt4649 format 372750869381722262645245918644783e374 ' 025,.86E' -> ' 3.72750869381722262645245918644783000000000000000000000000000000000000000000000000000000E+406' +xfmt4650 format -260114058655160052000459486657194e189 '70,E' -> ' -2.60114058655160052000459486657194E+221' +xfmt4651 format 829326340582048797051718647294e0 '\xe1\xa8\x87<-,.89' -> '829,326,340,582,048,797,051,718,647,294' +xfmt4652 format -817622894941151872664479869098E0 '' -> '-817622894941151872664479869098' +xfmt4653 format 515315018480920908598511390250E300 '\xec\x9a\xa9=,' -> '5.15315018480920908598511390250E+329' +xfmt4654 format -537384102373829482562258695312e235 '0.94' -> '-5.37384102373829482562258695312E+264' +xfmt4655 format 9978556503384201794415493352708863E0 '\xe1\x94\x99>+96,.56E' -> '\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99\xe1\x94\x99+9.97855650338420179441549335270886300000000000000000000000E+33' +xfmt4656 format -5451143648630230614423226961599274e0 '\xee\x91\x95>-85F' -> '\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95\xee\x91\x95-5451143648630230614423226961599274' +xfmt4657 format 2271185571513749719732828781559694E307 '\xe4\x92\xbe=+88' -> '+\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe\xe4\x92\xbe2.271185571513749719732828781559694E+340' +xfmt4658 format -5398431456655480284497884252780886e265 '' -> '-5.398431456655480284497884252780886E+298' +xfmt4659 format 236047538926481566e0 '\xec\xb0\x85=+78,.80%' -> '+23,604,753,892,648,156,600.00000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt4660 format -559764515742427002e0 '\xe9\x88\x85<21.50n' -> '-559764515742427002\xe9\x88\x85\xe9\x88\x85' +xfmt4661 format 178203580842033459E5 '' -> '1.78203580842033459E+22' +xfmt4662 format -563952897834096274e55 '\xe3\x87\x90>' -> '-5.63952897834096274E+72' +xfmt4663 format 413291455916154700139828347287590715264968e0 '+' -> '+413291455916154700139828347287590715264968' +xfmt4664 format -988053070153592630132324050640342510731657e0 '\xe0\xa5\x9b<-45,' -> '-988,053,070,153,592,630,132,324,050,640,342,510,731,657' +xfmt4665 format 411749586497303599781072628471381633160888e70 '\xe6\x91\xa7^,.2G' -> '4.1E+111' +xfmt4666 format -422820145750688228519147124699354409451764e147 '\xe0\xa0\x90^ 65,.25g' -> '\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90-4.228201457506882285191471e+188\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90\xe0\xa0\x90' +xfmt4667 format 969301291893e0 '\xee\x9c\x83^+27,' -> '\xee\x9c\x83\xee\x9c\x83\xee\x9c\x83\xee\x9c\x83\xee\x9c\x83+969,301,291,893\xee\x9c\x83\xee\x9c\x83\xee\x9c\x83\xee\x9c\x83\xee\x9c\x83\xee\x9c\x83' +xfmt4668 format -300638061613e0 '\xea\xab\x80^1.57g' -> '-300638061613' +xfmt4669 format 718148253833E188 '+18' -> '+7.18148253833E+199' +xfmt4670 format -949412065837E48 '\xe4\x81\xa7<,.95' -> '-9.49412065837E+59' +xfmt4671 format 61345342245404776053183992876052360393e0 '91,' -> ' 61,345,342,245,404,776,053,183,992,876,052,360,393' +xfmt4672 format -10862249008208885925343121028806322275e0 '21,.91G' -> '-10,862,249,008,208,885,925,343,121,028,806,322,275' +xfmt4673 format 37056172260711203266749210089606029382E92 '' -> '3.7056172260711203266749210089606029382E+129' +xfmt4674 format -49672658484754075755442451122574970518e263 '' -> '-4.9672658484754075755442451122574970518E+300' +xfmt4675 format 6559764980E0 '\xeb\x89\x9a=+12.24F' -> '+6559764980.000000000000000000000000' +xfmt4676 format -3675356675E0 '\xec\xbb\x92> 71,.25F' -> '\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92\xec\xbb\x92-3,675,356,675.0000000000000000000000000' +xfmt4677 format 2102299453e251 '46' -> ' 2.102299453E+260' +xfmt4678 format -3109245724E309 '\xe7\xbb\x89=94,.20G' -> '-\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x89\xe7\xbb\x893.109245724E+318' +xfmt4679 format 24922659720814893759795232324338775664305606e0 '\xe9\xbe\x90^16,' -> '24,922,659,720,814,893,759,795,232,324,338,775,664,305,606' +xfmt4680 format -38967580199816681361998949869587117990817515E0 '\xee\xaa\xa9>+,.63f' -> '-38,967,580,199,816,681,361,998,949,869,587,117,990,817,515.000000000000000000000000000000000000000000000000000000000000000' +xfmt4681 format 39639255600842527333472153253227801489320771E137 '\xeb\xab\x8e>-73,' -> '\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e\xeb\xab\x8e3.9639255600842527333472153253227801489320771E+180' +xfmt4682 format -56876102923570313559702976104553835118764276E42 ',' -> '-5.6876102923570313559702976104553835118764276E+85' +xfmt4683 format 922671E0 '\xe6\xb0\x87<98,.77' -> '922,671\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87\xe6\xb0\x87' +xfmt4684 format -670770e0 '\xe4\xb0\x93=59,.73g' -> '-\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93\xe4\xb0\x93670,770' +xfmt4685 format 138215e338 '\xe3\xba\xbd '1.38215E+343' +xfmt4686 format -819541E358 ',.66' -> '-8.19541E+363' +xfmt4687 format 30E0 '\xee\xaf\x9d= 6,.70f' -> ' 30.0000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4688 format -11E0 '+082G' -> '-000000000000000000000000000000000000000000000000000000000000000000000000000000011' +xfmt4689 format 50E106 '\xee\x9b\x87^-31,.38G' -> '\xee\x9b\x87\xee\x9b\x87\xee\x9b\x87\xee\x9b\x87\xee\x9b\x87\xee\x9b\x87\xee\x9b\x87\xee\x9b\x87\xee\x9b\x87\xee\x9b\x87\xee\x9b\x875.0E+107\xee\x9b\x87\xee\x9b\x87\xee\x9b\x87\xee\x9b\x87\xee\x9b\x87\xee\x9b\x87\xee\x9b\x87\xee\x9b\x87\xee\x9b\x87\xee\x9b\x87\xee\x9b\x87\xee\x9b\x87' +xfmt4690 format -31e251 '' -> '-3.1E+252' +xfmt4691 format 12126695243858960154E0 '' -> '12126695243858960154' +xfmt4692 format -55761650298437968712E0 '-062,' -> '-0,000,000,000,000,000,000,000,000,055,761,650,298,437,968,712' +xfmt4693 format 39655733871439116676e341 '\xe7\xa0\x9d^ ' -> ' 3.9655733871439116676E+360' +xfmt4694 format -73772110074976000609E366 '\xef\xa3\xaa>32f' -> '-73772110074976000609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4695 format 515743492730902125240285768381420285E0 '+77,F' -> ' +515,743,492,730,902,125,240,285,768,381,420,285' +xfmt4696 format -521017057568120037908451805536640318e0 '' -> '-521017057568120037908451805536640318' +xfmt4697 format 523904828214877978499783281434059730E235 '9' -> '5.23904828214877978499783281434059730E+270' +xfmt4698 format -664527336027791631093786822654179186E315 '\xec\xb3\xb9<+35,.21' -> '-6.64527336027791631094E+350\xec\xb3\xb9\xec\xb3\xb9\xec\xb3\xb9\xec\xb3\xb9\xec\xb3\xb9\xec\xb3\xb9\xec\xb3\xb9' +xfmt4699 format 51346E0 '\xee\xbc\x87^.59' -> '51346' +xfmt4700 format -57706E0 '' -> '-57706' +xfmt4701 format 29748E43 '\xe6\xbe\xaa^+' -> '+2.9748E+47' +xfmt4702 format -92282E136 ',' -> '-9.2282E+140' +xfmt4703 format 591538089994728990270e0 '\xeb\xae\xb3^+,.74F' -> '+591,538,089,994,728,990,270.00000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4704 format -262949965131925366651e0 '\xec\x9f\x8c^+58,f' -> '\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c-262,949,965,131,925,366,651\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c\xec\x9f\x8c' +xfmt4705 format 922733672760819679705e161 '+026,.92G' -> '+9.22733672760819679705E+181' +xfmt4706 format -722215356203337582692E283 '\xea\x92\xa6=+58,.49g' -> '-\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa6\xea\x92\xa67.22215356203337582692e+303' +xfmt4707 format 18766653315952059138564710293813863e0 '044.39' -> '00000000018766653315952059138564710293813863' +xfmt4708 format -93705034463358609727537737130564437e0 '\xef\xb6\x84>+50,.79%' -> '-9,370,503,446,335,860,972,753,773,713,056,443,700.0000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt4709 format 94171319179451731734432835399255054e330 '\xe9\x9a\xb8<5.47' -> '9.4171319179451731734432835399255054E+364' +xfmt4710 format -86903039510524548526694233087700289E379 '0,' -> '-8.6903039510524548526694233087700289E+413' +xfmt4711 format 995519439259941623374911023E0 '\xe1\xb6\xaf=-61e' -> '\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf\xe1\xb6\xaf9.95519439259941623374911023e+26' +xfmt4712 format -455002123596120201611241081E0 '\xe9\x88\x9c^+83,.54f' -> '-455,002,123,596,120,201,611,241,081.000000000000000000000000000000000000000000000000000000' +xfmt4713 format 988707741671440671809462561E334 '\xe9\x81\x96=+56,.91' -> '+\xe9\x81\x96\xe9\x81\x96\xe9\x81\x96\xe9\x81\x96\xe9\x81\x96\xe9\x81\x96\xe9\x81\x96\xe9\x81\x96\xe9\x81\x96\xe9\x81\x96\xe9\x81\x96\xe9\x81\x96\xe9\x81\x96\xe9\x81\x96\xe9\x81\x96\xe9\x81\x96\xe9\x81\x96\xe9\x81\x96\xe9\x81\x96\xe9\x81\x96\xe9\x81\x96\xe9\x81\x969.88707741671440671809462561E+360' +xfmt4714 format -604743166444151644162948879E138 '28,' -> '-6.04743166444151644162948879E+164' +xfmt4715 format 62101983803446644e0 '62.35' -> ' 62101983803446644' +xfmt4716 format -96858921669894350E0 ' ' -> '-96858921669894350' +xfmt4717 format 40655290023143208E232 '0,F' -> '406,552,900,231,432,080,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt4718 format -41902585981965040E97 '%' -> '-41902585981965040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt4719 format 0E0 '\xeb\x84\xa1< 39' -> ' 0\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1\xeb\x84\xa1' +xfmt4720 format 0E0 '\xeb\x81\x9b<84,.98g' -> '0\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b\xeb\x81\x9b' +xfmt4721 format 0e43 '\xeb\xbb\xa0<+68,.67G' -> '+0E+43\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0\xeb\xbb\xa0' +xfmt4722 format 0E381 '' -> '0E+381' +xfmt4723 format 69215931613688915884679e0 ' .82G' -> ' 69215931613688915884679' +xfmt4724 format -72713783452190298668843e0 '\xe3\xbf\xa1^,' -> '-72,713,783,452,190,298,668,843' +xfmt4725 format 75276224911353790316834E337 '+076,.53g' -> '+000,000,000,000,000,000,000,000,000,000,000,007.5276224911353790316834e+359' +xfmt4726 format -79405198087357277599751e125 '-6%' -> '-794051980873572775997510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt4727 format 2418E0 '+094,%' -> '+0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,241,800%' +xfmt4728 format -2936e0 ',.11' -> '-2,936' +xfmt4729 format 8850E344 ',.1' -> '9E+347' +xfmt4730 format -8319e292 '0.86' -> '-8.319E+295' +xfmt4731 format 2594972328538351e0 '-021.96g' -> '000002594972328538351' +xfmt4732 format -8888332601676881E0 '\xeb\xbc\xa9^-,G' -> '-8,888,332,601,676,881' +xfmt4733 format 6184643643911056e24 ',.34F' -> '6,184,643,643,911,056,000,000,000,000,000,000,000,000.0000000000000000000000000000000000' +xfmt4734 format -9459074343237368e382 '-' -> '-9.459074343237368E+397' +xfmt4735 format 610073334e0 '\xe2\x93\x9f>84,.23' -> '\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f\xe2\x93\x9f610,073,334' +xfmt4736 format -968730758e0 '\xe4\x89\xb3<-22,.59f' -> '-968,730,758.00000000000000000000000000000000000000000000000000000000000' +xfmt4737 format 969780563E46 '\xef\x90\xae^-68,.59f' -> '9,697,805,630,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000' +xfmt4738 format -468139950E250 ',' -> '-4.68139950E+258' +xfmt4739 format 2504000543301336662419097703169382841e0 '\xea\xaa\xa1= ,.95g' -> ' 2,504,000,543,301,336,662,419,097,703,169,382,841' +xfmt4740 format -8986086155050815183429158141860303709E0 '4,.66' -> '-8,986,086,155,050,815,183,429,158,141,860,303,709' +xfmt4741 format 5312115375218509468603323275496904331e315 '\xe8\x82\xac=' -> '5.312115375218509468603323275496904331E+351' +xfmt4742 format -5631707565735567174254402131662238777e230 '' -> '-5.631707565735567174254402131662238777E+266' +xfmt4743 format 90405418136658788372558551E0 '\xe3\x9c\xbd<+40F' -> '+90405418136658788372558551\xe3\x9c\xbd\xe3\x9c\xbd\xe3\x9c\xbd\xe3\x9c\xbd\xe3\x9c\xbd\xe3\x9c\xbd\xe3\x9c\xbd\xe3\x9c\xbd\xe3\x9c\xbd\xe3\x9c\xbd\xe3\x9c\xbd\xe3\x9c\xbd\xe3\x9c\xbd' +xfmt4744 format -16635321214839116473764950E0 '\xe0\xbb\x95<-.82E' -> '-1.6635321214839116473764950000000000000000000000000000000000000000000000000000000000E+25' +xfmt4745 format 18180888321975060232494834e80 '095,.88G' -> '0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,001.8180888321975060232494834E+105' +xfmt4746 format -51772907241762824388112173E244 '\xed\x93\x96=1,e' -> '-5.1772907241762824388112173e+269' +xfmt4747 format 7403784192708805774704711e0 ' 57' -> ' 7403784192708805774704711' +xfmt4748 format -3429433265117058383454825E0 '05,.16E' -> '-3.4294332651170584E+24' +xfmt4749 format 5351014587675412280729057E12 '' -> '5.351014587675412280729057E+36' +xfmt4750 format -4261837672017180609203289E327 '\xe4\xb7\xa0=79' -> '-\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa0\xe4\xb7\xa04.261837672017180609203289E+351' +xfmt4751 format 42611738E0 '' -> '42611738' +xfmt4752 format -45467298E0 '%' -> '-4546729800%' +xfmt4753 format 19964953e349 'f' -> '199649530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4754 format -29463315e290 '56f' -> '-2946331500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4755 format 9893621104721009148594302839809588664242263e0 '\xd4\x99<59,.93' -> '9,893,621,104,721,009,148,594,302,839,809,588,664,242,263\xd4\x99\xd4\x99' +xfmt4756 format -6081277383767239267723279961235050845052920E0 '-91' -> ' -6081277383767239267723279961235050845052920' +xfmt4757 format 4137884404581549770259787751354920854914542e144 '+' -> '+4.137884404581549770259787751354920854914542E+186' +xfmt4758 format -1632581753204512336076729022848342905183263e89 '' -> '-1.632581753204512336076729022848342905183263E+131' +xfmt4759 format 1234567890123456.123456789 '\xe9\xa3\x86<-1,%' -> '123,456,789,012,345,612.3456789%' +xfmt4760 format -1234567890123.1234567890123456 '\xe9\x88\xba^15E' -> '-1.2345678901231234567890123456E+12' +xfmt4761 format 1037045410449253973016869436E0 '\xe1\x89\xbf>-10,.38f' -> '1,037,045,410,449,253,973,016,869,436.00000000000000000000000000000000000000' +xfmt4762 format -8106983540050960763286943755E0 '' -> '-8106983540050960763286943755' +xfmt4763 format 9270401700543236525967829072E69 '\xed\x80\x99^+48,.68f' -> '+9,270,401,700,543,236,525,967,829,072,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000' +xfmt4764 format -6995072362686708391684990724E230 '\xed\x8d\x92<.51' -> '-6.995072362686708391684990724E+257' +xfmt4765 format 0e0 '\xe9\xbc\xad^-,.84e' -> '0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+84' +xfmt4766 format 0E0 '\xec\xbb\x8d<+67,.26G' -> '+0\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d\xec\xbb\x8d' +xfmt4767 format 0E153 '\xe1\xbf\xb0<17,' -> '0E+153\xe1\xbf\xb0\xe1\xbf\xb0\xe1\xbf\xb0\xe1\xbf\xb0\xe1\xbf\xb0\xe1\xbf\xb0\xe1\xbf\xb0\xe1\xbf\xb0\xe1\xbf\xb0\xe1\xbf\xb0\xe1\xbf\xb0' +xfmt4768 format 0E159 '076' -> '00000000000000000000000000000000000000000000000000000000000000000000000E+159' +xfmt4769 format 15834067734754939093593E0 '' -> '15834067734754939093593' +xfmt4770 format -46938654656553235459353E0 '87' -> ' -46938654656553235459353' +xfmt4771 format 51664759511992125543111e379 '0' -> '5.1664759511992125543111E+401' +xfmt4772 format -62728240841425047949799e324 '\xee\x8a\x96^+89,.48%' -> '-6,272,824,084,142,504,794,979,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000%' +xfmt4773 format 560033349344e0 '' -> '560033349344' +xfmt4774 format -889116793171e0 '\xe3\x94\xa9^+74,.34G' -> '\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9-889,116,793,171\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9\xe3\x94\xa9' +xfmt4775 format 225398942073e201 '\xec\x9a\x8c>-52,.5' -> '\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c\xec\x9a\x8c2.2540E+212' +xfmt4776 format -261590942688E333 '' -> '-2.61590942688E+344' +xfmt4777 format 904372151178118285278473109509303483148808E0 '-0.32' -> '9.0437215117811828527847310950930E+41' +xfmt4778 format -566433164544546025968422251087535187573807E0 ' 021,.38g' -> '-5.6643316454454602596842225108753518757e+41' +xfmt4779 format 175817966684872631260733781275277720743257e65 '\xe5\x9e\x9a^-74e' -> '\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a1.75817966684872631260733781275277720743257e+106\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a' +xfmt4780 format -739723792738714871958359131789184021523312E198 '\xe1\x87\x90>,.93' -> '-7.39723792738714871958359131789184021523312E+239' +xfmt4781 format 60e0 '' -> '60' +xfmt4782 format -52E0 '-0,F' -> '-52' +xfmt4783 format 12e89 '21' -> ' 1.2E+90' +xfmt4784 format -47E146 '\xed\x82\x80^-,.36' -> '-4.7E+147' +xfmt4785 format 79301093502E0 ' ' -> ' 79301093502' +xfmt4786 format -43079513275e0 '-41,.92' -> ' -43,079,513,275' +xfmt4787 format 15007540882E229 '\xef\xaf\xac<-95.42' -> '1.5007540882E+239\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac\xef\xaf\xac' +xfmt4788 format -11867792960E261 '' -> '-1.1867792960E+271' +xfmt4789 format 2963795e0 '\xe6\xa5\xad^+89,.80E' -> '\xe6\xa5\xad+2.96379500000000000000000000000000000000000000000000000000000000000000000000000000E+6\xe6\xa5\xad\xe6\xa5\xad' +xfmt4790 format -1497211E0 '\xe6\x8e\x94= 56,.38f' -> '-\xe6\x8e\x94\xe6\x8e\x94\xe6\x8e\x94\xe6\x8e\x94\xe6\x8e\x94\xe6\x8e\x94\xe6\x8e\x941,497,211.00000000000000000000000000000000000000' +xfmt4791 format 9093348E116 '-82.19G' -> ' 9.093348E+122' +xfmt4792 format -9757145E323 '+,' -> '-9.757145E+329' +xfmt4793 format 480041949284827069379201434530095226526E0 '60.53' -> ' 480041949284827069379201434530095226526' +xfmt4794 format -908193072103862661776716500946522967103E0 '\xe8\xa8\x81=66,.92' -> '-\xe8\xa8\x81\xe8\xa8\x81\xe8\xa8\x81\xe8\xa8\x81\xe8\xa8\x81\xe8\xa8\x81\xe8\xa8\x81\xe8\xa8\x81\xe8\xa8\x81\xe8\xa8\x81\xe8\xa8\x81\xe8\xa8\x81\xe8\xa8\x81\xe8\xa8\x81908,193,072,103,862,661,776,716,500,946,522,967,103' +xfmt4795 format 656499804449261923163631803909127164671E325 '\xe6\x85\x91= 79.38G' -> ' \xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x91\xe6\x85\x916.5649980444926192316363180390912716467E+363' +xfmt4796 format -930149612200971510485794949400834987641e151 '\xe3\x8b\x96^ .12f' -> '-9301496122009715104857949494008349876410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000' +xfmt4797 format 48702e0 '' -> '48702' +xfmt4798 format -94062e0 '10' -> ' -94062' +xfmt4799 format 36452e348 ',' -> '3.6452E+352' +xfmt4800 format -19386e140 '\xee\xb4\x89<' -> '-1.9386E+144' +xfmt4801 format 6948927483E0 '' -> '6948927483' +xfmt4802 format -8609077656e0 ',' -> '-8,609,077,656' +xfmt4803 format 1634591099E212 '' -> '1.634591099E+221' +xfmt4804 format -9298731370E319 '\xee\xb0\x9c> 11,.98G' -> '-9.298731370E+328' +xfmt4805 format 2945199525095464625480e0 '' -> '2945199525095464625480' +xfmt4806 format -2910907390513683631163e0 '54' -> ' -2910907390513683631163' +xfmt4807 format 7581771066280357504527E290 '\xe4\xbf\xaf>98.73e' -> '\xe4\xbf\xaf\xe4\xbf\xaf\xe4\xbf\xaf\xe4\xbf\xaf\xe4\xbf\xaf\xe4\xbf\xaf\xe4\xbf\xaf\xe4\xbf\xaf\xe4\xbf\xaf\xe4\xbf\xaf\xe4\xbf\xaf\xe4\xbf\xaf\xe4\xbf\xaf\xe4\xbf\xaf\xe4\xbf\xaf\xe4\xbf\xaf\xe4\xbf\xaf\xe4\xbf\xaf7.5817710662803575045270000000000000000000000000000000000000000000000000000e+311' +xfmt4808 format -6645521516228871647343e10 ' 0,' -> '-6.645521516228871647343E+31' +xfmt4809 format 706230142e0 '\xe3\x84\xaf=.8' -> '7.0623014E+8' +xfmt4810 format -752319768E0 '\xe7\xab\x85<' -> '-752319768' +xfmt4811 format 948413318e2 '\xe0\xb5\xa4>+48' -> '\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4\xe0\xb5\xa4+9.48413318E+10' +xfmt4812 format -208119743E303 '\xe2\x96\x82<+4,.59%' -> '-20,811,974,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000%' +xfmt4813 format 517e0 '.53' -> '517' +xfmt4814 format -994E0 '088,E' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,009.94E+2' +xfmt4815 format 187e370 ' ,.11' -> ' 1.87E+372' +xfmt4816 format -503E355 '' -> '-5.03E+357' +xfmt4817 format 5785965901405105430299815280593E0 '\xe4\x9c\x87= ,e' -> ' 5.785965901405105430299815280593e+30' +xfmt4818 format -7971599448477293930638218983305e0 '12G' -> '-7971599448477293930638218983305' +xfmt4819 format 7584683013679489903713423744540e266 '\xec\xb8\x8a<+11.46G' -> '+7.584683013679489903713423744540E+296' +xfmt4820 format -3989804412253933336352372283168E24 '\xe9\x9d\xab=+61,.15E' -> '-\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab\xe9\x9d\xab3.989804412253933E+54' +xfmt4821 format 888969841413592519365403653905E0 '\xee\xad\xaa^47,.27G' -> '\xee\xad\xaa\xee\xad\xaa\xee\xad\xaa\xee\xad\xaa\xee\xad\xaa\xee\xad\xaa\xee\xad\xaa8.88969841413592519365403654E+29\xee\xad\xaa\xee\xad\xaa\xee\xad\xaa\xee\xad\xaa\xee\xad\xaa\xee\xad\xaa\xee\xad\xaa\xee\xad\xaa' +xfmt4822 format -859239299183913059271491400053e0 '\xeb\xbf\x9b< 61,.53F' -> '-859,239,299,183,913,059,271,491,400,053.00000000000000000000000000000000000000000000000000000' +xfmt4823 format 845998163898914536652555443713E191 '-' -> '8.45998163898914536652555443713E+220' +xfmt4824 format -277186628361932025903968969420e226 '46f' -> '-2771866283619320259039689694200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4825 format 980558103929149504491145551563841E0 '\xe5\x9f\x91>29,E' -> '9.80558103929149504491145551563841E+32' +xfmt4826 format -316548666477853644986031037101085e0 '\xec\x83\x80^1%' -> '-31654866647785364498603103710108500%' +xfmt4827 format 362149628612377511248977289840459e196 '\xe7\xae\x8b<-93,.74e' -> '3.62149628612377511248977289840459000000000000000000000000000000000000000000e+228\xe7\xae\x8b\xe7\xae\x8b\xe7\xae\x8b\xe7\xae\x8b\xe7\xae\x8b\xe7\xae\x8b\xe7\xae\x8b\xe7\xae\x8b\xe7\xae\x8b\xe7\xae\x8b\xe7\xae\x8b\xe7\xae\x8b' +xfmt4828 format -437912231667345580613723148329205E285 '.69' -> '-4.37912231667345580613723148329205E+317' +xfmt4829 format 3430895234809E0 '-E' -> '3.430895234809E+12' +xfmt4830 format -4845926983501E0 '\xd2\x9e=-49,E' -> '-\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e\xd2\x9e4.845926983501E+12' +xfmt4831 format 5162862324670e18 '-.39' -> '5.162862324670E+30' +xfmt4832 format -7216670034354e260 '\xe4\x80\xb3^-36,.23E' -> '\xe4\x80\xb3\xe4\x80\xb3-7.21667003435400000000000E+272\xe4\x80\xb3\xe4\x80\xb3\xe4\x80\xb3' +xfmt4833 format 7127679246179831542148198261506856733166e0 '\xe2\x9c\x95>-80' -> '\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x95\xe2\x9c\x957127679246179831542148198261506856733166' +xfmt4834 format -6538119168856476519805226367911855353515e0 '\xe9\x86\x9d=.50G' -> '-6538119168856476519805226367911855353515' +xfmt4835 format 7837283177484461250175752335649002703381e232 '0.98' -> '7.837283177484461250175752335649002703381E+271' +xfmt4836 format -7123947269634585680497484717127755026195E365 '\xeb\xbd\xa0< 57.40F' -> '-712394726963458568049748471712775502619500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000' +xfmt4837 format 457590920718738834434932394678762365E0 '' -> '457590920718738834434932394678762365' +xfmt4838 format -199971105046679311843431456692528824e0 '\xeb\xb4\xaa^ 80,.63e' -> '\xeb\xb4\xaa\xeb\xb4\xaa\xeb\xb4\xaa\xeb\xb4\xaa\xeb\xb4\xaa-1.999711050466793118434314566925288240000000000000000000000000000e+35\xeb\xb4\xaa\xeb\xb4\xaa\xeb\xb4\xaa\xeb\xb4\xaa\xeb\xb4\xaa' +xfmt4839 format 621318039216338689376666965564928238e267 '\xef\xbd\xa8<+39,.53%' -> '+62,131,803,921,633,868,937,666,696,556,492,823,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000%' +xfmt4840 format -694073593209113545469598970930238802e192 '\xe9\x83\x9e^,' -> '-6.94073593209113545469598970930238802E+227' +xfmt4841 format 34965130931938173588896548662396013595081E0 '' -> '34965130931938173588896548662396013595081' +xfmt4842 format -49030786829363203523608672111671741805320E0 '073.5' -> '-000000000000000000000000000000000000000000000000000000000000004.9031E+40' +xfmt4843 format 77847797158817549113388435779230163346549E329 '\xe1\xaa\xac<13' -> '7.7847797158817549113388435779230163346549E+369' +xfmt4844 format -21382371060400533662841248912671076037272e84 '\xe6\xbc\xa9>+88,.19e' -> '\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9\xe6\xbc\xa9-2.1382371060400533663e+124' +xfmt4845 format 1148995370020684091263454050782378E0 '\xe1\xa2\xb5^-74,f' -> '\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb51,148,995,370,020,684,091,263,454,050,782,378\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5\xe1\xa2\xb5' +xfmt4846 format -4925783403106571842227205962088638E0 '' -> '-4925783403106571842227205962088638' +xfmt4847 format 8328181381544969082068945978979506e169 '\xe4\xa4\x86^18,.37G' -> '8.328181381544969082068945978979506E+202' +xfmt4848 format -2239452430539244411938441844049325E126 '.98F' -> '-2239452430539244411938441844049325000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4849 format 74732052942768E0 '.69' -> '74732052942768' +xfmt4850 format -62756884842850E0 '.8' -> '-6.2756885E+13' +xfmt4851 format 24008583220384E43 '68' -> ' 2.4008583220384E+56' +xfmt4852 format -35104842843615E274 '\xec\x93\x87=-53,.23%' -> '-35,104,842,843,615,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000%' +xfmt4853 format 79673893713314293359868524278851544589E0 '\xea\x8b\x98^ ,' -> ' 79,673,893,713,314,293,359,868,524,278,851,544,589' +xfmt4854 format -74283439963582554569529130193672909188E0 '-,.59e' -> '-7.42834399635825545695291301936729091880000000000000000000000e+37' +xfmt4855 format 54085938128788487565802305940361209252e199 '\xed\x80\xa1> 89,.15F' -> ' 540,859,381,287,884,875,658,023,059,403,612,092,520,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000' +xfmt4856 format -34564587734099895538952416553034138773e17 '\xed\x9d\x98=+89.79E' -> '-\xed\x9d\x98\xed\x9d\x98\xed\x9d\x983.4564587734099895538952416553034138773000000000000000000000000000000000000000000E+54' +xfmt4857 format 8375e0 '\xec\x90\xb6=+.94' -> '+8375' +xfmt4858 format -5909e0 '' -> '-5909' +xfmt4859 format 3582e160 '\xe7\x96\x81^+84,.11%' -> '+3,582,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000%' +xfmt4860 format -8872E46 '' -> '-8.872E+49' +xfmt4861 format 66975526504624061548640704009335E0 '+063,.35g' -> '+00,000,000,000,000,066,975,526,504,624,061,548,640,704,009,335' +xfmt4862 format -99369626060172896137263714574518e0 '0.57g' -> '-99369626060172896137263714574518' +xfmt4863 format 37511163877564861295104230621557E10 '-079,' -> '000,000,000,000,000,000,000,000,000,000,003.7511163877564861295104230621557E+41' +xfmt4864 format -84484794327948030979716041467939E196 '\xe2\x85\xa2^ 68,.60f' -> '-844,847,943,279,480,309,797,160,414,679,390,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000' +xfmt4865 format 19546970900566451E0 ' .13' -> ' 1.954697090057E+16' +xfmt4866 format -69836376868587244e0 ',g' -> '-69,836,376,868,587,244' +xfmt4867 format 84163165991974398E260 '\xe9\x8a\xab>69' -> '\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab\xe9\x8a\xab8.4163165991974398E+276' +xfmt4868 format -24595635141766795E222 '\xe6\xba\x96<.48' -> '-2.4595635141766795E+238' +xfmt4869 format 194083777500299290848E0 '\xe2\x8d\x80 '194083777500299290848' +xfmt4870 format -595700272441625164208E0 '\xed\x80\x82>,' -> '-595,700,272,441,625,164,208' +xfmt4871 format 327724101231377559742E237 '.21' -> '3.27724101231377559742E+257' +xfmt4872 format -132387175210078810108E380 '\xe7\x93\x87^' -> '-1.32387175210078810108E+400' +xfmt4873 format 300497394667839101040136810E0 '\xeb\x83\x95= 5.18' -> ' 3.00497394667839101E+26' +xfmt4874 format -436559803088049531770100444e0 '\xe2\xa9\x8a^ 78,.58F' -> '-436,559,803,088,049,531,770,100,444.0000000000000000000000000000000000000000000000000000000000' +xfmt4875 format 237615118301046621319855612e68 '\xe4\xbb\xa9<' -> '2.37615118301046621319855612E+94' +xfmt4876 format -165112915888927207740415841E379 '' -> '-1.65112915888927207740415841E+405' +xfmt4877 format 91434862511395041590844231e0 '\xe1\x99\xb8=-33.94g' -> '\xe1\x99\xb8\xe1\x99\xb8\xe1\x99\xb8\xe1\x99\xb8\xe1\x99\xb8\xe1\x99\xb8\xe1\x99\xb891434862511395041590844231' +xfmt4878 format -58114110543237763715981359E0 ' 72' -> ' -58114110543237763715981359' +xfmt4879 format 50281066557573663262225695e248 '40,f' -> '5,028,106,655,757,366,326,222,569,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt4880 format -61118019434844041087346294E359 ' 062,.12' -> '-0,000,000,000,000,000,000,000,000,000,000,006.11180194348E+384' +xfmt4881 format 123456789012345678.12345678901 '\xec\x9b\x88< ,' -> ' 123,456,789,012,345,678.12345678901' +xfmt4882 format -123456789012345678.123456789012345678901 '\xe8\xb3\x9a<-23,E' -> '-1.23456789012345678123456789012345678901E+17' +xfmt4883 format 6232509267071545416081E0 '85,.35' -> ' 6,232,509,267,071,545,416,081' +xfmt4884 format -2472088638700688916103E0 '0' -> '-2472088638700688916103' +xfmt4885 format 6484111040030443285781E321 '0.70' -> '6.484111040030443285781E+342' +xfmt4886 format -6406933854999765066789e178 '' -> '-6.406933854999765066789E+199' +xfmt4887 format 857748354826298789015963158e0 '\xeb\x80\xa2^,.17' -> '8.5774835482629879E+26' +xfmt4888 format -283425874643917100916950800e0 '\xe2\x90\x9e^ ,.56f' -> '-283,425,874,643,917,100,916,950,800.00000000000000000000000000000000000000000000000000000000' +xfmt4889 format 411317848463748322901090265e27 '\xea\xaa\x84>' -> '4.11317848463748322901090265E+53' +xfmt4890 format -214326791804873910894395394E372 '\xea\x9f\xa2<-' -> '-2.14326791804873910894395394E+398' +xfmt4891 format 82994042813930544940620342091794928628482143e0 '\xe2\x9d\x9e^36f' -> '82994042813930544940620342091794928628482143' +xfmt4892 format -64159171503160418932920543763626375065515158e0 '\xef\x99\xb2<-,.84f' -> '-64,159,171,503,160,418,932,920,543,763,626,375,065,515,158.000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4893 format 96766014471466325482002953864920684118770312E185 '\xe5\xa4\xa4^ 7,.21F' -> ' 9,676,601,447,146,632,548,200,295,386,492,068,411,877,031,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000' +xfmt4894 format -49892237512392995832233491200972553727995172e129 '5,' -> '-4.9892237512392995832233491200972553727995172E+172' +xfmt4895 format 11768858274708082202245172033776221e0 '' -> '11768858274708082202245172033776221' +xfmt4896 format -88580245484282250862958412500497478e0 'E' -> '-8.8580245484282250862958412500497478E+34' +xfmt4897 format 51742285472538996754146350724231769e44 '\xe7\x93\xb6^ 75,.40' -> '\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6 5.1742285472538996754146350724231769E+78\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6\xe7\x93\xb6' +xfmt4898 format -66854569735672631289696996200342043e223 '55.88F' -> '-668545697356726312896969962003420430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4899 format 20271720E0 '\xea\x98\xbf>+.98%' -> '+2027172000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt4900 format -94399780e0 '\xe8\x97\xb4>' -> '-94399780' +xfmt4901 format 68131785e299 '\xe5\x85\x94=-45,E' -> '\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x94\xe5\x85\x946.8131785E+306' +xfmt4902 format -38961542E328 '0.26' -> '-3.8961542E+335' +xfmt4903 format 6E0 '+3,.30%' -> '+600.000000000000000000000000000000%' +xfmt4904 format -7e0 '0,F' -> '-7' +xfmt4905 format 1e80 '\xe6\xb7\xa3<-11,.11%' -> '10,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000%' +xfmt4906 format -2e337 '\xef\x96\x86<2.73g' -> '-2e+337' +xfmt4907 format 1415278797243245990202368952806393924E0 ',' -> '1,415,278,797,243,245,990,202,368,952,806,393,924' +xfmt4908 format -8447037044378513505004388025703522264e0 '0' -> '-8447037044378513505004388025703522264' +xfmt4909 format 2081452970768017333030618680162231770E348 '-,.79' -> '2.081452970768017333030618680162231770E+384' +xfmt4910 format -4689819535233084547736492376383441114E56 '\xe7\xa2\x94^+2,g' -> '-4.689819535233084547736492376383441114e+92' +xfmt4911 format 53420106944299781653E0 '\xea\xac\x8d^ 18.68G' -> ' 53420106944299781653' +xfmt4912 format -96628816843107611539E0 '' -> '-96628816843107611539' +xfmt4913 format 21457012942353370444E84 '058,.50' -> '0,000,000,000,000,000,000,000,002.1457012942353370444E+103' +xfmt4914 format -87318391796139075848e176 '' -> '-8.7318391796139075848E+195' +xfmt4915 format 1194724090132E0 '\xed\x8a\x8b^,' -> '1,194,724,090,132' +xfmt4916 format -7318713302592e0 ' 0.98' -> '-7318713302592' +xfmt4917 format 8705905739432E61 '\xea\x94\xb9>+,G' -> '+8.705905739432E+73' +xfmt4918 format -4383187162115e368 '16,.26E' -> '-4.38318716211500000000000000E+380' +xfmt4919 format 837091835729105e0 '\xe5\x95\x83^,' -> '837,091,835,729,105' +xfmt4920 format -897349376159806e0 '\xe0\xa8\xad>-64,.78g' -> '\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad\xe0\xa8\xad-897,349,376,159,806' +xfmt4921 format 566078871122331E268 '' -> '5.66078871122331E+282' +xfmt4922 format -901117827366689e200 '\xe6\xa2\xa6^ 25,G' -> '\xe6\xa2\xa6-9.01117827366689E+214\xe6\xa2\xa6\xe6\xa2\xa6' +xfmt4923 format 61436e0 '\xec\xad\xad>-70,.17' -> '\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad\xec\xad\xad61,436' +xfmt4924 format -10036e0 '\xe6\x9d\x99^+,.41e' -> '-1.00360000000000000000000000000000000000000e+4' +xfmt4925 format 20300E56 ' 096,.32' -> ' 00,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,002.0300E+60' +xfmt4926 format -62239e162 '\xe4\x98\xaa^+36,%' -> '-6,223,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt4927 format 1139528253096854070107065e0 '\xe4\x83\x96=-,.35' -> '1,139,528,253,096,854,070,107,065' +xfmt4928 format -4767465742858286418332954e0 '\xed\x97\x85>,.91g' -> '-4,767,465,742,858,286,418,332,954' +xfmt4929 format 5624972062894285621221527e268 '49,.16%' -> '5,624,972,062,894,285,621,221,527,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000%' +xfmt4930 format -2423141491749773804059108e197 '\xe7\xaa\xb5=+,.4%' -> '-24,231,414,917,497,738,040,591,080,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000%' +xfmt4931 format 1192522694561528350715599167368e0 '\xe7\x88\x82> ' -> ' 1192522694561528350715599167368' +xfmt4932 format -4198255114541163169792030916675e0 '\xe4\xab\xb0>+58,G' -> '\xe4\xab\xb0\xe4\xab\xb0\xe4\xab\xb0\xe4\xab\xb0\xe4\xab\xb0\xe4\xab\xb0\xe4\xab\xb0\xe4\xab\xb0\xe4\xab\xb0\xe4\xab\xb0\xe4\xab\xb0\xe4\xab\xb0\xe4\xab\xb0\xe4\xab\xb0\xe4\xab\xb0\xe4\xab\xb0-4,198,255,114,541,163,169,792,030,916,675' +xfmt4933 format 4957979235997951402751293844274e168 '0,.90' -> '4.957979235997951402751293844274E+198' +xfmt4934 format -2149398809349954683850668945526e375 '\xee\xb8\xb1> ,.69F' -> '-2,149,398,809,349,954,683,850,668,945,526,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4935 format 434970283298560164389e0 '' -> '434970283298560164389' +xfmt4936 format -675929942570954636731E0 '\xeb\xb4\xab<+29.70e' -> '-6.7592994257095463673100000000000000000000000000000000000000000000000000e+20' +xfmt4937 format 837794251144218870664e94 '0.59f' -> '8377942511442188706640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000' +xfmt4938 format -813909719345119793259E216 '\xe3\xb8\xa9= ,g' -> '-8.13909719345119793259e+236' +xfmt4939 format 58881641071E0 '' -> '58881641071' +xfmt4940 format -59196063780E0 '\xe3\xb4\x8c^-92,.81E' -> '\xe3\xb4\x8c\xe3\xb4\x8c-5.919606378000000000000000000000000000000000000000000000000000000000000000000000000E+10\xe3\xb4\x8c\xe3\xb4\x8c' +xfmt4941 format 97320424065E305 '\xef\xb6\xbe^-e' -> '9.7320424065e+315' +xfmt4942 format -22400272968e171 '-g' -> '-2.2400272968e+181' +xfmt4943 format 2842170027E0 '068n' -> '00000000000000000000000000000000000000000000000000000000002842170027' +xfmt4944 format -9938060783E0 '\xe6\xa5\x92>-43,.41' -> '\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92\xe6\xa5\x92-9,938,060,783' +xfmt4945 format 3256936780e246 '\xef\x97\x96^1' -> '3.256936780E+255' +xfmt4946 format -4394740665E92 '' -> '-4.394740665E+101' +xfmt4947 format 4811434604274207399310487770654531780596373e0 '\xe4\xa3\xa4<+88,.31%' -> '+481,143,460,427,420,739,931,048,777,065,453,178,059,637,300.0000000000000000000000000000000%' +xfmt4948 format -5781257567824266291196659164480550074247243e0 '\xee\x8d\xa5= 21,' -> '-5,781,257,567,824,266,291,196,659,164,480,550,074,247,243' +xfmt4949 format 2769645804437921501298862972510710100611165E354 '\xeb\xbe\xb9>-' -> '2.769645804437921501298862972510710100611165E+396' +xfmt4950 format -7333029336310576561953013243781144600528245e367 '\xeb\x92\x89^3,.59F' -> '-73,330,293,363,105,765,619,530,132,437,811,446,005,282,450,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000' +xfmt4951 format 8627e0 '\xe7\xa0\x93>+97.87f' -> '\xe7\xa0\x93\xe7\xa0\x93\xe7\xa0\x93\xe7\xa0\x93+8627.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4952 format -6073e0 '+6,' -> '-6,073' +xfmt4953 format 9936E364 '0,F' -> '99,360,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt4954 format -6339e370 '57' -> ' -6.339E+373' +xfmt4955 format 39877086041901894923566E0 '\xe5\x9d\xac<-F' -> '39877086041901894923566' +xfmt4956 format -33542237304892368509909e0 ',' -> '-33,542,237,304,892,368,509,909' +xfmt4957 format 57379465155552651488412e295 '\xef\xbe\xac^+31.22' -> '\xef\xbe\xac+5.737946515555265148841E+317\xef\xbe\xac' +xfmt4958 format -46598963486203670859041E59 '\xe5\x9e\x9a<+54,' -> '-4.6598963486203670859041E+81\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a\xe5\x9e\x9a' +xfmt4959 format 231334890679E0 '' -> '231334890679' +xfmt4960 format -951147354526E0 '50.19' -> ' -951147354526' +xfmt4961 format 953550195663e358 '021' -> '0009.53550195663E+369' +xfmt4962 format -185231773279E327 '\xe8\x88\xbb>,' -> '-1.85231773279E+338' +xfmt4963 format 2781145670157033339e0 '-094.14F' -> '0000000000000000000000000000000000000000000000000000000000002781145670157033339.00000000000000' +xfmt4964 format -9455884589713245832E0 '\xe0\xbb\x92=-51,.97' -> '-\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x92\xe0\xbb\x929,455,884,589,713,245,832' +xfmt4965 format 3598805304921593510e11 '\xee\x82\x87>77,f' -> '\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87\xee\x82\x87359,880,530,492,159,351,000,000,000,000' +xfmt4966 format -6820722463460581777E194 '\xed\x8c\xaa>-.61F' -> '-682072246346058177700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000' +xfmt4967 format 10E0 '70' -> ' 10' +xfmt4968 format -57E0 '_=95.58f' -> '-_________________________________57.0000000000000000000000000000000000000000000000000000000000' +xfmt4969 format 40E110 '+70' -> ' +4.0E+111' +xfmt4970 format -84E99 '' -> '-8.4E+100' +xfmt4971 format 6609503E0 '\xef\xa1\xa7>,' -> '6,609,503' +xfmt4972 format -9228589e0 '-065,.52G' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,009,228,589' +xfmt4973 format 2270234E140 '\xe2\x94\xa1<+2,.96%' -> '+22,702,340,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt4974 format -3351253E114 '' -> '-3.351253E+120' +xfmt4975 format 97404981937113952780083941738318681263e0 '\xeb\x8c\x8b^31' -> '97404981937113952780083941738318681263' +xfmt4976 format -67439266822977931209280806789762365745E0 '\xe8\xb0\xb8^ 75,.38G' -> '\xe8\xb0\xb8\xe8\xb0\xb8\xe8\xb0\xb8\xe8\xb0\xb8\xe8\xb0\xb8\xe8\xb0\xb8\xe8\xb0\xb8\xe8\xb0\xb8\xe8\xb0\xb8\xe8\xb0\xb8\xe8\xb0\xb8\xe8\xb0\xb8-67,439,266,822,977,931,209,280,806,789,762,365,745\xe8\xb0\xb8\xe8\xb0\xb8\xe8\xb0\xb8\xe8\xb0\xb8\xe8\xb0\xb8\xe8\xb0\xb8\xe8\xb0\xb8\xe8\xb0\xb8\xe8\xb0\xb8\xe8\xb0\xb8\xe8\xb0\xb8\xe8\xb0\xb8' +xfmt4977 format 60005276632684675783730147383088658952E259 '\xe3\x9d\xa2<70,E' -> '6.0005276632684675783730147383088658952E+296\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2\xe3\x9d\xa2' +xfmt4978 format -46195489903168163075774530022219366807e258 '\xe5\x85\xa7=-6,.79g' -> '-4.6195489903168163075774530022219366807e+295' +xfmt4979 format 603785806001509328618195905943774E0 '\xe6\xba\x8f> n' -> ' 603785806001509328618195905943774' +xfmt4980 format -112564610327781785311107755212174E0 '\xef\xb2\xab>+,' -> '-112,564,610,327,781,785,311,107,755,212,174' +xfmt4981 format 282587972010756405575243804805742e217 '\xe3\x92\xb9^-,.63%' -> '282,587,972,010,756,405,575,243,804,805,742,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000%' +xfmt4982 format -870777423542871761132893222892351E15 '.86' -> '-8.70777423542871761132893222892351E+47' +xfmt4983 format 5192705346413343e0 '\xe8\xa6\xa7> 86,.73e' -> '\xe8\xa6\xa7\xe8\xa6\xa7\xe8\xa6\xa7\xe8\xa6\xa7\xe8\xa6\xa7\xe8\xa6\xa7 5.1927053464133430000000000000000000000000000000000000000000000000000000000e+15' +xfmt4984 format -7186419610998975e0 '023.26' -> '-0000007186419610998975' +xfmt4985 format 1440395441499563e372 '\xeb\xae\xa5^+38,e' -> '\xeb\xae\xa5\xeb\xae\xa5\xeb\xae\xa5\xeb\xae\xa5\xeb\xae\xa5\xeb\xae\xa5\xeb\xae\xa5+1.440395441499563e+387\xeb\xae\xa5\xeb\xae\xa5\xeb\xae\xa5\xeb\xae\xa5\xeb\xae\xa5\xeb\xae\xa5\xeb\xae\xa5\xeb\xae\xa5' +xfmt4986 format -1990337822573769E79 '.70g' -> '-1.990337822573769e+94' +xfmt4987 format 26353315398141410191699873155E0 '\xee\x91\xbd> 89,.73%' -> ' 2,635,331,539,814,141,019,169,987,315,500.0000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt4988 format -69809537830189969362072187231E0 '\xe4\xb7\xbb=' -> '-69809537830189969362072187231' +xfmt4989 format 61918471006785380014057308569e305 '\xe3\xb9\x9a=+56,.69' -> '+\xe3\xb9\x9a\xe3\xb9\x9a\xe3\xb9\x9a\xe3\xb9\x9a\xe3\xb9\x9a\xe3\xb9\x9a\xe3\xb9\x9a\xe3\xb9\x9a\xe3\xb9\x9a\xe3\xb9\x9a\xe3\xb9\x9a\xe3\xb9\x9a\xe3\xb9\x9a\xe3\xb9\x9a\xe3\xb9\x9a\xe3\xb9\x9a\xe3\xb9\x9a\xe3\xb9\x9a\xe3\xb9\x9a\xe3\xb9\x9a6.1918471006785380014057308569E+333' +xfmt4990 format -43490441372166012875614750892E118 '\xd5\xbd< .88F' -> '-434904413721660128756147508920000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4991 format 77564660966696998912137803052864e0 '0n' -> '77564660966696998912137803052864' +xfmt4992 format -27891758181232960761275736288443e0 '' -> '-27891758181232960761275736288443' +xfmt4993 format 34770183518285392132074410282612E323 '\xec\x9e\x86< 82,f' -> ' 3,477,018,351,828,539,213,207,441,028,261,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt4994 format -31445844665433324703011196545788e258 '\xe5\xb2\x97=+9,.77f' -> '-31,445,844,665,433,324,703,011,196,545,788,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt4995 format 4234100314507447233397773483E0 '\xea\x89\xbf^+,.51E' -> '+4.234100314507447233397773483000000000000000000000000E+27' +xfmt4996 format -3968852446653822323735694353e0 '\xeb\xa9\x90^ 69,.88' -> '\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90-3,968,852,446,653,822,323,735,694,353\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90\xeb\xa9\x90' +xfmt4997 format 9141628862110968784347935584e370 ',.41' -> '9.141628862110968784347935584E+397' +xfmt4998 format -8166245166079249330882579932E328 '\xe0\xbf\x9e>-97,.35e' -> '\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e\xe0\xbf\x9e-8.16624516607924933088257993200000000e+355' +xfmt4999 format 516632E0 '.65' -> '516632' +xfmt5000 format -568817e0 '+079,f' -> '-00,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,568,817' +xfmt5001 format 672093E74 '\xe9\x9f\x85<-10,.59f' -> '67,209,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000' +xfmt5002 format -700503E30 '\xe9\xbd\xb1^43,.46E' -> '-7.0050300000000000000000000000000000000000000000E+35' +xfmt5003 format 12345678901234567890.1234567890123456789012 '\xc8\xa1=-E' -> '1.23456789012345678901234567890123456789012E+19' +xfmt5004 format -12345678901234567. '-0,.14g' -> '-1.2345678901235e+16' +xfmt5005 format 21922e0 '0,' -> '21,922' +xfmt5006 format -23125E0 '0.23' -> '-23125' +xfmt5007 format 48624E257 '' -> '4.8624E+261' +xfmt5008 format -31855e249 '+,.30E' -> '-3.185500000000000000000000000000E+253' +xfmt5009 format 35988708692e0 '\xe1\x88\xb2=-31,.98g' -> '\xe1\x88\xb2\xe1\x88\xb2\xe1\x88\xb2\xe1\x88\xb2\xe1\x88\xb2\xe1\x88\xb2\xe1\x88\xb2\xe1\x88\xb2\xe1\x88\xb2\xe1\x88\xb2\xe1\x88\xb2\xe1\x88\xb2\xe1\x88\xb2\xe1\x88\xb2\xe1\x88\xb2\xe1\x88\xb2\xe1\x88\xb235,988,708,692' +xfmt5010 format -65169792102e0 '\xe2\xbf\x8f^71,.88%' -> '-6,516,979,210,200.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt5011 format 88276226125e52 '\xe8\x90\xb4=-9,.56e' -> '8.82762261250000000000000000000000000000000000000000000000e+62' +xfmt5012 format -88467390712E308 '\xe5\x8c\xb0^,g' -> '-8.8467390712e+318' +xfmt5013 format 3674047826792509E0 '09,' -> '3,674,047,826,792,509' +xfmt5014 format -7253878829827920E0 '32,' -> ' -7,253,878,829,827,920' +xfmt5015 format 3652448765048139e369 ',' -> '3.652448765048139E+384' +xfmt5016 format -7898378093841050E44 '0,E' -> '-7.898378093841050E+59' +xfmt5017 format 21864111170998964380211745782714191199408e0 '+30' -> '+21864111170998964380211745782714191199408' +xfmt5018 format -37347466258554322078896216861753095688924e0 '\xe7\x9e\x9a<-1.37' -> '-3.734746625855432207889621686175309569E+40' +xfmt5019 format 97699681585671632460668540830970258700549e27 '' -> '9.7699681585671632460668540830970258700549E+67' +xfmt5020 format -86046368777225620961794319617712298053829e283 ' 026,.66' -> '-8.6046368777225620961794319617712298053829E+323' +xfmt5021 format 7153364326756E0 ' ,' -> ' 7,153,364,326,756' +xfmt5022 format -3446582471541E0 '' -> '-3446582471541' +xfmt5023 format 1141609117234E52 '\xef\xbd\xa5=-1,.63%' -> '1,141,609,117,234,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000%' +xfmt5024 format -5964756840224e270 '081' -> '-00000000000000000000000000000000000000000000000000000000000005.964756840224E+282' +xfmt5025 format 597630970E0 '\xe0\xac\xa8<34,.38' -> '597,630,970\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8\xe0\xac\xa8' +xfmt5026 format -763254029E0 '0' -> '-763254029' +xfmt5027 format 294199210e26 '\xe0\xb3\xb2= 16.70f' -> ' 29419921000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5028 format -934549056e121 '0' -> '-9.34549056E+129' +xfmt5029 format 5815912570726083731113e0 '\xeb\x84\xa7<,%' -> '581,591,257,072,608,373,111,300%' +xfmt5030 format -3213919177546359250385E0 '+97,' -> ' -3,213,919,177,546,359,250,385' +xfmt5031 format 7602667096941930445726e111 '\xe6\x88\xbc=+51,.54e' -> '+7.602667096941930445726000000000000000000000000000000000e+132' +xfmt5032 format -8072634968818981612872e267 '-.97E' -> '-8.0726349688189816128720000000000000000000000000000000000000000000000000000000000000000000000000000E+288' +xfmt5033 format 56498283961200729E0 '\xeb\xb3\x88=-50,.61F' -> '56,498,283,961,200,729.0000000000000000000000000000000000000000000000000000000000000' +xfmt5034 format -50434160709898111e0 '\xef\x8f\xb8=12,' -> '-50,434,160,709,898,111' +xfmt5035 format 88338925681149414e29 '\xea\xb4\xb3< 19,.37' -> ' 8.8338925681149414E+45' +xfmt5036 format -19930469420577897e213 '60g' -> ' -1.9930469420577897e+229' +xfmt5037 format 93057492562752965995e0 '\xe5\x8c\xb4^ F' -> ' 93057492562752965995' +xfmt5038 format -28832055083351075125E0 '\xc3\xbc=15.39f' -> '-28832055083351075125.000000000000000000000000000000000000000' +xfmt5039 format 42824941297435713816E61 ' 054,.71' -> ' 0,000,000,000,000,000,000,004.2824941297435713816E+80' +xfmt5040 format -87477070354004704020E333 '\xe1\x8e\x81^ .90f' -> '-87477070354004704020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5041 format 7786422455450911545179706963975653437205359E0 '\xe2\x8d\x9d=75,f' -> '\xe2\x8d\x9d\xe2\x8d\x9d\xe2\x8d\x9d\xe2\x8d\x9d\xe2\x8d\x9d\xe2\x8d\x9d\xe2\x8d\x9d\xe2\x8d\x9d\xe2\x8d\x9d\xe2\x8d\x9d\xe2\x8d\x9d\xe2\x8d\x9d\xe2\x8d\x9d\xe2\x8d\x9d\xe2\x8d\x9d\xe2\x8d\x9d\xe2\x8d\x9d\xe2\x8d\x9d7,786,422,455,450,911,545,179,706,963,975,653,437,205,359' +xfmt5042 format -5627968210085886417217337829463686064697756E0 '\xea\x87\xaf< 99,f' -> '-5,627,968,210,085,886,417,217,337,829,463,686,064,697,756\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf\xea\x87\xaf' +xfmt5043 format 5031181219401773185336218673637531978936793e297 '-068.5' -> '0000000000000000000000000000000000000000000000000000000005.0312E+339' +xfmt5044 format -3284584125372795712203223089974204954728764E63 '\xe9\xab\xa1=-63,.12e' -> '-\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa1\xe9\xab\xa13.284584125373e+105' +xfmt5045 format 6974178E0 '-,.89' -> '6,974,178' +xfmt5046 format -1546658e0 '' -> '-1546658' +xfmt5047 format 1402799e88 '081,.32G' -> '00,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,001.402799E+94' +xfmt5048 format -6515749E136 '' -> '-6.515749E+142' +xfmt5049 format 0E0 '0' -> '0' +xfmt5050 format 0E0 '+63F' -> ' +0' +xfmt5051 format 0e194 '-047,.52%' -> '0.0000000000000000000000000000000000000000000000000000%' +xfmt5052 format 0E229 '0,.16g' -> '0e+229' +xfmt5053 format 525371064124097851629068681515881690619E0 '\xe0\xa5\xae^+,.57g' -> '+525,371,064,124,097,851,629,068,681,515,881,690,619' +xfmt5054 format -705679445746064047884263409298507539363e0 '95' -> ' -705679445746064047884263409298507539363' +xfmt5055 format 260479494167363252019387780888631808381E361 '\xea\xb7\xbd>+96,.56g' -> '\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd\xea\xb7\xbd+2.60479494167363252019387780888631808381e+399' +xfmt5056 format -270849992523323458164434411304811789517e8 ' 09,.83e' -> '-2.70849992523323458164434411304811789517000000000000000000000000000000000000000000000e+46' +xfmt5057 format 501719286016195780264502e0 '-0,%' -> '50,171,928,601,619,578,026,450,200%' +xfmt5058 format -440428516881255298007348E0 '92,' -> ' -440,428,516,881,255,298,007,348' +xfmt5059 format 611505837331554788491652E163 '\xe1\xbf\x97> 51,.49e' -> ' 6.1150583733155478849165200000000000000000000000000e+186' +xfmt5060 format -667860783455384115442888E228 '\xed\x95\xb5=+40,.88' -> '-\xed\x95\xb5\xed\x95\xb5\xed\x95\xb5\xed\x95\xb5\xed\x95\xb5\xed\x95\xb5\xed\x95\xb5\xed\x95\xb5\xed\x95\xb56.67860783455384115442888E+251' +xfmt5061 format 139850398733489592e0 '0' -> '139850398733489592' +xfmt5062 format -831270801338400474e0 '038,.20' -> '-0,000,000,000,831,270,801,338,400,474' +xfmt5063 format 588519982454871787e71 '\xe3\x98\xaa>-,.52f' -> '58,851,998,245,487,178,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000' +xfmt5064 format -842876988087781524e251 '93,' -> ' -8.42876988087781524E+268' +xfmt5065 format 90329843828670410437420e0 '\xe7\x8b\xae>-.58e' -> '9.0329843828670410437420000000000000000000000000000000000000e+22' +xfmt5066 format -53456769901764561467920E0 '\xe0\xb9\xbf=+24,.68F' -> '-53,456,769,901,764,561,467,920.00000000000000000000000000000000000000000000000000000000000000000000' +xfmt5067 format 21017728433621798237730E304 ',' -> '2.1017728433621798237730E+326' +xfmt5068 format -78600535803960235234027E146 '\xe6\x9c\x9d< 34,.9G' -> '-7.86005358E+168\xe6\x9c\x9d\xe6\x9c\x9d\xe6\x9c\x9d\xe6\x9c\x9d\xe6\x9c\x9d\xe6\x9c\x9d\xe6\x9c\x9d\xe6\x9c\x9d\xe6\x9c\x9d\xe6\x9c\x9d\xe6\x9c\x9d\xe6\x9c\x9d\xe6\x9c\x9d\xe6\x9c\x9d\xe6\x9c\x9d\xe6\x9c\x9d\xe6\x9c\x9d\xe6\x9c\x9d' +xfmt5069 format 8399007526910293024E0 '\xe2\x92\xb1^+,.5g' -> '+8.3990e+18' +xfmt5070 format -1680091946170496320E0 '+05,.84' -> '-1,680,091,946,170,496,320' +xfmt5071 format 5352349930103344707e357 '063,.43F' -> '5,352,349,930,103,344,707,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000' +xfmt5072 format -7942284135373663274E127 '\xe1\x91\xa3>+,.99e' -> '-7.942284135373663274000000000000000000000000000000000000000000000000000000000000000000000000000000000e+145' +xfmt5073 format 728752365151E0 '\xe7\x90\xba^ 92,%' -> '\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba 72,875,236,515,100%\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba\xe7\x90\xba' +xfmt5074 format -121580268599e0 '\xec\x92\x8f<+83,.52E' -> '-1.2158026859900000000000000000000000000000000000000000E+11\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f\xec\x92\x8f' +xfmt5075 format 812034115618e112 '' -> '8.12034115618E+123' +xfmt5076 format -180186541325e243 '\xe9\xac\xbf< 57,.98e' -> '-1.80186541325000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+254' +xfmt5077 format 9015055260685549765101647e0 '\xe2\xb0\xad<-55,' -> '9,015,055,260,685,549,765,101,647\xe2\xb0\xad\xe2\xb0\xad\xe2\xb0\xad\xe2\xb0\xad\xe2\xb0\xad\xe2\xb0\xad\xe2\xb0\xad\xe2\xb0\xad\xe2\xb0\xad\xe2\xb0\xad\xe2\xb0\xad\xe2\xb0\xad\xe2\xb0\xad\xe2\xb0\xad\xe2\xb0\xad\xe2\xb0\xad\xe2\xb0\xad\xe2\xb0\xad\xe2\xb0\xad\xe2\xb0\xad\xe2\xb0\xad\xe2\xb0\xad' +xfmt5078 format -7422625816332511581283132E0 '65.7' -> ' -7.422626E+24' +xfmt5079 format 8344301746393452904000658E205 '' -> '8.344301746393452904000658E+229' +xfmt5080 format -2075092537024931787799157E89 '\xe6\x9c\xb6^,' -> '-2.075092537024931787799157E+113' +xfmt5081 format 875366344956860269166641896937019E0 '' -> '875366344956860269166641896937019' +xfmt5082 format -762662883620420220804184063486035e0 ' .10F' -> '-762662883620420220804184063486035.0000000000' +xfmt5083 format 278734207802599894859298926653275E72 '+091,.2F' -> '+278,734,207,802,599,894,859,298,926,653,275,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00' +xfmt5084 format -120032425130461805131139964291038e336 '\xe0\xb2\x99= 23,.18e' -> '-1.200324251304618051e+368' +xfmt5085 format 220E0 '0' -> '220' +xfmt5086 format -212e0 '024,.32f' -> '-212.00000000000000000000000000000000' +xfmt5087 format 303e266 '0.49' -> '3.03E+268' +xfmt5088 format -238E85 ' ,' -> '-2.38E+87' +xfmt5089 format 23674209642106920692721160633E0 '069.85' -> '000000000000000000000000000000000000000023674209642106920692721160633' +xfmt5090 format -35710517355066146166159337567e0 ',' -> '-35,710,517,355,066,146,166,159,337,567' +xfmt5091 format 67977694676420447425987336687e257 '' -> '6.7977694676420447425987336687E+285' +xfmt5092 format -51511187807606293178078340271e291 '\xee\x8c\xbf= ,.66' -> '-5.1511187807606293178078340271E+319' +xfmt5093 format 52257972985070768067165586178819860503E0 '\xe7\x88\x99>-89,.30e' -> '\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x99\xe7\x88\x995.225797298507076806716558617882e+37' +xfmt5094 format -16362953481198377065377658346448262331E0 '6.21' -> '-1.63629534811983770654E+37' +xfmt5095 format 91932975738897952286463968546827513272E223 '\xe5\x9a\xba>+2' -> '+9.1932975738897952286463968546827513272E+260' +xfmt5096 format -33655349784428352980406307752308800279E3 '\xe2\xad\xb7<74' -> '-3.3655349784428352980406307752308800279E+40\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7\xe2\xad\xb7' +xfmt5097 format 37e0 '\xe6\xbd\xa2=+89,.66F' -> '+\xe6\xbd\xa2\xe6\xbd\xa2\xe6\xbd\xa2\xe6\xbd\xa2\xe6\xbd\xa2\xe6\xbd\xa2\xe6\xbd\xa2\xe6\xbd\xa2\xe6\xbd\xa2\xe6\xbd\xa2\xe6\xbd\xa2\xe6\xbd\xa2\xe6\xbd\xa2\xe6\xbd\xa2\xe6\xbd\xa2\xe6\xbd\xa2\xe6\xbd\xa2\xe6\xbd\xa2\xe6\xbd\xa237.000000000000000000000000000000000000000000000000000000000000000000' +xfmt5098 format -48E0 ' ' -> '-48' +xfmt5099 format 33e225 '\xea\x83\xa2<-49,.54g' -> '3.3e+226\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2\xea\x83\xa2' +xfmt5100 format -62e305 '0' -> '-6.2E+306' +xfmt5101 format 8E0 '.6g' -> '8' +xfmt5102 format -6e0 '0' -> '-6' +xfmt5103 format 4e331 '\xd2\x87>+,.79f' -> '+40,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5104 format -9e16 '\xec\xaf\xb0^19.86G' -> '\xec\xaf\xb0\xec\xaf\xb0\xec\xaf\xb0\xec\xaf\xb0\xec\xaf\xb0\xec\xaf\xb0-9E+16\xec\xaf\xb0\xec\xaf\xb0\xec\xaf\xb0\xec\xaf\xb0\xec\xaf\xb0\xec\xaf\xb0\xec\xaf\xb0' +xfmt5105 format 2621595548932615721100634104884412e0 '\xe2\x86\xbc<+84,.41%' -> '+262,159,554,893,261,572,110,063,410,488,441,200.00000000000000000000000000000000000000000%' +xfmt5106 format -1035492318768594714558690427207431e0 '0,' -> '-1,035,492,318,768,594,714,558,690,427,207,431' +xfmt5107 format 2586861681666293067599793668122093e71 '.34' -> '2.586861681666293067599793668122093E+104' +xfmt5108 format -7331255556796667778251805529940029E122 '\xe6\xa6\x98=+,e' -> '-7.331255556796667778251805529940029e+155' +xfmt5109 format 6005562406e0 '014.54' -> '00006005562406' +xfmt5110 format -1365636305e0 '+36.3' -> ' -1.37E+9' +xfmt5111 format 5350829342e336 '\xe3\x84\xb7>+8,.27' -> '+5.350829342E+345' +xfmt5112 format -4714141131E366 '\xef\xb5\xa6^24' -> '\xef\xb5\xa6\xef\xb5\xa6\xef\xb5\xa6-4.714141131E+375\xef\xb5\xa6\xef\xb5\xa6\xef\xb5\xa6\xef\xb5\xa6' +xfmt5113 format 6167E0 '\xe0\xac\xbd= ,.47G' -> ' 6,167' +xfmt5114 format -6359E0 '-%' -> '-635900%' +xfmt5115 format 8851E265 '-,e' -> '8.851e+268' +xfmt5116 format -4638E237 '\xef\xab\x9f^-5,.34g' -> '-4.638e+240' +xfmt5117 format 198883359032075935759563666795919212e0 ' .56' -> ' 198883359032075935759563666795919212' +xfmt5118 format -100867593749515797323543071286200613E0 '\xef\x9a\x88^ 22,.18F' -> '-100,867,593,749,515,797,323,543,071,286,200,613.000000000000000000' +xfmt5119 format 256269640582538105209302675634062463e359 '' -> '2.56269640582538105209302675634062463E+394' +xfmt5120 format -865223012048044363541694049798753839e214 '+.42f' -> '-8652230120480443635416940497987538390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000' +xfmt5121 format 37472408553491e0 ' 23,G' -> ' 37,472,408,553,491' +xfmt5122 format -19966019137322e0 '' -> '-19966019137322' +xfmt5123 format 69379428194564E369 '\xe9\xa5\x9c<+e' -> '+6.9379428194564e+382' +xfmt5124 format -85337932748190e95 '-,' -> '-8.5337932748190E+108' +xfmt5125 format 12345678901234.12345678901234 '\xef\x96\x8d<+23F' -> '+12345678901234.12345678901234' +xfmt5126 format -12345678.123 '\xec\xa7\xa6^+,.89F' -> '-12,345,678.12300000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5127 format 38591056971246869169067E0 '\xe3\xa4\x94<+.85F' -> '+38591056971246869169067.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5128 format -70527468539200168600725e0 '\xef\xba\xb9<-3,.36' -> '-70,527,468,539,200,168,600,725' +xfmt5129 format 98170605540711250951573E351 '32,e' -> ' 9.8170605540711250951573e+373' +xfmt5130 format -22042299117423550930335E329 '' -> '-2.2042299117423550930335E+351' +xfmt5131 format 353881227046E0 '\xe3\x8f\xb1<-24,.99f' -> '353,881,227,046.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5132 format -533711222499E0 '\xe8\xae\x82=-68,.40f' -> '-\xe8\xae\x82\xe8\xae\x82\xe8\xae\x82\xe8\xae\x82\xe8\xae\x82\xe8\xae\x82\xe8\xae\x82\xe8\xae\x82\xe8\xae\x82\xe8\xae\x82\xe8\xae\x82533,711,222,499.0000000000000000000000000000000000000000' +xfmt5133 format 746237300580E218 'e' -> '7.46237300580e+229' +xfmt5134 format -304433068189e220 ' 17,' -> '-3.04433068189E+231' +xfmt5135 format 7309453854877890938683647736e0 '-080,.99%' -> '730,945,385,487,789,093,868,364,773,600.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt5136 format -7562057464197211446294729898E0 '053.38%' -> '-756205746419721144629472989800.00000000000000000000000000000000000000%' +xfmt5137 format 7762722770501898529027443582E329 '' -> '7.762722770501898529027443582E+356' +xfmt5138 format -2441346713673955988141411624e299 '\xe4\xb7\xbc<+,.74e' -> '-2.44134671367395598814141162400000000000000000000000000000000000000000000000e+326' +xfmt5139 format 828146928E0 '' -> '828146928' +xfmt5140 format -359150587e0 '087,f' -> '-00,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,359,150,587' +xfmt5141 format 221187881e105 '\xd3\xb1= 39g' -> ' \xd3\xb1\xd3\xb1\xd3\xb1\xd3\xb1\xd3\xb1\xd3\xb1\xd3\xb1\xd3\xb1\xd3\xb1\xd3\xb1\xd3\xb1\xd3\xb1\xd3\xb1\xd3\xb1\xd3\xb1\xd3\xb1\xd3\xb1\xd3\xb1\xd3\xb1\xd3\xb1\xd3\xb1\xd3\xb1\xd3\xb12.21187881e+113' +xfmt5142 format -615545392E208 '\xe7\x98\xbd=+31,.60F' -> '-6,155,453,920,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000' +xfmt5143 format 14752773111662e0 ' %' -> ' 1475277311166200%' +xfmt5144 format -34354035220754E0 '+e' -> '-3.4354035220754e+13' +xfmt5145 format 45754577282282E33 '\xe6\xa7\x82>-46,.62G' -> '\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x82\xe6\xa7\x824.5754577282282E+46' +xfmt5146 format -10237536532139E84 '\xec\xb1\xad<' -> '-1.0237536532139E+97' +xfmt5147 format 9101087364343872390533284714454463736284469E0 '\xef\x8c\x8c>96g' -> '\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c\xef\x8c\x8c9101087364343872390533284714454463736284469' +xfmt5148 format -7197260095606531571775542544973038023902261E0 '\xea\x8b\xa3>' -> '-7197260095606531571775542544973038023902261' +xfmt5149 format 8958340153312013102243119198019463485267850e51 '\xe7\x81\xaf<-26,.99F' -> '8,958,340,153,312,013,102,243,119,198,019,463,485,267,850,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5150 format -7692080095017695907018741643349281931402187e214 '\xe2\xa9\xa6^' -> '-7.692080095017695907018741643349281931402187E+256' +xfmt5151 format 27002e0 ' 96' -> ' 27002' +xfmt5152 format -90143E0 '0.54G' -> '-90143' +xfmt5153 format 86703E97 '\xef\x83\xb1^,.41G' -> '8.6703E+101' +xfmt5154 format -45232e44 '\xeb\x8d\xb3< 79.71F' -> '-4523200000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5155 format 8895399398459527440647791e0 '' -> '8895399398459527440647791' +xfmt5156 format -9920875709879243383794253E0 '' -> '-9920875709879243383794253' +xfmt5157 format 5782354143531467834028991e245 '' -> '5.782354143531467834028991E+269' +xfmt5158 format -5409505089296258269105793e92 'f' -> '-540950508929625826910579300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5159 format 657E0 '\xeb\x80\xa0= 69.7n' -> ' \xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0\xeb\x80\xa0657' +xfmt5160 format -895E0 '\xe4\x95\x81^.39' -> '-895' +xfmt5161 format 207E45 ' ' -> ' 2.07E+47' +xfmt5162 format -229e271 '\xe3\xbd\x94>-58.71%' -> '-229000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt5163 format 56344365735203715416e0 '\xee\xa4\xa2<81.57G' -> '56344365735203715416\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2\xee\xa4\xa2' +xfmt5164 format -82768657104937223261e0 '0.68' -> '-82768657104937223261' +xfmt5165 format 68176590087599521050E115 '\xe1\x80\xb6=8,.43f' -> '681,765,900,875,995,210,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000' +xfmt5166 format -64291115732319955583E285 '\xe3\x87\x87= 16,.72G' -> '-6.4291115732319955583E+304' +xfmt5167 format 851306705339413379287E0 '0%' -> '85130670533941337928700%' +xfmt5168 format -915476850303236478835E0 '\xee\x95\x9e>-32,.78E' -> '-9.154768503032364788350000000000000000000000000000000000000000000000000000000000E+20' +xfmt5169 format 161767273707329907309E274 '.23' -> '1.61767273707329907309E+294' +xfmt5170 format -935169778607005270488E260 '+.71' -> '-9.35169778607005270488E+280' +xfmt5171 format 635001872960913069622049E0 '\xee\x96\xb7<+82.31' -> '+635001872960913069622049\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7\xee\x96\xb7' +xfmt5172 format -672273546760882944494727e0 '\xee\xb5\x91= ,g' -> '-672,273,546,760,882,944,494,727' +xfmt5173 format 545893829161417414423130E151 '\xed\x85\xbf=1,f' -> '5,458,938,291,614,174,144,231,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt5174 format -992295302543149713047060E324 '-0,.53E' -> '-9.92295302543149713047060000000000000000000000000000000E+347' +xfmt5175 format 0E0 '\xed\x9a\x82<34,.19' -> '0\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82\xed\x9a\x82' +xfmt5176 format 0E0 '\xe8\xaa\x83^+.32' -> '+0' +xfmt5177 format 0E168 '\xec\xb0\xbc<-53.33E' -> '0.000000000000000000000000000000000E+201\xec\xb0\xbc\xec\xb0\xbc\xec\xb0\xbc\xec\xb0\xbc\xec\xb0\xbc\xec\xb0\xbc\xec\xb0\xbc\xec\xb0\xbc\xec\xb0\xbc\xec\xb0\xbc\xec\xb0\xbc\xec\xb0\xbc\xec\xb0\xbc' +xfmt5178 format 0e178 '\xe8\xa2\xa5=-94,.47e' -> '\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa5\xe8\xa2\xa50.00000000000000000000000000000000000000000000000e+225' +xfmt5179 format 8374672669159776E0 '+' -> '+8374672669159776' +xfmt5180 format -4902804104139912E0 '' -> '-4902804104139912' +xfmt5181 format 9026119410363493E289 ' 0,.9' -> ' 9.02611941E+304' +xfmt5182 format -9058486970811141E337 '\xea\xb7\x8f=+27,.27g' -> '-\xea\xb7\x8f\xea\xb7\x8f\xea\xb7\x8f\xea\xb7\x8f9.058486970811141e+352' +xfmt5183 format 5627151910E0 ' 068,.66' -> ' 000,000,000,000,000,000,000,000,000,000,000,000,000,005,627,151,910' +xfmt5184 format -5550457402E0 '\xe8\xa8\x85^-,.82e' -> '-5.5504574020000000000000000000000000000000000000000000000000000000000000000000000000e+9' +xfmt5185 format 6027159613E297 '\xe7\xb8\xb8=47.14F' -> '6027159613000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000' +xfmt5186 format -9794238349E9 '\xef\xa5\x83^ 10,.90F' -> '-9,794,238,349,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5187 format 15852295899062888227267336071253918137199e0 '0' -> '15852295899062888227267336071253918137199' +xfmt5188 format -70149301449971319239553404262797095699157E0 '\xee\x9d\xa1=-' -> '-70149301449971319239553404262797095699157' +xfmt5189 format 93690526510289736503014857602682664392665E15 '' -> '9.3690526510289736503014857602682664392665E+55' +xfmt5190 format -63603749151038183264290300931785221387405E267 '\xe5\x92\xa8<-32,.8F' -> '-63,603,749,151,038,183,264,290,300,931,785,221,387,405,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000' +xfmt5191 format 2659E0 '+21.15n' -> ' +2659' +xfmt5192 format -2331e0 '\xee\xb7\xb6> 71.86' -> '\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6\xee\xb7\xb6-2331' +xfmt5193 format 7017e262 '\xeb\x84\xac>69,G' -> '\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac\xeb\x84\xac7.017E+265' +xfmt5194 format -7188e216 '\xec\x9a\xa4=+%' -> '-718800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt5195 format 91288124e0 '\xee\x9a\x88^+80,E' -> '\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88+9.1288124E+7\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88\xee\x9a\x88' +xfmt5196 format -54975022E0 '\xe5\x8c\x83=46G' -> '-\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x83\xe5\x8c\x8354975022' +xfmt5197 format 34089851E198 '0' -> '3.4089851E+205' +xfmt5198 format -94589339E140 '' -> '-9.4589339E+147' +xfmt5199 format 8480396E0 '076,.20f' -> '000,000,000,000,000,000,000,000,000,000,000,008,480,396.00000000000000000000' +xfmt5200 format -9382870E0 '\xe4\x90\x90=-34,.25F' -> '-9,382,870.0000000000000000000000000' +xfmt5201 format 3658877e104 '+65.52' -> ' +3.658877E+110' +xfmt5202 format -1789283e244 '\xeb\xaa\xac=+50' -> '-\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac\xeb\xaa\xac1.789283E+250' +xfmt5203 format 856532848174671e0 '\xe3\x87\x88< ,.50F' -> ' 856,532,848,174,671.00000000000000000000000000000000000000000000000000' +xfmt5204 format -861906943296055e0 '\xe4\xbc\xae=84,.95F' -> '-861,906,943,296,055.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5205 format 947516077702055e215 '\xe6\xac\xa1<+42,e' -> '+9.47516077702055e+229\xe6\xac\xa1\xe6\xac\xa1\xe6\xac\xa1\xe6\xac\xa1\xe6\xac\xa1\xe6\xac\xa1\xe6\xac\xa1\xe6\xac\xa1\xe6\xac\xa1\xe6\xac\xa1\xe6\xac\xa1\xe6\xac\xa1\xe6\xac\xa1\xe6\xac\xa1\xe6\xac\xa1\xe6\xac\xa1\xe6\xac\xa1\xe6\xac\xa1\xe6\xac\xa1\xe6\xac\xa1' +xfmt5206 format -125643403394671E4 '0' -> '-1.25643403394671E+18' +xfmt5207 format 535820124351373273466490411909648441E0 'F' -> '535820124351373273466490411909648441' +xfmt5208 format -198832321040184136313779253004508657e0 ',' -> '-198,832,321,040,184,136,313,779,253,004,508,657' +xfmt5209 format 354894611497987605161377640920390223e207 '\xe7\xbb\x84< ' -> ' 3.54894611497987605161377640920390223E+242' +xfmt5210 format -427167353241778144307656433342731762E293 '\xee\x99\xbc=-99,.1E' -> '-\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc\xee\x99\xbc4.3E+328' +xfmt5211 format 5160442051544288298830046200527e0 '060' -> '000000000000000000000000000005160442051544288298830046200527' +xfmt5212 format -6651639680091036237485761990920E0 '\xe5\xa9\xac=-21,f' -> '-6,651,639,680,091,036,237,485,761,990,920' +xfmt5213 format 3211916181122298849632632439064e143 ' 0,.64%' -> ' 32,119,161,811,222,988,496,326,324,390,640,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000%' +xfmt5214 format -3535091165615736521949883164698e25 '.9' -> '-3.53509117E+55' +xfmt5215 format 8E0 '\xef\xb1\x88=-96,.52g' -> '\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x88\xef\xb1\x888' +xfmt5216 format -1E0 '' -> '-1' +xfmt5217 format 2E134 '\xe7\xaa\xa4< 74,E' -> ' 2E+134\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4\xe7\xaa\xa4' +xfmt5218 format -4E327 '\xe8\x95\x9e> ,f' -> '-4,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt5219 format 8320140979128251942839956012206821e0 '059,.79' -> '000,000,000,008,320,140,979,128,251,942,839,956,012,206,821' +xfmt5220 format -9338826599249314903718951488973038e0 '\xe2\x88\xa2>+53,.66f' -> '-9,338,826,599,249,314,903,718,951,488,973,038.000000000000000000000000000000000000000000000000000000000000000000' +xfmt5221 format 9124508536365702264322611231124677e328 '\xe8\x86\xb0< 35' -> ' 9.124508536365702264322611231124677E+361' +xfmt5222 format -2600030635312852377515562221374174E64 ',' -> '-2.600030635312852377515562221374174E+97' +xfmt5223 format 60574815307e0 '-.37' -> '60574815307' +xfmt5224 format -43968122934E0 ',' -> '-43,968,122,934' +xfmt5225 format 18296660143E157 '\xe2\x8a\xbb>2,.54f' -> '182,966,601,430,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000' +xfmt5226 format -91147793257e264 '' -> '-9.1147793257E+274' +xfmt5227 format 973745566743183656386484724531e0 '\xe3\x90\xa0>26.41' -> '973745566743183656386484724531' +xfmt5228 format -177062674526078731159450017999e0 '\xea\xb0\xa2^,.7e' -> '-1.7706267e+29' +xfmt5229 format 703958460675468196098094850053e173 '\xec\x97\x8b^-.22F' -> '70395846067546819609809485005300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000' +xfmt5230 format -447404827128654411685306410532E224 '\xe6\x84\xb4>-64.46' -> '\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4\xe6\x84\xb4-4.47404827128654411685306410532E+253' +xfmt5231 format 16742498432067950486374025502114979e0 '\xe5\x93\x92^7,.4g' -> '1.674e+34' +xfmt5232 format -80137710894164960493330238104769998E0 '\xe9\xbb\x80^ 83.49G' -> '\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80-80137710894164960493330238104769998\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80\xe9\xbb\x80' +xfmt5233 format 52870095809979667277772838344302078e318 ' ,' -> ' 5.2870095809979667277772838344302078E+352' +xfmt5234 format -62197216041021097245730258300875427e194 '' -> '-6.2197216041021097245730258300875427E+228' +xfmt5235 format 77238364237060107491962892918138158978882865e0 '' -> '77238364237060107491962892918138158978882865' +xfmt5236 format -50599292221269831313365841866921229677824378E0 '\xe5\x82\x93>.27' -> '-5.05992922212698313133658419E+43' +xfmt5237 format 51667798172516091942719583912477495108913990e301 '\xe6\xa1\xa0=+,' -> '+5.1667798172516091942719583912477495108913990E+344' +xfmt5238 format -76544222047120414173873341482361538380972464e190 ',%' -> '-76,544,222,047,120,414,173,873,341,482,361,538,380,972,464,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt5239 format 5563418383466533017010355750717857626e0 '' -> '5563418383466533017010355750717857626' +xfmt5240 format -1415228957580362040157897697414998359e0 '' -> '-1415228957580362040157897697414998359' +xfmt5241 format 2699002048193458894165153609438176384e213 '\xe1\xb2\xa2<,' -> '2.699002048193458894165153609438176384E+249' +xfmt5242 format -1552369753977101465822359055678285146E90 '+83,.74F' -> '-1,552,369,753,977,101,465,822,359,055,678,285,146,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5243 format 265242282728962555899009300380015838457E0 '71,' -> ' 265,242,282,728,962,555,899,009,300,380,015,838,457' +xfmt5244 format -701743647367058042072615340661993209181e0 ' 13,.98' -> '-701,743,647,367,058,042,072,615,340,661,993,209,181' +xfmt5245 format 616365336691917536349110834101473427145e34 '0,' -> '6.16365336691917536349110834101473427145E+72' +xfmt5246 format -580371492686640705440622508638570715917E243 '\xec\xbb\x8b^,F' -> '-580,371,492,686,640,705,440,622,508,638,570,715,917,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt5247 format 123456789.12345678901234 '\xe2\xa9\xae<+41.45' -> '+123456789.12345678901234\xe2\xa9\xae\xe2\xa9\xae\xe2\xa9\xae\xe2\xa9\xae\xe2\xa9\xae\xe2\xa9\xae\xe2\xa9\xae\xe2\xa9\xae\xe2\xa9\xae\xe2\xa9\xae\xe2\xa9\xae\xe2\xa9\xae\xe2\xa9\xae\xe2\xa9\xae\xe2\xa9\xae\xe2\xa9\xae' +xfmt5248 format -12345678901234.12345 '049,f' -> '-00,000,000,000,000,000,012,345,678,901,234.12345' +xfmt5249 format 1943433906689342175184404508e0 '+,.14' -> '+1.9434339066893E+27' +xfmt5250 format -1354610055241091187894503047E0 '\xe1\xbf\x9c= 21,E' -> '-1.354610055241091187894503047E+27' +xfmt5251 format 2829168053024652549048899470E184 '\xe6\x9c\x87> 31,.25f' -> ' 28,291,680,530,246,525,490,488,994,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000' +xfmt5252 format -4817279757600865611427308678E41 '' -> '-4.817279757600865611427308678E+68' +xfmt5253 format 1755856690E0 '+052.46e' -> '+1.7558566900000000000000000000000000000000000000e+9' +xfmt5254 format -6013104563e0 '56,' -> ' -6,013,104,563' +xfmt5255 format 8054748490e132 '0,g' -> '8.054748490e+141' +xfmt5256 format -1684943309E23 '' -> '-1.684943309E+32' +xfmt5257 format 76e0 ',' -> '76' +xfmt5258 format -68e0 '32.40' -> ' -68' +xfmt5259 format 60e16 '+.20' -> '+6.0E+17' +xfmt5260 format -28E5 ',G' -> '-2.8E+6' +xfmt5261 format 60364e0 '\xd6\xa0^ ,.14%' -> ' 6,036,400.00000000000000%' +xfmt5262 format -30602E0 '' -> '-30602' +xfmt5263 format 92767E314 '\xee\xa0\xbf^-' -> '9.2767E+318' +xfmt5264 format -29862e13 ',' -> '-2.9862E+17' +xfmt5265 format 369758400315268032410958438586084023873864E0 '\xe0\xa2\x86^,e' -> '3.69758400315268032410958438586084023873864e+41' +xfmt5266 format -204975854732171834147431435361050674593230E0 '\xe3\xb2\xb9>-16.20F' -> '-204975854732171834147431435361050674593230.00000000000000000000' +xfmt5267 format 335716914366739225291664845389467106497489E259 '' -> '3.35716914366739225291664845389467106497489E+300' +xfmt5268 format -649325008103263406615914331498470727330627e264 '' -> '-6.49325008103263406615914331498470727330627E+305' +xfmt5269 format 38721264068182212298716473181354140106e0 '' -> '38721264068182212298716473181354140106' +xfmt5270 format -38140966020602829317951549236210414499E0 '\xe6\x95\x95< 55,.43G' -> '-38,140,966,020,602,829,317,951,549,236,210,414,499\xe6\x95\x95\xe6\x95\x95\xe6\x95\x95\xe6\x95\x95' +xfmt5271 format 68273662402972586363535401773213431052e39 '0.88' -> '6.8273662402972586363535401773213431052E+76' +xfmt5272 format -85294607802452407601336084426426438433E129 '\xe1\xa8\x9f^-80,.61E' -> '\xe1\xa8\x9f\xe1\xa8\x9f\xe1\xa8\x9f\xe1\xa8\x9f\xe1\xa8\x9f-8.5294607802452407601336084426426438433000000000000000000000000E+166\xe1\xa8\x9f\xe1\xa8\x9f\xe1\xa8\x9f\xe1\xa8\x9f\xe1\xa8\x9f\xe1\xa8\x9f' +xfmt5273 format 8702287103878723278352971e0 '+011' -> '+8702287103878723278352971' +xfmt5274 format -8233441625805639481223026e0 '\xe4\x8e\xb9^ 90,.31%' -> '\xe4\x8e\xb9\xe4\x8e\xb9\xe4\x8e\xb9\xe4\x8e\xb9\xe4\x8e\xb9\xe4\x8e\xb9\xe4\x8e\xb9\xe4\x8e\xb9\xe4\x8e\xb9\xe4\x8e\xb9-823,344,162,580,563,948,122,302,600.0000000000000000000000000000000%\xe4\x8e\xb9\xe4\x8e\xb9\xe4\x8e\xb9\xe4\x8e\xb9\xe4\x8e\xb9\xe4\x8e\xb9\xe4\x8e\xb9\xe4\x8e\xb9\xe4\x8e\xb9\xe4\x8e\xb9\xe4\x8e\xb9' +xfmt5275 format 4661759612832857915136353E227 '+28,.63f' -> '+466,175,961,283,285,791,513,635,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000' +xfmt5276 format -7398643635259756058945576E182 '\xed\x84\xa4>.99' -> '-7.398643635259756058945576E+206' +xfmt5277 format 99487538923064E0 '\xe4\x96\xbf<73,.42E' -> '9.948753892306400000000000000000000000000000E+13\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf\xe4\x96\xbf' +xfmt5278 format -97736593759468e0 '0,' -> '-97,736,593,759,468' +xfmt5279 format 57305101934046E273 ',' -> '5.7305101934046E+286' +xfmt5280 format -88660025901149e156 '-052,.37e' -> '-0,000,008.8660025901149000000000000000000000000e+169' +xfmt5281 format 54428554773288947009930029193143378E0 ' 023' -> ' 54428554773288947009930029193143378' +xfmt5282 format -98809147026756101480523605727809173e0 '' -> '-98809147026756101480523605727809173' +xfmt5283 format 84297679844596089308285183524146992E256 '\xe8\x9c\xad<97,%' -> '84,297,679,844,596,089,308,285,183,524,146,992,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt5284 format -79987649889777447006756443337724543E159 '' -> '-7.9987649889777447006756443337724543E+193' +xfmt5285 format 545845181830738E0 '\xe6\xa7\x9d^-54,.4e' -> '\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d5.4585e+14\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d\xe6\xa7\x9d' +xfmt5286 format -277522794807786E0 '022e' -> '-02.77522794807786e+14' +xfmt5287 format 987478226478454E321 '\xe2\xac\xa7<+51,.18E' -> '+9.874782264784540000E+335\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7\xe2\xac\xa7' +xfmt5288 format -454888373712615E254 ',.36' -> '-4.54888373712615E+268' +xfmt5289 format 5629927883435993067301172106642280233e0 ' 036,F' -> ' 5,629,927,883,435,993,067,301,172,106,642,280,233' +xfmt5290 format -4383826121669439283560589714642316378e0 '41' -> ' -4383826121669439283560589714642316378' +xfmt5291 format 5463295968943291544304722285423756009e248 '' -> '5.463295968943291544304722285423756009E+284' +xfmt5292 format -5377510017401677033468485700928484077E239 '' -> '-5.377510017401677033468485700928484077E+275' +xfmt5293 format 1278789E0 '\xeb\x88\xb9^ 46,.7f' -> '\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9 1,278,789.0000000\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9\xeb\x88\xb9' +xfmt5294 format -2338381e0 '\xee\xbb\xae^+89,%' -> '\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae-233,838,100%\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae\xee\xbb\xae' +xfmt5295 format 4781854e340 '-045,.24g' -> '0,000,000,000,000,000,000,000,004.781854e+346' +xfmt5296 format -2308872E51 '\xef\x96\x9e^66,.89G' -> '\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e-2.308872E+57\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e\xef\x96\x9e' +xfmt5297 format 81698079473518070046E0 '066.31' -> '000000000000000000000000000000000000000000000081698079473518070046' +xfmt5298 format -20404936699210784949e0 '\xed\x95\x91>35.3f' -> '\xed\x95\x91\xed\x95\x91\xed\x95\x91\xed\x95\x91\xed\x95\x91\xed\x95\x91\xed\x95\x91\xed\x95\x91\xed\x95\x91\xed\x95\x91-20404936699210784949.000' +xfmt5299 format 83913184022856888796e246 'n' -> '8.3913184022856888796e+265' +xfmt5300 format -42962982095086900524e102 '\xea\x8c\xa3^ 51,.90F' -> '-42,962,982,095,086,900,524,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5301 format 98262096329543959E0 '\xe6\xb1\x89^+,.29' -> '+98,262,096,329,543,959' +xfmt5302 format -95260587593960698e0 '035.7n' -> '-00000000000000000000009.526059e+16' +xfmt5303 format 80214693099735736E229 '-67' -> ' 8.0214693099735736E+245' +xfmt5304 format -61164304484640516e216 '\xe0\xb3\xa6^-28.84E' -> '-6.116430448464051600000000000000000000000000000000000000000000000000000000000000000000E+232' +xfmt5305 format 97038569493E0 '\xe7\xa4\x93^+,E' -> '+9.7038569493E+10' +xfmt5306 format -92205981509E0 '-067.9E' -> '-0000000000000000000000000000000000000000000000000009.220598151E+10' +xfmt5307 format 61751400517e310 'g' -> '6.1751400517e+320' +xfmt5308 format -55846888772e204 '\xe7\x8c\xbd>-,.36' -> '-5.5846888772E+214' +xfmt5309 format 65721601219150099671439642245868956862740E0 '\xe0\xbd\xa2<+97,.77E' -> '+6.57216012191500996714396422458689568627400000000000000000000000000000000000000E+40\xe0\xbd\xa2\xe0\xbd\xa2\xe0\xbd\xa2\xe0\xbd\xa2\xe0\xbd\xa2\xe0\xbd\xa2\xe0\xbd\xa2\xe0\xbd\xa2\xe0\xbd\xa2\xe0\xbd\xa2\xe0\xbd\xa2\xe0\xbd\xa2\xe0\xbd\xa2' +xfmt5310 format -53968021509479224871521658402697756732723E0 '' -> '-53968021509479224871521658402697756732723' +xfmt5311 format 24097760512389103042989180577385583201704E54 '\xe4\xbf\x8a>64%' -> '2409776051238910304298918057738558320170400000000000000000000000000000000000000000000000000000000%' +xfmt5312 format -37138586357022313138531740341956601647786E361 '\xe7\x8f\x95> ,.64' -> '-3.7138586357022313138531740341956601647786E+401' +xfmt5313 format 994838112370477736896232300688665396e0 '' -> '994838112370477736896232300688665396' +xfmt5314 format -247026762120105745364736863887602475e0 '\xe8\xa8\xa0^84,.54%' -> '-24,702,676,212,010,574,536,473,686,388,760,247,500.000000000000000000000000000000000000000000000000000000%' +xfmt5315 format 742352595404306472343675057809225463E72 '\xe3\x99\x88> .51' -> ' 7.42352595404306472343675057809225463E+107' +xfmt5316 format -177610664676870357424550833327946567e319 '\xe5\xaa\x80<.36F' -> '-1776106646768703574245508333279465670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000' +xfmt5317 format 2724759904979580584E0 '\xe4\x84\xa2<.60' -> '2724759904979580584' +xfmt5318 format -6308272770312305276E0 '\xef\xa5\xa2>+9,.70e' -> '-6.3082727703123052760000000000000000000000000000000000000000000000000000e+18' +xfmt5319 format 5820154712643656451e308 '\xee\x9d\xa1>' -> '5.820154712643656451E+326' +xfmt5320 format -6862442316834893459e150 '\xd8\x81>,' -> '-6.862442316834893459E+168' +xfmt5321 format 1807391073881682E0 '' -> '1807391073881682' +xfmt5322 format -4376345793691433e0 '\xee\xae\xbf=+67.46e' -> '-\xee\xae\xbf\xee\xae\xbf\xee\xae\xbf\xee\xae\xbf\xee\xae\xbf\xee\xae\xbf\xee\xae\xbf\xee\xae\xbf\xee\xae\xbf\xee\xae\xbf\xee\xae\xbf\xee\xae\xbf\xee\xae\xbf\xee\xae\xbf4.3763457936914330000000000000000000000000000000e+15' +xfmt5323 format 1769107938522717E73 '+,g' -> '+1.769107938522717e+88' +xfmt5324 format -8399489407226000E201 '+' -> '-8.399489407226000E+216' +xfmt5325 format 5e0 '.37' -> '5' +xfmt5326 format -5E0 '\xe3\x8e\x81>' -> '-5' +xfmt5327 format 7e217 '\xe6\xba\xa7> 50,.39G' -> '\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7\xe6\xba\xa7 7E+217' +xfmt5328 format -5E12 '+99' -> ' -5E+12' +xfmt5329 format 659713924847e0 '\xe1\xa1\x83<+85,.12f' -> '+659,713,924,847.000000000000\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83\xe1\xa1\x83' +xfmt5330 format -891552804294E0 '\xe5\x90\x9e<,.67g' -> '-891,552,804,294' +xfmt5331 format 298655997883e179 '' -> '2.98655997883E+190' +xfmt5332 format -500181603244e357 '\xee\xbe\xab=,.37%' -> '-50,018,160,324,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000%' +xfmt5333 format 8974666654606845427888736198139853097865e0 ',' -> '8,974,666,654,606,845,427,888,736,198,139,853,097,865' +xfmt5334 format -1548686680234795901245706101285531846537e0 '-036.79' -> '-1548686680234795901245706101285531846537' +xfmt5335 format 6998212105478729934648396773670166290285e39 '096.29' -> '000000000000000000000000000000000000000000000000000000000000006.9982121054787299346483967737E+78' +xfmt5336 format -6788710423033881890820514800124299728026E48 ' 88,.55' -> ' -6.788710423033881890820514800124299728026E+87' +xfmt5337 format 272997841114406273984400232237e0 '\xed\x9e\x92>44,' -> '\xed\x9e\x92\xed\x9e\x92\xed\x9e\x92\xed\x9e\x92\xed\x9e\x92272,997,841,114,406,273,984,400,232,237' +xfmt5338 format -596399739416489409669188075730e0 '\xec\x82\xa8=47.70' -> '-\xec\x82\xa8\xec\x82\xa8\xec\x82\xa8\xec\x82\xa8\xec\x82\xa8\xec\x82\xa8\xec\x82\xa8\xec\x82\xa8\xec\x82\xa8\xec\x82\xa8\xec\x82\xa8\xec\x82\xa8\xec\x82\xa8\xec\x82\xa8\xec\x82\xa8\xec\x82\xa8596399739416489409669188075730' +xfmt5339 format 786643721147473053331178620871E258 '\xec\xb7\x94<+51.49' -> '+7.86643721147473053331178620871E+287\xec\xb7\x94\xec\xb7\x94\xec\xb7\x94\xec\xb7\x94\xec\xb7\x94\xec\xb7\x94\xec\xb7\x94\xec\xb7\x94\xec\xb7\x94\xec\xb7\x94\xec\xb7\x94\xec\xb7\x94\xec\xb7\x94\xec\xb7\x94' +xfmt5340 format -673037718556830257098184360150E21 '\xe3\xa4\xa2^+23,.98g' -> '-6.73037718556830257098184360150e+50' +xfmt5341 format 0E0 '\xec\xb9\x86> 93,.7F' -> '\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86\xec\xb9\x86 0.0000000' +xfmt5342 format 0E0 ' 065,.73' -> ' 0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt5343 format 0E327 '\xe3\x94\x8c^+58.3n' -> '\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c+0e+327\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c\xe3\x94\x8c' +xfmt5344 format 0E0 '\xe8\xb5\x9a^' -> '0' +xfmt5345 format 23048171E0 '\xe0\xbc\x82>53,.49G' -> '\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x82\xe0\xbc\x8223,048,171' +xfmt5346 format -90275263E0 '\xe8\xa5\x8c= 40,' -> '-\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c\xe8\xa5\x8c90,275,263' +xfmt5347 format 83814978E127 '-0,G' -> '8.3814978E+134' +xfmt5348 format -76577740E308 '\xe5\x9d\x9b^-2,.68G' -> '-7.6577740E+315' +xfmt5349 format 952783909814867768380244232348576675196E0 '\xeb\xaa\xae=,' -> '952,783,909,814,867,768,380,244,232,348,576,675,196' +xfmt5350 format -246022172672564468077494431671570407022E0 '-31n' -> '-246022172672564468077494431671570407022' +xfmt5351 format 914661938881193226581898450398531066451E275 '\xef\xb6\x87=+,.33F' -> '+91,466,193,888,119,322,658,189,845,039,853,106,645,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000' +xfmt5352 format -349741624868652616853529244969431485050E295 '\xe6\x91\xa6^-16,.89e' -> '-3.49741624868652616853529244969431485050000000000000000000000000000000000000000000000000000e+333' +xfmt5353 format 836833066789049160818995e0 'F' -> '836833066789049160818995' +xfmt5354 format -215828744170033203916358E0 '' -> '-215828744170033203916358' +xfmt5355 format 933174357580998496334397e361 '77.57f' -> '9331743575809984963343970000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000' +xfmt5356 format -663043410688605865585264e328 '\xce\x95=+74,.90e' -> '-6.630434106886058655852640000000000000000000000000000000000000000000000000000000000000000000e+351' +xfmt5357 format 6822316016295569298496763078919882e0 '\xe9\xae\x94>+,.25E' -> '+6.8223160162955692984967631E+33' +xfmt5358 format -7614774791852811508879104200184694e0 '\xe4\xa9\x96<+,.49G' -> '-7,614,774,791,852,811,508,879,104,200,184,694' +xfmt5359 format 7304888377128863933438870447056823E120 '\xe4\x88\xbd= ,.34g' -> ' 7.304888377128863933438870447056823e+153' +xfmt5360 format -6477347815821825401779704667711852e55 '\xea\x95\xaf^+97,.60%' -> '-6,477,347,815,821,825,401,779,704,667,711,852,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000%' +xfmt5361 format 760843772e0 '\xec\xa3\xad^+91,f' -> '\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad+760,843,772\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad\xec\xa3\xad' +xfmt5362 format -637363077e0 '\xe2\xb0\x97>66,.95' -> '\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97\xe2\xb0\x97-637,363,077' +xfmt5363 format 948550598e362 '\xe7\x99\x8c>+10,%' -> '+9,485,505,980,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt5364 format -364777944e194 '' -> '-3.64777944E+202' +xfmt5365 format 84771709155179505975318175007959663712185276E0 ',.52' -> '84,771,709,155,179,505,975,318,175,007,959,663,712,185,276' +xfmt5366 format -78606138972367121869663614272120296096323850e0 '\xe2\x93\xaa^+,.96e' -> '-7.860613897236712186966361427212029609632385000000000000000000000000000000000000000000000000000000e+43' +xfmt5367 format 80729768938184340526150712561053976676878112e311 '\xe5\xba\x92=71,.83F' -> '8,072,976,893,818,434,052,615,071,256,105,397,667,687,811,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5368 format -30402813348506577175007446701135537809590038e197 '' -> '-3.0402813348506577175007446701135537809590038E+240' +xfmt5369 format 1234567890123.12345678901234 '+G' -> '+1234567890123.12345678901234' +xfmt5370 format -123456789012345.12345678901234567890 '12' -> '-123456789012345.12345678901234567890' +xfmt5371 format 9E0 '68,.17g' -> ' 9' +xfmt5372 format -2e0 '+44.33' -> ' -2' +xfmt5373 format 3e70 '\xe0\xb1\xb2>+30,%' -> '+3,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt5374 format -6e1 '\xe4\x90\xa9<.18' -> '-6E+1' +xfmt5375 format 510543390268E0 'f' -> '510543390268' +xfmt5376 format -266363681039e0 '\xed\x82\x8b<-42,.16e' -> '-2.6636368103900000e+11\xed\x82\x8b\xed\x82\x8b\xed\x82\x8b\xed\x82\x8b\xed\x82\x8b\xed\x82\x8b\xed\x82\x8b\xed\x82\x8b\xed\x82\x8b\xed\x82\x8b\xed\x82\x8b\xed\x82\x8b\xed\x82\x8b\xed\x82\x8b\xed\x82\x8b\xed\x82\x8b\xed\x82\x8b\xed\x82\x8b\xed\x82\x8b' +xfmt5377 format 339577746510E28 '\xd5\xb5=+,.89F' -> '+3,395,777,465,100,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5378 format -727791636922E29 '+.32F' -> '-72779163692200000000000000000000000000000.00000000000000000000000000000000' +xfmt5379 format 440453536296816e0 '\xec\xa6\xaf^-80.86f' -> '440453536296816.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5380 format -350801771998196e0 '\xe4\x80\xbb>,.62' -> '-350,801,771,998,196' +xfmt5381 format 983033085845366e354 '\xec\xa4\x9f^ 53,.47g' -> '\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f 9.83033085845366e+368\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f\xec\xa4\x9f' +xfmt5382 format -760150915065310E9 '\xe2\x97\xb1^ 67,.80g' -> '\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1-7.60150915065310e+23\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1\xe2\x97\xb1' +xfmt5383 format 5726486e0 '70,.68%' -> '572,648,600.00000000000000000000000000000000000000000000000000000000000000000000%' +xfmt5384 format -8688757E0 '\xe5\x9a\xb4=83,.1E' -> '-\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb4\xe5\x9a\xb48.7E+6' +xfmt5385 format 4088344e301 '\xea\x82\x80^-5.78n' -> '4.088344e+307' +xfmt5386 format -1883331e359 '\xc7\xa8> 8,.47G' -> '-1.883331E+365' +xfmt5387 format 68958249501555705531218623031649787579e0 '\xec\xb4\x8b^88' -> '\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b68958249501555705531218623031649787579\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b\xec\xb4\x8b' +xfmt5388 format -17351638949458978354645834828459274579e0 '\xe9\xae\x83^-15.80e' -> '-1.73516389494589783546458348284592745790000000000000000000000000000000000000000000e+37' +xfmt5389 format 93094016563104308147807381018887249908e128 '54,' -> ' 9.3094016563104308147807381018887249908E+165' +xfmt5390 format -88417843071336442843154281087018943681e180 '\xef\x90\xb7>+.32G' -> '-8.8417843071336442843154281087019E+217' +xfmt5391 format 52E0 '10.97' -> ' 52' +xfmt5392 format -24E0 '-' -> '-24' +xfmt5393 format 84e322 '' -> '8.4E+323' +xfmt5394 format -65E90 ' 0,.17' -> '-6.5E+91' +xfmt5395 format 63918531445114081953335E0 '-53,e' -> ' 6.3918531445114081953335e+22' +xfmt5396 format -74834927220942102791040e0 '' -> '-74834927220942102791040' +xfmt5397 format 42404601558072642101883e274 '\xeb\x8b\xb0<+.65n' -> '+4.2404601558072642101883e+296' +xfmt5398 format -37272185856549347898719E212 '70,' -> ' -3.7272185856549347898719E+234' +xfmt5399 format 137088496113629441994113e0 '0.40g' -> '137088496113629441994113' +xfmt5400 format -751397494317393842083858e0 '\xea\xbc\xa4=+59,.53f' -> '-751,397,494,317,393,842,083,858.00000000000000000000000000000000000000000000000000000' +xfmt5401 format 252114883096448304462845E119 '\xe9\xb6\x9c< 90.88e' -> ' 2.5211488309644830446284500000000000000000000000000000000000000000000000000000000000000000e+142' +xfmt5402 format -560784367158093736031374E319 '\xe5\xb2\x9c=24,' -> '-5.60784367158093736031374E+342' +xfmt5403 format 23189E0 '-053%' -> '0000000000000000000000000000000000000000000002318900%' +xfmt5404 format -82695E0 '\xe7\xbb\xa1<97,.70E' -> '-8.2695000000000000000000000000000000000000000000000000000000000000000000E+4\xe7\xbb\xa1\xe7\xbb\xa1\xe7\xbb\xa1\xe7\xbb\xa1\xe7\xbb\xa1\xe7\xbb\xa1\xe7\xbb\xa1\xe7\xbb\xa1\xe7\xbb\xa1\xe7\xbb\xa1\xe7\xbb\xa1\xe7\xbb\xa1\xe7\xbb\xa1\xe7\xbb\xa1\xe7\xbb\xa1\xe7\xbb\xa1\xe7\xbb\xa1\xe7\xbb\xa1\xe7\xbb\xa1\xe7\xbb\xa1\xe7\xbb\xa1' +xfmt5405 format 64191E335 '\xea\xba\x81>70.94F' -> '6419100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5406 format -99256e259 '\xea\x8f\xa9^-18,.50E' -> '-9.92560000000000000000000000000000000000000000000000E+263' +xfmt5407 format 494595643878427246497E0 '082' -> '0000000000000000000000000000000000000000000000000000000000000494595643878427246497' +xfmt5408 format -385163035148029172502e0 '42,%' -> ' -38,516,303,514,802,917,250,200%' +xfmt5409 format 455282301948510822592E121 '-90' -> ' 4.55282301948510822592E+141' +xfmt5410 format -713157002581192961305e22 '' -> '-7.13157002581192961305E+42' +xfmt5411 format 24816216549725305412262072416278098E0 '\xe4\xb4\x82= 21,.63%' -> ' 2,481,621,654,972,530,541,226,207,241,627,809,800.000000000000000000000000000000000000000000000000000000000000000%' +xfmt5412 format -10775128293908393769663077773253016e0 ' 80,.50' -> ' -10,775,128,293,908,393,769,663,077,773,253,016' +xfmt5413 format 57812794432178827274053348839169779e328 '11' -> '5.7812794432178827274053348839169779E+362' +xfmt5414 format -44407200473477189005378355197371035e282 '-0' -> '-4.4407200473477189005378355197371035E+316' +xfmt5415 format 7922361857986600262416421926482013e0 '\xe5\xa0\xa2> 47,g' -> '\xe5\xa0\xa2 7,922,361,857,986,600,262,416,421,926,482,013' +xfmt5416 format -9130778093459052731813639270723669E0 '\xea\xa3\x9e>+38,.44E' -> '-9.13077809345905273181363927072366900000000000E+33' +xfmt5417 format 4692969293478346254854616961030630E161 '\xee\x96\xb1<.33' -> '4.69296929347834625485461696103063E+194' +xfmt5418 format -4342967814720997353833251502440291E347 'G' -> '-4.342967814720997353833251502440291E+380' +xfmt5419 format 71230291533118093251e0 '\xe3\xaf\xb5<-61,.5f' -> '71,230,291,533,118,093,251.00000\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5\xe3\xaf\xb5' +xfmt5420 format -51925779954531619601E0 ',g' -> '-51,925,779,954,531,619,601' +xfmt5421 format 25867907617406032322e322 '\xe5\x87\xbd<12,' -> '2.5867907617406032322E+341' +xfmt5422 format -23572463254973973822E370 '66' -> ' -2.3572463254973973822E+389' +xfmt5423 format 77637340081763523571969978210769593646168E0 '\xeb\xba\xbe<,' -> '77,637,340,081,763,523,571,969,978,210,769,593,646,168' +xfmt5424 format -23304697862370607935581506108503484300162e0 '37,G' -> '-23,304,697,862,370,607,935,581,506,108,503,484,300,162' +xfmt5425 format 76932054887683358007410664918723279333383e49 '' -> '7.6932054887683358007410664918723279333383E+89' +xfmt5426 format -52176311648669550209114088059493868349583E297 ',g' -> '-5.2176311648669550209114088059493868349583e+337' +xfmt5427 format 61901262083577115517043402550014282538521194E0 '\xeb\x92\x91=-73.2e' -> '\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x91\xeb\x92\x916.19e+43' +xfmt5428 format -61562898208462097935529558907511787250631748e0 '\xe7\x89\xa2^-81,g' -> '\xe7\x89\xa2\xe7\x89\xa2\xe7\x89\xa2\xe7\x89\xa2\xe7\x89\xa2\xe7\x89\xa2\xe7\x89\xa2\xe7\x89\xa2\xe7\x89\xa2\xe7\x89\xa2\xe7\x89\xa2-61,562,898,208,462,097,935,529,558,907,511,787,250,631,748\xe7\x89\xa2\xe7\x89\xa2\xe7\x89\xa2\xe7\x89\xa2\xe7\x89\xa2\xe7\x89\xa2\xe7\x89\xa2\xe7\x89\xa2\xe7\x89\xa2\xe7\x89\xa2\xe7\x89\xa2' +xfmt5429 format 77923846772354981952809086817840890169382377e153 '\xe9\xab\x86^-45.60g' -> '7.7923846772354981952809086817840890169382377e+196' +xfmt5430 format -77223366366277513674394722236085213945502371E125 '\xed\x8e\xbc^-37f' -> '-7722336636627751367439472223608521394550237100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5431 format 327124235183963632e0 '0,.70' -> '327,124,235,183,963,632' +xfmt5432 format -841720692100344197E0 '\xeb\xa5\x89=,.30' -> '-841,720,692,100,344,197' +xfmt5433 format 737045183086059525E227 '0.95' -> '7.37045183086059525E+244' +xfmt5434 format -658330732609901347E51 '0' -> '-6.58330732609901347E+68' +xfmt5435 format 705640508E0 '\xe3\x8d\x91>+,' -> '+705,640,508' +xfmt5436 format -462911495E0 '\xeb\x9e\x81<-82,.69g' -> '-462,911,495\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81\xeb\x9e\x81' +xfmt5437 format 602759346E226 '\xe5\xa0\xba>-31.54%' -> '602759346000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000%' +xfmt5438 format -759404864e46 '' -> '-7.59404864E+54' +xfmt5439 format 1093846575115e0 '\xe5\xb1\xba^79,.64%' -> '109,384,657,511,500.0000000000000000000000000000000000000000000000000000000000000000%' +xfmt5440 format -2025091242742E0 '.9' -> '-2.02509124E+12' +xfmt5441 format 6858027090466E140 '\xea\x9a\x8f^25' -> '\xea\x9a\x8f\xea\x9a\x8f\xea\x9a\x8f6.858027090466E+152\xea\x9a\x8f\xea\x9a\x8f\xea\x9a\x8f' +xfmt5442 format -3478835455991e109 '-' -> '-3.478835455991E+121' +xfmt5443 format 59422624318870409315620294E0 '\xed\x9c\x96=+G' -> '+59422624318870409315620294' +xfmt5444 format -21612691912453743787215586E0 '' -> '-21612691912453743787215586' +xfmt5445 format 95010701828447495454177398e214 '\xe8\xb5\x81< e' -> ' 9.5010701828447495454177398e+239' +xfmt5446 format -88022126673025990417080165E314 ' 062,.13' -> '-000,000,000,000,000,000,000,000,000,000,008.802212667303E+339' +xfmt5447 format 6976431777778046497546070437682792821E0 '+.41' -> '+6976431777778046497546070437682792821' +xfmt5448 format -8332168681834532286039086755137143506E0 '\xe5\x80\xa2>24,f' -> '-8,332,168,681,834,532,286,039,086,755,137,143,506' +xfmt5449 format 3159948765276636402236403267510307826E336 '\xef\x81\xaf^-68,.20g' -> '\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf3.1599487652766364022e+372\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf\xef\x81\xaf' +xfmt5450 format -3161347833749433285081767884024406033E43 'e' -> '-3.161347833749433285081767884024406033e+79' +xfmt5451 format 13256408330706341273490154226E0 '\xe3\xae\x95=+F' -> '+13256408330706341273490154226' +xfmt5452 format -53185587077784293378617559963E0 '' -> '-53185587077784293378617559963' +xfmt5453 format 67290623885372333783499749274e142 '\xe5\xb6\xa0<-43f' -> '672906238853723337834997492740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5454 format -84198440933405915079100622054E230 '\xe7\x8e\x94=f' -> '-8419844093340591507910062205400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5455 format 851565617800934039862733222333647346446723e0 ' ,.73' -> ' 851,565,617,800,934,039,862,733,222,333,647,346,446,723' +xfmt5456 format -132252911832673557563661900381846141741511E0 '0,.48' -> '-132,252,911,832,673,557,563,661,900,381,846,141,741,511' +xfmt5457 format 918151722643658434673753214381834665265457E383 '-071.51E' -> '00000000000009.181517226436584346737532143818346652654570000000000E+424' +xfmt5458 format -698791654474161514295125137611159996526493E380 '.88' -> '-6.98791654474161514295125137611159996526493E+421' +xfmt5459 format 8191E0 '\xef\xbf\xae< ,.74e' -> ' 8.19100000000000000000000000000000000000000000000000000000000000000000000000e+3' +xfmt5460 format -6411E0 '\xe7\xbf\xa2< 11,.8e' -> '-6.41100000e+3' +xfmt5461 format 7103e84 '\xe6\x84\x8c^-9.80' -> '7.103E+87' +xfmt5462 format -9410E78 ' 61,.26E' -> ' -9.41000000000000000000000000E+81' +xfmt5463 format 305754091113645263743149679204E0 '+' -> '+305754091113645263743149679204' +xfmt5464 format -368394197535108037825632894375e0 '\xe2\xa3\x95>-5,.24f' -> '-368,394,197,535,108,037,825,632,894,375.000000000000000000000000' +xfmt5465 format 764365316341913818270244464856e127 '' -> '7.64365316341913818270244464856E+156' +xfmt5466 format -718876480986416763183191601045e71 '\xe7\xb3\x82= 61,.85F' -> '-71,887,648,098,641,676,318,319,160,104,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5467 format 8525527938907866422815320711884348654372E0 '\xe3\x89\x9b=35,.38g' -> '8.5255279389078664228153207118843486544e+39' +xfmt5468 format -2776440594677982501058874492863503838736E0 ' 39' -> '-2776440594677982501058874492863503838736' +xfmt5469 format 6124633037069565869606543305212622274013e62 ' 0.43g' -> ' 6.124633037069565869606543305212622274013e+101' +xfmt5470 format -2625066058850760057653968910884005145643E24 '%' -> '-262506605885076005765396891088400514564300000000000000000000000000%' +xfmt5471 format 6002456620E0 '\xe6\x9e\x9a=51,E' -> '\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a\xe6\x9e\x9a6.002456620E+9' +xfmt5472 format -3345676436E0 '-16,e' -> ' -3.345676436e+9' +xfmt5473 format 5625211251E256 '\xd1\x8a>.14e' -> '5.62521125100000e+265' +xfmt5474 format -6176772533E348 '' -> '-6.176772533E+357' +xfmt5475 format 9041852546468935089e0 '\xe5\x8f\xa0<+30,.13e' -> '+9.0418525464689e+18\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0' +xfmt5476 format -2425800133271870599e0 ' 06,.30%' -> '-242,580,013,327,187,059,900.000000000000000000000000000000%' +xfmt5477 format 3015808644114385439E132 '\xdb\xa5<-88.96' -> '3.015808644114385439E+150\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5\xdb\xa5' +xfmt5478 format -8444966093804047703E162 ' ' -> '-8.444966093804047703E+180' +xfmt5479 format 21530961532E0 '90n' -> ' 21530961532' +xfmt5480 format -79243821596E0 '\xea\xa9\xb5^' -> '-79243821596' +xfmt5481 format 94849445392e8 '+042,.91E' -> '+9.4849445392000000000000000000000000000000000000000000000000000000000000000000000000000000000E+18' +xfmt5482 format -94465594936E27 '\xed\x9d\xb0=-89.12F' -> '-\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb0\xed\x9d\xb094465594936000000000000000000000000000.000000000000' +xfmt5483 format 676629245073577152705524897e0 '\xe7\xbd\x8f< 16,E' -> ' 6.76629245073577152705524897E+26' +xfmt5484 format -669811386018666282146883098e0 '\xeb\x83\x92>-95,.97e' -> '-6.6981138601866628214688309800000000000000000000000000000000000000000000000000000000000000000000000e+26' +xfmt5485 format 537185699363770225812463266e184 '\xea\x8a\xae>+8,.28g' -> '+5.37185699363770225812463266e+210' +xfmt5486 format -616068721130927059448302735E268 '\xe1\x89\x9d= .2G' -> '-6.2E+294' +xfmt5487 format 1992671057292661E0 '0' -> '1992671057292661' +xfmt5488 format -6342308792059909e0 '\xef\x92\x81^,F' -> '-6,342,308,792,059,909' +xfmt5489 format 9725290574428919E370 '\xea\x87\xb2^17,.80g' -> '9.725290574428919e+385' +xfmt5490 format -7600630675713334E139 '' -> '-7.600630675713334E+154' +xfmt5491 format 12.12345678901234567890 '\xe9\xbc\xbd> 68,.87E' -> ' 1.212345678901234567890000000000000000000000000000000000000000000000000000000000000000000E+1' +xfmt5492 format -12345678.12345678901234567890 '\xe7\xba\x86^79.27F' -> '\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86-12345678.123456789012345678900000000\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86\xe7\xba\x86' +xfmt5493 format 54023847e0 '0,' -> '54,023,847' +xfmt5494 format -52506116E0 '\xe8\x8e\xba^-13F' -> '\xe8\x8e\xba\xe8\x8e\xba-52506116\xe8\x8e\xba\xe8\x8e\xba' +xfmt5495 format 10955364e350 '' -> '1.0955364E+357' +xfmt5496 format -89796002e77 '' -> '-8.9796002E+84' +xfmt5497 format 462094058437235828366002637833E0 '\xe5\xb7\x8e>-14.72E' -> '4.620940584372358283660026378330000000000000000000000000000000000000000000E+29' +xfmt5498 format -818076362950626388439329608341E0 '+57.42' -> ' -818076362950626388439329608341' +xfmt5499 format 729742412277814976082365118512e382 '' -> '7.29742412277814976082365118512E+411' +xfmt5500 format -121648499361230695892016604217e301 '' -> '-1.21648499361230695892016604217E+330' +xfmt5501 format 512836473475102543258162e0 '+.31' -> '+512836473475102543258162' +xfmt5502 format -421385703993204978214955E0 '0' -> '-421385703993204978214955' +xfmt5503 format 830445364272815553508386e200 '+081,e' -> '+000,000,000,000,000,000,000,000,000,000,000,000,008.30445364272815553508386e+223' +xfmt5504 format -126855177113764237466231E8 '+021.16' -> '-1.268551771137642E+31' +xfmt5505 format 59810420545440421E0 '\xe9\x85\xb7>+80,.4F' -> '\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7\xe9\x85\xb7+59,810,420,545,440,421.0000' +xfmt5506 format -78659408016948386E0 '+029,e' -> '-000,007.8659408016948386e+16' +xfmt5507 format 81658264691346332E29 '\xea\xbd\xa4^ 74,.51g' -> '\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4 8.1658264691346332e+45\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4\xea\xbd\xa4' +xfmt5508 format -55255048731659502E280 '-015,' -> '-5.5255048731659502E+296' +xfmt5509 format 26013181394873086406390985521e0 '\xe1\x97\xae=-' -> '26013181394873086406390985521' +xfmt5510 format -96782665275031167862151773630E0 '\xe1\x95\x9a<56,.53' -> '-96,782,665,275,031,167,862,151,773,630\xe1\x95\x9a\xe1\x95\x9a\xe1\x95\x9a\xe1\x95\x9a\xe1\x95\x9a\xe1\x95\x9a\xe1\x95\x9a\xe1\x95\x9a\xe1\x95\x9a\xe1\x95\x9a\xe1\x95\x9a\xe1\x95\x9a\xe1\x95\x9a\xe1\x95\x9a\xe1\x95\x9a\xe1\x95\x9a\xe1\x95\x9a' +xfmt5511 format 15831886238790366075894952829E240 '' -> '1.5831886238790366075894952829E+268' +xfmt5512 format -67670971278845104316681162797e232 '\xea\xbc\x86^,.64g' -> '-6.7670971278845104316681162797e+260' +xfmt5513 format 850887465894599777986758456247281352E0 '\xe4\x85\x8f>-75,.1%' -> '\xe4\x85\x8f\xe4\x85\x8f\xe4\x85\x8f\xe4\x85\x8f\xe4\x85\x8f\xe4\x85\x8f\xe4\x85\x8f\xe4\x85\x8f\xe4\x85\x8f\xe4\x85\x8f\xe4\x85\x8f\xe4\x85\x8f\xe4\x85\x8f\xe4\x85\x8f\xe4\x85\x8f\xe4\x85\x8f\xe4\x85\x8f\xe4\x85\x8f\xe4\x85\x8f\xe4\x85\x8f\xe4\x85\x8f\xe4\x85\x8f85,088,746,589,459,977,798,675,845,624,728,135,200.0%' +xfmt5514 format -642184636053532629215746639994054841E0 '\xe8\x93\xb9=-77,.90f' -> '-642,184,636,053,532,629,215,746,639,994,054,841.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5515 format 960410961803624686592158187790334844E118 '\xef\x8b\x94= 63,.7' -> ' \xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x94\xef\x8b\x949.604110E+153' +xfmt5516 format -974867905906193610644555696547110289E336 '\xe5\xa3\xa3>,g' -> '-9.74867905906193610644555696547110289e+371' +xfmt5517 format 180406869699407E0 ',' -> '180,406,869,699,407' +xfmt5518 format -924888404093474e0 '\xe8\xa9\xaf>' -> '-924888404093474' +xfmt5519 format 380294539288970E171 '\xea\x83\x97<' -> '3.80294539288970E+185' +xfmt5520 format -888978905369045e39 '0' -> '-8.88978905369045E+53' +xfmt5521 format 23461574325e0 '\xe7\xa4\x95< 59,.89e' -> ' 2.34615743250000000000000000000000000000000000000000000000000000000000000000000000000000000e+10' +xfmt5522 format -94718841646e0 '\xe6\xbb\xaa=+76,.88f' -> '-94,718,841,646.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5523 format 82225981938e60 'g' -> '8.2225981938e+70' +xfmt5524 format -70132628916E25 '\xe1\xad\xa8<25,.37g' -> '-7.0132628916e+35\xe1\xad\xa8\xe1\xad\xa8\xe1\xad\xa8\xe1\xad\xa8\xe1\xad\xa8\xe1\xad\xa8\xe1\xad\xa8\xe1\xad\xa8' +xfmt5525 format 24362445371868966362834148212037821130534e0 ',' -> '24,362,445,371,868,966,362,834,148,212,037,821,130,534' +xfmt5526 format -80744380556578145685198152160949452828056e0 '\xec\xaa\x9f^ .58n' -> '-80744380556578145685198152160949452828056' +xfmt5527 format 15756723940508730812176978444334300018252E237 '\xe8\xbb\x9b<+17,.78e' -> '+1.575672394050873081217697844433430001825200000000000000000000000000000000000000e+277' +xfmt5528 format -21728336260089459286042507590760192923163e170 '\xe2\x83\x84^+7.75' -> '-2.1728336260089459286042507590760192923163E+210' +xfmt5529 format 232772E0 '+0f' -> '+232772' +xfmt5530 format -589657e0 '15.96n' -> ' -589657' +xfmt5531 format 979413E201 '\xcc\x97<+27,.41g' -> '+9.79413e+206\xcc\x97\xcc\x97\xcc\x97\xcc\x97\xcc\x97\xcc\x97\xcc\x97\xcc\x97\xcc\x97\xcc\x97\xcc\x97\xcc\x97\xcc\x97\xcc\x97' +xfmt5532 format -708042E251 '082n' -> '-0000000000000000000000000000000000000000000000000000000000000000000007.08042e+256' +xfmt5533 format 938909295160251133e0 '\xe7\x93\x9f=+12,%' -> '+93,890,929,516,025,113,300%' +xfmt5534 format -958650200885839897e0 '\xee\xaf\x8e> ,.87%' -> '-95,865,020,088,583,989,700.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt5535 format 683341007608799191e355 '64' -> ' 6.83341007608799191E+372' +xfmt5536 format -108575010295974335E137 '+' -> '-1.08575010295974335E+154' +xfmt5537 format 772009511025049122472025423424250576167273E0 '\xe3\x98\xb2^+59,.97F' -> '+772,009,511,025,049,122,472,025,423,424,250,576,167,273.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5538 format -829721568121608995699907355600122358470501E0 '\xe3\x93\xbe<' -> '-829721568121608995699907355600122358470501' +xfmt5539 format 118113263422858440855001566258068794682128E250 '' -> '1.18113263422858440855001566258068794682128E+291' +xfmt5540 format -547787355705263110584692282037772219734815e215 '03e' -> '-5.47787355705263110584692282037772219734815e+256' +xfmt5541 format 6267335706851112336612276574266406543355e0 '\xe5\x8d\x84< 5,.95' -> ' 6,267,335,706,851,112,336,612,276,574,266,406,543,355' +xfmt5542 format -5194564919157825304271147599830275151083E0 '\xe9\x80\xae>+93,.38%' -> '-519,456,491,915,782,530,427,114,759,983,027,515,108,300.00000000000000000000000000000000000000%' +xfmt5543 format 2437656335398277538516327397495262278602E175 '\xe3\xae\xb6=+88.29E' -> '+\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb6\xe3\xae\xb62.43765633539827753851632739750E+214' +xfmt5544 format -4459373058337241636093638474531885857835E355 '\xea\xb1\x81<' -> '-4.459373058337241636093638474531885857835E+394' +xfmt5545 format 9341841381760637293497324060046677E0 '' -> '9341841381760637293497324060046677' +xfmt5546 format -1043926383511014181304965364269167e0 '' -> '-1043926383511014181304965364269167' +xfmt5547 format 6460447166781595310972355498452511e62 '-,.95' -> '6.460447166781595310972355498452511E+95' +xfmt5548 format -2880853165820952512504760430273602e276 '' -> '-2.880853165820952512504760430273602E+309' +xfmt5549 format 92548310315507032123059628848971652e0 '0' -> '92548310315507032123059628848971652' +xfmt5550 format -57458211709374634130906871445705837E0 ' 0,g' -> '-57,458,211,709,374,634,130,906,871,445,705,837' +xfmt5551 format 29436681009562528277984052899083237e247 '\xe6\x90\xbc=-36' -> '2.9436681009562528277984052899083237E+281' +xfmt5552 format -19621487235253186960754705858527671E118 '\xee\x99\x84^ 10,.7%' -> '-19,621,487,235,253,186,960,754,705,858,527,671,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000%' +xfmt5553 format 156770615E0 ' 090,.60' -> ' 0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,156,770,615' +xfmt5554 format -304119356E0 '' -> '-304119356' +xfmt5555 format 497035260e248 '\xe6\x87\x9b<96,.29G' -> '4.97035260E+256\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b\xe6\x87\x9b' +xfmt5556 format -485072694E335 '+0,' -> '-4.85072694E+343' +xfmt5557 format 92865852657183162805004e0 '\xe3\xbc\x98^ 67,.54G' -> '\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98 92,865,852,657,183,162,805,004\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98\xe3\xbc\x98' +xfmt5558 format -42962106080726407019981e0 '+0.87' -> '-42962106080726407019981' +xfmt5559 format 57197138496767443198835E324 ' 0,.79f' -> ' 57,197,138,496,767,443,198,835,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5560 format -22851947925590075953402e95 '-3.75' -> '-2.2851947925590075953402E+117' +xfmt5561 format 8979064798707030291E0 '\xe1\x99\xb5>+,.56e' -> '+8.97906479870703029100000000000000000000000000000000000000e+18' +xfmt5562 format -6126056798235191402E0 '\xe1\x96\xbd= .30' -> '-6126056798235191402' +xfmt5563 format 2938604758847489671e282 '\xe4\xaf\x90^60.48' -> '\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x902.938604758847489671E+300\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90' +xfmt5564 format -2826823530682574006E40 '\xe5\x8a\x8c=+97.86G' -> '-\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c\xe5\x8a\x8c2.826823530682574006E+58' +xfmt5565 format 8082702869726660381645303721E0 '\xec\xa6\xa6=+,G' -> '+8,082,702,869,726,660,381,645,303,721' +xfmt5566 format -3357616857275278175854539216E0 ',.26' -> '-3.3576168572752781758545392E+27' +xfmt5567 format 2503953389364441713401740717e254 '' -> '2.503953389364441713401740717E+281' +xfmt5568 format -7366691392377873284740498643E307 '\xea\x90\x81<25.26' -> '-7.3666913923778732847404986E+334' +xfmt5569 format 9364215831037423e0 '\xeb\xbd\x8d^,e' -> '9.364215831037423e+15' +xfmt5570 format -9841639488855633E0 '\xe9\xaa\x98> 26,.80F' -> '-9,841,639,488,855,633.00000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5571 format 3980331531561388e2 '65,' -> ' 3.980331531561388E+17' +xfmt5572 format -8897684269592416e103 '\xe4\x8a\x9b> 52.63e' -> '-8.897684269592416000000000000000000000000000000000000000000000000e+118' +xfmt5573 format 5173201283623382775268482459782863311893068E0 '76,' -> ' 5,173,201,283,623,382,775,268,482,459,782,863,311,893,068' +xfmt5574 format -1850047421600278863017349491466962212841780E0 '\xdc\xb3> 15,.69F' -> '-1,850,047,421,600,278,863,017,349,491,466,962,212,841,780.000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5575 format 3364228530446838414601679874382362755628136E217 '\xe1\xa3\xa1>-,.32F' -> '33,642,285,304,468,384,146,016,798,743,823,627,556,281,360,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000' +xfmt5576 format -6074660980336097852424194648209266283984829e32 '\xeb\x9a\x8c< 44,.66e' -> '-6.074660980336097852424194648209266283984829000000000000000000000000e+74' +xfmt5577 format 65617506729534573144213158758826344551e0 '\xea\xaa\x98> 56,.18%' -> ' 6,561,750,672,953,457,314,421,315,875,882,634,455,100.000000000000000000%' +xfmt5578 format -47115908865080110621978434670680062152E0 '095,.39' -> '-00,000,000,000,000,000,000,000,000,000,000,047,115,908,865,080,110,621,978,434,670,680,062,152' +xfmt5579 format 49662942837544023691570071517934144805E80 '\xe2\x99\xab=+55.65g' -> '+\xe2\x99\xab\xe2\x99\xab\xe2\x99\xab\xe2\x99\xab\xe2\x99\xab\xe2\x99\xab\xe2\x99\xab\xe2\x99\xab\xe2\x99\xab\xe2\x99\xab4.9662942837544023691570071517934144805e+117' +xfmt5580 format -92492620185869568416746608004520846609e7 '+010.19n' -> '-9.249262018586956842e+44' +xfmt5581 format 1e0 '\xee\xa6\x80=48,F' -> '\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x80\xee\xa6\x801' +xfmt5582 format -3E0 ' ' -> '-3' +xfmt5583 format 2E42 ' 28,.73' -> ' 2E+42' +xfmt5584 format -9e54 '\xea\xbb\xb9=-.91' -> '-9E+54' +xfmt5585 format 8736e0 ' 37.71g' -> ' 8736' +xfmt5586 format -6928E0 '076,.94' -> '-000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,006,928' +xfmt5587 format 3506e124 '\xee\xbc\xa1=-74,.65%' -> '3,506,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000%' +xfmt5588 format -7923E234 '0,.92' -> '-7.923E+237' +xfmt5589 format 11795478004930044285067850363716480948956138e0 '' -> '11795478004930044285067850363716480948956138' +xfmt5590 format -44324455947916793321191256086107931918648202E0 '\xeb\xb4\x97^ 70,e' -> '\xeb\xb4\x97\xeb\xb4\x97\xeb\xb4\x97\xeb\xb4\x97\xeb\xb4\x97\xeb\xb4\x97\xeb\xb4\x97\xeb\xb4\x97\xeb\xb4\x97\xeb\xb4\x97-4.4324455947916793321191256086107931918648202e+43\xeb\xb4\x97\xeb\xb4\x97\xeb\xb4\x97\xeb\xb4\x97\xeb\xb4\x97\xeb\xb4\x97\xeb\xb4\x97\xeb\xb4\x97\xeb\xb4\x97\xeb\xb4\x97' +xfmt5591 format 31740556104602085659315194979171800914850039E122 '044.64' -> '3.1740556104602085659315194979171800914850039E+165' +xfmt5592 format -42779440088944165540653214668322634894227356E254 '\xe5\x83\xb9>-11,F' -> '-4,277,944,008,894,416,554,065,321,466,832,263,489,422,735,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt5593 format 389940164413698619557708917907800321240E0 '' -> '389940164413698619557708917907800321240' +xfmt5594 format -427138793440051835891726630807960760032E0 '\xeb\xb5\x89> 45,.25e' -> '\xeb\xb5\x89\xeb\xb5\x89\xeb\xb5\x89\xeb\xb5\x89\xeb\xb5\x89\xeb\xb5\x89\xeb\xb5\x89\xeb\xb5\x89\xeb\xb5\x89\xeb\xb5\x89\xeb\xb5\x89\xeb\xb5\x89\xeb\xb5\x89-4.2713879344005183589172663e+38' +xfmt5595 format 263696435896759540414218925095931956817E196 '\xe3\xb5\x9c=-89,.50G' -> '\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c\xe3\xb5\x9c2.63696435896759540414218925095931956817E+234' +xfmt5596 format -351336629924604032381092418796442028988E64 '\xe9\xa6\xb0^48' -> '\xe9\xa6\xb0-3.51336629924604032381092418796442028988E+102\xe9\xa6\xb0' +xfmt5597 format 3403482079816229482986303904968E0 '0,' -> '3,403,482,079,816,229,482,986,303,904,968' +xfmt5598 format -6639360086913523299372343068841e0 '\xef\xbe\x88=-,' -> '-6,639,360,086,913,523,299,372,343,068,841' +xfmt5599 format 9716798229518726738190328620402E167 '\xed\x9f\x96=60.62g' -> '\xed\x9f\x96\xed\x9f\x96\xed\x9f\x96\xed\x9f\x96\xed\x9f\x96\xed\x9f\x96\xed\x9f\x96\xed\x9f\x96\xed\x9f\x96\xed\x9f\x96\xed\x9f\x96\xed\x9f\x96\xed\x9f\x96\xed\x9f\x96\xed\x9f\x96\xed\x9f\x96\xed\x9f\x96\xed\x9f\x96\xed\x9f\x96\xed\x9f\x96\xed\x9f\x96\xed\x9f\x96\xed\x9f\x969.716798229518726738190328620402e+197' +xfmt5600 format -8282399248639510684694347085345e264 '\xe7\xac\x8a>86.37' -> '\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a\xe7\xac\x8a-8.282399248639510684694347085345E+294' +xfmt5601 format 13215932365998398095387085689069e0 '0E' -> '1.3215932365998398095387085689069E+31' +xfmt5602 format -29009355883732163817052889987372e0 '\xe1\x89\x87>-38,.79g' -> '-29,009,355,883,732,163,817,052,889,987,372' +xfmt5603 format 69775644138315873397570601615818e194 '-31,' -> '6.9775644138315873397570601615818E+225' +xfmt5604 format -55033641234069401075195005998691e307 '\xe3\xa8\xb0< 98.97' -> '-5.5033641234069401075195005998691E+338\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0\xe3\xa8\xb0' +xfmt5605 format 8022829933416996856170016658571656259e0 '\xee\xa1\x89^ ,.63e' -> ' 8.022829933416996856170016658571656259000000000000000000000000000e+36' +xfmt5606 format -6710561590269853260958106494940854547e0 '\xe6\xb4\x84>' -> '-6710561590269853260958106494940854547' +xfmt5607 format 5425619266792078438821919603726379070e134 ' ,' -> ' 5.425619266792078438821919603726379070E+170' +xfmt5608 format -1267151564609701609170602017532350588e327 'E' -> '-1.267151564609701609170602017532350588E+363' +xfmt5609 format 28901184072881963919892043E0 '\xe3\x83\xb2< ,E' -> ' 2.8901184072881963919892043E+25' +xfmt5610 format -65870601933119161546501340E0 '\xed\x9e\x84^6,.76g' -> '-65,870,601,933,119,161,546,501,340' +xfmt5611 format 94375034680015762630788193E358 '\xee\x97\xaa=+,.30' -> '+9.4375034680015762630788193E+383' +xfmt5612 format -39801856003627882037618637e92 '' -> '-3.9801856003627882037618637E+117' +xfmt5613 format 12345678901234567890.1234567890123 '54,.28E' -> ' 1.2345678901234567890123456789E+19' +xfmt5614 format -1234.12345678901234567890 '-72,.70e' -> '-1.2341234567890123456789000000000000000000000000000000000000000000000000e+3' +xfmt5615 format 88033931826152493e0 '' -> '88033931826152493' +xfmt5616 format -16708742255411840e0 '+055,g' -> '-00,000,000,000,000,000,000,000,016,708,742,255,411,840' +xfmt5617 format 87919828222773318E380 ' ' -> ' 8.7919828222773318E+396' +xfmt5618 format -62793311897089158e231 '\xe5\xb3\x8d>+4,.7e' -> '-6.2793312e+247' +xfmt5619 format 469834298650153362101375102847523e0 '\xe4\xaf\xbd=' -> '469834298650153362101375102847523' +xfmt5620 format -242555163505116338241697404849076E0 '' -> '-242555163505116338241697404849076' +xfmt5621 format 822362999638351734403460184309576e258 '\xe1\xb2\xa3>-70,.29' -> '\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa3\xe1\xb2\xa38.2236299963835173440346018431E+290' +xfmt5622 format -192327853646272998708220280529607E197 '\xec\xbd\xbd>' -> '-1.92327853646272998708220280529607E+229' +xfmt5623 format 194539E0 '\xeb\x9c\x8c=,.76' -> '194,539' +xfmt5624 format -507846e0 '\xee\xb9\x87=+60,.89e' -> '-5.07846000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+5' +xfmt5625 format 409706E200 '064,.17f' -> '40,970,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000' +xfmt5626 format -629169e4 '\xe7\x96\x8c<' -> '-6.29169E+9' +xfmt5627 format 62277194026446724899312262737780713977823e0 '-14,' -> '62,277,194,026,446,724,899,312,262,737,780,713,977,823' +xfmt5628 format -85429155653709115782031704538465811270822E0 '.2f' -> '-85429155653709115782031704538465811270822.00' +xfmt5629 format 30657828068478373792105753912852733056313E107 '91' -> ' 3.0657828068478373792105753912852733056313E+147' +xfmt5630 format -53982842049719049960436540521452835555027E157 '\xe4\xb7\x94<-.71' -> '-5.3982842049719049960436540521452835555027E+197' +xfmt5631 format 4E0 '\xe7\xa4\xab^83,.2f' -> '\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab4.00\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab\xe7\xa4\xab' +xfmt5632 format -8E0 ',.25' -> '-8' +xfmt5633 format 9E105 '\xe2\x80\xb0^,.7g' -> '9e+105' +xfmt5634 format -3E256 '\xe7\xaf\xb3=6.76' -> '-3E+256' +xfmt5635 format 8965353502869442119524820311582986967376884e0 '\xe5\xa2\x94= 59,.30F' -> ' 8,965,353,502,869,442,119,524,820,311,582,986,967,376,884.000000000000000000000000000000' +xfmt5636 format -6806319308750909868626546554197455840820897E0 '\xc2\xbc^ 52,.96g' -> '-6,806,319,308,750,909,868,626,546,554,197,455,840,820,897' +xfmt5637 format 5909798484912209631450569240608031177462253e33 '\xea\xa8\xbc^-,' -> '5.909798484912209631450569240608031177462253E+75' +xfmt5638 format -2716852553593931711518545876936411739129975E227 '41E' -> '-2.716852553593931711518545876936411739129975E+269' +xfmt5639 format 14644770675469808289937504737e0 ' 0.62' -> ' 14644770675469808289937504737' +xfmt5640 format -79178466257223633258397125310E0 '\xe8\x8e\xb2^ 30f' -> '-79178466257223633258397125310' +xfmt5641 format 69186063828730256784716980298e62 '\xe5\xb6\xb9>-9,.90%' -> '691,860,638,287,302,567,847,169,802,980,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt5642 format -42525320992274522580028013982e310 '\xe9\x98\xb8<.97g' -> '-4.2525320992274522580028013982e+338' +xfmt5643 format 377573945356288e0 '0' -> '377573945356288' +xfmt5644 format -824575655725478e0 '\xe1\xa9\x89>20,E' -> '-8.24575655725478E+14' +xfmt5645 format 899520083309327e129 '\xea\xbb\x8d>84,f' -> '899,520,083,309,327,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt5646 format -363472412034291e231 '\xea\x91\x8f=-8,.45F' -> '-363,472,412,034,291,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000' +xfmt5647 format 36439994095694E0 '\xe7\xa4\x85=-99,.66g' -> '\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x85\xe7\xa4\x8536,439,994,095,694' +xfmt5648 format -20630809935955E0 ' 43.11g' -> ' -2.0630809936e+13' +xfmt5649 format 64216796331269e39 '+' -> '+6.4216796331269E+52' +xfmt5650 format -13244543479940e180 '\xe6\x8d\x83^ 27,.32' -> '\xe6\x8d\x83\xe6\x8d\x83\xe6\x8d\x83-1.3244543479940E+193\xe6\x8d\x83\xe6\x8d\x83\xe6\x8d\x83' +xfmt5651 format 10593634720893696384369635E0 '\xde\xa8=-57,.29F' -> '10,593,634,720,893,696,384,369,635.00000000000000000000000000000' +xfmt5652 format -18416423766129096133398783e0 '\xeb\xbc\xb6^94,.61g' -> '\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6-18,416,423,766,129,096,133,398,783\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6\xeb\xbc\xb6' +xfmt5653 format 96259327457377665821264342E180 '\xe1\x8e\xbf<.32' -> '9.6259327457377665821264342E+205' +xfmt5654 format -95016530881950464408465261e340 '\xe1\xbc\x9a^+,.52%' -> '-95,016,530,881,950,464,408,465,261,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000%' +xfmt5655 format 60024028017715387403434839022001683454e0 '\xe6\x98\xaa>62.45f' -> '60024028017715387403434839022001683454.000000000000000000000000000000000000000000000' +xfmt5656 format -78443748067376118928210025964374041421e0 ' 0,.92' -> '-78,443,748,067,376,118,928,210,025,964,374,041,421' +xfmt5657 format 79351872599336278550624566977669188606E65 ' ,' -> ' 7.9351872599336278550624566977669188606E+102' +xfmt5658 format -26221927194642946562699055266575835213e28 '\xe1\xb6\x9f^73F' -> '\xe1\xb6\x9f\xe1\xb6\x9f\xe1\xb6\x9f-262219271946429465626990552665758352130000000000000000000000000000\xe1\xb6\x9f\xe1\xb6\x9f\xe1\xb6\x9f' +xfmt5659 format 9784979488412612817326174907E0 '' -> '9784979488412612817326174907' +xfmt5660 format -9635763206333419001893087358e0 ',' -> '-9,635,763,206,333,419,001,893,087,358' +xfmt5661 format 1561255253085077326992117653e282 '-,' -> '1.561255253085077326992117653E+309' +xfmt5662 format -2333366152479331811096438313e203 '+092,.47g' -> '-00,000,000,000,000,000,000,000,000,000,000,000,000,000,002.333366152479331811096438313e+230' +xfmt5663 format 94659925414E0 '\xeb\xac\x90<-12,.33F' -> '94,659,925,414.000000000000000000000000000000000' +xfmt5664 format -51227869831e0 '' -> '-51227869831' +xfmt5665 format 30002537437E141 '-051,.73E' -> '3.0002537437000000000000000000000000000000000000000000000000000000000000000E+151' +xfmt5666 format -86715739456E301 '' -> '-8.6715739456E+311' +xfmt5667 format 978374274e0 '' -> '978374274' +xfmt5668 format -804027560E0 '.10E' -> '-8.0402756000E+8' +xfmt5669 format 915474391e310 '\xe2\xa5\x94^24n' -> '\xe2\xa5\x94\xe2\xa5\x94\xe2\xa5\x94\xe2\xa5\x949.15474391e+318\xe2\xa5\x94\xe2\xa5\x94\xe2\xa5\x94\xe2\xa5\x94\xe2\xa5\x94' +xfmt5670 format -161552152E95 '\xe6\xa2\x95=+49,.52e' -> '-1.6155215200000000000000000000000000000000000000000000e+103' +xfmt5671 format 3075E0 '\xeb\x94\xbb<+21,.67e' -> '+3.0750000000000000000000000000000000000000000000000000000000000000000e+3' +xfmt5672 format -6635e0 '\xe9\xb4\x92>+63,%' -> '\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92\xe9\xb4\x92-663,500%' +xfmt5673 format 6071E79 '-084,g' -> '0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,006.071e+82' +xfmt5674 format -9366e33 '\xe0\xac\xbb>16.58' -> '\xe0\xac\xbb\xe0\xac\xbb\xe0\xac\xbb\xe0\xac\xbb\xe0\xac\xbb\xe0\xac\xbb-9.366E+36' +xfmt5675 format 93073569047854218938354945213878E0 '\xef\x8b\x8e^ 26,.15F' -> ' 93,073,569,047,854,218,938,354,945,213,878.000000000000000' +xfmt5676 format -60939323062837157819257493916586e0 '+.74f' -> '-60939323062837157819257493916586.00000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5677 format 25965469882612796128912798021770e92 '' -> '2.5965469882612796128912798021770E+123' +xfmt5678 format -90660625698659566300877105731389E257 '\xce\x88>.41' -> '-9.0660625698659566300877105731389E+288' +xfmt5679 format 7639592960327980398504e0 '\xd4\x95<+15' -> '+7639592960327980398504' +xfmt5680 format -2142605117993984680159e0 '05,' -> '-2,142,605,117,993,984,680,159' +xfmt5681 format 5031356689182919895605e72 '' -> '5.031356689182919895605E+93' +xfmt5682 format -6296631934138891787142E357 '+.46' -> '-6.296631934138891787142E+378' +xfmt5683 format 1071640859025131914E0 '' -> '1071640859025131914' +xfmt5684 format -3843233183358827045E0 '-' -> '-3843233183358827045' +xfmt5685 format 5883444203357564125E273 '\xe7\x9f\x96<-64,.52%' -> '588,344,420,335,756,412,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000%' +xfmt5686 format -8659331005196264910e206 '\xee\x8b\xae^ ,.23%' -> '-86,593,310,051,962,649,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000%' +xfmt5687 format 25420709680805510327e0 '0g' -> '25420709680805510327' +xfmt5688 format -43971560824145293068E0 ' 058.27G' -> '-000000000000000000000000000000000000043971560824145293068' +xfmt5689 format 77168643878797527629e240 '\xee\x90\x9b^,.12' -> '7.71686438788E+259' +xfmt5690 format -80552544856637776426E200 '\xe9\xa7\xab>+69,.49f' -> '-8,055,254,485,663,777,642,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000' +xfmt5691 format 995038566590940215003e0 '\xea\xba\xa5=+73,.13E' -> '+\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa5\xea\xba\xa59.9503856659094E+20' +xfmt5692 format -902991197659683051116E0 '' -> '-902991197659683051116' +xfmt5693 format 456270189124349361603e209 '\xdd\x8c=-99.34F' -> '45627018912434936160300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000' +xfmt5694 format -797109542739209463281E321 '\xe6\xbc\xb1> .21e' -> '-7.971095427392094632810e+341' +xfmt5695 format 205435196684623251490140092754495965e0 '077' -> '00000000000000000000000000000000000000000205435196684623251490140092754495965' +xfmt5696 format -477965213082831690441008708317424167E0 '\xec\x99\xa3=+78.12E' -> '-\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa3\xec\x99\xa34.779652130828E+35' +xfmt5697 format 954987565657446559023487106581736743e272 ',' -> '9.54987565657446559023487106581736743E+307' +xfmt5698 format -675626768740199561752236534162249804e62 '\xe9\x88\x91^ 32' -> '-6.75626768740199561752236534162249804E+97' +xfmt5699 format 95342142972840391442721664287585045176885423E0 '' -> '95342142972840391442721664287585045176885423' +xfmt5700 format -87360475370229776844563674433193041368876360E0 '' -> '-87360475370229776844563674433193041368876360' +xfmt5701 format 88609157236026403087134770346874889510863338e263 '\xe2\xad\x9e^10' -> '8.8609157236026403087134770346874889510863338E+306' +xfmt5702 format -68922970818120957029302172343906982680688609E86 'e' -> '-6.8922970818120957029302172343906982680688609e+129' +xfmt5703 format 98E0 ',' -> '98' +xfmt5704 format -17e0 '\xea\xaf\xa1>89,.10e' -> '\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1\xea\xaf\xa1-1.7000000000e+1' +xfmt5705 format 83e41 '\xe8\x9e\x92^+7.96e' -> '+8.300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+42' +xfmt5706 format -78e70 '+075,.41F' -> '-780,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000' +xfmt5707 format 9852494777191694701812121562332E0 '078,' -> '00,000,000,000,000,000,000,000,000,009,852,494,777,191,694,701,812,121,562,332' +xfmt5708 format -1679205211676747473882668883707e0 '' -> '-1679205211676747473882668883707' +xfmt5709 format 8346679882303898666180036713289E315 '' -> '8.346679882303898666180036713289E+345' +xfmt5710 format -8088103832668431333015757035021E104 '\xea\x9a\x83<46' -> '-8.088103832668431333015757035021E+134\xea\x9a\x83\xea\x9a\x83\xea\x9a\x83\xea\x9a\x83\xea\x9a\x83\xea\x9a\x83\xea\x9a\x83\xea\x9a\x83' +xfmt5711 format 4755073119148276E0 '+094.65g' -> '+000000000000000000000000000000000000000000000000000000000000000000000000000004755073119148276' +xfmt5712 format -3754373008737970E0 '\xe8\x9e\xae= 43,.85' -> '-\xe8\x9e\xae\xe8\x9e\xae\xe8\x9e\xae\xe8\x9e\xae\xe8\x9e\xae\xe8\x9e\xae\xe8\x9e\xae\xe8\x9e\xae\xe8\x9e\xae\xe8\x9e\xae\xe8\x9e\xae\xe8\x9e\xae\xe8\x9e\xae\xe8\x9e\xae\xe8\x9e\xae\xe8\x9e\xae\xe8\x9e\xae\xe8\x9e\xae\xe8\x9e\xae\xe8\x9e\xae\xe8\x9e\xae3,754,373,008,737,970' +xfmt5713 format 6369832253023159e210 ' 035,' -> ' 0,000,000,006.369832253023159E+225' +xfmt5714 format -4305001054898662e217 '\xef\xb2\x8c^-,.17g' -> '-4.305001054898662e+232' +xfmt5715 format 48533910509274889833920134632108972e0 '\xe2\x9a\xb8>-96,.17e' -> '\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb8\xe2\x9a\xb84.85339105092748898e+34' +xfmt5716 format -54841177911904605453979623021455967E0 '\xe1\x9e\x87=-70' -> '-\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x87\xe1\x9e\x8754841177911904605453979623021455967' +xfmt5717 format 62108033848052292445909917350223291e67 '\xec\xbb\x8c= 62,.21E' -> ' \xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c\xec\xbb\x8c6.210803384805229244591E+101' +xfmt5718 format -62299347654869739524860566418203518E196 '31.71' -> '-6.2299347654869739524860566418203518E+230' +xfmt5719 format 4609779331281E0 '47.53G' -> ' 4609779331281' +xfmt5720 format -2976934189780E0 '\xeb\xa3\xba> 10.77n' -> '-2976934189780' +xfmt5721 format 6266350185583E217 '\xe5\x91\x8d>+84,.38%' -> '+6,266,350,185,583,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000%' +xfmt5722 format -4758904897483e322 '043,.49G' -> '-0,000,000,000,000,000,004.758904897483E+334' +xfmt5723 format 725735530933989614E0 '+74,.98f' -> '+725,735,530,933,989,614.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5724 format -423137003413592205e0 '-33,.57g' -> ' -423,137,003,413,592,205' +xfmt5725 format 296301956660227591e10 '\xe8\xaa\xbc>+89,.18e' -> '\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc\xe8\xaa\xbc+2.963019566602275910e+27' +xfmt5726 format -702224834182563538E1 '\xe0\xa8\x86>78,G' -> '\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86\xe0\xa8\x86-7.02224834182563538E+18' +xfmt5727 format 32000990E0 '' -> '32000990' +xfmt5728 format -95489836e0 '\xef\x96\xae<50,.50g' -> '-95,489,836\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae\xef\x96\xae' +xfmt5729 format 58727822E310 '\xe1\xbb\x86= 28,' -> ' \xe1\xbb\x86\xe1\xbb\x86\xe1\xbb\x86\xe1\xbb\x86\xe1\xbb\x86\xe1\xbb\x86\xe1\xbb\x86\xe1\xbb\x86\xe1\xbb\x86\xe1\xbb\x86\xe1\xbb\x86\xe1\xbb\x86\xe1\xbb\x865.8727822E+317' +xfmt5730 format -85900289e277 '' -> '-8.5900289E+284' +xfmt5731 format 6869397151962138308300238982682209822854e0 '\xe8\xa3\x9a<72,.35g' -> '6.8693971519621383083002389826822098e+39\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a\xe8\xa3\x9a' +xfmt5732 format -3890550393269073065909861499842418152081E0 '0n' -> '-3890550393269073065909861499842418152081' +xfmt5733 format 5325277237531152268497799508377074615366e260 '.97' -> '5.325277237531152268497799508377074615366E+299' +xfmt5734 format -6945908721687968502871448338507408250061e107 '\xea\xb2\x9b=.63' -> '-6.945908721687968502871448338507408250061E+146' +xfmt5735 format 12345678901234.123456789012345678 '\xea\x81\xb3=-44,.37E' -> '\xea\x81\xb31.2345678901234123456789012345678000000E+13' +xfmt5736 format -12345678901234.123456 '\xee\x9b\x86=-,.21' -> '-12,345,678,901,234.123456' +xfmt5737 format 1673401258375221230194127962054193985678271e0 '\xe1\xa6\x9f=+,E' -> '+1.673401258375221230194127962054193985678271E+42' +xfmt5738 format -6110830025048373170597627813311766360654030e0 '' -> '-6110830025048373170597627813311766360654030' +xfmt5739 format 6931194349434640087102493615957653490213621E39 '\xc8\xa1^+,.17%' -> '+693,119,434,943,464,008,710,249,361,595,765,349,021,362,100,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000%' +xfmt5740 format -4113336286474070947900614420837422195693960e50 '' -> '-4.113336286474070947900614420837422195693960E+92' +xfmt5741 format 860067076E0 '-69,f' -> ' 860,067,076' +xfmt5742 format -172479786e0 '\xef\xb9\x9e=.33f' -> '-172479786.000000000000000000000000000000000' +xfmt5743 format 375107975E116 '\xe0\xbd\x81^ 58,F' -> ' 37,510,797,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt5744 format -717380530e86 '' -> '-7.17380530E+94' +xfmt5745 format 886565503661247425732860366451219E0 '\xe6\x82\x9b<-8,.45%' -> '88,656,550,366,124,742,573,286,036,645,121,900.000000000000000000000000000000000000000000000%' +xfmt5746 format -346977936358339458879779153565257e0 '0.2' -> '-3.5E+32' +xfmt5747 format 952756955105864985371930680644174e85 '\xe0\xa7\xab^19,.72%' -> '952,756,955,105,864,985,371,930,680,644,174,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt5748 format -992024472972081012397097658640638e130 '\xee\x92\x82=+' -> '-9.92024472972081012397097658640638E+162' +xfmt5749 format 160197236121176906006073860012e0 '\xe1\xba\xbd< 98,.87G' -> ' 160,197,236,121,176,906,006,073,860,012\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd\xe1\xba\xbd' +xfmt5750 format -764287981312086520541638571731e0 '\xec\xae\x87> ' -> '-764287981312086520541638571731' +xfmt5751 format 110860120374231915601740817413e249 '08,%' -> '11,086,012,037,423,191,560,174,081,741,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt5752 format -195192259853224002894279442656e161 '' -> '-1.95192259853224002894279442656E+190' +xfmt5753 format 25473415587672374030668499992856458669682e0 '' -> '25473415587672374030668499992856458669682' +xfmt5754 format -87701868360755885535695078065531850895544e0 '' -> '-87701868360755885535695078065531850895544' +xfmt5755 format 84048254482174310615988733952149105056093e25 '' -> '8.4048254482174310615988733952149105056093E+65' +xfmt5756 format -14868856201846110699937861147297478814436e13 '\xec\xb8\xad=' -> '-1.4868856201846110699937861147297478814436E+53' +xfmt5757 format 47785e0 '\xe5\xbd\x8f>+93,.4e' -> '\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f\xe5\xbd\x8f+4.7785e+4' +xfmt5758 format -62496e0 '\xe7\x92\x84<-4,.42G' -> '-62,496' +xfmt5759 format 45302e141 '\xee\xac\x85<90,.84' -> '4.5302E+145\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85\xee\xac\x85' +xfmt5760 format -17783E322 '25,' -> ' -1.7783E+326' +xfmt5761 format 72610856886917762681406850993289864118e0 '\xe2\xbe\x90<+5,.19G' -> '+7.261085688691776268E+37' +xfmt5762 format -84882211704726961281385311238036551011E0 '' -> '-84882211704726961281385311238036551011' +xfmt5763 format 29611936021192978330614992856368687614E258 '9,.56' -> '2.9611936021192978330614992856368687614E+295' +xfmt5764 format -49373473022837699896776886891150092152E197 '\xea\xa1\x86>98' -> '\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86\xea\xa1\x86-4.9373473022837699896776886891150092152E+234' +xfmt5765 format 88562760371e0 ',' -> '88,562,760,371' +xfmt5766 format -46733529399E0 '+43' -> ' -46733529399' +xfmt5767 format 56469511132e95 '\xe1\xa9\x8a=4F' -> '5646951113200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5768 format -14267462790e67 '\xe1\xbc\x89>.95F' -> '-142674627900000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5769 format 392060e0 '0.62' -> '392060' +xfmt5770 format -458045e0 '0.57' -> '-458045' +xfmt5771 format 396871e133 '+' -> '+3.96871E+138' +xfmt5772 format -540673e347 '\xea\x9e\x91^+73,.68E' -> '-5.40673000000000000000000000000000000000000000000000000000000000000000E+352' +xfmt5773 format 0E0 '\xea\x84\x8f=-12,.89f' -> '0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5774 format 0e0 '\xe4\xba\x89^-87,.35G' -> '\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x890\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89\xe4\xba\x89' +xfmt5775 format 0E369 '\xe7\xb5\xba> ,' -> ' 0E+369' +xfmt5776 format 0E195 '\xee\xb8\xa8<-2,.35%' -> '0.00000000000000000000000000000000000%' +xfmt5777 format 3317040922838857E0 '077,' -> '0,000,000,000,000,000,000,000,000,000,000,000,000,000,003,317,040,922,838,857' +xfmt5778 format -6224670715517789E0 '\xea\x9c\xa4>-3,.51F' -> '-6,224,670,715,517,789.000000000000000000000000000000000000000000000000000' +xfmt5779 format 4319119103322851e154 '' -> '4.319119103322851E+169' +xfmt5780 format -2555633529278949e253 ' 011.56n' -> '-2.555633529278949e+268' +xfmt5781 format 4354809E0 '083' -> '00000000000000000000000000000000000000000000000000000000000000000000000000004354809' +xfmt5782 format -9084789e0 ' ' -> '-9084789' +xfmt5783 format 4530253e197 '\xeb\xad\x87^ 51,g' -> '\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87 4.530253e+203\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87\xeb\xad\x87' +xfmt5784 format -8836466E28 '\xe8\xa8\x9e<11,.60' -> '-8.836466E+34' +xfmt5785 format 74705682951172467603114308877043666e0 '0' -> '74705682951172467603114308877043666' +xfmt5786 format -19210151601499048299833671649562701E0 '083' -> '-0000000000000000000000000000000000000000000000019210151601499048299833671649562701' +xfmt5787 format 89182625292463378153712763737951866e122 '\xef\x96\xa5=+' -> '+8.9182625292463378153712763737951866E+156' +xfmt5788 format -66012113517463366783348083048066083e62 '' -> '-6.6012113517463366783348083048066083E+96' +xfmt5789 format 30882999e0 '\xe8\x8c\xaa>74,.17%' -> '\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa\xe8\x8c\xaa3,088,299,900.00000000000000000%' +xfmt5790 format -51033225E0 '.75' -> '-51033225' +xfmt5791 format 16219488E311 ',' -> '1.6219488E+318' +xfmt5792 format -30097689e11 '0,' -> '-3.0097689E+18' +xfmt5793 format 61887278323734127792973E0 '' -> '61887278323734127792973' +xfmt5794 format -15117449378097593499267e0 '-,.82' -> '-15,117,449,378,097,593,499,267' +xfmt5795 format 24958161936208308735618E2 '' -> '2.4958161936208308735618E+24' +xfmt5796 format -30006387379068015814000e45 ' %' -> '-3000638737906801581400000000000000000000000000000000000000000000000000%' +xfmt5797 format 1477305849215246988e0 '' -> '1477305849215246988' +xfmt5798 format -9117886642233641990e0 '\xe5\x90\xa3=37,.97f' -> '-9,117,886,642,233,641,990.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5799 format 9872300501827342841E20 '' -> '9.872300501827342841E+38' +xfmt5800 format -3838708291449756570E314 '51%' -> '-38387082914497565700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt5801 format 12655926032795858E0 '' -> '12655926032795858' +xfmt5802 format -24706010261605627e0 '-30' -> ' -24706010261605627' +xfmt5803 format 64576920367467593E69 '\xea\xb7\xae=51,.9' -> '\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae\xea\xb7\xae6.45769204E+85' +xfmt5804 format -10867253025487191E69 '' -> '-1.0867253025487191E+85' +xfmt5805 format 1E0 '\xee\x9a\xbe>+84,.26E' -> '\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe\xee\x9a\xbe+1.00000000000000000000000000E+0' +xfmt5806 format -3E0 '' -> '-3' +xfmt5807 format 1e273 '\xe4\xa7\xb1< 56,.82e' -> ' 1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000e+273' +xfmt5808 format -8E352 '' -> '-8E+352' +xfmt5809 format 983095247271599909993111e0 '\xec\xae\x99<97,%' -> '98,309,524,727,159,990,999,311,100%\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99\xec\xae\x99' +xfmt5810 format -265886928431228386851527E0 '\xe7\x92\x96=,G' -> '-265,886,928,431,228,386,851,527' +xfmt5811 format 687947837266445486335544e106 '\xe2\x9b\x8d<76,' -> '6.87947837266445486335544E+129\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d\xe2\x9b\x8d' +xfmt5812 format -981497800442833819865248E293 '\xed\x8f\xac<-,' -> '-9.81497800442833819865248E+316' +xfmt5813 format 415e0 '\xea\xac\x84^8f' -> '\xea\xac\x84\xea\xac\x84415\xea\xac\x84\xea\xac\x84\xea\xac\x84' +xfmt5814 format -634E0 '' -> '-634' +xfmt5815 format 794e177 '0,' -> '7.94E+179' +xfmt5816 format -831E117 '\xe3\x84\x96>5,.92g' -> '-8.31e+119' +xfmt5817 format 3270710651050004203142236627352476E0 '-036,' -> '3,270,710,651,050,004,203,142,236,627,352,476' +xfmt5818 format -2386849675565340077573438073769382e0 '\xe2\x80\x9d<,.55' -> '-2,386,849,675,565,340,077,573,438,073,769,382' +xfmt5819 format 5458664288582443417338272288274818E207 '\xeb\x97\xa5^14G' -> '5.458664288582443417338272288274818E+240' +xfmt5820 format -4774235241901287514691002990053200E12 '\xe9\xaa\xa2>+48n' -> '\xe9\xaa\xa2\xe9\xaa\xa2\xe9\xaa\xa2\xe9\xaa\xa2\xe9\xaa\xa2\xe9\xaa\xa2\xe9\xaa\xa2\xe9\xaa\xa2-4.774235241901287514691002990053200e+45' +xfmt5821 format 9846198383491627187436935e0 '\xe4\xad\xac>g' -> '9846198383491627187436935' +xfmt5822 format -7431355255968510181313945E0 '.29' -> '-7431355255968510181313945' +xfmt5823 format 6124055123451489511755945E379 'M> 35,.50e' -> ' 6.12405512345148951175594500000000000000000000000000e+403' +xfmt5824 format -8369910169363933669911286e228 '99,.6' -> ' -8.36991E+252' +xfmt5825 format 8046e0 '\xe0\xbb\xa7< 4,.16' -> ' 8,046' +xfmt5826 format -1877E0 '' -> '-1877' +xfmt5827 format 8831E145 ' 0' -> ' 8.831E+148' +xfmt5828 format -9323E359 '\xea\x8d\x82> 78.10e' -> '\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82\xea\x8d\x82-9.3230000000e+362' +xfmt5829 format 51993384424021E0 '069F' -> '000000000000000000000000000000000000000000000000000000051993384424021' +xfmt5830 format -98623998391436e0 '\xe4\x82\x8f< 66,.81g' -> '-98,623,998,391,436\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f\xe4\x82\x8f' +xfmt5831 format 13623011140977e178 '\xe8\x9c\xbd< 4,' -> ' 1.3623011140977E+191' +xfmt5832 format -59548637049451E188 '\xef\x87\x86<-,E' -> '-5.9548637049451E+201' +xfmt5833 format 2078791467151e0 '+,.52G' -> '+2,078,791,467,151' +xfmt5834 format -1026251430733e0 '\xec\x99\x9b=76,' -> '-\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b\xec\x99\x9b1,026,251,430,733' +xfmt5835 format 5718214692809e75 '098' -> '000000000000000000000000000000000000000000000000000000000000000000000000000000005.718214692809E+87' +xfmt5836 format -5853991111443e96 '\xe6\xbc\xa7^e' -> '-5.853991111443e+108' +xfmt5837 format 962074602616704289666e0 '\xec\x9a\x89<96,G' -> '962,074,602,616,704,289,666\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89\xec\x9a\x89' +xfmt5838 format -107785161624566698623E0 '' -> '-107785161624566698623' +xfmt5839 format 478363669358586047833e338 '-,' -> '4.78363669358586047833E+358' +xfmt5840 format -389752562838077688123e91 '\xee\xab\x94=+96,.29f' -> '-3,897,525,628,380,776,881,230,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000' +xfmt5841 format 8950671502724116258029473873768971079649e0 '\xef\xb6\x90= 22,.33F' -> ' 8,950,671,502,724,116,258,029,473,873,768,971,079,649.000000000000000000000000000000000' +xfmt5842 format -3150834603245141498409805460537698607953e0 '' -> '-3150834603245141498409805460537698607953' +xfmt5843 format 1428643800376930535136937930850056371419e139 '\xeb\x96\xa2=+31,.26e' -> '+1.42864380037693053513693793e+178' +xfmt5844 format -6945093995940256669863088193720014668310E350 '0.31' -> '-6.945093995940256669863088193720E+389' +xfmt5845 format 2156468864112386389720e0 '' -> '2156468864112386389720' +xfmt5846 format -1413863554009938631668e0 '' -> '-1413863554009938631668' +xfmt5847 format 5263344867614570428450E249 '095F' -> '5263344867614570428450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5848 format -1931917208814333714917E43 '\xef\x93\x8a^ 47,.40f' -> '-19,319,172,088,143,337,149,170,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000' +xfmt5849 format 490755525712365739636574743384116170422596E0 '16,.86' -> '490,755,525,712,365,739,636,574,743,384,116,170,422,596' +xfmt5850 format -289149948228362511311946857703654093658645e0 '' -> '-289149948228362511311946857703654093658645' +xfmt5851 format 609203151892978716205964450279548692121045E267 '\xe1\xbe\x90<' -> '6.09203151892978716205964450279548692121045E+308' +xfmt5852 format -689552444249518806637209134715957447231506E278 '.31' -> '-6.895524442495188066372091347160E+319' +xfmt5853 format 86E0 '8,.85f' -> '86.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5854 format -49E0 '\xe7\xb7\xa9=,' -> '-49' +xfmt5855 format 32E283 '\xea\xa7\x9a=37,' -> '\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a\xea\xa7\x9a3.2E+284' +xfmt5856 format -54e226 '-034,.93G' -> '-00,000,000,000,000,000,005.4E+227' +xfmt5857 format 12345678901234567890.12345678901234567 '22.90f' -> '12345678901234567890.123456789012345670000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5858 format -1234567. '' -> '-1234567' +xfmt5859 format 890e0 '0,' -> '890' +xfmt5860 format -907E0 '\xef\xa7\x9b<.27' -> '-907' +xfmt5861 format 778e313 '' -> '7.78E+315' +xfmt5862 format -221E331 '\xe1\x88\xad< 66,.72E' -> '-2.210000000000000000000000000000000000000000000000000000000000000000000000E+333' +xfmt5863 format 54955206960000620483393611108610230593256E0 '\xef\x9f\xb2^8,.84F' -> '54,955,206,960,000,620,483,393,611,108,610,230,593,256.000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5864 format -84860752897196247608651556952297059243157E0 '+0.4' -> '-8.486E+40' +xfmt5865 format 86890677126762205573853335783844053994867E43 '+064,.92G' -> '+00,000,000,000,008.6890677126762205573853335783844053994867E+83' +xfmt5866 format -33987595174267347539015650793768360693413E366 '.79' -> '-3.3987595174267347539015650793768360693413E+406' +xfmt5867 format 528218716292E0 '\xe1\x80\x96=+55,.30g' -> '+\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96\xe1\x80\x96528,218,716,292' +xfmt5868 format -575630509799e0 '\xea\x93\xb4=+2%' -> '-57563050979900%' +xfmt5869 format 168001465659E283 '\xcb\xa3>-64,.96F' -> '1,680,014,656,590,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5870 format -247696074580e20 '\xec\x89\x9a>-2,.55' -> '-2.47696074580E+31' +xfmt5871 format 6033111566E0 '' -> '6033111566' +xfmt5872 format -5149898653e0 '\xee\x9c\xa0^-40,.5%' -> '\xee\x9c\xa0\xee\x9c\xa0\xee\x9c\xa0\xee\x9c\xa0\xee\x9c\xa0\xee\x9c\xa0\xee\x9c\xa0\xee\x9c\xa0-514,989,865,300.00000%\xee\x9c\xa0\xee\x9c\xa0\xee\x9c\xa0\xee\x9c\xa0\xee\x9c\xa0\xee\x9c\xa0\xee\x9c\xa0\xee\x9c\xa0\xee\x9c\xa0' +xfmt5873 format 7898415941e281 '\xe7\x83\xa8^64,.69g' -> '\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa87.898415941e+290\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8\xe7\x83\xa8' +xfmt5874 format -1057244717E119 ',.56f' -> '-105,724,471,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000' +xfmt5875 format 60051901401931872252316972E0 '092,.27' -> '0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,060,051,901,401,931,872,252,316,972' +xfmt5876 format -64044509670638584016151885e0 '+0,.79%' -> '-6,404,450,967,063,858,401,615,188,500.0000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt5877 format 85733798858627483564250838e317 '\xe9\x80\x9c> 62,.12F' -> ' 8,573,379,885,862,748,356,425,083,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000' +xfmt5878 format -33397745003682908720138752e36 '\xe1\xab\xb7=-,.10g' -> '-3.339774500e+61' +xfmt5879 format 67707503152546463200075144144366860980451962e0 '\xea\xbc\xbb^' -> '67707503152546463200075144144366860980451962' +xfmt5880 format -19729638101550807190501852343279283915104594E0 '' -> '-19729638101550807190501852343279283915104594' +xfmt5881 format 58634642849799387533879408301837523684374499E326 '14,' -> '5.8634642849799387533879408301837523684374499E+369' +xfmt5882 format -76713633721832255590125634054676245210051428E27 ' F' -> '-76713633721832255590125634054676245210051428000000000000000000000000000' +xfmt5883 format 5962938E0 'e' -> '5.962938e+6' +xfmt5884 format -8889396E0 ',' -> '-8,889,396' +xfmt5885 format 8397320E345 ' 0,.26E' -> ' 8.39732000000000000000000000E+351' +xfmt5886 format -7968261e298 '\xe3\x95\x80<+22,e' -> '-7.968261e+304\xe3\x95\x80\xe3\x95\x80\xe3\x95\x80\xe3\x95\x80\xe3\x95\x80\xe3\x95\x80\xe3\x95\x80\xe3\x95\x80' +xfmt5887 format 434109608540768628294117775185557E0 '98' -> ' 434109608540768628294117775185557' +xfmt5888 format -604452759800763297621735254741942e0 '\xeb\xad\xa0>88,.83F' -> '-604,452,759,800,763,297,621,735,254,741,942.00000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5889 format 833931550402171104002395312935747e191 '\xea\xb5\xbd= E' -> ' 8.33931550402171104002395312935747E+223' +xfmt5890 format -228277559591563363976854878947415e322 '-,.47F' -> '-2,282,775,595,915,633,639,768,548,789,474,150,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000' +xfmt5891 format 208195157561810748299E0 '41,.54' -> ' 208,195,157,561,810,748,299' +xfmt5892 format -144669181289563798757E0 '-' -> '-144669181289563798757' +xfmt5893 format 192624177277154696004e46 '\xef\x91\xa4=+91,.53E' -> '+\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa4\xef\x91\xa41.92624177277154696004000000000000000000000000000000000E+66' +xfmt5894 format -215087463360264560440E383 '-75,.14E' -> ' -2.15087463360265E+403' +xfmt5895 format 47457834883902E0 '039.84' -> '000000000000000000000000047457834883902' +xfmt5896 format -91342976020374e0 '-051.49g' -> '-00000000000000000000000000000000000091342976020374' +xfmt5897 format 13300336383129E66 '\xe5\x8c\x85^78f' -> '13300336383129000000000000000000000000000000000000000000000000000000000000000000' +xfmt5898 format -47740324126292e181 '0.29' -> '-4.7740324126292E+194' +xfmt5899 format 3607819118135761e0 ',g' -> '3,607,819,118,135,761' +xfmt5900 format -3299168235942644e0 '.75' -> '-3299168235942644' +xfmt5901 format 8065528247513858E347 '\xea\x99\x9f> 84,.10E' -> '\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f\xea\x99\x9f 8.0655282475E+362' +xfmt5902 format -5780817971427515E66 ' 19g' -> '-5.780817971427515e+81' +xfmt5903 format 7961469532814086049E0 '\xe7\xb4\xa1>+54,.38g' -> '\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1\xe7\xb4\xa1+7,961,469,532,814,086,049' +xfmt5904 format -7087637737597788594E0 '+0e' -> '-7.087637737597788594e+18' +xfmt5905 format 8756045647604583726E228 '\xe0\xb1\xa9<19.33' -> '8.756045647604583726E+246' +xfmt5906 format -7829252890385850752e9 '\xeb\xa8\xbf>-52,.10e' -> '\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf\xeb\xa8\xbf-7.8292528904e+27' +xfmt5907 format 8098466204834445618783E0 '+0%' -> '+809846620483444561878300%' +xfmt5908 format -1293408979535446200238E0 '0' -> '-1293408979535446200238' +xfmt5909 format 7137704247640196901848E376 '\xef\x90\x96^,.50' -> '7.137704247640196901848E+397' +xfmt5910 format -6891252951268415707244e110 '\xe1\x9d\xaf<' -> '-6.891252951268415707244E+131' +xfmt5911 format 9768e0 '' -> '9768' +xfmt5912 format -7227e0 '0,.6%' -> '-722,700.000000%' +xfmt5913 format 9468e87 '\xe8\xa2\x89>-55,.91e' -> '9.4680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+90' +xfmt5914 format -6263E372 '' -> '-6.263E+375' +xfmt5915 format 25083791e0 ' 39' -> ' 25083791' +xfmt5916 format -70420545E0 '\xeb\xa6\x8f>-15.73G' -> '\xeb\xa6\x8f\xeb\xa6\x8f\xeb\xa6\x8f\xeb\xa6\x8f\xeb\xa6\x8f\xeb\xa6\x8f-70420545' +xfmt5917 format 69052371e79 '0.23f' -> '690523710000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000' +xfmt5918 format -20679607E155 '' -> '-2.0679607E+162' +xfmt5919 format 0e0 '\xec\xb6\xbf>-,g' -> '0' +xfmt5920 format 0e0 '\xe6\x95\x9a>-9.17e' -> '0.00000000000000000e+17' +xfmt5921 format 0E76 '' -> '0E+76' +xfmt5922 format 0e273 '.29f' -> '0.00000000000000000000000000000' +xfmt5923 format 8578865882807126661425182676e0 '+0G' -> '+8578865882807126661425182676' +xfmt5924 format -9725499530186586448532271569e0 '\xc7\xaf=+80,G' -> '-\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf\xc7\xaf9,725,499,530,186,586,448,532,271,569' +xfmt5925 format 8493099661098352682382100586e375 '\xe4\xa9\x83^+10,.7%' -> '+849,309,966,109,835,268,238,210,058,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000%' +xfmt5926 format -7100306263776835669541963519E30 '' -> '-7.100306263776835669541963519E+57' +xfmt5927 format 6479720100542730848672941746584369e0 '+0.94' -> '+6479720100542730848672941746584369' +xfmt5928 format -3373908652191558498833241063778699E0 '+36G' -> ' -3373908652191558498833241063778699' +xfmt5929 format 4180385088279192495646098603359126e353 '\xe9\xb7\xbd>-74,.80G' -> '\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd\xe9\xb7\xbd4.180385088279192495646098603359126E+386' +xfmt5930 format -9724622549604196368666956655310164E203 '+0' -> '-9.724622549604196368666956655310164E+236' +xfmt5931 format 63097391344264270986e0 '' -> '63097391344264270986' +xfmt5932 format -18887292874766279998e0 '-' -> '-18887292874766279998' +xfmt5933 format 39290997502295972065E328 '+019,.84F' -> '+392,909,975,022,959,720,650,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt5934 format -84314713136428218243e301 '\xe6\xb2\xa3<+38.93n' -> '-8.4314713136428218243e+320\xe6\xb2\xa3\xe6\xb2\xa3\xe6\xb2\xa3\xe6\xb2\xa3\xe6\xb2\xa3\xe6\xb2\xa3\xe6\xb2\xa3\xe6\xb2\xa3\xe6\xb2\xa3\xe6\xb2\xa3\xe6\xb2\xa3' +xfmt5935 format 27868233761423965309932937437236E0 '\xe7\x87\xba^45.37' -> '\xe7\x87\xba\xe7\x87\xba\xe7\x87\xba\xe7\x87\xba\xe7\x87\xba\xe7\x87\xba27868233761423965309932937437236\xe7\x87\xba\xe7\x87\xba\xe7\x87\xba\xe7\x87\xba\xe7\x87\xba\xe7\x87\xba\xe7\x87\xba' +xfmt5936 format -29501659078790124692271006437708e0 '\xeb\x93\x9f>85,' -> '\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f\xeb\x93\x9f-29,501,659,078,790,124,692,271,006,437,708' +xfmt5937 format 97369084111102462783169743928422e54 '70,' -> ' 9.7369084111102462783169743928422E+85' +xfmt5938 format -62759784330020571717927620684295E4 ',' -> '-6.2759784330020571717927620684295E+35' +xfmt5939 format 203391317506338003636993405e0 '\xe6\xbd\xaa= 72,.18' -> ' \xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa\xe6\xbd\xaa2.03391317506338004E+26' +xfmt5940 format -339307545480749922296367631E0 '\xe8\xb2\xb6>.31E' -> '-3.3930754548074992229636763100000E+26' +xfmt5941 format 299691473612394865696810293e148 '\xd1\x8f> 50,.53' -> '\xd1\x8f\xd1\x8f\xd1\x8f\xd1\x8f\xd1\x8f\xd1\x8f\xd1\x8f\xd1\x8f\xd1\x8f\xd1\x8f\xd1\x8f\xd1\x8f\xd1\x8f\xd1\x8f\xd1\x8f\xd1\x8f 2.99691473612394865696810293E+174' +xfmt5942 format -765435600993563507218557731E361 '\xe7\x96\xa4=43' -> '-\xe7\x96\xa4\xe7\x96\xa4\xe7\x96\xa4\xe7\x96\xa4\xe7\x96\xa4\xe7\x96\xa4\xe7\x96\xa4\xe7\x96\xa4\xe7\x96\xa47.65435600993563507218557731E+387' +xfmt5943 format 3302624605921883014869679e0 '4.48E' -> '3.302624605921883014869679000000000000000000000000E+24' +xfmt5944 format -3425990947279403475396485E0 '\xc2\x9c=-,.77g' -> '-3,425,990,947,279,403,475,396,485' +xfmt5945 format 5083826485443403401997638e85 '\xe8\x8a\x87<83,.25e' -> '5.0838264854434034019976380e+109\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87\xe8\x8a\x87' +xfmt5946 format -9730159439450399507535857e151 '\xea\x8e\x83= 83,.86g' -> '-\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x83\xea\x8e\x839.730159439450399507535857e+175' +xfmt5947 format 80013571353757222e0 '+,.11' -> '+8.0013571354E+16' +xfmt5948 format -80465670198448619e0 '' -> '-80465670198448619' +xfmt5949 format 17745605734727480E113 '\xe8\x91\x88^+.52' -> '+1.7745605734727480E+129' +xfmt5950 format -58863989730558634e135 '+014,.38%' -> '-5,886,398,973,055,863,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000%' +xfmt5951 format 79e0 '' -> '79' +xfmt5952 format -86E0 '' -> '-86' +xfmt5953 format 65E264 '\xe0\xa0\x86>' -> '6.5E+265' +xfmt5954 format -64E78 '\xe9\x8b\x8a<36,.58f' -> '-64,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000' +xfmt5955 format 802597270716276E0 '30' -> ' 802597270716276' +xfmt5956 format -457364724620873E0 '31E' -> ' -4.57364724620873E+14' +xfmt5957 format 810558074753131e176 '\xef\x83\xad> ' -> ' 8.10558074753131E+190' +xfmt5958 format -587762841110965E110 '' -> '-5.87762841110965E+124' +xfmt5959 format 83207284449354507250708630892e0 '\xe5\xa3\xb7^99,%' -> '\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb78,320,728,444,935,450,725,070,863,089,200%\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7\xe5\xa3\xb7' +xfmt5960 format -91725846516506031014942799645E0 '' -> '-91725846516506031014942799645' +xfmt5961 format 12504795179811470208650262144E111 '\xe6\x8e\xa4^-,.66' -> '1.2504795179811470208650262144E+139' +xfmt5962 format -57772760848171909827675746979E4 '' -> '-5.7772760848171909827675746979E+32' +xfmt5963 format 6392004884207314666742554251970e0 '' -> '6392004884207314666742554251970' +xfmt5964 format -1783995116855008463830365857685E0 '\xe3\x8b\x8e>+43%' -> '\xe3\x8b\x8e\xe3\x8b\x8e\xe3\x8b\x8e\xe3\x8b\x8e\xe3\x8b\x8e\xe3\x8b\x8e\xe3\x8b\x8e\xe3\x8b\x8e-178399511685500846383036585768500%' +xfmt5965 format 7503210383356457229523411988477E326 '45,' -> ' 7.503210383356457229523411988477E+356' +xfmt5966 format -9023463988590135689551354371983e362 '' -> '-9.023463988590135689551354371983E+392' +xfmt5967 format 54596540351074817552688E0 ' .49n' -> ' 54596540351074817552688' +xfmt5968 format -61098613844896776244706e0 '\xeb\x9b\x98^76,g' -> '\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98-61,098,613,844,896,776,244,706\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98\xeb\x9b\x98' +xfmt5969 format 83713042150793593919563E212 '\xeb\x81\xbd>-38,.84E' -> '8.371304215079359391956300000000000000000000000000000000000000000000000000000000000000E+234' +xfmt5970 format -18711483119873436577124e346 '+022n' -> '-1.8711483119873436577124e+368' +xfmt5971 format 164760997134036469803588750664216745469E0 ' 0.48' -> ' 164760997134036469803588750664216745469' +xfmt5972 format -423930221041228242019968331623930493839e0 '\xe6\x80\xaa=.61' -> '-423930221041228242019968331623930493839' +xfmt5973 format 450234197971109838046380281403080888055E29 '\xe1\xa6\xb7<41,.65f' -> '45,023,419,797,110,983,804,638,028,140,308,088,805,500,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000' +xfmt5974 format -409488705137494172479134932722938969764e74 '\xe7\x97\x9f^ 61,.41' -> '\xe7\x97\x9f\xe7\x97\x9f\xe7\x97\x9f\xe7\x97\x9f\xe7\x97\x9f\xe7\x97\x9f\xe7\x97\x9f-4.09488705137494172479134932722938969764E+112\xe7\x97\x9f\xe7\x97\x9f\xe7\x97\x9f\xe7\x97\x9f\xe7\x97\x9f\xe7\x97\x9f\xe7\x97\x9f\xe7\x97\x9f' +xfmt5975 format 7437934659516402274146524131726414471446e0 '\xe6\x8c\x90< ,.95%' -> ' 743,793,465,951,640,227,414,652,413,172,641,447,144,600.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt5976 format -5414639696227296389347134267812229194565e0 '\xe5\xab\x99>-94,E' -> '\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99\xe5\xab\x99-5.414639696227296389347134267812229194565E+39' +xfmt5977 format 8402138726942453027989473266620788596962e372 '\xec\xae\xb0<94,' -> '8.402138726942453027989473266620788596962E+411\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0\xec\xae\xb0' +xfmt5978 format -1760016129189611349247966582041291753853e175 ' 98,' -> ' -1.760016129189611349247966582041291753853E+214' +xfmt5979 format 1234567890123.1234567 '\xe8\xb3\x8a<,.74E' -> '1.23456789012312345670000000000000000000000000000000000000000000000000000000E+12' +xfmt5980 format -123.12345678901234567890 '086,.61f' -> '-000,000,000,000,000,123.1234567890123456789000000000000000000000000000000000000000000' +xfmt5981 format 59534E0 '12,G' -> ' 59,534' +xfmt5982 format -88736E0 '0.81' -> '-88736' +xfmt5983 format 51552e256 '+' -> '+5.1552E+260' +xfmt5984 format -15430e85 '\xeb\x87\xbb^,' -> '-1.5430E+89' +xfmt5985 format 8019471627325053563976110483859791445e0 '0' -> '8019471627325053563976110483859791445' +xfmt5986 format -1721947834263851395809176850830552976E0 '' -> '-1721947834263851395809176850830552976' +xfmt5987 format 8474028908254356474994992008548543436e52 '\xef\x94\x96^ ,.49f' -> ' 84,740,289,082,543,564,749,949,920,085,485,434,360,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000' +xfmt5988 format -4738093495671605804532188132285697725E274 '0g' -> '-4.738093495671605804532188132285697725e+310' +xfmt5989 format 6721088069768815381624954603729E0 '+044,.9F' -> '+6,721,088,069,768,815,381,624,954,603,729.000000000' +xfmt5990 format -6765277778663299643138503906743e0 '\xe1\xbd\xa8< ' -> '-6765277778663299643138503906743' +xfmt5991 format 3327594093153819804358267530813E251 '\xec\xaf\xa4> 18,.24e' -> ' 3.327594093153819804358268e+281' +xfmt5992 format -4330733269896152060259811193906e86 '\xe4\xa9\x9f>24.90n' -> '-4.330733269896152060259811193906e+116' +xfmt5993 format 2955323330345736983051337918E0 ',F' -> '2,955,323,330,345,736,983,051,337,918' +xfmt5994 format -5483800119034909782598974264E0 '6' -> '-5483800119034909782598974264' +xfmt5995 format 1207832653569580834218810599E56 '\xe8\x80\xb6=-.19%' -> '12078326535695808342188105990000000000000000000000000000000000000000000000000000000000.0000000000000000000%' +xfmt5996 format -6324224025092018051790862286E138 '' -> '-6.324224025092018051790862286E+165' +xfmt5997 format 75921551407826904822168403488e0 '52' -> ' 75921551407826904822168403488' +xfmt5998 format -46582492210108373295855692981E0 '\xe8\x93\x89=' -> '-46582492210108373295855692981' +xfmt5999 format 81315017007191673981906466350E204 '\xe3\xaf\xa4<4,' -> '8.1315017007191673981906466350E+232' +xfmt6000 format -88137952033248697279094819232E101 ' 086,.42F' -> '-8,813,795,203,324,869,727,909,481,923,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000' +xfmt6001 format 21623677559060932967660317365378024875543E0 '048' -> '000000021623677559060932967660317365378024875543' +xfmt6002 format -96561640375038856826656172768028365697668e0 '\xeb\x92\xbd^+16,.83f' -> '-96,561,640,375,038,856,826,656,172,768,028,365,697,668.00000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6003 format 43562281159442687013499188705297231353192E318 '\xeb\x9a\xaf>+59,.54e' -> '+4.356228115944268701349918870529723135319200000000000000e+358' +xfmt6004 format -51445708311047772157984323705857714473101e45 ',' -> '-5.1445708311047772157984323705857714473101E+85' +xfmt6005 format 9103675553219286967881663151907754061373153e0 '.75' -> '9103675553219286967881663151907754061373153' +xfmt6006 format -1474067394434860080654802187009818788066910e0 '\xeb\x8f\xb4^+F' -> '-1474067394434860080654802187009818788066910' +xfmt6007 format 6035289220169099703719414067231799115520926e180 '-03.47E' -> '6.03528922016909970371941406723179911552092600000E+222' +xfmt6008 format -7162606492957217470014207012986035873020012E368 '\xe5\xb9\xb8<-43,.42g' -> '-7.16260649295721747001420701298603587302001e+410' +xfmt6009 format 1994019016571E0 '69' -> ' 1994019016571' +xfmt6010 format -6987214338937e0 '\xe2\xb5\xaf^22,e' -> '\xe2\xb5\xaf-6.987214338937e+12\xe2\xb5\xaf\xe2\xb5\xaf' +xfmt6011 format 1623478568029e284 '+049,.75e' -> '+1.623478568029000000000000000000000000000000000000000000000000000000000000000e+296' +xfmt6012 format -4320894813150E278 '\xed\x8f\x8c<-74.19n' -> '-4.320894813150e+290\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c\xed\x8f\x8c' +xfmt6013 format 12106309040536435361102650765250815e0 '\xe8\xb3\x89> 24,.59f' -> ' 12,106,309,040,536,435,361,102,650,765,250,815.00000000000000000000000000000000000000000000000000000000000' +xfmt6014 format -47126089120941071163282159868088388E0 '\xee\x96\xaa^+56,.81E' -> '-4.712608912094107116328215986808838800000000000000000000000000000000000000000000000E+34' +xfmt6015 format 89852054198761413944010396656221535E163 '\xe8\x9e\xb5>.69n' -> '8.9852054198761413944010396656221535e+197' +xfmt6016 format -56504797108630305103549943889369264e146 '\xe1\x9e\x83<87,g' -> '-5.6504797108630305103549943889369264e+180\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83\xe1\x9e\x83' +xfmt6017 format 111510066140168382168929638786524381093e0 '\xe8\xb8\xa9<' -> '111510066140168382168929638786524381093' +xfmt6018 format -887959674069617818849550253292403275729E0 '\xe5\x8c\xbe>g' -> '-887959674069617818849550253292403275729' +xfmt6019 format 970480035939850451224698435271272421273E41 '\xe5\xbb\x90< 32G' -> ' 9.70480035939850451224698435271272421273E+79' +xfmt6020 format -582925015359087254368801820110566642401e324 '\xe2\xaa\x9c= 86,.17g' -> '-\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c\xe2\xaa\x9c5.8292501535908725e+362' +xfmt6021 format 0e0 '027f' -> '000000000000000000000000000' +xfmt6022 format 0E0 '-0,F' -> '0' +xfmt6023 format 0E204 ' 83' -> ' 0E+204' +xfmt6024 format 0e62 '\xed\x8f\x99<+11,.3e' -> '+0.000e+65\xed\x8f\x99' +xfmt6025 format 150995521049981E0 '\xe6\x9c\x89<' -> '150995521049981' +xfmt6026 format -602681625315017e0 '08,%' -> '-60,268,162,531,501,700%' +xfmt6027 format 372527941870275e295 '61,' -> ' 3.72527941870275E+309' +xfmt6028 format -817063214176297E102 '\xe3\xa3\x8c> 48,.5F' -> '-817,063,214,176,297,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000' +xfmt6029 format 65421268441e0 '\xe6\xa0\xb6^-18E' -> '\xe6\xa0\xb66.5421268441E+10\xe6\xa0\xb6' +xfmt6030 format -74087418503E0 '' -> '-74087418503' +xfmt6031 format 97117828728E344 '-' -> '9.7117828728E+354' +xfmt6032 format -99541977762e189 '\xea\xb8\x94^+,.80g' -> '-9.9541977762e+199' +xfmt6033 format 837559448672197702593396440807953174023037E0 ' .28g' -> ' 8.375594486721977025933964408e+41' +xfmt6034 format -814009745436513214418280865783597960931084E0 ' ,G' -> '-814,009,745,436,513,214,418,280,865,783,597,960,931,084' +xfmt6035 format 211984623449034642407351107166246592965515e279 ' 055,F' -> ' 211,984,623,449,034,642,407,351,107,166,246,592,965,515,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt6036 format -870747576943413646088996322574381732483124E175 '21,' -> '-8.70747576943413646088996322574381732483124E+216' +xfmt6037 format 2E0 '0' -> '2' +xfmt6038 format -2E0 '' -> '-2' +xfmt6039 format 2e206 '\xe9\x88\xa9<+44,.67G' -> '+2E+206\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9\xe9\x88\xa9' +xfmt6040 format -3E104 '\xe0\xad\x87<42%' -> '-30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6041 format 4432231167139521167013422e0 '\xe3\xa7\xb2^44' -> '\xe3\xa7\xb2\xe3\xa7\xb2\xe3\xa7\xb2\xe3\xa7\xb2\xe3\xa7\xb2\xe3\xa7\xb2\xe3\xa7\xb2\xe3\xa7\xb2\xe3\xa7\xb24432231167139521167013422\xe3\xa7\xb2\xe3\xa7\xb2\xe3\xa7\xb2\xe3\xa7\xb2\xe3\xa7\xb2\xe3\xa7\xb2\xe3\xa7\xb2\xe3\xa7\xb2\xe3\xa7\xb2\xe3\xa7\xb2' +xfmt6042 format -4451228778176749625113749E0 '88,E' -> ' -4.451228778176749625113749E+24' +xfmt6043 format 6902121665586306207172103E143 '-0,.78G' -> '6.902121665586306207172103E+167' +xfmt6044 format -6892699412448656359235929e366 '+.4' -> '-6.893E+390' +xfmt6045 format 555874297190089660932219e0 '0e' -> '5.55874297190089660932219e+23' +xfmt6046 format -689965999890922440715131e0 '' -> '-689965999890922440715131' +xfmt6047 format 842017563921985640001928e258 '\xe4\x8b\xa3^' -> '8.42017563921985640001928E+281' +xfmt6048 format -848576279112584627182344e163 '\xef\xa3\x98^ 30.53' -> '-8.48576279112584627182344E+186' +xfmt6049 format 6729469178959648546402e0 '\xee\xab\xb4=+72,.86f' -> '+6,729,469,178,959,648,546,402.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6050 format -7497231417498505714250E0 '\xe5\x92\xbb=58,.16' -> '-\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb\xe5\x92\xbb7.497231417498506E+21' +xfmt6051 format 5769459336406528571039E233 ' 63.32f' -> ' 576945933640652857103900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000' +xfmt6052 format -9935468467481898851966E307 '\xec\xbb\x9e>-8.33g' -> '-9.935468467481898851966e+328' +xfmt6053 format 251e0 '42' -> ' 251' +xfmt6054 format -932e0 '+039.51G' -> '-00000000000000000000000000000000000932' +xfmt6055 format 608e101 '+,.20' -> '+6.08E+103' +xfmt6056 format -452e235 '\xef\xb8\x8d< 75.9g' -> '-4.52e+237\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d\xef\xb8\x8d' +xfmt6057 format 6999124556e0 ',F' -> '6,999,124,556' +xfmt6058 format -2895029287e0 '\xe0\xb9\xb0^-58,.94F' -> '-2,895,029,287.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6059 format 3440206190e259 '\xe2\xbe\xb1> 17,.13F' -> ' 34,402,061,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000' +xfmt6060 format -2757685568e343 '033.23G' -> '-00000000000000002.757685568E+352' +xfmt6061 format 94959556371945263440133135e0 '\xef\x8f\x8d=-,.50e' -> '9.49595563719452634401331350000000000000000000000000e+25' +xfmt6062 format -11332668390783084930444521E0 '097' -> '-000000000000000000000000000000000000000000000000000000000000000000000011332668390783084930444521' +xfmt6063 format 12644994045607769904892223E36 '' -> '1.2644994045607769904892223E+61' +xfmt6064 format -92518136329177631502429957E128 '' -> '-9.2518136329177631502429957E+153' +xfmt6065 format 33391878765587566511801673180257096322e0 '\xe9\xae\x9f>' -> '33391878765587566511801673180257096322' +xfmt6066 format -31161133407823097119395140643810554147E0 '-048,.37G' -> '-00,003.116113340782309711939514064381055415E+37' +xfmt6067 format 62070308079183840091055364444596504472E249 '.73' -> '6.2070308079183840091055364444596504472E+286' +xfmt6068 format -92999428528887868071510875472918684957E30 '' -> '-9.2999428528887868071510875472918684957E+67' +xfmt6069 format 68790794197806885581E0 '+082,.63f' -> '+68,790,794,197,806,885,581.000000000000000000000000000000000000000000000000000000000000000' +xfmt6070 format -85798143745257910523e0 '\xe1\x8c\x98< 79,F' -> '-85,798,143,745,257,910,523\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98\xe1\x8c\x98' +xfmt6071 format 91777105006094994046e302 '\xee\xbf\x8d<+35,.48E' -> '+9.177710500609499404600000000000000000000000000000E+321' +xfmt6072 format -27930477739469430441E131 '\xec\xad\xa8>+6,.12F' -> '-2,793,047,773,946,943,044,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000' +xfmt6073 format 88931619601735700e0 '0' -> '88931619601735700' +xfmt6074 format -59258802693765031e0 '\xe1\xa8\x83=-,.57' -> '-59,258,802,693,765,031' +xfmt6075 format 18972881204890392E298 '0,' -> '1.8972881204890392E+314' +xfmt6076 format -51903170358455380e284 '\xeb\x9e\x9f> 50,.76E' -> '-5.1903170358455380000000000000000000000000000000000000000000000000000000000000E+300' +xfmt6077 format 197905650441417679e0 '28,' -> ' 197,905,650,441,417,679' +xfmt6078 format -980650114921288024E0 '\xe8\x83\xa8=' -> '-980650114921288024' +xfmt6079 format 559537686885739317e152 '\xe8\x89\xb0^7,.84G' -> '5.59537686885739317E+169' +xfmt6080 format -513374688129020534e340 '084,G' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,005.13374688129020534E+357' +xfmt6081 format 83063750762499841850547e0 '\xee\xba\xb5>36,.31g' -> '\xee\xba\xb5\xee\xba\xb5\xee\xba\xb5\xee\xba\xb5\xee\xba\xb5\xee\xba\xb583,063,750,762,499,841,850,547' +xfmt6082 format -54418439160329039115259e0 '-.68' -> '-54418439160329039115259' +xfmt6083 format 14635550613895492180163E209 '\xed\x9f\x8f<+62,.56E' -> '+1.46355506138954921801630000000000000000000000000000000000E+231' +xfmt6084 format -79371173877531427317401e162 '\xe7\xaa\xac>-74,.66F' -> '-79,371,173,877,531,427,317,401,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000' +xfmt6085 format 295798547668737839537504985289010E0 '' -> '295798547668737839537504985289010' +xfmt6086 format -658014177463885296149373368065733E0 '\xe6\x95\xa7= 92.89G' -> '-\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7\xe6\x95\xa7658014177463885296149373368065733' +xfmt6087 format 876237833002057472970641288580908E21 ',.38' -> '8.76237833002057472970641288580908E+53' +xfmt6088 format -237764275397796106995226429315115E374 '\xe8\x81\x86<11.7' -> '-2.377643E+406' +xfmt6089 format 736106306739432692412644529128634475e0 '42.25G' -> ' 7.361063067394326924126445E+35' +xfmt6090 format -150343280776097788972976085019519939e0 '0.94f' -> '-150343280776097788972976085019519939.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6091 format 183271092990434707584284579003664475e291 '\xeb\xa7\xa2> ,.48e' -> ' 1.832710929904347075842845790036644750000000000000e+326' +xfmt6092 format -892467064975996464833484650287666481E321 '+34,' -> '-8.92467064975996464833484650287666481E+356' +xfmt6093 format 2390749E0 '\xe4\xab\xb1^ 32,.13G' -> '\xe4\xab\xb1\xe4\xab\xb1\xe4\xab\xb1\xe4\xab\xb1\xe4\xab\xb1\xe4\xab\xb1\xe4\xab\xb1\xe4\xab\xb1\xe4\xab\xb1\xe4\xab\xb1\xe4\xab\xb1 2,390,749\xe4\xab\xb1\xe4\xab\xb1\xe4\xab\xb1\xe4\xab\xb1\xe4\xab\xb1\xe4\xab\xb1\xe4\xab\xb1\xe4\xab\xb1\xe4\xab\xb1\xe4\xab\xb1\xe4\xab\xb1' +xfmt6094 format -5712173e0 '' -> '-5712173' +xfmt6095 format 9115563E356 '39,' -> ' 9.115563E+362' +xfmt6096 format -8217801E370 '' -> '-8.217801E+376' +xfmt6097 format 45288891958838E0 '\xee\xbe\x9b<+32,.10%' -> '+4,528,889,195,883,800.0000000000%' +xfmt6098 format -32635393035433E0 '+0,E' -> '-3.2635393035433E+13' +xfmt6099 format 32929012472766E282 ' ' -> ' 3.2929012472766E+295' +xfmt6100 format -80076345152912e155 '\xe5\x9c\xb8> 56,.44%' -> '-800,763,451,529,120,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000%' +xfmt6101 format 1234567890. ' 56.70' -> ' 1234567890' +xfmt6102 format -12345678.123456789012 ',' -> '-12,345,678.123456789012' +xfmt6103 format 6843517330e0 ' 0g' -> ' 6843517330' +xfmt6104 format -3766715082E0 '-.7' -> '-3.766715E+9' +xfmt6105 format 9937846588E316 '\xeb\xae\x86>+3,' -> '+9.937846588E+325' +xfmt6106 format -2030831327E323 '\xe1\xbe\x8d^-64,.62f' -> '-203,083,132,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000' +xfmt6107 format 107021334087554178833594438371783e0 '90,.84' -> ' 107,021,334,087,554,178,833,594,438,371,783' +xfmt6108 format -285847358013035114471777601787603E0 '' -> '-285847358013035114471777601787603' +xfmt6109 format 929016466897712562977291911645658e239 '\xec\x85\xad>23.90%' -> '9290164668977125629772919116456580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6110 format -172608729405019627749194891941606e119 ',.68' -> '-1.72608729405019627749194891941606E+151' +xfmt6111 format 501299242460270247e0 '\xd8\x85=76,.94%' -> '50,129,924,246,027,024,700.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6112 format -114324205850138834e0 '-0E' -> '-1.14324205850138834E+17' +xfmt6113 format 851273696514533922e172 '0,' -> '8.51273696514533922E+189' +xfmt6114 format -987638927667660965E284 '\xe8\xad\xb8<67.48' -> '-9.87638927667660965E+301\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8\xe8\xad\xb8' +xfmt6115 format 97504956805315209E0 '\xe1\x89\xbd<35,.46G' -> '97,504,956,805,315,209\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd\xe1\x89\xbd' +xfmt6116 format -79191686042994394e0 ' 19,G' -> '-79,191,686,042,994,394' +xfmt6117 format 60786672760672319E108 '092.40' -> '0000000000000000000000000000000000000000000000000000000000000000000006.0786672760672319E+124' +xfmt6118 format -75313997656492014E121 '' -> '-7.5313997656492014E+137' +xfmt6119 format 0E0 '\xe6\x97\xa4^81,.55F' -> '\xe6\x97\xa4\xe6\x97\xa4\xe6\x97\xa4\xe6\x97\xa4\xe6\x97\xa4\xe6\x97\xa4\xe6\x97\xa4\xe6\x97\xa4\xe6\x97\xa4\xe6\x97\xa4\xe6\x97\xa4\xe6\x97\xa40.0000000000000000000000000000000000000000000000000000000\xe6\x97\xa4\xe6\x97\xa4\xe6\x97\xa4\xe6\x97\xa4\xe6\x97\xa4\xe6\x97\xa4\xe6\x97\xa4\xe6\x97\xa4\xe6\x97\xa4\xe6\x97\xa4\xe6\x97\xa4\xe6\x97\xa4' +xfmt6120 format 0E0 '025.53f' -> '0.00000000000000000000000000000000000000000000000000000' +xfmt6121 format 0e257 '\xe6\x9b\xa0= 97,.19F' -> ' \xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa0\xe6\x9b\xa00.0000000000000000000' +xfmt6122 format 0E269 '\xef\x92\xb3^+64,.57G' -> '\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3+0E+269\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3\xef\x92\xb3' +xfmt6123 format 1966549017960066065895697E0 'g' -> '1966549017960066065895697' +xfmt6124 format -8851008657193555952523079e0 '-0,e' -> '-8.851008657193555952523079e+24' +xfmt6125 format 3748794499527838848916213E146 '' -> '3.748794499527838848916213E+170' +xfmt6126 format -5683589000636700929178341E302 '%' -> '-56835890006367009291783410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6127 format 752462190826e0 '\xec\x89\xbd=-' -> '752462190826' +xfmt6128 format -968504532976E0 '\xee\xa3\x92<-49.45n' -> '-968504532976\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92\xee\xa3\x92' +xfmt6129 format 788315447788e312 '\xe3\xb0\x92=' -> '7.88315447788E+323' +xfmt6130 format -955230658037E276 ',' -> '-9.55230658037E+287' +xfmt6131 format 745532117842491977356531637976489928e0 ',' -> '745,532,117,842,491,977,356,531,637,976,489,928' +xfmt6132 format -982213296469241756837822270675257207E0 ',.17' -> '-9.8221329646924176E+35' +xfmt6133 format 705190815088712819015771034882161064e359 '\xe9\xb2\xb3>+49,.53' -> '\xe9\xb2\xb3\xe9\xb2\xb3\xe9\xb2\xb3\xe9\xb2\xb3\xe9\xb2\xb3\xe9\xb2\xb3+7.05190815088712819015771034882161064E+394' +xfmt6134 format -253465872895091400477506016877075393E227 ' 0,.17f' -> '-25,346,587,289,509,140,047,750,601,687,707,539,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000' +xfmt6135 format 81708643048547209603811046138789276475209419E0 '+,' -> '+81,708,643,048,547,209,603,811,046,138,789,276,475,209,419' +xfmt6136 format -12555051952606805448816725859704424975301588e0 '\xe3\x99\xb4>,.66%' -> '-1,255,505,195,260,680,544,881,672,585,970,442,497,530,158,800.000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6137 format 58722670343371911650773133285159115020674313E69 '' -> '5.8722670343371911650773133285159115020674313E+112' +xfmt6138 format -83641076281568509520468474704964242629489195e137 '' -> '-8.3641076281568509520468474704964242629489195E+180' +xfmt6139 format 95863855666470086028079962E0 '\xe2\x8b\xaf=34.42' -> '\xe2\x8b\xaf\xe2\x8b\xaf\xe2\x8b\xaf\xe2\x8b\xaf\xe2\x8b\xaf\xe2\x8b\xaf\xe2\x8b\xaf\xe2\x8b\xaf95863855666470086028079962' +xfmt6140 format -10647678282192263100110653e0 '\xe3\xa1\xa7>+38' -> '\xe3\xa1\xa7\xe3\xa1\xa7\xe3\xa1\xa7\xe3\xa1\xa7\xe3\xa1\xa7\xe3\xa1\xa7\xe3\xa1\xa7\xe3\xa1\xa7\xe3\xa1\xa7\xe3\xa1\xa7\xe3\xa1\xa7-10647678282192263100110653' +xfmt6141 format 78883525264519493348672982e200 '0.93' -> '7.8883525264519493348672982E+225' +xfmt6142 format -39836912616787271878583857e81 '\xe4\x97\x95=79,.95%' -> '-3,983,691,261,678,727,187,858,385,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6143 format 28923970637463947564e0 '' -> '28923970637463947564' +xfmt6144 format -55319615168023448216e0 '\xe8\xba\x99>+90,.28%' -> '\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99\xe8\xba\x99-5,531,961,516,802,344,821,600.0000000000000000000000000000%' +xfmt6145 format 83003338900498050943E3 '3.56F' -> '83003338900498050943000.00000000000000000000000000000000000000000000000000000000' +xfmt6146 format -22409783558128431655e213 '\xe4\xba\xb8=-,.86E' -> '-2.24097835581284316550000000000000000000000000000000000000000000000000000000000000000000E+232' +xfmt6147 format 61113361053234E0 '\xe7\x8a\x92<85.45e' -> '6.111336105323400000000000000000000000000000000e+13\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92\xe7\x8a\x92' +xfmt6148 format -44103793772420E0 '62.59g' -> ' -44103793772420' +xfmt6149 format 50307579802957E70 '79.46f' -> '503075798029570000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000' +xfmt6150 format -49360588268383E91 '.66' -> '-4.9360588268383E+104' +xfmt6151 format 8669036903030343603007168777226948947337909E0 '\xe6\xa6\xb6= 43,.57G' -> ' 8,669,036,903,030,343,603,007,168,777,226,948,947,337,909' +xfmt6152 format -3221996433613359316757732513901892091070345e0 '\xee\x95\x92^.81f' -> '-3221996433613359316757732513901892091070345.000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6153 format 3585434267034594534602881359336970149309019E82 '' -> '3.585434267034594534602881359336970149309019E+124' +xfmt6154 format -3499291597877856334021431999202932045927720e83 '\xea\xb3\x8f=' -> '-3.499291597877856334021431999202932045927720E+125' +xfmt6155 format 5632849068178886823882743039200919450e0 '\xea\x8f\xaa<' -> '5632849068178886823882743039200919450' +xfmt6156 format -5488097827159390301183893550681497052e0 '\xec\x8e\xb1=' -> '-5488097827159390301183893550681497052' +xfmt6157 format 3346131887200578137526917523623980755e245 '-' -> '3.346131887200578137526917523623980755E+281' +xfmt6158 format -6523835668064040116397062586549672973e236 '68' -> ' -6.523835668064040116397062586549672973E+272' +xfmt6159 format 368231090348346138187536e0 '\xeb\x9c\xb6=,' -> '368,231,090,348,346,138,187,536' +xfmt6160 format -406500097497163919720106E0 '.9' -> '-4.06500097E+23' +xfmt6161 format 232202983542870357512073e331 '90,.31E' -> ' 2.3220298354287035751207300000000E+354' +xfmt6162 format -671961115926517709819546E213 '\xe1\x95\xa2<+93,.54f' -> '-671,961,115,926,517,709,819,546,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000' +xfmt6163 format 328E0 '\xe7\x88\xb8= 1,.11g' -> ' 328' +xfmt6164 format -604E0 '\xe7\xb6\x91=+28,.31e' -> '-6.0400000000000000000000000000000e+2' +xfmt6165 format 601E354 '\xe3\xa5\xb1^-8' -> '6.01E+356' +xfmt6166 format -824E226 '+093,G' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,008.24E+228' +xfmt6167 format 739363390937382266198055775366080772281E0 '' -> '739363390937382266198055775366080772281' +xfmt6168 format -454515302063866351737003672817358850225E0 '\xec\x97\xad>.91e' -> '-4.5451530206386635173700367281735885022500000000000000000000000000000000000000000000000000000e+38' +xfmt6169 format 246140652582361447311021031609649256144E122 '\xea\xba\xa0^-93.98f' -> '24614065258236144731102103160964925614400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6170 format -948014819310636954541117113961226060374E157 '' -> '-9.48014819310636954541117113961226060374E+195' +xfmt6171 format 57719299781511416898336169034647e0 '037' -> '0000057719299781511416898336169034647' +xfmt6172 format -14367914687146408119194739627957e0 ' 31' -> '-14367914687146408119194739627957' +xfmt6173 format 38025841364784872621658079681977E166 '092,.82G' -> '000,000,000,000,000,000,000,000,000,000,000,000,000,003.8025841364784872621658079681977E+197' +xfmt6174 format -39455559900475086902254191239395e228 '\xe1\x88\x83<+,f' -> '-39,455,559,900,475,086,902,254,191,239,395,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt6175 format 9305E0 ' 073,.36' -> ' 0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,009,305' +xfmt6176 format -3592E0 '\xef\xb9\xab<-81,%' -> '-359,200%\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab\xef\xb9\xab' +xfmt6177 format 6700E196 '\xea\xb5\xbe=59,.88' -> '\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe\xea\xb5\xbe6.700E+199' +xfmt6178 format -8330E205 '-87,' -> ' -8.330E+208' +xfmt6179 format 4465663941773511778782e0 '' -> '4465663941773511778782' +xfmt6180 format -7727100521080350629188e0 '\xe0\xb6\x8d^+51.33' -> '\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d-7727100521080350629188\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d\xe0\xb6\x8d' +xfmt6181 format 1649986843424110596265e3 ' 052.17f' -> ' 000000001649986843424110596265000.00000000000000000' +xfmt6182 format -1111272672575687886759E274 '' -> '-1.111272672575687886759E+295' +xfmt6183 format 941334856110942202744773568E0 '64.58' -> ' 941334856110942202744773568' +xfmt6184 format -913740418669289852711906017e0 '\xed\x8b\x98<75,.86' -> '-913,740,418,669,289,852,711,906,017\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98\xed\x8b\x98' +xfmt6185 format 502673265645538510584215594e75 '' -> '5.02673265645538510584215594E+101' +xfmt6186 format -941503186631410117477967238E240 '+010.39' -> '-9.41503186631410117477967238E+266' +xfmt6187 format 25871906630566424443255513617e0 '\xe3\x82\x8d<-42,.62f' -> '25,871,906,630,566,424,443,255,513,617.00000000000000000000000000000000000000000000000000000000000000' +xfmt6188 format -77174899348687679782601627000E0 '32,.40F' -> '-77,174,899,348,687,679,782,601,627,000.0000000000000000000000000000000000000000' +xfmt6189 format 81364375525072640199196134101e371 '\xe8\x95\xa0^+13,.51g' -> '+8.1364375525072640199196134101e+399' +xfmt6190 format -39348794782298282059745066656e90 '\xec\xb4\x80=86,.52F' -> '-39,348,794,782,298,282,059,745,066,656,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000' +xfmt6191 format 85665255400e0 '\xe0\xbd\x9d^-49.87%' -> '8566525540000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6192 format -38006870217e0 '' -> '-38006870217' +xfmt6193 format 88427517573E336 '\xee\xb4\xa6=28,.52' -> '\xee\xb4\xa6\xee\xb4\xa6\xee\xb4\xa6\xee\xb4\xa6\xee\xb4\xa6\xee\xb4\xa6\xee\xb4\xa6\xee\xb4\xa6\xee\xb4\xa6\xee\xb4\xa6\xee\xb4\xa68.8427517573E+346' +xfmt6194 format -89359760843E65 ',.6e' -> '-8.935976e+75' +xfmt6195 format 43193216940272476579663585127871150538243e0 '\xe7\x81\xaa=+80,.26G' -> '+\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa\xe7\x81\xaa4.3193216940272476579663585E+40' +xfmt6196 format -18655397669699796356612163735771291300635e0 '02F' -> '-18655397669699796356612163735771291300635' +xfmt6197 format 62015467623806091932468311975179650582663e231 '\xe2\x93\xb0^21.97e' -> '6.2015467623806091932468311975179650582663000000000000000000000000000000000000000000000000000000000e+271' +xfmt6198 format -43276721088409375909869377099987340560871E141 '23' -> '-4.3276721088409375909869377099987340560871E+181' +xfmt6199 format 212858557e0 '\xc7\x82^-53,.32E' -> '\xc7\x82\xc7\x82\xc7\x82\xc7\x82\xc7\x82\xc7\x82\xc7\x82\xc7\x822.12858557000000000000000000000000E+8\xc7\x82\xc7\x82\xc7\x82\xc7\x82\xc7\x82\xc7\x82\xc7\x82\xc7\x82' +xfmt6200 format -341842933E0 '\xe8\xaa\x84= 16,.97E' -> '-3.4184293300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E+8' +xfmt6201 format 270361041E173 '%' -> '2703610410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6202 format -633890771E329 ',.30' -> '-6.33890771E+337' +xfmt6203 format 42708773030104321617457E0 '048,' -> '0,000,000,000,000,042,708,773,030,104,321,617,457' +xfmt6204 format -85979312686613695228299E0 '.95' -> '-85979312686613695228299' +xfmt6205 format 79502679824613545534020e0 '\xe4\x9b\x88^35' -> '\xe4\x9b\x88\xe4\x9b\x88\xe4\x9b\x88\xe4\x9b\x88\xe4\x9b\x88\xe4\x9b\x8879502679824613545534020\xe4\x9b\x88\xe4\x9b\x88\xe4\x9b\x88\xe4\x9b\x88\xe4\x9b\x88\xe4\x9b\x88' +xfmt6206 format -90043925572636587776002E323 '\xc6\x8f^-,.43%' -> '-900,439,255,726,365,877,760,020,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000%' +xfmt6207 format 1661045114484271171837880818674400e0 '\xea\xae\x9e<25,.64%' -> '166,104,511,448,427,117,183,788,081,867,440,000.0000000000000000000000000000000000000000000000000000000000000000%' +xfmt6208 format -2805288253519530123584138244328450e0 '\xea\xba\x81<,.56F' -> '-2,805,288,253,519,530,123,584,138,244,328,450.00000000000000000000000000000000000000000000000000000000' +xfmt6209 format 7882922773524259442996717224336546e251 ',F' -> '788,292,277,352,425,944,299,671,722,433,654,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt6210 format -8773697554195775529431225855680185E239 '\xee\x9a\xbd< 18,.71F' -> '-877,369,755,419,577,552,943,122,585,568,018,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6211 format 6810579969319255849562501686507693356476E0 '\xee\xb5\xa9<-88,.46f' -> '6,810,579,969,319,255,849,562,501,686,507,693,356,476.0000000000000000000000000000000000000000000000' +xfmt6212 format -6308805313729388291955212527581552993667E0 '0.54' -> '-6308805313729388291955212527581552993667' +xfmt6213 format 2322372857885949649677679519098935633640E73 '\xe5\x9b\x87<-g' -> '2.322372857885949649677679519098935633640e+112' +xfmt6214 format -4543072290252604658557603744965689634329E302 '21E' -> '-4.543072290252604658557603744965689634329E+341' +xfmt6215 format 1290166e0 '\xe9\xba\xa7>23e' -> '\xe9\xba\xa7\xe9\xba\xa7\xe9\xba\xa7\xe9\xba\xa7\xe9\xba\xa7\xe9\xba\xa7\xe9\xba\xa7\xe9\xba\xa7\xe9\xba\xa7\xe9\xba\xa7\xe9\xba\xa7\xe9\xba\xa71.290166e+6' +xfmt6216 format -9383716E0 ',' -> '-9,383,716' +xfmt6217 format 1211330E124 '.22' -> '1.211330E+130' +xfmt6218 format -1039868E181 '\xe0\xb4\x9c<+37,' -> '-1.039868E+187\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c\xe0\xb4\x9c' +xfmt6219 format 7331343965596267e0 '\xee\xa3\xab<.66n' -> '7331343965596267' +xfmt6220 format -3160715369996245e0 '0' -> '-3160715369996245' +xfmt6221 format 6449778737711492e180 '\xe7\xa6\x80<-,.53E' -> '6.44977873771149200000000000000000000000000000000000000E+195' +xfmt6222 format -7111637178347297e184 '\xe9\xa6\x9c^ 54,.46e' -> '-7.1116371783472970000000000000000000000000000000e+199' +xfmt6223 format 123.12 '\xec\x82\xb7=-55,.47G' -> '\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7\xec\x82\xb7123.12' +xfmt6224 format -12345678901234567. ',.9g' -> '-1.23456789e+16' +xfmt6225 format 15929619906216431787024e0 '\xe5\x9f\x90>95,.29F' -> '\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x90\xe5\x9f\x9015,929,619,906,216,431,787,024.00000000000000000000000000000' +xfmt6226 format -92864384163608079044776e0 '\xe9\x80\xab<57,.9F' -> '-92,864,384,163,608,079,044,776.000000000\xe9\x80\xab\xe9\x80\xab\xe9\x80\xab\xe9\x80\xab\xe9\x80\xab\xe9\x80\xab\xe9\x80\xab\xe9\x80\xab\xe9\x80\xab\xe9\x80\xab\xe9\x80\xab\xe9\x80\xab\xe9\x80\xab\xe9\x80\xab\xe9\x80\xab\xe9\x80\xab' +xfmt6227 format 92427943705080679906106e171 '+86' -> ' +9.2427943705080679906106E+193' +xfmt6228 format -75883462606100194271923e20 '\xec\xa5\xae^.46' -> '-7.5883462606100194271923E+42' +xfmt6229 format 898888352922774238610577939272E0 '\xee\xac\x9e> 55,.92' -> '\xee\xac\x9e\xee\xac\x9e\xee\xac\x9e\xee\xac\x9e\xee\xac\x9e\xee\xac\x9e\xee\xac\x9e\xee\xac\x9e\xee\xac\x9e\xee\xac\x9e\xee\xac\x9e\xee\xac\x9e\xee\xac\x9e\xee\xac\x9e\xee\xac\x9e 898,888,352,922,774,238,610,577,939,272' +xfmt6230 format -241712521511115338361842520676e0 '\xed\x98\xac<.33f' -> '-241712521511115338361842520676.000000000000000000000000000000000' +xfmt6231 format 499017439340313061989282007103E285 '\xe4\xa7\x85=+85,.14e' -> '+\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x85\xe4\xa7\x854.99017439340313e+314' +xfmt6232 format -964079277941206709446708914564e132 '.58' -> '-9.64079277941206709446708914564E+161' +xfmt6233 format 400778665718283603905145074894638401240293E0 '\xef\x8d\xae<14,.88g' -> '400,778,665,718,283,603,905,145,074,894,638,401,240,293' +xfmt6234 format -414132276795190567644233283755298647800223E0 '\xe5\x95\x87=12,g' -> '-414,132,276,795,190,567,644,233,283,755,298,647,800,223' +xfmt6235 format 143088788581505563753377403432308924076019e43 '\xe5\x99\x8b^59,.77e' -> '1.43088788581505563753377403432308924076019000000000000000000000000000000000000e+84' +xfmt6236 format -154267454773608754727109926817018041839800e87 'E' -> '-1.54267454773608754727109926817018041839800E+128' +xfmt6237 format 37237534248245288801736129e0 '+094,' -> '+0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,037,237,534,248,245,288,801,736,129' +xfmt6238 format -18557374040666340805300413E0 '\xe6\xb5\x9e^82' -> '\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e-18557374040666340805300413\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e\xe6\xb5\x9e' +xfmt6239 format 37605434609061723315993486E155 '\xee\x8b\xa2=-81,.10F' -> '3,760,543,460,906,172,331,599,348,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000' +xfmt6240 format -83970828505816749372547413E243 '\xea\xaa\xb3^-76,' -> '\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3-8.3970828505816749372547413E+268\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3\xea\xaa\xb3' +xfmt6241 format 347E0 '\xe2\x82\x96=-62,.53e' -> '\xe2\x82\x96\xe2\x82\x96\xe2\x82\x96\xe2\x82\x963.47000000000000000000000000000000000000000000000000000e+2' +xfmt6242 format -638E0 '\xec\x91\xb8=12,%' -> '-\xec\x91\xb8\xec\x91\xb8\xec\x91\xb8\xec\x91\xb863,800%' +xfmt6243 format 974e37 '\xec\x98\xa9=+,.65g' -> '+9.74e+39' +xfmt6244 format -147e45 '\xc5\xb6^ 12,.51G' -> '\xc5\xb6-1.47E+47\xc5\xb6\xc5\xb6' +xfmt6245 format 2e0 '25' -> ' 2' +xfmt6246 format -2E0 '\xe3\x85\xaa=32,.68' -> '-\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa\xe3\x85\xaa2' +xfmt6247 format 7e15 '' -> '7E+15' +xfmt6248 format -6E236 '' -> '-6E+236' +xfmt6249 format 716554341053472980204432190306805811644e0 '\xeb\x88\xb5<-' -> '716554341053472980204432190306805811644' +xfmt6250 format -999958684815789105361008840093662516275e0 '5.90' -> '-999958684815789105361008840093662516275' +xfmt6251 format 379063063090040115537426790237752337090E290 '.88' -> '3.79063063090040115537426790237752337090E+328' +xfmt6252 format -429130409219396979595070583852556052340E153 ' ' -> '-4.29130409219396979595070583852556052340E+191' +xfmt6253 format 98206879559E0 ' ,.76F' -> ' 98,206,879,559.0000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6254 format -96973190295E0 '0' -> '-96973190295' +xfmt6255 format 48409217203E344 '' -> '4.8409217203E+354' +xfmt6256 format -64329063208E16 '76' -> ' -6.4329063208E+26' +xfmt6257 format 7044618286028422821915665824990e0 ' 33.69f' -> ' 7044618286028422821915665824990.000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6258 format -4988776069175589103864141682749E0 '\xec\x9a\xae<+8,.75' -> '-4,988,776,069,175,589,103,864,141,682,749' +xfmt6259 format 8747707861406724070052306938177E77 '\xc4\x8e>,%' -> '87,477,078,614,067,240,700,523,069,381,770,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt6260 format -3755604948349860315848272759780E379 ',.35%' -> '-3,755,604,948,349,860,315,848,272,759,780,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000%' +xfmt6261 format 39E0 '\xef\x87\x84^,.36f' -> '39.000000000000000000000000000000000000' +xfmt6262 format -24E0 '\xed\x99\x97= ,.19' -> '-24' +xfmt6263 format 31E13 '\xe6\xab\x9f^39' -> '\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f3.1E+14\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f\xe6\xab\x9f' +xfmt6264 format -12E196 '\xe9\x83\xb7<,' -> '-1.2E+197' +xfmt6265 format 5828891677e0 '.5g' -> '5.8289e+9' +xfmt6266 format -1756478003E0 '\xee\xb2\xaa>-44,G' -> '\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa\xee\xb2\xaa-1,756,478,003' +xfmt6267 format 1090194414E305 '\xe2\xbe\x89> 73,.31%' -> ' 10,901,944,140,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000%' +xfmt6268 format -2166277210e308 '\xe3\xb4\xb8<33,.57g' -> '-2.166277210e+317\xe3\xb4\xb8\xe3\xb4\xb8\xe3\xb4\xb8\xe3\xb4\xb8\xe3\xb4\xb8\xe3\xb4\xb8\xe3\xb4\xb8\xe3\xb4\xb8\xe3\xb4\xb8\xe3\xb4\xb8\xe3\xb4\xb8\xe3\xb4\xb8\xe3\xb4\xb8\xe3\xb4\xb8\xe3\xb4\xb8\xe3\xb4\xb8' +xfmt6269 format 9886678032363528933926871677720097519523e0 '04,' -> '9,886,678,032,363,528,933,926,871,677,720,097,519,523' +xfmt6270 format -2488785180808572871742197852118805577032e0 '\xea\x95\x95=+,.96F' -> '-2,488,785,180,808,572,871,742,197,852,118,805,577,032.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6271 format 5742059807798116352045088942016830217564e116 '\xef\xa2\x8a>-39,.48g' -> '5.742059807798116352045088942016830217564e+155' +xfmt6272 format -8923929150042012522830001790356992210949e232 ' ' -> '-8.923929150042012522830001790356992210949E+271' +xfmt6273 format 5811190580776867e0 '19,.53' -> '5,811,190,580,776,867' +xfmt6274 format -7226296572503858E0 '0' -> '-7226296572503858' +xfmt6275 format 1598529745284751E236 '' -> '1.598529745284751E+251' +xfmt6276 format -3596913784185559E369 '1' -> '-3.596913784185559E+384' +xfmt6277 format 153370357586810391e0 '\xea\x9b\x99=+30,.50g' -> '+\xea\x9b\x99\xea\x9b\x99\xea\x9b\x99\xea\x9b\x99\xea\x9b\x99\xea\x9b\x99153,370,357,586,810,391' +xfmt6278 format -904601147950684734e0 '0' -> '-904601147950684734' +xfmt6279 format 615649962091646655e257 '' -> '6.15649962091646655E+274' +xfmt6280 format -671258934641880427E182 '\xe7\x86\xb4<.9' -> '-6.71258935E+199' +xfmt6281 format 87643977123750418186E0 '0.36%' -> '8764397712375041818600.000000000000000000000000000000000000%' +xfmt6282 format -52116773411336155393E0 '\xe0\xbb\xa4=+81,.85g' -> '-\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa4\xe0\xbb\xa452,116,773,411,336,155,393' +xfmt6283 format 55375215877109593031e149 '\xea\xab\xa2> 22.62G' -> ' 5.5375215877109593031E+168' +xfmt6284 format -71756454527635247750e60 '.56G' -> '-7.1756454527635247750E+79' +xfmt6285 format 57179868626049490225663213586372354E0 ' ,E' -> ' 5.7179868626049490225663213586372354E+34' +xfmt6286 format -61456971271250235704629652814844752e0 '-66,f' -> ' -61,456,971,271,250,235,704,629,652,814,844,752' +xfmt6287 format 48104841382493505453112618496667074E272 '' -> '4.8104841382493505453112618496667074E+306' +xfmt6288 format -75410336079154136179252932536400425e348 '\xe3\x8e\xb2>,.41E' -> '-7.54103360791541361792529325364004250000000E+382' +xfmt6289 format 65837022824391269022421619619629678445e0 ',' -> '65,837,022,824,391,269,022,421,619,619,629,678,445' +xfmt6290 format -47916645325602972244938893074671461169e0 '\xee\x8b\xb5=f' -> '-47916645325602972244938893074671461169' +xfmt6291 format 59071055064138115046430498513739682925e152 '\xe5\xaa\xbb^-,.80g' -> '5.9071055064138115046430498513739682925e+189' +xfmt6292 format -81134688097855704016588246506743372605E227 '\xea\x81\xbf^+5,.79G' -> '-8.1134688097855704016588246506743372605E+264' +xfmt6293 format 5941975154296432595731e0 '-.31E' -> '5.9419751542964325957310000000000E+21' +xfmt6294 format -5165749451362886356421E0 '\xe7\xbe\x8d^ 83,.61' -> '\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d-5,165,749,451,362,886,356,421\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d\xe7\xbe\x8d' +xfmt6295 format 5347921017328498772518E210 '+15' -> '+5.347921017328498772518E+231' +xfmt6296 format -9156260562977373272988E381 '\xe6\xa9\x94< 3,.23f' -> '-9,156,260,562,977,373,272,988,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000' +xfmt6297 format 542433703e0 '\xef\x81\x85<' -> '542433703' +xfmt6298 format -805390905E0 '\xe8\x9c\xba>-' -> '-805390905' +xfmt6299 format 574037470E375 '\xe7\x8f\x89>-77,.82f' -> '574,037,470,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6300 format -973913484E323 '-,' -> '-9.73913484E+331' +xfmt6301 format 57757402e0 '' -> '57757402' +xfmt6302 format -99430277E0 '\xea\x9f\x8a^+72,.73%' -> '-9,943,027,700.0000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6303 format 78943497E246 '-,.49E' -> '7.8943497000000000000000000000000000000000000000000E+253' +xfmt6304 format -46389627e378 ' 041,.37F' -> '-46,389,627,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000' +xfmt6305 format 439813e0 '-3,.32' -> '439,813' +xfmt6306 format -480540E0 '' -> '-480540' +xfmt6307 format 594572E234 ' 0.13' -> ' 5.94572E+239' +xfmt6308 format -159626E291 '-80,.32F' -> '-159,626,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000' +xfmt6309 format 39641663766905796319078801693158271316830990E0 '\xec\xbc\xb0>-,g' -> '39,641,663,766,905,796,319,078,801,693,158,271,316,830,990' +xfmt6310 format -46836032252473306760273266851798408185353717E0 '\xe7\xb8\x8d< 48,.43' -> '-4.683603225247330676027326685179840818535372E+43' +xfmt6311 format 84699780805923855982246124915437459372172434E238 '-' -> '8.4699780805923855982246124915437459372172434E+281' +xfmt6312 format -41457920961534655742541029415190518284305520E292 '\xe5\x9c\x86=,e' -> '-4.1457920961534655742541029415190518284305520e+335' +xfmt6313 format 5376627143833902147E0 '71' -> ' 5376627143833902147' +xfmt6314 format -4964095064580686517e0 '0,f' -> '-4,964,095,064,580,686,517' +xfmt6315 format 8422666954304728869e53 '15.14E' -> '8.42266695430473E+71' +xfmt6316 format -2511524886760830336e107 '0,.51' -> '-2.511524886760830336E+125' +xfmt6317 format 42818393795500807945357199806e0 '\xe7\xb7\xb1=+37,.90%' -> '+4,281,839,379,550,080,794,535,719,980,600.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6318 format -74004679028658034016045658920e0 '\xe3\x9a\x9b>' -> '-74004679028658034016045658920' +xfmt6319 format 67080176480300046619992894802E169 'f' -> '670801764803000466199928948020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6320 format -56324484354962276514223966014e2 '\xec\x81\x85=-35,.81f' -> '-5,632,448,435,496,227,651,422,396,601,400.000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6321 format 8113e0 '\xe3\xb6\xaf^%' -> '811300%' +xfmt6322 format -3908E0 '-11,.1' -> ' -4E+3' +xfmt6323 format 8594E99 '\xe3\x9c\x96= 19,.33F' -> ' 8,594,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000' +xfmt6324 format -9471e340 '\xe6\xba\x81=-54,.81E' -> '-9.471000000000000000000000000000000000000000000000000000000000000000000000000000000E+343' +xfmt6325 format 971473407027244506190636153826281620E0 '\xe8\x83\xa2< ,.30f' -> ' 971,473,407,027,244,506,190,636,153,826,281,620.000000000000000000000000000000' +xfmt6326 format -550843976739460202454325322887591972e0 '\xed\x8b\xb4=+2,.2' -> '-5.5E+35' +xfmt6327 format 319709154175662459709890711488479648E348 '\xe7\xb6\xb0^ 82,.32' -> '\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0 3.1970915417566245970989071148848E+383\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0\xe7\xb6\xb0' +xfmt6328 format -137671080940997682576010350589890363e274 '\xec\xaa\x9d>-24,.19E' -> '-1.3767108094099768258E+309' +xfmt6329 format 3178239e0 '+0,.34F' -> '+3,178,239.0000000000000000000000000000000000' +xfmt6330 format -4793535e0 '' -> '-4793535' +xfmt6331 format 5538791e192 '14,.64' -> ' 5.538791E+198' +xfmt6332 format -1600577E23 '' -> '-1.600577E+29' +xfmt6333 format 65771E0 '\xe9\x91\xa3>-4,.46g' -> '65,771' +xfmt6334 format -83799e0 ',' -> '-83,799' +xfmt6335 format 18001E227 '-f' -> '1800100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6336 format -20938E5 '0' -> '-2.0938E+9' +xfmt6337 format 389159201301330E0 '-0,.9' -> '3.89159201E+14' +xfmt6338 format -416858940414211E0 '\xe9\xab\x8f> 24,.88' -> '\xe9\xab\x8f\xe9\xab\x8f\xe9\xab\x8f\xe9\xab\x8f-416,858,940,414,211' +xfmt6339 format 225469478734295e201 '\xe1\xb9\x85=+.50E' -> '+2.25469478734295000000000000000000000000000000000000E+215' +xfmt6340 format -919356051462719E55 '' -> '-9.19356051462719E+69' +xfmt6341 format 7285182507652128617237139610906706E0 '\xe2\x80\x9c^-5.73' -> '7285182507652128617237139610906706' +xfmt6342 format -3458919234134401731356319014221381e0 '\xea\xa0\x94^+72,.65' -> '\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94-3,458,919,234,134,401,731,356,319,014,221,381\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94\xea\xa0\x94' +xfmt6343 format 2438670180714287060283509531463513e246 ' 078' -> ' 00000000000000000000000000000000000002.438670180714287060283509531463513E+279' +xfmt6344 format -2221822737543296757939766562472954E287 '' -> '-2.221822737543296757939766562472954E+320' +xfmt6345 format 12345678.123456789012345678901 '\xe9\xa5\xb2^57,.74' -> '\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb212,345,678.123456789012345678901\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb2\xe9\xa5\xb2' +xfmt6346 format -123456789012345678901.1234567890 '\xe0\xa4\x8b= 73,.38%' -> '-\xe0\xa4\x8b\xe0\xa4\x8b12,345,678,901,234,567,890,112.34567890000000000000000000000000000000%' +xfmt6347 format 744375302275396263261582e0 '0G' -> '744375302275396263261582' +xfmt6348 format -588916699734221530200452e0 '0' -> '-588916699734221530200452' +xfmt6349 format 387190336291096880992083e288 '060' -> '0000000000000000000000000000003.87190336291096880992083E+311' +xfmt6350 format -991955600371649092881705e197 '\xe2\xa9\x82^+48,.11E' -> '\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82-9.91955600372E+220\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82\xe2\xa9\x82' +xfmt6351 format 1832806291521198142834391329918160e0 '25' -> '1832806291521198142834391329918160' +xfmt6352 format -9350208392483269581125055097495357e0 '\xe7\xb2\x9b^93,E' -> '\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b-9.350208392483269581125055097495357E+33\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b\xe7\xb2\x9b' +xfmt6353 format 1880610298279034551709200684123655e30 '0' -> '1.880610298279034551709200684123655E+63' +xfmt6354 format -1058660521539775226798141502885152e73 '08,F' -> '-10,586,605,215,397,752,267,981,415,028,851,520,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt6355 format 707504365845006e0 '-88.88G' -> ' 707504365845006' +xfmt6356 format -651538664651241e0 '\xee\xab\xb9>19E' -> '-6.51538664651241E+14' +xfmt6357 format 514167019060496E379 ',g' -> '5.14167019060496e+393' +xfmt6358 format -209580396281563E74 '\xe6\xa7\xac^+,e' -> '-2.09580396281563e+88' +xfmt6359 format 58125499616610398209667448544e0 '021,e' -> '5.8125499616610398209667448544e+28' +xfmt6360 format -21628961819164366949803136475E0 ' ,.84' -> '-21,628,961,819,164,366,949,803,136,475' +xfmt6361 format 24841869857148560979709725461E283 '\xe3\x83\xb4>-50,.82' -> '\xe3\x83\xb4\xe3\x83\xb4\xe3\x83\xb4\xe3\x83\xb4\xe3\x83\xb4\xe3\x83\xb4\xe3\x83\xb4\xe3\x83\xb4\xe3\x83\xb4\xe3\x83\xb4\xe3\x83\xb4\xe3\x83\xb4\xe3\x83\xb4\xe3\x83\xb4\xe3\x83\xb42.4841869857148560979709725461E+311' +xfmt6362 format -26227116470619638251165032574E143 ',' -> '-2.6227116470619638251165032574E+171' +xfmt6363 format 83527085217364285960065433134868408862379e0 '\xea\xad\xa4^+.71G' -> '+83527085217364285960065433134868408862379' +xfmt6364 format -67155529023000680636012322921732002078933E0 '' -> '-67155529023000680636012322921732002078933' +xfmt6365 format 28968347658068980801312790487190045721230E128 '\xe5\x9a\xab^ 28,.12E' -> '\xe5\x9a\xab\xe5\x9a\xab\xe5\x9a\xab\xe5\x9a\xab 2.896834765807E+168\xe5\x9a\xab\xe5\x9a\xab\xe5\x9a\xab\xe5\x9a\xab' +xfmt6366 format -60177788096469855331450634446869494175912e96 '\xef\xa8\x8b^-47,F' -> '-60,177,788,096,469,855,331,450,634,446,869,494,175,912,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt6367 format 3549939362286360441094000658678E0 '-0,.62' -> '3,549,939,362,286,360,441,094,000,658,678' +xfmt6368 format -4928271819313188863738334113499E0 '\xe6\xb8\x91=.57n' -> '-4928271819313188863738334113499' +xfmt6369 format 1151753452176594954158022828617e19 '\xe9\x83\x96<-66,.56E' -> '1.15175345217659495415802282861700000000000000000000000000E+49\xe9\x83\x96\xe9\x83\x96\xe9\x83\x96\xe9\x83\x96' +xfmt6370 format -1994609908693176436137374712265E152 '\xe7\x98\x86^10.83' -> '-1.994609908693176436137374712265E+182' +xfmt6371 format 79214069285363026013220420e0 '18' -> '79214069285363026013220420' +xfmt6372 format -60769158152568350326302570E0 'f' -> '-60769158152568350326302570' +xfmt6373 format 14008692270882005545469470E131 '+g' -> '+1.4008692270882005545469470e+156' +xfmt6374 format -14121175034879225250123131e292 '\xe9\xba\xad=+,.75' -> '-1.4121175034879225250123131E+317' +xfmt6375 format 6002E0 '\xe8\x9f\xa9=+7,.38G' -> '+\xe8\x9f\xa96,002' +xfmt6376 format -2986E0 '0.96' -> '-2986' +xfmt6377 format 3698E102 '.89' -> '3.698E+105' +xfmt6378 format -3229e297 ',' -> '-3.229E+300' +xfmt6379 format 81017223415007844E0 '37,.55' -> ' 81,017,223,415,007,844' +xfmt6380 format -65926125593997034e0 ' 0.75' -> '-65926125593997034' +xfmt6381 format 36912582499856463e210 '\xed\x8f\xa4<+91.63n' -> '+3.6912582499856463e+226\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4\xed\x8f\xa4' +xfmt6382 format -21625850917687187e373 '\xea\x90\x83^.61' -> '-2.1625850917687187E+389' +xfmt6383 format 24005025865E0 '068,.85F' -> '24,005,025,865.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6384 format -22870472312e0 '\xee\xb4\xb2=1.7' -> '-2.287047E+10' +xfmt6385 format 40186097331E89 '\xe9\x87\xb0^-26.28' -> '\xe9\x87\xb0\xe9\x87\xb0\xe9\x87\xb0\xe9\x87\xb0\xe9\x87\xb04.0186097331E+99\xe9\x87\xb0\xe9\x87\xb0\xe9\x87\xb0\xe9\x87\xb0\xe9\x87\xb0' +xfmt6386 format -75825866360E311 '\xe2\xa6\xb9<%' -> '-758258663600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6387 format 291682E0 '\xe7\xb1\x89>-,.94' -> '291,682' +xfmt6388 format -429261e0 '\xe7\x91\xae>-,.45' -> '-429,261' +xfmt6389 format 430692E7 '\xe8\xa0\xaa=-.84F' -> '4306920000000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6390 format -305765e350 '\xe0\xbe\xab^,F' -> '-30,576,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt6391 format 11106320300535183139146411971709923080908587e0 '41,%' -> '1,110,632,030,053,518,313,914,641,197,170,992,308,090,858,700%' +xfmt6392 format -53317149343514793517988712886153351224237484e0 '' -> '-53317149343514793517988712886153351224237484' +xfmt6393 format 88432027119885882813462652498128455546968230e350 '\xe3\xb3\x91<55' -> '8.8432027119885882813462652498128455546968230E+393\xe3\xb3\x91\xe3\xb3\x91\xe3\xb3\x91\xe3\xb3\x91\xe3\xb3\x91' +xfmt6394 format -13028556709707085409120228660749228543139509e193 '\xee\xb2\xba> 88,.82' -> '\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba\xee\xb2\xba-1.3028556709707085409120228660749228543139509E+236' +xfmt6395 format 3333789891208169931581973514149186246e0 '\xe1\x9b\x86=40,.2' -> '\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x86\xe1\x9b\x863.3E+36' +xfmt6396 format -5548694832356467767370194338536213367E0 '' -> '-5548694832356467767370194338536213367' +xfmt6397 format 3006547762548769614465123710787906219e159 '\xec\xaf\xbf^17,e' -> '3.006547762548769614465123710787906219e+195' +xfmt6398 format -7298541721786034709022881953393179812E207 '0g' -> '-7.298541721786034709022881953393179812e+243' +xfmt6399 format 4764299015293585E0 ' ,' -> ' 4,764,299,015,293,585' +xfmt6400 format -2317246159239474E0 '' -> '-2317246159239474' +xfmt6401 format 5610755100659777E205 '-094,G' -> '0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,005.610755100659777E+220' +xfmt6402 format -6057171192039914e176 '' -> '-6.057171192039914E+191' +xfmt6403 format 868658526782737264888152492871E0 '\xe7\x9d\x9c=+11,.81e' -> '+8.686585267827372648881524928710000000000000000000000000000000000000000000000000000e+29' +xfmt6404 format -422614426022622908137538548802e0 '\xed\x98\xab=+41.26' -> '-\xed\x98\xab\xed\x98\xab\xed\x98\xab\xed\x98\xab\xed\x98\xab\xed\x98\xab\xed\x98\xab\xed\x98\xab\xed\x98\xab4.2261442602262290813753855E+29' +xfmt6405 format 833453548827380000886581661211E14 '\xed\x90\x9e< 76,.3G' -> ' 8.33E+43\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e\xed\x90\x9e' +xfmt6406 format -507469126980568965391478931212E201 '\xed\x80\xbb> ,E' -> '-5.07469126980568965391478931212E+230' +xfmt6407 format 726694333930927515685569697E0 '\xe8\xbf\x97^+,g' -> '+726,694,333,930,927,515,685,569,697' +xfmt6408 format -374016009842339566537120548e0 '\xe2\xa6\xbb>18,.50G' -> '-374,016,009,842,339,566,537,120,548' +xfmt6409 format 351758567787447419342976608E9 '\xe5\x9f\xa1<-15,.64F' -> '351,758,567,787,447,419,342,976,608,000,000,000.0000000000000000000000000000000000000000000000000000000000000000' +xfmt6410 format -437431423193918817723066744e45 '.72' -> '-4.37431423193918817723066744E+71' +xfmt6411 format 3E0 '\xe8\x97\xa0>' -> '3' +xfmt6412 format -8E0 '.72e' -> '-8.000000000000000000000000000000000000000000000000000000000000000000000000e+0' +xfmt6413 format 5e123 '\xeb\x89\xbe '5e+123' +xfmt6414 format -5e379 '\xec\xb6\xbd<+82,.41g' -> '-5e+379\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd\xec\xb6\xbd' +xfmt6415 format 99650246e0 '53G' -> ' 99650246' +xfmt6416 format -94012838E0 '\xea\x90\x8f>89.59' -> '\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f\xea\x90\x8f-94012838' +xfmt6417 format 21874499e0 '\xe3\xbe\xb9=6,g' -> '21,874,499' +xfmt6418 format -29337431E318 '\xef\x9f\x97<67' -> '-2.9337431E+325\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97\xef\x9f\x97' +xfmt6419 format 9836343357266180593676769732e0 '+061.62e' -> '+9.83634335726618059367676973200000000000000000000000000000000000e+27' +xfmt6420 format -8493831928047076817515983200E0 '\xec\x9f\x9e>+65,.10F' -> '\xec\x9f\x9e\xec\x9f\x9e\xec\x9f\x9e\xec\x9f\x9e\xec\x9f\x9e\xec\x9f\x9e\xec\x9f\x9e\xec\x9f\x9e\xec\x9f\x9e\xec\x9f\x9e\xec\x9f\x9e\xec\x9f\x9e\xec\x9f\x9e\xec\x9f\x9e\xec\x9f\x9e\xec\x9f\x9e-8,493,831,928,047,076,817,515,983,200.0000000000' +xfmt6421 format 1267941522399293403825543717E179 '' -> '1.267941522399293403825543717E+206' +xfmt6422 format -7415141218536220025139528610E238 '0.81E' -> '-7.415141218536220025139528610000000000000000000000000000000000000000000000000000000E+265' +xfmt6423 format 625640376524999328834794482045222076148E0 '' -> '625640376524999328834794482045222076148' +xfmt6424 format -653697526854718545903802720615918975448E0 '\xe7\x9e\x98<+46,.80g' -> '-653,697,526,854,718,545,903,802,720,615,918,975,448' +xfmt6425 format 387698386197529752990603136944620511418E3 '' -> '3.87698386197529752990603136944620511418E+41' +xfmt6426 format -136526371687916315204017197702002782200E317 '-7.56' -> '-1.36526371687916315204017197702002782200E+355' +xfmt6427 format 66791E0 '.9' -> '66791' +xfmt6428 format -83496e0 '096,.70E' -> '-0,000,000,000,000,008.3496000000000000000000000000000000000000000000000000000000000000000000E+4' +xfmt6429 format 47369E190 '93' -> ' 4.7369E+194' +xfmt6430 format -55358e141 '\xe9\xb2\xae=-24,.21e' -> '-5.535800000000000000000e+145' +xfmt6431 format 54369435330211110982195584072352751E0 '\xec\x82\x8e= 48,.18F' -> ' 54,369,435,330,211,110,982,195,584,072,352,751.000000000000000000' +xfmt6432 format -59571892476235088626267616558549028E0 '69.21' -> ' -5.95718924762350886263E+34' +xfmt6433 format 47438685480566828460810042006582708E255 '' -> '4.7438685480566828460810042006582708E+289' +xfmt6434 format -10095529055830316940674503785983864E314 '+025,.48e' -> '-1.009552905583031694067450378598386400000000000000e+348' +xfmt6435 format 6296301E0 '' -> '6296301' +xfmt6436 format -1806210E0 '.4' -> '-1.806E+6' +xfmt6437 format 7201849E0 '-25,.19G' -> ' 7,201,849' +xfmt6438 format -1153659e359 ' 02e' -> '-1.153659e+365' +xfmt6439 format 82618598461915126672662E0 '-13,' -> '82,618,598,461,915,126,672,662' +xfmt6440 format -29789330636848872695925e0 '\xe3\xbf\x9a> ' -> '-29789330636848872695925' +xfmt6441 format 62028487758822896253905e288 '\xe8\xb8\x80<-99,.59f' -> '62,028,487,758,822,896,253,905,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000' +xfmt6442 format -25070031179396879976999e102 '081.36' -> '-0000000000000000000000000000000000000000000000000002.5070031179396879976999E+124' +xfmt6443 format 959010476514123588919581036951345937e0 '-059,%' -> '00,000,095,901,047,651,412,358,891,958,103,695,134,593,700%' +xfmt6444 format -537379538456320789586027086083937682E0 '+09,.42F' -> '-537,379,538,456,320,789,586,027,086,083,937,682.000000000000000000000000000000000000000000' +xfmt6445 format 880280152465508021448768542245236541e370 'p<-39.99' -> '8.80280152465508021448768542245236541E+405' +xfmt6446 format -499302221338114821312851778795732113E225 '.93' -> '-4.99302221338114821312851778795732113E+260' +xfmt6447 format 397490577647957744308E0 '86' -> ' 397490577647957744308' +xfmt6448 format -805380601063777627519e0 '' -> '-805380601063777627519' +xfmt6449 format 329469970087431775405E94 '\xe3\x89\xaa=+72,.4%' -> '+329,469,970,087,431,775,405,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000%' +xfmt6450 format -601213947190230261251E310 ' ' -> '-6.01213947190230261251E+330' +xfmt6451 format 965791792e0 '\xe3\x9c\xa9<75.34e' -> '9.6579179200000000000000000000000000e+8\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9\xe3\x9c\xa9' +xfmt6452 format -696022787E0 '+079,.97f' -> '-696,022,787.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6453 format 154270405e22 '\xe9\x8e\xa4>11,.44g' -> '1.54270405e+30' +xfmt6454 format -586396950e48 '\xef\x95\x8c<+' -> '-5.86396950E+56' +xfmt6455 format 4841438856519e0 ',g' -> '4,841,438,856,519' +xfmt6456 format -5130409384477E0 '-0,.2%' -> '-513,040,938,447,700.00%' +xfmt6457 format 7345664839921E374 '\xe7\xab\xb7>,.30' -> '7.345664839921E+386' +xfmt6458 format -8660526868380E171 '-049,.30f' -> '-8,660,526,868,380,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000' +xfmt6459 format 1482810438234278302876934323628566976059882E0 '-26.90' -> '1482810438234278302876934323628566976059882' +xfmt6460 format -6162357879707675451727081611766615482018129E0 '\xe2\xa7\x8f^ 28,.67G' -> '-6,162,357,879,707,675,451,727,081,611,766,615,482,018,129' +xfmt6461 format 9149022437462068824227155970394503775754160E21 '-16,.20' -> '9.1490224374620688242E+63' +xfmt6462 format -6226532806806916166153136011258232013945656E339 '\xeb\x99\xa5= .63E' -> '-6.226532806806916166153136011258232013945656000000000000000000000E+381' +xfmt6463 format 3588450202270911133903774e0 '+' -> '+3588450202270911133903774' +xfmt6464 format -3874514680304335578672979e0 '\xe2\x96\x9e^ 48,.76e' -> '-3.8745146803043355786729790000000000000000000000000000000000000000000000000000e+24' +xfmt6465 format 9081040688479376542037295E233 '\xeb\xb6\x9d< 94,.88' -> ' 9.081040688479376542037295E+257\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d\xeb\xb6\x9d' +xfmt6466 format -7504818469456194137505209E39 '' -> '-7.504818469456194137505209E+63' +xfmt6467 format 12345678901234567890.12345678901 '\xe3\xa0\xa8<-,' -> '12,345,678,901,234,567,890.12345678901' +xfmt6468 format -1234567890123456789.1234567890123456789 '\xc2\x8d<23.22E' -> '-1.2345678901234567891235E+18' +xfmt6469 format 0E0 '\xe3\x9f\xa5>-34,.2' -> '\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa5\xe3\x9f\xa50' +xfmt6470 format 0E0 '034,.15f' -> '00,000,000,000,000.000000000000000' +xfmt6471 format 0e333 '\xe2\xbc\xb7=6,.28g' -> '0e+333' +xfmt6472 format 0e151 '\xee\x86\xac> ,.35E' -> ' 0.00000000000000000000000000000000000E+186' +xfmt6473 format 8811323118396722e0 '33' -> ' 8811323118396722' +xfmt6474 format -4569839290190452E0 '\xe3\x89\x9b>-.65e' -> '-4.56983929019045200000000000000000000000000000000000000000000000000e+15' +xfmt6475 format 7940615775217408e246 '\xe2\xa8\x83= 70,.73' -> ' \xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x83\xe2\xa8\x837.940615775217408E+261' +xfmt6476 format -7770818942849888e307 '\xe3\xaf\xa0= .70' -> '-7.770818942849888E+322' +xfmt6477 format 89731042501000192E0 '\xe5\xb7\x95^+' -> '+89731042501000192' +xfmt6478 format -86140286568710442E0 '\xe9\x96\xbe= 28,.91G' -> '-\xe9\x96\xbe\xe9\x96\xbe\xe9\x96\xbe\xe9\x96\xbe\xe9\x96\xbe86,140,286,568,710,442' +xfmt6479 format 63820190724552786E358 '\xeb\x8b\xb0^2.90%' -> '63820190724552786000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6480 format -77589578120126671e66 '\xea\x98\x94< ,' -> '-7.7589578120126671E+82' +xfmt6481 format 73494615771560519977056244961967e0 ',%' -> '7,349,461,577,156,051,997,705,624,496,196,700%' +xfmt6482 format -62998475203833375578137899935478e0 '\xe5\xa8\xa7>+71,.87G' -> '\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7\xe5\xa8\xa7-62,998,475,203,833,375,578,137,899,935,478' +xfmt6483 format 73310387308163888645759068124707e318 '\xec\xa7\xb3= 34,.69E' -> ' 7.331038730816388864575906812470700000000000000000000000000000000000000E+349' +xfmt6484 format -79091019434316413971197364210462E106 '\xeb\x8a\x83>+13,.71' -> '-7.9091019434316413971197364210462E+137' +xfmt6485 format 156395788733863967895621606178096623E0 '-099n' -> '000000000000000000000000000000000000000000000000000000000000000156395788733863967895621606178096623' +xfmt6486 format -493790527795052844693907384875623653E0 '\xe2\xaa\xb4=-97,.12g' -> '-\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb4\xe2\xaa\xb44.93790527795e+35' +xfmt6487 format 191869191599276719638718174250197414e267 '\xef\xa0\x84>-,.81e' -> '1.918691915992767196387181742501974140000000000000000000000000000000000000000000000e+302' +xfmt6488 format -163354345428001410322304303292618604E120 '\xe2\x87\x84> F' -> '-163354345428001410322304303292618604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6489 format 617799066907192473956613296E0 '' -> '617799066907192473956613296' +xfmt6490 format -773340589555476200474072330e0 '\xe7\xbd\x8f^,.65' -> '-773,340,589,555,476,200,474,072,330' +xfmt6491 format 485396605499438306458172036e55 '\xe3\x8b\xa2>+51,.79%' -> '+485,396,605,499,438,306,458,172,036,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6492 format -109715974514823431297732987e36 '' -> '-1.09715974514823431297732987E+62' +xfmt6493 format 6018578e0 '\xee\x80\x89=24,.27' -> '\xee\x80\x89\xee\x80\x89\xee\x80\x89\xee\x80\x89\xee\x80\x89\xee\x80\x89\xee\x80\x89\xee\x80\x89\xee\x80\x89\xee\x80\x89\xee\x80\x89\xee\x80\x89\xee\x80\x89\xee\x80\x89\xee\x80\x896,018,578' +xfmt6494 format -7679966E0 '' -> '-7679966' +xfmt6495 format 7274911E327 '\xe8\xa6\xb2<.79' -> '7.274911E+333' +xfmt6496 format -2069928e195 '\xe4\x9b\xb9^,%' -> '-206,992,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt6497 format 513722771162901890600741e0 '0,' -> '513,722,771,162,901,890,600,741' +xfmt6498 format -343738124697129656008973e0 '0.52' -> '-343738124697129656008973' +xfmt6499 format 288662690813845853205633e81 ',' -> '2.88662690813845853205633E+104' +xfmt6500 format -948492693776381767160073E203 '\xeb\x90\xb0= 75E' -> '-\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb0\xeb\x90\xb09.48492693776381767160073E+226' +xfmt6501 format 3038071117045997149e0 '+8,.75' -> '+3,038,071,117,045,997,149' +xfmt6502 format -8110351068368448368E0 '\xe2\x81\x84> 89,' -> '\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84\xe2\x81\x84-8,110,351,068,368,448,368' +xfmt6503 format 2238209039402335885e351 '075.87e' -> '2.238209039402335885000000000000000000000000000000000000000000000000000000000000000000000e+369' +xfmt6504 format -5785011760688736423E348 '\xee\xba\xa4=,.88' -> '-5.785011760688736423E+366' +xfmt6505 format 39066739511627797316325328E0 '\xe7\xbe\xa2= 27,G' -> ' 39,066,739,511,627,797,316,325,328' +xfmt6506 format -35805021876581421075672301E0 ',E' -> '-3.5805021876581421075672301E+25' +xfmt6507 format 94287355003978607215461676E236 '\xe8\x8f\xbb '9.4287355003978607215461676E+261' +xfmt6508 format -56817854814167574687807268E351 '\xe3\x9e\x98=,.87%' -> '-5,681,785,481,416,757,468,780,726,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6509 format 80192373E0 ' 0,.52g' -> ' 80,192,373' +xfmt6510 format -36086231E0 '\xee\xa4\x88^ 33,.54%' -> '-3,608,623,100.000000000000000000000000000000000000000000000000000000%' +xfmt6511 format 19080058e349 '0' -> '1.9080058E+356' +xfmt6512 format -78463777E236 '\xe2\xbf\x84<-91,.51f' -> '-7,846,377,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000' +xfmt6513 format 80481221190659061246093e0 '\xef\x9e\xa3<53' -> '80481221190659061246093\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3\xef\x9e\xa3' +xfmt6514 format -64564158696510952834336e0 '.58' -> '-64564158696510952834336' +xfmt6515 format 93221584699816939743637E329 '\xe2\xb2\xb5^+42.26' -> '\xe2\xb2\xb5\xe2\xb2\xb5\xe2\xb2\xb5\xe2\xb2\xb5\xe2\xb2\xb5\xe2\xb2\xb5+9.3221584699816939743637E+351\xe2\xb2\xb5\xe2\xb2\xb5\xe2\xb2\xb5\xe2\xb2\xb5\xe2\xb2\xb5\xe2\xb2\xb5' +xfmt6516 format -75910947889015526845806E320 '' -> '-7.5910947889015526845806E+342' +xfmt6517 format 7E0 '\xe3\xb9\x88^ 87,.36E' -> '\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88 7.000000000000000000000000000000000000E+0\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88\xe3\xb9\x88' +xfmt6518 format -6e0 '\xe8\xba\xbf<-26,.3g' -> '-6\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf\xe8\xba\xbf' +xfmt6519 format 9e318 '\xec\xb8\xa9>10,.68g' -> '\xec\xb8\xa9\xec\xb8\xa9\xec\xb8\xa9\xec\xb8\xa99e+318' +xfmt6520 format -6E119 '\xe9\xb8\xb4<94' -> '-6E+119\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4\xe9\xb8\xb4' +xfmt6521 format 2801157439374521299886488874E0 '14' -> '2801157439374521299886488874' +xfmt6522 format -9902004405449419079417694806E0 '24' -> '-9902004405449419079417694806' +xfmt6523 format 9817048719051611497544427681E74 '-0' -> '9.817048719051611497544427681E+101' +xfmt6524 format -7637988285249867896761769573e102 '\xea\x84\xaf^+,' -> '-7.637988285249867896761769573E+129' +xfmt6525 format 7918103436e0 '.17f' -> '7918103436.00000000000000000' +xfmt6526 format -3721395808e0 '\xef\xbd\xb6^96,.9F' -> '\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6-3,721,395,808.000000000\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6\xef\xbd\xb6' +xfmt6527 format 6421077605e380 '' -> '6.421077605E+389' +xfmt6528 format -9088115021e210 '\xec\xb6\xbd=,e' -> '-9.088115021e+219' +xfmt6529 format 728566365601710718080548807808693e0 '+098,.74g' -> '+0,000,000,000,000,000,000,000,000,000,000,000,000,000,728,566,365,601,710,718,080,548,807,808,693' +xfmt6530 format -901231542072093218396576767275862e0 '' -> '-901231542072093218396576767275862' +xfmt6531 format 719691245472890171865086027139562e197 '\xe8\x83\xac^39.87f' -> '71969124547289017186508602713956200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6532 format -451403546904571343940032729049694E247 '\xe9\xa5\xab=-,.3' -> '-4.51E+279' +xfmt6533 format 862072348739881638e0 ' 85' -> ' 862072348739881638' +xfmt6534 format -325575826100016437E0 '+02f' -> '-325575826100016437' +xfmt6535 format 392104839906958363E340 '\xe4\x80\xb7= 7,.14g' -> ' 3.9210483990696e+357' +xfmt6536 format -706575558113087330e146 '\xe8\xa4\xba< 26e' -> '-7.06575558113087330e+163\xe8\xa4\xba' +xfmt6537 format 60296398261350456465171345165809476e0 '\xee\x90\xbe^+,E' -> '+6.0296398261350456465171345165809476E+34' +xfmt6538 format -93501786826622123191322060279261307E0 ' 044,G' -> '-93,501,786,826,622,123,191,322,060,279,261,307' +xfmt6539 format 10595711130531211630126146480243678E154 '0.49' -> '1.0595711130531211630126146480243678E+188' +xfmt6540 format -51543581076305287953511612704441034E250 '+,.73' -> '-5.1543581076305287953511612704441034E+284' +xfmt6541 format 70838E0 '41' -> ' 70838' +xfmt6542 format -51467E0 '\xec\xa6\x9e<-28,.35f' -> '-51,467.00000000000000000000000000000000000' +xfmt6543 format 23485E291 '\xe1\x89\x87^-,' -> '2.3485E+295' +xfmt6544 format -53131e378 '\xe3\x91\xbb<+18,.34g' -> '-5.3131e+382\xe3\x91\xbb\xe3\x91\xbb\xe3\x91\xbb\xe3\x91\xbb\xe3\x91\xbb\xe3\x91\xbb' +xfmt6545 format 313545877787613637572790061810E0 '\xe3\x99\x95=+19,.20%' -> '+31,354,587,778,761,363,757,279,006,181,000.00000000000000000000%' +xfmt6546 format -624410377358126884912294914252E0 '97' -> ' -624410377358126884912294914252' +xfmt6547 format 203317817223029066524465515300E249 '+n' -> '+2.03317817223029066524465515300e+278' +xfmt6548 format -371203330009061534599887833523E202 '\xec\x9c\x8d< ' -> '-3.71203330009061534599887833523E+231' +xfmt6549 format 2484690905881263709978453706136e0 '+0,.54f' -> '+2,484,690,905,881,263,709,978,453,706,136.000000000000000000000000000000000000000000000000000000' +xfmt6550 format -4181341178055737703223171854648e0 '\xec\xba\xa9^ 58.39G' -> '\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9-4181341178055737703223171854648\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9\xec\xba\xa9' +xfmt6551 format 5816779725526441201187267683254E320 '\xe0\xa8\x8a< 35,.30%' -> ' 58,167,797,255,264,412,011,872,676,832,540,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000%' +xfmt6552 format -6945611318490339663734005214720e375 '' -> '-6.945611318490339663734005214720E+405' +xfmt6553 format 74502201536266752064e0 '\xe6\x99\xa0<+' -> '+74502201536266752064' +xfmt6554 format -80882492654430830082e0 '\xec\x8f\xb3^+,.68E' -> '-8.08824926544308300820000000000000000000000000000000000000000000000000E+19' +xfmt6555 format 80713836366418945355e178 ' 098,.3g' -> ' 0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,008.07e+197' +xfmt6556 format -46435998567372977723E213 '\xeb\xb6\x8e^.20' -> '-4.6435998567372977723E+232' +xfmt6557 format 7499588209009883971164e0 '\xdb\x93>+26.67%' -> '+749958820900988397116400.0000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6558 format -7239642028443885237313E0 '' -> '-7239642028443885237313' +xfmt6559 format 7403743759387462432007e87 ' 099%' -> ' 740374375938746243200700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6560 format -8900877401319155483677E223 '0G' -> '-8.900877401319155483677E+244' +xfmt6561 format 8927907901453918040576587003329846E0 '0' -> '8927907901453918040576587003329846' +xfmt6562 format -5162536689639178291420186757807300e0 '\xe9\x93\x9e<,.61' -> '-5,162,536,689,639,178,291,420,186,757,807,300' +xfmt6563 format 9083160645821378659296956999172257E155 '\xe3\xac\xbb= 78,.40F' -> ' 908,316,064,582,137,865,929,695,699,917,225,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000' +xfmt6564 format -7082782644835265594169769528157367E302 '\xeb\xa7\xb9>-75,.35E' -> '\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9\xeb\xa7\xb9-7.08278264483526559416976952815736700E+335' +xfmt6565 format 97446337816954353960115065612832730817e0 '0' -> '97446337816954353960115065612832730817' +xfmt6566 format -97620605108029328430389948507334736178E0 '021' -> '-97620605108029328430389948507334736178' +xfmt6567 format 34277932294322416367093530690289566319E303 '\xea\xa3\xbc=78.57E' -> '\xea\xa3\xbc\xea\xa3\xbc\xea\xa3\xbc\xea\xa3\xbc\xea\xa3\xbc\xea\xa3\xbc\xea\xa3\xbc\xea\xa3\xbc\xea\xa3\xbc\xea\xa3\xbc\xea\xa3\xbc\xea\xa3\xbc\xea\xa3\xbc\xea\xa3\xbc3.427793229432241636709353069028956631900000000000000000000E+340' +xfmt6568 format -30015084189841539246143284680637966696e87 '\xe5\xa2\x8d^91,F' -> '-30,015,084,189,841,539,246,143,284,680,637,966,696,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt6569 format 531455689817511386648445681141859202236012E0 '\xec\x9a\xbd^-84,.35E' -> '\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd5.31455689817511386648445681141859202E+41\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd\xec\x9a\xbd' +xfmt6570 format -202762565310160053195152616827159782939249E0 '\xe5\xa3\x9b>-5,.22G' -> '-2.027625653101600531952E+41' +xfmt6571 format 170174695796126377079326125224854647267455E356 '\xe0\xbe\xb5= 76,.29%' -> ' 1,701,746,957,961,263,770,793,261,252,248,546,472,674,550,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000%' +xfmt6572 format -635721785244268087938859656928398146015160e82 '-081,.3G' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,006.36E+123' +xfmt6573 format 96607717323138E0 '\xe3\x8c\xa4^ 43,.96e' -> ' 9.660771732313800000000000000000000000000000000000000000000000000000000000000000000000000000000000e+13' +xfmt6574 format -76744387172328e0 '\xe0\xbb\x9e^-68,.84E' -> '-7.674438717232800000000000000000000000000000000000000000000000000000000000000000000000E+13' +xfmt6575 format 32144407969458e164 '' -> '3.2144407969458E+177' +xfmt6576 format -99973181819770e105 'n' -> '-9.9973181819770e+118' +xfmt6577 format 547556416294642315909E0 '\xe5\x88\x92>+44,.30' -> '\xe5\x88\x92\xe5\x88\x92\xe5\x88\x92\xe5\x88\x92\xe5\x88\x92\xe5\x88\x92\xe5\x88\x92\xe5\x88\x92\xe5\x88\x92\xe5\x88\x92\xe5\x88\x92\xe5\x88\x92\xe5\x88\x92\xe5\x88\x92\xe5\x88\x92\xe5\x88\x92+547,556,416,294,642,315,909' +xfmt6578 format -984297568436938226529e0 '\xe5\xaf\xb6<1,.10E' -> '-9.8429756844E+20' +xfmt6579 format 841485625603194193611e108 '\xe1\x8a\xba<-,G' -> '8.41485625603194193611E+128' +xfmt6580 format -427206673152458578100e358 '015.24f' -> '-4272066731524585781000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000' +xfmt6581 format 2304125014811735285825834733816400123E0 '\xe0\xa2\xaf=,G' -> '2,304,125,014,811,735,285,825,834,733,816,400,123' +xfmt6582 format -6197912009495020095222251505694541203e0 '+045,.86f' -> '-6,197,912,009,495,020,095,222,251,505,694,541,203.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6583 format 4106168261653181886916378613007126466E113 '\xec\xbb\xb4<1g' -> '4.106168261653181886916378613007126466e+149' +xfmt6584 format -5737502855326291611431491441280433314e344 '\xe3\xa4\xb5<+,' -> '-5.737502855326291611431491441280433314E+380' +xfmt6585 format 3010730419350384174513862158836117815383e0 ' 49.96g' -> ' 3010730419350384174513862158836117815383' +xfmt6586 format -8087350387670928821005051668937725855847E0 '+0.59' -> '-8087350387670928821005051668937725855847' +xfmt6587 format 4103910739850870790765320677913673944298e234 '+0f' -> '+4103910739850870790765320677913673944298000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6588 format -9184515133907049338719969651363309735617E177 '\xec\x97\x87<95,.46g' -> '-9.184515133907049338719969651363309735617e+216\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87\xec\x97\x87' +xfmt6589 format 12345678901234567890.1234567 ' 0g' -> ' 12345678901234567890.1234567' +xfmt6590 format -12345678901.1234567 '+E' -> '-1.23456789011234567E+10' +xfmt6591 format 9001622409186924860589445309300355e0 '\xe8\x86\x95=73,.51F' -> '9,001,622,409,186,924,860,589,445,309,300,355.000000000000000000000000000000000000000000000000000' +xfmt6592 format -6253152525732838708099913592279565e0 '\xe4\x94\x80>93.50E' -> '\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80\xe4\x94\x80-6.25315252573283870809991359227956500000000000000000E+33' +xfmt6593 format 3905632053189574639619245269830309E6 '\xe0\xbe\xac>-.84E' -> '3.905632053189574639619245269830309000000000000000000000000000000000000000000000000000E+39' +xfmt6594 format -6754754333344381647879754212878336E82 '\xe1\xb1\x90=+,%' -> '-6,754,754,333,344,381,647,879,754,212,878,336,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt6595 format 7356802e0 '' -> '7356802' +xfmt6596 format -8410923E0 '\xe9\x9a\x88^+80,.8' -> '\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88-8,410,923\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88\xe9\x9a\x88' +xfmt6597 format 3905194e90 '\xe6\xb8\x98< 45,.16G' -> ' 3.905194E+96\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98\xe6\xb8\x98' +xfmt6598 format -3629243E321 '\xe5\xa5\xa0=,' -> '-3.629243E+327' +xfmt6599 format 90726E0 '' -> '90726' +xfmt6600 format -72925E0 '' -> '-72925' +xfmt6601 format 12416e42 '\xea\x8b\x91>+86,.15E' -> '\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91+1.241600000000000E+46' +xfmt6602 format -12994E130 '+055,' -> '-0,000,000,000,000,000,000,000,000,000,000,001.2994E+134' +xfmt6603 format 761162103279987447241818488657880594e0 '0f' -> '761162103279987447241818488657880594' +xfmt6604 format -274194234113697951134951973073233451E0 '44,' -> '-274,194,234,113,697,951,134,951,973,073,233,451' +xfmt6605 format 152838522183598618919002064734909918e184 '\xef\xab\xbe< 80,.45g' -> ' 1.52838522183598618919002064734909918e+219\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe\xef\xab\xbe' +xfmt6606 format -955495590857954859058178929588378558e122 'g' -> '-9.55495590857954859058178929588378558e+157' +xfmt6607 format 30067348808606892482354010328541827E0 '' -> '30067348808606892482354010328541827' +xfmt6608 format -73743855038397213454358023867795101E0 '\xe8\x81\xaa=-31,E' -> '-7.3743855038397213454358023867795101E+34' +xfmt6609 format 19206634150717418751626400621354062E224 '\xe0\xbb\x94=+18F' -> '+1920663415071741875162640062135406200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6610 format -11431997032750642123990191752527581E173 '\xe9\x96\xae=+33,.60G' -> '-1.1431997032750642123990191752527581E+207' +xfmt6611 format 7634545749287462564599501404604014336814806e0 '\xe9\xba\xb6= 43.34' -> ' \xe9\xba\xb6\xe9\xba\xb6\xe9\xba\xb67.634545749287462564599501404604014E+42' +xfmt6612 format -5539959607666350941590233280622306500507926e0 '' -> '-5539959607666350941590233280622306500507926' +xfmt6613 format 6100739229173585531159935853489159456353284e162 '\xe9\x87\xad>,.28f' -> '6,100,739,229,173,585,531,159,935,853,489,159,456,353,284,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000' +xfmt6614 format -6909938653109274091708866030185545157205379E220 '\xe3\x99\x9f> 98,' -> '\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f\xe3\x99\x9f-6.909938653109274091708866030185545157205379E+262' +xfmt6615 format 39568309237652068105603362672046628255978e0 '\xef\xad\xa2>+64,G' -> '\xef\xad\xa2\xef\xad\xa2\xef\xad\xa2\xef\xad\xa2\xef\xad\xa2\xef\xad\xa2\xef\xad\xa2\xef\xad\xa2\xef\xad\xa2+39,568,309,237,652,068,105,603,362,672,046,628,255,978' +xfmt6616 format -17583810779970732098398775279162058494752e0 '\xe6\xa6\xbc>+29,.95E' -> '-1.75838107799707320983987752791620584947520000000000000000000000000000000000000000000000000000000E+40' +xfmt6617 format 19668114938423557685323483740482891645120E270 '\xe3\xb6\xb6=' -> '1.9668114938423557685323483740482891645120E+310' +xfmt6618 format -67591266901546898233791314072342941840641E345 '0' -> '-6.7591266901546898233791314072342941840641E+385' +xfmt6619 format 95636420e0 '\xec\xa3\x80=-56,.35E' -> '\xec\xa3\x80\xec\xa3\x80\xec\xa3\x80\xec\xa3\x80\xec\xa3\x80\xec\xa3\x80\xec\xa3\x80\xec\xa3\x80\xec\xa3\x80\xec\xa3\x80\xec\xa3\x80\xec\xa3\x80\xec\xa3\x80\xec\xa3\x80\xec\xa3\x80\xec\xa3\x809.56364200000000000000000000000000000E+7' +xfmt6620 format -30765885e0 '13,' -> ' -30,765,885' +xfmt6621 format 74370131E314 '+075,.1F' -> '+7,437,013,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0' +xfmt6622 format -36469255e187 '\xe2\x8b\x80>-' -> '-3.6469255E+194' +xfmt6623 format 0E0 '5,f' -> ' 0' +xfmt6624 format 0E0 '' -> '0' +xfmt6625 format 0E104 '+97n' -> ' +0e+104' +xfmt6626 format 0e129 '0' -> '0E+129' +xfmt6627 format 828557588947785738E0 '61,' -> ' 828,557,588,947,785,738' +xfmt6628 format -621114924582538607e0 '\xe9\xa9\x93>' -> '-621114924582538607' +xfmt6629 format 871498883097563828e92 ' ,e' -> ' 8.71498883097563828e+109' +xfmt6630 format -742414746148345265E26 '\xec\x8a\xbc>+97.4f' -> '\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc\xec\x8a\xbc-74241474614834526500000000000000000000000000.0000' +xfmt6631 format 975335699220363536425578422860517E0 '\xec\x9e\x8d>,.31' -> '9.753356992203635364255784228605E+32' +xfmt6632 format -922074169359008568421217977265750e0 '.30' -> '-9.22074169359008568421217977266E+32' +xfmt6633 format 123435015739191705540841296712765E256 '\xe3\x89\xa5=-32,.17' -> '\xe3\x89\xa5\xe3\x89\xa5\xe3\x89\xa5\xe3\x89\xa5\xe3\x89\xa5\xe3\x89\xa5\xe3\x89\xa5\xe3\x89\xa5\xe3\x89\xa51.2343501573919171E+288' +xfmt6634 format -178967279526537476645634898653503E238 '\xe0\xbd\x9f>42,.98E' -> '-1.78967279526537476645634898653503000000000000000000000000000000000000000000000000000000000000000000E+270' +xfmt6635 format 1227795948745266937810029676704772535E0 '\xee\xb5\xb4> 94,.88e' -> ' 1.2277959487452669378100296767047725350000000000000000000000000000000000000000000000000000e+36' +xfmt6636 format -9413581020207065773870240305812500273E0 '\xe1\x85\xb5^.79' -> '-9413581020207065773870240305812500273' +xfmt6637 format 1287421445304587692792795477127687658E220 '+06,.92e' -> '+1.28742144530458769279279547712768765800000000000000000000000000000000000000000000000000000000e+256' +xfmt6638 format -6642534553842034742969889903504827730e243 ' 96,' -> ' -6.642534553842034742969889903504827730E+279' +xfmt6639 format 8405871526611887513072492e0 '\xe9\xbc\x92>88.91e' -> '8.4058715266118875130724920000000000000000000000000000000000000000000000000000000000000000000e+24' +xfmt6640 format -6767444833805518299935559e0 'G' -> '-6767444833805518299935559' +xfmt6641 format 6939974439836595075444833e215 ',g' -> '6.939974439836595075444833e+239' +xfmt6642 format -2523321901450367957663924e149 '\xe7\xb5\xb5> 13.23G' -> '-2.5233219014503679576639E+173' +xfmt6643 format 31395170124188969144e0 '\xec\x8a\x8f^76.36f' -> '\xec\x8a\x8f\xec\x8a\x8f\xec\x8a\x8f\xec\x8a\x8f\xec\x8a\x8f\xec\x8a\x8f\xec\x8a\x8f\xec\x8a\x8f\xec\x8a\x8f31395170124188969144.000000000000000000000000000000000000\xec\x8a\x8f\xec\x8a\x8f\xec\x8a\x8f\xec\x8a\x8f\xec\x8a\x8f\xec\x8a\x8f\xec\x8a\x8f\xec\x8a\x8f\xec\x8a\x8f\xec\x8a\x8f' +xfmt6644 format -62957743583609130468E0 '\xec\x8d\x91=60' -> '-\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x91\xec\x8d\x9162957743583609130468' +xfmt6645 format 72226005912835121994E194 '\xe9\xb8\xb4=+24,.45' -> '+7.2226005912835121994E+213' +xfmt6646 format -67154495082259752014E79 '\xd2\x88= 68,.60E' -> '-\xd2\x886.715449508225975201400000000000000000000000000000000000000000E+98' +xfmt6647 format 404831902140001364292699E0 '\xe4\xa1\x9a>77.48g' -> '\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a\xe4\xa1\x9a404831902140001364292699' +xfmt6648 format -871711320454777787347665e0 '\xe7\x8c\x95^ 60.26g' -> '\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95-871711320454777787347665\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95\xe7\x8c\x95' +xfmt6649 format 711097611770473367970254E61 '\xe3\x83\x86^ ,.71f' -> ' 7,110,976,117,704,733,679,702,540,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6650 format -454488011069514744750206e234 '\xef\xb3\x8e<32,.9' -> '-4.54488011E+257\xef\xb3\x8e\xef\xb3\x8e\xef\xb3\x8e\xef\xb3\x8e\xef\xb3\x8e\xef\xb3\x8e\xef\xb3\x8e\xef\xb3\x8e\xef\xb3\x8e\xef\xb3\x8e\xef\xb3\x8e\xef\xb3\x8e\xef\xb3\x8e\xef\xb3\x8e\xef\xb3\x8e\xef\xb3\x8e' +xfmt6651 format 218137148279298932686618737e0 '\xe7\xbb\xb6<-f' -> '218137148279298932686618737' +xfmt6652 format -646073246531939682866552088E0 ' 82,.62' -> ' -646,073,246,531,939,682,866,552,088' +xfmt6653 format 568797601844770467830356647E260 '\xef\xa4\x84= 46,.11e' -> ' \xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x84\xef\xa4\x845.68797601845e+286' +xfmt6654 format -264056322350578093134536061E94 '+04,.34%' -> '-264,056,322,350,578,093,134,536,061,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000%' +xfmt6655 format 88912377114615111727723005325e0 '\xcc\xae^+59,.41%' -> '+8,891,237,711,461,511,172,772,300,532,500.00000000000000000000000000000000000000000%' +xfmt6656 format -51276984631108931519630587484E0 '' -> '-51276984631108931519630587484' +xfmt6657 format 35637716754666540411535999204E3 '059' -> '00000000000000000000000003.5637716754666540411535999204E+31' +xfmt6658 format -68822612716381950241013623653E109 '\xe6\xb0\x81= .2g' -> '-6.9e+137' +xfmt6659 format 1E0 '-61,.1F' -> ' 1.0' +xfmt6660 format -5e0 '\xe9\x90\xa8>,.35' -> '-5' +xfmt6661 format 8E98 '\xe7\xb6\xac>,.37' -> '8E+98' +xfmt6662 format -9E34 '-93' -> ' -9E+34' +xfmt6663 format 44811580494195808838079e0 '\xe3\x8f\xb8^' -> '44811580494195808838079' +xfmt6664 format -87874916547498703857262E0 '\xe1\x99\xb9^+19,.96F' -> '-87,874,916,547,498,703,857,262.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6665 format 23282373244741169333328E174 '\xe2\x86\x8c^ 94,' -> '\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c 2.3282373244741169333328E+196\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c\xe2\x86\x8c' +xfmt6666 format -11911131861299806384711E300 '' -> '-1.1911131861299806384711E+322' +xfmt6667 format 1010283986737054582699652129e0 '\xd5\xa7<-51' -> '1010283986737054582699652129\xd5\xa7\xd5\xa7\xd5\xa7\xd5\xa7\xd5\xa7\xd5\xa7\xd5\xa7\xd5\xa7\xd5\xa7\xd5\xa7\xd5\xa7\xd5\xa7\xd5\xa7\xd5\xa7\xd5\xa7\xd5\xa7\xd5\xa7\xd5\xa7\xd5\xa7\xd5\xa7\xd5\xa7\xd5\xa7\xd5\xa7' +xfmt6668 format -9014632040343065836650613437e0 '+.97' -> '-9014632040343065836650613437' +xfmt6669 format 4377659768007047035776433538e321 '\xe4\x8d\xa3<.89' -> '4.377659768007047035776433538E+348' +xfmt6670 format -1203605402370921801252657685e33 '' -> '-1.203605402370921801252657685E+60' +xfmt6671 format 470685E0 '+,.27' -> '+470,685' +xfmt6672 format -109507E0 '\xea\xab\xa3= .35%' -> '-10950700.00000000000000000000000000000000000%' +xfmt6673 format 464476E315 '+031,F' -> '+464,476,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt6674 format -312970E90 '' -> '-3.12970E+95' +xfmt6675 format 77555558661e0 '+028,.43f' -> '+77,555,558,661.0000000000000000000000000000000000000000000' +xfmt6676 format -55726716219e0 '6E' -> '-5.5726716219E+10' +xfmt6677 format 77215164067E131 '\xe1\xa9\x81<+22,.42g' -> '+7.7215164067e+141\xe1\xa9\x81\xe1\xa9\x81\xe1\xa9\x81\xe1\xa9\x81' +xfmt6678 format -54195255182e27 '\xeb\xb1\x92< 57' -> '-5.4195255182E+37\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92\xeb\xb1\x92' +xfmt6679 format 7787645322392146174e0 '\xe9\x8f\x9a^,F' -> '7,787,645,322,392,146,174' +xfmt6680 format -6553018830361401092e0 '0,e' -> '-6.553018830361401092e+18' +xfmt6681 format 5683981746462237890E329 '\xe3\xbb\x9d= 52.57e' -> ' 5.683981746462237890000000000000000000000000000000000000000e+347' +xfmt6682 format -7862584823104982111e206 '' -> '-7.862584823104982111E+224' +xfmt6683 format 80654577078774773e0 '\xe6\x98\xb5<+83,.76%' -> '+8,065,457,707,877,477,300.0000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6684 format -39958996722532799e0 '\xe8\xbe\xae>-38,.96e' -> '-3.995899672253279900000000000000000000000000000000000000000000000000000000000000000000000000000000e+16' +xfmt6685 format 81936715274118570E121 ',' -> '8.1936715274118570E+137' +xfmt6686 format -26080060691366090E349 '' -> '-2.6080060691366090E+365' +xfmt6687 format 686611490379E0 '\xe5\xa3\x97<81.35E' -> '6.86611490379000000000000000000000000E+11\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97\xe5\xa3\x97' +xfmt6688 format -850025941978e0 '\xe4\x90\xae^4.82' -> '-850025941978' +xfmt6689 format 163513278707e262 '' -> '1.63513278707E+273' +xfmt6690 format -828590278493e256 ' .91' -> '-8.28590278493E+267' +xfmt6691 format 7011819801636807E0 '\xea\xa8\xb2=,' -> '7,011,819,801,636,807' +xfmt6692 format -3642855483603987E0 '\xee\x89\x80^+57.57' -> '\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80-3642855483603987\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80\xee\x89\x80' +xfmt6693 format 9111952703606553e63 '' -> '9.111952703606553E+78' +xfmt6694 format -3783488211232275e264 '\xea\x86\x98<+58,' -> '-3.783488211232275E+279\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98\xea\x86\x98' +xfmt6695 format 7078558794419046535694229221558E0 '\xe4\x9e\x8c<+4,.89F' -> '+7,078,558,794,419,046,535,694,229,221,558.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6696 format -3035251524754343511017510884177E0 '\xed\x96\xb1<51,.9' -> '-3.03525152E+30\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1\xed\x96\xb1' +xfmt6697 format 2055016188392667776952515455148e26 '' -> '2.055016188392667776952515455148E+56' +xfmt6698 format -4915757889317014726963941460641e203 '' -> '-4.915757889317014726963941460641E+233' +xfmt6699 format 1905034153E0 '\xe0\xa9\x95^-97,.74%' -> '\xe0\xa9\x95\xe0\xa9\x95\xe0\xa9\x95190,503,415,300.00000000000000000000000000000000000000000000000000000000000000000000000000%\xe0\xa9\x95\xe0\xa9\x95\xe0\xa9\x95' +xfmt6700 format -1002012844E0 '\xe6\xbc\x88=,.95' -> '-1,002,012,844' +xfmt6701 format 2550407754e88 '\xee\xa5\xba=,.31g' -> '2.550407754e+97' +xfmt6702 format -2758203093e207 '\xe6\xab\xaa^+.88e' -> '-2.7582030930000000000000000000000000000000000000000000000000000000000000000000000000000000e+216' +xfmt6703 format 20417300233499421608024928567526187800247862e0 '' -> '20417300233499421608024928567526187800247862' +xfmt6704 format -86793802754645305152801523569256169678073113e0 '' -> '-86793802754645305152801523569256169678073113' +xfmt6705 format 14409057439582543038787359491896585516528094E177 '\xe9\x89\xbe^+79.91G' -> '\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe+1.4409057439582543038787359491896585516528094E+220\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe\xe9\x89\xbe' +xfmt6706 format -58602802409930513694905769699195951477894671e227 '\xe8\x9a\x8b<-98,.75e' -> '-5.860280240993051369490576969919595147789467100000000000000000000000000000000e+270\xe8\x9a\x8b\xe8\x9a\x8b\xe8\x9a\x8b\xe8\x9a\x8b\xe8\x9a\x8b\xe8\x9a\x8b\xe8\x9a\x8b\xe8\x9a\x8b\xe8\x9a\x8b\xe8\x9a\x8b\xe8\x9a\x8b\xe8\x9a\x8b\xe8\x9a\x8b\xe8\x9a\x8b\xe8\x9a\x8b' +xfmt6707 format 91E0 '\xe6\xb7\xac^ ,.23e' -> ' 9.10000000000000000000000e+1' +xfmt6708 format -97E0 '82,f' -> ' -97' +xfmt6709 format 84e157 '+' -> '+8.4E+158' +xfmt6710 format -42e338 '\xeb\xaf\x98>+34,.39E' -> '-4.200000000000000000000000000000000000000E+339' +xfmt6711 format 123456.12345 '\xe2\x88\x97>-56f' -> '\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97\xe2\x88\x97123456.12345' +xfmt6712 format -123456789.123456789012345 'G' -> '-123456789.123456789012345' +xfmt6713 format 61063760432938858E0 '' -> '61063760432938858' +xfmt6714 format -68256936757306563e0 '\xe1\xbb\xae<-61,.44e' -> '-6.82569367573065630000000000000000000000000000e+16\xe1\xbb\xae\xe1\xbb\xae\xe1\xbb\xae\xe1\xbb\xae\xe1\xbb\xae\xe1\xbb\xae\xe1\xbb\xae\xe1\xbb\xae\xe1\xbb\xae\xe1\xbb\xae' +xfmt6715 format 48427885636865115E244 '' -> '4.8427885636865115E+260' +xfmt6716 format -35750035457682925E283 '+093,.20F' -> '-357,500,354,576,829,250,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000' +xfmt6717 format 3711229e0 '' -> '3711229' +xfmt6718 format -9847381E0 ' ,G' -> '-9,847,381' +xfmt6719 format 8801336E171 'G' -> '8.801336E+177' +xfmt6720 format -6108825e206 '' -> '-6.108825E+212' +xfmt6721 format 59846732733730264582774256367921078879113350E0 '' -> '59846732733730264582774256367921078879113350' +xfmt6722 format -65632084439792755466569711344591212959829173e0 '\xea\x92\xa9^95' -> '\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9-65632084439792755466569711344591212959829173\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9\xea\x92\xa9' +xfmt6723 format 10587596724889632003562058736728335915857780e255 '+14.85E' -> '+1.0587596724889632003562058736728335915857780000000000000000000000000000000000000000000E+298' +xfmt6724 format -45748331120711305981687454537557652771425197e340 '' -> '-4.5748331120711305981687454537557652771425197E+383' +xfmt6725 format 57723457048612580735912148e0 '' -> '57723457048612580735912148' +xfmt6726 format -45835934643869171728269102e0 '47,.17' -> ' -4.5835934643869172E+25' +xfmt6727 format 13283113692533851574058511e279 '\xe6\x88\x95^35,' -> '\xe6\x88\x951.3283113692533851574058511E+304\xe6\x88\x95\xe6\x88\x95' +xfmt6728 format -48946036374334474845528053E240 '\xe4\x8b\x94>-52,' -> '\xe4\x8b\x94\xe4\x8b\x94\xe4\x8b\x94\xe4\x8b\x94\xe4\x8b\x94\xe4\x8b\x94\xe4\x8b\x94\xe4\x8b\x94\xe4\x8b\x94\xe4\x8b\x94\xe4\x8b\x94\xe4\x8b\x94\xe4\x8b\x94\xe4\x8b\x94\xe4\x8b\x94\xe4\x8b\x94\xe4\x8b\x94\xe4\x8b\x94\xe4\x8b\x94-4.8946036374334474845528053E+265' +xfmt6729 format 221698008818993452447901e0 ',' -> '221,698,008,818,993,452,447,901' +xfmt6730 format -291345505372042966179040e0 '\xee\xa4\xb7<-38,.54' -> '-291,345,505,372,042,966,179,040\xee\xa4\xb7\xee\xa4\xb7\xee\xa4\xb7\xee\xa4\xb7\xee\xa4\xb7\xee\xa4\xb7' +xfmt6731 format 339099062803230627624872e122 '\xe7\xb0\x9c^,.68' -> '3.39099062803230627624872E+145' +xfmt6732 format -927090252444751547233176e46 '\xe3\x80\xa8= 74,.38f' -> '-9,270,902,524,447,515,472,331,760,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000' +xfmt6733 format 53036047337948585316e0 '0e' -> '5.3036047337948585316e+19' +xfmt6734 format -32025574860346662596e0 ',f' -> '-32,025,574,860,346,662,596' +xfmt6735 format 99334902535668618174e133 '\xef\x82\x97^+97.21' -> '\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97+9.9334902535668618174E+152\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97\xef\x82\x97' +xfmt6736 format -50675569242817559942e359 '\xe7\x97\x97= 95,E' -> '-\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x97\xe7\x97\x975.0675569242817559942E+378' +xfmt6737 format 62e0 '052,%' -> '000,000,000,000,000,000,000,000,000,000,000,006,200%' +xfmt6738 format -76e0 '0,.38g' -> '-76' +xfmt6739 format 70E186 ' 18,' -> ' 7.0E+187' +xfmt6740 format -45E321 '\xee\xba\x83>+22,.55G' -> '\xee\xba\x83\xee\xba\x83\xee\xba\x83\xee\xba\x83\xee\xba\x83\xee\xba\x83\xee\xba\x83\xee\xba\x83\xee\xba\x83\xee\xba\x83\xee\xba\x83\xee\xba\x83\xee\xba\x83-4.5E+322' +xfmt6741 format 619363750011248590443863825371E0 '-,' -> '619,363,750,011,248,590,443,863,825,371' +xfmt6742 format -510046776528517772537921873243e0 '\xe5\x94\xb4^+,.47%' -> '-51,004,677,652,851,777,253,792,187,324,300.00000000000000000000000000000000000000000000000%' +xfmt6743 format 196833264847787839446904492771e246 '\xe6\xbf\xbd<61.2F' -> '196833264847787839446904492771000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00' +xfmt6744 format -627941195023542246278265146548e150 '\xe1\xae\x85=-.33n' -> '-6.27941195023542246278265146548e+179' +xfmt6745 format 727672766879343991783066102335821043737E0 '0,.69g' -> '727,672,766,879,343,991,783,066,102,335,821,043,737' +xfmt6746 format -345066386213213883266016804567253051787E0 ' e' -> '-3.45066386213213883266016804567253051787e+38' +xfmt6747 format 921926647111207740318023955354433403804E35 '' -> '9.21926647111207740318023955354433403804E+73' +xfmt6748 format -856414772599570011108222945075631158304e21 '\xec\xbe\x90^-36,f' -> '-856,414,772,599,570,011,108,222,945,075,631,158,304,000,000,000,000,000,000,000' +xfmt6749 format 28580590262901749495100e0 '\xec\x88\x97=56,.56f' -> '28,580,590,262,901,749,495,100.00000000000000000000000000000000000000000000000000000000' +xfmt6750 format -77426871677347657233476E0 'F' -> '-77426871677347657233476' +xfmt6751 format 21659076440647498164686e343 '+,F' -> '+216,590,764,406,474,981,646,860,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt6752 format -45067664168745367281453e310 '96,.50f' -> '-450,676,641,687,453,672,814,530,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000' +xfmt6753 format 272061E0 '\xe6\x83\xb8^-37,.78f' -> '272,061.000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6754 format -441383e0 '\xeb\xb3\xa2<.89n' -> '-441383' +xfmt6755 format 894701e70 '\xe4\x9d\x9f^ 63,.76F' -> ' 8,947,010,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6756 format -403818E341 ' 0' -> '-4.03818E+346' +xfmt6757 format 201e0 ' 0E' -> ' 2.01E+2' +xfmt6758 format -645E0 '.55' -> '-645' +xfmt6759 format 629e129 '\xe1\x9b\xad<84E' -> '6.29E+131\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad\xe1\x9b\xad' +xfmt6760 format -432E277 '\xe3\x99\xbf=.82f' -> '-4320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6761 format 40072877256508781749376306232179046e0 '' -> '40072877256508781749376306232179046' +xfmt6762 format -73960458634799563078388445105256766E0 '\xe1\xbe\x85>-92,.16F' -> '\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85\xe1\xbe\x85-73,960,458,634,799,563,078,388,445,105,256,766.0000000000000000' +xfmt6763 format 26521021942148958270786631672611609e3 ',.71' -> '2.6521021942148958270786631672611609E+37' +xfmt6764 format -17163856600629541446206065260769662E7 '45,' -> ' -1.7163856600629541446206065260769662E+41' +xfmt6765 format 76835911323900e0 '' -> '76835911323900' +xfmt6766 format -21150142734890E0 '\xec\x94\xb7<+21' -> '-21150142734890\xec\x94\xb7\xec\x94\xb7\xec\x94\xb7\xec\x94\xb7\xec\x94\xb7\xec\x94\xb7' +xfmt6767 format 62749930299344E71 '\xe7\x8e\xb1^' -> '6.2749930299344E+84' +xfmt6768 format -30144881591773e154 ' ' -> '-3.0144881591773E+167' +xfmt6769 format 43738659e0 '' -> '43738659' +xfmt6770 format -83685206e0 ' 7,' -> '-83,685,206' +xfmt6771 format 13097937e202 '.21' -> '1.3097937E+209' +xfmt6772 format -25541763e143 '\xeb\x91\xbf>22,.56G' -> '\xeb\x91\xbf\xeb\x91\xbf\xeb\x91\xbf\xeb\x91\xbf\xeb\x91\xbf\xeb\x91\xbf\xeb\x91\xbf-2.5541763E+150' +xfmt6773 format 0e0 '\xeb\xaa\xb3=.35' -> '0' +xfmt6774 format 0e0 '-' -> '0' +xfmt6775 format 0E85 '\xe5\xb2\x8f=' -> '0E+85' +xfmt6776 format 0e137 'f' -> '0' +xfmt6777 format 96747317638e0 '\xea\x8c\x8e<,.34f' -> '96,747,317,638.0000000000000000000000000000000000' +xfmt6778 format -32043647777E0 '\xe1\xbf\xb8>+99,.50G' -> '\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8\xe1\xbf\xb8-32,043,647,777' +xfmt6779 format 12216385040e61 '\xef\x85\x97>+89,.31f' -> '+122,163,850,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000' +xfmt6780 format -62284127501e259 '0.78' -> '-6.2284127501E+269' +xfmt6781 format 8976430744302584E0 '\xe6\xa6\xa4> 51,.58F' -> ' 8,976,430,744,302,584.0000000000000000000000000000000000000000000000000000000000' +xfmt6782 format -1833968077696614E0 '' -> '-1833968077696614' +xfmt6783 format 9219571367933481E212 ',' -> '9.219571367933481E+227' +xfmt6784 format -5997625278709030e177 '\xee\xbc\xa1> 99,F' -> '-5,997,625,278,709,030,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt6785 format 4520680266e0 '.92n' -> '4520680266' +xfmt6786 format -2236611700e0 'E' -> '-2.236611700E+9' +xfmt6787 format 6156155787E286 '\xe9\x9f\xa3= 96,.88g' -> ' \xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa3\xe9\x9f\xa36.156155787e+295' +xfmt6788 format -1590386941e314 '' -> '-1.590386941E+323' +xfmt6789 format 4540E0 '0' -> '4540' +xfmt6790 format -1110e0 '' -> '-1110' +xfmt6791 format 4624E154 '\xe6\xbf\x99<-93.63F' -> '46240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000' +xfmt6792 format -4623e71 '086,' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,004.623E+74' +xfmt6793 format 7347400444468762634102179821795895212947E0 '+027.37' -> '+7.347400444468762634102179821795895213E+39' +xfmt6794 format -4845575911785993180448166411646528007921e0 '\xeb\x8f\x93^-.74%' -> '-484557591178599318044816641164652800792100.00000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6795 format 6749616621384268308317712218456864441932e231 '+,' -> '+6.749616621384268308317712218456864441932E+270' +xfmt6796 format -2911060812346727709811324412984681479365E186 ' 031,g' -> '-2.911060812346727709811324412984681479365e+225' +xfmt6797 format 175230703E0 '\xe9\x86\xa9<' -> '175230703' +xfmt6798 format -786386593e0 '' -> '-786386593' +xfmt6799 format 760203302e380 '\xe2\x8a\x84^' -> '7.60203302E+388' +xfmt6800 format -175039703E29 '+029,F' -> '-17,503,970,300,000,000,000,000,000,000,000,000,000' +xfmt6801 format 122553283015082564277737664519386676348893E0 '\xe1\x8b\xb2< 10,.97E' -> ' 1.2255328301508256427773766451938667634889300000000000000000000000000000000000000000000000000000000E+41' +xfmt6802 format -964880975929943514352748782636423886741709e0 '\xcc\xbd=-28,.71G' -> '-964,880,975,929,943,514,352,748,782,636,423,886,741,709' +xfmt6803 format 275236156686102942545448806608149143847596E90 '-E' -> '2.75236156686102942545448806608149143847596E+131' +xfmt6804 format -317056792501815453074624714863375292831975e156 '\xe1\x96\xab^-98,.3' -> '\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab-3.17E+197\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab\xe1\x96\xab' +xfmt6805 format 900385040101266239e0 '+065,.49' -> '+0,000,000,000,000,000,000,000,000,000,000,900,385,040,101,266,239' +xfmt6806 format -990199838034919576E0 '+2,.55F' -> '-990,199,838,034,919,576.0000000000000000000000000000000000000000000000000000000' +xfmt6807 format 369324379434583342e321 '\xe4\x85\xaa>-20.55' -> '3.69324379434583342E+338' +xfmt6808 format -808182749675677580e106 '68e' -> ' -8.08182749675677580e+123' +xfmt6809 format 3488522553510e0 '\xed\x86\xac< ,.53F' -> ' 3,488,522,553,510.00000000000000000000000000000000000000000000000000000' +xfmt6810 format -7367067894742E0 '\xe2\xab\x83^+3,.8F' -> '-7,367,067,894,742.00000000' +xfmt6811 format 4916069444565E116 '038.32n' -> '00000000000000000004.916069444565e+128' +xfmt6812 format -7066684893947e156 ',' -> '-7.066684893947E+168' +xfmt6813 format 8E0 '+,%' -> '+800%' +xfmt6814 format -9E0 '0,E' -> '-9E+0' +xfmt6815 format 1e294 '\xe1\x96\xb8=,E' -> '1E+294' +xfmt6816 format -3E155 '\xe5\xb2\x93<70,.97%' -> '-30,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6817 format 22770921099785802031097631149950021818E0 '040G' -> '0022770921099785802031097631149950021818' +xfmt6818 format -42681051775963351225990953014931408869e0 '.15e' -> '-4.268105177596335e+37' +xfmt6819 format 52387009698166882185010563146660647844e218 '-69.52' -> ' 5.2387009698166882185010563146660647844E+255' +xfmt6820 format -87107558412252042082022900887010902430e341 '\xea\xb7\x9d>+' -> '-8.7107558412252042082022900887010902430E+378' +xfmt6821 format 912392363330325848185198348e0 '\xeb\x88\xb3<.95' -> '912392363330325848185198348' +xfmt6822 format -341049597159665222036969227E0 '\xe7\xb6\xa0=-9F' -> '-341049597159665222036969227' +xfmt6823 format 128144724379317770323494612e10 '078.40' -> '00000000000000000000000000000000000000000000001.28144724379317770323494612E+36' +xfmt6824 format -899893058193894046914415639e148 '51,.78f' -> '-8,998,930,581,938,940,469,144,156,390,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6825 format 742438982490553329487639276843459529e0 '99e' -> ' 7.42438982490553329487639276843459529e+35' +xfmt6826 format -543268760166534183904083608791825602E0 '\xec\xb7\xb9>27,.24g' -> '-5.43268760166534183904084e+35' +xfmt6827 format 390853223056998929794658707047778383E129 '' -> '3.90853223056998929794658707047778383E+164' +xfmt6828 format -167987822609882872685556147531227593E26 '+0n' -> '-1.67987822609882872685556147531227593e+61' +xfmt6829 format 7318864759917352315069e0 '\xe1\xa2\xb7<-24,.15G' -> '7.31886475991735E+21\xe1\xa2\xb7\xe1\xa2\xb7\xe1\xa2\xb7\xe1\xa2\xb7' +xfmt6830 format -9907367778669022313892E0 '\xe1\x8d\xa6^-,.16G' -> '-9.907367778669022E+21' +xfmt6831 format 9976063236332906941235e354 '+016%' -> '+997606323633290694123500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6832 format -6323305404349687199550e47 '\xe6\xb5\xa8=,' -> '-6.323305404349687199550E+68' +xfmt6833 format 12.12345678901234 '7' -> '12.12345678901234' +xfmt6834 format -123456789.1234 '\xeb\xa7\xb1<+' -> '-123456789.1234' +xfmt6835 format 760878561973127615575684635934e0 'F' -> '760878561973127615575684635934' +xfmt6836 format -701503992607050122493000985426E0 '-036,.32E' -> '-7.01503992607050122493000985426000E+29' +xfmt6837 format 530210862619308413170563895190E231 '\xe9\x88\xa9=+.41e' -> '+5.30210862619308413170563895190000000000000e+260' +xfmt6838 format -109285601175283692825893546340E356 '+074,e' -> '-00,000,000,000,000,000,000,000,000,001.09285601175283692825893546340e+385' +xfmt6839 format 8261203271391042952518085686E0 '\xeb\xbf\x99>44.39E' -> '8.261203271391042952518085686000000000000E+27' +xfmt6840 format -4337185191128067440866612057E0 ' ' -> '-4337185191128067440866612057' +xfmt6841 format 1466745697741314057194162315E5 '\xef\x87\xb4^+,.66f' -> '+146,674,569,774,131,405,719,416,231,500,000.000000000000000000000000000000000000000000000000000000000000000000' +xfmt6842 format -4595994024057029696106800101e113 '\xe1\x87\x95= 14,.27' -> '-4.59599402405702969610680010E+140' +xfmt6843 format 86980205603413902e0 '\xe4\x87\xbe>.97' -> '86980205603413902' +xfmt6844 format -71108578761435915e0 '\xee\x87\xa7<+57%' -> '-7110857876143591500%\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7' +xfmt6845 format 82021030411460759E121 '' -> '8.2021030411460759E+137' +xfmt6846 format -68729688286759922E208 '' -> '-6.8729688286759922E+224' +xfmt6847 format 357267244699008695E0 '\xef\xb6\xb0=40,.97E' -> '3.5726724469900869500000000000000000000000000000000000000000000000000000000000000000000000000000000E+17' +xfmt6848 format -216021792305218290e0 '\xee\x8c\x84<75,%' -> '-21,602,179,230,521,829,000%\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84\xee\x8c\x84' +xfmt6849 format 916453437631119273E250 '\xea\xad\x91=-92,.68E' -> '\xea\xad\x91\xea\xad\x91\xea\xad\x91\xea\xad\x91\xea\xad\x91\xea\xad\x91\xea\xad\x91\xea\xad\x91\xea\xad\x91\xea\xad\x91\xea\xad\x91\xea\xad\x91\xea\xad\x91\xea\xad\x91\xea\xad\x91\xea\xad\x91\xea\xad\x919.16453437631119273000000000000000000000000000000000000000000000000000E+267' +xfmt6850 format -310862280643885139E272 '\xe5\xa6\x8d<+14.32F' -> '-31086228064388513900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000' +xfmt6851 format 1340578E0 '-043,.54' -> '000,000,000,000,000,000,000,000,001,340,578' +xfmt6852 format -3563227e0 '\xe5\xad\xaf>' -> '-3563227' +xfmt6853 format 5976127E176 '\xe2\xba\xa9<28,.64%' -> '59,761,270,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000%' +xfmt6854 format -3478083e126 '\xe3\x9e\xb5<-51,.38E' -> '-3.47808300000000000000000000000000000000E+132\xe3\x9e\xb5\xe3\x9e\xb5\xe3\x9e\xb5\xe3\x9e\xb5\xe3\x9e\xb5' +xfmt6855 format 172140016080e0 '' -> '172140016080' +xfmt6856 format -224630613952E0 '+0' -> '-224630613952' +xfmt6857 format 696104354421e342 '\xeb\x94\xbd= 91,G' -> ' \xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd\xeb\x94\xbd6.96104354421E+353' +xfmt6858 format -979144213549E383 '\xef\x9e\x8a>-38,.41E' -> '-9.79144213549000000000000000000000000000000E+394' +xfmt6859 format 7617130568833959090744383981722905640e0 '\xee\xa8\xb8<-,E' -> '7.617130568833959090744383981722905640E+36' +xfmt6860 format -8246897828605212204742813330533934102e0 ' 76.53G' -> ' -8246897828605212204742813330533934102' +xfmt6861 format 3437493205948748554552940971878337505e109 '18n' -> '3.437493205948748554552940971878337505e+145' +xfmt6862 format -1330912084373437984753964023086555400e261 ' ' -> '-1.330912084373437984753964023086555400E+297' +xfmt6863 format 24616657206970287006899881763358688371e0 '' -> '24616657206970287006899881763358688371' +xfmt6864 format -60355803508993943244493015339379166926E0 '\xed\x85\xaa=7' -> '-60355803508993943244493015339379166926' +xfmt6865 format 40807972453488047715833477477467910756E250 '' -> '4.0807972453488047715833477477467910756E+287' +xfmt6866 format -65953713305894893021286686572092990900e139 '' -> '-6.5953713305894893021286686572092990900E+176' +xfmt6867 format 65439453082633881008812748470958959599008029e0 '.79e' -> '6.5439453082633881008812748470958959599008029000000000000000000000000000000000000e+43' +xfmt6868 format -41059677562019647665413806124216926398196269E0 '\xed\x98\x86=+5.40G' -> '-4.105967756201964766541380612421692639820E+43' +xfmt6869 format 47046742512570061307979996869011414758902048E149 '37' -> '4.7046742512570061307979996869011414758902048E+192' +xfmt6870 format -89762032912379949117113609825329581608568058e200 '' -> '-8.9762032912379949117113609825329581608568058E+243' +xfmt6871 format 92320108521000651419706E0 '\xe7\xa1\xa5= 78,.38g' -> ' \xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa5\xe7\xa1\xa592,320,108,521,000,651,419,706' +xfmt6872 format -82529683014564071806118E0 '078,e' -> '-00,000,000,000,000,000,000,000,000,000,000,000,008.2529683014564071806118e+22' +xfmt6873 format 60789837138206741872139e304 '\xe8\xad\xb2> 76,.98G' -> '\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2\xe8\xad\xb2 6.0789837138206741872139E+326' +xfmt6874 format -25546944659842978074889e138 '-.31g' -> '-2.5546944659842978074889e+160' +xfmt6875 format 789941331076967977861921178043979429690E0 '\xef\x89\x9c>-27,.96f' -> '789,941,331,076,967,977,861,921,178,043,979,429,690.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6876 format -269978137299513358901654642779999792216e0 '14,.93f' -> '-269,978,137,299,513,358,901,654,642,779,999,792,216.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6877 format 863658537094867708960045615603320586408e238 '\xe1\xa9\xa7^-20,.93e' -> '8.636585370948677089600456156033205864080000000000000000000000000000000000000000000000000000000e+276' +xfmt6878 format -593021362901136914387925368290656382632e154 '\xe1\x93\x8f>n' -> '-5.93021362901136914387925368290656382632e+192' +xfmt6879 format 5444667159193374696489251343993E0 '\xe5\xbe\xbb>-92,%' -> '\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb\xe5\xbe\xbb544,466,715,919,337,469,648,925,134,399,300%' +xfmt6880 format -4095311991753907144539864102207e0 '\xe9\xb6\xac^.74%' -> '-409531199175390714453986410220700.00000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6881 format 7511892945220567276921754361203e121 '\xe6\x84\x8a^' -> '7.511892945220567276921754361203E+151' +xfmt6882 format -1223652943355742184600305635945E270 '\xe4\x94\x97^ 40,.70G' -> '\xe4\x94\x97-1.223652943355742184600305635945E+300\xe4\x94\x97' +xfmt6883 format 7276417435002555714e0 '+.70E' -> '+7.2764174350025557140000000000000000000000000000000000000000000000000000E+18' +xfmt6884 format -9376799910688097447e0 '\xef\x93\x95> 57.39g' -> '\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95\xef\x93\x95-9376799910688097447' +xfmt6885 format 7686339891030792806e212 '' -> '7.686339891030792806E+230' +xfmt6886 format -3899868135841903173E130 '' -> '-3.899868135841903173E+148' +xfmt6887 format 83E0 '\xec\xb4\xb4=62,f' -> '\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb4\xec\xb4\xb483' +xfmt6888 format -34E0 '\xec\x93\xba=+%' -> '-3400%' +xfmt6889 format 12E276 '\xe7\xa4\x92^5.13' -> '1.2E+277' +xfmt6890 format -19E8 '' -> '-1.9E+9' +xfmt6891 format 45206715745832702764E0 '' -> '45206715745832702764' +xfmt6892 format -87242918065637907626E0 '\xe9\xbb\xbb<+16,.60E' -> '-8.724291806563790762600000000000000000000000000000000000000000E+19' +xfmt6893 format 83745001459586910195e159 '0G' -> '8.3745001459586910195E+178' +xfmt6894 format -17621198336484097900E227 '0.14' -> '-1.7621198336484E+246' +xfmt6895 format 327385829150814949820037664475960089685616e0 'f' -> '327385829150814949820037664475960089685616' +xfmt6896 format -428438742901892789530780551395643392764387e0 '\xe1\x97\x88>-43.81' -> '-428438742901892789530780551395643392764387' +xfmt6897 format 804284274152576510879707513546004940717951E315 '\xef\xb6\x87>-.10' -> '8.042842742E+356' +xfmt6898 format -824550355199452353711561139958097999096229E20 '' -> '-8.24550355199452353711561139958097999096229E+61' +xfmt6899 format 2611E0 ' 85,.89' -> ' 2,611' +xfmt6900 format -6704e0 '\xea\xae\xa8< 32,.71E' -> '-6.70400000000000000000000000000000000000000000000000000000000000000000000E+3' +xfmt6901 format 4177e21 '\xec\xaa\x98=74,.71' -> '\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x98\xec\xaa\x984.177E+24' +xfmt6902 format -3565E24 '\xe4\xb7\x84<29F' -> '-3565000000000000000000000000' +xfmt6903 format 944347E0 '\xe6\x82\xb8<49.70f' -> '944347.0000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6904 format -794843e0 '\xe8\xa9\xaa<-,G' -> '-794,843' +xfmt6905 format 830497e255 '' -> '8.30497E+260' +xfmt6906 format -202234E214 ' 2,.68G' -> '-2.02234E+219' +xfmt6907 format 148401239567312266664492E0 ' 31,f' -> ' 148,401,239,567,312,266,664,492' +xfmt6908 format -588687067545406135137107E0 '\xe8\x84\xb8>15,.16%' -> '-58,868,706,754,540,613,513,710,700.0000000000000000%' +xfmt6909 format 759534546144843627753320e36 '\xea\xbb\x95<59.22F' -> '759534546144843627753320000000000000000000000000000000000000.0000000000000000000000' +xfmt6910 format -182169049663863702197205E266 '\xe9\x89\x82>52,.39E' -> '\xe9\x89\x82\xe9\x89\x82\xe9\x89\x82\xe9\x89\x82\xe9\x89\x82-1.821690496638637021972050000000000000000E+289' +xfmt6911 format 8011101937553311517817101220324502E0 '+,' -> '+8,011,101,937,553,311,517,817,101,220,324,502' +xfmt6912 format -3807187682506586524463529577368221E0 '\xe1\xac\x98^ 32.99g' -> '-3807187682506586524463529577368221' +xfmt6913 format 9978947328359412224525953600575967E100 '\xe1\x84\x88=+22,' -> '+9.978947328359412224525953600575967E+133' +xfmt6914 format -6386926409967669427780692841526802e25 '\xe9\xb9\x97^,' -> '-6.386926409967669427780692841526802E+58' +xfmt6915 format 8433522360849044370108551388403077680286E0 '\xe7\x96\x9f<,.87' -> '8,433,522,360,849,044,370,108,551,388,403,077,680,286' +xfmt6916 format -7453699749739047697992941728944416958998E0 '' -> '-7453699749739047697992941728944416958998' +xfmt6917 format 5491381404701062133032109478535633804634E215 '\xea\x8d\xa3> 83,' -> '\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3\xea\x8d\xa3 5.491381404701062133032109478535633804634E+254' +xfmt6918 format -4004511506867471126390212586178976289724E76 '\xd7\xbe= 63,.40G' -> '-\xd7\xbe\xd7\xbe\xd7\xbe\xd7\xbe\xd7\xbe\xd7\xbe\xd7\xbe\xd7\xbe\xd7\xbe\xd7\xbe\xd7\xbe\xd7\xbe\xd7\xbe\xd7\xbe\xd7\xbe\xd7\xbe4.004511506867471126390212586178976289724E+115' +xfmt6919 format 174186773666393E0 '\xe2\xb9\xb7<-29,.6' -> '1.74187E+14\xe2\xb9\xb7\xe2\xb9\xb7\xe2\xb9\xb7\xe2\xb9\xb7\xe2\xb9\xb7\xe2\xb9\xb7\xe2\xb9\xb7\xe2\xb9\xb7\xe2\xb9\xb7\xe2\xb9\xb7\xe2\xb9\xb7\xe2\xb9\xb7\xe2\xb9\xb7\xe2\xb9\xb7\xe2\xb9\xb7\xe2\xb9\xb7\xe2\xb9\xb7\xe2\xb9\xb7' +xfmt6920 format -242401748628592E0 '\xef\x8a\x94<' -> '-242401748628592' +xfmt6921 format 431193238106257e257 '\xc7\x8c<,e' -> '4.31193238106257e+271' +xfmt6922 format -652377409714307e352 '0.19E' -> '-6.5237740971430700000E+366' +xfmt6923 format 16597564236e0 '-' -> '16597564236' +xfmt6924 format -90272217850e0 '\xeb\x87\xbb^+23,.59F' -> '-90,272,217,850.00000000000000000000000000000000000000000000000000000000000' +xfmt6925 format 21982292064E146 '-0f' -> '2198229206400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6926 format -74840609068E262 '081.70E' -> '-0007.4840609068000000000000000000000000000000000000000000000000000000000000E+272' +xfmt6927 format 954E0 '\xe1\xa6\x96^ .50g' -> ' 954' +xfmt6928 format -737e0 '' -> '-737' +xfmt6929 format 302E337 '\xe1\xa0\xa6> 65,.20F' -> ' 3,020,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000' +xfmt6930 format -406e41 '\xe5\xb1\xb9>-89.16g' -> '\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9\xe5\xb1\xb9-4.06e+43' +xfmt6931 format 0e0 '' -> '0' +xfmt6932 format 0E0 '' -> '0' +xfmt6933 format 0e330 ',.44F' -> '0.00000000000000000000000000000000000000000000' +xfmt6934 format 0E4 ' 27.42' -> ' 0E+4' +xfmt6935 format 69831567E0 '' -> '69831567' +xfmt6936 format -35969860e0 '054.19n' -> '-00000000000000000000000000000000000000000000035969860' +xfmt6937 format 25887090E265 '0.75' -> '2.5887090E+272' +xfmt6938 format -47778940E298 '\xe9\x9a\x9a<96,' -> '-4.7778940E+305\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a\xe9\x9a\x9a' +xfmt6939 format 88679593093636410129309997E0 '\xea\xbb\xa9<+30' -> '+88679593093636410129309997\xea\xbb\xa9\xea\xbb\xa9\xea\xbb\xa9' +xfmt6940 format -18038044180219710546208544E0 '0,' -> '-18,038,044,180,219,710,546,208,544' +xfmt6941 format 25487593200981578952215970e226 '\xec\x9a\x88> 47.76%' -> ' 25487593200981578952215970000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt6942 format -80899932354452966117365049E334 '\xe4\x87\xbf= 41,.39e' -> '-8.089993235445296611736504900000000000000e+359' +xfmt6943 format 3480972459700E0 '\xe4\xae\xba^-,G' -> '3,480,972,459,700' +xfmt6944 format -9204794963178e0 '\xe5\x93\x86<,.16' -> '-9,204,794,963,178' +xfmt6945 format 4779180116836e122 '\xe7\x83\xa0<+5.60E' -> '+4.779180116836000000000000000000000000000000000000000000000000E+134' +xfmt6946 format -5519820489429E285 '86' -> ' -5.519820489429E+297' +xfmt6947 format 3089788372842985231893e0 '\xe7\xa1\x86= 13,G' -> ' 3,089,788,372,842,985,231,893' +xfmt6948 format -6189826934971405135906e0 '\xe7\xa3\x80^+70.21G' -> '\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80-6.18982693497140513591E+21\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80\xe7\xa3\x80' +xfmt6949 format 8492364324856065826887E311 '\xe1\xaa\x82=f' -> '849236432485606582688700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6950 format -2524382782027291205407E361 '98' -> ' -2.524382782027291205407E+382' +xfmt6951 format 42151882834159921319572359537E0 '+.10g' -> '+4.215188283e+28' +xfmt6952 format -57408940379457503160795894475E0 '\xe1\x8a\xb9=.9' -> '-5.74089404E+28' +xfmt6953 format 33107846563853836085451938853E55 '0.27' -> '3.31078465638538360854519389E+83' +xfmt6954 format -61741376438155032053700314760E214 '-,e' -> '-6.1741376438155032053700314760e+242' +xfmt6955 format 123456789012345.123456 '0' -> '123456789012345.123456' +xfmt6956 format -123.123456789 '\xe7\xa2\x9a^-87,.72f' -> '\xe7\xa2\x9a\xe7\xa2\x9a\xe7\xa2\x9a\xe7\xa2\x9a\xe7\xa2\x9a-123.123456789000000000000000000000000000000000000000000000000000000000000000\xe7\xa2\x9a\xe7\xa2\x9a\xe7\xa2\x9a\xe7\xa2\x9a\xe7\xa2\x9a' +xfmt6957 format 5430855507446216163977E0 '063,.69f' -> '5,430,855,507,446,216,163,977.000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6958 format -2583822507404739603904e0 '' -> '-2583822507404739603904' +xfmt6959 format 3072685803227048974281e377 '\xed\x9b\x9c^+20,.2f' -> '+307,268,580,322,704,897,428,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00' +xfmt6960 format -8355040696609365605029E78 '\xe6\x8c\xa4=-,.31E' -> '-8.3550406966093656050290000000000E+99' +xfmt6961 format 45717010030E0 '0.76' -> '45717010030' +xfmt6962 format -53549864804e0 '' -> '-53549864804' +xfmt6963 format 29163739823E327 '\xe8\x95\x8c>,.76g' -> '2.9163739823e+337' +xfmt6964 format -27378296690e221 '0,e' -> '-2.7378296690e+231' +xfmt6965 format 7826922e0 ',' -> '7,826,922' +xfmt6966 format -4517059e0 '+,.72' -> '-4,517,059' +xfmt6967 format 6226179E369 '\xed\x9a\x8b^+E' -> '+6.226179E+375' +xfmt6968 format -9947142E193 '' -> '-9.947142E+199' +xfmt6969 format 301934135215995235181147006314868874284e0 '\xe8\x93\x88< 97,.65E' -> ' 3.01934135215995235181147006314868874284000000000000000000000000000E+38\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88\xe8\x93\x88' +xfmt6970 format -964047198826536097830412717857138737015E0 '+79' -> ' -964047198826536097830412717857138737015' +xfmt6971 format 557856954737060305588578687184198353903E327 '\xe6\xae\x9d=+' -> '+5.57856954737060305588578687184198353903E+365' +xfmt6972 format -606861994999351538888149883829375954795e292 '\xe6\x83\x92<+42,.44E' -> '-6.06861994999351538888149883829375954795000000E+330' +xfmt6973 format 4726871738384253861998259924992297627587625e0 '\xe6\x92\xa1> 84,f' -> '\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1\xe6\x92\xa1 4,726,871,738,384,253,861,998,259,924,992,297,627,587,625' +xfmt6974 format -4506504568385976198248530533495109136367326e0 '\xe8\x95\xa4^ 63,.79' -> '\xe8\x95\xa4\xe8\x95\xa4-4,506,504,568,385,976,198,248,530,533,495,109,136,367,326\xe8\x95\xa4\xe8\x95\xa4\xe8\x95\xa4' +xfmt6975 format 9104956917163797011305275970902266235163977E346 '-044,.73F' -> '91,049,569,171,637,970,113,052,759,709,022,662,351,639,770,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt6976 format -7726532816055861418019260537971639683993340E152 '\xe0\xa5\x93^+72,.24F' -> '-772,653,281,605,586,141,801,926,053,797,163,968,399,334,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000' +xfmt6977 format 44937303923442159857660825680642769083319386e0 '\xea\xb5\xa7<+%' -> '+4493730392344215985766082568064276908331938600%' +xfmt6978 format -23160971370785719666122605385458006405425835E0 '\xef\xb7\x99=.50f' -> '-23160971370785719666122605385458006405425835.00000000000000000000000000000000000000000000000000' +xfmt6979 format 55456195296515400588142410969609125911790277e123 '.38f' -> '55456195296515400588142410969609125911790277000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000' +xfmt6980 format -96657472288637590937893535825737665617254284E133 '\xef\xb4\xb9=91,.46f' -> '-966,574,722,886,375,909,378,935,358,257,376,656,172,542,840,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000' +xfmt6981 format 10610640641306236221353574962923990318E0 '\xef\xb0\x93>-,G' -> '10,610,640,641,306,236,221,353,574,962,923,990,318' +xfmt6982 format -27045153709108008759145464635813816952e0 ',.61' -> '-27,045,153,709,108,008,759,145,464,635,813,816,952' +xfmt6983 format 25185081184499939515161516165822713280e81 ' 6.92' -> ' 2.5185081184499939515161516165822713280E+118' +xfmt6984 format -13285728217656957588062124015792810802e194 '\xec\xaa\xae<-81,' -> '-1.3285728217656957588062124015792810802E+231\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae\xec\xaa\xae' +xfmt6985 format 579882832033588230192893e0 '' -> '579882832033588230192893' +xfmt6986 format -228902080701120739503531E0 '+' -> '-228902080701120739503531' +xfmt6987 format 848263057122699380196636E231 '-14' -> '8.48263057122699380196636E+254' +xfmt6988 format -380241904241895194207564e197 '\xe0\xac\x8e=,' -> '-3.80241904241895194207564E+220' +xfmt6989 format 22809516392804211510624494029458e0 '\xe4\xaf\xa3>+43,.43G' -> '+22,809,516,392,804,211,510,624,494,029,458' +xfmt6990 format -28894230007938161456200933034297e0 '0' -> '-28894230007938161456200933034297' +xfmt6991 format 90445007398680483191212159127678E377 '\xe0\xaf\xa0^' -> '9.0445007398680483191212159127678E+408' +xfmt6992 format -37172304766015509352718937543716E28 '.11' -> '-3.7172304766E+59' +xfmt6993 format 51918616176203e0 '' -> '51918616176203' +xfmt6994 format -72645320323936e0 '\xef\xa5\xbd=-63,.46F' -> '-72,645,320,323,936.0000000000000000000000000000000000000000000000' +xfmt6995 format 13389809548471E379 ',' -> '1.3389809548471E+392' +xfmt6996 format -99657488355775e126 '\xef\x8b\xbc>30,.60' -> '\xef\x8b\xbc\xef\x8b\xbc\xef\x8b\xbc\xef\x8b\xbc\xef\x8b\xbc\xef\x8b\xbc\xef\x8b\xbc\xef\x8b\xbc\xef\x8b\xbc-9.9657488355775E+139' +xfmt6997 format 6207969164070178503008784517e0 '\xe6\x9c\xaa=-96,.13' -> '\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa\xe6\x9c\xaa6.207969164070E+27' +xfmt6998 format -3252046607269978110259604686E0 '0F' -> '-3252046607269978110259604686' +xfmt6999 format 9350492964276593848452591884E97 '\xeb\xac\x88=+6,.66F' -> '+93,504,929,642,765,938,484,525,918,840,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000' +xfmt7000 format -1929435131860094396952408720E237 ' ' -> '-1.929435131860094396952408720E+264' +xfmt7001 format 8451218768734E0 '84' -> ' 8451218768734' +xfmt7002 format -8636437840246E0 '\xe3\x84\x83>42.23g' -> '\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83\xe3\x84\x83-8636437840246' +xfmt7003 format 5311763427390E161 '' -> '5.311763427390E+173' +xfmt7004 format -4199799621924E162 '\xe5\xbe\x87=+60,.76F' -> '-4,199,799,621,924,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7005 format 9e0 '\xeb\x96\xa6<40' -> '9\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6\xeb\x96\xa6' +xfmt7006 format -2e0 '\xe7\x86\xb1=-21,.72E' -> '-2.000000000000000000000000000000000000000000000000000000000000000000000000E+0' +xfmt7007 format 5e62 '-43,.49%' -> '50,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000%' +xfmt7008 format -5e125 '' -> '-5E+125' +xfmt7009 format 678505934e0 '' -> '678505934' +xfmt7010 format -331944033E0 '\xec\xa9\x9c>61,' -> '\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c\xec\xa9\x9c-331,944,033' +xfmt7011 format 436531158e141 '053.58n' -> '000000000000000000000000000000000000004.36531158e+149' +xfmt7012 format -679582143E343 '\xe8\x92\x9c< 36' -> '-6.79582143E+351\xe8\x92\x9c\xe8\x92\x9c\xe8\x92\x9c\xe8\x92\x9c\xe8\x92\x9c\xe8\x92\x9c\xe8\x92\x9c\xe8\x92\x9c\xe8\x92\x9c\xe8\x92\x9c\xe8\x92\x9c\xe8\x92\x9c\xe8\x92\x9c\xe8\x92\x9c\xe8\x92\x9c\xe8\x92\x9c\xe8\x92\x9c\xe8\x92\x9c\xe8\x92\x9c\xe8\x92\x9c' +xfmt7013 format 98331966947327799273756474E0 ' 092,' -> ' 000,000,000,000,000,000,000,000,000,000,000,000,000,000,098,331,966,947,327,799,273,756,474' +xfmt7014 format -87383490427937493238466571e0 '+f' -> '-87383490427937493238466571' +xfmt7015 format 13319966326287217979216905e197 '0,' -> '1.3319966326287217979216905E+222' +xfmt7016 format -24267760382480158068707611e3 '+' -> '-2.4267760382480158068707611E+28' +xfmt7017 format 18e0 '\xe7\x87\x9e^ ,.92%' -> ' 1,800.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt7018 format -39E0 '+' -> '-39' +xfmt7019 format 32e196 '\xeb\x8e\xbc^+5,.76G' -> '+3.2E+197' +xfmt7020 format -73e88 '27.63' -> ' -7.3E+89' +xfmt7021 format 60360930567132846821550e0 '-0E' -> '6.0360930567132846821550E+22' +xfmt7022 format -51499051933896183240479E0 ',' -> '-51,499,051,933,896,183,240,479' +xfmt7023 format 49240134985488600286446e201 '\xe0\xa0\x86>+24,.76g' -> '+4.9240134985488600286446e+223' +xfmt7024 format -87905991734569324018861E352 '029.58F' -> '-879059917345693240188610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000' +xfmt7025 format 530902166201641351920465987E0 '0' -> '530902166201641351920465987' +xfmt7026 format -220034359614166178594840488e0 '85' -> ' -220034359614166178594840488' +xfmt7027 format 298366996153000598401334100E97 '\xe4\x93\xaa= ,.88%' -> ' 298,366,996,153,000,598,401,334,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt7028 format -583208848230702098333507915e368 '\xeb\xbb\xa6=-29,.47F' -> '-58,320,884,823,070,209,833,350,791,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000' +xfmt7029 format 99816056946638171180E0 '\xed\x82\x88>+87,.47f' -> '\xed\x82\x88\xed\x82\x88\xed\x82\x88\xed\x82\x88\xed\x82\x88\xed\x82\x88\xed\x82\x88\xed\x82\x88\xed\x82\x88\xed\x82\x88\xed\x82\x88\xed\x82\x88+99,816,056,946,638,171,180.00000000000000000000000000000000000000000000000' +xfmt7030 format -79190409488428867636e0 '\xe2\xa2\xae^-26n' -> '\xe2\xa2\xae\xe2\xa2\xae-79190409488428867636\xe2\xa2\xae\xe2\xa2\xae\xe2\xa2\xae' +xfmt7031 format 23507994639396744712E2 '-75' -> ' 2.3507994639396744712E+21' +xfmt7032 format -44904827727813280514E221 '\xe9\xb4\xba^+91,.46f' -> '-4,490,482,772,781,328,051,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000' +xfmt7033 format 113402188410e0 '\xe8\x8c\xbe^-47,.14E' -> '\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe1.13402188410000E+11\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe\xe8\x8c\xbe' +xfmt7034 format -714193492472e0 '' -> '-714193492472' +xfmt7035 format 477697286128e365 '5' -> '4.77697286128E+376' +xfmt7036 format -636771491437e148 ',.56' -> '-6.36771491437E+159' +xfmt7037 format 7615E0 '' -> '7615' +xfmt7038 format -3523E0 '0' -> '-3523' +xfmt7039 format 8387e178 '0,.89' -> '8.387E+181' +xfmt7040 format -1185E90 '\xe5\x97\xbd^ 1,' -> '-1.185E+93' +xfmt7041 format 0E0 '\xe9\xac\xbb<96,g' -> '0\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb\xe9\xac\xbb' +xfmt7042 format 0e0 ',E' -> '0E+0' +xfmt7043 format 0e226 '99,F' -> ' 0' +xfmt7044 format 0e24 '\xe5\x8e\x81^+27,.86' -> '\xe5\x8e\x81\xe5\x8e\x81\xe5\x8e\x81\xe5\x8e\x81\xe5\x8e\x81\xe5\x8e\x81\xe5\x8e\x81\xe5\x8e\x81\xe5\x8e\x81\xe5\x8e\x81+0E+24\xe5\x8e\x81\xe5\x8e\x81\xe5\x8e\x81\xe5\x8e\x81\xe5\x8e\x81\xe5\x8e\x81\xe5\x8e\x81\xe5\x8e\x81\xe5\x8e\x81\xe5\x8e\x81\xe5\x8e\x81' +xfmt7045 format 190654432508330382050832323658493E0 '\xea\x98\xb7< 99,.7%' -> ' 19,065,443,250,833,038,205,083,232,365,849,300.0000000%\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7\xea\x98\xb7' +xfmt7046 format -144603620698034636072039683566582E0 '\xe3\xb0\x8a>,F' -> '-144,603,620,698,034,636,072,039,683,566,582' +xfmt7047 format 762653113372451737627345327274188e33 ',.88' -> '7.62653113372451737627345327274188E+65' +xfmt7048 format -948308118756357386208367539966498e161 '\xe6\x82\x80^' -> '-9.48308118756357386208367539966498E+193' +xfmt7049 format 618344382902055766187582333046843588E0 '\xe1\xa4\xb9^,e' -> '6.18344382902055766187582333046843588e+35' +xfmt7050 format -586249825478216529858424927509995740e0 '\xe5\x98\xb6^,' -> '-586,249,825,478,216,529,858,424,927,509,995,740' +xfmt7051 format 946455863504760587981656801037695275e188 '0' -> '9.46455863504760587981656801037695275E+223' +xfmt7052 format -823608497447223148003304783730770574E118 '\xe3\x9d\xac= 26,.39f' -> '-8,236,084,974,472,231,480,033,047,837,307,705,740,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000' +xfmt7053 format 7650737787483314261646219472190e0 '\xe7\x8f\x95^ 84,.44' -> '\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95 7,650,737,787,483,314,261,646,219,472,190\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95\xe7\x8f\x95' +xfmt7054 format -3853409178725165423607538998054e0 '-88.65' -> ' -3853409178725165423607538998054' +xfmt7055 format 5245067843053079686066242887504e371 '' -> '5.245067843053079686066242887504E+401' +xfmt7056 format -4427837352141742888454256242834E292 '\xe3\x9d\xb4>+42,g' -> '\xe3\x9d\xb4\xe3\x9d\xb4\xe3\x9d\xb4\xe3\x9d\xb4-4.427837352141742888454256242834e+322' +xfmt7057 format 418E0 '+030,' -> '+0,000,000,000,000,000,000,418' +xfmt7058 format -177E0 '' -> '-177' +xfmt7059 format 328E260 '41,F' -> '32,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt7060 format -657e349 '0' -> '-6.57E+351' +xfmt7061 format 4594491992863071075E0 '\xee\x8b\xa9=13' -> '4594491992863071075' +xfmt7062 format -1049136788085226216E0 '' -> '-1049136788085226216' +xfmt7063 format 6155808850782207335e355 '' -> '6.155808850782207335E+373' +xfmt7064 format -6093343368384636016e219 '' -> '-6.093343368384636016E+237' +xfmt7065 format 187204e0 '\xe0\xa7\x9e=90,e' -> '\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e\xe0\xa7\x9e1.87204e+5' +xfmt7066 format -412114e0 '\xe3\x89\x91=,.75' -> '-412,114' +xfmt7067 format 539174E351 '32' -> ' 5.39174E+356' +xfmt7068 format -506813e343 '\xe3\xb9\x93=+37,.88E' -> '-5.0681300000000000000000000000000000000000000000000000000000000000000000000000000000000000E+348' +xfmt7069 format 9935669864e0 '+0' -> '+9935669864' +xfmt7070 format -8157399752e0 '\xe6\xb0\xa8< 73,.22e' -> '-8.1573997520000000000000e+9\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8\xe6\xb0\xa8' +xfmt7071 format 4428678770E0 '\xe4\xb6\xb3^ 41,' -> '\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3 4,428,678,770\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3\xe4\xb6\xb3' +xfmt7072 format -5523894385e268 '.59' -> '-5.523894385E+277' +xfmt7073 format 49287246342934197164064718290425757528442E0 '\xe0\xaf\x89>+54,E' -> '\xe0\xaf\x89\xe0\xaf\x89\xe0\xaf\x89\xe0\xaf\x89\xe0\xaf\x89\xe0\xaf\x89\xe0\xaf\x89+4.9287246342934197164064718290425757528442E+40' +xfmt7074 format -32057758418143459402093324449862695596998e0 '+82,F' -> ' -32,057,758,418,143,459,402,093,324,449,862,695,596,998' +xfmt7075 format 72022727874549609587390855442717870010505E50 '.65G' -> '7.2022727874549609587390855442717870010505E+90' +xfmt7076 format -61029194219423989830125275183406372786345e132 '\xe2\xba\xac< ,.37' -> '-6.102919421942398983012527518340637279E+172' +xfmt7077 format 12.12345678 '+0.23e' -> '+1.21234567800000000000000e+1' +xfmt7078 format -1.1234567890123456789012 '\xe4\x9a\x81<+92.78%' -> '-112.345678901234567890120000000000000000000000000000000000000000000000000000000000%\xe4\x9a\x81\xe4\x9a\x81\xe4\x9a\x81\xe4\x9a\x81\xe4\x9a\x81\xe4\x9a\x81\xe4\x9a\x81\xe4\x9a\x81' +xfmt7079 format 98E0 ',.8G' -> '98' +xfmt7080 format -14E0 '\xe1\xbb\x91<.39' -> '-14' +xfmt7081 format 63e349 '\xe4\xa8\xa1>' -> '6.3E+350' +xfmt7082 format -91e161 '50,.67%' -> '-910,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000%' +xfmt7083 format 8405332464936402672162396815186554771597e0 '\xef\x81\xb0^-38,.37E' -> '8.4053324649364026721623968151865547716E+39' +xfmt7084 format -3872934094703172607423568816723195894729e0 '\xe8\xa4\xb8>+98,F' -> '\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8\xe8\xa4\xb8-3,872,934,094,703,172,607,423,568,816,723,195,894,729' +xfmt7085 format 8010377378753077338995414307070468181037E371 '\xe9\xb0\x8d= 24,.25f' -> ' 801,037,737,875,307,733,899,541,430,707,046,818,103,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000' +xfmt7086 format -7262647831927862634024499490413364791025e309 '\xe8\xb9\x9b= 37.70E' -> '-7.2626478319278626340244994904133647910250000000000000000000000000000000E+348' +xfmt7087 format 710925e0 '' -> '710925' +xfmt7088 format -584572e0 '-' -> '-584572' +xfmt7089 format 310878e83 '-079,.94' -> '0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,003.10878E+88' +xfmt7090 format -515103E360 '\xef\x96\xa4=20' -> '-\xef\x96\xa4\xef\x96\xa4\xef\x96\xa4\xef\x96\xa4\xef\x96\xa4\xef\x96\xa4\xef\x96\xa45.15103E+365' +xfmt7091 format 75013857555950363E0 ',' -> '75,013,857,555,950,363' +xfmt7092 format -97214917102228386e0 '34' -> ' -97214917102228386' +xfmt7093 format 47850033344833079e164 '-78,.22g' -> ' 4.7850033344833079e+180' +xfmt7094 format -36377779854528589e27 ' 0,G' -> '-3.6377779854528589E+43' +xfmt7095 format 263873919358e0 '\xe8\x82\x8b^+34,G' -> '\xe8\x82\x8b\xe8\x82\x8b\xe8\x82\x8b\xe8\x82\x8b\xe8\x82\x8b\xe8\x82\x8b\xe8\x82\x8b\xe8\x82\x8b\xe8\x82\x8b+263,873,919,358\xe8\x82\x8b\xe8\x82\x8b\xe8\x82\x8b\xe8\x82\x8b\xe8\x82\x8b\xe8\x82\x8b\xe8\x82\x8b\xe8\x82\x8b\xe8\x82\x8b' +xfmt7096 format -872905175205E0 '\xee\xa6\xb8<92,.23e' -> '-8.72905175205000000000000e+11\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8\xee\xa6\xb8' +xfmt7097 format 812477080280e298 '' -> '8.12477080280E+309' +xfmt7098 format -572736061208E64 '' -> '-5.72736061208E+75' +xfmt7099 format 506986538335535614348507780868e0 '%' -> '50698653833553561434850778086800%' +xfmt7100 format -334165476703176116281375365670E0 '-G' -> '-334165476703176116281375365670' +xfmt7101 format 529928100852677471711848965415E211 'F' -> '5299281008526774717118489654150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7102 format -882076481691099938465854190447e204 '\xe6\xa8\x8c<+68,.71' -> '-8.82076481691099938465854190447E+233\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c' +xfmt7103 format 81132173827606503633157E0 '\xe5\xb6\xad< 6,.22g' -> ' 8.113217382760650363316e+22' +xfmt7104 format -95844781116249211328817e0 '\xec\x9c\xa7<+61,.93E' -> '-9.584478111624921132881700000000000000000000000000000000000000000000000000000000000000000000000E+22' +xfmt7105 format 71856333987491667618767e329 '\xee\x99\xb5=95.13n' -> '\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb5\xee\x99\xb57.185633398749e+351' +xfmt7106 format -26112456109619006817842e344 '12' -> '-2.6112456109619006817842E+366' +xfmt7107 format 891755364303718e0 '\xe1\xa8\xbb>51,e' -> '\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb\xe1\xa8\xbb8.91755364303718e+14' +xfmt7108 format -282884661352783E0 '\xe4\x9e\xa6>-78.52' -> '\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6\xe4\x9e\xa6-282884661352783' +xfmt7109 format 630698252465625e279 '\xef\x94\x88=-10.48E' -> '6.306982524656250000000000000000000000000000000000E+293' +xfmt7110 format -516724285436217E360 '\xe4\xa8\x83^+59,.89F' -> '-516,724,285,436,217,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7111 format 289922487E0 '\xee\x8e\x85> 85,.82e' -> ' 2.8992248700000000000000000000000000000000000000000000000000000000000000000000000000e+8' +xfmt7112 format -985205653e0 '+026,.48' -> '-0,000,000,000,985,205,653' +xfmt7113 format 661388778E40 '' -> '6.61388778E+48' +xfmt7114 format -436974938e149 'F' -> '-43697493800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7115 format 0E0 '\xe0\xa5\x84^.10E' -> '0.0000000000E+10' +xfmt7116 format 0e0 '\xe7\xa1\xb5<-84,.23' -> '0\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5\xe7\xa1\xb5' +xfmt7117 format 0E31 '\xef\xa3\xaf=-15,.67F' -> '0.0000000000000000000000000000000000000000000000000000000000000000000' +xfmt7118 format 0E321 '+054,f' -> '+0,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt7119 format 183197552917017129268684e0 '\xe0\xb0\x8a '1.83197552917017129268684E+23' +xfmt7120 format -298236810349265614772247E0 '+015,.57%' -> '-29,823,681,034,926,561,477,224,700.000000000000000000000000000000000000000000000000000000000%' +xfmt7121 format 277304684816929026772367E189 '\xe6\x99\xb5^-,.90F' -> '277,304,684,816,929,026,772,367,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7122 format -252082551370281230788195E58 '0' -> '-2.52082551370281230788195E+81' +xfmt7123 format 6559892497851955805362414211629352999E0 '' -> '6559892497851955805362414211629352999' +xfmt7124 format -7083517030991538908599622978325047765e0 '\xeb\xaa\xb8=-.3g' -> '-7.08e+36' +xfmt7125 format 7175367987478763932154701811855233559e61 '\xee\xab\xa2=-48,.94' -> '\xee\xab\xa2\xee\xab\xa2\xee\xab\xa2\xee\xab\xa2\xee\xab\xa2\xee\xab\xa27.175367987478763932154701811855233559E+97' +xfmt7126 format -6757850670528784645219680246365141029e331 '\xe7\x8e\x90^ 42,.11' -> '\xe7\x8e\x90\xe7\x8e\x90\xe7\x8e\x90\xe7\x8e\x90\xe7\x8e\x90\xe7\x8e\x90\xe7\x8e\x90\xe7\x8e\x90\xe7\x8e\x90\xe7\x8e\x90\xe7\x8e\x90\xe7\x8e\x90-6.7578506705E+367\xe7\x8e\x90\xe7\x8e\x90\xe7\x8e\x90\xe7\x8e\x90\xe7\x8e\x90\xe7\x8e\x90\xe7\x8e\x90\xe7\x8e\x90\xe7\x8e\x90\xe7\x8e\x90\xe7\x8e\x90\xe7\x8e\x90' +xfmt7127 format 5758358843394502898318741912591224657624216E0 '' -> '5758358843394502898318741912591224657624216' +xfmt7128 format -9556050044803632292449951273719858995420313E0 ' 054,.75e' -> '-9.556050044803632292449951273719858995420313000000000000000000000000000000000e+42' +xfmt7129 format 6480775493950038562381438781436349749922978e148 '0.16E' -> '6.4807754939500386E+190' +xfmt7130 format -3785132248152045724072034155766827993480054e329 '\xef\xb6\x95= 24,.25E' -> '-3.7851322481520457240720342E+371' +xfmt7131 format 25235370542261729624319638552805e0 '\xe5\x9b\xb8< 32,.83f' -> ' 25,235,370,542,261,729,624,319,638,552,805.00000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7132 format -68589301302858427710314304406427e0 '\xe4\xac\xa5^-50.13' -> '\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5-6.858930130286E+31\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5\xe4\xac\xa5' +xfmt7133 format 82976987913292605707327990775514e205 '\xec\xb1\x95>-32.14n' -> '\xec\xb1\x95\xec\xb1\x95\xec\xb1\x95\xec\xb1\x95\xec\xb1\x95\xec\xb1\x95\xec\xb1\x95\xec\xb1\x95\xec\xb1\x95\xec\xb1\x95\xec\xb1\x95\xec\xb1\x958.2976987913293e+236' +xfmt7134 format -85185394536054670505295820068438e135 '\xea\xa3\x9c<8,%' -> '-8,518,539,453,605,467,050,529,582,006,843,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt7135 format 75997946932e0 '\xe1\x85\x82<.89G' -> '75997946932' +xfmt7136 format -92622733129e0 '\xe2\x9c\x83=,' -> '-92,622,733,129' +xfmt7137 format 21265557995e72 '' -> '2.1265557995E+82' +xfmt7138 format -40146123228e337 '\xed\x8f\xa9^65,.4' -> '\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9-4.015E+347\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9\xed\x8f\xa9' +xfmt7139 format 8380879132447193712278386662e0 '\xe1\x83\x90>-n' -> '8380879132447193712278386662' +xfmt7140 format -9731801837339468845845847794e0 ',.83' -> '-9,731,801,837,339,468,845,845,847,794' +xfmt7141 format 2689192913832125873110494203e147 ',' -> '2.689192913832125873110494203E+174' +xfmt7142 format -4103556805659554075301591060E114 '' -> '-4.103556805659554075301591060E+141' +xfmt7143 format 8734215809897e0 '\xef\x8f\x91^ 29,.64F' -> ' 8,734,215,809,897.0000000000000000000000000000000000000000000000000000000000000000' +xfmt7144 format -7558311058524E0 '\xe2\x8a\xa2=-16,.63G' -> '-7,558,311,058,524' +xfmt7145 format 1374773761872E284 '-' -> '1.374773761872E+296' +xfmt7146 format -6694014115875E261 '\xe7\xb3\xb6^-.63%' -> '-669401411587500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000%' +xfmt7147 format 6355432029175023362543610381682e0 '\xec\x93\xb6^+,.51%' -> '+635,543,202,917,502,336,254,361,038,168,200.000000000000000000000000000000000000000000000000000%' +xfmt7148 format -7903578942738956239351017100133e0 '\xe3\xb7\xa3< ,.48g' -> '-7,903,578,942,738,956,239,351,017,100,133' +xfmt7149 format 7234593689806803332814099321675E169 '\xe9\xbf\x83<' -> '7.234593689806803332814099321675E+199' +xfmt7150 format -8929435254594869260018010852134E132 '\xe0\xa2\x8f=+.54' -> '-8.929435254594869260018010852134E+162' +xfmt7151 format 88385E0 '66,.73F' -> '88,385.0000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7152 format -25250e0 '\xe1\xab\x9f^48.6n' -> '\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f-25250\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f\xe1\xab\x9f' +xfmt7153 format 33724e211 '\xe1\x9c\xb0< 51,.14' -> ' 3.3724E+215\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0\xe1\x9c\xb0' +xfmt7154 format -28007e71 '\xe8\x9b\x9a^ ,.67g' -> '-2.8007e+75' +xfmt7155 format 487946992571831031727303606459528e0 '\xee\xb9\xb2<76.6g' -> '4.87947e+32\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2\xee\xb9\xb2' +xfmt7156 format -457884104784423071957286549405381E0 '\xeb\x95\xa9>82,.60E' -> '\xeb\x95\xa9\xeb\x95\xa9\xeb\x95\xa9\xeb\x95\xa9\xeb\x95\xa9\xeb\x95\xa9\xeb\x95\xa9\xeb\x95\xa9\xeb\x95\xa9\xeb\x95\xa9\xeb\x95\xa9\xeb\x95\xa9\xeb\x95\xa9\xeb\x95\xa9\xeb\x95\xa9-4.578841047844230719572865494053810000000000000000000000000000E+32' +xfmt7157 format 983839701335609146465885904444657e366 '-037,.80G' -> '9.83839701335609146465885904444657E+398' +xfmt7158 format -693215413577133300448307430223724E167 '-091,.94G' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,006.93215413577133300448307430223724E+199' +xfmt7159 format 33050438538419e0 '61.93e' -> '3.305043853841900000000000000000000000000000000000000000000000000000000000000000000000000000000e+13' +xfmt7160 format -13242156834574e0 '\xd4\x93= 44,.1e' -> '-\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x93\xd4\x931.3e+13' +xfmt7161 format 64281387264505E179 '\xe6\x98\xbf=96.33' -> '\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf\xe6\x98\xbf6.4281387264505E+192' +xfmt7162 format -96161753976129e154 'f' -> '-961617539761290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7163 format 92336707039953930699836751e0 'f' -> '92336707039953930699836751' +xfmt7164 format -96684703764166569470410904e0 ' 021E' -> '-9.6684703764166569470410904E+25' +xfmt7165 format 63557445661829699910385045E7 '90,.76' -> ' 6.3557445661829699910385045E+32' +xfmt7166 format -76646679737552107730527381E278 'e' -> '-7.6646679737552107730527381e+303' +xfmt7167 format 47722971449140180558371871179609034057458e0 ',' -> '47,722,971,449,140,180,558,371,871,179,609,034,057,458' +xfmt7168 format -38332402750647946267143723437254868516614e0 '' -> '-38332402750647946267143723437254868516614' +xfmt7169 format 15634525998629098799780699748322582464074e128 '.76' -> '1.5634525998629098799780699748322582464074E+168' +xfmt7170 format -66858554511081678457095913055256137288200E148 '' -> '-6.6858554511081678457095913055256137288200E+188' +xfmt7171 format 644098853529743651e0 '\xe6\xb9\xac= .86F' -> ' 644098853529743651.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7172 format -637640603719310547E0 '0' -> '-637640603719310547' +xfmt7173 format 538628490167501399E81 '0,F' -> '538,628,490,167,501,399,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt7174 format -809110922431901689E277 '39,.11' -> ' -8.0911092243E+294' +xfmt7175 format 7604395708e0 ' 0.17E' -> ' 7.60439570800000000E+9' +xfmt7176 format -3948844434e0 ',.35e' -> '-3.94884443400000000000000000000000000e+9' +xfmt7177 format 6626810046E49 '\xe6\xac\x8d<10,e' -> '6.626810046e+58' +xfmt7178 format -4180041064E192 '\xeb\x99\xa9= ,e' -> '-4.180041064e+201' +xfmt7179 format 6475855754971807E0 '\xe3\x92\xb5>-,.64' -> '6,475,855,754,971,807' +xfmt7180 format -3480496724866834e0 ' 15n' -> '-3480496724866834' +xfmt7181 format 7479846354435687E331 ' 06,.49%' -> ' 7,479,846,354,435,687,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000%' +xfmt7182 format -4544549398740770e189 '51,F' -> '-4,544,549,398,740,770,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt7183 format 790E0 '-17' -> ' 790' +xfmt7184 format -185E0 '+47.82' -> ' -185' +xfmt7185 format 625e197 '033,' -> '0,000,000,000,000,000,006.25E+199' +xfmt7186 format -992e239 '\xea\x92\xac^+21,.49' -> '\xea\x92\xac\xea\x92\xac\xea\x92\xac\xea\x92\xac\xea\x92\xac-9.92E+241\xea\x92\xac\xea\x92\xac\xea\x92\xac\xea\x92\xac\xea\x92\xac\xea\x92\xac' +xfmt7187 format 143678235892835144722745059E0 '47,e' -> ' 1.43678235892835144722745059e+26' +xfmt7188 format -799048575077209665666905572e0 '0' -> '-799048575077209665666905572' +xfmt7189 format 804955518415210033452244719e213 '+91G' -> ' +8.04955518415210033452244719E+239' +xfmt7190 format -426703069095343231078930039e185 '\xeb\xbd\x91^+21,.89' -> '-4.26703069095343231078930039E+211' +xfmt7191 format 9021E0 '\xef\x91\xb9>-,.62%' -> '902,100.00000000000000000000000000000000000000000000000000000000000000%' +xfmt7192 format -9827e0 '' -> '-9827' +xfmt7193 format 8113E3 '\xe5\x96\xb5<77.13f' -> '8113000.0000000000000\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5\xe5\x96\xb5' +xfmt7194 format -9925E301 '93,' -> ' -9.925E+304' +xfmt7195 format 981733406852528596043e0 '.26E' -> '9.81733406852528596043000000E+20' +xfmt7196 format -788577515782565808760e0 '\xe8\xbd\xbb=' -> '-788577515782565808760' +xfmt7197 format 635244433523302458161E54 '\xe4\x94\x9c>+27,.61E' -> '+6.3524443352330245816100000000000000000000000000000000000000000E+74' +xfmt7198 format -392462816701648716892e326 '\xe2\x98\xb3>g' -> '-3.92462816701648716892e+346' +xfmt7199 format 123456789.123456789012345678901 '\xea\xa6\x88= e' -> ' 1.23456789123456789012345678901e+8' +xfmt7200 format -1234567890.12345678901234 '' -> '-1234567890.12345678901234' +xfmt7201 format 2114509066994163333633E0 '\xef\x82\x95=F' -> '2114509066994163333633' +xfmt7202 format -1624506737434207124537e0 '\xec\x84\xbc=+24,.40G' -> '-1,624,506,737,434,207,124,537' +xfmt7203 format 7796956204749340271543E218 ' 0,' -> ' 7.796956204749340271543E+239' +xfmt7204 format -5604538057747931045323E21 '' -> '-5.604538057747931045323E+42' +xfmt7205 format 0e0 ',.31' -> '0' +xfmt7206 format 0E0 '\xe7\x91\x89<+' -> '+0' +xfmt7207 format 0e226 '.73' -> '0E+226' +xfmt7208 format 0e272 '\xe0\xa1\xb5= 58,.29%' -> ' \xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb5\xe0\xa1\xb50.00000000000000000000000000000%' +xfmt7209 format 48084516926585165430e0 '\xee\xaa\xba<+72,.19F' -> '+48,084,516,926,585,165,430.0000000000000000000\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba\xee\xaa\xba' +xfmt7210 format -12879593066944378504e0 '-077,.41g' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,012,879,593,066,944,378,504' +xfmt7211 format 43820494177525827909E271 '' -> '4.3820494177525827909E+290' +xfmt7212 format -91085528471033512711e326 '\xe8\x8f\x98<+76,.11G' -> '-9.1085528471E+345\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98\xe8\x8f\x98' +xfmt7213 format 29893886564113792324280530e0 '+' -> '+29893886564113792324280530' +xfmt7214 format -79246189482708797961508074e0 '0.94' -> '-79246189482708797961508074' +xfmt7215 format 73263622802751922021099329e321 '\xe6\x87\xa6^41E' -> '\xe6\x87\xa6\xe6\x87\xa6\xe6\x87\xa6\xe6\x87\xa67.3263622802751922021099329E+346\xe6\x87\xa6\xe6\x87\xa6\xe6\x87\xa6\xe6\x87\xa6\xe6\x87\xa6' +xfmt7216 format -76910422500586411017437999e266 '' -> '-7.6910422500586411017437999E+291' +xfmt7217 format 72553535515E0 '+38,' -> ' +72,553,535,515' +xfmt7218 format -15371585397e0 '\xe6\x87\x9e^64.84e' -> '-1.537158539700000000000000000000000000000000000000000000000000000000000000000000000000e+10' +xfmt7219 format 25452747760E0 '0,%' -> '2,545,274,776,000%' +xfmt7220 format -39183112270e242 '\xc2\xb2^.70g' -> '-3.9183112270e+252' +xfmt7221 format 3625734e0 '\xe9\x94\x85^ 90,.37G' -> '\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85 3,625,734\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85\xe9\x94\x85' +xfmt7222 format -4309028e0 ' 81.50' -> ' -4309028' +xfmt7223 format 7864883E365 '\xe1\x80\x94>58.25' -> '\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x94\xe1\x80\x947.864883E+371' +xfmt7224 format -7222588e240 ' 098,.79F' -> '-7,222,588,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7225 format 72525263e0 '\xe4\xbb\x87<-54,.11%' -> '7,252,526,300.00000000000%\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87\xe4\xbb\x87' +xfmt7226 format -77364932e0 ' 0,.93g' -> '-77,364,932' +xfmt7227 format 61435712E312 '\xe6\x8c\xa2=+68.72F' -> '+61435712000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7228 format -91103354e60 '\xe8\x83\x91<97' -> '-9.1103354E+67\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91\xe8\x83\x91' +xfmt7229 format 9501384342702e0 '+' -> '+9501384342702' +xfmt7230 format -7440071028031E0 ' %' -> '-744007102803100%' +xfmt7231 format 8569760885933e212 '\xe4\xa1\x96^+,.71e' -> '+8.56976088593300000000000000000000000000000000000000000000000000000000000e+224' +xfmt7232 format -3563697477772e9 '\xea\xae\xb0>.36f' -> '-3563697477772000000000.000000000000000000000000000000000000' +xfmt7233 format 4360552198112605E0 '\xd7\x80>+18,.13' -> '+4.360552198113E+15' +xfmt7234 format -3488264650272201E0 ' 0,f' -> '-3,488,264,650,272,201' +xfmt7235 format 2100268053594624e57 '\xe2\xb5\x9e<50,e' -> '2.100268053594624e+72\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e\xe2\xb5\x9e' +xfmt7236 format -6103091930373777E315 '' -> '-6.103091930373777E+330' +xfmt7237 format 293459831842260811746258046864E0 '' -> '293459831842260811746258046864' +xfmt7238 format -698750843526491771082681646009e0 ',' -> '-698,750,843,526,491,771,082,681,646,009' +xfmt7239 format 748767421072213819567441912922E313 '\xeb\xa5\x9a^+,.66F' -> '+7,487,674,210,722,138,195,674,419,129,220,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000' +xfmt7240 format -119476178774356893866594440254e190 '\xee\x88\x8c<-48.92' -> '-1.19476178774356893866594440254E+219\xee\x88\x8c\xee\x88\x8c\xee\x88\x8c\xee\x88\x8c\xee\x88\x8c\xee\x88\x8c\xee\x88\x8c\xee\x88\x8c\xee\x88\x8c\xee\x88\x8c\xee\x88\x8c' +xfmt7241 format 38527866740834811397328531361E0 '96' -> ' 38527866740834811397328531361' +xfmt7242 format -15308562278563226038298018736e0 '044,.47F' -> '-15,308,562,278,563,226,038,298,018,736.00000000000000000000000000000000000000000000000' +xfmt7243 format 54474553805818763990670413614e283 '' -> '5.4474553805818763990670413614E+311' +xfmt7244 format -35068957342634757566153169292e59 '0.26' -> '-3.5068957342634757566153169E+87' +xfmt7245 format 9085405009037631799646770909e0 '\xe3\x94\x93=' -> '9085405009037631799646770909' +xfmt7246 format -6493835879964078120350948336e0 '+,.11G' -> '-6.4938358800E+27' +xfmt7247 format 3231453877771721621019985981e361 '\xee\xad\x9d^+,.1%' -> '+3,231,453,877,771,721,621,019,985,981,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0%' +xfmt7248 format -2314670872275402107785051831e252 '' -> '-2.314670872275402107785051831E+279' +xfmt7249 format 145813125E0 '\xee\x87\x8c>,.18f' -> '145,813,125.000000000000000000' +xfmt7250 format -855788191E0 '0,.49E' -> '-8.5578819100000000000000000000000000000000000000000E+8' +xfmt7251 format 780618384E59 '017,.48%' -> '7,806,183,840,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000%' +xfmt7252 format -932124975e335 '0,.93' -> '-9.32124975E+343' +xfmt7253 format 749670e0 '' -> '749670' +xfmt7254 format -492024e0 '\xeb\x86\x85< 71.34g' -> '-492024\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85\xeb\x86\x85' +xfmt7255 format 563076E275 '\xe1\xaf\xb0^,' -> '5.63076E+280' +xfmt7256 format -665886e362 '-0.71' -> '-6.65886E+367' +xfmt7257 format 20154168631405856099684024094622e0 '\xe2\x88\x94< 57,.49%' -> ' 2,015,416,863,140,585,609,968,402,409,462,200.0000000000000000000000000000000000000000000000000%' +xfmt7258 format -58034146505100429786134168044700e0 '' -> '-58034146505100429786134168044700' +xfmt7259 format 38298761883657384995382180068389e126 '\xe6\xa4\x8e^F' -> '38298761883657384995382180068389000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7260 format -13927164158265557341321198069858E199 '\xe9\xaf\xa4^' -> '-1.3927164158265557341321198069858E+230' +xfmt7261 format 665042509619435356523606210113034559e0 '\xe8\x8a\xa5=' -> '665042509619435356523606210113034559' +xfmt7262 format -464197937900368498847544284206776246E0 '' -> '-464197937900368498847544284206776246' +xfmt7263 format 503002880581351204929267330647011992E48 '\xe9\x80\xa3^' -> '5.03002880581351204929267330647011992E+83' +xfmt7264 format -566802923294567104753619533329668399e189 '\xef\xa7\x80< 73,.96%' -> '-56,680,292,329,456,710,475,361,953,332,966,839,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt7265 format 60010568155282124338543041897434784571e0 '\xe4\x80\xa1^+72,.48g' -> '\xe4\x80\xa1\xe4\x80\xa1\xe4\x80\xa1\xe4\x80\xa1\xe4\x80\xa1\xe4\x80\xa1\xe4\x80\xa1\xe4\x80\xa1\xe4\x80\xa1\xe4\x80\xa1+60,010,568,155,282,124,338,543,041,897,434,784,571\xe4\x80\xa1\xe4\x80\xa1\xe4\x80\xa1\xe4\x80\xa1\xe4\x80\xa1\xe4\x80\xa1\xe4\x80\xa1\xe4\x80\xa1\xe4\x80\xa1\xe4\x80\xa1\xe4\x80\xa1' +xfmt7266 format -71303458667828535193528744193144376956e0 '' -> '-71303458667828535193528744193144376956' +xfmt7267 format 88460340153999979319311856783502376337e129 '' -> '8.8460340153999979319311856783502376337E+166' +xfmt7268 format -14839745724795473725679833023067284899E112 '\xe5\xac\xad>-26,G' -> '-1.4839745724795473725679833023067284899E+149' +xfmt7269 format 564911609189997e0 '0' -> '564911609189997' +xfmt7270 format -391646054437017e0 '\xe9\x96\x9e>-97.20E' -> '\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e\xe9\x96\x9e-3.91646054437017000000E+14' +xfmt7271 format 181558814746170E281 '\xe3\xbe\x9d< 71,.85' -> ' 1.81558814746170E+295\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d\xe3\xbe\x9d' +xfmt7272 format -980905137723648E160 '\xe2\xa0\x80^+84,.27g' -> '\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80-9.80905137723648e+174\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80\xe2\xa0\x80' +xfmt7273 format 885406366960E0 '64' -> ' 885406366960' +xfmt7274 format -224243545596E0 ',F' -> '-224,243,545,596' +xfmt7275 format 295088839786e109 '\xe1\x8f\x8f<27,' -> '2.95088839786E+120\xe1\x8f\x8f\xe1\x8f\x8f\xe1\x8f\x8f\xe1\x8f\x8f\xe1\x8f\x8f\xe1\x8f\x8f\xe1\x8f\x8f\xe1\x8f\x8f\xe1\x8f\x8f' +xfmt7276 format -148243707483e379 ' 84' -> ' -1.48243707483E+390' +xfmt7277 format 9997729329220620569388982642097234114109199E0 '+0,.54E' -> '+9.997729329220620569388982642097234114109199000000000000E+42' +xfmt7278 format -1906693558095944634274872408731600136861503E0 '\xee\x9a\xbf< ,' -> '-1,906,693,558,095,944,634,274,872,408,731,600,136,861,503' +xfmt7279 format 6812312956652901653947090661469369235418602e224 '\xe6\xb7\xa9>+92,.53f' -> '+681,231,295,665,290,165,394,709,066,146,936,923,541,860,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000' +xfmt7280 format -4963396247570684815921190485391016406371611e79 '+042,.32G' -> '-0,004.9633962475706848159211904853910E+121' +xfmt7281 format 3828365493716560699786070111137010157601E0 '0,' -> '3,828,365,493,716,560,699,786,070,111,137,010,157,601' +xfmt7282 format -7256347575231929299263937247496792734977e0 '087,.12' -> '-00,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,007.25634757523E+39' +xfmt7283 format 5926305562301006518809129251610617250494e377 '' -> '5.926305562301006518809129251610617250494E+416' +xfmt7284 format -7910657250403523031312074221055738978523E44 '\xe7\x90\x85^1,.5f' -> '-791,065,725,040,352,303,131,207,422,105,573,897,852,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000' +xfmt7285 format 806579373752935953E0 '\xee\x9b\xaf<+15,.10e' -> '+8.0657937375e+17' +xfmt7286 format -531036364494525919e0 '\xeb\xa4\xab<-80,.14g' -> '-5.3103636449453e+17\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab\xeb\xa4\xab' +xfmt7287 format 957065892654394887e379 '\xe3\x83\xb4= ,.83E' -> ' 9.57065892654394887000000000000000000000000000000000000000000000000000000000000000000E+396' +xfmt7288 format -288758953155950028E333 '14' -> '-2.88758953155950028E+350' +xfmt7289 format 3e0 '0,' -> '3' +xfmt7290 format -5E0 '\xe4\xb6\x9e<-,.95' -> '-5' +xfmt7291 format 1e324 '\xcc\x8a<-3,.40%' -> '100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000%' +xfmt7292 format -1E239 '\xe3\xa1\xb2=.11' -> '-1E+239' +xfmt7293 format 99702065999265924e0 '1E' -> '9.9702065999265924E+16' +xfmt7294 format -52797854734085738e0 '\xec\x9f\xa8> 35,.36F' -> '-52,797,854,734,085,738.000000000000000000000000000000000000' +xfmt7295 format 91814108099937776e124 '\xe5\x86\xba=,.87G' -> '9.1814108099937776E+140' +xfmt7296 format -71206498412518492e224 '\xdc\x9b=,G' -> '-7.1206498412518492E+240' +xfmt7297 format 789431404995612346830255800911729569628469E0 '\xec\xb5\x8a>-29,.94F' -> '789,431,404,995,612,346,830,255,800,911,729,569,628,469.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7298 format -246893676965794791604525300610778769399638e0 '\xe5\xbc\xb2 '-2.46893676965794791604525300610778769399638e+41' +xfmt7299 format 598359640992944074961927588923185777445691e11 '\xe2\xb6\x81>-79,e' -> '\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x81\xe2\xb6\x815.98359640992944074961927588923185777445691e+52' +xfmt7300 format -940331110167570513170594755671673665237915e257 '\xe7\xb0\x80> 44,G' -> '-9.40331110167570513170594755671673665237915E+298' +xfmt7301 format 80508798307658467383953e0 '' -> '80508798307658467383953' +xfmt7302 format -16900427115800620530303E0 '0,%' -> '-1,690,042,711,580,062,053,030,300%' +xfmt7303 format 67043093922352853852562e326 '\xe6\x92\x84<+11' -> '+6.7043093922352853852562E+348' +xfmt7304 format -59664374706887807032800e74 '\xeb\xb0\xa6= 37,.34F' -> '-5,966,437,470,688,780,703,280,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000' +xfmt7305 format 892114915048045378522E0 '\xee\xab\x9f< 50,.41f' -> ' 892,114,915,048,045,378,522.00000000000000000000000000000000000000000' +xfmt7306 format -260597459621988814579e0 '0,' -> '-260,597,459,621,988,814,579' +xfmt7307 format 262123587627487598425e22 '\xea\x8b\xbe=+92,g' -> '+\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe\xea\x8b\xbe2.62123587627487598425e+42' +xfmt7308 format -735421430292549130868e218 '\xe8\xa7\x90^+54,.83%' -> '-7,354,214,302,925,491,308,680,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt7309 format 33E0 '74' -> ' 33' +xfmt7310 format -81e0 '\xed\x90\xac> .32' -> '-81' +xfmt7311 format 56e115 '-0,.99f' -> '560,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7312 format -10E380 '\xec\xba\xaa<,.27' -> '-1.0E+381' +xfmt7313 format 35942708499374e0 '1' -> '35942708499374' +xfmt7314 format -89904267527332e0 ',' -> '-89,904,267,527,332' +xfmt7315 format 85277731886133e378 '\xe4\x89\x87>-,.15E' -> '8.527773188613300E+391' +xfmt7316 format -35277971476746e191 ' ' -> '-3.5277971476746E+204' +xfmt7317 format 90805217929392083652851793842813412173479e0 ',' -> '90,805,217,929,392,083,652,851,793,842,813,412,173,479' +xfmt7318 format -71438646401201058504443369243197395892631E0 '95.60' -> ' -71438646401201058504443369243197395892631' +xfmt7319 format 29337793199899000899542736775618900425074E359 '\xe7\xa1\xb2<+55,.74E' -> '+2.93377931998990008995427367756189004250740000000000000000000000000000000000E+399' +xfmt7320 format -96584652171296550686517881545306322776139e119 '\xef\xa1\xa0^18' -> '-9.6584652171296550686517881545306322776139E+159' +xfmt7321 format 12.12345 '\xe1\xab\xb9^ 67,.60G' -> '\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9 12.12345\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9\xe1\xab\xb9' +xfmt7322 format -12345.1234567 '-.23' -> '-12345.1234567' +xfmt7323 format 9620533822e0 '\xec\xbb\x82^-8,g' -> '9,620,533,822' +xfmt7324 format -6030817643E0 '\xd4\x90<33,.97G' -> '-6,030,817,643\xd4\x90\xd4\x90\xd4\x90\xd4\x90\xd4\x90\xd4\x90\xd4\x90\xd4\x90\xd4\x90\xd4\x90\xd4\x90\xd4\x90\xd4\x90\xd4\x90\xd4\x90\xd4\x90\xd4\x90\xd4\x90\xd4\x90' +xfmt7325 format 2339449943e199 ',e' -> '2.339449943e+208' +xfmt7326 format -1759868650e84 '' -> '-1.759868650E+93' +xfmt7327 format 5318E0 '' -> '5318' +xfmt7328 format -1023E0 ' ,' -> '-1,023' +xfmt7329 format 2256E45 '\xeb\xa3\x90>+' -> '+2.256E+48' +xfmt7330 format -7302E242 '\xec\x84\xaf>+94.57n' -> '\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf\xec\x84\xaf-7.302e+245' +xfmt7331 format 88634244130373263335354680448966602264440122E0 '0.76' -> '88634244130373263335354680448966602264440122' +xfmt7332 format -14856003020037088807296452175609801487348273e0 '\xe7\xa4\x97^-96,.1F' -> '\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97-14,856,003,020,037,088,807,296,452,175,609,801,487,348,273.0\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97\xe7\xa4\x97' +xfmt7333 format 64867830686241195598448079372993069008185178e293 '\xe1\x9b\x90=E' -> '6.4867830686241195598448079372993069008185178E+336' +xfmt7334 format -17721621695815459291003724320827128170226355E268 '\xe5\xa1\x98^68,f' -> '-177,216,216,958,154,592,910,037,243,208,271,281,702,263,550,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt7335 format 896018214201470053725622615E0 'e' -> '8.96018214201470053725622615e+26' +xfmt7336 format -335272724809689181618697662E0 '' -> '-335272724809689181618697662' +xfmt7337 format 933032777204381712311419017E269 '\xe7\xa4\x91< 75e' -> ' 9.33032777204381712311419017e+295\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91\xe7\xa4\x91' +xfmt7338 format -882073007567203929151165788E257 '\xeb\xa0\xb3<-,E' -> '-8.82073007567203929151165788E+283' +xfmt7339 format 344109821837559046E0 '' -> '344109821837559046' +xfmt7340 format -181067607110867233e0 '\xe8\x97\xaf<+79,.52' -> '-181,067,607,110,867,233\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf\xe8\x97\xaf' +xfmt7341 format 268164960722503604e107 ' ' -> ' 2.68164960722503604E+124' +xfmt7342 format -608738932174631933E284 '\xee\x88\x92>+81%' -> '-6087389321746319330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt7343 format 674E0 '\xe7\x89\x91>,.55f' -> '674.0000000000000000000000000000000000000000000000000000000' +xfmt7344 format -403e0 '21E' -> ' -4.03E+2' +xfmt7345 format 103E271 ' 073,.80G' -> ' 0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,001.03E+273' +xfmt7346 format -737E296 '' -> '-7.37E+298' +xfmt7347 format 10795319585464295E0 '' -> '10795319585464295' +xfmt7348 format -16059767714989896E0 '\xe5\xac\x9e<-36.61' -> '-16059767714989896\xe5\xac\x9e\xe5\xac\x9e\xe5\xac\x9e\xe5\xac\x9e\xe5\xac\x9e\xe5\xac\x9e\xe5\xac\x9e\xe5\xac\x9e\xe5\xac\x9e\xe5\xac\x9e\xe5\xac\x9e\xe5\xac\x9e\xe5\xac\x9e\xe5\xac\x9e\xe5\xac\x9e\xe5\xac\x9e\xe5\xac\x9e\xe5\xac\x9e' +xfmt7349 format 89851332930559304E159 '+' -> '+8.9851332930559304E+175' +xfmt7350 format -70272459704247884e282 '\xe5\x8f\xa0^ 43,.62' -> '\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0-7.0272459704247884E+298\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0\xe5\x8f\xa0' +xfmt7351 format 37467754826056928739539828602052458235368e0 '\xe5\x99\xb9=97,f' -> '\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb9\xe5\x99\xb937,467,754,826,056,928,739,539,828,602,052,458,235,368' +xfmt7352 format -50258509432701052831447032128514096997540E0 '\xe1\x87\x95^ 51,g' -> '-50,258,509,432,701,052,831,447,032,128,514,096,997,540' +xfmt7353 format 60890255509062198836888071774995057275533e167 '' -> '6.0890255509062198836888071774995057275533E+207' +xfmt7354 format -33272631398266666156421060324689647734143E219 '\xe0\xa3\x8d< 51,.14F' -> '-33,272,631,398,266,666,156,421,060,324,689,647,734,143,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000' +xfmt7355 format 687252E0 '+056,f' -> '+000,000,000,000,000,000,000,000,000,000,000,000,687,252' +xfmt7356 format -854956e0 '\xeb\xba\x9d=+29,.69' -> '-\xeb\xba\x9d\xeb\xba\x9d\xeb\xba\x9d\xeb\xba\x9d\xeb\xba\x9d\xeb\xba\x9d\xeb\xba\x9d\xeb\xba\x9d\xeb\xba\x9d\xeb\xba\x9d\xeb\xba\x9d\xeb\xba\x9d\xeb\xba\x9d\xeb\xba\x9d\xeb\xba\x9d\xeb\xba\x9d\xeb\xba\x9d\xeb\xba\x9d\xeb\xba\x9d\xeb\xba\x9d\xeb\xba\x9d854,956' +xfmt7357 format 798321E365 '' -> '7.98321E+370' +xfmt7358 format -749995E172 '\xef\x97\x8f= 1,.22F' -> '-7,499,950,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000' +xfmt7359 format 491460099123624517119041524430232280E0 '.80f' -> '491460099123624517119041524430232280.00000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7360 format -934791014618206098396249417752151129e0 '\xe9\x98\x81= ,.63g' -> '-934,791,014,618,206,098,396,249,417,752,151,129' +xfmt7361 format 798174483548289087843801003943663571E231 '\xe7\xb2\x99^-69,' -> '\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x997.98174483548289087843801003943663571E+266\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99\xe7\xb2\x99' +xfmt7362 format -312806850593214726085003760205766800e210 '.83' -> '-3.12806850593214726085003760205766800E+245' +xfmt7363 format 5389259998964848053195701719623E0 '\xe4\xbd\x81<+56,.92%' -> '+538,925,999,896,484,805,319,570,171,962,300.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt7364 format -9988578768058576193106042519488e0 '\xe1\x97\x91^-47,.53G' -> '\xe1\x97\x91\xe1\x97\x91-9,988,578,768,058,576,193,106,042,519,488\xe1\x97\x91\xe1\x97\x91\xe1\x97\x91' +xfmt7365 format 9591524278743018392835229514735e162 '' -> '9.591524278743018392835229514735E+192' +xfmt7366 format -8946147023385678735997898334522E232 '\xeb\x8a\xa3< 22.68' -> '-8.946147023385678735997898334522E+262' +xfmt7367 format 636834646840E0 '\xe7\x89\xa6>+39,.33g' -> '\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6\xe7\x89\xa6+636,834,646,840' +xfmt7368 format -358397286428E0 '\xe9\x98\xad<+1.16' -> '-358397286428' +xfmt7369 format 233813613435E311 '0' -> '2.33813613435E+322' +xfmt7370 format -583535576612E169 '\xe5\xbd\x90=-,g' -> '-5.83535576612e+180' +xfmt7371 format 78694088811687943715317682463e0 '\xea\xa9\xbf=e' -> '7.8694088811687943715317682463e+28' +xfmt7372 format -65696613593983325650697837043E0 '+19,' -> '-65,696,613,593,983,325,650,697,837,043' +xfmt7373 format 54211096803764919879503311745e368 '\xee\xba\x9d<-27,.82e' -> '5.4211096803764919879503311745000000000000000000000000000000000000000000000000000000e+396' +xfmt7374 format -72435016935708724326140977194E270 '\xee\x94\xbb>-77,.91E' -> '-7.2435016935708724326140977194000000000000000000000000000000000000000000000000000000000000000E+298' +xfmt7375 format 3006564595502293024098723916080154854E0 '0,.45' -> '3,006,564,595,502,293,024,098,723,916,080,154,854' +xfmt7376 format -3177478393426987947511373717315005909e0 '73.27' -> ' -3.17747839342698794751137372E+36' +xfmt7377 format 3859840116384722649952301135018127742e130 '-16' -> '3.859840116384722649952301135018127742E+166' +xfmt7378 format -9313938902278898243766856396876457358E42 '\xef\xa8\xb7=-' -> '-9.313938902278898243766856396876457358E+78' +xfmt7379 format 4085204018057241241711016736214259477235836E0 '095' -> '00000000000000000000000000000000000000000000000000004085204018057241241711016736214259477235836' +xfmt7380 format -7359346738154760125851658796153309185710695E0 '0,' -> '-7,359,346,738,154,760,125,851,658,796,153,309,185,710,695' +xfmt7381 format 2195700616819665786702324198901619709817293e221 '' -> '2.195700616819665786702324198901619709817293E+263' +xfmt7382 format -3307987134330552279096707985974994181753012E333 '\xe8\x90\xb4^+3,.42E' -> '-3.307987134330552279096707985974994181753012E+375' +xfmt7383 format 82851790029155285171e0 '\xe3\xa5\x9c<-79,.51G' -> '82,851,790,029,155,285,171\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c\xe3\xa5\x9c' +xfmt7384 format -43144811181668538040e0 '\xe2\x89\xb4= 96,.8G' -> '-\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb4\xe2\x89\xb44.3144811E+19' +xfmt7385 format 50130196713056096656E36 '\xee\x92\x95>+74,.35F' -> '+50,130,196,713,056,096,656,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000' +xfmt7386 format -86153687716855756789E29 '' -> '-8.6153687716855756789E+48' +xfmt7387 format 0e0 '' -> '0' +xfmt7388 format 0e0 '0' -> '0' +xfmt7389 format 0E341 '040' -> '00000000000000000000000000000000000E+341' +xfmt7390 format 0E314 '' -> '0E+314' +xfmt7391 format 720774346375664157150E0 '\xec\x8e\x8e>,' -> '720,774,346,375,664,157,150' +xfmt7392 format -253007370352854860592E0 ',' -> '-253,007,370,352,854,860,592' +xfmt7393 format 679129166630510870550E3 '\xe9\xbc\x9f>-68E' -> '\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f\xe9\xbc\x9f6.79129166630510870550E+23' +xfmt7394 format -407083360824628178292E60 '\xec\xb7\xaf^ 32,.31E' -> '-4.0708336082462817829200000000000E+80' +xfmt7395 format 55674e0 '+66,.98G' -> ' +55,674' +xfmt7396 format -29635e0 '\xef\x9a\x9e=-47' -> '-\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e\xef\x9a\x9e29635' +xfmt7397 format 84973E82 '+087' -> '+00000000000000000000000000000000000000000000000000000000000000000000000000008.4973E+86' +xfmt7398 format -32508E60 '\xe5\xaa\xbb<20' -> '-3.2508E+64\xe5\xaa\xbb\xe5\xaa\xbb\xe5\xaa\xbb\xe5\xaa\xbb\xe5\xaa\xbb\xe5\xaa\xbb\xe5\xaa\xbb\xe5\xaa\xbb\xe5\xaa\xbb' +xfmt7399 format 5059698E0 '.33' -> '5059698' +xfmt7400 format -6377821E0 '+' -> '-6377821' +xfmt7401 format 5645880E62 ',' -> '5.645880E+68' +xfmt7402 format -6955863E365 '' -> '-6.955863E+371' +xfmt7403 format 61193152e0 '\xe4\xbc\x89^+32,.74%' -> '+6,119,315,200.00000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt7404 format -56208639E0 '\xe6\xab\x92>' -> '-56208639' +xfmt7405 format 94644632e42 '\xe9\xa2\xba<-.7g' -> '9.464463e+49' +xfmt7406 format -67910536E181 '\xee\xa0\x86^ 54,.74e' -> '-6.79105360000000000000000000000000000000000000000000000000000000000000000000e+188' +xfmt7407 format 2883709827404e0 '-' -> '2883709827404' +xfmt7408 format -5809071142133E0 '\xec\xb8\xbf=-18,E' -> '-5.809071142133E+12' +xfmt7409 format 4322343152451e45 '' -> '4.322343152451E+57' +xfmt7410 format -1321820194662E189 '51' -> ' -1.321820194662E+201' +xfmt7411 format 7801121364945531103806017497e0 '0,F' -> '7,801,121,364,945,531,103,806,017,497' +xfmt7412 format -5085645468102905745900286859E0 '\xed\x8f\xa6^+75.95e' -> '-5.08564546810290574590028685900000000000000000000000000000000000000000000000000000000000000000000e+27' +xfmt7413 format 4063887225830008922744665107E356 '\xe8\x8d\x94^ 52,.74g' -> '\xe8\x8d\x94\xe8\x8d\x94\xe8\x8d\x94\xe8\x8d\x94\xe8\x8d\x94\xe8\x8d\x94\xe8\x8d\x94\xe8\x8d\x94 4.063887225830008922744665107e+383\xe8\x8d\x94\xe8\x8d\x94\xe8\x8d\x94\xe8\x8d\x94\xe8\x8d\x94\xe8\x8d\x94\xe8\x8d\x94\xe8\x8d\x94\xe8\x8d\x94' +xfmt7414 format -2224344074582032675140673914e382 ' 01,%' -> '-2,224,344,074,582,032,675,140,673,914,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt7415 format 36e0 '0.87' -> '36' +xfmt7416 format -13e0 '-33,' -> ' -13' +xfmt7417 format 56E368 '' -> '5.6E+369' +xfmt7418 format -75e24 '\xeb\x92\xbe^6.76e' -> '-7.5000000000000000000000000000000000000000000000000000000000000000000000000000e+25' +xfmt7419 format 374924466156005298041966E0 '\xec\x86\xbe=,.7' -> '3.749245E+23' +xfmt7420 format -480862199913108599005089e0 '\xea\x9a\xad>-6,f' -> '-480,862,199,913,108,599,005,089' +xfmt7421 format 570971402028900598179970E342 '\xe7\x96\x83<-70,.35F' -> '570,971,402,028,900,598,179,970,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000' +xfmt7422 format -828042961598011627237459E290 ' ' -> '-8.28042961598011627237459E+313' +xfmt7423 format 671583255677278840545370893578179348053e0 '5,' -> '671,583,255,677,278,840,545,370,893,578,179,348,053' +xfmt7424 format -936702816720737588592383939438310416531e0 '071' -> '-0000000000000000000000000000000936702816720737588592383939438310416531' +xfmt7425 format 510202248939568286615990440294391351683E180 '.68' -> '5.10202248939568286615990440294391351683E+218' +xfmt7426 format -408853660809717806430170035506501159576E8 '\xe7\xb6\x9d=-,.13E' -> '-4.0885366080972E+46' +xfmt7427 format 5034500208254231828423004639221230535088E0 '\xee\xbd\xb2^12f' -> '5034500208254231828423004639221230535088' +xfmt7428 format -7848892428425226698633294105802004718660E0 '\xef\x8e\x81^+,.81G' -> '-7,848,892,428,425,226,698,633,294,105,802,004,718,660' +xfmt7429 format 8720036462156016368260286406885300949076E220 '+' -> '+8.720036462156016368260286406885300949076E+259' +xfmt7430 format -2031188702910623765616610154598470724956e225 '' -> '-2.031188702910623765616610154598470724956E+264' +xfmt7431 format 432772255833284305621746321853408e0 '.94e' -> '4.3277225583328430562174632185340800000000000000000000000000000000000000000000000000000000000000e+32' +xfmt7432 format -736933058160919088912811818376442e0 '\xe4\x8e\xbb<-25,.51e' -> '-7.369330581609190889128118183764420000000000000000000e+32' +xfmt7433 format 675016027365048274180414469006979e209 ',.48g' -> '6.75016027365048274180414469006979e+241' +xfmt7434 format -776870130482625514777090524772719e320 '+027,F' -> '-77,687,013,048,262,551,477,709,052,477,271,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt7435 format 3502065772425043873456175847367067e0 '\xe6\x85\xaa^54.82f' -> '3502065772425043873456175847367067.0000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7436 format -4100149067690110663464301370942444e0 '\xe8\x94\xa7=-97e' -> '-\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa7\xe8\x94\xa74.100149067690110663464301370942444e+33' +xfmt7437 format 3724150069410363820544840675101239E18 '\xe4\xa7\xaa=67.21%' -> '372415006941036382054484067510123900000000000000000000.000000000000000000000%' +xfmt7438 format -6800213926837416777255877000075512E110 '\xe7\x8e\x96=,' -> '-6.800213926837416777255877000075512E+143' +xfmt7439 format 4388557570890640198e0 '\xe1\xbd\x80^,' -> '4,388,557,570,890,640,198' +xfmt7440 format -9671684367280295581E0 '\xe6\x89\xbf= ,f' -> '-9,671,684,367,280,295,581' +xfmt7441 format 7555794938006169336E36 ' F' -> ' 7555794938006169336000000000000000000000000000000000000' +xfmt7442 format -1109000068161418576E78 '\xe8\xa4\x9e> 69,G' -> '\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e\xe8\xa4\x9e-1.109000068161418576E+96' +xfmt7443 format 123.1234567890123 ' 041,.44e' -> ' 1.23123456789012300000000000000000000000000000e+2' +xfmt7444 format -12.12345678901234567 '\xe4\xb7\xb5<34,.21' -> '-12.12345678901234567\xe4\xb7\xb5\xe4\xb7\xb5\xe4\xb7\xb5\xe4\xb7\xb5\xe4\xb7\xb5\xe4\xb7\xb5\xe4\xb7\xb5\xe4\xb7\xb5\xe4\xb7\xb5\xe4\xb7\xb5\xe4\xb7\xb5\xe4\xb7\xb5\xe4\xb7\xb5' +xfmt7445 format 7768817296178005402816118e0 '78,' -> ' 7,768,817,296,178,005,402,816,118' +xfmt7446 format -2242065195262772618483847E0 '' -> '-2242065195262772618483847' +xfmt7447 format 5987657806226867761852869E199 '' -> '5.987657806226867761852869E+223' +xfmt7448 format -9672721376755810960331380e122 'e' -> '-9.672721376755810960331380e+146' +xfmt7449 format 401995154515714231501307469805842871e0 '\xe7\x81\xb9>+19,.2g' -> '\xe7\x81\xb9\xe7\x81\xb9\xe7\x81\xb9\xe7\x81\xb9\xe7\x81\xb9\xe7\x81\xb9\xe7\x81\xb9\xe7\x81\xb9\xe7\x81\xb9\xe7\x81\xb9\xe7\x81\xb9+4.0e+35' +xfmt7450 format -219075521095787011804457994332077929E0 '' -> '-219075521095787011804457994332077929' +xfmt7451 format 820207029832089469336160795178131382E88 '' -> '8.20207029832089469336160795178131382E+123' +xfmt7452 format -885996351383721840703104488404293599E266 '3.47e' -> '-8.85996351383721840703104488404293599000000000000e+301' +xfmt7453 format 37E0 '\xeb\xaa\xaa= 75,e' -> ' \xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa\xeb\xaa\xaa3.7e+1' +xfmt7454 format -72e0 '\xeb\xb1\x87>' -> '-72' +xfmt7455 format 87e299 '\xe3\x9e\x96^ 85,.85%' -> ' 870,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt7456 format -92e134 '081.90g' -> '-0000000000000000000000000000000000000000000000000000000000000000000000009.2e+135' +xfmt7457 format 738239050419643746822248520984e0 '\xed\x97\x8f=+90,.17' -> '+\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f\xed\x97\x8f7.3823905041964375E+29' +xfmt7458 format -441789561492742427648913249036e0 '-' -> '-441789561492742427648913249036' +xfmt7459 format 946910745593140057782304471321e324 '-032,.77g' -> '9.46910745593140057782304471321e+353' +xfmt7460 format -950056782118403207557896450977e242 '-,g' -> '-9.50056782118403207557896450977e+271' +xfmt7461 format 6637653544757507E0 '068.4' -> '000000000000000000000000000000000000000000000000000000000006.638E+15' +xfmt7462 format -4919588293698341e0 '\xe8\xb7\xad=15' -> '-4919588293698341' +xfmt7463 format 9638128038487946E141 '\xe2\xa8\xae=18,' -> '9.638128038487946E+156' +xfmt7464 format -8890786723604475E346 '\xe5\xa8\x80=,.95' -> '-8.890786723604475E+361' +xfmt7465 format 31160086903119E0 '35,f' -> ' 31,160,086,903,119' +xfmt7466 format -54967196754500E0 '010' -> '-54967196754500' +xfmt7467 format 88864567318813e151 '' -> '8.8864567318813E+164' +xfmt7468 format -84295366785413e52 'G' -> '-8.4295366785413E+65' +xfmt7469 format 4188956763619718291261748695106520e0 '' -> '4188956763619718291261748695106520' +xfmt7470 format -4561610947936664679185821032880282e0 '39' -> ' -4561610947936664679185821032880282' +xfmt7471 format 7281170118187333591728180810788751E381 '\xec\xa1\x80=-9,G' -> '7.281170118187333591728180810788751E+414' +xfmt7472 format -8076686301478514903583715400308468e306 '0,' -> '-8.076686301478514903583715400308468E+339' +xfmt7473 format 907387698339848521311474221451385922081891e0 '\xee\xb0\xa2<' -> '907387698339848521311474221451385922081891' +xfmt7474 format -467107778386561772415523031443935910132962e0 ' 0.68G' -> '-467107778386561772415523031443935910132962' +xfmt7475 format 191394915825657631614391515494216978582798E143 ',' -> '1.91394915825657631614391515494216978582798E+184' +xfmt7476 format -827509012093636884212416109327796358260280e270 '' -> '-8.27509012093636884212416109327796358260280E+311' +xfmt7477 format 43465023988433702376466516788854783380256878e0 '\xe6\xbf\xb5<' -> '43465023988433702376466516788854783380256878' +xfmt7478 format -60903398146093827284057740878086627297064334e0 '26' -> '-60903398146093827284057740878086627297064334' +xfmt7479 format 76926513923809202977239686864082312178152451e192 '-58,.23' -> ' 7.6926513923809202977240E+235' +xfmt7480 format -49760362381796828970346165486955230512955485E81 '\xec\xb5\x8a>,' -> '-4.9760362381796828970346165486955230512955485E+124' +xfmt7481 format 513254403799492674E0 '27.96' -> ' 513254403799492674' +xfmt7482 format -966968846026482225e0 '092,e' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,009.66968846026482225e+17' +xfmt7483 format 237162200989304714e355 '\xe9\xb9\x96=-2,' -> '2.37162200989304714E+372' +xfmt7484 format -263322271847869464E341 '021.9' -> '-000002.63322272E+358' +xfmt7485 format 191572214193195E0 '' -> '191572214193195' +xfmt7486 format -549705814068463e0 '+043.91' -> '-000000000000000000000000000549705814068463' +xfmt7487 format 753302742434976e270 '\xeb\x85\xa1<' -> '7.53302742434976E+284' +xfmt7488 format -645612912317377e75 '' -> '-6.45612912317377E+89' +xfmt7489 format 946366551718984990229409675E0 '053F' -> '00000000000000000000000000946366551718984990229409675' +xfmt7490 format -855714544779864831306755279e0 '' -> '-855714544779864831306755279' +xfmt7491 format 827951222459584011807479758e157 '\xe3\x90\x93>.55G' -> '8.27951222459584011807479758E+183' +xfmt7492 format -874656664297681248918073143E65 '\xeb\x8f\x9b^+3,.27f' -> '-87,465,666,429,768,124,891,807,314,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000' +xfmt7493 format 5240836747533E0 ',%' -> '524,083,674,753,300%' +xfmt7494 format -5503262116703e0 '\xee\xa2\xb9> 72,.49%' -> '\xee\xa2\xb9-550,326,211,670,300.0000000000000000000000000000000000000000000000000%' +xfmt7495 format 1672889396400e231 '\xe2\x9c\x8c= 1,e' -> ' 1.672889396400e+243' +xfmt7496 format -8739259518523E53 '\xde\xbd>48,' -> '\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd\xde\xbd-8.739259518523E+65' +xfmt7497 format 4101723659189832496137737945E0 '\xe6\xb2\xba>-64,E' -> '\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba\xe6\xb2\xba4.101723659189832496137737945E+27' +xfmt7498 format -4810317563719592131434114860E0 ' 16,G' -> '-4,810,317,563,719,592,131,434,114,860' +xfmt7499 format 5538300816926243648295493235e346 '\xe5\xb5\xba>' -> '5.538300816926243648295493235E+373' +xfmt7500 format -7279121980517457610912131749e223 '\xe2\x9a\xa6= 30.78F' -> '-72791219805174576109121317490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7501 format 8461749153903388338E0 '\xec\x9c\xb8>54' -> '\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb8\xec\x9c\xb88461749153903388338' +xfmt7502 format -3902940142652495897E0 ',.39' -> '-3,902,940,142,652,495,897' +xfmt7503 format 8812669829875783837E122 '0%' -> '88126698298757838370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt7504 format -9292584077520477206E55 '' -> '-9.292584077520477206E+73' +xfmt7505 format 695584969919120037324974646624881205546e0 ' 090,' -> ' 0,000,000,000,000,000,000,000,000,000,695,584,969,919,120,037,324,974,646,624,881,205,546' +xfmt7506 format -931524893788117036888532248227633613642E0 '' -> '-931524893788117036888532248227633613642' +xfmt7507 format 898190489696079554418348932792702948204e308 '' -> '8.98190489696079554418348932792702948204E+346' +xfmt7508 format -389947168558944992138354740645051917647E10 '\xe0\xac\x83=-.24e' -> '-3.899471685589449921383547e+48' +xfmt7509 format 74763506773069029322419650129133019636529E0 '\xeb\xad\x92> 3,.54G' -> ' 74,763,506,773,069,029,322,419,650,129,133,019,636,529' +xfmt7510 format -56834568807076128201174139962518518611864e0 '45,' -> '-56,834,568,807,076,128,201,174,139,962,518,518,611,864' +xfmt7511 format 27203005119424360407461066843618823069471e14 '\xe2\x9a\xa7=-50.25e' -> '\xe2\x9a\xa7\xe2\x9a\xa7\xe2\x9a\xa7\xe2\x9a\xa7\xe2\x9a\xa7\xe2\x9a\xa7\xe2\x9a\xa7\xe2\x9a\xa7\xe2\x9a\xa7\xe2\x9a\xa7\xe2\x9a\xa7\xe2\x9a\xa7\xe2\x9a\xa7\xe2\x9a\xa7\xe2\x9a\xa7\xe2\x9a\xa7\xe2\x9a\xa7\xe2\x9a\xa7\xe2\x9a\xa72.7203005119424360407461067e+54' +xfmt7512 format -69735691206671079244533753603615439380273E133 '\xe3\xa3\x82>-28,.31F' -> '-697,356,912,066,710,792,445,337,536,036,154,393,802,730,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000' +xfmt7513 format 85858E0 '+51e' -> ' +8.5858e+4' +xfmt7514 format -96335E0 '' -> '-96335' +xfmt7515 format 23546e321 '\xee\x84\xb1=22' -> '\xee\x84\xb1\xee\x84\xb1\xee\x84\xb1\xee\x84\xb1\xee\x84\xb1\xee\x84\xb1\xee\x84\xb1\xee\x84\xb1\xee\x84\xb1\xee\x84\xb1\xee\x84\xb12.3546E+325' +xfmt7516 format -82318e80 '\xe1\x96\x94= 92,.73g' -> '-\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x94\xe1\x96\x948.2318e+84' +xfmt7517 format 970635935866E0 '\xec\x84\x93^ ' -> ' 970635935866' +xfmt7518 format -383100343961E0 '\xe4\x8d\x96^ 73,.41E' -> '\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96-3.83100343961000000000000000000000000000000E+11\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96\xe4\x8d\x96' +xfmt7519 format 341840328672e131 '026' -> '000000003.41840328672E+142' +xfmt7520 format -614848667727E60 '-.97f' -> '-614848667727000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7521 format 1774820776141762929760673861493054825083343e0 '\xe2\x95\xb5^36.65' -> '1774820776141762929760673861493054825083343' +xfmt7522 format -5637279419712027380160950234403083427118487E0 '\xeb\xb5\x9f>.38' -> '-5.6372794197120273801609502344030834271E+42' +xfmt7523 format 8490241757038065579575538064611990385562605E3 '073' -> '00000000000000000000000008.490241757038065579575538064611990385562605E+45' +xfmt7524 format -4762333245745751690120576145660185310093144e105 '' -> '-4.762333245745751690120576145660185310093144E+147' +xfmt7525 format 7069652108326798739887795654453685523400E0 '' -> '7069652108326798739887795654453685523400' +xfmt7526 format -4901876855446822416766647953590604677648E0 '' -> '-4901876855446822416766647953590604677648' +xfmt7527 format 5123656152026722498965346088862695194418E38 '\xeb\x93\xab= ,.74' -> ' 5.123656152026722498965346088862695194418E+77' +xfmt7528 format -9829293230692715530572125619695195779002e362 '31,f' -> '-982,929,323,069,271,553,057,212,561,969,519,577,900,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt7529 format 4971429014148589743994E0 '\xe0\xa8\xa0^ 51.31' -> '\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0 4971429014148589743994\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0\xe0\xa8\xa0' +xfmt7530 format -9490906490547938956991e0 '\xe1\x8b\xba=-96.83F' -> '-9490906490547938956991.00000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7531 format 1979088573112911814151E232 '\xe8\x8e\xb6=-36,g' -> '\xe8\x8e\xb6\xe8\x8e\xb6\xe8\x8e\xb6\xe8\x8e\xb6\xe8\x8e\xb6\xe8\x8e\xb6\xe8\x8e\xb6\xe8\x8e\xb61.979088573112911814151e+253' +xfmt7532 format -6994916083860337099034e167 '\xe4\xbc\xb1<+5,.93E' -> '-6.994916083860337099034000000000000000000000000000000000000000000000000000000000000000000000000E+188' +xfmt7533 format 78052623491782490e0 '\xdd\x87^.56' -> '78052623491782490' +xfmt7534 format -19625108372154472e0 '69,' -> ' -19,625,108,372,154,472' +xfmt7535 format 53807175238036000e30 '' -> '5.3807175238036000E+46' +xfmt7536 format -60772920729892736E224 '040,' -> '-0,000,000,000,006.0772920729892736E+240' +xfmt7537 format 4854490486437038495471014295653980904e0 '' -> '4854490486437038495471014295653980904' +xfmt7538 format -5748429830379517063236285084488052281E0 '' -> '-5748429830379517063236285084488052281' +xfmt7539 format 5918226125533559156316197592441133729e52 '\xe1\x8a\x9b^ 36,.92g' -> ' 5.918226125533559156316197592441133729e+88' +xfmt7540 format -2474447328483157933063307366954942471e104 '\xe2\x98\x97^ 75,.95F' -> '-247,444,732,848,315,793,306,330,736,695,494,247,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7541 format 14008198773e0 '.97' -> '14008198773' +xfmt7542 format -27169710910e0 ' ,.22F' -> '-27,169,710,910.0000000000000000000000' +xfmt7543 format 76092649964E60 '73,%' -> '7,609,264,996,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt7544 format -30773524110E74 '+057,.78E' -> '-3.077352411000000000000000000000000000000000000000000000000000000000000000000000E+84' +xfmt7545 format 291135529e0 '\xcf\xaa>,' -> '291,135,529' +xfmt7546 format -141999487E0 ' ' -> '-141999487' +xfmt7547 format 333227732E16 ' 10,' -> ' 3.33227732E+24' +xfmt7548 format -430907905e237 '\xe6\xb6\xba>+,.18' -> '-4.30907905E+245' +xfmt7549 format 27134797105783577805005688045125089E0 '' -> '27134797105783577805005688045125089' +xfmt7550 format -44501672413995121543097188055435189e0 '' -> '-44501672413995121543097188055435189' +xfmt7551 format 35678766316531650815692010033711870e46 '\xe1\xa5\xa2>-90.44%' -> '35678766316531650815692010033711870000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000%' +xfmt7552 format -46054146160596087811903113018642775e188 '' -> '-4.6054146160596087811903113018642775E+222' +xfmt7553 format 88661556962937043217161310516393E0 '' -> '88661556962937043217161310516393' +xfmt7554 format -67985989505680081894161324381866e0 '\xe1\xab\xad^+G' -> '-67985989505680081894161324381866' +xfmt7555 format 24787165820150661263744039277757E362 '\xe1\x87\x91^ 44,.69g' -> '\xe1\x87\x91\xe1\x87\x91 2.4787165820150661263744039277757e+393\xe1\x87\x91\xe1\x87\x91\xe1\x87\x91' +xfmt7556 format -20605026115132613016724997071723e81 '\xe7\xb0\x86=+20,%' -> '-2,060,502,611,513,261,301,672,499,707,172,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt7557 format 21884630069779672034423445676798014666e0 '' -> '21884630069779672034423445676798014666' +xfmt7558 format -12588252999479424578262727640460609616e0 '\xe7\x83\xab=-,.22g' -> '-1.258825299947942457826e+37' +xfmt7559 format 83890004529454742286321458535084882097E296 '\xe4\xaf\xbe=+43,.13E' -> '+\xe4\xaf\xbe\xe4\xaf\xbe\xe4\xaf\xbe\xe4\xaf\xbe\xe4\xaf\xbe\xe4\xaf\xbe\xe4\xaf\xbe\xe4\xaf\xbe\xe4\xaf\xbe\xe4\xaf\xbe\xe4\xaf\xbe\xe4\xaf\xbe\xe4\xaf\xbe\xe4\xaf\xbe\xe4\xaf\xbe\xe4\xaf\xbe\xe4\xaf\xbe\xe4\xaf\xbe\xe4\xaf\xbe\xe4\xaf\xbe\xe4\xaf\xbe\xe4\xaf\xbe8.3890004529455E+333' +xfmt7560 format -24886064841803675055712179771015103864e350 '' -> '-2.4886064841803675055712179771015103864E+387' +xfmt7561 format 6739e0 '%' -> '673900%' +xfmt7562 format -2109E0 '\xed\x89\xaa<,' -> '-2,109' +xfmt7563 format 9999E131 '\xee\x9c\x87^ ,.53G' -> ' 9.999E+134' +xfmt7564 format -4950e73 '\xe5\x97\xad=-12,.2%' -> '-4,950,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00%' +xfmt7565 format 1234567.123456789012345 '.69' -> '1234567.123456789012345' +xfmt7566 format -12345678901234567.1 '\xea\xa4\xa7^ 7,.57G' -> '-12,345,678,901,234,567.1' +xfmt7567 format 41366736616439473257595247805995501895263e0 '\xe2\x89\x94^ 36,.5g' -> '\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94 4.1367e+40\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94\xe2\x89\x94' +xfmt7568 format -62246564526289261047579864352246000420203E0 '\xe4\x9e\x92>90,' -> '\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92\xe4\x9e\x92-62,246,564,526,289,261,047,579,864,352,246,000,420,203' +xfmt7569 format 14323339526058119817137671990817355166940e77 '' -> '1.4323339526058119817137671990817355166940E+117' +xfmt7570 format -13722051435250737764728134369528897371203e342 '\xe9\x8c\xa7^+38' -> '-1.3722051435250737764728134369528897371203E+382' +xfmt7571 format 83084e0 '\xea\x95\xb0< 38,E' -> ' 8.3084E+4\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0\xea\x95\xb0' +xfmt7572 format -34975e0 '\xed\x88\xb6^65,G' -> '\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6-34,975\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6\xed\x88\xb6' +xfmt7573 format 18354E379 '\xec\x8d\x84>+48.90' -> '\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84\xec\x8d\x84+1.8354E+383' +xfmt7574 format -66065E105 ' 035,.62e' -> '-6.60650000000000000000000000000000000000000000000000000000000000e+109' +xfmt7575 format 6971283586208507504367879235347994623e0 '\xcd\xa9>+.30' -> '+6.97128358620850750436787923535E+36' +xfmt7576 format -9740404693305246429555631504027820494E0 '+.97e' -> '-9.7404046933052464295556315040278204940000000000000000000000000000000000000000000000000000000000000e+36' +xfmt7577 format 8500504400016651220615565385336828359E44 '\xe6\xab\xa3^-46,.3F' -> '850,050,440,001,665,122,061,556,538,533,682,835,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000' +xfmt7578 format -7800337068737368541422116638058986522e255 '\xe4\xb9\xb2> 13,.75e' -> '-7.800337068737368541422116638058986522000000000000000000000000000000000000000e+291' +xfmt7579 format 99644004705667625744240676832e0 '' -> '99644004705667625744240676832' +xfmt7580 format -42213332712979389577232431446E0 '+095E' -> '-0000000000000000000000000000000000000000000000000000000000004.2213332712979389577232431446E+28' +xfmt7581 format 12505977211229903525598321060e69 '\xea\xbd\x8a^+64,.82g' -> '\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a+1.2505977211229903525598321060e+97\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a\xea\xbd\x8a' +xfmt7582 format -81195664066574110793697216859E299 ' 0.41g' -> '-8.1195664066574110793697216859e+327' +xfmt7583 format 43649472383963e0 '\xe1\x8f\xb7<-,.34' -> '43,649,472,383,963' +xfmt7584 format -21568146615176E0 '+0,.85f' -> '-21,568,146,615,176.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7585 format 87731871847447E350 '0,.4%' -> '877,318,718,474,470,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000%' +xfmt7586 format -35296963498699e142 '' -> '-3.5296963498699E+155' +xfmt7587 format 6475665554E0 '\xee\x94\xa8=' -> '6475665554' +xfmt7588 format -7898209837e0 '' -> '-7898209837' +xfmt7589 format 9766041644e231 '\xe3\x9d\xa5> ,.46F' -> ' 9,766,041,644,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000' +xfmt7590 format -2433133315e1 '\xe3\xa5\xa1=-52,.23' -> '-\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa1\xe3\xa5\xa12.433133315E+10' +xfmt7591 format 3e0 '.64' -> '3' +xfmt7592 format -2E0 '\xed\x8c\x85<-14.91n' -> '-2\xed\x8c\x85\xed\x8c\x85\xed\x8c\x85\xed\x8c\x85\xed\x8c\x85\xed\x8c\x85\xed\x8c\x85\xed\x8c\x85\xed\x8c\x85\xed\x8c\x85\xed\x8c\x85\xed\x8c\x85' +xfmt7593 format 1E368 ' 0,.42' -> ' 1E+368' +xfmt7594 format -5E158 '+092,.26' -> '-00,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,005E+158' +xfmt7595 format 31861771740766725594916e0 '\xeb\xbd\x8d>G' -> '31861771740766725594916' +xfmt7596 format -11568078210643078213030e0 '\xea\x95\xb6^-28,.70e' -> '-1.1568078210643078213030000000000000000000000000000000000000000000000000e+22' +xfmt7597 format 31619826837186684478232e271 '' -> '3.1619826837186684478232E+293' +xfmt7598 format -23606323313521907562913E201 '\xec\x8f\x95>+91.25' -> '\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95\xec\x8f\x95-2.3606323313521907562913E+223' +xfmt7599 format 209785947183265762771090517135012773630E0 '0,.6' -> '2.09786E+38' +xfmt7600 format -679741687422762484124077957524701975448E0 '\xe6\x9a\xab=56e' -> '-\xe6\x9a\xab\xe6\x9a\xab\xe6\x9a\xab\xe6\x9a\xab\xe6\x9a\xab\xe6\x9a\xab\xe6\x9a\xab\xe6\x9a\xab\xe6\x9a\xab\xe6\x9a\xab\xe6\x9a\xab6.79741687422762484124077957524701975448e+38' +xfmt7601 format 445874060531347243834179829151561506680e197 '.83' -> '4.45874060531347243834179829151561506680E+235' +xfmt7602 format -462104893115928567912626100486889207523e151 '37,' -> '-4.62104893115928567912626100486889207523E+189' +xfmt7603 format 9793E0 '\xe9\xa8\xa4<+27.34G' -> '+9793\xe9\xa8\xa4\xe9\xa8\xa4\xe9\xa8\xa4\xe9\xa8\xa4\xe9\xa8\xa4\xe9\xa8\xa4\xe9\xa8\xa4\xe9\xa8\xa4\xe9\xa8\xa4\xe9\xa8\xa4\xe9\xa8\xa4\xe9\xa8\xa4\xe9\xa8\xa4\xe9\xa8\xa4\xe9\xa8\xa4\xe9\xa8\xa4\xe9\xa8\xa4\xe9\xa8\xa4\xe9\xa8\xa4\xe9\xa8\xa4\xe9\xa8\xa4\xe9\xa8\xa4' +xfmt7604 format -2066E0 '\xe3\xba\x8e>-98.43%' -> '\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e\xe3\xba\x8e-206600.0000000000000000000000000000000000000000000%' +xfmt7605 format 8397e32 '\xeb\xae\xad^-67,' -> '\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad8.397E+35\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad\xeb\xae\xad' +xfmt7606 format -6949e80 '0f' -> '-694900000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7607 format 65489444674568905195294419e0 '+0,.63' -> '+65,489,444,674,568,905,195,294,419' +xfmt7608 format -45183439791272990801636419E0 ' 0' -> '-45183439791272990801636419' +xfmt7609 format 75890710215892977756058546e292 'E' -> '7.5890710215892977756058546E+317' +xfmt7610 format -80210424169166224429803777E143 '\xe4\x91\x84^+15,.15' -> '-8.02104241691662E+168' +xfmt7611 format 71249168E0 '' -> '71249168' +xfmt7612 format -29701882e0 '' -> '-29701882' +xfmt7613 format 82703791E300 '\xe4\xac\x97>f' -> '82703791000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7614 format -89841493E72 '\xe7\x9a\xb5=+6,' -> '-8.9841493E+79' +xfmt7615 format 572384E0 ' 037g' -> ' 000000000000000000000000000000572384' +xfmt7616 format -997706e0 '\xe4\x9c\x89<,' -> '-997,706' +xfmt7617 format 288408E67 '0,.18g' -> '2.88408e+72' +xfmt7618 format -437298E312 '+080,.63E' -> '-00,000,004.372980000000000000000000000000000000000000000000000000000000000E+317' +xfmt7619 format 8725895833386573760323095652E0 '-75.44n' -> ' 8725895833386573760323095652' +xfmt7620 format -6768268772292009169282323034E0 '\xe7\x8f\xb8>+71,.93G' -> '\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8\xe7\x8f\xb8-6,768,268,772,292,009,169,282,323,034' +xfmt7621 format 2299080483316534816956372613E32 '' -> '2.299080483316534816956372613E+59' +xfmt7622 format -7466530383072683309647437487e273 '\xe6\x83\xad<,' -> '-7.466530383072683309647437487E+300' +xfmt7623 format 671e0 '\xe3\x89\xb7> 48,.55%' -> ' 67,100.0000000000000000000000000000000000000000000000000000000%' +xfmt7624 format -370E0 '\xef\x90\x92>-62,%' -> '\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92\xef\x90\x92-37,000%' +xfmt7625 format 802E253 '-013,.3%' -> '802,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000%' +xfmt7626 format -947e309 '\xe9\x99\x8e> 77.28n' -> '\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e\xe9\x99\x8e-9.47e+311' +xfmt7627 format 239567068124330767744E0 '\xea\xb9\xa6=27,.80e' -> '2.39567068124330767744000000000000000000000000000000000000000000000000000000000000e+20' +xfmt7628 format -111528986134587804960E0 '\xe9\xbb\xac=+79,F' -> '-\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac\xe9\xbb\xac111,528,986,134,587,804,960' +xfmt7629 format 360134124681693804152e187 '\xe8\xa8\xab>+87,.22' -> '\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab\xe8\xa8\xab+3.60134124681693804152E+207' +xfmt7630 format -250682726929374023203E48 '45' -> ' -2.50682726929374023203E+68' +xfmt7631 format 586396857857456656534367189481307869232344e0 '\xe4\x84\x81^,.9G' -> '5.86396858E+41' +xfmt7632 format -284260702752921875191966068748078817897609E0 '\xe2\xbf\x9c<+,.29' -> '-2.8426070275292187519196606875E+41' +xfmt7633 format 529851443094156077129903804739140098331756E172 '76' -> ' 5.29851443094156077129903804739140098331756E+213' +xfmt7634 format -518047908830606621579660163945830198508787e257 '+050F' -> '-51804790883060662157966016394583019850878700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7635 format 579900698151E0 '\xec\xa9\xb2= ,.64' -> ' 579,900,698,151' +xfmt7636 format -806089249644E0 '.96n' -> '-806089249644' +xfmt7637 format 723558240587E239 '\xe2\x88\xa1<-F' -> '72355824058700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7638 format -216031769275E138 '-020,.83' -> '-02.16031769275E+149' +xfmt7639 format 3659852104119586227638298166949422687125782e0 '\xe6\x92\x87=.89f' -> '3659852104119586227638298166949422687125782.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7640 format -5778444287491485122752627517491990680946217e0 ' 88,' -> ' -5,778,444,287,491,485,122,752,627,517,491,990,680,946,217' +xfmt7641 format 7412662416455854472094170811803056969916586E11 '' -> '7.412662416455854472094170811803056969916586E+53' +xfmt7642 format -8802151744671169995082304856552421671417774e26 '\xe8\x8b\x93>-36,.77g' -> '-8.802151744671169995082304856552421671417774e+68' +xfmt7643 format 40447162292051719552840253691962915e0 '\xea\x92\xb2^-41,.66E' -> '4.044716229205171955284025369196291500000000000000000000000000000000E+34' +xfmt7644 format -93547417197032024710359508885757968e0 '\xe9\x8a\xa7^80%' -> '\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7-9354741719703202471035950888575796800%\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7\xe9\x8a\xa7' +xfmt7645 format 59155390201413343536912447033801584e324 '-G' -> '5.9155390201413343536912447033801584E+358' +xfmt7646 format -43953295853068458618439832566540233e344 '' -> '-4.3953295853068458618439832566540233E+378' +xfmt7647 format 28484414218595946e0 '+04.92e' -> '+2.84844142185959460000000000000000000000000000000000000000000000000000000000000000000000000000e+16' +xfmt7648 format -37508391181442387e0 '\xe5\xaf\x9b=-49,.19F' -> '-\xe5\xaf\x9b\xe5\xaf\x9b\xe5\xaf\x9b\xe5\xaf\x9b\xe5\xaf\x9b\xe5\xaf\x9b37,508,391,181,442,387.0000000000000000000' +xfmt7649 format 22856689092460035e207 '+045,.93E' -> '+2.285668909246003500000000000000000000000000000000000000000000000000000000000000000000000000000E+223' +xfmt7650 format -80459014000311867e24 ' 075,.74F' -> '-80,459,014,000,311,867,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7651 format 5625701851916413239E0 '-f' -> '5625701851916413239' +xfmt7652 format -7907595488220233486e0 '.95' -> '-7907595488220233486' +xfmt7653 format 3090146523439859188E291 '\xef\x86\x9b>75f' -> '3090146523439859188000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7654 format -5098197424131676654e127 '-' -> '-5.098197424131676654E+145' +xfmt7655 format 4341443578060E0 '0' -> '4341443578060' +xfmt7656 format -5632647390987E0 '66' -> ' -5632647390987' +xfmt7657 format 7078439519529e107 '\xe9\xb8\xbf<-,.61E' -> '7.0784395195290000000000000000000000000000000000000000000000000E+119' +xfmt7658 format -7868386827619E90 '\xe5\xbf\x99^ 56,.43%' -> '-786,838,682,761,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000%' +xfmt7659 format 48973460287186658470629885172881972954e0 '\xe4\x98\xa3=17,.90E' -> '4.897346028718665847062988517288197295400000000000000000000000000000000000000000000000000000E+37' +xfmt7660 format -11687961604431511010356487848168509603E0 '+0' -> '-11687961604431511010356487848168509603' +xfmt7661 format 85287255490422689179915836160617636514e271 '\xe5\x83\xaa^-82,.40F' -> '852,872,554,904,226,891,799,158,361,606,176,365,140,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000' +xfmt7662 format -44251714221622654482139883394779345022e363 '\xe9\x91\x96= 41.13F' -> '-44251714221622654482139883394779345022000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000' +xfmt7663 format 4639619269763718828600e0 '\xeb\x8e\x98^-99,.92E' -> '4.63961926976371882860000000000000000000000000000000000000000000000000000000000000000000000000E+21\xeb\x8e\x98' +xfmt7664 format -7310042981086592600118E0 '0,F' -> '-7,310,042,981,086,592,600,118' +xfmt7665 format 6322288956202626208162E102 '\xec\xbb\xb3^-F' -> '6322288956202626208162000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7666 format -2398818519325271850894e129 ',' -> '-2.398818519325271850894E+150' +xfmt7667 format 81082246647e0 '\xe5\x93\x97^' -> '81082246647' +xfmt7668 format -15219134518E0 '\xe6\x9a\xb2<+86' -> '-15219134518\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2\xe6\x9a\xb2' +xfmt7669 format 26627699035e323 '' -> '2.6627699035E+333' +xfmt7670 format -19098509525E356 '71' -> ' -1.9098509525E+366' +xfmt7671 format 9805430648103454603128056e0 '\xe7\x97\x9d< 70,.38e' -> ' 9.80543064810345460312805600000000000000e+24\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d\xe7\x97\x9d' +xfmt7672 format -6932450884159013335391411e0 '+038,.5' -> '-0,000,000,000,000,000,000,006.9325E+24' +xfmt7673 format 3757132265418354215290668E5 ',E' -> '3.757132265418354215290668E+29' +xfmt7674 format -1011510660067891003382497e88 '\xe2\x99\xaf=-15' -> '-1.011510660067891003382497E+112' +xfmt7675 format 13424078804636212758954414490917217602693457e0 '\xe2\x8b\xba=82,.68f' -> '13,424,078,804,636,212,758,954,414,490,917,217,602,693,457.00000000000000000000000000000000000000000000000000000000000000000000' +xfmt7676 format -65001395686083238724596418683445160557000890E0 '\xec\xa5\xbb=88,g' -> '-\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb\xec\xa5\xbb65,001,395,686,083,238,724,596,418,683,445,160,557,000,890' +xfmt7677 format 85799046919265960621188966758968991004005464E373 '-E' -> '8.5799046919265960621188966758968991004005464E+416' +xfmt7678 format -92717571311784931131704464805778703694114357E179 'F' -> '-9271757131178493113170446480577870369411435700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7679 format 655898857351980759303290E0 '-34,' -> ' 655,898,857,351,980,759,303,290' +xfmt7680 format -521224886942665489900719E0 '\xe7\x86\x9e^-96,.72f' -> '-521,224,886,942,665,489,900,719.000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7681 format 659111444545715788385835e118 '' -> '6.59111444545715788385835E+141' +xfmt7682 format -167134351747690093360033e182 '\xe5\xaa\x82^49,.3' -> '\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82-1.67E+205\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82\xe5\xaa\x82' +xfmt7683 format 907287214062367149443667104E0 '\xe5\x8f\xbe> 85.59e' -> '\xe5\x8f\xbe\xe5\x8f\xbe\xe5\x8f\xbe\xe5\x8f\xbe\xe5\x8f\xbe\xe5\x8f\xbe\xe5\x8f\xbe\xe5\x8f\xbe\xe5\x8f\xbe\xe5\x8f\xbe\xe5\x8f\xbe\xe5\x8f\xbe\xe5\x8f\xbe\xe5\x8f\xbe\xe5\x8f\xbe\xe5\x8f\xbe\xe5\x8f\xbe\xe5\x8f\xbe\xe5\x8f\xbe 9.07287214062367149443667104000000000000000000000000000000000e+26' +xfmt7684 format -200202240422901148978393183E0 ' 092g' -> '-0000000000000000000000000000000000000000000000000000000000000000200202240422901148978393183' +xfmt7685 format 563352573668833906461322279E200 '0F' -> '56335257366883390646132227900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7686 format -473223047910619857039101548e70 '.9' -> '-4.73223048E+96' +xfmt7687 format 123456789012345678901.1 '\xef\x99\x9b=47,' -> '\xef\x99\x9b\xef\x99\x9b\xef\x99\x9b\xef\x99\x9b\xef\x99\x9b\xef\x99\x9b\xef\x99\x9b\xef\x99\x9b\xef\x99\x9b\xef\x99\x9b\xef\x99\x9b\xef\x99\x9b\xef\x99\x9b\xef\x99\x9b\xef\x99\x9b\xef\x99\x9b\xef\x99\x9b\xef\x99\x9b123,456,789,012,345,678,901.1' +xfmt7688 format -1234.123456789012345678901 '\xef\xb8\xbe^+73,.49%' -> '\xef\xb8\xbe\xef\xb8\xbe\xef\xb8\xbe\xef\xb8\xbe\xef\xb8\xbe\xef\xb8\xbe\xef\xb8\xbe-123,412.3456789012345678901000000000000000000000000000000%\xef\xb8\xbe\xef\xb8\xbe\xef\xb8\xbe\xef\xb8\xbe\xef\xb8\xbe\xef\xb8\xbe\xef\xb8\xbe' +xfmt7689 format 64061672281710297640549430715108769e0 '+9' -> '+64061672281710297640549430715108769' +xfmt7690 format -85429437539508488240074211492993364E0 '\xe7\xb7\x83<-97.82F' -> '-85429437539508488240074211492993364.0000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7691 format 39584912883219303680423028745761367e320 '-0,.82F' -> '3,958,491,288,321,930,368,042,302,874,576,136,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7692 format -36019254207433508586745356460897168E178 '-21' -> '-3.6019254207433508586745356460897168E+212' +xfmt7693 format 28465928578e0 '\xe1\x88\x91=-18,.48g' -> '\xe1\x88\x91\xe1\x88\x91\xe1\x88\x91\xe1\x88\x9128,465,928,578' +xfmt7694 format -99848397281E0 '\xef\x8f\xbb=-' -> '-99848397281' +xfmt7695 format 82739135501E315 '\xe8\xbd\xa2= 18.75g' -> ' 8.2739135501e+325' +xfmt7696 format -15470686364E349 '\xeb\xb7\x81^85,.6E' -> '\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81-1.547069E+359\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81\xeb\xb7\x81' +xfmt7697 format 4E0 '\xeb\x95\x85<8,.61f' -> '4.0000000000000000000000000000000000000000000000000000000000000' +xfmt7698 format -8e0 '\xe8\xae\xa8<28G' -> '-8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8\xe8\xae\xa8' +xfmt7699 format 9E239 '\xe3\x80\x9f=.83E' -> '9.00000000000000000000000000000000000000000000000000000000000000000000000000000000000E+239' +xfmt7700 format -3e162 '\xe5\xad\x98<,.29E' -> '-3.00000000000000000000000000000E+162' +xfmt7701 format 634964546868571346259367161E0 '\xec\x88\x93>,F' -> '634,964,546,868,571,346,259,367,161' +xfmt7702 format -600664602096383495961759551e0 '013' -> '-600664602096383495961759551' +xfmt7703 format 344216002154401889128320321e257 '\xe3\x88\x87=80e' -> '\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x87\xe3\x88\x873.44216002154401889128320321e+283' +xfmt7704 format -260825368446983862039384015e35 '\xe6\x84\xb1<,.69' -> '-2.60825368446983862039384015E+61' +xfmt7705 format 236890483991E0 '' -> '236890483991' +xfmt7706 format -903190149398e0 '\xe9\xb4\x94>68,.19F' -> '\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94\xe9\xb4\x94-903,190,149,398.0000000000000000000' +xfmt7707 format 575924556842e322 '' -> '5.75924556842E+333' +xfmt7708 format -303929528036e239 '72.4n' -> ' -3.039e+250' +xfmt7709 format 7981384701438054933147720778112240992e0 '\xe5\xa0\x9c^94E' -> '\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c7.981384701438054933147720778112240992E+36\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c\xe5\xa0\x9c' +xfmt7710 format -3356788202765500201707421249763050026E0 '' -> '-3356788202765500201707421249763050026' +xfmt7711 format 6108106311290412210936049889261445753e29 '\xe2\xab\xb0=34' -> '6.108106311290412210936049889261445753E+65' +xfmt7712 format -1410348428159015600297332583473944556E57 '' -> '-1.410348428159015600297332583473944556E+93' +xfmt7713 format 197781448609766e0 '058.42' -> '0000000000000000000000000000000000000000000197781448609766' +xfmt7714 format -179417901236588E0 '' -> '-179417901236588' +xfmt7715 format 960964578921761e170 '\xef\x8c\xbd=+54,.26E' -> '+\xef\x8c\xbd\xef\x8c\xbd\xef\x8c\xbd\xef\x8c\xbd\xef\x8c\xbd\xef\x8c\xbd\xef\x8c\xbd\xef\x8c\xbd\xef\x8c\xbd\xef\x8c\xbd\xef\x8c\xbd\xef\x8c\xbd\xef\x8c\xbd\xef\x8c\xbd\xef\x8c\xbd\xef\x8c\xbd\xef\x8c\xbd\xef\x8c\xbd\xef\x8c\xbd\xef\x8c\xbd9.60964578921761000000000000E+184' +xfmt7716 format -945981744068447e104 '4.85' -> '-9.45981744068447E+118' +xfmt7717 format 10883390136789418979e0 ' 087.29' -> ' 00000000000000000000000000000000000000000000000000000000000000000010883390136789418979' +xfmt7718 format -24501367766486976725e0 '\xec\xbd\x8f=+,.28%' -> '-2,450,136,776,648,697,672,500.0000000000000000000000000000%' +xfmt7719 format 14058825380093378882e147 '\xe9\x82\xac=g' -> '1.4058825380093378882e+166' +xfmt7720 format -55651172271630153460e175 '8.65g' -> '-5.5651172271630153460e+194' +xfmt7721 format 879100482295884004069067e0 '' -> '879100482295884004069067' +xfmt7722 format -943825270142370161485107E0 '\xe7\x80\xa7<67,.74%' -> '-94,382,527,014,237,016,148,510,700.00000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt7723 format 970469115003880819949920E354 '0,.63' -> '9.70469115003880819949920E+377' +xfmt7724 format -547944081725567594986126e149 '0,%' -> '-5,479,440,817,255,675,949,861,260,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt7725 format 326425031705103304625031257330524456474405E0 '\xe8\xbd\x88<-95.56f' -> '326425031705103304625031257330524456474405.00000000000000000000000000000000000000000000000000000000' +xfmt7726 format -553539662781503257648691142198930482318128E0 'e' -> '-5.53539662781503257648691142198930482318128e+41' +xfmt7727 format 751932944942667732865129051079908459841443E362 'E' -> '7.51932944942667732865129051079908459841443E+403' +xfmt7728 format -997817831952495863133691126259328939150469E147 ' ' -> '-9.97817831952495863133691126259328939150469E+188' +xfmt7729 format 39025106887399312260104433473329621960841e0 ' ' -> ' 39025106887399312260104433473329621960841' +xfmt7730 format -85627550466914667380504376223893152857868E0 '+57,.72E' -> '-8.562755046691466738050437622389315285786800000000000000000000000000000000E+40' +xfmt7731 format 12038322706495068125850064696657326476514E256 '\xe2\x98\x90>-81,.87g' -> '\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x90\xe2\x98\x901.2038322706495068125850064696657326476514e+296' +xfmt7732 format -87757959389402695394713422232309753586526e242 '.94' -> '-8.7757959389402695394713422232309753586526E+282' +xfmt7733 format 4630E0 '\xe4\xa8\xad^+99.31f' -> '\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad+4630.0000000000000000000000000000000\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad\xe4\xa8\xad' +xfmt7734 format -3611E0 '\xec\x81\xbe=+,.92%' -> '-361,100.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt7735 format 3002e249 '+.27' -> '+3.002E+252' +xfmt7736 format -2714e67 '\xec\xb7\xbd^-39,.3G' -> '\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd-2.71E+70\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd\xec\xb7\xbd' +xfmt7737 format 918860238977638321E0 '\xe3\x93\xae<-21,.30' -> '918,860,238,977,638,321' +xfmt7738 format -425490677095302440E0 '\xea\xb0\xac>-50n' -> '\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac\xea\xb0\xac-425490677095302440' +xfmt7739 format 937992430844496920e259 '.24' -> '9.37992430844496920E+276' +xfmt7740 format -891307938421044697E320 '\xee\xb4\x82>+88,.23G' -> '\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82\xee\xb4\x82-8.91307938421044697E+337' +xfmt7741 format 5892938886712612e0 '\xe6\x8e\xb5^99,.58G' -> '\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb55,892,938,886,712,612\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5\xe6\x8e\xb5' +xfmt7742 format -3649137371024734E0 '' -> '-3649137371024734' +xfmt7743 format 4861056835513266E307 '\xe6\x81\xb7^+90.31g' -> '\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7+4.861056835513266e+322\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7\xe6\x81\xb7' +xfmt7744 format -1270380028064356e280 '071.41F' -> '-12703800280643560000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000' +xfmt7745 format 9688293969430091421576540339844097e0 '+09,E' -> '+9.688293969430091421576540339844097E+33' +xfmt7746 format -6747803098479054673810027431678130E0 '\xe5\xbb\x99< 14,.71E' -> '-6.74780309847905467381002743167813000000000000000000000000000000000000000E+33' +xfmt7747 format 6888585298893690120234609502680591e3 '' -> '6.888585298893690120234609502680591E+36' +xfmt7748 format -7125852385354077889963440251838997E263 '\xd3\xb9> 54G' -> '\xd3\xb9\xd3\xb9\xd3\xb9\xd3\xb9\xd3\xb9\xd3\xb9\xd3\xb9\xd3\xb9\xd3\xb9\xd3\xb9\xd3\xb9\xd3\xb9\xd3\xb9-7.125852385354077889963440251838997E+296' +xfmt7749 format 0E0 '' -> '0' +xfmt7750 format 0e0 '\xe4\xb5\xab^-,e' -> '0e+0' +xfmt7751 format 0e257 '0.25' -> '0E+257' +xfmt7752 format 0e284 '\xee\x84\x9e>+9,e' -> '\xee\x84\x9e\xee\x84\x9e+0e+284' +xfmt7753 format 9581313757894E0 '\xe4\x88\x80<+,G' -> '+9,581,313,757,894' +xfmt7754 format -8391290574137e0 '\xe7\x88\xae=9n' -> '-8391290574137' +xfmt7755 format 2763791246706e56 '\xef\xa2\xaa<+,.94' -> '+2.763791246706E+68' +xfmt7756 format -2642813594960E333 '\xea\x8c\x84^ 26,.77g' -> '\xea\x8c\x84\xea\x8c\x84\xea\x8c\x84-2.642813594960e+345\xea\x8c\x84\xea\x8c\x84\xea\x8c\x84' +xfmt7757 format 87030419778107207559101791485297959179612106e0 '+29,.86F' -> '+87,030,419,778,107,207,559,101,791,485,297,959,179,612,106.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7758 format -79718946021403700117743709289752480760752943E0 '' -> '-79718946021403700117743709289752480760752943' +xfmt7759 format 71258268479058060572736004628259336154768158E58 '91,F' -> '712,582,684,790,580,605,727,360,046,282,593,361,547,681,580,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt7760 format -10966697747404905634561293250871131430101417E126 '0' -> '-1.0966697747404905634561293250871131430101417E+169' +xfmt7761 format 167163231302782503971563389994566E0 ' 0,%' -> ' 16,716,323,130,278,250,397,156,338,999,456,600%' +xfmt7762 format -702656688988320679735426616129586E0 '\xe1\x99\xb8> 3,f' -> '-702,656,688,988,320,679,735,426,616,129,586' +xfmt7763 format 879341899990006101706204918882073e236 ',.78' -> '8.79341899990006101706204918882073E+268' +xfmt7764 format -231071690257636272651841696336126e168 '.53%' -> '-23107169025763627265184169633612600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000%' +xfmt7765 format 563250247334286645545558888935795078634E0 '\xe4\x8f\x97<,.72F' -> '563,250,247,334,286,645,545,558,888,935,795,078,634.000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7766 format -930674615804691861675665066686174031005e0 '\xe1\xbb\xad<,' -> '-930,674,615,804,691,861,675,665,066,686,174,031,005' +xfmt7767 format 741981147953735936036491534745262399165e115 '4,.24F' -> '7,419,811,479,537,359,360,364,915,347,452,623,991,650,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000' +xfmt7768 format -405106748003949629226196114071716938976e44 '' -> '-4.05106748003949629226196114071716938976E+82' +xfmt7769 format 705228875827796528386E0 '\xe0\xa2\x8a=-52,.86%' -> '70,522,887,582,779,652,838,600.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt7770 format -564434641119765413982e0 '\xeb\x80\xbc^57.85%' -> '-56443464111976541398200.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt7771 format 655798232737897929013e295 '\xe7\x97\xb5>,.89f' -> '6,557,982,327,378,979,290,130,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7772 format -742038734176390669271E236 '\xe5\xad\x98<+E' -> '-7.42038734176390669271E+256' +xfmt7773 format 23837141578821874492686742572e0 '\xd6\xb4=+36,.34' -> '+23,837,141,578,821,874,492,686,742,572' +xfmt7774 format -30404797882137125800537601782E0 '\xee\x80\xa1^-,' -> '-30,404,797,882,137,125,800,537,601,782' +xfmt7775 format 71556169407009383156759239918E24 '\xee\xb0\xa0^' -> '7.1556169407009383156759239918E+52' +xfmt7776 format -81789371083977028523393992804e229 '+073,f' -> '-817,893,710,839,770,285,233,939,928,040,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt7777 format 643958019491616998931394241019E0 ' 097,' -> ' 0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,643,958,019,491,616,998,931,394,241,019' +xfmt7778 format -848919132058052528734151000592e0 '\xec\x80\x90<-,.45' -> '-848,919,132,058,052,528,734,151,000,592' +xfmt7779 format 863980436089737924338884308860e254 '\xe5\xbc\x82^ 1,.80E' -> ' 8.63980436089737924338884308860000000000000000000000000000000000000000000000000000E+283' +xfmt7780 format -669159112375731978847108780754e76 '\xe1\xbb\x94=-F' -> '-6691591123757319788471087807540000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7781 format 55810428632065E0 ' 010,.87f' -> ' 55,810,428,632,065.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7782 format -96306612775641e0 '\xed\x8e\xa7<-25,.42g' -> '-96,306,612,775,641\xed\x8e\xa7\xed\x8e\xa7\xed\x8e\xa7\xed\x8e\xa7\xed\x8e\xa7\xed\x8e\xa7' +xfmt7783 format 98156330701084e16 '' -> '9.8156330701084E+29' +xfmt7784 format -59803828412998E226 '-,' -> '-5.9803828412998E+239' +xfmt7785 format 47299060177594564e0 '\xee\xbf\xb8> 86,.64E' -> '\xee\xbf\xb8\xee\xbf\xb8\xee\xbf\xb8\xee\xbf\xb8\xee\xbf\xb8\xee\xbf\xb8\xee\xbf\xb8\xee\xbf\xb8\xee\xbf\xb8\xee\xbf\xb8\xee\xbf\xb8\xee\xbf\xb8\xee\xbf\xb8\xee\xbf\xb8\xee\xbf\xb8 4.7299060177594564000000000000000000000000000000000000000000000000E+16' +xfmt7786 format -79072082301429083E0 '' -> '-79072082301429083' +xfmt7787 format 73984548131723288E319 '' -> '7.3984548131723288E+335' +xfmt7788 format -18337418457562227E51 '\xea\xbd\x86< 65,.76G' -> '-1.8337418457562227E+67\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86\xea\xbd\x86' +xfmt7789 format 3561472e0 '\xe7\xbe\x9f<58,.53%' -> '356,147,200.00000000000000000000000000000000000000000000000000000%' +xfmt7790 format -6530139E0 '\xef\x8a\x95=-40.82n' -> '-\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x95\xef\x8a\x956530139' +xfmt7791 format 3753911E348 '073,.13%' -> '375,391,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000%' +xfmt7792 format -4805633E136 '\xee\x9a\x95^-75,.94e' -> '-4.8056330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+142' +xfmt7793 format 4440670816213645701915081E0 '\xef\xb4\x96>19.61g' -> '4440670816213645701915081' +xfmt7794 format -6059002298025280320519660e0 '\xe5\x98\x95> 73' -> '\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95\xe5\x98\x95-6059002298025280320519660' +xfmt7795 format 8595824842713948004127224e134 '\xee\x8e\x9a^+72,.22F' -> '+859,582,484,271,394,800,412,722,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000' +xfmt7796 format -3591380052158708270770240e197 '+8,.58' -> '-3.591380052158708270770240E+221' +xfmt7797 format 98115744921338829549598578007625E0 '-,.29g' -> '9.8115744921338829549598578008e+31' +xfmt7798 format -73900571722441629322617419020709E0 ' 49,.37f' -> '-73,900,571,722,441,629,322,617,419,020,709.0000000000000000000000000000000000000' +xfmt7799 format 64926528591164029780956435002209E110 '\xe9\xb7\x95^83,.28f' -> '6,492,652,859,116,402,978,095,643,500,220,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000' +xfmt7800 format -69722131874671597948345883005777E350 '\xe8\x82\xa7^-30' -> '-6.9722131874671597948345883005777E+381' +xfmt7801 format 4572590293441874603537333867E0 '\xe4\x9a\x9f> ,.97G' -> ' 4,572,590,293,441,874,603,537,333,867' +xfmt7802 format -2863806625843185581190558351E0 ' 55,f' -> ' -2,863,806,625,843,185,581,190,558,351' +xfmt7803 format 8941937805963770315065120915E358 '\xe0\xbb\xb4^' -> '8.941937805963770315065120915E+385' +xfmt7804 format -2003173281081336918176403776e88 '\xe4\xb9\xb6^ 58.57F' -> '-20031732810813369181764037760000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000' +xfmt7805 format 79e0 'g' -> '79' +xfmt7806 format -51e0 '052f' -> '-000000000000000000000000000000000000000000000000051' +xfmt7807 format 62E135 '\xe4\x9e\x8b^49,G' -> '\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b6.2E+136\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b\xe4\x9e\x8b' +xfmt7808 format -83E188 '\xec\xa8\x88> 34.10%' -> '-830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000%' +xfmt7809 format 12345.12345678 '\xe3\xb1\x96>-,.21' -> '12,345.12345678' +xfmt7810 format -123456789.1234567890123 '\xea\xb3\xa4<54,.25' -> '-123,456,789.1234567890123\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4\xea\xb3\xa4' +xfmt7811 format 2446350944e0 '\xe1\xa7\xa8>-51,.2f' -> '\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa8\xe1\xa7\xa82,446,350,944.00' +xfmt7812 format -5800689708e0 '\xe1\x9d\x92> ,.6F' -> '-5,800,689,708.000000' +xfmt7813 format 4913903579e316 '\xea\xb7\x90= 68.40f' -> ' 49139035790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000' +xfmt7814 format -6298033495E161 ' 0,.10e' -> '-6.2980334950e+170' +xfmt7815 format 135395E0 '+,' -> '+135,395' +xfmt7816 format -747924E0 'e' -> '-7.47924e+5' +xfmt7817 format 125460e311 '87' -> ' 1.25460E+316' +xfmt7818 format -209651e106 '.21' -> '-2.09651E+111' +xfmt7819 format 3086909446790935706622123617762628387365401e0 '084.57E' -> '0000000000000000000003.086909446790935706622123617762628387365401000000000000000E+42' +xfmt7820 format -5586750051737276897863203213156303728408679e0 '\xe4\xa8\x9b<16.82G' -> '-5586750051737276897863203213156303728408679' +xfmt7821 format 9592778086630302322776931160693760905201002e375 '89,.95' -> ' 9.592778086630302322776931160693760905201002E+417' +xfmt7822 format -5845574489163551098729057759577005060533267e136 '\xe7\x95\x91>-23.68E' -> '-5.84557448916355109872905775957700506053326700000000000000000000000000E+178' +xfmt7823 format 7836798991773e0 '' -> '7836798991773' +xfmt7824 format -5300604334055e0 '0,.54%' -> '-530,060,433,405,500.000000000000000000000000000000000000000000000000000000%' +xfmt7825 format 5281130417983E241 '+025,.28g' -> '+00,005.281130417983e+253' +xfmt7826 format -7359257497064e115 '86,.89F' -> '-73,592,574,970,640,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7827 format 876289854337277750941530E0 '\xe4\xb9\xa6=+11,.31e' -> '+8.7628985433727775094153000000000e+23' +xfmt7828 format -382219680662819684550580E0 '0,' -> '-382,219,680,662,819,684,550,580' +xfmt7829 format 380060971666975069031646E153 '\xed\x9d\xac> .11F' -> ' 380060971666975069031646000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000' +xfmt7830 format -779856295687424695667875e270 ' 055,g' -> '-0,000,000,000,000,000,007.79856295687424695667875e+293' +xfmt7831 format 98727639649946005152577861272478596091e0 '' -> '98727639649946005152577861272478596091' +xfmt7832 format -64952759871254832514814320118478141023E0 '-6' -> '-64952759871254832514814320118478141023' +xfmt7833 format 42117806095414187300370417135887453355E172 '\xe2\x87\x88=+,f' -> '+421,178,060,954,141,873,003,704,171,358,874,533,550,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt7834 format -36088596637008928967882580773075038296E288 '+0,f' -> '-36,088,596,637,008,928,967,882,580,773,075,038,296,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt7835 format 650648689032628192397136662193413472096565E0 '\xe2\x9e\xad^-,.85f' -> '650,648,689,032,628,192,397,136,662,193,413,472,096,565.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7836 format -771447480991432005615748327413104825477234E0 '+' -> '-771447480991432005615748327413104825477234' +xfmt7837 format 486113919995405456067327434798162370405869E374 '' -> '4.86113919995405456067327434798162370405869E+415' +xfmt7838 format -341440266066588353167851915909773157373454E244 '-.3n' -> '-3.41e+285' +xfmt7839 format 2083461710058196830821979011316775e0 '\xea\xbb\x89< G' -> ' 2083461710058196830821979011316775' +xfmt7840 format -2104068116944706545964106991882136e0 '0' -> '-2104068116944706545964106991882136' +xfmt7841 format 1904777338996083511522574353685951E313 '\xe2\xa0\xb9^-62,g' -> '\xe2\xa0\xb9\xe2\xa0\xb9\xe2\xa0\xb9\xe2\xa0\xb9\xe2\xa0\xb9\xe2\xa0\xb9\xe2\xa0\xb9\xe2\xa0\xb9\xe2\xa0\xb9\xe2\xa0\xb9\xe2\xa0\xb91.904777338996083511522574353685951e+346\xe2\xa0\xb9\xe2\xa0\xb9\xe2\xa0\xb9\xe2\xa0\xb9\xe2\xa0\xb9\xe2\xa0\xb9\xe2\xa0\xb9\xe2\xa0\xb9\xe2\xa0\xb9\xe2\xa0\xb9\xe2\xa0\xb9' +xfmt7842 format -8897688928547208948052143449807102E205 '\xe9\x85\xa5 '-88976889285472089480521434498071020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7843 format 3544949629961430285025205026073376486E0 '\xe1\x88\x92^ 51,.77G' -> ' 3,544,949,629,961,430,285,025,205,026,073,376,486\xe1\x88\x92' +xfmt7844 format -7310420403518555653628407218658067604e0 '\xe1\xb7\xb7^+.8' -> '-7.3104204E+36' +xfmt7845 format 5661470768611362226381746280000765210e325 '0,' -> '5.661470768611362226381746280000765210E+361' +xfmt7846 format -4613682335727156625567998675783670164e323 '+' -> '-4.613682335727156625567998675783670164E+359' +xfmt7847 format 75702727802767332e0 ' 0.94' -> ' 75702727802767332' +xfmt7848 format -64947898674941762e0 '-0.45f' -> '-64947898674941762.000000000000000000000000000000000000000000000' +xfmt7849 format 29992520113062635E255 '0.71G' -> '2.9992520113062635E+271' +xfmt7850 format -31897831466658608E325 '\xe5\xbf\x90^-74,.48f' -> '-318,978,314,666,586,080,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000' +xfmt7851 format 1719930714983160573136703484E0 '\xe0\xba\x84^-37,.57e' -> '1.719930714983160573136703484000000000000000000000000000000e+27' +xfmt7852 format -1042306059951225800583685731E0 '\xeb\x8e\x86=+80G' -> '-\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x86\xeb\x8e\x861042306059951225800583685731' +xfmt7853 format 5026740857014519865890144159e202 '' -> '5.026740857014519865890144159E+229' +xfmt7854 format -9649474935515489479579974733E233 '\xeb\x8b\xba>+14,.41' -> '-9.649474935515489479579974733E+260' +xfmt7855 format 1807593315466289859017959e0 '\xe6\x8b\x87=20,.27f' -> '1,807,593,315,466,289,859,017,959.000000000000000000000000000' +xfmt7856 format -4338775283220139911329730E0 '31.97F' -> '-4338775283220139911329730.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7857 format 8172235814068799895523391E322 '\xe3\xbc\xa3> ,f' -> ' 81,722,358,140,687,998,955,233,910,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt7858 format -9885315044720849217037267E62 '+08.10E' -> '-9.8853150447E+86' +xfmt7859 format 286290156936e0 '' -> '286290156936' +xfmt7860 format -196893381807e0 '-' -> '-196893381807' +xfmt7861 format 263978522207e274 '' -> '2.63978522207E+285' +xfmt7862 format -718100182589E34 '' -> '-7.18100182589E+45' +xfmt7863 format 3041058174243561319492384616857E0 '\xe6\x9a\xb3=+28,.85' -> '+3,041,058,174,243,561,319,492,384,616,857' +xfmt7864 format -8788734136471493142945289224653E0 '\xee\x81\x87>' -> '-8788734136471493142945289224653' +xfmt7865 format 5580949202339211836054331875511e146 '.35' -> '5.580949202339211836054331875511E+176' +xfmt7866 format -5037209726521035183581951135790E225 '\xe3\xae\xb7>+46e' -> '\xe3\xae\xb7\xe3\xae\xb7\xe3\xae\xb7\xe3\xae\xb7\xe3\xae\xb7\xe3\xae\xb7\xe3\xae\xb7\xe3\xae\xb7-5.037209726521035183581951135790e+255' +xfmt7867 format 8911882239422331926E0 '\xe9\xb3\xbe^+54,.6f' -> '\xe9\xb3\xbe\xe9\xb3\xbe\xe9\xb3\xbe\xe9\xb3\xbe\xe9\xb3\xbe\xe9\xb3\xbe\xe9\xb3\xbe\xe9\xb3\xbe\xe9\xb3\xbe\xe9\xb3\xbe+8,911,882,239,422,331,926.000000\xe9\xb3\xbe\xe9\xb3\xbe\xe9\xb3\xbe\xe9\xb3\xbe\xe9\xb3\xbe\xe9\xb3\xbe\xe9\xb3\xbe\xe9\xb3\xbe\xe9\xb3\xbe\xe9\xb3\xbe\xe9\xb3\xbe' +xfmt7868 format -9740695595173475755e0 '\xec\x80\x80>+,.82E' -> '-9.7406955951734757550000000000000000000000000000000000000000000000000000000000000000E+18' +xfmt7869 format 4260012464129059068E173 '' -> '4.260012464129059068E+191' +xfmt7870 format -6711050986939071819e184 '\xef\x84\x9a=' -> '-6.711050986939071819E+202' +xfmt7871 format 26421926308E0 '\xec\x81\x90<+48,.87%' -> '+2,642,192,630,800.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt7872 format -74409453981E0 '\xee\x91\x93^+34,.28e' -> '-7.4409453981000000000000000000e+10' +xfmt7873 format 89814846208E118 '\xef\xbb\x82=1,E' -> '8.9814846208E+128' +xfmt7874 format -14438563472e211 '\xe5\x92\x82^+98,.3e' -> '\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82-1.444e+221\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82\xe5\x92\x82' +xfmt7875 format 45730717220240448930358106276864e0 '\xe8\x83\xb0^12.68G' -> '45730717220240448930358106276864' +xfmt7876 format -90839848775073525290017462420644e0 '' -> '-90839848775073525290017462420644' +xfmt7877 format 56121503839644144715097140703353E320 '\xe4\xaa\x9a<97.54' -> '5.6121503839644144715097140703353E+351\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a\xe4\xaa\x9a' +xfmt7878 format -83056471199919704748304986596963E64 'f' -> '-830564711999197047483049865969630000000000000000000000000000000000000000000000000000000000000000' +xfmt7879 format 2E0 '\xe7\x8d\x84= 59,.98f' -> ' 2.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7880 format -2e0 '\xee\x92\xa7=+39.24%' -> '-\xee\x92\xa7\xee\x92\xa7\xee\x92\xa7\xee\x92\xa7\xee\x92\xa7\xee\x92\xa7\xee\x92\xa7\xee\x92\xa7\xee\x92\xa7200.000000000000000000000000%' +xfmt7881 format 1E87 ' 069,.88g' -> ' 0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,001e+87' +xfmt7882 format -6e263 '58.25' -> ' -6E+263' +xfmt7883 format 97646129793351010951152783486238621e0 '\xeb\x98\xbe^ 71,f' -> '\xeb\x98\xbe\xeb\x98\xbe\xeb\x98\xbe\xeb\x98\xbe\xeb\x98\xbe\xeb\x98\xbe\xeb\x98\xbe\xeb\x98\xbe\xeb\x98\xbe\xeb\x98\xbe\xeb\x98\xbe\xeb\x98\xbe 97,646,129,793,351,010,951,152,783,486,238,621\xeb\x98\xbe\xeb\x98\xbe\xeb\x98\xbe\xeb\x98\xbe\xeb\x98\xbe\xeb\x98\xbe\xeb\x98\xbe\xeb\x98\xbe\xeb\x98\xbe\xeb\x98\xbe\xeb\x98\xbe\xeb\x98\xbe' +xfmt7884 format -44982605734189611112450442591365466e0 '32' -> '-44982605734189611112450442591365466' +xfmt7885 format 17210875959021319692214581300033189e141 '\xea\x8f\xa4> ,.94' -> ' 1.7210875959021319692214581300033189E+175' +xfmt7886 format -99819257987997332964555439757881568e382 '\xe8\xbe\xa8>+58.37F' -> '-998192579879973329645554397578815680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000' +xfmt7887 format 767957167008127867540836718161139954E0 '+0%' -> '+76795716700812786754083671816113995400%' +xfmt7888 format -886862587649635403029038580163039378e0 '\xe5\x83\xab^+84,.31e' -> '\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab-8.8686258764963540302903858016304e+35\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab\xe5\x83\xab' +xfmt7889 format 133680665760360371178282541836111224E146 '\xe0\xb8\xaf> 86,.12F' -> ' 13,368,066,576,036,037,117,828,254,183,611,122,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000' +xfmt7890 format -744232260951010415565668780091754133e341 '\xe8\xb3\xb2>-19' -> '-7.44232260951010415565668780091754133E+376' +xfmt7891 format 71986387325383400272126262721E0 '\xe1\xb6\x82=-49.44%' -> '7198638732538340027212626272100.00000000000000000000000000000000000000000000%' +xfmt7892 format -26960998236326202520612972380e0 '' -> '-26960998236326202520612972380' +xfmt7893 format 88380986032695592451266079818E239 ' 78.7' -> ' 8.838099E+267' +xfmt7894 format -40968318978189820517215108840e249 '' -> '-4.0968318978189820517215108840E+277' +xfmt7895 format 626006049e0 '' -> '626006049' +xfmt7896 format -481647326e0 '38' -> ' -481647326' +xfmt7897 format 459227649E315 '\xe5\xb2\xb8<+84.38e' -> '+4.59227649000000000000000000000000000000e+323\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8\xe5\xb2\xb8' +xfmt7898 format -708775837e237 ',' -> '-7.08775837E+245' +xfmt7899 format 771233229475706430904735089460e0 '\xec\x80\x94=-24,.84E' -> '7.712332294757064309047350894600000000000000000000000000000000000000000000000000000000E+29' +xfmt7900 format -103563081133175325525612885512E0 '.30' -> '-103563081133175325525612885512' +xfmt7901 format 503265185524873920725149682034e172 '' -> '5.03265185524873920725149682034E+201' +xfmt7902 format -521826233742958005179676575711E105 '+0,' -> '-5.21826233742958005179676575711E+134' +xfmt7903 format 304014071081815925E0 '\xee\x91\x9b> 98.79g' -> '\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b\xee\x91\x9b 304014071081815925' +xfmt7904 format -459632896525793838E0 '\xe8\x98\xb2=+50G' -> '-\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2\xe8\x98\xb2459632896525793838' +xfmt7905 format 347668297393887697E57 '+0.78' -> '+3.47668297393887697E+74' +xfmt7906 format -123077774777243977E175 '\xed\x8e\x8f<' -> '-1.23077774777243977E+192' +xfmt7907 format 817827693353475745611E0 '\xee\xb6\xb0<+n' -> '+817827693353475745611' +xfmt7908 format -562146373682780110677E0 '+065,.18%' -> '-0,000,000,000,056,214,637,368,278,011,067,700.000000000000000000%' +xfmt7909 format 695194610675545591298e178 '\xeb\xbc\x9e<14,.65f' -> '6,951,946,106,755,455,912,980,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000' +xfmt7910 format -121084765146849297044E254 '\xe4\x90\xa6> 20,.75f' -> '-12,108,476,514,684,929,704,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7911 format 96779729e0 '\xe1\x8c\x93^+8.10E' -> '+9.6779729000E+7' +xfmt7912 format -40056081E0 '28,' -> ' -40,056,081' +xfmt7913 format 26175240E35 '\xd3\x8f=+.35' -> '+2.6175240E+42' +xfmt7914 format -59708562E271 '\xee\xa8\xb1=19,.34g' -> '-\xee\xa8\xb1\xee\xa8\xb1\xee\xa8\xb1\xee\xa8\xb15.9708562e+278' +xfmt7915 format 3453223059276519865564E0 '11' -> '3453223059276519865564' +xfmt7916 format -2123551054946911862737E0 '025' -> '-002123551054946911862737' +xfmt7917 format 9417453382485664945514e179 '' -> '9.417453382485664945514E+200' +xfmt7918 format -6918680046597222204365E270 '\xe1\xbb\x82=' -> '-6.918680046597222204365E+291' +xfmt7919 format 3914685455210131e0 '.93' -> '3914685455210131' +xfmt7920 format -9693221195193702e0 '' -> '-9693221195193702' +xfmt7921 format 1656215983611276e38 '0,e' -> '1.656215983611276e+53' +xfmt7922 format -9494713280327365e100 '+27.21F' -> '-94947132803273650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000' +xfmt7923 format 4262e0 ' .56' -> ' 4262' +xfmt7924 format -2651e0 '0' -> '-2651' +xfmt7925 format 1531E268 '\xe6\x9d\xad^-87,.79G' -> '\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad1.531E+271\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad\xe6\x9d\xad' +xfmt7926 format -9042e283 '\xe4\xb5\xac^6%' -> '-9042000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt7927 format 50628080079200078977168412529968334890224395e0 '' -> '50628080079200078977168412529968334890224395' +xfmt7928 format -85763017509292857981071105265256223560600630E0 '\xe4\xbd\x86<67.25' -> '-8.576301750929285798107111E+43\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86\xe4\xbd\x86' +xfmt7929 format 70924580884581041865084602602552208746411554e383 '\xef\x8e\x98=13,.30F' -> '7,092,458,088,458,104,186,508,460,260,255,220,874,641,155,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000' +xfmt7930 format -81687107455414193465163530139659796894522925e201 '\xe9\x9b\xba=' -> '-8.1687107455414193465163530139659796894522925E+244' +xfmt7931 format 12345678901234.1234567890 '\xe1\x86\xa9=' -> '12345678901234.1234567890' +xfmt7932 format -12345678901234.1234567890123456789012 ',G' -> '-12,345,678,901,234.1234567890123456789012' +xfmt7933 format 474995e0 '\xec\xb5\xa2> 63,G' -> '\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2\xec\xb5\xa2 474,995' +xfmt7934 format -923837e0 '\xeb\x99\x96> 87,.58F' -> '\xeb\x99\x96\xeb\x99\x96\xeb\x99\x96\xeb\x99\x96\xeb\x99\x96\xeb\x99\x96\xeb\x99\x96\xeb\x99\x96\xeb\x99\x96\xeb\x99\x96\xeb\x99\x96\xeb\x99\x96\xeb\x99\x96\xeb\x99\x96\xeb\x99\x96\xeb\x99\x96\xeb\x99\x96\xeb\x99\x96\xeb\x99\x96\xeb\x99\x96-923,837.0000000000000000000000000000000000000000000000000000000000' +xfmt7935 format 394090E347 '\xed\x84\x88>52' -> '\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x88\xed\x84\x883.94090E+352' +xfmt7936 format -843824E90 '\xe8\x84\x94<.2' -> '-8.4E+95' +xfmt7937 format 7671631E0 '\xe7\x8a\x96< ' -> ' 7671631' +xfmt7938 format -1701573E0 '-0n' -> '-1701573' +xfmt7939 format 7308692E194 '\xe5\x9a\x9e<76,f' -> '730,869,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt7940 format -3358789E17 '' -> '-3.358789E+23' +xfmt7941 format 5929587497183831173760467e0 '\xe1\xbb\x97<-56,.72%' -> '592,958,749,718,383,117,376,046,700.000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt7942 format -7707755142308875191057559E0 ' 8.79g' -> '-7707755142308875191057559' +xfmt7943 format 7499376655602035177165444E219 '+0,' -> '+7.499376655602035177165444E+243' +xfmt7944 format -7306151175428614644570937E270 '\xe4\xbd\xb6=+80,.54' -> '-\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb6\xe4\xbd\xb67.306151175428614644570937E+294' +xfmt7945 format 1166884928209022573093432016725654E0 '.73' -> '1166884928209022573093432016725654' +xfmt7946 format -4424726157744299163597576231006817E0 ' ' -> '-4424726157744299163597576231006817' +xfmt7947 format 5029659770118303293017321704704143e305 '\xe0\xad\xba< 5,.88%' -> ' 50,296,597,701,183,032,930,173,217,047,041,430,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt7948 format -4731553893001352237786639247730049E289 '\xe9\xaa\x8d<-87.51n' -> '-4.731553893001352237786639247730049e+322\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d\xe9\xaa\x8d' +xfmt7949 format 207051332217994947117286848495792795E0 '\xeb\x97\xa0^ 25,.45f' -> ' 207,051,332,217,994,947,117,286,848,495,792,795.000000000000000000000000000000000000000000000' +xfmt7950 format -115810524457678804118979627732816684e0 '10%' -> '-11581052445767880411897962773281668400%' +xfmt7951 format 930331868147578194300362789030476273E81 '+061,.97E' -> '+9.3033186814757819430036278903047627300000000000000000000000000000000000000000000000000000000000000E+116' +xfmt7952 format -571177633820246703424017094959442974E73 '66.76E' -> '-5.7117763382024670342401709495944297400000000000000000000000000000000000000000E+108' +xfmt7953 format 717005482095230506251224496549244385126e0 '71,.55' -> ' 717,005,482,095,230,506,251,224,496,549,244,385,126' +xfmt7954 format -235472385058345311028183613670192750042E0 '\xee\x8c\x85^ 3e' -> '-2.35472385058345311028183613670192750042e+38' +xfmt7955 format 416575517671861065764085382722335705091E73 '\xe1\xa8\x9c=+62,e' -> '+\xe1\xa8\x9c\xe1\xa8\x9c\xe1\xa8\x9c\xe1\xa8\x9c\xe1\xa8\x9c\xe1\xa8\x9c\xe1\xa8\x9c\xe1\xa8\x9c\xe1\xa8\x9c\xe1\xa8\x9c\xe1\xa8\x9c\xe1\xa8\x9c\xe1\xa8\x9c\xe1\xa8\x9c\xe1\xa8\x9c\xe1\xa8\x9c4.16575517671861065764085382722335705091e+111' +xfmt7956 format -806470825299424483397848293628367286329e47 '\xc9\xa0>+89,f' -> '-80,647,082,529,942,448,339,784,829,362,836,728,632,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt7957 format 4673185509701126498718177989e0 '\xec\x8b\xa7^47,.75G' -> '\xec\x8b\xa7\xec\x8b\xa7\xec\x8b\xa7\xec\x8b\xa7\xec\x8b\xa74,673,185,509,701,126,498,718,177,989\xec\x8b\xa7\xec\x8b\xa7\xec\x8b\xa7\xec\x8b\xa7\xec\x8b\xa7' +xfmt7958 format -8122831918344151046530191596e0 '076.51%' -> '-812283191834415104653019159600.000000000000000000000000000000000000000000000000000%' +xfmt7959 format 8798807462993585877706555018e86 '' -> '8.798807462993585877706555018E+113' +xfmt7960 format -7939674556840739259349238185e224 '\xee\xa3\xbb<60.87%' -> '-79396745568407392593492381850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt7961 format 2690046827341432104877E0 '\xe4\x9d\xbf> 73,e' -> '\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf\xe4\x9d\xbf 2.690046827341432104877e+21' +xfmt7962 format -9899881500594471431691E0 '\xe2\x94\xb9=-' -> '-9899881500594471431691' +xfmt7963 format 5403048578408053319553E229 '' -> '5.403048578408053319553E+250' +xfmt7964 format -3630827582593402703232E173 '' -> '-3.630827582593402703232E+194' +xfmt7965 format 463E0 '\xe5\x8f\xa2= 6,.18G' -> ' \xe5\x8f\xa2\xe5\x8f\xa2463' +xfmt7966 format -294E0 '\xe4\x86\x93> ,.19f' -> '-294.0000000000000000000' +xfmt7967 format 674e211 '' -> '6.74E+213' +xfmt7968 format -133e286 '089,F' -> '-1,330,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt7969 format 90614273777980845342381663645E0 '' -> '90614273777980845342381663645' +xfmt7970 format -30230052360812265148670927747E0 '' -> '-30230052360812265148670927747' +xfmt7971 format 43666148429283260149236539188E179 '087' -> '00000000000000000000000000000000000000000000000000004.3666148429283260149236539188E+207' +xfmt7972 format -60363107081676554605917971050e97 '\xe3\xb7\x88<-18,.3F' -> '-603,631,070,816,765,546,059,179,710,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000' +xfmt7973 format 86625100211932621123419608774525966175E0 ' 57' -> ' 86625100211932621123419608774525966175' +xfmt7974 format -37468572853129489236892555852259773286e0 '\xea\x92\xa8<+18,.87g' -> '-37,468,572,853,129,489,236,892,555,852,259,773,286' +xfmt7975 format 73272679748902206263881035005962200430E118 ' 068,.20%' -> ' 73,272,679,748,902,206,263,881,035,005,962,200,430,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000%' +xfmt7976 format -42096416822870318731349999623403235739e286 '\xe6\xa2\xaa<12g' -> '-4.2096416822870318731349999623403235739e+323' +xfmt7977 format 3758446062328241078e0 '\xe2\x90\x8b<+17,.83f' -> '+3,758,446,062,328,241,078.00000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt7978 format -1374674878283448564e0 '+71,.57' -> ' -1,374,674,878,283,448,564' +xfmt7979 format 4288298047777275998E119 '\xe8\xbb\x83=-9,.22G' -> '4.288298047777275998E+137' +xfmt7980 format -6749152225146519234e367 '08.15g' -> '-6.74915222514652e+385' +xfmt7981 format 425488704202918648051391272383E0 '' -> '425488704202918648051391272383' +xfmt7982 format -339179413532294196652010848808E0 '.53g' -> '-339179413532294196652010848808' +xfmt7983 format 745416541510490312242121111255e335 '\xe9\x84\xbe^ 95,.52%' -> ' 7,454,165,415,104,903,122,421,211,112,550,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000%' +xfmt7984 format -141913339031358166237643160811E283 '\xea\x86\xa4>+65,.44E' -> '\xea\x86\xa4\xea\x86\xa4\xea\x86\xa4\xea\x86\xa4\xea\x86\xa4\xea\x86\xa4\xea\x86\xa4\xea\x86\xa4\xea\x86\xa4\xea\x86\xa4\xea\x86\xa4\xea\x86\xa4\xea\x86\xa4-1.41913339031358166237643160811000000000000000E+312' +xfmt7985 format 79927882965464034E0 '\xec\xa9\x91<-31,.61E' -> '7.9927882965464034000000000000000000000000000000000000000000000E+16' +xfmt7986 format -16053351419560511e0 '96,g' -> ' -16,053,351,419,560,511' +xfmt7987 format 30177813479300173E189 '\xee\x9b\xbc<55,F' -> '30,177,813,479,300,173,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt7988 format -37116287304344918E118 '' -> '-3.7116287304344918E+134' +xfmt7989 format 362412720494327542871629783426542934521267e0 '' -> '362412720494327542871629783426542934521267' +xfmt7990 format -489470452703204621546439746042016641600307e0 '62.45g' -> ' -489470452703204621546439746042016641600307' +xfmt7991 format 127541690097009587010903079702401180788876E313 '\xe6\xa8\x84^,g' -> '1.27541690097009587010903079702401180788876e+354' +xfmt7992 format -757101877080980151860654018215158341895223E338 '0' -> '-7.57101877080980151860654018215158341895223E+379' +xfmt7993 format 4363882405773E0 '\xee\xba\xae^ 58,.3' -> '\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae 4.36E+12\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae\xee\xba\xae' +xfmt7994 format -4213409770072e0 '\xe7\xaa\x90^ 69,' -> '\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90-4,213,409,770,072\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90\xe7\xaa\x90' +xfmt7995 format 4559043704226E292 '\xef\xac\xb2<-50,.18G' -> '4.559043704226E+304\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2\xef\xac\xb2' +xfmt7996 format -9908589424316e64 '3.81' -> '-9.908589424316E+76' +xfmt7997 format 58713697399237813250E0 '\xe7\xaf\x94=+92,.31G' -> '+\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x94\xe7\xaf\x9458,713,697,399,237,813,250' +xfmt7998 format -13066051524006449079E0 '\xe6\x82\x82=-1,.30e' -> '-1.306605152400644907900000000000e+19' +xfmt7999 format 68292502031287244659e239 '\xe2\xbe\xbc>-16,.46%' -> '682,925,020,312,872,446,590,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000%' +xfmt8000 format -41274713149814819898e204 '\xec\x99\x89^ ,.77F' -> '-41,274,713,149,814,819,898,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8001 format 70666997406e0 '\xea\xa1\xb5< n' -> ' 70666997406' +xfmt8002 format -14998629949E0 '+22,' -> ' -14,998,629,949' +xfmt8003 format 54054354577E113 ' 088.31%' -> ' 540543545770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000%' +xfmt8004 format -66649679265e327 '\xe4\xae\xaf<-76,.20G' -> '-6.6649679265E+337\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf\xe4\xae\xaf' +xfmt8005 format 347566709018778338537854151042235E0 '\xe0\xb5\x8c=-20,.57%' -> '34,756,670,901,877,833,853,785,415,104,223,500.000000000000000000000000000000000000000000000000000000000%' +xfmt8006 format -603058297489866365145155978282904E0 ',.67' -> '-603,058,297,489,866,365,145,155,978,282,904' +xfmt8007 format 676872105413248044914116054873936e263 '\xe7\xa0\xb8< ,G' -> ' 6.76872105413248044914116054873936E+295' +xfmt8008 format -356222941897736872860891394289457E236 '\xe6\x9f\xa3= 67,.3g' -> '-\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa3\xe6\x9f\xa33.56e+268' +xfmt8009 format 98537373849278248243450744659437083e0 '' -> '98537373849278248243450744659437083' +xfmt8010 format -65220177560011274775047140369703155e0 '\xe5\x96\xb1= 7,.59' -> '-65,220,177,560,011,274,775,047,140,369,703,155' +xfmt8011 format 74451431501287089003651181536323864E211 '\xec\x8e\x9c= 53,.84F' -> ' 744,514,315,012,870,890,036,511,815,363,238,640,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8012 format -52622875568736220330225491928719522e100 ' 53,.6g' -> ' -5.26229e+134' +xfmt8013 format 95921570631406072408333E0 '.47' -> '95921570631406072408333' +xfmt8014 format -40222414959261748427714e0 '' -> '-40222414959261748427714' +xfmt8015 format 27442731197585475578610e362 '\xd1\x9d=+.67' -> '+2.7442731197585475578610E+384' +xfmt8016 format -22495026270254098601227e325 '072' -> '-0000000000000000000000000000000000000000002.2495026270254098601227E+347' +xfmt8017 format 52E0 '+' -> '+52' +xfmt8018 format -53E0 ',.94' -> '-53' +xfmt8019 format 98e289 '\xe7\x9a\x8f^+69,.23F' -> '+980,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000' +xfmt8020 format -93E61 '\xe6\x8e\x88< ' -> '-9.3E+62' +xfmt8021 format 374559424e0 '\xe6\xaf\x80^+34,.75F' -> '+374,559,424.000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8022 format -674278548e0 ' ' -> '-674278548' +xfmt8023 format 641896216e139 '' -> '6.41896216E+147' +xfmt8024 format -969689413e137 '\xe4\x9f\x9a=-43,.37F' -> '-96,968,941,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000' +xfmt8025 format 2292966227505944091965044200262308842950E0 '\xea\x82\xa9^1.30%' -> '229296622750594409196504420026230884295000.000000000000000000000000000000%' +xfmt8026 format -6832892967047794452259361005083616998072E0 '\xe4\xbf\xa0< 9,.36e' -> '-6.832892967047794452259361005083616998e+39' +xfmt8027 format 6359431067682108219624275781140524623682e313 '+047,.22%' -> '+6,359,431,067,682,108,219,624,275,781,140,524,623,682,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000%' +xfmt8028 format -4636563600033146841079120407892824847170E8 '\xec\x98\xa2^-89F' -> '\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2-463656360003314684107912040789282484717000000000\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2\xec\x98\xa2' +xfmt8029 format 90540129439329262879654897477419550539176277e0 '012,G' -> '90,540,129,439,329,262,879,654,897,477,419,550,539,176,277' +xfmt8030 format -19770965287966300017536024994428561291773708e0 '' -> '-19770965287966300017536024994428561291773708' +xfmt8031 format 31138436245419674050554171789065392612408356e201 '\xe2\xa3\x9a=95,.88f' -> '31,138,436,245,419,674,050,554,171,789,065,392,612,408,356,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8032 format -29207892927315426503051773193454137720932388e301 '-21E' -> '-2.9207892927315426503051773193454137720932388E+344' +xfmt8033 format 66864333654099e0 '\xe3\xbb\xa4=-5,F' -> '66,864,333,654,099' +xfmt8034 format -46421625686672E0 '\xe5\xb8\x83=92n' -> '-\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x83\xe5\xb8\x8346421625686672' +xfmt8035 format 58625973613954E321 '' -> '5.8625973613954E+334' +xfmt8036 format -80704560823107E133 '-' -> '-8.0704560823107E+146' +xfmt8037 format 168666751864539599432563E0 '-0,.81F' -> '168,666,751,864,539,599,432,563.000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8038 format -135859324894733967097472e0 ' 0' -> '-135859324894733967097472' +xfmt8039 format 323109895776571436438323E110 '-069,.84' -> '0,000,000,000,000,000,000,000,000,000,003.23109895776571436438323E+133' +xfmt8040 format -661066995254052975306907e87 '\xe2\x87\x98= 41,.94g' -> '-\xe2\x87\x98\xe2\x87\x98\xe2\x87\x98\xe2\x87\x98\xe2\x87\x98\xe2\x87\x98\xe2\x87\x98\xe2\x87\x98\xe2\x87\x98\xe2\x87\x986.61066995254052975306907e+110' +xfmt8041 format 57142180790380376527926245426608309626763E0 '\xee\xa1\x91<+f' -> '+57142180790380376527926245426608309626763' +xfmt8042 format -37337624699258631651279508210622542047321e0 '\xe8\x9e\x81>-.6f' -> '-37337624699258631651279508210622542047321.000000' +xfmt8043 format 46387941512276506847954574434830612728154E54 '' -> '4.6387941512276506847954574434830612728154E+94' +xfmt8044 format -11428055350901187024248204363995235011632E321 '\xed\x8e\xb2> 54,.93F' -> '-11,428,055,350,901,187,024,248,204,363,995,235,011,632,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8045 format 39457E0 '\xe4\x99\xab> 3,f' -> ' 39,457' +xfmt8046 format -39119e0 '\xe9\x9f\x9f=-.57f' -> '-39119.000000000000000000000000000000000000000000000000000000000' +xfmt8047 format 11408E380 ' 40,f' -> ' 1,140,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt8048 format -57964e58 '\xe4\xad\xa3<-36,%' -> '-57,964,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt8049 format 4787388406515331649748233283751065339E0 '\xe5\xa1\xb1=.17' -> '4.7873884065153316E+36' +xfmt8050 format -1506502971763224092557546966669083139E0 '\xe8\x8e\xbb<+.5%' -> '-150650297176322409255754696666908313900.00000%' +xfmt8051 format 6597980148358823642808521228069965246E166 '\xeb\xb0\x9b=28,f' -> '65,979,801,483,588,236,428,085,212,280,699,652,460,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt8052 format -1389560409803427127018563143938105004e20 '0,' -> '-1.389560409803427127018563143938105004E+56' +xfmt8053 format 12345678901234567890.123456789012345678 '\xe2\x91\x80=5,.4f' -> '12,345,678,901,234,567,890.1235' +xfmt8054 format -123456789.1234567890123456 ' 0,' -> '-123,456,789.1234567890123456' +xfmt8055 format 55799365248180275411918710024565479e0 '\xe8\x8b\xb1^-7,.44G' -> '55,799,365,248,180,275,411,918,710,024,565,479' +xfmt8056 format -34740925005690898279955846752803712e0 '-' -> '-34740925005690898279955846752803712' +xfmt8057 format 35226772097962478649691817365518037E168 '\xeb\x89\xb6>+69,.52%' -> '+3,522,677,209,796,247,864,969,181,736,551,803,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000%' +xfmt8058 format -91351921379396364197976177992798441E27 '\xec\xba\xb6^,' -> '-9.1351921379396364197976177992798441E+61' +xfmt8059 format 595566760622108E0 '+' -> '+595566760622108' +xfmt8060 format -780184610340384E0 '\xe3\x83\x98=+35,' -> '-\xe3\x83\x98\xe3\x83\x98\xe3\x83\x98\xe3\x83\x98\xe3\x83\x98\xe3\x83\x98\xe3\x83\x98\xe3\x83\x98\xe3\x83\x98\xe3\x83\x98\xe3\x83\x98\xe3\x83\x98\xe3\x83\x98\xe3\x83\x98\xe3\x83\x98780,184,610,340,384' +xfmt8061 format 652866647057327e168 '-47,.66g' -> ' 6.52866647057327e+182' +xfmt8062 format -204329259272374E105 '\xc8\x87=37,.46' -> '-\xc8\x87\xc8\x87\xc8\x87\xc8\x87\xc8\x87\xc8\x87\xc8\x87\xc8\x87\xc8\x87\xc8\x87\xc8\x87\xc8\x87\xc8\x87\xc8\x87\xc8\x872.04329259272374E+119' +xfmt8063 format 563675605808591591648274520612014e0 '\xe5\x83\x8c>+95.74g' -> '\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c\xe5\x83\x8c+563675605808591591648274520612014' +xfmt8064 format -878128876698267569435387005409407E0 '\xeb\x99\xa1<70.22%' -> '-87812887669826756943538700540940700.0000000000000000000000%\xeb\x99\xa1\xeb\x99\xa1\xeb\x99\xa1\xeb\x99\xa1\xeb\x99\xa1\xeb\x99\xa1\xeb\x99\xa1\xeb\x99\xa1\xeb\x99\xa1\xeb\x99\xa1' +xfmt8065 format 861797743585837620505623921938601E270 ' ' -> ' 8.61797743585837620505623921938601E+302' +xfmt8066 format -542363397497693532700476076253393e100 ',e' -> '-5.42363397497693532700476076253393e+132' +xfmt8067 format 4762301428185210e0 '0,%' -> '476,230,142,818,521,000%' +xfmt8068 format -8947545566380318E0 '096F' -> '-00000000000000000000000000000000000000000000000000000000000000000000000000000008947545566380318' +xfmt8069 format 7192256367108121e162 '\xe1\xa4\x89^ 92,.36f' -> ' 7,192,256,367,108,121,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000' +xfmt8070 format -7773230471542840e119 '+41,.68%' -> '-77,732,304,715,428,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8071 format 534827137e0 '\xec\xaf\x98<+84,.29' -> '+534,827,137\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98\xec\xaf\x98' +xfmt8072 format -771935539e0 '\xe0\xb7\xbf=+20,.79%' -> '-77,193,553,900.0000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8073 format 676626427e326 '77,g' -> ' 6.76626427e+334' +xfmt8074 format -302543726E29 '+09,' -> '-3.02543726E+37' +xfmt8075 format 942512954176291181985e0 '' -> '942512954176291181985' +xfmt8076 format -213422786857074159184E0 '043,' -> '-00,000,000,000,213,422,786,857,074,159,184' +xfmt8077 format 606702605247324288534e361 '\xe8\xb7\x94<43,.33' -> '6.06702605247324288534E+381\xe8\xb7\x94\xe8\xb7\x94\xe8\xb7\x94\xe8\xb7\x94\xe8\xb7\x94\xe8\xb7\x94\xe8\xb7\x94\xe8\xb7\x94\xe8\xb7\x94\xe8\xb7\x94\xe8\xb7\x94\xe8\xb7\x94\xe8\xb7\x94\xe8\xb7\x94\xe8\xb7\x94\xe8\xb7\x94' +xfmt8078 format -529561868307517416048e126 '\xee\x9c\xaf=41n' -> '-\xee\x9c\xaf\xee\x9c\xaf\xee\x9c\xaf\xee\x9c\xaf\xee\x9c\xaf\xee\x9c\xaf\xee\x9c\xaf\xee\x9c\xaf\xee\x9c\xaf\xee\x9c\xaf\xee\x9c\xaf\xee\x9c\xaf\xee\x9c\xaf5.29561868307517416048e+146' +xfmt8079 format 439802325172240557522504632e0 '\xe9\xac\xa1>-79G' -> '\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1\xe9\xac\xa1439802325172240557522504632' +xfmt8080 format -719153462838931138945361121e0 '\xe3\x81\x8f^ 10.58e' -> '-7.1915346283893113894536112100000000000000000000000000000000e+26' +xfmt8081 format 137662869854525705303215791E66 '\xe1\xb7\xa0^ ,' -> ' 1.37662869854525705303215791E+92' +xfmt8082 format -222012102637693212731443502E298 '\xeb\x86\xa1 '-2.22012102637693212731443502e+324' +xfmt8083 format 7607869756084051130003558034662876967573892E0 '+092' -> '+0000000000000000000000000000000000000000000000007607869756084051130003558034662876967573892' +xfmt8084 format -7834632731772323268843910683544847807787193e0 '' -> '-7834632731772323268843910683544847807787193' +xfmt8085 format 6550541506110495093065995182744835224155341e98 ',g' -> '6.550541506110495093065995182744835224155341e+140' +xfmt8086 format -5591131104421371791332966563516528541184658E196 'g' -> '-5.591131104421371791332966563516528541184658e+238' +xfmt8087 format 724758892966e0 ' 0.22' -> ' 724758892966' +xfmt8088 format -191398816771e0 '\xe9\x8b\xbd> .92f' -> '-191398816771.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8089 format 799261541635e199 '' -> '7.99261541635E+210' +xfmt8090 format -167146415374E119 '\xe8\xad\xbf>,.50' -> '-1.67146415374E+130' +xfmt8091 format 5742968658E0 '' -> '5742968658' +xfmt8092 format -6515072479e0 '\xe0\xa7\x94<,.72' -> '-6,515,072,479' +xfmt8093 format 7198218342E259 '0' -> '7.198218342E+268' +xfmt8094 format -1020829589E138 '\xeb\xb6\xa9^.51G' -> '-1.020829589E+147' +xfmt8095 format 96177925471287957944807424868909032140e0 '' -> '96177925471287957944807424868909032140' +xfmt8096 format -87855429912929785932008242573176142080E0 '\xe2\x81\x8a< 92,.40F' -> '-87,855,429,912,929,785,932,008,242,573,176,142,080.0000000000000000000000000000000000000000' +xfmt8097 format 28512602945309322628361748601035399016e179 '\xe2\xab\xa8= 49,.59E' -> ' 2.85126029453093226283617486010353990160000000000000000000000E+216' +xfmt8098 format -71606105278750117567578671780690171281e215 '\xeb\xbb\xb7<+14,.91e' -> '-7.1606105278750117567578671780690171281000000000000000000000000000000000000000000000000000000e+252' +xfmt8099 format 98328171468E0 '\xef\xbd\x9d=' -> '98328171468' +xfmt8100 format -85350605571E0 '' -> '-85350605571' +xfmt8101 format 42616127014E229 '-75,g' -> ' 4.2616127014e+239' +xfmt8102 format -13288125283E40 '\xed\x86\x82=,' -> '-1.3288125283E+50' +xfmt8103 format 7322529610460142562460012314e0 '\xe9\xb1\xae>+28,.78G' -> '+7,322,529,610,460,142,562,460,012,314' +xfmt8104 format -4822950670153579101510463790e0 '10' -> '-4822950670153579101510463790' +xfmt8105 format 7048018766352921710727649932E258 '\xe2\x82\xa5<9,G' -> '7.048018766352921710727649932E+285' +xfmt8106 format -8559073996870155184580885988e310 '041,.87' -> '-000,008.559073996870155184580885988E+337' +xfmt8107 format 15680579377258985928979581868292e0 '-0,.21G' -> '1.56805793772589859290E+31' +xfmt8108 format -47554592163539080949936405035667e0 '\xe2\x92\xb3<-,.85e' -> '-4.7554592163539080949936405035667000000000000000000000000000000000000000000000000000000e+31' +xfmt8109 format 83231836927570761832322914954044e142 '\xe9\xb4\x99^-86,.95%' -> '83,231,836,927,570,761,832,322,914,954,044,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8110 format -65904749585062757266582857489935e342 '\xef\x85\xaa^-.92f' -> '-65904749585062757266582857489935000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8111 format 70063873920910169331761520102998520968677734e0 '\xef\xb3\x9b<+90,.58e' -> '+7.0063873920910169331761520102998520968677734000000000000000e+43\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b\xef\xb3\x9b' +xfmt8112 format -13343888351930933557217966445854608613260219E0 '\xe1\x8d\xab<96,.38G' -> '-1.3343888351930933557217966445854608613E+43\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab\xe1\x8d\xab' +xfmt8113 format 71075805333580540296563909785435666866406811E207 '' -> '7.1075805333580540296563909785435666866406811E+250' +xfmt8114 format -14698881224605495254575902785956798828537507e314 '-22f' -> '-1469888122460549525457590278595679882853750700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8115 format 9657078029913679365433016289999737703117e0 '\xe4\xb0\x8c=1,' -> '9,657,078,029,913,679,365,433,016,289,999,737,703,117' +xfmt8116 format -2557918974480987866279883602247837376659e0 ' 0,' -> '-2,557,918,974,480,987,866,279,883,602,247,837,376,659' +xfmt8117 format 5319259924510331443957859884142344705918e31 '\xe5\x81\x8c<+68,.98G' -> '+5.319259924510331443957859884142344705918E+70\xe5\x81\x8c\xe5\x81\x8c\xe5\x81\x8c\xe5\x81\x8c\xe5\x81\x8c\xe5\x81\x8c\xe5\x81\x8c\xe5\x81\x8c\xe5\x81\x8c\xe5\x81\x8c\xe5\x81\x8c\xe5\x81\x8c\xe5\x81\x8c\xe5\x81\x8c\xe5\x81\x8c\xe5\x81\x8c\xe5\x81\x8c\xe5\x81\x8c\xe5\x81\x8c\xe5\x81\x8c\xe5\x81\x8c\xe5\x81\x8c' +xfmt8118 format -3333608585952989100717285576640058566928E281 '\xeb\x83\x8b>-35,.36g' -> '-3.33360858595298910071728557664005857e+320' +xfmt8119 format 6174377587026083729308000280262E0 '0' -> '6174377587026083729308000280262' +xfmt8120 format -3330497722310353027041231426338e0 '49' -> ' -3330497722310353027041231426338' +xfmt8121 format 7321521608084702962393549149410e183 '\xe0\xa9\xb5<,%' -> '732,152,160,808,470,296,239,354,914,941,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt8122 format -7727548292308939635692263471037E97 '' -> '-7.727548292308939635692263471037E+127' +xfmt8123 format 4315080159303801101e0 '' -> '4315080159303801101' +xfmt8124 format -6719735674025100101E0 '0,.54E' -> '-6.719735674025100101000000000000000000000000000000000000E+18' +xfmt8125 format 8943156000164397732E96 '0F' -> '8943156000164397732000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8126 format -7340154319998343536e146 '.11F' -> '-734015431999834353600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000' +xfmt8127 format 1468324E0 '\xea\x8d\x88<' -> '1468324' +xfmt8128 format -6664063e0 '\xe8\xb8\xb5^88f' -> '\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5-6664063\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5\xe8\xb8\xb5' +xfmt8129 format 4810466E159 '\xe8\xad\xab^-1,.84F' -> '4,810,466,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8130 format -2088781e214 '' -> '-2.088781E+220' +xfmt8131 format 1123896904266216498690955949514441E0 ' 064,.49G' -> ' 000,000,000,000,001,123,896,904,266,216,498,690,955,949,514,441' +xfmt8132 format -7003460343564178592947231723078776e0 '+,.90' -> '-7,003,460,343,564,178,592,947,231,723,078,776' +xfmt8133 format 8956245175954683212257583376565032E338 '\xee\xb6\xa5= 39,%' -> ' 89,562,451,759,546,832,122,575,833,765,650,320,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt8134 format -6172847904951172475967669447220738e286 '+' -> '-6.172847904951172475967669447220738E+319' +xfmt8135 format 96845961739617444e0 '\xe2\xa7\x9b=+99,.97g' -> '+\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b\xe2\xa7\x9b96,845,961,739,617,444' +xfmt8136 format -67622463242392115e0 '\xe4\xb8\x84<-39,.79g' -> '-67,622,463,242,392,115\xe4\xb8\x84\xe4\xb8\x84\xe4\xb8\x84\xe4\xb8\x84\xe4\xb8\x84\xe4\xb8\x84\xe4\xb8\x84\xe4\xb8\x84\xe4\xb8\x84\xe4\xb8\x84\xe4\xb8\x84\xe4\xb8\x84\xe4\xb8\x84\xe4\xb8\x84\xe4\xb8\x84\xe4\xb8\x84' +xfmt8137 format 99957389362903566E281 '\xeb\x9a\x89=+79g' -> '+\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x89\xeb\x9a\x899.9957389362903566e+297' +xfmt8138 format -15330537046230515E195 '-0,.33f' -> '-15,330,537,046,230,515,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000' +xfmt8139 format 31445571731297409995051667429e0 '\xe1\xb7\x89<+18,.24G' -> '+3.14455717312974099950517E+28' +xfmt8140 format -45028126782209416661400677509e0 '+37e' -> ' -4.5028126782209416661400677509e+28' +xfmt8141 format 28436604037257653035075440281e25 '%' -> '28436604037257653035075440281000000000000000000000000000%' +xfmt8142 format -25062957490926823863682049093E249 '\xe4\xb8\x96<24,' -> '-2.5062957490926823863682049093E+277' +xfmt8143 format 196775703979580857332473e0 '\xe7\xaf\xae<-54,.17G' -> '1.9677570397958086E+23\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae\xe7\xaf\xae' +xfmt8144 format -186555626215208389098749e0 ' 0,.69e' -> '-1.865556262152083890987490000000000000000000000000000000000000000000000e+23' +xfmt8145 format 111745196971674039918069E233 '\xe9\xad\x91>,' -> '1.11745196971674039918069E+256' +xfmt8146 format -722785776258598444662232e261 '\xec\x89\x9a=+9,e' -> '-7.22785776258598444662232e+284' +xfmt8147 format 0E0 '+13,.19' -> ' +0' +xfmt8148 format 0E0 '\xef\x91\xa7^ 28,.29' -> '\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7 0\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7\xef\x91\xa7' +xfmt8149 format 0e207 '-02,E' -> '0E+207' +xfmt8150 format 0e371 '' -> '0E+371' +xfmt8151 format 536668928209445453e0 '\xeb\xaf\xbc> 62,.60G' -> '\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc\xeb\xaf\xbc 536,668,928,209,445,453' +xfmt8152 format -439243320966127243E0 '\xe2\xaf\x9b> 46,.44F' -> '-439,243,320,966,127,243.00000000000000000000000000000000000000000000' +xfmt8153 format 302113681485978541E5 '' -> '3.02113681485978541E+22' +xfmt8154 format -363468179053945827e228 '\xee\x96\xb1^,.22' -> '-3.63468179053945827E+245' +xfmt8155 format 6811960572933413713680047E0 '\xe8\x95\x91=-96,E' -> '\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x91\xe8\x95\x916.811960572933413713680047E+24' +xfmt8156 format -2508463007059832887703600E0 '\xe6\x83\xa6<,.83g' -> '-2,508,463,007,059,832,887,703,600' +xfmt8157 format 3694155420597456869165122E364 '\xec\xa6\x97<+4.84f' -> '+36941554205974568691651220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8158 format -8027500287379470090065856e122 '.74' -> '-8.027500287379470090065856E+146' +xfmt8159 format 350912559588069076608924122273931767899667e0 '\xee\xb0\x97>.46' -> '350912559588069076608924122273931767899667' +xfmt8160 format -634574022548639989732687680525300856059836e0 '\xee\xa5\x89=+.90' -> '-634574022548639989732687680525300856059836' +xfmt8161 format 106554043257988222310768606368581072972198e269 ' .86' -> ' 1.06554043257988222310768606368581072972198E+310' +xfmt8162 format -182069892208557720373230039212588729504916e241 '\xe4\x8c\xb7<-79,.50' -> '-1.82069892208557720373230039212588729504916E+282\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7\xe4\x8c\xb7' +xfmt8163 format 1207E0 '' -> '1207' +xfmt8164 format -1680E0 '\xec\x83\xbb<-67,.56e' -> '-1.68000000000000000000000000000000000000000000000000000000e+3\xec\x83\xbb\xec\x83\xbb\xec\x83\xbb\xec\x83\xbb\xec\x83\xbb' +xfmt8165 format 8081E27 '70n' -> ' 8.081e+30' +xfmt8166 format -2766E364 '\xef\xbf\xbc=-65.65' -> '-\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc\xef\xbf\xbc2.766E+367' +xfmt8167 format 848775712917155483563438329301E0 '\xeb\xb8\x8d> 89,.13' -> '\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d\xeb\xb8\x8d 8.487757129172E+29' +xfmt8168 format -567593587174056828934338707510e0 '' -> '-567593587174056828934338707510' +xfmt8169 format 457865168826594327786548661939e267 '\xee\x87\xb7^73,.8g' -> '\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb74.5786517e+296\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7\xee\x87\xb7' +xfmt8170 format -682033865287246831928618833609E11 '\xe4\x90\x94=' -> '-6.82033865287246831928618833609E+40' +xfmt8171 format 7E0 '\xe8\xa0\xb4<-42,%' -> '700%\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4\xe8\xa0\xb4' +xfmt8172 format -7e0 '\xe6\xba\xa8>-13,.89E' -> '-7.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E+0' +xfmt8173 format 2e272 '+' -> '+2E+272' +xfmt8174 format -9e69 '\xe8\xaa\x87=+86,.94g' -> '-\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x87\xe8\xaa\x879e+69' +xfmt8175 format 12345678901234.123456 '.79' -> '12345678901234.123456' +xfmt8176 format -12345678.123 '+0e' -> '-1.2345678123e+7' +xfmt8177 format 6197506804522927049e0 '.21' -> '6197506804522927049' +xfmt8178 format -1315539487679987120E0 '+' -> '-1315539487679987120' +xfmt8179 format 9576570218111053278e79 ' 06' -> ' 9.576570218111053278E+97' +xfmt8180 format -9063913689742895128E230 '\xee\xa6\x8f^ 35,.70E' -> '-9.0639136897428951280000000000000000000000000000000000000000000000000000E+248' +xfmt8181 format 645413281093783747811800302261812E0 'g' -> '645413281093783747811800302261812' +xfmt8182 format -901605333119009625209618986259353E0 ' ' -> '-901605333119009625209618986259353' +xfmt8183 format 832290273060814470634808269278992e24 '39' -> ' 8.32290273060814470634808269278992E+56' +xfmt8184 format -713518660643822420294483718621376E379 '\xe8\x8c\x9e^+.71e' -> '-7.13518660643822420294483718621376000000000000000000000000000000000000000e+411' +xfmt8185 format 904214e0 '' -> '904214' +xfmt8186 format -273373e0 '\xe4\xb2\x80>30.10%' -> '\xe4\xb2\x80\xe4\xb2\x80\xe4\xb2\x80\xe4\xb2\x80\xe4\xb2\x80\xe4\xb2\x80\xe4\xb2\x80\xe4\xb2\x80\xe4\xb2\x80-27337300.0000000000%' +xfmt8187 format 457260E252 '\xe7\x83\x88>,.32' -> '4.57260E+257' +xfmt8188 format -764377e3 '+' -> '-7.64377E+8' +xfmt8189 format 38346648758930E0 ' ,' -> ' 38,346,648,758,930' +xfmt8190 format -87776081974086e0 '.80' -> '-87776081974086' +xfmt8191 format 74485013238158E46 '.17E' -> '7.44850132381580000E+59' +xfmt8192 format -26259979852281e118 '\xe9\xa2\x85=+66,E' -> '-\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x85\xe9\xa2\x852.6259979852281E+131' +xfmt8193 format 13831776876065252033349578e0 ' 28.29F' -> ' 13831776876065252033349578.00000000000000000000000000000' +xfmt8194 format -92812057743448680864310096e0 '' -> '-92812057743448680864310096' +xfmt8195 format 87150108111728945710488752e32 '\xe7\x94\x8a<-59,.6' -> '8.71501E+57\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a\xe7\x94\x8a' +xfmt8196 format -66208355098739972479584035E211 '\xef\xae\x92= 65,.44%' -> '-66,208,355,098,739,972,479,584,035,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000%' +xfmt8197 format 12445753989054950732080349403126e0 ',' -> '12,445,753,989,054,950,732,080,349,403,126' +xfmt8198 format -81943733329382091348127552767771E0 '13,' -> '-81,943,733,329,382,091,348,127,552,767,771' +xfmt8199 format 86661171748177629824551780315304E29 '\xee\xaf\x8f<8,.89F' -> '8,666,117,174,817,762,982,455,178,031,530,400,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8200 format -89548298161042532777072066074029E344 '' -> '-8.9548298161042532777072066074029E+375' +xfmt8201 format 40844856264299310294582131846e0 ',E' -> '4.0844856264299310294582131846E+28' +xfmt8202 format -93920058876527369845840423521e0 '+14,g' -> '-93,920,058,876,527,369,845,840,423,521' +xfmt8203 format 90281736361298636382162842279E235 '-035,.38f' -> '902,817,363,612,986,363,821,628,422,790,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000' +xfmt8204 format -54617105761060956086700135533E276 '084.17g' -> '-0000000000000000000000000000000000000000000000000000000000005.4617105761060956e+304' +xfmt8205 format 73701543640389438684003768581599107e0 '\xe0\xbe\x97<+76,.83E' -> '+7.37015436403894386840037685815991070000000000000000000000000000000000000000000000000E+34' +xfmt8206 format -56901346338851125495585087517556029E0 '\xe2\xbd\x88<28,' -> '-56,901,346,338,851,125,495,585,087,517,556,029' +xfmt8207 format 14042672338959294778214560967715745e17 '\xea\xb0\x92<-89.80' -> '1.4042672338959294778214560967715745E+51\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92\xea\xb0\x92' +xfmt8208 format -24226192414169905390260026844126967E260 '0.78e' -> '-2.422619241416990539026002684412696700000000000000000000000000000000000000000000e+294' +xfmt8209 format 7861639511194605356922965482454521730e0 '-,G' -> '7,861,639,511,194,605,356,922,965,482,454,521,730' +xfmt8210 format -2528396311811052318129565196732760178e0 '' -> '-2528396311811052318129565196732760178' +xfmt8211 format 7336062624154645984849216874286253730E148 '0' -> '7.336062624154645984849216874286253730E+184' +xfmt8212 format -4713208106003825033724627511176730585e295 '' -> '-4.713208106003825033724627511176730585E+331' +xfmt8213 format 2910965421598997246338805670165E0 '\xe1\x87\xac<' -> '2910965421598997246338805670165' +xfmt8214 format -2037053995443249756346861895045E0 '85n' -> ' -2037053995443249756346861895045' +xfmt8215 format 8927303015768874363964785614439e89 '' -> '8.927303015768874363964785614439E+119' +xfmt8216 format -9285437633088561808751446393684E290 '0' -> '-9.285437633088561808751446393684E+320' +xfmt8217 format 662189742755544726210978e0 ' 62.84' -> ' 662189742755544726210978' +xfmt8218 format -425812162415537078711935E0 '\xe8\x9f\x96<,' -> '-425,812,162,415,537,078,711,935' +xfmt8219 format 808241293365396482777335E224 '' -> '8.08241293365396482777335E+247' +xfmt8220 format -870126312173615915079496e222 '\xea\x92\xa2< 7' -> '-8.70126312173615915079496E+245' +xfmt8221 format 814689962727024597792537924404695898941048E0 '\xe8\xaf\xbc^10,.6' -> '8.14690E+41' +xfmt8222 format -397764284112509768381139568437842150358841e0 '\xe0\xac\xb9^-61,.65g' -> '\xe0\xac\xb9\xe0\xac\xb9-397,764,284,112,509,768,381,139,568,437,842,150,358,841\xe0\xac\xb9\xe0\xac\xb9\xe0\xac\xb9' +xfmt8223 format 866459877518887333870720081209178933619531E13 '\xe3\x80\xa2^76,' -> '\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa28.66459877518887333870720081209178933619531E+54\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2\xe3\x80\xa2' +xfmt8224 format -833531395142612080504928876705189444541372E62 '-033,.47f' -> '-83,353,139,514,261,208,050,492,887,670,518,944,454,137,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000' +xfmt8225 format 6747310267249534773597223054e0 '\xe6\x98\x85^-,.98' -> '6,747,310,267,249,534,773,597,223,054' +xfmt8226 format -1205705034036914658758242830e0 '\xe2\xa4\xb4>-2,.32g' -> '-1,205,705,034,036,914,658,758,242,830' +xfmt8227 format 5492263900990043319534914100E266 '0' -> '5.492263900990043319534914100E+293' +xfmt8228 format -9059299437340489764726381825e110 '\xee\xa3\xb1^+' -> '-9.059299437340489764726381825E+137' +xfmt8229 format 9861659163E0 '\xe4\x82\x83< 47,.4%' -> ' 986,165,916,300.0000%\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83\xe4\x82\x83' +xfmt8230 format -4405491648E0 '\xe8\xba\xb8< 42.88%' -> '-440549164800.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8231 format 5745590941E118 '0.41E' -> '5.74559094100000000000000000000000000000000E+127' +xfmt8232 format -7473937306E294 '\xe4\xbe\xbd=g' -> '-7.473937306e+303' +xfmt8233 format 981899468e0 '23' -> ' 981899468' +xfmt8234 format -313833126E0 '\xe0\xaa\xa3>-52,.76G' -> '\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3\xe0\xaa\xa3-313,833,126' +xfmt8235 format 216908404e22 ' 44,' -> ' 2.16908404E+30' +xfmt8236 format -612487687E363 '\xe3\x86\xb1>+66' -> '\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1\xe3\x86\xb1-6.12487687E+371' +xfmt8237 format 75236192527545484e0 '\xe4\xbf\x80=' -> '75236192527545484' +xfmt8238 format -16795200140741042E0 '0n' -> '-16795200140741042' +xfmt8239 format 66747340482019429e178 '\xef\x9a\x9d>35,' -> '\xef\x9a\x9d\xef\x9a\x9d\xef\x9a\x9d\xef\x9a\x9d\xef\x9a\x9d\xef\x9a\x9d\xef\x9a\x9d\xef\x9a\x9d\xef\x9a\x9d\xef\x9a\x9d\xef\x9a\x9d\xef\x9a\x9d6.6747340482019429E+194' +xfmt8240 format -37679616508528029e208 '.13' -> '-3.767961650853E+224' +xfmt8241 format 293499680605e0 ',' -> '293,499,680,605' +xfmt8242 format -835942322848E0 '0,' -> '-835,942,322,848' +xfmt8243 format 555614567317E41 '\xea\x98\x83=+85,.42g' -> '+\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x83\xea\x98\x835.55614567317e+52' +xfmt8244 format -133953328511E339 '.54e' -> '-1.339533285110000000000000000000000000000000000000000000e+350' +xfmt8245 format 61009E0 ' 074,.3' -> ' 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,006.10E+4' +xfmt8246 format -17516E0 '' -> '-17516' +xfmt8247 format 48758E372 '\xe3\xb1\xb7=24%' -> '4875800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8248 format -28981e353 '\xe3\xb1\xbb= 82,.12' -> '-\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb\xe3\xb1\xbb2.8981E+357' +xfmt8249 format 595585141085759509782699631723126810169E0 '' -> '595585141085759509782699631723126810169' +xfmt8250 format -170752058420734678796310809079521863833E0 '61,.74' -> ' -170,752,058,420,734,678,796,310,809,079,521,863,833' +xfmt8251 format 424843419713813896902777760615073818521E60 '070,.99' -> '000,000,000,000,000,000,004.24843419713813896902777760615073818521E+98' +xfmt8252 format -841292064205708853525044864420037190115e224 '\xe5\x8f\x95<+24e' -> '-8.41292064205708853525044864420037190115e+262' +xfmt8253 format 27e0 '\xec\x9a\xb4=,' -> '27' +xfmt8254 format -51e0 '\xe8\x9a\xb5=+,.10' -> '-51' +xfmt8255 format 45e368 '\xe7\x9f\xab=' -> '4.5E+369' +xfmt8256 format -51E268 '0.25E' -> '-5.1000000000000000000000000E+269' +xfmt8257 format 6111682786706728619490E0 '+' -> '+6111682786706728619490' +xfmt8258 format -4460283617210415256532E0 ',.58E' -> '-4.4602836172104152565320000000000000000000000000000000000000E+21' +xfmt8259 format 7507721921575915156470E133 '' -> '7.507721921575915156470E+154' +xfmt8260 format -9521291613826738920988E173 '' -> '-9.521291613826738920988E+194' +xfmt8261 format 9182433554466688E0 '\xec\xb6\x91^ 78.15F' -> '\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91 9182433554466688.000000000000000\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91\xec\xb6\x91' +xfmt8262 format -6750168863104112e0 '068,G' -> '-000,000,000,000,000,000,000,000,000,000,000,006,750,168,863,104,112' +xfmt8263 format 1526138581469361e156 '\xe5\xa9\x8b<' -> '1.526138581469361E+171' +xfmt8264 format -6475638207802836e259 ' ,%' -> '-6,475,638,207,802,836,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt8265 format 724312709363315895111531449640293887E0 'g' -> '724312709363315895111531449640293887' +xfmt8266 format -827151126051839899537448347098390748e0 ',' -> '-827,151,126,051,839,899,537,448,347,098,390,748' +xfmt8267 format 997090595395163196975250476804157429E41 '' -> '9.97090595395163196975250476804157429E+76' +xfmt8268 format -927070006857502010185877196683742611E9 '\xe7\xb3\x80>-42,.84F' -> '-927,070,006,857,502,010,185,877,196,683,742,611,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8269 format 180120053016302550e0 '\xe1\xbd\xa0<-,.5f' -> '180,120,053,016,302,550.00000' +xfmt8270 format -217986115012397805E0 '\xeb\x98\xa3>88,.21' -> '\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3\xeb\x98\xa3-217,986,115,012,397,805' +xfmt8271 format 574393114408082902E253 '\xe5\xad\x9c>73' -> '\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c\xe5\xad\x9c5.74393114408082902E+270' +xfmt8272 format -650832480893014736e74 ',' -> '-6.50832480893014736E+91' +xfmt8273 format 706928844463577652703923658455E0 '\xd6\x96^.94' -> '706928844463577652703923658455' +xfmt8274 format -320646189308200023563539726560E0 '\xe4\xa8\xb6>-74,.13' -> '\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6\xe4\xa8\xb6-3.206461893082E+29' +xfmt8275 format 277382969016009767227789986214e355 '\xed\x9c\xa6<72e' -> '2.77382969016009767227789986214e+384\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6\xed\x9c\xa6' +xfmt8276 format -690628189743490032959965960847e318 '\xe1\xbc\x87^ ,.58g' -> '-6.90628189743490032959965960847e+347' +xfmt8277 format 9770724966864e0 ',' -> '9,770,724,966,864' +xfmt8278 format -9911067142877E0 '\xe3\x83\xa4< 98,.30%' -> '-991,106,714,287,700.000000000000000000000000000000%\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4\xe3\x83\xa4' +xfmt8279 format 5333043281212e100 '+.13' -> '+5.333043281212E+112' +xfmt8280 format -4744101496339E287 '\xea\x83\xa5>-41' -> '\xea\x83\xa5\xea\x83\xa5\xea\x83\xa5\xea\x83\xa5\xea\x83\xa5\xea\x83\xa5\xea\x83\xa5\xea\x83\xa5\xea\x83\xa5\xea\x83\xa5\xea\x83\xa5\xea\x83\xa5\xea\x83\xa5\xea\x83\xa5\xea\x83\xa5\xea\x83\xa5\xea\x83\xa5\xea\x83\xa5\xea\x83\xa5\xea\x83\xa5\xea\x83\xa5-4.744101496339E+299' +xfmt8281 format 30230184129e0 '\xeb\x87\xbd>+52,.65f' -> '+30,230,184,129.00000000000000000000000000000000000000000000000000000000000000000' +xfmt8282 format -52212264784e0 '\xed\x95\xb1< 84,.98E' -> '-5.22122647840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E+10' +xfmt8283 format 35110911739E379 '92,G' -> ' 3.5110911739E+389' +xfmt8284 format -18286034360e206 '\xd4\xad=-59,.83F' -> '-1,828,603,436,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8285 format 752e0 '\xe4\x80\x8b=49,.48%' -> '75,200.000000000000000000000000000000000000000000000000%' +xfmt8286 format -693E0 '044,F' -> '-000,000,000,000,000,000,000,000,000,000,693' +xfmt8287 format 153E355 '.58' -> '1.53E+357' +xfmt8288 format -659e281 '-' -> '-6.59E+283' +xfmt8289 format 23384144975049191927156384815656766199997276e0 ' 055,.89' -> ' 23,384,144,975,049,191,927,156,384,815,656,766,199,997,276' +xfmt8290 format -89788590726279099870199735715937510611847156e0 '\xe7\x82\xb1^+23,.93%' -> '-8,978,859,072,627,909,987,019,973,571,593,751,061,184,715,600.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8291 format 77581234844590781640644844642022342597180203E239 '\xcd\x83=-14,.17G' -> '7.7581234844590782E+282' +xfmt8292 format -73076768948211345647522320617717582930783112E195 '0' -> '-7.3076768948211345647522320617717582930783112E+238' +xfmt8293 format 75766557794841731036E0 '\xea\xa3\x9f^-.73n' -> '75766557794841731036' +xfmt8294 format -68999775253937461361E0 '35,' -> ' -68,999,775,253,937,461,361' +xfmt8295 format 17248956977355697912E267 '0,' -> '1.7248956977355697912E+286' +xfmt8296 format -44383668715425228632E16 '.20' -> '-4.4383668715425228632E+35' +xfmt8297 format 12345678.12345678901234 '\xec\x83\xab^-79,.65G' -> '\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab12,345,678.12345678901234\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab\xec\x83\xab' +xfmt8298 format -123456789012.1 '\xe3\x9a\xa9<+72,.47e' -> '-1.23456789012100000000000000000000000000000000000e+11\xe3\x9a\xa9\xe3\x9a\xa9\xe3\x9a\xa9\xe3\x9a\xa9\xe3\x9a\xa9\xe3\x9a\xa9\xe3\x9a\xa9\xe3\x9a\xa9\xe3\x9a\xa9\xe3\x9a\xa9\xe3\x9a\xa9\xe3\x9a\xa9\xe3\x9a\xa9\xe3\x9a\xa9\xe3\x9a\xa9\xe3\x9a\xa9\xe3\x9a\xa9\xe3\x9a\xa9' +xfmt8299 format 604e0 '\xe6\xbf\x8a=+23n' -> '+\xe6\xbf\x8a\xe6\xbf\x8a\xe6\xbf\x8a\xe6\xbf\x8a\xe6\xbf\x8a\xe6\xbf\x8a\xe6\xbf\x8a\xe6\xbf\x8a\xe6\xbf\x8a\xe6\xbf\x8a\xe6\xbf\x8a\xe6\xbf\x8a\xe6\xbf\x8a\xe6\xbf\x8a\xe6\xbf\x8a\xe6\xbf\x8a\xe6\xbf\x8a\xe6\xbf\x8a\xe6\xbf\x8a604' +xfmt8300 format -367e0 '0,.7%' -> '-36,700.0000000%' +xfmt8301 format 324E192 '\xe3\xba\xac= ,.6F' -> ' 324,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000' +xfmt8302 format -648e37 '\xea\x9d\xb5=55,.91%' -> '-648,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8303 format 78628913484206302869911424251679429112725e0 'e' -> '7.8628913484206302869911424251679429112725e+40' +xfmt8304 format -54729200942588474443626822446601416981325e0 '\xea\x97\xba>.94e' -> '-5.4729200942588474443626822446601416981325000000000000000000000000000000000000000000000000000000e+40' +xfmt8305 format 26642074015247435131450452436778274918406e349 '\xe6\x97\x92^ ,.60' -> ' 2.6642074015247435131450452436778274918406E+389' +xfmt8306 format -23904344810429531612713230409059185155609E117 '' -> '-2.3904344810429531612713230409059185155609E+157' +xfmt8307 format 554403529112752E0 '\xe7\x94\xb3>+2,.80F' -> '+554,403,529,112,752.00000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8308 format -912197049560910e0 '\xe3\x87\xb6^ 71,e' -> '\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6-9.12197049560910e+14\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6\xe3\x87\xb6' +xfmt8309 format 440758430716556E64 '\xe5\xa5\x86^-52,.38e' -> '\xe5\xa5\x86\xe5\xa5\x86\xe5\xa5\x86\xe5\xa5\x864.40758430716556000000000000000000000000e+78\xe5\xa5\x86\xe5\xa5\x86\xe5\xa5\x86\xe5\xa5\x86' +xfmt8310 format -667874325604841e367 '054,.23' -> '-0,000,000,000,000,000,000,000,006.67874325604841E+381' +xfmt8311 format 19e0 '' -> '19' +xfmt8312 format -26E0 '\xe0\xb6\x8e^-50,F' -> '\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e-26\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e\xe0\xb6\x8e' +xfmt8313 format 77E365 '\xe2\xb8\x88<.70' -> '7.7E+366' +xfmt8314 format -40E142 ' 076,' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,004.0E+143' +xfmt8315 format 1630620459568927951055909057347484389160e0 '-064,' -> '0,000,000,001,630,620,459,568,927,951,055,909,057,347,484,389,160' +xfmt8316 format -4113572748092812706056790093447938132101e0 '\xed\x93\x81> ,.31%' -> '-411,357,274,809,281,270,605,679,009,344,793,813,210,100.0000000000000000000000000000000%' +xfmt8317 format 5569041926647115901881173184802532550247E286 '\xe5\xa6\xb9<-9' -> '5.569041926647115901881173184802532550247E+325' +xfmt8318 format -7739348834600762798912266741621811434135E324 ',e' -> '-7.739348834600762798912266741621811434135e+363' +xfmt8319 format 19313596795653882498889283483650342397E0 '' -> '19313596795653882498889283483650342397' +xfmt8320 format -39906011846977346138725003060636591372E0 '\xe7\xb6\xa8= 95,F' -> '-\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa8\xe7\xb6\xa839,906,011,846,977,346,138,725,003,060,636,591,372' +xfmt8321 format 59067323535529069630783230616557677200e291 '0' -> '5.9067323535529069630783230616557677200E+328' +xfmt8322 format -44786498782652089092181394744719345340e52 '\xe1\xba\x83>' -> '-4.4786498782652089092181394744719345340E+89' +xfmt8323 format 745106E0 '\xef\xb1\xb9>-40,.58f' -> '745,106.0000000000000000000000000000000000000000000000000000000000' +xfmt8324 format -826776e0 '\xe4\x81\xad>+,.90F' -> '-826,776.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8325 format 583653e329 '' -> '5.83653E+334' +xfmt8326 format -846107E18 '0' -> '-8.46107E+23' +xfmt8327 format 565886313515765926414036924332159801377e0 '\xe2\xb6\x82=+25,.27' -> '+5.65886313515765926414036924E+38' +xfmt8328 format -587742685492607602584375632042597714330e0 '-0.90' -> '-587742685492607602584375632042597714330' +xfmt8329 format 911840423944616076417160935939064270513E248 '\xed\x8d\x89^92,.77F' -> '91,184,042,394,461,607,641,716,093,593,906,427,051,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8330 format -653098729160662455400963485487236756264e209 '\xe8\x82\xa8<88,.36%' -> '-6,530,987,291,606,624,554,009,634,854,872,367,562,640,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000%' +xfmt8331 format 6942019367886833528412834997374037072E0 '+3.50' -> '+6942019367886833528412834997374037072' +xfmt8332 format -1974627600035785773964718237280702956E0 '\xe7\xa2\x89^-66,.7g' -> '\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89-1.974628e+36\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89' +xfmt8333 format 5720956813723670683871624264993698046e348 '' -> '5.720956813723670683871624264993698046E+384' +xfmt8334 format -5502438462891890938558610488802679507e253 '034,.98' -> '-5.502438462891890938558610488802679507E+289' +xfmt8335 format 605348874073586465323310747525382447862691e0 '\xeb\x81\x99^,.3' -> '6.05E+41' +xfmt8336 format -679510264743643952115938566078292629092710E0 ' e' -> '-6.79510264743643952115938566078292629092710e+41' +xfmt8337 format 821359815980326354460927935038647551758657E312 '\xe2\x93\xbf>+45.26' -> '\xe2\x93\xbf\xe2\x93\xbf\xe2\x93\xbf\xe2\x93\xbf\xe2\x93\xbf\xe2\x93\xbf\xe2\x93\xbf\xe2\x93\xbf\xe2\x93\xbf\xe2\x93\xbf\xe2\x93\xbf\xe2\x93\xbf+8.2135981598032635446092794E+353' +xfmt8338 format -433192017600607207732380238411834755025844E57 '' -> '-4.33192017600607207732380238411834755025844E+98' +xfmt8339 format 42813199599549427871953127407353e0 '\xe3\x83\xa7<+55,.95' -> '+42,813,199,599,549,427,871,953,127,407,353\xe3\x83\xa7\xe3\x83\xa7\xe3\x83\xa7\xe3\x83\xa7\xe3\x83\xa7\xe3\x83\xa7\xe3\x83\xa7\xe3\x83\xa7\xe3\x83\xa7\xe3\x83\xa7\xe3\x83\xa7\xe3\x83\xa7' +xfmt8340 format -79922333049723844199744013735470e0 '\xeb\x89\xa4^-53,.63F' -> '-79,922,333,049,723,844,199,744,013,735,470.000000000000000000000000000000000000000000000000000000000000000' +xfmt8341 format 10549916074534075648209442601907E147 '\xe1\x99\xa3^+19,.22G' -> '+1.054991607453407564821E+178' +xfmt8342 format -82384396018594284259065198766802e366 ' ' -> '-8.2384396018594284259065198766802E+397' +xfmt8343 format 3387148300973656960287e0 '\xe8\x90\x9a<+51,.66' -> '+3,387,148,300,973,656,960,287\xe8\x90\x9a\xe8\x90\x9a\xe8\x90\x9a\xe8\x90\x9a\xe8\x90\x9a\xe8\x90\x9a\xe8\x90\x9a\xe8\x90\x9a\xe8\x90\x9a\xe8\x90\x9a\xe8\x90\x9a\xe8\x90\x9a\xe8\x90\x9a\xe8\x90\x9a\xe8\x90\x9a\xe8\x90\x9a\xe8\x90\x9a\xe8\x90\x9a\xe8\x90\x9a\xe8\x90\x9a\xe8\x90\x9a' +xfmt8344 format -6484256603434270904501E0 '\xee\x8e\x93^-96,.10' -> '\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93-6.484256603E+21\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93\xee\x8e\x93' +xfmt8345 format 4254848042519003343538E102 '\xe2\xa0\xb0<+95,' -> '+4.254848042519003343538E+123\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0\xe2\xa0\xb0' +xfmt8346 format -3467705253124065987267e96 '' -> '-3.467705253124065987267E+117' +xfmt8347 format 20656e0 '' -> '20656' +xfmt8348 format -69035e0 '' -> '-69035' +xfmt8349 format 19240E279 '.27' -> '1.9240E+283' +xfmt8350 format -38694E314 '' -> '-3.8694E+318' +xfmt8351 format 95559415496058247132e0 '\xe5\xa3\x81^+6,.11g' -> '+9.5559415496e+19' +xfmt8352 format -24514344169504040725e0 '+07' -> '-24514344169504040725' +xfmt8353 format 36151404461244931065e306 '\xee\x84\x9b<43' -> '3.6151404461244931065E+325\xee\x84\x9b\xee\x84\x9b\xee\x84\x9b\xee\x84\x9b\xee\x84\x9b\xee\x84\x9b\xee\x84\x9b\xee\x84\x9b\xee\x84\x9b\xee\x84\x9b\xee\x84\x9b\xee\x84\x9b\xee\x84\x9b\xee\x84\x9b\xee\x84\x9b\xee\x84\x9b\xee\x84\x9b' +xfmt8354 format -48791329826521521235e267 ' 0,' -> '-4.8791329826521521235E+286' +xfmt8355 format 2027335622030503966e0 ' 72.22' -> ' 2027335622030503966' +xfmt8356 format -6162103081331194569E0 '\xe6\x92\xa3>+,.80' -> '-6,162,103,081,331,194,569' +xfmt8357 format 3005525652320187429E353 '\xe5\xb7\x8d<25.78%' -> '30055256523201874290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8358 format -6167531881034700391E187 '\xe3\xaa\xbf=' -> '-6.167531881034700391E+205' +xfmt8359 format 639054851063176421E0 '\xe6\xa0\x9b^+67,.32' -> '\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b+639,054,851,063,176,421\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b\xe6\xa0\x9b' +xfmt8360 format -950127967676438209e0 '\xe6\xa3\x85>93,.46' -> '\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85\xe6\xa3\x85-950,127,967,676,438,209' +xfmt8361 format 710328380936796832E86 '\xe8\xac\xa0=-11,.51e' -> '7.103283809367968320000000000000000000000000000000000e+103' +xfmt8362 format -266194012731414834e328 '' -> '-2.66194012731414834E+345' +xfmt8363 format 7011673029981963525329322553577418e0 ',' -> '7,011,673,029,981,963,525,329,322,553,577,418' +xfmt8364 format -9935548108462830380091975538533181e0 '\xea\x81\x86<-47G' -> '-9935548108462830380091975538533181\xea\x81\x86\xea\x81\x86\xea\x81\x86\xea\x81\x86\xea\x81\x86\xea\x81\x86\xea\x81\x86\xea\x81\x86\xea\x81\x86\xea\x81\x86\xea\x81\x86\xea\x81\x86' +xfmt8365 format 7014954318701142711964834679716947E327 '\xe5\xae\x9f^,.13f' -> '7,014,954,318,701,142,711,964,834,679,716,947,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000' +xfmt8366 format -3624276699722188913595134718300191E62 '\xe7\x9d\x97<.93e' -> '-3.624276699722188913595134718300191000000000000000000000000000000000000000000000000000000000000e+95' +xfmt8367 format 24100319748379819e0 'E' -> '2.4100319748379819E+16' +xfmt8368 format -68030337266162232E0 '\xe5\xa9\xb2^+49,.12g' -> '\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2-6.80303372662e+16\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2\xe5\xa9\xb2' +xfmt8369 format 27318901275011678e222 '\xe7\xac\xa2<98,e' -> '2.7318901275011678e+238\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2\xe7\xac\xa2' +xfmt8370 format -62124415357043760E323 '\xea\xaf\x8a<-' -> '-6.2124415357043760E+339' +xfmt8371 format 449588089467474012160654024686e0 '\xe3\xa4\x99<-68,.70%' -> '44,958,808,946,747,401,216,065,402,468,600.0000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8372 format -309177633196770213202897852472E0 '\xeb\x91\xbe<+9,.89f' -> '-309,177,633,196,770,213,202,897,852,472.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8373 format 946746310614267388146360728213e147 '\xe8\xa2\x8b>-,.90e' -> '9.467463106142673881463607282130000000000000000000000000000000000000000000000000000000000000e+176' +xfmt8374 format -791391330824735534774393805123e166 ' ' -> '-7.91391330824735534774393805123E+195' +xfmt8375 format 66671765156276879302566026903525732542704611e0 '\xee\x8a\x81>43,.3%' -> '6,667,176,515,627,687,930,256,602,690,352,573,254,270,461,100.000%' +xfmt8376 format -73879243128914521915890369344072023927692155e0 ' ' -> '-73879243128914521915890369344072023927692155' +xfmt8377 format 50429603216177798989511265064426166438181083E63 '\xea\xb8\x8c>g' -> '5.0429603216177798989511265064426166438181083e+106' +xfmt8378 format -61307783045493798013409560524756497068051672E121 '\xe6\x98\x95^8' -> '-6.1307783045493798013409560524756497068051672E+164' +xfmt8379 format 555548158254237868334004E0 '\xec\x8b\x89=-59,.84e' -> '5.555481582542378683340040000000000000000000000000000000000000000000000000000000000000e+23' +xfmt8380 format -553437834153161181091391E0 '' -> '-553437834153161181091391' +xfmt8381 format 218087268910707847567491e107 '98' -> ' 2.18087268910707847567491E+130' +xfmt8382 format -197685109631279896797828E61 '\xef\x8e\xb4= 21,.95e' -> '-1.97685109631279896797828000000000000000000000000000000000000000000000000000000000000000000000000e+84' +xfmt8383 format 903550075071528435603928251562300669e0 '\xe1\x99\xa0=-.44%' -> '90355007507152843560392825156230066900.00000000000000000000000000000000000000000000%' +xfmt8384 format -312248421687068659923469375521252797E0 ' 031,g' -> '-312,248,421,687,068,659,923,469,375,521,252,797' +xfmt8385 format 590398819368619977751345680856121329E306 '-8' -> '5.90398819368619977751345680856121329E+341' +xfmt8386 format -866596216731738017387949585035569015E33 ' ' -> '-8.66596216731738017387949585035569015E+68' +xfmt8387 format 91729376609525540816132234049e0 '\xe2\x97\xa6^.27' -> '9.17293766095255408161322340E+28' +xfmt8388 format -55613815606337814198683339551e0 '' -> '-55613815606337814198683339551' +xfmt8389 format 80845774365851592772116508099E288 '\xe2\xbb\x8a> ,.48G' -> ' 8.0845774365851592772116508099E+316' +xfmt8390 format -84013171955573711952204239538e156 '\xe0\xa5\xb6> 80,.56e' -> '\xe0\xa5\xb6\xe0\xa5\xb6\xe0\xa5\xb6\xe0\xa5\xb6\xe0\xa5\xb6\xe0\xa5\xb6\xe0\xa5\xb6\xe0\xa5\xb6\xe0\xa5\xb6\xe0\xa5\xb6\xe0\xa5\xb6\xe0\xa5\xb6\xe0\xa5\xb6\xe0\xa5\xb6\xe0\xa5\xb6\xe0\xa5\xb6-8.40131719555737119522042395380000000000000000000000000000e+184' +xfmt8391 format 331636545699041671987547438e0 '069' -> '000000000000000000000000000000000000000000331636545699041671987547438' +xfmt8392 format -290619511413147269372670008E0 '\xef\x9b\xa8>+81.89G' -> '\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8\xef\x9b\xa8-290619511413147269372670008' +xfmt8393 format 231224893759802794617460761e276 'o= ' -> ' 2.31224893759802794617460761E+302' +xfmt8394 format -231290938383251271794834169e70 '\xe3\xa7\xbe=+69.69%' -> '-231290938383251271794834169000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8395 format 4851361650e0 '\xe9\x88\xb4^ 86,.49G' -> '\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4 4,851,361,650\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4\xe9\x88\xb4' +xfmt8396 format -3829217729E0 '\xef\xa8\xac^41,.31F' -> '-3,829,217,729.0000000000000000000000000000000' +xfmt8397 format 1490526177E128 '' -> '1.490526177E+137' +xfmt8398 format -4083575618e372 '\xe3\x9f\x81< 41,.10%' -> '-408,357,561,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000%' +xfmt8399 format 89996402916529282161639446555646517E0 '.2' -> '9.0E+34' +xfmt8400 format -92295587586713988638742522821198757E0 '\xea\x99\xbc>93.20F' -> '\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc\xea\x99\xbc-92295587586713988638742522821198757.00000000000000000000' +xfmt8401 format 33544851801287850412881939220757310E166 '77,.86' -> ' 3.3544851801287850412881939220757310E+200' +xfmt8402 format -82937229622952278659497390849609854E198 '' -> '-8.2937229622952278659497390849609854E+232' +xfmt8403 format 3855665E0 '' -> '3855665' +xfmt8404 format -2821153e0 '\xe2\xbf\x8e> 76.34F' -> '\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e\xe2\xbf\x8e-2821153.0000000000000000000000000000000000' +xfmt8405 format 5499218E277 '' -> '5.499218E+283' +xfmt8406 format -7029791e254 '' -> '-7.029791E+260' +xfmt8407 format 24460564e0 ' ,' -> ' 24,460,564' +xfmt8408 format -43701033E0 ',' -> '-43,701,033' +xfmt8409 format 70547203E182 '\xe9\x9b\xb9>51,.15' -> '\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb9\xe9\x9b\xb97.0547203E+189' +xfmt8410 format -89324714e365 '+99' -> ' -8.9324714E+372' +xfmt8411 format 1030397889067105506270331742099e0 '+30,f' -> '+1,030,397,889,067,105,506,270,331,742,099' +xfmt8412 format -5709116641508769072726826730767E0 '061.37' -> '-000000000000000000000000000005709116641508769072726826730767' +xfmt8413 format 7545455098563401648826988229254E326 '\xe1\x8f\x89<44.35f' -> '754545509856340164882698822925400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000' +xfmt8414 format -2740724807604546263113219379493e80 ' .98' -> '-2.740724807604546263113219379493E+110' +xfmt8415 format 9318421367962604415872622713E0 '\xe9\xb7\x8c=,.88%' -> '931,842,136,796,260,441,587,262,271,300.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8416 format -1368031517165084306951562041E0 '012' -> '-1368031517165084306951562041' +xfmt8417 format 3428725983668305727601616271e320 '\xe6\xae\x87<+,.2F' -> '+342,872,598,366,830,572,760,161,627,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00' +xfmt8418 format -5105934811701838191071279059e180 ',' -> '-5.105934811701838191071279059E+207' +xfmt8419 format 1234567890123.1234 '\xea\x92\x83= 23,.83F' -> ' 1,234,567,890,123.12340000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8420 format -.1 '-049.3f' -> '-00000000000000000000000000000000000000000000.100' +xfmt8421 format 78e0 '0,.9' -> '78' +xfmt8422 format -75E0 '+072.14' -> '-00000000000000000000000000000000000000000000000000000000000000000000075' +xfmt8423 format 65e175 ' ,' -> ' 6.5E+176' +xfmt8424 format -76e235 '\xd0\x81=19.57n' -> '-\xd0\x81\xd0\x81\xd0\x81\xd0\x81\xd0\x81\xd0\x81\xd0\x81\xd0\x81\xd0\x81\xd0\x817.6e+236' +xfmt8425 format 38895255864140437383740529E0 '-6,.74' -> '38,895,255,864,140,437,383,740,529' +xfmt8426 format -37482941977396372992350655E0 '43' -> ' -37482941977396372992350655' +xfmt8427 format 60524163000799560887910778e261 '' -> '6.0524163000799560887910778E+286' +xfmt8428 format -52257820242084474741278814E134 'C^-11F' -> '-5225782024208447474127881400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8429 format 9982879954203526836659346936222092572624E0 '' -> '9982879954203526836659346936222092572624' +xfmt8430 format -3831496018404744161529614986436933896287E0 '\xec\x94\x86<+93,.56F' -> '-3,831,496,018,404,744,161,529,614,986,436,933,896,287.00000000000000000000000000000000000000000000000000000000' +xfmt8431 format 2113035645470860945642302962219241318430e182 '\xe9\xb7\x85^g' -> '2.113035645470860945642302962219241318430e+221' +xfmt8432 format -4344012298256729053738810506368840454009E101 'g' -> '-4.344012298256729053738810506368840454009e+140' +xfmt8433 format 332732890103182765726514371844e0 '\xe5\xb7\xa9<+48,.84F' -> '+332,732,890,103,182,765,726,514,371,844.000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8434 format -660762582024569706198137960424e0 '061F' -> '-000000000000000000000000000000660762582024569706198137960424' +xfmt8435 format 707526906785826238698757537915E221 '+066,.86' -> '+00,000,000,000,000,000,000,007.07526906785826238698757537915E+250' +xfmt8436 format -805139229501758217420050774257E267 '\xee\xb8\xa1<+30,F' -> '-805,139,229,501,758,217,420,050,774,257,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt8437 format 258011077876029720E0 '0,.41' -> '258,011,077,876,029,720' +xfmt8438 format -139242599498918496e0 ' 037,.44%' -> '-13,924,259,949,891,849,600.00000000000000000000000000000000000000000000%' +xfmt8439 format 828660627598559706E127 '\xe4\x84\xb7=,.80f' -> '8,286,606,275,985,597,060,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8440 format -638165879064313739e377 '' -> '-6.38165879064313739E+394' +xfmt8441 format 9928386461599585E0 '\xef\xa3\x80^56,.74f' -> '9,928,386,461,599,585.00000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8442 format -5008480464441188e0 '\xed\x95\xb9^56,.42%' -> '-500,848,046,444,118,800.000000000000000000000000000000000000000000%' +xfmt8443 format 6710236768958044e323 '' -> '6.710236768958044E+338' +xfmt8444 format -8804538406280561e105 '+,.20' -> '-8.804538406280561E+120' +xfmt8445 format 1093492376187616384059863E0 'E' -> '1.093492376187616384059863E+24' +xfmt8446 format -6980747025974460321928070E0 ' 85,e' -> ' -6.980747025974460321928070e+24' +xfmt8447 format 8782967527965941824917529e123 '' -> '8.782967527965941824917529E+147' +xfmt8448 format -5892936345877060784159625e198 '' -> '-5.892936345877060784159625E+222' +xfmt8449 format 638074432972734578995930781950021090131e0 '20' -> '638074432972734578995930781950021090131' +xfmt8450 format -191729898634628135254149537359413482409e0 ' ,.21%' -> '-19,172,989,863,462,813,525,414,953,735,941,348,240,900.000000000000000000000%' +xfmt8451 format 482995769173531763306339639114384538549E3 '\xeb\x82\xad^-32,.63f' -> '482,995,769,173,531,763,306,339,639,114,384,538,549,000.000000000000000000000000000000000000000000000000000000000000000' +xfmt8452 format -283460627208060239124714157070614758362E85 '' -> '-2.83460627208060239124714157070614758362E+123' +xfmt8453 format 135438704865422745812046e0 '\xee\x86\x9b^-80,.87e' -> '1.354387048654227458120460000000000000000000000000000000000000000000000000000000000000000e+23' +xfmt8454 format -755036026985321945737830E0 '\xeb\x95\xbf^76' -> '\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf-755036026985321945737830\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf\xeb\x95\xbf' +xfmt8455 format 264402982594300385869131e319 '\xeb\x81\xbe=' -> '2.64402982594300385869131E+342' +xfmt8456 format -450122959044968086152448e139 '\xe3\xa9\xb9>+57,.25g' -> '\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9\xe3\xa9\xb9-4.50122959044968086152448e+162' +xfmt8457 format 149250167522535E0 '26' -> ' 149250167522535' +xfmt8458 format -351702026452354E0 '-075,.85' -> '-00,000,000,000,000,000,000,000,000,000,000,000,000,000,351,702,026,452,354' +xfmt8459 format 407411680008842E367 '088.7g' -> '0000000000000000000000000000000000000000000000000000000000000000000000000004.074117e+381' +xfmt8460 format -408142361943618E148 '\xec\x82\x9f>+.9' -> '-4.08142362E+162' +xfmt8461 format 78038347730341290981721575344224962369e0 '+75,.49e' -> ' +7.8038347730341290981721575344224962369000000000000e+37' +xfmt8462 format -36445241545242656515891896961593372894e0 '\xec\x8a\x9d<2E' -> '-3.6445241545242656515891896961593372894E+37' +xfmt8463 format 54375006655624297326102238550780451906E53 '\xe2\x91\xbc^ 16,.30e' -> ' 5.437500665562429732610223855078e+90' +xfmt8464 format -25192368368402379617284205276750560667e316 '96' -> ' -2.5192368368402379617284205276750560667E+353' +xfmt8465 format 26959067917524707439961906365558e0 '' -> '26959067917524707439961906365558' +xfmt8466 format -55052752295577575536898313573245E0 ',.45' -> '-55,052,752,295,577,575,536,898,313,573,245' +xfmt8467 format 91849690963302571077634851477013E301 '\xe2\xa4\xa4>,' -> '9.1849690963302571077634851477013E+332' +xfmt8468 format -43473176936923995328144004720855E28 '\xeb\x93\x8c=80' -> '-\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c\xeb\x93\x8c4.3473176936923995328144004720855E+59' +xfmt8469 format 139228e0 '' -> '139228' +xfmt8470 format -532890E0 '\xeb\x96\xad<+33,.32G' -> '-532,890\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad\xeb\x96\xad' +xfmt8471 format 816148E149 '\xea\x8a\xa3^-40,.65f' -> '81,614,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000' +xfmt8472 format -421282E100 '\xe3\x97\x81< 5,.26G' -> '-4.21282E+105' +xfmt8473 format 9559937416257989236957733559762E0 '\xe4\xa1\xbc>19,F' -> '9,559,937,416,257,989,236,957,733,559,762' +xfmt8474 format -9780703088862677474886191110723e0 '' -> '-9780703088862677474886191110723' +xfmt8475 format 7107704596540153158465504257639E235 '' -> '7.107704596540153158465504257639E+265' +xfmt8476 format -6391951113809025882396919671339e236 '+0E' -> '-6.391951113809025882396919671339E+266' +xfmt8477 format 2790027403920278326875e0 '\xec\x8a\x95^ 38,.12%' -> ' 279,002,740,392,027,832,687,500.000000000000%' +xfmt8478 format -2631344666003081930053E0 '\xe5\x96\x90= 20,.87f' -> '-2,631,344,666,003,081,930,053.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8479 format 6484406201929289761609e12 '\xe2\xad\x95^' -> '6.484406201929289761609E+33' +xfmt8480 format -6667231115838804036980e139 '+' -> '-6.667231115838804036980E+160' +xfmt8481 format 658583063332170411874399276122240387E0 '\xea\xaa\xa6>88,G' -> '\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6\xea\xaa\xa6658,583,063,332,170,411,874,399,276,122,240,387' +xfmt8482 format -451701990698239351698349626301053605E0 '\xe9\x97\x93<98' -> '-451701990698239351698349626301053605\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93\xe9\x97\x93' +xfmt8483 format 921058909018328383640022813229788238E247 '088.78e' -> '0009.210589090183283836400228132297882380000000000000000000000000000000000000000000e+282' +xfmt8484 format -560386237218929237328787378492612014E129 '0' -> '-5.60386237218929237328787378492612014E+164' +xfmt8485 format 66347539285803845086336957155752939488784E0 '+0,g' -> '+66,347,539,285,803,845,086,336,957,155,752,939,488,784' +xfmt8486 format -40474586233280898907419274807911677766042e0 '\xe5\x90\xb0^-87,.57%' -> '-4,047,458,623,328,089,890,741,927,480,791,167,776,604,200.000000000000000000000000000000000000000000000000000000000%' +xfmt8487 format 27649923972805891394202253530116828486443E134 ',F' -> '2,764,992,397,280,589,139,420,225,353,011,682,848,644,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt8488 format -51321873185591824083190557850795508233273e326 ' 029,.94' -> '-5.1321873185591824083190557850795508233273E+366' +xfmt8489 format 72207921587267784910E0 ',' -> '72,207,921,587,267,784,910' +xfmt8490 format -15060348017364741068E0 '\xec\x8e\xb4=+70' -> '-\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb4\xec\x8e\xb415060348017364741068' +xfmt8491 format 55748799682148966159e145 '0' -> '5.5748799682148966159E+164' +xfmt8492 format -34925826392200298306E223 ',' -> '-3.4925826392200298306E+242' +xfmt8493 format 88988711038810736092048721487E0 '' -> '88988711038810736092048721487' +xfmt8494 format -18492540212459577374076179723e0 '18.70' -> '-18492540212459577374076179723' +xfmt8495 format 10918699948559336031693190133E140 '' -> '1.0918699948559336031693190133E+168' +xfmt8496 format -67620814385914665981632614546E315 '96,.72E' -> ' -6.762081438591466598163261454600000000000000000000000000000000000000000000E+343' +xfmt8497 format 32014969823877051549863704598235346E0 '\xe9\x9f\x84>+32,.87g' -> '+32,014,969,823,877,051,549,863,704,598,235,346' +xfmt8498 format -38442468094015676710076441280007712e0 ' 23,E' -> '-3.8442468094015676710076441280007712E+34' +xfmt8499 format 95903682959784758350301198648805411e329 '-0,F' -> '9,590,368,295,978,475,835,030,119,864,880,541,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt8500 format -14593273895451810385066609622944294e206 '\xe5\xa4\xbf^' -> '-1.4593273895451810385066609622944294E+240' +xfmt8501 format 8283176715305121682549091473739180284289395e0 '' -> '8283176715305121682549091473739180284289395' +xfmt8502 format -9279605834365673124640011302229526376561404E0 '\xe4\xa1\x83< ,.96' -> '-9,279,605,834,365,673,124,640,011,302,229,526,376,561,404' +xfmt8503 format 7002018966008080478026857766973167229195599E354 '\xe6\x93\xa8<-13.64g' -> '7.002018966008080478026857766973167229195599e+396' +xfmt8504 format -9377307705233694995787632428065778912510033E242 '\xe5\xad\x97>-79,.24G' -> '\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97\xe5\xad\x97-9.37730770523369499578763E+284' +xfmt8505 format 8148E0 '' -> '8148' +xfmt8506 format -9605E0 '\xe9\xb2\x8e^-12,.31G' -> '\xe9\xb2\x8e\xe9\xb2\x8e\xe9\xb2\x8e-9,605\xe9\xb2\x8e\xe9\xb2\x8e\xe9\xb2\x8e' +xfmt8507 format 6783e32 '\xe1\xbd\xb2>62,' -> '\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb2\xe1\xbd\xb26.783E+35' +xfmt8508 format -7347e113 '.63e' -> '-7.347000000000000000000000000000000000000000000000000000000000000e+116' +xfmt8509 format 4677448E0 '\xea\xae\x81<97,.39E' -> '4.677448000000000000000000000000000000000E+6\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81\xea\xae\x81' +xfmt8510 format -1818816E0 '+0,E' -> '-1.818816E+6' +xfmt8511 format 9719345E192 '\xef\x8c\xa1<+35,.86g' -> '+9.719345e+198\xef\x8c\xa1\xef\x8c\xa1\xef\x8c\xa1\xef\x8c\xa1\xef\x8c\xa1\xef\x8c\xa1\xef\x8c\xa1\xef\x8c\xa1\xef\x8c\xa1\xef\x8c\xa1\xef\x8c\xa1\xef\x8c\xa1\xef\x8c\xa1\xef\x8c\xa1\xef\x8c\xa1\xef\x8c\xa1\xef\x8c\xa1\xef\x8c\xa1\xef\x8c\xa1\xef\x8c\xa1\xef\x8c\xa1' +xfmt8512 format -1441866e105 '' -> '-1.441866E+111' +xfmt8513 format 8071651727514e0 '\xe5\xbe\xa7>,.38' -> '8,071,651,727,514' +xfmt8514 format -4882134663524E0 '\xe3\x9e\x8b^41,' -> '\xe3\x9e\x8b\xe3\x9e\x8b\xe3\x9e\x8b\xe3\x9e\x8b\xe3\x9e\x8b\xe3\x9e\x8b\xe3\x9e\x8b\xe3\x9e\x8b\xe3\x9e\x8b\xe3\x9e\x8b\xe3\x9e\x8b-4,882,134,663,524\xe3\x9e\x8b\xe3\x9e\x8b\xe3\x9e\x8b\xe3\x9e\x8b\xe3\x9e\x8b\xe3\x9e\x8b\xe3\x9e\x8b\xe3\x9e\x8b\xe3\x9e\x8b\xe3\x9e\x8b\xe3\x9e\x8b\xe3\x9e\x8b' +xfmt8515 format 2818823202394E156 '.56' -> '2.818823202394E+168' +xfmt8516 format -6891396230808E121 '\xe8\x8a\x92<+4,.83%' -> '-6,891,396,230,808,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8517 format 70524038360772590e0 '07.34e' -> '7.0524038360772590000000000000000000e+16' +xfmt8518 format -37122997701339566e0 '' -> '-37122997701339566' +xfmt8519 format 58004244782205564E203 '\xe5\xa1\xb5^+46,.39f' -> '+5,800,424,478,220,556,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000' +xfmt8520 format -50641670996517970e305 '\xec\xab\xb3^-' -> '-5.0641670996517970E+321' +xfmt8521 format 796740094034e0 '\xe8\xa3\xa8<24.62e' -> '7.96740094034000000000000000000000000000000000000000000000000000e+11' +xfmt8522 format -168955822713e0 '\xe8\x9c\x92> 19.9G' -> '\xe8\x9c\x92\xe8\x9c\x92\xe8\x9c\x92\xe8\x9c\x92-1.68955823E+11' +xfmt8523 format 294278341542E175 '\xe4\xa2\x97>-61,.29F' -> '2,942,783,415,420,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000' +xfmt8524 format -600761983921e255 '\xea\xb7\xb8^,.19%' -> '-60,076,198,392,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000%' +xfmt8525 format 3E0 '' -> '3' +xfmt8526 format -8e0 '\xec\xb8\xa5^+64,.41f' -> '\xec\xb8\xa5\xec\xb8\xa5\xec\xb8\xa5\xec\xb8\xa5\xec\xb8\xa5\xec\xb8\xa5\xec\xb8\xa5\xec\xb8\xa5\xec\xb8\xa5\xec\xb8\xa5-8.00000000000000000000000000000000000000000\xec\xb8\xa5\xec\xb8\xa5\xec\xb8\xa5\xec\xb8\xa5\xec\xb8\xa5\xec\xb8\xa5\xec\xb8\xa5\xec\xb8\xa5\xec\xb8\xa5\xec\xb8\xa5' +xfmt8527 format 6E257 '62,G' -> ' 6E+257' +xfmt8528 format -5e196 '+E' -> '-5E+196' +xfmt8529 format 3503941293e0 '\xee\x9d\x8e<68,.91' -> '3,503,941,293\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e\xee\x9d\x8e' +xfmt8530 format -2736072803e0 '\xe9\x8b\x93^56.10E' -> '\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93-2.7360728030E+9\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93\xe9\x8b\x93' +xfmt8531 format 3457829730e114 '\xe9\x83\x8a<,.27G' -> '3.457829730E+123' +xfmt8532 format -3270704676e153 '\xe2\x9e\x8a= ,.60g' -> '-3.270704676e+162' +xfmt8533 format 82602767131657688182834072098122744323025774e0 '\xe4\x8f\xb1<6,g' -> '82,602,767,131,657,688,182,834,072,098,122,744,323,025,774' +xfmt8534 format -13884533607912006580842073601422612952197616E0 '' -> '-13884533607912006580842073601422612952197616' +xfmt8535 format 94432070931288291679050277423246715541720386E301 '' -> '9.4432070931288291679050277423246715541720386E+344' +xfmt8536 format -39063957623940637729517422229788752158064540e209 '\xe9\xab\x8a>+,.20F' -> '-3,906,395,762,394,063,772,951,742,222,978,875,215,806,454,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000' +xfmt8537 format 230051879E0 '' -> '230051879' +xfmt8538 format -823382395e0 ' 19,' -> ' -823,382,395' +xfmt8539 format 240424187E147 '\xeb\x80\x98< 62,.26f' -> ' 240,424,187,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000' +xfmt8540 format -495548116E149 '87' -> ' -4.95548116E+157' +xfmt8541 format 12345.123456789012345 '' -> '12345.123456789012345' +xfmt8542 format -1234567890123456789012.1234567890123456789 '0' -> '-1234567890123456789012.1234567890123456789' +xfmt8543 format 28887616676283300652293454568754031320E0 '\xe1\x81\xb9^+25,.60E' -> '+2.888761667628330065229345456875403132000000000000000000000000E+37' +xfmt8544 format -65030844677629680992235735856344055675e0 '78' -> ' -65030844677629680992235735856344055675' +xfmt8545 format 67735213544743843395653513963294758863e289 '-82,' -> ' 6.7735213544743843395653513963294758863E+326' +xfmt8546 format -95291590417633395190420267500453072708e9 '\xcd\xa9^-' -> '-9.5291590417633395190420267500453072708E+46' +xfmt8547 format 2206095447319474E0 '-.93' -> '2206095447319474' +xfmt8548 format -1281693415983542e0 ',' -> '-1,281,693,415,983,542' +xfmt8549 format 5089825472176737E87 '\xec\x99\xb6= ,F' -> ' 5,089,825,472,176,737,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt8550 format -5436854931979440e46 '\xe6\xbf\x9b< 53,.37%' -> '-5,436,854,931,979,440,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000%' +xfmt8551 format 11782254324847454653701610685228E0 '' -> '11782254324847454653701610685228' +xfmt8552 format -85587099715689949479313496963247E0 '\xd4\x85^90,%' -> '\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85-8,558,709,971,568,994,947,931,349,696,324,700%\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85\xd4\x85' +xfmt8553 format 78680207139124517523049127036682e139 '\xc6\xb4^+' -> '+7.8680207139124517523049127036682E+170' +xfmt8554 format -49083456347207844306746840095385e360 '' -> '-4.9083456347207844306746840095385E+391' +xfmt8555 format 0E0 '043.94' -> '0000000000000000000000000000000000000000000' +xfmt8556 format 0E0 '\xe2\xa4\x80>-,E' -> '0E+0' +xfmt8557 format 0e25 '\xe6\xa8\x8c^55.48' -> '\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c0E+25\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c\xe6\xa8\x8c' +xfmt8558 format 0e147 'n' -> '0e+147' +xfmt8559 format 19167642e0 '' -> '19167642' +xfmt8560 format -17583701e0 '\xef\x91\xb4<-.13%' -> '-1758370100.0000000000000%' +xfmt8561 format 69602681e343 '98,.28e' -> ' 6.9602681000000000000000000000e+350' +xfmt8562 format -90143135e314 '\xe3\xb1\x8b> 2.64F' -> '-9014313500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000' +xfmt8563 format 39420633169744523346134080276993850489941538e0 '-99,' -> ' 39,420,633,169,744,523,346,134,080,276,993,850,489,941,538' +xfmt8564 format -51903851293078152523258353266084268278578390e0 '-' -> '-51903851293078152523258353266084268278578390' +xfmt8565 format 99382249675675167090425996305123106963038342e103 '\xe6\xb7\xb4=98,E' -> '\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb49.9382249675675167090425996305123106963038342E+146' +xfmt8566 format -91500769941387546537080174633539799313053643E336 '\xe8\xbf\x91>+52,.53F' -> '-91,500,769,941,387,546,537,080,174,633,539,799,313,053,643,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000' +xfmt8567 format 838104019276457118257996886511082040e0 '\xe4\x8e\xbb<29.97f' -> '838104019276457118257996886511082040.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8568 format -274534936994647437550723417236552787e0 '0' -> '-274534936994647437550723417236552787' +xfmt8569 format 975542415784718290023731954093302409E105 ' 0F' -> ' 975542415784718290023731954093302409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8570 format -653117203972602058683805325549735603E237 'G' -> '-6.53117203972602058683805325549735603E+272' +xfmt8571 format 52711576777109E0 '\xef\x89\xba>,f' -> '52,711,576,777,109' +xfmt8572 format -91019895741451E0 '\xeb\xa3\x8f^ ,.84G' -> '-91,019,895,741,451' +xfmt8573 format 19438337397037e295 ' 33,.85F' -> ' 194,383,373,970,370,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8574 format -69140218515289E160 '0.89' -> '-6.9140218515289E+173' +xfmt8575 format 607009688814545285831939805918252527196e0 ' 78,.33' -> ' 6.07009688814545285831939805918253E+38' +xfmt8576 format -315262945251872453421406068526067146616E0 '+0,' -> '-315,262,945,251,872,453,421,406,068,526,067,146,616' +xfmt8577 format 495922109924712203441956030139195304413E318 '' -> '4.95922109924712203441956030139195304413E+356' +xfmt8578 format -796578862884514960573667533022958497234e380 '\xee\x9b\x8a^27,.7G' -> '\xee\x9b\x8a\xee\x9b\x8a\xee\x9b\x8a\xee\x9b\x8a\xee\x9b\x8a\xee\x9b\x8a-7.965789E+418\xee\x9b\x8a\xee\x9b\x8a\xee\x9b\x8a\xee\x9b\x8a\xee\x9b\x8a\xee\x9b\x8a\xee\x9b\x8a' +xfmt8579 format 7028315184886432293379760083434354324E0 '\xe5\x83\xbc< 32,.93f' -> ' 7,028,315,184,886,432,293,379,760,083,434,354,324.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8580 format -1829306656805039515740832597502221907E0 '\xe7\x8b\x94<+20,.37G' -> '-1,829,306,656,805,039,515,740,832,597,502,221,907' +xfmt8581 format 3875104799633731871280045943663657184E197 ' 98,.58f' -> ' 387,510,479,963,373,187,128,004,594,366,365,718,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000' +xfmt8582 format -2961899214680389076349065922335256868e377 '\xe1\xa5\xa8^-,e' -> '-2.961899214680389076349065922335256868e+413' +xfmt8583 format 33847460941e0 '\xe9\x96\x95=+17,.7%' -> '+3,384,746,094,100.0000000%' +xfmt8584 format -30122927060e0 '+083.84f' -> '-30122927060.000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8585 format 22099023379e68 '-092,.26%' -> '220,990,233,790,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000%' +xfmt8586 format -35838672328e160 '27' -> ' -3.5838672328E+170' +xfmt8587 format 2658630752195577255472593759373833160156929e0 '\xea\x87\xbb^-' -> '2658630752195577255472593759373833160156929' +xfmt8588 format -7060891167676269658622430697076196440974251e0 '\xe8\xb3\xb3= e' -> '-7.060891167676269658622430697076196440974251e+42' +xfmt8589 format 9162227458331269643399431219277766995221832E172 ' 31.33f' -> ' 91622274583312696433994312192777669952218320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000' +xfmt8590 format -9149179575867700517401704943184183811069212e349 '' -> '-9.149179575867700517401704943184183811069212E+391' +xfmt8591 format 92176138865195370444180994336153252264951E0 'f' -> '92176138865195370444180994336153252264951' +xfmt8592 format -92269230281156099416622670854320759396071E0 '41,' -> '-92,269,230,281,156,099,416,622,670,854,320,759,396,071' +xfmt8593 format 75698685400970650457474053281183903633205e375 '' -> '7.5698685400970650457474053281183903633205E+415' +xfmt8594 format -36936362088585746461419658767162809991597e121 '\xe4\xbd\x86>+24.32' -> '-3.6936362088585746461419658767163E+161' +xfmt8595 format 6726876694090245939e0 '\xea\x9e\x8c^ 49,.87f' -> ' 6,726,876,694,090,245,939.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8596 format -4184742437661304213e0 '' -> '-4184742437661304213' +xfmt8597 format 5793329443982962036E100 ' 079,.96F' -> ' 57,933,294,439,829,620,360,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8598 format -4809975515104213893E289 '.30' -> '-4.809975515104213893E+307' +xfmt8599 format 4074775127004e0 '\xee\xb2\xa5^,.69f' -> '4,074,775,127,004.000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8600 format -7559352247130E0 '' -> '-7559352247130' +xfmt8601 format 2537730216819e364 '+.99n' -> '+2.537730216819e+376' +xfmt8602 format -8941164814105e316 '\xe1\xb5\x85>-96,.99%' -> '-8,941,164,814,105,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8603 format 2562e0 ',.98' -> '2,562' +xfmt8604 format -5751E0 '059,E' -> '-000,000,000,000,000,000,000,000,000,000,000,000,005.751E+3' +xfmt8605 format 9044e201 '57' -> ' 9.044E+204' +xfmt8606 format -7018e153 '' -> '-7.018E+156' +xfmt8607 format 312e0 '\xe8\xa5\x85>E' -> '3.12E+2' +xfmt8608 format -659e0 '\xec\x99\x9d=98' -> '-\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d\xec\x99\x9d659' +xfmt8609 format 284e213 '\xef\xb1\xbd<-' -> '2.84E+215' +xfmt8610 format -796e276 ',.59e' -> '-7.96000000000000000000000000000000000000000000000000000000000e+278' +xfmt8611 format 3659204137e0 '\xea\xba\xa4<30,f' -> '3,659,204,137\xea\xba\xa4\xea\xba\xa4\xea\xba\xa4\xea\xba\xa4\xea\xba\xa4\xea\xba\xa4\xea\xba\xa4\xea\xba\xa4\xea\xba\xa4\xea\xba\xa4\xea\xba\xa4\xea\xba\xa4\xea\xba\xa4\xea\xba\xa4\xea\xba\xa4\xea\xba\xa4\xea\xba\xa4' +xfmt8612 format -3705882468E0 '\xed\x94\xad=50,.56E' -> '-3.70588246800000000000000000000000000000000000000000000000E+9' +xfmt8613 format 1638376164e186 ',' -> '1.638376164E+195' +xfmt8614 format -1241092782e218 ',' -> '-1.241092782E+227' +xfmt8615 format 3930228983348190121519585376651E0 '\xef\x81\xa8=.29F' -> '3930228983348190121519585376651.00000000000000000000000000000' +xfmt8616 format -2663469057679734352562738177775E0 '0' -> '-2663469057679734352562738177775' +xfmt8617 format 2993932410817056906981935511013E228 '-094e' -> '0000000000000000000000000000000000000000000000000000000002.993932410817056906981935511013e+258' +xfmt8618 format -7263957955029014872004317100994E304 '\xe1\x9c\xa7>-,.64%' -> '-7,263,957,955,029,014,872,004,317,100,994,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000%' +xfmt8619 format 250413759E0 '0.3' -> '2.50E+8' +xfmt8620 format -628136713e0 '38' -> ' -628136713' +xfmt8621 format 278122339E205 '44' -> ' 2.78122339E+213' +xfmt8622 format -289779309e39 '' -> '-2.89779309E+47' +xfmt8623 format 21171476263179933401503E0 '\xe8\xaf\x95^ 70,.96' -> '\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95 21,171,476,263,179,933,401,503\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95\xe8\xaf\x95' +xfmt8624 format -71270855257810319794614e0 '074,.77f' -> '-71,270,855,257,810,319,794,614.00000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8625 format 72292646033215971411943E308 ',' -> '7.2292646033215971411943E+330' +xfmt8626 format -43168077697350520786463E289 '+051,.33G' -> '-00,000,000,000,000,004.3168077697350520786463E+311' +xfmt8627 format 70158120258149367e0 '0,' -> '70,158,120,258,149,367' +xfmt8628 format -29751998077995850E0 '0,' -> '-29,751,998,077,995,850' +xfmt8629 format 83364708631305009E127 '\xe0\xb1\x88> 71.72' -> '\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88\xe0\xb1\x88 8.3364708631305009E+143' +xfmt8630 format -82595782388189631E40 '\xec\xb8\x86< 83,.61E' -> '-8.2595782388189631000000000000000000000000000000000000000000000E+56\xec\xb8\x86\xec\xb8\x86\xec\xb8\x86\xec\xb8\x86\xec\xb8\x86\xec\xb8\x86\xec\xb8\x86\xec\xb8\x86\xec\xb8\x86\xec\xb8\x86\xec\xb8\x86\xec\xb8\x86\xec\xb8\x86\xec\xb8\x86\xec\xb8\x86' +xfmt8631 format 74771103934922688123371916612e0 '-.8F' -> '74771103934922688123371916612.00000000' +xfmt8632 format -15627709334295111005770568450E0 '\xe7\xa7\xb1<+65,.23%' -> '-1,562,770,933,429,511,100,577,056,845,000.00000000000000000000000%' +xfmt8633 format 58622926083539502498728625602e347 '+05,' -> '+5.8622926083539502498728625602E+375' +xfmt8634 format -18760943769566678199459480556e358 ',.92' -> '-1.8760943769566678199459480556E+386' +xfmt8635 format 6855116312200450266858176646005237361694E0 '+040.29n' -> '+000006.8551163122004502668581766460e+39' +xfmt8636 format -7449865803143170920115370642070236706472e0 '+' -> '-7449865803143170920115370642070236706472' +xfmt8637 format 5699707234748498477536199693645667122930E202 '\xe2\x8d\xb8< 41,e' -> ' 5.699707234748498477536199693645667122930e+241' +xfmt8638 format -5505967697292632607767546489829052039000E378 '\xee\xb7\xbc> 32,E' -> '-5.505967697292632607767546489829052039000E+417' +xfmt8639 format 67945e0 '' -> '67945' +xfmt8640 format -61308E0 '\xeb\xb5\xad=-14,.3g' -> '-\xeb\xb5\xad\xeb\xb5\xad\xeb\xb5\xad\xeb\xb5\xad\xeb\xb5\xad\xeb\xb5\xad6.13e+4' +xfmt8641 format 86179E180 '\xea\xa6\xaf^-12,f' -> '86,179,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt8642 format -27562E85 '0,' -> '-2.7562E+89' +xfmt8643 format 528272076214373352535526E0 '' -> '528272076214373352535526' +xfmt8644 format -240370055444564022362937e0 '81,.37G' -> ' -240,370,055,444,564,022,362,937' +xfmt8645 format 152886806606771626655029e360 '\xea\x92\xba^19.14G' -> '1.5288680660677E+383' +xfmt8646 format -248080172462661056770898e139 '\xe6\xbc\xa5= 18,.12' -> '-2.48080172463E+162' +xfmt8647 format 8591756956990419300180e0 '\xe8\x9e\xa2=23,.62%' -> '859,175,695,699,041,930,018,000.00000000000000000000000000000000000000000000000000000000000000%' +xfmt8648 format -6616440194057052539120E0 '3,.26F' -> '-6,616,440,194,057,052,539,120.00000000000000000000000000' +xfmt8649 format 9821417250600933994061e204 '\xe7\x8b\xa5^19,.17e' -> '9.82141725060093399e+225' +xfmt8650 format -9190072259684169607558e47 '' -> '-9.190072259684169607558E+68' +xfmt8651 format 3190514E0 '+076,.29%' -> '+0,000,000,000,000,000,000,000,000,319,051,400.00000000000000000000000000000%' +xfmt8652 format -2525239e0 '-.24' -> '-2525239' +xfmt8653 format 9645071E305 '\xee\xa2\xb8< ,.43g' -> ' 9.645071e+311' +xfmt8654 format -8684634E136 '\xe6\x80\x80<-35,.74%' -> '-8,684,634,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8655 format 25264640410451809404391698741082628E0 '\xee\x9f\xac>-66,' -> '\xee\x9f\xac\xee\x9f\xac\xee\x9f\xac\xee\x9f\xac\xee\x9f\xac\xee\x9f\xac\xee\x9f\xac\xee\x9f\xac\xee\x9f\xac\xee\x9f\xac\xee\x9f\xac\xee\x9f\xac\xee\x9f\xac\xee\x9f\xac\xee\x9f\xac\xee\x9f\xac\xee\x9f\xac\xee\x9f\xac\xee\x9f\xac\xee\x9f\xac25,264,640,410,451,809,404,391,698,741,082,628' +xfmt8656 format -44449289285998599909241741505799989e0 '\xed\x98\x83=62.1f' -> '-\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x83\xed\x98\x8344449289285998599909241741505799989.0' +xfmt8657 format 10159287302944781042016342768046636e221 '' -> '1.0159287302944781042016342768046636E+255' +xfmt8658 format -89603787042607059511625987664386330E217 '+,e' -> '-8.9603787042607059511625987664386330e+251' +xfmt8659 format 847566580577E0 '\xe7\xb2\x84>+42,.17' -> '\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84+847,566,580,577' +xfmt8660 format -632038710606E0 '\xed\x98\x8a<.48' -> '-632038710606' +xfmt8661 format 678561224879e235 '\xe9\xa5\x95^.88g' -> '6.78561224879e+246' +xfmt8662 format -448885576741e146 '0.97' -> '-4.48885576741E+157' +xfmt8663 format 1234567890123456789012.1234567890123456789 'g' -> '1234567890123456789012.1234567890123456789' +xfmt8664 format -123456789012.1234567890123456789012 '\xe5\x81\x93>,.52f' -> '-123,456,789,012.1234567890123456789012000000000000000000000000000000' +xfmt8665 format 7023568804847498e0 '\xe4\xab\x93<+13,.19F' -> '+7,023,568,804,847,498.0000000000000000000' +xfmt8666 format -4896871318081826e0 '\xe3\x9c\x83^97,.80' -> '\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83-4,896,871,318,081,826\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83\xe3\x9c\x83' +xfmt8667 format 9723894529192196e350 '\xe3\xae\xbe=+62.20' -> '+\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe\xe3\xae\xbe9.723894529192196E+365' +xfmt8668 format -2255130991196729E295 '\xea\x90\x8a^ ,E' -> '-2.255130991196729E+310' +xfmt8669 format 5043045518250995171558E0 '' -> '5043045518250995171558' +xfmt8670 format -7606520659824166340333E0 'n' -> '-7606520659824166340333' +xfmt8671 format 8146215738001891532247e218 '\xe0\xbe\x87^' -> '8.146215738001891532247E+239' +xfmt8672 format -2583211532312698491078E375 '89' -> ' -2.583211532312698491078E+396' +xfmt8673 format 276e0 '\xef\x9a\xbe=,.80' -> '276' +xfmt8674 format -729E0 '\xea\x8a\x8f<-4,.75f' -> '-729.000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8675 format 747E56 '\xec\xbe\xb7=+74,.18g' -> '+\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb7\xec\xbe\xb77.47e+58' +xfmt8676 format -785E79 '\xea\xa9\x8a=+46,.36E' -> '-\xea\xa9\x8a\xea\xa9\x8a\xea\xa9\x8a7.850000000000000000000000000000000000E+81' +xfmt8677 format 3e0 ',' -> '3' +xfmt8678 format -3e0 '82.63' -> ' -3' +xfmt8679 format 1E336 '\xe5\xa3\x8f>,.27f' -> '1,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000' +xfmt8680 format -6e108 '0' -> '-6E+108' +xfmt8681 format 70843248238995344159007059246e0 '\xeb\xaf\x88=-99,.2g' -> '\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x88\xeb\xaf\x887.1e+28' +xfmt8682 format -80910413390841837125812055064e0 '.18%' -> '-8091041339084183712581205506400.000000000000000000%' +xfmt8683 format 73931432128609248082045284343e197 '' -> '7.3931432128609248082045284343E+225' +xfmt8684 format -79953781757617351273476127433e269 '\xe3\xb0\xb0=62,.41e' -> '-\xe3\xb0\xb0\xe3\xb0\xb0\xe3\xb0\xb0\xe3\xb0\xb0\xe3\xb0\xb0\xe3\xb0\xb0\xe3\xb0\xb0\xe3\xb0\xb0\xe3\xb0\xb0\xe3\xb0\xb0\xe3\xb0\xb0\xe3\xb0\xb0\xe3\xb0\xb07.99537817576173512734761274330000000000000e+297' +xfmt8685 format 561776056231309835397573257680686305622788E0 '022f' -> '561776056231309835397573257680686305622788' +xfmt8686 format -342311755009379150175818461087834292013985E0 '\xea\x93\xb6> .30g' -> '-3.42311755009379150175818461088e+41' +xfmt8687 format 757338824513176927004209525686924847454377E373 ' 77' -> ' 7.57338824513176927004209525686924847454377E+414' +xfmt8688 format -214881482317166323262398581035449960028856E222 '\xea\xbb\x95^17,.76' -> '-2.14881482317166323262398581035449960028856E+263' +xfmt8689 format 2932118414076527396184225803559e0 '' -> '2932118414076527396184225803559' +xfmt8690 format -9274653724045931187763204644386E0 ' 0E' -> '-9.274653724045931187763204644386E+30' +xfmt8691 format 7760477085779471077468020416553e54 '\xe2\xbc\x88=29,.2%' -> '776,047,708,577,947,107,746,802,041,655,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00%' +xfmt8692 format -8690638375608440734924798289945E342 '' -> '-8.690638375608440734924798289945E+372' +xfmt8693 format 21420334051225904538E0 '\xe5\xbe\xbe=+27,.11g' -> '+\xe5\xbe\xbe\xe5\xbe\xbe\xe5\xbe\xbe\xe5\xbe\xbe\xe5\xbe\xbe\xe5\xbe\xbe\xe5\xbe\xbe\xe5\xbe\xbe\xe5\xbe\xbe\xe5\xbe\xbe2.1420334051e+19' +xfmt8694 format -49663551824631437311E0 '0G' -> '-49663551824631437311' +xfmt8695 format 37196570150676166644e173 '\xea\xb1\xa1<+15,.7%' -> '+371,965,701,506,761,666,440,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000%' +xfmt8696 format -11698102988603229582E253 '\xeb\xba\xb2^ 41,.85' -> '\xeb\xba\xb2\xeb\xba\xb2\xeb\xba\xb2\xeb\xba\xb2\xeb\xba\xb2\xeb\xba\xb2\xeb\xba\xb2-1.1698102988603229582E+272\xeb\xba\xb2\xeb\xba\xb2\xeb\xba\xb2\xeb\xba\xb2\xeb\xba\xb2\xeb\xba\xb2\xeb\xba\xb2' +xfmt8697 format 7726548904e0 '\xe7\x82\xbf>-84' -> '\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf\xe7\x82\xbf7726548904' +xfmt8698 format -9535269193E0 '\xe1\xb7\xaa=85F' -> '-\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa\xe1\xb7\xaa9535269193' +xfmt8699 format 6105394605e276 '\xef\xa7\x9e^+23,F' -> '+6,105,394,605,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt8700 format -4943193625E114 '\xe0\xaa\xb4^-,.75f' -> '-4,943,193,625,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8701 format 6729017e0 '\xe7\x97\x82^E' -> '6.729017E+6' +xfmt8702 format -6634076e0 '41' -> ' -6634076' +xfmt8703 format 7008476E25 '\xec\x86\x82 '7.008476e+31' +xfmt8704 format -9135038E146 '\xed\x88\x92= 55,.68e' -> '-9.13503800000000000000000000000000000000000000000000000000000000000000e+152' +xfmt8705 format 300408019160547721492348603987E0 '\xe3\xa6\xb8^7,.40' -> '300,408,019,160,547,721,492,348,603,987' +xfmt8706 format -189918599003492744331109744080E0 '\xe6\xb7\xb4^+48,.43G' -> '\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4-189,918,599,003,492,744,331,109,744,080\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4\xe6\xb7\xb4' +xfmt8707 format 317389942030015956323740944530E246 '.48' -> '3.17389942030015956323740944530E+275' +xfmt8708 format -897130803794272700455786909678E179 '\xe1\x95\x9d< 20,.37E' -> '-8.9713080379427270045578690967800000000E+208' +xfmt8709 format 28698E0 '\xe1\xa6\x9c=16.12g' -> '\xe1\xa6\x9c\xe1\xa6\x9c\xe1\xa6\x9c\xe1\xa6\x9c\xe1\xa6\x9c\xe1\xa6\x9c\xe1\xa6\x9c\xe1\xa6\x9c\xe1\xa6\x9c\xe1\xa6\x9c\xe1\xa6\x9c28698' +xfmt8710 format -14113E0 ',' -> '-14,113' +xfmt8711 format 57538E327 '\xd1\xa8=+.31f' -> '+57538000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000' +xfmt8712 format -46745e364 '0' -> '-4.6745E+368' +xfmt8713 format 7796476701208671736301817672E0 ' ,.47' -> ' 7,796,476,701,208,671,736,301,817,672' +xfmt8714 format -1162158483810675841946925380e0 '' -> '-1162158483810675841946925380' +xfmt8715 format 4325009569455182203902386462E151 '\xe3\xaa\x87>-78,.43' -> '\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x87\xe3\xaa\x874.325009569455182203902386462E+178' +xfmt8716 format -6175230410224283662490312178E281 '\xc4\xb6^-,G' -> '-6.175230410224283662490312178E+308' +xfmt8717 format 669926900101996819321752953800045723686e0 '' -> '669926900101996819321752953800045723686' +xfmt8718 format -903238323159688243199934700582835423504E0 '\xe3\x95\x94= 79,E' -> '-\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x94\xe3\x95\x949.03238323159688243199934700582835423504E+38' +xfmt8719 format 846038331828246178654219768107429189585e300 '\xe8\xaa\x93>58E' -> '\xe8\xaa\x93\xe8\xaa\x93\xe8\xaa\x93\xe8\xaa\x93\xe8\xaa\x93\xe8\xaa\x93\xe8\xaa\x93\xe8\xaa\x93\xe8\xaa\x93\xe8\xaa\x93\xe8\xaa\x93\xe8\xaa\x93\xe8\xaa\x938.46038331828246178654219768107429189585E+338' +xfmt8720 format -381164734138925666480749845858446500488e379 '' -> '-3.81164734138925666480749845858446500488E+417' +xfmt8721 format 0e0 '\xe9\xaf\x82^ 49,.69E' -> ' 0.000000000000000000000000000000000000000000000000000000000000000000000E+69' +xfmt8722 format 0e0 '0' -> '0' +xfmt8723 format 0e83 '10.34F' -> '0.0000000000000000000000000000000000' +xfmt8724 format 0E2 ' 086,.18' -> ' 00,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000E+2' +xfmt8725 format 69E0 '\xe2\x95\xb0>-,' -> '69' +xfmt8726 format -79e0 '+095,.44e' -> '-00,000,000,000,000,000,000,000,000,000,000,007.90000000000000000000000000000000000000000000e+1' +xfmt8727 format 10E198 '+098,.7G' -> '+00,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,001.0E+199' +xfmt8728 format -41e315 '\xe8\x90\x88= 44,' -> '-\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x88\xe8\x90\x884.1E+316' +xfmt8729 format 53538906407E0 '.9' -> '5.35389064E+10' +xfmt8730 format -62881210080e0 '\xe9\xbd\x9b=+52,.24G' -> '-\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b\xe9\xbd\x9b62,881,210,080' +xfmt8731 format 56939044935e330 '\xe2\xab\xb7>+21,.53g' -> '\xe2\xab\xb7\xe2\xab\xb7\xe2\xab\xb7+5.6939044935e+340' +xfmt8732 format -70992131749E101 '\xec\x86\x9d=+22,.65E' -> '-7.09921317490000000000000000000000000000000000000000000000000000000E+111' +xfmt8733 format 487394208121636516293726e0 '-.27' -> '487394208121636516293726' +xfmt8734 format -299050542656585287770273E0 ' 26.94' -> ' -299050542656585287770273' +xfmt8735 format 375467848907809120321801E320 ' %' -> ' 3754678489078091203218010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8736 format -789163063087843306985428E345 '\xec\xa7\xa8^+98,.39e' -> '\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8-7.891630630878433069854280000000000000000e+368\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8\xec\xa7\xa8' +xfmt8737 format 735843221542104796865723831e0 '\xec\x95\xb9=+,.13f' -> '+735,843,221,542,104,796,865,723,831.0000000000000' +xfmt8738 format -141536043032516206502353840E0 '\xe3\xbc\xb7> 12,.92G' -> '-141,536,043,032,516,206,502,353,840' +xfmt8739 format 236294232338613611012270399E113 ',.30' -> '2.36294232338613611012270399E+139' +xfmt8740 format -944948052013033938436293355E45 '\xef\x83\xa2> 98,.28g' -> '\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2\xef\x83\xa2-9.44948052013033938436293355e+71' +xfmt8741 format 357427531399340E0 ' 076,.30f' -> ' 0,000,000,000,000,000,000,357,427,531,399,340.000000000000000000000000000000' +xfmt8742 format -750818651105757E0 '-077,.82' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,750,818,651,105,757' +xfmt8743 format 586920917949877e34 '\xe1\x9d\x9a<,' -> '5.86920917949877E+48' +xfmt8744 format -703915900237671E14 '0.98e' -> '-7.03915900237671000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+28' +xfmt8745 format 191874501066691186e0 ' 030.24' -> ' 00000000000191874501066691186' +xfmt8746 format -815664926756083672e0 '\xe1\xa1\xaa=86' -> '-\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa\xe1\xa1\xaa815664926756083672' +xfmt8747 format 317638018288792212E1 '\xe3\x8b\xa9^G' -> '3.17638018288792212E+18' +xfmt8748 format -686120302160172801E298 '\xe3\x9e\x9b> g' -> '-6.86120302160172801e+315' +xfmt8749 format 54557966280715029986365556380827221811E0 '\xe0\xa9\x80<+74.34F' -> '+54557966280715029986365556380827221811.0000000000000000000000000000000000' +xfmt8750 format -33797590114816593851198880710671021209E0 '\xe8\x99\xba<+,' -> '-33,797,590,114,816,593,851,198,880,710,671,021,209' +xfmt8751 format 94976457168705153052654444957093116251E93 '.48' -> '9.4976457168705153052654444957093116251E+130' +xfmt8752 format -54069384720366947496558963575282727899e228 '\xea\x99\x8b=20.50e' -> '-5.40693847203669474965589635752827278990000000000000e+265' +xfmt8753 format 254180014459093947879845732833640E0 '09,' -> '254,180,014,459,093,947,879,845,732,833,640' +xfmt8754 format -789943885968976092248986680265934E0 ',G' -> '-789,943,885,968,976,092,248,986,680,265,934' +xfmt8755 format 770184548567620033217622889992569E49 '\xe7\x85\x8d<74' -> '7.70184548567620033217622889992569E+81\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d\xe7\x85\x8d' +xfmt8756 format -870313209332523020263501809758183E243 '\xe9\xaf\xab>21' -> '-8.70313209332523020263501809758183E+275' +xfmt8757 format 51259390859781112634478e0 '\xe3\x80\xbc^+59,.62G' -> '\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc+51,259,390,859,781,112,634,478\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc\xe3\x80\xbc' +xfmt8758 format -21805132674579882260570e0 '\xe2\x87\xb1>-12,.84' -> '-21,805,132,674,579,882,260,570' +xfmt8759 format 19071458519726238348356E183 ' 064,F' -> ' 19,071,458,519,726,238,348,356,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt8760 format -56129841289486496338503e167 '' -> '-5.6129841289486496338503E+189' +xfmt8761 format 71265682960799956e0 '' -> '71265682960799956' +xfmt8762 format -62084528394503628E0 '\xe3\x87\x83=+43,.80%' -> '-6,208,452,839,450,362,800.00000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8763 format 17115662842812112E90 '' -> '1.7115662842812112E+106' +xfmt8764 format -57417800291016089e305 '\xef\x8f\x9e>-91,F' -> '-5,741,780,029,101,608,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt8765 format 570203342101326887715e0 '\xec\x82\xae> 37,.61g' -> '\xec\x82\xae\xec\x82\xae\xec\x82\xae\xec\x82\xae\xec\x82\xae\xec\x82\xae\xec\x82\xae\xec\x82\xae\xec\x82\xae 570,203,342,101,326,887,715' +xfmt8766 format -772442570841921735153e0 '\xe1\xab\xbf< 43,.92%' -> '-77,244,257,084,192,173,515,300.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8767 format 320411362934410706877e372 '\xe2\xae\x92> ,.22F' -> ' 320,411,362,934,410,706,877,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000' +xfmt8768 format -870088517654320893119e251 '+57' -> ' -8.70088517654320893119E+271' +xfmt8769 format 8610256050399E0 '\xec\xad\x9e=' -> '8610256050399' +xfmt8770 format -7930761953821E0 '+060.24' -> '-00000000000000000000000000000000000000000000007930761953821' +xfmt8771 format 9427450687203e169 '\xd4\xbc=.97' -> '9.427450687203E+181' +xfmt8772 format -2911554783731E82 ',f' -> '-29,115,547,837,310,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt8773 format 2708493351331236654416833941363897E0 '41E' -> ' 2.708493351331236654416833941363897E+33' +xfmt8774 format -2639629102341970825527040157187303E0 '.96' -> '-2639629102341970825527040157187303' +xfmt8775 format 1167195633705644872678799227657261E37 '+94,' -> ' +1.167195633705644872678799227657261E+70' +xfmt8776 format -1097250643707141660431389339023597e5 ' 010.78e' -> '-1.097250643707141660431389339023597000000000000000000000000000000000000000000000e+38' +xfmt8777 format 7570213988997673060926839836468500577424e0 '-,' -> '7,570,213,988,997,673,060,926,839,836,468,500,577,424' +xfmt8778 format -8974342144502637396408414616105242266987E0 '-042,.43G' -> '-8,974,342,144,502,637,396,408,414,616,105,242,266,987' +xfmt8779 format 6481099937682240784642495552655568093806E357 '\xe6\x9b\xbd>' -> '6.481099937682240784642495552655568093806E+396' +xfmt8780 format -1586579434945461704573279843733541237648e377 '\xea\x9d\xa8<,.90' -> '-1.586579434945461704573279843733541237648E+416' +xfmt8781 format 6880E0 '\xe8\x9c\x86= ,.71G' -> ' 6,880' +xfmt8782 format -8714e0 '-' -> '-8714' +xfmt8783 format 6099E140 '8,.37' -> '6.099E+143' +xfmt8784 format -7209E65 'F' -> '-720900000000000000000000000000000000000000000000000000000000000000000' +xfmt8785 format 123456789012345.12345678901234 '\xe5\x91\x92=53,.13' -> '\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x92\xe5\x91\x921.234567890123E+14' +xfmt8786 format -1234567890123456789012.12345678901234567890 '' -> '-1234567890123456789012.12345678901234567890' +xfmt8787 format 248111541E0 '\xc3\x86=+n' -> '+248111541' +xfmt8788 format -986234047e0 '' -> '-986234047' +xfmt8789 format 271368785E72 '0.97' -> '2.71368785E+80' +xfmt8790 format -360858836E127 '-49.23' -> ' -3.60858836E+135' +xfmt8791 format 16748243809545200218744510518e0 '' -> '16748243809545200218744510518' +xfmt8792 format -95649476958953888916838140975E0 '\xe7\x92\x85= 77,%' -> '-\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x859,564,947,695,895,388,891,683,814,097,500%' +xfmt8793 format 67529865928617125416099763690E23 'G' -> '6.7529865928617125416099763690E+51' +xfmt8794 format -95922673851389092731400143847E221 '' -> '-9.5922673851389092731400143847E+249' +xfmt8795 format 3002124816336E0 '\xeb\x9c\x88>-84,.68' -> '\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x88\xeb\x9c\x883,002,124,816,336' +xfmt8796 format -2042703073167e0 '\xee\xaf\x91<+83,.58F' -> '-2,042,703,073,167.0000000000000000000000000000000000000000000000000000000000\xee\xaf\x91\xee\xaf\x91\xee\xaf\x91\xee\xaf\x91\xee\xaf\x91\xee\xaf\x91' +xfmt8797 format 9853162712534E347 '\xea\x96\xb8^5,E' -> '9.853162712534E+359' +xfmt8798 format -8730526334986E171 '01,.81E' -> '-8.730526334986000000000000000000000000000000000000000000000000000000000000000000000E+183' +xfmt8799 format 1910776804397966956757154684130840215187e0 '\xe6\x89\xbe^ 1,%' -> ' 191,077,680,439,796,695,675,715,468,413,084,021,518,700%' +xfmt8800 format -1740638721334667341627988806451554544364e0 '\xe4\xae\x9a>+74,.63e' -> '\xe4\xae\x9a\xe4\xae\x9a\xe4\xae\x9a\xe4\xae\x9a-1.740638721334667341627988806451554544364000000000000000000000000e+39' +xfmt8801 format 2343155540027444101489844022363469559862e322 '\xe6\xab\x83= 98,.30f' -> ' 23,431,555,400,274,441,014,898,440,223,634,695,598,620,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000' +xfmt8802 format -7822429193465654823156639996126024568025e159 '' -> '-7.822429193465654823156639996126024568025E+198' +xfmt8803 format 33818162143103017329944E0 '\xe6\xad\x88=-87,E' -> '\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x88\xe6\xad\x883.3818162143103017329944E+22' +xfmt8804 format -20648583501638047065627E0 '90,f' -> ' -20,648,583,501,638,047,065,627' +xfmt8805 format 15093855581597638165202E107 '\xe3\x9c\xa3>+,.99%' -> '+150,938,555,815,976,381,652,020,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8806 format -97068400959371310197445E267 '\xec\xbf\x87=.37' -> '-9.7068400959371310197445E+289' +xfmt8807 format 19338776949672558593898393666405066e0 '0' -> '19338776949672558593898393666405066' +xfmt8808 format -56504627458562590049761485771555283e0 '' -> '-56504627458562590049761485771555283' +xfmt8809 format 35265537045591320135964735913224680e163 '\xe6\xbd\xbb=41.66' -> '3.5265537045591320135964735913224680E+197' +xfmt8810 format -17870000525502335123293410223082201e12 '-30,.94e' -> '-1.7870000525502335123293410223082201000000000000000000000000000000000000000000000000000000000000e+46' +xfmt8811 format 95348390155987462506845862348168563608519e0 '\xe1\x92\x8c<-95,.91%' -> '9,534,839,015,598,746,250,684,586,234,816,856,360,851,900.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8812 format -56951824236355884712019367312046749599938E0 '\xe7\xb5\xb7<+58,.46' -> '-56,951,824,236,355,884,712,019,367,312,046,749,599,938\xe7\xb5\xb7\xe7\xb5\xb7\xe7\xb5\xb7' +xfmt8813 format 70750567750850593692165730157342736725468e235 '0e' -> '7.0750567750850593692165730157342736725468e+275' +xfmt8814 format -99653859063013269016356601425807848151790e152 '\xe0\xa1\xa2=-59,.6F' -> '-9,965,385,906,301,326,901,635,660,142,580,784,815,179,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000' +xfmt8815 format 2856446711004494632111980758218e0 '32G' -> ' 2856446711004494632111980758218' +xfmt8816 format -2632435001496435544161654584698E0 '\xef\xa0\xa0^-,.76' -> '-2,632,435,001,496,435,544,161,654,584,698' +xfmt8817 format 7965676242565249818587921714376E357 '.1E' -> '8.0E+387' +xfmt8818 format -2106133548346468280704603813679e321 '' -> '-2.106133548346468280704603813679E+351' +xfmt8819 format 33319021467750095151714994879034566447946269e0 '\xe0\xa1\xb6= 1,.78g' -> ' 33,319,021,467,750,095,151,714,994,879,034,566,447,946,269' +xfmt8820 format -48502624463759870697131748033239861354892286E0 '\xe3\xa7\xad^E' -> '-4.8502624463759870697131748033239861354892286E+43' +xfmt8821 format 15298738356126393482157237953605580778771000e162 '\xe9\xb5\xac>-10.73n' -> '1.5298738356126393482157237953605580778771000e+205' +xfmt8822 format -10543350086529660924810507442411744135654775e20 '\xe5\xb5\x8b^-11,e' -> '-1.0543350086529660924810507442411744135654775e+63' +xfmt8823 format 26825096227418808931212947799427e0 '\xed\x92\x85=,.29%' -> '2,682,509,622,741,880,893,121,294,779,942,700.00000000000000000000000000000%' +xfmt8824 format -63791547795772157962663463272918e0 ',.2' -> '-6.4E+31' +xfmt8825 format 30793330474585512269342646450104E191 ',' -> '3.0793330474585512269342646450104E+222' +xfmt8826 format -99213339337888682759192380438088E348 '045,' -> '-000,009.9213339337888682759192380438088E+379' +xfmt8827 format 537838738007309950521721617394269119828834e0 '\xe4\x8b\xb3=+56,.88' -> '+537,838,738,007,309,950,521,721,617,394,269,119,828,834' +xfmt8828 format -369827337013047504200737225503722600300864e0 '' -> '-369827337013047504200737225503722600300864' +xfmt8829 format 688212096991314025100057806797553125102951E13 '+0' -> '+6.88212096991314025100057806797553125102951E+54' +xfmt8830 format -962229379182616718782144933477399287722783E380 '\xeb\x9b\x93=+63,.74e' -> '-9.62229379182616718782144933477399287722783000000000000000000000000000000000e+421' +xfmt8831 format 721048528429456e0 '+080' -> '+0000000000000000000000000000000000000000000000000000000000000000721048528429456' +xfmt8832 format -893405607675887e0 '+042,' -> '-0,000,000,000,000,000,893,405,607,675,887' +xfmt8833 format 713231973363250e59 '\xe1\xb4\x86<-,.82' -> '7.13231973363250E+73' +xfmt8834 format -624156723645170E119 '\xe1\x87\xa6<.26' -> '-6.24156723645170E+133' +xfmt8835 format 7787319636333078274082960728626682796E0 '' -> '7787319636333078274082960728626682796' +xfmt8836 format -5687954019682422330308585501916883501E0 '+18,e' -> '-5.687954019682422330308585501916883501e+36' +xfmt8837 format 1922063547729448915679651830811085686e344 '' -> '1.922063547729448915679651830811085686E+380' +xfmt8838 format -4867239230181677782832762328484314741e292 '+.96E' -> '-4.867239230181677782832762328484314741000000000000000000000000000000000000000000000000000000000000E+328' +xfmt8839 format 32287031573548750139E0 '\xee\x88\x82= 55,.48' -> ' \xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x82\xee\x88\x8232,287,031,573,548,750,139' +xfmt8840 format -99569794942294225810E0 '.29' -> '-99569794942294225810' +xfmt8841 format 99849603795753575382E182 '.37' -> '9.9849603795753575382E+201' +xfmt8842 format -84379297182661755910e163 '+0' -> '-8.4379297182661755910E+182' +xfmt8843 format 32863652589316525060719900e0 '+,e' -> '+3.2863652589316525060719900e+25' +xfmt8844 format -36160576475426590354749090e0 '\xef\xb7\x89=,' -> '-36,160,576,475,426,590,354,749,090' +xfmt8845 format 17561299982661375208261279E29 '0.20' -> '1.7561299982661375208E+54' +xfmt8846 format -57152328291268069685112752e190 ',' -> '-5.7152328291268069685112752E+215' +xfmt8847 format 72089683423395170e0 '38' -> ' 72089683423395170' +xfmt8848 format -24858546853074502e0 '\xef\x8b\x98=9,.76G' -> '-24,858,546,853,074,502' +xfmt8849 format 56930298077818350e289 '\xef\x95\x8e<-,.95' -> '5.6930298077818350E+305' +xfmt8850 format -25105446319918523E152 '\xee\x98\xbd>-30,.8f' -> '-2,510,544,631,991,852,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000' +xfmt8851 format 750782e0 '\xe6\xb4\xb5^75,' -> '\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5750,782\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5\xe6\xb4\xb5' +xfmt8852 format -520175E0 '\xc8\xb0^ 11,.99' -> '\xc8\xb0-520,175\xc8\xb0\xc8\xb0' +xfmt8853 format 227264e337 '+043.82F' -> '+2272640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8854 format -473037E192 '.25G' -> '-4.73037E+197' +xfmt8855 format 739285369882438656759014678972479729E0 '\xea\x93\xa4=+F' -> '+739285369882438656759014678972479729' +xfmt8856 format -882672127806808816085861125910858383e0 '\xef\xbb\x9a^' -> '-882672127806808816085861125910858383' +xfmt8857 format 662845940188688436632172377421255409e82 '' -> '6.62845940188688436632172377421255409E+117' +xfmt8858 format -936005192898552711735987857633454755e237 '.45f' -> '-936005192898552711735987857633454755000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000' +xfmt8859 format 7366637436E0 '\xe3\xaf\x8c=,g' -> '7,366,637,436' +xfmt8860 format -7486628346E0 '\xe4\xb9\xaf=76,g' -> '-\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf\xe4\xb9\xaf7,486,628,346' +xfmt8861 format 3633524943E220 '+097.53G' -> '+000000000000000000000000000000000000000000000000000000000000000000000000000000003.633524943E+229' +xfmt8862 format -8328637503E132 '-' -> '-8.328637503E+141' +xfmt8863 format 48651814813E0 '\xe6\x88\x9e< 61,G' -> ' 48,651,814,813\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e\xe6\x88\x9e' +xfmt8864 format -56601693934E0 ' .83' -> '-56601693934' +xfmt8865 format 20504630531E152 '\xee\x93\x99>+44.4' -> '\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99\xee\x93\x99+2.050E+162' +xfmt8866 format -33109771817e186 '+0,.35f' -> '-33,109,771,817,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000' +xfmt8867 format 85e0 '' -> '85' +xfmt8868 format -42E0 '\xef\x85\x8d^+52,.37g' -> '\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d-42\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d\xef\x85\x8d' +xfmt8869 format 55E135 '-14.7' -> ' 5.5E+136' +xfmt8870 format -67e99 '\xee\xb9\xa8^-85,.2g' -> '\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8-6.7e+100\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8\xee\xb9\xa8' +xfmt8871 format 340794389883949424949324923208035e0 '' -> '340794389883949424949324923208035' +xfmt8872 format -753712221663486073518139074297830E0 '\xee\xb1\x81=.11g' -> '-7.5371222166e+32' +xfmt8873 format 890410319051440404876239026814702E377 '\xee\xa5\x9a> ,' -> ' 8.90410319051440404876239026814702E+409' +xfmt8874 format -317844040681042968716056103812384e20 '\xe9\xad\x88>-48,.68g' -> '\xe9\xad\x88\xe9\xad\x88\xe9\xad\x88\xe9\xad\x88\xe9\xad\x88\xe9\xad\x88\xe9\xad\x88\xe9\xad\x88\xe9\xad\x88-3.17844040681042968716056103812384e+52' +xfmt8875 format 320331924362889204350850301e0 '51,.33f' -> '320,331,924,362,889,204,350,850,301.000000000000000000000000000000000' +xfmt8876 format -162913026373073637520366847E0 '' -> '-162913026373073637520366847' +xfmt8877 format 513048943238795419777848093e106 '10' -> '5.13048943238795419777848093E+132' +xfmt8878 format -447978959587466659496300319e177 '\xe3\x82\xaf^' -> '-4.47978959587466659496300319E+203' +xfmt8879 format 785e0 '\xe7\x83\xa2<-56.9n' -> '785\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2\xe7\x83\xa2' +xfmt8880 format -682e0 '55' -> ' -682' +xfmt8881 format 136e282 '\xe2\xb7\xa6^ 84,.61%' -> ' 13,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000%' +xfmt8882 format -942e270 '' -> '-9.42E+272' +xfmt8883 format 84200520E0 '\xe8\x92\xaf>9,G' -> '84,200,520' +xfmt8884 format -46002391e0 '\xe6\x80\x89=12,.87E' -> '-4.600239100000000000000000000000000000000000000000000000000000000000000000000000000000000E+7' +xfmt8885 format 19475602e6 '+,.17' -> '+1.9475602E+13' +xfmt8886 format -22270285E145 '' -> '-2.2270285E+152' +xfmt8887 format 613104919605762025e0 '\xe7\xad\xb6=-32G' -> '\xe7\xad\xb6\xe7\xad\xb6\xe7\xad\xb6\xe7\xad\xb6\xe7\xad\xb6\xe7\xad\xb6\xe7\xad\xb6\xe7\xad\xb6\xe7\xad\xb6\xe7\xad\xb6\xe7\xad\xb6\xe7\xad\xb6\xe7\xad\xb6\xe7\xad\xb6613104919605762025' +xfmt8888 format -144665523518215448e0 ',.35G' -> '-144,665,523,518,215,448' +xfmt8889 format 890761865779829838e42 'e' -> '8.90761865779829838e+59' +xfmt8890 format -847574966787268553e294 '\xee\xaa\xac<58,.72f' -> '-847,574,966,787,268,553,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8891 format 8896700032523498555E0 ' 065,.60' -> ' 0,000,000,000,000,000,000,000,000,000,008,896,700,032,523,498,555' +xfmt8892 format -3314475482820250161e0 '+1,g' -> '-3,314,475,482,820,250,161' +xfmt8893 format 8089740946254713218E148 '\xe3\x89\x9d=+.87' -> '+8.089740946254713218E+166' +xfmt8894 format -3194679518550766596e48 '\xe9\x80\xab>61.61e' -> '-3.1946795185507665960000000000000000000000000000000000000000000e+66' +xfmt8895 format 3325848303332610887052140598e0 '\xe4\x9f\xbb<-,.98f' -> '3,325,848,303,332,610,887,052,140,598.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8896 format -3003331490272288607366056526e0 '\xe1\x87\xa7>' -> '-3003331490272288607366056526' +xfmt8897 format 5895349073910618193717150133E169 '\xe4\x84\x9d=+99,' -> '+\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d\xe4\x84\x9d5.895349073910618193717150133E+196' +xfmt8898 format -2501101610716719959809541100E68 '+32,.62%' -> '-25,011,016,107,167,199,598,095,411,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000%' +xfmt8899 format 66041176421121999147698917130698432191E0 ' 098,.54F' -> ' 66,041,176,421,121,999,147,698,917,130,698,432,191.000000000000000000000000000000000000000000000000000000' +xfmt8900 format -21777552064050670287340532333726702318E0 ' 040g' -> '-021777552064050670287340532333726702318' +xfmt8901 format 93514489683216517806232314802586245303E228 '\xe1\x9f\x8f^+71,.75g' -> '\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f+9.3514489683216517806232314802586245303e+265\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f\xe1\x9f\x8f' +xfmt8902 format -33618758754035403470812945603519725232e31 '+,' -> '-3.3618758754035403470812945603519725232E+68' +xfmt8903 format 8645150999722300893558532824769130976036805E0 '57%' -> ' 864515099972230089355853282476913097603680500%' +xfmt8904 format -1937147530018722907958991990495647611081978e0 '\xec\xab\x96>+.89' -> '-1937147530018722907958991990495647611081978' +xfmt8905 format 7790862742896292945181592844338150262467734e32 '\xe7\xa3\x9f<25,.47f' -> '779,086,274,289,629,294,518,159,284,433,815,026,246,773,400,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000' +xfmt8906 format -1997462560020415148798316643807384800529591e208 '\xe4\xa3\xba=-.31' -> '-1.997462560020415148798316643807E+250' +xfmt8907 format 1234567890123456789012.123456789 '' -> '1234567890123456789012.123456789' +xfmt8908 format -1234567890123456.12345678901234567890 '\xe1\xbf\x9b^56.11E' -> '\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b-1.23456789012E+15\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b\xe1\xbf\x9b' +xfmt8909 format 201245530659E0 '\xe8\x8f\x91^+13,.60g' -> '+201,245,530,659' +xfmt8910 format -589760911195E0 '+084,g' -> '-000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,589,760,911,195' +xfmt8911 format 868803245228e378 '84' -> ' 8.68803245228E+389' +xfmt8912 format -394756744617e74 '\xed\x95\x90^+7,.79' -> '-3.94756744617E+85' +xfmt8913 format 1778E0 '\xe3\xa3\xa2=-.84' -> '1778' +xfmt8914 format -4552e0 ' 43,.75%' -> '-455,200.000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8915 format 4090e184 '\xe9\xad\x83=' -> '4.090E+187' +xfmt8916 format -5247e305 '\xe2\x99\x96<21,.98f' -> '-524,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8917 format 46639057371345360070383157713374830735860E0 '.45%' -> '4663905737134536007038315771337483073586000.000000000000000000000000000000000000000000000%' +xfmt8918 format -71915167729637067451849226115915555263174e0 '' -> '-71915167729637067451849226115915555263174' +xfmt8919 format 67829645663351453431050021080520459470055E66 '\xec\xa8\xa1> ,E' -> ' 6.7829645663351453431050021080520459470055E+106' +xfmt8920 format -34256643933185640232081018188550996035273E269 '' -> '-3.4256643933185640232081018188550996035273E+309' +xfmt8921 format 2101544170447260457397817563e0 '-' -> '2101544170447260457397817563' +xfmt8922 format -7628258211847699910955208011e0 '\xed\x8e\x8d>50,.61F' -> '-7,628,258,211,847,699,910,955,208,011.0000000000000000000000000000000000000000000000000000000000000' +xfmt8923 format 6448981562779170244726970352E134 '' -> '6.448981562779170244726970352E+161' +xfmt8924 format -1071056516440563555306764222E194 '7' -> '-1.071056516440563555306764222E+221' +xfmt8925 format 7109865339441447411308303168966170698E0 '\xea\xba\xa1>-90,.64E' -> '\xea\xba\xa1\xea\xba\xa1\xea\xba\xa1\xea\xba\xa1\xea\xba\xa1\xea\xba\xa1\xea\xba\xa1\xea\xba\xa1\xea\xba\xa1\xea\xba\xa1\xea\xba\xa1\xea\xba\xa1\xea\xba\xa1\xea\xba\xa1\xea\xba\xa1\xea\xba\xa1\xea\xba\xa1\xea\xba\xa1\xea\xba\xa1\xea\xba\xa17.1098653394414474113083031689661706980000000000000000000000000000E+36' +xfmt8926 format -8250828389308103846982561971186438214e0 '\xe9\xbe\xa8^' -> '-8250828389308103846982561971186438214' +xfmt8927 format 1782369484693953827564102598198529139E85 '' -> '1.782369484693953827564102598198529139E+121' +xfmt8928 format -9452399453014853848910790640034012099e114 '\xe3\xa8\xa0^ 26,.27f' -> '-9,452,399,453,014,853,848,910,790,640,034,012,099,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000' +xfmt8929 format 8084126769861040914869266125659416e0 ',.50f' -> '8,084,126,769,861,040,914,869,266,125,659,416.00000000000000000000000000000000000000000000000000' +xfmt8930 format -6492967740993694119010925566695337e0 '71,G' -> ' -6,492,967,740,993,694,119,010,925,566,695,337' +xfmt8931 format 8113830406651624075606808974111786e214 '\xea\xb5\xaa>+.91' -> '+8.113830406651624075606808974111786E+247' +xfmt8932 format -3160246789846225250436792584430079e226 '\xe9\x9a\xbf=-8,.99E' -> '-3.160246789846225250436792584430079000000000000000000000000000000000000000000000000000000000000000000E+259' +xfmt8933 format 39663645623624613321475900458265227e0 '' -> '39663645623624613321475900458265227' +xfmt8934 format -49867556865040146472564668159001914E0 '\xce\x9e<+30,.44F' -> '-49,867,556,865,040,146,472,564,668,159,001,914.00000000000000000000000000000000000000000000' +xfmt8935 format 12801497922966115005957798765722049e54 '\xe7\x9a\xa6=+.57' -> '+1.2801497922966115005957798765722049E+88' +xfmt8936 format -97244834630300376723541108835819419E306 '+021.80' -> '-9.7244834630300376723541108835819419E+340' +xfmt8937 format 2953509447758296029e0 '\xec\x81\x80= 24.30E' -> ' 2.953509447758296029000000000000E+18' +xfmt8938 format -2895323721152653121e0 '\xe4\xb7\xb5=+' -> '-2895323721152653121' +xfmt8939 format 7542957384326243304E296 '\xe2\x88\xba^82,.62f' -> '754,295,738,432,624,330,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000' +xfmt8940 format -1252857197850324643e350 '\xeb\xae\xa2< 14,' -> '-1.252857197850324643E+368' +xfmt8941 format 852055749E0 '+G' -> '+852055749' +xfmt8942 format -931155933E0 '\xe5\x86\x95=+.71g' -> '-931155933' +xfmt8943 format 422970312E260 '+047,g' -> '+0,000,000,000,000,000,000,000,004.22970312e+268' +xfmt8944 format -975735561E32 '\xe3\x85\xb3^+41.1F' -> '-97573556100000000000000000000000000000000.0' +xfmt8945 format 9093512696E0 '\xe2\x9a\xac<+.9' -> '+9.09351270E+9' +xfmt8946 format -5566674022E0 '42' -> ' -5566674022' +xfmt8947 format 9793410135e313 '\xe4\xa6\x9a<+' -> '+9.793410135E+322' +xfmt8948 format -2432373557E205 '\xeb\x99\x9e>-44,.14F' -> '-24,323,735,570,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000' +xfmt8949 format 4296012488909158557922000478807369763241e0 '\xe2\x9b\x80^97,.6' -> '\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x804.29601E+39\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80\xe2\x9b\x80' +xfmt8950 format -6652663099954263182500025722084439630064E0 '\xec\xac\xa1<93,' -> '-6,652,663,099,954,263,182,500,025,722,084,439,630,064\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1\xec\xac\xa1' +xfmt8951 format 2676733218744333866037992228624727292383e35 '\xea\x80\xb2= 46,e' -> ' 2.676733218744333866037992228624727292383e+74' +xfmt8952 format -9970638842318435658615884898192555986618e194 '040' -> '-9.970638842318435658615884898192555986618E+233' +xfmt8953 format 9304432463451806379711075905860970747080711E0 '\xec\xbf\xb2^ 49,.8G' -> '\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2 9.3044325E+42\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2\xec\xbf\xb2' +xfmt8954 format -2422666593246275308551138717424419993699685e0 '\xe1\x93\xb6^+83,.48f' -> '-2,422,666,593,246,275,308,551,138,717,424,419,993,699,685.000000000000000000000000000000000000000000000000' +xfmt8955 format 6656235981185086815593223279360652630693880e149 'G' -> '6.656235981185086815593223279360652630693880E+191' +xfmt8956 format -6160783334477080401957310345794540696509972E175 '' -> '-6.160783334477080401957310345794540696509972E+217' +xfmt8957 format 67648586762376576369418537015159e0 '' -> '67648586762376576369418537015159' +xfmt8958 format -98391675480392177855339283029930E0 '\xe3\xad\xba= 99,.75%' -> '-9,839,167,548,039,217,785,533,928,302,993,000.000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8959 format 61863550140017484475009644109608E113 '-45' -> ' 6.1863550140017484475009644109608E+144' +xfmt8960 format -66264454366499577997405140112054E90 '\xec\xa7\xa3=+,G' -> '-6.6264454366499577997405140112054E+121' +xfmt8961 format 13733370503468493356355449966e0 '.72F' -> '13733370503468493356355449966.000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8962 format -61641051098527808328943920238e0 '-64' -> ' -61641051098527808328943920238' +xfmt8963 format 93161478194432174036855703934e94 ',' -> '9.3161478194432174036855703934E+122' +xfmt8964 format -46386918378776981510080188094E298 'E' -> '-4.6386918378776981510080188094E+326' +xfmt8965 format 97039756399719813967114578852077318445e0 '\xec\xaf\x9e^-,.35' -> '9.7039756399719813967114578852077318E+37' +xfmt8966 format -60718640703981962599438664027303622786E0 '0.73F' -> '-60718640703981962599438664027303622786.0000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8967 format 29033680390589011129542092352266873716e189 '\xe7\xb5\xb1> 15,.71' -> ' 2.9033680390589011129542092352266873716E+226' +xfmt8968 format -40939284715466367157294737578444843582E186 '\xe2\x84\x84> 31,.44f' -> '-40,939,284,715,466,367,157,294,737,578,444,843,582,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000' +xfmt8969 format 53755179775E0 '+55G' -> ' +53755179775' +xfmt8970 format -17254620905E0 '\xe2\x87\x9c^-,' -> '-17,254,620,905' +xfmt8971 format 20354919229e294 '\xee\xa2\x83>+f' -> '+20354919229000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt8972 format -52167456706E26 '0,' -> '-5.2167456706E+36' +xfmt8973 format 48438465270424E0 '0.39' -> '48438465270424' +xfmt8974 format -26059821817017E0 '\xe5\x8c\xb1>44' -> '\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1\xe5\x8c\xb1-26059821817017' +xfmt8975 format 62872852576095E224 '-.39' -> '6.2872852576095E+237' +xfmt8976 format -46819137240584E337 '\xec\x84\x99=' -> '-4.6819137240584E+350' +xfmt8977 format 341451E0 '\xe5\x9a\xa8^ 2,.67E' -> ' 3.4145100000000000000000000000000000000000000000000000000000000000000E+5' +xfmt8978 format -595359E0 '\xef\x8a\x9e=42.7G' -> '-\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e\xef\x8a\x9e595359' +xfmt8979 format 416516e156 '\xe5\xb9\x9e^-26.89%' -> '41651600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8980 format -393080E119 '\xe9\x87\x87= 13,%' -> '-3,930,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt8981 format 64071799695901282121e0 '\xec\x88\x90^+.18n' -> '+6.40717996959012821e+19' +xfmt8982 format -27159157111317777137e0 '\xe9\x8f\xa9^ 14.35g' -> '-27159157111317777137' +xfmt8983 format 43718468615414880050e361 '\xe7\xa1\x86=,E' -> '4.3718468615414880050E+380' +xfmt8984 format -97984368825374082141e242 '\xe1\xa5\x99=+,.77%' -> '-979,843,688,253,740,821,410,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8985 format 48327601753492090826917577250802816444435995E0 '+0,.34F' -> '+48,327,601,753,492,090,826,917,577,250,802,816,444,435,995.0000000000000000000000000000000000' +xfmt8986 format -74970261923442703327622284853447785300213941E0 '\xec\x8a\x8d< 71,.91' -> '-74,970,261,923,442,703,327,622,284,853,447,785,300,213,941\xec\x8a\x8d\xec\x8a\x8d\xec\x8a\x8d\xec\x8a\x8d\xec\x8a\x8d\xec\x8a\x8d\xec\x8a\x8d\xec\x8a\x8d\xec\x8a\x8d\xec\x8a\x8d\xec\x8a\x8d\xec\x8a\x8d' +xfmt8987 format 16259652685614163629508757335079653977331253E106 '\xe6\x9e\xbc<+53,.92%' -> '+16,259,652,685,614,163,629,508,757,335,079,653,977,331,253,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt8988 format -34787874839930140105817297267930969396314599E80 '7' -> '-3.4787874839930140105817297267930969396314599E+123' +xfmt8989 format 708392575667341661464021217889091642313e0 '\xe4\x95\xb2<+90,.41f' -> '+708,392,575,667,341,661,464,021,217,889,091,642,313.00000000000000000000000000000000000000000' +xfmt8990 format -344040480512919325902729876505106600533E0 '\xdf\xa5= 47,.83' -> '-344,040,480,512,919,325,902,729,876,505,106,600,533' +xfmt8991 format 274829645191908909781711410136245007381E284 '\xe5\xac\xb4<-58,.46%' -> '2,748,296,451,919,089,097,817,114,101,362,450,073,810,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000%' +xfmt8992 format -800999793479897278211226174224026130472E271 ' 038,.29' -> '-008.0099979347989727821122617422E+309' +xfmt8993 format 39700849308178135823629050E0 '+019,.8%' -> '+3,970,084,930,817,813,582,362,905,000.00000000%' +xfmt8994 format -35014924271166142897402871e0 '\xee\xaf\xb4> .71' -> '-35014924271166142897402871' +xfmt8995 format 54879723430553611527311904E98 '\xe3\xbe\xab>' -> '5.4879723430553611527311904E+123' +xfmt8996 format -71621659505707059885310184e185 '' -> '-7.1621659505707059885310184E+210' +xfmt8997 format 85827841472405651E0 '-' -> '85827841472405651' +xfmt8998 format -41272161183163967e0 '\xe4\xb2\x99>+,' -> '-41,272,161,183,163,967' +xfmt8999 format 15844478843484281E105 '\xea\xb7\xbf<-99,.82e' -> '1.5844478843484281000000000000000000000000000000000000000000000000000000000000000000e+121\xea\xb7\xbf\xea\xb7\xbf\xea\xb7\xbf\xea\xb7\xbf\xea\xb7\xbf\xea\xb7\xbf\xea\xb7\xbf\xea\xb7\xbf\xea\xb7\xbf\xea\xb7\xbf' +xfmt9000 format -37637993470760467e120 '\xe7\xa4\x82>-,' -> '-3.7637993470760467E+136' +xfmt9001 format 655829268073090078451183124036562E0 '.57' -> '655829268073090078451183124036562' +xfmt9002 format -283357110231426880625735953898040e0 '\xe6\x81\x98<-69.27f' -> '-283357110231426880625735953898040.000000000000000000000000000\xe6\x81\x98\xe6\x81\x98\xe6\x81\x98\xe6\x81\x98\xe6\x81\x98\xe6\x81\x98\xe6\x81\x98' +xfmt9003 format 812641498624416162079204668241791E140 '51,' -> ' 8.12641498624416162079204668241791E+172' +xfmt9004 format -504079688337539201318544052040603E68 ' 08,.48F' -> '-50,407,968,833,753,920,131,854,405,204,060,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000' +xfmt9005 format 7e0 '\xe7\x82\x9c> 14.53G' -> '\xe7\x82\x9c\xe7\x82\x9c\xe7\x82\x9c\xe7\x82\x9c\xe7\x82\x9c\xe7\x82\x9c\xe7\x82\x9c\xe7\x82\x9c\xe7\x82\x9c\xe7\x82\x9c\xe7\x82\x9c\xe7\x82\x9c 7' +xfmt9006 format -4E0 '\xeb\x99\x84^-29g' -> '\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84-4\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84\xeb\x99\x84' +xfmt9007 format 8e278 '' -> '8E+278' +xfmt9008 format -9E263 ' 27' -> ' -9E+263' +xfmt9009 format 524328945492318185273385e0 '\xee\xb5\xbf^38,%' -> '\xee\xb5\xbf52,432,894,549,231,818,527,338,500%\xee\xb5\xbf\xee\xb5\xbf' +xfmt9010 format -905662827798827860514624E0 '' -> '-905662827798827860514624' +xfmt9011 format 534554120880811642249429e318 '' -> '5.34554120880811642249429E+341' +xfmt9012 format -787790336235617835158650E59 ',.45' -> '-7.87790336235617835158650E+82' +xfmt9013 format 378475927657308447366422539393858371e0 '' -> '378475927657308447366422539393858371' +xfmt9014 format -511912190986012773314654540600911439e0 '\xe8\x9a\xaa<,' -> '-511,912,190,986,012,773,314,654,540,600,911,439' +xfmt9015 format 923550463074360183295308581184035674E95 '\xe2\x82\xb0>+88' -> '\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0\xe2\x82\xb0+9.23550463074360183295308581184035674E+130' +xfmt9016 format -638698249797540880832471926193385050E363 '' -> '-6.38698249797540880832471926193385050E+398' +xfmt9017 format 7142785772274E0 '\xeb\xb0\x94^,' -> '7,142,785,772,274' +xfmt9018 format -3427884438777e0 '.27' -> '-3427884438777' +xfmt9019 format 8556431316621e81 '017,.14' -> '8.556431316621E+93' +xfmt9020 format -6412839062123E290 '099,.58' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,006.412839062123E+302' +xfmt9021 format 3719186879398717e0 'g' -> '3719186879398717' +xfmt9022 format -4508036474911111E0 '.80' -> '-4508036474911111' +xfmt9023 format 9291681653167659e87 '+.4E' -> '+9.2917E+102' +xfmt9024 format -1551913105008769E101 '\xed\x98\xb7= .72' -> '-1.551913105008769E+116' +xfmt9025 format 2541204627742072556994021710035e0 '' -> '2541204627742072556994021710035' +xfmt9026 format -6363822464806895196438683623793E0 '0.46E' -> '-6.3638224648068951964386836237930000000000000000E+30' +xfmt9027 format 3691537425746395144419928631767E35 '' -> '3.691537425746395144419928631767E+65' +xfmt9028 format -9523127753930705297132532320852E2 '\xe6\x9b\xae^-9,.57g' -> '-9.523127753930705297132532320852e+32' +xfmt9029 format 123.1234567890123 '\xe0\xaa\xb2=,.10g' -> '123.1234568' +xfmt9030 format -12345678901234.123456789 'n' -> '-12345678901234.123456789' +xfmt9031 format 134302289249106548440720802723173e0 ' 0,' -> ' 134,302,289,249,106,548,440,720,802,723,173' +xfmt9032 format -909853005387100403975855257144382e0 '\xea\xa6\xbd< 62,' -> '-909,853,005,387,100,403,975,855,257,144,382\xea\xa6\xbd\xea\xa6\xbd\xea\xa6\xbd\xea\xa6\xbd\xea\xa6\xbd\xea\xa6\xbd\xea\xa6\xbd\xea\xa6\xbd\xea\xa6\xbd\xea\xa6\xbd\xea\xa6\xbd\xea\xa6\xbd\xea\xa6\xbd\xea\xa6\xbd\xea\xa6\xbd\xea\xa6\xbd\xea\xa6\xbd\xea\xa6\xbd' +xfmt9033 format 243185753409316970231913799828083E341 '\xeb\x89\xaf>-,' -> '2.43185753409316970231913799828083E+373' +xfmt9034 format -450089841924594003985089420746778e205 '' -> '-4.50089841924594003985089420746778E+237' +xfmt9035 format 94834633541e0 '\xe2\xb9\xa7= 64,.82F' -> ' 94,834,633,541.0000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9036 format -42144279403e0 '0,' -> '-42,144,279,403' +xfmt9037 format 93248876192e9 '' -> '9.3248876192E+19' +xfmt9038 format -33502859501e217 '\xe8\x9f\xa3>77,.98' -> '\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3\xe8\x9f\xa3-3.3502859501E+227' +xfmt9039 format 8471774945899E0 '\xee\x9b\xa0>-' -> '8471774945899' +xfmt9040 format -7974452642787e0 '\xec\x92\x80>,.64G' -> '-7,974,452,642,787' +xfmt9041 format 5069473795720e13 '+0' -> '+5.069473795720E+25' +xfmt9042 format -1664587227839e134 '0' -> '-1.664587227839E+146' +xfmt9043 format 2664096323580215276317366971650528452191073e0 '+0,' -> '+2,664,096,323,580,215,276,317,366,971,650,528,452,191,073' +xfmt9044 format -4534694302691161528686000825449057543697174E0 '\xee\x88\xa5^.38' -> '-4.5346943026911615286860008254490575437E+42' +xfmt9045 format 6049043121322344051824854984574103632024351e141 '-.77' -> '6.049043121322344051824854984574103632024351E+183' +xfmt9046 format -2525149969057256869227492389854615069475049e331 '0,' -> '-2.525149969057256869227492389854615069475049E+373' +xfmt9047 format 3E0 '\xe6\xbb\x96^-,.19' -> '3' +xfmt9048 format -9E0 '' -> '-9' +xfmt9049 format 8E65 '\xe8\x89\x80^.27f' -> '800000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000' +xfmt9050 format -3e274 '\xec\x9f\xb5=,.35' -> '-3E+274' +xfmt9051 format 4399370656131977e0 '\xe2\x90\x8f^,' -> '4,399,370,656,131,977' +xfmt9052 format -4310290820668703E0 '21,E' -> '-4.310290820668703E+15' +xfmt9053 format 7009424990403616e358 '' -> '7.009424990403616E+373' +xfmt9054 format -1709128809970029E366 '\xe6\x93\x83< 88,.32' -> '-1.709128809970029E+381\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83\xe6\x93\x83' +xfmt9055 format 40543989859549449099e0 '' -> '40543989859549449099' +xfmt9056 format -78511949025878948767e0 '' -> '-78511949025878948767' +xfmt9057 format 87518872193824667586E310 '-0,.81' -> '8.7518872193824667586E+329' +xfmt9058 format -92687696876006928326E94 '070.54%' -> '-92687696876006928326000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000%' +xfmt9059 format 54053728105228447839746e0 '.93' -> '54053728105228447839746' +xfmt9060 format -76133019547028436004248e0 '+0.45g' -> '-76133019547028436004248' +xfmt9061 format 55000509847145682894008e25 '\xea\x8c\xb0>+.54g' -> '+5.5000509847145682894008e+47' +xfmt9062 format -12768783023525315380091E100 '035,' -> '-00,001.2768783023525315380091E+122' +xfmt9063 format 33971515448950e0 ',' -> '33,971,515,448,950' +xfmt9064 format -49060575364997e0 '\xe4\xbc\x8e> 25,F' -> '\xe4\xbc\x8e\xe4\xbc\x8e\xe4\xbc\x8e\xe4\xbc\x8e\xe4\xbc\x8e\xe4\xbc\x8e-49,060,575,364,997' +xfmt9065 format 64380706191269e122 '32,' -> ' 6.4380706191269E+135' +xfmt9066 format -30256709986656e89 '\xe8\xa9\x85<18.42' -> '-3.0256709986656E+102' +xfmt9067 format 79901e0 '\xe1\xbe\xbc<+8,' -> '+79,901\xe1\xbe\xbc' +xfmt9068 format -12928E0 '\xe6\xa2\xb8< .31G' -> '-12928' +xfmt9069 format 42705e59 '0,' -> '4.2705E+63' +xfmt9070 format -82883E256 '\xe9\x8f\x8a<22n' -> '-8.2883e+260\xe9\x8f\x8a\xe9\x8f\x8a\xe9\x8f\x8a\xe9\x8f\x8a\xe9\x8f\x8a\xe9\x8f\x8a\xe9\x8f\x8a\xe9\x8f\x8a\xe9\x8f\x8a\xe9\x8f\x8a' +xfmt9071 format 34386012E0 '\xef\xae\x82^ ,.35f' -> ' 34,386,012.00000000000000000000000000000000000' +xfmt9072 format -48425282e0 '\xe4\xb4\xba^45,e' -> '\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba-4.8425282e+7\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba\xe4\xb4\xba' +xfmt9073 format 66272946e105 '' -> '6.6272946E+112' +xfmt9074 format -69234905E274 '\xe9\xa1\x9b<98' -> '-6.9234905E+281\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b\xe9\xa1\x9b' +xfmt9075 format 774521E0 '\xe5\xae\xb5<-44,E' -> '7.74521E+5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5\xe5\xae\xb5' +xfmt9076 format -222600e0 '\xea\x91\x8d=+,.62e' -> '-2.22600000000000000000000000000000000000000000000000000000000000e+5' +xfmt9077 format 419698E131 '-063,.39E' -> '00,000,000,000,004.196980000000000000000000000000000000000E+136' +xfmt9078 format -663992E92 '\xe2\xa5\x85>-53,.38g' -> '\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85\xe2\xa5\x85-6.63992e+97' +xfmt9079 format 9744256157736650216173932412176766333590E0 '\xe2\xa2\xa1^ ,.27g' -> ' 9.74425615773665021617393241e+39' +xfmt9080 format -2225184919659488151366659395623428179858E0 '\xef\xbd\x89^-92,.98e' -> '-2.22518491965948815136665939562342817985800000000000000000000000000000000000000000000000000000000000e+39' +xfmt9081 format 4233025268174254946935886777066220803726e138 '\xe4\x95\x89>+%' -> '+423302526817425494693588677706622080372600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt9082 format -5344051110050748947764136830663602217176e232 '18,.76%' -> '-5,344,051,110,050,748,947,764,136,830,663,602,217,176,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt9083 format 575460368381418902E0 '' -> '575460368381418902' +xfmt9084 format -662127081506944757e0 '' -> '-662127081506944757' +xfmt9085 format 708487896769238093e193 '\xef\xa9\xbe<-83,.3e' -> '7.085e+210\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe\xef\xa9\xbe' +xfmt9086 format -700616317149101433e136 '\xee\xba\xaa= 44F' -> '-7006163171491014330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9087 format 7683275e0 '\xe3\x8a\x8a>,.19e' -> '7.6832750000000000000e+6' +xfmt9088 format -5839119E0 '\xe8\x92\x80<-64,.28f' -> '-5,839,119.0000000000000000000000000000\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80\xe8\x92\x80' +xfmt9089 format 1960404E161 '' -> '1.960404E+167' +xfmt9090 format -5298704E311 '' -> '-5.298704E+317' +xfmt9091 format 369076420e0 '' -> '369076420' +xfmt9092 format -958691064E0 '\xca\x92^-55,.47f' -> '-958,691,064.00000000000000000000000000000000000000000000000' +xfmt9093 format 330036025e10 '.2' -> '3.3E+18' +xfmt9094 format -556399674E146 '\xe6\xa9\x93<-F' -> '-55639967400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9095 format 871309488986870975377972151305616710e0 '\xe8\xae\xbc>-40,.72f' -> '871,309,488,986,870,975,377,972,151,305,616,710.000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9096 format -892338829668600103115403697899623599e0 '\xeb\xb1\xbf< 67,.31E' -> '-8.9233882966860010311540369789962E+35\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf\xeb\xb1\xbf' +xfmt9097 format 582933614788301558270021947414235715e302 '\xe7\x99\x94<' -> '5.82933614788301558270021947414235715E+337' +xfmt9098 format -881013419843059533877401687225168352E169 '\xe6\x8d\xa4>11,.65%' -> '-881,013,419,843,059,533,877,401,687,225,168,352,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000%' +xfmt9099 format 0e0 '\xee\x8d\x9f^-' -> '0' +xfmt9100 format 0e0 '\xe4\x87\xb0>-85,.98e' -> '0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+98' +xfmt9101 format 0e231 '\xe8\x99\x9b< 36,.1%' -> ' 0.0%\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b\xe8\x99\x9b' +xfmt9102 format 0E19 '\xe5\xa6\xb1<35,.40' -> '0E+19\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1\xe5\xa6\xb1' +xfmt9103 format 115663771944466520647E0 '\xe2\x8c\xa4^-28.29n' -> '\xe2\x8c\xa4\xe2\x8c\xa4\xe2\x8c\xa4115663771944466520647\xe2\x8c\xa4\xe2\x8c\xa4\xe2\x8c\xa4\xe2\x8c\xa4' +xfmt9104 format -644421827232824753106E0 '\xeb\xb7\x95^-,.33g' -> '-644,421,827,232,824,753,106' +xfmt9105 format 213138411817092701028E106 '57,.63f' -> '2,131,384,118,170,927,010,280,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000' +xfmt9106 format -203025077400907050754E69 '\xe2\xaa\x86>+23,g' -> '-2.03025077400907050754e+89' +xfmt9107 format 151E0 ' 057,%' -> ' 000,000,000,000,000,000,000,000,000,000,000,000,015,100%' +xfmt9108 format -480E0 '-012,.71e' -> '-4.80000000000000000000000000000000000000000000000000000000000000000000000e+2' +xfmt9109 format 145e22 '\xef\xbb\x88<-62,.69g' -> '1.45e+24\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88\xef\xbb\x88' +xfmt9110 format -603e125 '' -> '-6.03E+127' +xfmt9111 format 6531390647273425886682957720507983e0 '\xe8\xa7\x9b< .3G' -> ' 6.53E+33' +xfmt9112 format -1537061048219477864357121628889471E0 '\xd2\xb3>-' -> '-1537061048219477864357121628889471' +xfmt9113 format 5665653372249843137551322697005076e316 '%' -> '5665653372249843137551322697005076000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt9114 format -7747343151094104124229955242419136e186 '' -> '-7.747343151094104124229955242419136E+219' +xfmt9115 format 2313728976e0 '\xef\xbe\xb2<+43,.34g' -> '+2,313,728,976\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2\xef\xbe\xb2' +xfmt9116 format -7030350970E0 '' -> '-7030350970' +xfmt9117 format 6530429450E332 '\xec\x9f\xb5> ,.53%' -> ' 65,304,294,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000%' +xfmt9118 format -8282472791e334 '0,.56e' -> '-8.28247279100000000000000000000000000000000000000000000000e+343' +xfmt9119 format 539183049981238314624826895455E0 ',' -> '539,183,049,981,238,314,624,826,895,455' +xfmt9120 format -182069290792900602332410027349E0 '-0' -> '-182069290792900602332410027349' +xfmt9121 format 564759827539447515683729857168e23 '\xe1\x97\xbf> 1,.79f' -> ' 56,475,982,753,944,751,568,372,985,716,800,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9122 format -287947736083285029733975723242E236 '\xeb\xb9\xb6>19.33' -> '-2.87947736083285029733975723242E+265' +xfmt9123 format 55624539360604990E0 '\xee\x97\xa2> 96.55n' -> '\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2\xee\x97\xa2 55624539360604990' +xfmt9124 format -33459087519302103E0 '\xe3\x84\x85<+,.52E' -> '-3.3459087519302103000000000000000000000000000000000000E+16' +xfmt9125 format 28536037565848891E133 '43.57' -> ' 2.8536037565848891E+149' +xfmt9126 format -19237164710390828e227 '\xe8\xba\xb1=+6,.45%' -> '-192,371,647,103,908,280,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000%' +xfmt9127 format 86558176180161925534850057209869631319283427e0 '\xed\x8d\x89=-36,g' -> '86,558,176,180,161,925,534,850,057,209,869,631,319,283,427' +xfmt9128 format -75415758233794199224697345439440162224841358E0 '\xea\x96\x8e=,E' -> '-7.5415758233794199224697345439440162224841358E+43' +xfmt9129 format 52235829399817311753138955482038802083343684e172 '\xe3\xb2\x8e=+90,G' -> '+\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e\xe3\xb2\x8e5.2235829399817311753138955482038802083343684E+215' +xfmt9130 format -92724246137612158295519189955030824562928321e265 '\xec\x91\xb1>+76,.79G' -> '\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1\xec\x91\xb1-9.2724246137612158295519189955030824562928321E+308' +xfmt9131 format 5767987165589178764695659862931E0 '\xe7\x87\xb5>-.17%' -> '576798716558917876469565986293100.00000000000000000%' +xfmt9132 format -3643660022883512411559942964663e0 '\xe6\xa9\x80<61,.94' -> '-3,643,660,022,883,512,411,559,942,964,663\xe6\xa9\x80\xe6\xa9\x80\xe6\xa9\x80\xe6\xa9\x80\xe6\xa9\x80\xe6\xa9\x80\xe6\xa9\x80\xe6\xa9\x80\xe6\xa9\x80\xe6\xa9\x80\xe6\xa9\x80\xe6\xa9\x80\xe6\xa9\x80\xe6\xa9\x80\xe6\xa9\x80\xe6\xa9\x80\xe6\xa9\x80\xe6\xa9\x80\xe6\xa9\x80' +xfmt9133 format 1456681643583508643770062220426e149 '\xe0\xb8\x94=' -> '1.456681643583508643770062220426E+179' +xfmt9134 format -7216973414820880629634663831535e57 '\xe2\xbc\x9a=-,.30g' -> '-7.21697341482088062963466383154e+87' +xfmt9135 format 132420875516555e0 ',' -> '132,420,875,516,555' +xfmt9136 format -277347057028667e0 '+.78g' -> '-277347057028667' +xfmt9137 format 551688409054392E364 '' -> '5.51688409054392E+378' +xfmt9138 format -536506138394801e231 '' -> '-5.36506138394801E+245' +xfmt9139 format 6715500030704117682E0 '\xe7\xae\xba^+22,.11g' -> '\xe7\xae\xba\xe7\xae\xba+6.7155000307e+18\xe7\xae\xba\xe7\xae\xba\xe7\xae\xba' +xfmt9140 format -2954279421107645649e0 '' -> '-2954279421107645649' +xfmt9141 format 5694492034647484538E73 '\xe7\x8a\x89>+39,.28' -> '\xe7\x8a\x89\xe7\x8a\x89\xe7\x8a\x89\xe7\x8a\x89\xe7\x8a\x89\xe7\x8a\x89\xe7\x8a\x89\xe7\x8a\x89\xe7\x8a\x89\xe7\x8a\x89\xe7\x8a\x89\xe7\x8a\x89\xe7\x8a\x89\xe7\x8a\x89+5.694492034647484538E+91' +xfmt9142 format -7020777619891949346e313 ',' -> '-7.020777619891949346E+331' +xfmt9143 format 26899895504955095362061857692e0 '' -> '26899895504955095362061857692' +xfmt9144 format -90532172984226090300161081822E0 '\xe9\xb4\x81<+82.96g' -> '-90532172984226090300161081822\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81\xe9\xb4\x81' +xfmt9145 format 86803794847139642798856878404E114 '0' -> '8.6803794847139642798856878404E+142' +xfmt9146 format -59707208900449125539101385105E178 '\xe3\xa5\xb2>-41,f' -> '-597,072,089,004,491,255,391,013,851,050,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt9147 format 845229047728035231462327272245812770702530E0 '\xe2\x8f\xa4<+45,.63G' -> '+845,229,047,728,035,231,462,327,272,245,812,770,702,530' +xfmt9148 format -996354761077780586532993899555451385140522e0 '' -> '-996354761077780586532993899555451385140522' +xfmt9149 format 146347310850823901824346671931713263008482E96 '\xe7\xa6\x9f<' -> '1.46347310850823901824346671931713263008482E+137' +xfmt9150 format -724859036364769810742955787455413422149756e368 '\xe3\x9f\xa1< 6,.22E' -> '-7.2485903636476981074296E+409' +xfmt9151 format 123456789012.1234567890123456789012 '\xe5\x9a\x87<+,.49E' -> '+1.2345678901212345678901234567890120000000000000000E+11' +xfmt9152 format -1234567890.123456789012345678 '\xe0\xb8\xb1^,' -> '-1,234,567,890.123456789012345678' +xfmt9153 format 124433017e0 '' -> '124433017' +xfmt9154 format -869610548e0 '.56' -> '-869610548' +xfmt9155 format 634019049e227 '\xeb\x8d\x86>-2,.74g' -> '6.34019049e+235' +xfmt9156 format -350929270e32 '+0' -> '-3.50929270E+40' +xfmt9157 format 330331530300272958427270E0 '23,' -> '330,331,530,300,272,958,427,270' +xfmt9158 format -227966374123402927214472e0 '-' -> '-227966374123402927214472' +xfmt9159 format 781710551501975381864053E52 '\xc6\xac<65,.37%' -> '781,710,551,501,975,381,864,053,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000%' +xfmt9160 format -914787289222688358360338e202 '\xe3\xaa\xb4<+,.94g' -> '-9.14787289222688358360338e+225' +xfmt9161 format 2226982904e0 '+,' -> '+2,226,982,904' +xfmt9162 format -4237411567E0 '\xe1\xb8\xbe>77,.55' -> '\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe\xe1\xb8\xbe-4,237,411,567' +xfmt9163 format 5034993338e191 '098,%' -> '50,349,933,380,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt9164 format -9620269814e23 '\xe5\xbb\x81>-' -> '-9.620269814E+32' +xfmt9165 format 3828621e0 '\xe9\x88\x9e>-2,f' -> '3,828,621' +xfmt9166 format -8267844e0 '\xce\xbd> 75,.94E' -> '-8.2678440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E+6' +xfmt9167 format 3561710E193 '\xe8\x83\xb4<.5' -> '3.5617E+199' +xfmt9168 format -4106883e119 ' 048,' -> '-000,000,000,000,000,000,000,000,004.106883E+125' +xfmt9169 format 8105602385520E0 '' -> '8105602385520' +xfmt9170 format -7871074333719e0 '91' -> ' -7871074333719' +xfmt9171 format 8218063604788e286 '\xef\x90\x9a^' -> '8.218063604788E+298' +xfmt9172 format -2084937144182e218 '\xef\x91\x91>+59.28n' -> '\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91\xef\x91\x91-2.084937144182e+230' +xfmt9173 format 70950335944738023033443e0 '' -> '70950335944738023033443' +xfmt9174 format -23906739171605217210251e0 '+24,' -> '-23,906,739,171,605,217,210,251' +xfmt9175 format 82794708825466307936283E58 '\xe3\x9b\x9b> 10,.85' -> ' 8.2794708825466307936283E+80' +xfmt9176 format -61352011145214048350410e103 '0' -> '-6.1352011145214048350410E+125' +xfmt9177 format 90997249754950238896859949253832574023e0 'n' -> '90997249754950238896859949253832574023' +xfmt9178 format -25699510198628831252466793683971389098E0 '\xe0\xb2\x8c>-26,.97E' -> '-2.5699510198628831252466793683971389098000000000000000000000000000000000000000000000000000000000000E+37' +xfmt9179 format 49295430066022810324891595608189827058E192 '0.80' -> '4.9295430066022810324891595608189827058E+229' +xfmt9180 format -85404941107681604574783029511264533470E305 '-068,.82f' -> '-8,540,494,110,768,160,457,478,302,951,126,453,347,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9181 format 50582050183E0 '\xec\x8d\x93>45,' -> '\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x93\xec\x8d\x9350,582,050,183' +xfmt9182 format -62150391105e0 '\xea\xb4\x8b=,.57e' -> '-6.215039110500000000000000000000000000000000000000000000000e+10' +xfmt9183 format 47369328671e96 '+96' -> ' +4.7369328671E+106' +xfmt9184 format -93000393926E122 '0f' -> '-9300039392600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9185 format 24163e0 '\xe2\xba\x9c>68,F' -> '\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c\xe2\xba\x9c24,163' +xfmt9186 format -26143e0 '\xeb\x96\x8b^%' -> '-2614300%' +xfmt9187 format 72680e355 '\xce\x9b<25,.86g' -> '7.2680e+359\xce\x9b\xce\x9b\xce\x9b\xce\x9b\xce\x9b\xce\x9b\xce\x9b\xce\x9b\xce\x9b\xce\x9b\xce\x9b\xce\x9b\xce\x9b\xce\x9b' +xfmt9188 format -31014e382 '16.76' -> ' -3.1014E+386' +xfmt9189 format 8591743043351725311020838e0 '\xed\x89\xab>' -> '8591743043351725311020838' +xfmt9190 format -2014217046990168213058113e0 '\xef\xbf\xa5=+87.84F' -> '-2014217046990168213058113.000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9191 format 4170375884667602755389138e326 ' 082,.91' -> ' 000,000,000,000,000,000,000,000,000,000,000,000,004.170375884667602755389138E+350' +xfmt9192 format -8378663212775126699680439e315 '72,F' -> '-8,378,663,212,775,126,699,680,439,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt9193 format 214243699668629888366949747E0 '0.81f' -> '214243699668629888366949747.000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9194 format -132346186047469876682674110e0 '\xe7\x8a\x98<89,' -> '-132,346,186,047,469,876,682,674,110\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98\xe7\x8a\x98' +xfmt9195 format 729269505148907431965229933E362 '+' -> '+7.29269505148907431965229933E+388' +xfmt9196 format -912238110913976871501684911E216 '\xe6\x93\x86^ 24,.69g' -> '-9.12238110913976871501684911e+242' +xfmt9197 format 285E0 '0.25G' -> '285' +xfmt9198 format -170E0 '' -> '-170' +xfmt9199 format 164e197 '-' -> '1.64E+199' +xfmt9200 format -505E176 '\xeb\xb2\xbe> ' -> '-5.05E+178' +xfmt9201 format 5252560106099780780427040290721434077E0 '\xe9\x9f\x80< 46.9g' -> ' 5.25256011e+36\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80\xe9\x9f\x80' +xfmt9202 format -4851362959365931966551370486730160631E0 '\xeb\x96\x93>95' -> '\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93\xeb\x96\x93-4851362959365931966551370486730160631' +xfmt9203 format 8806837483873272617937097105162748163E133 '\xe0\xb9\xa8<31G' -> '8.806837483873272617937097105162748163E+169' +xfmt9204 format -1184893079568931562156104663112474958E128 '-0E' -> '-1.184893079568931562156104663112474958E+164' +xfmt9205 format 980908084958617768136342254590176e0 '26,.16%' -> '98,090,808,495,861,776,813,634,225,459,017,600.0000000000000000%' +xfmt9206 format -437019514229982090682918871654487E0 ',f' -> '-437,019,514,229,982,090,682,918,871,654,487' +xfmt9207 format 286880274948186975725586617877633e95 '\xe2\x93\x9e=-59,.45f' -> '28,688,027,494,818,697,572,558,661,787,763,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000' +xfmt9208 format -322019236567240231659286013867586e21 '\xe1\xa4\xa9^ 50,.63E' -> '-3.220192365672402316592860138675860000000000000000000000000000000E+53' +xfmt9209 format 196201877383373342564106739059458609252037e0 '\xe1\x83\x95> 94,.13' -> '\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95\xe1\x83\x95 1.962018773834E+41' +xfmt9210 format -786487653323514394399416276607152779813842E0 '\xe7\xb7\x93^22,.66' -> '-786,487,653,323,514,394,399,416,276,607,152,779,813,842' +xfmt9211 format 664797968146546835072505671665473294008511e54 '\xcc\x96>-76,.27' -> '\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x96\xcc\x966.64797968146546835072505672E+95' +xfmt9212 format -824804882768051418206233093731338703873413e16 '\xe7\x89\x85 '-8.24804882768051418206233093731338703873413E+57' +xfmt9213 format 1402854636714295073208891442e0 '+0,' -> '+1,402,854,636,714,295,073,208,891,442' +xfmt9214 format -3181744123318155455167767895E0 ',' -> '-3,181,744,123,318,155,455,167,767,895' +xfmt9215 format 2921455433819523294097380136e63 '\xec\xb1\x82^ 3,.96e' -> ' 2.921455433819523294097380136000000000000000000000000000000000000000000000000000000000000000000000e+90' +xfmt9216 format -9228811963259294446070510286E341 '%' -> '-92288119632592944460705102860000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt9217 format 776808242354302429E0 '+096,E' -> '+0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,007.76808242354302429E+17' +xfmt9218 format -666725712612956100e0 '\xeb\xa5\x92<5,' -> '-666,725,712,612,956,100' +xfmt9219 format 425290785826739189e13 '\xe7\xab\x80<-90,.5G' -> '4.2529E+30\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80\xe7\xab\x80' +xfmt9220 format -793810662730706916E246 '\xe1\x82\x94<-18,.30g' -> '-7.93810662730706916e+263' +xfmt9221 format 344751088444045294093e0 '\xee\x8f\xaa>-,' -> '344,751,088,444,045,294,093' +xfmt9222 format -920796143617690859471e0 '77' -> ' -920796143617690859471' +xfmt9223 format 193177387315553763563e196 '\xeb\xa8\x97>.25e' -> '1.9317738731555376356300000e+216' +xfmt9224 format -934917106420593637262E296 '048,' -> '-0,000,000,000,000,009.34917106420593637262E+316' +xfmt9225 format 5505286810906038117949506672865243169510e0 '\xe2\xb2\xad^-' -> '5505286810906038117949506672865243169510' +xfmt9226 format -9415299400742630162352086355028186003562e0 '-15' -> '-9415299400742630162352086355028186003562' +xfmt9227 format 1911013199621873723014924884260873761132e87 ',f' -> '1,911,013,199,621,873,723,014,924,884,260,873,761,132,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt9228 format -6107866213268112358210499859884963215751e360 '' -> '-6.107866213268112358210499859884963215751E+399' +xfmt9229 format 861667917962e0 '06,.59' -> '861,667,917,962' +xfmt9230 format -831139217213E0 '\xec\xb1\x84>+33,.15E' -> '\xec\xb1\x84\xec\xb1\x84\xec\xb1\x84\xec\xb1\x84\xec\xb1\x84\xec\xb1\x84\xec\xb1\x84\xec\xb1\x84\xec\xb1\x84\xec\xb1\x84\xec\xb1\x84-8.311392172130000E+11' +xfmt9231 format 440359881515E188 '\xe6\xbf\x9c>64.44' -> '\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c\xe6\xbf\x9c4.40359881515E+199' +xfmt9232 format -177515599939e244 '' -> '-1.77515599939E+255' +xfmt9233 format 4e0 ' 098,.39%' -> ' 0,000,000,000,000,000,000,000,000,000,000,000,000,000,400.000000000000000000000000000000000000000%' +xfmt9234 format -3e0 '017.70' -> '-0000000000000003' +xfmt9235 format 1E283 '\xef\xac\xad>92' -> '\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad\xef\xac\xad1E+283' +xfmt9236 format -9e268 '\xe6\xa1\xa1^+16,.34%' -> '-9,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000%' +xfmt9237 format 0e0 '+079,.33' -> '+00,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt9238 format 0E0 '0,e' -> '0e+0' +xfmt9239 format 0E272 '+14' -> ' +0E+272' +xfmt9240 format 0e109 '\xec\xa2\xa4<+16,.15F' -> '+0.000000000000000' +xfmt9241 format 8180067116295522078127837328104209E0 '\xea\xb2\x9d>,' -> '8,180,067,116,295,522,078,127,837,328,104,209' +xfmt9242 format -2241998095990949458135387027224811e0 '\xe1\xb5\xad>42,.53' -> '-2,241,998,095,990,949,458,135,387,027,224,811' +xfmt9243 format 3683523322069757375030631739850606e233 '\xe6\xb4\x82<28.47F' -> '368352332206975737503063173985060600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000' +xfmt9244 format -3912635243932022521418262698788471e110 '' -> '-3.912635243932022521418262698788471E+143' +xfmt9245 format 57198126967527662159092065953768e0 '\xe2\xb0\xae^-72,.83%' -> '5,719,812,696,752,766,215,909,206,595,376,800.00000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt9246 format -19324615562364735471425566492665E0 '' -> '-19324615562364735471425566492665' +xfmt9247 format 62173344848743107983428667696784e271 '\xe1\x8b\xad<,.99E' -> '6.217334484874310798342866769678400000000000000000000000000000000000000000000000000000000000000000000E+302' +xfmt9248 format -63316435860934377527187083880381E246 ',e' -> '-6.3316435860934377527187083880381e+277' +xfmt9249 format 65659796510566645597334295461430923E0 '\xef\xb9\xa8^+6,.63g' -> '+65,659,796,510,566,645,597,334,295,461,430,923' +xfmt9250 format -35153616520840434404781351426786013e0 '\xe4\xa5\xb3^+33.63g' -> '-35153616520840434404781351426786013' +xfmt9251 format 54667239221600127455971694265198734E96 '020' -> '5.4667239221600127455971694265198734E+130' +xfmt9252 format -88061528543979489378159168827917782E115 'E' -> '-8.8061528543979489378159168827917782E+149' +xfmt9253 format 9056691727291795475364E0 '\xef\x9d\xb6 '9056691727291795475364' +xfmt9254 format -3348403846138575427563E0 '.38' -> '-3348403846138575427563' +xfmt9255 format 1370702387151572804040E277 '\xe8\x9c\xa7<13,.93%' -> '1,370,702,387,151,572,804,040,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt9256 format -1992294732351584933100E184 '\xe6\xb9\xbe= 10,.21g' -> '-1.99229473235158493310e+205' +xfmt9257 format 88350632169157897431669609735e0 '' -> '88350632169157897431669609735' +xfmt9258 format -79986406028906077827807265104E0 '\xe8\x88\xba= 72,.4g' -> '-\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba\xe8\x88\xba7.999e+28' +xfmt9259 format 33093142096455837537817991150e171 '%' -> '3309314209645583753781799115000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt9260 format -58722075795739710306690753377e134 '\xe0\xba\xac= 43,.23f' -> '-5,872,207,579,573,971,030,669,075,337,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000' +xfmt9261 format 7278019622404323069960271848616959421618322e0 '0' -> '7278019622404323069960271848616959421618322' +xfmt9262 format -1122338156674997771233673264709128819205905E0 '\xe5\xb2\x87=-50,.49f' -> '-1,122,338,156,674,997,771,233,673,264,709,128,819,205,905.0000000000000000000000000000000000000000000000000' +xfmt9263 format 9510276941396923944276239038064828542923885E249 '74,.10%' -> '951,027,694,139,692,394,427,623,903,806,482,854,292,388,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000%' +xfmt9264 format -1135096245662871578558883522950273833018196E325 '\xe6\xab\x92^' -> '-1.135096245662871578558883522950273833018196E+367' +xfmt9265 format 780927E0 '58,.47' -> ' 780,927' +xfmt9266 format -791302e0 '.94' -> '-791302' +xfmt9267 format 490264E379 ' .15' -> ' 4.90264E+384' +xfmt9268 format -880607e162 '064,.16E' -> '-0,000,000,000,000,000,000,000,000,000,008.8060700000000000E+167' +xfmt9269 format 8605476458941564188e0 'n' -> '8605476458941564188' +xfmt9270 format -5157626599435873438E0 '\xe3\xa5\xa6=' -> '-5157626599435873438' +xfmt9271 format 5273532959238339121E375 '081.31F' -> '5273532959238339121000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000' +xfmt9272 format -9275029335367016371e290 '\xe1\x97\xab^ 68,.90G' -> '\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab-9.275029335367016371E+308\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab' +xfmt9273 format 1234.1 '' -> '1234.1' +xfmt9274 format -123456789012345678.1234567890123 '\xef\xb1\xa0<' -> '-123456789012345678.1234567890123' +xfmt9275 format 8382414548223025760681428520770470550157e0 '\xe4\xa0\x9b=,.21G' -> '8.38241454822302576068E+39' +xfmt9276 format -6003604854769215353810991203364784684199E0 '\xe4\x97\x94<+,.30' -> '-6.00360485476921535381099120336E+39' +xfmt9277 format 4316529330913569463375788937248608948507E184 '014' -> '4.316529330913569463375788937248608948507E+223' +xfmt9278 format -7375773468785327855370579273361975290666E234 '058,.10' -> '-00,000,000,000,000,000,000,000,000,000,007.375773469E+273' +xfmt9279 format 777258654018204124920908174533453956628E0 '\xe1\x95\xac^ 46,' -> ' 777,258,654,018,204,124,920,908,174,533,453,956,628' +xfmt9280 format -703952199208847633447963391190426496693e0 '\xe2\x93\x8d>+94,E' -> '\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d\xe2\x93\x8d-7.03952199208847633447963391190426496693E+38' +xfmt9281 format 677598692993204347158628105300054468581e262 '\xe8\x8a\xa6>+9.32' -> '+6.7759869299320434715862810530005E+300' +xfmt9282 format -473653573460034458317596296805388644844e71 ',%' -> '-4,736,535,734,600,344,583,175,962,968,053,886,448,440,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt9283 format 1969017129470562609679784333171832093E0 '\xe4\xaf\x88< ,.53e' -> ' 1.96901712947056260967978433317183209300000000000000000e+36' +xfmt9284 format -1570450375925728976868237144963617347e0 '\xeb\xa7\xa8>36.46E' -> '-1.5704503759257289768682371449636173470000000000E+36' +xfmt9285 format 8207170702475006879072929179782252638e80 '73,G' -> ' 8.207170702475006879072929179782252638E+116' +xfmt9286 format -6840974247683942386810229792384692777e247 '' -> '-6.840974247683942386810229792384692777E+283' +xfmt9287 format 3692E0 '.16' -> '3692' +xfmt9288 format -1926E0 '' -> '-1926' +xfmt9289 format 6780e216 '045,F' -> '6,780,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt9290 format -7024E48 '\xef\x95\xb2=-,G' -> '-7.024E+51' +xfmt9291 format 813278973049524732167327929328431e0 '\xec\x9a\x95^-4,.61F' -> '813,278,973,049,524,732,167,327,929,328,431.0000000000000000000000000000000000000000000000000000000000000' +xfmt9292 format -337519551913654549235061683392735e0 '\xe9\x98\xa9= ,.47g' -> '-337,519,551,913,654,549,235,061,683,392,735' +xfmt9293 format 483796034365773180237441865353245E235 '\xe7\xa7\xa8<89.90' -> '4.83796034365773180237441865353245E+267\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8\xe7\xa7\xa8' +xfmt9294 format -599379172292319245877378586795371e112 '' -> '-5.99379172292319245877378586795371E+144' +xfmt9295 format 1518419049455155866738376277E0 '-' -> '1518419049455155866738376277' +xfmt9296 format -4652100923564647369581215423E0 '94' -> ' -4652100923564647369581215423' +xfmt9297 format 1862837815218625224529176892E296 '\xeb\xb9\xaa<-53,.63g' -> '1.862837815218625224529176892e+323\xeb\xb9\xaa\xeb\xb9\xaa\xeb\xb9\xaa\xeb\xb9\xaa\xeb\xb9\xaa\xeb\xb9\xaa\xeb\xb9\xaa\xeb\xb9\xaa\xeb\xb9\xaa\xeb\xb9\xaa\xeb\xb9\xaa\xeb\xb9\xaa\xeb\xb9\xaa\xeb\xb9\xaa\xeb\xb9\xaa\xeb\xb9\xaa\xeb\xb9\xaa\xeb\xb9\xaa\xeb\xb9\xaa' +xfmt9298 format -1826071082044639883538697548E26 '-077,.73G' -> '-0,000,000,000,000,000,000,000,000,000,000,001.826071082044639883538697548E+53' +xfmt9299 format 251009993E0 ' 070,e' -> ' 0,000,000,000,000,000,000,000,000,000,000,000,000,000,002.51009993e+8' +xfmt9300 format -375348253e0 '\xee\x92\x81 '-375348253' +xfmt9301 format 487946179E198 '+49' -> ' +4.87946179E+206' +xfmt9302 format -386545675e376 '\xe6\xaa\xa3=+44.57G' -> '-\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa3\xe6\xaa\xa33.86545675E+384' +xfmt9303 format 46098835801729071649360185230987333847e0 '-40e' -> '4.6098835801729071649360185230987333847e+37' +xfmt9304 format -44398081361090728618643128312343560509E0 ',.75' -> '-44,398,081,361,090,728,618,643,128,312,343,560,509' +xfmt9305 format 64439237007630457624847229358016130881e109 '+' -> '+6.4439237007630457624847229358016130881E+146' +xfmt9306 format -25136782505224052405135642080097463216e365 '' -> '-2.5136782505224052405135642080097463216E+402' +xfmt9307 format 75606360856766E0 '+060,.66e' -> '+7.560636085676600000000000000000000000000000000000000000000000000000e+13' +xfmt9308 format -95476386531570e0 '\xea\xbe\x9c>+8,.53f' -> '-95,476,386,531,570.00000000000000000000000000000000000000000000000000000' +xfmt9309 format 56045444254689E262 '98,g' -> ' 5.6045444254689e+275' +xfmt9310 format -67711516291227e303 '\xe4\x87\xa2<83E' -> '-6.7711516291227E+316\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2\xe4\x87\xa2' +xfmt9311 format 39225E0 '\xd8\x9a^-73f' -> '\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a39225\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a\xd8\x9a' +xfmt9312 format -49652E0 '' -> '-49652' +xfmt9313 format 92510E118 ' 99,' -> ' 9.2510E+122' +xfmt9314 format -50464E166 ' 0.82G' -> '-5.0464E+170' +xfmt9315 format 78960437382184350986678975845897590654649e0 ' 027' -> ' 78960437382184350986678975845897590654649' +xfmt9316 format -97372773882280574712229382625430939263179e0 '\xea\xad\x94> 4,F' -> '-97,372,773,882,280,574,712,229,382,625,430,939,263,179' +xfmt9317 format 36117178141849553250878503846993873791230e65 '+60,.72' -> ' +3.6117178141849553250878503846993873791230E+105' +xfmt9318 format -53213261486798956662743861914483626733003E165 '-72.31' -> ' -5.321326148679895666274386191448E+205' +xfmt9319 format 134e0 'K>9' -> 'KKKKKK134' +xfmt9320 format -434E0 '0,.63' -> '-434' +xfmt9321 format 932E50 '' -> '9.32E+52' +xfmt9322 format -451e162 '\xe8\x85\xb9^-39.72g' -> '\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9-4.51e+164\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9\xe8\x85\xb9' +xfmt9323 format 6715649698924510572876212667194E0 '\xe4\x98\x9d= 2.9G' -> ' 6.71564970E+30' +xfmt9324 format -8673896329502231615427208909349E0 '\xc3\xb4>,.8%' -> '-867,389,632,950,223,161,542,720,890,934,900.00000000%' +xfmt9325 format 5349254754664409476078064254697E177 '' -> '5.349254754664409476078064254697E+207' +xfmt9326 format -8254923639579123226685416179240e129 '\xe2\x87\xb0=-86,.8E' -> '-\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb0\xe2\x87\xb08.25492364E+159' +xfmt9327 format 2444025828581399285732383E0 '\xeb\x9b\xb9>+64,.20f' -> '\xeb\x9b\xb9\xeb\x9b\xb9\xeb\x9b\xb9\xeb\x9b\xb9\xeb\x9b\xb9\xeb\x9b\xb9\xeb\x9b\xb9\xeb\x9b\xb9\xeb\x9b\xb9+2,444,025,828,581,399,285,732,383.00000000000000000000' +xfmt9328 format -3713047300891560833133280E0 '-084,E' -> '-00,000,000,000,000,000,000,000,000,000,000,000,000,003.713047300891560833133280E+24' +xfmt9329 format 9476767137590307830657584e313 '\xee\xa1\x89=+89,.80' -> '+\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x89\xee\xa1\x899.476767137590307830657584E+337' +xfmt9330 format -9755522483804734492298542E328 '9' -> '-9.755522483804734492298542E+352' +xfmt9331 format 188499044274146694513440486041394425558028E0 'g' -> '188499044274146694513440486041394425558028' +xfmt9332 format -881587712726029328651069612505788761404275E0 '\xe1\xa6\x8a=86,.2g' -> '-\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a\xe1\xa6\x8a8.8e+41' +xfmt9333 format 758658621998658842002042445538242830262335E41 '+76%' -> '+7586586219986588420020424455382428302623350000000000000000000000000000000000000000000%' +xfmt9334 format -308004987086032501191833939689745251947913E379 ',' -> '-3.08004987086032501191833939689745251947913E+420' +xfmt9335 format 648915E0 '\xe6\x91\x9c=+52,f' -> '+\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c\xe6\x91\x9c648,915' +xfmt9336 format -857576E0 '\xea\xa1\x8c<+.23' -> '-857576' +xfmt9337 format 648374e267 '+0.24' -> '+6.48374E+272' +xfmt9338 format -285774E108 '+0,.40' -> '-2.85774E+113' +xfmt9339 format 122600976107020522e0 '\xea\x82\xb4> 76F' -> '\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4\xea\x82\xb4 122600976107020522' +xfmt9340 format -581571460493706184e0 '\xef\x92\xbb<-,.57G' -> '-581,571,460,493,706,184' +xfmt9341 format 613327468892764476e91 '\xe6\xb6\x93=,.91' -> '6.13327468892764476E+108' +xfmt9342 format -674545064281081929e276 '+80.23F' -> '-674545064281081929000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000' +xfmt9343 format 394478098649505608687228694E0 '\xe1\xaf\xa5<52.68F' -> '394478098649505608687228694.00000000000000000000000000000000000000000000000000000000000000000000' +xfmt9344 format -171570756177459965474869694E0 '' -> '-171570756177459965474869694' +xfmt9345 format 663452753442579061520049552E265 ',.33' -> '6.63452753442579061520049552E+291' +xfmt9346 format -966508468063711293773000560e79 '-f' -> '-9665084680637112937730005600000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9347 format 2229273741861214499e0 '\xe5\xb8\xbb< 75,g' -> ' 2,229,273,741,861,214,499\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb\xe5\xb8\xbb' +xfmt9348 format -3739808636443325722E0 '+091.25' -> '-000000000000000000000000000000000000000000000000000000000000000000000003739808636443325722' +xfmt9349 format 5726702661499811184E112 '\xe3\x88\xbe^28.57G' -> '\xe3\x88\xbe5.726702661499811184E+130\xe3\x88\xbe\xe3\x88\xbe' +xfmt9350 format -8474084510092858902e114 '+0,' -> '-8.474084510092858902E+132' +xfmt9351 format 7115698130187319e0 '+024,.35e' -> '+7.11569813018731900000000000000000000e+15' +xfmt9352 format -6699885503989111e0 '\xe1\x9a\xb7^+46,' -> '\xe1\x9a\xb7\xe1\x9a\xb7\xe1\x9a\xb7\xe1\x9a\xb7\xe1\x9a\xb7\xe1\x9a\xb7\xe1\x9a\xb7\xe1\x9a\xb7\xe1\x9a\xb7\xe1\x9a\xb7\xe1\x9a\xb7\xe1\x9a\xb7-6,699,885,503,989,111\xe1\x9a\xb7\xe1\x9a\xb7\xe1\x9a\xb7\xe1\x9a\xb7\xe1\x9a\xb7\xe1\x9a\xb7\xe1\x9a\xb7\xe1\x9a\xb7\xe1\x9a\xb7\xe1\x9a\xb7\xe1\x9a\xb7\xe1\x9a\xb7' +xfmt9353 format 6367624815178693E245 '+' -> '+6.367624815178693E+260' +xfmt9354 format -1843226013328620E286 '\xed\x80\x8d=74,.52E' -> '-\xed\x80\x8d\xed\x80\x8d\xed\x80\x8d\xed\x80\x8d\xed\x80\x8d\xed\x80\x8d\xed\x80\x8d\xed\x80\x8d\xed\x80\x8d\xed\x80\x8d\xed\x80\x8d\xed\x80\x8d\xed\x80\x8d\xed\x80\x8d1.8432260133286200000000000000000000000000000000000000E+301' +xfmt9355 format 4998913E0 '+.51g' -> '+4998913' +xfmt9356 format -9634978E0 '+017,.80f' -> '-9,634,978.00000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9357 format 2917226e14 '\xe6\x87\xaa^ 99,.52F' -> '\xe6\x87\xaa\xe6\x87\xaa\xe6\x87\xaa\xe6\x87\xaa\xe6\x87\xaa\xe6\x87\xaa\xe6\x87\xaa\xe6\x87\xaa\xe6\x87\xaa 291,722,600,000,000,000,000.0000000000000000000000000000000000000000000000000000\xe6\x87\xaa\xe6\x87\xaa\xe6\x87\xaa\xe6\x87\xaa\xe6\x87\xaa\xe6\x87\xaa\xe6\x87\xaa\xe6\x87\xaa\xe6\x87\xaa' +xfmt9358 format -1137964e31 '-095,.82e' -> '-000,001.1379640000000000000000000000000000000000000000000000000000000000000000000000000000e+37' +xfmt9359 format 1549194836E0 '\xef\x9b\xaa>+4,.70E' -> '+1.5491948360000000000000000000000000000000000000000000000000000000000000E+9' +xfmt9360 format -4372584807E0 ' 40n' -> ' -4372584807' +xfmt9361 format 1838147729E55 '0' -> '1.838147729E+64' +xfmt9362 format -6210430605e92 '\xe4\x94\x87> 92.32f' -> '-621043060500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000' +xfmt9363 format 75E0 '\xec\xa9\x85^ 73,.19' -> '\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85 75\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85\xec\xa9\x85' +xfmt9364 format -97E0 '\xe6\x82\x98< 56,.32g' -> '-97\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98\xe6\x82\x98' +xfmt9365 format 52E58 '' -> '5.2E+59' +xfmt9366 format -69E288 '\xef\x83\x9d<+1,.84f' -> '-69,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9367 format 135762852139979019633370E0 '+084,.40F' -> '+00,000,000,135,762,852,139,979,019,633,370.0000000000000000000000000000000000000000' +xfmt9368 format -466868820888230926100323E0 '\xe2\xaa\xa7> 25,G' -> '-466,868,820,888,230,926,100,323' +xfmt9369 format 276944182408789952550215E227 '\xe0\xa1\xb9<49,g' -> '2.76944182408789952550215e+250\xe0\xa1\xb9\xe0\xa1\xb9\xe0\xa1\xb9\xe0\xa1\xb9\xe0\xa1\xb9\xe0\xa1\xb9\xe0\xa1\xb9\xe0\xa1\xb9\xe0\xa1\xb9\xe0\xa1\xb9\xe0\xa1\xb9\xe0\xa1\xb9\xe0\xa1\xb9\xe0\xa1\xb9\xe0\xa1\xb9\xe0\xa1\xb9\xe0\xa1\xb9\xe0\xa1\xb9\xe0\xa1\xb9' +xfmt9370 format -285542898376597237748603E325 '' -> '-2.85542898376597237748603E+348' +xfmt9371 format 30154925961297745092E0 ',' -> '30,154,925,961,297,745,092' +xfmt9372 format -46523303768121262454E0 '\xee\x96\x9b<84,' -> '-46,523,303,768,121,262,454\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b\xee\x96\x9b' +xfmt9373 format 60132377573491531445e301 '\xe4\x96\x88^ ,E' -> ' 6.0132377573491531445E+320' +xfmt9374 format -17817851376218761979e150 '\xec\x8a\x92>48,F' -> '-17,817,851,376,218,761,979,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt9375 format 335531181012e0 ' 94' -> ' 335531181012' +xfmt9376 format -303608658943E0 '\xe4\xaf\x90>+38,%' -> '\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90\xe4\xaf\x90-30,360,865,894,300%' +xfmt9377 format 881917669583E173 '067,' -> '00,000,000,000,000,000,000,000,000,000,000,000,008.81917669583E+184' +xfmt9378 format -818974025785E299 '' -> '-8.18974025785E+310' +xfmt9379 format 59811051807431385516840871485262346E0 ' 94,' -> ' 59,811,051,807,431,385,516,840,871,485,262,346' +xfmt9380 format -51459490414885871787900053390504153e0 '\xe1\x82\xbd '-5.1459490414885871787900053390504153E+34' +xfmt9381 format 36867906797284339244319476473394820e328 ' 024,.80' -> ' 3.6867906797284339244319476473394820E+362' +xfmt9382 format -86919776485039128357374072636425297e324 '' -> '-8.6919776485039128357374072636425297E+358' +xfmt9383 format 36845864322334758170264003712833E0 '\xd0\x8c^-89,.58E' -> '\xd0\x8c\xd0\x8c\xd0\x8c\xd0\x8c\xd0\x8c\xd0\x8c\xd0\x8c\xd0\x8c\xd0\x8c\xd0\x8c\xd0\x8c\xd0\x8c3.6845864322334758170264003712833000000000000000000000000000E+31\xd0\x8c\xd0\x8c\xd0\x8c\xd0\x8c\xd0\x8c\xd0\x8c\xd0\x8c\xd0\x8c\xd0\x8c\xd0\x8c\xd0\x8c\xd0\x8c\xd0\x8c' +xfmt9384 format -29442276877179140426374519041601E0 '\xe5\x99\x9f< F' -> '-29442276877179140426374519041601' +xfmt9385 format 26918062577872527369517606223614E356 '\xed\x9d\xbf=-82.33' -> '\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf\xed\x9d\xbf2.6918062577872527369517606223614E+387' +xfmt9386 format -88440294571175682984189866090682E31 '\xe9\xb0\x82<+66.69%' -> '-88440294571175682984189866090682000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt9387 format 7943794217612975629080023883278384e0 '' -> '7943794217612975629080023883278384' +xfmt9388 format -3986477671278683286986083941180933e0 '0,.16f' -> '-3,986,477,671,278,683,286,986,083,941,180,933.0000000000000000' +xfmt9389 format 5756609203967846738337274352345750E133 '' -> '5.756609203967846738337274352345750E+166' +xfmt9390 format -3280404334047165385293305104787725E53 ',' -> '-3.280404334047165385293305104787725E+86' +xfmt9391 format 77794663384258336358548626e0 '41E' -> ' 7.7794663384258336358548626E+25' +xfmt9392 format -10798893290670913541634624e0 '' -> '-10798893290670913541634624' +xfmt9393 format 79952330600553638902787977e224 '024,.5' -> '00,000,000,007.9952E+249' +xfmt9394 format -46972759861747505097240899E361 '\xe8\x8d\xb3=13,.65F' -> '-469,727,598,617,475,050,972,408,990,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000' +xfmt9395 format 123456789012.123456789012345 '\xe8\xb0\xa0= 69,.5E' -> ' \xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa0\xe8\xb0\xa01.23457E+11' +xfmt9396 format -12345678.1234567890123456 ' 03,.13e' -> '-1.2345678123457e+7' +xfmt9397 format 8566931699392630550e0 '63' -> ' 8566931699392630550' +xfmt9398 format -7202474361610320580E0 '\xe9\x9b\xa9^-,' -> '-7,202,474,361,610,320,580' +xfmt9399 format 7073009941716107948e74 '\xef\xb2\xaa '7.073009941716107948E+92' +xfmt9400 format -2991472378047260779E362 '\xe7\x81\xac<-,.19' -> '-2.991472378047260779E+380' +xfmt9401 format 93812e0 '-053,' -> '0,000,000,000,000,000,000,000,000,000,000,000,093,812' +xfmt9402 format -84584E0 '99,g' -> ' -84,584' +xfmt9403 format 82172E119 ',' -> '8.2172E+123' +xfmt9404 format -46208e44 '\xee\xa3\xbd=+13,.57g' -> '-\xee\xa3\xbd\xee\xa3\xbd4.6208e+48' +xfmt9405 format 2010662335334856116225E0 '' -> '2010662335334856116225' +xfmt9406 format -9743889313737918538364E0 '\xef\xaa\x91> ,.58G' -> '-9,743,889,313,737,918,538,364' +xfmt9407 format 9082527969097379798430e354 '' -> '9.082527969097379798430E+375' +xfmt9408 format -5237623867956943592305E187 '\xe4\xa5\xa6^ 12,' -> '-5.237623867956943592305E+208' +xfmt9409 format 72664788e0 '-023,' -> '000,000,000,072,664,788' +xfmt9410 format -75550937E0 '\xef\xa5\xbb^6,F' -> '-75,550,937' +xfmt9411 format 41225957E296 '\xe3\xa5\x90^+24,E' -> '\xe3\xa5\x90\xe3\xa5\x90\xe3\xa5\x90\xe3\xa5\x90+4.1225957E+303\xe3\xa5\x90\xe3\xa5\x90\xe3\xa5\x90\xe3\xa5\x90\xe3\xa5\x90' +xfmt9412 format -52159218E108 '\xe2\x83\xa0<+20,.83F' -> '-52,159,218,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9413 format 26834754035528808385540316386604676e0 '\xee\xb3\x98>-59.64G' -> '\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x98\xee\xb3\x9826834754035528808385540316386604676' +xfmt9414 format -39736885619999097951972283295965834E0 '\xe2\xae\x93^' -> '-39736885619999097951972283295965834' +xfmt9415 format 75341834581959120174954799673435686e13 '' -> '7.5341834581959120174954799673435686E+47' +xfmt9416 format -74168418097165138854666249499780894E114 '' -> '-7.4168418097165138854666249499780894E+148' +xfmt9417 format 292604666922734049881964220878342579484E0 ' 99,g' -> ' 292,604,666,922,734,049,881,964,220,878,342,579,484' +xfmt9418 format -560857322569524984851769426195055088643E0 '+018,.49E' -> '-5.6085732256952498485176942619505508864300000000000E+38' +xfmt9419 format 380169941415397582277255219235547827416e344 'E' -> '3.80169941415397582277255219235547827416E+382' +xfmt9420 format -683907491712232129159206072594042376315E286 '+090,.29' -> '-000,000,000,000,000,000,000,000,000,000,000,000,000,006.8390749171223212915920607259E+324' +xfmt9421 format 2679e0 '\xe5\x88\x95=,' -> '2,679' +xfmt9422 format -1703e0 '\xc2\x8e< 22,.82E' -> '-1.7030000000000000000000000000000000000000000000000000000000000000000000000000000000E+3' +xfmt9423 format 1443E65 '+0.12G' -> '+1.443E+68' +xfmt9424 format -1281E357 '\xe9\xbb\xb4= 5,e' -> '-1.281e+360' +xfmt9425 format 5311403508588100558623004999E0 '-0' -> '5311403508588100558623004999' +xfmt9426 format -3365987689643606295504969108E0 '' -> '-3365987689643606295504969108' +xfmt9427 format 3024038737500182621564539171e240 '\xed\x8d\xaf=,.30%' -> '302,403,873,750,018,262,156,453,917,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000%' +xfmt9428 format -2964732426255361444421799567e137 '' -> '-2.964732426255361444421799567E+164' +xfmt9429 format 8566711922510950525449480E0 ' 0.78F' -> ' 8566711922510950525449480.000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9430 format -6151868380413714934356075E0 '\xe1\xa4\x93> ,' -> '-6,151,868,380,413,714,934,356,075' +xfmt9431 format 1862318033037317248286467e102 '\xeb\x8a\x8f>,' -> '1.862318033037317248286467E+126' +xfmt9432 format -5948879729852101851184643e306 '' -> '-5.948879729852101851184643E+330' +xfmt9433 format 825612851159453479132816E0 '\xe5\xab\xbc<' -> '825612851159453479132816' +xfmt9434 format -978132521439254955215780e0 '.5%' -> '-97813252143925495521578000.00000%' +xfmt9435 format 717325999252125786061483E175 '' -> '7.17325999252125786061483E+198' +xfmt9436 format -664699486034448218184004e123 '\xe2\xb4\x81<-93,.15%' -> '-66,469,948,603,444,821,818,400,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000%' +xfmt9437 format 768E0 '-,f' -> '768' +xfmt9438 format -708e0 '' -> '-708' +xfmt9439 format 936e177 '\xec\xbb\x82=,.70' -> '9.36E+179' +xfmt9440 format -341e363 '\xe1\xad\x9c< 36,.37g' -> '-3.41e+365\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c\xe1\xad\x9c' +xfmt9441 format 51188965389676E0 '.42e' -> '5.118896538967600000000000000000000000000000e+13' +xfmt9442 format -32382852693450e0 ' 088.27G' -> '-000000000000000000000000000000000000000000000000000000000000000000000000032382852693450' +xfmt9443 format 89431841842961e136 '\xe6\x91\xae< 96.32E' -> ' 8.94318418429610000000000000000000E+149\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae\xe6\x91\xae' +xfmt9444 format -52875527461708e68 '\xe0\xbe\x81^+32,.99E' -> '-5.287552746170800000000000000000000000000000000000000000000000000000000000000000000000000000000000000E+81' +xfmt9445 format 94810128592516123175010188400850E0 '+038,.79E' -> '+9.4810128592516123175010188400850000000000000000000000000000000000000000000000000E+31' +xfmt9446 format -16224971483466846842176995959915E0 '0n' -> '-16224971483466846842176995959915' +xfmt9447 format 35454773665748512415733074728177E363 ' 013,g' -> ' 3.5454773665748512415733074728177e+394' +xfmt9448 format -18559410203674807657103301720206E38 '\xe3\xa7\xa6=-' -> '-1.8559410203674807657103301720206E+69' +xfmt9449 format 22774148882171031884153380e0 '.44' -> '22774148882171031884153380' +xfmt9450 format -51658136432814391229254023e0 '' -> '-51658136432814391229254023' +xfmt9451 format 85469438949495555086461114E34 '' -> '8.5469438949495555086461114E+59' +xfmt9452 format -21583421557465117592086804e325 ' 6,.32G' -> '-2.1583421557465117592086804E+350' +xfmt9453 format 5271718146028549973766697853206278066E0 '\xe0\xb2\x88=+57.31F' -> '+5271718146028549973766697853206278066.0000000000000000000000000000000' +xfmt9454 format -9035805183772155051215135359929177662e0 ' 0%' -> '-903580518377215505121513535992917766200%' +xfmt9455 format 2396310936606483606487599866738804627e266 '' -> '2.396310936606483606487599866738804627E+302' +xfmt9456 format -7791716554329300620815463328754502840e352 '-026' -> '-7.791716554329300620815463328754502840E+388' +xfmt9457 format 2939605935442487887498262547600529e0 '\xef\x8b\x86= 94,.73' -> ' \xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x86\xef\x8b\x862,939,605,935,442,487,887,498,262,547,600,529' +xfmt9458 format -4372310017955858256888732286960779e0 '\xeb\xbe\x9a< 30,.98e' -> '-4.37231001795585825688873228696077900000000000000000000000000000000000000000000000000000000000000000e+33' +xfmt9459 format 1238387161800148313923924829249826e296 '' -> '1.238387161800148313923924829249826E+329' +xfmt9460 format -5924546621844135884545759072996595e335 '\xec\x85\xa8^ 87,.31%' -> '-59,245,466,218,441,358,845,457,590,729,965,950,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000%' +xfmt9461 format 3924688387081190288841760953355413339616E0 '\xe6\xb8\xb0<+58,.72E' -> '+3.924688387081190288841760953355413339616000000000000000000000000000000000E+39' +xfmt9462 format -6132946753980519649913798259502939024817e0 '07,.80' -> '-6,132,946,753,980,519,649,913,798,259,502,939,024,817' +xfmt9463 format 3530607740752200671258350340291203299612e99 '\xea\xb3\x86< 74,.21E' -> ' 3.530607740752200671258E+138\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86\xea\xb3\x86' +xfmt9464 format -6056578136438824651590264805706607181384e246 '0,.35F' -> '-6,056,578,136,438,824,651,590,264,805,706,607,181,384,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000' +xfmt9465 format 857818031179495E0 '\xee\x96\xaf=-,.64g' -> '857,818,031,179,495' +xfmt9466 format -806530908407371E0 '\xed\x86\xb8^-16,.67' -> '-806,530,908,407,371' +xfmt9467 format 993664387938914e6 '\xe3\xa2\xbd^+86,.96g' -> '\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd+9.93664387938914e+20\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd\xe3\xa2\xbd' +xfmt9468 format -110977760115694e176 '.79' -> '-1.10977760115694E+190' +xfmt9469 format 240256386E0 '\xe5\x9d\x91> 73,E' -> '\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91\xe5\x9d\x91 2.40256386E+8' +xfmt9470 format -104647794e0 'F' -> '-104647794' +xfmt9471 format 706889674E166 '\xe6\x98\x8a^28' -> '\xe6\x98\x8a\xe6\x98\x8a\xe6\x98\x8a\xe6\x98\x8a\xe6\x98\x8a\xe6\x98\x8a7.06889674E+174\xe6\x98\x8a\xe6\x98\x8a\xe6\x98\x8a\xe6\x98\x8a\xe6\x98\x8a\xe6\x98\x8a\xe6\x98\x8a' +xfmt9472 format -162713085e67 '\xee\xab\x98<91.85n' -> '-1.62713085e+75\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98\xee\xab\x98' +xfmt9473 format 2586543E0 '\xe1\xa0\x9c<58F' -> '2586543\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c\xe1\xa0\x9c' +xfmt9474 format -7795520E0 '82.42' -> ' -7795520' +xfmt9475 format 6950266e25 '\xe1\xb7\x8e<54,.7e' -> '6.9502660e+31\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e\xe1\xb7\x8e' +xfmt9476 format -5007764E285 '\xe6\xa8\xae>+.99' -> '-5.007764E+291' +xfmt9477 format 0E0 '\xe4\x89\xbf<,.19' -> '0' +xfmt9478 format 0E0 '\xee\xa2\xbb<-,' -> '0' +xfmt9479 format 0E149 ',e' -> '0e+149' +xfmt9480 format 0e220 ',' -> '0E+220' +xfmt9481 format 3809665712E0 '\xe7\xb2\xa6=-9,.10e' -> '3.8096657120e+9' +xfmt9482 format -8965686489e0 '0%' -> '-896568648900%' +xfmt9483 format 1170700205e214 '\xe3\xbd\xb7^+.73' -> '+1.170700205E+223' +xfmt9484 format -5195305200E129 '' -> '-5.195305200E+138' +xfmt9485 format 781252022476776511485260816499e0 '\xe3\xb3\xa6=,' -> '781,252,022,476,776,511,485,260,816,499' +xfmt9486 format -737234218654346392554752116734E0 '\xe0\xb8\x83>+95,.79G' -> '\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83\xe0\xb8\x83-737,234,218,654,346,392,554,752,116,734' +xfmt9487 format 435398922804059847090237489460e378 '' -> '4.35398922804059847090237489460E+407' +xfmt9488 format -794970681108634788306677440284e91 '8>+44,e' -> '8888888-7.94970681108634788306677440284e+120' +xfmt9489 format 3e0 '\xee\xa9\xb6<,g' -> '3' +xfmt9490 format -2e0 '+' -> '-2' +xfmt9491 format 2e135 '\xed\x8c\xb7>+5,.10E' -> '+2.0000000000E+135' +xfmt9492 format -7e185 ' ' -> '-7E+185' +xfmt9493 format 52411186273060657648E0 '.30n' -> '52411186273060657648' +xfmt9494 format -46384296029748188810e0 '\xe4\xa1\xa1>.95' -> '-46384296029748188810' +xfmt9495 format 23282185527161678826E161 '\xe0\xab\x8d=+96.96F' -> '+2328218552716167882600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9496 format -61789151817683757892E32 '\xe7\x93\x95^-55,.45F' -> '-6,178,915,181,768,375,789,200,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000' +xfmt9497 format 938851686439340093253357604e0 '\xee\x99\xad<.81f' -> '938851686439340093253357604.000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9498 format -110294590667654472381315842e0 '\xe8\xb5\xb0>+,' -> '-110,294,590,667,654,472,381,315,842' +xfmt9499 format 781472290704460289744087690e161 '\xe7\x98\xa4>+,%' -> '+7,814,722,907,044,602,897,440,876,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt9500 format -507084729263234198196948370E236 '-0g' -> '-5.07084729263234198196948370e+262' +xfmt9501 format 84818235730078047923689E0 '-22,.63G' -> '84,818,235,730,078,047,923,689' +xfmt9502 format -17691999118312130298393e0 ',' -> '-17,691,999,118,312,130,298,393' +xfmt9503 format 15483097333336187076274e382 '\xef\xbd\xbb^+1,.1e' -> '+1.5e+404' +xfmt9504 format -38315455977326631370133e246 ' 54' -> ' -3.8315455977326631370133E+268' +xfmt9505 format 506275127509343031731858070992159E0 '\xe0\xa4\x8b= ,.5E' -> ' 5.06275E+32' +xfmt9506 format -929470497356549452299386729696802E0 '10.74' -> '-929470497356549452299386729696802' +xfmt9507 format 493531357622109391701260405807644e231 '024.69e' -> '4.935313576221093917012604058076440000000000000000000000000000000000000e+263' +xfmt9508 format -260138901394835129946463034689701E229 '-014,.27G' -> '-2.60138901394835129946463035E+261' +xfmt9509 format 77217797221735071505559586276267329202e0 '\xe8\xa5\x9e= 68,.81E' -> ' 7.721779722173507150555958627626732920200000000000000000000000000000000000000000000E+37' +xfmt9510 format -73325819703256754373700517394614559844E0 '' -> '-73325819703256754373700517394614559844' +xfmt9511 format 12552200623553165838491888368031625930e107 '018.89' -> '1.2552200623553165838491888368031625930E+144' +xfmt9512 format -46351565428766235398460483385999322330e335 '' -> '-4.6351565428766235398460483385999322330E+372' +xfmt9513 format 160108E0 '09g' -> '000160108' +xfmt9514 format -167264E0 '\xea\x81\xa1<.27F' -> '-167264.000000000000000000000000000' +xfmt9515 format 563662E109 '\xe8\xb5\xa7^-56,.11e' -> '\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa75.63662000000e+114\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7\xe8\xb5\xa7' +xfmt9516 format -430643e170 '\xe7\x8b\x87>-79,.15g' -> '\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87\xe7\x8b\x87-4.30643e+175' +xfmt9517 format 1234567890123456789012.123456789 '\xe3\xa1\x83>+2,.94e' -> '+1.2345678901234567890121234567890000000000000000000000000000000000000000000000000000000000000000e+21' +xfmt9518 format -123.123 '+039,.66G' -> '-00,000,000,000,000,000,000,000,123.123' +xfmt9519 format 186912522628E0 '' -> '186912522628' +xfmt9520 format -844014371359E0 '\xe9\x99\x8f<+,G' -> '-844,014,371,359' +xfmt9521 format 178717839463E274 '0.10' -> '1.787178395E+285' +xfmt9522 format -258519604940e222 '+.71' -> '-2.58519604940E+233' +xfmt9523 format 180541e0 '\xe8\x9a\x98>g' -> '180541' +xfmt9524 format -817912e0 '' -> '-817912' +xfmt9525 format 416727E202 '\xe8\x95\xa1>+n' -> '+4.16727e+207' +xfmt9526 format -378013e63 '044.43f' -> '-378013000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000' +xfmt9527 format 99684979699547723520329e0 '' -> '99684979699547723520329' +xfmt9528 format -77985441367863145310364E0 '' -> '-77985441367863145310364' +xfmt9529 format 64499125206444527265254e216 '\xe4\xab\xba^G' -> '6.4499125206444527265254E+238' +xfmt9530 format -96422743697241249756316E34 '+06' -> '-9.6422743697241249756316E+56' +xfmt9531 format 2557627187349655046220260283e0 '' -> '2557627187349655046220260283' +xfmt9532 format -1225870572935171048483365023E0 ' 084,.79f' -> '-1,225,870,572,935,171,048,483,365,023.0000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9533 format 1323918031813816075917793520E367 '\xe5\xa5\x96>-64,.53f' -> '13,239,180,318,138,160,759,177,935,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000' +xfmt9534 format -9770296607760654278661452367e380 '' -> '-9.770296607760654278661452367E+407' +xfmt9535 format 95460711405109822172523236932814415E0 '\xe4\xbd\xb2>61,.83f' -> '95,460,711,405,109,822,172,523,236,932,814,415.00000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9536 format -38882401392874223255727658978306586E0 '\xef\x99\xa2=-16,' -> '-38,882,401,392,874,223,255,727,658,978,306,586' +xfmt9537 format 78817517426472493460171090003407139E4 '\xe8\x91\xbf> ,.59e' -> ' 7.88175174264724934601710900034071390000000000000000000000000e+38' +xfmt9538 format -73823324191944800278412689782635532E269 '45.50' -> ' -7.3823324191944800278412689782635532E+303' +xfmt9539 format 2115914116191510310930643e0 ' 065,.10%' -> ' 0,000,000,000,000,211,591,411,619,151,031,093,064,300.0000000000%' +xfmt9540 format -1196369952344647091157751e0 '\xe8\xb6\xab>+,.33f' -> '-1,196,369,952,344,647,091,157,751.000000000000000000000000000000000' +xfmt9541 format 4929607895375892461177095E55 ',' -> '4.929607895375892461177095E+79' +xfmt9542 format -8353653034399607159985749e352 '\xe2\xa9\xb5<58.75' -> '-8.353653034399607159985749E+376\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5\xe2\xa9\xb5' +xfmt9543 format 30411204748191898e0 '\xe3\xaf\x86> 43,.30G' -> '\xe3\xaf\x86\xe3\xaf\x86\xe3\xaf\x86\xe3\xaf\x86\xe3\xaf\x86\xe3\xaf\x86\xe3\xaf\x86\xe3\xaf\x86\xe3\xaf\x86\xe3\xaf\x86\xe3\xaf\x86\xe3\xaf\x86\xe3\xaf\x86\xe3\xaf\x86\xe3\xaf\x86\xe3\xaf\x86\xe3\xaf\x86\xe3\xaf\x86\xe3\xaf\x86\xe3\xaf\x86 30,411,204,748,191,898' +xfmt9544 format -63972647720520649e0 '' -> '-63972647720520649' +xfmt9545 format 10755567028173823E185 'F' -> '1075556702817382300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9546 format -54989825180291100e305 '' -> '-5.4989825180291100E+321' +xfmt9547 format 0E0 '\xe8\xb8\xae<-98,.76E' -> '0.0000000000000000000000000000000000000000000000000000000000000000000000000000E+76\xe8\xb8\xae\xe8\xb8\xae\xe8\xb8\xae\xe8\xb8\xae\xe8\xb8\xae\xe8\xb8\xae\xe8\xb8\xae\xe8\xb8\xae\xe8\xb8\xae\xe8\xb8\xae\xe8\xb8\xae\xe8\xb8\xae\xe8\xb8\xae\xe8\xb8\xae\xe8\xb8\xae\xe8\xb8\xae' +xfmt9548 format 0e0 '\xe4\xb6\x9c=,F' -> '0' +xfmt9549 format 0E357 '\xe1\xb1\xae^-87.45g' -> '\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae0e+357\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae\xe1\xb1\xae' +xfmt9550 format 0e98 '.74' -> '0E+98' +xfmt9551 format 64249715E0 '-062,%' -> '0,000,000,000,000,000,000,000,000,000,000,000,006,424,971,500%' +xfmt9552 format -63199887e0 '\xe1\x82\x8e> ,' -> '-63,199,887' +xfmt9553 format 55514598e66 '\xeb\x90\x9b<' -> '5.5514598E+73' +xfmt9554 format -39770664e362 '\xe0\xb0\xae^ 79,.85' -> '\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae-3.9770664E+369\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae\xe0\xb0\xae' +xfmt9555 format 211477430959436723261219351042E0 'n' -> '211477430959436723261219351042' +xfmt9556 format -422762159561999247449722692018E0 '' -> '-422762159561999247449722692018' +xfmt9557 format 944907134195488219285258808659E55 '-82,%' -> '944,907,134,195,488,219,285,258,808,659,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt9558 format -900523342813966042970305889676e297 '\xe6\x92\x86= 39,E' -> '-\xe6\x92\x86\xe6\x92\x869.00523342813966042970305889676E+326' +xfmt9559 format 2000663290206972276083433549106669909540e0 '+e' -> '+2.000663290206972276083433549106669909540e+39' +xfmt9560 format -9702133043991827541457948575057623495977e0 '.9%' -> '-970213304399182754145794857505762349597700.000000000%' +xfmt9561 format 6894460829776186474651900764680675499275E202 '.77' -> '6.894460829776186474651900764680675499275E+241' +xfmt9562 format -3446156041979089862446963994147058885556e365 '+.72' -> '-3.446156041979089862446963994147058885556E+404' +xfmt9563 format 8335991022E0 '' -> '8335991022' +xfmt9564 format -6441036440e0 '' -> '-6441036440' +xfmt9565 format 6421429853e283 '\xe1\xa6\xbf>+33,.37e' -> '+6.4214298530000000000000000000000000000e+292' +xfmt9566 format -2662361833E54 '\xeb\xa5\xae=+92,.10F' -> '-2,662,361,833,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000' +xfmt9567 format 3097154673895976314918831248167025E0 '\xec\xbc\x9b^+47,.65e' -> '+3.09715467389597631491883124816702500000000000000000000000000000000e+33' +xfmt9568 format -3540617240547873059589870488811162e0 '\xea\xb3\x93 '-3540617240547873059589870488811162' +xfmt9569 format 4302568095034598050637607698584873E278 '\xd8\xa6^95,.83g' -> '\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa64.302568095034598050637607698584873e+311\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6\xd8\xa6' +xfmt9570 format -4890340466105192011225630751538157E267 '\xe8\x8a\xa7>20n' -> '-4.890340466105192011225630751538157e+300' +xfmt9571 format 773972520858999469237e0 '+29.96' -> ' +773972520858999469237' +xfmt9572 format -791110720186557811296E0 '' -> '-791110720186557811296' +xfmt9573 format 649990633270521720251E183 '\xe8\xba\xa0=+59.5' -> '+\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa0\xe8\xba\xa06.4999E+203' +xfmt9574 format -423720223153812674959e354 '0,F' -> '-423,720,223,153,812,674,959,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt9575 format 3486338849387999683923342649536792945294637E0 '\xeb\x91\xba< 35,.96G' -> ' 3,486,338,849,387,999,683,923,342,649,536,792,945,294,637' +xfmt9576 format -3826082360656894211496075897536571825545398E0 '' -> '-3826082360656894211496075897536571825545398' +xfmt9577 format 1429823175423930728951074391032616325728222e74 '' -> '1.429823175423930728951074391032616325728222E+116' +xfmt9578 format -7752137717489246029852104988635310435994456E197 '\xe3\x9e\x98^+34,.1E' -> '\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98-7.8E+239\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98\xe3\x9e\x98' +xfmt9579 format 642733476e0 '-084,.39%' -> '000,000,000,000,000,000,000,064,273,347,600.000000000000000000000000000000000000000%' +xfmt9580 format -843483166E0 '23' -> ' -843483166' +xfmt9581 format 815239342e353 '\xe1\x91\x9f>+55.24F' -> '+81523934200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000' +xfmt9582 format -402488411E21 '\xe1\xb1\x85^-55,.86E' -> '-4.02488411000000000000000000000000000000000000000000000000000000000000000000000000000000E+29' +xfmt9583 format 432816620899151928E0 '\xe5\x9f\x95<-45,.64%' -> '43,281,662,089,915,192,800.0000000000000000000000000000000000000000000000000000000000000000%' +xfmt9584 format -635942620510899195E0 '\xe6\x92\xbc>+65,.94G' -> '\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc\xe6\x92\xbc-635,942,620,510,899,195' +xfmt9585 format 494287106375242578E85 '\xea\x9f\x8a= 82,.22G' -> ' \xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a\xea\x9f\x8a4.94287106375242578E+102' +xfmt9586 format -995854557936949642E292 '+019.68' -> '-9.95854557936949642E+309' +xfmt9587 format 22120247061147127341254352243735204674429E0 '0' -> '22120247061147127341254352243735204674429' +xfmt9588 format -49597124702944811858238718783838970867701e0 '' -> '-49597124702944811858238718783838970867701' +xfmt9589 format 60783063527049103941376940181627088122158e78 ' ,' -> ' 6.0783063527049103941376940181627088122158E+118' +xfmt9590 format -10176781970441780921737852645445487057674e184 '\xe4\xa0\x83^ 34,.7E' -> '\xe4\xa0\x83\xe4\xa0\x83\xe4\xa0\x83\xe4\xa0\x83\xe4\xa0\x83\xe4\xa0\x83\xe4\xa0\x83\xe4\xa0\x83\xe4\xa0\x83-1.0176782E+224\xe4\xa0\x83\xe4\xa0\x83\xe4\xa0\x83\xe4\xa0\x83\xe4\xa0\x83\xe4\xa0\x83\xe4\xa0\x83\xe4\xa0\x83\xe4\xa0\x83\xe4\xa0\x83' +xfmt9591 format 9431657E0 '\xef\x9c\xad=69,G' -> '\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad\xef\x9c\xad9,431,657' +xfmt9592 format -2132650E0 '\xe0\xa8\x86^' -> '-2132650' +xfmt9593 format 2981161E331 '+024,.50G' -> '+000,000,002.981161E+337' +xfmt9594 format -5003275e274 '.41' -> '-5.003275E+280' +xfmt9595 format 947498736483464416697892416152152055256E0 '\xd8\x96< 36,.54%' -> ' 94,749,873,648,346,441,669,789,241,615,215,205,525,600.000000000000000000000000000000000000000000000000000000%' +xfmt9596 format -584042368717595099506065369396623872292e0 '-092.20' -> '-0000000000000000000000000000000000000000000000000000000000000000005.8404236871759509951E+38' +xfmt9597 format 957855189520861895212808327157713014601E96 '\xe3\x92\x8b>-67,.67F' -> '957,855,189,520,861,895,212,808,327,157,713,014,601,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000' +xfmt9598 format -638843603857404175000887582726038971537E162 '+' -> '-6.38843603857404175000887582726038971537E+200' +xfmt9599 format 168278583334165360881939727714479562110954e0 '\xe9\xa4\x8c>' -> '168278583334165360881939727714479562110954' +xfmt9600 format -505757268900959541987268433362266339327603e0 '\xec\x87\xbe=32,F' -> '-505,757,268,900,959,541,987,268,433,362,266,339,327,603' +xfmt9601 format 828589659421486841177350237439511450392850e284 '\xe2\x85\xbe= ,.34' -> ' 8.285896594214868411773502374395115E+325' +xfmt9602 format -919270333002332896302946731147451400830831e47 ',' -> '-9.19270333002332896302946731147451400830831E+88' +xfmt9603 format 192e0 'E' -> '1.92E+2' +xfmt9604 format -857E0 '\xe2\xa1\xa5^+,.6f' -> '-857.000000' +xfmt9605 format 523E240 '\xe1\xa9\x82^' -> '5.23E+242' +xfmt9606 format -591e290 '\xe5\xac\xa1^.53F' -> '-59100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000' +xfmt9607 format 61151266193277688638496780511e0 '\xeb\xbc\xac^85.1' -> '\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac6E+28\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac\xeb\xbc\xac' +xfmt9608 format -69857741562049493928276603981E0 '25.2' -> ' -7.0E+28' +xfmt9609 format 55562721785718425231623526824E365 '+0E' -> '+5.5562721785718425231623526824E+393' +xfmt9610 format -89110111796369701292711487205e38 '\xe9\xae\xb7^n' -> '-8.9110111796369701292711487205e+66' +xfmt9611 format 5427060597037928E0 '0' -> '5427060597037928' +xfmt9612 format -6435378313811836e0 '' -> '-6435378313811836' +xfmt9613 format 6468802047285761E174 '\xe2\x9f\x9c=+,.77g' -> '+6.468802047285761e+189' +xfmt9614 format -4517102957162935E111 '\xe4\xac\x8c< ,G' -> '-4.517102957162935E+126' +xfmt9615 format 4160e0 '\xe9\x9b\xaf^ ,' -> ' 4,160' +xfmt9616 format -6354E0 '0.71' -> '-6354' +xfmt9617 format 2607e354 '\xe3\x8b\xb4>-57' -> '\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb4\xe3\x8b\xb42.607E+357' +xfmt9618 format -6889e257 '\xe7\xb7\x87<.10F' -> '-688900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000' +xfmt9619 format 7392546977678139034947e0 '\xe0\xb7\x90^+53,F' -> '\xe0\xb7\x90\xe0\xb7\x90\xe0\xb7\x90\xe0\xb7\x90\xe0\xb7\x90\xe0\xb7\x90\xe0\xb7\x90\xe0\xb7\x90\xe0\xb7\x90\xe0\xb7\x90\xe0\xb7\x90+7,392,546,977,678,139,034,947\xe0\xb7\x90\xe0\xb7\x90\xe0\xb7\x90\xe0\xb7\x90\xe0\xb7\x90\xe0\xb7\x90\xe0\xb7\x90\xe0\xb7\x90\xe0\xb7\x90\xe0\xb7\x90\xe0\xb7\x90\xe0\xb7\x90' +xfmt9620 format -2897336886852193943931E0 '\xe2\x9f\xb8> ,.54' -> '-2,897,336,886,852,193,943,931' +xfmt9621 format 7453658251895253754759E332 '+084,.81' -> '+0,000,000,000,000,000,000,000,000,000,000,000,000,000,007.453658251895253754759E+353' +xfmt9622 format -7505099423631719938161e100 '\xef\x8a\x81^ 78,f' -> '-75,050,994,236,317,199,381,610,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt9623 format 5E0 '0.29%' -> '500.00000000000000000000000000000%' +xfmt9624 format -9e0 '+0f' -> '-9' +xfmt9625 format 2e13 '\xef\xa0\x83^ 65,.4' -> '\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83 2E+13\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83\xef\xa0\x83' +xfmt9626 format -2E265 '05,.24%' -> '-2,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000%' +xfmt9627 format 77245396596590830772068153405398017135473991e0 '\xec\x8f\x9e>-64,.53e' -> '\xec\x8f\x9e\xec\x8f\x9e\xec\x8f\x9e\xec\x8f\x9e\xec\x8f\x9e7.72453965965908307720681534053980171354739910000000000e+43' +xfmt9628 format -49399219084951389681691259702646680393612482e0 '0,.86F' -> '-49,399,219,084,951,389,681,691,259,702,646,680,393,612,482.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9629 format 12101445567332077192967456619786518388972533E210 '62%' -> '1210144556733207719296745661978651838897253300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt9630 format -63658935590928545673252629790994844354655686E138 '\xe9\x85\xb6<,' -> '-6.3658935590928545673252629790994844354655686E+181' +xfmt9631 format 26992751403470402583560693360365870986E0 '' -> '26992751403470402583560693360365870986' +xfmt9632 format -53474472467023267150234919507706272067E0 '' -> '-53474472467023267150234919507706272067' +xfmt9633 format 11384749061521753240127116951032414663e20 '014.88G' -> '1.1384749061521753240127116951032414663E+57' +xfmt9634 format -20509900384727444617282693310340204940e185 '\xe3\x8e\x8c>86,.67%' -> '-205,099,003,847,274,446,172,826,933,103,402,049,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000%' +xfmt9635 format 877375311174978602401571449e0 '\xef\x97\x8a^-19,.70e' -> '8.7737531117497860240157144900000000000000000000000000000000000000000000e+26' +xfmt9636 format -704782030135871681173072909e0 '\xef\xa1\xaa=+41,.24%' -> '-70,478,203,013,587,168,117,307,290,900.000000000000000000000000%' +xfmt9637 format 102411739833178567021650021e344 '\xe6\xab\x95= 2,.74' -> ' 1.02411739833178567021650021E+370' +xfmt9638 format -713711850227692364745963610E234 '\xe8\xb2\xaf<77' -> '-7.13711850227692364745963610E+260\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf\xe8\xb2\xaf' +xfmt9639 format 1234567890.123 '\xea\x9d\x86= 56,.5g' -> ' \xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x86\xea\x9d\x861.2346e+9' +xfmt9640 format -123456789012.1234567 '018,.45E' -> '-1.234567890121234567000000000000000000000000000E+11' +xfmt9641 format 71E0 '' -> '71' +xfmt9642 format -44E0 '' -> '-44' +xfmt9643 format 93e338 '\xe2\x82\x9a^+89,.72%' -> '+930,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt9644 format -24E139 '\xe7\x98\x89=,.93' -> '-2.4E+140' +xfmt9645 format 4550840614630472703362E0 '\xe1\x9b\x92> 54,f' -> '\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92\xe1\x9b\x92 4,550,840,614,630,472,703,362' +xfmt9646 format -1035616140955088714228e0 ' 016' -> '-1035616140955088714228' +xfmt9647 format 8063115656282816084352E184 ',.6' -> '8.06312E+205' +xfmt9648 format -9541421545320576539758e242 '' -> '-9.541421545320576539758E+263' +xfmt9649 format 1219e0 '\xe7\xa8\x8b=67,.13E' -> '\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b\xe7\xa8\x8b1.2190000000000E+3' +xfmt9650 format -7215e0 '\xec\x93\xab>+13,.72%' -> '-721,500.000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt9651 format 4107e205 '\xe9\xa6\x9f<+71,.20%' -> '+4,107,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000%' +xfmt9652 format -3697E168 '' -> '-3.697E+171' +xfmt9653 format 50189683362795922714707E0 '' -> '50189683362795922714707' +xfmt9654 format -78092492572808926006545e0 '27' -> ' -78092492572808926006545' +xfmt9655 format 29221934526404331869603e147 '\xe6\x85\xbc<,F' -> '29,221,934,526,404,331,869,603,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt9656 format -25790683020869554665366e244 '+' -> '-2.5790683020869554665366E+266' +xfmt9657 format 89866341253581391E0 'F' -> '89866341253581391' +xfmt9658 format -73716492799218899E0 '\xe2\x93\x9c=%' -> '-7371649279921889900%' +xfmt9659 format 66208260922699077E277 '' -> '6.6208260922699077E+293' +xfmt9660 format -13495282325042126E231 '\xec\x80\xbd^-,.31E' -> '-1.3495282325042126000000000000000E+247' +xfmt9661 format 542269789652914983591488028225e0 ',' -> '542,269,789,652,914,983,591,488,028,225' +xfmt9662 format -181249811945598089421589109520e0 '\xec\xac\x8b< 83,E' -> '-1.81249811945598089421589109520E+29\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b\xec\xac\x8b' +xfmt9663 format 859954284163464465698162953196e276 '72G' -> ' 8.59954284163464465698162953196E+305' +xfmt9664 format -880029998681773859971450074182E134 '\xe7\xa4\x95= 7,.61%' -> '-8,800,299,986,817,738,599,714,500,741,820,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000%' +xfmt9665 format 91619956462588e0 '-0,f' -> '91,619,956,462,588' +xfmt9666 format -87275485326255e0 '-' -> '-87275485326255' +xfmt9667 format 27425998335542E246 '\xe9\xb7\xa3> ,E' -> ' 2.7425998335542E+259' +xfmt9668 format -68222510260536E2 '' -> '-6.8222510260536E+15' +xfmt9669 format 5963564200256484705349307680677e0 '\xee\x87\x82= 64,' -> ' \xee\x87\x82\xee\x87\x82\xee\x87\x82\xee\x87\x82\xee\x87\x82\xee\x87\x82\xee\x87\x82\xee\x87\x82\xee\x87\x82\xee\x87\x82\xee\x87\x82\xee\x87\x82\xee\x87\x82\xee\x87\x82\xee\x87\x82\xee\x87\x82\xee\x87\x82\xee\x87\x82\xee\x87\x82\xee\x87\x82\xee\x87\x82\xee\x87\x825,963,564,200,256,484,705,349,307,680,677' +xfmt9670 format -1708584860722484174728411441510e0 '+' -> '-1708584860722484174728411441510' +xfmt9671 format 1624905844859581503518414162633e189 ' .16e' -> ' 1.6249058448595815e+219' +xfmt9672 format -4480635715139965123744155098593E276 '\xe1\xae\xae= 85,.16G' -> '-\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae\xe1\xae\xae4.480635715139965E+306' +xfmt9673 format 926621431380e0 '048.79' -> '000000000000000000000000000000000000926621431380' +xfmt9674 format -857785674106E0 '030.23g' -> '-00000000000000000857785674106' +xfmt9675 format 951527511704E118 '' -> '9.51527511704E+129' +xfmt9676 format -255560901566E200 '\xea\x83\x95=F' -> '-25556090156600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9677 format 943692407647042192534703e0 '' -> '943692407647042192534703' +xfmt9678 format -998636774176527151684916E0 '\xed\x96\xa7<+44,.22f' -> '-998,636,774,176,527,151,684,916.0000000000000000000000' +xfmt9679 format 289140374882652033509606E165 '' -> '2.89140374882652033509606E+188' +xfmt9680 format -566520871866122531053005e379 '0G' -> '-5.66520871866122531053005E+402' +xfmt9681 format 862819792e0 'G' -> '862819792' +xfmt9682 format -357543861E0 ',' -> '-357,543,861' +xfmt9683 format 631918063e305 '\xeb\xb6\xae^' -> '6.31918063E+313' +xfmt9684 format -601644788E186 '\xeb\xb1\xad>34' -> '\xeb\xb1\xad\xeb\xb1\xad\xeb\xb1\xad\xeb\xb1\xad\xeb\xb1\xad\xeb\xb1\xad\xeb\xb1\xad\xeb\xb1\xad\xeb\xb1\xad\xeb\xb1\xad\xeb\xb1\xad\xeb\xb1\xad\xeb\xb1\xad\xeb\xb1\xad\xeb\xb1\xad\xeb\xb1\xad\xeb\xb1\xad\xeb\xb1\xad-6.01644788E+194' +xfmt9685 format 7411237924957619893315394931E0 '\xe2\xb1\xa8=' -> '7411237924957619893315394931' +xfmt9686 format -4278495594324001976636764205e0 '\xea\xb8\x92^-36.32e' -> '-4.27849559432400197663676420500000e+27' +xfmt9687 format 5705984452699494210977399245E305 ' e' -> ' 5.705984452699494210977399245e+332' +xfmt9688 format -5018925390753064450495853343e40 '+48,' -> ' -5.018925390753064450495853343E+67' +xfmt9689 format 81539083523279196470137923615e0 '\xe8\x83\xb4>-61,F' -> '\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb4\xe8\x83\xb481,539,083,523,279,196,470,137,923,615' +xfmt9690 format -81913234205104641813163979161e0 '\xe3\xb8\xbd> 21,.33f' -> '-81,913,234,205,104,641,813,163,979,161.000000000000000000000000000000000' +xfmt9691 format 50426180252100114855246387245E331 '\xef\x94\xae^-65.40f' -> '504261802521001148552463872450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000' +xfmt9692 format -78320397674449420974590344458e87 '0,' -> '-7.8320397674449420974590344458E+115' +xfmt9693 format 9206907325106176517E0 '\xe3\x9e\x8e<+95,' -> '+9,206,907,325,106,176,517\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e\xe3\x9e\x8e' +xfmt9694 format -5550287720319267261E0 '\xe2\x8e\x9b=+38,.82E' -> '-5.5502877203192672610000000000000000000000000000000000000000000000000000000000000000E+18' +xfmt9695 format 1969601947687323792E83 '\xe7\x9c\xb6<+98,.29e' -> '+1.96960194768732379200000000000e+101\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6\xe7\x9c\xb6' +xfmt9696 format -4842809499940894655E114 '\xea\xa8\x90< 25,.63F' -> '-4,842,809,499,940,894,655,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000' +xfmt9697 format 995816684510493E0 '\xe8\x8b\xbb<30.74F' -> '995816684510493.00000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9698 format -521861118335924E0 ' ,.14F' -> '-521,861,118,335,924.00000000000000' +xfmt9699 format 117689877852356E333 '93,' -> ' 1.17689877852356E+347' +xfmt9700 format -484107453319873e42 '\xe6\xb4\x9e<8' -> '-4.84107453319873E+56' +xfmt9701 format 5E0 '064,' -> '0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,005' +xfmt9702 format -9E0 '.56' -> '-9' +xfmt9703 format 1E88 '\xe3\x87\x93^-%' -> '1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt9704 format -4E314 '\xe7\x95\xbe=62,' -> '-\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe\xe7\x95\xbe4E+314' +xfmt9705 format 51767980331702480762432913253273469345683e0 '\xe9\xb5\x9b=47,.83F' -> '51,767,980,331,702,480,762,432,913,253,273,469,345,683.00000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9706 format -58153369003074632468300160115505230608304E0 '.78' -> '-58153369003074632468300160115505230608304' +xfmt9707 format 82738736396348523452925573358672632100745e281 '\xe1\xb4\xb4=-5,%' -> '827,387,363,963,485,234,529,255,733,586,726,321,007,450,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt9708 format -33455237634104294722549712313430363581313E154 '\xe8\xb4\x83^91.19f' -> '-334552376341042947225497123134303635813130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000' +xfmt9709 format 8694496118636e0 '\xe4\xbf\x91>3' -> '8694496118636' +xfmt9710 format -2249499248829e0 '' -> '-2249499248829' +xfmt9711 format 7449894004723e349 '\xe4\x9b\xb7^16,.83F' -> '74,498,940,047,230,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9712 format -6027575850636e148 '0,' -> '-6.027575850636E+160' +xfmt9713 format 14498494501154194781577008632717671289773303e0 '\xe0\xb9\x88<' -> '14498494501154194781577008632717671289773303' +xfmt9714 format -30439434582805360934806445977157925888937034E0 '' -> '-30439434582805360934806445977157925888937034' +xfmt9715 format 81865333431677826535291060658938873421554242e166 '\xe1\xbb\xb7^-86G' -> '\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb78.1865333431677826535291060658938873421554242E+209\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7\xe1\xbb\xb7' +xfmt9716 format -80639702858416200060301848069837526305494408e147 '\xea\xa1\x80= 7,.90f' -> '-80,639,702,858,416,200,060,301,848,069,837,526,305,494,408,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9717 format 435e0 '+051' -> '+00000000000000000000000000000000000000000000000435' +xfmt9718 format -819e0 '' -> '-819' +xfmt9719 format 912e7 '\xe9\xb4\xa8=+.9F' -> '+9120000000.000000000' +xfmt9720 format -377E145 '\xe2\x85\xa9=.10f' -> '-3770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000' +xfmt9721 format 56752461E0 '\xef\x9b\xb9^+49,f' -> '\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9+56,752,461\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9\xef\x9b\xb9' +xfmt9722 format -43433835E0 '\xe0\xba\xb3>,.26' -> '-43,433,835' +xfmt9723 format 59790563E341 '\xd7\x82=-6,.62%' -> '597,905,630,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000%' +xfmt9724 format -73702051E178 '\xe9\x8a\xa6^-22,.38' -> '\xe9\x8a\xa6\xe9\x8a\xa6\xe9\x8a\xa6-7.3702051E+185\xe9\x8a\xa6\xe9\x8a\xa6\xe9\x8a\xa6\xe9\x8a\xa6' +xfmt9725 format 8257796647058937757782943174192453956E0 '-051,%' -> '825,779,664,705,893,775,778,294,317,419,245,395,600%' +xfmt9726 format -9948212628346643541937598385346684033E0 '79,G' -> ' -9,948,212,628,346,643,541,937,598,385,346,684,033' +xfmt9727 format 9482185592214339244192777877628555832E293 ' 0e' -> ' 9.482185592214339244192777877628555832e+329' +xfmt9728 format -5086135495852041018302175925319115516e325 '+99.56G' -> ' -5.086135495852041018302175925319115516E+361' +xfmt9729 format 599327877907998389387195810369942005E0 '\xef\xb2\xb7>' -> '599327877907998389387195810369942005' +xfmt9730 format -456189733670317450339543711044532379e0 '\xe2\xa4\x93^90,.87G' -> '\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93-456,189,733,670,317,450,339,543,711,044,532,379\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93\xe2\xa4\x93' +xfmt9731 format 325273481389491860287566362762319563E151 '\xe4\x81\xa9^2,.75' -> '3.25273481389491860287566362762319563E+186' +xfmt9732 format -159758302323274230641223812864173903e166 '' -> '-1.59758302323274230641223812864173903E+201' +xfmt9733 format 69290710461636843086e0 ' 0.41' -> ' 69290710461636843086' +xfmt9734 format -27315419319696267374e0 '0n' -> '-27315419319696267374' +xfmt9735 format 59510932908482266119e124 '+09.11g' -> '+5.9510932908e+143' +xfmt9736 format -23376651998561641579e263 '\xe6\xb5\x94^+,' -> '-2.3376651998561641579E+282' +xfmt9737 format 11891e0 '78' -> ' 11891' +xfmt9738 format -44216E0 '\xe1\xbd\xbb^-51,.8G' -> '\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb-44,216\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb\xe1\xbd\xbb' +xfmt9739 format 98699e95 '\xee\x97\x81< ,.46%' -> ' 986,990,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000%' +xfmt9740 format -21506e61 '.56' -> '-2.1506E+65' +xfmt9741 format 549844711905739941499313281331796765105E0 '-012,.26F' -> '549,844,711,905,739,941,499,313,281,331,796,765,105.00000000000000000000000000' +xfmt9742 format -828006984653799622584464878653123787782e0 '85' -> ' -828006984653799622584464878653123787782' +xfmt9743 format 140210247991719271450668497177160689298e206 '\xe4\x90\xa6=+84.42e' -> '+\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa6\xe4\x90\xa61.402102479917192714506684971771606892980000e+244' +xfmt9744 format -870593607516067165579893684965109855627E306 '\xe5\x83\x93=.1' -> '-9E+344' +xfmt9745 format 9341805369581037e0 '\xe2\xa2\xac^ 45,.32E' -> '\xe2\xa2\xac\xe2\xa2\xac\xe2\xa2\xac 9.34180536958103700000000000000000E+15\xe2\xa2\xac\xe2\xa2\xac\xe2\xa2\xac' +xfmt9746 format -4513863888359927e0 '\xe6\xb9\xb6^.71' -> '-4513863888359927' +xfmt9747 format 7616379999612271e300 '0.17e' -> '7.61637999961227100e+315' +xfmt9748 format -7652076847239194E273 ',' -> '-7.652076847239194E+288' +xfmt9749 format 45604065117764802545461088735545e0 '\xe9\x84\x8e> 22,.48f' -> ' 45,604,065,117,764,802,545,461,088,735,545.000000000000000000000000000000000000000000000000' +xfmt9750 format -27335885657262977004415552558786E0 '0,.97%' -> '-2,733,588,565,726,297,700,441,555,255,878,600.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt9751 format 95124388654263042815646736983703E161 '\xe1\xbc\xbe> ,' -> ' 9.5124388654263042815646736983703E+192' +xfmt9752 format -33927391575940463352563119891153e2 '\xeb\x84\xa4=53' -> '-\xeb\x84\xa4\xeb\x84\xa4\xeb\x84\xa4\xeb\x84\xa4\xeb\x84\xa4\xeb\x84\xa4\xeb\x84\xa4\xeb\x84\xa4\xeb\x84\xa4\xeb\x84\xa4\xeb\x84\xa4\xeb\x84\xa4\xeb\x84\xa4\xeb\x84\xa4\xeb\x84\xa43.3927391575940463352563119891153E+33' +xfmt9753 format 27068340786762752815728591381064644E0 '\xe2\xb1\x86>.50' -> '27068340786762752815728591381064644' +xfmt9754 format -98724244631388320415271925315038686E0 '\xef\x8f\xbe^-37,E' -> '-9.8724244631388320415271925315038686E+34' +xfmt9755 format 96166190069156469409643104690944887e125 ',.48F' -> '9,616,619,006,915,646,940,964,310,469,094,488,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000' +xfmt9756 format -18611882179201674493748431342704024E51 '\xef\xa3\xaa>-98f' -> '\xef\xa3\xaa\xef\xa3\xaa\xef\xa3\xaa\xef\xa3\xaa\xef\xa3\xaa\xef\xa3\xaa\xef\xa3\xaa\xef\xa3\xaa\xef\xa3\xaa\xef\xa3\xaa\xef\xa3\xaa-18611882179201674493748431342704024000000000000000000000000000000000000000000000000000' +xfmt9757 format 887250548506938870185949684153018406814502e0 '\xe3\x98\x9e<-52,f' -> '887,250,548,506,938,870,185,949,684,153,018,406,814,502' +xfmt9758 format -674481056991316704373133788478774047076324e0 '\xef\x83\xb2= 91,.41%' -> '-67,448,105,699,131,670,437,313,378,847,877,404,707,632,400.00000000000000000000000000000000000000000%' +xfmt9759 format 858114772607069090615600017928868024598391e219 '+9,%' -> '+85,811,477,260,706,909,061,560,001,792,886,802,459,839,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt9760 format -596307494966066734518384997908474054227114e178 '72,.86' -> ' -5.96307494966066734518384997908474054227114E+219' +xfmt9761 format 12345678901.1234567890 '-' -> '12345678901.1234567890' +xfmt9762 format -123456789.12345678901234567890 '\xef\x8a\xa4^' -> '-123456789.12345678901234567890' +xfmt9763 format 8648520960636922363490714634646217774988501e0 '\xe9\xb4\x99^13,.20E' -> '8.64852096063692236349E+42' +xfmt9764 format -4373955095687438720742590934287310861949872e0 '\xe8\xb3\xbf=56.95' -> '-\xe8\xb3\xbf\xe8\xb3\xbf\xe8\xb3\xbf\xe8\xb3\xbf\xe8\xb3\xbf\xe8\xb3\xbf\xe8\xb3\xbf\xe8\xb3\xbf\xe8\xb3\xbf\xe8\xb3\xbf\xe8\xb3\xbf\xe8\xb3\xbf4373955095687438720742590934287310861949872' +xfmt9765 format 9593044898894373041423029330045391711013760E62 ',' -> '9.593044898894373041423029330045391711013760E+104' +xfmt9766 format -3478884836524871000893544297760364526663236E219 ' 098.42%' -> '-347888483652487100089354429776036452666323600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000%' +xfmt9767 format 277399508E0 ',.18g' -> '277,399,508' +xfmt9768 format -926550806E0 '0' -> '-926550806' +xfmt9769 format 233672765E86 '32g' -> ' 2.33672765e+94' +xfmt9770 format -111022398e33 ',' -> '-1.11022398E+41' +xfmt9771 format 228520777178057024459438747E0 '' -> '228520777178057024459438747' +xfmt9772 format -733112855015888732246766772e0 '+,g' -> '-733,112,855,015,888,732,246,766,772' +xfmt9773 format 290072155387309017849590058E125 '0,.79g' -> '2.90072155387309017849590058e+151' +xfmt9774 format -188747866930320349830546417e239 '\xef\xaf\x93>+46,.63%' -> '-1,887,478,669,303,203,498,305,464,170,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000%' +xfmt9775 format 64904576083E0 '-' -> '64904576083' +xfmt9776 format -36605059235e0 '76' -> ' -36605059235' +xfmt9777 format 33066070825E314 '+,.4%' -> '+330,660,708,250,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000%' +xfmt9778 format -62076014739e361 ' ,' -> '-6.2076014739E+371' +xfmt9779 format 8059534810E0 '014' -> '00008059534810' +xfmt9780 format -5556670131e0 '\xe2\xba\xaf=,' -> '-5,556,670,131' +xfmt9781 format 5514720036e378 '072,%' -> '551,472,003,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt9782 format -2477536461E266 ' .37' -> '-2.477536461E+275' +xfmt9783 format 28848624790631091235115200657e0 '+022,.66' -> '+28,848,624,790,631,091,235,115,200,657' +xfmt9784 format -47632727919397425008506380023E0 '\xee\x88\xb4<-15,' -> '-47,632,727,919,397,425,008,506,380,023' +xfmt9785 format 33569708104192784288856888059e313 '' -> '3.3569708104192784288856888059E+341' +xfmt9786 format -10928270747290650770082141306E93 '\xe1\x85\x99< 54,.19g' -> '-1.092827074729065077e+121\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99\xe1\x85\x99' +xfmt9787 format 8210947354638184826517e0 '\xe9\xa3\xa4^-6,.59G' -> '8,210,947,354,638,184,826,517' +xfmt9788 format -3198150775686331226437e0 '\xef\xaa\xab= 55,.47g' -> '-\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab\xef\xaa\xab3,198,150,775,686,331,226,437' +xfmt9789 format 7043365904604094361361E223 '0' -> '7.043365904604094361361E+244' +xfmt9790 format -2960359981342968801176e55 '\xef\xae\xb6>-57,E' -> '\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6\xef\xae\xb6-2.960359981342968801176E+76' +xfmt9791 format 1e0 ',' -> '1' +xfmt9792 format -2e0 '\xe5\x89\x88^+g' -> '-2' +xfmt9793 format 8E58 '' -> '8E+58' +xfmt9794 format -1E278 '+083,.59G' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,001E+278' +xfmt9795 format 8669e0 '0G' -> '8669' +xfmt9796 format -2699e0 '25' -> ' -2699' +xfmt9797 format 2619e75 '\xe4\x95\x9a>22,f' -> '2,619,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt9798 format -8742e231 '+0,' -> '-8.742E+234' +xfmt9799 format 847630745948681645390697444435128484E0 '67.9' -> ' 8.47630746E+35' +xfmt9800 format -151554546894430296450221672480103024e0 '0,.46' -> '-151,554,546,894,430,296,450,221,672,480,103,024' +xfmt9801 format 871433858848479048304005171203721105e241 '\xe7\x9b\x9c>-72.38' -> '\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c\xe7\x9b\x9c8.71433858848479048304005171203721105E+276' +xfmt9802 format -983398710780658353165030957565232292E223 '\xe8\xa3\x95>-63e' -> '\xe8\xa3\x95\xe8\xa3\x95\xe8\xa3\x95\xe8\xa3\x95\xe8\xa3\x95\xe8\xa3\x95\xe8\xa3\x95\xe8\xa3\x95\xe8\xa3\x95\xe8\xa3\x95\xe8\xa3\x95\xe8\xa3\x95\xe8\xa3\x95\xe8\xa3\x95\xe8\xa3\x95\xe8\xa3\x95\xe8\xa3\x95\xe8\xa3\x95\xe8\xa3\x95\xe8\xa3\x95-9.83398710780658353165030957565232292e+258' +xfmt9803 format 4196966668647126746437449397755033E0 '\xea\xa8\x8f<-23.85' -> '4196966668647126746437449397755033' +xfmt9804 format -6904731733295248831922987687711139E0 '72' -> ' -6904731733295248831922987687711139' +xfmt9805 format 3568655839837586593808127031999436E38 '\xe3\x8f\xb9=-,.25' -> '3.568655839837586593808127E+71' +xfmt9806 format -4794339574768771420871746870348162E308 '\xe9\x9b\xba>+1,.46f' -> '-479,433,957,476,877,142,087,174,687,034,816,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000' +xfmt9807 format 34522132E0 '\xe4\xa6\xb7^ ,%' -> ' 3,452,213,200%' +xfmt9808 format -94312230E0 '\xe6\x8c\x88>-54,.34f' -> '\xe6\x8c\x88\xe6\x8c\x88\xe6\x8c\x88\xe6\x8c\x88\xe6\x8c\x88\xe6\x8c\x88\xe6\x8c\x88\xe6\x8c\x88-94,312,230.0000000000000000000000000000000000' +xfmt9809 format 70442909E155 '\xe3\x93\x9d=%' -> '704429090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt9810 format -14964905e110 '\xe9\xb8\xab=2,.69e' -> '-1.496490500000000000000000000000000000000000000000000000000000000000000e+117' +xfmt9811 format 400823520853457313e0 '\xe6\x83\x9f> 74,.96F' -> ' 400,823,520,853,457,313.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9812 format -771170142405908642E0 '\xea\x84\x9c< 74,.14%' -> '-77,117,014,240,590,864,200.00000000000000%\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c\xea\x84\x9c' +xfmt9813 format 108086174010520812e108 ' 65.46' -> ' 1.08086174010520812E+125' +xfmt9814 format -441242842929017542E225 '\xe5\xba\xbe^24.18g' -> '-4.41242842929017542e+242' +xfmt9815 format 612940317717679900957266652522764e0 '\xe5\x9b\x80>,.10' -> '6.129403177E+32' +xfmt9816 format -419776267873684891628162596435994e0 '\xe5\x8e\xbc>+43,.25F' -> '-419,776,267,873,684,891,628,162,596,435,994.0000000000000000000000000' +xfmt9817 format 130628335994705603302155981776529E69 '\xc5\x83>-35e' -> '1.30628335994705603302155981776529e+101' +xfmt9818 format -106733090305494375381301242844637E217 '' -> '-1.06733090305494375381301242844637E+249' +xfmt9819 format 9581596080530535208255931616E0 '\xef\xba\xa1^ n' -> ' 9581596080530535208255931616' +xfmt9820 format -6928796033699282968039405683e0 '\xe8\x9e\x8e=.54' -> '-6928796033699282968039405683' +xfmt9821 format 8130434630601135693557709283e250 '+056.57g' -> '+0000000000000000000008.130434630601135693557709283e+277' +xfmt9822 format -7107220000037520476124413320E168 '-' -> '-7.107220000037520476124413320E+195' +xfmt9823 format 79159e0 '+85,' -> ' +79,159' +xfmt9824 format -84978E0 '\xe1\x85\x87<+36,.18' -> '-84,978\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87\xe1\x85\x87' +xfmt9825 format 59710E51 '073' -> '0000000000000000000000000000000000000000000000000000000000000005.9710E+55' +xfmt9826 format -52248e245 '\xe7\x8a\x90=-57,.81E' -> '-5.224800000000000000000000000000000000000000000000000000000000000000000000000000000E+249' +xfmt9827 format 34823935181572647564708004875602801912950e0 '' -> '34823935181572647564708004875602801912950' +xfmt9828 format -60080610558558483151744982151101181663411E0 '' -> '-60080610558558483151744982151101181663411' +xfmt9829 format 84138431287619713964203246627368826053967E305 '\xe1\xb3\xbb=+32,%' -> '+841,384,312,876,197,139,642,032,466,273,688,260,539,670,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt9830 format -50688585288566828026878648176801800363586e290 '' -> '-5.0688585288566828026878648176801800363586E+330' +xfmt9831 format 30145498129850827374528872478429e0 '+37' -> ' +30145498129850827374528872478429' +xfmt9832 format -20607058431725472855252265525425e0 '\xe8\xbb\xa9< 30,.55E' -> '-2.0607058431725472855252265525425000000000000000000000000E+31' +xfmt9833 format 17415381681984194017843486547237e82 '055' -> '000000000000000001.7415381681984194017843486547237E+113' +xfmt9834 format -19860447709792687393843469754704e183 '\xd6\xbc^ 1.48' -> '-1.9860447709792687393843469754704E+214' +xfmt9835 format 77E0 '' -> '77' +xfmt9836 format -80e0 '-84F' -> ' -80' +xfmt9837 format 58e232 '+' -> '+5.8E+233' +xfmt9838 format -23E87 '\xea\x98\xa9< 70,.63f' -> '-23,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000' +xfmt9839 format 17415525944587277E0 '-.45g' -> '17415525944587277' +xfmt9840 format -65777562994661619e0 '\xec\x96\xb3^17F' -> '-65777562994661619' +xfmt9841 format 28183014774000163e155 '' -> '2.8183014774000163E+171' +xfmt9842 format -41607831807664726E348 '\xe2\xa4\xb8=4,.74' -> '-4.1607831807664726E+364' +xfmt9843 format 82428493999170E0 '' -> '82428493999170' +xfmt9844 format -20036826791688E0 '\xe1\x90\x80>-99,.15E' -> '\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80\xe1\x90\x80-2.003682679168800E+13' +xfmt9845 format 66709020679494E376 '-.80' -> '6.6709020679494E+389' +xfmt9846 format -47045293529169E36 '\xe4\xbb\xa2=29' -> '-\xe4\xbb\xa2\xe4\xbb\xa2\xe4\xbb\xa2\xe4\xbb\xa2\xe4\xbb\xa2\xe4\xbb\xa2\xe4\xbb\xa2\xe4\xbb\xa2\xe4\xbb\xa24.7045293529169E+49' +xfmt9847 format 0e0 '\xea\x9e\x80=51,.38%' -> '\xea\x9e\x80\xea\x9e\x80\xea\x9e\x80\xea\x9e\x80\xea\x9e\x80\xea\x9e\x80\xea\x9e\x80\xea\x9e\x80\xea\x9e\x80\xea\x9e\x800.00000000000000000000000000000000000000%' +xfmt9848 format 0e0 '029,.11' -> '0,000,000,000,000,000,000,000' +xfmt9849 format 0e271 '7,' -> ' 0E+271' +xfmt9850 format 0E162 ',' -> '0E+162' +xfmt9851 format 5816267768787268E0 '' -> '5816267768787268' +xfmt9852 format -4166607665858806e0 '' -> '-4166607665858806' +xfmt9853 format 5586300560373745e11 '' -> '5.586300560373745E+26' +xfmt9854 format -2947459425207764e201 '020,.56' -> '-2.947459425207764E+216' +xfmt9855 format 59787478142642901079233E0 'g' -> '59787478142642901079233' +xfmt9856 format -74530764541967282003405e0 '\xe1\x8d\xa2<+61,.3G' -> '-7.45E+22\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2\xe1\x8d\xa2' +xfmt9857 format 65631257371976469063105E328 ',' -> '6.5631257371976469063105E+350' +xfmt9858 format -91751957129332382795412E125 '\xef\x8f\x9c<89,e' -> '-9.1751957129332382795412e+147\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c\xef\x8f\x9c' +xfmt9859 format 21352645202957763580900379334770765200E0 '' -> '21352645202957763580900379334770765200' +xfmt9860 format -60979578157719185553964640003321629245e0 '0,' -> '-60,979,578,157,719,185,553,964,640,003,321,629,245' +xfmt9861 format 27757832644577661404454485599924976576e246 '-,.53%' -> '2,775,783,264,457,766,140,445,448,559,992,497,657,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000%' +xfmt9862 format -72599038201059368604778804178538735582E319 '' -> '-7.2599038201059368604778804178538735582E+356' +xfmt9863 format 2843615131135918060866691321090333699E0 '\xec\xb1\xbe<46' -> '2843615131135918060866691321090333699\xec\xb1\xbe\xec\xb1\xbe\xec\xb1\xbe\xec\xb1\xbe\xec\xb1\xbe\xec\xb1\xbe\xec\xb1\xbe\xec\xb1\xbe\xec\xb1\xbe' +xfmt9864 format -4156018866162589019447700988359497040E0 '\xe8\x86\x9e=+,' -> '-4,156,018,866,162,589,019,447,700,988,359,497,040' +xfmt9865 format 4826208517533212309823607024368752037e283 '\xef\x89\x9c=1.64F' -> '48262085175332123098236070243687520370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000' +xfmt9866 format -6266128284849651834742697207511218125E310 '\xef\xb5\xb6> 28,G' -> '-6.266128284849651834742697207511218125E+346' +xfmt9867 format 2909894060652310148470017194738140993374E0 '0,.41f' -> '2,909,894,060,652,310,148,470,017,194,738,140,993,374.00000000000000000000000000000000000000000' +xfmt9868 format -5634377515101721570012947439068487162623E0 '\xe7\xaa\xad^+25,.15F' -> '-5,634,377,515,101,721,570,012,947,439,068,487,162,623.000000000000000' +xfmt9869 format 1335316632480514754621601320221363495664e90 '\xc5\x85^+,.28G' -> '+1.335316632480514754621601320E+129' +xfmt9870 format -1360434278986312815801413249410914617715E312 '+.86' -> '-1.360434278986312815801413249410914617715E+351' +xfmt9871 format 652103996298123e0 '\xcb\x9c<-,' -> '652,103,996,298,123' +xfmt9872 format -521194691653769e0 '\xe4\x8e\xab^50' -> '\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab-521194691653769\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab\xe4\x8e\xab' +xfmt9873 format 343238263769005E315 ',' -> '3.43238263769005E+329' +xfmt9874 format -823148455739304e49 '\xef\xae\xb9^ 47,.46f' -> '-8,231,484,557,393,040,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000' +xfmt9875 format 2778425e0 '-0.57' -> '2778425' +xfmt9876 format -6010839e0 '\xe9\xaa\xa5<+' -> '-6010839' +xfmt9877 format 4988746e13 '\xef\xad\xb8=-66,.51e' -> '\xef\xad\xb8\xef\xad\xb8\xef\xad\xb8\xef\xad\xb8\xef\xad\xb8\xef\xad\xb8\xef\xad\xb8\xef\xad\xb8\xef\xad\xb84.988746000000000000000000000000000000000000000000000e+19' +xfmt9878 format -7871559E152 '' -> '-7.871559E+158' +xfmt9879 format 784009608361282454244226702069346150261688e0 '\xef\x9e\xa2<-.9' -> '7.84009608E+41' +xfmt9880 format -595413338689206892535164887122815083199905e0 '\xe1\x81\xb8>44.97g' -> '\xe1\x81\xb8-595413338689206892535164887122815083199905' +xfmt9881 format 695938201572506756629303797035974046943688E37 '\xe8\x95\xba<-70,.3G' -> '6.96E+78\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba\xe8\x95\xba' +xfmt9882 format -445934665603060483012983278267256732902232e129 '\xe7\xb0\x9c=' -> '-4.45934665603060483012983278267256732902232E+170' +xfmt9883 format 12345678901234567.123456789012345678901 '067,.79e' -> '1.2345678901234567123456789012345678901000000000000000000000000000000000000000000e+16' +xfmt9884 format -12345678901234.12345 '\xee\x94\x8b=+,.31F' -> '-12,345,678,901,234.1234500000000000000000000000000' +xfmt9885 format 757157642589912048e0 '\xe1\x9b\x9c> 86,.19f' -> '\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c\xe1\x9b\x9c 757,157,642,589,912,048.0000000000000000000' +xfmt9886 format -452551169177610332E0 '\xea\xb7\xa4=+20G' -> '-\xea\xb7\xa4452551169177610332' +xfmt9887 format 148551349641279402e214 '0e' -> '1.48551349641279402e+231' +xfmt9888 format -127296142119506015E103 '\xeb\xa8\xa5>,f' -> '-1,272,961,421,195,060,150,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt9889 format 11663160428008503801816976041994615036848E0 '+0' -> '+11663160428008503801816976041994615036848' +xfmt9890 format -78676100260811914832018078896583712476204E0 '\xe8\x85\xba> ,.17%' -> '-7,867,610,026,081,191,483,201,807,889,658,371,247,620,400.00000000000000000%' +xfmt9891 format 29103662962880673421982920419432645849332e115 '\xe3\x91\x93= ,G' -> ' 2.9103662962880673421982920419432645849332E+155' +xfmt9892 format -15688602804585769723275574280328922202382E266 '\xe6\xac\xbf=+57,.85f' -> '-1,568,860,280,458,576,972,327,557,428,032,892,220,238,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9893 format 7795591726980344207499816915212801e0 '' -> '7795591726980344207499816915212801' +xfmt9894 format -2156822130795062842626310433712999E0 '-089,.86f' -> '-2,156,822,130,795,062,842,626,310,433,712,999.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9895 format 6689919461397868717927745395375032E323 '\xed\x86\x83=+92.86G' -> '+\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x83\xed\x86\x836.689919461397868717927745395375032E+356' +xfmt9896 format -2858252911595435388119031084591682e16 '\xec\xa8\x97<' -> '-2.858252911595435388119031084591682E+49' +xfmt9897 format 95502852496707220778384e0 '\xe9\x90\xab=-.4f' -> '95502852496707220778384.0000' +xfmt9898 format -89194063993300713146515E0 '\xe0\xad\xb3=-,e' -> '-8.9194063993300713146515e+22' +xfmt9899 format 98099058249343925373551e277 '\xe1\x95\xa8=+.29' -> '+9.8099058249343925373551E+299' +xfmt9900 format -11922149490729294145833e101 '\xd1\x8b> .72' -> '-1.1922149490729294145833E+123' +xfmt9901 format 9033699301129531783688147338e0 ' 015,.72%' -> ' 903,369,930,112,953,178,368,814,733,800.000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt9902 format -2078910816759725215523279429E0 '+0,.66G' -> '-2,078,910,816,759,725,215,523,279,429' +xfmt9903 format 5013938108746421728498043680e64 '' -> '5.013938108746421728498043680E+91' +xfmt9904 format -8894592088933072346157618844e272 ' 0.59' -> '-8.894592088933072346157618844E+299' +xfmt9905 format 3552663422e0 ' 16,' -> ' 3,552,663,422' +xfmt9906 format -4268909298E0 '\xd2\xbb> 62,.50G' -> '\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb\xd2\xbb-4,268,909,298' +xfmt9907 format 5580014152E71 '86,.53G' -> ' 5.580014152E+80' +xfmt9908 format -2861358052e15 '97' -> ' -2.861358052E+24' +xfmt9909 format 7138740123691e0 '+' -> '+7138740123691' +xfmt9910 format -4309193437852E0 '' -> '-4309193437852' +xfmt9911 format 7013320739098E366 '' -> '7.013320739098E+378' +xfmt9912 format -8223663600536e61 '\xe0\xa7\x9e=+,F' -> '-82,236,636,005,360,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt9913 format 3811e0 '\xec\x89\xa2^-83,.7E' -> '\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa23.8110000E+3\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2\xec\x89\xa2' +xfmt9914 format -6168e0 '+21,' -> ' -6,168' +xfmt9915 format 4378E188 ',' -> '4.378E+191' +xfmt9916 format -3845E251 '\xe7\x8c\xba=24,' -> '-\xe7\x8c\xba\xe7\x8c\xba\xe7\x8c\xba\xe7\x8c\xba\xe7\x8c\xba\xe7\x8c\xba\xe7\x8c\xba\xe7\x8c\xba\xe7\x8c\xba\xe7\x8c\xba\xe7\x8c\xba\xe7\x8c\xba\xe7\x8c\xba3.845E+254' +xfmt9917 format 553526956831993634871E0 '\xee\x84\x80<-81,.21%' -> '55,352,695,683,199,363,487,100.000000000000000000000%\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80\xee\x84\x80' +xfmt9918 format -315646685390937905884E0 '\xe5\x86\xb0^-22,.79g' -> '-315,646,685,390,937,905,884' +xfmt9919 format 435980718531876642209e73 '\xe6\xad\xb2^+70,.82E' -> '+4.3598071853187664220900000000000000000000000000000000000000000000000000000000000000E+93' +xfmt9920 format -245342713975744263656e267 '' -> '-2.45342713975744263656E+287' +xfmt9921 format 9070227490745919227306292939325381130646E0 '\xe4\x92\xb8<+6E' -> '+9.070227490745919227306292939325381130646E+39' +xfmt9922 format -4655933624512116023681700539564680760443e0 '-069.20E' -> '-0000000000000000000000000000000000000000004.65593362451211602368E+39' +xfmt9923 format 4345172803757998704742324776031845376203E23 '\xef\xb4\x8b= 16,%' -> ' 43,451,728,037,579,987,047,423,247,760,318,453,762,030,000,000,000,000,000,000,000,000%' +xfmt9924 format -9795986451117623381857438973521027518791e377 '17,.26g' -> '-9.7959864511176233818574390e+416' +xfmt9925 format 148876487675449224135598148E0 '-078.25' -> '0000000000000000000000000000000000000000000000001.488764876754492241355981E+26' +xfmt9926 format -989530268334649982622723850E0 '' -> '-989530268334649982622723850' +xfmt9927 format 274860055297538375689413689E43 '\xec\xb9\x9f^ 9,' -> ' 2.74860055297538375689413689E+69' +xfmt9928 format -889153774066280997257743436E153 '\xed\x8c\xb1^ 58,.15f' -> '-889,153,774,066,280,997,257,743,436,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000' +xfmt9929 format 947536559141447290074414981741898160E0 ',' -> '947,536,559,141,447,290,074,414,981,741,898,160' +xfmt9930 format -434373352585649954356537067293327914e0 '\xe7\xab\x97< 37,.68E' -> '-4.34373352585649954356537067293327914000000000000000000000000000000000E+35' +xfmt9931 format 377161682087954797842229029333903133e186 '\xec\x9b\xa7>99,' -> '\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa7\xec\x9b\xa73.77161682087954797842229029333903133E+221' +xfmt9932 format -887974133396737676719577094941299588E365 '\xe5\xb7\x82>99E' -> '\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82\xe5\xb7\x82-8.87974133396737676719577094941299588E+400' +xfmt9933 format 7553071137909998686111E0 '\xee\xa6\x9e=+52,.30g' -> '+\xee\xa6\x9e\xee\xa6\x9e\xee\xa6\x9e\xee\xa6\x9e\xee\xa6\x9e\xee\xa6\x9e\xee\xa6\x9e\xee\xa6\x9e\xee\xa6\x9e\xee\xa6\x9e\xee\xa6\x9e\xee\xa6\x9e\xee\xa6\x9e\xee\xa6\x9e\xee\xa6\x9e\xee\xa6\x9e\xee\xa6\x9e\xee\xa6\x9e\xee\xa6\x9e\xee\xa6\x9e\xee\xa6\x9e\xee\xa6\x9e7,553,071,137,909,998,686,111' +xfmt9934 format -8113010634707286896673E0 '\xe9\xa6\x8d>-61.52' -> '\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d\xe9\xa6\x8d-8113010634707286896673' +xfmt9935 format 8727753966624492379214e314 '\xef\x81\xa3^17' -> '8.727753966624492379214E+335' +xfmt9936 format -5266526373304292398123E302 '\xe3\xbd\xa7^-53,.23F' -> '-526,652,637,330,429,239,812,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000' +xfmt9937 format 34145618e0 '' -> '34145618' +xfmt9938 format -83186656E0 '096,E' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,008.3186656E+7' +xfmt9939 format 44266472E61 '\xe2\x83\xbb=53,.22%' -> '44,266,472,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000%' +xfmt9940 format -85067101e220 '-085,.94e' -> '-8.5067101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+227' +xfmt9941 format 0E0 '.78%' -> '0.000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt9942 format 0e0 '\xe5\x85\x8f^-52G' -> '\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f0\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f\xe5\x85\x8f' +xfmt9943 format 0e318 '' -> '0E+318' +xfmt9944 format 0e131 '' -> '0E+131' +xfmt9945 format 625989056982e0 ',' -> '625,989,056,982' +xfmt9946 format -990549567547E0 '\xe0\xba\x8f=+45,.52%' -> '-99,054,956,754,700.0000000000000000000000000000000000000000000000000000%' +xfmt9947 format 902896983865e363 ' ,.62' -> ' 9.02896983865E+374' +xfmt9948 format -728993969446E342 '+10.84' -> '-7.28993969446E+353' +xfmt9949 format 5961312166950358288082949354243289151e0 '+069,' -> '+0,000,000,000,000,005,961,312,166,950,358,288,082,949,354,243,289,151' +xfmt9950 format -1000345064119565158924360994091383346E0 '\xee\x8b\x96= 9,' -> '-1,000,345,064,119,565,158,924,360,994,091,383,346' +xfmt9951 format 4727419021687034197009221197972789922e304 '' -> '4.727419021687034197009221197972789922E+340' +xfmt9952 format -1303074934822964963553337190221596116e152 '\xe3\xb8\x80=34,.74G' -> '-1.303074934822964963553337190221596116E+188' +xfmt9953 format 77E0 '' -> '77' +xfmt9954 format -79e0 ' 0.97f' -> '-79.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9955 format 62e132 '0' -> '6.2E+133' +xfmt9956 format -25e124 '\xea\x89\xae= 41,G' -> '-\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae\xea\x89\xae2.5E+125' +xfmt9957 format 402216218473655e0 '\xe4\x8f\xb0=-24.84' -> '\xe4\x8f\xb0\xe4\x8f\xb0\xe4\x8f\xb0\xe4\x8f\xb0\xe4\x8f\xb0\xe4\x8f\xb0\xe4\x8f\xb0\xe4\x8f\xb0\xe4\x8f\xb0402216218473655' +xfmt9958 format -259696347013532e0 '\xe7\x8b\x87^+,G' -> '-259,696,347,013,532' +xfmt9959 format 981409761061984e127 '\xeb\xb8\xbf^1.26' -> '9.81409761061984E+141' +xfmt9960 format -308724063196429E101 '\xd9\xae<-58,.79e' -> '-3.0872406319642900000000000000000000000000000000000000000000000000000000000000000e+115' +xfmt9961 format 125313987654278896772174E0 '\xee\xaa\xaf< 38g' -> ' 125313987654278896772174\xee\xaa\xaf\xee\xaa\xaf\xee\xaa\xaf\xee\xaa\xaf\xee\xaa\xaf\xee\xaa\xaf\xee\xaa\xaf\xee\xaa\xaf\xee\xaa\xaf\xee\xaa\xaf\xee\xaa\xaf\xee\xaa\xaf\xee\xaa\xaf' +xfmt9962 format -987431911572493618405243e0 '' -> '-987431911572493618405243' +xfmt9963 format 252033584866601913176293E343 '0,%' -> '252,033,584,866,601,913,176,293,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt9964 format -287430155620816318653876E282 '61.68f' -> '-287430155620816318653876000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000000000000' +xfmt9965 format 465283071709128668911927272119804440409203E0 '' -> '465283071709128668911927272119804440409203' +xfmt9966 format -834407136051840246706575711889709665553758E0 '\xef\xbf\xb6=.80' -> '-834407136051840246706575711889709665553758' +xfmt9967 format 405802528771957863144307106197392178129024e7 '6,F' -> '4,058,025,287,719,578,631,443,071,061,973,921,781,290,240,000,000' +xfmt9968 format -664762901356650694579476263687020594855787e47 '\xe4\x8f\x91^-.33f' -> '-66476290135665069457947626368702059485578700000000000000000000000000000000000000000000000.000000000000000000000000000000000' +xfmt9969 format 21114525787805291744e0 '0' -> '21114525787805291744' +xfmt9970 format -76502266017747004891e0 '\xe3\xa9\xa0>.76' -> '-76502266017747004891' +xfmt9971 format 90293438369374745480e365 '\xe5\x92\x9e<-55,.41f' -> '9,029,343,836,937,474,548,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000' +xfmt9972 format -85340126907789115687e94 '' -> '-8.5340126907789115687E+113' +xfmt9973 format 9106926571473937696e0 '' -> '9106926571473937696' +xfmt9974 format -4262170938412735092E0 '16,.71' -> '-4,262,170,938,412,735,092' +xfmt9975 format 3357571755532676578E381 '\xd7\x98=36,' -> '\xd7\x98\xd7\x98\xd7\x98\xd7\x98\xd7\x98\xd7\x98\xd7\x98\xd7\x98\xd7\x98\xd7\x98\xd7\x983.357571755532676578E+399' +xfmt9976 format -9757210335976597565E366 '\xe4\x87\x96>+93.61' -> '\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96\xe4\x87\x96-9.757210335976597565E+384' +xfmt9977 format 50971589975322450164665396000087177E0 '' -> '50971589975322450164665396000087177' +xfmt9978 format -62266700046263903038304353798407275E0 '079.91' -> '-000000000000000000000000000000000000000000062266700046263903038304353798407275' +xfmt9979 format 78320898037595445123707305938868274e307 '' -> '7.8320898037595445123707305938868274E+341' +xfmt9980 format -96316502006222223331160680364136799E266 '\xee\xad\xa3^-86.55' -> '\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3-9.6316502006222223331160680364136799E+300\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3\xee\xad\xa3' +xfmt9981 format 6e0 '\xec\x98\xa9<49,.80e' -> '6.00000000000000000000000000000000000000000000000000000000000000000000000000000000e+0' +xfmt9982 format -8E0 '-,F' -> '-8' +xfmt9983 format 2e320 '\xea\x87\xb2^,%' -> '20,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt9984 format -1e187 '\xe3\xab\xa2> F' -> '-10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt9985 format 33544E0 '\xea\x89\xbf>+,.35F' -> '+33,544.00000000000000000000000000000000000' +xfmt9986 format -29730e0 '\xed\x92\x9d< 11,G' -> '-29,730\xed\x92\x9d\xed\x92\x9d\xed\x92\x9d\xed\x92\x9d' +xfmt9987 format 59808e313 '\xe7\x89\x9c<-,' -> '5.9808E+317' +xfmt9988 format -29364e241 '' -> '-2.9364E+245' +xfmt9989 format 56515776901696466e0 '67' -> ' 56515776901696466' +xfmt9990 format -87153664750242627e0 '070,g' -> '-0,000,000,000,000,000,000,000,000,000,000,000,087,153,664,750,242,627' +xfmt9991 format 74752732816974544e50 '\xe0\xba\x97^-58,.11E' -> '\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x977.47527328170E+66\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97\xe0\xba\x97' +xfmt9992 format -66254510891182882E303 ',F' -> '-66,254,510,891,182,882,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt9993 format 746088238e0 '\xe9\x88\xb0> 85.20E' -> '\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0\xe9\x88\xb0 7.46088238000000000000E+8' +xfmt9994 format -624613812e0 '\xe2\x92\x93= 3F' -> '-624613812' +xfmt9995 format 614252088e140 '+069.42n' -> '+000000000000000000000000000000000000000000000000000006.14252088e+148' +xfmt9996 format -582437631e285 '' -> '-5.82437631E+293' +xfmt9997 format 61429174262554224203766484e0 '010e' -> '6.1429174262554224203766484e+25' +xfmt9998 format -44423288814935559753575716E0 'g' -> '-44423288814935559753575716' +xfmt9999 format 10543298952043843610941871e146 '-057,' -> '00,000,000,000,000,000,001.0543298952043843610941871E+171' +xfmt10000 format -63921337576810415306215094e312 '\xef\x9e\x82>3' -> '-6.3921337576810415306215094E+337' +xfmt10001 format 565e0 '-30,G' -> ' 565' +xfmt10002 format -945e0 '\xee\xb7\xa5>' -> '-945' +xfmt10003 format 583E179 '0,' -> '5.83E+181' +xfmt10004 format -492E44 ',' -> '-4.92E+46' +xfmt10005 format .123456789012345 ',' -> '0.123456789012345' +xfmt10006 format -.1234 '\xeb\x9e\x92< ,%' -> '-12.34%' +xfmt10007 format 1276480509663603621233964644877224654929242E0 '' -> '1276480509663603621233964644877224654929242' +xfmt10008 format -1365823371495503530782270696767242175332934e0 '+031n' -> '-1365823371495503530782270696767242175332934' +xfmt10009 format 1291387674787074739874083166104017619769102e381 '\xeb\x85\x8b^-91,F' -> '1,291,387,674,787,074,739,874,083,166,104,017,619,769,102,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt10010 format -3042053207290956546032578882389780952037790e79 '-076,f' -> '-30,420,532,072,909,565,460,325,788,823,897,809,520,377,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt10011 format 730197271086273343483354470387877e0 '+0,' -> '+730,197,271,086,273,343,483,354,470,387,877' +xfmt10012 format -842021118252947271319546822708341e0 '\xec\xa6\xad>+10,.10' -> '-8.420211183E+32' +xfmt10013 format 151325881130549493048345777192074e346 '' -> '1.51325881130549493048345777192074E+378' +xfmt10014 format -492027619727636463006109240885732E257 '043,G' -> '-0,004.92027619727636463006109240885732E+289' +xfmt10015 format 88625515756317806553479860e0 '\xef\x81\x86>' -> '88625515756317806553479860' +xfmt10016 format -30679139708411514831719749E0 '' -> '-30679139708411514831719749' +xfmt10017 format 56976005227902455337606470E243 '+,' -> '+5.6976005227902455337606470E+268' +xfmt10018 format -93939283441796655251739425E195 '\xea\x8b\xbb>-81,.61g' -> '\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb\xea\x8b\xbb-9.3939283441796655251739425e+220' +xfmt10019 format 54298781763E0 '\xe7\x9d\xb6=' -> '54298781763' +xfmt10020 format -58355867085E0 '\xec\x98\xa6=,' -> '-58,355,867,085' +xfmt10021 format 64238289867E253 '\xef\x8b\xbc= ,.21' -> ' 6.4238289867E+263' +xfmt10022 format -10036785794E346 '\xef\x85\x84=,.26' -> '-1.0036785794E+356' +xfmt10023 format 59910057e0 '71' -> ' 59910057' +xfmt10024 format -70238449e0 '' -> '-70238449' +xfmt10025 format 39174007e119 '' -> '3.9174007E+126' +xfmt10026 format -71940666e328 '\xe9\x95\x8b<' -> '-7.1940666E+335' +xfmt10027 format 584413522304647756838555047E0 '\xe8\x97\x8c=-22,.22E' -> '5.8441352230464775683856E+26' +xfmt10028 format -910123113847296743910223234e0 ' 63,.20' -> ' -9.1012311384729674391E+26' +xfmt10029 format 710991690639048146639542385e260 '\xe7\x9c\x91<-,%' -> '7,109,916,906,390,481,466,395,423,850,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt10030 format -405897475549793576114493426e133 '\xe2\x8b\xa9<-66,.52' -> '-4.05897475549793576114493426E+159\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9\xe2\x8b\xa9' +xfmt10031 format 19583557832572577248965023027512507469150941e0 '\xea\x95\x89^ .81g' -> ' 19583557832572577248965023027512507469150941' +xfmt10032 format -27650009073334706018737657474562425287258101E0 '-2' -> '-27650009073334706018737657474562425287258101' +xfmt10033 format 51312615747885230388819368149181788554067223e325 '0.39G' -> '5.13126157478852303888193681491817885541E+368' +xfmt10034 format -16561257511594681012083556779610801297707271e65 '023,' -> '-1.6561257511594681012083556779610801297707271E+108' +xfmt10035 format 954494621e0 '-,f' -> '954,494,621' +xfmt10036 format -245780820e0 ',' -> '-245,780,820' +xfmt10037 format 477874485E99 '\xed\x8c\xa1^-25,.17F' -> '477,874,485,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000' +xfmt10038 format -987389991E34 '' -> '-9.87389991E+42' +xfmt10039 format 517207906496724184E0 '\xea\x9d\xb5<,.83f' -> '517,207,906,496,724,184.00000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10040 format -782354368401169214E0 '\xe0\xb2\xad>+' -> '-782354368401169214' +xfmt10041 format 950781481654166834e370 '+0' -> '+9.50781481654166834E+387' +xfmt10042 format -480073813359334503e189 '\xe9\x92\xb7^+67,.15f' -> '-480,073,813,359,334,503,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000' +xfmt10043 format 930751831855667424767878777925029764e0 '0.49F' -> '930751831855667424767878777925029764.0000000000000000000000000000000000000000000000000' +xfmt10044 format -598561818688702832896870599257701010E0 '0,f' -> '-598,561,818,688,702,832,896,870,599,257,701,010' +xfmt10045 format 958493336340287266148961168590967748e378 '81' -> ' 9.58493336340287266148961168590967748E+413' +xfmt10046 format -986198640348061719337679323411522860e145 '.34' -> '-9.861986403480617193376793234115229E+180' +xfmt10047 format 6699217182220895455361384609161e0 '\xed\x90\xa9>-88%' -> '\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9\xed\x90\xa9669921718222089545536138460916100%' +xfmt10048 format -4301670412097872435216098850683e0 ',.24' -> '-4.30167041209787243521610E+30' +xfmt10049 format 5455471374120094647671042739688e6 '\xe7\x9c\x9b> 64,.97e' -> ' 5.4554713741200946476710427396880000000000000000000000000000000000000000000000000000000000000000000e+36' +xfmt10050 format -3338024827628832215007881273682e155 '-' -> '-3.338024827628832215007881273682E+185' +xfmt10051 format 6705946501539639304785147345e0 '096' -> '000000000000000000000000000000000000000000000000000000000000000000006705946501539639304785147345' +xfmt10052 format -7022471548816523438750924427e0 '\xe9\xad\xa8^-13e' -> '-7.022471548816523438750924427e+27' +xfmt10053 format 4078384237804570235973820220E324 ' ,F' -> ' 4,078,384,237,804,570,235,973,820,220,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt10054 format -4797047053001032050525439948e43 '33,' -> '-4.797047053001032050525439948E+70' +xfmt10055 format 483E0 '\xec\x95\x8f=-74,.80F' -> '483.00000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10056 format -522E0 '58' -> ' -522' +xfmt10057 format 227E222 ' 0,' -> ' 2.27E+224' +xfmt10058 format -525e53 '\xef\xa0\xa0<50.40E' -> '-5.2500000000000000000000000000000000000000E+55\xef\xa0\xa0\xef\xa0\xa0\xef\xa0\xa0' +xfmt10059 format 26306510928849224020E0 '+0F' -> '+26306510928849224020' +xfmt10060 format -36679568118993071985e0 '\xe6\xa5\xb6=51,.15F' -> '-\xe6\xa5\xb6\xe6\xa5\xb6\xe6\xa5\xb6\xe6\xa5\xb6\xe6\xa5\xb6\xe6\xa5\xb6\xe6\xa5\xb6\xe6\xa5\xb636,679,568,118,993,071,985.000000000000000' +xfmt10061 format 78002012963401317044e285 '\xeb\x94\x86> 33,.60G' -> '\xeb\x94\x86\xeb\x94\x86\xeb\x94\x86\xeb\x94\x86\xeb\x94\x86\xeb\x94\x86 7.8002012963401317044E+304' +xfmt10062 format -36626307115501172133E227 '\xeb\xad\xa9< ' -> '-3.6626307115501172133E+246' +xfmt10063 format 58529280653611641090164523230099048836891e0 '\xed\x9a\xa1^.94' -> '58529280653611641090164523230099048836891' +xfmt10064 format -72012687543652793795516059704232912297900e0 '45' -> ' -72012687543652793795516059704232912297900' +xfmt10065 format 10491441992005971574378981090100102253635e291 '\xec\xb1\xb3=+75,.46' -> '+\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb3\xec\xb1\xb31.0491441992005971574378981090100102253635E+331' +xfmt10066 format -20786080870463551041220394745260463049357e18 '-' -> '-2.0786080870463551041220394745260463049357E+58' +xfmt10067 format 416760638226722379187214760333e0 '\xeb\x91\xa7<+,.39F' -> '+416,760,638,226,722,379,187,214,760,333.000000000000000000000000000000000000000' +xfmt10068 format -348092436749170157972007594145E0 '' -> '-348092436749170157972007594145' +xfmt10069 format 283921053742451305606375555760e312 '\xe6\xb8\xab^,.32G' -> '2.83921053742451305606375555760E+341' +xfmt10070 format -864981625235401082379122651383E366 '-e' -> '-8.64981625235401082379122651383e+395' +xfmt10071 format 15490176300958E0 '\xea\xa1\x8f<-59,.12f' -> '15,490,176,300,958.000000000000\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f\xea\xa1\x8f' +xfmt10072 format -96776879139315e0 '028.72F' -> '-96776879139315.000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10073 format 35614297549453e16 '' -> '3.5614297549453E+29' +xfmt10074 format -96727948242309E22 '\xe8\xbf\xb0=1g' -> '-9.6727948242309e+35' +xfmt10075 format 4994076E0 '\xe0\xb7\x98>+,.90g' -> '+4,994,076' +xfmt10076 format -3055492e0 '-04,.79g' -> '-3,055,492' +xfmt10077 format 7052619E313 '\xef\x95\x91=-,.82F' -> '70,526,190,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10078 format -1497155e208 '\xe6\x89\xb1^-30,.23F' -> '-14,971,550,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000' +xfmt10079 format 4276188926262806e0 '90' -> ' 4276188926262806' +xfmt10080 format -6214858491138266E0 '\xe5\x87\x9e=46,.90e' -> '-6.214858491138266000000000000000000000000000000000000000000000000000000000000000000000000000e+15' +xfmt10081 format 1370334799952208e382 '\xeb\x82\x82^90' -> '\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x821.370334799952208E+397\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82\xeb\x82\x82' +xfmt10082 format -8241502033109044E316 '' -> '-8.241502033109044E+331' +xfmt10083 format 40129826989882559E0 '\xe6\x94\xa8^+72,.73f' -> '+40,129,826,989,882,559.0000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10084 format -62551767884363153e0 '' -> '-62551767884363153' +xfmt10085 format 61260222958368643e182 '-032,.90f' -> '6,126,022,295,836,864,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10086 format -89480938222175023E22 '' -> '-8.9480938222175023E+38' +xfmt10087 format 8502391072968981049044114617172512E0 '\xec\x9d\x9b=53,' -> '\xec\x9d\x9b\xec\x9d\x9b\xec\x9d\x9b\xec\x9d\x9b\xec\x9d\x9b\xec\x9d\x9b\xec\x9d\x9b\xec\x9d\x9b8,502,391,072,968,981,049,044,114,617,172,512' +xfmt10088 format -3013109365757499092213274355842436e0 ',' -> '-3,013,109,365,757,499,092,213,274,355,842,436' +xfmt10089 format 4648072535590317661218269292864530e46 '\xe6\xad\x8b>+98%' -> '\xe6\xad\x8b\xe6\xad\x8b\xe6\xad\x8b\xe6\xad\x8b\xe6\xad\x8b\xe6\xad\x8b\xe6\xad\x8b\xe6\xad\x8b\xe6\xad\x8b\xe6\xad\x8b\xe6\xad\x8b\xe6\xad\x8b\xe6\xad\x8b\xe6\xad\x8b+4648072535590317661218269292864530000000000000000000000000000000000000000000000000%' +xfmt10090 format -7304606161971948678241630523385443E199 '.13' -> '-7.304606161972E+232' +xfmt10091 format 1085461132687655795618533067370767152855E0 '\xe4\x9b\x88^,' -> '1,085,461,132,687,655,795,618,533,067,370,767,152,855' +xfmt10092 format -3811205901522995497200374939565182546466e0 '' -> '-3811205901522995497200374939565182546466' +xfmt10093 format 7362307494221415555022452660018821052703e157 '0.64' -> '7.362307494221415555022452660018821052703E+196' +xfmt10094 format -9028584278611458695464457666227983112187e376 '\xe8\x8f\xa0^-31,.12e' -> '\xe8\x8f\xa0\xe8\x8f\xa0\xe8\x8f\xa0\xe8\x8f\xa0\xe8\x8f\xa0-9.028584278611e+415\xe8\x8f\xa0\xe8\x8f\xa0\xe8\x8f\xa0\xe8\x8f\xa0\xe8\x8f\xa0\xe8\x8f\xa0' +xfmt10095 format 20498311011930896927959764550287E0 '' -> '20498311011930896927959764550287' +xfmt10096 format -45786350956467913864974587444627E0 '\xe7\xa2\x8a=+98,.53f' -> '-\xe7\xa2\x8a45,786,350,956,467,913,864,974,587,444,627.00000000000000000000000000000000000000000000000000000' +xfmt10097 format 88586025296775171368907882935829E106 '' -> '8.8586025296775171368907882935829E+137' +xfmt10098 format -57309328381965766600397609926417e240 '\xef\x9f\x83= 89,.18F' -> '-57,309,328,381,965,766,600,397,609,926,417,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000' +xfmt10099 format 83582597805812863266315317744843235275e0 ' 024,.62G' -> ' 83,582,597,805,812,863,266,315,317,744,843,235,275' +xfmt10100 format -96565130417835131721019014124678374892e0 '0,' -> '-96,565,130,417,835,131,721,019,014,124,678,374,892' +xfmt10101 format 98634041311181110768231365218641884582E321 '\xe6\x94\x84>' -> '9.8634041311181110768231365218641884582E+358' +xfmt10102 format -51623928554022396885779918409946504798e151 '\xea\x9c\xaf^73,F' -> '-516,239,285,540,223,968,857,799,184,099,465,047,980,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt10103 format 8890736201016874242800e0 '' -> '8890736201016874242800' +xfmt10104 format -7636803426803707274404E0 '\xee\xb7\xa9^-10,.95E' -> '-7.63680342680370727440400000000000000000000000000000000000000000000000000000000000000000000000000E+21' +xfmt10105 format 1102603269749089825444e129 '\xe4\x95\xab=-55,.19f' -> '1,102,603,269,749,089,825,444,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000' +xfmt10106 format -8390681845807517524649e337 ',' -> '-8.390681845807517524649E+358' +xfmt10107 format 3044652847564348337863229640963693105E0 '\xe2\x84\x84<78,.5f' -> '3,044,652,847,564,348,337,863,229,640,963,693,105.00000\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84\xe2\x84\x84' +xfmt10108 format -2762704761563408677856933641731511413e0 '\xe2\xb0\xb1>-38,.56f' -> '-2,762,704,761,563,408,677,856,933,641,731,511,413.00000000000000000000000000000000000000000000000000000000' +xfmt10109 format 1210858265430590422972516614039066034E297 '02' -> '1.210858265430590422972516614039066034E+333' +xfmt10110 format -1015039162071912445536524395445983616e63 '93F' -> '-1015039162071912445536524395445983616000000000000000000000000000000000000000000000000000000000000000' +xfmt10111 format 42699646191986221726889e0 '\xe9\x8a\x8b>91.6g' -> '\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b\xe9\x8a\x8b4.26996e+22' +xfmt10112 format -67732233011038831783874e0 '-67' -> ' -67732233011038831783874' +xfmt10113 format 93917447509155743851771E356 '-075,.60G' -> '000,000,000,000,000,000,000,000,000,000,000,009.3917447509155743851771E+378' +xfmt10114 format -31869255074883451473047E195 '-030' -> '-3.1869255074883451473047E+217' +xfmt10115 format 5955295698629e0 ' ' -> ' 5955295698629' +xfmt10116 format -6244644647454e0 ',' -> '-6,244,644,647,454' +xfmt10117 format 9345352835783e59 '\xeb\x8f\x95<29n' -> '9.345352835783e+71\xeb\x8f\x95\xeb\x8f\x95\xeb\x8f\x95\xeb\x8f\x95\xeb\x8f\x95\xeb\x8f\x95\xeb\x8f\x95\xeb\x8f\x95\xeb\x8f\x95\xeb\x8f\x95\xeb\x8f\x95' +xfmt10118 format -3332481578722E379 '\xe2\xbe\xae '-3.332481578722E+391' +xfmt10119 format 638143428832483337614904e0 '066,.15E' -> '00,000,000,000,000,000,000,000,000,000,000,006.381434288324833E+23' +xfmt10120 format -356295631631871552054639e0 '\xe8\xa2\xb3>' -> '-356295631631871552054639' +xfmt10121 format 545137595658942236154637E137 '+0' -> '+5.45137595658942236154637E+160' +xfmt10122 format -397681017601369601522246E125 '-.92%' -> '-3976810176013696015222460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt10123 format 9881263136962785706497891e0 '\xef\xb4\x8f> 20,.49f' -> ' 9,881,263,136,962,785,706,497,891.0000000000000000000000000000000000000000000000000' +xfmt10124 format -5112778520101705806201110E0 '\xec\x83\x97>' -> '-5112778520101705806201110' +xfmt10125 format 5880068258172217007682212e136 '' -> '5.880068258172217007682212E+160' +xfmt10126 format -8815972332681264945917316E100 '' -> '-8.815972332681264945917316E+124' +xfmt10127 format 123456789012345678901.123456 '-069,.17' -> '0,000,000,000,000,000,000,000,000,000,000,000,001.2345678901234568E+20' +xfmt10128 format -12.123 '\xe3\xbc\xb3^ 13,.90%' -> '-1,212.300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt10129 format 31E0 'G' -> '31' +xfmt10130 format -23e0 '\xea\x99\x94^-,.34%' -> '-2,300.0000000000000000000000000000000000%' +xfmt10131 format 55e209 '' -> '5.5E+210' +xfmt10132 format -71e137 '\xe2\xba\x85>+68,f' -> '-7,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt10133 format 5610620564604220680851740662368187E0 '\xe0\xbc\xba> 34,.79g' -> ' 5,610,620,564,604,220,680,851,740,662,368,187' +xfmt10134 format -9646484379161859117029698297496271E0 '73,e' -> ' -9.646484379161859117029698297496271e+33' +xfmt10135 format 2994680013909044933017764436697218e350 '\xe6\x86\x86>+.54' -> '+2.994680013909044933017764436697218E+383' +xfmt10136 format -6239687340071842359389507527274817e226 '0,%' -> '-6,239,687,340,071,842,359,389,507,527,274,817,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt10137 format 47552e0 '\xe2\xa3\xb8^.72' -> '47552' +xfmt10138 format -52777E0 ' 091.63n' -> '-000000000000000000000000000000000000000000000000000000000000000000000000000000000000052777' +xfmt10139 format 80666e68 '' -> '8.0666E+72' +xfmt10140 format -68798E354 ' 28,%' -> '-6,879,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt10141 format 3653992673426954518438E0 '\xe7\x8c\x86^ ,' -> ' 3,653,992,673,426,954,518,438' +xfmt10142 format -4584608544603810635609E0 '0,.54E' -> '-4.584608544603810635609000000000000000000000000000000000E+21' +xfmt10143 format 1775681880290057777693E185 '24,E' -> '1.775681880290057777693E+206' +xfmt10144 format -1694235320714768137760E154 '\xe1\x80\xb2^6,E' -> '-1.694235320714768137760E+175' +xfmt10145 format 705616E0 '' -> '705616' +xfmt10146 format -695491E0 '' -> '-695491' +xfmt10147 format 928112E194 '\xe2\xbd\x9f< 36,.92e' -> ' 9.28112000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+199' +xfmt10148 format -134397E238 '' -> '-1.34397E+243' +xfmt10149 format 142910682129647732836063379E0 '98' -> ' 142910682129647732836063379' +xfmt10150 format -809897838912582971525555888E0 '097,g' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,809,897,838,912,582,971,525,555,888' +xfmt10151 format 357109662439215877399016862E299 '+.49' -> '+3.57109662439215877399016862E+325' +xfmt10152 format -770265475703718540256776349E27 ' 0%' -> '-77026547570371854025677634900000000000000000000000000000%' +xfmt10153 format 116934511609228060833518761149044375E0 '0' -> '116934511609228060833518761149044375' +xfmt10154 format -326909972345126720297676918311300065e0 '\xe7\xaf\xba>59,.99G' -> '\xe7\xaf\xba\xe7\xaf\xba\xe7\xaf\xba\xe7\xaf\xba\xe7\xaf\xba\xe7\xaf\xba\xe7\xaf\xba\xe7\xaf\xba\xe7\xaf\xba\xe7\xaf\xba\xe7\xaf\xba-326,909,972,345,126,720,297,676,918,311,300,065' +xfmt10155 format 976445540925821505806110392527713961e368 ' ,.37' -> ' 9.76445540925821505806110392527713961E+403' +xfmt10156 format -253772690640866839547959905079655143e206 '\xe0\xb2\xbf<97,.99' -> '-2.53772690640866839547959905079655143E+241\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf\xe0\xb2\xbf' +xfmt10157 format 1344044189094462276022781935E0 '\xe9\xaa\xa6>,.15' -> '1.34404418909446E+27' +xfmt10158 format -7533793358822629045818669275e0 '\xe2\xb8\xa3<+45.60' -> '-7533793358822629045818669275\xe2\xb8\xa3\xe2\xb8\xa3\xe2\xb8\xa3\xe2\xb8\xa3\xe2\xb8\xa3\xe2\xb8\xa3\xe2\xb8\xa3\xe2\xb8\xa3\xe2\xb8\xa3\xe2\xb8\xa3\xe2\xb8\xa3\xe2\xb8\xa3\xe2\xb8\xa3\xe2\xb8\xa3\xe2\xb8\xa3\xe2\xb8\xa3' +xfmt10159 format 6249540693697063861032553107e150 '.14' -> '6.2495406936971E+177' +xfmt10160 format -9708150226039756607370915646E144 '\xef\x90\xb3< 87,.78' -> '-9.708150226039756607370915646E+171\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3\xef\x90\xb3' +xfmt10161 format 17131821523539E0 '0.13' -> '1.713182152354E+13' +xfmt10162 format -74569887187668E0 ' ,F' -> '-74,569,887,187,668' +xfmt10163 format 79200488810414e187 '\xee\x8c\xb2> ,g' -> ' 7.9200488810414e+200' +xfmt10164 format -76220411762939e371 ',.34' -> '-7.6220411762939E+384' +xfmt10165 format 9855251E0 '+1,.3G' -> '+9.86E+6' +xfmt10166 format -3636008e0 '' -> '-3636008' +xfmt10167 format 2610438E300 '\xeb\xb8\xaf^ 15,.7e' -> ' 2.6104380e+306' +xfmt10168 format -7627786e342 '\xea\x86\x8a=.77G' -> '-7.627786E+348' +xfmt10169 format 659931938068005636147015102267211E0 '\xe5\x96\xbf^ 72' -> '\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf 659931938068005636147015102267211\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf\xe5\x96\xbf' +xfmt10170 format -684768948646333331366602394530809E0 ',E' -> '-6.84768948646333331366602394530809E+32' +xfmt10171 format 250123047955825021040981070747678e9 '\xef\xa8\xac=' -> '2.50123047955825021040981070747678E+41' +xfmt10172 format -913298536877857387716165653231112E309 '\xeb\xb2\x91=62,.74' -> '-\xeb\xb2\x91\xeb\xb2\x91\xeb\xb2\x91\xeb\xb2\x91\xeb\xb2\x91\xeb\xb2\x91\xeb\xb2\x91\xeb\xb2\x91\xeb\xb2\x91\xeb\xb2\x91\xeb\xb2\x91\xeb\xb2\x91\xeb\xb2\x91\xeb\xb2\x91\xeb\xb2\x91\xeb\xb2\x91\xeb\xb2\x91\xeb\xb2\x91\xeb\xb2\x91\xeb\xb2\x91\xeb\xb2\x91\xeb\xb2\x919.13298536877857387716165653231112E+341' +xfmt10173 format 0e0 'F' -> '0' +xfmt10174 format 0E0 '-07,' -> '000,000' +xfmt10175 format 0e192 '77.84' -> ' 0E+192' +xfmt10176 format 0e101 '\xe5\x8a\x85>' -> '0E+101' +xfmt10177 format 84151662e0 '\xe9\xbc\xa8^-,.75F' -> '84,151,662.000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10178 format -80671630E0 ',.68' -> '-80,671,630' +xfmt10179 format 81425609E198 'f' -> '81425609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10180 format -99353188e42 '' -> '-9.9353188E+49' +xfmt10181 format 6968702920020389543861735462275109232838E0 '\xed\x84\xa1=+75,.98f' -> '+6,968,702,920,020,389,543,861,735,462,275,109,232,838.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10182 format -1420969413375209765266781841590261000009e0 '+026.13E' -> '-0000001.4209694133752E+39' +xfmt10183 format 2794755405530445743898485928288864063524E313 '\xe2\xbd\x98^74.18n' -> '\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x982.79475540553044574e+352\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98\xe2\xbd\x98' +xfmt10184 format -5656225218515073882771480032886305793590e379 '\xe3\xbd\xb0<+13.51' -> '-5.656225218515073882771480032886305793590E+418' +xfmt10185 format 63463455194869008E0 '.7' -> '6.346346E+16' +xfmt10186 format -61025085317722235e0 '\xe6\x8a\xab^-,.28G' -> '-61,025,085,317,722,235' +xfmt10187 format 88886308519196395e310 '\xef\xac\xa8=,g' -> '8.8886308519196395e+326' +xfmt10188 format -49964691033322395E169 '.66' -> '-4.9964691033322395E+185' +xfmt10189 format 3901E0 '32' -> ' 3901' +xfmt10190 format -8749e0 '\xed\x9a\xb9= 31,.20f' -> '-\xed\x9a\xb9\xed\x9a\xb9\xed\x9a\xb9\xed\x9a\xb98,749.00000000000000000000' +xfmt10191 format 9847e364 '0' -> '9.847E+367' +xfmt10192 format -6922e340 '' -> '-6.922E+343' +xfmt10193 format 57122232657686722724582817163747957277313454E0 '\xe5\x80\x8d^88,.87e' -> '5.712223265768672272458281716374795727731345400000000000000000000000000000000000000000000e+43' +xfmt10194 format -87107297108731043331727989130417912829682081E0 'n' -> '-87107297108731043331727989130417912829682081' +xfmt10195 format 36324160340125094293696915126627555993350368e326 '' -> '3.6324160340125094293696915126627555993350368E+369' +xfmt10196 format -15552815299050795021234271055725324673860309E158 '90,.83e' -> '-1.55528152990507950212342710557253246738603090000000000000000000000000000000000000000e+201' +xfmt10197 format 42680227837776987206732684543117256153530E0 '\xe7\x99\xbf< 26n' -> ' 42680227837776987206732684543117256153530' +xfmt10198 format -16032250754611944561773222146648169773709e0 '+027E' -> '-1.6032250754611944561773222146648169773709E+40' +xfmt10199 format 53558085158984859389663848666051549518760E229 '\xe5\x93\x89<-82,.9f' -> '535,580,851,589,848,593,896,638,486,660,515,495,187,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000' +xfmt10200 format -85655482590312947650530692538781287873180e321 '\xef\xa4\x80>-54,e' -> '\xef\xa4\x80\xef\xa4\x80\xef\xa4\x80\xef\xa4\x80\xef\xa4\x80\xef\xa4\x80-8.5655482590312947650530692538781287873180e+361' +xfmt10201 format 48755691828708289909897792829E0 '\xe7\x8c\x88^54' -> '\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x8848755691828708289909897792829\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x88\xe7\x8c\x88' +xfmt10202 format -13747556046196182041161973862E0 '-0.39e' -> '-1.374755604619618204116197386200000000000e+28' +xfmt10203 format 68907009153014946757354519234e79 '\xe6\x93\x89>+,g' -> '+6.8907009153014946757354519234e+107' +xfmt10204 format -11276643353557396814270200634e64 '\xe5\x96\xb3= ,.13g' -> '-1.127664335356e+92' +xfmt10205 format 984303947349961E0 '0' -> '984303947349961' +xfmt10206 format -553867758456693E0 ' 0' -> '-553867758456693' +xfmt10207 format 334302285101178E266 '\xea\x93\x9d= 86,.97G' -> ' \xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d\xea\x93\x9d3.34302285101178E+280' +xfmt10208 format -995013904040471E7 '\xef\x90\x9c> 26.45' -> '\xef\x90\x9c\xef\x90\x9c\xef\x90\x9c\xef\x90\x9c\xef\x90\x9c-9.95013904040471E+21' +xfmt10209 format 9937515579938490072322831401331782081e0 '\xea\x90\x83^1' -> '9937515579938490072322831401331782081' +xfmt10210 format -9957858926119255334567761867284890652E0 '' -> '-9957858926119255334567761867284890652' +xfmt10211 format 7327545489866729920465832402029768829e89 '\xe7\xbc\xab>-,.15%' -> '73,275,454,898,667,299,204,658,324,020,297,688,290,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000%' +xfmt10212 format -4783884820554540970717885752640368296E272 '\xed\x8b\x87=+58' -> '-\xed\x8b\x87\xed\x8b\x87\xed\x8b\x87\xed\x8b\x87\xed\x8b\x87\xed\x8b\x87\xed\x8b\x87\xed\x8b\x87\xed\x8b\x87\xed\x8b\x87\xed\x8b\x87\xed\x8b\x87\xed\x8b\x87\xed\x8b\x874.783884820554540970717885752640368296E+308' +xfmt10213 format 267876925962950217e0 '' -> '267876925962950217' +xfmt10214 format -176175148132065665E0 '\xeb\x89\xbe^.2E' -> '-1.76E+17' +xfmt10215 format 737635575334778319e308 '069,.44' -> '00,000,000,000,000,000,000,000,000,000,000,007.37635575334778319E+325' +xfmt10216 format -784517029492394934e190 '\xe1\xa4\x82>-49,.38' -> '\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82\xe1\xa4\x82-7.84517029492394934E+207' +xfmt10217 format 9364667500970270941862541329767669446293427E0 '\xec\xad\xab< 30,.25%' -> ' 936,466,750,097,027,094,186,254,132,976,766,944,629,342,700.0000000000000000000000000%' +xfmt10218 format -6021061432115016236847982343959582142160238E0 '-.85' -> '-6021061432115016236847982343959582142160238' +xfmt10219 format 2812687862932825416564397198369017915699621e78 '\xe6\x9f\xa0=+90,G' -> '+\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa0\xe6\x9f\xa02.812687862932825416564397198369017915699621E+120' +xfmt10220 format -7909114942002203455565433671044685356315303e102 '' -> '-7.909114942002203455565433671044685356315303E+144' +xfmt10221 format 709E0 '7' -> ' 709' +xfmt10222 format -665E0 '\xe1\xa9\xbe^-7,.11f' -> '-665.00000000000' +xfmt10223 format 653E1 '\xe3\xa4\x8a^86' -> '\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a6.53E+3\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a\xe3\xa4\x8a' +xfmt10224 format -729e289 '' -> '-7.29E+291' +xfmt10225 format 13121238561E0 ',.94' -> '13,121,238,561' +xfmt10226 format -94398272248E0 '\xe6\xb8\x9a>+98,.83g' -> '\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a\xe6\xb8\x9a-94,398,272,248' +xfmt10227 format 14313165375e53 '+0,' -> '+1.4313165375E+63' +xfmt10228 format -93742907696E297 '\xe1\xae\xb1< 98' -> '-9.3742907696E+307\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1\xe1\xae\xb1' +xfmt10229 format 7236605520969690021875843399175E0 ' 097,.18%' -> ' 0,000,000,000,000,000,000,000,000,723,660,552,096,969,002,187,584,339,917,500.000000000000000000%' +xfmt10230 format -9548038779440023269950496642214e0 '\xe9\x8d\xb4>+1,.75G' -> '-9,548,038,779,440,023,269,950,496,642,214' +xfmt10231 format 5795854847342818082936556570288e241 '053' -> '00000000000000005.795854847342818082936556570288E+271' +xfmt10232 format -5820475820378030093389478410966e335 '\xe0\xba\x98^e' -> '-5.820475820378030093389478410966e+365' +xfmt10233 format 13212022748103112194302569952799e0 '' -> '13212022748103112194302569952799' +xfmt10234 format -99628584811511533342186714130804e0 '\xe3\x87\xb9^-.35G' -> '-99628584811511533342186714130804' +xfmt10235 format 91160069432924368206841460129611E112 '\xea\xab\x99<-56,.33e' -> '9.116006943292436820684146012961100e+143\xea\xab\x99\xea\xab\x99\xea\xab\x99\xea\xab\x99\xea\xab\x99\xea\xab\x99\xea\xab\x99\xea\xab\x99\xea\xab\x99\xea\xab\x99\xea\xab\x99\xea\xab\x99\xea\xab\x99\xea\xab\x99\xea\xab\x99\xea\xab\x99' +xfmt10236 format -49332996287890550325578377870515e37 '-052,G' -> '-000,000,000,004.9332996287890550325578377870515E+68' +xfmt10237 format 68107553889243083231E0 '' -> '68107553889243083231' +xfmt10238 format -47072709717872745177e0 '+37' -> ' -47072709717872745177' +xfmt10239 format 36948999618160903387e114 '' -> '3.6948999618160903387E+133' +xfmt10240 format -12959804205396671170e217 '\xef\x8b\xa4^75.34n' -> '\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4-1.2959804205396671170e+236\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4\xef\x8b\xa4' +xfmt10241 format 60654523141970787736250613e0 '+' -> '+60654523141970787736250613' +xfmt10242 format -15210187196751812138384172E0 ' 0.76G' -> '-15210187196751812138384172' +xfmt10243 format 95832008540984720102284411e9 '\xe4\xa5\xb6<+17,.91F' -> '+95,832,008,540,984,720,102,284,411,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10244 format -60951418493120288498507276E34 '\xee\xa1\x97=' -> '-6.0951418493120288498507276E+59' +xfmt10245 format 380926138252251559240014991509587858868917e0 '\xe5\xae\x8d=.92G' -> '380926138252251559240014991509587858868917' +xfmt10246 format -370079862384109818009315914906369925786627e0 '\xe1\x91\xad^15,.81' -> '-370,079,862,384,109,818,009,315,914,906,369,925,786,627' +xfmt10247 format 658221625659241484701060834320816610707802e280 '\xef\x94\xbf>' -> '6.58221625659241484701060834320816610707802E+321' +xfmt10248 format -340526628563797878953114401389430799121480E262 ' ' -> '-3.40526628563797878953114401389430799121480E+303' +xfmt10249 format 12.1234567890123456789 '\xef\x96\x8f>-19,.51f' -> '12.123456789012345678900000000000000000000000000000000' +xfmt10250 format -.1234567890 '0,g' -> '-0.1234567890' +xfmt10251 format 97843135786442678334011052e0 '\xec\x96\xb5>-89,' -> '\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb5\xec\x96\xb597,843,135,786,442,678,334,011,052' +xfmt10252 format -17952824909497326858665765E0 '+68,.43g' -> ' -17,952,824,909,497,326,858,665,765' +xfmt10253 format 67673548840929137341048108e360 '' -> '6.7673548840929137341048108E+385' +xfmt10254 format -23611852819612258377074608E335 '\xee\x82\xae>-,' -> '-2.3611852819612258377074608E+360' +xfmt10255 format 5613244e0 '\xe8\xbe\x8f^+25.50G' -> '\xe8\xbe\x8f\xe8\xbe\x8f\xe8\xbe\x8f\xe8\xbe\x8f\xe8\xbe\x8f\xe8\xbe\x8f\xe8\xbe\x8f\xe8\xbe\x8f+5613244\xe8\xbe\x8f\xe8\xbe\x8f\xe8\xbe\x8f\xe8\xbe\x8f\xe8\xbe\x8f\xe8\xbe\x8f\xe8\xbe\x8f\xe8\xbe\x8f\xe8\xbe\x8f' +xfmt10256 format -9171510E0 '\xef\xb9\xae '-9.171510e+6' +xfmt10257 format 1879088E294 '\xe1\xb0\x98>53,.53f' -> '1,879,088,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000' +xfmt10258 format -8205529E179 '\xef\x9b\xbf>73' -> '\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf\xef\x9b\xbf-8.205529E+185' +xfmt10259 format 396279040441152538505571047E0 '.44' -> '396279040441152538505571047' +xfmt10260 format -738922398116689974584156220e0 'n' -> '-738922398116689974584156220' +xfmt10261 format 919781546157997282643255190e114 '\xda\xb6=,.99' -> '9.19781546157997282643255190E+140' +xfmt10262 format -216203268814159343981300795E192 'E' -> '-2.16203268814159343981300795E+218' +xfmt10263 format 6e0 '-37,.74E' -> '6.00000000000000000000000000000000000000000000000000000000000000000000000000E+0' +xfmt10264 format -9e0 '0' -> '-9' +xfmt10265 format 7e275 '' -> '7E+275' +xfmt10266 format -1E383 '\xe7\x82\x91=,.35' -> '-1E+383' +xfmt10267 format 68e0 '050.49f' -> '68.0000000000000000000000000000000000000000000000000' +xfmt10268 format -11E0 '\xe2\x87\xb6>53,.71G' -> '\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6\xe2\x87\xb6-11' +xfmt10269 format 11E142 '\xe8\x95\xb0>' -> '1.1E+143' +xfmt10270 format -11E23 '\xe9\xb0\x9d^25,.22f' -> '-1,100,000,000,000,000,000,000,000.0000000000000000000000' +xfmt10271 format 9482320768518734752905190339125e0 '-0.43F' -> '9482320768518734752905190339125.0000000000000000000000000000000000000000000' +xfmt10272 format -3385088613764778017574114168897e0 '0' -> '-3385088613764778017574114168897' +xfmt10273 format 6539024568587332621351177069501e34 '22E' -> '6.539024568587332621351177069501E+64' +xfmt10274 format -7272042297725649499231996507739e73 '-34f' -> '-72720422977256494992319965077390000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10275 format 1360E0 '' -> '1360' +xfmt10276 format -3271E0 ',.7' -> '-3,271' +xfmt10277 format 7220e305 '\xe0\xb8\x92=+81,%' -> '+72,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt10278 format -7687E138 '' -> '-7.687E+141' +xfmt10279 format 46523298551206032722211951903255358785510309E0 ' 35' -> ' 46523298551206032722211951903255358785510309' +xfmt10280 format -84469208811786387597399912259700751413252055e0 '\xe1\xad\xa3^' -> '-84469208811786387597399912259700751413252055' +xfmt10281 format 79878496909999548728919749069199457088291590e50 '\xe5\xa8\x82^ 63,.64' -> '\xe5\xa8\x82\xe5\xa8\x82\xe5\xa8\x82\xe5\xa8\x82\xe5\xa8\x82\xe5\xa8\x82 7.9878496909999548728919749069199457088291590E+93\xe5\xa8\x82\xe5\xa8\x82\xe5\xa8\x82\xe5\xa8\x82\xe5\xa8\x82\xe5\xa8\x82\xe5\xa8\x82' +xfmt10282 format -98392383547443457345316282357544189469345955E300 '' -> '-9.8392383547443457345316282357544189469345955E+343' +xfmt10283 format 3819146300711866900145e0 '0,E' -> '3.819146300711866900145E+21' +xfmt10284 format -5906330832235584028455e0 ',.79' -> '-5,906,330,832,235,584,028,455' +xfmt10285 format 3469025734121466879286e268 '0,.84' -> '3.469025734121466879286E+289' +xfmt10286 format -4799107297207686545259E312 '\xe3\xb1\xa9^+24,.20e' -> '-4.79910729720768654526e+333' +xfmt10287 format 30682885203677660110156963236458738832E0 '\xef\x8d\xb6= ' -> ' 30682885203677660110156963236458738832' +xfmt10288 format -90630652027701387080023074715272883277E0 '\xef\xb4\xa5= 29,.9g' -> '-\xef\xb4\xa5\xef\xb4\xa5\xef\xb4\xa5\xef\xb4\xa5\xef\xb4\xa5\xef\xb4\xa5\xef\xb4\xa5\xef\xb4\xa5\xef\xb4\xa5\xef\xb4\xa5\xef\xb4\xa5\xef\xb4\xa5\xef\xb4\xa5\xef\xb4\xa59.06306520e+37' +xfmt10289 format 33115899898158780494986458052571433539E203 '\xe8\x92\xad^ 6,.69F' -> ' 3,311,589,989,815,878,049,498,645,805,257,143,353,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10290 format -68287872595645286121756472415727177586e103 '94E' -> ' -6.8287872595645286121756472415727177586E+140' +xfmt10291 format 87020505317416413348429462705e0 '\xe4\xb5\x94<-,.9e' -> '8.702050532e+28' +xfmt10292 format -75694377860725278091448280016e0 '086,' -> '-0,000,000,000,000,000,000,000,000,000,000,000,075,694,377,860,725,278,091,448,280,016' +xfmt10293 format 99227931925485757473148037047E31 '\xe1\x84\xa7> 61,.39e' -> '\xe1\x84\xa7\xe1\x84\xa7\xe1\x84\xa7\xe1\x84\xa7\xe1\x84\xa7\xe1\x84\xa7\xe1\x84\xa7\xe1\x84\xa7\xe1\x84\xa7\xe1\x84\xa7\xe1\x84\xa7\xe1\x84\xa7\xe1\x84\xa7\xe1\x84\xa7\xe1\x84\xa7 9.922793192548575747314803704700000000000e+59' +xfmt10294 format -90108697527929339422863226559e201 '\xe7\xbc\xaf>-54.67G' -> '\xe7\xbc\xaf\xe7\xbc\xaf\xe7\xbc\xaf\xe7\xbc\xaf\xe7\xbc\xaf\xe7\xbc\xaf\xe7\xbc\xaf\xe7\xbc\xaf\xe7\xbc\xaf\xe7\xbc\xaf\xe7\xbc\xaf\xe7\xbc\xaf\xe7\xbc\xaf\xe7\xbc\xaf\xe7\xbc\xaf\xe7\xbc\xaf\xe7\xbc\xaf\xe7\xbc\xaf-9.0108697527929339422863226559E+229' +xfmt10295 format 766954933368368655957580789920459716274743e0 '\xe1\x94\xad=,' -> '766,954,933,368,368,655,957,580,789,920,459,716,274,743' +xfmt10296 format -603742264574897197517653535238798721353652E0 '+,' -> '-603,742,264,574,897,197,517,653,535,238,798,721,353,652' +xfmt10297 format 671385915251839434055100621212303849891339e51 '-,.80' -> '6.71385915251839434055100621212303849891339E+92' +xfmt10298 format -353805361870163475242490617457114785055430E213 '2' -> '-3.53805361870163475242490617457114785055430E+254' +xfmt10299 format 2623329353268271350656024e0 '\xea\x9d\x88^-48,%' -> '\xea\x9d\x88\xea\x9d\x88\xea\x9d\x88\xea\x9d\x88\xea\x9d\x88\xea\x9d\x88262,332,935,326,827,135,065,602,400%\xea\x9d\x88\xea\x9d\x88\xea\x9d\x88\xea\x9d\x88\xea\x9d\x88\xea\x9d\x88' +xfmt10300 format -1520162273110873238052305e0 '\xe5\xb4\x93^-43,.7g' -> '\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93-1.520162e+24\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93\xe5\xb4\x93' +xfmt10301 format 7224958497485191272129793e365 '' -> '7.224958497485191272129793E+389' +xfmt10302 format -3228448667557400194234345e139 '\xef\xa9\x98=+5,.89G' -> '-3.228448667557400194234345E+163' +xfmt10303 format 4752624260163539774421664035605645938381537E0 '\xe1\xa1\x82<-58,f' -> '4,752,624,260,163,539,774,421,664,035,605,645,938,381,537\xe1\xa1\x82' +xfmt10304 format -2212683441583280707024134056620898619194526E0 '\xeb\x9c\x95= 34,g' -> '-2,212,683,441,583,280,707,024,134,056,620,898,619,194,526' +xfmt10305 format 5859687542510537504347164191599735160677002e182 '\xec\xaa\x9b>81,' -> '\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b\xec\xaa\x9b5.859687542510537504347164191599735160677002E+224' +xfmt10306 format -7514981841762488646578684266331617186120017e100 '\xe6\xa2\xb8=-,.28G' -> '-7.514981841762488646578684266E+142' +xfmt10307 format 76639960548681439166800407972497606e0 '\xe5\x8c\xb0>+55,.90g' -> '\xe5\x8c\xb0\xe5\x8c\xb0\xe5\x8c\xb0\xe5\x8c\xb0\xe5\x8c\xb0\xe5\x8c\xb0\xe5\x8c\xb0\xe5\x8c\xb0+76,639,960,548,681,439,166,800,407,972,497,606' +xfmt10308 format -17689730559928539700575139894569062e0 ' 096,.60f' -> '-17,689,730,559,928,539,700,575,139,894,569,062.000000000000000000000000000000000000000000000000000000000000' +xfmt10309 format 60744660350551625594251819910043293E304 '\xe9\xad\x93^52.46e' -> '6.0744660350551625594251819910043293000000000000e+338' +xfmt10310 format -34773161716575162476776082812417153E213 '\xe4\x8a\xac^-.66' -> '-3.4773161716575162476776082812417153E+247' +xfmt10311 format 79820394685477847518721e0 '\xe5\xb2\xbb<-76,.86e' -> '7.98203946854778475187210000000000000000000000000000000000000000000000000000000000000000e+22' +xfmt10312 format -71013095242575740070052e0 '61' -> ' -71013095242575740070052' +xfmt10313 format 52447924961233562164524e372 '\xeb\x94\x85^-26,.59G' -> '5.2447924961233562164524E+394' +xfmt10314 format -18812806209333622928780e167 '\xeb\x84\x8d^+,F' -> '-1,881,280,620,933,362,292,878,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt10315 format 7083109911517575926385300127509737e0 '-' -> '7083109911517575926385300127509737' +xfmt10316 format -7932863299831954200960713973713918e0 ' 06.10' -> '-7.932863300E+33' +xfmt10317 format 8929494446261519217832946440437407e332 '' -> '8.929494446261519217832946440437407E+365' +xfmt10318 format -9542498778767701210186822435388266e67 '' -> '-9.542498778767701210186822435388266E+100' +xfmt10319 format 8367884903E0 '\xe8\x8b\xb8<,F' -> '8,367,884,903' +xfmt10320 format -2757673531e0 '\xed\x95\xa2> 39,F' -> '\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2\xed\x95\xa2-2,757,673,531' +xfmt10321 format 4867170077E278 ' 0.63f' -> ' 486717007700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000' +xfmt10322 format -9686147154E175 '\xe6\x98\xbe=+,.36g' -> '-9.686147154e+184' +xfmt10323 format 33782961130323245187603785389244e0 '81,G' -> ' 33,782,961,130,323,245,187,603,785,389,244' +xfmt10324 format -85809945686476993011955760777342E0 '\xe8\xbd\x94<-22,.23%' -> '-8,580,994,568,647,699,301,195,576,077,734,200.00000000000000000000000%' +xfmt10325 format 11769648871687322111756340469127e192 '\xed\x8d\x97^ 26,.80f' -> ' 11,769,648,871,687,322,111,756,340,469,127,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10326 format -40158781288989192597970002206501E355 '' -> '-4.0158781288989192597970002206501E+386' +xfmt10327 format 99695220315343809e0 '\xe8\xa9\xac>3.35E' -> '9.96952203153438090000000000000000000E+16' +xfmt10328 format -23246214736082636e0 '\xef\xb3\xb7>16,.13g' -> '-2.324621473608e+16' +xfmt10329 format 95796983392471815E271 '073.36n' -> '000000000000000000000000000000000000000000000000009.5796983392471815e+287' +xfmt10330 format -54227725620809652e343 '\xe7\x92\x85<+74,.31E' -> '-5.4227725620809652000000000000000E+359\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85\xe7\x92\x85' +xfmt10331 format 157654501750576939612e0 '' -> '157654501750576939612' +xfmt10332 format -672284160300494610830e0 ' ' -> '-672284160300494610830' +xfmt10333 format 108958699499829393437E32 '99,' -> ' 1.08958699499829393437E+52' +xfmt10334 format -371997699789527878297E283 '\xea\xb2\x9d<+,.18G' -> '-3.71997699789527878E+303' +xfmt10335 format 998731053638627469245897771520572613372E0 ' 0,e' -> ' 9.98731053638627469245897771520572613372e+38' +xfmt10336 format -671401045885837766389123301632052617393e0 '90' -> ' -671401045885837766389123301632052617393' +xfmt10337 format 210881227034922440107690836662106364196E182 '\xe0\xac\x9d=E' -> '2.10881227034922440107690836662106364196E+220' +xfmt10338 format -211713351826870969594522860432042383744e10 '' -> '-2.11713351826870969594522860432042383744E+48' +xfmt10339 format 455496468687526686953082e0 '\xe6\x92\x9f>-,.26' -> '455,496,468,687,526,686,953,082' +xfmt10340 format -974625176452683993235962E0 '-0' -> '-974625176452683993235962' +xfmt10341 format 446531177420762744170273e251 '\xef\x88\xbf>39,.60e' -> '4.465311774207627441702730000000000000000000000000000000000000e+274' +xfmt10342 format -239313743218437585736779E266 '\xe9\x86\x85>+49,%' -> '-2,393,137,432,184,375,857,367,790,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt10343 format 5707437341600788286493367151067815182e0 '.69' -> '5707437341600788286493367151067815182' +xfmt10344 format -4104899624112363446444359064816584316e0 '\xe1\xb6\x8c>-99,%' -> '\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c\xe1\xb6\x8c-410,489,962,411,236,344,644,435,906,481,658,431,600%' +xfmt10345 format 2702447622494227940338736777611658883E328 '.83' -> '2.702447622494227940338736777611658883E+364' +xfmt10346 format -7718599653627412480971863858188874831E222 ' 033,.9f' -> '-7,718,599,653,627,412,480,971,863,858,188,874,831,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000' +xfmt10347 format 262801E0 '.37' -> '262801' +xfmt10348 format -876791e0 '\xe2\xaa\xb5<.19F' -> '-876791.0000000000000000000' +xfmt10349 format 381615e298 '\xe2\xb7\xac>38.37e' -> '3.8161500000000000000000000000000000000e+303' +xfmt10350 format -269922E201 ',G' -> '-2.69922E+206' +xfmt10351 format 98986e0 '\xe8\x8a\x87> .56e' -> ' 9.89860000000000000000000000000000000000000000000000000000e+4' +xfmt10352 format -85999E0 '' -> '-85999' +xfmt10353 format 41099e80 '\xe6\x88\x89< 12,.55f' -> ' 4,109,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000' +xfmt10354 format -30664e288 '\xe7\x97\xba<-90.7%' -> '-3066400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000%' +xfmt10355 format 5421005051708E0 '065.62' -> '00000000000000000000000000000000000000000000000000005421005051708' +xfmt10356 format -8426304508066E0 '0,G' -> '-8,426,304,508,066' +xfmt10357 format 9799701382724e289 ',e' -> '9.799701382724e+301' +xfmt10358 format -7192362268871e304 '041,.63g' -> '-00,000,000,000,000,007.192362268871e+316' +xfmt10359 format 822190448409663625806035323546533856E0 '' -> '822190448409663625806035323546533856' +xfmt10360 format -508557091861340482862859527948794772E0 '-' -> '-508557091861340482862859527948794772' +xfmt10361 format 389290746334137954141131905311274001E307 '\xeb\xb1\x8e=12.40%' -> '389290746334137954141131905311274001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000%' +xfmt10362 format -734440880955030979840463840902141554e180 ' ' -> '-7.34440880955030979840463840902141554E+215' +xfmt10363 format 0E0 '\xe3\x82\x8f=-' -> '0' +xfmt10364 format 0e0 'g' -> '0' +xfmt10365 format 0e133 '\xe2\x93\x87^-11,.9g' -> '\xe2\x93\x87\xe2\x93\x870e+133\xe2\x93\x87\xe2\x93\x87\xe2\x93\x87' +xfmt10366 format 0e118 ',G' -> '0E+118' +xfmt10367 format 14904653569e0 '' -> '14904653569' +xfmt10368 format -44251594438e0 '0' -> '-44251594438' +xfmt10369 format 55751108511E155 '\xe5\x9b\x93=,.30' -> '5.5751108511E+165' +xfmt10370 format -25394725975e39 ' 0.39' -> '-2.5394725975E+49' +xfmt10371 format 1234567890123456.1234567890123456 '+06,.31' -> '+1,234,567,890,123,456.123456789012346' +xfmt10372 format -1234567890.123456 ' 089,.4' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,001.235E+9' +xfmt10373 format 1274993056583e0 '.8' -> '1.2749931E+12' +xfmt10374 format -1957881443048E0 '' -> '-1957881443048' +xfmt10375 format 2921262626571E268 '-0' -> '2.921262626571E+280' +xfmt10376 format -6172194003790e150 '' -> '-6.172194003790E+162' +xfmt10377 format 7497464466660039062366098509e0 '\xe1\x9d\xa8> ,.25E' -> ' 7.4974644666600390623660985E+27' +xfmt10378 format -4834263598132694486303710759E0 '-0,.45E' -> '-4.834263598132694486303710759000000000000000000E+27' +xfmt10379 format 6796008800423347138464796495e12 '+39,' -> ' +6.796008800423347138464796495E+39' +xfmt10380 format -7162181979615446475083871549E326 '+' -> '-7.162181979615446475083871549E+353' +xfmt10381 format 475814846195e0 '+0,.53' -> '+475,814,846,195' +xfmt10382 format -915276463152e0 '\xe0\xbe\x91^69,g' -> '\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91-915,276,463,152\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91\xe0\xbe\x91' +xfmt10383 format 479978175958E375 '' -> '4.79978175958E+386' +xfmt10384 format -313481371450E42 '\xe7\xa1\x9f=83,F' -> '-\xe7\xa1\x9f\xe7\xa1\x9f\xe7\xa1\x9f\xe7\xa1\x9f\xe7\xa1\x9f\xe7\xa1\x9f\xe7\xa1\x9f\xe7\xa1\x9f\xe7\xa1\x9f\xe7\xa1\x9f\xe7\xa1\x9f313,481,371,450,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt10385 format 758342130482025877e0 '\xea\x99\x87^81n' -> '\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87758342130482025877\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87\xea\x99\x87' +xfmt10386 format -453822881905857117E0 '\xe9\xbc\xb0^+20,E' -> '-4.53822881905857117E+17' +xfmt10387 format 690891618354668641E156 '+48.99F' -> '+690891618354668641000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10388 format -783496487387154814e33 '+046.71' -> '-00000000000000000000007.83496487387154814E+50' +xfmt10389 format 33306040906927128203300200506669e0 '+5,.59g' -> '+33,306,040,906,927,128,203,300,200,506,669' +xfmt10390 format -10449405347937873388829485532164E0 ',G' -> '-10,449,405,347,937,873,388,829,485,532,164' +xfmt10391 format 55896468577272359667027004746397E57 '\xed\x81\xb6^+.68n' -> '+5.5896468577272359667027004746397e+88' +xfmt10392 format -98485971623790936364786244456588e58 '\xee\x96\xbc<-' -> '-9.8485971623790936364786244456588E+89' +xfmt10393 format 649381970365867704377E0 '0,' -> '649,381,970,365,867,704,377' +xfmt10394 format -451451403015441085751E0 '54' -> ' -451451403015441085751' +xfmt10395 format 240367286491624594064e269 '\xef\x84\xac>-,f' -> '24,036,728,649,162,459,406,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt10396 format -820205723003489866635e32 '\xe7\xb0\x89=17.58F' -> '-82020572300348986663500000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000' +xfmt10397 format 9339172584064660833010767368815784376929975E0 '\xe6\xab\x91=E' -> '9.339172584064660833010767368815784376929975E+42' +xfmt10398 format -1165909686815477372832448762226584324998315E0 '\xef\x95\xa3=-24,.97E' -> '-1.1659096868154773728324487622265843249983150000000000000000000000000000000000000000000000000000000E+42' +xfmt10399 format 1282922501723848352843563688042106300439586e274 '\xe8\xa5\xa2>.52' -> '1.282922501723848352843563688042106300439586E+316' +xfmt10400 format -5731154096612521585182034514960405869459517e46 '047,' -> '-5.731154096612521585182034514960405869459517E+88' +xfmt10401 format 103784987e0 '\xeb\x8a\xb6<+48,.38G' -> '+103,784,987\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6\xeb\x8a\xb6' +xfmt10402 format -787308868e0 '\xee\xae\xa4> .13' -> '-787308868' +xfmt10403 format 192943648E309 '' -> '1.92943648E+317' +xfmt10404 format -467553598e11 '' -> '-4.67553598E+19' +xfmt10405 format 37925E0 '\xef\x9a\x81=-10,.79f' -> '37,925.0000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10406 format -74794E0 '\xef\x80\x88= 73,.86' -> '-\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x88\xef\x80\x8874,794' +xfmt10407 format 15005e122 '-051%' -> '150050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt10408 format -62004E354 '0.34' -> '-6.2004E+358' +xfmt10409 format 14570670325965287085778E0 '' -> '14570670325965287085778' +xfmt10410 format -39270484136345947202669E0 '\xea\x9f\xb9= 95,.38f' -> '-\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb9\xea\x9f\xb939,270,484,136,345,947,202,669.00000000000000000000000000000000000000' +xfmt10411 format 75525291808870179742887E353 '\xee\xb1\x85>+91,.58g' -> '\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85\xee\xb1\x85+7.5525291808870179742887e+375' +xfmt10412 format -82475870022833983083116E153 '' -> '-8.2475870022833983083116E+175' +xfmt10413 format 8749564031206161273625417522650253039319E0 '' -> '8749564031206161273625417522650253039319' +xfmt10414 format -7547598607914282392846227425410341846373e0 ',' -> '-7,547,598,607,914,282,392,846,227,425,410,341,846,373' +xfmt10415 format 7736936800030600660375066685187220282146E192 '\xe4\xa6\xa6=+53%' -> '+773693680003060066037506668518722028214600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt10416 format -8235672750801152201114838989787951687024e343 '0G' -> '-8.235672750801152201114838989787951687024E+382' +xfmt10417 format 445087564703591E0 '+G' -> '+445087564703591' +xfmt10418 format -508135179195891e0 '\xe0\xbf\xaa=10,' -> '-508,135,179,195,891' +xfmt10419 format 915062303749440E156 '' -> '9.15062303749440E+170' +xfmt10420 format -760070211260096E0 '\xe9\x98\xa9^+19.13n' -> '-7.600702112601e+14' +xfmt10421 format 6370509020133114136535328230135007511e0 '-76,.12F' -> ' 6,370,509,020,133,114,136,535,328,230,135,007,511.000000000000' +xfmt10422 format -3641774725988808109141232044231114876e0 '\xe8\xb9\x8d> .67n' -> '-3641774725988808109141232044231114876' +xfmt10423 format 3089139573559440184669903230776742832E347 '37' -> '3.089139573559440184669903230776742832E+383' +xfmt10424 format -8265891372014724482330403256819556944E296 '\xe8\x90\x8e<-48,.77f' -> '-826,589,137,201,472,448,233,040,325,681,955,694,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10425 format 42564128062548855e0 '\xef\xb8\xb6=43,.33e' -> '\xef\xb8\xb6\xef\xb8\xb6\xef\xb8\xb6\xef\xb8\xb64.256412806254885500000000000000000e+16' +xfmt10426 format -56651745035814163E0 '\xd8\x8b^+47,.3f' -> '\xd8\x8b\xd8\x8b\xd8\x8b\xd8\x8b\xd8\x8b\xd8\x8b\xd8\x8b\xd8\x8b\xd8\x8b\xd8\x8b-56,651,745,035,814,163.000\xd8\x8b\xd8\x8b\xd8\x8b\xd8\x8b\xd8\x8b\xd8\x8b\xd8\x8b\xd8\x8b\xd8\x8b\xd8\x8b' +xfmt10427 format 20825873549014784e349 '0' -> '2.0825873549014784E+365' +xfmt10428 format -87057090586419723e108 '\xed\x88\x8b^ 74,.49E' -> '\xed\x88\x8b\xed\x88\x8b\xed\x88\x8b\xed\x88\x8b\xed\x88\x8b\xed\x88\x8b\xed\x88\x8b\xed\x88\x8b-8.7057090586419723000000000000000000000000000000000E+124\xed\x88\x8b\xed\x88\x8b\xed\x88\x8b\xed\x88\x8b\xed\x88\x8b\xed\x88\x8b\xed\x88\x8b\xed\x88\x8b\xed\x88\x8b' +xfmt10429 format 2115E0 '\xea\x9c\x83<,' -> '2,115' +xfmt10430 format -3625e0 '' -> '-3625' +xfmt10431 format 6183E327 '\xed\x95\x99<-87,e' -> '6.183e+330\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99\xed\x95\x99' +xfmt10432 format -9637E206 '' -> '-9.637E+209' +xfmt10433 format 101385E0 '\xeb\xa7\x9b^ ,.88e' -> ' 1.0138500000000000000000000000000000000000000000000000000000000000000000000000000000000000e+5' +xfmt10434 format -917384E0 '\xe8\x8d\x83= 56,.71G' -> '-\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83\xe8\x8d\x83917,384' +xfmt10435 format 740161E276 '\xe3\x90\xaa=3,.25g' -> '7.40161e+281' +xfmt10436 format -198707E250 '\xd9\xac> 19,' -> '\xd9\xac\xd9\xac\xd9\xac\xd9\xac\xd9\xac\xd9\xac-1.98707E+255' +xfmt10437 format 9235918248292245761717484964565E0 '\xed\x85\xa8>+91,.74e' -> '\xed\x85\xa8\xed\x85\xa8\xed\x85\xa8\xed\x85\xa8\xed\x85\xa8\xed\x85\xa8\xed\x85\xa8\xed\x85\xa8\xed\x85\xa8\xed\x85\xa8+9.23591824829224576171748496456500000000000000000000000000000000000000000000e+30' +xfmt10438 format -9954973339213220728384393368399e0 '' -> '-9954973339213220728384393368399' +xfmt10439 format 9727910888431160964236478182718E308 ',.46' -> '9.727910888431160964236478182718E+338' +xfmt10440 format -2040639418331634022782432711011e252 '03,.60E' -> '-2.040639418331634022782432711011000000000000000000000000000000E+282' +xfmt10441 format 73142794185443004059304925362159022301628100E0 '\xe5\x83\xb8^26,.93G' -> '73,142,794,185,443,004,059,304,925,362,159,022,301,628,100' +xfmt10442 format -20931155324818822093807089070839749266334347E0 '\xe3\x97\x91>64,.57' -> '\xe3\x97\x91\xe3\x97\x91\xe3\x97\x91\xe3\x97\x91\xe3\x97\x91-20,931,155,324,818,822,093,807,089,070,839,749,266,334,347' +xfmt10443 format 15695948936815957205440735692640504326346409E241 '' -> '1.5695948936815957205440735692640504326346409E+284' +xfmt10444 format -70333456943882122856793692033640109381345786e134 '\xe3\xb6\xac=-76,.75f' -> '-7,033,345,694,388,212,285,679,369,203,364,010,938,134,578,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10445 format 631311596004900847343865873576609E0 '\xec\x9d\x83^93,' -> '\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83631,311,596,004,900,847,343,865,873,576,609\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83\xec\x9d\x83' +xfmt10446 format -448615395752213057117336872124480E0 '\xe8\x90\xb0>+23,.37%' -> '-44,861,539,575,221,305,711,733,687,212,448,000.0000000000000000000000000000000000000%' +xfmt10447 format 112170637034659744528516520653123e360 '' -> '1.12170637034659744528516520653123E+392' +xfmt10448 format -114180440994464022701831297459048e286 '\xed\x90\x87^35,.14E' -> '\xed\x90\x87\xed\x90\x87\xed\x90\x87\xed\x90\x87\xed\x90\x87\xed\x90\x87-1.14180440994464E+318\xed\x90\x87\xed\x90\x87\xed\x90\x87\xed\x90\x87\xed\x90\x87\xed\x90\x87\xed\x90\x87' +xfmt10449 format 78437449E0 '+0,.33' -> '+78,437,449' +xfmt10450 format -32657478e0 '' -> '-32657478' +xfmt10451 format 33726911e183 '98' -> ' 3.3726911E+190' +xfmt10452 format -84839013E54 '\xec\xba\x80> 94,.14%' -> '-8,483,901,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000%' +xfmt10453 format 82903755328581E0 '\xec\xb0\xbe<,.61F' -> '82,903,755,328,581.0000000000000000000000000000000000000000000000000000000000000' +xfmt10454 format -76511956755975E0 '' -> '-76511956755975' +xfmt10455 format 42969411693165E149 '-99.32f' -> '4296941169316500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000' +xfmt10456 format -91956146803953e125 '64' -> ' -9.1956146803953E+138' +xfmt10457 format 868053986324425551019413775997973414563e0 '\xee\xb9\xbe^18,.10E' -> '\xee\xb9\xbe8.6805398632E+38\xee\xb9\xbe' +xfmt10458 format -176603245853043342797537695079252702708E0 '073,.28' -> '-0,000,000,000,000,000,000,000,000,000,001.766032458530433427975376951E+38' +xfmt10459 format 983119583032612278066667877865927846757e235 '-061,.20f' -> '9,831,195,830,326,122,780,666,678,778,659,278,467,570,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000' +xfmt10460 format -809981900905318890759805756418878884842e144 ',' -> '-8.09981900905318890759805756418878884842E+182' +xfmt10461 format 32539674927E0 '\xea\x95\x9d^' -> '32539674927' +xfmt10462 format -10325629932e0 ' %' -> '-1032562993200%' +xfmt10463 format 67628468302e133 '\xe8\xb6\xaa= 71,.31G' -> ' \xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa\xe8\xb6\xaa6.7628468302E+143' +xfmt10464 format -16416720564E116 '062,' -> '-0,000,000,000,000,000,000,000,000,000,000,001.6416720564E+126' +xfmt10465 format 95019858064318822785231069153e0 '' -> '95019858064318822785231069153' +xfmt10466 format -75575048931000275253690908509e0 '\xe7\xb7\xaf^ ,.25g' -> '-7.557504893100027525369091e+28' +xfmt10467 format 57499866851941375769741254871E290 '\xea\xb6\x9d>64,.9g' -> '\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d\xea\xb6\x9d5.74998669e+318' +xfmt10468 format -90509294597193965224994697216e53 '-029' -> '-9.0509294597193965224994697216E+81' +xfmt10469 format 679006366884664150137854904843618176235135E0 '\xe2\xb6\x98= ,.44e' -> ' 6.79006366884664150137854904843618176235135000e+41' +xfmt10470 format -919651180539379153810248049535197335556622e0 '' -> '-919651180539379153810248049535197335556622' +xfmt10471 format 637717567187559852601668227632450688718758e324 '\xe4\x81\x92<.75' -> '6.37717567187559852601668227632450688718758E+365' +xfmt10472 format -699895721074029350453591585160076623308411E154 '' -> '-6.99895721074029350453591585160076623308411E+195' +xfmt10473 format 481174362649113569714906E0 '\xe1\x8b\x9e<-' -> '481174362649113569714906' +xfmt10474 format -836189065350528944823939e0 '' -> '-836189065350528944823939' +xfmt10475 format 197395439008473953924384E245 '+F' -> '+19739543900847395392438400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10476 format -653421782987111162816654E252 '\xe7\x8b\x96< ,.45G' -> '-6.53421782987111162816654E+275' +xfmt10477 format 5e0 '\xe2\xa3\xb3^ 74,.47g' -> '\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3 5\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3\xe2\xa3\xb3' +xfmt10478 format -5e0 '066' -> '-00000000000000000000000000000000000000000000000000000000000000005' +xfmt10479 format 5e113 '\xeb\x85\xbc=+50,.37G' -> '+\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc\xeb\x85\xbc5E+113' +xfmt10480 format -5E162 '\xeb\xb1\x90<+22,.76F' -> '-5,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10481 format 664596757727134696781415988E0 '\xeb\xb0\xa7^,.76' -> '664,596,757,727,134,696,781,415,988' +xfmt10482 format -615291899188199214867691904e0 ',' -> '-615,291,899,188,199,214,867,691,904' +xfmt10483 format 247484336714316397747322875E138 '\xea\x8d\xbe>-' -> '2.47484336714316397747322875E+164' +xfmt10484 format -375654200959613177381717906e337 '\xe1\x94\x86>-65,.67f' -> '-3,756,542,009,596,131,773,817,179,060,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000' +xfmt10485 format 0e0 '+89,' -> ' +0' +xfmt10486 format 0e0 ' 0' -> ' 0' +xfmt10487 format 0e217 '0F' -> '0' +xfmt10488 format 0E107 '+012,.50F' -> '+0.00000000000000000000000000000000000000000000000000' +xfmt10489 format 6140411749134041327e0 '\xec\xb9\x9b= ,.51%' -> ' 614,041,174,913,404,132,700.000000000000000000000000000000000000000000000000000%' +xfmt10490 format -8104738578594438988E0 '\xea\x83\x88> 91,.62E' -> '\xea\x83\x88\xea\x83\x88\xea\x83\x88\xea\x83\x88\xea\x83\x88\xea\x83\x88\xea\x83\x88\xea\x83\x88\xea\x83\x88\xea\x83\x88\xea\x83\x88\xea\x83\x88\xea\x83\x88\xea\x83\x88\xea\x83\x88\xea\x83\x88\xea\x83\x88\xea\x83\x88\xea\x83\x88\xea\x83\x88\xea\x83\x88\xea\x83\x88-8.10473857859443898800000000000000000000000000000000000000000000E+18' +xfmt10491 format 8505402870310253234E79 '\xee\xb7\xbf<-,' -> '8.505402870310253234E+97' +xfmt10492 format -2547839523783694051E168 '\xeb\x90\x92<57n' -> '-2.547839523783694051e+186\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92\xeb\x90\x92' +xfmt10493 format 123456789012345.12345678901234567 ' 099,.12' -> ' 00,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,001.23456789012E+14' +xfmt10494 format -1234567890123.1234567890123456789 '\xe5\x81\xae>e' -> '-1.2345678901231234567890123456789e+12' +xfmt10495 format 4762925091403711e0 '\xea\xae\x85=6.18' -> '4762925091403711' +xfmt10496 format -5898820378749574e0 ' E' -> '-5.898820378749574E+15' +xfmt10497 format 5172372692088042E174 '\xee\xae\xb4>' -> '5.172372692088042E+189' +xfmt10498 format -1247383343834121E1 ' ' -> '-1.247383343834121E+16' +xfmt10499 format 22420863519943338085983990424542989194882E0 '' -> '22420863519943338085983990424542989194882' +xfmt10500 format -84868006600159261223226221545434979256988e0 '\xe3\x99\x93< 53,.32' -> '-8.4868006600159261223226221545435E+40\xe3\x99\x93\xe3\x99\x93\xe3\x99\x93\xe3\x99\x93\xe3\x99\x93\xe3\x99\x93\xe3\x99\x93\xe3\x99\x93\xe3\x99\x93\xe3\x99\x93\xe3\x99\x93\xe3\x99\x93\xe3\x99\x93\xe3\x99\x93\xe3\x99\x93' +xfmt10501 format 46612861664752819446167238626318579168002E368 '\xed\x8c\xb4<-4,' -> '4.6612861664752819446167238626318579168002E+408' +xfmt10502 format -14405747231115414771726142560701330254703e126 ' ' -> '-1.4405747231115414771726142560701330254703E+166' +xfmt10503 format 366181812445389556306232122871341e0 '0' -> '366181812445389556306232122871341' +xfmt10504 format -517261092241003757121244335172160e0 '\xe9\xb5\xba=.9n' -> '-5.17261092e+32' +xfmt10505 format 517132964172195773876249478142219e112 '' -> '5.17132964172195773876249478142219E+144' +xfmt10506 format -750023056669657299555826149807325e248 '0' -> '-7.50023056669657299555826149807325E+280' +xfmt10507 format 2484268846164443357546188105857768706367721e0 '-0,.34E' -> '2.4842688461644433575461881058577687E+42' +xfmt10508 format -2802793262131422532022210402728353808289344e0 '\xe8\x86\x8f= ,.42' -> '-2.80279326213142253202221040272835380828934E+42' +xfmt10509 format 3099288540707198941885507107209133807099934E212 '' -> '3.099288540707198941885507107209133807099934E+254' +xfmt10510 format -1726313281841411011644271609502650333335039E326 '\xe2\xb8\xb3^' -> '-1.726313281841411011644271609502650333335039E+368' +xfmt10511 format 2E0 'n' -> '2' +xfmt10512 format -7E0 ' 02f' -> '-7' +xfmt10513 format 9E182 '0' -> '9E+182' +xfmt10514 format -3E276 '-64' -> ' -3E+276' +xfmt10515 format 3905852096742850564091E0 '\xe8\xb2\x80< 68' -> ' 3905852096742850564091\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80\xe8\xb2\x80' +xfmt10516 format -9363797094742527638068e0 '\xed\x97\xa7^ ,' -> '-9,363,797,094,742,527,638,068' +xfmt10517 format 3945429221197678422389E310 '-05,.45E' -> '3.945429221197678422389000000000000000000000000E+331' +xfmt10518 format -9123979985913815525635E241 '\xe1\x86\xb1>+94,.93G' -> '\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1\xe1\x86\xb1-9.123979985913815525635E+262' +xfmt10519 format 243969064569845013891879669792271142389e0 '\xea\x8b\x91>-74,.45G' -> '\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91\xea\x8b\x91243,969,064,569,845,013,891,879,669,792,271,142,389' +xfmt10520 format -192229909434004781821915690208530243586E0 '044' -> '-0000192229909434004781821915690208530243586' +xfmt10521 format 135216374188260980552102853668420675425e167 ' 54.28G' -> ' 1.352163741882609805521028537E+205' +xfmt10522 format -327264534927142633639518569836523534190E113 '' -> '-3.27264534927142633639518569836523534190E+151' +xfmt10523 format 32446128224187351003925179128013714e0 '-038f' -> '00032446128224187351003925179128013714' +xfmt10524 format -12820796101813912105315665574566949e0 '0.15%' -> '-1282079610181391210531566557456694900.000000000000000%' +xfmt10525 format 39348047829723722707603716422745743E108 '.39' -> '3.9348047829723722707603716422745743E+142' +xfmt10526 format -51884041344637635168257490170786543E157 '15,%' -> '-51,884,041,344,637,635,168,257,490,170,786,543,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt10527 format 5002548568486438282054928105386802149926e0 '\xec\x88\x82< 59,.64g' -> ' 5,002,548,568,486,438,282,054,928,105,386,802,149,926\xec\x88\x82\xec\x88\x82\xec\x88\x82\xec\x88\x82\xec\x88\x82' +xfmt10528 format -4206227520863698731604790007069702962250E0 '\xe0\xac\x82<' -> '-4206227520863698731604790007069702962250' +xfmt10529 format 4425255671498806680189420380499275591913e301 ' 65G' -> ' 4.425255671498806680189420380499275591913E+340' +xfmt10530 format -6128482309276772758023692102517047075889E264 '\xd5\x89>31,E' -> '-6.128482309276772758023692102517047075889E+303' +xfmt10531 format 48107102831907580757E0 ' 0,.59g' -> ' 48,107,102,831,907,580,757' +xfmt10532 format -23537211107527692832E0 '+,.39' -> '-23,537,211,107,527,692,832' +xfmt10533 format 36628617165249207105e128 '\xec\x91\x92<+7,.84F' -> '+3,662,861,716,524,920,710,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10534 format -85134839270393144793e352 '+' -> '-8.5134839270393144793E+371' +xfmt10535 format 911e0 '-,.9g' -> '911' +xfmt10536 format -646e0 '-49' -> ' -646' +xfmt10537 format 186e100 '\xe9\x89\xad<' -> '1.86E+102' +xfmt10538 format -861E243 '052,.33' -> '-000,000,000,000,000,000,000,000,000,000,008.61E+245' +xfmt10539 format 89530846e0 '\xed\x82\x8c=25,.78G' -> '\xed\x82\x8c\xed\x82\x8c\xed\x82\x8c\xed\x82\x8c\xed\x82\x8c\xed\x82\x8c\xed\x82\x8c\xed\x82\x8c\xed\x82\x8c\xed\x82\x8c\xed\x82\x8c\xed\x82\x8c\xed\x82\x8c\xed\x82\x8c\xed\x82\x8c89,530,846' +xfmt10540 format -93583792e0 '\xe6\xb9\xb4<,' -> '-93,583,792' +xfmt10541 format 56135209e64 '\xee\x9d\x99^+17,.63g' -> '\xee\x9d\x99+5.6135209e+71\xee\x9d\x99\xee\x9d\x99' +xfmt10542 format -98172807E156 '\xef\xbd\x8a> 17.52E' -> '-9.8172807000000000000000000000000000000000000000000000E+163' +xfmt10543 format 4937903318003996402383630960e0 '-073' -> '0000000000000000000000000000000000000000000004937903318003996402383630960' +xfmt10544 format -3158676094087749854988204993E0 '\xe5\x82\x8a=' -> '-3158676094087749854988204993' +xfmt10545 format 3681836497097891506974526262E345 '\xe4\x94\x92=+11,E' -> '+3.681836497097891506974526262E+372' +xfmt10546 format -8599392900256881164250430968e127 '22.91g' -> '-8.599392900256881164250430968e+154' +xfmt10547 format 20751617678483171840827461997256606091326828e0 '' -> '20751617678483171840827461997256606091326828' +xfmt10548 format -54441472060625381673295120156885779008143308e0 '' -> '-54441472060625381673295120156885779008143308' +xfmt10549 format 11209411413724052280552377210380568922261681E165 '\xe2\x91\x96>-89,.19' -> '\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x96\xe2\x91\x961.120941141372405228E+208' +xfmt10550 format -12601367219883886448115086965817049129083265E88 '\xea\xbd\xb3>54' -> '\xea\xbd\xb3\xea\xbd\xb3\xea\xbd\xb3-1.2601367219883886448115086965817049129083265E+131' +xfmt10551 format 160860129772550477E0 '\xef\x9b\xbb> ,.55' -> ' 160,860,129,772,550,477' +xfmt10552 format -513354367627638396e0 '\xeb\xbc\xa1>53,.98g' -> '\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1\xeb\xbc\xa1-513,354,367,627,638,396' +xfmt10553 format 632096624068012884E328 '0,.41F' -> '6,320,966,240,680,128,840,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000' +xfmt10554 format -582698912749036725E87 '31,.37%' -> '-58,269,891,274,903,672,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000%' +xfmt10555 format 0e0 '\xe3\x9d\x92^+97.76F' -> '\xe3\x9d\x92\xe3\x9d\x92\xe3\x9d\x92\xe3\x9d\x92\xe3\x9d\x92\xe3\x9d\x92\xe3\x9d\x92\xe3\x9d\x92\xe3\x9d\x92+0.0000000000000000000000000000000000000000000000000000000000000000000000000000\xe3\x9d\x92\xe3\x9d\x92\xe3\x9d\x92\xe3\x9d\x92\xe3\x9d\x92\xe3\x9d\x92\xe3\x9d\x92\xe3\x9d\x92\xe3\x9d\x92' +xfmt10556 format 0E0 '0' -> '0' +xfmt10557 format 0E250 '-041.97' -> '000000000000000000000000000000000000E+250' +xfmt10558 format 0E114 ' 063,.81' -> ' 0,000,000,000,000,000,000,000,000,000,000,000,000,000,000E+114' +xfmt10559 format 9092736268960899266908646135905149963E0 ' 0,.25' -> ' 9.092736268960899266908646E+36' +xfmt10560 format -1637202123633954578402276005119577850E0 '\xe8\x81\x8e^90.68%' -> '-163720212363395457840227600511957785000.00000000000000000000000000000000000000000000000000000000000000000000%' +xfmt10561 format 5577611802953453323582901907344795156E91 '22.17' -> '5.5776118029534533E+127' +xfmt10562 format -3483888694992805764092656974198053785E13 '\xe9\xb3\x9d= ,.39G' -> '-3.483888694992805764092656974198053785E+49' +xfmt10563 format 83182406157349745876587656e0 '' -> '83182406157349745876587656' +xfmt10564 format -39863904854402746228147079e0 '55,' -> ' -39,863,904,854,402,746,228,147,079' +xfmt10565 format 43737991994454041985558540e326 '0E' -> '4.3737991994454041985558540E+351' +xfmt10566 format -84058324649420182475688002E314 '\xef\x90\x89=,' -> '-8.4058324649420182475688002E+339' +xfmt10567 format 50336018197188994015233927363904e0 ' 069.89%' -> ' 5033601819718899401523392736390400.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt10568 format -90104195466954686774070489178578E0 ' .21%' -> '-9010419546695468677407048917857800.000000000000000000000%' +xfmt10569 format 31920376756951610490677287597244E363 '\xee\x88\xa2^+66,.95g' -> '\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2+3.1920376756951610490677287597244e+394\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2\xee\x88\xa2' +xfmt10570 format -62728892550062687017115199260762e319 ',' -> '-6.2728892550062687017115199260762E+350' +xfmt10571 format 1785450E0 '' -> '1785450' +xfmt10572 format -8558441E0 ',F' -> '-8,558,441' +xfmt10573 format 5573995e165 '\xeb\xb6\x9f^-43,.1%' -> '557,399,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0%' +xfmt10574 format -2749237E55 '\xe4\xad\x81>-26,' -> '\xe4\xad\x81\xe4\xad\x81\xe4\xad\x81\xe4\xad\x81\xe4\xad\x81\xe4\xad\x81\xe4\xad\x81\xe4\xad\x81\xe4\xad\x81\xe4\xad\x81\xe4\xad\x81\xe4\xad\x81\xe4\xad\x81-2.749237E+61' +xfmt10575 format 19E0 '\xea\x9a\x85= 11.37' -> ' \xea\x9a\x85\xea\x9a\x85\xea\x9a\x85\xea\x9a\x85\xea\x9a\x85\xea\x9a\x85\xea\x9a\x85\xea\x9a\x8519' +xfmt10576 format -46e0 '\xeb\xbe\xa8<89.32g' -> '-46\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8\xeb\xbe\xa8' +xfmt10577 format 16e244 ' 67%' -> ' 16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt10578 format -36e181 '\xe5\x82\x96=' -> '-3.6E+182' +xfmt10579 format 9894941303401592108E0 '\xeb\xa2\xaf<+21,.26' -> '+9,894,941,303,401,592,108' +xfmt10580 format -5954995725278025346E0 '-060,.94e' -> '-5.9549957252780253460000000000000000000000000000000000000000000000000000000000000000000000000000e+18' +xfmt10581 format 7135604297172801594e201 '\xee\xa8\xb7^,.42' -> '7.135604297172801594E+219' +xfmt10582 format -4289921313016400156e26 '04.59' -> '-4.289921313016400156E+44' +xfmt10583 format 3648255620436220245249697963645e0 '\xe1\x8a\x81<-,' -> '3,648,255,620,436,220,245,249,697,963,645' +xfmt10584 format -8143107889299895662997613207932E0 '\xe6\x83\x97^-19,.64g' -> '-8,143,107,889,299,895,662,997,613,207,932' +xfmt10585 format 2180279764771932431320469551228e31 '\xed\x9a\xbe^' -> '2.180279764771932431320469551228E+61' +xfmt10586 format -9079899557759036567886519135409E234 '\xef\xa4\xbc< 69,' -> '-9.079899557759036567886519135409E+264\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc\xef\xa4\xbc' +xfmt10587 format 749283477636850444708110438070161312E0 '\xef\x9f\x82>.74' -> '749283477636850444708110438070161312' +xfmt10588 format -952838705400340514537579176001502274e0 '\xee\xb7\xb6<-3,.61%' -> '-95,283,870,540,034,051,453,757,917,600,150,227,400.0000000000000000000000000000000000000000000000000000000000000%' +xfmt10589 format 771638318673282200861402349366635529e310 '\xe7\x94\xa2<40.39G' -> '7.71638318673282200861402349366635529E+345' +xfmt10590 format -623696419603092389270407021090347656E148 '-0,.4' -> '-6.237E+183' +xfmt10591 format 9416197318E0 '' -> '9416197318' +xfmt10592 format -5158400188E0 '+17,.30' -> ' -5,158,400,188' +xfmt10593 format 3938982540E51 '\xe3\x87\xb8=8%' -> '393898254000000000000000000000000000000000000000000000000000000%' +xfmt10594 format -2794552031E302 '0,.1F' -> '-279,455,203,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0' +xfmt10595 format 177485303813679470404301311487e0 '' -> '177485303813679470404301311487' +xfmt10596 format -373656483935565099930245397760E0 '\xe4\xb9\x8b<40,.52%' -> '-37,365,648,393,556,509,993,024,539,776,000.0000000000000000000000000000000000000000000000000000%' +xfmt10597 format 926474712928018076467857621884e303 '.11' -> '9.2647471293E+332' +xfmt10598 format -808141060318882659666423741186e26 '\xef\x9f\x8e> 17,.42%' -> '-8,081,410,603,188,826,596,664,237,411,860,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000%' +xfmt10599 format 78164811528177460329491866870E0 '\xee\x83\x9c= 20,.78F' -> ' 78,164,811,528,177,460,329,491,866,870.000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10600 format -73674892547641060077540275533E0 '0,G' -> '-73,674,892,547,641,060,077,540,275,533' +xfmt10601 format 68865286602455454037733212677E144 '\xea\xb6\x81=-49,.58F' -> '68,865,286,602,455,454,037,733,212,677,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000' +xfmt10602 format -68955877023037740487818660690e258 '\xe6\x9e\xa9=-6,G' -> '-6.8955877023037740487818660690E+286' +xfmt10603 format 22642065634415485E0 '\xec\xab\xa0> 35.27' -> '\xec\xab\xa0\xec\xab\xa0\xec\xab\xa0\xec\xab\xa0\xec\xab\xa0\xec\xab\xa0\xec\xab\xa0\xec\xab\xa0\xec\xab\xa0\xec\xab\xa0\xec\xab\xa0\xec\xab\xa0\xec\xab\xa0\xec\xab\xa0\xec\xab\xa0\xec\xab\xa0\xec\xab\xa0 22642065634415485' +xfmt10604 format -92882320617835072e0 '+' -> '-92882320617835072' +xfmt10605 format 86912951346273242e238 '\xef\xac\x89=88,.34E' -> '\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x89\xef\xac\x898.6912951346273242000000000000000000E+254' +xfmt10606 format -33482777614588719e325 '+044,.77F' -> '-334,827,776,145,887,190,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10607 format 436149359792087243429421177e0 '\xe5\xb5\x8d^+94,.31E' -> '\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d+4.3614935979208724342942117700000E+26\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d\xe5\xb5\x8d' +xfmt10608 format -393115936761141708330823340e0 '\xec\x95\x92< 20,.79f' -> '-393,115,936,761,141,708,330,823,340.0000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10609 format 957514845342937054758681869e109 ' 4G' -> ' 9.57514845342937054758681869E+135' +xfmt10610 format -708061857594976275770137832e128 '\xe3\xaf\x98= ,.66' -> '-7.08061857594976275770137832E+154' +xfmt10611 format 472303057285e0 '\xe5\xb8\xa0>-85,%' -> '\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa0\xe5\xb8\xa047,230,305,728,500%' +xfmt10612 format -685364424144E0 '\xd4\x92^80.49' -> '\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92-685364424144\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92\xd4\x92' +xfmt10613 format 276791891971e320 '50,' -> ' 2.76791891971E+331' +xfmt10614 format -479525055775e71 '\xe5\x89\x99>F' -> '-47952505577500000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10615 format 1.1234567 '\xe1\xbd\xa5=' -> '1.1234567' +xfmt10616 format -12345678901234.123456789012345678901 '\xe4\xaf\x97<-10,.15g' -> '-12,345,678,901,234.1' +xfmt10617 format 4087352076295949234394710196240207E0 '\xe0\xa9\xa8^' -> '4087352076295949234394710196240207' +xfmt10618 format -2439711983400418681851124704834742e0 ' 29.98f' -> '-2439711983400418681851124704834742.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10619 format 9153631129537800891926942071720015e2 ',' -> '9.153631129537800891926942071720015E+35' +xfmt10620 format -4801353064572835219802194930840658E315 '\xe7\x82\x9a< 68,.26e' -> '-4.80135306457283521980219493e+348\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a\xe7\x82\x9a' +xfmt10621 format 5247844053950865721E0 '\xe9\x86\x87^-,' -> '5,247,844,053,950,865,721' +xfmt10622 format -9950651289386469485e0 '\xe2\xb9\x97^+5,.70' -> '-9,950,651,289,386,469,485' +xfmt10623 format 3426671001518128728e378 '+e' -> '+3.426671001518128728e+396' +xfmt10624 format -6353539033744713052E75 '+049.32%' -> '-635353903374471305200000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000%' +xfmt10625 format 8817789345237439609304111234808818938E0 '\xef\x96\x9d=49,.32G' -> '\xef\x96\x9d\xef\x96\x9d\xef\x96\x9d\xef\x96\x9d\xef\x96\x9d\xef\x96\x9d\xef\x96\x9d\xef\x96\x9d\xef\x96\x9d\xef\x96\x9d\xef\x96\x9d\xef\x96\x9d8.8177893452374396093041112348088E+36' +xfmt10626 format -6186255585248234811856023135316637763e0 '\xeb\xad\xa7^13.83e' -> '-6.18625558524823481185602313531663776300000000000000000000000000000000000000000000000e+36' +xfmt10627 format 3283161915409660912216274278661415358E235 ' 67.9' -> ' 3.28316192E+271' +xfmt10628 format -4316164956096168111620721831262121740E51 ' 0.15' -> '-4.31616495609617E+87' +xfmt10629 format 977e0 '75.62' -> ' 977' +xfmt10630 format -982e0 '-084,.49G' -> '-000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,982' +xfmt10631 format 527E70 '\xe4\x97\x92>34,.86' -> '\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x92\xe4\x97\x925.27E+72' +xfmt10632 format -843E252 '\xef\x8c\xb9=' -> '-8.43E+254' +xfmt10633 format 221045416845E0 '\xec\xa0\x95<,f' -> '221,045,416,845' +xfmt10634 format -181472404859e0 '' -> '-181472404859' +xfmt10635 format 865358877470E167 '\xe1\x97\xab=-66,.33E' -> '\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab\xe1\x97\xab8.653588774700000000000000000000000E+178' +xfmt10636 format -574285431607E121 '\xe0\xae\x97<,.16' -> '-5.74285431607E+132' +xfmt10637 format 61307626157861746009383764e0 '0,' -> '61,307,626,157,861,746,009,383,764' +xfmt10638 format -48711652489623926886049641E0 ' 0,.54F' -> '-48,711,652,489,623,926,886,049,641.000000000000000000000000000000000000000000000000000000' +xfmt10639 format 16855378786593625614210830E251 ' 068g' -> ' 000000000000000000000000000000000001.6855378786593625614210830e+276' +xfmt10640 format -72529514491417618673721489E139 '\xe6\x9e\xa2<+64,.46F' -> '-725,295,144,914,176,186,737,214,890,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000' +xfmt10641 format 82356932160886e0 '\xe7\xb5\x9c^+,.69f' -> '+82,356,932,160,886.000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10642 format -26998458144952e0 '\xe9\xaf\xbf>-19,F' -> '-26,998,458,144,952' +xfmt10643 format 89371153656285e51 '0' -> '8.9371153656285E+64' +xfmt10644 format -65628087400333e376 '' -> '-6.5628087400333E+389' +xfmt10645 format 35e0 '54,' -> ' 35' +xfmt10646 format -13e0 '\xea\x92\xab>,' -> '-13' +xfmt10647 format 34e39 '\xe9\x8d\x89^ 8,.34G' -> ' 3.4E+40' +xfmt10648 format -58E240 '\xeb\xb5\xb6<.81' -> '-5.8E+241' +xfmt10649 format 9278187e0 '\xe3\xb3\xa6>99.9%' -> '\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6\xe3\xb3\xa6927818700.000000000%' +xfmt10650 format -7216012E0 '\xe4\x85\xad^-g' -> '-7216012' +xfmt10651 format 7248215e283 '' -> '7.248215E+289' +xfmt10652 format -6391734e328 '-' -> '-6.391734E+334' +xfmt10653 format 7601069885938381204258741673310e0 '' -> '7601069885938381204258741673310' +xfmt10654 format -1298754544151397044270930954310e0 '+g' -> '-1298754544151397044270930954310' +xfmt10655 format 2860694940249094037984805837305E26 '\xe4\x99\x9d=-.31' -> '2.860694940249094037984805837305E+56' +xfmt10656 format -4248513939631871138202434186106e142 '\xee\xac\xb6^-93,g' -> '\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6-4.248513939631871138202434186106e+172\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6\xee\xac\xb6' +xfmt10657 format 614893e0 '\xe6\x86\x8a<-95,.16g' -> '614,893\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a\xe6\x86\x8a' +xfmt10658 format -553154E0 ',.84' -> '-553,154' +xfmt10659 format 931667e155 '\xee\x93\xad> 53,.29f' -> ' 93,166,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000' +xfmt10660 format -605907E175 ',E' -> '-6.05907E+180' +xfmt10661 format 9403865639696172824522086979644495584547E0 '+090,.14F' -> '+00,000,000,000,000,009,403,865,639,696,172,824,522,086,979,644,495,584,547.00000000000000' +xfmt10662 format -1377884178538808590725419648376168792372e0 '\xea\x89\x81>-.32' -> '-1.3778841785388085907254196483762E+39' +xfmt10663 format 7677929534343075025861731514870269798862e154 '\xeb\xa2\x8a<,g' -> '7.677929534343075025861731514870269798862e+193' +xfmt10664 format -5835195612917226328658957766457627050241e185 '\xe9\xa4\xb4=+,F' -> '-583,519,561,291,722,632,865,895,776,645,762,705,024,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt10665 format 3880E0 '-018,.52e' -> '3.8800000000000000000000000000000000000000000000000000e+3' +xfmt10666 format -7139E0 '' -> '-7139' +xfmt10667 format 9587E222 '15,.43' -> ' 9.587E+225' +xfmt10668 format -7156E353 '' -> '-7.156E+356' +xfmt10669 format 26989225632339236832384193883934669071965e0 '.47' -> '26989225632339236832384193883934669071965' +xfmt10670 format -53139417310751191631265872066423721051748E0 '\xe4\x84\xb8^,' -> '-53,139,417,310,751,191,631,265,872,066,423,721,051,748' +xfmt10671 format 93640985763680302278353441756388086188285e136 '\xe1\xb5\x9a=-,f' -> '936,409,857,636,803,022,783,534,417,563,880,861,882,850,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt10672 format -67715988823191554910892370595426269870636E192 '\xe4\xa7\xaf<57,.9' -> '-6.77159888E+232\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf\xe4\xa7\xaf' +xfmt10673 format 24433627512216149981389511712251732378900370E0 '' -> '24433627512216149981389511712251732378900370' +xfmt10674 format -48379466195398520770975494967554169377706289e0 '' -> '-48379466195398520770975494967554169377706289' +xfmt10675 format 97212063784728566006131643794493147544575649e253 '+G' -> '+9.7212063784728566006131643794493147544575649E+296' +xfmt10676 format -55964062743279597491899835745676918750884856e3 '\xe7\xaa\x89>-11,.92g' -> '-5.5964062743279597491899835745676918750884856e+46' +xfmt10677 format 45935297249578900147309562984204e0 '' -> '45935297249578900147309562984204' +xfmt10678 format -55017455632980720911702352651781E0 '\xea\x8f\xbe=42,.32' -> '-55,017,455,632,980,720,911,702,352,651,781' +xfmt10679 format 81438104245501478364404112572546e13 '038,%' -> '81,438,104,245,501,478,364,404,112,572,546,000,000,000,000,000%' +xfmt10680 format -21249611280936932760313789078541E52 '\xe7\xb3\x89=-68,.85' -> '-\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x89\xe7\xb3\x892.1249611280936932760313789078541E+83' +xfmt10681 format 93813290601496220197940175924758968484E0 '.6' -> '9.38133E+37' +xfmt10682 format -18664315388384545754621303518309645177e0 '' -> '-18664315388384545754621303518309645177' +xfmt10683 format 16871335220622142312748014153717007148E373 ' 058,.72F' -> ' 168,713,352,206,221,423,127,480,141,537,170,071,480,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10684 format -51650051193708694428845714135835288087E144 '+076' -> '-00000000000000000000000000000005.1650051193708694428845714135835288087E+181' +xfmt10685 format 19421566875020482394E0 '056,f' -> '0,000,000,000,000,000,000,000,019,421,566,875,020,482,394' +xfmt10686 format -69636531513949080394E0 '.84F' -> '-69636531513949080394.000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10687 format 87789190780459755031e99 '\xe6\xbc\x8a>,.61E' -> '8.7789190780459755031000000000000000000000000000000000000000000E+118' +xfmt10688 format -36307017041787762373e138 '\xef\xab\xbe=-50,%' -> '-3,630,701,704,178,776,237,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt10689 format 274500228088732447385561511705695e0 '011.89e' -> '2.74500228088732447385561511705695000000000000000000000000000000000000000000000000000000000e+32' +xfmt10690 format -864790942689020836129192450805594E0 '\xe4\xb7\xa6>-20,.25%' -> '-86,479,094,268,902,083,612,919,245,080,559,400.0000000000000000000000000%' +xfmt10691 format 964668887777723717692442037828205e90 ' 92.13%' -> ' 96466888777772371769244203782820500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000%' +xfmt10692 format -469427282081598901069352657950836E294 '\xe2\xa4\xa5<+,.6g' -> '-4.69427e+326' +xfmt10693 format 582110625E0 '\xe9\x82\x9a<-87,.12G' -> '582,110,625\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a\xe9\x82\x9a' +xfmt10694 format -973633296E0 '+21,.58f' -> '-973,633,296.0000000000000000000000000000000000000000000000000000000000' +xfmt10695 format 615098486e254 ' 035.65G' -> ' 00000000000000000006.15098486E+262' +xfmt10696 format -141320612e35 '\xe7\x9a\x9c< ,.15%' -> '-1,413,206,120,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000%' +xfmt10697 format 719575725157816791801089687E0 '\xee\xab\x99<90,.66' -> '719,575,725,157,816,791,801,089,687\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99\xee\xab\x99' +xfmt10698 format -176689082428319587591536045e0 '+096.30n' -> '-00000000000000000000000000000000000000000000000000000000000000000000176689082428319587591536045' +xfmt10699 format 138608561936119633626527876e269 '\xe1\x88\xa3<,.56G' -> '1.38608561936119633626527876E+295' +xfmt10700 format -352855718769407901082336754E174 '' -> '-3.52855718769407901082336754E+200' +xfmt10701 format 27415289394042403E0 '\xef\x8a\x9f> 52,.22E' -> '\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f\xef\x8a\x9f 2.7415289394042403000000E+16' +xfmt10702 format -35261643280840190e0 ' 027,.34e' -> '-3.5261643280840190000000000000000000e+16' +xfmt10703 format 80397741714985952e261 '\xe5\xb4\x88<-88,.49e' -> '8.0397741714985952000000000000000000000000000000000e+277\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88\xe5\xb4\x88' +xfmt10704 format -70052002369991195e231 '-0,E' -> '-7.0052002369991195E+247' +xfmt10705 format 43982e0 '\xe5\xbd\xa2^+12,.28F' -> '+43,982.0000000000000000000000000000' +xfmt10706 format -16014e0 '\xe9\xba\xa1>-92,.2f' -> '\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1\xe9\xba\xa1-16,014.00' +xfmt10707 format 93110E182 '\xe8\xba\xad>+12,.83e' -> '+9.31100000000000000000000000000000000000000000000000000000000000000000000000000000000e+186' +xfmt10708 format -36330E49 '\xeb\xbb\xa1^+10,.4f' -> '-363,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000' +xfmt10709 format 90680099590355212305148109106944698e0 '\xe7\x9b\xbf^7.7g' -> '9.068010e+34' +xfmt10710 format -57965073557095658425391481695192044E0 '\xe9\xa5\x87> ,.63E' -> '-5.796507355709565842539148169519204400000000000000000000000000000E+34' +xfmt10711 format 51880009110827752547603199318675092e318 '\xe5\x96\x85>' -> '5.1880009110827752547603199318675092E+352' +xfmt10712 format -65737774087251379803777459164253196E378 '' -> '-6.5737774087251379803777459164253196E+412' +xfmt10713 format 128415645200646984998928692436E0 '\xe6\x92\xab=-91,.31%' -> '\xe6\x92\xab\xe6\x92\xab\xe6\x92\xab\xe6\x92\xab\xe6\x92\xab\xe6\x92\xab\xe6\x92\xab\xe6\x92\xab\xe6\x92\xab\xe6\x92\xab\xe6\x92\xab\xe6\x92\xab\xe6\x92\xab\xe6\x92\xab\xe6\x92\xab\xe6\x92\xab12,841,564,520,064,698,499,892,869,243,600.0000000000000000000000000000000%' +xfmt10714 format -170398028376499744682877898459E0 '\xec\x88\x9d>81,F' -> '\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d\xec\x88\x9d-170,398,028,376,499,744,682,877,898,459' +xfmt10715 format 673287182596975192592994493077E2 '\xef\xbe\x95^ .14E' -> ' 6.73287182596975E+31' +xfmt10716 format -257293911162401795582190088678E351 '\xef\x8f\xa5<' -> '-2.57293911162401795582190088678E+380' +xfmt10717 format 2999149396380543341484622e0 '-0' -> '2999149396380543341484622' +xfmt10718 format -3181453726601407868743481e0 '\xe1\x9c\x8a>f' -> '-3181453726601407868743481' +xfmt10719 format 3148081135983089224951958e324 ' 026,.38' -> ' 3.148081135983089224951958E+348' +xfmt10720 format -7110493673212174189204251e309 '\xe9\xa7\xbf<+32,%' -> '-711,049,367,321,217,418,920,425,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt10721 format 132750106264734724232392112448279493168402E0 '\xef\xb0\x95>,' -> '132,750,106,264,734,724,232,392,112,448,279,493,168,402' +xfmt10722 format -724911222328415192100470270537853594365692E0 '.21' -> '-7.24911222328415192100E+41' +xfmt10723 format 332520273260034707615466844326091865362435E106 '\xe1\xb3\xbd= ,.98F' -> ' 3,325,202,732,600,347,076,154,668,443,260,918,653,624,350,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10724 format -542947054241150559486444749022992471068649E6 '40.82' -> '-5.42947054241150559486444749022992471068649E+47' +xfmt10725 format 77863819E0 '' -> '77863819' +xfmt10726 format -87670983E0 '\xee\x83\x8c>' -> '-87670983' +xfmt10727 format 78052688e300 '\xea\x95\x9d>29.3' -> '\xea\x95\x9d\xea\x95\x9d\xea\x95\x9d\xea\x95\x9d\xea\x95\x9d\xea\x95\x9d\xea\x95\x9d\xea\x95\x9d\xea\x95\x9d\xea\x95\x9d\xea\x95\x9d\xea\x95\x9d\xea\x95\x9d\xea\x95\x9d\xea\x95\x9d\xea\x95\x9d\xea\x95\x9d\xea\x95\x9d\xea\x95\x9d\xea\x95\x9d7.81E+307' +xfmt10728 format -35213573E179 '\xec\xa2\x84^15,' -> '-3.5213573E+186' +xfmt10729 format 53280932784E0 ' ,' -> ' 53,280,932,784' +xfmt10730 format -33537470094E0 '%' -> '-3353747009400%' +xfmt10731 format 38505106862E249 ',' -> '3.8505106862E+259' +xfmt10732 format -52597167726E175 '\xee\xad\x80>-53,.76g' -> '\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80\xee\xad\x80-5.2597167726e+185' +xfmt10733 format 6094178783097140272546E0 '36,' -> ' 6,094,178,783,097,140,272,546' +xfmt10734 format -8291004859574160347645e0 '+,G' -> '-8,291,004,859,574,160,347,645' +xfmt10735 format 8633073800894368496331e287 '+16,.74' -> '+8.633073800894368496331E+308' +xfmt10736 format -6877777171478603622314e116 '-.37' -> '-6.877777171478603622314E+137' +xfmt10737 format .123456789012345 '\xee\x87\xaa<+61,.56G' -> '+0.123456789012345\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa\xee\x87\xaa' +xfmt10738 format -12.12345 '\xea\x8d\xb4=,.52g' -> '-12.12345' +xfmt10739 format 759737269348145035060163792870276128051736e0 '' -> '759737269348145035060163792870276128051736' +xfmt10740 format -868178887473861377164668330644556546866340E0 '\xe3\x83\xa3>+36,' -> '-868,178,887,473,861,377,164,668,330,644,556,546,866,340' +xfmt10741 format 383014333211321504022379325702304950382092E92 '\xee\x9a\xae=-1,G' -> '3.83014333211321504022379325702304950382092E+133' +xfmt10742 format -219910082417820884553387368280680398433167e249 '\xe2\x93\xbc<+17,.13E' -> '-2.1991008241782E+290' +xfmt10743 format 36658245658841610845E0 '\xef\x8b\x96^ 90,.21%' -> '\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96 3,665,824,565,884,161,084,500.000000000000000000000%\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96\xef\x8b\x96' +xfmt10744 format -52317287053553404545E0 '\xeb\x8f\xab< 58,.80g' -> '-52,317,287,053,553,404,545\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab\xeb\x8f\xab' +xfmt10745 format 97632725883796422704E43 '\xec\xaf\x95>-,.40' -> '9.7632725883796422704E+62' +xfmt10746 format -22715234678512976170e134 '\xe7\xa8\x99<-84,.51e' -> '-2.271523467851297617000000000000000000000000000000000e+153\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99\xe7\xa8\x99' +xfmt10747 format 2351946245281948013854632620019e0 '\xea\x96\xb0>+92,.45G' -> '\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0\xea\x96\xb0+2,351,946,245,281,948,013,854,632,620,019' +xfmt10748 format -3899778614104892757892598805791E0 ' 0,.72e' -> '-3.899778614104892757892598805791000000000000000000000000000000000000000000e+30' +xfmt10749 format 4330033491461964688345848205046e104 '\xe5\x89\x97>' -> '4.330033491461964688345848205046E+134' +xfmt10750 format -6926059157780315259572971683539e100 '\xe7\xa6\xae^ 72,F' -> '-69,260,591,577,803,152,595,729,716,835,390,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt10751 format 9429971876522546E0 '\xed\x89\xb0<+,.47E' -> '+9.42997187652254600000000000000000000000000000000E+15' +xfmt10752 format -8561221141278413E0 '-' -> '-8561221141278413' +xfmt10753 format 1436429697923091E208 '\xec\xae\x87^ 32' -> '\xec\xae\x87\xec\xae\x87\xec\xae\x87\xec\xae\x87 1.436429697923091E+223\xec\xae\x87\xec\xae\x87\xec\xae\x87\xec\xae\x87\xec\xae\x87' +xfmt10754 format -2095568773002093E2 '\xe1\xbe\x83=-,.48' -> '-2.095568773002093E+17' +xfmt10755 format 354061890151e0 '' -> '354061890151' +xfmt10756 format -148037652125E0 '\xe2\x81\xbe>89,.38' -> '\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe\xe2\x81\xbe-148,037,652,125' +xfmt10757 format 321637465247e58 '\xe9\xb7\x9f>-80,.22f' -> '3,216,374,652,470,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000' +xfmt10758 format -659477734368E382 '' -> '-6.59477734368E+393' +xfmt10759 format 81390e0 '\xd6\x8c>,' -> '81,390' +xfmt10760 format -75759E0 '\xe1\xbf\x88= 79,.42f' -> '-\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x88\xe1\xbf\x8875,759.000000000000000000000000000000000000000000' +xfmt10761 format 20962E380 '36,.80f' -> '2,096,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10762 format -90425e242 'G' -> '-9.0425E+246' +xfmt10763 format 23567950528E0 '\xeb\x88\xbf>.62' -> '23567950528' +xfmt10764 format -92109285204e0 '\xe3\xa4\xb1^+95,.29' -> '\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1-92,109,285,204\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1\xe3\xa4\xb1' +xfmt10765 format 20676547179e252 '54' -> ' 2.0676547179E+262' +xfmt10766 format -74827730412e365 '\xe4\xbb\xb6>-6,.59G' -> '-7.4827730412E+375' +xfmt10767 format 3119839802067239151e0 '36,' -> ' 3,119,839,802,067,239,151' +xfmt10768 format -1518894309997811631E0 '\xe7\x87\xbe=+35,.2' -> '-\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe\xe7\x87\xbe1.5E+18' +xfmt10769 format 5226007931861750401E294 ' 0,' -> ' 5.226007931861750401E+312' +xfmt10770 format -8352341029596469066e283 '-67,.86g' -> ' -8.352341029596469066e+301' +xfmt10771 format 5439867606844251459029299531246408E0 '\xe9\xa1\x82^,' -> '5,439,867,606,844,251,459,029,299,531,246,408' +xfmt10772 format -3984160189095682110721973952440553E0 '.56G' -> '-3984160189095682110721973952440553' +xfmt10773 format 5418756979361017801633964177563121E66 '\xef\xb4\x90>-37,F' -> '5,418,756,979,361,017,801,633,964,177,563,121,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt10774 format -8750912428065623008571933363592440E278 '061.84' -> '-000000000000000000008.750912428065623008571933363592440E+311' +xfmt10775 format 8009372554857063236893E0 '-05,' -> '8,009,372,554,857,063,236,893' +xfmt10776 format -3978913501655361841150E0 '' -> '-3978913501655361841150' +xfmt10777 format 7206297481300372725970E157 '\xe8\xaf\x90>15n' -> '7.206297481300372725970e+178' +xfmt10778 format -6599238838860622357679e222 '\xeb\x88\xbb< .91' -> '-6.599238838860622357679E+243' +xfmt10779 format 2726550534312036914862956010312185220975599E0 '\xe2\x90\x95=79,.99f' -> '2,726,550,534,312,036,914,862,956,010,312,185,220,975,599.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10780 format -9411091612979613480601761950405218458150974E0 '\xe1\x8c\x93^+61,.73' -> '\xe1\x8c\x93-9,411,091,612,979,613,480,601,761,950,405,218,458,150,974\xe1\x8c\x93\xe1\x8c\x93' +xfmt10781 format 2567142729781493373419580745980547694625164E303 '\xe1\x81\x9c^+62,.73E' -> '+2.5671427297814933734195807459805476946251640000000000000000000000000000000E+345' +xfmt10782 format -6236290840019148842560606146029128274175500e366 '0,G' -> '-6.236290840019148842560606146029128274175500E+408' +xfmt10783 format 0e0 'f' -> '0' +xfmt10784 format 0E0 '\xe2\x84\xb9>+,.24g' -> '+0' +xfmt10785 format 0E102 '\xe1\xa4\xbf=+74,.55' -> '+\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf\xe1\xa4\xbf0E+102' +xfmt10786 format 0E291 '-17,' -> ' 0E+291' +xfmt10787 format 747607476519566E0 '' -> '747607476519566' +xfmt10788 format -611774442619067e0 '\xea\x92\xb7<4,.80G' -> '-611,774,442,619,067' +xfmt10789 format 755530124588874E221 '\xeb\xb6\x87=+1.44' -> '+7.55530124588874E+235' +xfmt10790 format -266142073216863E150 '40.33' -> ' -2.66142073216863E+164' +xfmt10791 format 47742537989132990448993595922553612815801640e0 '\xe8\x9c\xbb= 27.99F' -> ' 47742537989132990448993595922553612815801640.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10792 format -44342873241264080495299936362086886763175687E0 '\xe5\x8c\x81>.56F' -> '-44342873241264080495299936362086886763175687.00000000000000000000000000000000000000000000000000000000' +xfmt10793 format 40322713779850087480619393969348999669726932E148 '\xe5\x94\xbf=,E' -> '4.0322713779850087480619393969348999669726932E+191' +xfmt10794 format -66118363133309086584216729125934682157228206E287 ' ' -> '-6.6118363133309086584216729125934682157228206E+330' +xfmt10795 format 9387e0 '\xe1\x8b\xbc^ 97,.56e' -> '\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc 9.38700000000000000000000000000000000000000000000000000000e+3\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc\xe1\x8b\xbc' +xfmt10796 format -9590E0 '\xed\x8a\xac>71.71' -> '\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac\xed\x8a\xac-9590' +xfmt10797 format 1780e128 '80' -> ' 1.780E+131' +xfmt10798 format -3749e316 '' -> '-3.749E+319' +xfmt10799 format 409076513273536535E0 '.27G' -> '409076513273536535' +xfmt10800 format -153317637670086472e0 '\xec\x9b\xbb=+.36' -> '-153317637670086472' +xfmt10801 format 283570662923486004e300 '\xe4\x88\xa2=72.18e' -> '\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa2\xe4\x88\xa22.835706629234860040e+317' +xfmt10802 format -680574437786303159E23 '079,.52g' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,006.80574437786303159e+40' +xfmt10803 format 5350764905673931842370720245e0 '0' -> '5350764905673931842370720245' +xfmt10804 format -6116771186433719115254998296e0 '.13' -> '-6.116771186434E+27' +xfmt10805 format 5333216839021138628646356334E254 '\xeb\xb5\x94^-88,g' -> '\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x945.333216839021138628646356334e+281\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94\xeb\xb5\x94' +xfmt10806 format -8749820484916933944875940666e365 '\xe3\x8c\x99< 80,.69g' -> '-8.749820484916933944875940666e+392\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99\xe3\x8c\x99' +xfmt10807 format 9162150316332166816447833087967969354340E0 '\xef\x84\x89<-28.5e' -> '9.16215e+39\xef\x84\x89\xef\x84\x89\xef\x84\x89\xef\x84\x89\xef\x84\x89\xef\x84\x89\xef\x84\x89\xef\x84\x89\xef\x84\x89\xef\x84\x89\xef\x84\x89\xef\x84\x89\xef\x84\x89\xef\x84\x89\xef\x84\x89\xef\x84\x89\xef\x84\x89' +xfmt10808 format -6951942129129597903468685508282159681956e0 '' -> '-6951942129129597903468685508282159681956' +xfmt10809 format 4930654865998775832486109670989895115339E180 '+017,E' -> '+4.930654865998775832486109670989895115339E+219' +xfmt10810 format -6589687984299288185870977818766789733195E231 ',' -> '-6.589687984299288185870977818766789733195E+270' +xfmt10811 format 4815633170125E0 '' -> '4815633170125' +xfmt10812 format -9274990312906E0 ' ,E' -> '-9.274990312906E+12' +xfmt10813 format 5937387086608E123 '38,' -> ' 5.937387086608E+135' +xfmt10814 format -8957044851215e97 '' -> '-8.957044851215E+109' +xfmt10815 format 28537529973687760598543E0 '\xec\xb0\xa4< 42.97F' -> ' 28537529973687760598543.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10816 format -94224812894450447405648e0 '\xcf\x8e=+39,.73E' -> '-9.4224812894450447405648000000000000000000000000000000000000000000000000000E+22' +xfmt10817 format 11130389110928876784339E108 '' -> '1.1130389110928876784339E+130' +xfmt10818 format -20633317067685850028163E296 '018,' -> '-2.0633317067685850028163E+318' +xfmt10819 format 95186236228460394913100581635950e0 '' -> '95186236228460394913100581635950' +xfmt10820 format -80639090819039337578736432046896e0 '\xec\x98\xa5<+,.57f' -> '-80,639,090,819,039,337,578,736,432,046,896.000000000000000000000000000000000000000000000000000000000' +xfmt10821 format 43299471728524878625832195941979E87 '\xe7\x8d\xbc= ,g' -> ' 4.3299471728524878625832195941979e+118' +xfmt10822 format -57608589951002042388246007965855E359 ' %' -> '-576085899510020423882460079658550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt10823 format 573848421e0 '\xe8\xa6\x83= 25,.54%' -> ' 57,384,842,100.000000000000000000000000000000000000000000000000000000%' +xfmt10824 format -387077069e0 '+.10' -> '-387077069' +xfmt10825 format 895300273e260 '\xe3\xa7\x98 '8.95300273E+268' +xfmt10826 format -646498342e88 '.6' -> '-6.46498E+96' +xfmt10827 format 195943697262906732061303322E0 '\xe3\xb9\xbb=.2' -> '2.0E+26' +xfmt10828 format -220328601577367492463569789E0 '\xe4\xba\xbf= ,.81E' -> '-2.203286015773674924635697890000000000000000000000000000000000000000000000000000000E+26' +xfmt10829 format 878364006137354990206480040e117 '\xe9\xad\xa5>38,f' -> '878,364,006,137,354,990,206,480,040,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt10830 format -109241542289979378989557713E170 ' ,' -> '-1.09241542289979378989557713E+196' +xfmt10831 format 29757052728714361931370779403547487923443e0 '\xe6\x9c\xb5<-.40f' -> '29757052728714361931370779403547487923443.0000000000000000000000000000000000000000' +xfmt10832 format -45679731161386684619514055064919515059238E0 '\xe7\x8c\x95> ,f' -> '-45,679,731,161,386,684,619,514,055,064,919,515,059,238' +xfmt10833 format 43694705522741645345319758404101328432482e131 '\xcc\xb2=+41,.63%' -> '+436,947,055,227,416,453,453,197,584,041,013,284,324,820,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000%' +xfmt10834 format -50351648228834612195139680267921718546277E372 '' -> '-5.0351648228834612195139680267921718546277E+412' +xfmt10835 format 975350588904932238068240e0 ',' -> '975,350,588,904,932,238,068,240' +xfmt10836 format -588006193050835987010216e0 '\xeb\xaf\xb3^ ,' -> '-588,006,193,050,835,987,010,216' +xfmt10837 format 470456158434458643628228E278 '\xe5\x92\x9b<.45%' -> '4704561584344586436282280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000%' +xfmt10838 format -453955970735766917301635E318 '\xee\xa0\xba=,.24g' -> '-4.53955970735766917301635e+341' +xfmt10839 format 1e0 '\xea\x81\xb7>' -> '1' +xfmt10840 format -2E0 '\xe7\x98\x91>+22,.75' -> '\xe7\x98\x91\xe7\x98\x91\xe7\x98\x91\xe7\x98\x91\xe7\x98\x91\xe7\x98\x91\xe7\x98\x91\xe7\x98\x91\xe7\x98\x91\xe7\x98\x91\xe7\x98\x91\xe7\x98\x91\xe7\x98\x91\xe7\x98\x91\xe7\x98\x91\xe7\x98\x91\xe7\x98\x91\xe7\x98\x91\xe7\x98\x91\xe7\x98\x91-2' +xfmt10841 format 4e109 '\xef\xab\xa2^87' -> '\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa24E+109\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2\xef\xab\xa2' +xfmt10842 format -8E328 '\xe6\xb6\xa3>89,e' -> '\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3\xe6\xb6\xa3-8e+328' +xfmt10843 format 7228291e0 '83' -> ' 7228291' +xfmt10844 format -3371434e0 '\xe3\x8e\x93^+83,.41g' -> '\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93-3,371,434\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93\xe3\x8e\x93' +xfmt10845 format 1105429e322 '' -> '1.105429E+328' +xfmt10846 format -5632858e141 '' -> '-5.632858E+147' +xfmt10847 format 463563331755084810664787423108067e0 '\xe8\xa4\xa8=,.16g' -> '4.635633317550848e+32' +xfmt10848 format -521823976601063751700329851577472E0 '' -> '-521823976601063751700329851577472' +xfmt10849 format 593565092165870998798081380672386E123 '\xe5\xac\xa6^ 90,G' -> '\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6 5.93565092165870998798081380672386E+155\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6\xe5\xac\xa6' +xfmt10850 format -394001679070228433274034818863912e243 '67' -> ' -3.94001679070228433274034818863912E+275' +xfmt10851 format 65751404e0 '\xe2\x94\xad<-,.54F' -> '65,751,404.000000000000000000000000000000000000000000000000000000' +xfmt10852 format -18232805e0 '\xe4\xa1\x9c<+1,.20f' -> '-18,232,805.00000000000000000000' +xfmt10853 format 10956336e290 '\xeb\x97\x87>+78,g' -> '\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87\xeb\x97\x87+1.0956336e+297' +xfmt10854 format -11646996E315 '' -> '-1.1646996E+322' +xfmt10855 format 771089134825420538049685514396e0 ' .36' -> ' 771089134825420538049685514396' +xfmt10856 format -947670543318305939478741835392E0 '\xe3\xb7\xba<+.47e' -> '-9.47670543318305939478741835392000000000000000000e+29' +xfmt10857 format 932894235644876248213169327552E282 '+034,' -> '+9.32894235644876248213169327552E+311' +xfmt10858 format -620746359808753881249914736173e146 '-,' -> '-6.20746359808753881249914736173E+175' +xfmt10859 format 123456789012345678901.12345678901234567890 '\xe9\x99\xa1^+' -> '+123456789012345678901.12345678901234567890' +xfmt10860 format -1234567890123456789.12345678901 '\xe3\xad\x83>68,.90' -> '\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83\xe3\xad\x83-1,234,567,890,123,456,789.12345678901' +xfmt10861 format 82629e0 '\xec\xb9\xb1>.44' -> '82629' +xfmt10862 format -18005e0 '\xe8\xb4\x9e^ 26' -> '\xe8\xb4\x9e\xe8\xb4\x9e\xe8\xb4\x9e\xe8\xb4\x9e\xe8\xb4\x9e\xe8\xb4\x9e\xe8\xb4\x9e\xe8\xb4\x9e\xe8\xb4\x9e\xe8\xb4\x9e-18005\xe8\xb4\x9e\xe8\xb4\x9e\xe8\xb4\x9e\xe8\xb4\x9e\xe8\xb4\x9e\xe8\xb4\x9e\xe8\xb4\x9e\xe8\xb4\x9e\xe8\xb4\x9e\xe8\xb4\x9e' +xfmt10863 format 70680e307 '\xee\xb3\x84<-47,.33' -> '7.0680E+311\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84\xee\xb3\x84' +xfmt10864 format -38714e189 '.35F' -> '-38714000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000' +xfmt10865 format 8343403687389118E0 '' -> '8343403687389118' +xfmt10866 format -3748784452583912E0 '066,' -> '-0,000,000,000,000,000,000,000,000,000,000,003,748,784,452,583,912' +xfmt10867 format 3680485271187443e380 '0' -> '3.680485271187443E+395' +xfmt10868 format -2253679298983811e38 '0' -> '-2.253679298983811E+53' +xfmt10869 format 31708335355E0 '.97' -> '31708335355' +xfmt10870 format -15169144706E0 '41' -> ' -15169144706' +xfmt10871 format 72522384969e270 '+046.78F' -> '+72522384969000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10872 format -24232241933e94 '\xec\xa8\xa7>-68,.43E' -> '\xec\xa8\xa7\xec\xa8\xa7\xec\xa8\xa7\xec\xa8\xa7\xec\xa8\xa7\xec\xa8\xa7\xec\xa8\xa7\xec\xa8\xa7\xec\xa8\xa7\xec\xa8\xa7\xec\xa8\xa7\xec\xa8\xa7\xec\xa8\xa7\xec\xa8\xa7\xec\xa8\xa7\xec\xa8\xa7\xec\xa8\xa7-2.4232241933000000000000000000000000000000000E+104' +xfmt10873 format 3289407174e0 '-.6' -> '3.28941E+9' +xfmt10874 format -6631927424e0 ' 93.45' -> ' -6631927424' +xfmt10875 format 9790967601E28 '\xe2\x96\xa7=36.42G' -> '\xe2\x96\xa7\xe2\x96\xa7\xe2\x96\xa7\xe2\x96\xa7\xe2\x96\xa7\xe2\x96\xa7\xe2\x96\xa7\xe2\x96\xa7\xe2\x96\xa7\xe2\x96\xa7\xe2\x96\xa7\xe2\x96\xa7\xe2\x96\xa7\xe2\x96\xa7\xe2\x96\xa7\xe2\x96\xa7\xe2\x96\xa7\xe2\x96\xa7\xe2\x96\xa7\xe2\x96\xa7\xe2\x96\xa79.790967601E+37' +xfmt10876 format -4903600451e270 '\xed\x95\x91>' -> '-4.903600451E+279' +xfmt10877 format 89E0 '\xe9\x8d\x91= ' -> ' 89' +xfmt10878 format -68E0 '\xef\xa4\x92<.10' -> '-68' +xfmt10879 format 84E277 '+,G' -> '+8.4E+278' +xfmt10880 format -94e78 '\xed\x96\x93^+23,.48g' -> '\xed\x96\x93\xed\x96\x93\xed\x96\x93\xed\x96\x93\xed\x96\x93\xed\x96\x93\xed\x96\x93-9.4e+79\xed\x96\x93\xed\x96\x93\xed\x96\x93\xed\x96\x93\xed\x96\x93\xed\x96\x93\xed\x96\x93\xed\x96\x93' +xfmt10881 format 190972695124E0 '\xe8\x95\xa2^8,.42' -> '190,972,695,124' +xfmt10882 format -990186439279e0 '' -> '-990186439279' +xfmt10883 format 538000860151e214 '\xe1\xae\x93> 41.98F' -> ' 5380008601510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10884 format -466613170483E44 '\xe6\xa2\x9e^81,.89f' -> '-46,661,317,048,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10885 format 66419283715387953925e0 '-,' -> '66,419,283,715,387,953,925' +xfmt10886 format -63948014973184511523E0 '\xe6\xb6\x9a>+28,f' -> '\xe6\xb6\x9a-63,948,014,973,184,511,523' +xfmt10887 format 42386617909666272467e31 '20,.46' -> '4.2386617909666272467E+50' +xfmt10888 format -32037214502475354505E198 '\xe0\xa5\x8d= 24.60f' -> '-32037214502475354505000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000' +xfmt10889 format 50885203E0 '\xe7\xbb\xa3< 94,' -> ' 50,885,203\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3\xe7\xbb\xa3' +xfmt10890 format -71394444e0 '\xe1\xa9\x88^+17,.75' -> '\xe1\xa9\x88\xe1\xa9\x88\xe1\xa9\x88-71,394,444\xe1\xa9\x88\xe1\xa9\x88\xe1\xa9\x88' +xfmt10891 format 62991710E334 '\xe4\xb0\xa1^+92,.10G' -> '\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1+6.2991710E+341\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1\xe4\xb0\xa1' +xfmt10892 format -44910906e161 '' -> '-4.4910906E+168' +xfmt10893 format 717970857912601E0 '' -> '717970857912601' +xfmt10894 format -422903502325317E0 '\xef\x8e\xbd>+69,e' -> '\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd\xef\x8e\xbd-4.22903502325317e+14' +xfmt10895 format 908636941131467E290 '\xe8\xa3\xb7=+11,.85' -> '+9.08636941131467E+304' +xfmt10896 format -955697890379186E350 '\xe5\x81\x92<-24.38G' -> '-9.55697890379186E+364\xe5\x81\x92\xe5\x81\x92' +xfmt10897 format 12770750202396815627500542389088544202898117E0 '\xe4\x96\xa6=-,.3F' -> '12,770,750,202,396,815,627,500,542,389,088,544,202,898,117.000' +xfmt10898 format -38814572583275873130830343665636408520998151E0 '' -> '-38814572583275873130830343665636408520998151' +xfmt10899 format 45089052237613041520010772877094719562971689E150 '\xe7\xaa\xaa=48' -> '4.5089052237613041520010772877094719562971689E+193' +xfmt10900 format -81646043895404213890604157088673296533729006E128 ' 0,.97F' -> '-8,164,604,389,540,421,389,060,415,708,867,329,653,372,900,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10901 format 6333947345287630808e0 '\xef\xab\xb2^46,.61E' -> '6.3339473452876308080000000000000000000000000000000000000000000E+18' +xfmt10902 format -2771509745953935275e0 '\xee\xab\x91= ,F' -> '-2,771,509,745,953,935,275' +xfmt10903 format 4181101398057421112E243 '\xe7\xa5\x80>56.6' -> '\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x80\xe7\xa5\x804.18110E+261' +xfmt10904 format -7705394557751476866E162 '\xe6\x8a\x94>-2,.3E' -> '-7.705E+180' +xfmt10905 format 3917227975258817855373928786624083132e0 '\xe2\xb2\xad=+,.35' -> '+3.9172279752588178553739287866240831E+36' +xfmt10906 format -6273687202083236550326388717439123529E0 '\xe9\xb0\x93^ 87.29' -> '\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93-6.2736872020832365503263887174E+36\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93\xe9\xb0\x93' +xfmt10907 format 2965225793394412564418412428683614267e75 '+0,%' -> '+296,522,579,339,441,256,441,841,242,868,361,426,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt10908 format -1386278852829877792124950290400792621e304 '.58' -> '-1.386278852829877792124950290400792621E+340' +xfmt10909 format 318694980740043857131987039395843359535E0 '-0,.44E' -> '3.18694980740043857131987039395843359535000000E+38' +xfmt10910 format -286775310040865930677199709216368538516e0 '' -> '-286775310040865930677199709216368538516' +xfmt10911 format 190693888834309756051458330318000213800E234 '\xe9\xad\xb1^89G' -> '\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb11.90693888834309756051458330318000213800E+272\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1\xe9\xad\xb1' +xfmt10912 format -952411821373536642009438344633611881430E327 '\xeb\xa4\xaf>+49,.8' -> '\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf\xeb\xa4\xaf-9.5241182E+365' +xfmt10913 format 5464448050630583559135E0 '\xe7\x82\x80<-1g' -> '5464448050630583559135' +xfmt10914 format -7973176711860804214498E0 '\xeb\xaf\xbd=-43,.65g' -> '-\xeb\xaf\xbd\xeb\xaf\xbd\xeb\xaf\xbd\xeb\xaf\xbd\xeb\xaf\xbd\xeb\xaf\xbd\xeb\xaf\xbd\xeb\xaf\xbd\xeb\xaf\xbd\xeb\xaf\xbd\xeb\xaf\xbd\xeb\xaf\xbd\xeb\xaf\xbd7,973,176,711,860,804,214,498' +xfmt10915 format 5258454824424591937256E216 '\xe4\x8b\x84=-35.4f' -> '5258454824424591937256000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000' +xfmt10916 format -7509100141493282783182e251 '\xee\xbe\x8f^-,E' -> '-7.509100141493282783182E+272' +xfmt10917 format 769965517798324219478089836495599E0 '\xe8\x96\xb0>72,.85E' -> '7.6996551779832421947808983649559900000000000000000000000000000000000000000000000000000E+32' +xfmt10918 format -709538455093810458034736905278844E0 '' -> '-709538455093810458034736905278844' +xfmt10919 format 847377514788497849373731094934751e288 '030,' -> '8.47377514788497849373731094934751E+320' +xfmt10920 format -900960515739760507521979767054684E324 '\xef\x98\x8f^ 32,.7e' -> '\xef\x98\x8f\xef\x98\x8f\xef\x98\x8f\xef\x98\x8f\xef\x98\x8f\xef\x98\x8f\xef\x98\x8f\xef\x98\x8f-9.0096052e+356\xef\x98\x8f\xef\x98\x8f\xef\x98\x8f\xef\x98\x8f\xef\x98\x8f\xef\x98\x8f\xef\x98\x8f\xef\x98\x8f\xef\x98\x8f' +xfmt10921 format 2e0 '\xe1\xac\xa1^+e' -> '+2e+0' +xfmt10922 format -2e0 '\xe3\x93\x95<-13,.50f' -> '-2.00000000000000000000000000000000000000000000000000' +xfmt10923 format 5e182 '\xe7\xad\xb4=15,.13g' -> '\xe7\xad\xb4\xe7\xad\xb4\xe7\xad\xb4\xe7\xad\xb4\xe7\xad\xb4\xe7\xad\xb4\xe7\xad\xb4\xe7\xad\xb4\xe7\xad\xb45e+182' +xfmt10924 format -5e379 '036.80' -> '-000000000000000000000000000005E+379' +xfmt10925 format 120654019206183399306843690569486841E0 '' -> '120654019206183399306843690569486841' +xfmt10926 format -220344831234163633036989681803961408E0 ' 0.75' -> '-220344831234163633036989681803961408' +xfmt10927 format 634996133473633274986429424248314644e62 '' -> '6.34996133473633274986429424248314644E+97' +xfmt10928 format -166675555766974748103092659037459592E341 ',F' -> '-16,667,555,576,697,474,810,309,265,903,745,959,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt10929 format 22421679834234E0 '\xc8\xb6<+,' -> '+22,421,679,834,234' +xfmt10930 format -49756560183416E0 '\xe9\xa6\x91>E' -> '-4.9756560183416E+13' +xfmt10931 format 96302978865753e289 '\xe8\x95\xa8> 19,.41g' -> ' 9.6302978865753e+302' +xfmt10932 format -46047275216997E30 '\xef\x82\x8e= E' -> '-4.6047275216997E+43' +xfmt10933 format 1828894212999313455568713154514E0 '\xee\xaa\x87> 40.78f' -> ' 1828894212999313455568713154514.000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10934 format -2816964638404971260990487319545e0 '\xe8\xb9\xaa^-81,.90E' -> '-2.816964638404971260990487319545000000000000000000000000000000000000000000000000000000000000E+30' +xfmt10935 format 6197590513150590346442676072392E334 '0.77' -> '6.197590513150590346442676072392E+364' +xfmt10936 format -6780676162171303353306501067212E202 ' .49' -> '-6.780676162171303353306501067212E+232' +xfmt10937 format 0E0 '\xe5\x98\xab< 26,.37g' -> ' 0\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab\xe5\x98\xab' +xfmt10938 format 0E0 '\xe2\x9b\xaf^-56,.1%' -> '\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf0.0%\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf\xe2\x9b\xaf' +xfmt10939 format 0e211 '.97' -> '0E+211' +xfmt10940 format 0e205 '' -> '0E+205' +xfmt10941 format 43923122473713413078210184799722881418025e0 '\xeb\x92\x8e>-19,.86' -> '43,923,122,473,713,413,078,210,184,799,722,881,418,025' +xfmt10942 format -73990438019868341641419243523401075100948e0 '' -> '-73990438019868341641419243523401075100948' +xfmt10943 format 65165911498393501125008727167500875495614e230 '\xec\x8c\xbb>.22E' -> '6.5165911498393501125009E+270' +xfmt10944 format -41179939289231636134533440554533683462331e94 '\xea\x97\x91=+90,.46e' -> '-\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x91\xea\x97\x914.1179939289231636134533440554533683462331000000e+134' +xfmt10945 format 8158120016162e0 '+.74' -> '+8158120016162' +xfmt10946 format -4940659795756E0 '\xe4\xa0\xba> 22.20n' -> '\xe4\xa0\xba\xe4\xa0\xba\xe4\xa0\xba\xe4\xa0\xba\xe4\xa0\xba\xe4\xa0\xba\xe4\xa0\xba\xe4\xa0\xba-4940659795756' +xfmt10947 format 4852557065764E18 '\xe7\xb4\xa4^48,' -> '\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa44.852557065764E+30\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4\xe7\xb4\xa4' +xfmt10948 format -5570295903928E301 '0F' -> '-55702959039280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt10949 format 7071759447777341856669070337530972101920E0 '-,g' -> '7,071,759,447,777,341,856,669,070,337,530,972,101,920' +xfmt10950 format -8702430858855653432036778784113031972762e0 '\xe7\x88\x92= 26,.66G' -> '-8,702,430,858,855,653,432,036,778,784,113,031,972,762' +xfmt10951 format 8209799124180115450719272910118948292189e136 '\xe9\x8e\xae=' -> '8.209799124180115450719272910118948292189E+175' +xfmt10952 format -8537763018846362226946728894592637942564E179 '\xe8\x8b\x8d>-61,.57%' -> '-85,377,630,188,463,622,269,467,288,945,926,379,425,640,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000%' +xfmt10953 format 32130625312414396382478142073938568423E0 '\xea\x9a\xab<-,.92' -> '32,130,625,312,414,396,382,478,142,073,938,568,423' +xfmt10954 format -97746223293559135078563051232621912381e0 '\xec\x9b\xb8= 74,.45g' -> '-\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb8\xec\x9b\xb897,746,223,293,559,135,078,563,051,232,621,912,381' +xfmt10955 format 57142863977480980036280100517637886838E104 '\xeb\x8d\x91<-5,.9G' -> '5.71428640E+141' +xfmt10956 format -11931396039089207984705464158306441008E211 '\xef\x83\xbf= 25,.95%' -> '-11,931,396,039,089,207,984,705,464,158,306,441,008,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt10957 format 85022435040264789011734972496385E0 '' -> '85022435040264789011734972496385' +xfmt10958 format -61874609264874902089071131170722E0 '' -> '-61874609264874902089071131170722' +xfmt10959 format 19311964898300884510274767572230e74 '' -> '1.9311964898300884510274767572230E+105' +xfmt10960 format -63838084935755977335597346721121e201 '\xdd\x8c> 5,.12e' -> '-6.383808493576e+232' +xfmt10961 format 866676376159817648929E0 '\xe4\x9b\xa1> 79,.40F' -> '\xe4\x9b\xa1\xe4\x9b\xa1\xe4\x9b\xa1\xe4\x9b\xa1\xe4\x9b\xa1\xe4\x9b\xa1\xe4\x9b\xa1\xe4\x9b\xa1\xe4\x9b\xa1\xe4\x9b\xa1 866,676,376,159,817,648,929.0000000000000000000000000000000000000000' +xfmt10962 format -568923740022889998202E0 '\xed\x93\x9c>.51' -> '-568923740022889998202' +xfmt10963 format 333642506234742956547E63 '-041.10' -> '000000000000000000000000003.336425062E+83' +xfmt10964 format -235630882706518792436e11 '\xe7\x81\x9e>+14,.74e' -> '-2.35630882706518792436000000000000000000000000000000000000000000000000000000e+31' +xfmt10965 format 18045755328224409676830939069635564E0 '\xe6\xa2\x8c> ,.29%' -> ' 1,804,575,532,822,440,967,683,093,906,963,556,400.00000000000000000000000000000%' +xfmt10966 format -31047769515338743202273517817664459e0 '' -> '-31047769515338743202273517817664459' +xfmt10967 format 79578487291367717917882952100577054E206 '\xe5\xb1\xa5<-72,e' -> '7.9578487291367717917882952100577054e+240\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5\xe5\xb1\xa5' +xfmt10968 format -85891048184041493677413459774391407e329 ' 06.99g' -> '-8.5891048184041493677413459774391407e+363' +xfmt10969 format 623752401085937712e0 '\xe2\xbe\xa5<+86.70E' -> '+6.2375240108593771200000000000000000000000000000000000000000000000000000E+17\xe2\xbe\xa5\xe2\xbe\xa5\xe2\xbe\xa5\xe2\xbe\xa5\xe2\xbe\xa5\xe2\xbe\xa5\xe2\xbe\xa5\xe2\xbe\xa5\xe2\xbe\xa5' +xfmt10970 format -368854741917048804e0 '\xee\xbb\xae^,.68f' -> '-368,854,741,917,048,804.00000000000000000000000000000000000000000000000000000000000000000000' +xfmt10971 format 883362480137219585e359 '\xe2\x8a\x89<-17,.7g' -> '8.833625e+376\xe2\x8a\x89\xe2\x8a\x89\xe2\x8a\x89\xe2\x8a\x89' +xfmt10972 format -587752228141368986E68 '' -> '-5.87752228141368986E+85' +xfmt10973 format 67594217823032258084725342152e0 '' -> '67594217823032258084725342152' +xfmt10974 format -21258069961514141422957356397e0 '+79,F' -> ' -21,258,069,961,514,141,422,957,356,397' +xfmt10975 format 45495859558028004914990286831e284 '0' -> '4.5495859558028004914990286831E+312' +xfmt10976 format -41886812353782667555577735408E104 '\xee\xb1\xb6<-5g' -> '-4.1886812353782667555577735408e+132' +xfmt10977 format 697886815E0 '\xe8\x81\x8c=+.55e' -> '+6.9788681500000000000000000000000000000000000000000000000e+8' +xfmt10978 format -928669940E0 '' -> '-928669940' +xfmt10979 format 174969250e347 '\xe4\xb9\xa4^+48,.21e' -> '\xe4\xb9\xa4\xe4\xb9\xa4\xe4\xb9\xa4\xe4\xb9\xa4\xe4\xb9\xa4\xe4\xb9\xa4\xe4\xb9\xa4\xe4\xb9\xa4\xe4\xb9\xa4+1.749692500000000000000e+355\xe4\xb9\xa4\xe4\xb9\xa4\xe4\xb9\xa4\xe4\xb9\xa4\xe4\xb9\xa4\xe4\xb9\xa4\xe4\xb9\xa4\xe4\xb9\xa4\xe4\xb9\xa4\xe4\xb9\xa4' +xfmt10980 format -116767287E30 '\xe2\x99\xa3=-' -> '-1.16767287E+38' +xfmt10981 format 1234567890123.123 '' -> '1234567890123.123' +xfmt10982 format -1234567890123.123456 '\xe8\xbc\xba=9,.22f' -> '-1,234,567,890,123.1234560000000000000000' +xfmt10983 format 2498120492599485785285e0 '0,.94g' -> '2,498,120,492,599,485,785,285' +xfmt10984 format -2931267637487489728148e0 '\xe0\xaf\xb8<,.3' -> '-2.93E+21' +xfmt10985 format 8032750780006230536971e338 '\xe2\x91\xbc=-28,.89E' -> '8.03275078000623053697100000000000000000000000000000000000000000000000000000000000000000000E+359' +xfmt10986 format -9331222727037645516938e28 ' 083.10E' -> '-0000000000000000000000000000000000000000000000000000000000000000009.3312227270E+49' +xfmt10987 format 8947911806536070126212562836e0 '\xea\x8c\xbe>+14,.18E' -> '+8.947911806536070126E+27' +xfmt10988 format -5272815230091723914216050838e0 '\xe4\xa5\xba^.6' -> '-5.27282E+27' +xfmt10989 format 3176753617461652196898316006E312 '' -> '3.176753617461652196898316006E+339' +xfmt10990 format -4882848502088261300493057346e141 '\xef\x89\x94=53.68F' -> '-4882848502088261300493057346000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000000000000' +xfmt10991 format 1268574443596781672410825995008e0 'n' -> '1268574443596781672410825995008' +xfmt10992 format -3046681831336197511837040874673E0 '9' -> '-3046681831336197511837040874673' +xfmt10993 format 3829300405170038813618880449305e337 '\xe4\x81\xa5=19,.31G' -> '3.829300405170038813618880449305E+367' +xfmt10994 format -2761107760518415339201986574647e0 '0' -> '-2761107760518415339201986574647' +xfmt10995 format 4E0 '\xef\xa6\xae>55,e' -> '\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae\xef\xa6\xae4e+0' +xfmt10996 format -6E0 ' 053' -> '-0000000000000000000000000000000000000000000000000006' +xfmt10997 format 7e142 '\xec\xab\x96<37.18g' -> '7e+142\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96\xec\xab\x96' +xfmt10998 format -1e291 '-' -> '-1E+291' +xfmt10999 format 10083689378297189472e0 '0,g' -> '10,083,689,378,297,189,472' +xfmt11000 format -36184436540534514379E0 '\xe4\xbb\x9f> ,E' -> '-3.6184436540534514379E+19' +xfmt11001 format 13879491347554059141E367 '0' -> '1.3879491347554059141E+386' +xfmt11002 format -59720120075759039129E227 '\xe7\xb7\x8a=-17,.76%' -> '-597,201,200,757,590,391,290,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt11003 format 431783540394387372317773185803E0 '\xe4\x84\x95>,G' -> '431,783,540,394,387,372,317,773,185,803' +xfmt11004 format -469426702984465050856157595306E0 '' -> '-469426702984465050856157595306' +xfmt11005 format 419735539879374367620252370709E198 '-.50g' -> '4.19735539879374367620252370709e+227' +xfmt11006 format -322608453572527753961372977464E220 '.83' -> '-3.22608453572527753961372977464E+249' +xfmt11007 format 943197628086372981941324909379907592454e0 '-045,g' -> '943,197,628,086,372,981,941,324,909,379,907,592,454' +xfmt11008 format -953354833204931162352688697853356236077E0 '041' -> '-0953354833204931162352688697853356236077' +xfmt11009 format 309595107133253437929058966023644350890E217 '013,f' -> '3,095,951,071,332,534,379,290,589,660,236,443,508,900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt11010 format -566068154982279813809688935310144772173e348 '.92n' -> '-5.66068154982279813809688935310144772173e+386' +xfmt11011 format 8317027392925e0 ' ,f' -> ' 8,317,027,392,925' +xfmt11012 format -2035195605109e0 '\xe9\x90\xae=-58,.56' -> '-\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae\xe9\x90\xae2,035,195,605,109' +xfmt11013 format 9200196612520E95 '' -> '9.200196612520E+107' +xfmt11014 format -1233462844815E231 '\xe5\x84\xad^ 45,.47g' -> '\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad-1.233462844815e+243\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad\xe5\x84\xad' +xfmt11015 format 84831417243893921454931E0 '\xee\xb8\xae>-56,.45E' -> '\xee\xb8\xae\xee\xb8\xae\xee\xb8\xae\xee\xb8\xae\xee\xb8\xae8.483141724389392145493100000000000000000000000E+22' +xfmt11016 format -52398045909426151055291e0 '\xe4\xbd\xbc<90,.74G' -> '-52,398,045,909,426,151,055,291\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc\xe4\xbd\xbc' +xfmt11017 format 42540259373246811474549e230 '' -> '4.2540259373246811474549E+252' +xfmt11018 format -43983940796073226213478E83 '+01.81' -> '-4.3983940796073226213478E+105' +xfmt11019 format 95911911068E0 '\xc5\xb7< 22.91g' -> ' 95911911068\xc5\xb7\xc5\xb7\xc5\xb7\xc5\xb7\xc5\xb7\xc5\xb7\xc5\xb7\xc5\xb7\xc5\xb7\xc5\xb7' +xfmt11020 format -49602422069e0 '05,.15F' -> '-49,602,422,069.000000000000000' +xfmt11021 format 24203325745E107 '\xeb\x9d\x8c=-37.14%' -> '242033257450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000%' +xfmt11022 format -14991767119e37 '' -> '-1.4991767119E+47' +xfmt11023 format 13497383657749971898254309178831657E0 '083e' -> '00000000000000000000000000000000000000000001.3497383657749971898254309178831657e+34' +xfmt11024 format -76614618463959054124123923435139904e0 ' 0' -> '-76614618463959054124123923435139904' +xfmt11025 format 57426632459827371430741768177153279E280 '+036.39e' -> '+5.742663245982737143074176817715327900000e+314' +xfmt11026 format -83396181501053816197725150088800234e91 '-03.40F' -> '-833961815010538161977251500888002340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000' +xfmt11027 format 91180689672260463203462725e0 ',' -> '91,180,689,672,260,463,203,462,725' +xfmt11028 format -20791129961231846357435335e0 '68.39' -> ' -20791129961231846357435335' +xfmt11029 format 78952713836462839670265732E282 '\xe4\x89\xac<-62,F' -> '78,952,713,836,462,839,670,265,732,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt11030 format -82632410721840531361340987E322 '\xe6\x97\xbf=-e' -> '-8.2632410721840531361340987e+347' +xfmt11031 format 793679679341348808437711E0 '\xe8\xb3\xbb>-.44g' -> '793679679341348808437711' +xfmt11032 format -598552869584944553124348E0 '\xef\xac\xbd< 95,.76e' -> '-5.9855286958494455312434800000000000000000000000000000000000000000000000000000e+23\xef\xac\xbd\xef\xac\xbd\xef\xac\xbd\xef\xac\xbd\xef\xac\xbd\xef\xac\xbd\xef\xac\xbd\xef\xac\xbd\xef\xac\xbd\xef\xac\xbd\xef\xac\xbd\xef\xac\xbd' +xfmt11033 format 748795937368371415323146e167 '' -> '7.48795937368371415323146E+190' +xfmt11034 format -880947455788061873786991E243 '\xe4\x8d\x8b^15,F' -> '-880,947,455,788,061,873,786,991,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt11035 format 517206689619754661573365057e0 '0g' -> '517206689619754661573365057' +xfmt11036 format -804354497025389439275921966E0 '-062,.87E' -> '-8.043544970253894392759219660000000000000000000000000000000000000000000000000000000000000E+26' +xfmt11037 format 818366763672317371079934069E206 '\xe3\xaa\xb2^ 32,.27G' -> ' 8.18366763672317371079934069E+232' +xfmt11038 format -945520873277044440063569607e83 '\xef\xa4\x96^-,.66G' -> '-9.45520873277044440063569607E+109' +xfmt11039 format 50354464e0 '.8' -> '50354464' +xfmt11040 format -77723988E0 '\xef\x8a\x8c=%' -> '-7772398800%' +xfmt11041 format 81583735e271 '+25.5' -> ' +8.1584E+278' +xfmt11042 format -95009285E138 '\xe4\x91\x90< ,.14f' -> '-95,009,285,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000' +xfmt11043 format 10539841898843858E0 '0' -> '10539841898843858' +xfmt11044 format -22255161424699176e0 '\xe2\xa6\x8f>-51,.66e' -> '-2.225516142469917600000000000000000000000000000000000000000000000000e+16' +xfmt11045 format 18773833245752120e78 '' -> '1.8773833245752120E+94' +xfmt11046 format -56766537955369845e377 ',' -> '-5.6766537955369845E+393' +xfmt11047 format 73333308746518961058782857105E0 '\xe8\x88\xad^+,.26f' -> '+73,333,308,746,518,961,058,782,857,105.00000000000000000000000000' +xfmt11048 format -31042594626539312032724382062e0 '\xe3\x8d\xba> 16,.91e' -> '-3.1042594626539312032724382062000000000000000000000000000000000000000000000000000000000000000e+28' +xfmt11049 format 95413853999036930143364549370e90 'f' -> '95413853999036930143364549370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11050 format -41899010405677229046128675519e262 '\xec\xa0\xae^ 94,.53f' -> '-418,990,104,056,772,290,461,286,755,190,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000' +xfmt11051 format 5532400020958216311238732323186963284167545e0 '\xe7\xb3\xb2< 21,.12F' -> ' 5,532,400,020,958,216,311,238,732,323,186,963,284,167,545.000000000000' +xfmt11052 format -5468494963618283428253358695349530869272798E0 '\xe5\xa7\xb3^+47,.68%' -> '-546,849,496,361,828,342,825,335,869,534,953,086,927,279,800.00000000000000000000000000000000000000000000000000000000000000000000%' +xfmt11053 format 9120617612277808258163996565535486140188135E177 '\xee\xa9\xb3> 33,.85e' -> ' 9.1206176122778082581639965655354861401881350000000000000000000000000000000000000000000e+219' +xfmt11054 format -6546471406965175591211725977475285995318395E180 '\xea\x91\xbb<93e' -> '-6.546471406965175591211725977475285995318395e+222\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb\xea\x91\xbb' +xfmt11055 format 15645962972693970632787205178362383636e0 '0n' -> '15645962972693970632787205178362383636' +xfmt11056 format -50858028908051827387945845242676985300E0 '+075,.11f' -> '-00,000,000,050,858,028,908,051,827,387,945,845,242,676,985,300.00000000000' +xfmt11057 format 18992572405791833073621075700568074419e44 '\xef\x87\xb8<+.37e' -> '+1.8992572405791833073621075700568074419e+81' +xfmt11058 format -37328572036188967143706082648676295698E374 '06,' -> '-3.7328572036188967143706082648676295698E+411' +xfmt11059 format 98566049565333E0 ' 58,.46E' -> ' 9.8566049565333000000000000000000000000000000000E+13' +xfmt11060 format -71390468809908E0 '\xe7\xa9\xb2< 18E' -> '-7.1390468809908E+13' +xfmt11061 format 72336651938250E158 '\xeb\x95\x9b<-58,e' -> '7.2336651938250e+171\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b\xeb\x95\x9b' +xfmt11062 format -50203644244694e364 '25,%' -> '-50,203,644,244,694,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt11063 format 621242021478847099051905714169625947991929E0 '\xe2\xa9\xb8=e' -> '6.21242021478847099051905714169625947991929e+41' +xfmt11064 format -767798445024884932357281268090418158718376e0 '\xe6\xaf\xbf^ 86.16' -> '\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf-7.677984450248849E+41\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf\xe6\xaf\xbf' +xfmt11065 format 753203610722644943752152353349996941437891e296 '\xe2\x90\xb7>+47,.78g' -> '+7.53203610722644943752152353349996941437891e+337' +xfmt11066 format -961966486383538654174643892382993902582599E339 '' -> '-9.61966486383538654174643892382993902582599E+380' +xfmt11067 format 962914924792E0 '\xef\x8a\xa1<81,.42f' -> '962,914,924,792.000000000000000000000000000000000000000000\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1\xef\x8a\xa1' +xfmt11068 format -528476227149e0 '' -> '-528476227149' +xfmt11069 format 787620536579e29 '35,.54' -> ' 7.87620536579E+40' +xfmt11070 format -491623606681E205 '0' -> '-4.91623606681E+216' +xfmt11071 format 25885e0 '\xe4\xab\xa4=+,.54e' -> '+2.588500000000000000000000000000000000000000000000000000e+4' +xfmt11072 format -75979e0 '0,' -> '-75,979' +xfmt11073 format 77329e21 '\xeb\x97\xac= 46,g' -> ' \xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac\xeb\x97\xac7.7329e+25' +xfmt11074 format -59774E242 '\xe4\xaf\x97=-.59' -> '-5.9774E+246' +xfmt11075 format 5422901E0 '-.49' -> '5422901' +xfmt11076 format -3803143e0 '' -> '-3803143' +xfmt11077 format 9529546E45 '\xe9\x8b\xa2<,' -> '9.529546E+51' +xfmt11078 format -8948729e312 '\xe9\x92\xbe^ 42.51' -> '\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe-8.948729E+318\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe\xe9\x92\xbe' +xfmt11079 format 1843e0 '\xe7\xa9\xa2> 17,.37F' -> ' 1,843.0000000000000000000000000000000000000' +xfmt11080 format -2282e0 '\xe9\xb1\x94^-68.42E' -> '\xe9\xb1\x94\xe9\xb1\x94\xe9\xb1\x94\xe9\xb1\x94\xe9\xb1\x94\xe9\xb1\x94\xe9\xb1\x94\xe9\xb1\x94\xe9\xb1\x94\xe9\xb1\x94-2.282000000000000000000000000000000000000000E+3\xe9\xb1\x94\xe9\xb1\x94\xe9\xb1\x94\xe9\xb1\x94\xe9\xb1\x94\xe9\xb1\x94\xe9\xb1\x94\xe9\xb1\x94\xe9\xb1\x94\xe9\xb1\x94' +xfmt11081 format 2413E55 '' -> '2.413E+58' +xfmt11082 format -8037e375 '\xea\xb9\x82> ,.21' -> '-8.037E+378' +xfmt11083 format 6072112564976482583151785092250435E0 '99' -> ' 6072112564976482583151785092250435' +xfmt11084 format -3966299101691136950426261485892759e0 '' -> '-3966299101691136950426261485892759' +xfmt11085 format 2400195457515496823915976980229434E370 '-0,e' -> '2.400195457515496823915976980229434e+403' +xfmt11086 format -5133933402381964287687062501039305e199 '\xee\xb7\xbb< 93,.17E' -> '-5.13393340238196429E+232\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb\xee\xb7\xbb' +xfmt11087 format 628549326799649694E0 '\xe2\xb0\x9c<-23,.85e' -> '6.2854932679964969400000000000000000000000000000000000000000000000000000000000000000000e+17' +xfmt11088 format -607094485382982444e0 '\xe1\xba\xb5=45' -> '-\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5\xe1\xba\xb5607094485382982444' +xfmt11089 format 434818532417384730E12 '\xec\xa4\xa1^.98F' -> '434818532417384730000000000000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11090 format -922016181322589174e346 '+.31F' -> '-9220161813225891740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000' +xfmt11091 format 9911319340962278855267280616879092680994e0 '-.17' -> '9.9113193409622789E+39' +xfmt11092 format -6170662164695246662442016076994100361466E0 '' -> '-6170662164695246662442016076994100361466' +xfmt11093 format 2150183666499126291247941714865583471892E178 '\xef\xa3\x84=-85' -> '\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x84\xef\xa3\x842.150183666499126291247941714865583471892E+217' +xfmt11094 format -8881743008997194507105162117226777607146e72 '' -> '-8.881743008997194507105162117226777607146E+111' +xfmt11095 format 939846641693348493541E0 '\xee\xba\xa5= ,.2e' -> ' 9.40e+20' +xfmt11096 format -833136626452751274261E0 '87e' -> ' -8.33136626452751274261e+20' +xfmt11097 format 430218162215593613066E112 '\xe1\xb9\xbc= 1,.20E' -> ' 4.30218162215593613066E+132' +xfmt11098 format -139750995086460042148E374 ',.38g' -> '-1.39750995086460042148e+394' +xfmt11099 format 543914992E0 '+37.24' -> ' +543914992' +xfmt11100 format -593403155E0 '\xe5\x86\xb9< 31,.1' -> '-6E+8\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9\xe5\x86\xb9' +xfmt11101 format 148467833E373 '\xef\xbc\x89>89,f' -> '1,484,678,330,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt11102 format -888840722e89 '\xec\x9e\xbf>+65,.60f' -> '-88,884,072,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000' +xfmt11103 format 12.123456789012345678 '\xee\xbe\xb5=+' -> '+12.123456789012345678' +xfmt11104 format -12345678901234567890.1234567 '21.81' -> '-12345678901234567890.1234567' +xfmt11105 format 935124936792E0 '\xe9\xb6\xb8>-81,.14F' -> '\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8\xe9\xb6\xb8935,124,936,792.00000000000000' +xfmt11106 format -824368408240E0 '+,G' -> '-824,368,408,240' +xfmt11107 format 993112799120e321 ',.75' -> '9.93112799120E+332' +xfmt11108 format -520701473407E73 '\xe9\xa1\x97>.27' -> '-5.20701473407E+84' +xfmt11109 format 2230413573611758546180212902707869876E0 '\xe8\xb6\x97<%' -> '223041357361175854618021290270786987600%' +xfmt11110 format -7158056632209195023237867386641034747E0 '' -> '-7158056632209195023237867386641034747' +xfmt11111 format 1884287043692575059915945442443929804e130 '' -> '1.884287043692575059915945442443929804E+166' +xfmt11112 format -1926911998919424317412843964684001062E317 '\xe6\xb6\xb9^.73' -> '-1.926911998919424317412843964684001062E+353' +xfmt11113 format 348253353142155792817528062E0 '\xe7\xb9\xba>+72,.38e' -> '\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba\xe7\xb9\xba+3.48253353142155792817528062000000000000e+26' +xfmt11114 format -580163169927428193134834150E0 '\xe1\x81\x88=-38e' -> '-\xe1\x81\x88\xe1\x81\x88\xe1\x81\x88\xe1\x81\x88\xe1\x81\x885.80163169927428193134834150e+26' +xfmt11115 format 335758780240676962453321598e240 '0.83' -> '3.35758780240676962453321598E+266' +xfmt11116 format -704167643298487932793687318e212 '\xe6\xa7\xb9> 23,.14g' -> '\xe6\xa7\xb9\xe6\xa7\xb9-7.0416764329849e+238' +xfmt11117 format 72657115289828121217E0 '\xed\x90\x97>+90E' -> '\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97\xed\x90\x97+7.2657115289828121217E+19' +xfmt11118 format -60647809755910960748E0 '0,' -> '-60,647,809,755,910,960,748' +xfmt11119 format 66817697222877115102E26 '' -> '6.6817697222877115102E+45' +xfmt11120 format -95771361255475587661e214 '\xe1\xaf\x81=80,.46f' -> '-957,713,612,554,755,876,610,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000' +xfmt11121 format 5474978679E0 '\xe6\xbe\xa8^79,.97%' -> '547,497,867,900.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt11122 format -1693126294E0 '\xe5\x8b\x99>42,.28E' -> '\xe5\x8b\x99\xe5\x8b\x99\xe5\x8b\x99\xe5\x8b\x99\xe5\x8b\x99\xe5\x8b\x99\xe5\x8b\x99\xe5\x8b\x99-1.6931262940000000000000000000E+9' +xfmt11123 format 4730034619E60 '\xe7\xa9\x95=20,g' -> '\xe7\xa9\x95\xe7\xa9\x95\xe7\xa9\x95\xe7\xa9\x95\xe7\xa9\x954.730034619e+69' +xfmt11124 format -3235611413e309 ' 083,.94' -> '-000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,003.235611413E+318' +xfmt11125 format 304376873284841860571e0 '\xe1\x97\x81^ 5,.79F' -> ' 304,376,873,284,841,860,571.0000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11126 format -507684316261059751397e0 '\xed\x93\xa4<71,.3%' -> '-50,768,431,626,105,975,139,700.000%\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4\xed\x93\xa4' +xfmt11127 format 286087301855855603091e179 '\xee\xbe\xab>55,.1' -> '\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab\xee\xbe\xab3E+199' +xfmt11128 format -676529243023693448671E116 '-' -> '-6.76529243023693448671E+136' +xfmt11129 format 58661101481706229639077107543e0 '+,' -> '+58,661,101,481,706,229,639,077,107,543' +xfmt11130 format -63758434466229657770925151441e0 '0.29g' -> '-63758434466229657770925151441' +xfmt11131 format 14030684507501898383972676098e182 '\xe5\x83\x84^+64,.81f' -> '+1,403,068,450,750,189,838,397,267,609,800,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11132 format -74347256483634971804881531602E33 '\xef\x9b\x88=+95,.54G' -> '-\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x88\xef\x9b\x887.4347256483634971804881531602E+61' +xfmt11133 format 8348684868008838154566109598E0 '.48f' -> '8348684868008838154566109598.000000000000000000000000000000000000000000000000' +xfmt11134 format -8795903671908961965165922920e0 '\xe7\xbe\xa3^-48,.65e' -> '-8.79590367190896196516592292000000000000000000000000000000000000000e+27' +xfmt11135 format 1271251862487241860212682312e117 '\xe1\xbe\xb6<+23.33g' -> '+1.271251862487241860212682312e+144' +xfmt11136 format -8578853929683218741158535807e18 '\xe3\xa3\x97= 73.79e' -> '-8.5788539296832187411585358070000000000000000000000000000000000000000000000000000e+45' +xfmt11137 format 634714260915631225978778334473211e0 '036,G' -> '634,714,260,915,631,225,978,778,334,473,211' +xfmt11138 format -816355013596546986990850362135572E0 '\xe1\xa1\x98<-64,.15' -> '-8.16355013596547E+32\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98\xe1\xa1\x98' +xfmt11139 format 516568000832255449815378732481160e88 '\xe2\x81\x8e= 38.61%' -> ' 516568000832255449815378732481160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000%' +xfmt11140 format -309881612076292861422663943990669e174 '0.89' -> '-3.09881612076292861422663943990669E+206' +xfmt11141 format 2020365329366502481526411310541891E0 ' 088,.31g' -> ' 0,000,000,000,000,000,000,000,000,000,000,000,000,002.020365329366502481526411310542e+33' +xfmt11142 format -9224601632849443168797188654506601E0 '0,' -> '-9,224,601,632,849,443,168,797,188,654,506,601' +xfmt11143 format 5417048874086726678693091902247031e203 '+051,' -> '+000,000,005.417048874086726678693091902247031E+236' +xfmt11144 format -9092779384186253143974311229946272e51 ' .19e' -> '-9.0927793841862531440e+84' +xfmt11145 format 5365933022241e0 '' -> '5365933022241' +xfmt11146 format -1579513941758E0 '' -> '-1579513941758' +xfmt11147 format 4920513027042e82 '+03,G' -> '+4.920513027042E+94' +xfmt11148 format -6632295457824e189 '-0,g' -> '-6.632295457824e+201' +xfmt11149 format 29380E0 '\xe3\xb5\xbf<2,.6g' -> '29,380' +xfmt11150 format -97685E0 '\xee\xae\x96^-86,.97f' -> '-97,685.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11151 format 81292e308 '\xee\xa5\x87<76,.69' -> '8.1292E+312\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87\xee\xa5\x87' +xfmt11152 format -62387e215 '' -> '-6.2387E+219' +xfmt11153 format 6476877991500184499762930e0 '\xef\x9a\x86<-59,.63%' -> '647,687,799,150,018,449,976,293,000.000000000000000000000000000000000000000000000000000000000000000%' +xfmt11154 format -9329636906520080722886576e0 '77.37F' -> ' -9329636906520080722886576.0000000000000000000000000000000000000' +xfmt11155 format 5682697888112483412216596e187 '0.39' -> '5.682697888112483412216596E+211' +xfmt11156 format -8674219429109912845752763e295 '\xe8\x8b\x92=+,.76' -> '-8.674219429109912845752763E+319' +xfmt11157 format 3355630791721648787E0 '\xee\xbd\x8d^99.46e' -> '\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d3.3556307917216487870000000000000000000000000000e+18\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d\xee\xbd\x8d' +xfmt11158 format -1407307534822825913e0 '\xe0\xb6\x83^ 83,g' -> '\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83-1,407,307,534,822,825,913\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83\xe0\xb6\x83' +xfmt11159 format 6395554383698893571e128 '\xee\x94\x8b>-90,.59F' -> '639,555,438,369,889,357,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000' +xfmt11160 format -4230902107610406159e377 '\xef\x87\x92=95.89%' -> '-42309021076104061590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt11161 format 63281451719e0 '\xe3\x86\x8d< 30,.13G' -> ' 63,281,451,719\xe3\x86\x8d\xe3\x86\x8d\xe3\x86\x8d\xe3\x86\x8d\xe3\x86\x8d\xe3\x86\x8d\xe3\x86\x8d\xe3\x86\x8d\xe3\x86\x8d\xe3\x86\x8d\xe3\x86\x8d\xe3\x86\x8d\xe3\x86\x8d\xe3\x86\x8d\xe3\x86\x8d' +xfmt11162 format -11971202804e0 '\xeb\xa2\x88>+64,.19f' -> '\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88\xeb\xa2\x88-11,971,202,804.0000000000000000000' +xfmt11163 format 47621682464E54 '' -> '4.7621682464E+64' +xfmt11164 format -40058387444e127 '\xe8\x91\xa1^ 49' -> '\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1-4.0058387444E+137\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1\xe8\x91\xa1' +xfmt11165 format 352512043812028840118311884198990614e0 '\xe6\x89\x9e=68,.32F' -> '352,512,043,812,028,840,118,311,884,198,990,614.00000000000000000000000000000000' +xfmt11166 format -868748087843071988472373660046006174E0 '-032.25' -> '-08.687480878430719884723737E+35' +xfmt11167 format 993335797533629117292688473108278315e252 '0,.45E' -> '9.933357975336291172926884731082783150000000000E+287' +xfmt11168 format -372926153827273944797605692914193916e261 '' -> '-3.72926153827273944797605692914193916E+296' +xfmt11169 format 42785695634082548966200088E0 '\xee\xa6\xb6<+25,.48e' -> '+4.278569563408254896620008800000000000000000000000e+25' +xfmt11170 format -91756702277815302902484864e0 ' 0,.12' -> '-9.17567022778E+25' +xfmt11171 format 99015068247775939948611517e255 '085,.72E' -> '000,009.901506824777593994861151700000000000000000000000000000000000000000000000E+280' +xfmt11172 format -35771764451737368338225631E343 '\xe1\x97\xa3>+46,.97F' -> '-357,717,644,517,373,683,382,256,310,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11173 format 927979623220496e0 '0,.71' -> '927,979,623,220,496' +xfmt11174 format -404872625693294E0 '\xe1\xba\x8b^-80,.34e' -> '\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b-4.0487262569329400000000000000000000e+14\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b\xe1\xba\x8b' +xfmt11175 format 655023006190589E265 '+018,' -> '+6.55023006190589E+279' +xfmt11176 format -744884890570440e231 '0' -> '-7.44884890570440E+245' +xfmt11177 format 8527961122334892693980679934437696866951E0 '\xe4\xa0\x9b^+' -> '+8527961122334892693980679934437696866951' +xfmt11178 format -3832919558462548623910103396246895589360E0 '\xef\x90\x9c> 53,.19f' -> '-3,832,919,558,462,548,623,910,103,396,246,895,589,360.0000000000000000000' +xfmt11179 format 3344934648067884395338805493627304345828E229 '' -> '3.344934648067884395338805493627304345828E+268' +xfmt11180 format -5255252037354809824284037141056009515657e50 ' 44,G' -> '-5.255252037354809824284037141056009515657E+89' +xfmt11181 format 16106373101779914428583914902429244E0 ',' -> '16,106,373,101,779,914,428,583,914,902,429,244' +xfmt11182 format -39739764874251037585872368731955905E0 '\xef\xba\xa1>+87,.72f' -> '-39,739,764,874,251,037,585,872,368,731,955,905.000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11183 format 97002188775776733956106974756307355e248 '' -> '9.7002188775776733956106974756307355E+282' +xfmt11184 format -72622063520927092315787922163001158E211 '\xee\x90\xb4^7,G' -> '-7.2622063520927092315787922163001158E+245' +xfmt11185 format 209225250703938734318109062990044365873E0 '079' -> '0000000000000000000000000000000000000000209225250703938734318109062990044365873' +xfmt11186 format -917173206127929852629114027345396280502e0 '+69.78f' -> '-917173206127929852629114027345396280502.000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11187 format 940783503650264454374983551280319642074E105 '\xe9\xbe\x84^-76,.81e' -> '9.407835036502644543749835512803196420740000000000000000000000000000000000000000000e+143' +xfmt11188 format -812280439387668800561864883811651936416E171 '0,' -> '-8.12280439387668800561864883811651936416E+209' +xfmt11189 format 499785e0 '+0' -> '+499785' +xfmt11190 format -652060e0 '\xe4\x9b\xb0^ 29.89n' -> '\xe4\x9b\xb0\xe4\x9b\xb0\xe4\x9b\xb0\xe4\x9b\xb0\xe4\x9b\xb0\xe4\x9b\xb0\xe4\x9b\xb0\xe4\x9b\xb0\xe4\x9b\xb0\xe4\x9b\xb0\xe4\x9b\xb0-652060\xe4\x9b\xb0\xe4\x9b\xb0\xe4\x9b\xb0\xe4\x9b\xb0\xe4\x9b\xb0\xe4\x9b\xb0\xe4\x9b\xb0\xe4\x9b\xb0\xe4\x9b\xb0\xe4\x9b\xb0\xe4\x9b\xb0' +xfmt11191 format 408166e69 '' -> '4.08166E+74' +xfmt11192 format -711231E314 '+0' -> '-7.11231E+319' +xfmt11193 format 0E0 '\xea\xb5\xaa>+.21' -> '+0' +xfmt11194 format 0e0 '\xe8\x8a\xb2>.9F' -> '0.000000000' +xfmt11195 format 0e134 '\xef\xa5\x9b=+67,f' -> '+\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b\xef\xa5\x9b0' +xfmt11196 format 0e159 '\xee\x8e\xb3> 67,.11' -> '\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3\xee\x8e\xb3 0E+159' +xfmt11197 format 69180019782090e0 '\xe4\x8d\xa1<.3%' -> '6918001978209000.000%' +xfmt11198 format -17014687315740e0 '-76,.31E' -> ' -1.7014687315740000000000000000000E+13' +xfmt11199 format 79274665025306E378 '\xee\x83\x95= .8' -> ' 7.9274665E+391' +xfmt11200 format -13294651864572e107 ',' -> '-1.3294651864572E+120' +xfmt11201 format 30820842638020101727071e0 '\xe8\xa9\x9c<+73,.90e' -> '+3.082084263802010172707100000000000000000000000000000000000000000000000000000000000000000000e+22' +xfmt11202 format -86514349765340626373186e0 '\xea\x8e\x84<80,.90G' -> '-86,514,349,765,340,626,373,186\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84\xea\x8e\x84' +xfmt11203 format 90142445868009107335617e63 '60,' -> ' 9.0142445868009107335617E+85' +xfmt11204 format -18455757244847029764226e37 '\xe6\x90\x9f>-69,.41' -> '\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f\xe6\x90\x9f-1.8455757244847029764226E+59' +xfmt11205 format 812323164549463365620964e0 '\xe2\xb0\x9c>+29.95n' -> '\xe2\xb0\x9c\xe2\xb0\x9c\xe2\xb0\x9c\xe2\xb0\x9c+812323164549463365620964' +xfmt11206 format -309426444808118145214764E0 ',.49' -> '-309,426,444,808,118,145,214,764' +xfmt11207 format 698532210163405130249579e351 '0,.21' -> '6.98532210163405130250E+374' +xfmt11208 format -553042493589020326387732e18 '' -> '-5.53042493589020326387732E+41' +xfmt11209 format 2280347e0 '\xe9\xb0\x8e^ 57,.67e' -> ' 2.2803470000000000000000000000000000000000000000000000000000000000000e+6' +xfmt11210 format -5828435e0 '\xea\xa7\x96^ ' -> '-5828435' +xfmt11211 format 2777379E40 '\xe8\xba\xaf= ,.2%' -> ' 2,777,379,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00%' +xfmt11212 format -7700895e321 '+070,.90F' -> '-7,700,895,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11213 format 9602900552970168545358661295698e0 '' -> '9602900552970168545358661295698' +xfmt11214 format -1923460556474677260629675965961E0 '\xea\x83\xb2=+81,f' -> '-\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb2\xea\x83\xb21,923,460,556,474,677,260,629,675,965,961' +xfmt11215 format 3038172517737330074477967323826E182 '\xe9\x99\xbb= 88' -> ' \xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb\xe9\x99\xbb3.038172517737330074477967323826E+212' +xfmt11216 format -4525340703253872713673321740320e127 '+.45' -> '-4.525340703253872713673321740320E+157' +xfmt11217 format 368036735309535252592113653781641221503282E0 '\xea\xb9\x9a=' -> '368036735309535252592113653781641221503282' +xfmt11218 format -833136850495437548513349788317590720174648e0 '\xe7\xb2\xa4=-,.14' -> '-8.3313685049544E+41' +xfmt11219 format 975636606042404805186241476047369345744191e356 '\xe9\x85\x8b= 73.48' -> ' \xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b\xe9\x85\x8b9.75636606042404805186241476047369345744191E+397' +xfmt11220 format -447710104143594173552290167732105344252540e300 '\xef\x8d\xa8<.93' -> '-4.47710104143594173552290167732105344252540E+341' +xfmt11221 format 60E0 '\xeb\xb6\xb5^14,f' -> '\xeb\xb6\xb5\xeb\xb6\xb5\xeb\xb6\xb5\xeb\xb6\xb5\xeb\xb6\xb5\xeb\xb6\xb560\xeb\xb6\xb5\xeb\xb6\xb5\xeb\xb6\xb5\xeb\xb6\xb5\xeb\xb6\xb5\xeb\xb6\xb5' +xfmt11222 format -91e0 '023,.10e' -> '-0,000,009.1000000000e+1' +xfmt11223 format 71E56 '-48' -> ' 7.1E+57' +xfmt11224 format -66E219 '\xe8\xa8\x8a>-2,.48g' -> '-6.6e+220' +xfmt11225 format 12.12345678 '' -> '12.12345678' +xfmt11226 format -1234567890123456789.123456789012345678901 '\xeb\x81\x9a> 32,' -> '-1,234,567,890,123,456,789.123456789012345678901' +xfmt11227 format 8162552912711349153674011407601850E0 '\xeb\xb4\xa3>1,.82' -> '8,162,552,912,711,349,153,674,011,407,601,850' +xfmt11228 format -4932462699980131082183200004878486E0 ' ' -> '-4932462699980131082183200004878486' +xfmt11229 format 2239882143884340328563551956953214E55 '\xea\x84\x88<+19,.97e' -> '+2.2398821438843403285635519569532140000000000000000000000000000000000000000000000000000000000000000e+88' +xfmt11230 format -8272161275847580633825926945875888E115 '.15' -> '-8.27216127584758E+148' +xfmt11231 format 347919615e0 '\xe5\x80\xaf<.96' -> '347919615' +xfmt11232 format -653680480E0 ',.2' -> '-6.5E+8' +xfmt11233 format 139976285E31 '\xe7\xac\x9d^3,.22g' -> '1.39976285e+39' +xfmt11234 format -243706467e287 '\xe6\x9a\xa6^15,E' -> '-2.43706467E+295' +xfmt11235 format 93627961561532578553297988360307981037118E0 '\xe6\xa7\xb1> .32' -> ' 9.3627961561532578553297988360308E+40' +xfmt11236 format -47518319276374615698689132441843264379920e0 '\xe6\x96\x8e^+28,f' -> '-47,518,319,276,374,615,698,689,132,441,843,264,379,920' +xfmt11237 format 50649609708185898957710919800496989713343E41 '+0,' -> '+5.0649609708185898957710919800496989713343E+81' +xfmt11238 format -53032104369118170486407576849571683623179e36 '\xe8\xb0\x9d<+28,.20E' -> '-5.30321043691181704864E+76\xe8\xb0\x9d' +xfmt11239 format 164858965059662754551735761113E0 '\xe8\xbc\xb8>' -> '164858965059662754551735761113' +xfmt11240 format -628188017316608624445436007385E0 '88,.50' -> ' -628,188,017,316,608,624,445,436,007,385' +xfmt11241 format 630883686587498152767053867460e353 '-0,.94%' -> '6,308,836,865,874,981,527,670,538,674,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt11242 format -277852457732922727578114787557e191 '\xe9\x92\x93> .90%' -> '-2778524577329227275781147875570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt11243 format 10836650314085046338186402022782510844314384E0 '\xe7\xaa\xa6^-88,.16G' -> '\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa61.083665031408505E+43\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6\xe7\xaa\xa6' +xfmt11244 format -52111083508398759745670293094521218468584920e0 '\xeb\x9c\xb8^,.2' -> '-5.2E+43' +xfmt11245 format 27244284556769094865406812909477828184435313e94 '\xe0\xac\x8b^+.15' -> '+2.72442845567691E+137' +xfmt11246 format -71777627919590483372333846562468535215891191e177 '' -> '-7.1777627919590483372333846562468535215891191E+220' +xfmt11247 format 944318400006244290331689421E0 '+,.78' -> '+944,318,400,006,244,290,331,689,421' +xfmt11248 format -900069528535055870778139890e0 '\xe7\x8f\xa6> 77,.60%' -> '-90,006,952,853,505,587,077,813,989,000.000000000000000000000000000000000000000000000000000000000000%' +xfmt11249 format 841159139610076065086096679e335 '\xea\x99\x94< 35,' -> ' 8.41159139610076065086096679E+361\xea\x99\x94' +xfmt11250 format -875972755259047223493676025E209 '\xef\x8b\xaf^40,%' -> '-8,759,727,552,590,472,234,936,760,250,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt11251 format 7093891513536004603959e0 '-0' -> '7093891513536004603959' +xfmt11252 format -5290411464059865619926e0 '\xe5\x88\xb7>.71' -> '-5290411464059865619926' +xfmt11253 format 3412958155059572661443E18 '\xec\xa0\xb7<73.95' -> '3.412958155059572661443E+39\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7\xec\xa0\xb7' +xfmt11254 format -2510974902658081574318e383 ' 0n' -> '-2.510974902658081574318e+404' +xfmt11255 format 17070079408468149759778E0 '\xcc\x8d< 95.99n' -> ' 17070079408468149759778\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d\xcc\x8d' +xfmt11256 format -65295035040436722448898E0 '\xeb\xbd\xb4^34.80G' -> '\xeb\xbd\xb4\xeb\xbd\xb4\xeb\xbd\xb4\xeb\xbd\xb4\xeb\xbd\xb4-65295035040436722448898\xeb\xbd\xb4\xeb\xbd\xb4\xeb\xbd\xb4\xeb\xbd\xb4\xeb\xbd\xb4' +xfmt11257 format 15541392791245987265155e331 '.55' -> '1.5541392791245987265155E+353' +xfmt11258 format -53033387747256849325026E16 '-e' -> '-5.3033387747256849325026e+38' +xfmt11259 format 580536786584708461114905352493007E0 '-0' -> '580536786584708461114905352493007' +xfmt11260 format -446697489007333381681010919933651e0 ' .44' -> '-446697489007333381681010919933651' +xfmt11261 format 335795414604203455505265853941511E74 '\xe3\x82\x86>-85,.20G' -> '\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x86\xe3\x82\x863.3579541460420345551E+106' +xfmt11262 format -210678999761592788272383890217364e178 ' 67,.87g' -> ' -2.10678999761592788272383890217364e+210' +xfmt11263 format 4182684561661443e0 '' -> '4182684561661443' +xfmt11264 format -2200314336489671E0 '\xe4\xa0\x91>+17,.8f' -> '-2,200,314,336,489,671.00000000' +xfmt11265 format 9117861784792628e345 '\xeb\x94\xa5> ,.11' -> ' 9.1178617848E+360' +xfmt11266 format -1266714942383221e280 '+.11' -> '-1.2667149424E+295' +xfmt11267 format 21542368989651898E0 '\xe1\x81\xae<+19,.15G' -> '+2.15423689896519E+16' +xfmt11268 format -50638425392112144e0 ',' -> '-50,638,425,392,112,144' +xfmt11269 format 38107042325288894E216 ',' -> '3.8107042325288894E+232' +xfmt11270 format -97127816688990250E59 '\xec\x94\xb2< 74,E' -> '-9.7127816688990250E+75\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2\xec\x94\xb2' +xfmt11271 format 9448104019687096373141890027363041204E0 '\xed\x80\x84=,' -> '9,448,104,019,687,096,373,141,890,027,363,041,204' +xfmt11272 format -9031385880716129164729637244390253157E0 '\xe1\xa7\x8c>+72,.35g' -> '\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c\xe1\xa7\x8c-9.0313858807161291647296372443902532e+36' +xfmt11273 format 6892658173390957065241257432043505807e17 ' 4' -> ' 6.892658173390957065241257432043505807E+53' +xfmt11274 format -8566416702948882462875663000209904120e45 '\xe7\xb2\x84> 76,.99g' -> '\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84\xe7\xb2\x84-8.566416702948882462875663000209904120e+81' +xfmt11275 format 103593801128716670166940740237977073E0 '+094,.58g' -> '+0,000,000,000,000,000,000,000,000,000,000,000,103,593,801,128,716,670,166,940,740,237,977,073' +xfmt11276 format -941926713142755721892750064345012651E0 '+27.59n' -> '-941926713142755721892750064345012651' +xfmt11277 format 114697695441144790029930906856927545e333 '' -> '1.14697695441144790029930906856927545E+368' +xfmt11278 format -908554386853020129792267919019729273E41 '' -> '-9.08554386853020129792267919019729273E+76' +xfmt11279 format 6294184686492e0 '\xe7\x94\xb8=+71,.69' -> '+\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb8\xe7\x94\xb86,294,184,686,492' +xfmt11280 format -4268682544295E0 '\xe6\x8b\x84=+50,.74G' -> '-\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x84\xe6\x8b\x844,268,682,544,295' +xfmt11281 format 4965790520946E257 '\xe5\x84\xae^+,.10f' -> '+496,579,052,094,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000' +xfmt11282 format -6933904352701e223 '0,G' -> '-6.933904352701E+235' +xfmt11283 format 932839638112911E0 '059.40' -> '00000000000000000000000000000000000000000000932839638112911' +xfmt11284 format -826856679912728E0 '' -> '-826856679912728' +xfmt11285 format 186115889875677e241 '013,.75' -> '1.86115889875677E+255' +xfmt11286 format -586558477054671e50 '\xea\x99\xb5^-,f' -> '-58,655,847,705,467,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt11287 format 77938999662598223061076549404e0 '\xe3\xbc\xa7<.65n' -> '77938999662598223061076549404' +xfmt11288 format -34039843662968473175449206020e0 '' -> '-34039843662968473175449206020' +xfmt11289 format 88532572754284117517470580669e195 'G' -> '8.8532572754284117517470580669E+223' +xfmt11290 format -37507754503191971810393247439E366 '16n' -> '-3.7507754503191971810393247439e+394' +xfmt11291 format 52881377878E0 '\xcc\x8e> ,.83f' -> ' 52,881,377,878.00000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11292 format -15446184418e0 '\xe8\x91\x9b=+78,E' -> '-\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b\xe8\x91\x9b1.5446184418E+10' +xfmt11293 format 34067773448E179 '\xef\xb3\x86<,%' -> '340,677,734,480,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt11294 format -45619733449E49 '' -> '-4.5619733449E+59' +xfmt11295 format 3865237193599005249896219776341E0 '\xe8\xb6\x95<+77,.55F' -> '+3,865,237,193,599,005,249,896,219,776,341.0000000000000000000000000000000000000000000000000000000' +xfmt11296 format -5140592898423392938622611129562e0 '\xee\x85\x97^,.40E' -> '-5.1405928984233929386226111295620000000000E+30' +xfmt11297 format 6163257982115059386589001625795E113 '-0,' -> '6.163257982115059386589001625795E+143' +xfmt11298 format -2523205663185517596925845027142e82 '' -> '-2.523205663185517596925845027142E+112' +xfmt11299 format 9021101452289867247524136309895380437375e0 '78.98f' -> '9021101452289867247524136309895380437375.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11300 format -7079691868314507123294653540354880651966e0 '+066,.3F' -> '-0,000,007,079,691,868,314,507,123,294,653,540,354,880,651,966.000' +xfmt11301 format 7709924582152817033750018741040184191245e331 '' -> '7.709924582152817033750018741040184191245E+370' +xfmt11302 format -9312233305348175938561473773310130332259e228 '\xe4\x89\x9e=e' -> '-9.312233305348175938561473773310130332259e+267' +xfmt11303 format 563939793580132003976908597936682231439E0 '\xe9\xac\x96>-33,.94g' -> '563,939,793,580,132,003,976,908,597,936,682,231,439' +xfmt11304 format -152280291727221915789085572105548558988e0 '13,' -> '-152,280,291,727,221,915,789,085,572,105,548,558,988' +xfmt11305 format 171057360720155225145295801103194584281e96 '+' -> '+1.71057360720155225145295801103194584281E+134' +xfmt11306 format -846508932950610346480166850196479332174E53 '+' -> '-8.46508932950610346480166850196479332174E+91' +xfmt11307 format 640E0 '\xe9\xa5\x95>.24' -> '640' +xfmt11308 format -320e0 '-0,' -> '-320' +xfmt11309 format 483e340 'g' -> '4.83e+342' +xfmt11310 format -800e176 '-.52g' -> '-8.00e+178' +xfmt11311 format 2e0 '\xe4\x94\xbc^ 65,.33e' -> '\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc 2.000000000000000000000000000000000e+0\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc\xe4\x94\xbc' +xfmt11312 format -2e0 '' -> '-2' +xfmt11313 format 3e61 '\xe3\xa8\x99>-58,.47' -> '\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x99\xe3\xa8\x993E+61' +xfmt11314 format -4e381 '' -> '-4E+381' +xfmt11315 format 46424842483755345335e0 '-.3' -> '4.64E+19' +xfmt11316 format -77326957335443832782E0 '' -> '-77326957335443832782' +xfmt11317 format 61754704037369835965e19 '-11,' -> '6.1754704037369835965E+38' +xfmt11318 format -59635788339145617699e145 '' -> '-5.9635788339145617699E+164' +xfmt11319 format 24137894E0 '\xe9\xbd\xb8= 20,.67f' -> ' 24,137,894.0000000000000000000000000000000000000000000000000000000000000000000' +xfmt11320 format -26254058e0 '0' -> '-26254058' +xfmt11321 format 52386308e232 '\xea\x81\xb3> 16,.73' -> '\xea\x81\xb3 5.2386308E+239' +xfmt11322 format -28880778e339 '9,.42' -> '-2.8880778E+346' +xfmt11323 format 70E0 '\xec\x86\x96< .92' -> ' 70' +xfmt11324 format -88E0 '' -> '-88' +xfmt11325 format 21E65 '\xe9\x93\xab<73.65' -> '2.1E+66\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab\xe9\x93\xab' +xfmt11326 format -83e210 '\xe8\xa8\xaa<' -> '-8.3E+211' +xfmt11327 format 61239630817920492840054911684898850248e0 '\xe5\xbf\x9e^+95.61%' -> '+6123963081792049284005491168489885024800.0000000000000000000000000000000000000000000000000000000000000%' +xfmt11328 format -56627699745838829180160838872290572042E0 '\xe8\x88\x88>-.28' -> '-5.662769974583882918016083887E+37' +xfmt11329 format 72384952514961873314587293897434285327e296 '\xec\x8c\x91= ,.74F' -> ' 7,238,495,251,496,187,331,458,729,389,743,428,532,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11330 format -36291359815261743699421322500917905232E305 '' -> '-3.6291359815261743699421322500917905232E+342' +xfmt11331 format 999986288547038711808619872457457851762704E0 '\xe3\xb0\x8a^-%' -> '99998628854703871180861987245745785176270400%' +xfmt11332 format -218594657799522866648322474629205510794240E0 '%' -> '-21859465779952286664832247462920551079424000%' +xfmt11333 format 379179537011625772908153913861910893895475E283 '0,.58' -> '3.79179537011625772908153913861910893895475E+324' +xfmt11334 format -914335905720811571915907433624867851186208e365 '\xed\x86\x8b>-68,e' -> '\xed\x86\x8b\xed\x86\x8b\xed\x86\x8b\xed\x86\x8b\xed\x86\x8b\xed\x86\x8b\xed\x86\x8b\xed\x86\x8b\xed\x86\x8b\xed\x86\x8b\xed\x86\x8b\xed\x86\x8b\xed\x86\x8b\xed\x86\x8b\xed\x86\x8b\xed\x86\x8b\xed\x86\x8b\xed\x86\x8b\xed\x86\x8b-9.14335905720811571915907433624867851186208e+406' +xfmt11335 format 7322148263717113580291747034E0 '\xe4\xb5\x82<-99,' -> '7,322,148,263,717,113,580,291,747,034\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82\xe4\xb5\x82' +xfmt11336 format -4872546184927784925007663004E0 ' 88,.92f' -> '-4,872,546,184,927,784,925,007,663,004.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11337 format 1505902533539592527077931288e351 '\xe6\x89\x88<,.25G' -> '1.505902533539592527077931E+378' +xfmt11338 format -7989315907178578928349609005e62 '\xea\xb3\xad< 48,.17E' -> '-7.98931590717857893E+89\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad\xea\xb3\xad' +xfmt11339 format 96824864654506e0 '081.28' -> '000000000000000000000000000000000000000000000000000000000000000000096824864654506' +xfmt11340 format -43698521662901E0 ',' -> '-43,698,521,662,901' +xfmt11341 format 24687055940471e214 '\xe6\x95\xbe=-17,.13f' -> '246,870,559,404,710,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000' +xfmt11342 format -94255166593748E360 '.27f' -> '-94255166593748000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000' +xfmt11343 format 584750816218594869964175e0 ' 069.78E' -> ' 5.847508162185948699641750000000000000000000000000000000000000000000000000000000E+23' +xfmt11344 format -273606721067285664502680e0 '\xeb\x9c\xaa^+36,.60E' -> '-2.736067210672856645026800000000000000000000000000000000000000E+23' +xfmt11345 format 688368275042822955700356E54 '.75' -> '6.88368275042822955700356E+77' +xfmt11346 format -941824337448058044411716e345 '\xe5\xb5\x9f^-95,.14G' -> '\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f-9.4182433744806E+368\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f\xe5\xb5\x9f' +xfmt11347 format 1234567890123.123456789012345678 '80' -> ' 1234567890123.123456789012345678' +xfmt11348 format -12345. '\xe1\x9c\xa1>-71.63G' -> '\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1\xe1\x9c\xa1-12345' +xfmt11349 format 3040050530713E0 '\xed\x9d\x85>69,' -> '\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x85\xed\x9d\x853,040,050,530,713' +xfmt11350 format -5919100148613E0 '\xe4\x88\x81^+29.59e' -> '-5.91910014861300000000000000000000000000000000000000000000000e+12' +xfmt11351 format 7588673008509e108 '19' -> '7.588673008509E+120' +xfmt11352 format -7810099953430E47 '\xee\xb7\x9c^ 42,.10e' -> '\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c-7.8100999534e+59\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c\xee\xb7\x9c' +xfmt11353 format 704626E0 '\xe5\x9f\xa7^10.90E' -> '7.046260000000000000000000000000000000000000000000000000000000000000000000000000000000000000E+5' +xfmt11354 format -356453e0 '+085.40' -> '-000000000000000000000000000000000000000000000000000000000000000000000000000000356453' +xfmt11355 format 542276e348 '0' -> '5.42276E+353' +xfmt11356 format -679743e80 '\xc4\xa8=.16' -> '-6.79743E+85' +xfmt11357 format 7666574629616326428727554491689152911268320e0 '' -> '7666574629616326428727554491689152911268320' +xfmt11358 format -7992499285251031728735178988587255046309802e0 '.14' -> '-7.9924992852510E+42' +xfmt11359 format 5101347595623102399333134831537684471561727e336 '\xe0\xb8\x93=+.66' -> '+5.101347595623102399333134831537684471561727E+378' +xfmt11360 format -8202502188314138568826481283431873749052815e337 '\xeb\xad\xb9>1,.31f' -> '-82,025,021,883,141,385,688,264,812,834,318,737,490,528,150,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000' +xfmt11361 format 6286661988127340989321652485515613926e0 '\xef\xae\x9e^ 13,.3' -> '\xef\xae\x9e\xef\xae\x9e 6.29E+36\xef\xae\x9e\xef\xae\x9e' +xfmt11362 format -2273976448341374757172414515901622207E0 '.29' -> '-2.2739764483413747571724145159E+36' +xfmt11363 format 4732595330586439342963528560145341463E231 '\xea\x8c\xb3^+' -> '+4.732595330586439342963528560145341463E+267' +xfmt11364 format -1655107487226463376902263751244098250e357 '-.2f' -> '-1655107487226463376902263751244098250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00' +xfmt11365 format 116893223327896771324672E0 ' 0.2' -> ' 1.2E+23' +xfmt11366 format -499526165884357323266361e0 '-077,.5E' -> '-00,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,004.99526E+23' +xfmt11367 format 754619644989386709005540E295 '\xe6\xa1\x9b>+75.88g' -> '\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b\xe6\xa1\x9b+7.54619644989386709005540e+318' +xfmt11368 format -550762542207439780853691e7 '\xe3\xb5\xb3^-83,.77G' -> '\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3-5.50762542207439780853691E+30\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3\xe3\xb5\xb3' +xfmt11369 format 61138211441529585461776369913557514235783e0 '\xe1\xa7\xaf> 10,g' -> ' 61,138,211,441,529,585,461,776,369,913,557,514,235,783' +xfmt11370 format -46595265174541884272979947699299633313368E0 '\xe5\xb8\xae^5,.29' -> '-4.6595265174541884272979947699E+40' +xfmt11371 format 32608772940084398361163080629795275116355E120 '\xec\xa8\xaf=' -> '3.2608772940084398361163080629795275116355E+160' +xfmt11372 format -88786748247531420472694544859370958007791E347 '\xe2\xaa\x88= 42,.23F' -> '-8,878,674,824,753,142,047,269,454,485,937,095,800,779,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000' +xfmt11373 format 5337429877168926794E0 '67.52e' -> ' 5.3374298771689267940000000000000000000000000000000000e+18' +xfmt11374 format -2884526797553969508e0 '-.79' -> '-2884526797553969508' +xfmt11375 format 1410877526965491164e196 ' 33,' -> ' 1.410877526965491164E+214' +xfmt11376 format -1450638059026251379e148 '\xed\x88\xbb>-' -> '-1.450638059026251379E+166' +xfmt11377 format 609820931813818042898248330650E0 '\xe5\xbf\x95=-,.93' -> '609,820,931,813,818,042,898,248,330,650' +xfmt11378 format -329833203547713623731464120840e0 '\xeb\x9a\xa3>+.46' -> '-329833203547713623731464120840' +xfmt11379 format 823788860163335363273221852745e231 '\xe5\xa0\xbe^-72,.57E' -> '\xe5\xa0\xbe\xe5\xa0\xbe\xe5\xa0\xbe\xe5\xa0\xbe8.237888601633353632732218527450000000000000000000000000000E+260\xe5\xa0\xbe\xe5\xa0\xbe\xe5\xa0\xbe\xe5\xa0\xbe' +xfmt11380 format -904789755544809724930796820955E163 ',g' -> '-9.04789755544809724930796820955e+192' +xfmt11381 format 88882E0 ',.57e' -> '8.888200000000000000000000000000000000000000000000000000000e+4' +xfmt11382 format -57412e0 '+056,.53' -> '-000,000,000,000,000,000,000,000,000,000,000,000,057,412' +xfmt11383 format 90677e11 '042.89' -> '000000000000000000000000000000009.0677E+15' +xfmt11384 format -61284e346 '068' -> '-000000000000000000000000000000000000000000000000000000006.1284E+350' +xfmt11385 format 6995e0 '\xe3\xab\x84=-30.49' -> '\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x84\xe3\xab\x846995' +xfmt11386 format -7124e0 '+0,' -> '-7,124' +xfmt11387 format 1465e150 '019.55g' -> '0000000001.465e+153' +xfmt11388 format -2103E82 '0,F' -> '-21,030,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt11389 format 713381452520E0 'E' -> '7.13381452520E+11' +xfmt11390 format -512899604165e0 '\xe4\xb6\x85^22,.31G' -> '\xe4\xb6\x85\xe4\xb6\x85\xe4\xb6\x85-512,899,604,165\xe4\xb6\x85\xe4\xb6\x85\xe4\xb6\x85' +xfmt11391 format 574976593504e112 '\xe0\xa0\xb9^85.7' -> '\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb95.749766E+123\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9\xe0\xa0\xb9' +xfmt11392 format -371331285730e244 '' -> '-3.71331285730E+255' +xfmt11393 format 4194780753003834E0 '\xea\xb8\x85<+80,.87G' -> '+4,194,780,753,003,834\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85\xea\xb8\x85' +xfmt11394 format -7306067634192288e0 '0,' -> '-7,306,067,634,192,288' +xfmt11395 format 7259974459987981e20 '\xea\xb2\x9e>+13,.87G' -> '+7.259974459987981E+35' +xfmt11396 format -2274072681724691e339 ' 051,' -> '-0,000,000,000,000,000,000,002.274072681724691E+354' +xfmt11397 format 3233505269564661847653207458489322e0 '1.7' -> '3.233505E+33' +xfmt11398 format -3405929470020001003860747489637028E0 '-031%' -> '-340592947002000100386074748963702800%' +xfmt11399 format 7585058362737795835967304037150254E142 '\xeb\x8a\x84<' -> '7.585058362737795835967304037150254E+175' +xfmt11400 format -6833495803495763408462362217190074e100 '\xef\xa7\x94<26,.13g' -> '-6.833495803496e+133\xef\xa7\x94\xef\xa7\x94\xef\xa7\x94\xef\xa7\x94\xef\xa7\x94\xef\xa7\x94' +xfmt11401 format 1E0 ',e' -> '1e+0' +xfmt11402 format -3E0 '\xeb\xbd\x91^89.98' -> '\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91-3\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91\xeb\xbd\x91' +xfmt11403 format 6e59 '036%' -> '60000000000000000000000000000000000000000000000000000000000000%' +xfmt11404 format -7E329 '021' -> '-000000000000007E+329' +xfmt11405 format 28456361945611328440757846808e0 '61' -> ' 28456361945611328440757846808' +xfmt11406 format -73469116081508167969905397884E0 'f' -> '-73469116081508167969905397884' +xfmt11407 format 50380075176615409161591917593e205 '\xe8\x8b\xba<83,.36g' -> '5.0380075176615409161591917593e+233\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba\xe8\x8b\xba' +xfmt11408 format -96172407110504439145236364447e109 '0' -> '-9.6172407110504439145236364447E+137' +xfmt11409 format 6110284069589855558963232985E0 '+011' -> '+6110284069589855558963232985' +xfmt11410 format -5826009386409655788328892405e0 '' -> '-5826009386409655788328892405' +xfmt11411 format 6136469981713127274759601832E51 '46' -> ' 6.136469981713127274759601832E+78' +xfmt11412 format -7101326756098769678245898398E235 '\xe1\x80\xa9=99,.57' -> '-\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa9\xe1\x80\xa97.101326756098769678245898398E+262' +xfmt11413 format 24719215211719860698072261880996E0 '\xe0\xbc\xaa>-.39' -> '24719215211719860698072261880996' +xfmt11414 format -78489582604898078027871096221362E0 '\xe1\x93\x85< ' -> '-78489582604898078027871096221362' +xfmt11415 format 35056095537891488488183996746942E89 '054G' -> '00000000000000003.5056095537891488488183996746942E+120' +xfmt11416 format -61920377534981226151947273236394E364 '-90' -> ' -6.1920377534981226151947273236394E+395' +xfmt11417 format 305062792187439579e0 ' 011,.95G' -> ' 305,062,792,187,439,579' +xfmt11418 format -973886347260394662E0 '\xe9\x9a\x93=-34,.12%' -> '-97,388,634,726,039,466,200.000000000000%' +xfmt11419 format 738212906324625352E189 '\xe4\xad\xaa=+6,.80g' -> '+7.38212906324625352e+206' +xfmt11420 format -695623144594042361E315 'f' -> '-695623144594042361000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11421 format 218239688E0 '.13' -> '218239688' +xfmt11422 format -885217279e0 '\xe6\xb4\x8b<+16,.48E' -> '-8.852172790000000000000000000000000000000000000000E+8' +xfmt11423 format 431939289e125 '-' -> '4.31939289E+133' +xfmt11424 format -596272402E196 '\xe8\x90\xa3< 10' -> '-5.96272402E+204' +xfmt11425 format 8420228522776089815311446384842838743055e0 ' 090,.51f' -> ' 8,420,228,522,776,089,815,311,446,384,842,838,743,055.000000000000000000000000000000000000000000000000000' +xfmt11426 format -2235363009082232476795517609209311200810e0 '\xef\xa0\xad^+43.82f' -> '-2235363009082232476795517609209311200810.0000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11427 format 4704703450427073070581607189403074324772E340 '+016.45' -> '+4.704703450427073070581607189403074324772E+379' +xfmt11428 format -4948907996944363511925794043546952703832e65 '8,' -> '-4.948907996944363511925794043546952703832E+104' +xfmt11429 format 267244423639693346624325933655560853366454e0 '\xe4\x86\xa8<-90,g' -> '267,244,423,639,693,346,624,325,933,655,560,853,366,454\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8\xe4\x86\xa8' +xfmt11430 format -616817976660063771130094329665526169767835E0 '0,e' -> '-6.16817976660063771130094329665526169767835e+41' +xfmt11431 format 850486355346817441267032497161063912097272e172 '\xef\x80\x93<,.70' -> '8.50486355346817441267032497161063912097272E+213' +xfmt11432 format -914916468900880868860968743978777651582312e16 '\xe4\xb0\x9a< 20,.60f' -> '-9,149,164,689,008,808,688,609,687,439,787,776,515,823,120,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000' +xfmt11433 format 77E0 '+0,.95' -> '+77' +xfmt11434 format -50E0 '\xec\x98\x94<+70,.57G' -> '-50\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94\xec\x98\x94' +xfmt11435 format 58e210 '-05,G' -> '5.8E+211' +xfmt11436 format -74E279 '\xe8\x95\xb0^33,.93' -> '\xe8\x95\xb0\xe8\x95\xb0\xe8\x95\xb0\xe8\x95\xb0\xe8\x95\xb0\xe8\x95\xb0\xe8\x95\xb0\xe8\x95\xb0\xe8\x95\xb0\xe8\x95\xb0\xe8\x95\xb0\xe8\x95\xb0-7.4E+280\xe8\x95\xb0\xe8\x95\xb0\xe8\x95\xb0\xe8\x95\xb0\xe8\x95\xb0\xe8\x95\xb0\xe8\x95\xb0\xe8\x95\xb0\xe8\x95\xb0\xe8\x95\xb0\xe8\x95\xb0\xe8\x95\xb0' +xfmt11437 format 5952148149929056827494829e0 '\xe5\xa1\xa3>' -> '5952148149929056827494829' +xfmt11438 format -8625959656233506141784916e0 '\xe5\xb8\x9e^-56,.34' -> '\xe5\xb8\x9e\xe5\xb8\x9e\xe5\xb8\x9e\xe5\xb8\x9e\xe5\xb8\x9e\xe5\xb8\x9e\xe5\xb8\x9e\xe5\xb8\x9e\xe5\xb8\x9e\xe5\xb8\x9e\xe5\xb8\x9e-8,625,959,656,233,506,141,784,916\xe5\xb8\x9e\xe5\xb8\x9e\xe5\xb8\x9e\xe5\xb8\x9e\xe5\xb8\x9e\xe5\xb8\x9e\xe5\xb8\x9e\xe5\xb8\x9e\xe5\xb8\x9e\xe5\xb8\x9e\xe5\xb8\x9e' +xfmt11439 format 8766714419800227856673440E223 '\xec\x9b\xbf=+57,.20e' -> '+\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf\xec\x9b\xbf8.76671441980022785667e+247' +xfmt11440 format -6837196934422931799538783E82 ' 38.34n' -> ' -6.837196934422931799538783e+106' +xfmt11441 format 569524486678686E0 ' ,.37' -> ' 569,524,486,678,686' +xfmt11442 format -833770139494942E0 '+97' -> ' -833770139494942' +xfmt11443 format 557170922795721e0 '' -> '557170922795721' +xfmt11444 format -534475168198421e39 '' -> '-5.34475168198421E+53' +xfmt11445 format 37038924997625039715E0 '+59,.57E' -> '+3.703892499762503971500000000000000000000000000000000000000E+19' +xfmt11446 format -69702377428683118161E0 '\xee\xaf\xa6>+88,.3E' -> '\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6\xee\xaf\xa6-6.970E+19' +xfmt11447 format 31367112932283063231e243 '\xe9\xad\xb6<+,E' -> '+3.1367112932283063231E+262' +xfmt11448 format -26601065669227315923E122 '\xea\x87\xa5<+73.23F' -> '-2660106566922731592300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000' +xfmt11449 format 2468620052595108080389401026981e0 '\xe3\xae\x9b '2468620052595108080389401026981' +xfmt11450 format -3325588886052845401754615889882e0 '\xe6\x94\xaa^26.67' -> '-3325588886052845401754615889882' +xfmt11451 format 9855938775196877697648938556716E359 '022.5' -> '000000000009.8559E+389' +xfmt11452 format -7112588019064821034192316794430E132 '\xe3\xbb\x9a^+9,.47E' -> '-7.11258801906482103419231679443000000000000000000E+162' +xfmt11453 format 93452361957964330611085e0 '0,.33F' -> '93,452,361,957,964,330,611,085.000000000000000000000000000000000' +xfmt11454 format -46996514237427889487445E0 '\xe2\x83\xb7=-.75n' -> '-46996514237427889487445' +xfmt11455 format 59380558988286272359912E185 '25,.28' -> '5.9380558988286272359912E+207' +xfmt11456 format -54730907508431383224259E58 '\xea\x83\xbe<,.35' -> '-5.4730907508431383224259E+80' +xfmt11457 format 377361039242755376213850095610758e0 '.17' -> '3.7736103924275538E+32' +xfmt11458 format -195318126804239858493800569390721E0 ',' -> '-195,318,126,804,239,858,493,800,569,390,721' +xfmt11459 format 391789048984036046367172773861102e156 '\xe3\x93\xa3>+,.69%' -> '+39,178,904,898,403,604,636,717,277,386,110,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt11460 format -941636621444104387139980842171727E280 '' -> '-9.41636621444104387139980842171727E+312' +xfmt11461 format 530668070867777554161859248525929590849E0 '\xef\x95\x8b>+,.79e' -> '+5.3066807086777755416185924852592959084900000000000000000000000000000000000000000e+38' +xfmt11462 format -799623201673602901287366028013889297965E0 '+02,.99' -> '-799,623,201,673,602,901,287,366,028,013,889,297,965' +xfmt11463 format 176753995927491651829039900858211634133E2 '' -> '1.76753995927491651829039900858211634133E+40' +xfmt11464 format -801402454448163866928180305401273127755e353 '+090,.39' -> '-0,000,000,000,000,000,000,000,000,000,000,008.01402454448163866928180305401273127755E+391' +xfmt11465 format 0E0 '\xec\x87\x8b>21' -> '\xec\x87\x8b\xec\x87\x8b\xec\x87\x8b\xec\x87\x8b\xec\x87\x8b\xec\x87\x8b\xec\x87\x8b\xec\x87\x8b\xec\x87\x8b\xec\x87\x8b\xec\x87\x8b\xec\x87\x8b\xec\x87\x8b\xec\x87\x8b\xec\x87\x8b\xec\x87\x8b\xec\x87\x8b\xec\x87\x8b\xec\x87\x8b\xec\x87\x8b0' +xfmt11466 format 0E0 ' 48,.74' -> ' 0' +xfmt11467 format 0e34 '\xee\xa0\x8f> 1,.52%' -> ' 0.0000000000000000000000000000000000000000000000000000%' +xfmt11468 format 0E52 '\xe6\x9a\xa1>-' -> '0E+52' +xfmt11469 format 1234.1234567890123456789012 '' -> '1234.1234567890123456789012' +xfmt11470 format -123456789012345.1234567890123 '\xe6\x8e\xa0=+27,.11f' -> '-123,456,789,012,345.12345678901' +xfmt11471 format 738032574410223446981482183161e0 '\xe4\xac\xb3^+' -> '+738032574410223446981482183161' +xfmt11472 format -995702956369858548435948313276E0 '46.8' -> ' -9.9570296E+29' +xfmt11473 format 808823711850668349730053187198E48 '\xec\xa9\xb8> %' -> ' 80882371185066834973005318719800000000000000000000000000000000000000000000000000%' +xfmt11474 format -467722075611397374381056776152E103 '\xc2\x9f< 99,.26e' -> '-4.67722075611397374381056776e+132\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f\xc2\x9f' +xfmt11475 format 983977756833964487e0 ',E' -> '9.83977756833964487E+17' +xfmt11476 format -836378430783193822e0 '\xe3\x99\x96>+37.34G' -> '\xe3\x99\x96\xe3\x99\x96\xe3\x99\x96\xe3\x99\x96\xe3\x99\x96\xe3\x99\x96\xe3\x99\x96\xe3\x99\x96\xe3\x99\x96\xe3\x99\x96\xe3\x99\x96\xe3\x99\x96\xe3\x99\x96\xe3\x99\x96\xe3\x99\x96\xe3\x99\x96\xe3\x99\x96\xe3\x99\x96-836378430783193822' +xfmt11477 format 213063534255879350E375 '\xe4\x90\xac<40,.59e' -> '2.13063534255879350000000000000000000000000000000000000000000e+392' +xfmt11478 format -384290765458020575e113 '\xe4\x9a\x84> 76,.43E' -> '\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84\xe4\x9a\x84-3.8429076545802057500000000000000000000000000E+130' +xfmt11479 format 47806740886349414745867E0 '\xe6\x94\x9e> 68,f' -> '\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e\xe6\x94\x9e 47,806,740,886,349,414,745,867' +xfmt11480 format -13883410113601220860040E0 '\xe9\x96\x84<69,.16e' -> '-1.3883410113601221e+22\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84\xe9\x96\x84' +xfmt11481 format 54266414469195914360296E297 '0,' -> '5.4266414469195914360296E+319' +xfmt11482 format -28087603548838955922513e292 '+,e' -> '-2.8087603548838955922513e+314' +xfmt11483 format 59988378215292083080516086049700176523033658E0 '-83' -> ' 59988378215292083080516086049700176523033658' +xfmt11484 format -53633096516438323841247248372126598655720150e0 ' 015,.67%' -> '-5,363,309,651,643,832,384,124,724,837,212,659,865,572,015,000.0000000000000000000000000000000000000000000000000000000000000000000%' +xfmt11485 format 39332475011633743805383107916363347173057004e30 '\xe7\x81\x93>+96,.66' -> '\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93\xe7\x81\x93+3.9332475011633743805383107916363347173057004E+73' +xfmt11486 format -90040134732968755678308641925747757045641477e240 ',.93%' -> '-9,004,013,473,296,875,567,830,864,192,574,775,704,564,147,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt11487 format 7106282623080609499744394240458695303888e0 '' -> '7106282623080609499744394240458695303888' +xfmt11488 format -2862226601546017013061400163104425734057E0 '+,g' -> '-2,862,226,601,546,017,013,061,400,163,104,425,734,057' +xfmt11489 format 1374984049838245257533644782547143723275e135 '\xe5\x8e\xb5=-36,.60' -> '1.374984049838245257533644782547143723275E+174' +xfmt11490 format -3986436013958630880121649034102836677393e89 '\xe8\xb3\x8f^-,.39G' -> '-3.98643601395863088012164903410283667739E+128' +xfmt11491 format 115958721759657466804E0 '\xe6\x99\xbf>-27,.23%' -> '11,595,872,175,965,746,680,400.00000000000000000000000%' +xfmt11492 format -916535443975694914792e0 '\xe2\x8e\xaa= 92,E' -> '-\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa\xe2\x8e\xaa9.16535443975694914792E+20' +xfmt11493 format 746804665663173806976e88 '0,' -> '7.46804665663173806976E+108' +xfmt11494 format -135106338793214406880e35 '\xe5\xb0\x94< .69' -> '-1.35106338793214406880E+55' +xfmt11495 format 229395241638499901639732119E0 '' -> '229395241638499901639732119' +xfmt11496 format -849437168539917289801443189e0 '\xec\x8d\xbd=' -> '-849437168539917289801443189' +xfmt11497 format 327054602663467043012390340e247 '\xe5\x86\xa0^.51e' -> '3.270546026634670430123903400000000000000000000000000e+273' +xfmt11498 format -379593693722343989432197093e213 '\xe7\xbc\x9d>-,.51%' -> '-37,959,369,372,234,398,943,219,709,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000%' +xfmt11499 format 998835E0 '-' -> '998835' +xfmt11500 format -382559e0 ' ,e' -> '-3.82559e+5' +xfmt11501 format 301437E86 '' -> '3.01437E+91' +xfmt11502 format -460659e205 '\xef\x9e\xab^+11,.25G' -> '-4.60659E+210' +xfmt11503 format 9610720648865679244980e0 '\xe6\xaf\x89<87,.73' -> '9,610,720,648,865,679,244,980\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89\xe6\xaf\x89' +xfmt11504 format -9547331567206020810469E0 '\xe3\xb2\xa1^+49.78' -> '\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1-9547331567206020810469\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1\xe3\xb2\xa1' +xfmt11505 format 7554967071914659936286e96 '\xe2\x9f\x8f>+,.54e' -> '+7.554967071914659936286000000000000000000000000000000000e+117' +xfmt11506 format -5032237045813980480268E29 '\xea\xba\xa5^ 3n' -> '-5.032237045813980480268e+50' +xfmt11507 format 9730070609785104E0 '-0,' -> '9,730,070,609,785,104' +xfmt11508 format -8313691087950985e0 '\xeb\xa1\x9e>+47,.20' -> '\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e\xeb\xa1\x9e-8,313,691,087,950,985' +xfmt11509 format 3609747710395386E369 '\xe8\x98\x94> 92,.87E' -> ' 3.609747710395386000000000000000000000000000000000000000000000000000000000000000000000000E+384' +xfmt11510 format -5085320269044696e338 '+066,.75%' -> '-50,853,202,690,446,960,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt11511 format 257294550982825219260368322385786978e0 ' 0,.49g' -> ' 257,294,550,982,825,219,260,368,322,385,786,978' +xfmt11512 format -727872417219193631998497374074675375e0 '\xea\xb3\x89<52,.43' -> '-727,872,417,219,193,631,998,497,374,074,675,375\xea\xb3\x89\xea\xb3\x89\xea\xb3\x89\xea\xb3\x89' +xfmt11513 format 682576135931881143902570618718533373e101 '\xe7\x8e\x88>65,.51F' -> '68,257,613,593,188,114,390,257,061,871,853,337,300,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000' +xfmt11514 format -552294168157493027494162988021518896E58 '0.74f' -> '-5522941681574930274941629880215188960000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11515 format 10205027432914258e0 '\xe8\xbb\x9c<-50,.5' -> '1.0205E+16\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c\xe8\xbb\x9c' +xfmt11516 format -16480815342871610E0 '\xec\xbd\xa6= ,' -> '-16,480,815,342,871,610' +xfmt11517 format 87431037545821489e232 '' -> '8.7431037545821489E+248' +xfmt11518 format -55330785375532281E194 '\xe1\xbf\x97=92.24' -> '-\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x97\xe1\xbf\x975.5330785375532281E+210' +xfmt11519 format 0E0 '067' -> '0000000000000000000000000000000000000000000000000000000000000000000' +xfmt11520 format 0E0 '\xe7\x94\x8c=+,.27F' -> '+0.000000000000000000000000000' +xfmt11521 format 0e193 ',' -> '0E+193' +xfmt11522 format 0e367 '\xea\x88\xa8=-64,.3E' -> '\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa8\xea\x88\xa80.000E+370' +xfmt11523 format 4827505855400080684588739e0 '' -> '4827505855400080684588739' +xfmt11524 format -9879146239565253342526409E0 '\xe7\x80\x96>-37.10G' -> '\xe7\x80\x96\xe7\x80\x96\xe7\x80\x96\xe7\x80\x96\xe7\x80\x96\xe7\x80\x96\xe7\x80\x96\xe7\x80\x96\xe7\x80\x96\xe7\x80\x96\xe7\x80\x96\xe7\x80\x96\xe7\x80\x96\xe7\x80\x96\xe7\x80\x96\xe7\x80\x96\xe7\x80\x96\xe7\x80\x96\xe7\x80\x96\xe7\x80\x96\xe7\x80\x96-9.879146240E+24' +xfmt11525 format 8153360127309608142486999e118 '\xe4\x90\xa5^+80,.21f' -> '+81,533,601,273,096,081,424,869,990,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000' +xfmt11526 format -9171890546097477832981032E99 '-081,' -> '-00,000,000,000,000,000,000,000,000,000,000,000,009.171890546097477832981032E+123' +xfmt11527 format 751059707966313520702920120888517772597e0 '\xea\x9a\xa1< 95,g' -> ' 751,059,707,966,313,520,702,920,120,888,517,772,597\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1\xea\x9a\xa1' +xfmt11528 format -220508109812379407481409999334322266655e0 '' -> '-220508109812379407481409999334322266655' +xfmt11529 format 689357410413805041052128196172345740564E332 '\xe7\x95\xb9=-22,.33g' -> '6.89357410413805041052128196172346e+370' +xfmt11530 format -806600023711436461766869599090036544649E21 '\xef\x95\xbb<+88,.64f' -> '-806,600,023,711,436,461,766,869,599,090,036,544,649,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000' +xfmt11531 format 806788428383259135621783013666537e0 '\xe2\x9b\x93^,' -> '806,788,428,383,259,135,621,783,013,666,537' +xfmt11532 format -923614813666784100657729325719675E0 '\xef\xab\xa4<23' -> '-923614813666784100657729325719675' +xfmt11533 format 889130010822895666880176415763864E353 '\xe6\x8c\x88> 24,.62g' -> ' 8.89130010822895666880176415763864e+385' +xfmt11534 format -323240971837544961793638776769898E346 '\xe7\x9f\xb5<41,.9' -> '-3.23240972E+378\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5\xe7\x9f\xb5' +xfmt11535 format 642e0 '036.17g' -> '000000000000000000000000000000000642' +xfmt11536 format -469e0 '0,e' -> '-4.69e+2' +xfmt11537 format 380E74 '' -> '3.80E+76' +xfmt11538 format -818e166 '\xe2\x95\x84= ,.80F' -> '-8,180,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11539 format 76741469757536112365651541245e0 '\xe1\xaa\x90^ 79,.58G' -> '\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90 76,741,469,757,536,112,365,651,541,245\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90\xe1\xaa\x90' +xfmt11540 format -65907903278774545567122326442e0 '' -> '-65907903278774545567122326442' +xfmt11541 format 30616579686198984333336136583E268 '\xe5\x91\xa5<-37,.75f' -> '306,165,796,861,989,843,333,361,365,830,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11542 format -59183003439408622552718803990E88 '.26%' -> '-59183003439408622552718803990000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000%' +xfmt11543 format 7213470615522951526651419604e0 '\xe8\xb2\x8b^ 17.64E' -> ' 7.2134706155229515266514196040000000000000000000000000000000000000E+27' +xfmt11544 format -9992397851268190967861418355e0 '0.30f' -> '-9992397851268190967861418355.000000000000000000000000000000' +xfmt11545 format 4065299271869560951484890259E281 '\xe2\x99\x84<55.52F' -> '406529927186956095148489025900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000' +xfmt11546 format -7657030419779882419861864434e194 '\xe9\xbb\x8d^72.38%' -> '-76570304197798824198618644340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000%' +xfmt11547 format 2131080322521013952011345430350E0 '+' -> '+2131080322521013952011345430350' +xfmt11548 format -6276272322744650883066151337465E0 'F' -> '-6276272322744650883066151337465' +xfmt11549 format 1207813308452822333155538384235E26 '\xed\x8b\x8c<+73,.46E' -> '+1.2078133084528223331555383842350000000000000000E+56\xed\x8b\x8c\xed\x8b\x8c\xed\x8b\x8c\xed\x8b\x8c\xed\x8b\x8c\xed\x8b\x8c\xed\x8b\x8c\xed\x8b\x8c\xed\x8b\x8c\xed\x8b\x8c\xed\x8b\x8c\xed\x8b\x8c\xed\x8b\x8c\xed\x8b\x8c\xed\x8b\x8c\xed\x8b\x8c\xed\x8b\x8c\xed\x8b\x8c\xed\x8b\x8c\xed\x8b\x8c' +xfmt11550 format -5755084556232979874996386993915E229 '-024,.46g' -> '-5.755084556232979874996386993915e+259' +xfmt11551 format 549172970328464E0 '+36,.12%' -> '+54,917,297,032,846,400.000000000000%' +xfmt11552 format -286060528700562e0 '\xe0\xaf\x98>+3,.83G' -> '-286,060,528,700,562' +xfmt11553 format 288621521190767E58 '\xe9\x97\x93^52,.7f' -> '2,886,215,211,907,670,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000' +xfmt11554 format -579824009162447e176 '\xe3\xaa\xba=+69.37E' -> '-\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba\xe3\xaa\xba5.7982400916244700000000000000000000000E+190' +xfmt11555 format 39005418592202256014E0 '+0' -> '+39005418592202256014' +xfmt11556 format -78862744937809745051e0 '0' -> '-78862744937809745051' +xfmt11557 format 37748636348403218037e170 '\xe7\xa2\x89<-38,.44' -> '3.7748636348403218037E+189\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89\xe7\xa2\x89' +xfmt11558 format -70810891619077844254E40 '0' -> '-7.0810891619077844254E+59' +xfmt11559 format 28337374646432174209035640E0 '0.42' -> '28337374646432174209035640' +xfmt11560 format -46806011789231264836020877e0 '\xea\x9f\x9a<59,%' -> '-4,680,601,178,923,126,483,602,087,700%\xea\x9f\x9a\xea\x9f\x9a\xea\x9f\x9a\xea\x9f\x9a\xea\x9f\x9a\xea\x9f\x9a\xea\x9f\x9a\xea\x9f\x9a\xea\x9f\x9a\xea\x9f\x9a\xea\x9f\x9a\xea\x9f\x9a\xea\x9f\x9a\xea\x9f\x9a\xea\x9f\x9a\xea\x9f\x9a\xea\x9f\x9a\xea\x9f\x9a\xea\x9f\x9a\xea\x9f\x9a' +xfmt11561 format 90736885175271473578488671e155 '\xe5\x99\xa4=-43,e' -> '\xe5\x99\xa4\xe5\x99\xa4\xe5\x99\xa4\xe5\x99\xa4\xe5\x99\xa4\xe5\x99\xa4\xe5\x99\xa4\xe5\x99\xa4\xe5\x99\xa4\xe5\x99\xa4\xe5\x99\xa49.0736885175271473578488671e+180' +xfmt11562 format -27817956783983982575405477e162 ' 023,.50G' -> '-2.7817956783983982575405477E+187' +xfmt11563 format 32926829709E0 '\xe3\x8b\x80<-20.20g' -> '32926829709\xe3\x8b\x80\xe3\x8b\x80\xe3\x8b\x80\xe3\x8b\x80\xe3\x8b\x80\xe3\x8b\x80\xe3\x8b\x80\xe3\x8b\x80\xe3\x8b\x80' +xfmt11564 format -75268250049e0 '\xea\xa1\x9e^' -> '-75268250049' +xfmt11565 format 52779116225e285 '\xe4\x83\xad=,' -> '5.2779116225E+295' +xfmt11566 format -40163522277e348 '018,E' -> '-4.0163522277E+358' +xfmt11567 format 8589155284256335235942717447941792E0 '-,' -> '8,589,155,284,256,335,235,942,717,447,941,792' +xfmt11568 format -2270372354306816439308749777658106E0 '' -> '-2270372354306816439308749777658106' +xfmt11569 format 4671041575890239712077765108420955e66 ' 91,.67E' -> ' 4.6710415758902397120777651084209550000000000000000000000000000000000E+99' +xfmt11570 format -2027421564531507276463803759822863e37 '0,.25F' -> '-20,274,215,645,315,072,764,638,037,598,228,630,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000' +xfmt11571 format 8e0 '\xe9\xb1\xa6< 49,.70E' -> ' 8.0000000000000000000000000000000000000000000000000000000000000000000000E+0' +xfmt11572 format -2E0 '+' -> '-2' +xfmt11573 format 4e133 '59' -> ' 4E+133' +xfmt11574 format -3e271 '97' -> ' -3E+271' +xfmt11575 format 64023850583967717268741321562894E0 '\xe6\x9d\x9a^-.10' -> '6.402385058E+31' +xfmt11576 format -61184068756894088218384788922026e0 '\xea\x9a\x95>8,E' -> '-6.1184068756894088218384788922026E+31' +xfmt11577 format 27065963463866750911729022985553e138 '\xe0\xa6\xa0<-,.42g' -> '2.7065963463866750911729022985553e+169' +xfmt11578 format -43506642820863805548574622162877e116 '+0,' -> '-4.3506642820863805548574622162877E+147' +xfmt11579 format 2849848e0 '\xe9\x9d\x9f>-76,.71' -> '\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f\xe9\x9d\x9f2,849,848' +xfmt11580 format -4102294E0 '\xe8\x8d\x8a=,.49' -> '-4,102,294' +xfmt11581 format 8467971e193 '\xe2\x94\xbc<74,' -> '8.467971E+199\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc\xe2\x94\xbc' +xfmt11582 format -5673656E156 '\xe7\xbb\xac>-84,.35g' -> '\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac\xe7\xbb\xac-5.673656e+162' +xfmt11583 format 9986258110742e0 '\xc6\xa1< 69.61' -> ' 9986258110742\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1\xc6\xa1' +xfmt11584 format -5560012898460E0 ' ,.91' -> '-5,560,012,898,460' +xfmt11585 format 7835100188905e251 'G' -> '7.835100188905E+263' +xfmt11586 format -4191266343059e381 '\xea\xb8\xa3<+67,.71' -> '-4.191266343059E+393\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3\xea\xb8\xa3' +xfmt11587 format 944094100369e0 '63' -> ' 944094100369' +xfmt11588 format -531575984340e0 '\xe1\x9d\x90^ 68,.99F' -> '-531,575,984,340.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11589 format 480503052822E375 '' -> '4.80503052822E+386' +xfmt11590 format -332715055406E146 '\xee\x9e\xb5> 43,.38F' -> '-33,271,505,540,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000' +xfmt11591 format 12. ',' -> '12' +xfmt11592 format -123456789012.123 '\xe7\x9d\x85> ,.51g' -> '-123,456,789,012.123' +xfmt11593 format 1674547e0 '\xe3\xa0\x94>67.13F' -> '\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x94\xe3\xa0\x941674547.0000000000000' +xfmt11594 format -1231277e0 '\xe4\x8b\xa5=-,G' -> '-1,231,277' +xfmt11595 format 9979531e220 '-73%' -> '9979531000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt11596 format -5257977e165 '099.5' -> '-0000000000000000000000000000000000000000000000000000000000000000000000000000000000000005.2580E+171' +xfmt11597 format 73308581978096058127116347518986E0 '0,.28f' -> '73,308,581,978,096,058,127,116,347,518,986.0000000000000000000000000000' +xfmt11598 format -66031451185288642887531221543299E0 '\xe5\xa3\x9d<,F' -> '-66,031,451,185,288,642,887,531,221,543,299' +xfmt11599 format 98872302421207696996564806984744e316 '-075,.59' -> '00,000,000,000,000,000,000,000,000,009.8872302421207696996564806984744E+347' +xfmt11600 format -36587218131535499658638676837432E193 ' 0,.9G' -> '-3.65872181E+224' +xfmt11601 format 76817e0 '082F' -> '0000000000000000000000000000000000000000000000000000000000000000000000000000076817' +xfmt11602 format -55536E0 '\xec\xb4\xa5>-44,f' -> '\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5\xec\xb4\xa5-55,536' +xfmt11603 format 77451e299 '\xee\x87\xa7>-79,.39E' -> '\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa7\xee\x87\xa77.745100000000000000000000000000000000000E+303' +xfmt11604 format -90922E243 '18.26' -> ' -9.0922E+247' +xfmt11605 format 58308551939570491e0 '\xe8\xba\x87> ,' -> ' 58,308,551,939,570,491' +xfmt11606 format -94895079231056209E0 '\xe5\xba\x87^67,' -> '\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87-94,895,079,231,056,209\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87\xe5\xba\x87' +xfmt11607 format 98840513781863190e285 '-69,.26g' -> ' 9.8840513781863190e+301' +xfmt11608 format -62558402116117136E201 '0n' -> '-6.2558402116117136e+217' +xfmt11609 format 2608379276301434593276709883086E0 '\xe8\x83\x86^+19,.68e' -> '+2.60837927630143459327670988308600000000000000000000000000000000000000e+30' +xfmt11610 format -5990688596634763671994255695820e0 '-0,.76' -> '-5,990,688,596,634,763,671,994,255,695,820' +xfmt11611 format 1403243281392895819999642621597e129 ' 055,.55E' -> ' 1.4032432813928958199996426215970000000000000000000000000E+159' +xfmt11612 format -6084947046956808068202268119172e274 '' -> '-6.084947046956808068202268119172E+304' +xfmt11613 format 99328947391111530230944577994391498427212e0 '\xe8\xb8\x8b= 56,.7E' -> ' \xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b\xe8\xb8\x8b9.9328947E+40' +xfmt11614 format -12529565223361541464331274871444115078728E0 '055' -> '-000000000000012529565223361541464331274871444115078728' +xfmt11615 format 56843704021630958205386285711008520763218E248 '' -> '5.6843704021630958205386285711008520763218E+288' +xfmt11616 format -97286135995008701856097098947560362497104E205 '085,.50%' -> '-97,286,135,995,008,701,856,097,098,947,560,362,497,104,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000%' +xfmt11617 format 71514402405342338753651923245e0 '\xec\x8e\xa4>93,.25g' -> '\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa4\xec\x8e\xa47.151440240534233875365192e+28' +xfmt11618 format -78256890535335000904633513771E0 '\xe0\xba\xa1^78' -> '\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1-78256890535335000904633513771\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1\xe0\xba\xa1' +xfmt11619 format 96156423029459073233361712870e329 '\xef\xa9\xb5<16,.50f' -> '9,615,642,302,945,907,323,336,171,287,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000' +xfmt11620 format -42053455997670748739931640985E346 '' -> '-4.2053455997670748739931640985E+374' +xfmt11621 format 3389248011312148851393847055736129545e0 '\xe6\x90\x91= 54,.34e' -> ' \xe6\x90\x91\xe6\x90\x91\xe6\x90\x91\xe6\x90\x91\xe6\x90\x91\xe6\x90\x91\xe6\x90\x91\xe6\x90\x91\xe6\x90\x91\xe6\x90\x91\xe6\x90\x91\xe6\x90\x91\xe6\x90\x913.3892480113121488513938470557361295e+36' +xfmt11622 format -3995937637515198819212464559678072102e0 '\xeb\xb4\x80=51,G' -> '-\xeb\xb4\x803,995,937,637,515,198,819,212,464,559,678,072,102' +xfmt11623 format 5296892099584458050571190582585941458e272 '' -> '5.296892099584458050571190582585941458E+308' +xfmt11624 format -7851552255359374610639056107422761400e56 '' -> '-7.851552255359374610639056107422761400E+92' +xfmt11625 format 4298857245955251251074546430e0 '\xe4\xa4\xa1<,.14' -> '4.2988572459553E+27' +xfmt11626 format -3702094832565121102813604503E0 '\xe6\xb6\x88< 31,.37%' -> '-370,209,483,256,512,110,281,360,450,300.0000000000000000000000000000000000000%' +xfmt11627 format 6423727336755574702652104047e343 '\xea\xb0\x81<59,' -> '6.423727336755574702652104047E+370\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81\xea\xb0\x81' +xfmt11628 format -5389789646242622490633634835E8 '' -> '-5.389789646242622490633634835E+35' +xfmt11629 format 993445595775899295810911362e0 '\xe8\xa9\xaf<-90,e' -> '9.93445595775899295810911362e+26\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf\xe8\xa9\xaf' +xfmt11630 format -717639497040559313935705651e0 '' -> '-717639497040559313935705651' +xfmt11631 format 347394828034737287826495749E150 '\xee\x80\xa5^3' -> '3.47394828034737287826495749E+176' +xfmt11632 format -578415303232123229527889425e157 '\xef\xaf\xa3<+42,.54g' -> '-5.78415303232123229527889425e+183\xef\xaf\xa3\xef\xaf\xa3\xef\xaf\xa3\xef\xaf\xa3\xef\xaf\xa3\xef\xaf\xa3\xef\xaf\xa3\xef\xaf\xa3' +xfmt11633 format 1010961593795130314E0 '\xe5\x9a\xa3=+2.74F' -> '+1010961593795130314.00000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11634 format -5555345129143425108E0 '\xe3\xa7\x9f=-43.13' -> '-\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f\xe3\xa7\x9f5.555345129143E+18' +xfmt11635 format 7101662771107516328e235 '' -> '7.101662771107516328E+253' +xfmt11636 format -6239823548143062474E342 '\xeb\x86\x90=-69,.18%' -> '-623,982,354,814,306,247,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000%' +xfmt11637 format 68157595239955968226377945E0 '-E' -> '6.8157595239955968226377945E+25' +xfmt11638 format -33854301733478225073759281e0 '\xeb\xb1\xb8^50,G' -> '\xeb\xb1\xb8\xeb\xb1\xb8\xeb\xb1\xb8\xeb\xb1\xb8\xeb\xb1\xb8\xeb\xb1\xb8\xeb\xb1\xb8-33,854,301,733,478,225,073,759,281\xeb\xb1\xb8\xeb\xb1\xb8\xeb\xb1\xb8\xeb\xb1\xb8\xeb\xb1\xb8\xeb\xb1\xb8\xeb\xb1\xb8\xeb\xb1\xb8' +xfmt11639 format 69108103275648682594860954e323 '\xea\x87\xbc>18,.83g' -> '6.9108103275648682594860954e+348' +xfmt11640 format -50208405641745842135023670E257 '' -> '-5.0208405641745842135023670E+282' +xfmt11641 format 1474129389416e0 '+0,%' -> '+147,412,938,941,600%' +xfmt11642 format -4893021522276e0 '' -> '-4893021522276' +xfmt11643 format 3936981432425E265 '\xe4\xb8\x94>+91,g' -> '\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94\xe4\xb8\x94+3.936981432425e+277' +xfmt11644 format -3612830709428e277 '\xe4\xb5\xa3=-95,' -> '-\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa3\xe4\xb5\xa33.612830709428E+289' +xfmt11645 format 7558583041721850625945341343490134981020706e0 ' 96,.65' -> ' 7,558,583,041,721,850,625,945,341,343,490,134,981,020,706' +xfmt11646 format -9441151823050822744445209320305570838911822e0 '' -> '-9441151823050822744445209320305570838911822' +xfmt11647 format 5566411834905019399408091692144477464045021E346 '065,.36G' -> '0,000,000,000,000,000,005.56641183490501939940809169214447746E+388' +xfmt11648 format -5357567260969427955173796448981322648601700e204 '\xe7\x85\x94^,G' -> '-5.357567260969427955173796448981322648601700E+246' +xfmt11649 format 74395047636709249810e0 '84.98%' -> '7439504763670924981000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt11650 format -87985909796993242612E0 '' -> '-87985909796993242612' +xfmt11651 format 35864935926354635106e183 '-025.25g' -> '3.5864935926354635106e+202' +xfmt11652 format -47941640859372059016e324 '\xe2\x8c\x99<-29.85' -> '-4.7941640859372059016E+343\xe2\x8c\x99\xe2\x8c\x99' +xfmt11653 format 1070616624383610471484E0 '\xef\x8f\xa3=-74,.65' -> '\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa3\xef\x8f\xa31,070,616,624,383,610,471,484' +xfmt11654 format -3462909365945308400364E0 '-062,.14F' -> '-00,000,000,000,003,462,909,365,945,308,400,364.00000000000000' +xfmt11655 format 4647488150118307434319E67 '\xea\xa1\x84<' -> '4.647488150118307434319E+88' +xfmt11656 format -4682711694956872701080e311 '' -> '-4.682711694956872701080E+332' +xfmt11657 format 31625908869030030543318973014904582071E0 '08,f' -> '31,625,908,869,030,030,543,318,973,014,904,582,071' +xfmt11658 format -37765223900304933057507166703830366897E0 '0,.22F' -> '-37,765,223,900,304,933,057,507,166,703,830,366,897.0000000000000000000000' +xfmt11659 format 77593682961744997400118949157840572863e32 ' 0' -> ' 7.7593682961744997400118949157840572863E+69' +xfmt11660 format -96621327174930172394149698489978746055e383 '\xeb\x8b\xa8>-g' -> '-9.6621327174930172394149698489978746055e+420' +xfmt11661 format 120225879674882332558616915478e0 '\xec\x81\x85> 43,.78e' -> ' 1.202258796748823325586169154780000000000000000000000000000000000000000000000000e+29' +xfmt11662 format -913081705018105422973337549217E0 '.33' -> '-913081705018105422973337549217' +xfmt11663 format 228627887667562844564543757821E62 '\xe7\xb3\x96>36,e' -> '\xe7\xb3\x962.28627887667562844564543757821e+91' +xfmt11664 format -457909790824530135857754804426e32 '' -> '-4.57909790824530135857754804426E+61' +xfmt11665 format 71e0 '\xe5\x88\xa6>.33g' -> '71' +xfmt11666 format -34E0 '\xe3\x81\x8e^-,.51g' -> '-34' +xfmt11667 format 80e374 '' -> '8.0E+375' +xfmt11668 format -98e20 '\xef\x8f\xbf^-59,.74' -> '\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf-9.8E+21\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf\xef\x8f\xbf' +xfmt11669 format 0E0 '.65' -> '0' +xfmt11670 format 0e0 '+27,.84f' -> '+0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11671 format 0E41 ' 036,.29F' -> ' 0,000.00000000000000000000000000000' +xfmt11672 format 0e174 '\xe2\x9d\xb9^' -> '0E+174' +xfmt11673 format 89585139380229526775110e0 '\xe2\x9a\x8b^51,.4G' -> '\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b8.959E+22\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b\xe2\x9a\x8b' +xfmt11674 format -76193020724670543669712e0 ' 095,.65f' -> '-76,193,020,724,670,543,669,712.00000000000000000000000000000000000000000000000000000000000000000' +xfmt11675 format 62641964509998947830353E117 '\xe3\xbd\xb0<.58e' -> '6.2641964509998947830353000000000000000000000000000000000000e+139' +xfmt11676 format -99049742518422456618687E353 '\xe2\x8d\xb9<,.79g' -> '-9.9049742518422456618687e+375' +xfmt11677 format 761794036811412993089127741478480961E0 '\xe4\x93\xaa^,.87' -> '761,794,036,811,412,993,089,127,741,478,480,961' +xfmt11678 format -344014367941816454261444659670738264e0 '' -> '-344014367941816454261444659670738264' +xfmt11679 format 451652099817997233656699077615563596E230 ' 43.6' -> ' 4.51652E+265' +xfmt11680 format -377986893432785245939316389851973034e201 ',' -> '-3.77986893432785245939316389851973034E+236' +xfmt11681 format 615e0 '\xec\x89\x90<-,.48' -> '615' +xfmt11682 format -479E0 '+69,G' -> ' -479' +xfmt11683 format 781e293 '\xee\xa0\xb2>+.68f' -> '+78100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000000000000' +xfmt11684 format -863E296 '\xda\x8c^-' -> '-8.63E+298' +xfmt11685 format 614195177966E0 '' -> '614195177966' +xfmt11686 format -507713551697E0 '\xce\xa7> ' -> '-507713551697' +xfmt11687 format 232771058030E311 '0g' -> '2.32771058030e+322' +xfmt11688 format -189195063190e9 '' -> '-1.89195063190E+20' +xfmt11689 format 1465508325745262943463658547672034E0 '\xe0\xb0\xa1= 18' -> ' 1465508325745262943463658547672034' +xfmt11690 format -3916346387838093771622082076713845e0 '.4F' -> '-3916346387838093771622082076713845.0000' +xfmt11691 format 8740535129633622416785341574467411E189 '064' -> '0000000000000000000000008.740535129633622416785341574467411E+222' +xfmt11692 format -6452625189117264844766893342349294E103 '-67,.33G' -> ' -6.45262518911726484476689334234929E+136' +xfmt11693 format 33337668397008E0 '\xe3\x88\x9e^25,.10f' -> '33,337,668,397,008.0000000000' +xfmt11694 format -94039651021201E0 '\xe2\x8a\xa2=' -> '-94039651021201' +xfmt11695 format 60656843192744E185 '' -> '6.0656843192744E+198' +xfmt11696 format -14013081522895E131 '-' -> '-1.4013081522895E+144' +xfmt11697 format 172503022371613758641929956969007285099049e0 '\xed\x99\x96^+34' -> '+172503022371613758641929956969007285099049' +xfmt11698 format -652311421859501431680001882119766281147114E0 '\xe6\x87\x91>,.69g' -> '-652,311,421,859,501,431,680,001,882,119,766,281,147,114' +xfmt11699 format 150822715972048627677676161613630420543921e3 '0.98G' -> '1.50822715972048627677676161613630420543921E+44' +xfmt11700 format -558270072989481474268937025191980771471627e4 '\xea\xb2\x8a<36.1e' -> '-5.6e+45\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a\xea\xb2\x8a' +xfmt11701 format 1e0 '\xe8\xa0\xae<-11.22F' -> '1.0000000000000000000000' +xfmt11702 format -9E0 '013.54' -> '-000000000009' +xfmt11703 format 1e125 ' 81,%' -> ' 10,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt11704 format -5E313 '+' -> '-5E+313' +xfmt11705 format 909820546823827E0 '+0n' -> '+909820546823827' +xfmt11706 format -589198903257315e0 '-041,e' -> '-0,000,000,000,000,005.89198903257315e+14' +xfmt11707 format 702328016030025E257 '0f' -> '70232801603002500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11708 format -503538421181851E197 '.38' -> '-5.03538421181851E+211' +xfmt11709 format 376292E0 '-6,.97e' -> '3.7629200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+5' +xfmt11710 format -178239e0 '1' -> '-178239' +xfmt11711 format 501219E159 '0.8F' -> '501219000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.00000000' +xfmt11712 format -721609e317 '.96%' -> '-7216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt11713 format 123456789012345678.1234567890123 '0f' -> '123456789012345678.1234567890123' +xfmt11714 format -123456789.123456789 '\xe0\xb1\x81^ ,.83' -> '-123,456,789.123456789' +xfmt11715 format 69875136035E0 '\xe9\xa2\x99>-,%' -> '6,987,513,603,500%' +xfmt11716 format -81440330393e0 '\xe4\x89\xb6< 94,' -> '-81,440,330,393\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6\xe4\x89\xb6' +xfmt11717 format 23377446638E368 '\xe7\x96\x92<6,' -> '2.3377446638E+378' +xfmt11718 format -94532726194e238 ' 0,' -> '-9.4532726194E+248' +xfmt11719 format 571154538513268e0 '\xe2\x9e\xb6= 8,.22E' -> ' 5.7115453851326800000000E+14' +xfmt11720 format -106812313372200e0 ',' -> '-106,812,313,372,200' +xfmt11721 format 482314789527663e151 '.92' -> '4.82314789527663E+165' +xfmt11722 format -287990469254220E300 '\xec\xac\xad=+56.72' -> '-\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad\xec\xac\xad2.87990469254220E+314' +xfmt11723 format 5215753911830054431638104744E0 '020' -> '5215753911830054431638104744' +xfmt11724 format -2748278355949010571346349618E0 '+96' -> ' -2748278355949010571346349618' +xfmt11725 format 8623560854052763591311921643e225 '\xe8\xb2\xae^13,.18e' -> '8.623560854052763591e+252' +xfmt11726 format -5146083526842349434105216163E72 '16n' -> '-5.146083526842349434105216163e+99' +xfmt11727 format 1302746798E0 '\xe4\x9e\x89^+,f' -> '+1,302,746,798' +xfmt11728 format -6411608788E0 '\xe0\xb9\xb2^-.7F' -> '-6411608788.0000000' +xfmt11729 format 9381969522e71 '064e' -> '00000000000000000000000000000000000000000000000009.381969522e+80' +xfmt11730 format -4310466188E115 '+024' -> '-00000004.310466188E+124' +xfmt11731 format 4215109001038e0 '081g' -> '000000000000000000000000000000000000000000000000000000000000000000004215109001038' +xfmt11732 format -5226796449009e0 '' -> '-5226796449009' +xfmt11733 format 9679274247826e203 '\xeb\xb8\x82=74' -> '\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x82\xeb\xb8\x829.679274247826E+215' +xfmt11734 format -3150940468304e253 '\xe8\x84\xa7 '-3.150940468304E+265' +xfmt11735 format 834798E0 '' -> '834798' +xfmt11736 format -589314E0 '\xe3\x8b\x98^,' -> '-589,314' +xfmt11737 format 932526E121 '\xe5\x9e\x88>' -> '9.32526E+126' +xfmt11738 format -221210e301 '\xef\x9e\xab< 33,.13e' -> '-2.2121000000000e+306\xef\x9e\xab\xef\x9e\xab\xef\x9e\xab\xef\x9e\xab\xef\x9e\xab\xef\x9e\xab\xef\x9e\xab\xef\x9e\xab\xef\x9e\xab\xef\x9e\xab\xef\x9e\xab\xef\x9e\xab' +xfmt11739 format 10731481809859933669361012015818582456634e0 '\xe9\x88\xae=42,' -> '10,731,481,809,859,933,669,361,012,015,818,582,456,634' +xfmt11740 format -11064825636795943670190567102978449341860e0 '\xef\xbf\x8f=-30.27%' -> '-1106482563679594367019056710297844934186000.000000000000000000000000000%' +xfmt11741 format 74520159361181294276214372547898548575750e87 '\xe4\x97\xb2>.4' -> '7.452E+127' +xfmt11742 format -66441932898050445143499328626190172985517e325 '' -> '-6.6441932898050445143499328626190172985517E+365' +xfmt11743 format 99405911451511121308486e0 '0,.11g' -> '9.9405911452e+22' +xfmt11744 format -85218402833705109113587e0 '' -> '-85218402833705109113587' +xfmt11745 format 14214121451417433981341E198 '\xe6\xb9\xa5> 25,.37g' -> ' 1.4214121451417433981341e+220' +xfmt11746 format -68714487807349390692176E86 '+0' -> '-6.8714487807349390692176E+108' +xfmt11747 format 79335131843096985072858871e0 '+e' -> '+7.9335131843096985072858871e+25' +xfmt11748 format -68390216038698082174995523e0 '\xe6\xa4\xb2<+.78g' -> '-68390216038698082174995523' +xfmt11749 format 55586937678182971784662088e99 '\xe1\xa0\xab= 90.17' -> ' \xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab\xe1\xa0\xab5.5586937678182972E+124' +xfmt11750 format -52498027972981778387560757e0 '+.41' -> '-52498027972981778387560757' +xfmt11751 format 84628443205966353556165127161E0 '\xe2\xad\x84<+15,.41G' -> '+84,628,443,205,966,353,556,165,127,161' +xfmt11752 format -85073431972902624653469262815E0 '\xe5\xb3\xaa<83.87f' -> '-85073431972902624653469262815.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11753 format 73948356334668253327766589468E297 '\xe7\x88\x8a^89,.9g' -> '\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a7.39483563e+325\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a\xe7\x88\x8a' +xfmt11754 format -74118402498398274384190769356E344 '-0' -> '-7.4118402498398274384190769356E+372' +xfmt11755 format 490576886241E0 '' -> '490576886241' +xfmt11756 format -655949357077E0 '\xef\xb1\xb5=' -> '-655949357077' +xfmt11757 format 560836163533E349 '\xec\xa1\xba=+51,F' -> '+5,608,361,635,330,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt11758 format -786410780450E122 '\xe7\xaa\xa8=+29,.78e' -> '-7.864107804500000000000000000000000000000000000000000000000000000000000000000000e+133' +xfmt11759 format 519e0 '72,' -> ' 519' +xfmt11760 format -387e0 'e' -> '-3.87e+2' +xfmt11761 format 720E68 '\xe6\xb3\xbf>-29,e' -> '\xe6\xb3\xbf\xe6\xb3\xbf\xe6\xb3\xbf\xe6\xb3\xbf\xe6\xb3\xbf\xe6\xb3\xbf\xe6\xb3\xbf\xe6\xb3\xbf\xe6\xb3\xbf\xe6\xb3\xbf\xe6\xb3\xbf\xe6\xb3\xbf\xe6\xb3\xbf\xe6\xb3\xbf\xe6\xb3\xbf\xe6\xb3\xbf\xe6\xb3\xbf\xe6\xb3\xbf\xe6\xb3\xbf\xe6\xb3\xbf\xe6\xb3\xbf7.20e+70' +xfmt11762 format -746E137 '\xee\x97\x8a>-.5' -> '-7.46E+139' +xfmt11763 format 99332401060581568781e0 '\xe9\xb3\x8e=-,.31' -> '99,332,401,060,581,568,781' +xfmt11764 format -33741913528590407331e0 '' -> '-33741913528590407331' +xfmt11765 format 61278503564561432438e241 '\xe9\xa2\xac^31,.10e' -> '\xe9\xa2\xac\xe9\xa2\xac\xe9\xa2\xac\xe9\xa2\xac\xe9\xa2\xac\xe9\xa2\xac\xe9\xa2\xac6.1278503565e+260\xe9\xa2\xac\xe9\xa2\xac\xe9\xa2\xac\xe9\xa2\xac\xe9\xa2\xac\xe9\xa2\xac\xe9\xa2\xac' +xfmt11766 format -98793170178807158399e154 '+26F' -> '-987931701788071583990000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11767 format 9524502436696267421137429e0 '\xe5\xb4\x96< 30,.98g' -> ' 9,524,502,436,696,267,421,137,429' +xfmt11768 format -8114152539201978126789805E0 '\xe3\xa9\x83=+,f' -> '-8,114,152,539,201,978,126,789,805' +xfmt11769 format 3994147466781694146057131e338 '\xef\xb9\x9f<-83,.80E' -> '3.99414746678169414605713100000000000000000000000000000000000000000000000000000000E+362' +xfmt11770 format -2323449106487243808290267E342 '+0,.6e' -> '-2.323449e+366' +xfmt11771 format 470154248819509036141907698170585834102e0 '\xe3\xb9\xbb=-68.26' -> '\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb\xe3\xb9\xbb4.7015424881950903614190770E+38' +xfmt11772 format -267037700250842212297400932092434046622e0 ' 0,.7%' -> '-26,703,770,025,084,221,229,740,093,209,243,404,662,200.0000000%' +xfmt11773 format 358583004436472533915635544266913914498e149 '\xe5\xb4\x9b^-,.29e' -> '3.58583004436472533915635544267e+187' +xfmt11774 format -622207770042902083260444250997638625109E98 ' ' -> '-6.22207770042902083260444250997638625109E+136' +xfmt11775 format 308273463E0 '.55' -> '308273463' +xfmt11776 format -886934459E0 '\xe4\xb1\x92^+80,.35%' -> '\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92-88,693,445,900.00000000000000000000000000000000000%\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92\xe4\xb1\x92' +xfmt11777 format 280033596E8 '' -> '2.80033596E+16' +xfmt11778 format -196150648E147 '\xe2\xb1\xb9>f' -> '-196150648000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11779 format 0e0 '-' -> '0' +xfmt11780 format 0E0 '033,.15' -> '0,000,000,000,000,000,000,000,000' +xfmt11781 format 0e267 '\xe2\x9a\x94^93,.7f' -> '\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x940.0000000\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94\xe2\x9a\x94' +xfmt11782 format 0E145 '+' -> '+0E+145' +xfmt11783 format 841970495926630656081422773622876159140818E0 '\xea\x94\x92=,f' -> '841,970,495,926,630,656,081,422,773,622,876,159,140,818' +xfmt11784 format -311712832223904278081434276467304789961746e0 '' -> '-311712832223904278081434276467304789961746' +xfmt11785 format 345790789682609836844066840422091778116118e21 '\xe8\xb4\xae=-87.3' -> '\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae\xe8\xb4\xae3.46E+62' +xfmt11786 format -729013145499195783509993746396718542596000E346 '\xe3\x89\xa1<+.3' -> '-7.29E+387' +xfmt11787 format 9629105840161823372376821757398556e0 '\xe7\x81\x99>-.88F' -> '9629105840161823372376821757398556.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11788 format -1541346994786384452198327194044201E0 '095.89' -> '-0000000000000000000000000000000000000000000000000000000000001541346994786384452198327194044201' +xfmt11789 format 3167494845146329111724818390421115e57 '\xe6\xb8\x81> 60.77%' -> ' 316749484514632911172481839042111500000000000000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt11790 format -1322995854043105441277670687821843e62 '\xe9\x89\xaf^-74G' -> '\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf-1.322995854043105441277670687821843E+95\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf\xe9\x89\xaf' +xfmt11791 format 738651902133564457479638e0 '\xe3\xbd\xa1^-89,.61' -> '\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1738,651,902,133,564,457,479,638\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1\xe3\xbd\xa1' +xfmt11792 format -311633040121126041880393e0 '' -> '-311633040121126041880393' +xfmt11793 format 821696609786764962575474e325 '' -> '8.21696609786764962575474E+348' +xfmt11794 format -458827111542187925586133E61 '\xe8\x9f\xbd=-88,.5g' -> '-\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd\xe8\x9f\xbd4.5883e+84' +xfmt11795 format 6612267020454400912852476009430614636E0 ',F' -> '6,612,267,020,454,400,912,852,476,009,430,614,636' +xfmt11796 format -1454026684264339422826913996879964370e0 '\xe2\x8b\xbb^+79' -> '\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb-1454026684264339422826913996879964370\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb\xe2\x8b\xbb' +xfmt11797 format 3477614252022249888280523798457051971E172 '' -> '3.477614252022249888280523798457051971E+208' +xfmt11798 format -1937687058231118703482799129519971598E74 '\xe6\xae\xa6^26' -> '-1.937687058231118703482799129519971598E+110' +xfmt11799 format 3958683505189882009e0 '+098,%' -> '+0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,395,868,350,518,988,200,900%' +xfmt11800 format -7998309481582656820e0 '-02,' -> '-7,998,309,481,582,656,820' +xfmt11801 format 2781989476485073577e272 '\xe1\x8d\x88>+E' -> '+2.781989476485073577E+290' +xfmt11802 format -5964644033061850020E114 '\xe2\xb7\xa2<+5,F' -> '-5,964,644,033,061,850,020,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt11803 format 8E0 '\xe1\xb2\xa5> 75,.90F' -> ' 8.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11804 format -8e0 '0E' -> '-8E+0' +xfmt11805 format 7e202 '' -> '7E+202' +xfmt11806 format -4e235 '' -> '-4E+235' +xfmt11807 format 986795809631114142e0 ' ,.40' -> ' 986,795,809,631,114,142' +xfmt11808 format -636989651503167370e0 '' -> '-636989651503167370' +xfmt11809 format 207761989496398368E273 '\xe3\xa0\x92< 91,.46' -> ' 2.07761989496398368E+290\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92\xe3\xa0\x92' +xfmt11810 format -646748603445379847e200 '\xe0\xb8\xb3^ ' -> '-6.46748603445379847E+217' +xfmt11811 format 201940770246486349884804078842224321e0 ' 64,g' -> ' 201,940,770,246,486,349,884,804,078,842,224,321' +xfmt11812 format -628663977528008173853061658063299669E0 'e' -> '-6.28663977528008173853061658063299669e+35' +xfmt11813 format 612608782818492053370876604269622554E339 '+0%' -> '+61260878281849205337087660426962255400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt11814 format -858387986462068786961310520911218634e334 '+05,.36g' -> '-8.58387986462068786961310520911218634e+369' +xfmt11815 format 25820451252098696950488294898981976e0 '' -> '25820451252098696950488294898981976' +xfmt11816 format -54732681458132559268820553203916078E0 '\xe3\xba\x8b=4,.36' -> '-54,732,681,458,132,559,268,820,553,203,916,078' +xfmt11817 format 12783417349311574694288739026051416E142 '\xe8\x98\xa1>-30,.15E' -> '\xe8\x98\xa1\xe8\x98\xa1\xe8\x98\xa1\xe8\x98\xa1\xe8\x98\xa1\xe8\x98\xa1\xe8\x98\xa1\xe8\x98\xa11.278341734931157E+176' +xfmt11818 format -49129164596794227694388361500969848e22 '\xe1\xa1\x96^-55,%' -> '-49,129,164,596,794,227,694,388,361,500,969,848,000,000,000,000,000,000,000,000%' +xfmt11819 format 6644075750418640706943537380365299920764088E0 '+0.6' -> '+6.64408E+42' +xfmt11820 format -3926367977632316099757617157669907547722258E0 '\xeb\xa9\x92=+56,.71' -> '-3,926,367,977,632,316,099,757,617,157,669,907,547,722,258' +xfmt11821 format 6640335675079879862434334237133796225210809E309 '\xe4\xa4\x98^-74.95' -> '\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x986.640335675079879862434334237133796225210809E+351\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x98\xe4\xa4\x98' +xfmt11822 format -9667863172643809716024118281084192954142939e18 '\xe3\xb5\xb4>-,.99G' -> '-9.667863172643809716024118281084192954142939E+60' +xfmt11823 format 666262237965040490450621878518607E0 ' 81,.20e' -> ' 6.66262237965040490451e+32' +xfmt11824 format -272576316648698571547683399464664E0 '\xec\xaf\x84^ ,' -> '-272,576,316,648,698,571,547,683,399,464,664' +xfmt11825 format 399330058795113136638938655387382e61 '\xe8\xaa\x9d=-78,.77' -> '\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d\xe8\xaa\x9d3.99330058795113136638938655387382E+93' +xfmt11826 format -741416918471974617732766462727381e287 '-0%' -> '-7414169184719746177327664627273810000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt11827 format 6768E0 '' -> '6768' +xfmt11828 format -1664e0 '\xec\x9d\x93<+18.28%' -> '-166400.0000000000000000000000000000%' +xfmt11829 format 4021e211 '\xe5\x95\x83>-29,.83%' -> '4,021,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt11830 format -6004E332 '\xec\x97\x85= 56,' -> '-\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x85\xec\x97\x856.004E+335' +xfmt11831 format 12819330072007114810600655304111E0 '\xe5\xae\xb1<-.47' -> '12819330072007114810600655304111' +xfmt11832 format -94054771054243666058489061517398e0 '' -> '-94054771054243666058489061517398' +xfmt11833 format 35894619778970239927605320366666E114 '' -> '3.5894619778970239927605320366666E+145' +xfmt11834 format -45043881368329416003072131778597E70 ',.42' -> '-4.5043881368329416003072131778597E+101' +xfmt11835 format 123456.1234567 '' -> '123456.1234567' +xfmt11836 format -12345678901234567.12345678 '0,.2%' -> '-1,234,567,890,123,456,712.35%' +xfmt11837 format 5001873492847136586840161823977988e0 '\xe5\x89\x9d< ,e' -> ' 5.001873492847136586840161823977988e+33' +xfmt11838 format -6674058520771008163547804408995401E0 '\xcb\xb8<-,' -> '-6,674,058,520,771,008,163,547,804,408,995,401' +xfmt11839 format 6850812944088257070725313229876130E343 '\xe8\xaf\x9d^88,e' -> '\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d6.850812944088257070725313229876130e+376\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d\xe8\xaf\x9d' +xfmt11840 format -6294079705769208126029469316003976e180 '' -> '-6.294079705769208126029469316003976E+213' +xfmt11841 format 27910517642e0 '46.4%' -> ' 2791051764200.0000%' +xfmt11842 format -38955764393E0 '\xea\xb7\x9e^ ,f' -> '-38,955,764,393' +xfmt11843 format 52795228467E272 '\xec\xb3\xaf=+66,' -> '+\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf\xec\xb3\xaf5.2795228467E+282' +xfmt11844 format -85053167038e329 '\xeb\x90\xb8>+14,.52G' -> '-8.5053167038E+339' +xfmt11845 format 140302964491855184865916664327459889483246E0 '' -> '140302964491855184865916664327459889483246' +xfmt11846 format -404920434283843838382221913855220862635098e0 ',' -> '-404,920,434,283,843,838,382,221,913,855,220,862,635,098' +xfmt11847 format 607674072563153094856929801148218839541762e93 '\xe2\xb1\xa9 '6.07674072563153094856929801148218839541762E+134' +xfmt11848 format -405579935266354486160465281567942008858038e247 '' -> '-4.05579935266354486160465281567942008858038E+288' +xfmt11849 format 91563387224756699263719919635687109227756e0 '\xe4\xa9\xbe<-14.1E' -> '9.2E+40\xe4\xa9\xbe\xe4\xa9\xbe\xe4\xa9\xbe\xe4\xa9\xbe\xe4\xa9\xbe\xe4\xa9\xbe\xe4\xa9\xbe' +xfmt11850 format -32538409691081055716307088072480898960988e0 '\xe5\x9f\xb3<-69,.68' -> '-32,538,409,691,081,055,716,307,088,072,480,898,960,988\xe5\x9f\xb3\xe5\x9f\xb3\xe5\x9f\xb3\xe5\x9f\xb3\xe5\x9f\xb3\xe5\x9f\xb3\xe5\x9f\xb3\xe5\x9f\xb3\xe5\x9f\xb3\xe5\x9f\xb3\xe5\x9f\xb3\xe5\x9f\xb3\xe5\x9f\xb3\xe5\x9f\xb3' +xfmt11851 format 33829210188471856994849173220528887207046E162 '\xee\x8a\xb4> 59,.20' -> '\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4\xee\x8a\xb4 3.3829210188471856995E+202' +xfmt11852 format -31684950003837574732889784391333421941962e232 '\xe7\xb1\x88<+,e' -> '-3.1684950003837574732889784391333421941962e+272' +xfmt11853 format 401486250568965560274099198876037437e0 '69.21%' -> ' 40148625056896556027409919887603743700.000000000000000000000%' +xfmt11854 format -847055496414915541051334524673064611E0 '\xcd\x8c^ 76,' -> '\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c-847,055,496,414,915,541,051,334,524,673,064,611\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c\xcd\x8c' +xfmt11855 format 527642393403014161782599239777840299e376 '' -> '5.27642393403014161782599239777840299E+411' +xfmt11856 format -509726940002039316191562451926681475e272 '\xe8\xa1\xb0= 85,.4%' -> '-5,097,269,400,020,393,161,915,624,519,266,814,750,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000%' +xfmt11857 format 29305207043540495E0 '+090.38E' -> '+0000000000000000000000000000000000000000000002.93052070435404950000000000000000000000E+16' +xfmt11858 format -31466320545355680e0 '' -> '-31466320545355680' +xfmt11859 format 26893825650214880e361 '\xe9\x90\xa9^15,.29' -> '2.6893825650214880E+377' +xfmt11860 format -85845479540504418e37 '\xe3\xbd\x83=+19,.90f' -> '-858,454,795,405,044,180,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11861 format 629151241664511797570060e0 '' -> '629151241664511797570060' +xfmt11862 format -538581399326713820851271E0 '\xe7\x8e\xb7<' -> '-538581399326713820851271' +xfmt11863 format 468074898522562086726277E244 '\xe2\x85\xb8>+13,.54%' -> '+468,074,898,522,562,086,726,277,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.000000000000000000000000000000000000000000000000000000%' +xfmt11864 format -592008936567744836994660E269 ' 088,.21' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,005.92008936567744836995E+292' +xfmt11865 format 55677833543368335777068805750153247525e0 '022.96G' -> '55677833543368335777068805750153247525' +xfmt11866 format -36726691492963130362219470236231482174E0 ' 0e' -> '-3.6726691492963130362219470236231482174e+37' +xfmt11867 format 88976458752448404272554268184759004202E24 '\xe3\x91\x98> 23,e' -> ' 8.8976458752448404272554268184759004202e+61' +xfmt11868 format -87777673595662997127267420445266480456E205 '0g' -> '-8.7777673595662997127267420445266480456e+242' +xfmt11869 format 290596387876347557346917334592553352893e0 '19' -> '290596387876347557346917334592553352893' +xfmt11870 format -545990247041991530239666698646412845782E0 ' 81f' -> ' -545990247041991530239666698646412845782' +xfmt11871 format 230609033191241159500166584871677597972E67 '.56' -> '2.30609033191241159500166584871677597972E+105' +xfmt11872 format -443237465763576763127991672345869157415e75 '\xe6\xbf\x8f>51' -> '\xe6\xbf\x8f\xe6\xbf\x8f\xe6\xbf\x8f\xe6\xbf\x8f\xe6\xbf\x8f-4.43237465763576763127991672345869157415E+113' +xfmt11873 format 1643726063602366664264929E0 '\xec\xb7\x84^75' -> '\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x841643726063602366664264929\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84\xec\xb7\x84' +xfmt11874 format -8408499381321073496293002E0 '0' -> '-8408499381321073496293002' +xfmt11875 format 5542218766150530883133150e201 ' .40' -> ' 5.542218766150530883133150E+225' +xfmt11876 format -2874974516879620202855951E57 '\xe5\xbb\x9a=-53,.46e' -> '-2.8749745168796202028559510000000000000000000000e+81' +xfmt11877 format 565139E0 '\xe1\xbe\x9f=+55,.26e' -> '+\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f\xe1\xbe\x9f5.65139000000000000000000000e+5' +xfmt11878 format -373145e0 '\xe5\xb7\x85= 64,.72' -> '-\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85\xe5\xb7\x85373,145' +xfmt11879 format 673013e32 '\xe7\x99\xb1< ,.13f' -> ' 67,301,300,000,000,000,000,000,000,000,000,000,000.0000000000000' +xfmt11880 format -713545e57 '\xec\x86\x80=' -> '-7.13545E+62' +xfmt11881 format 991833526889882e0 '\xeb\xa5\xa2<+.85f' -> '+991833526889882.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11882 format -981543543807779E0 '\xef\xb0\x8f> 21,.37e' -> '-9.8154354380777900000000000000000000000e+14' +xfmt11883 format 555083927018289e289 '-30.94F' -> '5550839270182890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11884 format -133708273784450E170 '047E' -> '-00000000000000000000000001.33708273784450E+184' +xfmt11885 format 6609791169021574737882324955706231737E0 '' -> '6609791169021574737882324955706231737' +xfmt11886 format -8518728862820584411818637700613926369e0 '\xe5\xbc\x97>-9,.71' -> '-8,518,728,862,820,584,411,818,637,700,613,926,369' +xfmt11887 format 9037646798329967091527214281596584950e300 '\xee\x94\xbb<+86,.8' -> '+9.0376468E+336\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb\xee\x94\xbb' +xfmt11888 format -8503751323141056187425676282938748800E289 '\xee\xa4\xbc^31,.28f' -> '-85,037,513,231,410,561,874,256,762,829,387,488,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000' +xfmt11889 format 9455444935385856171442289115e0 '022G' -> '9455444935385856171442289115' +xfmt11890 format -7203016546593785045911493610e0 '\xea\xaf\xb6>-57,.99f' -> '-7,203,016,546,593,785,045,911,493,610.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11891 format 7982811384270071692580972188E200 '\xe5\xa0\x8d^+69,.37%' -> '+79,828,113,842,700,716,925,809,721,880,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000%' +xfmt11892 format -9648740814365366459325220905E26 '\xef\x90\x8e>-93G' -> '\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e\xef\x90\x8e-9.648740814365366459325220905E+53' +xfmt11893 format 91157935127870674282659690861173197049297695e0 '\xe3\x9c\x85>55,.4g' -> '\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x85\xe3\x9c\x859.116e+43' +xfmt11894 format -19241019500023159491680296735689629000486065e0 '-.63' -> '-19241019500023159491680296735689629000486065' +xfmt11895 format 62442245445347427003412134611054524245178873E361 '0.19' -> '6.244224544534742700E+404' +xfmt11896 format -14102821027455115570672878104134350276936684e346 '\xe3\xb5\xa7< ,' -> '-1.4102821027455115570672878104134350276936684E+389' +xfmt11897 format 6497799398218894751e0 ' ' -> ' 6497799398218894751' +xfmt11898 format -2061688437484099844E0 '+0' -> '-2061688437484099844' +xfmt11899 format 2200726561980318973e367 '\xe3\x87\xa3>49,' -> '\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa3\xe3\x87\xa32.200726561980318973E+385' +xfmt11900 format -2001860293379669386E302 '\xe9\x8d\x86<+19,f' -> '-200,186,029,337,966,938,600,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt11901 format 0E0 '\xe7\xb5\xbd^' -> '0' +xfmt11902 format 0e0 '\xea\x97\x82<9.91g' -> '0\xea\x97\x82\xea\x97\x82\xea\x97\x82\xea\x97\x82\xea\x97\x82\xea\x97\x82\xea\x97\x82\xea\x97\x82' +xfmt11903 format 0E242 '\xea\x96\xa8= 71' -> ' \xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa8\xea\x96\xa80E+242' +xfmt11904 format 0e148 '69,.20' -> ' 0E+148' +xfmt11905 format 59728684487121907966616331997523102E0 '\xe4\x97\xb2^-.59F' -> '59728684487121907966616331997523102.00000000000000000000000000000000000000000000000000000000000' +xfmt11906 format -39208340861858142555998698789600590E0 '53,.21G' -> ' -3.92083408618581425560E+34' +xfmt11907 format 94181356192183483367098601622753458e253 ',' -> '9.4181356192183483367098601622753458E+287' +xfmt11908 format -86688292463076403361911985522172771e169 '\xeb\xbc\xa4> .62' -> '-8.6688292463076403361911985522172771E+203' +xfmt11909 format 9238893e0 '\xea\x81\xbe= 77,.92f' -> ' 9,238,893.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11910 format -5049365e0 '\xe1\xb1\x92<86,.2E' -> '-5.05E+6\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92\xe1\xb1\x92' +xfmt11911 format 3752382E298 '\xe0\xb5\x91> F' -> ' 37523820000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11912 format -9474828E21 '+' -> '-9.474828E+27' +xfmt11913 format 19864e0 '\xec\xb3\x83< ,.4g' -> ' 1.986e+4' +xfmt11914 format -45023E0 '\xef\xb7\x87<+37,.97g' -> '-45,023\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87\xef\xb7\x87' +xfmt11915 format 48908e298 ',e' -> '4.8908e+302' +xfmt11916 format -94072E94 '0,' -> '-9.4072E+98' +xfmt11917 format 1532506880506510849638961702466e0 '28.40' -> '1532506880506510849638961702466' +xfmt11918 format -5391754449286747850742789295406e0 '\xe3\xba\xa9<-26,.20F' -> '-5,391,754,449,286,747,850,742,789,295,406.00000000000000000000' +xfmt11919 format 1727183084484184704550491468927E333 '\xe5\x8a\xbf<' -> '1.727183084484184704550491468927E+363' +xfmt11920 format -5995797742393608250670866396172E320 '\xcb\x8c^+4,.85e' -> '-5.9957977423936082506708663961720000000000000000000000000000000000000000000000000000000e+350' +xfmt11921 format 327637056E0 '' -> '327637056' +xfmt11922 format -389395171e0 '078' -> '-00000000000000000000000000000000000000000000000000000000000000000000389395171' +xfmt11923 format 873666816E294 '0,.73f' -> '873,666,816,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11924 format -448281526e309 ' 0' -> '-4.48281526E+317' +xfmt11925 format 69946960163550583773437E0 '\xe5\xa0\x98>-56,.21%' -> '6,994,696,016,355,058,377,343,700.000000000000000000000%' +xfmt11926 format -60254446478965747180124e0 '' -> '-60254446478965747180124' +xfmt11927 format 37390422926581835998890E373 '\xea\xb9\x9c>+44' -> '\xea\xb9\x9c\xea\xb9\x9c\xea\xb9\x9c\xea\xb9\x9c\xea\xb9\x9c\xea\xb9\x9c\xea\xb9\x9c\xea\xb9\x9c\xea\xb9\x9c\xea\xb9\x9c\xea\xb9\x9c\xea\xb9\x9c\xea\xb9\x9c\xea\xb9\x9c+3.7390422926581835998890E+395' +xfmt11928 format -99887462361275315831262e242 '\xe2\xbd\x99>-33,f' -> '-9,988,746,236,127,531,583,126,200,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt11929 format 6665982024322734161152E0 '\xe6\x9d\xa9=90,.21f' -> '\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa9\xe6\x9d\xa96,665,982,024,322,734,161,152.000000000000000000000' +xfmt11930 format -2013001847730559904765e0 '2' -> '-2013001847730559904765' +xfmt11931 format 5495932717197129019167E241 '\xe7\x91\xa3<' -> '5.495932717197129019167E+262' +xfmt11932 format -3833327810483789050538e6 '\xe7\xa5\xaa< 3,%' -> '-383,332,781,048,378,905,053,800,000,000%' +xfmt11933 format 8e0 '' -> '8' +xfmt11934 format -5E0 '\xe4\x84\x95<+7g' -> '-5\xe4\x84\x95\xe4\x84\x95\xe4\x84\x95\xe4\x84\x95\xe4\x84\x95' +xfmt11935 format 3e174 '042,' -> '0,000,000,000,000,000,000,000,000,003E+174' +xfmt11936 format -7E98 '\xe5\x96\x9b=-' -> '-7E+98' +xfmt11937 format 2075292305984589485512651358028213521627010e0 '\xe1\xb5\x87^-50,g' -> '2,075,292,305,984,589,485,512,651,358,028,213,521,627,010' +xfmt11938 format -3550346596531146891393843138136258483836802E0 '\xe1\x8d\x81> 91,e' -> '\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81\xe1\x8d\x81-3.550346596531146891393843138136258483836802e+42' +xfmt11939 format 2808225551395970797865683076993629196658906e299 '\xea\xa5\x9a^ 78,G' -> '\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a 2.808225551395970797865683076993629196658906E+341\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a\xea\xa5\x9a' +xfmt11940 format -9344909243780106286066068941339347198867145E20 '\xe2\xa8\xb4< 80,.27E' -> '-9.344909243780106286066068941E+62\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4\xe2\xa8\xb4' +xfmt11941 format 47328539179682465663598896523E0 ',.48E' -> '4.732853917968246566359889652300000000000000000000E+28' +xfmt11942 format -69025356655929404641476351063e0 '\xec\x8c\x88=-.71g' -> '-69025356655929404641476351063' +xfmt11943 format 67723481458432970719589962714E27 ' ,E' -> ' 6.7723481458432970719589962714E+55' +xfmt11944 format -30316963413263343995241326181E114 '' -> '-3.0316963413263343995241326181E+142' +xfmt11945 format 48378787e0 ' 82' -> ' 48378787' +xfmt11946 format -15197286e0 ' 097,e' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,001.5197286e+7' +xfmt11947 format 15340003e213 '74,.3e' -> ' 1.534e+220' +xfmt11948 format -72128054E69 ',%' -> '-7,212,805,400,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt11949 format 6354841638439e0 ',' -> '6,354,841,638,439' +xfmt11950 format -6654953025834e0 '-0,.77g' -> '-6,654,953,025,834' +xfmt11951 format 4768848433221E155 '' -> '4.768848433221E+167' +xfmt11952 format -2601572615256e225 '0' -> '-2.601572615256E+237' +xfmt11953 format 531359975893E0 '' -> '531359975893' +xfmt11954 format -611386843339E0 '\xe2\xbf\xad=-' -> '-611386843339' +xfmt11955 format 379378305974e207 '\xe7\xb9\xb6<+94,.30g' -> '+3.79378305974e+218\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6\xe7\xb9\xb6' +xfmt11956 format -171993489078e290 '054,.44g' -> '-0,000,000,000,000,000,000,000,000,001.71993489078e+301' +xfmt11957 format 123456789012.1234567890123456789 'f' -> '123456789012.1234567890123456789' +xfmt11958 format -123456789012345678. '.31' -> '-123456789012345678' +xfmt11959 format 182274580990455660875e0 '\xeb\xa7\xbb<+53,.82e' -> '+1.8227458099045566087500000000000000000000000000000000000000000000000000000000000000e+20' +xfmt11960 format -790453257446800309864E0 ' ' -> '-790453257446800309864' +xfmt11961 format 121966986928204247267E361 '+0E' -> '+1.21966986928204247267E+381' +xfmt11962 format -881090662180767609123E217 '\xe6\x92\xa4^+84,.73g' -> '\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4-8.81090662180767609123e+237\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4\xe6\x92\xa4' +xfmt11963 format 37441017885463760694e0 '' -> '37441017885463760694' +xfmt11964 format -48017075693720647763E0 '\xee\xbe\x90=+,.94G' -> '-48,017,075,693,720,647,763' +xfmt11965 format 94988110128028913987E209 'f' -> '9498811012802891398700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11966 format -86078392626472184987E267 '\xe9\xae\xb5>+99,.30g' -> '\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5\xe9\xae\xb5-8.6078392626472184987e+286' +xfmt11967 format 944694952464807941224789183037682297e0 ' ' -> ' 944694952464807941224789183037682297' +xfmt11968 format -459180209698486488451779111330441889E0 '\xe6\xb2\x92^-,.34' -> '-4.591802096984864884517791113304419E+35' +xfmt11969 format 226888513472153727683897244580046802e252 '\xe2\xbd\xb7^+29,.50E' -> '+2.26888513472153727683897244580046802000000000000000E+287' +xfmt11970 format -239148578857193560407280153746448778e145 ',' -> '-2.39148578857193560407280153746448778E+180' +xfmt11971 format 4568125877484070681558205425315991572304e0 '\xe7\xbf\x96=,.97' -> '4,568,125,877,484,070,681,558,205,425,315,991,572,304' +xfmt11972 format -1241016170147146652794356533535118770968E0 '\xea\x84\xab^-,' -> '-1,241,016,170,147,146,652,794,356,533,535,118,770,968' +xfmt11973 format 7597600083323960042730199303261549397736e143 '0.72' -> '7.597600083323960042730199303261549397736E+182' +xfmt11974 format -8511476975985890474293458817317812982995E233 '\xef\xbb\x85=' -> '-8.511476975985890474293458817317812982995E+272' +xfmt11975 format 666646709644896297390840743795073467539e0 '' -> '666646709644896297390840743795073467539' +xfmt11976 format -527318066475720943911926576467155103766E0 '+014,.34' -> '-5.273180664757209439119265764671551E+38' +xfmt11977 format 432985161671844561288287468216184882884e245 '\xe7\xa9\x98^ ,.36E' -> ' 4.329851616718445612882874682161848829E+283' +xfmt11978 format -726158671063922728032104434999849757613e314 '\xea\x87\xa4< 40,.98E' -> '-7.26158671063922728032104434999849757613000000000000000000000000000000000000000000000000000000000000E+352' +xfmt11979 format 87877881905727069022830743e0 '\xe5\x81\xac^32.98' -> '\xe5\x81\xac\xe5\x81\xac\xe5\x81\xac87877881905727069022830743\xe5\x81\xac\xe5\x81\xac\xe5\x81\xac' +xfmt11980 format -89032269383303745606451287e0 '' -> '-89032269383303745606451287' +xfmt11981 format 49783923371746780498536447E128 '\xea\xa7\x93=-,.94F' -> '4,978,392,337,174,678,049,853,644,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt11982 format -55295954156492352280594931e199 'g' -> '-5.5295954156492352280594931e+224' +xfmt11983 format 19805310425224483E0 ',' -> '19,805,310,425,224,483' +xfmt11984 format -70224847709241506E0 '\xef\xad\x87^-,' -> '-70,224,847,709,241,506' +xfmt11985 format 89925094438399797E53 '\xec\xad\xa7<+11,.61f' -> '+8,992,509,443,839,979,700,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000' +xfmt11986 format -53712248701533460e270 '+071,.67g' -> '-0,000,000,000,000,000,000,000,000,000,000,000,005.3712248701533460e+286' +xfmt11987 format 4E0 '+' -> '+4' +xfmt11988 format -9e0 '\xec\xa8\xaa^,.29f' -> '-9.00000000000000000000000000000' +xfmt11989 format 2E119 'e' -> '2e+119' +xfmt11990 format -3E15 '\xea\xb0\x8a=-20,.9g' -> '-\xea\xb0\x8a\xea\xb0\x8a\xea\xb0\x8a\xea\xb0\x8a\xea\xb0\x8a\xea\xb0\x8a\xea\xb0\x8a\xea\xb0\x8a\xea\xb0\x8a\xea\xb0\x8a\xea\xb0\x8a\xea\xb0\x8a\xea\xb0\x8a\xea\xb0\x8a3e+15' +xfmt11991 format 9299323e0 '62e' -> ' 9.299323e+6' +xfmt11992 format -2047557E0 '\xec\x9c\xa3^+18,.96G' -> '\xec\x9c\xa3\xec\x9c\xa3\xec\x9c\xa3\xec\x9c\xa3-2,047,557\xec\x9c\xa3\xec\x9c\xa3\xec\x9c\xa3\xec\x9c\xa3' +xfmt11993 format 4993543e32 '\xe2\xbc\x9c= .23' -> ' 4.993543E+38' +xfmt11994 format -2100019E253 '\xe6\x9b\xa1^ 73,.57g' -> '\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1-2.100019e+259\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1\xe6\x9b\xa1' +xfmt11995 format 20e0 '\xef\xb9\x8f>+,.44E' -> '+2.00000000000000000000000000000000000000000000E+1' +xfmt11996 format -93e0 '.59' -> '-93' +xfmt11997 format 53E91 '' -> '5.3E+92' +xfmt11998 format -71E202 '\xe9\xa0\x87^-57,.4e' -> '\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87-7.1000e+203\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87\xe9\xa0\x87' +xfmt11999 format 85033409173875280097581707162945865264616767E0 ',' -> '85,033,409,173,875,280,097,581,707,162,945,865,264,616,767' +xfmt12000 format -42189715337287388112894193420484825382324364E0 '+098,.85e' -> '-000,004.2189715337287388112894193420484825382324364000000000000000000000000000000000000000000e+43' +xfmt12001 format 92713778474929404580776904696212016645181950e20 '\xee\xba\xaf> 90,.83' -> '\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf\xee\xba\xaf 9.2713778474929404580776904696212016645181950E+63' +xfmt12002 format -84098325174164070550333746230500506018144798e56 '-' -> '-8.4098325174164070550333746230500506018144798E+99' +xfmt12003 format 891799947055741108809781594767e0 '\xe6\xa3\x98^77.66E' -> '\xe6\xa3\x98\xe6\xa3\x988.917999470557411088097815947670000000000000000000000000000000000000E+29\xe6\xa3\x98\xe6\xa3\x98\xe6\xa3\x98' +xfmt12004 format -160065125596776863042540932585e0 '-0' -> '-160065125596776863042540932585' +xfmt12005 format 413390224011076062759199563235E99 '+,%' -> '+41,339,022,401,107,606,275,919,956,323,500,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000%' +xfmt12006 format -262042896571059270877728579623E376 '\xe3\x91\x9e<91.41' -> '-2.62042896571059270877728579623E+405\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e\xe3\x91\x9e' +xfmt12007 format 0E0 '\xe9\x8b\x90^-,E' -> '0E+0' +xfmt12008 format 0e0 '18.9' -> ' 0' +xfmt12009 format 0e310 '\xe4\x85\xab=27.1G' -> '\xe4\x85\xab\xe4\x85\xab\xe4\x85\xab\xe4\x85\xab\xe4\x85\xab\xe4\x85\xab\xe4\x85\xab\xe4\x85\xab\xe4\x85\xab\xe4\x85\xab\xe4\x85\xab\xe4\x85\xab\xe4\x85\xab\xe4\x85\xab\xe4\x85\xab\xe4\x85\xab\xe4\x85\xab\xe4\x85\xab\xe4\x85\xab\xe4\x85\xab\xe4\x85\xab0E+310' +xfmt12010 format 0e130 '\xee\x84\xb7>84,.59e' -> '\xee\x84\xb7\xee\x84\xb7\xee\x84\xb7\xee\x84\xb7\xee\x84\xb7\xee\x84\xb7\xee\x84\xb7\xee\x84\xb7\xee\x84\xb7\xee\x84\xb7\xee\x84\xb7\xee\x84\xb7\xee\x84\xb7\xee\x84\xb7\xee\x84\xb7\xee\x84\xb7\xee\x84\xb7\xee\x84\xb70.00000000000000000000000000000000000000000000000000000000000e+189' +xfmt12011 format 4535334507457886451943872041409751E0 '\xe4\x98\xa9^.56n' -> '4535334507457886451943872041409751' +xfmt12012 format -4573346252409179566283345642432011e0 '\xe3\xab\x95^-34,%' -> '-457,334,625,240,917,956,628,334,564,243,201,100%' +xfmt12013 format 3987452640243157581530040330388476e15 '\xe4\x85\x86^+,' -> '+3.987452640243157581530040330388476E+48' +xfmt12014 format -8497865206260025484676228988208489e290 '0' -> '-8.497865206260025484676228988208489E+323' +xfmt12015 format 841704883246970506E0 '' -> '841704883246970506' +xfmt12016 format -961151057070993965E0 '\xe3\x8b\x91>+67,.58f' -> '-961,151,057,070,993,965.0000000000000000000000000000000000000000000000000000000000' +xfmt12017 format 194757908669284591E148 '\xe9\x8f\x94^ 93,.17g' -> '\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94 1.9475790866928459e+165\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94\xe9\x8f\x94' +xfmt12018 format -355374122566069631E145 '+064.84F' -> '-3553741225660696310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt12019 format 49674204314489395552431e0 '\xeb\xa6\xbf> 68,.54g' -> '\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf\xeb\xa6\xbf 49,674,204,314,489,395,552,431' +xfmt12020 format -51198793866531308559400E0 '' -> '-51198793866531308559400' +xfmt12021 format 46333198328774559041666e281 '\xe5\x9a\xaf=-34,.13E' -> '\xe5\x9a\xaf\xe5\x9a\xaf\xe5\x9a\xaf\xe5\x9a\xaf\xe5\x9a\xaf\xe5\x9a\xaf\xe5\x9a\xaf\xe5\x9a\xaf\xe5\x9a\xaf\xe5\x9a\xaf\xe5\x9a\xaf\xe5\x9a\xaf\xe5\x9a\xaf\xe5\x9a\xaf4.6333198328775E+303' +xfmt12022 format -87977061286075420996577e143 '.28' -> '-8.7977061286075420996577E+165' +xfmt12023 format 2226561340687708182968e0 '\xe3\xb9\xa6< ,.44' -> ' 2,226,561,340,687,708,182,968' +xfmt12024 format -1499743397928246874475E0 '085,.35' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,001,499,743,397,928,246,874,475' +xfmt12025 format 5300790271020303477162e354 '031,.50g' -> '0,005.300790271020303477162e+375' +xfmt12026 format -9923983131593779585622E64 ',.66' -> '-9.923983131593779585622E+85' +xfmt12027 format 4784293425974803E0 '' -> '4784293425974803' +xfmt12028 format -6421259210752615e0 '\xe8\xb2\xba^ 47,.88%' -> '-642,125,921,075,261,500.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt12029 format 7893729264932180e191 '0g' -> '7.893729264932180e+206' +xfmt12030 format -4396250764781658e37 '' -> '-4.396250764781658E+52' +xfmt12031 format 6064E0 '0' -> '6064' +xfmt12032 format -1479E0 ',.40f' -> '-1,479.0000000000000000000000000000000000000000' +xfmt12033 format 5704E315 '\xe7\x94\x83<,' -> '5.704E+318' +xfmt12034 format -3810E167 '\xee\x96\x8c= 98.52f' -> '-381000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000' +xfmt12035 format 8058305877531890392279680E0 '\xe7\xbb\x87=38.64E' -> '8.0583058775318903922796800000000000000000000000000000000000000000E+24' +xfmt12036 format -2502988550190541865092148e0 '67,' -> ' -2,502,988,550,190,541,865,092,148' +xfmt12037 format 3609942641883492213108275e6 '\xe4\x87\x9e<98,.70F' -> '3,609,942,641,883,492,213,108,275,000,000.0000000000000000000000000000000000000000000000000000000000000000000000' +xfmt12038 format -3116815975435029994531034e309 'g' -> '-3.116815975435029994531034e+333' +xfmt12039 format 64707939786355875621943861821527484474E0 '\xeb\xa6\xb1=,' -> '64,707,939,786,355,875,621,943,861,821,527,484,474' +xfmt12040 format -60471785444059474403717092241180429155E0 '023,.70' -> '-60,471,785,444,059,474,403,717,092,241,180,429,155' +xfmt12041 format 54121675558048032233409392001980354530e13 '\xe9\xbc\x87^ 29,.11e' -> '\xe9\xbc\x87\xe9\xbc\x87\xe9\xbc\x87\xe9\xbc\x87\xe9\xbc\x87 5.41216755580e+50\xe9\xbc\x87\xe9\xbc\x87\xe9\xbc\x87\xe9\xbc\x87\xe9\xbc\x87\xe9\xbc\x87' +xfmt12042 format -68326896958465398590138642026732442245E260 '-0' -> '-6.8326896958465398590138642026732442245E+297' +xfmt12043 format 82699E0 '\xe1\x8c\xbe= ,' -> ' 82,699' +xfmt12044 format -26148E0 '\xe3\xb5\x8d<-25,' -> '-26,148\xe3\xb5\x8d\xe3\xb5\x8d\xe3\xb5\x8d\xe3\xb5\x8d\xe3\xb5\x8d\xe3\xb5\x8d\xe3\xb5\x8d\xe3\xb5\x8d\xe3\xb5\x8d\xe3\xb5\x8d\xe3\xb5\x8d\xe3\xb5\x8d\xe3\xb5\x8d\xe3\xb5\x8d\xe3\xb5\x8d\xe3\xb5\x8d\xe3\xb5\x8d\xe3\xb5\x8d' +xfmt12045 format 90930e113 '\xe0\xa9\xa0<98' -> '9.0930E+117\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0\xe0\xa9\xa0' +xfmt12046 format -33501E102 '.76' -> '-3.3501E+106' +xfmt12047 format 207479373682e0 '075,' -> '000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,207,479,373,682' +xfmt12048 format -856756783079E0 '\xe4\x8e\x9f<-60.22' -> '-856756783079\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f\xe4\x8e\x9f' +xfmt12049 format 647512287239E344 '\xef\x93\xa4>+35,.92g' -> '\xef\x93\xa4\xef\x93\xa4\xef\x93\xa4\xef\x93\xa4\xef\x93\xa4\xef\x93\xa4\xef\x93\xa4\xef\x93\xa4\xef\x93\xa4\xef\x93\xa4\xef\x93\xa4\xef\x93\xa4\xef\x93\xa4\xef\x93\xa4\xef\x93\xa4\xef\x93\xa4+6.47512287239e+355' +xfmt12050 format -206153658554e272 '\xe1\x99\x90=+,.71E' -> '-2.06153658554000000000000000000000000000000000000000000000000000000000000E+283' +xfmt12051 format 160038e0 '\xea\xb8\xa8=,f' -> '160,038' +xfmt12052 format -972130E0 '\xe9\xac\xb6> 34,.22' -> '\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6\xe9\xac\xb6-972,130' +xfmt12053 format 285009e327 '\xe9\x99\xa2>33.70e' -> '2.8500900000000000000000000000000000000000000000000000000000000000000000e+332' +xfmt12054 format -567037E268 '\xe0\xb9\xbc> 54.19f' -> '-5670370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000' +xfmt12055 format 4317582202804263058438263686072e0 '\xee\xab\x9e^73,.72e' -> '4.317582202804263058438263686072000000000000000000000000000000000000000000e+30' +xfmt12056 format -5210573644009728770148638586109e0 '' -> '-5210573644009728770148638586109' +xfmt12057 format 6713412333915812504617909463817E252 '-85' -> ' 6.713412333915812504617909463817E+282' +xfmt12058 format -6288283976926456767687969526256E345 '018,' -> '-6.288283976926456767687969526256E+375' +xfmt12059 format 6289517975125598666457824782709338371837710E0 '\xec\x9b\x93> 65,.85%' -> ' 628,951,797,512,559,866,645,782,478,270,933,837,183,771,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' +xfmt12060 format -3952169114509111162759914366291051555232675e0 '\xe3\xba\xb0< ,.13e' -> '-3.9521691145091e+42' +xfmt12061 format 3177276007345479540148601505639057509380470e349 '\xe2\xbc\xb7>-63,.78g' -> '\xe2\xbc\xb7\xe2\xbc\xb7\xe2\xbc\xb7\xe2\xbc\xb7\xe2\xbc\xb7\xe2\xbc\xb7\xe2\xbc\xb7\xe2\xbc\xb7\xe2\xbc\xb7\xe2\xbc\xb7\xe2\xbc\xb7\xe2\xbc\xb7\xe2\xbc\xb7\xe2\xbc\xb73.177276007345479540148601505639057509380470e+391' +xfmt12062 format -7541482484129090825288798995884041277376389e5 '\xe7\xb1\x9e<+.97E' -> '-7.5414824841290908252887989958840412773763890000000000000000000000000000000000000000000000000000000E+47' +xfmt12063 format 674311865185660008565776764750203035823007E0 '027,.96e' -> '6.743118651856600085657767647502030358230070000000000000000000000000000000000000000000000000000000e+41' +xfmt12064 format -771803574831757267813496952179134562159382e0 '' -> '-771803574831757267813496952179134562159382' +xfmt12065 format 716992033530113799667122400351477141296444e137 '+0,G' -> '+7.16992033530113799667122400351477141296444E+178' +xfmt12066 format -927160720365006722836625791197908907772878e305 '051' -> '-009.27160720365006722836625791197908907772878E+346' +xfmt12067 format 154464030E0 ',' -> '154,464,030' +xfmt12068 format -995837365e0 '' -> '-995837365' +xfmt12069 format 820577889E159 '' -> '8.20577889E+167' +xfmt12070 format -313298969e41 '' -> '-3.13298969E+49' +xfmt12071 format 405805203552589389114096e0 '-,g' -> '405,805,203,552,589,389,114,096' +xfmt12072 format -166810438185103206214067e0 '' -> '-166810438185103206214067' +xfmt12073 format 996024230051752531694275E100 '' -> '9.96024230051752531694275E+123' +xfmt12074 format -870245770695904596193194E201 '\xe5\x80\x8d=10' -> '-8.70245770695904596193194E+224' +xfmt12075 format 52771093170843e0 '59.63' -> ' 52771093170843' +xfmt12076 format -44387080383649e0 '-' -> '-44387080383649' +xfmt12077 format 12854424934259e196 '-' -> '1.2854424934259E+209' +xfmt12078 format -95676705687010E128 '' -> '-9.5676705687010E+141' +xfmt12079 format 123456789012345678901.1 '50G' -> ' 123456789012345678901.1' +xfmt12080 format -1234567.1234567890123456789 '-.2' -> '-1.2E+6' +xfmt12081 format 56956216361262235841564061609091206483388351e0 '\xea\x93\x90^3,.78e' -> '5.695621636126223584156406160909120648338835100000000000000000000000000000000000e+43' +xfmt12082 format -53077793272806452038988630691307193790076370E0 '\xe9\xb7\xb7< 41,.30G' -> '-5.30777932728064520389886306913E+43\xe9\xb7\xb7\xe9\xb7\xb7\xe9\xb7\xb7\xe9\xb7\xb7\xe9\xb7\xb7' +xfmt12083 format 81029104307849002862674690310697825833058408e99 '\xef\xaf\x8f>+,.59' -> '+8.1029104307849002862674690310697825833058408E+142' +xfmt12084 format -67526992657866513390503204367909425784827916E146 '-82,' -> ' -6.7526992657866513390503204367909425784827916E+189' +xfmt12085 format 80873639966144398571e0 '\xed\x87\xa0^ 59,.45G' -> '\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0 80,873,639,966,144,398,571\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0\xed\x87\xa0' +xfmt12086 format -61105721025838751066e0 '\xea\xab\xa7>+48.86g' -> '\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7\xea\xab\xa7-61105721025838751066' +xfmt12087 format 19555401106035775732E113 '\xe9\x8d\xaa=+,g' -> '+1.9555401106035775732e+132' +xfmt12088 format -38026298441800775740e132 '\xe4\xa6\x8f^ 41,.27E' -> '\xe4\xa6\x8f\xe4\xa6\x8f\xe4\xa6\x8f-3.802629844180077574000000000E+151\xe4\xa6\x8f\xe4\xa6\x8f\xe4\xa6\x8f' +xfmt12089 format 253626125152445e0 '+08,.96G' -> '+253,626,125,152,445' +xfmt12090 format -138306859238431e0 '049,.72g' -> '-0,000,000,000,000,000,000,000,138,306,859,238,431' +xfmt12091 format 510058470075658e155 '' -> '5.10058470075658E+169' +xfmt12092 format -863276026002736E302 ' ,' -> '-8.63276026002736E+316' +xfmt12093 format 74727706696691982982758505E0 '069.56n' -> '000000000000000000000000000000000000000000074727706696691982982758505' +xfmt12094 format -43582968592792766092148234e0 '\xe3\x85\xb7>-54' -> '\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7\xe3\x85\xb7-43582968592792766092148234' +xfmt12095 format 91685860975187675433233603e308 '\xe5\xbb\xa0=-,' -> '9.1685860975187675433233603E+333' +xfmt12096 format -56109441128206395153426268E189 ' 0,.93' -> '-5.6109441128206395153426268E+214' +xfmt12097 format 351862294104E0 '\xec\x8c\x9d<-26,.62%' -> '35,186,229,410,400.00000000000000000000000000000000000000000000000000000000000000%' +xfmt12098 format -257888312083E0 '\xe3\x81\xab<+85,.31%' -> '-25,788,831,208,300.0000000000000000000000000000000%\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab\xe3\x81\xab' +xfmt12099 format 617350033410E307 '37,' -> ' 6.17350033410E+318' +xfmt12100 format -760217426790e55 '\xe3\xbd\x97^+68,G' -> '\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97-7.60217426790E+66\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97\xe3\xbd\x97' +xfmt12101 format 342211E0 ' 021,.34' -> ' 0,000,000,000,342,211' +xfmt12102 format -626899e0 '.5' -> '-6.2690E+5' +xfmt12103 format 614499E185 '' -> '6.14499E+190' +xfmt12104 format -484951e278 '\xe2\x96\x97<.41' -> '-4.84951E+283' +xfmt12105 format 6488285055195372059105507364411550e0 '\xef\x9f\x81=-75,F' -> '\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x81\xef\x9f\x816,488,285,055,195,372,059,105,507,364,411,550' +xfmt12106 format -8130643852842001611945118437833720E0 'G' -> '-8130643852842001611945118437833720' +xfmt12107 format 9478749851383984136382603357741655e142 '\xe6\x94\xb4<' -> '9.478749851383984136382603357741655E+175' +xfmt12108 format -9838860439821941975380765857326588e220 '\xe7\x89\x8e<-34,.92' -> '-9.838860439821941975380765857326588E+253' +xfmt12109 format 45439265658893891e0 '\xe6\xac\xa9=+,.98F' -> '+45,439,265,658,893,891.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt12110 format -85209554249885930E0 '\xeb\xab\x84=+33,.15%' -> '-8,520,955,424,988,593,000.000000000000000%' +xfmt12111 format 28844264492588173E47 '\xdf\xb8=+85,.46%' -> '+288,442,644,925,881,730,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000%' +xfmt12112 format -30754793764080564E53 '56.12' -> ' -3.07547937641E+69' +xfmt12113 format 7954013394434582182704515869298449943e0 '' -> '7954013394434582182704515869298449943' +xfmt12114 format -9277549551730905105853728739225682374e0 '\xea\xb9\xb0>-79,.27f' -> '\xea\xb9\xb0-9,277,549,551,730,905,105,853,728,739,225,682,374.000000000000000000000000000' +xfmt12115 format 6131924153404694098029414942791540029e43 '\xee\xa8\x90=-57,G' -> '\xee\xa8\x90\xee\xa8\x90\xee\xa8\x90\xee\xa8\x90\xee\xa8\x90\xee\xa8\x90\xee\xa8\x90\xee\xa8\x90\xee\xa8\x90\xee\xa8\x90\xee\xa8\x90\xee\xa8\x90\xee\xa8\x90\xee\xa8\x90\xee\xa8\x906.131924153404694098029414942791540029E+79' +xfmt12116 format -9160821398596640281185092284639249143e179 ',' -> '-9.160821398596640281185092284639249143E+215' +xfmt12117 format 94248304370725e0 '\xe8\xba\xb5>27,G' -> '\xe8\xba\xb5\xe8\xba\xb5\xe8\xba\xb5\xe8\xba\xb5\xe8\xba\xb5\xe8\xba\xb5\xe8\xba\xb5\xe8\xba\xb5\xe8\xba\xb594,248,304,370,725' +xfmt12118 format -13923778016529E0 '\xe2\x82\x83=-' -> '-13923778016529' +xfmt12119 format 81970512767646e225 '\xe6\x88\x8a^-65,.52E' -> '\xe6\x88\x8a\xe6\x88\x8a\xe6\x88\x8a8.1970512767646000000000000000000000000000000000000000E+238\xe6\x88\x8a\xe6\x88\x8a\xe6\x88\x8a' +xfmt12120 format -95066488317242E270 '\xe2\x9d\x84<' -> '-9.5066488317242E+283' +xfmt12121 format 595127566058668639479E0 '\xe3\x84\xa2=.74' -> '595127566058668639479' +xfmt12122 format -601209728066154694464E0 '' -> '-601209728066154694464' +xfmt12123 format 908413652380851660693e28 '\xe5\xa7\x91^.36' -> '9.08413652380851660693E+48' +xfmt12124 format -291417321002442011958E159 '' -> '-2.91417321002442011958E+179' +xfmt12125 format 345339611256588756211246145514909374e0 '\xe4\xa6\xa8>+87,.69e' -> '\xe4\xa6\xa8\xe4\xa6\xa8\xe4\xa6\xa8\xe4\xa6\xa8\xe4\xa6\xa8\xe4\xa6\xa8\xe4\xa6\xa8\xe4\xa6\xa8\xe4\xa6\xa8\xe4\xa6\xa8\xe4\xa6\xa8+3.453396112565887562112461455149093740000000000000000000000000000000000e+35' +xfmt12126 format -494681487332342645592822406320645591e0 '' -> '-494681487332342645592822406320645591' +xfmt12127 format 509778190843375316247599465182635504E257 '\xe0\xa5\x91<' -> '5.09778190843375316247599465182635504E+292' +xfmt12128 format -725234471216069671504784155936223170E39 '' -> '-7.25234471216069671504784155936223170E+74' +xfmt12129 format 99152558768698824848069e0 '\xef\x86\x8a^17,f' -> '99,152,558,768,698,824,848,069' +xfmt12130 format -42548413705563174739934E0 '\xe1\xa1\x83^-12,.48E' -> '-4.254841370556317473993400000000000000000000000000E+22' +xfmt12131 format 15669922375807695146945e256 '\xeb\x8c\x85<-19,.51e' -> '1.566992237580769514694500000000000000000000000000000e+278' +xfmt12132 format -97784283481872612976407e264 '' -> '-9.7784283481872612976407E+286' +xfmt12133 format 5474877e0 '-.65%' -> '547487700.00000000000000000000000000000000000000000000000000000000000000000%' +xfmt12134 format -8648985E0 '30' -> ' -8648985' +xfmt12135 format 1638355e356 '\xe9\xbb\x99>22E' -> '\xe9\xbb\x99\xe9\xbb\x99\xe9\xbb\x99\xe9\xbb\x99\xe9\xbb\x99\xe9\xbb\x99\xe9\xbb\x99\xe9\xbb\x99\xe9\xbb\x991.638355E+362' +xfmt12136 format -3369568E272 '\xeb\x8d\xa6> 11,.59' -> '-3.369568E+278' +xfmt12137 format 64E0 '' -> '64' +xfmt12138 format -93E0 '\xec\x83\x87^67' -> '\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87-93\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87\xec\x83\x87' +xfmt12139 format 47e255 '+058,g' -> '+00,000,000,000,000,000,000,000,000,000,000,000,004.7e+256' +xfmt12140 format -22e241 '' -> '-2.2E+242' +xfmt12141 format 73872185184694720534744762720E0 '\xe8\x94\xb7^ 87,.2' -> '\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7 7.4E+28\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7\xe8\x94\xb7' +xfmt12142 format -81984921759956905807548481868E0 '.84' -> '-81984921759956905807548481868' +xfmt12143 format 80748096242630399024825251523e210 '\xe7\x80\xa8= F' -> ' 80748096242630399024825251523000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt12144 format -56452150378670899834336576334E129 '\xef\x82\x9d>9,.58f' -> '-56,452,150,378,670,899,834,336,576,334,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000' +xfmt12145 format 9954575772466100045312930239E0 '46.33n' -> ' 9954575772466100045312930239' +xfmt12146 format -5732079590645898278508915100e0 '+.39n' -> '-5732079590645898278508915100' +xfmt12147 format 9555390024119893018134757351e89 '\xea\xae\x9b<+68,E' -> '+9.555390024119893018134757351E+116\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b\xea\xae\x9b' +xfmt12148 format -7252673199738247247631929686E378 '\xef\x94\x9b^-,.97F' -> '-7,252,673,199,738,247,247,631,929,686,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt12149 format 44482393337164028979633628520315940869765E0 ' 74,' -> ' 44,482,393,337,164,028,979,633,628,520,315,940,869,765' +xfmt12150 format -90194541090625570882827869348469552258064e0 '\xed\x9d\x93^ 72,G' -> '\xed\x9d\x93\xed\x9d\x93\xed\x9d\x93\xed\x9d\x93\xed\x9d\x93\xed\x9d\x93\xed\x9d\x93\xed\x9d\x93-90,194,541,090,625,570,882,827,869,348,469,552,258,064\xed\x9d\x93\xed\x9d\x93\xed\x9d\x93\xed\x9d\x93\xed\x9d\x93\xed\x9d\x93\xed\x9d\x93\xed\x9d\x93\xed\x9d\x93' +xfmt12151 format 90376452045510010654342362773674642444837e179 '\xed\x85\x84>43,.1' -> '\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x84\xed\x85\x849E+219' +xfmt12152 format -89450713411577249665076381491101787979367E341 '\xe6\xb3\x80^+10.94f' -> '-8945071341157724966507638149110178797936700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt12153 format 9378266224277130E0 '\xe5\xaa\x8c>+76,.21f' -> '\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c\xe5\xaa\x8c+9,378,266,224,277,130.000000000000000000000' +xfmt12154 format -9761863284820052E0 '' -> '-9761863284820052' +xfmt12155 format 5499477300238142E9 '' -> '5.499477300238142E+24' +xfmt12156 format -1043064705655174e130 '73,' -> ' -1.043064705655174E+145' +xfmt12157 format 32367830826214467854430740613864074938e0 '039' -> '032367830826214467854430740613864074938' +xfmt12158 format -69404718677483191763363026604821780857e0 '.33n' -> '-6.94047186774831917633630266048218e+37' +xfmt12159 format 22124932079567699879517873051864352231E170 '64,.62%' -> '221,249,320,795,676,998,795,178,730,518,643,522,310,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000000000000000000000000000000%' +xfmt12160 format -24967477164825067523530035794627105140e197 '\xe6\x83\x9b=+44,.55' -> '-2.4967477164825067523530035794627105140E+234' +xfmt12161 format 4E0 '\xe9\x87\x93<-' -> '4' +xfmt12162 format -4E0 '0' -> '-4' +xfmt12163 format 8e21 '+' -> '+8E+21' +xfmt12164 format -6E369 '' -> '-6E+369' +xfmt12165 format 936379071348979385561690244838798e0 '0' -> '936379071348979385561690244838798' +xfmt12166 format -205660630619485195241493280229815e0 '\xe6\xaa\x89^+90,.96E' -> '-2.056606306194851952414932802298150000000000000000000000000000000000000000000000000000000000000000E+32' +xfmt12167 format 462271402394254475117340264838425E114 '\xe3\xa9\x94^+52,.10e' -> '\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94+4.6227140239e+146\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94\xe3\xa9\x94' +xfmt12168 format -534594251004920342778947397589160E100 '+096,.55' -> '-0,000,000,000,000,000,000,000,000,000,000,000,000,000,005.34594251004920342778947397589160E+132' +xfmt12169 format 687764461E0 '0' -> '687764461' +xfmt12170 format -992715141E0 '-%' -> '-99271514100%' +xfmt12171 format 986044473E59 '40,.74' -> ' 9.86044473E+67' +xfmt12172 format -538046413E18 '\xe7\x8a\x9b>+32,.42f' -> '-538,046,413,000,000,000,000,000,000.000000000000000000000000000000000000000000' +xfmt12173 format 449790053089600504417303668823e0 '\xea\x96\xa6>-9,g' -> '449,790,053,089,600,504,417,303,668,823' +xfmt12174 format -247421514876440083571755139511e0 ' G' -> '-247421514876440083571755139511' +xfmt12175 format 169888656240731769474996242499E210 '\xef\xa1\x84^-71,.35F' -> '169,888,656,240,731,769,474,996,242,499,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00000000000000000000000000000000000' +xfmt12176 format -578638605020840518470822112170e222 '-.43' -> '-5.78638605020840518470822112170E+251' +xfmt12177 format 2248e0 ' ' -> ' 2248' +xfmt12178 format -1480e0 '\xec\xa5\x8c=-.93E' -> '-1.480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E+3' +xfmt12179 format 6490E12 '\xe2\xab\x8a< .79' -> ' 6.490E+15' +xfmt12180 format -7130E368 '92.74E' -> ' -7.13000000000000000000000000000000000000000000000000000000000000000000000000E+371' +xfmt12181 format 6058446849628355143846E0 '\xe1\xa7\xa3=-30,.15g' -> '\xe1\xa7\xa3\xe1\xa7\xa3\xe1\xa7\xa3\xe1\xa7\xa3\xe1\xa7\xa3\xe1\xa7\xa3\xe1\xa7\xa3\xe1\xa7\xa3\xe1\xa7\xa3\xe1\xa7\xa36.05844684962836e+21' +xfmt12182 format -5735163242107928714717E0 '\xe5\x87\x92<-98.19' -> '-5.735163242107928715E+21\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92\xe5\x87\x92' +xfmt12183 format 6222158952095157557388E20 '92.93' -> ' 6.222158952095157557388E+41' +xfmt12184 format -6514287762496763603485E133 ' 047,f' -> '-65,142,877,624,967,636,034,850,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000' +xfmt12185 format 300263447274228079383868e0 '\xe5\xa3\xb1=14,F' -> '300,263,447,274,228,079,383,868' +xfmt12186 format -294651827968406303374830e0 '011.86E' -> '-2.94651827968406303374830000000000000000000000000000000000000000000000000000000000000000E+23' +xfmt12187 format 780047732565324616428188E160 '\xeb\xa0\x9c>-,.41G' -> '7.80047732565324616428188E+183' +xfmt12188 format -353497393256566821246358e345 '+0,.1' -> '-4E+368' +xfmt12189 format 299117860926602006E0 '\xe0\xaa\xaf=71,.75f' -> '299,117,860,926,602,006.000000000000000000000000000000000000000000000000000000000000000000000000000' +xfmt12190 format -765592729206594042e0 '010,g' -> '-765,592,729,206,594,042' +xfmt12191 format 988182851384155285e140 '\xe6\x9c\x99= 99,.61G' -> ' \xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x99\xe6\x9c\x999.88182851384155285E+157' +xfmt12192 format -145994202957850285e3 '0' -> '-1.45994202957850285E+20' +xfmt12193 format 58499081249109809923422704823423900E0 '\xe3\xb6\x84>+,f' -> '+58,499,081,249,109,809,923,422,704,823,423,900' +xfmt12194 format -23946036718690895652997835457521008e0 '074.35n' -> '-0000000000000000000000000000000000000023946036718690895652997835457521008' +xfmt12195 format 93734087493027785035227933362183536e370 '\xe9\x9f\x85=,' -> '9.3734087493027785035227933362183536E+404' +xfmt12196 format -20372322944158908444502822774985729E358 ',' -> '-2.0372322944158908444502822774985729E+392' +xfmt12197 format 60048047411E0 '\xed\x9f\xbe< .46' -> ' 60048047411' +xfmt12198 format -66417957282e0 '' -> '-66417957282' +xfmt12199 format 32752048013e314 '\xeb\xb3\x8c< 7,.44E' -> ' 3.27520480130000000000000000000000000000000000E+324' +xfmt12200 format -71740677836e289 '\xe7\xb5\x8d^ 40.18G' -> '\xe7\xb5\x8d\xe7\xb5\x8d\xe7\xb5\x8d\xe7\xb5\x8d\xe7\xb5\x8d\xe7\xb5\x8d\xe7\xb5\x8d\xe7\xb5\x8d\xe7\xb5\x8d\xe7\xb5\x8d\xe7\xb5\x8d-7.1740677836E+299\xe7\xb5\x8d\xe7\xb5\x8d\xe7\xb5\x8d\xe7\xb5\x8d\xe7\xb5\x8d\xe7\xb5\x8d\xe7\xb5\x8d\xe7\xb5\x8d\xe7\xb5\x8d\xe7\xb5\x8d\xe7\xb5\x8d' Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/invroot.decTest ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/invroot.decTest Thu Jan 21 18:27:06 2010 @@ -0,0 +1,57 @@ + +precision: 300 +rounding: half_even +minExponent: -999999999 +maxExponent: 999999999 + +invr0 invroot -Infinity -> NaN Invalid_operation +invr1 invroot .534587915917192155569573185210837081769755476625566920175054819034645280131144247188441234779333323927100441365581912683003666565108127412198802576925368100710262262482983078573491910659900718696906598197485019488864053005073274770634295872957575366326365265886704445664408096944717275626281635487769952860562510311827968165217216699630029982810472026818473090769099807936009609667533775166105061673351758941690054055338245660787952616928708615056709472709871311049846449483219816704692365291375568420573098362882565918993524841873300520832759106437811440193182646157862929721576990632809125462493073792314339552107931160461202918418157474861368107371154258190523016966711530429036504082415445290848300746110436440892988658181546314597816450378956969959788661050760866382383562540867446552718894342564525477749090738331992050210864863131578129812092772118689340946332314221313522851354031224E478456282 -> 1.36769869090170883365766822326114060898505850028458142951255690224300264755939800558612988461444485421326409307214266839151424065908885592361891456943364040378611599355569677455144181790089310265306629769793394771192160877006001136258363555995198536535919617280080569141833454820529756957660151837151E-239228141 Inexact Rounded +invr2 invroot -3376565240538317615037767038165755236116203447734678670744153013395372825208152016626465050595503278853396341085504348076568638479251916469338156396026574105877198631284532958688897642411006633822625089845756964537796850154627554386765663430233408597155470339398891901177074562300320044771370817242748115757639488987096292 -> NaN Invalid_operation +invr3 invroot +95557790255393130740393196310110154284984751359031309896398764952438051628915583632179283447391171528179135502526608913896698702181735323913607751130208974016914650039266324499752512639801785865733011946576983092213847146916959759670480 -> 1.02297954737445094825826091353591897908034078907362836953104996508129183034044873965399342835094488559981276170073085746439896855924382620964142769617650621159588395307098063232472761245685892549208662446992817391636726995669662784742850399639941776275468962154520979557600061978823233542390107411560E-118 Inexact Rounded +invr4 invroot +8051652260715717610263596110901879049239.3440890507241630654113595115188390222902940530 -> 1.11444206152562569343119139170646814590687673654520947187475195773625010295109279239701370204558834676388207588338406433950233296077761519272905614305165226142108699992490893369385504606331664848177785618942682376871229067701973143985740722295023921892208001610719113184272379066174701404312597426825E-20 Inexact Rounded +invr5 invroot -.36592197165789919876969283257371189200220402200002659961343068719568750580103064629288885229809757695723911672911158669042664271337478150632454244454960565234911315537252232074269938437761369352899081342085708843126846060396303945350939465545638101 -> NaN Invalid_operation +invr6 invroot -44746722843951604605041558461383456959182507845890557497798391539993092079028123553869176194186087843018195092434490484241070467623257968572786647008622287052058689209189964425521897319959862625870991347425877073690538415750266535581321654559177420756494308462900355003716612396795433991910 -> NaN Invalid_operation +invr7 invroot +948943248730899668078135699979058061509555547156272936842321883099986210361071671784923581065994346170593144382682672978251687228086752034258114675547822342248175243738443748555587177693108781764137437494362833726107839479656881344405669222835358836515928499629038518395413414623714986535354329243601061487796782578547555724171276979324853544047867997682662973927475596357370151608948634124805660835860927562392504753703385812781424464842992506914140686889577535698890662689110270312013809940854818331439242777832632044817511942491643768346925240287503557045420121622930380562123041337404040098906874134159081948444913584344609448236967767455043319958191959963868118208517350380776078952546003182041690777965037559329942566975282571898259137917930121840676845801080 -> 3.24623443149519044146774385327836533216464183727554392679254765473291522509121311915692833886535654787361124041696472280514828762946576638098283717652191479560502039986192618456351921133995783561356878919873169984960441104204131287360651888424979333021787801486657416363806384287256165526847351704137E-383 Inexact Rounded +invr8 invroot -36239581670653731300376393991270825298462698702529251372002981419327268900757988734157481351979218060250537055351261009894843519440401788657349170163016901917917815994316715255465947532963406193334061 -> NaN Invalid_operation +invr9 invroot -261991398311695734643807.1535693133488382941868280431130928308788012431642456251576173417538422878251082524398e746378140 -> NaN Invalid_operation +invr10 invroot 5392994273424119957746641665203905176810793924546640338873763628068012901449347244884952406414806255774716519234359728634226215180798042381782514743562547260129885619190278005510661849262278265697792656530595774113949566960819294222315 -> 4.30610901552659999687939774182099552710011122859492366694590522944895625441106646296363694968075067418269832950495070518505429967811546889821795179881341981402317016586182144229577452648802459619383751681523643205218709146884421021314046308217102813588276744258032743878674683129154055178648878023013E-118 Inexact Rounded +invr11 invroot +6677141452407880763950883628694080156340927245978958783692725645576427785135642912758830434260647781049885149338573470529643939776094840184923909873531552046554630612375503310125782199487444780666440392409276929206902553870637939392630858215932525761909688713359449662229536431605198856043339716721451413505551953304811437824041382509054677788841564313828854552576715541081147114351058.14453 -> 3.86994427671426140343519111576081413629474709394544600835556525424319828172804961098083467256757825884997662401362936733182704372996631535831168262002298823715425610369078525815631036025916006016638829195146201076528015856595791752598533155697904688252859982675383102653783622260278324745887723385431E-193 Inexact Rounded +invr12 invroot -7597646793684233082842661571654974791952415418526786852164738156850393942669588246435936523740655870985720290549751853034956180071121016249762515718562767357107953803183379224100651629429523746786621487725565797020788902460469493831259853704065116774331656431916843296225449459877047277240604069600124742127310141734119227313490331100984046794458767600259041159741771441983364665150919058211092167442173109494421371474806096013052778255464786395135877511144980597473065535951993142224584057199045386546163532127971776177466731000074434264668271710217544457938843120697314316374090793313513355655241963381487206077759208617281238787589230159063665e+701869371 -> NaN Invalid_operation +invr13 invroot 789651322153756843869613018947754514140885132498145461099854895702340837499057162860798820800004952753133130272961216497079406236748062018178060777836602615680930201662448232671778497467110318260903551223015941893557151487480938803243230064328509550912889375807323393269372793710133699547724724563717129441748346881723772335550230184465187714122313558260781973440733975944274437170161264474765304017201231321259516134310449754644771656298966703951132810508323704334139867222981304668310262147333677564131611262937877099593453885005674750834781053703154798030993360038831339934777536954980412117544126808442709836731751707772015192439391732227.9220299015970550190199365714336905077029838431173362967459041011418818108812860092043083710320543160165348856846010972257786251235413419534461940840001689326 -> 1.12533626999697142669570612459007612120206362060824263646371898199028616546332728702977299572159240910397929544867017123915892046371127164226410772926012970770652671005418542515910188941779902148309524630079585268641778423892120334163316941509363599652153676765009241797953803363360945719165001432675E-321 Inexact Rounded +invr14 invroot +3296768027159437897545216038449090289180876355497369483126137160626220309294980337035810263152641134055903038035611643664077541189651138963463083635512723344345678962257321903711939137324624109287.357740667547242222587949260317541802584866646446171986476663020883704807155152228978090212081762523696303546286 -> 1.74162963206613679802071466755559545018731783327998546167812799517844932892995914057483518985441575696135134211194485224672611535987485060485827735292860628711248902701453879877841739865940799886896386209702092699923815597748239827510385126684648650375102080637683390261854946485819665514726004501448E-98 Inexact Rounded +invr15 invroot -.13400687544303940619415787721859985679251231363907742608825143875258139062952792517411003752747075871899765327233452590182362512474702443481876488072671840174970025385017586282618509220926494437361617944900049136061330407530449771804334262896610156223753789486195558455058164781613171392261809915767628560805051022032278689674260342779764948701964504228480439382562046579013368518631759442039258161725529551082325027316546088309999163238840189020607981601396889235185144934103886941770844980932132539786708096191022195031241138605158114301362161736426370949252676270178423128352081223808367937075652317731833011133275853226783179106836151921506550065058150765397114586556113887305278883867367155595548422883100773004024269400181e+495463327 -> NaN Invalid_operation +invr16 invroot -sNaN129565077855822044 -> -NaN129565077855822044 Invalid_operation +invr17 invroot -324032552487417e+175038537 -> NaN Invalid_operation +invr18 invroot +.375692838287104695154514792703513868228989647421274129145221589524957698874715122147720614313977299105841461004503600497534118587739513774298184048554690371041601354188629898917349017784810896905423479019568829238879866249561116120376320552921068842324299229795993690031833826107 -> 1.63148671540176640128215949558427974746055633139172255269614810339739376126309232834798610411056672503952224517382417664485715127994791353673566397335235411499765580379422060106669523625666920572140753041117196014631370359306286811686211148325269227528287290610056752276304086247154541866631483020629 Inexact Rounded +invr19 invroot Infinity -> 0E-1000000298 Clamped +invr20 invroot +.82872658365895295752375285 -> 1.09848559173349247443696612495126793627258875298535681230423369319372629281528816991279238332199249008902133967918088312351026907980012338950330220519698416390960648620021654153264949577101641557224173201169970510516028970703450416045793501847702018053762419321155605916089969437750367519588999106533 Inexact Rounded +invr21 invroot -.5199228711773908895057406254830017248514821059040659731053363954552289848477999295490249113472022777800878956473964318267119956870493839699201341717088433910189759904423596815694265723166788195911260082511038555142023914930666210135240788990021753822250335401252537E-787670859 -> NaN Invalid_operation +invr22 invroot +Infinity -> 0E-1000000298 Clamped +invr23 invroot -NaN -> -NaN +invr24 invroot -693859587954676249404328489671951825160488337119040117492137925907630813150975352400946762964727144984513481304468760460096791089595060525042733001143304441938630817726382453162296555649213461515579598148542852702451541182927269764187315625399875155432565901861898 -> NaN Invalid_operation +invr25 invroot +60262260417226332097398832695030761866713806164134676024836199636193049554087611121240048434139071183994011473577040464599821941688792145454681364714130420535343768084474585526127329337221561681119341458263135876143935919355853115667104534292799498488296255991589752560190297365366602636000401330973737973662603266005567524559988514754442273565632502793556570570223393562573317915745800930 -> 4.07358976743343165578424103856661079514409817639281856505542611985815934586819208421395020601350091093152891150630901977694914505564003123438007646412921343850542202593202661823228267899290514912625735392214495434245226150758460152290440095021326657368609350077005175787547845076547738912212498322130E-195 Inexact Rounded +invr26 invroot .857562768930905937836163747465406951657721731258458574099147729345726878257901895328288458032596366020978244313835297903248 -> 1.07985897224043911957796762411583725349995782882891917415397558887647059262353367835683682441549641738833596277368814041104875077079526553126584336080230426889543049465619060603012765990217815509780758689475865884188453253011485830556221071691582451022846070194369616719138448785164698858189992295071 Inexact Rounded +invr27 invroot -.4186446537687747997472085380191163945720261560088814736173255614223544265945343367691930157072582293267381366546271089843788214317502855402784180 -> NaN Invalid_operation +invr28 invroot +.31057452709552239570964482382215677964613933021764194517832907313649594932933103481134053315036060545781793567508570625425852976820460674864923165385911713514158950431278778346645169281321298898812827031310357569136065348423595668542201463184985735938259906835881817334343794622534443 -> 1.79439100569108377649861391788108206559658788433608676257027731910301314978611867776003865400497967189777142907385259249172274387789701580793651361168796878726280260420180345152648432784274579934316664430305992933257431451409656761281923649766784319471333291377850985617712322486101912853355854522291 Inexact Rounded +invr29 invroot +.38183091893968929336944641678261480845059368456594749651754513440920522947411894503476843187005652843719750689732150751074683226481251100552988170025976806956376856102414142096817407616178527891959130457427004488254208732135863092233548034470111246349921041972149044397536854559159E+296467157 -> 5.11757779893765076277141876346309825020509714445989969004148299708311426170950901897966963971316570643124655056228239298648167032613600178052205771630775407177977494675482114307932046952146043659611980863008544950619552401059511682256326909515683096201400668919471409750727128899791491018348652278256E-148233579 Inexact Rounded +invr30 invroot -.119011881524310013544496888254400397758842992435860038458307612048355612281401560319782088395660432164139721385139037185804976749341978574044303827359772739884751732347179161284110142811638397135066633271116321192592484648901654983086567595921814376084414207897621895621802991946981938596130329511835915087811968987609738294853722504179410647080204392961227045641959450131746142744307326705468991349626597464104836143472709938018002307608000566124920910944981605554547036123467639652372453030092251672357601381515028772050276821433702348908994738772470863686366570590691654595048940072586283633270656204912211470210563304960160659116140299504683131451534105745746979368286933082875688678660333679752267465447079503033832503889510822860685060519639756922734236088619900894189290822849111870634009048367451637817439490917610827308736624141723641222046081983260251938795998114530 -> NaN Invalid_operation +invr31 invroot -.28742211031131019630582634118530417457582009676842510057803931650214417749595882244801152981827715160031083464196332787462665711986064294385866409908955112108232499976491753758841749191560400450285345163280561108933200172419054525122995435322198159311749842351858714015598738517300983489507392629578997960955923902258801749197757228820846728468046491370881236035786955221106316949245841837924804124325881294257009941552535798577559227559715865060940009119717198619162122992767208169126 -> NaN Invalid_operation +invr32 invroot +.407994145919384285794134202043869952714455902209835549111459046977780393653408310305686632924947977612966041228167651067770548050710383970118548136837137812480327390623 -> 1.56557195935176505451881155961521512163814905429592219064530253599994625672021334500951418555573720526044083700513099660848757643834083680859768467237182237371840686209867143436529626824654109410399635822981888813087990119342793871349814999173080406623749816573875327898091551712897342660822619705681 Inexact Rounded +invr33 invroot +58275032311418416533034383409485237932165845816697806612560491543962856168036642906187161960036047575319880274200901673785818632234457462168265039270765569219442752692906011122684400463429634639261641755635232787277430039216041218199574006529456630058683501106709118547465455687026537012655622204555188e-164633381 -> 4.14246395825023388059355415929579731570271084156261950256969689211129987374748442537130643176079774426922662490201370200171609669177570508906859676691014930740220892322596919008038481197465657798939767108456701942641532559126846289929403373807266440730648807644813916567041570519714342347367073136557E+82316539 Inexact Rounded +invr34 invroot .327077055229290866811296556724841001745345117120564498091632553924037992455653279251178930635146173694207942180092459019273204665557862856817263045509385728772485270427770623573091215551499368861847951802013168267198124123721959635089116742596086360746607865505706828269260241747648777822641175649676064903899931626743789303796271593233048691818830858618882512291960251673297236963100018851684298769508543515796096985908463381036595053545524692390252642262351356788020358214217482871870301417189140367976995625944250125901983301015977473674548473483314128600483136447611621907109751129965368552596007780647622999883444237280002202199994243915778135976825195669264936870282753722657452895459220503475876872388537013331568179579873758079477213420819927263041919148063859968646728 -> 1.74853753886089227246018282503594665954789399338725790444355081685838894927925910126271095651928607855579720546558612176926188300586626501738759989217975230721492932311859139326315888968059212801508571745207097150096341113486405308948272197803736091186728402842455054214232465700200872412156777626528 Inexact Rounded +invr35 invroot -2474098768085034654749579423553412559124089127867569763545741647835339028208125156778502888779897782978215891791672747670757363880297610847717086919333342176127369992958569985568190625722040137622478062578513835434884811498376513467745574841249217923746308361164606758130460751017857190916114758358744344106382991712861752613173969470487461095160769075043035380189064406305212546560444859238677432625086029006118262491910703863223558553353812616710344904298102517119825832728066866233262675848770960504876312449231956934972961635136130120372867444848026343434212543779369774753124005573162055441280640941219535137179288781516763474020510490212123622499640408975188807795534134641631760145504488317166606491804819326853066953742216308515453052109458273019907513368448516772882410497215028969452664202539508053063806063009888643731851837053708834382202728256330156619885586936059665714451556559803570115516117913106405861430435732711738226500 -> NaN Invalid_operation +invr36 invroot -68142097905680400207249073580597433232170507512331448646934880820461267832594619583084467616490188304421672826050478393324419855646575898806656853023610198690204000009301877784553385405892191001808892526427340070617806515114396277760341715835215205172826102698767819510187586191349533973872469391098899954752742293689505507078347045527068440048226860854519013856908393328947862277683167388048902245778767749762026367270111223802088432296760537115257575897354487675476383226635809593771024614840392771632306743319024173766849382237091E+639694803 -> NaN Invalid_operation +invr37 invroot 37655323529896282359856584878425338500097359527898791832108421148291571346469826537741517782689446495647606632020152048898687614370481549972792161832099126618260298627217720228066561347111042650841138072099300207758186420267280353645177653864933320475728976911286523919814029092858190202265538282128145900854682652568977761339562153913520925702919867717738753868426208310459589408505928345058480585408250239482579871971666466948688202654548953436270128348283586358708576402987865288960654042727611915584233743947829618075269644230336808267952619519572331439035192377325777719971315804e+570133919 -> 5.15331640603422630295349740505406226032310276180299602646221025930001393090641681526341898409831873564504511667800856576646815307095472170246798406515828817574427872619863503695210145240084897759504021521297642946115316170019880339617391573959533596782317584622135927547575075356802048128285888858119E-285067252 Inexact Rounded +invr38 invroot +72955483379940680327952655412493218505715148701427478288287544712566821848404628305901357758501216145587803185674630131927708572426596524313462406600503690158355367199611687309478888465237429149868374550298414686964217863524196656968446429941515741349088083375532283451549780983343394452351658867620642132513748534054304313078786731035672388754398059139117814148349510817276454589719335921467933350120073277658371518160679869980711095228063642914 -> 1.17076850350088355661624241050003340486395462746698868127380881906378910629466477205551504010253635038007661011745737847242534251840508765926512296838098313920489755892564658460474604506505063359042283235840401881919747440851745149497083526733185996308722121288562338683901761389915047074127772228224E-223 Inexact Rounded +invr39 invroot 77429590954549088401132708852772643544947120613894400647163849894877271570513145495508681094839295652403982508840213246164433065355181997149169219646676082685815916154865913854005923716207207851322125450224315082252735729125507351559275890877406825639363334420724506536005131587919780196695692556272738253221281265302664116387840718253642566051006905846044023283319454891226716861673422149294980385643321551437512171653442206941989237811367417871187034293310393452749919194718507243322000609906204871410610556670141322088984754245485893790556715119871678875714750528317082242912340016094136511901754807356764860885051117036167573090043203534636772469374538915560174793282311081471200361290343058120524530892641439544117607103044703041345098593991513908645105020152217170819170943131792453801561058944705700878847814662098925861998496435956571023 -> 3.59373887421243519265019816560164258671631349625728709856169554118531092559031640461621451163195842189036663534422073596866947229007059499062966349054792412693318191199719280075179928508321047692962396256966998349792988040188409910017018151337125309543385138991506572275979493152753356535238795536838E-423 Inexact Rounded +invr40 invroot 43024943828854223784873206039306562208628083102696331230265658795282987212481233687757955145376571501471607392179636378495332560806387696713795447273029166844604108072464301303701952700395652366649755510450054090459981563587814940295974392461879990145146825065057751106865491977422973370847164312 -> 1.52454358192038009550098482335348129514496614411973719557242110022784079977677608621381396851045496862633228747927596873592330362848623722902592077961788356002134739484489777153177350861112211351388452446293881417448505221550618097417515688401181479021877186586564196846189909086480616794915897825633E-148 Inexact Rounded +invr41 invroot +94665640298407353737048932115105632546223550081300608774360883412872824221768614500877757657498370141172038988988237248380914603693537825728050785763994762290547519828368654733087188085376327609570513497423043239811009686610520364685136957853275423959731656238489715703096760774209220574971592674089449993200765597703885564941079900796476993649458777049715514500072034952233902184558266689269384596175286568221170532E-767627295 -> 3.25015304412532541304116376019167328713645404446938624048357659024528523229558463190192693957980765972021641689128138143226267996600173378729620112774854851705272008936588975576635367794137965009009420114214018922201070269987909788015066572473154280775631088801649729359935391127939168269236412619142E+383813439 Inexact Rounded +invr42 invroot -5538090917346147347883459449646328714072245723795723230769730781641037855027882388976055116768275159042248167902938629275688463845973954561798242677078036153642658909682489045669515487684320784056860793051100793493644181451917981397393102285495816410861895667754693476640241615611196406336609678286900515583458442140975398557137301205136910616221922502522916116700565322986473272746594003985975492345854163903265837547533071154148739683728077671844987195299995154890472402082586032070086945735304725565360819028209427581802754289902183651460508604036109603619691585370486958942879046441753344103187530E+700696736 -> NaN Invalid_operation +invr43 invroot -sNaN458140379306032 -> -NaN458140379306032 Invalid_operation +invr44 invroot -4649365559759375134967536780680224230408066618743436852694146640590443334155076040313186229185422612448479410789416020093856068740959342237289872955919627258134363583772894644773768596781904821123374668324748645322694037966659481616960091217374909543443272732314272339401848751890350740959629937640985937815111268932298272885110503240129494487846398675283004169402467134099553099727647750695261800747748045890780739979801930352217502623162717415085479043842581313871588913729838451427388169080612876742525571772605018768379824741659425254884837757714417978019687978e-763534128 -> NaN Invalid_operation +invr45 invroot +47114935416991631389423612259689795613104916.66115780943699929326831041493267082763563342193854277727677747508218495893495257334236390897650854801091198647113225370588069031686595006823104841355284370848013161664098576849160101424196310236864887833721238251097972960851430316629013867476706490887886000980663278585063672128108589329542708250714701028674798623140522685344980100727691139238022514114044905852179778805114 -> 1.45686966308849081261634053030490528942257950835020068087131098684662223685583828719659160842682142285816569590278017388472306580132424968801948715284916760106940707236722825237338862060521146630754723168094907557911026916347303244551334388089618651263752060863492734092622938348586177904142577825761E-22 Inexact Rounded +invr46 invroot +641534606159407899647921844606432513226053603593899026508921676219202813325640991815100939313397039563442423734121049923416405572270397799749925461789068911376035719863141587207245991449466825394047313211806563388271222544045538635293125720698964557742395525035417261734825289644044159032253056268579093499599791131052773563472101514644913769355554689668991433913786098687133036410941024669429080132486831722988504047941624422197871665016029949228153975317356184117413232313107356974153307745180056700659055736466698706158150501350526550868648975554867347453452937001372554894280714284648864887920483532507799511385742501398041754961889105240520897529273515978115438580634954483350395735641730065603584258587967836993245979904492438141342988701465640880723527405612765712557174586268368222994103465423579154707196771159784628060615036561602462604980276625401442246686138932958591780051787857842806847774402747214230125714493826991 -> 1.24850405090041763052378486080956815986974070862359680465298537308277084471574828830152622369133567774514556858425696942796038681318192248756824384039034980742663492392438405056962474977971499010423140888694157928268192305836461046970462722880933033773668881250374183419535716036294404685664351765755E-465 Inexact Rounded +invr47 invroot -4999896774851954741822542447392681294093201168071465995546579592262595878536820459329012069054062805011647090740318565965042563210969396932464677432574829525476089789048844512454002230973241285530614605022667028978985156023037685747398483354914296863237037337583725384967491972722484934350400559228767051160320884692734760203477497438044735690287704214211851573890311786829629608039255797866693498297450900674004696809996413780410426392673476990947074706.62938860 -> NaN Invalid_operation +invr48 invroot +1714112813338311020397230044148086442428298734909997718515970601947639277583034537396349212416488414529774303052857334964664479561906980578731823702126071738127340452095108812121845663160220.752699501256357618925315648231700650811683055303367397365596386037277749487505550537307282990583377973060666297314741481048814184891361443 -> 2.41535126558862439339001330170265047423276678903534634558931662769945510880658071881890286013819431067867395259160666507027335391356566343692363942915639715547147512740942963398020592954402886446964863685926790242465549720635739403151756951370978974756478317058781117672237862913864526972525576866928E-95 Inexact Rounded +invr49 invroot -Inf -> NaN Invalid_operation +invr50 invroot 4527738862184144625628466428275994267426230151720950866556717778382004105756115864926333994329186170961726581928745500693652827195806633096638223317728024002551690679423911789122676067407747915911633634205397360182377644500637842781622049071821843509239920832102966908874750182225188059523992898401843134172602331368423635833477030219113574604490667248553954895455209651565897925105483526601828355699034098212608897036370567779535296548792888191903772954290133458632435051027852037910765943280421574121328637617384809856097698619562368666746608832901874620126720269824504679948944935518554919659261334823836169321334580924149594234776779168850414922846592049007340100902135884596132219697761348863591454464134678924819589784226548677112988752753677208858925762827781587613411558087777315003188442434053015921060863280499915128029440429467054867100813769109806835644010129473394974884066498598441692045764790253291008545E-141128401 -> 1.48613860044084951715222920056973261815279526178663445306925734780901511653768968644810370749767407450406345406477591901173457817379431233371008673597773264006255503761060895405653689673101535643280784336124574816796929085008516621231459868176795911731468801164565225772146955968743971051847452860201E+70563741 Inexact Rounded Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/largeint.decTest ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/largeint.decTest Thu Jan 21 18:27:06 2010 @@ -0,0 +1,63 @@ +rounding: half_even +minExponent: -999999999 +maxExponent: 999999999 +precision: 36634 +add0 add 5443327415534680057634590618944215560308970780057434138891739495963582756242589738319668247177120341505629265158988524829237667572806298959061428339404493550555320197498371675445731688006752136013063629958239229488228661430022226698921059229700302711498856813877760931723091966288794136082540505054770026069441503625137664736241650030741673843588895005362021973750724625326488792142320010963987520199314527018164270479846143255241606353992062460503009990643518743287082493015121559276236194767188579782707938424993097012555874423499833585558523007298317629810760631656403492214454202814125612793667366046972476377717806369405379153861665217181889186881624347792797153919193896894553272438673693906180564068722212114809750720013602234032483230632018834569516364225070530030909815505159020491209685740248289519961752007080099090483650766053622104559929496689410683125495538324261337827414689086653250518675373920420744133054368246204338021272462507418915502785192071669066033788710149945065766049272875188862299521470018556766571020909126101603477993220786345071717133550461403434302429389691975083886580226819518149446093250864848534409449963760976124876408656642689172294921202936890216076694644501717769704309581263144313268432275349887445184317216152764195697139942898328726089328566800587595574119680904438436093668454976388377328829830425757338424503113478474610757126238073200660351400887435185336701963533874439335614811094695452885348692924399311830722317730193568267296235224336712774495776818041220444993709707112479950121873509627846383563627812137679268144679964273874638123993983875739012547697773054005044272228660046521177274712229586610768134274997594999638135185956592074491905694870962409158623362049347407391605553241280232191817624832429919552260939344247273488056897610639447470463573010359749472685923057442644125502463114137920360536533575799342591181289043472664744452638035802263535073169174168569884950387320459145490340864246290100986166710712905022536959168953896114643659729024691545509755873364769487414266967068181118339123159384709490859828388580738669001931858996679448835547298542080379338690331489262957339682115945283201741341813210289780111711688080255173149452331015051889675829910883430966595738563112788641181573366179181126019499583956026477062513141055336102241551435481158645444162126742379530302443293852047841445613754134055593352709946934141218556508411483663964454271711628032860847668053548854959468204506942926909201631602673509572410248535558379590372431881610564246749315959229124631682997120550639157245727873054163528749096276961926344440650513973658835906632406736656092661454207788008740213411394025183360204235548855201566368308150651361654030313220514150286478414113969942527922971205112403836033981654578845847902316011730245042376221355976588034723550813239343628666635592995469479328114995432453695131184056557321225244619713938006600504482174424955422074236479770984053226320248415315455880068616218160486040967731360578512413160870108849979470631199692473568537410547539451279035140775409424496873356260397582744553685282200712727455422544203873840719493111302755847334023928072354300244514400869084948434060257456133143522626468791484677431084584053222232821833749388920533590191164516834710781334043591973336327748622993802754924687773318529652771659914299248723798316190385535634688479108719234311396404323635178121557799954457188573042771352026951937418629015902903457062780415742205005320133180195473210960368524274888979877334908930203076201797949128557708565701903429538010317795763543628489874650987672045422755615790565495915103365698730599162795270492042936987025672566409152804440258302354818218660205050527207062658482663028095597405073749367581875862231489864836991608412924554651603400331283188410254836210658197620843221692268267767778046068824277249279964886849338823359519532736626811240407358269686005846293581711927615051902322531801358975650209172911385669989225075791104461197464493448247315784983445250250678191375836693414864771449639923822058809889586088065890540528466803444861061074655187514604756329356356317807238079450736020570486341944444849247038544925635441577316085602908149328159638782186011032225285972082985614359398948647719100776348733980190405593981611107836062045163752241536297922910737175259814560845260326508116586374629599674598320380051011727486755876400932107321197708776874849219627426164229065830624682703638760940000832772540202389231249036868702940889324819042844549013250944643792214849794327513263824108913771169678138745612710780214004984161421008584116749359721226225802772135300425118969783977856327648368954620550770498604994204073286198816005329586214127762600394197221183540493537413718657861377814900728701132553349053221704020274252093155185048499820143739937090341301903390468762792350707658194477848292777658855198915293530727745107633367456566480564058103094492086840733582555733523964731989480246862199717936587827355636640472118890414726099624053773399452863616828774094473798846185341638620185292765709034200822882925547386676152659941924310855909260457557671171992718610462588829920232063152171872604768484602202461635782532209439918850249661666980214807841034790495735558324334492451371055239852248468363437980870623409597232212868853683008116080677942965593744008896337374887116264508314379347099230004414880624984488595629844450402473515944247767183974061970829732465873176498295598403731296111690295572906544484242928858955462942181011932119604029154613888823254245328242145487473706239176071710531667917627521531665319075088274867041866809759491739263873340355907292666571400579298148095695463455472225625339924305597761281021876777662616916549653038400123260348780147936862693130031034490973265331192540809629368132245616034194031733860593693073066158369452497524813953268896838734886843223346618240074845622785605707829592798452796708091004773714553528872683137868332240607795546252173681586596592078032648213136748260392832504974850821772335386887403476486001936374818971695503182332535654197409515205470825611664408730334841913293011431297168670030108971806541238968694143417010455149830337520959735514556677727266760991641991743871869004199554223802927910945386765821866234814966185270715016665530500715297626206807755819057865202928953810109052398888565783205803402725602741470732098767028241692270937374776887940432417802920919519634665051113273848440863092081266372027910061974400474189727376917196903593406263173117871902146732080034798749099875774343517910609682681277990146181481826564091279606385826364591367283831719325256227613374890453132692707437210845227547308965574871239390377708251398288567254769028751737142755377150594525132217572622084293991988691004581456359463074553522607884277024147433596887530444494419198302109298584966907347201237772100193283448724121244852590906497684845069048233893686266109396995111800496397804330243210530347252054935380545922928868843658428465292268329427546980388955115149804135846687786649315428080824618010924616973238261494782739118288114250957230384506106274911873746643606541676086701394791269117415359830888971912238987858041368026731566804444081742880117310103338597762351954361828838316855845382296921877590950309092414884577279463252943545594007015466599468758128175390940001525508789955964474271402300904665153698076266293700536460396877420809790902105166701228307570780030705457965291025240633855392260906327420753031836030836403582816360121830857983918175130703239653008608612802368558241284711301476360130782887435314030458506360631827099450466831531198239969901667769524022764587335223629689495825441671792626194500174733736904275916694881556849565034691539528480081718655796033360115338214803367877876372058257738470947974564967097711626242718989106223658261653579032817948343104782793282165598628547265103905395650136338741832682290239304151545294361952160414490030491624300604490536683470115950470382766968498012365088888633723878618930328445863188462735743595227881438716302549844643196166184818750109003433601923324377810057979418697569802810478342405766351271563432621007969160493368862077533240820190408750588472829820268583892925543477010348659524227854212201910260951426206221315790477752927392822230423830108144279324117629230033820759156171421653011902206663241316142251822161841336060822910357502995499676983870939851740897074562876572639391721595792167320855554935759262848989776965359508962236695823680633266930056085959391114459693390232456946428840094541843250777536408636228378597677544959091891543587966078000995478915718611708200639565757788095324233497462644326369195628238923812723745479955765603906240199288902704751590823385723393566251565944919757022946791875837863343432827532455092425661469935917382426191791151256120957120504070539424050215698914174631020407922204278508229400929533785341666378703765643187497032274861462462557133665486205942638450787888368457850635506677077720383568571819868851190964461009039822340751827529251409539504550018319361215585859503362271935717251358119823199052308265437037180785022560939341917634732891337945803530077183569245730280126438513852947034676165000023920849624628034343097763783282888131643584465171531391766157271747647929640890634407997807414626070339213816066055831707863774675561707905285314509244255891025332731592321016485609659984117376747772505296205838529652725352688427634028813959579735024718497238869048922385988508133507352885284376939472892397604978185639848519310894206095379443480335442393967400947112371802292796554619859452424051519189992213922447127009677898686756679683937280393462388694859464382145430404843669069377724130494120337019721606808431651004857333348905746416185330690913051647283061131165299429443222385718188486652468406137644324704758064165850412672680139896094017685411927208370424867807268719397792327582719443914341366013216377649382222265464619464801281170811120408802139667354217717547777807591998367175075659521773806281568868653993452356617637868648184053044936501230369527904221457098737569439912112998003567954753060857605583493564426107217285343901780941571291637430017185613148714312237403500849704042190412373082809961556746498631272230380438927719070016575116443130118688373795593911491190758106388578434533979707069249857166154499340461781754131695340244850269380001014985383451818130925832035846580803545492600030917641789289538592574161959054552333839456765814902924936750848441759150128641858719449428877554499366874782633698933298514827457883266842424816595841942055140859497453012205747152371309296540395153055469214082075037177861177674102425903994693939905293186805283071108014957111379174608131269995004012284495491452858565378201334618675838026532057402410502072078458680195174014385767683231518488122072440029257648422442228481765769836105549443341902864476907570944595133038746869057920135505476471924120014503224716322014739995304280048494175851198211414811271462569899656652648968273874475783258596670003342975302230135662517100712456802698230840379452069526337809525954561096358151727262793397475169373727566238217633760506199294680099311460914600001137806280386290007995498678108240197817560643961873332826685201961716977275636296205925582623869006552769486087425900286657188607250522936770723780888439855603931867316704602755113636923017376154290047782736669085786845938533477905550522847735352087549655338504738393903536443529864956403633740093779608836702418357279805882314619390576086648093713756055610667041760922014883794418992590753083298037284813196396611339995369745010262206880584763821126864721569450621052788278692980809081646802061184699119017635847842715141498299751520917907026048934982931591776149639614290823172975704382674840429038384839143834888181516659383781865167207699903585311987447276790845193281550455246936242209651496392805966110081590767827797370817971062380385090291455486077073080668309602509511452632972664299555105137957773511690941137004795712928851236781945446163048170929962309424032976615720870201829841780648853200010350399920558909040720467499386867999787043234528497380965605167618927551437469979590336709892813444930652559581875741789461868938771863399128658484268648881474251017393547387981199423747698752221045560543876732973994568592445078467654160096010411726714752842735509648875682462408754318312049748751027138172844233091012255702190060429934245275670445286152538645904809321066373981171231484075868775924052098815971851618383307072274805357285123019353440303426420280957102022048147556949306006042256344603159609472099691722743947031915414680522560248704648295755160033249046583295660013202926558267099018766606022388817567434461516668774381848168161131376090568122921504103696534573680795468922612068894058677890831894878260900830591069349897474088950524117217297559217394236213596855943179370095410647737873305549128964846353306548555695347938822481461435006196436485760243490338121934322738962860974634920523025457704192004979381197298223772805326475898498773768704467109176107723281353437025869818423786760706833563842251989134887609632251037987285337960927404692217775102181544163496081326171718195430218952994289572541347541623022683885838487831082082964159609718194454807910745560423268707071007817384868048475812521327818373247673469576558282240440326985235865905581031470772892978502391795028143718557180569196444257865958899725306570457776517111648558036090341272914556073142702055970169110197239693001503183990703859788950762155555559593258600714703522349728545152045008681125743146282139695379386192696051147552936790881183123898904953150785104039916913025763054770269743695389038347423336800518274966560441029019439076880598541923617855551558433248871967965126901993027297049947270736678512945266462732421348125422220445863590370891260430424071062344897388243872763520362526662055087662157663760058510478582538838123139624751730527148554508882554367509333102267244304133028056596723567570116943045285429698845607544487480944979371902476180604676643719911702882633790205596549113121321368090471832227233537922004199570588585388194698148107138002707076763867414093679651557377042364941790047720055422250801066766574276279472104970455969280745524333382207202251637389831911879603610049796340625593198332872059432894895910666839818681515120103939759820670930706362657170839078573518429551585540107806475867585159501802793233630144059123409521664529159591746901191980032595364714263250650201564613218427178929608785998350784724597724684531866862151993694187628469403209338606559904073920465443787777161164791373262639746738540500639273322355378962427956556846984945532530562737259207854292283359099172039303847494615347570358112984261344654943090290547570267489796163049548745145643061740313490643863445942613225253631571691654664988853308317772311461223985030442301836498063353493056833644929073247671127937689484019956322670271139886883205257839036661312075131491290319097433940042715182813986358506821435899079708933993981493216018319584075209294100806680961157027667706829515467113880030556350773725499042647618964505470591601120639894902924670458464132042131197052594362382739520285052840158277093360135402278086510623912538447758720324328029221221207038065840629342783394536410022085675598903108226701844926536351787706336168138469868544919433941933806372544230288836861333804541426954046969803981882873887014869901632053894126430764236422506539518768073406853904520045679115109106068384802758820400896316237343505344037889953201261386680378156433164078644537160618748855997000543133947649994035239528190177929711757281449452323271446256725861316631296989407457965229892919775207541810861560451217634516948250910860911621294276020239483807770900518234557131045697624336574259466460094319751018957270912804339437993827268062747564420964034198198534610840278174610929209547591873302746369369249238982622952538559876060774973917758332814361274465758106332768535700814591680675948611233470129600327825649620261359942491038010289810411004803408157124162787336045472494429396832110805122739392964219388438608365879457130568016752465307377932255150529746104405573147317418372473827291162558381024766725133201163819237619499858415480773679874492741368700084788166810824948503000383255378383415110429391408024779384138403744920513342021839391925748841322926925007238776029058071734227732907593924439728838180290709909914043556538888576225349372713773756500297031285453878278383246104135258617906814162849156844980722351310777637343064731098616951785582261534692681684671483058323916203746859257759287475854968535821306678129325595456313578079382187305122827648610052232831140046638939957103150593728318876754711269909498294682399096451444131961560785953516967990783297459618987245944224986393569425056181639698694017513404062128135098595723577004729439562613694223466601108968775587466346113069418795420984907568633192369458463010816791362590138545592970224511959696490927261092584835740480124795113690349556836878634787118494913551987348424913513225923099654607191534294998535525199662069783677425268371282679238264363084582448145716294612967399612843834865022158907348077832397488696091975080354386324606495252508627818170391470287388706745574251584412999503233509957989071269636083604595285569712878887268209921585153235979812036035027555781815166447672277049534191382187205282173503783228929623293842073611491738001432883287262618746337594600011105952448083981661776522906091831822688857206464143464075186368970795217431710092967253069934117611958347807818136791591429721073326165454522311940804492032339805858213771831568462607609253964783587594269655327677830627749310502014617584574995924095369890719285362463578551809830603713067738804492862990000176222920090269918860792679303277139670659010800977378486010465242313847795020436684927043834234892435009956023464173227781404348970130177040585550275320773730749205587122252040560647998386663710438856161966757869308851523422337394771070146785856554313446655020788597783225814959601713300846796193448930497383080398651768646025401562041497953436018933964740166116290275845527790400708947708680294192317822138609333733754343097921872841232790242399111492138512994776262338278616286743578180094862260065540609096482773735952710888836934747296712155081081831900272204278602255236983254346820967563218748644021085506564451171319826204795343491402368686833067304557366150348477218130966311922434257447129425099044309344295964630469524669867379790442160286643662822006833909478155576246929750307246121885151030990093015047196522418242873290374546656145400369592751503832917007511124501538166677955958523219819443873456919572654529326432438996631186756226571663607445177297647346759357476607414417209616993034745269730006768557624217603979042229245595833864947140796075396464343093114400667923556865566662190017074211896564960255348744099023826063724487251726226458134262806569161956259919555420465305308795030569211640671828212982421297956110370157590476204146762024303351766492976588674702911151108207905686295882318369765170860877621823338429196783588723433978509344148620328316341200932790728772208927555387137839 9184514070611190611577125003338810458647011574244965797339439178532219858225342047639052020019297093484775974393624162081687788333521808315949907428207515419751080892767422882935674878548924173865251952866726152642593705810636768145728287015232379310284709174630560817858983251123888123196059691449720883396113211383670998427395437523082436599307251124573597730893043730416836318785210467927259788547768532415903272048275915838188156327050325771492751083477225406754910336569991479453095213438110831439847323292816141556275848449222275534466490637604877149346198701973058215942248107341534932138028853912000236784495983177153230566825578062038826147998206062337382765180323358809165198558415853358592048201541296249332587053183696005186780947075282723525563433840040704613951124622437948809526325848170009880126611893994080171116031987079168714968539672480366715167075289647721715474968243863345351013532717446366785355953698737740986565398122992130774500142893016107499550205104143717253160804101429819781919140711054934061482219954257374224014438162658126823617165330424475853070662342643110015588204843679389339075434945784173570215063232481123175641303024189531382493948244251063708722556487532629750763425250526244763273068733643647479158562820895936245922233556304355354839111151953779119006621267388377785462947983980222157942565352016555758534116498831292687882093076542296843961427887061546199035557475123154361762642187366824890035125706941887306318991968691436043527453521775841060453220915174089442603422963603552818734696182491799711783486528045828080493396543067529488277108619794770506863483290806237885456839835088566709217526454422612073555770510396588732828760606449423595899250673140805379886536309115448057865607267462443894621593053970858576189249125211739684025802190433413760188500119517396558074925437647058413076764085044681775568862055909729208817160744804011893571330315100295774427725208951159008598552475396657063874053580417278578582590813187066427649969812844326942717657985772178684369568966532626486100029750127482895643535835596207468166060203010396411292118917212918733179140505303615471900888087666822678072681252469979733364945824365276573941567811811659600198947908404960369698069708467791073803969711012263000345561106665956433343491076029917037321399665812417840049075258893010543017050118618498516544734508965539229543946765973863681604878649433971252164164835634497189860104303377353189050000135074703217367455686233058414093026434501931568744004063482315966487894038498834881549954266749638267200820936795581030474235340427691345065168234721263310606168841479041964192254855729271730668620022766677772285655645386278377410412117008307000235361970631209469666357353292306118792401672002369815533938328520408929495029650812514781751895998648965742070235258628416270906308179343632837095375639853041190713251893021193247908928848628499330230279853633595807143831767560638493119357089618619355407661863424823897904167595879350143957945611350699117924320349180023921704184575872950498132514093753042177181211243479046788323531775574149253607299945180966259105183109834344295014085936309785198934964190792802152480223014791958069344647378984513967958700789636394957114424761719001076442113404679761853227616034974880317708218802046497072943624631164047706665998062616906634643978566485364746600095639715604155626168425404315073253329321151069759906496978900169338521647564524823369130491936139551416157096253909885637252171018988778793585178749788653284898344729668866436162652172187001557682316332960976742960049795149347620336923130427878568140886622781333789946761954042079257112598869994328966933200453009636289513875759302925627453815184031527106530248922553621592514057229889910603295532950816778665467888814062038687438594557209030252949547425395047116227465063660998472601245603597641051952505720844331082890111694148563118918538991045294859840940184680789357303444835797805450677545947969432363334893782746676979585273521132496576557169575524847446697482018410577098604235613130080333755070549964770149742219594737810264699052600406471544634998507408909631122477617662111660182135336779846019190014963424268958565507435585625508130613667240040300194548763170574801429426282762286146466164491430120973688187939392215746980744284268649951047049312453341994594315906850996217705195115832173357606978901951814606567728416649467848799683251133429078615075828629599882391731224872893733746962525039470340621742181142472356048580466693933322613466649596261285786200932126741787711680773732646706026193222460603852329335693153809484478809789492790506496398800596666236786822154604085586004630802360328298465507002828746812640335080969254172427564435671796421515671435001423662448647197939620805506339382955493084279596082445843842441632635884606092220513982235497801064960476190781789396790078462245113779322051543443257696164766203211440145992292734725027260207964542391392285387458022535352847986398321252984003348154410412348389702260630233491723795274092947266649664162077590706656216423608607945763959444468516526264173623914129142893760152264057036062554193971629050739408366501709371830167949137225225744960200767327948060299414897799875849084894077466758024386408988823814050621850668169406734550452884210341029450451672893027816376374696560480446416545004515721527158463627210728941714466091785127784466162295233202046102568360646189565075831700392984591537600829480319211033059165072929793833095597770821313275168468066031022022565112566115323547562323407699700725570524083497894369016314106768941278237716061504552371498265430862437294333465497370421195611278156409720171350068279189280860999607525514700169559484883930559921343340175038251910873358568294960319653212961142194923247032559617731276900480143581477577771417512445054732834630168895674159787663306569785665249860161760243594774093418219941343928298311381606672321812667583662844442796935546010279972915000786213662862380894140841351369640882482587501296964467956238125977005126761784567857366596641377213845502418891879147025891481958443723363444909444617212830120317013252408297173559592107357237648009056368506271424537386152073828197071312820905505741592410884961314213870469460283288743422897034354813767921961959450411786767476644974662093907212525281737152629073761205560674749244518016459907663052219240574968211160473496672501382216237532389400343170754125221159654973221375624208202264752292368161360667292134635280197010438143424638297132561624789880041318717752547451499510584440335557900122896676878028263741860984087129823972795067362794456940897988648787306382533022540937552040409797733660259612543896050921675318780275395108545910876973245614632858641297362875395593762984073365232173927399929305462086963092130366346866720466190133199306036593573726924475748813840152260105512957979631609903130563588281635099033069018000169239193397932878807789162187869496799017757736115473028298651768086275301233978705729285691818225252496947341779996462734002588576164883973445976510533003949624145004620796123451138182079907241473633110871367530398694786512553719390613985143359770168212009172063323481798543749829725513340633942911061876782443920826696644968292425526830653061790132021451962870743497012695203778105066504985047642315287660661986014348904922718443904200094223613391481410523788271393108824529551718067761713031916182689795650679361016211877153069129284317327594660382909634618047305727224017726879780977809684262443085172048020103994539691086700837271965474164244950423591685623045581729084443045653533850038371346140761670693533176043472914658023548451520614302310276825840389223559207078931104147712168801519209583869522552676405906641853241255269400847832723430854410450146877825697019950955950165741494364334001647594986353335081621434213351291418318329497810028615470535944416037024825318240389132953896054865691537992664895304488264863101176059175316831587273348777926749208144092411386334814314030524953439021764967909882886311335074862241875705781607349566019393491422363509126091185625509301739871666300529473752817541032073767098104460819214799114579060268617782483221857374868939037626811572704866223730150969100302944000009028397839201387570316025768803057199506104413942335705312037127216769801405154040695157535376843500488213989899717984648725899091565817669892565720190647585188877984760108375957911185499419666770874784928942403053626193508280645381707810630339238288157065829798094912133967983780041251265871611075131158438417951081270345416428012884535565753669421039259157357233966017453268702804401583526530381706629481130288076386271322953308527398140645386135383630591318632453723224937479250905869078417792008952522936522266740025870519101978360969398759006351820970364092404983169001720586223880457432215899376185767455909481401464723987479377285333535470515862112362017884517242344790523150976070304198895885850732536731074520083121713566876528889084028705700570434440053156186220257213608639744588299184720782586127709041407619033570541716713762108289120653913353380762285454736014980347636297653567570016517295166609651719856734044125422514185459115475853032217991477350920681646947501650213709421400053458997320798084345590932657082962880976244114352655711251353516744511130153855206530583876123095000133879705653359407758814403001759526860227703023494515804486463323418935364577237134660625781509071336463832107840797413316225281199089872869075329774588400583793631884799089428848821694455591682051203210405639634922972881470197385917825817151460825344503013971727488669323044032365329707850632338615983260469020904432723208335853429731131732740903764456053521748902905377202563539658440115408374112013586259592488110743450198550469534266841677625193956785826427167946293207341920062982574894706770198121069591462771687670341319497818528798824326715838860171839799574975469984649428946000899879823686747540130041805288543281281909022866504950118419276422229730552230594911418245455466803728335594362325970066063940452059379658296873619246508237728207508754522893261040629045746797575389313269117793397543291696512772323211492110125254082613504665614074193149589777935057297514236171955650807599897828448033191165375780356039092513106870967488694581657201604816298535497862538211517537767561271235933282450242215182054800359814949642514762165492588072341557661375166170505589346531203288244398624850145753638514070872073760480183193978177299578846106918659623228483098727324542668965707206142131974189230383018273415509915049652538141597293321102268349360717361194033627290535934219425565529126822848427863204871825756462584468985749238396812752452272162014940211822512946013476428535407580765578586002589384656467006539895817280807007857993572193722520551720809678406476356087826076061497178633812556874603940582775286452656952836577676602175851808992650043598234144652927569749622310640352466936938439376584908040979606883851276367569434082503875581484482502214988451525587075553828542875619738940024055989883991970629607944531836526581505746569245839817563504971226286743134618486088409601274094020536593621621532429144363453101045007694836213375763363827253588708896612931076209123324238925382776472863331707283820667444913122477064736885915032317858433794141118256301613301359654747225924330305775159113974509697207743985291640900287080997801999146291885126236703644432713334605860619794247546821993999937379698923780984629796215445087447609524294262490761052575470294427514642115808906003182825318143794094146192039513276644360030815340499004312669981726715075716861813964722445234441291398076592615615085041351210637164671231664679881333773799289855912665142831598550119993439581144755724103740963426368438377120824183304025426451240790971254884220694522950263888242089539012501289705692054793176430259308677969230123842143694109160714001187034176347268978123426583199320326781268793217981997958357467907371939671691489367851588993782858477050994140082283143876394063992962233901256735355588885757261428176118841539486703174477623541592742467128171132373041686429148214013716823912496851276642737788050958542249653287507587831820811512767359718851529933311604607265323885213689030826930195534806635846144099713855490360881029694689573253466625221977295877909980267554125349032960420996621415788019627593842238041834775386127537987735311996097911252187180383519345637964837162787883355075485892065627709606294539842051798768200978793657556658248419959073328498619922340391500822094220275675368436999964590073711746353951251478995173020379290497657382749174011431619603763697706612256739587970863054980317367195980719064677183856028446627758649857713944388545923469282833449639711488336860282167395517358188567906195442321531392751162356923145541506916113793575989020478977574872131136676154070532886256346854505901494876650437273495791569350992151719208972676013083592715649370443140107985567355365743104955422150125588482027083422285025418450880213048099893330876192067235774515838017709568556010718719920439405650702871378327547858131232234951821013048141990940893967793922741192333781501140258939107840086650516421550186292343900147199511331803558226640512642325636930721190418074055896056617216683841900776229342390463087843432659629612026815385560039581040170046157098983348923741894486536464620173883225003048622392989771478945032592853655222660041511812531974539363055901167222125294095688565495544796000192920300653353332578713919748211742603605437468952129387279322766260822702762186087229011709506380744039812633304537374837911639835033882406139249845897204828171173075422326426560125884118483437600091529652985150114056697461829269994803360291007959899294099020947905324338214707704663302398184826165037081224082232925687198052428469059561422020584928892999646677553955231019542057147285514422786270406172264572668296511743691299493717613992524328028658313003359227115855796276384548650801120074108527321837531662936092060562036935551143912449435883625794021105029726804435400156543950972699488993486290950863652845133255191297580928036460215676988126993293563137251056793973205918256996767640887360924447827391974949645760026078463672253243798720572071260248979177518124059013463235858613171829862233691044219576708705949826337735862517120836494262072823297992605711625938886066835000075385251968443632571001559655343575021430585782192309563905931435872483752499435914569842134958204649442245724683560233219379773684903936429461362033988521089739748553397977114214178620181283420337609871855183253306882931230701799437941740622752990116108459808028460044982028958403917477357846087837358508009152793189790816014680385619020919152142198990361544864004224665451157962981969501120535223706102519062569817583855940380598017079696881307957432557352105183644164463345708421029900833299098061149898388573317582454150928691393854856118272983330118982664356692074997223414293534209730200144605023368863136801009327540293744625800869953831822717467637874071335931193268112323768207515786174414733661818950797781468083276882845196473815824402731584026267904774020010040620832484117237962233020350208135497554248871054342717991135929732530395921624546127240398647269582942900451174319602480527217798799528696368424820646633654585923469152610402583502668205061938576997424478757282722446848066348920674570075251660621066458490322547231739603152453478242520737515286959741042965171816793464536248189788286110725242039730901215706309345533341461080397331093047695689913083883006466048852298018447404099425664347730872957174445098946778939812579708557470298447226309455323924528527985622937114813339291752148308052496298463452884051876323765367681363502811300474720768294997191867560554174144127305282549656300951480457495251509416599838574231102286010524676691610954133693445088068266648046843027931222855322199105177617691637030636633414486438937502282232029768289522253606974137786975403602299508641994836315659426591585333163621913095857591438526113492070721092461006787691622150289264140557276483138260360867045797513348352646538807883981991924386019466171240690984607946337299788378148542447814994053803337337261992393512434838177876985354519354133438038169957134370774937924905817170387394165701446226813393049890307591349176718276715375007607277854371108777417444047305909092175831590852501049099059393083854464277958392849869090025147725499000038466311360868275557247226578729032602678807857846593963298866890551147976332694508162935574352802913293715747903118183472953135797898907740159586290368520309702230269949558158655240836708032721847279885988580451610053602754931514650255814959342108084114263613004615050547213137249393352210290339426584497951312061256621399531450739577705878856711414204300656929030240319434322938592315265176463914010242957332925851972628694706026086780418466341482820908760546115228741770240380675113354427026832287971959369139382611123031187911325379005966434607980078471480959814333382350690035323255444037637537382590760276340614587898348614104401357634198975176544776268793126915427001959423541382276289350533022037915010614765056113344458761223538006057334083678432874698417126170665531217502929597495290669953770599827994284923648874305199323943066737793053138761529761128807392135505636144559672176952111386241342032134795028999359835100350335876841013133598678841688320397552437598663122714028032977118832684452494026589345931006865396524214584392751294060928761760532369367400381041089873505065534370288915048940224826802924425538357348429089392434053227009069688203297932082320178304806338891331798833346074736890214874564344720809284370543249720739893064283744840520369023022311370468321268119835498740437813686769853284282470961496839139086942162435547406244496823541062150283952849125365197769054757457226752134289146065696611813545803371732479361427297462524484500650279966570656986982684206848141648653264027474720005280401425016187229044968043213679073871612962282177063464761544686483979266638663619701196003032652488417256903691169556670103861048439296167170053885140826501334520303222508843552378469353558202868290024822766518378180606770645176727421305254738342111258026460185825532237992043952258465590230966681307389016607840434362974256014059222710270176563279697604075316707484236514607571085413318637123365858826412329771648712301054958967831895783389366498005823497632497204051125513907247670188967507463330086100730857046952964623685977470140644161910117393902301141067742812736107514111692994183208108375385034371426893541372594283851957549061443602474687305585634379037367817611189189762962912467061889529163970071482128553733562656026345063083373414979932723410233932750168482340382677040259232778626516286530775906593875255113747279669167000857761927946082312341627341772995731621150683328552913870368491030638137150832410172454204668142612262299672512285819088413428643583919336423971400865892236227510651354079447609817666971915976143126743234709895746055221165947943059458694217823545836976435359889148592061234109811275286788154739553613633372607124319902900199497413786563503942678252767633936446398262461880167107 -> 14627841486145870669211715622283026018955982354302399936231178674495802614467931785958720267196417434990405239552612686910925455906328107275011335767612008970306401090265794558381406566555676309878315582824965382130822367240658994844649346244932682021783565988508321749582075217412682259278600196504490909465554715008808663163637087553824110442896146129935619704643768355743325110927530478891247308747083059434067542528122059093429762681042388231995761074120744150041992829585113038729331408205299411222555261717809238568831722872722109120025013644903194779156959333629461708156702310155660544931696219958972713162213789546558609720687243279220715334879830410130179919099517255703718470997089547264772612270263508364142337773197298239219264177707301558095079798065111234644860940127596969300736011588418299400088363901074179261599682753132790819528469169169777398292570827971983053302382932949998601532208091366787529489008066983945324586670585499549690002928085087776565583993814293662318926853374305008644218662181073490828053240863383475827492431383444471895334298880885879287373091732335085099474785070498907488521528196649022104624513196242099300517711680832220554788869447187953924799251132034347520467734831789389076541501008993534924342880037048700441619373499202684080928439718754366714580740948292816221556616438956610535271395182442313096958619612309767298639219314615497504312828774496731535737521008997593697377453282062277775383818631341199137041309698885004310823688746112553834948997733215309887597132670716032768856569692119646095347114340183507348638076507341404126401102603670509519411181063860242929729068495135087886492238684009222841690045507991588370963946563041498087804945544103214538509898358462855449471160508742676086439217886400778128450188469459013172082699801072861230652073129877146030760848495089702538579227199182602136105395631709071799998449788276676638023968350902559309500894383119728893548939795855802554214917826707379564749301526092088964609138766740441586377387010463724194125442331302113900366996818308601234766695220305698327994448783749065413223977913892367568726439047383994810591219576929780017754797197753181474706759034655056685653255892066832749651278923456850045527980591898757669542532823800904181918927285847082452843075032056394099834540721148520081600510740051655987179176860998028818988028361013380675157700900029457034314825583575189808672576319298461644131815931410214036718053683929662685571962629159967615724629108011503978992539621861906338919775649063081630865913495874269950197941487434738276202108394591220094161445196647607751256682815137877870824661592385364392122827810775417985697049670569638581645960972209873368543512621992863499979577867442592597206515641944897738505143440924244963476684229658362684067907728894008118291591235216450994457121418687261503730968635322520518828247325474888379092985405949724574849993791640196311626006192516060567355836860602672581727910278740279777972783814039836184925676971929211531085190458030003392335384268346519035543061633204321212321986652903543661679792173156893807292582145893693714527727313708185014507197239065632532958892263147102396994623883876906503404904835117657490585169581121072388199008814941233898275862793600295443418780551809591099042262394019833400692247624966802631353771381146559406303892865734088544916286025251238844105277144638626469657652956329191317706451436088742381292999591476760787759507839043008478937511996114890957385351214461989753953703024677633162233253659871942637960601300744710123384219762498987060755813338777837494987910802473301323756677188277248893312460684641242052383090912931315992605766862162440729772178114121144287658865711238589765012911950649218997587806597471786465527022815653770273880813368713642087769877745619285089160205623015890337919733331428776518670069880846921016839355059667690602422848320959803526276808677051141153422652112295841259625976637156781100886718859355102352559969573851138177049766969379812361540614825775525638073318711825441870053875536952139143644656638030660690270686398182671325773707787921076300964354863726716869201928353682682146524079781629093057734940598865846274651110343734953667769395853251072525480520846156189160828374930481386922814898471620526567669799047228277792144496525804947873957786487713156555439576233359112804079824715506771677987029913679301362444129348756789046508460125982648706041240057695430507074434863633833734579735065241859571870779049845413245373399509538482335864411293388476135580528445390565896625451943410785451638904002674608836490756701737926233838531015718593278631699225715636020764678482252454540625181572858933292669580289027562817969921295097016772821761656855336915053085153659285040263547926640753358855392604659513358531689237630892342261776375821696433522417372704260593415668134385259637689567737317444029072852779288550891063621332683775498249086784821565760842763698066356124274867704884735070784574225676889624475467044825138448013756034029686355340624048187421065495849503716210891948982132642808768646884991855192678924115548224985052154217709935229028781164656560458970971471518673581976598652551339686861527492410207246798309961081878014683690119684573202316348720901440194869290474099136532844715421076293807573242319305355901143897054317662154224455312882379402837791666778006557828171718880972410112273061792139683604519618512608413373539137802530125450464714099125078722942329170855368502700377579840699680268738110649077963141626594267180004146801807651649845188199276763259569604900684231734290472943556791149779419413365075190354176558206805853277713862182678735707868267045531734661506486339531831112461450581361661593176837892993213438375171222138716231823012783243995633168188578225100427360645032725759615671609505278106138127798992999621393198973740932203408520552093083508378483669619716203825649173521096764178314763326586382137191717125934803878250887768461252959895249458972972173489564506389142875420006271815289728573512864408603247786504232185568336880396178038073089288662231362307570108132093779751357910224261417485683282517268980100831076051381065019511518336608945497121666630505924338073812547497485464279889160868437673397371228675509244763269169779953192676976115942287482774271181469849726270390484666106439182813604449240532450321419185510404522951339341996452852744434047278270156669950192321262690388790272272928821662238716289468636780202430135761141481862012197393914031549687811415004463771521960076117466852423225843028495050018239178113042858359854827833140590472956188564162351194513782197125602023677759515225729978148397267957106699235130851934273759173073607347530164137297648019728622765227383773514935497479887754972764369813630286863003858984694847369154513780463607996634627618504338702872311891383096015077924360298796406703752854755721470085966480168081302911686435348590393044679304186966518112707329365009791050853574221580636929933729699270974058713238798614207612097145915843150520651904004245708591456901127506242211118927743739084237702095412464413347748544984618011136940370873213948510659731400503190659140124248159921364849825275316634169595083514060221165215380206272781058473806609281372212949983667722971761055285628074292158456721650660512000514241784045788837376954350430431508399868674365625914296146564221864537686809360989948595488571503934021349391023958250141046917335118360154524951182986921289237055371079141758060421309696141099640542246361260302751259757003148303889069395513250185465721310554374573058359612187590803677480633300505202877339001640595200945567495679245358772081210110127751948618466583723733940815835380064407050358368774618561062081156487625297649274615384739062636091308730782508404616296644994515923047877367737083323107871253248006914114439382556456074211600495096438575880574441340066173363567150922679372258047600160053490153079385334979889163705666595858786947537743731544895247220509181300020058692932960853399302210227703653478114192773791164791720348977773534384769502494855965432450468995683488720437441469111007816158583892303637199719112429979708167976656593509437972891972445847698759306210704498248343234078810493328157156201919289349265407608886106503521730450021736528244050479984636154756446803622164310212116810547279050163729530132151540146490061959914476175172888065397174518525040618881834671252530550577221015458938195640483878162316475183285246004890670047326162918921423995885884054303248427677170273708212300451169673001689195487489906573795025690429494657645213009005337158352712881736064976903443967341314625705940126943774614445581899561877121251143620601151739289870790607535158474815760864974299435329983736928709545883314142577889213951929510816061824420476287738352790284196134425122677706727950996856266115075099942086929889323669002495708778214867320812182240816127661072014274619651985613533203969685101828489183324619442977933757220243954249272652600525569421625404514165226042597965436168995997838689270800905488924627267122395842477433965120228112319706221618817799466239758575919689553932386458907962320825243793220965587014170563936367132493791640853056138841101978955024744711284933101841064984518630528712564241617338580586723853515384241921767281781590567332810566961861718981206145584028380314643123961544384740490406724018245136520211820400242288309782669161948588089929925562294654595468651071488550605079666462238611269707223380221960614151527873476191236862984729277368132588661687061494683545848033602323919993841999678714380437010913249396022203963941411116450053710264016464530316275896376722857715763897105353766258273400201110465034258576390541470509713808853568396991789021154790297344277172644135393804581363849898977489227395813680609254232564812270997965406085913395247574846666292138755003389980058095209126766537926591151909435282774513205812791353119366871694410620364681104857558660538843944955897498999456800674096948485594352081751504358512163780072238907823421366204242546379015002565170821587283879753972356815948149841205512322477646321898234629240362001496530554461695178484862988150202340397105258839566320017005515318116383561962860745018854260734803227881188038825547518049766281818910474727466308700782458679452688045780039350278242567112395377672037108023052990064977790487065451434801374800333094332893091324623918922361206867766201423231135820741880818560583904698087477970836686976685416934042419936449707487965638109052106037598094199325302664640504656959432072497225443090011351857104793397639050305526849420720670013901589186682759750016294462743390304496950853767199565765661755771274268820346411769863831446770146210206826525230508967881393972958966913204678427411188524408950397889359265688053167586579490203783239297800478916385345474498503725660399582392980153383924678150929564523781172809640922720866912785549074706068772942072974338632655092462241218487870760759239191021695122738937469090735152843855358958285473585121528930050856058678538136839652480858688114832350081677470869646052536066842927397567080356902446395660470700856703722170107473388700635905082536132430282169733487335015690334891484003561644814232670769945757761411085041216201019072678788914331152827220214399209902965023543103639568381370564864899144741468905291522063930527085419412082131350663987255526721960726687133019531279904696814732861588791194088051839344254523330691076686950403571119792703389821332214572724893329924143684838577409146289226350038181683876730920886977244310734547177444229324326473040971370810710244014574876862311478896843726535534173066287229570091057401697261887102535909756182307079507395022832073550810773819691191766581481711769589220759046547276716667809043278806159209022447860314632757450355036749387902222853849200229536815803346482987242510040112672468960174362036089952225284876988511372005005238727654068414882069276393407449578395727493450591330132206927044809649262879542530130787654189979845376864228590039442234922924543325289711971309755959091269956767694739497053574398182450633462934627558000372828729663676711394682429080115778828080207767641295252142466732438240391402687254556821587790301796710733265749592534095163281844323742922787835269891798466076535921424906427663567822059070300444950038005990679280840101875695930645497098250428381912154287790585802524300382220826324251800101312617114628795016083250989701433788164396552266046798941090370408617975850867016950645275939965320694764430613621639275780694927242375177377697416584556913896079754002698554411088467272712102034444689298163854533991868308411993461772289988634554158714993520293754247818083443789878417264195193111374382718770394091630414209540207834409840963978701969198153657490518264336380209283583057235184046372097985463691050077971003094792169690354070390284129742199526224601312142614523742822624756415704298700274904320614835565054150655566879625868229057693487677427694385011100223402550108879989217423430261410346323666136202667965734548284542484818744663734000073357465275469126658139034381421973484224086708622680393028928179305754850145884551556603321803102603921412822234616980405245338189719740858873426580910526351130156719013685350027792250350864527962244265169483300350207847955891908472150939845188633233509157598452286597425968584789647475518007237513152385616798076766111546952048141476850719614122385348082270308491651011613937257563398208651761708197600766169303117540346354835762704623608000693365760993028545387987994026288610551247914231095910137452652662883735192019497233425985464576625915065530038154799047989932211089988448089481330395627813872475947514866453503425080617138490848709071683958832931577754845657454196777292303341609697690599448132096901715594169348695658108546177850689505425012391476189323423717739898852619263414820667648041084841358068329928332726806990326230137616857238744254855177212821885913594625188898543628852783829176670832094891954474708221521759407644480038624857428807786101974625781673446716138282790334156569248602114807659041335485072366793113301780498625045603871686275100431565844327820661387299597908554144683252302714495547447397200446826792652739951725348769176541352005773312559725326310650853067770492775439912030031669812775041578009259232631773183960655175777192927237752426382556645248724005839153958770397995218111109366131211160180932388575425939707965054845394148281659027661471034114990800014156508975333761797832598200863833545215459712818713118814424280420260129107908366248650686629676216431759257173772326719007862964229315003262499728656609099081350815423944456914960764462303378618400095767217007085473149915186719689466515534499712557103345806208659167755741705533249459297283584772451248162124310131074499803826540630304950512879649087222340958491961936774806932406060343135135596124503391445406962511527398599819331544340138229306000390122551239897332836260075605609341221490463702457308905851983823313898800566061699949662765816698960853892390920006402562213130449168672813842121563177286064677812024434050608344239121434788908202175627388544668922934711079296616159369159285614712590875017839301711212619811351271332010616906545537084574999118971597612164121658212385443109870001193335938718454100419549741881287768395688962190289838836343531807121916858420691089094991078355185782008374616678614668036262472205421118754473054085532136647168279523382247582483939890200318440768235467401219831310424533660036107205661770684966424435221046248957076593462039439630127496835179066152955422664890864820607168480338474969117742291465838919750770497755712049785845159282612344572778569184671923515594307160023904101686393272016278542275124105576494960252102768092385795111305189824929619123915767411574777246270466687512642913669096113278587424256031918167891643622679106926221453957140770447195501851546986940876013259585953046314998277256149788101103883528072732244119743939303114100322670784926892896721185660989271533357217533929564123781881132097264414944815784937625309613051705879970371165989785190477567741085147173763439122492402771931478618623239758476083404193951295859866187467881094499895643017160237568039341696222974019212548918811849831627112143638009693983981212342668701829482191776465000736982757201497660853778752527791196392948169343192888628836017183070366881559120833287125991448388717687231030159799935061769055538927042536710240989331003726875760318056557086241092698098557484797365310825489539488885286885130440256358446846520069969055214670490580592411642644614284724056561488029237034013623776658014710851172875342302158530992240907877759163260308047790482154723054220716155208778866089891960663261708585021825680949395444022817407353048418730361003338475698660148525643322599665375615962637286332778580526042145341553056502856702068257319720310247019575310258408375106659184647537191225288243746546796485295298788750731729521156716001412423285075496893695700564914211961084609447072700246872201890231156132450934578108701254127813821448268711592891929197510701744438338576804340695373242102779646639373932981167754209623582164668957179323783382445354135166481167128966673497480556990137712755438225313461061424057988534739859175233287304702557453024726864322774845134356414377105014392904354481257330188091198277377059690576844165807507377399870068223200338880852345471549327175731440736734205766034410002119947071240364183945942112817844608196246169274200152760584449389575831543845116276242475860751801999008016193294760920536383886165166565880983863774300335235142725609872886812210644612197105103630401808682346144179658151938990464612048373877470050395078901329415516293118392202089753683731698387308571041526754508657777145460961673062059177212081296340085547773963211721161084930227611375663011368605252247188819216189899931504248555759395196652589208701811494614677690865516845977760713433412435263900693824675473106668990840281178153986914276894737101411266384032428962920019074991341504767864421889434660797716333499284610705834188552637068755629694464697729211551838576845435299260469338799119397906259754267150576970319015084340516789940504399519825343178095971132353657137952324338527014254382230874752333809146776169649082148449530845747991966770111547204923859991852685157148607756440793209826322396572983944333422045160973792734218865506130287658100578732857900374510330699801761417275862384465801155279429897587533230155956091262308919650607939665314029289907836062587784730564819570016992267269241112958415621506919522457883634387641480374375791934733977021343450986003971788871650528196700887464450633739845487687189890926002010653135310555671495522370046166688949981897540195345779987729436397735840193043725903523810651863605261882304903886770979899991173541916177288768137848392195964243797729220837427234057692828154225044306737414460016886711286125736236773070814639886777846725905585927660785447656692815960149110016821458338800128958564424699345080053336531425312709967362810460710800134511679346510997356497747529992129645051959015617175436971801803907908626334178006757935183832259019453700424665218607190017267304946 +precision: 71607 +add1 add 53876780871789024836099589642305437416299910837343149110786580602429815834167316390830531296653617219396546161127309015079039597546110027775084214476982969700036558998516400360739630054760035295412687343334038791226896040096248661157567158190668565559852014312199495867826306678571355788390942528657705821032988848354326407693014369173729918635333841571120116438312132426025107064428540972312241332406561091514919958038488749598462488037520158213339469087687731617151388846946854580041849576469829023628950537397374619120772679383753284705491983058597403429982179015028354146033815178590991940871957036256513006208037387525963572644826294883421173960477739026650844985323522971402673855028999282680950357946538137714066724711949324883629751523853830174229926691748576845846370047761057662517485651823242463834817397711367966374899052982739367030613940913556622051949053926347967894052023263134109539575412208128764480993082937612510296114885772196551477191230957902906207432804991155147659073015567844987199278878886271016856733718863413250315308200447964933830086911921200563416295346663729000027864828838845514467588043342848755467826509145721756190610173124993989064285040067109946715295047577468285582288243510032426451272431912914053225463034539142645130649087402191122723801490017456969449099259853077826218697954157132499834803290500784498746301676215873502702347374982382466581635410576861669577631277026298633852207126454715784989922007874568964270767903130928806529392455838468968137528145461069719328796090406046313672128072448184853610355492534572952965479650171084185347632528703246354994895109700148806023403247132641097207081882736958881142935378175677779871538088892928099299684439244707550771442303318882281369771899616127137235576128245324458381425874781781772843777356042274648564700158767633680810462729865923648509010696265571630355448618844849086341314217022734965060647483990445193536656597259641747127442550099576715333437550996295776485665862388350327891942230630136301656608215723684048873951762010253688326737944026647477614584608370961728850937771062686751168940128896618587579739973105631603496089682949906034718478661102204727336624213289457919383030621862732720357911628421102612717253670756223601353392180150755988181307520588236480789520461829662373241986469698951688802580408803693127410396551015710468707652270863511344087006607185944055002127126118507762928953635462279759911377584532527776890651847850886361039917912224596868201036935268528555115428020354736225246647398243612501382930785866715505474704876219334446635335786929984544426980894342521371208067150185362291825101486512600694677955548439920608965982479696938967743350413809083500796850546764096409135818702694561342050390693539686279934077110709164378981882016330969329284001162296626949960340163101624461260134610192630628993495756421148739982229126489503426411221880832433227390939462387648713629775121421384665129983357204968719979632992462437523151684681536609186505233915792910876003536970409184514685448058277417488727601513181057177601706193541211773885572281043684029414430345022554610728725984314863667524975229876578180502358898790646959253855239713094743368296589741369333782640138259082982479388966230947267069299560120124997703820982818775375088702532284857989036830611644158381020490652629788328696674947868665070883182450516684479564331745543894337184504999201135814910470035996922601720770885279829093700317892680477747076797068273185466721498305565465908752220807376777575141621085738087027988427909769562595885754517135183834219967548379665996916138879150226524228022803513473996858874471894693200355593450850235039712605769094224948195718622597981912208494823682151705408021701621340484342223806378068809021861705206808295524704486976406217940574749924748625394391893044298046797270660871195368261058476275584316706678729617064844963081859236267517062731294862016537056602028002471939671245026018789613004223656843206640368370656269807811921144977377577343396248486432848520972634801605187348371566631716952346813198381823158122733500148101121294875410074029810027105247916556452552783647611523594927252020569486550772344890295366300727249130793051756800567977287063852861132972896068757847617580171556657229465653023668117538369528426080182582473259219309524062420850599339588025057808805480586127632673400647995651266343068639744730244704923876156281635952495534670686506391183125276525239060697611601388833346089916265071907102133182236928991283578392595325135613656508765986668769553989687340583293554852232916273375771907887101165473909365149838121536165203758573822550654765926294101170799337704121967597661311607576702365191234266148766744515370622481610982160896747703778109639638994765005592291791371019691813737249945115405095064617207661767989452622696625554921246050265056939840735261221369905206268257197265862041711655451008386241327056584308478845477726140876545090353690241738743862893109618102089428911934532881836280698666672862332223105257736163357583708301054172074788952717465537335008328834513134349409970850524307084370665551452437748480922961183886409666071040956639980424397518860802798277628949466155762402150243380163758343434921909500065526013005070303784755415543354821922140715758003065947238482648293065608288597447180198786687472592846982295031376860403554978176416558694798844377160423302781522043048075091054985522338247207161430190581951518858704981255677401946467514713531640174855364093573896423588368477137258124949294973266909160931772664373522609713076789159781235260792303887484503560337173983566053801261517489101859464663407531047025839196708910575203490952109197102717658283282105545100724766801911529050432848831422622948586310543880422350851064669563121606399917322541206385134059781326861981196373875480990622416595694768102854860507697345943451218362494401337184501178743304267564681370802605957618810044584720287368511270724240189388460823459578781568762884394210096864248011093989355499292250126103778968864706673237768602482286830395240322371317024226589739066388279009108563618973901269260629008475514503027803334467094508478495275620413140569036175576261394828379877730652302536713603231249945159219432533489137021498459413262539921680972039529313843596676985368047471232069001542163759022158391336876233083188613311316819048682794387090798392882706499977651041381153562008384436809646966498362278457284216485498345972248461804579819231720095929771511045957928999442701941022651261592779470076194612637460004597532533438071095697252916526852673643986993069694871271105060985067624670491605392267510541456018810770393077107913386835999006611591900954595238124749642497966644113671946400021512068993795523820643039184978192893245322543492587044577652317891864585352233976954175500546735897233483272413866088049035657003284579499640958628510928403719694803267082695382338547108072889387761080193301409944429748982522251667124715365738655196143225389314444276519335249627101646284040844224833686351550039853921263085938912321560358814652400727998357834878293088563399646493163938815491223460011084448619533691252448279646940566082055639318048889354235737398164117291061489091071244098202831933829024330683473803984018718343741540459346408154353825103425301673209205704674239948449906585463401239096477870682523866472474776869725811116949302330631458883082740751954490271421263948656810998193762650037720675872546562815683096578727101889904878897796454450570563311244047076062347384976467138028179009630817324914716263234732622849819682057074939541999232632468528907052198048011857679030668511083627802474796806514859532380034725848563665190933910739127323351360031266139353352990404296983970535596851524731713642909598892532575646538870861472852985495763039071208594176816163981161112864410592686329480343131732555846026880049855338508498156052156412743826540284129978384579427207766432138362656370024860941063821733799257091983782672170667458793228843484220691448723777288247801096752835211957290001012915302732360706415462051891727966595264221662056453472092809128915125282702868212172129258010147525871916468615014062658986048331716580734109353185423006416321552873663711866522571647878386628680040085086356988576740460848153775386084943853708630664525337437428542070220733976730696387784792258449110715703708341250582102072290255379068138737448370859240897927520351635343625442054504969080114885477171558580874913831825540734014903382453855102379684965874690754133272868419808654441453210352091756555515529213815513779811053017212846811482845850299465585694190874873157117091628096284635669700522013251265081559359074038221906582048035621690213923270987421184672750346144942055266730422462230803962426151711315618980092119944947161727732079665845759088014224217418059776645833290020379544499247312953558659429969494755370197947294762431242260605811023519857879698304938629077497027671270753664521647898948592885587900560971256476495842660044968878628183452628270528439877582797367065763348430841360788415691865489829555416029708976150299817722795468161679612135158615087711403794028797982211775073546120310856937778612443133804738862001571605694133831632189465665461889454318810589413514162005529129378006740629288291693625831147919331623607086892638344210178704444664250921651613340128606439635993191221751363834524887506225793987358808045448676711393735910421339744553906765093667497454076491179059738578283254972774913204106321524960400975195387648549123189502232414954566204957930859499112801889946401849173180737473747280103899480744694296052827361881519844974713906473024007400054011025631175608871271983670759022789330236570501707040033087779877934992917394001515371749516354386123284078998202250873967992332420177722771352964752920569765379630253780280327943084136527339343459401288818570169664890856377804541191842312607975639281227714023426651096991893310712195308002705771140559631498670833928282362297052519441502306244482382704146514135043099923233394571233602790971537833479237082511098509990681636651042147081940492446946192128334729133210036345884195623178038559477522359378865446936278724452245583871684612371289420038827878127481516421058432551996747529684203086274829780933939798208788365452453275844459610388212544491490054747435103311366741505095642984388620015411613965001220747263994141897367019000992833466223360752966904567209698488516149375512584767596853542345978577137442291402127632881887520776448544452304862472697175128994168256316012440237847463122966678198148831210267901708699155900574951341031066556479757387846673324048288871615773711883124989369534839204943455110138990947357189396849798883804652295065825151283474216885407589104679411602438924183961659802592994913926048571929105701690707890925618855489246976117030882333977894867166891662440470799322752811907356929337666108377367859149788842865041442780717210904877749145521301688982357615597846054758573046883362771443063335873039560156697557367798001759248070505152236555988557555491945229307764081379612031787136636215815991278134068785467865093014007561222681705442706415767397484082951459116256074321465322731414924776603253198240885575141685414774205821466672570755977442739830705769433171369542119043476888995545700102598204283786683635034527111343370265399101556666324122999123870924489282601095057018881612909958766939620926086381143635903676759993435150198655152853066497081095816854701623526733303909358067395857896242103447259174693862230546361826630101639685576382857380457860578446842104807852725069988250838431163463018016688593264272475530354623379681005829805302695123688919879439968606575713654585172842497543251898457618952502967911775503630796564343619117771185974661934899709259069347874429917695192315306721597858305828151134823919585642022712266368473685087987007375149035226299006548911260699455867925072687199042738204283419964057265614345994668723044175985012460463999722560778182732975736036669643878325882005466437765423347722403326376818520268032010055975551487319041927144322281609616856683192596153034186743791453820531032210271272017944213220112632994871458381412465266380561920321480455009046828835823901019307561888685313740740698451639021013846475924569038966046353891382126619809832855443488883708270239744331454142075910641706763414804759308291624995147171960102648377100121288966847910604086838988915621135508958844870241740884119119662538436778840046963667382056295268158905260092605634174584545026499766261424918542995718458906984384740550142622054658723249792894776864614141362197973616110974929440174517305949545940218225174519800043966888001552258441161873771986388433125165738695682366480870401793168541571974767938007196526360195027955559113703041210828448373577111873511173264001351624416919091248313417271807489785202989458524677935209748524695056872908588347877716684269713611873250849143698200574918513729170111687150494821424970427602350233741278811036375410908706427285582183497072509802749677749607916793756525186133868095018004590469272184157570107800860505806273687475608108981353928200311037138345111705874415847272328439185194296832241116372987092447512352841393416276393915825366350218274232944451938927334447042453671162254286533763427211370887019499952160637400279297338256120407606617024218727035038946298459355599589967554852145292580262581974991562678876302453188820619328088085612161806973165558523537358014555720695721031904243047914602081593145710525849100703347416889849162887774732977499621610019538405349356434595077565931176293261225921530985457730988414722725009661445677468119139087531522417453444506002825592332573971053584835923937158307164451195117125004628294619570524546699590353228328453245649863597807141937652318831651505881835997891168477983344379936767429886909387161993949039338712039062025643926136563918372569339482216203862851345636301542264151706353527604681480647352408665475641656482180020982609484902898740165742149810231516948307719691721480383950870093039989735830418890701899019816568394141359326330201862498449331258774578021457205829434694484332198589360134747735259635475640781383046643051482139797007119970067209527778422862102813514297328231195765809684584911881674615378839466575828821402499751500259545187124989145902429699354086766177105140075168183912377569228284771959172877117363329027011291317918839200433059050452994204742496415892348084204274839922380294884203180346228111474669388120969082566838993769874862043123554583292618122193566644208953573122662162608518715680361448684736002170766047569021069313128148750103242447358271975887969474902837476327680543790649782226503751979227608397722120919025558832615366217948490488757806031930560484062903359050483717807234363495214434552451229908868094722743774138767259347606712190635019263476898946762494603329377346584319519206087553283756903140970164972753637275686850234461001486723478581204172170437858598894328526035711837236534438959944879232409727109978095808894980476140991077277167022910098166565506368835322970023893803974900795305935596177852502136707649219422411719299790331171374048098213377744649943244740285723824966598443879236447323545752226770335950507555056585016692725002028596378863026871562999009440318991925766438069879491300340948810306056433190459451322379508430773516866982331349460614809221708600938806127477896415415168966798224631648246717359986258355210308109325671563605210048223265807063102724559446483097425895622628910872117702664638076333910352438727405643627999792530922030195342210518834112346378738975972786120339540111787042043365081717776157915806282864845786252751363557313106995657672399043889276802523595810465023927219509468115253544678130383502189991098810275930678596615852417628115829302623188628879808566868662946768210155791912276800545855758759870540921718900290345153255879558243582647852849242592607849920860544803927194469673954400364941588252419252253895978922696957718482462989845075560942535731023238083601044340981823644224307127459891792820796268116193255301408179999958504362673417621389897073188894731522839632474414544618257638299778745925058218280113434349673149526245911472816493199794381150017293307848452314534983068782373354928055070533575076591057886794919622459877609148777729246668683759602956590068804728546482258324274451810962888788181836904811017108674555203862568242429533014725462638577094961038205291021742485574502415362314651526013869146652710308199397820353462942873786840328122692756698133664888635839250765385777765151830765903522922698274459120760759067619630223842666627449261535757900760276407861633370138590636452813747919538011848312969078717890809723616523799699817587348815459424791535227890850959794443165740396995958373181008438435812294001081021363395956281254902959935790784489870540498545807590183551892670646574918318515305869847299485060446816096810402205033779674538901685946048305961255408761793207839651639267844306039978219044248658942958726063175740159737963264620024492311514097725592625222172673083982147856989071276590396726143325642394763223494540871905030084436795050840675405281346601296000901411191854903350133380973788850725564088246317325447891632305896806019876309999603848434634482804871979920338185437005405526748210970869929421084811130421528083716129592805338999064356802608595563543226820938768130432416392373199694511551730932185162782343004143056103876745633754829070863827218127283047739377472575765767405028821342954109715409918069726362583096822041056943974788174177419410701396494254482316571496429257006721305705008701064871009402893835411695691418462713200396404738268973891606616458042537257157824775540263033467788131907604024563449797812828944972606712022953092754768488302565239000118142118283944346956378385301215694684625831716244027343503017291368388617314546982227807957536389113178398815024743110792490031685329000434768627817353990736950522660543273480014586010485052513248790258039524521007828196501858745373131215341899782605165479377884715997547360163077835805685402571068018021643667870927840110204541526834485992293810974121242879852769798426863876437194663097125362178203125266627393270742402535834574276656764385395456238497074880695021107014835679468097024412183243586471557660293872275026048258787532374163882752182379496795466684283811856968170058386163468223914958449264715331146699672124660115528947129927817845440235990857587685914899377274807300839774598038152486337205912967483399242729511627585212202235463222120907864195539185609119253663703352445969390751111680777713922288627713878305358439579679784021043691436675239212697134367632895366621768118648401389345235939731839625267745156122994045011297526819531761972287729155918144786445913463718302354748634345100657612657115353577794360154959854719201275635258954600471035124294148544291171176106811277456220284649273123222322714170158705381564784148265552072160935570918812393380954419826266949117790876678062343319373424361801803780895561509277399063041663515203702725311954843002056902857026413649457430750640781774869182421043418887510071134954315084290249892996170299863444586943220788581650495633774916749218089887369775214432560224628491384494587486068916355775696665762569144372012806154535691061076179578266586589156357331945512193886103190537295530035027569862229045938295278431149869150162656978613271854117647043713048070300758149699998171372623602801240623844729301547638016783444571859329312322852104614087909091564769728166925671962252347159405120272130693498268090641560926898879044286669234055968571484815159782285405894473847748535775541105173299325578641673097484448746589839198383038953986132097751287201746437671378238515975121933933228664286134433089211367755294555310133537327908384836717576838198089082220376334748189501545755024564953839343098919101502899622741294352374325071266065497386808474274074752617530946419551786065222626471993321658785446280227616993285391651101433115679187825178548711224059534409966987273711918737586753490106385016300046564326012386216177513546438007062470444737077671532623941279034481279404213219320808333972802058553116468614600077623600464477191667689049891420188261904852130379905960357662783429190122129518658361680737841005658920793093001028814608936525583505849574679551683765138958064602978762221832441086518433795178236249387390471349690902334410021933610823597421970073591210119011635216422663280557409160780356096751765626776006935605093325179350941148059610858127800916346618493386852256429558968102559938704981630477227535351867319810046969007629173750024853652803718115152611425159949457086016627888921763986931069389116038391500690583225209536127752923776658236245193860375130114122088193261832530669881320153777782860725230872284659158781052141414973666882626663531560189696292547060366030600198572143259749159778717754042775447105487140245438612475907572252871533694778048269071257062177552025183480328989223963293816692344540161225102714224444236102631582017655601989373813375198773655010457001484586152688455505913174159399224502284394782511636657806566066604141457457826340030318722077521890538971808612251575300269491581070628605448744015112617035099385230544938796057070188704209424221398717563780381128721197147843558552057234372995808742982031787128540209720174960342759517198468797990071709260444708719146562615281307590377330571250753471428262685338039168397129509331971850408737420434896797627769880954231173345237039100754162211841689632065777272090246214502099447600679060135050215814962302862275820575115226952452173245544407922347351451961596406989740578698840178281058165376466172405486236426846512282221344238229507268120726451688442340228354276466686082262772906906201631324628218448944024470690785079949928948275492038583235962192577830156083907977754189509531077115364500141885849513663728112778247272756107587463961186077550820755863522854825857350583811585433039505425250582041293748266894600565687462031911262417887052196275596842625835288672441631996423213704946754980046694069358261474291175063095019347923945593392731114193045250392582373281083395822800981022066454211900748604534723839223965426084566235507509540593384217582034025880166979365159879437150554696561576290458977135762301137632925957052422338468491599589745487047606874649273742550255121933820926698894211534855648429130138575967809789856083840268772422216378556274867587989879301000551183811409932193111818935417289424458469037071063825017097473391910405474262406761724265104922528058289622333776021620679240388434053576952623153024082238240100256531451425439559782415897960394637390871627209247757597267931204908891063297233818027839066530793156692159522207808888821187697369296817661111851506558599930556247951390166577129649276007936528216829254950483724245991233082177284230038433178937392710802882894323346344289559414156606045980620195713666131852595562106528416238196152483125875442802301993466411121325205985186201009309366378948366281118358815134692308628245826405354097795835861504750956447593611978402070056797307685842056979983806577662159960647331654274820041523129230556497380067720504161814805654281525339907406309249275259385713492133865179317998413797614701573949940564070936881959411921954551719175962731819830908765118799348659503534191431744593613370719088495774901943687830891051598942286443413053544927766689687687393910274802419993643719497242369237602537044303705161122555077389691850537741802021680435003038896781555432640996287430163538599333626095942343976206773739670213230147182539175841328915210310635446406266208204689881669106406432904277887741154263741014687148441255122689501107836676263911253877593916401816927946245029311757927972985368517988880760047109894216726110629377402726268688212351985242605652857698589615907396258367506694687261456919597347152280773708308384632162587321787130234219718654649088892279045881331502604442054828629804566022587676928351672055849538180083631457133744922153021389955170639248453470572650776049353211056353924311415010702394729867845836662062371627225422663822319606097335092226410363128795637700889795022266768717183386934049486338496728958467030869307960101156807275449023911211789795325491168335769398465006126813893277087131621576730283521846791820275887155370982752061307818977882071607952617475135633450906181272720910360068845926719228319124559248468228123792205788807820664845954936420437934573769482756625219716451385305236455649411839864108290112260954303267557592068306465102183828598656413440655657332980816653036093424533707467394746180956717065186039697244351936970615330806935906934126660913649648810675634234584509606380994796019781197684759593030284082539566458997380094824819351279673872376429134513981381119870030770461057785671253445800508086756055561381719498023942319174513009913853410421707763245681803655475850940417735062606578691473130825658247011069644063808504754080055899616344401600414830560739382820529290748841775700538177203830333195432883229441548030182085798482413550373447754601144913131869757573693671602356035054553387826658284900719819288734388542860575079329980860528971356221416182229616951617949271664394170081995945087436597784243026277512827849604841291638795908028527805599296972069605922054878002256006177934094064204631985517690257266171996715498353375594305276211887774247273598909135433670767808786066421769555820109999550582414746481039188747109816418010485933783609818320266393328080917138887563784125003786585916691203518938222139110045359362659525433538074467207640349186374229353659553480113623199580813325854665533082996992924855312241793851065868683789111568446903015625095651822090326947830346655764248011067733052361642996868094438662043296039587132918709521810476511003393156675670002235365068145247543087129210854382998335279789669166539730825411002115933077973418759602033732954783504010923898959001750965525103178991977032829183131873673997113204786945285327672758531949358508194776645426416323186897297866305101549629291373027671699699724815166039728262182048677521628900306756020338594372134695259276167635602071936449006974326156489837037992555884146694615950154296921817875646111333264413636956018019308982684045555807509743713748851784211851618665581145597249716757554999688375603262669963549961829920447796155284683375307871549989124322300346237780225347479709643603491034096150204720885133848308210918461463789826451869818535605705355659942500219022980254766069556522973947083626868432452803866062151376718498701847094323911632221806056837408792480340957445893118113398628647541120052564465953153517562314325615178170846718292016708938475401776114794129265480582239625620146011994462215848086290437111919390995281368167001888527069388887244029589414131727179002691494239500477203251100395102579506938005500997585940773478387565663701631104091477768512536198471863071905197190135529771659430942209096206879832918554621863829608088712620654893454851846974516620974584999844482192456392894786623349579454324005615709991790164362056274461352753084947031918959211948039874952563021916154316982925343926439496728605453560167954639879945163258586580836204627880573621398678457087663716988708588023245382857611292134995329267351823843605541366078968861767213953596329969127985310652487856598231021491685888050494596228941685502278168541775821741254716007021071903552769294983397293386140046404055425538650877445311811911914143830124461186316501132997362357816727758418134538067756463002354048566647411909850151115723543630345784253057227497858694025579768176966752953911012757918309851131378881649328702212328421049054409370370956422842866282117564842484131565880378905888965710279186930205744904464203730461203818693903111121175308771668761932871945775277283343167805244306347232632990267491366675178768192033895500812847138812197473492466516905091041258079317020851118800861689967101525483161095042410402427860540881617417310421677971101414939751266180158892355247058095917875371049948863095694898772798725156752198170619102833809652608619470545733338581838427102321278536478644390109600910055745525196556195772236234696982099654874931495948820666950855259097991944280196159943236028987155231712640996488981138702766449736323393699082702451736165650160798798171810888330222813356261313026982370365964452302690526247520864763073547533820425798281354272969854728420445280778804853402154609010157696941210120637442419406929818520893298294719968667126363951801977749564990778928433095473800149614471689475845266132636808983755963817065531639871382949142263258746817122282141246606783502203479329372002932827340334316928265025992383252649467275866955923724929007351587994350840079582575104788710342166376941191347268601876392776973220107445440165597650823541730611279523458627463116039249424850084621218265411894116426453566534606863119598503523816635144034221412720058600014190094220266857673018317528385877322262146883784693202813351278084782832445604176446847103243644077680807807012757963949143765771364812149528148807809296029868284276906727275835118347214907653503476554989660987267025095692014803965728539257904677686613356178421855735504899640765806622187519327217303867542686338528114378825143426381075483952758219280986025875677842067721538784636866420784875410857082123969463799918046075021289555232499600282871107962896155546245866549852540049703559633115129343543367220456526858543157980050821439577712161002681061284897537522174876845060451054809474464916971986466742931579805298381996474029819913803378724313040462655254172748130867265461342257841332239572257499368627129549672696130546967167360204132350800164133034082015211183201163732765270788185115319171282216991159065510833243946121686284950477400834107002777222335458955868902680534875658826838218519623010992525078754440978832066976981723472886083024835648724045156592942549128899582221353536249842858207982310749185327420391795171820403054181267747211325218366322297844228811785513851251224850837059481877427969747333038229959786485524679582198302151797101208792048361225852943167098330902202467791268934029440511810717058920546180147255482899764640978061047472071254407927331536321774276198510363155504912137240445930357728085459786102765178842309024089829891871266014434208842747617999178811985951276026978326973317737619371333385775175850834342004508182634231731460840644926700620166856863742780489716914903240418628812333762756646738149143484625656859506526750560684213833026544618247380754570177694430493959354608176578245352083476677431461650293160073327404008960522744724906146671523445853241167316150402262083450929187971408857112466833562928582774322216199928852343634595846774571281817312532177798316239905517196601652590259107379870619960799872263727261298486698868961617347972323133313833524932021989359766895895946578670946128489660970152371821464516687444318661143091094863647522320111049307351484617289884372489698673428544125644350543640595614499330959737048145847148032662767773178611085026827669120140691070445486905314610175323377209288938620286305479422886250583302006651182054010274689616641781634748649696405349036903411360413409031168307871564000580369251932056996655446636308945739594992908497115401941312533986338694010418365987838081875868622786407249709075881212273024115813503310536335140055241564717236011199321126389679766034773918374759789251372174755128182141639473857491532491532865337834007787389367454938850744055815794962177383687866579945362905717971859818580517091854245387535086004007403067536809574602456564713890006624989487332914294197049505315622699638886070416181231513900349952606741159478370454261611044623764382329570028594567056801564940375098775552200207599370770654141429360909011565287573148790278308053308119124160746630091674357157097279034971237453350572355210622450939676306867599397943744932418016737127409971662066688659195930211580221758229566547755510432256463585908583980671806697808149515995773616738009891344667988121555992558632085456171823254925900466086569223076490798572439645137040623925120353438173954899985304818153768606993227645755947638386004107095873607196912361602185928672407311153445726422691522711532362084984405048543259414894472781317213611823595021587562809028091601212331022071554112607728611680632803378889715753824584991177015543392235499986375481454232892029109006059083246408834363705999484802350855220106415569396069562077919134100721758324558375130711244767256650899877961984433526799807882532024522120391340494345063392635324092562275585102713179744156088580508116432436165247898309385155730722632943090900514998473725649329281956055083120128051012298862131519011407487530302893573572760747491813519340862216321652000420233953438790299265648975450708788003646413184139198561105496973640213592792092603592672766984126632316899962562709783812482265077769013030477427350464073832527882315507678624535370535834505149628587871510607034093924921560442418307900483330596864788633033398935032788780100109302613193782343065781993728812298923071008975942801645239208515959569776266145883611837465135430235106691255173135183272636121938499703695094617075611893867189821803322299643847377794800172399244831117898977389597053830096927141204919853441320894920705012828461764809180595932268478016638231531389108983489308812313811154293331847748735176268500738393938189928277213224622514889304064501579189478962781923765624600454185646510595070905398736307186135938173651454059174278555620061496794403861833030397230772467793895992064749917682080922374767323003692993345450625939301303644321907675222188905775139063769694147183807912498027588775804722636054584701918487163900536682995780511389405472470999772959008857915473332951013120711618573030499006542773349326216188156734660411156944992828247670740521439699388517254073386833741079978848947039019270508826594668170352811226367335814671616945125171428622844756378689106884097652701358084821768522254146132928621648633292848648996461928008450110441018814187567972526714931678672332705116086254956027725255433514300467352050448845484709398674612832056619764139821240953864131048029898255750739902075936689764247651999166505531592003498158553656546050803755763146742575130433767347074206948410129032108314932800130309932985426823168242113594549599039040164810094323663059202181080240859349670860710733669447942079638847459137783719019413249113631706784546080279430894358602105089434010967791302465952754656509203567564097931250861544848757571588043658142507583306596984006788514683039431938438210165252707575136114263289669181295012640360855975569224343964480729382743786803994467125728271197712884631594843948419239323917949827991626224015179789705213896507703626918164293003795782661860409344060031244695147345740312099249498101951292712785857674829637727386939772152084146118090592088862859853293248064044467712679672808040823228758708042518445087732756352564824592725734371054766179025734534604040724224192881302380340166065131063428533877500069591631466940320550041113421235315094383942805448880458678875441923760577824019206790721627970894191468838410293053363023043236119979101926431545724216256800363159418901144077537111686213357054019721614484714996055671981628807780000717893341966259406844296388873632509440968133495328306494452774811627026902532058476707042183731374303276433737148404975072108571695930996523759795781424985031998787018835348656410192269421200553866339942449452528864175435502585538550839608567868756500688635279220040596723376994359190441194281939846039997370014541332243184591198180574659856495942647702640684326268839893223491896272491988913222934761920637818483229258144916116015969592921019469943681558463272079672766411679528740571084326888328337140891694542434051739598315427540972839793131135405211437438807642338073176764719171231655667046981317875768355593263298621939034522203943443509301227178577640957833640490171666349562379997475623042739653356754815767020464301474131435833667972858196019885940566059248634625849971906024119619164010260642603558953221424842648289112965919163925382791370194146692900889099565425914102648200663417965988535052006566963531997269774498588421996432317398501942417905218591555225380943690193788180549717736352205793950046101517017932832325879356887023263227351942228535579221724428867867301672556781574548386588910487123209149430434282793314153875922115709849288688792208913676531328517278146734537134042083306617895273772118487093889225831837257485467215943891728756030650824362017291937872829653375120109341556876064207592074380992846320760765225674146242745465492092625109337642934515234393653336634077385621790682134999533427234239065563634991382373577375254549265821117161026005696178256432383628295867008785072615355138638515255855049535892821608178198155359935821746256993757996387909569818270863138026203922218845824344097732667825615863561288441594639501191426116641663397065761043310415071341546693057400894411403324215128287474521901560593874812333078137805981759550746273154939246921293734692439001214034963492068994002827092201886803199627853775275990938692051295376756199381054722313761313666709182637906215437578872662180079568734591487505771985298445135673571837049732525565474635550654759835970780539490016129951998802153505220288189891659134746371725487103736664959277455859319873948168198215168928200444086455102291345216651984847498397494781248426834279915782824373070539536457084343300119497172987685407859035137576284981677875099683032494661946683033530690077486061566078198578622793799274165965659101774181496009126325844605814781418871693471606472310713873643469517964003261762344539056814394024945782801003002313863431099893860553874107554085511247717098738182945994528394102455841504925992023492502511116066410363279285427098656784209493286158796792208751898609378056204562479152200247025753232642365067038475998154802212705525669613045795997763370271156042504475273238584306211065300339145376928867592963462507689740380044689295035110363522059707234433546844270972933333184305760566517761331145218301706020516160283927429771072189503139032159367180209274019457969040559353019490431971121109222886514576682840953675166452958372480913495603141955971745719048618777339926841511812320538558393277660136898961777492430043135341072223033390005063000145456805502026555199685193992120262518572356746701319454872366738411009442972162872189616551965324007373484724558211413898939182660420466799209505365573567989552443249770851593164205131143493566728010564322643160807074876146132480979729684988877582771287467160455234644597686388142491960503101013522438680739143857500729561817861878401256402089785972372861834173710312765393655281944697553308644166590716485346608722027911121493049652062512679431712718538428574122864857322380176440607530682786581320508936167772131119632823355787901236990079373604973857615453173162656822977744431362735734071455126695201957101809540847209513304536315343806252424579159819776271128934904591278937052191549378007940650270311462452479703370880106095506741160206224140291736210814665822974794101698645655848718086524590499908755504562435818531108725175568957151191327442768577183595315865481281089896516725613754165638960496474010659587930636952181114935550432282850096094297263132046963724290643077217676469879223454901427457904474060028115833657932056651437144346465817385223580006403525836719759446315255441345386728381095517342531698392079199185284885232618747757200987645168677078025836989293567926585102438613912532902379754040461006662148288779065425423635069880648389028169254390730112443156387375697023534657324818850427181503464627518544165923491722012981493564296947869989991957761385886767338859345640456112663078385548735490093432509959053770082905906998648142942862546379903218809399387817601592425992426887306256561812003270144969905580778598294709716990494444274128351045071576607676952263208005189970279344608535585672783813947015311703448767230963026400000514509189648107980759779418763866418632154164705245633107319888911833254771652480483691343134912344241644901476733816345034768158251440455534938403779637186917290822159357339885218555573059265137074863644854407676668585803173214748204208736411112773842220665592090189021659513107774898822601388567012929174358711422828650953235416169846696998962834482619084032715735975993810325812010725035257543952446857247282754576228431573519540596825540733014035364222809250084626394821776975822169533878194146251367844987448783814001933283334461322797262516328740510437706752025876669094918701341125188197737443371034137393178570813131247234755032986148158321246230710590355508848952671176273579597557282671839562907871747962594778145023194543870334097239790696322825193470188884926571272874977854683370793851588547667094764209383206918052396944546807132633293284769065275437288436137776736208807512978222403233869377528598264544589755207679974156024646024859488314830410508173192173208544554167541639447634611061903727317996627142421633798910769028843030500695388676371998987592879304800141804453107558385054327638295822123196031552364529800189019973369737328953250136864971135828430066906518778698273429005723060768326532503582503284376723568456652239471834077354990549217363229816614384197961226167738171726343645623787346514837956828942201438074547990916535137309990740892929215481448966796382058310002127524081444339423175912218936024903178223311101608084105473177264160465830220850150113616804928853382768127968210116331192083465130005309746929201100613168739032965587968327977394201931230026093010569821577779407423122166513061552095487419849761884771938627159178824158131122270757594518260033188077995051285125649826887330712622810460930223157426361960951467974477344743790218568185478299521498482537597892477091550005956359118474525612580221513900413459461191661349736113002274032772570133001295146095263051693217436973516537158424924696365243218646461959919734997528587878522908331085446172510542237696945844576512430822147136355259334692442910887808295668289730683341125167356902826245215218390213805341178277216115585928494475043877365929402507850791125274731639221615849679352318096338811960516286074931961391460718659744966650652705512298847807932078123656363192303147548812436800131720923359186694324294088709085208768717159274820904376885774589310623199716732724118587682528249714438893435932433125467123572342236075432211323222543478131313148330464980457123837886013497141972875631292337105619503532996084304780251091586711166894121556177518096545965795235131824024571564098767833675896094516693014781888858685432294392364381839367909209909583620642970600573017710503476988589350679593038299922264882166617876612468063643939289725164409869945496719794251285109865152390241369844927348110895463253760402732840417005628484790166147383857140074949543022851005921954419551404073690958497925897999131511315262802069040444942079012552344961147694873203564670010555380480092906465027447896249488453207095199857875482144448030990032171849629631919537190964573894621465633951168818003442898858255105333089797404747644019763161196175501052572074713110471173285764607999416484132165414902088579855765822176129774393214781818363792587387884903399405970223663103099105394205460291102876962137696995292723179436763389785539837503077026781650869616675854641198433285840201066792306358997466723944184599250656177420877730424948704861883864915605863250768173908377428574754810173447992809291425211847238602923651705703225570365169046517599745473973695681143549113791760623508301055702409666201360808022303952597849704513308160922929044616129647521870001226668869536599362954299461716017143366956845579676029924054626781700585464099884813076744435134153379089350339062617123273451376029899980243860293232509197612126750076656240976960589849623662993400077958039363260440120926617887088957162323367165169510209544491889839480235607981905078812482116692594896265036875521001921842839705591568512147446687751796403607625896941168895067526645400185642191696950453051797978977791511303366946493209183179216981606007331799466925706666802666338298034931559177161645048229500995312057930655269977805066716355512805958339008311722064227449150524445125529772285973555154597780716451996464041473476628605349812913377501852156606864305201649373120914641959085368453650886977900899049355193671624525111464726685509047724386777756440198513119161552714417786784470078946959312516257564610524618174225614939655384255214148837204474808559811085954182328238344108791284817639563556708355938430486768303047589781765231749260205263409521865588069858321537656321302201643260291590105554665256571454225377407786798189958073468113608396485592047314385361234884409114452569402204568556165383623975468798541289644483177367879355218112384553894691615680753539728551557248873032047642994239363874651727892141554567204121104219725395757304452015644324264531365086351084878436115724421883980905565473710217722713406626349486521308301049226216354784255336130821649165405554464731424347475837916470351099955165910798489398790609301989570836435001094596179940871384981759038104688731874825801488398392137557146898260753657047644764540394591549488578100839234565700373865673273862747370911144572225925367377621103349565325719638292543240717636531507724668860585441292077485775081591233852156861035949176961102753141583456957887316176641979776557028592927341216652272564346140933876123261976214402784731896191444786495941983298094029420490218706040808728145278172245702154868075337383276433590404480131886207172767306150212447225249296166652838710551661495472372591006833675200149627745828569212095421124849987579733182120731646442954267721325982571056636109368886002808239921371694081478584480265194720644856889151150634624438331169205958209944928243077994534208347336441666793899443450980238944358091404759660912343393605423605345134451150874568885125432532425367949910947296704089081489121646512731932924118007117497768632791922408588504471150739990020694342163625995739225140549905019248790633053112295141397351416483421875949586865973089957956132629678853324354190865618622560031219745435811459000937521357247577268782673888367824405741862731705895456606980357813679782170582441763284475792581696008118411126371917316633151822967574180378456983478570731392155344987219870172885415731074408207579989413317764841199250606058118268293985776252198445117704673226307835768212396405086363992969479416134964637883883805949289832231538406356365017233071866255397833667827934905594695543939362110069105509401644567839147822249898043255851725150849231332629272044921371583566691714736576836521156704514238853007670368756299304 95368738687949004643738279625308093126473262243406388634689917326776691657686065815621947332966948440089456891761633112931398034176327545331649977478161884929643586128854448223460924886942192244504833963266728677158044688879355263988250414521951746324073456253720791607256573648182841758012631213541380442547751619420745345822033980990238706681445241008212538428800329520629443853248871860954339082730054819651695535078434385605030598473668287282173820788072199679345942842259872250195704526140374529608123182123217952555589476769376636844190086251944166556769906260632236706359347743300254415018230959905335234339159880536818288783629616668576558122566962974987290468546791487402561745182060013856995591647602634312722113586896692502723699588913235362291877276120195560319103258087598075750478190446536677089935702465037298704438723566721895115664267330233673675736459294880910894507143665126355984898318459082239811740344235974288673005156325234656161972436530636202517756380679955364429642054950957644243008266447551568928200660682210064946431084432048517016460877160248270327868659893243253165330475077305658120035249471769682636390145317754183155717467834111568238060809564327980290760538243103311908183764333274334176645317897203123130949336540829972293865776027247845053114414491768654782145285160766607847771076139868830264776030783748428820802078644764936293903227757553618283566525043153654191760008621441473202004345641650887763006159731213258608303160271387551312361867300377487531102208664000616742253519827441557050479452276454835475966806865783871337872157774574688406881924759175579807295844489244524759464245744268871500673419547014451954009864216593152705511635934552178915017198265534873120331919556031410740314190260774348298297492485103592425233264481779918560167279464102951853038361753434069339675252352816644297095305067894212833582452739970757485581164444136736508004364939594631705231162447424743813824258697530196204671773009977946836895393521410425080204589980260480548966347699640437651324284205339780923292704606597829128917115687795073610816292076253950873847854049240699631872023666878132146170557578861257358681296630837743693125927978877775680963651597555900753400564547529746225375810266844581081707269022106350516118255924926290583591107168777398630637445754728234235996139425072378870410754040669201814322232742782660586336984062136521934346192743619134625175119025841352267251074131198966751343605532881352190914593765581553431671204851230740792682409764436023132181861882317523707082861465249375847312964747063417343709561480202028676567997086516276307411798956054919917855285519435507059885869156970905030304896641250741261551442378106601667630728789206412804529152402809209986635994798134479674069557004985423057219136632853069742076681896124129311350502805764980276946085676959279183879594717268526328667555821354999230003266629893526384833696906004852481591116324959984239066548759791695797383395510068206998995272787883905962820534004366035205404870563716773826671322133935783625175304729625978128373607513751884886279849727634167508935348894673025462950673884732551964644463895956146136680910158940213056391742912768630348135774540073442197939299061198094567450421815364299906250922372007467186103907276912447185747709855880127868614513962866278701294686600840968117511712485958724799927502392246919272292172091888612722112856971254561780794109461749596579834287933263298064798309069608837116523059028265213174022511871211544841664381267813892182271781814697788112076997346471998246916389028850913390194192970162580801374764972547136190378326037784118284668416599979942154715741098045447137644604189305647432297609731866314002356186034674565512574857400003558552437425178386416673422621813339880970534049097211226778753999927265466028051196072117952379733820517834524568661782005376937774579458172531738884677774359510662887947301856259842460286938329581364745212585714392624728849356114705769623226259029605408722422672632276454397062079872259419804837881817859734458675963872266770811451724563969000925206800370472215464420041254697291135492480076100541133430401294063569856523839673238616535410725920957134920285141347142447042638525101291762712638240870172469371445022331912048305938653752300467084667044510887532033710369793257014369632544700535961139673338874879126533879351786814593220265831165859138060016837619370007422007255116889712917684632601590607570786862501772973484697148805590369079588795642341198575559737037780751450986975301034973067399053395648221051082710574490389413095692626284595501285836867068836737091030551603361620202696641780957443685533679043785868929094875916403318499300426890301328751650230323628281633703201178722242934603420530515916528460613505150528099249434639097492522648184382835621428282574740836807869305114978077602332678905816449677993462547741628407852031935317492945737267126019878331422667454380258884579748070067617414729903172984047864529829368903423054310828139468400044122909214573603346357500714598788842567911847169841237124570888592440314972904999863117485453114658490203436236254270136774621554489703196763585314203048953227337042397024352772812388452863046203534952249970726894911472965214723081608626516677697177020839480023498263499230628199155814405530828711075351579064682273741823801111013358602416400731705657630505128643928327372361622974556741136938812819538507454129069779230332108187826796324276399495323140693400030689643947841378288614501017040533182096914266000949142170415202104672438192579624711018540687860150166964705287491862471574539327140891755447961639128092476370828900097702860544032225509707662804429058646762041646741572398082329794081167287292818081883464064197513772187949237870557444738370425765814434198088657071332141530760593205797390099610091439648994767195830867407868578785228010627857959556546167269977118700396729082557102046371599077237988133464967295291855723806007028647621382015706965515364958850094280944885841079257646583458097097193690949288097821528478770737466099338998879857519754403795447753823011513137017822284149521171342423251071940629684667471125925494929268108841463908189245930325672747846562206458112936197509407219675737590671627265986912072287852650902048324409135503265325586644053896436479563712231200661219776814782745506346310629826539508389111383898268656471352934095445460791632911123522149009048702257656873625026543338813799709407510132601481214703834244898751680307773976960327221356671280560983456980780065356620071055326398275652598237135986726437775853460867841231142016807984032756590073491326669953556330334584424091461044457347370056353552584861230742298216473195484030612778954807852319332708876111901885582806121557729295042767937776810596534769765600832592050450484208869699485536648201341799992249327519215913531383953185190899800403610370233749878398950071081141415129889294553365726580714933324393158022928838720252533060141433170660474847691579719029392635477860795054386771364590571571419647791456729373338168912877304361794028685212095322079226080064486805945641503255079819130378391907612187346080773869508715284723205874488114079895524565150374283255561577212168114418601695256690237087186477585409976783266810363934050513970190143587617983627552175266435554314186747867190487330554467590300452991520220918791303377472384420199459665600642367676428374598950853508504774481314991883405216124207721855956122071472750628785991367941021218180629174469815999859114758871089132146837813096698448706883144123582697357601282583096898136834553005911337816577214600293441795627170116753290403411306816392601957951013123103245328453716084933128930801325619870258301958270617006451245016344582499684750606249914572298759581517128465930217989758433259656002129676763702838370090741506235351342724725777815175507865955232463074038655218169855556788461508271432335857984606487393136929955419589835924299226340171386581286961206118856821330919046487384103258415584394828498536115624800468403452783045554953382527099062039470037442695725494424992591216461337328478392161083317946393136174293247052743935050992579237181709311348111397011390000573335580067969176189273371482520036783145876569830558044009517219160941800851894292801194700051268058451707112176785560981138686107905373677994462197279338614115016898931278495463069539708747604210385715154781642121862021506427754902053049579285360284003081983279388108194661976866672082252688958809274122010017310469580689748870049123301416478272173631004777626842349847840116451035481703282259037311397760319869805478240688164201486006117579546772388870472749548982574058526670481378583378964773491726814855580025458877320377031714849153937979331654175143538088284018907276257990317078791815935108333035664389060943214828848829207794232238212086712798618345313623574440034154071527962864816786024311599302945939055584237617952738083041501546458122016719600962509254810589404380938370630692473634572352407485966528404143724104599613549484829706796159087759296614195401622300804233580189984176848289971144652143715642542034619914697900462530318937208098729947582696660211670177270266039480914934337091976416649198500042853425491083530606478477163037190179178171440172255101508012950406444146035294372132928634995405836606023701258416466950888899843799498948117347103487709501732884427559127895263612112932415480762994018922681661887229379336773022910148323256047776279070290225429889518651737702209033107439535276005307417044107949102102527359673789675411426650711758267257529436718055386784850714484771652780946670810850110886730798117512670022151267473275810638012833153929983473936655089021139230938332440760140366194352356715232022449173411712705113598928411110468428106384566267780580196532907517631571154366925260896322038227940734197933941217611923405756682192607762474717396238619639487303106142990703389424752925051687328298468589951525357987392622657652695113514766125893441519531428534576284833245597928977274890950015794367871117866802306658707785813367497494252965143051829311289311347788177957962469324081039954312655769166420568292788353267080681790411403259764844854633832823021786219062843703234819373989866241799278393349899830469363965466513940809354848140017608396204551983418691796840592318369885275046530194511341851543177953588463600982162611522776807147399453302005170381695147958513711267053815933469561244540344533184506874270723509412976931514627047240108899512935576210323115028001806662079137961642607671742519758278698237368943436250532160443979613855678714613747332007269535884049035502177469685897608387691962287506992311136579856286947496781150039149890294233656750629118487182738156995465055582160271767963081552003499412924013623875694667173436467523802901399971923660633859671850152879713181469892349008796683097015563611183278309912326377461238856807956097456584308977396324021974377098243216916100811895343861537109909879161677743916154540201423037076781693646011896188359087474530796438108614573051050643201525602201312404160628620315180735453414398894062700988140543892980767597257927988688332168317410557492130858123791009116258674128832107761789789002237362089927167057522198386421293564769356643590625202148539024540071525764747444086002371681674655975389414329437130519394947767683207425708517171298243925017796348747616835595432846607117562153209806638424118884641381265010321721106268012498135736818767378256452193371241051502453750865444434922271229771310329399659897260782026839460825091953461732166979097595462206104846919266013150306505255247195329074167035827450990582668498745112676834641576135110249627939293658725863554547467767145014292374721530251865471070983107867304125151200263535302231009729488628423308503878132159046030196531615303565824952823757933282808785980771148663042384712057651039014392795906017207130007715040168775858664626045150118011811817972221099364111680007756580371697114761961141464305969003533564704018955016315768028797878786126268822862586937173623700575147000215105454815050687668125572889739021434857415366614238003905143558454296156438171082586150079142282847873474337395852771476917919962503057775580948207983314331122351235945215343902535853412126837293125831797333227869740502437517437926910212523001906705577557204860781039694060884480457310373069539542461827668078324355882157954634296522416654581302661021885364815617355251506021975095992397587017336618599335463596575247756291510544683986416841998536308986367530550630729905426316862253095946111797438869385154049510851631487069796826692221709681428588446911007098524844282741812078970677134952238529292057366268611532965653190874676750568959362964678420173823875430229399316263833568562411750702044335984100465817508362529877484968737582180128077142007403047766287257289636257467963644377780192713782224952372878154285837491486657607254019566248016436334597118629619259328151485215579489774489763331592004964760583526043247959535251537111797952197200356797390154460841252181833880751981442691370246980331899754643426951188870249538034568194276257395482228095834459968093299500290674701549566012370381881404882491139337968667766976626212770482271019966607061552599687482952214870821339082283376637632882213883582188347731623271391778037727122419088172659272220649879271439131379172390391554204123754343361223326214425040131855587873105524646317416784381141584305723750859035993951560720201517039023415739354371908714227764343545442128674551497712517661845752867532820080517562776667060570693335295795996055595399844262940841995399547866843299708477788516881053548356658222795664245845084640121872470883958863589004257933783790635338432490044439658495419816300797925165563236790376377184958279332266150983063261215054912994029001889656574723999823937043630667133299114600734707391497092830718594646580397340147989649000736804111948413135339619765298843869532986148774301976190228762749961372504249699812118230624020258754006610663916524200591513445007366691611311615850568075765561741463243042957538979000602752959572439161586056110427452113309963187300004479422898727787317108010576283076245325090742609124020380997537294017496597220959460811934947581761765389635568860718786942450148650640665319086724814937032734017280314099314024653283156013553145766601754155965170089599901031371576075100616532155652401479152940702897681224992559300161556192989404429424833864205128565795986473762101325423359024478119281455036492630313942652688411467911179193027277193893697551423219457369321791718163356899192403315347320330898934221660068313756619740082175434773237068366019248853880746717523105643581929444258998941839191721466966231176875143745474639724341798734973137543869220965141780527880657515665732193119233585797644065209110450239193748077550618114813856684238839046866842715569059282749934918400091447822231585560508274669284286955643632556579854869038903815970643184034412365783805569359798466704194437286550551266680845820480009901577888421829892788874821377120853978505370250740514649599774329935554222998411617346100854801115375102404759462244549450541497876608909378382527271777407206345920875019724836888091138849832712088891079921559415567250375376417170534373379392987790109331635624300557690562858142510724379074444926418619147993172518881810311125341061725185566244475490330420029139594761638128772346462079086892174029746659500465164559260261524150324832058913060594421764717202186944872816198566523019264113770027559666854469390310723192627950407006087564638984489819286060387527538531390630001254575748329592843790861044664986613902948715959500005059872663180913492928382559943003204698763653577863658436181117927534406455882372588065498471610037487253419118341954567354124775547616721184210510131892264554325463310708629626061578203407346183508196370568690933599499415773445218907376762746866975656571561193033217989190289948817895300662571768230022143451394472148409620858947863818688063902568359275909235929753329265290307414528655418329162480980596868232882834130004394616378131832258791758781443950479292355863737856307748408030240130266024611360441977863627028495851575016039809236684032700341841213733106577488319314859467428973198169827845780491365208270705536016460260512470388502696013818714742631364117192863786220437749271767298360794380979952878193515743007116540933020311791018095830953876064314663786781959506708012683608482648383286213941279747675240272865941372454196654105831486342626679367545387084495718424521883285859182584623328001775593994394061229023286124802034269414955145145195079568036258240139495958706793801044866313745385453093147427763507062374782807077277603278016792829639390492236436056368172395106069533693805190025370082795453437859068251938577055436827887851996713590091798626939102424639821598712386022006331523627013098883972099185884382283906114471916655404670067402845164081478015295143020462569762334525668419570740639112153418801788423772784374672002268775708317282099328440341343413228820695779585521038681819142906797065102573501221426025491204855811173550596189945705261338318600603455910312795300745789340637783375289976261227554118678456067697960802610741219030822722674318818657073951721828414619485125329927271826040102375110745148901912144255375476142318944949309501331883840353366370901679008294221289774528994169636643040846774599324267929261705638345874180033546354884249234293000544717061841928173747363487191097386995068859715322130574902129221401652585661685788171565060797308600505957591371788963984493200838945956818143955685504003881495313537369320721274098548602403252684449838223523202510744010279384923332505548450607172015692262216420659589220549405349050159975670255834282850478867271970469143761776979954384878849291453292886386137471415081800364737068319678828231287739650058200735883958589304193339711164961242864482197639322636287740170858912768375108864709985489004065167234691624562289502214015208709651954577956910639822091251420644931334466124586821147557002028740877733268366275802731986569604023866800281457958352503700996195631859199582233740170508101521061753738739806278328595567501206600303071304558375175096685255970774927856326217411862027246812932909501470223591590531820037657497966666327965086197191145615350822207221082365918934365130235030721304055350562596026911670978468969651384583789421492117382512053391010182405110043982672943733015330406032190440381994651328358989770677097215749914727130187603134124901821906373047370420586378773864683663732540854966317347698035392036400910445215083621541506831871267252059743224671300359027922868983341581891264980759404972090224336502907966483300535947132068897562400755255210809709062743397459844352397313134563219311783350143156404590558238501565646754634915225439241182023821735680003118060372076762982202309479734236027511456303401474614691274170501788963167421684265277773510818066377840476690914359159189170335432184684872271351956192825921776643297786838005780524182779765777450744329002187417683170689749784767575755518276385938986330628509009122785287758009738449672408407224835834807051114779191191080908890319440427956632773223143934563318995449132714520138459484568092815054998014107654670812552705378042308697327164868762780594665636798395789098267460166985194556633596622972567366351906449839767529987242872232211171210822617695522444049993174553483539165641001550585038864519663325863427542647458192663485519872746455123431780987030566291491368445548696817253410237545447457492623415908976789934435176780074929511329589522472600942715751919148777006837214031987962224851008545387270186864059198099497997241288544126693379781358453798949824348454306148057614439557315064720833356681183250646085595134484667799492532172277409322334073202079187406015083571001427663403432057783710718410295464298726580543840232708405566188928212990181509939357110960382118611962223691606350433436091283109059387813941118865497871970454045697026735707362372062104707024285653491839398394230027556029783162847391766687939800124910379835047739179889123776725357636267416768504285878231485317436866327268138161315846927908850139619639199240800180987444901401141526788946514960327374491075476903473892457902620861404050854223551867040469384892056163103400354119462018677901774099446800077936970985912722685495534816742622737205087713056908474368677963036538253854669513091472026381969855432515898352527414449888261762577022765984003717354307496640860115885043596915356446213651905785509989901712196278607276821631329444030160325902412916737769994327332109911979081229271724220109316921332557741046101643883110921914427962412769893017223248530856648605030397153310987349962106357834906172615792396152141521977724272490639998755632595041356814126603800075181182163575643536068488750962838155645567926632200242303387598215979813291632817512242524592383794061199851636753282684258674892852460585134551987032836810321055055427755845368475938520084136311623297337881928182226396227635077009433508216499941979845957876162187420248881376107130558194204902229372104284796915029362393013695697826250225212226251588664301169249175671239861029809445196321233332803787805912437471969012098070174853587308555172603291758704520250232546122389935335995571705568931573764842838510266039010007117350810826006499654794743656540443525097328156534710870209102480259739871019789545992534033684184804833519563329974597193557625261724477827384891739364214569852785974642333621325156053551295140607254411959667507487305666370155867205329331660384402076295712867955108639218257901480597796293265845832062030166263799645463117209715547370326386696100692639666657616767673928312150064350742993052874317804158103206724583327625438687842485293267418503925704896968615462061944200556864755543884407530677419600998697771150095816853024811038838448629617969766220187106820385438715518764518030963126824689671606784340336905765074654202064713146248288008747158586161367679021136461121575001478324364315060428829502911390099770263376182979689913929917616617418875328170564945901858719988901225042582299539729857742564215962704976911300386285058452081251065130950157875793233387157891855558200593953496746763119301391298058298827278102364953426187467931099442821939100987829715247762635010314948030171620722124007073342393449099509270571239249541356624259519155749126025148364842364794304696208180482921324822765076072064628255702750230388658154341119786311080193596090149646158158654207848954006410673059051260173889513435798774771062518599524902739859446196671441047168786087035706331964656621830107587384936389382497032658320791495228888533541793427405030808607987475365742460436436779202675714662360913900439319091877105735909792162499635324221788353465175168061448802421810756903888085147935584231463994046113344855224748743418967929527522754358099112261351227271577269927216800791918956083237075104459154798524788157955170371988633169258500864741388304367531698065653018048752864456390267404813847519944505869092784305903487741673054222875557706144830124323273323213784805275016236670230290854660510520586730368142258813769059889221243576792269527910146888926231111797388101854439624237929797768115092456241516426067711341606998867302355927625646493827757362223408130658943821698723993979882908014178723488218948767757110821792592485065269500507292122814204436648554982654219985638653308526166502412552210722902964113134910410154150396722678895009322760948797104417156737732680868195721560128022196783314206916476395730484595789319269390849947256650222889822269708479949820912946520852816933430771062249469512715554582145103114722881144930103381718275963881073771266341236451054377693453821991808285070515065488794211627467772555057436851884595812542681589913872145083150798253035219096402930091318713015080667622183216236120533328186717984145340702662314582536913595322036209095519086328242428109700417952195769001968487888264122863486268107441305395921641188193427958590285244951447892709780812796323413675595355360109924419204056370979462003349736601129203379887948056924103434969816221410881864145951959208347690976232500595762022294488305598019953073821238735523636191213017914337048122289137047155812334587590148168318353132862600995461738612578961127194217807271484078878121090493974137445883574367492659349652854361423937064190152189855457168666238762192502921975063412875152022785168127150438502260641175324063598483847971100206285708656859239874373379923786271537216455013678798935564938104019288557449266207458855278492335462162671770092123240895613349551130947825949402847432101771328331588250769591860703861031243573665439884374462398844778277556851224451524077116104583071215175043932165121399192512196344679570553628102885639867239839273715141716790291884314660811705265518187378608669173509265749755925246627408580750657661410846310983908545910672146569294351839016845665291906633906011393722014383936314841815942644821065763031476264828172838171542179483491996436425120950349890449363930770666255869982672741924869200536785820554715637295688189425557729147038258495306009917118910786492837996985420856357843034386553731601652740668438040925956623364667312457214176046999593338838527025136479226054795916222659179836217862885729795233900681572572195236801897792011340027006162263864452862794113003831714715083868184683082574953564914227400809281374424809830990968457527006532956410611686552831112095624139336428850708763050942954948368895001154644036722154346188493423218332304254056924316690136714137472606490943058865989550759192433771960063442704828251250255045706230225863998430993332800970129639270694674879983382991152595861892250191095937097564578316560106444926253713545213022785100181711443951763636915241767986862730097774088193554309454339329895963563698778624478496989434370514379124987873664452313956110025624810478651867774565189649366150291011441948829598768624817920043856773690904758095603915841242661491756043126956011607146001934685669626236254374351000858947779162750569107387093846889860092395282128349387532410599168903998085189212280499802410632797386322255580934892515446749705698709846332946393976153836603133251492158242819158493643475613142896629226295199952446215362667586280191107769597146939581069456128463701008615441708141113758481912164919829569829208079284432343820902142762626415880798019017717474628452263463375631499667228924527852877084015353706114561067807914935346810794559567486912383638683886470528605324697080210804211241517865486523392256033500757648551606403894552010183457393559218462235223018289656930735064392645100115792549838679107441784960099325127136712828098504511911115603888719474316222295038607632383991574203624909407561116298650183291676984871584959171955530795439796128344697698634331128791656715555373014885296452258614167832377666869051031256585714029237504802294316020406267861625573045248061184899454414634884963907884435064969190471377250223606040029200389440364997403546978892451999168615476584520229840596695633391665032241140724707447560373441078707411665320259103523676554284444050238219680063150717497221561102313746748061579831086235499958118384515653116417545911572454073625766307542808301122861665178009951289447447048441693473955487847741711459176770546853087952980280794553825521875448445143122328336368812567379735633228272067208981147702832841033692663715914286788568319109614644805472492914943108247473059122036435819215113357453850696936379815153100710823110676135561594051887246381151515101078245144707613324651594012437755276314187278948831766525442129445259450547376140258800382502748891790365328007857395837014465098073985826966375842147970119444039088523988313711766102556143092041459571673372938408964288629839124316454815948736537727558808708738384300571961363372287167697152309409307034412696951398797618644294138150487186436451690519114078613227587194392377669754973480000038173786491833778923043808189718037580988780499140113544326462438455177161760882147549158692486507554260374280586607978460400514370404151800436319644541784644498895838561808988247022352261315481549821652139208005753627272492935155758721432032738363075933790287073388509781189480182772453428569445519749429785231757757203201769849372500324836483718591744999462107043869369617333598053411476003182513256195127164021917661814018236389290403154612177348773211864576942428672688204630026312434879196256272023207059605686496471246810252186783449153387688124259786377591061004963398592595461089740231587095821115716884734466616839471337062587692098597715926865108786828159860322022228192573338597104430091109641567598049511875272393627337201288739107030465490232541295849291086442588891457586094941535641129710871969873710253048453043926918046728637280434757779729629725834354882366022369111573911278856849863982405768285528526468958048227839730995285188665636669396626598829336488520899530546836969912426177769190195444832726197279964218947599231283236651879288351716432911142084380016410471808743035827494169393196350280926979726519533117781426377399116738109433222886701751934307020664666416400813205343560982164607566028002838699246957299231168423033108054089064899713538419048259175941735466541200881928205075640413968940705490783942079677019582760965568480757993210511054422121386430278208629486469582972253796577740960939548270713245205303251242982881656333797746122840848571291424663376098709779015918611676589491055459477540032260131561202901280258373016467462253824431804648554300545491029115413161805846184918626689720270611324732121587893736270796079791881038208789513820752068830543622830234444655627687254267478804441389708365494577329410568154076430634640176625703925893752105415640376337514679175906637171191949304300746799484624212812801889431029104279629157225505133301263167931962948898280690923785759166368276160329103199884346474593751135848735573811624014258012603091877298309277071922618014380934233397345861827438040115051978010754986001566052750344867741355301894397183856158052102922311014321668447960821995636096586683500229827501615751855288042730194563513328413058145095913399653412951939929911389822526797763622024035581818664791800763195868761539997488606787094846136883458656056048502169430932115474402964002375045742550309971798669317297845884730155045043399719309517149937223344093715177124414882715985254462244172674788691164868813765525675113673280113474723978017112870760125094932332233947020091269857758037458686286862545582957045389645363464105410173723297744883851682705702859941299875486960996563220181266458738795790151341002708512675294091789390325388952515143609370436174772063230614836014401801765984640880734645059096055873718833674612899431672698316000452914751365301662920873972811446305145863360409295671301430014159859205665529182358208586804041046226490708751598195083118307099245408268015700646856750483930142587381149441264082909440528169336798662584406329813225259490949560235174805333725490807931979985273826578453027110973400094194526804378074711559669671516032625161712415686605719965010083999115044516402857028467394949220836667400823013879216073557626712508542963919191288826034387128747510919260219432548328551869242229706440718198058191895065529715541415253350406106291306674903297904394151054226064887274470735439798422445543977910382137994060526911419599501516671996956056941592552411536689241066561822746469102344132924840851433916839030392268044147175459602774753611428017394421071727744154025658740452848306285329311690748575805271133523680120036890924029869052134085400857279652958763206938042152385032401215131559892160867777315218993690466997140953781485860394233597455057807348256558776221002158116568715516804552748887840985176059752412959930195868880067679711504310759121854176271529199355892965645072501560862631176903416677846804748666823897134653938887043797854665602149275821939654631538859710626923915459054124395234069091830353763577540503013934826643656110833354007032991620319080658323384564166330639288337919152528819484017008762409023853359092182759289649828085814119002847058928608784023996955294085274170818283753079639667478358631974141667010509943049810231611524255321038432259158239650930985172656838065359618550666232143385071494265482377097920540501499733791527640736739092369501835054913041096293294009889097066433397082478178088404595807109035738285715168335541974696202702814965158199210125908011368850932758588922567021879341029507811397751069622690580654836998317355303109651322938700224489849533825306692538970525549682817023194777448465432891375652562003359552044327643351337513963075870015123216315389741470966317985043142793751432971336573347976220525078949676954313844878269078048939219229201358525688242806980335196053175823111232967999666051923633149933227232202122152062576107804615063552891733765688305592989521375947211255319372467501328615518714942551353733241343084024026706951733969514088635925819180304279739533421592085697042277170598597875200357129359611170136212701602502004560324234931731530451469308188006866675773739812033809491695434413841195278371943638145382016063678697994405450743874925233488552513090385885519684761692523943855237562507498571816056946027634578541156714567082926144525546989834512104001883827917976051346469019875070793276945322112802042404343800367605439015497096314202350290911628252720451555984154635336250681355794536432836423266483774637189575151207271022435572522973448622608529098597881319441285116883847438477334961952583161233800332225797984732826485090007445818179706524060442585378049398111102492203498313319432796470283024117476521926144905415922770834846738298851769899576465805765622947691121847142624869440345970374737131740759310725568931476570473875187632543584764625580467374480126963838003135160743028100976431180074580944893761632385014910913624304863608779018511973792729371094318280534287069571372553608113691024489540548384115837093141222777264679794006400299599145228588397246870603736061987973064573938637151739708975266893083050788891442084874334493669518351948716674465535833922990965133590484876093595239442381879638526348424378480275145802663874454703999765933830498452491612715197648777761881465771255606064185675400176258573278707897270730276140196084927378745318520742928691868891630107721481703240483732203349164140476318750642636809348915269161124075496245151478523711241882836411880505377278618002825258052079791729629798958902381163386509681003410413224709980533989358931128418976674970027093897529541367803535178212285360952320889007860928511999712610735349535400507575788345674495680462420354741122677380931250794196291207713512590920077834598784051699713379368067456576133973089081301491117209855873251585956186790934843394475197015912665769062372140222633559015348621836901932748429401792393394391717865842332497888948703158838321207624122974555200128275512731346963983153024144656508795979732250249987570876310829301624717558750440538203707052759443278729085122231541400457490455738690618814386295399609450282917841245429289818647076268223682767282449784921407296372750370953104567314035493809856076408773042379501470068271597026847002754992365360760035193012503193011620835314014698591968150031401330318755968421031376489170824628077107395256599077296532469603001714737526729876375317988405960194533492327253311157488765434722948617990594554717714385910312851877129270562236332289758564172994264967570394192038034349913776006539841755312957429794615461719044353626943798447738687500937053982476134914554160952684330729752314068635141256721305659568999423122603869474164240991546196996405480302345420596460621399144620579104837080221518649524736118566344925118356470350290811387819576538565411919323192410089720631955922353443153783151738638697039372741790698413901202143977846873869756959128276608323427714793642660198617826443455559009985953829080664209900941897864947276245022277199725486147006389551122879645584366580240713042843914867779253606977419691544751989044925183496405343909156377814786582522452340471728433439195436569558157399307469062463305284172391394724171831160695764119293919618256176583812673825211936357654565191948408684414976608577874835357455088509921226470591927914892639436343435993280610646749954575274339968240090478829111410235390740096617885045881857295896025953346837326509528641538723560313320809307859078171520843096423387641426084540059490213553608956818558123210995134222408911814412272476851174087942250161699384644704908742723936580273659968071155091060272393699778606744725813430624997374283977345190855641454868624993627430406803862060617849211006947319400005538649781942579499042365404720838858740238768071381405863850829426534811290556404350613906452520269694809041635675824119551432195431809140887892828364031400483843371785840472587299309060074225607841925716908690140658823753210177525466353290055321333306223506203743833053273833503445535850226036903612150959417980102535511596673919154288626887091483128991580842985905180429607188830289119314121255909705611389025960045039731623506698509820775113229013052391152054544544711840704342280295781935978494480358807954345561523875214047080294990609536578645756646812300274758315385047480997643930970512102117228208802769603901064661243483021929237635987872555890280319985784581108144448218795194282576757674851476251704475212059535137235150623102240891336932463244704199370645684069630776272266280965859593556414648703001244288615414064778450464802397304825312247450986540364440716114126808978411607825196640564787097444754355941393308072041338568101353527051486926586337746719031628400998145047275052199292935466075785560623190354632560969217516061113146582730558534884922359764210485894640934300235715256249895553429888665713298082913089578294634995692585809898086201410487324884416627375723586749547942778647127972394167293523849217105645978986674074568832548828326776003287871322364170466280861760555936951290930203132263633525014112948915700944573232022407085467517642838854995158941993763018316762994448893040748216101773536360461329508311391136878957205486157473197661372649218723897990088957099481537685195165971843475101190114492539968262409227640289113305267082924339694908543754382022848746609400676735661263508514115878030066668942344137467318564009537646644501863055550631260360612099877424238435514974189744125340878725659833309436582898222657760929959355203290178728552425448096854684909424233681126777830194308769316256883044897614405123470329894257971996223997568647025160612014416019857493491257534691226242259432898445633373321487816648914756106638888668302367858718472403109532979904232970422269822769671892566119290206625332356989109111290752570127751166114256633056145846636308038742811908165952483698286199763687568139361908116840427633114934624740249624775253028051500032361727789053737137207560639607091026158301981770668821741784627150170108010673547115102471311240165342212820972848816571346889672670664123263266791434584369507965883801128954876277898109307309268425041086854875773443254753451936735619693938134111812248699759246273404513375397957648925590097247779771262229058577661821805759141255962575540270658856290685543659728000854164855020595457742368813646851651568407253778069761461928141096283254137752234037236483252100401230804648643653276395886208305257916097270038509936832803161557954796641658164055346601041547803069971554145083992502535055855756036326693967126665485058123967995085107111023828447493813003339914844350812191426047004013561652681089739377653484072055920244268185036164792811909680849044677328260442787606650572165632469386539026324073147589912133198099874408838162893652548457193689128698554394221155318854176353290521643875561393915723686696189330773320467089104923030734764924601215830751591651976649587716794020497839904886493966727148036907546288378293718257717221108121788165667695210382612584376326562542085029851745969625046588548442818559493980047315869293184648765212553490776172674540790760231627079786722125571991666447197058999045065890612590180685781688524661362084320679858227780881042281171369804508324305643179589039688975249709307340349088494767759496295472183253846134007150367143518122006152546304797908450505809094714473780569860854510896107872188766252152580142286558883845278224661572685023439257712429775178798922786487460243168217956277054092953259155132162497895679415761507004487806309083159863132847691297225101411017455810187206431418368045492712443419445575813520688051485005576908131748832710728665900709888844447140189845592001880173089153831715172560623303647855112444348026203892247565336711125814469408505447519519409052448372067373344606954162714589851649761173296660954310070354119477990518508213841317335186038991602160434574020773222835993313198559120130650159163106417051282142766676946934930476906513125656517592171333878207943441931842064023817162246601942986358350413099739623141194257526901508494782040499634827881882064104132244884196357587424658408322737646060049364315204290238365970675371721711649437752834125832497902075864917887172811580207499455946273617490894705501775476250363458270495039000457894845218605248318763868234776407139531520088157964633598711900631476142513706423686232142084463609350494440819519206244356561137444306160866397532227009088929958086082445993386428331228767130954755928418504837917498146292237228725774383693867515243498201762685285467883462164077412336999505531467261733521345572049466873434903643244099165712582346850361530236414001534238278928240598633895919004280265316318000827365291406392116292930134464868309132550514645985398162553124243194686212106138385687990604109433128850339138248876395795069152011151450208178694031324102470068095871831658708529531321826326558406765391495825780629255519980639244284622003512552115478668438156209359112543070058149238206557730487050416323852470462973267434595770828645825813867233938861247583894534599878063108469052368234362063168157995843873582910433629287337505805934108537857529490075206106150983467946444586794801250001184559944140001243322633588402378556985623935905576794550838482860592473519977839414916014516236666913341219543572809996794063690283475618372891068511851007267424940109500886754911065864784863806848979260500944844944446564921020836920106855788615414130400663707605936474593894574302484913285759906978462747346326871637179608938975191112282814307462584577059695242384849851799295913243959660739657622387489834740610645151188401333805705781695632996492148085899214831430447637623958026933712234814343225794715356801190889400516757755588293819428323293200919042336672204982925641619868442885693573397704460079062655990499132203496745524557010794371423470357579837917699751569539696517880226534366682937053903326417932709522044715784733725190224318378286595719110802176344125085414925745686937656335018547604876601222785681899044866288220797353193725518049698307047645218497292270755402406548075944763639606304030001340376747310661231548672046383323080480079016386359251959000502361053112552169365727737151568386076167159020773371942797125775563907063399755544072235988347099235527631621224153600170909907805261086135947954328285987050378256331436262592129957086425939367272048861358429499869825067280283660233342942799607036730558508142086915005799270993844085974653262154675576935665540581988477414875076972677218728742309544723074220417256907768487113527797910102190254840493331405253678872852937007690519313982916453371542021917240287331477782852290072249432787522382660377766177916389924198240795109048900062486797067867381975208534380395133691962879741135873848361285459517828560368723902956162291713101218660269188088816057701350214765546080897793693063049006597272236445281979261594515636898690091275409699990963372961835176523925372697848498678665170936266140349945524259853759476650264261607023175115131051072842270240922094592731697313866594964523759826999749832221480358069617617816489078976908105526956023912402156168317814931266614341146023460010057616041804597557549255291635242839839268408782723714184235833592751876991438701323156270626402636349315066291771326994010113542633694148782106923169070649900390329958339863122031374496327273950430100459644742293922218629464788004925845763486867763974765745809909645550597476177224511261496037260012744649385667441931715203154650607414787771840803780063691686255449682971089893134397210798678652291198866942979578753991318277603587576199110845812347055287992286564272622510616532657652637018988812661273577362403216469284112629495599117817812229925164329117809857378956847736194439536141722162942789340356157198397510036300495267411183544138522723930179563730299026905237045211718097656159702928805123727831068019857178022875008422876648955288271343337924408155559512836549540342302218607182135140485124437239334570652499679748860942835560295033263432312124998187528784916461006652078390961052015615048779456464117548472776093914252014553012526147337985589129350408536177752155855035790236228267889313244461823559849508721584796787317173753292798713241305651390417050902336332861191232993076163555353468305053365744252362130256600123392521684659068209223811714631460754881580035517702639250432992739679514056572219184738767946591698136614015702308880802189244176599296561830083152893051198499192153846012702371193900438088360614831378924510980871091285872098424590877578342358294416744611503718086088608782619874947895889029737772944618075782796191806298561367470545021594524520982889422906755164331662180690381522755256397828212526167061795451981700385930753361340637682138735383494480262499968521919362444723205210817764039166882031568536038356725253941377421142416772320737620982272620401652461226161665648708606990927026130832035023334084603469266678034924146373643307497445834315448858329720725562669894838828544630738809083483400818996285908787830300395598201612867810886491313558123525788368361499613353879643425914447632088512841833179812737362861520810843981854224770477860188342711897708181945612154651643030963148886238879242879087736585462130684802002439236045316631146845162137169213094604676759974757353153021240040780624959975294942634236899302738024619867828298754013490573121758281045971039087413475528114346801354881095616429644643748111440963428792776038228539572724778332007817758323687566540906971226417078068772481703677521475475419323062808350889564865816802984135114243197077480472286634484214724478447044658111083928401384916114751024571328315411213814458037968760110180676163982602947970263766979619017399027200409048891174815384820596826217181355752523493066361955210176362505901773249838272 -> 149245519559738029479837869267613530542773173080749537745476497929206507491853382206452478629620565659486003052888942128010437631722437573106734191955144854629680145127370848584200554941702227539917521306600767468384940728975603925145817572712620311883925470565920287475082880326754197546403573742199086263580740467775071753515048350163968625316779082579332654867112461946654550917677412833266580415136615911166615493116923135203493086511188445495513289875759931296497331689206726830237554102610203553237073719520592571676362156153129921549682069310541569986752085275660590852393162921891246355890187996161848240547197268062781861428455911551997732083044702001638135453870314458805235600211059296537945949594140772026788838298846017386353451112767065536521803967868772406165473305848655738267963842269779140924753100176405265079337776549461262146278208243790295727685513221228878788559166928260465524473730667211004292733427173586798969120042097431207639163667488539108725189185671110512088715070518802631442287145333822585784934379545623315261739284880013450846547789081448833744164006556972253193195303916151172587623292814618438104216654463475939346327640959105557302345849631437927006055585820571597490472007843306760627917749810117176356412371079972617424514863429438967776915904509225624231244545013844434066469030297001330099579321284532927567103754860638438996250602739936084865201935620015323769391285647740107054211472096366672752928167605782222879071063402316357841754323138846455668630354125070336071049610233487870722607524724639689086322299400356824303351807945658873754514453462421934802190954189393330782867492876909968707755302283973333096945242392270932577049724827480278214701637510242423891774222874913692110086089876901485533873620730428050806659139263561691403944635506377600417738520521067750150137982218740292806106001333465843189031071584819843826895381466871701568651848930039825241887759707066490941266808797106911538109324006273723322561255909760752972146820610396782205574563423324486525276046215593469250030648633245306743501724058756802461754063138940702042787982945859287211611996772509735642260240528767292077159957733042471029750141268335695063994273460288621111312192968632358942629481023068182435099449172862338697425776513162771373111568998439771872623915453679923038576548228765506280807305056379670521974503606294004673343591248080576936473318862126897554128754488121112178628658663726743641995453383767713230832505990178421632708140119759295908110430119172248378829260125930025090013647331964881322017840966397863979045348410186573103548891429037647515478949141417211742956772032036201737841417596891513996287376338189709004901856187190102464481275553302821940347855097370552037026688337820759608146667714149802039101152963822399026077844192751079271690665907389441537080695869589908177375351138417266310896682310858425641225147462326753775773159293653566111366237746344649369049905964760415777016387972505730150679954324493092468054449797276911208941840972901288512119380411353272352776817910683155730079801054963658771852130771318196923365693917227636191676658199596219489619693772534326639039808949587172310246982625863373716432364281442775980579437320281077046839388046311566975550482492132464889924890095687822274450242140738116905445125607024659721785339230629296814186660354623795683109952908931398836623917635782949906617856172390376691264145458672198300605173213092391765116201750086584193320127301450679895520817436677453593885188644591467323892867552784816100504907116034594132670906164034747610161741349828577717513644122773660418401129551258115143542888494673142510309191948280486850250373283530595628016232329848226210851009716826270920596559021344042894661231556455225695284327020148176495238536073617444719328749852014091422443089116415999177004481389029892829720258280961254481258187789596583847759633595778179950678596718276379516888966332053304416457611733182237733073012957912409991596915299413220643567650009853797793310566305107940777472683423047082830242595589219117624650106387127123658706948471593510339830115284507318240740396632553093917078012817658497108544409159789388880301021287257862169415934398899247610615812165144623845611136938930316989025193888569277771591677420418005454195470591070114506969589102781076790483144040123986197482144355465254166552752434810244486608899805603868304721761495526289057959750651560399424075815726867132809847560113374362318043238721855440986690928824578127566843315430376076586600631809800959736168607385335561634376265426723305686471464534171696666759746232218674858627195755361935442753351407707251544856333016747907836526756187523980020864491661156450095496165600946109892615864097926426021044243059525280922120752404876170219912986684584212897617712801590497389417735197437462362790551165243134542173414167037819583199730804938894269893743590768501331978594182604186810268145180521135429670101760309356158592796282602149953958741303436304890591526806141262376346014472309766703941209015652960917356864564635378572132899723105574664382875850387424569823780209942641184717177231320661031220560744153403565738600567814030135320025973818928574790603106426367293295684892636394976998978219793385393381932221051998942980195781501329446469110847448880013819426158255550365752154866588806096142390219005971378908122216325303973021088750675143145017604816227993798341876754661290499969812283627046531777579953801441790655406931670864499311934952185038089385517670440221863560974216051331346974769045960802292701500178321923120942470852189791052199645558105380942153272937063498592755883901875925936899569454607429000659772001531776305045323752286673122849131705610217720141649504506412650508057652610300088935227007859976825683136975404473791131113468392741789579672871090232508035343762870050691375105214522236446373122259296741047346013281386265078099885163059665181643661958275501976238019532045112266830488226402950778591359725461823098105374934241340371507772687237065961900364187056700303815309165977788470656023106447258820792074456862386630487038287082913157996685845451054406407724193145966401545908069837145017040169584074310203403400149098920061344186142668626652209226727693125725400174612209533622941577638252732180250693634115285965438021727471253359052556653047865934119657627448875222302776202182291151362971330585136826614353641295560331795975547064536114157841512041684786048171212089951833201310633605755944709609307216678901349872618264060031059651593417525361217603588764469371349851153662839400081762846530562712502247077793051657427081678883594180495012349145354817168568957844183369062965144485815825980422966115693450674726450901207873831401702671635722528621991099750622540365311430363855174187087657465417944284427438384370246221433881684614213858337376554872916815963452826149528311332014089928553145481645453419688523202778682314445919882124877754142140545180505844967898798796629313885864162135856238364642262579507079095230996198276923121459501712719815312250490473236119014194756683569930200372314643464133299109580318746303279141462840527145878598529053516449281366778845192537003434131261963314491574317050668283412212621433629085714567770660281569428695127008350823280458668324015247012919656836757879940675502764093333330591726427032338272824319463994997788517114494421686750830918548683383119630918646020214802165315772675077641921125891996754284671639218650199852518690870265737475668751192485713863075921462143847556270175016822727515773621599407358315320207420964640171837678833785638379866723629412648305299474657838627836918205886103622907461490331047848951808993644649995672256254152685651136397655311261021303435215551941434024416464249159513464831335228055999327403070975254196298727210723853579866819531203605916828037672205068909547731353892835282318412547153374222011969532288048555562314242564033695159569068318075959860785240290161905185838378944988791027488789712275330868323949864308172116746337212377635680360742784058470256114887805477501521929170662320758646654647669933430137607307286366020814605308303551257200269806967461194251244368297396443113592124109926521003074385497742147035194386559354793754956459238084094603576149518541312742446576580784995121767082371637514222989523208906841882104374382246989537787724830720607272529077565141829964126672349123163525640883019789541858063098527495104084254440398888559154837968983108493802407406097156071412664376501694983185160334823021738468931955857931482525722761333142371563663353896262088498916129070520157248059785455499669115561321318577634213864182442089392486000814064133417600708703285165427000395181940738126567446643550070723176656904420668401793884979105964239995334526256350110262025953543667187998881423477075167432246908605853627522258591631212045931298872283004409528909441725910159579217266572205113969458913463935922891367160538529217728875681241248861457847696177304941909627107188316294617321286114149981032414252544477196346851895470144589929120085029887267112130359649609898960327148107693940120305395254677193235002409304256559116919419873803493703007517149448789713399844219776935908697670550480830689508518887380537849417067890677199195708307549446912884389799706576237592065366917979219821273339616015310468365509338118564229028450239134941308568854851544026620390653353115254071657561609126874498904440262426215793994473004270476986639502315786354562325263000343093624973262662610008302827183825128496919276522903668307485290533288788213316597113607440438266910465335490684331459179067705608308552330695085600637271141520070076162293104451419509284816824689006263266891659522846270971420220638075359111746358230603771965527797835989192597130661984436420438804743990551933161285828087396950784620705541224265122364468073541393342506430493575421573048985567015909238551227615126584333857014130040521744818362399523606471295722665917618891293491580977475811818645334943825775910917280431347380641028900508285521249397158842655700281543741218884323358179130904007290133769803736257539916512687095679360426924149935833807725898090652167218714016960514863648843636529467005122243060614097190325219655877806541862989328962596436174660250297905264722729174807301415862068006592764527910181851588027421681252016551625837495730471558589567553464821729426605664674174166400446135471393742448114863080920965542332082845073829307941386726852852847860951704379059147508934760885348057387881072795812203130800830335453974082845519205642724956896386200153704152240859599880188807019745680303811764657382557373083791049085459609491512681331822346197254591689995277894853970546888948774098885951816454269770656955042403054160261571874206887265513663302005918927549924266596279138158231693827018827412907609976702732486857608048636784011449267482419768375518540207647578434754829098006596798962498027089694607228899723522619544905898458427493189916295682956762524449186979490413240983193774339061444013655436429592626767352426666170064996279950965606981813344191297264836131172013587483184361927794002148105115662473039964343756085816251268869673748205179589113740531183450732085306002675364143922776864132988524194769142398736304600062413023796571690658068016960521310447546684206655468358291009916525672807395918496504434007330424832388095787526526112853367629229745554199786228043648534353442542100878878076531463665474574172765093593952591520390904989756102729308447360349992968891694096965092001856691226289998900467603222318205549814040179009083905448187276093097757697176613324521943840459601549697390450830671588498304047807800523561455575078856203652948243898706052090719665602633244877689442027369101867547451486421896337174925470201940268798836502853226199070447465767628054837443454700648872409399955995075154454456236650049759861092877338020941707166716662997932787727367818596868909465114175277426163966889822408287665020217044371419675540143874440042005673177443029900960482753533452145601189452645641382854969183679676126634319257032599137332297284982256082335174469044159158068058534937353829726314100651391195219144950600664260338740717957773092957372929009331893599481967515545203016436091976643666982923549699888051406332091878151224609996360312270372881415793920793241651037031699280771422746457475689239765601998064686714421930316455424477171124802544900609255643496923796530844209685859096135625141637634429176427064300285981391758864734153016384116178858570961868498302570411286073546349188812410701602803238568166456162119178048826375465772849267770442803196639121603105752860553038743069457261612122937565136504496970453931138254999966090818929570359117049829764757846961745798643368236595842624028596517970864405085546812548839394620236041050748970089206597047168390320820319573777042492625715992641579587528717408839097860961226032002521761200269480504868709946217011253110847799730946478646306640549917376839997072870816001135994434749675245117435034184307754946878106405306948217366438315701975769986033160642431137902007555503932757462557725146143549548204457706519366440946165842509146772619113886743862844611498254391974938651690810061183253020128595848621238240840006004538614817399257324492501336569910401060093584770601688299892260671671075375983242826694789683490947684918217737590734771980359109056269046923623805301205987719008158041061926143974405502396542948557471282274396394008507281415922548943266463653956453501859938290192646145476091441346875405436578730367154430100055968126023495165770901226972289316821321375248398572983814270591852961154155256636020141079879075676240170248670676972695843524468794787526162565098234985752463437118339059229019966515891151153494016482440239974992100216984584982634569143051052804162506985234036511491429710846430792661082338453312773769417141018967282513019149736822364193511852082440413490677287045973292903525350180338557439777617846710942770943981989152598552283972773830490270954918383608245680975464315100406681347142034741269974785378309857384402283869180863101202290831213739607513316256886807794295385889364614170633987422792748791959329719296807230539616243990448207065072440358700034473758140166143347571449974547450535334165781916724479462067818838225074482219859006426216529013378740049333118693220934785666533534398374371860204248693438429643543446970320318353373761948134219197301796577448541073608704264756244500012768976332701873575994811479993560686120448806367492357066207271704086033372759671486147466820213585827976085002153166848092901363169362916341400212062370410171556203978012058063404248139905842346929397671396499749609395561157052656721062758217280299581597394823634234232445756272359219036040902919704682949014891375871950218183423028101680520387839347877709586800460268185637378290755631001333650196220062153378801956022471683848350963201750533261911944971137190104634043303333450243075986408501782928740891819517406596332905664139316518960278376658941629374990377718879499107059811784919543686360347340693220764408453574675125241489819176264119482808504020537786821704549793415923498639711254353559321627267557501232172944364754256172160433843365620168662596446136506576108292252403972796033561244942391997230428323561390738627570054158483459534685130878116878070470372680949655327178107672411185800375466184091269226156617491177053297739144686710735138891389732917855675472668585933087755534880282178867657524489276648670042298711821195433891381816434665636000764821829038128836255950199537009594834326700338120172733906277507363416121594115860116634887155942762441144529709231580805286257811236220494020488586054958986892481501287249388328682363400627395649660000560502971567688462708847763184097714957806984982240604850239909813090318698760927501093673466500541902862124059166106054049118089468981278752755295331688801555229611989459583506492421737837145183659963903218260242250824187482276039430317169106128103321937708894249006438299382513992836974094311088934531721656115310121983277248713061488184242310004353120740805249880181655854632845210815195496212270852366665668539909011949669578722091297976701645377820927512625729883827081491858507040955029802854297928249802328126224898379355567956266157500455638920138121619166231942682502474345587954185997592332702696073546219109323683169161789783004532851681671744795588554220551110556416514641409624824987250528450498258110898010697937739955148894327950581065339192807659596979618326670749372124243520749384354263772648671636947736454093905298516692668520349784045192421664493257621772594456615325937018516547357592076932391681319127493304991104995740732585780265592530693801402977834380178454849917027971284259023354900512699434202185983743263803891873671362253019598418832784169106899673525882583116809642923185629188895937914676978098545331614189841946485369442730722211282318860438449741941746850027526321256398429224362970174177307687415046679090372463050447366731510437847742428513671581902123820751855441138821445917952258605020829676131978073655499299644547068420254428350352045455626274382500312178994005884802511608796202156981195541133508670950050078279682766702385023408694243047115836842598984318422505508586204633286599405463515364277231566850586081615078322996955385797004226035074542114840330948197155974966465222235115160057904961410562009842735358326330256453092044048642488930283910291988639078305156827762844344889667551219939252958502415816411813825037540492971855583984749407702742732146353234974728011207354085626271280555989630095952678123848964386568874890898207372781016412692561261802799657422718812115129818968786547536542748108045811484074960147599866240984109387033378350321656871998623348589051338781432510970587285880060924301341257234592668987571011969187659109143867754359688067445545834721877866158272273071767703008364454275753732896167526639757404915557524849649718897769407983465503590075652287204873352547541738536216537848456436702283771037433151203250096813844009302818694917165106576683418670937343820753630237474951706910485999485186989693290006605980442462086509968934965397498948401836931640506798692767833993573813707094209749373342020356170384094823292292557048353827768588969567248003773775406509215158260538602991134455978677989514704959403461862714401049414046887689474113736726064250826629427733684982531283461546152232911459183318828027845346034840260629647914707680839491280156592689480845326976590064699149157456641815188346327137285128493955234616125564382983937327435893300935708098809716169750323199072928961926899946411551051273103434661346539571725057236616236948513033099407806361435460276234747591751045692070126113908859927574786972781996791899315604630798310776852865574060417695243814017247673592079360006909594769944640516817282776336151038242354520621054153378416291011692247796105576524696937405444329207170527951569949817349934446388985190233857645334185426138288126308862747215590725380554627725557538859296115404843565846294969480176056283845189474586027716163434225006506159058160808168751671927896632856422712324822739922301403395135698251638057999979772731404524094357177174722660592919148995879220077624099014725945553484448590751663776676799042825358859913733369773506743135349369751022968743907982984370650704280724591661166485201613304647184880989636680149899850845483025328469661408570514350751324253481710538264604351825662709248964873501444326092030051992797842724851069211340872551800294458417040407801043976658530509676140955760714057469903688813479463449308985479901074337632383228121646392996525542612755137161261550429650218484754635610649037297881036195274676224444666983104891470328062864429428081990843103843449497810044724436477805956219132462393052636210109010475498404554449536827376907560838595566381502746530976885213618033036758651100905615106298205792374663202287742799040885776662746447341238434217013265135879716318900102344779465042551981177059795632594408250795241772339049378418943023240245329504779246327602594109175233607944201486238131972850279784816851421747718004392117546820981723606686565458119495419443736752761393470528373327331287328249132220369249349753531521432749304177743756564613204995561835573195743626520324843947224580681649405910475562012678079905803227157635966377078209021910378057504346517863731784204133094086895990047466930407979501560458508327445879632103107242804633135989925059132883511201653888538583958371077328896705248644700470974012844513261974939600504162215068958004272134983588907298858864795897480135949381924366943744352185762715697196381883149380058774007349185629967865630814180311030466353913460476242432784658609572381688633398504847725092220479923099434448323066033461675755507133215870871040291753822408955541577466957807845695135833232361035811328868755844140069891949402082105352258755260397119957757681137068291366314071385331531330953329931955030012610318032316022060773614871747772296006593578652744528372414254879355537530171600209602833850664443965217984528132534413382075361579648105878391525340705841560035938170888938372487188733044014419903772115751198060200915876469518667252310489635258189211433850367903173036457376268026082286774384277808707272736383672887425717398076104674447169708991380448550963360893383048230440999352766634549279623996571364055188365259590087712609464125088200780353233731168133705127585160931163193516776683928300750409493991185395142678709000730128778464968732064627664274399398597246299765797240054855091019802557703120628673018143025904446887336854249541257275877455990670219497887587536871964686010343088331640265817868603446142393882608608040338922146934778343219362370652378418627209679135137090711064304838049211546074382712313176078347368432873980389007198698024136778387020839451862161720186950678114062271291981666366688539151616695902374077353684148292897936259471382287372856820477408501257039823845762156347115947950331607746813975470779069848579254731217412057964200836766996805947056852043207858145079816957445541241164205104980711636766799273763957677016051765239293807415863382935552658723586282416916877659904921008897676046677149697185665385333826771375473889584080760932861906642556451945994619875117737079500715727325100857056495244277569479429304993249682617189597303914170977245940894269092343311044126219668379679932592069309011832966293920787058743350579563796170362222325373948887481996821367521685647678082612810156857374905210693563541556563632916614610678271515595587109549796223289457419454011450952653101855363012470278909681147425317538461145891747072519790502224775808016591744790255588722700137779596839027245432869875138780632057901982644245668023863412031657731561551170598435705666466040113889801901351437629473111696278278057372294481149879318230112868461502427225050737566027631637742314273817082168514705158241971422985243401779812362898447372321433227587585030241327090151421581493313839154444701874050754683315897979184011833183445173084636093810167945315780367373843740753497099720075124279672865391986887104307079900875944765922347890945050332377789741077084110435862762975583865543502768916699675837159422148311944603931253281172438038035544499342065033020312453308027123263561550586478318659445477402592876161572067634193135253443317607350601996509953625431906779658808709764079035898118814428273981810501598346923357402647863705135895677763769039456855915884025519190524602260691892198744359330012361657730352537058153025162844406795055186223964540759520980656146608960631778328495110719765157567285669296088477913169831490019352953757094821171925325990484199863995837267792615830717821194014635595869880282890699212586265762812305666439190509797165830562175383010937738097149957783705540096947797785287242771570734699058194511402725791090191548238310362232948395891524620752695915508505114379560421316963671429192641203367711699961141156872232675723005629124120674024337426444206494943401852363458417311596358832676412060857895727497245920837166720634828686297750089977770255866118742606687426013558920735300714980174467287232230607517111205904130914669142595281740462570997324720489325357613558121109881096687759434847981008343405505383891687602053282626227864677279789895083416384447787282014499734332109946279115090461960949729043111449273079334480548765380260012923207350656292509276749103925396790030967981310742639909367811572460719741896633195127480357626709368834939497382940070393998769120194177640937515854578002318638842277455349005593761352269374102302300883388985959730208343628487157309280592857701488101563156756338754366228432241981237061445226095288370637624568461459665572147158437808561639390790910521457210929402422494848916308594255913173893316214710341014685888556893313040347360471197278172011382338603130879778528101232019090881272511431559580722478348998485720267989537784114734204157683216213358160343770925721191522978307611808552575123319135371106691486596766301208680095161368271054771621031522178522223603363900263897118531915579387739740246435596471556571840373942542295580588909244846463535581119070385339897979439757849059413167650473309460983658218125771734736613525477523740866390944825285063780888291232134746555552942078523026865522144714057838473869063663889298105313558089885494068069788726838380381756569140664750568360277430623850517538952491868641375334470047510808831956839556312030157204636822950966896545470162649432362017467417345989596326835067958734954811692358162974944293456233852785877857737792131391524330485900511701960150496538979612750340005759626625596525701821176105567287500081291732682220104901247873145264366346496970310330821499251626140261258828989459207575184654545106969549753132345941494621992187954955156793590911770222227798243021631280683520308722328231243353367945164209322400436486447457098406633266486046910893529635734377610869525530714752545142268044271131961472442621931124830802059018577516627553274349437438137182459450142908905012307036235298917609282046050700583762945202478831289435771368518760399151302466943759667105858445071633687261148729506776736789287223360248136819039210062699859995631664208592505309418250240089269511467225503204049450985356856645481010507051571111796508264835996948662769285522542843739419678425530929063237863425797133789783714908953892129554317064657691300611786366117449976948223738602608476760474381837095289493680794346388482789371013648614780090788169701416367317533514570539252071136690336590756701415578912651305565429497708329449093442293237989509052297012665408812104934679271026701176171807219245060679570815946834084566547617582843561074893454392617295067724124657923110066104567560606659406957998627665359741205513436476950003542679772705808712050587650666195031272643047228739800278141269134292654301496146493272862115960245271923855435381587229728448785934434694937824087679837210070721779925080979739521318244242973676528539328519821037445893871198191039873682581896757892190170328471906323174231186576310394202652970094744418117188172643666659508413316031270433581474576086449020480723940778843673240231105357377166724360900327584266207711659856898636575472179370105126133934817836931237058442538137568474685508783551317368416308815655647070285456975727022111664627145084109444666168845048421750817133947421290870112190553822095742654300175619978276131100126227173739067771339825439445764421426556719616323039404294563974192119398793635942871775588388764692842817507149277470522585985712709775430876726935768158305743003401638904419770979190709187326945197258682897904323778773961662875797189313209752873705314633231610125422238321146030978452891715932086121334900325188943552727718774915584796459254213216768343342134871280910063907122467484260060255083770360549076200105059479340153397267787980544291121606780526879213856489838876723611159001605987298141657620639561774322629604794805530295855097417348595464462935193862795074369876929936235838595057988915376411301550872060533680872705910890657126657094183933195227449006133852952242578902757598181020429034608496748617554513443578548033551716246803751794082937249576093159886011017819423977018559235877026316060543741493830476671753592131335895256072823484314460208939367420010171298496647372048814558355723420070851739983298050356102002250703378019268674697842343460095372509359145131575057458127578065266731551438830385145840146949877298603186090544100357900406465138373174203988761198718378467052692881851391210619435088068440727222377040570851784932782416374337999788613600321334509220879857173471892289031639189694025161019913672914032695117102024820247516787742228317352266208640327101381305569815116400638001428608965832648933363543412033906684092077319150418646103867468648658008160739062220895768879150684439503584287781005690337732423384470845525366789052343104102082449252451053885202855730889663484271847654016906776852808983853697119380582541473529615558642884140665794702474927314332687095364474396860285850151381222621336891843636790199261480627187654255561637880332689079880875671727770420489911797443949110986393205674305490891956917160586463301532902479465053579486750495640336975596775403427827917244191685557017219419299420162914230951318256036662244275420808500461894993618047692450221793128557129443410941662777808912357577545868409342823607510792088320416804838418380586526248876790324604665998828622112864241088259712460077203509214111665932304537991087069606026119873266725115948047267552206428278678374214348869753428453624461100357666757556985731953582573453827465993770164706921430710904920060787919429034675973630398577689709702465450679968174154979153679692648581850371067589700151009869650047580037055893041210444517456398242096127060851984835622458311462431332424900423554183034070136057572110282986640818045973733929414968942352108917405059911324553420596317451959118159484759139044406053184423494931479577024283247836380703232077626157647341289291339902815070236863429535800083383097701141787419076766054460203900023519806370029673813765162734427488885968021096435645192367098759789115109693475668541044860554377714460424011184319317154063119537898222545944974169703938003641799119268082948392889860024979192482745885940373435445366324317150582001553857728501585998776996290615583504101488430818575570143859154445405978325446637965059809416605421319107915455278408079772054184154487447436036760212873121501738527619631621682892918160853117814476005418213256464556976076916399997821941709457493650400729206534144842779030263950260398231685902709891704712311979963106301743264791963604482063198247437855786078072192144758390971992082958470610248576337266458193266822857412295779236030276265489690780078186620413714623629028924219360671680407922493835683542609504826362036149218972561425128936879532932530707196643080573062711770562625760388499362879348169176861533237494071998439325636572608113956713462443013128046925427724590450686608381021953366388258581110591070300654247573167802043845581099841414553398088768958610136318930641135301937189021971661266053125319206019498810102143598917242016437726425239629482588795020380106964499560540758091383784194147228205959027541237048984644171018974704536752202313431517553623291121973192513541015750784510177418266867729375423609610790681363139681555177231508527673826561685337974261305923369130812069774694051010546732599053355611806936351920314208306372767583086208063006324559147469354698974333735366280890308261245879904127987934310292732379227558150407727698237570126661880411362783346331134906172902352597649277354223383898932751167738301051639238231576830038314231379470523810080427451035162395432906123808758983820372928770710144877713564314175414133966338060466268049320029626697771385861467856400889147508982549928248176267523441237169498776301360422779222765403951307106316005575702993784877182371034051506202387049291967090509824043034796201931877241346349537194278512905279494631777666825912639118447792142335584223850650735553715779136491592173956524640933882762462027313992168064107803596692807346648603006566994788131092828901282186532420469681752046978631804358396833189722042305134794636660067514735932905040475453262754580194244400874387710151878563165456625606873210988778553343880389449545352225727916107912894070554899416577747526901918206072492480328887012452110595291911386593505821583904938044258280621949065879957534684283142080095700015239822444983863774556307619280283094144810971995331343380747938433743885214285327203029277981395273047086957985848064921504162604196155524318743462518358025769976972633293569046195998066135515177521260482373805515346036367324193718828386867317082741400601677374547798317059377314588194679910146529334655991119533757158672796751446560791758655516305916917353864519022114625285891617097328630660746796165732943453595208475093570827051092036699151353220092179941604751950118117951628512176387821989119256416045092912772932356624874477142386473211791657543422911353339982435135772611477947361969474140247490021245574333890478513238875242268916182950607549024467914493882137849077110680754309888272640565678247533132399890885186057918929592810422921244834616337595498957261865881075899436077419579911387909334727585766780582018522059449365160329958328687384604431238653960550777580612301105999377205425373527426972805800932317222030745463117417260016305956248722079347018337389173373496761287145444673889631697252004242670025893001743152471682347656315232373327026702500843314722706993120988425819830540633385119483350845968117807566955173250166261897645497127345294497871799922199157980729607334409934735383421294632281288981938276765395906699979762615957820453466681993310162239765853498918257692758630609848043700529757453828138115001566663226520389234129861842056410029021619964164270458979683081266435531230944593690128918917900799717163036912976176455470206309471775846258062802530248765714789856070113328790468328308049255669607211434438576262776919651736906643753237994665002992148516565089358794135323179978378917026561548731085299973744231918997721532905991850990182283955575216112672030479441651334255877952862553422479881302208254759457772779211529228539978204016193217783715109058703588640882697553444382309679476977784358685553023015531950832288801722562590154592914082833588418398389490095947132634288574373189127951936024603990672777195013985594811289585794127724004834448238833366523000312414248054529760982001268368123041572665528112425765189653066525835967751533056242753348399624241990070302873568872855688179959693499881236958532132478490147588148625938835562012526094742615530531631462418911704058613963841404927275875771083494298266092877084152977619199933282830651334136675155493724695117863958481848229815052271286402288393988986078866519993881256254245011113906376965601628375966879144436382831017073645216008269083911788575878758515711274975005466784854028295100503710604005057724815571601632240930259512870360552062552091441570911691053785002757191744280068129158359765006007113837853866989851653661473918623331700349735773414189224546415961925355580292665573405538920371212349134138533216112046385082374519908008558864993249643094015416485310116290808174615144842053540817457304319956383601848031410704323435001661478421779710461250678594422143108599508564435825007088485289194518730042975626553504733221258969262069398691762790198629701013625523129143005896777576585189522343875296342443948236649835212185096038712817384992729678533540934423997017467157738752150864905389608810011282843897405631928408892646614500141966153154214480958917043298785574678741376737415114213500124307023903077112796815791332756604647097041434617699716156717430259954353374932008405148172928762146574289188363176077504681710814967463133072433799644893855187632727483869871622049653828164864142061335744682737587626911662721154381567291460244944751868065016853082240962773410015424353777020200248213571238863800808345312855612045541516658013164544347506665986512715331036211425170741453437647597364578227939752304092208358162028731198275039595387589797149230816125860883150253446358311262247208368675053067134366313903006531833958818525551243269059638962822797721864938740953361368825606490003636977838501691910468626058050835839103258041769174666620430243884806513076555986756943811434852877436235436519157147766963729756772954716158704231274596624255636915574713831895329482228111634743651669757944067117979671006192350209006722200680596766233648780077412711967124479985774159599591046574195850671520526722810682948266564206267928142664800457198694695234832797629454399538965884021008143134033747778298214113289504589188542431869547007682967194918852271359398979067875408333324297490725360012373040373629964500823714574621025158480231281355658743450437335263996444453666269814641357966274687314498619120105854481481437974969620571964787143468345175050138593251120448306936366087705454624437072190548731487366764693073242679737853997925152101723341881269290333349084747978699614216118161931842931251360473785811713805280308429147351435599267025602018008989478419842193932059231470134425130258466701552852280289054672252217593696544825840232950935702240833614711510002118247180207604923109121352851135142156675609361474976292555239597441643900982092616417010363210777201761306578543049691864044382635632645404350667725616848246069077269910182141153974076391763453953545001415449786279286225966490513747810945126749080338356002324937048106442639294736920608252577573484298414746283106571080200547208089490913032039707825837765360570055855710722293390745537201861669077145075736469078099424054290248493114843325070146624394299829296717830916888158312941736145860292259207758761011619840251944998725181569873787787921154489378018649984810788543529446895779575970612502780585143714166448392322095736554742775259024782671837939103704870831251276526455628575235766620007137484804544254392710822004013569703407984026064466632939256840632311788615772188179464702560280779647908212750599061264376385700966131533519011450423296246137414760176931166701932002238214329961210066322368052261878006925518641554148486973453463865551183612034832353885860264266536420356074920581242024269537575697438755938557251219102289702332349200467464020815039673199701548249542751522879184456624125557890387340928155134783850888532022925988548222230031245654517566617189117911212845914896064190274997801670679221079965160362480462014188391181133134034652537418779071100143701128004890297003293602628780958417989925870839945821040937593876422501339087595495250496389397864185720596873659511622765876605832256443533082437286221401234904178641001155699827776099178849779077235749682708208359315739751461350336740075348555608579940128175670044694698160936569282706755859882448131040929288490111735332762911352590380723296430068770589664717504740276868479829107271917551520756628407007626583971594637400132668592842475824577261943060315458340812592310158236195263581434579648778215402816009585247310995167509654069419274911529721392583789960530335224349746182160017937833776180034315272816736922453556501346239005401075006737243665436787384470044851182620224474864824442951232409923483749197283934418503348075332893508891865386926331355428703916459938153527859135278708671769110053818264956695060443735855895160412809565083791516401104479310787946428276184165488896676782384581734241140641268945441724327653130226801046020922096404591755032596251617252447746730566231887053666161850431746515163012723364720444948413522575766277235968297056546068211985585261638033832075630259987930704949815795160571405697495047744398830120655038435224532548474339010506884233704402911843383954153834615163998629593694837473716183013469008141840134152742202808256744018539282906149528797290642809810467272565021857753898040732652422069302788797715798740428875700400352891928984862148214868843798761281328495355779405844959494494556505517401165408544631317357194804828705496005864734399675633958826763318927680750342179978234854235082162515504869696130242572120313762719284821918358287095330483662983064807595262034514846382203993942902444428082098645398002050342743561479917360342671744636493819567963613583993537075169136873783685254819295017417205387996312133255882808112707280656717739175233706240100990809647821745004195615075203559808669181690728651703094721220148775542368710615559167786257954624667119394635289211602061555051418867151859494645726753906898610783204380225516014614883774709379823584602051014032644877633216626139273351659966962962407315656289796013433690578736794247756414289382302088049006062730191358971960320120029968122751977357258460185747000963992983779503540543004404561791383191696000705979890580149827529338230156429754045710143105927263283452447875482326719431202814723671139284419491348059751461548862476472488031687049743997973186892626802474673180823607912815314402802081069050134229675110696731609200060731274666517995268356453501438823433034736421363302797169543166112479824829270034492080472421654621098107417282416973000600180869193275226867627759676637603906317269977049193312429463617905986931780822346371519153130707988172327629798710953702449848839372330320807884193368252201781076838086443306552759194517966386507598940945523143544226239948826975375208867877298025149189264758055942586282256921322204456164750677561917178616851582307235862549628349292384927562450616310460320644501649313782165798065518368773249408912641783447463530269269379589502566256322442529863922012014850086894097408250487457919453668388417554314630193904489141805164222320684246513952280730366171573765985655394558778677226468961499206255999375168577812169130162005801447213858314440017137008051029804363924450883856941501782139747730045593219465798522416972013307140018174269211633145315640191150533352652993538743633760825987000131692359292136071864472275827153673858776171773057508209148554641562910472059009012734508274695730046788888622029948716821916833525819220758547231318340370772689802013191463806525738221356116829251128063446255922915026443756367919825570122082208323199330157511254826476752952988273180935033528656539030340936181130671738876443929130923788132412648435567347865996505787166035673584795033554029655333638180111741011232674390003441023863424338660593181577102552199352179195839411588214469899213873255041150298413655760945620610915042040152366222735865296437886119590953076763241891022830824915425402279988044972599903251810514588694051694449963254472209188056794767388130908859918809497245659876321694909122137427661728638232876821562012937245222693429118608457793565286611697626724961229273867111600267140684814282175204241368967077374089202809616721929937887725153882477578400307663729150773126527673200574899872574081458453236138741961808098298544636818999436645435582233017679116191864024854722343986945300773142314341420391253262977058200598977385177220429854444325433216846701503887876822521195341651263720521676015242617671043590280980717592951671179056555451027620833070241365790823811178783934568118298178347638620173870928829836843987763583367693046523312733455936732083935035479350729772692078574438263159730842232815793060185531333572732339964235391637566820360003463096996732728339444539807585289792956531681653912192277371814854328946981935933132264526173076665531254393554949153691014406606939136023120158536661021905226484857000428288486140696678890720091539931342225017208486818540588539516985761305173463995839186041193411030683716080175844117750732220544747706898604575794957990796426591338181902265134918631749277735236802660747175534971927325569482632192215767728000360854652188700870778094649899699459987144032125666129870723612475181959505454808869407887703402159776647204349922425026147588366097926456718028431376387066967832613217016082843815433771816567667004970531308450252146000907074848389908762860001399280828921592671927071926581765064504240875380515731423897192807469682813718000573458311291599075257989035407553107964504042464474814459821445275740582190639890902636259090175026370260500317915674632137344627124222426596971815180258989206954740445931480792714127839480482784988651803660469882428548210816911641206335395695258070137817839223265339024370839070947459282766465239435262592964912383015160911794004579339066456826667881336116462512158618560220262204805417002397388876677604476157757991168548763477467597752979606257932987842790347948050287155615099078240746600860854725323942470276582545521017212007849171519516873894394727348378023075639447029917187668178916613169038396082796433312268497454596927611423774917823098685225484651657746919209522226878115660261789646159664287499860728259094188747703299866561146822506052376302231867067672825238029540088909099241388106789215334266250176374504359776165131476125219703800853080668231317599485279076636389529552615136001339442767802812845032921180522489674186830955099125580435560315602238742502122240925260172057701583306620586460137712066184359664344416989470647998120375406089306744589727799807837485592261802032661374437549923107818877651953745605862200264005006019177901364663787113234147646310063046280331834620554853898265073550395005218665046891677675568750064487584884241377331652233816605471049829617891374047605164744126903355360228103022973805124335483895046247931008020904287537899684213213315076863441924483292170540006587718120870820504974064661443837872327831802365108294488837000534443839539716247176462599858366165856497159644463548387863148828905468845053461822333714634162533361881403125952347471357338885011240308831712063943044212432302938392938495685609836299289862020927781890050746307145225012242109315063751204881917655946806522537859757625551464462001240981544029531712344672569132493710084974291345277766429097274078816967429555751171938236162414428617851969870854793913262832820966151523815107590580395047245172301100294423731360997141194547239554497101346304330552727383555862974469977593449911027765207591502530761294240753552003059514385024835825745215969045692718091809538126356630101663939191178064907572980672095542198117222334621935695128408605030701838026648529693506283095838299649998881195776775048914339977054089450213785392844747498624322455275994886628122318842833118773779995908401424988455852740215397747737005331382106221832475196337066467479929719920593123996289116186657777262221889348128083722613212445110170518290164014310678583064467448945634456782370148858239156250316808510001977330870179286185565627170787118086016877662273250752351258280223804087429741968409783873070489100329587518659724415215513572142006137576 +precision: 15290 +add2 add 499043274348214318628399533148595035415788197783407578925955065561476811193749689684266473859328314098783165191579724030809820687269460719548617235201202038433761386589174623372514526192603612148324057297870799632367827440526300346919488456116165004024994569546579353551315227093161123344114104370238153371317324250854263687507536227120157489040454102304998795617973045726888502477109928353900538438058327128203878579513842288089525069835696594515383599704439520624130563620871579138750390061542289735560463475269946651833616737885257666513505741687228158479068206683470001504176865110799936950783354096211459097882962406716579165559653213269855893102450639785625468636016551689538911942463654553371427405331574642388171581039151706364982808517601725612675602931821602272502425734227750474809048400045747508112713177461036391723844100426948247333739127906973543394707283720164130270386062238438795022229561957570110503880621973502764674767894904668203513016475613702339187307802753736594928321414921425242996512355305038368193949285924182858961653249925347358998510920912328781302802095723453956331409351827072979605039468117379339951243628780173678624076092002932360253302986009323187030900123887240761565597134525384768136436901815333701887571184924547596199283091673924379116499416550698919718346302536857218382044241446564871436722666574449015439883459507182128167990879997990698127099298880548831926390111591659006085872414382286351538436058490053000371883615029061740860566140381129227448276513663160945380405376235476188489648618690969190810598082224277306343888536762220470587571229620721207735739218360955593769040035246726120206782855892832666401155602761631360964819460027202214745678931072077700616659180842763454427308157204883785128761583653235577360702465932590250042478039805268049982459413009171328033499895641625165355618206590708400392421526631922619559910617339505549018016462949866985562006255699207981482671313412089074027304629337571786157938206301900985229047834785415246323796117537240675739201180015187523527103249484048951036578054530146866281166435567292760715492188833242235567260771401174345229561720562644126387210352908767395274093196747108606893499525205047672595663792138887389508551268971007675619060339511963862901633124482036357718503795808772913053593641870996651657161660900212507056007897708098082921826693890126875626382399022291343225423389627298736941802581273382040946099774522127863836807208280419887394912947045291873897192825774098349284838223611374822771870627058291991436681149970862851198337331388206557496892662789302704391832894296003996191185597785905643306564256182880409769599538882093283835619378802713517621229078236911202651047553349116484777624073128861642462306451227981345522486647291704411986347323789727852410115509835595826459753344757329476346677858977322361407150565685470423856196590507099432498065762341703255278507515452177641721447033677957296096215652875158611203379800742113365575921369775611576521036251504708665141881450449984020966795419496845020564239547720595685945578063705076816682369022750788225612601956610806505524730050525289926206951055042289360620760017617300204607142609101355483062931063452604811626759920466039531995048031001096742956740023142541270884324233651803390790581611913668127116096948772999707136105908376822321293551908538536191222349969875790795961787989833922043483865686620676015697095015274286949310402680147229508833319198819906602921750282349787805556514889697988177372499479926639306103586634874123046873532579536585779517785535643494514585220991172964174772150343795516568654655726495042516874086352697133802084150985071031896936169946812029206139074287992793888046707606072216721813376087272346535650188900118652855930950698926016235317942973955727724522827201566826186196179785938394704618186844427752360040958113131985503119557228392722213847826367294071461696256635516837962492762721415918985437951903484398832951968338998859828052947481429673543861435122048621673419164772765958435508563033849396004052908707489784154328534724531586920039553650734627556139296010756321636908515097127082808599546758376582852278791442094201937823270081834856086305528812107780696647765230898425321558859998389534064916792652438245703605859207657901950856612755511104348655045274107691142937637452827418573465499840536904738518773023012545609342876476873790478233850437957477593862262098751538033858223510296534607736947961335789174458716789974866035766055381104261345576389924316436184208690856714626344517000835807346464999000194166313434283607257827717436437477022081504762315225851495919077598796544546204606016895176273745890282216515908999316882183771202172701786433411364867020155261130990658497645278813668768526921725946814453241876905308410645719315716331986671643320038816442290072367992152556921636080868377087677343072637267899178559445277694381196089037589857121089313407534178210124695334656750608156906056533310105201460295415499743628171220747842178631793303461363312423650705274424968618379289209072 445717777944258741355602024351762140408815387763111094403229872232011362377431970094167678003265346095390332654636732777576801230969297830431164260826479030017093385031971476727735653677840930675583615103016992051987203401556398887141857013249451135405066402138039344973521095412403242918567235966893647010747491355312169973196616156232133543696732074667873599380683115991490745613423672502828507467002989390551286855279613786213225450334786082288754736724729397956077404631313189773300982769058412293516434472882696424529093531743669598145499150585841494750534307507890953120131166021432934209847581262088074169704038361956984605550654771838403063015561471431668350731611629327063269747036215251142696960503424054098993662242124532131990309061186170500261462361659832768698269875273488780591356887551366614084239859397728537167920255573414854608065646212341983062806117450543872626124812566337030227544552925112722500320923536319927612867306724058193386264472790054525677753015917754776604341480924580492146728433691336415651666862948818791796703869832893572140130132579607787475674081576592124661972891402810491628091511889328345837376045469523391379443452912223033463182190516533801007943933251792560104802091923006107855979799397466056414155005183012326212786947978006573598197598088261341560905838653178980928328705544641447321046972366181069214151903728121744578387078062338896701651513318165494740485761691589865691319317417267160532426237282426766092144255931551673806111110602816238165420379583723600509442392748969432417257165329566350150109268604858116296701310839107929976228144799625018163999773788139683456451793969857377066399935373985524724353227151829589428529505997373585933769205550024581343099355109052400959446047503078107667428273848216018195562104629837140662824357881355631853841482516004389072130970604874060047326703333260391959205727408866874578617616015724334138951421745506873706839001390848420776318515652557316378990278858948930866614697235879481493570687891815445525568225214620092061518521155867361402955473637359609312720493229698394764661030418936423583194237879592814967101153712881061464879048249581605632867949981937272720822997165188175142493172870945194407607459344019005952360970698628872442163154980171764883314329734105612199670252839923112360145597533676537303999711673373000689327487374110413124129292411160868212478318415882910031134661661797651374445371683128141868660752091985686400960580706165300566233507236452951212145398043543232514885132170885186759170603815746710794166986959026856415012658381449715377769377801418520699287616611617265326579275759176037416719481209064360657232691501408762915974993108842199803616628509025326009108676726357484120269451847859654787071014249315426780071762596303121763894034682794722942525133496831351938558643157616516725579124885357676532064578086725918777652206876221350060633354089781416009010135823068005490399783641631377920860679580884014509244251114233203553584082210905895254447793556021391594309141925978391275946142636522157569404132023022200840792414627873998968807639108789352757321304137357037134698931317780844669947174735142112602991834903685121613114551300625286853477553113689344954229184668210894402158771753529496111181885913919713474714392739961139514898138803295866617328078825118457500418514447680401009855839317586270036088457323096647415831499525090819084148608423430698718925902422637715674157685041939135189975292459467590527195723493001024280555228425040972510508761855264901657357857628762655123748053418156842853940904023126349282565004589251284308527593761861523204545516465234870106487706939106666836027078148335324699762203678753138416368975070847836688318288298943565836699379964788786128544910806305316018776552427083440669892407048148475173904128966408757084690382748932422318000042366644595790667805686958173020015249637635212841087060199044865001299708974465800122937178532276043609020905907673839826281630545102344958918299967239209609089033687635715478267416539809165672889914376144645985228050105911260550370867216535545126195932025997436032832379522804810080803390939494155870304233668615939104994495902142768186208733182786426740371269369554821344999886337576801501167969539605150053424066182004910738085029997369055106750071334117288757255491857125060766707190396276018979797427046732534221950844310378162466742368971313449103599818864988968016956459302207166698497094380662262810919147059224138112349000887360236036328841890460338315032403501270401392293068109645089823498927217870644936236284375793688916669297959129732244378526569863111598308055485572269420780950051280076233665311718869763444156375085140556138938545790417644774127760833589236964667355747689965692239272024033308639332577430012278593833563185083660926806825646364950585880818132815342029730274533968816096986213687056965086454046007462458903449110382946857532879621450130825457455361322054690464539968337376103905816320272939349196295120580513795370393849429250620359447679963590695959672747662580997163913729 -> 944761052292473059984001557500357175824603585546518673329184937793488173571181659778434151862593660194173497846216456808386621918238758549979781496027681068450854771621146100100250179870444542823907672400887791684355030842082699234061345469365616139430060971684618698524836322505564366262681340337131800382064815606166433660704152383352291032737186176972872394998656161718379248090533600856729045905061316518755165434793456074302750520170482676804138336429168918580207968252184768912051372830600702029076897948152643076362710269628927264659004892273069653229602514191360954624308031132232871160630935358299533267587000768673563771110307985108258956118012111217293819367628181016602181689499869804514124365834998696487165243281276238496973117578787896112937065293481435041200695609501239255400405287597114122196953036858764928891764356000363101941804774119315526457513401170708002896510874804775825249774114882682833004201545509822692287635201628726396899280948403756864865060818671491371532662895846005735143240788996374783845616148873001650758357119758240931138641053491936568778476177300046080993382243229883471233130980006707685788619674249697070003519544915155393716485176525856988038844057139033321670399226448390875992416701212799758301726190107559922412070039651930952714697014638960261279252141190036199310372946991206318757769638940630084654035363235303872746377958060329594828750812198714326666875873283248871777191731799553512070862295772479766464027870960613414666677250983945465613696893246884545889847768984445620906905784020535540960707350829135422640589847601328400563799374420346225899738992149095277225491829216583497273182791266818191125508829913460950393348966024575800679448136622102281959758535951815855386754204707961892796189857501451595556264570562427390705302397686623681836300895525175717105630866246499225402944909923968792351627254040789494138528233355229883156967884695373859268845257090056402258989829064646390406294908196520717024552903537780466722618522677230691849364342751860767800719701171054884930058723121408560349298547759845261045827465986229184298686426712835050534361925114055406694440768812225732020078302890704667994916193912296782035992698075992867003271251482906395460912239669636548061223494492135627784947454216141969918174048648696025413739239404673188961161372573585507745335385082208496045955986301287743838860717438174253256558051289096388316247952956510182814760526614113550237767788986585187961146454281744825109338223817641581799723355782260009531041230874038702230848136929889707613349989769656272874662040590721225091120510907621261517764873545081680723283737391944770426832230383502046751594371911555717424845706745936528660156230075473968897893524976721297249377465477296772302558409888007533750241358472522575352640643332427178398311987914945993072256983862680037939215143772196342633848797383320782558699116431484671287517651275245647211846817319588674017076332456042625712624051856346569129505451986517471775484045060730056736190592375962412242741562133367178133643679743617886786370478332950815651176661859577578369923260748163542659428981843070770876898229777431473223751852520985326220257160401980769916408616566294156580989105134250426397206802754626239067921909056460984359038626391764530305479750716963993733425027598118164636524422824502722303407747856122461258438427198887443377619489359012862568014295044106714416020917696924664984560365189168644023294491279374193448946005842788829837070118123029149883008241781904207760944492502885701997280632954742622371726439666620863867785995762215459080677937557378091859201242960277386980574059636240468920178063219367221635932150490782344555443263063641724735025894371160287650075467237135321778733810924958171949727251353099675987835381003876199696731330533234943280870168687327126936186886794396955831625918818943676139572478030357426688913427493116326697556344491303762615699899948195029046972809392072672778249969543962173011865781396912753470524155736257388897432189305767601181452948225540650038136757595695414878905591748122465165749582760624992172128390279126446989318488066576964469850992045198791383785937996344706009478815017642513045900081477335517992765117236002123060027967929139214970216718620250614343944237655271005963362826845221637412300765964816203704344643223694592445297267583637272740723867322923771809618845845103927337450256822466561879218558053745200556720604677196870547867108395013312571065790862226271802384222994721683891422327817706585600983924824271434340499763025217109935236478542107123200276555786847168681855548651367873913533906981491347019577494597484682250560487992615653726372890994139873021122316992590346560561172198456257119928486738348463337518085692801835561058524244465520470738871595729380242523157633036593905919634575105414397722427090890452177854590774734308159091313906641018348726804764142946570469478571220138864989539532179385799196718945533009962349630378140809491710620324141966591141691607882413662909043276014346664947172631199376453122801 +precision: 84451 +add3 add 93933517838109455707409273485585627030306873750909906262684077637164088798747636760390687152160287836543160439476319118840073213718595967030030473557799534793479863660180453023172661301975133913999062373063921844719777954223920271729290850588476207460816600539041990521333195933132863462692872750492684279934707106437398589815018423647620259870613848832305744695449404026709898838689978622824986550206236507836070593496169590264737477844274008059649886176276372024367139725215049359129627098835709057442024385986207953172999591157249561719345099078557855022414594636761048840511746917266320158536911307960593585645793093243950501651519977906640002857397263313405135516340452678831006611555249976089786966019439571438024314065345292265814903187032319109619540024981247339206080161708537105231833802042360065683507261648327621726290313049115552140070956805957901127602824728689492978578961083217580069298383788822136714873316307128072922914339696526197803496287626735448274822030750704914142230738085321550457573162748933900129100272533232055129592429910487476333422075919972398435564805730408547598349325790534099508985538391932074548485106008790627805973172421778577062156458494445664082758414324092928149466682059808506908006132563801179591689450245995304600334075724879683534307678029769463001792143779518426569533310014129220910094160277845398269485872029426759897199287601116050837305052392882836555803950144977431325386916507369043555801275589734284776013090602957910793909206234203129105614387503664590377471898029330587831961506362525894614118996922518942987025492380484208108153080585040045645229664629191508013480528961313750351842411760397278899625744335926582925603881257880094332996206944170014354715407987560357904123953247839448074450812718354142850937447084157584782394649693700152437887541413923761333035192863546951737997540985831071139789029152736948189574973314185284165117141102494487536455312506083236552837938936547077259742840564314000690534400895847231269403900791143467970211723570578304598305309240612112229130295620997653433232671501985704433966218805920569210256963872435993770035122226520057468807965073389238279530660930122603504757402593062980787431389920692585034596450125504741521327107700230850635837410765827835468373198824318295541432713546108284932509538291815939693573761102105619404793036278476723197424692541841395850445639585996511903299831150805753574887115052868526982204286613373488679386686544467440924543680820818725490438500458313022685269994655372283503957898755895006971386124144185797299864765043299029980131333899368827026032984369740689219028469810289966282290380750361919251902863982027238875967996582140237832411056391396850324427591074627009789265244517393344308492661127172190072187145322006211430238267255833765525657292869778888718115856869798819432703198080442903048529893057081687795405515932087993604989069393097814639018260935008773821671544416560833102348688651992014692866706991110518545408499064091884791871891527783673626595769078065552130135170488832910861622393092978357541228714713586151534561456051916829930786656276468871073033734198760784384235460515801188176878217715167040552075895764837546876215058765755543978776702330429938603029122040800918979262987259208518961205346707495473926774231745712438646916408150233802319111903624350795212265146154315931833772750220059438656202008205626385408108113991156648787788471401945075275871902681299708064127896262247166775269248298741331065420559447545441775802728834307099024311699440362803369711629346162269919626891992062200001872969452118373683535597218574758332540618612537601442354477997213642016256033528161247504700856991829101998310469093960966390938554098056623842853253120574317195073694369346603075641042109494408668004969061091282353563971601733752516628781009040665050167000977713448296142103282691495871851035906076716094215860204965815808550396542687507381313798710142172610010610218524247283340808442869751015856639687767604152028814072285612539716034510252872784088673217612672942951240902873344046130836792104362984513597124456504773648225472200600528843571877347553911055615988445223530799874583017052734802261110221386212128042125034647586092704141600878550368380046153035861288470437850324245395706374699385435738401046009405418265705223764968003489191351211341744109828054252877193779461277358419017739771283421285775085453955546764816658910324452547799289086766176484092681300582314338469092587707608871163133042214338934490499281681426010245760622947249465055815189869496530537693956299455079849101499809061806865804587197968128073275640221437550898153542624622397727870673497919138719059750730517001450785001032604793547164062053075241535535971146521019296043471502434564642176140141355378473509919082385244507579243528938538392619475574910828416974605728542903994574018554644980092868480475058019301160600577145507510517170327107301018735015174390330581359652986871311821522600697370250883284695788250045050388214543926515883351883485913850652455788031047607217326051313218029908153843584054633752469608760331311918472987950749914891958372520996002560691115366759854097284835818139416620756856929121377376585840517203495513035069702052173417078589297795625764934938162875443256465477719722898004366362187267210385417502412876584537824729567330339125765326191013545161700889706280524103290051288025565503827960886634470242930965540405736024567636253670617083022758499955364266217766457890406172850516872255207922885985754949239344292033834981259089564925572422650239558653264965977252544384490540346913413985580646186394531383519730616537322203810164293430383351497509134720236088191502810101609258483865728980327695672417846978030168801721919635120481557327704151399306893767799817626676128523794680725983144015837312076530301992112059259200266795110100853585931285135160561578067874039124432509017469537781410931335421829615498371225733082807597640125246673207541495928685285465113329392027877858961006111822466897496857770439347915111693131133867433270974175031296228307659234206363924901579224320900884378998156994452286229204766446765127113474490501251163245552565567483903988652529124974797219041493856311374094022893298491375586355421552719600554871499462245478267212405990300727203890284202282036900812554851496615152061912385395080305467696358795397779013037632487605036366948566705904884119536066595789911610807935510934164439327520195135308808861126373310830441182489918992911650666091444011089081954944576417073524081183613330784458152992288474647508790099534477020038215797659301920268876107670546066293562341595505422505984829270248636692668841802633386057820097962505776036011647929182142617032249741661409175937571238382588692962815590302928855217157441614507280919888147601845536688437231030203628625325171495715505595769080393961833521274694029672580723248006821324445967265497861590720578697427897855585394482930131698849463024890208800089065845126457914212870358902544720615955219506514528111714034363663769799644096903738117009659329002229344068118334335794598241836295059440751561717953143062149071882653665384695151730901131489733935955214320219500384927994643041716738734487242501169806664019520177972005627285303928426197632873989213513077039012104549145336992406491782962952504176905885364068957395219906037207337356403606755128135310380409302731283438366937217200684348623281449205131351995584862148529427674356096206279474595136764846931251823850181854066509420143925092208520447530260741595516131034807178396454705668711316928840560940384921968735557658264790474751061890515434014841542041774769948257987442309323894137085946945322764820798503983385801010086308316966789811421628118643179669917011434807215538621181212841233053409977435904704129419795577671322018149475349402191770431100344759567451072910442529386334409918724513680318129839937327174163867600196703482957933492341750281425132939607734397982800065652102878963655901414210525585338786813809413783556783166107627746601866796906696452548936612753908113373742262613650209276803965224286142716426986482017305239935790382138305991812569688795222907587274645559054914143184906809707299970229615140643675706404954137312039322390416950176252023488591889325166901320890959003156843563289769840852918520756470204083181492237770680518144766797140859372112235080252505776958116975199523772500771186796932541885694247649334936083954784717333832385456803170142637442875770921167698508079504939253688255682873931370648925169181872024059487739217944284558058551422874172960395447178254880351530930394220170189723228961587803419699465699811554255729029447937919871329552589699451657729766040425830932428846633218732100962417671309164520974925204660701387618596419356901489825105420155487139136185176744929167396572365441646646477055350867094592235712832049091249317595650992284470564488286867467066590331240189832319548633206417299126059660225455017415619139592109897411148162721951759316066028605458430252193565330259635715054221033472329716379151874513864447499603167093425307783010399431690325713666381937003162814595092712676685632498346364112571837622961543865046802574263222593026253194895349229268463691182512212035638663326801069244425777989411566196481009323367788074436047229347830336260283815578380307178813572297551238707270456021271315638935933891092350885404197206844194312217639052597515236442150392133072488771385685472105340522019516422775962992079367589490627257382198286785737820384171286417574876562268613410818203567600952576686955513674448544659531001763506650725870741839547419447463533670434941543064494634083156107064208820169152286635987527041524191906834067489222400268922713007407897267535062353222348161377240974227020647356012803393206785090667666948093069142989494407302181425560099739276375046684699809483375084666164586333208561934174769293156132611930796461217832726652903031241626091322038569012666758746925191901211747679769905138238019774418928095007152004991901377070459808727599606446655307416138688949187914918244906926584509962420921229625542531852493439657860236220702417051367704283241157692529047777907047307484094361308569693408106505753615747425423201158515331872011963809914644696729882753897348278970162750910588497814730091557652600540298024612837719758036473176938171928800424502194588874822050312792027382168070852584250901059884391238523631457030899571967613953187605343433042295447388890875958861440473685118355944954009968262250582867811464189957199057918348074648659691835723974399992785871443745183529205118084705190693732640951270907214391571802406055350204883514767757074190409289496399539305239532402301566133543506273200225462200180271917122230933966353826233255593471253840590700544959864980781696963706311161060637115854881916087509450036467661669864854520240268318167770225306764447826408479739786539370547861964417459356970318714616018336493788718473065861649151857318142692080590145212962735528060334262645504102053921184989770726485590340843864281262540655049588061157734481403668699628646483497894547001767238987419309427790039529594466575763937270088743834829497597474342576860981863469422849439899340609039990903819127248642681400531393584852892851713266023968819675857003941423062011109058932101153705905216392176083757752475207715401496291077678911044556838953717900961999978143010324633527321351703516808735471303245717371872002897302912494907293575119757408831178793043918257518755160206383801752806423840927574480712840962739917130560315148759008084524001960721486487544604712583872761306714858084293605359816686157193610964072952767374607652589488296384338269332251370443821174825716562214956556566543535252410660916847359749494638604796972174923673053276619917051405625345737179610864886212896594179520896505166885126567072383263908544642785561482376285698010349428171080260164213781366410508285754374331961747014134178907453352596948329003248445248182218499478137854345953834188243148237267298076823053753225031379623559902142881065395707940538849974812508588236944350939063250640055401152259017735425776825803433733421129645319005511258183571533715837340255288733323532117805590842052829531773920476224861731174616399268013773492963878304905491027005192032381432872996580705729269037933503244618308255955119181422977235367226934051836013949805676899013468610501256918080653755658262302163363774584205903359733143516452282239103843543764282376338750677333175774740705277346441194292520409965705515207046215023006466118283896100033129050151682027919102622874183869272445679097246854747606581729820097149028120120136801690311329484884478314613355108037907357649369879102120580392814927914561402140736977472874054596167694526246510675043554098337486886354437308883934054887424044108798895032885732912116456669178549927402999491264345586226349914215513071205847963365588290715572410757623737817479267494212283160314590622502855906778703467288220703773698782184650503873723066882465147050789110015763629210408089334563198931185421719823759920450408745932202758017395628242928651093561319362550505229061027574170931371095145930855538801350952186289022299287459287867234142005506178961296260331759033885811692436202443117105862765786676952432979101683292845277713352831341757861015978305631075601917451048357013521828230889480039162538734867363955588642006184754020682391695734843884714011108154336787774379307327412234720488242117571756981292611818915169071496160353192792872883601818319745958723635932705053621528470218854127883164235153714551483845534628078766453014857758546970043350559421365697563636306611995077491795979577185833604539400069486916304179486367737739428490706752847002556835030211607039295936230106743463748554386887682846474572930943860908818540944848126289941490463079688594355309928455063941200712433916573539235125646666629205851354542354294297202574475686368115367147538353833427700957257356001673246379862360480104898553586442945380964368513022657307466444211514426874679140173400718376160579474319750808315156941795770667032961811037612391031057050174052220972356117094948124416507493617268493912570149517113538745703165701399196734907885895114369739291054589430860909503036964925010040796228508327644840990080454250004608165637278977261407248466698034834248242279223353733129956283303660988822166414162474434967631478882949776974956320227522337904653113016304316632106901295410547409495995449046957901854448035257387874466405573204229727582578267056121561727033763283706337282988439067875886581999403207537830520556614240399648342189023672572784039632492330875282277259230990329449151513291544224845619435489762882642328418687447787604035087781030144559678985194361899315331725407615240045609596033799918861337362776149412503015282762314509249282170769068883769643635438997967198306293712875688549963029399136100486828275890497221217089341829087480901110213464163187166037621918691022808582764497576762050066784365238651521768788709243044924662239225034763403137966481415815589069403496735490938539522473089156745588366620339180177707604486999397928171037124668068377327205718202347593326842492148197173559639180635808035292151045329207466767420100741216471267469372346188878510416506189135244150206969636175482199104676387775552395438778857530509992487876051635917859724258397732415756913158436129943352805895338855916359797218499323305548069398510381116125561299533424405517478995077808330938163233269794344695124880681030400194789263832183968640810907785859334420878746334454247434953082585149171139153568222265270826560822282512025152645053884613456732174727741149296496451691976628327777805400777295364640866453403832808991158290904178205130041877765725945292174914224579970020167297692437723408025374135723281713275828856704631530761983130822345531497183953946706281533589907433452523829549048336982223054883475740035002741237766851733902332060357345136969873382975255110138998224968215336739792719952383292688325400055996402688591521422347287996567694702644417856216215015388628948927323785267846618189010346944183539606964989854808177967339387202465910934993442050346917373430538563903130619089087963844983868357786717931849131383816756005342977108865964681043940436679965246420059436449467654411115865052125841479906770175370285102369231963058436757374665234541684477935423472068627376886679883215773078227214246981814834157773505381515222472116554205743356258667224710557448100031331573791581599837113240006106922433982241871990985022399138135975791234208039429435550280820031957940000490104458532137945179183380866107740566603372356070283924752478855217859067964360472072178452900462237035166576494997421083689003362151701757845471699492755658461821739312696729898703397578251316131944177107477271880161005337613439185036737332423074599625926897582866594286998227622637702942167868712159149196480626257982502046716051036632846204106799869457872556651937196990218365196663565406357363723471401952626178663468634411750182751927626755093870379982195171980311079710674729663410702339718259045076980770577177961776866922098986199106110314561007745627415292113207471232707269892951217761035702425449929815685305116617245574063873410996597253415656267310163752099545457090115598741526175505176108647119707989415613375270734049960769652579091718643436564762993641259181968894494442654575017439467626427624237441368905488188204654557957534510314776576092751424429368077528761294970178039088361968623367872118180873584095674172891722273111666354020234964528966105032430852968915079896527232943098991621038834672822305067444897158898897160829099328651661243970886084530893260112969058468783151363509574470661152392839084654768051117610787339448524129581151055670340589665126879272416166869776288597973470539237749336114098538011173544616818595232265141213319442814243151707624075253206856103056606810618070018682648826091981682206430899213215003464855859527664207102137339032097829229798890160471814786927951695619176087464649680687305715504716950658258242411024537911695786495516799426764526922005689135657182107096630126142934700651524704663684429546111797676052082932035453658187480987505414003896419245002379299110580821334817965691095839270808227481243810841252783359188284612885898462526131756015388489814266525185017924095866111998429191254295803934528040062103742832470914186286682222572389671983452538886544339471580527495063344853277936993026017742903741316931388985271606559231391997799220381359348865689080888896508325846937830196029748855220961614647123630665107095064569782529611500245596632919322990803813902834598634633723187834994725343604960057822992737419992637518577003775296288716024375049466565112087977487505395389436531176841380462815750910260733245587455858238371350305171367792422639484164506131068262469487540444244276942132342913921165003297636051714953975160215511662178128979251608731806445453997682258751876539320306245878387312586132154506811360271230475139065090458283896932654726935470934757235044328764856855699750167743471933053618133124399277436775477032741792019979822270205904688357624418234087293792311133504821275308302474828615185337575298447492307537687199602864739797789425658270492688009123474187708978835948667831940082746257867443384439646267273782107170170169848068875867989708340776681773190399311904376256737470882907480721978445335826477546737486535258890890990903841821822443956709356573353502065591576286807455012146953382810866628033873838129774630940682014649069788041467385709437565586594347464511013989560201203204603587362336253868398088630709593108795116042561643168081329209464465453579703687456261275380226972862866739417030962502647426817848491408252104687174598057578577065439692157592817300333967690423333300162635296952847249810881799784734369636945901706251628139794775625434053555833301987054670030985580754739404438936091415501000501384570773045510305114512002185245109423490075889478181301919525928985489744304977800245568973768846594734552849025256934432643467731227766095783425630951605386312357865280699613431163852538972920114262734924412904280969192494263711393487741275167583035677953139519743278775368981794221796621950580165276813936539274825755319376321576866348899033582418788538761721686002656019734499043011464720980231535064545602730614377625142161522993030157197429950711911597615199454486927908531911671229972640247221934596255338820787477449600033528555989093607479871199794553810440940105280583976380204159943633630015627223113618044724465370695818851152979209270974251702149215482217105354098353348396274001043237058405479839016139410362212730826256907199657316685081452593915400308816404125311428124105950198839039996170833371702124591637479423550951340448478443477441747777519830904313095905288288454271305129609178101758495998293467764289019217668686913234299130868943169299697649752843979955995489599571261510047454625997607293646989246234182494141611915866126975547898550834887580912711312307942721521057673781648685302057661063520398393179111356470459978827660846992974962812248353422048257525918987490413935337051274891884259406797228924499250738975848071845799715156130335576321974642182590942139589376325391393670083173884647462071019051248326494277223526336232486787733296832577141123309610994128406124563354584412825731496339874142774175292245793189757069027412937727744538845925507524436819940801751421226642531242081708476964511589073023613097841845875284043707811698862108715996860562284177117322866694086602285339869919720830246359962667052078847934416893518423126479834002693120376671093375788935868478355716703410682346467828364116213921862230235890749780345234021424175194851798667334249785597845841035916372068029627060044364978989177560616034453162714755646486498894094388140540191516337825406683380476540626532971681127165967005756262401026299218222411736989791766241152966169034291345778332192783374926042983117055785734366968813771948411016682007008432932334402501169294447185581472555543725428707175278096299319550778537271117464650697521763458003908680681848257262767742116147671418751779591698256455224989545414874692672164783935758715486774061190583667842745317271048112376080361229112697428223194242745826279550369011746909075855637646838673002946506345509824846056087756901261303879319132642937994820802116196585907687071506230684559602704221141899266851128594691227075541101780737901665658385569138472681156872378199971464997639826021500601941443499625628846792549656941212203340356062680199989383005525201321587642588248601756306395175992222507776410329431411734436621442513759694646018836571768671068257702645236901917273439716507620300304817649025214986594992664630960610520124165045586851375277258188059035489389177288253410186572433080631717123018093444953897810661767512882675585926183046607704970558870132716009934288020170197235191622150376013157357310551884405079416926649264524046085380543600846196764477747339651943757817691229351360423226118616359337269443288683618774504813024928367120636130080497306056134206807670203891632622134768895444557901598487449834089418714463094450240759859168731059166690483428333139510143618158326095244724742020790976792839777310943250273403685999841083412315309714424723246036077027704795258329753066036264046203336268800462529148106972578769021068421138779755802684935453561193921320714981382475307576679323547111932623492825827539006602177735568544428209791484189717360825358901697653867372150646366549487397010946734730732369975209072298751957978204742808693579401006220329764584014269851291500030927458290335414043331682657467909604327168610768025263842032126576594316267688412336423270094671708310460045524497978467325630985368057888153342422375736575757508224211785826327728213569940935512190723814796402585271058486045668445531183588014185297332680524053070910401609772792942753448950246274439532494731484418253202114507409030751184449728279628690599740204948753505366952648523600329668167536423332983023017957706852186857379249016994074995896639654585803568109674055793530437334180076720539600168788451050836599770880608435550097001875357255700116504566376953219584107414989650125432406812971189797536448938717034377957220575808015193344341650965632571673063780318473013066894018532349663623531652196621518031066861852715872364380183117154648868158413882115234440293408441239294706458008096921941300920964846583882802492853831815449162847470125999018963551092728487677545903274373103223301874981385488577190309135855874337380420683206993399134012877659421406923668891979498668341867957549133287602813311748515891333953597837596183072912047235630518291817979980382265717508007830940539333264796345297840528510445165691867304342353190394856633579955670277753042405563502930570532876331791704960779808020232159190878502501721672393674265775613144700150060674010946284638275274003899267757609559723010386167971341097318749865375991792168939851233206516893397180828699118420582094679543028233912120988722262766917865519846258370273232934594598056410335575716719334850185116818252677058786904096781501763045242117813388032869996763801285791582192328632255622803534569018131296206705826186114446393872372189991633815500377509216401650207872654222147254202597593843763604104144312069083677294037303453004634477699651233714544107304777875478310254227168420730723820374722215551653442645705645849718884478872131308215092554444889971226202946338117332521242131178952929991837572737238169662288996731302366738607756049943098058135615778829431265304007546544736378652618949620057533427373190992258647953246422113790182127237874965602981041249494297766090652510833828711202601064284077327808055669804127322943745681745668942787552647598171276398264729053865404239776032554170962542095641882788325706663594236207571278626054760279943882249686793283141851676813583253536158186474242730482294090415816506564715673041429394043260470827727105152427221456666524548457032148322437030735811924905765140029171166502041719171452021468135660554273573637935571541574630116372847383818481903315307237440926848454728355266902025400407654847049334654005562163722262989915013800736893213928062887519209246470778223758040320661308483379366577632025654878697052749135984878979885027646782279569537072953822276646385023859585619333568851487416973047686481468866502401362322905735303301743810458219146883784954957856922759047520676129994991092539118881604285045943793395054056413937208902420398624506595036007650388003827171692413940082214164063202634985562167150851671775471417145174649065860000040181524184081264393278492105914198318965388917716740825691475419570540333278142726493894501837471151330562394595559462664580956460292880057701676980783672442833788164716728174903030110872900255295732245943556287310440801063701127811784627237655034173509841741176557196912218309719896332796389719307034780237950211294182127559026885365213771956605177017173003828492364746249449235433408575188053641021717731736043548130241395124017077868974601278939567273794193890276610165570369952877309415736608704670701441328768789834088053633802248470481303317712656513756698667792887670288996968772157060923263627985408689391570891279747816569043117100474979919399105840823745197797076125399848408264161238732346743650549327916982811104448611644669876514556832964662205477882331861685851601702086683281359714835409153275980136035961946260435190462421858719732183568702973322111975022126657320043465369301892004618806785876763457916635530711528752472462778966652609025254208868617056051668338362614026737244285097640245751372676979744635835209312456929416839713775125108875806646633486230185552157707433176671039217963246931168384613625321602276169184281872226927732913370115224535925095924868952581854672751055461810903901690610562347605821606100123725211382789621202514962412423357886021257177644403240685310351264341804899048185671775724347175854576026610092658050392622899610912379310863725146696508887063613711023297237632687095690176434140677780689165743101871073179581578205261549172356820100522587579593181027158352892853010083877871321411046447462919007947613172530255656895252777912971238640973289473380103544906765817891442636745841110529500482757537399368910963805077238799830317985451504692173549989679287463011248294610414640473884632872218667825213675141822924636164714568120652548813269594942390292771416803344128148221963556313141452906743355885271608338266061156399751034670053012808541950712068612549147565076752072884425267314862181982320413957850569643773784684987282910632705385913265472508344246330584019106539725339922125701226122119856367849141430425848396263281526137575530862855282406475586717984919468346001287445524376553243544967178319955275144048828412533074777515843885122865826502612942189695585824289522926580270315526399789178525816709801823414616110395866346401265034593052263205111046639453995651386229289261709326672510035492557691771237942858379720232248068637231812105544900271715005453585315631180477666548333066074304949728342300301166676013207939212800933561543002871462677343308471005924680192497852040853976922893390756945330062146675526792357982829830583073585421073197196377232754541451515825260589199195128890243910505612382788015793429444956876345210111389271657836073376776242348646958888760923025098319031945007352177334898792980809582254044961543564911899790098995514615215669508044119452398122165241577967544787158413801436345847296675556498130030764461477937109038161070097918258449815486846167931570290141163317357351193173669800823664042700202531859591008087866518644118952226559135174118642825593374576376160417589448151929331721798374490582806174882943543125381802664844707570309841806116345210894647035956605265285053080496890065306261606485693945310286445402179620827937181237377778133995796158928048908771696717034458968559148217963033979378716342473589074497755281186818525753898760648455018444003578016608536666682692500642520000300562560326950247787594071323113376107609223127312465808783347575448266378114081075950785077378313659834650278839059401607262323793088653336546054358644033726275732048931827101553571150648210696349459513790796289987286599787475953991990324930336806481699856753174059666563419491708830924407996762946861034713350490750378429145256419364519726485185398010822770880595460304086459965770565655241884519084779351747606102007876916975306608290598875000209762186466549623825857393840304984322158437931661311525575871709448149691046506812324080833663512255007156053213876682377383412729507686964448666361880854661357309077376883986294471085579301988130931159140318988801655950024801593522742828557082172172498121177700669740048076940886305047502550007911561486577879449353587393656455511262390894954143592559076538462646508493852841969488871046534896225186537556186091536873277061637635961924763786250581444194096257177875170594118473385185548745608543685683410795130560576179797898889176226339394602651085023258877285976877804606389985711574216266953206661883220819643526020837403966094158406498973762726244747122712810289184828686424263774079426176236585881375967955795720297594316424116704809502601563416214500771985360936814765165019264629582159327144707243719781099609887973570843579839629747079214081606166062919861123456475314912862441560498350592282330587254194217741524228397377059905520682581962279317107714488087329981803642219947670029090832356984865562513718201614800916751869773885590463562561089766548246461419709839637865861555800469571617361725673532603939873333986547321295090692940116174070971498863367584837280503291809202351014176982603520553635156686908389220409264836162641883430271817596112700049866252271639673438971172000263795515577046307967268831113836894503389329164537277719377693677884046712410866962843009397583797100201168962888339130236474149353038876533550068277913672462826907825255194621778092502793364030671304484337055674641648423803183575496542284445640092278351448206008171696085240307067143092817096056706895577982889575956987289370123554419335506393398767848330400199835824961476054897667101198694810721751645981999305166015509768194701180665884462980511040102288349788440539292489422392798781988321841728181126965434977831005292338135609215898113388180194493014581062250343470799002061374342189479180760802474832390143091468135866453662398294351474684577608437453302159267114010149429273870689452735677087659270622548951230172949605831105208725896384939267524006446483025860452982949663363769650997509857461820497745570928972473018311711185776681411155491203988849965465234679783974807824064741834553969557032875684172355889390279170806212855684366962217565130158595497665730613664335670030924690159698632034143527939102779156414236338868751203356827155391400720686634011663348508546662045676458222757113296522301102370027510680707452514215039566804923066038945897702449065485597297180510823088848805879705202118606929682616176914181831995203189959643593318118798875472829569911945722368693609811669753942434388626652719041768810897904421310110266519099549856047130808073463895616597737338521609345171157733929613484387703746560720949707470957983826339139218137555513780733157465384715256917183363577655583211910453581952561439868709100137862672524290095846849120852526182547667295845067426260025748181331012562099365460424799641511819224577030071382146609984440559846003481569695510221868733224751136118195610592751310619969331080552479399953833257700020866647532826429515375387336168540582285377870599569536285884705971610509677295952878609940094175539736536697885915495946243172737894836953809971953739735004565665908106721784929090362496893872449466513532706763272814498037422682231352615156539276487862626452091055343557579095720847936389369449370673255864455324124184011833185472842811023904805870516688546130429399355202855018720126319385576914912902207565782939009311976832914764159197979896827277192027647199282543793486995333015187478988501615399619760454711218799062330280309886050288624130224977591682188670584674693273939019404557694356736246812367855827846047158055124637284233236817004558871826747974138277702309674351373212927860861341312120588973362489279805929367018048378676584569412908624274979481184295007539462708868481912238229704838089791155077527786195802315654108766002611132122073364877911805335094109287504780193787645204253126322763491147447324708840789781397908181726019366329722757990394815182987472270264331693710226448744698367048736146313710421062151524440736309620406548727174868117468510289474430625388932510478714222113479016107664721058489673736259481997543541228089177013511248039702759193761706958668596311637658892102032576295838707824052506888155692354910161987869475823059817701609949293380847783633483770048337309458064432808755525348368703021682413096044979370550107592520276105935307439256574728501973640296650349002624073992365588812906410218607185076855609809529944882868284214843906334695946798535138739195259489089990033776595600189840426269723561811745524795913132989709793889766254260850086741359306251793994803604514984964461708338008878843599428196229146081839542383544451659356365512135959863175570057401880067847631781413585129293114468749975024992211295118101153596868314338179462854409038297674081042720422475305143111766863314998022459638647786775219655053441211559325348769620504888255904140197969651792967965357522154009616166893579924195683263233687176370242554233466869179177661912323106040473211558802659927382199930461754341378561410522947889301298804436995236924220701550182916366695915350783127077840918097350358634902009913005874118165813621473714582460008041072551913872584602530026793053974153452979511564184110795938632560979905345424815696453760572341688706274766667797337832598802376426244991752805098982472788809659441902014784081514593113688204655813454305435566515172277439581317556242494399949927855785078440805754115659245850838287368270239331715341373922704011527872586556416427047753603585637713951401165930623060742308624695995574823438170439053508183023587764987992825197992960937606455574077505787787002713786366036305461774344098057914473693686843680051147328466816763161106183906057262868461809564124387344543146744963616251061157705288973312166104207589310652570342299352832752842873225270231451488353525520492665228841137131983473835480528193214553937950537145701253733866216251033027004892299447714215154395424235951315139942033175053094636147480168977589040469144730291212959260076768663084654742995592312259133589860540673986415658913126645237827314632955010561902670133068626990173581977776308538157608284796673180475603762317373945015733248033843197914985287456869061629461346096668598562143499787649462436349468632896643503089847419927739130252393472448034548562548745407488948013566375491907014119707215797512411744857303787705835791059697648123724745721918587233832550221427882448642415929110428193473130521642845933273232892656187762325407571289299602956437639975916355462102690936653798630281370028895364851603070055774934060487547473467652071882258979876073552176738557281275699703515483017659657014074301950197404001656138421908895119604731548280417492930784039769516103056760657382221635353477247495342556863237581095030959542498442119803025939249561828930362028395691493931002381131956944290171176607816567297417993502745911535143918190207037527290789915539768652713533626942687074120858929242037775999815102583634117220336038584730996090267883641092683024385102478959082032811942853766443992318707647506194938205818806856724870786364972459761012959213206906609843500410246637937492651779001847301872361117865630194839650502211885675206561173708416926793398984783245336353917623634755630464454467016156701326507990225705885782726250328099627275515650759855987707033615441545134522035383940986774104446292631629696805338939034939018722399082949639635227237128348430179336833749264215435350899577800932038218406309180883419819153883460599857052648373816733487271452743036136968921539037811413463898465021256637273490147412780945374068287476389286628050883082972440402911365057786402499907993708521576677117512775689555172868236045140945707216357317496239230140455393816923487151031631140016541486010714566025998566821973030936992123180132795140443381496642843138596624744282955265999375078484485434963718099220515495960539503654981519800685922012317349525365929897256949345175492540145492081159631271796651368975149182092523163849467131161800476769281879235544959441982336931276036109566368072137610729285845846173121630472032977332710229042812491671727837244386249625764568289971685461286616560928064176547072009846035473576138905389437817083190143423035665099021889911413458869871543416733613139032779596624775300512566165561079706560298222195741236086565852301766055026652071639581640846917270725105675350296361123781963159831947997503660236359477221997796418085979480698519495500960327152316911830680101585674095303585559023431496633346827753862376543717856720747486225799659062904726751527617314813614919783526370188858965152086618119901290640395544835381917027520330954682116774906530523369900286966643168929046912961605838849262656457132682126025212338240808030861237704972331050070095317066873039542297560294456452176324022482447068064060093189788756288574990694451838753913865233439818779989753079214235367392235244228737393763744563065914378557337467550730102080239824374302815467740801976049342836710411381327556194261881555273544747942581530047799346776444858812934008225711299713380495895048898552729603365611039816151404107342635704508824478196508350394040832198114357333710251480279195948792480152662973979559684847231435298839858251374023728364782554823085313111559123102358889739670170819590722743122989107279505365250255884347223704030237475305973336587901867193482110006052323667213430048890449671321391667295057279233257963532300343593396598781880252510712644880905711025704611615447462800776852830850608179451785101496774979671126880345535722106705267149765780244330104383055741185653075419913762769060502422134954609622370691641820919477564984612600229688485502144944129129098708337762634998965262352452080982267631632038588564905953644257976783065914992407388843389805754700553168630023469993881401519526286011523020401145915208245350852023175858158465164564879875040437563915162814667780409996923918106457116384607915105458740816565762684411845552793737033869017438307277117268510393675700647896591112062890094518656498888020180375972007090036348921302399865077845800516629105639520470607466643371542666809860681835198894977787905607377785343653883371068354237423846113391016154728971978531154751454906193531536846306641473990409531920686272863168584346765837283688127904791751727300320052692012157084302836757889926796083423609838623680042479227794822115088556570426800937 71035084488023320902864812357971702944043924374073227446095506292346302097823349508988216489520888196595583835105440050145162952519461880501095260558783757368124315542721077844795532446839235091948867853134394243587852528490782342671607992143655245374318667122448152203311423575701426443518715051464993303278970876225856882851868657918651237126176465359149510133764237726286502557195334648421849811458069841270929462977667719508947458623493744472988022695354352337324313292908031952583779521947811303615713398618473569678303189446235821635495428648555585619639645937811167677139921214265139988685100541378573523558342441687102369285328511415781102227177790842484189408908080477610525335882643215016597792090193874903808344657881245349593773591186604652442858014395556337055380572163427276269622443711149752770578510566977247654040758558420876302751324346989266050602590145284516821473233184369037060243313073712071872946607252370532312431446510674313823046119135797739345155700804783069689918683182184021131307788686361733106650345605863533795279475372988299509028114791011491308172834445527464947085854038300522885899088349143430944948614553663194247852191663867079776397561677075743809467438489099506627537953655378153849233019324755879667350629389484933708215762387954439455074688792725489636556205581284696300106990151331394790151030097918867710814544271956643573485376797236375753909975754523301194781460805539686261823925144468468170781433627299676121455789882784929504760532979978216639629319920544928592332713809878276693114173595982115997523396871706381351452046113482745103935164923521079726103731714366955444542494619014916431032342934390095296896559080608718307864110489304587410993376223176365897416608038080446072345646285408830241806432330858123311541001824846742232579375039477779896008808424815532869704213675359140458891500085967089441407234304495438053376127306174871532938156868815922148477273057177254226100921726991341339799044059204157981893622367522287379719634100022111444729215757506723889832325685674496425834622944456415767720012872264279587148269254811264079555442353197484797372432361057669230161526387861069081777307689319856430795371332381290494506772071594449076214435160383765996800602470258711999793172837514670013928747308307859155236538095761311484727973495059606062295803026110626680798388761218876295217356737655352056205599612381598756162046164915202618964330645718654123903809603783041784112915663473311828455533958198083361039492110895386430314615750092772451262396560024438448572546858280405885583817482246254452911581289963520049649251913440147741491059130754815428210731226418075726153959561424910271446298740705824225235522546101647099119187809014980574037093509361885955873136901617507912761562925957751157839574695539752082822276656897792067342138628183036203607337106121013366318694451427269375658093452234373221690653002485690980521784531210024092974184844529077978223868280900359830685989928238891234367486941906817825501838602400948502872663836765333809143157704261392975280246571522803708549859294956942083479632361717639486644277179104005291363980389688762814135097838064507956460307987148217729395739651879107041639684565862078278580693307781323513998383380051537807304456955819841673374319035697447010926181659358240235755467552726973319251408083530814760373031907250100338862371789715729346197448053758456281962336526880286389758229565156844114418453427614608593124726171240302056019162994027689700334443342824298082805298322569688427884029380404184633852688953029137118428052718461469385006565523681470482455251794428349818723141511805179221615738490020639874609282008419155388291954020221576885251487168725860834322939380536497372339791054217278259269426510523959535764542977850169758343145279318694182022694804402104247412324661587497655942822446476603746936949457935992147532041510950787237010177010792522225476469397995452376493660811883435678322121311305122695807142734392471887168163784380454102373055709844405091757440826215324439662072332940929235705734383240266182042914956512357677526891386734500778925135124237847086202437301545969374009618325491832299824681094611126810923414536779254534084392288027151902379874399174910606793031274956114673075280767180803394265801326437636494515104359335672206087511186632924842312249045139938637230314299602192099393812595756634593626692555913307508757973764717905804326516464756994227877194091940517091297438851824316389084640596785175519373237816005455552868949542095891779594849195320107311362726847695355608282874353916164917216706911525373563044857995170910826741862936595968362456627130819009133641179910513499884642956879843155643549943924268245238753923570645002969007184620600957606128798130739807359908578460790689373047739124225813824820910863799788805581013119964887045028541377543543372387848270606551613074240302936211886952582751639540051221530345709996480191694671187879522086399428030295258657441194117795728481572931561064391112159224086241864970608808917351852487285919228571841623320212980624669870352599904162801224682861242341687751325011182209226840768793163910178376068918031656570251219650035676473390840343346225998790131847763513571904363234419852198236251883699497155922315233587900789057586163527210211099568248187515834116234134141017564394725409795076601639319512244158971715299107998716230772971749356058488724641617886932409649897409236748213880389119449058298896759707675391418323188207782159100314571076382619769477490004049832953699823977473586021403821315489002092870033466319673423502070159421997383663997939748988966253282656353641238696522343493926807576734662115378735684503856150139287323903822801060989662913423114502078059735833230908047916769657021735297290192164592020771030344728868008836361682711146979646210450933713706337892734930022105148926678012974059970574251262160710298053181710256004424154748068487185988407678132103576548963029120005049186554169937619614201202366178413546590388213005598364279437918630557655963951438457463872083058264054101520113222147696798583560383593602632242043952747981090483925045964274474915163541363733715055345223111537418156557425875228871347925977965475927285582240790864587912517704521045676118297286509138381335080009524134211973861311946985537011762695806691683366211177008766294723565624546572930614220824282046223207954151374886773143084978480021587860036048571627688546480446301404149408753170489919048833892541213633261797409686702932913378834999780990789458968460983599157349379411836080065716403010950158049160475893509406914989564340727528264596896848365240341434581119802087306606707248725258776557175810596778979200699256857924577779923400325396538720285001487539383672041449100790871296698832281557351927023238804711626174150250583764512416763101459156987640189938429507704568729877537844503972262252092719153308012808313533177524751692201650136565311070056949849208643394478273094601071143937793109386541158927777771228068201514813909391246499046592512645519958362572527935532286539858721754366525848521973986753910132594797439070696168095899985412501628633915042612592204683738735692417715844218654834012012032552749303487844638569919976368876732298777748170969351271458138801124769867058106949778566367459354057902072019047026628044100787957965164272898746248414557770949127552188031498315758766327301379582316897909300384790992586959292007345121511240380205781566448068002439718984556099149540809747370337919791869966799337157977202101420897123716159273579970663337865140934783724534194617665231828849854543772564682320523302805652336499972050818836870362629106404069884541038424092272704628592985328273840182316165202904168241117720256244665655947420497864774283093148056808905225977881189128889248910854123252686037483814655509388294679079778548852814521617158359924368413576744350397216896699255827958980681729751882943286172568999841256664028618352953195339618752073153780866658472116286031342662733761414935000917141183240377599017564518083290307267515731132042600830479650171358382037267057089392202674685850188763921490264533748557659488227931720800039421925594037453500379271099698237848784570872040131573915632491999822029779536027172480366921971225223628335133227076027000580305105051286047255545092818625260169600242364167568449740942593139890721308015859756914697960339478517385063456477896051146778562468465675208966574453666048117154684568965503351471544254179296311511126721514703641291885263577325133139825975248887626733027017827471406937370846334197144349383226559879985837472594857003610161030606474903787382431346800177488239269887532965028869619976045988405357156313221055046842961416727917359133135073847716466748547101418289236265993239521927510374721932120768432185402421486551860428978779226548973886895868470909333304423269649846611925687993073936011014017617315153638117251928825117800736979487985012133853876468482311477016598975476736628233554871666628587762857957767189029505844787912495894230489816088499363538002095019726421084358897488336466945129660687048205767691731543726960630200236455186896734518656173998888806463484173838545716003906539183582829903402940705125784583354665216039756512108145414193045416548789025988179749226137539860157070194349705435681266452899590092380827621108694909730226911444148045468369421184452637056187871566770870265407003196800835615359853607905290375414420817511332453761317924511340034417507936588820365077273437998145931231663216314764380033431753585606193848696220154596077359681628158070482549046498465879637355695590269177634033891530594922207409802937938097385804676145084117523835144866782769093883544910408959057956401911152149898329391044427728011360617068555315115340293979086752370223369800610553153367193620626732080323729916160874712557640096123800938212260752546920819082410351853334019280225801997507656202035670890311200401024925133540266447757286923919165222049460804818058373365418687657412379048514342801945688563581679571895379684804692437084339833753164160561270106913456401064600503627216675485660987361830599731651691499954682786885920833191623433660394392468944171005472769054442232736165620896959862271672557122229560503517653713579544990434474332896603461670909691314950351892304290959565529021391145875738760303195760198795637539846686304597124561747840321744696924930823952233828628800334733795004600250260666892727384561452998476313167603589144327579024039842007210083539712204845338647686919923298968851338728841207585443394070764870137394928849623010410477527795184695698593745607746559955980937485899909602144020136979802132401884697055257186308668644246684149450478991329389392511890503314513570528496688029248077753810235049222853917592060408233027433364991435902176461274638815191145101281904106629995132293507275076956129346119035228049828575569258070892820583890456142359538269187780934196796183165340888113053831336805020977185919052958494512740802139557982669184858615386931249658756526612065331838134830047675402771575830619885364426948906268814702044675101420735532111831344182691577023293023883405650980729002343370216919723308111078008828980693912080375317846519016206810694227749309052114546015082365618658030165227281249070660167716659942096895921747458668321811915015728706872524180675865543180609697748081704717594673339142210196497039693344025359843062948613390878132988663628445623385813531413074254559372070870785330341104257490207240865830407992533046062318953681548211532748838423063279674785095749189106616328255178732946522190893726374389935925739565420595429301938930178458683537218002111175779499461255568763203224569231383094646972021512485728386198679881951582420118689413449334156850946326086915681153799142518072114263185359974418595490811230845881425298599084098346372838843419515629427916194665226236123684720776120118336518855532767943916403910548139470289612685137954856556435813190597113427105654373581983223224408466300353759064281873432178863663778418707067290979487652793710118957333734819658187859671015292838050457538822141363990015420403683779985747960402683808681561191438233628428654134688377226342734780100831896448875326051376996140346403882412060545397524558647399359282547337425549073911309134206121701392329056482616222403586979717002502583397473095873422823604245585015743187457775141470951460238654342755830142833057138537906539559355012225417903081246159933529451230905822699260596674951325262385081003900496448729524826209258457204355074471783274255448872480377169724727256372369313107576886170927240911893580136727161618721595014680948673280923386879117641510740743316822371052094414651289564334102549307469839183928761092953300317153845679007030461122471690144306659386357835118991793648323666434460528557872044124569615993613164252703588805292478561391909741767341313603339004961505882275675027722829798811880552026824746108825576364034395884071628920679557005643994466053432392647351143152037986344374238430431035841021235658687478535463290855550713962452949550639710851823016911479340805562467327187482822104262321763934488688093411004605034453546901042037069094808138380579391914837353041818542175925633302587628014891062917958169973461692249264696956544692649468936438678774846146009811275182497358355434935708735122763921606884272722235075582344559230082053761847325182858268069252876848631642598403364564372481149743676297938670384616265226841368381568353130242757898661738865717500763185320599542246424571457284537494973628869221767396020252061985462272999304273605719971915811380664424356655431087043706112021538524401427972595645378902701643154960888084287975433810264799521570959813544748247703798107519522485274359898662066710727180830549521136723252495305425414570000528494478413011950036839862776682107114511116442628369778497128062098512549411511730957783265663604033011667355466572211231537719761691485720934976119297032446861995707704000124742210276770114013195359973473242202857430984556574770888121550128370806557044294875277883811419679723682253336909424797040508773677185742048437919739371259304317330149248039837864487490583912709822941225334582135276432764930953976328766424160824754539528865943467256500168035296804467330921414889383149662474285219195609604946877527813967450875194292327608353152626064806406095038689704332714818999369886599920234170551334121257485714242406862008586762161990307463458848821432528620669633265853082581125871953683596630644458369563409825388376410105997926096331578457507068467966941730950143322973943574787592955448460461303948901491871104903849082548806714876224168637404742173272338040643425378527055579294584141796786009678338594207576351554645315036170624475055389791648926814092884118871336188967686684047350582130902073710600557205238373440434459368981105528298315983773028121524385118089430421080490517234242958085913643633180331965306539373738811748703216662303121041067862273484476799214211095176877433959330526170089496383771245811476299314817004335070814965592372134984519157079417227726479904638281727086929810907127299281225694825783248323569821211639257760318303963227595414238915371822299263078447751577810700007994558782709593904425835475875851540415903605469682628734613182455093172347916296032471516609040759492293820169984362984268767717070922631739768677012203821516193442878472820947631646159362987210575592677023472603744391713320000404725668175773473714224355189670221962109896164407711951338438640260564997744084765718872855703446822021869492847499075782463758909162330074288088465931625473019978987982703290370900832734142259265592659913482486523077461394142060666712565360225738347571546200967964177022112237825050212662955613077485955572583063537470470478882916901699835237693272077102604267245476371960611755975023969914920443541347636080232811716234137178971152314194271998797214931199906832677385580997433697774266390764435230248683962290426992296424913724762169314319722350892257885212363889602521165709624026471450525579502758097334926999411232747966329502873814256560885910713338307503266768220912803944032591615067849622865723682436855863104291442273374686808128366186076101677027149594160592742484385097685380163438965935274631650997643292165431951482964160040414847665348523903016304027117239775637103415044718218148012039201139609919737652479345188203915481897238458335048516211951365397172975066505263438625488996286948995540800122733247779142999245046264915590233629689384818936712229875212476754936008939864256532224129456897393639424920910607842361632972116944334662333356268455334452617349058950099341804301112568112241256157598317865874906062683329449478292166420228750857321595550764425781086950009743153889425875368003158325410085538458637470540510599965454045392128279794509738008327324718310368418310537811277502899215811210908088934193472235565460452305861816371127440245707584705806251734792642371546789316062557375247095457514960515885657623062598746568562839109559722322732914373680449548450195652057576716681643789944769351049634954767447278743446170215908529366170461476490444255984677431797484097032346640337084561694701611686583928106271209894059361887481368275718067364755687970198240674811752610895864612317513162579752895355661804845611926095422551388416908799094744425829205785299048387544027777055566257800637346256578708019307463541888164135977842526699217072181444825759427729771076359567790676279491708509925911577869337428472560921393083674691019308955504776229900293850584723878232433420831479211748930443992187032938829106034870905761426866632582286732512883540707399416453913553932347913938361794589162072559004243559312323055129945740511473652476502200211547964955617448733754582802046665763824712871243149959902050374697982348934418026642136896306332513316341014262354428900393618123053180090146519445783823186694617798861434223460356069165117223688540396399804062053855969541983702342695971782788911770546138508499747515397060003813058187531102377009983678215387983741008436479305308691312994753036058553650928277409990795318071979969340647114805789853768515524083981749585653721967946113897217372625960808755299913932151856874540716809669159072747953409199063206958841082145906993609945415598805148991404973825135249752898780427007559388058651979848769235483214366897013370844467232555669011426385860859550335038319637480441435631495508362870213726771834906575776791176412641152880322258444953155706097883385971602994452242449479656419410941142772279001019754987062452011009102031760285226706225478905577423212094753237679330732539880267392217389495325485936929865590858074710138387075226047945631023887739537959748054874695520513920981431387471305595209725710368053562237687057467032266417657912270650479415122671384930686031572167889848532118837893595215214016437608247410793685334834966738684878539193637622354820357658765798346157365659175333226111487216862808850896082093636118749558690064007753887345840898248608606274785919723053263893502527982094523011478872464957871734387911985147936021532074570577814638607292447273391533002729415112365050307880145226349016761404134923244178844741036316422082547440467873679008352708057062195893885288420604445640200711964333810808770943841010820531849860881236557594048418263009330156795314384697723826204941547850232231648157929210486482783715963531474139382437898055404786623713172920033469239148617887856121104683138708121536156997822522730991380602012339499192573016440789883112023389210888539379011099732740731079846770749218036370565802692532651353842484178803746055279772159795286784860993412104780259638906956598234797871608060001721793565309056029318267911168988690155326283081094382393784402748906340851588441068972856261390260423055255081165030050400750996576062087998554179772447899020807464358938622555413790320792169845082369462787361261370144202980068848489092717011184079277237862561677917732565017533963010175635902928832004821681664600997979395413223265870499148687746442209999015494795287290364352380483870284582017854126331412219984972507893967190016266305795679470494102046643286028737476411661068414705693336256342033084107066385000992941130210269456947953574953099457558314711382579765221865399576584349839393857213019399599993358788324589067563262508425918976929859109518530187138890655834507323255162585740784576450548318759532290543598467504968479929918342283996018150532741071516865572816928066165271326525074453514462877243000225012048636616367925684785612548029317257841203352063702846855798271581222964393834753318912771972653185650267061880802321867847939650424013307900225034442966634780799459706290854357352833499042740867570806964596460507860381519637332735620489161044893059892092173439356083657118255779007803067503449733588865897245804122959970841704923338180971921927222074523244366129196828829190226701204541125178830032313339392269395226141134380079955816105593187987540255276144296960132025389441666444260990652660425567437537973504378619538679675145126158426643856716094988022832187098247602626586472517626670623798069947406789373083664711772984300657356839218118559748966925285014995165049110392937754560602738125002919720038449283624791801054694548902169930428069628626847862834685242857923316213768556717384038054470475690417367305283923942902710109389279563244484050676642925094772370637963881181414212550463266003984949364636838302495379967892025708345136097260792088802010643954062468410616501502451596884135312976072802380793720444123781870016656171462200174493054022818894599315150421518625279046828014753802236855085502800039959555559095994920581710683937435840808412985824063922569485363509800982124702030107041121021848138457289322421610837032459750366429475146361100007315199168590502996404375458809160121279504120445751719117359040856461046095397039952312898619228993720410649802096557378658330840592230108695431466191203486062578347863321627221174902464333711363989401190512743505897715182347520031271683055010243119701413215153505154259629842071890402123516612704246224081934081202513297361866270658005785298796014779981334767121609027357522815615882268769814631490931802971492217425025450311448638516966969764892687411343337828619640143205011500539835688995241734763216487310625243964607622831718917622621855466867570532970733541318304644687777087265686460112395239474259563881194089771264404545608382171901584716637494509072776068582089240953551821643945046628174163093104877173858737309312133759482421961394505131164388343704971825573463990152613477641079798002767220465282308387364967427254402376995446714538544112901696287158725667610712357900065363757467515246263608165946904674420359912077177521215049935439394132714253648347534522382826587133612372320009562173594838310165319752140839195271591764412693405863825614702137982060839834400343917521521462987409079180401977357051680056588497538278190865794268435032650732024325472223448308561837226919090107076171019995718759002896459371672828916870530558186003348868090912852923899375981820693271188776357051538029343489356498284671983616909511979664626887901458448211343509474155595671596050643790192744145580692162546075548773823711771955843393342427656709287901850210229629241045038007669627861567219374211125922408488738444836853796707854539953221803908072008328142760023793569824826899633046816880783878292680816511081657179525693839625949990254205998622475031990202083911527464991817977819772567382971967041187793131754459150619371514802273513158024650761945077543656221106647033260016959916311539636313060267155033389738023119945713832582289852493650677502027908834560945234105339843126035069851209282015903541364497039387292811087246333598994714156862485394749469468474026578742026245197456387543926602913831229963530645179715617648256593629551965411224724525023610734056600995548380593424703462546643625975391865579208732757951976016394203009682776228395483367782579864983808972347417509965841186739777120970828534488273281149646706526902813377485528990941866911017673360983113208415181987446967157547363258314590750140784314110533394170525790612321791490495237504206156798982509170957840435944531558487418378483117901597039773287870212986130578875217193170512594432905498882470037915011688861063387349743004234988702120592482470717968309148037273305931308413137017719797851438897512655272956765986747289076988055718762012785437235034565046580504985585730521110912663771273872927481523602311399894252054661116238145426270420256788739306699193292710675355042769756801519272684823436258614690395147028429409138670961283506133126962698472794774405573822266588156265621012308676668386544180301420738882309345983052002256281220824184879468191377352273160223568875283341088773845300747043890673107731305802108989253027823062601513793730956488885937614188080932018285300252376102334593200302439587900939217832258500606782491167594824298997894758960087593307149647734587338658906888285382337268010866405359510365017318455969154496541713943158841423071254380105081123254767667227299130236716389714189043103222796618614586537382661212892980141982818143346413438461772083676122235723579638351460879910765467072322234432731453048134905215041361573428500093650123628496137846112689148982502246692736434925732212369666685500028102701043820577854563309925022554426872096294551130359788435277761766026826516388422510387072857836116216638437661725172468694600365000179437547395853100560331836736808409219056663835578496414659778658864584620653588997246869312503375213581787462953729469601715193403090849920897010695803620563572916989929842791949503256053734536452326637645925413068596861643222442186409517080445015982215159147050131421057937384692012876490951220539186024006431135103209717559346009298160251439999771173673993214398163464557899278060220218609841996496572193911679701017349302178970992040695342696954561427824856016133658282079131195221788629613503416197057356485672773039081636609021901083015764139753999596777641838011919451111543087434541180890774576479980422172388688420192249914347832820605714420078910060820047351311255960954781987937900782606202926120214608847068112866140007342903577067512289989376035108008331867601218631326399621078516548348839389893695391707204650835086343781519214798570468317587585801631546049737946518324866725907713938564714598754256486572143723771345494373024474112982777669344975430478429546219713986987886376952256923589185094049217272584526638675954935959944983174896496781992777471816403645244946739989227766112623255551031093670763754922369824921262149697436553203628142690020290610223386755172234707835932443191100000861764943150086031753473587318427132057553247073273441952663113620654968206950147810042326902434213069729199021912226906608023636531515188825576873346890037225247068465296893817252179159558370036850595323975633132165622373705851899163649450342563537374175882126774122717140776261716386844145895187707609313537077237321305194268964871724278944225948617575819719501182706733630480637074804326608357024904211840086927054472017086626623346792384415717850637203588009574673703291074791041520740250796662891283761846275274077427015379045594222806315837514695446644471241625526009361329407833282873191362005499322023009201023952844631640866726343956545466306731076729891407916343844733855760606298144548364900465736671339276870517538508450126740554266074756486003484301767404178119170082964914028656622858357247716045626253060647390794235147491580043144365672023972524970890008541624678741736272504547826963659983119146973292903559361036203726552366378477494543876942951267825360229063489054927222650220990519660037800433762526480979744106808310615640456920585452081953382632314789843749714413276787038429423352456013842650378313593940098379838336270280717197448666868679915935553555673667181889411780668654657889273031690511564733774918992273613006300154538459598150070609202741689038693054020103722240596248501584395337004966166161080148679622284696980222334053589997653429491512206089352235718407757974105075355137783316987892998812789761686910093449135148856137461646049805038120572826740836417390116798499852986280956047647148576592054465431818863044426210664244583556105629965520565693556760191388050803060672571125527266258419964460489669147109644839890635381611921635701565915513382812786920089540198656124116543374006164408759510522019770246226713517801676415567042390576389500623955796038551049752515360412853591678153002471249770368119375801168953094728340566882437369041766510215030261145211645427697571877708468527240367877638722877042119547325648194397257872355816212508853024957959396322888046026237533184357016993193009585365373092044395169243169953946642558000690454536315620034304110702806191363141828421612322622800726583453760930785547379962581422539936059861221039431648585191755891071014423818498768566436551149785386945970671919198544723426412092649774461712405698937220291176717169312158062334740871305087394934041138654782644782931465818372014965068893031966931014056709128003486718810672329666714853745167643603429691790633469187388154411953434303651178271659810172106281812209668550127748337251925422617575950149090051064936430521177932240569676371196491545997056546577544828180746374051394829701254186286345181116968725265816345990508684913442485107457068085764388254504610609712920694892272653316340834018558892537337808408472965313534047984768113608752498554592182086470556868277749102314564802050571172773493277926551465679321471145288479615883016346118365329650788753093047300517245186567093929012842686664322293788232708908968128583290043586741546684567983023349876445862761198984084975451435334666713885357303800360194280401750437619200948534580002247187250197076047322196447638029571727643787303650900638239470948235652355847950851663504093185097539558967290741654964880518961757307577250408630956416241700664387142589061478598868506583822125456677281156000302957840992571151453929169022454045746750920294901317551557686153139240785479196388509146562865448262458596118720975877005545065545574205048304523978746342916811642244924846905226049444026279675205855101242071003048102661935817029286007482397937586182046684059317372119839363810588522913102865059057012604526556452851894930644353020039090882870892521315808676489486345660530796604776085752719541537630475490397070458389747457709771291951259427459363933885101835931209002485516935329839913790220997465181212412791068590485856156957073177566136201509223456131401606414712010996350055904419387181866455111880700642476308280794108188293635264003439435384909154386682596688821608860861454192768240722809451611267654556744194287766021351205420617461214545983862601390277325496891392318305110865127533664688809714974518238972426005639102945790492485953418663042109706717254176968085394547822789005473635384121665447030727049223353777780009559659635433346478089315632882788264110280911646791633812148866319022069775731133761251717397031624355326930544606983715996607783214967695027773411986107855707883669550302477141944800670060556543947550647235521968885807273644214082941417685270280504037161831000891489332828132551787479432709350974512125865921404778825929024893966618116433752806921549243163083541780449502345217884842720153088191216610798078853477886853395172593783285824344180012187551107145560631488643907431232940996069563487015846715240194325726985496484966542304900678877211940944696167907996290467405375311275299837543926863983875948304521295482224887280783133122702830198940722012927030712347752956849033975111570980591935771340086100152541939347243671425174689082991913878763798002756006928518866527264138270224245564643641021041540188892103666054413854689884354494899291000978945299748669581220905176583321835286092830884964374883850095943671485420218388912080887423016276404146403346783893924096726752695332005650701055072607580976975600033474494629818522511577345807564540455052403281036211319224707847782991430139057335995374028682642208100559373783069532675466113449730302717000747164237564454773039617484162008065614627046490035123054512172321336959708817907994060138987785689332084026994947336929231741428546322383523564893060689685306924321074994348728752636891445760141974656885250705903496519542128663562996411857365642130755953839612301627991811983303294544505532161836451747125606213997910840600143701855598426351479844922895301289661064231242390664712846201941191436554640782088013740153834184483548754451766082418487287457681840176466938408025889184382080584444038542354006567820805834779267935653570218102318573358300405593536239212555101573500770675744472708236672054028992999003388113782401628497780778167031245692403259665296529884463464526753870176795236741195894573064739057091747817161786471212484952200672081796106596402089106530457620305841546322752902511139225869848662250411758143040634113144030586175855564632583167520047200208857464189778082340669298068564027905669790744857096597220945507569511578033807156215059179206052128790109029207083984784517189352530140331542008827944063613073316019034614668719766129352355982719489396828095806278055670257801846423413893202515111189339124379818619122686339164146100480192351830287846178388646747486335688267591371331434193693401264739797365143385874861860660128425241296773254244059919300413294809437605308060476323614934961786971580408665741104270447528804004902617490614444347178769849607755965641720001825638233406914910101503703643395624272335036631106836026972407450011652706870988473618336577677343759459615639398641797456983180786226400508182678521403998379827320244160168254405625281199848239557236254186636807004117129404615815672301287138739613064062356181811898867045973132892751964889388258889891718914205761601649091672950655980759088085463789760311104805638579874838225550800172924190501349448006192927211985587249696574820077347972326483744223592608926257901921347022352909705501120852865040897563132807273818464634648513286012188849800470756096958882369302368443910240870968292235971677208909041154523652385574603002169855160176435160229535584102482075122196611496113608875842287311449037112872004044528342536000181995862061959953811727482051557014735953135089912037659320450878819718425833160663099294908481264257066113333078822305214484717140362334797979560762692445675744391093109279569805417376932322307157839439579085206391302230357288761572491636933585326767672806194599514728023719646813167339740369731366087320420351505874529792443873514835611390649914383054274573299765157712285943847665946442672759911864914375029429039094685257715284051538548676793926214258262781648776071094653338667567385523875604432667341758594824679935690036310558674142953541968753177172234360505722728865967948944647598360631066768647548351368291762359801433083998159366403163634915708256216056250049748561538028276239528807253211104363967866313554099431677346373821380251418022381970882050271002461825075337265755892746634762771640493708843521269422077810880280185708614406359873102202923032655363009163060975123333299837090027887188039768606519801163377420395770116272904697438109427216605185172210504157865732840678670972185134742384418006151303938170886144528831131441394827236141056000777029245121010423683090289991884468719494846915221430362361202125338107808729048433197972953588036307174538444206310570126767934043870337274231772362582262135664221053746625420881846866037689576100647057908238857700779073370787956705391919991866737181232518724529071958512153949586558921233390667213135392561884531335263813176498413076797437434633298707570220422527217045198592078090956602270485098244095268746518907243213279347128466602978357739615035517586386066748659605330596775730040311889834430201219847371122281124936316167844376950113712765901708259998809361101758400005093365909248723027849168045870094467171068509938785112778278340830358068998603195225246341116958739603550849595463330493242087509209517401065656743886077194857407763107152415996768016393633625740502013963707260210448044773705400832565065748668033113408037540243007681147623841054649037443707957242592922999275921369051008772026568367963176820476473736386971926900586134637429882257384441737876095290736396255030785444728227696968263720259632765998577156682185876364844277637991639490345745612216641332431690337416922629861209656265601356381760939405392110809568942723637878422042756484787229801422875598497621348976214856985899987276030038530021001557939339495853784543652569994502619834045983080305576519364889257026633857951760940878714124147985958289975285786065882290093321848976668523674819149925947271442005235057879008076282809921472484776789351490312276428802072765806211121086990913212596393660443292092387896736502061161530435918007631102791166821679339396008854375519611435641011004233798180239214104660266320049166635652940454162112526186622584209704286713993507110117204597223686359999765366933942417933151677092512955465454335994939552305452364045432128943227320002075303767027605050541121646642279645586027187945635870931890021568647259006843594987042343264453595915807729936607691226603909097793321073969072825214374765330006618047380046176050064114020272608492501049903993701335751826217502825907383796137106707902323766326198247236420974193154696484824531290104345484614672751579257555993098819801194482839882812597733345139188629826885355188683032053177491426326468096605984703963755122093118067494740115138914167806748171413884611156118877724455050894304950862704690416658269345137701051317804734084501550038685592288720027372209174002142456696243512230957794372935563406666544785536031966239881044494727985268081287069312623076006196422747082904110442202972164253240109263387528586208656054904008771666153108104117897827436843951583224194499641904204545746013421167143885202532200518719786943217982179167646495256669657721305054955166542969726997783860202364643141594933976475791814297384281779749158444932149036044672356895236877958291945806157270384738951381048992610141551713057997390061300243199148872170631547831732818559866943028461512023536635856698479400914367553627950512864377981063021010930685712992550547249969212850412122491025463114017210854701386700188366903183095848951578735947060557646521541485102794088140218614512232601519060207281877851136225072847746518255528992490007822645799283013995741327656732733904992896000947206052200888982644341300785845254337563245490232516601637165107604131734273303293471301128613963695259260800764863143515609199856192267843962686627310694844425261750922791689555086383018136502419495153746982080394633455263995349663304801880394771295225760732803746027745539935217862574645030817014709844224698417387840703017238627803370285116011749439012400229955847327220360950951958785241073153770405039059353430635728843040839810470585570840402970434558588579079505094612182317848103438254603383806079822044067766676371141535368056626031954956128458061019903150327704070119682706727363778017590633311119977138551355444198308603809637961808450144967614268026021579090654533725987139716497419334142683039397894687590621321901320482430630816302995781754629376279561570773489186980346174230254102818044820131894143561896650203387044367644717919671944690935063239689887439143325245874906726775672113988366030646201106127982102566023366913225637672853512136036753937071885531217981354997359442962089983481759606153883456308701890365094616807111517202295219898370252310284007584356858433633997857376770282151063833324856406298824025194909105621418669730639774105487372934367097879736556297112549743755571670819765750859190651948232334660782664725997997675036930526267778025402225038861776198960886179192519894638736512915973423325794305209356554246260917814061736000921932065933312753214131605895977324427692082761603834144710924953033547121748652291602630967526691380965284621202439975496945640448250530686755489646444759669837430047206266272130148700358163630903881909793511818223832755151414847067067214651665572022759799294104630001758860392314121279026354189090750397646412859714878241694046854164808007139673828879473927622687119223003309888035239889150029371561527091344884426531341384513677751301598226489154374899880745297046524096947634160480846590387459994129414059129534972962268779911923956283288410902010403629865980401445257126406216143422255794581506193687552605945399726299290063660100446582665900255096012190963725692859346151539085461732949120958273097164519028898842599261643191757416247367723887777454822476083781293768867966367738223428837905647475069443054433440337358873824497671194835255050059653434396189137382140271469016117589309783185074001249289886512567376776360910684248441816289473094366496062398825922290229829921810791319633986455004383536219629235725886032701583265721636614584144283108327088067835900807197975466094206119232113 -> 164968602326132776610274085843557329974350798124983133708779583929510390896570986269378903641681176033138744274581759168985236166238057847531125734116583292161604179202901530867968193748814369005947930226198316088307630482714702614400898842732131452835135267661490142724644619508834289906211587801957677583213677982663255472666887081566271496996790314191455254829213641752996401395885313271246836361664306349107000056473837309773684936467767752532637908871630724361691453018123081311713406620783520361057737784604681522851302780603485383354840527727113440642054240574572216517651668131531460147222011849339167109204135534931052870936848489322421105084575054155889324925248533156441531947437893191106384758109633446341832658723226537615408676778218923762062398039376803676261460733871964381501456245753509818454085772215304869380331071607536428442822281152947167178205414873974009800052194267586617129541696862534208587819923559498605235345786207200511626542406762533187619977731555487983832149421267505571588880951435295633235750618139095588924871905283475775842450190710983889743737640175936012545435179828834622394884626741075505493433720562453822053825364085645656838554020171521407892225852813192434777004635715186660757239151888557059259040079635480238308549838112834122989382366822494952638348349360803122869640300165460615700245190375764265980300416301383403470684664398352426591215028147406137750585410950517117587210841651837511726582709217033960897468880485742840298669739214181345745243707424209518969804611839208864525075679958508010611642393794225324338477538493966953212088245508561125371333396343558463458023023580328666782874754694787374196522303416535301233467991747184681743989583167346380252132016025640803976469599533248278316257245049212266162478448909004327014974024733177932333896349838739294202739406538906092196889041071798160581196263457232386242951100620360155698055297971310409684932585563260490778938860663538418599541884623518158672428023263369518649123534891165579414940939328085028488137634926286608654964918565454069200952684374249984021114488060731833289812406225633478567407554587577726698969491461250307361307968619442459935552773925444271281938161992287034110810885285888507518127710170489562635630583603342505482301946132626154696669251641869596417237511786875545755869564128216246085591425039695599492642049279496747906651239198378110659461877315720956193851445698587181106108096217156530463499602207940752752999214779016808851477992569208409115584610405465055955220295315919445419958671002466203185448582525545284433042915189332347075682236283180836960519528941044781710501111976779994978056823543452149147414295322846062057646578937498497423546778883641990363302338026755230264365798028789697984948708247963962588077841951373517608479569526676680785457995497981855636310535186563916414848587508508957171063609384322366826679722395583505619540045466218797914645729261089911080572556932892374523552696919349409779775986005998702617373730130184622129468432914830885939278328193094303836902639664501161249778574008543093618041088413634469417430933455572876364397714588449547198370558353865696133338525702315258281471635416716653917854743331617622257357395638211262117027505420852456786567444215028360634579665743192920937700413405070678882671875702960775638363311707881609972638178061566032172635122009775168002399456259384841690070450518036935177546700967101919390290356108914316657252622433487468831288411292769020765755002790369739858608027156876787452195728820766988003564318299191407038054944710523669386879534975799844165990849013003108151263760124342780663970216487234281890865315536580402892992811012050678883561956262686827225261493478593121215193044174791595454343120879870562611405585087344578426348114340409976535586666406135856764041105670628162706109823424190052043079052740627488019383077417027503331226037215758338034026865940682959757807459522025608288332731529829369979147951177262222903024803472148058254401869782130017631473475336468197223750745550553602178656975286113610228173751748616720662040488511191005552573360596438447615046009178893523285065234313937055830624555677628179545725675647000640746212434413061799488472578540775789157161411321109150534363751205031127639661507701137021930253505405345077624353216410397892845801440396351280381340142353855069293173273873115053611366463839334593283843427720264670620985426789209542027166280858117001183978739434138654858177228304394046682506280030344390043368231223521902025355472142569572367177916717191886145976830653371244766318206720587180428849445193139038900017503158033519260610169755441406861511853408432638603702707610360157094334944956873038785917985623720244504543155767121976902172269633174372002084718602146067846557658206611058332400154392738327198200488694875715462003147106086447366961866825251531705942720777994231188113183328785047561738700672817297498926709845578210103446052414901607080180041891488046611766268719811109441500373768012757748322492294831202504943073950276179058949371526198654578024196183958796553694291621573653606224312961932124118799141314159912739067184284791510667536055468175093094147697272467603375375972364967009084939432936472025615314841181495122920857253396463344045523063883250108215465930435454726219533736547017602102219454977125415727404645703257704133416188814279240334063023037381623992552602504521402652580862949642484238448025373119675381919518207630755684540954665672565273165087948637827692363475758999072297991857812454845110968746887911652332428686731285650676046454649962344297077983520395175360784666176084257776018726153658220237960086159624513455920592047652949388933162306666789969990609095532349056089904634952827683037251214349439448689499058359820588657020857391803517087665855162816958286981235705818397151935196817215249780263944259195131135829330034749422485690727725542205565679403909015603906049357836659356560669245251722394095665866304899666315695570441424449349219117420831176934776400997003879063131588597739516329238229132816341529806931004947485285172826953142928331746138084936211275169040921680290654838224216306508468664102985640461414527757996322723197006969783596956334813757886403893290876467228837897841380637843580558276736540202274588515837269739293799596619246534862826329070678680118645930014269289409618603295083855695559187741835339848989862599557654455825960182435624057414610740731669603888479298780175207203371654815751716402598353599004822846088862945734035385534507680340962710196294233058004877658458948148694952913547622712648866260996404372267442914658802683030086542308072135876955885417927618359809196654599077163205032893936225709105542942428788461946410663476954910424037793753686887001761136774509368637746085631514321752096120452949647793305087782312811685653935103473649123839371365778666291924673442401314834132759500443022613282922228833993208925642344332138775093327736119491279944026858954512999073140648130130612922130769128897761027158306547009183728162216624839270403549518050756595869916640308322548508374431092498511447729813853128474650700516568707997287356414639867182151651799432975053512396960547392345204583373057162477538683396318297926142974978556762067227322402741047320462855605379563903203239064425538809590996604964863850528341856141468320594978286483955794786626451069146736604110865755264846517585475341210240741212476473506825242354310994122424098645998459151235914387740999194188101645936476219481083069410621868427384457754789711005470516261595640452435851123458226172213771823279330222947110998053867542851933986892360878645132577364391512193864932561178219649951357806126777823568117175289212485207907531677872784299127090414876209090308686677990118067210934599106325153614983543048263708805832804984737696870850209649197574089068231270366897799911154269121730577017385667896307855893619483139989655526933333598414310043485892803074016734873219432969537435772187445553188319100201748810330924740023543706645311119950087213963968280068655354738593023913620995687476333893357426960828566615750403507569773684348041626533923533369728217148501624728145938326013841422755594278172010361189056276167706226983916848066494870783872147477247116927022552242928321471264108208129610545314933671543780926070446447349060687511623111284657518448875231869149778212845255475502038656001668551917965359401007560903214223788602132071939401902797888808274714396816739187282047889213211720796824517265580816013757345897812795914899041886959146155315130892255695772257399520275433015727475208534540555250776664627016344019150219876953939081441788694058317557895917317957946855764878784812883387247660346205766353805948678884419856265939264161470653940909546106794078833610593537605557908625688045605723708393945546252337515117386388655290364242082324757737084323253606665009901785718126404119395891708131977169320304560767060293767608371137242053992892355767825664769077776750484809717083255058111303218164689459560749451803553584571474424736105572958872761935836070112223085994831216167123421869440627012137239618001491827231332859631387152827596745676168677547771585986157093125995966958320679932583933679730939024320181052856372217618033451766169160792334020869480437982424141482910614283235850376196406001415873723302524462682855315924390692500091572990078963917656274462613847391113053254412451123141732525806553890000103839446790029851862053933930712551812444444862928625403313429950002052584764204718171160482756117309630972799644960634204845025996223495043125410639119202240995048375873438950042385741080237879481161880438759301191181732655314019069405081410586434600865892023891133552418821042398452324995546422970290903476492581268206107399726236173193817338244034860568719801223313224323463056138117739835400175984896960562030295903748574938186542581214400571290663788813966467351529033127677828164781892539079325492931831980796385996719270121045188592795650398822933270896952840568573580948965839493532292043530995141169302849510458021831701307991185013589637596715286529893683093171309551736175385203937288537474864591352923440246851218312956863415750802429573727402713478019097980323388075835389665677389459635131204215650500809949879854065860940390119021051123181621931443900351598022953796671972575711775486729099319150622662372057488952312992023086412879701394618186243123881717697792299352175406186081656600645884591716469899998703447683768658068149799348615949170506166780315528686040265503791468719424561973118903249615796281921272978713900816678450798440292596932208393114301173946426192330007015916652454129447595598165043785989388982881292895522936018163703539975770708768605151479011720164061282478447388845900998933572393229972217599140167585799875828260956163820194139445168761168944941810649586387353395820053882333705897301300323676995512907400233605240291167114897781359224606842549809870882626337776371101186593330947352520718197245192878032435351712677711601836058323725170891539684034116485669473425584683387672483401673321584918630079113598583170110886451083063413000117556492939613458960754552805708552351405841675775549798167286418356815850685131568436300757227415613759203510923016940547273039479843573663883519957932856517600422965620920945099048607938428340750896011194039159383628639230178095928097459039671487035684476590269965094394941724134931691340757685534310377167054279364445905087749935436283251159123349163152739429864071760105389139107229551264026019591915656064337865624412779180693668008678438331086973808687046280278679722907298746864615877148182075063943154107113845057059587562838563634465090793196338202290601155236448495117672529350330296693906345584930883887856077472195794692031314590985320155775101676117058778019478119980603513257965410491898893336460837450787718499970418786469546507599115696981725282814418833893844621574432152089035463889165787545442430354099621764201722702546320646307593252525021669446161740601472460292322359111212695853000022729442760197037834483523881074994808477885392004045416572662701515411524786206117542102690836757239139686837706222093063682990068834155428566680916893429825672120324358636922276572140957915413132775511215730454564938314326238503134265325637188345491441520482961620810839352592277296400058971472519067579201407580818369964928849155599673910796588715400840069903333939218128777636224762612215768555074449586981636935425628658438159821709177842889923817346619224162719562120686806280721567156376477202853777408054397232210199760354796513357572677383581909225303324834778097701401043523680807952840225627795136984407202452558647213703981651428050231998856675654355441054131318553061626628816997936654981702940456172605878148085632550368515415981916152923464648879346076369160257983842405964391401006112927539953253220474577088123638393311120514384291309650562563588093070576317556198662251423535463784347461754274136166346133327802541860067441120895578086630131251422316688943552625418749645147874669374399631302231762843682098822958095570116133915665581684314439717749120985175536405548692831897575870445760324669601691202296640909052684181431812263883888346650096803769862409664135366370559722331369601901915540362067691423723164106524255219371413241339810724681372655241286244063306471824598392620788629211280771500274254006897531023338333247249278383589304080464072317977712028499947329610499140110111535369717576907937213661116378113472425848242891203243261130906333922843295866239106189868626508153018825089565506543890147117439214413978057087056671442904221965064279207640456394497622732146721688827375503297181103701057327551284176738410550954522079320304571505701362646957287574013269691110140178151899987500944389403296953956798163129804267145186803105471752556824842438328774532429122950746856604449894869455387554021649763774785707224087877058633259288809546997989704217997380950379987102690381668667599638305354437610715880088292023018982402548424807510979957762671035857358131170488038839195132680091830002319811289576773105488093791592231660434425097372456345358104759077825279972458338873327838442134164127688884214661538530564045594118296804376759537132960306845263559429742534224139742928535223803775242225854789221215917573229126575850632375979797936362378342350693154881233161844321567551713053501111096213805941764744766661699778466306939570360144231979938116665082312810984435573907211071471097050031573793137407966643466227559653130094862163844351456406009606836725322377151112618113512062700860952291090515543677687888715041137590158501427868395071622423851332187650224146491069057466784125204697126126198242664132584789874715155818836954705123374334429332929728467369988886548021410126731543405088993362871714487655611203528252750749163737313950971334415237260806639393450479626617721071233976410864850269673794394020274849025212866403828340742959758885082067241296790973145243661799197982047938878205626816170473715524349580407473037296381407961204388015892570355767248952993795027315453550150087305006885712694223711419360694489280016584966036506310820922256731063568995858902259083559613102851053323766249477014005167051947143320912762092483980099134923748426605300141984091778231576192996816311887732599027514872976756643768706840491464027074744619578429351879008416173753526985015279347007794092000329020673142902094436125966025201600178991193219432998001160125343165958752407076219119670660759787007916949687513666611232681356290371593833530029898711991747479245427242034153890743846539810265215315523545886618755715997767387654631783019529153370770388444517966137521102988437999604800773168180403142003255342704833378803431247747497288117440490646180609339423243263067407800384317543074333076592142517958154792260451940725301582786514345306141570631494981863242608981020269814675646867680126818764285431676598451121780367218557345265682102435423138692977506054112442303275550573537763945598923854301145448818738522147197460741752783215626248136595278430197599524407504099723685251686806375185902658752210558954455052088776658675878906210021664872811938589938747455274039946660895507380878524591615768914441385506416074801239312694938079972130678371542400609508069258781213576028857783933887415145922205784276681276584769413866374151604215587902817256831292368577121674108126743426198347212007132840010644953847961112841154738897058789957958336591099276377838707171833466802624825043634663857454348745921031339002392508015363664936823074975201730639800301633462221402866800278535451836200560357915662322455412088225865046967459115225562678337947084515583791686513458742915226171941010598912916127538932421709235909547887697107315855055308788936036888786672454777072931317272289285132123177193364062050733443017936464708860369493502809438530726637135640104277619601502342442629109942292423635742439097938899442241004661872714494572237313822711624081292014986786070148521189017773028356734483097125608076303544066032039771888661954869655444080713045657107165537788523150986485707327947328398589430455090787746358491842659761932450292032927408881579535145867306912319509291703166673392335312938819561381194837928227408878206028364417058619669868494097187980350788034742542259377832522174365478475789975437878140106187464341818559899059819315151073150673882480981355790563602079968068122560369649480317385264281391136143883427703921076587454672872839515467560922890016451546809200182539600450402792016123696390232252668385360445316781361296961102112835356338977969897382465701305404591799957780699606296577283012882584009157909247879120055332671973302028095474418639520211172626045315586854979599082566404788182278712383197721434165302536370029232318217244474270946907888565879886232420431051327514558879173024132658759336372622904389671153407898439901473901918041034078426087847766049780522078606234961267070973006839561870360178884926250802643967738298637675868874790741009883150278464474633358902693699245725387137563551102337532664731845049167727704174517717323761115626522754211435915996703216175608686413270083268079743789949300304661414466942780901437565860770959961812048458183328774744017028898054680352954134474853756256851588508179689586711033712279030536442396049202325177164866693331349326365326204625140271167083709073530128693330464521325001860052831107614948047249414553198352362401639121644454349634178898065162186270087095083154992530834386450041669861015768276630223661175509345601924892648040757957252721899873829856144012672487781877282849179576329172799590383021203398160084571563588778693069435481992035283870938368443880377056536751830170984236538296030897952583393572697231105757490093414528437929848017327918645516237935273361042735235857399364590529332696624968961857684701556881852524352926028248756131741982514590908591597515035869320943927325408974390981778680109169475614685390216388339514506062144822218514565247617071373387673696733069816655707990828973462739329567340243729320657621902131383918201554154656473848014590115640034239293371355272935319800722674726114232520141327894908956198552481319569651501759657845887960181216695552310921801993683310946691097133649324186152042789644719611672950903278107728324620997240315692045116500326965162453573591815913282324532005422047469833586743220254598871012196117827773724532951524110248431810924460142990439710300077814039712061623601748574109330186003527555395150365820606890278919657742964071225537609167052567118450168645433365096682547384555362893735855957429846515057614453368402869388395579977035973747948340968116421063688377575295516262997173792281918896057684942131491337582144131572502634498471577346963919428653880761130449078690594390745678414465192685697703843825872969798338914142084844922513715987078417331039224374348003147069424132818346842124883607419004939904593717512568650050283372866792429734750262643386500251525381110133924347610650090742284373213468834844267995282480995059024272429227930758095580146579653710212969459512643770085265672121325131042555239225909942205418514950924255221231740123054556155980860919292019986223626809663776361922924432066078898533740229913394097589537137899141543442265925483383421812645751781121285996014808059088110574727229406150511994404712249144564764032817357500353412360015691496488048163518214019218452130379176198452570165564218592273489353528548966465606345484055258878806396274248068273318183105505596025016820527869318415628175252430875885927817434398665706951250790493938645536902534394989078007284003615458154803365104906345130263029447310587247173792891687999117022975935809946748899351557271696118392720566458059220559633503568992191285636530539315643124779804562100595697526785322898407762829494154185700075428089580019806681834179265389691511093740913053042431127960059169870504238774931674012269334881868966487651181834705953423399240177233774437770285908875998152364989564995095878233573136879745480695025436293320328360447183819490164255109274099379302647077075263473579447480438918977220118204932708360574078647110035575549241098624915788673466176023990843236894910108093884896179060099645102310980588873001117192448364632076054577890140647678096189328962466384259548700556290014216615195593785301411495711408487297487122935120775903118626824851935170887962127706991294119141957089309191511509386184577640053916606610423267790053613061772381161825623741795908343694660209314150458992851309836635086557911043310817868472301996041381921004739413985485946678163084838412143702173307848756495357231756596175828895424037451711623992393030405264204924626907686294158460235143855035003548877224958839788356097924055135163457527209100489377426473840125350277567931233621753217752050861957703254509420044311962089544524042421333001672628368721079478865624985256121436949020318969115648122606833383074864465757536981818255361722789364610338230688198700680177761349601529425512906148114681922532440977502195824592256956940582212329537726141391441180660787730168896921603697539206421978043714527920773527414943686198733114358819865482582512361030756961441979415426690518458266278615609118154193955788015082140973048640456035256842834385950837780090204700742150810618854134149298246911113968341543763678709612368128874412289866184256299465489893283851594147183901470158819166585415231670531255674203073398977125818418232410738434454151227713634708694022145018093171802919126377775800180808937762606274971618335717334504744406385171814956469515353935065283668046604523526860458300609872743837583833788729883335981057872596342305995297436281780615602710600659384788685980115786247209492069385127063772513879680896049914256879299235198909799641014646169101761497297815583781410743245951469263857288716545662223355173376708290288064165107447539370902787654237472921697099350599212548673830432601654895588742750199347851959299996548371557603991909408033991396837446728114777813409988354256882597791445276207800001474686967642595725877852266496617950773768494832491258345699547380989120419440879061467413578152076721990877162674437959714915454840327109810480676172478720202306164233874869068436513976634370135267434020231152123613915629082128450322979342286290465410288153627203747068197902890060754057876222022266437220115300721529044861990963606655435731752334345072214001531492464132487102373163173061922877698824450014038592379819480071893201609462009489928208330868738841660503905105517168858911813220247888757020737154149842408179084851776068710539317317759966077644281424884681238054047404004167996333184176308145411632236003171713259369181875252611664167476970428239964634591711095603271132770831577462039787847853452637622810896402315317783753421668173370254331127401170899042835903530414050841864688038011079670255708611624919353933676072433664335105072319436568728840815825483172290446707500812456211797283637426234552232308144612499572087622458719346553692425644571158202655809704482629729544860520229672386370190883905092669257622767794218750097121022951077800592494667470680384482898984445007125561492930227040592239379563412499099013737334793655528638973477068503915524714568229570824319151703164956832437768978527787777247149848102609588075469179536400416637022767338365744124134667339486340214899126021803672793320134874446719597311394770507397059395188528371694513726858934726738155999411630463307478439562336560075511241399871946445074695039887571797957935489341368728145401642277316497008329148585012735463452963794918406697701095680021614064039007928077480538918832639420729776010221310665739527420104184339338533059544307186678362160281803004599817353813992541589546017169482719996701822517965027527911228473735945407425256417321643715513294808732679522129359614767562293601751188648076816116689802604411959566027989247034743260976450534185577493106262399874540100727317834685165866100057406343172525639526756278510140094802275734448839565523780092459696861484203066617530436205925759288591100638475354356189362265283709465812433109049039228220041049295673373441479442714656025384100631531379283435225573369467704428052211893974264414479783598368528940258917567494528777587231353207244000471159340030146345718766911296236704844286580198529836356681735769177322140004496825212332262961158737098534176874170029440614015603698492489847201238603974163829718563481965935522916533856480683787154809890150663750342191217892853078867987362149048501408315734584322067655595886987392196753296812410561510829360616894219033477148259929781743468870517068229230993754565175637883089214063293438180972411417929618687174907366362952295733276015120719681509300059542967202719935548380881130373758545433738773186784195282829399832263582963585785330714422402541866815556781540104827058794106849338846273370121940378821880704962842869026115762224528198881816939685043721915271832640222997752172624615831890084331143302209783707129439563630093641170223520046499951678905361917671009178421492830714539456009316551328850053618357743930263050308622761731651302509029727316350987668502079666522862980182395592747831940856931682378331110058027879940744236117505130399809198622505886232089907921879939809778987656148574003718086946444527692083630720113990563798784335643422139864232186655405635357280087176354142880761625046183465256657848895049459074647238183482693259866562624302832353237477066895843981978978916071138527874231037842612326640940575884857356358569489769932504432380781298988096059185028954153290968747608817718181945342539226339514999570328009697476734727812223954413569102329300953491200096753649184016791476281335483483364174479967481820264603208883809467869001415327694577115261087007849487023110574877046857893915750087129936718896536786810921071520429634200478026310769593108678444489834193731879878591771881172545350475342270038648288882956485122801487585470064254333149602505990033672992021163068191536101678283326686556738602844152925365300661957684661123949960896306723811499455238353743893882151218794488450252497424424894396042359955497055117159179405993422097628307505539545272344838452907310419589951554733945563074395787536106517486434301246204087017535750989442095052478429882813202272297202829244519820085326423801252895802105458690700196015634648059540995856527988514610370317439262806753842782797598357190878572604221789809841575963419350736622039446248027839368581591941684646212225325831679359691067752910380690856163537039496198849930242435481889160501601537294097141520702925113573081172528600175198641631266173387773448011650006624228867220856687587103034672685992905894640997775329866326306671286663948078638687177283479349833603703851753836695578704234590959028031586640204519951799538576991938938575247266175794771130893798081184618888059229216285737541653679398878564679032983183617070312630917711768742378178159677583964270641959437507783821846333549917543614719664112761772633219148112496774647868691312857589035743235995720277459966740685687829863632189986778517978820278831153686653560399332489344713099335377341280091120607488041709147545523921126449167020289659844365003289328755509881533733960618387217565343938811922407951192028555687220301946740495021048451094159560299014608137911370955845251709924656634039658826397107851138929992026562109586198787732050638000595231363123292288831111494658713222029105464410063017643516861929824637530598703717842407367311681310159388018576516812604626348206015279791721080187988350316518171480413451307704683903948492535444218995781289201482256864991379159945753790904195385386365877909667300936983212277941913734975144814327245464318471874633796465883154568723872440647779567631113154162638299947930003525067007779860587212624065977950240191554361496389838466685849449280263543727737075548405712062862640131536565831437763717572600872837838434609164432782952414819979998233877030245184177422063478879063723421732371447255783734408940550100920714461103553156032165853244199682916497936919403687646145546559580299997088361658856345787019977348342874654066546101205146432563253310812495859160336633626801503219125636733065497038757539730696803275129609908252448159023734511124262132807753932473692085501631785690741125946790488050440563534389844824274658130531496456570388626561339193122232857331872331246030482166404796333261856787944611713675701854907361302377583470792327436803923088180983042092104220511730917740132559726873628970669714094949611240358548701203537954755863660503840391569063546929431369862514049935619791952070450398493690914987390757971713045218523913301876099227553087080809849178760860189510161357599726036863452209350913416697249809825249520060240247343485576083066595145189510790340696347458081897233032652587481500718526461792950048910136594583549757393637831976675888032900881871319093335717895339650426661597553420725866725468371664935794958043137976217086816759785687032337720886105132299600003880974449529237834146429811542454346309311247245149105145629009266515348394702323700974955346213023710724974232802051827790622443859234039698583363038147950179135435333578183451280408088060005950937904033069172556619253310146513378745521273194227573468646471535271364110164294147395004612959618233116679167946048161682819338641115966900125596221383271694237821745905710180257281790174096575490422133090779576857036228955402699594290376730611175065465941762018811237817293084391935539602100256770621291038606253096052912644294088618384703142007910957373147177908418738792844659862310911575440395743137489264113371983995245242774550174489925360748512761793140681153682268123596991792613333087229524465401636069248079487022844848193523703541795161884286031939542276582372999441400229866597443006983018276203371430029501363320959782695504867030948599927156894951676206125223502981619734360345191565172257398727084666688973987140028361453753755892611221648683434106267973812855889455332475044607279426895201867674620309987591111999682709378585807830583861520602997768926541911294726618647991076527527195571139881108038959076559530306673795394358234779174992102330638346715497111446517089918537798956687209630422448975904184242211952537928340366693390139762743790058985882746015912134066256486882864641390337475916061464682349900167405298216964141773339010309870487506645727384842530604469881694399754849230168135828610000901590246068978126032347908813814315478288608762252570707968044297929561730421714492082206292063145073723134390426544965714852767756901934726918648994678503299770558083738600563316287626290835581296406661673532051945411057599015909524184524174716983891434006090861367318556391163615427255747673403106386887448073912838637652888941969918326053528128855526495163086516555991607715938412334742071086711164450630108604342068561734142656082352383061398309664684523217445367034742477020368073449765629228882073928614727535434488802230794655252587132611886542248650291901596129694051704839394894721250132228631522417408784201382200378727448407626516875886628732173009027713192292957734453607688009192375123877560775913945027246325860084530567069988438158403628629745706120987090855347593795189648517595116204409057362485811914681501228977796346713873776337050594365072572725576952487890543044039105735440242051743190904871946704381099424638614363002334001462484055346980364551979543215261472667660309134951618386433206863804782004190009311439090338101931843400389933861211813985505870955037619571259042910379933693719290088864970313318134823126130302177676886694239542404941784113282979040839117545965044617064725709306307423323765640273320214020379166315335324645301505583920844409918383278174194326638085995459998343297189841190068990278960865554494389216913568808829380269134997352221153293430616568365143298367876352921358715807769944910635768576134078528598659619275203613509253380529369702925973182607439036210069532073558013698068764817227711031946312995657787542787904998246644082583972576852299787180589100887630376909279985784971124928420822399920698961026419173143842071571909142439913249254173879592415568890661799527839593247972580456827918437440977435789599871286234127160453923464818660297108206157758340823894677926833637657736545544763361752224403069547598721173323892874062402501402602469889433481721710981512654607788964069099311486179326161476140450167407425936748414576473606196157438737123250880431969363850906099060309954569047503074358892083837330594576948853376245990653983103597228881972355903278639662456487782837347821247453273851488936147213629644165587249908319093409861790726320576047919215219289913875773563416898063091359435253153587974561801920094743528789046219767112709544750753652272319827335170679849321549277325748049291241377250885341982774257763340697369939609340025430129761341328245084435288817471765347681036574704978794707189895578435592282414840605969822894205654262885228691310006531618238234734836111181550889602328398044892688096845676600760813797649835992274513804249420231210808177681431632648753796291159592422460949268891097711739198345659513622406727549516912681972597391411948529233177321248780346845692846846183275785087010281746838016887373394923722923301265932316455414046294541882502107960416335905020291728342700812641847394302447943973125548025571308527143304275872217890120993781876416801211678355523215182644447717222712026431594662619633366730410644428553120779909019816345774375108165580987920618881057746477637207982522727842001630419014130577954619228159492609661149321811712065907495010882920171706439460811965134456732147190537253846885508143261208164273822948772597038350530185696255806322876865248108164586707270144717637311391335938070232483572037722612606397381967006048856908869527144522493592204689027766646257547654011914552281032121416629071817865865892753684714771866656598121352261035620599856154058304382174836246509785832865941506610204448434301420366186969064324432600578067127126612271355020220134040107590541097467587292243982260464681566900870313962304214596200299371926484844400887805076193964833127189603344288737274781127912771595158181024910755080734613035446988270816033381401356585997408116385130330328550646878344281181721361340050953992160612545026524120350609805975802021456416128524836687158306222648182349255953519104443403922547813412951840815296512970976047674954961313663861364011338327259392639957779120028266722460105316014021711982943035856482204583156024842741171472544877149315925021423574571097653779060287272991936087874618439536149517020675574769228623658340451185830139700808413422633778347620350999994622921003549605057963295942436725858612183490972362261082367992621825673287388201018516850942342145062310640360220201639116894780886525978944450814335546644663067576041697278004874119143617911050598500510636425054352854563498987566154718908164929863952127384687580859273165752239418213844856002635508579920751467740741066886595388629290401217446152487938347496885671304988459227451117561419290979738972413195064147237211378215965364873190833508787082330096828139889186838472166916220563830772669140449039047609975050163531320098710786278635155417045077488342712061234734950167423230651978047914601454193043363568347795138963752545960379418129987874972660584514781417338054971889322786393465675496847980290992323098588485441911563883178690942443122526438497402733339855596419933585325363506893260783579675776622701038262828427767897945335564130610281221851302415972071705074096194086819664831373584121714724793832793306059848968661174107884849338892991541621481552700539806899084935213113100698837300655224519109737150664992731903723579980162843342675681256758413683789858721805084738346119626717058053263080182716452259309264992222586791880037359172851529794427079421097478522718905951931732868456888924082160181048499952247364555731121118779973535846679047397797757949818361977682281857828011459715425697351037147445114242448407782863052846126624807614155801398727568887595740067777771616721428546183757642051220122489707741477775445272561015614922552797238940987664955629134806480311247058924602244329669467984468493888966926307424580810980730983147127164572169331662756469288941295654795662300690101423285089673509804392512483599724461260861043632449264765561347421229206778919416312957722424074093119034707513010364245510259937125055764091365659447699379895151338641934541362029273378890069580468281341866236749319518330906442196213976996736777891138729270390382288634220649740849873814722934535397633887089792895617351377949643905084248726403209197544880530494538834228934044788507429156004525190171001279545406907076791423473524618018882891796600346385946917264152273578218082097953644077818859129765563238023354599741446209843411685368463238682309809430625888053142729734309474522599269179720196505869408874177500644077335040755170884204756283613939126886366463060244089894185265368809947423495429601771490025113313309541078512819632679326959376970367442353853240315056031841752545663209918758555684868320445353177688681979536427872713707097613893427268821321880231340812317096748988412823263907581562373354770464993008299266877889056729532507362830505326236805142081086457263436732679471334707093931527155582183826670246880582718752488546568361087567483669616061171155606635412734314200650663374493979363669472490801210794991865086307131234246732094961843152693273408647877520747891974213206332169707230683102203682738738030378008682796796379400783103248452475563824292463430826421061277534145022751154159298174604775238722736877062916562872480208637535728208013490169479752205382789794572066361292508381599289069370170366456756512377293731810204292611945063898048221169722404147661307888560810876368116260517714783743985883292855746013368988626923845136251464524950802152860330703261255094666722294695342605865497237642479984611281475859304185180444908543441630066598086551381309740058403544988674167559621347537324551450457088785213336814981007805655793778010312922801449087266657947731000927899162055029351295863761467513049694365795643336392705574317252357328575462571420760802940688535083135456703818348002761585498419770688285152746179848537416658116027259135836092952080701277264576269587108988444195075228882422892002994761030380306562926981440885540331358903099694596435434094706294295916738391141014061365064391586718745575855533926824964745453348747232603671699483747226322672068262013646169441095196697046935891505110687639172228359626844294768239761190192119258325555695811775906386454098170801639767918555426895441939487485983267983265650609339921908152365895159679013455470259683668848456582728701614862840355331385288410805463726817882377701835755758645733410627818734496987886939701788108349128294669665805384020172951475671092751656656055876203238885401342574683576429985307864382186230926370135023615845773712637019850358594395333511652111296888612935505529763944719021946788353066436211927458776984775029606069189335515497357256312595076663605759594298852168711426645243149640144829826736707026010158094365609130737244831936050721832773477647302196468989119417629510365470700393405187671731823232998373537384833279158470269864853979883391793693836594660018933230265077719280853525003273829590011940041549324236396142160547298044082599528854363788306197935479303689556817218648980718003577303415591570781023297296232145421356502220386355396650217396520776485054497771358995912577953648137538412139888572954479171256398075541607558194729546739190373706081851934903866611907957830794483173817642690170366232816069229354534753114589913661900083708901540634358353030034150027847559041773974481036023642537370355013155896576090155978261865043722128231267104215785288122930947084776027983085098785458814176687648075007761891246756110836539681927738043117004420023611563410667567892946950768110315128602020090554650776546033050 +precision: 10298 +add4 add 4994371060447012639142883416778416344628416653874630263068839845327 4838641838480770265763177590294034157023618255842920178270041651914 -> 9833012898927782904906061007072450501652034909717550441338881497241 +precision: 88193 +add5 add 739177438086472290672946991711574151342182815141970608590747709339604362478706491854868946462140768663878300445499280415109497779363978323803315879789426979441845124834302859086141541286410092208634383896316782297621305025056064985381817780046623973358541981324282149009441689152580294806061838924165362457947511718543778043278135479463799274154135951220981364809073217800117264607471082400628349878104850776989555322710704454503121362837114381492686940196968498496175056960240111351473436636045656285232120607110381605394316602468939506494355301809470276078410754502581167749267507392890318687525070912232766857332409522330290555487406595202707377778171112287048687943666891613075939596809214631179686090256463077316496854586593564240185837878717138517771833107975575224412781649094833839230944788080632909588826636918697671404822390351126693820566143254771423725183249570519945546767089850273002557394651273576119346923744034600339535468354099799936005254584728155579401116203576489224596264973385606562033598346263001538124317258980879196368188513894037390511019207319889833975974477020971688149889250202907527868494934705679054450597627858806417287021307088080299719997763437485136529297135369682426306607836478676053862718967649859390595072907882543025264658267100063770083903655400487930279053987243836914783570661147939853808984399220807526838444115135470953676679846526050015074025644281567698694227790433933374259778231521255690767739236790986506392872832868037885474238335169029129481803379614729315923778968739816583515867408525899596601404863321008727712868650617390044862024761166596767922925578289076501883397883348769280681408371887785325743283281663703458022382768722947627360391450573741464164618436286090365964922089149257079137415545470046696769013870940993316454718180855869683967711801342833894707637000035365505779130784583566904668919721012912077030158973937272354163859453439423533282146426220327676864703289941420992097883559991381468461575534654678719144323798894923467845968194931420584196543013991442498595749463599622926643957909324096947443208211617408182946362734030701527681498124518390911880075026830181726964260246788802512927806990890168306428727136897879475615528453911700869372436981921602257676275206704258768840331326280063942831791919150014829154543286244535429746117249083478491986882575202424827573908100509490544095425008674758818098854169920309872342669676094519532199731371330736327403331081513627570126813980734932495113068029332579821398596754397758982935539317585845887444322618083041095350075750478093859181377365332844592339437283679901698693816372303871906999646983865508769007718961931143103514880879113934429647147643088687149928574364241305679771467862164599248013949382452471148511998336257211869263188611882110972470011661380257367900984318586186401492394613004043274879858208130068035725207536492263472813218043557994615969922548573077544473041422719407278612942567152622108359077432346742399345950811422432083961948731845940063753754234767193132605208936337804327190811303044407492615091715538644959004061623230345127478284968830159102233536651678556308825887060418922690588685512992584630853610728355074878722260867130495858116694331478717409746010514930960132330086367530777331200395052829732783563319268693851363665543697027983603826519732176013611072434249884991603938457998549544786230321593420398128036112596691138394108413274909031925143211285562173439144189004131478608797151474688272206806248530991764875094660404822296458135266575439637226516989931857527176238608441076510057178136932103170869948864040021040715595965259348135353082028521315532279358225140175326760453912201421320511321348172592646623531302025868051847666838638477533563850348097021556654093041396644424280003942555037980671195444027787337022615555336650039803779946673892087063425721556262313121239637878314364980052945060195612392234789318073113264700934587920264180204183739471908340430260867547460818034805160347543835115550893361015754818894251985980929910496783748379293326821877508506127439458602716962167240913461585981061756712512324232709842311329124591870505908647145771897035064008037537637350947291040563485139445357507486558348825243833148843671501612562955645880641399766727751858277891942337577330153825191651827878721669118574234895703526135639282653125624681938196029522499416119447131303475594629863696675847180706852887355201664057168509026970538638950218115626741715146088994187810524942599724731208608640690704364142080216447808848075430228165948531386678936756260242345637804348862856862985287849696761788308416144769855285873173702613214694748150525435944355464727398109515972274572939235125237289082180395642348514471753203055606550164963324645536740073629756941935441495922691154529644114017038517224026241919609921319083727837878493038877238033169460551273609565522871788278064072033915119595768033528926003558086138458030193658134084154258446849117328072299082907507296222157651852020277430938615475789210708223773031697616676774512826495687570077907293186658511898594656736291350083876333796629020942364132340864026208220962937092985788905640513920413588147058486966656595371003080373728086086281484388484658662144309844498070241947480567221157759697040830711141353662955014684789291828946594710140059983520443200801747672438907986932069096689780449161253640003117947493318678197843049303002028378455795529582201899825155655832029195275496188907000748406044406184501179234363898155706801009286106204993547656413146576859117835703777612626255439151428186457304439584304615818552576462750945742309146184952233809744955362559258050158507193455159885843471221940450660653921145685971195453976442639437361442290321938363095518586873344179063796902168833207795169478012125078057639511271165497353598602401525078307327035714596527076159529571693685492242812181517968641289476705693511313997191005690114643165628887195707834521142066599535570211925775676764024123375271820657127406860561991876990772644045448702503345010021644417183003864897458057052938360980933051731629446037173151642668501188943377216746288525873506818076972265344110967741220379005771579817174015458894177939849644177070178201534567669600064719390896479301997526217803488184256785634257050249084844879525457340893911184844622452917599133202030038381233149750350528237946234217255345910057486981639976131842550387464640478082878293607566777095359760086997273859871862802559079605675555222301917289149514829912991008061750627790371371310383088511137333353845547591264350777456603369341683207545553123213688597084129717796066883039436816065802907084676982695605213653796709038961341029250976660155651038485942462586336734216961528393779760731839220187601670002261482111009556188381613703837133335665448692754384992264143734702638729543697320614925699543663711525992169338082051417868150215337508267295987911625314599794197670066160763285155921966715320125411157823041385432772590311136422427417508364051600119350399194086985688082063628771352794659140235522382941854183700897478074743196426607522495130495520186460692998137564596489954775812113372677151268400189545741484311298834123838570222541425606316478344893360320839217049134478935997014776078979549545548710535588783363338806835194202792420602642889251560192929207732970708675128526221073958173369606187036411951303892919202388318562685348939723411853294119828534420244352081422651971533041030520820786812224425068130472128836149235177469330853292689676710400032304350736153266698622366121875488722996495858931607897971199612316781405751291917480695443647379035042905417382560583375203883782281083503492315085530707102277335514816451160350257860118931194970974543021006031926272248685436894973752007186124771829347817562109618214624560837538996920240511480498038759048914093911459270609979357413386631174187706952800473856008461445198618389656267244763644733942115536957986713788611641245773681916115822609928790252072755381553307882611738237277282208618675256414226192050224023780711950835275489980886785685360661323042670332564798845274768079751189536625179818485061770867514138800946610929240399130274282245208530589441022939605748896027950706810216067419520990029132247269336460833172121825412955270584729326404643480826613481824724816083259473460099216623699651438494848926665971356615854966037184708863136327826123926818116349118332067161615928059312822495018455211214174891184274856808148379313862137937609491239904143994267045009573319400978288133058774801683157064609205447961739985930258430939347826473755346712639215940698147489554907598916226640997395334627748186978501279611422290731943750866838217454165081277728008964659387304825314252150862472893367450352176012363324453448058002381356111210424181416412717613800824163619109524341261051578583633535488353416755714039158430973242004195252398695313413444142961804719261174652820113590224943480005919712400015277077221118843138774950894789103396952622165278899706390520677666441836288416777934521555692577689973785368333753506445953841738362498292839482462843797761450243844771973884312065047409035721438264627958308846226190993408637023546920035400840360548688897642808238429850802612924737160202600907034394168479531051360870723660481354090209857289011814544691705722718100651326599795337125367528666913823299231688529850620755202166626128168372127036600178037743719347458582424193457400539772757374200066699528742848083966210259527760307433118765702559163674382965137999515137675027883829354940291474392036363953918535725179303337625889179591246976203406712202202274611698068158880134578356777069118242034526171480070192288282350896122062496882547063755027952419357712208406294087593412760632758729692820340514522072823443350054534554368166709663873330010247841819934503032140091398417651396652512413595269760780971370934241186316982939084541082792164842448725289004055899651493604999809122658990407284601580595358911020830184246422726117128064046946572523823698363948155618127798886818134195094019217506389846010157040370145165942265250884632684602615049004406506592303396345188684739955580840233754932185475236371393345748458779182267457042392486935604177269778180398347329652325066804166328111332064157591463051505062224218210698888155208174641920252503623646330527177013811405817566312545289107060107886439978351467525375937694469349039006286709075243480428176483882560743509948314194890962549450206368634347697092045755972472260701468104064136700319973850616463628534811678739568096705349238181424019954986054452758900313367228061093974213167757326870306076885516273840493200270368739024293320024285415464153862390322765226108547305037812447142946201536093460860364410526821506140680789738268767905070010092227412993977437616274901176819313586289902543317972645421674871243984833479777121239022313090734645970097729765834472286078232996276650756854656273146043752409560789440389943706740477374576625095208297290387416008561867107380119406424085254960059251304870077366085562882370637075360813423531435541018398764253082252642013402127655692052395565232007844206507276188776711185641342895276338591831526141298123422678145425171297313345756150106571952613696126823445472535611182606724004072108168844697367185113751559802797606939616430100540084222010183257956843923517359724709166288660792492112379119068097723024221343807025327987169992343042411717626894632449735787144059566943534785448564047079046436892181610661140261184860175130097802275911258987284389759951000335684933680861017175594904330486047359308341252062229440215515128162166481548350824565969805054296510913210284327087020017200491885941264331447539625785697064678107388238232226982597050319365179091390977844317542816735220182985433771564775223577212241789377159879074207281646958954995342088683568236256147762425439464028050598069420681755346863546013663110286047020568451493710054902772870658552638670725152493780481149181130728403034509353709696856378317 795265753006393994945335681748645574787762921872138386231546949203062095790726726129276554980223066362391974970828721362460738369679701901829367436026617382996583044408589558143683872912788903922734857262054336124136101833967643952263340472425519515916532882805362455976647041849887243009326485319597883677094840815735608840377610358083105941548523058786655653449172713194054338347122708533708973408207110563429001143774270223655837794652943682768325235696922887370181840510580420527616543162251722972095774165519274877080424897782674352054681769485574873875952419279253867503301705393676453875330774375583884673168299930191016296248660428869861967806446770316416236099980495677410764104177942684643423815031607559161758374095908339570417904281668695643243409380604951820583902687842981722022945139761503262666680635213520614231560774506775481016401339527367910666399657502130591346488526960387236319902508600294670717414396175076916712383689429071376248754220236714705067462600883965515816905139380181610821948962154904516519777805257691996225276543469019374603722268432369302187877498587162243968430150641503192733036308157414369626160508566151678684819134388626427795541490467905686867736328303636456434438036015408454198999380072653653592178423182960897392554843439823361396828983925072895265286413394467006788123274948375535082223832466091094105198597800987401494611282022603982670710584510384879898637424152397069193105773155374205674156246825288637456932376739537705395760015767595579783763755726676735740321409406220168992253184626959458371518634777785117671652287556006957649707132791067527790680553763240663045119300181932049677624711004411566860209562960123087520442554438823972829792082527667563759871681272622929035879648176273068617994076181258045703349380195335557177264829505973292770527774895952707971553953904726148558941411182731776410451111356083684577780297176710305935591880308284074970981213731091895757477325479283696706621637147460184501396479652312863742996754441015753375668885055279330059948181156999354733396587953117305977111392935256365260890022794146330839099711632648806955860044169593506936784223189122584082795033791314178700694524963755591303006684610930963152014942412475226411211276152184784021600532472778328538979463024716005864778885769934261083462076516824446086520364047935635257683615285341956566792046265182295095764144966087247851321203685918245957247452166023929318699666055029692126154155603361293112880103579660989153181456262733446109346710287085583345611497495583086951174350901515034875206299008982395200883075734024471125693481466097350341527087079545392742822979453369423526978739826852712332886539449220341264127125061171199019961258305321603018951975802374284832649882988095410229372175460261042466927473356056061986067885146201355920285103970037494562503016344155280016261727722222620196556738118631238813083223119337242622230987622258304791893850794990810308925541693864735815242935977980399516281714295567375690945358815253786194099246753564221972343768848058546305181241796891752743369936063967677689586797230017273961323739316290461680717017372604142761630203899044283515262756560932997625132003425266429392417640112735718365010124029807848156651658288290612565239943185342472811594420667161219690546285957038913733318976116122067665858342360689581438207262726453241756244778113598711150035100974240251714214927783905073284855386864438044383823486794861250456653951412479645274043872724926989339214819507090178853684842371975652134341541931032680658856372555520630075745251985181045994744546134838100714133819011093402458053297097542712236387355714672458857573172412741878997562054957225191914159619700504334704056486074428945778210180200732804163463379068524856155569787804479638041351321577886345238694862070710711251084930001652960410210945441373778379127921854005513351323418498787077625095154090502849896661458481933952656912286665405418422593008682193663295762872818080558584959972142975142640519015172174880597046892976843829939112059966265371523717245579756754856305946301751387253135860822817153190205898184015230068892776943734957709004119798569435784052050343207976444060231514473022730090325870980383662082111881694329359565044363586640706671651457945492947557954203504464285222865789444525558056059995533534806960804426530188663604470130630618642692732973762298207623047180097674912019585823176373787819237238820582753001315772943357087945186023348306344878563785846898031575507563322765748538901293082653854102450537763702533793059018658092264560159200958848841732584676678565907581640260236991837579533140059880519907865749347653287495475796575877394248495494188729873423403051890626222523135037031760524342726005209497038547218592743524976956082261465142057851546632747479253529578201498545315143243347709595668298801981249604342184656909635070798297740560336898698823165628441852613229193689643391481244151407068672586607671226216109764893782138157532668473914322158187401628699398625924733396477828276775318413860945218377230326494363357795101856761744538627798334410069020634397139165834923760070185881359622368216792753043149509641665844505605303234263403962904305002543086566029505123565835727824226535851694967816882385065825478738644966057640691018175743180596897968199145931343770813301578179584667241326211752333058368623211848868142835566015558154631929905036393117570611278163590873960633887778155412316938758978685560280869864965563289559183288246573477323272798608692142337663296825499625605440634844838168384895324658533295724913501729948410188964518013186154873087177487200869476691174563243344538131904389518169671745343571535737885639753352524048039040057931542653199171316956051895694901894632509685628623115661313857309017025352068200601390732995082019755662471274330906672351082576049863871210847923141936245762591828095446587309623027467233173796504527143559768261534190820209204095778667876222956995038307121319799941272450719369475478787125675852338370005697414620587012483569469638738568464304048620828940043263199188979439070310242682164439461422989562033583990327405666891549828245612862131882793120396968071406094383470953181731214921951451688036217886110429757348528429626508460557942263403750056091793111098575214198923802174250211782810845668790543500562578466890658281285194398137249211300246088461252043572614562094389883318013752783831827784857247771112897002569585165688546273861587783174872669453472798615130755709448472056152378605053899520559404549121196171674198390069981902358363870776096392036092577940660197226025873536632512059159861317170213440674939069656299027053621650984083895847663054933764148855221389224438062909636428811859444205905820018936383920362816250339879787795307469053323991987067544939597724939586674833993288678943565599998051025778260737289286238206149167209280993287187696827117325484718504114104252783276003480646806371380334305469373724354346620305461106901089623805464187796613665378606604770301712915681170137985643889531352270649820291147040505749696260920660085872021443972397198327206121661320777077593433549125851007804339205278756875877951422844420333564445968100564676212763098239329366414407367861289949000781828534916662092354553362901256178224142492678345043049725293931074750624336778032045755898522692029370206301404292912455380120691671667390735971476896308599017899413375914485775746772173930476851135116695912055937908049360857104279573835922415695136667328813833521636690586481427495586622505532195347458608767767743599549275260140532818243303817970196284518676276136664990396893614978189950792562446366089622016448576926422896027830286198991238969806953308137084694934147835251481244724656687234373417287469200049002122568497405965913699718733930294310979030871225650396944098665644025497123951009490313842508922252976550265609032050121284467224877491531002719589005895070218606059152328001753193002929097434017470089821955037365072835951014460811053436233217255992243774343788773329692391924134430560258281905124278659912547183589080179245803927157089043415238469621211312009515534484821879337100509522426545153753707765443339762468700171942615668871472297421252340896853736997596777549385574829578628600499216304779873440233115405001405455919238825379818562688147619463314833852978448179507621197197566603222810439759999535546960320574972878247745317052031693908537610846035314416290029685318268976632202601512647268067962822218474264704657733895794042006843752429081854172825568078744859754587322041477551706507617248512295962342547682726973225890945349200309040557383761481477438314706688642166431015364914053354443176325299069597637741699421403283959463268034715372175426080646042659226783091235009244404451669400120909113380466120148121352131178252062124078795159299901464490986329693587146201999895594757750735473844442319540137477999959296824672588445999476073323236634233342627513131000267079967096594771232929668459380233282940944592174382759673251229513540391897161815114667253549265658108463993527515820321046461557776948766139700896410119714161844593922445762491286790190162062247610066965010957886979846508426115855161946581940493318666681937780746256940241595939714794216048397272034322903486662525441678960205031784209719672157855613840957830097344886823253012264998167560067036891757603917443159513055756737577601107705162535826980455137737519818346743461120156300889403197721226767684557018625724758849749042314681880903108978839888686116764542634360038794945509048889793452897937191267081148490147484003369570717476115082963252608888112385058668062315175439851048325882098134981823571947522457514571791281672212365772308650276766659874538148322698490537608387134579395201364636390350429916212661709079523339852960253252982904898763744078586552501239441337753474366464726238659992088495879220226406014134349765291568686987635695696821517200933897064827470759258906556119423987897994497969135845997290710090103837895866128304565260438011680990369966572433157399979809689814079167954438593066728376511480111176495629375487791916758000130807582740702567174658110453767714314730416593403726274300295483843617754403805278693210264667406377091774381910614075365891808152714401880120746204579878861628219336956248823868032097858184016094620151697493735905378591973247981417949432788782532385202983709349272743649834238157249723342240924445930559037989336771582749571788867503926541355829997827441969756537149238980475739209384256387544317100721078391867864751925341032023493169911547173040491668605427512277700870256458938096784701718961777761740626881091942442693195005376288457897349839504739668788660822578645915422049549264143340028547423478022862559120625231198723083741909413813491328082445117906933854430953604123555527243255216603992981931409233982053881500529136546435042439785940279289678388705014241980419296241044266369608728503097040469512215691033272524258311432508312335054460170493561728207704678544711034575967980227694217717151725430073935816357754759781830479772644868838014454564293454813736493944506329566232291692508338734966992107549488747062177918213437686312370870333329914181627328796299438942561389613211063808405328178506509773526115626370245896090158509445977289827895978279197667496486015425891142791155917605889582145899855450854653230897200499995091665873961464766843129554743157973346595753879620721658364420843795680808362469175485008316846051726740544540742683296735861404412715502228501872130282817591547100865516272673003207934496803436910430717215578090604430655967515047771944368109027053914539156510570768984443437857586148253200548837705894963854571873748117730605422260198856667979317658172422928388039415627334715798293066169858456109734424210546475075495624139698953393974582309604186985508960674391183657153090126353516081315458941671024891170607969267553215521183623370016628803194624300262564502662980304340671914150098533875231247242984563360979617684366 -> 1534443191092866285618282673460219726129945737014108994822294658542666458269433217984145501442363835026270275416328001777570236149043680225632683315816044362438428169242892417229825414199198996131369241158371118421757406859023708937645158252472143489275074864129644604986088731002467537815388324243763246135042352534279386883655745837546905215702659010007637018258245930994171602954593790934337323286311961340418556466484974678158959157490058064261012175893891385866356897470820531879089979798297379257327894772629656482474741500251613858549037071295045149954363173781835035252569212786566772562855845287816651530500709452521306851736067024072569345584617882603464924043647387290486703700987157315823109905288070636478255228682501903810603742160385834161015242488580527044996684336937815561253889927842136172255507272132218285636383164857902174836967482782139334391582907072650536893255616810660238877297159873870790064338140209677256247852043528871312254008804964870284468578804460454740413170112765788172855547308417906054644095064238571192593465057363056765114741475752259136163851975608133932118319400844410720601531242863093424076758136424958095971840441476706727515539253905390823397033463673318882741045872494084508061718347722513044187251331065503922657213110539887131480732639325560825544340400638303921571693936096315388891208231686898620943642712936458355171291128548653997744736228791952578592865214586330443452884004676629896441895483616275143849805209607575590869998350936624709265567135341406051664100378146036752508120593152859054972923498098793845384520938173397002511731893957664295713606132052317164928517183530701330359033082892196892603492844623826545542825323161771600190183533101409027924490117558713295000801737325530147755409621651304742472363251136328873631983010361842976738239576238786602679190953940091654338072195766298681079370832368995761607939271113982660099451333747707608253127639951419572622180615420704688804505197138841652962972014306991582887320553335939221221637079986699914256491195148441853329146051552740232621069302259353312704098234411554513785462445663350334637358168687984418816859250019304311047055280580116691628501515853923897731733821508810438767543396324176095783648258073787041697875739177037097379310789304779948696570804919949090238005362761359875832637613131414127244566190487766784140700146774672839191189153640846065950175373606228118299917128260543461518431037385766019529485237116988863239694084314593484266249485595313267507943464684844566281150815081428974395496968984556130225282049487076254382260441066869063465130765145999049035343459383417299742469963318878192534697701757995815847767418563154770911274768149858348948535622546627282790419837966973532846599265440566558741370511717472911730116085238167034456079546526458723821269422556223896054897629348198554896119935852290655921764274610894711626301266677331858592153536195335849264935273514398088921868108846486844174320368324722798862232525717999459652894090661193849947853481520757354577552705185862873495992544841299245358461651602612636693648420460362401439608708146449563914253669051160451587517264317966974103948269553517628478742731780341308114678507243231576481704455508525257902662173219250744895326310716119804011989473496894003253865554650890277398862673144105671492378074536703192510641512611444845694702776663143497380356694394638379750327524475043467393268661773469969527034772357034689600842955543958254071195347413199196145463350498855053948345247194272110269608117370669907175846304413047806314353693061691103172881478238008970662997859032134118054018556445678065318415877030204738215798312588068639451474256378545703235507792293150958235358511942480793445048818678266368013811476090081510248611184448903918045293876615867016434138889858047733866640266651692764190157619333460841804849478116318634590961296813152057678040214286115242131450776555047217357846874585669598626776748154102003726023740365541376619765132490518977756069908533190635415941144962824759849608843714644664850539123088262882295764549018713554494049322408798214946918410508247939911204106068326828214912766944341332819116058380745613795007522555036507869535683378466942010907355714843173031066656926542286587313051224673244805835846145842041615376690981096353436777729114107769702664330562169471316730094812568814672215232389881745338926522774727538608695433003883226675174438902877751262028286311582307306060812765063452433872751596371840631300238771931406439243265435162870301911298613193930699741590405337029020820401546596653190595441539663853757278402048545407982349388425933054222521080444095803812931420152040604792358011466463302812658528289179708402918777385546232277545781611759662001871864129483598606713024196906637980542701162391593270568095425524787234753164666793323506177295020126842375354117460908680363820612348614962770857080748037620646758119693201477619702181600726806670761929673065227092966081221065039964696071974010207679059638014101713944104701601308472935090635458044872917896572270650981760368660339195364089684493945354431026160108199056100934212089580585305309778541948790023562079432652663790200919999333907385376271172652310989512050494389968536380349765209764362952286983238435685796768782044681130757865386189797145740641483830796822021380386414913765119739265127465312992298029396475569133505647950608102879442420572639656619386403542835787603311068148967954254181749187870613371607695743684467480937375478979599617978248542656844481912772182299752680541945997521580097684723911370806169532714804783070589648905818829486633385821710500919518605903796182062896711624831631187042757678336300407273669734010235511907985292636532759246373834057997413219383029807686912563482690516812194830080325679448372506353185253016069876732431750658409611764460398287007452713629931254834640276964555950912504172926685110501718149249882904699819707404911930299809942822492565250232896996563965395825991190132606193986237844215360778341460069289515828579491283155751468168946078885992981624180122031170699756279855316082129924178505410800736615931540398367905217878206242850534340775973842985911557486412075909154771595628758214419420678099357413247820522987762555468481207238240348578745355625463283768681699707552676722030513412996418161711668920696662518344148487777449246480305716597953630101543734366015160564140248472305867735541378679674097929345252685820133733450585733952275129028020917048044858963301969143386666804527310930775859504284682811531743915529493622714648232699761377775785486213320439714470620762229855226744356607029506477846154333281722658835304780792934809004084184740809010872427710380525495973163028820972599685580750775604107964486252601361898804863657434937695824200880605046417693971667098137023381582295143695371640703960280952997764198318505291332411155337912164625592780706415739418852577473673546807569656536256272184693849765504443346846539673679934941886615214122029430206724120700907002666858220049272660884146929790055813529982359933397158398734829068448051494892328822726308122013775215158030039080626819917711882430025276067497164328731632398569806670787217638369414717674259774728207078339083479717825549692741071904098911611791767007505831485180237252517714533717639875896970961253488869231367157896427375362466282061567157103622971283655173865214871284366839136787767779895575306594174828932557768667445096968428870147669328704641966394544531285902506283164374929380263191827527890973241685462046080974889643232322545771119072140716214503430286977690269968193617360434044272650021095368175123029741293505798729660429915211113360993301268574484623404468487342555053079030222455787745662719160645665972906095022754129754622177795261517280843548508935539868410222570637455579163682784546038044920949584452488279666363181439796739002921758323233338936729621109245273139833863340001267864959739906791540738679791152005937777647293863088023769842364361318844955493269525982962464029743918583974358454340970232740399768640799332868949741502288474259721887888690006549372400848634695352969883650204614648323373156082994106895717622007677230761383638608477221193449203047707069804417117767578517822098915089433671338130192828710817844731406048936745852307204543378771407092923414050476678099618002470123863537959838665405797184244410096648401096805065861666170363761070153538905348136911308484896532443867816477458320795647381824960156083755944561877890061087016417071830060142305884342880428016819196527489439291692437875679451643788816303029439612441831643496689863948156299988122474833649334436829144932294976336344086386927192137287051802822977149412248618850572860029624326288553539410109578959103598333697852509671781477020323804647536560838965932002415681233603136420351480048124521818047003901916039054025730992739669096841014853550922142921101543933763098819589663548180114239262339913146277344301085939733546183824457562777185905106223491880773280350917671349828808675096336670359831239239443476797747033961774162784824056069788248602544694171569958006616567806757827538695825911600326875568375811237148880388483531973035890562786942489182216309490176210597059553166333099917395123082791440513853954847533249102160314295241641498731486702547319563675930748671486618590137632526834473890336123446133768063914715222382865745973234741762713864724174485196102242540200861659929058263603264420755510532640984835984286610056475433447583462272653222853824116279680309387922624300449340364185489261891109802806327793485109892549161964452318489675454811162724083126826942449753796628117444124132661153303642139810739865467913344169094912836063678229186017586746554616786083950369019893309088021705150912423253359562716243633891506562624126582993152740583678581618692592637858989150126878878321508420773059866813461412722997073434306374360851830084420985825573100585390669827279881917896963404025568493353408989966030243713436207231901942812700828388958801959836608497765459251291595073828907320469013964595633436873542453745362061128313978102840921164506723110979085891251914613691294001469246915891829775119620048754263025885211446197765628814441937184557490121711562939142170058136264046466037712209256084941085846430035844404032042674018110687639740950678874507547311196158285793270525009540675222510736670509085286967212998873244443958798585721352622414441598732846719896944462751416954132909990177694919487725729009409940448579803346084576361394933564349613203546604320022046381261674593931502159094944427505740879505761964230672105854111572025038663278014467374292212811432219298696312743312813993367129991553886931125950953234496692210344876122008283842433389380626765911988461352509814483823583555495439095344550129332130423437141817145798534576638403606280477966887361277650375568748133174431910377019444223177300320213415572891801121025881874546849450030301656080976979264735686009133407543351750557909570290074812058664117458661222940286945522587229091515636818186994830120595254011208185887236778707646546096827138621600198381961797523700352545242243180884260674388405073194552029517838512168456752592327052500093612784698711496185163677504532151623979045384708722350374318004259003206813162403579455781076804607112916115965975364801339175562733505663259580160020941891689692612374210733971684488988186936580071145143338938796291338348552996870579582824867929412710270456880893130773177436722353344436997046264587845600030777783389270101981307051865851957606684068951672398341240916764574886431856492885407730562900106534590575404739105126315625065495356648141913235273217749329591836228186019413373903427670100367587094900206300255222742293567130806605179033341109801390041441543505988985770052287737413516858832468181863956563141980851049357959419913300852551792980109366057011091706646517471515281216325807230643938468122513249527073133223055301651029493165694631247715005959650277493917070676474062683 +precision: 58921 +add6 add 6483081852383110482723622618138305859040581183982263578935907556595336606720270670369073295375205400305589153695077117099292748839458739923769765896065093082183038300060087490693922933042706564071055964610445990840363785678568100187948499747292231919671256289810980973954348096793418888138061437743914755659975227496504391141400854593665267263838595497272703390739179502441370896491198791339503400107831484280492471375962248812867151036570743842852560535064691394875090950394187603096877612766260703502036095988307792563899482690239726244667199962069272470491121642365978723324730724052290522737335016702876270556050600143865836897179944554906056627056208154147738294436146557518358577357917253723946923204021893007266126076868623778186680772216904099400074072274854297407449647108869201302777090861579202375577338793852692238014497061439552222857735951077168842996159728084123382296042640240051282213887410509387978648309690083414904323421867262772538546599728455699961490516306947623938750228244626345881484779552625078111123260372891653568890250042200427663677562481764676106061242280481095009842285359341397514075890262244595637107725239999583218306109458798294305018677763091707909122524181845387647844735302720102495644564051360027025971659128192809232028423032741588595578919397686781293884443916714977824173046903509829713788667989421568326792607897335983287304446686156420804987773867534516265435019005354224645345809932141252008351931768607309725174357137881984296656439333942952913211121473031935176733111232933374052217460308953793924144146157453470785592357604345672103298941682002717699122050985493905017750882898862915958263569196014160590200967831916282944939749495050957985261717612919070248718003008414131630440547021818174075624161710618623363311212207425676068904183864610270142432715193685951743206741723042994193655443813382524391295893053807644395297227733388706778376237146723923384209331462377069033586763728918495318323105878419135796363195643425753089831550660684693882072093912370650981961893008499275604697892032125479005032616941570129744720442004206149178107056868770104066310476845360809645225634992971841969579954606173503900628402858560872181901156320161905530252748277659496208237661579770399786582812321620430892489459038929167922580048086201413471838095599395900638443780061583277001849251972459833527736027390439411955356200009944483144770739994632209202788343729871353074456624699750431763813242525270876339148448254643745959648695278740483479478525013847585308762988265813589793294113562447203619521703851211170374716018215426279676184392821123043205969432273171604738442881030694038932272897926013935263587034545337031456278069597806770198901770906425828039937356401870489879454029991718934653561252886527723713710256472472068200743103012744190454009229074303319181930427249914226726742275659061313818701932324465868451304793476834063248544908749143232479363795851611776904336641235634641831905619993117379064919688057152010192955406758312079887585553470198889274619781739854453955727750983803723306296803841330168595170261744656177489199871049405299578495874619926648379697157703300621991636468051547364000977588748708415098259116009040777349470934457601519784799622071219922060036381237678387043435164570868565242788914346644025548904803491784353290828804120452175380127364562694765357495306044846966477162407182347279789373038134535777119064700880893044808846061691020121093729440968370235046749520497365029920041158266608171735766781901229341321031509811719611580760684206124420246541262142520906125528310451331511148429570170590096573730283383201895838454533803530843591372071617849605312638350707246643669011659897667226160359949715189692222844916808476463151977968115542441722292718773524594052283690335366132319103644815755573853357303968180391242912133348318959173966194434853831432906346392108164405623446677917371328702412793765625056346558391735753701824389171053554034933776293391060113288302502727341043084741906700498234579090196752061313600609121326831062834912026671769213246654594749044023467134892106365758080714293955313406636666011954995699156187043290022750108326097617040998906745433402387377252155228810254241000166014543873776981400987149657270459858014243691191059113450819978675501310881193662486336101967435303881864022066035208804638007382718542096523840130709546186774289895314227488156612393707134546237577953272414566855458480419150478959499654279098374091426025495257346311859901778012576958569943329255118475807731072231504981124125647885124845569209969144765085011176428544419024025942173772239454928599263081176125660114986522750485240657354966375092053768498259606292017528027484520719218416537617638159004779429759533065024579725292860548627054220126117769991796151361272560548290966615126433452790443771874754143194012191709760561838621711284382119904240277797353141444625445967206062975091116132928675669234805496634233086428435055061355794575353111608017668204274935576274560511640302677057046457979095276767767780238847132566528858271533624101753951645008999392038572578827988006951474521527191458040988278006811774294655569899123627205872811712432898580981603634345806061150012266640730088028752734848181655499555930241792551452679487466816805956051558040302327080730567408473618468764148577521301556019394786228635213375013683760710073121778793858456863731833090873231776453002992722955243415105143872019002762689552034821697883769908161009032272452447701568598040219661751281368999857481623614165730070838535274564408852153014371850926486348869727867141445655848110965250573438680237045820684898033307461764506399766119336876443547080459901587893626368418699469281156380193759945676686638555616855334451946960816969767389595297253108411751022404061193140099268143257594655190046810274112860736654047982057693829111754383000619539936199444362361262985964439510492158424891370984658452442444286300784153566965195979704985051939259491113470148181402331396718720122544469401791619404528267318175350902321558724872067452425297330147963579119241979459672356754328958888009133702907041017908129078198324659224385508517247594668664134966687608340721717364870695406103887156993286003350254537902069373619006134616019400720501798138570618420098776077468024802625992320339112947144512507310659274005151105892501149708835912267432615625228765241593312705671643162151129614121508997438380446505797559672985515814406637403033479533638276263140243515629156387797881250576496582117156710658393198555589170256333047121347960307127555770412816161153337400456732612738834211578429942720947870964041862521941726195516172664998403286835622794248810902102002099777342946020954722942656135781047699662952489233190001172297196560705287012746880399208610328722568285317604219918630828269139595486550363473264669713477147366648606899587285177231149548016733357146969309059581937826496463732205948435507666755996524112077914994713685389775216725890929427713583445535648477153833176533291809762761060784453757143939797139329449294549757180663638042172528816215839861689925868662253644288128054449818306862455181434742179368599963723826890402435340930927404821849953524936819368368225493528720012352255832646059866732441456077757390117328678746662499718232897364066066012729587577750227386156755301428404288085168637380404842908548961307318405130796677967110911001926538437307945588237549050539189754942385174785664649286909616773033925255413394633328090492935880700948660479174713012876095052281950544421009603864729576702379935386061410629573558337324925058592072489527160108154553975514344097661279524358627291380726992426018921312443099949987575435570663297339678971662761267833950216668387187276818290909760582697358507592057650211130388065684536140601129719415427051802242260683563206677045261225517031399249903167353182087633105903833183338607112133747689865066130389732680860054665230049333278052341043020513883568848921816963157846093291823586231109669240346219598661174295312492941633911858062084195096163092782422700501996059997057223171251355765404888841098441793857247145796361933329209263354083296263916367624919618235730717174676267319357784486843982434682516726857447862435864244165358063576249859217802941459249097148752058190168134925836479606662919576164323821216053137821685423132711166668142960370699454537267966002433652433337630072142038279864488744159422890531919017443136543876528571860319961572870131974517024652685752379418711761122763332258977560474324905866188445278561422739393211202487713800027371318566638301225551550696639773999860706535122543805812676224647481003164729554952749486248636450658139618706768707115169026291710876026787904505153528319026521710577374635083102452947994478305434095190432133677545834782402514550462420715095162020100102799073453775903163497185733943967148717570014454616339250656155240768012120314518199113338389117063341194317891756011197794757555255011830384960681155290926037148830090882086249756210878807891305897637092799767481789080236651036284390576621836622918013176658958730158099066733380292077270285811700519731749547458324223571581049111821968815609757634156226562531306826473176650421327897116660936138963302902536575784486836792655713672727167122346473736817488748918995078803903709841356120625952098871217372560791141561737701980364658594243138460107761056831080966735585916328713633336234555176378021958717896035833900512981394951039171239431854624420359303163422174555232725161814750964260499957989970089642825409084712916011513630440097695076988348426459082370864527856277042445501694443423231615505221565822108996060260563090537847121936072033167002247304442926258388738432807625578498437510231825739325564989544065226745150105997982097909950011987950963236461542577296993921128368308630682304828842870311015691567902237234723160265957645104733636603387997482427641475618403011141879828388551647721208847953838146037591677534946137099024045135456954326508643001172556218715458009709876249883310318366145226180517901355664554320053076477704098473996907642168556653312061568855613202032469111307023286857957152255652741191043551432700870615337325257534149085025704034620448594254053363231659174367472280575037398921646000508342063470926729476153158820366329771117050402102747356765288377608917804498594181217753263091237593950373456346491118669520567949750943958800374924091564490221660059290980339503138446918390048679506233705639456481561145003458657956413091156222768014487161132706487518947471959823454544824579414748435592935328080071773861226591937845012582096509513942502161050135105347941349848180658515596173215541878317932291246292500192402689508530690590963031396971503904725085608573530453840762966301164846831326951135693406993477078102266495197655686407898306326904331646256535028145104401488799610456375766021665088883747338788420841354113146058773072177271448972302085714902117474954072876771728214364167523946342427473658595285702137556009393446825500798983802908677947385945729894770915306432311154056024842074725690118691880404687067253598272286046657285096347038216880143405668909844469948933612718776134079851527337696915137399991135191359225892859344640790510828354419496452892874605930760675604600307105985312733818018165151999478455780717601889355942902703178980418576372262098579310306889713327832576393017888794852098627158567604223581195263291593830799652005917024026347349368573147055686364871387445433754841003889245065421228569676539406070397285252812015583911784192350593630602871762404926685661344954924088261257005228128521269187196653521694220208318685489139600076693022796333227895339615974267765938431358735706417597935458179697346700282931746598531558413721978468106909690897889932539858064728006444590879940708494370733945413797617861322115977113616151966238418875401502895640353650986862561752005338837192330772678484191352817724790480837935382280976578893289950813918244621280073259058651877482902520776902024319502476113584707463274185912149556187683516861248192173798394615264201092438994224461168108200720595473245601851808828167896944402696204271500875157052663462577203478397688897586080541032613992292319555395046838785093985638142815522401502100460844504473276565253102484379489588696561665480328750761451044239459768734554312562812951669897150039411906117597871488786135367773799910089951957904047792386489904558231053517463271547750513182202117933093598684078218304346698533501614097887664923638224131031059822546255169343536869892565402098821029464496173514077458683119837335134681363064023229981104508908877232428215658107291269111848128408844535618856755674469202284197853661614107161739508861681400231505062966841952320664307434524194208243959882835266996040419797780838105017097162485498051328122936503304255267343694839597351792801099779021566042439787444239720917709335516140145228872534424534144347166658052954325118548926335597943021748282477684954544385477821013192097218371875115171682730336948328365420764107127067792852437491399079309573235119386067078981618891354445704854956635649538639099409124780552760050247562326775540461730798027504291811960232862911457846979538081982178747450825071931182359163021321854304432533002107971329519742308799565804202249692471694479578493766218845636982084983332955131212065032020563721257069566256114079147733490367630484449269652403710429513075656031135459279742464883301279114245863747510160955328516094628837248948841694779007969337080742499319608106172399412674814363957195894470795319848892467082445632127033586299943045960748288444979126099544632772038578781536325824018950056428139952259403590939056940957352148133518060368051075029371371964263587227422791403430204061786989867787871061880647152414895186815018792051687854573230130720173726051179411887552583386104001083883351598847799620753273890637822108274820489555068161100710074277343373849403052200745762425996376702642466223377890365144265231002237244016179559606705406057819658796684402338648792377074552031570604695072651601519000265888756125945134808946407977170095105436000012358902598358340490216162798661169260495962385663955419216264658505260660636327229465544799542775947242804009206447824897043445527778338196210754107701199809282285425051174992134336648436200465011255729220845233456404725877310976141524865139205932856844908368026602990010300560062542188453481649235105630151486584165646112722464236557752337346888636008826707884060543384550329769635476525913767316346278466735134051725767668317680745090626493478780732638902048117295695765125659350257111493009766519682191426244689968397061379353199610486787952479909694654344540271484931968914881081033900286575673891086476438838504404726592762651268886873804039137111520436026288700347852493060783302186785245779111420450235724366677237503569283931739355898618958290643362765531774704171285964785922231679972509107915072379966972207622578956453420458074584832423792716325839154864880427051699015440257034744275905476652921955573174294431394593716096956640692366283642801151369463808946127249700690609593182817830431685776340775007737679157239690671282110232217949460338574552411537120957573390035457269192747783685235995951828724010812422475496473008834588535310584373825040308302840975405911581885859485122889691807034864060109206186626910079724238227639954518710808564000855956734967426530049580636339496682847218618582470435119684094486671960073630350828378412465806824438769192728764603116241609509037261915716511436314631288825057068372766306711106144973970087326684000006144082335240707566323504567471260565380698452465956142412477805885789401968748775677097284856586344225664663934924249748519391918923185806915345279475927902939464640594152073414497453035553595796693036763290261685877396371304686868305749515813056940743219979999232219265354184247211531944362579382059481702325145894637931679756526669864582634216016131126438594917512704959343876056021943460895989537608928609164177550658910248579103310348588481573212182205663060712285283780879814930060715708671145860250555884872555394382526331346983378654106101744362756173428607785088414702575747360348129975625245459913367709476116096593323353073388350896644009396376652097315379858985307310153202244144187981439537253728453258117970745451858014997580139515313408681902192746131067275781728921169929783926740741627819039136364543387076808454231524501037762007025441565628579793800613481935690295769449311917518626307881067613876037906970126549870800546131333354760844998232825270049188160307684676016002330211609937290685396533137404806230133354541047319013139372359657903090498413218179273761927875753366024021068506283333203201084338887626278487571617241897997351822435928628801369783248514428770925322921056945935028607903204314438295159456732774150290794881589492973085903394138857858727355111641881472705944378311898689960545032568983819432080982708888610341249057106319529765581098804877550229583045537345285219856456159253099445115522584990188401100703060435676914940384778293238390639593325865467301723009222927109754571574535632355699217711278758278939371861372875022460853434672912093975684496831846152208840998223365032546924181262548487286133854496132184604307454190677070328824808208670798067471900024232607154761294546535809990862855330164170042632764913767449626671632636279922563795866747838383609414080695840512794781042427154704466905436399749803333970210123677869136105761242311161906182866179169649273137301223836541034099178562697410014917465639714169884647328607215378640326309803464250618680251076532734053741576739090900473474622010106332328170109105236063644595721016044701994089591414430665273854807088330339118413460297183394085805582521904224611114552469579345332053522704337118666994618792166533742084665120853650055926976910793549341560425778812506109779964957970128060420880305216426623318165368006726547103499174868521578302774441511038008653939637727341105343223215171732330446727437996652620928949612063298508261891257864263333337148679699266331903131687238540665562786028 6692772740050266307703081161167470927523286546037373653172255226301804188359969448089874054375199753439920139518337364460283923951106169805967931987921976159365955865619837320695443080206675408590129737183759941888255789233305582585270848819079554197887613629195617281166652105824745296362066628543617584600236255207885847621238457560523333244731594440574692012162167694431991344811473785841458175580239274893229055296652799943265101334399949300323101956145199023641139019254302128310721180801550141809464199617594981048958166543094357852545905517370086979693425697707053109628301861231016603907262836233126572728555765793334722834356775126811129565341974860509999690374903658412120023406431343356716001560940773612645563348931990432321289208715495086802313962863400518375583613764241851701220837057361632338024394356146674185079162694840065043446005426174122560275961937670804650394295985579087723792216942109493940565816941521355454207378060502032662606936548099815842627475434804525912888397078267435735510558346739165006974233252441433481077734676156593340356021827680823648047924874397068667578628368158034303890032001773831092729242710942678521579875506933569764689310300444220427825467805636928033970287153408150431671610471093302865717105958260868370067346333719877558057963353082800706076051280550320399283708922901373874208695371747308123275762131606288168022714545100231824979676355333475371055532580352846671004748540606217037709891157406856995447643269498007845462518226877936137550779008972638473876996794460630704799198550804332555738081159674866178576862586817913458955297628731522550031866599875867649172138380152639554559258732578262417549128237690534535188997155140941353450575168301991883277392777171515602948962496633524103708974959552452007802580404024497228462632878379364594980527570745855099798184623385145831774740880336082899724571195747276787575446428545171780246437737725357675230201555541320376515391788334809902245895773276911330090200494296680678260467494857039934284210236712936406999863255921108390348521187640006739204490211229724980693425301528942075452915186402967432738103315215080365149876479262301717216669674573601252281611797361801755812205448041279611706969391938747074219401981009770462799840349350781359743655841358756609577431463693528064204538340854517163700965722539049733163877786765013857083852083131502873015317472672979558367882961581673834144077385482003433737150232108768140538724084613231385709241802298624813310009867961368549420766119096535079421289560549443252043011139187519683796683504102523886449799368536076065534253971357067109606235042324929139288840992326660699141835104545511457534319717828998372048845253198145386506721490051495557333766085007513372949389236890737722561837852706143061359000806871133674265136711973483941761935697677223550297527859168261662910772029000444063173023019737029129680336664122048417417213365062868009727992506062612894923820683846316733878842665379402262689435069258967778041812242657731977699053404985441311180285480720102946147717969948598673140943884173832078993550730568627638573372722481183867648029667186624068830684979589524719201240476931511397147997228619925417198579040418286779812598935908645807661324760712298777566430535015575608445779522061493189703931024994150727054480874011417049440208285204884249053210476108114088226117199654160777700706002779442601306843313231780839543503453047327748795469481526775442229844615229769108895230046482022156919578371663418207841738135390001092871460260031514082567670147938891537691719627562753039958041065958263007717458773258677249304247264339298057787619244443033146639047625928615164237153036669205958371695428900851691381340574386224204767107407979481339491299310564294864511770308712547699825542187729277198382787277158464786603565269018507414600741510590342126387333249552332595984921320095337841470547667275531548880854576741153147641034558891424743586845915433711302078823417239771470250699681224371395439221432631337428430370145997939611779736711239901095043108911602420948952266088778045365068282846191983488401883304920980536827856243592877961619611930097077392154529387283841225944503197123659498249681386066725692451549848054360153570898596665148072779424496423829574343831349867649235310902074111825957928849634659237802945635955553934832843948322754380387431532643451569014197021894099755512606634099830080807300329138509138681171008957514437176841934264146960278448194637943324040811356269555279396460338494147541248246695957683308783815485841094946386044279539890509879634877108266697559395523601393701978819188376623479237148318725920346014541585192578295574232784031758229390602504098576901991329467455862575678965641193084293734813769882569244213514244359519057148443729531592183085316857247409819527897137199408772757838650087144560302342232797289274319084121773929045317989426019059830817931886650504629299045378408873929064417441913724351213154977015297484239665351136717586653866478102413477560141557256047136072027587314310878466491634127808669402959298168857058690286236395299615548385068840954197338271465977502452272131261954088449240309264097467976883820259441111671343585385210155988037068960181733319021779750759659333960010828283694192639806697361130909929882607823068665604689473454580453587323503520452035678319917905251940128064783012638925027489838395703085836439950131844470348439552392736585811739745796067552121119823801504568006649716357554881385651573299733476409717368630990694755490678534500487873362181548663068584467276439522761652952462995020932324324334451928066465238474748906976371052712143815814053605537462274271474091128378569588283976645260946940043290565958557646810138799913851214851431313619571074353776374851222356385760244064794303396805656960131929440373717316177820402704831011164433193609049124940278009435356732898872728851007448761535394437135825560271549732777629842125793337313499168227051442591378900163383627308008465860758418870134665882361605350846054702392393947494301522114105826184358302520979936398441305121481393526897912301069805955942722264186303031103584897335874618778455872589074143160402981742435551770501531733801418986976932804197848770591148103616057558395479509280373895332027658794606402695130560437060139891091038667997843613903268972932474831734649191396215561886257867913958154241648195510914919867406089596390100910459409577710413122393006868624476391510748430226882501030128814036782017361675271962965115268225843112438947293015139723482201874325796863278966882104020480993740852063613369976669435120959187263407075326408711364784828049029689950768927844102707104650424312083535240026266523444820195099379669576835664739854072244152963593909861079538370008383530523674201735827237020104945864931905496003625721378575139354793774172705013984799341351821171766879667932074117639623315720283785053468262172680998726213580043951308473868109312715838786035927757914403359566457164974015463964535441446525652281778497673143487370435378366605048819587267610518296649046051789580547570026313100671186300215791084953903628023764745095163692452850418600875948982700911746290687248020902679191998291349733881921865940949311062907713915934690518248073397751919638338281072277416454796135387389221333256354416968086433937210845275970332915319106907565601088037554933875260396744317619049692454466526119457089695176519716885446193508036445354233693059713506935400997099547278476106812225303076075580616552026606875562341910130338611906165553515147374784869216327802475734652500496631404193430484095458142300989552523526777107677034145589869566250398030420271042434032662383331453191040126166900313805092779320654885295582049173510029284995229344577440581890725649837282881584379166960131832901187974065022671418313491569474825881144663952738894146855053520276218153849413273900821360129662454168001439689838287813954778375839143443864075240195410671916595805983269288985473757676150892764126660697576309002544679317402438595244269701788859722874521147121448104584390424608405934329920053712734503662750870834172320418778809663743803057913277431438216326093280648172194391387884643464663505321443299972042626147745245621545892371196608097791437660411160250667880196600362040776992382339971153837404266642854557004773135631449172854647336592189474507012377533677064487308572781862718759668768927541796184282811955700856347599344374052045164327213731598269407831915825093198737582287349452758981635123671841762838893826634001633101409492779322017690844263620073961785697503024207660156175366831149106009912117243467524652451108613978505865831553863310584093048127483901688034292547910823171500503308325043813135533074159769107460221579979597770653660039258635266947135614429374661434414223630884445378835851149424058847135689842358307079245023413144233771795248168630985693467786952472820354042428812691092754288243225412840339768986705688594493934072222849985831388043541492097740087940883655163867852504889034846090404825403851183428696546541134161660902074820781860928020238265716260564065806610796896189158117226217447462816665282369728262379556319411497913236628692156263501289473034771089700547032820203865637315582398799154884310837271833359153643875263306520463178593053059298834015990794083243078951533822018240009981711476827790220357945161440416644768258071676097017580302759753669767768136982453172110840458210120141003003991290119988805139180867753337094751243705694047450107143749712352889412469616141995070031478719607664448771450370229833157852503937208537035220752056022701592289872795309248162297994114452852250505987611399517718058027280905275998948439125774710168314444361729353963287709458416332777773177480848405656105527645630059890483147654078704473570945403630578362394871174875114825122633278294617264772509470556669135994033560257308641695537027029000201844432254474993853638195489242602272862311632209947684405267145625034309954670510727443704010754163154929996486344931941131242817405203295066790877762675405638753331641077169392647213589390970119234548120773703648912668954810822575516180301231052318214466606848197962298065664302384218110824959259449530643326943198928936626547558301460487863036891400658593604841727263164946293481938761526295073316005453800001631088261621345853350250504207451373886486643281961789459576003533405006591104420941914037655944713064005261822118033544621248768605258224954348084807680269996830743550559566255512702516108710337462777198820487938563210708898868516613191766092269416278985358673316090064236185420550690521273345778307960589950182666831307094840555471653806527206578473444547721677650187023497428372705999694450166702597699544345314000289105370468554253779977486126927519180282753134710056362801746440972985678799222622966529057974274957369782949026251307394301930779778458611519466864731397440681683403342110995629234709616948448579262936349062054560544276648732260493019970131015713654668519905709698954284643491486763423910065661631103544727538676110911326346831133251808526016248283456146329484629220215480710358745705264982389449685583899039827320187894162984907473012898504450928703977356464137649003968862504768428241351242160938918118123774129119971837140867528074695363958684739451748039639898754916515293790014222460471678359901987068804221071182024076373549351766228896137222562036008737004737201906233049203719155862342732884423266181761644853294990622287606265410939063152180585670959378349144423870796596356361569734532915251607251179045222469626291057930951499473585990717858723382378214106343314420937673255940793237685085147757786035010446766598190333949242094438706365650499081707306401314830598213756239100727206118720654283037246359168856854264395874154659486194941113170204448394952581672791891878503540552806320184280655000843337009965291500127346618485521337006136751287902472259327548138544963780247566377147822426161352398685090134973630689147980720116316593931551528463358519597548936711715372234515770794036825806076109676794588878228244733526464936371799218412880263772257169866014229744610061874934446207769115795401103973190387103879920299131326472972329075601365126587677470931614783641184210997695319106926579062714150162505936512017282642284611873505535327273932547221722691008237621753235405850757200215392990091905948150679052593744727340090080040686867313389355719965278048949185856924865685241831815211084440685334012524515171562767336309066121302134535662362384588230663803817106000736363393360204370625019112139294194547471838840402182465823772202650517836584712785757946835091034436820535883090145281907948765049791508908725644417873350146910113275067567861394842932177439878684667701379984432173561326766868443728413865941863142244392623826850964149561886229434741413715069574430655284692547861410987586778718715403295367680099600678985179675429400870010580147927272397479632998005643640608366157677993740131530706624866609765257613920745951102402162417452144221714923898674652578913435120242049246553662622988061739978064397988990797023527245061201307647261029131110209789754554372826097383820707777741787578076035361240441772054046540947783933972587800255335435867910175186939692817458852228345129308206981056519745633615925512916355980925977316252070751755732953200474560340066762905902022665933932441102511863978708495728970185760395859929416404727593027037956148387486767607719146896533524917712157726197324202851920813539751327103001339686196122378131103365320266069329594289108024327254660865367687101744876476673732041324363295161602401093290460603644233593315194752050216393219222304426995686450859294893262078387331955050017426186586178141056505486885225471095452317522109382446682700270544555915216226726049109315623034940238490960543590166658412413956319097059991856297075873100847227287763327161257654013909551450824619533639002079029294681841955467650531981681667468718692682014521608835440631605884951576310611278529299388137632901037676268005427350054168803017210659020702311638293516364508496265131995556757316656056989265819457353796018035979233261944233281004834544162077441724856711423099804407779346959914121840509609152731054244203398607843148329688151866256970141226006372674493420987397324310206886318922131733350180564217396668250953239572506897512624626770670827479720173462453642388328227938467123024167933832817238674028017261830836778070227238657329437505919429838889495985972041352688297791616447165165210485934895016335169921460633091152388642404672970739387985525535791218401628765219976400347289504489441378314236585903306268792524011139921537130786380891753473061315632582071576576006134950981376462427358071974153687320488783735080418583944197824848271727301365304498685387407227870314626382941783651673450469216655354382475789181354744239702631008204272974766977277993726077926059841856934047585498401755075196002638324210102075740871519936468810797226133101629930469621247943423928669117266948986456963911600133707888014080996037698503531145484789737861198544739503869738532086324307758652323074880440147153398450572727271266539293732798395929065944461147140791287043280333783642334825804099510135141756930798903980755155394285546742048567172121115693580624498066028151218791371396194919425538269850032915831515268032093620014155163187484444628106617716688995618564946610388215826926143538876717899213505300864986690124835547228616440132258058770690123609964289391048315268368677640744617485948597781975073538825166798530956810580761329925966470901440741886916109909621301345159107645764657517676560322616808015449905307344697758787808764503668113150259919178137869333313880400902303861571402107814000187287839051264645100338109088263886277219104728689878004204701005364100686968082326431166206350287328836901712775284464843509459588890124071427629480088352211241579568018209836374606203193650392200153651534989973184091274140723332596196352048749577935351029112488845007895141467453409420604971465853914010744868507539499599081824923338020538569788183031695319100022487962122547296844518740342838627731372114331196964729920122909766657030737791672921560984409608358172959884341840609844123519037119310495686215150621245001591435719203428671367709447035350852960866197737662042682413219070624826537503893094304322389691461335059686116731036038810797273109971947765430114024012109750432757037485548926082708403479352519993552126755217334134355415564190437384818188904294298223601017491861053511195716543679719623601295547703299773358023449841521217381867746611651353511458260058171735413587197896249762046143492531454819892041053742566740516838448902321112207980700999819094477238864860158055258639004301914839435607802070837755997494002293150595044721683781347815268257195810163767300382547752397914284886667004604949249357446522221376285696125288412480066771097449700597552863920249237978893351612166304396309788977720292623943512651096145560502214769252304645857700966497989355879988779698107185546511580489684010792138018279331583398860741477246871812026317900042158263742060619407794323193486654728446984354917989909422938341400741654288644856418006926040990445762047413879621287740448847619263722842654292590206815831822162293258854943675789798005366255305656000105623333718960750684905141251207759438492727366120738048222344008823597314603785346598992119479104779133925579387917007282088167218022864210984035642218763294158664165961533988595252044631747225806667540889063862818339969631472141154672352537069527650926873531210061631663695624020574960332528845050341628934761011857018848983168545904661249394446322021333774224091459609939192382366525763858982285814236697852078029187796447328140901225832167200990631609037457212470104183397668813125023723560812527115404720369130692182571557750726705923108182135543640045729452759123361970175165420469924204313079882372822808373829898924625874210647483750542715689672851667783970391720862895715447211368034002814133255402682178834486359092710018465109890214466761647700229601181272701370198406256675203733 -> 13175854592433376790426703779305776786563867730019637232108162782897140795080240118458947349750405153745509293213414481559576672790564909729737697883987069241548994165679924811389366013249381972661185701794205932728619574911873682773219348566371786117558869919006598255121000202618164184500128066287532340260211482704390238762639312154188600508570189937847395402901347196873362241302672577180961575688070759173721526672615048756132252370970693143175662491209890418516229969648489731407598793567810845311500295605902773612857649233334084097213105479439359450184547340073031832953032585283307126644597852936002843284606365937200559731536719681717186192398183014657737984811050215930478600764348597080662924764962666619911689425800614210507969980932399186202388035138254815783033260873111053003997927918940834713601733149999366423093659756279617266303741377251291403272121665754928032690338625819139006006104352618881919214126631604770358530799927764805201153536276555515804117991741752149851638625322893781616995337899364243118097493625333087049967984718357021004033584309445499754109167154878163677420913727499431817965922264018426729836967950942261739885984965731864069707988063535928336947991987482315681815022456128252927316174522453329891688765086453677602095769366461466153636882750769581999960495197265298223456755826411203587997363361168876450068370028942271455327161231256652629967450222867991636490551585707071316350558472747469046061822926014166720622000407379992142118957560820889050761900482004573650610108027394004757016658859758126479882227317128336964169220191163585562254239310734240249153917585369772666923021279015555512822827928592423007750096069606817480128746650191899338712292781221062131995395785585647233389509518451698179333136670171075371113792611450173297366816742989634737413242764431806843004926346428140025430184693718607291020464249554921182872674161933878558622674884449281059439533017918389410102155517253305220569001651696047126453396137722433768092018155541733816356304149083587388961756264420383995046413219765485744237107152799854725413867305735091253559972055173071499048580160575890010375511472234143686796624280747105152910014655922673937713361768203185141959717669598243282457063560780170249382652670971212252233114880287924532157479549894941536042633940250417802144745784122326735013129759224847384819879473570914828371517482617462703138622956213883036932421115353356508193774931859199904351966609884107724857690056942370772958705146701852028899291132944120388184277826363033045337124701634723303318387355313694261165817583962355741718646792480110315575667315496533877731722023020699631414733030559446721121354263166029828326914851004915585408492396477323597271122486878003252403419228609672376123090739233866775069257279343201875008239724717674395771164771980542732227955109082488389653047688061757881874955344202897580985130140956111665962122114206100489091788357674389799260461919480958565784462658496781327609123126410977970997219000969811865284606875184330585800067220574556901875468953752321979437747725504000674163812475224805127773243771886483446143904287113272448527842682890146710837708528478875398125585977328340515457695049459064129283533393510165592460946831932220837602811772693962651880944092930058432492845371638176275959284365795770340269012405657059629180575038802879445721423244501127254863113185126722390679881447767557958608204333940372557641531172546896535959285583600004155644750543847052076960736638271589943608520036619342413902970071751125663328354354063311784232981770083659165486351517289774156147028943848773823034530647541193896242153047973876738011119243778220476875503743915849627383355326568077851741290289575916427612024216455944491469267426106736586804489082237141752109232523095409517486432092914038639960869237198898657512874858909301300353527684406164028891267712203502247093994345192902877583267370506778203987592950627178445411235086487265337012599710630831583539002183951712438523963339331835663009460342750000925380345832566732157878020938274190162198920683527089388535417738298349246482597598876293943464522255547873660775798973387100142262855484900882224851248630526046875501836614876979933451715862598233930552299583814805343239282510667520765402944800687627910812212955305488444264951602094541684809658021589143637481955705472922483955372774161115200971311789413983000763246493537215353537907091781553248026467437933587655801433918426058652539620663438581387123216171333291973418908437476796366722503688755540288796609966742831510889848749859654644719888284695241978419549543567474218274116975886560413273978840906868765026825849933261949324837800256488996894521626604386512048685872400193317124645972514053267878794462294537074062871413739183266213721327743544357877405538376434654330589989852544632592793281156752012102794635910985603466241678169323115342567463685276785137949625595745431974054078108734561051675000152786268216332809872837351273368804921861589442752662925117862818614302505115167304355082091117313624200656666940936583399922808703699285628433872194376373075792428718865462924018490730278943036248744019139432891303340788596253158022093274977931191271306000303709690269762071756627932415158889890252620835146872127273514167086961487922910150149396172097947073049217735901024822008055073106146540465315141748543722712046806283696852566817669530823363620923351432275347980000916883617815070314810671858623202451776557877366587153838099274868331516629379119912359694612972302148666217944200716823227477436620290811373688139301332722888073769980182562893317038677154985952797055950745451277578560005303581611147917638208838471176177603013679646409324446946152317592486825438469468070185883260580388044121165970148475464797511266468855496536904925103389524095563764126451933263441485059146490887438160879323278628975292932343235090113993413201045886595560716931256208185220074128426577490880464364206756427643318159654497097456189868192155137590257210351763396970250582969710569298396623080838977893636783599851127899977560547100941065883652241259957815089645629305204211160181783221995099004286973120183742807295369669350776273487866402429207522874133926090201199025129050172989676564530095528681094397130166229413026501471208028461862765883411377780944988126410579632206479982840541692545924397798525300529583383006889788823620591510568240726004222419456847958156918919952679854140290798148151463706416139306391954280297646518063069844215691764807960269149605686213695312652458207372918211239274009659790893809902005401013826709282173955170765693349796274279675406647349990755885466941592842505993940273218560894437342028366300787766216054102612232971445787553735196642196783911033376734930713670543270554600944437565742673231182536125414634453990518170625905157247437374727461946708000428071354164845163223665656356672867253094113050199999177462458419528479458975229864633424793753780749613147689620085457386592687598909500183918600358828815070307435904548154889135510544845958916716905068053829709689831753076386242152962361112168878044729242031682473583051957618873887592597969475912706527802148726028178948307501041951816286553250290091434478031075259969748580750384980514853829677028455609751024078954514368284753287399269084004545836661323367600577398737203404275544946005930946103895182578801875114297016803365468452657894397640764757265935985383262978830529019357709000416552174031024802691870740140315796011956281565212505781588575218005182620562450586563119012104361571596263188537145282074054968729118489076167947669461097707077502291451774695425114228193541778757412697061355345105483281440766475696830197653484064442081922719245798717560697306103286139105160137940398317707487494011972444851496272434030907389492074473660574175132681502926405889469770293396758220873458305786955317107084159967241796201857866505820228020494814833041069192777142127581238431185800164654905086252143319850967974478995236329937922528601205853612714931536878181559850943917970684239903870805086386484605463157501171409478139392503849312628029567564575171597073012321267360727702132693718200266407925108562560910784021289808287282406725142874602693483981756615361966161367687519628963192127129293749114098967160517265807633444067186219018880825989188769270858277780047758857617467383076988214332453311006434296056389740910965821660673026971378591388266616787510595921692899074051559842277963890342117851423334666768164520104398455930819323313218732500190078379970915518715228893331977420101333104264141325433211706872006605148966716447239787273337328675756094981670595386506612796832729498785623520394802999663079849463211379335112948318289061393186290818037596215062700223601654517564069362137567748106920496216816738181346866093931013169524161646209143618261470576430757357111382489365262623247324944123942193240832474356947011804431143405306566607158231524997903483352049189084053234946512543334467529246570178822969904920078731312780340743727497625171332972508933197577418552237523911443699874104679196995874359630799186902874166474969817745949197010274989505941309311491378288227107670870784918718794808115946211421511028444149481140004600618484935374939371147629927547031880810997609780257280667341972054377637919700635439363704903632693235612570772853038565492200722603755683555104876019128507177984315888676082383401104371537629550132799176106155974903516972685071027976378612722377757454054407127868602682832305564463317149912427606112084712856887804320580460285080810327528234840852363667619406085279912299744037791567238732479777803215680274961246566248174490055565179963352938443001195743568700968557052877169354932461725219690242072103338167024913632401255633643612157800433159642029667710032487980927572283523239483505797129951476148605632956340411707791392296259991205362042278298925024511427843320050657486135733466584040890323481710265470355985276082802091762133333999805967681770212653755335711148711944354641817381126127723569440292971395664031070193073384717554873491121210497033138675887860182342559262114701423922129598803038258383307970955657650399630663168681001627641752259909984963484151091921197252292168285721925773741062900435813046659101946905198189894422446640759127856066190366407556547358396376639230263657848844685425204636977724237232335245806067122202925574540855364900714412580036277554226921881409013884124387215523648273633854318513319726478391888554018224211925793672331478351949938331526975457510682668722323061437771180840705009214313438745089951290828123265563272617782859720810121640085288014772656943021213987249979742748456791376838967970150379426186936903396590657481563674101604269430922573819559211231520554944824317453878654873689746611788158629296944096659393577105549527298175314509303102474184437825861763770067952444867342358858255285572751553827742176414288267078207011702663350696737890421938826288758640816256206835447443789610999356806075915103145779785442475289672101857451607360998315642845108422065382371673207977498644708128688143213583082901506262137995455092743481862532855354493743509776253800612939118987324540236201366066103968491655496874896828207145558939069705661657391810992729704889795576437447973513387429181976849891451226495420616356805871236692717401440890254732164085648114527960895351908949942369655023748235849720603612960585932465197826880003371161779366759231772634754908700539659862009733040020251942952397246006899529054888550494268081849168377153646317107602200881781916984874552976719275906423561847247723086851903647401302996836115157881574626282377285161840780582368238342106214164601715180525797442072068097017165486098661530881145502837632285619840699122389946937257058789394122460602161104077074881821664575182340366379290653213994480654168958286422699530402346232650318942486989908370490860174198467523966386663612145272929025801715629847353726715716112166316929711415046889747799858203018837370833575847965834633182256399985901284384071958477553687054268283475189204142429337172520689397539907419133475737017859021674842397641554464571138717708644272848064566550393865501568817885211867505586321367920920521634516256025600421783999733399197419567771083535990715415608420891506871338846277353834286088724976786681491425562550184566187075747907239627299107689777436936814420367544637430042037944734659699879260278196331566412457404675378867443949748304683124763552316871213705064381434196731044940358666693422207134485833147353975893301765492181233835121192626216752877667309173975083545529847002183755026745461945213973604942382303548668664291934680900764704439518993793106579306031980511886418974956467799366457809774129760542992102225574192676133444162033864484148211646779968159341555109324902292272498389533690008757409909171782448085792326882977030026566162955124213077015615740824214052209853935014357746805980226722598181924341241583630114440155678694675916184445879801862475985795861122785132499365780509642479031025742445431350926519321358819788782009055140721596955752434695651980162894599840407056385809683870260037316881148366559114618735282033599538308898272698288751592128523126531384797659731437694598889232029491372225819566823557864871617006546860721995326087619992494849747144822953234155735088688084412539592360630484162971588922048011588836002231609192944998622589470825373005072435863052306780421031688765881853582894406694480246228252355034573151693615592547720664183743839005804228550530516040134630026525488759903344176147127947813319228778462776616778002072651740140728500637923232642223015129641018771000272821359174563830586625507800252245410211905392323101092455557958142404643732909676628901299514104511977170317744580917696970810403041744841161003477608170369211134269641346070299966539705201061075739648674720900467980561653964983365928834399106518985720243713279422403144084894156213412957978058370111184916059904886753100671633843128967755870217983935357207796429585440014916797804424606200373621905731672303830638559405120634441399940941964734486751162425265831816256394376376469449424742894450265330506547741397144072976081605065068415674189379666640052385099973858253409846432740191775215930204453180895333707572483775706412448499302341222967358332198361436293438241901707357965449817873654149491909876760336565081830480245378338528498529665212621415482052344304179503845996482890792691475215081774852808065847716203870032584737238627561251923691078977802281173483070303973186400759470069387495299464218168718164437839335697324530345635750604400997499207897996428012147996237189585390493121147617574333371663167715660172853556508544921016032015276749003031963060630126158993188461673181235213084698652310864412885740524974087755080363375409685128568897452561889666891078749153026684924028171441986906823231265410340043525500782097345806642856279265470910862990268382605296417724654697324940394543395629649925817955769624486128370475627684557523983730732869388253055663461188375427432292219628102125482104144841345890873333547478213574008449261916257698270578839174791347735008945696533423469678039298162410607479365839454817454741215724861261368702882925442166794855809479166206708022238521576006709651004164998323106336454059766777307776805285023392739724722866379328141299806641065242911722672268061136427497559619420903345355642356975724175216214582060723919447457125244519641715288400205888409599068536075771113829817507997133280756986226994985859697691584975139798087356013878953527636637072615875410829213600109915765383680399815212088162085147820887997506467915861449757175564673598166472416888827357204034724213558978544335826553610090794026737185994203184330740573003277573728858038350633602181725431600001394042127390948653959722802470893218593078352714769716027684823508691808155478255674841012032714790623639049720534982269244134873406918870018234169205989315217712735640845301155695924805599878811925102026453936504305645004068330853550569164262599226441719721705262142537208621801418384718243747403990245882738518007419852238901266674185611110026220432941327486093551517551745445440367420281909114385233603632873252051316725940716842390192698846582859160017621653688751099062413978677862649279495040942305734991390495940531189816076684552501473233819635798373363527805817184006817767731967202893898688507057933063148474293819833845939780450583746165486377961559180706549017947616291105859959886696735707530602179291214893529768023637745587344225850956956056392701532598628072638001828902057883748941862963448748945454704872818393428029604303093462505670827179549944144240979958696112210830196865574004722068325377810442065944496942884917491873532081333605153893273684626295372076399109473492609104268872214192224418066971614820842911854647059036957799486538742330532425615515143554852643524121948243803394078909451553880794270547877171044247287105198399318969349730263042416677244365379764998835350183202986186354445515133088224813629770536699981590387071227814933219716361692099132116840197677493619623051381190851815190982329955549185872439725742633857361770795813363861595088961556950393691422872836597970888412102986320287373028881812210128788147086339000436129616483935925272500598006676164322777556024338230488480255297220715132114063089602662769998885651815671970680456233594526349142465739957862714193214621419900711788324515321922489769647383785445552733504282342035097639749837563206537930091985837190162201164042176510665571319717369762551986993290641043415857390238879074264346884763796779463730592705467495065598595588074069019379283259500778650191442879460155104205660208427068519853450396716479510552659166359526914860788438084619917972783512535833648571764939683528729722335829360842227807145907571254111215357303425207806653682833901731477104065824541958868903326928145293480890804509529506505690988176380556446028125049079169062053317157200710860321723608119061968238938662383100364449541571252055303107784098422391218280356367754477800098796379928867513175833057436946922237989761 +precision: 32857 +add7 add 7649525174024077925548697245700798021991157656876501384288107122269222389381388108275716503675793464838005347403209931329550138136748507238528133372318379316232682089983216320867098909431627139554232802290280559004340461131394172752272900418614918524248051877462394522815327259243864604714141771824454449264794478754702823778107940878594434110719092669602045906529203574263128762192480679300838902828470500119982229992152466591453963132311541094386371149490141446350530890680728394403 3350828985299261875337060331917406748962839205055159656870653398953106084206458655557534517216051318218953496832543608315498091661547426242098104870824398296081348468468755605033414931923389120008249452755508139018817289919359993630725866962747218609506469841325278537446820197597188476889178023108230265856126472689214527414202084189761826084540719298799873887939695641323411298390422439375023780508626523803966362624313296234939449870862658687699459188702806598247184070153759575391 -> 11000354159323339800885757577618204770953996861931661041158760521222328473587846763833251020891844783056958844235753539645048229798295933480626238243142777612314030558451971925900513841355016259562482255045788698023157751050754166382998767381362137133754521718787673060262147456841053081603319794932684715120920951443917351192310025068356260195259811968401919794468899215586540060582903118675862683337097023923948592616465762826393413003174199782085830338192948044597714960834487969794 +precision: 1856 +add8 add 2078237151414188896962901273127106752985691360689974319389512778768936059612609346165611374333952151213527341121106967033122222258556859117281507375097254886019615645474274467526524416203500950626784888709547355893074716394238307289533281637803785956972045522630360857862529497132206180925 2172782887777501793306560691173511705427783813413002003842054155115400931533466667989312745154658175060779867475583877952572802400397607655768480107254306829444964095811153975265032800370194294616658851191777365801420331831476843234217972530619617470730334421631958805563039547705354887856 -> 4251020039191690690269461964300618458413475174102976323231566933884336991146076014154924119488610326274307208596690844985695024658954466773049987482351561715464579741285428442791557216573695245243443739901324721694495048225715150523751254168423403427702379944262319663425569044837561068781 +precision: 37377 +add9 add 481278375686258730947714316036635474450723585677343135084910290492789041744545573830666550021674427882130436362831388628102100108310275159663089564554648145777551753457107289870610331815949541864695843485161708120752498558454366103139329262198429033004830036501997060066149805608242793583048515473318575342564808289988816245356015587409362299061697723096742735668706394420496320809504908667754361182525665888174558460710863875066646176177720930944456191925591912308563712639136915017926397610593189068510038972688338726697353997021184926416882481030874910971991911138772482149019272948624964699817386581386405089733094457614724543286627798105850936994151576784462907369809143218764022579574200484303903377875629442637737564209241843043003334449292014617529535865503270704776736178460400421520625516662302371743680828999166028513268917366932502309445072128147456768532532859450606142931175071406245103789555320640234363444845855751399194903221230450331386442622140613617131585637262471881403034779869680486151846849433489560797467105598357538271721465138487300967317458665385340703814694262689088463633261885959745379723304706637341677530099815422945440135933088839537241667097030840930260035508131244374175639578881147322469625600491670858042870527504619303640867796369375424256383284380587108218710601902152699948269714060503143348014011371890701659103307047333374605400085056809451118316004936495171820775833717953214397907688596526137961876442555640814744400238984960971856434250052239603084237268196510566864637174601119126807741905281172835717665759545254895305717591830526763706064561491981392478428831044993199418803533379978632039355287486111472597619538988735123351763797536717987888699126539928069647790602427829572472049983346669113407475984374730907600001514596343500430312003999666828271102592176433211923308441249592620279961546225248477097794402356527541699803335455672637993727928846886364025471598577991707711762430317651048933579646428705975213557431924961415916300955860074913701753759238583219797316277470559050018172210240589681124667140372204313892673714838440443828426544867167036461608872064383133344089087886531538873871451328604814634154142704865786583973840974980495163190507793488121346283394145675937514242402072473048660221206945152597159609221194354233066170067941721225966948690062732687391366714607542588955404584732096746126666920405896926446316379216754136952974835191580073376587897283554102459255452395878353929354941170477938668665222427715939094463186344939664964541008457699514483443373839848563220654449968207285602492375982811780451605169770917838853271720131417766975497886676688223410353854784590408489465786034665580974978034489289528890979940419777855830586923300927071663878294653980214394216959712215813540869912278874152546536195239863162981139251517121253359981446087399829115737864127353627101115391106313422843621779590772168087534295723442976117201608857014158300073759383465516663203713158569326734031809087537274926876074860030861554610977002679019746453857819215904058139665436591890748505814773521085827073296003847757244276215453786532591831844286908080611228956268995576037758682201966677407968359299281641701886468949046200263019230888637352627744133792715745296971752701197866461175922349748154138233898341592587983479982391182513372476006794747942764579312705528085457167684234965635976902369004193894566472403764696433075058564687965186429371802603455602187203144424299207685318232986522987050486800721871867705536660662248186361249229686790970711591738099666611550399824683779591450194140697709626017345629047465229302712170249860992369017385121328541344125981961762039846999398075402470986113379688457527963286422461534524332491073838678109261784813320002592485528320326936133207020738988683631496412694802718293980618029542079695237251030240267484005354151342492557386378217539274655913884299788537961206072368827640154300747572958945266795922982516119153838209166405460061048071895959754568359830869510448956341895020805717748738534544673261495263803130341356448639098533544909408485977502931877269392026078046744309044212497989178384283061566908085166949032661362434499319229673090424229156038147594680914946793132768732367082727205093776854527582044781280904470621681976240333111636595972621557416205443080024248312091769393079089604909625802286525080453876881793493732473806496041118642675962344380861163525683076004407974283300399153238727358549059216377172297724182599632848639686834578181940830231647286468669618498829700604688764993204109693340026045328503385750519113539921479979578893526103957880430050717622149570936073015694080256253651657322116589999626579443407934659676681071656383456711291621601666298685351950049975000605368153433093440283023399945779785661671006345206788370980795443532785948895848779855503394905743007637985709546132393926173028832851139212184772928308584357526300077715767409607138809059742401824644110595239422346703620593715998240266263880879783168863586547539749866445908691818742287897130853800277619772042240434915679453923690938768501231263115174898178943227784816355416708061710883720331944241199224079791798559000202533640120013614764876202836622680311811849419606185664401053582742133642602218719426612304114439173488669247734730650659603830903811056107110627441053585729815943736412169556400944535873190661113789569475216633075200465500228024219295556783284058789151381018689017060256058102396890183429795954583577341393321051854406444158733123469299915265847233012874618209460111471713927290280585744161177268330490517527537380053935777702446847244463976898654196793377998490757928144979314665004135906367777480985377249251504226728419049749587133118623689303946279762072563924620601282012059594519385453879193954961826708535233588656902314776120533021168359293610268841369821078870395082752187667564727495677608325823645269471972254494523901872198339304285773625102735264086017067189648389625975436716731911489129565658829419968921588633002755904208100908852864202295491568358654381101554932197744288744440197041793288739412357003180844364985329435549972555154857041588201623213810616002126758372924585280352600663703180285380698625862186622473320294995224182420786809415905113107285409299957066986152512147235318584389274937970142711414567018133155621512279975881450577689267289756705471431601832586242013416119564240485783016850984654865880034747523053390750863748311445424060494652975545534781664105475623110756647504567540523706885730492168266558654961323078108916427889673140817587995180223099496600290059194411789134333833456804676606209884151723775371906660258181059689330992433652779516286379508728645595804460734169825924136813499492773730202193002659371381988678422297163907575302435787210438663075513991125355848513461377186304458097035316763100325067261982342554866092918187200740653919559336008988688271481878027633776320757415599966548858367099089921295738518379563098511655845351967488975877858030905612057888171675135220064712226747691100053307891099787200328454375522822405937788825551941709512761967553208430103138574028859573235692274159114131129181369041048914164857042979093223582190461490828183834515769306377409211095208701413066307519822303610674147788931123086102761100258677617896828537092095547799478165229154678950177549523488410017078574901780244457039086153234068623046512963829500275348681089820982514275515939380046984556503232194402699722388685531756500651236283056217209040076130742837294108294151723684079786063686046312740338027781359145533345182489617382255757964020926853551719451820357229347893473001483712771672628053917392852746540151292003763433469430252511389648690211569919173624585651771828448911060318464723329043953975560226487886938677329303582903294110637746675737017129109338318960796909526533157641678460745862578846978424289809073921420165881732360031218057368145243488586640424979246147589164128834158205989388246118690299852138382454980625112268182252044490625842516799513928947882167669002255182968843042747001134673337881764231436422108311834226234304490913783444534353026379033276949023420987919860605671603877834655609578604846575497765920714307041714241108520778948559134091498441770103689754816083385224372769109027546075821362417373364394983141309073175759875641518196347820600648358722309351559421719806753603470024340308446261146262261924110342251199802809182862711574975978603370873535485307999146169595185797159311060755280138777677350737638515717246716980190232581416553894328969531978969976736853281250169624601706352669636968981652359860994925920653383173728311013217187114684514297834960331581668257280688366811545939802112455047569047481982616111725977562315462557524438286243469192419979620182131839100721274983162550536806196126059502034061852785654523709465730910378454419197804151103338991565792056589526086935183066277153997702798045014095770701283212126574497090112111288450943947103475619462397718795356359467242326993501251638308087576280570021819168577479500268191017546589926830371433023609588523272040215534374261864446681238320410057579150937438682089421929647600295910920080739735481179394941534194830958351891026269391907631949151708773140206000041134949235804650775274186673917527718270557342233083689265883055699097186772966888105292859215311892718709182014930614916123601641851900042167212828198097322111694153018847809470709569229131680330569452316511230715722143032113674366455515154178724402221154903049384618768009469179879467625706983481295660973723755910042351381145225327522040018035437541510989488998223616580416218368634165677055038176144309338571814416293862805972348693327285635434084924532545400545743672211826460712760456371289408532809983128046572197637847599237520387838272937415521575048198925193273886452949749469118112744777813682154482947157234303215312795850536707326428356416295445907465341904437432706348456543712057675770814344030871002497696835509753940390261986489661466052066624789292701859241879178712112036774972255404986569396316879591204165399263599595420369202983656068729618184945556525671035759331894423865150914121210098028411425516039622865419625488399549933092926658035097460274514832531041696249049080345393766062141928630367579678142097124604427661188591130793394590476166030483131495153327156119106430917111231246255454743494492072312222163066151935126411101496245605079086465445293282199831850799961047367055675158846959942986306366523228627649004450461664044534620431525158648313479322232230698489009871868658014555497280347602683784703424759016690582344460786632693622297602478352090128346760129379658425251643463663062446693638539460488674653275818124653579563209918815559861925308203705172078009480645191257962703562748130373326476376455201287859382696877313843547099435915505028003357315935226471991650390334269746897658165822453960471224060648036727943406379932917040149649096691690251907750774798184301407946220423779014714763679307794611184955950215096983026922048761416130481448230633952079301055104360186895413120118504897296071303400098795292899215571404423343203533152680654435929087379146231879800800233299967997180524756080896846124782393181084658749571358024877395201827155497327852525329414981239304128615347615923871508584819851357423053559013582376991072557449472333042747679695408321815749434465733256182462435228032921614902312722927976006011144427176243074296794826750359145130023916214931055709728089989769749233596452950023306633904475487900376985709069369307341910366865331093328809257277969955842519147867397706717649775800426430701969721303841340854014267002902188989294704982438143185337576268373197543674486949628717427052768331743480110495546248770448321169550489524047836885288907471699650735302319130891915123959108114179229919584960548437482388157900043692933590261702517579728845460646366392709304747596383398999451200049645111285929375476773963521424054980680448668619948466696180465733785190703506370339612630804173821422663469018543819148823341619470271737917089051241086999778942355422231070433720744769049460044060841527882221832800067570381368710959159605536984165072851151718274746206007208569136039881934759920611735238324462192684913235167521826107278719468492483424856682198665299395725204934659714710092029126416899725601301617805227423380474838526950428954008239679892622473360463828394464052307729518914325189182425015364133336222207555792935573882680699706132096595410912230262764058758426135152844512783823320809622713254443441210806663065435311765623348442601162256985529435408784434354884897473804637593720351024656839436011132571799886848999303371842053421200666390001561382764490816289574841162530507873035998447817003921055547702247976192069155949213750889817669973061839985973744801749321323127045512084784435975111883874068981704815351188257629542493563437282693687353825999565538387772677122382190702179607806928796991573650157061565738663116608431668466550793866241938829565428258561611415508381184959290602850081449006927991748373337877235087989534749577823882079695143560657231951948071715025984383551013716221096381392522753671920741101736687073411179802396915807493001172749451178588529356165573682557708325185410903416062545287488924261879812355297275329633870019937935719883088834448041555312841882033417261925732134467441319689491040351207991436649624236953800369131608734096134719746105731954731408001943113819820140872839363495431205764170468168993049098163851771479273052952085433758676038958117399267022185435057424609135080479719992385282521034271595249900646055178158305725713067702504251815192971077649379825774519312434537943569989175775200417979527169274253245680635538397310633773829534328564996117730373630269993848750843445881429353834510253315671052198739289332967135311378808337768775866786876094016422836535004381985712242413054517314338922930385164954930601144439906248715424261600120527926663690867382547422897231401802332400737446772821879446604839650831879515787520935705458728803128728607325812844647258376342730768854520291707930472853204525422052586457390946679259226524441048174965119328229264421870801062623432084109818688097794397962151191511896789024788347379944725324265730702786490139007673314085381791 53930234097646099850904108738397197256638082770250539835317874833444876079249753624147815792173739161156881077783830286538428374956744538306967347280109364576997748586499876231438708389292138163166250964336069089986247644813665720704943655480871769833341376530432877326115223922992273430306159679878364935470538836150431643440363230774712875951681117970136549299972505514575603034783967512685008238197070847044017483466524086694937231478025258426541430339618801071831196130492553937592458391865230646497373122426712656592986743080244839609748540955405018390509283386114657171177928794550143384357146161423373538485553978012743536398155322856075199393585803162126695069461284913335332537652638845696089549623806830025499930863257270870283070440304929482862346586574764501125959352399492940256539938733766190869731459017772667661886941858331783201530246058804297110457220757398470593346341307433003934074133029655923064306200352155234074294831634896963949085316972787692303122148768378162921954645691196412463109750960244451051369713558197122241837344418290200268437169581544333975958662538880888895180709908590990507411803732795911558474154045840186038061967867618411004877983762917078308255989223127910743042804779410229528752251268894525349133837788008949567268326416791965988879635380375605913370739247075036763408617660164588030724274902651214117581028125882057465946637868402533356407271992655155790369220052896127166620445626705643297034256633526526920274907753982480303475679538095281128173593098503766992071397850922591608848712511632722132339847944587147557476563224753654908211930014613781045940587648061970915603542699150257753270307411183179448947213307223197988405668757336507409129954857786054033864662516097245890624140038109496737885221718154033157775180659510563537418746778747228620342957111251821892875353861631901833211755443486428563843341986454341028498804633770153441943064430656480562191334111765736109994650723381123460702966406342776266502828576370696579401953505625184137809247049189083686445491648187356715366929395644540070936866406358875551621553221160854244807048403710458770376771410820368495368530950561714090500933139341562246179345274571327101969627207432329432270000568929928162807693458150661561446641617533594786685072212763352224093210817411862855212809641221185753307108554728473109440361698690423889510555926228073275425664551950917881194351260160311424805433481400443817242904173457222787022892609594026530478111710168577128660715141924930460951396062328638849239858691896584625252762066018286315947309020736439199356897870523253717189995721222820496601532001504233069967982416097440540222411077432807481995832331066039266951440050942632587235524075120704772927746749393479869518138836307896550337499328192144050042567395659819149277926088081354594689037426118638790183770246536437787444503894533317201065305426129898910418482687973124655806925463255075533347884876630397474164853884871766861344328079496389539350794420570160621770283388821604950769328044254987372412303939020355749656452122481212763156608732410473377754040654370469781954279923180767565361358117886028928828282054876670099468472820601266993492498709211900675292752479361307596014712872377189980188044060781808419801691397910715607429059220878364976621458547291141230114581792474939094353028406173180881735701438486605944153992230566637859131727506084221873968150270596959378480414205887791846635969047433478240874650561788810491889648250935273297417965951352446396702910844413952530504028894147164173419779787557221034590436333514863539283433905137090520187171130046417458370240311692376326777854135569925735451222471279459850087181088671318069120231150456078980342297088759225280634130308790464777433638986023516412910775635129758757929293595664740849526373083759852558777311155551276154594878301880509607892438093412950246033471362750193273886893111334915250568255001353355145401596626931285329539424713951238975678149544759141352003911620561763298718546001747350150719516831000575063823700686783618038870529038016931595802807990712543339257057682218869237132933093209651427512209449269654184107298411704703556792133560407178905084989271775239823665966966818146612136822352170550596645037606835209276293845231094127108948802558368070700066631954237521995523050637540969448427057801524641972367933737945872808710357460884658983659978508942878989779939873522792673641711947314340170638214950030039942970382503867892565997476450252487875313431464474808802163087624461427260580665483419877559494355122100702954865112786123200108818819485415251189105827667392689824438025117696648927764808524127579062462769606357253613083795676534612386721819733929517065004482639284005518986777277258551048557932928771283025094753636541434740035889939613278906294822361197447587304341703359461648742756568853624722867751434080404440817827746315431944263601219631727141553395965197828766494702142623364990773239803559865613416110104967831400853010177271791309921881415568688403920622047392058695529301687150965512065961956015694729839908391189091250032255393204467727661275282632270225038186431901261256285731797551439980678991678628073010340234163294735301553762704194782638496797059392884635431795065057428177021961010451918187893706433359167686228709728634119463647976385434416782996485369239746517831479754421103004911692497136216885537896802419086627094364752516531411166235401377797368249718523323622513011488301827517250455889802420742776134385958133731331710925931969907011452719603337384668227797635538838680413317751562423513414572987962094078823189126896542419537260339929781191237465273614819915089788864883246206046632732455928174724881724230336579800800710985436521966132572511820203491824215064123937475706807521848895404445577116512436387865776458173250219411353885596153800367355961255172166823393518163484831757298031356654511560942242298547003958566860966133465740664173782216274687048490838653226660082386922669878384739113317301242950961801146897924251333441080557656832414870232533775059266659743239655450844698953372970302071501146087345549103328144783494729026062306791759992596035152429898162542756644782343962055509599840722924501976029974281252335287030994498517618897383091915066806691539435066746091295896916667455633438260187608024167360854541021659935943537976637442662461874981939287319099415698887653647120252049418738263356121618595673431891502993953514002433132791138687506333551747663826881114837057962845209357522230730637949799112499380161254971700473775034879824589202977873164327844574590845645813355922005549240799682722385208383944339677615064658209801356664935322236390267730624889872690660365498325716221897423196371516476557788418743553542763720832345271694567964994707502839450830916858201969775844834105726049076435884286188218793104419923051978250909199511185365388532912141029425290864296621416921316375393955331827663454720596792438361731995311635773296935784849716198255958291239523572352080214594610944143662201845862140884202042306376186134411729566236805965071886760281887773271632941763824414078622729738855111729316726279093688733196192932268274875272367094571812845848953515518165222676215514617657998895085558693868711090911364254261213092167859046946342431772366815148685882837443466320433292197878676108190451061811354017983237868672814641593598141268205571869756546554152927319646835528100358184374338697608695133348879309339633110462833517944575955299580743548708023528107327641480480937577447158760568706173022341711150964286498642734399388345835109727850120193820857818887430382137414266430786028880227997167057870470280196872322083363199004415247080171629026014505327056107915656636706351180838250860232183275934462987185364134628696893010251473227146623280203286582091876846063459571850665801189161469617926402934464672170970085455488406614802101545391759791561091958677487973383482682733670507814451030913125746609658194279284506734556114988928139572768179108594984553739147203805583338960261655865051462599956032278568959959195213001604822690755124891081116029841374529835156268140100513770786263110187954911382899895056280548797652475412859977333657060979672141851472896257746274101322067253935964367421672165477617061772294914956304397233663737678462273519766645008696480056897503262168505199094329066398071496114529122415568227514319656091950176149825434445654350767987043883839404749405094978628664428046434451430243129956608866790992918814605170343487180017680229936162699918294746189520485527051677960903442637062915532863650429088419748721850958802163739636946767092433199819150453074777838358025446099000530791420019316917921963860929634383113162355749893227897176821126453495158111843726960043454310750584041415138223087062834620883083698465315987324610422700917267101040551330995611134865609578965048385242124103247485552527546666430458807687399935462702066669903802562151439480502965561060434694611400328226971210442720560240771428748707295685626752182292228437684628755907100383917413198900935945827476449758734801598913995885982441663215590154145632134377109525114572149889513014254916465455795625657511962589303021498759005059957908276656861193200953999244733450908879282258257262633679983795699902077391925979884741372012754360285941918846098611616724780904639690788911590484102468272798992626182199350340919017082288962276778346273967526942142123431036985592564201978659606762056609777072223698032079304229110466991367822737862689952940751904645141544229231626659945652444263777561567797389359723584049076951702467662952814425539946845804440573049765299996414180013283469759021556476487006115633429840654238308688875079336567776791716685166939375733230145875828441343995920469580487403539533091947850333787305395843126788171736167701244492287277139872909968809375496897178637909781099812203527710867285616048247501913047861052516711197994746032026373610532937435536055589733494138891725138802281389444386798848150110227855882812802258880735667173590311809938492566359232078475197640859593831718968481266539420669839928425626402943798563929572095391201246475260256079761414672276730690288798008468675569732997707393484603755619365684859076522301828338911986941396508398628728699665790557972706966818696428467131085667558814511330969314804236008421477959318504527288078806566972079411639821361148296773413126910963186460161187207941556074179616406902221624011871821567431951911278380328459485076442476041877909912722940043619806161908142100441664823926127614791415023368820481723476339876641374550696945450863154043235980231719664745321803047638540999254736820943148519935274225439942209923850411358127395042268185001145560045414556604811214373987635754996677982774222046399702396093786598903019486261526054436264612370713939490505233686377769996140484763987910311846774783810208471704108752025983078564632309626282865690701019787537961069674483570107994512494649607668858277743298187305626837924047580053628325510873302314388817743078267510266219649717893444425663995834244039648015731498391969797297363125410347328144299796017402909067429655743718926236091467476287266899459161702510503520750143361968485222390709863555999632702382632685769785366900426563085212464704926310374759025419369973036289188353668911317740610460666214257107446694136509608783743067421326608907991415626189118417672934841248038365078455769282140611143864568035968578723534755209446771127868269469353401484071475521196560967428996714324138786684214295541156157277035830145139041494996289771324637223879085776323217531576328379301983876386087887942410298300924444517604134041166635608626614720959753892932630763526587745653939685672291298860989972327781573178890104861418184036237088043893694280159381133779432093729034898857803437252146588214404335618280029814297588151702457109048691884391688245798947118875334623532945935637196638849555692607679087565925908762459266096445176111138302029332900503838321165484764506764081906651237264650526589922283764502782824193700329263122539067758633831241432203862895540983791782017828876980366017035896698402817968785912476458521875253420252424192024478862697858425337815404989892904245742875300570912561330590831057421760729975927307134587287768395705681044907880992576348635702794923479900037204004466605231733509711474696207359534889297156082893795722357071957253192596645023608816765307179560605125277044117196646191196485796641424090708010149793365572368789646965261216794703041605336867947180495777056427136561610044499684611207905074083273739690728614110245195779527583912217363653445354499815586537866275952016792881192212740676684458615387835319587767757645092170967294063661574060483510227258022678261714817219027480036250367190785160679270424619152170083524338195813620494630883629723250906334641740909249065017152318087570936942672439293625575287616123281503869702670602029666151553796827460147552009774406893107432949880281235905263241431913027806090535556141195846201170454673738344851455463382627710347852651271251010474192558201413371351888939724528774811523394404849377197377470361327869056590281747423541905510661195399365998374927126789962733184612226866393546904099579858835737094111989844865696342434246421427566566109563964467499763063119853195806784765762702977544952811519338485059463774438236662650208986112601977203031505469379078144405908648555946421192697191949251165295586348035107484292438706997164226934260048861179145547128562805063544074333764904417258259679044494379075053041899812002570729698660602450355735510069400110758866389030695503344081025897771605251992947318107828307646108269581988075504694699431778125056773599937547495803638374636125716027144185767976169847091596017030171589656365197467802188582134009098881515411492409424229576007605809635471391996929719658895080700432220640936438837949900033379322774997482727702784760049924143877721840051895396548573822387338152096106536048083505039222088676877218626828109384166788939452731794818901915871739113239187988800794452842159623285314791262868079640080117341051642456402217099933746691557009594022177007606452963615277295214899174971800132418930937247617267207529757891371863598813963345523147526892757442301836664055819571145243138275899742323833644 -> 535208609783904830798618424775032671707361668447593674920228165326233917823795327454814365813848167043287317440615218914640528483267019697970056911834757510354549502043607166102049040205241680027862094449497777210738746203268031823844272917679300802838171413032429937392265029531235067013354675153196940278035347126139247888796378818184075175013378841066879284968678899935071923844288876180439369420722736735218575944177387961761583407655746189370997622265210713380394908769629468955518856002458419715007412095115051383290340740101429766026631021986279929362501194524887139320197201743175108084174532742809778628218648435627468079684783120961926136387737379946589602439270428132099355117226839329999992927499436272663237495072499113913286404889596944100391882452078035205902695530859893361777165455396068562613412288016938696175155859225264285510975318186951753878989753616849076736277516378839249037863688350296157427751046207906633269198052865347295335527939113401309434707786030850044324989425560876898614956600393734011848836819156554660513558809556777501235754628246929674679773356801569977358813971794550735887135108439433253236004253861263131478197900956457948246545080793758008568291497354372284918682383660557551998377851760565383392004365292628253208136122786167390245262919760962714132081341149227736711678331720667731378738286274541915776684335173215432071346722925211984474723276929150327611145053770849341564528134223231781258910699189167341664675146738943452159909929590334884212410861295014333856708572452041718416590617792805557850005607489842042863194155055280418614276491506595173524369418693055170334407076079128889792625594897294652046566752295958321340169466294054495297829081397714123681655264943926818362674123384778610145361206092884940757776695255854063967730750778414056891445549287685033816183795111224522113173301668734905661637744342981882728302140089442791435670993277542844587662932689757443821757081041032172394282612835048751480060260501332112495702909365700097839563006287772303483761769118746406733539139636234221195604006778563189444295268059601298073233593270877495231985643475203501839457618837093252964372384467946376880333487979437113685943468182412824595460508362418049509091087603826599075689043690006643446906279157915949383702432011766095921382877582942411720255798617461160500807076306233012844915140658324819402092584957847844327510730476914448377780268672980517193830801457011325246278345005472380459833052880646515797325937569640869555414582407268303813780867149596099108696135905866849536601758988943724801849273853335034168795165492140659349873252132922000045465869092785663950576265862023215971461618365731620241929474540232161478215464494898560603514670050320551533396433490288110944554459040407957590912479674533971695814121327944517575828288943239892150165216333936266903182368021886944302180696532443321754040262278745292743341221186698051650549493733644555774238613268337283524548041238065716273382603508107435548646358248852466505380305046934007118866161758236259807796117559073103511662423505931559204827336658218227026230495376967300157193202404794109540057238323872246137227155022567944401460858008493542377179221428407507859033943761014542607932177853497553716773444099108582068604981570626519114855356888883729213594564183657452466829035200921123646315014144014691401321676465532273836034096510278116440440554035293392453538978893852978276007771650889080428077794986088018177207881237458260347904766673224314102239571506662138891753258580938134885011517887223832584990261017294454989477574602846716537532800177511646761082410561553368695795239256898467079577204433041499697086579164073789055233610838913606943628719550293749613125204147468574039218452306026108898439095962065891964950032584348372345939067886478146539395340697630971391845908542147993613246589435905507632411688902024849187771192899872876456640623828993509446149169585876552125462407230070392813887315950219202400075807580316331658549415512196306492614537636718323802358245360045113302673659379373380234901341535621951825234560614096138629159011139953960471724707438448038467168865319789870505824794922841678224314662362199468979704114561499061558929955120902917679372242700612063803875890012375031579570484534608403811703227926859079411728493717565217760518827194603731577277559540232397889164234342678152716133785004983997632455902217903653837167395023318748144921515349183278670328931563084269738295200632852120723953118299052990742993319271747895930199164313120482248259348326210396294891158114626585859337933025336731168684721193496647704868075835318798498700881539821659318716421263679370203083422255978020321381496415001173448461193930905607185285462629208601023558538296924716118535036659941380519821551610619624113083193341992891120090290599208241504246151474596632360853460980212798366990856579166571156448374147940311499079696042913596176101840951683107392597883914155105035762813725561547399093276441152671093090745002116228153787067956083877437817198818004765789685733998256129645519362314880030018533486656319642625840218510417086580454894493612144976617676038750664060470790237628275543980354176909500177756599326875094450346216665578549036485377807191070779240680437064222302332879922028415420959360388237950367459032492545044224050071099055690254243649310822047540784883158250006455013113435494287092594592776735826967949519460166948749268407540383878571113885192010947046410473379762136097186240364577890064834395231885172858685732477955594128339269349466128960999061912739691843905090515499474132758966829343389664001237238583977984615463764372748060069103529887382112414410213441305423976385950958755629550387844104060211270078852273892767416444816346135997070226192975728089359407403825047669976522678772949370752432522244889764069208725782334042561906145705831049559252975639682478156830414214553041527860439059305437751514289276517480360704115680487042852635519103654581367514304772146721211872550434149653828459434349933421859127906438591188156160821591940983944195284895995166259041483858149268189914088657580333467284180919348379961615809845768432024920915681230062696562719212780126103623127838216596754572630282255176919304428313288205022352215991496502052898603443132235251844908376230330319438734378987696643172215919419427215131929751631687410718920932001940901069766684492535201755114340776484475708179414556384704377750744578215199182159309097282445490986590460168719492713925062754437523680291280765938816216294778582691462769497730020565868344550944071191135705007767711139883074256487398991418268096063452986971318467982416354266314670043047246911269381419305961302786450391723347333185015969331518620936556202135102821023693991731872570009938626661269579933715960901200682619187426262740342383223535556204744990313960593464065604103552589273566060588761299852984892898799344009170276089243263421269455159537451653291050154152860034296505561550223447267117381603257692272482782619278882266558088888575302095614267285921612058020612328787477824549107439714981145703731377622508725868312883971302552418553252802864325374301309323789437224137550906069431143977008993406510731283924035408106180767395281777398431186557871887239956790170032445192872625492766582711374535561868232770363107830787140628611334842428000316443574594886050637227421439640492803059517982427594995516617921340698649854636988742117905382541534035810185222203476332455950817026604925232568183458384317775045871598882444648492236708388023891302314280001879932733528324727110105878157841784672439149833957771495778679501881711709938730498524197589725068623514491008178680549601881537404154017267677834830261292002952666699771292501740657792031139339694855184779948928802530729526574313924328767613863192568910169626598098688002775568081395210534749817063879778215688723521711273492151592310016045633216872069323158649753962040195041959904815647582525403197034408253371383120197880447290847029044364989720605097267908143823534053717782924875321315961093868550883369054127177233202915342264145865443618600802493126892804063212133608942831243505566660158383453262054017706552831422981693979183565714004778525222660456158752377734471111426981561002286145064023983850473055026155051826668502907954081872239932539021458516325799742687788707423055536248929169171697538659964538211322412087358555996601967789853066702116324381073581999537963531742450576412725142406026102053674094743948020837917656195947182879680108527327606074379856021209939873419373916196783033275030794772418358819940454523600631872687745816373547461466291964953042539743933960862373088276597606288775406869436495568209924797375210513288547104015810620669368165246286923503170563661597270062187784109604045634235271512113384112456762770052755564260796726521513320028776769199488581115669039542142053633601613525084841397638260747080765674503845363566055000055673171723145555347431702590672840439355597130895991034289186878390490379804718254650575075677863417681389918482535754306821191758411187437267926197976037477454600826870454787167104265509588571602436184564065751706545738251698070482416440293199890916260167683130585108585948396442224049085282299392211869484634570974088751309453698155298714245838049551824974545195798389691669009932550004223483202811650287729607542305800992192819059249501790474875668385661679960989932901746554821695882309229059078567840492794366730145753670684625621170092224959017593002325370672654610724108699252366929133739924751285323707431711104729274404473742485698390355936529435844028057153465983668630579857068321645903330895048301422409496235813002931635974510513421492309337117230910611587559690858636284812633404453279563615450111730729795449571307693234116064203693311215900169685561163592822659437927488241674992320064264046969437830926180081466584954828341404277347962618663336650469459079958989481147593731360547838169762727636499116899198327189110136599889321934879427048173437526415469490522050529341331487483461767037176473422923133880530139016090209131409282471673416748875128621062237005807154679944912328793486828718700223524508298435152623195793034536848546023719956536796816660869953683190445588744022494761807719188340286644960793553071558746856149945304725559790970266491552973112645660646394509723678203325667094564855640369085635289977115121586572288704187161153266081852195503823843722621528479318966953539175419428062748842565106537561727390505283850696528573625600313137405449847022113512378692350381490895373921722153380730154287913059926562576180451378015425345241019351344865167703277899593699477083405872986297104996666855530942838276963684698994119814730029933849561063200383154852231527044893654056490161651149859588002430891465900230096636367819077233477205911645512767345226247073246775460598805973855649684148901018592780850343513727428963193917893986714633219204686202746557358443656462044706133526050616938762343732936120122058258264603914726105189559027635780199341675059616075135299144008202626911512088302194659196713747426939592695232974313490772859276871606890527396563666413131338962502743803488747323886724566119236834645949180717361132204043794662762102253718582540317230255725355998329547985320652213059862253731169098033514225227839484437766693959081116785815101022017229807165060654851673855397276476071286693358082005068587149875712463144821797831550036197130272998293385568332539781203611186330716662593167274162093318118771029056534262744899514446383405363155102417966033136363746279060050724195777008701526161888314373112268022228285858458148308169537797615909425942192036117968339794960943197614172621920016288042740659525053289385651110188632357406638533417742117044670041251131744464337217988695352376105696328583565537864990362735070539860357152741625474653390763378675964335980989925655240384793022248555143807728732677211838137936040059966600166118982478001520452305017345950498291954785413021576877281330763743706427971801368012849152604742009339496550920292673290862674483339214013088262597725135066495940759244345851007745276526092256622131211583797561463027770709577056090151195900112814878915182505672481942326069381883953414889162474656413395047115174173528332737674775013935098520128414559751914096495731648633235312776314012586958269771994609844224676365311637145815070005487437211229359487290124039602233299621661555329822018848979883643584032474065278500886242376173447057467100363763003100025008560879747946184323298943125822014568139518585505314077056711407452765057019321001798008330251973620224131586626976673632317203345312476571307614691207161641188958311482172528676828152390350058351389788530551297713265036031401091798069438761352748426373832903059901194311257653606468375685379044574033380153825693685040129036192156552641758023627551255117781179560564197557056496601595204539326473949842338254189382213821904424523530438297471001904548521459474557086350007437785030735882932299956266963844567587000950702732720257938465940931539290606439878474474106598693603089548410034429329418433042895040973832761139763001892053718153037919116028863477036144364414623782201039905272329310014325623468155418548254050759431832330982628654851453391761642875475150471136418635782640913264835900353786526614776616320270079912134718247069418522720996509730286135842558272792900221561828800683347300015332453767062215700440650110984047075132888224674576752892733273232537123431928756188737532731996579812833729080857929401837751884095659874964870590549120103144148910064967098593981671952949763557718660385810332559461301240659637455330469218744212663000343589113322696221617901805399969272824821306373480480865425551358736585774095571098072182430884852544762944765326919677545247059804548924804359132241098467232849476299007517030455260786435037761308487239895782220099098972854529042676770653039836454822537811599752216634462711774372421769511574108620429160510121613561761332178399658552747751254900760123694259523255970888230611127635910126455982810886195571934164332689953138272113609596051413123686865679488056325470180018503201064554289731999871049351317348445989166261560965154857419936551681104822246561988321550273931733277283573056409215435 +precision: 2021 +multiply0 multiply 63285543737661542775205705968931858545623642315541687409988430226002421674020131057851637109287688208903770541469609992173592575319218994644383126447084174232888621245859075540481132390611227839682292559357126815341297538631598949738368465168726963702203372761864253753962325424144686567391975935546386140224726871020422161857599114588456363640818991678657948307085664797536060979070676473069383737482821280571090804702776411673541092958153575493843355226968514318132444602925227575665283286158829560154742834873371323593076954276286561894054275700244130520123836252326630225940183846735766116619992068457787248559569451114422973419853594084221430262702356184800745310487352386966584447988878888175241026002584558005684625695617078187852774215493292780249668161902100197901567357557943397458829505418729603408579175049659786344991877762894084930092139109578328750357292339979524544912208509844414413546724831240936448231639303591195990148578163637235269257619773896631228158666670604302143041081505380801799393078848593967209459831917028523554152568218677975189536969747919647396063106444005681766136634169449197170980922148646972283261115116946236823106315384021487187582973597542959582947381460 34860191917824959679870971919023856257753752206134692445905429039702088014687615249998141693447223636221981291150958800249451770494500239556420604514401350033898061937360567497193259163155996129659848788778125442278777896291038833527674149497386874000395124265507247884280251142543020469310142777135379301810941969580256326318218412615906910159293211091894803070357298751780566906046026874522319053122140182651339722812035710955299925855751152826007965815502757964786940374283149701559421642418473359806759760958545870441293757612366180937361081456189193029210430457336475699685464504229960949662156019805528071038636923917475228560157988035805414929086641425679516088855575998903809944854832124310096803813319395236889421729622632584855433214333966225648141842509569879225658806077540997661812204847974978971691853424674844733463552785987329430779576993315634584749396309996407651874316109324608925013945151473443986215096434018287874888175132220032146565487148542987718358267932249140872048742291481534084122403675759795006002167933510706043174932193592088745215593686667708639986732611443657549806996459309544175389252498362821551620486853805539379502991901994608011231353419441977394434271124 -> 2.2061462003187869038362573572445747594779485934706846753374943766673091692011536653058537892603030161255080024762501957111098011177343497632324438893809515213033944685558262284310907950114418718739577158556996247958891042568157371625488338511352466699401346838293465633178397107409122784670068641660213529876393723923864454280827964405194851827292242751452606425085914665014194663712490594195836847742141259030936705275661705337592866396068888023996971108111911702159406013486181705706896050924350853591220610495266569438801091800053952512394110199225219941189698708155868817014722740962406311895253199793762509866959252073860094346646653009509279900189607990025023521992946371166936367616632683157580509683409738770034799313476506732119265989044420659578550600505198780090247702649408888616375963553206224631118998866700629537188422310758054814551152674523754276502249141957654547826980647123382171540622858940728022207614518753732361724362932001024805961368724021943251024207529532076405361546616989296936929045609410019260034219287465462677469908600385057990844545827874322451844106005608815379557824880975296673296672973574966923464320894636792231013237813528368025048189086846711466209678903212644919413718989083277211214287852540745867542875741769485360411608074111440481786646218617528117293015971051787152783928763353759221426686075345597617392010199861081713517349240435281108914603974343794576605727487190182081766510913728884434878331455977126606765372825341389154343381824899348941651367318850401720992255260458582123168167040789989058495474774719474687498557032441525077410408923555830358787331563104107437220811006386700324058199232976967630157311164778801881530802912797053020041284238229107880165637289831723809373173974026283209799323406665798267668892169216366505911153482110188858146311894612560668627353434710534815984831148603863348518952841951387824100039901362128539328476985766399915601256372714464045594208390081744692331612027406284588339420676420559003804409081905383880938522161774255883569052E+2391 Rounded Inexact +precision: 46078 +multiply1 multiply 9057851438111007978623111981521422825230090089542712323152890997726464525424454237793101906301452970018190220157917942817840872902975967153019982488137089356698942226019122457729425935664475380844807957492598229492150237998775123352582822873951831611455239847318115879654799422289091524402707430688956339812536034343181023699549322936950470057334309792130312962908371439857990876850842642182763930677883254047413193557178359259499830022408232736679340570318189530855572659115203157563388664488622801821513253742843000892586490321677553866361487545934369891070625245144498200840426740347170076857272107638242788402870808298275802021008897683347317914186529201573433696923035063804208489872504815906345270612193989750045106666333124832543411178249086094348533146255233071068478863923526864327038762067254230723947562589043501104748449529067621483262853910075284348994753464130244979929264729264380737626896541149167116132282223646082723491409608140921286008908190568194954379386534259748858109999120742369697558854409477777402894565351595468519194630605046672238252574799727570736628034785054906492081398362848462377263305572646237460253632080637106367956208631993330919668444598531960634963657338254313125224215150047545768508975562514866218745865569277667313842289717023445722375278389097493392182940766306075778377440071555127086180573294852951573859724486695043784678465010776799725399763012468449721660520073728003532979381464152449203592340941559880985407228549801084438675916564321090489995577362910615038765799551717179670314171650795270037143800493503698980914393682687959021589900759756818656638131133502979792437621923358617909537921238996625753213180090058878387363642905329746607602430534411902793349654956213747144605848130366376013508258079884403790692262237917073966806269326184860011783902023472098006687841835648990125054382519742238687339975436544003764128599260869182228013123266193973408554251636694266124469208884814154757085140438262547752488688140587591394730981083638790633072569407129526245686408953088032090092326287992223810495880869498417983223846838262287107513479291733499388725068063691563328988869003000574859719011356757807863162546761501439004559855830274662849375210498657232256273111919379901908687536020136540617958257929027525950938624393994378409540917646542107334608684874765282536642058815134295252922089214239292340511121802374311159276550201036661296435376505686768910710145487182825384267708173527562326189010998814865847629205387217176649838191219425936677317548851850205406069307239778703950624971052896396776939397062378870543901543259895818037087687694315845492256963693464945608141512871875875092123297070429807743976481213846493628568594463720888477693269808230178416463287180098403635272755751923908312037751638861735799599646235314279466823262582167998570480271539721074226044404264499983266337200585746925284996989614720677679254449858562789873828260930810023606678952029572715334076193162315291056226591097461329116234960187331316715405969426384198929378450571126682279534329639610489142134109628385201875634800463716261511898793371606406395552649427445050368520194727285603122911510351022180820882154508530348846273320137977697448684193845129525234914441299788122518200468377070447108858933604453022892807686539327684334992342571633591448448186710102004174319503707865632215508367715958817993947747145137721190380307619948502877722628566303397018007504450577349449446469883916444183835154576760630894172829891980474889966049689604909219650010972971746588121884273253040672465382510349395408095131739547624902805109104859059742616162503126000599630458930403526116395360383091573104030683335524180488867888586187085475065123255173195820443599782827113348148359499077970110590352356521272111985014866497346171544335711347559870539351428126171961298905761973876756685792456523099894913109799552858241456810635034329810122823196554955175232841252615536649120334781663232339360026856400772265071903935985647458202470910648673041512867784928847727610352563946386139741262363336706857648008106114673139445728692824443023573620327720237399554336450973119435918519279245624394631526740072211622688334394120297736211759594825608221306877725770523106671474902424996175658836013408583977975498761736772175691319347292017369222093139722978517088084041609553947162883367780884172526645664057091686561718402572874908402335074735320083883221141968351586612620291991543266179236197268876020086183920346525224500028150703221020535451817636691787413714697937033798238689881705273374073446513830698931549608148565449866879699332007832563490527501792148718498328768271626634094670769329525995326193624404127322460647990386494716791919277065241540565613036635454489944224411292674103775808313063167357956395367367289142140253446376395604558991753383585741573232461420048642115338374220313645504160803528877249772459889192800420475277597250011209713878637445537817428311962307982217788447929062001615624023397674986715788173383586299453823492157883411312563034918350945415324342756235323695380417325868304275658041316556243975892869727566060711798623492571949362469135002949119044717821456432868990136179864383212241673917928027633441162612446634619395189300856909113019807494891798726028769042201256169432772314469156753817786106162861366481965283960788695690627940684111502908444797120211817185568201377243701647620272435154633313681700663807695652644420296389302489830654999553280429497329473371074578281800145969610404658719631496526577951114604889731552590957796109806424061986855547365618047981639049969370984178179800998789650183524192894873608071951249182460329401777672976447033361988088808641461456589495101253533635693965985750467684790216783805896851802389126570181897994726856594059757543475433365571297496636305730993932637888881964132651148258427210298906020331641182284182789006104471450827019702739144527412478151574420854697968059792401551589294434511862282523111080154527451231988808968821515927059208599526059936330684527444267838609509995402252124674073247991050816647968966862214039326954958925902153811207467366115235424944767017394488875165358767529671222653414283287670917168874545689187123530859420701068953866300444990019993188412145709216499033403016267132935370750108031715349748900160595473737724703855319708402135697118949752785328939427177466185414096665226045955871159372089120147152994759637189917103526328457103722013082069008585893241642389084928342142298470986000629363871308024617478848664599167414443630717838534922604665625060868060490021372806433798966690760541135461004008750200838918188484713851994046858589336926111205555633768851017869931454295966432663576445108644997217841373941874911638216312420699509970030865339381580413273525651754745784229440578159082174992653662424230953502881369861621772407951669955661891624985344423558015115930768136609140961091930126549737654695688161013388866847469934117869184777455314296510400547104693054920945241659528578496880019453128342721206052059511300926033005835659788892220766142262216632414607217322036942508783555517817737734531312220775924200977208501962783120620226889470545257779500179880010614058467237601966849583049486186767250398358188162883251302287158326331755488401340488364599948150721424764400805642728225062365908281841762214009665782644925588795320349247989385466269253845092399630289084767598628578724406408735335038189419099045132552125283368839486762436278355239142685802527527212315971027737164613666792526525945394856999019725057131898160755758708200662292301048845454189639523816554613894888095037837313463282578370373620764738507072798084221640889096091234190622153691655185486669321825315636658681651030298449099498901688738277793844851056848374412612632324351471531939211947252218942255296447258373482575452424760114126784651793890146171809374789591692442621596530968115843759417749557980098701676317788579442038248912195094708490271035803551856664629036442861030605705077392120006903909386192661704209588365524437566452918717896103822877502542235647927857494487141318205716202447302900825509763299979137559112632544020387111589336251074625250308745193761919457782863440011635218719497809236754362513464123774182940177185857117084571683236753590222488488017172197416585430606627957447835308401162465924483257674647413537800404372675633977225816084302593464458752635240702948193254390328990421616061260091368167058631761113950024054659667789876393488424924002282290636335693330059982318348156649348032517897056969382053673793455107746547078010943649899836331709123335109969726673788410815598261637779249004850139941194627561282001268184113846495393575877419544759113436398863031531084728884299308938115884805739115222605121600567189785643099202854589961297860254469158138255931506105366579850734774863734003344761368387418388468772435575766364484001409691195344746854726889342989980451007354905126488063196739508657627644958422195442825097202838445929755703006626388368548959826144299973140257724735315170362020583195103667642355082366655156606648881979794160947581780716727299287977001077481071515452221193033707283651548975940672258567553156661463335207612772794811972211885918934026982667975229809441043676933766404439089883146504062414239945650993206353787117988216134606240387729122064070162772103907067757773237941376055050772972830098432736233269059876288035284220023285385642517412924253534673801401609405960155430851061039730818435909938770566640700758764118315631140687204186186989258987261144946037151788785771086805971506473339749064494291660504553257597008329333739626152283518991862972537315118927747707072292225377253270987558190544686384844801332715127217096301003596737623664589330474699926601781082888579471422315809069215260456156447888241642389434633840766520810039673704303980108608423615385659389186507603400075067721116187500708739652933841698052424257233630189284689798827537468381596967564183046624794260995446293742638946822683615458190189920014605740633626301353559334645536745060369930057933783713975488474962122106855696958178962597444500426572512386629954460593636901414772413284834149414147601656917850759786806641643335756483341399879155904715599065874379716223100900058113087417980769771924878709294588214111795006169576581551155827406268224246742212997792461213054761422308738585788695696266407574240546742964429977670709133865716394237272510428955022205808009603892027346932185320564089649387559813828504980418381082415733515733847014042620986465772409136861926598963153724618486494518960485219463813734188557123863869472703100833332192838602967059676651902039518167506335932757714836195105205947146532766012112863726405126170659455114269024145909642607413161591215307908686423962855343625079380457984976665026967834738839583685960491140104872671807595140664310641380617444344792700081962148033825448368782132614224528663970000661397453610325180367744719141336683668537378582130043280019523290179624660546396410312414124568154282833935004834260294597224587368531389887142817063292855993433436916701729525292842854361536999459597441115873712340434977937735260364056653767042258805047649027401862833268800998839584966764234559727617868967794966285522137040125297641760676659533220532845324069016931104372702196839475634564752022762148397157711936961797835525616786127397746043058451586337202547180946381691909445488615180359396435076336079724058885469008678675587419275680316214542506558103310743659144071144287217599379275032928260645652748331234677865192071813373910069046962330916645510512926751433917097866659801336408410833514301780106299573389872488890286583129907705561131731981271133402709063987997356680812674515401417264426629400041409087843846701996037395115532239447069113323516174970970652491737066917734919678266974049752083126688770950619377977399190723988040916417301268052704341508630770239073910256145620012440648127284147752675881259705242728535190444730169147103563472582912806046432342624149013903551235333946373268989194904022818110087135804950538110144551260395446580187548263100603332231099518652801904236081331352243778315039589690499866965970461261758111148728641518877916066225761982264772395146462559080688731778597064883325607557743357806060304965209797412700972129966282203306618002973128220398181459200761915741981500934193801050602658793889950463047873887475023768270624153362596920642656576639391032097584774827804073866534455082481003769438628641343248731140194060233595821741943586684559343259240995285281006099676900688346216757340396302461286005751535327488275462027069563621932697561784867166924448131271123629697876876100598427266342045569816301531419222565272834583498537900672719938982789624301986972251320133637218355219352872056709714351597026002497736889088435420993913041148918323855976391782963333938819742404716310955712104450851376984410183677435375503185748509261643245132536481516712204612338381813041795715841510716137822735130058597496365509597998537673379429532234772027172197328351768913889337846066389470554904053685648052225729188528184447758287479501249229157343184442116496432852211213504842867593753949636704546084342187455012825372070195086603221808071430861209320050712444638320695744105177797171098561747588907478858056346169846058259977675433848685879030703690827853644168193482381594500653114490798023773020849979214422769865868753287578774598583302739153482315606022438436509958862321109617951255342531911025709807018488118419648657596155569056975766130432142985955420813958777429156571550012634818310503921370335287102151043691954717998312677143432063326904765990794810021234281492219812641814969895997850287281684137211819088406533188775815625412206887479720875126696269888027946421354686841791148809471004571291392564112633481870435896042400340206222161914233177236952255276563446493369954821999631505937598357347773509124396639857598145003476657041121334847763158540500386773068200145127548061539476313666337961241831449749126365575525437844719660365254720496697949880518356358592181328793864102000383623443159693206961004226684364093809797723471579144210742531494437510157410012841782967029892783417771623396006418558304472557586662228322476632820509584174103059308038665867474840658481606859494284456846258286916517439132122965534964207522033377063755487860208357090473550393002224364455028429143013819019562522608630571715446112178541387359611536433529817237896742439634951850033368786353024266462490075090453225959193377670081019766155558896223203388420174341152936728139230374978447430953657389795520694442214109510956883945802854943869989016352424389964829866216587728258111645681649354385521998626881319578574816267510955591571137729565163026055659181728360460255066285864234444302823751903079688336972179688626950739309352743410974414788517579766425156242231789825047680649730918290035287641913498621313922744780762439516938306151343113785020881264550210068101631814158681128354216565495853940786294686776831367268967009454745447477278732483042474969430758301873595551045630161002876977386502180699473201301857889258085900209370932021953285455900981559134331656992171285744696413993374979853563816652938947874655587451132866866730290120836903100723371180194904027415269431621039336073262853364044425085457777670000471028330139167189885606632202258854795786693876653781320516299539064161340065625640130923005200417828008157333449469708147961101604535163628854927792389724056604931190708024529600883453660968074404781896364692846328804777675121961186633148606011298238354229414629570972076627598392038844708006150768390417861613555771765514443653559252071875747973194051448420810841338542544941740312858044439249066338596477492399269680801859908636786754245733771274943894770163722254121781963590830982675889624510208959378082015836104665874745275121237016339197244129381379190430410493797965984019136774446892887223676283817036638420426868845901339151723534175718903297604796791757132512707424959077702070640494694532259350749505142745997270271468312780787184811488284728670313666072845283707375251679998841926618635851380334120928897630611270017440890759507331576368183655686620535751695585294278080412487861960034277054797546489833244571556293853068225774035032334240725208030383212680623239627142539179104595432473746690852667609773246258978898608025236287567662547563882692811969745221466217392969769107426001565761635882399252346522358404282248929640665985556277141515720503600742818552871904351061047381961786876251623503366700052907993359906859217805140736012329561603325813698122419306881515665101353368143817743216185951856224741119806969849383937304130404329583830962106421877086627677679016065241574827133289065776852926721482931564657575751687095441031032900622089091725420584975158408522181185566050916912987684855654603190536514759293390186891420716004247802596810859639813395527474607485783286042534117503627444960963283049134605144772071124054667944904804357516590107590384507928031523036619398092454252798889644920415091269009892357582171892538323117670992681954197746017192204426432287402736185488927643487226461321644123671519683569999832717972983944219190711492947740449014094215734861444599972549582380861260112481826985736204674446905220419114155892788856211385222029485821216483928973011142122865909408819265302316634031503327204656344747107137848013942454638797674655545045015211966512087181343298020359755701901855138614591889275081009746560975289154270908519427972548209314340568064457888077321994437927867938203641733960628503240695032289173418364744331870457667182237847191708197760265563000834952708919769573184308824884697295827467961452768859530336489378696064778040727973440031214871972896514154032907109858179160500460758945508766742690842095854827403877108213541008436359502532361792998343609262918251272433368787966023359343089868989955009157376863621977988152941043551222312155121621155417233199942579377671639988631760307847419320880714877217028541378736272214367772550920690528374015890472189066634983121594729617564352685487623087883879529011359239206998476923456873175474018495002816665859699756916835201806490618083236933986264477686646913303600771648035940300406340668617396302104690426827032744689330007703165604809907628301895799179108119128428839918727601854989293306162438765324691948719306680852287710204727158312033639997952460619315109157253999104127828104683722202021291592831164273303530069888142019194722900688834195152634120233333056640888855103534954681573225009587713965491672078998940203925581141923466434628817735945830166980404211659947767506707082509288767998146914998550915940899030945437598835011933410166796427813574566603767770962433697258705251933049007851779625013483832658309140407126947464358350222114524111123684473067463410636088392858399412666821502316534154935170539694475105087567185173635183810420579676551197027918676436024665227593807411795449999635954920732428052154282762444750953495681700321446260129701787497547826032506119244955519973749421645615802388067804646132275997654466998548717156299871327103931326440153399853200776584147035877161336689740305791704253115474787132229590012896558350396793327623598420271676928858099708302092588608778291230645280608211867374462275981099728900162544723420888212900682072171388195521112405884246174883616727661733992890223018074942953869804166889282767481005469770173346993862732728626847352880039325893686906558866292592637977386223332623735633281961510159215136137816055383759604169534733271785732310700512856790597354115539052688723080910422423945612165952288836423293463404454197708247805987178145535841558544795442606253070961761152830406192502466566030739944885867798901757431936273952673015950102104557576761589050796600195969508614462943828003903793068171514525716632138325553958715386828676597769950119767901103542438294743082245862909716958167242244165879296825934836677777821354233382613095993110472793556152420180735334708106448804780335062434909583856063038238467794056765077259797433626879268484860563791784039109390669441796010261483172335745254892620429239950704095216480430037468710061426208775525960746729335262587754831625841350033114196307367555434745782037987378944520042334399072359746400670386155233676429192064744312214443947719023092538537845377682025340486762096563782024394818100222772779038355572933909881977885398210688385685622004853710835890516635504326693336326288017143051495147059627666894040983343787195514770391083354457384618574185488339515199432822775632770976690144957570533964122560799495647905271259989381073890141632456491131991708494673934716517247853727802775159974399486280384218984884740079241461740746604914718537087265679766225505473642102229064192665903191352912422860538502135825975182089760363793198635139896433160686980332994872715937539855319234448781447198573172364563431011184540129084214455223380775580742443056312924616232737828151791681026136651225576599619391330693346869677878242917550954085022286651071020416920539457990782133749892732885006296714870896516356543878850940285344656914129883592530208193970899138683765315006420661292667473349947370619745847198542907484681122350291592974950805484965719254506571801413055666897870406537066672945271400372849122250408462155270911571511419105992260543413628382243720871707677718101874316810382296008886793720069117443602901584171460136895576824829621389798012108615155026663393199600096002481254753605889814361736822924288051134962201130316517942388312757026428778378761928117784165770259599844889841743174091029639117862703867621297081529119367165337522459664236489180442765711073099599700133473084904547601678455882661581151818374392739691085667629110411408532484933336415181044193581287913689438177483509295887658048875824358622220601668730588992503184966558858582953811643169483004326498451255047041938854931446147345729074299684639394647215267520167770572192073598364574346182027894743968153283654584218364783189461275103475679457671416305637379808120216241098375808992035836766376932351514740149375718115374459157726197557548076696447600790867925372939161289409599503158573188315091055796011294481895179365233160409990887723617731323499409439311157067274993140955399181858334098892473013520587513967383422871211394477177540778180166598289070897161077519968268435495441525200757684992627079898574702953051495887292169184401411706189332439895716718904512771204071161487676086157025120123380987827749917333381200716501766173688208073893507961558302743996879208954219630271105232974818991434432049458362871972917341240279540513284102989720973632461983657876597139236883243829939456109637105467193029023714540587281083439281771484597689752582235652657715866630292659120874855614392735189089875074501897962106716940014867435926820164853438315905352046589552886000967288026185413349148938310596043455040261086090950792602290841806985496020957343559918582868996438352160302217875111484936020098723462739215243093403639878919880942179068188440097703277852628006001283855685270930876365177047891794926425942040680704867365487992634189662725814708679575288900569262286414255249070366604739218140311372553642915303103658142140669392390436417922438541169843125101207775249086873896470441113993645356194486888553939243646378330190771116785288871151324496974940646998274730471096330059729789792762263586523374882747877957300230519271809119013493048463341759280793546195770361136163528226430176818132236118261164220775111307284892030037738657188856341575436568193349592437857137047394513539218343096616702776044972934474155948944635260239250945858440253365774316382917207666772806324021269996889744361703027649060166621885333416135011699042730530683597174688192533414074673277035619350634585524241372080934504357075109989157896572708702041976218800474020678124934345214250294665637274001421271599600339281821825838360401175819577684852793609347448037806144096356878317323018315312904254617840471383401831780934214926160350830264146598544591 7077961570020007896395896698481932321618851471637722440399246440405050675098814902271676548282378772178104278282859593945586925235555616461970140538126711408144912949243582626325900145511282025611685935020566111087096167115038742655768897097202677212207722405886310330873082180947071408504166053708500100211031798185603253693888695733666078084300901829053831320118617136490543096766975631580790949968129990692371659865741863218978289231010643178866527275556541039427201277347528595808157145817968474619292076207477742385132492538944951133502471456703720384402003380494248887040992345792640726573416014499820426502501578882074587543699334825168101737478580808306682719073266801753567172317837413933129452193027560231738008993047602540377433736182348150815459929881520031428122584506982064208483188784744694135328812064537141491377353389111242493156972648304020779169256146447746632348510500012905213820532442875265310314456205671001577563828695409906467245194797092469581681700150065687663849075174944611617684187747656522064245175851783007443759252611468725028621026901061830313286169707208434183862749319762139504922383820177875593754440274529410393975058335177596996977496727400950783012886799210386643252619511087308755858295061351848945497003236561279952641220280261803335198507398412587859976754374922493138816138904719740884914977317229212853900758110275991111904979023753794517800032896263123333208404270662496700859322945182410966763551486889347771326520546483341829566918481278363110626918320291553657068360629054515234430567567176036133939821612480038707985219642172105395292475541965704819878690054321710725478564016336881275110956094917628885958197925753936031735835335190946120829793381286767562604790123565256740949063435327872494487074832778011038919509627523412536437252850344646981463541871388225954094521867081736984237415400425934569610094617668453390182553310640506046541576393721663601369627566666318231110570262918778786572495167738108941311748306489523015360089899599165049090955823370632900415674977503810289341977636492065571182660572358707910260444258046948885517311394536899287973046488543785858156065398435080921243243890337847534215851533791417558045623585007975264906506746696638108010203557055497141726772390624494089162659941303825644251557485387331632402414449917611322094617803857406112983780085791382858413646432417236197315136913762496503939706902204182924710500149673019012840301614677940291493375617409412140972365223852657315087434023439645600816921141438921934125371512862542026284485430616988238975703615900153681405520531328679573235521612911658587455502136977750420911223716714276372265353574636415885469888372538509439586753002203642824112923106381323072427964429861990928913505176160677752180252006942517252205057134427970973551897029959880498618885532708774368260326918377827372666689735793983982575878728998592251480484247869770578407801991486468277815471979530237474704083563788812047767758154209542939562395867687613006456970461398680819698817220776531918370294884167794933387659060235306896609360289555715178322680188647280828611672516832429448640587140946856328094886814910356338637034914652067563510981544830904145971852418371422944763866432564255311525213603377053720192110420649875979535997858147483425579361540452640489578537129812510427766414189817450722341676680427921760494336184958669659268540159172136465302796227408275273821801889964032036436891721695641062237913231450611286617582919828127829095084677518522795239892139884852589118300907169325993843218966634442613559860663129759460934076071180368608300885536817805792922357971088579923811885351384618087705697977819248562756328623186812846064575191327146937907572870774346717789899029551385795354640007769491541145774895885481639317943717983123962065665979276703257660889577337791390427249437847411982040208400782962265924973576406998022782813660558958240883741346556911472904616450994223533061710875228563558584335372281502173310183441540735951749489772984298770749342041475208804472379937500589509668741411944289586026273527537893956940469608420703813603695536195311262598447801126406365163438246767942370218387723566998973639123540031261101539320510343134212895182581930117473898978788839317280217063074079539004355652858986210447462957719260325271081714780375437579135524134875465566057458047690149357713794831082934345727546875648079636756106839395353506940987965691169796717194041560443548221025174470745179188258431773953535199782458152602263914204197082897682447322586155904994259792521437202670178749334166211492623773415261092597625686348502564133431437877672269189657568398442761641057881055511312945373800940871083762591286984322668680047672668434598124115203091901211804998541211259982584714940946312627856884011610613015394476835340014339505693372106613948298525723000871661642551558533732136401444075837452421103437318671126628867697248844391370098791041011226694032275652716403654673143899512509567134708752794946923488789852026510334472674467402488270586622541417853104441710906412757309318335443273576859337926912871865124931745250673166168562274653928074652813747707487110811222831849381087965512352147403894431771228022150863294576870887695572181645418437712774237891092438399060585666901612240602247071674761456351214762308849362828884624715923025183534938972344625468429137400092230664722545286567408150133721842929613697293787479150753222454188474595111424213996121309542897961106944835134193645384021033689827623577514365170144728366411991260088367773166688534245339376826171515693929604378288535916984550816901671504236751245816496730805123846534813745027172950638735697245146678459307353879781461126730167246749443086544266638970708259559653985914032024062746788602808877704409577284119454731461167914383945862192434085978005718754458964261467623366689863851809388188754598744931547721861259699654479337076260464304141249034533603728554401331586727441918286058748455281565368406843428439544387021413916792961550813397092012717770406588287172510853872099855303528351991301049182561015619415136434782984936166924591952839623438392212919860569255707526485535804612692974285264093689645707059616069833549308872825950512770071990897911850204456768414124041372248458066984335582055212723218686888471055852020972844785938013314810999681752120307292775069315176650871230600222371039017637635539355100808863875139672271163721122041018027327486115095530517783525211934577315802077514080725547154073105064865450239046803727865610808001758565313382864232130202116625695007401656748394885829024406920576339792649198072557372768553748436890129624507342771951835448056119312226697262757612976660093214183867192044378134229457580420307317209173794141679137723952812775096399773303058046933635937106494321646734098448666194268358744444583813693219440945555399061696377817961818377592554651888608142194690411050598194463877954082997511310001235653622908712112224825127623659497715837569233426704220946701949844333230010377882021797916712679506834470837907637665299200455911350419662430449145002805711832658934784653115834723833001627359641859051412444703003406570989404090724155715908542531210150552185899218310650302725092876542039952844869538625034763510746805954045347032823942081081778332512413434933900531105357290846503373115350229715651822619516371685569813270403486160193063398972137161888746554060392352105145515407448885124247688893672993107322858254783442435670004124907494271348315345178665054604914923766029892384694995608830614142359313175617853958706281462220105472996288878029974008765828697469329408129990549470409813940404517752920181905755891048854062592244790898527864952724476357385001802215197968347994609769251142731979623347247589032726739979301009268082443468158853350500026669404597182828539736519264753694336950503438218055005653614407757039328541816333956556344133777183014155616130949464515625007915913434845164113846306783722112460232534040293401992980011311603029122986860140024559244908202733110676250821643829767008094058977283645372752631762688374581595885662792325949622100170053171590782440010990541695352329725352920823627560310531289597351153470156640518142471530274083025988529977811595550494115642938349908387897754902948367212567284322825689677640432453076410838582404941437990705363117687161564851293547691584852965624944598356487074863091347932494056757533065842374684150154161758171768862090456030499084080347801887801038436215978551762604694307552811422745971214921431760044481395342073049573270784006499187272421710849020452449347782828811873555537732973628608357474806086571655247706822773095138689684179678425784638463894778423172979257240424869936830476525067428726788981464936668240964990400377766873715120013378147150972601606007136732722892426860182037943426400275827179615335613211703067212680617323539032779592853675938221875980225537598500729849872083747364179826677041391794930359743969398794689976618803889596248080773045930248558940055898869830538223879209176688545967327077433217513469450401797785056144687007497383653000253767884972840721882161629622288730727685194904464424994924032346406581108253611913271436302770381763748559719694662549287631737369876041602585002478097402661018114139726650620903459700128943548044051151983301302756030161545106343648709519737681560163102240969889575665295363105619179589679627719048153069835478370536223540814631390418629589762033029997156159784343753015429487270731274549352161114771782069410939237049730704224521200373608874897129618999601375308827891460873571213638961829387469559745894370179430324734730875325842041888842464195045775029245922065954367523386408911742453580598125281433568026098689307321424580168012257838831938150631214934085935455043683069641519327594469014392728510053289833848197531401443962821433320117385060400943060163177158552880661470213927381044625835367941342466309268721679272996518100660736762371267823011195461010131498595932440895087457689759998627531167825003300361371052814222985959781360074484142845499750378203557313975072499041971375841658691533395531857482790302769435780583217300983667386612306641212245780836292409414549048382102444668821130165930013266796434111335627615147548111311407071236729034957650911933927525605033646595560305254589806064941676690758476447525531149648615365176374153369038642098140440862688459930907616311464551041868493670925620741951859091918753293822986004429154353430807335230255178009961808374720367415733639363075474786719963592208672960708077163637608448424407866102416730514382263794034938668565577914370504863761397847727878390347234992926359239628932932888634938365806172602856888880537919181101268724552144509330488769896120210987537110875756328096665739575683185719247254557139561037498534062429190804368351104203242292659129124428384814183242283178197787398420074258506439089355647935676221787082423460962806008631856737403903142289604617162717750375390443670051000276802820228746291898690161840127083340103547191085195586386537661057835542209815286835668746867489126384931960195953701611195605091650613547747975169363569713911363179264292802432194652814679162837621127151323767143872241303794852634617884681489754487583425674251767401375471456969056466618949021642688273792576385668847264076930960312761800490083798035088385126251196687651962484233784250849449557499552145760359374333449854195664813566554662862162721042558021559750375837716005873450307882895438203998832848620000596514134445684113059066839829504986398343774487526580873803702437301106343122070068345634140507454563413686271526512220554731592088973648649925579302401048582701405578081783099178194785432023698411831746420766170256175114291027655098054240353238332732415479530860124644591903644626591743283322512614134322027302181782969148162931624609763455832179395811607938157266109222158318986627089152296879404640981106464788555251903733171026111758537841970212217868695369103164300034153767000399514187457691061187213704939904032227604941886375216863104842940592909411348110320426317047903443796429093853126114239858881080423236606454389187206938446548366691499750021718836718358145864829051259343759175127747700874009147446663543649278933180566759419817651719529812713055161121843117132760630357608734886050641434314820724726846928525736000077507623218113013078402016855385362438430880077725407362383456982358932560938512881239504991486930254465851759720653400867058909970865185334534667881228659109701750720854070186535891972927097044189863237433131839600414315839265234615771694803887758070504549276794879519167090099980071446563892232751894100402822082284885651335940773258698811823170295707517167038483148959685798199926403455574172997912179295522951088126882162769551845008935335780030337686141020708681411439077594724019551486067491623839599322006527279020405989723488671801174597780084977585108720752179067793804060644500867159431218401608890745171609213444811851094184234978199780587685640820865140967348604987389328629099342082165082735868764785210084919728951988294865236512347094877760267570190584937760304628829722630326003461510976088808418509933602539425877694535629884231827074048001125615507342247442320479799854896423477572350675600258222443686961469201952873787668246909248385632341778424711041239403115714424682317184979672547530283463689605030346785721535925461767307027158642080189867178780196412700766394044678071291784022793799383747158030540035572267222553319894972618889951833411882052737648635407673160114711932867455604641381000763214272376580691640481551749012351357972459414319176562415569952810165034175923184064264108084765202927865622280126905446227064821971697735940671081224294434354408256813605492111991694033815474375129985600673765323400880142627646172124410143630983649204432028044356456702398050724148980097834772222791285209716102670488801360685687714339991721489745911603414216661646033533457864315497474235076061363808092811852965051372106281869766058209500296923685866677517795908646515492858097848573046131898941390800386539053818331328510522745562219467359389049838421768806612494005522360518260972169823825060194942491626012507306988124198585307907547437669209690930235012801113399832972179792385322378866743248241526979825732890683509674193878183361187918505105127188217938445382532522792913270987366599300619599132336583155660220843987069846011526162030374627737404377845575277676202526446786701084309204240914963100971313085498881032215983306189892995418846435029011122488525507190366131665792842206666807330381209823514403672871440911049106026745789390333375360511606656764115348386026212657551933061093955947003812573775521113221296864759104219901763935124430610870405791869650100650217572650491997096804527540934431668836894739272542341412404315031512138951337010437720968563009753872659651460840218556296864631978778532006065215302365527966591030300063880981272522132572681184472355513938173971710698474860754409338244626080232622206456055354418123246228953608612476078038752102516459714635135435310456236786095851960140571027677952507894234957403309076780586591489291166216971082768216316218039471277073031982021004815886944869291691989317807521764984353091881491288763272898153317739975113032986466727741698587973272790516071921293022367433022002461890930023665075896559980283394078859392688783781196004199948457823356590522627108488894715057537264525520116184582857364001178547035575202419938000882268163653554089199274897409710756245367583650570078043820497901555478804275248526281179242946351056320505541646958444126507721603535697559294721706822396089007190341843474873341558593377917597745003877611527948667559048005135028587498897398262958815416458907266732506563402174449547470759261781726601122392666419305923700480955377392949542437692823307567074710009198073622939155732522749142054718051374613343144597384114954479350298087394564520350940242214909138450876310214871795157459311993054848179704002384202013155246836442290244515114606290065083277425943533689674690594493433713948891558645009448152773529374904564148502710994919110745502024509069768130724396240612223478320632852155345905074271382041289853055237225966795995146848018638928028469955197475863236382712760624034745480537766095871084263037639801734784147351399694053570222397319900093041019171629519045280824464502005777991878062336587741317908528214248896741877598135794194457214451554715690055962524955819847990245176424907453864043891293110375751635837194887674137996520455640119381419972463898574822553679761703674047079588203886643768021688897286074908761745529796934248055412854134933529418481963250465484387684434533698851545403179033613671350514661363986151399994986205805930425733156554876106988271341198037532256362736532576491138841039779972346605753185855610006221911006807792104153572675926234514315830046602732147019779782444980322181337737262526727453721326774226365984672272640706646680877153603730063390558781112739168827346672319101091380796689557947122029805331198594769359302658219618087676206510926385961561301032333496753443290508402091713441325882895409571120126215240085425106341929764265408779643210686981613274248971640493241350289875406191064453193272340716374447789947167546207624643572125704347806423088689014511344821928814017194821463626528285395806589378303996586864688177125209786963807614661122645296160744204330649510442869468101511506867130455871410286560882950462128464037445152374179934896780190453240347144975137051994054841360195135219074859534683624596821402392268456212689519917091864691918705879867658231998219471343023454610956333359987154208369921707114712361539944997475450493968436432277070818938007713195175625160637803997443640121186204407281835121106667466995164083348763906954471820830360782099084313264359302718501291377693589566049969942874334123413996010105268180987855208260613873147340484125577671250897172156823353362705502238067914511033625927704702441561642141608498156657317253627023668807622231316395546684772327629997904330200663342107296243132051057689847207870005148897557197906188715416046982766334912355164122005117646905777389928807295662179466851354579831309737998341433050343323273898933138961242621258941746376584200881394350432707743920613796925122048704750531864264047017490387370537721368392971692246702311515466380537307931997528284008683781112452189204123525785739637450162905301379505351588928715006780572352526555113208708627298636053694504614530665967139424764860539593485500226332721559605247106411193325584782798472398464089817957022115076288055068885785888280606665019289531067125443893259766254979833289396340729917024645719821944225783802262755368863230830345760473627361959947317287475048831810363453184136874405208584611150863428136728305790812633114446717342154090599935807085409651098876363308953812752202425077927559754541727121106428128584990231585423013221064798166030411233204667583960745401882995956898297834982708696246536665522460430930134085606354116434324256686641184718892407010341389759915075452950086149125552281223172859838189070474782459989534351870035620359098882552676523068832033102732815275103927425729411728529281787974644390109725044595287639642415261946963318668587569206710736570220509261759254936840565132967384892383412469998433703873355937038057318738193843358565813775554090238056800443504273114662532445775813990117637003918262752255295082886210479378814674548321974423611594098515738198364558491464272791511022674886118273054040569501814258658911952301084515866725349973230876968703660947633475677052087204087043049738533366834211428068143002418891084318721387813592022768023838247373664493072938856641269697686786542099335956698905487861054745007592472334143936353620237725235901745155157762700917063312987603882860430668542638988426280911003701956254373715981852984214806171495891747856122360094950154773846300719800258780480687818746767409492521387072211404397891923818209283123613261364840257541808675652812714646369401048239683472735063913610970557364649623580850122894907516007431951161537139805886464462263465779588336638065536938695156975592657299591543380783952108438095109755836805918794719540675666895369288564412554361901694246006812314319686139179735301851793107222905154123894553449013644559345954717201888511679420740199161090857694588408308479546143672390847008338667567114264269712865921969748409749514206094921951719676578184539828905045731950866260794409284259971674557803056106765045484697530361425774427228235740482715269200563571638701094477891544880560797272072819871755201628567762828175187428471754298259859156098524872967278897917989495627418688900773603098706692128437332403781475763870965431541066354252372181763115301149481349475174712056824072039029076358188524561801652410931609268917304316429050471943361744212008620924179904740819839755211152859207584178409011057191905387534000911162979511294844398250877370022541095729536514206868025586840442960607966747567539440518399573847643039785978091157025748800891549040262122772788660240532838778963204207471753834394693220539088563556312208531323632755868356078087347661408845601337233214915696386831092122597876076910796508950973220768840194448035388008485225195496833734555129356022269861832202221996842631840640990429967578605989300213689088258865495722932286468953607167317360641565635472076899654287110462561238436212058028866895843813245706086979121469555320019431723511579769429821005032099559606353886784547760005093028182992021497534059263973314681354452735061706875685301130028172598226853211067984674407188372781072161663688964232584731041280506974379181550855383786584610154562476936813866673779485220550396610602022488097629181701476967114589737578617397017731597280195106022904509628952783963762909343735450332687008517458482429415630987325301741505522565390697465852679864713067679334509453893882846573480150489387545336259092002114683549382712585415849363166952490377779631006382502327948581890941186301489891228825509828443134900830309539056944487214086929735000590383182530408784656848578187064278916364900931822467514454695538427291046825078774566785120346132286775675315791344053325420310870351739282523358239128956024502833921324637500086751334625752657751362421942685498840803544500413746083260088315235311603768057073133130367958442059820774907495959059397830653242965677297285757039537483262180986988154083506937169738952771689590703453799185658996178197416243874177667346024342701496190626601060027472156663070341906085249884324854373508279193424371638960216272762693523612983304957865691940842725585316700882323983821584970063730124710856928836285342678249198155464201987028690415532579952737331352534906222452772199464058783077301284269412872491831804900677274327813719006711383557337988703747600969270514360107772658851996111054876036637876057099616949344248655038824481891119071046272020439938642103435849160932233588903647448657006868057052047916065355513433255428572798000241862027459489478787678965114100080808746400244000888191064982270665923001783561350936984035995640660530558537308015847803332663494108941107401593395298123709715375961158781013846148666705370898995736762513686732822508840560934512861136404692666128020760182006198771538310671797860794904921290173993105685144172091988305195845352264154529691346647019774136499777237940885441274594373306477187279535762982946095417235960526067566977380185919313784690432081383378784623303073381428721715557385566606062438866717266501311645030902878443930057217884505512789855220464679580770079385633692981830612492908475971952771453331291949141694141848417337058906658653494653807971745198757132980512608399918178402768624210242072561431367530306188777570058983753447952099058790835176775129500774662548611546501549084489202846910386851802295008965207054246056021487131698112970489308111700313122231820764484119948833076286477748006407318665336440722435919357506662704903747852981489357224637675502697074525477014247313252922823817 -> 6.411112438590017641980091708279461312505807385418718744244136250983727877958118065909901725871507445418734748851294090267415346432513621215729710606556737548880153036048183979600237115326835132233452060718701662520562444011539332599428881326229663180040955058471971305039959440961920546919612095013690226859805221583666985793790542600899105547607922769401211271025727349065010169067216301454217615111945704186859940649947338249403218357804712286837821191769720624983139793806804235804799570441312147438604972377018671749789395503012969038965629176444381976336509653553879388066042791021047312477348179304409500691982209863574058700810768279007187058630219489584945923341509484654014905749775660657555640709269563981654017434969757877571376649904487032075359780621135498211120005962938201901903698212560269223840780567147854390885628166895369191342058906450757207035173772685346084737656194270663841396893690111109880634007575656890846683649242371054478850846504242317900413341028871856216995689540524468306762869298260959977700042569461189455298535115974176522025770067413088515578525868690823916046358021423535939602724008212898901041611563046089695123868478964955078162730039763745052797060402887654882676589224438031286502031472070634572482375352019743652702191547930434992674747513340211094493107824588965747874618577259333153072741748589131596989059341924991155159432957525529232711113865290048311482180669811687539484703804979180296250555827299160665890085703612107497394227563812281754155057130984655652051613626343486945934556135340907814593933848541023586893756624731137390628470882144969447734244750674615026610151341204766031065058302106402601281069712901196200997353745154393033339475936965304565316672460511384211328427192560231899705882768347366237529005142936712653587912098137957019225847153180051187483884124976989165413345215500822599351896591204285672054804488365291511932494631764633228441289090635493475682192164419599861236232215849217852465650783422687772822426852776366598470508195318123595310647166902264835751292279551658279994608861228642671950825045693223973423708134789333637652774054989721438396542766492898204289943595455124811855766548026014556208529510127403858019013046270418480293543111815918349082212214901111345182473236702867498410492799542008294840354420037303620094636278154482774211394906842802106357712598122679384635740116646662757907199458425939611902322796271293578300566027801638933348936932088535256478474354186470438909695236297695205534386153820382119671866811779882140573145259093618342127370702351857940229985738459917913089062527668634507646946761846127488264582716003651168897458520991187292622744373533066825424317276061505014275770902678207611125208155120126910407123494548483856886588853355547427261463109251324916480256427280598751631437726552012307141652223255092212695004028302068971936938895784441779155103447549706610155370494951740688695142110606832136339692992680292052265408792552949086271715209538242486214882624655307499724706491539630827803241564495349400402039564867898248146764415373757314607923582974284127121502191148849926934231536885059455240899040965373913018435705177899221750620768758476844076897291335550577787268260769507440706864866825279471055752375899185720996516790857254637821208004122447443140322519134754442353878865147339262184309742694469532287620381197337268632765426831074450649778182084382983018767170401491679306259598143270606970826752581324253174012972014777366955843841246124102122888505747326934187857213159428903363175549647295637650897675826864545380051260085191477088256716341964900677759444173083727973369244637049738413979300577785279666085555680925876190750371929672573715301286307447829863017381601143207055411701050930165419844950420193116717050867472209596561082964343611651615718288746125684145829878368046808583506500329586658625671560176005559622138752703815024102518067106617465643246108936158433987532419489751843794483500507476643509983124129838425756532178392320265087643420547594077534096193285656923894729195700294240849463542079636468406561861472893448430065512398737054195690300225845281409640872902854897475402235103642243764861114304281485166838195840065063181045518388638465536438908083977332796513932165890795977002302835933872565966223901959631083690388453275680931447137116534034905827810519836353497316031467029616791624063164867233086256687600298007548989281620002395331668835800636187388141370540706242110991531962615111986546705082603634026704339143038813921112838237781376974118159071955800502595983781747104161696294197343423245152535806165099303400728707279567593110906092561672456500578641184644228198868712422381426058671528217209613941479076851515427857079275737032024089514086078342582646640234023423647749615045214180172517191354454718930296407111871323166415051968100118613746936998836300800793481885780814086825754194283409193601196399668897242021281090356678137369509749967428752389822710182072226368891213790540785843245058937266661232641577029554313216929348727693856362574529149800548244161462547099704075407005096264832338388289101417332752107170035023173206723264474667807412607416288777652237341708175570016041663326880369502723827997753506889008687452394709707946636460292997352534362986530432203956684247332327000201089073815794324108257003532372541605293198335439097431867555779307208530172467195642457149824719483015553157472448737432646769559418303644320363898448349252556822237940799441260101957903396910759950612848977937862951184302885746988163839041581722763353476952161435250903441318083569623370145471017703241838158051032882001639687910520117450134825843707716272806505494489531318914894806885384382409924006715110705031021269031994788580825725563911408962060934190898302137730377151110453431182332004490366641307439589544497463051334430135844167113180272951522380787321708668661476538496367197345923780691455645863111097971828402896260752870321431483909252733872155991739769006157510750063115920630777501844426719732316927979559378439471465747882230373444113006738661581816548303872694609950444077729529427563475997626335035325001526883647726220281359244188051636475863135994069499499877449526829957304520788799697532017442903857110000643963989590528793551324978128046106963207711963700521069315420984868123671466011993585531742715781027982827207234886744536264682897179904116871644842246166038124638040777197791408627806524562057828016745471140854135976645726541552057753788533845124848271949403037123019950953210209937280122319881989932503424923015884857627120953051654607720804714011452504318671999035514683086116278950863592916468798315805328714284975619221761756830012137187046564646371593380120959782715290246880306149584799646942162944921395935213688366165882268459409337097085777225233699785325026945406643812214566117431202894283209755876203885368331857993045182423918584167963761160998232866374183116986535684429013442369259377453025301288267734334151761845188111831590837743239203301516785971637865224155379000528860798663982721634874337489403926203867216897569662422208773237069789017900462327838047564571540137401167571176362360591127548754982349636108315339298328476324404880434868332163869877999658327396741384513896281533842490710087290958163413047283313294472336094392450962062085245597891523059608504199961722356720409750822351079907719729479373834234137745720493873378447778209618598316510127392749549540858261983406265105302029644873909191199568704544081398185122327657528647200691980553892183973613700325429283808518963398665564317464757286384477210559223298940312784733588533746452357304099640978605774281263840155573204281339530966625117784004000033616514296205404688492608570312070117964855499157498408609738998799814157396987033007507793121455568338974898389299633337134323683442722953477766228155572678486684858383795537671539640850036292711401426821466625583380107897337345345390795493883319681705113456105601855632149069850970682480867416021015663477206488901234323430918222394657942286388265999317288113272296228724645804728568498333746718341562461194377011354397393792606284936500320112215144620647890400891461623810544607019193742035359342335986978006272508345759376900641109403612352473837401422846204845271998706332393878059084885316161468634051825396213304607526070179380342332451767068448241854401196330107924105352884618378994304855056963382820329702240953283179914609352355433926381764858654208922121445392754138133425432407146749330013665993123420175343485126193962812243216286820995540862339130950074119490454120371407540943296405150780878004555238570997467109474997752887848917871153451940701947370944784097197387783628947546178057999498869406068053772069395805490517243097078364151453389431142560530348626635180615106359975238485394838415611039741893655854622828082810430881755958029677794164102290890423360318468186755057366453208570140990417672495728636899778738440287500526419114242423894024579632748221207468686358712524362446182746718050917324614003394472364376871929951924954943217885381485069204114758883945936150423718847944910521981801402208493640829760314996684358516800307912032131961041654753291007801018356062113058839833862028117010773786980947676385018932617152197184731277316661329744962705526255906398676611959428412527911952559542153486411376696920158701883806896225409800596590727102907349887901527898695970226423171509901778021207280621370559059771013970939997274448052147524268151341399112269484250837243016518313795054113566558007865421748176680121800962252883944875604778082794474962999469984336471082874670680551834994962097603883162617172953728374248261250025613659345893920636823651078707741926978622818859803083566654624244831006022587635771473508635355104168316765716869031684369948988143245640172633448261289877321052156926494994830940099946265471030840016737756722833240223009620258703449032576532069651893892715924906349409635712202799731938862298982195414172747684605155924145063204804166906467739883627588228383752252890204251561204150251671113486891217674293607213403872934354257846142685099802039215030770555315891566294569958103771386870415314667451260345660073931282511640061839444308779075925521019524904381331959353640628464941955406256969733891646920821547606109287915478645059796449795262303117781138989779807611226338128512714902697384585990970704413701964126041603603175145574832427025159996256458126830627246111068155052459314237443768873702659531747699448430831102953774943147852832891032699323472565302545536532352795141650313096970539746595995013592701139547841831815813126482749278898955944140524775938291466871440216595592159926506190201931879761164759720542016804370972564615296908278836751322978634981919079661735607743778557654655407784097660676610904451283640226988931354099890333735317325403427863430474385609593479586792996820184119323248099672837523484554021740392125666513199954936779495654222438343160878333495162588084186075644783878744564691707081309517921367044776368892938452392311621595814500558354406389529576361518329632143610363937912663421694540140711470185750069102259142618345056366400415843170771195689047135905848378700686857222061034412774618465906161348987780794881630345414613992253085790644563384162409437371372619843953348728904150631668028475866193895994676339531499115054495161169586636146452037028936651283405563099974780005622235886251252860744022174871805587689704774377046679471026066928513305697037426422307209937936898818049363234135804386478024527641782720864391876361530648666548098529525168609017899341961369450909921854223059748031747829497076040872688773653075095760369056626846936420380804046251474682816345740741541876227540916194394118114624973429480826848012648668510606449270109279037498024680785212060305330644005994852926782074471011816647294172265664954315640518349273715058637434859781297547610998642598774619124759102957671712887659192646985380101167794179566126762375849908744843858201655041013295403692180565368666918542555161364499668546585434119984890869159398694307891915120856959062042676356780555580304729726225789817972085404661834000147612822599494309521093877985906526167885899516964385030744765001164340528752928323283739077115284400933801592438843129486715002755368950604029798530889185961797045779400648870601118099740259686975142778638442865600890603577007589476453391088586108929423302273571472062244092936503788268165941314727029488008634332514310511724419734121193033598837028268450879623164206614312482170988644861769319032607233113822572300862537194756469827017855016775265492759484346280545055824367816284732285671196857910881429163353926683125859880381428433720214543768026997059097566406673427616459314202804456031420921804741048699962887037919476099331232343630792204887448429790875708209983296323076610441697677484393615648885596102332225457936058944986991268155592682658152820609576810468393831422184570705173065613978141276104956337393057718600780026607293445894805275379446784832486428693728320966197776215501215672124508517157260222596400144293448666303294520707929004790434426557985728651545408628272045004458326161279703866717927072133858346390687334499592772334877679831113062128432481799839163293608191392215436099816355783752066291135143418260951176669722246897013759307303569916412605962705007766421081602462813933470069175483230475266423210363480817637732334439822131445458789649053244153655669687937115042878597054368708244246509298741757329794235504642522573095569822473182480841377410507071640346521970526861438075922438212613751742013575165954029912983430180682469214293643755784875978693954065451832949939332350243250212161199260501230998668509985740295614331700591690581278039327206387710471063755372226091908330298146934597297628176428104104052766434085050244486556612546365271558080280512977249284695399865238936142325040488314620933184429013032193147060708154334430672327337043652755901928971020697798312254249702359783463190391665184294033239456805158238486231556115575292300319780543481772244069639778309657861293714668844925389775743513265368206950170624054779372671396433466573144514105507089335029019057532085415623605964958535752832280334257678362172636623445123342844775783473716375487635484442073317287531236014505655081475586685563160996757317936662042031760522390428220491435738036930462583324528869895581629682280130294235865006796428550682886735678974243752903317038912338014221284859381541765228888020617779566707000438413316753251140175822156874924045526888957700027553827130525655560691576757074183230999438035153226355376321153630546174817587093779459500672726416469820762499115531918819648259711522053830419283503407238289335567213110415639014261148886540645619820887724407644297315952029836221148387899965109547700020626177820378127233213307270910543604167970872070027062778219418280206726783249001952866522005506245550685929797459147501811918592201972157471204172262602205035475483286248792170091494260352047817753863323560020360439421452955979150038758004371878352315775569463096762692792321397308289935369265627729228233182306854040990912789139478151497610269927333349704079480159605133578606139812276249148185830746148946645507979965682502513103928666854918912103242268061324200688048575814147258882092338707440369291353667656885737949599739886971638735986971630348260658375899707102561509730220464075832402818929431511219960212645204735041247922540155582657858483590839617575430179792773464500696221118460404741078365270198376249507956916187755200110775144471705504342220033303706390360267590016568049951780706465880726593057340645395408374025412030935051338940479367054765052198072230638105013878295378953522541488501472348874566730226342198725411451905568892643213762770992841643095672491634971897482530068153769562999846209962046420925361673188430153224299824273419895129152022818798937476560554199811494193629811049040190538552521404878849569450497911059323527802539350325100485719878499838384177481511968145101753685684351737005970303825343327622624506288446797718463948712744773367225673021438437862237549219095311690615175181413999913151622369895905215200133577476350314210677223163150014496430839017030105285972922211884201380062592779359338513127773319866142213019197107905855044012065367677599249389334795974882707939888050570748640059780738041813549465136524055631470612804857788078471778210617291926855420358371710442513854649540229851725309683746474156006879757989365154722641827433658012573697667900432334662667110977513599078164409110495743422509086318364079019424544920938357468127398216545020289882589792380253256851322924410284067020646309783913859942799507886356043907763107537135628433819693853431709545614604217212324969098656224619224409996815328038315337062248128612742108131960599866617433756892177331540609541096715703944497179006625201439159068127017080671768677159487106737862866424182150033799335316924989364839366096202252769711456068145931459039190343826159318937269205222674052218591638372744172645423292106719919697484522035135441292525616026343953415133198020691117392202761954019423252340698622261807114789669984360442086994675986041396900312184793612664622604205332779060632223476535794587336519787684468291566721816923625539503019281477055814371406968689608323900044874515357629275837769640959346113000711032826266203245461464169250715038142361290757086101303239010622276178153570061896996138462565840067191836394917571675714171930760917820006717309096597159544261392232703935822694580107214562257968690574232174837437297974846232874317984986781645269812209790608157686102049938078069659988229955754942537765435447790761057207736548898386253914092944812611789412509788094601335996243252282372154179188609988169568815229311460855489764719216482109595368616395202015396897010533159087014646635372989859131971537311370849498316633257397340083671144014708184234352877232859083445456371932031681583179303918968226260535601432260758318982978219767229136579279051410144369806506847412383259467811586100636064105863015420907712894537650231365773029087273821745962389349871620746353679869384654286552272045026773621329249873125894808230615303360094278534382591068446696828476771212923283634444222531794750497068060734002156084123947556793917328543823771306300395796853895914284365932588113902134529918729472724916157908587324147672673466396328263892358591806774830829371761789136508220229379202023441400997563959816172357005832734000578398997983902731586838751086682247162856646867140849026124926882136354504159217412113292861949379456128161899668289024260000725165036242272053736920878008726567094338910019970345358724670730054134677022275566686192096155215227791472642226872915014779508341228503773402863144089693977529157331703555323869138107717560520709865964737299110928681899293263325949622181106491832601052079540530544464863907377969461437888219197813688828799551289720155942815194118114459054499914180343346061520101370556774934496381263199383065114609616962736124500308398742408013318884389829911451815334024286181961350423803160581200622588304098089891244061262884031147443136061931240608467396342914246992654105177903131167326523126170445200297055330072812018458239506933731454472088239999683818902385647909409954022722602309475239749607271947693829399430518252797873861381771633529318453915568092823883600681659258842039017804571211667050830599623381787148507861149048020500095783663246605949805337770604493438344612643767518912797011046721677150607890637238878447496344196972473596415239417552900262064904963604876179008090936349291953405696542123627911640971377650721014673489297687955692043184589639332103964642354435141364984829001761676253942842412081200753651650897679331267049661659442869275177695019216316634261131136521989837811072246181086645556198887842158959609782205292505575476353106422692078032177731166892764238076657460053728712937706914963380811848767335067429317156524235593018331522781018107811744981863897310240494645190864740964786802514733124741889787408620858338177148485330624972169060623277108128757368534139703544061828379148341344647291130563807291245309875096470800277349440720932642565648380743643184805615777745464009641169188246220733145883146335070726130283533243115788978713772913566599634617460960515563982069603737255519869800089583559951238071193838978600578039434846094451452255621547767316945296818861204048854028198342950853892200255102619381224684535868005351018326984242067474187436979055447825074377192309624063399246221829209653305963847762496227577024680017209633365927241147400106245431403640372152611317194481260855560299600266031532056094099624438845077522740217272551919276649701348700731378072643845273547730978582329261429573218445367428314235418212243353035458642042014600849045655176237377625594978410433226002349021967210743577275853381751804393094859984522144880089968679684599254590207095563625579456195674695135435038877478543278480570824626629105622541424009639746720507757884642480072726590200642998503904007782158805055376071345557433418667819029974641880219831262632551380943743525535376450094994475542758988202921017676649655501227793002968446651820233935021278388109863596543332127891419411517953725670940903909919111204275127921913400811347885341089144328113884344936964940523490090399437738139384165455437313723485202104324785458571548878879936014157944613146212694412238076121371629916080273794629574346583219547036552745020001300438323828858790817645166790158034515310828389999388292791026086769520252112132809243794263444256147419745853222357184404394018725748508263773913474221940821117393600286405446537059347976706816269170703286852900022182302522435761734397158172937962536573743147334967416755084924427444682371006391926990037166680681280915359165978794677928406713591268704265482240534452492521983495586481388463922777238841396650197705742447872484866606790401767333522315607017800611266579024887224395242931505788015708652087509157845814858490991311552702078742444036693846141320720332727258952327737952348452956953422804970161431054681370979481035656878993881663897459559177626657432988061571072126611617793289247790719955365586112413478578576148322109613386565306044837975436645042753101631918882422146599215100865948013827197325803101030644838242586323340697772083950807622718731140578944221892795635139933168123478433168002626991597220478939505209172771958984543276193421034976893043597019095638185696296105532628699681674707503122035836958089417314805627036919747785507153003577230432326556785990054551211839143551847711071847259109617589743563036287384525098759340418392722909161436263804504070274061813872466701725837599328611113698710301524289885124513155189272308547889066561738306492699677037838645918879665920807271398907717260410576742389486236852702815747491251671254182033455820843956427358656606325940152064402718628046033009587308481241466236541895536881258805996173718620241729569819388903443630092726659123803172876085715600592964100214847644981090463772362383411242955072265200563310114914451241748918226607428357822785545904901902498848920437535124624295533333490848633652462538538178449028750824455695996619849810300368620399831392945333022118408820719792888577071510155287128857509148423514503782089600681136537278974305076030825916948856101806958606728124812339847398293654438828346275134663314088598982300283199005869656462746109087144627395358572090337468845568117431628932207696956431634577913172906083444509719132283446445347485162023185691990483845375335358201757336468904834226928095740272327184701429933781191659400547911727840280746818099149314221715566744039947943207493404939296972543606004982811819147579119147795763749154050638260577134687261569029549404056902031721092045434593509187771127930049572229955836477404910218526653883437846298843656043564541578881963130362992444792013631875898658636833094227201443127136192016292506806688071193175802746476947757771666188684314475575648358719108124909623225312993940632793731706970562749819214707020604622402535252697390917439688317197195955538411891966821275997501941377556601822640787295618004668698341341737533347440114842436605011992052240681040690344745967963549479960705081654156937295904358207732429378112384135182039258078741730004999121595104470558701833171431184501995711464522575330199034082615397015592791013407273359201951824152700266770791323111160495907631530474491503994304718129332330125014225182289653637280635848919688740046134671426952730813904363453782074042352460858859343990169424570370555450639369938978470181210961895863239720075451107919995016336553010666442798128985879213994060554030745634538561048245078527726917818596840210056376856266034079445500049695596578477416449443083697041138320156314261079509092054256084679779479251876550873502834328243974129429893609777633778517276247449826297388840636804145884353970903441657856435309888165653895537058014851869167678337935582401619152489751032995613984617824596419233079160220744117666650329909959410539998193045058522034419197439425474279505148520649563285238129162961208320338170975419358538055867932613845673042954146041091103775778285453902752882767121802122141812354467319963244710212698043714963266550263279063104640830543937917828404792552283641521416907820901219741031618349263607060848420519200507064876897037402587538020472868818246465929332077925817956753393302538500194228721949892624014759998523139889100073708756967651989067862796017499023627144782625518756753739122773343658626358658514246039830814520843539006764710353501119521358904989766409169219004885984799076088868818935313863498499480761225473056598409588277614641646867494772242518939476415368027570416748909452638371784487339326639246707568482243489815042785681931714269822964286853528388233170056826675111704290671752100880565662873771631648174405081513911389859306189514037698518576569620371830205505416363877407374948102359868703513605985390207327478923528415223396759651809230447759408908350759943059207202946345491061609167070217434703311365525056015195146132868252163522074118341978932506057166556787168501772548309780414135773631909612171058861537836872647721672391126193252357736706385513208102572145679244977090240477459670702238401124751353318089253404917682323459871611327475673828174558603045341582494462407177984883155136393876328448245402998454242086229214324255348667635970312202098146432419703929350627483298912313338604054161104815601989790215840549752903031472662160885145806178351101810562048420809490769166899967105286946068510420350301180547304647303794070383532250059013256367759196690366014524150354235169867061539467477045694077758511100977732249140721989774427599373759643061188892415100182451276935049576777242024092505905803787989162230958072102039741978104501566169692301471634190376014343908967718654961119342118092080993594563712269293157090494289050883193797302336235367926898357298703181319232649836295586677063810427848418569462767188399164193885775943450304172048328667133838405571727964773931909767874364840447966269809807656397996328590849888383469335791575515318841626152395427159768596265425539680067983498084075783489722760309084712163598994005709794340716228514187067519362081874742829305467696102235929304692583025214360445912337871033771168644407289545392213007608873887183701215028589669210240062530217005149888435432459878319769729666535622656590464340440751296100526376239538094635583437519502528977712734861468812728823986476337703451098420360485788806689768921055398148707133273138488077018905524274040704587802565508547437088483815752212051651473707666834648163279648874915429079493580457694891985031642783669081591746843619104949313727634182842920857556787384483189985386766134772434984583774684219230893051054119698330490025644242047396991151677482614899825362903317125353202686311736675360602659533909478597187890999691168029216740503737343203277133480171623868074227032795578032875690471327228354959644972475607675872630779288204231723972715838885869962794534663987480106891437217880057222314421527036374278470897831186123561014355229528749198588813918052587726221286476887410614312410629160545160387812256513765992837336229344689484174502790762226572781653768941252862812951140555866525935509130054939955222265533629703177494634042348835921284669781302454730179220635273831946924626863352508937904409404816528718947211133910100247119785776499287963677214990044638703191917767139760170746798639762340291880123685322873803029984786309115870264880978239890341029164477333538642860805799021877855858159877538343498157610379120054104092489164807099095456870868119675916653824405288375187747281546563311328566630162602556992546787805126883964080035799702747735582141909721649426962523861891551898108447662421814795205193166023158991595451808856892610367999453911287783595058679551654466135012987746640957295994688735209495741816300585149395969592800303661914762806292312444576660047525417628057222161963249641717014897046547144020243715844136790321644771436408749499850032503087908822449607151387726328663905883543547305809526760673828118462007968309651955689203146185680477615902025828642549530690143024273468064170518150655497345724095903898484953679339740413154082104416342988295197002273884968589025721919463074733795469445542759093880344834552418024888252404874625874004743975159215933939980315832784334907040637151861228098058356336853023304183048902473291706988125889636614238502235862754729751974941258375712212663530807604340818503763639285244313408554162736328003486662366037450215580674335722972629704451568870026830430093579818257742524321762186207801960743229127778340887669243378722432506435096705730864585157707801361189508495763182273359101867976691460752614593939465040694523161594776539615811800402881746502314245521633444246211885003363082582208920631357751459297697792909935243146187230996293110577945191282311774237109091996655397236510945895539737579428212428879424649666716941470312616713812913951449301631443014983877781854233968647486858264002388154075739362224675510788808395274669838338359898880373221383377940921041618981151370314794547356076154349002190158767872070807375399363204524496383134977453929060386900352410559913959834791952522083261004101738872983817075359440644864614148005711485125620394527020687827955626308731396044603870925116676758547211100568591440208028244851562639383549864404572638373797948072422652495203784834210788849913955656703020353958328398598420821680085885310716352264370861110004242902445778618884027566686356502701893987753162813941363348837986863980164240535738181335019382475568529626803539890007687100903688996962468573934993232699872704283521345596033390058692806412974883354780558660338938797109000029385064956847811732333098515448893262131226663815702377191962960117316388691366763810985190350388767319411948804502528843840222404501925119912897962418678868970832739838080490524533495169539683928907852793033558431607739726710439332041010483603117184674989419686203834379319105508151310513843801934614218293635492967990864204186097282515853611013998852749429677085899124115722586935369417020169450732297808743405769611938428089458138501288445346371931869361757142784914392913546471335484343924296107730028754303197535830152316216968554746719923298224119958067056650048798018583435668484225106694686721484946000333110688106541416191987869129318200472720449210382137118973394005145046332671539083926598817350673951850342052425925747032155505914581766061294798441467942868732339455179189007132771379847269631563307232832056832069043736355156759387020197775094061738822690530268891954738190303358560649189567801615288205776950910795073839315917904172179799957813630419136413368989797847110076616891904097902735786925412425976285193701825814124389545608589033292765509427875734888629556757948243108456797304523521875383860850960893405280223957791541657993288401686989298329502836999643525721799615096037942584643539922984871712698631386103040204141341217459033206808621948316599357579751408274342195964883969295570881531493182071009286397730336839797450857113661474854569563652102084218439950769591166165558428649424750827946553838054266456668544258463756831518362810706005545229002976624441917166847211379976937213963384989991442760826634620948973421587947423833692968981546282251681744314812012152557108770068637891779111858768072892904835777291170440799007471350262310680701719115613201933819987412150529161063653203527130511474418459867196748865510876286791619617982354808377046268974037202176485201315424110612835475022611361868415673051672248146807427582027980888349937050038455184992583810371095454977582562324906458956355219061262286771851742138724434191427726182551115366105607205940069491499213361195034554987431959680893948068792687283129976176473398271798786970445010363960098348211902817419861568549435846505766278752141533696243092372006737458742883046459971721800418641425360897495309988470597872017289447419045539907576895108640152820338781875744636224965286095038859077159938858293344675597585772287032899400880969382495076391201121373775881503677183778152580907076623915162868475701753732781133569343636359240067303555392875374821589236570826297465922814533213860679707916496971228457800446047994463103330416012407642242085442840011808342466475392114131539097180367492295607969263321887874062450435436060155351237095076616374836892580031809650876043972202207915903958153636099339106035529201547254609133209680580952247797774472925288345012480846519539957669211972791589575065958144399982868931944843494230619969914158605505122427972449936725645024642537796914270297799316115590738031329283024044813369923344653955860042303835751494808881203804281653291937893554116999856650178628003277730446065563814089470461594807750434837648620926596213076901879451402765102520070051933540253373770012654323321378831125699143207911993940462586998882659235570347623801165679743137521489275941231568294753546876726074590983394151708779152311139994033790145334156465415983417208842181803859244576963820360014036011682227242234138788189929044282762170077937896855957889610203157785750054359544882462335536079904988087437585595466768601535088462923816365046204661771564482277380995045353432835319465904786509695811523237133643389711750530992809057585483875747013634256696853964931479975577495128159714051952791965162446715161058602948410047525428881850223659368317413619129208387810335275632046076148301696494049842073790701834503152185821600774964474050494174942677528880808498872598211189633911290029719807617230898364800800403461838007940591293813167173042906692236237135126511580544842444054925936830794893933601623289570683494762943594520826998825753156498158843664336790796792448823251759486587112690156456566232023457461638793133232689972956358709818654520925950713278783689595909842567895858760123373603385590690719763022738649478235499091688687954865700607901561045391475098630349176466830224864361833143281022042443960713380610778684267551998473751521743905824168268307864541073145666415569076009144148460175466300640454588894601370057488483200504663977292726718870103377888484445766345821391401497969629685390898513172127414029960979952649352710793922879426435017712859298216737814094266829938607860912670569360400297770059904487789770213824283944217671100687978145157463885337618111910494179736660610677968309706455585877427469797244119756655375297682573035304230060871029689341738546947677031371149820739805793458786794998169504226886095715391209806124790668890094819636408761511850714024343725268341592313626478910615070059495282265725385412252356918117256070064714927608225265461058021290654954659512602826661380322325683070227568430265168100992360572124692908986353812779831324338683596017480703999277584614079637283976636655918511258668951669871629632744619010866890779850656066651355770490436252490793968420993909546743517825677803268901937253884911517921638538303816475281090152169928596163680894340237159144556439187134070624552248502933013832949038224160386792314619372313856463006306391371134206594662467064104038192392672045505653886200932383776027349886090860681710836953292172642867731509446229226036153950630274733424728417051126692532324236907748848271058689042676172832867841014972981821815735159256247001376394898319122867431954849783040206135876360792450145866286541535773830720381749884482799977532672094189294455390828666970555715618738338628881045866331372664261050423086712658865227516352481909546898696361181909577022509518678559824355750049667422158185159435010173449840304037448361235506217961380744781043483983396908000529366495266293396663597429513992695424847128023157229851124425069734162010999572649077029314893346000365152686578155342948891066365248199225010357771112796376624960472613420049981186911639323403509878036427902528603805371156855868675182675340108764083885651745313345784201149193053023523908726297681274577500128035167975224938363259095173561389591007007588966706307942091136322808823916502963545519946979971141692090242536903435351886274433360236844680057892034152180087402896404056947579133123703793846640689122467142498789180600932136605129381549981383750313128858688567487252577835230766326955843501891606424229908462145286669488857901478109871614558464035126639392481508096074525757633758993669504986957322041238652141567057769882383025167909862559159454582360143040269168255625752516460189365915023015113638606739566946554144183767174668937223443455981059382821146994335410590430280155919639400901088890981853980603804099737740072341403504423364420277413474932560476911570333161342850978583846907859735934242825297858870225768212156252357377804816899359889195551655039704276336391242718435534108646211215261662769955945544697960802853449562472523554255012702079278886345480835305265221505321174098912863611182799190261245120318157723822734474651345652254774505388170409697403218236685257414226857149893906910146876867631622844921982224085762578250401432471437624853030696754334874783606839689989566242945831671970990961228399301806225791383470684988815829565914391102235251662096566847408224504100864875505613325358057178353026519114244140046451755813336912194066187148791939558962637966585327231466756333718122703773125454834727096846728116461570152807676226853440015229323703508757828042655662644578167671110121187146513987842985943906756338989826480913592967798753603256980675977799354435829227142464373859316952297515237089241510271085102016364302379089307772897194740366551438345485601660973075143977362067082810294643049100414086395944837699953358730640946839376949213294870646375645623868624129760324937330388645321195982313002206967950990996852250569820184108712262548609103022566106300811056168561723778778604628306109211993989146228677900872324331178993148216460098915249988460360243982144367739415645659044814082427847776318737107477591732036692497847584518718149710572691145607451589007682556539108711045503186654455589391522182257858845572764919828619902308725909496052738943900561256124462835074159666362976471240301621569671384042818449688126213663278088736619506612041649728229729963628448017989204102327614573316863677107649499558307978509510915935223643953246867181261450899455311063144978256260719594349653266344273066618334772976425904696522276853347666939145324009788857181077547775626066196432597927247890798527961341297642846704469690795254433229103439250189655811566638185776041628833382768039363243903676605250123135377372420618939252585958517779726636712178008597509554455963322495104043549565618868799956375513475989563805213182052456907039264115762148692401918393807059774395480463005671017123919533478608893840014771526153686076260386981352803197976419188321980121748183694418056000973723117444160146410437366134060599138422766256200735581819427259696242245820185399475994648961744833711296787873169424829820570230317112546831755362568699372161712991988096738879733753868919505047981317869081809668881247295147606039085150923574633529350082766987480247443352572460655819120725126357088493297350147876055565640758004325348541519408501955485156331175207920872620723792831316320553441723743831525989506267008021862138454492236525157065580005678456534223756721884924434804240839944775879914468909721249209020401476215342686848555398630184149555339983466249162974690596238371809970833903925276999374592923995319559684362085481527256367750123630311339317047109732223626703461889620998194664129546905915797638138009558041548845125651856759981795932404470278076187428268325858651499120328140163872962396948677251886175230803081072366885515265799610412466799399421647750917764572803179540239087455729477252972074572019859754660928754688090109270897054206090414348129124579963519486082826455800031302265403732584034566119810661586528107535280488074033506245261518538078879870974251448614014422999131847319174967248611391093445547765563374654637074961974079363241416349017972477867222735236092206278649840377496960508651573959347814810071719946340259455105394056355086090920792580711975786033813889913685543365619697592126374802707398707361865083055768626605859188784569517976360190196431773241575466261853660743655327346028643990420376836085291261605578594420408317466473261041587424982064276273436368676335103027258271982898020396026888917872559110817309058904819051541836423173882251113331871926568805461371807255195165930511347484645865329073297980113840190328030517819441505902257000286306781375144594400345233547667234871626416198631349901598197794950508079737905957114754499539350424649402356523594628359653330617796800228420614052876505516544566259973849385942991969964089910943298147727869927954410219874291209244829354268228989307563771760665556340205928877850072085647818121703427532137430522702316206535100242176164252000615688804042452818925809284970435525268755643217957993941925352661125999830496399153815050935313810349286874482012886886534702308565454773928275914420301650233963569273925425788963257059704743688986353818609887062261951073729347867630997187859958714842337850487040167487239637508777384284037640563894659685699049085620194220167800454532324597378452557764118458543385661906708447250215347412389333586628670440098350512132419354555188069915499046512173332450680258222109807252515314020473992612539621933804890527584131972858311383481244990550359287283824724049447131231128362248922841978649677991348777256297975422851425247356816257905109739644146839626668333545705308068134276701365037604971774539724435414619368978656458218683781513016713465809524674475210469040381960408118768179767946317084880576818493080386076477580669031498726113366672755183654047597523962098415762998972448406374198047043968908157110106317304826142098648967362332903043216952609299526546587993086638437404921430712297753452123820853721359626027947422925816999987106941051466423424046152365567601766321728106546420469515067197402005890443550694695868623056766910697435910066356430860939636818833822557476007974746335005959716220230008464280866410828634277823029958298217372025236225601735082649038606827122153054759485875188224351997062358327072728234582924694425422293060426995957301126275996147439504043765137094875900703495012270938927681932412669815478524283646911212955947127120781894239080891495698628137258598006606626021805532578548094753459602293986706563835304818341040621016469594826109670961388711756236133738296036370101190607935943053904290341729046727716904435893004761868641639580757934089831510282659010129745284892158833387803113906753122227862868757087170574617866799126951879961153666228379237121471586634149030146870235326632829316236696280994644653337251858835895335524376410495502556951869800032885890074256523971451967869791503206246259289475712377009379763061143961920821784655894261658816938707016507230402525690776775014600240615249727322572211865470791268983559779270140361917192424428312220906373432546171898082188740256981695704957258111382983848481955129669972494262032959709274528519579893393772292288208625990525833206144528891027380171689465022676652048164389507580167946939648469988730985923356761012237421575131078185882883050045372699795435128367230651104744616919072078756885839188915286308820537248927379085028779688775600171797676149534119746357072596201929867237685106102812959934898068873774260675562235342788108727041335522683158496123041681295927991568680768915945680505470507822953368942331078594670455627060246551046308082792537292070024433378038074108554079314428060015853675116726908875614922595674510173412560506235467506775363604828577139891292967552599363022908671379237758665465725103853835115107138703131915209773259112163522426851628383768697628188664539480046218644465718409089985316604812216914212156632131264841667152672966143138772204066025686155214367761871144506868020921103368430046403387794936777491182128030441740833596538717987253625792933228331019897546122502631067740740549210075780276553950454009098290749447076058028200200852134445069735591488141070063921074291285579995436618438683035934420452252683864472401304331931181365740278143508715868224573460461961730574609005281085682023080408870982754850257496538659095840326880436050386867582837104199428686363822164587027258625148080188616655100490049057451494637401551247079009703783054185261299984574505280707542202574218173046096649268671422268086894787181375161755853822981264269130577630241535475325259178944525352487632750603173139522737555754035552605375073925686969005469446536375864446468964833955228159647470672523405390778518435821175814085525447789026831751214845232545239637603564813783315318749666235989733252416895365087269448294520213839650430001637178372512213732041060908760860397073181199224197912073902902855603478413853124622895293508127921822787274029237790512828247906242086398850291992719282710410089864024543112782833238174659228593172378862790861270403697516267123549796946802211572527595968863513335978147813827165173667493023240533182997296908519290593833477876552035353614792198419558200322084253717892168633954740650157526600511131837423215884088773543163910734315842158652780772104484732688742097550967346102075216164949150769310416751936750627313893080258282591574114338647383515002986111661615017053870121769634916887269152212905187695323942422572728757740977283030540978561515950494230379374498763330236522376728296192906181953E+47611 Rounded Inexact +precision: 47612 +multiply2 multiply 2837326850029935535529275170606161479810544785786671643455365113690014062782714009295787547069263783175261649746116906862501066315165413828502058512268696010888721619357444721661067220869954975392484297677850121910106574491619989627897161301346735012624783873528412782003711063776892697262529733341539748694035356076037600080549260692882591793119768776645725090029572425500510343615291537390018200154810211008514168980470492093846714891794641793165567957688249452460821667299008004457811591184295643404009236320061784206814671419024109337199564589726634316222642014757213052986399731670471584330386845668510699327579440505987275436495177415643187829059143221624073858506294677254975976529983190691318711773733166969510080481971954186165719375031190407736015803891916955106068931585405483173753813884170001262818493318878829716807394423512308706081809181889005314468158451685553883989280697362567145880743222464645386516652714190466673237855950946138924876116599955066763888593199812406274304267673996587836980774102214174628332437910338384824778293026681131429879244630294582222778250626651816393979075801092902340780230816805276452626176805698469111871445126859670590268696530926056162581033732463384533430536533658769481970445214191209431961563179061572343763725943934825219113765967083902327807964671354293769087561625305641537957592277388210338914644739522011909591223045224338778610618894826258509965663946481286877641961996280967620222529332671429962534629159828190431889516999949234872597409372166363102122353138659835431254986080808698138972135026355609841740938124296880580345482355195708033323546130003268612628287136925383176145591524055531344574694032764576416115679304155692867476766041472708361205100999759518228194051833729623205717396654726044741966697613643765942171337608186956669687876875559836078972750973835036093071387585813632682184900243479130405551486989618920783581600357867415664337073232771059276387393029034425020554636444702173200972660695055442485076457840998418556354355671957817717119969750133394768889736535882109408772300041390864589187730223837144979978497673196752893795826898640551586140804671436123191886557627487894635774727740732639212197878323993871956843044472253244192011190535750911977822585726847182726369451208469592645381790315446720305231150419473003921081683171563715702338116139410595963552877144748348972432575806749526940557480163275460146677721223657575201817477202525501392779103681049846931997167295122685752504889085749325911709417890282196884108039120783135809636816433507773272422935778399742413287925273194091967380613677456352800073105593377853501447961415857922221973280863709200549804909625681949824204661284017897151803659048404969529350196877061139095991449316988355944763390084406916288496040520821932511611096975668831321774398759095547783366055640759979247010226840636596901647397410383880204256297505033803366596071139209216371949896818642786444937461868388633993069471065875723541774159651292410009631839140351900919814576603512271123046197968359741988863980744118670762351030236761136371717096618990238450484615085573092299031124417527785109867819844573289716724103151420200043414801039310117727237681626767523464759849184991013924132093653322286294218326207145915399983479796348525991965934370684732886204392117824462612023486957002839236434166113425259419986527398086848225402146734306669895412027153494368776367415542042435159152291857938377274367439888660452844180876504776463553310263271607725722141585817037441077401995418056344005099326164195987937709872914352346286066725108986445232234228128840041772552461263315279937020547077948789946886148418599568684811782844606291903102809619867915742518215930922617758583815137414938984227237018883701287129951559658308736898653530318497717867450643788528261349918849547418323953958071227135385538081674772777162473757511077192418575879672213484370130598559289196130805917386971118817513020115005726699354482777781000664411254930801063976971379799996864821884514811670701248509796239587258900054829859537050803139653998358273476538681391905135763498483379055803029659777007473756402305874233301585096117668533690142904916583916300333272238376278712060442937647292731266912622387288296560115548888926188938768790868090864241764149194245853115667364538350612026568612311137231697896836750991850082180510349328849282737980596442537898328725329096113708942596982600477435122715913959598625045139856057981895452464432774731064115351310525260199426905667418569744391668438234435928301166615845491906765351779825638875814132403620774670904010160230271874058190312538508262442578882120105622912225157483268776812034025695503584320734787276877673762921898105334860897850796460638461828811014276642303089668552538852924632850126714375141973395134461459332422776396993955641314020121873553645974211159377044292406829236602897541018807792707660624298869261653281320781769463797185339986803524344956994681813197551873759876623650759831165292745457796024722876367314545432820662573280829922557360505100948268545181974236060707775044340097133500351886723461981157149316233729668567676481431607693138517554795981843168221711877539513578410249691852688784911702920263858577570774645668189804779520876775501398730601731392081120775255226457119525162728296143988943854379121984236680056419515059568158940254409480990874013852517973389840923467739018050340103307736961222961554852384290236102506628237507057254929807737332860168863663974510650455659817943405409916207796009347206322579652220660722689304889796320255229073981400410529900395050943922902955400594710505469378258098881297468701404698699375718132963733516848971117437918869055650612484798276542413446243018662533309967104023316336584839019720242466658409541264101459729829063151073870310757561148484698912019416686076140983483570706082624734998412989040351280653391870611427153287568659906915702360466633779088329592528954691213473800515405245369146198788687095102228885825852072414295791029614786521623341237760289455347710157905686534190692538626353078455837232594099384727557588558952869273533052004621719282153784941269524121136666196193485579210106361484366337021978808227743280271038453339731514412484389655395328525871449424884612607169082144125705765778416688831040561534036658381708556154910975391771561969471195310010675662224551089830097397346681054941549091419101622864146192517777634168557731847368852653264681683867769514646646211600066434355230978274591959251985455749269085764264301655549830730876569629936389582096996632290842134243508035359284621973847327505670843644941371864370842083033721564177871492605625304273160632294468743515687230440047809197520942768429489395135325230997416441600313606222845915727386029103846334089988144244868290546063523824545526441607378887559845155932690432442645499667142159529712779795637801313612949454230559633911299660883161762526869209999995344844920316285630094988636498045224386980023905122900213992991108234964425332363328757607640858072062595673691042717021880416648279100200349911930112584419509017438454680991119816373136572994219927373170999722320711136861526205312949968010614389040591679384944408585564989398260359060746514821491681045784087626950583265645563360854443588542676779534530885507960760026186332179588104401429017413089433780981195952843492637564340260862008132919075436494561861539619000935930290717277564505319776134135849424828461563654290183014841246564134641674165693104139019700455097807052012612209219225460127504671341057896342921275914955302458357769623837477717290351885366754062762897210745349864685171093039282569322748725778106548532589356778890704297188738459385826453858755130306713636162570507371368011613137581474139590958402985929822932644942111293490770336313255095095125067035901287175724690700764480951020787196922061490821408877226885040404621714190869694940005472353587885733784774982579569800252863057941482395006687669507214471599876618484372969830808281536415181873208348358781549863795908176865529181979311178621373343474614004585724266242592874147456963219841669390519791367109520600446387639067370996578695957689963829954078119394490720900843421538250717448910297852131277523939532254098007695853681383629373503387883948246145837396892976708518792183396398710958529661561773463773718177701410212506588503278137017366397329092006692062681880100591866712618225443601810436585294473552415494457284048579984884323770048064415923026334226115235747119659238483938256493231436672377001058999101177428948863221238745874696497006886000895079484823497077504685327533904433150875612585684923576792133319973238366361227327521207944098601787761353764554276249728582350028549949282740214060144395826333441594452069905704801541473198100304220066794052430584584558226033183858377323370964164773974410423324674178399977679763261409305449793987275587135705141267317164741255565114425563889912399860287859580179992256044350137622906172426910107151362043996470719361481657322644023343135211967110061304573867064379304068938403454861647320973454365389827586398758608130593357373436186053363948740274349286266218791369524536077946292028669829641551810297165464673865651200173608757163799182190675937661722072456923129411916183319992103145297955920122264574860001426080443184482032182266663916043883628481060937057210979637381922145043132810060636291799637079674653128379567809417998374315709998968626446585284318944103097854726113655055464479978857832389239090689098390024384313836439539710664879441613134670685732533044950989911527864590661079047256259223968504038121164679447471576299361964913390161733807590851075291577930327695324619104325295518975028846496 5876843673835248873276199202215005222249457413140751132867323783504069321079978501238826552662976358172815809797285158832160871602611099792873138971781662751707348904010945272095001289221610203582986156185922456253480670473447767450976125074245116224872927845407652075999830652736068005283397707310749466859789435913653070628830084675584053195516572056937242640539960001299426311962960939172414122128692988435905678733000650759156841044102006104631876873940758260026860278353275880986677549984790813635725738737056538761901832973270574837590362523922753093088856294007420377147337275455293556287964996766615538998210546337803352131227649883510660485771705441129212113442174530004631176087427325115776827017424353999679503656243395298435000936842329177352512801234732889656433755909789437492517120772510431407321655124840264768267799540918586070813441358266579922344239783930867097003612889420819807215477789359288031261037040239968709185445319468496389250659755487697910573189713124332244291210716934554776003405684088268361033677155344486607050017388589019428350295079312013680923213231186901301953851483219808993644293561770846975647440551176991814379414822775079946038887303998215638792440406005582270476776989534890159674720773985185295369746983148261896433819910439905789340431345532570207838735509021201139650993105533432983228673946219171594854904348668288191977466564521927202141545548674816277612997435286759078677733548725073179650544814330041668046931193106096920159297438156552577938073861454715713349866457650067604768805157103715586708417463000836306948997721683624429916080316416380100085855435499885262013438444044119912131424650550830230544785405336113686231479527570181428741768317787130695311771405644706494469435651910793665576673783279146143882714613598103676464193903725892929311469060585641723192248250832360558079638099038967717769062525487146991020436515587797441811701920228268479314006545100498480171758116144739789541415021916956090143882374226573291950332354034901328353299575870943384718137995874997043755968516851240102252013825639109231550739397919298954281055236042564780978773331738107308273438948192648771901676845151639562646655239244105356029625095341288546703996661312753754570380007433399051905551975413238294891307036084058200255886383941398400454439527416947658457913414906734288168445367195148713083372659450869618641134935338637072177914712005481721765304395348471431505592617225455611854625957179725523083994079811508632303217895521075746551351723571239836416311798557275995595001000815542486678809761315314009328199226966469562789954428116795086578901531595117680125857652030966021182572124307462347662438951275848011529654800904789910825226847277455262322725295699808216935928583410785483569682276446015456531056679037011665430451183814905888372608265149655860077277878927473478526332885493583924078131957413160278688616781843774406138187446651567120522453268992486542864448824518078706792296988346767275474075660836586421163872359990129454971553776080228890792279949947063296618709876557079653086633085803421175918786873969769408969729009663997064830906451322346925192291415983468432146020165525709305444524931972808499018045482504102324485126890979765081297535873193767356437372753081894488697697290765344089858586107865679767730443041044908960849386182433578981908701431999803996397879190864422883310435147651197571991632243978587182814355034376105543995233510114333169734174619433453944291760898499844426075561968482762932219150053741236518334245062800415412392924321290394604643157959984091874115310875404208040162713191345872251626962553579323685527130077185467034565397566461869653149546807970435653314553500231366929025610358001553531821116487783119577425160530610241106707974795124827351019048227880723715994739520239161695413356526019701788090817341033658649173831946416218846405564273623801493911397944020313411278646987753132897743592825897143370995585163279726745968187651764227649208292643675275934686724980315211445679994886893443764547592342777863273502667533779369017323504979375453941594615934902081795999718318464246000225974772613587883604094604788000952755453007019825414502920287667830787026829297569299245636997847871128241263537619535363012888514360706782030417035206042671290690252268942303964005655452881236758864402869808104398397552609243570712438847676667135894954443978754536939398801012110127388260077817972058506082217185582818806344151084716315852908993966203438596596906926692106633029756097929347691826640543192444954657345803752300548343616324578060700806870517454085976220983551403514169803020360120088304316989169507970856254103825926310629463581775902133606554875716399281245696627934079429180319426757113038988858635671977266486901871386763016676018880431379111309336494441473533900899304055050309877783537797920513612324176067740249143796612699464241591731968792987736256598028895073686074393922351620381555973915509335061758988708156756132617838032264623409499416161614006017448223909500589985555874605837307218018451914211409785282482724379360373058827605943584346836869248254084277265844810597551981262506844061224848667301262554622885605831194808447985299177214173321221086854866257955031805700950600062462679876684531948802436827201383045945087950693820232176448161377950657146655701102607348601291854349276014301211533960750283265711999663061926059959985349513533222840156723304937886325260907484205125644237662708285346074763551451486172836082489878085023419818846671232317571555758714366147958751800205110965371597033347287944166651798928218324285308370348126349900207397991777148866574425331795923371053149323736915979810438993157571374921169081002037270543442963622316442628218568690304102561047195120702290194610033097935835975000860739213163401077247667633070469008462274716307630107339517025591401705857104639662316213983183442329832780999706786612834234894785758769161760960026085624179778350825392065322648915616416205589563496899697020510445498033827516523068502219853356421690219215545100463318705183061652098117543665830704721461103180619950336685463573590184004121428181576959501911943856581490288149704596786111564487969401490091269293222206020792420896924924868783660277105214516541081903849444499668525273538892814326660753735140378797517080510141337800159513609853079499771898880741948677917665821764359009920426545057449995566497256321752920615958745232017203403487911454899807578938655344844697536816293637045653775147761357999698690086803548808696651639482721184104010990351224476532593598487738022502844060754698383902668408456048708191246899565395403776932054134932795336963008471125034781122401355637093714923944979243471737705297991554336516114731022717797276979789336228117647286988808870806848984696781722728564973283948795323597994696320187689860223589507539996709794284091999701052525651209322860639800080676181210767026279005194829317087688089520178017326106001453153970004528999696985851112766347311768640955130632365206384437858780975388993905039328501891912017086218359672245082645645050278721755642682297815157819115373742509483163586689547187446878402568819385505827494356109900357386886626608860420390650291514858969015340378767844015702893614876876119938117029480476554378148286088610373595533402831277543865945400460381944915581599221306131967548220123849792997119083783766725428234099013209299100255043714100952449451015387704507217625527885280817598539010234526457431651665355069423513469022508162758474220963238404152104327401317373815754044717429978571312031162473574602750944197570053777506875144386223236927016434837561786251710828390657985715675396263654986148594494037860920125207552061288390633353609758236329056024787408988723270834291779287990530299687254247534699726510642481435425420587221302528793834380635044758069401725822346156434276778315321393242798996231987234538216753679795150487739737820001301708411781227373809354819573915789252824521295295063346318136434325020468720341518023741645484329702669601243700612611458321583413028123786586954441659236675944287070423195162842685662728144656581768091318005320880658669325885092341944818496918163272226596408221574943760177034874730350762067563579644449650509757276526715988679863441235046233843941516898522754457161792980668796445806825327315490130279466106095682865614545280170067244395589520210113941253973476443958514959713341829695126086615775983774998251482294937236250210198152098522996336409550365531744168276746924187848381348557139137818978445853848649047375865015684603747884457308049688738528600649364945973526020258781640435815212434093141222743754515447637312062075253252155933270398552108309762951340423950968860969495288270284448476309385448843361639677094306410517278947050227465151226913124783614897159924904033696833637594916745597580345995703668200583418701310385133377611845141632760597774337706083021670916765665052814096041902496796448493723390471365679539118307135399649844892682359856684801489481557403855107722099283657350024289590139853542657002752676666172322150461954724706002669561715121517465919311304790214633659563426747539336456479168907502116262693297787446168351270028909976459772982808029473465209212264586794711620681572721206570899061823043173940868984042120475451948845862365174461588982167843891897623270271770654313999754990678628973074461363246642743345492121087905884839480593401543724754415134104616051359925864267187561853885008356548929883933019617333835744044579952045647367180072637134036802583852120525616985508824757689641597021086726769284838154715537156791047562745313642778372521695428535319623600767778876480960073689005338638004276266173172247403412685089 -> 16674526349201320567176898577367776173206264128366571373682086728408255869840190884071178265030937852249259923054520357437942104050345605765795610337565836815011090892441462488913108731685767534729523953336181079555084254264610824845999598958891539382062472383784062941146839256324393830898015038380631987465397331967417992209576115451550003296690662218021903310644605623755261634382114895794995361685712974575420962919634608272634936977586801646354211544960123534906146706640639979143999026245714743929273552275723588058483463352892527225103669401417389076157438267122439364919978372082873340781390831324348511573065085994659507625205593845445366452841135847719026010499108267121426614543314424496975312483233082689384131658845840435180462923435472710955782524583346345431339802236232357391228355931041765748974107671152715151813526085354074903104974798538869034416964150891990271643748065199455088778623826402819816338764477769336791700374338019274187818894515082372867890103712729759619309372897323843975847863664124415926033052621806328099592517076109861161881880582707958503492480753267122641424428404659407331563995260461421764318222164189078771260850264295042455867083432442573915865763830047355118591341983126278602433907736760200673896131373007548626262061571715430947020309713517319464717279314988347273187584807524813478308064938953955148468435235958519174587496955412746560329275301130792937790464534059501678577577501027337690884600706264961682919517994130049862104068324166837023747545516337470171286711647013653461157155784993926277045953403739297671504347280586846825208579385177529663327910062372546245757122437673798019709152546197144173962088954327119791508271912514449489153433172673053650545183814637604713282862971542376103443346883987004677874230326129227429917654327091291991260100145337709883860060492866888524782618719284340200808293137844293352382070366547982372392693928896714080613564705167373332791837845240926876131219492469192240701095216882591684967435746824215759649133884778466599622366838981758968057742368831879411386243472304148586024503069468042277120844986329189188907925577181519376801777048296979140614810555687031036895173869862975822501264111538518118068258755266533373442939012475874721379079720926364899375247877331634655091195496910752728936309310222934829333605959453191935295986359600158173856611510083266834359724789843857995427534954320957114576755598730895914241602132425324605819050448678250013632146968449825746140956453249238578236709153474428898035353023757657197626539844309043820627147744561435340499389885801289170453065987701904064385856959126476214041763529791040487893823498249426611429385125302571843389601528660858208009674080655645845513560951127528012684104267617426238621369057566890849371406551544983223287082329102074153449389312759772768852960653528227132426359429187618751914804235753347116285933344070124765622772520379226164295158002535545373372627353411212442506422791939165092010578180196666350218179441482158365279897318173497167789219578345836968232758977940744341522960113954100254034874912903974585217905354053430069795714534146613812238871427606311082995012728068176373753060289802736598645998874579940745959831652014754148897708625566544209497052035050067061775670762382603142110870007882389112060457354106415268391984344036517228259948046271017062039768283105833653863948768435110343170476926742194043282530153589653982342988650382402076171132749208918716287425596950392110355522486850597765386905926007605674123997632286335884882994756291967841712467499420233469293240867930978741850296626546373475794304455170248977369677928843850555578663381314632182534485153466938229131830773969213894627625765985747893342366394555832397084890609897930194522790307911556069649467863785864375646969928149755075178023279551222894697993661828200346122616658029464803900799733308686999093171975170448973255260121078110618092941768413962085837011504496458098153423475786080616520341418870846544862618292441600723500445311261398005647841789605175760738153768270291546186002802655871850470049206594222865634690616373517236005452452302139742576404555959490149314910577317480646126231632039707074472806744800126475764683044280387774552437890859140744905322721206993945633957758026373100234530412273866125817616515142870372800333048727481551525874597726697949256188544300148391935591008265156010524190810317621341717938760287760676009702013699794482930515578814429372479227236103525684240329038085203093839031066813240545125867833617847034980088587900330433547847882871245266991516241671359102523793210941916407179956332473339886039703814542193496103459505964749443627456050045626355423490557394941196401327123307227779331161470407641850809762741414189176976300936715735101745503961564268701318735538408402501878898957034201284829247469975591182455544332467015115215951754733888289243889592395252564781884864615628871672708938107918187064208898915108207581337021631175539957142239433179944908799884669527776654914454023929848573105117701989444825186570019791173383946311829521221982478361064731546132458497677482038597310851126978230407799282111173269230330259886026997100661645876759432516636413179814931826290007362872161024053266683128792765687034711994489926484584345363957833165545095274083407546450251640203581898505089475930872485617463823650383685669482989864628565411511445159071132656381799440072512374802738518132833755221799391951836962821954565235653104460645480290385318667947420480658486457517468884443719190802897386959663260189572919844813059068339640557784910468701698369006581466151630710683797620363448038637466298885951591685214933420520723614091386420540113910363734710921402242546591080266459723603423703262020722100875214407742107026403105025591756600227326107084110129467989594936546949531389291640417528066763682100348364104856624700405586131327246407721056002211638450555573806561084404490865098483364050559934938561900504476357989941165375062043982535701347468731542177243406237556317950776613229763348003827386913962564244348891760863822310574627148389839955262310023289754165536318546628180223363586035872889937634259041048993291080748103481477371407850257198064166925065104625106355302286246566086418329375315348220092394198216276818944554842463012830442144988122038286010083695161577160243816679743849219104138217378871056045261589711822815213674894377732552909615481098812949546600260276617865007081152126243013867310542312540256106381015757448700863347923123805616506035008848244740127879548037303610748864481426272603475178616881329864866158002456651937978603804500177144130236994594056238022920738324369168266410099324401219713777589546435190154022329492665156717418424316991886308299018876114227722870576897345438312906365418192093525154041926904602825404219385021842425093900814536627653578393529694456731622238804651960778085572092054896420713951625995531195896238117948424655695673501994135260321962089223658964267020233261016231006238648708777291073649666109976396676906654865191944357554777012395079171954525713662685854799881732541413886145919468714200109428352549525394278854191939800513327403676615234414081495996503367013434822369427878217836376754316237264213955046317279616745631567528686532868080119130231048483890565127935546903050576751550926716979251045614845460171257192371220048441912920228209303295124750018297796710414637103200016352917079110183890247534240650154434355202220630889147931749703568844455602155124696110634910952027164806843601655327664292054249269433702424123474171381780205894693821905052467498217370914904761469918012147614798971149951599007006440144009222355072814449472898041413600451107381365316617545470185062212929738007060516356128687713739855217539221190176107595049635427784412865460609401617546388721927133547468084006069871861354592608964240223693421945965920293675611991262576379487634300761244019386867502729038015013762565242221148786440682101342170130219986819693473412759178393297709697447499966962078764409398274714967057120377207496413577799428384265782153768880828509391587429612727182868273413319700729313510253733199759879089133586133402865164418099266268901314307142109108076772103178863957498729555839317907759489202575835562827174912589843486896147178793523560510490480300124452603475945888514989279140500990674088827214009686324697828775425983919487449713251176075374710702429211972363347855246318388340589468391132447834041654279617205662123810757106849482728811430020248055489598106313501992233945681120774945560370339471031576303415237747814863895497748460606893033332933992324346707427392026132391481679760604768077489825727931486517906776195772038817763545798187803510522658193792732803919947083046635101609442164600348877442062628156739950887031194727031690248256292842136380405873855729365363802164303799582023001901958202233042684213400012169924396852289808135492714679551324080400106119093924398416515235639839213792266629763744825863403157776979617529241200400527113774537185702604313942504085202082732951733097647208262100649337591812279816208848973917334418543471646794505187035057856080817328411111386875546210695232301089585930289626685916004293975513599540569580489016011757272644894718744683769350046395144849123134774941243114625580280892830864048854417422167247671246942631211129295912190760059473169160736574052909994800965259529829082951643711564718228899267646390481657589334687986817589600060174938410259201912906837184449141344109840640854628376141987362699963442761880285364763709847772626022463053253391757167937468383331274221902728088267241406990369780043160552149687647392628768121936975516084698947391700309834717496975294368326893190468269636075694029764137874914195108124239926881321193593293911696289781220394246857071842180366955646156044773907274759879402711749591608079704029951663616041159406618115915726777237284751947793102663387065255054987743404164596217373286756657437247863612395615960125550688434835521776874475866288221099468575115067898100741303843587465607568538243257268340766844117315327033034787075539904034573059428015059450272841518908403291001896375843697701027350051742563142546313010125460960794781856491014427370256995526664704265376938725226224873008071266964784821849933575155996744045401484283690865466435623312260513634030952725379710325470916326440022505414191423986202409863048184385009650675887259917041179512882240060510712527856932883183672525597857417634090729073033145347579524205931891134779206813398959772471097889166254613774073975600504332071389596549994715174499200085961624999067651562422953447364391184443691967802160315117670718414064917289268299261278475176798548853582909760341636369063583706430905188900741217862683611073199211769899700666348492561573365521461639092359975300871404634038621741282354200878344778340555685778659641301502556132532481308345201835155834375193536572747199084681354159823247211733742194541170248338169231260473203430705895849073425632828793420881376182800291347536087495848195107677481757314700927456805335629826439919580783174640303116819197283079182233498582697468387448778271438316053243752226083226843482731157394286904367494924162882035246760399235099494617845010831846429053191068155247147739482256490623696198938890081589685918057164270522371048062765916181179689858917554985591050764270620108341637527061955330589458312548271576286613715033849122844731634554253211228886408053229583830969761496399978565771581118890783815197365476859106447727156995635525375359209482420671762131349725118765162811172506544478576232896023031576670576694416766790209530314306135698408060475261115054755807784368457188108501563029136099864589827628348183289628990713030686973565500083325202129740284653146249224501395543354134768162780912454532612428646255397868726808385884985131124565808151778520757890567451914581845351091243542795935457945096420329980257578158702990880422091963213226794817982785680293827152051696921243164325932613714147539920064544808164374371708028788451526179357148227122710379292092067953277635981022506919565176966120921796488089333544115945215946642629426452707119738796374188607416148238830894724114520011600229445108395853751032351663466362198478110424834836002815031630305169680416336971336938296909918032018767070346303029007352798196388879986325893043064320167901303001607434268940434754568545040276541145151070641774693498191713762849403199346366738159651344121209516526819510337175357351287738222067880263021872531174643198067105486503396867408342319952940047075979275128065983274874949805613033474831180677713577357658319619661740800284515475367546258691020024743594303074596572223530462485162006089257844863809253439940656815823868112115325295778288419797047562584849714088527117800912661959425112237625834128597831406201009735611726580345629333052993951600690445522737083423323943944900582128854153916821693853994540772306826576519127009460216854505405422014522632410679420991087902063484558390335203966204300823306069781457395407784097887480380922922030618813645455201795121367824044494649948212232543640799626156311217796373867586575509964621915988495218505564065529695279938871156401500000526186851349695346724859126844403430097964642745844769579544515599328703950734560906096061067778773063113037938802930855741131072607424468210384056957220702408958836031293518434984658911561195061868980991337752114238084622822286919843914673239174300355531112500068008299399011655879218483469529387784002884068972479941326439078613440332383701424841253348992996850360444503054906281613945151913664610819120809878041791027701654960621790388709897734421404646447056971594821793012765812118044248471537549271561211810063738043974669627254712980526524042232473605073516560005812945920005107877517587156793863893929288985305458690411267275476062406668249659629639252482814856099054469017511543591324362450120100343739806428839207564718975471281730901989083328424078946488261858956629411673374088101308877270674129611512188201759170864482436495091494533523806206935675554836089849424818068178016007978391626619822195652913454549429399283333889692259003315194833492728701038997647672985171283614849780280950082000939253035210476343030413782538663382486750308026987212136864812075545258993055003308701509234963904004959598909746179533536403821277143956360793448936143659988473982870157182575408601122905534636415087191967288314039236726248726352386499848131516262181136840440668119795929378999314727624145948981270936274123357394982617962693031244636679941820998455245187213013806186417559230704857560772841957355817775166912225126533157307429809513896697470067374352422873313494465483371945386525814087828287082225435299880628453078809978285725326960955013978779286908271473015802696536309471138847799491777479869876468545600631223920223838741528896782046895339336606350867529113178968639842941686657624024106955084377074964775270265897702820184894466554743184826709357314484351644969160421410611980274738466472410349929364328718319549645965750040133646907103753610427341133280305894115214269808473304895125970561043555335928879589037640404974870525546601062018827952536850762570248296636575636874166410627545134959024597798280736192137943251898782530183337932058954389249970237859803922956892410069020524761650572742702725964167506083466925363370897588697510306096157695528600838231232322541684604551104086413259705669967970484067405886433466197078962595084747979597149208046191838141531265182993613874947356453520393048758663488634768490839490061027015063034327874369557183714241752205599388438307874614763476700634552042586811169289430627316830748173436437904627405407617155379668955697252336024386523790365313614648336092661167767371615619635647115443491709269370238697496177008094279328473721834620314549103508133536547707574180250733684055485430886966858905893680703298446872324823317940282550243864193206246235432813456035516146404008066081710251711325720817991492506560926588962823444652095113142805797666732331175468439411498176971767318500316103966949502843701073929077074817292026764204732590416229957935786241483455238434111162943272334218937056578140724612716008350708855543582229788847420792933904349819094167368994221547701401377720598986738227031060148422570558718589400828531622039664855862403021969389743082052818409227302324042179020012286089109361546846767358025613625002913303865598934651001656840790743223260389425709529669397719643689121205214816428324917606609829606690781970826063882562043825803780940958865017107924898050147179859990101921669651820644098773303950768804045314641136635491620984957095181901428290213364811556767115218653967563555187826647875107062665732267204249505222384026831999856303156940763404174175419813949817917130445640219166606674701113015779301114428253185139624826068174138780949751835102990849894623621494608980023125769154947838511881883762620027486945783075127847772111686695198614402435187010556665093443473859836088701637781630583763364781259291034947887228133391749251666108963240593834909733342043493096013827164839484648308468548228037089401595060173107648945444239847726828347321599938029354763261934611940452713053373425079239310736588635771787705053611223528246666643958886720783699653667177225809052497214234772861897720915774906590370941306031716125061545115686976538782493575546163665634081963771742056002527705230818778797117964173920442003031350372465796205805914702917972720233662801965583659515695716054559489316312105055303752675254324538897541370308330638758265419508298992633496143344737820388171944063405682364292265678999853096594900192605876190018132261061331555861523281180378057721282752092119030198050989843379360554475934178001184922816619178662133551339330817380850139793356838466075972832894480848884713647687472405304230251469659714637097241145315662876134891994546399316583809065011403533763425711318527178822626025766350344597692309883194078415537731585615384332534660025580059634961137020048125413475414149827296773441323098917864797534957665416956055280989663350083841343540546270807522885634099490756984511787188010453916504353793724131996467856459147695390869113062501514308329562848145008378411032747477876114916071886886613523102049216690477307299507564832585859258936495621769660799642059839538410501189122440726700902205263454921641371511769628479079056362136620972135145738569518647511841057953039692519325314063489723326580459781244049469711161312593738909625030311484470506202466894437352510419325934873661242624456823599093995280338061131851185776153984489608411935550225269312490468065067622397729692793711310994863213615185624568389895377835337082782070420219651158349721980859759413633532766459262148065425602023571889262103489603607275769553746327864900179437603294944522806494364533933896615125895946228733353451853210075580595218756684550618672346367909414736244329524425797202529400840179053976303496682161616059755423097503669606580832947165728906878480006883067333525373898214884902857347976079511904905495069790079867636313969660503880517011553062847170639677793475999077429383203782659831456406142615317658556800254714027822078758998202232304509935783705056983924765046971683228347660961202853886706236085878210943497139727216303118222444002969159329743436512662489384689609438006827076592841614449531475280625186666532618181769098144 +precision: 37228 +multiply3 multiply 8954932224491216280516282396031170641639238819617932284954927998704633359278733400208104352246895087088937724828588376316258996118239790127096300022391310866549684238569606154097915812572367965795294800077335712249909968227293354643753992578582854649168702746773957093172447852734646947641979124017910147182638365180424821484713110231004530322428139603868712107854733062308792947434349821197584106215910507285159070850658638244956252787391123871911380120416241319570861164911672993211021358580880148904909671221230947095414862479911158007634969183188899496084123990624564709580110849956364169625618409148304456068147414377498972489899710350345362347796102677506324742542532251171658012869533155265826906395380046089962548578898354106409706221486667792748688250458602401338644136662440713961499217866950295720575188468510551472983402199018290488087871675823330122085938498335259892542414776782833960732835967069969665341809026966793102601267452862796481685566946200990257998096347123730200761999427110438869413504764289819742470271706522782046601771725291728372068288646655349308646154105434576899311033923205281013196463815904907134341259800847881588199797183369921252343649413398507959878734543354985872806169186024139252492977123052364820312799320547910196571724604294534493796042075417340915316616807513243113762445032716795855411530284270590696198070193024698487565483969927076697998021277183807320228306818803539681775772912808479451817281569033071085115994662437675671239120381067385147180459794520940587446597114741113501050628125629331773825301361139888888474500754496730763536670005907310020086708820199964495798809127533265443549647909616538797854988444396458411683426393978562379996323441530836537245906658817921723507024381648733631166525390093477644867404251539207160075567978288368481744221429891338681761220236604235823679657580691224022593724280225562291088035398269578618159986545212039396679829388019352298531033866368686998049360349700669710006463155689333426590971703408490871314731220800774178187550746054044392468948778345283410239840803149312975220502710366340260075105211485611001582745132171326731560151411955197318149021878344017169302803969216197690323533324426078069223880143324701908909872555135802885120274595705155308037612549073909025034232746156004804175725751241291999511926696233697415210147365129777652571538288367595478797198518005911823233452852161551016742908890146463132269521387553818331000347081391938756508138255837605211753181759847632033821863338602076901539003783080995858344931220842582834958137397456030249767297376059215775303545099013115206780338904334675113489368963451638941014244150116695109341854419322592762518979191655948781233947691501453259535234340874118004802203871884185358232074931914493351000222116894943891584282777041024125776671175089946001126201170054780087930695069688811597497066998275154962234994374236080330490390513872275835198169049464760702164947595403453109930565969276226687187887788760649081393064524609633240474919584622973759040352861359088417419805223743294399298929056350699089325620183409428295992646149711827856742634456376441238869601153407934229197249353348090009569102553208358062669483747217729530865021976528927122179742464048833628045778351264073431181060568798043273674541669200386897710191217540112832259200442467549686275376575256214222939199250570040521731540880941504101452320907463575192028754784545606878895832355092525601457750212425716128223397814277807197748505131007727478816578268289488947653925875371922834151336383127808755644284706422009444343221213154274151892533659121770188663300162081878653884761549847301711612475369571603498247837371037201072045796663667478670748770308024889290233221042814500637585877255875046619165795288467828769130873823129776492287524018847498306503248782098846276184564621179868228168333289071601189906153868288953087126586746054618212732350770081178948980204578011879588299766591117764120952077267746231897382382416110709183850784516071441799285496867587000361024292812194097371092353545351663091962691413358650512015539597071341153264869934211823312369532452884893111974889998303997516763652557236223988818298594315526195033465876251330558961669403417782445337707940600074898329122327139071718910391403985815564514075720950256524531951470064091181507958262903101197035967667913086765409475127596657032977687732414250889834517892480061393899562984299161585430094683839410977276855870907134259762033716524429990408881489583137638818078915746438948157167209669498587168905823229157947730859014781012543348419964493602994968911374721283974938104560064189942732568855636386550583354730027468388614585935809651875563292024402399859577670110857826339128458640764246952659451659828057173501145100147359091111786823744597379204767959476392299736342995715673510554264715541620763192051165847958007081409139119067347891555569108467601653443209236356549448191968716706962029868326104445511372476494552779935352382160414316775881400301196457341312214385862736932580563904049033817781831783381004280615967601562866942161703528910399516833240641500064861544070812540841777902765713160340440398554211773507526718249924156324059892947575996746346805621358578244662286884316760550257748399204146711228116548207723754837614044962841364623671029318305922155090581761190486094910670815707267567070610528479922688802946661985271887661100116275676722473215560559775599256545314293709495795146069635132655625909027871704160018469440074146776403628792915997955443010327249078909171013032486632470199417125054743965419323648534942702572855359056131081906644781005139063463917261511046476221404722306946350506595846537176308398133213238885307872246217925290128602122628353932019905026357891603151301199508911665181840863161242483725988503606850964459907642989162946706561530820644754125190464376654688269860047482401482445009427351994239134467570290326927840515738062031565490859769237111856682419912935781300162752660751577302300445754731560597976657709939389292198070799780581997051987478783778093891699490106196661037968848741924079023151567886931192439185017188296229143385134024935867335828135569551170779625258546857336789031533703330217529776572384028802109109118193287252728989087326282104706332103767087625819227316511988489934637670782981405016189287946904736256371840545016075677160176977741240125748553172689573036456563813828896251432177258499033470168975648464997442056190279017948179400526444463977262817120738563228971121580005186746637092755276204140052812439800441995247127432264818599095619555444855136776249853744390537386118251845321958416097908959973729888643920390621074079857241646188279004283462773867582586688716550005139242398667779907728130369875032698300573242246278848874079475741745272988642541343342298552853745487031255047277437667622996619121537192159124357325656912344540624695060787127876742258470946525382900077750224899164253243854016013636765353805848784812790072070491516375643908051540683371726181082399874740316385537788412617821287462077782699982900931418690216258852112339237543926686703599121711487803500980069368008015546960424947462885934937416995255762191479603719411355677305579977650411387710268161907743459933845104730328987504517390930819215467296025903986590321893391934551545921557572974910152917520535701089270081156036809015448277765776841069218973903440524377689454452752522988306104500421660749033641253332699048421212107349565826491835042423607742315980012554633835975382806790692560134442169532960686844277815272834620130460319611179214752050261562031890021475730117466740877574765296924097840843377678441394431577411716929878768436661916736877223767516659224707749671581078308682740587258519952123565222915607972941877862494767951074630948142662050567378079760762016751829404719489660849703868304737496095442219898783130546040626100027612435424175732284937368077922335347760736099719902740093792498384116614674477461358972503629622684750154487992484723523430498020632587178583574207767623234040585373260240850539949752840373236559425120006288096541573493611276437607660442972398936450029346866180142089639619602810101394699333946116069194784606735651271400050953254386822457051791734417035494159709206956361556592233822511537232927066660134137173595084973447306149696070371047249935793054082645582583624108787252525293124609083027920832592601562577445050851118299672370898983649831714467220719184123008278946503725351031927814244651643898045243966280530324869963535299685005213249430695946053044946575673286516476571013678755159736479114655348359185420873846410936611366479545275932769342247870120321404256869687728252562191655038795815201216888823332051433350340401865181637163384020759440411161145672254909068638021338757846577047795397987520390987169179514230407402939108852362439751468193090734268314396120547133169286287659371892971222734771190474732247476725399646326882699122870068419148588148338688395883542131662170084829249031110541025104774688942879488733758818719610108860271186569563468247004377334806826487441733601011882590680631521225606302909507843169704001865328579212286377143112382683994659147132932063365081415997088015376308427065426918986523790431131143111107137763709153938949091703564687901290715915287096364520660311753955358703383250425362727731560533436805492567756755110411000624550610650115241887363197656516202235436642566827986941907806312027258622455075351566334506253329750565907244167483653962521635999296754573123436744727317788389994578040095533349301297259592042661401203758652732835521748005483282252594101645641929146257634165322070710818693762276573074208531123697883252943897511642061231527042123921739505879716449963669506006931786734687067857140938929857840413656038241037040790317532279949525574613316746989549784606473947795715759166498631504754321006538022852213185108833533411403493879164733137953514426362344315938530734283815460695895021121959614775596664830626348653849112270428879197464625135596347636491876199555527990079663925786925646380756740947954976425893910493675180253959269731962135763720683447635760749181742931064711585223430924745950360292277422531044705776620057527171119715041486049458322347676398161236301031533779627336258724386285549633830358073489124387703123942108032047531924109338490869386371778675074213873890843509264933816510411668372327593793917828828727684523650323278393487817465443678934647578985822574710296302282543536435175878846322181649848295962286907864725664091977915052706017048483264074257869279994917534049227168569228321764382924931264491015679195246093256059895028957024998339092191286181153138422782204110918624199136341946541500746073391552733299715089202984893375063065571778467275136740341096198008516747202775082399188846926064678714 71589736421868310823780543072317809157473177421523652403429042516597329256415859969473812535923628461052443245015936917723436635959353124301307997750545378974101424709069884185702662488876679261916030971360286928537427193176374300191584587480040772257634236903079086005703429865787662711096216353141723466872004016034107781255621083734920692295776077545284792075542783136562049181413722015521297030795937699799659664775056739563338783099675536961355042184601053670718484080154242126682147270303932826840335239010560190106781987121134696895808102898655096168644420049918498636517798528538919960128257213202928860126346058096824007650206355667035669405185633122014372563407604038664131546965944543047861966529127720916842121868770656740026194710628034688280571722610136349013069401082485173556339705325458123440535423701673355120982342595811468446658771736222689871569946817508338922833037922420605324457018237939585011630751058746969916029481005716982291207464646948875357674730659209531389001756204060071387898591875346916341536539627373888709540228605195671436995069091168629126248109400083361554462700945791206376700762579549671547234608401280619610736704959179195681544723232759609206763454307341627837217850195439926224447449715415082386839462032799640580102238242267708220428537668412708118698987374592722133544112202724995000789520152416767970024263189156248934947039667172053605874754674873797897177137239108433616340606954097525601153333362132014617453896791779765480681526976247374035987855327612533533419926510671186820091026504578903902591366432108747274638114696501168999941843296325988763057284393150286603888546975479112082405533264963492097368379556597606798649784520743092769995618415063327296973728977940024728161062692011872024718553800492170254890930239253741753020922984823519288240550568375719308887705680106275646429548849293270298090891691845638088981512446287771315769505898709687758099733462747486955625634747960410129710743916247245665164351540076532043879272099290919792241517594471202025189701342956655282507390628052756867152271161077348730123783594120512576825484042481755735701971348639663336241544847013360548293998478551284102486005365668748969712019873509781658728589730279814392442937314159867756093970229360812185728335060101545971990531136755476129446035435360735770757058558526538079645357870353598131326796934990552326552331238265773367857608241340683469321902308195640010819295971895305866083397771191206765414426855591112953696631740594687969617254480845372048600443371946296806967554600018758227730664008005501740929280516656099038137996225471254232636602574178545043671399388534365530458388730725231813469326394662848529212659537430936116517311766607436887283177299623652146291683836593957642916868401486800272175692589736283856823553495231072352934905471713877607341204171674711251991950032456333577684013579787742238559777038012023100794449630412422571261303882652878346632379381358778060361329535093718074257952685741090282154613906891361703482567923263646953238971478270624329881454345261642435993945342488181159550560304547982060061852979695030219342201883072375073461428166192991505171336802479941717799907190437758140243651461228520405638608723859248690629154451914088634176353599965393541668407026591126265598224572088224428543158706586441919965492972169660742961613393278180565260641414116646211939805837854614226824260301212535551236693840877008943800723621012049505312935134789487829512734992828231334649678227289019669137221116533933077432775471618280093931556234119282447405486488065018323817907256107935806762469876672398311835585167628055293150806140673517942730305069638574474341358997639987917942100770108939983402281886392421912795734108747430268132406828693986286182941947589987080067429468269203535483833889143796554821107942072058745477041853785256259377323734202879455899942689543669802054976724481837774133532609394406492459648298973343191675023837343779228418587384682053903431240881131687748386953175498089659217552791839381337118061904172412607293230721433547274247919605488602349531217114236392002657380108952514670440809404379188634004206809631519570399790555396081058637197520717067711842946136731194812772295181274748407306850350913622124447247380625815477392894017785036364552060643867982534598472158271163012429200432463965176251417466996833632898361863857127191769106449987145622429002949662462003286117872495225534777886344280044480148830168270656751062451718346458330330621140817549449563146189746031539248020106218397157806887956740873325243927627562707401833633634782229071981802466500748987458802059518995539737049112357028795408716665502892832709279984382414644390961263100309071095216677218659068208982386880039941633140150807210475872657604687058723814225068167066857995365993309386600594007212757079415810368825803768791440447316740816056400075585436706957399917193573872807272208877038503535200152506570485526893736300300862551398941517699213964848904941286787056575244198688101169242299844863284941105687859774065193063255751330791819361600880488065478614776460613248667740098992277455871645999656760992422762328610094159304053351163074518593730729812644123310505849510823529190229659587721502704786262231248791449395487452872236245667303492103120173191150813159107958151872554424015208833540631981483459643575682447513954412270374975420356451701242411058634511473853991822296754853707714620553857158378755731736284988906442852066714465546979151700559784700517706305023908098597213379191861483229534341222494793017261810764317996566405809782071390439157640837158694523610318673635339710381403779280606185165748875893341457255769119094795528795746821208491014277357591486598633295317237110120089938003887813505672644812995803279375123688216048907626940484462265424695148189282044954881706645931827728837297632063294234145353475056625344606207709366320342468008391720777791057807762955286552436375555535384004911878905456549218418352968687116788471974883699446106250696864643011343239554266487198863703042002447512755016323451213711472164503196180067142894739034693004148599606439691720132982981416246414283315313519313614665261383864869978363260836606414988047437217308982501745915038871215302655041488192278053382099541997729325179710334930725511800160224607322842302723043125240281591125441669939738043052676541238300243425590668986799489900773456019038608953067832235584565108818911672481602862332807972787462848448602944697011768077998524299705809413570511662184766162305282311955377964890063385404967109839059697324622541073379845711826700580470052502946518828562904350386351335563852417005325878643696324299677138969250116439804208509550394039635354840731554982469301239770444284763828432440729224233456410316469166373551904986791701239023601925784224487413859649370703140908252078219258058572336476358070049170312629902646675903189410315062183811078856573561788797238443563754828872126391527383184564569724901124544115193928686519277240585192230150323253151189689436721252638578059001248881378096808678955765267162925241223315910672761499399995932533885335478699532251251091842792350513583181799465851734433941686640367305227007520420783479985672632817354013383890751752254424198179681061060522865845944135152406361752122843930650693938938022002855545295907648285619836850528463611333431096164139267260764507511301923334838033636607779350466311428007072169265034794636207506925523219027888639765933292287844965451752027228599107060052539215383858857466299022439861532373827241590621782727955517326614646531517926554775396609534025708470269213390131864784154603510436823464892377815856804675996536135724540481265339884993119658413677331548139185614707256006872653882075464924950469936571812355621651292117429800660655299723655231671286110186619792465099336084948723192777536158858147924448519911706583969294241572434323549171934337190891832845870720948969573384423589076402997982206535581196589833533984416098426370427239189879911573672262397887227208200417337991759738344397122143219998256468658875335289714775278478218214968243262370972080143531434989216648217136236707189551283584077163873322047257326540532764781064043273275432967732975687867537086209513129896956524409255600384378222608880027788234773964907807938626966257637158538139957464714244439693078425189700365821704027504442378867363958952458371507007309671041240603473202417241471717867960846260715216332843348410462232919269499706470480678243060526643526996704877062291234001369875987310591599885439492251664228082018102632778285929480958457620914133671555172047676327475803269415568920225827148048013791646102540872912357102013320025049779806511604880774522718848448188603310264978013919839283750026304591085380273261359282687492737977034376272818060213971056534246618278159463982429060824035510633860120529487665458056373544704283742027403232596440530257572605321053578818944974024676502911142753428131725102320858658396397756899925295990120948639534950569653126649909142943815856056785982748321841520701440698300757528628099406351093197895511163090826150175114285996362823543047108504829470150551506313479480286757121380273229153741909914891858123410875102600373718775948859282468226082549079436192624849902231763839695166972302564219435766021877813108446686080133499217989625136804663599954938603263664945817511266530861479144990543626469657950372396220259378882742759954443309512829387805989434063098164760003837175215686440830478384227236159105722885534532871187802515990611629678536444035003954960691531729918734058039785754645517159688572660811016660807096923650672795589587110808467759847507208586189861411691822776561970745542639862264446158535417390765927644027056250861856623671777559838848564406547997932057846893252019849498940440855908687049547113449890126119723747922340306953558206273138116430911365754748762600313036543693198558440806980065574532260839040249148926407348168806321404240525073712120331606527741894683027594943611691926935017840992826106943852349594227658443495442874929819262560055226244148930970584855963332439971160040358405896748977547755689119281166645589011510349279758562998936296898297685086719981234450671880717647516266889935374887342221597376033831515439373229519816778604001468333413090613635066133145523530492325630750399055243865131914885384456104172703790742575931404694367714748851673277526608992635607366618694145788652027269233503042364306658537091080893933816236140248401468484233482937728014711088013684644897458914458942407489145200864705693026290578738034537602585675580512941855794063462402734131035596021042852553629795518958565994920038140085727821899457222385260002259135212512112240123547021079280163273444685357513441018837913971099804185211624930419699899785488245163843575465898557 -> 641081237627021038928611553606382061825330344928351206045610378259455000566973149946468118990150617409978215918511999840149622802354997597467821348463020494149154944635889875972663760400414097057254523600268473045947054820150008111778446966560061716585479553195115048633185000571885261163298426797885279964369796611199013607816086276436345926628006538271467336625103223023867664814137774869437840982573133866168124848313519176296850241427214774468660939459329612821880321861049392491685956654041092060090818674326380823763570146528717163872791160935306045310149316834013045816001848278899849345152327109260161919967480438788757418613564799793061926924843706290221656162991503586964403488134271271461539339545239292785516059741348395099102990097184502098745619677492616862485896031531133366442732146147768478794665945622468745848435457986238305429756959904221988556113069823521892746915170708073414437110484697160701309340199896788575863804645538080251584451057271178070207146473754976983033085402606229813896886481592287549730109463262932680337948623940155219653457855579823823328730202855143777956098024155904214323929223957255924604447368679529560047595549873676794402717942343178121121477659522966373846008119656090437221504957559450483716361354958324139538724259001789542261468786872296857470359445360281990651503853186430521794251806793991033172925011142816285245822968958182046923680484590045288885225524663491854322442762523866072079767753513483402097570884049054153560247536693854201612757084373413342586996901755312106220626549470078508594666664282924793597007997093078601925054356340575166754225160835823053737095126790333655769548910236254032379554221321198952665046112492796592237010805729022854572350312946520752959593231890352189047762199006994301670097919119820524031681497539742643444028883987596328712050072433193966562122387691820708729089868335119920703932320174206677428866257910678519881128429910009711552852880593998464097724336097945478919556134038830376407039418911339077986803249368569895119308053462015534145744487968558297453207373593219985156576228592049049586835420248556554809739864232500737705360028240745036457907312726741567840014557314202521900880496559992325757134115628542586669280617977080542824457325371091746372555797617616675993706680337019563584961218054454748538620422655423963410844480345205379634589675437096734737174689428227596747304153676095818190035088490323624402664187857787529834284063206911501522711060779417451511802862839935498439500943432492225990457549630025066931260560500937525977043703207559180259040007126750882263777205423166423261234675449011851161370408410708847686666604968074615948491230194962282052900258993381747592327632181935126761375267143547999127694886236581023439784063949829914641196748224492818708796961706275411014890848054150839840566999698388888411032562291953417805185683677811476064047576176859996304089414820603955416538315899612283749435808177357977262178372925043116386734983756946702544698252994686502027426147405885963478701640222336085133448803843099330162870919851138756335396539679200727258349283701842089527103436945503248010276782804352461092512499292998844671990491777708630212451890978024690905483400387781981917679730264132893338565883847983570254886571621757376238658285103529290111240778214258793702096250395435946012307806256073198018166470078238079828828435133318964753927180723741685038147305662836297602098125635933989301847157331210296963339343369251579495810072409373109168679989419852730275300998101797905496470131653004553425329050666278095442978515942056502080340065988810747449828999714892651543136056791767682046434840369594479862548195639927343106271900275123295224472875736336759860707515714568464726526796997372555347073257866692609914869373261103135433384380089602304597467236420883928692045106570070841676525921987874147035552070520007901576148940473736640240686792020897317208753123727233958445256614978252036170101576797883388982608466349801219484743479536368573782722692268771872040450476715590182633537426718715927290056404608660166650174552538131666060318938436426220846578567874280289613825433063824280828685108221777474416285416295517179415051988626441126405062809059905989518071209430171249022746925446977371187189342054156914076737187564117452048193330176677500535361443292663237585647776723569067683444597501749050613996651556603190024075633779292122952123743120197768336402433384053975206793981577744339971005595264175623256879430802766363235206673901629621927245129268413350405212381961780253014897317070215809835272742017979756044041532209051447359246132884371577846697834196725104137493936668584756250652573752058651262304611100983567636196217740179719744247033108611920270780000309451320975449063102629171671823139294594467816011326636950880762634754569341165557805448542482577924202728121591485452474031214445592903579805056203060896034003119538019615512849048630512949908662162594265736052012456129861129353192643243436826124814806748241223612208500475949681163979312330951200473198919522866829337042418360961567822503745206222071649305168223229592409357089168040738943252608590664238766815654009103371871832669623742084892983114251880749760966760386610205137823164247398619370584907142354764075196584420406639966033899515378655966205330144409758062067370672986711872295446457594319153303302647130376098598137740716375362554234054016373056362478238881323573436165676044594635195310848500425587855066030483922510356449082944316184115003341137893508800199796826702123982264096472513702093836939675705624612179398133305263869119036138465642783317062733927919433551103848844240154626970105728991346425830248481819000269178028106821225976637348563307181291559086886098480635791244775497909608730287726329452049105937348574130432674957403545709984206377582580106289119658585613837784693348866387277513261643908397376993616240530681567931406456685642607567823668065557544329292892722750812365326976609054966348510167432184848918086620212403226680602267114043995040079614844671948144954345980537203293275417583362509747490230000076875697055071527945041533965039945892210939064930401155753541184281969004653161768823847584386631616349418434274572427474116206977862450073870153109596654678054990646096544411256271062926313126786112640252385816216788756728849429987536683798533793675561356331366348565622942605420978785977422053836587940052411030844288000222575909930211253497651589117199386276880196008859232284801637978198830719937932581925130886540873317997576508299355142858429570443144980417982832095014800089206018711733432654944528773637706674010323196760024628269256059544937143083707875006533007011585535128735819716746060930239998441432563224807489328679279897039171317717325148408512912412166138891465297846189978246857141869263607234711267966879272622282374249866031237763500544203290713619038221654980838895639631647696687813228583727195326408178542401063463186699999587673482141844178487889765991996382605475357060623682147255052520775996789324257702688297213870291599055200048961832066730795583842262437275456459700814632601784798530897822499464529803247268457806747927081088701967481933104927975075532567811063598771637375978155949294038526171257184025686609373568137136095796409853133868415083133959401295469848072521451509717706826156566167689632141061965089437874088484279699288139890639179804574348839502949224459204411849476798101842779271280491942926195511482820261881107303860051785546031301626979805810606889859164979141136390256286137318617171741160476694244469611941786136022526723246299969356008255323834382014026419964673365877405791555024028662767615741810846595245556483039953993534633211931960984364602936713329732927018658589446466294559844019979292362096789802585839552651351800880409748241297656545398794744649931758736961802785337376427948042033305825231941268994205582678965250412101317354590081415333899016178770855879009476439632704818066542919449552294695171297313573268114670528359274572351448504734045822153667045493620253592283384785619064252629519883947783189706635047307635591066538830397339971360857016181734198810249107485862404854978832514241386646092269258476114145606577173828242355730339977710492642708355529014255989059752452155146792618287879376926468687632999545111911461612082861978742652303938540104857387519464633180640861777729048616352959923349357377123062385408147444300905759115152386185046249901257129661184569373507183033350019537413929255366553709468660029746697870654379145924744476559881591355219847774893717606547022108428265623392678200750938262985447976381741945705842213903317694441476696913804615766451020543725237557446079025683651048616913350263992566785138421659061858181813571817406140403535930285312226982909647047840552124291559941183828606114336353595095870886715012107565554209731277013287068972583856447579454343310797797930061716892135416265638535937893271535417058673139603253413362447975820046291643378640686114269833825852690769701496591444963353233253488828160068486490024183086351561378299896716750948468706817104503753887519217464718098943245566807092242491352005824948079113522333556488686492571392091081118358189485272081847559801441316760379823477680831376460117202059454219957779328010297497775690789669779887288046316712981283685578790844582444153424206187641377812911803672796942204508997735595319782387409959788887318145982090579330097551919427980772185720459247198169401346400114890458824628693446945766699661854133981317835997335065841432854351106531885854948733035774275518107245411708242967357031677619304522494978055605849816670044631575337713790511852844574455959069251577946231202396997421336349701905484386431011640354830842332635042777619461581452795906852380730109366770618978880319333886220141428087250845589086561896849962983708220524963029589809614545202560704119902539477647327858904315689585655450534577468704122648486752149803028329986994121687694721391085110237965432938000800349454199162630188578979073109963027980984842401721636835495511045263959692743758524597277011088491159308630092571161168398262061220872401402812792280229760374081040825018786563823694926514440438050169356535088726459905781010982994461096525619343889442749655694968649235844764020944714775445671865070728274550458623509087510525387225806494573959465383652420673248564871767914241111181417864057816460934033908642892110690227895339229406681025339316970069327547428691985047226151231146852976292201896471038181837438120811055212700971857812482569227740197049006722282715464259260990307379752863438136597202833640481025226483729849267434030756095493748502025146003891070956542048180849233391247377854545643099569996681339009378654689920453342599924484171620154866742772956363379346827939222853201215389631734247654487423333575459084541954219017087220110920725197374515911648380559300379999182621100459798242482167446168938389955922954518871024994120175102154280764982769757180522671358538575776649883770107665197128231375814349361757401908356321608014964439928301660151670321157515133047216358058151489517352032295021796673437407426436558442719714739645476553411273911483458114618612887798082457433668734955761068395017211674549373606013825463749437259898808147488810513890627394884050559529738465414847751501204261211472550691964609358102823034815668953763683224828724203351854911245570801611383601129125626807577356484966955709777415533436431465445234837507592304827753274049458510267292879893012050817709957236460035888905840647130064878687648741267292999821930791224095350405739594047426517412568779309285247472131009498867298003126977532841141484181782465976665957314959386494914462579952708093619535678324026863574218982038875152016236297824535772595284412010402169468249566733829753806629159444717364595847376081555840519543826213646863688875531454924708747757675690065889141685715177469932028752921965640651512201122995993355688496053610848828686772881724718284448931006631706316910728605218972647782259628922621358550243522504952112193180178959594096738529086142858432771598824021329341341495465905121667565599495092922446262848306924560230953421120619841286118490764910085139295747529212516948743770416899159484075375606533921916096208658057322977532063079824117785513763755994406856033837002618889419122873898724250872558414581380496447036600151188340609979961167290819837443966910892646872013103565733891923303249531219802917423830935780037338177126509691559592221525854741462793531513342303165116621609522380345762965787159878505483251870447716133597924821092956487956626903307107568314597995316792854958775270258869567744636709507748699247893005160518354714709944280173085149096403831761487164711737347490745746115413869926279999986019071158695433733940632386096543797405227369881647428619555986055314773999854776701994554776218044526797875453960602302821781130889934097064437346612756109062682962594045987402418295309213293737387865669237859722151348933198431790912654300066417642234867340181563083187081664657953624867225204445682471573617659490078375020295833566584157039491478334118091568263019258798200447558349266122419069414808556730235744784551150656091925254137207698115274453754638641937252057313853386217054563985283079141385235447547588851603456615070499481186181376627460391885430916265685479822796975046627115518185358929849883800515865134368704259463747153993662888541819536992851687544097982963273740096951623535537980777994996705964208355577804083949579721465952569724220547759982569975643575791923630388041737930204410257822907940363805257149676964440418568901193513205161970956260430998314689562227469955979530938538767998444119741188901832597228085657624044262720121953931309297463763648940607811402940040592260541296912208016477186685272357281054390331496985160367584138539357746656647641518710788830774978599459799635868145137156902832571034352314889694235314496436790192087754494881358593958698821151678675027727714132522592759697908773589285277492759948505801021062475773437879329926594695878584806891836025190264849584320272617182983280670500768372879347604396954626235492787227668431306268410477742121750794193395649437092714779637658887165031164155706691509139641733816869301055670111636863711398863399758958437708454313355240281186267858189381135878175291831422616487925007211062776466064116279317187342825495528754663789656227962950906513528279977793493347274443734447092161915032843728773954069653096891944570684578257960621605902210005755243974136458219144006626507139964402753389133095355646967147342716586426242243183556126115100965337636835902266558063940072838757324476050780633172029477496182736960009082201737191578702642486542498471043340744384464953664568642694890514931871989164138889151166366138769606041052726438999287586253329626069543701440978586920279082559185423264083252893406465391523102280872359980577812544830798724862779779249377937418421994193864674492540161823250856965771504405892846227013434341468487888078039881231804660830911061666794421648702163157994647257565667936820491320515350741551860427577338953564341655928856177885783156093423013579920318282825899305139585931012520857486726027292909113948390972730116779970711904521134569863269399763487284593315739180710000198247413114501283404759690585234464081845397452634943560234373249429889738439836988875383890172748036753297818185593466004117614851137482184286456534125212599522996570496221741318823025113073931899317066863450009685401871292690450918600582321398188560047707220245469456760996659167827274706533429421692860309875251600708403414938887618704890623049972937770452714758034979161817171391836322417398317911724126052036330272510561322596694689645015791226801472245142042690796735592305805862916071061409882949524641748639304099636017152430269611301518175526518092769118021427701435128731446979455541534162190437684476682327417507474577286278267295555888880331660854137923595169452697030876918922550929578251847241422675957650865639521986134995293074540835203880924532128758215231921577046907310093544431066392457010567722770423752212404820018218576399610167355740998597100399151725497097129919331871140497652244785179958886320011023153422727279947268292039753577172037861323353404412810375182228192980024472845815336201461856393566494566892272325279128670993277325302094589731789501641905189516059266278363023697255806258565285719288176294974829619935969867885151935765970056794511056849022626022751168022186506269607384321680187283086511343283624861140135970384186311375758358353451149644013329961951753424165681027710214635286980184579137353722433471373585541204276443133117565071337209279217076181751225365319991188946863154126419759465584915367298443776717209584546644147775112731500553782954800846394700708400769726084987532025332300645298704942277496156452690101532526819220494016621399125036638167190449425769108377554805175830840125366197004139905985318806694086568299519644023389853242402458941072822991096169829441627635634112488578695509733710694796187171009713135541548090149778499371235262744364570107532377067917411068742499804170086741392129804101553043947231577818831809282767469265122623519248067321862447698792728603154116536451015590483360378893073141773645131136756234474843085448814508986471960037875702129346340454695872621622936012364186045003488713081181216494960266416551468830158761863100135603021891851371979916209252989595950963679298941626329238321461610546986403410324663585177358450233546469354220120375537907126117988020836168271280924006887703424702360160949539603313426032855879606256514193954343222088562666152344004778104793544743763630546447835087748300306947922537292496340871935837181569547112504515225221276055208831197330946363458944040445803360385002903485677349033096539018165020188302737976496956335081560188770053161939584622110957133332345781893347067257920278703740920305478362814308467031844502349962945553329379972752484870455371685115156031119046464668360991077412450221769902511320932474086982565328970633309156836497372847515682261417313311045517557874572599933541762439085579860851049501415566179378532141174711159377306418993304654640280410583810843062008579831789695148069602407921091984381946529554168996731001883478963006271074348123341102156106490103361493427881942222131538501864258181405516909211438917558091798122555106011602675307542504791355626591388109652857400830585557074929549611127006450133412951579594538288041502218708482487007684318195833860333460974869783659636678981416834464144316419025336302532528129981723186306492852109331279431107411212005064398890006088247717604699045746110897649476702447820731643940090982802278049407608725461117779625816731052948893498587732879580470886101678156877980323944806089990670775898912643988337922219552535741396682806040853044784252543471444829412551632896414002563584313621438178570751436617861333284939203360402020211143528797304763675035753280664715768334957051433678858321984529885134885688227079167907109703348704423915006657626227186780165330294258670773107387579563058339596505247004799199426388523556934027207067913683547885694077321965470247252853191287617528747418211795202515772293518983382314682108151141356826261887617593427074173054948762892652529749215360240073289127831294916516493814445983560157698832545591619488152715146719036423100658591165647411861669356449567488788190425491965018761280485852742832446430430168889810828197601537149449377707571445507036214591003395112004546376819835409065587450650708393586329448915760643586887484440837471455777905009547805606443751732699247162555248959824388950539119347631951966510117468846223684982119335496374468508465210567403340114314888539864662001095290152902093165133439766058440064986470681743095051303455911481448697427824260306586364971493875908140901608515236330058623884489845283386506422694033043337501397000493314177193390291659369943758029612996740737060732825777538886947304769083151118838917682743193058756613514729733418457819646733564258155774043831416843156129920035190482667583104440556476340929880528369615120327296773830053059539455995438278477718177209316694233429111332993988171442783223214745298884497222944531401690317412814240476314419993240733500501455445400226142029121226607045481505596922203365009599362684073151098529134989612326827442845823548388894636253246155587137965191968217322013600105228046281754843788935704152419845242267148904704733445503995050941156029842592157158023255692902091833457631748632805735543845705594867471458379110001858430300027484652797752463846955035901373858679961794216729896470705912262821361230719940716591473246955691279810279101660047577791704622504923911034600396128461743438449614500325492288696061538893091201638413174873787160279813014563258992277456245218995656673696499444789149500905185717269071841585554395804267794549638199497161922082316267743311590965488636843691846656066971819314141480471612772198296418445234794614999296753074474585596702499057524051916277614368428163398827365623380890560320910025977529113024024309821108300605399866438269429656560640426967287529430442616120547327443377337145355957190532221646333554804544737409144598640982020917345725429603190130711324737155708494367715940143224206902206425331788995425107459679999821514423092703419965280588082598601125912268633277633468850248336212736939099808859692417785355040095606671396628238255580421946834978681029900662852826668384291002446921361504418297278740653055182025253972424536663212290524817143136998015928592570814191381096325075582051521215698 +precision: 10078 +multiply4 multiply 8855842081082494092854519844622272149572140283879335765999379044487551535058725003037374264534589449709106812852787114102074337488327198110124994569354694251576304347240449859955515227952440597807534954795598566258573314371268876015044595941797516529569403162961765300512514075061125305434692317561245855330533155688086487765998029296922841648322240808274202151152508446311663715446070294476539398571305111736490632498339552092749908960681073010076105775323612216966717426777205585623355276899870046839113933568183935632891247205141868914183624038972301172641809970729334510275354740474196709344608117965659906104496817012936011712264414291404867118251501491222802379968872661917339764007022639120341164694567760836429190619001035811937876298966384991464751038037422161308078564586497888920212200974319904756420494608991689650085328690345846350009100070603625318375221279187279660472963497479697318103013173531499538938947169639673103041184393599032503761621369598842157415439819653254084129710470785106708841751752064019712552114017651094462428947081563566059328191843424934275146969101833837314148835072261492283809265433390493722999382155436859599334122063256656104993976422045951436380959444935799876398616069317463657747098287324089112147430966924467791005804995559444053110149432663327661530722823629099973716801242435168395769097626422745706653244468347021751124666570495432001753266101874202012583455387503424437585154577279745808786816029408875037979538348996205766369439420129685028404325530180440020785542193298447675669222221893817426027933882623601716695420375161913193861272215834235510847019739285822215997870071597009067715914957283912484345117471977892184804466732583556305764702990702357895822427476134151978493088234456150979258205166453847947317915762123165899484631816637536833849017687879288860640526900977644468984073186762607750791386534750504587371262608121544534383762932888884003084459375748573714032573031759922591884284919558767888295040822327122704628312515883643035524359711095218373442291807868439787110010600987462910115673490261694399412961128701167892988431187409111716579648837823323837707055288564150525235137170019952089596376842721855713720678384739170370700973081814703120395246492794203096347180358728028614517626841616632658641085255998652486472103800138298585422152955278863941627694379640671777810084026433616861000949015392402933011532091726720164207758036989340251784557806164223433795112263949125737776280580510647893853922597058807993540075557742296910124252279860239842290366628078622343455198761339153209151505580473166991498387089286292083115108150814848288680593293605887787248718060935225534142027305823432375102758168612885215755050217389207597836664427760766467128694962184572170489303284662527164343855903063559839882002412088698101757001991278255001361094402223363051182329458111718060676690262862940909150300985507245291108727180584714017646387092767862158550174227439331399766513665489787134989867520630224965925838519081624585267109505793936566589738444663963576989889234161901198352924956156777054000212775283102861764646183797468492723595153443861518311599541239934490615749890541801625297959593249631283985733545083298652446496630477183762672814229919881301319309519371288205826273569042005589269176880987502190308005510488728523876680215471056374438334762634515793415474935417586426489960820974241582832988852614787793666047279118971604024011018162245828054734485420508835101318095099811828770591993596549298906400222874970556947128952277410486447769967637159743886065422074478941233805604526475674339375759502236318799410089548912892935706234922388061512053929766160989148753855364095637521922251328770089684918240227616987415432194212673666971376953731061761793559444086150346222930580493210941674704339572672935773631951883359556911105289292040034624282970578881075310286924794466587976842465816178290451047161026343167580528792408834156801516916197315477566508453338490027617678813256987622468569377085896968611558373338462158475847402479416228627470668089558024449632595437652605037278498640987095857427299852098820051971014985563048504727151950987726295768018286734244173535165751212683017471743374118034603602174730691273902225928122104486047457153889802059004997807781325922756233226394155872143168666261317288308749627760163117570102790250833855691943076017012907187938797656819871765000818932738473778910801799721843763406887509604450384082967028696477291633311545541911773347002034961457009642285389696749814798908429046854795524924806225612270307738582126708258558659998085196867171631642102464573171149963960961895158125455097827800206494075150898911869194615013573748184331488003634789522793637977102169084684890097193254147768398805545882138108198763104492772700507832993377393934044480706491292023279784735828479631613479780841978840285609644200029557281628812333040018161302536525366388283960134887208063454794340721397341080861885182395550303250539101005182593794367054751145106929306116755240219794723634319485854477124800796239128775048430373553336165845067830453733446826781440562681634948502856310254752786885655338495141251880088958082640358803674297750629259226296264326025593490124543468696417431633657241689426794254628085346763602951603761566841961391326946924817574178408911252079216924746472376410861920 9720108376114216303511471150356778513668869586132173647512924774018109349885689402096985505230409265573971821196276522532290505757656632351509717068632038739510809905083784701385366212222662251329949139592159388100735538444039186256289439727692874513292737461147747155039840257221492759376966143792503904227212069892580588592287963881670613454343491523920114196034690171822125832051024968966335495876862403006777104237739108354159700443317025775908222506715021132400259427015713470610601752574252198073131707859268968477847771112012241152796787082032701998629865595729484942688619251881232359404167788361078486249043563933261423964073097334396163313636723561481603809033849947221933050147216855926826092704043634397304254357162491262548976124105050227533161604330165545621651733987194057276098346989001624831429876470582059948725514479995184688512450830014795302311547587965062374568293433979325886561691848024545124009332487439132736782240623931668824367815072397312361609071548333212004176118806203997917937399469410343954644509758799397158661896230558717645137388930697027651302686950500719647516936803600380479593518378632144343916661826570743014960258027243607085281378752372825318536022632979037174666380996070765526082842590076874426141511403994468292777973791897190655722944358528452834162928969188840680869194010657476128315483000886777538406911468622815387095370232396736975873926116161152613083144556274631364631319475183984663393476236539671154985155895881042682740210024361865800334799300619032885240066195675546917602248769400220211377086995639626434511153936734386818902552885758527740138968042590653600560895949991597466938140846856989725268337905333303335033302962868597088835003142880448421719264080091807391274892252983454562166195970055938406202737660136870354297975938932762030903195904714064781578238600265799688457994452114125443671448798624225754828989468170909094170609711689131468570382090741627349801227291375448820512160927941600591030361956286663107897138513305110227729843871602838727715545582775803397623295569143273613344099354966481798489472629525074663557486565222995006779682852205765723457598925303002373873321127049133938193206407698748329738496490219861114644472446424529641038640980790942653055243517261716846098162612846798666530276889163950065465725901217388205875183954279578850877628503005309886302168559566653886266054111230815397189407689649096576777090395896525939027054069169436585825445615159991232987503372097091006417475950795955947748964895789141644743187620708292920410741259026730076380572517370484616524001032881970126457647225367034937877178151574114286816983529476754110370958386352074368886911375215524178036379130028947768386084942212704509014845120382279227492143734439669267936438194111060712968904380201610825997056380390393780416097641100725145018405724973804479339844577098838975830014301450203818095055432358366565359598783320594751533314516277563391808073247263856815314360206095429865673826586908446684477003319899438786560780152636494892364272793224149066373932729690957200324828777147389736612924902566391856500517600562530622908708799969141685685340843455937276133015021138472573423148639985550513416469080162811163042446738653920241215152282102918805958967171492677045061526199463332103831750852024915613452388038429950641615983855133368234713808545129453896934270087321755801245969212228872884791756120471361566733910763152252626836757507474311536280412433122117757046932297394417952976544272748745090818641846687182002057284311660825854096777104676833696238751391632474284327750536033310148976278997669613929873986268103074097461787195899560367220685485694931969439604304679263817386330103845462398893569796465370504654187179166734449330369210228926645457900512021569094130983042246862446824803756342658407272603099460375499311506306076673589943145605585228772298042353995052335937523642013048425347385349402304899826814410313159032024057576354448112810559711512478366898887592506599618580570696521177792102812312323403674955054490692358150848724491782431670919912985289491718271943387094823878035731841799627319624439293500745793929426937385192388075341788877807058286210273538780126926732927205758575388140710037993804777019745498210137774675487342362120090908452110241434775285662735100194026064033764010556338185096444151863898232069605332556022014217195961655014857753087860734532232960826235014834096457745426290855678832344402612471403682921544721816010907785938201850684338793855654528512352086873270131575400407392439619043253410192013027582398310521609634156666875602474596467898702225239517260275107971481996197665199095467649721702633202866636728444850739511716363266445097339454860576952539561017811094536245332169945930998362884640958827617198449139528770041361721709722317279382161421793482746868044135331535544115639745959952790754623585915304397486017432218210253091145810031764893446048614808190397228745289271479577105332386206766794453984900917557341942397040205841343919619924361949074114804574275346897989389740285196640323858321424572421180121231627048752817726770597270691615315469850152107866688310407858766865556498865573209354538158961539837376164362807274187130584321767802833992437042331415521767026219559969978352673005883161143393770873398600578439222100570755651377548767811524066567025468119 -> 8.607974478987470352590831654106557872421592509399877182026714039056232412866843266855789909292425245527236754606190222459536497958999529977381498366585081286106233475059000648388907989440043422234313107230040543712135522440034222941900942706630039947305656218048989934499965921689212967871898576413333084580047864331888018052946166704838777969949095039939899653526261520345841936220415634764865529717627352240617427576105013480791448099857329441176223994493888635839598883145676874136879960735848046865062053819053025668359666431412656115543647076662112609301409320824107471114841029323630796707335571156206583811389129931307832008759098542356966737872019179506238043214856046311457637822657991637909885561465885810563410332786430130669786611312242970787417697987007431805171247874013110351390533300804839868402986998323215248932590002650874256634996209867657089385264506252468699044794329700562168837694590803889692340318593101157103441531846617353748035719020314522303329395932549833646510013824353068935453324947224914237880317831222603953742986491922912394813126503143060746964506545510385294978912521867245781371585049440540619615774593309576185760010016937997057403163746528775685056048281821006672825989834028998230109095509657224534258706619899836826662251661155194323705194625564649172923709657842425616836944810649450454597024309076840681602909343432709088137638243615993013145264147946917422727397144477039705372518448499386200263353288993096896953567887721961895866843768168311276637912376584775274146011628455686494176441528853339096870949851714054831689928442090314007900177059389850424141785453303349322748533751681690946666795629513458304238701770635810604371743079610289064208408177940594400578955523536743069797282676838157854620424952569180753386294251553257247466416726520194308704025280967117850985775226392673020791218838386811037001779666034045844729119175540937936649599300037872003080686636301891881476889640234635025069125686404404918120877954111430200360171046921442086502525780452671910642651081835447974004821636213268633243160632942151719550497702521877231263237660515101358296646456242130171668528935198070776684819287563717483085212574255008368771473094869779297358789170793799898341761114849400359573562554591571693911014331190180020060619108702231998146285558639901588004370180260914740403804016253173163251508149788877694368808446829112757081472247864998789825903084356940966046510761617884403744966148905026586835899535530342521651948724196532446871413794765050635376852221056818616678363164159078531041475351465525759106407611152742473653379115098224373714254126538035825425053485398620210459726090487085692739095243439350513869416224389125400081829731794946958405356937468876898027240717154225243017288023020721164929906927375014116531736330053973494678568225577774324753365699315244822725233837843701755141556184804606925743343926814990570859268997406714016268954027364096349544040016660751304751984997235675276753253778621715335127636063162876029459953183459263325321639547769717110049519048628309380107683944112011603539763581846771655354139491993602142005317188856219365604379843534557991629298561790641121841331085745110012649196919507579949003681443136632120093461736678600928406381934331115218452185411624678538854214796497253787632008092762134383881356790934848392754638590575647141467661159668223409666125113648887820746677140881055853864011165208534310964746077856736203572181465054136344835505121105059365141388144887389764367573638969707811651603284136471105803437604532361353982759384583294259225475423080679558171265993405527819352816741234273851002941346882180551174289679144107733194099278393429532903238012278845004389210120850076943276500122595444345805460277112464849121294609668305764719188595882065603466550880822491119454738170797988400120288247184010043517301670483529868846185933365705060202197137703359819236646470686288724525381954343600004008492498427208469399531518690594772084600779202543577071010824774421587115481681132474461408753014196350758505847471987985591782569567363969861711733804396816631131540713469880797636889230100544146798340960244556318785873128760354776947772739493225625425411874724697293358390502056591245194996074955601281339246311737265885586974248712329430102887826013783099364062125905193149537626632452694619593819461425594142904555563456521071375015303055366378277248140146321620083050657603103530648274707724603596019784562351667661082602452253915417173257435130517153909495734183403493053681951474274132346007427668091121476141049849209478771772180607341162551724113083806372441952450118639991971700146016581121489274410513521004676589468634598267024035037334097208935052826594175677943049519057007421649472955018806368186425552867769540096586523227725923758926052111340178360123751099345016187173296320579506724943219131860551941019778564825956877550933605040368255003435824472303497545075802857260645827018406235186800507312796563263763081556623251340316728991600058989310314856356813298738514564077639433779608066101730327737404088874302472371078950235309860715681033399028872604244328394470678147752054243829958903924859933472294971053481048417294953361288801465289163760881031652513850046755875506667134765007153657440972190128830480231009208747634388664237150661626082149814350927555211651799433484050410302600412199771091075621653544296243855299059050271861146732666628082623409624305899523283764512786957326597584846150064961684975571223217437599903667110333862577121544896885432052317616514787792655678533981003291334226960034999521640288379717821771298075719628510609020410850595327239869805152416823597424285111547704067721611609167939923756030922990911503914218302474883893575943372872200106619723602730851610118509025664783879602075263403939123153153224110422122035620416592556661549071006535894639031776670090490317386892803370027260427149247340334146663616873227647471029367924869492313356557707870417665963505202965006941693026096763015978953311451391807352012542407609462127920384313882976981789845570457750268185445185505820692749856440411153459821759690204914470342513362175657451601206153944874594329935373822954940070296199228866542415429683658713519872644084946424888162378401009863856788939184279998350691566957414958756900711475399790544444404244585390043123965219311440871893058117263847214213778545003133151383635772118000317720291035234666342022842684308140922457739207514221472467633948439652720399470901869576810002701068742875458561363727030972279396852253742999295127073195784810885521119008488197856619849368877311524151364750338302181997772608447579027942333840725158593069422243801053131630568023248973129466208373986912765757585386065168262485691240333277360331693631679309199556252763126964773791458766581977060240620507295258667347319382082372222146786854529218328488268330466857859007035188867641686047482307766447212492665702159679182611422937222479615836438175473577652799212439052047516964078520184378171851453793775435077365457179314640827550763054703782501895744873176269716959747466530061873862176992998735458330899504409535651600716864779762428913069152259241902668227181107946188206674356219927860410057962455747530451115621243934450381725374776578115148395529613921358342461551290065649865150304102961585021276741774079814386555961235866924598463680003136648677683768545367306636319417549158861959266698906578953476236627765347230253891260337769665672686768788153154569816461246907301835274004370744507813799662598307910652713105318940632146229975880219611378437512138029434768100915987812189091808345039118771327666013868789145371464997607629045842909733001184582947495017455687001653683965347013693623579900049313432263646731240500520303783521672860626124147518990746976696575242723762610445623408718761308350864627885718892920660063276444167193786223995443691261558785942192856097279495008577836016417248073932237566720904669953705356950564599695723168336569565298737551745458113111847479492653515155066600120758076305552325615246599236199177522740723412904058403138988930403821910069435127906713231997286595640105183659695547155241851019267763539435265492725307206541229542474389541262202091716373594488025250599126885520120423561933536335840611962566744139131560874467482795303664160296446056847040953467836029253240086653085732164854214438798474005971146116864316601797760399384847915082127714186267274332133439793154047628928624689426512371287199639743021866580192901184781691476997462162961489497983419626356220077414354471852405084216577375953926059768422991147665919063472784007784175256880949590305806717595630200760203056015888476693410691200795554031280444193998652587393278567525912158415893420259324345444369595129297994554989378135430078977896104522502543084632950356696321849080438221182527205935169174880976134775819997757286703023956463247305505723884758163477630769443180530290532529271048185541338510460023789578798054550240814625862243261632234273198810314475128193330062607229298312052700517563405299316871602485470012726824723184378352347306047804371011440008016626445928867208974679984457934764713012949404003442820649848475585491151229220033198996092231070163032170365094963353356448609545019398753395227630960124374369266471922388675676081316241300944312191600000095990494160014517778737680609693746502889671606460603289400125215295994457194070426908515575948365944746676790228033830824149534606397377611032006084606715707491477133221647324697038819009861739544805392520316910136798284532052852191379216150892986071794086081345101294842198716166901686949864375073078602621342139332021345947128239630058064176441314282848445410658802677027177772208175257916474383737632396173408217284882560323357165167804231058061332071564950372168797370932438132215030057349419667309849007478961636667309498236357169063698351108916030333683113584857005512308977755227490949778436062816220306101208764902425380125670827489811118628680977078047966166521161986723823521983872413031154078869540985016419425009363501172575030131895528557485317791206537894685025125817084603590465538183974749806205047507747154126617862726949981865E+10591 Rounded Inexact +precision: 84864 +multiply5 multiply 924868046154197752350427520370426393548603253540523256062195126729027349165681258257973395532938257035722220363731854004053888094824086627979784174102144390442989728432052755604010185771041640071121583398351500947423185766131640785587717024138824393963459040339815038794849759407971914245409841187697930812270501534523511988097525809262779569867604200664527284798113142523142803759204600806949934975280154031987717371840574440751822675357957665961470543855429012536898717087038750322964020575209683379087909671629164475489907806481511546172170569840961493853463757746225424695359450738428680522493980485396210966927514639382466403322798745562171060979362199156044070007559969212519985084698036016585518976611595449527517964422698660257071012599568241741319954128326112766126689372146152247940891620733104720546038071143443772495877430097169165742709882797750005780835901319156590065217872986341860241833832356811990136861121382288053832760006358771542735157546998097708859699843221456729166986722595806998094912814129177151594162592709131026172009151446906605464883949145092763556212162041151314737554729050789578555654339178454568528161949529216720765182709329722384936504381442490052046075948636439916804551989151475146158072415016304378053074280970857931951443689439445201162469734880557363807770785983593984703946474615610742547004411120744998944235050430779194443260861161078055585558501579146475271684435497098064776876005289701986372376800915402425728893544078276829291668360437793019349568356723792224541411697992964261594950552482255872756929265161975436203580672624700018656289198820610915891339884134349600550239365489330824924315087484742023829297214437212612509647309393421528521979035512085914086948125737447350364290166206539928161816906145813885201090898215415971978831873100165020910617293742881688635830055034485677593299877050648654953887036482123408432107626194709352522031254633739480467178280962371072297972835564688417221755116139260657456575522113508066769883928733114237693238634665827462207845026895558085817988849049144213654949474664777117847745323429661787278447052347759280008109145430510067016470575036767858662084593116760015403772762874612297108203527678514362166850954123141780022202803818511436528762054190410898536771890431361214825226495121176286678750987358699099922896693307503735192221407068272589745437605126618389711105812285468680635462400002842944326292120046238867124686489855876468569555776930591394318016546630566554090293703405648136258577863458446007244299624965683426914190946375014781527449767347723997635772240413155474194773955796183253028256808009222733771970506366789969830543182181830096965740635318787886048542103964492741542300144826515338695926067923901384746449558614315867660500428334578278984507394242217301151690418273100901599697006838463538096632004320244421024951427036968477383853628551768794928946662141591570546040458554484659960167603329142897599901259830944377316271737770221705264297070300229546192745301291148759972276628927759312804927877552330672909509278152399770752324883156194270824896014213135888687134473922230183525503044045186662945762966259618872093640834715283598347296153273322555403187943916619275221010771031252402613757473707298175545482399457660076635768170169496189038836306543948767963152809310992680914834479447873272308429488418662314440549524884460748334388644023703386252089041549713047350024932515396365812945226729314916059889201915242035479795902534088733233611496245149527655733164544130438632098521808324255291055945751273340324727433925725637967830826329968249731214880328649586350570301509047212976790810154268743968964020303816685219962463890332759488081316825579877305512433851467835101807936763991982185881899200402892642082862097735664075598110452693938805903084007132622391768706036309447754217897778203059799253476990382189795525248071700745357545822261089536036656454255125908763362711765577254412624712181185652930981940198467928196191748262307623099892525802306161431133775949772642709468658370453198170375875111877506357897409200923697568023763072539284176040769771252705460328156657262850543022184400677491320646636163857275796997434412720812177318906916362549884615369947301763596620377296254269404334796350496014697923539461767415846880880758933407584372474832356838996689704294387686658084823125988037667587539722494337551292332851274885782809264249983141247707379159893995139162178974102869916164312107381061823569316240130608679048940195474701119319227999167340058671184302382283821214157203140172670985404386141689326403264665321903506609341851181237181611668745650942470534605550615477979025309650113764165935775669385767067515920752929750956849046810181165951169308840101956689868020400222328235828393225817195137222474976034453776399124329626396497981968917692577972720920257794130775334691349861095901959884763869193474677587418398977935237408720780682745799759587686984539064717077813803088304606840039556160652176094452814891127811263233549613009451405316434411454698999149504558847643069260606571787490034793728124902953411223835610900522074822743083046719714322105290836649744366666752164449446649572900120370319321638208860596475635587399323143783190505845427313770415715753041762787113489814784668475496736437163427093357933798410400646063844190461546927374378652280749766914129496018805675884943423134079086509882222149622022082076126432933359416529276446761009141094383621892765397245236381999238071510474795254726308030375468272638755446054340746352793546267817877572846392662510798616137124229057451211152206737621407593792535445298489379886758635092444846657476811408603603123100840948077217354952265107107716534652221392495254551159914477893990154845300997153327146457936235746967020463415238266593768312042649623732081661971393333909107876546251156059917562231983272852666734989478961120297066320240468443272333532931961147141628887939539309119930455964165210643935853955034147763192683928498997667326326664617678755922112164895962582148261978874893802916864213584271281634317942248302715017655835050871076568173277340472821655992062375212773778875305990454711885818031013650053293224481836964159493119386907905696870806796172014364147948468652641902421883510176750197495769986031874140899884261056798179673068676311260402469387301326501279681263439104778730517349275615876467956847999506073606044538884775225986059342071559724089478497418406681354393227471691672753537122042273395082731515569338836781739272577892097528178557204234521519217865386037144925043119753703653008556262613710215107318247390660868530205156431667247218825011253647310390731357653933143877754392839208771638895553291115076509408769632113681204118006957150336796838692644406347963604034445909894394623297517169731545145092575306643218240762388473724655844015102330777397056169930961174784566570825856544901552772386868891249434621803847593439088514297816924688804211389154030568078407197418464084129752464514208650770436614011197118336047038711890808593489015441473966898688518740408299192338997504213352263263245752131046186897269194170383426774667551754148534099348488729676459905667278242093420326710578009642171282833641401628173118447229937105665560921099270422618873805323744174612945927293495043355501280468783738794546282745333801814351551703622359984112609650276820014773364347350868281924650115650200191057488742202445148189650122150602296857302341495258380431002193134540063423610444782768083926673904796972338401765456190923528932413813917673139742813621977603293825298896585338582765657758026465902352962645128717405440016002248627726410324449775944319583451611143293842923415375218189850846580013020476297886159796956966517277727734372560081546170550569659998813339037989449152337474082363796589329533862129298356400487622100885811872421425378492640380742746742476497464667494254691605935660137839445807711978837771904029565270463669273339013988470161496769948725143547948451921735026135194813796785749565672615113702292130499572432268267687513092111146249830615227117925413295517253182021623532529687540021451065981290145489522452881846559332668574067833676712296965804377859732820295719214906959647539867234854534757576707949735002752541469777478505772292405588777239793427984325832117783870705707779932065779308756073697491661564378096122852633402210135448348297525625082634350501156009847205266224037436848890581633047838996431493432635823926986150491130498055202431994399333161721048876860866318564367768167297889495620870601998906442988135973174611316755013862762146108743886270556471775425529327207056727280086748037608425756514931372965113297255407890204875428844044710412274060454736545260035374366762539986700627136768666054518888649128512764386800857737295100260189511311120211993461647262558232455571694602171290638945640678920405475835484317872663984497283930512732475735767980762522549478247326093354680961430061695561697185549829160529727218443312114973170488488116598716391498950232731825326687542741939829293617941833153397854591344331290585943854344418631532493686852933361949752788529896171817649989353367976642783782057209733388129298896189976701105561002145476444363650424264399709945739178140331765412309724014891972562611779976890328882259624477469325716155431493688730456853478665897919627203245958652632058946363643768311621334753367227529774943495061036440978974768259366025268157104156807286200339386318542290021969235788987589920563101254123054923277383999709344501102811303360240406398103583239802259791082226637525333742449178526432344788557442329810696311679574601329148784419012742749194006880141968595046685568964748285245125246968015038286840789587409022521063475662007675898261521380746026433652614563805337754335185919302424644169259646602837506588339290122893873976845007748669282949849573822772106838464578208069103511311161456998625730121118907657500595462785549249547169259332431756757004460881263892873057919913107343124026348486011899632039837388960059293341164204117983157444695661956713381703969593555358704833232163251390169453619726929917397913981850406000648290385441174621124323696459609285342133142971826098794979068464496631214120848971134237025498991859712373771047948039383373439536574805089400140746047761974725805453625850883204389172241304200232868512595607262011853394385844300299660340292523930929195944673315495301686473067066109444730004119818540123442871235869546714984281588143685759669980947913017224645938292388372204522676953179343220835822126301858661346815649236315411240086812440071684089254107003109176375589717159598739883186730948060389729180645249313584969616419737214359150776239331560457993319500314424438653945122227527410815202674784184834425369208713703052832851526589578519665209797967607205311388897496830300740985658214536665541970600039014153261186921584134201603069752729002953485660937006157112912195444164199179944278166780638381781372591358881186231434029229968065794452950403531318627539147091686338486318978869297626348484982420091355555146930211193720934601397480168255209484084180184296834327026795078609398537387211841688195445288916590547795386989026043729729374194024012995897661824259723307551268544344152538077473912394903145996393582962676683234864591066310765084404937332984621198706761345589947999086180121602714429818586552741511085081215020722344846304406400468330678602773260102022669730022772380583578958316027787018285541506114529650359213397295344968211624400614472793617199658165776928328226645339686763800020384972612450623880838392585090041930053946886017985271348881804996923143135418415344105007167271522930634362976886321283502815078029479446352631121148139097888849878253873619934557936672063938309307001607192591344639741157611216296800440021403726458352705944535436443175872569469829890900781526086295456500431389493364981722434613808422461699997659421387831548698509779585693837972770121201666070285049453874030563703114828835933704453961376924450026420010504322533719214988584819941247731815578836017746988219868059682800028331843933052516706653172893195964635936566158606352145219791968305383192484263787432734650128571531901734352741888922709713241857340529563878862817516808178125878384297673149840659526794683786277045303141000167341408687049539764724796406389240852944391444517170701082143715131998003814889903678039441405012504771939133461378320933485479588887292693259555434766911414268695454858970665438867606943968479667604171798521031306873819540508288107011951361653431117367776211576226853013194317905073180314516441316416036880444556607750057255620652701854871811873634291062565437507294570617704642645925858335054027189149132989032893030332471856198796802613178768482341660783831626681642441462192782767191542702589727121626650142818673045405925405019938356845770776738140706765968200450186574034009778949946349966118116143839933279302233236802003672484197119471993095494980897260238113047399949344671511692307970887255472138555098930266324418585882661205732241131473665696396743937218889996249520183589899440003124018458488206621623001508960477585325366291033413306759489734386233698999103552895204680612452290598318317793970443923776845811061787249430116489535559708990352290137267461417137321152931155332110094553816281598362830950472780680176011130970117752526133380018465376172142876572933991694412317875185342164641619195898228806476535047902647877236138610819538276772922951102406038681453803974707860802435504549470863767259630248021646601517958663159830512161052719651837951581187134009278981135820823940554636284492509590548563633842970784106691695110586589319559889811771077489716920964049611249901991044393212765621887143965645566537117601464208575337457261439146701762702986677350768541485956328684365146925302117555796877494159471819551470121296398041602874088385882084685241714360951439954348519299438393264741230772471316195938928490013208428543714719950391655630318756801251247830280078224431742956788344214980803077272541226392041329914723111839971284207510873398351203212198206741397472868942835912695257481529672080963533475598473616363378516618311593019516473284396649923192213218534221084711319759143547551903412314383357270807701951982013786176229434277221500425563925009933271491321400417172384885436690483401437959769197720926157039131356785288184652138413327506067507357536226667362970378219257527297356328224529265479940194572580483196003265088227609189554453007111541456448422671124259537231671797767571919914464536446120976759022631245147013052314509478809110091788552998341059977251936750763491126231724234026154216685501233599251704761007622613404714063766985537096683826217984233316519687524500269534452805162830885045913229915408462722850535121191626602239387875992174854166608977563248970854596430539327350885300838265123442441348347234441257676026738513388994399358636327159466011012661467343400216540673882666735251722096928384371639540682568319801882518542815639543376272945635646871370123133386632990288954547150587765913547616933470123507425458882288373758741041380187193537020047363849089778836726628193525234897436341638935383445109661234633310052890834436469300900043734991428227365467919019266497502404510784070044273451297107004783669206298016275788109684991389921582420180781374208116854437610922601776700191071369006401967169230331047024611259150520865309571181992896059789750676020863066760828638443595464682771336418466938166698780492493035916874293700298467340713497981285881787571525121001885820690349921565346157237411994830566838153253846760993593121093992898701785054692337587344837202355409987857694924196532434085074392321077491756297808121939686694477026203102827964017591385564910589257604635542488861845055460463915114749288306331644241450533966970857789691411799606751330534660291326646922396805474220629348563610118545777412237782788032424602322776587819147698201665492318887002700225899328232231318005286452591676505247429570643702891165288697859032621035230606068415814046764965007639737725873644316088458137022004070933410673111659769357745937682841898380913844810566251951299145212055172498377156720678194935038707959371459271242946131737830754054373244751488167483223229986468936730301415831949057945630577741668451404892404065881038076760016960230447905396432786296328161871416246011846603439033271862230455492792913981896779042552917472349392995999134455787196562441583408836979520398247863572456835300144967158221601123885624758926352447589980329012577136694905611899690302234069171202261972430073251906270091649339010830178564756456466856952725465393285411714409838457348285190977577996564715211377794715459712216222024737915935604947655698638720313115454548343848668689541705115036888373400528758282567096614468735035459012702725953188926680884169428039681386563004684678809989055794415790429692433010888711100333668215761556553060500331503727386333926449719047354946178802726678616417396121944655426168250460137539112074655492208968812074787113536459186393319905646704102337652709417686748007383944794795330637204020322439875940398229794342995703894097514314115975210414339356381507468925237535950984571931848838691320635559803485351106580171853532099792749218619649421476575435754696501276119573347096206499152511648065538299146815648468902369548809154686783966784485844686747653578115905096395881874597259971285596205902623187819136996325284176439721007483888309764622284357015140324902893764190801585249738919107536901553605690493461465499887077595960767093503045565250467303866600296795439507137742948728982862195154711342361624840718315237324582824564224844277604927583099758555692432433036407923351116063778299932940566820190961579936676920467758457068237922744122496692187996478147118536216349515423288267963891728665781114048213520084743841651729344563136335575965807869933340334472162923886795219235689074293418800332983322040700311721019374028549459045039903354682935750377137341610733532091173301219671147814414522250229535436602547215284465548105424457952947745366664518213999046638264405837663421043610622811219250375033110293959153706579238847288204548302443881482850840172044074195206447939912242089508551445430785778761126436636061103008636703530818700762127369246414429623188360752715412355154096203812666095288243368333777110410439074834177876253686103938872069194239658857402757357676852111455950684767669992839365137760457224531667985502350773997343979320637761084505647405851647656737028471929102769141344853993484114122554066107606306494044836395078588418716229059235934520246029088754688481272103894191653897277311713892390453343054230182011782287063192655414676475306447825924491220674540078592968211047078451244321933265883656118521217272015840249953568020108402812189357617970676400336032714831856146238287990589139376500265236315149217762577632442013124385415034530623311621336716740155770089461873190896270553598117340852224168305868723963887542809438956465815673998131026035444625375901185562301815237161718023845962182057303790011965614836909240172090124987095748604525758394306534693946368893035233286891307927402431764462788412910070541526714755513727016634337480214353623264784723170119147764426861848402613448806755069828490215996326039310418676915386018925883634421256755251604492413405077532847940138641082473181934694638588588978514962050670007007892928170916892892368247335863429726656011024503114963066612891789408331711989993992492888331369860786861758702079096348605105299568653288239197015812656381169399453880085678235756562613235501292234674936647939919967581986909384871570962148268598534612757296086252922793747838838602100116977652138750329950326340773857710224435516878650315507118323605090192656322427710963802572571391008928026757902202329964405574873292347300106123976894479203913007659222121844432662532685671834279044306833914197207997223219487207396651392392160941185938622494491517698523502446776556949816470856936397756590088673774457471234428750110343913950041390160650738288503072467910166465717842592374315700411509605230639975421354814893874719702150094615588619269531569809939874955195356597767101944560133746230709788546978538225515823038548932497990688285142944429433326675598862741512055454880047991707700474844857341865196781697571909495103972845458360535577627060116235126896314431616655681468242883862499056465473147760821452166957518052879432683887066227530712792686148894841026420282725681531631586125494605690325789753847773816163203761534874610438714225221806438972334947438733871446094937404818576018803069058518830014136847164885153472859483835199362607771535898507247719345670045795207765906528781821973264750345181006392389000001719771857450278493240830840915708484108866870401538338055314181895340979170500915217424029145801510434402852330333320525413389473254329936121046251944590131176193491080084901241347230656864185678222221840577921009177097762778989419971974061558573442110762611188665923317823736485219035353496934991652375007577752426780004582252398852031373324241897641969069379041723491045475527047877182326345208638388418030282318874871948193653500259957337986903007492588900868682303145860902484041364194850963480101366439002141179116319731718754145879626529116962788735955856454433683168492841161982920832757165034237012704428910904625851022711316806581973284403458787591708637280491479959420042469397955219968519628523853446919525689123771466251132348138488630196840807991568085152983521163042156255095251765226677794285647444704195582105340132487712888079866024335784575122223590045183233021495840800697417827563769393787079044208621606082337625843509686377395460839476549913862695324122692722255594311015435403956274980270044125624047204084335118066775505651454283336410873292462839790167289488569730994086371594628449191532722833578825355393575091696413667423917621253752034566441712775761528905640154689712260900799263871636982484785045786469863544699400491877009200671085087161466551822107242159705588030336875396286677161008489900211918505794092346666284197926602046974932924136393794717799738282372961258360867668520627371543655742483303915235132185557329496854365373736200920472445387117308337919920473832052387082182642778086328155296357884825954347495568967428391583904761452465356758457781619287533399516154718154800897668020662484630980889345445735350386100620106840583791313791408205999155368624114260660185073015118724056189786674434140182437176036585098135508593701820343857037324961266472508631346966091856464954717820389756434530237599637600028202372385989824347134513501301047054581431758652599274631036684525720367455008635946242932254928579623465449134870123718301133717740221971252860286529538321911829733323982616638249529032531715371718039604520374258079653195983328059724558200751412139274055178946567143148987776241572265830522654369137921790006049975463957079435213943798874636018906201934166101411547148038887135828976021439942561394689240105490330278876917573897798784210334775684781379627941011451128438615655283318226663219401512801584929917429264788026182063885639414302575302461041642437433180448122460431960073128794768610717915366999495080268530600718699021160796946560430075562067833101699515034564429812791352408734167461354209354940903777480883031154376546442705645774950946061009341265280029144181681354237920959721660867868106529363719561938042819254296840065226245739762190759285216666938725948538363096317444318987323416637959745314455186640896852534969413487523687238691401326697162109662831358245310148202704711370876477154977987009267358673318036221570150880031526533052443046976968727637373596436604877478490328410344123584739862260862270091877103534098335079761327393016516713008691229377936071586365138491353037481179343144601117164983496453812184948184893230012608436898223549361803901416538132831793504286928542819252258377318672880379848524667796500776511596489415343174747036147924579057309849371561423124657708176816368904315025725426442783737393361164129057161169986204290515053946054395213746451740592980014137215000277263021506258738558819998542166115645307229809863169816236777381759630672904662586619933476014463691497653707552922765531885656808705442871388420938124863463076644405466956521539650574808990806850560430124336019683072175690627472736083403049592979059129850634319176540874903595131073553119721393350755109939389567748516985479074429157723237589805987384039907195821857992812076463453477126026742307383290689537720652028124754064807914304974658985166357953716331716245733813168083392839919798347657470814245387313963704453213215292318200168947880532745638265504863101731218816555454675785156072652337436732139126098144389412487577257365371880744224617671897101534306510680550163616598937919283178490117498304236379232626342820852356659195582841305362936702765297197893214514191723570553150779500789469229953701257663668096002385251263652700831342808437209859286300042689152464769473627179562021941581366820291166079872390642198279724377550308287639142837786750335127066264742805215874478705562109867765589365380337118454881325458721927307738288885358814971840923532887128680612505298405302422432357016343112448924666923949328978906790126568589737258618833216064535820845785777624324128425130865757570432139170276749447926415907882398665118276747124847740784400505732395824781477550330760920522768118256632981544473448872178840338577708110521209596374878716399970397270956974949383360326328555081526141778876805397137870704294419862526657370621906263321311787770270333498744034474688104490082969848322599407403832097278928646254915453018866226630292154740591973133618136334822834016791078268245280224811747210189486943481253388064755064783543544085577353130264539644050555311232706574922965318598246676038398249594655903727370450537476270404368023197675584196755414036101883166113385965828622832780555208865657640654336457898997265492629366486937286992623531501814727656167804016767447550322261340822902925137656616035497336497140878791935831517296358697570136716854008574010333619149779738448226266217972414347376358773452223340821514891134911964691333140067397784768635499567919402459922699470742348784271915466332839918385425379358181023556322075967846713003240362150986884900691721369081808866056356211990308491377343430762706974576142522018746986445081048831641584384759911331925210506932642035385797122842509232895280543448799217929650034400951345820186509485760818590883021865071612590305218667805812621716055629494073958396069566821109098997482999323040885857026643508712893474129488356798269824825746354581438025739719893734121119616372887252061093204800770134355804422268865699221450309673231576623305728474104820767917097223765114842426750634529851720121335514492040748688886895659833876913587320640257639500535995184411786270680590919113021504915692261281701532886176625662591891571457574889795362773686119179671659519988940873873630912140102325731751267148157360989410273058867552072872364151695111232654793631506049038175880243627293483778067626515604602436181773704303307049178430316338133860544549126411000982836296693866267839023107410798919674868463426515225280441737742831476008038102350301863362000346533021544592388808914666532782784369724684739097075346661540394707446046986888059434498357025492087167111977680924738861596638133229671002375775083558336475844545075158161637337573446955020593598739719242726200913912555840553877697597880121088282517730452127642946175890264166176182580951049231390734843497164418846266526660548436233985043874308908130724917728927935493379680021168646650238702413254952952925631970115883719462272773446313266963328506427674632609200674279300160801211527177752469575551405673380898789182418607265793562124146083074567408230044519638635386668318191559230916177074495583909805098471659393863189885541538909032849871469729149764375697814865096415254997904113586552952188144161461852355955673511830848885806604569027793054118589133706384894086673779281831077912789058497564694316188710455579820303274261005767768923778336880492445252828933697206864045528702512203135749684384858604025693467199893253551760018217019559554461247192232368696427622980674352801364881786780200286344471183217453037332999592853276276302588908138597474906201080870275010119983546790737810197927825524909214006431542564172349321902048332291881064584841870117068391863979239800519508417223861875076432461062777869294917403835498268577293888080399869086056673378783242845219624997902353013323963925893403657143768327432646001604650253497072993234556486384972389436072524713974339916072639508736188498331177379483493504917019927547538732900715836956805082951616919893925067339392008021321637264760800437561091995124025090526008296707101884113160905434847950532318268950600148057343922929058253693723190400239263198213416330249500653482287959126917395590270136429838328392208978297465483882502867579860001133953929263784961385270255773291844656107183018622225961765653098834550788324568790226144660938166708076687577344803382290459874048612277439087770358383503304298841670555945597334557570782996860799050530412893278599579202492555244155584927666795483043547444519713226535781567695720749025731628587057100143589246031241662253345220420446010615276349337158707394953427153159380680273132705771724717510883573474732141683945015867057192749506222823473761906751782369411690560344638925703520467351371953420166654773719106450050520268161400180737334856465882189420800725486059858724462743482890117855661595319519838341651886674955379916961284020964297672929861251305811799402519929484710280887206701077105828100719915090817306540097468624985571205897444032529539851944797835389639729144001452460067898437463014778919898013751607901702575869136042477787253129823028079873757286824150757295630303892225176919786271143493348728633587226935555873561956608921647096705092205680803407151244308025478087594061262685993424344804620686032548632075837094079253599163056583541239629908414321938548118805060347864311007595864054829494366535081123241767109525832397167294804405275818707528356074708885160981277357355820492513449093706133764773197584351483413728791389569868830220061039454811850754246391779557124755882225112579971554491168706079556057808524871693459499593348887377196701753581209715414075948330353391691472079699748873048429363648689256411729821353458673013601632800220243325415048111233811652789263067333525398726623581221949088693648256813645904926344034650147236617615963587138902240710366589588730705519617318691346261063718690985608156235168623673849673636388663280862421620781349636943515131092600691953726344055047443683386572602458544849519560362168350591470457420714585629229088126841532058706431855354725580963559681685010137178722521168806033784542109677185751319176785274997749936925727579372329704723712091694485515889553017359787032758546014952964913288154343134709058323923891696386421305547930604934485511739033626200859314796414529424146476743084977124551270820001451645057498149443795344831186904339637282002028611758620588373120499178771747313130845308569315280499109167000245423838112257557121328020451480043065941486612269232700410554483838289526492495514705168128737121642047720677354742313568977443384328167990553270630279186640975204243901142195120326246011096489640493298615638509270056247374893874432645216483972134584588091138102821594894791101102789163760018418605745943171132113973611434868285131599239525677452006552368900899398518572719424166174143456505738915287241422183152733928603402440408828003987839700541009308012062836336393640171481424930351069595227657916861346499662192773942040476545129440253880380155111941294628018187209310405890492337484612383935591131860047115791615584598317456908245981388773293605566275721300444319607864352593084857046032091062299917462882616596635630801324147239462008579128177388878624130837865152706358019739185488365824393746179769852974379529790585982534414879372114402597264694128756668154158809343906575919534904359251427047688522234547494565007657439046871376320550270409880396955410878376239241210047656948628153379356192951348853456842116937270698355923713398795169789102026568217291238388981089157417344170398102884595473761048497014088654464343486780076732316052388222097585002427521755438698631552599882733665994426924003402549874779508052356436652916716606455026106706427552797604227968794426926853975130163850394711841905330556885441290419149679345727257831375874797622983721191319057906449492572680338175108358975460479136844149260185752132475562422175458231603266596714795617648326782867947695863555217236402584375864184101381012370963367386973446312377023905559371251690352650532448206068618832086373463784335603793067450438245899734436293733413584401597222789272296334453250267053925179120697790211515076904372782593722461014475515726666309480071422667510474097741728330308688567971841681933549046368099949195337122291453758255560738260549615607144929004985441153450843798925973791120402472937296272871953662114241106437774548464830823431810818417555673996622224992701225355792188506197344500722176517922277908863760037515646466080079211416407726194782469371638839954991692142369700632234821298457852524252600769451394909306388907190600943963781538194375833342943638171436029496017922848157103420126588546347423324966674935050650246397540861802934158224585251657667142775353013227490681698837251366187251157200126196225973082160658087756198543105427121798749135393872150753901597252829257822405505053281797293098428103592952655250991083117048801020003638062579238028760321138788913765091312096928926292201050546259017077197855569340557111199762224861012541309402106053324328782329817768540150348169283573459911497408328309224788212765148467633616813422776834240155664862731628428253946513822278309978789696024732745105295735359202664176679754624840976633878567784031045209325708965068426700862608658581081942104229240738629908753806083980610235293905962907163073794186811222717025220034509299630437856949930965760543758835847668291147716594955089631972090936880749643136457038018972112470636373019772258717781255298583531190870530819488795714714863567918108590281254108972340031569523729993959546276269433540710171841759203358636319883273044077045682198302260232784886716334404414106870073043343700539050652194597069630269006733608655861567870514702759446031970484186339195459481024579627340747771066878598802118267559872040284482836033757601941491363594742079684535578440248206951659736107191634371755433240515176483793402316507345993292341922390153279202544471033510482013209677413424710908001152446183441495524153937836359280200669623722193682695220206371191939064090089791379686884582695114347842069672762059339695624364577698575221466784958995819729034222968299481643810414486195686758436941129032534497255038921002859281583087543463455925705846439537633533919332888866555242704934428734118951080675349164038926118772286299275647173461646636514278810944076215030424503089398724126420858263517887975159941680072204243213661539471321036477292921682245390409059439193763937142729880012649147784989697808336838892621016947839119878006148409733772852657115451620424327850328411058904654708074566781927270301303091012766009498000732834584939206664364379405450040505675112666768870595663227395047525536668116587269832168982525917048927763251743878308208179272789691456687102391480957595714151213659063405813736210452270336889053859015252910497075257568386597786857383347643995135591627051457848682296173724089619358428719137161408218462704408354693359635111446351216415156487673699158383823124252430768022054347552805580864009090320996499783684074946057487497390700157535635368472386665180811219469332590740783678957608374803341794861055612974419882519505221540972907142517696090208680773833926521548663323117942888223958009391029102529175148586347764239931020017355492594415932074104394322739512872890759057857563338506184107739923353814211163942120979004673418601669524681183792060483149427360307598937890531683522005481984947565533339250916879391256843689092894099520015459797494253852330332502064238026920687261306987753521562526827160387028518158481094627438875340482601287202961405206006305286615412317952339451617649203976892187918389222693916113918025652585090885886266071517380747878191259244363978044559352556005252266200444189176839107945945260142603838599821771337281863130429817318331305817909300013075649033957292334618582716925900311316617225854036928092368369571631001597852937075239608574736600292065891774485368765203757204862542366449234030984204224452024594497035334860245618679789213337471506004191672004558019353796529079654317287612496200366209472816732791677372248723772557034811029176967922583070401530008044678538809487032261054888320272205734409184547664841049908640832841313569684841197600367627747989903618989155729704130347196212046961822900890051327469572559177655358135145288948763000837687012685369692958941389290367644909208505409575017216096671056413987542628549660351195223021297236799667526486550064901690663555054260420627871261901513736502692978331967766759713851341784527874613561398685117149011007222082730313176783746040870775377889276024382048878041249870197346189618418276578332038048856926208631942036094300871052971172887906631393764536701231259678688696145314163258042283256316041970211136977633487690870452633385414800191610952687187591006120476064207401203294896482798844081065167393392317431976610009920171476251585806749522654607526255913296581264639783794364296509252838678533393418408492202471318835778350578897438988073543350659296448383990733434514362575753504179443658748375431292177479741128775021474777889730731362001802654607476837705194172161063307932578498756223917141161383680649426873696166561510871822282406892830767662441565126273860086602772784135262620677184592306886686943241946758263678750240925110709597875496028034848487804020026382643274468785865380931824917873912016779590367194327185423005950991918641331529432097686370581596220659245973482176652452585905592681723998832742987312462210728000195491394552008448943072275061146846821932254492645287609729681873697588076863263423144548241407824650811606968819828350783842104946437703131247802828821779376212081901963805848991654261370548095667617240010816692093534089053173947582565273472704107714782045319441935268466782242471358913294059879728006111042440537876982118758766908010704021745328240964393405323796129467060597321458186555607999787726989568388379289628751663198669792702617906244266576547088581449753525693580718763660958323684409696432320776627537032330833976666026602859806769864958295455434186364630210184382359371061244802470025989336113995087904322874442774511319991832439559906147415256863144574853510588216049408598658919480710240396937071499770061588679359154824567851536140010985037712394293569972774626399593281602494402477354188072857176140233230949567443947975787634485488461768897089897331303835716344416936647724097111053268479107504669158251844899772494832034159808050517724911996549107015176771723093984502877591486395183593410894706790352642760848138302921912761262161213222877128937613345406707174856183382683649896914923922789101056430196239419740155782095057375665468258853836679810247408071582350436763695283118438243409041167191249881058496422736827364789269970396790139320724148222491123987467896125202289446439633554637166984597682690600178482809709975596489628110647019264546090681801049715420953470786804193385521951211261517985902832488051227832065339520215001985369597636875662369823699011730911525970608482640296557396554541318939685906091942277467570826747071336916474158334846324531333308532788370608025407285784748752090259499819098254177971798130516980393786680961861479633834356315864229699072781971832832080804609409821658746963705951541861622606119078643430406623805682534266281925317047446253503811756746861485760501331175127259765957184848451380186830218939547009750213655768946007924648643951834750687258128850739879608891472612183693226046800663860774927366285717493220085764687798721929019211917752622309180410255725805347279447750482398689055868892448778028825186582758328617576733879205036652450344697668782468173311700001983671682187531017536756851334701547176260868575521456747773665164251978248202653760386784377789713675046829757566227593239778230991050099966777946763831572436615574238712246495183502713626883148531466207338050771218768102783707850915921239880214454139705890364469115322312385387635062163021495904400634320114085575226840240640962119790659129447022163578115057320669946191754635592922837091860055197585373354686215613747936928362561617935860104092031394461620702694430444677974624053366422921779897857593009309616993772640443836758621093633568424730591483936104465973312267975952503499408105984923534987371685514526030881464004699700637048023293865472588006098588744689853401705525240545109190557088648138531522006559410621458564085938757152893912944839291698705582869109592522566272395055703723070914274659019943350266755178186258792395194761527757187456412635477166222359531800487678453396784364008434865621717772129702039322762776116305315338232296939018607968635924634992744338895477357371824726864465465363949674265911663126661601516330372394952938368690719592959847707081297594463038412932551139747834634073530753707574938675740689128854316160597773533092506577796624517905801741769683192968811773068508012152475265143330356705423220272534598686167784784246917034891797752384299230670187771019833940245559462264121460227225112337630687940820321948754346459156681680517823708513131269041800153208759609535669001424627739064529920871143800253317798591922423186709830414959310191967320289886459299591629249751145382545018432920021002127837372191842669845539248887037582165538581231989268817246733329872751290597100616619621829045521477410938997389666050280182290901436960355785101395499056344523221971649189641881084134440897529244032337756149786676207836914312348445118704015130141744877002440048978292805382748959155365170780655891492407010857302220318656346649664561347517535535849874114124922875753269272191455162716412394416860798180344927651218393647526072291140370550080980484293574753831315907168517141671353498212435569802047440060684272273957408041312251591126887372124816257994014156693217537357918824209279202430161102080639847480897446757800849940830793621460716036918895965973093728207606634490292594054524754964825313760858432464381396714160798635167766132234761476103794033808076183997116899839932107405972015425513531545632658492696754998232556800516329489612992385391701025701348727978957399138217842864250301770981817206733725462533647715190694643502661420680333181104003784841393787840959076318657084191655152552873008044524307616022651262796926751274983225947397938900974302829972627529004191706294637188832672102512976104678707855647582923588744212827443339143592830177733747543333249263789173558600367926074183811402114899387064691649550633293798788132103352973865745190725825093619044251093429150645589940255853793135619843230094630024903642637104932493503359466121534908252802373020086875798916606715874934199310237779861052018633070513033203984124922794696324201025669419973837817344456680736958421504880671193688616802335116010495433678505716934586021549798433365276365983326628243563950453869167151759195637443008263925996064822252016361377839017140357120408786632533986458189512746624111225902080660132682526930355317616135976482407158333603334901222324631289888879951004805100383183508892862150651045107998783002084766494263803538356534366107572128523562767199578385800191962815025408017644177143629986837845201347250900370335948887276833514271142137891563189639041179987274053224978573715207885651268301179999210768021875763555520208946740977683681578930604057928145241197190726911393778366343111267710868174991576071543140759055813246955487645347554206861045418495535496057848479307152132605614836461689792241800959278725202890941109691009933213728467375310349625042787761447078604525726801218648239554935106776482585211463832576104058283544310950453734001794332959076291959277567643858087018835408669667090544881918156314889044476171840777244791178330963809288870523508872239503331240828711170599564971855200992224580837651991529997132362676678521299094620051073752407349891367174169832258677062427255459385370917459881164761138271294901518802631760149637876403472828054955017730888411058329632895378629238304267358229943862342440371850216186603519710924690864436439546924504537616097788218935190411793002945945250764060730475498915204864430175208727856023666131460086874404921224516191925489685569224295310866895208163823070272760952409662146845335907061826977343104115009941670189818394497367699314256415287834283501473220977044082710724688949470816140443648700560822644910395967845454040262644590089142277583589334302652754607057168547176534663674108999519719473244612760635699355831600061657129040348408664734878409538657982737628701890600139002515109865998966249796792652806141190302439793892206704041814622993876525178909633876140280650231585650181443990862915286191268708800130197421540165452548946750672407600014452977427270283867207789058218863461936639573572281421101993936285562966375516639792626445073003461970226628394749967438516216125439025977784484497809011719558235726600117103128733870339472197437370266903695470003790055043083 726126692028568320855543377703130379412399214276995465690194353912423451457615049765804097486885426118348163526010750631086619550071779508702796453148834350979693285958457151677546090258023297440478953340298361544141497517517419429008825874237115678883236573823915658000009619517111387318210593580627496673978840118802632435201166058182926677063657858714068936548958284561714473733707842470461679347382316624407561162970975558828684324527994759285414117735489092958637534267604737699322422755401964289668781848109454553729164613990078393242600001443149899809176484980882987795132990823820251510205656391326393109607154540096953291537745307182016888497662731143188953758479924187059550457279560197201908253685205311737999570456307669823367273436262146042674603833890852154263205354372303127010588381585756053572395812022758520029324981315221850543079599969736449898181501187158538307097063287005923592404850508753933049253782747463895812984015075135022919073938197400646100347696506138183793643157498210902029544698834769011527184181548389141666693883125965793198062516179318830792048258467622038188678799109193423650806182425606220160681018501340156471457540517808085396712396384754867542318064382142186609167739278923715166784236450852152071074083021218997884548132574068396029152917308714068682368812642195500912257447661535851068767379729411059712461276559712389150599534764869335637240147905055160292597385203521294465036155331800575042669359668963085123976368229488495144181956218111649330222560210121548547432459349198024988285410144961233413289920866425436735326714129250047804926672602899100392697855595087293076173778298553226478737407613889197893849301761038918324714262486916718366877075611474465440690089246395231455404644548037002452653152585451859133374105373176750297624770961914245851471636592574162725850857296757800547213980346489213058043430710074760212236548000600218826065100996280877753275372668528878840314715246094238359837546283372646009532211570476111279853442257932313849198386723858842903153643337977559230984143144333133889609507519541594086055507944179310116886809994765688583050521581699400854272285225607372564742745435653009754311859609720840028572732574164318192154400801870684098217733666089628205204163833241700202083623971414684779795985304244605990706503500861340892402552136687399277125584186883865143056318548564689505694220527129621965628770293021014320142777690889258564733637981185273450526895836123463358911628729096333529805247532009694206707918124952664058484911098136306210201301641849434535485621224170576554481499632113751174311566884027866219183465094048248714174758141621373718575922575558800792530256902411747972860520428276297993597337268653608205386591330859910583541780802777451974904860438708305190654616899232811961563882374640255623320771674748463518127713494143900920650655627266780263973451312123111613746316387946242620104280263026463548298404975293599182408297914317930727040936398619595358774078710668800404650131504058406738786778861525742688783348783109677982706994442898124975225959348347365472205001955963370717335031154506912531676065523818920838159517912125832966493636704648514661142340857320147807845335824917448949724667670497454935333870297843460124925021051774928325496620898573315003987890292117175242573549276959268949985204092568128336444123444239961513892572297703275594874437813952937174182279555136687527570107145223109465773132447286983883613334256286587488656343501038674423569303369318184219245616618710209272186430374654609272054039804270545761139041187160768983695891351393194895832615638844723492008267882736383771065115726319445033729543432283291622346501454413571891838375506048363870582493673039244442574476328651854790340207928759808883603654029103238176197835013281863102883415548960721994345316737847879482553810547853617651056592760307327224547788883442381277053768584095852223705055018396655540641093967494793511455761463253337932808650953108685522153306709788698574542274064690683650487084852342118669996848006052212092871430874081373641470973573074169245020727488916260352310610943629429725186291669078798612505384669297573041471060125499954310491356772298561667876247190935053973252087238900253731161624841975663288413585982765189904660385774912982849086874836377989132673768978768420456056989852698369997439632211076118843293226747845131051910318063138488615797457982587469209968466489159135734438158426145748213728174737475231635889884415590190949238687932723730007219801992066126394743686531696100015046607601870719216485944235004219685744038524304045840211268313826965183824012886185608396994274035436106616487369559351859313277682346308274683682854362155092259201431373925131474483611464937520756866497998192143386035647509974479837329820439573598874433285262725237940892970757329787622613624896380303927994702563821092453285448392249134557889002284609631437293863991113331561004067935186185580139770616740778437318968823821355673317022993474311069263088447714939180877563677981926273761505646756677131818368797390802565633312590287283605042448431139956758009915581460319132722753164476436180837074866555682926689310406382078818919872141675023363043464411095208293957389889743913056153370338605907536081592773833389747959873061034034355492070285277697750348908214033355611511398788505248573921910484103282222165905172957446791906061378482487588566802161046442818586717361441674029695607605504443895762981359371471433865129274063169889977045724023571657527367993328761678266473318180855554253653326483893498915796738087045252577842143062547574109071332019491346278690508068199066083279923519517519590279219267530031577280344764856241149090452962598177444815355886259598444366212454329187307176483429202789013271309461435314613153711746683641607976465058316031285266239363236365144771993404527232243193897589047075355035580275143280468251497223478354368568742211234032538417815407610506897247139995814716619987275342824211325410775893054456205763485840022250049966521656736874050194284741825824699533488242589051615708534726966751734983030570710123456738660684097640266876555478926004255276825802219185389326238490010732635328372013455174881490369698492404640848473250632784640847642639999977637040088092934004977635518339208856019571541351022606968195195113665486237765502510847194041744343571533346864322539337759913372734519672228293023038543123665802285155536467679099090815760522396501754963057589169088754812802821871635136965688030311225254488974700697776130256625611999333760127446356357646449380073674649166383427755930477079417337887488231077761675268963037625227968885763483235507082680335187436006152423998446947512053521708070443320156627619813799534739632833328006588797098621918161267933897991563010504805791892182969138142300865560036652021744098366945975202930437691350280686302216902052051978182246424284756230524308598357078167406346682402774014638114282603439359903335586745810759977610128700172463342144761369470923113020875473913651441606107059772654319539346669742907952887860951933130964431449727659942720884203346246050626674644933126704783242931331017676126732837725572558962645367805975608268607635520422360571132300592966688807004351624149500791588890202238731011452523099310292826842854293445328150896325039878783379887224388298903801689191868996142812782305623297311027050965874654832764523963164124320353724392434065305695008083596098839640474509093885100148304783956279077666865858552407484474639006146809439715946941135557171982847681643031937330291262309461619630107732706532705048851101847386483117647189632840880306924182533926295420117465320407280854798849197984464770576704018083372063548140567255475201174887877861283518763317878061215588524203923137818089811975388448422567171289324036978298761575043964150405297961770238705398190195582102830849348174027521529006654578899553640426385275538634780606335126356019307909238677405301274886175090558509215785051620256503093365506639657087484933548314896884101345799985217588139324477281539434778904871541997026327519488987811351608799274624682551546384666244058640884664297818394150606905799090365645109213689502982667223112691992200859922467735483717794944396549861871285280631684345217864133041623663071432634814101755849953192930287493517794234740751553954014946546825946461979713592605880675818067074498411496248728003034776318384170234574386675013603574611258971980860930388765976708122959980733716199501067404144307898465956413005698461327088642623272011694947410698058588618459778611868824495194483122277205435130360314967811805613228599093192422353847945674505504727686737130957846450644696583440516730743700108183612999042518654724382753718959901234966048516514450076233351874709934859398800782080329264489632949089783786941533597956122559071174033069150424333277362562691927236876528290083151920434264075303186185139094862275319965854865071650943149364622571787574805672123380100334085257338423068351807858606665295105081750207616368176034387906311646394882464151396562684927799325572788392554614398969621883980225317277485139405736916420648905131281343821822064475060861165352300999586925774103707241326220748142232436491434974385301666610890423745936500904717965978086829295302135923426785628333483316535074846610013521858952534635936360714792285960029005317665316197267448974054853280349633507935749635164994870890202275105171285499033715315866136083649052229394578517850048035913688786999163660380490283173857895228347529128391875672952118474689420232040724453320297211784717218512729809993473209815610262468608758394925385305279339347118332849679795008656519524637709852539442829790803638037390917408571202692398074300198172552303072639564736188189276739836092018890579561189441320443749145941922455322513922008415586520192549552123792000484751717680151574268116757539753575579112434530544671581965392864588522302445308183238555318949039191482931138253977734190117003077976912477921510477776628842230569965249248782926017404922735202998577609177542114868211625440935601474376620184703338145191093331849376773355691419535509721655047552819697334274260861872305303662046397707509571247825292677518777475749234227884305981319484649629214849473107893086655905096343090647443810850902869753517515844399035154309206054280039709438336615682822825232554423807794300098767036578271393028090466398932298582496064840966442273759499275200250720937482190444779104197101715593072573304913959288646405001291358023294960420362365828354183350773582587401510516309191873306572826764812206879407786463795571235520030912036827890942381797328831834330233318889727622526779913990164811984342671385340593290165690246306396373312188487674726214085803443506533664285962486763185816151298606381359818433592004453586847031445046013481795293439755354697249444548149389272963588664352866127535151959940506367397966421477883041931367178467800704101652307600049875025778860993783634621288391173132808242005288632059117548943016773718707191956399316652456731660348052765649778637847668313209745816913294467723879753969461377903732750556169817579848220271139152430376413422071012483854348163992131050873066282777875896002543096823243825208166207816439346011151388420906321686076871366154806257776931752089318541223631706778778253417024406512121850993267342681584255495554015830342094551486265540956713294954012438388292314997291685849967365722135873659074071384682258806980257263037709957106077836050390796758239874482986263323066346564019670753500846197112945642072420380562375214431816636334333133554544241121411432585673680218291685082963111498613710898744097003855969053282251572364715204141974975376942486041488301715173749098229611096767280544662904190502915890118704964833825817598648486722553780744805736258470172598779758457752217211021679097336397859609006037296027542826186974608245832169677288218319499536522606614911475892716224355359954523420568522911185906972129155694571462377417204730950426961076888899448145393492743445342104232141010943537237047115040300522922223916944142046186160732818845841152800602815130578917458523611911843219210197317385947185437529058860857556844094687481982518772045898881670666983049913747020889725815503957848549067741876230771608412576196569815378653483864995619905951032480684301169283737391714068601605773263409793660600538946200639524542951776602534239042143174385689472943664702918516002448589791856414475442501911047472182308593448871473811410762052715003020245276776744738257711774495909352051817354564273725419773152107724547227710767996453791555860592111091271820724547083785327836431159118999038735779253134583416536657578810548128427899356958182308995676570302304991793361318011348062167943768247767162323596775560823640559526902992333815646571592367738429824041437303543208002156060680131334482584558615916816005736581719257135678253051917007822564879025303793651048655783963694243680811827911176935510702453253486448878455580908620961143780978225733965165920877711893799704419515518293568611119647527453413248583441596947854371125954938772984821258585322157139657194849343812950098699584036903935904907705222597754657999612778296920487259668721726288207658098740913476364532735052547204632283642099871292859215571362447937555624440707318338947987615940418429618790340858057969971961872351143637569322654117484983952888203774607903900780777565136228974658036964665563287546474078746032695583733594657400395364113359169520699508684030479096120659439771939768733347308985498449113436260671715776400279410459614071423793360676538282781319690091625513241325004517231731212060616883235242361206036700606799819958282694819340767155413999550850633885151085479851589947078234549717360155064690127960164012686363784537972374182077399316105452820624120679565423740907841658588546690430834636149618346393889562415022410261063285678267460223521138763751964182889769620539394843072945053833573701316755729646438416089410524265131094040175257447289799358819892879970193077812228614707072675320957273246765349978690610505315710930592695535243838944482955734022395256727507784808642611343387191231534578414687856918324652779409730805707329316888384371803982988498581787115652631878820493080708476531697035623732671899927592168666251514553852088070050750841345337017663387920131272965135806040032499650854515266974246655221400014149935190867845252052975495306685215754212690249963470772954167961818529385105989655864715052528981666459588441010770954341013051250097706356489737819991536612109115159765183822877286193407667355295976135490914205698365269152039161651889312628149950244522938542147362543076433981273559394665949271314373145364987246721302174520317978919877033264165050785467285754916669036054758504138286260996903995911709345342425306757018261771649852935111581304296176030733377579199964979634814783527902701598632309029700579185531815699017986951690964188174548405423498101635137797795057911172728129944280036481368476503803535127139663500241574479693799791977995176566911827594864370588627998255219768173711294995254686291622787052773927723182550630563175653992101940786963800240501620379374010919566333466333271006470593641679922790069294817816584797494954194447540214656580418855600209901063380028257365463882794933566753123747722772107924000628148700987137869935299080987684748676077684094185095848736287821041625980879838165945228531559421762038311473254079106645323962602878640585409146771385187637812511709345569108052309544245755281780333405192956744572560376468203567951567428509318656237325840077999080701973314284734780007006531242444399402860917928090557896785267838993409060093498053002996935501122994632971435788806249477750710128385107413331072388298705139569296086857268584818048394869116486251396093845885289835872379530830506553969399230073882283921216856810729115714079462656625324097069434486744930807523118847556583277716459432028570731747113300109855643282979107784021146075719879386590955459587506618342383396779401410244260128451672125285398309891759458598225084307765694481277982673204945880978286049119684548479991007546983101666430142402486397732680910449960588374178036062186717873421695542205543194758949604995719722781819194399489822481322387120952063951153385481771413332870160540942264903833033669283062731218292749027857123891096872975362404064386284039344766478723703928963747095970054833982851808578918232683001399092284361651026348581270538886078462167132175400469039300892570689251755585188643055951633691206365143471241537206251364966435667090323609976803429229077295078659841541395758310713123973533405502512618789455756354077238795177668720152284947943144282513207893032212080429503269349847922938094680688714605968574889727822418114513174368157590540907775778852315505228769607291865803587397271572040769569922877423207985823122995575534031854907371761316792465397770539547693567249402084412901189923842150356211670455245974989349052683260569457617697988566613397463707277019993199839918188594501881065649044045276682817328176423004776488308098539419764459633544043266864950907399410191266565902969597992150329939798067173765478057907356604981170918930990531007429508291824061760004757078562274899564313990654182224299214927362104492180894559365401431890091006425942436128275362567723806274029564929981392976366981375058899112135565203654894329958222977614169289892506051764281887683839765821214498420723823005639631870174334803234059157315302437243486949881829130634424735844644553434543726919066016416089274405049351622803061072358397959032666391135112128284841757370785089988888784094786979795568206403634604768093992045208310512074900216728961237264625044720543164120918525634655802858635889571112744064994761036490145868083662526811340752089872403145825335503129159975340070847009784061837788700279873482353112237311305852847232801144663735227594205644762394728166855443053501517402594703451430803665806717759980329264586151472071751398218622363655051815745727589691126179773055548371663760430319646759532145328042384404008229017271151385443539079064803558472285189476974380165311792030287331415463627708473048905262734066813352356345527877176249179903445573854171503851521871766497508586841103635309457664959653866209446513383877790489713979968923540222964916220395040832296188883056798281059367385918182897314484069598793231185056598268213783199239852288146472783534933141499234552118955331085968698937896492313565100748402022345042430243186945118689162097213933553881588158973651525096636413484504556378892361465479451468718806732354853132794091769557741531568688897689678910727492964299343812347342464302100799170636326977783938653832675806408511402821134195639684018640073021478522515833326717180668726015137214720641501739306718033299612428791036691641158241399998429603242475890226251414351217198218958341685785526472327950731491696110514763948088185640221293849133717630958781858843446126338853666699201895989090931120531441119821041912359804856550798120928905534131804327694240770481921702455508078655119615837011689954082182282584362277877117380067586879068390717986330357028503520631911929154060356911396983412728070222568265577440253588625874185925100684563380621276398131258809986769798229266094602724224204975617723925806964518890260258778942535992737363012651706956366638684419521180577164783011719914530773401475536851930790446326404698810230615765083664975495669804128210186398877063436438861105521427676332047287989968367944776175870053144414951822553589839604826114299474115464713483554034568243702051451070725609471625856756827333237124695071259668668796084705602776216130262967193165968553354188181817035449747039542889868891521719815372766814212702829220746661052577645703634015684776080684586211396371630677591842750781917536155319913512376829075181034305734307164254577963984762457889176896945311287009628198181047642726807402457373158740507966978079698464859378833524510422560054323547167605207226429883041925549074490192005784815194423777164576755673318121748277030858151167355109853632984997470585291840404227642241989032376177339037605646627965168389618744751011890931473464886930844348919847330631579386121235721393159126889700759379282012643958798209745793229645360799564411785609204645774400516102357340638675683463138911993699845314014442663584062216372671421933825576635038073399471964380462139801766516964026853929673001536787583497397760102550150076730575784765159028733806327727601281602757428152088411496146212360855034336134856432964740152477442911190210202402292945611830217148808157096206200032667391309744500828963215786340354119409316234963354009985893523009736380418140396323148254306440720704542568676639473635022616207652687923233305177378773789048181650135493299271211815445902872800540425305868571933621173870039585559759155221998495287604011755219148277139699700024430811655030158313494819939283162502316368958374601105892462421700164041076749828316198218082596601700709764110654502314454387148329352294538422073721670925103318471253946296528962484620336972213405436867664024765028524290598945136351999327604714384025931125507363878556101012557312914966801286907530391337488256419722190451932280515344641466294510795798705462175253604823625258728647650835228815872087533111621585869375810605683275278287631507826953013831134351592171122225461167223919886366749779978650595010213683568851269782315788735952048902200900009959149593450347094209031547059098983038957726741361587093093612400217699326864671992350938781856312660020655770766764862896803326075135536500265212316369024339051153058246526039326223774531424709390452031592568530728997745969855828672874736286849857930201151046855604221842797221721161020894910299943201456941488157711334830984374230166146154893630918369842551685861853152496006103481996730527706871278331069501384064266164381310813645366209345724300055089001589776909480121831007130987767003687631189999980178695477131288005889795585135523165507233237688238268323477949911471246250683620098254109165271772530965974809576619811525409235876388192062757456200401015081425685826133878727512230651175602584276895307049355343407903465130578945556545846022130137537619605903949354304553618232785032746190649749985956146002792684268777632795990290452888532466437782317782575445048746866135853099032397789188708084643388508786973817991904455910972199084476255159482918354199867627182897356600673332688184922453820028623771242286908464023446515787637959937813908135647049815835845095487718868564889164343556077610924867961042099883002654349725408900691909307924498591652031966641939532000344760965337582595312918661586831851015599759760400659117240537839509797010837593358499571000805118346164112658643058985514352266476080291035113483185936589565276725641275132396136807648082141867712358205462163256408892599466466541149199541314343255784879633594599840951437286769244534956052528610302489826324927344126942303688828750435813313469765294211035737431607693211882770699396310393347414149461053698505808084062086540320164052457245828853320887768128454381014916980381075026929592737335232765439489819040945349350819857537616647110463301179059560269040044661488242555698266757555638024068950564132143391269709455838823673914428840448247109361213022494583378133392630017021545810421927077184061276143154205748120221392499458058599066889585151895978865862122348772040085236731403768540910935999656293912732651230555019310712772765093145109824414780000966773770500100960619846253625854949614409161442107898107573428094218506698640081462491373855101656985335490473598978317207934499022424599351335962042601011989649124653203210199423190600741262997926040216940989657995415293903316666508726337457609805356957657942261898619096065724472383753230916445565700108116007933182726859502488996626093288482203158500693579672534872522093360852205760557625578494873350428080731840140839549833018020252239567293527889635723550580121772557820940070987474758572595074541869123761553438110894486429777134949878624670476494950825041520379432923213579264128427847027312578115731573189892141270194168659546947805699318416912851157348267412674770999688585049453168889893938973346259769402609880783992458372880487420472003002753706415169405533000820337158832015799365557729843312466648646098290844946304503775044291461697509172067974941306118960088493468822164065603564950900876515638191800401383342502400857898266286074703724079041357646489418699706842869900087719527290552775823117450388509702539185926181005104582216177083658321195886775440780956208107977223398159612993799773938214461080262928861516279742380827797469212726989625013701805190426359310575645492582579333229667010847929265987898178060329239260467547079370303838427354126239623014119486096182244019531772420120501090033203466748413905429523463414328713141735732394592448641354203921584141172463351160149124165134304763169199130138569131354142634052681393731518379986295988099704169447797937773304818301074299927091886491523330560104291982025411097428272292264546319474662882736655619206358168755663595156898650200396137280618920797181127273181043007951128733637074204432528162837796409016502480325850734272556676376827278653717870857947054335207514037106720641886796491556559647466260613840856472293849071946566600636498415302631758371286435306487508554801818377678231345662241880040625885146188236853826177423369789560450076944586619778127055571850773781805910239981598719004172397481586354922016968700538959274799809981514428054213043482876779252215337488481642565081254001809076858468691463764797812527116229081406461691349438788623272163609047791659119977872000094110573547766784803711067970825471001523287875825400238824254001211913410240850621753396076590356514996396294087798382608587681138141763731864154857373153078340075281445193276087736660004234472371102795831847246294760274669397625476741367288442470312033712472358430695238757216074544262023429507245349519502918637152849597301901292355179939130888520546978557733887497272828328286134281560714083698605804998155609397788014308980348195411442233192130379688699520317294501019546291263119168963444365634323443568256064616349914749522682588596534804285036400964484623918061166545801976442020070604303124103061210376368617590647095845177662616906482945521525569175596946943215417948730903248897195441252865845921470777602366630753395268828042746291607147297589993921250271714791784342579979989897287205903262224813505544429226094630936995898433843005923474808100131461275609386921505422731939641318774742275534236674653735336490106529836231989704997778028728795142473013152936084235004744623985404329971359199928639663843874927308851049435154262592448453567215188319571358273512815215132611279281684987680619237312571066380601380697248965996682577365873048535960115656154766838282086683621436548496785456547004068898881291254565529512508153123635398598293701343604874463224343965045396741484015498520350192928150667335649172728274383681192147278589966407035681178469726878975654583834887342592486952170269455631565204932335389762163402613596585507536810559580378767609653289051470118654784898364986029660034237854190043578360910606157396278202155682851175080396244448885275799745126531616664146190900619273956140414230700702340632243341795330265878609283879173875137890554393586911943588395437075866307275012646462695617965264284679485842699428164751935673592858201142312474148292123013012265106053961140031183482817939153210493761827088734844182450532284047773166251083199507782010172126500095605754155083753644852445729760879220227531685807558551753408063288595584141103836443674285284411975905363697645288774811840588709365345260182379308982079844185719004242526009766193494103415030319275229765954059689660751220316337167306280311887519805912671560261276611999202122163620943994599937448719179617238154680221147291400460431765626779328989308605032297980940365463786762419921319041057383917935727641600279396741683061662349702829684539659237963463130439608190402808472192189666886187012208939949111391068779280111339140233678079039637518491970039095299314160954387755188236991560121366378712310591738414208668125024952616044424773357116494501348799817454998290245166803147348504873471164167375242842369063262318040136190840843893241086038599233478389474598555734594288641076903528440216711390544878462327557976601088037300753815511344493656525351819631740201967276953588713802804393432158818593986043862235482634981439940889215403564727350998889613285524596371831014776361842733829733186213110443992820940491707202675188262037713843216059274295688021187110147421837817584426089454340327514980287686993163461438871926983505045883764498688939281383080144230940702788086277572850030792235055082842615822520716554342863457410659964817449873727884381964470220938270182161133169260349187748059733202598171201625720241533831353367902527305896712364026696650802152545963765905719888774233009814736504209543402536577285124446736784519728275127864825940161864599227552221751174778296969957966795195152875808179767685967579129763555175196034792925981158202618064468673840674241690742123882622040671019679749515514510846177023239500263505531347844909122363122977625759300513117029753843355846833065055589011746347295570299492970229525010051507126068069591780767499395009272984199338956683647994251555292917320666716060633670058749254678046719787408775692610236931495849558773964141346882049915202786818440729322003135846397967907391594328769741089766824964567937081564338825231727515595985013085473592446613046653066606358423707204446135279635924646706414184078329394241667150405603906705058788002233557998746481189048781862375382678546074206301753826562404547100316145557570652961079909800357899145034755673918169334103212745981592704313061765166520246266029244330940989062020764812335570344418316987891069312004205602841349818348921771250331226206631746937123425872396959407945629751296248652653291326859659594891614876823429228860241108779289706340939628130985362047713622425618939691059486527639305481845338866822935627389886534240086943647571019233761380260853140642776624648033758886245069867482390182260047879723176209993202351477655788059323077313681549744609232463624372106257702739675645107625799428429640189272137157747194637409305050729842178148980032879713501313175537835196759307333181438294947316213283378915406536108178085847234428421477871923020807510752186292509493021502981365954168033285852945932685862268494067009125399692148010019311656936020978548251144187204092238331745365925927520189334989848989517365162306979562515270292572491995210569705343637915583138024488393426942593090817256679177445590784227319697273415305603018895624881939067916765103523447943586599620450565226797184720286401821872715518278106874356292634435901422205070796561359394101586502145543511433313873071485239735061972101000147090144642889498546336255896017608432270497229549188970693715405169929743228820474675233697682126763288417104116453630342807137782540824250893949309115580746353854047842643009828704983728265836676463874499141913830313831946879253388696970835826360600057298307776987172133954917966117917529303029324764032607511304706685347325363728525956845517717072628386416526361137130922327841948690592208054483452999956814557006442581812475054030648083517880212215849414343962365768300362056396953493282140845317646739943737438546820243039011906294563690447145648405808147203130221143358089654143790529948079544225496718031491180137660344176559042946559499345509344723056088927717266512654262193823215627191681616117350686112958848800495929783440028774446882773472711962927660402567098206441013438787418118182675159645895601219125068164072784719074100345206323067170918833731888435770802451955369005713692090760833049303474520077476334564229549681259665632108900753573338146014881197220050499621049039003214551996004075027093193917869884406348084933232501910064114682458104853696617832723454194664163888784245781601109182736271224298629264429284614280440754899454931624108513372974090595854567972868511729646541867164900450703247066436060517885271017839644716843366777829967318505989203387192576336280902716981278696304103346598019099892407547870105642917525762727242945330579095598763521672492302890111485195979684963187565052700137607359049779513579251521218992378661540953995666609904223467354501793805723424584477966774147129546296849323708978696283649084080672159476969969673212269198172376325610934396093504140377333277559206375266551856269099422960136640469266236548213787081345276271824779560892278903861496171488726859859611836120825410826350782347776090135592331724575488741332912763326060312906473502462014698740355331407530597046129923768911227550587984662897608062119642926422907112205241942494284007833598609757294241861912358093180327691127819954310916296158186960555332863827049437193626850805627537406443208641412619734618947308431459669309777388537890532242239873378020305721213795547865082357615559650866605562335490816646860723527392601509654210223370944287202114259954209168248812964777806178619154662455164811909413974030366347344235603181833170371906081873373878886518238776012854375689877839191081994248647913631247021591424168772346742660225506718588467217841378353132784275313382009887809322884772403268442732574005918871852366938033377040089694500706529028749274569654569477809592174243494780436463172366508360988106535476254518152994225373996856800662613925492783873527439164308900095949642998533956569978880946165884742866434661238469076839053128166183568798504233215493282105838263841231486303972292782420012316221150911620261901201509705998793456646544568179729344927217756758101400285967296981418264145376083987270042039358582124711576109221539117990458860957887165794286779086193898816590968871641342904694690426740875199291551932972062010983628785633846132818145260165550570296769765802208461434629352865335968389944288472100435379945656589356984283472243075179786211019235461403614582425351994181439965515274103204286896118136786493711195598086873901688079521189158555250873224514722580160469426365467496764698768705076065178079449191396630559537429685221336171042039737580176460942200815132391830039501459707457816920510392348991763854308300666170654150874257507670780683964460886899442682111170746626688858056014396408325779131388133106215256561403689805141315306656727589205045113033653960244522659790877549515910369482376897717330778705636069983057941291039272979918557762130079358742363968979457630525046708383309615217268693596211462091098636819659197417182262432722431728999437498973601427963702569119782176288057677630743470116160390085517965110897717380230292409662483321544867839111025655571193574419496592037774407219755256652559462899245307497656996995023668372875225160100432482116955266940609031040741384527799291340836053401139636429646292774559087376668454817411933412835669295628928299512414731828308258152026984804731625424649047463387335975356322358779784344037536856617858021543080596223700592429535543225186349809853473050123800782015465682777799552648472556350482619908825759046928583574186278353671516376285347707603972515574000328780647026796930775078957192446973600464327346398036777083776145882897768795847280383557665954124203664067991419893092362597692356057843851911890528479114722595986995386537297801360590326833913399553748333878047616704954126700437998153536852663832332484612108708703989952517286698910426701341834611320696908672045312461863036846577597045039590718559190084048769506435582353407700522635099374307072397256684206478644336480826839234817988112559205700862534126024926425793510688380950207863528384242628439707659546930831438186945116757239775889812842053360714608469305241562852612633920957056330605332691836383045195735818532014637860149906791148528269330647306228900914203674085047847994401304083785768052080916989724067175170958107208661824979597545146691848741166530209766746101487245170078962673667963013000780662420159009175955841248692368003335032353962864931238886082245943754788065874038163066336675531595841142011573353357250521039596426945233222366559729546559382922341130906569603082592662839322383755658247409762772012273394805404404578817256539830903098234016502830816727495421077473178438839018309702003366174927126836746870012655510029499163482502520783893748435557716033922899873966282216017900462879024829686905249465186269058572526379073838483255078540960605833240242065718131101945013609903073527860402605583961357516801842397723542807663135760842229541130144259846532069876428948722837509541658892258917226839448574986089688107906757577793910683168125305255788030695004973484154923474334954812754629780823717793358026375795143660466983868802649876290840208112018648368742874246676175076028754387802121555173121585133175154901335191018863124858435056590566005333439772966357379023600427051130874224488236630475009675861390994092147411939335573725981770016021944808513035537313142525935737696062131968879018887890659365249348544887685092904223159637158540192298236478491284169780481226694380860889592700194395977402886220659952976402780239423224983208842186992377884394357263141157527229346809738882777375712020176197614508230456623011466987482659907249249932959754792976508518646256186268147928355994135559925109167295202227928583271019804521821923436633430303395198625866466759758387131777625614381886281425403722582290911127085388479117655906926368852317367147876266393411768060372487852335802900831703068268859251517068966421357203513859572511151293542229568244876047582770337674389534951897887883285465604348690750059510250209490183660543339362266837000397766151111146199447415401566198409230540566185560333965154774437066796364516704904736538104295199706907735961262341560659104378281789870790732787993539046027227605935176496787807858235545058333123099925532877852443043041922245932315480144145662540767319365695550021459994021110493827755420327325816788852785946874457372487708529492747019131571796798786182183291038168117416346826945795438783066392279411902325612826601037039773699351669958679895201731004030959138788595220110349119937032113671261714241016979630463200968180510932138477707227255337274348360367092742496322645605334864470313131549187704776745669560795172045431406785125759170188707679391583257698658913077878519324793328474541280521586032081456770431693650094851492654859535526384503890843748097299830488441582810190067728626349113369244455378833926353955344963587246804444034778407350065015003558458228485950275234977394693236784754072865523045082885227444338552435162415744142504062553681712643855707901263539472311933714284225175001651348566677993272487465291477327939868001600274639349356782270767599743834846672342008981080145152971206902471274319002076002563912163543276444650469250289445929483993270765284813207570506381405051727457574601008020181240950272834452119180711384946451690666217649574171157930329892837908956124812420768889082686598431725366828442529389095833664228220905874338276161510509727241745620971829972881372425549132511673406753367644223343953958340976129285476094531866120969873238683683547402527846590666842476807661496239730703679606544876504439003983796079547407856643296731026422708392328350118083526049238213423926852753380886013547537808246957464165955119183707505481900315329452763005918220895161629100550313245462602125275147729883273031666142609121390583409458958888549069553530649397249263364999401217131827897853043586747903934921890963219615879357087389919641710973914564602101623343163637060094081026159880747114727757625827427281657543465957534626005674004275406797387915459841710101517022139527771137755378614159271964225000240780497458859691617209951715512408634907801231105033471052220957395196457723902610975462259501744308089151173744492358694047839867823426894055130564700229874205655386705178332360024123179247756546452176461661299943298864200196635241450612389752056807342535894360865776798579728429705563813970050564143776592496452966905917442883049641590824173013244748726350838662939215846603283705592691531262393954778428064427774130907511871005040106924732753419360291422333045615110025550293180278736547802496062526335217018615075757805813030443938345168862550842441832701465587874898078041542459774108016188285443059450460542631855828370374198787754267378675375959529671569311065510556624638799142554014048491030086866548756203548956800683325398236029979841993711684859822448101671511496884806755185759877725486375805789151244038211993966518617000502410025547254108917424457055486326539468183193026268948372837811842787498421812604124485582563426903070595539618244276874501471005994077110934275293133692869327117150377078674960179503637829676933742232146074157430814726511726386545003020791142045597157191944252616398828927268247103613489820696202888615484709680586570462608535369777004265961727090696980103533890204866680801781525090767369201762568978279093868221299138863666267932798998607048796992529656479210091983373745684903098446933864402829134097721394097751282492306757514424523063223727600974486471242242359187964856735714678449335498165270062477610514587332796697792740286637639909615195602606559197224735857044894381921585878537916044905295066652129092542338241576152640390941589952412988457873046352549552305464748676928874449698787240232530024284157992857797516322999357902520627377975907607094346039450476059374964034174382532424690165699792417165791912015629647955123233411931309421357072038354538570638386422713587981596343983629747429103773881273691826256313513982060021217516664425912447726592918313933684952475421870512548541235696929180960359017535356753628179159575579177350317349017843759526684520716332043276873911937527577577708230091439158420525412829215190376294633528416835024871105603672040881212426968255414825498273450387785062611084231973155835436213611646251685518473572774906354679948281463636782102051802061998450033345519922565301444724840823857996444920127554949024726327843115332692879786701417147479594946035152719892677288696011208958270199811338826651402141709913790981805156887249135179888232141714745829732820920559961410885724222098681135247284438818248010871952432513509855595550777864140823884723614673486200151162887164232813531679664828324758643221594498418566914954498292741195441193794933643595065602755701701791529780909269095141539582164924829038912090909230546143124383816003444118944127424223649628195365957861473406097538813646666580577474674311876662028488718621269809405761692516809657919114811018643467169189085680141774932323813769736481324112280706903198351681766291327533691642505739690225955969760837307184562735872260498630619149596053510656243816235654419011924617488287360806713376622335290689990082693688580591812324690871013005118932945059098607830172517830399511290659408999130135843628242608259109160791993236449268673180099966345944345516266924276584460452765811529976735672234479003774216115017173582449662669228908551175138227956663804767741543908534072792766398806647362599882835186841308313969241785210904588714624986289591117651297145755203661449104924575165696134666769486934464754979038808469372604983944051024516347133665166640434448227187824536495655024450101744922081211721206997474570319545156638909638552338607910102858361258472311942627265059823339082173638863880685013147567037094551300237931827955894561690913105244151360364541791816036474135293208732847413498066703787407207334776967839755011045681158422984497861125053329885196016671328170762156956753041651510893819722042527100010691004134923448357746691969419923878776862918891043665910995563012179998274950322346085579196572998625478340744775210528708051524230098625482147736657703019532082780809776423646086427889787926077404786717745953273429314993527257470603676407672424344398816913401802041626957258495182304978344760781418303685418531834383101440871806205734078032819189271328443793410803885977979542872560300105714369516446415002580701118879656400930121001739426308899292789897963166771091434944378331511147042784938763410415943476875405175620809733305701814684797329047409762160649718074032191430950538568822400300196376648850820796841419788207575382319016891196260134172650152991580021874064657213337096468399435022324579266904489614521755666201874286349595978591083655413036989971420687996049284041643523689313479506527687035280015991188602781181463459251505702165723962735390879759162841089782722479208008581436401491970818110731515444790862625393558014519144484424718058119044595255105382824635832141902722612068550696026453246927760131699630629272465238087345246886350898074711705379282222618277229521347353329839454928963731863749345509917282387414304186962081341725408890354439589527286079682467345771273955441372032414560510454275417965418708871604144969408465885565463654234084347209015080602376593632191504950953897935937032229787640262219033982040274524079326914605218054975786487239867631882836869820869715568686266053104828364276695815416055883242896831835764487293289322677335591715415547285571379059876529056121577167770153911527344444837952872836965287418763344319667315745412590985198767699382857984840198786658315849748924795580880082491777917382451713208199187428449891421040728935288792605013695646006130945119058433392111946602672672968819013383094680301741445442290663369105611039884919292560110557324863127442780625258542826878400040969482923663035809860718524814855167336492547758 -> 6.71571374916872862919623783021225125286186143227606135066633800280211471361641211919356424917759812819113564070906803456100558876246101717488334361481734432264012432587098058699027889990932388193672750691350248107614408592889675311666415714479677744299805372241319706536046288177290731387818945074095095408802284028584745318528595181289823194969020626007779449660299812312588973837715434417692196134071038437503299992916918477340555204980507832992906358025122959345166336663265650341557183160756688864052000416219645586831403705222792825518634410244044171151845669531167473920157939086610942861792906989817959472001642051533321069976978081044009627698244264773556209147781661335704859621964807282311709576026895891340379107174233969232463956358530375259402917950537036296848011232784664592637825229116064412474487229915863645987410326072725772451147274793310700422104743972453812462208851485658342937567105369201880959098095109016944008324622260134167885905618953990670566198670494141351504212122403279725269048143970728465549431934836251719336614184863416213616598220507294521783028198606248193123697882858840699237447176597979797629828360117058427016968718017437288243711274893820346865531828563860538235067736842312364929617160472478971476264198429510661645180621325554029498752770728254938277806393945386392824370720900587676701158490958068659039498282122072306961372439725339905050239672670454293543936063712353413282255490396852220806891828714233685686713045945115928009479513127990355719073260894123681299702076158578987093245824668373807600704495210648378499861981016167328976770354801177875133208856139383202145514259158272399201365348655961029356427023025967189229839775936171864441288828692031347387841363901657465419567525268766305891406055369523830059856539418017167168342413749997496700788387131697634134861342858885212203872682255950976610817727773657617000150500949979799126875992333174988568053421977798432884418588872115075478444123197746487292330817549266091302237768646086445908473897025047412836238649033455718289254367405248758812744739124118838730831396757286493299963822104765696612591133033691675055351918544446101928442039680152763935746212967292953040506844973486494319546571513704347603878016370290904910222214986273240762274437690791303850863368140012586266111359875836216437279816099515729796415519122075580313463832724410691385473454055601809028192324426176273643177998406747801686346632874892762927397149218706727022163626810413928110861929155521741214156321520423118254725078420268062946777617736233385262855700589013434902688682417185856120255372509345672213314910718345422059751916697328170463175212197578392543382187381969247393459952532914662629579929116419208224501404104459510487554978807206269444929443549100965347855888794579385452642793080880110104459446680858993811454421234717201078682268089090709775555143927942611071757156234149542193044710122872863251565368601720029771990305174337813065144249211312095666620699592844765380950359861013344222225057032143293601278934064199589194300783706722862534841767992198199293812747291072764166818876074466036233863682201988749028340277839959764856837476273283276592864798881724878105659553028723677952948751092908789009356804435991583570331832888954162448636177517956949900895735013217954849796889682087106309942965821542273027097369512050714141446061709257316474754454115131856124314080098486721293289112287183235917076309932317979586199896391675958157181030340522912594461343275247397371862790403864852453557786754684879218340042482237180553229329419013717515792104037213537266109820782294871764422935136628086101725840689112203071468101099807132261890186562331555592728531059989869669592653309197073559290550796560396195411651636479574660559527438444767090836613494735310395136911525851612171808860564047824424342855951943618315594058779474475164043785893069269061938661990868141525548172578558849541011648522374240191832383883406955498709502281787337678494069300474718194626816615564257578000616507476202344246017933068326570014438441301695921111255093240567122689480857307055355248110398039778527877309255191325832962068776853740663815964696723953499424795516703919561136652859191246402484349858747215270693051892927917895875617109308776310269559587314928623229076311876310494426350352296958713386634164577439812451067568410106090887200893414736358554037178146521342047748040628384991014645055341281859652950149838300677919481636817893490152243507651212008007864180420082992018146907374150594628537390452014671609084663670124258939463239242971687230009418322415384122820384178564154553819185681364503663052380560288525130583265833175121062261319247722385096257413920351308723476896073110137742405180536873393567846582805798580258026030974339808271132583822294510074910605152138045617763672125768293418305540006070176279806235610371260931396030241499167522790940793940315614628552122673466452657287638366694118371828322468143461730220291725901276741006792422870075679976115932300706482562012142833766107313084973555283498065490855112225050470458561636703459492205752279372471571812257983771468896996901521932299012662878456807861602283961471570621860974701203053315930473932491058089294831341901626875585782850415013199241988759061258224678842129105256762158637223275958129848392600566947395100544355743567246389505674491370231884554695005460239853786977137313279855646456457889812797925151583685802818321832399535244298944867737932044858675346959316359223803342155901815522840195577025625783905195028582704832204052466179566686442290103839018128309390220440429510785011774507298404313268200954501573007229504824685520563307457162619607917882893665840937272234558186147834537672387372432178341115510071391983413596441089123505939346458527148052229019314830043649885178852402814215133957390040308745330320395392411143127446268484816498447153722504169308973538806422656690052630003895407879794376139747387573495015913686311540917011720180526100845734869490040998535500774437132429677246842525337316271718558223823004393549648932942980783897794971461590060922280795364081986318192273244817304463278612032682585744600128275204641248037618493927969225543319960675851880488940940753808572992674078960574335232506232582697654336275098482724552404335975094745987875158529431144833929382914508851515242483763267158016970574283880616437462352815368691285918283421492463558727826501620908892908252659354011242446499439266339400638942304094876035941821743216753683094780648902578197564839867509465692587725934630470782947415959741705698569808539682851751683546869704350933084092702489059994411174529392956429325265989575540249323163112527400333145810805829507594313194554861221674266696822290160181367449816508443235134441141610305058122302321656806796279339906325310171033065862666056295145164047906250328341228019398202009423704973114974948136435043686981194196701066091346231787968205226244491299057868814683074599879230282527710197279299217894695961381807344680813640953496401145557856632177357720594847396821326087502944134156971136189695247538290911577434394059432396537893215454395596886779744820457739107493229194630868224267369339882476552643170303831416768489104603772122085828600742064773491426505767398641566869096579263383774901734560741382433794075758890601243758627807164567171047638257928447317526401497390516769095757453737664548589672972103267139511874651223319589773660724760041675587168880032486950306927678770281546138081570323086767266383400928126015007845514982468659708201681382634380395288582201652862569165659297285638806737146616927286659329112460835797995630234649176840832163005971311411769489950579457947487268831712817041087531298038926046535704195604835344094937575315707194263391677281157186494863038436039717508010899692713846382667580886369628409716554796016401607004963438410744065279352124132787124340273057084526309355238445060930370696279034131834903904740418979796164038049155124823717826020579217487785534349701695032957747642581960357955312647531972111613969111333510164407725545334156828111406708154021804520141682177952114470382687504294007848851727895159146943233746399293453792902071689511528896372420057499589649183721246324108345190277683135166341213767807162691670805635530352387326999967004816426060552806689146913314784475520635578696349166721105484949021559789086489359995143608775241692046849851803573422266235172025139555289017396264312600582547116849511079680756913371400531097715210009378001879039389542799758174076885563098112963865715264686676028631926898950880883420577428612450769903972561183536832302545593569661847618255492712864297248354844398428612200749037132527080792095008876582991638503246893506648570381394673163151929317556223776726597578982075808968318437642571429789478439711078867136947103266848590373040642776609797467627866928546995032403427638990271238899847455088137498357255780216812664066237321030221742379708786916656176641155631627961741844150996896336064150751055888975208653907515694814810010589698305252933426727424412521895514223533528963842759753361070460642351683326707345514972045042998730737230188138951365516385363063719234085224155432541834572140781995655487258755877292332281088957552773774933772893696521569169042327151314253765618241160541594952955148831233476831944092012617931670552233202023970964929697086437331594741694841550826460786912047713220964718866240831486222477703863016837727742843675328677411954363155115043688934498366435156675862251874854994601537884395138644998922081903008225533661239968221339941306206209166096739780459504276051926216035520798360616451839463525739279218436007522781822973928974576478521980707127526032130481502089278906289396238914832995208400318598144261818913671025258075211453009422765577173801190032055834725756848667860192050742061842516764761365403243311785653605323803590289327284498536674582156506330244999067130835482691489131756653716474900230609322336482557246729702650386671656091983462759604846331971313724658916534959709079248911225556110784020974788241943753750230390193013131550467426236167883868469370885017893145664469335956703604510510993180573270330912681526994254974670664050826178010744505494291285158120475614187533532932767942664999297974336379740100297469416654158291345335139853578278784873162628207092318117212706003601125834344758807144237125225015862539130616451914338035896624284719054724195589112133816772385113050983816358752772578133039256121856078792900698089504251459267892602400241147397739297127709819729771712456225842862796112725118777056613351069944613127968430159345215027797752973686470252283049992664452793746271624960502595472016331131011031663770511547169213251895077621162197212382457821572546887686663854329800958590414291663210248000370065042520369703620388597714215603291487824367068862858808343658506388904944180367544883256033765776821351911541299036618308780650124520201240141112695483352327103623879921622643731600211097630666633016046651867434149198959055858279544465481859712576382289126367182802296261100337433018123377404397947125878433904771841127477614185381945348708620096554480684003845596924522168102721848545480030824316388502787497327533389124603220632652820701833933371102748126604550847905608172486040270486566982589447926858225176255476555954513717126909242207012602312846500256250182917076682464139405589490948688067050856094416278656186379291442754009037457962689911840424329933552485842908974886540874423264388521202444124052491519963865677249339557760914594857950845950128804324199021220934182372976669927697616712683346247837056751451705154441594459828909121579999274737425734717869014099446603621029765616580726190334009647396734885547497660546414220614873881005102232714182957633941117534940299664856143468232336415891262562251819797115616313118045239500304785789994060629753298067300292698930547838983922672835296513864456998067503263420925695842251905539295841285875174771715587508618647327048547932546657183581765118144839181364433494919967273542701892675572281506593204771540014823985647161227485966075149794221711469984898302028181951660150710989707027734278508251024865389708572913048971341509885178338574141880019062846311849990679087917104978271194654905711336310056107373323662207476884437364094903998590859098410891624469236072349492853923576510418155105351910997172175111549785697518346424723843566305780206029160178237666952560081704173158111819400724067248520878190907330018984542269297429964630113661061406355689980637634949662528633658198731548539141426418602357441600147222841533587518239257035927213405044470634898895514017061262077465262766108592363914386001838767681306737721179606336417633572642712687869151521197849036289642286502489634603103934652699234331805447631939784984808107416497327881493625464508469640636629173227944102505903312048961955280957832702292657789033192206198401102736455905579819361550723226621456257257507666260108465272531240872283701250133670556523908595985815193010209037084717336544615662514711156682397259410423057644530159407793864599850860608925917130337056153251234544016471821768556023964237743428734922963616069962091207089171253470520999007733168677037531314065011789217644267577806839849337664138845299396378472122276267125718190920754931587338973597562802055790647060360769420439959597362246999370659645720696961457639173628135879554015144248324321040287950838190729965716236071933477684096523541970867158121627592483354915232711115194869092252455889708978199121458812531183721800984921712170598699013774487135862341796955628295591299617281230612482179721135668355451971926161073637158111003840845074572199689512778631633983666675832160563801756703924769971413859809692557962713956545009129406284577971944327594723999663268174293389206985461633748728506774086770469495168783929655655910942664807796125790773038275763948416568980134944524037086961102234088090604022241393171258201284646480483069473857019188817469974882395005492067845446796556078449848641827547916157807749874355713062727139551196678478093023455555048967348583530353575041699749109525717958430911766111120131677820549014876305070509780473282561900774416370587243483870569258828001953170172645989816887920887800108309221564893533710201934082960736325545928831831233827185336321394078982289342264476644490131357114750380338703493468474557416615452609043635405559763248574128760923782624321604737293400044923460354689309385252286710556858173237404328403027516265365301813706683979430950847646787823444513504304274534299274759350981964336969532848468145492988183830418565658356202112557372949446428724557627607853487423374741666247345579564667357344932678712608439041621665802600491704939541136000303621591468710434239277284979874757951451917822168343360842606712199462223185405230633392498790751968363353905269896296423815489119473339608882486891536838691147330008714735270773414888880334106512459156285696078160316369694663060645369638145826387510072330850630045016773946262692747651703457870139724396212898864736666076796538200087766090048186759629849702448359914058849602052176692285384964571665481121826051818170883752896288473417319634772586289102982807332373233737018688469020814901695975252437432168844559395550816064020005382169790592948063082234378626762970397195623508867967306078635418959591980429391675882583084395759905144353255241503364890867606212473779407234001207225357568240654299344260259930495847769895541620504485776644655421959228186764051677048047089216845571900967960628788710663648001308210028800370710297289544941493890344901549310819220078869401747060185775536189909368096745126960212756861218640510286573270127217871803504622151005440936624186150258509071944902972593666779401191127196750540282772209701818869556826655654413433708562720342210119270911275139467670007180179127644647543019049164726464962287716736594253846742821905301368875262236310638601088835952829772370602837207550189909590682631687540999539039601911269016685705521949464423306257098287245557384763487646189478340809471372055588305202981643727284215369781153661473859308055156159518782846724319206442251297911813320253953251233616662367550173638682801436352861587137625724789319073616249878404663964721157976883916055039336833328231336483885657605262228963821308964347366218568698443966781698275983398311335919948645912014675267760302497289920236356677260752409321604324439579486880349796586896185601215014000328202822025572699085705020786969762111778151683476787944557169542700882782277843380765555086842628354358125633530751672068977423346153384555004721589181378871714648766089854124614582666468651520488003575655261673746357001618754550879854467063809626256064081438220889821773884144787533344002505546186375964363545351760352868999541851165576426936814110261184767685408419799972221699306288440274187584192262857122956795146689863022452805941543268444054869396919562110985883473759266903660983937660439775822041682599040763174406826660773083980756258167235169104541845550245686197013856272344750967782384807114889252516683685775467363850373982723631659502772078311135724768549769130324752379180635461438393045525572707964767142058702312660853154920339379170667484849347339601588367266122570019220897530543778556177101462682127574044440207739308004826363065967009943011118958379604531095352568154522383936564761307881756872662427078246026128239776426651840846532324395530831998478913043737956569151176865966948518405618785161546686132588973619831795941416724500123238832467678842997836440626906625310615145683897815053469483420152992985025104055188528651630121384822178818201106133840855272843828257432276466183264972773071363046775362654848605592898931648061872656347433212870717788475462993557697511557979852159191757966459856407211603615551830345900690104083348359306497463907765917735631619990783549357082829332674409920267916293884581542672866801993037161410497858186953036012501720474270898452468328007699921444969956432593786999175861008214099831029417140500022117184593596565737666720809905849647529914544643466997430529628231996152006310557933667659539324137095516532813697378610316151240285003177454842180022815973426502139486567391833152436478926830797918053536967436028909413953300726973465116010851575180041395351679014945591630872260938851082514806743193227109835415826893795808814528863632487566616758601901233675822704122072194455641684454723658323804031090129787584488308617249935676475247734231048992447988956886188902824436010780891727421219165889063127985364114319808232434572743971188806917126610124006148658790714776489281467731437665854365563629250115395251611723475906482748134431827154988926264641334957551130789130918950024342713231727672897165285504655188483413893204279081398253207648278185367423896343773125663370381141069638861825377821422371357377402196952874085843805447270332612494921414458381679002800513216549781529660813156036962408377659598006312484516182680727635214780808597750500174882066373546783371958402265832921645725547702884305772215348826306286450699645591720744654303030126030524065886983961082373146439855219306891536712820447579082034133958649252861074887306707958882875027000092614393154036435870169888118012054505947963121055850598820001070884129389528543059080586116632262373758046259974351537918401477393405060385586896709909140141467406947935980294929210017584341342343435550623998180976972980674321150348047536686543638563571140881821623455170671928980251141342099232195945636397445432516286457814612163016962951355459380687224080612652156053809336110640706141567185788107381797643401753803759210848366492922376228733172004468277193262901224078452233230107458271296815810938657793297089825225459736961570737530389917891650626015602878041165110204339568575006950584251035749873723114794645870734780283102392500867314459076688561472195692033133910043705925103933720344780573920490214751791142753665530377992304382501594195433936227742611226235138009068132740211861257102999611017703341782534901382464903606137556880265291393710668077434871263596448524616956869157540902586196217713488017829540102288832807071440706189555158082302216434336499132674938951908365066923339785953646913743675448160108218947772660598498501167055992313157741663885684766023823482415520202025745031483834492958704823985305865612382759574768533490952829402201417763520673072095258326183422786014651161481027805462430925363119493818775611007328302983855528302062729969505782196891193643055356871263840491938827318743525533487847349200390330289124687999465808268219137474187813622754255211165080719099525129277311392990641129842411577994496004121096481618846793076301506655736156582726175399234774556145829448469304778482422573685285213261734140381678692059508743612686088065019722061895800075148370977236203847793500384499501262181780557188703347351956731428672368001103170499367526745721668500984086423645263732630676163955820344900676079117818445027948146529713055802145005579292816787304051639790404195248154631015114488694593221956350252289273506968408165233539022623123964096117733412267819481661621263367073667066174920656543240666031013007399857266540401832963333156492035166120285061511275897000316573248806299742740411387518396778485518679983812001618234285270713044100393074110442300671644226997172954563479818425026115002838586201966890606226189871976374292468942860258809931494200144528334229302551814034221403870828513050644232808970693344462170414244290236041157563945825332203805771734765162671619393977640361086025969048297845473558843311572246174611307216544192394598764099687518933080712146110637315147680161047974876890958422322797256763757915697373359702108796005021766543197477248358521647861161705235333811364157971743145287320228903053894317530198092764234158456370863824056750205016396876955008395373294328201625294544265211575825675989294871105207318417773600119546695296251070928721284197065464015461171971658680919672129773626266514177753204371549858308243243376435280754288248737066964626690448931079162036782346486876221294063054898808635847505538948206494229755419912313226349234865032576991940695884574105759804293009429062020714400868628027817942858243627227514944014713303045862827623146858573325803406692588544014129236276128587903753501558544548423019219049624037303381841385883856250143976422852810097772278902141374720112742262093304265860983829196616860919569764600459218475959773661420556100129449293358961837002921751299473251060440303252301671144856020835884174767905296285996503345627056546189333473125345913040820680516970455707074480353456314124282573809887103931011585002895379426044704298134202218929484555125988880487873245315429129110878960341118966001027778219946470460104289805187537928422546137107614322900216079192473709233496361621169982223726449625917071086889242495494175192953261625493440463133526070556439615677361562026839271120959368583923644177931850400157740810743688967113054940221967212407107306288260837717143526212890874157080879379107765458487588061992260376466537857791009744126372820800535428651803476446146866978278287356625092651572093628929420222702031415078002128156907863994318461517073138793572062121648885208722745821043386252681862555083695497274363086246672793830072482651245911199449256819028344621214130529464717048022508856461326436547799907739456048865741197328032565508696217254759542434467490282787664046916814095275253600513227014855330901299200121537389956590075563754168036588194827911288184946083039745897923083832114979702171398693616505999403456712306235898055153125193003245908399938185478877982002484321007071651856156104017771373468493772457686156181882931024801544540354685353527282565864005371607455476224948261072804915148186495579134207402779373011522991578544011311015953273005082380575693992558617596124035211393719851732982582981878462582929051867881720869652305815724089974850196626046935901462498359986556557547708660474070862009755031623337837030403393517113749964679196326404320310706569390598361509766483418885869007017466187709000145996327794800015300757205346920220421849335716671389484227498065118106410950799545868654118516805866094374528753071757497922200510495059372977031744038972593110687355825861115896032435599316964039765742580724240232810327514506429474758179617515992652976194476615963888661755355171731420995148046437691651652390819983802513025665022893060697996076614881383736244084092058080291866049485477339791920957647843334437786102401806386188399928493155030387540562338702821089971476240457842158823063645077919357993298779085843848176039042360711266515548997138628845562842203712367315544076619487393107239747361564890989195703884173129286610197873054325862488732621471587992749407652133420039030581041032645209501099624203875176610493924875639366189980109533528766020008604154322644517776773189084831953234180847045548282552678874022224441822893720791582412204027222348765120712409376384597083927890149439824301117953545364316118559323060761356589343338073207951528988774428372840958902480754174730541103333277293769590555285027332962773242402404413461406100481423852275841689085693935792947889185514742788548154281975243203709970014905317846579132834222863562188369040283038518115917331961778215592415464487742231368418745848458627299740590374132035887833198308144110122219358641495544162904998065682388995626215215467959768280291619125605508019168849017723004965497856507778964382283534613221146922458658004514203427716576267413276296650993651774754554170988477785009951830939065772024950003764604206585559077757961841253664099264553755040702237167350458967744830489151290784153831276930938201204538600669333549999548933910202640613407569032043867271175289632648419242376908986673128629416464050173739070379019762298025571838924600019982334028760539200697791993671246734304866221972030673687445572920369064061982410444888191740344897508777168519543942103679347748239415754951764904547689638899666975660349339048060244606355974281259136033129676314241005196919596607572210287171961962984827705649061318384449212487916874727793933526447840066983759365861902136858970561474143596660812377402316411686504880160692050831437615975485277259301405704596448101589894959173229710006915574543980474499932322120663590383935724158738256130922846019198968402956250211880808502502582388434688208117556500753716357208051745452891919332291561512844586690454091677404013710379915699311949018843632855194544380620575540375427590202314097327683095216709874881441577047431023932483167434540490011681712675686024711556048402283673314047885687981848036873736869967717601718080732402708341448538146979297831948258663256349229081818158072975461707824378002034383538604311684083684203013111155396304212589625148227060593738891086130413989977540657892806270070935581247027245448132335254888009734460359869150901414649237646270956838794893690402761844304611012738255696530891308070857925174365452951948448985241940890695375743628815795606580368634809264105443678686243455241374096105690351102205800658443534861893176180563775781624362033361323709481156891121032833521882262110322786828879524879234869219770737486555411439154510665692410976607453352725130218239026252770102520930513270065420719204437185104405383726063695255862515523551660024683439593695256591677199027542975828609960042153501412843918137455785747968351422165554448520921796101376623575921364645495472839928924892052958250644005968078865321523093100648019206255275194461896115986038204800558100183366056372228897754561169970230999296927168998162759614774174832145208441773345364756255912203506684878062460354338541778457311803080957672933177034183670161254800120497884055477922847595888933330439626376666890459900580001614377266851969906614313843119917060443892606272886816816196755424285901377164599801126945521962323927675526511447519822199500023252064170316224989552469650797431473052219049523422134438225160846098566505388369953581116125768403384115614777601492143022833744275824102805430451034422577306976676607838032828382550504057107206475696028533769249177514237869082501782374393503573510589404217325329214236835966296131634890983425402812856893965101237885987818616895497240073676277054245750131465181097884266573849886422671678651198452215348374290948398435675126751841623686341979761730119864491881805372025236948406871047045344382335640293396390723796108397990581007776061177025255952388080642275922461187036066885361469591079917178387770915408278366183417766080523933004279205669415218993265361895962147186186620274216919776204579311235744938068243609105157380395896661723931897895690415351665947979498930735247163182505533948193285386571854404642080051951746206011325187145005920910489866216042312476515771465887190004326254689565944053513607171315774592831692695562110614815356329394381397729882713708106643668320029372053649870163536556703360185596321170815231060147848175666604732853881565806317060562334825917695557183818648454429260098410934206160316038653843587288679061427255992258469031216256722718834653562685758838632870221563789999296487303892518811478919230578090907538520758606014575084858853247713094873118821133944851979739540707467772662393729293102914551402272297268178104303935932097750341752182635593106333336803738366211135376005616773869256742020044470205637919953923776173002554192673410767146047985908528982046673158349088119027453074850859104911580833845075962398035668087075604112585685391808213074798990631038709021172543933940184639349222368536436434855494795360044661812545126108107861177862150391836941052162405083361141775847980994130486095368978596944953498636312582928493807994653160131076302097056142346083898618769467260053401998436003425610114490509513607773855475359071833326946134418702322772120237729977891804992477755677529206536324371640317775120436705961111205290441438127199264354449858712057691943146939986248614107041131808302409031600951701734530582910464646211298155234328778938536036667369046437609363392332481812532359670190826861855883244092628028588035290460065405486568921443235900366231684550796823410757752344036832212996265499236026126638373848443784169492972788723666129957200740653874410057720839991466773711329512058989498290097427744150013761009526969577455298131998293845246943029703237178052525478266391624331863881364761457116936928925277187091946780513396066487356417477903423762037667250380020393854908469866784092721859885947968047843987559900127210713409025267564385002375833248533321399257811401901063099056247678017415160020983868213110241033899331290648259406248933665838178948030503018500863077508074796766846940308663706844685764836324071381214994995178359036787279012145952889616433057835318783001969165152243988928887018174729194915673528891961409369985893758599851564043751366141164958030056034464785596509903744979030783419393140992847889190946026896949546041953071333408305311255617443734864185712032767476991971630373656639485136351123934223588327464414925728581124070502414961946080950025956512359526085830521685961404922808926843458088947817320423250624763034182608603924018262031449591803394333033001929760455885608685539764631788864950729856581533252612901057532042453748506403256604477602548948534327835139388283517620852513253985985567789882004749780868997097465874042287374063965078007315401536500777151372938583683117399145023098616222979789393174578886792610765056341849831769452376829272014348683847473405072195440456176788520890781318938235192606656528013376368797253999843579898244846465589381301332370436950583696766283390912900149473694802661669799720486469411701020565963328447389399049525971224396708311268404460158638918907726247875985523323722774278349598884505097343805173780510545605435517896154298167222640410937522352191950742335893267642559296551135196211554956050409089066558601061269045435609224231351599954029094500683798538705073436632490737393056662621845172340083601570213538532172562315345669188529038123733261838664367589391082602803727046743017016740629233596154432616648085155540283615700139512983184670812352708994445236707905876486713595513001498349253408755554074238786227215505308698415768536826565855994634443200947105956380719349660374406163457383744692862427907653523446283118465159909750397425133105437201774082391489812126653363435689385396692999680453489013431167095605306417625853196649954768579678892167037687300112756503042792604456138556115679111715638039032095824974978995010933344174253268336399149822580988176593745062186366747094115437006275057290237287276030011347691809239065958336606592033492714399544018882350100492193733836613496551400722202417420491718331583185997985858432335324864947086376761973755774492763768073143008896458853237382944885761968345281120494633855536109473770387518895333575898565293675301929157659429710825169646621577909329304560141782278092486676071717802079326699894186519914403660515306386018630525001559371485096389708273336660196549512038957916587124878890416925298111245387681611255239149652818888165436495473145285033638407958153690898178588587310614977614592293549410637885661790322014548276601655650535126664393492270345491781167686370786884518659683168232958040289995185511515448279818979677229569009994096005202385541104216867786810892471380417080196976807058284612758832961979681825388818685006997782536066676096275573694987472860857507534998349476721141545854473531590604699427056803446640868037981349180913959458914904605545843268669383833221834776424438983016468168152220956728761782955031316989420442488976622206889351797333928229673097459953792580141907919265274063686456338648546715993433748854551088428277943092089020866794657924250460419651891483614215765708433032605409608580983666161390347374903331600153171822471217962970116726480057604473002010215182799811582872280718657479628289302551941826965390933670956276525701545394470223055579857975025295724061888689876556972291971059782051460930910145230920248262277207447622277195447673445461504487090183391577688923067548768663060336703801292159742092107559525028390336329394020857699892043347721163276030063965585348502467708538119164744378235022635134285498661934069227942030560047902527084196303901105687111690484916978981705053251159502714509373352039339016366788682906319926820419087752604983647366815236711638523763489090772075575927623018122627290288528471147455219093268827558001451036202121688955573453670793990318727226401113926626878382018334542404764590483998625681899737588118197049183447915157024039121911820500239467053307954785317871820388538072264300622096030617185771369105536374709201447812965646467399390926185883229559183984681168480393078465168309432694513381078428968779515777755023518122816834806320348760806545830306846604011153407349630069636576404752669952016232043359060569901689056111596675729282076163604029638827687346018286965791137584770828310424537836125629358668275221154555970811506749157473377230892073391988408369583718532832321471645539233759434742816182474777569944449255148846997393213201362730864233800424388544022914311049509739830776867678669503006320167455027676506396696018470851724111716248640472463821003341348361930559067938097526356217619925545551264735558398814595181000422089440016791152074073461416170917578693972689890102380301021930966436831216802265760349197571309150356750927241626979299771849851621232835958904636349787711360407728028178040328043092556153933216166090361033160521084398229147521378524068221800616997074815290234275642949607233149163231495435848450855071411776936383371269855655698139246498142379230367352818301008676117365115244695708428108575191798105226614974014006643075253251884703922259861371245369837794791703474337987469280180651614469932351816649771059982741936855978836510020553886562995087761753786410515608812761735177880442147804222147569901757918651057871478508791017485882793270153502949742551817616802781071906586493527723946219306645045852459659151428427792117997866226728494135948255376385464185527121490522846268091419607757915378214848786349760308930503774554494353038241301985928239467436268527622008221457087794515826827765487735862467899708537758999945758439823256454653001735795615596836435417729061439034932964852850168163494484931869656296274148753413343576934773835367708895109306345190609452903513815001787974865413534335904799873563147969819426667526470996439852952447849501389987042416315815065593071440372400203838295415271217271273128916080846407672099786498373646917752489430023793980937639787191938465414648564197539972674249828903098301458670179959861994000263483903233326903900947051539204465246007778807343261415378044857399229112551292220970101277424424042527365087781735747267411581332260898806392440614200737028759024759659111459379411296123848393351225631164420519282105545684254651384033581943855234327618648916277171739472691255283630589645770044497053432855058768032126356427712889709297840977235588622190822995391795986093455793879325697728818075388644705167502525796723938017351766905270922283414087233301559798583927072843477730179894788730275427567193140687947339666992949079114668413793028583037093925257632512448597973156056990040051080612364758328395595609777152013460118317204151010976204642358509056714836127810251202007628157862556592919748907958390247271931357440686330293976147453393828727198343124593694987972575117860754966956153849582270254106091242983708834477437025660956863401507758606702134044893241138362600744699822564138262800660592083630335983976734507173996748132223427507015472872479233998930783767561238157002748997168423844879987369607447693514955703022387471119548557638648782366632090065048293520458881197819739018665592253140590005344140442311337289922699357481332794614129588903249027978956272264218904669538695875301129548736921312439592999517013957981996229459641003037971641967544797644110193030541017853358077297386750998714218209051843982521321236134667840022001855451547691552782761515573386236420013022305970510653417969854620958018020117547162820426177278770960465005382069595329213760745314905021549113125583641063433555683944649495909581640215069419548958971640658737000223368922387644236479922174965516787244357504950525042487652558746911480610098301763322766662854686826616568484069686379661346296577261211912842234524440307877006354890610488083939332841927086525598264663793547998978670601609782632407656488999198353343758060897679040925056876332129148236273982891137382197757670328806506978137338239299036044762837096067201173861018017567434705720752371332530756431125895553810237245732939241652326609704782542301422903307553445446363284189231937030414185388708844187656228078658275217135886094110829450471850116010064654020584939993161795104852388089019898468286597652958378127296834379092545980807393002744406868028605920030782956682185214113596637922448748165419880896864912605769363476601977925481126670283990181193936907403693538617081656827153393684281479405465008302228667668510028269358555174839239299229454863879692677678442617301908282091554334853644557192234916180236933544114698340854219866150443106818360494381740095587940169021284760052763941810545262489490136470458577014513184166289212719522711324208391343791087790449985911104163132146853115687957123185553841090092278004627820989928578164786202527560433536555402539305460045792642218056911311454179688468982256567638721636716249242215335459730690933137154408637065803444688653355870991022608818080864960565785160880202407225541199649509341031475607120215393298046341681626224508448702322545868694056738193272410840067940295535738811560757310614623896878475331169867566075930761716776177283919343868246813878467377893097180048157895253395007317924832078165592868470427798217614086309304815720974930812911916313575646482971500845497184557451587067266622899246766977678955464917921060368167141313842151755056381787039026465332236991129897567150339756933092927027742118579642008171074086821218157466037225964015455950038279958596775630240480690361696342771725570077704394592615975274626860737015768218440153790920041633375880736091326546739591541729979321314068034162004231789296205542453861424540263724440999223731015559637313519017728150999783217851095224098321604160904305245893301375441890715315006221701819814942392804921144063630451652428314741977087501453898802874360747626266673723529548680859653751033275940771295428053596658030901846364179842153435038167627962661225359847164781151210623363613505747712410769289978282246433871811063148605435552722147344719990739578684968970785497466040671174466709434586510998170168753886652107757411181594608543578937993477165302819796358711910220689599179920175629395142552925082904561485305068502697134038316532351295333301609299667581609392024431054462181108613042107567909452734555394113656956023271384756455476699425329700025120362645983584808246976339190075934438434374099799206779351781248785935146173439381999108258806618637653813671080069865927632421859465502861280197722850681288606634182378476124879993244656303996377612316809502574828274787341182040349371878056861800500219657772217098692265479986332336262863019644390215417957293413171347532795455527356838711557852970109975831134882007521913809246932225957181626441477715631775450612079432969924836202578400523438975507750664450725337690928556221589747530247136411549177276362190820314948534417825198292232054102967714444509213912296953117644503115566766760282867345841876258217518456250743133591862367837657577926555952563936487788504918102129620884772038129220647629834307131743030462635228512420481962853083811457294850628839606458458760620624099329329378540825743852894191852870330209020887037032765072647837946595776594421071727459020315137988528792996861117397704657506423474181664235416180547062384909129107457329587009269697075614712012965168944937874334518032973055838607264471238442126022311149653556731644984547878745896055252242650460302900589376947613419025835630188531356929601946526994856007124849790827533958323674192779560934409466685027812114670527149921177684339265981407120225518915010267828576625771394044398370704659473769699906000503322092712980216139171962942259700609584777160011259510219023035452052462225893027382413296299710775562567668094551148424686705541543586503486481895813656184900785432149145191360710396506922791586630559303769154982146747107920251364252971703605482377869232091934179818352322679226380817831547646445500114149505580864930367696412680075648089193861482401983888461813742477897513944928934451365572737737174648532687784416354347854415998834083815362516599525004364833249323678754194522481354322393229452566821214699636261876419369326823967909586932372608273763969654253719537420488296683851006552399910737610881479558407208790278006182003162491670556892270384267659820845398602199566920063677853550355623182861327298293929192296709082413059378703261239763615646945460554670379384759794106479533498818792926492000488291995426170202187422193580447244994139006422452053736816339850022050064776313682737694568693636055610435474722876775242336699910510104479089281460292384748530871163457123417924986431811321674466932758729426670599256171480957153789321028100780045151383802284845518221120622142254491040250002025623900471556103427544360154219027591728123657971838062266685165406224156948069682833204302263397566789561669107336277194687340742705878688426189861751358132497517318040131540710773462355690054712525577329073048190785380824230731001927982911211906591110133425081505163670664044219933199925571260156530851791977113941769144425223815094817917250226576854775339648899761983530049954142023850203155900710463329584689369655333203112172126419097575383727202482646135535422325344169668800982440219728976250416587252087787885514250843220846305607732707715534976812032590579802215177663127215443046038051354368155613008979515759055755848906390476699413302295003198743003241636683208993978700212324163061304507545898399342394215313454168406429108493482952104528254154339676746733126893498956141551141662040376300039898895618070814835557798805927434452003784089280071751553923920087088143120848804671840999918091118858164957402839395119471974546679672029164647098811879556356600934492152493023037761877686567623217391599991725286689568767042091572095192875628460985424394523094081549122570687290312653796839821119856675250777733794135912843349765599575712816268303700611852391696742017278927317705296818716300013537233485392985435536177025251078099428078265887842123225458699043944916698451834036236438400542171107255184503303648944627380613588957759870467401657960593319851266546319145285845120030485595799958973284154693933152965594195666303647816642183460895335379903439877656746607990215390560699155138544879741872577570000768689305557696584951836563241555728200530393984238787676420064840115214931607554196845860363043501386780577300100485970443498732321818962284811250880542361414472198425866288452054778039770112249915367064884643295466119301716983004389577094683775621327029724543835969566028399614049972362956454839940403223319724209189032950362508423906668179860065696941316939084152795233654647908448812974308216893703060378478474827025498544838828336659309592111113633774599493310732378380060039241634814995005999482132820511104479164985142664638233143622036783932510417499447913263059506631611065633900018389938749991739323477207373725041698078624968280200984820706645834306653995398992555998317944917069970437345818014739542207860149878648801592080838335685825991326401275285737255695733599083130644076728723040379808476146433581744249387428818963013005273836300925334163835958664122645425759724147680750062938835983619961280390886827385393355835641794129936740875864657764492755324582175576098948831304974247058232850939866445996683810260591866568216460867763055852833579242812788218932519025513126183031652150509699170272985410369607898443184053472458438048779926356493143367104689116485315465618219503940561101097332443369036808197560675951358902160516710493008541798861963338216656265646864771494305037707040689834078620267419340475918777088567987784977300778879760485627202041321230092795092340129423769880463011642499168990082609804717610368263662880062736818446180690328323768659828313833785139543455218895993462348448186278225211864553286742832586339561763548595938206072307412750953205748471735731804546802283214193285348631429392422995138792139691828328357489266395049823817016242692005285576875160484014931310933455009955369531329935615120830327244224943410973298440748214877470072988473172342064914999031365690017544820055879660649043672315786590619846565273459256777969688882574953969074988801145595498517030000851684434102091856211613231994926666001207255737503145798414577259580240464049298392735388816454028126454270182699481440418860400190458938670756209360178223654059111245699291027315876085647203269724402863247825350104819101747156423360670299804528643067121567931681040612385392221778681791506153264308782157600186137210549318910051338179997556833145166134113893196828348561465858299813449310543531721336199199525316011111429837759693265076233472784849984902062448623642484067065910705021434550750239515982021934011301082028236226285982554059029002266735223126711526738133655501604860505846861807898460505111590529381075881310774002078792674553121595992367546935818105800407406291292577119420526041843725062010305412932087828146691047408800815634636866109974887060477558705838447275902278192916015849717941655357395030347038760866205075229207518643384724556477335500567526665852377702326775626130805860026010154925863001873483278461008185108555579546262384423488825378572997355861807000164052869299527265364538347585074950577870796264010995132881409807838018418814268296073099577652602534057305715178667219054563055848679722558178311766869108500276466943168699934424426924168459993318453704019646011306747174381969836262965066937480698427864762274672626447886720564231936692571620842938266835141047761870324381569083476696814056021371113740244854509460841220600304701583876077761787778767325879257011405111206648225879397588233724232361144379326994181587287543300477073929819751947578878849738079956386037361531104595356070545244260622157232870935130585515695186598230054642135023358587935089861686270636430582294961272475507359307014319745350091745896357387815497957948315432457992884557915019542510424024892376881887553929575803410117114317338135034772816149958472149455843093801814925483751677510161989488729584528132773239013047612104968367786888915233476623825683809892816041004862761474273509212262656404230159032997410974114801481419013431771122093443885048548978329341053218453748577983971599693332458661810106258619410132576930202035190557118311371926554592736379078673797408070215807441521262323853732663576065694145625961493446933291990469883224137249040819183349969142834390974819255691749395900089216347071664798213083261152040059754926512371124093063828093158778570232918084929479265454692005719279684271093756586718479519905894956189012558366090065789198759512808228406914493654307790181104293121981062334686644200366862949737521284639833242239650828251678824924959362608382722155483809904558882107561424226226864771326412884665759859562593338925658221303508065250068990367481279389144713144811417719323717218231602273228234095702807810154416765924921660370657420421503542955174474987389546381988334276272170198027480173333561935964884575399966322733199382010302032917578430248413155674969834094954561658997477253473513993561228472208905894608105125947659260787092635168659056077677877253687813501911005002808143765767002369721979311316762464926749481798430195309967635597843306556855127565840276734645951577676073631111040101724420373458348307514445514579370151165229470897608915412199864574816767142148136311090322315969588220103492338646716506458362736304440659853853421411451326339362099350293100510488763289742578957407921436493340646698705014013677666193762842448953083639846014520534124160733756788424800019176541809681878340366688089150980646245298630083013106294134352719381453416341667460587044315382990152258683850861711933181504677558377486451146530390389682082620577784911325845983279835756820673632584568851325371720314306688921179182954802517703101411351017284539266586056278785101108123788749463943557154812740189554871748654316585722814401424851146735950397810949425473139836094065298025436953958235864275609748942850625076716488301281790419419435819137717469485602961113442490926981430555157796624338681896045146222509957562569527264931961924750120087447354348582243486446164906465262742692392116420144877621810786068081235351356036064493036539105584017350352737897336127442833173637338303974712032883881951956712609929079664615799566444223819460334046454828815746281736118623766755010047813372947064718653140508349445219591808634226016545893442413649030553199656766437587421135473055947785495484024320260517112281077685453407124283397758292439841675763521588682648980736782062552749775505568362427799823849065455992531165403256634411768682566168631670201904425854999186926408053940942250945952721262721516394461506090751586875860451030961724494033832332316899989719535770911265711870792733516614042239563764431396849560176947174723303452601609381953741462687663108975290609417108246261258757209460403855480806076545023536189263774512403846334474688030905354711451372291280965568559124998799707718967027007063267369185903987565658609554239163288019913024066697318484089138192108357944004320168220114944770492011777193924742482240845645147857547033300917938523284435598196994864108844915439029441734227133700441452198149891540789135386886993922226331883507694934989094907932650291620697019441322436091625864199846210465705911598037844253206422921306473984539874387600291530033042158416836544908426843426778682721643046696562605384136062946586912317672263992856891858920213392022536830435514799911699349177422206251134256400710258805181025875581095306305537446470938246749188448329271423714039623178442544258546297799156260660346298629390150287872250154849370657055941434055897153390453571415464916046911666864528914923847752301867513923679849111045865843838200356772619618258245510479986747000588225438341588689743562007304691677138655904219116104520027327312058839335362879382837148736745139603797563500445642048176814608780911711175725103286811513282214297550283325656926459509466719953648616259443618225086463454772553685658641600413086534919484325048191919079935603655943583936690896761786566002693449089147816741503693082063294910543795359254148716005574397252650637363139215897322695030759585022422347213510221712105694975451975400774124769951426617482940063198284120125132879574981970191285654411856447730648541376963419784110446757323285344618131722768137320646608329713497809603293927548630200612139805871737164028788933087561533769891200079605728965097619541709276910940269591406826879949380032820172296481155982764013310548037787307162642358456523288727062108243538902831411604732719309533670283216152768020759335520984822281099973886759375432547225533641602955814160477445825975046834607353652262239857534608215713349368455149013704954047388073285926282194032082331408595007295620950633817689254296808260783776430594220295372395381908479445361445924481555685231155772801251177975211802700365177418270407460029055703991597036124640197080622732800848573752090455643415831977948878522535646416281004797139958186056195051096433609069902578664037546203880693364778267286887924972854601906659338097227370474681694730511391791251530887124151231015292540618315871160379109169150695369736829602503346022023552169957783441913670810448209493876957317445151839512227488545123009829558178061779164169089337315070578652294806127626469434755547037624065868616936455481820629439375357948094334260426465922564679359878290206422759959445360842333991538151643916319034069540145475680221083995517191809169504934880697851284132986747955326495845222970348564118028698778271951593331066790198839465188227345348757511243646521107837909608479191168251847695675736174985789422593630645190482878980680960885864067375287307433662661924652093867601901166744313344782144786219379843762172057698995065307508967818643316976250530136886301695354547476526451079787404104977177056797271325242243770419958875739962869153844813925037736953194791658003757433982079376861889903718040194981016766994178570662816553417095698381953650525236047951817490182358194260274164748299266512253872656633273439387815669720143777413776739066118804421359196220400614670187675418244470533236194923588424780183032255073449967308332367275523245709141663797486234519854352961685218913170973173101572613081528448675374755086475756808961614684507008858891597702573048978647494495581809124099552970906902673656547157135515077054504201371447089347779696857406646256689688540788536122038714542951073618879373916165831157994196398435272924837778307040451030306154225277557707294243639079558965778145349013170505141151216368787187299945846665225383718588900413816493702105090452223224509413842701891216592699721704000736715295977789551183825833700456842447798654019417255463314687152354586557525890685060644494302761600383469290907506418405377794616303948641206884824945458568379466975760261212197273648390525571986032261869020195838477395686752504714412314469632420894848811861501526478130854740150908765845350921900704509834442581426291166317443954726264027144253765007217638917043919583641784052532434810208616589699482154641390158519963301988769068616270099990743328101353584770657937858603789735139194933690017285728944423214122731645770658654947274465712614696717216191305101285810473277991847510868720458557818641723434015457857647332866064376697280573296192027104391266629835433737162407589792183855602885963909307237131194734814483529599166877126549572754530918092802687684269665954538833914635727028768978143917349060919837767835269569517794962475655725012963667064722405167445795130182425262742392269403125880128103226008250956197448467385417362422034336507820835781320370501374411604629851992589941607545371740630927577104539065554308475381202488781734334723163567119663400808112881649679759872319865415037857440312384259910048253238178412740682294043913845504240676021093851532400536880789633117380183781279741855381128119508389139157777386365033349853590478828820140544838687525947905456188950207898792809519875778082217408630395357979226933276640586084865391070737154802184680316424268427785574791324670592731014055314342478178303817910253520835935931702333601837787242810577555302665033513706047059698455564690736905133507570673365499487591102112212506080048722113109351454819155345711910148577418410931442675826334032989167830458109297668566147309740196143609650468116105457213274044084950319738742340833429901976000505153562799732667113928052786425824087783193816563863298761664946394817363748315728344611611559587544276566433776625843097715083461235313785334525985330053782460011382470309804077814245404216130131972009191722888387577775857380396181719610201396315363538651793735977526779536665154981588652878454309035783267494462554366679441286537945383490252203150800038406143702640392668235138994848953097263129434280305866312910951829599284072025261449040648365079087388411406653790011747757990165350012465966977801797398501689278159083457324850820283814846898283268724259131399379779956245179634449736636449330250996634776860938645422777911737247407806501048333739815051849899620603203876030208905566936640589866931331882995171461839087503690530157585837841142233861875513989447741607686985684341408761627987650566990230777556928905898793487387176926478147779552664588248696514787126949097733340230183727950396898896988529383843782396414354865501434056873584362801433291966357638637382213642180884563857533522613222209548072991089855343957909192068629417555883342460396026104509017042660407854349732854781727792407769012182637475555795211372969785605638761355835993248873735315552303988732716386888685508539920811835721225005027845492690072243402103621215773513329734123368525867638696959402049500982375723531138631869751636885490243926905176396919741156479665320876392377272874893394328619189835863985124257289272314947882267729010130025041084237771744002821906686060375253553157764401473232418068794059745063775411369082275366399464086554110056429912929054744539158691611243811927287589293709455487365304114855824657458850624623152555802973583551682918045922681977191669234163063627661369369105186960177825154111769314002525060931476007539469665262438337084247180787832420996409667399841988309721635411223263152426471365534122707375188145939832110738049177845086831908918344804893891037307796663832195454670462311382646358167506866366145281683205696083480363801938971490032687520516430617307755472729856165975360147373741682181092743546188275849062661369070617387737973756281071031141774559055879001804927956367709715625302034058069007567742163397711765807125720525711957642108090550908103316566303943909042221896472496227673557362501450245556507444361582448505579693619609210353639812668535579239009062731025507072602285079154205468176072984154182120324127527155546567217777879360349857578039144102071351301857419203123270703324633911868035328641257028143492631411861047497367836578092905477734404457899267275547018933156508892242986605406720242783802058420755855826845890481122284478679505448122823151521983386565832790555383512197039162789210421380952763111980294810768803269434069568569435192000183532393107723619371385852684914812487469258352516730873551720805295495596368513316070520799192158141424607684440922903907925190504010904439847227538429480863266292568703833826707136964110651601651322493773542466203162787440269789004157421396608788738051276935609317641035752155583111324651169936743669841551504315322532947029800278982288164538663943864600940750993950523807291723515623389536584056838082009982570697670310023713442849728081521419354392353272398894738147015700087138824882467529041877320964525213222037463331271400348246650661538256179122282047321574837447550556316050209732241469987397392229481938500400867349517163480628907675638905230361811067254012478448057865294498793910789566095047012205312141413915267423462670351908693891455523681529473748234898691010135171328615323316091876233046924498451557325861937220582457288660837090697710212271399817406453419120695958344603123684061625779686531450344817384730147381382438492007193827725804837875764605128068149657734469294982713233832777609308354977865620302195328974040325155330743945045953270767917884454344339722542280639040326143621190747293352118432390421199028517177376860049874315332166313155889424791079905809125581934896830598011297261336658435582646448226441680129127685229888780971561106357549778520545551704031672294412221321868227741760933818996766067254280871921639173250383210385307553765601864506003887622638813294036213019624491765415756865891164603966710218502058428616812666304566690564222365751648203208548547209234208591597038006322622041005869766571207021247492096426610370695625086457722951171025617174597702293193675393957138008037728721723547336152207579660570440218401945970255490946173624041349282381445473806108650572374308778165480872883399313205088241008646877021231664673190504077771724083947986132573302740885703470400461246055163868506812301946837188648278889868567725944900100301183854767134692033402814297708222515415884818855051021040470505840331297736743293874881975337665612402102029261959454508316618121853972124175785493882080541624975766707163883003493974828053339733171445226358611944157730796587265776498435917074443543280251744060154335715194672126056307165745080199827535311465144597795653405622935233815706532603586942347211288105024234199833872047331387632788471168847350281357170716031144526527265321069267114626727877226047800274406133188899484651078569112143152994139675955366583867198936236263467718376606870841384557525784929718037448074452748856601903179924937678504018001051225406400361030625637302073243928313232898340264266056754940890710303609434997575404402317635757705249919295718114460702880468250381042913203147939350083375395357560484202528616150514121804428663931494298922442880501242336565510230223249876007494459445032953042154687770540964044815940339951886663055065218891980174001928272167964873108672322217941442665113150955653301791084376291106849511854305778398191571413800020100108642617671567537099031221147264657686022822619343273751225269994955126871921038226165464302527079603513371373007779422023826896703482575639027482891852051215318493320888406379054034845772641123755677184165405461174244954466120180166870591620567019209269919661216920316078238659947334803303166682415091900116350399813326851397691185036255202505551416140685802554121927645615844696454709826339008476950444657940298052640622780431246990993091240955709203839001158594816369278697107958775869182367997514556194801596141784436693995068692131919164012868927312014318599809919651016782249620689661570725551509893716200856913509681016166846276465115786135974450405383432736540151304059911359779197380941456679908431676988026236036949983936571082041997778468211256090762018224543909917967106697495546158804268619650798571439755598530616190168135273998184832944102706420305753681318333860753342705004086791287786884781021915020296109575788192965269408782913577153600132132195306981925478521889435411510215381665090327171912633998925066497414055184149461575997390414707311154375902729238414898004936465096219480236687929919541918598809312767366922572551410331559940221767629312589234968676220829893751129865412859058499969718794718301564771858421174507856080664376885490061842790679487790953635068499795578944078755394114437021212656772954205544801378037251658357899618815756801246030524934794582896608445576018632254899376840704246957555581949152061793677165976109694902126713550297058255950787356607331103468613344428589376748057687307723019569917750384039919851848372130230253360125817123493465765123269119339024865899857388946131685563209530451898856711941688643542814342930887282522959786263569644132795517849766955892536219900509792682385861561197178828868270028523618137506950590699193878225727109246109199914914536810402123310162542011433595002964533969494838202963853660286470897629535341940107727898860769028048244705368674100338216872267719485786366528510788330931517927027258886963534968993294444379048298174683473798823312504763324033846443047270316411227339320587131882560493509651717143493994395418741430188000497201572455632498739696237427657872810199158181842542418489097036895862727569650403852422727006328384227268606175144981363704236706076495302122551794885788006183763039542356780721573238067356752375006027359909776173452487100435121646369369021003397396229955034237384864040843642067442329197498955637022362577618704752783004359075163336133215858574156212556436863578056936042193612315721206039222767260763873090236978863649061045734150122272583962258569875362694830163132104272213155478427861903150962250674306537166062981771221678418265644254912719114501135495340000107406617513979185421622279109604475468729206698165760643006933107906131556434318607213818504445212237883317689727964639411288110319308792552219461881681630300955561130276238100210675254158836480919977887744457144121112709466044414142192631777494200643490796046152180319376963344412755666529762590617780375652360232995954770877526557188407360011903389789209097899766819649719741621763054901243621338974529594940451397890899481979989123679465747145126748738326658078920847767344957801794195294622106743710017673280677834048865927234262387065655523781000694329273484986161720012962328452628925543786736716367531183768400291537864634418309656277782517411806534499563627213750939376687834658234903937699769741190311361024424257119979166387096741659060222135641561107550704997315399609232930677431329376789520578390161086730423080160529386137727064471858867942987789355745705720812277395654589519566490898191718734846221412706454409062595703811781922836338637509095754325565423927547529436016481180143976936133228442537771257288364431357026658788425468711226234204909105386453894403124576082297883852425434499898891150031257924993598736882913698184842431949435927677267613808235565713861817745109006224067987878240728281497890190937376207762864555017156162375593237076258558042208534867418434247262377390149050202788513725386917930293419629062275633579665931609884233057090661915204801202305783633309722664375262066699952636719169253788222838105733230081754249592706884849593442103239239584947289299900366757303791593399352870777874580531960928810687775735518500613927953606669789533753862738828472089631025723306295817948484411637642208693102345522831307189010836918873031511715076431979614731047621847732811020087941757085043885046719034713051858849449693317380411673269348823674330151068954684581833548359340318220201644714203144378183584901636657879768950962068573797941174082773678450951013917726259469622450312255581934745463738530660569866964453495524129344352507176823066024794711264804046274045789473585071782955857177842455988757538648134159094268992559089350043827797700697233624554937471402896086135033060179284399879232309487513813458084673994863280489631322959269864941078902741301962963317086764327490422248454837714337480860568270216142807338635394257617758754178173902331572778336207693006633171268505456579341904824625365469011119514295695217633452609122562851186310984658083273701242126177493807005534658231830816799352720479049451423851060943906538208146753909957364199297407756694352088598458360152900868651708143968334822392474391581485754608028168338294609919399133608070056659238190942442822923167796521235213257617084680955517564027354877933399281312761994785456160520563034256106181451798102101918920137205306594525488957119369002960509007388384950079243535460104529946460251035431031034037704893043591523527983373125473693831417388567799381757472156248720713314118817406279035838878444718669119829206877952048206691608345776306956062783431299671508519654429993920796255290333196928759340777071752098373991003016724085324785373843651857650308629996142588015227761949999430861670009798609018776554898872364804308222420324201425337980396925373031588243621568506422321096888641360743619114578057180374695836204784025235614108879388851056089079633777782240122095876007357685477689080532813523032370260353949438748875104257856681884236614687498606420272347074717063959278719617887531371714845119466966832288067144005384972882805611041228264680619011805933894042999836365184059500928695419584605587264686205638176365626646233608684605172233777014415962795247782874187129219148036892703388278090935310203694829140917944093644299336148019060579654724767343007290029613084444149533599213988429023229285777711741293616194380481474249385376378045537824923923303074448450268210830662042444275584039463211002961029566681393704051417440794016657505775740007557753659873614645625560812321971741517634441826158259603310492094643862153328277178740845192404545938312756529842358724102521934759741530187954264779834185555762754637704777785932509362550790184559151971000216984424762154690343637336970779986539765773300151886876180092379652744740435339889327971994169049579444008264259770844605486996556424807298551306895410271374327609093492292902352356836517087601481224612734643659119005663104196205083710781410562319661822821040953774025753457813648529775384108621053948609624148210341824903109949935441271736847138675336485354320178562365239199574959044643806053854933535742653822654428606048088881739728460603115805789071456363504016059689014078340670053921999518743114597062876385087298570574657377227577636921406775064171746419070000196539107050235884075847212843642655124469740375934379291623539239730175388801671835298500665230134836895347030541855908587641693717091036871427546094038443375982446716189448595311522518694396361453924664100748004568063097962683630210739877764164660805087115248077732435136654637176293818111309796808326016204395349192398332980537225581347229502178540409610017814222676970010311457826103129083937215437128368262272823712594469335171860159328392750011801001234789806220424143344362873283390902288300143247598489698122930426390313528477657967016185261920695092383645240488979056808395016272913837146316222793568557913058716003260003330201334914151097021345143751479693512027209476750918659212824595727421459288519800446319737305000291944686656397222675220339571490813569145996410405424645129908733700578966271064522068586116289342303572434096821839936122559407004596614830110803205299276267784136881270782201644452859271596516339449691292205879579319471357717731424293075873848878440901418981886235586814282324485004886036182442598647452085629584199025708424636079648805487691981847345906218968676845708093253486705911927870239150716533640869671113109775575849759263607657333866928519970282535979877807465458034687281098234803390292236674075727696261268625355475163776101903632634041032228613406656193734461198360266500483047011030743308653299046180902373990715301307125152703339774504222340213279902136678688627951491255981994428764212214770191825457671657414314271755912913404578954295081220045706600861056772684197555036722269410441421232604588333125701331708274045197428668532262373700968701847896984382017172404856871926336103753914141452730304132732988506164280276019430960863767761762600660670903822651365627061927829240250846191357756742840426650755810712065548608680370900803556301557846542502224305028342468136816382751008854276619596460113925772202769943862392142707244736612568410352428453447752491739137265111425127667680739085226769975299610228761271659085561092758794869275343952604822422005047430268690855495771325600096141571363757552323698961153864183481857750107498776460523115219075669773994517209292749663693295840538219594675963360912793635598024740946217147750880961905092287751600904263127417759900314784587457000255210668375268000948504964153874024088014891918764579026243185600507696374471795329916693418029397039279954636530396521505528765037370662439961455715316939712229851774933153253188946143743800174922346456443721133455038475250020217630542278842500153835132365994664016766713295991240396788970122092700700260588084645877713086660353791771693051155640910148873042673424450847275198611044296744888277668643092329707374706860316039201012611186505566216842984129533788148279072459240779110529487316262950991785652053176888964081029082121403572847134733013139986212033004456133098366179483586933426886103114839126290483424337909343338005880567195424661957273483273328796196919063730487392692560913150913414910125821312571416807876012651583940005922389645064372665916440845937525443578025290541056482744993345692288119073065646090844584373178020480839822673676483645968126993020748181172864484591453675298564442549226005980022378023567639498398407515207148991042331059043630370491668162754757899400147706742328424188029721258055022186196887111298608790068921195370078518132477556001558455362785872104438514567690179925759686449924174353768326192357413511749397590618726567365104463807863862954664163021984570813061865737429204859984159398271504108002500038784782352934162651493705264061420638979689889309207526239566940061122250769592094093802032074180142240471797982279877345211205383994542542135427447906641355716593276255345463181435370899720236654379846469715816117539310421563661649280059445427415883808192320577567818269374817831651143194052698702573706112231986820384657955928648436645126247961862100153144770403076497068351343766559600414661929312771875836763040465663506636104409842200644325447241272736474657493983909772006266713147829860744835815471926535497946233250575328964958881235712705579608295003297853133778689692867175064390991739809127672004217938328617836717933653500883407381249724432672233429565327183472101775882402717121597259264998205378760695047663336103589869463467001079762974579528534012163930419024059244231075442618956673978308267933574642959401336848452919845450843012449027883857099909909788523122974231935251259235554580570777534221292886263324690642714004565053042568585106492346851594795679353760030460015082724008493968461743107575954562444742039196323990559431296977624855334128597215634610112193045306890924542816241054884061572862065736645012443125609706789386588725521467694326470760348683897900841305814001655927099556296917205387573855369140533948838750258297589405377622887362597137962592720508464289571662314687161037617474540540213241228729041079715690456821113927189013163797610992295231992028328948604866599342901704458392589917477736966996901675165650502042293669336016259669129441554834872348852256822351067848984274082400487745720340262120629955425902574374518133708394482525081635190917848653122708845476765422418462984647488876988968762599257935798246120092207783279966885037677455014128948806262982063037143367728661297950240105506174749032698653697856591665304027128962602106189244328100293740538145714097315143419582789588106767877905573014128335721812409846661183818273560423262418293293475411571444284327528124400393208810765826042002572499877386444544416897812438785983966238285864976260439556828471833973686874698171481413629429561029246361472067346270007098362869844043293154434425901037283301406691063106998823852963643612529944969927320559456646021370321749091961133475263643075588932355685027245053589517466494396854232305588571172699233523571616874149242513137260306378406063589786355159456271015904534450996783830330147429628919115324503835983902670938202700260167496381773461651269690267124817882660696275985102755928456367618588132935635909112329376841982346658632494634569399037940054448459886500743211366914248126176501454290746948091658754680805211945208291412122033479328908992982870824215794235369427109228937430320661511380624145236258902684720413561531103291911812192913682071235679947743805637580940410332217717765172303528234578283369879201653625117622368470168485809508350279707901497240737600324285740280851175745649317509260780612181906076898885554787241344857273035013858983667889559647968969462792254150785423365763028212912824249300034028089404821106323252592355123683103276584195939043162111212140663182083766627491476063088717838274647497342662575388443210474927748948469558804362067361401555297243264955156234345540086453561975671518457277186947424534975810198344637437298796404135154078791175629039864360920023412255388308419676701111629550796213529459027367482243780761182956847677700023108705204555750533739704391777834757595649499098397177441790577766903102230423530594429072296699010236961066367913409251003644838748815798981744972353443751155339305170553829668506459853870982407359803323438247471145484875415214646030680648533697434230125603234489412140102583044647641912018339436276955285578060532009147382893921961934808252048396795022169838673920630169911101266314265846285121712053831647006033934883730123407801125670089118536952995193002284443903213958694695933456122800317518162422416816987388116327931270125728443774189173472110870531919576420485607288488793164499398391777992791274738336622204741789114909029202153304034580550746055741487068622439588164563436901515325518876478182696316322259050477343126122946018712560234808151340590916780128133785801295851501305429210748713511412111849398115166260646030136899474422304825417231644364784185448611362712207017053603318428806667358403353949556349889766763353218085391910022865178931323046125964647035962898819538401087617088590255267306501533769657396261117912420055457706967179283685003096991080604243392033913094586895989333633244507799894579254430350832285089949035488294690998436175644969243113706996517021335243622470942126820717395266671051004527318055523535116313397291998089166308360282920049345330218377355346462960606048357285551666156914892544814730171687750493696845003890008470058293720485095526569194268213053045506060654272435461845872724427272493094934210357094915811102743361166219190517935893646912269070713697426998689435773997292112804762195665759896962506513572553327382698600594164292618646130935364520194704619087492341413401592830918503351115687218871091010512786336771931495805030104823998164952938596108268545581784081325422550545935536062499008330961619246727581914517733757994304380376460348342897545161876002628618703574652357316168342832850951179524159202249486454674566482534074459023449416866765262597965606476624616031437159785246656964953130752415924000381861755824543216291421043055215027998828357289938263146547602969852828414455592005331673536002604323421752462546647469896035286718929380159422346145350461036116625771196605065940178988116883085761581995309575141518629903493155750593233951389090976401853021254790685246255115367911755758543152027366462788750186721488568662053489484170204774149987984425827167179927094161307546502610076743597261142979655199593980969300096562264051319912570169730161531702944048110607635568122475730240155117895864261240391110454448733410576642052413715345535399975673049487306368856287085249660871360967343804275471263769885556194019857155860557570632020203535522866270142162582618980976903697122517486144596952358850313277557336543788124619914492257480834702958051017435082639194618864761435485194953994820217346476194688784616687314441645700498767262572020104438065141168457308151667145074431216961836558285722469128476314304958018623228613555029483562168919527664058873625863217327030947495380540109677251341177042846738303492340110630483728362847284035319207962400995244874921841822041406217710044156799419332880215067175021633824776326607313428921527749696259363928627357026905906280835711297143060777562001109474376701611011089390533112420180731901672058693281370882377128058466216340346814346871780720523720655442148583061938191274235323863603182419281749373316778948867428316773752100928429733418712711292134182351528418056103109214309048330672680827517626717876145389088120442040950056717954459419087874303759629738522281742197453523473822705846142364505592198481416755293883676729529360658383880437438603566551660527334748728409284734314596250695030936504448882657172640818245465300685044211085705963726512544639626304441480786018702531459831875144550452565090582706891708439158636320229295694739493451448182538914720444997353934429629851494355797294281532484120073196365466502484492931818971617746668741227975220823253033080349545814197877315182011562063067827325949939112342366438044736568336109979068888878670755783610707550374840268710986960162747194330486343272132571027688231252909035436843209500939713474093865871655546349218689050388752022698733701946739072692859814450365007130362408996204086526238821427966155893635371432902831982617954215564166682791196067751111381293154077318562946320301795536556477449396618344043741188742601507777196455307668428668796541541091432824817136259270985079618792648227301751723022338566095278113504973720628714726516741366141353840322125204562089812009413242176815501428784190780814128255231978830961410782400661075591678859041948887136220882050304605731151063893915013727485893030392016676717661012402491542804756395366735550813259777995417993616251676776397140781837275064002313611104039050684272095411351829861511983025177416856049599359970595565768774585291427522930000103985744246153503778175266088837717305852339839601013098277270905082907027232488375038487768157523524413029358991521787049709190919987946375730008552292826462042909388439416309005750066392780869404065100045962339267119534266309900161414092162814695488971976240968051575631990617366353626912133555425894631773757365622660970408783783414726595699513423424148260851589069102261960553175263847577944293864110101269428786512793307724411420035210170564376448317632957056990401050957021612733028126016953125108012750895519229322276975258133697290636707786254076012087895661219251467525572186707225018534294812458484279169073224519525884891259828919984483862865444005688845892128593243345060898636767760498643744618596920017729840103794941486231365041463902157054894876350594062537443042567480978136402621388402842465647696225313701560312694948313706885024854204917907216573091227870858294621389105239881485161554118853247190534895517950460674681445044861619792082504497254897666629636856568184707411693280451344320197711916588935195274120446083926968901943276699987452727204937059035095473056523477377219629283478799692005843299144259272817594734723804878943063866951746516097455011931915144727555345072530167476077822873095592928458041788630058856904975214880661327954846372734722137472147796031616722335454179347438033669195197359541881211803798791366167195028562488446094383169151342030930702413541773742123684469444944118441556848099846946943525997967934044666018036537625669959478732528015260865478598835826983558914018257740132152120648502860345482898006678538759293682133400720172065685598908828025716233291793424328386781909990998627836077918512109657137042105811109741569253895661324074246279899594272991694126439353473416180303678161906321312675688005083177882499660806276099946589458380051553262623905749348985686651276025765932023023790835639223078773294346865569531432166179868708313877768438820656191440617946747513369100093463798722897621288896618115102642020888855534593812021034813901225662694543060603234085128958801779548297686279147675058195689292172500845586323398241415137448219152274471562425542770225891522078804857348779720132084989394324275134928242888819468930568166877107902680595060516342027956633648403804932114620101532505285999569375139719737586002430351594887460225073729027230109837657355581155785044165334775626463393356538113723022496623388684540925670993898836091231791681885789168667620626722322951779444708525941335319208961242578051731027010862310481747569047635202510157839059903674564447477589351210454940499322111937904742587372263930972379917494141505533424960180429214268905174447849511732122640474022018657364834919432773351073808413864070526003884963876815044517844963008059935094418379099851380701153381512726637127323301488019345979341257522441448578772315621996363565279030067136115037566428112854962070776326092719212667990544495908383580925353002936739702508431402732227659347789894880975413443688757070099223284462976318358987331455992098396392410813530110576118840315784045170963422700272315728209336357044190415962814911210411129555999404576368723926573857863447350080195941586435603278738362083485559564434897439047656271846665047184022271147478459259029921960584054000177469562560201276805277019732344327545261288762335818498238287579338247029921689968053171364543629129325091160544965835601367919561764810183921324371423842879494815644549853247113784196430795753049000975762272720115894346791437541711162852326280188928214501503394581647735044325720353704795816926012099807870301427174483206709973585621137470680638748129404527853813683657753644661554396220282626861398961827165521541757232013173611260932930224178026654080810787647818355602513301410079965367556943457756916916305981719964906742778775870410782371780353632699973987575126324004258727773986711384560646457915970262155365239857454423147151340414208167928794582009599867126440E+90335 Rounded Inexact +precision: 56444 +multiply6 multiply 6317291463016960732629182676266184539634940117324604867813221266967306463604938711101297132298682793038385663762246586281859164467149793488728942703055509931759500918835859867377791286630842302420684764695817231197578472581375777452421895775941400790552060585859913332810783324941564094960937632276502515934428121233996090400618192376391252511180828882160259982745223563219077985161880228384657193292938951312818105220892032023598646280149670034423284119679375636707701029776032332479900661836615833832361813697835572569341590966450683299201086015044433072997705221510940150932368738365765961056656595754785204702688524627124017675322279514915130592638831888679158635959563018795094999223329627710907544922134128474871264017036656036977895165165938225630165287494746955561442974164201899108510232835739531572398925573199738578690232154755418672758852004934712498124226711946500005279758002959630461529906827174612030155705378327755005819829066810992488710329108633529387511795484548484870883296981977868703318395278446031123562192159295614682192582794085240297215937858025600787299426652370412255889807875147810075431383254270481942160514870237036642513516779752239356629377192340154772182898099231089178537249352444109197226424988378520618053201140465013126940881690227680243846993647942514671915180517523213292528942982783230822736019053995774014089435136867895083901322503889966703251611421561818975423004903838206818552018589244092646469456773287122835664514255084435824920072337615782608261486992881052889776861570163665660737601661097232299995540220239851208127873367929615793137020539063480985230758534988881108608189052225842247042724032477191056968204780198951664373680779931362588885171035705448230132340611899584432155482617390601413983184237853900422980444074271619533831973126484358058978401178997625635846280129297807836767627605617520863342304580269027479950037253219435704492545925749162753631770746181855517096854265473900508696110210593539178807190390869565650384256368033519185319419870446768765852698485502596070336139593797301824056188852579965410182380182895688099815194408164077261789526494983897854785856625442849850687200989835518130370532922493710299051328793182195021663160554754071850017813263338195 4676366909271218941730148471686667627891960002955187674394459992436895361693632743471086822105591579248357698724181065686104178066211531350839834085766096007826174368268297347401864492451461360361791223880238380913347634064487198278310380816935401342478362235781001621500803057409807201433478250540827476249095903315573932498372499808724744384068355014350351268304478301368574292061424838109372746281925876422402060152879099130774084424797465986345298463076199396115488076084163574790816029242239653516532625384692345944317113471723124880496119939474779310092988268231452023763943858124577642259749554464549992583922423264015997473835991359928965760893871473696147516456779538825963766867172437938132639582818054385129584897160553398537226305468479161490997134473898279742457247126445744118269654333000134322554265904230959307646606304729185456107013179821354884361193893339874394623010653884380602490173076585293091649444230424600066242261545250516678165376123900381741519263172661827278354747647965600835525261377090695677584725718504478770513533139664760858579782594455859214957265154566679357295498858829326792041371268016347724291382564278690997634055871203936987629411641871775349630610942576339651135325829408406391363115784712021084974365144309734273431160060131607221189492970337388647840835944303718600870979411914310041530011527941860871953348012010650961455245278533254244369229756136940286683311871762494915601966726952212369695192128932774421979165815973195498707927020447956285680086343512368705737348275937631801903676238789399435668726024341446286881996678106571210501219618625640292368440735248978721847848823105894484270523118585336538677672512854664075706238842363872502473658376425687612913709572542938872284319283180368738127261218796416255718852342711584031655939096248330395245313783669554975606899848855674938308179386801703106730856004711978731985411429667043333419619571265869031117027965971175458188014510578664588864145561471369181455118009155568501230247981945871247975855576163355399298598953538102182569000527387025429894340185420115271566976853108890292993579982364857423368087983714533352415087744158586830509357113266698224014471348287064958640844049515389085591345126215497376084976992709806 -> 29541972753874081581019867896870582597596916849907215932581756526702536405337925049441091652378853952580230958358673217896516902731479353249627460109302145924181551929191705089857779039581788495838595068213973188269694897564501574383489669386775537374415520182590220094494518907418903364603531326635784519269948992226603227019110105439985435915475318367176789100544133489135098693211499769162815029082546757320499624030225568476075736817454628797340104213822658602937342394477093059669394984751847932019204021918976784215044052708889705943692281559054297194258602524120340482972122532233887307803807486322995941041295843213168892013627035701615676678020467928081327892044110085645691933583861427019023701953194147533496272954719168850918330567039268820390058905602853990037995889457783574700546413854057884434131576928859242866455110562963753001558039653141208429750747005135746952301541313021790556752105369557822797775384791226927526347612525360619748073938172961175203287865308936478937785826698443915354406410690389675027756976534161484409173246664684701852695112557812763087697247535243475731084053061545752824097843919900605507292618346798366320104186687170125012838282133371113504785093391278669588258785302783862899752583577207523570261592814967035409969606265166956414588438408591651668806859402520314011494356080478168600820394595619960414866469067203654280699196079171572908478991140734265389641621031665151386761830136352270167877356615007886503665960172154780319046271526874510436647354243513068679509086735834020521301583233888429475205540516827276862046907653873657534573111625470704003444853125872578821375349004306034301378173378257668385707057131647177562371108092420984544816661374390341998685788244831115163955359626226454224283427644321495588984712638471283039672887348766367439447581652146157084134349661215080526667838851133485846882197933615609643432966613100367167553264494517436383182621625130934266451876318560792985239881703622272186129843235630351504326812410174507685992684300669324192228739315448994708710176824227204926917496959622981338208227421561867331791918118673654877318730097470893396397752602821375282504972681123919470866637286572804916600917655159431307774426543260798787560509561446078523272532020129865879208241073797761644486842486922639584103535669813542382486261187687336497256331513651410398252027693326277619001745572449596003853520600412995919759659388144399469646493469420884507303055498825365705799987126937757001875134006972834420314271666684129410733934351099156760651302430792784088721731925035679647616491636851342689802219875815294048678377622777291050659398453396619385609957452533102551254127714069850185743256842206741741267714486479408297078353069160334630340647754983413097569394785545138172986443424085933780065335812778901032126434447459361045384664282847409110095375580886850999307764499223558335533822561918451332082517354659472321475272993294401021689550824335066130367437355656752062155014595258426905121135813694661502061493050207515727027076325339874678666781723691903160174102327096731018654866337200947317032346161043097568008364924450533101139789187032321017726117353716554600700105114905497090768274852775117948728968401206891954638780620172734511535008306764133657994755366891663679557018601305172423678222316506381513809400909560584958098330564334566693494933431871375591451096734681034467835623482112762676746707508689237980535873599501265482372799390079158842612081301336634855399146174560544980760511795573986060311194342898632549096903379168972578050346117017644119292574956459221568996273531290348411397896447194524459318176083505455663161910393340639954478299495487477621352467647415971224207438951907881820680982316895647166137551637384999044946320256977004171367986518081777516678223452638660821813976494861292170783417036324648791462899840032788355579644491585276063808398368730175137016108706309773623183454321277477977883791928845626935065128075062572227606659453235148168342211277325953952520625738128201487160129602144263755305880310276759156975853287939001743616765699897530860660882453584577855862260974861978537136130574023453071446073595634821539919413499345209635401682396861250349700903990324640291111634271802770632077175635667403748226162749192943738239939839732703074611683401878617797106269729018600119763324530524359392425094022524603896511740618124093902642952439603978416463257162786457356368583953291450494126402751769080689105664186247651006470840170 +precision: 20358 +multiply7 multiply 93022726033343455850854617246448426663732753203587724737447509253440408148808250865079804897978044738436066817383703116938289142289322461991385361350628422583186666696993223277535011306167216971630914557379463747880342862246208222456293080255165811264752697819799232260401236960046436336588668553745320270135143958175895121898288282632162157805057474947294260937023405246555151907367452490123479523042004316441119765645634879922304350326101089290596440009289127259506637258939292368053038939931174934487249321318459229483924536788718732752580463038900551623372634338913498906820016445137481014187426213135217861765178775757271778928700434193436354612195736654844206758900030467689361300279713672477369240763203347566299031556864873206983071457143267934634270784913279989425732832164787840340236171808400376786619544345381136742297773978496136711155960589738356704764640665570830980741101930238970125694528820331932779717579404402199114891486417712568935280840138452869930630902464871865442006040421289609068961563514848951999092036396629751795744870145130396268664379821646599152025704377261552263185757996099812824001572402243433013320772868355575109071380961564928727989456190867176338057502852328695037452831792248773285774613657916429285513710684217024048307408816342108220730895868508386373013668867712388318161747145329789395740379701683747765721039496720971095036418839658407988572581253737402518364543289366290102470976259037371099931929825722421492937746712057178807587560106738947250844446461575926791231281017674837346147627874778276272798791020808586285165862215152124904603809630721475816214855236695236210211807035200807616409867987669368905632147936926002742541858605484788705756215984566463115816062965765358388946310817864351105090768974104359951371580671308555066401561987778590414712175236169387386512607989397710688978130119672574458500647417714003920183824713564432889158560791460113023739508678723744998288723701577057216362178005862930094421956133359343590383821984608945327811029488109572623413538496558837549065063387818151689306669410398327843812111628742030605448484947160007842681798751648857248471937396066344666036628684598590256951293161779790412438901386766106930689701321067508501018707985714566196204363879655069775788664272507101941251148145791311554225719391915979367360288677355024479197122223131881862469667678007895882149552535020230659283449563471804952722285070428097882213452483603730697119505887385825332724983976545109886271796794734254999223846429036465056925072332820861136122866036996337965711323164926874171292821405436607348496818819010675891835343590456833192903842241496853219154529936430464946349693783598540052178033433927148230956387617617782593334855702967295646520339941526501303903445694706228230409094340680310017521036874280673538892130249991923497206115375143905399501732936337510848898475190734978036995371432096438333071567850440536836601901970398327091894078762655130213441062931123076183995447378497303615546379528549084890604002740770541998599153414785836028271465665948210085712603135876107353120756511807083859219478937873431900992459699730441996451878805837348023249052802974949215736008173130958769017170563571027118541216269936332238580838344115233653592755694177777354943542512125829971908283554326271946111033266527264122557176896710944452230033740324371795480319373438754029818918854772007982489599652054982455893244522917815174108897799660187726236943247559770589020465083226626574890077669976297872773836030947878684699965783137669826606826571924634481090878953342574765680648019755067162201653538855741916055671617408855342729825615536251999948815468464100946845478404543820881745247268363390698065555019181038398582700578917693435654955082076062016538403735615266738203370774826344686534614954288984527042423969030919543784429417716236971569893372330611774136397060727111714851024659139209124149162335234622596369191824449324675577820928191809783278630773501830761740391837088109084864351119156346864585390089392503528974755416556322546689108804217831797755072047484097786834060559239955124191275074217420098209541019826085227420682107936006478610912030805484731559360545629265974682255504484141972667952701824009168438254351417291984108656156669961526497966968831958589216481796419706313756567595235559388666087348931580977753248156690850408306556233323202682933153365634855043821583106236122678095762978910966687801047768393092724591642106326515209897118571128926319999416794122835115949723517388967045718061302311128579888414962252731972412627883351082383809070615229353305094276163726958838494903066018308401818411981142118578368927117719207735270202528856276290100107971422399531419184547794140990102294071112080651333641102563368842878478004923204246584513353101923936288526067202971867597924017125431783715769149366186432158183488763507656820617110677476308499943433860378096669561176721944066193165383161781767924043739353648479022925799924468237195870602709349986974347837925980691388975401632522179667485312425367988627374870698095589040727686900854954802273171805950688705272911677063781778092527436767664987574553829291306930888678065853018696979492542539249016172647492278148749301654481361848649211788810434499324852170159428361393314192328703774991556189401660434735411600893073584113062634827743232909743217309225346633460187022712343691920884377405078706817147039547429777170509092381513523634978059590025246736365149022768441423510986474055908174383300360570647761778713285635652449614909830809117869472667035540803597445043812180036835004505943216563500298738052815324149659061691416731897768113987143530317755358629378980110232967549245687605560847741301595710779214196390064415155724508328896544260210668931246843096650858267387296500530238653142183331279742198184766321113923582492400564499412333801326049117945927504656335700718147800919768093382991841691365905412735935412461809009163272473913993601376043664782398428890218505221460504157354410559595615503012425367696569800912375103923509731216502624412713896303266988324571174856301587229366149496537123331208455829517842997673189456089534576607393220321619246533477233064931027554627404720665017627407929704208968812975213227814457601807048812646734666932545902929984118205568063746047497422813271645047377842813586919106895254823770947867840377766442148494614462977183187646175596914360106049389164058257878038417728920129047098486959649276978349272540548301092169845229838163102457692437206187234871333841457578529383480757867126871096595217101751140040153651516276540236088127877469044943937150337964715884060200318936392003478266812436773376743133944570058585609931319124406484330917755095213086993155470100505442163604154911968652229648524865024338905344013265254133260756872309117525215903321892295811803012841823866905876781767858971454435214723216966549929584451715149225038196725810105256038251303015396074956683620166074257681182085911435989305902426683429441532778206599323944107229511041535341471124934852594256503597701574192617969574835342342515442924889531210304731337897494656550382331853994150215458931514776340611725872022718658122986589487467898480126250581551225724690201779615093850565200682122051130103115789693755190152037100821397442883607481235625093593318512685055085479130619855694942129623421011835022196221656076653946415861273282863129395508941495880574270011154752758892151029682558624584116469752015456543603554202285063048056502857098217250921484531041676129079059565480267762016435994242524083591168809135513720664216293610812469016419696320246468686715307715365740430866116807743930591555197029137316690791978946694164078375429552142280270491947015577895585098442804283161658060459782352375931450154540124343169247588220084885673314852388956545463311322779944242184067870519821040328904686817186520753736970438195112168053505994901485335336565623929737601079485231985972799423471559905002360229819723113350822477820210891695631044257109324048727390966986908330492417595752752570234691200613096069290947393648040203035065486225353483748249928330476222105627747261827472533418500611434497749092472838550954767947848442054507599807575040495872871976144382921133658609431294659910945146825498845402775773482090669348863688060258158350083546255704032865411200657988335292574465429225058512212647987976305341402224705048464617205692157021833360164492711954565471393119319433114287671492128611996980770473362581284194304424001773664534295049974883640860854573982950333845518568308346903182484178054819794505650147308909283090549064025807952292937317107499305441375190514407775129887316749922498301389505323172927352955574388829123987373664903789421466744225182763900698217742574120174884695735638359980955483187573874589893517944861645061538494105451414416291844724253018425186290464877685225279066122918469589156721535837304915097377971346755655778811506729718976387087890986698089522524378841344296436986352592984774940916030453232335320976706670508848056681729176530332591823120559327058870072714720523421821271309844240207085130055212625942393740682324171757941628499235302551614217966968955539945426982407299419160660302440300085719242669334319511718836954366709578964645067872501680900049672712735818457792058482894112640804515617390467172501426606631122121411998125114877244527817392089034445859909980603971349009212594470785978092284124055065344742598040656479680480067419180665052100964043538598835125323429006716098595385316644296034715044131817631759622363192313460463111045634145176548938394233628605505235934295439029766012833269737393614139390338636453423971957616490561526433737376649315120565949688523410497215804648022887543001545768408411273257812151426398033113602204176317083557793492554208351066580232435392792247927356506377674247030332731840156744910122244223759197555429472183936638051188554101311447654600434688774166490452475187945968877632512296021175541214190158696358611012829526206869687125471040666593159862735761938575198410332859105939044400708716498362297159810726220148010156581171276805788567217047853837307127867924799810377326052769741436109030975182151611852526194387966228871236892792566353442313265928996129736851562178830851910667421088321484296380489676707538645955923174157297922004773565699042769491626008829605105011999000839115412636276145127006691663462709317954902901669776263595211067039536115882356162370629185039875890715269080297935691462656486859790445231785898878180086563085390434960091829208404710537954234189973837469387952739703836778865599701001241504328515731279900777105916652245998147723686367126546622482907257685314243035348706655276640239788299510994046597808543336295612917893403344611835029015648568974799546765552669977557807311467561502752551365604275389780216112494727197564586466648570635616126328083500926387266033930740373938662776746768168412548722951579520893632693774808675371969058877973882794844778200654602167020972372072848940691506405820912491861340270159453636610598488320774383028648064207735239855213003610529868972400052290150958472630962359212951121093377436904165352209988117097482547150584736782674644111925811647423533843816093117946528852375651268898638477516256919793543075126034845545902050394393490182731233645330683737573235931410251718685842170792197918955633653156906250023103756741851559809236025609297391420917820503769239070533510896995367658574863776631735652507643804903964376418374467650383339702036350362492254886972127659210836083788503586116735189599375143633102410052519856429493160005038870115081986825700610136603699108765078322442013950599342077318028708180876306937742763717031023421912467112356759349897188745435325314232465764303068042302234857222605267947955918085064061069131612834200053783071259871863598662336050433975528897551647457702699426596020072067882370558359837015527654576902285281728712398192543950502167175623429368038074751622213427008725964136305247048421614402813346783569629203034948315924189187102190530230673279525513180683034653975104371653543089478491719558933654075121209463711627625948529769203211067897903448203531918942544392065730930433800346100770156261261828278144750806916273221878510975594896686930006062244026961462352319540610628824705828662304189627862009443824010987223834916241468161372299273543513949713528984241856340400409848146686522677236276438909168774886964306227074257678968916818536841354414954770266464078807121709009245823997390045080512347082837643532221673746966676298503399718437040851999449547127720514335897376990663708731684734638094819403065571173690572328829081757679095178737754272045274626862995465669310893685222302327754901742967330417782083767520785437028426649567937085130656382075399551470436937055883765231103825599159383823560151846919795176582733659727310141023263328362131419954532139935954150023689812438537975888492420972620504190354705894005605387457679410427572212463089072878982354440657893157194768082183304101337510856070109685153375905989029646787701911659638626241084614259052111549538028804381431872700233033881667850156430724481804781567456106141504996929064356981276634224506755897629147841625905738697403643327351181874605307086836383828979613458010255813831603896828656058871348225527427600811636375688386383324149025339191 88870839229246727879424364576986706826302461153823191925451184579699693886812627388558844647027571845678934131716017062360849642031747057190298259109501446262731630522907041714824158886396460108173221485587562019915063277430717172715752235524584773728686521711104762213765378757454145445744508547008058758898051313537364408966324107718889110443355121874344978502546922896168205755456538013388608986199944822228050035612827687745345368502192568635548423589700748493805437883828332453949362821109214629179431334726093307768129110407179915068624595260631504638601492149092682924957119894014800755066201436105514693418250572583892062990036059773213483800229307077170606342124441556809510725670586027092117132344710641519629604939103613190603601303202073864265567319597041449856034395834570995145963903197054181828789483714047258686235968306628975342205643120177852731987343791484031377264870070495444251441289748293667640073941251789536133196079636851802601120332522997549207253557691257412880743588906649280826824828066457913716519171709894560489900941859035079849738169444650767976302676584448883783781669725656886183589808321615023838747492130306896300921219925551376878618222751363729825399626937698212974819726426433703920197271098159804005313016127593847245783653949477452207450673656053107698453458435457368388056952665191783372671647920867860970599942589962269054147774324143401129626383382240688230390177383931864987387868628731661762552787183957605932969976621545768561731381124301038080291179512298467807663890675892518561642048512716114947594758367962412016109863557434874041625894150569860266801250918711057737305272706588181611747945469837092960367139662252444533749588519315200462944682606617171592055850299203554085803002404511974367963332484995037115171719117988418014872557849678102826218922269416931966844238908524395810896316482429416215826522703933524421832636350775382185995600081194686721815886223096907812654320461210353022703480517775465345329511836867474352360043550517621152065933093233103414915488916160909639212679076825326439209301665622304244591135770212620359084481696080558752917802177893123145480065531458496782799491786912371435682789616260929590746349017556040698594569323355436253207365795146096220192432783649834711375032715952642564379004516550505679172128547153814774338149253869177914445879125972557099325056489735180020236164225313912656998105076577581020612264999441776738024591097601817228685238815341357874360700789955269781974604506164678440500158410168951052026136514415051675193308861908267216814734595172548548940670787427510000156465761601617917598710203187891163444402926736078725919443476548811535468072219918254003852688695281862864426312171031916637727673175272107086379472628944891357231040516142425121564146792479338347578960355698025791709494539652659599860750710315184051047249589291899753765163308458313542877361251150330988207436445621621354999089798698967879804527243445244369450997291132552114972736116384738894949602731001695952701058349043824429279208812058692410506376013170942028038680676269703318319368063606092730111310340149035820980688070972448642632626652480576869337144513721462400505173077995451961888838703726169240682235188348910521818003126034867309331086762524185501654419777255619821751349703109971945399076734227239223044253378379988228771702918931155771688544356916950912737811425442064901770852738573844170611312245153167764886025939704141125042946294685652906834234023029920202880700008348754038473861449353188655508662869165264567618156667796501868446578557328848682442330332426890179146611488580801524892038342695429837172527159511973348344355357358027073080720517168501200007346730828845666207806168530304909998314966437591743837966426276389226103322603684432116380446215485574484549399935698120718894209099692426468507555034506743389619198487628962285558449217715665507023288585640729243942688731087956313974107976232487249286037924267830984636724092315016667929503625873108022177344508822815753835406342916816742951013369009258567567715701612473699260954106310410628686843217899019119433756591169239159029126304781240687925640720863375200748745346465279176886132828374596041292911641810244976523859844376814412591122074091384487127193947507613557913704482525177701929435561145458679405326938936465567030691304545447459135373026430533697907174339541183749225421300398923632801383307023706189504608165869729065729907863126101805100169196572784505947327090486210326421339912517148201528919629793234265696988581652909725314774981973311955873401317728237578070758507860496827813686917034403049689431148228442513383092108194252911759593341390259577031409970629704979110960504143757000356461317546449370829267601276664561287197210690266513984002019183527638875077643754848255608491753270202850656218799545050363753897132165262649889721634314636934712824160693411193636500046163565808141630051722086327741015794006368825931769707185320337042688472412630811790127008068682339613746105117244346739115606281283731649263443223412557103545037556432951291705383611369213035631249591842467167124907762096971716754693653505086937036901959318988145441427690310377900382581770985355675541531710966108881838300471731867604275362229569827546806990017496529140335672015641636680302104722703805691293262810570229452546931036404127982921710288749026987386382327190575285914416818485442603956722721494463564335814088680432965161898885096447363974337697276816356569085843791799575103331552641505062827151568124850794951722573314591311978223773160416826303111992791686963067355033023388446379019803142079591397917835122865756739135289877803748915545307492473559068793361264967150352624901157374380669075084104295161846040082803322492464862441356957024519895684195145167491965771402050478783719722790490323026343398436256334279443250260048989190637754066228626759661634749188944206601331787483980532009560466940722162151677900320120939168418275845798984718847134143517523563411648035068715980846965203065772898769207846366239669815741244504756360257001698821199839291778870890487179800244857086142631123027839996561044337505962001342901674180897986161655198217346854802920249093227596885698212159081980998794520690009471306372078335323842649826118526664470985131891498125803906534036201748639015487220741375137394515806693833189440168148553045726819066599071044757298360372773844594887273362559617559133847088398139974484246349582492991546625273905555621451572279861419111314031841961923361947677953594308931201602043044832084925447531291532490347714687288116388799463477909251527150647307639852403366780602569207337918056656807197305274591186118177925446669563450177360480307382840814236278855454145183567355287284121284683108070014662388057052061801198817363490161208408264390801916484487558624829935462484262796639323456841838172567494853708204299160791231554703364840880947059205363700651188498587255945439165790621458474135458695377531030809342693278748871468973290324501454777813121897841415591132416712662290741870664093978925805644340289671054745889745991379283937819508466305240898446956367866413406419621857329732659754774764943513806710769858041519336117380067281875910325492354498863162799486110865857288456570373615562140683797025462451176276220672882146630915698351427420007095661978502592893204905332762221847356835690960200109118093607066353381574528762609278810612247776357153377073440860286048042235536802173777875501684741594298322280580750856258602368328257014889234461576881530591462187463879386424368677544906768352772517540283723056081291035936608526569893823101793149179754186343145614640845947382944065917095897840524313892639170024787003698714476167573110894827896421677373590793055103331660073028371092947046839363050774889938112748404204653353385768742930302056787016693493930248987845904372332792005671068746237702259320237573712717227767127024631341146666007359353395499617339380558118077397583218215519918215488128636408938789718600257168085284111284811847664443678015850264085176958093843456419750330437660023101091642762416522211418689809899663907191964244768553645576425631896642369397844707980295867253697923443031256562003488691746974619444406918516129583191802298421410493712280116529592078053268264211791722111043356086394105595198302838753790060847879359703187509107861063868274604473937589171931009632966540485428453262214846768154833315114268240501897242677984936934235144289549327285869657662866054725169505028564338233983889959831631891314639409782095762207508469755434604043776736103984604399813055967867249560357504964509619681580466480765439374775811979435068514472244832922569777269583932423658612779112876146394763014596739744982379246784595561640423125502888059989904180246574109198279071425587124208562181023762137000036048064941573813994374973382508529174991445685973449595408881936179408644268848803537071188816287133376207350578801438027700781832987386351405498883060768504383901992481815948157317768210789732446986520826204441288690334442320840654750939624966802734933284754806132235759798804915922728253938613641829927510473103557568828428880195490926655026179225077609317191255109158833206299247578050277863189525304290792612187846508735835184516286100933109726400041768357311945230319922641649748505041763472323666292058172993428251052611139535737652264967323514706007065543882950480651739606606694186238358498816456036035027881359015708472347462143012503900688200804277095430315810397243890351601949712662982060246251524604508869983933861950810020074402685160302232965860034646773858719181628137570480550875490575802108938050008029544628790978638149890506245954698635987824973628964901442853528927363884024773365052664410694139500216449505304054809125740702058486267011573844725289918461985572377810939712670812834017014135966752217874566605476475733067894573119716784843220861276098615195392863898067619201025451296738663086748893213409602066225929363754973505884342298086696110115004802014520261775249198140543124338397682577681243367477147017183846869957115418042317756891581240074587396087806089031180048914923700613524389487777504959681193907193386567003278268374089252274818936704958064573966150701406693917725005778135578107529729442419231510713899756869270351677357307865112262140599821767287561829022136628616435445754845484999904800454879222042715278257587290351608088134425959331228871629594630397471639527510619529427495603589778701053646033195191745418996122478077362783743126709264448966974576462304077546697554667111941026593072763588909980682077957879748256787896016276710796847821990845176383627284215523809162450274365809981220058585550811629704346643372563914429925771905690385956625477754396868073434744036777884870141633600953464234246392734519426570557631808888604124693807736241712259948660917725360787986915677579011448979473014980032102092106651249307410687513057856698708468918162094561749228191451705228188758324650271761291776410971279230282987031071174603227529727603995446617073803189324591972342942760127795569808456676728597581188700722400291311312950380185458972350550535092740762831157865180782960651314417722519088399479843556163179472364526652719115379707311448435531699450805815219833534710147915752330725684430407680240446892990353163579597827670135936901016676058562510677885768047020938205770227119245875556870746245358190247276394545847121095824948372274559984156556770560896046402957605544464553508316293314394617393558488044559684377440021683644375355933737164754135289562030383393790452885450554264837833247823135926382677801584123851330338988809380172118048996027203242373838475610846589990332155054803276288699527003020114621177082201245436935070829396089185957872561214182618643183573690905916434598351607139125975880140205512110182343683375447885771315026402597263137052308347931648099652549298320843874168806864448796900636262485934674423288569017016370099688255410101834533456012968267274594046805567212590708290515685843849722578499065860802513515979553806900145672988882963734182322044162309515784724621328950947094626621483636799290492022782221108026525819076100262870048068890341144931429723953215054859631608328484857181825254605706403085272527020038259329139981207657532487517421245742520895683775930804182143218977079023641421575359366452781529343199594253328293210795555821454253327093436027351172090311716115596473646686183575310916226659682998159568143339446941203755710791336512252229001470221048097433203519990835922390098183124711158654804537974722325991722907937855202698874643142460451505110378483316821466076768150635344332138464416492275022464520828240387536312604515320460182112429994063968532723960415479054772179274097278449965231737194591640868573605519983883619387063212744611339416295803718545528704248002437061055771911812754000946608385789744793999978645295586738371979596303325853281805147204469341784081913128966314351554893875456906410509091167097179188826983459407221897212418302842487509623448918160893137779160888303775049915649118217187556254133289492256582184056595198444973390251983371540647412743434384729731006875175116323255355714711581621251130573820211240343607039146055718183186138697141698134343119272860829970156053096477699726879397652754503489553112990683859583640997174021727351899926092484 -> 8.26700772997553045819304055548535041360604968699493221747382563316414308565021861718845881987720308491249462370474185968584859707414619111330225443415331579746544853979874825781159599367827166640031418327250418516065658288496929598819350923333338475912154144318726434769473276779117446031162143734408259216224191633396418894749088603257274182975021195876924952476292364106941709358587309541053009592774877539637012837782637698092715565121569087715465039116513344991461053194421977950638520505055441975038568107140946926506092806943593959105117873198081485580796518361179272526250225255694643951258165003757240911487211749608601447862350239006392082440164749015636957193978329480528931515641877934001065162766807707494551548447427459043449254213453059554730155419754624603644939374874787850665386245210090387589145397116192805231688243590701282366942141484524803240065106369321649386325289409516495722042869288346381503081980103306785850137820029883911709155318594808044817678567106097841417325389798694412960065946849594389914576429550318895733177638305680355237528233772342522037727317799543291550187542277633123328572299536520015714954348853469639449021658932112248770310399381163404572673175878753124089736467125230308722503347306223164654481528878841457148532307172161842461060403005268341373805901128495178392999664215689541498449185230934860936711629131364258320801944395479710315810276323451824109187182888790747766450907593838134453293092429850988393678364217545277394542450669495020575152742473930620932075043810653631427827997085620655786423215928809910059240506536227154207727502508717584275869238456658315826596064961578158380311924226646913494793881273439888233333749468119076228262612371469975868713846840879470190962039835732797600136908075634554564994788512897003191021970106500277246927963465732872618078648254990005344419434910821479331299771912275509313285094982312722089554421742812015544704185257320477044166650497358020846618898139637994455009718946953238430588710747877836011958379044371001847634438113807083542533540117934971546103961161934981069681077032132453816284456218118744771512173035968481460747102979892579858347108546582906367598201298104842162392015957790856247440583133093579785772666815914610951121312308392218701252014517645224553707890767140059584863666560626615792198357306701897608973447529413833258078252413038033807379207674525864858333560780945726158112530331598448537545623417988676761483246444178439531171243614542724285158359953782290392251196582284382775507625063750610232236292508299334065009661321829093768966595212303755511660727278886759140478585324876894253498526414520285720446156574156538201968102680425871177742291345653362528576923214429819176409199999900133474894084255925784791549159025914902773118589381373537931190819963575743509652649618588495272901296035591746552036067444106099041091723994770806247558266074876085665626110197784434142027186511706300007570574699945049176557773444810792054894317206407062837288756457602644306134234022181001926100737965549350861336132759994747414109854992509717009849379274250432886135377592478460907955203636901268976227225721292266754016279261601221864258244039477581788675179123782492542091011511579249103409559222978617649876866125373805259345166163839907881162625704163727407733409559568463103764242366697653076102503716054766918992365980000871099417362130078329354763761670268932166542361812428717636408223961079633236007625309623863714104415711065891037800209524152867337897138225691345176255455394031950568328708580156713043956185077518280004897473627454985215796857130155452617584009969697739818440563466499049755731652394415626995695941060692934160895929542985321915266687484855354863794964553922382384259725968273653239937730126701223557664273823582358740796659867788068049066326283768004029342416768950116303139328102585722031801137632580385785514959896937142816206941773549170592828145947346243019109286762569056606805088895853917759619454756799292737506997340735278329912260668359067038676471622048463279260191969026382703575173335032796984029378540578567989129776452711666132190799183162425699692066490414152204002815441274351767277174366933893185291773462601571128120633181341731664686625519372665102710429765430181095863866602710703598909944311651397318470121295696223667070171425710936843665741155882002491595342367674294938617758142751418194770532034707567880355406633680034357374958057994415487613235324234920523202895615861477056712216470842464894169838355736081555367327614923884538257343148647354681169189040720758454462278644353803564713509031363798231751511391720919568753915889828210870777248562142405611909878087224046278174116725354950455249773511904016263026374118005267136035298594452874208356291297972400887187897229563445788149486050660552903842969205661102330593663935322019948155307969021217670543967096026748617624677798272503742266129602479246924001004121240772673862677430623291567995457851394365692499588873523361256999047071050569540922781920735486699673124435211687795009675872425632567971727467204534413346621556715169190294666527571039715582346605805310458299844255532419127442625770907446750271592061727684597686156257924538226266136032475415603437595988820019343648872825565076540165107480879044805650386765620401293037290515347649362128734627504503782798998907321336658238075788354956734675310238620604762455194432008238035869455921977129983793618457059840722147326836709796760837984249369667899225054628074167260896735123823517391102069652621946468782047803033585106487940077954556395695950208841984319750659873665533674347206878487131470385314906530299639411271690217095331766486259818613523282184623232876455743381539854857795921700166966870593127729091677777163450882818378987053179495292082470384709385248012653567869270863872103124525331475943698181505243058929585973429754140110744264141133283765500738124484208177891224010970281295790496173026834716762656604494326843236273979887840449150781944281433170866688755214162303606310094573225355610113655124020373402015088256277704255162416543962413774078475536021469517726598023634763544686524036182496992692514174316946195318213487108045202495580791309127513884899609143200499540211457538789408822786942316346721630032469257352809565299053520404284269294285067359253352804770415325401980769009006877076453786779298550534126749033467013341936846129286384864966032814114039319117761286575658932107851165830171730729986055946557598405967728061678833095193788563350742767077820889956842974726339928508688898189880279501284099758492698582474890934732333168835058119758687322284570131819566788337897888540767610994144968986043745231853741718972350754948458127388259997814635373782630890461835100633407560026046978748811781434887137108083766428091208669448070317512229839834896907455232938466679755380553509553324836929892321461972903743445326397594434150136382883095510593724719291251938294525580977364955684281766195460099699577272256149588271648816339336398802224498025595890685313487230576116605858027994970593270609342056613518514167277980024901549220366954511451230675702069178265741870995486028402316705620350311468294439639776285453244036680924708830786742363079025990586450377739491650893992179467065796782706573242653905823570024596322159726596291194555339186022199053841878060165795327361378773815598329607316781167955809826003375107715079500415926066738330055453444159280951623178263402983015503111352640047730112887377680836029999016694180622349986468306745035704669613334799597374137371022523634487788980007691692378064552716027577023665897879790062815356130992930910470189819746481295239777405488445237785748117504008694704451656850535668618957802844254089643765255054545530558973234628865413629221024509851607759275711774819284329644473306915412504560863749093551765300649943762142016472685328573679931789690562918856243326628406578677641969884062382705397603155642479455968811535307998696485048078168608731751002549337923395964263175724805993615820916257145873416333048679166120106258473300224916691002941773247613301112188186353915956356712590601936195891593281797214992867172343979375752365595231476465042847013161369699366803914232622694024465295625583801362404015450750340400425409228890174541246663303008759004569015926021698942378017790190350976669577789418352497233537036978040613509522329514612068266629814895979513989925943725798583077571173448372846939308215686890564042369452533715521166189959876363058458309168470557614353051130753253336123964386724851980246621140733772686222061770838027324153358762447574106274499443408753093483205258386867389714388943025484792333827597122581280886558999770547770135831435059926882312910542134159483828404638967658826881581424718469413989475960683126139059524585755764336457623653494188147783196014768871837912809782878834658307773392663897746289725569842364836898623701621963532652574832549298631280211430928962675650017510648094645394526440242744069694554574582770692598914154748492455030942630271483842054845189283092716356339860219886823478536617300401500359531639952878725341606684605844646801435965914429742431181405169937885022728020959481998768468542671725836630251578216615772383361027078467177017709198585808561575853977081061464187917822144505270528198812023392106835075752158085104342321297973924001895934094302147033457499292423173304989801461827304736555859758182206436596190735598820122987103970763904327561428750835217079134884684273609843696773136339301802190067166207782521321232366008548326060653216385842113796978742570649066538396882788360531202309524329974680743405063969651778894088340102557258433245061425267385747440073966021721415496232787151252424977838395569158595255876356289336758724670224889950402113908623496413115229572033751628235553145986985393839109596744535036208359368230343035990234101835308325821656205817681245169418567070700665967574042205906478454359227027686330132847262800493139664022546454533991050253135635696274842116789594570726297493407781262025289647591706764521550142719252832551860589554943854453572201485077810031597359517607616814491642489402104962002658396791933246611241870470541198069466442270917505344771104516648452502460950595100634402124072260288670189325315323709935707423687464827680251096385671933113081610461275102042779864372984562706522977209293239468309060192360161395390535203507609762407355411109880545706197251079210492891621831032022720177160361306119689916286171374121135330549863029876452988950350072880509422769082568095379068212597493224555604773808504999464285742195095238001255348471324796342701300686473454342385450676341862255701251517141505841232276968482873875778955942921754622548468288259159549581839725056862287065781289606279930094983002166910686113391363807746373779161929726095841013081179918850372310271394864947883778622672819579242899458176383877726861881163002845292695452288712533446226528112880445614946244022998281151525159334627042249708611401930325666054947890571352279469922414803203398318289428119812441850314858491745512747968759589036107166584572917974789654849031650977754189174086236796086696446979402933955566401417507425923478632206296664507074279218247743778414444259337631713866097955447378437779012139831300630435978065973425259134236391783425321975506026911915485101580043580332753662789719025212458944141364969919558396318550731455913596578391989275127750499055654513779545103160926485906424224254562833791463863817894150275857875871044863708659329565415893274449835202824972545706314286665466190815356402574609521746510911356029973284821854271723187651333402984775041109871357880491243371168395027213982452282503086764259011057126246167655535134606500393315030374384254024320449362745858863620209929134478012919501267523874810168114875624542836517114936224454135893844706075699644436315590997106220970414961312738081884733834985158524680830438661000981133613852133563181404369358335915630263783545622325099207847013860384525815187932528552825521110930796349123980630114447100846599096361901832525460207124419209285812396275481383909113953649144809967935879915166674300887771076496989086439776241537086666139338696482150770970312772686981544418171677321073740698097093075121116859948454595852354498732398659132652147077907827946339616657383294901692888918654974025439960443625146845213538647705522274855577127261139806141742256246784546334632573704889625752134278461467464181080089546621376807076312983964118752177929384171126034750053533052460491582631772417944887910255094339144530115062134981147880889568266680484084584811774711886621799036189644351549477317745936398134792218884992832616019763737015943104392276666764140904270234024860854569552800415281247465720036246834332871153680455946307814011362422944644881083114196234261184095908860429711885991697428274681979797968999585429459396802442236238487017824535774283533503022625362939307672614423499593892109546227944512231029148159901957500425703682597553313583919570902736229729443559074909050935560101548055189429346012205347548193143735211450286900725332116595103872338835394447384703151928111199232540694116730028912497461320801398993943634565696680493540358520471404919452681776251238547800310766223405068253644269077587967359301317119267492845601502658061564127206754073008109389323751966420837669746071953161116521660184157743559817166423653062200639575354252194496338045910794265202677374317659817676156544791069856418537022409279119488385552787217847076795403053239768974326092334365963387175036728062468145317464080384860705734847432351055513014778135744343366690335876614781575598725022463826322800327654660360037844111828574813037647160122787174256507133681540376047166819597939233535178655747227705409956675580709007048547989017030373221738165534797815101132834367487997938007966310487142258236280581192529922659201040505367142421159857360687444808263901323260599746061943446937066058371110927711127456438759213619423564868051374724337368207014784355137083210373850128276534531345784009722390884713298552046337187289151493986027638041027767883919420332510053764620777706650951583602432137203058910198413497534533810414579045959947139536252817141634398565806064764048695932950583880986813201968120559895329915768556465518138775469968899354900164243290750280715560255245279981508921448835671089024183092757760646867443779933134364208865006451194496901112138409231639109465927658125626914258163616457323258945511970084467233288086877932684710577273355092208021651965920217775836398953765472723622994973682169428263820362043221377140947684003383291284810766989432478158993865488728348650067090257468241583487374553203572988817396987452982200493138857947197787635352094228473536572509843967342246934431707501828240973195546672506528150842480400703222856791300446118987461474344987919585618980944384677497285769674390716712987996278903942963739087776829307218391944211201104838700334899485851839215099300641971571317484758581269156739689010335219833981263294301944803456814785749724039960387950083378329987862442085511033359795244460658040629171074982329803342492691273215555220847405587075477350756722797084188930750903625874608329668270216059937335551174561566705291038983610008259086764695066171564180014846292063289463472374406864387231064389828270203612197804857909059750101374350705548115449980713421097706560927993441656189970574612231569951069455237231441098516377961517626459345476832984796739582433357920477893829818898707817342688178157193832516546352116664957249901063498470498407106309442057635556453679245698898478970402059004225438701643420309693260380077154877020879868766855871980616014439545573407211318662288666035762631515242263871121770897667167992460021639186309116050201513870604453897113359426328300387485287750923759456085842086683110034643155814840933151429571964095805488069550992526702804242591029326936165737907570902551036871272352649781418553787025207123888079173038461838075903897180406295816670491637322279990476384827606355753960494483977587476384886396994704733438615654159477861518691776947312815987257970539348311836086561046986851622492318770683184092209614273453236906016086046991547179051353127806319016115940448243676665951511123875422955861350834823116417292689181964483604965471121475910575412180533046564637812063361784176896588010869274510236008232933324371256597690570130501020595235552049587198669628489603563501068548274535118096835689742486719018621902161960373474064771973048342454291955327617913405640514208683421744484328284775564055925283816204887182540838038071460671606709122772372129151342725429198388240357848400055862113928684361715514562782931158037446078814548489729255048315209968783927089083726586830731186656622514006279514347850891799702274195042786177951226037054779718452064732976808874166496758488284118813594914853854293545130356186746482466425671825710225629374391548327373606206701625607764175688745155204906949897628576474451656642958107636617419422421452556926694349493575100359705795346857894756568355063955630969707446772919071683700940532565078850023458279183061822071030357028174939421045224771191710585489979868497860468519156824000174126800652230753824827935132409059556318242031304230081895961760486398952437292884764177708086135606247618839924939996934056647235031968364884452783020799636629448130630978418499357643891218062751681472874137143407080914160319109693616612704485850641560893655559864638295416669061841540226942522035010258218525070987053901709923679970784522844331790946517227642772423852135831037755002132543199583590756904952187541294341432336174304087543477494103017055197425607981940017468311584880471694188611561481255356408648149313904947451087912879920232574560259437868027810670346215905132948866866313060797754668771217306950741546055192995400551603925002617750932822589617153818495826794513264914855424444735933628268759469688575996307725134322759414824165139811169705487946771658422013088487124404315887402720190445729298707163037228281296965505375376677358416271181785388137589776262753397695619320553451702948686686888944069392844980904730274520949058397093203464990922705179190962020444056789513938233416640759797002608313674130620781384164958968802885333228696143575194274624235016386748740450793602375441020241033027497777306115736840782813346267546810869563564190647173678331167023647528555801474575221756821066575287250312504193667318769524687615238522917109661217620491855415464646782182324238856023493792788347810797557488292341773721819489279705500078582398831888046884911622803369888817446219982932506416855949342570084044538840425214057005154027985183302888142160878817687350937951902060986304807859024260086014721321262428787636315128700966503383901745520580458881883544811829059298619562392470086144234285783687412298730504910476452510557913011306918292799440079847007433211590993142918791367455853407553568462167114761004548841327605274247657563264201903148126940941864431655119452380008059793844173830957221009695514484007187643768933594263226301533530255246204699088788478413908191672417247603857149295998114626994459240831743957142216635843748484734786839625811724740608458155186805709989985199517446622280070892326067471783756265108940368150270950047414963571012581487423095571520681481228402924272767165639098114550971920927069005625659705710260966221944954551624597764221722643959197278843745022055100864523982386283545370555109840312555174249075579310608219175124301007623693590190059900495184275496590404613252402216061081379265498653777548102515797189102108342980995818552882422279486926797029252660169051334070859981900551604528967936831567532481909905194792867571866464301374819166179990931607959733008639217996673219270372001503322693054010870686241986557312253525226289489076533668633790128472601197519783635614990765014528498255714888476389330143826099339308388926467123552882282045378200603884963747427174697019392055986081808848565987097965782906798036189075303541999924737303707169870288385091753680390483696900642795145456307436785723624418208456054233418581528898906621667613131966054180554427223578078166568737672010833795619234450034970606861628608811729577267636770877863647799757239519743879174770930411136973454539627683134782384265148057351182182690206824991889702025796439387469544153157042206195702858083375555077375885494458802115450291372370212320718136191791396968615849994449035371557778073677911968329351239980499758528521701918561686368970539056745069060372259518530635072790725E+26397 Rounded Inexact +precision: 64917 +multiply8 multiply 27464700929115858137489077981269031344081579319751196914253816870585688597167942383149456076946280574367309640744295939887729168644629647607926354035845532489184684648847814714797331151754584540108675690430182562491908203564017719170797456676149461886506424296232312129448866592297438768755915361104704820558437313015636523381027594252188692422256257534131703221961108912533229519262407939750828372361332096668140056224570226302085514524493459412567698222409437065759971998744720911117380822192410957203715244817290780631755598414496915137938697347842330566244364378215329739713656376340859870438246778859829957777568058119168075801589765130445627211647777880295925674835374152228875519656095106018059097468300718270758758745611845869369940143027706954083753549635806382589800317981584496214624645579823314336038753097807781601497053966269956177939614505955836148460299912808708946477645828284386494287793471118708612566373358634423078907187538073968352779438086875797792254403067506132045629687533013461396771142241167814660174728109202692213294109570955879073520933155579018575894012384210920433816974408789755802838815884591794504505352599256360500774101299772821007954441200687389236560648059515294823999547280134847562402763222737231184345285735737987725060614629911525060113605854959174775803429855497088876042735760975194460165154853935342252517103251476647694055240025979877727131996610929080708600535381992364321864142338937852754241078254546901216158591304050233706722452009255645053896341168057496498674058827720953654725392524743333618147700283591284207352414907943021033571775684001696992719022194035655283231863538722572479484560946382155810443668034541004884336381088065523142174183542690636426488398920046130782182376808373504697981252615192789277358340347433730021898913837276368206690304415686113390134493584302434669378638019799157089698553914216784692104117973396884561311486685778890690735210094488385372489148421352348463716385432163611228664085373676760439832716051786035421238808641003134647450208089662865180363290198230152631947230861722388895140168784757276390162661090883404868597235849896884279453192897697422637694169016389307491676426648976967567240116558353260233213908563014710871899337266678965529720300543245346047543152061762648430040672388979848315333397114846859591992331018613526519781903075954600521873110689016753381747611252820562084851484784641697051903842340079105019351696707850761504731753704476591864534823623569550383987022476035598632590589210137723514394759374955716792693437265904761897082228060543789806940825018466933577380455857599734264650356878400429167310374891094732630295346298154627625020236605596821146365027981395336472093069964257387219308352906701142834725697929860562326862954341370756921416471381030798842659025251768569948155267683318318598026360544743669736628835428983865450479549643594627009337697021608393554561965202905800474004363959165938304145705680992066465121310338803305631304428751508358237819806511540933949270219716334941545773127956677105302180498606885533560486375546329075960930409961254145685935923589795382767221987356543522406671227813139240274270357314870924493396910320929760043990230570168838225123902382806456352193770990557019978352903086912866825423288556399784538661793125869570232408461362536867925067498152805034015555672203204874535526754630837644483175710134623697902353968852276451858514916496762130476272840876265793558895795100059139107265865784636393794739397028856578927217452004398067698080318161492549358704928457462907285034664828202228122328125304195553222004995594109834104777480986378263819817783864102678419311233793538431967035439708522341627215748102049591848576479921339521800664999916906298520492602169802088903263791900771066028574139686009098178798690035528685909602545197188040811399468324578007028581368960851103041793296126597062324202803248458150995412431123515071355783900182501271309520137099726461869047637759035886463206482512403663433736731155316028439057203334983515223995527559553761345335558799684311526242148526274591814755456818593321474776393610605678965636286469438907318505203663379562433782021637140695015411268081910523622996483872537898697237409913757097964574558805984148784388811646898217659664230241355695917190109997602168156826868841348156140000844824262542703760480785455158928258322915718224395528778197294934859640909419612791680342134896970625620358658973220147056062599958308810545071939502165510764110453673149184069739533005232096824619737060918508246569133769190715242603353215004602301860368293191138138996979787417512236046234074342599049864657980339713770684679193704872636203955459638337181106138874394004672759908477401233131866955599390333753228902735814380958921902644699451521088505086950690732069401065225662373334306979110503415097777746056666473537933965340592868129876515191060504061037430537060085305121622914416394176692982673283554116563823367795815543974353328960977241784281346792337824499480831522293084375078346882097752996437629953545131440614519231269897960667518216862354953226282040039481385449777248770638289927361812724721676138506426250216371047138344126962361592597398873855459392219133616768147351656078615839419154036310826513437184427172064592520970295473617132288442589493215391715245941583188007542731393053875122192084463853431106390917780740981505260726128949255422738269389030848293042102396591625737127567928043180072806245027218203916118743097586919316291111608641199918031107942636263287386448833044041046833159346886260243115822685178660751418538436665784653071837183323882361243697331917999052153840576892505479659218574382377016288330881142371576616125162246870469772977926789806253718285453442852529130229087378764779207951959779794953920351443352491853329259974575946973034530887287428152163224892281379736960134921875645999236598373789726991800965958546544391346104374824082689080752151050782443279037950949287825715128617540491245117514735007615678455572161875654465947593241543348422033339479006119782277882294605919164783431687541516322379918638717292885022229851957079881752066914347054015608578808690194536602103016825320232620375858528448721447242692895533640372029356121323564671505548020862319028767779542301539632261452074027675310736785050376183645626109731961551371172332304776522727219352482268084239558716295992150634328383692470081259163944439545235979638929072480630298634853175924208125471219588826103319201661599882826701503363948119697881686019004925114745270681828844410763312244819173233744505426480654465961729057043500602536712528143252868608200107287476497613210124708027804351984741757501010473603758008983102448888275928038972086859959486291518246939884008071594615345615485528698142126554741638171023023399615491984541230217858363986459346157052195112798571922702120923771218490732193330259265660064965767925783784187370887337848246063217254299698336291950981994424892243389832741098249443651178008810899007556970598789879980995932516915122741374410527175966004286298282417718241779076831000336256303427223557608107229677170122153132379562804777152893418948625916549461680631362060011680308649438809747354667312477735626318959193148224716336770107445887774044060249971149022509285274482232769210402808347141945709879875288319865452663643414670971629744892830518620663068086911489935959393716029940312978179352364097638884634372986831183494214106672018298455854132141873385905206298760106310884488032460308732556658946893497725570253520361348138877352700980760997041794903329158256764880677818159906609159675000672324927171637925924833112602926384142801183300683202199349287141355090160157669756841649580438617752978325284898563551726898816980330227538341185769448080383036703519206514075958441595700607212687624179773227858446523573814889872013474227073385806928096940331692051322793525701764597647848680863534920870012069121678356222894991268006300799170709247891584692738012310955765671304215271027189802035916165634993886346843377478174407704311634278927105375821676768814976534322688559495701501491324332696860756145070770738881056194594665919169026907051805115808323444540158663030804002791557457049337328831526555041967402541731869365532391110087338314106684477552096441795330588647768614844166778303995914522434658118204300071696601418913940876993651567295071327987037324922796916087153182044064247505277543961686720042224580518848635810722344911237175138920393118943855708856199181969325432342832419616787873416905536037536842724946495494741125864929295981415504694326460767031731850998783635215482768866372462385983074509990700257836839450322317172916613698255744847803397764184015875602338539966822945948572486993406670646629225610318614530955713084308732992020120267012076624052669573301573261820424249126001610559566153213243584410891379239589917017279460786940122458102037995834243768867817098459607639639601688544434124718169688971585640823274153935385926197466352374556844455188914632114739452497536148268826283248541895570044843877768825750841883431692432734061245922781472853916364287274286097235311849083349997397963638001397737062137841902585853310093954549104104994631235014567300952471591109933346750172064773481744915237217942829796658235163835209454896005608027862410024648041399297864123536843254407467429242472288318998755610260104750358917772419283189360594948925191936513612447472964055918200591938959401441330109118274649518254771610162562836146470364563176300245602836521554403029400380003685823926220897536862105817674078443172110085521358820248247560947564344904879138252310847876064770389477896808794897786857716548777954553246865993177835790258123934854745498067029791618425068621492088192910698644633890877463720474333891372156575427513716629473448696141152570073040057260529852873224923445061858118078574123851610169629493485262386834015863521843313852612085264323019498713615811218490227838330925344997494062901847651611342065853115698963599015202055615646603430995996603590303457250493439870151534337023135899128020829948377571326778327625928313774753513051898365380426619927728976005910786282762741417033748135344867518129168322189336070518169080711045776991749768546171226995161632715678798765957224361077293246921074161986762637177914342906961756815114295145050092271469902043620545035684616762330998488582144677489416527121757767654441184418973714523220118787689268687077836402922134127405689469043110031066173873285983816323401263169599144144909444783490886539650860081380102880612845873825390589094095374555987141665453728335882028040011591278705840446553547158759880194622321696260879904691603930985477717224390079372863543336936825060272188197915260595620440335774287986980267753365830521530523858821165830007657613565069510404670556795972907588444753658219602019118493606872479566061483611679836800021295902549045581234164572785306980093163267589503751576372372790751996932332703890901595245596101837683960776685967942020390316653900709887196245446256435701389602925623524394345332329850911170553882598315221803057481431884964273526083535257809758320874272907054436704591656285763999423630580907059029215464875266056005561381046561368538344776668486067391274948086239223900320618545146810271867348373829101370323253173476783381352931932899283695776778313572361923232765131592844784181810191550662125412804654165249518647191065027204726736627423955151266533209750606814355094900344529469521800124853873344493834494752481975990897928867937610222852716179283448606656602865406094253556334040141046126420276025858067201648449392327362749358324920376055654563199251590961188197264644650743124904023498030291620297410921075817938884186516883031518736966858285307580239779621928157506763448807510543181798432398383131457936765283947476287777367301623950515326865652048567785586800410497279985336059660014139929745742704834043958101614809214235044670412261938919589631801393744126320215668959707755362974814621001287377171854154080031410803949850236204025449217271265921811584677502557308109144521992868655983109276089015168921268321509655623375102338717190040516024381405067800662861614663692004793898887642645430909128227643574766106623163199188171741443026883383090437660737386801436575195686361699341147633983029895530326892954533160966781162090395705913081556034895994655729081346061948848904815630851029021836918731253185593250295706656052570279848567650234003223229465391186876274872904274965321303772402774692853545525869814877013075979715154220436973229826170952475258541146714787512348321304542701313285687451947282001686707075241337367985410610505152706491940903825871125865070604544377755800898465381511470841212723910681254798767738847581136027199629206934595592702238306072767048318161064012703819190829927410606983981147629461505864799908743584814857620233159926796198030889371170330882415238371261412737543760229537898328263411320499490709232268053841247928531644227818722016263241176990277931515077358883620199052305258218405077934921003135151522799934865752045178229396576144497803907381901423299705502717969072179005789009777120113074844887430550797059520180724476969406361244523074320743396356335961020003967258177501074557405845906872472583482084787945462058108401354679212065157127605909912102889701164569306724304781204655949533593069834516786793443810792297275432063684332325270903822626209413974071876152292519628778970002680332177727239481329202782747988997885650140523616264501878765890230689909892710767842479326838805747551169615986541417240994096787473096992096492216406341482932926106306136117234672292837496277518828988632353366367471565593547173787327292533909092022862638548733090926149279725832777074449878388131141892919134418000848903148115878759117697205457017895801985575564927850690753733866094816084791810160240450548172499681049349829242098117496060789417642769601180706347448909863784249297740668857053099238349167136056023728063607604113578363959957325421474403115842225849303179508626809105083383032985271360014544105620213169414254760137067415977486487255739048150840724101360233556899057460070281851359034847642880698026013667949726135478155781170753045542373815665029763471040459424333205081800157838608704729483542744183549072137935753972713310780357632574816985592598082688659962024251496001968711294578919171069805195223610290108077401306869626018056455824059528924526538791761708288538929526232150954589160022976635641950119924291913156876160865968201891219557374392966879866204769580397151245852660010133861511144322082787876338704058339914829640272989113467900574509753784824298371096429934718248763233066602228888908287815608769029556984167680874786009869805246832230364116314166515075214603690983492051253996843967078699621193565603897880801854923886298827912512175035885092452134713451660975534864410836251628410359247547252016239107936546403123448562107500634800888748273936032393950931397013291569206499372293097361079198740798064142775019212691949058934369361192432436309175346877142614594443293866024736068642059684507915116116138332475281919412772536296542536218759876226811698340574665583750424397966972030202994561813735012279878209096468969784826076300997100803537377183384361335910458877683643961538445464023946403658911124559580073619197406226407013048699690444194922572408521575913518910764375141221671507010446670302997604055097864566455143702596929122567587146084770175707608332452104451108187549532835499720418587168889570812043812969420460102670243207753613275916603957175158354106607437469598477828069099924982143550476654450579617813511845545768333221676024413054046036292885663286886288391731721878453006123399066982988128633905762517706562550220364427181059272514923294894248184555008216438119931472831916845634989308915019784665665059080854349527017997843155749216782224885842316248000499609282903682997003803178136938011593315482924183746820339996271500638118161397074488853483268183955266764908550391440853608234410828277412117665698837775499862756900975107397580068233155824064449573632510716926957294626271426110589245071716406902887798540797020849847182876481628726473328228543234963546069287675910862721701932929652758798849197826662011973574663798729887820909374242514615988047392555016447751331097034376381583028902380765606747415320715936392623556777992862851308419618657562315055239316005530470699197229639776587110186777751454331813852979916446835733813166242292613152206631702578992752273256856225019271840139806020108158007628177842578142329344687862468469704171719391356138516000536825712524627717545321935945310490106267749421029145151242493674003976734982314125423656093328780776841144071742676634922937111815997945784900306664429928745846465191064317736682369026856694246054390209594331606081210456538737567484752050542162120216462500773034744298577933046463547176949930108262935567137082870693386996568273199663189325566081087144145976381689755808686427940788924661216296342732466208726563158781747158190116998713323593445591757972124060780054934593954761275438172656930058211015443511396208860278286401914716452331249523918864479803685081358494495680575675215111956661014532415528130430230519101465834826323270832978766325709416594553455390925389898757856826452632031732653621700937955415911563648115057162562417185066920908195449984006636833236390970155852721281734959706538971700568430502373410313348673263790125977320334219928673036364537904369760147708130552005974973434561966108574083530333925863627764821704420580343214669252515612063295212794218676906113135603435519610311465828615861825240724683127516139327433834784025603707356186400551878104505672975896731682653323152750855737234481329454128607640058162954384387007134264960287345815207092006971289878472487204713996063299254401494222215520343839683756867432896209977984181094610413971068668765872385632462662174659923750136336490284905248439019338305101061879543656828044741412885262396724339542660476570716847092462123506337589673357901707148795791975441610503500261081887800668135967382415887760687948898614744147220177353150990309407882809654118503632782196261131497049035871197788934045513610072643346833012923805984937377123668615445111757338145103264558255974884499667371572507982891917216615325942662217641758954317615348852331403908638143544186891316092915337257163273502014610916672136965140765593957588478137116532095844699836086495718393108218706692598825367672191625678739412718260870351310082970074754611605938901325592290657979501788729227439006494106028833936476068472954249067251250648012986231379978269422577813512850853766594343519134350791569896578026222619861046553854603342281498497381626467582215724625764846837493515415793163378155904050628682439601997249662397139630340937960396165645594006086548981323582980703128654442585921910689158697093127830394534829036767848892993974185399996734362581178828029031849665122073249758608273282725689950862215953872032627971136477993835593445650222165918307872475601513109033709095004637854411442038800572695605277021515422752365208384124518046012579270146750178093727667942544855897247024233617807011089990145775313704030360185817442564323495572621435920805462032118253879902071182298699556477259410868044999371428144521881311162734358026628186154530035523559476966098617708128476716809291181974276814976730559262931466136421231472606039898862557016165898053219451981614744337962265178261222089998086646784991561580442165836386914346718468700989724675182842441739578001127953789417984350814248162335965193038987325927384220214745404591026678188339638261635338663326816039129179812937569077060171676574237101190449655677506507158782703398456203055276066545033005051001403405730621203359728393718068037900987039874412254501551412454770897793548388577212818996336308278662390043211165543770587888433105220123309831842807728850866092706607667636436054644958933955094126336299810043824034288866293026987873169311977607139652811208223164439186188600614321253139156017234963872083457024296407732446596867117735737663103331311402163247514574438484275944227006975665196103531742865066381932819400193727274288274854156154424254173684297478836119137182118235069620698357549849378128403882464809852860964767242212234289722243858689395309804689473084572206101366571099847507019141411557043527939564489392640569758954080360151545096651330754139988682892860052880318790202554238099603894046552901341050025620428662881594528971750041333557085847952447490664093199577918268608335025248717254072964285408091983848292217510447644517733354134942657409602305204618020456169751499257796112517575923128764535279627635434496359262677884540569661611988992782016072668368160571017747176047776418730282127026216590721593022818006073089359893803026221122235221366135303649738532941206512686953861308682474484867178431719978599195485113144331064867555514375209096386634351669585004194891163577366156145281229304315104674392057184241946420682424387579448841538480630346707347458526545751106039468488059919725958951665917625531321306462963449336478787289618689170612009984547878939278563580044563085756627174247416088981155483966602307082732875395353997891345768207571303462469694302720279592591751875601380011498357448070382875221583179547548610969622417593699866889465378793992157312786787992866937884286662414291930653183690781488300522247516655114635729030570088556128232468528133828110800025195245110168359327325056960166169794786701850821735002130037600723797725039013872333558849007180698616906352612917965013028181897150111766249984685039649585939765431707874783013223950873532181045688674629725227643318884649414310672074147735566229343605346007060877924455061922385882181767571434025727718582752031205018453657667051110876451598709191374361367014648272864666193286173845200938099168894331274774458917633534492262419712201972058616265677466200878631305018411382332515568622736808393860702749809555659905516597934168365781738518990751012221775182521615695014257110597743055378168192070489371858339488679454503244642706669248475288096389137858282111023112538072410937162318591732902038920625456588234579749727882249233191937578136905305402455669589149002161630554560117219767843366593928740761614064026931294974537315370100501439985428940831264929110225124538765285984272211179658371884648764649615028870436366256211050514441148905064722574628150986738005646031422716614410678875723823116468931893114060104710869643735059766970901919477028866858995463199669303927170840956804808895002574914855477322380439309786090457525186047499188862671160557327630117077061541772934063181462222302301492105461555897529076997945868255875724111741389159904443892105130520113515843319628810265663680366209428089210756974641913407248177072756067130831766991327927038003919543549521280432558611606374909990903123426522382618986414926865882756225679632427160733889367567423594009754073670274980092659009653347494382491352263735545309604867556629532473953312709776446483553702683420486010409907300365088292159864780617365567506600568253670580123490936429466992078598240204602718500964621682353035615326181894921036166696844129308620874365017442076336903909000077229410655001863078041805072817576254647774204855906829582330742063807101014173777619847319089748558631214314844703539081260579729271606473034133831811197072629764041755589887006502990939231574072197662497229324170180828984542593842354379354972793373643970298772936185753749973589795945530933252587965358399526629959026972574942933046363214816339065395709227402230636880978711579708506014379410432465142972786513960560548813651885297711377639884528398551512445387390501466679500079639941226303254225820090981785301507088973746753390440174531185844927457660443419855155803319669083506218095661439693173047723620675142734814621255257465470015751933380550415945940554026684761668787798791988556808258596500830854840953122106155693533873202053977505785419869903840107563744562666029967452479924318028227191318170373253794291543829420805369739593036643430324640659691105211955019190303860926244058666729184809810499510233498121085595577456636918500736249527862468661908363726243744810566458978499521995625267102954781265047311044082421513146413324223923286793732482957648057319875578214725272298389366033151206405295041942234456002535463506536061618940209618859690017058006741563352760284372261577918288661041568420635060071709556152761868434538806831712432338160774552109171342759682073680913928192509598307345895633632356670981699116254560683328100346084291784835902070174605379528256647582001403284272657738220207467848295476047700305034515679849244264826232543281296565326770013751270116739816463462593538300569406813863028245933894811844250908697145423126419151019912095172764883584808123155059474110762106170877225210418478222652945912198509586332392380594792938767432707318815678401947299857822639309786952744874394458443894841048877345441504835313965726483580714793125894949352236798451794810510281690643650169138791252017997235477499977168354681504377427368662519569965341359028090412713857809289004308460508433822156307490733121627612958897980976373788254496605735514661743467730409601794928299844846669939103073687968183328398907946196771660131496299599743674907121108555387179778833204420184453515710564506849532395882043223104058181809622065338376826173747101773185674165770437280820427086295342449263055363256965960467339660996758259251643113971228263757868630582708475744290012888636691536553151402853889226363410029232240147587283193698436543911906949908931845774525361902903684923791730213924275087765770252084527242162548362431002760953188159097369808052409755850225425015135198574405485003313884464966856483801947980093139433692965627944182415881427825205304251562337606333536555273650684237225633310812359393598319242227963099576153503390410217491502592257713223004050382474903316708919217723385386244499447658490469262251495740854648361163707997245536998378017297453515051482916647581125185359346202177729995579466856767567174811815904624908127931480563423591013253415718503945684552630564755084833717637799832507245276807961327341621854294985507551035259223338383468813440339110568879184822584028140112374547262403046804466842344715321866347048494752741962302554099228506999355511917673692929840278238315568943938597183846328147669252656699927523367902288887205590098486983543400803428918846607330542908167389920229124093155876506643573123748557817168940702917325907615921350572647804812463767011813748005903501909939606231222594929508765839165374009486299650110444194578129933912033989317526192735279937301981158172338679228304406545262995535782564831038846249156699454369791878598324127688602848065021365206717504385314161910049233091675507473919191184771169688736167106365997549846346294981091316735334559007330956060035247727746781568890437960992736331782170653830013684668051622021739038608976623797575641085396449093969814057612479746285524331492751654824716853535554856557153458193459736976382622211030890489624933688044332613593726165805618384761293688448365539353130096979624617907963704315305019743832260023539094671071998982334901762659472495784511437389769360960292824317781279554335793830966391805713503713758760511649412060440538429580063286602651605428721671985899702148752417531579984566017195490706070200163971811632453260479498689112083901811500971778311382701268043410350579240273967065310020453520243157425755552619432456419547494881523994555330302019353843840240150785462122731635958771650035272658913327075900522905715355151427957753670700889075107360297472912045517267937380595764635406910004257272605806999274682795371778833183578396809522353275711511296592500115491810205968710228662878715426732126117888904754196487672050207215947120162204542778229396008061975596044439899979522960876209319510746806535270045131659326257827328640342113755202113969526983102576080952226372087833776257164952012000029278125788715357807331243153696024915955817940615115653224689095417161855619111052780353499717157811533533144984529179547702941098287902857908827224549168021655701799581967442695506445594246840973098876892703703246189914141537103869602144961867607757819350225636748222066304942952641736973168960611241700396438787988550564897369660563904741533065644246993717451312138168908283832883047275718481554125822011557437571969388980818194188493074230255214244648781902784176717275610635972310776012660953066652453632005874842312283467367703479733491578208017917030387798834581184886996465392111597588625284134636453757271276165337327549718704092935125046066234844614912246401015149493458634870901169641533723045961465798740251436286447623097800194294227253296990539628748091509999443755097740125978237791229268151522938653801805527232125819501698293557800642865803751941273473541035910257176075925742287365926030531782348710718616374193269884185345468279353004519078967968328774228986251158071280762304768421468997639817101492413668878265777760098721561790450813078324070587696734053104624941602186513016998082823117805171987731675325531172099305975118868562431536990567594445588671261969523347538872136301311396095638160491533160464675560174244677429224201042487222915768467455475777831991615737873484759979976987959335510052945664362492343974145518507410612115364761011316332732404832787628464116064858833933895007438235339362681592489053298447407782306850861444508647969240665326193113872159034333284201246205017552465678420978868924790598469397603269065740896147415598330717606519159803012621603463152120415879097007144465672539452305846742827169985512394387120111569397019898079190744907723998287810528774574318962561883367082637778692501327435338885471637013432528365254065493486715623330874275201547804136645319110477996606298665288184582412285610464664542176690391606961537611285969609320238671170738549749090295918865722171582650966793372698804984449185050449361268076842510326709992936774993640541381199253372637856624910632842994825585207745025016531817197270220124491400233358455761958061871824903338794997348787916230540583552760522267306912871266602179677117823459544400505281843376268649507610617814700893331945068065240237854209544728469808826258544980067635861656883999853183536588045962886266098414162235699144238839193496594899147351179025417723175368696012268376754383545373345388349497644307335523935641255463077280630490637042817363185834312336411094437392164006720151974896537669936083024568235526825027082800055800444527113472189723970552681164143059909792998001174801069855461317954262851854926218535011232221610686567185349477049091398600681107752382576192017244917172262062480980901429342581549012594267592092216779147196197111407688023484068957528339908711731784710774714103410390041825631135458161294846015893552417782742247780952527330329343182498006437104522511076189736646425457775647032580560329510237403650134716655461079919122658946606028914008349387285071351657771252679035765631224500233376384160519235266038288117219978923598787168794130410682150870440067439841897777355785814291940518127344466915292705600524576427937295893904942491635009103720907707938348007739445320881317956752303535194980017764057320825101129018633977077251906687828558154381127866735777150934545787891227116290126717100190049263055196344330973938935896179962282889352982308968317496465008812369626088251809857685592332813816031879135515879463635979483685265370934878164942770452539193852340124755835437771783584324898151214254868803015496997808834469480103773016374081019751656874685981773348664505066354636497179044759557878191209815270054186792273731038436269903367578239051803293578417999056296794954953315288949045527486834911096076776396893603485530964515772056068457337538111022234634998736497672364314907543820608145199810927241308852343433097244915085935035882384097851779989515293048170344509855451087125549401625737056605565767924308154647696145938668217815785105428193938478745959230035593378035364805456390301916485116543830841069853062572077911536753695733573864850901713707063553280825461403925012519167399578000456710673518869105263416997852345273271641980547001159322818939912626136833250810088731246135015777050659422719730285704562769196366539127637077506895202149029310202895423615967870453274411667468611221478963912635535047193017196506387067895052444118312669896997717076454357250326245600435255771961967795496353842666354224643927574790768112558827310740106638328033126846099855373631709941981780251330890746403698543024629745723525609005461324939085380438324213461550508075642968686740578950650053562251969411870030067497240235856481209842836844416058542995030279143066826922178028614210519504390713515812304633643899521711464078342205218042905427952307197747114226630550493303439778480681641485066220639332127236002695086148449948196151823000479641205280811740345423068459773794607537149240600701902056517599710248021099496666782621922343730144086591104032282935296979707959206056619575056551920235489802530871400267290824072258283788767484877248992722832435104769326355521287298670561235033520784533562356670122717789335184693562665579571686669642955146194022381248053932360177365945993833231733571941135972185263995069767350353364040133255175910987294953173802368498882167699413199671892982356592994874267181791293333470883730016200938729230782458653830091332943302611333610357092382586235162522742455034674387287588634753658775644487945410615342687307829668395033439683837865996917309430959325819907100152672555192360589393931142379057146263490891157319193618869975853212487676389486567179431798814361367901642748286096761267306361080292279478507197591191202349311965471755554601201826990495740056463181137214884888168726971432186727348372321544936671690058566762515160440528531158178491478939472745950828403539837029340871640419588052915127789154767228763669511207109428007462139978387725872587504191945498497979998471517389213022242418286736675150254935605316775216007421507597301625178729484373016021084323076620723306104843525291854285086287824999845774166600076392104856916066684734987313329376733797330556808829471822185173074081558376654559919062546464612950058688567217958829453521470884088828559149551887697725805614379478185593963543349112776846976119733057779521828430933427978142107865013851936922129331722054336531024772710445846499745058704879457725733365891470166233530324363591368347958111084445719323520209738496603879654191232183198672792659694522605726804007776115894894618768415095521011372159381129312502439798530670827806486678194480153153420346556946536573864459245691097839470430178940205394418590137113778010641607467281800221619584741155220843901424900726483556862067419815294543443779543727337412039682178402371523032886483754516049212782068331266678566220540962672226743021004780622803341690970490284455914268855809362511589443491899271836418825101521970651515538861461440098984339976959987776620551514252028699917479734971058627643086430218312477992605385018058842512754931333415197705744807423844238239031316573181687431333046488683794765148808742529005460433582122946628106545123559833452941520518412279414853439617783916076385911459729705180107732539026516867374142627171665620708153333365127550049379303193569902475423320645997223465829704677425140991434610672476452807244360615623678715889496670271276708144484017499930087555751597735777588355726002722748597050984123515153585823490714684186226676441283180237994447109798709337483880860055053917364315071091270049882919532626266533491246117250949266673848367087355836522356891820105526790231596702432845565901094717425069106412224749846753533457882941042348555361959546227154423232893939408846411178079565128158820456839371709425696849909778348862832939397281705945948931403580095274759965137022141488696909179801634322204862572582644048643121701409362023542262036972063615654728979897445208422935756420692980301464782554913448632673776196006401637622228773647321551406010838319993525226139691281589423964938236676928057196599752710764050685784574613819143046048475338153285986337150404066997875060115463692321552032536778536723738881104990366912694314830375214208541172517486245244522186407226432787183740225616095775088820143884616714625541533292996611824767022733032341238533193356088465189126422161215325530741051061944126770179969694193366863635328433033321567365438134707023462426218233189508911353834370786402220837089173469866911145849855129194806036788795336486164351130184998642528939526358995058685656463882925893216605469156389046898491974191725440025007275478192155853992649183855156891351581142260494938853694653361077939577038765425658582239389692097933277914799722102976174996299163864309060913754735049582669929162229552329758068502899423252148339344796579416367096220225075657316862229995345444027330056098156928294880407788649269330871598676469744519695981367370891614577838121251286391527220237497984424286058158048229131164634835431212063304800754654460605103083749183148519985175411689165163883302442578979197018668981033895942095212967705297115935364404945270878288787747415747679049277144977672621597937172111929881237371679916543446277717101162832053930180355883367518865420492405182206704425682756632120750098789377583130447036024316049721176520330417115602686161592420218901115501431262660846222268748186432221833071426318208430515824938074096388113292607891838641922666577616012170652113715987226746018014386582233456801297368759329327806006036874286567053081870450924694750076522940874359803418305229096949083691063001561858575362824132322687189049772711284574391979909333155093609928232245856835417983533959658190522412328790906160644920424406084055277926818288404499244221792723004892589223957931417645552906448071094634610012208268893728983812548632920169961634545517150018618233774665547041344831342933666974272492502437755748052326907296488159479431185154058465976077036482116788531251088520393535871337398570606898765404400250178451600864935440894550377511957475609657113996012348545249469913675521747945446582780915771497717389717998283874369423816656748445743991586196654200692214457841519549584783631091591935543404420877121697706396716249741037268727873483974137440803148855770720609619969294484434668381856440457911895650906590588121123057066961389638110773283652349236852779622215736779293140928400890442249822895890056902374872626084702513682782370380782780858739215928582690730309620147771758721447991231237196309548689223199316408552799533456162297848829486543679614450429171231378878744703750561321085541489256262632161790424483272385608995588599808986562739544306075289096399133309635439493715361667917947285259029422714177154278962412078651833298449643735611177525197793264103845478311624713716555287330128503057801391692486142582455479959628989568687921510012921688616395346199416023102273212009262128905922204678786229419744291039514383747012847499064262212998884127144213087170962137241048021189332218382739808506796562744151203680155294096445299333747200169176399299605835621706870953268366323862410202927434430199837804259128752411079094229448973227246570658614495790556789931810379262525873765105125308640504502100839607244935748256767676878940718818629875323355857414170569613657204510308487796111352197091189109690042225553411984148121430749630299462086778397020887932201476450070034667050349076077158466290957586732609418001361260550880075173272279883393596177663164736022787549600105727149407713231988194035091011763522392564266081223000512219200648377413967481086929825816443475621287317636461343526943461670953287863039191644541868127018614585211812376671021960118515750140714582312560600643079353613367199213328549776934400998537802199562054898386120661035936078717227947294635902641479077453920779647599739678515927818849596252164146609577390681826143096175785345261895289625865182845767399420827435042349961998825275954631690819581191915705601952464040700922460501780036106391851688541660778996161555761653986589379406597038848753143045812758934625072253620545125432645200852917518389519183373862007460732903345259052375552566873632304523425539961920138122063412628470743327236156650935980213313582648456819414524241885248562306854176899637653394385797151012213144924662594407930006979891224612871507858534583747510323073984574909153569003601211270801243361174800485349995339640638484739305602332843317369865286638876371615934115091233612657562494773456589153459658330353502652980015622260064419420256230238428604155837250759522116161185204061400482562498409399270195855204314422747601436545657068180928914663250321570471975339542176923092562632687514534628906084429970902127045986144625241672077815366453068616583555954294335321362957754368793704716416299693412043598637564541282831822549006495916315025732460889709757850913940788520223114277735533750425220021207801496218180491106804973245872253813974257346131721188397210275009493293244170705529758605310695810874913330172048010111511708947721447997698985673904187112308743949327356766221034406346891593631201604226913046135716584471431131493636828449490498369377515773167168604601711794029477629938203914082088025157572410440770332658104640141630011264980896671014052602632824888980330628886322560144182599210245051668514750271016946345848947566876999682143512971479051088969139304005725259373971435943779876463599553738476318159094771559608211632546285398116633598539656506993440066855035489005957981729530569491159230988475489541417962731750717913489034498283923162163880062489216340674878925905893748943112516897343408405586082001657885121621602225281209214876149170489747819387062368524782920797135442302229260387717455092593352502566234069938121670860236795245794759679207889201824664940926499332063945079522962856474811060919678046239888462359000379386987594075260206782119117095832346585947093243109047414695397177439173376057993882172175100545844238827315751761528384339371310239674442697758459861514659337900997832843014331828160996238949659310730988713451760823532316411311464011094001436009452849935000707554033777822313719981483224119231915382544462630351845306145713775319574566814015484025017019060585343321505836196603294457386016023628004687765228284030303700058536828566129049319067586292604960456588000790789103386081340223593811188075953548896401458532511512015558846698420205310034502561172813672302272706141435972924036712191470560259977929070637983224053953254567680292328686313609114865466519891428915847244095861657056901608941057185401205225069283667254799804642654465505742291848807363724601406655131867724945000015018628236020246691398383220537336517054471505494445453834698044936676784096424044652915752569369076850468426094924604360275401861220344805883442408950877482550817955202585169292493960709768915771103967841255300251856931001670663743113627282260276495030239432568769349189785266026270624036713515946667037990712537022974791389485058654510092494970110123085302232763570143130600939549764060520062344440994472905211640923611950564825806742512263555983818395228059384846432943491285303706732724882915293561696824501126441892522544849786616687644143931144140368155331483161000196881635174727220401966451445364957593952995588457505386258260541851918702747864838922326106316947213327584193620780829992306057573199174577742540644574423772310159481176499692369971723348661012425818500909289005055019281394363909345098367759118121745708923420662203607202956227588757027956328767984783646718037666296246332045397132968176157182802042019579262605458552628320365736269099851467180881441154925089642050203945458490889635607500433097505183368423210699744142127869437080274613429023380214268769343123945822734885024012718632651087939143692810681991857695840649834433792256396639586755297470386700896794452849394484433253954345722797575175271220786898726150392308754756603460829904946374281285707109476791165173352406043450133668254139605089347358068214826767600656761448235012793901551264634896756773695669257789085185234990751797773372128873423592393152734947394389976111583043247006452109003955446104292642521930855046985342878068093050230364998046463257387878854668414119122925499490116608423801949821223579695680396303631947253025224699322666693678991148310973276225224391518824586974210335621240741325275926870120455496909960785907751712629213066268307096761075700586978451462911317527733156371334574642492765102512899693602401129213836902015100655309465243606395969671922910635476256694397712286031461870935509574220936880701091766921554296641242104880609714225784001791030950669718998875266690373311784100268074868790986821784058301820109354904246838738060878544676960353726670568789240064214578149152331572852320287085332667628863769415305116195480585923978068985323992520673187275575872865802954406904122201399234999100369780065003494260756182614043602573373898553801990357689865634545949561783916792159198997693153822795479900842233188929179435735539351577898114536047230840208785723061296582760523909715817807017990543566283610506722770809735519207617859869158421450135659942951436054692855727483386843138795952697437157408780991601722470546349764071329566628061083007738750334311098351873889643091171048155792907704468161463833344720176532647702264888425043305543919355268936445780581227696188201866220896716776590063423157341781342690400038646018511804684056233600790427738041086450133106636574223620917345583437197425666431207353552680094484154746476616952567628223368624736810127313605362428931677749377402893159300810867737549600325224461289958766000635445802425278002155786079498436995371675943902506539059815710720160379942521768039907579590878623777618164668417831719491246664603081928260846035703509054427074601895358637512151481369797323096002978675899099653344322277397282055829241704669504424997789065698380884362134446099498828898224876474134648397401305057583630954980215541440092612979255492802231889493405478314601641124261349129954308865318083495729845425976807964040530599537801958305093044496455033434451137404721771934857933874760316693505005850255488348271905212999878906263052260396940096462135425602526862238671696304527229240044166312413585717741680983062728367421014090404207947490417388214252914925034505347673438912695791355085792591256252324157614354995440788856982984709116798380161805389915478297397170238145139043722305537291005657091435305861188071066599739223551789124167010159830206246234092046041319621422285122765126625724714278601858564289661236660630454567694325879380337073783276513809855692208148035502146048745342353111769043344192764372321253881543863345929722032315844314364888173528071759534674508114436329411345260132914701944251026577521585989216884357831393179349842809674101358157074370288036898472340365974102922712906880491508675370933274804483513664185241217413424425258527649707054363845028246787638454133614587308813894132020664191901549670702790476369026913313573381649993004726783861027080586477076784699606056333683470946760957173857387149952856447384599247798868506420176198945111631673248497057601769961747718104836051639204924593544118160637758663341890402983876714370792907596267000106360899419141159884482458059572407486288148374398946834269595077396962274110420954938767800924578799870286144966137336285044601148443197561184148346137519334008498206182138475895513869635867128623614303878846910637913372537070215345758927826721721248904432343241648818675579275295397943223401688210174189355643617751855451850277116988130220357729032893192396591615125498829235607872521899583226196062568414725779359739958294478233335083690971959174747885587017326855469246436052374623902795662001792517724372927176388853564615697031992887650954318634121789406369572119845153287094851756632431951862396903171363485897133237988823290382344171695600439339364634385180609175138454514723132257290994456352856715165588570889203991517428823783430022408329561963264098832522283101852674955959940485144359989503043747917340358592667997263745002588831425344071381960991989796091786326587392246713373008071804813210529247520927416717506677626257189091138054615358285427661902407539392494206052357742338950439400102405677973653197728102319344256998544584088047427272186731476622133199244851416260835762042628508072671549260085609484186908748405709305675541127002848142213051246280642428044923345283291292437178274889963506402575459168523568908886996175686352477529608018535625830890913434041985854200533893754185372783977588539680823527328404974358062015339107675691764803062792267376643007924012231555475712610535691121308895892639298692923161864939277900017420848269001355011444903433257692044903855329364264215328336393420812458475773440199789666467853080231980633733698705795457139930111233832697560768376223034659035745258374489029392328002150425305617172431665622685688558792890771761850606444343851094305728166183122653548626218691987247719256862694976402695543383698054056660707178882941550411678875625941111438539907448896303038322863509774588183821366900653191790051903059538655664099393784281008324217732862612489663483150188225723925135352574659475197952636743101425984381370698679128182224325837625571680556088635747504215866794554592047171080926853942768543605484970573124273855782382448781653391317872682899885708175539220665231912250785738830127835095185217011638418549036136048351074973907187187709674303642890204614287100620749578488626191859429813982490310907872384085201922327154722958076396629446042506944304581748667718213753070532840544697949619306704790266925146776501242049663976512879895015719603932725811904107193949150019097817821316639008225721784834617911547234705166766928835249674982146084442063195466412414884002067307934869697179787096508694056211040143904618689508815187206315182965982032343475445194298695587593453490229467787311543894539240198312853592763280927991245025324489502706208743482914547621398697583927058559344342523103427818921317648211065400536418242994190109650635463680372356269275850709373155581106468207406195861279976834322542713022432931504755608831740812240913485741914787005158963899613995560475588387637890630794490717814942529288601718846813316365983039408523443844206884279996600324378454072443395050125048497806424970649063207518207263456016504411847396523244668696615981426690993098582410096996939718552186338129100333752520682977239210068015731445893920489364144896733770228005673067800655875577670567282812677238576301838158416070990575188926753190472908873197484988878605836019575743992052975995949303600128103505235974795021349768200686370615734150250994967220251770530043678547781374489881259122762967081630008124288772693116219030386570513728042704324771914861598388981906853824935685938249898806134520517214974241632936107107030969011161717762249702512404712729803094179319873581481269655632459108137058980622332215011967755372986259352111994351486513575695410378710236708944509167866033410193126864604804542673094297017991761874827953210279216510177189255224553611923445995629321961740536121344616538365398906054710051834215646631181918640860916211756095087749441257955952987093694451183309441568499384734967011192951930419865000461196084321233759456590809106503646424654330299210551745070829740447128645250599772807869396446036500347612346747027986929225460263484456576082204541308421047244163382341470840911732604763717485511993921634518634306328398343239480594933155510515028559414906965036251038306205902513586755221721864291948108623322203949571097607348377788510972261487427157672416234408284183121100848837911584395579791645558897000471452321139059864393174215339931063979990609434240592091590945656771195728974607267181863613475157332872760196810462109044798509108463954064333740539565446764002350711575769019277273438888998731801066167554411279396778393244308490858053555222630858611982507924475045706870528056689916978559411100802953042780060381185348882261061028946807853494939858401175632749239778721038613048607293066217806639933337301806111373651979030097088465386448652745400459201373213697755782567168680692846213649075128576080243990698103184721618398090124663629548722775724712549505664683186785825437123066675172761652659365425205030552106915770861098604564220279870991797461273101299781978521842200956096160129919475240091665184291191624501616087892964866967452534802550325246576839455704959175326994772992442053711985077968617862338051692978618931807187267866675452541937823419025912019851505773112800660550335257038786090149149142327168097458723721222425554282166468082611877665792309706871233628344065460774939984144079366960630243316869531506493941241988237539053690315026748067109161811986664546382180276829295099056012090255197850400088483912983727811191566079263174849022762156159702055152792480984652657420947390482954078207065989402387308908212783271856391486188432624298921931209549504481499936834987921186290492154952239670839923716884376369936976665399568168608294390229613628138557140761276706990905905906617105651668999555535403050207460381194958999522815824169068470394196138556977730985182616967695798331352797052537673552547178641914716287865636504619672649481025538501190224155498399872435805336684860896068685316043410559798458434557205303729730333250893127995639278283893884924632396549003894503276283095138730210461483740671028824162621866577458871969663774092808977797219423303058210671710026029364813028021069400783251404000045718973763256268738609123965771686375822311423881772909301865422485686076321931951302835911072907298068572834400710419507855447131067468918435285749075161131080509469929841610782179464195617452014995423529953553166681766218348244544469734947631995314724066621007373087825311357736483274956892946200732584057407327253928359360108041856308435420532773723587989713714808565541320458310991329460406413404597809211533178895240622438022993961433702105873876124604936207811350361236217694837001342841097733649299292491502574432302444551883033675727798271252734226845387296728630400916696661397497849705531775557682761926096326684184373587419015540917449612858935258376390276445522078905906632837739219908953898142751346360538402789237890926508177880512920732293611476291015432778109657099863866784655855431973338230046138868744163876526179988641682322791799009801891161032366043027555214169124730405044043903567598529895158713664672046378871212882685514937492172917285117881413480491045274127112494607341732664808859780181951503 74757122119916125314050626071309819202804214039314673574357793406419566253135973310030358233479525346942204975186165456945955525373094486043069209228345956455130037647738008566971204497043810419034757882019466765034129148449232061756232093327720881605948446762321785445211917151668991911812589593176307754744761531560278788594233103785614911917530591863504499612550685392421395333271924797468140413485395846477714615346723511744829943347029338384285977315531575640987744548717054975242095772585332454186867053514124562521617293384694719628554292032205305685756024526113932725268186636014074470946695993910645356835868583207902355508654420277636817635161815071868608454270897942179263838370736404790566748957319843367121540954034952601435082528090317071769263633962990783088447063159842569068809040106237231317229512165251901514022357668793066641410549174266153705632734950424533983651040224173591159073771249281205826543641652269918927669088049118431410168104180856639431011200674207934714343112238942581812831504478199101504942261255801670958001976246027361718256362901846704193198772378620400906796376014324335095977583628094926195839962867421083906245748704418816313931443969224052041957174291133391150569506407970562672591811684385272857928029859526441258391327039461869386509907209141993049579859710429079510270242838931239707612330144089801544676956903274497347372363880933147074590138335297878818186565567298780457560062988629261234284077017357467704184062437946028089951546372573852141587446333271495699305308472154564331852031379160679188443004692904457716928935878308141519869985051544488125430737223587630085546780767321401909951853729454214609373146731217041641091461702622759724557892125802784723692155351409827297109386171610312233935215597861903366159249947285969314163125716561283358969081250369860860225930293406075370614971256292458827040221231278947597452356239074943896830578904237094637108509354234112040022346224819174279744859267111425504631234531786700118525060444944617944380446677483628412165691811191299658923092912200570025662676379845746543495047213877745406632833503202091596907875872819755323272140486413937890421369133960956322949489796984446822019153154237060869200294854592914088230471311161603842753235454555348388224182478569433062738440885130268267819397336849020986592640072780166149156444955216759100459290556006720024339934441972116902971007947004040046578062134552283191789527375332847330557811002055255055392540439823083088926437382684785650146522387104954262275625184207961191527254956022825169670896517341760832712727943686161288826880172009288462878293866155857687292851490349025474629972766633315206950291472226105093697357712836792082289530355184843509798125770788146648988563910001616550311655063596665325517073674697633973832882744329894291967404411347300034296458619435931154676044809887638825987913193750753415171481967393135961502349837089366550649108106880297997282900675339151375242378187391662578642548347383016800257958037742680484651663094191253322887240373472011892280134624952773609252797780793502934285963004246607018362618306083126431431499098901155976586163865966283937507936127182387275083901731269120955056869780783847616729740137277384481933422336069667990611759465563967865978571149766704429226717258948641239605561043166237435497462392950448656309211657362788515842050198791549863986808317755924220985301989677867828479398524166347714763070851815660436734214129890922513195625042807073235839525604276806949157672206129853544795359492211312198982986513962526357513517760089013459226557619769195356011843416361900953541668861794159375095770845541578464166406413936557608193341755675970132548805445783719078844681709612393405704913362232925279642650629918845176398943308645725170691198551252752382979998283970622441768030819639718852138515424599694258432790707313456811896546713345206531644692206786985263599766360311959338166698141241608718646025155679706948944829219065630219476887198152922868519072459763098597209817418471972991522761609243194478884732038324090898598214989336077614115036740016197554412657321320475039965398974199494096719837123339157818069446746347741368305740643409281908065062292172354639844878521546204173767905824863393699358368233152642671424494090307056367352829608306513334710013579084178944019962158872470651587975202123460571076129263266731107204817569403806061616766544638241779477489084159929584129430610984916795764409667108802094674172620126000968840002540711428939690289372592031847292362480005168908403198328990241659644849905433632148954764722724452316744475219728897790598849168571817588422625306592483013351610457797597785312870195979741794724750978862665938965020728256463821512225390622484248524272837604975284876221093954622871892065205458028527763475299931047716535575082699158196945028077959384735967498745856050838195531341846919844702787794353640560700968248977624966990713935220395395582196284970148039112740971760154828156426026482692911679975723282983013380101312365960849817198283503503579383590444266813737202933978936898811155099800391816023686131056976154540279848379634113238702625524249004556090980137241974151139801157898867364557868905316275856731129156765462970503771176329132263376018611547377194165646932116534981348081523639575526451136098067073179440724072753971730561744225141496705574902600129570997442938496721473699933687156717646227554692492167521162831046441435052523400394846922522500048413161452633454041437569804691469237317427233535597511343433160863190598231782875038170323450761177040455551553178598158040910669990954541238768437943222774263506590859363449605080441820631235865181437477548246218256976374633226048830664898283848848666545413603770230223705698635115874657250091564974810151282096170714403914007288161516385575057637848088515816731088978713358444391293502852143585232530548782568737633793967598369976602793170369363020958436469032882084932645646323256406287572842752340520243643829130787015557968164090144689855138188499358311457597180786095532028336142072068938323336557678422421515467889892030757722694522925806971595510600083055221004286326213266506398634264454835212580528231466731280931181977255649209407938447810063798823003067199380854529597901608942482039173625209672402750945730215011981980755880497627177935218082701375086697996349979368993413918588069052100375491240589724649949761031532527884228848720239562813016279227792465514387292417672440424168587889373205243423319655222283827861053773448660589544000931648776847753906902747537869389898667203749417003980104637790429242193860211115893663148489103593613261788626212436345496690494229081353945673624533531815823186008047177580207209086475474834358997412967582469023982139921337707630124202653707777259783932747182876790534215207086309350986241862758369224415440892032519526883611660167778384225991110368630977163149876890605778686555028517866874957394742620718629857780328560770492951258574376901757119206286645749627915839494470077270200318741419773519731469996410624811328675492845186226683142369758824630373306885301198188914584881057252979914051054578443742301886564009277713019884341875773152305682111912186442792206757176208204491810778037352198117419372201003945068288210178056057405087081354124735702255829256404796276243081218851275239218298872541015631052424314638963620598278520751320442658543743186791746741658083438612129719940959875843688762608250911648807299121222405809109306729631942373498914086945271058290182232004328735798960989789853304863212560525975991922825279963700160595467787549125829457320497397574391948048568219787850882787700584514730586211695059708096833258140859469735300081355701389300142478503087592446997399223551111477777943625011345697757903880380156203926414308988539831397810176157274290443741083222671398291843694986800511160261252924222849281987427898409633738807180586063546433832325445612477749081490554130535581582419983130615228665396769877047314097571866796577212290372709847922369950823441080274161233365294437969352069278588362548697225409711995311448171234699145767393506505868965067605079628609992762672046716975149314148103649129801509151204343417377765763484850434367954527952874723152109194878674841414850913279777767583852019640157834137612090536528892215387552578644790175602206006244669332259470446313127741207572574602385584676309854431907750301267066130623856165182381854962074247972706213577709286784604274512778950363134588546061059325135438952577640493905739513499119582158660378968027834608039209087412234460008445256801345247390262361895070806965454538499838708156432842903355483940254828222538293961309111524734351007965297174938100544090359132440688220561987490424998472897448054696862927954814790255119987495053241899130234218973195168130229987444613843277562352023945439060304463296945101650739373028476216165693073820491320450234142472543292364432830643086456104137450105472347289901560844592893489840523946435737619176198267032387217453028450320234652674200148567684291260228357146132336790557815601413256460423979442350243648992683722291772977693388393747261628616113107329199747893846117051370730775626528659302923708692357651371358863873805842172097868827536161206201346250290931848389521844003906698100847100083546421370342571967679147244093364520785105473360200800791992390751839857308262259185702487349731884960087676942319954051784700299175234826408523693922795639793884054641493006746251415940706188799679182978597866593676155069943959715161983635807352944713524899762809631865412298994534728153094795078851042640828761930570533392355418347982048086489667013551504487301949305625719852517921573877907657965301775090285266491171796780803582188399589531877931059520083718208911497027236543565703372692025078446031202660985187370401502911698489163026816428529975172882071097277904083996613846055359164370045849280401326709313808781015261084930030327734763458645903822726189960227660393428487530947963042856521229923485640573508172044218841902455603990913949923012805288425797541926823067241792546399686377044512169077092630091018572204449306946693488932852305443478520858561862802462612358200328125379487042918174731408982559942868762061255923907962150647110847530384990392419616314395853619532731514199771127102291857247725657764049218535133261437365755079350851294219692125152387630110011633158904660332592985264657299165542740837703117108692777496993458674154364049614611450565248958551112585186091102644776603259616441921341343719121872469339995897508606571436167210026995001021015464472694927300476339351498293961731785956387100593490477882102833439606935317616484407206232056456647378544055253798317712257856849656580447638078839953378416639430086104363809963889218320980810113309231079730212073931459290616254345259055059523354305247525877753759678266538278245244814238685504592539789752012558868227938345979386805984845533213810061216299889553762889685883768990157350721048801965229877529372759032228766907140266575616393430233913494662874725357223472448794111042860823615822366008327174674616321234484372860628406456067473412926039894793209548356568828964023306056563574395055838751061751820169349856182429833170496837672119057996542066989458430560593426707357113568133273532005492741668159141989205997253403803056785329132562927778377021837882626211601144541228357300796855668979517412489973244085445579166240530369325660096867054645190717307389116307819949391670861780321968514442994534791880597164884691073256433049834739966516682058131125431930845648973570719793740349712938852104598239522640022823362862815471894991671410828178012355866037903279678321155284060488188090136908159642841963260073423892242780850430339082168802650211478460277815297116080868457058823534311147349116177382547342482896829555386325613636931946176375186208314956297310000503307864592325582112250403525228684266354203752862241153435779444186236160349827621208139042911011777890872922040758312736188161931901505654533577671027326998628868649277559991317260300861787185193695513067829666371002507445161029985992404931884921030552605087109892528923682779379834685636660921029847108615938997125024737694830133687128020528069209356617597109296697889557171107217843030915359973873842380200591248743287480297541165358609529483025965204145756017794733282549554887749468911953317577541712026454644489562436743829795066984203800942868404357458451225108414616182717176144004190488241479628608792802678792653650952462323611556635625597632583987964143240522691473522011059118100023999975357879088068130755142869366544142159209029313504419605576614790383998094791060235055937733354139438128333389970273626593627675989759803857381011544601640166747760080011173693620848494915910649365748165645823301485426436223676438963822124058208780849171137481822573260646271456745981387387441960278445791804748812538709157759462424579649431429557018462633270955072611114209964301149638360655538012702218340299343150321197550173501676420952307948450061226058668040205762432057846797775398267975482845204326730387191898804298829438262774976553861079108860272519363386586102365920446284169852018644000040146645310251122735818511167580303252296307548338093329419485551280769894091518078702130220168805329404379438471833487247149435655860396457664646820485708752835930977239300318363205673473828584498874087883755381230567040987139723245264921745843452401440301758418519310200419765019614182365073526318569798085336509709809732833117670175308692043774156327631135960192252444459915225097111193340815366718414701906806504076559095843353906065882611697959828579316808814860752954173672032901400797854732523520332115715762853492551100600236231958853475144207733615194771659010971604642365314282722481584936853973787536065790813780718380120305766866314219431874195382103862038438733205409244043152794497912791634658951548226312843113204884739159501966195171762034724083353786500028201492616925281301094970012958177590007741172052690268822157231449641574586209814077696581526738184378237107263624997329139529629640355037153608324952114771000803691540186082817901029123267701117781785427472477711033134226000520177499487834067576238002185968179968646850619398160359199886412228117905058950645432229814581564812859997769421523849795444347395518628124351574482231484908073646477930080757046788470248588214225995157058538834379823792539563396432085042242356584664333784558720246292417855986209244090412539263482529111642344544067012761503394653574346555286681499355360612914577784990918639579587777084540481996027525129948054690129787782774190273973398217781421956280130816806426789160844531559987279111543582269769693234580656479005218822663217595567770915796138718464824894294787737256553299020297231073718342791580677958444383018706607373925631635207069344048934141483870361027900865706926190926230581923929963181743415866867680804486952840286022794037099506290518511710412048850005748581684792607522420641448356065467694349446151475793134134500293262321749833147952545940261583545616561139150278254505458664989646925098323198973382011459542479811939967046192936790573192262267370530875700798223866090084995132464778030064786746521783409317046134212719740752549217219101053615719267715581862398704266762148837581942698629010107352617916221061643905141006919404576338811794430701981251642223502366573914310725746281007199757586302816120952374229302082171091258192180123170848173535978328645206079286898444714315859987194092512874601538640611532259436204311796539809338306799377019041574511577522215337993610323841935327778624598890807970694635465670378405426993407086465247709874726761778254739186522092334923536797335749922543440538717767315950548198570500761731579535721808670426673509050882085944208113012277757548808230411889629203426080581491748191949930569878109324866063228417097147127396966006794394573516500526570282516584762971719306454711516288266161378834621005508542354131800102232694319993841026699228928270624560195845669729706106086229644678167793463294394122968537757426972509055593302823690532755327384189089621927923469676387835065516357271847312768086920848506380628338760780242605145938296245953098248257056460108547972613169124603017968910475686783320294122958897168450537222301546805147163218014502159512646834909989996539121223865770760859248896373729064032227664316815096380948508723983709657576276209874821655557377802326700005158432183569457718874600256413319030564238767727540823692206544938681407200081096197908447623411028804821188622386567283664298406626312076711004481625841680411866125647535771787221567186842877066735096600595829269323142732477746502996526296008737065642132691192266095707463184092125610920834406758824773943735563853589128506392502399074669468261791524357310642248811973453572907396078873816576219795324709892729009519280099057290935289038057445314188070645457704963467042020865003718171268828514901016801292341125623068639939410040209596310890550899469238235465082270952360201909474137337302551425527254249637319619683696495042540853345923065554543134370276218241096718496193092921742608925767047728550220359993816090756512377269092741583046659679853630147661314685526637070354627079714629916557382869099790087217790444341988387551524485800196299004196879101669030278263333966649699128171923378481917200540784829651933025437314011147725926112062784170997517037223621285916562506461935683251339115362708768815925478149684273995720394104839706851493297895517802651166751772638838387324882810147632287847249213600543857744372478590922314317039796487302933138711673283757218985537495593533826879783072537257021475611295388861364219734257168063914361826823587683965922956663884036775611990459846556085249829511137247897668403212377030640381942001157721552683875574070963509443108632749158717510283489362638002148866768215654826314211442543545044165694605639625878043034429224885711807346356297285492190335348537488584758900010119345286695290864604865421333991085769338513205657506575218009740195816961796353619806019170101268835284388442682802356726303409860683977588956643684734393944030357140591354234610526340665562775435674208631479653655729604833442329932477770517230033315469566166967945758826267150211346025511480146717245774746454932031412325683970586077568547796073768520599458194955938107068292270330954390395247615611215884498151227173445495862942524425044727326444463892605040181864238158302155001419008986440910453218748598691729690355517114389439698426933946058974726386183849851209566668940882128530808627214573504552691738954834365538010617809055693932955017827925421814257693823970478716456618536050359842267434736652618844765534680772276909172438326017191543679862344833371365948453213108042707374527855658216651268799758913503723839634361075483615954568873832968501534226524857673001459019654884809711287594154670148520437713714513801112077028582883861854467774701310718232773421058754122184903898846940000566540187935202592963360351613985798320444457082123430034216696380052440585301987007953887438447010322681516770586426613360178510372504637704123078226113036530356109915297475248650327977749501124812837303069217594052455075106427779343394918744697961132879809637908219198375849235061281205029835587966519869020500013291855211601151015800900217955629111567202187808043847810596913021486894356602709478089493857467380232582020700627554267853253566967336582072039502131717345922050173315771797026195086131411362095850283873605945079071195454768636620570531239259086093544626009711013111360425571788190555009869724172235974102126342227942417926059447124478554135592680646500204488024423018005186592418575941738997735535642946352272765787704565170856001488444618697764584188762650956769562705786433973357245506802616921028882435615288890147836353129771430023222538656678078936043266093099094620038355787694979470262161308224345688681648448705711705868734981325762855812816051555139732975071759925877269805891738605419423526414812074600950333795398771749168156928182586504168607970190781680829428762773305799003540323498079123928111077413771194656576718228475479149601293753694858438217703241014864207543737740396439603671081929441650731901829401251766644639719085861699990817311215562963637306773275454707729353230255585019347603015538500512471762930216645714856045972591405955639029724852827917109960978063468787667787421607333827286695768843019974419937231810162727529501356821254379156074280463826867196456087216776473552634582227180290039431906971167400854902664078620546964805323918614475669626600512941044855279161485634024309783886052878774816034914258893843758998653321807510453065562071630787839131203199570116223045282487128871271729992802489381868789630480620580462622572378106363885167324329516580146737154313971006945448165233311296420846691084802300267186450811256477976553995555025655454422162408914847462554156876454158815850427801936511804437913338365975459195300428396006817846883180601291537229504490360360839081815772250878741084947156116273385608558725968450063554947820012474832572538341373129665718665589938082067169447645159915269877489726139921620037281631804897462463483494949796509407752008216521455983888545903957993169299506115920025814074851188868741505939037832357552246897833701078595282261467576342850275058784147435372880796976497974172625176132818607437646856835232496978639942455049546142105357876381072561819623898125523213961538625498368825606163561790836285661724364206320125698816809271189601703531200091805999372672801145174549510048101420974703362166090902606676834786589406811973710295605613899979385274336790523196588852748434801724831331845208635736887954062715520690807824405705942212597011947810708901651076942624842713901721535657455976246616228792587757802000565674727094781314861969151101234653788747090487671340111902926045514462592463021392751320077208464908053031217663745023482756720388638969714468575995694528014370437237569885910767154665327397809420484105987322591359538633524157217356272305940108807981593749936765132704458472922312653628570567720008288982043485676395790591645063615534717195638578460951032188806200920834708227054951099200476336033419692052113184183186156990099790666828175538951478357854835936559313760701951004803672528864085636494203787330361181152949283370824660989689658696484901390041363462988161792333003604226359924493369429303163755088089081995374642054655198045072503115057187996061743314811454710938693857721316294822604724737632105016243680371359778909786543251036871126131709599231192427716823111749054656107241326907353677892094992756389466365467898313830611364303608347207629321162452060228130193449680274880202222433480549390076555829211983160015059507957541660810596552646990322280566655508753720962094848571915563682833733262151494012365670784573868549534021704824256248822054721977454657253850101817787973648794245634903531419359153867388702580765437820462474937352765832754169071628630357643045497400449091772021820319913604355176071296887727936727966671424498574073205573258186997352583998614246774036893578007533196701961242210100831782232371361117355382601225214474224379672400307586074456399552664886954118071274595755889461833269081473469827068649233992424318165138461083971809841048630756361566594367258251159126016595433821529323956665406825011313702444499152216425078922069950553807413464671865849224652880042000835067660719432431880812913568538404449049339770358932898258930722392325927778303438736434988090712570805122451982204132507427621807935538534800714192254102291023294566275792757378790650058998343564600996101183791341569731835374572354682262691572223135069771379719109720721619911498461562880714029647977918916271865968305655193196841222593785981274437855328262785774582246605807489969627166897264508762625822567843788672477793512832125995321671804728616156032445585456166313214259920870094043889489463566037925480304363427571341756141958160935245794932563066619380970360713275595193134533879752738240104475371962515108754309292481268715527699239534274213871484698606108053511780897263272258465092113672958276141571981279746925708694677783583489632181296733389006978595428763890489852857334688034271570985008645571669654361761577066382529913703487829501272188800943083684699463711743706500214000879870798006487314782854889249875111492054861430627231169026090157696910476566106659557321030958979219094867052646527078895910045617678425389213625617385057161761601779665395347542567035993241073182388863026062057808516179605654841576533560935391759171751869370616912979425615343028656996998516904037587366152031578595177090620758957770188097365564778719254594733069909482138837644516022401028588429501802837441596663041287626027482372286910357722972268875258750586205065449878893790658552186189874051632421227981083755978772368613880427863623942437037612665322587498316165399279541428933362607603755929920154366276489819844041075295529472297318489989015674458568766772894714861374181717829939584891838610618042408318650479340809875774176269814076605145821114447739042955856138459538790246091985958155231336135906628196731458215257159751606092914031531419451377802517110669156706403983421411828563190804953137621031694377467703541503820474060941983682560982619966623219263751871873997722623843121526545425740679311436077458376193930532610150489872903799084617460988104158517248640899851255212745656582802188270267357571636328709490139939101626280302421113400301859788091432367030362643880860084764411423424826452907323061495069659189945609120853511316133971632241193004689929095411431338834226734805473123078943195429350713940018468758947118490040754249405094868889142805184721638776665103754590689143968949132322144875925816086751358304010213613782246362051822336422815234617417467226618749168234585878905898949707904992175161840603958455758864905897575750403581861523343136679625146279703909283954353107610552917307158191667901959679110514091709317550918043587012552314856115666034849242951169059787809849607968103153605985752969497640686748438116401614808108601562034307002171920608537554060236452527701223100024320629394604520213682203286651737540712401700237953715436833107830784659485534787838023348648650444685846075498216684821436897649062669953630270590926748455443404620552235003496942451075877953556219643599431810261879592953902549799230463727387039549168438068804351391425088374967539617495957377867253480476840258619950011008984809476675553079188659706789149908730102479968526954645310624327539856422681141684459890601087023304591488360238804170058639581629651613268468563145385310318209452626363419024439938299362023245280423161118174056211445097553117425269814509746026050501154712318673575792828070681100566808203929240403596586329779015438093097841889036887768888484852123512884356434907478293761252497260131450328277816102038834840619351551068526767360216281910475110280817568846925095793425557349958433063910033425527055479184697581064337274095350487645978446502998788805774185927673081922274533689384012394409963315428118214959650653550764759528586842015961609720664593401221688935474616963758746979051141473565889097314519364485005633644656093511810813509873798957224118292659188996204796461412963432478450248469392424366624745961452319625510419743599961565294884184353846110776530140956130623184812349691769995786786427705687942414206282541374090798026489584282291570084635486559320157901168218716729072030793588438798323821936870360107776348793818018596213313956938469904577347350511428328104591407696932922948229758520775970314439645264779389713298479763105402714579767256097078828356549490598615891299015652587570483933984553238419859546215227206708710026005895934555141012099187283753906758624777282538490933473747219039820463902244886160470177259349556778251020448611538030013801045566055611572583243446409586849339895626339609538170717205111555834490507665896432619422961070069319051897830482253170545096385682707716571316021439897197596581794456944555268890486634080058467510101373991830560459813835052794434348489594057163342964208339665232975575611470384037536391227422019851601135942220871095707512408839976322433576411133796297372701917379336008571945652636868897687717742730790295912618950111131393598360964698552268834647275977487311009590853759948499729836790585233910290530721966877827952290995176743529322358086813786053824199936685617541414625067223879949969810439548439813988197262082259247266021054125515890905103934245937653791146161225187842116577288814341132240150361002955419693865519778206351313717078851850422699012709340527723035645899174922425737510207177641723743666671198172535911248004999786045031102132606329733246823163736261845264752345289056213305784359970128964624116240326080983127447731213773097713084546412641711354480194041408523214351775884369145814081326832342908383772063022803160262169537361664710673015228654174383988762333691755241288767780476351902834662342412641013817999118393643144729873345179299214440617921644240632191690297623252633097949519806365446622799395434352565060355437285106067489090463496750375842477804587605794893135208385860216500681549632825082251949473634234867476763556698505858870100609015960104448309526334839699688707445401926574732854169140766961264635964876349659552729484074818838916041144290199351236264269181475220156120801811043510501058383040392815637372375187592413309996943016580982970702812950410592219787129791075673961038864830842949584678896909948665262296306378514814117651336084369204212852706919620722255851082068240258963828460957280975726051622691186532210997897621092105934598649447498531058184589612674481164984236764567343676096853829764116942411790327210602586800155243250691452127852730909424221543252175579085996016172882096653204795799198472764142224705108689673101891831221230652752838223184443954867276272383401683724067174061994424482128525954669338232138555320114255601408320115726901655955048535343965667073658282830131549429846564626581747675372162370939027617949579732906270003623388634235359599491562616742511104435947896355793855343109057964787784470789044284922074036521074457157216720357641653701712789330467285368651731739063739495412070051494494958962326021245731022866066971654659028025901657157585146246125138563964288683396547953023663899034040281296367577077494872293002722633511063159376173782348111656026125675112056078064309275014807615633403446726165905084826764143565494194846397778346517004491314971255137926855873095200313466982353119155642605872442457887588256278976558882058781463461956479679022921831449896580269023473226216191903576198503185130088104111637357494837458043322575556784159457375201627195003650908171641575303733120021656926004222171516101958921373277296688468766284705961357704043266206279506667451331118417028054916787826163659283799682219673533666246011109480224245059183525166435512716621189431500377095910389992373072678445600868857672407391813454021467992418430862348904558965807258745459580314613478911099527452418119774125180845066308207187392072958893470346874493883632372313863429660221444283850789120139753277406468714676534594202633177412254260648510677050470511811618934086495869071122644171280037307982171392259899502946178334947618834296042421203295785777831460433146150997494397871172340698889272623352225620866913891880365896801911789486043586997536133187460721753437554858411517757524031811911050078928199219339953053780017873720315692971541234766715450956784577253543995935807092757752205455024757960941287428726229764187094563679050676701854595525850005065559191464097835832020674933838073336887299258275324651736221582585145884805447019500130550155616367517503835153487306206608771685945323956548994947400508763890912315595454187120154543479955966713704773596033419628486374977242225350937334520813444558691704409445378061083618719956927158025907938425299888486408881704380364232626816755172769814420972847780404689028050095616928856560176815157606836594361129542532895228949809869861893848884274826674088152021719258436915318481893232698519601509507031532809126597217207849239469119692332514337098861431612020031359798688488534250366647395708331530214827284292986001360748634793543110114489796827042491798311858783009301517612537746734763158972707564905863344917042064756345197509326682025111042358047664130943679556436758835494520507309232763433693501256024707615245380126956398487035762938059481184087783411909558371860306750566195990284502229561163653263711444203465547146785518446586768283494308846667325803651633758762496322827912811656924616752225296008524502757167951334577326475929466704117707858503534313158132512617870088501410902735331405849432247219316616494715931472734026755048343558846079926202892404723959075977632025322826669325120817940045250261526947538192653924172661720093073630568605290229696655791910809630186841963940085991559015013123255744030342617995628777867214488192386585596848551481886322918403584232217811539047045484477764401992238636717311065721241611730147845003178340867276953557636098377245635300571952680754134156633550552809496973054965077010405526552383585294355321843154744913001011004381077083542326054808973013899670788583208274445608010168360419858435909392915732401668934732578622392274626399269621275345821645000966684543110736817474908078711110423127077951183347972805371399667683920727073080088399797975724048373022410168448190781695183326408787630927626700553666980739838442249493174996463286133616524279188862059609350090982361328145019688988616633668583041048970168570287419388050925857694270683743314693624167075111527345601134097251001692700111595511725884955550849167966952312631903878667751846235703508659096045231338568799523923675763819893433251647971242937501041225983094725094336275726917988521962410473185266852059899206405042012623325277274216539487266114076652530918767184286465565421153297209783076080773103010229744131293406538821122621260324703686547764721001619547781327497371817216530578704905901824958014163318716635348349451090871601310467279730985654652917048005394384143886632776973294983071980030907526926876600682104255703605579671526199498069325512304025278728023251117771142692811934196084942287995697657995906655517876350822721411861864597968087527927771841960099593286755630812924266541485295326370725381944041455409087404892079683587117595355419993054808927779608536420795128271513989664446577004849186270831564555804926159125105549367970775559795247214339013916856865914701707558766577292281900206869537285796235228559830438786023165618274087084162982402513989763535522339893921975733581754319065873376153722330730382647310788436479020384394533782561827489605653870422769737034811907591022285548248575695081794932837628932783758776689384045495310387628492763286192996979658602358138363720689857803128581809359077974980434007620772513607914363680908927068928015015301837125809328521165196174739793748128621017127467479957306759197012066208001885685975192190626366982353304804227028289652124196827625818774518983537595152527265450214412758581266058129517567135524415977465630314983007139702705793453530364406216247410076681021362677369497364896153436099355238177623766239068996082448675408326936768464924297582338327328977160554352719071772463985451024663615263180613318143734283721071391809505734150313252656588938278600432212494405952807872133770522312948216702300935833122952542544006147008481644689740532255662891491169974106534100416544384513503823020325708050480720915262460264249027590908306619118975001013346171999251196505212635182095657632842817318703212841698275478668199520304880960572892790475823297278592899046712216198089805964516746370138045744184642069183544845499075155127526711546745136149888911528825557354929058511346104553774970768505698967783736403025779673742844049828838432723395670524064498545592842635669921678718695769946677247154372564012555479347357994849412771991724403852400266951088537069752832712212613741250508291264403275692290675591294273394725437520940098134060692612196301332424870004538069567065747024609643655939412038473702920454412890567932016567532909813833770446615082183527244565115396827448717891813776791365070752993885179986814999446061916264929662051133597283067201398068916063700503549834752347468037620152553029839435346562141704175054121900817025492717939166803668537580624312807497954509693844955440798118043020137727409687141502157254943526590005320658058305394436217082262639562428740342792027588254345218596329941068970621833484867403614808580265877707511306797008310167129246602010025679021743358619473716532293866696659311142008539333238263403721329500295477288752378233499989960915936401429186485724040077399210472999593668920582664402824521340961750365808027014905277212734332168561269544573501078264582115644150712201310297307727980273967083556493047068448477856089046473489039743575056983521629845965423287626095605813498665437517048743990350216947399568280130360497783673602548430420895268069842568456848732063933410627606589313225764039610531434997659361973605028438388657808278370858738213379903660130460238008219057985696571642893335517520061349020301999174475689913534442302914533702847144463619795264131901460613173564025581922691735622177078832412164001691657389430902729186289597935053072550960986298117354235681553963100817065538487354156323310490733799401872278699290382970829784450886473654435192306215571218976384037452211269364805677376084302521986706374533951863805328489076203093935990393398191431329402515673911285758548840738824989826983219900499848600581978236006045543317625110850683486895142564715259483315686071646229476761737321696522481968749504244137788283037002110455457111438821400678614762805038424204131325810156992114200293767307928988333955541825192295002213829791748188034712747011265299093149933920538879303977267176680045068349270872068529438671279931306822040493758919130658245333774407474667136432371792003561141353926733430619569060452143355641133622075333425496172074897831723173964971963963922304096870761410525108381845801614272704420777143366122899656867661009409115501721913302682692232749677472650476510345253639957082171298920528621786986566876152906217334784850022072131009107195695892689767502609647347615581651410205313366903905796359258375874498230378853845689329388726150071903940339736003384050258443814819049153082762676182872124921900026306440894603513415025212488689553596816677712841748706769850134827279477625168699464221143197809514405259825746225996223487784607242867369028638163639401001602027729169031531608825898069766338424499604548236040033908548496575884855202819611521341412674007392169895982036448442202365570194438386352982222388552225491981404286963992362993158121585776891043575764850277472498094385413422460427663025244890441655252363566446483501898431565703849934133649910080622754467356389351606684868937630986352805224278097196965492935712630256376721404126817266316644659173148757544295228935815561207372351561952637750252144965926097147364573917637375125316878584012042515221110812849265462104386507295849977895881138939067487301884139919930800646558828009289824785217134503159668438217426122105796792493492715139206881054748211301467937036689280102110896949263592889273271874677737722151083215543700409105763683140237783151426393556242292187735304724808637076240744743370388840164529689806389510531073972577633753644514872090169066294122303687542016075647836520795396180202433586693340545404279094981962405921495441026345603592160919078721936039973244111691036605992123797733349366831103610979206748895884295015790484476420824889077463449476093112016275535026488049523820613696637431324307250168501055394082989210051327759350330989203686175230788940797627417652961093817163166845386942888193460881487215677992177052948764977946728850099538186622232429331542393009101768101940334345949241340195638760130750343388211716076404146208064991260086655358206113898940343927993181269981572338783473174859274658992792083549283944791876619837161914838155576436637727032528100373528964096644886517668278505681290231169885562484311496545221198098708066616081931401149608517776735906839846487592328213454936259867634813154053322257707183598825632826580489972089101970462373005668986614919065727425457205091158645668660530780179663045457333997989312144104700487724164433542671457308134583574162755280252361749477496541424512973288748353052181049343444085878091663453792189389333699537149763017843123925662382466173022532400328334703397795280089557513639931905170961593095553545741186744629106627587868923869838413482469985631390894819645553043866674074384397229213949061784700822319471329000107948170008313875967005201654440705280152495253074529921210509179601440178567600818026247482766084609899857412139893849930741539400320160307613371577522784397510969294534257918963905902047374177932215125117758872501939589552249538866456088669533977787263160645265267059302423927762141090625060363919917334792920616905269257567135981443526563126554556518762028993852575479199632577323485331874454168274814782189480238964156038976108159042652046821482165300327848359896928892716137320173493279624573938317006314336736932907405877381331680615540567186704863219548027977625246015440553168558571206697142732862680705936318675030485124502809073205947731504412214085076291507395607779617855221415949658693276052004750098858810260400965481073775654031659058031456865640903577556414185507602244692826818455926490863642751531552992647867027086568896384182435031185513179495199834441526055040309006218426226373285837738388537234955776903613854021536715494866025552867203494549208510960037502760809160804721486777884096182890663077587043679014974276012345854525990475189826840542700315739885756524860486273292215264575439235806697670734787091322963063942410370177108785202924284528657189568819436328931630264550136613588606479076933914664923678337626843033401856921646465736841870082216568625089007108981913174098430572509413185462952984776266851980869820341185116454747147432841451516036250499130822332918611863479000492658264355655279556416119798202912581557618458901789587242266012342106916213382987296836926127093264872382475407931750340973374941349092629903106662818331607265594975864979671828939771452736783240165336339706914325586345490715636091342984562353008526677300053518519761902457355934651636171204653305344814672929794806183424676355558648383911153606167112305185500825141924859126252953427501971138474841451315255942994194352717483036580322139596476766251662905342620335394598692233847453186164644048154013424442999267511539578283699982328547566093077309889111317753460605956032328872196862481052018310966168186470032273766933669629270319300017542831912988171099213261853540332688918599066141699039735273925822201250633989909062266573009090166385292388372230715999392369641560271309546141426795084943291722865102364413509265839324680048608965700678465467940114300338068928878201750374750975123322531406331375002936429550971354363928171362810501492781294342224790015609495869023259306526089149269206020489463825071852029319780838361553162717004284791116029712418241127801990529025480756853649520280646267682414375173844528616645233369591838557338033765566081957515923690781895454205678115737693893745450353698467728132280239256428576215311723969216552619180265198482414779717977173062199730860117570470229868063321667321921460552908362834024512712039666103465979466242528001629743323016675864261793684364863896465514382514690047909693548007312858378298585714904363198436365778604079125021059089580035507736572624661640930385745429836618957944723456475068299584276264343055974414074827280380477500247843654939598294140746598528378122624731401637936286061481854437733377021770842450299284672646279997272223885236815036437809772031578979833474492038115152040692573792581723700261610762403968206432097768677881102115079190075329357969112398797286088701377749427958425917616675470464563194079961715267058916122452436151045008433769496333587145678110672747278998720788657470548199338055141237995253098972478288405522098276254448718931049315542537597281581444244631796769642502556164309469221281243924109102810349379147081247798901275195076038699225422721431621398242491565128342343698259344644146869407898777779768647380709547397179323204061200644081381590096497116458607299764615556713284819412036131400119734505683357823255673290507557724687941274732734385508797958828835876103311049614307122716465284674972195894852083180147306583621050091524838274191871778119507277026488073615952021603435438041380005045197135194021184797635060276170078444928372196840956172281154467581073274122586019777462504188190321443988562861761800895623608769250870692196858664670739349314041496996921068885573039439736878161041171382437758388815802525795257183860321927993199113456820962308620347933880551115387813960000118415920396983450946962477224525119479379280908947896809421116989541415872490410367150680358177242463841400863553192095110935333352201987026337430755127323013123585690776368086479244324320077654844893251505236270644175470965022817641693451862339227971433341226259627787500949414837768974466073185385692869988161160399805875554596938843374519368562721793469498033659823080003391851388292167204125749416716802838250689286096466202530059933443317418405330172719437660763146559048698261188858002217217647640380299229902860367223863242567176333595863936800341689545291215916116249216841548864803732985168329772417495304588396162113869034614709635081395558713114977886816601532183244073855848288647125504548270606542459146190629232146845017779448565739490895427469224287754316968078931309880688686480697101403402704618271794155338558536281072554923276265549337527623141162230696837928946473672000680357911449519409971178626850976399042926132569374067935872344706861646318717976544336421026441558738114296980275797995935107148942887875290480762602628709928314522784366471307603886173275063744955660849678049907346981603304957682728105773987967863435466451317963725216581825697353241249492915031393451320411763157266966348425469963178123292771741312180376726067476906979787432656854701501652368647179292392560367087708270884533601076407047515302729625167064252655161389473872351957383141986444938461720430867634042739544401498542681080759011129177155706575879117384936530491585814168326380973111584786960184008564330251488143773717936168003641276172542399590858521132778917287895152422764504512466276283411793222308702053847150559708154972060928948871037846511847985616887903534327852251979068253311928913490386234775254673416515965898978860931697177718655567476990413778982389030428922308347743448569834295602796661869502649862235212544900473085922476399250663310396660500527349900111490262028530579964022391751110625912861871528910686040385566393192477058963183838826441952824222110835781103616485199015357309942016653239745227772663106122436968299037139457003953736415774379303642599166611615767930340621946399578930858533499501464858468904239961433217938789007618630806087341380172656503742538342313913597009639365342416028842619062382822008885104868063296198651064200322063957819535865846522709685321476125448509533818194776418438539851194108534464332239435658225346698569716854854634104929795113551907416581764871966783297846859957541913578585383974890491483303676627711697954723042146206446611829411262613121401642210462776975820709821274084976793178877122981544748102561269215896956130905056868122417555737643521437123151581851469253982915508734823913854143101576297809205741263061480024554418367955888348426102276252693215416909551338866009850563801260499401758190308648904977464733157051005337571451058930969030209422406362348574315207763974217500944367961481638680135032491504813398744465469495843605952322609887847151104420343721819797572362054037599158266235828332159444921386652564058589056341387731008018978478307251276251949548136500382135472748707481743643442157887907869519014946760795992558929100995250405048621919581835501421998951009768841398294105104013309832085187804398884234711254046127083618797651458961994576453791316829913573877030129900852366358802734485289568033715594843766741216104678750723343669576666053105547187722835695269728757546311397817033686362265921338440757944328577774032759016296760152838299518896004234432517199904209266217459743667670708977809062130943566972380082975851166349737126095552665342755445177990283647975686894439806504069625989233406828802376306461462534339893032199071420393573710281218207019750378426085324596617994895189994327237590229907410798044620666470927722279358148396388120813832163123101889279480331072877733795436303247951202994250218746229582934235049457538173767172670752044772788401580605945338311531794821994917332725083494819833188887791388672557107728281658484283969695301674469503978732280587739035967585942642642041388764317150713152157987312791800580555257514604641442848805968857699407197892188662891536509409209387474429366693117800872434771598591640935330230042761988616771303544673045857688520780117847969933803995399846547621475194229576809139180708942865396457142325210279778309182150006456746457524065754580285745170326474424194998522342054886241291361584264396889943482417092761888466278048008385088248768695347556311117481294828780451975628105651385110962793537719080257513226287997337838913134968486342259761527678039684699397613762311927282487927764183615255205524293485432645127514048420883257988660862637303969675785139524375218361051259464084680661620913717127058226633203188453826745601621375165111992884968259340861643077269056295297870831239779502656890562234763386099447792685570245689265607089948412195312880297578905914502190256147365693872774467710891183757407232202828863211323496981055505587772130731182803881519567121530416075988838107688696456456614966552163026370503049796588078636496216683687090379096515548479871251237680429815956581915153038037618012248089857424271701773172819131270296563979856624611757467972323296084408296139741986924456146068745321152832335621199728883682148858841933843284870169808474436768207795244810736363422745617207543810744813416200896423338008371620166700182729285534785591858426893961159323499099184542262196663123047669456913137436266290146118982378044324558073878724633376417202082110451608318904104459954530738254311219379298668832932284213135646078257804437548775257784429594024288703881026395879684490633278529089033143628864480967202156695440547716229978508007855782174679063947328035588057018562335062593715377447514174579571836571016857916419233751600942625235153372791869894865448788705182110108061603220338853720828370151174198884814691134351960571462809675164139791605240763823407913363549594179086971566716692126715529207391517185157017709768476631307159729727441575481235969415956520620633945888007378118004397767864361334375951766722961445737121736149199917096675582870829302070097175606531084306579761053146777466818594082069211065496646043220090127122065412425368947368815735852642605015194594698718027876761819225449922583326220673553592075718026877230458960032440944524374720026316606913456001629545737424163925536971837670403554462873178208397838894124419839335478530027557403623954660460911195825729802487274945204739621124458316637574152486286836347363809178461073768367759763294237900434513785026572485693365816855122091473397724197977824354247025454277576843751218233876257802771733969477015394463946902474878594132951199990832000974112581208943128278409674997355537152158397986499566400608980122037069997079697095784787441077941436424860455847820795023186222733584897262116873220994098459465067901554739565446627260564953953216290231748657151047607586898988145540219198426276583448297330033225605030041912894612138297488998916835697544293544329908580301000181766982692465910622114348669491486287089793521368026733600145817036484493235892497702368480529051803570870547351040500999491568771186728575460497085179121352825261515277880287170520637728872837728933158188637259131958223577081121783201453554384383534484958136140532398033439709705474887598110478251299836678508877112441921083458180400602033182858428389698865171126448736761711321087723145308355799267436449334618957388865319198400564095726457219227339990985455466865664903600096772635509250344743691674049838095152709872261400518735789862368345567778396184626362262422599736630272307582847579750107505180789746568532037743529529097550634338756233872312396043533065140778981628742169902733199302949031504682773404267015145292029003698576804111579149768742912697699536854017626729463017221286781817566697726537957720345101640036615410634836585257494585312491393595454775744920907156193579398717432278419967613639508040836400155898227172687501031384052506085709855834229259515015189962872737035076267230441003584346573226996664884937823612869282547623433339992704324396960343736188162880769800773032458353485227991845903594741398578421570830764593598771104312932940652668086114204524959122037337838037697763519659812439482504917301240386815731842313776520800655697489659556730076844885525060407128486981877212014806008572248883954796878372584419214018114204350298715486589059168785010828342845287261446553633759212402773671458729788084812392801304237277478263138359741624169559229273837508643009985619566313894084690411943234426725287095232630810423206758569165228845947860022523812774611690626213786070339010460968179021259795025015345251741547049217714211447309726111319743572654788919105649829475672640877503170938341197662109005731938791804285712348399197033939932569599801276625121211327381574565964086220724180662210259520112187795001640836461054451764054470608993592068154340406688650863067562429675127728314588746276175771512614765329449400187395031460205226905374239706261351404515125395284425926490864852988794494973287913846476622797370781144281728532601090157048519081599092465959507822823818864966875562582470058749598976165002124159887849705101923270032030923309925801862903013913745296296218384504094160957380765300484924778432108345474557324369784263298684060178789588927571797364902850796722002303525202275419022330931501339845017960132359829587035156644899764214081532521129420260102210784693698337565695715231935667329747331456897622287449048164638830582835220809867284997823733694915689893883001336919517586366008541577670868869029341324590670390294386956262301655065529054 -> 2.05318200134488807724774368186076988466791519219367782296774457829757954340464082672394232281924838672413152402273362311290224909454880644653605168412165330150508709765039531577932602451582748445860118939589166456896594433247222892818847762336462020284699714288704770852202965379606670403989594698574136788999640323509349981639582463223920440389777457650668167491445907036125378254797972006084372453919373516885313699625375006306617132065957846197046355091422228304731031736031140926121680991729415972537233248218793547384557306693171600202670081283717874511294795944177110280147026222021686918440319945001940868579714163875404987032369867284677320091497940367704214407379379136516194738146607675912844653660287676222434392770117491888022472413603761638112068203745531934845765918393791146108492220862793732950450450482234496800183864476949670235535448930449948670790408093376122865121430535363689347992624808015662330284431259940001267795187807528365373472350479923304756141388830754001410530281760188066213381243752571391180689766021006816609292150861089661172742600022147313462429921709694070439732499954396693472914506273268745002049886681407775664075123894122659056114678717213280891712232085145750957636684924981811066136282840366422141830576869230924094945702095754031982684607173844250250722389376214356770814247210739335693919696124715544296206826323262716974669708924073309557947257748775001388855799040957554328687120349218602446251549707440720380848614386465540501327590379384095324810597961690305087546946222840571616252616644882949952748787605605421032587033768788840461714181135104785602701954761603937366600993594508822371981297868588913029462693749733856427985352165752939130994810594722103813042650537033488266584495416253071003045232145004713012023443752845615859658103166870339313173350880870103666946417108222207454100663834245632286072610690948771484357588960639114891570468897408949069726137995045357442931216440595728064623777890799324502381040608098683799238771265915751398984928921597057338824275429496823624152423410557011485005380717114226453757140617862130052130741829584170490553814249028074190946018371937154232420668635786128476942490002019089084079500076819041903866303360246845159703722255965863738966388075374801779091465847703290224365560957702736092492759993706519452675366052991168809961441815041925561087336555115765530316563656829118023309650324474866461407358853721228435562006375060000397818970155363666649883471335898639998832462627601845840151072760836894378780162008959921619885820833207357586971937312967820283084897113574816538141487517596729997023644065784371324371344909227591369847995645068285092917161518422169063277979126560732864896863550956164735814797193784676952740602565086863256732897330756032947808257398326648039398307948402950194958961298586459403123608100586496880756789863065949757675100360242712532487092861055717071439414953486735251060426315141573646762520563236535299954909905045052213873785144470855004594819332294303513781666509479535114084385143783476271735167812284013583227404458090073757701654959457354108573090572956102308168364416989771188147581684136707332376357054093520673359060416754585142761815995405415927193005187273781604473497329527045265052351156478536577402544865027906301194107799349305991176445363455177074730858093175643949930870178231277345153718333822977263939859483402652310391104563109502959202736247359297752765488784390370142642715840992943733709892237955476782547048475959424412007830728110136512590133537663134699478184212279110136095425403368743196464281962277955445889614758511056636487364097826497648449152980690967338328009798199978040915961743593357042171602548523181682719925573078626743177892988476425886087164715505498102697340011565864652983830867343721791904921612592102632418306741416802705503539239576223644125485630717782436252015122526020657898552916687804769178264487559819993295596153026175840246435864731520668201073946300625159873219687626473491435749171410240203897209751618873049124731417122741548994205452225799871402225985811783406296843527969699031567202464699209734008560405459765588082344643410485333936057725236987125239287072170637232638264099664803040803005274311046494097625453316551436161596453104593953839155501768356523812792510003274019377133278876301213211092739393009130410997593047689751928719104587253870406033924500663199579458676546073071587390315082084294006758967974683620893840730421503667714682141635818686041492431905576613137081423750269699970369775742137542469974999586544949586709803964488688375703462195827066892906890398818845134079412380205832932520659463924720823099923381650197546591267669268054747987019661633477665024086072653131263157704072244269470660283837149052693486363463833767872589592190254009175360567867998615305386984561122269444098444339352639288107415430954068246176749480990410696610670752836056967825525848746078002309268367559664063001242092947589202677307878618249879165831289886328459321025540660984298955978518246078993920497221037261590592421876649807433106058926782428031573928040951383100852644542756676900934160434385527376069714963231031939916682221633564193345400549525238239462011770720254005283350472940710251205270564370805735123828791132446497727116349226875875983985628847021406714400912510667747111708334700066999689254721253180608665060068230591056411458703445929308377060146638121252468057801860897825414961472950316188683085022302512668672347661783403174066902477323235394735606477128283282055178689554797662583358436097787014456870521735198397646362091390788622724271868811970913990815058656076160772721184015637836003813788122303143826086210322059438377797326579288212505162887239522280795497962613383591516964630115665990729896496001107264717020834336103987813429301360891268673486890388653798205571523592986057998528077840796558115283025712415629132069216630379619776647069634020511095935298466402021396123235119127426257572510509376342548290787239450603611596080864732727825731019860578494847705735099305309644416185484429193127358293076072460453136335929617506215935541152902106049645113415134472816291676126481277417212549814132234577258732266706367014459896961045735710399886683124317276951125810673061041893109619313980292105108077024468082334851600548603442158052632089778286330183451087607157654920629506220254655084292310790642739562561560703921748112276608122322794243070567108268297874403894143395721022610954580954207503915457903606140042754771303997899745087471947017057423403078636494272509742534525729495103256506961805250082867537906839052981500137287273497297280864570091854024389655060469286883149132103792526173766696287620356143873745109201913830297507591442330695155356297057992720731880934326579610220901002691073199610104203304704374386524318511701620977888874390228039578991034296189916487050797892994543778301155055371192745004117388074074691352029978442139428758632751107135225707595333230523851459488760656241852315805956093048556413870613255669547875791795731794577246735995598339359576515440772331541688883431475354833168211497388215114850654606430655662243886305340113555646679004301085924592260560987935175894309399748655838223547260984364482259668570115378338240292355500395857950543065489419004489604170973143704357647664636168885637996103934965050912659243873709822602242508050865424396176205438442088653455487204253588129563338422004224776404949123651041783579488481653248964073169382822711107950877088219128705955367499839230110569433699521707047601885981199651867403723452299977855261865513596605345253293490968358373034533342217307765490769765600210542536227573451644626552078898760131070271858767403713038701818764364986629429996642220444711075205432519795343309110821875409176990558111586699238482395964714919194060081263952604817016780692992945098610562616816259745179150530283308827867610167503673708351620678840633399421891683046777132756446514421961954455248085745765383671520927453169436236655554888715124433748649339621477129358272041143297150975485364595284580662182223050587209155107770200185954461891990833182739256276718160356089827333688040938702953468545002107349255688007183083739266833945574849666131100651234006277970885936677026453758229265618150118520381236532107481141276370489727256744577688999316698811972623194750020723357946298058241474995295099990386849515236496988350389533968344834491142189950727489462898263748931700331994825822089191774317079570346795945591193664144933045170627336157168146881230091477227149846876313083498176642610188643380854093914329223694402913079675101891702079931558039102249009401412939089617004243946123079763749027157064761906613250597118330552448113128439457606650564103448127412790243098973535663561566081135740063912741049250876517408499021708052012047650827607368195714248171492241419761738351570162558163469463069904727463142809733571056913034734259065009289829035336986558493846733203792882306257163314327485793872878020499990220969297696172653468692866972049571884686921208342268356462064483772670438767239308360300339114381756482208598423346253939652029473908177541857380832830927459472945819628130852449608158920165815119650182994533480171612257804847300387433395667853349156127722269189520805470634705346548820290429891299750059849067121430882580755486386332720199959937259099115970851799078714691273235916903377678912631036426382970541215437330267835169636320115614250395894590069011300162149957088224415280749128219523507159735825590503475355346164484581322083786016908748488952165362617739015893768100564389382882825677611680234341440825388665302894456488307905977939964552643580321449562404610963892520103384371364751672108998193029207937908224730939122526270218946043146721976592104499402510267616227728789674742161807100671991738402830016421880697663458260626897422172971490329104635792268826507770064822141161911682339166402043297177196400680957533602757796671558903616904526673054022942107628655751383143067541267444522714340850289632011128664197139231027456865961640449449463351880626313356805808933056268012797354844892739978292296102148979765870867131141188810771987252649637994831521256207638336943418537690609083653908873562361315753433086137146465482990894346553205230703608272869817269037424601981905112266536133741699281518003966498306157867741597367499405495611789656342682876218473591490287587700522291493050727780667310044370681439169066466097724805165615754287390933541744478960822377283275451627069885628362766077906676221913063709685108223451091009999784686200321519499722426681835888585755738993173744556071923049022419516921653624575459068912960672808655732758142515196398520726435781531508526664666053859676629873265166643805802989840709136630092750553336430698218730179715297781993094697435144417572174848869935146421553610822248286500816812700777891816972118627979982054390528395727644814333290404710520065688351115810324794690527870012371720753795456752568416741039532500517805361463297798389689198994422705004932498815841268608629653581328124220607920882019078368028176062859935803077376529864661147059774488374749261740844635772123516356506897722361433362050482183309288916189266669766049126727874966837754065965626767743446231467994462277634515760193389042236816863486005494635473732337196261507604866262391593952526887252605492911189489448391581904116329916859702899851122942210311675963687931023454462154451948576175074363247017096846863028036595281161701624731965819223761198318868650571936818379472317198817137481111795594378944346959299580990253721849826486289651117666569509253370712574333221534255466895812431484016257970176574275964573931859494169474575805693046796485158696726110870739126565829720846998098584676709913625642381158451097933906859340655599561027027308142374333477129643268367005948077745448831284477987724546712008068807336101322937154285526421499729336943489753499517828308407747659519211348449012437449558262119743796059523060422252433429684110492406474852086517822470213580390255774365212776711989906175004123494173871813746998806039159749768268555461852061719898373373703081547145648080117111423206746080300185137073764850049373633298646589986055037849630769097578531536258026935211429975989725171317381513643952890221423174166706635397594183117963745095587129119797807956512297725333473651764877268345317082067109229272562342220546857108307026856836761374743572419474104729796107913131293469984170666652581530610002650654875875454797926348766882128991607701202134913266673816367869457141082335891276371421634092909706129291948699002749157588651944405374882227588830483532606852216981672964897895455199813236005497007232436934640135943747721673878465402357892425712616391376173685163844634130788848915249816662245758118120064753782305864526191918763123593680731959367684156285472833999548252230295439291325786294026664650055683285545742564415916887519580970996825282282778237695619651694641263042336736098506554120537530463334571666375084710330347707206062501077845209471103726389819725935236879425848506502669408561181127742055375211280878109048028409201040834950335393192039962170442371620231382324680913872614007219953305878041771390444738630816562506701810019766622833117754849151539143914199435379639405372197566035757691136449436090992220649569265022179540068641620524370953682316373044420840195127483776395186836553479290953948883408853633644285155936619283558077316676630209934890978146102495838525915129330174506970228519027394255891909222378144016216212751055685956157283073058977991783037187979614491168120313987951918670141003966819646999701148607554231638317675246468813001109915707829769181766278261180589883557834532637810228010841367714902639879920680462119015308185697040695915492570007299655493473256481200952633059533402072666940753343679519270504098138537925303300882043379769112398233241243305372224528641110444353813455348954391155761188752703623881542282548721221635577361646548638886004226405459606998711535464322955255099986547774977215194776063793447777870516360545743271303618359811662683952730514001245452445614630864048950594697013598595830192630084925296366836696854924542689416564814015773871367144808688466579742234666549405891826516779004719188989267348850206925818613643954570249923268722097493041464333194379713355448452855753625243395957061900361704231655874534968349421712462955150643407527660788911677038180348284526380383942277968321301686679254489651297449752724970040833577382596524279212691167680723478488546844135547117294486386169532755518572359413235933409313110955833817498366171884793389169538798523749458566767179009057974837983450661357910560658894707435364641601484721905827672558802343621491952059606281080512993099207175278900823783410477922572067871338891579037496757829542327047194562850348898751806711878042910053861050501055013544741912653936081251790878389644286345968461153197934715593200961069118606962236507325210441373162096492620113329155374325832493176770493900024981079697736462876187602188533248037878103683711624170733958630473808549709903878997926709534137781637830738950714279905920413223480586037358032006232171102083927719765149017906708986337796245129401806747115937732499076396880401040997891149547737566121756827871860768104539986791406206945485287368291055312196421842768711750850062593698115841980941118027389495842664699119768526104357945036170409878737965456637633344169297324342056390064234884848804841850035658282817930420732478773776632309782332003020877930173191107077094536026482943627969848424115358704052870368397712389883232710068404532893402535234426299882676264561247411243152304487164878153082377528880138112810626851242164180872280693422446677454165553259605155466837083176348868652255048543777242185197377280310808045002878618445236990949738352465218822757558342312042900395413822168639759734873568634793313114061162591803339683511421269910802959916365469326100125502267909784577347596753097828467496320441420282643282279133725092568596187163920345975579464281664798103731885538917543438061468784413446634583950579833158806528116276882737351000067906210316409012078818687625558847182781580365125266816395214543213877338716926969404744088478464235478574204756436057397956187455615514224290428007707749896338134944078422442602034446316133614131200675901890963386422094095480276442757305601891898912799638704955900505006903045662926796932976146503989737509431270025364300195611002860763141896145520457769628675793329992043548820147802400856593203065313243434433508759010383356076752413094785818128596219312257176101007793072404433304324152692121592942500302880858297084324133122241719835576281287912373152574417176468555985642811623730302586758538538758661438553633497160820474780491448009746652303485489287848742485638714225750582255538391409045133069351008599762043370471831599965438877972128289640178839589933225345018085481124379748261763856248874375684430159121683083429517325083423038543343076945100042164823913276189285789761930469875525144098941924296920116458715347452649077914029652146636587866002682547804886621196130202939665210226222325008644691560646772748139612859048649590671759302566657184775900622022230151670328009281559569151399009213696648752576610223335365961931255841698118049903281912525380371734006550304326270901100145276194943788712178312506462501996292637958519982535560664271383408488916339916172673321989634514447775355599681455826080434144208808385406117434450140550103790436792846509864088839099145790780454827962544722171695436292316250523799986485359128351780930907469036033101812337333554791324608702867347442811580765564392825022434448391361617379636601110528073505036490802684365810070069497104113665758706759951310387968420895169874432220840040544279738969808923103583889471848522817224254671604239865318069398758369693216906027471220633448155861767329386294731611991643648817504621785505802418175434569525889602572192448666405739555346641053918639305282256123097058533959268036955647811190525631786052044588032937673093611099406543682143444052819489916219927273628594942397016779655624227817134782858294004870356603378636219288927644888207698193065567439305190507851549026451538814442723978963863343238821740214354122971665309154879606365560754371373947590636172716788024551519330082976976994163466364068828991145480075801379904682007621232578283427580478999855145617557216106975300624119533904456129935742230494788568952248917321788169876880615123517904440948611827015857013423478806349419673426684826553249843198794877775749084259285986220103236137827203802466113824496452607198066353627741294125101116625058487423962269444847381190731055534422342571514756839556780727501555856799192637843111823133280446724544687323278420823221393241239109863066442558657844301986984175931223008920556395470288576653610381464735069568365734343278013165698071088412041160301364254839692077584069922017328948475476663146840965955507526785490447004924420874158047055172216663876521373289449792668889873556861307605427623202184508073851612194304330139726523326840478565849687458931969355005879702960419966413764278671454355747146599939283710711326035528393884415952547029611083204262995924475416348738661786557029492430757609256775568608907134611305761255350517144512175307033471746953198374618393477741034896431657993650335346238217815716219228203263297463458386227979969120476926157737006991577219218496830498111838001159433747154203631082937756233734114633535632148488704766985765761830716505078920643079944975955540197236810493125515663645968918027854831224742223632338224056263435742796942501890740122523315182360340984402349559472910116849738382884240090812074647731017242065843313701161314557978978211382892246697523076794871173023239923911622069896665179239677037163974125681726891135976221296084675455960103707881433333212658844179049105861331746349954795521851650203713266833260189911614327180669454009459931896565547926072675573054344637761648800023536040138557972943166820262068720379244447572510612506880590314395836086588497673083052967015697820435783854163274292488806055962248172763761583626442026778539164311481549738661275792187035866121648073423586062756014422500644013858845886384550446559278204952124623370003944721697334098652576117650654327017143701637762880437385254673371199703705084249121659486815381908649226918216806309693490633225860211828309027631249416806409565228140557048118343328112049835568609352693398933950087827528617869051771927312024912821399666607680591924861939349672026623225327137747565852250978142175888472930350139595837351353255908667387455892734031552405162515596291024112536388533357319478806201780031016534268844656756077988341481698793554019742989904238049055089111001411169796287493336445706665941696212918422021488656601977561508245380515519002403281441881544231433892236622278499298637560524677869948023219731008119631913046813489276536100965424807704300362657496158503381936862794560231590812751350772666861825315729603003271784424810180842642618073594303666417730693914040941663129834143202423279955341640001682861154600401744619875043080423033222739241342322446751455515886795744705263018416216558170954110897844893989077731605106305267361084548329582989052172451488669617473746078071216582849908957074360206833647889848751867364510486195414866377894707064538348160913832309803468867578425227149348753136761617717427685312956564117211844676143777361169659621821967551411937573186209567092810684685473497843462961661269280144295137727555654569182588741366464842195502377576446795842015644065291901852172890395269079185066250721421927334014834626645482931179043467569480969178461588960343979932044710406166349928557028492640978923543579052776883534772476184100525484301995240687409735148066266061598714925885123553811163432624023377621884765888013968755969356447424984453200921872055468420640280287709233001430288532392643509530571494426405099580818934628539724187672306138573496313264875753303983398286953648584861069443171754572481225560485419325098530356050731918650104963910557515326427827540307769607380831056005771249274165865299104834082649728216837566241590055563665330190372062408885715708339087628242225760165441791137430473769268041826701269653235279871874862698241089719591614005455351280495505165217004633350113124951239463309104903778276645637476920796340298501289847933163733806306547166923412151345936418142508828531801359692823114330370271234987894739962866295347709879798510091249159551342675451115479505226463774489730634119821987449959966914045198908067202316367579100804529008104143402512014925587468819939660570459039569402381147330739299131738169300363782255883259308702569645692018313573114502222468150685501934758901722175540805728865224059362236600107701777876897545224214535606843877634503493216784523185300184435148614056476209918227590839472584242319601145229056060153156189211946279062261521594949186541369709590312357565419039594042240519282991261241081461607401597477435309779311697718974964004616529674514744794706156882968675055310730869420606296652387518200332370424363167610697805384927737496523414093801599822170690362215841770594603178078637282450257205841539771574030134650738330825781880934525014758665087173135760224891360581088047056541781641168983524780985217923586505307247546139051785877761191141279159370865907512075598419511907783240619559205404971433921175782148411307375907074076844386828771713365079355955540995936056252054045506958971606544805940507845707648922700536911672969730591976877430596435542733947804134188966639001818940815183361767797071410916067386369476439775061435109368741396750495515396376319361818862644319916492119703022753999107043570351668591944820978059011886253445088729465594789063601217012438583350498655607764477334388742580687189303179819420981843713045275552963122906276087837429582550677460481028193667795756577655700521802490154984443169774285072339212772355027030923061234425318131611463078755389632426134743924187727702746891749752160183371738702166080447567571814133714653242205200536579470252701291556691350458151149771066348227183257160950870972391933668458125492464054502267848157780017754211787933585096496990239287072752164610345283126702207520496181123765906543621135317978038634482628941261863424437230114773732950331058569061615806059499437115265743692708354168771638054254080376321270745317154488997924034577632877059867994603593905764726811178021709749837791166941020248260869238231208988216074353345922921032960140622005393770254327248936943533946796819374312674088959829502259435628221924905210339310069686990453243988322346161062854347015221137007911718930941311378302390707224472368861555537476651545099483693734365044517700716917495407987664457401936142267730633314621549453721318458374373141641646205439386709253429670212989207335392674711289845241515765268768004890545660478379548975537257899385000235708257223616712341173422082067772799794475500164914123794946251988117479519667313634782672543831355516426223510644101055049523070880637686414082343978830524489847596068166115922928451714360016749187704598945548055152999661962347591179012281939060835382429679142672362095532602706289552495247435691068003104674362327214828007046391076237455319643159220726070938580611975021095702891024283498806583671136109876584005445050542782645990874407949010052835222988239148778896894946956310496003258884214211791106811087638773688766540947376733514221921023984346556937636324778688878943908935216799583258863825127343812841268884432195161616211887485651960831221571743817119170319881242759251394744175558276680056969467570446002878838570450482462585798659991337322496241438533813337970261248273560877884811139350600336678806155771909098224632116428931275183291005188392652590857651727380468279737741207480218222228526307879683369534727891332128556827992197513823810206627887274593441937029171975402592075786863956920052856853570315174264980459100689784239693082056703815585190656583455778726752135244370983811736709818382405555852876338766771797452399425154387837564776112437163957986552787173239398264538657519771990325852084631620195593484227117607757687193355002704634917585225465886638446555907251669294324733763813200345704689549458783213720882533871960028157623724820799876317632394906788093750564266253669672266597945144151810197297801028900257681599921390611682635120546126276834214889267100959781429858909098991737621460937889109172393096741749564531411196480482539444681609747622027688487707861268882806955426942967122548987700695939808723748488192751490786135402305559632892462264009733191875162561537342558665511396641680585841232295701065979577649198168000186021837458661542860596454520865931454421412629929731609620213340834087645631527786759846974351685706813059389024483311990624532223982490038617317380300219094749719845396606136330859685300445429294616378685968996472107852168084481158083943758023296236800031726737019970725580828688618295921888937083688054444358543387059455447488545219503836240050245092861853291705024805876971660350126411506481229301005818785154898510035284200769584683143517924777158819492267420600617513782012288648080379178393495347760464734498972285740209055664993012235210193018071152161487410100732760530762539289254766475498600239985770542700902139314365169472020205936654459639749897403203849611448486839512115365061435339666139293402800085383519810996627973515508224860290631449556328637463383884778517590952668933896721830665997521592395566350659241648775927618606264074464625588196554224105455903202166801735440167882224132912338856815362452282624815956567385280830238118108724845925961797962413861301241788985884907277615007519764405020366087928051247488502819118477034959187375633223952738338918950789871485257722843512239685732629982526757955470424678110536878180465449367086391632685394496031530884371750029885741015615757483400063586940775440505541666877452555427029926422000921551269046197743351054206630355753646085927079449495500278557473842013206749123199242774612046157324236692695970137390818475116094942673602623301538384363449348475388286137791720544438671833863542698400170305968708186433057097465980969300750968734147995286201869356343899770925786077133115699723207910817230097821413438334552683410061773122797886391860811391481204673717933136167264303062187049140077546775142865285224164613384972804689834046585291114989366238341113534786016742674149573602221460903715115374525207278207087268796938755650834893718719995197011562773644120341770747203016618260923369573221391114794456494830510643289726844199012929160631751745726346909267859443698444933353168446270961617443319486835797991503715233417159456016765164058798918006481279994579265063634173631223349510694802211421164447023416264032121873221391422188641515299113746549028618957730581690131558513268204909459188536823410965364180769668917623766036724290094859260825342660265773274169676257867337078375342058109741837337222239280887152470012906381674865770989084140664107270619389118230593808681227822411944093203715723606697837743410809478423023337937670628283714439519439681100425903792886565424954591644712664220192029114725977819160942207116783772441247718459529360516540835379227917771322063159879272111627523884419704573963120816210896143852552848033424647745673239719545811844751586214178000754632894979839550747755413452853743863186437558940862807392107333202264068913474876834945329460495222854744024810880295278574981869890945337718616654840161618438607005732137119075029972455735777282835040738569377009857788437224243126725363195957844552118608301653073662904239629026998702141237562423905355210079437374495967240275152226573015582659822146029965869511773566731063991293239311148063053817493682607640389731633213159310526815735435807614362108217876015279991927930529427315687988278967048235411514940413980938258612233492339635286258189708589127397432574597651152808868626712327829392016675986498637926155304921715472740484733252776299908572436302490238056003049812595924631983377912303361372683804304810668335058243685037850966682591736714016632806911797179867628261829102142616739380807166772016153661774990001920482852277177684534404252514424585840031101712853380973197986121826340510956651413416454152954162383971503530634466599663033434221638608862183748126480513071762531675910076902022024210337055591321845067378558876383531905936228999148408161258862240811279869602625803690892237498822500663701968534755732542961839788951073501003144202002394429416572390610940186784190991095850256964861914196787398353947503030229413553813356347159631810524529256110088902338786306192440630279943431452608560386856123427739832865011065216843947975815148262255750575977009704991715847184619399086115158418149847600204731552536844390615861178927370635714238965518101946693383773442871561209655627461751810811094548709117640437554007611542171099029801337135730872739233774485713179627352378139924820648488290329815863699368807980013323059818939441083736587834707123355243606277506301220993034280701419884440074417275423084502809748826693507645462526216030646772443322227232134462972130950525920156425784287010526511677331241442879718385938614755104513491892802492629101094059994792652371971746194402057485823853214524738659013368198722298797238336708672156884488971781136922589833295315514959843333948581466880159613948699158066836844795969150412624111356815835284877651263418443577626739072106899386329744758837145241277792606055056145240105698523258621060349101707164746895768203504586076127827093660971075276097489828718807920503413517792613190630715990530304406041095302699379686873800843911036968108565711951607134814634715780214344591777057999411984320719907964018508492035637654020338307936155949694172996057778662941321128432131292263079538404711388101298875754719314689984212286058117231073310398290976377151271632507743162687323012406853052254728612985617551079606466398408240017140580080654413440579827897203562591790473480602664691198984479686756420203437543266330726284028895339329677720959898914640168804466296308813600132766717255631455017842835668053989703955813623894365794180699943060808406501695838764215792214936853811563252761172954359339056321306630433796199485514991302234653634339782868098934076039755462266678132167956087120739535657007307348805175886114987394810427885729896301323553829433376705817287030229264218314256962412918242424547819975914615931217254359648777764311090693557976431948477868628221788400069720579587896167235601954374461590877130389183652963924946923023541875594400002585065024291406263814905341236561630034143555282472884747830843095601406734651715159562663794687748776851841058657950789493412174178447959884050047856870264572445666545528521900041847252299398248189473323983403992600307891767725005099974155058814913871694666405657824978953840539732897320978114221201537415227194369976382300578999240826804055159020464384448265201108337048987291149711310206331188324067553049996286210748767656115064696899463037267155112619613884956037687466867946244729223647014984980328385216126558364606786871635013396269421805173903271376135365785218657153053349049812308744839866962521527226865402354188834645449881217479817143493205801408570064953867924627956302104276631693704068684478226487823114166955234646740343592357970668676572387131147269133556548671264138867928902300305227288096297401823783752873329605298566896383177302511151393030464159835127202925754943065102680906206061446524331640367226780279399312356032136935162167376090180403441691490288550394970517750434573485795987752089673538406827068624123117024743937740865893242244543467293598802423298781831326821378500067028589552399830270088646312714874029308623243524521250280065018622711474633928436876477890695454024067984360640150756875355437050726506737807953596938144929183734795687126078006003748712579005812844099473223446238361699563542156196785952068904107438382654261920964526968053549780273288871386989383109857518566864631015494548497985120561073971549186204161667894079102409843362541654766724762137741875704268432774551833525061281174014163077296690490002469581173157258635263316685790040521828501062329885331295223901712553974547820429256409675399574566399014317816081059214754945926357422972118804093606369751492785514373223246706535779310858769242699753903895121579089644368936681632562786941942421509441569518599629328325364207354876696929416613283738910436246888421069545035796071797794038006442788945769061494154722781555738231762128872174609327163232719911689348773354505070155868701265765321766143710287309527326151021950409540632505517266354614711775757483844746931958754113519297303286397218659514644976897691396699126288730059346750012131576876294164491430130059097954054744856044833020107179703637567257338968794074789070057886733214923635198320138888481706188455743600073481203377124880220782617463651398702735534406052410482219841992291779864461990160306280773508217347323889799738300424309788430082158646663127777280179614817379168844671565474187410487011036387103610483586002002345664838295010904993067171844835197072395388757748069354143391804903736258012486631845456734160344742537464018284018414186501768154550225359081673679379271518631262829150012536278320093658185741369088115806089081445506370683198767075247014348751201766285876274835953391488777267763636935188605407169134176094426899040295794104179812309374740445607718561729328140508542548853004106348727580584397603348516137728319827941598025398904828488238761212094236370636441808169462524484645764586912918563951465973182409723579172762596393771918233436181892942245251505659021085233481145543430797983098796385677606212274029364070803437504661380260983269466360616998570956337414754093620155591580339226456113023086590773655202423021728051549015297457515091616978503473490458207576529197922348521875072158747488891932889384301034642653375634482793274522104077898024132577357836872873985645922418892384198402211277110110821027503303668155853504086854133074124409695953588153584575080619936270509673605277993099710518499112479039385577799810637693017132924510272972527899218093177289688935382299976133840811234475354889859391183778076248029176839286673444308878750672385870581122793398054004024837431222466376929103359445470779038049062807574582884297663462571286999117370286579227252934301996111982552753374686351962684218178730875389481381899285571876034482202607683694005720638725085661397848137388056982698022942119686843924793889312612292438787004972322012080465668150943764710109801746284971556631641767163521082112204002634277024951150350348269098259337485829921548889298085137628360046393844082101631025488670841625749039432900232017452028489264957579727115466349433098200265221576078564530163885850719492496562894035851620294182134561057652291379800147643716442734665118962371286091378949286064347739240246241126787021534274042720760099788078632083773945639170104999613362525950484263161523500119682117014695203560481077993106457689364901935744462613930147124451018582590225958267438942798830903638388381338439695553471933214498385080922082804152618699241037116027552935025187515696322672347963661044308354960764173074889802835618801888399705122220738532324039798016586100435334881621566432850764228243159107291837173771833430297491780580612380196894643192888534110179764904897223981986856480170743684501479040804744077329944910736023333863565930422268370675795731910711354541297116742461785093164752018192395814086503084508865158529098306245831941130380317907332068548399396879564122007806147178127889598566397444319871685954332797935902377303085018764707845521227942008306214913993463554456277614827586575607660195024368368470050638275191844956657347056542294942208096845565741941616328730579416592788415553959510261293972253808163803681414262169893734389698492268911239970101068523062742266162683179150561480956277668791219329272015784786763768727844905411007414213340997389198319570395990892248912728479497686671992827088073288814475285500902860729921283706570457437919879474026903675966867404403104568954066232096070330477502634316904700393184477699056059870907751923166633384652820318996817039624239252047215552201613557869378016619072645277006775086074046236807361400020659538026787121520053617344229589756886958202478723046937890427553839046732771449850347526140662543682013537660881959666417737941379920886875901191198890425928218741398554687503208118555858728335027987927365067988255332410864885020764538695703343642000252040207507625584117398608855127489250271510236709201547890265454150711132766573963010899393495472916433043902035200433635998461399763774281390870072192368937339156951830328472889298627114132239255032955475679233742611848986863728287548959027479116882883077431226675390190386518966697791963006575229063125460316475577974884229241491326169555085598929893138954159151763202908105662485703997694463553256320118620469346461167151335765661559573715823678827364563057679740041320696042832695065391056059260471666613634569890602153356250596290610465090885561501764734966755569331327550829661506214206971374278726745740931467613161131179711370625981713219683743692338182999288478246936345470696263044978076583880556593869817159717175038469556101593426214829065717758515256139272389632965061987558034282151965392772609738627687433120192642110504786788227343640276146893868390411574609675536364239388769783556126087438061811775379109609820607768187122918114010961061603115441845578067569822266154847680538014540737628971916338208380255808294871824018672768986296336516931047883766620229595672550321768503588753788503893095418083882359837015195382435209977910264968304713913522922440165995523206085848652874145776522658046939410349622574943431053160516269261803866766473464961832567061510552816755253709388022605675636107100000673147375451662017106865656055524756492224951552537207606867099089052490914673196449736549561174938093132567275123113431968797722207549642033613002090834819981247723123565943234971659689428170879723339642953718405648953589158746775601394076776751817890991764627671004002037215146670772849206480239475417492948678492760616158050758729469114511768710901324504843766008897557739709130933955032616604669588425433534514080652484005692676121318322289083594482548775047924609298633153779890088210801881146438477794316298566911059448736208292006268854890547980752182459152024589719848779711282366022457979922201614033620601044318216273247725184963152703344449509819327366407974405221069445690459866454877331998724555285985595405145608128819624891224444136634655056794152441992294892907516328764400310577603512247093623985242874039809128343869349375224635914652168459976847790229447031216580227192141965283166739421380873101017775104456300564819016196033708205523159399249681243709732671540839812414770935885497731625297277897208391265734160220751049313201880761042128626575161414271158564521051170463448835001594048005341866590880258070234675897072949353914754707425798777252694580140955058776506812092343604750281815797443954122916485485900262643180070148983852180294632372959390258473567678077990127821188519393034484486195249991780370084042809085493298691175937178051063571644541412462404013917461624111551162979096171463336975423302961357328643068560372957572255895786548188860394900642758968502246231212989728033808931645069546493228513961240129570610577980610411322535497640345917096599556608128087595890722739226369328822010076462743563071924485582441138234021814291819495090154271951877756695132038145123161868368276102844593389270465313390378984645016077446755592300550498724439060048559466584228213286274427754322200037993472951786292141514515232051055571314671139627568739048846013788873785082232143247772353418122008697896154102083042046457396827524035954842432928407752654665361282792501107461657181434002568077733051730094309749178837317553031046127438478168479657036329217601666475026528826045522386235613878329303866883395938203126328152405100265861376166736798736524117361879230313161948593796862920416667735802495393801449717666087607087993196634276720770204800371358525488625651933525304060638973459107754432939843628879944307084927422083863307592830248717109071512720912373525093244421601476545783639229366436362155723256333041103400829159132862336661660528704759313294440664757720316816741510869050304101151132932241840524433542980521342911604469179620863614987342920293867975778614762637251557383921769395857605611265195509400498843015228160611554088921572934070388539732330098733993199741726210997360458362266237731542729206250271080801245796599060451230259155908781092676908201733747426191879667510661683094428340779863355642150730823838160930813722489504046456923953242318141515788468506772956522804532185647666712206343128778527388086623880348558646763357552454216243875763261547240419145414775876046723235522760406596474785404649995232407297124111495801683436440076346391254184836057941345974900464964824787166051809111895032714665782594240120080396193320269924566372568576603062800549461062428721451787172719243862215472077668149844985199998742927237088926339238022996521095296108906300094380389720392860248602727548086389041266568661018995029022340653024740704040369330315713264070708664922971303774325307309675342549216025684835903029865037892245184233110918148641992452403379755467174176276035383737345754819651479841985578421750011925368343500921373652143868729932205443919219362131748809356171004821868239414844729390545326434236497901767400019210152242867203024648571205322928592423587846287704113737446012086096432007887886630817291947564316630854074727188545303662184416076419755234595235896606231915136841305476547597748683107319080224976378512308352530575308732444087405438572528518472510743674702678189987325704155852504467155762441238543292859280084986540006531877254969837361594419513869560809484662482166184468073181023445687428077212732318744490638391276464874181467913534440883427681025907118415908668077239193796149122830803032970817376964061549729417743422904958468818841715681782862104062481709256398228785217708970045049174505059344284894103709851584766123996316136759202722759155172850350417228797118319773948988596186071730192584680552812784746706067566150440177599691688077787636043420799542525131917830821559625179263506556186668523841446554384459550221828133744589807024639307493899360481876791169349841272117400766268614901557883001676256834606789997680670309332655053773250001029642906457655276296583147333336356970177745787237562482412682133282637871485856433807799404095135198430276860320791828430994444304816953307537550628160511459809625778002694206620590775419228321472437219888570893368059449056567500614287128310176634037522042095344443922154065208265752344639992141145451861835839355051128724682349443228550049263859831495084675551109342531722449797528019930761482845929326992949232077088726167132028473142340087490210663289367743630437612404083329324784521262559177034329111950760674365084734896335675400687082822606087597437810998458625668353879952846546148647161779025144620364158823215366844987035265187731208363574421676864388044764932049574106413540030231066726214103655002572565777502742519870249720316525359822467562589345753363910086445216211347662400043346877149883233893968386738159235591699752790978530438141754364140841254019502327000054940986858365660838051512428273164034002989254785272438637392738710166487089338532836130971868356726671471235851465646117164837327075730888090209264136726625700822363174614946024778833253239103579979638893874903348125455998258414231655154136472657171783564556483809617786589303604613226630001937787508752529915024267081150289775632936798880662952255330959646798481046602873950429306049515220293063586294335721175194568927642048377390160712827293801631864037431297174323787609232298325409083103960497754042727652929832046663190442328961129350277645287414789353969452912082971832662051527829192058066538273546194508855270814007741681079980074365334940302795763401456738688864753072294477503546181624593591014797624830180543493402890058776269036881632079873934954137319263102350051434689227384910771308069904853834852499053933177713082973213275884003587737611797894458412922494730598774107687648471671430781153204165429055332855498156607592277310131227842828654724862160355715303241629152232968815723358995616427304503297493405453797999198782795051665842905295526818970113888462516450940553281507237633502049942543342205484570082564971598560360878917301873954824171616528860305936075206066102587246037022006587358821047715636375836708999787451101199472288591739837016733012122571879654409636097262359238711299993431108011655272300910508674887052732590708858729854968902165326344467914004249313941442859303027751061227512553514603420666549384260189066546628298467985841999106155468368321119869347648679275083220834090572488977862486005093661118169124902328905669930641505163462995668036427432367219529104671745318359314399325310438310127875513528379285188070619438333657869625179856163442806715648148949908641585805180445899235716118695862895528739282569763351506361001258774393855119216506884064736243967481879408784280586288928395419121118979967210585520336072199074434395751459658876406949489693703329935625732887367796709161630732642699607343588483279687589570328990835299312390615080146098621738165522778681098443865303391224059630665074417029366985181831055730469645413520580803520414122096943232452905717559151536060559649655870080434747993848746278012826727043738769586510237456033323682596621738787966435574926236116140747962742187712329967350146583171624404888319174831513424209241090237841659925453966091606811642034744610195528580343729690180603578621720025386322154497505048720940181400763132437982362320792054373437022354454570156629248062677249572722093081658746253150552701141487891120230234820647117815276491145617614947453257049082141880314765768888542250212361746537282646200269288881321035377156326852599202987268393309718351393216258952803928315987846629261040172063245483962112122362242692667853519867359842681038784205328695218411953610977955289602830122742187190186946879190560840415140610567557052813815436135154414968577638377901505447072966743159089857874183231710346546604841869748274681994773496012391890986153381950805139557594454233193220997336799619752477781567014612157260915296972966074660251234715792289716603531518993702689132486776764100890492573405693102506811473247937689251867837246698164181154601950063297787377241139302342276705676131762976500948594850990556356775616214528123343407234200894942209778446097400009053642588665023587137787992074547386067307224492003758913298290532539175311414475457175498029557596372561002208320781392217193881543549205589399512313637998235503701509390879593026532249055545360148612179309055843142085417470006653371961992174284743093873361111569126480569611863633453881970374752751879826806393668133281208124239118723499911450169231063636509690210613804429643225167967195160104944998267568546952044955511706252999710903248024566842716362726621419214733735065656453738868659460724052071576863411850722687764538996729439949495308733107262183746624041579197186611936243982280444072823277315381345244513007776594649852107768534760681151912484454640714440344051045954362153976307715001083403277555524987411213356909785172667674717677581352553053625515979906281978439479704515182706888602977119719244979139133666955852749322376717412726185877923500790306568149446433367848520440711676452601650296599920959100660295479169828952845337300591291576955477982069568183401073532719706375759973341779161500095777889642736240073773316439414155013348642914457906753988556243295272893900831852459266433751276797979445863723298573404776457501315369078385772826812068756511402268187955404634207637235342990428772604877379870357413195331926774988053289145648551147781721568908296704856560247317222907318401220167795715909552769944624774867781175082167556417527869325390940443801706597963000348114825851784939105614972615851222265097483196938358614642019702253449428549868205097782123033281344150598870576941404579963995430389329379227268981416118550232863985931926135407393638487547065449057650534415457694169335114301241219597688895789519340499570364286639772740147841624787656477736090026203575796256786932202952032742540212886502508490759705068351933250565873676715561151006556606048605393200800911578845375054038926701484597690320174925810981263314637109894875133452816894626507019623544017946820350454491331393895247832794757920867134890835073988979867094497112678113448608029443077381166946543207033507004933813463132606848781475404111868189714749023682502042229878546535905605773534748349360303082273341539850790972664862259109673750973768970232291871987892323449291103973555604518841317038127954299796854493278781629279602715866866622561339217204705837276125383187656614695855467470575828270654439983605519592445657980171920440067263534227865450224725908134093618105549583278802717719462875448960699597543233897651597014575497893444146515095108287628382578402052185379680286620863402634423638860242307790359712230348473247487064374442123033390767084392064807300244841698914598070253159590475017795666441926615803939085211601377437512718085897646871126466560165268725696555938049845898674661982686911031800903447617310581865960255944253727611425181054796632416433710694890414071603128280560411586105537737024380812435691536959347984793703833927308407912200611567884847773642497942362881422335391053456908325542134515009021361851352947257992774683833562866236697186141494181734869570403864782716006504490262763027700144045231605063003611846992537825270833533002344515536705407703484556965227936686556718498887067242453794412947305595394971580088389535145134532143055757025350373447800465260323071457086407910045302546061619954450333370577992857986718129924646550048280173324393374262737253168184702020847363311661699246185342066245760549282512125614329352135137535432469100242133279952689057116728357697045965228853847474143062779715248722200761157215550540350106918165012732593174539336775496542206313086646765523361831638758572717728134157373029283986964180046179531270428849929810047080851580132592492703145140599881630702353860899409615972710211870564600857826301379329611187266771972699642569527651279534795623553905494493929251831959684894396493954588235596205807042603470875329265902934008653333762216625795417306606587637136691190157872722359109071444454897573691769295151065307360537718624651933046613871664515688526783682539157074624379856240624142347764200040002526358457700556476828016284518371127110872480432511769014125277119091142528425116889631284643914638993108752863903274361972532580347727868360969319843948404850971748903516541892458611296369639286798381608414833249300488493575858950666483331001109600535009778301657405215436147370188622526409276798675435747814406898432807692189008111191947380509659097075735006123062301510487625108602936332153720278164333494230810990407029509460619058630077485378831439832906207182045696959066182729225139148121309724638534464999339160895680834356470643958697320114182869600201380265693771788321536917178699284644540264904651898097903431466455458756590880483600076600109212936380129049903656424531950394720812874441520148884790807133297103194951103231493408604014678775959089998543348192449747646531105525853466276594426701096029586036748487150914061038160258833789688058185145159036086314490483290822406919367726135112010062273373718664378472111461951165829348563592179759841888326896571395169907291119035042208232774374991844390600607566046167003326291483192478592349899122112350278596255600608570680715956659156247279960295022474259815470143687319506265381925543095570762615295197199320936737622189936332513542622519728583457742067007661253668425157591581820361128564101452882813564311438371561999006841906447181742388275871330249200287489504271407133654936088122415126927654854349167724370346849895564927924787903245740740839595398377299681448488569280996955664866059125243712958984344350373110742310327549003896703252447387835434489582874590974623201463589278113616559159333076548109354649212129802158600910037449696126952435088706449766767889237248242744935600770492322634881088268857882194567494434643993671148029681291457927859942803848898440805075164093840542614384976469902564765655840363212489104792962907202249439643137021357946526773705994060916665111818033513299467555569737560227215326165079727319291448852582680145541414139920872826018829789959333888511067509951945478104649904219142046458599830242972690558586608813654314752214595427448974785841764350236897143609052750750783786870221181980211703515907030738606318251321901569841011596349291344173654262413344088592998997805215436880721627489004000418249391557023791103397963284486561618129446605580932247224918674044338801583444747991407594602813325259435487842197048465723518490803106482120412175736801486326603733154852432037867117314485354968926532202356947772861100225511596339827703816092707836206804590572155009307452194423528136824594989321588330344459119602335315118420710786747082207850563599052557853486289753837802363184739274119264487921867077647665273905877762079241499372827611395742570838824462655629691674444297334722118477467425800569268794928183312378135975245952230647794144984968935012440063966627849893705016919069736950011295551285145688658734976765331555300746601014827026342359390129902296634032538668447435093208339558923636194426480486724713561819220656379650221158960332384618403848644244530920112559479077046140873341916351804776660443183718177634496396351369631643187058887959254383521200194387171631872068073536351298049364978634459871306767071121739129095170036569366200154490098190393974134840255988476863623861853734196936980761713240006045518176365065655577585297379616848814151389390914146680024802772674413554109862157367518525934354056798545444458734240091664779558859698533929052125590893905127254294762203639679510593449103412225753860951277894918980174665905337703972569765090141626102386814397686495890577059759919253714408381702601270006937557539268376038265158358858334046572224093835442749445971521663495971389565596448567005923503025094388652482545744461274809797064866963499184684349729529969821212194883547203292838989445498225519160696387906379791130312935784665446174262139202109499807389444154278199332020845240153703170057814712535200582912614463939354954337221733685333650715348829801120875128896622249838941529992357442484077792895774120998347883926527300162339688042345603704611454261378635147558462480041372342675137794865074769271473894700581404034877787065790594541231939648256907963069486545362301341750617646200114961555551064390679838547074956796949029167817292558005429318916134128511682881112029470573721541399001453924130045149622925964697548091999834516128094968264229869568751778411655397927297579260487738106046666363735064668640864456406628873493996412411009515447408890302740869318702915208479459023642290003220443872552572778691956889270233407489488524873317356387590640099730129335651286653155155065927745820887451565698007452420006822486056519445366610439324005333852002926765785216594392899451315988817346824713008854965922477055517725862232283170691004838381888341998553880607067799302067996100417446269396385220322529162078989609014512021048327629140762644245672436299024856392522175048361862641721319386431972066787296239239180921463108183010701304810082578945536844711778096312019455564152108448523702953084486803276909638853030396673520440529679674285458206791232769211075971142707888100530341551654465104676383591236309062680985624794843200005264689193228881378448468891300433619574848370048225600128818055163492706911921037952388948701035995550228140432252527933862765422529743994880997945382985697015055789353193828487389355755357144562470226902839533475418545055164584464824943814056824905957931674387139121204262145301454990635326797257978345185070955738001111960429442589480959790966037252623776176467294764136404986664288667221249734792092025930727631858245091620943420339098754531961516458678472041396288368089752589344634941934164060114523335591984141122815649857468063099601173421547790908994819733221741552386644547735445668551166782241081842582297012389888199934875997134663557206557476650557221503210747125263106721930751195103256841041018010940486439315896999937078117489896956476772688358441816975825658941278324882356911890665014055942147976549270129653088023276324606590720877605119965765613779534073191303495255138631194759267728957469354083880491571559056347128140153907536623890447919250919258824195431837052450794239725540138270333719583434273347460237289235107757756157040476411474016656872354016008263636607166425760074363184861042701396115057797245765587446778218526960307686908068576355628171879921086407316939377662258247700178888225072689581917400867018473879822036954225413581401083459803059818634901928046795102357366675800571222400966981127488084769020361541259467485266994391507970755354223473407063073662646671059207695718715419007006048226294292617580050063609319373611380210954470984083228692353536575899055534940492617194240538420130916527314181619570752734118642973751772279900448116294201764982551401765677201107557363863778769854606232164049940768367185456495791699176768241079021029284815422395758212113296396021684712645989954697211012888370370929746323211721236330352906366547289596606987871756257171622433451423239887328589430857212317832968685642476462763322607425096333886991183660927930683165225961317348984764552748927830715599889604584389218374373846958229721613000048411621832851614700830882513657716606115601163500794869287908360915074858238840942012600777653746577022474173675352802263083858386045489026569182564111664471379976123630577275554174500008026164915985991094112186008580299638743073867048086390372763748738070044153198939079634847908307332178716077368390981415673039602731985302941512646748009551205488487322315309091420365811508378770181159701906414129415071663381347370346130600554324856973221183550646370798298619426068191493585264784862226199917450335940884167981632390539692437251383362410535797930178084069256460823151582619012274838057736190241023490406282554536215329938083109883273407551043792958946140630725638427232258269795441429958141150685634329425806144680078418288279714911746306025908860227758156849739731316204064466792176891900018347141945798764292244508746704871569340406609993520515487952865505698389880459417131857696548999893190555879436585694338782351999495419532651949493348023450597955445854857777323909889503581335956285160737225425714132314664392122177279401905452878951335277423222804356467918860263121717321529289926276628593382157245787946638776958142928139270248455395366707414019601982570321952344226127604533632365656391865638371716552770309845368996227916948800610814159899976012827563906099425802790071675056583529112659119596592626672645867388605309369585425620302267597707507269738126531482151750191900634926776111679994437892749732280557254289446723223725718647216899444482358688113113526633126690977110424372011992866658530942307952124196986444169914585147311810297754414232031320985741121929975259300650414353698311653683002601756784767264372795916872856768072392013101171535230174319964516275866710593826307823198156456159481834799791029337990680403723027579879076048340347865762997696157454735991680046579164805747223461003999581807096888218127146622748934871801352599496275627266368858217018883339996594540485557552516561586970376063646718277463112844297898966443370433413827262376541486593013731873532248374860662318512742250215672422466631317269480368319224572374042473011480922629825536678802989328479529740076373223785433423359723080238400525204123030914207463828184704713997740472804517627932434106410713016795103074341550852544583249363986752303783155974505660507290558088799422182451061386683444680768523144016624689861486947999884849509017030930953202661815820893198452986297900797533511527951990407270756456713588946816267396249978084657650096091308817408424865175758744916881534679957594133293561711343105247865204877065705670276771082749722424650409292406374261275971508978898097743956861462637651994792912305305564410561550996336148608657824707411111047309372892028991140813460111228445172828165172563779297737886820675356176945928861230171155509764877718396950291446048179540935496241816492446946954829090309660278013975333877946971325879425455808093455194889198058377934481713713079417004829472069045327913601030081642144089771696100798760556314661448434197950112550374930428927635333536720441362471358523775477419522456715006214233263943122341289299157935901964655635097415377129614978352606606331336136409526164725496365148451006089048700483859967740555641500636789362221453496679383341925372537397986826432794719756398344403899878400553991603974354989487966539129842757550636494181013146955463839817807984067392612280781813755626750288114244119232012027122660671483150247067459222173073253570798831315743622605285176433238666411180600754230781154560194910417961899366251081388807959205407325334594035313279487018359453173778350215589189160746671342881511579682744130676531215438947558534587190940394468972537979977344045953183695798748631013426340322844351878534746430597545113235221399581741049265665600207643436830484924969251031100532111065926598425556868095361764893760834950502155381986220607629841465749671217044896022112670028380188518449674912267952287329349795634001242084733162580877175364124788676195180110588593756471919816188345657191853542556874176698083113718210141719872415529905167397505547251463669266574815733130306258219623829331043713278468808729919763405526775618968150741191350409014578860284953467747604365015899484143287155311142190066370467374654584509582203079364761736279822424671432265119034435021141755380670238942948204738148313491493924227684437959071204693707704072248007345497739901580275680789677967117328655387663330420086493452856245833359982188149078447849290280674906230791901072533515198447683723545682750548421044245699811217799130354487468726108388782671729921459189835942992360326721001165247698456075757187665797742486648776085965368285718761066939596320351396211400723000857797178187768137443375406503803599192255994579690162303920423972619976636605174773025894810457971100916665653852890390329688443037212782675974776562718811691268610199276153365851751349604015454036436782358314211249941161839121478626827006172204255203917289157824584832586475535622561529548755699871235310207321455201159939637926303476812056543978194036976673974998062619198627880410807634453619771958971027368768944298617156906680815748003694774975652247071721716540891132004054417535012450105000245825066603340194660822046101850439015705653536269379190813724815772124053781081986467261751707551652637093556287942490258513643704192208656559120910811903614549355612669997476597284431708197610758359940577614780586342337939149731416681977894633309469235383340914414622086742674447397289648514383031902007920218051494974891595685572488251178133633183759412394358615687392026672717791985792327981871431911563734779879381121073803308581822280697E+108183 Rounded Inexact +precision: 26331 +multiply9 multiply 6698327459332261480875538814658166704677946791076403336616036248151938228858969823686002011437360911932968247931787805027381970768618028140990853184733773456327708264490624130565783868984579106287485122172657316011415870143688997108625090263280480192021804462257100597543239242199823539099155880033183969401114706513235510217513329651249980910135402662787957811239832277620049355723761434168298438206481125385656272383146284096599702789596288286442237802401945412541021936969317775310210111664482628173613297563838680098382121525191390800758097832994944259659846907402439550823464975357614248276457145977385322474911754480071252443515718971315323003129533498649008455808845369799358765630704332006973174468071936280826818593723597978867711806390500949188792209700356211518211355440898108104152983508588438628660461532492420400090478456729431313028036025887145366386965629397816316555270125622664385655286600402525914143027720262780108487651005075550009749471210566911117256834097564802312939787627460999876286670418146671860081992895687400298501312994995101232833096685063553518953658755733330351796720935280972586081218994783830491594913557834397150045821046338821093094577328875613425802661436669708847227240061185098243752877308118227617189104648532609682845897631393971132183449405496059594867972434934245148730394729988488309090645717436085958751896013719222370393428158773051901800959790644177403064968058776146731844660212048579337006735562636896763825499138525080901563334743241306972691835932219692503456969863561227771506277022497065939705537503622228304260852192262486946338346458390023134641229360867693347946342241996332147286109150241339656592201696715883505515729502417543736153913289626110091562633423549946682851880070956549905506921650124200755421267305952118103460118862869814200528662488429401727818549637486003325749685228945742477388751163455770036555866460653845016091942366262722255233508512805164969237682288178899093758225502221192820863323592145327548594797338816928481366009260461381334649339866785829089759442517223777830565218496229998072484515928555693207377470408171850966768282298593875843048705162398349917589139812749220304078271245315520180776535765906586299760568700911683444540544895574725229512103590567420452533889642971970269086716277426916259419950384308287269465163899607432159480300661681557262983375736069918243255221386342424374982308648964422311956013671541857533544137868437334414936381141587548235806051906510053269691053297209052200928746486073885280023873454202922388890532450522827055188411992175846644561652307214717499907334900270507524064198808426860926955817046999993674718570636794204072260638683438592947552242996643840258163776940683143873018945283047628585032393019662156936641577178061320306954568533321214843828166293401136373296737237322898346540974476521363647494459449090457119565062550990448687529921888717120216595202545951512486534222969339727456105590606777980334406223527534349785189236526985119218093110491647021253426390139726901082931471462267391968216248169619198601192519423764201993208395199022140577898158951885031151651333220670210624992996534982466742238738253290727859031115140639133270277941165950183356242152758605735463885414250218026201036207416674217439576965039967678064962507656149476471113911757092874315062402124647290217542835668338187600771578704201791518098609551491707584098405490611275226124302545601132733548286044237886219758491391734265524624481160678707236874624179401635359590525314187692916047382490206191184518495704056848690415171571556700468287854107206048816835030536867639051833311949097696421473707430012638372992105784775008999329679631304436169040760547013620914745458431184392948516058726076729480109458101715676766331065066492250452749769956008097813574998072376752166928485423408368502900412896330619133120493890972875778818223826193301176193556203548290303309583541906445379061220503002934385851298812217437311137711377174695108735289460586703101233293028635952088417104769064685144494835917761741984567108908410128821658264767516154270590197044228553836583762419850741978307272978698938598466768325189871490718072929374567724539474384374683973144819457451658423430406995789191391056181479886730516343878883583165359344331911481653062006272880253609744718244909845066262770732520346253389348437853581337129271196526317206579579043821269366912462545578481191514095621155202544587664626315639162301523186263751958170832268075405332448711713127994833521808996534917838785950393537893821762462764814823709575161051488880616246134230452909928671970398746723968293090872724659352139340980783784815337350808207513009759710695643106058049764805563388445557711769286192945207889457319896276010341380007828523528872399514626868455787284094660871710110695909828221603866226691138023138526118076803854738969233887593684356280611946099970701797037677460104013100265381698185143209974566752139049683604062036282640471499802924315910596938437739364584580385139941107841572293294271872961923902034805298760373301974108293719800393400021352638086212956929153275494139460113846521017764581173540625835086403682598804796065237343800959058446325128680320614942987666469446987501514584342434805012199811593783295125514363595895744689664713331047324592582250992100451116121828972366896336479315637852195370033238968944308941976647968032869023595619988610655532936935409487580024067879655109527890799144494854139682288688304582704065127971035835079594497365716131684587399210275676670516569802970705879242728505896753639535889517545012830790963969092619441868170765084272148407928344116876989683426587393985853642682960069735216157180060253389172387639086783935065655138083202369623314408952379330426679556243163828329845898808659902078316605516917494998230611241084983752423821304158973176287370917562008512877905969515328666424945347105489235557943205598802221744007435495516149493232339643284675471752737328435330959767059679357172904697359915585675683976991096421010723156942916567539193151246190782756457567536463198030542703558202532066168346280669962828058753440251202138566315305150120944905479536495605986235305423405062176941225462277344403577302199245919248443728404597436846170771211451011328013019194818893673924088944351164924161494269778164221800675729516124086275798649313488922528874588384774529515162480857080444831657700313494798672046064206157871527201674431816550148069682843777692678472597111379395306214362836583178456774774909240064071179191540619549804521017138919859696945256714979524234409296989657615577417636206518465952808985040025602370875570565818651965236021873175290133701750345090984203292098959745951392662594765816115062548444433816992485022649280470065976111918726792629620468465118822437416176832864526255255931991870248925078395696132414739597984975191925602008911391082112516216234759310169470936409533679220521903874935185402212976843693840767012526147999473109132647333991061634966093533355522293732414080468078271962884493417614869594480047425983007420277049645102703363825733400015911493967279301454999479834175644007626275256713210162213479570201550150530290516922694576374034420396411796595383238133484292211681646833831540432601768333229946187735228630569105671516363141712808170057241634503493994551763652400946232629947152254968316785563025998652433597592920470724430274240053239073380334440260166828634006003054590520340769063272374020369582248901283131502640051091457350680399788229666524969616416020370808364935325073172629357618905148956331133036848477267554096116320893707496813160981910148230077098254684322867935811169544825808974659662596607803071070941631050521899874091887291962033365735111392637566420003657456752683674063109546136450727877606046735072491864143447698808702983964280359514172942314654237876511686930833235216700683682890313795771028288605265866871413600532218636541880290222007982616526307407393791169578383659138945598472319497465096065761057658438141106303995414765784663764276074304734385454534411343507989047986406779364891206770462835318700008005567745107761744172803558112944825854376501158842116513241747803184713248698792647190894987811840590892378149658319561197331662131984322070421665005234845346629786331642755511545368581215078971519592771233693210145450505469526356053359849151943783576797912238811204287421203536071057507846661601712439922249625763974037767636236999557190816759354591187072521335010383790931523623589014371570333939162271379640060172277774680999936435875480988545538675929200505847361334724768714639922606223272100859605253179063506204470469299287264172284330028586371630094374836552973496742513270207329438937801009807990086666659888616192012834277971709533192370566088032759041971657177129269526358445104220173786640980296264827981958818674750439159416123059220644781088582616025202175818164702762849999046063064284518566615223053613088459929066311879023613658440096463987766767517665404606576897940620382092401704777962230112332872565328731561847472165101844565789074143616879792521662800672276042608754948227008958228292791066998346608902027689083000740315407586647441081706108056456380503749659641745831746246276092462172558113178100494400805418157800021623838572583036792913830293945645360293147443526297056132280781938627219757429925951352611714912874597030939452121121477096453111986378272008749890307467990487855425226484768234882967167411452046736356595602 1732767319150300213335246944544939028326758745919288552861434943029164899395474344923996418977206089655867242736562389007744040178177990839046863081790954723919389950212678973669521346140205504890259079193208712485041056169556366907411340291243600690797380275528473230283051285406531145961205342304713598478055065222445551307399264989065586260021764013206852541932708964539794110063415118581170905331641653826662646075616268768878469162984464003030061848651456377827481810549706251426848784711952236479108748152562057611436368765295366150807959115605051967794941176238902260756971207745131131330422008608669638302551939707441566751013175323342011139758958708175818730035575181316720894296358551651335278248920100410443206201472045742419641634391794903146672620730605155909719452318295453409644048873867337812422153175034386235945104470929978855114705734413377262301141048548955362788437894241851574289404530646647304029955121770869563916174318524433350599996782177755414617648050342378401954199112819591229486062745194425769203535857388026038263600459196960117917541316004207120763122764491097300057328614310525713046659569606339986131913393702510659098401901478054842207078130015495419694525781556819310217291578185271823632431486059360749853298848175680040394637677543107847973624669966794945234049838652859814168091571629637147323426673034487396402053741481664109729976684798330227771491648590806525805907762963743577510359100191996711676833192823116828552030458987851360035207674561550464914131052429573150078466542316470847977051188856891342465883320872038054734065721278030676834297665736631423428954873990661709113314242225819520922781153931771120910606119455455797552811623924386579685161749077693927954053322122542082887449479103371500529248282355704668400316178060592216721942893271240444228187955214647980596068951669495787310050536096632708959859434859425195144274343386609230584950202230727436003479702009777037430559653228515715063214457546925339255620075789724209552174209008321232789169435235816317061528345726445514553602441443102880628403488882848931975740910642351511006309530714481476555889643958794055775126951861444704280832843746490625544754472343760429279478394128288211184291263835376048833711943008683737338005092276419485866407779610865372560466003173752571423900550153411860922083520225346026205044656924047700237543352611037087322726884623271762551042876544937949850419727465023501711574509871566327128783927825611684365978007296814259301205867905423204392947101117871743315465390938453033408002243846177608039449809080288171791174075056415463292819579298528053298430738466964501745821018586206148917317425711254216923562846294313839980382371759510302436660427284120669089636508344960133009647576926121500404294322219411118952101302138462048609072285439483145891114468292759628593854154676327440491718809509653717376702080483551197618255917402635457364602642097811375767751460797036006894694152623655277460700928372735768290631344079365165096977610164222175529313966050799647061872026225547555574664445881252536107867177843559624426615899981284263425316402971892643744511154744909051151027666076565154415164536980686535422786427606742755879290950608354007751044714418018592688492852165843696033471878160262829668783378566149428098061790000082844462397923558701919815389455467528488359759356358340993978226141434727820985483732147043818817631144508733095444440362833726882717033945698542205491775198511999540174012645288876250860381808583511771153211844569968308343201854397118794300927158340295087395958879608862223445045686300682777970189832486074694378814618128295922369730601634474872292137789946747809110940707627574230685962483261283236895434663329383546537070968393743824278555738746174755872779656719225267838620553439806594444810039680001133305173556953193204417181950475158706086464204694643060177972099754761567034552791952484608575496645774490681321389364317304370460787069079965084685441231442144688471967449853135731494104930938572728561399207604846685035729353270114904732499130506146557737886598931698143259637547613715777515283732537174282340533049546963767023886049938339373226270207132978887299776595748683138677738124687061086871184034224805261463874833243010640687276021381206560692301695029556029960753234880071279627529140467761371577169065375252854114379620512174968017043063827868333632973999111437100779260651318542061583927356910910207357926502345433042717690031278017583830685206767316235839064881342670551588926347930970057919795484183485980168813829015257805004494554209957222870626080718597922379732246473410153070722676611464829972406857725200430917034804498123066738125589869432004051188972148378674502499571827753776281205981121080583162942311218640013964644503842469379498386508739581671882194255127680285990595894398864025397811576933067265057475737105842007653194523038489956812341237252003896038118983887705351542756134576697791844487230741510782347117199381415704094970257214555622765996449162197647831037373036110282432302211749187256871750790661577863137121389044696592201820289281717725677887093424710855344391885173215356455403788812640619944241803926978343127380396103096217971714467175240256706433557247649400271664430440596246873574234526439810944289809832085883593194536648386933178966628100899313730933451051856855301107420968760648687789750548110117707634368498404355312224516436017107392876512401215982734325628274205073553044014484472184290042464763857633927848017551519967969547774839280220252806883709420774491130567616636857658736397905979096372741714316902534064618341454594455742692477059144958969613750425664125528004762718574538573508931564465329984586606548991299126266866724612797924460950279872100766154467665627346057339088889253476685615250755887675874984670178591776151052048031327638348885675317657945115975650741860113959593545063099211898649791129142939388554077248461012095677600374472216144982691995950367233822725542168005312270361954442877396190562102682084937787864624435978009013279228055269654480555950816510558227885404964670133596017803222096145191959171160118149154319843142766913073329625393314345435699699012535075833353981318246204246594835719557217752237857464757989715253706513339735118774007262182832355064910726169874117081825000926587973394163345303804475407634826137052538651541801066186944473389978490749405429915264311507781672175889643622120272116108396106910871822340039266756487385479172088167801014793503280208054372287170535687901388544954175937509849930000749445836507624269049828695506274257687641378877280581867564863110682450777801270924253873754089785944648917779803268455095837586771068819834328934683751869451545518135516861765281199566474772561678506106641029782661263706342145367205861318733745970967437880086088251889136357608976293514065228872260258388592412200888310721499193829047098754404387661461098199294801459019812980895860168072459024329134648715458357123149162981117988010237477497616179292956832021661491469751329225945425110259909620065200777436327918636777418657703323318360792135189272722189974994543171765652824975990517739235866378172230465894404291210962614057616872081364507956610396810815926759941037149465462481650231340510894894624414055634545973406281782733170704209593020563869553698594240481409941777939117672728777180650951146202422801525512705459966148599675921246773645121794312873986480943111794554546216545467961766846575580604668771842508910399144173299853610468244316244150456564327940540025022160692659507375011714722908293059221197442201208272900904880012080796649621489955187886334301093496157465889362379842873853195984068981610672394110790190280946434731566665905635119879947991962857097921631294460314967716737284919451210111795510663891803850934745179744101812908136334544021330428953358804777487925813283037308354742699414019683515400939693235207226759737585306970949364546252575098034962931185657887688417263042202813541981632191209519254215328685912442429753338392867902287866796203384428463403222780191904736833490798139162311388560644271243494179709768359011813929758494956096708097617505117733783078562815356474401941028813570472634467095712877339095419142686853547232975112037206932566830780090218378844293698129679740452166843405269122278288199164494911881445590352293500699214481455297664680540430747292529494683094784454349554352565707759146309179931242439158525735705082895383443760792589953538730195355365964262599627088239616374850390048447424847102505672398476491960052649192694977445769822723417614730930000802108148899148154535293941533069071161473253432512908010247296543093742330841934472865119786345130631389653370074054737812013942398494961784398133058581364640940698008317035965147293427175754020925449114136332396810734115289111695374902075660583584569193391344980653355195658224378039941940761256533474044630862949903822134728592196861374598670740951941681720757826706649933232101794105153613722079771821743907876654467860680686532905232776582483756817249745148923609943202965377929728143928281972747926459594662043788831031511751301514468583050258209156970183554545073032150565722297963421516989166051199446766956679598990539366384952237645846532835918915752188501062893940106087468384509444403933207427542031628773585911183469810726409123223066710460825978934520067283192664863652203230607176466838354476541219147270296889466131979065536590124228063552890895249495640869 -> 11606642914498004302550658717205563331828168610266549592058498706333005182140084518271723234692318903484186630039702184303515372170300876910563562148498528140244812022600946519063144292158937330394645754381848045934262196452048018317638381232729662919824176966537381270337406126841944900721126790574563156841404288083954458573986193750672411546235284234317695226123948463950969384976307410464393279417869118378053162674157543755971685050411638809257185135378307358517495644524993132132045987660966969812280607943713958372936437814269904815522914781591219856229132598044838791356580311072161925579679357277631301574012370264519647391536983189301171123840750266868719813176177863920223277174004349409930926330741774499675543794459443293309791580465543894150135865120794144186325781487244258415610272044374402960686096998333436106793141117000491711653324771485465923794128832369625440824871610068302866218505233537416909997540018444602960892911884554057880870701032582273557070257086548353525200765993334327820484733972040379576093965586823309328906249392563724461886293485013470550483257695927524005389267248664814992614279260434479203221994661494595687811319456424443556395343050885194209130734407933655305712915177313814343414746527386014164403267346495317894801114838519568562956921904797236252015217487668111814495689250478400877961497941034098560710450012069468121761719152292583069713362485679932044491990077783235741423882906313433518464447207882800319138202192385668117609005326292476629956422575237692766346240474339117402933063416791150080049331099734513006588960340485963976356021632979531768572378878788922019838034566727208616378971159313594636148009149621165433406765015833475641048670095040174300342423814635656363229412939688013564834150832792018364268517007337887886903428844276073484329513373611185046258066836780539321079812425070295888457216338227914892067802994272888393075894938328817162447652388825427444192346161311320069243522465258440805417659495244969939878554378916737507477430769430322929181758248776314502884003334132936252492481233786364061610081593616735043250982882709183656714432558925125896220738905268486384475822813547369474641549793287931180291603013181003630496336295031155434906640569886958256593940756246566881632438431338814538783336985828114674327354499537764696203643643718906012812924530974151794658034417856282740379157827265703991158418011308086144446777111329543792170473128265556743376839493767512576407520699871506123360561827371963635835123810260666878486013021515930991065294277824117196111951468280193945057867096526832916106748370512617017952495029441956303462775057507050183698506616078598495787790561062286789176276908464398996308135082343598586812032810376196547928178890852075070425889792125733750622926309432262299915234910256593483306598122273335307873334378968764953540597196265340029964231875537625792617460081087947831455904210987215949242900616294095369834499700476601377238104299722088711394807641544182011220527486519905435880754068983326026189617033104841588006668529279186959843723561162091993942349048792772006466048604633812498349319393898547075420616741834843904711198428609082153815404389420797937983396074978507017420763441035072436997444225532090900979155417160534314136785071098969457288729851310238450075246066389866328613346108346996218051480872919653650433733506520938311624957864616691165342365333078086595433859416855703099534874543768870521698549777921472351128146397425634220747360879083393417665343696489878700801580611142845477832052996155416811150907426941329540834844314762265152402564903802005928194513174790958996462697291779218966018578088788812442395667433835254575222766493473605375394714147630360765856100866835144280625686481681987734216834569316935358329833143029259988023941118797147998860329824746264757168314042287148231253601472063049386702268948489512600991504951820224918503309280904875209303760415211570611233260093898338909330894626354611006679487008707103780385039440200624312632458064353019462618687534627280971550495415628508277753410797289505128280494829518887604713824074681198608344870606344440263196000088315128089615469989154651189492368152551441178326796994715496535622519402022475786508743104677940704820955815968980131283935026060175415973330430473487768080389557641698483208399632549853268208874604356835391954919188903856748405354816982114054328574313177890715626340861056753952269634250292387453913942737786830166158614502879633841049258192436651291221865695772941172379564836124508210583197465269971177710928805860116150557883439496563566045699752959665765681039929161290603041727780271609438794881055772185205770616756467974963475470525521886525264874276563398860851033047426180810109613922040795050382770937941581903412605307262447011242246528113601164420100923705104366511736986988693032764004133228774928914830124784878219413118590328617290930492217528393214068596236520393574474942269685683946009831715069450210912167758309012094336753694257891541005501968439694161787282565076269393532422754365160047474794860207115093381250993908829276739349171505695162897514538561419162457971352697415499496700194545213853418293099884121238436263989439404609258539030699189782958014132436645073858749850097628034937610327512695442750788929075556108670967754124230029986267173752413442785575343932574174692080010732686441762120314322308199395015543911407396345388203935045824056257037518518523481149383919049428704049488575928660109468504666539246449607534094242391468022723982419051293766681879811250430689199027149934312460202888712438872084131707031354927412812257170132453978621824257799190853052293102040431591609073237805326444072415866519500050075321758956419551689969103378162225579829699227850112794706903188922644271748239932032163694849847813934887879109122407931027982424392217598058105451022472365306017935918789218233893803133565795108211946603040257726144195084429825013761309049431242952310795370122595657991609240785691819911506846134296668283765123491918347140613291684200763974394168674713156427992818413651797182400496944784457429996910883055974398988776119444363095127882551344589163894496880435609500841752135308078231598969837852129902121127470941989862893393131196307950828633571467864203003968665242274533915560848231392129035747448993199799694961637474358304288030586291189801119831791001358631056331629076271511959855929085526902571460449774703335028791761411170102484110313894627692148319409053843613027395817377438252340098182452328185775392055907804622825259358170739497556709856453197052047191805154789391098089143884479631221276470223311518769695171254577467318963286376448306263159487748818951305149666998569916650225575904010444172603880833688515322330761750352710728823372471217687372684988952524147610272430631216233249702170028738902622376017094113537831917884334880547909754118687055736592246764871803261522927085062936158910954447633495998419717296322711314740833671492607781517856341144911653194600051392599773258809261286334206616736256471475053594545703346313382734240928921395139544781823374528212077529309284535132292362902042281520393338169854181440751490042103135162601764274139093921286075238842359663563956521315230514036517069184197392634266239986027504356116148756793838217532246262511242895401969937516724968921803169594975559966834902943749820524013133809119657887705895044492587709585379761048472647490781391723383118061083763888997427787171310781805083626915852646586425373764435489491372891580237171913701603139264045407597115228611488147925284573447141216178381194534122181719770349482322586904301545795912550078471379660898694095032503694748005021352957794630307491554954148982953480111127009086966830800859055429236223511190371365740039365047279014966468107871289403268350208588819266577467259805360094461619904722224709178832892943186816240758052922299947689989831199463385030087471381738907348981731805090702064068821310453678409639833700533230856046976554738105499928058395323198429092471364672662525289641313185157199048036628118852849819787735606386725074541750271288900083130281472610780029306395114274412115025613536795439790706456365716895563764039103189835988621350492968067852575626710310097699695439915902690444287821878185918300255373524176080336679726707344872720951688046519855376896792379814839510434886080527802140257630072565107217193350199061412458388267293330705717461375695352347738593700778542553920671122425977978603757003348499582175185277037621542672592971904170509500998058119717171218534818928317065921227085157588776790020994199819403318083454621320028153346623136373682497663802346681736265591252155877907937815809315570443809893326435002279025426023548272764875449257653570439598773797466673111862555807440653174223849346147662917209223120924620397441141954118056336247694689098907446605865983602404984722413054096795932893603870313125563750529005750684010990610143519365870961983336671363110642754200979999797501150945745675950122416373830371044430230782811596773081853713114802233683845256313144272562292992398430622058868422774799303454790763459001136940228371835824001770987812797151533392006929152884763272040876364620764428389195287650493178425589572526383816156652668676455849163639143977902668331562127777533821719827284744286852323890087846194993116639445329608001029637737913806374865647988198693997783520270650319642261264660931687760291263724307311925095868354212921910903519371436377452997015076131336885412704009178129677973584527752032550824550738888897302862420313167436495668133051970386726986931727876264691341012603914661373672398519476875754117865942285539369715299452343415392224718834240768764346647981466399332274479375406307150787885628396281124697835531769057788037250799543648258976400466412859489658107273563982613095425242581210337214036242121155832510470189987443300468891932298898510825472313469950641194062316264465148685151063351589872488939516758968997273707276274914756903086248473982996033148942424995496705364858987473124157311182428427191066949290079142574396880116355148506912810739052374726573231213865119900022615958997457707620011294183153378853706190426596753194622353441421551865200629946986931315415752767656665316123789840747074067474429693218254679383762149511371282152960149799780597103119113469092627149501792743980348095425607164788279945204408829617321181726288266304479401257956773120366988764277193173838392768768938522716623779400313510901704902436099294377967602879637010441276316270631887092420176531534529206199378303037361382317376876851004819899159645721001105736534284391418771818546598235943960832354030058228938281903232930371762214354170901617805132670960508357383118227726599362974360767470630137946876788529432125947040923195183870069666324985627345451561853026084237313898415441495398141426547448348594365522765570297340683493092302664822212881500807147270672441992594408562753589836201611978944865381203667218124804459450096554167272698047090387036705799699290018664470247083050929507077531791031814254206613509437214033081354271777335790727120815224870733276267883401328635838057172049171630222947311061674831022806170837945920376333273359095209230166965289900439599970133664738562590321864018427861228681958341857299663679764572603943415207563140065438907674816689585594224585502675066832703840941862905778073651684344309885316749961391540416925257304613097194537855879820628677918794783041920172630397301468203059681273771629874787706786641383534921042584884795644232430348178111756529765089194028120542396992209530304450444154528341544349944954657268472709756328427071726883325520355926494366369267291992581756447472289502103825759650779662798141988573563182501081025357890424243657041523530862454448955112659239317989863577761048088447238246493666264274122218780399965678788743598200116404192941695488396728411759138364856487112850005077639648411218418367070524810478222044388453945372647584119161687963492072043734067725605882583235816798663943245550566405651538549679201078851654461593006510543604827097538722442223034429245359352602965479022743543895103431325107106329058424225945746413494011082561176618269221127734155628035703673423311357464632300766576006846798995793381406016926939810337323086513448090076784265647202342735982614698364935570639707388124316643977438535836939329196548382200551023494773667653342268312267359824686733510290631844214392653110502409905521428868152410945279022315643102126390963148482218353722967916504777553429137470205969045324410552736166730982947589192364961115835456598365064141224924042729042061783780191343015664819137709438145684523754745048713770149003444807163167702665439169223863872498975531606071544241910622677751068870602690497079866872356151302098874018203672326773146296005137717575673767396571608573194026785378061884542220747189311316583770572481930780655553062508985267309519593374082191109758844675237294283773770856950450223708544544005300887289571468846663016231033363295329049336617234483958242621568232950515036415422115541226011680323054606395067534098833418766435007898557721676346055716404129445520832475345982875262837185980996082761034557407681153268070513134330951282753055301090905931790470899839253281360764443567920029369192244589823577026777031222594688870498665962347026533264853855387072392040736093255325963163585344497675033304712807754868527135717108346314901030822473094241809994043635174916537894129957404875596329497079725650419174285076284389737529886708882096598856324005357270777179563964181725512361601825726209881013483067079763242801684934276606420458669154582769051967356764962201084009490617751788495483806406073467438900846725521493946720403890954283029169332408340331994846580029750410368148568917142388917981933272350512519787630459637652735150594090131045964455126983665046046918861215265767718679974557032136002453236645859921583112758395192345671649264451440282131914612841696204902978730370065637890202080464888568584477141812947438600842875698174924073877281983776954449202313251313125321558714829314765919356571693714714757193320411301727383697240424835279262239407715584651993888669583606035722638846969526003090335371817488034060748773052536686803859781251242490846723857877730607598358969447563647169788495109519159576978957650016168166381842249841674862279320396732672607547362233956425835397149640605238956642563741885016428993646687042201973975842131028950026237149347799564961849210221259775784185466961876704283707636769114563666869753722779217989095382313343301877177297109216589774164593857768725146319199566196330021234329588607209495540199639310401601040443250189513716184632687709081486806905043897423763907008617703072931340575953650120404957231412513677310085431221086354652155267179159863688056452147414758220194323499424696915587113068286640598177248966375852884481996893282744094896926857348490499421212773419644918291363640434281106863400258321910022740709518637941994598132049662618138924393322956445727903473072119843805740688375238278075634721319790482979399926787155450127315292512494287638224307258928534699512316416639592102729720703261192677514924633910547054967312942916470439494356459506380768729377499438484879113737102355277440882722034975183894103571340232394274801538388395797104955960989762698199998840551382317116085343192780222000629685514438772604095920370400775225684079098400480972400605030511652454698859630785762365725133055008656677645204113754291113769255924889658516596855522647488827243121016338128724176164620947821193035054418067908568884732060341912576157911017909918978116627389341244679032105190631688565574849446850725171811666027934191120600090227252803560946864004238650173104186463443012796184697165450470809023283080455986664621657789546914698496036345947683707427614678227908672427784225981415067092253315376478302988743751404301687012331066971033680531683864615482716708978741297324417459238682640229976894653963629466002437246690358950922044117364028959443683200793187198307282689251845953699588885997191568518561253111008227414926828862731021634892864926264197258784642273976592542852089034664223399819966117415300593524530502823045599561881722283584846919389652724918545883912356647067960957123411478324205806029977168851311317093565329405292578665959428851590718017404920131024857741535565037617072041239529797479615230822599715276315816502782858332016666252367699731929203959518963362101715002795661447014291460300632341241524668123422527336363055542714960456147077618991871424379778530310578463952209603648474898819643701249056078207593710778153595878047666163110343335618202759267548044329482243647848480317765834962101160007811176667599420956245753498888701806162031970520345965299928449324898015459463269623746373368355548138494327023775893467043716899737364779634089462486734448397900539713163121103975770934481948646535832626761233246669938645628192642503062562856426413135245266449483992998500485258791857069404773072314533361219357128840918833658537783671587504341394394012406748695124558350388340545269391888216410717822500507586728065286595041185845834964871005151292757135631702734004588289644428930133641164634723754950803433397895729790929872643481165233725490767766581269192187046406106325945290403982153122222286220091109287619752947111224013352864247715581203701576308931234305554912707552425354407396620792941280843454701486510222303190467767400039388082179110763062866160951167529411721167878806977233860638383635893829537108831237836151528594961614364054011150182451214223672160050122146999286167917347142068299056148397137521076599088292832354901883944111662999173654427370763148412764344696845297544291281023298332514756498494413302863502375346955800998293338150972907460618476723750785496396360823960706973708867548700239199232061505055036749075547054134320696864160868307405019023164878299842835859276646592004327811469809351214741021456233557603239684441507346656871474258256316921669221471125229288912092248981659609342207324277723281800968565495659293116804376520687140407044813013416972804427827142773212007458646554264538841573900331326104033754020097404075694320094845190074978246073097443975159453150984486599301148034212171615942893484193553796846710298990443261404113324363384895498702685276045837497390918141990250245697409741972548907831445988372859568446165385652859214497434362141248358668182801104097637828587370979095960071679515903822292019499342772876052896036952527674997812704989443728717004303362431582440816638413936201825543822683138985360669100611720240569593652367238009658336502147715142929139230680294276014051059822702150839987346112516341409742580926730254446642148022351866187662968407821483569832102451765668349269766415792475042961817784577306636372700973664982948081000138187756059854913720833894042301879746468715999498744162646317891872491836056858138 +precision: 66374 +subtract0 subtract 4557062025327217875291202230586696633213417244747930507185337402574728500068797474478048612746671443734016519787594095164556213551957769784926193430262904171654967218300546653430502054689329257697635482230481955178844160881744545564333938842738200541571512180501352981235409448905067084448203331076197336543760440380877552998054655549809265949785735174280160843471981316934800688169567202516454825743422927532135253421337722513657050588605916856323031405135196468911123544398530855941492518160905103775850470531722033185034312140851801820944549749789382028206092781837250134748223425046271152749688461219352708990090551559318349127366041656686149084090200001199124752142731695834891327461745075680076753123704013614915369245053267033375649271592115850648302427156576512002375616716609339386804777110329441570156336244894792272822044195057884469400214724482743743227282629388746625910824874227479535020545227902489271492390916966610620084059893029016662782879770871839202134560892678984978740408352998895206123009495571060597691721901458840860186236504493254725079700206062513542193768359230242671273673322271130952556292161694737023703716771356166560818707123314305300137515632411660140174001789801748219188033620904182768541416759523306390130413871173781171058009983851923363390557335548617927201567742371117149885662101617161831070136551100545730200846206567303845855751221407337579700980665754879011843179481258676698477165038806374441667584971460624627102302068899355903167348827110952292626801147146509172385672308417992208839045020423116296099536712216680626381012917022971874026762049355493088087685149647094207358811746075366928809890575362435132900816421614795430866512217120062750346252812127279569526875504770587441261774228681335272279903605695059300166812275573535417087798486830394161875327430307561572555762008935863310841618675914278543612398065329168299082383675307698792473783982667824967875503395305196303329168125456500533610447245253587100652051844320484483785124383142404923138484076745167421064932604002206748270458921626392348963830917282463700511195110827275638341559151019253750221535200557123012669292200009241404533299126123911295751627595331945035932689852500680472306917059413436053737522869935909615957614097711056263879680399342676789716725565559424339274091489767165015689387695204179630008657430254430383240623934946380640167251520138606272185546921543817254986383697148757881193781956897203932397662546481580677666101425575445782398374065531474041848402113660425585229595493127974908187499426166195648545397067599772604054346241291854646346671551130857931275591281280844404943580980392165092789338105349139434372050325431144979265156416021740507663945457840429807557676771750027626477535186588161364862933670571663287435252687488402815373452885911377234954011958415823521226347119882271761574317436236399999264322762211793777469480819092453933079526917815078332230648071357183155771118315231352287305672501479019484549389237578362757807825057548710942765266221647099185671288408571845259954619796205843673188543985968677182817935357440775822680105993833864258830338818013743987272432304148430954587235162839965354883568973201103327346793201757620132852682762969428169092469169779422926589610852236737485501196476566984412893467595979978404030823674190598977358356072992955599505610346157228733491396186018752498829016920623394567808451403040338050748286743857245025891515804976203790872985592482951362307557151832639151690532851110675474477659164042324799286305906084828025562656532815239329185986278509972178982186864769857776350919063452012336369988252221458211546311363151300749709602869922027572269592703837261695426166588278806786891921463319148661419116609760868354671058281391991509182034444388692546821018446293944428907688231953451943113294483317129534684645438524549513690881695530963444171914621054796445924409096061437573838263497348338869505319817886732870834203718719837926837132926145369871701108034130215660886629478294761002840997279974336373133274791455013996657972371416704441214794034952123536881723965503536991697957184439768735611872838072008397768733325992742000651594876652039161685816070289068160000778052725493578003575311607941333423126851875071292284735274884858746486842648533742988799495374632266174697353509020586308811305307399108134602612445633041418557892698539995229654844651228746144173670305136581181766370276922593953447303414623164463326679886848338759922983599018235407258799450503326797377351885392683051099191485348714035501829074022298717001070530097290632387647351376619954717759519790211888503254627622606343317172440929921987019849626395538598891825842287673871218084062470930874290596304004937417147076184424834633190063839026615451496083980125187328380799497340836459441843522053025006413309548452268084112596476900712111172512431491646834196183004235444308117784935801912337409296097059144681248485901313735628990904131517105678903289871649262880635519930248009338116088642373724633143643542624677323662864116974165595108273379601598760368416779420235293262553154028010388882679601131763553321703155125452998322992541871264683197292387744023385849146423348905336504495291129096176271223170007995701526144694357468671689021837197771510315625400307315460395467213415784772399551648969550679904445279742638747601836847157917636731220723020071794371370238874646938452900280171536692344281587711087511807629163174909736899429119582621253313793590192834189055154661378714445368952190097674575502513623588113572599662168060332806819057011617437660811115756989748655277435604053850309107235561990410433771638586583389679969535011873280506592452495881970975808633148797796716078951160593907472349056874178046600507086779739202469771235803798693074432297303627456357208194636373712158202371266145991483993157626971607118890727026288041907791079800687522989854106036193208942306860485555675563033815189245795683723132378049477461417059419369470030179201388072510968000286364134935609886510703171015680003200231008009238355672868082012215296428294087031324910975851330376338243456157893212791906586757617436444436020515620106785002614085431136729361672539890296528627009068844469251087311987236766335689566922723304169809065222894050915773760110406091635315025637632864903508035458633147092150520800392626440826967213497605264476850743197917565459135203847619208160196938425437555458093302592462499215388617998262024167320185520562709740096221263108204150146444768198897021621237279610774397545691373265924538274286401698011393007855141696915244406345823182073097000160332148977072157828230273170704424234149004966782899479496965089603906253601424896674738360685896661149909936843944849237295484173668593777637222259557113485712905280313525056894441075837422858602879647949340284489042801900722796738362466182906247193684004673618446333485755624003456465751909254231278307582289537570917566442520773054624331395849545456005706000478748482074259516816880058423530559742452844665924281886567623605632796473223722153471260132575595023293182233168063426031692360538281480103258285556951693350842162059269429978977456362172535223721000537243342327027490538284580758313321155442103374761980234712648002375534168454727852592636984534912064843596226306082679326264717919890095525930146571813086914079099013561235235516345592221453519016479603787829771251301814713989298792187856904381714667641886128196615790666205031366187738506032972755829209157808761251826363629401443476632351434044908779285221669786886276002234469594810907760508953203474540546128208445169793944030550095752528067311492520990547552235119740417707530933901438278576941423896903750191828880742920961526426142785241516402290103892639669822990103228558085962722437025062478165653808088843658330660263168983086803920131261652922384837848537590289700474967269465218696102156809727957537758885325579427228412930787212224504238384368233375609604885841461084198931677369426559274828250696956071705971734323920225222611897513567179315365497015185396698503572706668911080875835331726690250678109063111330446943515239904204161892934846394452501093504707253748705589867491075221672184257306881135131967708993143480151861497592989217248294820892235375372507555306504332728527698252882508768756627501993287103858365171192913518017227075188681418673480167957665345871883618797538584546844277728722483938408875677056725344762869324573254624976109100668610527045390689687140436013270357793649497811405637153422661687969143353376180794968128754162255422658364084370571849383572894407671276999004499549104740133562193996464308001331710366523615045668287033085285541459945538212426611705663031411952564139935866475140331663579298738180028192361903390007224555038664939823191240586799216020916947085849951100772459206304049312174808038317575319227927528428800917496227226363921524665594156775950315406574744856750512455662651994246669878290370246423058328967271504759366367483241264220822242207732352694067730017383234942495757688876138241669120749983009795332747231174183338225447822310815064918308349106373992968360320915656756283158786285122576455550515023423802541561586285376654838911904480811408227813719513172563506141914414785786237672516905665389694279748856341662673367804624500202561027008231948015699531562068032491817678555127608890182466545678579194830697954389490998983070301077275929683905970820600915680855189151968219341608102527009215680709875123086976762558031490505940156915779460743283033824205051362995573839607649728758840244108862820609658358706234898839492852505673104454579027509361724109042557605096627572616144409499418040677169120474900744587023239451482258591765299615995725231107279461657437219498039369822307770266279942243025533697074667212504016750680542502353895849696723351061688120571984288197140116431125883193159057055043477058650689399885647013697950604789169191730468787984866041957995598158584672624816753032122603168479900160759437918372685378235072985876092566340028162945954724162553455576548355610906610168735928865170400393857451873165125654964002043088401119137813229886824537007935288749594484092789675277444656580745703291438078792322620874157292538566388508424289904029829030601762102753171533471718017036947341844665221144356644578674796148936455887703196643751230255894886263526769251110467313488689551051311979342802725956939193051129623824997714330054249765883677827313984540921108361500084244603905813953100484238574251307324720435608747347022947562568322516628424384594846889772261453260942604179119786516337645763946916355075435005726518084222480213033160279471906743829903481462818068786808618442495486701200194684535126446059400409246352125751640971008956552508275700627108421963143907018036801664156217341899789455751018903514638357236300629387179231428052238741325860918211505318531652676217726441876378404720983227518749816077864392362723860999687989190103028732560653199101802071555563251429120872311923648006354430297127099840940272895804688549094918249531803826067607943579523460171956485552870591718257832452446961464970153588938051962409322021351175210270952024339434101414769058208263123183390630102638030401424268071702334654839977413562025199185623268955658734033361909833103232695214780429640703659322183895313688083519009555667444345912985302673978904946781862296904819223456220783849744657519152192542309556013453702228327489276400703981129683994108312919810590555567518535641544714978108251921618222542496221936875070652233541305382616860088636841821147603248556765759372391275973657375170847428382697479379785543019233044761026973636938031938342200948587796693655211128985874017108008296815206558987738103011686261080076002723637006973867979400383326596440944040907479880458313482384366493546032388361078717294032328729618866581035139014990381318771518901834173182573563886473509922253855022651172540435085241719501844501827236049469165719107213324315123829101991682550019128282265399437375234299918069337387077375632996977023044118835497913247815691992766719573522731461805583100412534635659402574613749211474942563552129305085678872666764398412755142336198480446655867677946064239962077220834692082521422108248264026160342072007115027524062471169988240820362434634785950605703270458985279254819142409787081762969092219676372994932801659701727159557608051548274179485526915789581217586473282696835381433838266837637731096554729826643953689847585821295320087037398139654813639064482919159881372424624201017915992359371954224088765433027209505141484857044856811456498205507893940489707959396689808069285840619848903247611637278172060289534603589520440120819282251758321439397711376456441385667634503995057696338293073017452019530830742707542286044750196414041131342433036661629042591009893973649757100751686884293113599414444637320842196135390340051417937410455538568764683956407789694426073396087941510586752031418131807518802568667526218176736066463789415092344022474018466196072439866711708047023985986267871976796777980131300243219140347212850007920500119424948114673515031807480118326430850862151134630484376837794556930208563872692077761576681271684044689370128016728329376773884814499870879323524844626368060011595257088070419148833571687983943995597255620217058323596873537888499832136875289395125074788122143739943580370979396593734399920127946568380606987780438675436621470625663461154328425407478736047126502581147852876518344600257619221355098141396947909340351819637268873192618095688453456278762026281610829917675081526161021941164443401362347122326625094658864496518230062014486344327629867856357066936279331916847996485042756330977789918453360715573372014815924692381394768875295855273749999762953252377720133774547909099498983651174468953988194207975977863176463788133950992825871758449116292728870007851688215513934160088334036137840932751963908599138654411272251021443602108345867797578733811454402419729893314023416292150826135280010146985824555705426086473939590587536042441567543516057941472492697825935819049795550248663981993174120347343777770461628103488390215508093562163061738651619131523499138832033245773456074694491267760501427463688334700786001690060026962774922672227314112769469583920931037957021336642747689171266431579901142302481438398878298815746227211952570027104951656692887513032217276654152046959630649749005078987841483097338075896181515660655437873885520148775028877446547172989353310190937283032330647238645030636474862953578857400486890510382766959772934145261334677779769143060761391286841431736833820598115564067033562373872944968123813773044073270446109168561057735407175839720010078456317479925293467049106580309835064574525074277256094127942290841733899217547002285479744184223435050654568094652805175489109345397655682738328664233761471036174873133156149773385020989527051994644499967380074341467617339214269848578074568719754652193369023287534798669911964957319655222356224197818803055127916508016646186755410100545336194932288879230809668465882095199727842809408437225061713811572178561908657843427463435682040600335026953421015875620044125434136160445941916534162631398217168806605809939667605165414617434447752918744804576620380947422660712876475401536390906226192516009113663313439800021925354302105794791762470356460440083057437139190333457708472113513092395922144259290713029313997732018371687070377635010786644180801145972978727410494375148000038798346857107382560952009612786706738302304900584940957319271232584289758833026605875836700010881699743902615515204750119465373473696965137318785794458621891554556692737781740525143662628111988624544555929761181852452763370669138165862223479046000815578689402996887603658297857616280367062248039512464478975264550014209780509971295975474280421796253712092668679137089130996790647249658955910715736908336875772489248586201990329150088078582631283785292415977542184410844718909535063834405428651608742733486009112906478413594322368794422170912713479870114793380704417091536914302943098115768237255373670777231060185478841275357752112653024423050636115439677711765080961394592279452428405862115908795076691036710034273164168168932684933318266184244972373568081795393446169232238462147232510332729411061564014678119934841171358387533216451964078366851229241359143256942786174614519905232583245834181140498372425122502756923294360808540381742039446477141257279656442734949530668201248349998455761734054296720912896227884544854360192950191359203675941262545181802779401330044339763192331302274122525701973737537177213835368944213210085342355357597149050207486817752496495736361280441127400196420355873866151156244537424839572513176386298503196026048821544965618976676494894424917905799268509390911932696251430307150655262957070165022819268977586059026948595840269106830765336570221876113469252719021910273864676353276640801896110594607339343249024702227112374212211075412817798970021434361368610891528230160447402362456549878430744934360171666956023259232751966886284312657381929677046355368805089635652494710535825387531993192358826202756646213461738339809157280354322187016589878780620371725797188755483304363327202482191273251820645446237945484440753038749700723671060947860472092971366134277341753061977806080588491069822766149890676366319969202837637435480755613005630994705127404741260069394350150066205424449394608598400972582724209841466246720312192411676435547291787352058357504769642695968624350790838878615311363268318483870989918187148643479588350319102720139279967095807011838581108347466541504847040055813074462124681938838443934494229483666298653181111407245797251251645915789224879962177061611564432277038644006331306639644858075097388107851708420712683963313416876946476400404063239945176199767501922135404238681459453659066777016814511457469725895080533669576319532529368292906635086429103183511626824195433584654749194873954647634394230412234171344733581538848944188183847266159097663758725657330626188379618241947756901016750155853790183030228762823733152643563574468406533864176178054702790436577573349047357248916314603422811264802945402335988256698059058942287829437176480600344254410948219920151168378605179826132257244892113713390717576813539869644487380673676269958557661527890850777787496334850801348585846451718828469588146463018233154620366066216259238962877393836010538965425127399597917361103116794293725351536302593763103075814388803486921498424935301582050727448862133153649950822798942212581137744436232700017313366686847949806000439727560978329770353312531171254061465833758037574453991045188398795068043909507589733078521924175350973300865263510062444066538915555020581603177350804436971256768442788515385955002980212005276565039938372059026789500617406723661388081374404244435297617671438699983060911778873831296719502100059711708428201797241230711305660930098006931744526584316038164728583786257749534330304690582900166200577537115432055188984770929093824052394119945338395196006027051909352731011264178265692824499151161443341210432227571278475256736011964425520290153953956472089539997931396880339949826904577470062817394060886689354791587774811873949670629530936588439245483960579781129968213010232889195010620734023177512130998882091506596555466148778439114490815423715868245609883963247817368202681893963971339127393539642739372571969211960058642160864926644553666548235214982461997171182352793998471524244712356158862180344311212476731297252830935852449897644267596975033562144150003566614599475665271182182453606380815624901278870573547286939438129661375507906331804549370749543671266206860720136126679369602040896620201490950164245283139969245145678303076002215702951186171666125068203763811356128061310238511153970649430144490503978767098020376940268199707338132415025148464341246084207524825156398117591637051837407820432577449249300550264392710228550489083162722805338292547362339965970533771895690099985547052060549411776099717952055712904612896570616658304084480039263378504719111765426664244821456770771972931521729531058120250988891730937215885105803178197838045932976892999010529162714549686636329336423742613834455905736651293528348546547429679631171505976148453057749993960615759276202028772336852256932496266906249431409188670782809824637964813159980975720849996212379698162970018740904642861625373175940374401419148136374209328352410793003512043105512800165297883346966552545592865886314929803525055871843048582500598793690179291090230836776055771553876208385006315445139975549053843787061240667772689152562251751401184160756274615687299951080624861264544031057102907935738409022079426589085710912626774606238340635898831632651066378002392358382806334197752679983587556621972555141237252344828515299214426031923846204492155877545394019367851373095865368218292245957820669657952043395458275288372048705889384221916962240951572039599059572356451292549055892478460237617335571634395324465087338676049185047175666462217252120552604493792267870075758574524510980189043562766947687620892466754805762219603372986050054339136734170094737668664468057299784165275764600338216435568248491160669306799527231056860944732315422595876366207392301974340286607729896943767189322959318169124391431037441041877463194215217727240319710930747243145089955775376634735591734418107371385610936515468432754366436649431201158986690486977995099868081938798128573619238227434455554363373275929268992393112944991796769061917673905468378129092785242342231122751013651593836109799777382312409297848165818869831128252443817480111342665730244900530012522363080195849584368073954209209776229951139999620752009396655065356005205743163781848376570042002487648737411816513584908093149340589255919256045552803108734622741937487571841236619510055133421775816529951169111430686778857707860527610659633611506322326895129345892138724503811134301929354931243680823328675819488832101021606625592427342919762416710617530069414374527651265036004101865315042087975772907789946082239757738559908746798906091439207163246591220621365325879591394477582193841198465635992121054319291056284833441659012527381470379001900856300297811365567865727574903796415267436072670218311977030544742520060368285332436199900454078423429545818231680602918432933103700301965555183473788825047371516421242477281262248201430488032459454422015114516844755877968662017820401539371094094717584484539368003410429178157999973943318794499647519814882292083729896547307649553682250655635510799290343098524062195268287863650339190259551022078216325685908624841167993108622483171568782315013499831530942284142476691723008474673235716379582928370400199421319931784216132386367015811149631926992154354984903910972977961455313133031133067081734682870517641043069766653787600369738463851305149782357573806542284582970703305565168919257503110407202302271680120799879098377949478776588495972691046467883124742944612027729242986818088777904148728052366261495454882127203587185320217513812472837731742698578948469726855909807714488603821079478735527018547890141251246316131940478486543728094326460645663954100983041926530664184209278527672268453001221140744103171540267482319496429665192742056157886146627030130583932039619859460900020700025723802772626406713331987770769342945366969155145196110058510874982098588719907728444699225555828656035244207861221955531794192733601137963719344248982651632433708311463658545770482692468384444087529333145856617788919263564866893659060775463630707458486319672390893171850781813599524760117224569203654410272719029750093599646106317703536972778182502812120980464008093620605558436952439612154685806566330193586581988221814516081799436972318823102463445933373854847864946215960305342504459608750292092800073265264360619626301859362961978982774231044652657480573862347673682078921064760347433382488186400384982458395596481371527155070852857865732603433011635032075156665796056798890570577176247706670860691807891136376682469737175600109625172588809257172196816922787097183505241443342414974977962915715146365628856659643556407206716198363574739434400658798649258496825089680536476695919722256225780904658285487238251747854192434685959061624373208750147742664980091105875912800729843051800611447421213843087423888964742080843715103863392499988186592871888312586793529066676569154123212078271524846093492119940648256250689504055299842147203528163807094235639764920109650244870672221083287226031752933619526188706552284000072405948554070895694279261266843086646979723634024763180138487860511333808571054546668346777300849369718936819171752076031876245274279027593896154703376669397523407070763248345781451544205020153366285148422808078189329820814424820884936906605344533676222836618832045943739586542742451350105740495801246999038121089996949633956886431965072805701054636012040860114265426112036007296292637804064320324760459988497747581927362799794625826973783932887861961145127455602526602026373663897765543089689936187302034719448174838672672785497600024564370900198677828770511391486251383817952286037318341145749544696255082605387376254238259884318369641166683343095906188358846338331357228246100711295959904427862221942006709213294446916929902238093620672301952210976283843550216350078596050526959464112168762702717319502698467792019399953393597569744616921187296195148274036555234195343754838591673119228873230984074254295146912136671956826684188558158908318004092398670302924450151950967473174763804779788934496965357211057156217194914981152084698565499169287759432099004732022713374685796576316465890021917696248034707676205448931562262111909652501602060480220792886033815257328500262472028240077670911257623761213099020117281582703693817925493380647799011901457582649362873631658006710364686229625344738514180033578704088680207509565928122832418829714896152583312279562320667724408376421302751717588216965146863081274643949958813779787725978476130011270801002390463656816562813541963723033688288249261093515218064279607560226103762988661848960075600189523399385699143080870715207114988564959574080489952927494439977678659634033209006545596523432038276913551471066849229595703547922773754424168316607508203952073274055356702540384854011922655529125229752182010565723139263509302054542078655948770321844591236977627555890977224256987180095745045013268532275597878254013660170315439168079202635006619523164785557766961278595339663053516224065178884985661257515055918414654444090779117971392440029631549791364941404424264857054138822564903343746077769013162668877306958267473561964029867664109610078101381425871187286069216423866629154364137870599385669031511629692969377233907029639458093958330753519852486708168805485433334036407124948979480674408255861145517691673707874485629960673633377531831892612199747130196237496865453579393665391054455373114405203556735112483541004779640355628191792478856232487451788226422629911868648811658247052839149369388192276121688964500746155799031667263175106921015426341781533249387536637476100831670666211500723131333417450551582088257993044029469196411853074425130546291042077005611620309403383244277640985561062827506899388214302920430767157429381638092553981646935367466162408542324771813079856761227138169550262951097342022383552991998363429476447610724347023326549392850200687659376044084290789712335008552570922480508494329749721385186356649432041601999520666932481033363381363294388962128378995725993075172090473406797628533524608121275038100048927249718523877182904939464740240013894474541791650955660063453004888581957559703146443680205972712794208459360388692987504364435185636864321213646426221524052222027117571546596328192065069231963036648200421806357595653096646100061331940288623394218195092401615258069117899410760136846783806147840443535079689493552244873052050456800511592263919340658780446675580870489939986995891003032953330026850880433476273361094096396714775167487177430678186703622388067308677501654099477445545708054735015615596099759086737804382591820124122353294332480945417868645505183423215561750680261269399498375496923091358391365727012049862120725086573307952257145220181988233925909921840724644530353451386313669455199652434170840773259034813230955821998584549790127965656408931053673452196002690675495020525758780601327718794976341059567381104098517766885444312700860865509792968102927284318392644395586588576383750076305854453398646475593885751512472133521966943983488136027995957555283288697512185405245374551979427909986173134722953817713945657006882888629631350672263834702199030501546770932488138278194560378276520283175874342595375691107147661896560185010081963741799603475923680264534478329304255207595081719179994457451078436234300887114395625763097973103232440613884845218701815716379732325862210829675178231729366422119455394227069092788880399888877776548474832471041286308548491226360757667939318281511036444495726847882626777453055566719594012690164541668546617152881333391177055685386465077679161638780513948125942214153758224286441980083910205577343775200189130109321807682434449397461750015084109655847197965613378660101281566643151125106102496124991778688613497631140940060523817332956956062900022088718858234499535127723576774214271968893929570823508899863792266431584427640933455701699524479234941546259653277044730422282724130716097136770202558737917173327223303141726361471684362161704631412662409117181873012866987047046902186751950906364409557503058648979180685315098497518585257370559353352690937752655849240353200090589134012145348898337187568554697447416200762258470528167834736195630235663828349190073366840298516502689604476299155863595825266284938523661373677436743240323280578187776266760086394104729046932626750404437374344940357920452670715206542974638890396725053520512183768537799838084120560444234151483461717930362996722297854595069583555543522183271834484633008170979249014135711180654253210299297837714550526887485819952733513094712102773108486680213551119435648346300504596100623919907004343500039004295845270516121622123427777820376655849069205047303551305173592284334206458721717753739735686114899288370648927381784043297589710836654237412710511702360810323400472751635653453393237560458446230761273332856045581259859818702249656795270498195735390393417667757627623476088230444997972179837618074743937232968390499460008361867530076214721344470397305777745889631140408651006346022825907062236685881190675163511364079338246226620397944976429856754606839568686466880262750964530983335574200980855040549346167177989289612858951479956780964637654646512652225420295825119522391746620164906785581249040500428059841153432200381854376461747290153226422807819220436051841775707909597139744985248323622799123523113585082742912125933452948711664965684207823937017833185511588141227979931893393183933108701348717496940209527016324327556539416638527300566963387420941441754714301390157102435751216337341987938217027195415245068790817510578917316461280413983245130082706102416017088109367041234489210379255079843037267688000067218187993684214546408605348924030511869344814194068071271029048510604465798874128303591620282860851413834200430623139943525995429815969446240493379064923955174506352502021504718428588724533325699549666946315384005116201905292874551009728295591628576821511079108911456767573097179804808391865589102313989598496454768977518244694561304783539597066924046500907044382591301365195971367675357354714478245743401926527630638389261415948014658980228624210904082497484647464952685019341228462276192006449769538199740287310704532718038161825438555634280244598312041854754990929434213108031377906233869062749900257587832948898543838839987583547462627104850758332917176903794520156182109897034454922472119384485293825769032397956261800842315929556077017899885306001258399351427031198560674734165403234277785020223942914962482675138387657498666239398955265981415359897373237379439515259517598188630452476782034381578992129465334659738097217363032041824514398023952265594927792982774606524552218216657284366319829548495583511578847988764866324629608304114465472897852307072143097742737910552354127015050499313389806223284844411678921273668219946970619473276119615049017103958039400628522860449528238919112612382495100004736155419844130840437865012534409342578357087802587148198859234005338297423153290663456469237127937864339664494026804030276188114833962064501520856637088633597513011880888563371382248841123233141540366139281315662579536317509356177798217880363159593612870326485150475012230171440213035251385030524178586544680881245830763719747677361886145646710190394156768959891049439339997165499328525701976819690883972108921729982721778984248022017206214074157162353450285485854668852881948211347123130152438048061798599645223004180431026683070441004050952352001823732560936086204489695923702995658275533759535874729405198959307197832314820161933780978367640514584679792602498630941074468671202618741438208080030768407714574234520793485453463725525015656909553117998753450372382051525344580443448015625438162557036848021148915827202153293600448018063851133661476508249702034281010397847995926055758239876530860323817904019641368591223990143121985162063039275575030321236252427866373770159304257722304034735080489988554795139286690567905435501595715212319610270511289461100939179064327739010731427808984844853479960437363761691377487781141535851759920559927310422767204306845655086589276044045588865578210105818157995291341202341475319177877179418330987489055777970961774546257006851807132699361449661906773558328292084186039746763392927430379823550146499545595469602333996854934782534735392190589888297184181762008840619335299177670873768617797052165490983658595271075303454783508162019391573182601071539822043931894598161107528352323827163934406708461673549854630596805781470925330492399797984654059932070884109821441233734415401787392144776413837204468678882196960976711528595908865274759296842725430205764170390818767425262163562286390725303540568185362166249530726677020419165724655889046994623423648123295909233181704300702321707871877864487285334403036886414715310983781455361893419661895128336963599533901483337643461425055463732807949032233362266273320209180155011422860992525215606077288024201547412467947098022894738287963767393231942321566770321739870106158012280767919125374772839205546296784939365716130141975354969110458077114929688071970422323759471602314734465922582669902985002799281487015413828918210171324239412351844905016922742376573703827444185328533947987700913169913072319176329189214589572640829933543922097934267726895082170807132962795588197267375583792414961817013270155726742482713949070197627879128895956238771844752700917407989896042512735990167528539494496232874642856568976691510606558450900839810632480694102398817071854190265716346830326934961285930833867235682414593142520188279771741159298155478191432546713446577276923064450822986765786878692749485847555905700192325492982853794229347340065352999069302719790803074985039921151439881010388938899386735022313892248738763948220298439368617490674499503450843365566558826634610224599290497563525073779321947780445010379636136473247926140173521135872561135979823875879304068211898533491713630068142138876611017096287731454786254055385125242305268027313375258342289510584382355064220607949723595800988244739377298070250594893781267804990212721428610006013378795497222424813800682938010499641400419591071157433786004644011991848418168789032143182542703602542750121260150078300386466600692321804582414157710613235563669814800435604327385724854451183716950372875118756872897788320690672763126472552159434902634342222037469803984934540909854412262016129046368620594162814864676977407392131913404567233717843565989064444791054654749450142886593195681464135969237663703783221735117350991158263136899434735297268990081476928710479846301046261683602087780640028741033184946816446867203301723249697702046754461557081949064009197832263792120200361264324335919291636330039614295879595363698948056281733254279542625425628915051118593180980906787595977028233892995133812260262701509574992137888468825992643226098523918333006709463720013647297962357119173895354915408509096003021286274535183714651142475802267595357486371085852244491374644607926906455918372739646691050618704286050162342571513635907998762674453607733933923645966168395940829006496723016453212127303657397949187566538353706832728096442100792871574708194118739508795012858393863155868492726792678438380383340259290883320526318903542262830605162177271699894814774508096353083833505684576995692292127157181222957532407635164174785822790693680452603526870185217520077140235523672659523021033077220728522662426474586934732117011369029765052351070897236373830406611635851225797377758473758830797366495388492035344330075245241663778740789189649123568852569050204421595211499121345655522396653673848878340606448373694821122880960214100435579854429162344140193137072263905447172976179497424355722488114850136063419390294443283894237351070781962270950541142936436939651307674889754333504483664598301804070941791641109417194657585926940700219745056590488170681925010222506794251599086750324391847951270725951815272831438579169226866645702579185471300282124180478204142229095210065081270463070856765411657751093294124610955174020340676517075454169938624687225956393857913632563916411910768857435154095548345013759399166670735679202889361452615497412349016284718829909821942144472815407944252364713449709115601495686331965789422364965613408175990922890256783994770365700258164631661172165798570367215376002380346063904916031988699235557739552180119394901804568761455856385817194738625177552634469817788453355207524544437458038025986145041284382686403917062153227079400092696917183430808272192516357662823797009228871536280832639323965417807965030113261262768124517294320790719917127085189251289444519314247412583160133397731919126796779888041397257098725047315223247407208746460254018083932952960306820249128103658695146597874322252481055423150303128299826725285491823568416238860311305595998370980767111779687871249528803843671169707821325095013306718895394206694803991638941555742081976378294424289796993334100479609006929453452555154384669188504159290282105297574209805078492769319854632037472656356369316114306845989604592556876852438941735261829665540715406385543621320365640935487409490248151240630364913016294326491101323592387984033316381242129974113563718959877430991267883493003979101720551160825835101956432930331700379384221874270506165388908190775555313035457503307202644492925420981181983967408841930531081592003234184830522950943972674106785292692551010071710082614962347140729739882196174029258522417582811413781114403127723954091671026211594548869789687965357386795908645491698717487464932936210901010747762071652911274818604042217405657426527188502673792218403239177795377297858837401804713560606817556002501175711749128746487463665308074950833519044391328847894427985457760699818713800924144995324672703510833855230558415171459273541033328661666231946329070276270312022914628077372413233244578839566347094951208274454142070683574599796481744730051649707443117679929677536237092450064243738228072713336368544537408986366751538198754699674897069809132985808771699446323549563926044221620071118466495905053680768556118719889449317123970321628999832655152825671756102046098621231276240673906737014561522926980046560251427466371524948231545997611718763848029796671063956522855208789865141323074427768019289286901064861213652737177575034968614763412436611878137696625557920817593213664583393564577016881171227907060105189633317274369297120254594857950420242220011506566516857955187708487681771563492726038832030347727839100265980584237947697500934673466017807368268258740219048205035911967172285176733841727152472321983042149845013752644137404486679103085674385619761393913131013012519196030391345622488076618115197293868109150149383922668442420649450443309088322106913598078264762703588484499276816192320906539945980772106882886761151187784017054462110385083855797644359204780652146174106857318975095295495016456981005257641281668129505033509898589478586837910601537581924311025504415530941094394338736616174085365387501405372015425865985491478755389580478653961408826213529513033784142511831630137860922508595074076104198520491391759730431096684568204551065123482619105066908681469301761287567982325779543539037596336201526803405252046771018387877733572178804330984511640845998093260638709168194967472151606189557912757220402168453392445827212824365963113698925059616488271429597993610297171748120858441831677978032279971498580934727212666067848157952149056804581192403831231379564695376781009640887782112523689291023409399089966154050529640670191777774433577844903545404826911077026231735490622677203956416744826591454768466652019565411498743897705433850573460698346624915418907121762041922309887084361500233160453226438654642557925308088705587645895670884426866074920003536758198408948294713318007015925228096057617960279200303913954273515541397625156573969362041005836919898979161025361697859753507280976634193605911953168234990278801562764598073363365967969138830229526170701286974134190480618732279626979245567458585890696851518821972769285347707672304671602505428147719128588728790103089789962440963723920589795864463883461179447181425458641705189580614902389758174695154633525092875824892981833075184292440547614374148996495861276611955970573242548629584274438465661318114455781213350703510991529126045499750029394246319521950537060794032985668316918788750580153398911466878718170241890127160527108605867426485218881604859107152243409864509410495003583384242791396127585761375640951451059484543238105107028474545579471575234811450962298890247515060306172715757326300500431780361096492119246406104617291948629520894441692200382004104149447963573144010832522206099999381581544030726601541636227959470296504602644542594631939706588322054501270038402022158739016945625923146157547600944077568562825311593364282818480719886657206105618781444371468074085386647356362324367961472569988681412348181764676221672193792067394430338153385788965858450973126276604601367255952775434034056595481893683274576147849190351316503542857594612804548425320989019300948248850658282284808211978731343117671723672815509319058394068118476244671583825831318626575644160042696062116470004007250000851244801880446050804387364761771864072806047565014031997393431079253214159313905705645761861299882701714119400983015312214962297509836645776074378460035681871949973376660332322919830291273246870717939136533299990062260112286971510960871199134964496959312123435361811108373282287414965446033313905495324669786954095042112352609335184891414026768110391803446671267726732972467630628384858032881184626233645509189780669156413933290562721147467841839020484780273171122943842072955291181022173807586167055698325870053430441337744156337055022389515064472863669637024315562051037458685785373257834144373283670827981964709365323112505565424756455846409597677010187641579193787023030201038775666060674177797539887328546728056335925589019796103238993042586344657348707822533195863023057840752395384659417066143317019222468992014011901604706460563568428442540638901972288565192162600253155171696237160323587826786609309937410065076159738409360361103000464982684224884008416285836498128411773428613097843117365063214749506649274557410118146764148096575803118506565106754473852614153366115269505857463042828545935197903386049863822033323176440026986100778645313450001243962488583093887942738480795884591478625082834376698504243577346661504580409451439510829609436755608635491475039807946498288891655835947595724502141909097691760481141341192732241650122618141973624611403703508860310467769656818865993990698244434643118751549050518812926600265493168133823940883867991992705582765303794359015925763756771841712478559283241912114900041572892365129417038534575040954775110422082484679123002398064170655494680221050152616811890535749676808109338521892675842553434953415096423231495765585422200314964226470421512419340172428319489057314035282903717655876969109071585055049263205545057699971205700309871558038236676911246373440629620447947361162768126836937307217500485385339339396582909882945095407962695181218698989578898534232385258444709937023753907132391750388116317068677291236092140105113294544551607058465935327520863644060241624897165479662113324312796150060961084592582646847912978486505837430263227677190494578978735869845903929447872823705317108540033870144296133719482678904494347694903030750881901609471624930824959650273718769003902384871401296889495839355473062792349108394480517167429414379334484650271469572138604925752870336009255369810762212768044407889216597809874062734418805287021074009897088265343030130382023413142488106605925176524247330260620011296006436474030201087185979118476852188330108632974416434889850129829084586486870820592379059370263145309005097065399420236223335645462398536997033455729502481676248082843467691178304651569980530894497580814673747326989031117104179169263414244653750254216493640624543766594045557039975909298058967404372438614203185151762224099232207276154586321258114187548369134276526240412256021873316099140211579923069490115810985273616535061308135597991975017966111424710122965609476092161146940906892567525168723868480092411609752035035649435563066599780229159314009212355546548250919375348514370096808907230885292188515516324790392662095775776851920628250884352552728993506220089860955130765718097566895331489707368764470850748742482585623795786278880115965128569573930973239378411824078967747180194198381956926159223109959971364100349892592267550381379851561384781295038693232570421821474105203048542591015937184300334805886162517329709138821083312629762003365019665984368287946214697590819286165062178617049172561180417689624374962697182191866772947604990572549107104435479765243245211167983087889462578026688058601140907391452635024374903731424622483794243632429324045393245202879853874791066251386222819915785858838378028240165813021627099723774219857615846190379146677668863748129851759611070792458390367881242444941399869672116999194133580018326043935041944900322450118316633018174613109253782667873130862030627210267437056625211983649864252340909670935378247358798589508270826745763943457081475327273701965716158244593222880620919271460058890697418218694207563507654393869398574536555153624912770849630926769779911664504836877805323919998588411583308248064347887536163610007624937943579867160617505187799179641528333790445627985763435677078139425662732248171117856434080105271187139691519064817812151328723848470375485288723470386758715185259361553503480833274760757176675586618955427218042960231528543090027006239782987808790385923426332555386640969931682758669402581160950362640343738417378882673421577600556718379470976889692553064387439950381993346629133075604805901409984229909465843097995626623913574598216620773051020223204260069507783786498216155613189139199778840941143260581671672670291817014588747975993340017827366954237388283286037436147364830907440165719866659605279465442483666420337200110288871955500542852587962319939636599337169925723361985779134265615070094455458326700525654226162191069390863398343094057989739073942421080527527368268321438838464994987809106614819623355675124380739406207828690601439349413359348055226015485637960658364863019147263225050914834253394909212397128893870818487312292081771432918943175313572482840784944476216301966270833203175698737455168260128390032188144251108689661611103310081268351473362031308613213555575609287581691395287041237996921223339366868536068842169254439831060644698869572230653739477793638406168886711266994538402794365903151032009211199880470402399615251190773546415239737947352316305489371386726272650229753204917506971300552747372313328882619129399851861205461049094163467281783667219642828681402004327812128398353607104152151187566042069142077919331020889838783213243339927889970842702981233480407070328727454491199546284145808281689224042685042693864412203914161598282190837214438512796617677313979380648130165906887026091416520115349210211672907565726521434216316542044226099180875009927610808179061604913974632048888057781011828068031262385762216837712703600346826065448395280009078314392307173095491694885466452680351121252886660777950109353541309819607020757102545827254095328904248538407243727706758170058314840992998882085842788856615152427735893533221150555299807278988953310938196252497458050868985083822070394438857748433305723191964963486337616985216248455897815529559211116142144773288274814453503330389367221585477606300000958230649566325308142903175504901669948019230075516798982311985428753747979143071059203112696405422111017176902427798364601512910207660787050568181071830815900994390998418483509478342924531815856349782327932675938619563355407407192145891274501810858250253441498455644523431083945859845123661401664865954070775364769610078087067148073701160193319982520133505538918880874398209650861371608712788892820754131341755195361607590636061809683741138742254356324958235744438381700241440200303495716251162670225953759545834903481450452600931759840000525450630065355777018729318251807119122405521689116907409109936437351615531978830969076485241863285196354174055806246429600303223157013047526340241629500264219700263633781650929397263735232107222126687845052659349711006614141630040625085878215314687052910785597139829330951335321449462146872407704101391452576359466537758086808304786886368369649040073315854088711090830996680981299788100188866250792296988299446432963496453394185442408859339042719908407423876845443495145879496137106004807729887008684744361584129821478529717502501287612728382871439882245475438898541606509980604260961375928326314030483554199662021560586147958012805291298951260581740555343142936022786013679518469823917197767340834772740348260642251351640783267187157154243605574496612247218242170938062334898747506874879817608119517615061218289605892710479511297086776066173985297530609277247627322713294273494550177851955377425801791887356055781972025333780126556562885773721259007816780080546477456440140099082748572233874191165847740651554553600268390968935504447831719679145925182211492162748698472614058326141617737840981702327530492386593662947655838252853762765019473704948993598894172760435866839705699057915577911752737500022247261645980417186443949194377286200140046328017386219857211411732194499198010297974263815524478674345357991000610892722154482525319439403060881790992993043850159625067789137582441906050039895311434156607648297879648646408291157536793449160301483233444737518367479241881598843555628920318285492047344664748337000536321435594312041376353697372806705289745022689038800260619903603424406604208987774151471345794529088212641407618658451344294691330962128968117810537709217041942774469319780476969950312676325841939936597966084936331792738877213308954252847273770260781322251343604277847391015839203810174583308532995920845331691131022002392396457103692553697029054706004551271540045573746884918592198569449199369847156213559732023688049755556919696461600102191992762437869742574831684177090121563124114447920232774049537621556802315419459968745124567238499010822427271395867589656350857005277482364974292553840052479904459961540213015031269352947258941143771981510727925859895501086291233426203235066821966451501038648362703628163301676443842208890802428632229975800443430601608515449859307446113832759993854007956690343968375017796960899155662885230354847278070910327600576790969556182821213656774571242709815399189680271875176207243346906926261245966755588804033050060898784886628141862330867083751803765276551781769171046599921736851772186978252796597935068951583748155232614294966814856916382573143526414006794318941774738459940792718145274441767594739360866786055279783348697973523588439581199684234351489732330166627393765575483461312701425211369614220949474338977430401159538258769343817025612542282236888222814312250534885683446004973777291654244025902362186427144421520324116405075104622803900610256360152789021120429609449929173691821089480096495039208981742386894560945055086632185312304570229164671762062346714390126315876664080526593362530504188166912898678733255234958161705605707227203347931442798362650324879375037505685749083106406229215218677558595672449758491909413508300698784446839821665953067363065839081081678478173117170587666669385648350923522805469458636423302586189623985482064541559337313409110989089050224239994840064371316490052274786379665105641338844913938204017235859218461590003021862590295250810411055120735504221662339743050193412558893146645879022781829671916296688586531495028885482548911962732489522226543122692594866084584242653601990639270466368237487848680714268901831445492627195403387191262738150752351024191837535884014036429796267308618006974568787312884936429833991562973414200639162657349835027213969103408304699517096599255961167491222508069177537722913667436391066989554604601802190104124475567912901631525143413355976864761484978809125766553426868741723843284023636899763038364007461761165696847923379002162935459304104994832828671575446583654955214883553289593095080008706975484570439963226706451217257830198956526055102136455897536424541666552753914092171516071006009138538558695457033282182138829747540634774687168063826329045073391694569234836019310323997181462879354738915465233644285000239498360570133474134360694852613890783745636194426804156386480101083393920575490353481929632421622745810393213516933876089212588568185125789436704491102761816908674377901627078063096338765849912427002920263318551676725108614529693260004992108538310401491073940071385059117591782381653598457043272921976749520629632933625246761652602493619400058450940512691391127296325387154188713753330866319716088136145589589781542690489980316889280344773732719495866637288210337913675771092607651748392502943564311904499705901821283725132566533411776055271696786433491845781781373945802234842663472436722875948346141469459774167785234021878012805742650422504471532589914783120683708744153615217658438214070451661445817623261027084081419929547799988230034572938319470367374815371652192962008998680772889347011140894150131423506569313552253651822677999278965856508371083387782969526658660583809314786237701731432786479049160469669435289641646702755708710280920017737645328457332099516616766289561045036453320217738622107007091217673149394283784723084708551288696495843946132332769313756840448897429769786105385985579424288060551206707236219739610874894900675542066061607757486884507277064284410835170781168939168090583379218046148710087595526541072119774309790304375820783699091644027194334895320846592949679357562800191141688606956768020807634983413904957173916242102190359880108763986054528073522914223848347390436443910977583509349498864241774061099826142599489449662214973812475570150640016879797772558825270141833595379965128635530741713786144151009578097120604303044952812608540881601086213085473476003650792399257070424945721285866084667921110292911774048664201025445642410017074798334474072593077310482382871960455459286822186056939835418916957505917845729986476341947478064434124660335041396663157988199112691234385308275564130957751295013121972714564043581065006512491494717831303546373812348983195809152270050812500477691672824796928204343144328864080026949747479160394781820860840435589578155918386045900219588426435842995993717172604292258164457145211692597340062605521033030715304339709763645071348485751163748581359070635855355047171418327211719989423248754691410366895154654484272470036850109060048221862164900504772577429414829763792243964797286531754601222099874248764307246975992724934136269794302008886588634092587693252308614265261999185170080885570011555249425795620202416544479033722363192056937507359447522477563782362383901871527316931622151373848289739112769969283977274556599837625915061012378712634467662404344631414005196381945278641989856220310600404091607089838020640265692424602479046078955195675714642285941848481734832321922534355799538245566377731061531509997299635419140491359508145538584465221494860607456841379042440457334645553458785917043809300850575476342611390970754327995742985448526682343834110419086788360376270194056427658411067388483233802868913621937074147655572052489263296023157461861794776339846910689305923267851028742298608275980295623746829800159329820995284701056197687599279182579738901457135453083365375857767990620998949146697117356613951715054903915542870972741457342064737965964500407909812842686241965333481653842779872005262740802307427726904861872845595473899018404404252958682513940215689440670786756054555702243934175832226502658234183760889885859657179830289715879745762262454309632519944891268669595508996220894892866350421791719605602359029292829607789939495137462446106081429011533187373053077015992320527286893793070185762409788781849688290940158127648816667784891195030566590115269674681955835450404431460030916853822701062832513481940713954517215981511404728930667477688985310734115770340301364909027781855618403603826623720528422875890927563229764677955125239329567307790796979556739937361063141595652878857848840443712965490065197555335680793083554318604501186029787126754749641580202837408540714723722107286882821335047930378469745365234972181283265966162072466509439026485968255870895574548674305253414232855385857630879722945256904102347481286208528129533344940673241903478800590783725243695038675960339828964409438750383867341474325687500672571753601186749756932881445328782106526719721618922329810828352146039515743594522681954052879375880054823399740888776365298503445993338934307541639371281522886561528029076267433070045712860275797017461999439090471521433598445716957447684242998171433656021577441570674780848867371997133624828413999417460193430192024072312354133180414101100843442089210501814343125118405544291491275721860578774952699863214345425750579200086282194565160918706610494907072773481404372222994115203115158078970763997100229701099927771729473736078682685850401141789330726262146746278079234565219410214706929503405922697875499936004235674188031823478574652049059902126993246094813444958340490992489961047274409316840048597458911860780916342799290807914002267040031419370329706844507171495650858227736946166281116678136078349475242449848063104485056412558427614447438207796450662970708827786219211903315019129711956419254357989226091629749520624799697313962542955698123848092490698289459399608766558392432505519473632229644375754425174480543084938675792254467262113177072800006410598793382376230991330009606587574740889629381831123588562802354398871459723674497228063421832733465911481299534439600590896171232909440309813888314126525333088938013780396871840336978065372676508853023336793370914619693950109437330284282760598189145300915690357483247638453603222897358340743054304518987405740503797220076775947292389440322422370243173223361939621268662485565143110629608296770448201579834478646947290311634115484962318925551631981680787292726102484560189092899823304354934455878914399319160412017794604817025443478831618500929763861240222917921759800345824056390990669461089513538233165078621704485612427293728277066697489369016162840664785853750174854495200930940365612798295759425845150898704940757151486439635281689712594302792851395733073970448489852204560205402030757467441183714000637900865482622680676197540008088781518236393033869226774284327073054436318450247139877973157774020355995243279469702233742133814548052388942089703844795740562868494365040218501881791455219931800335165848124158633603096272944806814441331199511512329185988578963624762762830726536482273599074446232215988576900745626907254455091259877934395560965001525863464253020678398036396725051499899698086020968534820444218349571802347226278157094209680465726504827733837123389434817972177242451156462481158362842269595627805531059832366256674917107012434319409521736540891321766310661673356705803486190326665813307999332037895838665669496122005385139375437282025345066158239634521044860148939712705168702788004318668320209390267716260235740529820339022767488887390336629761762547468553309241295474842662272265403037642297337633200833058826487909466422150442407682261647477496329680561483974955661344081042561410484262449658451790972809913089259204425473528836766979632026287693956536251405073061155263571590939520023328110720576478376603553588156449856193956178181475547078257477379795694919565303590088913075492004343584052004634963622220812453308145787587563111066212385862929483791494393022577629877232959906757882469728097437602697802957149951965574911515895316468694897302508144000572947750094493704857023155581368080765272655500417344876407357073129782066963366725179390024410017628315881028094836235651681113167044029669835565882264277779773439080158958966211167896922163314512617665377946479368575610115898347382280651306448459293375898104078593296945529803257913139851256317726405542900221272955323087410271007362421425390237554429682693397141327161089823391462034686317679217153052003443554140492294741195231734439332837897212908695974060384469660075614299220551391334719005756757409180706237576802009266743913438338650831302341774086601646013357904524752551161533762960325677680507455874991992479501981919065010564222933904019299890172710649680614196279490145057381301920601322035751136203718086316948714416879144929326560283860757803873860688331897752447549537170016325948233047221432856354126044053218706048706225710524955189511026643505472859299769773682250854870819285058517208024086173918272122374363748035160183182276431225887656281648505894551959677372273652572694624518869297329271965540895595589427170846172377441295793201069365175853424820141692861577036750551441910614091368906729645136295801667648371202788398713765688291180132110012468831620398805604684588895388653763118024244322718232248366866426358123419220341424020630793918438320895849507443025239713393882642681951936385312357269034262380602323861684515625673636340818609926048056102065789695979390118809910404840076206795588714649734947692067413540476576220849089642538487152583431545611326486905640992622267994667200128755248600855822431944610408667712469973546046362028098833997082576852970388943094323695798986012917467090076180014717674987429910156459597373526868171025929768282054312514001309524509363759096462787199506269189483629122616368551491190989780741561838180777130855165544032787817083438961511790352760901992827236207709573915808360521793708719581078932355549210137523057092203665291652369502382768024675982101234132710114171969071233283845743156166333959707030113777750484831156760711059858286394869515987972287537626625289335144863414860600428217190428533721738561492418371421532285270507432128312304454861918670814290314789969382099675301386544698800643195450308163354453041371794606988607234397825916001956023622144294297997200608081181377251951367218339460964171583016268945825650960654754768116209807648015661272855782341563494687349654704128953885203016051554743860860133634035884017455464559137083291717170298930494667776446921352953579997090224946622661471231083175378456367559880986874416236163223741932914038716541060756083263694219676723914305826711618345613095865475578096755928427744784231005666728694248556932840618720225996826216922277601601316961727494749665770706025157746358500428996307042375986286082229588804490524668870343112217737938436894718235644461035263089140712963217339808962238731094509055724658366251901341870364082940673270653512194962691306262361026393466885931138094762122046663142053565950564654048893259994670574854680160010718682809523586108090285640660764270480980919760589717021699031389651542290010851457366486524538911796936303696186959913065271817118014256065977589732997415374362727829180789426747904541704251198441379227249409499708780714978457854904896655260139245469337237768423471086627291959057438569050636647735990146855814903423359978260218362221641376159759583773567686087570901337723650411949596116475633281780943958846917477667981906555812961739305817616584145940058908220344037574068169633890474971550079214637771852240966887845963163140280690947064967674165891349420064496568304616362038159016544009145495654043805210105596781392766377726904553392120668214506865061507437271098686655042368370731665171584252157859704203279313393903994391635127928314923028897034148947679653564273321586370965897490598547312437694219091587029783513848690503477763674411750230678789392764929022837587613650654266929798173475728149306002018881624911864621828186428418381704802968300826021036256642528414390592721891490711752423958205056684928925773514194400654529322839485493431175143032040312211141849663569839869519666380084520589588171406534289633771352461278785048317424983456017704325256016764172823202271871459123265581805077700007063689284472085011120873568096000489599567682921471593491984588870279978438249455285255021004172257801432748639784817829248875326901976817900477882308986291644590788783037280702204511885684649476132940372640682315955672809490071981885528838808859092110494712345841061329986 3024465892969475958489471684192666325899286158004366839122542043984476115684162931542903078695319871733461273663918647095986694847859201961863537440179207290161492175704989041406419173229470356955083369177932699129193709917615108723207900360099975529981757295279837965450377207067429936096779284933458443066057073925260541710305284218949068737238024208689710898151621988380553250754947135227956517536081812366445230006618954193076139437655588528782075160016072279923216940487918363113198730842499992012728539083411117829358304349940514363899106528160696807410423382463214239652489178466556115922293542029550420235904958912744554568831186761975254571703828545090646136787934133234024758598790461956747313882747978159495147597131771503996931530326241940071272080230805918363165503731731068819633518069332717634057264509584362803759201263752004223282000172620378986838792930557401324079936235949252966501162212897459405228403782383600350812370214790667825962189030255076065398936207723663339775917773889935760663668798407866035291008518014393887321368301640763657919627178662089928725178680239769885345191653588045347676606839960208678883482741807813177509021382713759649152359746197361341153861363052160710484789513289683065155890975483245973300437432768759030710646467660326735547177813514270560696502567432610842845069741728937111827696759597563298390159516704376432183342131118752947266694961860492191705188717089649208845407679200878477871137511917650881903968405177759783183086494204450686095309059736962824451024033074274912643414566896136834444714717651016289658442364069088902944991135496038607516759803451801220121833708576915352234102752758568536869094570378361975234790486135474045954822020014333684510120490955895886457597429510883014647650883783897665760680840519542809951712877756285131369973537644694001637243430684764393349492793083477371899667790631792903703204248103617552612064142465251067853551172195923791709738382430895994087228301608070668765370914607076991686997202998814608989886515340449938727101445254484077453564034775094533465618553495940016715023714394862304026697048387484676263114220643182165068184208422140264692341874003490080506005754485314238191889487953899828984227092348631957535033940679129985364640648534043486780423761040714359226330885869807805121601915838657018180234379818240080396991214850184659585508751761706890868199562919369245467209472764931022254995943016128930659149257812201159690942429133143384098637158437134324532589631748998143622001350069501640645473245337752876536868606220650759120356659401037724339287627498198911466546260647840341177499062474496916692483876581624965511925825918447392968445793000222380734870731152536106181904292150872262458442313185474302222656585499580320557108727793528219534361237000813916533985393868043105187954753247382270525925463181138026573878734900608225704200330392206078972657950559162568167127571330415204793854537890018228145625792133866942044178710124569274329830010703696912954066893316184055423851011254475479455070844990805510441697303963264608127885105940818384180425406775162346861803980423366240480099056460055757663227618164686456009380409388578702878851431918907889857735969676621816025636980393171080147666596451307481697940177438360998632308671160257346314706994093309292891130025476673208103568615100310920812672246426308479404697488222232707764706665642708008169060072593577163050434074641681473464810580992630298533460364054845439913131946261683341658694315188182492383920439206765912042435891438530876849314204143821496597117480295267047659133787357089432930673238102824252638573594646175002883214588574774023887581860833227244309164257758269749325512242468380809270549483574523808391288438739814888832881210016569821683241956537346188397129839754654230144233725692180760825869184686578109630428606857714827113502879300712399119983889829695829662130761624160226224452048609023390474123568364241792173985107842283364101826729292426482891398323519462852712593174284773928898702631741156771188802080142423722451393638965000562173006633373261194787957786260951254150134941451703805174385184428130788738270338566082022278922426880716995530298463571850499717953714480293219710402054699426861705352851658666237948707167536875361654099011243262964822348344369525589278501782473298686519506102508893823586566362231593082113145089137770305222093670330258850328839061873684687196857377327032315263978983345176389998213702691524108961795859380053361222526613011358089702247979471132474264252725830162185004038886326483199592094472079530503840879470841542757285623779483095658276960419959803695200374400547197009527317647980708771021731494820389960516007945166376288847785451690966509160791988482885406725616252340996085079818988307763516561036281770662076131957391372266836735334682888215171575501993775273678509103605553225526893578497744599338620518315518806549624788786617027902820825352277421348539175473706630154095455692500620568778940188207579319344661391933877603256192409640585557442189801189756949882850645515727511162394295026352778013323813155965763518409967176230110226035804841662857325246811778685448086103517805364361096333969874483383435996713666149812938295032929327949659137779162651196895970185492596687302785739517148207552953402750444987048531852598333343688068495665331806684759956630946680324583120917131924261601697318916763749342893935771448216403422143185834247280402247361726160140049655611854143144160076469816489460487961459148994395413319700304325510270742944439455358550592606970569021963253841982004151841943927056204809364647581292131447312126922978749152190201179151429851848439582862521864740088514702856788410183011211637130508151019405035818557176840197503628017804140376050061899510539181447081209337479243830050685350310037285568701874187720145069332164408129818607861564674912395150601262641729004064411120651030324694132503186017072394362667034189403144627682342349676347315519270239131925624059113283106349184977134202478123820170106643518684466842324935791906594493873837532025460244292191569225906636109029926445119311736352344843174427077829626127502496082803473199801340562311714589027253725855639128087943353179172043582388866071091263661947373684702542076939508224225017309108524960506373348757495683164739804432614695038558826673946426872174305757605181270809526114967976023614627833466767455147040536026668988999025089159037498939894314878367528892216210624662555918279733460676571664590217986034841104876279453774905222282646112455930643966311864691567742919687584804871665880775684105748506467027169636823159271840959643797480321871684013704835356772444640151996795672851963152143603705811320849940605564219882263606222347924088096323175446944278872308511867047018960129241011137205460148658921543835568644597210712955151256805851912585606824969426643104948917399844331998568660383815240668391898777116114667636713875416963286420950050520334312894210935836727108127619017791788392404795576697494666122894304965940959769717310979232526768649234336299708797843435531289340171803663431269203945820214513924966774315190263491580197023572466404460780182948454640628672322556329876931960517842828637070691634812487537831894903127215926123416875900153695601413839469035859720763192881750714715424827270504880873379471868801901190784979914003474213320854839278961239896679033696331496273004701241943767332265673440497192640448078593073870701315190996626219448149176638409642056758959823702194586183739106490252031083367166724515453452835182600039165333107908031368746443235994330051771216940883044181381885034595427557839590047586918154258052147156492851235987393362817737911526737532070737640593076576951953111057899067380152826391725495620960745200107428658820563095428245851561550033609287835128506155336992881484225095771050356728415677189403091633357936137759514753493809429279913219478004752072858253063753684282936512484260044789332908583974953443408100904061768746150465431377177931727843048533373809535035963743965215229848546508344143534108631423468590624459710092521695576876616142154676424559603953211142779107278065306452113677656075864068623588768699238292811505101292367351917405267077159756986138019001048245439227405288178551339246672067300496525697653245971837753731078564625221200509477219322879321558151314142376000035132797035875719884351251251724617474117716331790226856170897688964527877662293570143668127659714731887382471036919409000374739319724618364675198872835568515983264052564029460275680287863675991199364153349896920983657516452271630263977035892652191865332704474402415342249518036253360258552240475141688744919163635623409417550618093213106025281863875759720014941008884728971655372874938761731145716559370967948599024214434684061229047090882505424564181495749719788780997476777425483058219179046715287968120435200821448928071703044714850797033933174121788383346424875475101823976254645813800286641026578673382610764713544955173941985548814899092271014954570527230868254345210514103594698047747981024323259967712629253853986512777569220988199324486531937276732680142125691901104513857320499152276670132820934491720806866452140182129310088039486778467818990583398305616858384857206130820405629822978025592100303316319307875861331839004374279176294029738727416579298820016647753495521119559316053173591191703942432398606599389583573047913980341492968245308482127613698793563199040952731649028895716802040134821929926521238300452395708315505854349440903156718967047189148751016182242155571392602273015464977767828329118129670058740967142000389088048030499473738939971167637373071128295259312198274154648231671663741496583765491510719703209433218692421043904495563423261663552931194074156241171100725396125201050591591576687381494605343987738415113701142405876622698668290180357669319722643181998711892790437785918197800566488833890044939013269554036160978629964867823996724080774020807975139141235543397262455312442657004365220370024825300190292869099380089636441207307509601301398750565288410646565831345085463075014422877865740902717378360820089941617961752090427111526776387086051926347725307559583590883208609281403816523001144386721066484485251226871690670807488806284143935549464031312323389091056492001308629062991724725572427072125801565241080870324571943534321446917929346330439161132408344599562526843506106745412130048438719653574141429271618942536284567354193997159826207260571493772584343172130918350043998203212808874064977247032483390500197977400109525655242781999037045334159761274094494277368032515158158890623738396284820202472854261995040600610908243035686782442165497227046278932486804099431480183579109486665825462528731080099387315557777449527168837853416823351957717589153875876790511961217492471219384205399528529919873154757318152815759619427045064429435716966063751115282907954486626071001039043718585992336232072668470394507432988870910492717855320200835723377780560570094720105965719122870779222398056413084172735524025020878789175305165031286495281950313934517895452919189049004579578470798019364524792632856377014758214410510723230267556872910972255411595002399524662526210268400618308943123773878638381796315821073448191060498740757280135888341755590032415174590204079016758620239491880423366090487651510112433251101508148634016104634981328325347130031984191973594946147306013017571494222018368059553981214777906229901407617464206220958891971633376050872587066008223397265831057011654232651599694204465893647324005362541778767363974648745452625968545499417087274677048423431987332316560689611116731971251619370018038968111278626304315384117193175126256396172792676488050536995610909578077264898649742707044119466129553305849367172832562531649889079889332000867991524406421531845158837682317579542515607227915355260909138929871665406835135862511160290373248839031129087789921560219630025805893156528738096261016431242935251513718254952541313034313400676903157943591069703087676927394287417658911959677881684856611454286536598073082838056426846888574942180211366746245515791538658653110978637055722882876720400772200826409087386370343833083154085044214281043055934190713944406309790231059185861827945478879211537803846727818863348653498599268098223603700374870604253195243968809079576700332184573428792030720306857354261405586213314833509228876236514285671967328403700735027840589667134683823854625453539384125238682746466576643206022464848739206620468744768939127232478002938438091998527423638332729086136986767170487693558235371190355912698213876109971830135162582740992660413783061502302763547841034335159897144607408420570176527527115647034275931948771694684547144780064572881507911644923997605505504750763135119142843570329481060045548882962762296535012962460055085028966022420998926674350383099830526325913883051917159688645591838109148429250266493981098020793491003684227353453943189902610029561140477388157131742119842632833169473645734652289551434670782319974540582435613818258916411301517445361774722558428252495089075639493092298539807939143100133524554701744753506238888341322013487411332879114724518853286590362572136283787512103204423281333581582654826541691551373267776086719636150191243976807731576330651463173681950233731427936182755607715855500685437235258176718144805141359276681949850232628958685267159111271230134866088381962867134348826052837831367766833401515612893755178656942457911507455860512947996736504674479911878544667127777539146942993021900556963087673175926190653060953334296398163122489267539269507233786595325756014495265038908151040528040883975324250937345719707735626262146405458356354009243295547706106420200355255751231747161125128302726435009774229961213845511097910216675807801528752811980343053358876860122960047032621375144127249559521571353357861467162641163470866691547742948887156831808490951181531215140282060559037050320558718729656650500917711391341493461789491756915372091678108683838666389615002025091194170536374614054091808015802919662362004250425595104295236011908483291488627937865456801352703912538255243437148347009658080476649328290466487665864819847535876029180220350003241931354325205785716127426333233377775331677040037734377897817345937076176915486964391551287533704018791203857732882125383252505966491200965238013005187193792180748463370721785726123664688365734196277409307042336153318814455723416532873205768097296859547614285833292153653299761620094299762893902766988582749842901632374514448648592006235736609409307032649911342249806955803267915538295866189661196046638167891808177040261688865103608015379021110923102226148882897417699921298061751172471315776259076094059587270594157132625836818800893964629495954963805894669275933217265707006036929070914891336474046027824620367214670757120292496455905876547361917223249748328065276279307348233975053344341784023815922728107779631151524094361910874315889516122307805380294787042965272799893436346994905770596164398852716905281542739428402673762857784678212147860523756607315636992829679388818790762355147400058096473434025383030177123760957202467821421024112997811740958600016576790656728872383565183389346618443207657189982977540759648801728169441410662381910065303213672657268182608226675193187695803876517167111863391789756393417703254618319887825426325155505218856760162393635272839598981287878015493861810788677676441762567858212413149918566026110009785243826848483820076635497781857283817867276960668231916179005179005510876746704303930766321877333911572645464998412129793775327554026003410216640155380051078862876368668883386067354059194343344081822031464181235607444253132767148991832102970564392717584173833411339409827038309534129189558174823421996720424115460372370192998147387206122041837524366590911569054089214571332585019754894518284576206001792043692515174368700356727109238621816818848700378174845063059992220659065832663172517254361351114052357239385577805446311776828400354523796610987779521529617459757424669102981729495866926745014135509873917559456901583749067163895328975612154571555753777147168336404125989159529148524204448417800360954914310821518409549765016167436881933750195762629204110138758752489595842806150830865666833846040389646713768323442654215047783752801181752864411911779640798986868185330102290293503314628699244242373586599446446854218318891939944272680323907664094787901664017256421558360095055038638071943222516218541388756804599775725824022743582229085522284729859372647714456051999684727098822183407274712653376682650898847732262571292228911417854029517270739979842242676588426624744514628323786611253950384553730692879074339292707882729033081739130125069898767891797206029407908258236331477022735181261630738295805015087899142383816740175689848015708870035025202894884435294449703101113927320899189205807753592408839076075344872714973613017995445843243580836153614700388498227414910331172460190481991761048941426280595871176428843683485821046541618839761511814324570998543357020318497225184789775058218768707668867002968339129639283277807512672209174197916662297636458997849957516603844607506151594154214801835694495316082877369431041990103591007738011535946003156325893803571972057191521798120764588782528633324032390481533141867273960516225571473212906244623561449658973058017309349889187466136002448840996266341489954737159888226406501899996309666866622620556275590668554756290588999884751023697836211861970637250940052454874648359354384641482027002938399134897495827406429317334705113601683245274702078031284828857020371659955934840813448308257222800903394923556205732357027518504003694933326679252697365430501975137469801326276134272799509135495522670258033959548446720926972018328587667163490484515428395311399939240907873986255362457425290374653226487563422434773246703163517628613516648709745820494320530392046202953150876286947385810795049310420662420181061001112232931259529465666013379367368738307566104480231658026690704317450388602167061645007316019548782956931763792637136578220157519960833119605244092724148138877798904110086732871440099272621731730101604550752357765241393691270066745571355068032863542815717252378341142664583127878542883528117834303324747179480422542343954402931297679266375321255401220515435273639855755890726174414454545766219170769089696591876516724326123879039358310467250418579707252503827642435102837384134140556118589044139961483438995635762089504414309121559616686943723816162825961227577487098920495126870625167458484382104167427556402621164439098873003703325837945608016557764111514218696420634722875643750509381201830339783716560281208369725324711605983220380034836100053390174174421337618443043610309949808713159578348826951042554522859057813308732363614910634407737684128966522670344625713398068304203365996908212956245004550712534571415786684142540331688901027215884374948101653755899859889073490095672397143019373925061179040889659930199583487225818730358418774163066674875873241546330920949886138997615338806642061384760733133560803175019908505696262062485506799811542630691751447776901749155535832395172259128331325626496645356252863382211304097649214682706555607833123533404254824430607472807840179801339357494524898336545489269257159947645324741274112877462695212931434277564372778920814626775490916814697541705137643456771524086473106219051144095111163641119382207708811831157070145421583593060326760967726818524605547655535467687136223802344481382243893677457033461125921593726635150232077628206621223263108813491154706090425243647206454375029163455308913469183030775217047643548011396683487226416001241927303163819313478062525644986662661751614310129847248639138012525561948186390824392996521341097983504292931981077403590690928170889687472115292071308335381111829533064752513038668595057710779657785673212397287326983746606423023025604266412091251519227848949370588634205689341330072436236942705278353554010401541872100651002224664478428512021190480392544778548374959812075953028670840248848937074356435153528081315163595153588253402150797909571570368710606438839958437675385534749533361846576896081785806369519605240185096535801489381490399505354171250713413293486787206445947326577760589592209771978675011501547848450427846404043073543482019314128414377412597524561737030181544887125533180566955336486217539843092334623165989919885835410046715357134090585961611109245074207830050989482214630236079855225370940276482859067933233245554176198923872739325110388401280083232203519051201427011060397000623335637500592780963665224843914291710020289474559853213100744025725851186494428959482997411104227388318788871971371883008092544644593559277110132848336524175696048372635946633837909987652592219605055219109051912321443703909685268913872392508211615658678189719434660721763234581311577428864271282093316550973103546223434074589350703617390365969098940948036450878897808309985153084284366592291319964902348745877644511106736745052613523523922744559827614589221958966419210940668235567959473610227700764317425378506882029648782283963778993006952243693400389388197373107712406123790151187964556275747121993677883673560647185246919243824328147964401689924424463750201085664060757987668980543788497074269669203116621836513046529128659921318753666927295565504576998938105135265445354416237144030114488986203408261519351870810367903786828372333452597367613214513245695286088809268510434111929748237100308584915835770931373585590903087512676842211549320079868942058800566055503647337242372809802359303859097508562215782147770902607796216872434102258200103223632418991454446567583059636519089427550957505105356667102211801517042222509931881556506896930852633883172637803249757435926963635207296536308297398786534989467896741385578397050112565950225133631274599583448220612876667255711566155170945126033733562332099260768457407004908209082923633643438058325011231832800445561148711087680800246491736947456578968067362813684739972039463880620648007800430547494978628983320805526375127535633407373798683496431311986339534372393212941845016661847752538865571792491023133195964602034882997901819713737744696361775558265787379317687742965668445892156734662594464087204204053338324870569976369883295636033835971134888641029978148500781420872982272521102881122468443231718637158869526476921845439585861282103624386646231802381486008237832039046510843816964561153676168284106666099158023059069202319223589624348048470335876412540668434694183643208427409947054305792123669284582971726474155762670508201732374913506648128757166273925975286923484212897642516025518743163293398699432863623028196368504571052636814825900868462104547841443985512866888000882436728933320191272203836373927173541043145457671671059818934566940275603496196096961724655472152027621184142198161202931821139542108229817772137217550353259923668540639231269890791197237477301629953264386397538758833395262749213367758012318403451723034703642377817324666530505421521742227705726177967513934267834096583041875184634490236873519572339527236205139933790502906595007859965882185734610821217670864103546709445132542034470795660901901430593061388600973031551235485620838723360139689839311352533063250718176454671061196189407028368679348405982086073240951025896655620835559836873855237614748517786101787202386994833878376864720388551434959965260138019039023784464836562498822086103722614236532621939165298289429408259192315530971626235326289048919299547808264083421032247655707033129017117133381125169313354357763082071999481356013752272552077905945948972110222456497154910413122197475846074972884410482750386195255992303083523651893396439339363135114272977357152438157754740626591856253629693462660912989218091594333642637169074209531339971691135412866831542313641943020336258708738395472132392215176478567471958368997831474003341525282715796808993429868696555159791575878872746509767156372107556982929459819146138437787557369900448517426250743881855656185594688731519682662787742415666631982208499865218531822128213148344674370722903074887545322502616819012225956166168938184785023021601735612280661530437171732868523491828033896018064930941208979777485301152754791875442986500091876129430777864736416761388000011124847270309084065884736637609797242729631043443568091999524067028763946944875310680767143436857534020495623490936514609831047510017890451468284243691816417079586014166838180962390144775212177056877441749508655448168207200763102339194299136302843385390172143976291536063212636844217732480438449009218993232166811163420675595507953554659298148599404082171909377573076544886921959467248906559350102124533601973338716929152652833917865800515038796557749172501748928489967141227771128715222920305857042795587595986228091119781780467854547433078761032092265363656228554065399041580334536045333516492467769405578350979862678813821004886023279875544995416438423078501411537288259861116679808152630546822198109657035661348778522956749331488898245531274017442833711576628607178616519177890295796579200263513726672724609377368819975347505816610350679101957950651392519021674591537328303071736929611888076852416132305529595141169089176447215642787926443323851544196693298883871522267085442124956559342324029732995203469405706818861018143553200112562105517003615931223210301001362427032302845741755863221452458736248449135334053858891164462671564904574094346175050501287461322472185298216019454823034480159120033925039555696685835098239353163277976530569096891342536054095276887371873027536807178917848044466269503481971741717204214823184724191046783519204954247606223810689069315074162592874437696455345152085349776127690171353701459345665697146491706829516290590085300484665083754465705902235404568095850480265163405537388938295846496546666280894253098674058228955918466924157921060939384355989698948509143146973633201566419726287587674534449406231988347471455377102271136754517320211844673484283152404768804459010491746714534737287184369581459739309611044105822869412649750398713708360960394517241629312812273203763637991121582426094005981152365556868073835439594602442694346602344248656042487091278270336325607974584145776997762445845505768124136804627902520876516193920608638214822202209324449791862332022686867559359175636702479224580827146144350661044771007049741056908191137259250381509898945143509122537925187088669933602335388459451340478868656027119689072303665942019051510891003149555278056065844211345832572200076592186709835751389653658816761285250271469270226339343509478312691782472878077178756283684194825679507712885997390573150829364756140793500021553774281874064163166763782137209293089166610653547178953892322474670040974856667553063181807160724709059633036046680334634439962672492271240423779591313162544326318442034469712021933087298925385454251769136852896491147106310974630736440915620424468256689510620118026297751599866295460110379717124508816454764499916430912880122708685773194902286516322651068830855380813301410750874701937276394589028442906438183823927824823734971791803714966271448807250365367894867714112323861846521848179852947208909879663165900682207496827738209310154668556861979092988504631798910334759550109080352669961853399236252481584716628009119242812299661378084158880696804510502207159128513936981212032580755756692517805506007546411522441182658740263009543927967911842996404727729401945191289559558649478761967504776491787932711581414092645176963564047381596360695170919538210160658359759579342621884532305902764385377161730442914147469390731660154889758933176789353363816511519568206084166238769267600170261778641177942433473520561925722861514762470030233796019341336927045355609972033202279120169743514368074797921676982349308605608618275528848687817927004669921830387925454895514700344020205019722362878251647141525903159109729092056774613665215962240619479939361298858319153327458913193042877877442992110013944227493460004320032477303617661773285131353214908151607592069350246180310446510340489215572002554972056057914464588844310860799542458682304367715912348392284110104158204590299865618478741586129365608035627149176315251647780474712087096071965354080868357470303466185321800365494804913301115169469398348415856309302019477717965446956545838163788999384700342492363943631153173688863264782068748644990429428737637406509429948670940831001491777847894731747862800977317968303864496897776145196297791089265069054818069122280928858241459511740428786251629400837849777690811636985290391525576983476250572760388163863679948280245450513864763259108507754425120772260171448295571333107671067179005285629705136169455505109085490835207182684073360671611213606195326494533799845579474302635420829590075210456858278501263295917533489695126240604256952700903553653835461960841157239906343457383040949489568281387203042084886951057402287391505245330768605588953068249032208675810534941354850171377541257301849805344115842881587636550093855709651190951250305229381840218877090359239950087464689785220508618711643321787964382420373610843973938040454935432304882483931565781156340817793796074370183419932863822585595427674917336642543588482613942933362800011808358318700380345182245308541408100311005016585140469605198900989310882560508192394624475866400887153468362982191708939588958896662569318733731908077143206659963894455922656627609350176639986075927348181239495911936124573164202182648712183310128750182235731181823345246030266286871620398561240232728195198712328631697972595317364893688243796208835296159137093550918269240806117593420562126055966478753627410231206709991169504687057750194468661338872710818203137956435055775474083449679631471321936378596626499621494119566072777560918912368686343871335396741273424089522763635947478859236767457732761313599229395395107818819262491330169676151001131761609841153654938068173544530620377353375611359425472909652932834126245735282005101254952642382665781868778276821810132607991356963426044431825235542504884291120506844262309288163870139414660311818656673393182156792490798361474871972428537731585032083166905077212135930048305181982367860874080080797524367924603104793317938186530584393860497626550953382996684225172000482183016083007418972692370624530388016415597909994898675748964326536643691043097581885440368316517507885796111973339952496467471778112124596782867528828856365219461804297299007859987536345144511257344139797117232824210634768083274338368017137778448743822162581244682931931045986811795014610312166487801697813502214096935208628029825699587870753970717606731034427668579149782317648537279151692398302926048784933888335010191616634665973604204599941187693825609852067510299254753740290192553756561301918207491783919522187813272141959562740894636760601425503246566227842525570534651283355492267344818731018784113680257208320535872347652174149987078619189570576408603848968944286530577868270350186031567550110898940917886635557452581748495178997924763266129616413565840655445276083959475273610264668338105691504839010533763630780292227639310600441920439643390514976365313546320525976541671422484846674724669604437510697349408094178220388502411743614879525563209537379578328062285347881068832205977544134306021396834477108337723046348824536079668911202270375054721802597681403726858458065266913161850233759286361255291830808131907318058049188833327561177128533096439568146997139993994200222470346018645543285831151590098504925674854730255871111011928094611819374579794621933454192350704325331621920858567161499920769440847207498484779964701389230714485512909747857769140309751242662434401214457569261201728724851409509093835414779878056010328353086145580813299950210121696268156712245260981156372572609521552258672749419309244511704402854117208362887174290095909720796628672153636428353473922329315104162252475042823769960218631390933438330685477354628449842823460514397316019045505334695818079340372737940507776736395818285825426054610500620002982869986238613617668892412278121282843208516120321932506577181316842466226683181818487474593619532332829125901208004236174608739788398632190124487659604945244054240510118424240460322127795090537515507099027907253772883192950477304807358762923172928309981159410421469423408727537123133672119505616995159823685824228256527186008909359329023559223468394687489873901213852565969095572566042423881415599993676262165432255399983341396275134712104853292194602228571622382227228069405419610148299869160445477315145347686124867612127370053734587104872225534404913096843006524615274018672976098309277636574021000745795766464714904770864321690390698116332602930738186352632212458877849247383181795499491942117729473391218637853356763060247765096447070547298152042311233209148537282553170153201654559801844841672779731720249063395216896349571839408048099360635001543567724018998035488100897733786591973175533522936471957870515485117404723866310463977142054532843217108654637174343101080167623041383326508326837276845910964272735035309252800652068847694379445245206177966452352727673302514378479062772285355576474796602969152031794948919827859677789754015920945628641297725691711105453021367123172437691205332415238015306087874782210147812783286661284350715599075297532299723910320051070774836183646887265766685591633437110405001549947780893814300986826844870338859907639146618637321243047212565090407532862225524846482412911081050413126880680223715267507216953464331737761640348450975254671621569023304521163378276608715804541727170555282760052617940584642224790870137860519033960470877365047093384939822149406784208856444833390822010192423508895204414089122506382832665023307713593738527211309961326168906535388434588886665208013072826306446117708341809911652914634622691957696990556051093008449650381705256902352357945582855058737750609620330144752993514661535343376523133282993214751276007009579021972692199195144144390970323535308510271216301306825916401008342572517155562544542686538309177988507428569194387591095598695529118223483464962539843442340827988117555698828887771679899448075121597839668796789741872992319522016879529050436926492153879200297272513365695286932608497403991936719278092033745006574493746341920246144471405714679503559128877243270949419501789417984780210920754601567679416846635691357198063356121452100147259818593415881398897718235166116162433843387917032162053940443761582551368400403658013788210729973430563965760872465212669674951441217508032935187975655991429150929974698291593522237813694596384531534520490971178748370163713962607385584189792160573330473825094597960820024864238145799855372901936264644952941439550337871818851063438177493719599740272089508281746961899132378873633364791052966360807109026461404525735295896439648363635728592214318746551579256186655756877828187909592153543501749621698770735705373984105443626144286120697228845146393841178335407562508949106695275069244195403704062515570072442283941717500126458324620464140049187526049318557701790977851183304353725391327191175093444399241170835384382654324619812696365694565287020235174889769384122495131966330874034988083169329219210164026254161756143879471205511472472132634351270010912165317876016341257649780020779183688242357881958125106273798905558258477632290515081189714715100222582565662634707796312192871174198261361923154725019270069607038527490483013545034483016508866016999923835807273278701341035872079363564875008693611021214814067954212689455159107314741884841811407110671688627775211597455606291452256423804091646245463114189461105989539252966137324549615027295003873238922779282017468190071621381877990700711375896580196932579802167653627835085674939352875225003244195766823407043879583255705307748269653954940702056646085654167560169869492647586593393426103705966126218903393784061180760606287363739043109190221136480707830207830779541858184861141190978438826716228297225585050575348967546437606397790517714141374509304106359731946570250067906071118321381801515277062312694652459343307291225817416803512248095196471555753434848387720929073545798188763811858970947615140806750737553896322211737397387873971348194375366147138558685711204919280438085280421071093955486157140050040111072256154542675390376242761737998136099274625919067559310223489139673644929090504773352497909585469526154463627785480774360830055528032038647255523267449971107912608421468957197693737695379407898449758963652219995236338515388221085578182424266611152169903911603887272262753396271951810947304147445501069845951737885125068039419154937585584033814339384673100776066974849004206491878144562587938529398519000488692155847961653403073517124334446820884572212504835578184304414492045123141155578007772545845505460853427148523296568666320140625275153205225857668250088232668574859323202440729246927519032267313401695049642843186280734838801958640660147770913307612783307052442261637968741398037405511989319008789355868808155957450541491415651851330462597695394249765672003993452612385320822316591924017901092399878772673708761540655600326830488996929513271871911739933563131473610227314024490504801766164127942912386400839558933440405634626773830167512597177584855167798680286997570642679149138915930262527331429931687923350096312879808761251469094794543523825912612296503419877155996020780846723977016103430983786475310004047475932530899892898952790810190731575422176470793478379795997443905200140556658837860718607848633174863277564049379211428187254987872639137202809208716596661026546017398808738368066319997030269893268401780692179767588164731797016494828703490234997107035487322126794603069917518370736598614850271304878791750934700971770554503086639811627750079229700951846707655667874983195240443806601591799728331171091286907869794291981391868899340423026830129509050021138254147237741018003576076162038217131420312514252874493294089914839050702190894453342571826933380219753894698732128145445246152735923069022504961650226784930296490457899814249560557343267049602278379010359532369497415944648288098332813901489572803537337922463210981856816882350306340375434593783849874099802385888012238845469094145484935292029386796659852911661063519137547452250883202814406724496274192159760301841502732592931603940134710225256828822813010845698023824695144540818857323260162533901611385986258635552741913695932289111914419330248666613853903758211651935707139742708081299245905247795635109393363961270215466301348458503682107734404669069493032245359488770485978012056199439526927765785578626052327919152775448762928364505753617528080700801969519771100466569769047991678928350472284878978233004611530510993564192737347401344121790751007653144491601297276183513429511178544657389590352775672179338517238267758189463230798676948320805545052357626956522321233680281125350859922160099878407059406679952125428366398222111050406421763838897360544163546344418577432285229029887726395827752816124452116333897497684039728241151355475398679821070079992959944587485967542533354938914486866588725685362714803583438235979229301813716016045592609900230792551233612358801986314960126932212905464373766320063700109406946237091516137814570023869811633543102596800400322478011344937500834917458172646879840159109733182235882569379452521439530551107096709427450384807995074231407846764914011894006151616985229476086247214400844164411061167384643455636673869014063124336560354705280560096543147683814128629243915404457757400258718514201051750135984443855689717787684909857164648778132667635253103027034696658007190115037062669603462304980075495689659516953600981867590916682429495211732567703939803521989710075286558781088073003478916023053665689497330717550562065893776563127805206867504605647292704007087098448605183859552892004021542757387709896749222546770142490780775691533507095494949733295627315914737437204338605364370063667435919935795798707592841042721685004692001206072481224226752941922485448075024973225830129198902220289287366399189643391026261088661835256899466655199805393951579310022522700686556021718112345696949235322985793473858921699930305561753004619012118766112849448949504657539200025793467885362837818909738128539987042251298981321407332260839342743648632749328400547780057990835853599651938835311682377242561882080175842570887879658313433963850968047787825927497022041187514319007300871036844174015794956216548727453600537379326689753332763777713881435627255192225103094599818902170285568760500681463579956847717841659052288587004171361969136722134372407308387321246207249410801696381563651644121251208143288601277129013566358738188125666003847032999343715819832279905644084165423594580094248723973453579061040074517379185630414280635552862049146454422608664889483306724562022224064270189586992941517732100412729728068510064633068301632372522491714101399649128630985729539309614595455620254297124871004630107209304127832587783078636672399331074434929712807792832628177236039738628496826674659010380179636909868494122015026490094582847881138405597950248309448851661007468497396256819573665795280929959861974202313673665358695688411789509531542099004249670669495447829036136085204008540769395881674421419350099207787602266316679054617303707511898540392715199035897295331650918325347328082178955232813356371766464869277126917255131442087314221087295779758575461162857888407159590481453255597845134825377285279938044426892559631312353157888101972164515328843492586216839130469902826055913654977647364326222529738279033394762063984344325627449364925355107139609636120214814282600674749137959546435741350245502140974810853465446691345106015831684948970613118195694471279273975457342410979506503847950608869537151853376935910114644515340559612996216558863134118638551798354777894461882808304791849393786469465060282541390815229862497457924903442836939956679889233310878196732204003812097200995725686431960735656875152216051169216882407706854330104931880393060896415860557073471708803591163916289692151541559039590080691270577252218428282326741401894086498483149211487153387760395641964098947967300099147988319265492331732655381914077737288280479808821305689342854384398673558123710175091099531189638582811090418880093367548865360693002068913311879007534340354163454712876485086695179463672993163694801036978265339559399249050847475005702757163266826644636519271525573831688562169347232583065981518072960286551876553206663524128840084706013003650559906473660205647152973073579376190278915918558783132656748632372334477370583737069266410131191639953299340355990441760512781071027095289030045169055073419376995034487177976639777347880724560380681723642516700315544820031978493686826990664876844970661993821595800397392842183235651173941312743890681045885892593983614507504588247574754779941592401258615276109168458526415018559353588658149673115627387675908382198675665052419563515107574826019037019265817762724967814087710655157275693719198691263305540764082310992510095213203134831281612010787007465178127520990386854293606000749903101205996396436458953082621327820141249663894603786559407609306736939974436323126071959905362556482352250576752952172448376024427445542717505088519765999777468703393144331146358045458789322423404763669695123698984538403126879304021959510885610788256292948503638111119081545742134512428485567629796176775220242832892160817758813915498334882539387830907145221191648908978471456123697990490702745722912063084170487590445011918365595243291224685941442125449288488158378033543532154317831228729053570756297360374549347190287912408592147340859483533806426084067823725372742304312640225861063848091320495928962068408608343751836915751963585370852567445171616936137414057312613940955207498261736470380608326613857594439044666042180748026723751369414346793407013643366387459688262292258810109157947478739341810681650964531803305014466177867675987745760229097378560464002089373454005733845899388783350155632095499981859045273658890023658633909185391886815531956001347090288184711680701624759017268173244256775574382026693712023707176762612216678359293784322969807960662505188257763410135797582079078909471914615181866844229424951020240038117743592341309150250237169640711704719494631709999431863578743903433637617740941613796352828556901361660338036852353967948011704454756367725372998529020629482215795369863665830438219687285782916923003995108628511435009151613611167765357581553161949646527690045030417449256818617718481747785032224482952383443385446135790358760160871115861161863542802826960203914968306506864914452829846836885896933665480997258815973235268983185459891417955376730341810029850798238385901248490187450148416761892918879492564876632361123393334425552252926577639989084147858477392110046982059978136640168132556978963047379631735646889513010136968204514889284179796719647924267823428864376439150695075988119150993509068667805008676374946375124282403285791479564308147794551143225440058570109058616278672935947870415768106844308681233700580540010854527712539611566692839553345968824429583206426878681083144290731532836429510882620436129090169833846554164603159556461730769129651655114661600698630734953344317429734054229246527080501188177962593495446522429258772893857688231089261143370460363449952966813371257256294669973276488449441591751217011383309533949154098556831059317810534011860511625198905552016030023545739091829222433943825517989400319703559212986906309248276901283161125752053620239525529197024821577418714417933915574355901168627304870641929443797991030712555297876949564299965678173451494025078241180336139278103504376141076749359426073327513990178383343826762915490798425174359744344420261591273349618305423057925483441427211734640258849842800534887280679997744030890753594193253004594393247844091483987344519429843607390295099988816207786059224305142532861374964851345958058689801897967962144567794248263554137354997099297934712124775419259330849959254884930544725517265044176055487380005409754537065294248104163455491504588765517559068450046399710708775689360291751643819707429282149811162768420896863575272939627737282721296118640173786622945456304178872187985270097365566087152177483526742074143620021945383626625899667080839258151508303479591177628937454133366059462240767034351904837043788938346453234354202373771929504161750331672211992736697205460380702539123459018600338264139243174130121166556521441451765744224607021675681458422960341234800998262325578632533094970846819461635715929332578830266937243899529896682746785047602109508347833107445989617433728969721730721017521965575126172224429969019778201869540146429227475221968926831719022005602221562167571039724640659756030786344958427291760740804275271524097857774142868654660025200369947260863534014026340275988516828891771968182509826880049787224670582943334348210121628369104784740500384662679410048402336224985907663388821688858370663768500815150127836296820202847989734847857697049301832813800836009359375727418868260380105990291577550867981096950435253065999953906240421706661841198143996038521495752563159083895763875948667981382100691455153165723672853379567296718139453254881468031631673965680728731942881967758540706964946552625006897219114098695285249946545752574636797845819701685045736250753074004926621431389212611762737173647899675073147477361087611311153558539733154495517716925441331619124939707317524801011450368449491453057583476165044000826625647928929460804420012015145052541628280185236935105273029248592250918631084010500817611991255433288282232678455873648526338452168940031538441241406298916597122776501437905147010263754677349763771171373412113359355926633997915657592675626478956502463313216400178906681722780824726968626464084143565575896427409573677386157646268339312275749857853498372257412304242622239084868560593906168306470397278309840046736156167654131974162394587707159728313865097533405269836996310323334072538133752049479040385270680912350274735972468910780705908499376720864857907945614649629110282900136434435409521736192746044683131574375737801546219313610078045999767664608499134341753471352586720981724559780464698090862082172671010863917276627076287951346025196343432245175729784001975821419363365250118006627994440604781914263390475877233803832323476447562720367345946533176960991593474087031123395255705013342710430771346010615035063078993076243643197537625275679163779823945437766231359165267248712141091156139166701042624174860744255603908627624034480887305575469578710409425052092330469207794984781163049972231905403090178631609343570789887923508847024141732643170339600577190507732233283478678024395403546358358832034059351838163501707234846108026761933752567009175874926058556801018951520735328762504316363639058785725028866961956121196165546085230567407685061687692537120734634601239940609199586961971967615365028777508107181120871450003585776241390278472997220336120606381130261240640747798587278963687372577589162797128969028815161255764031297977947817223906810769683829367878715829242280612572282804309621943863434873779824531266761858055606112296584964391096713220840550410528221726648825392901692770004352523761829206179226640387554465846853345901380629092989944866541667837790947976220794808542238306805307748907694680282297825789193506835369895229819353263447859662808873937212048345520315263298546387036056056400878650190495847530130019437877213299418964376455347392588283020627278327978769849116756716158747688579295038578892351340334227001484122474544672019886365263689511098013646753678753378510694788818795141096935342756200810999904835607740178992710998083204467764412233863891269749375110051977838009806222551868571371853733841996728611875158885392579237008959723144441286439862730175486819929299090702614967288957647864651403398329847370096080744946588646374629099241491799913818639948934027222175568962700565188381342016707069912325213745607045080531162018551718399605917716919775357668069677784942630046245507418746100325186863043658776104882575103540258472594073988654311563164065917555563576676519369277643332920661384396337825453720433036269487632494389117009768834079529777515903874916645615858194374491942790718945959184087258730757527909105445212651769721833594128642000581484256700300069768096231818329478928363286059278302832915444592129713345693924538531602234524574532200865862328484894571621161377860700631723617686967298795609542579632098520434900741448311751792241396861664252023353190945496354163202604908341466783726568792361350761080188682390201258728094080828542578375193163705914260730026746037997434315429897658473397746375752199972707417001932318726662642437714198164836700267383098797676877890641388959975261181256111787055463562956856201705192829405362678661584733746302129885076522756350781015976090563433650081390538359191860638261171327978963583726358621198824789301597490454725838011214140986484769798942525545336327907981366974999935974382547216217231038634668216942955449719130203295645274980006648214282935758838504532407062431039131525640968921747165123379626665336608177962052090605353979299029931001612366086304399062233418631470521377212030284618613360859202050898090193421497054603070185174570678739282342673592966492297136476203394738392136777601911296584445279170877768322105004454419697092135243571341339988030821379554888232939558312434320139765689756125972932516544651136411218900051993259989089289427862862199501192100229686961633956936135442544568215352755966709183732654109458524508389423236462917946905922995108552530919714819093631905536972134070558148295178872089043775586409001982065585700198135717596432870600694923185308246267890256080521410435416018866785675175473529269983386586059431992410551630678631696719154255248363543156670745126068818814118988204070609978411929402704227087730869163147990270452914208282737601464339899224347922248869658407971134400035932822401722488042177086750273644400428751733265131628806057732286744374068669290501936220670225140682483444476817087105157078802204546396124276110255881491738474961950038068663157641789008173942510934322943407740908043691315391811682130032563709728956117321406439088102744833034789150835699591465608368383726055153199594269440891832860499377244555182254804944066596188941868983918258455427623583688579041924919968611121997933183990153334384104979035462134262302111065274126887405898204132423003420394776830124129577683102184009497191022104311857958345609842602150593368923380065212632132399098473025648658689695266256667616037263613793791493270983601863698733733102744491079224304220979126097226953093085658238647791983141798912308722736140235754668162071213401655623109387813835278635835489845670535534270005437384969651045845782110360682992681539627946294149551719466807014399140430840279695658148892627548442263542818556144189190415614283829209157287687911413958483303598554156869006721659220877775678071952244732860126121329576494845004674301156341115036702651756558742258339046743999281996376196761602803722851420897862361761273098322023616923075930208441335855759115406444089481896499939485583705563497550257669755658258574529287760903752669869723717058222002801278375250798155237315768624705046976699770270939295117728346298249144548198432393715074783675588719987156310203278410387490563215590260678612941148023611534840576798102402023790848431527617244833983078936125869014973374253733511186722117562832548527060962836256344259466746977347034097133219571477079604101084283270379565026616006792843300399641374513758849708672683162000130942611710252434474882913016967279519240962630685736561820910747756356419079242390456589745998468188268157241438245014354461647610317024641847221262948079683380623010224201625260884258118414909541784409407386636754485796352486824839223466395217648043669632757790511349690838729641733245890139488952993116197863271854263515470684421741339912340385824220016443405937531157442151853190103120092536655391791895967532492313608626922727486733549191674776498651411697539892833998468156515144431203982513834073929273018180652790391958161738666411503419156856957626418341943530568777468940341581920531886329704634154038988844367478902869173056250957372873572069846934029296478392666733755978612920511993112606674648590619467926841114395234917610713236402927676172595820382769752570081488521346594195248072397674811530924039435017053552830021135744647771613662577412910715146680863737309693207555549765058548351009076139629168626896790091813821755706795884082862556420266673191968762271632126735679469280823326454977911441474306719858607577300203769564771775328359829006154523494600885391117898409557436945037456619299907342293260203104157297936823867342748792458895866498562481359810270457659709112991884680550656091524266224629785985961112766085747246493008453221066076183131944123734799159082773309871619885591196241865358873481178614807469410127596997188567864886007867718157651018895493224415787470322011487001620161834619516729462988470531560575618007369300739321410951332490331419679491350146911887166402687993900214571114200068999603788821907664979762752712184730831839687609910532385027113487375653999917715079971218903491192321832079958938074096489846904807360100091042379759757056090090291247990557929733716317956764446537905100734896456652256436236538960261736691696223866986847000223285540766425500842592608476698322011365394192133345522195782831915395503982183712361924442190114383806993762368245180825244300534458350738006985773826622402823914426040737085735002756566596594979824520420951725756986617863103390226184907867045361099167561617907608367041335951380345040473785718799547587651739028849533307907566980565786886501974734071611945974438141021651836812608413159398679087066062767493153418857633573907508913174298743365417168580650682914428075346738662064816980170441871330584934378613438010203708606732367710833308554208094310951189542666483534093084163975943487372946116610636015907313709260089776645454703702082791935858322178330557119882054036050268033416266697209720278688272954228623714634823070566708067142912698820926735512912589269282165111464745009251105427885364954546593278237315890151182441218467995612624451222823050674465151172230828768016323347676334950183884810774833832862949991088354225531601796808470208347393929538252232839672505302921961198238092396625224448752951801079470205667657811562109635943520538558710267475700245079886783514919046542295121037364971507687175719627016063243048783815198475794003492078131176218992134340800216687794802019754179815929135449586260378935624912566317954344054496353212472587904064369114791999994810435979090350958432935939674523548705548698707415377308643472185027208565044363471475759504692095291875777706203654418865241644182544450100172495892393562773175018368772932127628229393862729895777991586945439447120495680038506359692177237157361292824529141714228270114430636832983380741337338198053149580654232576298469982199123556581427546965309823830296302403661424144662044372005937865127651264573598369816634375068951381888961311073911282891392365024092333629205400397756457529759782538747228076136812265714796405590093808448295190174195687878152151131399209279712858689512804495333428953959246558823302903917767255586424796243063496969157585123976498346420366727939392813818165665226246612188938436380636447321747053165593884184549268465621169961823849074441706549670559533605274794318568149760673928891943056131023328532415717031658699423084913842680442569511133094081239169907285668961411065764297253249305413842980692436820748118953512942221739681275261159354490037543348224757082418319179996827171470980615968955312676609016690239052459924260899397532208557760377518826219991561374626302759652059532550269276901552756735924576468032857433316430983479195270525798431447351410202557872910627745246488075477301713291916838623630556546941089962441327438553300057126543678850451550200866009934436105461700233982622291982107259343038353585047006385820325797639277054615006534202267803688044235062732809576876884179422882668402538615473945495013612955913025010487172959557833323195557709685498651001078055886098512017321348576427879232994432285538855805899284948187388472038218867390443097824071437236055138659847065491898380022991968072347131063505196310729660605488169798747993520594119770288216055542980833051403186010263327298854105571695386809358132973005124821190045134978520811747821545298640421844638088623017712290638761255809996081184885218002631838083789175604319059986042730302523309498335049246475596187442915090199424740658439274464524727778282608052888566470763044589895239454621676666705645550734976293166693974189145160766525840277570671431644576325996251751177812141145088267674960526912751313902263921507249892637091241835730985460808793247886623179322232038195855282738270279633444819327047538025215027008075464561321484462748020468996343094254838960960702097254039634580845679591545250102516905434083923017015762594898859387116790339449719142906748298861230691994757607325172443417610869392606418469851951501739977662334167196312400621877398675016729046629925536476949292460323966818269516528237348676891434089786115778359599865265343968562293305260696068683098942905426827237048178995984015345777243884132760844728387897386623471211768827537113323729657707444424318931990940627716966384659492384089786416045766150816771845276520005439465742879437934522445610228283604830959704237866682959988702475263215819771330462110286538923045084882143648633969043272487378328959801346863108029404972146695112332262930722653896478252246420844292841886846235591233732066144219537626115576964169798275441694276573545774389888949615570609410366638207172399497561294048653738251482114286747419435366703545574779801965379907242080799317023525591624984125724121957434837030446835718061852123121015036614683202361038018638561612193473940477965977606097497388167108438003443639771522644190000127260929457159861174501354400944141077865373114494435236845322089469413110398231320895407532414101658950732236281105014433791990002791210300138464338146203348373880531838480408457632289778979595032886729881803698169362561182609007953654017317617096995759693641503553847066197025271317488457780084671591886821088573431040405337651186081812357627390790715360578905702701865474195459425534084379343581508455870944640117996886141201565383514136427954964117466879955673295584315840421674084806125908017690949037399076035298522664326230066474291218376921428664610194696263217948605356301662292882099489027441046769254571908722997459279763337338252877609737396998411353652507302441845403123083317278585122133044563340580159731483335132587301339737368539445966597639888577981223172353514738534840254819549137891193646272020136856706377533003444177120845189272761388484910506095857738760509828920585975762003630272815728519724093711743187258322174935367227335787486475604232482179994814016251183471257630158844227788781295170595325787670890361709587855867330919830014277492964365130026099834940196725187219153353502055415858130705116267878704214302659441466747960175003148353185932948911678572120876539805762051981905908842964297383796468277043742545333807235500798649708920727232133199972649808078400164082018715380181646942780974882420961186230014581367669811697726652036849305013879745802945541890746760302909926099023577700437701444559402419649293849872017364123638366195491619900318226709990195810811618060963658819923021115984582132479973827713731965657087843958555483223722658878673397298817827660104331192259739383682646442852080140321502576261820539984843756704633326817417416857970889415477790324293408142580330662458622257944903779628486386676433137259041046027093780641010591636431916962663345554937961724335230827100001471292383253998832516008811352002904070442065056976844643330449886277924395238354693004933458687134357363604958115973524777274477049208961420751630416693704143255392583661203884418625361473377632996750618689405528611518306546967017885222920700430248939696352979327731905838677997609396432386330592872227300478830041868903754838620241587044861631690558391498105455063980603069307312459215562734133854628788707937464360266359144830061198527088923257048734148015653602274799871662393716857491310328865674247645579791812203861122912256029018383666003030855974250281248964898463708916291421740197892805500320550903379845073294721649210835244554195906674916428953356309418245995316163886769753162829676910566173418603691269082832489862293998475644031524457965015233734008132179416965939452254117877676337415424665984373346050394062700622957940744642682473043882443656830551350541480161668966882742574424072549032189419104975343893621786880148738883404108993803690024137661766679558352827219875680525750645688116702177154150344807493860609195828913748468335640236443399589427165687464383607448284679487829733487230334732180079169619240676746533512563935848661073054316682348301081416580692703782922373794636762978832915330602982037998539525103285377589987806476007109715199937984988320675216438704551626611469943895576005551429744885578159611919947321346264118770901635531025488283766192462068427130430588455383490655947754036318669005548913941017455154745286411073212359553647238407016288084214348895528912972940768109615519232601459998293227104766634514855539388648993032076896335152831902877634060459523523709069209428507332038741154191233565661581217704599810839966042957970495115968553355106148576124343123175982775136041431783230062722853049745805817232720511237365120142070063668175066425084103899906434963919260786644327236124938704461484031740534241484780965725252020724393562681324087693179781602244826986115141228414615351873895561043355103237905509654545306339548173088312602762682612754560151050663536849166351750009602818609977655219720276139553176289982420985037841326813914267463909373758249069416193806863736456642923587205556449146234111550959557929878823036541774454208755325280783171563276585437475193207642912341999102314050660274765711579282387431502483380201772461884470124177596418226586239229717433964924022672097918439556862685520590686945590878410903930056273998944757885827030928009957522957706782943396801987299124969860876397676144525874845247194542987777499852854360381438433625276895130689970690386600703797291759538028618540005090707723433179278060055888921686472063488420516652659879634804238499543220366475831017467072294219279172415196240044195932660966912597187229953975333069482679820863505573724291282330898222931018852085446124107226065321153136793358444761904756672485552506516858960434752112089236420777654046232569569214687106236933177957217156863163188352915141026760054388422725371706439331642497983733865002823164493847080101629398669984124896117817279727597348572453182761447971847296280549194671921163009120380440525364702066112941867658715293946424053071945583271805940504615614366606115211477279190967369789404167751664788267215812361237772193879312438328712405028406572960891693691282830739952036565598670548381545869304325573773880910293864937147637921347158274948566494870881452634375426212202215094180558237783877180583628774839253273344368953500125056757574854361819244127256448662232000727525800665458378117926895347972479001004931731128581456496223281953958587794600035153848490090318666793744667515996605438480907782504623998415984352267119156612304402482544144514197822939759384389011613096507794 -> 1532596132357741916801730546394030307314131086743563668062795358590252384384634542935145534051351572000555246123675448068569518704098567823062655990083696881493475042595557612024082881459858900742552113052549256049650450964129436841126038482638225011589754885221515015785032241837637148351424046142738893477703366455617011287749371330860197212547710965590449945320359328554247437414620067288498308207341115165690023414718768320580911150950328327540956245119124188987906603910612492828293787318405111763121931448310915355676007790911287457045443221628685220795669399374035895095734246579715036827394919189802288754185592646573794558534854894710894512386371456108478615354797562600866568862954613723329439240956035455420221647921495529378717741265873910577030346925770593639210112984878270567171259040996723936099071735310429469062842931305880246118214551862364756388489698831345301830888638278226568519383015005029866263987134583010269271689678238348836820690740616763136735624684955321638964490579108959445459340697163194562400713383444446972864868202852491067160073027400423613468589678990472785928481668683085604879685321734528344820234029548353383309685740600545650985155886214298799020140426749587508703244107614499703385525784040060416829976438405022140347363516191596627843379522034347366505065174938506307040592359888224719242439791502982431810686689862927413672409090288584632434285703894386820137990764169027489631757359605495963796447459542973745198333663721596119984262332906501606531492087409546347934648275343717296195630453526979461654821994565664336722570552953882971081770913859454480570925346195292987236978037498451576575787822603866596031721851236433455631721730984588704391430792112945885016755013814691554804176799170452257632252721911161634406131435053992607136085609074109030505353892662867570918518578251098917492125882830801171712730274697375395379179427204081239861719840202573900021952223109272511619429743025604539523218943645516431886680929713407492098127180143590314148597561404717482337831158747722670816894886851297815498212363786523683796171396432413334314862102631769073958420979913940847601107991587101139840957252120421215245621840846630797740800364546780643322689967064804096202488929256779630592973449177012777099256638301962430490394679689616534152489573928507997509153315385939549611666215404245723655115183184673749299051957219237026718337448778886232731387754132628950534632699085002772706720117348437293567464267138311457865784433782475898226400763590923944584122247790222031650630819945544889425040408198734879715058613793655734880125290483017590098092218806347488251097103810540127277412279430692041403604532430922598530285684869204401482041165689557545099234458564553324254878601088581044305824942778135067900891450487588898839467492043334129766057205168441250700421656701133735000438701335791773560122431819587698496822868533291364912399346484663127436793533467164927625492523097485345261493791354450210219559226874665844853758164232526887341415210392623706216217563581039749512922492242579065060658880027858798637509950665613475818302013410498018350239761553688229609204685983744498577854753451386652004717541282195437489057232080998316827045782576257088944802573328115444891670674798376486868887805406727066578760601886669111139693648713925769254787457892644678692938099730920254086698697796519791064310254980686559639391330446760887697852669215563552426705223983573492339525228428105922394425205570955810031838535922492982093738724835558887243870014646297148713342328671417832588868798214705131323053077412768343420245825349188083731414657575283208663096774576526725822021009088800327960428446078991946100654345810425977621371979744624853027828171021053465838177071375421687498792487851346358423888606539290198763454506261271182287425298630551425054216831666834686577378816230251045051930731225100616262278334437277347613811448739315479031196249522491078660218610877554562735306196852943388809709710610752808174036304009987073942294648233179601944472711312590274206578732451703879041787401578862342093766179242585737547822242988064930437487653643877609030462987426659978372672449771322166155517606717217660282824338245200358293173256908514471717774000216405054336028107347983384832743637290480023977147030262740585418851726547287622291799204890214311016046083401448336444747609402224924432750980898487293844831243262896494569512899595561638183324431277988073328466184156814650961187739638182046036272837491968707675103905921550576834938759518551850497790187695815517408976058017760128546767880535077197432135740307116230226294207662802648116798040382724977492531978414829827870094347467283910702076117304554585442810852313970907986284195941949226464447586685619366416264991817423811819763215570174383309886130680758169677974865564052912537094483125438432663408825938421307302604506490844969497266620283105787784507310442116778427660549036314280451728657810475524807834179148642311856579742040430018771427250439847029887451132984091766220674315784408645225422734085871249206022484393882515249229340872044625364269633955533443095667350283790140997745730092579235111188869938659024752812453474421953068498577462946363332928137078667751867006915194817474793051651705174823012839660790167252842513810665339785351019796371217336216376784077306940917076890526970956406637602102939870109768541555730174703557386235765244127878165567901677560348760927548010739289069927009399170649430116364372565694173417255296374556776777974271177003352845169133144303617467725836250035048363595678806963915045821599072626239406269016975788249863487455022486396382210528539683163433697644070587755793456272951844738614785504441820652442888067313238317001206403003458761935062093721173904288153892985216094289977113378143951023402120916802564271803763848088294807198989072119164723366995395929199424881260850041625072557911982166353052489545961420826578761494319987750367135111740712103850199791047275764013397684893937179157801407408386883000909036484515764165684302563766273588138377764402833842739133341749944694267308317011038581476439561743583190358614809893013124023981529414284090574417647083512636570672987880980901116071915268404847900264598303260775930485106523145954542691548742801297566674808652288875369220343295654200532397111961973718680013954792907740000083206041217082949589435520576014152440705049897889410886469094277503303461716448723683383656638427969309938047184177941529647527578481854550212862180516361000156999492323408727153468607630320089833319825264935454112110372740465047497967348493693304979340248998556389313526906943912277320953078064122724520449451909457928572933522594756980085340299969331279724966973689261825744505681314046812612834613404393413266506096765200064700217398454220726405504715844445591187767645481556614270320640368714578030513497416085911292004887805368094013562886408805173422903280852567103809768203381345329211143111495064642021373946640499025091666018734983044958178543029976920626663835915485493991195384822025796275886225449746701878723254228028929269077534283043771631984919035651898567689232955404989957711755040772545896614670004471160661352620240470492518371411739949492696880753099248318242331310976692483288933498225374560366585319486444514003204465268255425265698433615045277197822776255321512871378900598679737518363891150737554970318440984597550244089572116041227144693487748537197592334330050996741879813524606652570748166704492866539927206857292893244943792877695918054945271432823167051869555645574652600921834728097310133878393398577003147505914370643032716064963150957504648201586159655383777408587042589548061079165838665091348672183320933349565833288405344391036512486843431264607607597340762615008366241915070225562237282108297050975333854580648583138380168697289066798180861874023285564177831860759964397294974463728329605412359949223660857928959160750554101431720891349560096508552500223978233961325655213059504546490640328793802596077176689238087978531215571400281785336850190159429172560279657407244707266980158156413486234714304788838815344600208681792067287174435787052593576092629725798867486452972945964495376033839600357075738213074701740606851198247246575453007970084329003967257660661227201727184855522784789748262208539233143970683436298694347753630530104531104167922532548836007898913187333295119660254604767606618648820885827655798341446910961054832440973008895795158008218650221027012895618473924879446730438280587093171985879300812151334692448466298579431458999931020674928399915377955399646735027463656452548268229489522061892659082192330270254787116046557943596796540781902589017194155044938198846538858071990715420316722570414009208372819486964628276078838479293971874592216372364531959687899994967445676208277710554329523393810561540149836169708349382085629528106791163100075737522453731235464609540811682628724072316227118771568054314115600609258042326244926085983756718527719265648300222183537794975459002428664415264889434530927727565526051935261814308423971206470708971593835798037495697320149781887461031083588235514630591257681771265255956398238353290981607069865478510202698729775170723368741035251694181980107836297556400929031541696500035566716254156756038346354059928763168363556652729055653985960804145488733671801030801632087770623150492504988003126755521990884399593486728029361949342413002575292433553241490358405020300655370877980319963907834988265046836036793190053544448600273606393842130667486084315806425088591467486603268851506589805144680590877905780709822793764705962454189939461331224635303617633928990199545016114240105842403014472243229080845526655685990747872062090182777032810063374966094013957834486438628233614025108841517629408496024075620927329369185937158366157434583022208655811497873315998016782447111403240011160345162253039272732491599319158179807905665775899637694307809354901174133998874077810651816841613890887059771217444848316780914007465008210247685685799697240648073309513516855043854275149605045618199522170097520084937318843028995299384752246623682268311177519851477796397425481158901663542557745064367717861065697537094010034262269321476487436226054081137281552599233222340224317618167203707502159394627945890849843356592081364919853102369076810654322462115773426658312360564816608839904780028152356281206451749452499296619211527063002690904171423572900782630823347393259959790543761282154239512750831321470780969565888530253104111911561543770099990464172068124539228314858939604107773224407926782842905025292238969613248788757464451696609441697881749625951038119678860998500794216699020652571559762339510008682601768714500956016959393574946717621045652253655451179102981106862773691598611186189428882925787365705380682296984531634698115109827316427474629861078612292619314280796488775788352467901560934818487389752333719944183800163823741632319694253466492255000319192536014705332998266078693775002681334400766346204525135575207899070686756767537371779667670305742944366772539572325993265588942276503566363821587138679361654427596940177520732561037204194911510627944942714079113367178689819766658683600596973122229484329087277650389433320538339018903965370964700444865988819770392277771877417928642491135763671020464167441760529223200432008897122416342837764351286569343923618456515166872835031482625837702438644501580698320291187953899721013549583046499296363665477773149420948177214504694931469633321317712277194909963989890896527732409177004909535942840838092724662193075694977280011266342285116598925233943183515111822007868263053571767613674742988005525659405634026816831394621567398814956193197529057471301204296980910473204361943554035956536594083701124500806567820794946551864151575479012466789075962834648387194706043499174778425100814263605671896209143324974483635656390673882809324724855344422132332294803021146734541928712981405583485395993114217652000852260783002089515701314779392075537212562311760447840012500410425427399493948140365568757582237424830409759265145878144631342520095059337584620995977006291595976693488592065843151357104259269785280394054579671988251154266165612811743755350295555767430603632896659594162769384814622538225279296164175408972570720142596758734259915346352508026490176199678118810225213652970938371912819018733527215446386893650328731815033988507518198512088846189745883615562151557579212813298253605857871983360067310483825120972556113466568653370715686406586479980721789373897200562685186906222385187053601071874791838314785572158830980701484668070345311199497047545613628305766522292778814568087714492670763639719358076062404793086543350302986626754850566596391868504159722859071060090832788322254316900387987172378061225999201313451278834807420074201573957562043871552650830426401303784462587273500561585403682507489798501942269508160189044587666663162916786010198719942144751607976722470277654419361670826547683585343566592818054762802792587803236146221531857431097889788107574684750426615022055421703047748130064707719757709380692180281847981148960330062726612087542509540137647219151497723070038076921973510119941477789169168479621408036546434073502835082333441232094792603888694435124083203863680757418955975151621454252516059414500012501202822911436302630323113992070148035848392838271911110984895103820285322504265054039564605513472638954385837605253703792261945541434670228821793589214995125287339928521608095583139309476553474269170370193408826615368316229530422512527265625701072947314431754552592258621752433930656806036591107831360055750713455990189178039162093390284148148621440674132926458491642475799460783271683498253005459822140267654799564078668333865521625312536154251855342161044325973019156287518640597815592093865234160943356488032336538574429421472513896981953651565399141160140472565047003256525545186659401536823626538579617360951692302713945457844950086187392317992612927972977941931738183466987468890395144960733361534889711859885498779520239521905181511807515877388402589923910566504061620726116536372767643431239515218190955141380557427616912834771272163953266703651602956004065553106071452559913435295641747560908367552623914728349922737188294329496766832393407005444073565470049109043670380062573847019016919228932432387097850508214206765376234924203193322165727306093611965786312763353240441962742834522668641614659363308309892558141014337905862941736723793247411369259010428043380265342064488802129004100348504930265394251153900973459927123022803011527721976501227522465525097180235690195652706307387026771873508769336952744792662120971044297226271143357814109114088547538762680058403831233879778512423177209227755724180312626598172978484947064623284329736578473707255152520159318094048624980555121894674640535390241872758357214109118951623384828084497105713641293076941300158183356258418739509559583118324483712657845438762677246715482154503882868999684519761786009229292048206890729063791111364644015981697871573337147610667082949144709274779562735013130019618434299358664172120465435223818044433258558279643132559131999991762622232384475536143869151259805290247833033779459987366732010415182437076674798951190575363165957999037357357499203818133353782679550999328313309786796272688158533564545712377088507852036572614656732281633971476697546078478240252796940856381275219167503209054341929924502519422597636725614775035963193483583645891327923403300564999823564693675048944554790559297125895074064210614967301817967881499115033230371701598751905968575061489201339902825218093645886274442417125575235824200497498394437658703112198446876381180291423162612190020349792806276420581688390067706590988540379868867698045483474435619559942946787667142271480827877343892167942985604705063905226332581682379507648924242570846420584645457615263395541368207980148663250626769383141628771913233519571291564633350144879011893590357558421011477166043073803296421709180712551954616983334589272892553452956055201011811651208550164791900167433224198208780353789921710067164856503229120786196358875877254714231989450518182616556756946174479091473491551294390385526926020542597391230417973170055729208127425492482777725275644562580502398392421757585796564405968407348966894367133659418493975621436811165091498665899139068849753628157475370277531645983799387326922179480485178230076599386696713752480078022190055582897184601404096877587445685029808609698957134278570896890152645655459332075463090818711489219889262860454703957217922769627109815648651375274793439402445308265795981339426942470105500112681008722425462972189428709884482410895887396707317346016581158268427211455685709447443277618406705989996640913286729287499653759713163287167503463494303012790312434690131460807247248200129997616374093150764577245494726341785931576130762468283704630176643677037558891063335281194958652529758453724642860526474812202043039750884930826037921080008080772739715099386476961581315914931038669233120035600668412666238914254741701494537599163160969377488365836750506013211432728312715322818994442163905120187215611780823205312672848170592862375076944925876409714311386052262373223611474453261715874642289912051680868780981558178925550296359077943459647333743795808611194703845564362919596609859905267114916660996144820328085591568146869628545864131138399770114657190261839798922549398298931534349962167934250797691964021603411791684523593951140196386867518702643513749702431484493973829336265380084736092422359742214162253645205501036894005265017775727009724087975806585570006226607504817239323778543914887728761872456147794649486178080566544553886215413814087410160850785477291632767903148483661048605685309628376461135833379833045520472828901448551165000464822332071189944405044496845029585454971890236632003770111347939841112378431823923755825211998976246703681935552816236125816029146123163992329013812953535401462970882768505331354214170110636622079367034501070973054408206942024021317973234631737352233793224089997545893650542666213191810443969224313809716037300255798680349844701908948084627184584501818260512445180160942296986631313487587219796573633664883091876069805555337023289835721651708297953920144934232968175232859136938346808114298355014557337146092617210922031605608676386894040080232548059379891554586501508828496487026857948771712458814128758035137782692296760533226962560675704681211574819154767467313724884389177799938808248357858234564622900905576162851902303815341955970285951850595849885810284226785366901566723857652491824745295973407142547247137337402851578347294679017593237704125791029451870152198850639367317644883475226344013148741380599243984734307194127021448055283210166559003960425689146218751731206008444116155092879722594694865411029778531037229313468072703074847955533869280584184930684273027565887870108340203495421285981996353175844666695242548069056186643238375609269125649693240236000994049889613324830565996766027149176520878399007474246119888054294013924369202793504959690938347986423432704735965508792968456924469333733768842377052207316553707602759137752008624200407932113809954011849582591705576905068256266116547096126681764008638011152739601328628855515707990858465131464766017564485674140817393719092770935847004836926442644795053618834393046433119826497544250507199815040920433423688228476858048318939259953156114813396596402813631389401670410214625975473865976589176888471725956541966731094487403575373902391323976050540961824801484515943382343351490662174116476092028362733609170526249707118238373470255098886158460262783793152687262317255264964933416972307365891539515251633538829198549935153292720606007665777514054029312126793175144783970220259518424146983906647820225799759742672375211907458762639265110735134954825093746430090753561588298534312427869071133845030628814382216166165357997781322415443339639916283393821392732902055604657061612416523370353817999334544827396070983264078527471663168126064521610804582351055809199014529567644755330273136163506293175618384678119578733148548680620181124498375926668127792663088512571130316102928743356345030081396144239887941124452965506231297122277635133253942892424725558649570692468157784188637084264700480923886424410528453193362767412095060256405397227113403076129799430833724463031812742826483801201061550527002207186020488566009101421017075237766449181894266968897682749175815668716730472690367494946038446944457122638597494406301674920950854180701829556692823568034825006957995255048139352213416343194280277002547845238270541731111709600903061514943274225229438366835584548059691803708350090233207455217202702820082130012679063525765983296126890681954019722436172496287765027391367951566753446089324930901124605613945512159531337992876497199355674584707129609861284056640863381686538576341401070291912051854297459355185766831550993142010624003148180674548141307395971608111867946297370669285649446820576231939304132433652142539472692292938015271833301450864817906288943020715433335066183370195513959872776113437319409207057047386893040769705349471291360344893660375124576635781940688446254813276995746152341984137617120404167458194186441782928551773254622546971909274786645534462243899455188314415604528830934065555296408486652783635181738568091017670241369290237318180963341271121950312060171235014565839063297372158318153525397732254867425552433287530428958924021442433625038828960407477277174060423183471014586392791535917543465162473289063950447596090188772557404572510049993989068310307615346104672914872315125793296142642329909298730661204395137800490894572690686802400182494515395342294443263838962983233231900291869673111149853765564774013263827472166185705381959382947748154016573745154845196101993444186506944104908288144541930367720890817810111601996294372439714507577772759994795868577434731719595602051378295711493185355812096843019043270952310518944792180851182814960131649462706600689787679225572123481217307241657428277929160962761434231363432373113391532292755710731934604881086992932666649549460920346088659600064199630031186095091682798558661110707667732634305539080742032023986250177984609235350523110701410075754224772826491404195189798308962552904264420242452294657177201702454417651512230718029444452302351320381815652879262372950804340402761844626750355830035368882714463269869730829978773890695554129533563908316255261337311271155098930771624095204875299471344546415671189228112613465910473823245688456493498219429239479223541813707887668682057818647164709677557151458567242017821698998958671139798987981088367648885443043828099980278304731145326946113544499330959215383942772146873500127810267195198058834163712700074599050787914269987573461396021915748303577365439573570556825875714266311823683965640159412603610463443428595075747396782039952757147278633731040889529988307180712001474958542708304648929124291347681862814361484974499685326181114024409988444170788351621782065443092511787634505323797474864482365427851671275317477615084248739951499321878614099638344651308271974596300809117273108789781560407391537909384496193388548376626241675391612620167712551936054646643596136289975353430703624822895908853675912870843430452432531341351619741716699385455687435332149933783108493113917530447592272409087779711593886029351579978837004393696069984069842182931747329356171102315877615621634746119010494543013174229137511290376937412817852203044096937318241110999481445861411405068430501690341352938547221579817493018731527525278761210816931102332366773080777983377189609162793123850580706656737148096053525343234410302444649356088502792410126990830451467715244457363643641682231692231246209816239911193934875728124365971699867290534540760752828382129851493788083988217419941642724065492649180525088358685869106210120552066928873430040962903684588173464965727784816367363494973985119222836276639527475092227205976910660452783019806347258153434441064009280720496875048444080426962384846393590540214608422921878651683113230194070300607240012640258820306354042824544181250550029425389954411379057063036977835294652508803608172427894222329762839727344278258474262553039679894083618637873116874018311887115354689114524800718718204530302363355329106449814091722012449800271535771392975921157828924943437276112761923239711620102716454780588331483661072430630365799221219811608025730123942149640256054677374775334438067813794779333778570583584726418763086367357984863769562563163898751717987725203630449802761991153586314170919494628344522645150378951160393222641551221119532736999842698458799700387357068126647248144026567272989805097424531416628798710287154352851246351865058905687580892324457679657165777890121613370365793823244449957511495422960670882251193062722485966945855726340721079891487390384738269655721119519573090708687075132173328482471632918041040449215464572059324503425951262506365965857104124735231414322929345945490940677595140941016211600791690656028017276614463262044065606881080846674075103619477565256784718761642006449132310689812524535398865594297131953994857232563668346990066569429753731207829335942714032801762087077011534848744261639935778618155165016601148033058379971008178547345392868652254110555012880672889231665941320558968650140611802499082536568809098952031170537441771179431432973695815300306785060009700979700508656557308326409979908120096410849210634354498890342139453494969612239550268999410596254281638076524451616510957966396260319714620163099638093780211671028691990369911387632735228540741632968592361493281165830870912728829753428599225120873192796835489908727622783765447733948465481200810091118326780732005214111132054383582729527196282219028734171027674745563607333361732169097710226120617772068839733078678457619926934904645859724289042641770201771479445358906453634803136415347034522841956695015164043053767558914874733803188572856542643033208658264285337786517849985694852357552321795249188296401103879679633775908453235501737356691113238263135251714639795006157756386330807666951569123866982533480074508800561937571903843220039430766312198994179183382234426460192796512903987728963776996756661722471101740079815268646152835826024190933403284440706923020427732218703391116576641742695366441953469545741017445092626966511119970174515930271904607785762887022376652734744891122245128350498145600299618160071824306689110934158906267359387574205013667993982511702236999852570443098258206917894800253319795798401711282587662979606782669552338564000236599456321380195999229779511189877769204188156396724080710808275041822529928422923845075380082263806436218905249374420399880210623253482460504201635856083478877630040615742303626173311698065315943433994073621421182845199402467450706038647511089051213389858142487725197108938571479999327624528538157964226008094228925998671567920580311383666117571674452558480887585492766312250194744139995203482552922718456508069567435915769598459639476380598432319726107714015590906831312111142048447657925232482387572898307598445658747867121986544236779103828516985360312806684444520228825758673100493503581111740303353565999768690078059634363568788064440877006293643646887385258385809738580471372576827375176510510160431020138797680644299394111301558918974240451595833086345337360269444930966858238578283243300812567369912182217498950401781809542189951921702639656808231107373831554601413858517897174195667414311900429995126909359416032172829437201736827939390567490139181255298372633561975854636732744098877503486269331792849998823024382913793079863694453144588124293121619425387334102656544458921887740125864295801190707264647541312800308850728142186607426676167219527237425909582278025263410263306274085612586474126086409381299972406090215016395880692944928834735669288532522510173798809658985689104809611566723672061915654527699367515951641734095010873523421520283230483216653404604761223259683970673866671145084449646904216522746262537394100462665665369415789312576397315167019817569150297236418016356573557784705640964533257382964348921007214265392764886768091500108533308275991359478537680803080829968534207759213822825768759290449485093916010203269877852068676035859957919643761557473582728240488108487938443484097127614032213691290794678033394836970174545106113076277498632459108088338147806906191430916838852137101435506470497912647723787599065781772441357555622501279296094662247403078703897821702559277786536445814854502445882784567395596861167790924695781609145970341463372896618719024949683070426813320837435771393039016507367366018023112082705187175504807163590090061402011492441055075924591128534616919402563008653320872133977760673795236139705691822030248846159090430256117124499802055569742745487644240961749114812826078490400249988517938325385909039078505904658787705585838315001926719146187440965795955539942902273292508635730642470976095089645555470341369475603250222603751131102527991574690907501690382140871826303546246200588802398830426483436156993645139512643120192119527785203732931226251089654386375377551965465895968858743291862051123595429958727237458981047723450188765853581403296074670564268340928252165498632576610880654713547310757923494518542583107169015370979583047010315316505239316400030697274172570473509990584890276044883690334543312822345139517470752202680847545931128566996687237227214378180232188450225580058248460226468469689702738236864811171004928605660334143270631438250417940452586903298806256625672586758035326044064412053031517903931452040461227079657531069975134135321360234283504843117936628026204460730976770598995604705501425805684486466519864100088121741816605307052339437298840116740701786458621703489199167481736042703061291353663163950255417594284505191855969775516906129083125824125117075949718537346753950884293233019721851876776708058654124310064449206202167910823846361574980075336853003278853706079399300567916632055845772250065675687344742156131286058341283251137708666828315141502038195307936753780492344031681382330902663113723630823761952905847948118117484172964136646227961456354285901276739349892865655605317374920446045822588466105111059126442793739786159558319364126098228472269452637370385818587766075606230885316440447671264961142953285330258626807152637808507977299441110115590292118471658019683370146296631812636185522970631151996648068271917422336610409769432601378373796268853889113198615272294153411542822658025732915335516083645375715013045383869942811824958374300392461053151028769238638992352825214849758296424018572006127917052288201814855336997975373073727897522193473606812731829896593964614374526823855241212244506556244524394236990898472682517626666679490539857500417813220222797435051480839560782218948322141486622686886720869139395149556540581525565840692857122443866251636184863397236353696543346953130907826753751147935567669583014036385519150591255723146751279258161517864580779889406189721848197490481802661201097013076661016004330023769856472441434077911396604528030700725579598962852203726667246079627574797478707849232862284822947488840446859967519343401666591537813255057704695907915089208539245971888270990893243561615463710081934900614034515834930617933777671875393683781672079764188453656788347396571260662202518520501566016092944461382429778343062224717853619625959441189861746759203032261541136861065400015200830521104700567104561069251048278503215075892792492796439521116637419486243702550151131582551947836016455807223597310333648606703352336920997563878024105477520856448497574802775735284025289992429541564222966795499391037341176710983396583317003345481835598798328153321895905515976604319444287882738776847570683275338286481470732278148811364918231045100846937598192631600805263756497311003729859311601327589647205887576082154688584781143748783356527657070979929283800727072548800430391774100091501968277822368611993331543580875925608677419389596500983621229434091543578129832473799164395340378511796442247459975934519823525704192465517375084278085326756091424706064743623037752033490703647287579275404239248976467692439483816454860527653798066562024673502277588424559036477534992214361898969511961218728443968860861184047446544966138455638595634534630673091399726777408733302117452558809275776479628233835221481108841453310940947890867213901373295632890138432772254999271875063462792974962505608939681152630528895564083261541767462272949234254861405528107592270740263502221803363808087793854241271669188292525801730404483952263812967266316587088255052466477498913920893803639014250639234757713871639910016924140373021631344758955407460357558181697891110643666257544497673557210796228585601053030615345861482217625331913700723865163902840948013816167732315701467198322146366505450350420717798998403382748873432341022978583709806002507384627982825697072835188470703103950527462135339061801665359244287794235440887368337678107400937761258985877410336691522331007899691142162875781464592297115758033372405321433868724637759084280279809478943100765271080147858003572462572295087871540828835193405005053072229087967524363539584527072435209835935784797144249012913887225410304720723343001861224772449035693871828585304562705792406386086765506975851120001185181653030190123272038491036712401297970084987004847358392876266918608656725376352411971123892652139857891966499237331477869202284138362440568879386950634810697264065874028634806456228189548782418753331590983465020252739524425487301601390013616268120785919581422701237292537193540117351195258937001303668891959758422192877212042877697917113494901262175847323254497723016290701043763666880572161888740258327723472573409223284054499862595295096800827546508992731553165426807885399250856360966637574084747403690499712369009867925698719181876461076835860410497908022179074170419745173118297026721347603591030194918320913377825292454864787926493139497905925224144185486085318860012828861896161726634416434024990286730876767330727648337839110165474861700543941797201022442948384475552450629663337361759046777572344044126816220250204881550655803773892353652653863775829553992677567214771968707749953806217906991844736083801385916888553843217257613655338866237746745551904603930705761283942764483902224399944090668259424845798759441596667003484056346494997875634919694547885994334224086400654159306026718240980118713978681613190287837145893126925577505400168544791003349585611902260013120529204815726536414339078474493431739928286711205759249201719232533678636803748441173096534853208779769188119637652024755203474162606315209093047454938183389359216670704565288590980658383929855076231107368955469075988456995286075510667999917880891282093377691660982709390518852667491430503475948313052553772261303828193989438588272352838739355046454946976823148008856936752130104105258496588658772672785733493036871200436485756625878368324918128987139523898324784575709225589225713194249715046586988252656458924401635460716468320990958507996372601346466934165791678700784948098894517614686648395170990378619345355864419645835499169515264239890347561374703775865050969220158453464420337747306963894361047354162477590248020486651359755903305606522795230358856952785005568258215396029598762230421565398247013553130708818776613407485576476241903220784094860280587992693461970517285997957706336730851806497039347872047711741932723671965180971460675957034378515530216392796296601700213795938059166106042063317499058798096199092530728730963295945836330398352559735424614077142786680068353242496553210868294012753750771439305688448565659634875693145045492048432922444903616009828274254251137148205221490921787222848967815447759882276785336027858754758966332162055715280585969152355615930474878808450724670167278083583981288425947278348330324059504808303838503690915706340952665456714973633928138458121845598360593926372552331546908602209150246693641113930491104082055783332120309092783674280296794462934878910375748881919921734420639734059809097738641772783380415460279872105164792768582484443248609110540750081406599887089085334118113472791887871732592839381195793106935439401601662086754436448101055343421071489711716817374870506486086048483807260750554921044623271055200619121037796080289489441536692797797134861538785560637702449769685772016844931388616705893870247096850927886334092391167783168733178137553921102556438214261067295045709284174959993746173159602313618275637438270787860692505228045275962651081444079331824490289845567427262693048893557057127733325823736713555141208644624040998667158514816345677314697050384686042574238742301375814285815940505122180102611059871357845306272609010452696829450859760293777667552524874595754324339712059223713087000376090856700892451945575317436568806336846499448436509706562611621823969717341563093209940801582954191477738920028838725835240721122036717291938189221517102820448251086163340579731195632239342690965388204980905238021997547878008752979445055450876966761488050259032112570420122292044672385132773464214638841824028891999117920622791547478554509720762763740843467937780445739376772308996738921274050195400064078029971527973903429194463524562026858905639943129577065907451572240419397678792575106328248990437444583086699801631157271749005525966872723446768546583164690453558147164374773158442619900061033794530539956872512704960283103393035532997549547198137279456726033424546669297555997195024715283237047491293385774884120157758771526527533532869994172764791588951394950207546350763589824911874579547006163560184945861544383804479191503262299187367858577920853864128287186866476399629101643314360356293374047635666243605447877259424093288281909469534605892844524451519918609328317649254794017466407454086265726600023496471963338625204014431207896477095020146128539166176044149651003238054479785763118294019318023063572908957958526680641827490067497032037588211135414529134622679271141584867650894622123539024504514222823789512768910572840388652077194501509031037724729227631370574959308875932558764445280395615037843609267271286776344840257498887658697205549050500742411814486440022729422931303568281918799338518069106048260550323797277920640856762983325050902853546417053891474101872387698806845516825147555481413444098969509405335068188072130192392620483057802517900654729363383878277515966578349989605965423618752598157664178599706246896511257630947191146100152436301579445190919242272861861958827753004821178658208385005424245808348479045124152861056267530802616077646194410943511114502626762129875475898400918581641054734635386663882340021451033749589391527932384296660264561748842720155905858522702174413328037492366111565747017652080824689527440932598168300494768268054424792820608479283938014026335184687524569217506937288737301686062921192243027845547032264346259469120503391465854306980374144806594338173323918588517633468725518732183926515447065787917765289323529029504462945551067047763779115556227778844441860126074639275022647562261224882540020802100950504491512597539815089515131878382392847860469026162567311786193338357743383901642325094041405139209840923921715429140430191255706246442211281084974775612832922100828221409594116290816281495190843415490063299508847482270254921678149378570439527664999679435743153841305489603630525514980215134552969278613427682668964968574747604314802867912890057030158495734558111790624493584225408434905760820073208565863871599573936638624620005966061654765541558452988996879849912744794312411307148400431674866941041430960549049160385724816595568266863338255188883273732157745338524077554333360921410130747467499748409833675339433132962114642959868423486875663102517499788013889075964360402454457896929310187270848515070735305058416220677254118856620108732640938345190990787801192531736535397994543472950065846800743358895570303402350371448332462941511455363993190282167593175527769245928245569041119664396938727670911574357480200865385098253362204269739986751430534195134446155832876812721245714558086627448697366646724308303753494073765336313439739156564832398026731494657804073554793690497031267449343686735357719898654216643200646955315810602107905799330738841846017976231446662745688056433225199650445814529853094674586907101344276028521361739353423145846102096977243426290948790246588343346313891053008124994948647304739594624262105233955225676150186344030809748053916256425295253402848973009598701589221474161670596003104624594217405640960052778321677297939792150845847953372235151716350128952116001708870483119374266626525428890203053855498074487259905134972705321161968128435786357278007113136236744858812351578488850912384052658850542237302641015317358057435122601666435833166788494725555409476356870457023079074906640220048644074853123893766598311263063004258517926786382463395058305293870089475370698430275343545320773144326368540775712817043832440353832404416187747491148623912198414218728728023522738736839733517525796940704966576331598425324324273880903516711936836052051381499445757941258385738351642293424657686033696682113192409561307848346408899416752614313757345255732648228581824193996295373184877633866976205806474761574438739520240844361857317849799319360792081940736898274261034842887662196622607531784716991599503099861703312271039259199659913103184838973704165816387679051426300215398263224127634459970422392366627175612868516406775430840688130925274633597471137703750665394561057405265792203778094315482659842335868994996110710810307897643510899537874693465548172225733331773474247357901730176214620327740407654773420973018969973008439949528401732897873333431574220476053936903908542444033212843424116131165065411814670038754396126319105174025331264026408470054069071707324419722050802360394016078039945434721041993427561533630127836472198114511102804654004794228831742341575659478033815725275866929511858185153956664588109418092724926030991560238853345208201431391556049185638101036465714411997906404533553930141251628847780953299217289324707455137744810258809351214884146952667840758621021955353281719136529827006361563711845408869267121135256262873482457208965609260357009711566106574429142861560377655205293279807496963674959403656676802404813841410512766959317306980699250874480392625271057413994860937045202118205105300428331299432215067038638056876323616519627941373510362029738566907248028732749071695643994758155968127272718339467111817199155303671905420994539100054392667907272535493918895527670361584745886266937983590720053161927146710448396923001259083001778952275983986828338357659876219124826727729005984513419158141333437677340498611899417477477858152089247387795158836901287979555064531925526988108037595696776626392642618944176367518303357003456282951560209717017719722176746534999204823760999946886679725247345651554159566419133730153933670132471850511660535565784409652001908970247499816540674202875605490907034954245884239905074102940780467507944333010557408473993265705944816321082568436887416173057683065849701929433594477358716416336195805358494911277913456060330287375587614714332613825467895277662021033094075029792260989298685060022707251367326643597899541484248434862640664984742249453242655910508102416188344008324929456621567060285217628204786293396153710596703451650120888545412266827754863240290923074186330308174255197986106371578024180597535395417710323379586720706476555164680993491437411524742616121719492398146710564495118135675161558339533395736725630382742304343810580544699559527086820004688665402316361362148817970805904664562769377034438741381381731548301513140254205657766142546899583866789295042298026906281359591069174418655607028377312587186649874642138680444476744325503983152011225239937653838201396598634780829040037092717422595793389221175803212747549136389130944177096605785042851177377294386746014963473516744495889893520763413160609314330054854576621870268035515838358602744452784073477890160495154292691080101281318291984882520901704520871084602169599998657590512515066138096532589529888407723278960675686770123254211605232994112605233824721268987204815985091746022765605868285772582465584729436769991594929551366692303197783774384718512001133875422768451385482566987874801599230814523136228757133921243379619024615141123573350594506837819684701442185070827655762668373011080808153753343837531024357167659498325502298065886874217573981815029747933298567717917664763769442170961180052484600226220226984640310521686255960029356156197561430074228597302286334340636638751959070413068033797223355727963499998664854508339560881077775624701164691471182636676475986632024841775942004391528587453084011010568380258828684747416640535718743880792905038915410199836425638640834919549493488290656827093294755721624270649224511783879358871150958173508169311674832592899605985514958045499576393584019453932243801668204246693435815837643762004603425118245565914939867662061581015439788029649064357194434152997374381262297243942823666790249765483583466824907337361533840010294047268981903229951891272144158317293399573703866434691502209225523708980705845540603668651106571680530800797838366298502385185051942193853596940610677116473607387035447975151555900853469300800027843035798803050794700783440845236384329873793317557107598384158081047584094838489460104628320702906288698195415642961122352562171518345588537434411189822078047798109739891876363856503209501736996715251900182383544371735492436914399888545546895058158245572585005723940220298081939036294420579039479737772485998766634102055707819984134114366212111641271844138229020059547804811964674525337941446565899180284978426746268506539932291137720156601784437897205282276670355160691230857525963935963468062484841592905032684686862960534176326086881755391067304649124139789899098393140718373163885654828831238974927740921592322690049663416819150470898984306867684119108103750607878891161765041003955926907632399164413303818268453706515985014256229831222651966593427363794660473413099490104111134017978915599273336890440222953240175708422737944336014582901667972271540245805168166459386514271978195451087273762836389633634059056396642066148902581971249625180934470248165166584305383561764277555358786850611228358888261040261533452823263941353335357739322410513775649385839141288296640036209030452204702664211736296655010120999725705670902701726192328951760111576722847365029175646197449403607666869032636058362886405017331157370062851473742531429466010678003889501864413560398728542226099856207810411485776891003485542490337159976400696728632437335429963900378796334685613478483543374408957842948192642499234656243156348958863770923552217278002929108871849266820662672055769302843362319144519616327963843184764451749409336802150908833840476202935346607200055483962469108575730469602029700354743685634984904060790976710312849034375645840092011585902386512907085803805299381746140028680553355179148542733685975976585087416973179659222101671302652679111003610082381543393303164312882719515337178850056538272832893654031568634876791298097582753184407623423800718529076743742170244616059327195435144961739305019388549238579340775840904530457614906224192647153834043924146482976387420345271262014111178147520316142321217986635209281110814715975618295677428546218759930206317965122578809026046551749138801005025135662520988320511659629852400922350535410684774162012510979293282699699028578233261608586443386327949005448110793757184145422254339019729187919833910977308289002828367922386842148060950334180164262987180473327809613984609186721363535588361581242116214787160156903631138041023716780511462560678294166113840243316696357070019527568544297309620243490008476207072273371024694552493604778570573722532015342763997805518493619863659051200909312953370202713130801380872931526523945029526821799912674515122465668666056991709843916788641944388368569172576387932922000269042316424110646738530287530195666427146340410067637915863017082494408359874721757615989750093318769507985235107806702689181754506881327853632547595383003094395802673284532877889357328815283346087568617888909013290069014895031205224801292254732938492758016899907682714241058701005412061043705078609447863205105679363894018298748165451238861540935756351441230936244304037477521203143590282855985392425152564176595320070509500314147132679831322083323896591040862880446275235437243696251642911812892772883475909721356738387653207287006781853589213678222713041250595869684870584026222061837965300506913722416480448445718162708029168606538563653386310759996615369902656914494751713740806173960249028733774654768482634166848026490950693113445192889785506459216802732798103114027252381395233545937315540222579505706755380072023404438761235843767320791531754648840770836127837022090381507543533347665614866541358421751856556700098192819837359199562739531901512897031904449611898623694386537741671237630166469015455698481613949899276453082202015646663767066623565092983753976280884351703952100071752110385846200705168720980668380982569957796665914080563957243110822227754794561280970307839725219771806819130529391175855492599899572458686727430387810303763224741165767444608170248453440852295714590942660079589667412554566300963881198140471833515966001854772220740831990330477690882591547451021023696092861384978141653916459660194761791575763263698304773462012575387632340875624070103237477072756391450990273037270005648805530369218829814897858459264191644603967592362767318613176467808792116735331586656469478259669015645452810705123122764920877580839929492428127491928229415689761848191585298772750250360291249975826237476677246688233728568457477217493324720850271713522311522154443616636322096471646945574611399548440349949370700886799753442966345277582969940730092785505845708341924817333722004653480366802459925311820544339444723311657062153129172426224780791062122841928153582343032411421872612000582725929944658705086497252199229931479795506184793741217302599823443738926943295727067947571931836394848739373743387683905221186065499603102124629283180644370196764731071347140245959143632482517561253489671253279326959958638417872726299380219116375714660248144122289699014072402409448567772298581837510715602519365873915529434377458918148394350008214216247344936510785296088446193431517250369790809205594355697023445236364436195618702685776824716522412115449776624331611533749220216653812151956639176694107586167467655792734236715137999546093564272591542415048945479630941247341809996392404219561757424311184389826309999034732868867426722438432524275801399442180165376985300049539844644048098459781306756663088035303346060634287422180333521090805539222749116718152028469015111388501789295418063316791803863734705656758751905916470287499378609091698574148791824659501536119573518346476969900685062681932536337968659858703992778718899507153338255396829044613103374981957584065977689748401026153774219377081002741685480429851255570614819393393525280613255389141470845370483241744408914755397562571672485871493327964668025994353951006065719932355237742912843467707414390665551250442907210469415220754054651713179378018011258056162653852273206178252066169033599108108673165610843682286172056792526106939554353420091095812011824521675928706949701550131574447910330175543578604167748069644481614216655247297703548284065800793723529083557540856351218969690581571695087800693700261914946728132544362575987599866179976915400529771811271789827089773161937343081266927620542359535459051297445287521560189640867908307478059135282389110645964899892466952339450893519020705533228067517470389095850806115463054457360273045595922431773474783561846554800326914160618221929390427315035562202081362157288802435095604831861126215773086844071111366643207460931915671174086742468451952050508784300789795607116452078807535276982895424658056602837995621188768100227659176296844451055112057222683323052032011420152963113314313177362783102896476316575927709928269100303678415527189809736054711836177019250303750912827203299776509902724054987632652759420796849932463111872042440654282208196627899069651670641760776212845220954677472738628277912274375670022755341105955251375247959943989328451984165113165037681705968009368183938696741577021055518836226620442213783144502224452909202118471891114469469516505277324690654758818318544175802286285922885347673491618814204912262764983261952902622688121282465917306713416452504112239532946953284015313961230131405715141264239989037988978290545668342093433411854660459196498951591146272293014606524778885427103117991724465510014211110699926271709388390061710699585911284905291852437425458569090359281891951831179539977815389252800032073666772256740407513624799071860019709367114961437369583417225595699633531036794394125893752116663377796026357794014826820244934632380845734174678881292327107456566578635214940680522172417734486940901913018896660500095421451683912230338687770445846260206173747263887496378693312869708387481050798267787849568505875726575582392245284908369562418754067531432147331706662869127691898050300308472932246009638862348715994258025124032677164121839256355978636361378974584229058731787639679994470119899485690228196104779722879288578365469003997351914770929013082202947814272289502514140961927823095298251820336955197590925976628766339700052435592109282518204380928525635296681874549125268651748737186542162284301610612610327310695748136575942558997946789135498404966338878943436071652231214192163682754702495081383777574832993869591913961228904360753574663655645678489753762941176199061804072953776420307469909965831001237979488837551122055839940024634340384453817623327260358392277097622053790753737684628412265522861378076011894614602070693696757166089694000995104793198156350592745169847301118298701238877346396147703458600963272863915558180038355223799580868081428171087090579877494331660281702676998535817853138918435190308954418548279489091585099468773026675729556539372785074744130981521927706868818604025462884914019736530177557053367052368973535923361372704581049676632726432732823916272148036786320502875833391137575334750958505703759636782248240172845523329887313354531626133831974349695836088140745042299293083865921498733175106725355182766915822358041487958337632905066532097995189413639108260235661161901157877337341842385445872177820114180200604885384049315916798046009598449671170704782866936250920341365382769705308826464362576053332840371783982797533189385187354247340644012893285580459853915727646839120828901802564456514548747219109502594927630124431229016914277385141309606283487123208154823319163021608180208383419875480216709423996300841932296022280914754764258298758777282895721303363274438093628987382852061451782113222232574224267643783824992619899832177795052097985641160036607666751160101516459292751736137601293311035198925537353992166361469757962986382029478283824079727808383421100878816565888588350461687604642407032500275804117129961208826002224573134319306217446609856302493082485277682566095190303193477420770085839956959322845224244558568528778931214830797164768032402086451189293757572375962286560973894760490179421113388605450726745311203759498890118223828170641622743764391252522007030313055054394882874824563644321766547568375268754335747000634188406761024129392971697243306064773825378660259020141567424466321636152061227683118349037349764672627371426682074756123056992515315803461922992713973702297239189824125876690658656172214372490288410470882234827045222748538446525377734739523160113280755504876854727913320188904481937834709984708432904892110650336873416583163869358610064532439298008450310861473913293859869802691653943651974288273613988294821344156904564191132859485370079148925104186643747887459123206391165411020279654179905100480834153283723897193290230191247885340389404488870141253400163186547922116561636728295900965737270672622234021238484345250853820304871018680675895738693908390614158987661792272290642142200411472123678329468752038551642984275197998564789464891392612615782931534790972549635708477336121023542265321424594770178240312452317617374650766099431566667604780570052423222618786842758806560987213174692237961704247483295431575576615090657520046995094757179081386477737454100518735612489038468883954394131652149416943442874969780638926520536594229525909131350785293765298260855863852185737525783196970820949435271108764976414973823941922332500145336297280581951098741324182284787332427558796192494960324503664854272307690209493310202398993558356516014240498522961481128104298177956347303982730093159218840016675391958788347069794781529410931598954964834915089067775059570431596916331452491515857635968076136011834216123519677887643609581357746879710956992526346438454499046524621464220388941879885546769938845113227948202008070186508820964373395565746285294975294150602634847901447977778286012676591758414958640915637663066914760629364359561456864372316773855432145662506628866916678827937881357228461714995135458283778014618110997880711262703310516199718213620034909820981583459029426695513268729823892431851332409735354923698878005292199267472576647486922183872232096719597382307610258657382640408578081468614844321334355937235784007766812365756914700249025608188396533947696237577086334167061573986015124402163345739502684055288750548930097668448593248199315143597306349937982656661896679348434184377892670231072680330920761417547116868087613683806337734609179935847199149417358799122809622628044202586711844384411318832224618721362457496392274788994427848277902973988333369879113308249103208586010744934637935041209079654147329442199314497275254926619235997696236723993802925933369980325413048346341969962459988536568158718637913589843946250321506823690938302751383871796106976122319400388146203799889069225220343398628876846305136198840706629225006429702083706180271805204949553302267084128653995752832201204371849540022766430862397984293104951685249657264022179848207942982069881612744248073583221182010927797171286783477198535712907380570800063575288765253482961967625179767235911458972123137655454441584136997872482338573661353055124528002588826120740634073935110130686120005435685376436912391386480661644346954982652755128649046139426501071641118596527049781513332025091930610006804428418365275827301481707579333651959185520023139705017349738603320462934847892172507539178410052081733924378584732652740521415192487852642733183056730013960436884414702607333557634962259306107271958415436325527664444278398925818050613819489792472864755791443843976455239507419766513056376393703009167883673063789569607586430652554608608482808389706912876879471145041102476473825548061260378934332643587485135630423002606811413950484661252949839170401211229053434202340842598061198217563877781097583639257632850452907412337558569891742272805305230972927419724087962045791930946037471897913482970861013263493319901928668679733869548928221508719279914473571980322629337909716450148886400675052483800556721513766533561515027083434530575481612841336979260970944371646902824557351283359131036747423381549487559931609266031551559219764438741065022923671635333706369120992066162870429201289962144197354811431978730096135061726301560074280456512794031614306569159095283831052886315440735106090749560666840422346657425205601821974274236362973794111543932472126515163811970844669462868633168343640172518084811585977735952180566407318251011939313090800096107957373431001966985826297718461834616511417946689382208846133418063520325743675462335826052403311746465795958793670500466032828703191254420452694336307193597748435454121360570726707176195447854871525682406284763707754183921666793825051022330256072256042469025140510527487469582654782387112487536907637687732772875467337912593250531939556678219753878077249616409692590617551911642868126733888439747479328425535299520753436581370188141691907646192655996998775556639706003327755871740806541798578836363833305670865361980919198130305154350615462406310390061932365621846767536164240069593993449362594069946161755291710617707909695294810668396356106072146223428466694439676685752048175947525232700950393507631119802814681268547454527504345524652498632045837418328812409608720081741116830951741651869299434945222088242316300465835004244853455680608541322535259759966794256531189679949903197646001484649783763576404742152053571503603319273867890713356091923387760586940156213979917348682682761482318938812725148392518010718631148612595797974184660720868673023006136795608539304110120488149525582772620036449560425989575251958202064317705223157606652712261453379619157405786817359022350445519488394509893243130615956091673589726022676270251202151483882144122936589798622330415802935117659115923361926409187063831107775558062858926057085468898371159154311290616150053116124954714547635958666977135304208755590113755271770299310834442618910784971390655133940610961998465320777155137949323728044637686309850669513726848829977621962423603343147435299714037160935258378007452979746381257238189585341776147571825887968994159497610764760216132021349021671700296069494832417529078344830861760508038082426405405844940257405669653367994150011091531867570564540146779852656739538566143764904105943488867129639175894424471074670783624568017800311769093072828903337550723698738200705124668813651338381619199076631159124760218655639452614301998994738072645447345359717075209199531017417076073742157759669879803487602490427675899082735641424598573757602974295534778256350494692275819118051427722972616059086697092446830341503220941995034064603794851670976925720098525025720466229270692482472755852678791198718489165851649238721589938863413493191299938457830562037983741885888280533190080116793282224256414935089101994599208291990717405947219961563970872045220702697237354222806454513124454049798862142409413491849287012500177814351599830073666722568960156148849586473558110974220855679595470962577505250501968298473487855027211221246885872546710582560012284077282880203828287154520595362952129668822874097088235854183579427354119055580021219141606250815094426897912809750961201353852133997732788634004557404851017329498292225373332654519908489235536385253871982007721596296924892131418166971896645902784718621049635780631522855902572313816277688739732565456830401257690067832666131959670605484844359644799091203602080779687968378612017599339755655892208869576440226042856578295922380314174173213585130843165185550295162600135887829792591084101026710151557331772989942082316410192068438449088081346794364825864903159887030936688976446019461570588251482716730129620654974364471969411816914900482985727369099216931512832352332342641766789335023913755010087164214139735500829488402752307585671747758148156639469088485985679960597207758435761144664644199815673085862902080055199164692879960251245438695912149620710357369627820057843367690014553034537445647369054053540494931292324699771281807307505260905390347765476669068250464056928137484491758106537155056956934644587290795619760129483010440410714421424006538623507430050746315846565955805516842360559285913119384545429211809770179727980040280580029741559919282675070686848909726179858176645942442425346008269585825625292448286667063726222506664956145127101410524344609252657741436611759225855143269039538400142040254322343270267582583020189273414496554023019477847525707301731158249956995941035428014082288662966891753513585213355691372362292490414106656618513260588059409903012453732410750073112987240966796872606933310998033230213948413859491193794589346498203543032197300511671671824527838349267086405942049921320807901914258741965085682680792820635591709706770356103089381937464566576898184169320927234757871466877714908929481313767105206708083393130555170062556148432500406527958403066289145425389564742759046121839756274246122150087943387496980671091209924849979448446758929557512172889025345928239799405596923026977448492444113760559023895122230131895646267749131899334960359877592707204395482285396509378786689390549228239350576691654907242151480294452923494414498028595147639521596029479738360015563450450340055731262349869885219021113564252850500816345479443434781770220572027873968645302616287762554294371621483787502322098181040892906110772890742952312827125923507123899836923788016099264628893802877299486867104045964112383331056111384925558347764680786861588746295434492324541222653157736949341701559364999977561743050702561596255692377664018397727656308305920933365975910326715613995484994345027843846340205285973718139107140164458563021388427978484056968803422948004472970232067839614151355546430309395348034677909000996135801162450484478015224681746986122450230715641476494101168260534606171662442508348011066289587721368142732996751467210808295549107462133665696568962906129191221228988782706942096484379828165666450641533886489272808773662036364134360166330965440568756240845146575764298352686459414921045165249223423222932487322960087635690989244323691153579634881962325816917811078920470283449340757481471189813097971169321138120510780195015814290496240424696623714539931626773368858488585136251690880590551970608108091313221339388401221448925167810415940103131510995816810521146127780323555665022931259983861344479312979871337358359673031693256796501017511203361333025593372943389023300442728460496201325923995038369764705599073404776866971508941956656330048836516197185669499341384324611036152351110323334227964822192 +precision: 87417 +subtract1 subtract 73751840295570716346880328984752968500810157470674779168621530213171472992624542189834993534484665464869549989875599017087296978571936406629421983616663953685375650457834105872668104793969464289989827614581058838074000235956903126229692680698692654169305612200886956973302813674441800190274696225696086371556819384803523299892273112823911411010375185031190154633835170824689238866391934447372981766556592660762737005528430624238310870965325804270338607568236271718598493240162709437793560915473246607580472981426358576210169651657603335785812726565257410907092325228867120295771133370405033735021808364435017349415856149032949950473452903221488651515220044026297676578140975575554336574812670235311211253955099498418667791210217421290472523527768501152558990310874490904401548554947112326707203712955591806963658591060882049172195082496106597079301836875323020822717383183034707149245045127763226087305826133081249712992886845545764915347780387285473633181414782365305463906527774661484629613403947417788256603649775072422221813142172564813654750678215061605904410820222277784524582402389992071807213741420377679177944161883820411848917034614551059580790803258037436522391603559004251309364453084718651946366364731272705694799407339375439432706348490843306253522395421008669847619122256187102432528115463119055604442854369232090701848197837896258338317547387611832718804995130713191882421535569707728989236472350061661942468075336158692028520023969866481398668211205276275744759345971986521753431221773327713057029597002386202042519848797228495292518241513176864042006720645156803385128350355112200688546835128421034692424225263158613277556108125593080439073254413763431256920012519178188447749638616826449860573646347007030190441388838130854568834799252056222375936131361722471803763810346476635009218214960019314519476407413690389059400894424002518087152187159828719740869712365516816887796905187715521063672721529409586096590410244478619141757807263980704628744755949059814343097659246864210229499920160362278825251129889277946722590352023849028621815859567614595738766504588752341308816842396593510890934259429625648507130733481103176071720357754445488789018481615041721761915752285860315734770985960706755638100504342242152889283683818166649348127974695610220044046112306752675706103133390594259271863646076776354624834175374327974887146276464220696428077308753811290577390757639311866109865025785964248952671320939191340816476265671705322666030782339362072146210334466674467388955411307718883671474841861760360809675691547513243248130128614122454148625413405412914350020710312958837561224816926079291443891732930377976643470834654101096878517497596067180124598700905102499991187152482591642817014177930186707162762625473204174974536997990623512044980678622837385626037378449657123949334891398951078447874002859172444870695034107107225401855781832286506354560805990851493467467665262068550207841754396865120210471381215871167935408068119871923473623867200713935612804749374893766561710271755306347185067570107567777306050776239471433354494757964910489712806868886271760706927141482824712776859323715135141331757923631779928299634107555463924358499560854641802920146217037284897344716804106655711156333499138347002472099626433415175600300823028264472048457564398475283218622029289094897247392375581880302864506032464338338675110638333942417877523942302391858877538999422550735799202076005274832013697081197729643715132138921895230601686182615084626521366203885933013557010187936665616438360402194843214237996039294088552016713891118145263487284176366978469925257126581268892424018267060039592428299982553773917012379593659875781699077714116275382631004909840626644068539049530595732589675895549690381174140578388345184033993849585082011239852075178737707091637538619042483456937061409366846237472887942409891290223102280801576181297824486631405493811015641116027680410853394599245315897256335056751720029876770599634284075316744222185196871283325447552864335033743357847175719663415964543294556943555467211772651801791507415677952613638664200002246463393738694414002378635684184183734684602668641383897141473020700847853556078473660823856532664310230020004565838571937128962116895881247121816307951112363986045418350676239898462049598344894829408393694445838289806489120593118325811544023708962024902142091438960297196797793074382610349649363955648539447720078391117973720475445511171324651801897518931091413907444612357635175855073596208815671288734886010846236139177776128633601170534217998664064377424950927338792056188269430742764143778733309973561584825335349438629996375990584560476148158546917527355173884062493714490079205495543883506861062136707869476064510114056389279868896127407653310151516716031899982860415195921970212035615761915072263840310734900614030728714141978990907819074073475369904573279181921496061901323106539151006987083437471455985946759616244305932513288598256250956839306048245474955355455959697006173569153201333709963563257567379955818476647855303844842188482015580031722344799352512598392816868883274229405986567960334410864517615764510875801061273047021352058071630402444601034875647023655805856662926548242402482666567030535157501510594491328718911339750142245993379855867106526419253142753640266252299033349739289862144248084565103640596766490562623582236504077168379926640355522219911329545253745239830744829123940541346697704555259492512103387970164545470315196367198352598884577364177152998626249794191445427086949555895003021225449249417270100249362198135396069450450065336100554620697040223436162764365827578913350920602130262583264686911043022231460831045885027093643917265845047575628735729180701443672060094948632809739944439925749753619603608824724397165175783512019010449094874451042826697280806229919662382374746359376292147541884830534382100554071370491160963007322483682616550161865966920181751261956601449818404733157378523376302412040995339935544839150128287251113651304818452508158170700853538945438479043870937719754916206386868502567653700068241669073688664599559808399453978584936447566060545483183378226874905937324211693150531905447020856522610163767420558972102752284283396701501179434963702187272084096367087734920590637783883360786291506115070960658777497811173809545193033019640719196461095972477181930629898235976172270277925987973347754939629639170342002928694746226735008066466431110573220235070060064491349707349260603880852882711056278423503052442934839338769217194988561605649635572033733005698807768572442505420662026869524960441343329918511691007749511726381900116237376056021601832113992051546585267703791667502694068229165745939930986857584620962371530629841772614180744560715747617448101492700279342825168932390330891451546591200980863973592228540451256534096314852450235921712545850892770478912967036065196848507787113043551560359045441988826546398876335662595982438840181175875799415767414889736531835923180435766053116992219954780553163449518994000191043075848608344103632684743548119302318370827625649456443797886032302626907305356436580081494003553985096631602912671100284292317473867570853054235842421782907351103697498971933878108389516960011967308155099466044361795673917485813530770404225897275337660911109995649518977409973723387284668177002111215273691826940421310437821421645069782873896486757421007115509972142315698751903735017165562037234060826308320546521901768339296918808963741433537933724136108080746707101159121407216108849297646585052982677045308374094786582961911254047174354351882710425181180955349603268642471593871768969850650516391170041428577608279205143504779950019477786055176908502767428250925935049932306959288535448999850982718145050951944276373314064858017470299214565688691873003700800960299640945752307507197769405649613548554578933675283960192268962456464802427145630319028599427244031055714042598523540325244713865786937129551546317384393488407449340117445133997685965906113345949977374663509676575655939945530204443773919397909985182004173592883537765902022401289287209097544456811578257086468499676394752781523572412935032590127933640099283366517332469510491254622129968849993179615229424932506775309865444474352164116688493707453583699214492440308113821128292486765625835568434101750422519534752331834793606570098611533792697352224046069483791655192857722446332365214983879419167713653466132588333855400212944471747071189479452093906637511124806976382664148304969574397439341875569044529493844853404033908153757428845238705795541298035617413905514481993302691081694495859435790042480326551971680149652621387731724000897788566736305954736650578557172116294693464108370859899554718673516189327124785216707897295432774299789661098088020069406798692920931828530634407313899648292953954994630644886475811951211899146271062347365523291863544615665726505492162864307198904508411066986128629057603686620338588651303778493411719916849246693973080429009924498773740329107614036504287212471177085565511956349208097096870122359787220781591486155818543591472342842842820521309770362009030897316944999721761832828375647156899838266090671646009058866210024266729325123762214710172972687060137443236644100450967747029062292798915763956227108361980831607873641165822246920844935352332210777584083016912927547041871457359113022211929244991395096912478284625927590039110357029749197417983723364649936555017314560735462051498674577969773162814590911972358893663273054062891109954121056482232771269787152882930278818448502730155701298347370287520991740638908588455739527494838674813064326999110993414240411278372690345927585457722290729169117329016352590567131486096110314949855557500127653164444281214846000009651141034145336625064942784828478507993115589936527730360354044303898734349217285769067094968127774447758208354553619678231175327340600679136226085103063415072442050440042460599047522038998176554919353830987215267605274042137069277085599967014821535436503423497049019086786396199173472395454082639160139732297348072090892474373049893169760838897837785347446936319680233838108412969249846795595132487976473165048163374831160880321089595969132104851062727323059583382162955311304802934668916342857049119021946319129742343176946832876180771083492707581098173862606679014955110153324887129664085650711335474450279570735274885996827732010605898747716078096164416587892197098837599785132757410811155464101836418017983216719967941770013596658279469706800057851676842329607525750175748075190497390357178343329567755818128444009452277839234476470814973294615095452470476638171575400485074008697538514328488890021513854217784299922866578994062334034417912552669736575861561542778038863672976386709875432629678912243667333626145683029714845647804416179628960998815940491769490085563532510205191884829425636636103669317375215750137378342741321310631428460466451663218704609735312361595307500035643788766912639563642439206074468709769415205538830415448958197348606154748357991153244189566434767423382592393034692268586563670534904035550342756157130170782021292578852504380889487776678613255890964812670596481429496228922001251019773566076036203121665997463633849960843902882501011587428109967769833662547120163229683144897554953223355449142991941601075161174139431180018496239981758774805604085850207589696590138171945899350342114558989545153929421579854935721401323577199615468503469480907838617028997652358038096501389356673664164691254475537352910527192583505014337588453355762652456527787643737418850558309873016886278857153730973040319149955153211028137132272548451600420685453477412989997085783043987867989927971137708740910722524821503714643211020707186300075894487961509125390917841029952595254124300433963047361361558642075067066550541084523045094047833137988292450828849950274481288684086395638525569583057859270081526645392682537884418658760922758486930781011662496535639251501847373056253244104056485385950207418617111244071494586133046354962528585694951346682015287032353393551293367544287722703845695995790220855201088301927673512421032870944528186514620681123201354847105190518905562741414739613483554752030124680056873225525573528075630778551822627715811734498170876576181245833806707516267095621115074217497225478453549377081253574190092329037776505725757146004734646761866744190477154303485083581665404727783812413621586237861241820516033963623186165922803262753293818586738643190291038155871952046435013352264304931339686306483440279387429460626810228043662312233594078170400923820681834172887949613518433109225398545956159413670573017229177812141225968566672759560612811724714802485199652720887500167828513847440443280430912206707274894751366350880579617925859087926033568111702003669882813763944644175856246206108586714270233605579582200459718684629665354999771213476359034209844347357940358097054322926255350893494218382284859975932387849451957593326176801145052701044014350103784155337809742018393377528040624477954903415109801741380448370078836526291182995646322579893679962741085763053685297768611483062905012851929688949748023717938942684673459566726842120862309513517817818101369863192220265298193593288138443955195507865351831737169302992221056443071825057824477319753799541959464474233401920275191393917804689666647547792388907194374654140105234659252905772637773249987907305513101323113404524233189535341069540747044139001159347101066916512285498470015050319306172351696568600259834429826798334593391853468973265109468703468428732122930924933025614985581498840494372268124177121417993533286992889611425673088615130654456459854419623011329487111523849504316112275838560521919642150081390997186837971475633251134492368655854558809258232290490280831895126397256030079943574721803196015596283371513804965752790221588923557510239729867005021966583551714269385902113878577503650122182095659497491665019057079517130158144822552010882490986019444248390966432460975347634240869605001125837120382776936012573127207937584340972873489520454291784219125357873290842081486850446562187371391631031615831791781588172821468038801144996272748085199258970072989748746976222721312424106176672669966872406590279200970235349747414830915469973064725653082862276841051399760488346446751076908845055261948727652181628837155121046202894368984762026340591219424876482370254382539742991818904744653266502301918735573643520089739834004008200250136278935184594939203703486726438524577923427988897864496520777662987936773077245993937186179975098461265457717784728725315666381379859530283667385648894921101132602797615344186040307477600141756713760111666908544639975768519237480902391032602250749226340539131965518977120873596546277785650293724438576762035498941966591607111420971404926855988187417434080749761330223513762484410790349472880777595247347780497264978646999010956805344471733350874404471151820391707640848970817068338746122530436020288634210764627219012004644391167181208045026992730564616296212051191032016363806827329787394288246305696991902090886037570715760435090330516116670692062423524165763330645773827708518030129628602751926290771575899928613254352765959777945338114746549278763130758841158872638076688994817820811109185334529968623331737318820738900776200499133981806165301398967760474623440997073937099850774363892103774431681172096499134702100110724009537347231477567091362217528017086582383415136777865819239244763019480515282797334624553212294223091317092159277338843540783471559514339008185329305146706195517522344005930268372000543842815792911267770751324799344160929018102637509487275456038780992803785097737534772463740290792122219833200224556077395255308216985039220271407454494247798983824722693483490981012035902461471047247103063120786596374803771905742502481306469797507339878272140410312922119343902558407920819293428999109336798090153477099365386022560214929934044454986282892421741077683089470797712520420282097207999152376329150842770422828913471595940437522567126366455312704028323622960986437746511156404696931757265796922530884311537032535072733737409864846871159147395287680901736551062161926571024508482298492897519467439706070924244175272480676714537091059074094316720967494690969654985231588317483307475557361911684302502624908788530718816837046087092365686561171113703368754011433166547405106744633966209289800691350547324809128504767052517860685582253175498873302037897110920562628323242298376162643543643164061501004621330355473660703985527255836094217058801365420300414779358982927407051045687562089293682590710162895198976702017093696267524631654292543577393626792498968274012080268806562463122789883990307258016616531234573517172389402621770890381230911197115953068416207140348390973179131670171476480491351320680571261722532394371497124167228125256480574463062120279720989903694109589438215505390735459397298176879847615277152661297016652579090937388801139356205267262845408114158629456739683280896153465630912423227072155773436702506000264527612426943819273298774194145435939129216744874287254957069853583701014155936284890866704411281633316156723518079841671337363870105089295708889958292103553609672612933642772530193543749488310932478519257874261570066792932597976861868923363409762792684572113179254845934780213376936620019939132637848734804315559614158381944783100020748826090228390351024969399681871552380198434910427768722659906706837593929214728291766408578986825652372478095496631415013763240936094078878338824559658862452423144003209692802361402452738469000162092632163190569923805660224249690158487184806166831926970107292368149374159014331163233537402937773540331408021329809741860623031678553010694028418428040051732504480637152348596417121308529603463015758917602397491938605173571873829419931195569200023623299067278192432283165894676097839163521554582070708142600282679851300750739368491464153098456853689681704887163916234608974114350295870189478879052982253304590466273154074523267581266318993141979749898644207850418689720661258040040522730457804684743839465465885540443916688042925041504704686585707211349073893019821536440449737741535692585945647848087625223675183627385316977515964956056214351188052300276857669808468757510111424892577731596334848069534053091377618698211582016148787089580742002730677700311709386511111127845580278672216698094622628039485143808570066292393638797049443753732342983910174588411152705433764435738511222944008645369359311385452612384126527502124846291084652076113384384632358845447348432627710330668102769326425342307428747533824790373860782247574131222807173976983798647615799214360656191613300147451935969383045060759620328755493563583254359253135508344561943550438680775456540178120435399612300295141415315795074727659579214462633058198824157054499747607893599443552706212604932269836785247118052804837716505361600152592485303690522599292267417975962959769940207770959180504595647863284275639524162671336623711220151141511281529931286057416541788757256655594655948557282830703965484530626174773912087971517154777264376505672004775363342146492172762723967489972394922587279496883439009787388703748178395725420912915052524966671419319460180544649727146155519899931890947810305768196393821521868519558724433861847888559679738221261821648017454118163791966277673285467434032078658202329401807187044011114312785068428469046265402279702866046123642846852942485061486884622183367574837425891458802707087663618810612081442985914254422690392888664058159791881673337988154013916673278394541524405444402477348567565434000552576813000129175000063666269296404621960733005496845155182051757410500623559046400195647404647497237994286736006390281369997820566015016979904188942174466424464525444940079015429705944785697136812990836974836992072422723205177111998335956933229846703665519005926736643249492077664762200039681538658551947032618881863434256954375048796561098281960127086551274654384153890240881040818070742348147246392336944997386836588572261534784707656425546492693046215967721863974770854236234597154631886469420592167832957796213463490848326819384227464310881042792131036369681075963497568920179239085925409620676590016060515003572667766287571840716120452043976565276915964039729990709560702750737617160032716443981250815688857264117330623031483733520805236594811281258574543351153114390845602203648388426617002972783435204801965805583146063385886756932176392883722621833210730371949554758471132158611642497767570716759315370890711803811153410503846772211912666061847697595540222584237143332821675641860051609510702063761860134162312302215446529694628716963705962567234575004597256238272115038732412691782809554018139591360552535062265040644111119354604184205110075569786832015486577649518629601128864278621680609229182178387264267316536895642682361057012822492366281197200421150326118314299563739944961686138856495038509185893307080864843878841298077078529404033529619030810805733359769436162981492049523508011556569150505642599958768142530646304327608280997485546020458832971295889029377246182348907311387281269014668039763588674021209859784872989176735046747939015481726739748439940682087289216366998589120739698817552294571103377658214756407685504240994271092316402114168235328028440856068197848566327189635385426090920668270320566138394013909519576699778693038535948996849197768756322648662732022266601489737403560055663894075247718199789086365929016975699823611022877097941318170742900304244487442889975959088818664088986784849658191323514196520204841404020640936376157042274656569775949622936636176019856770154641652161342880672581834053025255027269476485294106622106317408107938641209899482515190862563577699628310137449366334191690920783039349145044959173776961967019328476442842801781078026797749362595807155863346839843837824474157378632821951782092644602261832558456683293002957214793156666743037441812519862340238203370653473023897819088747159226225077196122905369249790226015670732121060789561066461090270141025297088290187645192490133080533672696822550102723073214360027576994502283388378194634799192947337251602412875413180894099074876388191956995877561147725770583084666170744478686122126671401450395836943813864670202616783491417253312927815014111192294984177019478921744995788172726113136745277270566113936875037149035350920174977662480042879266291140384195681425856457275092473209468868620794602849235211283927415080902826307241929765491094339486969891133679862203706496929853159875655282549431915666295388655616228198354774746351537630478308706069354534045492171639990586372131922985431985155780612452708324421791811788627488412915799358706238079767853348050458585338544892160499662642168826061259252883946656587782827257371692387792090238114710253381749638799685236902303731859355077033744455791247619497424085871471352705688231324984579662729326931203018398797352127994169192364607603842990675570709537108362724591602812762767860301967261480075157019530419020170161810304755844056040140730234667982943652363828709197961038879098165471268997608277164915466683452427959132999450352196616708526342699441167868333013476610341847040350119050963448672200208842200546104682449169623830770360248437139505581746432611803000556021479550468891200554527839369191434135942324592887037882540932852556429173600429962349832474055423021528564674496055122710503422786790382598075587898687703111861024935289217779411884809684145948589112796083910757780183742355073672917145852603246681962907569278262380273380246756172217172898849553883282388508485439217277829848255778926226520784123896359404085229887954545660578070346543718243412207579077530114908397703380722066181099531866903736018252985623482220388386660126999474685953825897580314384542228493430110013271877566790614924148161936581304429899548303031361094780898825451390083181995800757008961979677869418122725917968244261681959181390207058313075870868687603826279585397818843269965161519268131207035678992844786001908318712907629778634869462261722486495863098638991690952816209632490105041388683197657926913769356861532246728330250552738897364400003028387576800131583837630848510910531884253600119435488856088311011534408055353816650522740516108286897048494467806741606056046527501336790370449562959137356330302694797727009448930872465923072250191827148453760688517746090779482125411056604070388192132906772561021498733818086215324884811001292653937560474897968334205220613405187165943378694687228572126325578604573503351529228156520931216662339589877159873267330802148618595947080002869261244759718185756928119542895720165385540191679239734701540108206342947317249361093630009213804519253976234964269257379723494074748934894602725792723822988549871477720013628862074044249106700061583079380612494559039177574088199194184391620313410231488818238444736723487015480230244611440685902131993771441205478134551815239984835820814665888237130741319777319953647061285156978050136268954771704330958528604555770707383567067174803591496233467313515606202883245531119451737365110227697451835317686852015244482307631873986382155294018544337262208681761981324350202241759445382104777752920857056798026868074196759858719744695087677198994940101600466028247508453847661529916454566729979589581966961707903222282008973374545214486031589436682057778750574153167394597716294098617993326636632785220458036069565968991319271373647007415975535146065091346101689795526369244056340412089963780318558939628184379552696652712612911197190891168372228948667070641901819354467990271379091963903671454098496737579838308751524485065008108696742229004412466669234452183631776963128175429981279293962174903013537811816498890682000202345308656279237380484758635421188781855091168312904465028853509075581155482898553393290442017051106320691297185762721679692638787000970371499130652297723728129304302260862786361137107969526673958827783535543286190087951816688662800869404917273423531853114901163089932681818227783951031748827113317775402489712215581889544951461661402798945926030472594258253440662434343478849775067296869737120553718274276891779244162798669962990895466732185706126748264956800350206568744316922627870933190998324862521305794256613582502859422802095847154876873021206279456101809309838524309858607687803731015845018941115193105408955228685458975431895309030540376098765129507258615301637705875543375512616375191060434583991866800504292682793054431375020114791885490614521582261845440098801475568706421582295831185844379851340787954403903227117232924581006013180627963814685793618371324237036471157976755489895198595704883660253764342160650389173974624501012549497084351745564148572999390520798818952712078874478932990510944722521942139953583735960871606185998854110530819243193713839290916932962375920422572576903243925755223732402334914310521530910528309046072418726395220385947068745181466822140586517940469144568093491965649685169645489864467560264817946752506575171215580670712475148277274785651357589201894904691027680651968509351299606342166911932538721470941361142792983370871387467573605167517183709928234321504665554470519400901815864686926554920905355972078225814736922458726794239645839221140317774118632299112597806196099954820216843779173029002669470443378996216761129129085170991728528185916830190453950277915341736833985178502313767898182956211379856683672182291710009030929724763067296244105683502528561486261620298382422323308509117867972767407294093737464067455484635972717061024124453834516271211410321508271718280331103122494770337459318944175894061916653821689110816802550379919948021136407525312571756274881770974778077080166168299254748953193988781247675876842538778958591379074625120138969023626739686966433864552084592180998422815256971342860226346818911945923955916792751380098113950714017934319100102636696291774956780029284063160185984966637279164053067696163390719005564655698425480637683094815800697780585938615935711851892543530743336378626483195456172190557131774980748426742087770527685280485357391790660815603822033969230283263781616042011682949470748914001629543201443224750445100876432357124639095663888776122200377300322622402126494885451037943771237875616405543796200753979516789663616362818645489232324989333650210690722550692951791557383460474928803226450834533110676314305243034320494354385005318550075730700413107328719761422486773644944046764301998901485963937929874432221191389895559272631176046004373115977790321769460370653862525916682040174361542211792351047842634586871226145187544525711802591675855601022071531931286963678382364393048525272851555235330730356962705737972812144422571697958641837254328256653564703758773349067176274478447620758715373927873021422642712699914779300967214135847104211039179953557284138685625268415968933153052440980412284766079989852699359414124022211088413444565315326186328991562495779287168563686746477058149546762730119451022036447019999035547771640629518119035779046131458587172774743836404435374921367128215118321273901882864389657984436668604766001147878903696730796897064781085232546646865385613436031521686561923199035476479203350493633319261995744882442737681847474221861199491570359542212002042090036915478714320092634546400866643184525997424856718348982748208161802484116864225811255730746015130248464551230421932421809145495408183998668318490748194975679382998035060973155114879367689755250439988546040432072235675013533310410830069228997208520154255023165050007754847977917831416144386811726714970482430778286145675610167627288321813745982498619791030349147292353137961137343738099459236041168698713560203987346975163720356634699768174768824593671133234993542604019078467937919645131908012447887484094992583021430441437127827488930576012558920670265605637425206654154559563653306755559073709106574383805433569031450523653475877491395884328991221783259144862888589201226493139284114563774951803610703122978820917475001370625286572925046707966607218658654434029197762315644296307020012263965755856346620212682871053703437795492860142884123365308512531758612087797482484318610089247181963165684807426448862192930116986987394568327620332875152003698460664054043664670983121709770997822660818390037910488945070368917542271812720215397454548854042397847634879137926995369672575909064548329555124305542228133503477108491752213640253129993887867194159402638434474569153059254726161017733528614463165129589280571740628583455311351777954675175861023519490925632350616112060963024992888003766129233075692263995894180108560743863297660131194455973385327871159297644676262766200245105699549427519849314734482528898090957019227980078281433849557270444605955762100339269597015658531245883810122209297660894361776471069297254263951054205941790559067998355294853520466350915127270543453076001425523747426830261750484462703345551622426105030362409058620523160662268743080345425382301815264750134990510223190259315262273750999914989703808320811848472422531754281960446296078378520062398348948073810145918247457238602646513713298854644016103743341954281844559088301119502908629268819144085850796267893178160161067381585828684837928027504301890494778878806432954385189459928508875351041942111044243056301170549853630356808614249111634935840908321295139946432381606785429548620576495956936105265676564880843216046479042234751023306929124589677156861588707990640561067134472760623561152073324556437286654612658255995254820809408836712281399500347256755129120216241914111405618167928945831351120280525032720949111988974504962391094896822082157571959467359637584567056738838887522521300247460923123821836745582011011810221856068453178938513990708337283374320250915673416217602202197415961598399559409861324448252162227178683707995395161935882362068599311223003539414170891805226931454722235874808539044388989256242450089428822037399716116614287531032476428735501219877844727838769034154413535543203617853964906395349888228269953258877174063362351884854246923416498428938410562406397702322993677520923905852554893082713859401380200432491113179177864848442067933573419819924248685388830970680288437922564052034727881712631582355792449379684146369391905742215214364545597932864351262570913536174657116724141724783850533349912200899743212823663455073303068086441918074127544010682394952448395249444160178216368044675326294005978579891954648358839574982843174820400564323006593823739965818020166885114704884933000756401760034312999145056393551754509236546730896663466099087236688766941612904014088248630714964220244214565769081173422624321717060639419846994630575962892182910267786746176847466957607908234341702371460917510243298911056039593333939171193783530052257214929924706249368698168547743821251939467216322820884327822896190212719197990617161524990469444614133272431828076619305969533224340837315845053700644663247232869624110285938812802289396097621936325224155204049020587365831678017705932536372243055153964010404456600450455241755159503195531559176924145471041583159230389920393679080949578917683381747288737945072006766334087354290976137012359826223192784497539533535024831429220507997491269456567718407129861583268378169446175080344334521255188552922392885517714758368052766985645520589515704949084090720022578224196750444204515482877237846544538173998894097759336588086032353638402078626658305239964744106862031290422737410419352999008634920252607308013713043430316350755098194893627675534394702756541765078407878076205550619185476320060498697559417233940785142563267478541462960273042868071267029551566604416239065459109169631881319808094054241004235552833732689671028376896833207383808590858432517397784480244140559232528626324287322161664692930388459575626844844288318783465633956081559500233371842171189648689667503203214867697121658427394157371071340466061706967779267217481482523879372884610809836458305557959082953490686232191119773010698201324696998024897712596500633264464878106979170881152998524160292389855556772807070861891800219829325976971361362703209624476527397511568980751320268641368532597344225670159898098874315837124900008387302995831242145111126698688231033202855063244517799406721232066597521217059883632305541370517504928268163134407070309134190337458026614898694316102745389708707035472200078569739894881279204367803947656984978282299484952922068247824949673177394740658594148834099851922288311007010784888152273982972009734542901410741798849079050746300624998023092925078346271522774684700609750482548651687884934379535756451242563954818853003300190158531991965605895951457268365379589371198570558944848321348567022729058240527189345811378798649343079538201076164230814960794063275880809305701454432321665331377592519159350513484635734731953912177016996596744794391902265049258186621872782561265330605180346108638437379736963535489447936483524441766959851546150774313002400833392128491639283699393044064571021586132420850156492284144306215843435153634489889593790743046112843059827147972728103945585612931004869213113853743016324420967046572516586850767591886857833601284078109838140454621410727655450432972585420592340669373498136245523530966528102762915289579169848090201370840936683808661812944312728593665883368721261985106598816675707469986173366372571453046877790549257932243323272955103240435583763277565582388206626779547825979403129237408269541119477293947030430009917873012282471634530146055567950250078676989510399180938609710603754868500548175785615503944198894981148226816820774812347575372824573024459924630629414680266682597761261907970147526191900309017721057730558842104021279581207822352433422644346281102574481618950619891455893804276247335220077812048737050466596338766312540048013531932744272512338575598530827261802865245024507264622960816214544414900804669301462883844474816005505562008304060460044915047637415044687617803008370154245226437707963316754041396571047409308398560837542940762352181651163150791522237967281544461334778828799704404648752715553021905315841387974848345510075316661035626036209951009852153107275777472070598227886886960029452324486559112482127978982051066011266151325721628383190687770935340925369785795501246421421766381475272184794310207103852387981992688362850947853572360290127772826530426751551635652070741593037214446264799624043834939833346623122064545979411427255389891409641266724843736845486788360829725743872544126528294552850550052232080316281638254405847703149974799682722897406033723300465650555562954535037892086944698774574784041127771542112366303610766613201745718648241177596850755215672680786109591079187454242352309508359928697115409529650386368371484471059547794173704919307724366368709611422974024369261322758071129074979919543604139862607502130714539590255891252938486861623263413290459563139121092629367614891530869641583405755076717319363479718266718738730889091636957945180610625406570170614121207934504319928296978374335346348005901402706821753970186973483556093433274591625760706798007837285666259749461074404423081581324053436178414142538096725899842760053218457790063174420686139394508328293785521740480294530762853765701412557571173889385809257359888467857445872209439815404726448024066238869618215455140517061725045429615050818740009759868910313695027305185448175294895570020738430061687526395000782908299998692242581892963139919894685639984961903379995037696711709817452930166638016700808409299429585054880464030990579817659732712303129741379958184720617653141777609429056243729528426920412195275412670326572404829870223268731731831979126634317894842859833779072536643799193255787563597005595838330159395060841861235628520612156677041818393832014180688569507781524332844865153217409184664634652768165698744371838700312300973136102472337601044708420856782624487991432731996377810612274519683779448444184047958494039735979695938355598873483664684189827785250380362754282617232222934280064015566128104917370260439716437730714325335020775790857499922654829972270221131923832249911407892032979073660233073767070104950451854664645789228497317250294924231002161944373834858672883128441678254154047323543029858327852873773617206928160490179191359310393165425185278218619202492208439727326214572377204706306930788630098372407326801301588223613927270675183187750659890279156421018038086926781072567024125089186374227537644395822634900455602752622259326483471448171232843155355286780832852620397432535836058155316463011448950389395158315695919635922668645144445778792670470270729578277599252272921709812390481311725172491242081167700209809241955147286113972376743007785706212940616847697874077007537105444508150519723848693410691691019415800000142166407170553028094980716785413464957453525208058561945324919056406305459228595319015869332385888596135206765818464894988747852883102563049510602402440588649385854706387135996659556264504776267117353851419744068047549268069438853615104413985835891826806689649249144220936953497618679802060572794869788066359845460272188914686214892083589165335554571101987368333409303616544175508226761185750253582933077963800845816113573551670443596052401761589859872406815396165455413133908727973427734177061090228977105048059386191735766187330722765939292573127902681482631384273090451135943441356608243381469251156560801071720322231275667668381772682939841581465678240329708400660099779315328022287701931022428130851062835177121761008546691076352078017366055930929769823574161147788202494687599702003206458272668548758574401957070530873863811826035314199344569032300211772791082177151419817060734046558735661357191094620297079117924383385799878666166990693971250306718370833560107802564817068475855329495115174412143674331209910767860278368667336063122165747745325432393175111976383159645564446893977545313242822048496674368063006251893889574894113939514018926703798595934573411517130092278797687568058176852795318444240000092007581917136103041291186816777692466842693530063381042331378022571708500989939826590828343094978724249711228650533546763827417949958669338553078248051614290978876141234170347192818586865776069592949179352415979659063871993757700516274299961593043157953092716342696244684096945609537502735124392099013648277559546404622063205118883394627248981928933057351113292960811421677044900098097272119660189123637327370050732091528935054348236884498355429908193798155483586596550978162943512416047501186741364711554268153111807191031716734560583822329494530812314115328344522653194519370833392786682259967593994473067279371820035817928525674031228232310719273945866904388921187892261074321141254426665070097720800531044645569598210973601788076760349806632158745131113613511478241571278714208418869392988084713896639043047899642070970396144891806194220980530118695173401793872934797355231972037988241115875373353174347531518672831130396733332954060556525600923380482281294642997230302833314396472766473310622971108219376026833373705542765840246887158071312067565098028636417577279219010734118979742831422570702024021015806854728431181156757408647323294888118287229416040156621339142378212590027727005011489819269865298393634002221613579528287417629168068529366457873221082557424542249416505172054203400848298902599948800222347462869205950646622073842109811342157155317819736478624940938806877038268531119634615653299327160878530272487748690459616461234373171272675179958806636593991097639558108104792442762900901022768409159058150631306342455631856157841337893276823778073113524911755360254798768720442759798339835572683122022530376497373407883609261065402949321687406649625246806247798658652311905442164196751313515948300039949201318489676845694653732737931157805230238980904519326345530759145475833033983647640464471067231330379397766099109618063078046230132664125574600217060127792542684695483352709189081274403061843817507995029068817994331349389855094540530211601652518058640192063844798574004722496426893079588442970153251985446404101268735779348217490962057190855241869278920747305509932865688025507212556893670892656086457248797366553054870678595461559713112465991027003029578711161498407943297354746940722534347960365364566721488962104291511564837903898231460287140268422512143210728019900740169948344223057266885896686240935636506418930823663338929440706230709453183356917768208118388628708254872484648087871898106949313681658332946698398375276755552300065621096324671581396735241294491329002656799391262567231425504955511926717655481325035055417295063720866743364456155988678602009602608881667948646977854867445768907015733351856629870950149187772306513466727391513939171291356047549586514206615510726965692081486256022788192295488138402867766304914801707025959393860488849149674864918205926375083174179476205509540665772826929156990086034213454532625945461215532586403126378316083601988902002207507246646056664953804061482164329037549557381624126466882673979864246067725905469586404890813679328898433840382923228095894026194747718887119698992119370611575012787963905449930271880145295579616427036152263983655528390601079161641868681281216355188339779225385756417084471814728921243790662252535583042797355348156584430925332921032599931663210835208678774927960657624830026229969005210046957020905144415301811966666961044556615072043320513226062339069430390787688255936986823457380014910221625482110066578924516963120672665533161866747468906096063168117624576669784170637032859251841694194376402799923243230055290118835588088775813353870680255353403246175018519515320981179206765719367542969435801010792959760140298245761992131847363297791224550634375381385282676574826747838894063323021868872325752536495782848443500159908361653662260903117941748909191766795323332323110878775950957370783217701186390285342168240813637244643564411907568136372450262166689208468828763883758267842080521798556991753857034699990675048707490419634871824661567746768960474317579753620407316107391400680168687519472197235017036514454162113059910491919407501774790775949424938026313868509957683344211532688696216234266204403576143250351765319757709075317212748357106501976375079262530901074431623974793838804534722764794933992569690302586561572663583041158060797599772347074291260405166041092241471656164592658755896231421405391573213070702979560596841835792364858332763499570493312294763112178922468645449667160077345829729498042030708338240790110420472187520428604844358105922075092185756882288264950108375600606679375306371002755471026854816142862654832002538164417028037429092564485830106325840159645363637495078873751894210747234211782091763440571916579251661370943868373256660097440454290717253318285129324724798921248097031948743818815422935140441851576788210577959844411630304514297660406637091820826804835987074915101913589529308932165747844812947282140276746806899915592008438933191996395669462840155774557495260127834132430052758973295394289176874854695309278162556422391770323470849127104901931457519103266734726035921354357792601749198551955419651334094761920109273737312491568525257583192841458295615073402337014022622234722949041153709675979558499396442887666431787486158742285292975071782933181773433286494544090264112880100775506486354966737139173327674895295034002920082166258044332628304364639339683201126826834987239738905969202307822749027314960535994301752996450081171841835825435113353283031615982041848758454502627057358164736285823009501477101442131180698594812907971601743703973756667671663800614101324414797716971738817840914301615357410783895818764112072327081378024089698576616789172031997015952232039538860408898685571835156920978129916687576807182344931096339616472815121110053433135901775798139227559652105774322385164242014581942467743352117267945536152346992721815427314018026047923917813330540302490719430099997980780103763517835173719034902249639884621699737759659732584971635903301591973007605073850255863884053315340721582653525508710593008468501456450689143146765229887703376508832967265830079603529796457191515717926410535677915944231680534247794410368166237236915051810652938053435592689621453930188059205251808958549197063467544718547468404677676456454681287816458256789373385715795319652148969517622413976592700736092205051250396099488294728146682579282468055103251548200006980282281538921457956617663338332711622064030278960758468319937860548230778723895940857816135374618070282504712654169857202458168933659310215102819904332526704741434535853944904274067888768788284629155331376815158226594148293478197849405033958969565795403839928685580701255572727866806348198406548744350601477275099093045997430934765529624546304716475814312938321737190759530617953649977451970873591606217880526044063975679915523059108168432882101689527716488616624406603543185406653334792360606026090558092822444606334456676027623641762871284996895646807606593778582638276092318998811671142683384874418277725648799571842855373762799204314123514382894370840090625237221186337268982656289105014655185929008805192104387232066493057236921071942839795340029072853149407333548907692775144300922529087696243463068514569446271495428067966292264224937162560752146661006859052570390426291714436991952132659062312226110218627222647847358299845584728674487028692221194196755374885937958321718491388884754376000472565935447940891046090290031530423705550323300428515651283338022417619041569549265469867690297851922139795067581453395016523507463605185409487788969885321519838793610735846082938039873786984973389360518522606575084973707550656466694001942321890087001079178446482085819900001880186617200285348714261398918542323606819477170362701556693914516362620013272277859820972716081533074964675721914063294950727479644605480548373139288937778462599085524042050903922605633842825942112828682349630083218409407152111278390967454049781915829599737907674293754958660818731905319571032950053189934954178917082725293912379353729473795749723772860750070645375878173431307739000408852139653222961789881965912684314632707691863369967118004939241677934998952119278212225310357288984884745539715156161480810405956693880120447538997399977711206736321208909438692003503409218448437680074134155572834040048821233616722184132453761308215880147331619370389706760830184713646471488582918642956995814115733551017958605008907052932498569621318345926477611863856037563025054745303532667514419944970417047146539334486985668052894339541956020838224710116930727963467081297456756221752559186518602215946926637452545077974605687067258941910840262983314924275163872432392307459481647510720502946048986984381600742119311901382943557694105026599807240538254867177122466798148234880820290874920348576978204330742655514335080607362097841493262607050747765643327670045005075472396971851577310760662126318339665421570968048728183593210783038992760152848724454284540164303321961865386570886531756013735398886052164928666883817695326307998104893464015119984210697956058935618793955641931350781017026607705128829365334456740950533072544017615437923489649199917838716718823950522210030737453021154496185673722682941982084414912808720701395316709004570500610701705971759359775655268895187415474905617649188874742360365739554507188837622030722405870084912080503170945167145664308994675575290979700441641821002609962447890045108030440146051632798850741717304340433966533151637664020893770418131345784398287737625479901523556646033426988245217138036847787132830663927728979167351105949359655265377037243856605783970663598925683282050543621923099694882849416316589038755113125808324920999742016574180860311084330868284481832333114500744266075010927510473503043136486562477415296795129804258701304003730483898027750861326554081669845968710467887055583156906170120318615550684456818896284368031393653465508317706482175156600040398143683064015733467312340362325534822496337841296243054053244302267190371918229101229358408286498457121329505153762235060624427359030281290986582568080260599359310255965922761290919277222166917951364220595982685657124745067783129686047113976869915391879477247872853837128959932948892474681752440107253045848712695065366409825793280049262378489060290129039116402427800682360134091696065522630100199661613747406570836996536341171442270647548730213289186258185208411507566225553020237358407414162121128037048259493411541548593516718348004659602284796101158906150179340924671676135250870143497775310192741326666438449316209742954819484625700859707040704611173607750008285885415824193937312359707123339909413304758963241249 61459719229900862998553726220366871923995701932480609629449031234598889044550256315059636394322123016178554287659160847223537338689146478524699195887976012138423949847263924932366855031953279152648637845927687357036159458612081937841812242300002417674779990484288625319521827461174321822382817817544167914500239458789994209839116518204568809694633133406855888298342531696301585598560368238823673696157574829203635849842794605392804934904130328723982928654311690817023958240295295516753809455717666652652436428560545648292379999351809080779336820680138930864086261043231633368538342963792764354757427363393260327988412730267534967170072403981223284010345006356791079836321918312866569885935618147779860324007559415049118860146172760340496998165556208351899653800771675075556861258846380235631790667366751502969045742908667685560234169886978752616502299954421312435182957743270421995711014300490977796468667395758220224164982092165787003783919203116256739068785764529374794759926158518270487420810764571044673473296960834148703623958311891720286445372709692110641187111032736066409019126024053796131092374716073613799536748710837269115310059936674351629782224707351100364130476086987238555892741899069898353647763924611808465842784399322019575060177029287897227810257006706410456234788917926093504387287419521150160051581251281948128932990000409259619368667625636654003621416064877423381680357924617746668238400147894664492921358326066004192595299692367347372189459151952340192397594679374902793092498313012431060977344076565578588662841408201501836676437300586931929705162297741573428476940499401224666982978837355811627120207996730839293935598596597031179002779554535868872175432460490380040327599406762635513590509582918422877161409844945286974364258743948029311527071951146722250987257163405773250304914777357441613687776172528855378473569762481730547573346187753844642301996079710444963518125021636474375237517948801713243668715007997262283806792334697297840759512111897299664750999537980754160572985645277732597411900611235662154202785468493070626768424592425433777431757836721824419701641627763004547340197308622315620649998438599786018794342266815060372311694094587487498200667777307881264915043779096679147609757335293277657719929015998705499711908352234446275307668228306404259532866446450904506436615326123627497831655476238725519156640857007603378110459690958316254948218130509967224979240523064806004264976235919448463515307195641327850103171338810613663689062069498327983919180215052953408255909942632428174543316850690050440446060044381075659553792982838201354803613810742216271714484505636008768806930860893515481922145503803989493724988142846824154060395373794669344435809623376385959537513983177364575609366661452958983518825524592105578880053495865023974546335139637995096866921914179099282719256075562707987409216380276310239510494278121651581174652108897491157586796934502234377880463607341570278055376992860846721817119598342786446782904497392304370009093482864425810150720307219000148617520552944728182296933319497202847637122723840917107403251215118024043267788842583086017960287122515616506449185409290558954021508968126430108637265203711829028364113450562252174215153499615891697902797808142012620590795372824030977768259903527508056407684064052192853447554973358933020825919343936608483027176544315726753405097620178548694732867343776033319025532118680880805033952708341885304892802424256124781903975921552353110066018986322118089841704112848385163457314837341312270778122272266867125359480671399111907597518717316581790081231117732405322648751759352889830808945992582930863825113806485689923741110472200860036457007056615083738294596753852330980965703564044091896325963481575531836531557586405996883097510864063788933428571389929253657112202467138201363474348317175594785735618321737147628788830930382556996309476789638724629050995539477401424186496734822468069800377138247842224483090657644483540277074839492499272616467123343464246413302609410678844165516826504893919834785284948071303622502538710717152519332041268187629849978415824338932738225448486815702406367460740247477881221352218626632819511325940960308159200117924495901975806523403171878881234093245870122985970917502383993888259219622506195634172402069625419982375915168287785686152781793756248863613047465224260389847989215898959982404038705825340189454943072269774764366688310867562242670208902323709971827155209726842338838936360834168708671360682918955441620405514935833205336343198194443590747646187313502229539146306727742662999623352611264300916640637923584293942550953623627554829631941068590339555113933538188752485031492399995308506550847278057731267562123800140811114189204126918974880209955819440604016262089514097682607090806297871473790148993728090355341123065805691708834567144084257735232481443184142927681838356211593671375809089262470711320406062576180359887878733528230608096090833959699029993088621937225651309447934473581197058990810213428287967526833450052785568694556444246355265210355969498345429734122210252945730377986614119775243546188918951235597058254410172345958583454078910028080922948909149231073722521074481679270647815007381632017376845828135730868351488674031643934211627632909822784897807868826391227742267401428763488093018045976625644571720252075937709912322516785108454225619641957504816006677189515665564318646811715996352704938097382785187504077178190474487259816322955603698594399273608355302657943439981394145298414113734511584598220877502581133096455781723842667869791349032415053858409732564915666454701889350353428487579020409726953738015883472181548021678647691622034307705128587638959420142872222836886375746810642672840354102000216631225349892904660425458882572962371385233063824639666697934590142025345886547542464227347746868768656039117196027134830690653191489995393626192814679267696758755444278227872546383727545964228820761498450034694558309343035497208257137059351411941035547778767652535226301581698158332446897394038124657793758920698936412949176322840894968579488778688644822258754591906616158680352267415922695800715772620727489358090999423514395755246319952203581704500556281059462426916226588261021357673466516012580665552372103180010437424330263852187267096699807485042221363974280677856718405775689860938736055451037171598512747268458479727272452740328679482052202872729039943594689493079613801090582230658324758991211317360643098337664433035237316995020252303217114944392147327657696568650155506102871838334198741113369036258838464081476266063856944831292033419652222164203026040080250106044262652854021338402904724182430262501351483479752066925560003050983972555754663041095382523028921878091946843574675421892566820309243890477098015479091630935791213070425131402362085284804062154472414250894552394994001129812056662677284771684588020000057776287366772104896508888580949301025272853925564691899961193845881060098029867334878287760833437594701417786480501891757197734335678680540641513218740629412575106193597389126070387634115395963129980886835011631554381334131074236710718508070898762731769652291733129008632365128663867890838015948673228736237577272019087701789801823208301601708766078735367193809510876184927974536276557913912308389066650177831578299313051434500742985066299756830944340416712884557512391437011898530808124314475184001237940036811286746241667052255678941852886917492459229304317776609567486475127981770875864885150758847039238379136842663236579950239865364472292636946465329809071148879896797164329709588317683271063719840065687749096205031634577417035177273251030173404527764132488111716080717187050611567254350923674333104180453923022393337151946313730079130119897585822088862081380959740743887260052634886385594523298333991962771865374730272237579949648857252105455623190074012006835937798052421335991294843528863060021081826264031697544864112492906649578524019904065150428458251085383414785401590566122584202104830582781466914071550149689599472111933545267890145492346739973384011126941087693084664698535522701749866093367191604717013122982798761166523194565813305534171944566055962500745553182630120487382427661444152705556201566366811199156593977560711873211608665556468947307200881114015999492924605601836578272411274061430630840470220327278408934588165042088389403001578942679647085382180035530515922040674748548825526929780705753848341983807535483874166323021036962612930020916734584180699612085502522002602560275870034608894751842482538861601161147555230675418568880842020990764748225291343988222584948140911626896209642477024026425749974198333798634965465651031611152238747833541862961141620739228376052271373907608796587911732902090992703658726214332927478405105464095418455545714925398242884488595500912799369230035590170445250498146698061273274345119906636077582152384663411475652314727404974643115074359155442171912762324393102230299914836949248687104074174344447338556713175088967595820248670555031912175734952875447286641388143538140817579806450942193473221329122257773774119029183249065784904408155863326872104310898281553941432954884969051690177397168223113429772577316827806405554632515719979876001385226128982701207084706752854278946356513854901680302538347765118625124314978736155893328017592617296299565410918190323994204669958608260298632107456111599034892586452091345184398419729324082969234853873270886672075171461140540449916851194658660095019381206427307770445359567970463663743689846310754639529997578337392225937839085831191187112112397885311754348655449486238637595636528188436381733124169232131267171442764249473926979220934567922039589179326581980076986673833566513464537789481449073046392637023725888890232348073344738163914905336935538351481164512592306594168485743257860718653475549672749749514778586128850056202200004066682195637047070305778160434430489467214344322948802709860739573496225552838963035980777503483661288442024944003980394873836845579679085806471798321282307050992455842735642382782033262175628372061779983668070885987973489934301929490348001419137875603711245058926524325186127503253434736067942145679887734689094855023228312059829174432711996411454958586462118127550798534513365730703246545843925646681425581824139273862289633563122245026741543049193134270067895287433164833937976848382813824439477630850542162152990997619033345031381689606442978611778679878628501048867130489432405429357922568498014509963761978276802939477220087499547791418898316179185799672309283898694701659464420273495463348059902135364869480915130627205680302249957714170954195723025530205226844865387316423190393428830347651601619911174470657352645297247757021380188773372660143109027529744775286635300555936277440239686351958951976437211359027194880425874267876110488205950873999154788112718495776973608795285291044888162650207632871850480990004344864661428350526402138510087096022551023213066069800727511444273760395496088697035316676167149851659228511010412649261859088664819014773504004557209059881970858605723758543864346606747781516957177862172499649904163902330169195400198456408741860020344735536612363765325034293121390945677846869254983435634064184562271230726814407072735633382546267980571930251256783776546467721073725646204545500720010210679554213576554711141919452341057346731106136975578672942006530787643920323354462205145942993842430984868810024132547163720046563559794077411795122948400060586626045580342323884096603418699104040254866255214496725216432609293879465517542689611163225450800682781392759468975270171487669940144770892998865313240708150454530497271100018016550615847388587237598769466229931232117698150568288607031798392812254731227980217632795386768609343951110700249079422519770489854945387578658517641785512845115742544785259731570130588089908310587164014587551267443751681933964689693738423612571178266457420239776825479486227757305869694627908812859530648105339966932382538570046449861264048797320999366618823047177051056463168045914374745962562956217039349025151922789991246441947638974847016232243278434769641298963197639153751285277339837561861922795683278033755093977919555709647120374844128665096236844570794811193061524404827100954929368396872066119272124082258878715598693448188053958686019867304970002560255187306765038605469317433327067773241980790112603231418565986852009146919397750238864177860982566903958752416151121533168328006708448198272916636321056588148031344465904305704539306911979213148645677749094998902248212728647899817053566546146161147578896602292481631244490287489218425206010792321196400126480642279246948788276478705059858262607303873377381488207330855055329472456256035981015999781521083449260327289385527143279039744664873989977699141622080500442431570723095264023737227077117155267323901838367729474220670583496137255505486501387315204362532940322621807179037869862410498614604427462727080565046289096841289521315772310234417350874196327921044544567346735785894692429351707402654816467870931593113696491425393230349637141032155825258318656224991391252462271135098949981915934854466578189543520011282422005845137319201410644383388466494811386259574103972564621447163237980959320466048014909734241997597302612720725125881967567971469095311126124989054351837250549028368169733296144959703079278451377031159921218556698554362664556859162674585260924093885151257933303701296418427864471193553262859004016975396699204082353508176443066221807302453318286871788500597722612235771509959045160803634317175608391424882826108945430470830636552826932087952699794891055070367245840791572626572321635629114465855821861421077152638803831929862023306887200716317809767725365411931642660527785432480885332062527086761718363471224865314160527203894700106108210320018165065254028318553354498251519586243899136003880805962585019476604486891448631209627153561958971806070482295295061367104245795614732979009647946738494424950620655864686109299981320947120124520041081984552168501081274342744708729063145592346597812750124292270455015853600482233249809518785922091422416413088771865962293444711011528614043731348553644790464308054135884766126502562084334749976569194271217778402460165142590135723661004673014187439056005139914996770936497961629874773228453758738814319857199746472143300467250640691986593198616251439093822472512110390137463502055804468914745246019063666344811879696518098755869952648501301054035566070078496355175021681477560152805602737275313338777027267283299565799688723837788622252146444078723169623587867360438383694775806839040286283938458131349636152152236323988574920510948098236221554572297883082329757007988121013602791595318626618565149092471517454452138971823179384414830892615738035928245386421718846240291360741403047546536078094252169840841715240810983100540657753085111080491934100667988091153833988011300063184569428785482714324361702217777968644954475619256561549861284991261190571213651863811318008694343435112070110163499855024017756631648217736548570376215895766500627631122187889704432941264875837828809143627372859325538217933632137884619093068500957827177320563639741696232685496876845059353088456354574203776594016212491620613669390359330504872387227025829229281649475892852908026829574984573462453758132911856283242306189926498570501475428299088337903189073232229889527994056086575759903632970172257818378436144014773897316380909370575524471692590799889036665656665211994214075009979085824382707729397006685853473737738464868844838746473226424061302639738702844059017871232331074579311100769563442350575186351245416189238765984307343645469863849793875136982146140421987156058089824512656284780494014818031325063391400173907052555505417918625786788411427984590487119588440925953206308757310691554752803271913518244826015511996548023637914325739389629815218402073944987780744938512550833437178682548949407236747876341031545989849499344272263591904937842157011948622610790531324156375786759866253739709078813615922978454570453453539121975430904621387947223679627483206845469553361039448116783752254106454362497380313372693201286246969542624695665115615587079256716160406412022268688682186601623341183157189074545379548290378474401630642994744859325829216489103498013397919174960359629978639594517891946592394296857198696800753903320195226582146461315565936357845553011581317036561214172406290633435111345374425062205898717484937671165170461029590356699029954391594023227582239908910823223342498134744246783995640165888449465078368937512847853108550511244055988788163778123658650417908115499757028747572602722444805580425288595002835489561167100030680876907128432911970552723120811257935869363231947286889535975370657031685486509695855296559765022487404806618772748825938689265333090191542636041951744814885215558201591386242790764181752881394299629694872995363850510509547645974137015592977814323605474693968225428064548409111159012094226085831673717078038788305470226469741537003502084992568000031683068533747339571649799462286598498794851711758559776228881160399877910480395533189041967787901427760394320717732073268708840843224619341638492171294776930233277216748025638437233273261199872478298461135891595040729936169856553673354246332295363687820578188988546582623312058040511389406438286093045606549507458258952706219072396710917696027963222794385148132935730519457230528026599650160507171169898188461471962305551433767170738800357030486069900462454637049361964916896982442316853744893024782064891173112264046847063266034934253671230112402852835265896111693850764049855992102639185690998018635278091519631076384242186725101656412437957636419867332560176717451883218094503744317915065795565199852213072366880517403195226714239130821000768920611947466587338658653002099466099553367162163438983484258938150427986400080894728455810606742505623756256525511059459671735961791472548762400744353393410404403974071917764397776283472520221217321608372488024076714878026027258561272996093567774635521600043329306694038844924510422888117958577918409687692583381031383360840541100220798454229809220009579355964848754705439147908033728491496769109210153413391220760935841225732766434855913796531377636242258383215893905505675816534410040148267858312588796571445606335690760181988746192872688007270911610885748418643733698345369044523801949182614995597838853263827841657680834770267064915558055042339812844559472290782821071735502613546781607650834119588180275444543605384134313656917169130869865225323359502036341341099745311345599702079422393230224389838842099315877544377573660086034003787845753477697123922589094198797148929542567954662481734898376653560561184169738322062918346399361801865015196035147110497950282728511033178761105466491725828383262469934149116004298338057845955188709188504219817535585292568671034510036972662939095738402056697590503478911968465244693554036767231179409160479409362691188294421887290744189901111322580560280142855044048359100842680674368129264410030136773201520017258250814027213638693373531515056246340637446837054919256607259342766909732417536488599991106830251505336032288876413955415686823071010847897883860194749698103266485338042648144858464360237077531436946650602898085083347060608730139978105435963953101839083244380223566557259868106226530005620410489939597851348623830737715561704851870802513126107908492069225664366708086652772162829669789471435695756813338574672945700478587687342014422950149344005179712121612548696214856162100112619606900938330491908494942859015980447012443092056959949007202142331728646645071866563978365256276016583290114087535468934219311400699642284641317467527639284731175591076533182190518874140633939347794696692432179800925815343272422670693433576794984165974712690377890834529558580495655819282969888182900767773761801356102699125268305504977115429922586354935460711947118664082946726556301367032107249323521495092700774464521321233815644718414833265910642122806581787151681303622501481774708856807776667282364341683257312374185357352315606020423409792050667112558427537064128392182116141760347763293224548589398678880365603723474359313546168221684921893823421901017809963456802857630121470811712970839475723049041903522063869668012553388882744131432062537416739939807982104098442321843037249402515349835772437007941458100986410796400851253406026481626149850245194335858136281057665442117477800155575279063217827889400172393705097903550606739725574378789395580981323993823698661523231498311364868639063933116190794168331789219551812593315253527329170471180000700489584521079798508659737519911505935105663501110860922488927839596435383193660794372270038176609674225904923133310606262369765570614549917939283758058562700792891339049614171683614537745508808916515806136013943025070543094734367043998838659536300623055862220269531726714012093248034229760510754963423406717633530707413383572102169755814628932090589882544221543140975382903365431785496154735066609188326597219203445856038976953942205640934754173961005301569824259753011153469023225759803327972148442857751077458072746053958845315532742611891647547253811225929768222888916728760007890654449006626986054096163310774128612621749947561325990021807269581838761778356948352204736453184969921413651396196986614633329038972229265628765741705906194028569322039548919365827565052586401122558455957978250322119214936073743299672259818249680275359065076317558226928638700287385681257629910586510871034366302231094024244350545680017294616807658783042792699514008070995376835111408109671451922611871551568491442363877810781427365370328264002872423067124331804479663016332450685902174200349354744533354215531925719273523760974803095596437758212839921709240153030507303553473936435193734021985164395078832256096164616630765328489527372259417177512220413211503808298054027793331206143016625642544203068744275497732360223654578721618256610665141915356029923380246774008982818992122034375236413470057760849789407677703495943383246750184105177599527312430048693570980442018881848969703593530315389523907427606248672140346368685723741563902716254487418255091798705225265558793640175511303559330023404841568683888592679609853950233100373244870757444952371590046162617508649171684276469362938522499161579971891507929335781358391014840142098428509425250735918400721165800803989553515924386862341357187994845291007992419932720296778479566741609479050786616499669208975720168970336149461915697598222382440256359676672872311307898223060161449790273478724493204356281288452173610184782388304980630258430851252081658987818553982786741353893036171702679477438741715793798498070920726807049311590882543137104618781105730516971423249838998761728503792785687677488929364100825696470598841633159043696364255085913396460211370286026538969197940855648345553228771718613944665684798740107352055927664611730165806361694167748372200177717345282041428537019921788269834480042607547893437691638012785421346194687521684849182574787201176067385563164542423518976689752537974021082183860721799084155691568508675236144924556914419126072115882921559379512308534192741948475721236151981821899917719346703256766365630125733335012236947872826800280791241241641633884868225572886962320404635884954935904121967200803546135057628790771356568605531132637828842949127940896067292114123609783716618813714236505585501109117289681559309606629272894397379316353347769670199937046109554842705762056250843691372196780681150837148927171463944546327479997628468894299605787207399950423271566241787409095026906451138302400184032404545935193967135661395094591177985272310295843365776308540671264315395435887111981224953113026533006652437792112143785011087032383156671816731998912039590472371562965920931257226960949852464148094907890900474743680687081958613770768806458061040599244739618393939900077953495640167622049617542926392746436591137277522657440140948121945320272423779782821385159347731045649142098148700067031730334361136893754648573899895299549706796575917930115794663304832478646634446060909456535539288662999532303044468459980173149047302112364170310082428833728751445476770611456234852871253947264922961249177554236754185284058506788534689112392640687516639580589159238975385748658047175493167688303519633192753961181305790274213280878729383530387667071987112408452491928578448404565587431977189039020491463942758507786453591931349294368696228107199591474145616732243405884546542658743937337546630226188290924193483546103460665926775469396960038105545605387725646541508490049908805559480498230228194064537778753554640392745307166012402009497668615816614280443190149910951855156752361031937329977918970374333941720241345853707625195287191863054985070250062087421988331727125109390650756704286321991563319233763025630766382596945177606939452431399211841413923724515917068771057536129709592262536952698124660141525827983114203007715018783475981571261553294808105101738086229023698551719636568517010023049335329175952274320740741980168517883666553207840773886984610925454485587113596609714821101024908932684777250147180730050715507912454699103447225891762602770818546958531821395733702493418971519675250060614030374331402817883273092350024862198872926843930623236623376849333471475762590791093759587733701921399383512818149038534898026448193362684754923114337946577863765650447155204799215500605674534885969046757999933685498429311600961924819549584141672282320821667782579686363384158050398067756695630992933083542299949009328884972979991020468490219938343534833965618916929498904126412017394186696681946541051873821747603564708112475983575431758143837979476701834236880845146163233544595097554646930351009407602550754305456285731550919860976234604563616368688216156009322884797599299026291139661235751492130286291683946904772866438973661635132976208370348525019625637065897313121776814022003398516822062518309237417031095321430488102684694429229175572143970407177442902747169005664673725867061863516867341480352487720881854402163921277508109953496728597458557072963538838205815881408498717761319074423660111788691006796151481054841963511836531711574618231620979321198694617681861223828630389581036596392604640631220048129503427811190013494103801843226780523364916248790033539710206650061040356623351819773028333879616546695829751856632568501562877367522199437672278371436932645408366137020405018466739575878932733219842549103905236529480482489818699096798615878626025375858060077409610928029448542083983215514482306263192835656445946060295708713127728297091258867318671047041321076297981059764333570507906125973767411937689583622831591595646590242753913420722180946659328939482905885703280128415224708517017127482014693975072440336626482689564065830678188590488206789267239244262637551830442425820494574024038399144021252023515430904128019881093539509356509183516922567202085204930584974033295805319351565935376728653721076364624683528216107160043533154642126130526297167925909937200122075681717614811212431601491588529020829902637092583429851411237315182382327431853866081162972029877271602001225436296419988473333864500879372951343008509889987521102984556064959551043254977124324043311970124427655294573028814060643090852405870248310765549388556960386841161227806619960401002936892226381862331020217345202968457516843354382033343299153345467198860819832113768452665211949097789830633763602660269930449172556912746214833828027759708340098667576597939353293105313819819399288015824548460862664284779856839830584117159398079038217111369071249466001383778046185534214505708902792542132014106377289465487746535157168118724128715278599377384228717681505542983768494357654999279866231715265455968213371005891613458214918232903783315116009124770609253081167235249634057725489603116145025674957777062991129408749657493389527116487935212682911580664377958518396498768984892761737657443305833601472327513683124106506351703752191376916790275141034317496356054060596913055649983305306438746447429873544098308921163038316437349705471708192593255952501337524311546646774189077828838270676799297640142385620184505528363083379695322286245989815083216777988353334837248688363938136709181488205998969190223380652426664014927132113365771868476426693681561960380500819547953397818106759047861061135785001187576313336604354464456493761046358789342454057747582718756450519936810789958716483427817578749600754840588013208261155697012761508655740309203276837385437656588615004150574957072221594580843491618822185550006074883338088775540393170196016258644916440770937884121583436710993225963091810586137091027593169904335115991199608281280824914736290963301575618620646884985287278989623523768113944604636049979948320279443951414935713274494532997431498522786912676618159504447725827857586158735066002954728097257182804758128727064928704391988962254670658305363455415089044912111147881705734153526156673562676351433861255041466001433865393892329392805609255316505966288840271231794302921294826049538038425832476076596497486035134882641947781483610566207198199278709825025105411097950533360251458569296604943489071061335011358929141557673655614983239878146836056335552846468701316470044087701360514885513960059488049281225821478913552836884673061136576781810641015648835157466302333905723840102597484808238417160723561183652399082078018165869299929911353140701795429557590869385834543910096820572206752366566119221709391695913913871654871560705780418835803779305639194759530770421917065745236906881308800714047714314950255832927807624127893705348949410801813499112391464709593553493799470764708737771785709343734137339294116593105100981824975965777018128439564315901157564528142432813976794341145659130198911226028079335983238018331743848207933500793623379748797456534042315794920509470304313208848754909703444504136901808376860450167008559018849582535247887138037438461702366268203294506315393941508562538523299459785681827778339116079043842128630805431863264599407033727706536141735201046099353847526007684573989487749485093386014722499042073940426103939592844087191723493260671459016577556910851328783877196203452375597196195768163020485600767236900108192071744970953884409962776718217825185879245103354258621393851635466890539107003448555663473034362761685261151366433143012179693269491458735067107749237717343790040004664769806425613490722881991713868803861855076783921053909791107223496394928747349081701172394625867328206163928436815861861031381196621563648554305909387337707321079865729373050044626175581687870717504149829008443958678263919369984511832379793279212719414404824280979599364669991194212194249608753881943110565792617068068217424945223038418182670096131503974444125158201623621640136341201592505312988082392191258097703957568174873816172492547312020136847336001987095911809296116684614548716564891465026234586287923482017073390970005235298239803870451229508743656638798198396636458841152558947779107157137785491042444547958602347372817950114500525799291834448191344449296008053979939657697184908214545748666569205980988853911468722068121900613027748852944457602983365313186910894132882337389255879025756947720535661402529969495517264702029829021767056446209602253394806879736410680300806662123306617745221627356994470617368728337043644797412571211598386613623232161632187728463371120173711028274406213814148388352108242676684622726178220317903582720221383435248531182383528546536213649180676852976595541861277834329055826412768995081937217661449298782824222615223593431707812679584676402905280329651852091001899487535451617804169792635112164248350562093422335025661100225772981202255157152668832104345199745013448854413244164960840462396520660937288838004186614763465709145934086819546372370606475778793401738956616990374253268222259051179334899066653724455328731960575550407755911676148367030148541957139184278429086658631944009126422066107586801660501652130217209668728780419984581239802596619368705911474991453602641260022603342857171292312469515485342083204361535094412445162166940034807874718833174013994893001754126310963819031599770686674144172919352885197955366576893951187195655410962846656650158781199172961303820548765763225667253731791355354160487649277201977820246827510739809374935891593676016196137396267390656825675943655032237112618955322809111854074470247154951640061264048014551800116387544241079160645990958488049310103512442146705850646200589577416145096322925083052840139359735087205520349409156823971895367336811449250955906116851928111078310665493854386300296091641332422723362724719015615218591208805219875584327598875721181958260907471728320511378065143223559942744403275959317808682970142584256347684583608092553542797973482535742607460201308541131215645155612190268674185387626055491188383626254588967300310433129367126121890336563978929371312232241915251737480292254641856158275532282214772835749382406301091528267041704066361220990702954779809035316899550314496915898398920451846536508103525616142423582286631050349035953797214711018092547332820361359009332955852124840614193863960277789583632252892285927787348464095209643971389786759649351579150205063695598073425542548363353281119539398677291383412762297511641562195002619238580640225296765865287813653539143410446530760725568245671387006870401900138757629768241581358897981446224541620573881952885537736387099379602294011546583348604583889108620202280082111175536193233823051911376370936076204207962810233452188965923412801886065979769090951001024221105481277305681901817053802082394547329378406160531669899861585912044785212740244182483129884979351877434283300098008025961431817684402668022313976926128073889371124778386606067417521350636736054122504271944505688801133572603227545363108590834736168159155526295935646908927233297326585019221955182990296774622915131730599074095326730284396387404397588708111611666710076596494666088389209122818589224949036509135273062468200757558768004688725915402787252960642095526366184892641594649755914473736237290903938500322746131791156892873169311196308563278755778173765552730218965834228851086808833314747768065251246493386130553135894218586440138149369622314196433406283547534599520013548085814581087007209172122079368044717315980762366104541501594601538594914978963687378860309889537909876702250326966947093036015133745107929648970207711627178300312572535688531608787803318509478402013198099510732423364795074795135183170728628846885642654530227136790748971033759730338481074775967648459699504522226486998036872640885950510234333170248835696526225299581062398287264917024415613119207323030384028864195828690663520676503575710311939946043003300811778052940994924987404422425964289942936674350217818987024997982159154021170061560202583657146433146940507434074255101371935154027336452766703514869217109241781756160816270909634384253875222699710966364543246624434609519792101631205130258665318726449387620304474621821108005575256089326011793680978318533387573828684577414082241508898244697134321426334181979054395145821510630927084103341286105842523683676099042719001974552923149773793890895912753420650723702381819323062470696264669138638296071787128163338537281359058040543003264894588190299020957287453415578808787251212818122387593887950766563339380701626944553130713397063033754675054492991755354328467810287341458482352625095527570891669862905760654906877491037777148824963179077751214098580031307410015409921453557383855958955693382826376867580443404793319155804008357297093314694515443801367924608213307058108653780270821975619173707297431571583161602377677093490752236399756064648047648252821777066791615442328254076240841358832131336396901454508419504407613395066784990868566354342665630661083752710381608488374720069236936682242873010395179137419288465855597201531565172586980393913945380554935912481707105996100940063818635206641250945163886083851800302127123217598688895698731011277278405933054275682643002084370241695892003941423819309876193882957322394208839084994655516122091666229978560546222024267164702995191946253519277195496966289316422526021027897283190491426453441245724686803741749975221312639428838772021960360415931237712654372967959102778615807625811746853908625158462315554590745837140996632733944420008027765106670208080943528590830851937340916269591495837854175575004018488183351929988865813570361276697534753659382481569111348910351626343153310257176279037852543117480631258143818688393501878530287257044323859740746079036073947918654371985665873154766449509471697748084254332376360201958537199897326573410474327220659801298835644265636335368724956282492178181354619793943903830162440103979711425223697751166712714308204026666649594274771123492108194432706677779277330595161983570590879375940147791957527003036134906436652390755883873148725382931829659786220768013640119233742529771811231617941051195773824891941593735059601283306347912009401503765936682720109129386901046283482379968511453025970709289094219980241511355738619359375318151058655969408773443779428001139816229800042518162373136864172567396708271721073022907157441087415370705538973365891649460154994201748870468357772748369351334659044246834559814113509219305589093488940236182474769427827439539554455613429591305074742068662820529794646035236360851000269972087754078346268957975887979336987956795188706060671790779640356143041591416381288842637759884536216527206611901548901506483867142925071239630431909680154721702591710540682639912981722118960420081042671584383260510443547164667630030267653324767863719230480360167831709366173485873530798055713947589159607827915162539744314294100757847776529130114035447077852995932425044396311846734547047452719789393004455807639672740727810170302931160711051403283613455636211937967824615799430303080447283828613248627382808135016179657140947451276197112360437055402657137269071576966087199018068549093783909867581672998579537913578659521801626371976948635391870653253424449779853341262312695790387919785202034895354521157527097189443349351966194819122551200979357742700952912987054317855919184574724309474372210463593876152090086548315736842458769828675979322959334791015366185380778887235858444462426727658035252770127628267377933965332247748979215890211884466205056593108345531220155841067360407108630289036700720566840966031843397869594875106756830455593703580152082887540165555257812123715466135909655305670953408556463581002446652130947091347344665321617260719926597194800745634949972447040267233581364707452343089186564395611496876089665041610104797332886269587179104477558896771341102471602848921994591076096935350532887318209542145183510400686846960252146059336577665165143995511367969507566664977653962210093228963757816458132452953229472168169182681901251139375739008303239432426326171585422044933315480564307468047719022460715181074276618502759401146489050302707525776192509793419299427924263516552149995378772979063960241798676912163308723624538726368486778888371869619766063264835740019590729339093066692066499147173003143492377331601569658378440154948597643522558180036905355626373213182414368020464209487181817009408851890850387656647043679095972732859879631947374045176187936585234410911879514379209464935929264325397419816027638214192816685082894797010022275589496191556735257230586462282979129871993539428515919253502572142308326036315517749881321853703188116732121139191789375949572224848274693789746486799164616912592669575691027855996153523036906956747822503363022236209195372946390185108223111021914277409799222431397267408896906594819895308120910686310437126821700261161325546072294131374373335554754949454064291611681002716363416161355824782881221681773641222097138653018870771990634225168979586575837571929947563170337943764037738382414250630649821243666527923313486647329634862660264363549801303190205801741219149354990756908150413882674434853917237749727406472567297293008796783923554244291697059085424385532505485330232396183061293519379456321749224577039687509694555229403260753890896159377936450061325385184998260483115800401220628152847905385585220141351022783064179884558089745082281195979866136959257132648001360465541270302644648557310369401468328864468140995277034134462281879990897973506929133346587791618442144704274566900679019841579185533219640088521054205411005109935480305869845170624098438022321766852617438188781446248834365979732919084658655926910971454895129730251141644640937140543203756355004932643117085746785637816336276698493243217045606918444570666193229311757016746189032070045282900654345685746182124575067436426984751414290878631780154313702245739439938810108109010239496224589566060510798468807238484085828423851749281159037728380226483466699791178680968124401169537718875018400715630977434256117447198951767832937281163681177382816238852957104840669522291891388275074019754801464158819551683231545034831220804314749674271614419226620764007104944708625772858028009184167337301628325842597180613751669452247588830452693238896016548533073448134445397488440854415655174228730932336217972343347469279311469316887456603708734451127685006069845595396927665415614143685675243066947485084792565743137191393818812564712497319638565382053835833425849313019134105497622283799531994061356168498010863814011847654601642981006196600007407231376709714079539490627983214532227957187021564350863787661519478532930865568073709258108201171402529347213120545626340297318041504404279239823144172951797134801980390490898959995522771295404132624917558023942992386172590408380615269852771036929041427864277487493816305867734495301397941991189287784189261175700598563199893394155360494305141432954091251411748124616993688724566258314678992530747398053315171564011422841728518613761071277541891767159494465833155830857478023562914566434377718580142958378522506783332191326899210341843834550736647647171066309588467878115764117429436254114234651849829566866653317556210563346378141952044632840131475711021627689097690578439316047527035854392706802453723917895088809558676407026412991502710275496143648259753622902020202755420178034016178886900723862623796889122114872965884415481154850335190117127263038924914207963087910108177454847166398580905721519796916311062885927886908949439529720817341338289030891370610284710721725132795483304014439783757187620670277943223815767975791703587838783354755091900876385587525110380720349182137681157693148578309770399957538273734561999876821598851469162632345714890533944160228870517084334856444760006996286644365845317267013777057498150310628687456418218526434109270990625656199046433482317907165148894415070277627175568489628450697264209262489513702898462563174252097859737935390799852603483355116474921847041113009928431066944296323485590026990389871006131833901653992536649524460514406503845190958521378137189569782680500037101811645084637072507783407597078815132792102368007652307136358143707588268639314609223958123432729302980849332631155301222052179866775318797782757096210105224824029254146457096729991677126177220941485941503527297872039386143203654122564961144275825806589391298330761985936070778964730818942339324661219143004016412806161315473283863636484961692192724982258793230912744798801442568412219668060652997220613276008268163343096703586419907306969365880832261837985652696466435826059561188055115414736324113292470619622548532292506861252874327135867621632550235744350055573597381298897818761145100194568128313751299339310275380083743389592383885181500550348362478627320465915585890301376874370416074934126595390191011304462479316000740343785268404330684425294744131246865591695621917644824198348244706675199502071786231114767006688469972565215376838306349854455110453665942641514741647278740792022283643601690115969227027572748666258682510260219798126609798129574847359462752831467948357710747711807720716409297072916866820738280766125645186637439239067194602931131496821418989650052268740753290527820334810159682914275153711186504902869625423240134935226775868827006011823623033070719797584424649124266433836705765775033027557382803875014218523189599421329978047006307669612522788539238536960032502909830721429219464647274912099883893264794073326063019096530723945976993406889653161751730403662795699308530606705252372773713231846307623172728495017186540113991542774506400937179535094539891555920303490840338359610393206838099358300494060499024676815797751211653315055965443852667718260867494304395550732460869663504461598353839968359031114424564258870006360259801693192433683537986395928825930250897635910475562195488667490178105807169181287176756438139114144831271394288624135672384327745371888520536457759180530906965484163203286992239912448180086232368237530635512821239320452067940921579525579274739711241414381899967825106922031327165009053435747990713423735541418506770567005116074687872833557115603832153842306389653212480141464063439437608003738637725366034301296999147017418760270596971793837853288547430910958951959985452852978481129225080046213554343822745078831102258082101944070154748960555668905925522621300631516649076354798112561658493836729352557584092120906267672904902740828327883354336649953744631413950381098919327506272292135355151952479881027537184148132979053619945185464852983396261349989485349780689654456154570172537534893357546052639734654514422024376806233218923504804715683472915572992033325017334791025589042763272228526484716971811844808335628473549247471178100013990035191865338100924948846252535352347490366439271558273279645961459927996037607618618836611291699322083928100511821442638523124605066143991403071567349829516328815847916289134883091957319793575275224605471311486893670020325903389910501696623120512964007707641915080861648898770439624371391358355603632251937157498961154409627500743100817393668812674494002861699969972031648789213990570392680493078166400628885706115748038014145539760753108101916053776628252791078794310285840290210432549029936981878399361635999311681873022624204334468944195082698154358050173659934123010133338083277645775033072498980518037043244471979456975799994212044448972340894374756984766850446429467820725817717911078861945569909756671759304434111969326650023534039548996216228217051913315750197084150866747366437052832899071618488706424401957662829150023769863593070911359126820197059748417644577018251881839782143756669816291246424131946087399295364516870191472404744235772284468852475385788424936331530505127122538486573642648649335011695932433205511633310879001519557288687417992625848618390678133821599934073946398003484574861974048572066157017879669454952695725336593139023777284057027240010586491508692197652320875703488703411789553872728104323729639936157393780043095039182338354036771515927622233386502546695645248750533477066263567165721024301546674445982024220520881245094638541064631944737707290901306944359058474804246607873286805916968295621281504105844771547215332359541454712712660044777033514303004361259303666518458580234267180290117482229180601298331392796096555403476226666675268705549101083109618856379886513305161572383325845909355085779738071211302328377233811168393460094579055862715885870962032027781579159982950162028318045006484214082775832669193982263508774782663905989102226329871952814040963498242853957869385914617891330583221759174092158820533310526106023275757353284223619497778646656588683327059716556825905031382823580477438417464316887866782441366800970336252735209949985855713797633029605048494872071199622415659377685475132649965159438922612917822908484454919441803942238085744645144780015939831414719861115947730958867630323709410368643536036070104462721267047339620776436078237234132066000993165064881039720384752739256399614799668980159001913040637524278435078989543401620108137492128113178696588593433839725078351160815801891705218837521788469117409685389614087863719820408394718668848845845618016795439934345017445010506954004966300296705571799264178902768137660086630885117500191535640705006974058924158534942255224875993944188014768375841160760356628059719026736777487129238289236243095605914066876573117403529884382639527345466172247881716608623125620728881100099170430881624100601875522306449940384084675287871237602508295075288316232774853863777009102924300168435352916919718077563858816400546149348590063544417422759692323361131823618604542586832972758268779679951705543698795500238822828458661887197452532007522621057152380153143705907933140586876685311896504694726406564353989219989274036831575474501995851440315416887837214534634909820902533795661323281129546606571684081315398366678893361115480167567455847509637139573431663132284427647936095043442073815651812506230262402689623736522345382745300147348018915281399484270227302462598198179658087377386989882413545886704619967902789057689932043662002617797159395471140399734257990985770692742239008191199388847791894236045242873957814186224877767999626644449214128258964427437017225242921202846412972276375281675865123601731123143339494048892519527148813272838834621812925516315347685527279899144637251393152608346275834442996174184812428265902344024880410173382119172315076939944595154607336839682935301766755534882237810176232433311081313579308972874596863225906806231699314732534344059392915646684700437592805318007326214460186961333313160522725507433423337302523099391010149435189589946053273371189871377630881348708015674469233590043764086132525198839257803131518756768199308673693873613382504678005057393974326854672482753303397139875432982510665361728903290261035462168923974256368834764318522732627944032221371162443049831224229733556958093261654639291297443325571427186319125730883788746454876589915815223330559354233298488463044573113291259454031084803868159805014791527497931020070217194648737555725313272494683071328353371337019493041663443600848936798434306443408666992698794916832626788617133332151077829857384155533608396516497720400596213370638327024960043406607843291861282842410303615568156865701069054205179083610108973747181972373871216027504877387018672486520774169744005747045051291099251682192473351504490014792165064426388383582445716682135126747066123003689112172060879872810210759461725154582336949564969408575838574475384477189341273885038987705988190622995150121312421219632810729912016621127393893393727816808712115405954573930479849396168110987652598295899895347607867805540254690789019869561865293998337615226602176246348457035663442539 -> 12292121065669853348326602764386096576814455538194169539172498978572583948074285874775357140162542448690995702216438169863759639882789928104722787728687941546951700610570180940301249762016185137341189768653371481037840777344821188387880438398690236494525621716598331653780986213267478367891878408151918457056579926013529090053156594619342601315742051624334266335492639128387653267831566208549308070399017831559101155685636018845505936061195475546355678913924580901574534999867413921039751459755579954928036552865812927917789652305794255006475905885118480043006064185635486927232790406612269380264381001041757021427443418765414983303380499240265367504875037669506596741819057262687766688877052087531350929947540083369548931064044660949975525362212292800659336510102815828844687296100732091075413045588840303994612848152214363611960912609127844462799536920901708387534425439764285153534030827272248290837158737323029488827904753379977911563861184169216894112629017835930669146601616143214142192593182846743583130352814238273518189183860673093368305305505369495263223709189541718115563276365938275676121366704304065378407413172983142733606974677876707951008578550686336158261127472017012753471711185648753592718600806660897228956622940053419857646171461555409025712138414302259391384333338261008928140828043597905444391273117950142572915207837486998718948879761975178715183579065835768500741177645089982320998072202166997449546717010092687835924724277499134026478752053323935552361751292611618960338723460315281996052252925820623453857007389026993455841804212589932112301558347415229956651409855710976021563856291065223065304017266427773983620509528996049260070474859227562384744580058687808407422039210063814346983136764088607313279978993185567594470540508108193064409059410575749552776553183070861758913300182661872905788631241161533680927324661520787539578840972074875098567716285806371924278780166079046688435203580607872852921695236481356857951014929283406787985243837162514678346659708883456068926934515084546227839229278042284568387566555355957995047434975189161961334746752030516889115200768830506343594062121003332886480735042503390052926015487630428416706787520454234263715084508552434469855942181610076490490747006948875231563754802167943848416066343375773768738444078446271446570266944143354765427030750652727127002519898089249367989635607213093049966849062852974322442539508801898884885785262899442948406344703271892352960958476063994815927611000551458482521272397176139405036231092665930263218931919127932635132374696823192807684068569741378489071620422574712995217096502216621289510332420443282675084802069484461161548689150297107384792509453220355970538305531307830646751342859215256857476663947009342587153258811751215991018172466031406466100625126972361651491043310019128852467969484771979165154746783609736883285817726830915162345287554164854773386153881954002309880868327566315829961290789523549932416004223010321213590948521529137026840962703321631242795655892029340751559551448087347036450049554623049123753842919974230506857635241069572605403617671153736663659352640241626758899036592619524825308738222489369345612598587337494249862295650929973891782103586722645170501650607039819458430701330204989851508831060591144622532563124736963992049880334423090365174474315735964226566456237943694381478855920022611921705540713763869182791074958615825558513467303869854994168123296932946708804278773473518933228163000342877491620163628762508431524499773084628393552873099324304167582279922576347112636558622689440109116372400828681697202945249246064602608374821916002593209321067456661564474868747288227088638483187674921662620707059660298892710313086774313087573345966551640693349932068114849337609020801939187150896338721018222306423503788808453434525336151904282093462713092191251451737269620672743661434271350419019184988347696992680864760020101638626256224356659776777246096879196808909495546786112955150743798241904729685924254816202104088617921731133947168331554146589459649374722158270519140469029299252796698525433281597396012372396484977914355481264153187197368481328317141928393906015920120802074215034044752532700515697332546385734118028759315168765250080882802635376998830337033609979992157159131053733702827877196275269409426017779277550504120336338799362076947930976243737764512294102223061337214393754368557270160194420883378764683353390080250411477805236608847614679974742309204249075068508251523466467183712913289860229668329371075013030802834577934190010422888030685161834838278644199596129056564916819478463227138095386389267642274381725811075166744049515970136593044613379338602688852570093719181572654648265825775593500012907728664950320909929470304988686171588212706135254626517802300253324389624098738245466768186981908499187669094922321894146997894733172586592630291226976891440825709902390525514017276680295666677374895275626058880882716075324417197764296551926846217426308249304046008025223424976510162391120281675595730733929903032907953298859598486923271659610533376915065230302345447086490896660109630743021771415459628920557510100703455102689592942442029990707453535451803801924502581324177392278733235020850649190184707021770642243002654687267405538514613083557070969298657592861915011372864823535545256721243885518603512844851564659056578240106797128049851548737969135539515542721813879689426593019028832771235603249314919367755415333912913482904729147359592668603953325276222061519209558644855648893031313352437971296782143722868116320814318525519530265604720418035011477690822055781373768734273414012399091334330510875176524567381214729495000552813139423850719388515329626885627432756512892294325696861417422108278707739727808700399860714943183365841824202804398278955185809428176516452684671934919682377198155026999490607636108424688803399551409900879880495767336814507804414919791406421688692309204878229055485589583971658928488681744102697959842727287702090776875310078103526050799972931869119155380612991581649832813061961157285687932089618477377227346700494199885910914986140699386678320288885708278067260682426159133316596722335059532481932625101276290211563838854471546471224820969785274591173942344513805568083786422182548487457773445936456027653927803863958970012768952445570912355162922313420771235033741126479592726637463425001819446260700895014610950157118139130199654802632045514986852630019990989576745301073280032346706162266216419847473739283403250749225819894946621889537291992955494129469161894671500066655203406246582197945393258896584398498626478271355527347523355860035987270011758948978092653648641861085273529166151210588477098820379927935873612065207708489534459249585258866468768904042772679600133459033581278455292315412359915655409767793548460826178365971730034160380035985027160150856891640666856304358780425163919767112985775272992273337092317657817927034637323128513275489275914605569886354791706664501044892674932615522290802168300051271692321259664512362535207095125363003272168441925704929244757238015341047834756051415791895673802055245950419766843266588560704149939330632000584344858938487925571974530944891402430468762734356606089301815170210144099853497757278283060306723676302654585476251360998779746998801606582868799578395424074233233676259126148973934995996080893724936864132678345861997955949296692640325970904375661940616988775498509781555118973421403054062672464021520309241477266305556162848271222929987860061920742270373445612717696345187618204752671427629456773890762374150377190022173122107497909891629763202954722497666737335273233481213896790398404203751441011016668233938760599004565341248416504576592830869478383936895198297053537252639014931054358454284451983477057729555327305636056986618106277661965648982980442132467497168069663899697326828219660770118256955620527004374724294327733755898380971034632216334491842780380601372880287551027526413319243059949198254734030348596095399783529143845146791882042762504105790255930732331840374130019839689657433619499526638960934708204622510562021755061712163719276894959381629798724811246411838024314628105927338800461369968764938071992009481467565518171076719376305208943054245317758186555976620495844918142745545133107232707112292993841020233731855829339148458104121491364573279291689676945627655263834643067904848975545772340266296834699061838744419164827939202807628101551870960664211587315313129072869674898194786059648079967605357488894917339273008768659459235958652191425614895827684091150564865879466736571884523717245077399737706273274487649130853430342329203125626195637757525667099153601270654923125498339809338574431732322487631631523502447299608580530536873483805806302729115573575328170609614963942703274465386113605236164429411052792041155625400609296305366700713752448209789073020403385227467033513341842080687211992471499533767951911769473615431773858014195549073478578574770668162142619798735981671367785598651361511793787833732180559001350612636509062566708953331981542207414330649292682597214469214569068723791338060704577104622741453618127617450934546821705723944953297038981468611890643096594494152008295955809155540456967080261441851417971468266539944355539944636817599713253460300529069525876047197122605866199196438882759991465720613362136123681133364908352253320984692762989456366685591035003587019011845350777688659640395415082681746427888660290590358134128052921968155930816952977687235965283617531541983657392738542924959032513352932700481056276792316615467156183175408593855327154239800290041256201079176536138562729260290071179147105518903163335983795311508234549406976763411240549506019123641116289044035589863682995208168453362985925252143912988551720204620913573171057577238455363217768047450135412991091356567115591545295378024932979622225703563476031171260658405042089155779324902980641952583225698137650244812178258603058693800992024179286827770558475780835060655963034426661599657843817963212614988074916866421402998239903517756950264085896462520412593066225098874850924347851045517445971678814700232809258004787869070807301848969911613427306889015200433354906874277081622750667493885150670166543856346216472550788792058514605656215615883196499251300151450598946944218845291464610740361652273412060960190617061768798217546501536473431187921450446519196881468443745756718459062819385206202590655858988006452878782310106596971346985612553858797399443755503632896301192903860580631589342781816106851859568889390825081073279648627908291397854948546104217937099111601334058163987889772168226680457404446289350983167333287483623502705090663824355469575214977374151159563760559907372488818840181354004666203529867359180130657343043611687731056185905996677755893671367204820601766118390066223893379597357581636206037096716707140859130060522089924705249215692533688438780947470462106798557276259208910223085220404013092765553846569762914927761800708314273326508503513739281808345689377643737945341891385100901615752649878587835825632386615705064811145491685996149409348653824843430406352854476725585446509417855692508403928736461084760692309637485694739272954645257443819128208650414326779718320229780860613702895034200280000852182657752893640771176676887728069266295396529660454129220500464282663427047632886151744792860858590453162593272957343811326915069221799467216433911941878970338708389591335956305760861275057234920240562915148101328770047618584348930591440749491828088543250148082373956630546219847233908178219876160947146647566085596075760971504065048978467483270883366239273683138359712534998946915718897067766493372020601340733538939274680791292703805564074922413675387907263639756733528907758122454261343251303013600184883624841591068787129679487892023442737532248932090593203032719258719362184572978096922381050974302139306177336116836951654258925313240392303502518710105301525434739229769556873938560196722595998716518453567668848570661382807445788812046988343705538517900290218847241117978647588730411327248373678693773205798974413253449327080657280177754436174886887551423041969450069569765352957043639945731461579728460774110568970409752850681444862979393933981027816522750210093343775621251877436934641396994971538856195501898532030265495418395233706885122326477521318418992107399265329328539676417235173513372480350246838740931803266702188487622377642655051396719227413506652141220125490580030194992018121519550895458286982007798400625635146999571461066238783782877715229141414099504946178353347357274535673025309053011225951477980908258466940988464562224907981412014745326287425810772336333019654944222592348847510118679621182992385113807974656170726258894969845267431319290636473560782754528367037129679905114622322563675413814635385491450246496378502465045192394782791297625525550542892862896954338860856553042892691789985932729086315180512422449477317783421989230512761130512048211411522698577793549737986935545690472332983473277742169008722680450033977793553610965594698069299154897186663330325600053607228426979112386491671652550580794589999766107783084476106483916046715559698856464376198616407456986474725725453911934019184165879333748344627370872416703254977311322201074227755211756594627917574391493005138090794150202339565967439117619179622655611049414951060826783282221745851419216551433544640956242160438819263309095650189811607443342842582731482629873363249426494453039653620102089998188392157193612622524345016306520064968375542497232931958469686962127290615850006594156616014385426837653346484865166601199040189816534618018247884813664887227847301375700372645668027642895035123199756689989780126774503796470520161707907885722560725995326773376777346958427753745133408033784805214629414194599301315490175161193786800687536193270370203011988210280761122830579670908306800882637274090612201490972468505935532693212986597221835096777718306215267758007009796301652472007510354691769554760305019804890000258256894930588575039436503066630128780791391146191872527545123166549811031834592961705138141821512829909700359171759732696172838851551561736556585215238724436103956511914667176539340050170107882537656613710006699017571344954665772879837341064648409848089401995394620573349675814578947215180488720273893442814517297921299730751068517511385648604626226260230931160560067230881428767281151210697833003990327624456423395022124311682151380408982536093638149667920656360028222748406307420304343715174925712623434300218726653886614175409737427669095532582281236943211756271662923229001954119114262092316513676886054690671325447905432725185191155960446403754213946939597820061275594262628212737747536646892358555724504074760331198154752615397377620668049350853571183175584983208009747896056692677702214794145419510314569948634232069794494706690027412153898155064910288817253317899362863104407967250962922158134646455366120968153885481544669377649214765934020743453819953529344233708984036221181184141941027532161339789070698139176551697735320776006324385409939593572545385897574851794854233614380538390471320235609774885892245009509683425332944398579364973512656533274281068493055393460822408556555064564856425585068381148430451778680462142741597502508037171263007923292472304406821591838945209627562767157754767747173352203862416675475343343268907425902472210582729953450771471573934121189959709638650438368641239461484909868669238547787924482908297958896547082228877242082180191514460833054074552828485534447590840277861356771049117581868965732261840998756775040035439676745488243391365575752062323136030039849542226819477754092064908613946415655140073692778237400019305430795560700258726256589423169184407583650815640927985563093410115673059619262512576001198155448850565596985191789751716994235426360027314394800925571320264644082181429663613780707262853102372732160852835189123036247385095047749535016080709531693239971453440256828377159365842140427706540052239098672537684836074183782858047552839389725573753169507447315771080251783308984533586169439324038841983671495624616953657610740416796650014974308208535264815192383946328843366682905818262751279299658901975486590294075091195907901885019771341419204312495253354588593572623981646340872808186289104705733828171088838197451569200419094166874256504671953257529846352178524598172650643353442845797535743492091943552880111570052147141830124448239831998393435624957158071837346572286844613209669906981393748115564749880762184757701349970274805725254411965314280613989894203192579011578049626601921999117075318051599185580767767602906719940854948821212073679679009244779245395363092109007083178825104645978511452705914453533258538943094341375221745296036730720630652535676619366647684071673872578571854632572457199304179954488125276380441595358904860528893478199139512356708043915875695862464033447666370299969303015645704038838255485462694832913928140718853734249102064403370908009563818114677325442196757330618769934617513432264495929358410071933727124394683149340630421893162528695180840972423301136245455889357677662443493731888396329197362109598068655029261864676367251466120808776679439335716894746891756310476227111060000220796738369975026062996428120308195569117077467428996751534990266299352156901318896108630532694351755689197766052155899429238564027624037908394200427128230584251548935821860741204382401169072499399535667695740753256329460857145219654913572121065010561514551308603886732113961441842117342008707530119221144801629249138405891405734127158378491960457520952824958353578464636420756310839824330921601370130738880922811532157153160751048438674995583372173321993290471501835558810810323924295733817438685071952496383344754428012200267789044678471576491169684561624407242081272542567100557523745700116028993299681635737947411177121473687342252331993540174227544494213857432004481362495062217132942486419562841198569710376223952425081102769509733083373144664781586499190866388292965883418476902550640075783168120617928733346483885533294261855721506887967130756224104661893658143864145485486412894844083799811957084484888986830253438037614119596128454565973473971925756755029114830481584753196386480326292172226499126895530987072055779800438029385785233065029901640136409813096329398753256537805012304438474900225379426936544973871329050098826090302528812972227439129810955391762918962075918994616533368812892589204963447728401872273142755812529777801778264538347226680302685700517762456467215501488980222025073125673989327003024015079742605349325140594565984021940148258253678429600316897764643827953460882959067690711053253138820453502492804957847020595186929693798068965770022499025204039318973591524982085288289114350012412904282616313622193087488634249795728890007938495449269835753488363997024100712452301199954549381770327679532698661056854083246992932095813355449510718266215903440539779771344116238500593087345102275380592433810108828560951001387076242009057440946076582287465391538527146057502445467272375360746698449278143623262208130165034557938308422889884913419957057757554858433987288390053187504451356414871764440309734089844041677068787559124710482441383241808112871755073426587573228236759447170918970434475377373253117748581574302257308719808934209737940225409017805179240904026458247712389803955838420180376597223363576598243752276171794373976897978480144855832289324054952393896139141669078120228034141963140222924739428562964105078685213176542445611095666817175888041394309772340064049615910501543461368120552990908495616863992927032668335019624224538057982367749220828571891937669875031689339734999496005120006179770466647451275214690293464638375496142839270249594379769732032345644014263672157283274092263560018006671000124301694531888675618531502680137650259958520764751232164935287146792952396456695062566108735965592097158169916315592871428322240259731249852877763029779561683379425719559807002426023933313980481694822190805049436890957912283225881716689684916378933603380180717458480050877244839025866046010800117165845237785926426719934637268085703963117749567582446971002195597893845445819925539757187935754696192638613985762704309484714210594649640331005725801192914997826468645691034738184228277288585011918713398948917456135226524589161890483555834079461445486137535409695013404434805802797135020590521346633584959607629947446865005720444639454376237308443558615382840971777161053373228608004902772193191927363734389566717980112491887272348460847044026997914581404746054252447923781009082326606524280340230883761159644577791222416937869957108805457770856903733464143674767310432518603349219030988437283979962981686326630139131730037848749589033569655192136286028773452785784758179579986957180664083935100420265662581128253373511825099587626689968823653706744896577365288105848782572849727851713651909095984283545762486589447334136465457725974908773589404597528440928261511816628460780078126617738011856821502541317316002739564696674607327373666075356550791846497827669726064769624235028879884085627477941042519596905837596563137113730914143861202304136047367934472928522510172459198372487606990698466290692190566240474940066884086143785935556679668281070509132532329473549671492503863461395381357268221734029893934053636991527166164748280753834993872499009966626957300278402928757596076330899708145531759153237936448958001504418527529268116248741616634747293464650169302617883357219046614576856379104924722516432994962540499112511306219579712546058361227941422368086046897821458367839951484713564148305201663199288283532099245216463724761252154846409360962302142443301075657252739035699133160446329209362167702590863925605359388595324345281136305123249933623931459715775002506407608047056041633354283763551059698730209078509334946785119215644439561679433098453534504428889961796814198167514122539968697537022129980014548791931854767287153946831803196301696949348896386430798103981295495707590731800216671682592437529353705043437461087312533553221242648128979122281054332511057873400971967998854287207192944275196905233727151671616991382820388969936865197172335882166976942909154867185148662717285102717561803157333959914437102243538620659808360556224967948574786335005335202452382057265673564533164853769341230332578484022308893252491665552411744124478545125339580206127909932070412751116021474023329786610429302490987148935514161216828191143148991425130511249722163343712741790799331630777435398922872759043354987490432556066748564501267627044426122027417617180923860709783335009956113701071733350326167962058469921583067898775616924808935477057642912439581696932621243409273747662349023395043861063095544287829634107657826054323464586004710303160874013884556911150797166526193205939476773441680573533085505221080528226145015823007152459459606370634997044528191095666342869687516264003386002913436094618475392992191826321296054582890974498025821924653932181719327892406234748815615617234159206857565943033491915558089199286285678984349126560191450186813747555365831310991883919283896854525795282197582454226816519608488820704942417599898564628882898981626772282489495497289338316819043890495758123300564312705300955191370161366671153253977581928880149891954414255530013975123789340902824912142081199860568069297324520989524927482125461272560372445338993884609072553877012574478781398021552551418306016323382032568456336376278389175749974355915074421686104229981544949071922095844813980397814317833945900249127703322873293062346483331965236919197429868734821349327787924120600091491813468891262752293150565986892361271407947568841802768989443644082307944834954199874578753877203011600547831370076603375573094616318014137093898668274794069856930464189082014650605840762460000067028690403955155867615949402481010130018993329042582751061138615022079599915922482558295918626718755566434953615921035553213428546655704334265125395063487143776359920400161386536894696085934876588378546492884880220888361827186946156302063073760837021546327657626394754237136748470378230068198532714425285782092758724215352700916023406490049155003902097065433761272797365266564234908823388050285230501117062465238682009319752207936101827119224966475457368262361404621791515783644188641999175164534255487749566675648858969313097764923373021445758978371029633482478155665822604700929583522001007269875327707538431219069943359568864246790768742731074996672943760058832152028484634788778948378385212427335744610417470550735564120480199835161785196760892949405571512819352439200237687526699925478357941411830899798933932568689138098708674331500635080650439859302852664097223873932331927401804523700414993174361379939016197793262679614665028558612011956827118368334457969989961737854752855582524879960421365989547027634543640631505284292087803638816320886924768833360936235311495885872014862541860175679288837905122927733604758536477665490023603683242031167216685475307259976884919202190373544017839474415543959146572773626034365361864566243896591223243086526380832099738418634767486530849077449470516768397156532157966254068869651098794533553619502006934373898524976631134371703340887200069445027063168620608698782582755155158428985462656989610636106742966205117628236427459691217879614957480784110190053169239629712039255140946404353609343694878988690054921454807588914361169775818665699112121446928777146131405847672378194564444424506756270417681459496891157048498016168538602314545154501559898235288686648718061313016846374476969802888872025560136620132877820650339404625112467670821412014795687952538644921630887475519300979552743671837441314485473068776656966670335657137405104790661725928227972882207881115732496123540248451928230424289892706892939326889230508492842718024815181030061434270591393400954840096197505060156990662590751920933953735843160724071210656404897144805780137026464127569642579271631705547974429170738837423885725590945962274640784881203862743162439591908340626195348240409192463740779548396782004752964484304756712064975786405886236229091053855712055000512957817355584051009978956194743985677343742614911733245225731974947764995723933253251329774496232131724757660220977862228202753966343727065683007712175654258582529315159393609817654264020809194957900758569753589182200351579358885199479278683743530263566629891093102200033597171938579970966824923414178973400060928413750059834588825916209555356010132031763562748641482922849543330563522218421574916350402798703971188388744810969731745349567234567668105972665890074232978169152486929714168818900614645119326683256436034676621762036934917389717905488705155321394659578668339852159623772595968593229710382529497813425122826101721266896533745662227627841255177363035650700428726173108681178309939351413483329403237828310875911377509658504793615168290706514126846437712235997949899573384432735538559594060196160330333603710113135813839188453322068978359064055537137557833022146748488483431679264694782615345963037157296919698114753637891102636084378357931291381746055689005140141751301436020737898357049902664329034222980913342530822425675547954012963568335827215819474170729280094795966163193450075320328988170150901526926006156200688320623132421159677829607659800742287923943185108567784913893298227568415584321519488782210044796924543800922868080703338204983430890176917161272097855347146315852868764958825991689849209865410562294284039945007698953995069887469516131342867403241204725165818691722750547657223491861440500519005335372258421101832806822812450652437911064631268335874211045228594275511206194466809394024439620908961442039583976149575809760063566170333858770284600936379794758888423703567658526315960542251093869673948094639500140962218089617093737744710674321859067261776981968925039060157256108973227946634281567252912796127947503073385972901205534671197394405826243826998255119647036210767302117573674079586912183520474975753255602302061130127141395575277501481791675441987995640340654141182176436228752344378254116562261037690007829114704487371402823974724923800704930766425452804958490812172619110732580509080799914131310507539185348506532116200695082873937479696362307994755010326566282963936154630562100211623561781734264028869130991411056563912521530985119691786672049540529304055458007157750030540862056314684341623764874662013839768017194424109953512040185002536120351124831466350801882351011475479033242864460237481118492622985216205937301677889599404469990197770204351015764685676139112661187623027051282685405005812887014846192740498242809611814279625592143520144219871678144802907809306580498350360556429413520362601402183154728420291289191168631135191605813928416786592732751594499857015799200133829716506182522058761351772948650256464485427224583394253549700077035124602102231319264082361348515860923337224074320904190415831753474641834365910267841028576593294348473770668565174292730174628084253641886716738652977917458237870115595103689572825293823495224363844438557181907840171118730866265236955915247186330857582885953836821840280202338080988326310464629738871535714279432298307903066603324769082066864234343714363435234806695743300725619992827777353805207120586341378593903300175945943165512098075147025225702306223210162420573279712796342740711127824447613570728334684622815015919408670176809810083068123707832453319449810098885864605444635943611500028922646967191189120677533083294648499383462459269588919044198612192221384856041304797904737193871404836874896119912973371557913054690995663136643798342942336147638231346634749642487674899242795495249575189454376622497360474058175719492689308259027765585890638903622018487567379870015073507300651437362300242525901799409594592774540588926417397703924413030774810766196772713243278788597104079492224720276540820208971740589587507468541054774700126013306053953339355101845652861408683600316196807584879408912462847325826787243218929627491139614812305398392330452379696899986284557429614121145574113329023527695753221503372393399029979293790032716538147371378544725766002055458469905013348409871305282078788203110198364875244735678956235535440178453276427770874929638026026868776408427261192271119884489672438917554098821545819081963503290844186323474453961006910890647913181896412112125848958642044742041384002975922909339953883202424352977024943751687161345385922299162656744693409255338482057075345699836106229650605560049308532817355562488816488755080679766403429239449460219845737984942916028450735510699237122078443323738469235498862715338966412343396215733273319756148307129900329658247918491592349236785866087184240803388501495389969483271201379590713308207465627452113166156919917651312867673632623814713004349285246079915963103595422762393346952396727280583454113503610579494259763388550894049434937811556313797517593594288574374345261063272034412296579966510331120058993681515658623475552603278530862655761864069365265393968790918001748119776172689580398833573284346626413009047258197217705244874704358406558433739736095892519095138514054717800097075963950183240144325215703464398220515497927033894621964501238899853049485233849528057398539379833777240081215221289244724340251376962001734512700954635034246197988522201210754249790958931251848158913291307853105353282456602423246880602563294843558004415966128587182494176492172715026230083938938425895104238533703934391274820746723638425880290176067750319670403778533578354964079782349791755159950749413902619075733938124889373750911530683282217237405754666679137707785493565157251303435904717130454825810959573486183488588676784560755842680197736258833555668451269975051170659967363188958032455121136003038748924035610247975612415217998849461075116335989697992835444210137675214274814852678186499976823629204145322335531787121357468246486991960204938139164002327886778362035599415641180137090145287113477096031052304404743219671018601224478457189482122549288234878217505023437484807921146375098980136506228611436337069550999509497866285787987328946239143056973723234759559424926922494559077867151648688667235889907861808528827433626989215555428496950713980942895558564205764398759903047442022147772948989862992350369429690045700634998921922965996152715263928132194848242057931406614415004295622719305789127941103749089352517182151904109644799696718778310934828623020284176778765514663093974859532117575011192442786294905755559444735582999960070626671456396407371161576260578737827531942969717536677276799379759058103392286454690770507928769935416764547778514571907213238173167295049195537371627591373280309358620520413200010038514978399677974450110379228449380254092939406246954563665112350483964135728698396669242840285141720362694881671587982345461549334721795259226507216940639692993051380565924030404186477927578754326683253940252798053696897550551915805367294469065879671766805814530082295611404841008105201351087602789413753645670646206438259952881034643278525225019195046651126864304251255498662947867334345793491523234053914219001266992931966804056507701382578590633579255745441199176328222069703920992472508763158471796508728817867024875280638923181763010374029532236595218969375475602232758292004063386889088100783997583971453678339227669223698703134091643238168529513665201079161951738263320996890063658605846125415806748802163528466467461272247820873005014002166460081711766865989574691347593423219166563307942026496501705269474414977513509827046508593493821138899076583498387590461936051937386793961347649749550614156670911779791225720788138194192655092190767620992445488545247011853855506374307558334509371823048426456156564506312347361194087775321805610072969559427322937682047411511451809614994544570708598586421144304394612380131528962502901098221724162413232764380382760045262298492227104749969479079237384210231228798557103281834602411661399031491248100503358809323387377814675239929070470035608090530323402733621850868046891668074638839577733799610786468721108559868562053661274278076812819945895236741440451352500848701790311037081346726242834572776865407916260039889854916285434789811998024413276168096172378934776921734262683227174084098644720628534887056761048375756371019405726572236734700672392726273106095537068145293342684289388840260278124668392761575076219817920858002580141379606913486219185129644210661132706698212352463742374184206416033423008728600749568318322935829923227957741907617642675889042046079523345757902716851174649197275376466596306359153498777963671533955092965010000947034032209340535502044333645267258950279757812033824914070138488348414620478883709510412643554311385083751335934766302400642654268724336452605114736924549194692798057603694358029971598762635237881094987697984038215636128118390097746271853537065444582936199036681232968655224657718069789989958042092766449138253268939572733028500817946586976612628748525287153885640897116985766014185414971969635040537586970501136179047125627052225357176184635699771501507426176269912251090252668788537491712012090653151025734799168515568203971774333929866418617787746223724342354627618213107452039212907759846785619505106171798045512590025816149390056384524310680718981841704228485408449028885912956992644259626577731135544649435322188539901054882136333012451674809563745793150924910137482053941073309189952488548077384822345441390801771624385400661072759040899840685436001860858496505174837193138160375694050386815039022192533433994397944767131968031253868655916273332321365572167153959893983361934219133791655237450235754939668396723848009624660750055745550855528866174725554302572243203072027209455719777749557972496209107764207429915638593505112428336659117271790607662260907460199614363423511912579207726169694831567732619220010834079636868086273542448463258513349875050434650773672422453434241763519331711862376690222761364406158363234674753691140460225058433564461895823506956004266055401724553117061402564382473857129901374417568664972151627117994266826786951215295493730061441045798911524376203619722257034260378233039835286631012692734643485245123428438437891764234329689616238566044045526025108782337542703250224433894275866139733609024729260072332045946548543273864201371964435997044906233600596404480501844791596278728269625265679593473715127474086339120299913803412549268732826998605008899736878058973765251597018096890669750511204932727902779504549839717623403685044862916242669207506736874561033159361799687654450715043295048735468164447649238780947328590952198731705899102670961340304425907632541987556915778899034032708037314110694006120732036115746103265301995523564687930422464879448982870044657836099060319962362265611339577473213013227359591047482061458546260707584292668251306888972259745152481575657364527833506676969102685961435490330992883786909071102870868944305061376882876798359382503266883308546103405036780600286746722595054794812352466421036800835984303887690579477224418039325832640289040171980184442840069968314816819038824387038069930433986609439029788923358190886096876345955156921349173083586259041780742794255116483758518680270283993996818397290878007690944936368675275696887534959171208305957247611536210309461725251069523686435544267199865645893719681465978715663687993024705865206136873063637841242311920875385841548416682009073924043007080901523003756781139386997660557766817883048296212242704146454363290453120810754228234896091041795546413511345699748901522026936716379729555362430948207611984748827551684348471321535579469650264812592180454304672924568712895619731887639422352456628597005127913646468912784241514502074079537913422840792978651410297397787300221476759620238340921431151696919118910919296517328462799596873234538117925621913436588149118540741598674306695067980018141103600674665426487352313130220582693826523736738551588138019925698879960094953862703097928367110036368276476529848856057715745797107197131335698296282853023634829261270578825461628038691716760964442685847284902915556500143488262131307873900942958036183039393172855500930182175528691199836191404358455134018378501563153613052008400092643043573550706655356602239296243157417424361140833793489968847862468361902440337154556673673320845679961938427434208534769678394690215961444978581249852411183057728779265597248607695102068059489570909224389731608364691340777249451775134697945312454842174723712342689180553356143279435986601852114917189270537698053098434127348853010009651680404451527286759839943441044491591126534628824611023244846343650410024307335132902988373326671029668593396518110765764342036547670801854102334594755668882912681932624261987042627408133756533267405620875860042914566433956949548839640481574633108922640368628072138002753812588992726819565170981851423673771594099201156223059683120965091063344075700197308219398331390704562993770930765310037707126054111278310115634296896229949716296673436945468684423287593730909546267682933296963465290147488523596810276963684951335924103497669284025814836415160069119251106409929934471423514214543915173230288647454758239031679835501459769792242230719540707509218246995244080820125214197671729544692087091357989906059660625753857505294694799038679539256429062147143307452204925759140985044082108038458982585486975672917565991969486683594451170073637496336198150294162502506508877348490692868795724693028941195030224314177939198808630631784785198215977646412905912256719659108051636165904826266042674877710288789128357451522065669277975563595709230761234708837623024644458251557968663223029670221017788565904570545256304383534123485018109672234561730270685694102519774740165720347852062650207194404444117012842553181900483974104103335254522093105611169011339277914390969475670892100933504030119242214155507160643483289692775260175875282447926081882267432014434137766754986646993577225090645101250673766722220366856332899539942739436220962766088033534594099017464209292880741166442810589493394017315045589240027384371096200734092298865568553496384887718122250338010969256368525540390884594688696236615578438435719145852314931054158610570260093773208158252951162402900965743400543477991744097653182736289243759973505894749481926298384513787937780316978830678931430779071393168963925531868570681492623095483831412509093475162703664858266908853988387150373651116245108317772888317609478864974512094116079371665558356665737001641499163673567619840859220198614271511549878433692849582925904962661351355981532586182219481651827180788011186703800829375200711159609430875514885289071209143764415752035054348920070502161783988850373785881718026477845042885374173572668133462268474712194279826927573915427831804563813813647118646863732768465840754046651995382223112904810396185694253162969840400244395918918230084319721063297459452169272883173709362070423377440625120705338914558240376717965009151803419424987830992002152901228016165975272738844691303557993083927791804421191001549951642441203096728104843407264137402480842350704064169751306746355044839094970642668180484726723038361296794668793517475922396019082164685334156975819552966501483062459520862476293417141810398563741262105106718316055733159462757406403534898156708631008056691788273977916307842298685630981002657139274882976912362621623751839287479506276887291481552090452209229857663457193135689330823422061763140452536543753928655101381422489837543590984441373198141284229326810628217347650483480755072020507476120431654595768645624996359445081784162027007605201969275258691703041459956935514816241244631536395027621723270477577886709257497210080565544647803376498487557910464471562230559242030345586749158832040389326191384581622235523023470782342665072064718773568362220009762874666121241283846081603299056515000792928323858243355925443545583820254593428594691099414188391011332587757198020274753307716796357513108150926833656186838425201472678852723815731332169449418906212481564173405846627508863727326876114465378457154666397818114866315231576608559421394404659750601146760700372750154436058964614011526868435665354759683543731844920519778927782331348387834588238241667714675715789025265575871659113572176953093600756861815255740381135147158708441839074537055600697411026747027866554778343800503743827196950866780099597816884262199937366146765311466009667218549189510777704998812328484297645304621083742613380486202590452617069274280881846882243367274354233569077171554635097879021329158866866542857304519515969663887718347723788418107337783110912462255726355569985505104831920758529455968577080885251714873137521115477243215989854527919258599168348857639297880417860775692197815286351009761750131370975146251212301743953828515345238788676352906057310656352007309948973024285023465681649137729942559412736507309951768087248009670857722185542258449958870523642950900359987598943626429780862334779608995218122061989326075680887226530426188075786869952186437926108404277895740868686641308594163455332750148708219700278520260818644279056053878430704361346932704545138689604090177967398293283882229119212432428585717589668097291391307216990765956858253668939396850253635200844268495884017555784956641212023864914495721346410472059212951690319553173436048299757813629474908293558001686072209777511679987773643726753793595002914656116229234317086531310424206229707102305559413790681326844004332106050161622104740352390588819867240535178290692994310940063261990707476915535109535155158835117861267220176010705799123022329775159084254300460444597281512977779846406241545986423420808475700248785995091665270364268522893322979236600467995068111201038717196634568212739736017436704769697042233992264723537101208343872087480984805567840862880040430887057787147694603128822764628827344350166618564999092499601736311009601583398011538337193627247236570415827689244737588166923466950820034961239757908282680703540495369110634554523500882032958167822433583322665291640920841867138761021500248129090127866630954234803972157706629819070792994131269176800274423345753496134676004597415163932457377709941242556765126041404066591989963790316199575195512662591643296278891960140794501919523837567269437243569831185701393817329371772271327864682570168402308860849267093709572670943680084061961195537064191039886607042390338465690622337826494431582328643189384050487933831839852930885377647628872684540867265583715481792550044188906649614315101582002559508619791102155970889372290194936571135043860021477304968222900981368507972000191286332523070514614881887850487432518589658079902585520650425731120046232462781097901951786800539147511115948037548042483108982887117472424526798799468057523831416322057423386652449773607332176243433804828586892387806988682733676058893796110926427392745006360560751167532160204350594057033224171288747431512990765504059512137120708694511340466524827284060800166822475721046952590237928017081195914624760467394079665658730987398195988323491304750051534536659380737122968082255985189881580609573297597739988479814485848322290800468278411977870210051451593877614429241693927110762881560636120984661458422706578383660871628000707360911555296008654600218682061834398344999791540958384049175450752307663233708976858367047547845974874355106212201721821069328769129082129495683010905491646460595822061146170978958783110494081088684302705814767972542936140359479589790577972296726447707783021820874646584408912948167624908391572087616607442985872163403189367365054144179310769905783572246734226156429177837163224269298805592725457678952393577400480902647964216538084366838217365492879081833109653701093348210054966062030064334425968622898743804189485187502072284694788367192518746645956458642482326666818425516812321402927410953805622898387409857781201227541155732372159479570086782965092140923467290110258916631767577967090627097970145905103878224215094839324770328902160447342309964122762385708412674997607004476779601460455056339013039000809219510616901305285377380598696037544870044534936112537345542032902446107615570239899077542515961519807177925867168531312774163990968564200510425160205696999478881293604413807817032491341038334885298523088154593250774982825013343105680486342816535423712570609955818031569211999203790752065229625605707759533512471585345185011197379889139979613513458590567949573872170994223064463258943462307652905752212625439917051819528071346150088041280280609488448454649539757197697296383540393383046907962682840805723357146667344277911420482992152755190593673884768822367216233495469196886991455663183484649250474655319297113165595550599906712991239450964273165124602512738284195024756245536998467194103241987036735669329031550415970780561225986039013076827070533875438861677013398634966825982995518910484090569562940748405390255260324589351646896274129527515015472555068017452137225160659164353537032631010258507210910636055508303007179155324419566593482751950415269368973361374784999169883638713676445650649674519406448280203406768938478536036362554394569173066368617575292915120321230756303447366513111093219604820159362417191181115318306180865633355845286669244544516936628657253880921356733934992299050233762553268302437129698857712455000910642034213805212857619913315234277306108921706806490302426673158227140101187805200551752736282336930272797325468636503001150238966043710693598139031388829268961558177637663239283844107406762831200286558261803281967705704463259357562435369520656501493736081239774114637454815446516708146228524257057396030683574410886197484342502501142067635383554822476305624500698335022250920897614455828771717475233256338028406252854965585344005808091590353884582083943608535376085651872241598157686163007286807918837921612468777944902392443929610373683603609738171952276477926816525503480750610194506054185617466532705553208730977599110328111583793363115191020075074857565260356386064334158772886350824967483454762458893154790835344213288616772436955405730309666407395157798167853826036473540274912321234160712033774716583977910686615556621219225585529962749692105679163156239217354578676602182172661204874265119982205342074160067278999716636518936850977194838666281513426499271524205998641508606661659753832022370886707396336507055430031058263146721002500611977644182336846464482149468508939555869127672137825585455103655603544424267698556475790069562908360570978410132402233682123283957969694687401345751212522957058947695773757285039440000013070451984629914878788767134355050174337398478560535887612733075083156731282956774950152806126240123460461067526669856890491964897419635721071515799185668601628309136209559521981898084843215262487946879233097724958268061599474766320117707232626602931259820584465621314908071038389795994282676270820700709268311811298768765457690250526274626452786916332079451840684181911788110946341196120121266664266020535930836857705159206024134213517955717050744419405107850037114735774152649890942604487566457114306083858415758651010486472423956996635870305851674146928354872329419423373042334228634049462557266099535881866773503783488255152925174426072614722524262116286841139640462621475004062314094463395529626778664239911550090793144967485348563608327462729007227920040408741890265409387691528648868581072233433576920144826567151426984769996374573617504952963583300965100124019569938100776292166741000831138600003650942694038645837637697641073981675705796161234571728773916669021569387372193926899512793158083211285818791580938114650107642895165141730621130319863605767689719508377557780933728409048849822449139015362784749892048304579068880117727713096774062501860226479932841287434066803521127769595988408191329419170443730011729719850994587731761938001942306368552808063094111275019218019130583486749138689651979211865307507325570798036891476267624101594316497518988994695688846900747858021388793456793677728656216963800754181018692037582496069749941291643466027159178136065377135385668825650420230963624382612047330099785024376521842755252694027505088263909091007152768074754753865282365708005258134879174632685190187979391153306759275092634483313245077748017150745608209008629601681273357565673811278031301689888701869789275048438581535376669333416376047425746686352983888603455267949831575587645743559858918219526502560887528527725009509480972374881526095420267324303544282241857142326689063194786786752735958599920041631967166886329800964359432836805633353059219266015853958899938974744480521163663064847723299798710 +precision: 34533 +subtract2 subtract 1769695920451204478347713057731621542673519045733692526251125261973572158707549127347675808879720125818365448844558769077755249776836536919633993719539034766077515179000681942621698621420564649789783111738612760076117385527518188862865964883128557380856231842370569768583613469399178694577146900701240298336284296341767200455409202435092024894783011940373733521353323283511343033865524146570488498459404674153951621630436598652428322694811369104058440944247717697837267285655013111616358862891176062560237640932904848769915304164319604072986878003252737665834238942227013629586314574087318798881651068958372270482623851689947724393570175011836242695530275755180787646531351823197813349950782076925156206776341043955670530954951493384957185270959422722015100173184689468639070039467225762937169038188563427815792354797992633704943410366 6444915999437707347290564353102813119608352835306505511764093379451140259438133790517347575394183295383436917207965373194428569819256460814800892432070462396234174565041731924255758220858620839786099405110805847719827726972312631281371622310576579859971839812815813455602995083167230858574922088543164715703888242321327549412108475175880805194858539696633971610962800082968619853106508067748184732616261652167808985607502038694441639041843300322079194331607805091086438253751583658603940979470626769344818666894480925376741727991701405775400009786175909763318568890562692823131145256552845769536504050736662423615257337864827976261500303757335268098628783071186775835400832137899980039125233300450107180100761574374500041788026560146951487674351193150524742259043151456892749534010200377080566815464998302571879673734543082041926365012 -> -4675220078986502868942851295371191576934833789572812985512968117477568100730584663169671766514463169565071468363406604116673320042419923895166898712531427630156659386041049981634059599438056189996316293372193087643710341444794442418505657427448022479115607970445243687019381613768052163997775187841924417367603945979560348956699272740788780300075527756260238089609476799457276819240983921177696234156856978013857363977065440042013316347031931218020753387360087393249170968096570546987582116579450706784581025961576076606826423827381801702413131782923172097484329948335679193544830682465526970654852981778290153132633486174880251867930128745499025403098507316005988188869480314702166689174451223524950973324420530418829510833075066761994302403391770428509642085858461988253679494542974614143397777276434874756087318936550448336982954646 +precision: 71148 +subtract3 subtract 19700854434090791776220667825068790374423774349908077291130808233297911437733587481350546567844248189756024730342877886126944868431870193655318245748857782940830383809831208464473314444520905081548043179185177402156037418049426057058128112891643274129131213526916751598382159661568776608985276496434274368938241626578341188737797735829730699143363930899026655742668313017046738266118430096198049370363427340238884209939708311444890457596709853893860572894507907489728975419840089419972112868891636948370262171573345156368457669720389690707493463292408540307577336736369914858709383640367333886462492157863975130437746135642438072374726416528779936360141869488469213023150296208919130262958560042141719785896672662256642007715551024990707063707902000591142976244260046228651698656462265554936259777603558995242431780476379289493049078061532313992715810107447156776474058845340532966099337647367385673952198617983173897533999871820577676352204190209567102056214794637926682295428352652113788675157865094460700247580053108199194959991461646676347127742316542225216005084645025043106638786389073233503634332575086048073805936697897747853311241240806176585007788137669584998322748270337552604130827090342166453775655057197851677141001517889639454484388445251059678373090974856252604943071419183136772841317896891016908385039432005525723942586884021210971853666036295107799304738558108418200759169947398330367865023379559517666405152711285591297774379666868125662260452173795848800580738089815195217474867725825894550159812895360297796050770703457438996879564397728145783543962871518745479458092767025304202266089557436294905539516878163747621351294408487168274646686970392536097915514851115379959568226979177227538442351621597672493292448773590525162440482914359323891053426250111327529495930064708333217447742807704425032790802727955000003290056690844742436174482572283355603290074884102660115577268966962370269096962633707108158714161417654682941551420146684337334428356534562172023159363617646773139549615376480955863908939139194982474099496944028497665682761621009909205276481825799345926627653351559966845737862598734464361323657913982575948318414193463710405424913897901162556453191765606149289211417521632076505995949962262600234103378980286839314308853796396337718734220327747217736195307255217556619219411321288056511203885078338747148440986026250718487580604160219183684543585145981072695054400459381762217051463251270538300996647938391047245809865864181080521734927592604842004365353075867499179986171796541671908746607343428637833125013500887626359872158430387522759265090984618402019576123907597021144204539923923380872883541286621483518800221986395561421068679491173062429195616065898491436853508930588445641038194375029975115173999630946549645966153076070611155796028592453219515827583299272557764287532821459166215036553114230500948144917806394014996128855448182334458491224922520106390903045059141183722793314361864726606897956709193392644804492016967941724492166421474558663014688775129372363013144844061588027243559586884246447979265302854191833653740853263837037765211135435611785612234201035193015338669700354619070948427976108055476490267979771561493699932599579684855658793599161999160576720700907462391546345324264002257374524938078988949549144476520146188011704893933593392923233440253437998466677902996334813180868896148867202465903395787177085359024110939049668289106330646385722321941149968996708818374954333027156720482163081170999153085125254221731411771805653814839667801116723315898052355789349725237254568226471697904008264093500005541676768716268770907354290764699084302464830904945246346165652001601129740783796915066339868268491021140716412607775274366934423249722650173575056145826357712504112439596656198251461185580996333185792717752145250467893632755899273268470734531060408057841362331098650474633669518835812981157527746917927158488511992367496874206090506589249020420764962075040511719831695619603410395535516457745734457244774967323469968600098816098562074154209193128988591842777642194131142897652532315252654049654406665029426971015471845701025618159609950262000388736415577695835597642555211698932918988138284685581480347178384760839437133447297764855595632088931881750701707824512388074672896856783152968129827935760857918601390857986852988641909309909133212591183894090129972764506220019040055500964958791609532539498178600603025032049816349592298856000608042859953726623084273102823450432322320076116601011660170429927361902057833619773385615387851099190048389617719321558184064405061094925220255194141405882714106025900919418021689200489583550483035134605401154103471861049275397220175774667592683011847577023339353537096111621653389989566659950542951527827200391664390889557670512575508455349030755297104695376116740299308821856849970498609809931121858087082760263621485301988480048284363128545589191007812356568020131473271822609138107385048130041049102670052112511123064804414622697592394515911383125635948798763240257540382438034932836394567215424421085552065135233176609922110133910334172494506989432536269977307267267156520106832924111388944719490411314151397910419832598280355873299496164589392320392766840889838402000856751232424239777888385492552964453764825727452883796754933946004407816133376814667522018951821218829173011786120470540760366317700731934074984627599464057247187608268330530987133495743906750184768657939677894514952488076582709712527138858656442518101250681023047791320393781932862340193352167173677165878431361442993652172482909496307244420761660693040638061755202621991784200874464426636097715605094660773882318634030519417892243635909654851162449171835930727402715091887148722455969243730725909335941538124497347822743210320836986352192856581130717998885543320106548327359231371615162875193141714165317286463657966120805895439601750699049857920774494816855380753314630974300337448367395493629346846273598964596593067687068371777942189639520210699230531115313629335743699562771982021501728466318550515670211585954790690109814584044411803251256830855882484518950230737363502170672462104881154625435867360273615764816701848677830568423184733171362035259259074461623413200785489976161485371223518959171660446245726314494799290449091419567900973701592136997505766548656291726324148219536199877637451295730911162383786713026464958894898563868828929304325094262265275111577798321373075751099326489625476641611072211805445588611124535559501885042070025076011743506507070336149649130117008987387751693715497584284709764989081141137913263459983046660878299832028995128030430675661449322457768976663775753399412008520051780302946780381857880771845831726223620413549466994128605564363806630965901813600596902693502107888845826998725942909822833918087504568022276069290284093542632994449893188097585366734843549075478839079741154429670515054584864407366074449911905623224681911582721670055806895725098899858290989657234944814780115343915086334052408393328844027504641376349116381287684861603284566784262796024416404867043515112704839277139011891894410930370718219937354048042560531684428897020428457657337112601513569155410235036102048196821451380204862731218957168841947562292162843722445424439984432962488692767375239021330592757266071323466267813403946127005579698156333267198880034391026240851826249666559209818078341446720509695459441757092278334125381388949516102053483843028659416542361801396303549588089180487113668434975072278028095932789503497569950525204814916803874610976838906975471728651382405698261814282281083847848098621325943299632885498005729705584352444952988045746578403852055718649755977072729234270348169916779317767954150426847818766276049970207141978086283948851421268097124013842797721803190156970077177269039162267793626512859891551044668258423895948813862296837143329570722585818242226207673994674274207157698273986469811959619164320490165285069822557273751514914860922743077336672910593626732420470922392225748250852041351840304246710662213084475757460988310578922299410846536088994868203732918206510944459270351687044394125724743756077889553161244905313885736169996158244305870530344683063186080146150729935100009854609586817251327874841733362896961321661730551869471931438026363079125467240015414505851974506284794718882990832165411759322368645658886166856223232112297832727086581021550560813481320563113169630235170130908227770422662395316533485006610226947703639051202408756601398992164590791386779910590945869280929695660479411181376190552745303181134359864719953446747833476648619211950039238027835820537404689090501222318529148704773559255093743417281018975356755870118929875394608055000813105757394256663732377639651367480626113311031342490580959156743771755117473485778728352048358499470076501814739045378229423187139902256523813496449791916504248682577193591805390956684297595599903356263447617414020211938754215689378413456689998459304975793665615203223523685366002646441177035859544936785561268412931975551875352756314642469244104977362879099498392772637079570407757707772911960842631607500274836737202961956270600390242593358703877477682913254934065610324607517766179561868043718060828285853510279604828986434906630555582528734824813146680504887398106216148132866136986203622999673207963035659875310099943105363283220893482416397758905654831011066421490448544153375047644346481658377237528778455975957763447752169718038999735492297687407472441674095359913608859637980534071936310204812913500809941238661387716056126239320238974780755684119175677995108757838254602578960943255317477850597689615234330003733417267090519604481627960672344042324175455938050871103296363857616702930687404972027822020629341663550713911854935528793418838612802994083611511179251469771336142711000288279302345201324832027746168610603930063566152150206771081089982761050629912428442990561953232983567605845041382100080139912570061879451052197102429441846351982219296558305680713912727917596678550105324893810675538791735787192606916693697776386771376513735212127698005515864436807475522730910434274091673382662520432802605616918754877063173715199530033138352467853909893686639114034735244577700083423438086236860105385076872356605402999118376784279691412543732143484496291300155747836398304219881039791324331809123131654643776808596475601012954497997516927102540472659272191464555524341171383021491561586411719692445866058185306356405116978189517054384581879323517419730751488898055795670677363928866552226196242340365297978936376787012103569369313411452709384462655903603011302084179140978303496995329497652807051771249264280253491935026235960811779013517559873678269362667830015834643921120893448519472693766629134610177045371913286080796254994498071596972758668875560149277690157062729438635636082730359114299044377975537134847207025579304342838678837125520695219225923680556971494744259049181355967107172110588888053519417735859116366230978583904493931403456590240456166312046797835102671111335033829673779588853441307000255908435942139285956797715267321262600251982644103667476039467882626137065699683992464607726596732873186366555223454283299898196828965840204037532478675362344257237432177736335159449138221702663842052729976703700888074332817145868076813942487657552444494134539047555260305419872314163729355442924673257601277303055377407881604208906613159489786063325834877319804593366983430738235256320852368942677896122256230237388298866094602769195096850829932762713831970220085531687529290961638879032130709503677944103064504734471157969695344034423864347155571932636793111028300911434328531871781506074964600093038211858840131454402970259652098495206217018031290645332839600863827558084275694612805766515832682541279756224098266152239205610458818406634395665292012398531823485975342559280289222418714853894187537559389501008536193358657384122732360321403182934577373452766978179530703739605473957248226480592183765690606852051281748529110753581850583368852675233798253385378312102217960861065266035027941751140721171698905943281322758332978784499137917603835873400330358420197550727789072388547371397164823454172539972700726887342544960983875638148730962995582084660630984357673669985842848454669186696200896277233927655844984426797377217069318259755098065750040871218199917364241462648496654143454626081795098571995247647702084521865811305674714803647819163924760458124567828760954971250918381486676659660682175388560171976843692477480503050975565618245350290385071617111471723276630779241660091565307429787537127999138200500409864531667487660336101215233722845866494890094073336766061665049556035118424597564260281086823614073690666123584508349849820524487034872260597898678807362808867652551644767413537246367537674186703802686336423611928560951408294050534903043033965831575054516204680243289621157002777130251974224652343188561613971898596414203044963986184569235320627323706635073686961271582350806539510646348404960784700216615769119213276000004785898782412570582321315563368563953259915141672716455276406097069536988043712817712032220782899606433868367652602790500860362298780564933732796583176098639983898641723013437579849450947285877103419636983688446706144072151188957372255462376456281123869721311298044970582212929410544563705324221034101311648461747175679890608338762347304138490379331577940874698115373037771020426505802056715604328098529047853537515103014471979539567020542846320260946202228263185948869085208634272982502040995043440447731000318189392304397294307394998006063021135034965969854153785834910877917663008913413548589637813508190065070490064581569650832590604943834357250878710577728878484873553982887453295839228641419138946283475336804820247 24480595010981194241572454100726778698230697984531968691810461598962587863447156204191332603495171971019396100380871695658958921655939439919500863274989500098966431061771961575369693190340300576012993041151402346255656803561223962697418629169454460570194062241368520049144112990102859735693242478233401688329842764196775714550948947975214749152616030708153027510968671818985272687435493129953243362860789827214956509557497873656083271314023712551833266369653285431800545994414950859683702077653248866584518580478090545319162330321300918592883036014243604835294468924130823051841539317589359939990973096448834630011578488727919516707530333984165679885690685140000910602576125423990973041968225948369514907172655521987066493757328442251155203694244573916248396997603118350866379316575047739674499912731637651321099959403212899624521274363896315046706141960670785889584500787060564446922613910915968682939014775671768149323842544069848205419932865157465863571568663075755143159315458043264534130327361782337918181158071643240949251391406352248132112115648093318275037278675788102602559859463681209391290136643502913643162071923246257325563247006056753513131183563255914838380068540954495481904255569295423779864242515062350140896601854524194348283140613164878431319739203823897289280359091426339549593971547262634581088206111613113849559765454698862237581411304713633707445347852484301776530491202617342826021221118265601862537749753331410119624342049555521354911316507840464758051101268473948413872032623254506390890407196728088307211423808527603620769808615596528643987650678784048863280361575805400948956228433756213056913050454112405234820677485130622770180440670947963197790370347576697926973374537635245014628975560300164847226567101375912178863753117414752958198897597639634684641908129480082018961798341699744672622242423658239031617024553630097990973746593162381555683107898089403484326595120079555737996289715509973676348129329058991675382235824030038126362508071211794286996995649416457832822640010119499198433680994202030605387978695780572989830159418985105198538786672651759436066244350840058513332931458225393987237087303044832722616715222922480001102342387119428329049864190208346201795848921308558773787691315003997517284103104661122286858852533943108066658054980405798736320934203067915106037971331776916620796535790118765719259539849946891058684392087797977659628980307120465856927552959622114900246813342936571409847078436791765347696698379095570486105412714543310484011237695454236026922810184992140724761932223186199506287779747054243543321555256143283034477660143163180929611536382127451496796074832873001746311645194235559016978678372317100085751984221657389409918893210653779062218351040257161141933719742683200702383329024287490421711006590041522547022596971133400176465487761299443798965085838535709974702355737216394094797986510718168152788788469454160156080004318339245800244134527171247823834790754251591939617228228655796525179080641038487090425163865924443067418321511426522843915496971048576063796690753730813816727066311865551350932884423707888521168643971421048214158376659780007119899901358030376936109207724070709061039554188784619585766227803873269012699039495710019154575785696812910702182034899428201723646207946524360315546983813552099696800435831599057298171185530999231392385525121247698933254481061784825272397133511663610902917516076958010693777295850727041896063789883542480983407848174774582401382081089577584954831764892683443959822305689673690951470180443791291807275077508763253585732786278045520576545226145469394193762023902291365941456049226054426403894699787030951847721337067398544651519629570824886368637720846870354278646376698409921000466049386378921650860800281783399882855916280034585023585290253647232701028642570274495714530748566621268066991241707611526559633832846209193097436140824573059757169872101582095747118546731305510735924453144268143493701812695500320333670744017213251415913006082471796340799631313324934919730753416393886901442845348938028291650632422725733256051325593174328503347721580176664721969104554984989796044238495547764706401233446718070343546197731216793979355444575238806096289853600697285925300239873835358637590677778254656328260428750959987568304683415672397663174382134122206936724178140971125249874238539829909480017856451864177153081745830677725909899184665973867278172119068911126383763633595881979266436795388439505516183461497830149960037424192842702813400662274803995010643061237308638550042214814724966265279541246437123998530734714956696109969939812237923520775094970022060282349998103774966138875057801599580122449229501101884531700411663196670904685259120641965759215758376457662807092823542813510734057147939198607639382777828270400086751656765844915771206055730185489157566313894983881759235400190131327644564797226700054362036279444142552409177962280557658815095100976993166649397897029705800191521786099123297520568963706250970855596295506045779463390673537635370970989751331046647321475181598058807610970778018404718881566062327743727361305857364565903745596917056793303248472482370980084117248090916766876980170502801847161881973815679538783265362159983798290432802574060139071226712583590299972398475284298650718366228369499025389544731343547586710118665508647133416017203974249230948974775960571759018812528732456275905463509168549419295151166415840251376330320672465163937601829447632947406450776905989132805811538390443159402163393057228431465180611801120897776692000761462066441230003197831151621764368334599818092588178283898694074836025118454220570363919691307349941261210905240210536426835238744543382717048623641068802911853371316115550385997757076766637825249205404591066021370980631269520414495794819421039844953126480607137138820978879891428053863341499870474591067085150352181569994640214396330702433971232660301580111989087209516850879498435518326334629303632302799018912381796192014090989314524566782429561338778274812347944605554352336662852718194789693744133036447871102696738861517687349870898292602973553186335956540301247444800432037426383424238432998413912940636936212023613063721489295986531061462276710547638568701135643895585296157654840874915392281600876334256952220635821282532415440160553682958195126563900625244777429805422466484026052603940070278925380982580761534993113364388705222148089510856448089713953999356326141532963335746852496190602661805344347491242641058422861127585182030623841648755780787238027732446950786173702349775436535969839420518232722048106088259327230755612952305883258254823932919563027642666919145886859720592955641097313230579534033240854747502984998716736001745442938777105620631477782284480333336722518211599075238162334294447969183631415977537387283777877696554156335656524618310628063802989064592468802274976721045970845026845195876326213480054185571189601666279575453981179860301027032137629724867686818751067171026316235056319949364123420056682307001604355104070026979683757216556519863725201865574818434648573618517928206827330132796310522048877938725720399969006362188735049133021139578891047883421630790672712713907257477262043291308211325470777628555938009537216140193644698846649256793432539738032533828285633560551007136460094438260916812206607108401157458289100828891670015254815584819926520057973758921393431557472530077954435123660159748856279620065715823159377084153511083360367146488296154270912524356009039641739365319303991026935464143609261157632323825208845917737298717822301572429028844993618713123508986004708402837749855197818928871120780732078389939798200490261125538730422889857695953855036680983464522430446662251709058733700446139737219454991240130456694194175990594869467931098489549779709886636134134258462233417229055994629547665489560601359585729569564118102633005968702649032493046222446627250701541612460189750375720042758372077906328797719775077918447681134157423963002738204868799120278981093386751795517302067461850859566133441946689090714776615290214792403665848492233281956210274694635670688244758375990453234403633485485898753108685036261915913752202972586901818406481480611978719596451180250795094902898404654982987394469090124065068330278748480320096165225197532414092859966263342703948368484383850148441730971716530220577121530452929451688820780059749267764255591453685300778720616697760242811568502797949838614560823401364376872010581717199428709169907652059050585116692772026152646265693724506466344821452332368126921122735564037741145778568915270241611429714914940321330258704390422642072855208848147899414213137721138501386111055066491272266851962003235699584914053557386486921587493095839511504922655530112856906397416481644990481801091094391048903120918554888401406127810482232633619242282849971000287014585525247059500578054978397666297391744844476347027576213223396711563190099849013702577779727727655735427893844525880078955321947138738900818942738784627039389507757787225607238657976665438029739333735684341629365966842240428203061573084097376978026223374755349242975166324303947560255784834880289511193041952125390950986960447796930041519352576981683356955282667089520202830273043786244193293867691788841420926391236870736110690542336828913459763950681198993438927827474021246368897090884396451598222078344331861849075105305364318845276064900824254190540869259855783747885089045321106903764798715124513621013691986465129012987744479085293335627934116618321850288956086007586650660806494314748553755401301152267800941087954267446696809898515478620719176405257617695867863255696460907567776889357710798635025362200261271696708206114148305262414698054778083757534701590102381484618601488820744453125496251585722066733276872146149801585832994453234424254978098976075896109252308503409398580331167618080125596529917730116923145462790245338322430749361829997818710475457067141321084985962386426730836408211450255958359572169611504112823565563775794089557338108207860010893780684464540949189985775162907727723779216434087181610146000995666420679985271344145661836565791056751459680925436330809399656878080458978672923439738549722099596395156353230714504956636626735314056151897243370378382695090798810716983351273208885645426820543722610271075213567438478404924110836648859292319390452691197286615793106886084001055937448434224227084055868894853705018263658515341220581374329603028224274327766132919422475448567756808501705143343925568313069068965322800109094490781403737496578370614108914675724265047211791950933832864136413205629384012645074654084880257759544842441390758563690059009089779872542131570458069421980736784844481657199610681917784539730616308596713632870949865073884978312753145011549551520843169238775879471626038761462331710895549604842318842687526690360623812187538095165017029350216668594920810616688134901018546905995106508977217800192412039755058867208678184420580714969635322779642642211643350537636518440430522205128653054225449390343198033987657992811916320378490562779625073020281090555068389209145328112535708457595453026427280191980415437396788105798693739124871488599151633640863115270268449880231604717361912197802891812209766021099573613733878949457937059197754525024684889348230703063333845307081845463268109135290365129172501789558166592177598396474994067778133776489614119663487437381128475169825957453857016709571950215614028665744034425081616111605958110378067511883858167214268378544171394454702658358036491039661386165022223893183610686684996026352725940296993431956871183437077499942044472231679059511313194642787496774616931721172630392638815598560948801078482420981541064415453692400145162283160011494951036142966918702441109610067118023832256898468361825420424315776409786949464416907989676358506516259073262346057225479415929536804472689816804007863940476204861933878396186103141107749070587575286810480936716132149525487653958229817614030210318030203329387334105415038981924071080670731935163306789069114101261079426683133985215894444595438822183291827505855869330629495865630612906233400745185433691129107958510897785364699339527355698508463438167234471076695325454496465776542694719355719864035596079920210264861311977942261718740410356092177981754864666742007525034979443551076506812832247569200324182671012650624149537742874445041446666082627350670383790858423118217900075563480483872379450734022539502402443296771785596816516543561502622972845463166436595480317582002326111031068143773880540959992304657710978403120150235316940442520471040669721409465394663785398052475754039433325154491349924616587943866381760155446785665968927843111931186114492944231166970972462382680997098791174580548200198567595846570814818618944410224345980189913465219451385594275293059222426956957390506615839743648614781453436434183290962014787026679955622101467455538077824898576864096798024165212069865151868657446737007133192150425867371369310576756072722686873769259445266629938731861503126774252146764599929790625168889329358712204988299601577112869492929655658212948360418179771085246717576638223552617655509001217643484358320494367073494022203862027502015344186291068406683743933499584357067776830840631860979014795612461011182272471012264320253877766078131249506222897244618933257441367580367555601666966871915964974650445743851112130982374082110306151126211080204917795191101114347238090836406991312754592365476612724592578647305990010218782342562192614299887101882361678955578745905198225802610397603999695500294515952503932951204823433418922513626395308614429595768069789706872506231480691420992718963813079411538243634345690992616942684311266151520660421927767477520442779367136631566346768238303642377532689456986537892997 -> -4779740576890402465351786275657988323806923634623891400679653365664676425713568722840786035650923781263371370037993809532014053224069246264182617526131717158136047251940753110896378745819395494464949861966224944099619385511797905639290516277811186441062848714451768450761953328534083126707965981799127319391601137618434525813151212145484050009252099809126371768300358801938534421317063033755193992497362486976072299617789562211192813717313858657972693475145377942071570574574861439711589208761611918214256408904745388950704660600911227885389572721835064527717132187760908193132155677222026053528480938584859499573832353085481444332803917455385743525548815651531697579425829215071842779009665906227795121275982859730424486041777417260448139986342573325105420753343072122214680660112782184738240135128078656078668178926833610131472196302364001053990331853223629113110441941720031480823276263548583008986816157688594251789842672249270529067728674947898761515353868437828460863887105391150745455169496687877217933578018535041754291399944705571784984373331551093059032194030763059495921073074607975887655804068416865569356135225348509472252005765250576928123395425586329840057320270616942877773428478953257326088587457864498463755600336634554893798752167913818752946648228967644684337287672243202776752653650371617672703166679607588125617178570677651265727745268418525908140609294375883575771321255219012458156197738706084196132597042045818821849962382687395692650864334044615957470363178658753196397164897428611840730594301367790511160653105070164623890244217868382860443687807265303383822268808780096746690138876319918151373533575948657613469383076643454495533753700555427099874855496461317967405147558458017476186623938702492353934118327785387016423270203055429067145471347528307155145978064771748801514055533995319639831439695703239028326967862785355554799264020879025952393033013986743368749326153117185468899327081802865517633967911404308733830815677345700791934151536649622263837632031769684693273024633638543334524741855007048131288481751752075324147397797975195993262304846852413509438590999280091667595068859490929625913429389062256774298301029458769595677428489218265772596672424602196912584431399676482267791741352741397283180724124374282972549998737546770347923834652658581000125626947850358486818560010488860109592650711780018570818553823696172571103787927578793975085395161139393161873152500240352683195350091666033108850430498400718101886832514914489964370485121938468479645884619586736846936638388450468816015324879757561673162766246166617183449396825755760275212569158544778910035412474530430352591534908949620873428103907614075498178456385921538664683304730484326980723277144755287625364842109668715500895525367653225587209329393340940775744853513970911391226568378680180660637904462026886034677553017076543759665802622985893146653068704324153156659933021271825697588779395819139409341089468030064101041476392386865332719271519462403880374588624070545365932997444449884404403632736297150480902352126986988036553131166846567368747801009011359517279143570444051483403432835985436428546142458744814104561231657675757865160779747962653584549286209013058092066295204293584157040245896548019993999064995905448310635689575164199466271683008445371365997839337031953508788730937665463905247952090745793393918847218251364120073612165635958069931230115876433817558491966018961025488189520080656173741848733573484274589473220441555244661598926496413955678679767429222228410533884019876111802379327067975909222721719413528348478218051573822672536962051969388652085255186022595034101758461355342101429868882085705501555685065797414910735832655758546500369229825729637866038601424042986577216326736205346594714973924070895770416319623836333562399709257314046908310890425024027820897992667347999596256710647203468718271501747558718463766621988760078599642125183654937258606554363808636529833946555019123072936850620459808613839048397609841020377489624726061883554856346001464951130654600295324827288636155809039699807854780531602113153673060859075849298067173511635294998089083139288770426078885597502706012497031140374507948555176005095046436456436954120514809506422312525085863106426537593781995045689322774577558720926447599493631786558889244695044554198361349018122787282984272261232329229920776267426672557774047180317239610658685854398219707182257745632620890310523358731583779532386967580794780396645562456838413557047136586991870522626696799650614633565083281159179475018776656599426873867075231151628717802440346670309895601184749684618096517638060988944121140864328308903285382588392022666994178968345757640052609134480235888529078221673411543618626405678662264836009417103256882862967782529320738806943248493220157757824578296307735089618666510679613445189848744457045013383149425469068273240561804533605214752373556231159779423863588771272745302247074969503721344040259789644657670150472683429071185009445898901836348158003900990134396337754724738872130713449368893011714485080614382634386525418712883171542271643952193833393188811350375133367475619609789526146728365649446868695172528600505452725582260082969248881526100516183374193873041767216957400594400573203387838802472805701914479845510830533824990913344572744091443540323527414209895451143489695312197188030962463110478434015594254058286878453747828676441406261980941150964620179282344507469580135903807224259707314495144870823741064378850274149369020289192478379115601736834649532318271607768730603014834883030704998236351025348242125457123913838157399547540222143491452844240917579756143727821975702255280487328586606180017008942995108633727865886174469232872184450656224228401663541787833035911915913263866466568673548237420948683428143601962839909126954240937287030590493619648519812890988148358156309273780621492386060764099200612645631652576050458165484724731235772578542550542050068122832705282457358703834422319314109123642313047124885046571730330807662961183012200905991580354641350989728471143228462824861916312006629046933642938067647035772117670701817006309563883942629759575321502269612997131053639324872119510174935233153066111253359699427017451473176945287934858405609134672283617355956220621154630607942457421345372191112847539186852090821197620797351968953051105657202930284148415152644339367762997195867735070034218465824836393218785185762185824438842421558004768457212236420362870713961050733132542045654029933887301625700139960598765637012274280167691582797820669164714962023742820472255135808467732966964950346063770772566291427583426225828804889132351981217596688117883056817202241685304710527753730294074365645104226870904275521822525227638626502872217920673702370820704611002172544660226405602142184905473067714553365690373128531880266366240524767995069353095876494883435540133171970492005947104041446655698425469321163823527216367669830756497948718305362081822829142587918892776181369081290241539834020208333722629898608275511076565385603334640835268835002121917298790555638624157213650884691714625293519171510156983527795349681749069008140692488601336710681870619425764293678071199144751847242225941243111389874090572765824719052368374192631352536002926811368992555305070045135518258321529676543702828366937450544393203162274151878590944495624471135220424558579074693808307199711575353216025809568258975681903067470522154238676766307057323600310482423943824784686899850721324435175521925973304390247025962931002674640111691207107119010292042043126321878915326100700377462587920451309226704920860554739128529254519295985622775002372805587353247502215378960326570834139046197877963951749194174260529882933941104583273598320970943405021032988478607910227139173601370807084646752057906696479164057081193194254961262368116687773938515933101161833620750255805795862639131926446674803996238953256027267405302491476389250230798752913585838632434705255361173929619242563040259660868195888526652248672915829403291553816609809507725829195236026877630300857829226481824743549081386745867215406490902752481733813916720101547359239359761154997030795483100671008438317236416905660162175610081634036533265100104644364967798394800373400577217762249223334967381787158658365613355725600976066496887137875463932953978531875642156936252833539388411709771130560806029934613203526035651957758726598719757170055884278922248455333167714668483652595630941714476694048232192818482222204013007848176360091373033988055474306944595875398952171402672466441711554187847188400475387780910376891476268167106844681639492440383404045019388310743210323711915402609352681337495811397528849570943027878943714795123681991878866586679990082117248258923152473205538916790368333959139310510135234305131365801081402622677775762123733163542740468110925622057591398385344802976764558528605749793143062267282755222185256539099115963286743585566085163759515788901519738515431069190080496016971345073285615719215099261036743066580751366062301872415397025097763781860331585314723497598135450840182473585704604340946652966997641470063205481672340059980948097677327554922441561882797592283082970114016786585286966657075839189103105221476484769444757932733913689038705353934790370808708135911297543861831941515353547802548332856452724204474348038405861431009086351655116715061110968366658707546458664014264998479333805646387494212211437266226711807792328447788840951676761451295652986729636715300337006643619240268020507758683869754884149697381837747305684373509892367685245026028480702113173511762577634220520369862880921802678656752612545777845863217952542559353977381367934842595779643736035862071824129806476647183674787393677084887171694079646573666800115111461945537673867131204483453307536998591749382942055172785206762833364895820973006158208073748303421449469521666466351577966716374381700262577271800836933387007256757242473499535476043603862306286818266346331999203761257142727765152130604269005470113375644610190611181460788455790653865410398249987970300811030081440047315805096410788867968415164120834536670139105655356782659786298262915898006794039959325581915499208240208516583747128541246459544075390921901382157613972728459157133518277310013926454111580352154832101365735407999990466786578922267282730568525806616767819500995058643568065631972016298289608400042982950436707299981515396235581513553708134174169837559882768016616504581881900074734116119043450778618984650758762046244795649338213833902053298820104039808630026144417866574310426286110835004938830263494823001752919999549989171051073578173580403864137893763234192406202038008623277851316966134395744775973065468139639737003648421871900600473952792511977501345601191211683618534834504179607557088442520884973554441788703662835335400327152161779958088054724541081828423796120639053813081821387895231312345296222181421385299887283053537243220917295496009685852711077248470126081581803361906783095277119559052613946499118748538412598059137343545362931316546657778086646598901709338318072764372654612929103252347612845214445857343470382323612715940947554770651040099009746660263762002418760454496560046814166580333407888396071993765359333534403676842336181556142614298487920976051861182632159371527002175259512489935977386454166647632812684678367250510611331872178524160830338422690851816356518386184382003720593565617050840697526923508624380736708861150667441650877876349637258009124833987735910984030990245305299851933463261185661106898672333052003807651923157394034387473693809587489754012768118932343028784074776887644635646966039070854859981505903420261196064106943817054873836478389382769682224283999289429885510184664805277933004852321585862840245782509033748137644092701845992737883036020185688683312177702379217540099881863407970333658693655929954194245192400594385293010046288667302544377387649909782450364947855214965407298002138758696758509474427526078008556253069803722737203568414808186930642322551559978353312723420216438867462826041304821882997933583530172787155350076365134697631723552584307854573254616246047516087293234558180539365167148611738283309961092041002411016904155352753769578433997733735480081715304633084338125604230327620268591732897561901422991285553968389508079869189995016753699289743513987814102258432630141432424232173501411796544792522628001268875285218863175470515815553697669178197664647086203375577641985172203956835861545292643121136296185802484261206920145605158633633550565092798314922714642014272639361291648426958686161200860379475362291621928266664647197552065889507765837494155248709382865097999886870061373448899907262793555896067689895379970885884148848308990330975206666230698379674080560974310216919940137047415478327638268697805914139226737618872518624270620966894687278792240320730918533391149325130439732510475275378811846298535300694646602639444454835603598097966555454454401773020948622915105240047662675503069111451104522962719934620281533771076802910158483027551323929785839270106916788129883672736233013159609577787982941757671954321110234097203004758926191331834755902567349275831755529993506711195241638928294705432168087651084508042020920062004507616829544963528441342031107165754867110121282054892064791501309797007379784911599199648351044511957035803850277445932770604316512903270063960503792220026777971815771794633139330219679818063343326811585034350275708426493836428759187077475632834010470651761799715872353353684873619175730086493537270925243300569402560559247769294197763111628553910516038420916450605260273648459741614283954795994588568471778007444129325999571221473173144281109422966110093706322317163409543217189748641957905813153744113050929009662223238586405981649733072750 +precision: 35555 +subtract4 subtract 1904702635674759346644522511290012791928375983828322194530758609896940820327505410539315898930217609305931427719692570678423841885843018038463178409097802007037039797578635054724112017984598175132663682504742954935785182933346971414306382307367693856643598028498735132681775763532666406749443752904751072912119733399266682113699423276015074095803207078385762774452119701698692376988978698155346675352918722862079081770982815841613116177815681245391945880872384247784530565557652649274217911033555581388404107452015247820616946651002525713014741631727553969314821276740521232785012530805103089087365867783792722255381446992136216544097119133562215395316710490192777687486855621641024748733166024972883992136920713050905621277715523450353624918005936207937113146197605516326462419094762158175814669862923870638718757588981678288128972767427990716136540750328657445087781077612589102723410509523684236375781161988912255955145930907355849892561825222953179600795882021798112989589521287346901125556207807128573913731595449557335036609303280075050280676110193749013848091980571862084626777177163776239987828517269177337646762876914230432516991794667499463853065332231734697639126585999238771595146392634078236863098121868284545259539798585103080012744525925784114845147629260674628135717672851175169051441960257073179590670139999316131241371609209559574806791416806757276552931174702193110282679684681053917819940945180957117777051864597162714782420576247293383694542903673729618266734039538095482160289137451985689874960979349804110647900450319636540371552865478139221246127714520479707277686993632082669160820631792495366603801356496391681825427299688450982029646243821820852241583798671189522157378944738335499655658108942439596843426499517580431877881754740966402621643121354072550056007299852099499457804207002108509849329659811690295833365154416300127744826884494672549012046176747050974256760197185906817377564587100886138185048051156366659634613071096393531656961414924568965617804090684167488595698624224866936924046647031193961704348123140852659509746642538899521090626973002856528501419454151228928374978945978762437086420976961065343340154195047533625938220801667943480252030690772538055699401741126750684074557021702197133583755362401167722315020835097210458599857921649407011372504162257754393099095435787889241136952766764339431162478472836893286564832279468419553796564317582274235045319861751267771519606864539492591154395674067194524322681275234639321807260476715871361429099008128354350998733268655297141194976353206985226439643575790263253533254249998436509380121270892809148991031561934079812193451465412493838936974103147836260541956074788783951830199893139323184205207772438651165953187920084589880034448901069111554305094915275586969927238948926916786557129584384206321827961833615352782062780826356742681312393979219971735894602512909128969216388487224791876123444055212349072502576589346205150176763816903329813179452861050179936871867222277700021409400987805763151988376820388878180611010140521458815731225828779396497099255182384843024981833503002838584331216207123162317219753562253319815536500591303605360485965940022613766333770296419281241278195222179613522021567860077619510646575267196138632855836230798795395617058663813691299286487707114657697027211885613724301720593974181495210743588336533867979029276237234828803215272134459334736031979256403691849025497494658899003778682203967521799210836377939414769672052543548425045173630793348824362729411876680228847583527337948977077970229104158049566056156981217535363403468695580155414411365445616587553632010627752647355295215930990158079270360610358573761666721249069701924057494192423589769686248387080762734463089517203194867331416794719553440279348515726218739828329442510047354888790990518927684959254524284738772067108485874484568926605593963784298386248373588468646446042945059596115318017120774674300670325998687495104841092647498916347985834553253579281002486495046646553020888324893409693927763654345439112571672407444899663858435837700555019564702676407415238220125155068666805098031176421896408743173142781137859642742593603298959342727993875174199222751317685915246555310085910232877941370508235030647580287809209396369172749892383732066765589735630182014869390471238909408029044264523513650357083935073715812169522453352840029027748960940445030137575589288105986980794913109823543266433333629997998044044806995257511120720733216141932451394389403661727623323470624292188662609072300826804851059975554362953166980894347028045093528794202989525974787181080404143453942003432443764420435566493544394585512441331932748220590868919342161682341480985705616844858810363924991614120603998380886166016439232110509055300162966084896772354739791042409242392096542330442939732975849352978084377217574508192276157260375474329883102736592875382238101597038441759348215353158821664417393196661796535252751455474638481402530176208891005880863186988589491236258150215802972771418956007677272017366944035575185294268504047170579261358524830355241065627426429713817150222091111320287178628990377224478604439504262898902986319961139282710671460635480557134907725539082505313861895361664322982027753186530822220138825652698299432968953795972745592066275091553401394282334771113879623398839651938999562729482218048173332117406227970961194039934144200284226932949192959767620112082907469390819010839942547651680211223869894974087425950789889516032891680397693292446212649498779987775364128197301240504965557333274262526701265488330847593818839816958273060877145304823413941103554167396016074937040748520176349214216231396951524613502268122642756957671576387747443670930146523019436121771714019128820669072991172532339039080183580721815725012626196299770415395909894798707999077395552238178552369183286614402632016578659217196527851714095355746753372314905536287972123381310594393804246233656144723607988631591981445753902873450550254144025816660474020292128531814027707694394287464056763316788602148703540501046222450470882420351266472897164862756507530973559511064572342580295324142297160663448308245321668523391926048058979448551852785766505022894472909841974891050919571431651178259891848868864934235952125580110308380655941107713203889914749209704662112109997803534083885422946930180575922393072950191684760306829033425912999120774164939294687360830470833904088656357445277750612063809832437941793804739697799863918741747415795484303383623450765397621109125142347558713853627248481581210631626462911772081466989300384208025190822429084716966076541329924772449321198032656129538233498739283407599960630110698362974113854174207979579135400985298079560086875786042186574200831147654961307706086424754330804523947571778561997317766211598953824595617443702391148846152712348655982240892876911673013766836023588325322837698351840164218467989381019542483089134205458010841842347340789566630561508061702314974404994749897330197055852134073050102514326443837896440761482814349626812120445424665547748622811722947097639776286670015236249468062183804574887526247411527351020674036445123901951614142722861959176902764387747913263053279275011863948447076750450371397230043293183481891938049270668963688290686166823882590983789642682585283530311136390524300881889102870882074676045113136576146504163114188100835740680680005387946482425599735428258831534116434125477788622401456978389694792878094379850873719942088551606225549904438594993711086168431021054491329685746450826882440860461580496253665295196423939988591512359503776968622169862688980252292475876708049377996544872188551614901860118694201492163505567803717251413868420895764228710674160618301457696232390592880656049933151872125268261215222484532847593331241643966891235552503950600079686302386792791820953631450663810428718193283682336267903106746680240835433705855673528380319441813427954821737564635797973551540200813703409403044567938697743637019547565035974578358660445008929452916880136292713036441854663010068541798267694142949725439715131863513280816727688935696329557176946158153580274599517372518633453042245383031422503433103767872311155438708912874426204191667025114199316936645456306827561657526174840950642868908302578019981204419570332172083261617615784451060764125938589652730255272523547145687549756465173173569046959699305479724438138172298458349390168555421036456669261484902366267949748180686373633453322107573207034643852389673619766883736149724345409641301321897436162173378871130871924133754008045653795101990634153983034859999481126914451987396748753525509413906147195342564493345479190260206393272207876669951528531198479531118883927045381507215612832000249974288726407626668453467056073977906350991986992695691432962425134251518196042771452160443954905369419792038967455262216416620532448780735114985221949918041454646879385853782298415685313502307419794310259985155262825121298060469658837975617609606099794130763736880805437800332901505597252490040664402013675148045170360209904030702528431103257731972852013696403674362986595449792329135160227318386984678610683396794260021931704866817782608027576352507982309490327955361311406249743982138130948457699583054009496758877737320750499756116035296817540264565714164372650098974427991998021505393101609847752786704625686109471491455487311335972855739504164611617652693374321939612842066545948953289508220761767342132978522274189769449816292298482930970715058739630253615755956176472075372830258793930366301797859424567069036570852809557948775386245013910856725265393961804693029771633518732596793348652685306592074493464830910566899667497484157656631525410934280584633456049264770562270393815655812406077710516214083025822573916479246851630876835866846770621849023550019808924100674381245196441896661962079977915681927729045908251897513077747807909014322697709087534185135252711065868060760472599912436826860821716342956905143275630472699837024700490251628426464336868843845154268644456781101842143609978482224720906703823219106959120983090485002220313741087729095845202979996769952262005687726077828841037357596980238246600876093864014111631245714447712594239549854183928383731834425152890058443496499554972688437838892366042381025351575250296108444878608575973370320438324670671287115394562140880324491433666594581927615563261518319937743621260549767492590111476760571235167701516555470642830729001662402598648936474724772825247963507103638516734616889818686307352449743257170098082850373418163682072081534278120574904219374037359596747184410808300787561867582867185854911876028631326973754949443005333924559704252095513328797236316293176531376465644325108991452522160461104587387900515491710870640874051183707737342041371342588226818108997683366863543170592362917440593781341244886720231902678106040061300612818200263487498766581181411699983233451409838071825625775851054513172184559379818446267129467460605720162067582006458254743105577482264940518531620896608220501165042487992545333586663628887196391172395950100199722553803413485082836295830823222621478446436947568703035994407773873056868388113268115283305818317800300420011945551077776457365827112015771927096779018251221570565994084386177202093989989087733907162461630412055890841282231156472132971174046327288762300612704337463630790860966825052472910696789047266437527614549073318855420658709642113609885120467525658978590369121478148021349561731577921578860740021485447661124163474779581922985086297963727157667164090415587169639048632766148893891597034484965945356915844233830400732607116666572208692035056985039949042007978902450478894826875548826033250506567207478687576472305920485457296473127434701720285839611767368249910134163712701516267890627759344839497692273517110716172759141877637609653590828469703644297728216198238263934275222305646854763007946731663376514629048940379602305415995591008260128631044058284977381119126111737949640306375874073324413701008425662645278213602035958269897068233001884468565405433646485566776356441241815346089946873805622803584381092382952974641807613413957768661063758562785869712473290016057869445140174109473127165526596158911227235579130619387426053191351092258881505015646516134315394958413083176616952859581936002950133025308600547706802108935773200232712431987295834915552903250105311586268968870213460580454072053331571010270196905578796916392977466187353646476444646761181559404716783775625582673679775424736270471200073715186673884249983300754472698756606123476508531932294967785667874977567402348500183347518779497193255161532173262655729108651626815505441784226518168499898540079709329582563969527499378621517013591386347576793550301398642400494960721210578654354373522499189226229076471763255128100204548925046708743846253967532520893363078573128589514177295576828205275520372277914000165194398280515585936778527002265381270232518484760987459011768415034865289097653319793227364949839725552703502949250278507804907937097631637297917755388551674680277880274699199994864446362960214381800065283862778751695417603781290445817213966552670036621558254996315535356511000465114757529948888156883556006765280466711509271821423880351646769653320085574961633388350264660306228422382456662165565499511762028998494994468190265916548854237437185234348760852844482116407253592951555881084107966571492300794767085165964962135376180940881737399019596987373155933788860568263697765291937126224461121118948372492340535102286013707639548403205427576052620585350187708781418938039567467045136340868614832979643984541276367472538703819540346724740168491741709619297243119221205301662568827775649298687396363866458365400445933638107063182103020929397061935697042270491413768240978396347323940488394368741296049184064806676120434768675262634725209950430865108309781514999016590178353424383392537668696827111902805107088958769218507758153107232981471915654481459874135244875041961121276508034576194161402772892932317150096699126329611519454416394620266975555461543687098204932232289425928525111986781160949775361840831610909418909850578086051262283697021086143526104914848126595250497624943351037505740086695681989445715103912601862120284512152644484889489735644399648167740141203165600363945899886207914521682735106869828714476450127782518689803912901981105115575769217548022386963225541830139897567045001845914580233647715800138126343895473405182128082880295346671894364075664386093217742277160759815379937050366808095620572712416156269651209653790347543611844931941333003512689180251241323355549452008096197611398992947394397331264482599158801849425878941170733998416576586896453786648958230358386755038181037186708116851193520646066231742085152102561444657402740534838062207596287006368297344051420793283509587166896167469761736441855966562296640663493365687341481455652893681819620103726215554692270239834957382402367022111247209044369607949928692941063228929860034313582846701079701387253910142854019802593009409322287374988064904661331833467338008137747462590342778095127315961668105792691925279629488790086768809677550342642465311844144052777222912214149053241827780469557605303229071861810999051338486559508939081053994053321271276288930245377866230501583555226319573795358857929800688685656783134847557716818647239150901616451218347419927553367908365984873794893710541117714128570517037259321865295495211626841452511275428066552903453821584554475199299393812413528885743522552873444009554503897452441710818054498484515782539188134436741096878767543749253376780446093901164890730796968770803305297937636412882876726445066876735935116400820820965281812894785005566069660791413811282696067710087648728055047930890055171466183371565823915665564061525105937278522429230058263832271544961035095062861802407338401015363043194101831613952295448747037193000753990432999155729080648373531153036043919328708376932121925286433351032306576272191763233656061328617818590234227710116645232309304802694944578822520156315425468645239743889205509758402580622855538106523268413075027707735819019749715832521198248523113870359602684877325265672899374175271412225620208422841894557559560080401929283657343814572975953532644872298386320347127818637157361654905498797763413289431434564884792728378518017351750849374951374209853716777285474705793692776366646569574190671568839420450424865655507290930944782133036572793894238166549467477522506331167935184178219065802011332638386538963121484961627745440496081218198978740318225332681660317941838981205131028902688668641309124579254674435739722836535384522410495733653793998942606708597490817356851109731204288943910469024270007576576192310676366364211350957616533064947933774483628897223541683144143890870397641308354016237775542477285237029021974263495084569481981515213179033509965353300317135212468384580915376184839024116781758991994725689510454228315782301704072530767531483837156953612288028247840974761147961667077485613793814096340265624648521806005968764717018907021356733641201051837990358448419120169026102926075409866722091944529609295124897289421675454683918283420930634273794725962025237855454529882495794366540018443843954851231241583445704285647912670993945830281952154379263773358354788406756578078514491392354879446582420597311568107735917015149718512795423360100481246810442674737238142242816324861741357198516613186005624249022692595709752986654988691969749439353687579948286718080747959599646091311266302299432411435213304626767091935482880545240120489668897597601133229232051849366504126176856078007811163195198727982612027584890388446595841036015284833811747996487720419054759204766565126931423780510812743529950470506331300995925241300788375507330896959022104517685166965812881778475663063592174287919002247697199915906789016610672021648159791471737448942570239762758250353439412223870610761189730094856951744506358596156251850903171740757850877817498025626410943713369484820133496031037003981732828530782680519207753282006131822520299679069967583189624953596941732784985434656627614862763305851678321257840474799777710982944464431522775625348388931261450385999614737753496710812492302583290766046048659031005171489885746677430419624054090905945276953012229160406657911142871593478244656843099355789608326762285819140365692174175539115129962914568300423358286779511237382788057862849935051521481621176919087896536383011017659845946734144524268977365346252459228258581550965466292163277853066115250031357859998352341587262628185114267593823090239846596221458108061721740937421015591081764836923040260393126625014296811781187224550616237658348824810654120023304997821978677412242058532605207495261241174723387544896686889528312646402971577532788125110481324838214960131043846608485551852585005505417092145125956533817309403541048175449461002027731601334802653494415656329396481871526472684483773285832614666722248487783330195412484847623217359452925647142762292515597781422555822546064451755961403611018687838286642094553490582899149063193103973650391461995630235628109546474372558783802825784839962940258647644612831631544719417744264501962379262175253731038474365653956668399522826050953638228917633352761173476988135902914399085446741875023657364358951525543636524794683399585844072621430737619105405743185053961148057862774424419147526464951069044137936350183938316404123892317410846682124296384693304163821053661211015744327642091575917557791213469577077383926031795260841865385344374986562257520941607185833651825915058242773850377233574764390375332532344561358092520800646623913210107102831281598891729515363014442003570652617985077598187669089252718406619572771609887161977701948018220315599298110239734069053308424056958836771469373029354313917566491687983557169656393411544364793228015211409485272510048523496084484537401020211939347971086852133512436746507413377371915240751200618570794792839825157888505997386452841401067804361051124147281621071894314755642884882115474476734713128265877328298950828294065285872063685456953138680137646082854115837114290792945471490279659714969156804139284944339843502803133118102182192524311120407496028398729136690971553327602726489576197053723613313647864015592496717930330275637522153440920993550847334064558888821004138956971286423683772189985278480893730438713720565468391054586893897936048347091588754520774806597567284770564971177231304301908798184571840406031225253670525435800161426696646465320353835236301299727697700428024766333453920460374005601718531531027865098170642844189798584904959164812125989210531885132499335699370407874348568930722428418181099302754374951905070640172521557974305556820990179109592732532848886244275609217389951369029845394771257787708495860615010996506049721675718810306416346261658427820462110697141558005396390249224849577123838147104433695270926287270182542750672294580540565594707675925262227724523293410807936406892013776417957153495040211626179101920483810342802752208022321705820492065610912079418443765605244644765121842209953865698145187949329787992410082818432627706895870765601708098454279236366489478644501679050201353644203742623907227326262051994577356556830249819789774299900486556117975633512804255064952362631048181774400042036391390443907080635064346498588158924393751755206416719241470349655698410664255587677476123100636417029945448937651900004569264507801966246591657438718175173065378066859156142420802196820929984651846095172787794041414348819929429931251508717171059764282985430471853619560277875381285605859666566742901845638775828928479748084369121720483143614075756848372126826727911204966384422804710257319496100566312936812712637901334991468497432750854355431760229788610841027981286825031222611824757826196969880443538111279590866631920832930524169126358133411783078752609756895946682087304701900247755590693537657315003910377508081783752321165692065280336773043878392723991603036255801733240677698680826964037526266181759838530755093334046228581226450594413956639176624241902960060075229347900459765333961017040226455198970590445641886144932393493008514007248697175142813028398348928096275537348559710394095035398515879376837677823650815850443337816766843025793991723249421404302054998210927255908857772392151737646065558419484394503408178857516114540129590622266422571730859761734459107849355840777329640115488682788677352022074221149041849541592225394890848682169142080333968631819372964642517746024595993661531715768727177674873927164063793351706126479611367834998330329646487178452879409481619757521601912343308367433709902623817821861407354980445190497751023011517141788257717746065890688766169445701132429414775451398852156247934852554016362882946891210372496955310250907679055795364778655965702712246754828434467884862581489758916480274974284111322648458498293408430563760210942444656838270601785430144956179549261961632472840306974586638105801621445943555820897778596822878348937211340299824650865130934198516265040315855593414183693240015054754878495753708440090382308562480396708739848745496967295869524966397960884257015114949568374687274312704512216029378630281799973535290606591706394923970199391014414148458518377529150900193509778831227439862679115513681133293497143073230695997477468565301750103113903509274182882945050213382961862369176029320695781430191139332964908187674108388255184271320365804711777704280781744529854387737718154585766922261359009368730680384827632002133832975379712343974142320560777702475118136880517865839171617130877105807773694397157860207854614012205491597691606167238117404194833656638661923524592110126877834699733719266094758197449917557782578664317463253413740052525743445360415262173717234403400242241697939824202150632848367220903285602123668878406062871613845507953966310027052698419755780067566150791193710355003113241480654311971210975472438751925241769187783096466550968184131464234479723050793321137686931140862704679160201832144245466164995029090205823463118930027982632276849025721908758960520741400057561104256312786542704873170986765816741008687704018832171186543053571349802921121555616494596323114080118681921841578696608242441297541916232033477512704316980977684707427766285752813019113723269757607581673699097353297293839445472734932067700671646622407398453065816536035733995134515168384536612844420339291601537545715904202120283540818690981932513068170073141318874746560558385255798664192039079673362104516680848810895093871426766938010898294716172942839944592534603483127677867917913695347491014407400575188257632667804852234636208277158568258560043784469427243272490291420838125968304122070039053705950155538790500592137565821157830845114329411461433306061229892446131623205262202461183810367596485754778967843236381071870439087116632347867452481273608087317980035839240806559619879401127988346207829958523950298401017390047073495676196056120228935656274556650040459766487110821746869020488190757086374222543064582347047239648136404226644455276587447598638935302522185752736574364271543238023693685728024787273392380258611949974396445578951262168218789069432032406978586181574963539239830421202309142612176049339023031085324903796817841373927713136450084837344971963108557514086313094654734114229186919754215242875075611369770786668842295188313503165811839317476528130392624684823526762242122452088266523860041441191739416841704880706522710719070017452692822761811968906291578697714967041064956683479051588764740808764425788719170135720851539074369269330504741672598998004498333173740076922218059830268150553333636724187095129866129288716146751307663776212522337217494701813842197838418211108703145590328234536533864873524382681712320214817963190134880929045062377988461186914803232343997364740834348612434782038546741584639233517776787230655557417327236140955030150082205737332030833291088333817551165110130539533334247013189752410995821841137073868716240225590299814090124800567183297287958179567263581317336413052545248226132111726514287054367277605663644686207643907529923645925187257397787188893980098562450454665874611089265994812690469254603562772539430679259098149686672396505169498674370193389688327564500912124498089891426018185364258259019659833504781461957966285606709545033928691726325131724140096940159500541414768545782554302488678038997874461006359647728367246373366177483461135101538167854562667473754479143606840949210690544023147065322200095092311188509237911150395955310472208468598003790907088584843958795668361953160352694193750213423266851179039388875407232841558789278565532588729676514696328670972322721204921260866239395926275444576551026585506587194321509079237850953592487188858985963878864153651989914998635918711997037054797040595575599933018215502602074129480129591977499898506116501723207542894121615129289030133953428513325654534894459394543158235785118930853026101849381803809145987017326963429370063132101245876453553100990775532816000384393136894515156044169633458813657192693526377640686726349944449989380743443292390907610324916440558229458041310264284808454214197180895806661493985585116311642836658420035653263838774734183802793004580243674562881359798920171028732394987663756737085437599955189222526086871082139192128591181972511147353482397615336897726127908301191727098391519631052234696578531120410064323293048255537176957543020801064962621630471657525295020696231627815600445565464684672741286655331756246841824237390892744744238038588904383473699749081937742282034983834900698453146118123944469212881815769868361789398179743803060822124143567918813304088472565172379967608519220087311878467822200480066683153118829124544387363906092076665183529525167302068310649574625512146944556350535106330082992473931331955068005773098217641964328570254516029246531262465642108950518803861820192368469366266274299710258452315159408488098406716835124787257286313245080490759997991055926378669391143789372496871759645412548078466650189934984188425130074831408920314813480702466899831333698331213479468766351367313222155265581061505030994869718426866554879658062437391105052526917918831804110517962258818858194181455558069335668089814626988008060643864339588214305925156804663999366901124205940337605733554698807014440793121457874989109342513392054298059279861985867545494484806764272768556776776913889227876993608122957589354427347579195790142644379266624391991397161230962893268750526469196714538973517325015416999297773506525095584378090300654036361974123924796218194050293171631788098296706915154420996089599242820342286631521100441476684524240654626108600542593371646368461055914905993514951179597447700906384461310745540045648590662776756413353502370455253411661992086030898261647023274281157361619804082034794889576463422150729262827402318070343224504226548438260315450545271681616441624496904030210053086981415430388866314407968505729256668099019369119634955419717229497907969392878151352020959823037850155840315461758325719862505274890922472603982245719136974700325232603584361611048394848656193781229496243994292712063658591889790393754587241533082019486290756980959925478124230432866167515785548686427869706230775849718709200820602558774544500704832928364185056154544548165585806802325781693320332403386407755612527068943256936980347856272245790640552133463466249757414125164690889811955455327351228960533547106655824567086958251758277825716944845480510862865468481900771364255670547377771314385343287608606245824509508832229583864759438000099000429566756869668088003092920804613405259792675121765615190364291348114025650799476512116582039622836358262566237993251461962812876772514013704264643528789670932266556656294983086653168347316809203036324248171943968270086832474026429193986319134581945168614739491652172924597781464675186478285355742149946909481382388324129357930799417761826213869946276900665222505404654403164576840647971372474985039629688635330510804358587063733578671071725396247528588901635662703483541523853667533430302559323759984033963820595753463000653739564672114337487276958355729870858358444391648411228675958682779218360238130355759358258594909931840955986292619051544684418529645035683223267890873700029078768938494129103931194040113265239713919039869512227365220194686929977835564367531790525587959316728198546106623706285212233054840300314437904532363807117082659243588154608162596643435956872380927279957641701013928854231581613440215270170636133080455686520455903021502528459740441967664992577620254435356562078159200913874011107182113615440553532223173167141991730051480926748451112657862569955047884220921346658250355336425201534367239105092364503725933617644318163425563375281047587625233919350055305668866632226212439861589241089784917663793394920534240251830669781506904805339465514578162265747893721676071339653008555410179666461820928804832478573246160870985960836290766278804015246427167947672962191285192185261043843796084177732139461584380145323383471620019241110650779806315975313252862908910196448856698083488717601564552678981375456753992959280688396277785745831533276936330685983759975511325698327477470939138660207134137224521573354562930538377950714861890308065301422100494501779729711788631829960872368374247470852732438792863656530557022486926974277119652454495854357078796941473897454063268358875305009595881106698671829756878908611185594013580503302248736270983992521841495717632714804502711822230707411748728869351332531931058111778470835086624613494738565132842464688765420398834983156077688553864447478089621444912661100784532146120177573381750718926637416470202623856611705211575920765392422215117897863095755057344800035225373681842301017853684336856511597194839779175956708798317837515439400552903059133512901001623812630319137350585025432472989846782023777880150002781095392476109017361643349562717461695967505455762058433142004138896197597357427643435938060201850337599895282162579155448885425440846978844325105514470657493484570888125506611084840055497590176727828556442263662890357551179412949491538457812684145726607947652126075006136792334660565205720878467512390554328060064745787668888636222911385292095173634998180739577925056640846044715241684141495646821039658264934526637269968491850932804146589730124258849237080866385116278838628030875972501651013527036711495834278838478939662171541278545272154418061695592291092360778808543850657620531383089095675817484161562336448774444589912022014345775786099173493409813317048103237650676461032386822040278860441220047702161665011996324234593738406275499623705058290017652789575973210998528835594415301796662717442192663260260000108154936152088206965131903751910122066299562975109945886353641496608818512223999669531413743062952742075951036776693210803363941376132153149943322727797011883607023462968521022989586862454344054000954488132728160384417938437698135684072301090386323646400325545239960523215079926871196643317584783707061547863377774038672111621005871336096728263617362499033807215398321601839214823852548599057244354416677225923240059708350984073686105404104484971267138436609278590489210615232927870671805567348604277557577065745738644237152941373163363156979613671841981896623437646377613193173457704250721344145228102849699897598583699157523704970352957634020149293791233631163329584755380268715439532392631317244597946661061060301174473806589366469311559355688330531640924546731289682653537305445365350694864037174269007309395301599958574328411312107532460068534761955996533184783223125796062240555541581127706282337523206894492065822493190961449536827083575823622893871215620883351641231025989501633549525683691297752768366778444137533021951889698426575172379362817846 21907866925522047150461656108039024297260647565434365321383470171720610230969588127984779207530969376644653280111810951966017480776447317891557839664209009387112980599011503436508011701817437036626295936227292282385965636815293188427396686700050131068317405265239865794808673133184725208159876713508166128574436855617820937215900355391889069177641813942750204334779611088548144014772004433024843805605237225349840728934589978614888512785398262449448665174502331921611480932417090527583548147391231814905461180060627617408854946745421620628156818474818332505620079605409571429206228599596426297895338674581280581578484687194316658402886835127722190058490685280532840109134592607908063518790364076470465923295696579712577019953696697996800328041507062176169233908992679808185921211373768633007301178056764930250508318533053787741942737837988711663513598407846214846413686342203696383861220830226645156432754574347045678034944754388485444819759757499082199337203686805327835672877442751969718409652463262676068913200663367472422479886363911107725371549062047704407695432371123937313250754109012454597486721593392088517648178723938191772966784317151254387295636877963457564994581941992519719058571391367173877621449377118959093203076310285394938383745330888066007733460433336348661334661794713900038501986476423888999321331014460874442507286906424074756863887856467979636586130812911804597313467583888134214094360017320717248677492870699896853635250190298289208208300419597666213357458069192674125602312498995208607273631267961999755478637509203629986566514452103885538651944192230959096652343895028349323774014860446932112352339749091935919461577306073172346948503000415272905474096992494357046435191129148001342807846303817065096970538864867501785471967489493125947864995170288857997257231074690864759433157297127409300287272344405615252249965241580202751180679809341775766430490756030967255383249062295833666235701413065056402409160364415493327209301082690597123446335567149353421134666134533523007274082250520693684831559877993196110966352422584581798368294006828755309806202704884528779095390943018194370139476474931425682970441758274533448402747430447993569677282443507477085362461291182648048540340253905906592891925557219448722478164888250109102059880321525151071644911963935822379029540822240286542714524336586717967733286387274533321288124004988719343812968763256760387251960599217903099644734254245328807018991457523435110280862672390315921432066432783383865614686572052200215554002951576294727953166204628414794336091397140079887130481546016829851751087245232821537060586411971723605787562194738627633602696534892640536485311586480723918846664935760925113356302818745242519747928646966304642591588083918619534880933512555767032111350080687586735061006510239507814426454539872954915054830079297820776829516552230837771989413074819969075765530036270906408436367483662275685918101360692822922247758018158810128821842347219506558672337771397951611753759537409177353757084565754161032052507084617827493902537978453091985421857775590723601114766884569994934382429795906165450318132053215775590779130028128244997399429297911318562810347677697711372134983728743979644676377376705001420927686723645361886880496802041736410195828614858553498274541488270375166039249857393136660437506756787109692686001039292286748036465760617167555667123315168647168697842967091791185155993951085723613990160225099936812731143506854733945403466995391268384880762814383530475903698748989465902558946639755610325956453869494570658825489944813511717917898745622693114835460497597476420375549183824843557200490198510155800938931773018041024801509017083656080966994840025180149418645131927164850932914363447385836467874261380513734281932760306580809568066408393113868678120313824528886359031610320215716928488467782336835631550549550728563467854211070229238990120979211111943845137625490770947288814899457833225524451215118869652454800734850030445088715192240783551554770281420714990770696507383338784384575461531642262944484121954846785302943195450275417537002109774008577250695439350174015600762295794541741119597873273042420627556378539007854345313243254832592259881945317747835927023695576132689410276624893859091719963265036743436180448613298154157007264471648822537282076346926447400931365271748518527631012753221995233047610960478551839486723834167288064649931605857569690916619550665965407994745183076682239081198671539564299069571040349328111962042683568320723590927813267071351745434921939933384140986748810618976372121255605354306130759151034716830904128231728565087106945717765568148853021575356457560168986338306010948012320842794359142651993367316176087383613407321017155535641281817956396532987859113708037581487891518985484016507286764186851470298872002141976518946964864567051361975316757163520843896119171036777581062217151299927158017396655009253799999059735390764946413474187086187416182518827394021716205173575238838106323690674320944804839059661818103029074436993290054318036677165877757695207958756587680465618153292326464954509002154145405542579216169910993958751688453216605450882367535407221952114789850939850540712165245787243376101815208395773255065030045850824536785641989489544917361004624784198501677873865986167008883825354608198080320845012309531785217677540355141731924952404776089991417101260456228585263411145726723057162111463558165022589286187665475634575434803312672000665144633583491815386038085291693132233992931381179094129647486898023697486037966289401070708337950901189600135977035045387239790284342697609150121185922121112908979981489585807130101178871374025317955185822296804464344487731428771416470754179687140334379739348638094209371425814233295328757910960135449009018837707483749789196212610451798195429021032467095977614615002082799360805101207181694911249238981521657819908044816169972980383128727955302562941537197531070139793061361140020478134339354679934036469095140012082513201512012368629425855346148494598234413539519549727208683976727469963558811974986406047527872246202163985452455727871798726591319899837365673045575880021014688148809928744623435264292375207907900168365738119283440834908968206597193306665909748477235250639325657296343066170441868733393136630445173610441029624116801375678527383525082664211899694017811602634567597973954580107147355056673672829721514629903293744227819158914287847000490869464138514411020484051477373324508187778673131303376245426291920383957670527881858020564291993823407059168985287750913667467020825591948294232226434975283507077963414246577069447230728232810346519357840909983842711079482342388086522420141639222405713117540084942034547627908340809214587015410890618690255968008476460512648577571067003684983531380521672821708776248363234225873076160783838452921295191323806031575785166366552813886274968606580222077532677162853999794505326588523028030953069410410045407240375110084488253531962015439412225223236666864847809373018566454516082361242362561268070659948166696187241872418304568228139752740743786509939572140928038082912394304154213039369484674653784371882748201001341982669067352471378525721371589781332865971121101193238460498071677584043657126366662447172013074257271418508749090879416450696849597770859454929529308273929287360530561408572733075007850696769890455154803962875753006540451945006564822336893850223130036975334384881930627340846756405401423876313648822396559762002701821507432103101242354978350814589043056933094944378689312982099153807377976140282136941768116825936647995384853807902240900235702120715153276184373243164104638194117656025760352618108649430441626696203198788442878970675999872276775974055326966405228757854754924754674662306925533653794465876759132960739326347908646499230481319735610963569345670012817062569272444204082869128531720435265645415586929118648947024669131359476841502299377708761938928029260041824759415386608347219890832204493580053301930271752842853170753221313813449739317154906017647407579994842319262242157167819543579237789564083701976156378743823145205762772968629027297489583237928534983611489737641267764516915004984944243216516652710641697966391912073311435867624805335369643140347719420657867157221248130521701820713641315238406187360922181387323721763388851099174780112360413906523151812976502519994285253221412668572654460915135227250388233072460687195336807126755032640540627012545263237425363192636983975869157519009799191952678334356630815415729382985597243704863705867719167109356289947647726427112792599838436389243548009031723278465813040462222133733756426320893228885033660609597585389448795427950796606195958270918500044166951659158569916881089505765054457462079499122708138602039166350482183256939774537665989320116838802695188189675240321939671224097002488657693751340852918300274393256819445641183952903909750558349916269775688047536378724904644516126718584411536341818204490876021779416211272139448697645856363102722349074130150489116866429391116330160316152715120768795401167499231820328381070665326304065485360623262658224134236421458918629091150477122892582054835116360407172660751529809004929643244696451783902405479941176708575667287551914595181226960859481280157892953829801712736790070896208122010728538386535137593190971788014985814365909341419866333473175689524982022173609240977901171889842493695249301832839204533486071683847163849453879971056477758658979669620116060628779662247306210390715472370152526305136025392027934200499447146874236073711899801738515323476453273849959654447340749271092942403876951964026145665680090940045580399873338812057250566045749369212832931562228832579336821798275203767823201976814268705708489671995520031907972492130826904470921331621313057969420428916600643575754955829417228990112774500315922857546436621011269873666091558378477837059498036974156082939132715990970019020902066964649471961228170430067222889943010741605052669728399015515109515766184057297088708444408804114795314290912061322117058020595862032528083092314040697729750056433955920805343732398661333295485538704380707947904117177404099569533435460285362475899104511286274984803558271142388025069973486803149723240155047460801060753238480292007011843009262124524949266744244793000947763869661853083827589446461609288197936500723880285910781956801286406355350906334538574996952727809573581125522322890096845836892263351731195088129240810293327071099448198668450053476818297368593772498942394508811892716968376788096423247263639539906609157524886934116161852562909035268188400679098697553443867834439580884114919542423879187122482011616232938678852973135654494393238706927128563277017130199178434534082333772174308231011692314132160130641362411798359723974668016100479978929559548069529413919684697153977132182502783287782444437920720690798180542392139955072081259475806176030603812863916740412800209702791838072478053343243768453417519577388920541684302102420839838750860571833134589630826461791074056982896504739633145879834428734435448177128332354157030336582713980372388017986673214113663853816706599551084053737822508273140205223737727989301650525888999888450770270421671678674474903285586890147096097586636183963359649810804773253585999508782935256381358869508872430691663470111910752006314531444459010971074565914863417613864813867067532890974808843457887989822397995405271752875152624667676347502910954616060821656572726625981287508141357961870773643179150064113364771711612686085758011474662051716063378850447907032782449177851930215812895305142245969543013295287009898251137223394490519641660834223997977265138059964167608217827703946442412410915627717891691008320302282689379352754858908665168159414227979710615891168478317673891583364824155174593755095052801770505761312970266200226280899690931787184700232964244046087209898344998786230306344287108018728620806027501729088959692004573128871857781210767474751020921202805545941420526778910595057156477305925719677206700529841919548488833931103764449590423201040857877173529188453779122835539956834893305476885677658834379763063490758724385502962829738312799924119791084249531542562418582183989395750228146686949864780243168190468985434703350551427372026447342393579080040107652772847143792247419330311895912650795312728545604595279117489502149915959115294662079598466254114169005033262125902177334189046303212114146542945957709058424589009572324678441148700110523761477800450725124245130293831249333852426678043359563768823953757705385751077497077578201682256840436631004407027379819706404401434952257330300139160851494854267808542378893952095287641942931074119321848867948893306752437689732706582295374890827883538177253427012935371981812580601469412466349832712473863644945719354796965690365614607786751346832013943783928376524913099250754691067106486977879092250720666550701645884296440323110282489347294714930114485208091013537770077450875265783594991808013980555267244953725080253998069699213269246386926096668280206208519116390479899993221024140477941579601682223352246626839788801046040989499248170926457584147725581607724328591702041036180040202262988683107971323715581210564866077661561101994926280993304938224982801353012711780051008748237662769513375861127270416496880728532927157240815979837319197637159840048602501290273974232656955532562562677919267414453382062019516579370203127069533629658205081799966397299569566725963962013682337450815446295513469634093512757331898726343826305757987874164328896008576543393555687745087497957906469877143853487186448057615445099716711264855265872721393545263299144402265657925304709497968857421654206662704173495435051815282548502669557197092199366668920700482472405708434727736699222881597777936013959159003085224688075232064171781044336385254247498183456064105646494102529427734946289797785746671622755919515905771207752978995548375501855392291960712822984083780848467224957178102870886304689641105803585501838553405390957969713207344901667282312304153482307027535626457036292675556843230485466649399643684673091440953737047614132952265100882049773624205260136461261388435869307621248183837026676748170699480998095536134421861658005534309040520412794399703729454388149928037574407331402416381449621871578577647657343639533362283949957950109877016915716104540560892866645521617684532997656374703298566696310105874399554617016361935013360345344392780643930298637553210390765190699785997007478591180433175994574575775766797779866254187907354864559744270619487830234695347460814996762386479899066189224111184477471172456460881762128484444362985952014258632146805763773952574068555060913588632263178658185064824421148896738453695832091909154468109541727592834245765350246953903302777427108177044175334820804044251443913229785835262205826366672469580179832236623704320493256168498811438610848377451413916465255310164372645821568500884218413961095707228808587574412231226458120135042962584483608694499881850133886320353896335145179495214056549104584789083454458758083191667793161379503747818830768456058104152444381398999792596114619439550934821252094592518747886050404639233037946609984921960369272847923062230532283125473975551635264958480762449551795213692004122522612329217089529041932622123974631236817783224015228599408310683890650528700056215818806287719525693798866460437019303340444450592769315480777421556169960367765247477455347253928704908834606879342882810780702145019767735049774675067558460671249817107545529173268674925756212050506838643641238070399222392834129126834321488456262111951238378011327778383618770822335218954779102445917640772180390951034649437189363467430872448813560258837774106248764053841431171973884297730108357294756873789471584801326240263324612133302844409973791999718959351880386712085635069551041925867942961999148583235077525938286426987922549776399626393145277405017695445467154133418732747590982664923185717463166353855873056108321799109813791344258897752685272054248627948019740408326345996247163340720521587315302276651512879475923281364050029661914916631243911046363877193391264967531219359709286330735112220417138256484130449710397827547242279880904334432598325120254309903618947935823941629474215370231469817030702145151936542390083811566202670067650686780448744179067856477278240040385861115209300625021452365700220116678289039656285239915091893973814338388968668675813875753017734046174202837077831436119818660680973417394101285616780346478898085927417835794557082899127825950973201899769558251320314963321427857554060892097901757125755974417730929379864921033818951988558502450066891954508732713976048699629949828710598429670197701437621949038052455472116822824266416118892404140427370225838669848631888359703797498748136999326323641658410227084845984535724408568976986638212558030780561543111460969946053134142738581564971276266445426292803428085654482210141233539686815844729438190005335805393066220235865967883198097392285581298956428394051407690690632220077045340566772424202389306434092420493516347109747624290758214343045797769678835666931832216156219109615300756843401818814004552809456700912464386375202071600199240823732065507378893624725374190469029753810929094667931084411787186995704990734096471306524065962452069006461449412415374047790341832844092589123805184309739361509849141858066035126231812604891433437306516062977414778844279038390635393158727886423698051364880165498081159043335173433391265400254398606119874001481406446486928018526863211815316777952561632179064866980139316621049485291344588948697078872969698137276036063292898597505108418470030862685410272762300219196295269962399441918631971830387482803345315465657455783797338203019909256721072212863804824151026808160921409152836394758518313690885821498664888846235141607818436474259803429606854965451570092450750350809341910227063274589406184744591341145506061311870048836245761864598380888693709947001488303857109627719707364773688739300551466029198256461415344050581316090405135645237291082260093938586220014905938627727685577485338426178251770998138264406714170260908249371831411554473744437403323727221692805448624834463942345232982802909257401762479860625026153825784426552678552995874726859093750197888663851095861974006534113645774553881918965689115527636105034993588598956681091317891419739655527568369005990945720561990319821473963663678115770296483934571847874732056196628107197799836875435715745252260739470302587880627872050378724390594077809973262333069179357204207130958067430775948304906187526207563582068592078243810754973878074300983467502076496722086747549556183270840737361190300839334588050837323159740698324042924478125708753545444014991789287487978964523614809813210305640951010957488517891646718074861439275616901221643697400487085103538968944323685480840663129920534158655224223371463223725463197917645658989882635696868506549195467942415318882179092625673272195615866313823388816107151090567959779074538129391651547712713459583012963953948737719715329917490784702695511185179009106663850225971586712826140314380110753845893381656327037751445994921055550980467849830517637444934783447022130138768838983131751849131301542784835092872999473267424203042025072703316055912585008471745723605372893295927957899405670097798083597890014013344935420546975173630291730028771879124661635619119727842678069614220658089826829385361425112547186830403689752317488221474048794805920438948157761916008070779711227637322432300700310072775294345721060852935247415924820558304058403797167155654177235234516898142954191422766554247577303223322467339257785685686270262309773766347696973454436040857951318706441364356783839933185281576642953049122207473423333134214232284577228922931229756803264324379664910329435543349188394586160269875818609705343285447344956259515410142827112032587284469072866778858753408607874923137655564124933787945796838824371933091386441701010858696648149347245141317958319899229925976007001002135699530263804480022594474815686937548735705900560620838728107173435637750350359090532482661446849372439437154686722074634579445416749988361821988092577071547346469762768079132192199754490432313573502192326044153417345612155989524852632172315791631020932813904274712474448698134505519051089275953707760029779711846387899336838863616460861915471814676133583629673396039250921037325680460338715573992882142281559841548186467252580993691062810259694431052772453127689665178021375929127777606080393383277082891742241760868940118609231484613428557538705090492697368271591394992191693605948454151242006036196000870931383599711708888498955531721018884026795914965154286390695351376471035489614268178988029429562539017075469730816836075390049146476478403599606189944207334443142006622363422030466997876934413793080787108317076045424076611770874449860236569062293268043387259615298935439951725323197156072417517704184651564772159164761107043716685253982017196895525603269128679399347855602552800135775993988307370304655611411588382749871972689770235275636521846734064264396084105315851500222956929842535142174438570991215161122731615471939678825152655488099246939998139468839864922948226209831656758680432082274494188060880364872609300224095492724641034366451264320305824690605392417497757825761281008181020558254694718298904275246541625830530920766468738756700587037353486432145933899523893837730305179986086285060102249303679332151586847868869175655712974880716124592896961054693831974260046622039544690349260993992679471687616853255656679658093788830841628078676538433183080027063141350799661430454704422230493974082290257956680094600596671043196246260410405527588576241596330441296616866158656526498949781487833623762617862188515110588395754765706657975138638681212426246216408894480545743773085894066783445811742964648663428179860188132980148641422324848632300995582347218513787607972656067523684941506167935530462490682438826442710903970356752794312902394092308964789702862582290225171372023614874349653164024326056882863031367114404509305454270216576441454940879124337420207298276142238719358992920644602273597660527577275144117294047039564366198765817765018524973267558407898157698561912752228980670325480522423734093272570870511577827889023009380997548652767241031422844802021412155819369718393075011386168292538587957904047225874006460435482337163020455523929183239366613546629581792915839515566951926888583621299873859379589112411254817666405025406813362880114413526897803897546805724548944783995209634357787458431482901802247125072586373582859454508743575877353514324488445311182019180313664083368589606196722235260188506319293384017338288506326939490800776954192249382913880184519832475267642927371968908516749359087880204266708335445391992762923652070814144184046626630641756414220579869017575013884359633146015186058175435637891291759015841004508623070707694640006812080394359761085267621280297284514332536869948158074944406362240398615652162140289817134804534034599757443539370901486422203259470022756442531223600291190279809565518897942428531748724022973712169399710010175777650230531946701802232104836885500924997624668189283160735836700273159017181543109284967581548213144093808950510118984368036917811379361070481833288626914009067242201870275472025391869030162245035645325335499235703270977562917829669919919729764126060299633937894788364258021523973335861938566068315206518738935781125578621086893774558213837482481535215231947241194464492273546253756644215275562856167038760673467748179890267280413127250572568889145158600306814775353736898271848614429586171445359061644701537418515455112568103004443352038293214901688151632400772499534288901419520178454545247191810223831883329309989834714249119844603269628947823845202639537606884747994552464586448354916409346344262963068230204601543316376163451902084063779790544597030392657231711141377241789137074133617470467656201834068570605278582946640249120219215701656204937933750095815114872778240580613280792952951177781265646859405838099307640477444876724168554843695769011554380775659441496027767885272958827366904576156103305567182260382406522942762030773368514557002881739829739432873280676791053557308126893571096793467332714061161210145968352472672247290674180507061314001515410557926934203940417583326144798250981210643232670752030735735086264892734989089420828198245535902812432878885086180078171152511058214952978340317892831481798502038519141145835374451596959944208676129212624670639705587012962429243298254770331507164124811066903655109243890457847903616979833205511047851532099198474664330496750000441308667487594978143256035027393149338873433752971765033923019697049249172977212422841109494662478423425499243969870150248335973946450307875684348881175712735878546706396888584384422544592476085767663264520573854983331341245283067371566595302764277458420238748678891999974110918109415428954516271621020973904883566106056567633021316745616535723552954047289769137043774652115110348563949166724345217190315394896257316015752537083321452403236869605861795475391279966052183537993327916270296333378968064193973394840251399747087453933501110500729381975221004043489059480441314286006391245477538859223324763087126542503962518897098277973286532071533900596862020548794241078534090589592431663319217155637346344113831385144756914007432329482026201346962957387042951477099761972640942890316262286677219861932593600923628543909049002191672432954377798562223037515035701487278381081969746081584692234786231031119053771682217153861777644835490735119522187083634308916829764162069921005837596543347078206746695266918341603615901151349404343514965398915151405832301683568741291308525311581859515476900847510304129782469378044763984333714689814865286236836047622281435573611301511154626068750141613159026264270612480551940701167265357947134955917000621051386656444960239682145583718058828957660057102297560549822614752166830116393014293714409346006911612058427305987388076793752261339831855608338058328748839605775795724202520197861189912663584670456864567796735350759478544213343433480832597464884841362965812228559568667836877724493253411603127151157205357250334026473841272937476520566406993244272589100813319317162554214558058945467936670871637465415241424650932303573677475612940190387465287613208557321808315802764197681607848080609604624126196161251130984585492935250954307835610875198548922743788153338378108494427169187860469208369994218439172663813582025635298269418113788016786079645815408163603321584278271956114487617393320932998734071468039673630686262064820796051751812649735531585489947028530813893406641658778128480664348189118862084080986423834240115554389992942132580371264644322338360238464464790976078441206208086408325116714373456968856770588459056083458786384311047068968017677407083886167296540346930079012345869020645322974394235695558925109724098686437512318915267883210784860900398077051027070710449819026983872164675202908528972311956839905566554323453856129046379483134426431527155883888889533772950723124034936847599212893632296620170287783153214879595999677181642968990840543306775707537820564414464712686790109147922982073716673004275869451931732111489766617817076045358042161944894255582016681739469419417165031508609234134403169213653129989667292503090380274964475809181764816149627875151306962344176152909662444374536924330468703203860198182034310062189840890992372417216193462002704890771285169040177833165059580100302522052487779807798724924360398430570618604541837903870598708967651138660437274674985715190015204947234626316735568948125983309721613176019347306621908286696265828143162768198524701737827163898137708617503697961962233914725186380076160137469384227578278271959242952960698021807572710838378256058649622265648983845672862873427391184267887871789814580135886484177249474220074648009354870188162903582584955751164050057715153166993953917443893964003495193290734254893762409004449561127717616022838280640633080680410299274966135494610945780610089011725017078140425270047180032375425259522944669386707191439058958987145910981939282538119788431379686990564509846531322842394399693663266719364038487082489611414855312005459303824694165796209064150919981674642338911266970317377842279825069869693390643058881897605866431633623366849861916263545646637663204757270804712407781149682767791682045926002256237211009182201679825646613317951962992283524789491102207366153665697714885691092072699402148445501397241392509419292881140125751462421012591474883347609836021562602154159209347524053320748336126554554573427491997688029088686421700878563031893391322947016970805748480810751335457353776987727448664750673189974900038116778785749967744046850194526319989911361603583256667196960278503952985976204464390295504595360598655256448274456412147461417504707492770181578593672985988664778430438607837820254609858627036587148248435598590010301261213837115454636741402669844963638631944641286528302106034417387037446063033210743086653910730847286176795599113787359799834404726841015538310550393505809878892993199020491319902610659121390783867766098375395466937580359757478816526667930587318040276651392508203462117808565375566889666900693828431079698849098353366194591559257207839660690644581800291756419382475899146675371039168490341628373830205004527233129889475874830796115021933837758025193149933223230820484453263648191172696682532750158793769619874671813459569262338381182462812636221353280020164192267911751163229645764525642885796483262954773563301794209362138016390848731709954604728679888992579105133905294578442610369097569472734797028377646873485172916065922099234223147909867335739194658244156053240039446042244134248309901427081167987632629677451923923825495295515319689317486387178428787221732759396038220834290456855692439490448725897139185569345650853661137569802858254922973435451202783845937180674687181207220003086558043085076895766061434415124951595626646485468359172357874782584103778699523263904494390556341916675676462554232318558675241005310668766505432041437258624794914324612205305540645216581319904619941056865915618742600619191279943077351515994790335856410560380749509397275725200649438788428858086862980449842831674026857287881450825187125630994674041829528865024707819556282123918600653685109335827318435516997138993637977389129792505826030548618966406304289150779708722215619669755629974895272134398959467447510421001455048495322042283099271378561202135233349932790747159154019828361539195233755183942554620754597596646823983064870749510685526738013599278982090115462728164561983529983997889066377123109938244941294754132468301211739951973335176528238335920805781292473130676257709876873717496667845537657558461496635396690692863793601194163712345352489445081893193739855533994119058079048535283695705902911389796902027616604666579686199652010239710715014106898372076057398195107953932407078337195757145820838027741402359719183729641230917164604094511068994642599519476845384708738876157954807193018175158706948173270510488669334059750268140908155914473510184474154727016965373359393139848394105449883972429986411235537544620975263877237388633690529183439359996596353086882520432353404042502805301242281322144319883764250361496367481069721222964546833429446329303431403299442703998228059288584430739499315670013087285210655232797090160893878082766018398957887238399422191512328583785629105596266830817615373241607534039523294868594340181763184033776813347449233928150554659271139251878883293453358420486555464971369791429226803087110366282792699600627189124887708408917099775774594450498234413732268954265499717466399774314677620152994593551431859791863470276279266453780989048191328301268584176770898505508452220534021918659515325620874390537553711166964245171961594187746350580457748538779693092911547906956572462776289596553460720487514372760924167432633588640347615301133582460838155154593277581727414487519830210871587555511616257251763057953648579590805413652686081583773509783258496500210562257432336196767094471738267806431457504218155974626367466172086725224913459712580725736102527055529076935033199259307643334082031285339466069025967247128003183643484122737877253079151217537566668246372362763079581917881488075527034526391401463216392315923350160001188840836270488113360029861330089208656257914589375243552373942441889523319146316553488605447767055323003963427118838442937416983605497391577745696740629315116740734551048735501447420807101919831512218443698691358417266904545450035854724641811612492938459764252781151942167875937146251481908905033554839967780386549461429497210707695994133559781253278308024896386195794518456949021958331938989577927573781872104176671024325614970649584170572381445397259800513838605517387068122353451944418631571560668391097809846449287358287418498495544470177225520375309631448180059939212805190039933592778920965706779413331376860377765786235605643185845430485433690325331001953045252241597461433376179307308357457619300724532635173544215047646505811399427273003038485754168506015903337921904463332717956132026279948143102620997718510956663293999008888073322684550217906165217692879139231459508846081927702511447935523580143418882430969672112898792735012682480527477581782319165698657569786367708009515173427399947479813951568987131999003568749102135269535699219136527179650176152039412058108839779459356953274674991012210265163714742813265271389666220334861749350013242805547121136149657633719119548642586910279679320513052899192062150050374476099908234938974803955139722717916347281084535597233744948013353502873275391301464779894852080154019540406129493442976770608645 -> -20003164289847287803817133596749011505332271581606043126852711561823669410642082717445463308600751767338721852392118381287593638890604299853094661255111207380075940801432868381783899683832838861493632253722549327450180453881946217013090304392682437211673807236741130662126897369652058801410432960603415055662317122218554255102200932115873995081838606864364441560327491386849451637783025734869497130252318502487761647163607162773275396607582581204056719293629947673826950366859437878309330236357676233517057072608612369588238000094419094915142076843090778536305258328669050196421216068791323208807972806797487859323103240202180441858789715994159974663173974790340062421647736986267038770057198051497581931158775866661671398675981174546446703123501125968232120762795074291859458792279006474831486508193841059611789560944072109453813765070560720947377057657517557401325905264591107281137810320702960920056973412358133422079798823481129594927197932276129019736407804783529722683287921464622817284096255455547494999469067917915087443277060631032675090872951853955393847340390552075228623976931848678357498893076122911180001415847023961340449792522483754923442571545731722867355455355993280947463424998733095640758351255250674547943536511700291858371000804962281892888312804075674033198944121862724869450544516166815819730660874461558311265915297214515182057096439661222360033199638209611487030787899207080296274419072139760130900441006102734138852829614050995824513757515923936595090724029654578643442023361543222917398670288612195644830737058883993446194961586625746317405816477710479389374656901396266654613194228654436745748538392595544237636150006384721364918856756593452053232513193823167524277812184409665843152188194874625500127112365349921353594085734752159545243352048934785447201223774838765259975353090125300790437942684593924956416600087163902623435852924847103217418444579283916281126488865109926848858136825964170264224112313259126667574688011594203591789374152224784455516862043849355518678383626295826747907513230962002149262004299443729138858547364289855788715575731881672250593971488866965441764497528952663245884020781313468105062593235400459943739061641839533605110430600410109992840938512779155908817368535517251588894409525848941379744859486427940613045054042286415367657036659982532149615428900798828726596333620510193890125645532151826057248136483788340833455396281635628864599414392494061035499384592983942519126466998323121397109385157548744543807426095336328854124903943447940376954432935973117653141115043933094660690837970226566598217832995234385027680465141078914456796530632804547821409245069480146697548337483332887658304708860972141161526102925605919335542720874527653476638400163834029654846484611486655477806255165411999765133767561312591027869324955488748593226868245682467994766735725874095090677019095599997339870927523361777439219978996437483809794657305480473849745181428812604978645078530316176745492884910347771674881892315131477332347683577948397880064130264228949313291527837931633169690631946811327104015511702185151909400596292903326865986915846092613273559376465874925181862928706607713202324381737675097605801213432324698403398182154525387898906118863567742376233921534845597777339992384059758102657482824456683866752762150278478963410294871173385390965407065110791537292877424083299576637847077933818365482570832632456449124014694682031764964662730441037808952461302887212146192630617451853615208710270835105430730067955640641539829534763075381478372926531545593580855260840655462151861741764405157751431991802017321005964183738208256003568479570757508445643715842027882945531148406725082319300273590955478225361150939503575081246665976366623102004784744177318866950515965587027369288717892666895128849790871314481531470240619801288031969233943497598063564442063676243994541248617106444940603872605622643297399094680431174831970797778683158924854125216431374547613708087351114097102880638987204270552283786374068437749808182489929090456811807186203150372811714509947121444507357749720397972299433366593339030570284281507210502731119372645332376424730491904560984813784935708895002585249379658393037130627631832589371713609665899811468906116658828444139675455827347067007698720914422090241674736018640522412685875687537992902321007225004877273928818148279420878088507125711810458974873226843034512356016569463703935824637556141864728311849446684241037153864544306787948850307133186179510648294164658995967604342642779163082825849639106579289926773256256023205140361258326261037230356831727304929341050648160943653003714333124384432586008862913165583473896974078199791729973875016980969651886330470470538754596957092163921520677819575510366971419881597528526187728552900587244152546973144442227906775459811533579213989015214073277598099182655328567738858795562447697959480558424544919915799616567494451783706576569100529020277525289652163431063352755540313674997366347832225460503685731453568580909446015130257655480985612782300669733130302572400939454709417101204259628461971223888881575724431588392357125058590706780122698075992126846442863272508318965794828711657139869251529765230108468376276125890459393169668381527842509032455458667324778535351926484765532724077893240574942608733801206803797986073898429908386378025601355579002442734356602757874010873289495034545329266945442496124212918503790544910506378718274656623735492255660991789441274738609404389435248195775660240553595238088732881480148706910248333357840665048896105151004676638662898870488704197793420950467384424548272975881098707171805425814093569732193060430351197676103738954425345279850842219608786014458799177791939696663449592825618658087599711795104474659684919787603109969938654126761934064183586414152027780033111137668387978537219449844620808435917920567292279232660322304461292056330720814226227010813822419014590818155886936676335546827704995296870145707762698488282566221689461828369175695351894609133726814334466890540019252055492963891895374578766423057765752535935165107520979729266820589699220340825167080255327494785377721433582860351239840564607076100043338244316228459348315579971614260546361999126231706142387094478097298975358790456792362107114044861758425012480689337460406551114874907096713566417385721548580326476747087631026712174525023762895346840526023247759830600740464963999056866988688080383758344133424186387902347210651613535579519768489978809212561628829630807617000334219762484236911439149646264693205541736806169703035840557913819866827242926050767258316255534329529610992905900803460361025321325184780445609212340198934788125892309443276248291858943332105362899146642610261249127711229368704044489424820353515152806562152816736199161035959601959675503942564649409409630255632458392689606768582842667823790682908254693539047050251380281257384379180836998635531805124307046039938896747611399568203059899585543453926745470259700465007230473339336667791957238945516352001755917404466120506587845598539884066796447752756819605328029793646146733652902125691788614850210499579325513122073147302763697846303077099390368526344490512201622956983841868069812691846089329290013421321227212646427083073478965280075024986602454820458404712592568105865808128176869645998997137538763059648672305701851000331805583633314308650640848687652170799771265001176875854468250487701778143800268447805149552224354948423034181520770728016708888282759732955825877551337916383357103502874625912040453049003566531272271366517514559785883276472920401996659403872494304125272278065839431734900983708496535114726641649245467474145450757989955228949463190635395071191465102255104108048065299894708664947532525464162044098624729155053408385533250654274600113145995106264679607994928815785010883883043283220025241615640993540272440410338436752929377512480182438408111590963275685948461182857564280807117190464624243851207875185794643810487787636554882309664910724187806878592394560868804520286400274769724934371138140179309193700358900125400629512349848951838462875562016134209509433215791682869143909308638411162464978036695395884733094411571881176370905361214001728823540187720406286321668307868689913336312786061894483026206578379222219123800732436895668074015277660563771539270702624725160585127382105141382976006125426746054821111684174452969267174736476997054951929883682292131774300350457493547738174359062797082551051729739314876402662122875157409518332911450620481091070319741684275346268701532488848036237432156193639680773317690609204282406208688009550596364013825643713468608224342520173697886320540315130407325183055523220074126654667427072438968925283024613777062701268257505515080168735671872454254671545965188444131191269947078846233026894982587284499145418223079877984765854677210449690238489124436297767825612521704460419234034862455103678964062487477272362222876417484850205866733429148711220520144021217183803798601666039654566882119482297284548741228644891864376388726714316485168107544760558891370464970800717070649097813312607661810997636667208431805101261231600242106471866439495787794813184655540354878143502232652421660935206123828541094073691432726437536339094215012127217464100603542837142454073685677439972530631642407846355888287560709601192950282621884204518156554715240647363704198069494710837636385238397007278224841001874979893226362466940122730557655628692112628923499236384789900170299768330296731276591151651085218754396570128663950019197675406569080845076376649144830765167662513918504498463714640536484024005698980599183922192392626933083297591392895093281264318592419655478849701715348773905597307168402541213641747718558431414543874890052677265917809515693889466308252987991674479990436222102573658294751620025735146905316554608867578058419260895466458705329342144620183306480964759311690127959833385230045181805834766309836198903888999361315733603206401173600053836461777039255699178490409025514555630832751839600563649846150857509810219178507079538371141125824259873207081576746659571431735607064256003302816130315488768752118702260178039348563062211936455222038761599805240497174643739089110558548148475215789558419417888815002157402357564253683507603569172950643219743499597691493948684556069155293688482763389264775790322172803374359843555794477115362219358790792089388014600831375692178042080991014045562318861678135375707881088364359127578407694678134624723425843202089969714658851859155609123708201459442973711206690013572873845475857834527623246766359211942478525549438521003989870797909991576284967253725972238890911096905432173039006282308378974600877622325697156922413750597186811372805090186982011921872667586920330496200603261519256590178704061017682603325427873661869931876181205986243327321779713383350841257896567550541759814680629497567724191876467573314678294394476047370361454078668587174433851737324900293493963425322186288052116783200379616720095962585095645283089568194071099205565182853555817854016747087812293170799847239057004732382253957307782779300495289551722155849991492185407379759030848048059330048635216271817110469612705995832208088699468438824719343895221308647791269814963050317079335414613397365565424627571159596010421049028093919728457452981589409432313639777780832268204155696710358370228451232626752897988814594622194185761577020360375273324676549851094165510511057791227035385295637470452535094578604631725776563436383010033621693702402989201296932030763100671713510934894048899288434860737393733816411703036324215860820176300612627169061456609165644020556822281827606603849184048935257159157513688713390952155120409161904348420239204114536014381797232082879627424206944882319802460611460705757004765616157623692737064810335096062821535691054333002171092628590572690071221228142886972016766005782152934676039351931467298397555444642213991757087122126783543696413564868743226737152482497369901795091067596301114150904837270643455468880263074398993098493883649651420600929219295884184989554555291100817087946638433032888666151212089721095793294705859737955450076800955724439204266952443087450829775026380086402388309109056823869154069235459714285649623780764415794083611091669922356379931208078184121627024476155894284210311416380178870604050247605926436668822078884777070162620124199741758829493154667845200134819801545448105280857475292941917240964149041316080958401655925848233794387518551119044694024825142450565354869094978862652352962856685679518840653003232686994471373601069669749961872650963129429459977471206221053916172760137044977628678232198538699890752078446653503415424762574220781769158619310742782910190354085065281783504480306744626952028370534877021091370022815058092827333523247634568473956099668865485816689561078007500578046411263035013446339970661240513771529658772603571878442752550536451486015924737173503962345029333659881966723330026078758309035840400494497338488220753190317405228172376751048819420705464338449828465030982288453130564715799622112946324940483077133238722008970446561555926022294345571895466880480640370181172911571102770336705725500823529201797873925578022435558697654558100797194849592723104857112953291455329481267437750146662658483577356541090993404465104850997368966503928662246347789571402648782922402863368152529421129750540548278969611122038183306486810569718721812285037162107398253477264200062567377702582193570030173153114073753050154358387245172972393808959406385808724019744280234615925690581000490772970337557378716538968430309676808350845579442782465455732169988487793334017574004916574404233773916215685412254849636216352544093876397846136364418918682044304156751158561259605738597461543008646499030694428731467829536957617611835062596830319333936014987716237660264819478822920821338895696063237421117953431290781195568318198372526978237074380641076190441286543086173784202559715751102308932812743497303967626011262728519829295550925644392002618065037396057248202540952700784699065912407268650901574748988458638298253177223471118572686310280003961685773301341355681972199195538153997852764240302292343202706400057241776179123227348443492355449438739872212290430396438658292509887551084969498660192393174759163662275178284021507632677761449429117850627177080129235633426889133197414736647990885540406041915315449633987740073024866170208307354552771101781701365644545206266436748456893455425127510469844027891632931814205087215433717413815960386860729499446092286782152143588000968278176444347803848970064821053476386377008972869861121921720448364684150729491496968588620749776032988003914348073632897821062497012045366724871536106594062762141700272658645383792303274588895661361092160613247685509245900036892270114836579047814435746907392492436502325675038930199202707843737976270061407679829762802811469957155195483769594296361529094609680375581733543501816046938984460019764217966462302533517056906113102550170025847798802148746632410211042315342586485804734261729596724178793126924615853659655413916913405040735641140096436046651689473720163107324532670741257270909452127206903741997627416320823797556743094179899715242619833158670472126422637065075756019399708455498473942415715192277234462986587945486706302550179272378887982535329571816273463126173831881460905314202355069372105766245498552071034429545550740051651601352206904518910638502469752265828505801417429480768053975889061226226226945720373922636245789324035907797805807553041631720826964107701713565991056104453103633658125514066585377580944708010168210786347647214359007580313472884698806071902376000850764036245274550213828471907550572645866882743899467423962823552696343753782443918836366840053185828573502223647669135762178738218674854780415179915528167447414390845291649223832662212640910504899767897316969282782077191249233987168559343400470664064629031486542409423234804710355815469057378489834685156590081664109822452260470491995201110031187636040039744943825253075161585806189680821694695480777698109792518248932256620385174840781616586887208895424891296648044672193016444417349000106601453409846547517764081212718224090189404705347722321344254030669041462910495330642994403179069331087895023103651179873340490246437744626670522134768105182857958401930726827317007102326865830532144337923825919227759589333573547104098368087445819464667028318307047458023886542777302959123495879624735359555325104951883476502754351592089952978393807515776600965790090354061001680928847210654976567087897933378475982116296828651372223456592632546501299981991206543329536511408456254904708451124285245911241896619197589898745539766687960645927693861045756727376089107905471866649883053944470365943741328615128165487744468833399857439782983088548099181124990055824010272229323999495005122999378997270596189811143834733584749561823205380132252149663667300808702396144027981825451237982743313961906706168178851780778191988024993122050135725208095685162614297711142066042110414071076575849753517181032572792891368655525988661328504121732111416970387902956743722402222921031321820193625302159483535393073918535661974950439148519747541717703446457192047063534938773494132607023325468163016423673985254129835032616441217375741682899767487883937577614106569965832953450478773725108175573974086671514316001409367895047623360388993670362075108575565158864460801592838654789367942797448974899768709359395130726144393579095048455352643305800608307294853571702048995011273623391759771276332436232712441142510167269379006087388997635924840462771841000865158534942077308080680871012614719971874189826670125438950552222708574850907640237152066844898963702292532571935706985277466037207094667955932696705532907865128922290475754443339954616282855250098711533579662641149035225701029419863587781781447063493714121149880510588051091556787651050718795423554861246288554316805511452679993910961426640130842832129503462677446165914350222544640192708263547484296369725678734824842828034084273313124937612012292510748961266417964205842742250920857723563414945919319817006566239370483197266427366980031698119089014392465771306805833887080967231532740680219618491355713820829619854663940037749122258928941783820913816797185659503444437950831134940635401117710782563176080788765350285894627896424781141976187928505171355104210082226479708337773932456971538912142196494593377396038035464863714396350681373053275567898070369492793032480888751622414335708772525658275344046452113263980727592094576022016690473607685708458309966068099501860327654657228219673209041151260723074375451482425274966362331632654603079012365490185214564745839501181063286081984391872918213492304269291604244390801089436210968406841632772852825900476163679676686587031014830790065048636638191983394939977582435127014281939792487680459532130923622888568809729309806868521163787463409951213095220716580801220166831098848897213188424572398506860897741673344858574970178356518715583327199791751309848564325125667306643166224747018341721509591537534787547111033614597862040238453581530577284969005930441397679393138614363376336133236203347868138375269681052408547764484812170583608925798177663313867201740111825996279288300127625987256574180888927644112794198061736368501244558313561597476367345978784608270159881459398917310855867310881245414173592591481183377658739753210096765772415982703237128727853882666582636091106472477146406703230002881156944292338930686853679432376480566915355935086213036824779453667101595590009762315530208026563592391263801902702172336784861670622119930334367196120491185740366056170323255820306203113729711895856248371768698600299821791585173952771207579628624732733522909363183599065160923860520270086159760383773910010462098418641451986179532001174615905082590594493933800174834907736019325658289711012375345121101779926725240971861367509760283648884182587327226044031532107933497935703624405855247081542884090193811038278158031661251358117253584055787069766894328597487387986720441640614688557153271154034755500104267504974695368370653903900949157494971752917830440160472410144859018854974474889354822158642360583103793470617799460760245899465836467956363621998842341660837039675597861300745295291750833791480897850800440960162268271814750788743356028074197914058357969886022148194906346285078996735775459990903829448571159685532118006708111577310382610243884558454396421850656779034440760527336652966262968531556055575292541304780665685576654866975908306948479744603629766081897529673606919849853178473006490033026881479959243619356873536860301500523509251142778166070537350621716129651844009894514113869137377070914214499435158586255496580676294741466252340865467045544654375218690695103745574933210828393420330903553115614120736218506593330970089966759070649033827386921297326022089464628597997117099989432756184767657144782631561364741592441956927041478748356824700151702908836024863701855313977090026758915537512799800592113454288167815304693743531993144617144627327924648393065682656148588876315066296112905768681790329222946664376572730472536935924756242136827437999774951301843895504316090912142577812928370869653001406938890657782374007631942904731359805045159143130093592852592051222283914434246698311782433411327173122083787268803048277999057433925590843215166275333088992615656064170007408037494494033894954629329928338933394428846341927076238301265292430705448066978834782990228870029420109167013279483154330616690788035973178201229709694041215763233695378804276808182971175061335774692794407251098583393266430539709971560808154737125710163431228768889634212248238485988940914304961275639428883692539961625397661223775644594349727603835151776834207228285557173142940948831778168758237674314966625542262559712813248916767708650034028664212038906532233178100828278248393666734155094643680578436841005705824220334901831619661169394891652069766690835790186909170729679054113485938356566042783029864331827196891125143442388423755239207385149432640960071307039175161404994504882615424414714423925366829761656389997306325865984406637353576422517714548876795189197771502215806488371722729620009093890720730074506882711469414412213827299686530700484671868268815513366900633114151608605396915121175473003360407518003976961853603852945420763901869966857098142312766766157104594705007522904966841140505887344539325480539943374247290172061078206414479219539890747769739446612299920380429413151831164345686349222929970382741931197238657515598266522789128101836414623794245663104753825337852596400267509919804421864627489320611825333218892870838583185205093471930788573227493328572119060625807061386001502793397226665945331965816112384696036161596411561439108180201148471343556789426290050676897242379676299184045140882839933945605584906252365425861339737584622297964493193234453488414055574363666891158432678374339240087385174447161819658851340958511639091351335196595469150900098791001297009355618618539493718744164029355677661471367448380974269048002440841291728709883100825670152445461235879199056575751285142694895226209275543257633997290016075458255219125024089377582691454340912730073768002767394650766590052397312950584030119282679121688921404130246067573338760057930916531598676900120172358121882594847279299985431942373636866527241656867136399478780586764855938386191245682710517043892216812195631581156821538460818781020781195358656359727884405827533452654849533081398971861482120518131225692978941740157425975649172921501850617302784459506718730092712361034531146394815217083747569660154444419595929532783435537052591410540680755378848836909685154588375657119109487314937519085794236375676074818039283073474575820431641087612050010512098486996236048725662221721533761131544013134149044510620138327863710926588482895502079413407832961373050210421429751808579569124591640731989941953594145322586105949486006233176478783275249467591651805777544441059013869511959471768755066724909049315121650585298160676102152059356887898885096699250079373188563937625849970524782245737639766971737477195596698729905256017101655034547689072585937268326404260840189194671906314561584197913507399395767972474072579623419465804811040654313600337891452538386678773574893993380341061588579069447709886280311796541964517509608762516986076128064286215417891314746973291197443373516626077961995084121450946372018010005029833636311654394593084519228639442718828676414624464986563556503088517441738118314329954466762747068369894639815127092463589250429463575889247708668702200215235812127598569302770692963840638430879861069506727951017246649469009839133964988339443388717894962471172896357198539218404058647800961407803433432585977293876038707667689064525606349964553096716505644794640865439459589764540716931941270984388767787627425279767295363451940117294721163736636778813979057402848701605396323778054797880479772679959621580561207417772744359187547144830559659242313180488371700242529488907370425470655071976501568085409914668129642159682951744209299059627766675212082332469415216779329991655737959042065748051507263946935657215387213265287860507257032731191967888553332636197972958164155683623472912078678109027454021878352799978569028417649424242364163744099612317318657721786409179023454409691795401278928497507377838160818213721206700321230151765309877393759677486921516195303534635394881266118232171246244833984397100120624694632049846194081961126715749475326209797482228750609912768108245361118207007215422904281489358520055767183883980121700722617430904851371633749997584729734634295940632289690845235683301994224358049423639789773703312931193234811819808586916869298436810044358609596205096763896325342019918465241751794008191129960751989717325074030937624401265583734693988972067993377838838094584195831790123315582330469734963835234524656046622099449455941256116911625992668955831307063007116522983233581320324232314938076705315825830996426451166439648030741090892934842828567620149613317568553970780723085194919568151816672596551936002655265797481562884469234284896093603933124077438668142128210281278590426381549300470518150205327988083912928756957767517029685833114349343183046050502381042734985252929267308537855204587928951349400434007979145312333691101327710772803032262707067157636084976609574210682860801956155035830435234481903126143489024657993396568317111738456107347466886400184654525775678465953243285797305917931276710073253059522009970574660022674937050454310622445426063625726951621657950180054733099232567239080384551762143720168538879309997115989933393848473330546891388869292189563671583954262866821135071583806971585110338165269596892127437870361251400738003027133944452552647285283563197868889191043060225703606012278844987122395957070350654086735848540564664769181758038834064248893758231632402080952386920776560750089792296872544853891749779122706771723008142255783166637334331307799407301518211070326056682132468716120505569449715315119263313527925867597103911679056998739691134040619545558972448975543492681813770652039144998696451400813508793797568098567953163018761607315727001768572591904744815984170790149805430310227751953341321685340519132366494132156300544091730204963218850033353712283070869328257071804080267305380700932942676070822133498937432595924559259864900152516133509278972670332130505897381554522438004919079516228098840887603414632717349637320903185559236125575391956071109960146533246580135794359465310498162560240017503944907100271778242274486101405722726068035508809310787907335599615150531417796376711116474669453936767960428905895997843145353818867239938755167867141283755798862106448036554297638730835640306854123336450086970168835844969830054476910296246323203953469854743056057479002456322349009527387156623540033326869001053235022714901621597490104321683571324768761375813357812884567612901849658502094195753172994131336483775850164544947022204358082645212267604703827424816024431052886207102523467159930613780578965576634922015142179429242775789569751497078920239052310313948558704643286606949316086386532041068314106871421320279300930237198231432495174178441508215406391633019402379775824181157332806750855945104335097884356560062654365343905540881520881036277860974864450225527010589831404775513387412799102158865066590072948027035668653029540247167916377364828585359540123412415421534010859075980046288932929299177416603412989474958509372491804433859628570113336795390438036337428024520705179047342216247661093041829044547266591595385284104789493734931081053717732662999812666122227526011961201781123536632114182692906749698965584192484938485706225265702832220088558700940423485356993411339011197888869139855131762475686586685230390444285195021785140161105937934132876185882642751700237841857244279910053383574831832831915243431207451620511354751189727358578020159049173770508818451134974903207319357650340466205711858949240254014077604480901087208086637918769439366395605829502052171667900471362707978139502292299682452437520601817884291115805541692663182423648520156638918568345810973712729734338942685180997160351001598582589846780509710653526702966807958729766715481502106891803370533753623509221022341501314887026105298005528765949979786835946730138896403753664233944019510628741923765683209121281754365176937484018249549199881900928942327724140290454846879506266915324216278385339973590398179709271925318277079611415998305489328525850963016513871673630583052356593842020065191838344994293561557761432722081183078003162098441536179018997846668276823080910478092612097849369742746871339056585191148406284692700220783324113003344695501983799365442939240061256698988422385455207831805068095477772157301774283472233094848853050684508837184432173322370917538224642299908893073045071785849914655832510161098924893021728622512027192908668680428348256483166638281414275002062976217744216248545344176376848632939352979372013351499518532845513489288892143104961614691638927572223260343794665559443308740927555688177111004348216745041600319511134452310322113783630208582666112135106251967175184885858322724994688100100879622999691055934772750298041668292726899462156381481611811015268171794006609325523189144167823110937615466453832170357903615260819593840469086082512800666478601195849996911685545813384794897922786071709880056334394389234521629909182594591746585479024331509078694793361388088142189759625101498265879011760989965098433545966862301841131606385983581880797993370712587958240145817254357081618314630410331447587455604916772502138122298398027664168058551394761168768804477809225558328449630649961284758606212311323650435969042737836458904385709942608888280615136914660246918236396120635783932579004052142737024221244804726909185958988261728649134183086741551360217122400202525438708878412586714354890873424338143636031041655768375813407395636763812542767341144707086883872137151264157848229346197734172765675514644269782340478073078861424601189290841648160084446150662778761895991137311605275825817561421165747667484874232702923502526473331810222172154497998858775827249546026234699186005711169583876529409499448033284822682730667198575815288139188749453727571364766392214514146184882551310064012437585750765121832956789973241843912985215364144167605359531992266035072527994433108117121360616754673860590704484419073704707352984060819176901356241270300766243082735687599960804916835056759754263734899759503594770772447414909800130029207339298495268356414512466077850462000794823661162257438380792257635954409344793796409678507876449693896080168842988921977548966943016494884657876731354743177068932233728891817875165381920630340763641397398711652683835154671958441751014380436145132194788367582552958268186371101635508589445669668543597096510387550930071571769062944232544396787862996052571274237330853114764952433566578692239125817284549454170910586567537351426061192166415708141613859310829487763111069921002948942085364976470671560759661586330125092137327142523295134902170824018244800683816064835649484684070692088334945933145866251783339688462235813138112021979437244571076357814350810431881894078754293621334251002488037316043655324573379146207469738249116846852769385402146347070947836543987523125682213196801602649447496158553889750449689355604427515881162709901174098946834814757706912027513063966822228596435008523284821358140230050640736004443885430606548559373515096824097161630884432003981764428648637391664440279702164226695222586979587054217669847206447374456764678860629045826330796434624158822916965248765723945557526866079274428809289245644773554731812844234461254464365306955785872067260218278168362138542744699185699944725022288800525246514974831705921067399977813522251029273452017422438122669462788630231582054418547099363865081964287517559713902965081686064869419849720362811472169086839196728909305902940099415997725263168736949461336181999717865467999086339093674614599771849748702221816327826297194737646930639758246609523630708251113103202623498609395113835864063572819705995322788031771347317559227425414127306671535462046150564677675670585525555251979866719510352625845524916343070878375924268594255232761618266335388377676981167302707420730443521283847270514589193822382055048460378183790548688002369072814406098992569982780796082702881867290507926830824529762159735665957976343530805995538725629420749729404571534334094006258410637816743202955768413142854690942978354112802401680815251286809013936352926531837656878993101005782573396982989846004699996327557183514650371407855398980332245851502295463929443304571244243314463827819181977638533098001450714547132067650707702918270597407790799 +precision: 55277 +subtract5 subtract 264803722280347411937739070614555615164049671659269743861538065774373882485492222086323973852693898814830398561340055508049253361658838737449611057581395233967906280044051436943581832306124343499787818221404087714084315602342643152259539757579994595040427416918622472909863340120247491069666876411522322877788262505156340784420439269768108483510233835558629373522386732856381110027468460058486583709235370925439760361273399857090046142196898495074438273479555578926394371537219941826959797877868280574266829111261341073587203631851550272201975664427817228312036084991269538125501098569856429420912484729012706815888090937285337319693252055526464083138262109682839955791280135695916000064733942553954242804810763258209235964764632962318216980418995959608851479961086787395757647031393072113155935186979889435344266578622822219009776856868683891443562824470667265048881973750365702484298867954064059525672100606971083353412032001742262658244691453690209695490404869379212940233288267507660408578716479648379637553089914535262176447243714194694886321972660557481765755729277676622904760625063271439157248336034982778081004447795521814453920207676427505512385371055988538797869515994021174194916043555052176310626327958547134821369262077537811188016035581271784882397767443801679684610542080440580665947192169393511341278661417946920224165564596634758167963439365390752731258541921282250989488083754855066423876384204878231962012389979453574663450157014668180703887032947113419349776351889562079289133492180830151893231702897254496098504070375053564534734985029485916255387658098983940085543752669733281098646302076806998226728151644925755336390769761562090479020660021560682265222283084722990636840193969989029224565771309534579669427459535265088154324484791478607560950107246177368458624933402936588912726348019818659837294322939463940819272413959892066198199148371494682628459175592760930177505635425791538186906093684987792690859740406573307526290238999916421559291232694297348161690409688520532084472834486797341533423729271142107522789939773811298720816528087725305249379085754271769895288759998504790229254315080567323487960129056360357342367049316085835295276861894343371387930655271038051215201936849747956860386757393874462613468072662834408749185635132864583363080300360172468351311709057838121154277052247592486336188376733338700361225241827452172010061232225029173189553847235224018831096935837783539977861164299133153478701932016873630583504524071553136365408624139491534314961501678308294691906609187600806463169768947168674831725800906438908421517357800315690929429763231410492719050928739204054759573366828425673701138509378835821388408888875311857528466394731948863323950805868617000191913104127980933368945493440964570641448476486451527888944385138903517109611631085995903160734633160862808062075045041352087255676508291603152368787372042101471065669973622717569838044511560702231330855788208578188770754576445852345988723506070614532905019706276849542874882212779877202177296365965691473948847305212092340916267681041708230163760807681221393444327449806149169058823836345852420164944087509197345400132715996898934101942721799676115497090519328303015814066513455739340369738719866157179735125853489261642700245849517194977729866234679199344384681254600874935038028913665633202363245274555412613894336971985584951528215149081733639185166421787025345690769144122933141665693396402174014365235747517065836172864257569805075428264041843560998950225499363921632967034973106683594613638604680951142422305073762959935156507745675851501083152366494536503547670961930579199758781063809639853862815992798701124131840367540810067201621948501857356220122640721064540070906545479270826922511039457921171170436572981472470434201734761814220657815786859213470757307544297134658458957258705910497029441696648112957808620489282528374899225585157806039893920787600652756193244845999027920944184086372895064652781280625370361691400915092535350975764097307870758506446687108935463653533269706552937361913832221947552375731214973372289770397264166740808085871183011836175154401970554481124350229502283146050183486697391723519818460431667767868325762946022581301773580388748689149594643707094451605073101860966996720671064908831686443577892363824140439367083614408016954032587809841840796498393045320894988746658498805251279477437786492246878437778413346030981035171037960364830705542353012011605667322604511265052674128180207920597279256566026925670089990105963666342795814097579867885988931926093007171739164631425628781514630715877075671072774766576950678043993487102872140308099945401216511339527320071323144393339573558296606870625657760422724403139892011934086814484009238170190534660147641155540358630688766021404913792453793276283463802566974879438598230670657157937412715853967325238519754326867570538507668983861480346607192810235951340289067594415285671382749188338931114315562704497698039669170795135186538989520277280616524998139587806812412342137131170803362331600763786453617886874317170790669735853735086705855769565651681628059990506945702859972139254909616693723915151135662500949542696249533912911618349459934389664579871318313292388584848267267119228813506192669454527425160214548232568541944838132198280988269963001687278453491027705669541172943342477948666090153363479080155160451620554913615982618372447191262529207276108047258171891266996708605636527802413429651582452544484108069422941777353410752846429783305221105638623415634340333283057785836361020910489111476409718645136810997208257251603482017128025888305198102256833736478683899249975761831450166780551879583217310744275113066290039292817166230577745575023960625162970741022167293303998352049206721087299860818281198326456483132611110308483722591362354433560120148563552397364358645374616156763856795911544423890948137107298867336936597913321264947369497798423746394189261421657372067017941503716950323951928415948241251306412966936736146502492254401552037806671136553107435042937404538924961903583880520714826072009321172086555142815343935666997380748153906937268734046322123583887802611384234533371835826319968620037966353958844502154570724148065834248469698886979518636583942439964678667965762891761529635350515380073699510308162857779107921549338234735832816270185771616590474623282933516061814970895600169196824845461818382648008639284502758453678092646013887813315837382382099918500219127039395607847422682131497771171424130481693834555225264052431755858722821904881260594755880323492978723953097824860598243296896746208266162926189422138165444479672395887316200722000882190062216095277985165866413459772406221560959855444197746874695919401299534455910489055835970051032932926036876130037658633819955893088592557276156288714586434535884712528741161253586787416689442177300144804397925366787758721762975300234586910239324269796595045081180377350230326261568087206857911187058815202686037487164948336529370429263240673120493330232374930525533501472161740849248442831237577541453903054504472077098067404369309195263900329744977084623362074849641621557927267229364834928585393270841624969341083558083319159757823293089044733501083011503487901951719395512602090130767786156299294973313661022636610598277252793543201189260417640456075242637361361223420493188365954964173084144627800360285521711322853575234719388682565121941077247021095310954604260212836542689428691031742339961529725464582171730187117643473323159004021579583899178738701494510279535696806411767322228079139012546497161212919658087058587863552515093150634303228397197841342201582850994717876983948797730159850617934516723666091140667357244220737208534041379132295271493990296314303423620076343304730695208053805852375629008035934313741664663593142706274514670292187556740990512769648355362289781101751305799226642720874483212069216966557129109672057299728608624781363355573130640143779207807241161374189562570796078311473777766378547119560470933517362161366265213264557999978207374500057039742894550684873955781108212590082729572270198319291756904502135041039855109049472600795076984203190644474775253480151635679474327659903385179597537874205836434927586124864860781748747385141139304380579529904657236078045709992052885432021273450915516083202773981815129071914012601528204973339405478386035638789279171660270768728617216670687554241461331498820504331265621500061152302187897855469808113543995975659168038576703704641638094121698298995637926432872115477968680749657413786425148951920264487144282545432958590717448336589466853132566977166936175868610872098699375678993924589733573194004256712926561426247069918181695879865158942668078592803250723950864668260811307370882153247934119077329017193496988874518689380050112492204468380427987868367392624723270066474450842757637546959443010937297929659435764748514553116561470752352882755340793202156740167955764331077569305991044388266317506825574445361995321111853124186687842480659577155435007713932261692149879733295784174672573325517767282316044581707272450130759008223781202702307004450777238618187854549995475175260545678388692231767011051473172772148444859615921518634248201042774974804699535348045363520679243385410999646184700279265900404482564725441818091465340685928471892228233834531896101458311835569964697435275903375475764106987859192104000113484682054877141112730001803580300454589707556947749493815191419815823361876447605654462829103296368606684016266770492160778288024377006804984268751171201719653517571254434267803855090871348331272650767765964736913965162061334651411382470821398362145814934012149494347035110332827202844614960010327756119717638193856581012253340840483661422564033041742047919250737451434935036244724358381065342379222473157948204592879673761464385612284484291878667133539788336274921279544964367365806419023889548922762267400734887136821622835677021962150433901017542585990368416866222966693748638825862199363870513663966541243526823285833564926887445866592830817244072885646404991843546108950539543762094284079288950225524928057064009874685138636549149939666533338190094716196399165104027046034896280330684755965799703286889240240075702325474756122878074536497798755214032793441450445078366103520753374440397758336374701299305199959439881458355189595097439431243413986983892743168900415539956971339053839794509091356156127024477243641144988192441221828840777292940857011240703588111373622199165883077091338949316636492082891443388234836973654101060069783532767214701225425705377834539473076921601767365534589055370429357873415979664900848107803847651829860651650071287990686009384189538838124390083024686028325481187426633821685092280805430036773189572868229175785641961996270161829846473344567625861937501117364529594228672441563545378540201058303274898543089589115437958263675218033958468481731519583332707902836192981166879285880238489708319014191088102261287018748212602459471880424414561158402259033044447125884215864721577286138175737404722388530045455211893849929959938316941863420097510233974762692461424684313050734276153915039184331042536920029031508965587976179999706625700691954824913769627501764911770719008234027406569590348587746671343944566401047117338268772308669206942689908515125404365384904967931868586205641188883033792308579383011159762072458545388679559385408348834699440044403369668830848585261704647455534261872749540928107158410466003973280441077313733762033364500865012269916775075615440629756631429688802298433260428055452841226348071556262866073020018196761297184847746255775550694411029830014078835600438356765687802388239946695106126307014361984172256403066558621318632060646355048263774791936059367775303473155024128761659924626236746085871184873833576019077854080497835846080472403134998457369424474152442584984124204904620167544023701242896603953427718261973230694507452172958796629551284791168330254140729441027817426822107842494216185474446202686807011616710046006467398770249991948607405888070099330742586342078426017491071014791627119139917530832401809780675596232379023219189408880656303242907507817706571132431965759723299408413575574539635019284271995435857519024967593284878559041669100230774627564780815437243898307514748573414990374197229697144768104460697879753462153591101114341744602119423820184141845615098806975949721827567431084990480176346986747587001150581241031576803129281090018116566357970715108269180828592626379452511040460263900419154134541620540635897263258875348769054538864423336491994462347869782836848989894481621077581463638002411340016511737408340489321315482586490059905057191175704235753708541699208169169612879929407280693537115684311247433717553036675726975915139393687933740763354695842020041207260528787955116931013872241679583221758702394267262946613486925498317249791505092936353779604518119507082176502906208036788694211226787754936390940444206010627553126346001476012258663046072847919928763978557780305911604889788971620069466726862645614476240008742433066102920513894210040463152270943854203900319127704811931161018966184604203227063190381838985055852385425056095983278329183946455244558449002626873479849179576395900619199843507415214153870390514501239791586483660121829381410953563756996176101955011243101958836442808976563502934976882869421365630163341280320179083524742062049958020869565597544834609864345982903468570198086221570163972235137516301590265697588789872588983050592051820727642039893828442577943472611464025978394053200094711024702179866509916742435402749489225137625891589502123397685724501110682982183706278878230043044114600028120317038442496156941126513577091925270801465070543575971016673941162477753368460608245384825244006649407691805289815213913107003022181176003831717364753754949674534574324241587599236533051578451291163787333000300485662355672890789538704686619833029717265960008815730188374930217319063209160979111524502636964284076971829527296487851197888408213346347718749106068534825308015924140396668514202104054149534813770684083714556544664525048120395116445613244557079201838145729420489568560316914381723789360835242289060693547542749433950269123406993474504579562472056159661641970290571170493703281100185061468256445614840045125621773396099663101086244244745797740524015528187539576353844851202253270756686559672841294927510498668224066067154054354534812970265018881478729141362538789851254214640579421493518186999400941786697136673203986650645112329348843274517389721468994424595686900658893161655906638308097329482725853887278132976661491955356840052430287495883540416809986655974944337792150055914692387918834682418642005858940182644436593280921758779967472616506416436734017984267757567528483898159947594256547700765717841827834595191383944757884302094580600985755618988950 710693140663734259826900493051523821831633890333096865633826897656875816548373657378209860681743056689541516572051514749144925600669294848127710508205822819583651438402637200707866477035240786144644857031966942158135787731978677017105311180792607664698719572714020708084505956428879705823218799851567435311246814334377903004051382847481407221847338900215022448231795771461089918572361747304925645588965183406307344811004791395074662470277588197123623612466481159112068887805528473373867814007728522515118311919532892790900776224141997714775379720230834423682859515680819430187665726008599885857108714719099455860313205155719798133883603378036547932787810206376579559984244060230420728279816540040330814465712777448637062406008478885860898193340307402395291372839795493518094840371533293976698066601041420206349383001678345944962600497463380311478959073082725478604954039648419201177127766068798063900319430098610156702005370359350229186770933224839348394200150301651897252293363297502812075846382616924843143207790518489566412584424484624573177923859549594993871452761627265468407210320789309184355883071909170048562566214131672027825599184851301032358324690357189134982454355230828430265171113784298198456340360185727879560729617482229569566864605919427577772100237136269489414752203175479849916937488856118766765575511271014001844883944853334903922449894483965888355292248074723167431385201912184543387152311932932722771457121933253327727104188860654687718655152960732167047612829249106398746917650699534524842462242290448301788910992711697893472614919203366291507036702034630335931498184847956475815121847050739038425694718971463321263787442472870193662528710215429448999880916326529999767117466544360864193251843407065670155757992614908226499154385306706338729652552790956898479070182099384032944099275070052505365816001477379136246113045882861721083686985805173401879988956686445573534511660318061636024169637504679186362098293357340772935579191078107896652114499992425115288869583737531359458383437304141859840074971159378924599744240546905942564965119373831962378551485938998365758725181237619998075167326131347868558082646187364554385283198987217240076068430024861714800982050896060777106895708332667090550334391658820758880738754059478819970812886840434882756320206297035557083979524336742719197815771587449834111259468365047506183137184366676805139792238021424428951726666635319864666361516013236334391253166099560240481445749532496765084637225598651177056374742925963111813324575805104778767048865057261947564320028399818647960433886961200849563538203600161456568387688342287934935096206529579452285938411123326233566292046669201014326581524792892916107096981875111344598373454345477056818230687350836290071641183982771129885645286925193274898799688968739291535614572910598192655311899123348011621361347307851116900346455816194691177302385103669177467312239190177553266955850745102423572918328283341018100409221318838923379465069653774439248792305321856534294914867601487244545006200225332219033130042859224204385376325886768764732785090926466229956207647567141045903778814461301879263575076454920938192914021539706473376725259293152763282790999818784926832675374615601126195031154554457749433758637422417537515495326802920361930991618435887796235513507961011320834771822479015701764929745400985076412039772453839779245672478475657358362123840954069184275263288994273880310717587635506893291921986006443176712020747308513709889590239352711419473044062227760149187089429580820978712893915953366801918745000717327059793626029792729381072819166767235032083844731418434718473422737008224283092229885885524544272866157168468606226659044830302514964496742543611133397177213033322743203881204591640410151444896903072992802713543121496493168893255174633633622256995627011082656012566292887434986406138723560921683776283605369218818025111384251212226795089364288598465754546273504080442673211791371875172409808496447499167201119791331376310005786189376744158838774285040928244286735599339285757290904272296309765308601996894347637334843960027874751320688632497530112508968752389665404550167689630009775485203227297831967513419195644139437714105150516991305386212906813578026449344449465784642625200714668531996134447043982436242825969917108101945937780634841502315020962881503458036238713469811772395278784916580490453281603220127998586592580725719982053343023086619805152082021675249887256820761331215800770540839041871261436630724484811020870222733081598416017364656107929376364811031649825025737909857488740097360040587331104899396124477533541820425620502138795737978571818516132392549541644478619807776081285580367799530162528896497878099220737555508427550902451362151134805753708741620376940288747392821618173704249331254142328560039541547644864811602505589360712319925616263818475200051373477719903447970478551744978424026899469842446420646971592313202998787560135262130462510528339377772836929516030142520638130112029596871137347387074187436088788316665006125847004360332013540572276159785037850296804769039339005237484697097120186897495490165745710875313403703546126071066578646952491611585125457820491386213606124016291821840833193873119360035462383162221055083587622785728766020568190328799979977147206703949687336781251056136310185869654507526216828138197085556691328432713302405349578922512229458473316099858202097651182959956732556364433155602753519389698646335673112053435115029238269644648803297770488622572666914482220217599003153329098760180883562094208745056251065119229625456849112163259376156490114745964735513932246550546644410786873909245324401800898902203459418234897233337933750640329791442275678309322818853612722044884779564749589807114174334498567617064242046413877153829296161733208330078823965372629194385759483605805184341549776832443784939398903319369711881772272916425885356558394078337554611034980385637301636369564925785143964856235881325822139159669880319155545757710222750934203861606642960783194957458158210571846157608128665070857684406766666383039684304566535327253892271054723350382219162270328976711267059782612870237885167898123904229939450305306739609374696764032713929549717141643348027967951084355616920375717825104271765914292889563573411732074246430043729820566791672088114451939514381805949962594852062847891213975806063794485573954931715082405848810341232549379979665247446437059601241087342748820547175921385502840061563587170868950017662831002903986800511775565578937559265473237314588073655731553508699038158702736906533219265073837355308832026775309395913104505849141616100584425892204847650909156823526686209444968873551922176917019915074653460910837924872400896984831645917607430798015533015262566833575041808064749144158372301219393973984057862924069994440215754697201217951271395857187372755029146680360838219193420585176044363347206671264098820011348065770828850052056157231699013296665672005666204812883908440455833213177396568196726088591768468302985020046332500743906292837109833038622003244737371726398641756425194783219218728368058943358605069575638004687326202693920471291437085336834312423439792513717417759734004173514432269824090827580910042881137636466197850392727384229510994102197728391371710275971330783832125224222175267284588503352415510625240357877887078938238236015495273021344493963737236052998924342681805984230990729718935772512121806243898081266212935423821575076662527183553785545971401851660408596750465481050901842264049078706768996478584072736251024765043286122107623430138783315905437511126449080107253361694266774059286456655841972052748901830634899426494639402792862622029410012778394962945799159686609757801038862674331410399454078252946929042334743678307202234129543189525047728346396127425785703057083790631893069633010252588826616870987658970238354722361871585137507869174695319530785912536282396939835111057885329862409734996937942598303878705329312332915943755552583742790600324723603696772465533452636808432714394398292888991948606574246760285216469186616391050002972810338030823454042006949549286224920190574884395086124642161070861173961005500975553897683973411400813173730074616924318878187189002160741892177323372923467880979944112728392297384113149043465123725697125747189804183810643611191220347347087131545636805116950453366776116163802137450618348654461299527792400478482436750236860867781921782403942074279419013227088595278044040955652439060976833274376345739271668545754450605780838208428230412216704148857549956926362427660604062425017797424561528626655990875379335344999443363726840680839021824028610813378881081881180257909755294568764879436728696530999512115322076373902508887991977570836634137615450959242537013609488499246888372557499429404524566063460196402797712985999474575485809848995615718844471003636264083654788166110385740437797537111244968962710921999214192106127052867847305598377507632849015102005378742867716640875325264265227057440470031640830151628885481335279132859311915296284029743911530765284123614227327897339844071892961066104037913417877711808791748353325429376427408532006143617195685897415594499689881085238750023219423869070144743510282509187792701633163303244437890206234148770807738053013811871021712523975729324069183541486888391724482496446888575004919185882721143461993716428563662487423951781618729511737807101113701633176988469978175086426576750853400897578112685301829212827473153921936876662349802200546899738236737501350459770686173893782282358820730392035035760454335496932350287261688237837664018940645529273781920769799751478577765948907510017180178900300651721548304146397088063276272070437018273774095344686441802793533653535293206828058394357261832733754525604639730479736298680434307729992154786556637007261276441364682075129149935300646344756453816884396653485917504566222413344309787917411037719963669136908504913600238308947509393581450516350265377147088727255845436611718666975783770923548595109434116626464798582646637022067426029916803454851321813134128394721098094911912983162033850156043953379544760313243985513886225385645820004552435262493651795814144600763218612227613289249148338867515273568967253092157554935144384617715483514908964265341099768585550777107877646610112033281198403116762077332556582390400570407072475239490075135575029312714487587472888191304083676490460116027108606737633785451436916002778548334177595660689366343710803488447037095503486897714308265071472117039649152599895867609161200478726345179086759985022999175486755119725419903549535346819514986416907400456786975456651978728400792552895239066326870723832769862655921942012264951744993013124364637558347172627192844722516565415707431338447443722625064983072559973062752876424567807769245477805942862971455529408652369478916699293929451639442731910358336163100108960760221769701113656354968007519595457132367508141124775052359716647774016879252867993496040059115334004715200582986814304956569838557770206161051201086554771824871903045408195363421762301654225258738617797614610228406288361144315980112687034967983112905168630530447165920595204903588069341678739601630779394095011766538801486844779501418315905452677852153109567540618067978708613338081452603070742580086492162132707257958234341463251525662520117959487665797240330459831559417256457883551629707420163780112830753791176382535993752908506060524561905470480758679108646282532106693926266223388000163576418951568444282142020758089050197842023703725666643568987432215710848048321301782533128147389007744030822447484981896496221090680930165007050875147179492172271824183806993866711047765770545041598699651245952557395364063597737434535140456417724520359013209789368465923379560593483791577977102145484190140083805541312667053640578132303445563728951868644662617744573500929550750350641467193925585429723414428931784464502401146752086489516702958475179184021920550664061351838309715911267469831039705727853719592963231896117361948637571252064971301611541647970480083021299750975589744203825939389940217259879105723964790073494682704090245097630996138895105273358982093250547574059368272753265389077290604321791175041485923013885499798824290887184706362835469391501808397359187187492406860978026665209834162682142962283308660884092106848992032415871898398778460081652335206929596370871500355059040116166898643661036407156196032053680829886961777552072641631027601120442064917536346703079569172726923513173799460112010117245681087729557065860774211303181261873462260171456497102139703795081953092811745990354727704042949085195673663079631365217187119172414719359419150884399669430717929016458858976702879487979162256179065199978759847371837694124496576204887528757984869553634906779461645673790824656782350642059589471550495116575498910818180777502753090862759033390702354375831310132048195090414710781884292324477893602789448288066102287091667407494787599122206022211947694390286285322350879798218183904585915810832901094244054016326281586363045319716901476364011046290977099238841659979583748173065901769779040081417009803410638716942847955541717857061905894674692058400255021821258645372695016979057095098381356848563661420486782569523267718733059703038728813517747662806046790532754223067214777139449640508582478482105825032804478872100648970610473312903877169049343207097006119158532643802050319307207227839321282335591490818664222811368913318539276394163468787477223411628282080450772433283396777666486987821041742440264061310844669503757835613854553993292611562249258052761100427205179781564768415159859393540904910167332803055129688331733184933490755512631049208509557242004982256754480120380979580670403564924634402771814861911947702767631943549471010674624835629124394295646851581033340120363947672857780303723767730428222685469772835158998492477690237294440856966609834158296396289201299895303652826167513853935615777213871281783510018768526480541031466468002844328776281202350085618901813909885832547347853381022198297531776542493531463313970725141430127207174748715837489628280580992916462704731829610822107324277899518895495440112490463963569305678118449970906133542517971322704916016321846429491306888484410868521816717093069359518320744248492662873616348922236094940005436407455178910683052255450166160422959995125386449778774087643093741817394173911769098844437726953798242521431130413629661790401098320022883408587047429566936555767905224484843908663480120343275268771091460730813506862683183592817032065919670334571544055996471734135470445166144636776495317231989191877870477701413786416643583259372225851076028692147028753826529754354649518162361997202374327512241391652688580782077381413349177772766452624344284788497342169991976842662680679872056724272743094324039051484353723378468723036666804394338628859 -> -445889418383386847889161422436968206667584218673827121772288831882501934062881435291885886829049157874711118010711459241095672239010456110678099450624427585615745158358585763764284644729116442644857038810562854444051472129636033864845771423212613069658292155795398235174642616308632214753551923440045112433458551829221562219630943577713298738337105064656393074709409038604708808544893287246439061879729812480867584449731391537984616328080689702049185338986925580185674516268308531546908016129860241940851482808271551717313572592290447442573404055803017195370823430689549892062164627438743456436196229990086749044425114218434460814190351322510083849649548096693739604192963924534504728215082597486376571660902014190427826441243845923542681212921311442786439892878708706122337193340140221863542131414061530771005116423055523725952823640594696420035396248612058213556072065898053498692828898114734004374647329491639073348593338357607966528526241771149138698709745432272684312060075029995151667267666137276463505654700603954304236137180770429878291601886889037512105697032349588845502449695726037745198634735874187270481561766336150213371678977174873526845939319301200596184584839236807256070255070229246022145714032227180744739360355404691758378848570338155792889702469692467809730141661095039269250990296686725255424296849853067081620718380256700145754486455118575135624033706153440916441897118157329476963275927728054490809444731953799753063654031845986507014768120013618747697836477359544319457784158518704372949230539393193805690406922336644328937879934173880375251649043935646395845954432178223194716475544973932040198966567326537565927396672711308103183508050193868766734658633241807009130277272574371834968686072097531090486330533079643138344829900515227731168702445544779530020445248696447444031372927050233845528521678537915195426840631922969654885487837433678719251529781093684643357006024892270097837263543819691393671238552950767465409288952078191475092823267298127767127179174049010827373910602817344518306651241888236817076954300773094643844148591286106657129172400184726595863436421239115207845913011050780545070122517131004197042916149671131404780791568130518343413051395625022725891693771482919133689947634264946296267270681396644411221627251707570299393239905936863088732667815278904598043538719339857347775071091631708805821911942539224633129731005796395255762172819400095845835264580175452794413392001800427087002743817515623134501132701527098040690966118786471577498363074126796484075142255869661141101150259452649973128708086054761941142020845799845765638957925110877442216045277790375397526365044294900559865153537290365192938172635917581058578630587143162481274422648476860056626317583222855356702695690541806559244196810438741747009855303829835774426002941824602289494577265962485203559286302266499029644669947524591538808515013061567706401642265567459983428911339184400192242062540074762829329654644872986577390741563583159906343772599045006991420032654821610042367709834259640745084282737647131863469108644845060534569024283245244836511880197760991876844954978115449459098630988945723592792781305542807539274782537493476647785700480490481911018608861159861785825292434688300569698632783933155894815249477285725384201125383756688451850832253360136385796742908813382499401684470845572462517702800468254827717457329393923719176957419167043838584494144871340738645024191233332878926686238489377340539156489738708634461326197509150420522818562863838516220054456474137384099255311272415659496439926954367124637118284116877879989666800272698528536173769487855518714641673198584429229413893086823420141025789627658539025037096328445158744374101822546593326270667554051916281370165133719238981008323921600522368511808359682272511077468315420162864949451329876424197055307586976937956964442075447963875155794322840843918799526226445172332874301763635842272509700274476159498489125418476810519628527871077137475800204698796025334241688881505985652392087176105464590753465892786348395377072050348757389577387023522057866937579793287066665449505620661354958106998197908541054320665406483959591998505835574312149052987527876271111951159127935689531805824158124428431805637355014179569523339747671811325069538212295992664933606092967662578854166226824548282433153039662661537845668148916783648620286111329210975843816727881120148814167379689001018171985126254974446539668663238281589498156819950748096412658833950664157374158457885350780232627117932073221550558528061490375879105556817853998745226063111315845409871454029228323349710956591142381627015035923597670471873114915881210014324407296663382741712022071192659536871136075153696080845543574340736418442123980944271093561100464836581658058626800213259911795537977858864757472566668206266580931848431423299604071648938579955445724505907181395778986617071398371231216663518502157353052556306641820249599221204147814899806030641338103666134380843603531117852831413071872997759580261775093951657145861643794246240573878395653697958988994368114443069682333483235671833015469060196390549787305773571620403787009822210919930916146002948915335591544908873036753671734351711950522519901484534511768195263933407548890918168258303605806019957760258035139015008422961417373779563777682819158163984966353273485660248419466537964953633147244897958367598613475854943652666939568443906851909474384473166158894147882861896232906021529600890630921168846702871449887017642192789361693376581594183368812995815702395047201073298255944774655400584488645851903906007772674472986720076430315829989716810165726887623933483492951634118350323876200924152958224867460601036974276045100563747794892987559074143757397456285808762125127777480317203423765215550697346163550622899846356232603018195634265610920053407819982904402216287021082602991774945820933635165617558548419960480757072607241537181961890907447108143268413076946914732164375498187231253932077904239344743286014787701369352241408745388286321605103136803220203589740108954100526245951556967674983394448772111076927119056353001471008363391707977220737659028982435273783663590532394113130336686701643020737919530559358825569075809099558269064104836980336433277860425603800151401128033938061216694172730533421657709012564166565113704778548989679776823235472373267931042290001979514678354762518257560386991958584540740695162488992758966955227199529432983164793821467002620934524191563021527335531333231732562670030081731023712295213041481455865251750850292913943157835209758182580121440213239112011935280567043232986915083710976171620912030004888646928908274633464470114166983707685508717144613693513693605466640177997704977583532111461696941742179562964229633907538165678027090510338416408130801416707901574209483559904331042168460056697684608440497930577729001875962912852405661863413069063112619761024774550214753020689648472701825830970130926089807760818607389610197870953290884876648026138933485415471275138070610089520798999271744551987861390207384425703283468671894169679327127378849909533104158613613627984952275929837684581135993204062072250408248919152598167544376334201650685013756608976735046094079827031377649734514478454880125294098743207945898433418058049253334720185554872430678974078024170862896340267987878996654466585749872281051322188876716693603451714341676070767447086595548425607777858525491026495289293821053376392734392884044920187222024060081389230121473290953277142322046880262680149899968067501968304537039444612997721058042968610883641622102985779424067861216554738268543632470830889258814499770469897907112757915477696909242942244687512686346687254295588554938949401223759659730379059916409157763949523308965991438947611994180323690813896039692412082385761122109914377516117222777445453511598313847222632296680457252971056072358494786994691483250313819355407172724882535382449260548499054161866297798819096071464167938143353372959474272269012833946176484136301532016090475442167501129840292910784574106517207017390665784312660609941790382727608458553255722715192644784089879150719775345613523847084086657983316530725722073746048293937073153270344895019386444672350754074574617027316541624176082739840639732148862392726877070997755131672811693725916353268294560408417238532218015217533035276911977113961297730128163348171446688383692570910575729790928195288905362047277590516782442013127116825329233125469930496959676779892938256570671704101177546847455454967854405336312752443535954491443763531777410507396116918142472364465970811178319401408526202778022276427550972069966923124652931819454291348307986253653042368007338632366810514835119646956379408295309705637268026706168373326308080077089289079490411170229694875568624910715144515950967991934417284998131107182861086578929141268001713366089304640643850868180726304673049022558128407491958569116458851312924896127679349834046430063543024057617112425360891066429963268944115204316283343798349492051730046327565200597619765416550733959736858191958605846945011852758136799442830307095814132215175404804340971114707241521877413056830883071517297205183827488638407912466601578359807947551510495309239734212988002097815257880917210962848737771161553352734545970617229959250287505977718200800959919832254262612356678903460874047151178764558440525188186723316963922426625511624322419058824492064258468174594785971987043296453148084297493882013389465596706316282413833246505831940215721969967009189681482661796886977298090069559190315382242883081062664546432170816889506391368172879564536867955607738416827166383478086111655034363966288502227201269036064260860431657110426690517654377706492585221781280312694809545405494361315519784814503788153204795443491574322053242387612932313398688802668396767603217689516865451008767677622914028548121732206372540198856606925285898368488275452562934249771683290764561286985358959680432973764275008730222504289151687972892804776419900409884628568190589803178965017719749576200833199099559381965675408142284848612147555368150888877954561205818428451487696303369300375249676235706153471214245167777455396649040573717183715947282604493182539164228384328727177389832080179021506543178985716153750232547658318140472411004356893235671635522862028415462772132597142508942215217477377800058831721588045419971318687057348234332744622650665606935752450610609308207795771014586107112348754883396425486699562784858925721881287731831231173732522800403157069708452479374324226824625285109303227217808297950061049741890880430472613745052149451827852030027429102040672313827552684749047587236466219073761481871969912557822726113620602930099678609232865985200559023037424284610277394565257870854395889197430597976792591046578094463201619615868441745606925935179979927915371320753728393336167833367268747047662150697085003735742645174623448424186887554296174526974245489172121226939455002688164765732209021310902731545243320158572253146554310805513323080276835336364977485686696165640685806833376307089760375328778679480672746808308778127169553287651262350654932378629014715491262834878058284874556560376090763421631072768394319811713887717217277736506545186444443824746539977192030321307364668771680405485732473807777822955190017349443108937097866620694588249373282024608357296667522980034245298121479171162031484220727422404956476942491590383239675211939300200823025224417235896741603999535515800219414719722499105217806410917641155745819133422766408263095910012139298629917277587620265848941306780075832744877957802429288220599311373344425154614312639845317165413336671385827041306064322807819075438915291685289261780300992297504976418802474494101369460745567077150421593162450224536464722131653350865399398318955209971965293589199560080296457365091325816870187293193270421058344566626145736847026381561728480517824978356746240427916057579037343744161845627899230752220409920622397281898484445361988545489542379273390276424884500651902631103853294721309662934242082409983690557164633511318186334868375148590140739188193132388263714007107857866074411806730014448970116074585432841002926936306993542089668877028747251540022201651018449642279799323293899827803793800291271033769794406372055162962670511916636419172307945732586163892779631408969238570262280797284436715479532911386745454525256401548083090394339331212576045926979849045306093828736380536520495838501746511102325498559565631594810388344134297133721288419651746216826526953187936525224876948044305913104407721307033160610145241447212170255962756095873106626461485447193262323063119627808846629851099236772929090979342478255013693262750317277494710318366282326771784506441644163060590260406943539529160552842845475865701166016106949831770783449521821854104472540536622874895915689059478383235490144249272107892385104584326217195694415485896591274802115821571685566000754076839314532155276467050581588494652895865946218378027622276278031878289419926028135504921296204455082396256814859500399705240661467621577980188056585344631619516431477229211697869459912376605078642391672532338644728478527475222920838822306633344159038542929461426239772420608092471507876999384085024586163369679760303518905832648214312277956076322386668703372812113651020143273538553571235380146988589995502308597713993727603891538247005708062886917922594416470593844029449741609683004711417989608587350094024725147343154567041256647167197211525822838409491467721841231576050024447093992599164496791449846818691109704635519143529291112745052332515617358350937980042155673178913036461707816403799484350619348850810101690140818890727392314010766013400300878468679662554849579514510126827593907960461609337108543487094522247118305464361266933030339309180382539848558852164116532230308104025354049233156103981097870536302107420041186526449961440556480947478485405606750496613275470623108901553845119885588838941064464446809607547369016528829503718767356946753905862234421013405696539484828598747312487372989515852402096862949111866670991895313436490665001280944963755532872521346259118585053742905486132170098405926879795576082239779944842876160910212585999768537372435792609328371924911744416428251206879846426521898865815039644063431194617170734082190969318232040307792077824438807509652425636407431807585810095933922885389822985130834501070474171333939058729732175367376775878816691525382216841293742046048257578312721915188483730966656909262538333646138595567104810085701177513839909075427310596925245738884643397103310078228832137068815154050641429953856215216378522344573733986356087375831809041089372717202690961676473839662261599327679578560368468572058747216095299860318601445876561266350015890326300520739774641508078682715086423324355958554901266489443860100408965494166628456065818638719639909 +precision: 49120 +subtract6 subtract 894651164574901710577730447795361125508236242345462524018680682455657668709253255051441163764627506953834422382420279288110785743916891439249890692204269214530579773152327926330898954457690274771514832220278023753695700499392856443255223404632471562230638117772548699319874419073649880049655140291970549610573878214233528034137622316707631192491601242486458793822187994104845810495667785642913849444910050805976868716762995615362386272666479931588219774250090302633281666386328894637523966510886311465888405387232407319074507603773318594109807016963909530032136094090667678477718820117158422440870948152477969507860675062769299408243794807374558215169136241762462481000441928026021111287736722922043007353803621857921982606493273785772532272006172453384814455312314184073972747932969675227718591727730842087171457817727506973065232998428092601581253048938822010575626695255659648584905394658527977153867606574711865731076407661063035355501022788249564158405879106713393665328709868819021491834301008229474701117878759212755441753031871990590796790522938227384784439861837805584395057432700382195042784779528655496899890923310919571260467972643034306270157505796678804025486290539718943512171171471171969498366975145400637363135290081055825134054343150706259525619319815169495667120866839532784170064365854051126547195844467341237374159440312892253890887834442262557308659881493285073510139650076155633378306237634635463096383744057009983740801002010971286069882351808232472498468104830944886248682119112563721136474210294257793576835585387003512149578369440032634085866384729666330965762632102771333700232136199994540655397542444511797717523834694880722107722091125447070675301239059796299014945404306368741701738343625517128942666128091291277443451343955600376985570582545129718837426056639740893852071859509434105073753492619729085422039921099511374352250220590674347141903588820227479046199758809882327658122709746884931637923190295455534980673310762467070569347230427647254479741271566973303974968174146018525338431644256422344012721473572692668013823704667295444237739763981789340646318324509104588762453482994527247445214674912139402260122125316069584798511233652231519966787691761410563723453204563389856187870036675174428922818686229305134926769724101052667967628015882525878881268895039266508536463675719968162919325012055331977864837350229263638902334314181815752705966120740050137103044023844839806001406579725037317560524294105893913424011448842250734337900026283652554163125272463570031702242053460485273803281591187222866019539954106912694200639436236501892921198031443938959822502122737795806438643559429954149432113178042003015650088699675693619660854414184894187120721528994334209431332063024176147969528721318869228391745654031239262865195170872865535094747987950584592073716294520410889115399604864909846357677087936769850213104104860545002942803292927936258794318641291383377435065642700701775501661583519818157572531349579118532884246260304553254710459098238673256688044853743221251251113863937615725377688407252520325914798037856599368955735504265944738041492298335734878682462723934697799532899480096971151791151505925404557140806153517416604452063521398214071547767746506840427510948267381763781358079784347240254539548650465488773849190421114308121979480450332197528253514569569009275088892891232414948797935932281071685995255634801145150055673253098852442367402516215171605150372647887966279360005390102020887824640823084973738743302662088356097922785082078478745668671304159657618457231377227834661923939060333890996939257065514905108137003021332367125176258980994481573887836815381647654083295652748970743880546852086603529805158319865979245126952210242505161392780328065932164833672508933601179984524646866562858548073495884110297097155203784363463159135965384042285240398360463713086308563649645871921767127066262566142697586502602089773501738653749540949339480470590815526786582763148018769021166012785842868000920278037259869437696920145139673943120500382609057786371259158161262888987843932124770194264109086610481383241203638032756522977500463113446332397938203527894391973746108187869207033726243493301909470229126735727837611837819419127318375800624218653011511621470190739771795100691253641974727057870757100979413395099648670726521640714633828648635379564462295421340182511755773405367156144867767239923998301978671541363988771441654741116390250009213900815913385100171580377454707123793007999001178735826296006800320285623904683910035929214596727936926640666841489164906865433471755360257093196095582560235552327595305461430707716451128712545174628304974485307575656145756845638865258236418017789829624257437294380395181240000692516393180933210150410903956794204730528722270713951303488139746123860506602151529450221601781705936074931841833311653227103664350019337081194720193647506311229669285791912023354965506860316352561702961922556751402160203377642669028210195737287700667557818880697425042244458002469700903513733467312901690059856234799487427026781788757801728502475021580483355274388899306714545680935136998979258352837098132142301506081581323323868964330994313915300010352916329108040697171432441181859760330403305989270910939619101262471525658910354295201504081524345232726112992901809359613179019832229947224775709905064956363641058337145570291188400663976490418975536089364491896483571918876579151061632963845583261696912237950283234753095395541475991064764464472588326810357694830690351112316255728748835132650112224207065741581121764641451413458495705827599279453083075152518624297135326745659672571505540414230583123652209958672196224245529745240222154233571765753672399814145313162418848781735884209317169257074684307950042543496825282925249301114483546007811736584042395125951115351988207364841390242232458856155137879990545645076601337578429464293504630777979964601343860510119728104417891146984156453847767559867528141742189186639588769294617020218517317577113609807192196199866555343964369252565201777613508005196627549593095864032431803822489468805383300312224812213533642498842220529442652714014352328429608146376376689372140232305925133689767039681078397566863837656315664397821484254163005477299375085951435858505940007168007410020839315518148560519874590341252734702247103135959977788829348732330286362379246867494280338127507237367275707077070716964534281356426307091631951140041231710366658433813558016614152069408242096519114682953330136576254457689867997998544885111407358198128819910653144742627407864080654109790637718824470946750294529025842998327477597252792645505423540491570179431983796950108214523183320491779155323498972185664468310521089047395188852368257150821866540798057179137714837975763284163748617800555613044778762366754161889371064135630772364752646172788384767151624259156949893442037215885178073250645507303324991602334154631492768473431315914355288567938879705068835166107151865261138458404564703362880491414622859989550866809853633221621915680131837500846884868270827136705301120528991865781135225435193848373253490431694803406169453428565343673393274164947485371188113750497592641286942949533656658534552125299338662901895908153307565797738187089938335328586942919993914423666689666350208489451234024469010379911144516042446866739873155023609196711356778604068480771557363130199375916071986866836936678078465410639689938717362896702195586157678982464736968258066186996791286972478995935177024493985185740226837672039583333789913981035281702810269174885973020177495614729828628679747894192934374911583875066898959134757021262269438134065018746858462727409916427029355816820105136046013435634435575467765888711216065173001417052956621659485891145468978336082570677141935755280657206964680710166791820404687176474801127732661947459405947136879298438060447601397103366143708353644693832867150089771216619288316714717340124139712396604206334354726770533797916629189502315076937173971300904932313990739167587637198166945431587929211686885166032130689504495143986393823565192704373332728363281952667887400391574315196845975480944935619973708862074231268866849180466551340185955665550356376727764760617429644642277967634595040955428880550115827616485955754679747808143133296777420798121469885620682987125513879176376037837490743063710316904951536838378560595636938307262458143233311632731263682579014020082433383201277794967578018804597390253633087218866439286388238732652092521340794204815473433334987276055129270131225335885551066475723831853414111586484185347620307047046560223200717592009990997295121979613215537563218956093174131683408223761062305378899924178925298538797193521672759018832742676544829689069168415612341624209711529597606923642333658467383477076406083962941901383784365006240133708576516019357739362067111248301364570201799454010384328045856394916217231592571402307133618769004654307709250630790754020204862851127549660090575148399809533664344134979203626217681046332401219781584636649444439126681655450885936916629685970296312084343220934579846119764131599714852841864697881416172562988409425045066187375609915713753610421251155939586152390665082566366097326560788891000473999216508369636262708552131970927256407218800382090919279008679270758101402132717559940621520491294807113794024897025134276047884124001139878581879933788847345604091875570803568967480953335807502471942426691884853938920258675921454888987154257650137012980540842205414613925954991455725171966223474719524774315306726827970667414496649129204452974052054570107848232362759818466734299977805298357588911475528623899166403574240548125491952727291028757551879430055029050251909761286375092311565074711589171900891542727258686590524754587503162208212317058108080781554274026141407611109685546087740074496655433813114401283160144786927294202072902946008242665821118415290926633247802171784511144377101146843923523926208253013223260862232465275830142159209913599141977816645413805790997048328886080139437984703586944411420799989293787397226258077258397989795624667158785523020103112414717544166890202411669708671606801885473345242396927292386944023850207466341744462011732098737399515672751079193076620776103044759349050546263305263426556705627614447519541750031366576480155345307598792909199223431119641982878891146133615896487630454994162646718559419925783241311961540460350437324097949980067701813315693584035949201341373320964151831851466622844984464627098793689937444007004221186129290185879155467767829168676827939663172422469431439917041069246909871042006585077862805909914356794521107322934596951622899526323103649316557041391090755410836984484380218953758320778602090154029431796942350527101696079703351934624822298808317852822418273430627766241831144428400102042920987592126882197591396996570823077313833392832700507355512986677656753208586013444818506416822938278906255546676477019871017529895110062371132939465501318700085763866581412823831333439737165443000396685437089544529348307104835712804528902787035438335946750264530420874246878175910435421197492783039455821832396670260324384322086439740475412445812549318539776325755040955302493699259688854335771698396302355287139284578440763543894783112105210544996211628424782283575861017047577657924538584922617512315580811970452199525827407749152128357803167439840354422673168701201991476284544936890128629476799668005533907835752395540098520163614714880455200112152174772594080843063952939286765567770139920165472971008734022323023888592387133903716980428606629736619958117810079004741386914679708169416232939211584577244992912546927975547523545686167039769389711373631908669493009005672885826243628321135810452968898336842660558844902934734543081495029860297838754809319862601858209472042048869130422603452130709556865879906346229545356720206019567941112697882370298077692260338645144022955166711960852919573835840103671441649321068425669646287518723103625437847830219421559130392447099121634326511154136262698556514053461680795937222895330179572177855987424193890185496007977940556730207527502307843219912281502906043446409401612207188963382032544409570226405864203930793795002636061933469600020234656787544655213265572948363209664795080245315536878978376780097160138395727833514690607233477677983197628533326735679350124825636997592706688892074468577507673083396142456266333213823775712917173998638175227487162125470192686010461607069193848895709365595953136537496402067169241713056937695885565432556537135474828661963234341185703638648695907539930551066260498302506719747962760239322165041686653964778052083037432322166864020931356675164761489747172823847309914488383869544706526129387887371401258421168614517744820814744934071417794168897394491174489165047883705282753555817471092611929751952032818602081990978966885359267546621887602844050947737909942722003717296408666220960367380991933289146390773655949803654371733640679866955892196665058801206284945429511396642059525222555701304205154070500830847374422341697609452087992706288670373828184769013570147362613423446882679003651796960276443990663216264829032784351170732800676853895057191431449370097683550316534530000597893301470453370568789326685443485423380342653150597603590923591744969645523914079732787908518610993832292014314269041464585021953698444840725579558484641381728916044227784299320397378126188210019326639733382280376051753094554144868692746828395852480005066998702250722780486103293289250438358836131748461871259668870156895658835839014504798082358914831990933921800728968629852878709866579633087920385366270775018915965102469632946705487734406134058031704251975756048102881644803339500988939605020297266161993622152420900193341546540374292740273846128350535226645965764069641814459494124686433178938023325600545778602415302189393270911412766195496571120468479850491045451988236993038842907044172850919581811121321210538694856005352566616613393677873104612258411838401873101521186478539005142099420546483640673758541524774667251242547712248528975246080671247785690579527965142041350122476302805257567686574618650594891673436241979584513511831902711730215609405472582955647248751746113249536324717946882350885637797456048925572239530161807515166444966844555407705955648133348562115020460063749658930315719488788505284283263719559612833285611389187663451097948644239854003922168021610070061663679347561552381588538965638641054594764050601134661830847056988984701798555784236059698918059203050577961086184366806355866806113390811122502806435206586155029714941796045103452156740796370747903285962203524199802487591965091086536935084111554558419207201335615668143285895385809149316089837586663839149902051004962739603330671286499889561062683711153621205725384395783177756469030746811151408601262160953320883660855579008885547897727506151084643023841958104192399361519033921979944555380881522615916759702047183840890565049653372910101630931429262673623361669296287464669885911940124404677733656339437019145891524104776680038476083271581627904577709745646775645089352362178906930117292552455870648904363603862555110076943489862897196336896270549714083160108076433845993729173464783508030592807415876475836582326153038874427667005274997050174298159629601094607621388297215201548655374661960442048786639968386991909207733843999147282766286416028235377483012967470220155145219887486617320649018196505828148095615387501350328702360785969491529865486024906593061460774414736501079157028021129966444314361489709679759852918008025468934180596389699487326991750521843651039951560035655429968561212151722340605561214601010360504122639161207714574715537876699268365074373667702153107909546747992413496953775773015400777159690291467236532799759540989712223965505313913046805617772771634399037978301272992409714503801575838057140428025442904539606240114983285855131095950127199553235292439692170894874233032849311179963005652187626243254292874158024889493712394526285551999103898748884652683106212861504177164588485285406862625727808325125836796533031636044777594178562842050205188454035491350515069756610678387832604568429769213409881298285235930900634901774847189733691400156713899066326546712676605295876505985394606406767116241846922881175589546084076800977562813318005325468900197225409293765809046897439156123944305866030895603480986696794407839382369125539699859176588392884608680262821982756383540238333511924939137805324197141514743292978438372329250611051740404531092529333334902963306363857768740763893671711517351282538879430990687315224633484844796018975431786882898249613394927513496149529710583341363399922431493887798359064545658960511748219810211801886431801690874768849008077809644398172077972288535646687531596126770035190397362254491680939022240855758934781117434342940606373219310051817955835607862031186193200040564081445116615978374608106621373708842158478415704981788084414997677829666914205671224095754564042435053029717553683293192062695908528058331923086561063100820379929323835632789034826709510372934232615891760796167128009154519925423643948482101618961429998251053287838288551939360041899304204553040015003601899948794127290405001089767239074729341145859802075606809974268290095859626974681728289502579254882638646724805654084008910232507400118094452748314741549043666819375624274766739817185440168534901614484415125539816750383052859556158943037655183858540962371690164594799259078305361721150145871299494788874509797016143271116000117337404298447771730792087861503090109671782247609596560591530597137875314842471750476993193741838460048508661468736893757023371116954966732661787343340251926080593936586375082035919282960805458489263748112848645356130863956605845330945086248381782625145842203843968058232159186549447878171900394831434540927264081217374663519553693805311180791624274236015904107379221646650110460613182287057983226738874706959423059509165445114048934211180790322375262828042332160354751378143926301526981566138443498429749784511704234150564761137072032939334959601529383990555831993559275948410672889523519194650880504410573408431318791327947013971361605587154750272237830840502384991328820513133591848925832767783262002121267063003835244417888412012232056644926703470470501570726790819280965261391966613010757548959673731290407068445685967201642316183370341287032945711010408073409395623600343413144052979102839008095509921383003848924710139000994037713010866044865763692842926135616798122319023705467993835245132762554064373258848250403825427917248053003099895708745673096456228445993692264222745762572693990450379976164638580488288682149468129875035180379031862989169621440371150418322307294223751590536876995341524400795606034604515976992829461967523082506540593549081879722798708624648353560987738099633476748868129858090172153777615750159183864437828522096375391873226219632712019439411149830334680052240530430562829394586128098010805087983545283119266398475431837998077799709384785373505717537786449099758199387459177880582996709788288244365308181455669551882983815869663306436586594401697114045090640107319107077401765257418935772427605782705795044590105831726092973767550988641319364871922562646486067241752878320310281872971080048732501964066251219101578973015925238569185581715380643384890663288295768777551064912606183619892234603548178224931609521782481362414831297260623317441225407729909424436457899185305407934285433396067661738872495659477828855178068898737367453220100839776552197528757904838557716775714004322242429929946697656373621290747501209688840622700380816457940291347740386183243117196285959840371509917869036800178057922984845505804807281607776696982915023568555261680299064379188074063369429748087818218698363389655195394574135881963002037528609452933834272210462203608079655984555661602503877395622237215103517940447534725621896875262410539897943155366915701059389635789092023432570722942488485228290667336499877935754776994704604914095765648680681667145440047091989038094254335912233313209847421194523440249384086049948167170832160009885198873001416173851615177813101045961489785549462270935584038256261594353128540947866445092993027992539159401168237605566814314982904144189693373997589216408978282615262073879465015040443381317627969274972478965061854350473644954794311781800649499473486040278321475492256226954098297826373460148954527492187252497825546699932489501635170665146483961438912564271543497730573477626651908618951257214791988998280016330425505802981424287440246829830737640944781094249539580188509739453145863161659232432574357415506495907607528299082593481810925602169049013297982031667055377407110985745504071240340113226909394726962207262492559695618262447743550247640211207185208609328921472285284603000191324281749968130052124856977809308901163227155268325620864710586812739461985428958383308672557099969340266199552174832585372641004399427424074872673611088875837533081145705012551146238119781486822028543587841515096421108649229056054930615220885237608244457720393603763378470879662969431904403702036779936810436858813136759571627745160226106386035068832713332739803843948754538169006230908617367365510448324226209442956439616106984035924594598702003997223727964203882722614888278030394801232845622177893507456582096403961893070085086427955661091817774142319901722362036435090272109190827755114277141815512256758692749300764244435344729855153370036002613469806547200453988295238867951450882465808869771547349251743009883408546880633423993645075944702850312110077146379311440091634847594549596823222712941292987619194454554089201081754709305335281279675517089124648007986693478916525461315739787042243448959898254659750154632161554679954429883356745970729946590010710574073843945390618806679044449893455208268579745452528614762589473022837982745186148096626144436334626596244072990035697660127118374890477599322312969948699962220800560867129834645866691959815350133746116438303275757354424818744376320700630225916014009496055457953169555981883076138509662670128501711537358822248449588583954148042719733121857631599748728295743196342605609543255688056834115369611262541329326353732783866884323923367223960041365540152624535641583967501777846046366103715877931258931938706907355149084644212231257757152443246632658559520780749290277311309328583370161903570733360832196038551529578190084221900015140563016084187092602199209100152421287195438373601070067643225131471974547753239317091505634955566475150598595581113015243953601357959580376255766780086420174806850529002149520588659325148862367971488730276594243057047132020086531745400434996526524290586347531823136347591285103501382976324190271724537965598698626755053456902830128881024148082501339544310270661014266554655041182845212501090106367017242511973753795414397005246724724011332820236342168403165659787470219712565636062061412881165867105111234508069503832675908223889313908058347445335996880655795723644967729201083943046500421638663787307462448301626523908869959660757188811826428487006009958095689452134427625714514824279596676847538299180319373071369489147165899791001029434403840490571310999541927964279753007901319403016874887360363360979634217743880557423974738988965828789306160753347995649941415184041357580136643680281311972752580324926165852635113245469162666899893656997456230913958387452230290661335407240974700731325823141474103798658647427486986258510623562922120578392555556334231204035884705385738828392025298092883264193833378801497644589981546131972090294790678656383165224143348844017435643140289587990160193611203162865529749621371576873538529893482224383521381820487964395632355894252802240147331441517699790244674321311391154822777125423182779315320406078017806226585334367711417040972089036637072068326237956229519018807069190901421120336762215170929976323876928936107519991001741998360676055685422037975506141017344416392404969092115742911664870142395307604063985100562908197054966019510929707070633596123748411468484289552850182281365071949668501961468939761531503180117810310511180094055354665888573142384963819007387369610944561322170467262550864043156985231244399782687361349637189690323909183692348328250352092982623862624713227183593418186518988132724198335194071513028729174068013165809225828196739428856276443354285043738019812222426079954692544871868773626138349027437932197123285656307811393898686360584014616538237446598482058291711446884275876682487428288670375241500995529047035077702474409721301265122287826565126550738923310817588219908813266213026831446255098615859039223902160139055450643534470454293587869457576745220650044878442939455722523621497170821021079839068825925770966001864583852194995761493143531489323551314614487989207429002111273141547725352000556720313221763583720080153302809600796547191545840780300620938291704866857782408184128813341278190770826008368272268768541461182529344535329388629568566189233876459782015494008691909981032694711296271121396894728167886049964819876073059115358798201237379979406552803488358076244216250592708331238489186645737321970212231201575769285735954644667749029917547230712344004489088259246285433931882765069330302373633215892908533670061977768787070182851533078528486860254248339745552550851280165398848068177946805008161842138716520409586159948677870013146599132705580290887810252566665383619810589700861591899376285549431035901843178211425358674474637081300034755106991500958784867744750361877753425832893263749241901252296324760053084160742043754274845374233203215983008899630995048601830957491750034816821981928656955437429672155577502909432115650134851167196273164135765553435853914421714434772509868723470708900187963388930467728517631490710572767213464597547627510634380599493553880361977346872604624777206251405716053001873157450897915378684303774074380600675944753911017822268932147278144949124104883538949906210953216633839410908708898456441313642520429810838193601995223776916138022610296123967255685015942325924904207194236112097562637440940612720577967505060070313953711362593914532389494217888186902201977153473351771083484107005972254039083084625512149048313684085755862728048415158697600311652395862785185484731396571732041025906394841933742394865185392045513873140753471583375254170978798357583302977840771854101780203409270566052027392038386654675953692284148207095343911125496346096422686406806490467612155453737543372957075135354167161861569791546843470873231736449018699634668524800671233182006816998608429227863754129087927592675763936575479819233049579871075450407808479131603845041160804344662407109415018368804678903210337892703000555100406330653685102779385134518301227079095125471059617464006983067556844434614119949447988542151208406394531934826626516772863056704261644617703406806152680829759996569412865106046558343827870699247896924495812517527105770895485335261255623521271422280077408148064449833077188000695171432066942202025487243563577844673494246785330788950949626898659178509303041958969422506931948374516198131906164685306156658375452001148620882846455799941607556765723030604849383218371349068966670978555522997384427025249330980052310374566282103507010489746498530911719236301199358158929409266929150221531859404325258823786989228619809689929106538786527521175302454018612453951152383077050020547606772127825316719171575167054649510212359920745272805403235163120177277077147162346425765098098476898370124881111816938531156692930322666240818647078058422457057199574077054262628879444537934598834673744603994925207425711220692328216307209931260616434681575028472883629568898256636812309718199476315746134725036923304190532382271409771099362065064448242737364776851294098842304261225732782407099457796399792105364752225541411486830106893355583128345579331216332520392211178685896524460513697408699265460167009793318866572374221575230442785195517786250290768887916950320275999172506845967140095786655194856475246604408348813265585338191176830510774185363657390371961003544617853399648797170480597484622344855902483049928316879099178635533775795445321883760991549736704919706135423181695816235549982762437386276693055627407823414997735110999135169922126519681917047761488674104796168947089640442016771143640030777257585523758339097267796585159342763527686870656418150515100114261377241682678197216246218729164018389013855891948186077965343688556497877222840338777295318861148137108717642615227928685816520331073688128485211335755136253950890333873052433475511502555021122774232841215284387505306271008261449854151579106998693832443424233223323945375819295172932912862234162417874668016774825780886925440046130744953618693234842216883714627447802001378065803510116350024307327231969892882341340506942404476308766625582022004650343450841738084627113675790176920147130711395646726745168777577714263281813449535808538905138595505748756868572325650338697661430317250307372787751406737000366775327997402113528228354933421632104538805739366088703697211101713110027737114640044929648677740045146329144754834239961512758956834520932157598030924470022439048284532905232936666421700438591332139476586290585348852026775712713130899811230010927546053747876090235722900950278293724937035202962889472990237534983899440546575328293860195071620850633691241952487851869155924113667978631673480341282028682331347824863561971806011258449886549428148459249667611083503777395728601964643929658109032515483691858063579307958688190005440047348761653883197612970639772594747939434400164520971659795255731229956650881462909660024919827286148834553788804766010326625543619520783753376513981814543814812262057190527100839673170744346878043376783461885658492615466703259726779773024820508647561175907854235888813029932309556114183644409804202764401823904933643766161633146371761997619786517887128256279229787840804513749477281396146571102297119648425180182952127365798350563361215008844026807073151997890485006630487420467329781163605562023478696550730015200761636704627715488047364664061764905493177496405676413533649560069468784850212378369869654987420118443660229109772075013117528098901217646788359243092677869087163749271841515829624853504667695751781026766880843527762987348163108404450333199065271505626263066031063794207390982077988526888754495738467749842124765457368839592432354511924975292657250224816446291140723823664074630592381981813063535255228681068064096027965178085258789140998700739861906566714709785342924052732844622162102417325296048393981176451986477470779897651396285219499572995119526448867267373444170054454375725913861970558922289367337641117230081990537665333374668326195938423234063685431949333471862747011235366133620895677144574048546494238784906148843112150668854579416125390384074097250880157007870163222778953272516550577034830876827962529684967034658087020099993070446183123947728428441118639864431337081181983458759729424702320047758773120526841710318009551958550053030626495540560014611705041815229301561884287631765782226949426354544575091446118897647488332795796951715729739336826847737271337521581862448100746972607755047837950010100898843770929621164179885300118262915856719219160328258935611730448804286284389065309339959831438068432886420093063623101267199619467007467720991153649194083960999551969778205027862106020152287633586538554104035239903303013346571620061379608086628785246717598885375941490119277918979107193318915587942188404743504234153704028711881576270149816701037241461814974648903049820821139315425159700501680267547249825833368070556125785072857950635667026936215763707267350813245984637784401920457475556327140087550389871661162692699569012072421926187588682724912597091536870151891918207737124804122537031076014898696886853665955252146316382265111032344579466632479235765003072802168741969491174256613890336952815624622359313182295385880092378644572008042501071685564125071535801556109996810903454810212484473099450730206557842867979515171678281467498675080473951462508871410103863448262217054692256777810398766354831110241365822141209576875613684917126848959478253138581072228839804032236477961951753478496747002418443198589567689072066969524586601576277286387376404708177396009907016740793257171947590832019574709287867845490322633786900344384930826391657029701780010340914971243029858767864926416631797192138894806096308210288384038099081714315539838661663552057988881884895856917439319904423624602494237372252664283787111283540705647959327774479745265602712334734371214373273954812808416047641900254094202507610390203160162941625067490482256649088782151916780590500887484974820345857151224473847743122555002959654634361959165369736461708193804202383747534377696082563374407848999398735887278497619324988818796126965952389675645517451865206441539437764816744416480333709673607133896197066717461208502254079306311066373230135148555135372416131940741661711203253860263243306357886119633595492846337010653223676402178901154901705833073523807469482827576714685673190795487206152405398359772307232630246486901979031739521975945496485475485854887080636748921793157018532069627614745067664612173483787813227256096271068905420999715336238017609596478511521847045349767093750539873995525309298983903138187587794388635238755821959965461953442198466415081082570957230006761252505504622079397242170992662077876690224460126634589858814341710258255161554002484098230923503238251148519370523259960491501229813844115789652039397938494524698012152025659882598306170333083894712694684372203384307993706405957766045126457287126829768911362465686236795149455657017958646065991395244503804777565256360307351787291342645967892098917217857498845019904386836928251890056804104733105981347681621493859081276801823691715100292118207918636003316142997847356884459031110323794155541821532656895047855300496477458379240271549126652248740201219241101623108432140153759884407528581656232143191233851035208495794186544241410409309007004695377113057406572646207638829137919238260177353158049201415074208609034656008703786575270339613441627958353338894958632828189845862793344442230915002870033361138287916070274286740278617939263461382381953657610207553797246274209559795301278823604451090193079878938738064844616527098724243748306636121581253874912397167334177870539563333922136565305510534796935048582476779990410303225894412770398512307699998985916760599840553068128542473629589207384222203144593065262675225048922817861360168503124132277522245471970276161580445520510363567786410933047635926995087776475255021690013068031868213561650228204776459719353224470371001191476642697989239846200533731659960963445248006162402394431108560633218848268209201204148102724183397091887079697489235082012101387793770290825897087278748816521053748875542156072903983098547545685903558280741991351155247743549609141250511038991007912199185622454328748356532753640975988264283851687000542569918868662184909223850982665257654727707107642942013315060331616930135336954349250714011759729954731812797809565579868702790983987238662954849138385812170945886300501059432733110362118252156227922037314191347850349173326805275181076616449680034244827247319773817946845551446928188507540573027149241404060799643726411810571891676994244468905597669793503202016377999344592165308822404690876625757538257355586212574643123660499967577695357546655423619141250033032983671098963064954281015141740220923235366657778113470281930443048030719424518062643512247055613106434747897022784948797601741914021449906902679118877528268764956575893855046568593222999152876287397611390502788401728535693816117750164433429555907733281915236520049599881121281090337771544020780197879264030841089837415200354674490675193601669336673218677129655232052004713320841527164189688746256479789890545014250565892134125531935347456383793541902272475484552458478668462501911142867189217781150494487463055165029987435674880293105046646560054117030463052155765685259291059975417143085578916058398945998163858432286644538122451190328144164667889052932210865102695826370263169173991417238162040924884892780137421849548352180538197032463259485555600753615659812951682370527406315228096909004702303997793271376643809330290547783056428595287403296184331690395022507073809478262167257090670789741949897808541622041913480715168589345848811020225073310972062781949239544185902648558834189087129677493420990008136074870583007260077417890603032651220445197175914608264418964697045765537480221430964035586891441111818929068358388820076942081541260031326292479757969482728837327437339405265534425527472184656368639450441992430644991944250293866666580782114790333612949599418547196140240288269311239899810295423049431851403259306718905894392738040483325311957189250467369361799508091633618172295122985773410063664859664502821335742841831948267676018021067592199437262233591383319812437578812576321935204262343535523662450422991135248563640592294271255964052263948723650811275056338288437229049355582185270599994322168474916099560890865088712101583457743343484459153735218873679507342123191212079533856607311573862104758201718012010743543698249018111270590269706016564707556746984695405786194282169627162540389936098756159197698585212349246390321460075920648022481037915535327226944726431145784760712821686688920770014223025378679886641214610748558862134115724454576833497652515960467851571399239621983307604590385827900332610035679029677328127699620176766278815872115359291614384426280468322499240072069756650027898489939764541885372863980970601161770950534316848785058599491890307014062148633062729256432737416822703324387008620920773621096378364800455098332987449340985219546149764413136480149656140763856615453924194214053079926567255692668287077641908239373669783366771116491055959866539303185781930950316542191912826150580658442125891820154260166858801062479454009648864076069436370261944945626254995867598741462261861156866293706036037702770738177525134841432285954477196224425906001564369645821148243916376093335751030425594007741582700875354228668307451023550413268245402751085614039595282729221186405679783837684795163464836445807401200396678067954111908952684750149433471642277799506234010658995201326903229096744110237939158207974361399154560145163360205619332128993069432186887372886970405958317802375918773787493960998311151922090307149279533510456035028415678150132287636783982231007179377134517757596176090321610059222706786005309783167833493800708909131601365277100710616582971835179481665402444656651533531821258110686791844572135949423390421803457457071230602640174591753495553371110655311375427547056280730746776662943679590934216028085890836474642113201209123110687531652369580075448526754075089212753844746686346115856224492917797051144674322736062815275668685918470016904344084646240292882351964241679529845645129578176415694847626438750402066139797363727688043908086566573995834203271807681448420999038310178989960680757486981857394978093511943450379039122034931417394969743447344136908093519512361328502775552080493705267020310614831532032428661674036419736639395519679366121259563286604575308706289461944488371272410551685492436812776749933268876922861156055291345481899091300935992654808289921578662045106949653308166139503773945656225345957512890536256670384275192998421769379628169267311854906735560866312312617234081140897319921981272851332682477772531152531655032810917241299788133490048834768469813773186060154690804692698577362890189370436309186997945966924475175596079323572992495782906036158387561571863028616174048270017137927941522378765278426315833097887133055230330974209128125508575348167410786344127925635381781859708767292341128752115971030654772623197798892785541956514896078814491481919599833798370201523702728325198917810122204960189477145505271306473701666141280607809797999928972684586890394171254389896892712047777893302888393084945296310064281883115547858922978193827572572853074654876577253168654504359578044204760289538246127582954575409752440621979120909773255245058071414379323961359602921199167293011427138692369876674248487118501755270876357922915131884985183558029980177419411374986681938671004139532945980821748112688797728043540391705054416155024077417529753361724766514813603995154 538282931020293977239934705677674374459728574476309382165130714591035214886321728878162453260278192365670503178412184253732560433178852676253470204488956650646715317587265580580206243552035924184133401178784258714282592927124087564643650584024872793043795812312961472517337385722828581322787132846402487757966850403869407293237085940137009250190239609856935185217106646834008987181409618289541064793971915495214124350405129758793747846760333619401936577284436882303477993097619643522262052514358473939802140156665837560020698743138976112948681014920615507181338776592144177696205909273566918631809230848582942842899101042425226272325493184185784228291079431876491654629705755814434333803187796644112452381061276582408994202075845161534549190382111648022908353425622017005069452994180638755216635462591410396396314049562095109417680393912587006692461702032784555140629516850115482605539402359060442245443332528789994690415477617804160147465780881148353092667510068801239104245968647032123135175164911677314895353857436443147587972911090590833918812677420820072080483034743397997297808002637990909116848252985713222380224039033991073410284239476315213562986971403863557355495391303144363243209928147364415462057610234275514367512139854960746723631504498245317634866923986568975232820940354052246058476177437506817043397442244893094907286057299860127642665113956855889962059145899009147231571560952031456851748805227583348466897498568913477352097645458180917453465071497520771443423759445316974228226469466777561640553238402949667243754192563828898312360581305557987335588198208531714321458363070668300997565461669585066200300953043884898021101431827414168604828233525145745865113559354018903491771828818688941319064554276035650076234579036465932767332165275455170218502286647523574616903743241961903915845401538773548291363027867277027226453799703836558400902037740834998494909865561222498139821055218673706172851458672513862266905780679094511110173540131072053429022354273885087219900668247268387736977922085821798758521409962632247806488599627899825284090567337084757181751830437631868434384575299223751129958611767561656014850069184990274659870780459352346813985230481941663430911425247708719247957389179819044752152923721775451357087128462943659144872402054358957991091822311990297294743285289485773623801217894493485754516645848833056235194020152909491312245377923364117926000942308448728318696755730490856417392450544299226521647631308992154790518647502315067428454675652545124289455759031411396236089049163287626962808122934896561280790468955083726921256242132968712589472790781438278220617577953694003490825319392431637447176081103935188767362484352676483412265380513454607177666176893225650313878103473462284516752952086130613518057115604103595276445846640996515160619119205002993405244885872142211313084583260265060064777275661763215584858801589156902791697592257091990916228110105973809231642486848495594147148243677875829032427492391228605436397426156687219265244310523937390397704639370057580304497066382262264400120930184499573961006835393180972928022802373523407672886379833237538762331899490000252538806477520304534385097422756045371949237428540125563909977556728966932506256805724586076382850706012071971907796901280467663496480476002474835532077983682841879838879999319826207696621607698946406732189585109893885425839457641559184201251085989900326717522172901502983120732735371082226594629985522740318024006681836611669083642762917803010765725614398409299292724824318137745346369175056194835050780504477403379129085226899496775307549111395551593221779951424828910778995682867418984576312433137012349494874862866866512667003889186317161329802115320254737933586008777414861275192904205229002641391744309639077791510700588914044775621303612858273040093234672299509446381071060716868613828468198370324836091794033996338934244951063721002157975904712816125444541977686093357690255473523640606797187427533088602032068859156203555542903948480114850484182965288067339538739535599485670302992260389954610519814058658772334339619563662247069520475488690721821655773249356544134442604518967478759809103142618006504259328192819346251423974068507858493305911857304424344113611050332275658744107278485927187127829524678141408304037912332737624989323123517358308944393049204543059184097380623877237628874345415581641729720458875546730020366313110603477557844885450297381440096759152108915835290998233408241723332990514376009770255466645834417932999430783627761428406259035671771478005034588911474115449705912797271655196275672465727990719203315749672281869879877269963343286669985852045348105089570734332388816930111228771247731489276362921783443587608450059831103144377678008772632817141251350261470300307852582827145529132105990134687242684864305709561246721924776607598446373917072607124861224257125213472452772429456626082260273734771470298214002938058321050538638609737784358224811507290254626858199497293621743903800330486516555571773390702551459733210004313513507866291513065260347286589809412887979435228540196258967539242907988183686472023325256363647511368884766161735743718660938619553807706582600568351468436526187796006929661010667068200642538276658596012211168189244400066865957533160321089889313364570087590877370313937230535708532904022170476969327867850334382113914606482916269978247050924122063927247516802752851326951373502003883718587509818483927689228610655157554157389295597304793573755622938047929243628141811865129950077975908473190205307814833981484718800375565103359210261067920474235421838584749796613147528353855860229701180275402908583977268346941538737088270990150091430173476909684173769838783220660535434502089606347951482535003416874821460436597974142439172236626767706580009153547021708593560442511889096430570218144025866135498925864710924009748866498955500082187673901133235188466595641402009148294270222148297290571108464914159457510325249734210454704069283371157118352678878596469159568637923433152190994803553513180096930518864026280640269969870117659758756005865354241524656724956213351552518948402072329007573525919787563740019894206951062110356387535819974062444135080001236826931795528117714696487358221668393647751058378918452047262317221977110951714392834196522936141745302125631952665059756975115354330406355505634624292838705777725363454432031527092646284445378639794327321664805645324757519111983373329594419401971203089068954334688622710719468316502483565204580347374985930148212969220185888973099797481160569629733067436738451507986597035032903281958114133180794149903041837684957899494194014233743584217553819091250142932677600037837808764642505228147747913940274871233199826782863922292425547734546444997874121703631736369821869378335302520037261199640823906328848697212563063670797228355913867818386961660423905717452488768096240948739819027241603098154041098629364400913502287984860681638355517188916198785140536259459114385364817475793454879755487829809125897019861194780565172238504685156155348600447025207940427093214996628936042916294608359591094166353958536759689367231489943568862293202142896397199956337024160512366389660318782783556618627871768080169190113327368580572077118458888225726701847177674878327829696195493565461149903969860142567873833731806101939287567506945355415572657325882257525762816201147578202206828309762864761240206451622097871621720687393620708835738721824076789760845187183189941338696895744251871816013642611575483238359518134795615594200889503838973184079438937850514650607774779184030446740120268299279426435499636011734623700915773962188099721828977358155214760208664128132527463367823255314581391110724203230246061563991682492381209653417383850452113074016980406852428556099527455017609838574178633451426095047923220214661298390518366357669243163626606919937721216534218975925967601043763347286990079010729752639978274410141264475062028262554400368087940695761404057659532632372138185604905253508759881518317235127512960696250032220794158417533453696870535904051201806646245032524417017717104035329663863856418731143140046801299832669392097427489636624579475268159752225821690718030835795397807242300740375626742215213490956960981534934480853565005734673225055722341952874622194325828189822307420971463928873416323839817749312343861423973058481290762726205083296135004291565120470370903236047237462654550121943501696917116211975466084008640987111929515980494063039572265042386502318344805831579411969218215867594743751649243036822726199502937254641833788522650320164751328945032245925436173381126844450381616273007399031750152501759036175147391700879989115999326974822720265068729969149550383774955094726477652064310608910085998199567699444027829486740824528574843208172228015366639986838984954239074118501614712427688115291021501090419931823710158838437737371781571968759515555410632626594174827254617041894836780489931069626303615424472376581007948700522270706719767549088195998301307515748351459789308151065938151725788320441470880453676205262122952327250857495752535344655037744814859950206090835317432194778232998502194518156789942113485556825751608947604107450163707297401403580384684069724701395619260786432685779753760137981950050180570615656195083845475472192579314105701844672692145048031519687682712525111279807581150195549349093377479674672188090272927377348748935074046038247554775330621111263187215573797272186954319735599738986093220251902367669792803471794993952538121785077801952789220342506182672976700173445924676007985647953388890807024712495482116291398610304151846102573639181427821238892818530119477432505802453386619250812740045912865949751927503219406352563215313392134924648515845135074360117738905345115225815358204490058674864066429433045200407408816129333617789393657345843556877043136723898374648770168569103402125198639373031095625416809490613648494136487159216793303562321867965577583702705740670227694105605743980957227083809909977033572943302404041669026690371578751314511693272445809828429273933704713734795426034038260686924149464127574074649037616017414110486794705875947988036781552173289869913558780537031747791796977782604638702298774400517465568762870370880426450331225514564468248228404836407199830049876074032091964921441632316119762598901688139333083324923309743684800697549218137119564288552257977728846204627311860040249105718794236909062809846731033673374006254511897683071757151835544906582656369700525455657485342196452824596351681772650694536696661276041164891950734356442714919192741027323878685578415963788723032637308873580247086634391135770438839746847793352841174790926750095038101996817083561679944158408866788513250071867946175570023659940585527344316351698433364012833013520707578154868396978212651447177106116676031321955012776212042619178101837794646385346296568111681416310720241335447903451276757832260030703148091897674795849690382605622497508183191222273495046222504820060318745604494820943014945792235287437303536113527782201107007333544870453467766477782838461011851202630422988378487754579336266160966558989312014196040185848553637493863505788530679726927280854142675845452093305853660366960932044885665199182101087443101829640081753368752449773931962242013576814498290445476349778022120615536292223720952733485076399793735422482776157246684516387436650301949612603575928040505099262355210433713929338845605803585808855046210489460180591261217672013945395606109899431779707873104504341943431955531095221757016446381331745478443013867612674109023316282946959603322395926910040101018010203861546891242461536580330676663559608204767117859061008351621927536598716527747022863411693408883639477437448607915206313685271766853434855887769560003389816254907172531169217721862751814933781678990442718067818075954098547797399947986035033101403206644187080023140606452441610816259807035056997094227212996848689680960021994367618146099533268009829589339813183801915446252232558875940795056440668397454679813682965033107463273969478248324514340889837770252404080960229973128443176967249544140678652844164396058209929098325569341916232152242867032898069093038554650518700172066130818403506275625671672173588512907139951806709714136571384987165788933187069406228935926911235576498019480841453116085380833823317451206644820595391231128620858694099170090304484239718485121460086229164012921199480957482407818592613225881471445298435199086996539759481385375422686983656300292857143741075483978855833904738700967838671397401909227669140355559407880651222454644708467496667572022324826613749762447756513099419338368656861877084107237946605583862888244885451769290313480963386024165855427434959353156588748220594451707134179274000452898705135061592904194318372199216822860445183641689466356035780239244892034640146465546453713527526250968662816701901147084252240765405570926676824792620290605538926632726423414550475259308746606054011832584377383887425107984322499951202382640561595495009169664263774438139044317248788693395257055014838734170477649604259861483414061050486128621003182168504229600785524970578426611305488592927162576373953777700574617013180139881052550651249346993581578832021152821900999495849560948697256191713581920543997305121699226304904606369044924128016518532440541708141899228169289537618784963448179124366883065401337289308491734579546853731570687308094602533328536150731653794492239791515726858879430337866431956721911484893216475644337935208075890190333463679279553897135876469003383661327911111309828932164721214859062203505242378180416722895273839760870716128284997639094592351131486378186626942417603001793165981945860674060020241285746968875521593184898176147859635159105525636042817929888532526544555517651241540260276572677201305618854907569841450868000824704340195616980488312710866931012342767925562858692916006287352007435218701123399861062554694914628128024485545876654639623344963629832333808560384692172052575118849164245008075915158460171472461364961860243461629067155919997523850049018199276902467914954972755758380211324035395841612098430410684379475792422568370983918251727742014022868150159456758327854958620900687663019336120852169643277828122116547608972801016276530584256073486834930057401515980402442373627398814976938728762763058453138420149619668128402059877028008614563952005591509856166989465144388397029721962412893326975128640485775029399758316092289964503968652913008666969614163575971772389427630258715274255738179235090876855154081002966043388049949188024347405559464906247112470680865258791988020144998570035793241407958553702410031610662397095381433121744566176392390498480117949309940712587895230272845715521100825929228035848855462124163867090010895719841055022061404021265435798239197554656695547285180507309350094408656666890152378176095875413361211086733049117258440268126563693067073890779167614014667150842354804536726975868020158038425246850486097806161427330074424250999837705074049923782675736536913312977154863788679904426717642191260750600081165194746851739013137169801040416476482155543891542140177535508238577327849967645306141472345549512872827378770563687520033218442729907962474185265519780621387212096928580688652754181470537189422569647082035527178586377112364225373036495392160856318691103764338848070209186102646995978604581638436978731785164179837707984198053349832901360347669931278923789209333850166900797124653549138229223493045874417104123537911380112719977145169569758224806282874087410931570211612904361821677653452243318360267875180107620049743290392326740492120158423256998779418804348793699741506381678505483497182487286282475327558667956778943852116008552933922366659620768130490596560053127679999413964003234836515942783455834398237158913870651475979416492675403051114169051579691152096805746377095896804923613044265293814298185837319088378897066854936577167582092060388632758316188516035039394333576185091369677474136343965691180396650403871257646337614830922194134675898248272781569925602500476931036982398102193198189941257376659726467588779790458724125398684361488678712579976712354014718930788653009783176344990978690057172656365641069890058553672529380766671789916398197084259350194354803363958278923158941784197532240176719086250274374402868270641756492087531200241774348131132205742932011087704690664331710194724660981257975275154063538291990811223463120669462901032231997714004209133489701768578003937053000758784643508400022348489544167705890290577582692971191171652943990420944576249062987289304249141573415087665214160308565043866381960996891614385467124549519988131784234335706197886192174910170059559860116211012464511332259507815839465427892537370368970372385885061993277921784871100811728865135415682035550181945860416989536551146615680127105405551603810187253480414939145150626945112029513303537155707468084227401586402684283851621961752198827017901062454983248845404654883228654875539342794510395756604270992566349395671599995359680074604980246490924321960877708486197561454517315062578871759113590967893512125105096511375788341588868167071874398445132159312066455859884428001332199683898978249104126581371660505450465968977625567900103579215923747047638361790672416952787250546600990381482819437643169196976002169536411791804921349933609396807329565708153139331636455175320623049305836703821368445681223712996534386158043575617998880728374935580684658487813755207455567052213685810910359044393998343338412220717031509247487744975229150124634283213400689985219461805465390096160920235489036221299216944886236952654337571928256874404029052213640223873228529070606589797980239792659581374426673901922748484081866912625764775257899518726235653931670306407527521885004493675069819480722558564063514096436155487807130013836485409088505366903587151699569391181885430859767995331419903370005949740856379575481548577584656518919791413233074346101954376111153135438964294516102486232078858465611785014480504709645211098304881806866946057012297156164137087540733156336376950083858296976301533556592629910889749598866920192708440433535558073841153777874979405957357378603165959117204332828920266843722526974830916043391399679136398182184699068994821172262233346403985857423146844319407389044765808325149891710617239015237218520560587268037342364367809889716879443022288654981416302520315503223773665849972116955469952475705738159779711006690216531036140640333144078722738209293588219534354929724756005437814335326139668971798367093436610340492655148668367200307294463650643949456234847641040330156483885596205197638382951981482179180937025052589510944565591223140386336084651339294052727073668971939975449214176974983368008536261139761150376746744833541664158167187418235253193848182256919980588178169316619540956282307890505453567177850539868108775165871417384326647271369598585036118746583256215752448658452453882860830958331967335346559310724148161769476051442090387464908501796346532963977851458213717576246984401769668798121015349133171204394184491065924420629058260714066307904015952987775467028124964487785114512765027488275964819157422911698298074457800187340225732626258161764399950234451109379903788074533380732465843315732701770984624379953339900068889035192626797801832018184939863729155287519694975646293550618929940169776275299016626899704343357130162062460634294266361081116435170599336756650608181643164540639458187225174047227414716162418141835670491578663931676403195521191948707184313295930988666875872414594783903947375500408929531641897336307488577760608339877535542048027444717985785339589150318899452620372344915018041170770283153621937287720325377099838670068833307583736520924273689375821790952687971645999640098270249582589139576286284504999536700432419758792152112929428260879327121054658406501793848367011887869300789737882065490914416985572503281382620707028589418407604767006561269903334914068852252315395351488253638709367370409798202640482098345220479255504218446831360356158760961454339696218689109106409307148537929566116863739786682754195119289485577251823289558744337841284549749849888339535960687203815613350999269950917732921289394824766726563594659514579770562414357487749864786029942901716946393239822888402758529212503091038894830285357789070568811009414773302454556683147165039016390930181606600729033585179398788832207242437984182161552887371614072443412879519825285280734903496732432327366726700446464508512089251858358723359627338715235925239633662776411934203647118080140107784656375865104140401385260705856262206712055064565405521109692870003707906117838814396073762302291340626221979911355219405035040090813723549307234793896708798720068128734861596760780475382698734553625089715024701519147575548883544774209118481799760754101636645275625929708904025003913031747999838974102842337178736489003220073636018735536985298659871302543854951008646274205312221835255612867482144077708085089691128937192448928817701419683011768155283353114160385015222410370286003419218196539097510641262924814770435493732705515455375606668172458197881127074891927104703550032912735439478817592640585581469733953219712640326852512293846678351998018743273550815962721971773656649746298514780238090651083446379512369052496722505508284738460054642942946950441136109141857440375423215519236368096712336827607197788034250326375570223245045980131386631886163758499524037767593875696648853716768991437268951183298560137782616470863791069857031639025750057978653178714430679162829385769871982088604749146855624537400533877934937492967963387823732218509251124270500596469982073949252005972839817249860801914010412146129180630183262027335152661793196428313319602062496507454026960939097211363399406540161562138807591790044577224679993478867738236969678230422865589191300272131477402998461861605708141378194803691096129803858493773016615835044695040603150771235627796162819197149132340071304645000808259935780166876955125247210094515066630022326116404972967581751053919648426924434003520080542839161658628172605628459992180992940564908414236196484489033556584555720719598946734023637670407216422433752438958775144652453695586087289358067420073460296028400889809892938278954969248534394984064591853454086737909632650671610036727938207922477941558823197660181967443661172688140118316065668237979225815851334817427602196193424380966309294306889505931746846650498530719778373332154726529115486343620561197015732860596354919885256088629205558290180964093058625815135347854637857269688509052607253047654100474122075009642778428449603638284334167166232337546217003766595811863075829436064969622309564037019673773489203269328061666476090352087705459875733522715336819867932432796574521117537654716177555502870019598300110669114795157937466983923061549853716918308490865404593187214234616192244155208583088623377913053368928232090361665082003389658063360435935771392974735738368442308341808260076070493228292813226450069108342630764553921283354305557073429052693803489519240884491217804176318964067929250582112050833448679088409065512641777103675588270017942122000032980972376631068473744407335743401600358318124696215950082055858788183212214882994094671502486122393614368192703551998499817841002075635720882131447235403632422380010732242526584697137013594802159321977004180859321259478770287381538087654290351445123052597136653264388352999559740703117323970626272131329846325013510329188043135928555520692186110046581856123763127458142018656157613485594267902563250308998137051341762407395147746865288886209421977684999118994082346861199822751499350475751585383659760752092409584388136439562033744088805789293980145159137860243238116097928230666348937703982944754265559874521585386328909227498892026018235262086253470749294600291148320281432642995236540637299227294133500451227443125061813402966112679535425078399170247151975971124167644966062378659959255054237152186406995798013378745277132122382462033872594239668821262997550313842542040063377949176630377402979006576116134154423864030544977627460431038113084131566209052397275698320891320859782094924909000616097553738423176673090470416685437692902626802661525939450333875876941980266093444902604274475508440616415027688500947092950586162704606046121691876850376554134478724352125368574170072873793653828611099408462447049538405696084797130166628395566959459263203196746285395562162340452235677873501023748947398269028952628681495858702413282722250735999684111613567324080709837053130429643723034735892806914629767779747812845762640328671409255562450349800920588301366171267674888976316668470925503660943763555728579042706558254480226961784726227785529487155400369404822046792226795792437613952304321202406492805543437633580634737030980703535532217945158113480927967595948783269953111695748974983785774766281508169107754705297494584482534593347262120657148084519537473389670008728321741424579614362382085272525265811570163639662281749424187095674926356609517383861954561201030281379577375907950632056550825510466209239228818085901828677409165539905117725636719128357235425291688388178273692274645980214632656818232014973650590819324594890001002241758977481773134363849303854625601794396057643450263918126327373798036679032919756131385811975363364069431196718145004440347909393626858662951674719433601352841493257585004464286281977236316208925058319062266642024623255691688927448967517709522529585764562423079865804025118334753119133993814698411386031023509710821958369223423270981116031110885717729064049598598771948420622797360797803196495805235094520868786834688022778115233395947493967922258560666603412536816978947538543431908782844156591010744281507418056127321510470448697480058030322557905935353108233232521165703313996260582276508724589770362117790310883599531880220409501991834190030571571210215788715737321249941653842932082527002931535716460654437254613169526931960462889440201238738938350390465668545457938794354870585252258257155295693215182107449644994709649727343105684100230092574991625839309321225258187800617692600557841948373428043249661535260416057440897028269175820368782479631489010853372191384263017066682280126064908333218342138078213079619115415852941247664197004984050251657149987807625037289033706690454199581591831365620202945814748648737340527177511788385578661396013662411221646017820346975671035645958396505314878917860982274084198861486987116983597396373329561493668325132331735113520163056344314164588378213775145861111424799977880971665944510462589287755561850207821739401651146259494923464277682654961245665165292437539554065578669900720612141529302816582271730590482068487337223645529933757923705779829635994146213407986940471728322070213416070174980795934356577543002213651518003838663494876483921559205426322828728963500402021326227235035544941751005637590203620366304379375997567685117348185474348991105390449286152396314389148997261980935005915108377409925411872240978458894246793188491441821065086156708886652029463578078757613875303772505607085208705406160551829527498966695944342792844767669039185987200379366173409167664237112914489675539805768598401512443017308885419737965860229937634314572564144945300600618374734445887427937798686623447476844743906494315709951000154117244813110704990333220287589301150478996883771402752772779303413413682343384770318303882664800417443637800627049200425781607318943608782085028663288958623999804998227539956886625702463838005907469401673590647878188741743700905042758996177461858186518275850292571090735238595414507508374637969350096993609792874313340881364298489499226619094115188598420374749538301582509006822473120256660291931252618372256757870573139982784746361879515371188919157629132561140462626777210245734892643263609825602638247578363782220877891010018816224339362337970997561638821735554884482912179511486870891150304359106845614282681467560406671970426394700159546705800551831073207567725121587377968600675808358370188523022256589730529281948583367963954060883661154596888036622689406851071142487978116913158683842027648182123563873205940538188082639677148414132135663432409056091996218338052829345825111996031107968795192973533136036327051513264286390744836352672532006491164957365665428450970541533708816562841874995682461923917130756750085467558338166001945438652659013860437377040656393662173282211612566893601407376262258062424091811001441654686852698561124726516926770555294338898875476736117333502212990517633002683512876121027025493728579647806136661692267372596810989591566384710120824748620054717021311056599707109004899668982221259622709752590782074604863447320149282214168429952367013464454515678910379732212599821093403926387190090786575933034543032195489394311311384330788605325410243558057995427318470736268939879390775785171813482518432012314147722155541651237439166363059494550597231851177698746571292318034776200749289096834549695958782356234010011373331901530265773558320967959308327664210699154559178997692893005793276672891482801001336730051460898118123520893961217930701518983295686417137755309042370153993731543005262915084423018491298343419930259993898463078529206079437600303331193876664583733435463624097957340599980555048348705296708312905135614519239131465370828429312537887240107095066559111611483413306013980553479240205706975298068037937832503485642376770566514834988655842784323184915639785528579331279095301832371481472757933898163096226075259942247172368979121007945590042396281446179490363698539856129628612950389644882551640707901944767880131407299540345282251797734061285026697393253758772619342935848900885531133097994590529424250925731186950006243749787766133948760120597504877763698911806339063966634817915455348202346005554976199722146637562351158924133817536331143442518333003938589541218997340569742148908391858528415853589207055402550968970007822433621060726744043340710052492193040622261553788165770272343885400739223476451384034383629994891796719998384341329514813704918943938287073680896295377162270711358963571227633631934065801981710944872614858078952165054432079000400341876458219429313175874972742934647277582548182424619962349095476146048728179923931506584680564896414136477501703057073243344823537624693568281993560210870900628870912860207759819168672088408322282267627726155088935593750217727713632797068313114659353592948859291605229338078503536571370829136622337639265543258864052570932880453094294607563899211982699856929386560038571986749160726779841095915934993534910068802735172761235245882830429220868790161836604097735823356620530254442649055911878505473519090562063186572463086911985815077030955662527728028915669734347916208998599726734532804990680291566839281022409024690934386750826449105622606895440674569884085245302046172941632815925485972507290418087938713183863913079693718971593267878037888832586526262812569186623771899899406288154453197792594413871292077500179459935659465948831564591818548716051595228872848057607500586995540727382900780884118074717254174403164689049851857042279814719641355840111238193990297263402593255318327721157137127148448737848614240495691864930424030134163979516871530941379237041483846048682473341909927287393443121254634940495827943231800382071442576590798579004049353817128821183227697438660778834620805851308124312979582066522890581848641831755507237539673536862031419672314964553315301972143607266282249722913671404048989187145592821627015707672248812858332378207163631112938532345309355011338425227713868383294066618944698505644846719990097462736920837918483818283574296281648576007636203035723105565878511858488985701137936639510191398264984920334583883704883769733030263799497646359678666475027323936421845586161150761826436359695951705725817317123342871155028244688297581525064716539701983765426900763364853853331500120085108047953804452044875441644674856859246675438474586847554594603754729911313637902232549535069888893709474190510735836885537533557684225725577026915234199640017660581036299056122012357606805865356736968121132611610531327719474793634733962794296606634271604043426324730194740627237200626763330952779122596510408126730852921696053522403042312852487132504122980277300626187960965121671136418875832624861279306284363399596082708969343009204304751626904444201652671094059539862621421159251872081792769963662083517715652275010437363540754859981692499098672213033148760451645561447604326105463004369316153034798219139449118494773329811448924633665237477308998431066579009792754365125401328271523258127432286990733745111927588146373669137742368267581599601261724145893558870902194375177273848846165776045088504826970868207985943034734563510319368831866654507669363945046260797393337407087992903821146174839273239939854681594690073590073673681798552461437829357772193350328440855877177242086662269057105109291261002613319999411218370982624053259082415657437009771510212151747109887531188642349531020863569449903519895315500972749544771608332899052333970350670198786420561880825919038311375254396016580943205797658317677971305341455319882382236717110732118477161213186783081573839081781290334562636159517898457045704376364195474156392170636619165091854559328570416766770506682997317179611990605020421523182638989616646591181479654437224840273516547167344913908635930292999203690690799448183431358209601863276143769533251520599702883040161523941354617467081295219614373269501147650088054016571675937762712608662798705942293133648210155500517608552731523218864604373343231366014408488364936497868140859416514675527544810450269302204514332533331445766370224045953778166522963093497878091110620246754556244265627513532468191385571651886513129218946123343685277770294066721590212454746349286328868457275757975816082639701385084560475305183417814216632985657526769683387406673437866328037184689183667434417444437268746267295835671174605869974031497556610876402515886565978744350313397825545660827862317609843719802258093543400930031929924774347484433639384671077760797744954712530468415539725310217405012233000074177072202148506723509143915783729162378653098272246119394323590409688088139626417679775036812322714860863132527868211113143441615942824193779772696826912391855608510487542528165475952776752918181882552764870414290294527197406132169294479101497307960156940941475125644407082174311958154377048710466609612933734784893732026527064857417938382755815493213359290112681284084724683898528295304587341809190749820529230390861427594850014332896216016352432348678239301663203236962547263486101100913660804855661295457229705013475995471128920988060961885133945450138422624106425946970934873326527362890500821405845644066777098694183506286433729599977568772158068488251618138587530655620274259675215473298677675969719456508229590344974643412133147230596593958745458327994708443963632019725892155668515176499609000877894719708651627304166383628706697204963686098315428750563124518104511229964777508068016059771672460600930265933510071479531193456675144451155103241545960189283138668152863993236821697442395653615094129186092685581904014539282902072777743990249416914347267828416503185312062486541873762539720157005993200931843333884790603797404238927839640195502435368869999318710366414889950704636055592281947131009101457095312686185504276282667306279065086594430324152842584089898535830507171184352656988135759014529396957319883190465093462640200794197467204976236690116055144193410341568129125755550528903716768671441257800749570487869487338066867723769216309636149392832888566813752890235206686809915038519050745084441660029597165274738850345576781473262537408992671874264286910864400300754463582908206823777035986763943800893655710683697996951502025288131969166639669519001006090657442180397485330930646075980803352527334784147370039105657052582620664164049600676256553328853939379663774285669144273047648549969019219385593183507468064472829638654882865468942357816296746359626316444905258848510139744170812387994505585192400878773716042756041558620192667409922854685184526767570005130283527082691683898726436984373174785227889133300927524829954145168024839988083261689728929852532451007661551225233131013766747808283736716946035839157239179123178685222664454830776902977185878953466259546477532048218030732435174151424243175919710294965615547082477891317598572289373508089074469318036377047361034676221723938481639539427151707310887299490629591949504001357032006195101808582790948583798460977375315570884735914376921047123613199072422413996136709148642222318176901987655881562939783758813222640389243076728974312093541340719840282860599557362963027097393447225090838563841028157794874920114546041503086206801256280920755987552478247523437782862154021520069489112382175226681348323465434668501148211404107507948204936536309933062638759824456844803878417729486657684766500385565323290274278893160071065948436196459218324889326806745727083321528050695478310855183392010366255982266609563812112280693611843382752183136114743938964435532239193222857352580275062447828516441819972470059508328786922321447495647133172970011643934124730053762703120850717926016441382948168410495054777760888087142811525803020890143944676334966973422185592126058597937237686696091169028711410146553018506245665680462722671531129376750433694652630922608704105804670413386863808929002324835351939494923669908618088742180863725333161912772008275865503926994857548009807306449807390315234592791272531355887295352075992814675632788287276450122712649460085620515910413984999315687041762219486017661972639381448666691595496955294852402797363806333140650917373432371034575831285816635110672822409730259369748149687009195748810584241585490671967319347098969789405984021631179577238779598468651584416494208820830776530521804074005131570933952116057848535191376350483598459771377001258636499932869063048703023222377541872278467884350971327100943416970320735108656653383787108378592143233420004589208452438359102276313340588961505243181204996269963010537950916789249631089996223589882760329162387843085477057948283706110711484963329257014259211325752158998199842920165267429835260202977921764806775186819075523793105872993090757418598578223646182378726205206926991766507989303714609627289163886327177179398803181214407739553497992022490444579606139878421451092482951714789467919825292078007733409612142613962747232297822514816989591885135201725107088469890977371163246211498733074250431761073983023090421386051832834561404215425190012638638562593579756681803051577670796767489439441147283207037545311945594816920897751188636429717968977072955095500590637669469598542294937130800115086265015554160301787974091788793898638176149590077832611823963431000921696809525238364441187227986906221080373034923028716988558884391824428245014514321781547705382405140642118977319951609146829134279688936981807542111822697590888916709318028022762793051097883169748224812021863922129686735234861784738634414233688423928181818878803017776396086786567146500442708384074851668777976278538507782258621895015250556686713287023481847809495576130614678822330510118445839836020065411514104444617088820730431174022829062180066258394525645163074941259633499402582815749416037922541988727561373595553181904135696662267155309244851294265951059836830506106079492581429933840153203133308274706481996068529387344585428308553254314632958044722261665963141760951623129808610314970749876487170037655789642901727523346456499077797268327614803702822662744151232945714509076892280667811465777257804774005974162896738418283703951448720544040250708511248282046333321821432431890311948194403457031924135310504991877930609969939619980773773554640279694850912173978679758090411164517638602836572807000768519864848950320347637524962437309793034097437872126760144466084104278317890087498935234266807056002804406386673778731209291675323360503758920492609588441872911599301674655374113823112756364431047225757177870379673690533662343166300402775360111381852553205579509953134568364102533166747147476560240315340223721513405710444847012951576217012672861299013960581958336028205388360191282864379974389438524978339059668544681693131088604253719785760468734940656305230339194937520579358163470111871752436841088250365395422 -> 356368233554607733337795742117686751048507667869153141853549967864622453822931526173278710504349314588163919204008095034378225310738038762996420487715312563883864455565062345750692710905654350587381431041493765039413107572268768878611572820607598769186842305459587226802537033350821298726868007445568061852607027810364120740900536376570621942301361632629523608605081347270836823314258167353372784650938135310762744366357865856568638425906146312186283196965653420329803673288709251115261913996527837526086265230566569759053808860634342481161126002043294022850797317498523500781512910843591503809061717303895026664961574020344073135918301623188773986878056809885970826370736172211586777484548926277930554972742345275512988404417428624237983081624060805361906101886692167068903294938789036472501956265139431690775143768165411863647552604515505594888791346906037455434997178405544165979365992299467534908424274045921871040660930043258875208035241907101211065738369037912154561082741221786898356659136096552159805764021322769607853780120781399756877977845517407312703956827094407587097249430062391285925936526542942274519666884276928497850183733166719092707170534392815246669990899236574580268961243323807554036309364911125122995623150226095078410422838652460941890752395828600520434299926485480538111588188416544309503798402222448142466873383013032126248222720485406667346600735594275926278568089124124176526557432407052114629486245488096506388703356552790368616417280310711701055044345385627912020455649645786159495920971891308126333081392823174613837217788134474646750278186521134616644304269032103032702666674530409474455096589400626899696422402867466553502893857600301324810187679705777395523173575487679800382673789349481478866431549054825344676119178680145206767068295897606144220522313397778989936226457970660556782390464752452058195586121395674815951348182849839348646993723259004980906378703591208621485271251074371069371017409616361023870499770631395017140324876153762167259840603319704916237990252060196726579910234293790096206232873944792842729733137330210687055987933544157472211933749209880837632494871226965591430364605727149127600251344856717237984526003170289856535876266513701844475495815383570811435717112953398977565731557766361475781897322046693709976536193570535581586525609749780734912662457825474677164808366206498921629643330076354147590088936258451634779965178431601408784347268114348949584014129180738091038876662796901758633492801339935666909445350631107429873669513432158635466153004297197646840473468252326304738749485151828967279383194103533180331725240662500681601884544784101802947818240037522511984937096938067826882726215323017136248589033671439579943055352101108559117453959550713863452775769232738614873688538427135667588749324231869019934128868745581598668471408648268677802315021604644786292899812275006634628245303271388100151105700670844267878090531185409568203423155852206181354513339841942328540103857187889927447848834147866035445214787714735866290340214373163670946616797555353460977567477068020751953791202463418396027712701892421330368605918502497339920130824444697546994093002576666617406054083169359185191568724977291040542085964669247139041510940782254351128097561369691809450282883066772591043068174463013938317112437431466242140600451012371320556892961870062868356703306122521063372096474639512501794004548811244823338151080197349459246669780844089378555742662365225961335998708265409218740998060167170727977577047689946798630060257760341000322302129103462783406450872750431282794853833434394221631707954119353514915223069907538214397263298127062589311524382244635304588420789882104231213542962900286368475356204545724507193366201465090300117587423860703162192280764623962102193013946277648813772452192271252024057061969112063953712754894323325416626569892265342761472471855611875582832882115198845140539610597889273648057196676063447591649224997067174919989395335614930166989097153629639312458016329557145018953513954857072334404380964783123387483378998768206652369173785273352435854644545424363411862765714947310934867204251106569311889793419236049134582870603490181364947705533424147050485496160618877234531699980514994783204764750291942994267404342984263552643965576013112233670689145538019475990090271582290361782128591510090769464537998940585057792465837096174131675646697269321037219557685191375193983519103321144273301019631097900298065524915151691929857044464192747783237743534532901408363007369536657862476277651000257443118722902337729192726039458994068161816559084584627468104863356919802655313435581553437753107842042559322582956869395736841323756939915527636486988686528513466702473993706771945121408897548138715172160577333269652606532734430220869687886805774356033755989173263917287223740660355059781159467333395459394580619978803125762211867722267421218049685147409012057140553056751503922258031511164323312818967043935391870352414401351996239994078923654018550210908486672684611767149443780523462999388182193564721734227079740191979344913749067246481384224387735145991318530859208911811742615610841468213365980565762362920384704315156624411713346948541916390141312033767510421774113659117792126647393258699771429856862404659701377193974111614768159775145135235622587872129077470486928207776747806382037214621981527143730662654021210153613052368355048288572561739045156620545374575267343045454027099334007683627295125680595706099944171197491008841534540397566729553018825221162238279820275644927342297390225581022780746199538092203197427785353363857614498325355905476768781470885429971391230137505646605855305268419935107953255379653810048677323887591983833616593484777727916759175387932726782165840199862847513444569354386110688622533407903536854264714875448834683439226255557637146697364376096959930290426955980796778577645837496241790392371395589513368959941851361825457882269593856413047988933608102357202892007978731935519485923459901865838438980644450238554272766714364349160815739385104847094643978915987279623225746372673047816624114563858643587268598861981123550440148200435079188094564764689588252169425627261783844770105159627322904601077160739932042128197949701334126032494611829548316707032983811243622785190896458306446481321625624378129288215620782037187346160844623458422993226695662069540541089768916883695475710274629422631692077170206959691620661766874432028057858380772239031842354927545197734719619385799646366450846571371674110314882067850331915891221469225029022429492575112894340427342202601804040683791567664792180395845048848424435759567834746011229526257826595214429977858858071590505720453941346558856466957516720396580814176161989025585393228529440993063510734139840716272131547793926748422220310524741501167113337983042215438418209301081848944432470899333237297496525987724584727117081832301905688276083388504180113532863404072517813626370427886300524187879918967322011329001679344019199885887087036534867372159741740912833772026841350507893332815690729519670380111497360693435776869152199182518899240013662396265340844869409764061333853729824411871745342474790913794160568480774576559873337875750995506671466894821726718039980197217166109971479447102860241072816239545338859970154714923990084120499150237343270682310640764800585587516663841295784121278186223245794546929051797713865158557074071916838258959017592067095642209308574877321940260640660178497220999813601345633782100190925152677971543128651354433680065198994298386834392198971295990806534082326980964122053849495717447452814106612304448631399323123022397561353664171876919025029485369254701666820691688687577672678190180319854184357041685480970003609009734560575412006068507295016865262065590270289507199181129751947070871592613186953261081426877907518000649068887580779210055274433840681459382149609489377718726231823386742484226540277586962077361849729571132129144306092172370165709975933428098257417404541599162719327408737230407706118880931817918627232961654664371873713156050798273450489772363386058128300203946264235563852070727710458778114832340898134320141039469976803779230224600991283180433729843859638345891969362810187343901902340892379827464471919568580893135632390748945074583087410954824546175927144057430860679704542415247502621513650925314397973043527563779897269832910733223966323138941746512260892779342966782619778833079334293270660902592621924169624446231754509770407744669612520256298407702497128627503407864085911054263630592133901823438901105653911174331842351559097656726881808894255685346084554823913995135162833921290211557061423979181649187585914913678019935062925971563974473256604029049683192292769874594342690763548031015299625531398039224198305828980642652547831240754769673368417725019401148754337441900856124649639423133010343069111379522186674169207418657544435659623811886751722986142410479480454633588895917239714931781501246044666102771818801584963821864272483858668592850334099912265836285189655130975615717299160148596188215089842635879081097982252595262268379064370197804119883021465966472153091992850287954377107721195596820479137670382760400781717478458915933619263387487420089315146783668240643447765699285147502647080818432040738708393023075674255926660524980626515818646622114968745993377337451563522772844193558728386330584695469865929419687480530641590132204400733456433694871916554232827657071460347657616800199937914537273994447621953512246256162187983930178013685352934446972362517506485464484741519948955758528298044068922154459341555735105971252183686406688053437065372954984717738582335347729595372475294785226304165260179242289004339043811534447589092158722148373858508756618078742841455450394469764256863097091242749876291495599162074978178064485138678923945163037644419457055439603267743790570303698254175839673562418993216651553602152176754975020530728607010356764307132904690691355295284648762570089471931515807993397996859418329995881020014755942777735396315676896572832669485477600514951416429647984464285081889871732751484759416188265253416592815553374053691257496315090767469294408890510834770733980293907561207430263940301759616911034048780418676103310534281888978170119812974037911992237379386042683134550201316700406123253342677351276883103668520740294739558062808692586743945654296613428581439855637230983334232694255723125464057700874348907576406630774189218167667999314709639934168394865693148919720516137320236918551346735843932837361282803785995178474140131278387131257577480705560598354327717130014682706392284389946125633761883798449354349864988508390552664809569709248038249580619910234389342116956941237216922145995620565008429100455233749904133328274684236771464001501123984909417794752721123566273531705064708336144949776080915365674615810301101790773654598669560866601331360185096904597134098265081375034827629497714416446316722925632220314212680750333843003810516894541593086366601326513379418419838505575742422143752294060869801299599276746701680028104791076296796763943091408417164059232790774504404551701242496130509293765395010072243700289563892175055455033987795075314028021639556583843402242465844735935394355094398913241581442807340010275570463242842875975008351613619003470763159634093108572839490194965275678228478573093922672752334622380684663683107738156781264551689526671941360962088124377537312795100193906413549934294934354759668669965739931560913554922066897668346829387333788062266815661131027576778491227802131575940752571971501985592762123945849094493796057781783592283781259376131921201380715698101670085391395216846882126558835002271852312623557047565472406956358079220764909442401569329420899394052643638589249462776228060173972528278751419503607694685678302824327006378607669670451719114147812088270275446808922806071581906079596479163653890612237198038691581344350452153817862576741612890674592959640108403675278669372623570357428018240879608375328477000846889075450570359079822030159059373647997830904115432056210093929531473083304052415243603896980326757079084325340593675771602850061879050351191683108863394040116312257327359372966134837755240352117361761403469201831150511918983541091984435456069712988370531178965493991210991163973068989498897587779371656979658502356175417241354845526807374430352772111297660945847718813573913305837972026614728702315626688009985716975746529679717651600072784580135623895413696622369056193655152120979380185585412764080552144489948577681301570089960995395669788301729421026767184371143185609275847862011280466092667299840215072904202330295569938012983798207159054272567926814884163309935602424462719093556063743140105222031943966299068012025769524226363037799892143793715998689356112896260853565333083536732957025908970240285595997038362837098944326738893721092908360076593082284921208041574919465055643260650033690556199312998540851847023223380239821258381371120349838184832474423822397520321527074142108322839915139708710144900836567072936283297380360663394597449233655535094014291363965887501130009385832192875030793778107939761062430739858454357739865244207749691318683237653748795480670370176653477449946643954476871791736768173863542485927530781704453341411877341671200972340402214853427883302149566069704275495781828499756443122725529155303106794595036462257362032978826447010011905643546641356287755952425287677842723216943822491074200507036880125621125636660835818766058574618400072774794020900923672571680926205190877341761699962545501414421031003720681104989636007753770790675204624201452671197490092431014148199836817471993852113136602919755871404761834372754254936899698942665440968698319273328390640400437254244752333706387434848656697455916239818008682090448112828101554182921447485127560083115755759094910601590597849197653930924453484629640108125711924928186759072230705686835471825471727519720748566626295910566831519806689961973770332909474779924603278017180929468611359689840897091344631325180502286080159812807007780918645092608977722230622229586413677060050187068594364096091481222171844962520220184207293960449557016142527913650983988201586537322423498888920896787492348848661698610761498715994519627926809024630557360791238635860710771068572775898246617368159672646832664934681991586956725730052145863114099891484431225734361179048887145943052729997836932702877221673031941716934668225406459898479863611654836447958311170157862194143980317732184392208264287309490428944335303705348005131715479011652032387845079114756486018561807624155476889797990981475875537578759883140963633488406561079633411388676505324421714459176986085456769439275752787415267859839375377249691433566304186529904136810375294822431037765397195593700257901364670362334379156491033232507613596751905714875772813574310761170352218657745349330055209229662630871371143282103078765795416251488306990743448302745034896341486086028322677504889943592506182412187525555507868957390245634912102419330627809873663700482232578546949912891358571656553939436643827109664481580898237613349041737129076876075973715105012821463685019601838366162012929551030754798204164570287280697663282306209140246340778122630333230610956055960938940941945846978352520815579637108737059954012572094209710838089184430001625465049887930321277283227570359663634813044635770307811446596940504281182306040317437235689433267487747657848835896869171826178167500161801563661315942391636262531860718644356650876825120966437050875960396686089555206835592348921347796412564572358918736247244008631482646663543419901816745263103228069091993299083606781795796661566804381132779529209091218355389412985889746814999745374164057430739439479574587116152247270286563130238339556533385795537754875708022721858078648568458858900982923058561808597589358600334749996146905043622279065808642801316501939020561316797764289880464856395372837234317706650940788922547204689463671591203859959297972933519816238258182319860818707248345013395036768598030581983029912587037134081055802205824648905759550633533851579404237305465390478720865255700891790944357926316899153891988453056859395162367496582921117458556783868499676518743791072829176267993040147224529204716068996409322507766047492119517217310622925135016780030573141286239218625822822541023124052554809907955882169957734898689860548975609089717175050658930815038877918613117730545141970831171532920419568870610892707140091319988008025041524400434435276249852267096896131070180843790735257416073280186047792702500058573360861594303181927700025920384343271380931310217626574333205747012966516604535144243458791843411790647259552092161178353484050341688659950095590873967290358615261033168612381751860801709001916149761625538318204985164089585633389356265256986690673813074364127897791793990693092204646266352025420608550771254054889937136333087102674837452399153289481440572075731421130166122662798850811765851750687975250349909159206398154178210888782796306091637535491982527414961067741140305324343589141864712865831801886736671161374445733588256250040928957530131823377005107585641656662185120766414153494227882587237748693155587002269700264895149041300874508395578569278875176882176507706706395052366348811988612891055872549792004336037656343322834646365741035531397948558040956509820199110057422568294709058586677853803713359580991435109288835995381937371635843162408651497140282922963490961789659218574419817547965942690304247281103063599437971749272772661705116687266938524243047112632352965475388568846919611341129725131747779153922236261440771894524893573811556007131164965500148967087902753092437914114811181319490795956346582422454544856286903535740779666245936019591355606057087119095291154578075375097623957199350292988412678463990883814657803958675946733797250244731965575014186790218159481222233092350585044339383890226746740454663441430678407745190297122302904139717752212039702832256804679169239823863747816057868519299285460689741967085633733853218651479629897367204507748839915868802247418868373047613605748135262299646877116296893608304901281637490380699990885255769873172817583730607748792914859227674543267786995991592866748126398857936867218610721587926605653059718819417191059794411580299484613078423882471411891920495583641463119046931720658494071886507858417929859277948373480624407589923422355426657106875308097119639478203006985883538143034215644844069213703448784463001572370532900787040954633632547397263767389298949462556020909806622885092574891754813793484935262099384635899588414282022452506772211146051223892589278687097785252741593212657098309107745124415540364090614787808722602833536789031856365595233625251811615087662818366541032787069773464754826616082717133981418348373406130846626528950526367728372972809568783013935792585821967584718586599765210291075089271957104712048744601856621047675900692827893614582231393788076547701998436254160762664245777259397121349790347033341450533169297913038252409527866079572731523511214985689509082461981360655117039971123690389745131253925555155596998532570641413921647016965675619533992564636737769142970953270182871007496970132305644385867241141292826876919414637471453266582279167219497587844438557238378277747877584112911319032689937823298440767353563530440779655735375768600793131257514293676243450115959304531551325227266164652319299954197002994262236324790237130572667785849717542140867294827246170893614511457779497059687019507577320073435776816905318584603490344444608907569049899841589727458525982571197247444089648850164902200262862092040938922398243320295668197457777607135640940918889545524121782136887152701691883867519561282399597144244954735247677943778140105498698241578477060116172219058265119405612805434559595678497037991909020514075480058349274179818776657434606944097375601773870203215648639657796843556405960845424967394661772746208672469971228184325016871300819607574416376038351941148389682116067627334195115893125166582336446666184542873542206733898177151271858870151202505414333840076937512018601053968420223202444677882126688274363354523542301623648500999712421047244502295574390537515189948596494175260106703144334634441674010907299735212341729832205624132803186466076565668868834056576612281914168814536930380142193607272783781662635540021009327243966352308447023887391293885655497920513118427584627941712089508005090944938175085860046088755650839861203226535415831839216131003873031162143396529699398856068629370941301094500266169318647875506043182712657500836996437873674476048108354192440006899452520377509792009985386214737524591176475642996529528406746721957355809687144022187705950705413257516790805992115498018163487194363824834021501667268167548905657582095493584627402324709735719455417115163268168369298023220332533682971454323130264412589116710747838636619648250221894305452483463950604729214253514961282828786053390781149869560451775833262970050937067996927461455109182589037893210842168158503328265825296114895669915392810514951604825239523854506252737207954848198996410670996521324561203768686354938878444552853233121402836002156097273853922211203363173068435053011195977040512998154477547857444937696342556168073202622825045354250925213183965792071531441898518025748736123116669608768996527453461014942628948977286098220716394558623083533625649699607483074321156577428738706918570466276627306117414600485935820692087559494339353759753037555763185037111940307813668265994945078701690317612717259825429893701918993314482246558932978330021472397232455815554234313716614659330254749553469255400685203429818700485284727231386029273702677271874787206072683066770396280685556525014908296298105058231436835030099058172500402922417648759366547183470549011935036353600574229454364456414587470031610067222105749173398172750706505342187686235020436294956431792552976860231839166354101759055432904281709819177464334424637741669980702305795387314814541873810336271426320632107214724229309690678304109511041041914304404033521129057449072618429119830966843083364753193788457407591013583134305496925373142566192143740022476743658875519618017649617692935858823582554181701279088280797034565299803886581069511751734725748645688546808597511971119651286077804845200797274704477474607484293049834674501687809460899338813305629104623169210267304493665591507544980861221123927381996659840933705846256126578255345755548710569432642913863283647071954581299604570274958814892642962171620378866937269592308414617019956618138466010104942518986078271033812921759196428528027445579016546720412764333204396109428010719500915016319935933537359167090459320964037967786116673817795900232054914657714181372450260138822893232338120082962196448227573561383801889594093105511396535056741072176097705932168900033319450423900078496088514381320130824118585620149924247957076698846841799512267133829322519500785101721576444709067896904515249153575539616039103527736804585302495352154502751014834703869657084742503953156891228197471215066470141516304320608624310687045890166438870022376792265835735870531164205761195504731103053427367147132918818624398365930096083235567597941569646155056791951237347158086704148148477985539546241394435030360370796262276790806342912345920014220533052594122176504221300270579730225995627789152257832953923492158486040572397518685943532420299797939939216212354643838047466937470141914363095541323456860714127180777237908610249204512420405675683343698595339156972268262170634741245537675765315903376687418295822973953243448916248988017477278059957808013665455290468996077846750003340114030399145619991489878769141389814799133245380925930651543550104958822094988193581274461674146746090645042217118794180668917219440798820691688896999086442341693181778885835565887777468035089635948086375811832650264121893042628714719702533198815115533141407311466316919961505808533446066851338496051282037732445714037878590725257874344381928858786852978180446163182371779842108444073083282281206371405106340376219804878386065373552367807045075730986525552657379272398095962489145613491297444064072498147605274686035560706072913524127687370066514814558962089784734546975663750873575307815406347984258648080019588149204786567178390498018041039773612172489465466907037297217636611674747103844614060282106370480491389909408712813963632905154139175783976495971720631870972737860082459561525998336524020131778938664736422849534660022682494255594380823785015005948124505501311417433467753621764572668170835478564791829233743824293543037840407063050625884355422190692648266058118635600793967787775754558153785822662365796632981664921465835736381201242296659712444593235550351913425556366143955072357056402558147540839210286917058509071050355626794265080292438012193134055398606832293795987771296883349697905047572207760066014019112769183950161560287823701594219994016070113677923848734795378871452454207603110749774267186480916708610648211851854346410160556845599036369914511879510866213324848934538496495683207408166144686554468940343564259539990342387573183542791333371461009018193612976805909887381107462262370021768815284890412480329030838497439921690543930880523310352820600498852043604679044460183372729426732587614952201113062217569306825796419465468190035483998746750086863157401790807126782727496997003150579545246291212322705883345966284688147303601664642542529632734260926175344212915729243907649151945051316737611675241187475840450114625616368063055014446862240239531079293927101336782103044710932868557116310183604617211060479008197687804027760995944799722301113141822267414651556922181555415464193391574184563783736347156818014892422005638870278181499124441963290844060641878460019031037573460388014861278111489314394989468677285497293298085468622282834262659415940522116521121652747948906081188653732202864164811960207432661076168426000064751142017588388422884512651597783689701878948019268697217702375292129964142292735663200868906330885764353140828274040502908492680930194557466893006413462407348365621094738658183834812126153093669993356690441120789844937240666716737415910874055214931185603471559451595614658776856929421068689180447922350250364381969514317649705566369315543630484376828901410791682085244877377767008224839434063017383793662339613178154637488229192034513574602691620884987390631378375975433029935871937172536059697952728991031217504825424532406268750668466620559775560701805792673493536437459811729950710175392134854111256454749654810121757206839117636763283353291539800172030825556114836078168086790084947611172725153517885938679748723264790596828439514297756663149600393755620972410073031918993430039572845627210812521397443100979257651630523535254745486631018543944968652054185573665404180880416822787853277986572782702439191380578077189180427738670342177829561104807338190280495627530620116436519959420653547299860912264518130822136127681093758915452571096252994780063054657016790153246265104683597880305755343509723864792918012007149045724963201355547203159442767430989426500004133476629159408756056805828038078786760755620356386356857195681718981258434579291131172786924595871984007940445560314344514336344469192437925601553230311100861566753470730991610580305702744687115497830943113835989074502564876818401548453307233586001303539615570179749630304270717134193089784440546400867692502254232066574559293696072379621627844176568494992118499057467141098293478670830167994486114474693150785460920992650170768889316678756152156815080876800770692926262084306263583009365399510699917336582722978119313600138386303093800210729983384402949804141448213889343449938014163625718214450183933872090340157152727105307193875102754580030489414583471115342068103649845958995169622581859629859582277801661227468645777219346124701440206313704167871816347925526898874875673144380977254830281831995681223917216123597170912836318689884096917490555620116452466706294136066888218930073269097278003732540454895396815168920240780244903415074022408006942660956698802760760547791190633551202367924366136769633037071530453410211922239381345572908910059556505573999759749286760143553764424384556930867943631376715446202542137465999133595075006417630657016652321432264162455924683076351342692669489243548768960916464101585334661242212006777601403098079984513154675608718227822240820175589825066990736177401288998346778701703085626132406066221398684090442620300023410591790872059933589786941043594956354626272220818122133570438014212846026939746931854748884461081965468618473397913739886298140625105531524389977382775843717124218424276393598035550223160271452087813011220696625543566718495487679117280499103014324462484671114806354398074990875712723540416989764295036480498571029956176153799150898523067524026577331872714572798205236337890618363437628698699081499004589627126340275096918753954985211307053960896759177464550537549449589408564595767554348590431517396725627034873797731628555207260395625093967893839651180187091010804205308436437136254313638708199597216841927022808250793616309259993775661148103794402288988554316028707505279269990148513647930402095171401879482687827506819645947338112409799705934565427194110590123778132895122920395229945019640326890057753858470998403518528612117262790406620087976554291522079758539181837888602444873462271656375412303344196178845705448092995456971022602607102226243232819464139031752224682093896230483171171724210869419257616598121332135589709068997494457306365372437018122606941232738618310821449774876089108154547829285188770750055610119679637575488414773268762107372756567852924276584934852490982848716549224282837806264795913889666926994559111909428023341288153614851767791453387715806390002593192212973561848680912613307785671993763024720275986666433258381386600639827572091927374421427877637609495269727863376198633749111198508311388324137481236392904381839472899635172757728301807426843073754463187751258667008555246453036837334889366885563639137367035916310281817698417554034591751987501791053546529606268772044479467847578358523912235354299417704600555341118043318352651552645699941653126158282999510776694910253249124814653795695467101444929573161111071216130352744366026059930274919763580912708505496989512066052195130434923294530774318169358216666087416185482214398610368433245842214626798292178224344135565462853342281432218434736552088845410442234398632891041802520837163912607152378336046704093175962694584014852855956364014160857873001375637484200132458987641541917674735607136416150402389070352126329364612263169637620813433924121283264806058680416815848247079054043509527450753347559591295240275895506034769762214985555653748411508631600815904996853007209265471829760215214456361324219748956809229949709504213165634854961697221589963027786544043286616742938114778665771887340939115426832115032557350537421465615871932016092531437674893829005561936830288448755681272941066906050852060720393958234481910443945331141763647434314642306021156904730984898108874709100370171926757069045790446052981077310359889628098632857440007934928326544120379589835480606599100101395860403151905999197134045721320601391384915339982118844412886929257106894358996995622188085324890942240489654619710992180524676401040462958113903862332465966386522338773135157399176553981707172705567063647972255393408147795775806898083199348188414313820693402296913232334223837028196065435789269926400796595583116488526481455215853549198062986185588098709116505619637564624593107270932131093081556981761902403105843270607819204947154374132352092730654567187699631147777522879071905890061968489855189203448040198473396177772364985128367538156454558418925414950731858203676864594271315279217961386269249578539000935147940137935022973511110082787656281885107414519225301089036741841206126320403282390216867707576668554861137419944235417521785325332604026484838009530467781071644796358908670905275142595579389976539695822005982441981613994055741921648165239751822491210829067564392140204697085450912453661798233698498630834494421734783240879722122830242325206649095154747498645063404999277335188422525717624405908035071858714767376013447121544288723790153883253424430876769821946051619122120753071758207158295403003504445894239924817557335180626074764752585500127339246855431380408437608613054334839027228476811288380655935277946674558326854333847339562991339024840121433250295469834993798960620233178084337454445144337992788767375836510403140814507788293713903667792204580519589687407087776118642126661915516876645091232574795251398352739888381507182550655056444607328614072625970679877375627681967077466498132683766153973222335001898197874435370517093026708332137517113610455661991647894374676473150149545556187111270794985571927378191524642986976326987386644286983381232751256718954980055192151397144788045308453053230723930184152748362872858326004274193482350051091559247998588444953143315316147083773772882283585653928956288301915474570430493606364015474404374925325326486360048397052836613665543696181373421844004640155030155603472650363526016803315995805345286546040905985883321838921151653709357639225364529056804241179845846972977313419667287716779350326980033190998208129686993298117766064611749645622109230778485807516217358192898533915226043321370830959506300931388597793987561303868274826948316357101338338214638827218093637612647866631149628283623877879018222873171906474929553876081403180989240691996201391049801996525142274045574647114219290339351453006188975819628769908089625185709942611599284958461093163481722462616124211251588422020037617077980841684067378269196731540536786401702264585384749666113273368017873707709305766713118826962811914626091409039112731990472955234439342316302125278934618231582522542173466644814477338136628772138145250221609988972459292769195572837131682214979993933923405430448502562166122262327796652179140345577212489500721810670248525716379092799465287202437283569656476540716282864481653485598875506275397251456460361678140619116283393569170258106613367450886151190388235123684274062133630965789132642756750639037547878227982134660322598842902451138667521090525082339342684102832593616971107499050907624177801224270428250522316451051145947490830124753568816383460622102640136771738370268854820639257345353593855459922938069697816098345071517364059931902694766264201023028573313488210710604090873773714170862913031911781177950541150394522556772826693933382456993015081108848566730431187614147551433978584369396625331884539512707758203911967118207408705988932747546754705877228999242080203415680812855294396062111107553535016474313132835875031540607739227373204201432102509964596437749667491909510925331166593760483249206239635205622827603533343222376072905822699564674392753572902273770411050145397392409789415554900697286879019265115756530670445954719747478638033932324360960117468058293845364955182563869480473287858147153143497742330134873997255288659156329205071020839179234480566273279587361642706324033908513507845319085798961612316688369775292271206371873340047528458103712873325849259570201098433434826058976858677891304387193492371064707599616811953644619603594303716936775622910313564420604141291042940572572966627829578954893033737910920069246990243135069996136219186600343090231978290499618144318970817915877679159527039484239266484261897273969141702005745071090550048277580722441169190573137233591814387903837309082949933517756696526709389666076455764984199227113872426683383039178909902567892119372123687327041293678358016312342961248878560645418346741698938528541378899818856648082645195872922564645785312970256880789583307961112573374102228044077146036521544643990792678242099644048541249510489985713050998622663399346766704357815610403809087192486915781744764086426278294873763129377852671799227999129624729082838136857198044944733501944518443835779436803928206815820275407991677188648088105235859019325632974615070158294575439171887586558003658273239885765764406408434286585544475221643009356179918169058800258038890464334546478142198447908406962636621659218879610672202509114317530760765532398123222752517994955307566545683771571290231045463092907092384254708625817249472108718073519876859618119529887930524795907710613138741523919165373367470617670304795458294380233263937747181993373490492575731455111433330522457141726095001271697051526496535443431299949190118399973440701716443840143908413162610381906097181739019244055648464702155526734897881944745189747654528085404550882684070161581067495072955764497555646452311785138229107927394327356900651710804709083650736503703553684721343108522111035577519038345365368154765198396724088621793150930647271754240658370954955178329303791887700138085194135118159768168183503793974774369302555716654727966511402680203072123810831214142649862712779577467090997754489147304533683161864138313907339064444125533664328502836557270766220560485741408765331640445019074071678873416937074888573427217242139032360172160596455332849518878726105163068422011325218777053707037282614862425157212409111664440689134746557783887280689780995128167393344573828323068396297061692206934517699051470643824141650245991422421192224276399620223187792384222389224556853452326505388774208438480765465322038041290557312170336319570394456071182535409940335171998325186722129741481558157592290559233482657058758257974442677613819624467106108684172129318320393170369375963581279324086760258497130928392329684564439281469373577775777290304456264856953566985601846083908772097362767396626852508858347370553136107434404029940053016370183736091247488402586520547078983819987660165039610725849798000077403940731339071899178365943486604847115083290520583234061488709838862309770722085366872562295660279429344735229180650360016364426134064290959204307958527432048777258908222301129610390960945840853691894497983477061275283668766655324491941126048209640322248929324178594944105130252223833516118093948112565412602864402639943247646413082797800113636344376651586477285471468339145063180464936210297119044974902554631953472206927194354031678686595320544671178377565940193700146189305133765865674625640365769284708748815412080771555144524502891537183246172650218670646789527270981277033028439933325811855024447333874894947915513738196236040352336401478046596362454170481857201525777046422885801715402899989814269165241415294241932792650507706199344238895976495287272235532736072419817685818710215313444266149212367546645166843026839851076894851728769680439890024355132694802140183384258145511476413681742423403117065835402133582356279926956418611261148234368006548790819129763070336676172854139109420329212049355502779502242836702790644088291057035221447981674668996506011575970771639399707345826716784294094041771889829762864692587499946823599560552525693520431347281415158689456942859954317099772838771334590058543811202783105388637933223608977174388049303225445895702243222980744405088015268560160319017155021308183176300843694199709444660692550526497013572711446645125295364274845319141638192188610241063264905000543790749444840764739288640877947840043754183589821254318413983714569867010482397215992980350085848399688718120243238770367379589934483733354100126262003807111678500916101106218624585196833553769086918929187949694329114108721598460854384316244087846736555469011368726958218374637755510865189389894081187787432689473162740172347598432157983543158427167458236199499565621861755632606364335201815691529461087002431292324684317128778353613555597700131877755764566065689207397482128056767178033786764565311622798440662260933722051543424032100281352249995025411842239727993518786488472421120118480793943439708481621024317912059506007490713399734984848049853886177765887889124776024767088062717001039187202195383776053781672575531192872969880180503720392523180605217388687274134382395783496503423398464980208460173745099865437463141525627317477006197579478120842016411743801984929426864275029748995899799306053615018376606508097581511174063983737638089515488722445998475562475357203812949473157919796934848152534554940602120803583640541652441072315318137256977873050928692261035987643953857071738310052510116895575665913947417881609287925426563238599732 +precision: 38381 +subtract7 subtract 126222009216536328824893102109429370624482716157198541593110640130505447017399592795252872389387564801470696650084800318571076124908519094083769356078538965167836408385758180575499884173806851003683234112216918923567448874623913069869607259417464045062354943437199931155690914810567444950058275793924624741829637142216259218945477927847999224504497238934278316604970325992340418673783392808920138020723996112357593872602112024376248489787273555277006830822365083634592730259159057928232874757027065185545411341683568135985988325703538369787129678704623309599192264115586017275030637697514201855861829144854227929049211768621715416467029601369097611602677791193636637081569552418087128444136130802447969525497791661607787928076230769527170821380317418736720188505891772370524449402601307736623463209990953279898720679489778885863165214135681925026609591970329471061242597864951494524923959749486094429570817066393615879521331763060653412865993996731553566935778810110194310128303967808484807804345984121457527437742358949467594274933572691150216154106342581407232981095683065134003149141819820204012150451745579951534838461619747371493828703387809869134139663247949359035875568605117816060894238866860980790132036851404217206319275933702038459914535732589704846194058484059208289145664352204348698964792711479760052505240739995258548232196647888980946517962248818409580537838311134010525778649602936865164443538897238016843897990662988153750386837245697689622531703990610557527812432966367041682316560311607356540240967434940351833896890917238371492528676917140840545719257117908487568195111595689646026542111368151226108557601143901140222708285433362452402315889641471721222017694526382449459076315347630149137796977509798904278875352905768857089729319228852412045829017567005318200601452907599341065690833841130717515311980468322158047507641114600190754141603397191836971423388636335354844887855906473095017321398090110053999277627936139499754646266146344198068498068912407177477749440405908615684008652787785929577584001833017454664535987824938576234839929897104801001638380294819924670405000432817824665407069176134995021636902847948029122387578667147165079452057621291711002376209474981693535405966764197563095233622787650801798976427581084363799744074445457602113105428811476832533119281614361987650280419788676063062461876055235429380003864901050524797110377502966558568095818238896877315991729014846093359791993197852094067042964706596770704257368101005957062985224019128749764751118459949855456480994009125487704640757808991526008387390738428470604696948633799707564113952867213584035787604567879173561822138661024116326186761697409420788549286751103396015338425367747146685762891049843852044885654426331543247227007538515232441188212526099893226802302859001659144411409374785039418584537197884970083947707889021992052953289186539889154998290097792829868014485012486256862641542221102996697535749050551655608162614066423559081379548291069868590574198525489327079180626725760339498797503666132032244406747993920542949963965209312946905389355506466370662536139875144259665196595570043863698285082096015415116123325616196985822422043975682542374922500163280666998460708304624815850797518785908712189935794788363728903059356307980401035821061323898999101725011004912242081266588792112814776629780618763055595872654067176302999430839754368689377904562714902248051060768911838610117743385692179273278035603436644968171570324331852270505843561445992846253819387741708451744103771129104172011215995644971419829686385438338928736995588762154811122150351539243912270839406559096760112158621516560931066014574631652671128818110642967793720117650398384367138810117709389300504631314278928910897009963242043739440624775535311320572818390939688353284190401073087782887731477792392644518824972239991502315140011469339596138768160231683700278873420525363157527257155638211910304178018220569821025373537044305059549486909549901839184935983491019399809855962943888042485130588386184607357125950736643081470119408487094246190319171456237168465029543873588962229942891881546333235439863098903195774280539636939165424251060637706512341783551680790096989927898055267778401289826690080301710060256396829264909791060107276632630236619990685575545345918349547147192310396240446562245523846003226647053061472986215840920618159241324766277589802823856092627275630062034877312382118377161120828382655490487712634688887950644155493946942325288446242704865955694704836526888515815844911284395607480835713095882886527635799986207024745780263513223308000643058636431345653613189956025665853771720125169404613693241088534652559600292041187610602876234679842656030045617045536651472469886656636982962310601480615915457294274185573038750643839904862988694330468101414040288255567761949616571204585425603876779901854675637741124082856691982929809422395740407514242940187720954463471699036901162402406598305491709158553711335939471323566974732986554652308561268722141419218804335829881951879756205742947277208458911000819919464214179394448092261398671761006588270283487512544022682031660026270623619906627057621843516891329045394037300872406228902530439983707950877073553320365806321813957151310185156647707221371220023152157020399951377478062466778578871707318181484608873237423608860274116660890850716022050649494072549050395094978381246954326268189279041204390724720805778502101977421919355517299600907255581061680371805400584996534766868530598864060812318523928255879201098160566804532236632609724598222727639692916903913862391930355693794538387216968860991295399383289765099377509269388426248456810771609989894606785309252560639644623467085239369263081889679304002773828441162658496548864660808406018402623863246883590992469908516019130355735005568854932196037479653726824336482541082787792581136774957351079710001038831245743947714575768971552107710719965655536636529868061607839877210677965468900908231087125898048874457540100788228318319424212797415371007686085977727802119541487854711937117408383578840557091486172126997314891125698144261119234468547971117323444898353595483740965754158165593620972853405478979821643562965582658847127373026566101088776143884487376686026107246080133935482077598687085115140950562686689532504101992947311720418916015162232497265064652105610479539901851642426967689981092697893030352270196215319602355074127293523480574667638970677117210648770733669165546380719625002088740439941839992318466384424216466166539038973648778940719643766682527549681076877843518687180990992994166162884003499616372655327980563003708365536745244300291324035473072710468209028693641543363809133173510713804292372758091895341955129921691641249056692674124772297145382520974093908951990883267862534382489099400701414524254565953095194276479134726148498525527862533269581210443438790016040813711182149697221837375342229420368996121159531004490936833123552686706776567831769327279969690731573961708149324878514917427186433323504802065043266826112472884301975470962283415771152625734860001938494337901884423784223981483710884973419556857785546874840940115068813038010037200975536721429556485704453454189327137877090670426920474042473934751262431885438218825394830096382044430416761902925649602689052491004168656406361789444088613340525440862040147329722118222618916510190338371974256283283508474266523524972867805387723144116386991614275970329334673043161257606148585482931864489967661882307153638272469299403495061397813256904625939701227672531926562530260389091189716148364517466065352475512689369585527718186230653148513576205534503628941616217547532936111091854999929365823672433679679491382366462492293316722155039405576300918570067285512666734558608303887314395841154503486685327111826444955687659794099549662307656055493748698770720477502852190870929449595256595995900420799246263803969076718969466017031466107419393154321403993962895801730674586243378136022395392691742241435332418666834555082961311046575524354999335927201170444986343940772157907132232749441865911442903722560360034328521876315883683679247923624598306363179817100318582780930986522008679047425776722010769476830663323113733760781482559321974121888681317088021846788330534158191535337447407455890984084716290946255033776002942579166337544044552530353152558485808089775668992041630947063227186990056890713788336207422663092673838569014503566175235045423066434019823376623604590664746605979582802822423418281137562377333423987924065853028210307998191704901490703342716433413942624643463535624036818615153718559541773059811103273082028156597170698257571586760991075347593521959505385885307184250167281776905059644910283426096744226841824180508860272673030854811682265695913286105419556321216486583452193378131844409445769696244256395191836167148174828369961368828576705000952236925530705825236094304149139637538667136963286571754451893729181705100999033337250188505796722095912865813139679642109788558390759713790567326222144986497025655286487313565670051468415727313895438523321629598579203398955808166506309347533190426325029207969087320603084257876923419982171723468500290078340017346301658544679951635860371186240477563445298148128817336500150839073549617237677463506276613170150545600074767706542011456292196401728672825450457529485722945784265155613554777505882386204948904023971618696988074443551105173607469328502771248231498428369299349489923729383987893999415690874637981009676383510002742285065955209614521814555804209540776970050290269905572660593045700705048902185410554509977124928107245353394604508830475525560608954647278663779286167333426214432949743238761485746798314172144157722455801629956816325492534436346749377509371375933784928158270838559501962520662925043166243705236729422720648489327105601873978962620895218599456614895966066545102007733523665619720414816526298961328029277715357678088464681419444919192086026017302013858863448850401688708106695183079013294999923369028586786866013160106396383623288136308759386198055567431697806318296354829520201123265808904816179258373740959487738413950106806937286653020326169435559014336456627757885585769078670296382042195367838638840845842927777016670338041729376414224724497865465343758420334780906762889106126182434437056458740140112828497752587054388646107659660819783045221297047737367282745817078424698519275644324759870751238547158254240278721831533612896800550863446952362077584212571650198833045838970064079314440856562708537388055693910968268268213237476951862396435454676667206396847846113751842012904951032435678173290297778818920268331701818935221118980221798139916399471638328138701393527129676263032703389706506499239366743974505971525998494057183297321457537689861959042829583289352063970317882552792584737034631940384172675077552841810623781484622865220356230213447558039569382923298728507935425517997850134712819289745906284472739676143803580659401382436088132573892912402174411007143856116386281125958098112791877072122092291439413662369675170033334497708732010112790054521417970765560644181714956782357448538494718384602865195350262900490161524106243667573517352929745975646986590249731826448964736158289358242191864381104989511682829806912665082133915936302641149725311536225316402689172426200139115355838432198755290194366553504722726983083517955481505308037418961167724431361860205330414051957932500242118280310471457393686235613929038455079254012648777978838575298844225574654385090988071889009960052643916081096843673028253648777439320684469456038480951723360886637910772382540993291516588235421070509060157610071303293892203734768288844043644257893955864828414292466989394613320432720757606120327122705127806055023739300939494482660894030036249755451899450563200899556499829147627328059884969414120325026180476512883328104297271410041924763734631375493273841539772782454349544756807390189745273447403600853284205186289827457482249333177662579170308154779330864848733170144336230330778212655437378088947882256305741228430877256527403349947916656918736517457756920763527253628876201529256604393958774506711211854618025900351982136669227971291771426850270331145517661530660878367455099205754562470724889845638904700107029171330073171932212291542020403078409324056975824813438042951179058019677089942951917976905260268310123212708911521774911627744602023299966172672075386275290095846370366407767480576722563002563055222440851960782416949896865963970585402197753189714292199798813788143801679268042803588309367115460224282364619452838340677264394389550726255163191360513737682496075045079503400498224138897052902463262159396987587501450911787115800208032398983106282564480830484190776941217405651780354187538541632817532708814740809957269412418031717239372726589284660206745135861508590591100963557577108598060844146494223004463214981636063164267126053040402031821110451743248066429624547200562777916532671504577013902432877968509163407264452066122143189466239025225902214592739102780005867443159740780000673030843320432350530498223144868620665582498087797347988652138710876820833774637024296159834197918683427007242691032694554723113042597265265653690710830705236538777116124709144514030141132296265052940498558623903924650668427484068925410005178058487064378647496446442955724503669860501982956572407229668176476593189929671111823300969260232573099116883916888715549736463707543303699088584759522942057373631221414530407797859317679216821218382123859562989187556558841270926744399033891599081989459148159952347287268145277105458239111788646304142362216698098546823375061354755012804336117320462533482269075751670655663097973399999579360790273571916216733259271619154957433384003052756745690277047409510890667994429714639949557209706446540757202338684861299110934824940165809791435885317588042471970527205517232784289988118845127545680740814221277157074959506955010377465246232626050843486413182524747188094353735048883034956382504075977149866691869846218473532550437826130940988701257938112497875269081314851845435185600607268081576750364712074849279309338056305179000752838089729933354065040554668288505635986636137696753478615335571620117061808311401854362238884307747850011068955551157254987918044367749507551309371895213486541618034367641307220198751127672732526578677637967420177845780141410763233782574695122871061290693226194050322532343265880304663777620732335185766021835862270623029025813784411644601303983323213928679623031513453485029232763562003905684196397815971860855025390978138337921591987521223435175605814885112342398564121125299802498953717052922394708800343169088721834446885744097363102452652235800594813755616528921514740209976557830900762770088906420162259824269927104821570585791282833552271688348595570175284028051459621196556725882775040856120064061482842260126464911155745623680371815328973624644138614985826311683993185939170013463071303631610731505883475359077243254134654343269493655724115361922134652779055516758845570679226115172723033886355000641375297953742931822128956361603205528337027300381897209965231543298124253511677020332580628680841878508761524548076585262079152697882727007967440359646882934938340266145335442399245673017202788723364336267269971895098681317603786308597290781987431620674047716130959763813901385315058552710264097535562135757748746831731490677621327894240149412207529248703114906621974460716945905020964698269104345457517499212353274806780588496122476932731818993393783253432837339353715690914162116578872112724018837696754289519947720127880158609438945664925982373921216377990783816964352752107459977327584479381552235896838523591174442495348772911391456257216682517753328867821164530902853305074986318151792231775484122026461669403032135508700613644307663010314087567639551084325050490246850496681809253297474948951896163972900821138064533387966445145870375675840818347354558112696456901520550240566236660367715466895713180726902119247008711279026560118496850747001062296429231863779480535318323704523370310811249095877131509872271671837211997929170571540027847451198934437710778715897683699021589988118516670034138325347938460978091417922708813809180471229826844078986905995844063736068904970256954138607727823341827395957741288802989727119218625509363184107157279630166388008251139431165787961631045682723097928394085683128588311298286823422729349366972727609434375391566669024072550323563043308446150489916131474446929954600798818025846381866654603241860217036901647189581973611189988338852537542287137511813007302681229110989178435669378093665724370491841462128843884117018922146762915442588283534327412485510030811722160522461987870813626163466241637471184070780897907138232614919906463509477903974158070885333307055000424895826458153602761802532018160766324730367202242917909669547433150145540404093094495998088412077858347439274649168092499344095134466913654284810435355224573966044189466735324003374742574565327676749818059075763277489267583221337483293552169262231021621328953132571179189399898178195305161834327295608701314971792429008680243917045198268982031147006897679947066574514300324899028677851648686266145643680526055616610423091430827602942289901801185937462144791338145663694020063334996887116652914725393904991751495527393478252395463464048345459776375424047593185314705563174355839099906166655542350900493545083506065222905959785150973954962560767296008609177066292080277790093139135278930465866267558832477373108867529738609139626181906730771168268636735218844070866070597982320372018168670314476770259793274101532856190296546256573464318548735700386125750958049140570566084869857307996839075580264341468988206187175721104961118320187522973394446089159146619064174402363509426374280431791773483628876685778834802832314187929513755274449228443149522907965211222093316574123496235404592107299865826381260930393240776671850245827462005444244310327337174732361828120278806912129680136235306375754175025928688885235133178892766451763682836575489633330752618354076197866026292804239760024634554774266818634960286164172612747926397382547999953631539776910510835793321899028677314404711209251517555726066419445171386006670161640973315219902050269975146473120412227135953015447383284576866996954051022929972021546280878212130870663956726706531666987268965919887285751057259459808897791053768260152018977578507373944943344252140107840008168317642388682487799737573500370369287050261398312133946941275001495078074251314139453169842548134224912040045677039046508231598621218034602180576608180363040958763815110748946277358396541458397478713130938246620762916037033133506637212698579817489001397462430181708237555895920807114181442791726073444074839300660523101444732364174929856843728263790003732686974844943644015348882601204602764456077662088131085431585209217674696055521189828774617766753483259597824264991190627424030351411681381091970045783875375183336011705483604094111455702607442512874026415463043970663432286175369480577119975655508819021628321733292100586138215173253381038783516424809202950694561016939871180233610835174284880531656495038643503981439136183965859950705616307227547093056921330824797537566789177501065267284475459852855116693949908307896499820135919963448167353987394215420263294773428271619425372544578163288914442820012456359956983935399787195772377083862462928582139007554627660557243506748040747128989580812964989043643154684122513058240211626894558632313525340884513843591212952478766964618048365263419602641719666180019091747344343358435532288366459338016591207395820099171641633581685441571022318970589029694982553708638142195270977584285227722247112694808403663322145038485912286805935838235818480580179463669170144104678839482287989737273392509794576485938859313644526239855209867701312385087679002605534511373773970344050357989489818650469810745532781529569359694840126396899471689676052121996830582257039026207471784541196844734459941836520865729863411710609466839023748772546990947189006596226514671045072514999033996912325389447406159247408709846668172833720437771787826964387404756029115233270665606166993143598136965255988889577027453521206766536532977849854249647003111847213397035648947265859903141121640287116642599659731717604438034120950034358880335175850537705506993147861645269622239395963188013179462069646213266901919633258150976537209282526863775672057542303844420840651865867553304015127183730953388485248267866828956870500975083716862733829916450182012631983620062858533092527093984524989280264172648959155647197486032626530777314037005565343680442355707506369656428077473213415297777219243178493492059034697851308358675894733499904267303562040023000167703127725599928515418627289685007574501881381321764567973255795071854573137059580124460340831791277692625419351139184649431521034270887643355170566040031544295794824987140916550454608236321038132383283333274284126370729534969522087915267570504081423114244280775789415378246498737011410206249390374428521624755340928189580647639875520659728650723197494336013196266109024098798835822023730279481117844404696165922996321813365530580322283070797484914378260008644646097157514853662800237355767412124203281502498534673513733608557753278470189916844345852039905339776077390189226396619026002580377740019138898315887824293629710357261787194173418226195015294642357338339821163047385874354154397765543443986536889506106358000987573936639900825997403532731224484657148488325045777803085706883540422580126905423136322746695473699843527118235727972867836650184090822420871760602369050717108898593330103046756624366506784855417596625428416528028342254320118412991214999967950241729522820535371852719280010135495990291607671326768922881532600744501338369102824197942257078556369221748421523353036068625272472492520574884716519407642815039949948679764733042234053271898070164289119903952089848210789536346591449692833683630752203458908238376208228465495110526508280210974607629305470147991484502443705765116965164059020107423489545988115235005007068322765741085823499112141423795823019013860454083483910913754958201778727866011320969271699997232893421977785227427420980759701579672015080750502695783022010750966493281299027790108855990644120429850025607145507169195288295248065320126666949459973898130499903615901966103656265505272520599819832653752025906773397745034861836374213695581016740862353335606789747693430217386556246879669885491276056843359834651265586576870264723126967139410566988369599420317135473878852495120540247055022023512739184708935995822644282488818701989123381722174609648450461410023735612225822754226228454298588246872757488968784452495858915323312116545386679320820919931545731573959792472392510986209549922459169548722587618923338725592294070455733393070385534162697266981541694426411246122166169753548750659477480906462674380029718536379348173060395207686403566444893936414569349625234674928638023822050611173657584348634940756323507112300863696737476331083652336124098952314054551673407237801022346910680514939840572578206387257596334339000597081272154474818542063641256930976657310026876414161794489375841611062696101024450736608293379143783847818525707948980552021206761898566371888541652943681606553593319223886424576157521910546107127651144618457220407138035524294353727412995949505509005541969675030590391639810128417153305957452992690557587714018197220652600595942277896667986478907164263738555902940646471970196087842117517306421884937411510732377188563145543159794256124564130091926362123548635978271993508874439361569561363750504279924344177126840672263920135285612081496499899724787358906894125850271817512851853365870712677101814191878721102596019333162301782484312359655424743025035131116186162891378773497141609474580902167500886632366900507840315497852445727284967455432016829663306945318479011780424669704992212548791578512046352680694217330056161306938489656149297942401588338897928864328100848916806342672256940242699014672413921313312719679840107751283335498887694897950724614311328014724402988452727813427082496589601244153840168287008664610574774679292783042793797811041049221705390579483508278885978132773133993014819930913829846842793841186819571441821296824119803898478402568594667274855547451923666727392126049725788741006177974527703099459911801220014197875055211447694851988336743745553867531619045934601739392570267340548915333246622949258501216525564065041545829895824799441638871272493866711928282073219565115250548301630128611581420010090307328079803001450349745364821621988352690601441755465998976612319009413983409394106902836568448697090893429506501334309678557079941909434379063043496024768341731493048882552586595869963766286152871426433361575873519842959886265287278078498511068235429583596654220162231131528800441457979960842553618714812740667148376395658807891844144432975928912992434870973821417789669495108315301353552941440426704122799335859014007811498577144117144842703088241416911272633380587392999832053759494013060127516136224858006292342078355653279601563650956818915627583434623870751817765986276819432858561430213674694534505502339446650836196656920170679591490048053555011203729492760449186205689415766873745078596723144555625352090613885380297815940427232660159979443935219630234264839271093049900937628867441629173148065420681447645122127746342494703417151274880404146214125090920770355630781684098172716997032553048729922147779282632183455992946296871800965950615998269300502510712065189053999650365122420178542439868641097137600531905064411783954995673038278335107346709119096592905172699276167060605142937771524735181208357503392449537496057851589088930625889434346903913409198752515401636093761619427136763165545912396785593063347130927207979653822307251665301953386205023057820664904734579822164040956944868745186569968621725874891557270406268400729967191569309881377483439825273450857962307242030307618173986015446323995070692969351017690804109881643859870695442430445703571759092380192128328204140582522677588179070322046730822728221421417116663764987424351959752213508014327050092570573107567800482028180341469265699161388812826051662413993836251845310767821682180659911586129339501196667111630990150144321501111401518377429477405178759848327434967724834633536797590736559450320916890948689159343838705887481014083980381875585289112875270947081387637525616398062220515477070586915082618011350325814142700966771760456326485259721791880156398791050440340829429464559211929373771562162551313965407573333239671524329762430405598434432807866329498707919415630847227820107206780252740748288206307238555672544242017069527489353300201420550042887385004237314346684653152058106729427489419874599662754019163248660883452727379008101415066146334358679684316350673683383392004112044578377226108205962184563094248043017726559203559435318419573495316553241866927525392916678191396651094281209320812234118316644247266021528314336143154848162321984223491873856558040528654107880760425891289142463779397589236245039531359428270256258386759242233045251115116510475386484124737450919577222617719651246557273155989406783589366339829326246715055056453193764127566118474210772212958205882935453603237770580275364074771964148347283770304625581547991759425475407496231020140578311193396667830945137197129648107115042808891643570141081324874818087521744645345157735008979862451530166110426430536084534643358199612290044845958818187687575821928594836411623433894689453717843160954132125444716406331215283000112865674307398193000081239720691006217573855497636947768289787257922298324295557277466602217116518849138293586734801575881086912733005129125704923667118788451648419600035920558184943256920148106497657219850777913590799182733011724789860759149934996276522396824427281472337109815616689352320017276265178996085577803906639373370956278894648485679931902658145684873477222992470775669256098859848496416963187145660570402457567822388390089528176975616041708245832017765498346822237442283512704923037183673150903677852460974524040632129920821539530492142154117178504530776231917344845820448339826751550534575630081543835301170989590453648198568892859901434789159488391258701521288435921115893488019551978121276919715075246101852241168313628936054487457746380990439790957821385167706337739634957785664603190154590114441964233824475961443735568983822360854413040921153528714243913242845214883508467412763100134198521066801424333995447963736327126507199820345051537118535509406702486131223337080505971283170679246182704101755293191252099712269576376740996054019875934813143164018719822946132580662579266720419774385884170157145723617648744726073959149904135065572385323373187008650783356745216795433958170035067397090019000626657058156490639697617961191128942761361419204786990962418745930068446447647663088655328643658780394283566203406332861136207216656131765364419735840261466153649978718708280377038617255637273198820437278903162937942224560710524276912408044667993866299093648345067351250518404018799512246920693730816485213195991238691918154384572638708407788772991632961581915096667899564607949714041764430483130876318665595849230126614795077991803718589570593287959972023345945252938167167249425995279865572555377900016486229666322735058459109346398236454673673562104953228309742289285359759145618676590551611874584421424030360003003845769358522256489404533447655675290978585589572550963706009114267295270351684973929919618713555685785086964807728856574351854650997789052469518577117206645969272776015100843948845452701653403298306380642735863428323106059553774457753114742255163344249476264678171395266361101217772970224654758131051197242773244238037570713803074556454151574334461182147264731869720008785339350360157000927483079662337073572646404712416248340504093578448023219693437168149999685145381825600925272108658167276165450798361673991115185701330251358827929147930530467138531215343857315685699649033681999240344141170924180120401193829981355926685319102011139885648867259345979111805722628942871990791047572921097203474769187172996764628351857874970285272139606084714545024289958262223345770851522113399847104538374885727338169113085442861702984917128967255055298045405377661398351647148840234876553777353284645624640575110207848818764217344208025402360580893719558000068871803395104759636213518308291915737460089386000212832213890375048051137178846174179415297126863767442628931067006148517436298861213584237404003517018103768005095801595427924728703443255339934100009603398839521494401684141663172308276540154814663437570221980085945870655408516460504497011393825078533382197074270981896137377093804527265438844063657984784015020343780079112549909154407486618771135896829910688127040028627447051730173760743378946776384831096701922290045699432307203863225392675351247413070826425817845563323948351965906239138555315652128635126414730233794890879165491788646543081446069369048343811408417727300852241337753795945455281461296901559615349790430054095029284686367252288624547290787308067904818436309962021664812491068608860176917762131508445583877714800384251828432816542575271932058544096522352165249881911082789162997157797758206380301735096414628347208741143383830543335266997611386448640793137563477879587009081638082289963175450743116180218268751711734947481214390112295626376219118701159167672812793221796322549634786152109277504400172905729166901199139633862667566725660515518140231718108267994186059065382457202242014575420950343698712604404554797460758474723721096130826498668155235256974738056707189322412029931038055686240507556039208712068272085432744991214510414442680940566905147539003008419338706402461197543220230386567263789717453932634071276585377171380608797359568586789355734214247289163731547288723171099562558973897089268834207720581400542570055534792796499014533721546532501080686959325272527918652440263244843007417927460474319724273410717833322372027138675464547644556199076306255922406247392761375529016018154100533441034874586232912178145828733615536166194789795527329123060095159372218399758219750534744891611419393203104809938103903559935971622718336263758510261336703320474378085300207738871249556576642739645604158745582503036435489214118094722537095412741768411012385325466827018976917497600144196754966643324132829207000701406472117201185656301627298784979355470946978250819427227537517083626742715088752030539830344651371381464708206076387950558790089767709327452851265698714543257320009818930139229568189231645429713577784709205399734604195629387281977469849940829784371880752345706663758685678349415446661813441565316083101889753391461299939261671598212497857523702775389076573019876641238559989054478467850284380495324969133819671162846150579862609059308076691015060831384667949491688158683980765503094799088452884594984861734969557548571987893149537837763410334855606873742101916676633890551333374905475042543484493388652544313598480949744003236889362403074142377042785045730451928676993030243066054011430733611981117366279026372811622477225214967212349882433133077900868395097042952402780532320249238533778631936318927496102949838504287840327213394714489834248943400671277406392895209201142415696390597792537954305711996152855360019907368082885491259716217140412163864535073353067859798208334524142229288282950995077560578070340393196054833630967682986538782909106896029043644836972772578393515786412962785702817274968828784520797003300350955341816244373304843907364459880435677412083892013324096580613836623664447157625227604030457688508876541688596135575481173745225181716087176388386605868275339051217782699356211618169530283692004770922516006382307990588453168316665533562030379292984812346129152057676433284748691514300340145436634791236506914583309935692237619664256901595709281662825412981471449497916803459319437780759295454028389526188008969989065077237018561488042627057986297470251346183952632907386150288442604001082597720207842512875759379742470575622974117286407488323614818815712416271424979095129033213954369582667300858327522427455196338852299350740354809005311098147639787335781734790803214743337390810833164380995926629623631019809114451028593795126349590763703787747637236752461704936067105936958694004355579989305223470846033461520387399540324347477583337628489247175158300854647697968065779681478338255333350476095706341417820931847561656641215764904708242222153213905032021730625228403009920861452901999377180416415310708053433536513263837027958490097521841372570378674026731690631804863826363753029780615227520157142816307322494655235203721069952600797131172957532081288876520496826540041858905030301600005986066044185259692574528477182327823311351378854908568787867542634471044792856276134323679216742023571584320955196540884496935165821018388597808208330926719191467141477961546240026882321075892513994102364449834957432068534672961239536445634242713324292354294413044385861684058850353811271584118575340529812399644554996485600616315146894086319732755561053346463003041049790618811596632529861711572798266732581682213848563719835572367889398317142491096324275076108614930523435969238657834742754206181752550038988832169336887526359600739396506142992438675808172038697108815852759503323158401991799782151821607685948336980418448417976430826431786810153544613334648451096763939145724639472764221728935673625542187235762881744102803290458415051075592124324180533698476675172542344116391208227649359653532482175131517881196808802642648815976965435621555812172161713830812422104046704752639375677089100194113570348887362472218982660414664416169468718939676816015663 428189110043895232222798736606210426330858033059616777173153887215924952456717180294683298533037791856808472837909938191596723207049562957737346274754536659200641869488744188682234134892805316860152321969500312196823615387389794229554326607944913260108834392976507161102030635374144564812766161568659309235286283504810923747826435844350628068928714905037929073853430664504800600965022607968776899077711489458566303407317801800357213832038338356966426259458260007666033953975847020130402570846038870488717178714644063596176764024279237826732446774685797731999959276410459299485628399456288224118816287493998884197158491759103111328826906016441889100310637151326929822014097101632776479928850090756207090437279537669804504569831970476880248261532817370445670350634617102131294387348830706248076229371564754783088654599114109461410846830514803472049783662345382780354830746719341363526425700108584632086908823110480592339667067331624578999866615204363985107869035561877814781627019524198832025744874187436430637847419086411033003492059073546046901561071176327059150633305041707883599749992552153150615796354206357763613700020078542594154506893141891385950853716712569422454461504637760425079540891626151809914354611497465564812815229908124883572689319187217449673432369129047804291774840430021661353402632412352517764314083248861692107104345089401385961635701449866756498223651574128640821169955380559465269387738805675516568108914922588348712870288878917348923671265849859780747945570924890701500851585910820882621761097839414943133721837428552867728459965769034782198805102512909589577831480267873913751395848440407223283330652618266665806331043119205552112630675327953191108355827238579759298767209928336938149560250817543595356100205840271880833089559631192896024266861657951666538270646109814419261808671936151272253322804430655527042271595491605275213442470253572249049785360961396579599173820716956305943939555593753980587930594992418366897769043616661157167559283407122995542108879069171473252739345780976387811748965084666557527025934639513386789699846251825272675083375015736586954807515244554169091493567398156576561359153368304267311206221626590221476234406052205250082458515031779106992957338344630432822588954205522132160747923325287591944331426378232509723548314107111896168778635283439335772069001288481172966458781463022488125678612115983891511851387309403152199247933730575264284995327713877789837497776603719994898015030886464143502348707651923137797020092286972582899538478097422677798119358201732780622713750968607979590465793460728945132150048354311041422109963796253781133632212359329374349178917893629781400575469480807109092797395854876390612557283582353736922068933896320437017995107937295023784859185417023692545211993261421073960145285466425567583256146066681595965307040442312466070918751818357056582134405807676773022593149541122216836042154808527014090486627436207330004612659160931347479328370087039369564487567302506902442477092589918894081251357094753114734478695990806697929305872330647590357202163931744098836894534905356044138662735913993643888370976851193077702367387938739371612570928817828817841726549463926357484845527730352601645790832613202563700255320314651053664332587425991553892160384577353348605930722493316043374821732562779179001170085449367721815458951314444102798616040882654617760265428277602857314005339400656219281766363203190536823271897333540190961662962686880917195361547794343963223840655085925831156946508231071727743127230399046421107349705854464235578703396390402929461554990906128077681206020213303991464861831692950258297016424518091910630706027061002939992088666038331482071476195273571902318256749447591599071968501645726821433931951032633817581506830411639719349496563731960755395307402320632228672381834548560622326004013397613449912852994382120700571654139742930787249107242686108009246800132645074641488721610007255830519288083134567843959803922239560284587011742854530906626261801890681750210660151264546613091382894190774810668332013837518236442918865883262990207874385959751713778337969527795073758450516468587574580187760963984442710556801701642355743441048755475966461851701755074822696998601098524842052719874102692001471093986836508739283903692272246574462560857179301734709536156485944031790077035195054765945568007371020783373108152917989105428115120401120440243710994085841685096337544655314503576685008562041343264593953564280349891988753399810477633268313006708571904208614709758803403206178507036486536912988106918011872294621938759607181666380328111996316291798553828951569320294382203520220673075265715788286446031935708585669535867511768785458552618294874216856826633862675544488996502121415314885964708695105323024623327993310439316545834283339300909171936158843154342601540891721666994522446338080929418988605244180529191315473401192448044875321084342479033919303237407323201828526968141256517934731226617740035785429160955447673620090688074235628827928806276945699826076177402238913362637294542344734904893998227792231381815509383101324717592568872395887968337779926221058243634032689940323317195644989984787117914842527262987272111623956024264360398291447664690916801364474093158711532869136138235094723756596869631789401966437363085554507200778352192456542184103737846624667500416481451126095905061994033459381343789298038930815326597502039349106833041242972551856712475500923974935198084439492730029136979725371376944501125296896099680388690412144485910839311354784459876963928626522056756876391859080628471600423310386422087484528919910493014700873560059423246094610243901560143233223386094845051017100538238762106095242055101739315068062122351663818218238657647937989605279346194895216433624845306015262995244034435904656144127578243572013075372321154369808780811728517734358092460456992084470685787072348659390290083552491565184930442858136482627046384987020355654613956222891221525462451618523789013033162264355777503042694367159077896106487652478844218837448439395771835769177239720949081970448498498637650388068963622779210764469453224524205395632606698554995397049318604529756619817975078742391843550424188640214607912428591774743665790036713935809509355093254047844207517538313108734570963852636627809295056284009664115955935235749849602004594232340631603777014011805067552327538931591818865068100648903670894428034733639202115490936462553070339791705858299315641652893441693449952157708960323188880501265402336730662432481054268120982465214474987826190232406729323384725223832920375624935358229426131163324449714563179407681558592574515218567590133179743878165050857936278996729128530171863862281546475447369211049766794527720604254676265045268693805036493908201519292704186330964806246231400826759979431769388503040940205665512040808331698347686706471480959227250004660118233633762372840839967920076762260367925837732065739161646289352022964339863336014432652090207271398046512807844876989942538196681803751054244691908151400612508496563328802176848413326625062225228254637042667452119447202888226859990718873634619364673357024830765963057438545544768710929800155052209012960128836332771103970106223368302599135514358539457514307298070952579212985643820226670456151845827061583190734310225275357043056495169846957217332332893664990180666419617876514364474006374083483839897696572186157127900459796605024356679827641480245570643895873353483376896244407675088938763121486302942046736760125671702344776423442698093511072163280644455173722190807843867928104951705007533294305419816730950683563511420640714170662072568504330421368982291784411008924320652771003623625001163156355793032992388780728793971056651711976318084606703187922471894720692569343876940474641368178659368368919954425246156544701906497795598701711324870172780815430901037910450328897589280159015485339756042291593864241236475234812428419444157153310680564114125129655516476526375305404361059276068092596006212150478545594672838352292144628478244938498952167847460868055404867636013131572017294264266020329000318763434515226637697290583342656608826635255080720648757271043169447088381970160414243791181814418845712161580164265625686626680207830232958471542383091123067429505657924226825491455530810324518442476163829561173767108262722819174777398507194344608433202075981553655225187978785237048662430753724570204342826719469464397925311432688398358356774006668212051040264376970420481607594925222838479515759994686417314621920101026591745422577863724182295478141379240708443836007818386621982234805274958499668923776148747368725965522355116967310716571378149385534031763785221366843173779148478416684560779195178843692345002403173299867265553675136170756072162456357808549992557917120613272889928888625701916414177408146296337180647073080588811588048293151391360706424636874061378719613360381215571071056758666238364757027140735726968191036719197761962970641228730704911116038462226846306029272139316902485292985795506246213338886073030756645227467832806188552916948063660182446564323708048821733949265957084611090389326010267738286759821388089401705512976592708333202931857110691844614444760625452911669307323490407913891696669279984305463405930764395537389470275771802220464385061427121109662919560008594614859898319348111897264625427541292482575793883829749175531106066340652938646272791206432429494322637769673643908289234604232151774478702509985198895123504973672896856675515538968124149757146108671267711255534965171206374776019936099357335212027298750488790799931741077934537234135180405136424642632365980895737320591510560625445526281802032784958547968860795900240402869425554942361831207109091680572752846242716106589148779242253810770525564837959374112590189703882426093775553264609767440715293865149552124382433465740993347403220449604748133188773981083077530730508942840886310149572164390392040626914641908005891952107578270381027579978510727548330111655674412308890898715434060965349266691525559272087930666898625219587696442011456399032801803809744039006094774900841841196298777374119962144800405275044013022535482704554455654713784183981397639756783921341885238977006162477210614419105917288701149607999396048582570711832870708068437387173068955163747631904981029797139907816419763028865001401398107916978426845149003616727902488950122434067996007260801004459540498192464537879189902731944319232555993999637065063490897352266573062122898251885115727239004347397448663806386451914435176104640991002152522719478564425724949020478141868905032126223192578029083944649903798135661885997880600149682146106401932854229019359091685917964549482158541857052555533784618023425746148887135162185499047567345786911178433499663006621158097538821574174452731338294994155642974869535269007963853834106939194818014758402647708084958575089964203582751117638095150879575267782853483991396267278240033866332654042165867752860205079365635420300171403299859691038074200268196011375242056732640959237079121406493709763936655872599796321582030562944212733952727397553214821406724273407943123688147257406824257439438232239046294114759229782657392610051573290117540830219781038681505240994442727667349451285735926702261895783240071302000586823953318503528189860833694484757525798902520639869632260468933846693991941608092967958734543816122324041268167239222491549799498911606048561120811799166824391296313660258114771784508020568050482300548153661428528973336148448792754399181869670409045660227884162891562350573140432390189094613817365837708473903953700391423047554280399838446311107867490696236283343384061140697994438227517819359713216846689359886594314343673125003858854661461374328625020149552915342384815874208823220571266973460589618093174832721128233331510041060675555503969487347418053012414914187067880552572878924664380666534132648876104093350427357632676354129388115527140496114126438568009097832744178455912003627790669417804212697385496948302289048016139846480410014102185235226809741974769635946546225379761090471408312408463118873831851923330205414427116361089963685136336836779149623779521965932757819411977539130504537004594872814524401409168337148855509251500805063096838396764627494777200553005589718435549566195753436651502410041430323400138240980637005378142653770471404575542713066324103235225867322076610818171345565458437208025262371108696253736781409768958318353362406407787108456610646023414420156556633456845227403005164906762567210374396815367291889729619041692148170989666181328396080294589970373247286699111247254404206543694050129095028302472260256069924133491553367990101935271316852401551819531170877956067111042288311982729408120142862466549251123813483262633358221773699637480897447161346296780943203686225046553232867554541385824586090067932105752155414065631718369084567572512141555010998211121319921454410417739742269091620001112774133905779465294437651904628273886700879777642310905725733172475842606586686801641171206594538780248121298111995487800896991667374534350517939009025854311837844174325924339798772895029486891997303127379542506573989698087442553301412166154710325847914185914133736602288272073916424482840050391825508954212461029899797147151140285404541189898145585159135497188547466494580929856684940433391345481639253001664392091719784578842025445941594076984150306542892168985002757977586443712363748864355689019067168118333612319492751029473627248631879281678146587861747559106897492545112260629779604094140095592935609600680968385572707813013483345751056082932129235404702958221703636184847012479096090215427418589328534020310117809093923989421768839574453945446050367073784627228149197247789472639106725232008786082286299455375954811750960146268729906184601709894803897257677935846357695501505712474402098037787218582834732167214690486470266345176082094177127585807239691009013628812115424975527755982675205060140208119933219101949661342352928916618675996594301331456573213356924931809533667872399102927964747660557182844707111485529959039220787968854651398418248004210638215258342291277709970193424922268942529504913547812881869468395536504864581282346829158766424371723646984916554028477342986205124479958580979045413381080839800636476711119748030198053265509025114118118647458208048558023482231830002066442724535177071573858628280793157478290116950808358163994226766964464129369410840684489222111552334058860522963710491834571298413593299415597439544403820337555084713562245613447984420467205762490988446782500201841005462109777250725472327051245876522480810604138904525457814991362959100263718403155739506285792449199062595225691241310615228146593610092458474833631046856905621650605058747505747458992887636317649645797879436073232490676719875595316590235970638823138199542848628060842189176841129739910833052318524503570433736786446159184903928922705215791919302285209970262914702644002677702469285405577105543459542678120826104604985275918132037981388648071038550673737917363219594701997901320151666304911624254530347707042296206299046450252656391465442828083366193319236140623285466911538470867597400336664781447505435717943645642947462890575633834128091811610333020434724375226280793983441243636011650871086268156738805769963270570315760438930433148079271931079337861604842081278382270556693026965823484111210690257456371998557263381875713852040968577612296979673438715786026003201827571895931515363906226222884153708910471351336779269889915406432994993476078376523887011305076838072451302105123956987635840871868322882732198615888253700190859703848004229542800904601196054749290274533031579462205773139205917351812901166880126337197192857491736884015513009434842575362599323188278025423939427298525626670332798992620092772270693225219988276227292159264548030041313276908628692581933967232670616005220201565472987514047827367521370800441899797834937399317620375171515823910343742378150075332827821727019017004422013503277451462711247384840860290072880716524520985442431305373840797475576589687425485083216002683709050227622398888818330453608993907237573832383222573996372126637955225482614013751114951389954439634657651576128090156728010868608751331291000527984586827335197901436074913378744597955723948878195526206412523395391501029628689093420178593223192575648310441125829146783732503776665031080988032330759588496071974240892025878492749382857653663744924217887879946427095793348059323189638090384738750860359629154870409272655908412935272377538134004496888056461287142168430555825486528127607396960695260084981176332018149409597575855916882726578461621486411818450671095234812944021761860992357344658084681853442139546048336979518981629720056558877842549712807517011128128976890163269917630190806807956947384431630477505516363297614418815178507861877316133965740567728941317499493988665407712092085485554899282647741483748746674421363343298340029266978252290061561621817654356672766211695419466598142057762247252130882133406419045979860148914308517112869605945362824380482082201189800704008404286960462319289711063553230512303644710469085973241749558019431156841473541565306102260244178280926498518604905067674254176414578884320162101373599609353665406595222669517082440527413629223511113666774879430759397879798361189970660284411290509150482817774324563246528551201411616218748961339880766167330303237000840126070245351412825996486345965173346561207967777556930504322146845327923840055346312057382314806364750205286425697252989705086591612645328923303055715621600700789679895132159917863772176703562484629403382227847113712497354942704430374730644452710387927209743749906094600730790064648410965156411443461090510941176471401776241910617032383293226930358435765336303921298963579519363633658657756017836705459878946096740098294720091334729237694763975629990360381103121049964293754370167065113637878027342366467018356283946280724363900652977929163032601631043658072042090213442394522953949086136456256730899465572473432012275398673356666613243013719128042004608571185181457700084725059336451130775401792915257341985587871195776077450676569075624555719331083954449577515730820764088853324107099764810117512570362546789999818296940073532744483778756516061585008961883413572297421888156534036902041503846943577283868613946488644901404993559345426666959955364922076075848204004754646529840779231999369309374627047043871299795540629249900363240202434503460819565617869859238135464008911738065509355243022903960353818999908141739985252944742320136647251619483601629821858503449117801143118468818835898514326228018814315041672381864317701164950336773175990019158231714635845341669705676507244726663512105284195946097518055448659122704545406361308442916555727973758499184316088731396215047081381271695249465185936784221230306751135345517376757881030436471417104974675022440806290840264057652567375673865897497031374178492271640402202287280773131649037646367153091772454135430072857919661962465683581952950466213712598343032927502836457370527653625399374122076552297369645040253484461276832945410504260452430254090158003480815008273194344101534988960335573409711367281599397430076842416803314097253424536752521961685858895101732277192258974107781965973533236927257158687579772165241378859834547219497667870333782070165658140053252746313648265454016852225679371682190149839880989573847069050695906631578915061241253074548830585089832951885156990194288040515523856522440343725953486771671235352073606865399798060609591507941849070719111847642741062442583412092618259131071463679209348063439861126774144200007509809754304559330535979973862465233304879383134349814238954431321329380858095762198080466557497936577728098016828701310081563332979040518374663909763881176527936052411735902068986507764434787463322055871416383838558023648114935830229523841579967352565235590837397338129975955126449848011830565018042255910884744873990739543662075998944531865142859623777538139225665646291517379356167440834672551303158372346025551041533738628525973525764198100177498403461147207850533842247443716037885517854254801098603313054592068314074596886015110749474085975685184299748999260450965619912045490541124679809893240562348171091021161356459385815138352021654885291418059200999916835591000333446846881013013146455665013926792861729107502829024904837423273268816099155115582272009425028595300144766365074940459457790083756047813022169605567050094455471244333938841755222685292612142047217434576374541382467375403467082259649725032800420872766239466954347616055413050593967928805631910537491955110564268799086448992117989338481735206925202102501867264038728588847610951912116682083515328955537004596735415451451697515406480181033460158680490579192978916762772103610665534312616446637340278914990712972965229191621392276629418278524731329911646258412424106275159816069952249134434612216963865510547365751123606978537696938489111218698944948881596298572475751019790759025473654831793432783733535540811706283506395973403539023768492103996087842803796502520027826070921982758507636112560050293189492510406051512996898028448164618596546438346932925467251805402203791657574536455168138089990446386303799073070411726378348251138443849393450491450754623316196396519944015660106592606900592868180799300521896555739478013375660571896282800713273003661374348357209442113676866416107997968461615088702655031998161558132944222637515890845926197711896279476974139903001839469574912636548375324774118883457628371415828712897821934056685676061558494950123657828584417094902899254348683802454694863019060655317803508058165483754617102761572984278880876145730931847018832707575160718265733982326123218734242132147769505836874478433164618001415194031138763301057816935708609133862741198959462440560948531937112694855472805907097388402997093292001304011714248155412012598376133073997571744597383506975111152042143955869035884873445864241727198030648922522044192588459906922678304631221561302118046252268603705916709189362614540908092490960023895874840137086985622239834651250161574401625277542630216427426328229206911179442863585227901341545427133812148653844517170165798192406281274937922834543398592234518004807554347320996565216775183823300333386504797987980459478375057402295977153040664727118600501378794520954849888472594455736688394512130931223910034580329431191620392800240588870720760669460901467754819824251112449805785948986077582426026234337749806942511930633208399531829620954283780430798396066679599815007363086765398324748063203888614252016902109490300386382110110721455233114571297855586461413602211791676075377406533583915958061397589662028804197871172579371178105500608205743986490986510321744446118203557651850117261152541013916470807260690061363588352952367997442792875764940212063383762154810321262237027985183808044490926712241702026114524996042140445376463700740556134418734248543828203439200356584649066756665495790604981048804196751822726721014194602937636169145341064538086313112653564574014893937594461783128242378929644836272965334319268066108482297484395738483309359432240126128212257822589882156321759889612132022256080924889522395255491270849048822317574283148528943908894550501043570565011221237961521894187564135833538922153507282692400799055357921934937311753926407192593539371753983611582000058360213120274987471798011948850415591512571526391049183719397024257107583559900447071219279841549121620429529302441471069710776869491135929486454795617901013509470607586298141964542067435042907433535618342516135601160745287130196545035753677038258176192762312005756446507634380245409221076741678938409001017980746181503129485690033087432671054897935932788304864673798248628044653962631853537945518270564732065595599137970669148416599427568931744871035655108255736028189313711975114910404972736744471663423767514284099878197175688649586089691799561345514883856561858071409856624696119261084748322773009054338606322198368368975881665055950621566318058577152953924039299297059768325115999276393768245788990156307757938396437064981777461838379650063707705710377428105823839016058811720577968577915748601219388983508873553409142800429097216162469843324593008363236119820700923077320662346095367653974390641992276169346327787711994315386620178536574290127955290659537193893123437566280675006824651454929147202096097158986560959348358194027206567651954687193025232539892633168772065809583945676149077158327810675077062702614081581468346318988715878695648500446151371354633158899688181739824914068183542609385621731544519872813331341834493203879119900965440405349674151841188132939175124147471454947795605693880783950968869098093190735836148115074712357409117949002355319493413794066097217878401413861274647827211039449364047074012095240648364240188376213721380709028735447437074894929345270409806129706928886439205397026296759875478075566064748048730086242545245415524592547254963489800752863241262520304828830492364903594963153324571777068052855867918097944821594611023952934815184526561677404384497190949066375163826243848010872704560270638888497936600476767389581626127806771882752981567035450557668327804491323599865701068014256402973370214818841397260656476957233001812471751659167555540620632228133820966904854521800561457814104586274719801392495273079137161186760421610802129293228790418104751744288506061910934593159490167571885712368329221151656824324843335227247230731066999890592652321491199196288742568416013945831702079636206377185918967783306308222417574375353273605204889339680216135929157476112387988931411650178821553356559569876485625331641286358498705505912758744626255084073377848921453831254256980950756954999157645052770739196879690345791317683883246105483749192556865523450367860578113620934117529130549642608435982825608837367211927520979637840677296288052417881257378427029963899139734373856622052040965686784085671681997497304099565143717013267783885250171939818636477662358919021028798140559471529188180359210563190826971161782902324789960284356744982208011994934110429071630426439110324241145152754198801558716252864033304492325743175995725394628105203271054127568642055719287728971128194616728424060689897408982859858050186690280380500720414893442878390267512263185872583667067832839718903622192732596988052277436380141915589864746489630270771387893847465510695834357351687476013165372192269824515827869874195955911065666529282759532125260393501337445984188577514249614602575864594156668886875022234503785910916087317391430935647758276278139815989067868836967910696237062586061518110630623898398882312800341659408177861557268787693798724921193237588880865057160957571374894198318470787384470740549761226813165159859039549777833320376809113953808740965819802293862647123862007805313650931381140782622842114401384686544664658242213802881863073382118892244951903254063461931802258996575026011818910116193910188630616983775235931133149307309361554194510753222362318349964412256023798526167900201104702497527901475714647019099120685664020010558332487764327739957672440506875334796356595620303952663533743756767274699542645186842054439512882335119499116019772731918955977363556893639549666090803580234484414696557349008991022648985750869358490209131411739359475720488372837221660706946355739815748200339371322796741073706189243866231655156672467935198178889638072691179835709793703927311837332330325713668929836484153245690139500607495170892790562105626185952296425263192774476255377896471666207773789916059251044129909889970310308251423633862531537280402949616797046252729370326412587344491608096379435155353925867219304468985661227919865603384275296219934005624924077818672913730746510604614324414826169451083713815985921498505460797730583630769941718330358422520633356190818311521188992845646272014188524724963020668515956901124305161502481935132179299068528471682800306926206222472803106984481962431003427134747201965233788836227818569548918348098887817833865957612472239406319564576173072573801374877266369762117446876324885213011609426465284556368647950703397290074087066529839823315309347094537656585781324291721457664012080913804702546914136864740488242823659802389589344813454153598739000822499735640349399572067119611064416355629800550646278577574236719053194064501781363280189666743209980301259944137888210276438965995753927413479981727637782127246044063353039212248648142937179537166664903403582772915820865647951117356386019193047021098133755025520308421788809544219821054672589962192138426914537607763916304268292221681652762578079318700639059686747287883069314463817409044454314405403315397319778848385136378166627630448093180859981629280403556673231026970198601941172999532502167018487303849904339342937548862400567742711009374020049890818816791900075880264680929816420409451059958976129420591873322910639704247139181662081704453175029569875664834264337096663702264949911772841352407214347423735296893622008006322595190183141879004194768935520825973706611296018676500243155969443039454508350467208723868419089720826072141261799566733844827615079968452581863053397227733122120904768329530896417733074052655669432105223045593821932662532809719796131714335350069669003775606524808071186037701217920076058171704828831363522988427009727079492630949171465775469802123397117808103343124833261002735758008238325807572122098811348952596413638963108063296763889655923865907037916642693738002163209188287045601477012633964470794331133414866360639044239148966975845124181984237268750033542416336592013390159797936809202973116007749253308208257503408467135433466710798033838688524821247315412959375794607976041887810445036666812777120537539771778317281759667809822753310754659745479010108631755656049245189023544047925616601738563478635783462181623206379866180255310092828214460153554846600891166446070435936397334007731849326169088198960536758025871746821163176905493900009698493867703462147680362553667951918257372723860807738449470189147471109699279782859002786668989078459798558409528607195412953467210186131023359810859619745423491398377697129568785043754536965406333068930111405192767592390337105341209792491068655286916731631565131041247051921003012818953254816037611430338939069628711680175897019861587090000780876319418812637018934927027457565523370580559188803745632280183001020853733723804442702000957751058995118982819823409344232678820128545668308554080469498240149927356735248855735420627508702043038146067293354666472077147546683350117122736312588309221395534667639304936331806488470022847553756573658048277366341770130785269468452404966283575763979059848771272698083868319569315393281264953103614106981364159921005770914451741719419037563459865462934511299196338936189252848495241547412672058076566446382920365973610864216458579512874817848960798560486958457150204780553973651553842935666630683027393207983920196321045676795039157129364736905386176449491804639851269041027842985165424600452817458651466422600095564188896217404725608707687807570199012395521793092918177736956970486813836227990873555397246427938251781742313128951299162252779017598787854161394924886018390125778489041882359396641633025559535067789481673548271629428802161616538865018388397046377206430100008977899483067198908906245570140345950673340438483143491430995845645141245616728126341998844110931164984466884206005607608496818949256463952517980018972360968071472814705053532671781380042987761038807016759966936279544400951796987259078507048927477437868009368989226921931778063054534643789162831104281267198312190539074605804262944901264547827385791900695381027486873560452878828514864895642586929273948092300671286426216449264236632791918516490353459431372239851532891787653336143312758913808828601652446500242136338680823606351144686942397329067598514547961300377166883763141465242811524367504889193252800121380065435664191387440764415594795285410461052100553425042558656813960730340186688216984902043531290254107520227266577359753194455298966493677797806323150069816707508663547144830785916051067539936769263475095119224016251993276702303739298130210231478637190598315180545531352243607003687789100457597392276959283072881771812764024866830680243184724153306452711136957715699029988175361479594907591955024998896398153071517506006578258514955520693685690183876484753411917926552961392262222267572618936924328067436029800540618224557119277959296478235472682249048363604520217303516620518237784499479692093299358756436804301508982634304753016208471036970388118250261711933990349928069052351691605210497913835083698725692526091851969261577278538426291073146736997810097677192609290819280780967060244880071045652875086719714270683756168109280817679510518644922939716328732002419413037859144333051582412956734520287038964568771822841268006626936131355295416486319097544149851059962542675956219631377042543447388251235522215614585747429026845306779384424431865675294856105569390083641668794012472274829039859854620908779397017856938944935287932625195646873196462482240112649848833953931859208381013649478584646869645312073700209087458532084551899575380576025289130817490974589324160430400425417717757461861594174536671209960700213570958924364212198337946742239955325675106973987332364701577950423814632019408436296809404619180695525426101445229068091416142780004049417529138978860639262631733010433625719480906654540855231458278605626185533277203527809103157302409555770981255767785083466532764043695803412814078758263950375766978015640374074264465787559212101138196521684975313654419868349819047600316843772544540972778683140651646914068730514857832178945890167403601228913841415734695666713858438729335277530390052750688745382651921610602372927420646451828298996021529380048539188157668567941032363457556093960901850736906644031223353902842182114064981961276506608603907624223101197438160287782474406178000382310734971523441572870760779341633971735624533333572534080636004441332732312489979863820544255327019143605799498179928189842123868826667855802150116500300279107817152916298467295252159371998392238157786750005325274840679427628295178190271280039816794102184230055366739782466607649235416311200036088504530383157689662838299038078623943975579188299741084167113960070238749127092920386850350115259481040170573361395667088162547053785989456623072568332874518198853306652261216321070966986246010978406880527856145982948964367892761103452491210611787471265499590899462457690325002316892538925918499739361747208619127226245704514498417514359287508795384352141826732308298691241562937148668633632479884317655449243345341662874914920634697199370884992674017135823382823129293685894009037223690405962958382299508551557694823520806636280801069743493097857159051630257976916113055359771068536455852919672027864733691361215249875537458742852820129507918700485757420043160555964854100991737115656876999923861558224220631853012365532352305362895418145914586159542118973447044358568214871837962408016996952262762616895486718885134082409366396161060079114577681204086360381982920631206312723546998285904354146813637400266169529291345878117769791108618957460350367808850096454848038087019797421209682004259270317935405596313644753055810371788907846196744744883999661576479046932305684048048475933766391372361309321957923393268038291732956364823975743265833709138010807790399669289690506346439539549515683779647213196470614953712087881076404148880379663448431480453962645910083393237160431637651642910190169598265802074239368113712901141326438276586007240729933151585835874874720201102672499541932669220478475658819236295653006492957039265663303998597523086712659400526584101346116457161186285655884459990304443799 -> -301967100827358903397905634496781055706375316902418235580043247085419505439317587499430426143650227055337776187825137873025647082141043863653576918675997694032805461102986008106734250718998465856469087857283393273256166512765881159684719348527449215046479449539307229946339720563577119862707885774734684493456646362594664528880957916502628844424217666103650757248460338512460182291239215159856761056987493346208709534715689775980965342251064801689419428635894924031441223716687962202169696089011805303171767372960495460190775698575699456945317095981174422400767012294873282210597761758774022262954458349144656268109279990481395912359876415072791488707959360133293184932527549214689351484713959953759120911781746008196716641755739707353077440152499951708950162128725329760769937946229398511452766161573801503189933919624330575547681616379121547023174070375053309293588148854389869001501740359098537657338006044086976460145735568563925587000621207632431540933256751767620471498715556390347217940528203314973110409676727461565409217125500854896685406964833745651917652209358642749596600850732332946603645902460777812078861558458795222660678189754081516816714053464620063418585936032642609018646652759290829124222574646061347606495953974422845112774783454627744827238310644988596002629176077817312654437839700872757711808842508866433558872148441512405015117739201048346917685813262994630295391305777622600104944199908437499724210924259600194962483451633219659301139561859249223220133137958523659818535025599213526081520130404474591299824946511314496235931288851893941653085845395001102009636368672184267724853737072255997174773051474365525583622757685843099710314785686481469886338132712197309839690894580706789011763273307744691077224852934503023743360240402340483978437844090946348337669193202215078196117838095020554738010823962333368994763954377005084459300866856380412078361972325061224754285964810483210926618157503643926588652967056278867143122777470316959099061214494715818064359438663262857568730692993190458234164963251649102862489946814574810554859916354720471673444994720916662284402514811736344426086498222021581539722250520356238188818642959443056396782348430913539080082305556797413457551371580432869727355331417871330361771495744203228144587351932774907610442885295635063635659353669077348121788581499805109903996905407787058745674747214933366714741009806436593631152115491678386969003598699031696477705783405867900830972066179867372798091339550917180734034868267843833134787359637472822341638364192607292918072993159616453582078402722300474527453099720511333857996010929040197097844607791450200787356779232605665074388707783397688304248109103772994597218858214606590236306042846476584973109453510963480537632177878508460104023780735321180733342982607423908438844736691896556546722503244427495986971043929335064529181116621136883867594859443329386968027669796040757227845085215104333307076910110379691871165756020615810483108019011437033851902894064429567002070730368992775235681192324674665684899124336727047407238198722431151931505179398889673476126596038849384223174381281149214004082305842723956496447603201631832019304505488243815109923027567071934647330124308577747849457801528742341474396792637627824989101028269372947570109661169417044273096721557866936919903496657254907038829170695681047202743386815478314760834588523234167936100776685753971230705594291351926705528511641360917683627359250235949023791223462491692717997093639932984903127120489363275999023459269942249096133710209492815749017010952064000724559402143973266559055668674060079194022425133853498184857803001530979564691452429350268863270555395363688351358544875187535179446631738202298567337187366797910536921987790590078140882054876328398776678172792272402111117001247544445784650356756167977807179041157621947597712982912781104432885979511247086970233822160744851719542977006862731184543591786686009493914546090262784410317012689658445402075759363511506816405838946793707725529562878362005734256943454131729198212605350423990252599694427025821742844842086162751548395077646248740523010653369684378805907221327045277286305741063935843401657497074685869471923803699807044295708774408444540342659617705862736561302926729232106653667072281560998917214938829754587517225760245497469544553189191828118892506534384804942452489993676664339150525317577264347616435364023806807783955426278153382748302353071553630629905065613636194398041811074522031390563447051013867067681726193942958491921782899555650823817105220390376072308414914013826918153157020111353257655367208175338379364268716349748500547905861102095045357497283148985377494679901165909223872775638844171239781097211203074602339865138453004284484092779648028750437754954559795476640971294644970441070522118554898774839591275150462409096842461301027564312967503056446334623490471383025649134913570099538846198348773935624164927364565734658212443022068064028699845957837388472940633536035765674360105787387058141363996194225522482707619690017333885823904074078763578051987367417121702652956585980602112400455793757244189398217363409070033696259573801473093458072520805226390581043209093516040556409521217894344325110479550516941848526376221428916863874700604439849231838024488374896306975635493460170707847668946680128986350550839525630735104045255567921484408986248810916791976489058408222998144716108320437194049754735053581568457635597177183911668348765174324786380409734256766297235619576371888216230031638213194217655344727296016797458534148752166163724557738031380030728292946141702941632023405474176769658146717100974513133894776412614484855156410315228986201466450618588016499945804980232672359815444410216485279493056414685386489198031000982059131672002774125919885525788392572674717080879334841500642984444329187434946565511323682034733390975786033517413646342368976722593632822732138170827090409855118958747814736745544925752624554220531397890964158704724254989274724374942946280480735479966392866491035328897907917123832059831337370241413357012326510653073177837924634949645234984676553088072187708344959511656083564446364162998845121673263412021906861223057555760785055565208642577013892829448432823328986007967710272035460714421649455822902073941119762552182016716804235516319734687369507329167688525993297474109953425125359848950499120972037748378707455574825679659511908592010361794914099662674495209528581972487347060973824950068968520381348888182799017912514196265942015294472203524494831221143662682725652445541206536651929382630769195345422631546951794386582616403973193055829270918276266097706671167696841829242637453365319396998353148477254102689277315707811664606028963005619572371143921507891111387227425383752195447696943711848911727359278017245133937087845011389032906082183199822158843938211378016806565870102192820051190691142746082701420030947556841610906208157155352518899411653156559446600882762927301707314938846136727665064023279254617317730739889843108133786396023679026826705886129910853909599493394635104173114217562779104002878507007988661199807815571477955925022942369732506758673728824618330779456474424382878581776832229132697875678661471884604706251875412632733753818155547438182240039389942901411980501681819221106700636694705725758343876806892031624842850944301395257597854283668002109227556614188097919633602927591991217301212563440649865969600314561200310322119290095822192157074273153824420634893098487656372298849715025629441188885132462052971923247159660547454776738388803340490067228952944304041581098035793234410061022148496362969826792427366074236878072813228797771074257801328729476676301650625926288435477248901612306400017166036635902409805160162084265456562544633486864691974041257093509469558496750602356835487942646217576171402060337928048847039520879302332684163115064540509778487624787522267009217780962312024763998989276570151229327924841890282997169381965666584325851160673793483643990511711527305716620273478909011297781722861116927283246960503780382130151382821362297768640284434912638910754013611335419032010520272075263620330174490112182925079702922734637521780412337588182389047846403484143127304706085941551641383520536302792533271314122586779418035564546725608227496221130053558231187941925178774622247045354635858800343426406989512024278124751598246991771716965388362781679734045630895383421745257453352935290339986844835427435673712223814502024792102799420198378197617352993326697854247998381437424386158822691592135424945826765819192544282762585163619651556398957895863965045474286697808925184418709739129810387074037940509804279835481535989528981196639779501134284895417595600775561349119358405281002105315944389896760444522444573001595904126689437735510493857506968407711902039941988810905932413983218086924322814655705472399948530672894377266077066431433518091529275078185272688841997786485935720164424712782135432008608998250225322547204196240713748557188694725659573361259716313230786543443079557416364390461239021509540338552847985120309093013567442956609551420664064296802298650966156737130212478285530804869239832912853517093345542955900080673817051298121083012844468593548540462647805312566857214778299712006769495189050313839461352353403120908103716398213131225493897654367778902481757027326962239106323866789326157162316681319949284716762881324320715168441170872660057736175862852424988778780601211001124089282798258875665839155458121407472080153461653189440979160961665597805969645829451762551434253049783741897746330523424560109207073159783030038123535505370176711636863281961666240114468606570525598225622034414493604555253410784639375405479134864247260311806369357211639407866320025842367293999399872150069526778839259850070316535187046792225966759547678145419812570522393890788324483538203031181040457417457810315692416541924982120294449032713952162233222463086699866081560968367168716529660325859622004960491333295595898792065032378562400678365452875704307378762316460201498386444024701226483507454914518804971509091937025017040403633160474406386455168237075735882462378385020095699447727353639754171014842671588856934810794638571773573262989511684479269957666672168345987335005242724678966838288048400858525778798595360083449076279650200367248814343719270870767184329220571506605441212755151322178928836102485183896173432593786640642744477704040510724460386740264512627450399904495477910326601686282681400034283318134222949823743377047120410730022733884309482001612563328513565801474662508184280109440736016178993617468119962371588219061679881350444287466711735248797560951769518492911154019840463525425857521585320036039642387895795441524541595819788417121250202341549083468235579778744591163379274324676273090182284798234376023469661431861641976204134621163085219738218859750756024711548255171852151067332357335486141261554458950287960048181302489723949279545677983199332167597510387457516627067056412079625094116098634528167360006999314202270350274286197429762987084321830934099943898205979582449260762542558451160766239608762688439654574242881976145803953235123538989819092698643544141893843629531306855056276258284438309107259421354821712750212953433158636918452908017015862378464549297469168354836626476320500754276422036735091403797575054588245231751460298166842535960129820261323825368137051400718147068853866666582273016003188800721085548894091529595403046535504883449690398037304223218100014090881598520035700175240246810465506900112178741411655293132896381669992952230339504785136781897858845154794519632069625727223185773989837404102234492749530515669572588795404021765900051206135609245534228740616722504693026847787536329792134907883726088606079430553368337722933270565032431953541231527928175909602378003932687388733710554997224468581653254338741770398017500610819508887584850222004584631308136950750840679034967155813627557888628454521378457491755225042389230717617437440314845995510250079235889529797848720794092513330205317794502504563068058364491806200137314394166409441887173487484888434428531942878004642912567667347906857467429840869902533245233168022544193255891506806487977141796401599308534367671874781855872500445976418388362377633983461894631099331632106266424313427542594054199084634093381461623624736161063834925102654613165089043259717820856413908059089699033309978446685563398591910585881829685224105893555423582562459374139683559979263432419762709009377496082197016553503745927939773649344582680299065868171797929970517534906609434716857703677951380502689615357345806397215176566523635267414470937199472009157455413964318080259090840266903009889328876446843639312378275772309906407831482279170683232066819948188632420536339511530785654507807180506278269881179079450228559341514651191856488523120308240421078289137091796016575058155654328357377337710447981168257864707704281232264731659735371956769309686977344764342396562325908023776484443497335402145980692324187509018518106128044641156211666701503507197506658495356088692975553660341841710975547040834753286426306545767869549693538253244634617985158912019293153359462801091139337022618383205593777603511614709384245067946999758664850886087344905982565994220934490708013119622056489402871369620561785894899038683528497994531589736828006434795777765117483794220635431068868015742525404487326828446860148805952555359624814634523734733228087416253617410464751270348728544068342285679110421252697640592047535298824666191210566789369303583248664853530998463787937655023777165591169575399493822630314380549266840366063834315729684192797346560441720346017168918790847472650367494423836954577281031056213367487570274575402079233542709685677764341449255600735476469961760337594190811137178644019010640206601539577157871977427146949414579172218515943060827943297804189008740679694010268199407534958350016020800972297739813907582069089732688767136595164834562883627113559344948952497236207058239939687449398866552490138616719568481586768998987654689957905936123419465797810979922633887850546267441998400632137119743268189691415183614458816828913727247999228594646209132405287809036152026867854745717075488623966240172210730967976457829923584812718432343370240478888681370295538572500084279816900828359272354559097475487765086567756893728078486870029923695715421827937296873301000572914141597026144960379825444490819998873094501127848221211542272599808887770996135561080606408875461682048792128418751656905201856806792048966528340985980071131638912803880339530022441346874995719026562126893693866063156601310001350233344797485449280110340760778805497213252125693941374291863661078014517935390881440628500916604984688903981216155389821527952331251661904885437042043044901887375068647854171491389006864285463294066088883790768990835682243443968825630700535504532113593731591147780687299383658578921516704832664239397981773966374037576067319043582850470330932648638382257273286148903897894682400604374024022771786147428632418556623613155049753299364384170090088649450863128415527701468983354004597325161213399861450535016771655822902938743911169867060380868310192692906826160651451963450085496384109080945351584195570618808862147721931889468833874864589252711974130333142366091840310405290145473882317464480885241634474255559386575648554499707625166825772704254385957800819165404767730970323809164051542484881666874966817094801880765366654496557196544556190773767438473701176000082295123091049671951361147158289185526251844263617003175114033362784478488008095090751914038922021855621584526610412237784937522425571602134621293757653681454974377575705683841848419946100280626798830491681513707541434792285424720348953109146733394894848676966158423369238557716519374631919629148950460462401762192583578202335083470550861362707745252613576823541147006229456837412475454651964561723476802027816957711213886840857599834766591161359303550108708832776375332215702536105814300171576029969523458689013199441594360262157252885164055174271966906806577540355350727051606332524438422367209726381184288136285593410740271526461024025632598281355816114286719190598036672234019197059428280101464156448997680831491134165367169943121790459347996125536368130248671234592401773910410063584056994486065912945481922432874689715617944542145619348357890103936673905367483662942605202455763400015884926054310548826321210922354545469785016014743487600468607276413429674554071591246809526546280669135677916967595240866879313530978442216972948985840469885147687957403752065342839713740219482190192512234736999492642527701431748948471897501433478326664944859148053870131281617084060466165892818163478419087693771768814900378778513209070426653792013656032735922623640329431205581679058209694852616283160347095552585766763497649819271770066343843125003618997589487466487204789394044474097506328863999203205562353323967479626206397243688312483299476371416091855567492434570502312823057643141556712276927576825223560700343714341203051528949630010611304110226091655300484962415454851915540511215701788842056196551289037400009834575861618239527745943853381897820666956218801528610495888523267709739009942772006411375504794036732054937649189267965529491050331777992314106483154404456198219164757017812256755019353725979103470153127153818430904043398165524927067424136581458489225576700267906760773580386180022372606245407010260921895145080553247646049962207176778451848940097191372809052588385459966477451986463422192531887446984865481945609029061561935543400158534892170152633122434573012179641164646158173801266325903974687541083992791856954030164705194791102968317335863196749041952970284226055136949498712195770253535912346606189684857124561216009937259378225964244353076583193167261937265980532161820973963245535532480467452415891898956647719630873931660521530578161515985206087963043169608874118073190972484918722274293868925710213969934635482393273812850830080502555873536883588196879096505906904902930406438229494711251990217108983591673791920819576426496220627526096622381699423698583028151053294021075670924179554173443613784193831792086774448612897848247254391446150917375403993148135299100217524581728486540915111888549656277619281974504871957169905087452824013605262322333068276514030741036832638894999972686399002188790097146745294837632049725463739217290397048539669926356451288489142060355071884792114778331765880296358867766176958650339753375408301747902465275744748594002286815410396608095224607205942444555121590259882231083198962541860638472857555562412908065368764313985322859303686237205834929369256242194681502338704457007096689755725266049675102487708541622134641544941261753680287864368077255067450657054451951913801539371318817591267962562490340993140205881424149930742752920680218942305385985519765457347744750769650435283034800622190606299672766382987864847610050790605899681161603253770991969755760748651825978746463959355023170707926535003169741934910746752133355880250551998116580352493754819005269058902038311207895794161894079451249479559529141063609634774662359169816654457303840534766207385842463213464216891711187006869706331479831191136888321328312554776126991689632322113118416542977348850791079952029321415411667193232103452450070487296737386520627880201735484976539574032213223011725206214440093793801469985188232978049439907506613592517305323837049085822895576177229298996872369172399927285485741859877112603038548265980885954469396639029174884452670746584223138420722917232073526511786728105243677059696980523110182936804187410638112670977645094408951543494644275184400580641176096759160343745095630373515085385658153834614432689612104541895374243327514498460338910994739619776497688453764421998628676476713187948848604008411345176528628690322335729848151226918307068593578594891540479407848311325485315704315230300995658347415784487845402301063491540079168362274826116652151992996942380931186349680858490437577422961941836319348597253004050586549621929747011093153027662499369464234882461086436088196307328038849681421080660831525227627680909318567770781840083867918982541586162783743271561388592458524283774588146832043386312701167979173947959423736867872492118513763651130942558400257103873395895412725930978654266120489163389087354735959641183755282598027310080802919693045936058742523108962041993789827865657932594014411698505509177748764915184226902167229206755110801834200044344275218260564075399457665604641573550632077637093049180358014233146939860363091066132786421318969649984713051459328579786954762080883648437546982774228837268774025028653848740951369604432458420057647385664020596861109863235511184148135475383480013330332433080562063774351627077764529108784152990851878664084483843136139835905649067161051444838140585899311978772461608980903072004272172714781683094403067921169040523406449200668998742216658806105827885424660822510866763602953663104523188521392231717549152007944120162565207546494985767154148649339970479240746914614215854880152305411193332035310141776546854027080468411607215690973167748967046774191850272423936603653886274821881508586777051540789878081345800289146284219407611489022580839014240567890951956777240889707638643241473825743262246754860687528404721910332670159120452010795282831877143902397385179367744637999947654919503448189912982673819257750362833868950775683778789824871972446859389308205789921475986565966361938643577509103817150840116970395132582593612743006014281511476558770638422172203428184128740889976667171281480847152270604040598188894715434457341056585161286999714816359912374091290313335221590416179546818463945615569334908218766291890418246685301502625713884607865919203739531091974288894054176008389361402829856638242618691453380743473107051282554061319777724620799480729126997728747769197558426184394232838702363330235077040987753024051916946036662656327895135748337815238891291989129551668546470076165726450775609766041293996076611239041371130038464386725843058731815820029663496076251719416245154506078859536456806717315284904433383892165582409501743990427790468932033420787833196200894098195173387852960137607115977611474816425135539266570493869433753173072333840105205770197871603487730936972445951545895157557923312206130729200828182939012620557606188490896228965120253769075056910591800560146488562963947362924426039631380606128670095708943432613379287834732596016951193560062842045141932342688469786303018193853928131343552632675596796098395798904430927730009761756896361862435278362869370926012519237291927015366767759424478830069501465728956072173892222449171766907802575743572584332498420616531823753248127575663198205199059438882736731918571529578581221444078296274480511441129183403645409823869537039347917992928028761739935728074330718202266350064515466119535856360976245382662964470001026360526415882354900370767808231513953018204172820250926440979746373875558728000676109840537018589001228389017557425785449415916088242931241601470362830814187827256237598471942987408587551168641724906189351225713025093239529046940103347771340092680502958635474712229204510727727905879649659786352721293123546540235564765110702682517862616030669216754759995621192247291885978471900729099081575168933345777415401207819279541448920914533576473546475764006485707279037966289006406880740560922179886580920766566091066804114893002312733053022059188948525678151632634454992162546513130935232988839982825421813171391953301164413204553031335057854344287992458548260011037030653360768072996399775405044749301753400742444392696003354455901232094236069415018273715405899249681603404698331126193306820783080423080934938993961121146813852775241529257518612355968782247753235943713227644113285483241406040366097538513498781155126021812825342748009897132421246619217696482546828667861367512381704267610680019136675809891644013066492897810272015425043754692161466070564682457024255966780636983736191622520717401252234480696983796600282387354403802686556713928138037706820808870243498486340367466133823655247075254977896950345609234237771904971552290959913305173826540096200466079755598101751207391825582986335045707030230462985827686103146406832499252573812787571070550454872522207983813515912818025511261718742676031623932145067843397648825274497032296948355469235400876082961111505747900663342038869823906400819661406186605290893776201798469035030342902454209069309458551498637572535751572521519547077007423154633734223089281413593784437633438194785456602122599295314403464716871362981596469671581890767210363998649883675175228869123525191714753364552111227156996789890521462367763783512178756206205640333294365621924234013588000364911513510622008437647575121776400777677873490527231052208975361086161689865145485951125432081227274843763400544828951826168864375267724392656359148383479819267674220603615754157329552810544550771129465293994692437561887709578864402126369565567735949145513073199923935711025215009703404683338390572347422184694507917910371437063432930150305819951505932517051280669075237541117684849183954957755375989005896476162134176889127454653109956818097526254417178059746053199535227351349207101465753503509052022565453478139773746887149537097822349229169709947572433806770334292568732335293635201941556526156771531036243327852789237310115115357996490253145514368039825543217664912069876776420178629210136326460375436218206494479604494166643240012646268234663199518623643260080314118001832690309953117071864641208416150889689315093715750615036243746891793811118273757141572604574203447346996533939649379608913007586045350088023468234911149929096073048623447364505461661587201181650266253800911444413770474047352968347556463103904023231097412567708537331936067202511681228003171786530115546625567593432817619475623147683301435214386073019030394547803888000326166074129513679403281267530112530255262339529827958611799313977511394447354740745035013351816564400836218829341519759080945327301912206882359514580784985889827819866605906288489107748850931253919098421931470580137299136200268317067973783423782217380301055110700481020000841573691107387501862495455339611234638234994989023606204875922458698320060503307313538889070845151554882433522746331728317385244763255191809292429108945174190755231209692039534211937572930574562006675013512981588532151288211887948930538756998925008829678029003666361469904744916430750530901570566163923800459874897822396212560389762512711905754517296266951090106218293717066210442217505706285653945288663729346389993780868193492800447879992475329909469942141637940465978617714412984848132576850853719015702349956301401259895117440348340676770277774854802235431148667224751007224381251545945202631108627960613346921860923552373039367556695780042705002228313984558830410877751028803741666136745941069500367683759241270015822452383591696620414872077375116847710538216471115912710459913301432410128200033320164990002270211831757046256540175543677983840790461058592031556139250132441198621863960560083204261835803436928325364045565904291510711516159583032169800357929702061962757896881396368526174645799987956773304273209836764556865179427961502793221442872548438213537911152607273677808501588895445124298065257512359662585435190166652347611897321333577475169103287920461760004636990060981759989965576137026818150133786230512457512238191924284491326418236710277049077329060466360026021091542594096812973147928517437190208895844279178953504435817149440456172127149354119298189146125206065119949503931371945331177326331347623800601878805579657716978098929517211063362903624308325917673079103415156486630491083871337849659597871609195289121245783964925364337501898469540239545640373849793611832701202669855442600019128788177268055785512864253528448440623844088675428787195345885792582812162022803349475597222503019566849101846828089833476751071524476601517091756565843757042900292819488250391400870678811951901836948751742187782983045624399261224661516285429110826538390774167142952579633331464277552493612221626092005799191185388525555007164443627207113216926887780163568958882098574310113189953667193578258554288173823863699950540431929639834205560240083675860909543127919708684657158259025596115442133478989255679511039021353114273925813802197756897770485481144610586221075740346769852117524055889473238597248014823666975735801597681081042728359874899712119236873443143173978163512630720991925386109900722008119885825606708853635065631227094192556226797768758885519195521539240998812729355889007501105178967559170626156944742044829026574401265758972450323235002608910625147048279319050013683136898845142800041456217555350787776093059337399714838766957614175675391916959354264157224615932648781724502985861264054272758263918811362341014938291649111961491434917256176762916151636006727381906787009505620678316269418698746505439980216199997691291969932473886167744856441540204423170723817730318265188700507790858739773337305213744882328930231438059164055874552790627177727073910549048329826028102833047758851046568184031741883428986613944958257709325285279664036470523307948925922368054583095678031701231204473751003407926376398193276108045897499330505464883744856808017577735488842559830066635669305893220091902106910888141780608066374151656337521553564652245467168870501606663311053879817489386706212277781339444483007556639689892232804686931797641068029356958673492208741560863902654629929971853696624160150252064618555194347757329371784284533585446082158205184063538230676191001611534135691120332622761952581137035121522940934770223512366284869982334035987283552070521957193290295513639110364401448721535537784435090720879057434512882805007151452830244851060147586989144174601314916891336659857394915959732671213532670475184263817593799665723520148993503638270878145868505523368608026186601439337575980221791351531217702252663786006371438482250588006013895931659807919003050616255765841964097159353752986989838115657387485348486794219123485854259445704257799719734096556232052398585323846156100882546174358760147832907930423580419393572476989351917520783383147310646917020106751288789697657241967431141416190506891964053342290542567090454158158602172871813621264120767231641273528675810416683135704005411450460986655542425910645884905040225357792932348698414225263261823340472429283715368909454790245788553760780060541356522416641845045579457564864191971887878057539608309704917752283110974218876289448007811297263635787918228038483374221252125831844954605022026407670121181870628930910564599434100806751572231117883420430749347335307335394297695097646476867148527180692381069544645148055667322488369129984033757494872531268064480221203632592945526657291975433747202474967386547891385834789221513746830313197713771258004169142554851920645620931250720189344758527520969798263724212731311519173581437824483585565501295953388899207858750694366657926579485974633953552482742826848356381797299270080269346771057767997147462896275660068927198486437560819460367961741570999493117765838163991094347960581288825832496582433817409529948860726910373913812763918225175283239356665130972999697370258065094186699768506485963588043432942211219693102765463812491617222931604807289509895147876493819609397004348108053250246754989762472848875021291433462889427390228067237521516471303589906676734591852354113545885859858988158246665211404020864650689431879371495222630086059938873186259910712207493850848995203823510068868475578406705628862266691777361846840362001399708147440506073103664695769868882359331638303478140771807675573230556998235892406060163730387007737195964547359173525275843044988691299284627744248650327723974052511347631058432216113674872548963369673717073410357020157686989717188392713587811149548894176079079977078781718093690241147482976166829983666859363873024739750617664553086019703496026155733273771014914160298332461780286447246689592766792257635479783737465644121650659130858602425260508432357291222424538523289692010920751109374561678189141665760364524157910564514674065283847395070986057485436192871388603929569349922852500665539889869776961874660121306894708620466387889547942449800254395224651902875153740723658035378382259250793994325935002970142769300837425971148594771134716342399532601086134373285304769972474740169361424111896971333617523150647160758110821933845383464069008133573239052697193290700267415852949378210606725896973956857611252840044810132083086411598028482552384481139084229354509094371595391567774605515509494047096378274184552371878803822095443759455020340247736362824918938528435260396486194392696237428424906272705367673066219527426218210579383251341503830874478716637648782571313174941174396745465808571114284391327516298872807264968509144836623710038236073160044901711291288270139688883859466622748140723127161701152444165110337221835852443972525757018342159055228034795051910555598195149308521246003304354474372445556282743619026714697129193225592877709575706456911146813477929084972485554403803591300642966597106341165805525526763758098800074163605141092156191082529532030320674805059081061854287432676182068277252031428261262359833658901912741930960617139738388964030300544030919422818266020600418806826642741219714105292373708071508774697118558157812921838448475398096659657365765921272572130398625943175327610548624955206863134613048323671441872784442472858678187437489119206723030834420562971850987590064160740671545289743668784258861145796380277311670469747055408469383370188232951759220444392164846516987199756443502910827374490437013625715005093338360241989470484997771262340948671662114713699470962683295709992432842643728641680905782989639221389460086019841003034379001984164571281614772698679230210746474662388541841968628347170039999694020597688530863577773903386186765124515174969329263522025524769411441341560874676281596143807384525110646939364095713751001937236762557957856767797421846865272542039553681264825585258081942273987424519728074682340675493177965751883674777419342074333733900295745550394414340808607603979181489271674729033716514440431726252840230105213052396301168748648366886448094961647267790779594583261670117453147304845619210155331966570796086646327511843803418111656459599982225588359781633876633767344862028484737332919252720891973593383648617521731231722227001498284980898588211282765197157860135691764924081769967614896033683786551987830683696346525456715186888501997842694593636964612359910328378969041433773298771785427404534978658571111791107313938981422511654709858011088556881667418755657472516874319516060328474058482172939084622893274790000850218219675037197996980764777375770768143487111791114866370565402387635873031947757185076998011103239997191056890170457019261324419173603387484347116164802223502276059029688279973348517848668668997142366757079153891466125505469984287002904151812221709707161541378509685606975335392328165303672659908468203851100857201075232055555124576941503774047868804441805385497320014891165829460678553148793093467174397225119738672534281485239929397046159193617786126636247891128202514651908022892539513162946042859296981383121317086571713954165091990562992333960672744309710044779324447309079427623398933685501149919226284452185532229633206421983943483681887530324859453419250841272529915613107762705530235033878548019518189772942156436931384658650727774805938266726883028339290433869973222600567318065845417732103597564195571368784750118210627226353708247758020067954678065917558453856522576497047664666303497105405483230902446252286626287626909497328973142310513164111882363456042496770116187165520313488428136 +precision: 52913 +subtract8 subtract 656152360705785735083588718276928896011825425933775457707495186680589087915017924448191581173289876171327060747236942884039942261116910896612556388163375114482935848032384600505991215308690090021348856584834045139448423655563281531135094980732150256324791047803411361198469208395275208998753662244986605087444695633655125168086646047549449510660517086183399215721637220207608812532752642410810992294312004201923138857484417761879837116121921460876679262786569683163995192077502340047051800273562764593340075741020409978867287289318302183301967660378285325777073351367141244339419744787842798057116023097605332960534749067458576902756034674555975027879128895551753840089180598774592909862728315412144005153487418766394980514769781869809934408861986248015138032338817039457656798100950839768215320413156868819896375906099815619449504208708809988211981547475498250338382061450648678095767265826592397202298738218955252326584801285521818003002643317691151541190621012444105388104697365872296129987997496045910123353792227061665987915930373030083025098880869479787585027747884348868547863026276724912355746097594843318555191739370800706093528794156450439582755861804383363307569265410995633156648194990539505529967605232247029291176817647153822353643795312401656165867998159638861922062063271284574821118160967155929375459808179194801849041959733096121026593204361427541135192844564870951668021900732333460868154459429275403390015985472598720264190815833129716205039624846289866669237190101268444492797337734209359000046054426677978929172181530788076412859842940971241892742206907160718446934456095475243411126619636256371674711312671520141590317365910577322461444504618397071098387874257774467899607538828829144512116677650765869339869476906792403851854581881145742077689625910973783872356398561598516555782560448838669968646571374756895337508703722664874388363699820240663167906187140577236032784888611820020303224694982952476367814270907259354947147019428701373944558720018238180182342886503403858408799434736559989977988980745896248173230519745464006012867748491921012350845357061594911717993412568036438164903857519663720591692370130560209106295698722633618957174022319212184845216201349930311535720717653050000505660241824393409721093284848389549904100574720781079612253753974969075252636748371803304567031327830279905462012280049534301273300868979168954281138054533773692750389600368667225873455804212906979087965172430561619164308718514139710856778004394282593318681836276271547324409840018597282035734410621864148278370933917767074912702010409253534370934205007619655709238248921583976873445810479628634970618682460730649532159150435567217825676528473046828087775284831604009014229724203417468258586583862902253077451779169866300925685801388457545145083033288583619720114097155722475719609205168056568607664950272531114410137052649837404921201844786608427775357477102665385491684815833518921828210248298306241935557002395323373075890498332522425803713651996495526293758140145222009052740407544196798690603396246657964518697475835843043751232666570486598689322540506868057217170491750527064784129335805705060072210992658734026385235236488654636633772341976404434311139545147693549891079160287049450217242234705558220850049054964502389802142085819912407101562695145105410112839418247748456932187582922359278580846082756660013125822179953650558616431523477124959382693859205995539526887957155259221031517611766852895833183760612896708536448030916385598276978365168182358148534337972795474090526401044643226313844969738960026335220840269805761620820784769730506803623110611794016706602022718597310023651246937683786171670777882531879523372444609599135057991790400364951252200376139734012238273597778958840887755004502176764633834622288230665697585113631728008198875485081280556711856926531697200686505353446885224890685816538544411597604595204165467234785471206242414692033888764990540549108774714871095952196922749154848654237334585326802337677531865419381069460589612765826065531992449014708423556921889680648662556622007126527134147146476652862329221742294260278131095845956361525263605730356985700602072303981048471723198712890285918984717761881263995480628892229084172949472798752663289675296543415761266193950125351624102901114267067771015154057547924727154764242386250295368976603612317882227661353015738468381006445260814855855136964417818745360105223019094982098375621115755803051406879543773259456453966954309101813692673189100302107520160048970999333418644633041993897148593818991947663621923900220016568548059262689100573404945446032172778461034400099239130171733983454743277535389398006616312284698564280114141311464116507652289392447069942541595936253484912554916120653078465540209425516317006156527474354993372417304494967647822114270602650839063488717089567749516403961648099231703017734706477390468810619267070455664725074819392287119729097402393396742600896303344836578229335345206431213043535354473983008495561184510474322190463283638193720010378755551192133365563862260122743717752806447443837346563752704774783323128077668259246871560195855978241673069283058341121753885885964889260978626509756300105044382731787222773215977003271000679494262872651077693173446730101636628271635429608318536674869951784631710749317127743228179466524937145994456369240708416321009743578860204347594728973456978205737435693937736706644387599308620330537052668909098592474157025831793113231898029355319214522269491830249437535331889038687640291231874877063858017108810663188133721835676164032844815569379959755132484046208710633363364958448812691587511928925880131598126171315022424055336034697993047031023973465205578932657255814294083687460022043361057783985743099983803134452511153129217888065123376253234374334785670400480838545783122404620296939679225969714060969303468691738460775547467272499723598883967178489928358176056423989514181346728920851998876273420043732528149306314439748966069362880977 937549454051342529335344934873778415762060263251159448514071262681058511518246715103146488923108283159021467255033619577920743717832397247418235040003242146514165175078386620263416180140985843601410014208489824824346109323698093019598300283599006306148565538699291007825067254855532938790595130259426619053024031758072347530056743379476888927747183484510578343558450396530360896716827317256125375497475635965109426321370263537162125629176390978187012985091426096131193711566462896314934862825817095153593075051122286593584448485175792957644007629250730236841868469283345686272163157721543055496221003256229129734946360487674345441783879536884168927298404957168810398828341740484611800390161897494049951860431935053110655712009970870909205060299286996922269566879641913006108638799653862783090677907826721503709499807989119938719756342158589762697046585524557777432076338893633481533687580215291592169731467280190616951074374661636032049699967679077104713008118569220978729593615760881012583024445541201068544136261400662299557013714430985649694088599042709051008753047539229769666057173689128685667240552589162500479556710833021567006313525604398149026850032159794976588765152907569462295518401719480615507885472050932385863783053803621289754006619344169550557545564148016726917909937328710438437929184239042563372549203607545921661708917569658083286074960109422559535197655670207520307175013395766300131161084743304926309298451681671005008044249453256287791830475671033203711431792445261773612236327420027146376336551171139825438952637599875184337027223851155783702611577254678904955828283202321855915050439109044680046656549967369883695093930803122214188814936824637063308214363898017365946444619959045485305466906426831888460246789396925832125809204717966066131539973185321503798053364564372121326474246257319450972372498863694953293567204969538316929603248771995737222390218549083787249134905740516462238256768771324137638822521777068771862674861659587903898201321703281638363066753923628959093422292843666787231655167179490514785740797522777289397581560932973807944404472758569292620755240019637798269746348237868575679491104527081808231671909759505820487553527153076536086217633536732611562078979885721698686841729687017639728556270842483517400762712552182296182211552848823005002172368857606625909495694774759981734592744953260115157768268731472210205503243846254802415206660152119999807945799043657737315267987674934398813807422884296776002044845322970621806988148400578223073461954637107699132417395702860870557151772727003345180495386769938728052177675424058694991717285020296235090483623805509734157476092802780223896911858819390715694649842675423237959077749461031809800893088233683523321465256607072977385501765428295823287556581790624836812111038506689209070406302660004394045465576671826763803971566671787307910563733020398199284088518828402285837527349293968668819824271755628163886234045523369938278277340186829638786431873884541138010319627081298366401955580401356721166249748134360899268596215944886916635546056595842409876733305569358343893519593824951031364776031419901618760589841712873288266364138216053004815350572669914703979316508564075995536771428895705970266453321445783034797052385805839771656325226382301743851268585701234243575199650597652996435983489241861323407446888085102318316068798465632823483204657383256375663681817601636843583510727695159939605601558491938844160218592520402836019406563859545722910802337801968924045990365945910303788262555642887625319510178339317804384765538922089285928446403654930270268468144028992061774036277577635242013855208409182671485614233781227325784231014133115135501253071170179191058245663587292931581251661173274169838416047908365568309811997326839069001229681429362087004235762455828764445584147795578069294727615788169188461958617657886900690154805187321041337613930395111182019354155519411651266088735163853383141249952398909025799858717280246520137853467521716822462605433988312536224203700075979448782206969750098021239026104898767645307698224164521910505348548312118032064212171277633852985058976652890112784919294811181320534383857366754763202303514656582735274561508775881809863154093583566743177811032965965927116662306191056874381850845888888384464095163248787926751189181464579075826539623042854145112159649726133225200266329840816574942000992264552973483735666468246451734751676981775615398619047103190472062650511116092039854736254278271180389095213030190971947312728871284767608209922536811112250564315903843139270614396820649898935634612722256292762259485898700747550414099392190537310390043505420282683634325047177588832181849044821118038421298999130019822855534821548377719422787757450471650312261328693125552975851644945796239854456686724619712504780916187166986819034542741012205596753101344518027659453432290402897459778181160714591555596254146001242196431484155890258627465533094446886527580669697200319808313972623898845435084901539907652826485025277641093578309035076161395181376799719521043018372279486973168246372581578011223374627962286558746593753279749163545178991248342678073066677470024625801030610375696720152529284892242540282531145291962477262192974881251997762887602364590233874412069387249268990480303833627631332305235462446190330037642579626114052779206824257174495705495208134910259635340454089447579488957719429322450779161371382388234855920500777297252634744597438785389827052925677998837441355423157265236811474713193987702657034638375757218803271584796620886277240161403081319744812517013950971587281685388071263977069758363737596295968019979292691347883875212209925343647338528642453405500021150910545172750693378667348998870486983340993808647806815170142383238738980445250685566851867665245495580514932422014200629008267820624298905943182282356750338944522120230914158025680264279942527233531772093950121242085649445726606299546673448603191816444589350945171528500839467401660387217668429 -> -281397093345556794251756216596849519750234837317383990806576076000469423603228790654954907749818406987694406507796676693880801456715486350805678651839867032031229327046002019757424964832295753580061157623655779684897685668134811488463205302866856049823774490895879646626598046460257729791841468014440013965579336124417222361970097331927439417086666398327179127836813176322752084184074674845314383203163631763186287463885845775282288513054469517310333722304856412967198519488960556267883062552254330560252999310101876614717161195857490774342039968872444911064795117916204441932743412933700257439104980158623796774411611420215768539027844862328193899419276061617056558739161141710018890527433582081905946706944516286715675197240189001099270651437300748907131534540824873548451840698703023014875357494669852683813123901889304319270252133449779774485065038049059527093694277442984803437920314388699194967432729061235364624489573376114214046697324361385953171817497556776873341488918395008716453036448045155158420782469173600633569097784057955566668989718173229263423725299654880901118194147412403773311494454994319181924364971462220860912784731447947709444094170355411613281195887496573829138870206728941109977917866818685356572606236156467467400362824031767894391677565988377864995847874057425863616811023271886633997089395428351119812666957836561962259481755747995018400004811105336568639153112663432839263006625314029522919282466209072284743853433620126571586790850824743337042194602343993329119438989685817787376290496744461846509780456069087107924167380910184541809869370347518186508893827106846612503923819472788308371945237295849742104776564892544891727370432206239992209826489640242898046837081130216340793350228776066019120377312490133428273954622836820324053850347274347719925696966002773604770691685808480781003725927488938057956058501246873442541239548951755074054484031408506551216350017128696441935032073788371661271008250869809416915527842230886529953642601685043458180723867420225100684622858107106797253666186433594266612510277777313283384713812441052795593559115696974380902761827451601360104842490718204855087798734396521599125376211036872201530379504833864351241001432186802300026358262232671698181181487862624230007462985994093967496662137831401216569957798873853929749535620485803321342464366944480076272580464903725813884467399752303255924365189312481109664817059783452773934489994830750758227302815244372779649498704370157065145266840928688028488306312124306675749052114618510417096682985080996722278780838809236270267793376360685193681243470416439039282479036098712258217037813325881099186857410342049574364752708383823497868973314202376409871302464629427800786663364030266055062878672744170724308049986258429522361870780402167291667028005218105589350292205504281918325856371503770195196306616399256193500426680370560794362886674041793858062169872191303283328139455922109242058023797225063696342720337791506265710541375552018712206605975084802840108197440256134712113509340590164100577992819698228952116848580759999366125500638998871745204197053318082974147605539669374553976460505907168228194153145557318978430115336181260067345544166587671561225631883748012420375374161158733584579810151100281550806276171417799354049126499881321836473636955452547586323144070994112866475259305162743039735222715708972810357382477429605817047250294124511884200816868489164400078713601336679623128700980753549940186222803246649014374354306885583325769012000777727945639728217670092151228983777294674578070920569183129259593225563385124508647647359259261554970413166965841225307253185690585361461962986843543539612560236250583255977880626560580056000253873186927980329051285033540157600142450129406727422056992824662304367395059141131421306650648824100756246708662714297512582870689256471987775453264211001675799468988648776629740009335190945714784568684313169236574054846398862842592141177684037929847661794531091671483616132936390020124927902122893155154743110463213622716674977301083312815469183009086996645141602157395383371201401835465169734990428983373574853963130696528587521313564454195619932311553385706291479104801766296816289843746894617814382525201354482570228338234213302637441365762775295608187900720537264281562980896181016911597131633539851921062297236792558776135556037408250997538913314102348193935555731449697118346771248649501091629528657886793517022997931347387420655770967342832583400769299969169366696422023929888864427152679900285434189565289494817215101970496911895475648690496600633330387575350033155719357314039866527969089379699292951407138656060050677005148244927040561276547483284764706976726957182491477730430408464879006781783169302844895555529659182863152916127459534638789268765499463314307315217537133094072896384168195479252295116029003584940556379560221729272668190982387712350095324485140589420926422804144364426792856234068790493550583182744091467864974601882759580363490961101893044346468316010703087177809940115315065782639630184666353957180758249535769220361798928744231447470669853178963430668925494032877603349323013006669608790008336348270739915065721114718093642772984787198157550743922518746500258921974201757734890236524671416787144310432758977633560871985296952761380520603751696873202294414400159589115633212367887933787289174198391331399430992859360474122510751981993628513042454726994788926235589963724628343536152123281759558033939693779969482122140900887773406562037177862098663969394347143882341739413567687810223089106439567405155711967701444571011832149201341862553343706393405288783604380508050366811216285749040894902919592002493944460358468997177445339593818036122853054915183026961297632750863821072070158580104286469292121467678786744288992261206180146751613719790462484698219678609003503056387036277975218651539175697250132797007442803634647804915460192883909593021737092118199944527751192940171169307212643379194525027652694317854787452 +precision: 32329 +subtract9 subtract 3334655993042185552769969066279111101189038272449614214883533648130299753483033627254131655413374227095282673832691112496735609686016313795115071508524018112694260651228965584397293528375961480752150352264271436839934866884575409649121853869350274933455186298046310090759714762251629509864091553952019135507378384419610389789697084868487309496257101919300268211286668439460104997922977914874238522969278200629063382602210294441361259002602969016726737872545926537177186834492736546165300460365379502012674431174297372758452120464804468003653773993783732605674230719579707806857643625257190871657784520789494699119219989725338822954707955079283703989624350664030035002274451253272290984930118850385847999186930653966377844291178906602464008889607753904131519459024683841036213608928331802009041642506392073855875041812070416305124561402437637622960707224892959619805960725361231798913687903966660907919491470645078061868040810210308863272594788277778498915915206377863245118266714562183059428252487759156582127469084059965086887543696842704456122562153809489056822338340595971127987358450811345158864409185490553490002881743839997529312054385234056272407799013586974651663240267423758236931441751759440114393107649661613277069282623559803888334713866563594897124784471648864132038303064107892878767861669961348940542735593926338504801520949481300579361763888903817899468981464586935042005534583117240519607543804132946001829166504675048789298832643041535289354528061116628109577778104960736330068079645204394715808429034046391572135232899553269526668911196323660737433968774967899169619374887206463835682349889103424697984592595590783805673001409988981292969366065120469188422748956617697540058727815457306646073056321935399855323018435960638525995048742453943425426110698978731357308321947050687703132657935075625911454116206889390452036756218045765049609327500637625956181126089810454097682389369937323850938596770279903396752548122792716285582064699822873841631529105461858967348225028949165821044853324513722954140332048840970981096889663545146215547500864700989549241068876294334225231434284645392455729160027321865252891517564384094055862562526715148715579983965759422859788278868809439368359669614557707067366793695349114116942295794179224976567494807018868711116114575655030837243382507298268080776312967768133778589396214434382485975501154872034942864794818487995467133721961935516103616570931365207203547420428969916108992579085884966319272499280210461261448678567621089415894217985693685813825230482357396641724276557862216499364385962298130060894269806348167192550989472666897211927167055770954368942002696418944403577959912080676729027516493374450262292306800802232292024877337222705294674781928180361815278271226654681504722848546454878312815316927151600161531770052526603454887764383454450192227549872362827589778403680170500161389730322926164978669851745554884595647976089695478248215524977280425852709545547781533242236806507226253891032718691807365284199303186957013104194262835229993007977574370798225725762935131081876783153308705956663705532492908645151556814507733564540977366024416402222156011559701888515876549551971790773133673763329845646319992499428085719198310310724716953928422179229720506510273204446728299463268114478258174049651126000058495954673454444515277532268353624074124156890758166855499072162154706341252102024948540095194850881716889088510499869836398113900994724037834193301807553182684374109487733782552932787477234149172437376367510455456808092712022105167447618253104997188537709626647131828984243080856016052228917683652363623253452220999098591708793515490135404818407860855719995776870564723370772398640553060254076175521652212808019823342747170404778189784498319262810769809768331535320143513337614838466962456294188531177800761403267420100342072785853289584046803477147888255834236797425391395674232071765059985304694771714533780785607450841729782781269550468564166284102403371153888300850492701379253229964113727412401509458010913559245045033999495686712244747913155163404968834196656567885219267648218894719816957463963919979944463571267066715961667664429271088220990330873708632299393887684133054356909192761015063165334113193551371860163004383651914581097542564661721943152951048528837816908404888391594476007417011042028674677507513085620734705556252177033528536378425129338782677164857718533580397462601906747174587059123333516329137362753443570884849319013377171638623786227367445328682404134479659911516912906920457280493726938066725409515141168271382106937001897200645477053313294269010646478967156936582032869754159654508411944479913184564862784309896599211431921277396989671383273651536619255170183197072879425164188790184115607385762721024583380221945511983952622440902928454013999633616569119638866794416581360968768697242630529773902742452674001202535501934352556889293126167549679360421920246214174452569098797890003469716848954874711912432070062797443658885390051301393927373399951931512379097739362871855686246005059049815181975963046139796152935210412858769169114720414717645537402252548070353304272794057723173542867862507922657567931177335035145641219363466104717644543478441996815782117233151853848899201112446283179330861229400614625550036052529904275252558260685614898181624188985136887981933192014074510129857110922136771617593008128870406461231948008021943996262814968255002593393071153228443078455197938693432999740112069544857250706158972504984903416077915561108711911437718683478856514152904847860640547590743132328179228197974581657374760613891320274908532083858869888374452614921620665802238580209198183966722221028961667621779976924880423860242067127657344579426642364893003957786632926265396507148714595906608610340712595686579282319945043447867450178278021971284014812408948588600386254536451575348616554908179936648872951701606073979987822048353884774146996358232411493362509311461390533797019537822140541557597763666760107061425410970963775981325020255031107224897390016170738653051075225416323280885878786331873466711125136286329053940853212213691066107606348199597834887731578391332030940638387569504288896358102045902937688925676238252887434357158665695944207103419661703925230816041261287619839344140342297723641876357658284753941533828929286134576341636824125381250246640135389265777025210175604164119666214930016724410743324592373384240660929167807064910742961477073002072737091917220108447176074126812200228596213012029805908814231102755242114894132297586903829467873218008561953809907702395971736862869969213178877338479400840059729633099973597783153571038772668171087143171916021168550435217811400926066349848743796381782833101037816640860352858274578818975617341782060051531155454193957106040360072631409010713462749882301364939130428403483437350963599434089012792321738011198944704335882245449003661476483946985553980374958040154132604936281890819892626921305187767254910733616188148382660418419766324758137030826624242860059514448107743907617160197023358583030095669165886797678733320233283329060806849528636739706536292067661136786743649741396932958529449146928835861545522113930314879116105431816851431336020499438250308794400908722017097447295851960709817916912776793929507039495948117593922439259690566473299529099142844180871259121235181189469626706729483994118635573166038576341879491214811825350636867587702509114161383412039364094738650051981526939789338236205783777144797767374227155774107302655835563987531179023613478065096201603186667036114721138238436596865453216586500294647661201270880660364534985146969212746083263893679896920241720430594820620342313565485494537237485594409471062104184110759912905679731399481911250328949229388368667388436508328378211736544450239539840886450232522091591516111262348458707673957012303032346521491748546684333476491126024754852489156820732927384926169020904504507064055085651260278426411964648896498659387768729525641275533625733885566122058783263163511574673524882109596833852778664263793338809777929078834077174954726243194448327305428866527058742568902256138287654669013668287299747691078815595213200247819370071064690967381636789257736896613793944624706739511953704381937195273562195394128489565378666571182713027061804543292537958995615870162072597096884874730169139043828599331679382662901841696486065117206545095918540627454556657943092980245767796374597560928323755311114313077583736129221239331300093357018237125123798778348472208199193584504718772760768162967747020073894410759868766740295235500588220146131287489087015653327423337390549561958862070962988033765507768418418880061506345512361725900637770689189228333790883830752118332902600263582301871135549054545799083308824156177551362833285738624235305850124261513654311898238448869107730175428651873660032703203971476489540091474785646177717049331679004807575856445892087385482844416317332693805245743491671042706016872643092902954186316835996052976999057030768843454277867018467004977411444213450105773362884738319692214243247185392386256733997410639121776702579339289675267517757037929886024766788123593619726128633711480191939213598996994138066669989433716011706184449553936655650395280176104788821239770526496722559391880656922087359045290672967272407398556007578682317527908062753100892218746417333605717759650271017281411905112678492428470434202646743097075016113778728099917396725326042177883629970942878136304633575754139705263920040634528847429252804835779005410090306878452433686094211495596313734149559200799474336095810982713757194902794439949996672140064026341028599059147553990739922198339171451206412048430882958154464545807895008925741463413485733980260229897350183699682152951606765707621471986933664480697657723028649313335363170816155737496600289101842542553061106676179136214135095753659434630581687064066190945978122628854462328794440423152679834454756190108991424970923413145221660543207284911549229450021118686117326223359695415895043744561898192592745665680131449325840640086203065979970949981344488974388284618957552148190670062222751959072865760451848251219346918343280116508762420614591062719056396568374478993030336907621976294577144661934012920448041596661675136566145034177700943328277426860412903085322871943467238828181475677446821984445231145904941544615286292955291686283231845600181321448788594399161151113004658553673123327524562173777256864863604534856388992997197728050356093875769602209072900904894676127919425351873823264472008797424672748221451497732539220497153870746758985497609975168059092685598465429156773320704660133970508050086888993023926102472598263524489183781500300237327327550535063726036252406271429787539596254690619000550156305290005507652775270443764096841245507973180774909945937695631462910668049855111371304222779337979133015281742730067422424334894595552402721752228143878802825110562348334059559743221110643772181309750405253824693219116228964636244790116607658986609419716612871340644005708019161572437769697017287947546802143162849736672144851305279146757360496790952747545548992557467161139183847737941104738289977655015798854209654531744837117949538679814098631475375279703169814047704579891867164311675402954429803950044279434674116700758691873235680532227482011175019176461751221919154157487147676266400584691049723423449013356622887372805937694305560458889959243914035533012236592762308273240013999910982243567744964495167547954344035152799948195185869937230893636692462270150827266591836939432098293762059532781430931348176034384353500138174506048806015230842353658229343043438359998468963852569212710452629333821376646249280819531965075275312024124489788356644646696155699608431735074466480770618583328475785565715382939131200897403026734570138562890514285157414795655060689775731027742829111628720597093892846747749877591012574516865053961142256671214122765425618624496588540174319717194739122982206468187034110330682547269577231083119803340153532485702517044206663874123801957189285457304079964125728899070488427602035330412990092089257360968978276976010272032610842995922762961874051098556599119049317396933164566625206290213118518476793286177701359021674141969304950510190492223875965136681930098128980476547853371017222478737609972098920311947965519154643642932767058427720913229104757706077685224436974286279627948328127307099628765174465805871100024142058254367995045129273643307339828621492089135980336642740191515565666372746649172017738661363205094966781058000718360896276481100641268369491365825171192338186801858336416915236240164715098611126909396896772976758645263173437783675165805311531533646381371049063662403025717433393385453962334165413500692251925445965968428599800944480144121400719134359352666638021739715196950879878179536397406432286544771891849048563965499404986145927241901606256045424786650575444954190666492020888427153320290490381048508682821729200694199619912398481129740068559340731176195703080688473999795178160794047079187898780883879166572499850624808116875121493860524009022869453210778142713426447326154534164622231500233296702603230063280981881420099020924873481626939300269272566244266059765464420958773779241390056528467680283262342606484473524850037422209761367507917975924225901094933396120497510172718048568812659255525041353190704992727095515579709871804520456235767625344019919844507193760147388442802704094121861947836315836567320265792442666723181448426218818262967267097195561859346913626475125936285092286338991472299795151919550880998921926297537560958527289869844089725495597909193622498329045062058189737033269455373944034935411534864893469033372561974488992546560177597285317031174146864652298239158206064373288019041900468720742458736633714041931555927901412345602523844569963091911845181633984536272880505491400700910634228655681838525673871640020075702037370107530923847218393678555712647521167163048443335519744705378745305190733846329733752724593764713162904042602100549589759179735468871846710433487963550906851494734633349163110204649697535806637372613714856006097368660024321541176113440198897550106646733422782002372788743682503127091562201390303156037631422045575226391748609209516429851732357569524293393996316929048516914561605682065209335724059401895005785832469408040475758211735755663963786627004074443726606135821827998931275485533947170148461686543908811838989518756148872049812044442361651911731486935679607722592242980409307689505929945349377168818638898474583825978307498357237073203275808254193059063667466040732973519341582688361972608096456474595495354407673583536278838230042345607887268844725130943768264299454209328704504592910459106034338898259798448823458604789611302648360663261016774990411942204535817593128248039338112683123066716693950264601570393302630385736593496969425613714638095142069370409631351511885177181732796271083290104352947184832421180807181119103715617720782375639194828267084159680332669121024239942123625200983743825027533518768654148684313007869004412296811353388045683061397973098377372716701266486692750553526067792148233389935622065164676762207136729350312351503518971154063186844017721812918585285797099776060102629807935827495755887398859370213735912077783377141953084278411355773048444580407040452564382411502640788291690617236196934880641412356703838648715716697926995697621158296411217872132638514998057177151064436161284455723763178201078855905795605503228369384761081191793875651735483552764022851646973720460424218942840784375755940644619124642713676364664691418199269901218679147358074284735745033087639198726264901264062537008584664186084823651631635836794539522823498584688488872504233438615187789428122261729013525976598291794939957872248068260464184804625977181377434924070040879409970299249886225991695359548910209722716107835392609165479973504552360936922494674361193841906903428514983303817559752723240894387139312047221273234061447276659771438699313369720018704607481150608768002729778462945104634633662538068232089634456521766319127437351833568151564168136011799498328444169205018521024486323568319133881583173791437967573450584044947489523264225982942913763496231884609280092116763647921172670779666026864075807885229987022408791093868749274871838411859127239816595658417753574475897653683083132648590259980764493032143622324341859785737948357678347629468169879585831414992835629674419000824070722425601071196859078965437819917732965874533846144567371739686701899202936802067915711473608433832521904255559346271560431631602619834450275328480769406069593106491125093266960930298743398087408848806959129851433961905359160158553250622491999480433087708510550543822966379747890909454187460579138921440139959744875095690192488171477633742863747307788584613240018132426059862119176212023875038360622794961588634607120065754863758517116987159560894734857371114489782015649276862559050887569550623123514238500327663437376709870649925600741344990909700758102050315453760357310549982458089334925367526583563383408301719899261648442340311389085000133977144472744641719090248481381476580012331179844644841975794192395424657711298157809647513591060850924890752911563334467045279640090141184858682927346112230287525873479631387715100778044412529100033808483947478731067541705204326012128398020947470604795420006345909551059196798797763748125645639169786874461732320261177798096493784372867743679454386224975062340590692959769950602510859872037527792179524354746299989666760536470716347141750849145214392942356676033165102501506322697911428504584144058856020071011088364748945735513735449277417007915452433338546523335458327680391850049346834984991872774552362716431536586673987193329566204512961493926173989058751844739425833790969518247197351881210620434683682893131665362554129834051235592995261823916816424091253707919042314271589625134403336421819099760684929992633241055800200669566920591454463509851734244459335156534444158740556428420735508739432880308708089144827082157499577407905367536643729825153203934088430641575417672697029429202302108118927903300885673244453110561589231789463208193314095405163652413837023053820222649584553600856707226377414822549184282459961363572259430477052709882161433821678964941593184819837374821895601533714722232981187034644981059480204878298440696924647031535960461813343016676915822680410760170022905385177931742903086921156690371104374191812824833353218123394071608794115809200155105370936772822448323208768220988713445865412077655022309753845155244863215361411358505362063206505760356395338268411328065847911954227538071624161859209433693058155440082630923133926400283679266658476393278729583435198214554722175611700534065649571561457798959493194748043709841890047070575138663351972621212102097543233834097929742543270288900934221150706123751813919835806570640441757035109127284149822622202817267538569394008085637083496663771667726434136573206451042254158178729314947670646981908996765684232472727048609576662533581294427552808891888551788505959960518545112049701043062309580161940423726084390858532333632008444089941039965112879419899415687237707388921271937588349079825563052532645570966301409018764070208891374112460775286731278514971402106338225632791557522368207377739635171142460093267046654870827719654010618158318179959624244053841638198994321750744675212473591878903024119981627261789593503781800510460723911392697633298212683809246917383739024653893477895897265723318527000988823484636369930048573372366031362025324489326883651277929996002938682192143313619356706424723546444424280375370949979203006217689308943869497726723686388445359185250713997862567858176521739651402701271106240580048660673389224069454396589038645110094715185372378314304434127654445192071391572808318285100736759948076124569237006596465935868924632137997641764609809112251412869041841444159183025952514290473306262989918525218506448151861301036438754835748957262671866678755543923367407696270638174581571673007757355641305540286889519088889661228641284518729054064369842012710009088242038645066633227025595506430163299711605898900451430558681390269929009928672598050801805763232922704751627218523609103170074860779123547158161377181059313831955174737235935849055007794999992802916394506748696047372102950074471979855928957496110609344104783255563905939707813406581556341754218566168299574738024982413564349534432252733317295387657762450233183485975423641056140426495263843703605832237658371321624814160717985003223120342539900925907645492584959396987889206606760076027690721032235451341149484599697341994167540893962545661019990708357425918132781591040401357326342533581837375704950377129658282103547769887141473132909130085768144001864320040614070164982007841021655595837271450262830127745864460642594417497740625368267239414238739566080762842435308177192573843576065270750262656242064978584801361452047232856372779207275820955786426588527344084679939200034415237273978958574169847798977198928169218444705770766156611792606383302809656279232930715937411985152340828508082928889329115120647868207299456576290340260499655883439401581621355233566813373914465180585447437979131542408060283940055786170647232109322514242357465687860298919163375067025594581050223155659810148418038945032303953743283334589317443930243746330567097627735314156135551714788264429939979097466366253800427917032382593850319157052075973391054331903008077688099246719443189474516908339400689833635432177860007062717246352948563208685843509403046059122888833996585611075621295000256382768000042756155544222705027843423805985900110723514557163152734777861087214112892385049050468468288913093221333370504625282207856406091249501639194151665664701705478218821516158445016828947723750072986402857391046084287331029412672700098060265814942125068463714282113157577941536150868673283176120415341214055298615696356016989256971618668563949500779513529093396620695406905355288454925784612016770300036155202912953632800751184557557340760522172649178122241316036060807733639520963204935430281863231593844706966714644722768108955150102306413469373910482734875582564198001784374953108355688900760488183305494591118216239869348607135829007303547069264532027192496207402420088964282118499326117616570189829087660857865789739086188765108318679555138011390755665839502040070962641835710 1261779250990906982121062916735425210820037598253571645265208829426453173498267198349495543982241836930594260391671676617699854834899355782296773771929648825690009104979038611394059234764457343749373770609401126488903632864957964243235231948383640595679245248567637347524702694537971884980871235302229955208564513569492094364585625392463570707703859664825815961845391242747742105809281967709692196701441183755651307252446906527343789038465634579384121332205669560147930163058072873105276030559368311488661621319537033966845867239412476870918665035880196479575894929087633316611162958166939983725937063059043116611283143534462136926649571112937984222375435957241169835154169106071215014430386020205315955350428723466974689350343497539543587461296212087692946321916694559933874558107697902917779652848259020309511566148131743972891981993738389041381590944552809879038044955706524173882640418393378816293925720946049391300493697100544424586734997192385831607566727169914388765307701537411023516304355624681624550868074831607905848893280152147892496145371554311849415177639637270681862229153137472135414327733757508344387730074609624598570712516174783417217318216073740361637810399646767816809794956066215661616099580070922661603817101022841816993410976106407565659624007677058978274505656551706863326576430324512486118312857379350752665409490527008013392002882094912090580816603410676132044353246773561865177799876908475435714042294012010547258744457773160053517608720318197009529830476442663288469765162410106476473748597907965229815621071910657761787923222079005044205012251177978772728708694359974105874221789904678809371726262838242910822868918722591520708649294734989146612690907003243588620444003714684490994309826605459135239509827454996820734417004180592646864863541894123471508522536936020318223385480204045830908809218587817675943208899644770596109780967973111041685250745567280840679691140821807128797337607239154798095156943060637231153037188152181165717283185496760635114544158982271133570776078184998861548762343393294559328983032370950750655174449186686497862867833525078836036009301105802338332829769179599274826937228963474085127496886888580401353235628897007693034902459365321617826180354304108567771134654281141164775365439111716728840524415403066160617091745802288519527479591047032927189924442285286177538133272764839250414558880779769532825938630095540086768142086719332026687556124213673184153339850399172417187237588636264596249195643325169902564303661559011321056113057119102194472272887339525041404589381155895004145789329696934747899982653187883619220434817465406438842175439854721873311325597697180444073438450357926790525055490524262864434306598490351013659591703404673234645543397600497980494276463817618248452797827564353844883607666926641789240804130310028879509443429514983260530246097358660101135805805659027259927531877027775896793296502481219824082473944032443275680408512824087729627620762786333193597192235449570712335965542606267442237340636369327769599834171233542290467149697383194517530749502147777767834140194967180961243213076853785614371732485163198826114583756734124761617519880419386430518192356614871150124605733522471605053968726193636764123880238070353846148301329361508059984556223259382118037409783200284414167093439362193215418112800393946788858966793999767806870776772063919802011742989406233949291085786380049680530432354237365480700445691721408750437800952270792112175495287759507452805145698320240602974643085925274057817090583901070761739159902603731709319941375078675591569623447140327585552304383459310841436441782996435420884722294102321939885992371758075836240247519096929822463530791216313267929109239682750291766278107263067491724235167728154393734237473149466971935004886961256443244423421353292418751284434125417719368566614129793303827859601401397746265084478063469286366567356486453513509550594314255611222652317614269820582981508233438699055308685005532143041115511586707931456230506646103903397533516696269457300972502129111711325468008823253750719873696295578726026993497820695078458867968123154984409085494157308506716567269780939686044499341351976206342332065303609063808985489241726931683263060932645702907008090219568138313900647820281856852996976555386933841646205910313166449082852890964409960447268495520835041683586100079607250102318928279694129901575938442961395691648949587437428830062261673516331474908897850864046450100694793387326455009221653688691011589005717985136726750693082547141199575555514850379388850389817427325792790512054947636662980660775203987569273418279596367071343331054478402228779814621528815651041166724574407951708831782996958057810219944172007348952463723087283906748790253550832318874357728958601342470782504311891365791340966086025685728866866700151914730764333600308182735890063094467104587305117417776591359213717411843066664993282238881361567394774402111215437638088605623224317886492966491081751012360652015553322940846875475779972394347584400002537999290860327581846596542755296898174031330385868605872918265021848679560809260739607994009710865565525944274773410203330590252766973676821883585849093840506372308845591012475000913074442699458865727204131234055194935543309505741065209048013161281713348700110654750922675682252681580661274186227309589839544571717247428659386555965538679119334283267030322570612098190755026571535438251473255426612108861867859798931547543742415810752556291041620353884766032064152026262762446944909025575642710045401107382231813354540745882050880263088576921129584932930566051972765450333269969031924398476675105125812888908972772616120750874416231249167489199616947636543725431259783537640482574221725407215301347005081370069301389123802466401326035582749670487673833676714719375416861808530788842400613977474165593090429186365926088908550664104722032169291950623595535091269873111456505438726047559131125034437513592847984490547715243886357930124121199159453828303234625881012744811639802342915562442050268177263207895772900420053560256464446010129481366931012732863793683613613200912925976110902347529741275949317884275832332305193776605761729331525382724691184286522138105606862717541339931660260086312163329215637056304835929727054689777752973981744452457729247072002712590337493493714327772022403071470532781939001123763211743533049303788933240553982070610570903261854357262753974767328211848021151404631905709580748202533347008461346706556765523530729264395802282609898094995174597958534177995530212693916238128973288974179973225619286741443111726949057905436709213261690763145044320312398929712992655971017156298615838638068360461809230636705054528015361135663172601355432212074114576647022213608705376561292613209346457148498664957994553055901579533965892067614933571746780711673070202373364611512426316081379496125596660982702799014083938107325814018459763248595667688702212040560592325653545031581454253402144679385327936164575950319796490633417684439702442699396827654863603620226465045625559754726744881310588220284361357479914330082140528520687848033963676852245852965305708258218317115426695318732108835658805547066740731174289073601636892335928440224718711665782352954433673280983112976808936006854751021716932993697901992921972126703917374728936990318131565960151523670878760349914750866243805335094791023533595024246468664284888881078353133546488045350547783870248719687031842061547295389522109557062921377381348949156461902960763919910728390253345064136591943206960024446281050675760926596534540868642918827748650191474375724134853207646276849297224609510072403787901431604228392947259872954397032078197346812119406484503708298269648967955595179624624276772065456421594542738195102316941277563633355536400163146018013676961641996477930110568050609958021579687513593930188710682725658821550068552074638122059475718054688286461240279328731343394220878644218677856452710843288572823291818004631310040419447789077756184028073813212953983919842631576963115736126363276130490668805165490349206968573246890386893627912811514216138343708295300475261119348187459945797830705337554320861351037348034220660328299357713509281687171115189232246120353717216447101196313850654266687798964264244991104739266068846400170413157981128497908484584528178585480111464092903660169707300363257282187598489125695702420036803420764106686129032776227739951703692429488405742903212648698779660682051376563182574452489145243090548828791351357123500796539598501217090866368637505262180209050035092156373535487688508172652775089307275984541906887777364184406424606068059078444755618875045741244143721356316760300777042105837813010098039414728135673768254890458630352880129762822832657055966939395990103279629893930953113215055036359402388050603783985416636224789709019500264189177488610516495340519421410812461573105223212215052287154704616606472408156983814053334241840563247864167144244751918382836943609342901832822821462692233105784308082501889799512417119843426110941998461946097554034766835695854525634925706857498366458600238766801252178357681082617557118375972334694352774119766768072795154701981783076107735457818212297591891711417917862173289681348838018980247733956570898041740973423838564498765740184013409112958547823659788564692409134828536486939009103629994599708936277355603417775044119098136016616489291963404576422757599867366649878505939481841745872822066300743112470976102167452392222197732027274793698573260802835450225314800981707222067343953296301300564992274340801488112963615573655779680199172231047337073424644204796881323401160309772221243323139115197120692400393950371111094711314219399008125213301041879328165969997101637390635707353729283565302188520414326126007879615004892896273528633582832510414809692063649122350033664737824770211901778665243418771403362459879837787161326515272191313296197248741061448067598316517314523848862757387078021380359229978393425300481335634431862068804187859181719108448865170687298384248380823211852951590263700141487434379179788018453020392353584057237419594347300200903315569541777637121396236799162170415430190422058381087040813809615509668005975791120121460796072566746635492010476270742483888871090337272468747042776857776823019248384840637347687875164881152961835966483790795186550312328862448545993022843571424040049164020577885886218406224778995112398897187311742244645266895846399556692110493018479198313956747125138804094137049039592875206558490778531070066625157132328035933627069821169747406034650140818704826506421664313973890474341443445789471326876572002182515570662775374288778973828324948163773481405631190697889311239210986815588142723379854884175938290858523988508218554115880362330767450896919101452129816038860495430982064761256336550267078140426908204323444858245548193944795898558217101426623392050482099364264783545605956135453414543489229198280319481110781902120248263991189039036125661737560201422056986790843069303516076310562030025884623724085447012910758226469739988310311114645919196050210934680490759227896280140653713057461941550950790060613747995275311732944629552195368719958956364505287606564738569024894138664873722677568766803386277114455959706997116248900925891100189349525438092353089282040836673041679582988743631173889457801837481546041563442232602145613856749718200067410106953512075891740174553787226827560481931847970324773461528153293857254010825819985227772538975893640993109021061600535568679848605091053560622916048528831775634775679155126021621334003686723896393261230295919617962721944424447619648395652011245170470799037210405020923664128902045811001128979671971859004592682337317149801170853859313651284041381030830995248921686168351906479944250020033262790114771420907060068765783122332856791803038263631459696544182038586943905342599251234710900425530278015468473277710823896976436960589360843008414558674437441501130143565489179888277618983002066774201909117541380819245638032708919494477728876310138608989143567469831869910319186885453979695607456345487900319085426454223800118634496072542944022636354439663648445239709243373216240655179469558581709752385589404391323310991675562755454437543399634309316088952227558380587470662869135514392081503709670631140277195494756939520883830802740109204308329894096877380939819014047154017315500808760048599314198952331916751320842625694624726986147764280164944098849742506704283204566047057385106851648294869957531820845018533200097897173038605861235330393877616565525073774098436693960951195576442056086083424391379565763508029430559837233341654856725769551082016674077423377363070047329934332868856763567826708167321100955088887916081486517093157537530121857455796773603548351929723047072542028603767515765334443828776092072165100058461466100785744349519473889947765981657318088792945034768470700213751329422583951179550260930771769037064210216965651614478984423491571233186100790566156369039675846236653092618130479293595765269646030095136570155187194780203016889708780402305022137894547741204116601924774620716378680676363176322480086031970489065216552164522762833198829417038532429478377093467544750577636036661618547996845536845197630899862370471122074811147238061557296671758615820891324413968995468952927443508463776183233238792186458834852132176445923546426661281704260241773874432354813984920738072091055795884626528178371248036492748164219177022581050337054389143293484764334640476693863906208460255091766955205530215140281893365152488098724626296043716601986233190895380950100911874657716275656492770584393968541085679535965017689688157295824303555400331699977671499047615617116574939855975373440700712505398911847306060547761652303871288141110102085407196305970610631375051250617305493887562657805455839872215647127401653899243247405083997275558308438004475848227585232405244709961357940042562196164726385816626070314497304683298210678606741583675284307670846549121797465350423417168355159594967010575109007030092379083362677208458790018324897697707201365711293712952428344560461228368289835386680778457341502992943910012255745953161856499807462430847448462768779368616623932097341799370492215229362141567066023827122104968884564715934418752995388741207270949407637879279143662834785169466375407049705250790957724690067221985699223344483696627484155573471411392062393359097728799784664186733793530094721310368376125985888142590611549499556772418243319579896786576547339801440058710475479323221089445222417168622306387136107869785880941137091645781053818809740466937438560948834707466303028259403642075124649881501667127549871539640083144248638016173944640454779511674526403734300777384884240602803453519724508937046215182356503284536691809871826655577728166716298531238453964731511404425571897594362784723672479170222054358631164399167724754734907111720049891448668671996802464546983596812341690476686415297076104936936514087424208752381006994851653557438231228577144309610094901129906605892785243216043210857957565898116130921948552986414370649017591340514482256480083394558870452303367712412583379413947420822389824457730569658013650267313451011691559266636512194168966650410435620096190927148911525230437805205422733300464349824871663055267933311082437539219305421284352160041111590836245269276781507295857992105327568089806443642420333708776600773885027068006111926641048916313003803325049992245161895342820046369776534347936279141208823046450331236930169338849857419152918817686514138909495238282791159981750884334286279115970400702127982128969958853210558926623926241023974498959298711141877392491284472963802996191277455679463661892471434236998885228222407870225858258512706301511342159515581454800696820197927526564656953741450585487924185611032514004090140882210288414981399417953510806133967084530170145504714353592522195199431119971855968024478374292783319604816667200657240873730438212936308853838443702308507468149942353783787122034390514570961761978350816412962735090970147922432414499164998653319178227299780103605962661825601829635114326522404165393748586626744695302024606141432811515337956505400842734833397484603853723053083704285376685812994019647447807062633987972439670119701865005319824106154293758617180330452290266892128590869167522106885246561108858003909546714650404439330097030246134599496421426378681597008824218913605767862101592274535918344014333940018857043534740770667675160513852080861765629049547909364992561681748631380886881019614181258351249133291193952112876663747910360740378419247351221346270780959827151230649161192137909373770756939354292277474914472567791316115583862705018085268353745328638112589837848584785648660154546714481119949946465377106675775879110833277310479416654502007368530762498696447928149403401510899392352822839327822003971557464844382396778632800453153534683896847243046172495342544460951375870761424641439815457091811403548189818254525286583821490855841508739522672889655536334221081846044930220782484274403849981987365384695741995461872285074033191590615997031521550097923198931679488640215090927959642463672967080495280749299702164367395071745627950936716744782429110224623947125753783949933544455796919997296714619710473454517870178717970314358703306625420266695574521483212660359991683301503423507768202936904669222594287486366422177819702840659810727259347845000297947513546068930710881563327312088308131486738540391797147236659471435629123288907695628558438445093335062029632199845511829463002334441923510642675690665292881613141045030131291985616231607671113347236452379131572981334885184672398753521697112728010656934587731404229205534207769250964958977581871405338239534949148981027179813595980372643176564904150546479481007868510861965907809714992259549434655126194443829408372812928127786167098052586217740878395057747304728845964997110336817610088094690876863010749773831904157984697194706656206533125367915973691617696115890310518708058235088160821639826333120330610795905063699749987783412513060512237286667058072232703912086659503161918949737869998910400783960442184622093129247478055009013156461252558510365116622020507435622913271882576091404075616048451354758522371986937838551335141593873214359254840050443998110915948671337693474070030609404819872033439170564100919248023792269770056671071157906553883436593956888163310524703230656640552496893982546320040633448782355056425490735993704572193700654081188125672943420889790427404661952990973889076898951309144838092058970034073732271151800552979645807583893130383080057952719451294639010748140083785182513751516586656968659881248418544046249752998097327480904797407634816865320990992454339042581941181279143667204035579020489187410662585144648313441237337537187892511695001253950663397996209334558451479275649334244430845743639180866585541253915914484871742384378058540981109903545566255270757527111773297839740851200684725997074594309101938886323336483372691813964825437130135529583201721354274971580455326992871349131346286622361237807208291129792244935832981029363732370884132952422111435972586495028127304234811391445827464610881143625195317599284608951315118732168017696047014363848833176647413699942953624982332772183068859531446667668319531173926282146287851310656627965739934783479926065059474147444325316301498091833627322106685452181770625979987019834944479188404219717626786268860969860221974651370495276524368960542824944448671934224892584413818305434544953904752362470640490902428458058193953445136966497081369348168677836880579170905995271341585255426885566198623917271997154119108755739994827515528313436234983616662715987557313506881710086058085623527917274234948987533761009083923770286305475156571502385855160517237864575578638733407835608803349131866527656954991532281268310830935103262367145660584880000275187696928785184502718248729005873060969848710410810516940580570420396473851341994262219442493204250374865279170968469284850606524758655891463903184774752333209119276634774290830260785631578683921565535372401370918950966461767128397236135943055368971288148499355540642977770504155816331570723333816936747472297989531243140428486753681190078430869611184214425373443251522409279505283572146806856340708081110235820650433701012784454430238354431761176280802681378173867072918151344587091255161263730245767443788742703415192479964729331143415601436231979847053598360893329197875193780475243404849999017254161447869778661298886968575620944394953860488757356828806634627885437898176346515189011528460477360174664515952718227623467146176470510287637943992987497136442079171272906703931217825430832706284623169194271169679602469338444684196628872464560261933997589265212059688539003849333148496322665232474573758355213997591844966562186784720995417076691841022030168416409478160031764254279408884718506380136186045097814705631280060057597785309189383734353286136564695645735758077600854050623982597689633046177414571270942427219608450640392963731683148480669664455758806071749315487034916596064408861066651386059921656220745797526504902471787500100182522987974739287042977512802466584888071865591843045945057490764251751832095039900240190308415645060315874871745863835444086026550406184755278684742278940217605147028556301386119969561546014065064897160346293535596372539483895292802404191452883579497103223316042084138099968789324948769810545259596835547904140504861390600267264251035921788341616079166451309151186484382645234665938127722252191243212499736029023845682153938764673275819445558111388610888040390539936252313347746241084375055283682342625427151321839242754327032807078027933886787105813343747527797405988584100994142740422218025826851698708547765578969877323368789185459998153171546331441476799881170212100784747474056205448448984987310454571016673837401224662656852669353884208838235013886624305335743758093332557168806521567649428905998460935168229703323280804305554267243377945806810664930818041480307079675653432107932785469517792347845284682274942489540260689059056587799090884351543759041247088424393116350474194076485796915039534314669498126696230281968390019833471897045052799017484457635437229332951008798384148876371593003295559388219333681362817925343801757618974322157110897251092867524115410954894963114812354311153749589263409608094576819082949006684334425303658638258550133657033 -> 2072876742051278570648906149543685890369000674196042569618324818703846579984766428904636111431132390164688413441019435879035754851116958012818297736594369287004251546249926973003234293611504137002776581654870310351031234019617445405886621920966634337775941049478672743235012067713657624883220318649789180298813870850118295425111459476023738788553242254474452249441277196712362892113695947164546326267837016873412075349763387914017469964137334437342616540340256977029256671434663673060024429806011190524012809854760338791606253225391991132735108957903536126098335790492074490246480667090250887931847457730451582507936846190876686028058383966345719767248914706788865167120282147201075970499732830180532043836501930499403154940835409062920421428311541816438573137107989281102339050820633899091261989658133053546363475663938672332232579408699248581579116280340149740767915769654707625031047485573282091625565749699028670567547113109764438685859791085392667308348479207948856352959013024772035911948132134474957576601009228357181038650416690556563626416782255177207407160700958700446125129297673873023450081451733045145615151669230372930741341869059272855190480797513234290025429867776990420121646795693224452777008069590690615465465522536962071341302890457187331465160463971805153763797407556186015441285239636836454424422736546987752136111458954292565969761006808905808888164861176258909961181336343678654429743927224470566115124210663038242040088185268375235836919340798431100047947628518073041598314482794288239334680436138426342319611827642611764880987974244655693228956523789920396890666192846489729808128099198745888612866332752540894850132491266389772260716770385480041810058049614453951438283811742622155078746495329940720083508608505641705260631738273350778561247157084607885799799410114667384909272454871580080545306988301572776093547318400994453499546532664514914495875344243173257002698229115516722141259163040748598657391179732079054429027511670692675914245919965098332233680869966894687474077246328724092591569705447676421767906631174195464892326415514303051378201042769255389195424983539590117396330258142265978064580335420619970735065639826568314226748336862415166753376409444117750533489260253598499595659041067972952166930355067508247726970391615802550499022829852742317715902916251235153586388525482847601051262941669543235560942274092265410038856188392455380365579875216184076929014807151534019394080578570743691805341497248701723023303636885291358884374906062078094838104928574583619352957595017871600319687176706321495218596632601195312994287153160283573330554655201490773084991615916232495630677098721763959504521461722749938502461002850187397858000202311881278365285633818032060029238530579863834783994762837063256270050718890524467931709260224958372290965922216574575378320953939466931697303775004167488642597874511472901462198445898389081876555243073664771565502145663034972535116464456338123081924784995200048639614271776683178696753149201097841961962550587685334594428663996450717510424673415031208232185628934099015319168510989482744289279831791365942442775248401342151251440659668097394394039821469129446031359615175901983549157596323174714938530701892082434186430486646600082273877900358998450288648223468917345230704695057889635484032560696302739255341644121330743409386830074356350019981394791579270150411716935018152733862753715145170351284534851145019169390706392492244286236881922509695377687396614602034928636854612546874259506086512102309693364872907021950282945264843886543785055813459034035077508381843915495303711668769606842215921840257016800114376297606471575604143033060332024615472476679940742259839981182327285131144836492771360446529912560275255446169610461630104585025337620342796396530433182256894370415045609163875437246743675343683898853486212279482025429982645405730882803777770767511058824039187778558255509390990439160491881463171337630258748274547830851413255481278570260330038376714142561245148746583860210329878884813188553612586742915922288170218703421494162435289708673255470629574387398572569760026751693802479554834485787155064550499446180727978384771746869014124531376566995784823875147565115182261077752002232688410286543281640594866069751266760815685711664745387766017206882631906595238439308741585043007050594760179156672471402034634625949002074714600256684295227762844234203462026884630810025173076684912913542791858607431286498706993470190055931686922162416970097536355856322964418997752909218434365765720881724978876558677875019697713842478591594882054260537664816278109306699737228199370789865238701815275757425728597322951097533523696059735488647502600138280438931861163329479529270302706460109788972676373935239351796733028033762423240909439441200092586831099936842428328270766749868967724136030082981052786032807179536062669315437335256224611176288216940713822628132885310797998854525471812063237131460709284380245398962461908220830681057702145428105562449204425918147401005604347112376559740072011528104399408516294518283801931715753927547062292147836920489553911153978037543392541682504827359998020647519842952615095534245835684345328241194639268910517875092242643630403999297356916390029020619793704265569136777438265652181387453343836687352419249524329882578432933317520350002757827298142388620296827081470470554956598092498258724861840083890619849817266917424727376716781747166780962291360583279523650394951017188987555778503236896821392940440832877153315468616199686335795008638077749131921091493319894665539862869239602307068389648726808708641125869941638563051934471411699347489108731756829465964088447309550490971861472468004832340381154992600458529487174770357701235149591656952705262856964007383346248194580573027591042108012745605605225668031005641647489179570670037338243355498171199888610362666797952450186147767356922328106070982710114710591848446048099437227107377055848916463476899986081775651464210417436398604212931803826799529958218964341522677339468665174629212752962842880150655171856066816439868656850506535698392272492645440327652299287714955205258818458321885569847302558999725746861781807774957370975377354718651166787570631390169893017227005435857894940090446066868925980111534232930061591166360553271184147110586282041351196335435571806804319233752654848468307639011626054033492160871815230879112232859406153507481470235110630265893600955959043759338329571363421324534558570211647100469517361288669499331817209747196010719235928157283580716136767374209913229744244719587773836682083109230293751143020155273440629266139149296584588779661198853440578382801651014788527333277952808088625987174695871538334487608133209181477668825742526283705836060970113599056049168850705074006955528999111487304171051875044821395134948729618158418755333281063986352087007772931412825612414537962001536868161510896335662465487222305384707269337942092044343956237274861045467051785622575525405680023572432340621929132907073697328383924846032404650844487517442571534637268631838148785080945602436321253405903201188532286161680602776029684046214695831078485431424281506263210717038093177055998455373199140590042503794924515502895795780726584526441446475048736114334319043024702963165891059860935809137503026145467218521884961629482981397533182692657200380360885266438603382901394389203095101978141792107677594602333733472217090379542351961330291134692352332252677102756592004830232275314828402428195641305471266391854196574265582218923394587080406518040649920552510906109518186597369793678037704566395025918923526348063234383515237760537459140342295362462075668527294460557640423588264116218673375130752981886111201413136228515580288281402959334025489655786211034286051726110872874972841811573398432225862879244453754591981023465501304326879020160363082114321663795832926996615781401853003965279134434468534271687105597437677510283628419836407794807567583123391825604680654756458689106193486455869549857492308845829279243668943096561766373470470576648173594988173319428722110260830284567832615281636813089290522818763442093641136790100194723215837581962193370217464557865166027159041771706977458099949618142547664367673590907490292410757390531282928585763231129883498460639400502336312856648646562164040050511031341983487116985420781826508969336528236074397195064412716000783645080403124331811854498421780430203141276553338307968854657715675056531453631026207172946646786842154850266469408333772441654847675668600692367413852404123262900787537970038802254386333279051787062847813130838855302947180127875963238930965943493899783626207369158719766524274697523744746044735319620062824760591149813605655210062497227874272247383452539048302891998578859687318720876547657431880172523569198946447736210909870326481602224079398710675164462696171422186708630957068129279013212540954504834279391850102959249973483930401668791082075492130557381576347426290787634035699483560052353494014533360743893272722686341564478354601347161551300502214988159675808849971483996359717612259685528758367538810400354975450400981608592649960638661957551330414014003826851653333479009498408863105863539175925769078097722298093844011159872587817631415032442148217923198029553072883994893114916738073949932332125143612618833863598443853781040969053649470897619037481056250114341875226898183275888496189200465065857779889143229708366235272788618075650852503975877140517499966775968852241353556407677989126342061268044593802579520978023702868239534499137384793646503321972932661446237183900680316130783541526147565721015305791875258740625180718826837904230851624725077646771057256040937336171643935065537682681707883862135247515736878622839261642829970398587649418245293295345979054049475804761449500015730502852756006463673847477939068177804728290894774400470970716324350296974750743899902739675673786809332657213587732992355554363317140232341246234037892902032785991682149781984430213595018159049881929467041640586967029873057263513944211922453827179859062140498598768686800182931528324096620804227381537957800890469158907182417295228639055611452057176502913089694450381333573777253103546728562398687872908876111549409547941652651457742177964152725571337864097397991400843166505258178475572265737634996778586085866345509193656026797894918817042492998622263449383867646234067825022295435230382369620166038714107471241930878682257666327377700172753111516377190679040450602911551999738720562616197694346403897596849358726716690936436075170354851578474045463082398401792327364325094671523719500826615646896127138552584771138189089471195133761307915164698977938699116857893298485892189061026340511962392340346181368230333138929015607746472064884669793974522554610733673818313948057980750076991116013653609387428553322483759845531666513058674585393183234457064641303444030373852795231287619176146272008425388281621333150053740078632439208523523917318561366217699031481556027542579257999273538355470533109154582845456020281622572148661679543227277299637235687497243653686461210170814519918861080356137239690083607441606677100525435852462629371793660425459647078895253290026457230553210969654919959966601652602134403010661427465435907457314559154053503912849854929909236024347669409832399007490547899022431388002572293420081672611445584234033798439077192973705248945946515933860730045954131006671663131683432103685041911819300780119946156745900156423582517191956191654313350926131738347659617190088625802583131839354102298434816202163752943167740438198777744207451782773154057580520211784104381567611193958006218097872967560961258558831645548581550583522820247666577308960527372392937994874323318934497330995412114318577600739825544794602266676848531535545682120149016429476495966665804355440557657493354376532023600993231548989155885206286121345859181946322219599575544101239154230064165819710624761922417204065822151098673189573629249943093928849204032043556480638152035850263874165307444612991224788167896525265134658389719453587393760777240274919374880971256547430093904665635033560850343780903467328009974488556259114516634341855183382878394137927374582856872820700808727195165801610614945904584130742334995634421238264665495377666019060962614588395044143700386082201542115215159399428117162779045439334602872961550339973410090710552060369723628214237680313749375795390348307922548771181144113876377778089423896195386766939024135262574434704029128688347870233983744821354213449074120565622757343859636387180384152835822502382663947307418295789383115106254762410478770653407206809604877865269472052671127221894741971185750060420605118475377198664789617803222355495081924762344505469372475817072255963162130067990169194825051449014757097048858690530591836901303577910939104878714778121074931305646542195252417959100797983842086897352982207133135555831673457227991493774640405561249119390089110073524729434029698398237629461013519121832324760700392713104078083577572601394878234525532130698910509032711586103676149682791070222503094737226946119319892420944678590061764032750084149832054078590261011168080150438707300447783052003060488495395104533471755518694930207604441217467575421928581610490194157996558208451195368422916228178278806388870043093948980455272973651424932344314276933925862109977807123348595429644278331445391255337935997372165642250846887271928864048622567231969017194766211345957642770813734786230265876649149181958846807949524954356758806842103794904141383411334844042919939798240266846003751435317564647808026545347436649083869573594187596954911203940652536818793080044368501579737445151818543703235433863365845853416255987034633017173119476884779918119326840804104536586854334776232177916956493272414771848105258662791314250434013849687797068004697747444784443527734741288867796508215842392472629752807454253293268626930058717761994807911366197461401767608241215342837868952369836593936069421071074458641612048864383329307425409553567937032026991542559666800652106194638251643469638653209144293368922055450157776305137074578269082778328175227640027157031377631163857694245735693606839270991934553910019964313886503159464859590932663822402059904008160367921487104547545287016423150771298005255109658099109276682326538402374550554593026487956080581678450315785690989750056440619302930376590288153134724429765605572177756734162505961727893013814090528621142630162983907221432892862095139313243616099710936015695640607867630795454466026156079373416481305961519591171390487451192262138716608412005244857725573795534958392747980895669579837052832520370704526171916408728966690402262463638630828551186303313484787779682924970203815525574865431535444740073939886412389607254799363823971451144948334834214037819519061889794074606601278697494819099587479877897914132408331377962332570257888959903188030349320518182682839888374717185812674270948413876260769535345075870244605016291408968401368644343174709645928451755524811414145040993718595090958581811490307910696582786196876947055859310396982739028091720883490841897289322142396034389382841113484412734285969113232240706946192549123079082998900491827411887426674649848755162508149665700908848911191104577498022290333154098395020388864249022515443830870646739192050351764092420365928861728137142225859280995832625130869366790834968714283504939939115924041968629615046369770168955819634711673007184905902540818464409353986643853142576764586782456778038147830911852944018232582564735077508712737478482177633058961089900041469661528648723940585694235694732564988710974594752906334099785776446321945761806234980428300259540817307208506621161759160201599795654294601090714462630613991527137103845629912540806928316705778670765230283004130797482772539999193593463177287294041859752464428570881296375419857728275018740064218001754242870413966048853532696392912444120381577874237090236227857742430087121539786932040548695609738713805084119093492872649404308798798758256726256664737646032911759630540512690135468663884749053862334676418160356465611750003933037237645731846405749741817424509716496418344890756803795925077772948703134175965980191224436439559940606257100769476584436802217458128791208251052968914660707039969653591471369842078338803601857146280969244337020354570034549559749664929183003278643802551560013846164996610717243642744850961519034751910485527875895343667487400658895610817375466083300054750440557344778217199808770369823600881972164395935990852805682285021678450818782420279656320955858156345198605893141184280381273563669315501329538756908400968581751322510021576006465923172936281015643014267571256887273891804807921984379409642584502922861890389276251898627940962988810353903363042329306682434395679035690480802946871244167299379639181211729118740073237022791354208052317573516240398182955834153966531070966911274070814664218350273905995243728357374209461405467239484021360804868988951916506172581535201131127252711085808656688618912057120094671276082906700000470723950229625531121691098334268528308645651410818761291161801202297655832529550791130606017708509499517050430544942677608399120649796706774581413027218403366436903799136968961629790011248359642793426565148209472828242051569555559120928081089680511348838007616821148123955795429564118197436123075223728798353183118428997828526206710399386071538415903125347691656240805531021438697850486008185652886129203287657238988315590904961569670862254973952421426944192730149892154900788160203758202028792836499075158479921511329215631003033810515890091090240315157347691679724447089676203180076546981992038336549406350980864701934317317801250558429426891071764963579653633239603213735404356773078006820686389639608810947446692981190240982773518024075977258697762696755016176605275310080203537576387031781465017852116866766169511695245288710808705496661501530443526473411069325928780772007936046349143994136441552675480771892155618354148816448476209070579734788594402388408822084403644389394839298744986516895668080869585657592449291847428927479656467934827030518801518147676743281207756425766398101548432770536904697828197473384656216790923751171244131245508937552405352467855042835611345731124819769699045071222212659438163322905730293603899710749806765417075729500275551668880267786621188789710148207227282790370763594942003573650032491973685166039858263276040359065137298294120731864731199635110669619619124179272029997721128187904325381795493152379962883745549371899623382896654475831338345383870509200865509437279322231028278447409343755211121345647198184626145552096395367570569411742913440665387443305157342755150018336518765466813945667483938939687001494016935411054971576121513576462160898872654311179753510706172653997535375573884712688574625002767539091754558448595498112424545261753354565164869835899434964064186262383216053999223738583567351445290155765271554267234436398770666697073417332197686883114558881466364764489510540511452325795044329957501146593282583791184449948140930447654081343497376167715582712131020337310691425447209518312290111804363504206327773632698495212500501998276274220369638422779969956818856181062129516038168796737789653995318821116583909041340277706427199831847303082575164299350645269671057550749773895236358980167201987180723383394337709120066484552637517558601659867573014334730909730733285187659185397333712766291929371529130430015184199542432154808353764011875022024799325206348458932941992513360847886510086395026578175976603436405868949992677155811490003072107024000731597096936716428053158082507451549290305171619630955151687477904253073960252835010736129074938477475164655912239039940902286790663868940262022316809762355198232652567068541428521407245519136546638970478695630778522578664414436581276037016789905824844813757423576421716465660681227703352813139046361080106378351899193131033348666085371943870076832411647924262999063954947610926171159583867279672412065341920099652459464222921518304965462295038233466525380519908708205597523354288827270365567762592297241444776574066032873067356918133871484952528659659143895274328177117613621933917971939478685532169564048124573154491835140443004098235659918552451499618263586014570324718605750844938916585502148042223340569754448484633330467893365993929083001553828511341866240949345613859015811775163236292620926616827010610802964732067594890971384052671020336557058952842051982807763432979022038105644979757253457919642899308651971748901014492818179532832547105046773827350889397447168132410294881035170978983292929851220210744597507348161987463255262822894634190031327835589158002072802748938510421360798887987897849385208503240390115195660692838335710198602469283575981589445478769389746282258856167390162874459468811116276033186138286723834292226184939337708861113987830529520233185944576797337493471561293783518467485441073272507711692448236665806311474778771925156651838358096793542349929513408996772814806786633585994842486699318307534472410412372956455279121695196541974441743004893173009059716666187625835926036295428789146592132673128920256479063487873675611584017847558535676297742802561622082370140685207247670715897347744409068309922335203146082772108057602187003118019978945769919997038279664103186098264134352974047871957660207686962049833548637441342139114214048238210932819509630650164461150654148696555708540831081484478453345457766451808709140018410114666461608932795410292002990134263104734751705913179986616794562981217329102881054747078836127226613564777445385697570685081358747943035021758958381100260540362402416272484146657356396481750085124800891073981400769144857251644479884187918950480911152478798430509147858325670531761870782876479241707325047275184716968216947777511649288238928801185597635302343718958101683424222864590279468215794360397904319342927649526563337539418027082784045248777048046927110990796036450438860626219975207974826153242749600094690357636884304304937094646604047270127484115008403339272875065818032632388489063184728236969923382095761921957847005888746881119650630480917729683233794285651975610183187405520462901403685519145202766890495472918459567809479384921345714746623236573789218916495325940729143920730269573521885245309191713189250975210706661675226714275306546712040149822779157013741860472189004706421240535843401812412508178677 Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/powmod.decTest ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/powmod.decTest Thu Jan 21 18:27:06 2010 @@ -0,0 +1,56 @@ +precision: 300 +rounding: half_even +minExponent: -999999999 +maxExponent: 999999999 + +pmod0 powmod 7247904686162156268756641871543644042277623398853554468867975319666037255091265943032239093584347186840121801614360964715652905098992835894184096312341779376823207799350069002402412482877974177233546988057101295882961124291232141624373889565162488116166423046293656727734178579205421906196474298466264071397384981078088815708020547567692908284576079431039273026512391195375268504826615611695961562278978710576401808163854217637647917342787283928090945990324408427 72911381473307811290418643363695136875276855271908308737368782518679837994154352406227698386756871608461870214874280926511589848849509 31906341065580964484578663620717058806515367511816490829946418525273500969682346304935113670002560820475247356732823750538744195557414833644061144544241638354271446743426604392102101801937477784637031313407445437800551648717678380666928485445940200364432619268497489262492344529240796301572454958839525931754442716050812573815074211063046917762775052046523027021740926 -> NaN Invalid_operation +pmod1 powmod 59816342012942315098970462658792059892275264984666990446685694836081374853969464705719653121102559161063448464450002818593554666036972 1808440009884288651308444897630656534698586825767821618301948133780421907801717966360865675146296117338393174811466066268142506120020368981269222935839579136181190608002826379175231653484083965817749509752489756776920528193757984279793894488949075815424261779157359579298699535689561175771493220024997103730141269778525271810651437708512930946335604586826191007094827137940404116546099548730264289007279419487949687312989144242506906630322687986264669543618191810165243349766739960425031531762481513737729696609184323341159543939333974610146195474375073717006915780114030367865416102826534713708505196953254429653890718217760115162556533325875262622658650892203751800063944733453791111519247757916131707317329186318624 5441234431046630110640268228481505590553050843321198167278506680894253863154515922871385873365865160472294826298674650 -> 1868917102694134207252102040168102130107084437203870633712404767805533972261967368751886815417341648241691466033330156 +pmod2 powmod 906859351371366197489458962182767238723305324337650363721894547716468080686225684304741175327218165364803500476822732642664117734279726324556856790587627026725946970595378824330890203049413763747574242539933094058036261698280758898584092403503678500683339509574614253183964125689902647243494148668643692264720811049903138616101907233881832072655250458302452888259131571033666505791509480276398167192589689100591428681771045140936109255493595669143951714087942861961796253418240412253670782200606290904380208138381665442252453654852687162595526895833655945179112068687957113270183939726941196757959811809936558205261712173360196500291168344555610477437217969519858264328797989280926846717454813113095090914762123119519594657502508856506563611466060687895242141095189765452164447121348408783696317121736712846364320084224069074624390305627305345291769455403349212749426521406679561552642769158422254729961842026433 996947580871512602419900349767795230801290887962408015496996074772089653399793247034295749288190687432508351719638153378536166249377834745368554739438117723297613997597400626590123107496838497861515576097964968769896264 3081359966877085371247176826734040446360066384802855690587181059689393692409973323440248101082387567959035521012327083975813899713726039752340118918020953171503302967339164221951150863425883183139253957721852805955777555964398148417996929827067909732185287167723286188635035980830752024381540230032876888597553926064104884343916342611301121802419098256974371504779517476026816356509132615334476794051753772693047370353597207266386891539709846969463929221841657311304966890242088486851168039522081320892654250180913309219323027963690921433339385587890168429093149626240582779023692634986017836843320093441626365256339186750406933983222414354444145975871063326239550805583628611571367611481286573864899353680288399770701778345076612895428573934898837200570094220854472351676815962433559146321904694507907402405338158460820935863060130900387665551731 -> NaN Invalid_operation +pmod3 powmod 36734577104248995873840819306725827556094885509713780954740751447326959515755567445067030171831366433232772350371190633581967780096602321369900384748138031181378133983128752850162373163056555743102746632755846748498966170960795949652801200270304854724721909624008690869892721722230381134222128702215370015138207095740721114354624631103071832905779835482130115654753570016660594021742091702295462323275567024104453826854972404414142297693907095681403643491944282164948231443066700216462602533203368173002217563644014417941680019588516885901087440552017125652360754300432882699728 71693068288665707236772176583351193488232396972046189058189043023781211668851827927738596762459063154374766193023072688184379410708115838174821027458444103743862867364894471579235786435300247016485075442812826046467682585120793781789200254036397487856589768753658402406892704183618528454968197628911742690119756955969233315713028410638689645515592619147977010649041673731680051463868510512838599804333318071565891872451201884411810888730560711457774434519406489575883771039412431871584635668757913557103759395395071322431497297505624536592420606180238436273148650628861970054820501551096866277776583553635243293569876283268896403688725447223025504890803342437460523671687382569834911279456664140990845631847996952791527198847465027426174159836026662330000397191039245786494278254103151966906419770154605070493128104372935997150392146138285967506587425291678426314057807245532312866875088505923886403769346440026892357155113734125426141652224459884320441169771222126512658 57247149666628417345903188494886482088340500787970617416778781732034393052530071008924179278907 -> 27835220504516553083044036348225196793325846635002572356126178643193149860958537923813542124468 +pmod4 powmod 7519049171783066954031721318889255977606333901647640314402426663913059847306329129901400135707078488012385421325622758339871053904508394145041620418734755421348589764788083328516033985216732621989974552794591 74370651689163303003898816904538998611150175734105296899739355226861532492854308404118193597236372102268048802384494955564762065924132707247784024730274136002338857352098348341480143421842974267678174607131219636350546343832657254311099200407928381060311447615778584405450331657415592864089431877207569056320149126499793285927694629850818726702381077394258189906223815785866445131805153343128285488383312767377442826893149857183422015182276767147183846625979943669160109525893361671379235551137658586495352885185739675516062924093685213345303158819 78141845367039752290576742337469779849319408642737885845609985084978038588969868385444580923412676957474004913245709994510423212698301032875922285631767010869423425649560471194421199908063981960246323124965699482172561945927562520398710187699695234792866470346670557982591630352742285315247611718165583889781582725478460565421436181562615657237720385927203271912723553122874793895722002119469167477385235761736698286768784947051434171040326603883068776126401157081908965952203242553313398549858 -> NaN Invalid_operation +pmod5 powmod 319447344399078362244809369850835458121225081836629800089443978331774420616950576927658997875679051991877525981997310891451107087409603418872771038734223251251580451988559768531659763875025253194557359218934667041469058264132447390168852822854274292474070609153551574332610563044789690291872287931039816800343693410360827920445643193377245073377783422639624529080926916902142982571774398027557866458841500424565562178817432005865558775551536982036573441068708566895595933508705111323301051336277111394744112057847278871738299489791567260225095075228602201806584704079628385451 8495184743716453730 91507359006021280572299280655814135343870472282260883134267471783783625338713966120753533708190062708139624179679958187132722619653075471487982455174519127905791319442483811785635132956268059285734708630734372299918788176755208090830240428125137166656697684080777490084137875331923843700651874641247881255856751395479172226849532758104 -> NaN Invalid_operation +pmod6 powmod 596501252188036753747175447016072035897547439776547649351432956805745247160857644678433942695145469195054689612486864532550961027 711137691096346312461705109324669283153690312105061421602403809829892291511081309809890285211218879369357718610789445285145971643764215421562051836814817516746978916026994481725988383631085349737092653142739668548278680191973600642060623036964882805930909004254753721700509403029626258774573154343226579093485734349020425622974139117270704914164314467953412126 90050819812705025933853704565880248683772533517514306552650771914367925548792195296810910375316174291791623644725519539564113280906612567225264764927478176154239492874054731231396151063535771570017810421561322715572672975875004113552550027476528144806244020656990737030561142699427917995722108728878342379792861821061174888219550806692682507322874796887169830170435444666401137693211319414283830549239216174309993872240866776627476022580512524578445228318869734161026393453657334827816913206834441633490753780159590378557262 -> NaN Invalid_operation +pmod7 powmod 9489788766023751865114771477691055268134116996017635691199185993162394449317053171630987048021641474397141926339778837757696933647809937990040851748691551292467693861131214884785476779305467026669948425144164881130054571502254654958960766488024313924468188323098941390184396418152344551145839552721456138304945753682462767271868699223271170921320716391677744077512685116660861764295754802864388858750447554963410131356151872393942530662061162453705002304892443713743764181567865758328457229199944906366527752951140256061499768799316981833361245424933398693261074738013038820298824557728285006370189081168214149962639509547812350792456973746024113470939796564734509532637680489077586568891487238579318347970686146582184123208580553952827403090836287986590811787835672155296471814319054424866310759405090386541922377005022916308610692207023604145633025891658059119898329974474 64679960142671390463369613746459077377109729653414673624742676685523815411083660703505001746005528051956865320511278565898901568529609298922207398835429612027029192361570365354455391798168494303903169924487282325535801862476063262713231064271275114129546229267109063910652883558555231606763773711186856768241664218725179050490431635875501641954512800477008821624124477620854062342307270416291377188260059756681903510437743529482054640542244010669649044150492091534377559942498475168848730528829072472924780840881286574371165455593925428551469408181758185045153523864999079622167897339560229524726618944354957711570008120616964276335601649541237568969768548299614453932416501969039978124986378890943062813812690242314030624135276743079405626912568576037487647625341667963842173669597345652713194701059040544933998787820738609248159969706924065034 270402915031006841140067068666470947288777555110607359179373896724124940711052429847973900612956453777650705304087322574505157993371019474416943040853115327090416294701979719270037928810440995908313865764321176440061715283423921819577043202256190756896993812968494589393187602609749128605164525260197449100119027757923 -> NaN Invalid_operation +pmod8 powmod 41953372990 50268613109283157184318633362041695345909007458339509559613030241616787351742709090332804435042015627013673514439493540154626259199759564276313564221207551078869202930725514387953666936299840641781555894945931103072248051057345243995065882660245836260746938003014398816150362748799671190744796060117532865962025989445298329940160819364089475697328261473065732258545551698594502556273659772668351867284849621372881994443772918438249867443672055742298774291281981516681411341101393372135496562845616528900336418416151866132076859871114841628703121063065995338631261246392440143855359927281478013546807491790803974368294922969223041811625098956174194916800057113938625240683422282035307102893560458612900462262906266545213477860139341182913001862016648777727404136142851244602896556705977557627093140754267350541753475315306324208666031572066495409479710179354261113318265287067569142330659641247621243863858907688679046685 9813895058974662783342911213212715767898381658886397148943078926983574861768708653179748023256842475493371412245689813 -> 7180616564955410898632768622359965676426291786638944188551000503458818196058714512592980080486187103356178130136806598 +pmod9 powmod 553482727487235386508952247567767583856852110944920749844207455083734853206830517677497031396191500970303390272846986307996753800556211676718163321165864583723565444294951925171593010552802747978634608544622799497607630725926941422434502854631049823193958088695407855951308165203547828121250264030761783884110033770148761568059807594488157896267101931772593680542802841829111210479443250139993918053388916048187011161929804 883054271016270993124432048197183701752 927003977789397947723607880097336375149107535070482483575403386242033383487018287458251272709484709107849829522989745867902213270009113718031575374421941506431586443911831946014315256151321900058918259039532048112765604796334437665512571564100716750964541032164483508210661525056023868031122967344769503233765165924718406872266726907693549485557680600861318668353470948236240892313637040444088105577074697201172234699261151628250479618743406040993700371473412039533546394739034473846244001890375209027270363248936210988 -> NaN Invalid_operation +pmod10 powmod 2972523207106563343773410812712606228776417927226445268615205696654966192298095655950999934519413980377741392404466693299693676440303383048152693665216042566925522952749 520465528820121213324952704443065017865664533006530289756676179774235149429739928102306586071818402898514363654700685213594114172411019236393777567027882277726589017763625941189724606955020963875658340724055955234493845810568836334357528492768348663784 512875665899088753439422979347679804174161235399136713915665082972141937985 -> 106523988764731088743778858482772047399592652216716732483120356226100203146 +pmod11 powmod 2942968892769391309349188077443780726147336168883513106157613222027961991703222312056111471759524466891299663317198894006162582682298767331481131522823812783304918743748657357062011503301767252648583968876817843443204499606280130341191040882909668266804363947933490171081333708980076065018528344351845148471772045383277327784425806016086151958047241702923596719495743277987799776486147179939450246414474280590022233238491638706345404805504131789761978174665116377971721051779985728717768324302459375530706954114525474272257663592538052708235239283652864116062148631231300633229253959968939306960320894678723825120397553346667762596251130038744379732994859971472725378865163963463221998843147922342854962627465481889619331321490485516108381255478 13289483015491572981813550351792347491594167303186564046198609016336672924467654461656340176815836145536639625375197596881088449863879726544820283461595764789794626139013891833457816905281732564300546131029458751898605976495779513243368687422838665248728370856806580931664537003898172740799774157537976039214126974881312054619296782222916951787321301711102744268162241373725795102039363088184529174734478108458281537081992829469307972246594882763378081371205726218790396270786179461627557280426496893609460717062418054976772265896213455572484973557345980881618819159456096 8138635188091870500537600608929609681193095155092632895751333609138077054212375998038454142463376821377185422973357135755234263340191301401685785577353377658771577375195952452178536657508012512795700759382654 -> 1732129746780800581636063811517760145320001323678087842029855854133540775186793104842056389310766365812517553275189067247642492246122625141481675904627016663415420247659302773124254760699026954015757591580294 +pmod12 powmod 130954648884564017265703923290571814238214199445648966782157660078935801720420431553328483435956272211330965919426269558571936750837911507621512852 169297125351509950515377403097197035624548018701649555201000613822183286094992414866949191301421382619909485285700497661830078781224471297396252400607132660604455113930036532441044700426867194605671119805880968538845931475568209942228328759997093908088236902156869846082978524836069295361021850954044021485183797250115801536582471490536810709750271670271736060468466876499359109029738160368698841818939554979398049680638177880996987830068268331847062410082647892650204500407484256299838016717444603138314987957563464141242331611127283697535289620279479640592052721820477761631818605865882970129567581954363843107551667827047938498953519748860132983297815213078786054729901465373899712030606274415667974049559 79286305650810320804409277734911256046561993224784853158294036599225554789103507180302776126330503536542364918522642688806235445890533570799989159123650784232530519976026419089130999101691823965688065765591281897833153366612493087528787088607025485169509725415755905533810172328733047930370922813685520952825445490870532528978544614551283396223691747784103347415758782414699742799399001000037655440890186156825106989081185640029920459294695074268353679813149099306563539752880024723864453869019077693675251423711602626709958953612355862562814230507845811549839988943807449442312474666349933148340351661988938887897316430289951890547186826381071615482378412359681375085455399397633536283639252652685206453376188925293429115451616157024281889620023987528690814775577420151688069373842512037305299949522631197090682395184098059772257979262544148476709647511065648851100512842679998849276464237605735526 -> NaN Invalid_operation +pmod13 powmod 256437243550831743907956766716167949508036432579487863561236185984622117968960211923698282823108126918911162582337610118167089522719230451394717298911798803493269584257207417235678419905491820883603118913667892457394014648660502079427228538255978484667690246395673959250797091565317292634098400188774800770452692556434063094490492604570150933996152721140955166673395554778647555907232934334826942079765123356631065804367826954739926431485 2310810585611446310024254896113025610434129242982828833839645950482161859862812926129017361117718187639197142365791982301035049204025678285432495671022156219923310744904592505967085136988600631285438300766690320300981604741499597604279994393539329476623600857597000628339261479692742339000771342319064407323597536325829971776549118953915238994747642208971660573396287673625737311947129705853312134188144097373973574489495661468088970494159751811500875178940824973055396987011746509192752439917916219505095498 12550113894101334484361687327857050673131927252425871897583899664032189065962470229856950101115478298946653956087115452751828795033767589854026228783125290606162767086922508071219727289445449224372419559353297750181707595278818753687209280047293829161028404356669550818848328032111186182912228156466642265658590553386434232894591226923701531398059847961218038023 -> NaN Invalid_operation +pmod14 powmod 707921524899215296121639063735080000438923245726811068273931552611029275853606128428546062517309354444371600389047225533080343675881944998508261028489762590813460340633498610237975589083649107225578611486342772338028317981302720928118888050752128571386348202222348940267409502138045536106773907868356496633731351083044018744964377321891915462666245700982924070967287285233339833891467658331609446444953814781678668038366602965816929907648172821674349151839768415061416636401414941039196508960298262204131372693939084812174596052278177451927364174049078214345404823621645802359953182974754035618494733743505943594509354215908488712738040262766924591820148459045301867748681052743687675339934668527739662286253149170977645061794454133167908636 37820907431624566391978945660562543241678651715450824442053002588613453047517650218299073427375733736938168041666637309355090774434786151960510170166511778017977461819928933578124265981396907176892258182086846609312001478314150783397517833749908576327255245397802082021709812889005559545976046953363521287043550481162063852755075314503233603000661263381848923145010619181707383522833733775187626979478614794426521328335218434241733384963157489700877996262361480829605665155536417300877820574922624109044581235438036808037184454647795800873135571669981394935524041821925845934333970576844848679547484691 514338126516657733266400110291983779252192559415416543168597616145492563446813894956281402550479170982227195541225124960383998687634585046054303835068985379403908599545776567392082672636455801940810382132821229247707588733623664100582152953551972212564560248952174333263740795465462137785310075296376048556849628810477138691862772675849454549762244186341779506684501550135889570172949139304314323538477541802708712914863720588436677881922180599002755151109845372982228171397206482543493248010219940143511204607528590286031140101962177617834871036918148079936614750765141769158446932263418064947098400950275486415075043042687188191478613583980620499558609105326977751328740446441200873873360582373360001286783972014239890248804158302468004583570564822786073347398911383473003547084279504858811136683866129617540875532070488016094416419882280244215343703271418785466385066771927241632234264925317083129687346850886510207041749236519571889298380299769303201928 -> NaN Invalid_operation +pmod15 powmod 3755334249788901439412814868379507462671410885250513694791257095892470979795081489553048628171931263684622920285477188757572940157007385603200676331483319755659421236841509240121062262615277522481501940205102408210842692628835544142502628330321552497893544512545912810909946712219376683211771432069756691366988171371536081656679265598995636294672024862429488619627426514215233680178421547642866963452499132365546143880399079446322522459418018672864409611472904516136483280250560032853611601578817957401749661275718065914698327507882414336 325772766536018581235058270813077745554468317791054283481342278664659095761435983256221848513475601596723779511010913216195383265867179276349329424626198737575097385302933887885761409646528950399904973389894962559710815620246911481827403876302716984275151924934087907908442192466291667918649021665591522102423728318664200044490342923488472210957901723762915316337022112101588481501227435139095772783977024469312821255777150292280550112531708089462634993032087356705623562868664039487944972236732478783550841074560583616320 18407850487170151808974172898596455434203794329606386342420848022400462019439977015623187891203064379070485813079024370063986734791451157691282086716245504657016706259859680348340693538046778006098653769240572408511746442588968117518013839557994887607319143458804816301189866374507036223265128117561178799870479635031913567399324106702249138039634830714549352880233151918373235184950071738207249457281207574621891245030804905915902765825079737883922569848517946634601213896463302415478331267641800111308606084329275303997230671828901914193784173253211407443722247253770147732303794713877950345069545500807986356692368506868750560696561479571965468102812556951840280519630735239851479385593759302226226178479642402355053491624458104694889591422177262520855252853746820 -> NaN Invalid_operation +pmod16 powmod 516738858571043312264208226107118994881230450153437751348312010564737532648877019746478280513328050534496861393924254426499338656856001557065208746337038448035060264407312061080020796067642371617923399854148408701515360785861963678798962356314508456339631954307217052375215995037447021656308873708593271724568772311038788023945560059785992377436016859785152999497803913645777016877305122623702229603797616727269970336100275169623125066951236774006888146654692004836586950940433326535648311944110545095859912087105886720298130871715932821434387573657821600576700362686149862491809272377839554956002691032534023200194029291374992855737024291567835067810437309311630968326118009665618204334431046952230198448972043451240122864716420529074134346914143261147871975710463650449525937407509788911903420486007246161160941594698625425111126695788636250444603560521086922918328563607617441638516621715874451287543385266886911133029549399929289926302797 3292018016626463598043559543730216560837 49486544511559503040296901885952944140634936815471305251862028252855612083909549710082064104745026742 -> 18950204383268916740317337686178366346452147587541307255880827977427668182548756200694015710482737465 +pmod17 powmod 7549786747799552693216431524147768463250435229532647789056426673576877037395301617032016911282300356656433081645038 18616753024986159629109880279200739555246444618996314377133884065682878556608416469410534769282370504157202407079435273721350593773693737588249725063894565504106295824698904561556573813382270269356445790264701112070072811728126714133084538697425383238516163373070977178372998741455396812508765954187947199625219909458499146107592581684533948 71189625600975061469682926565733471422994995852842922507224905319923196123336849344888877825423378519674482012542223410788097253169524663623134557606848792094455388345460127788884358455071598870541571999926206830009851329196586415718505926507466453772249549289123119793610996348700848158337176447022859373406082154 -> NaN Invalid_operation +pmod18 powmod 86 431756024801637232774788149980927392723488552624359644367765247848822095848286594149828392972611764547094017501469834484469375577326039980161447459 687432803632149939229545760042049291428236734923158915265225421175037870619011316081160947542456684034745856880611728102821228457590485391350488944401037430051968851943819040810230379033541646264094419279220053129214022577688663278261178275019082394302877439936933214545521173570231281680740621295299203172062426289391030241227694634103056027359106899965452141936839086189053156790898318519283522065228870145168566568938330697564 -> NaN Invalid_operation +pmod19 powmod 6596805210209577859919623892773836388251340436936785958671929630038674393363390821000961837592606891955472256852324657049726093050890262146608125981826456556977888211797487093385771036453849662376635977291514013227556006311875088781795434573008823396665240777197349180020158040242176621812775732699876573248106014132954382089586719982183020503303903178564289825405378828162226370495839210880667886932400258460714943952910669142916090513049990956475861742015393166417479669284800039960665101604566205471059928056388724873241861356264190872125555583340521015788622968077599247613003627678147507200735947980339883581575574106892413061656812752274791786412770687589362948023013809590488043681420168494953808284770708435648567141928909765252839884273590594246344683803500347372877312511786418829559159141728551001756158744335130031467406688910274813863312064566290334407000573194160214773335236779349889445305648367085444258126415841406007945926220711569199529 3632206142795031967394890221972492475733061797719770805144281032406978591756323172841484238597707498534156667414750769703374261650785447947386425363062115059300890624938518650552149382264976733830604507998515376201780117553941112338602878329121783226162929332271380165498361106890668176576496633442202479458052766355505101525533131812078011494834379895905725691296055117219126101933858978992839681568906610832011812170128780245908599134831333338285980734486449931155382927693325369393422217622448791638 1094287269347742756545227726906838569252381703483456928899160133842883299813395863952710423281653726088238728467666357058042859032787997511635124758980583774003009204654639366686963092621844678331911003382200755577371171166391103052563584131913598353180719409477752534350206922628932001240078173108473818923364458006319942559266413671563351677513581226628998264287752199107609072580215189806694309676332217433334172935655969962213754541113463935746260477274635531882667944008921455189607579750353894438982868710707581466292838666764169870040574758455109658326854984542087116728901441853521338946770958327967426797217976557425656218787872345081943984337403836394523903256402725022375587038622982589449175482931375085878894823050557358456635558216812745534445461629668184328033461533414290677377430524989455601617504449829019629247891368831404592539361641994915365264455281652039073981357536247007239511780605214570879964583753641 -> NaN Invalid_operation +pmod20 powmod 85443962276779441259850681791582061543242430330864014973151644565994543079579135089016397190668072385024504930924873028630816619190194014114789165401154156087221785259438619780964419253154092603110354468536040273617944190979748361390808500063274885476754754939221728838063388215594896342978951156095050802923765285104320223380045105570991688806209142130101005363709748169487980015315080603868092645004565367894098756087849331066072823 17978168334969009565930844628942219697654315088455826313176232467077334236623628753962386811380239784599096109458959362627640756329295850776090694516837161594163856802585811113963994811979299249980052826014718226597923350742738861231278962117091437927459629507556570594467260714743196620256988999858428492456065344197673985448364392666346563383770615419138141543337851727126877634554885314894034732498057906061736821870784019404724974468083342796611551090329471149046666020754438439590142982361200323337260219011066519420657603823621059870666102208742192646368532190669506137492175520144673999648738697578577515312320689847788430864411516290130861511264403153617028735886251083721154364468434536165249151132188771779608793334996659528872341597441826060360155500931456521628478056623500947309782100378160784841588245238601680808723347499193352503329428546178305127666796899373271476485715 97907176091456650636913276 -> 77026930136244009520801431 +pmod21 powmod 2760010978288433842862861609283900054607883483210190557862168049907451968926807134230659492716775548396788588927842051690644512300970070870243509725348859976784443219302821749104228975400899736082004078815826946574285786208548158442056734834360149419865352986725630941859511603552843103173586177749907579200423233364930646166373634147476702710583363036037347464178436333585221902432485096107562874363149716223929417740160878436505591498725902584438311206155232742310773098970623609510935417731932932454103338640469829308223113921456329945834870883603929346186896195705061354636010136483406964369012889907437185101869445675178102984236218458309171550817016252361621625374489302340967296906960421843184317506604667205203467080448245587563744230206359493248678860641099750370944502688790775849238250840933302983235446195266719620246168788280591888790603290617540175754727547560873916898044574311927 2381526036210048863906632538284914670586 5443615296031365468646839401956452873899565012949447155576594261856028879876305861146740913806544984956311772276221472194616329093244602241153982642056386619218022137394101756558959998448933849639923129826147614583474566144481698717868787958175892191104228697423197274320001734537583535348133 -> 2095612599604772524964189228796217903959136172183674533516785679829313384299506070992410486101366094682261123471147585620238223554181381509544391827158599958440885452938857533276021838918698953778493116242090345352305275009770922420969878057710631835095471282832752066283569586460342526132097 +pmod22 powmod 80515011132316669829849796039738281212145329543536227523360904986788261069054398333681105748687729166364807415737192723058735755429 420926990083937524832892395569661726697557947159740940626147858576517740127739624607223502616255403832211568614767447359326552777481196489224663446359944709654261057855943320475729690160660411127502019093633966648210133832600716356832149580690621762545839651635237632179181720654642970137686540247482561339614964578810024381388457561284612447516660605946729986549604352437762663022740733099320715046898109086192788773629111755613780262348984570545326674780335413812666884810208488092360142085750391795844679784937305191021882422277933334991473269797996380841387160841414993009664893436269691189 7112133935969203772949512104228444388157718900944695524203370470391262832692660323021780959896078508059274026852097738516779930170959044668720142478477460463680106622071376863950329418280516484669530786196702943055999574493145285890812222704035747347307565436665805079246683654583891513059658469079426178790409203807841008322979641436377239146342488722821985521559731526946941004650606431357186753860169598570224457033703675534698354339802788240547876399704352170615941373722513331506972265876196672812629231239112385209281953904470173428600755848123968134087340548725336413615780177732548707641819811621060127015801974030078992042637456199437032135150362628429674784636342286920335457868601886893949316935404129210916126852773995233690540 -> NaN Invalid_operation +pmod23 powmod 4139202075747627821926178037244201924592020169195191055129726054910008198187805334628677855441513367145801033230803672169974962838743234389935744029582199747805786763573960317911881890070598697240827710804940158986380174234505528811529918126165030095604841472932598891652229579469438276145389936342354002073440040714705864658152852498830717921818974499783858106106636208278497651731273303166566368095928081229709531057891619264968680700027127554377317815635295266309667281531345470110294241390003781436544257635497959776072792263269459889590245642348540 519832237340616163798596520525121166556829473226211394977200461079720141961356307307019247635333125863961681375286771019781878619007974456868514086946308840387637355713860952448450452934585592287282770544980312094607151856948667713176146607963507644523881276778275150844538642172585187809621498796963984221452714869511700177196962461488371710547154532130762826491955306535724386199371135733871325871455797824695168982410860792683320227260949880219396922467623977443662140776964516091239427942091200174606472042866156348558946170021297295545197977477708847794591096472981515870267270588087455230834934378275856441279647352608200345262504467505283936398939696462238451266489338662533367059503824934039633579920786820586589233527094637873397735026778068767729025408930034464509792250004732813551035898119110969663489118894795897396537 26662950130683790562170047128172322278044510516869507949342653832867284339386027834795924358036615169744395546565803393472089808765046494520528664305415709074444166763440357374742692099324303690413959872580267329997077988871614598096328890935797536039243785663335902161410757429092677888615522536071780808016011870854583045022652961013434681243106421444108901418400701718452309889417258198961603095912674074855950965810525343032351850422162476608891000846011797520421890913142383194319395429247900949310825899227205668007347935198337747920305987603037434693503110687478139470267522109062989999199765583602605776667359407369618733093059509906198751426846600254292275282519310961246768821137097074881556923418053093897853643979527468029475911167831985788402251793240987419258447545517005453850375672626284264689948379143965843583904528985565906119847337667074180584378713975283112088437872701110283306492356380675847797552762460960375676357468497494393632 -> NaN Invalid_operation +pmod24 powmod 57804483437068581801564327261926988411031401660640980192569689166401586107566024776114462410493443898693560071045387333628296454488868087154280944359709029177151449670420068361936172477881510978521614176430992369134850923253491890283694757942246252735265624724647825598575272006395753831355589506682898663900159021029575386046880993038501737059860885539769438415151416395909186007911100566225995945439976279664652405158881448439522953634290578 24999063545228871358964684291805595403641805756502389411410199260886750132727820522135062331023116531816291861933723968892498013687439588045594857677896668156114739669221285625606026844698739865620162607405786389609186102885090602719419380642524377920609957112021180125971616500143776215410650060846434030599854274567643010850507552199150600772948142314608894143164972466867632832442982269913115741838565106671673114107146796632768365571996540048484457935223520942006958685047494359700776482458970552475494219297338732792957913929075817892181424136837795755365731382102778567753796478407018711235129309 814658848286776706716956719935269263852888855201139693754595529810517571350515206960081202587380628052597030403064482910187016622566102616491159478865856723555014568414942666403669746026243654220501755160333536415737469416351008259128698970724308137617855253850229479614873889679266900864655209063334595375542339096888832291467741728189363000159042676552957554903817519817517135936627129934208177584373085087375006185915446576 -> NaN Invalid_operation +pmod25 powmod 98015609587256686926728871853302214382236498051728823006798108190613427029753030335571691465653571647166496734590086418749544105601989985613548105235897515093807859100118301764816624356011566850162567470462625797593237207494608734622862602354860336542802163668610075485903064224958126867075631738843888538598054789561119523301383812293467816429257722534563288068918226313400250858771604356060479235961175977353941101989389404 770805895042191412391402527829267590430827856300514615276016501366223457152362529432172006413911631087734785799540939197966638143866178120052522456648849386022133405569244227602707865665904311581726308074980053438160139799830543121572503335022165778728111659374119673182684484898341415989959153804687563302344372629516359774438860977919920454479760429683690301950565073309057289121856442132440751549469654687051788382479620115148628185134943574893130982244719355408136296727474440877132345437426012701962872417052272005206169857975131991126001915894376924221367650077105490810181266455311734123585440589626576764238535646796780197625473414315007763818222783008195559803576833746204038873623989392444365991248954878109400366171587521408879362738384935134205799468149060485972 734540601651289051617893337547723838144096045011206864508311102294447329113070097391035177349038089682977651702341891060668151694845952839844583414415067643129625113113515661762995061944079957013786250953290898580012538447041650875697772705702413461653718811355338828249735012122239933773085881288052020630556225990964482223943382444960810742457357320083120928064546430825567030622116249130018796339504138859744167147586293675141305813325316119294073812948440165464816235286310105976238769260493662989422182924201979438090537583047693232292125277753820465300716603201801147468234937248226757228701592265600020438107177479669914525811494821778318317532879550604238778897934531787502580338531726033723538374996839406495893008734295403573348744572792982078841446113036075297734300152560306264212272177389298424540290105356058087604931976179184383542748409253315898010940815584621412509095177001302423202261753909428579227961653128475488115749165665243090449099 -> NaN Invalid_operation +pmod26 powmod 5981699555019169882596251536282963857676189872665720724948324238431921142872732467850428321616566400186806006629151105721397148909935215187137996422170692078547140281578825180569683149073669313964019739464541172900248562050339613196421746171035497851786916901 79002805595505723134778581050525486691647853873254457425856127268882250523339753301528310367721254346778465270825352292522762510332680443630917684931313841732677889131882639766337269664696693923754314591752793169480215135026473125505414375962553842542860673915725771723444890506434271930270685387523071638825786153432023354055046616773690447719326630460888311370845087621522115100452990621230622530336586489539308923665203178721662705122738299423803733797291136084291008638449720305881275378330964053988523876761561709466087667445966142210218084295785750867627114995164791051127444952510606349942288603899797705936134367807121124913425735151192806443685653849705936384356908540415508842981704766831683369452384541826973016812038015878622342342639 407062819881568810269991518565235685196705495398809806597643 -> 2041665750809855149979731101684787460089856358030399304311 +pmod27 powmod 76804243670889060532032590920171088968052482764494618607245911811512153572556721779353049544033727578755158552255368029517685712327293783056631283938107522375783688458083022539564207268259451101422998874191732894682823854833410570495843257365816268287256312616843023583924441735591116887497641363565035952168186151715421375238365517736522412792572125926594466481773261821241641328126271191295269330557136199168622244155143705385131242583103608911451233956074360149743838040327900558051988929743458790194672117147213870782598958137921988073744889379666869755802112997648190391719998174067538293586498076621006310218493751169103685577119 1748360038502820457813773848719677813183709820652372178976663097271294436693429311403682086460361550521928404091934975918608936449002663232117463439806059444385779104258817415198866215134061609836445832386325463382130052486536832379719059943309406166573339521142992885104213855044910887893139361589540076582425567577327756942570070557234061904835468769380856961880287197983872644696651301820286226712534706699545953955202767096547507826839231740501152672910432597899835781190071655392643811232312372746804707779346125143172622402866260060422798315662944019918873187217717080863662139635325133240435969588396969973747562692417918864143803485542285405413870199992806924680629076989494554902113525818670690255289489 308038371306030820184353366779835896967591000215111790061683244911132133495413378287900473780544959699515404932080510234833262544039191685687438043979184780168261993449307130940462346205836596614617003790672345919257743482989924674326012489073804595244290065360874237911967701521829053420572041252982061602520836099466703451769218903263961036307629321136178109599303725518084915853468940802140175094371785075193256211314816987551721841863365399015996304796635055653695611336874302165764921375640190840928312125485948807779284373608689814874173719837810713175290131847708641236283083496746678302201943261054015079457237660296373976444289424287189737205278226221959599328533550869684516886867403422045314828915459841936261572768503622783996310089977668893698771413410942957954017189531019389257506194710324228940412999907136092845095945 -> NaN Invalid_operation +pmod28 powmod 1748206667754614763129990709816326597579821124590587552461622310137632218205949871855891618784993528271192321228616103407452621309325610961475646804967313550782523842514251457152939175070851209903292973169014224745107333770283606841081930080585829097466484012524972185194856010770412827004305197358039743 30709555292611605607168197915063343230536540985005075298797094119516858185593859954394497770032551515025195558001949183600458020607235190282408581017340953699289751989329225878458034675402564764733790253948676025341318925908721386478071596883354191913992063423732684160545668507119129741227835154096514265739238741197918642268237868458993700473184035684976307429308914088261281354579494154542313981030089662300201857053438871166762546136797295675160085201810438724523033362582952361379346970022552758166788193947384356505679729226518176240049686117101112158416960470654050127719332128526097107524625818566265337282204996409447172325628109426705917029685290506051949183183177448257479987414728817593660763131745250854502932089829882895011582607226893708312051025196136 444843157149880972788496741863947266009117820400246084339508908375756393377089634430226641703367565637949090870525199902338716007697702045867356442254579460388755293107487472904254636071009055818551620515237707958404783858795604846055343613874090286525307909444485077213956864399502383545234331035907596540289378015368251044054769665039552099581816054428380897771515214317513219368727304331532883294874719991673689772937753933862912714003933586509828761738376835077670486156824171805653259551953165061838597536046328961306335879376375725360978015823079903300125613574758548050438381469715028563778958253315360443790598562475066931043966906472270617844696279254088382130846222249900994852092029155293898072776806860883193064606647935763235144012353399726507668381292117468079412317814362 -> NaN Invalid_operation +pmod29 powmod 17715967192458657576913336075915607672513837763499276226820567307067753413600198849306234824495249370565072829886658234412695257196553342914037129728755973879056579002168839900170775006702029128439522299691066629571703815471957558534511841853665300289784810655925025201529245441524471700109769991658919074236817328751060401441107907455608062265968359084624709745184452405551843365649289020342857495098756107265508702183946905553480776446246538114745380059630098606394393189609645776082538249412943647259329198410303132543517956349808507203676997118078766248085240178615377373892310325242598126850738685439139515905611551288738289619939299029230253566421188055012138157052015703276002758803264155207427 711012735762435621171152083172816900853189477495296575594762917617016621181814659997812652406446573124023533018759157857550246537939995399321891374993572720872054318208430397279783672712732526977102511391836337430894329890234987346739422235145988671747117726585022589884752741883959621024072152602608144270934450642113831885482207609378128797109511805112393317709798019170167025753241851197367513347076950266315803750014145859962808981073409885656959304931398390662760435585525426504189500915948575062786788345446526545244300858599872408556224061568141314461866231970084085043063153077294704703452739092268774049605035834815246173385420235662882956430944958136106966470305358 9030352660707698439121877742061876958682147758368124979967482855269627873300720592827670675048843616584375988351374787661889294667943046744789017726914828353210829193984172906902955437370187948825233564580353708889593524674999852284440945876914819742555367257862225436159177200878502142178007936343322559173714818800241816089236902108961019801308228634994252752172781342754254535808732309137938592700097390401027569466296583732422381425295091016620186869191729525547444546699126604166681375380775806539497143347789615224033609874986040959669280506867652245360153528483039888783563141737678354510051785445157692235018680360412191924444836481886627419404802632961283993670842511332984302238623429856078552025454928600955375844406484856830067203 -> NaN Invalid_operation +pmod30 powmod 25491723506646093832938643507168371546045844159382796362230863899153222278597750549401320112259401252416355682889282772392552603717282041011510918782747283333116118872296108143385554779320719059902454947691297093266676319225425982323195386539686824131830143644231089759801721813407588913901178701371927066697345503 4872435739880590199948703347320404961149127898413950554328670103411813292449026967257085553759462237450210431900739663948523176780245633973138093758250237315527686274077610682743859955624534285863503476439677131599647429710645279245468373014874133615207 445132221664710296795164136234141678595941473939396144149113683568916008835932624192166918033630064428609847507128127963260095104677897626840270916294615905090141716739368059467762507145838488006127576435939047981149396743125362262767350518692806712402564990377669149266809485959868576729036525526967485707867693153969116453417697841530892476480793847095486557494709742280710675959147192492579058891129288317966740090817116553883024771729534213173500173085848952562623358549419680957853841079509273927220358577802251310176987572710645521198210432067324579536217077781491403188868767873629748803379758732920581311501122808960910889631726087297530986056089338 -> NaN Invalid_operation +pmod31 powmod 831909868719724746802826710620244871682512667457402190564350870096217017508323250807703591112986309265037897142354926118704173061971976086209254321925766684643915637324538981162824058099320000213830394146837624511099369714374808036192501443390834869187885715438599262562390341065149549465767386929780638127273439496671545148055937664313451728567139845442510375642448802822347714109612949292294331196773011047705586804852602448067323104873299287377003736372113048771334919168982954009575062542160432882909339659848954475915546557126793144002142941691701051604821681489191531662896300066681416310342416858833921782215727950986867883385143737196350016649624776578754941009528321826667381344887022890888535869408295789902075129968556150354962967239276917123343376718712224401902914980583234956517681516613544748492109402600132836535474590024334507538618409241157037528553516015161966186620093471 67010176903083383566569444164186047657951819670364202873420208196614174782835880817621768241708258092228722493665919442161302446257781119629173785218893837 1390967737954178141426059112102297129529597354371409944328785440636342926667082450554468140501713505772331352372074945660925219342387313100735855230752260960790699330670535364125710848770802586250023300814336248533548504030433956801212552331471858108613839536421890668635773528533392278597700664312386536460721443740243675352357254694367146454421455205809413017088473547083024903604841488845667312736117752786586589246277458040801747667454141371961047124763762415546512022371745398739961941489011064820464077490626504913876251146453431290005590706929358939094186081334395247183763478582639645560665145342283479822082692449887068563108943423206022732936369821780326946972596395374984325467366720016904401286008446504011852651421780204906300644918802732826531829988116132827094147025446750675816675376400133581947724121270176710590396580024141682607485016376339722378520672954730961992855112357571301712999258236 -> NaN Invalid_operation +pmod32 powmod 5273347073357336944900621823030047810147711301990612592983395172683256246066304922895813677779356710586351916124284329717764390270573363822908446524133202024761917659964331828306470864321628621952572202055292193428120441547814332913445758518976165130683133611149704187977183720964397087192506517549 450334392938078405824900799321463720341663817617435666544736437706612775904869610157834078197959886939238270706130600148420058675134227023002968664293256279370619278888790247850574202381632958860394001872225305624884298473657460332025535265549750442620615828392270911122107604163735497180230645302415643777000232220257481639918602030613009195104042031360787131085127337903046914901339052507447351599771964338022309969189465112680447114965902984629803578537082544560810551192308819626399704877077328289786674157093119375287288549738101698286614017451120924203490750821135262118905836528015966971814415623856646608078447158889159427409504531271004209462613409064222923459119511628832543882753575433305094022577047560498498682430751679323606472698432225833425170040944333774841252132415221282260468874963519801892353437031614550592300105165864861268689415740267151198463615964845296427557676443133490876932567072579360042875683272080258548010333681672531656890083 283612484772506094654498121356831059354483991666728829476574387823246524069978250569828358803303864276369590683103824137528099259646282076278019072898908957416451751213045264915038802675771661609719467454960768816109330963509254731478772811465007101734269849623270496528974849650810550835780571958377596003686663192960043814754083539978712122790082412757331483893153043217070686428947616329056807902598196943989403402246994884560144310658691019828944769946155841897716120699339336309550152531730089749127392897755349553464041850620708600232689858624869397343897724304022861125075163513192801723827959689508213656266187301088397076086311907266370616574977919401981905590244649940174960036891193940342919587924129903490015176800520677694282438775645870170525670177474887990340629552684313472188508378936287721963267293508686715107058425497704293531451095432 -> NaN Invalid_operation +pmod33 powmod 93379103102831206329814930567990651941174223342266914678063969063395766866401208346161887479632244539011070724824461397140032647292931122029466035905741659217389485855620516186952461645728967004380942064039456632662069393979525200390204604970328143653291597550666030637692155393253450816079541525200585926433338024249943447466398764320332197785824058181780102098223810050007362334279133479224941934700309045632550208270134546364711819548741275129200028603834011786355849852302375064868604320650488125854903999593955572671994768436012911907033607579291 4352365551745424062 348900500456398359103285666692094410146856681701768738099495616359061670947234949686315844814723028674980058019426235842969420912733403024249421897043086308299804789621832699534380775231817304503890762362492356999448956493156455203789021551319130195397951969419828148968664341723036521098641122268676640954583354576300371991219563548142868716620502174422339519858925959416532003611965928212240127436113927080577796186699591449520119203111747385054570488383566675443872172731280894148535324277099400554872114679683831293706479417614858726735210993824055819126527229398480075666719235195600642524719182339591084760999148872117094703820668139629994104827537599992140650554572664133029006473063368841 -> NaN Invalid_operation +pmod34 powmod 52454235454617649990054564461577897894858817388802042321070485528306600640041515440453808331817394006145244337351511882529174471928099453105657157753368062043895295929616154743698531717118049685826148018631183738385178546545671873869481630257634287087900060554329482318142495383949240724564096107485111905653265702346802295487875106065233796952289861181242252337862283428538573660055657627805992907259981081266485452581090966378446829720374208557597461564771250837046824609050983975763623722090901326922060394373520316281716156359348037336831921517773932071824503012911458815292981692694544372871668152502488128814634111427426212760066251024060648324435855673405295721701683097268049968549943940445599153197649701625719956803831187069431471384 18119459057766026449776580313829654588748431777 727568396554554074543504588939724418540528492175602254792300405912487682684798330405877285913329701612920322939875130848316461973668241858908018308365199438648725671302412101514610717396078685184119643251261608137562506960688043096886002276382784112778609399543508236471324780310200339491418802493384703745843431531509412938557608149655260332782710880880287239993866762403244862724938454870796273928577160555888358278853301084994872338155500796881941184059301089868810494362733321069066120310767741782496931363244677049397104212770488289309905366870322614842366603410736733603259139623124729582308311497396273662925061036622898332615474464056201557499642090794182146044055417386234391829049693880743538666481719441689610389916607845230331668643044227966471686884257328654714074019939293296853717244014017097294221641779323859 -> NaN Invalid_operation +pmod35 powmod 694386859691683684335595367988734565655274659024453154429266153003628642598934584690646273608123952563553345170820016 941124897407902255615375975228043875924954717135474113767723369977503291518582676723473031475374651164232171231350648697103932898134087581189368524635646189984482847971198274977357906173122309182444325762666256577157795750099264166572251110004986319400795110048254416111431820287546752786020063844314243496934591458076581998918850744746477618202223860153786968671483822953855875089935578451069109912735621718743332044830022313434716355872915744376177692354203073629985843736049171200840950865984278920707229275456406512092622312602711382087985640471332285656108324034041360928354767936222230441185547708354057886686070067373213993841827428128387423260466292229720277767756037706797445799507519874748912808372378368795031699872734377677514847878119453001946208148204634 7989481573009081505291192674818744747364338265128331358007272215595033473271321569799701754683906042077005680475865014678168489672213931095665682013841955046449502146846652398519365681197406908084460751440348827350489781662 -> 5372359525556999675180260483342095293368253212625260260462411778123340565774132919325874508520204360218719126214507918406114374014770219763149544127451887502042522625795995105635297294242381758817920640345394649135337696938 +pmod36 powmod 89434470922051406476789950901768191400283092030109499420828124258121034423240260692450288701149297355506608998817790515149853726970547301792741077098198654591272342870794418530997593682563745392078996593980148899267078614114810571586547342280162877412742875701725316879807469675250105844785889752153601756982459794951985799003357074858441027659669325108171500108569526488375152370170581415329875088880504680617 36607571591622170922989516323779276078401261705499470523664209721331774966355837940876645798590825048602665746639197618892555157567960272772733740314321581565411458166672750624966581822399 42441195884637841533595030139689048990399678210998776394420743416558398401317984445799312277249596719814132131875097783561706949391286718294171770269190136777745287110029703333661226964325977199455760917299286811461932093375684872650196322723509845655608993862669778801690545982443325674796837213889979350333947082729161151480498409550585698182197247512843956150439904575426570994712391440491100208060729705303735559297420849774628981715038939339935662194411991622788816587261451130116689346666200849837 -> NaN Invalid_operation +pmod37 powmod 47316996280816008597104593557124482805052315451842426183378582577690387508616020009520507660292066558 469600328346738884802713448686069006893625205484565037667478404768726779752171662810055201393196377042843162982047578093466060601850816019680320996739719556245091572092151333126418978994627000068506676633529766722613510243148103483192529926887522640775951787783214154463123524150319871231985352550074885762748586169715827183358589836732822624060896268950046358145576879763367173042603638240496912446810297510204454962155531084906277967931204655002871547135722821035379594087111197341274922787386670705837670875936054253975816822416986982889059696898350564789848475795309830544965058793096053270467721109854152009031648279695851278069587766494561429377473983949983288705653345846769918382276286822415411986321622435703119842897764714543372146313667454963437534199667646944642315911482181302565158218700011202669786060857401697590750448532157215078433886968219921062173088109870384965068364791073771131519638158147742007553183128844209436896022923426585490122 350035783968302865187710503654708500429036069198951399041967581723413066626128582472381084004208657497845163837661595955985142327118046615097258262177930307951429218451127653845913591217832007246199530036592052841271343017290003755404994183495478738318966871345787941743530437047538008126390441558045146098002634774522070647580564718574217085697480339684430822441578898352122240636350913870446266551865100166686988951637426160706894279866129644789110222808936655205177196154400 -> NaN Invalid_operation +pmod38 powmod 90251230680952716019267740807890188684650889164260322451685752333393643354137794528334355891092688295300075502567724729631486318180444047552494440594522929439588359720698816859749670471813769062730181630139677450223835876953900261640974879344754771171037864288433149796891233193349469006779863331049084126823631081727551034369928644946237421558588794581465333726907097314641385317677340222818646673841528842219568980350639008108953941329390824294502987346926770683023536423502527848427700347064910374832375803665189507719439913621499081265735385237914444619413859445976800048258849528775552519853898969451824147814800710298818146469927872234908412823103170681602342123064590494832580798625815021844476753689113109204925521090398705747261616429470244571448662796606858505074020119255708099960025719524062016604399824939439273885171582273581135581183700534271293033555559022141060390669894006330994662995259523044392726776112112459221117986954549064567436628 94662795661554478349874643894908595073391784802372220793587154097555106008885667952493521519198678380147290522826951188982444810995176627553372349734156393197803788316018685977488275601309782891210190645798764767381118210937844260890860059368389297707305229755115193568908049016222572842499461134418483334970804342693430425509078988273926688422080806350886436588345239191445803578078056169656210458694540756146043497052254670889298164722020796734937997304701221600750869829852292374125271002317796849906017786252835671290956326264574607963605816382171156146015973135557239061542063356582621413166403169361347921249829251535668835257857602009300943684812628327456049152515718500626284089702863543619724943836393429481456308243286186367578135893888423562888938481815838827743245988513346158034657395218901103094659552268169982893910419374996659622174508872330461164445010581700163845543196583175344 8470665482870507701946122977544786235535015843084613887725046434005201899050281548009312416695311139059775598168262598087877574078553936649721662496535165819343331737747597913168877722966596149066664819791798138329300395816475361303487311328728185026360550656609344416147209711635907703175528306297728490798909596979196825367963286293072610204061032632958553714226999513555804275610743379377659421949363790947186317440061360651243222010852068461214711619862571483928058006338548882461227685393788045444485900151648083986273655376732535665517333981857517358112065660276353591678677135588392385847003514901109596655553277967184169089383210455867478723303537683382843878447559278330092669363624442672891415553980136006860237477327793048056219487230114366041318333058686832608528178889206229459647116308742144314803853394629317444698352204622293399405166731765114038862505142 -> NaN Invalid_operation +pmod39 powmod 819371054788048355838603335152927086456326696562852078360146394571835173152660 19911412742918982303092934024161148128331532256278014412374940318654694861303710160267974241855791569642315731536624880892783106767547310178079893347796276892062044182249896707450440952892988735894045256983782596347602811005718585981923391455035889718864109421625610991667921793113343986350994256260797832168513229711442478624619747343879240491488170649190114859257488546598578260638888881625835694834104813239883298248257744573387803966456490402213364781011597784459005640323445334257411978604045368514904631954945852089940673231330754555484396770789851487197766156526332349393590203869518199167312444964067134686487908422484354473407405282156753822365889162769358691868652543588563180922749458550632670614310189855950080613977200184017388914898644491480502320184604109580233833405749229671232750932591327689581399889998715609992479678324245483178337661932635303300359366246034938893018694236047294327450090179771391239457247694262514947138910215208089793545539270160429609834793 713997037840286985539193262790945139698507570732482681201285372472445820478900549755312446059135069524179071673512624737546285716195155710700281840608454904886295564984244470738056703254303132329886795080748047384414565845311530217619042367931964612072007568493833487813894337324124666404227957607930759562773224059470814122728189727032054137574902530914043084198806528389620458926469183777523558064017284244122654596713481857115021713784176430299702276776149474094934042715568768094231052571103000160901030743288797741513808457147927310724875493914139459808275429695336349690018268337145357490393961750861421477179450084692421361059283156170309926451285130789002367761278789916011555258532544997071877333023110319055774809725968642 -> NaN Invalid_operation +pmod40 powmod 962525276414707061838922620985158718526443809359434914245897702839534031548489817867548706185440531696000739072381448934666555486925322015525163042955464686388945593371975881915441523179588 39428964019889873256408453742198401699839394524898502978561521753102363417960761854045596113059098503401301906199661760846654447592682490485119017805608672594830771411423815436229188655101687995711036151532575558260482359286928056469036454556978082198632544727580202713456033318293554511918259501244770264890944566421325619270467495987436199663974542807562766395293911355024644626012528823610290286698442742538874269887902094515717572234271679041376455356024007678310376148600620278572140907493878574407197242698967632602100714255039151464550454418681679447053602756568665747543793016014101356644018894833249099113628217309181563744275232600871831917023880946458581327057144355221682094971843172942680871107241078736079693109755148491488450262803120413518847955413715949686697850248132283798627275876395 803931020239261139250860004193243464741855496574408742711121120160503897192365499120430703024345220674822688425263445961804846271417659641670978973970716946217048650977117685293347903499219002154975538009410549009258011665149187230904098675733712073144443699667619406442843897271859691083818291952560844996221825084132204478189931247724326962842030946596559244624125599724683882400724567261962349791426200019101041672216165319139673566587283580876774939229128561750583096165820136750336191592023307859551081912723637002970509345073841042770815039375986075608016938258823298892082577270929029674986926227958416933760987669771644646 -> NaN Invalid_operation +pmod41 powmod 6263550021213077110219909366219248206444741611776416069743381138227550225906320047216941252962441481951395201994022658724118087100998664258939550593723914667112426845934129747581302057457522067022425635093260560109103450838488648014005334264663639375364530986156518259916590451597537138533182213325573623823857473009771528168106482563016371870589273590977744252313900250251711044709262608704747397167522204923700762448336226189623854809084197089999419084138461713153776780182809164745349751203123062325667206387068507389558973584929845743178567983098534326856033276691158451269782678423511307895673985149033055363709896993272336924697604272846141644739242540628812677670374872173220801316762340958741832913765989651619363882413485087001940624495731809926561693819998076050634177710487242 49532039975599210850616118199326622567670560739094910866679937082358438703368174158105030522858424347517988200528699948867322780959497278740445489821260362076501851527349422473658844001169320972416163281906261070143462767136344015019803508183559490122684919723958844497289087949672287711361415495664464467061848975730353029534817188516004663492681225689739213697234034668448123555707 1679948205053295288010141891991237841311334259209924782520926839328430126771207291540913811458672057790851296137209580961656381197260280116997425084816913235082400103258435703378185387610408897233331489474593374812175128320742061399379733505919876126094860058539997775813466335664069593233308661263380967257478873688193144416243826007105025958712171002499038444887552582799146969326686455436933171938461547333539825398522182880924482825968236886175558462381636936981677087825076451907672575405104907920585600008883654466624929325384717143014584805775638936632320300106724748782795013860929766311345647183509147467907452185629542512476150763368359425036445910236443654503903 -> NaN Invalid_operation +pmod42 powmod 608322625398327409268309318580152450111326793723045539080659006865055527864845737232859024328928516614720551941702033984436065566071881291956629489463310910656794415879382448661288055074282943881755598791241989070821868502141162928149197344156683964564895621571986503252892296482015291859924455679249361968690671478395162694044578927315117460524519969728005494250969279729880440965260085267291142071769730395953083181823814281196961492274105342114242682430734382839228502 3876067586313532118009407965386967881299979166053378967911464502270115946255387414261656316500109120810612931598233878882336671313024354392137895761680030409809705312877463888868294269376051563591984005381071998939326337061061612330381000525810554080513961341742224 6119769764154439791860960486195208004915696754654876217579067345858993097935350898599832977929375177128520057525246516800364948563119095508262058735420165817426360775793364119046789605780337863223136131535705229976421586354614691925325273304602652074412001403187637054906682532657764902019360236625513880549278918921664983546730040937381112828072360075902290691197158006022842846057539214623743602514816707234856101715393385380846347942981361483856759141308572948597545351117112044734834994423679502671536747357692192362561942859296724682067234153967887341893161999691950300317146587847795612028468144873032964901136836299032234703606370049675242 -> NaN Invalid_operation +pmod43 powmod 313711354513184457362701183304035385951911306005162014604567816109734935948480724741292153994907239610588655227471194215777161208929625964686306878327976684787598705583662638315127676010696860383378464254978867078755669334787190725811555732552326915023423278055962400044533622919817600412777206890356267985446600865007888937868186386080488910184929694588823234391782832033745858995758023327892521708623849739568112457610614023144274861400296530520093868993595130458819392439539184882463120397176383380073240483359905797821373013948579152466856723360327270001034249830054711049987086429294327988597238576522185973754438538495639653176403724623591904242190588397302106990479240568754133507132804358867205583804015 55048363159913279088369927568350948397300461851019444109071737521550070374576228920177474628383515522109124226716336460294948253880742025050460241522547565618219595020916633873565905362892191690618315214184778183212163 96012761307316373379589339305041240391754059130691810913745336918037245810750660101915832455406477840199583328374303690637260395186577922596133425580981073224243587881995310840248838165249838466129021008115459568254414616074169627425824124780243380801820093382970377519023379325362198735597131464124253319787958380925955530612994840941412900819771271458175113823929959734933134129484410798330580405989314594076792820689271823540846152026920450329983646329976350480636847388659417216977965261221362980837521210540495116482995086616912768189135365283639415 -> NaN Invalid_operation +pmod44 powmod 921065345838303264929452749643543832456856794114532709148838179927023514781857100428894521692600737584021735162865582571955333538652911043133123930118574071794601050277216609677592482349103308736418273341503545597717172814442097735915760223178734215195315875623055 7304011585372601863444454460793543531070786384786736126829979466582439338740091654608804415538669783643344525964191180238685359853768246313655880094196383386488879450470291654559137171699249078071492057076309153266057013018216995333886282264121312367489444277413658469354080876792608351261650434915363231408235772250861434001040869357105493848831520909192247666709219871450291572760418558801536803286302849438066948138906680026524464357219638334826421395372211050640821284966627347247210498581030548941069211812474434184399039665775627284849437061294509930886924187182408250210198410692227826314341129899810385966 4973918347530635361868481808504135975216613757428013824875393123948549117484635638206131198728689067068614292576205523486510808582922255596108633062974196514511414942246896525233387372736126796271875036765172490146866608127079288549097058303608599412965474240649224561105860339436926500494276103403798313278840689916807193174592306401005233193716364966528851223872244061625659640579377404666099219139805908074956462509686524865585584218935 -> NaN Invalid_operation +pmod45 powmod 9205142283325298469481610915622131218579871874190341617842269159297592026917239173724304134556950459196502984917386168999371110928305802538528154509007738606507096089803086957577029041235965581157565911160449360836073336943113963774763771161313784862213949342672928187180601755319901698328288741953841334464517420395402002328638203101688180444498840131737541275458114041351058024258297273214631053621212704151712062332875589594917928667222403210397208103671904384226731309325997831519902019168603303623387294948670072191725051489149815111747005536974809150299603559640357901903758252472276018201403758161839426965709463047394417083567901600373953582720260964179205872918150195777567560214737441798550973800564615244141929924983351259058955919137848229251227691340517313311128188214978233168461897716482803402375516591422855788075866135542677666913474862076244587671774356247131208733701 71037331487450277785435942778179423705453386493018606980682619485126240365432702990563340556201252017803547050200903652160030685632338673800671713696736650460717071425968683590328226725866291668063891349242311611409817860218249986857924518988875284934708977663991949146981219007572613805632465517569969512884019965932455192271851063420711337482928758206630817277053425418433973509719058913246430690148286721501702500474184248939719284867487708772459400045201876285136361774766204550978988804359644593848987809704449498813374475243929700592348967980680840576028726822480196473224015573506185247757319932367956961828657554478693139429939981451132623912223526303008090349955631685088341774946092624916174384976889494912339476261553529917883780241749192732134944943840551972660091772407335432 3711503113284040852995793106004226298533410089905832198795281193622573032824627602555987798319709950661459295518180410016297454664897960282005550631569125319116025273233157306126294346562904479874588619866641301870502217048419257325892442880023553043912582601154934528990038010862693690505185603711883966495467797808985639852804980212049465131266417096086568430762529086128672236773417039323419105311734271661637563192908462200937042503623294874439911437562284885771544524059228744389374648121645067195651419336856377795577474095124956828536152013006587397918367787194527976886725930570296417437614003 -> NaN Invalid_operation +pmod46 powmod 91246954342230121013559484253733939110889873102856157484156531775043554679076987734722432253935122161779222050127496687934287903121106833806206533419408371488989122252109014983646035819785181043269882821251092062185329965669229268556742129023873977967851482847549672526767146714651957194633364397573262891070297958577913199220122782745585151480148727264244202013785158635599514666086591332156946406775737978426587312987523436973850219003881090030892838927795482906408066902833277039368631227687771163944895853449732578840863573043895862232616702767228082119715829178610493443694590285829221170161543938115809087843595224475527711171733670851998610205953072481465116083084843765054182020339468378714146457667939579470549866797753846826527141496378651064237167873214267570823912125631636530812 9870755311829446961892664447053713852857437499086076032818908833424573067258 4934953671739878700976966082732564357047570676111335058832893898187345213127798078501439942409671066637110622410036 -> 3041896725871904868932062000906572890139684433560017960766565087583283495006496108010302152796383252160431572756892 +pmod47 powmod 98493496830659307247162450105517819049961781066758924578688905656365931308496996881015163418029644617100819160239477805208955971870369575527281527313328345214468060143740537774859618946263995879840952443319864821744073890066879404705295104558015511484540537589837978832234808603550520267417025774511025575225293021639307673690157595114669139505965792977628791309381313067645155274470418842865812227029127897722619794154822395705643978077667635368335606684451328965374235054231658772895231570072996772004433544369783354568845104394146047429945117390121418178040165079415413595373532356353176750033715221871770376941830731696022108248607268416781886929531323324323751093576770235087646054241701108809038608394026508729465598673454112506467859228977178498241061267955015156169321119744371830709273140076824214894729369864434171133651928632288077034588066308645641919498808249041846411775040943831359873 43165483967129355801716694588913677364689522264433015593558089826332940319697109210457863537565798568160788835240066055931583132584949129218525629711696903313679220101534625497488358848893468661619451339821640523992900643281473188560915261056262315520808558654862658748696132467686344169901436038198562583511379267387706721014474891534391209003017072963903734552339905206364344488622042130359676029633683255752870690735533129317082817271196313636712005997495391901781596707061335275297547196525045820171015098165227100214497784478096023157378249796686334472973441709546488510233737037963465017366119055626551959955986466706720122586304319725586684 798526358607319811721531696301020046479808197371627989207842457170243381521047709671437692107209552553545257584739700442651465618175063482108916966603345376570797126153134423093822361161648423306377877855683409386402759658382242211070619387492823075219384166208457230378197419484373420268507976756259916796617885681242703994789570572019082390275150823714222706104115349934492021657798229294343575926042975590841596341940863925011847991388773213215258868849634663950818701249932246587217654515547798254877117791125589095873075904791135315966062819582868141025789221465469668229773173075023564127887243753165276010117243407136633305976006 -> NaN Invalid_operation +pmod48 powmod 27629299231938853299983659713027983371395653880899036780824188859328883613245959126271513011364840645403341796141399990419415133762183123662483141201962141579954537633834750641905748337997899499869743836291863705861881163198372465276127353474084371253728163981224850020138092783910870300559565573494126413619763891630392593605717911510830244574167197001129374534463823768651691727437794883956807304951757852391602446114846762511137944920011993136827268651168 612981412895713270310618801925392255197452328439261803358641731685074918219534674132570096553748371220198803858993370430335126213623076808575598091964528412738754525054525381674846324193294391376133468575180634124239388007280443965656140635801739022008010456526263417095442581182981813212352481702449410872946670298237587532911533699190648733327171810550148466493003539251067263375314697985497146427199356708580117138240092755936488547887447506342899025332465649688126384499635519693255254300320460816533731585507113973561456287 62712440128079901779312020717895670475481076926246312589396244169909508766986033107864476223817 -> 34659136644590571558281477326432210189924389133205574838156810457381463095353950727591434310206 +pmod49 powmod 5153461409774424484038903024898567203332552213263718790205992386833462225533259402365486082318840674718333715628279669036380408840625131269060808198112134913435348328422154022141829051401348958354135918785872974218316125736250 828351307857901438021202898308523998988343575447692127883546134 2082972929575643272490649733414269890025576171027744298576687608895741646972108385327059452887210613362258793537040224718991166549335806958080475336380075795848858845842400730727114208045846631187595397129206164433634679194052291749096142006626453483335621084877940367541634869035967728901784106410244757672738568584481769595226214591073676638531493134942308787209520788781512501514865036104958864269635905008912453446617872651690801892800176956012210984780654105008792888960449292828811428589546934173344507993826789599588184759905704595 -> NaN Invalid_operation +pmod50 powmod 2867936035449362922821831059734139644479079592595563927290482572854858612703650479409740689740916384304460097327087569063454260070329033698692576577729530151696063986336267043934494968123032577477091068039568191732618755872088914703728900514982761888448291995165110417303269751629854364528744038554918708456355013413214360820903236939508412433974403095695945105660865129056788610776331224227766301263681485963317965094208802568511696279505608952956739001112265397530935680542892986115864504543449646497550115951710929179871219016146 2903289262560712965765482013900350912059195023688038653369308682910970929708781795411386236823260515954038500954832690292734983551166356576885075962113229350508092132125278847622176981950592637216918014542366765870941100446346689123178832286623060986855440602568522352154 740358069900246131039520111849742708634668261795259784609300013954139276069246043437553182822572015231182133589651747060759250257433142810584370146491850393328132463221477210968955040858468654425477813452028893739230748293652394377607663532146495378186036668470799846481761267906241498332806468513013541654118157739435016872309832603633465245937242650849496779688371747209445201563403568549052805395232206103397851967731758776984824140467345397051969579066293715902558171447466589074642304832222095855086184771957638213992555427297935360190857525135527874354974115649776058732238620219465519944568301733241713 -> NaN Invalid_operation Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/powmod_eq.decTest ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/powmod_eq.decTest Thu Jan 21 18:27:06 2010 @@ -0,0 +1,809 @@ +-- +-- Tests powmod with various equal operands pointing to the same decimal. +-- The tests are random. +-- + +rounding: half_even +minExponent: -999999999 +maxExponent: 999999999 + +precision: 241 +powmod_eq_eq_op0 powmod_eq_eq_op 5172935023082998 61096828599662907 -> 39312309313006360 +precision: 154 +powmod_eq_eq_op1 powmod_eq_eq_op 501984777 951714845 -> 361293017 +precision: 53 +powmod_eq_eq_op2 powmod_eq_eq_op 271669153387921210695131 564448204364277556933406 -> 194556909709302006741699 +precision: 266 +powmod_eq_eq_op3 powmod_eq_eq_op 125570163732750979506196913634908157763680060070028138318136160629359903583222884859969243606812631846112895085 5302310441381544496234552293792392228787419559606670121933841470309357644912541166615131389859914279506370522179 -> 628292781533908627694187727159784425202947884766362072335229973716817213686526481261728139988259156450599099837 +precision: 129 +powmod_eq_eq_op4 powmod_eq_eq_op 47036616172871 85005675655874 -> 66046361984007 +precision: 73 +powmod_eq_eq_op5 powmod_eq_eq_op 4776085680133941029936948910584204085680216386810585781783526979 9741053266371096023936650307490469662495835342745104577091660824 -> 9415703783045546622171306850171479466274411644790858469405124515 +precision: 295 +powmod_eq_eq_op6 powmod_eq_eq_op 13819746412323309350236155479595263315973615389342720732540698524248 51351630466616071990887673876643134102024941116759812967722789218150 -> 47861506892192414730571833341929708550635930907243981835070516055806 +precision: 240 +powmod_eq_eq_op7 powmod_eq_eq_op 14333317165327377167235670825865110 88166553266987327632036106657468776 -> 78199835566700283247168431807549872 +precision: 52 +powmod_eq_eq_op8 powmod_eq_eq_op 134815566702425039320342185859 839594667211651861207661188868 -> 364862005341716446264386585643 +precision: 116 +powmod_eq_eq_op9 powmod_eq_eq_op 17127995580136540648259029 32330790817527218674467184 -> 12521052078661402276067733 +precision: 7 +powmod_eq_eq_op10 powmod_eq_eq_op 5173 382 -> 27 +precision: 51 +powmod_eq_eq_op11 powmod_eq_eq_op 402495683873928938926688636115398471674 120982787213366353694910590580364274967 -> 52475342874842154133166692800200723902 +precision: 202 +powmod_eq_eq_op12 powmod_eq_eq_op 14297093558671741138358890540300728156504074970879091860787377084602330956550740171419458528108451193042163362873038106409148349645678380 51725657265870811468204903878129990010028733670032423825987171905416234952980539319044077321313400850940136725715641173997179540266295848 -> 41324742381296152165317438020516242001291611209256244964702203691060561082636794751023913969826023563822588553015097540418479200413260904 +precision: 250 +powmod_eq_eq_op13 powmod_eq_eq_op 28443162463619751272622643094983783232449228781384931558715230433167680833954798030217624623377286673797501259609832733600396491712390092247429812138685240341331395557425817976524756559262211505372611 4497386149908152794128443341381768075212626890202147786512578120647170501736837241451168049218929907158566337715181776232488401979248142836566601912048185374885663266301613826962064066774973880031914 -> 3330500324468162848227207938094530196796348779709578100921536689939476014271416209314446334739668301142478956169199961407123500266930006412625526115970530032117152427300447624658575836364089370034039 +precision: 248 +powmod_eq_eq_op14 powmod_eq_eq_op 810830734658656756171056884045915838766227153729441990473076656842269702420791867405801478324946754699720499197586176879945870444094782502199088667916953343304116436993295443 4495067384167847891350104045136991474753381348763493383357090378696989928712940944747770133241480281177575284231008354273722077771759216400620737875408793201528548660896802592 -> 2006624835474717281230446644838346888101356033193159767327655074138957197859442530918407105344090498797810843670443371107798940126439078360653382044426027641897048898305137003 +precision: 76 +powmod_eq_eq_op15 powmod_eq_eq_op 418290672461652744373273586929007439413815592 762349002185909293517801287498291824619352795 -> 41279737275583866780934215663365377037034301 +precision: 290 +powmod_eq_eq_op16 powmod_eq_eq_op 1018821278928480725671549098125586035263767275070279344320546142021461062721839390161262345483529302710783270723538706915557649235276361217220775392950622988 1735068356493848214788332162688889497560324747779926390596891825597094374823630064974406902254949685813008289020291495546198236072248530358644973809654139977 -> 28209411663982141772688613786924636001443542990924600997814940774428165816468803877965434418688093482504747324376204007860621873327834842820504629532124093 +precision: 197 +powmod_eq_eq_op17 powmod_eq_eq_op 3221631619795919696159930167662582257626977625883224057421865817909988871246124950391323467093914195853757972 8397548492629554313177861784838626999810136762868288479858376010262369196245105600392724747088645707260096395 -> 5368836365627105899228008829581871403859973713864149398235080461474740052149096151463796844056810110669992646 +precision: 113 +powmod_eq_eq_op18 powmod_eq_eq_op 254457604886965280369952209830476737910158235096628882372385454925485687793830694624785645557981934869 995651928591813589834423594180271488048443357304981415136531149422641408206827895472413874604922769186 -> 185005388125205397963493959020295915075950702290850289969301623721186766420854597746061589598872512847 +precision: 59 +powmod_eq_eq_op19 powmod_eq_eq_op 341007 72655 -> 17958 +precision: 280 +powmod_eq_eq_op20 powmod_eq_eq_op 4968424823563201280433923825956773472973249777948953528610453925526634611948158683274259617129071520562285184046814161529231250075852528059424760381 3479517089774349916543380724116746647770964201315611189653857991086915054652208838701207819070286826620301826596008061726937847328138460969040685527 -> 2937184958473337102803029900042530377672088620031310557444825933066189252245670849989399737703961931610586039952190255719473758040734897229725606754 +precision: 91 +powmod_eq_eq_op21 powmod_eq_eq_op 3745459908737775507461051336956783240132293055068167245929221953178842525913697985 1128945023259023594113407801845816314980467410114534482258707879827933775751465953 -> 342586315854243250818146494112094631278125165237120938041889745286853019358936601 +precision: 122 +powmod_eq_eq_op22 powmod_eq_eq_op 4528121393309827 72312371569700339 -> 67421692262896942 +precision: 214 +powmod_eq_eq_op23 powmod_eq_eq_op 95625294589724952005164816892956968227423678044896687989190887468197037299042854267528556476592047903362087 96110136615908305609660914744109274403729566805989924262387711097713782059852898707086082080129209090465561 -> 57276927376573372145852546623227822170954570202336383475124026801320203223041840688936637832554453622250472 +precision: 278 +powmod_eq_eq_op24 powmod_eq_eq_op 826517061920372278733704139130328710026813 739939213372211186249465454505841180796843 -> 200033016065917423047551245568978899015283 +precision: 214 +powmod_eq_eq_op25 powmod_eq_eq_op 5161801649876371565120060252841450895390040104175169776804783583926197043883045978384748862150565996456095502355002546 8433705692337272085521574521440578547147930361920444948702346674968822282100442960148169397165519723989985171650050511 -> 5911757891375032570416258564283491399119335805406834068234286822042233780716442794122461860602338803513342117086451112 +precision: 31 +powmod_eq_eq_op26 powmod_eq_eq_op 50126374660413365 80321837116006294 -> 28630584898326861 +precision: 57 +powmod_eq_eq_op27 powmod_eq_eq_op 88417764917971451286141 79092481323278797808598 -> 41671468161709260836229 +precision: 262 +powmod_eq_eq_op28 powmod_eq_eq_op 1646202103135387795211255235940802635051059855319037270638113988175535331459647324559481724077220178616414407620948953452095293854335834833926837066075599554500997683818620166723765229333195273712082034846735903289 86108249041722997979260590104468031636183997906207470270901317359100343676723251049620067416850072738372402703577251737833410023368017881039448991697273135941480274776006731559326528595702587078513340402312856245619 -> 56237390716964973220780954657917228545337167422858043400409407718883958754067971734571152834182314167248959770901257231518330172100546326905475404626942879559083843640896470384657943893743311051622415566048888136288 +precision: 30 +powmod_eq_eq_op29 powmod_eq_eq_op 192298844873581174764329 157369010254881198584891 -> 25212275689058256352209 +precision: 60 +powmod_eq_eq_op30 powmod_eq_eq_op 5660155183151 1000132194974 -> 684926560259 +precision: 65 +powmod_eq_eq_op31 powmod_eq_eq_op 66679391630625467154849591704462862907297706760234967 2087304084812584716005117740693601122761404201088122 -> 159902255001458822489720141848255260635591589504551 +precision: 162 +powmod_eq_eq_op32 powmod_eq_eq_op 56665223442110703836836756320765611389142484150122744901074363922473276708 66023323966811002378498392408421729039645472406853615082035096221356421755 -> 49333165682729890538729261972420205009309492235099061135444426995849254641 +precision: 274 +powmod_eq_eq_op33 powmod_eq_eq_op 54113455976417484817 10588844898325308818 -> 64243117474682925 +precision: 257 +powmod_eq_eq_op34 powmod_eq_eq_op 31122530638285051992763676252159771338607182481986609380262609355860351593233756335745289559441075536971338212712790401068977406921976003 80831015172271187959973043302981017739831683922649795653041130478610324685046690943451760522650289748291205884713259755118243217965769943 -> 56355675701421281233699046401686205136095268965356873114021889316693608812816751203385468182549990202389644130545158958957193006273477475 +precision: 249 +powmod_eq_eq_op35 powmod_eq_eq_op 41519502648471999008435438289450277955833281447740010513855380655122976943531502184288753364407940280708985887090699824220212744239862514813156959204391 56741441371023655578075031546115930549914619533967209258957108588487519615815020865765582830477757089897256063992152583541572964558611781003950568738976 -> 16691904825309833231233183425809917602317076242955829705075523936542532334261196298343155018077038495001915346069517219771234060905220408831767591832407 +precision: 77 +powmod_eq_eq_op36 powmod_eq_eq_op 23240873455 48076031642 -> 45799707263 +precision: 204 +powmod_eq_eq_op37 powmod_eq_eq_op 25347338382406864899910341331454802704511357893653095 41095912473864972849201303861820955504721147210872975 -> 16311242684078999904265209400412018934550797878380825 +precision: 134 +powmod_eq_eq_op38 powmod_eq_eq_op 2154531991924133869 3489662952292613190 -> 1941923126081812669 +precision: 298 +powmod_eq_eq_op39 powmod_eq_eq_op 97772037147529961800189904063355477357545318863 57054975216879801345395832598748393055921726399 -> 36731960212790812549204291539716371986205598638 +precision: 97 +powmod_eq_eq_op40 powmod_eq_eq_op 1704289421740155951441539 7061122124375084603957238 -> 1283501288331770737152197 +precision: 29 +powmod_eq_eq_op41 powmod_eq_eq_op 4556 6907 -> 1206 +precision: 189 +powmod_eq_eq_op42 powmod_eq_eq_op 5957485849358396175783569491645181930446575355536716690382 9337706464276561717415237976316132887025302731815629888166 -> 5069684771686355238793373610722337260329941650914369657852 +precision: 47 +powmod_eq_eq_op43 powmod_eq_eq_op 9308979333247182295110957676 8381074312225074815054810827 -> 8250608124076345552454845187 +precision: 106 +powmod_eq_eq_op44 powmod_eq_eq_op 7675180393901996742220166790348222 9258647683233094615076264417622761 -> 4937985161314064397812966071253297 +precision: 173 +powmod_eq_eq_op45 powmod_eq_eq_op 34877948468686011254890544480601609601426397756797925684971137481868793327401457257290825372818005860576493742551661980425693492636136164336394404814801472414 10757697990297639329960299714863726161475785528627319462064639391856724592008380272241758911244404594373668239721001738800939135960367757506462417800298670437 -> 5028313154303088117132831141039409790743593609396126845260486268905598406063157040209323624353003852401366692167366092532343926668326152094217326349956645585 +precision: 184 +powmod_eq_eq_op46 powmod_eq_eq_op 2409449891510055211921250028 267817205798717508635075607 -> 155839719472235839602045864 +precision: 144 +powmod_eq_eq_op47 powmod_eq_eq_op 648747797085698863101932645824292542458793881766992756418425841084354 729688883842616245668316684316922248334461550836495632854673878224933 -> 523091760797877942376040582583748022234823635688617764409287676343503 +precision: 289 +powmod_eq_eq_op48 powmod_eq_eq_op 6435447423590980658466471745985557154 6777916990460432881715661459547121524 -> 4435132777705661339676825231837494652 +precision: 30 +powmod_eq_eq_op49 powmod_eq_eq_op 201 10 -> 1 +precision: 140 +powmod_eq_eq_op50 powmod_eq_eq_op 46786241534989296894871734178780457058479459887967504717734 86923885138946976761194603254401585510810922803574739596459 -> 18749450420999476773075088674524197685741006672830904432914 +precision: 285 +powmod_eq_eq_op51 powmod_eq_eq_op 623683199772036161509209077062482357651213292978145085393123688111808096056529879978057497027942110087614480870373886768610806957965588525803505577934697090733093 65386134751657837907221235760033473315141875728339186013793616797915439054454360455844907855949966262122953427482770923730063775782699639188898236436091579530852 -> 49421940651577736003247947732636658884410421339797991559106300099336919625443742088165470818597908374821024285803400139468781690884071069711169044981773813896865 +precision: 123 +powmod_eq_eq_op52 powmod_eq_eq_op 329603055571482309398412282978181135217475 364249066527529880874567210907080580681039 -> 130578049455192069719415104309421385131521 +precision: 112 +powmod_eq_eq_op53 powmod_eq_eq_op 99119252714638699475279298794493419948525034673010880273301574692243 14494273310222458662600361200264534928685784426108714167300599047464 -> 1342489337351685962225988998398007809819608473636393900679213054539 +precision: 233 +powmod_eq_eq_op54 powmod_eq_eq_op 823668128603768279592424490986750634677744831501824197687947006638552261022478077609304910392073421420109541828148589917307470348481217490244412165509373357182320898118498 425976545939598243341904894836292810548313478791737276295678339371700744124334777233292293316625693039847768233418239909019530920361332744411091804720260349314268770615957 -> 246628054640323084425459010156685663280987596548686296797366558872183340667720324671831129748895739618261123243063799955355271498230582084935064685651361084448166392274843 +precision: 108 +powmod_eq_eq_op55 powmod_eq_eq_op 1616545135056193400580173345451465382280362903492402 424057628134502942374985868458643882003266712281039 -> 199815655689941668408085456173458041956531236869907 +precision: 238 +powmod_eq_eq_op56 powmod_eq_eq_op 1103841400983056659612313224377809554684160880705819058826499397993918514020377860642349306493062460276564280888184271530013838045280714655610364020334247111204708908905331603280341281315278 2282888582602622913019715490553716885883307962641010601535518478781311728855387664777780664138360695950950228955636099798954044650162999979139474171103658627713113553279241204643382704953618 -> 1994657408897464847482361881928564279695856849037278852527838902965546656237021891171416450207509998638936193783891226967975717845063723835242409377511158755687229284737014290692901626128702 +precision: 257 +powmod_eq_eq_op57 powmod_eq_eq_op 87891910309992862168600459534197812141983833119660524259537912292920417186283373655102887364568369396760734405389873308793771651470326633058093362906230903760782189386950890418555443003639439579359225908101985338430726538349304008007134513 8315181317307390545901798798804411201893462248797703253371857633180256592693726680124603538771867954336001582268947780355655877062405806557328812742052215435658281144499002671327400892606792853706538024304144418634949129352934872507977118 -> 4865311625013474814068725663496222485296549867388397165220024732401995334902218545049053825222356402038472435817222155439764777004635398040191431466147438686680295597934586497821657241311896856427432741010088613998438934266086934462775357 +precision: 242 +powmod_eq_eq_op58 powmod_eq_eq_op 38713335681587299234091989572838695473168274318167240376557289223587767255241489050343993662684556903844623532321078882386525938527460925424225100258335977 49260249827158677700763062424469420627257715726705662268111090331504887930085890279352820288023344059781591565670478177885631743017067303946380437463057926 -> 35657860457298330282090263750960205688525447185553308589130125530751165809263418848769565568909215265359660071296585044693934396242792967984740639999280727 +precision: 140 +powmod_eq_eq_op59 powmod_eq_eq_op 2469258444812 1835264614134 -> 1593678386752 +precision: 234 +powmod_eq_eq_op60 powmod_eq_eq_op 647756245929559647864643633387510034637062722841988736462643670478664715716199421321008149313988671009264 460320916569529181003806077667096536359922433313671966407422593222375151297810107124656708695376115780072 -> 331318128631071348116796873250314429549249983569355972445682962570614564415340745604885976814040536381240 +precision: 32 +powmod_eq_eq_op61 powmod_eq_eq_op 16537581424046409916784 887473750282811923521 -> 424271334841693635106 +precision: 45 +powmod_eq_eq_op62 powmod_eq_eq_op 828837621506928643126612718722122 265525824378512164082395806195523 -> 146722183173269007331132329864917 +precision: 207 +powmod_eq_eq_op63 powmod_eq_eq_op 297032604776111543552079471210926338282302194441985476133024517299746666232435837936735433349967183385428093 637350536463424159801970820720044571140260642656330047203612432949614859652491413766260583688242450701607866 -> 582370770270476236382616651565280741398329607001350983502418160121596199403915792668368978916128310972203763 +precision: 277 +powmod_eq_eq_op64 powmod_eq_eq_op 7703518156934002077677482788042232227599337517497536481811504583913999156206391704921105790477691810273175294363474881537854107959948193 52290709057247753966315190250206621246503481458112306779347934277336807304443444070599368499660216091768479535479614034807394845182107573 -> 39331266789390165750880926297649790899007024860124152061517869573635671096184730344256076080210325590930833080839809299923718264561224410 +precision: 300 +powmod_eq_eq_op65 powmod_eq_eq_op 95845197957566523365123601489653895349067056102237530450716419412894278720625667766815520021606601618974379 86165328528279950568187190763088535998472609735228386086474176686472580801251450968694292588990919381653397 -> 2277395508822759111179599071881859751824615086397281126256489038412364590766937239426287716521496255687737 +precision: 269 +powmod_eq_eq_op66 powmod_eq_eq_op 692487413836692641956020639399278627415266455111634984139565461854940679695673650332726335929794347297058631241 1071717217234262079446386289330955129469825343392590125789219830425914817390904491892497936739716135254246157 -> 818282219036130893410460017266278759736000218171444757459471232383987224741561711734427078059410709885941775 +precision: 169 +powmod_eq_eq_op67 powmod_eq_eq_op 18550257886350598686173 12432992958125726892121 -> 6640953299887674588794 +precision: 159 +powmod_eq_eq_op68 powmod_eq_eq_op 12917074611084689934019230920104074720968828909166930071568379780632700747830526512037403576386649704850875584991516742124759771763441431 82980090793422157777399205996432707258492725040863164780478604930217683268087742291152264393724600988696813676558191166016590508666526842 -> 57728908499900479441874052131858914633166072593272616187212177959984125573893541600215546880228463371651398390383431747187100691749440069 +precision: 176 +powmod_eq_eq_op69 powmod_eq_eq_op 457402360524787341526198109427135149462072894546702454665018059409924706710473039375264646309 269301314607505297216710924801410732231483849467505866482760892431853703679732252132596731810 -> 212646507437526160121706518300022298513917743959363014060372387557518882739144127879282212189 +precision: 46 +powmod_eq_eq_op70 powmod_eq_eq_op 31647335191415171903522429626 38079715987638371303604638124 -> 24026240419899954372366958132 +precision: 298 +powmod_eq_eq_op71 powmod_eq_eq_op 33028854769038419122912290232593467650959605590633970223495529023591787633913068113709349431643233621102571210911881685574553183260968221212909481636780052885281481488004415535569573965139219667643859879075442471374727343014711377252762208751977454153562076613442787042 36650988037094367309126103958895650360719594503238212341708447171490188003844866600822235041087163367602081110065241454867911292035908137829155958484639531455149154713427547159905652647490076434547164795551895125467576637212121027320100520754036204001196620957569160464 -> 10267145911304989049096079652969554953742230727665084086004031631103450311635114086012599593816789977933177490081057030781045632378745341111204906907380055709828297371525371945651576889444172839550819757788311976057929020174949169053559871488007352324905807047121872496 +precision: 133 +powmod_eq_eq_op72 powmod_eq_eq_op 11888682572739653088474696914209508 80323025551712214314633791534027385 -> 13409781680222206959229134168188201 +precision: 114 +powmod_eq_eq_op73 powmod_eq_eq_op 3743390658041850566467251670676493453953108551184993814012800866847987851479656669159248149705495736839439722335 46459728732562587688315797279991916784299489041482693576599972176699699082319859297066023989410290999052238920594 -> 8115234450013152525367925517716584647610381049135613566674294036697348790968387461118458507308350334375372256461 +precision: 113 +powmod_eq_eq_op74 powmod_eq_eq_op 8259918287483 34489312843562 -> 27802057592443 +precision: 50 +powmod_eq_eq_op75 powmod_eq_eq_op 47323 59543 -> 10627 +precision: 138 +powmod_eq_eq_op76 powmod_eq_eq_op 9013021186011735062511462846916868467225053383150438479640670823533416112406852577229420417874563836159267595232417774275342476463485710 2815298448957899314111205310824958667540303448793626025872739809270279935081205960090609871622593999786868646600393888802540424086661231 -> 1343995586474512178712022707810133827754974303081871668138624878425634600885408315234466007070274933045513018295467778002033364913156084 +precision: 78 +powmod_eq_eq_op77 powmod_eq_eq_op 4861877044919688585 9169049287857910089 -> 8602525626550717872 +precision: 238 +powmod_eq_eq_op78 powmod_eq_eq_op 237824239434587517931592157289304845158905448042077529450573923583338089110956308622248142579 259923629223470071714391212510062040383538941333784739915427292466594117946179894959873546112 -> 145186836549698468008009506081167979669830197534099565355931300491950415678166976205457727403 +precision: 144 +powmod_eq_eq_op79 powmod_eq_eq_op 754542412618228655135740510438243763486251017074816147742774381673658933923075218248482520974254 852493075245354773223331011205807201961414744647546005135118819269030651242689906377967935842498 -> 701536550963930737106745478802356508708597075923730774334398168918179612777224239372018407023940 +precision: 142 +powmod_eq_eq_op80 powmod_eq_eq_op 2370 4638 -> 1764 +precision: 68 +powmod_eq_eq_op81 powmod_eq_eq_op 6462386129005014467746346569777763088898480669700 589686962901527119153043877241453448048702735568 -> 455922351068060419376223448128875753384357296816 +precision: 183 +powmod_eq_eq_op82 powmod_eq_eq_op 2907640746427695372239 9685201806605942291751 -> 309491355754808466776 +precision: 117 +powmod_eq_eq_op83 powmod_eq_eq_op 1413246599124363729242048321670413198984721536249176333768190212875731043658507872301088456396013553759365619916 9204858898651341716035037700544886986767770120454382182498395780670082881094317153217668422510392331645314872259 -> 3021589118065363174094944144667870931374812363291926700668472396779769179890472619415229474163415264341829012022 +precision: 162 +powmod_eq_eq_op84 powmod_eq_eq_op 962096 497152 -> 36352 +precision: 53 +powmod_eq_eq_op85 powmod_eq_eq_op 8621315891825651937 1844530162541798948 -> 16352204897507957 +precision: 270 +powmod_eq_eq_op86 powmod_eq_eq_op 997306526453108795145523014183760632054410542534445913247551818195659122353120343883404687026111815089159920959036788205388492369618278080688111074355451048407367275742403679242171828517597017940749261936714698134015073327061506058036081901858 271175085739358046862682744720125689132712761925039734582626888258801423274795728051532826170141392482788754387075889297811413044211811063928339533082031023160213585881534725478967752653164307898732324986173441538516874357955322394129549009369 -> 233233357976006138602180513682490525614036583955108971197804872030375201656250535627687878244409543537199142995570116637399388789561952253806030439856981814103088518362939524174948519900716763165509420280786150287266589207654964098916666621718 +precision: 121 +powmod_eq_eq_op87 powmod_eq_eq_op 37333138759185741205221697566445958226769102174504004832380093122437333626676663758593998373 21688617631666851456220221716963031664131724619712612116297113636080314119629999609395845737 -> 12422400097600487214902114529000410699299956010601164320388617423082676222219311026441326578 +precision: 207 +powmod_eq_eq_op88 powmod_eq_eq_op 7521832699737438122292821539 6018570687095479379561407365 -> 1212737099157236425773941734 +precision: 140 +powmod_eq_eq_op89 powmod_eq_eq_op 53825162965362546372117835803989917543044865120062 36277498515640311208931301157993900461744393376908 -> 2432802980029435532934708954708835591068500862708 +precision: 118 +powmod_eq_eq_op90 powmod_eq_eq_op 414153906412255909456027 532543604278550241119525 -> 161618104901499265417728 +precision: 251 +powmod_eq_eq_op91 powmod_eq_eq_op 1684625447542806401588398381817399971614750655005356718594540049233787037565459144065793230195991061946561031687494620029713301262448210290632211026871015136455980698106450319354101237738501926755630730622007835744768 9540085826298246299703494806320412510541356677798662658210815190538543646143283615764707791124203340560039771101065079365882815069804533753140970528771111347882859653185529944306383661638019879949408554314505061339170 -> 363117767510328063122488215112617796237439136963827798774721458657184256242100382167512467627553206028069768954756628898501495529150587003023386525594114792993719647863543276110397583989342143601621778594162747973886 +precision: 85 +powmod_eq_eq_op92 powmod_eq_eq_op 902084498706569559643360048180506 375711110089324454039408082788128 -> 179091895238477213560047439883296 +precision: 269 +powmod_eq_eq_op93 powmod_eq_eq_op 6588014609164490687364333605404534400580812308260578238716086686582280808185354938814750309959567157897362831972313475948732248018068944412939776599167227068461004821877699548624584487685596421198743003896038999127022665203545130378 9642913296312738398163416773357473892332879414915289360191444769600564852319409163304350977957088883371523853222393183893010532864707408493103133844057009326092166927788798242708447277416795117768079515986770730729956243531960070985 -> 8625558243056712988357160380159388560542900643395785801581870371016661293309221597892960616064240349433848630838835356903758816836930206942086624328770420932920148195555272117694324486131710449181793929266607516512742666976210916699 +precision: 156 +powmod_eq_eq_op94 powmod_eq_eq_op 492585711579051107443702450640618719184 513477731495511893259927652918968921433 -> 69373622116698173140281536379424753572 +precision: 3 +powmod_eq_eq_op95 powmod_eq_eq_op 508 76 -> 36 +precision: 107 +powmod_eq_eq_op96 powmod_eq_eq_op 8588246077036068833916568203452909834576937590530525548918134091263627736032320139287486677 3499754745074856872591086384252279349077450622732979148790130594599192177562230921084987383 -> 3271974756637028597794387205701447925933749027700690312264571371736893341134050430717971988 +precision: 211 +powmod_eq_eq_op97 powmod_eq_eq_op 99681792487559709544549521738353 21030878948283909791083347160968 -> 16673441536487262411843582809633 +precision: 292 +powmod_eq_eq_op98 powmod_eq_eq_op 594977408400189357404611 823931472868828141946034 -> 206902768829270452051 +precision: 159 +powmod_eq_eq_op99 powmod_eq_eq_op 35202515764358039893236108091936601002524965327163451022727572601828117846366465653302056406022924004986856487463106878215583839232769071131377573 88812085626335954273075267107189606684638161173461021119291655551531724585182395964208851508220592376518336583302419259597576943594648497149621022 -> 75898559678716936913803286946608414948714487435801300702732301714428573078542032982884904950592511948588374776008327622725047218526055088130878597 +precision: 179 +powmod_eq_op_eq0 powmod_eq_op_eq 454692015999311490031346820992663522050665018780092925441910454104281621085484384194820584758877865344243748164477336922579712916732749817472762268072 735285825759135008310256671043146088707882097268831897677310356114715740286031615225885323703168321225676162554581642915077073514383406803099527421288 -> 0 +precision: 93 +powmod_eq_op_eq1 powmod_eq_op_eq 5079849198579702534701141272944073543778821786 532286998588281764458535139617038797784921059 -> 0 +precision: 235 +powmod_eq_op_eq2 powmod_eq_op_eq 42785751141806928804100573986442378070504256 8012335613800459034233589764673029374370324 -> 0 +precision: 230 +powmod_eq_op_eq3 powmod_eq_op_eq 943131305589990078382186007210901970402961966625505161220936352480085781185105775887427870598977232327078108302432435579523960126405062216719206417613753894892573314464387082523000571640428047 613801474254045276995497192174004949128755410229404943649813876920790595872167994806162581456259548860111212616000730294380438234593068995931924484285636601843750702169075489378914820936764472 -> 0 +precision: 35 +powmod_eq_op_eq4 powmod_eq_op_eq 348484 391889 -> 0 +precision: 57 +powmod_eq_op_eq5 powmod_eq_op_eq 173366323147102461493419983857927 712602861257089035426597543953824 -> 0 +precision: 51 +powmod_eq_op_eq6 powmod_eq_op_eq 8255168446070301285294021862688649759902 775314167247504368851676608872644124996737 -> 0 +precision: 219 +powmod_eq_op_eq7 powmod_eq_op_eq 1286296801049764166878121193316876237754392268360404773180576813467982311828134582046605119180403649756263871764827999140649150951327666440054528803220932 9837658849967653674115449502606502425670446084290643541492310292247870363937944568687288057579690528057798503496526093957567546376527070694614587350745169 -> 0 +precision: 43 +powmod_eq_op_eq8 powmod_eq_op_eq 301233085608529970719264192816849720546166 145582231299722791234238644279110987431668 -> 0 +precision: 264 +powmod_eq_op_eq9 powmod_eq_op_eq 62767016270507003850715851415091452806159767013742091745805994631443857273956703806135426309466868919838148911925180988907731808142577209755415012071276524578901326709311844023158202115264851432009 21301060796766641834690999334552177838062181703848471338832314208627720118691945764399064573646905012904825989998437452735326376601421170102887168895304253616643797352575812116730051436538338863591 -> 0 +precision: 265 +powmod_eq_op_eq10 powmod_eq_op_eq 440818421090143689463261262530857447527662320352860984268076914216845950386010966880053318417389180709545 838214809366714360754908648441390858241099089165296030847187806931834430228223849939682629454399235271000 -> 0 +precision: 274 +powmod_eq_op_eq11 powmod_eq_op_eq 57330960617884468834106662737720466720788075677748241184734175047172880136132616752897038282320557165678658129804966123281740878946695746413478373524897657 67657603005677148201275222374257219777938611454274462807761261891275661842780652995426004529254323141494002433673538879175575980945096387917653623877100981 -> 0 +precision: 92 +powmod_eq_op_eq12 powmod_eq_op_eq 4501799335380569654187980533499809633281 1052496705272902454723902601196362083737 -> 0 +precision: 68 +powmod_eq_op_eq13 powmod_eq_op_eq 116156589911384965111291858261099258008311306696191 773080281684572446555214526289622487169052848815220 -> 0 +precision: 275 +powmod_eq_op_eq14 powmod_eq_op_eq 95344467386408089384279185867230021162035463133336013228127754185702464206364440351767284062370095076802016074747419751107350 61165068633128067513004072503914968829997327117660735629843509735452982191407440826784570632736372603050707815032847079227219 -> 0 +precision: 76 +powmod_eq_op_eq15 powmod_eq_op_eq 72382628077595566281103560203882359152001339769861063 827211685331552357422531110135423284180007286693984579 -> 0 +precision: 299 +powmod_eq_op_eq16 powmod_eq_op_eq 99510090385284865309953240998446056100585404455670356457646945353270179711958276767123863976553623206992259033833813918377871593357151355968585678613489286404389834577376575593642189205581924388015699228930174568788651000634680475461028358950009870775135871039464340306702 7433697890344372580724271147197321890921494973270973993892699308117726874846274098813744661240211876666085801491141244809610256372367140498402804287278514599047754618167808456419004445087782817821496830029422125301734931385600582803094941067207395549019678491990800086202 -> 0 +precision: 248 +powmod_eq_op_eq17 powmod_eq_op_eq 750554576578161871001376609302183413842951251145658953354293566920828589184755129484640583652343313269143485478690374549067213312102895379441840304396290590424505435042 633941801679402986812887587354786522888895623270979579831397961204268664716224846321809352069978992400972973548829829797909623496497559013511400668640829352613149284057 -> 0 +precision: 265 +powmod_eq_op_eq18 powmod_eq_op_eq 3463069004877440654125359844167057341801054390719549468276560963695928961383408566137938698714419287531372904294485426846668346458563881544144530302296457470045301193446414902851620915384710595941963537023462260398944817065114947007095038635683178287155249254847494 6789944517225666666879387919866700030587815278376466852206286295644310788300887849625819370407579492488915489575171657442454139244103254309493753920854401742915880125544459418423645752337504045675093734196654927097111236502516168741520177762050457192296509917398060 -> 0 +precision: 114 +powmod_eq_op_eq19 powmod_eq_op_eq 314688367409521410736418816312365465462295100290460384142152126530156661060749658154534483466700030690 998996196467095931692030350412105638318874057518084458133171481273195943603254834103434024797443217300 -> 0 +precision: 107 +powmod_eq_op_eq20 powmod_eq_op_eq 219857266132313070944405225818431192046791 19202087862857049321837432462701708010924 -> 0 +precision: 76 +powmod_eq_op_eq21 powmod_eq_op_eq 1424291742203986945745657 1470933704317704340957761 -> 0 +precision: 251 +powmod_eq_op_eq22 powmod_eq_op_eq 91734641279132843620189674487904411065518027483704958394772446803843153325723374120822287124212491342121364352988815229205781515363333895794413600755964685103664694902833123507625728679599110870 521097858288118358897902094347545707707006976711534107256875319148406720588104580774952008593820554837418759175204984437871486118045017012837815177299211459534126106747264489741757097287179630795 -> 0 +precision: 173 +powmod_eq_op_eq23 powmod_eq_op_eq 62709911127992434530962066171086219418431764069367589347925451019255 73290348156189320789779548435076766294543682835044764344953121994751 -> 0 +precision: 237 +powmod_eq_op_eq24 powmod_eq_op_eq 94217054104904208885079764666407444359225661312471477633690432510108 51781139138943570794159638501670444618101238426124199593862964676655 -> 0 +precision: 238 +powmod_eq_op_eq25 powmod_eq_op_eq 205736005093937571379059518471656568660399696219124399298958413944440740727126349829198207485237702304570900895717992237 572446302325100487087129495162911776882101941341173725216010889547353104978710578592841023723013637573456630956312589141 -> 0 +precision: 237 +powmod_eq_op_eq26 powmod_eq_op_eq 663844064152544210824930 99910891880937567352214 -> 0 +precision: 101 +powmod_eq_op_eq27 powmod_eq_op_eq 84358033946220170562942478 72836294233499688898981771 -> 0 +precision: 37 +powmod_eq_op_eq28 powmod_eq_op_eq 9329531141 3836664923 -> 0 +precision: 17 +powmod_eq_op_eq29 powmod_eq_op_eq 455573057787163 470489543267581 -> 0 +precision: 249 +powmod_eq_op_eq30 powmod_eq_op_eq 2114798603729020264225908158402216030707894908378812708207123993 7153117259523335058985061378063845596335027331960589705783050135 -> 0 +precision: 90 +powmod_eq_op_eq31 powmod_eq_op_eq 7915036758822376963839637250891003159515938149 6511261270939569624825460920482787309742821417 -> 0 +precision: 219 +powmod_eq_op_eq32 powmod_eq_op_eq 12561 4144 -> 0 +precision: 130 +powmod_eq_op_eq33 powmod_eq_op_eq 8188160878952949571041981004 8149797557326527506132371999 -> 0 +precision: 99 +powmod_eq_op_eq34 powmod_eq_op_eq 2005736970068932599172074666224944337322527454420901699345333296897754706521415101330415 6810471662441452382304915444985553921209868385711850120859516846686280655454191364913711 -> 0 +precision: 209 +powmod_eq_op_eq35 powmod_eq_op_eq 428745735781145261751450567245441823654418331097067808101242404761665174600084649678655540675274953741955084538283491935126221081633734343922361210426346849586949954752662616824197642811521117 88725003244509044975540889316798797982810755869821533397805691336388116004720282406881750451112928663329316779532298198421044438065746466434038391131375901240139774205969435894373145607742511 -> 0 +precision: 93 +powmod_eq_op_eq36 powmod_eq_op_eq 17594066796430802709712961787252789643401592710494699873 70624818478060677540825544458826152190089634902542188510 -> 0 +precision: 105 +powmod_eq_op_eq37 powmod_eq_op_eq 39028353794206100460952987696162831864213132652393760353870939689888243196651218928973432273695786 87261795119773631704165146225657817726894257079413743404849303832538801516803476928753854630905581 -> 0 +precision: 247 +powmod_eq_op_eq38 powmod_eq_op_eq 83755389699565229381908904040331475271747858516027 34835619548764013808430290757616896138275367893271 -> 0 +precision: 177 +powmod_eq_op_eq39 powmod_eq_op_eq 44600313421918861550828837287693269854904453966989527662218934 16568449417950783668364935663066295946657997612393457156667607 -> 0 +precision: 143 +powmod_eq_op_eq40 powmod_eq_op_eq 8180817136775023087934957037890729400117796589323676658891123030394687350800535792302174933850346073014988490837166 1611080116472927522013324454505380489073889093642952956500311633505943358778535481557857808957661962680309684741483 -> 0 +precision: 37 +powmod_eq_op_eq41 powmod_eq_op_eq 63109054 44994318 -> 0 +precision: 174 +powmod_eq_op_eq42 powmod_eq_op_eq 9510401789195232087740245835990324359714207309616544414670425803180275978707513 9048531007153032036191396607464293574539257763918382924097718160604169067873486 -> 0 +precision: 175 +powmod_eq_op_eq43 powmod_eq_op_eq 4760195720416028726701202353403375348297250536646241318593848367984601171754882069842270977482674119029648880396817111870738368332 9163355667365946808180358066992685037647545195046590703580428176601914197903254333721545997171784055802915124656251850903033567550 -> 0 +precision: 240 +powmod_eq_op_eq44 powmod_eq_op_eq 686535300816773237430750151150462295363400256610154 743673350422053948105989587027450694517243775331618 -> 0 +precision: 280 +powmod_eq_op_eq45 powmod_eq_op_eq 4033505606383393901042626460612955007859790975439165707908327908394398444206242840517288530869471204306531705515656290492545682917598785041040800142036938976103645033048784227523247888435685106079842121579184336701440707185679788468604 2514425013848787107095207933191561109132193937884182153614837878087289352968752187933613044870041832697115718343718740833784237206183582540388891261334831629542326221285040547757310456545755295855723977725603455163960642562842240717789 -> 0 +precision: 104 +powmod_eq_op_eq46 powmod_eq_op_eq 65879790932746971165699191176 88378790563342734397287059754 -> 0 +precision: 279 +powmod_eq_op_eq47 powmod_eq_op_eq 4612544114174937970353665467589558212570452557920194302774632571249556783045647389446732592205123190688110714296518071582174999148312816630916274424219376330168970587421955318688495483457575125087864970350569273332097437336728367045969333287447313898028822271546 7845925444480995556562034822140964131130992453163348864560024569140030355142088320011000350909060655208436133339287118543391962757899091853136048108172500549459105836851123483368091177234783831567755833775623437469462790728390438592375922735478851655996641528570 -> 0 +precision: 242 +powmod_eq_op_eq48 powmod_eq_op_eq 3005966614449676414862151013532579310751250813817448834199086559663195149910284304800445526486337471115102654260465776087359064626478846961361473839313567003875699664496497338245278495599029775273783126347706167385788247592237157341100125140 649226780822114180758417734339963486517574655017253216469601474927532163961257967613431844601268604302102662470563221822399709419431418747708715962571056893789948197769941931406758540866984430957771635983537701056839138634655824623092518364 -> 0 +precision: 211 +powmod_eq_op_eq49 powmod_eq_op_eq 407570550 341392241 -> 0 +precision: 199 +powmod_eq_op_eq50 powmod_eq_op_eq 246775336711619972245386164113964249717275621445632735335307847945973478639275 313373147466202400176728879271981599210939383541818040605070569692007625443930 -> 0 +precision: 169 +powmod_eq_op_eq51 powmod_eq_op_eq 9697811596521816649872442112123914919231564990273 2307176921246130210307946088345693025659939307376 -> 0 +precision: 283 +powmod_eq_op_eq52 powmod_eq_op_eq 70806637485742134222640333066733431591269582023126300849078094629495554707010914952171105269240591378681591585765546208909538 315228690001245641251727965553014961275218402176680357015481807276413701614141135389100344261634413548541531934125482815623604 -> 0 +precision: 230 +powmod_eq_op_eq53 powmod_eq_op_eq 9750238160529052646355488399277940905811861035589221511253576869462114315928189250925644426694879561723124387287171278382937923 577874367525891002726764875524526190040397812388297326334724382987429527349562929698341131473661426778307571511201725522309093 -> 0 +precision: 268 +powmod_eq_op_eq54 powmod_eq_op_eq 6435033901003395299202410249122657131782871243933495466746670782247640174943053690605111186294574548396947551494665285197413815703277079387359499358870570126822853112939961783892194522 364624217908883846708233567721243835950529633527378291466889155555715106843301463140756837396330191236642769535842657584014406233548696175675378867533694932117960019279099032588021367 -> 0 +precision: 135 +powmod_eq_op_eq55 powmod_eq_op_eq 6378 4446 -> 0 +precision: 159 +powmod_eq_op_eq56 powmod_eq_op_eq 12652202580770704073720702162583989653246405578507942942699995112864719205611377 30508068218328113007273221355706933470563945177099396409952871433036071144061048 -> 0 +precision: 247 +powmod_eq_op_eq57 powmod_eq_op_eq 4087605651 6373663377 -> 0 +precision: 71 +powmod_eq_op_eq58 powmod_eq_op_eq 3118278632891255220764172769668210000121082189 6812064401368662527638417908780271624466940379 -> 0 +precision: 231 +powmod_eq_op_eq59 powmod_eq_op_eq 82980191127860307342550488581260729181195108001436096821925884410763040625570909446456286238966845049751500249404749465410644 50975129108882017451094946437806517441884572317150609292607558773238690986100882218669484738299471375516924809499116929996756 -> 0 +precision: 32 +powmod_eq_op_eq60 powmod_eq_op_eq 731810678273215842 405996506554599272 -> 0 +precision: 94 +powmod_eq_op_eq61 powmod_eq_op_eq 9869390406282850254917138981266879649525661720 2265456222962445641048050283720059367244499817 -> 0 +precision: 222 +powmod_eq_op_eq62 powmod_eq_op_eq 941851335601494052221845671834325101172817147204951966 674498837166210110748222436687697656439967043045028203 -> 0 +precision: 46 +powmod_eq_op_eq63 powmod_eq_op_eq 374309578163582454203152387874953225332 9203714956182957420209013037376521892153 -> 0 +precision: 94 +powmod_eq_op_eq64 powmod_eq_op_eq 9081760719271334260877296497850906979612425793791236343256376153791631067126531306898 5794105160471498662254297147704047711380618717127062660913074857845679860573045736016 -> 0 +precision: 126 +powmod_eq_op_eq65 powmod_eq_op_eq 14053544956567640462400913156687162512612170923739179044631818136596145564971409507355 99045736692079711182838651482028994449396627636884437120212526645591125698681610516984 -> 0 +precision: 153 +powmod_eq_op_eq66 powmod_eq_op_eq 912027979501559919878024200732400183973904353070178069921891476993330038238717160113957405636577490589863087183461272483356934756947832319844840 698746719057931716677915388514706840998246912748311764592284896084219850116855038143626457646036878658705023555030397703716302201226349796918399 -> 0 +precision: 29 +powmod_eq_op_eq67 powmod_eq_op_eq 161257641 631236993 -> 0 +precision: 94 +powmod_eq_op_eq68 powmod_eq_op_eq 380980849120599930571228876234674 939032714180853434173916325488648 -> 0 +precision: 233 +powmod_eq_op_eq69 powmod_eq_op_eq 16869951231118533764 429770350468208444913 -> 0 +precision: 212 +powmod_eq_op_eq70 powmod_eq_op_eq 3189664879027406866677725935064903271589967920964592964606391734930719352459770575191962988087960736436 2273000114328182914892947892447686895420500526796031019093119444547435728809875352618039634072940678122 -> 0 +precision: 39 +powmod_eq_op_eq71 powmod_eq_op_eq 31867811 65200082 -> 0 +precision: 33 +powmod_eq_op_eq72 powmod_eq_op_eq 35802979102952725960330909515292 83149541600626069005911156563017 -> 0 +precision: 236 +powmod_eq_op_eq73 powmod_eq_op_eq 5129376409797166277787128166907145979061350007845626586335695913583740303785702045715268710560182149747637877005204803875033890625923347871758290463321605331472234369924 8756411921787526617951389646829155527380658157370930539408947863007017774007813072104327127606063209782030043076852393638168410062708436260742039731577965261808455428194 -> 0 +precision: 184 +powmod_eq_op_eq74 powmod_eq_op_eq 6824626331868080365550388516634887032538238994761963222226380942210317614347362829688 446434326137351678568050257656683698787369370974875325760685847487583683003386084027168 -> 0 +precision: 205 +powmod_eq_op_eq75 powmod_eq_op_eq 46851696983192820705948786093869761990712348329914166001135474965528056709331948035961818310326 36873486549295954323796896295751273905565206590688820105451538100130098567438104958377006746354 -> 0 +precision: 185 +powmod_eq_op_eq76 powmod_eq_op_eq 190397130511799181465429485559993953605684318995904635794459317382974616651237 812189942519322580972897752332553036981603726644399093423553359107441657821015 -> 0 +precision: 140 +powmod_eq_op_eq77 powmod_eq_op_eq 5233883241001181945307641951327541128928594038962268056818985418369750659552132213331785692860722789 6441439251875171657258925152574555774869469384990700731653050145422136820238187463013157514941656958 -> 0 +precision: 8 +powmod_eq_op_eq78 powmod_eq_op_eq 703557 697991 -> 0 +precision: 16 +powmod_eq_op_eq79 powmod_eq_op_eq 7340829603 622616192 -> 0 +precision: 173 +powmod_eq_op_eq80 powmod_eq_op_eq 500445759150179741907599603636692741797402981667226524353712158278992586010447219264502348022358116084894447177497237266055089705 296970686494375486309390200210693883096007741453136520914899956317544962497592925564652432447554417784564976742452547388737170818 -> 0 +precision: 184 +powmod_eq_op_eq81 powmod_eq_op_eq 8384308029951196171800764896069911115196347819846519383595541433266862046839508901097974534066401591444 1855562452958533044253989535797701050362929901359982695215101173039015816179474239066155692116760685707 -> 0 +precision: 231 +powmod_eq_op_eq82 powmod_eq_op_eq 5501219 267517 -> 0 +precision: 69 +powmod_eq_op_eq83 powmod_eq_op_eq 65 86 -> 0 +precision: 88 +powmod_eq_op_eq84 powmod_eq_op_eq 7651643350495924835314287302444774071661 8999805883618061009329654443656315541367 -> 0 +precision: 298 +powmod_eq_op_eq85 powmod_eq_op_eq 87262942413793283562116120633835052945614269002079709513132955280045213145259225131486670059576714937510905577345619759225116770977124724008406718324589460 47750461899857110757712942816586957686368472835849360421161051748681151921107854670670519707461306651885522716890619056582031046065047623572375580056986426 -> 0 +precision: 14 +powmod_eq_op_eq86 powmod_eq_op_eq 419 122 -> 0 +precision: 276 +powmod_eq_op_eq87 powmod_eq_op_eq 7373030645539898201467786603544928462879406339270072534882360703997953820034366238955211641242349339248714323163044130592014051958036245402309401207191774425932323001778761701985800299552173578503010837 40665544289054782001467308950162351527058569908084568527030603064783863617343828451324791201413565002018069333563820878068583506968366859321361485955713027161102361428966121452894499631285799868382077382 -> 0 +precision: 195 +powmod_eq_op_eq88 powmod_eq_op_eq 36770089161244328277858661479751989905497416694196954069442219937726117362464479672794855525903071303954774875487809918077189701239853102958554392767454401 484367437821817135747199507407083660473983246287190181573586449623447758800462934548008699510371157602181163976266010902090359446422316078744001379363229958 -> 0 +precision: 229 +powmod_eq_op_eq89 powmod_eq_op_eq 28082772904160706848679 82721574046235917001779 -> 0 +precision: 130 +powmod_eq_op_eq90 powmod_eq_op_eq 322428732029320758052077890131109481631792956339235243541716376462126717291747984403300650359471384650429287404013326775320 745275364407404075715648610106507161207656982104309969021749816780971818155968936478266027607534409817083445755309038632717 -> 0 +precision: 126 +powmod_eq_op_eq91 powmod_eq_op_eq 93820232225015419652019302593542859308366981950305427527478019477797516098108453770714174201965166062839503075130 17783039666486402857307122352671735239222496755306328726515642047841731973691642528148867518542103052893864112864 -> 0 +precision: 124 +powmod_eq_op_eq92 powmod_eq_op_eq 380859193688931751025927460694179992440285563120562298885850551291 339842761921002489801677657134318761965491364497654256143559709764 -> 0 +precision: 91 +powmod_eq_op_eq93 powmod_eq_op_eq 8222654103122824874168367055451278900575573615918315 9224804474812628546696977557461094147547773354055228 -> 0 +precision: 264 +powmod_eq_op_eq94 powmod_eq_op_eq 948196090341861521 173276871059088619 -> 0 +precision: 184 +powmod_eq_op_eq95 powmod_eq_op_eq 882925618305904724102464755108726 5303372059452027279567833203228011 -> 0 +precision: 244 +powmod_eq_op_eq96 powmod_eq_op_eq 56976188275105133234998097 484722701582442139900477889 -> 0 +precision: 67 +powmod_eq_op_eq97 powmod_eq_op_eq 673842145531932285339692880524 43130747577482551004180631633 -> 0 +precision: 96 +powmod_eq_op_eq98 powmod_eq_op_eq 62160794673786459314402029986286478073478483127200333394227045097162 75752091384175585756330674802513611759605316218960930336387585627949 -> 0 +precision: 269 +powmod_eq_op_eq99 powmod_eq_op_eq 6840131989334560857122785883556748585173865093768278918718782934878634667045619284790757283956077112527960131831977870013733842377767497759001359383854327910292234438802853931467779507780287534469274199805375498400584783176250436294666328252337682977787268947 7958048992415773165915429728866073243247579470649936859986728554935575007024222623363071805398633782070922796135418521632740188064637441646307204596704639909740085249003188777027745352555200751141444925095229713789927385850601976651125711132230058007370119448 -> 0 +precision: 36 +powmod_op_eq_eq0 powmod_op_eq_eq 93644154570332 71233122540061 -> 93508903562733 +precision: 118 +powmod_op_eq_eq1 powmod_op_eq_eq 598405418033942340397171 6815864866743827591505471 -> 168395168097459804638661 +precision: 246 +powmod_op_eq_eq2 powmod_op_eq_eq 1097346538673730095069777528876605219822740255502706770444142014017490847294982882094080057824312218130218609140723758783765827179991136029424945606718734402779666314915361241101238872 1940021534538533740089728832649959270795454872290116522349623863419989446333951793667891474033420737743601144293263372891557948903454146316431328904272140865205702363968734581793251440 -> 339505757849062119836823307612784252106508537023919088710279685270206768728891923866130427698510653981935730490911056712030029206262197079952242695466660400474998106007890204112930760 +precision: 192 +powmod_op_eq_eq3 powmod_op_eq_eq 9892981537198570336634482219432708990736694052060727541532146588085510051567165915116675327 683218355639647684647156963690374742460192271712812015946052076075436378700387290947224999 -> 8655013842046815109619941094779522028905540419705082855434867486863722270157065957735422460 +precision: 158 +powmod_op_eq_eq4 powmod_op_eq_eq 232915312826885799515977663755702946417762971963542 599850435916617864399365116917467680298990711327327 -> 43465265897899747471124682257007531966047450800609 +precision: 224 +powmod_op_eq_eq5 powmod_op_eq_eq 14488885853598076317110086333547887641319 49980581560678938604157136522030583239892 -> 8060134150027456801841236255261726098186 +precision: 51 +powmod_op_eq_eq6 powmod_op_eq_eq 73925188024995369548541 743662245592522452841995 -> 62695005349445590950783 +precision: 130 +powmod_op_eq_eq7 powmod_op_eq_eq 940515687785126840188495376313542116444988603944099921490644457077780 63008292928070742874756301339215335243095971406028923125415894929920 -> 156913375020274387347567522003792778003658500695872310552355012398080 +precision: 181 +powmod_op_eq_eq8 powmod_op_eq_eq 37273364134852347926683435176256142232633881568072838240288062354988511799157 38058930364232880082177984674355614857637563979429665833215222678402215239916 -> 4601601337553449707209221362590486298050901457060678805478924751518295602080 +precision: 170 +powmod_op_eq_eq9 powmod_op_eq_eq 205195098821968248174 399257038017383446592 -> 26660419890185934784 +precision: 269 +powmod_op_eq_eq10 powmod_op_eq_eq 416740379287195565815771287991816409442368416738094236356581440798789095006209069144978786327518613947509209738147293885797048268988 379024330166798712907766161467905179522002958582188640797199901005227669993800647593354444105600584325159767849800310558235178751202 -> 86485538819911049567055363367182972712445110424165462115687395556552207803245963254336094141223892453201668622986254188827749901776 +precision: 111 +powmod_op_eq_eq11 powmod_op_eq_eq 722570461351956147895172040089906388481403152054 841792428186179653963203745219782697770553986377 -> 642210011705798416360709457684956822870950617835 +precision: 117 +powmod_op_eq_eq12 powmod_op_eq_eq 449605576614643180527625677649778368373892007270283573767199433273979196472249779714742912572244751143053063499 356001183968506153998629566435173880262151165615169294135894523569305671171245695743061634996364529229540980798 -> 392722549887501276831954076719732408862869764958541627657057717474959388232271117430174813719117163009290206268 +precision: 298 +powmod_op_eq_eq13 powmod_op_eq_eq 88009468520233035145096835646993773979037738554269460143565854635483 69870173146632680997087449311630628365377569286186853467024735383911 -> 17208353025206210068594750379131085020574407470600944774825193822295 +precision: 131 +powmod_op_eq_eq14 powmod_op_eq_eq 993519314149263538186533170754889501889316212329042258311046710311655 844065691742518834579045692875828688444643888291440822699547480968369 -> 503815786589450148707275491323487900661846631802262370442446902999374 +precision: 59 +powmod_op_eq_eq15 powmod_op_eq_eq 43995774809434459648124709843137675 24600911659404942382033320244757924 -> 22797652001001093550651359705116674 +precision: 54 +powmod_op_eq_eq16 powmod_op_eq_eq 87728484024 89147911396 -> 15521773960 +precision: 155 +powmod_op_eq_eq17 powmod_op_eq_eq 9528591211221163288778397538209163121745813577575827182725006505546976270413661645557361611898300092063073422283529716007178392011109644 5461031971090051760224587071637595822257861690731267284642160288120412903391710508330554781084322961714014183008229659634144396772529251 -> 7283938158313213725939630025167327113836460519808761480921260443249362446126390346712433254440507302938060281346601940899264007398080965 +precision: 175 +powmod_op_eq_eq18 powmod_op_eq_eq 6226679087647347219638376788085856109204683489705800005112192451269764 5544425701378067579488568319078358205583564959100830724798339231601729 -> 2289914604376981493034005788543144242792761562239039537147268784026061 +precision: 14 +powmod_op_eq_eq19 powmod_op_eq_eq 715848485676 270697368537 -> 676535175105 +precision: 37 +powmod_op_eq_eq20 powmod_op_eq_eq 905670987355 659638909618 -> 581038945082 +precision: 20 +powmod_op_eq_eq21 powmod_op_eq_eq 8307955437753967922 1033657074206487919 -> 1976126530223774913 +precision: 24 +powmod_op_eq_eq22 powmod_op_eq_eq 303571743501794357380 43268185018096756220 -> 127631154537682604320 +precision: 67 +powmod_op_eq_eq23 powmod_op_eq_eq 228000879721350582826178328150451215277264936376976315957491035247 489772684513038627155693133140062354412656999006246453766591116619 -> 26304409402107062545664427185394998952977006015253701490094217743 +precision: 162 +powmod_op_eq_eq24 powmod_op_eq_eq 845851811725883914615748015886802972514482820982403825472965196960314364055135200396158887972659671072296008108799873392 407325252450982280251053480585745787302290824282665360797932643702545468451211544867051355887540262859026243976456086342 -> 92689184982206141650518995929740207512996362566654794353676419208053228721555103105044404138442973896231810659612316272 +precision: 258 +powmod_op_eq_eq25 powmod_op_eq_eq 495387743965640817701250229937793416473261494192979905708229328620390924655605210647242073666645025085661586 236839181055608562827391542278201292009291941938798761372319622318214921581466296895158571100092919929943626 -> 192057661695486566234641742214535689123542706240344070589206504194004727976357315595351561933761682413337908 +precision: 145 +powmod_op_eq_eq26 powmod_op_eq_eq 9354929643665814547 2954322829601553321 -> 7618358313353438259 +precision: 107 +powmod_op_eq_eq27 powmod_op_eq_eq 583786877037484609101712181039129523631868772933310305419751660657027458955801999913837292397404232597198 351247065571829886560179307602020045405050374725448350453275740793802109187353316746649436269293224841988 -> 502823045572152987282343908080100767930266588401178882849818817789178065574758597894157012636160392954698 +precision: 153 +powmod_op_eq_eq28 powmod_op_eq_eq 896190484199945097712478771908578525825479678082364837360434983449573074537276715934139239 554009119397354108141146649234204053513285632552646123270196997718384428220958597293344806 -> 418395315707950531524526393112481751682614634342387555383755300596229527400029455635790653 +precision: 20 +powmod_op_eq_eq29 powmod_op_eq_eq 6991538179 2220283227 -> 2220283227 +precision: 152 +powmod_op_eq_eq30 powmod_op_eq_eq 11415750353730261 96373718213390434 -> 1596294308627857 +precision: 240 +powmod_op_eq_eq31 powmod_op_eq_eq 576858286109914789713150064727315122776922024260803030770670003139435753788265549387014401606770135397186874698195400718184039261072 27501759836113773036690823241291236283120267420933194063390125207251569548569205167081809276885832292163540777359296981296474210243 -> 494249584277904863794898103578813681801895058808249595403054105032960328137031990734834948977149114021462201690211306575650992463057 +precision: 267 +powmod_op_eq_eq32 powmod_op_eq_eq 17890049175377295129074032210498665476676324633366021311942650724279576243292652666756278063952779314162882640709098165853518460544000991304238084051503632597272479131915662356570943162954194035886159609654515218834 33620787455279969350421560332823874471016446536791943085767426049627797715828395897671785446945133208047027726013866330337824085371951959117063706511117835576390830617254062959439175919117049018067316949650272431099 -> 1000244603743387144329504650135782819592988647572675030807785041616001014316492064609753526004971686856022840181346647023663667397109520670105759006876622367647906614279089092406636342911932403589344566909204227271 +precision: 212 +powmod_op_eq_eq33 powmod_op_eq_eq 29905092465392539470652493989687929742846622566096477435502078200619481224526749257165260135098240310485875839236215459676233133950598902 90093526665228136858021477474038178752038240639160484476916646230346041484453906335513145642458746275564566471644418706758857840045619621 -> 167874939969429970698892745935700204620285157391473696041448732077698111399936641811074893800036808965842996122224896578464764517780765 +precision: 28 +powmod_op_eq_eq34 powmod_op_eq_eq 86381314441753980577178 14064247586471155691427 -> 21081705936222005470577 +precision: 116 +powmod_op_eq_eq35 powmod_op_eq_eq 3027912607320175261654306732694479906742230387969783931637865369445868650528159484259442291861837465225065 5238158743738915373586979586043155393591595686567449069516899257901758001636529611654146838858038804811897 -> 586403839919219523190516462699661960677920118739197037308532629154893358132675986686606293970073187171012 +precision: 45 +powmod_op_eq_eq36 powmod_op_eq_eq 587 931 -> 344 +precision: 296 +powmod_op_eq_eq37 powmod_op_eq_eq 522860341350680486872229368314822523418215681032778478712325762801926501305558584085021399341224447512725989992068722850873438515303696889368163269775941137301671275466059561210289476961783919742245228167699508038597364340789991517674479131871701326140659004865690858813575123307904 403293079110817989524752694868880979559072602116703482094527804988914456092625387650349978802502036392196830059804304373373494005581460497203102799083578331509204587456961704622324223987500806425099349688655833599711742069115389132231289627140275355996716647497788555095516187579052 -> 161353065727967481942080332562738875312853700525747642492721936831194969891038035221859856441674669360285023272961432984022172475699722941973724997111718774193379576887120356661700554947431549462624389775778534103329177077272600726140640345251589566834352612652658080554154950136192 +precision: 299 +powmod_op_eq_eq38 powmod_op_eq_eq 6531912672640325177358843054946791922691132817682316911673670773531320566875808155662662485552103890748100914262048779922848329187447297512212828303048566960214437960311389408909777997311202474321018326096680175786223034392079067336944958775965140215366287640391984448695671380211521377595701 5530187802211507467603064749694628341944845962712339820850565402183592738341772888661344393502644488223343899058634328364377765688314129060339302005995645353823390491843346574513345851498565275199396300053521146011085088489192715553053899455935661415145529534877097730765265183416448181169290 -> 5084384707678961618686405618440743413652409628548234914537282405027852110239132765578881446757521493104281684774975818817222429984512400027616292901579664590652530282739314940046831044114342517344437684807044774209729426649706534521694155080510420417496738160153292550471333914165023225283264 +precision: 181 +powmod_op_eq_eq39 powmod_op_eq_eq 868318416 748960293 -> 228338433 +precision: 47 +powmod_op_eq_eq40 powmod_op_eq_eq 51426956231466081391733456147478760 56239372379901318926075888693024720 -> 31663736476128156262651597751326840 +precision: 205 +powmod_op_eq_eq41 powmod_op_eq_eq 8839918414493781420083976345 8881366956999267245913922802 -> 591700246272826641089354897 +precision: 219 +powmod_op_eq_eq42 powmod_op_eq_eq 283663417644693588577887926152673672858288757550557123693885892252363977420609823709318611368993396356495698124477330672752047916917534592788222481639719106511878463200687412721354619400297646001908336357568 654373540770261222021413259376191167509859799134723733428231007271411088820790386026974625599625921014217022380611193340876714588123405502331899382643362869735685729657651112621371003874026625089458443126862280 -> 138553289813084225187877649843754394074066357492731699561033763939290398770011641611726232781738096929005782338153606325235903050796400454807451706800809979415719125912972294568297212547224733073899330021888 +precision: 166 +powmod_op_eq_eq43 powmod_op_eq_eq 537849707659618634323471554860334570268543381129755418716330737031175188967948167221100075530929835624431410021453880277897633383689578996568 6957989887603577571331699452886451193472564501996437200245527252284922068161095576189122166913807995490054245604745650555410149550151184579511 -> 22090423469066341869019072524561765237313087263659878792150643390619183095377005575948430112332283234869097664195095030166616714617389837785 +precision: 134 +powmod_op_eq_eq44 powmod_op_eq_eq 75489363005519323706007726980114854443402894785707211647218515624796757015822604291659732516634175956999212446328861217246961 67755761672745331371463486556653901656496665961078944535539860449167959852300383255588767261878340123962901637552301438270617 -> 9536047682125859804965831659804638245103498187265890703848565034374709880590886980350219667544194376286604244050428071041801 +precision: 215 +powmod_op_eq_eq45 powmod_op_eq_eq 306596236743164171406246583608903387510390674786373058885280875014626945127564801391360376618084529835448451 426126533406042070534204761138194679305857231432722014826533397856928057805814531185458497818224402160249928 -> 29736107254640057403557862866076363914891886076015527609813723996619282278691416357741128000497437414357301 +precision: 50 +powmod_op_eq_eq46 powmod_op_eq_eq 5781058 830429 -> 1477337 +precision: 107 +powmod_op_eq_eq47 powmod_op_eq_eq 46714368521047311456577524152502251411677736934888899450498539727569534073074592195583284874097947 767554623506124923089126935402259496602855638815042254239922597831642083728704437236225978829349646 -> 29591104649879521845621936704765273884580294846221989609989148277207493650235057209972356293553869 +precision: 179 +powmod_op_eq_eq48 powmod_op_eq_eq 23906916482573850899193852040185401867947874033884812865779481232 44339535288197831629264367606825306225099413997204280883870715181 -> 6883431694786524801495923025459076584238609659465771615153292017 +precision: 76 +powmod_op_eq_eq49 powmod_op_eq_eq 2817569669085613257077958440657839962000688753081756224849454373329356 8724098553499635810719437083352376173026474907592101123067063724639293 -> 2173177280309900627416506146407835543636604218734343452754071494359437 +precision: 228 +powmod_op_eq_eq50 powmod_op_eq_eq 1198363578003463453778934537278307031042658092842270878251981859817096151102087053318145804208851792986632661 3549252704347962584332962104724932051381037446281100783009725047696039159202156071763283135606819075923416532 -> 924249126442348515105376791689513947942638189299569413257172679785750783383766269149822518920475833141798434 +precision: 259 +powmod_op_eq_eq51 powmod_op_eq_eq 7645907907644906201318416143872992491396627823356057092810827407628801516377457846846554701142509068807314401207001865870687741744 62809163015062403570495769079740414562180212375982726725390454665545750887508280741975611925046182973605425649856153880948164451492 -> 4418571248507423918549575192130732522852174182862424971297369577583595518781100787175984956411049188769718361228980352004392322032 +precision: 258 +powmod_op_eq_eq52 powmod_op_eq_eq 707659114016570917475469470293924782071126712644801793932793312230369805174567400893081730836025696378 234326093369298957364149615742804309557003595265633969288791709479390459931291594948217690256307358635 -> 447299027809950066297981524228146825607934928829702945255769947712796284307518550800430776582080487181 +precision: 116 +powmod_op_eq_eq53 powmod_op_eq_eq 8927120142922822140241423443170079481333560301782969746150320644108877595455556860588405325430974320996301 6566470617679829196864578384886543101278276157366968557670238927019449372841578808143474560688231088496534 -> 8344230498479059426728066750872787345024073111126346603104102048269626039228311140084371091996848030719135 +precision: 82 +powmod_op_eq_eq54 powmod_op_eq_eq 31254362639761921820604020 39851897842195972699861192 -> 9424646185509048603199956 +precision: 196 +powmod_op_eq_eq55 powmod_op_eq_eq 792379192386928 428593014709471 -> 497965686580961 +precision: 223 +powmod_op_eq_eq56 powmod_op_eq_eq 61339465846748335327704692827911856784492996410403246073844195362 8831836401556391860200263205683321808169619214413711429305805797 -> 44979150286496656644435541382185176341395158583435993549452650461 +precision: 83 +powmod_op_eq_eq57 powmod_op_eq_eq 664682080853326435638704166592066331668524894051425876667751784375 939428298374452107474077775280938226245077662639067379692053700243 -> 458105242949695231606808407006422016420265809598498456931011377057 +precision: 30 +powmod_op_eq_eq58 powmod_op_eq_eq 15468243850979489 87002950731547910 -> 12013932498219994 +precision: 194 +powmod_op_eq_eq59 powmod_op_eq_eq 61883760276043426694746450730883175435943353383438582015 22232648076100437233163071326472919770857296923830077493 -> 23564125518711109768983585731938935443699616203384678947 +precision: 156 +powmod_op_eq_eq60 powmod_op_eq_eq 48621310021438633876961154047219484071725270550787404847002986497560273690210362583493517943743593284478165221817838962360067042 64358456762514441033105130963062695916763718357011945170188998006434263856051706374144659762717837223874680211004468803695206376 -> 2826795436258971144466913303486493710948904250828987791822030342679892722760227870448221471796685711866847553853944940515510866 +precision: 126 +powmod_op_eq_eq61 powmod_op_eq_eq 764761023732393886891059612110358445819762361618383326606472924935757311134721626780862257247665137885 460233226608679919207334545266539184002905908418887623777776274054746685866295164568928510846790870404 -> 510350001126830526501407987041411042439290244426418781745981488474310340686451586790068801554267763604 +precision: 142 +powmod_op_eq_eq62 powmod_op_eq_eq 8021312303618015592239791862511240501545550727886330003310502928013663854708321888226202530675905691037 8128604307228275495114894109243179483853543765521209777796805465024913794719494625173056365511737147185 -> 1167656325773922913489861284691142372491597437595875870289933443812054532971259015259709103152356621628 +precision: 5 +powmod_op_eq_eq63 powmod_op_eq_eq 10586 66063 -> 5495 +precision: 133 +powmod_op_eq_eq64 powmod_op_eq_eq 94061559719107659781058283242200370843746018564949010117101781674955386447 1004704725330192069738221439582571270689949821978884670023720598843198870 -> 61830827882246092997297498734473773732852703483837541020831227446579722343 +precision: 60 +powmod_op_eq_eq65 powmod_op_eq_eq 16575021774566110888303442794 77938680869091200667632548678 -> 11870297578419991578881713596 +precision: 196 +powmod_op_eq_eq66 powmod_op_eq_eq 1138432962643031904635829414527037061017459251872878643302109503658970034209340165578618242386594888905994145543676 2789290220758132040932759258419794958907926017488529966788180817742124715271368004457992842157719824582390813699203 -> 197073423638527582385013808946500363401056371471483904819785239454238389470181800723906193393073336192942379879741 +precision: 15 +powmod_op_eq_eq67 powmod_op_eq_eq 6690928 7769289 -> 2104209 +precision: 45 +powmod_op_eq_eq68 powmod_op_eq_eq 390747613037 798785035245 -> 17289809171 +precision: 213 +powmod_op_eq_eq69 powmod_op_eq_eq 981446416129431944453275871306514805222572162005896277065079796850557046437674491114529568729923402825541672480772369362168891927315819255179016976866378112086966973982 239031061500831612937731391098792861566202829930406730223688919393006533209489241962525993640345437219332409700363878440571306055506815901231005185835592036315736326026 -> 861847215495541974573530633143259142314084329853731742888300134856078030048243709917338261530943440998824069648331515500132351114159903113040442002994901732060689444364 +precision: 244 +powmod_op_eq_eq70 powmod_op_eq_eq 8226619997939665693061566413164051010506862214534654412334550247430808716177314792327698089583 9328492296398269118014853289942377716753618990774140847813533010636349883376353526300326892255 -> 5598577178497127793617640007646198694191360743343805119332135305515405309590405310860468701535 +precision: 293 +powmod_op_eq_eq71 powmod_op_eq_eq 9021067957599 70627325664398 -> 6833880397361 +precision: 42 +powmod_op_eq_eq72 powmod_op_eq_eq 8210633611247631382214172597780933690183 8115704230358531085837621458583334825869 -> 5053111907603167334002484740324515539778 +precision: 180 +powmod_op_eq_eq73 powmod_op_eq_eq 25435813404167351714124938207659925781376487135016379898701498733921392241658103575567055995238810073768409451779539427764917419939865018174972539659863 97393592986600753717862083197492995695692727543309698205280029747966050541274010467644432723465421530305755454523557476860651513475235014827645062708849 -> 894712900313830391038025934975479859159508614214452714634857145897076024499772997154608020215095739068209052730313956838816500647325575140588639210256 +precision: 171 +powmod_op_eq_eq74 powmod_op_eq_eq 19550172664007370262595636384816476 40469467127227010050946479899039838 -> 18620194125917418837508715891193740 +precision: 281 +powmod_op_eq_eq75 powmod_op_eq_eq 76017090249314791590709861406147114769276614980214563889193374 37789815322337847966669252392817685251892476667214732268036359 -> 39597369093912128949767243038928847739701769669949628643535513 +precision: 91 +powmod_op_eq_eq76 powmod_op_eq_eq 285837716541147314615219304597438497 646791693069642526890489820087139 -> 646791693069642526890489820087139 +precision: 191 +powmod_op_eq_eq77 powmod_op_eq_eq 7757412853757394333531432794188108579984518867765 8850805420783793041994602216107749890647631138655 -> 672017036950810854918323134078754789187755859845 +precision: 298 +powmod_op_eq_eq78 powmod_op_eq_eq 9136535045583097221034192981017407463523697336141799296 683269755776546469013863750000973535301812235261341190 -> 3325990663333039091342400687905233985438084910211586560 +precision: 121 +powmod_op_eq_eq79 powmod_op_eq_eq 640405852353068551670 100844807079103282152 -> 356013322313493664564 +precision: 6 +powmod_op_eq_eq80 powmod_op_eq_eq 35702 200071 -> 979 +precision: 18 +powmod_op_eq_eq81 powmod_op_eq_eq 35582 43384 -> 25984 +precision: 143 +powmod_op_eq_eq82 powmod_op_eq_eq 13526042363562285194628988632076885179547591702629345793112121258 99913055282213265504863760442382786097933060526043294029385510786 -> 8533068795215358693538643705281154642131191894279451687231136638 +precision: 224 +powmod_op_eq_eq83 powmod_op_eq_eq 235280755316533413335789902363306093078207109352014041953193126396 484564574750213960471670388415794734358614242146270172147629958004 -> 196403644248050946644176475949543087030216073763909313402253431096 +precision: 296 +powmod_op_eq_eq84 powmod_op_eq_eq 5212583686446193457976543116229163775636997359479483145492348620990840180826890430567823639989810332316206509918404592026651509952743961891770961380986469 3668314591757686961634134859075626550755697976195528832103410326766434218447077948820139074512717679359387308221630090036118025556915768627992190414206734 -> 3668314591757686961634134859075626550755697976195528832103410326766434218447077948820139074512717679359387308221630090036118025556915768627992190414206734 +precision: 30 +powmod_op_eq_eq85 powmod_op_eq_eq 9135177022513383 3830186106374811 -> 4852485006553566 +precision: 268 +powmod_op_eq_eq86 powmod_op_eq_eq 2232236145543948685117660897098354978947153767489234263157797761450495416389951075496083257386498413433650262101828611956609685152286856475560027052666584769589414865671 982147487915354028367996825295865175322792704104664198806119591115780129839653840308258097312532333187558204814010265990472218555274569967102711357968720915634943594924 -> 723972953833781491399447762869006849969419778131070625711527384068749220972869341374913592005213720883623745392335936546077973784397446781735572775908535533428193002117 +precision: 190 +powmod_op_eq_eq87 powmod_op_eq_eq 42704903058326580942565930913075188036468612878609 29374653425353020506418809976191204608501864241547 -> 42518862184755951990224185379633066210598023321754 +precision: 156 +powmod_op_eq_eq88 powmod_op_eq_eq 98243455403274500527622132698816479312253790588706577997364470451867198612185989450972103536913956824291581997781720413682042150308083813292140715409903 767027167062423300854920075214017002257105496739916730197711561791397109847034450288359119045143199903405423643686524201759850454759546161800902496665003 -> 28774073295134501400846615738838674286718869177696851051251834888288415276281251605491327540765015905879313304858422303278784762004074059557129481257163 +precision: 219 +powmod_op_eq_eq89 powmod_op_eq_eq 781836774770261596726744126238025287304752890974666682964629200239510131388506375742268040790754791332284383562633713576185404932509484125939956815621250023746820797573649211237204418307 834153251596603369534885564297842000050716822796967157406438411170378840911143262065283078154304275316964791167273769413650663809542383463254643100139405013346565051835938671578967122778 -> 118945216760327112101866732816626483831746207912143354213785616741272650238450509675525595911668433372936908342302018685236776757504890471711975884727257065490619581192470394112245793232 +precision: 297 +powmod_op_eq_eq90 powmod_op_eq_eq 8201591092592054800779607224685614083110798210463326805122222257636700653233594989619275088046481460428873686513059342782854402467567578469324893924996021122961013219986871534126742681298759859749652695398491860126151790632556303298574625322872018663345848541351541318688141178289004328 7172564260001763332987745558287500817222993898695394538942632760249728592335896601533696050431457371545457293927279214309717715080651595203404038764164524183032537392720866961126642182715890688692465498564333861995424081655990460282496038707558253351434075588005217322196398100484517198 -> 6044323577747089748862896675970436825185663319149684921170454084521191024878919555555322106005885013452737320038768836346030308031251527518615230992288094662508165764767409808637588754823522905108486647328879335383304512063805781980835080565068296727575366323871016963604823869076525536 +precision: 147 +powmod_op_eq_eq91 powmod_op_eq_eq 69024459528330434946545281046322319347091844344004059220334318255988 68776481849209014434202700475192668593332320057935850101774598120880 -> 4539550983088515823388038532341189988398665108432895058996652044264 +precision: 177 +powmod_op_eq_eq92 powmod_op_eq_eq 620341954275573979592285547984302109356661571202614103193627188862087863834130468313478368429437606487774811599492142672981313533427352 488147377425695896546338629600963258017575123830523147748143635211429549527268340943504928144633906502824773063519013770001876683961081 -> 585856038472589297906478439984995865839761815508289445511736272356275143939768646913694466829380688648911305582523371463615097768501225 +precision: 193 +powmod_op_eq_eq93 powmod_op_eq_eq 3628496974244383688150519408482853422242427367801 7480954340424612998938918146058433063499498182309 -> 719047469093978624441635184221951205552362212487 +precision: 271 +powmod_op_eq_eq94 powmod_op_eq_eq 968515190650703369891538857656143798143450068263482811194962606826448948168461046215131342708703224015 788433953780256967581158631980284209970527715994077015649984839101705433346376657940519583789962574233 -> 919732633778513696073899069413222067513593038336485427063521547068707258489772924129639659475610991847 +precision: 98 +powmod_op_eq_eq95 powmod_op_eq_eq 1966954830801369310030868520668407876 26773536575993726216687465885759562 -> 385884957470775696326250330477061652 +precision: 103 +powmod_op_eq_eq96 powmod_op_eq_eq 50354315071392411352942482265073912038081561341902095423096236194770414330915716839390264955301830 65894384444939270332996144403568720833877790018457223589923141915032024816695967757981157757747097 -> 31690468229466480030107927271849464861479589030037963596271308786061580834601503918814842738354779 +precision: 225 +powmod_op_eq_eq97 powmod_op_eq_eq 646563823556206082727090815908280136516034023148481060187076049032674292565526721716949002213623305799623471743428599214037874024786514389808388397211977792416467622677 441258695812739552448920683525624750852468882172384774036450855044809420424129692356130783284862563699124699494090753907491945471484708911427386047725821158662892777905 -> 138001616542500846726470518289689881632288900154313723410086963973195502244679117303691861883707644083222107779783377318458962306527794706838217170682297405316102116449 +precision: 178 +powmod_op_eq_eq98 powmod_op_eq_eq 181286850504121746307748620391002418972 580980367937098815939268735059427330435 -> 79733904367578413185580543179014837637 +precision: 190 +powmod_op_eq_eq99 powmod_op_eq_eq 5123143753027578495391122817827968092782104428355903965594199597185006804197064003708209217618333645450295861317803705217316420904332876369324242056527901574339360567527301049809779899 7034543710919899646091710455701586158632919653869181449549039894259182963910274511019201237540411043108697694527615067912668378223586944889403983726125551568009969669212734718546980046 -> 3940853478768399733048489606229696080167055729751790509761300946854705406799145832236830646924180518508206373317469647350929335134212601191739075329540926668126902945661075045994790773 +precision: 102 +powmod_eq_eq_eq0 powmod_eq_eq_eq 256197519693 -> 0 +precision: 169 +powmod_eq_eq_eq1 powmod_eq_eq_eq 37587135423715149262208146181936591988254906253800738427584329234965671846422049495161968321453714543687060399733051571556 -> 0 +precision: 175 +powmod_eq_eq_eq2 powmod_eq_eq_eq 5802000885267989773393557179074287708008693986939769039452257306921 -> 0 +precision: 4 +powmod_eq_eq_eq3 powmod_eq_eq_eq 613 -> 0 +precision: 152 +powmod_eq_eq_eq4 powmod_eq_eq_eq 828473657 -> 0 +precision: 95 +powmod_eq_eq_eq5 powmod_eq_eq_eq 64287996663801185480873473416026399292259841507871680406997759978920707504176405267361694834 -> 0 +precision: 119 +powmod_eq_eq_eq6 powmod_eq_eq_eq 5481703446039170348471336982096388038020467641816 -> 0 +precision: 154 +powmod_eq_eq_eq7 powmod_eq_eq_eq 514551349150939620172685325927637786746134873807524717142798851523723908708914027928576699239890597443578201555710408446010 -> 0 +precision: 262 +powmod_eq_eq_eq8 powmod_eq_eq_eq 102700945009975675774324372533639750337736221210809242552965239437607250343323594414248128099989832504845120597927940164197201893211001359 -> 0 +precision: 127 +powmod_eq_eq_eq9 powmod_eq_eq_eq 3012625363815095244750952318716820035011829495927135013544992048113288220270935282554060076151870694809881962655408847379569757 -> 0 +precision: 122 +powmod_eq_eq_eq10 powmod_eq_eq_eq 9101704900773746413934813051710573387091100734030918344948517917915330837618980535807868738029349368395362480054954 -> 0 +precision: 152 +powmod_eq_eq_eq11 powmod_eq_eq_eq 7740939526484807175667980103382156632843618326444345856783813698869529698985203585690010341479615409784946250479057284849300814919930633274 -> 0 +precision: 21 +powmod_eq_eq_eq12 powmod_eq_eq_eq 918460664891421474518 -> 0 +precision: 281 +powmod_eq_eq_eq13 powmod_eq_eq_eq 20571927469704400116675912245157035089494243724855347837315419378934893268345865515078979514427653948046563462636719516867729409476312200889161203147434121345599405349042 -> 0 +precision: 5 +powmod_eq_eq_eq14 powmod_eq_eq_eq 9893 -> 0 +precision: 110 +powmod_eq_eq_eq15 powmod_eq_eq_eq 255282357976976656563376774886599418025845368104080075681998951281953573537004422715238886732 -> 0 +precision: 16 +powmod_eq_eq_eq16 powmod_eq_eq_eq 2013 -> 0 +precision: 289 +powmod_eq_eq_eq17 powmod_eq_eq_eq 9419766837223679571956923641898084152568556586791118434779403405985537757478412999273699980428113537403199910310370113847289440848089123594703884857930478655336729419152494107963615343252134387 -> 0 +precision: 206 +powmod_eq_eq_eq18 powmod_eq_eq_eq 16716917179506235106160093028160449524721240150208116032044922435719208703888734748803490326944493490791610016841007426298923665570097451043962790861790417018496732602446943811865857457492183449525342 -> 0 +precision: 180 +powmod_eq_eq_eq19 powmod_eq_eq_eq 81398689339332192680246362581713759007423555827 -> 0 +precision: 133 +powmod_eq_eq_eq20 powmod_eq_eq_eq 151744122817861992832429450017903559874121 -> 0 +precision: 245 +powmod_eq_eq_eq21 powmod_eq_eq_eq 26114166912270630287936374446930045620384345596715096481027669129380614846885200566 -> 0 +precision: 234 +powmod_eq_eq_eq22 powmod_eq_eq_eq 9692003231642695875167096621652282276683869344817359225475807747254108523221744929546114100536630459566 -> 0 +precision: 96 +powmod_eq_eq_eq23 powmod_eq_eq_eq 4492237819028 -> 0 +precision: 74 +powmod_eq_eq_eq24 powmod_eq_eq_eq 8468709424632300754729692783848266 -> 0 +precision: 30 +powmod_eq_eq_eq25 powmod_eq_eq_eq 95552515407373005929457318043 -> 0 +precision: 88 +powmod_eq_eq_eq26 powmod_eq_eq_eq 854565218172218730 -> 0 +precision: 208 +powmod_eq_eq_eq27 powmod_eq_eq_eq 937969278648395712965535335533495137702962732489632508880085 -> 0 +precision: 85 +powmod_eq_eq_eq28 powmod_eq_eq_eq 223073414421583426380382555598255535875460085339093655740842582090628018 -> 0 +precision: 294 +powmod_eq_eq_eq29 powmod_eq_eq_eq 9421375295851385561564649001690177702266111094701542787594477519160377117463185746509002064863074660618982161492622275200264545525078794612401052036023903137186526211906528850209460076465489195786242 -> 0 +precision: 277 +powmod_eq_eq_eq30 powmod_eq_eq_eq 5714693059014838730539150796050953060604165675788221780802381332867314311268878779701060023163127880100894496 -> 0 +precision: 108 +powmod_eq_eq_eq31 powmod_eq_eq_eq 14671702685989001645894111578261331698 -> 0 +precision: 181 +powmod_eq_eq_eq32 powmod_eq_eq_eq 398935168619570172476850711355487311521315460633407739330336732052377814170002753271852883589162134 -> 0 +precision: 298 +powmod_eq_eq_eq33 powmod_eq_eq_eq 435421324045886911664973483210446134902743924569249182693614151049924317716966957005564376921684205157577582647068322414810998043306203393799679825659016986387323 -> 0 +precision: 228 +powmod_eq_eq_eq34 powmod_eq_eq_eq 913656205749025651337787372902667328671999376926881004890389943840745767236893049342851835536041327090331938198169411912226298888139863826108058886313487410753654363756634909151443173154814863059 -> 0 +precision: 281 +powmod_eq_eq_eq35 powmod_eq_eq_eq 8094359715320305599793043864299760235039222599595400789532945020 -> 0 +precision: 175 +powmod_eq_eq_eq36 powmod_eq_eq_eq 8385640150648792176032512331941664 -> 0 +precision: 246 +powmod_eq_eq_eq37 powmod_eq_eq_eq 26164899000712617140826863804317145602054526346418902099204283705913019919301401031088788665996420436701946631713134658118778871932430914073 -> 0 +precision: 40 +powmod_eq_eq_eq38 powmod_eq_eq_eq 83824090489 -> 0 +precision: 226 +powmod_eq_eq_eq39 powmod_eq_eq_eq 47525753831190797465167514335563497284874831947815 -> 0 +precision: 132 +powmod_eq_eq_eq40 powmod_eq_eq_eq 1717859740824621949499722560902779 -> 0 +precision: 114 +powmod_eq_eq_eq41 powmod_eq_eq_eq 228013135480725315826391151936305 -> 0 +precision: 144 +powmod_eq_eq_eq42 powmod_eq_eq_eq 2998782576781452023071333592212002 -> 0 +precision: 31 +powmod_eq_eq_eq43 powmod_eq_eq_eq 476262510069931693 -> 0 +precision: 117 +powmod_eq_eq_eq44 powmod_eq_eq_eq 22161353620638098644126112074745009327928 -> 0 +precision: 54 +powmod_eq_eq_eq45 powmod_eq_eq_eq 660514898589646302463523621 -> 0 +precision: 297 +powmod_eq_eq_eq46 powmod_eq_eq_eq 533997153306369529981414630256990518621023997187319014494185783901315556308686511934017166407540926721863405939926231713867783791368587434416614511684510296621133272128455300097890511917868418329470498070081775945708108849644331120670860154601296175063 -> 0 +precision: 116 +powmod_eq_eq_eq47 powmod_eq_eq_eq 464140942081 -> 0 +precision: 200 +powmod_eq_eq_eq48 powmod_eq_eq_eq 76606018825523783138307449864803782429110536106176602019994732296 -> 0 +precision: 82 +powmod_eq_eq_eq49 powmod_eq_eq_eq 59994142156850975019274855 -> 0 +precision: 290 +powmod_eq_eq_eq50 powmod_eq_eq_eq 1764123917736892122370605626538702863923690721738200874296794206315971 -> 0 +precision: 95 +powmod_eq_eq_eq51 powmod_eq_eq_eq 896159835375419353 -> 0 +precision: 23 +powmod_eq_eq_eq52 powmod_eq_eq_eq 6477447027 -> 0 +precision: 72 +powmod_eq_eq_eq53 powmod_eq_eq_eq 894038280854221695769639020920991897728204668059327287150329912 -> 0 +precision: 124 +powmod_eq_eq_eq54 powmod_eq_eq_eq 3311908436195107098714162949116388821239809131581497855698815820470233864757431514590879734220919543198152978070542456 -> 0 +precision: 20 +powmod_eq_eq_eq55 powmod_eq_eq_eq 18232446382728732 -> 0 +precision: 171 +powmod_eq_eq_eq56 powmod_eq_eq_eq 7405099389840601188601066561280788366299280754244783724627825828774711008961151228258 -> 0 +precision: 8 +powmod_eq_eq_eq57 powmod_eq_eq_eq 11 -> 0 +precision: 12 +powmod_eq_eq_eq58 powmod_eq_eq_eq 3623794170 -> 0 +precision: 153 +powmod_eq_eq_eq59 powmod_eq_eq_eq 58901123217743262138835958282480211672509771476788401078121229018193 -> 0 +precision: 145 +powmod_eq_eq_eq60 powmod_eq_eq_eq 60296230728377272693234805819924294588720669847712527347925634525608087307903208220520811060841142855961561856691878660057841527368102 -> 0 +precision: 252 +powmod_eq_eq_eq61 powmod_eq_eq_eq 35732013589470405229298030276335393773523587959570587470202198758238831918554488454554164978346181050055844425105934032645575452013163333900581929980394843895492 -> 0 +precision: 273 +powmod_eq_eq_eq62 powmod_eq_eq_eq 1491321525052695091221325963250332686423019178745542701395503753249069889824924300926162513890912547163750417613620117212 -> 0 +precision: 82 +powmod_eq_eq_eq63 powmod_eq_eq_eq 7018102579826281881347914613167951647438832945650627741030711 -> 0 +precision: 51 +powmod_eq_eq_eq64 powmod_eq_eq_eq 4198 -> 0 +precision: 281 +powmod_eq_eq_eq65 powmod_eq_eq_eq 521256563149355085834092189773955727292674077201436041366291351076748066182551456497236541200100393413123413854492644199030895560477529475343293646 -> 0 +precision: 67 +powmod_eq_eq_eq66 powmod_eq_eq_eq 1615851739735480 -> 0 +precision: 115 +powmod_eq_eq_eq67 powmod_eq_eq_eq 579661313362557351918437251566582622358572191862754846998052253912454600311877593319107664267736590996 -> 0 +precision: 160 +powmod_eq_eq_eq68 powmod_eq_eq_eq 5833091557823768033977732949513182 -> 0 +precision: 40 +powmod_eq_eq_eq69 powmod_eq_eq_eq 660530593845580862 -> 0 +precision: 85 +powmod_eq_eq_eq70 powmod_eq_eq_eq 690819603701778072797754386239231923144712318997425753231030169297 -> 0 +precision: 85 +powmod_eq_eq_eq71 powmod_eq_eq_eq 523559216387645325243608360450743947372 -> 0 +precision: 280 +powmod_eq_eq_eq72 powmod_eq_eq_eq 771663600375928503913376191622431232812081369701516084199970343304688558523151227821591313433609605792035389991564180057559329584830105537070347745795961453491 -> 0 +precision: 164 +powmod_eq_eq_eq73 powmod_eq_eq_eq 4318103019884927074888223282396875619108259193201621979028935853175970292872810628218331124682476250306552506506274730774044312452171754176618843820704 -> 0 +precision: 224 +powmod_eq_eq_eq74 powmod_eq_eq_eq 771914800714263189291746884791628699565025366248808932014406417691836452053008476104387317642614006277376546438670135125984155697359833527506332471838442770072892543944922521752785953170159297984 -> 0 +precision: 283 +powmod_eq_eq_eq75 powmod_eq_eq_eq 1365603749727788589358191190072898809172580322597665170485426329705628831447883360966940969671682593480490664344568524221363855898715670426697085783307038082899736406469567919864383503903404116718111414875418062258045622032411954358184286456 -> 0 +precision: 260 +powmod_eq_eq_eq76 powmod_eq_eq_eq 610899534178662783019672748306912176470376540114075444701699245950850824400154601520249798329649689049765144419945246929757329318 -> 0 +precision: 197 +powmod_eq_eq_eq77 powmod_eq_eq_eq 41577489917931847120626272798356194709008463243208393937225 -> 0 +precision: 95 +powmod_eq_eq_eq78 powmod_eq_eq_eq 273932630760109097848403454370722969432682038703043049839047812422716785954 -> 0 +precision: 208 +powmod_eq_eq_eq79 powmod_eq_eq_eq 538586922705106419114370309036222824016186868084593782735886989 -> 0 +precision: 159 +powmod_eq_eq_eq80 powmod_eq_eq_eq 6901473061391539634738341802746468613639869268817122980905380031 -> 0 +precision: 272 +powmod_eq_eq_eq81 powmod_eq_eq_eq 1614075725125855228423856128910713395355313973961757076707257304679559919272482726747288197071934134320716303035493841854987923599429725483265355576997068052425771026394214199641194937 -> 0 +precision: 27 +powmod_eq_eq_eq82 powmod_eq_eq_eq 13071174484111314766 -> 0 +precision: 195 +powmod_eq_eq_eq83 powmod_eq_eq_eq 97593652720821903612218758506316672163906989381573200083055776836719425721240469214105463576349404738049713131444060545851230074717 -> 0 +precision: 217 +powmod_eq_eq_eq84 powmod_eq_eq_eq 53815573321251692916178844421855397229894785839 -> 0 +precision: 157 +powmod_eq_eq_eq85 powmod_eq_eq_eq 9925121518498956083272384876121600869238654 -> 0 +precision: 74 +powmod_eq_eq_eq86 powmod_eq_eq_eq 275589749878072257762064295103721831495 -> 0 +precision: 297 +powmod_eq_eq_eq87 powmod_eq_eq_eq 7474334233042125051665209649408573572574746636914932801962579546201173 -> 0 +precision: 237 +powmod_eq_eq_eq88 powmod_eq_eq_eq 8573436013712652425883275690112188410864510552773890768017649694736761243353763174010439235339356983549418151069445787712696880637379790514587059300197 -> 0 +precision: 49 +powmod_eq_eq_eq89 powmod_eq_eq_eq 7500163491255416064052034161647640 -> 0 +precision: 288 +powmod_eq_eq_eq90 powmod_eq_eq_eq 81474273707300123354874142779929968666781244545448840059805088154941477963950233253055575295133644255874823798610496236623448284960930887950871706606563838932028122780525455623925720853803089249351989790584084 -> 0 +precision: 271 +powmod_eq_eq_eq91 powmod_eq_eq_eq 27637046394032205931032083528686841701033958563053872647275520216625708570153401995504212564623969815240287216627220138996777977757709198777508385043083098 -> 0 +precision: 277 +powmod_eq_eq_eq92 powmod_eq_eq_eq 7602692853452706647334932127327678869516938452643421483293683565347225430069851487958538908757224112968143830051082466254983234957005038071354116805304679478928868538342661326801090803900458304799207576222277218866808614791 -> 0 +precision: 49 +powmod_eq_eq_eq93 powmod_eq_eq_eq 83097231236524632335227149030011544851 -> 0 +precision: 45 +powmod_eq_eq_eq94 powmod_eq_eq_eq 908970022743 -> 0 +precision: 115 +powmod_eq_eq_eq95 powmod_eq_eq_eq 2879793941529225499261228717486420462735934915740145467695789521246500222033597764783 -> 0 +precision: 207 +powmod_eq_eq_eq96 powmod_eq_eq_eq 324554055616064831762690071641809655727100237514820767760279426235768070694028268990464576410513523613896999983888232835512088795190354508805611068973 -> 0 +precision: 79 +powmod_eq_eq_eq97 powmod_eq_eq_eq 918059391965524753198885314950465022077185263471020990531738574066 -> 0 +precision: 105 +powmod_eq_eq_eq98 powmod_eq_eq_eq 8106144643063309275560737677117626728025383281129287323847800309396853595497662600228630053694948126155 -> 0 +precision: 74 +powmod_eq_eq_eq99 powmod_eq_eq_eq 4003740069433531644384700340557732399169978367855 -> 0 Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/shiftlr.decTest ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/shiftlr.decTest Thu Jan 21 18:27:06 2010 @@ -0,0 +1,7404 @@ + +-- Test for the shiftright and shiftleft functions + + +shlx0 shiftleft 0 0 -> 0 +shlx1 shiftleft 0 1 -> 0 +shlx2 shiftleft 0 2 -> 0 +shlx3 shiftleft 0 3 -> 0 +shlx4 shiftleft 0 4 -> 0 +shlx5 shiftleft 0 5 -> 0 +shlx6 shiftleft 0 6 -> 0 +shlx7 shiftleft 0 7 -> 0 +shlx8 shiftleft 0 8 -> 0 +shlx9 shiftleft 0 9 -> 0 +shlx10 shiftleft 0 10 -> 0 +shlx11 shiftleft 0 11 -> 0 +shlx12 shiftleft 0 12 -> 0 +shlx13 shiftleft 0 13 -> 0 +shlx14 shiftleft 0 14 -> 0 +shlx15 shiftleft 0 15 -> 0 +shlx16 shiftleft 0 16 -> 0 +shlx17 shiftleft 0 17 -> 0 +shlx18 shiftleft 0 18 -> 0 +shlx19 shiftleft 0 19 -> 0 +shlx20 shiftleft 0 20 -> 0 +shlx21 shiftleft 0 21 -> 0 +shlx22 shiftleft 0 22 -> 0 +shlx23 shiftleft 0 23 -> 0 +shlx24 shiftleft 0 24 -> 0 +shlx25 shiftleft 0 25 -> 0 +shlx26 shiftleft 0 26 -> 0 +shlx27 shiftleft 0 27 -> 0 +shlx28 shiftleft 0 28 -> 0 +shlx29 shiftleft 0 29 -> 0 +shlx30 shiftleft 0 30 -> 0 +shlx31 shiftleft 0 31 -> 0 +shlx32 shiftleft 0 32 -> 0 +shlx33 shiftleft 0 33 -> 0 +shlx34 shiftleft 0 34 -> 0 +shlx35 shiftleft 0 35 -> 0 +shlx36 shiftleft 0 36 -> 0 +shlx37 shiftleft 0 37 -> 0 +shlx38 shiftleft 0 38 -> 0 +shlx39 shiftleft 0 39 -> 0 +shlx40 shiftleft 0 40 -> 0 +shlx41 shiftleft 0 41 -> 0 +shlx42 shiftleft 0 42 -> 0 +shlx43 shiftleft 0 43 -> 0 +shlx44 shiftleft 0 44 -> 0 +shlx45 shiftleft 0 45 -> 0 +shlx46 shiftleft 0 46 -> 0 +shlx47 shiftleft 0 47 -> 0 +shlx48 shiftleft 0 48 -> 0 +shlx49 shiftleft 0 49 -> 0 +shlx50 shiftleft 0 50 -> 0 +shlx51 shiftleft 0 51 -> 0 +shlx52 shiftleft 0 52 -> 0 +shlx53 shiftleft 0 53 -> 0 +shlx54 shiftleft 0 54 -> 0 +shlx55 shiftleft 0 55 -> 0 +shlx56 shiftleft 0 56 -> 0 +shlx57 shiftleft 0 57 -> 0 +shlx58 shiftleft 0 58 -> 0 +shlx59 shiftleft 0 59 -> 0 +shlx60 shiftleft 0 60 -> 0 +shlx61 shiftleft 0 61 -> 0 +shlx62 shiftleft 0 62 -> 0 +shlx63 shiftleft 0 63 -> 0 +shlx64 shiftleft 0 64 -> 0 +shlx65 shiftleft 0 65 -> 0 +shlx66 shiftleft 0 66 -> 0 +shlx67 shiftleft 0 67 -> 0 +shlx68 shiftleft 0 68 -> 0 +shlx69 shiftleft 0 69 -> 0 +shlx70 shiftleft 0 70 -> 0 +shlx71 shiftleft 0 71 -> 0 +shlx72 shiftleft 0 72 -> 0 +shlx73 shiftleft 0 73 -> 0 +shlx74 shiftleft 0 74 -> 0 +shlx75 shiftleft 0 75 -> 0 +shlx76 shiftleft 0 76 -> 0 +shlx77 shiftleft 0 77 -> 0 +shlx78 shiftleft 0 78 -> 0 +shlx79 shiftleft 0 79 -> 0 +shlx80 shiftleft 0 80 -> 0 +shlx81 shiftleft 0 81 -> 0 +shlx82 shiftleft 0 82 -> 0 +shlx83 shiftleft 0 83 -> 0 +shlx84 shiftleft 0 84 -> 0 +shlx85 shiftleft 0 85 -> 0 +shlx86 shiftleft 0 86 -> 0 +shlx87 shiftleft 0 87 -> 0 +shlx88 shiftleft 0 88 -> 0 +shlx89 shiftleft 0 89 -> 0 +shlx90 shiftleft 0 90 -> 0 +shlx91 shiftleft 0 91 -> 0 +shlx92 shiftleft 0 92 -> 0 +shlx93 shiftleft 0 93 -> 0 +shlx94 shiftleft 0 94 -> 0 +shlx95 shiftleft 0 95 -> 0 +shlx96 shiftleft 0 96 -> 0 +shlx97 shiftleft 0 97 -> 0 +shlx98 shiftleft 0 98 -> 0 +shlx99 shiftleft 0 99 -> 0 +shlx100 shiftleft 1 0 -> 1 +shlx101 shiftleft 1 1 -> 10 +shlx102 shiftleft 1 2 -> 100 +shlx103 shiftleft 1 3 -> 1000 +shlx104 shiftleft 1 4 -> 10000 +shlx105 shiftleft 1 5 -> 100000 +shlx106 shiftleft 1 6 -> 1000000 +shlx107 shiftleft 1 7 -> 10000000 +shlx108 shiftleft 1 8 -> 100000000 +shlx109 shiftleft 1 9 -> 1000000000 +shlx110 shiftleft 1 10 -> 10000000000 +shlx111 shiftleft 1 11 -> 100000000000 +shlx112 shiftleft 1 12 -> 1000000000000 +shlx113 shiftleft 1 13 -> 10000000000000 +shlx114 shiftleft 1 14 -> 100000000000000 +shlx115 shiftleft 1 15 -> 1000000000000000 +shlx116 shiftleft 1 16 -> 10000000000000000 +shlx117 shiftleft 1 17 -> 100000000000000000 +shlx118 shiftleft 1 18 -> 1000000000000000000 +shlx119 shiftleft 1 19 -> 10000000000000000000 +shlx120 shiftleft 1 20 -> 100000000000000000000 +shlx121 shiftleft 1 21 -> 1000000000000000000000 +shlx122 shiftleft 1 22 -> 10000000000000000000000 +shlx123 shiftleft 1 23 -> 100000000000000000000000 +shlx124 shiftleft 1 24 -> 1000000000000000000000000 +shlx125 shiftleft 1 25 -> 10000000000000000000000000 +shlx126 shiftleft 1 26 -> 100000000000000000000000000 +shlx127 shiftleft 1 27 -> 1000000000000000000000000000 +shlx128 shiftleft 1 28 -> 10000000000000000000000000000 +shlx129 shiftleft 1 29 -> 100000000000000000000000000000 +shlx130 shiftleft 1 30 -> 1000000000000000000000000000000 +shlx131 shiftleft 1 31 -> 10000000000000000000000000000000 +shlx132 shiftleft 1 32 -> 100000000000000000000000000000000 +shlx133 shiftleft 1 33 -> 1000000000000000000000000000000000 +shlx134 shiftleft 1 34 -> 10000000000000000000000000000000000 +shlx135 shiftleft 1 35 -> 100000000000000000000000000000000000 +shlx136 shiftleft 1 36 -> 1000000000000000000000000000000000000 +shlx137 shiftleft 1 37 -> 10000000000000000000000000000000000000 +shlx138 shiftleft 1 38 -> 100000000000000000000000000000000000000 +shlx139 shiftleft 1 39 -> 1000000000000000000000000000000000000000 +shlx140 shiftleft 1 40 -> 10000000000000000000000000000000000000000 +shlx141 shiftleft 1 41 -> 100000000000000000000000000000000000000000 +shlx142 shiftleft 1 42 -> 1000000000000000000000000000000000000000000 +shlx143 shiftleft 1 43 -> 10000000000000000000000000000000000000000000 +shlx144 shiftleft 1 44 -> 100000000000000000000000000000000000000000000 +shlx145 shiftleft 1 45 -> 1000000000000000000000000000000000000000000000 +shlx146 shiftleft 1 46 -> 10000000000000000000000000000000000000000000000 +shlx147 shiftleft 1 47 -> 100000000000000000000000000000000000000000000000 +shlx148 shiftleft 1 48 -> 1000000000000000000000000000000000000000000000000 +shlx149 shiftleft 1 49 -> 10000000000000000000000000000000000000000000000000 +shlx150 shiftleft 1 50 -> 100000000000000000000000000000000000000000000000000 +shlx151 shiftleft 1 51 -> 1000000000000000000000000000000000000000000000000000 +shlx152 shiftleft 1 52 -> 10000000000000000000000000000000000000000000000000000 +shlx153 shiftleft 1 53 -> 100000000000000000000000000000000000000000000000000000 +shlx154 shiftleft 1 54 -> 1000000000000000000000000000000000000000000000000000000 +shlx155 shiftleft 1 55 -> 10000000000000000000000000000000000000000000000000000000 +shlx156 shiftleft 1 56 -> 100000000000000000000000000000000000000000000000000000000 +shlx157 shiftleft 1 57 -> 1000000000000000000000000000000000000000000000000000000000 +shlx158 shiftleft 1 58 -> 10000000000000000000000000000000000000000000000000000000000 +shlx159 shiftleft 1 59 -> 100000000000000000000000000000000000000000000000000000000000 +shlx160 shiftleft 1 60 -> 1000000000000000000000000000000000000000000000000000000000000 +shlx161 shiftleft 1 61 -> 10000000000000000000000000000000000000000000000000000000000000 +shlx162 shiftleft 1 62 -> 100000000000000000000000000000000000000000000000000000000000000 +shlx163 shiftleft 1 63 -> 1000000000000000000000000000000000000000000000000000000000000000 +shlx164 shiftleft 1 64 -> 10000000000000000000000000000000000000000000000000000000000000000 +shlx165 shiftleft 1 65 -> 100000000000000000000000000000000000000000000000000000000000000000 +shlx166 shiftleft 1 66 -> 1000000000000000000000000000000000000000000000000000000000000000000 +shlx167 shiftleft 1 67 -> 10000000000000000000000000000000000000000000000000000000000000000000 +shlx168 shiftleft 1 68 -> 100000000000000000000000000000000000000000000000000000000000000000000 +shlx169 shiftleft 1 69 -> 1000000000000000000000000000000000000000000000000000000000000000000000 +shlx170 shiftleft 1 70 -> 10000000000000000000000000000000000000000000000000000000000000000000000 +shlx171 shiftleft 1 71 -> 100000000000000000000000000000000000000000000000000000000000000000000000 +shlx172 shiftleft 1 72 -> 1000000000000000000000000000000000000000000000000000000000000000000000000 +shlx173 shiftleft 1 73 -> 10000000000000000000000000000000000000000000000000000000000000000000000000 +shlx174 shiftleft 1 74 -> 100000000000000000000000000000000000000000000000000000000000000000000000000 +shlx175 shiftleft 1 75 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx176 shiftleft 1 76 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx177 shiftleft 1 77 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx178 shiftleft 1 78 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx179 shiftleft 1 79 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx180 shiftleft 1 80 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx181 shiftleft 1 81 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx182 shiftleft 1 82 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx183 shiftleft 1 83 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx184 shiftleft 1 84 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx185 shiftleft 1 85 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx186 shiftleft 1 86 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx187 shiftleft 1 87 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx188 shiftleft 1 88 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx189 shiftleft 1 89 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx190 shiftleft 1 90 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx191 shiftleft 1 91 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx192 shiftleft 1 92 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx193 shiftleft 1 93 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx194 shiftleft 1 94 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx195 shiftleft 1 95 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx196 shiftleft 1 96 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx197 shiftleft 1 97 -> 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx198 shiftleft 1 98 -> 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx199 shiftleft 1 99 -> 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx200 shiftleft 12 0 -> 12 +shlx201 shiftleft 12 1 -> 120 +shlx202 shiftleft 12 2 -> 1200 +shlx203 shiftleft 12 3 -> 12000 +shlx204 shiftleft 12 4 -> 120000 +shlx205 shiftleft 12 5 -> 1200000 +shlx206 shiftleft 12 6 -> 12000000 +shlx207 shiftleft 12 7 -> 120000000 +shlx208 shiftleft 12 8 -> 1200000000 +shlx209 shiftleft 12 9 -> 12000000000 +shlx210 shiftleft 12 10 -> 120000000000 +shlx211 shiftleft 12 11 -> 1200000000000 +shlx212 shiftleft 12 12 -> 12000000000000 +shlx213 shiftleft 12 13 -> 120000000000000 +shlx214 shiftleft 12 14 -> 1200000000000000 +shlx215 shiftleft 12 15 -> 12000000000000000 +shlx216 shiftleft 12 16 -> 120000000000000000 +shlx217 shiftleft 12 17 -> 1200000000000000000 +shlx218 shiftleft 12 18 -> 12000000000000000000 +shlx219 shiftleft 12 19 -> 120000000000000000000 +shlx220 shiftleft 12 20 -> 1200000000000000000000 +shlx221 shiftleft 12 21 -> 12000000000000000000000 +shlx222 shiftleft 12 22 -> 120000000000000000000000 +shlx223 shiftleft 12 23 -> 1200000000000000000000000 +shlx224 shiftleft 12 24 -> 12000000000000000000000000 +shlx225 shiftleft 12 25 -> 120000000000000000000000000 +shlx226 shiftleft 12 26 -> 1200000000000000000000000000 +shlx227 shiftleft 12 27 -> 12000000000000000000000000000 +shlx228 shiftleft 12 28 -> 120000000000000000000000000000 +shlx229 shiftleft 12 29 -> 1200000000000000000000000000000 +shlx230 shiftleft 12 30 -> 12000000000000000000000000000000 +shlx231 shiftleft 12 31 -> 120000000000000000000000000000000 +shlx232 shiftleft 12 32 -> 1200000000000000000000000000000000 +shlx233 shiftleft 12 33 -> 12000000000000000000000000000000000 +shlx234 shiftleft 12 34 -> 120000000000000000000000000000000000 +shlx235 shiftleft 12 35 -> 1200000000000000000000000000000000000 +shlx236 shiftleft 12 36 -> 12000000000000000000000000000000000000 +shlx237 shiftleft 12 37 -> 120000000000000000000000000000000000000 +shlx238 shiftleft 12 38 -> 1200000000000000000000000000000000000000 +shlx239 shiftleft 12 39 -> 12000000000000000000000000000000000000000 +shlx240 shiftleft 12 40 -> 120000000000000000000000000000000000000000 +shlx241 shiftleft 12 41 -> 1200000000000000000000000000000000000000000 +shlx242 shiftleft 12 42 -> 12000000000000000000000000000000000000000000 +shlx243 shiftleft 12 43 -> 120000000000000000000000000000000000000000000 +shlx244 shiftleft 12 44 -> 1200000000000000000000000000000000000000000000 +shlx245 shiftleft 12 45 -> 12000000000000000000000000000000000000000000000 +shlx246 shiftleft 12 46 -> 120000000000000000000000000000000000000000000000 +shlx247 shiftleft 12 47 -> 1200000000000000000000000000000000000000000000000 +shlx248 shiftleft 12 48 -> 12000000000000000000000000000000000000000000000000 +shlx249 shiftleft 12 49 -> 120000000000000000000000000000000000000000000000000 +shlx250 shiftleft 12 50 -> 1200000000000000000000000000000000000000000000000000 +shlx251 shiftleft 12 51 -> 12000000000000000000000000000000000000000000000000000 +shlx252 shiftleft 12 52 -> 120000000000000000000000000000000000000000000000000000 +shlx253 shiftleft 12 53 -> 1200000000000000000000000000000000000000000000000000000 +shlx254 shiftleft 12 54 -> 12000000000000000000000000000000000000000000000000000000 +shlx255 shiftleft 12 55 -> 120000000000000000000000000000000000000000000000000000000 +shlx256 shiftleft 12 56 -> 1200000000000000000000000000000000000000000000000000000000 +shlx257 shiftleft 12 57 -> 12000000000000000000000000000000000000000000000000000000000 +shlx258 shiftleft 12 58 -> 120000000000000000000000000000000000000000000000000000000000 +shlx259 shiftleft 12 59 -> 1200000000000000000000000000000000000000000000000000000000000 +shlx260 shiftleft 12 60 -> 12000000000000000000000000000000000000000000000000000000000000 +shlx261 shiftleft 12 61 -> 120000000000000000000000000000000000000000000000000000000000000 +shlx262 shiftleft 12 62 -> 1200000000000000000000000000000000000000000000000000000000000000 +shlx263 shiftleft 12 63 -> 12000000000000000000000000000000000000000000000000000000000000000 +shlx264 shiftleft 12 64 -> 120000000000000000000000000000000000000000000000000000000000000000 +shlx265 shiftleft 12 65 -> 1200000000000000000000000000000000000000000000000000000000000000000 +shlx266 shiftleft 12 66 -> 12000000000000000000000000000000000000000000000000000000000000000000 +shlx267 shiftleft 12 67 -> 120000000000000000000000000000000000000000000000000000000000000000000 +shlx268 shiftleft 12 68 -> 1200000000000000000000000000000000000000000000000000000000000000000000 +shlx269 shiftleft 12 69 -> 12000000000000000000000000000000000000000000000000000000000000000000000 +shlx270 shiftleft 12 70 -> 120000000000000000000000000000000000000000000000000000000000000000000000 +shlx271 shiftleft 12 71 -> 1200000000000000000000000000000000000000000000000000000000000000000000000 +shlx272 shiftleft 12 72 -> 12000000000000000000000000000000000000000000000000000000000000000000000000 +shlx273 shiftleft 12 73 -> 120000000000000000000000000000000000000000000000000000000000000000000000000 +shlx274 shiftleft 12 74 -> 1200000000000000000000000000000000000000000000000000000000000000000000000000 +shlx275 shiftleft 12 75 -> 12000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx276 shiftleft 12 76 -> 120000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx277 shiftleft 12 77 -> 1200000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx278 shiftleft 12 78 -> 12000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx279 shiftleft 12 79 -> 120000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx280 shiftleft 12 80 -> 1200000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx281 shiftleft 12 81 -> 12000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx282 shiftleft 12 82 -> 120000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx283 shiftleft 12 83 -> 1200000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx284 shiftleft 12 84 -> 12000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx285 shiftleft 12 85 -> 120000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx286 shiftleft 12 86 -> 1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx287 shiftleft 12 87 -> 12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx288 shiftleft 12 88 -> 120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx289 shiftleft 12 89 -> 1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx290 shiftleft 12 90 -> 12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx291 shiftleft 12 91 -> 120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx292 shiftleft 12 92 -> 1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx293 shiftleft 12 93 -> 12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx294 shiftleft 12 94 -> 120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx295 shiftleft 12 95 -> 1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx296 shiftleft 12 96 -> 12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx297 shiftleft 12 97 -> 120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx298 shiftleft 12 98 -> 1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx299 shiftleft 12 99 -> 12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx300 shiftleft 123 0 -> 123 +shlx301 shiftleft 123 1 -> 1230 +shlx302 shiftleft 123 2 -> 12300 +shlx303 shiftleft 123 3 -> 123000 +shlx304 shiftleft 123 4 -> 1230000 +shlx305 shiftleft 123 5 -> 12300000 +shlx306 shiftleft 123 6 -> 123000000 +shlx307 shiftleft 123 7 -> 1230000000 +shlx308 shiftleft 123 8 -> 12300000000 +shlx309 shiftleft 123 9 -> 123000000000 +shlx310 shiftleft 123 10 -> 1230000000000 +shlx311 shiftleft 123 11 -> 12300000000000 +shlx312 shiftleft 123 12 -> 123000000000000 +shlx313 shiftleft 123 13 -> 1230000000000000 +shlx314 shiftleft 123 14 -> 12300000000000000 +shlx315 shiftleft 123 15 -> 123000000000000000 +shlx316 shiftleft 123 16 -> 1230000000000000000 +shlx317 shiftleft 123 17 -> 12300000000000000000 +shlx318 shiftleft 123 18 -> 123000000000000000000 +shlx319 shiftleft 123 19 -> 1230000000000000000000 +shlx320 shiftleft 123 20 -> 12300000000000000000000 +shlx321 shiftleft 123 21 -> 123000000000000000000000 +shlx322 shiftleft 123 22 -> 1230000000000000000000000 +shlx323 shiftleft 123 23 -> 12300000000000000000000000 +shlx324 shiftleft 123 24 -> 123000000000000000000000000 +shlx325 shiftleft 123 25 -> 1230000000000000000000000000 +shlx326 shiftleft 123 26 -> 12300000000000000000000000000 +shlx327 shiftleft 123 27 -> 123000000000000000000000000000 +shlx328 shiftleft 123 28 -> 1230000000000000000000000000000 +shlx329 shiftleft 123 29 -> 12300000000000000000000000000000 +shlx330 shiftleft 123 30 -> 123000000000000000000000000000000 +shlx331 shiftleft 123 31 -> 1230000000000000000000000000000000 +shlx332 shiftleft 123 32 -> 12300000000000000000000000000000000 +shlx333 shiftleft 123 33 -> 123000000000000000000000000000000000 +shlx334 shiftleft 123 34 -> 1230000000000000000000000000000000000 +shlx335 shiftleft 123 35 -> 12300000000000000000000000000000000000 +shlx336 shiftleft 123 36 -> 123000000000000000000000000000000000000 +shlx337 shiftleft 123 37 -> 1230000000000000000000000000000000000000 +shlx338 shiftleft 123 38 -> 12300000000000000000000000000000000000000 +shlx339 shiftleft 123 39 -> 123000000000000000000000000000000000000000 +shlx340 shiftleft 123 40 -> 1230000000000000000000000000000000000000000 +shlx341 shiftleft 123 41 -> 12300000000000000000000000000000000000000000 +shlx342 shiftleft 123 42 -> 123000000000000000000000000000000000000000000 +shlx343 shiftleft 123 43 -> 1230000000000000000000000000000000000000000000 +shlx344 shiftleft 123 44 -> 12300000000000000000000000000000000000000000000 +shlx345 shiftleft 123 45 -> 123000000000000000000000000000000000000000000000 +shlx346 shiftleft 123 46 -> 1230000000000000000000000000000000000000000000000 +shlx347 shiftleft 123 47 -> 12300000000000000000000000000000000000000000000000 +shlx348 shiftleft 123 48 -> 123000000000000000000000000000000000000000000000000 +shlx349 shiftleft 123 49 -> 1230000000000000000000000000000000000000000000000000 +shlx350 shiftleft 123 50 -> 12300000000000000000000000000000000000000000000000000 +shlx351 shiftleft 123 51 -> 123000000000000000000000000000000000000000000000000000 +shlx352 shiftleft 123 52 -> 1230000000000000000000000000000000000000000000000000000 +shlx353 shiftleft 123 53 -> 12300000000000000000000000000000000000000000000000000000 +shlx354 shiftleft 123 54 -> 123000000000000000000000000000000000000000000000000000000 +shlx355 shiftleft 123 55 -> 1230000000000000000000000000000000000000000000000000000000 +shlx356 shiftleft 123 56 -> 12300000000000000000000000000000000000000000000000000000000 +shlx357 shiftleft 123 57 -> 123000000000000000000000000000000000000000000000000000000000 +shlx358 shiftleft 123 58 -> 1230000000000000000000000000000000000000000000000000000000000 +shlx359 shiftleft 123 59 -> 12300000000000000000000000000000000000000000000000000000000000 +shlx360 shiftleft 123 60 -> 123000000000000000000000000000000000000000000000000000000000000 +shlx361 shiftleft 123 61 -> 1230000000000000000000000000000000000000000000000000000000000000 +shlx362 shiftleft 123 62 -> 12300000000000000000000000000000000000000000000000000000000000000 +shlx363 shiftleft 123 63 -> 123000000000000000000000000000000000000000000000000000000000000000 +shlx364 shiftleft 123 64 -> 1230000000000000000000000000000000000000000000000000000000000000000 +shlx365 shiftleft 123 65 -> 12300000000000000000000000000000000000000000000000000000000000000000 +shlx366 shiftleft 123 66 -> 123000000000000000000000000000000000000000000000000000000000000000000 +shlx367 shiftleft 123 67 -> 1230000000000000000000000000000000000000000000000000000000000000000000 +shlx368 shiftleft 123 68 -> 12300000000000000000000000000000000000000000000000000000000000000000000 +shlx369 shiftleft 123 69 -> 123000000000000000000000000000000000000000000000000000000000000000000000 +shlx370 shiftleft 123 70 -> 1230000000000000000000000000000000000000000000000000000000000000000000000 +shlx371 shiftleft 123 71 -> 12300000000000000000000000000000000000000000000000000000000000000000000000 +shlx372 shiftleft 123 72 -> 123000000000000000000000000000000000000000000000000000000000000000000000000 +shlx373 shiftleft 123 73 -> 1230000000000000000000000000000000000000000000000000000000000000000000000000 +shlx374 shiftleft 123 74 -> 12300000000000000000000000000000000000000000000000000000000000000000000000000 +shlx375 shiftleft 123 75 -> 123000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx376 shiftleft 123 76 -> 1230000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx377 shiftleft 123 77 -> 12300000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx378 shiftleft 123 78 -> 123000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx379 shiftleft 123 79 -> 1230000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx380 shiftleft 123 80 -> 12300000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx381 shiftleft 123 81 -> 123000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx382 shiftleft 123 82 -> 1230000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx383 shiftleft 123 83 -> 12300000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx384 shiftleft 123 84 -> 123000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx385 shiftleft 123 85 -> 1230000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx386 shiftleft 123 86 -> 12300000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx387 shiftleft 123 87 -> 123000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx388 shiftleft 123 88 -> 1230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx389 shiftleft 123 89 -> 12300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx390 shiftleft 123 90 -> 123000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx391 shiftleft 123 91 -> 1230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx392 shiftleft 123 92 -> 12300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx393 shiftleft 123 93 -> 123000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx394 shiftleft 123 94 -> 1230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx395 shiftleft 123 95 -> 12300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx396 shiftleft 123 96 -> 123000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx397 shiftleft 123 97 -> 1230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx398 shiftleft 123 98 -> 12300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx399 shiftleft 123 99 -> 123000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx400 shiftleft 1234 0 -> 1234 +shlx401 shiftleft 1234 1 -> 12340 +shlx402 shiftleft 1234 2 -> 123400 +shlx403 shiftleft 1234 3 -> 1234000 +shlx404 shiftleft 1234 4 -> 12340000 +shlx405 shiftleft 1234 5 -> 123400000 +shlx406 shiftleft 1234 6 -> 1234000000 +shlx407 shiftleft 1234 7 -> 12340000000 +shlx408 shiftleft 1234 8 -> 123400000000 +shlx409 shiftleft 1234 9 -> 1234000000000 +shlx410 shiftleft 1234 10 -> 12340000000000 +shlx411 shiftleft 1234 11 -> 123400000000000 +shlx412 shiftleft 1234 12 -> 1234000000000000 +shlx413 shiftleft 1234 13 -> 12340000000000000 +shlx414 shiftleft 1234 14 -> 123400000000000000 +shlx415 shiftleft 1234 15 -> 1234000000000000000 +shlx416 shiftleft 1234 16 -> 12340000000000000000 +shlx417 shiftleft 1234 17 -> 123400000000000000000 +shlx418 shiftleft 1234 18 -> 1234000000000000000000 +shlx419 shiftleft 1234 19 -> 12340000000000000000000 +shlx420 shiftleft 1234 20 -> 123400000000000000000000 +shlx421 shiftleft 1234 21 -> 1234000000000000000000000 +shlx422 shiftleft 1234 22 -> 12340000000000000000000000 +shlx423 shiftleft 1234 23 -> 123400000000000000000000000 +shlx424 shiftleft 1234 24 -> 1234000000000000000000000000 +shlx425 shiftleft 1234 25 -> 12340000000000000000000000000 +shlx426 shiftleft 1234 26 -> 123400000000000000000000000000 +shlx427 shiftleft 1234 27 -> 1234000000000000000000000000000 +shlx428 shiftleft 1234 28 -> 12340000000000000000000000000000 +shlx429 shiftleft 1234 29 -> 123400000000000000000000000000000 +shlx430 shiftleft 1234 30 -> 1234000000000000000000000000000000 +shlx431 shiftleft 1234 31 -> 12340000000000000000000000000000000 +shlx432 shiftleft 1234 32 -> 123400000000000000000000000000000000 +shlx433 shiftleft 1234 33 -> 1234000000000000000000000000000000000 +shlx434 shiftleft 1234 34 -> 12340000000000000000000000000000000000 +shlx435 shiftleft 1234 35 -> 123400000000000000000000000000000000000 +shlx436 shiftleft 1234 36 -> 1234000000000000000000000000000000000000 +shlx437 shiftleft 1234 37 -> 12340000000000000000000000000000000000000 +shlx438 shiftleft 1234 38 -> 123400000000000000000000000000000000000000 +shlx439 shiftleft 1234 39 -> 1234000000000000000000000000000000000000000 +shlx440 shiftleft 1234 40 -> 12340000000000000000000000000000000000000000 +shlx441 shiftleft 1234 41 -> 123400000000000000000000000000000000000000000 +shlx442 shiftleft 1234 42 -> 1234000000000000000000000000000000000000000000 +shlx443 shiftleft 1234 43 -> 12340000000000000000000000000000000000000000000 +shlx444 shiftleft 1234 44 -> 123400000000000000000000000000000000000000000000 +shlx445 shiftleft 1234 45 -> 1234000000000000000000000000000000000000000000000 +shlx446 shiftleft 1234 46 -> 12340000000000000000000000000000000000000000000000 +shlx447 shiftleft 1234 47 -> 123400000000000000000000000000000000000000000000000 +shlx448 shiftleft 1234 48 -> 1234000000000000000000000000000000000000000000000000 +shlx449 shiftleft 1234 49 -> 12340000000000000000000000000000000000000000000000000 +shlx450 shiftleft 1234 50 -> 123400000000000000000000000000000000000000000000000000 +shlx451 shiftleft 1234 51 -> 1234000000000000000000000000000000000000000000000000000 +shlx452 shiftleft 1234 52 -> 12340000000000000000000000000000000000000000000000000000 +shlx453 shiftleft 1234 53 -> 123400000000000000000000000000000000000000000000000000000 +shlx454 shiftleft 1234 54 -> 1234000000000000000000000000000000000000000000000000000000 +shlx455 shiftleft 1234 55 -> 12340000000000000000000000000000000000000000000000000000000 +shlx456 shiftleft 1234 56 -> 123400000000000000000000000000000000000000000000000000000000 +shlx457 shiftleft 1234 57 -> 1234000000000000000000000000000000000000000000000000000000000 +shlx458 shiftleft 1234 58 -> 12340000000000000000000000000000000000000000000000000000000000 +shlx459 shiftleft 1234 59 -> 123400000000000000000000000000000000000000000000000000000000000 +shlx460 shiftleft 1234 60 -> 1234000000000000000000000000000000000000000000000000000000000000 +shlx461 shiftleft 1234 61 -> 12340000000000000000000000000000000000000000000000000000000000000 +shlx462 shiftleft 1234 62 -> 123400000000000000000000000000000000000000000000000000000000000000 +shlx463 shiftleft 1234 63 -> 1234000000000000000000000000000000000000000000000000000000000000000 +shlx464 shiftleft 1234 64 -> 12340000000000000000000000000000000000000000000000000000000000000000 +shlx465 shiftleft 1234 65 -> 123400000000000000000000000000000000000000000000000000000000000000000 +shlx466 shiftleft 1234 66 -> 1234000000000000000000000000000000000000000000000000000000000000000000 +shlx467 shiftleft 1234 67 -> 12340000000000000000000000000000000000000000000000000000000000000000000 +shlx468 shiftleft 1234 68 -> 123400000000000000000000000000000000000000000000000000000000000000000000 +shlx469 shiftleft 1234 69 -> 1234000000000000000000000000000000000000000000000000000000000000000000000 +shlx470 shiftleft 1234 70 -> 12340000000000000000000000000000000000000000000000000000000000000000000000 +shlx471 shiftleft 1234 71 -> 123400000000000000000000000000000000000000000000000000000000000000000000000 +shlx472 shiftleft 1234 72 -> 1234000000000000000000000000000000000000000000000000000000000000000000000000 +shlx473 shiftleft 1234 73 -> 12340000000000000000000000000000000000000000000000000000000000000000000000000 +shlx474 shiftleft 1234 74 -> 123400000000000000000000000000000000000000000000000000000000000000000000000000 +shlx475 shiftleft 1234 75 -> 1234000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx476 shiftleft 1234 76 -> 12340000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx477 shiftleft 1234 77 -> 123400000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx478 shiftleft 1234 78 -> 1234000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx479 shiftleft 1234 79 -> 12340000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx480 shiftleft 1234 80 -> 123400000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx481 shiftleft 1234 81 -> 1234000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx482 shiftleft 1234 82 -> 12340000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx483 shiftleft 1234 83 -> 123400000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx484 shiftleft 1234 84 -> 1234000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx485 shiftleft 1234 85 -> 12340000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx486 shiftleft 1234 86 -> 123400000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx487 shiftleft 1234 87 -> 1234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx488 shiftleft 1234 88 -> 12340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx489 shiftleft 1234 89 -> 123400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx490 shiftleft 1234 90 -> 1234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx491 shiftleft 1234 91 -> 12340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx492 shiftleft 1234 92 -> 123400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx493 shiftleft 1234 93 -> 1234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx494 shiftleft 1234 94 -> 12340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx495 shiftleft 1234 95 -> 123400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx496 shiftleft 1234 96 -> 1234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx497 shiftleft 1234 97 -> 12340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx498 shiftleft 1234 98 -> 123400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx499 shiftleft 1234 99 -> 1234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx500 shiftleft 12345 0 -> 12345 +shlx501 shiftleft 12345 1 -> 123450 +shlx502 shiftleft 12345 2 -> 1234500 +shlx503 shiftleft 12345 3 -> 12345000 +shlx504 shiftleft 12345 4 -> 123450000 +shlx505 shiftleft 12345 5 -> 1234500000 +shlx506 shiftleft 12345 6 -> 12345000000 +shlx507 shiftleft 12345 7 -> 123450000000 +shlx508 shiftleft 12345 8 -> 1234500000000 +shlx509 shiftleft 12345 9 -> 12345000000000 +shlx510 shiftleft 12345 10 -> 123450000000000 +shlx511 shiftleft 12345 11 -> 1234500000000000 +shlx512 shiftleft 12345 12 -> 12345000000000000 +shlx513 shiftleft 12345 13 -> 123450000000000000 +shlx514 shiftleft 12345 14 -> 1234500000000000000 +shlx515 shiftleft 12345 15 -> 12345000000000000000 +shlx516 shiftleft 12345 16 -> 123450000000000000000 +shlx517 shiftleft 12345 17 -> 1234500000000000000000 +shlx518 shiftleft 12345 18 -> 12345000000000000000000 +shlx519 shiftleft 12345 19 -> 123450000000000000000000 +shlx520 shiftleft 12345 20 -> 1234500000000000000000000 +shlx521 shiftleft 12345 21 -> 12345000000000000000000000 +shlx522 shiftleft 12345 22 -> 123450000000000000000000000 +shlx523 shiftleft 12345 23 -> 1234500000000000000000000000 +shlx524 shiftleft 12345 24 -> 12345000000000000000000000000 +shlx525 shiftleft 12345 25 -> 123450000000000000000000000000 +shlx526 shiftleft 12345 26 -> 1234500000000000000000000000000 +shlx527 shiftleft 12345 27 -> 12345000000000000000000000000000 +shlx528 shiftleft 12345 28 -> 123450000000000000000000000000000 +shlx529 shiftleft 12345 29 -> 1234500000000000000000000000000000 +shlx530 shiftleft 12345 30 -> 12345000000000000000000000000000000 +shlx531 shiftleft 12345 31 -> 123450000000000000000000000000000000 +shlx532 shiftleft 12345 32 -> 1234500000000000000000000000000000000 +shlx533 shiftleft 12345 33 -> 12345000000000000000000000000000000000 +shlx534 shiftleft 12345 34 -> 123450000000000000000000000000000000000 +shlx535 shiftleft 12345 35 -> 1234500000000000000000000000000000000000 +shlx536 shiftleft 12345 36 -> 12345000000000000000000000000000000000000 +shlx537 shiftleft 12345 37 -> 123450000000000000000000000000000000000000 +shlx538 shiftleft 12345 38 -> 1234500000000000000000000000000000000000000 +shlx539 shiftleft 12345 39 -> 12345000000000000000000000000000000000000000 +shlx540 shiftleft 12345 40 -> 123450000000000000000000000000000000000000000 +shlx541 shiftleft 12345 41 -> 1234500000000000000000000000000000000000000000 +shlx542 shiftleft 12345 42 -> 12345000000000000000000000000000000000000000000 +shlx543 shiftleft 12345 43 -> 123450000000000000000000000000000000000000000000 +shlx544 shiftleft 12345 44 -> 1234500000000000000000000000000000000000000000000 +shlx545 shiftleft 12345 45 -> 12345000000000000000000000000000000000000000000000 +shlx546 shiftleft 12345 46 -> 123450000000000000000000000000000000000000000000000 +shlx547 shiftleft 12345 47 -> 1234500000000000000000000000000000000000000000000000 +shlx548 shiftleft 12345 48 -> 12345000000000000000000000000000000000000000000000000 +shlx549 shiftleft 12345 49 -> 123450000000000000000000000000000000000000000000000000 +shlx550 shiftleft 12345 50 -> 1234500000000000000000000000000000000000000000000000000 +shlx551 shiftleft 12345 51 -> 12345000000000000000000000000000000000000000000000000000 +shlx552 shiftleft 12345 52 -> 123450000000000000000000000000000000000000000000000000000 +shlx553 shiftleft 12345 53 -> 1234500000000000000000000000000000000000000000000000000000 +shlx554 shiftleft 12345 54 -> 12345000000000000000000000000000000000000000000000000000000 +shlx555 shiftleft 12345 55 -> 123450000000000000000000000000000000000000000000000000000000 +shlx556 shiftleft 12345 56 -> 1234500000000000000000000000000000000000000000000000000000000 +shlx557 shiftleft 12345 57 -> 12345000000000000000000000000000000000000000000000000000000000 +shlx558 shiftleft 12345 58 -> 123450000000000000000000000000000000000000000000000000000000000 +shlx559 shiftleft 12345 59 -> 1234500000000000000000000000000000000000000000000000000000000000 +shlx560 shiftleft 12345 60 -> 12345000000000000000000000000000000000000000000000000000000000000 +shlx561 shiftleft 12345 61 -> 123450000000000000000000000000000000000000000000000000000000000000 +shlx562 shiftleft 12345 62 -> 1234500000000000000000000000000000000000000000000000000000000000000 +shlx563 shiftleft 12345 63 -> 12345000000000000000000000000000000000000000000000000000000000000000 +shlx564 shiftleft 12345 64 -> 123450000000000000000000000000000000000000000000000000000000000000000 +shlx565 shiftleft 12345 65 -> 1234500000000000000000000000000000000000000000000000000000000000000000 +shlx566 shiftleft 12345 66 -> 12345000000000000000000000000000000000000000000000000000000000000000000 +shlx567 shiftleft 12345 67 -> 123450000000000000000000000000000000000000000000000000000000000000000000 +shlx568 shiftleft 12345 68 -> 1234500000000000000000000000000000000000000000000000000000000000000000000 +shlx569 shiftleft 12345 69 -> 12345000000000000000000000000000000000000000000000000000000000000000000000 +shlx570 shiftleft 12345 70 -> 123450000000000000000000000000000000000000000000000000000000000000000000000 +shlx571 shiftleft 12345 71 -> 1234500000000000000000000000000000000000000000000000000000000000000000000000 +shlx572 shiftleft 12345 72 -> 12345000000000000000000000000000000000000000000000000000000000000000000000000 +shlx573 shiftleft 12345 73 -> 123450000000000000000000000000000000000000000000000000000000000000000000000000 +shlx574 shiftleft 12345 74 -> 1234500000000000000000000000000000000000000000000000000000000000000000000000000 +shlx575 shiftleft 12345 75 -> 12345000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx576 shiftleft 12345 76 -> 123450000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx577 shiftleft 12345 77 -> 1234500000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx578 shiftleft 12345 78 -> 12345000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx579 shiftleft 12345 79 -> 123450000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx580 shiftleft 12345 80 -> 1234500000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx581 shiftleft 12345 81 -> 12345000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx582 shiftleft 12345 82 -> 123450000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx583 shiftleft 12345 83 -> 1234500000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx584 shiftleft 12345 84 -> 12345000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx585 shiftleft 12345 85 -> 123450000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx586 shiftleft 12345 86 -> 1234500000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx587 shiftleft 12345 87 -> 12345000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx588 shiftleft 12345 88 -> 123450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx589 shiftleft 12345 89 -> 1234500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx590 shiftleft 12345 90 -> 12345000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx591 shiftleft 12345 91 -> 123450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx592 shiftleft 12345 92 -> 1234500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx593 shiftleft 12345 93 -> 12345000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx594 shiftleft 12345 94 -> 123450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx595 shiftleft 12345 95 -> 1234500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx596 shiftleft 12345 96 -> 12345000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx597 shiftleft 12345 97 -> 123450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx598 shiftleft 12345 98 -> 1234500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx599 shiftleft 12345 99 -> 12345000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx600 shiftleft 123456 0 -> 123456 +shlx601 shiftleft 123456 1 -> 1234560 +shlx602 shiftleft 123456 2 -> 12345600 +shlx603 shiftleft 123456 3 -> 123456000 +shlx604 shiftleft 123456 4 -> 1234560000 +shlx605 shiftleft 123456 5 -> 12345600000 +shlx606 shiftleft 123456 6 -> 123456000000 +shlx607 shiftleft 123456 7 -> 1234560000000 +shlx608 shiftleft 123456 8 -> 12345600000000 +shlx609 shiftleft 123456 9 -> 123456000000000 +shlx610 shiftleft 123456 10 -> 1234560000000000 +shlx611 shiftleft 123456 11 -> 12345600000000000 +shlx612 shiftleft 123456 12 -> 123456000000000000 +shlx613 shiftleft 123456 13 -> 1234560000000000000 +shlx614 shiftleft 123456 14 -> 12345600000000000000 +shlx615 shiftleft 123456 15 -> 123456000000000000000 +shlx616 shiftleft 123456 16 -> 1234560000000000000000 +shlx617 shiftleft 123456 17 -> 12345600000000000000000 +shlx618 shiftleft 123456 18 -> 123456000000000000000000 +shlx619 shiftleft 123456 19 -> 1234560000000000000000000 +shlx620 shiftleft 123456 20 -> 12345600000000000000000000 +shlx621 shiftleft 123456 21 -> 123456000000000000000000000 +shlx622 shiftleft 123456 22 -> 1234560000000000000000000000 +shlx623 shiftleft 123456 23 -> 12345600000000000000000000000 +shlx624 shiftleft 123456 24 -> 123456000000000000000000000000 +shlx625 shiftleft 123456 25 -> 1234560000000000000000000000000 +shlx626 shiftleft 123456 26 -> 12345600000000000000000000000000 +shlx627 shiftleft 123456 27 -> 123456000000000000000000000000000 +shlx628 shiftleft 123456 28 -> 1234560000000000000000000000000000 +shlx629 shiftleft 123456 29 -> 12345600000000000000000000000000000 +shlx630 shiftleft 123456 30 -> 123456000000000000000000000000000000 +shlx631 shiftleft 123456 31 -> 1234560000000000000000000000000000000 +shlx632 shiftleft 123456 32 -> 12345600000000000000000000000000000000 +shlx633 shiftleft 123456 33 -> 123456000000000000000000000000000000000 +shlx634 shiftleft 123456 34 -> 1234560000000000000000000000000000000000 +shlx635 shiftleft 123456 35 -> 12345600000000000000000000000000000000000 +shlx636 shiftleft 123456 36 -> 123456000000000000000000000000000000000000 +shlx637 shiftleft 123456 37 -> 1234560000000000000000000000000000000000000 +shlx638 shiftleft 123456 38 -> 12345600000000000000000000000000000000000000 +shlx639 shiftleft 123456 39 -> 123456000000000000000000000000000000000000000 +shlx640 shiftleft 123456 40 -> 1234560000000000000000000000000000000000000000 +shlx641 shiftleft 123456 41 -> 12345600000000000000000000000000000000000000000 +shlx642 shiftleft 123456 42 -> 123456000000000000000000000000000000000000000000 +shlx643 shiftleft 123456 43 -> 1234560000000000000000000000000000000000000000000 +shlx644 shiftleft 123456 44 -> 12345600000000000000000000000000000000000000000000 +shlx645 shiftleft 123456 45 -> 123456000000000000000000000000000000000000000000000 +shlx646 shiftleft 123456 46 -> 1234560000000000000000000000000000000000000000000000 +shlx647 shiftleft 123456 47 -> 12345600000000000000000000000000000000000000000000000 +shlx648 shiftleft 123456 48 -> 123456000000000000000000000000000000000000000000000000 +shlx649 shiftleft 123456 49 -> 1234560000000000000000000000000000000000000000000000000 +shlx650 shiftleft 123456 50 -> 12345600000000000000000000000000000000000000000000000000 +shlx651 shiftleft 123456 51 -> 123456000000000000000000000000000000000000000000000000000 +shlx652 shiftleft 123456 52 -> 1234560000000000000000000000000000000000000000000000000000 +shlx653 shiftleft 123456 53 -> 12345600000000000000000000000000000000000000000000000000000 +shlx654 shiftleft 123456 54 -> 123456000000000000000000000000000000000000000000000000000000 +shlx655 shiftleft 123456 55 -> 1234560000000000000000000000000000000000000000000000000000000 +shlx656 shiftleft 123456 56 -> 12345600000000000000000000000000000000000000000000000000000000 +shlx657 shiftleft 123456 57 -> 123456000000000000000000000000000000000000000000000000000000000 +shlx658 shiftleft 123456 58 -> 1234560000000000000000000000000000000000000000000000000000000000 +shlx659 shiftleft 123456 59 -> 12345600000000000000000000000000000000000000000000000000000000000 +shlx660 shiftleft 123456 60 -> 123456000000000000000000000000000000000000000000000000000000000000 +shlx661 shiftleft 123456 61 -> 1234560000000000000000000000000000000000000000000000000000000000000 +shlx662 shiftleft 123456 62 -> 12345600000000000000000000000000000000000000000000000000000000000000 +shlx663 shiftleft 123456 63 -> 123456000000000000000000000000000000000000000000000000000000000000000 +shlx664 shiftleft 123456 64 -> 1234560000000000000000000000000000000000000000000000000000000000000000 +shlx665 shiftleft 123456 65 -> 12345600000000000000000000000000000000000000000000000000000000000000000 +shlx666 shiftleft 123456 66 -> 123456000000000000000000000000000000000000000000000000000000000000000000 +shlx667 shiftleft 123456 67 -> 1234560000000000000000000000000000000000000000000000000000000000000000000 +shlx668 shiftleft 123456 68 -> 12345600000000000000000000000000000000000000000000000000000000000000000000 +shlx669 shiftleft 123456 69 -> 123456000000000000000000000000000000000000000000000000000000000000000000000 +shlx670 shiftleft 123456 70 -> 1234560000000000000000000000000000000000000000000000000000000000000000000000 +shlx671 shiftleft 123456 71 -> 12345600000000000000000000000000000000000000000000000000000000000000000000000 +shlx672 shiftleft 123456 72 -> 123456000000000000000000000000000000000000000000000000000000000000000000000000 +shlx673 shiftleft 123456 73 -> 1234560000000000000000000000000000000000000000000000000000000000000000000000000 +shlx674 shiftleft 123456 74 -> 12345600000000000000000000000000000000000000000000000000000000000000000000000000 +shlx675 shiftleft 123456 75 -> 123456000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx676 shiftleft 123456 76 -> 1234560000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx677 shiftleft 123456 77 -> 12345600000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx678 shiftleft 123456 78 -> 123456000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx679 shiftleft 123456 79 -> 1234560000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx680 shiftleft 123456 80 -> 12345600000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx681 shiftleft 123456 81 -> 123456000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx682 shiftleft 123456 82 -> 1234560000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx683 shiftleft 123456 83 -> 12345600000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx684 shiftleft 123456 84 -> 123456000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx685 shiftleft 123456 85 -> 1234560000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx686 shiftleft 123456 86 -> 12345600000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx687 shiftleft 123456 87 -> 123456000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx688 shiftleft 123456 88 -> 1234560000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx689 shiftleft 123456 89 -> 12345600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx690 shiftleft 123456 90 -> 123456000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx691 shiftleft 123456 91 -> 1234560000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx692 shiftleft 123456 92 -> 12345600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx693 shiftleft 123456 93 -> 123456000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx694 shiftleft 123456 94 -> 1234560000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx695 shiftleft 123456 95 -> 12345600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx696 shiftleft 123456 96 -> 123456000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx697 shiftleft 123456 97 -> 1234560000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx698 shiftleft 123456 98 -> 12345600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx699 shiftleft 123456 99 -> 123456000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx700 shiftleft 1234567 0 -> 1234567 +shlx701 shiftleft 1234567 1 -> 12345670 +shlx702 shiftleft 1234567 2 -> 123456700 +shlx703 shiftleft 1234567 3 -> 1234567000 +shlx704 shiftleft 1234567 4 -> 12345670000 +shlx705 shiftleft 1234567 5 -> 123456700000 +shlx706 shiftleft 1234567 6 -> 1234567000000 +shlx707 shiftleft 1234567 7 -> 12345670000000 +shlx708 shiftleft 1234567 8 -> 123456700000000 +shlx709 shiftleft 1234567 9 -> 1234567000000000 +shlx710 shiftleft 1234567 10 -> 12345670000000000 +shlx711 shiftleft 1234567 11 -> 123456700000000000 +shlx712 shiftleft 1234567 12 -> 1234567000000000000 +shlx713 shiftleft 1234567 13 -> 12345670000000000000 +shlx714 shiftleft 1234567 14 -> 123456700000000000000 +shlx715 shiftleft 1234567 15 -> 1234567000000000000000 +shlx716 shiftleft 1234567 16 -> 12345670000000000000000 +shlx717 shiftleft 1234567 17 -> 123456700000000000000000 +shlx718 shiftleft 1234567 18 -> 1234567000000000000000000 +shlx719 shiftleft 1234567 19 -> 12345670000000000000000000 +shlx720 shiftleft 1234567 20 -> 123456700000000000000000000 +shlx721 shiftleft 1234567 21 -> 1234567000000000000000000000 +shlx722 shiftleft 1234567 22 -> 12345670000000000000000000000 +shlx723 shiftleft 1234567 23 -> 123456700000000000000000000000 +shlx724 shiftleft 1234567 24 -> 1234567000000000000000000000000 +shlx725 shiftleft 1234567 25 -> 12345670000000000000000000000000 +shlx726 shiftleft 1234567 26 -> 123456700000000000000000000000000 +shlx727 shiftleft 1234567 27 -> 1234567000000000000000000000000000 +shlx728 shiftleft 1234567 28 -> 12345670000000000000000000000000000 +shlx729 shiftleft 1234567 29 -> 123456700000000000000000000000000000 +shlx730 shiftleft 1234567 30 -> 1234567000000000000000000000000000000 +shlx731 shiftleft 1234567 31 -> 12345670000000000000000000000000000000 +shlx732 shiftleft 1234567 32 -> 123456700000000000000000000000000000000 +shlx733 shiftleft 1234567 33 -> 1234567000000000000000000000000000000000 +shlx734 shiftleft 1234567 34 -> 12345670000000000000000000000000000000000 +shlx735 shiftleft 1234567 35 -> 123456700000000000000000000000000000000000 +shlx736 shiftleft 1234567 36 -> 1234567000000000000000000000000000000000000 +shlx737 shiftleft 1234567 37 -> 12345670000000000000000000000000000000000000 +shlx738 shiftleft 1234567 38 -> 123456700000000000000000000000000000000000000 +shlx739 shiftleft 1234567 39 -> 1234567000000000000000000000000000000000000000 +shlx740 shiftleft 1234567 40 -> 12345670000000000000000000000000000000000000000 +shlx741 shiftleft 1234567 41 -> 123456700000000000000000000000000000000000000000 +shlx742 shiftleft 1234567 42 -> 1234567000000000000000000000000000000000000000000 +shlx743 shiftleft 1234567 43 -> 12345670000000000000000000000000000000000000000000 +shlx744 shiftleft 1234567 44 -> 123456700000000000000000000000000000000000000000000 +shlx745 shiftleft 1234567 45 -> 1234567000000000000000000000000000000000000000000000 +shlx746 shiftleft 1234567 46 -> 12345670000000000000000000000000000000000000000000000 +shlx747 shiftleft 1234567 47 -> 123456700000000000000000000000000000000000000000000000 +shlx748 shiftleft 1234567 48 -> 1234567000000000000000000000000000000000000000000000000 +shlx749 shiftleft 1234567 49 -> 12345670000000000000000000000000000000000000000000000000 +shlx750 shiftleft 1234567 50 -> 123456700000000000000000000000000000000000000000000000000 +shlx751 shiftleft 1234567 51 -> 1234567000000000000000000000000000000000000000000000000000 +shlx752 shiftleft 1234567 52 -> 12345670000000000000000000000000000000000000000000000000000 +shlx753 shiftleft 1234567 53 -> 123456700000000000000000000000000000000000000000000000000000 +shlx754 shiftleft 1234567 54 -> 1234567000000000000000000000000000000000000000000000000000000 +shlx755 shiftleft 1234567 55 -> 12345670000000000000000000000000000000000000000000000000000000 +shlx756 shiftleft 1234567 56 -> 123456700000000000000000000000000000000000000000000000000000000 +shlx757 shiftleft 1234567 57 -> 1234567000000000000000000000000000000000000000000000000000000000 +shlx758 shiftleft 1234567 58 -> 12345670000000000000000000000000000000000000000000000000000000000 +shlx759 shiftleft 1234567 59 -> 123456700000000000000000000000000000000000000000000000000000000000 +shlx760 shiftleft 1234567 60 -> 1234567000000000000000000000000000000000000000000000000000000000000 +shlx761 shiftleft 1234567 61 -> 12345670000000000000000000000000000000000000000000000000000000000000 +shlx762 shiftleft 1234567 62 -> 123456700000000000000000000000000000000000000000000000000000000000000 +shlx763 shiftleft 1234567 63 -> 1234567000000000000000000000000000000000000000000000000000000000000000 +shlx764 shiftleft 1234567 64 -> 12345670000000000000000000000000000000000000000000000000000000000000000 +shlx765 shiftleft 1234567 65 -> 123456700000000000000000000000000000000000000000000000000000000000000000 +shlx766 shiftleft 1234567 66 -> 1234567000000000000000000000000000000000000000000000000000000000000000000 +shlx767 shiftleft 1234567 67 -> 12345670000000000000000000000000000000000000000000000000000000000000000000 +shlx768 shiftleft 1234567 68 -> 123456700000000000000000000000000000000000000000000000000000000000000000000 +shlx769 shiftleft 1234567 69 -> 1234567000000000000000000000000000000000000000000000000000000000000000000000 +shlx770 shiftleft 1234567 70 -> 12345670000000000000000000000000000000000000000000000000000000000000000000000 +shlx771 shiftleft 1234567 71 -> 123456700000000000000000000000000000000000000000000000000000000000000000000000 +shlx772 shiftleft 1234567 72 -> 1234567000000000000000000000000000000000000000000000000000000000000000000000000 +shlx773 shiftleft 1234567 73 -> 12345670000000000000000000000000000000000000000000000000000000000000000000000000 +shlx774 shiftleft 1234567 74 -> 123456700000000000000000000000000000000000000000000000000000000000000000000000000 +shlx775 shiftleft 1234567 75 -> 1234567000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx776 shiftleft 1234567 76 -> 12345670000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx777 shiftleft 1234567 77 -> 123456700000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx778 shiftleft 1234567 78 -> 1234567000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx779 shiftleft 1234567 79 -> 12345670000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx780 shiftleft 1234567 80 -> 123456700000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx781 shiftleft 1234567 81 -> 1234567000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx782 shiftleft 1234567 82 -> 12345670000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx783 shiftleft 1234567 83 -> 123456700000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx784 shiftleft 1234567 84 -> 1234567000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx785 shiftleft 1234567 85 -> 12345670000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx786 shiftleft 1234567 86 -> 123456700000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx787 shiftleft 1234567 87 -> 1234567000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx788 shiftleft 1234567 88 -> 12345670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx789 shiftleft 1234567 89 -> 123456700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx790 shiftleft 1234567 90 -> 1234567000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx791 shiftleft 1234567 91 -> 12345670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx792 shiftleft 1234567 92 -> 123456700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx793 shiftleft 1234567 93 -> 1234567000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx794 shiftleft 1234567 94 -> 12345670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx795 shiftleft 1234567 95 -> 123456700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx796 shiftleft 1234567 96 -> 1234567000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx797 shiftleft 1234567 97 -> 12345670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx798 shiftleft 1234567 98 -> 123456700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx799 shiftleft 1234567 99 -> 1234567000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx800 shiftleft 12345678 0 -> 12345678 +shlx801 shiftleft 12345678 1 -> 123456780 +shlx802 shiftleft 12345678 2 -> 1234567800 +shlx803 shiftleft 12345678 3 -> 12345678000 +shlx804 shiftleft 12345678 4 -> 123456780000 +shlx805 shiftleft 12345678 5 -> 1234567800000 +shlx806 shiftleft 12345678 6 -> 12345678000000 +shlx807 shiftleft 12345678 7 -> 123456780000000 +shlx808 shiftleft 12345678 8 -> 1234567800000000 +shlx809 shiftleft 12345678 9 -> 12345678000000000 +shlx810 shiftleft 12345678 10 -> 123456780000000000 +shlx811 shiftleft 12345678 11 -> 1234567800000000000 +shlx812 shiftleft 12345678 12 -> 12345678000000000000 +shlx813 shiftleft 12345678 13 -> 123456780000000000000 +shlx814 shiftleft 12345678 14 -> 1234567800000000000000 +shlx815 shiftleft 12345678 15 -> 12345678000000000000000 +shlx816 shiftleft 12345678 16 -> 123456780000000000000000 +shlx817 shiftleft 12345678 17 -> 1234567800000000000000000 +shlx818 shiftleft 12345678 18 -> 12345678000000000000000000 +shlx819 shiftleft 12345678 19 -> 123456780000000000000000000 +shlx820 shiftleft 12345678 20 -> 1234567800000000000000000000 +shlx821 shiftleft 12345678 21 -> 12345678000000000000000000000 +shlx822 shiftleft 12345678 22 -> 123456780000000000000000000000 +shlx823 shiftleft 12345678 23 -> 1234567800000000000000000000000 +shlx824 shiftleft 12345678 24 -> 12345678000000000000000000000000 +shlx825 shiftleft 12345678 25 -> 123456780000000000000000000000000 +shlx826 shiftleft 12345678 26 -> 1234567800000000000000000000000000 +shlx827 shiftleft 12345678 27 -> 12345678000000000000000000000000000 +shlx828 shiftleft 12345678 28 -> 123456780000000000000000000000000000 +shlx829 shiftleft 12345678 29 -> 1234567800000000000000000000000000000 +shlx830 shiftleft 12345678 30 -> 12345678000000000000000000000000000000 +shlx831 shiftleft 12345678 31 -> 123456780000000000000000000000000000000 +shlx832 shiftleft 12345678 32 -> 1234567800000000000000000000000000000000 +shlx833 shiftleft 12345678 33 -> 12345678000000000000000000000000000000000 +shlx834 shiftleft 12345678 34 -> 123456780000000000000000000000000000000000 +shlx835 shiftleft 12345678 35 -> 1234567800000000000000000000000000000000000 +shlx836 shiftleft 12345678 36 -> 12345678000000000000000000000000000000000000 +shlx837 shiftleft 12345678 37 -> 123456780000000000000000000000000000000000000 +shlx838 shiftleft 12345678 38 -> 1234567800000000000000000000000000000000000000 +shlx839 shiftleft 12345678 39 -> 12345678000000000000000000000000000000000000000 +shlx840 shiftleft 12345678 40 -> 123456780000000000000000000000000000000000000000 +shlx841 shiftleft 12345678 41 -> 1234567800000000000000000000000000000000000000000 +shlx842 shiftleft 12345678 42 -> 12345678000000000000000000000000000000000000000000 +shlx843 shiftleft 12345678 43 -> 123456780000000000000000000000000000000000000000000 +shlx844 shiftleft 12345678 44 -> 1234567800000000000000000000000000000000000000000000 +shlx845 shiftleft 12345678 45 -> 12345678000000000000000000000000000000000000000000000 +shlx846 shiftleft 12345678 46 -> 123456780000000000000000000000000000000000000000000000 +shlx847 shiftleft 12345678 47 -> 1234567800000000000000000000000000000000000000000000000 +shlx848 shiftleft 12345678 48 -> 12345678000000000000000000000000000000000000000000000000 +shlx849 shiftleft 12345678 49 -> 123456780000000000000000000000000000000000000000000000000 +shlx850 shiftleft 12345678 50 -> 1234567800000000000000000000000000000000000000000000000000 +shlx851 shiftleft 12345678 51 -> 12345678000000000000000000000000000000000000000000000000000 +shlx852 shiftleft 12345678 52 -> 123456780000000000000000000000000000000000000000000000000000 +shlx853 shiftleft 12345678 53 -> 1234567800000000000000000000000000000000000000000000000000000 +shlx854 shiftleft 12345678 54 -> 12345678000000000000000000000000000000000000000000000000000000 +shlx855 shiftleft 12345678 55 -> 123456780000000000000000000000000000000000000000000000000000000 +shlx856 shiftleft 12345678 56 -> 1234567800000000000000000000000000000000000000000000000000000000 +shlx857 shiftleft 12345678 57 -> 12345678000000000000000000000000000000000000000000000000000000000 +shlx858 shiftleft 12345678 58 -> 123456780000000000000000000000000000000000000000000000000000000000 +shlx859 shiftleft 12345678 59 -> 1234567800000000000000000000000000000000000000000000000000000000000 +shlx860 shiftleft 12345678 60 -> 12345678000000000000000000000000000000000000000000000000000000000000 +shlx861 shiftleft 12345678 61 -> 123456780000000000000000000000000000000000000000000000000000000000000 +shlx862 shiftleft 12345678 62 -> 1234567800000000000000000000000000000000000000000000000000000000000000 +shlx863 shiftleft 12345678 63 -> 12345678000000000000000000000000000000000000000000000000000000000000000 +shlx864 shiftleft 12345678 64 -> 123456780000000000000000000000000000000000000000000000000000000000000000 +shlx865 shiftleft 12345678 65 -> 1234567800000000000000000000000000000000000000000000000000000000000000000 +shlx866 shiftleft 12345678 66 -> 12345678000000000000000000000000000000000000000000000000000000000000000000 +shlx867 shiftleft 12345678 67 -> 123456780000000000000000000000000000000000000000000000000000000000000000000 +shlx868 shiftleft 12345678 68 -> 1234567800000000000000000000000000000000000000000000000000000000000000000000 +shlx869 shiftleft 12345678 69 -> 12345678000000000000000000000000000000000000000000000000000000000000000000000 +shlx870 shiftleft 12345678 70 -> 123456780000000000000000000000000000000000000000000000000000000000000000000000 +shlx871 shiftleft 12345678 71 -> 1234567800000000000000000000000000000000000000000000000000000000000000000000000 +shlx872 shiftleft 12345678 72 -> 12345678000000000000000000000000000000000000000000000000000000000000000000000000 +shlx873 shiftleft 12345678 73 -> 123456780000000000000000000000000000000000000000000000000000000000000000000000000 +shlx874 shiftleft 12345678 74 -> 1234567800000000000000000000000000000000000000000000000000000000000000000000000000 +shlx875 shiftleft 12345678 75 -> 12345678000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx876 shiftleft 12345678 76 -> 123456780000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx877 shiftleft 12345678 77 -> 1234567800000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx878 shiftleft 12345678 78 -> 12345678000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx879 shiftleft 12345678 79 -> 123456780000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx880 shiftleft 12345678 80 -> 1234567800000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx881 shiftleft 12345678 81 -> 12345678000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx882 shiftleft 12345678 82 -> 123456780000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx883 shiftleft 12345678 83 -> 1234567800000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx884 shiftleft 12345678 84 -> 12345678000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx885 shiftleft 12345678 85 -> 123456780000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx886 shiftleft 12345678 86 -> 1234567800000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx887 shiftleft 12345678 87 -> 12345678000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx888 shiftleft 12345678 88 -> 123456780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx889 shiftleft 12345678 89 -> 1234567800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx890 shiftleft 12345678 90 -> 12345678000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx891 shiftleft 12345678 91 -> 123456780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx892 shiftleft 12345678 92 -> 1234567800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx893 shiftleft 12345678 93 -> 12345678000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx894 shiftleft 12345678 94 -> 123456780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx895 shiftleft 12345678 95 -> 1234567800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx896 shiftleft 12345678 96 -> 12345678000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx897 shiftleft 12345678 97 -> 123456780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx898 shiftleft 12345678 98 -> 1234567800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx899 shiftleft 12345678 99 -> 12345678000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx900 shiftleft 123456789 0 -> 123456789 +shlx901 shiftleft 123456789 1 -> 1234567890 +shlx902 shiftleft 123456789 2 -> 12345678900 +shlx903 shiftleft 123456789 3 -> 123456789000 +shlx904 shiftleft 123456789 4 -> 1234567890000 +shlx905 shiftleft 123456789 5 -> 12345678900000 +shlx906 shiftleft 123456789 6 -> 123456789000000 +shlx907 shiftleft 123456789 7 -> 1234567890000000 +shlx908 shiftleft 123456789 8 -> 12345678900000000 +shlx909 shiftleft 123456789 9 -> 123456789000000000 +shlx910 shiftleft 123456789 10 -> 1234567890000000000 +shlx911 shiftleft 123456789 11 -> 12345678900000000000 +shlx912 shiftleft 123456789 12 -> 123456789000000000000 +shlx913 shiftleft 123456789 13 -> 1234567890000000000000 +shlx914 shiftleft 123456789 14 -> 12345678900000000000000 +shlx915 shiftleft 123456789 15 -> 123456789000000000000000 +shlx916 shiftleft 123456789 16 -> 1234567890000000000000000 +shlx917 shiftleft 123456789 17 -> 12345678900000000000000000 +shlx918 shiftleft 123456789 18 -> 123456789000000000000000000 +shlx919 shiftleft 123456789 19 -> 1234567890000000000000000000 +shlx920 shiftleft 123456789 20 -> 12345678900000000000000000000 +shlx921 shiftleft 123456789 21 -> 123456789000000000000000000000 +shlx922 shiftleft 123456789 22 -> 1234567890000000000000000000000 +shlx923 shiftleft 123456789 23 -> 12345678900000000000000000000000 +shlx924 shiftleft 123456789 24 -> 123456789000000000000000000000000 +shlx925 shiftleft 123456789 25 -> 1234567890000000000000000000000000 +shlx926 shiftleft 123456789 26 -> 12345678900000000000000000000000000 +shlx927 shiftleft 123456789 27 -> 123456789000000000000000000000000000 +shlx928 shiftleft 123456789 28 -> 1234567890000000000000000000000000000 +shlx929 shiftleft 123456789 29 -> 12345678900000000000000000000000000000 +shlx930 shiftleft 123456789 30 -> 123456789000000000000000000000000000000 +shlx931 shiftleft 123456789 31 -> 1234567890000000000000000000000000000000 +shlx932 shiftleft 123456789 32 -> 12345678900000000000000000000000000000000 +shlx933 shiftleft 123456789 33 -> 123456789000000000000000000000000000000000 +shlx934 shiftleft 123456789 34 -> 1234567890000000000000000000000000000000000 +shlx935 shiftleft 123456789 35 -> 12345678900000000000000000000000000000000000 +shlx936 shiftleft 123456789 36 -> 123456789000000000000000000000000000000000000 +shlx937 shiftleft 123456789 37 -> 1234567890000000000000000000000000000000000000 +shlx938 shiftleft 123456789 38 -> 12345678900000000000000000000000000000000000000 +shlx939 shiftleft 123456789 39 -> 123456789000000000000000000000000000000000000000 +shlx940 shiftleft 123456789 40 -> 1234567890000000000000000000000000000000000000000 +shlx941 shiftleft 123456789 41 -> 12345678900000000000000000000000000000000000000000 +shlx942 shiftleft 123456789 42 -> 123456789000000000000000000000000000000000000000000 +shlx943 shiftleft 123456789 43 -> 1234567890000000000000000000000000000000000000000000 +shlx944 shiftleft 123456789 44 -> 12345678900000000000000000000000000000000000000000000 +shlx945 shiftleft 123456789 45 -> 123456789000000000000000000000000000000000000000000000 +shlx946 shiftleft 123456789 46 -> 1234567890000000000000000000000000000000000000000000000 +shlx947 shiftleft 123456789 47 -> 12345678900000000000000000000000000000000000000000000000 +shlx948 shiftleft 123456789 48 -> 123456789000000000000000000000000000000000000000000000000 +shlx949 shiftleft 123456789 49 -> 1234567890000000000000000000000000000000000000000000000000 +shlx950 shiftleft 123456789 50 -> 12345678900000000000000000000000000000000000000000000000000 +shlx951 shiftleft 123456789 51 -> 123456789000000000000000000000000000000000000000000000000000 +shlx952 shiftleft 123456789 52 -> 1234567890000000000000000000000000000000000000000000000000000 +shlx953 shiftleft 123456789 53 -> 12345678900000000000000000000000000000000000000000000000000000 +shlx954 shiftleft 123456789 54 -> 123456789000000000000000000000000000000000000000000000000000000 +shlx955 shiftleft 123456789 55 -> 1234567890000000000000000000000000000000000000000000000000000000 +shlx956 shiftleft 123456789 56 -> 12345678900000000000000000000000000000000000000000000000000000000 +shlx957 shiftleft 123456789 57 -> 123456789000000000000000000000000000000000000000000000000000000000 +shlx958 shiftleft 123456789 58 -> 1234567890000000000000000000000000000000000000000000000000000000000 +shlx959 shiftleft 123456789 59 -> 12345678900000000000000000000000000000000000000000000000000000000000 +shlx960 shiftleft 123456789 60 -> 123456789000000000000000000000000000000000000000000000000000000000000 +shlx961 shiftleft 123456789 61 -> 1234567890000000000000000000000000000000000000000000000000000000000000 +shlx962 shiftleft 123456789 62 -> 12345678900000000000000000000000000000000000000000000000000000000000000 +shlx963 shiftleft 123456789 63 -> 123456789000000000000000000000000000000000000000000000000000000000000000 +shlx964 shiftleft 123456789 64 -> 1234567890000000000000000000000000000000000000000000000000000000000000000 +shlx965 shiftleft 123456789 65 -> 12345678900000000000000000000000000000000000000000000000000000000000000000 +shlx966 shiftleft 123456789 66 -> 123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx967 shiftleft 123456789 67 -> 1234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx968 shiftleft 123456789 68 -> 12345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx969 shiftleft 123456789 69 -> 123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx970 shiftleft 123456789 70 -> 1234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx971 shiftleft 123456789 71 -> 12345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx972 shiftleft 123456789 72 -> 123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx973 shiftleft 123456789 73 -> 1234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx974 shiftleft 123456789 74 -> 12345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx975 shiftleft 123456789 75 -> 123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx976 shiftleft 123456789 76 -> 1234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx977 shiftleft 123456789 77 -> 12345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx978 shiftleft 123456789 78 -> 123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx979 shiftleft 123456789 79 -> 1234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx980 shiftleft 123456789 80 -> 12345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx981 shiftleft 123456789 81 -> 123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx982 shiftleft 123456789 82 -> 1234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx983 shiftleft 123456789 83 -> 12345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx984 shiftleft 123456789 84 -> 123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx985 shiftleft 123456789 85 -> 1234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx986 shiftleft 123456789 86 -> 12345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx987 shiftleft 123456789 87 -> 123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx988 shiftleft 123456789 88 -> 1234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx989 shiftleft 123456789 89 -> 12345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx990 shiftleft 123456789 90 -> 123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx991 shiftleft 123456789 91 -> 1234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx992 shiftleft 123456789 92 -> 12345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx993 shiftleft 123456789 93 -> 123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx994 shiftleft 123456789 94 -> 1234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx995 shiftleft 123456789 95 -> 12345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx996 shiftleft 123456789 96 -> 123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx997 shiftleft 123456789 97 -> 1234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx998 shiftleft 123456789 98 -> 12345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx999 shiftleft 123456789 99 -> 123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1000 shiftleft 1123456789 0 -> 1123456789 +shlx1001 shiftleft 1123456789 1 -> 11234567890 +shlx1002 shiftleft 1123456789 2 -> 112345678900 +shlx1003 shiftleft 1123456789 3 -> 1123456789000 +shlx1004 shiftleft 1123456789 4 -> 11234567890000 +shlx1005 shiftleft 1123456789 5 -> 112345678900000 +shlx1006 shiftleft 1123456789 6 -> 1123456789000000 +shlx1007 shiftleft 1123456789 7 -> 11234567890000000 +shlx1008 shiftleft 1123456789 8 -> 112345678900000000 +shlx1009 shiftleft 1123456789 9 -> 1123456789000000000 +shlx1010 shiftleft 1123456789 10 -> 11234567890000000000 +shlx1011 shiftleft 1123456789 11 -> 112345678900000000000 +shlx1012 shiftleft 1123456789 12 -> 1123456789000000000000 +shlx1013 shiftleft 1123456789 13 -> 11234567890000000000000 +shlx1014 shiftleft 1123456789 14 -> 112345678900000000000000 +shlx1015 shiftleft 1123456789 15 -> 1123456789000000000000000 +shlx1016 shiftleft 1123456789 16 -> 11234567890000000000000000 +shlx1017 shiftleft 1123456789 17 -> 112345678900000000000000000 +shlx1018 shiftleft 1123456789 18 -> 1123456789000000000000000000 +shlx1019 shiftleft 1123456789 19 -> 11234567890000000000000000000 +shlx1020 shiftleft 1123456789 20 -> 112345678900000000000000000000 +shlx1021 shiftleft 1123456789 21 -> 1123456789000000000000000000000 +shlx1022 shiftleft 1123456789 22 -> 11234567890000000000000000000000 +shlx1023 shiftleft 1123456789 23 -> 112345678900000000000000000000000 +shlx1024 shiftleft 1123456789 24 -> 1123456789000000000000000000000000 +shlx1025 shiftleft 1123456789 25 -> 11234567890000000000000000000000000 +shlx1026 shiftleft 1123456789 26 -> 112345678900000000000000000000000000 +shlx1027 shiftleft 1123456789 27 -> 1123456789000000000000000000000000000 +shlx1028 shiftleft 1123456789 28 -> 11234567890000000000000000000000000000 +shlx1029 shiftleft 1123456789 29 -> 112345678900000000000000000000000000000 +shlx1030 shiftleft 1123456789 30 -> 1123456789000000000000000000000000000000 +shlx1031 shiftleft 1123456789 31 -> 11234567890000000000000000000000000000000 +shlx1032 shiftleft 1123456789 32 -> 112345678900000000000000000000000000000000 +shlx1033 shiftleft 1123456789 33 -> 1123456789000000000000000000000000000000000 +shlx1034 shiftleft 1123456789 34 -> 11234567890000000000000000000000000000000000 +shlx1035 shiftleft 1123456789 35 -> 112345678900000000000000000000000000000000000 +shlx1036 shiftleft 1123456789 36 -> 1123456789000000000000000000000000000000000000 +shlx1037 shiftleft 1123456789 37 -> 11234567890000000000000000000000000000000000000 +shlx1038 shiftleft 1123456789 38 -> 112345678900000000000000000000000000000000000000 +shlx1039 shiftleft 1123456789 39 -> 1123456789000000000000000000000000000000000000000 +shlx1040 shiftleft 1123456789 40 -> 11234567890000000000000000000000000000000000000000 +shlx1041 shiftleft 1123456789 41 -> 112345678900000000000000000000000000000000000000000 +shlx1042 shiftleft 1123456789 42 -> 1123456789000000000000000000000000000000000000000000 +shlx1043 shiftleft 1123456789 43 -> 11234567890000000000000000000000000000000000000000000 +shlx1044 shiftleft 1123456789 44 -> 112345678900000000000000000000000000000000000000000000 +shlx1045 shiftleft 1123456789 45 -> 1123456789000000000000000000000000000000000000000000000 +shlx1046 shiftleft 1123456789 46 -> 11234567890000000000000000000000000000000000000000000000 +shlx1047 shiftleft 1123456789 47 -> 112345678900000000000000000000000000000000000000000000000 +shlx1048 shiftleft 1123456789 48 -> 1123456789000000000000000000000000000000000000000000000000 +shlx1049 shiftleft 1123456789 49 -> 11234567890000000000000000000000000000000000000000000000000 +shlx1050 shiftleft 1123456789 50 -> 112345678900000000000000000000000000000000000000000000000000 +shlx1051 shiftleft 1123456789 51 -> 1123456789000000000000000000000000000000000000000000000000000 +shlx1052 shiftleft 1123456789 52 -> 11234567890000000000000000000000000000000000000000000000000000 +shlx1053 shiftleft 1123456789 53 -> 112345678900000000000000000000000000000000000000000000000000000 +shlx1054 shiftleft 1123456789 54 -> 1123456789000000000000000000000000000000000000000000000000000000 +shlx1055 shiftleft 1123456789 55 -> 11234567890000000000000000000000000000000000000000000000000000000 +shlx1056 shiftleft 1123456789 56 -> 112345678900000000000000000000000000000000000000000000000000000000 +shlx1057 shiftleft 1123456789 57 -> 1123456789000000000000000000000000000000000000000000000000000000000 +shlx1058 shiftleft 1123456789 58 -> 11234567890000000000000000000000000000000000000000000000000000000000 +shlx1059 shiftleft 1123456789 59 -> 112345678900000000000000000000000000000000000000000000000000000000000 +shlx1060 shiftleft 1123456789 60 -> 1123456789000000000000000000000000000000000000000000000000000000000000 +shlx1061 shiftleft 1123456789 61 -> 11234567890000000000000000000000000000000000000000000000000000000000000 +shlx1062 shiftleft 1123456789 62 -> 112345678900000000000000000000000000000000000000000000000000000000000000 +shlx1063 shiftleft 1123456789 63 -> 1123456789000000000000000000000000000000000000000000000000000000000000000 +shlx1064 shiftleft 1123456789 64 -> 11234567890000000000000000000000000000000000000000000000000000000000000000 +shlx1065 shiftleft 1123456789 65 -> 112345678900000000000000000000000000000000000000000000000000000000000000000 +shlx1066 shiftleft 1123456789 66 -> 1123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx1067 shiftleft 1123456789 67 -> 11234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx1068 shiftleft 1123456789 68 -> 112345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx1069 shiftleft 1123456789 69 -> 1123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx1070 shiftleft 1123456789 70 -> 11234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx1071 shiftleft 1123456789 71 -> 112345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx1072 shiftleft 1123456789 72 -> 1123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1073 shiftleft 1123456789 73 -> 11234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1074 shiftleft 1123456789 74 -> 112345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1075 shiftleft 1123456789 75 -> 1123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1076 shiftleft 1123456789 76 -> 11234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1077 shiftleft 1123456789 77 -> 112345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1078 shiftleft 1123456789 78 -> 1123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1079 shiftleft 1123456789 79 -> 11234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1080 shiftleft 1123456789 80 -> 112345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1081 shiftleft 1123456789 81 -> 1123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1082 shiftleft 1123456789 82 -> 11234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1083 shiftleft 1123456789 83 -> 112345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1084 shiftleft 1123456789 84 -> 1123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1085 shiftleft 1123456789 85 -> 11234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1086 shiftleft 1123456789 86 -> 112345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1087 shiftleft 1123456789 87 -> 1123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1088 shiftleft 1123456789 88 -> 11234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1089 shiftleft 1123456789 89 -> 112345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1090 shiftleft 1123456789 90 -> 1123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1091 shiftleft 1123456789 91 -> 11234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1092 shiftleft 1123456789 92 -> 112345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1093 shiftleft 1123456789 93 -> 1123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1094 shiftleft 1123456789 94 -> 11234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1095 shiftleft 1123456789 95 -> 112345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1096 shiftleft 1123456789 96 -> 1123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1097 shiftleft 1123456789 97 -> 11234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1098 shiftleft 1123456789 98 -> 112345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1099 shiftleft 1123456789 99 -> 1123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1100 shiftleft 12123456789 0 -> 12123456789 +shlx1101 shiftleft 12123456789 1 -> 121234567890 +shlx1102 shiftleft 12123456789 2 -> 1212345678900 +shlx1103 shiftleft 12123456789 3 -> 12123456789000 +shlx1104 shiftleft 12123456789 4 -> 121234567890000 +shlx1105 shiftleft 12123456789 5 -> 1212345678900000 +shlx1106 shiftleft 12123456789 6 -> 12123456789000000 +shlx1107 shiftleft 12123456789 7 -> 121234567890000000 +shlx1108 shiftleft 12123456789 8 -> 1212345678900000000 +shlx1109 shiftleft 12123456789 9 -> 12123456789000000000 +shlx1110 shiftleft 12123456789 10 -> 121234567890000000000 +shlx1111 shiftleft 12123456789 11 -> 1212345678900000000000 +shlx1112 shiftleft 12123456789 12 -> 12123456789000000000000 +shlx1113 shiftleft 12123456789 13 -> 121234567890000000000000 +shlx1114 shiftleft 12123456789 14 -> 1212345678900000000000000 +shlx1115 shiftleft 12123456789 15 -> 12123456789000000000000000 +shlx1116 shiftleft 12123456789 16 -> 121234567890000000000000000 +shlx1117 shiftleft 12123456789 17 -> 1212345678900000000000000000 +shlx1118 shiftleft 12123456789 18 -> 12123456789000000000000000000 +shlx1119 shiftleft 12123456789 19 -> 121234567890000000000000000000 +shlx1120 shiftleft 12123456789 20 -> 1212345678900000000000000000000 +shlx1121 shiftleft 12123456789 21 -> 12123456789000000000000000000000 +shlx1122 shiftleft 12123456789 22 -> 121234567890000000000000000000000 +shlx1123 shiftleft 12123456789 23 -> 1212345678900000000000000000000000 +shlx1124 shiftleft 12123456789 24 -> 12123456789000000000000000000000000 +shlx1125 shiftleft 12123456789 25 -> 121234567890000000000000000000000000 +shlx1126 shiftleft 12123456789 26 -> 1212345678900000000000000000000000000 +shlx1127 shiftleft 12123456789 27 -> 12123456789000000000000000000000000000 +shlx1128 shiftleft 12123456789 28 -> 121234567890000000000000000000000000000 +shlx1129 shiftleft 12123456789 29 -> 1212345678900000000000000000000000000000 +shlx1130 shiftleft 12123456789 30 -> 12123456789000000000000000000000000000000 +shlx1131 shiftleft 12123456789 31 -> 121234567890000000000000000000000000000000 +shlx1132 shiftleft 12123456789 32 -> 1212345678900000000000000000000000000000000 +shlx1133 shiftleft 12123456789 33 -> 12123456789000000000000000000000000000000000 +shlx1134 shiftleft 12123456789 34 -> 121234567890000000000000000000000000000000000 +shlx1135 shiftleft 12123456789 35 -> 1212345678900000000000000000000000000000000000 +shlx1136 shiftleft 12123456789 36 -> 12123456789000000000000000000000000000000000000 +shlx1137 shiftleft 12123456789 37 -> 121234567890000000000000000000000000000000000000 +shlx1138 shiftleft 12123456789 38 -> 1212345678900000000000000000000000000000000000000 +shlx1139 shiftleft 12123456789 39 -> 12123456789000000000000000000000000000000000000000 +shlx1140 shiftleft 12123456789 40 -> 121234567890000000000000000000000000000000000000000 +shlx1141 shiftleft 12123456789 41 -> 1212345678900000000000000000000000000000000000000000 +shlx1142 shiftleft 12123456789 42 -> 12123456789000000000000000000000000000000000000000000 +shlx1143 shiftleft 12123456789 43 -> 121234567890000000000000000000000000000000000000000000 +shlx1144 shiftleft 12123456789 44 -> 1212345678900000000000000000000000000000000000000000000 +shlx1145 shiftleft 12123456789 45 -> 12123456789000000000000000000000000000000000000000000000 +shlx1146 shiftleft 12123456789 46 -> 121234567890000000000000000000000000000000000000000000000 +shlx1147 shiftleft 12123456789 47 -> 1212345678900000000000000000000000000000000000000000000000 +shlx1148 shiftleft 12123456789 48 -> 12123456789000000000000000000000000000000000000000000000000 +shlx1149 shiftleft 12123456789 49 -> 121234567890000000000000000000000000000000000000000000000000 +shlx1150 shiftleft 12123456789 50 -> 1212345678900000000000000000000000000000000000000000000000000 +shlx1151 shiftleft 12123456789 51 -> 12123456789000000000000000000000000000000000000000000000000000 +shlx1152 shiftleft 12123456789 52 -> 121234567890000000000000000000000000000000000000000000000000000 +shlx1153 shiftleft 12123456789 53 -> 1212345678900000000000000000000000000000000000000000000000000000 +shlx1154 shiftleft 12123456789 54 -> 12123456789000000000000000000000000000000000000000000000000000000 +shlx1155 shiftleft 12123456789 55 -> 121234567890000000000000000000000000000000000000000000000000000000 +shlx1156 shiftleft 12123456789 56 -> 1212345678900000000000000000000000000000000000000000000000000000000 +shlx1157 shiftleft 12123456789 57 -> 12123456789000000000000000000000000000000000000000000000000000000000 +shlx1158 shiftleft 12123456789 58 -> 121234567890000000000000000000000000000000000000000000000000000000000 +shlx1159 shiftleft 12123456789 59 -> 1212345678900000000000000000000000000000000000000000000000000000000000 +shlx1160 shiftleft 12123456789 60 -> 12123456789000000000000000000000000000000000000000000000000000000000000 +shlx1161 shiftleft 12123456789 61 -> 121234567890000000000000000000000000000000000000000000000000000000000000 +shlx1162 shiftleft 12123456789 62 -> 1212345678900000000000000000000000000000000000000000000000000000000000000 +shlx1163 shiftleft 12123456789 63 -> 12123456789000000000000000000000000000000000000000000000000000000000000000 +shlx1164 shiftleft 12123456789 64 -> 121234567890000000000000000000000000000000000000000000000000000000000000000 +shlx1165 shiftleft 12123456789 65 -> 1212345678900000000000000000000000000000000000000000000000000000000000000000 +shlx1166 shiftleft 12123456789 66 -> 12123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx1167 shiftleft 12123456789 67 -> 121234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx1168 shiftleft 12123456789 68 -> 1212345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx1169 shiftleft 12123456789 69 -> 12123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx1170 shiftleft 12123456789 70 -> 121234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx1171 shiftleft 12123456789 71 -> 1212345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx1172 shiftleft 12123456789 72 -> 12123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1173 shiftleft 12123456789 73 -> 121234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1174 shiftleft 12123456789 74 -> 1212345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1175 shiftleft 12123456789 75 -> 12123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1176 shiftleft 12123456789 76 -> 121234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1177 shiftleft 12123456789 77 -> 1212345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1178 shiftleft 12123456789 78 -> 12123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1179 shiftleft 12123456789 79 -> 121234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1180 shiftleft 12123456789 80 -> 1212345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1181 shiftleft 12123456789 81 -> 12123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1182 shiftleft 12123456789 82 -> 121234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1183 shiftleft 12123456789 83 -> 1212345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1184 shiftleft 12123456789 84 -> 12123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1185 shiftleft 12123456789 85 -> 121234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1186 shiftleft 12123456789 86 -> 1212345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1187 shiftleft 12123456789 87 -> 12123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1188 shiftleft 12123456789 88 -> 121234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1189 shiftleft 12123456789 89 -> 1212345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1190 shiftleft 12123456789 90 -> 12123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1191 shiftleft 12123456789 91 -> 121234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1192 shiftleft 12123456789 92 -> 1212345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1193 shiftleft 12123456789 93 -> 12123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1194 shiftleft 12123456789 94 -> 121234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1195 shiftleft 12123456789 95 -> 1212345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1196 shiftleft 12123456789 96 -> 12123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1197 shiftleft 12123456789 97 -> 121234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1198 shiftleft 12123456789 98 -> 1212345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1199 shiftleft 12123456789 99 -> 12123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1200 shiftleft 123123456789 0 -> 123123456789 +shlx1201 shiftleft 123123456789 1 -> 1231234567890 +shlx1202 shiftleft 123123456789 2 -> 12312345678900 +shlx1203 shiftleft 123123456789 3 -> 123123456789000 +shlx1204 shiftleft 123123456789 4 -> 1231234567890000 +shlx1205 shiftleft 123123456789 5 -> 12312345678900000 +shlx1206 shiftleft 123123456789 6 -> 123123456789000000 +shlx1207 shiftleft 123123456789 7 -> 1231234567890000000 +shlx1208 shiftleft 123123456789 8 -> 12312345678900000000 +shlx1209 shiftleft 123123456789 9 -> 123123456789000000000 +shlx1210 shiftleft 123123456789 10 -> 1231234567890000000000 +shlx1211 shiftleft 123123456789 11 -> 12312345678900000000000 +shlx1212 shiftleft 123123456789 12 -> 123123456789000000000000 +shlx1213 shiftleft 123123456789 13 -> 1231234567890000000000000 +shlx1214 shiftleft 123123456789 14 -> 12312345678900000000000000 +shlx1215 shiftleft 123123456789 15 -> 123123456789000000000000000 +shlx1216 shiftleft 123123456789 16 -> 1231234567890000000000000000 +shlx1217 shiftleft 123123456789 17 -> 12312345678900000000000000000 +shlx1218 shiftleft 123123456789 18 -> 123123456789000000000000000000 +shlx1219 shiftleft 123123456789 19 -> 1231234567890000000000000000000 +shlx1220 shiftleft 123123456789 20 -> 12312345678900000000000000000000 +shlx1221 shiftleft 123123456789 21 -> 123123456789000000000000000000000 +shlx1222 shiftleft 123123456789 22 -> 1231234567890000000000000000000000 +shlx1223 shiftleft 123123456789 23 -> 12312345678900000000000000000000000 +shlx1224 shiftleft 123123456789 24 -> 123123456789000000000000000000000000 +shlx1225 shiftleft 123123456789 25 -> 1231234567890000000000000000000000000 +shlx1226 shiftleft 123123456789 26 -> 12312345678900000000000000000000000000 +shlx1227 shiftleft 123123456789 27 -> 123123456789000000000000000000000000000 +shlx1228 shiftleft 123123456789 28 -> 1231234567890000000000000000000000000000 +shlx1229 shiftleft 123123456789 29 -> 12312345678900000000000000000000000000000 +shlx1230 shiftleft 123123456789 30 -> 123123456789000000000000000000000000000000 +shlx1231 shiftleft 123123456789 31 -> 1231234567890000000000000000000000000000000 +shlx1232 shiftleft 123123456789 32 -> 12312345678900000000000000000000000000000000 +shlx1233 shiftleft 123123456789 33 -> 123123456789000000000000000000000000000000000 +shlx1234 shiftleft 123123456789 34 -> 1231234567890000000000000000000000000000000000 +shlx1235 shiftleft 123123456789 35 -> 12312345678900000000000000000000000000000000000 +shlx1236 shiftleft 123123456789 36 -> 123123456789000000000000000000000000000000000000 +shlx1237 shiftleft 123123456789 37 -> 1231234567890000000000000000000000000000000000000 +shlx1238 shiftleft 123123456789 38 -> 12312345678900000000000000000000000000000000000000 +shlx1239 shiftleft 123123456789 39 -> 123123456789000000000000000000000000000000000000000 +shlx1240 shiftleft 123123456789 40 -> 1231234567890000000000000000000000000000000000000000 +shlx1241 shiftleft 123123456789 41 -> 12312345678900000000000000000000000000000000000000000 +shlx1242 shiftleft 123123456789 42 -> 123123456789000000000000000000000000000000000000000000 +shlx1243 shiftleft 123123456789 43 -> 1231234567890000000000000000000000000000000000000000000 +shlx1244 shiftleft 123123456789 44 -> 12312345678900000000000000000000000000000000000000000000 +shlx1245 shiftleft 123123456789 45 -> 123123456789000000000000000000000000000000000000000000000 +shlx1246 shiftleft 123123456789 46 -> 1231234567890000000000000000000000000000000000000000000000 +shlx1247 shiftleft 123123456789 47 -> 12312345678900000000000000000000000000000000000000000000000 +shlx1248 shiftleft 123123456789 48 -> 123123456789000000000000000000000000000000000000000000000000 +shlx1249 shiftleft 123123456789 49 -> 1231234567890000000000000000000000000000000000000000000000000 +shlx1250 shiftleft 123123456789 50 -> 12312345678900000000000000000000000000000000000000000000000000 +shlx1251 shiftleft 123123456789 51 -> 123123456789000000000000000000000000000000000000000000000000000 +shlx1252 shiftleft 123123456789 52 -> 1231234567890000000000000000000000000000000000000000000000000000 +shlx1253 shiftleft 123123456789 53 -> 12312345678900000000000000000000000000000000000000000000000000000 +shlx1254 shiftleft 123123456789 54 -> 123123456789000000000000000000000000000000000000000000000000000000 +shlx1255 shiftleft 123123456789 55 -> 1231234567890000000000000000000000000000000000000000000000000000000 +shlx1256 shiftleft 123123456789 56 -> 12312345678900000000000000000000000000000000000000000000000000000000 +shlx1257 shiftleft 123123456789 57 -> 123123456789000000000000000000000000000000000000000000000000000000000 +shlx1258 shiftleft 123123456789 58 -> 1231234567890000000000000000000000000000000000000000000000000000000000 +shlx1259 shiftleft 123123456789 59 -> 12312345678900000000000000000000000000000000000000000000000000000000000 +shlx1260 shiftleft 123123456789 60 -> 123123456789000000000000000000000000000000000000000000000000000000000000 +shlx1261 shiftleft 123123456789 61 -> 1231234567890000000000000000000000000000000000000000000000000000000000000 +shlx1262 shiftleft 123123456789 62 -> 12312345678900000000000000000000000000000000000000000000000000000000000000 +shlx1263 shiftleft 123123456789 63 -> 123123456789000000000000000000000000000000000000000000000000000000000000000 +shlx1264 shiftleft 123123456789 64 -> 1231234567890000000000000000000000000000000000000000000000000000000000000000 +shlx1265 shiftleft 123123456789 65 -> 12312345678900000000000000000000000000000000000000000000000000000000000000000 +shlx1266 shiftleft 123123456789 66 -> 123123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx1267 shiftleft 123123456789 67 -> 1231234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx1268 shiftleft 123123456789 68 -> 12312345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx1269 shiftleft 123123456789 69 -> 123123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx1270 shiftleft 123123456789 70 -> 1231234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx1271 shiftleft 123123456789 71 -> 12312345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx1272 shiftleft 123123456789 72 -> 123123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1273 shiftleft 123123456789 73 -> 1231234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1274 shiftleft 123123456789 74 -> 12312345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1275 shiftleft 123123456789 75 -> 123123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1276 shiftleft 123123456789 76 -> 1231234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1277 shiftleft 123123456789 77 -> 12312345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1278 shiftleft 123123456789 78 -> 123123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1279 shiftleft 123123456789 79 -> 1231234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1280 shiftleft 123123456789 80 -> 12312345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1281 shiftleft 123123456789 81 -> 123123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1282 shiftleft 123123456789 82 -> 1231234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1283 shiftleft 123123456789 83 -> 12312345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1284 shiftleft 123123456789 84 -> 123123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1285 shiftleft 123123456789 85 -> 1231234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1286 shiftleft 123123456789 86 -> 12312345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1287 shiftleft 123123456789 87 -> 123123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1288 shiftleft 123123456789 88 -> 1231234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1289 shiftleft 123123456789 89 -> 12312345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1290 shiftleft 123123456789 90 -> 123123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1291 shiftleft 123123456789 91 -> 1231234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1292 shiftleft 123123456789 92 -> 12312345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1293 shiftleft 123123456789 93 -> 123123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1294 shiftleft 123123456789 94 -> 1231234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1295 shiftleft 123123456789 95 -> 12312345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1296 shiftleft 123123456789 96 -> 123123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1297 shiftleft 123123456789 97 -> 1231234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1298 shiftleft 123123456789 98 -> 12312345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1299 shiftleft 123123456789 99 -> 123123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1300 shiftleft 1234123456789 0 -> 1234123456789 +shlx1301 shiftleft 1234123456789 1 -> 12341234567890 +shlx1302 shiftleft 1234123456789 2 -> 123412345678900 +shlx1303 shiftleft 1234123456789 3 -> 1234123456789000 +shlx1304 shiftleft 1234123456789 4 -> 12341234567890000 +shlx1305 shiftleft 1234123456789 5 -> 123412345678900000 +shlx1306 shiftleft 1234123456789 6 -> 1234123456789000000 +shlx1307 shiftleft 1234123456789 7 -> 12341234567890000000 +shlx1308 shiftleft 1234123456789 8 -> 123412345678900000000 +shlx1309 shiftleft 1234123456789 9 -> 1234123456789000000000 +shlx1310 shiftleft 1234123456789 10 -> 12341234567890000000000 +shlx1311 shiftleft 1234123456789 11 -> 123412345678900000000000 +shlx1312 shiftleft 1234123456789 12 -> 1234123456789000000000000 +shlx1313 shiftleft 1234123456789 13 -> 12341234567890000000000000 +shlx1314 shiftleft 1234123456789 14 -> 123412345678900000000000000 +shlx1315 shiftleft 1234123456789 15 -> 1234123456789000000000000000 +shlx1316 shiftleft 1234123456789 16 -> 12341234567890000000000000000 +shlx1317 shiftleft 1234123456789 17 -> 123412345678900000000000000000 +shlx1318 shiftleft 1234123456789 18 -> 1234123456789000000000000000000 +shlx1319 shiftleft 1234123456789 19 -> 12341234567890000000000000000000 +shlx1320 shiftleft 1234123456789 20 -> 123412345678900000000000000000000 +shlx1321 shiftleft 1234123456789 21 -> 1234123456789000000000000000000000 +shlx1322 shiftleft 1234123456789 22 -> 12341234567890000000000000000000000 +shlx1323 shiftleft 1234123456789 23 -> 123412345678900000000000000000000000 +shlx1324 shiftleft 1234123456789 24 -> 1234123456789000000000000000000000000 +shlx1325 shiftleft 1234123456789 25 -> 12341234567890000000000000000000000000 +shlx1326 shiftleft 1234123456789 26 -> 123412345678900000000000000000000000000 +shlx1327 shiftleft 1234123456789 27 -> 1234123456789000000000000000000000000000 +shlx1328 shiftleft 1234123456789 28 -> 12341234567890000000000000000000000000000 +shlx1329 shiftleft 1234123456789 29 -> 123412345678900000000000000000000000000000 +shlx1330 shiftleft 1234123456789 30 -> 1234123456789000000000000000000000000000000 +shlx1331 shiftleft 1234123456789 31 -> 12341234567890000000000000000000000000000000 +shlx1332 shiftleft 1234123456789 32 -> 123412345678900000000000000000000000000000000 +shlx1333 shiftleft 1234123456789 33 -> 1234123456789000000000000000000000000000000000 +shlx1334 shiftleft 1234123456789 34 -> 12341234567890000000000000000000000000000000000 +shlx1335 shiftleft 1234123456789 35 -> 123412345678900000000000000000000000000000000000 +shlx1336 shiftleft 1234123456789 36 -> 1234123456789000000000000000000000000000000000000 +shlx1337 shiftleft 1234123456789 37 -> 12341234567890000000000000000000000000000000000000 +shlx1338 shiftleft 1234123456789 38 -> 123412345678900000000000000000000000000000000000000 +shlx1339 shiftleft 1234123456789 39 -> 1234123456789000000000000000000000000000000000000000 +shlx1340 shiftleft 1234123456789 40 -> 12341234567890000000000000000000000000000000000000000 +shlx1341 shiftleft 1234123456789 41 -> 123412345678900000000000000000000000000000000000000000 +shlx1342 shiftleft 1234123456789 42 -> 1234123456789000000000000000000000000000000000000000000 +shlx1343 shiftleft 1234123456789 43 -> 12341234567890000000000000000000000000000000000000000000 +shlx1344 shiftleft 1234123456789 44 -> 123412345678900000000000000000000000000000000000000000000 +shlx1345 shiftleft 1234123456789 45 -> 1234123456789000000000000000000000000000000000000000000000 +shlx1346 shiftleft 1234123456789 46 -> 12341234567890000000000000000000000000000000000000000000000 +shlx1347 shiftleft 1234123456789 47 -> 123412345678900000000000000000000000000000000000000000000000 +shlx1348 shiftleft 1234123456789 48 -> 1234123456789000000000000000000000000000000000000000000000000 +shlx1349 shiftleft 1234123456789 49 -> 12341234567890000000000000000000000000000000000000000000000000 +shlx1350 shiftleft 1234123456789 50 -> 123412345678900000000000000000000000000000000000000000000000000 +shlx1351 shiftleft 1234123456789 51 -> 1234123456789000000000000000000000000000000000000000000000000000 +shlx1352 shiftleft 1234123456789 52 -> 12341234567890000000000000000000000000000000000000000000000000000 +shlx1353 shiftleft 1234123456789 53 -> 123412345678900000000000000000000000000000000000000000000000000000 +shlx1354 shiftleft 1234123456789 54 -> 1234123456789000000000000000000000000000000000000000000000000000000 +shlx1355 shiftleft 1234123456789 55 -> 12341234567890000000000000000000000000000000000000000000000000000000 +shlx1356 shiftleft 1234123456789 56 -> 123412345678900000000000000000000000000000000000000000000000000000000 +shlx1357 shiftleft 1234123456789 57 -> 1234123456789000000000000000000000000000000000000000000000000000000000 +shlx1358 shiftleft 1234123456789 58 -> 12341234567890000000000000000000000000000000000000000000000000000000000 +shlx1359 shiftleft 1234123456789 59 -> 123412345678900000000000000000000000000000000000000000000000000000000000 +shlx1360 shiftleft 1234123456789 60 -> 1234123456789000000000000000000000000000000000000000000000000000000000000 +shlx1361 shiftleft 1234123456789 61 -> 12341234567890000000000000000000000000000000000000000000000000000000000000 +shlx1362 shiftleft 1234123456789 62 -> 123412345678900000000000000000000000000000000000000000000000000000000000000 +shlx1363 shiftleft 1234123456789 63 -> 1234123456789000000000000000000000000000000000000000000000000000000000000000 +shlx1364 shiftleft 1234123456789 64 -> 12341234567890000000000000000000000000000000000000000000000000000000000000000 +shlx1365 shiftleft 1234123456789 65 -> 123412345678900000000000000000000000000000000000000000000000000000000000000000 +shlx1366 shiftleft 1234123456789 66 -> 1234123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx1367 shiftleft 1234123456789 67 -> 12341234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx1368 shiftleft 1234123456789 68 -> 123412345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx1369 shiftleft 1234123456789 69 -> 1234123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx1370 shiftleft 1234123456789 70 -> 12341234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx1371 shiftleft 1234123456789 71 -> 123412345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx1372 shiftleft 1234123456789 72 -> 1234123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1373 shiftleft 1234123456789 73 -> 12341234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1374 shiftleft 1234123456789 74 -> 123412345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1375 shiftleft 1234123456789 75 -> 1234123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1376 shiftleft 1234123456789 76 -> 12341234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1377 shiftleft 1234123456789 77 -> 123412345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1378 shiftleft 1234123456789 78 -> 1234123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1379 shiftleft 1234123456789 79 -> 12341234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1380 shiftleft 1234123456789 80 -> 123412345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1381 shiftleft 1234123456789 81 -> 1234123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1382 shiftleft 1234123456789 82 -> 12341234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1383 shiftleft 1234123456789 83 -> 123412345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1384 shiftleft 1234123456789 84 -> 1234123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1385 shiftleft 1234123456789 85 -> 12341234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1386 shiftleft 1234123456789 86 -> 123412345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1387 shiftleft 1234123456789 87 -> 1234123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1388 shiftleft 1234123456789 88 -> 12341234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1389 shiftleft 1234123456789 89 -> 123412345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1390 shiftleft 1234123456789 90 -> 1234123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1391 shiftleft 1234123456789 91 -> 12341234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1392 shiftleft 1234123456789 92 -> 123412345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1393 shiftleft 1234123456789 93 -> 1234123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1394 shiftleft 1234123456789 94 -> 12341234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1395 shiftleft 1234123456789 95 -> 123412345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1396 shiftleft 1234123456789 96 -> 1234123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1397 shiftleft 1234123456789 97 -> 12341234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1398 shiftleft 1234123456789 98 -> 123412345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1399 shiftleft 1234123456789 99 -> 1234123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1400 shiftleft 12345123456789 0 -> 12345123456789 +shlx1401 shiftleft 12345123456789 1 -> 123451234567890 +shlx1402 shiftleft 12345123456789 2 -> 1234512345678900 +shlx1403 shiftleft 12345123456789 3 -> 12345123456789000 +shlx1404 shiftleft 12345123456789 4 -> 123451234567890000 +shlx1405 shiftleft 12345123456789 5 -> 1234512345678900000 +shlx1406 shiftleft 12345123456789 6 -> 12345123456789000000 +shlx1407 shiftleft 12345123456789 7 -> 123451234567890000000 +shlx1408 shiftleft 12345123456789 8 -> 1234512345678900000000 +shlx1409 shiftleft 12345123456789 9 -> 12345123456789000000000 +shlx1410 shiftleft 12345123456789 10 -> 123451234567890000000000 +shlx1411 shiftleft 12345123456789 11 -> 1234512345678900000000000 +shlx1412 shiftleft 12345123456789 12 -> 12345123456789000000000000 +shlx1413 shiftleft 12345123456789 13 -> 123451234567890000000000000 +shlx1414 shiftleft 12345123456789 14 -> 1234512345678900000000000000 +shlx1415 shiftleft 12345123456789 15 -> 12345123456789000000000000000 +shlx1416 shiftleft 12345123456789 16 -> 123451234567890000000000000000 +shlx1417 shiftleft 12345123456789 17 -> 1234512345678900000000000000000 +shlx1418 shiftleft 12345123456789 18 -> 12345123456789000000000000000000 +shlx1419 shiftleft 12345123456789 19 -> 123451234567890000000000000000000 +shlx1420 shiftleft 12345123456789 20 -> 1234512345678900000000000000000000 +shlx1421 shiftleft 12345123456789 21 -> 12345123456789000000000000000000000 +shlx1422 shiftleft 12345123456789 22 -> 123451234567890000000000000000000000 +shlx1423 shiftleft 12345123456789 23 -> 1234512345678900000000000000000000000 +shlx1424 shiftleft 12345123456789 24 -> 12345123456789000000000000000000000000 +shlx1425 shiftleft 12345123456789 25 -> 123451234567890000000000000000000000000 +shlx1426 shiftleft 12345123456789 26 -> 1234512345678900000000000000000000000000 +shlx1427 shiftleft 12345123456789 27 -> 12345123456789000000000000000000000000000 +shlx1428 shiftleft 12345123456789 28 -> 123451234567890000000000000000000000000000 +shlx1429 shiftleft 12345123456789 29 -> 1234512345678900000000000000000000000000000 +shlx1430 shiftleft 12345123456789 30 -> 12345123456789000000000000000000000000000000 +shlx1431 shiftleft 12345123456789 31 -> 123451234567890000000000000000000000000000000 +shlx1432 shiftleft 12345123456789 32 -> 1234512345678900000000000000000000000000000000 +shlx1433 shiftleft 12345123456789 33 -> 12345123456789000000000000000000000000000000000 +shlx1434 shiftleft 12345123456789 34 -> 123451234567890000000000000000000000000000000000 +shlx1435 shiftleft 12345123456789 35 -> 1234512345678900000000000000000000000000000000000 +shlx1436 shiftleft 12345123456789 36 -> 12345123456789000000000000000000000000000000000000 +shlx1437 shiftleft 12345123456789 37 -> 123451234567890000000000000000000000000000000000000 +shlx1438 shiftleft 12345123456789 38 -> 1234512345678900000000000000000000000000000000000000 +shlx1439 shiftleft 12345123456789 39 -> 12345123456789000000000000000000000000000000000000000 +shlx1440 shiftleft 12345123456789 40 -> 123451234567890000000000000000000000000000000000000000 +shlx1441 shiftleft 12345123456789 41 -> 1234512345678900000000000000000000000000000000000000000 +shlx1442 shiftleft 12345123456789 42 -> 12345123456789000000000000000000000000000000000000000000 +shlx1443 shiftleft 12345123456789 43 -> 123451234567890000000000000000000000000000000000000000000 +shlx1444 shiftleft 12345123456789 44 -> 1234512345678900000000000000000000000000000000000000000000 +shlx1445 shiftleft 12345123456789 45 -> 12345123456789000000000000000000000000000000000000000000000 +shlx1446 shiftleft 12345123456789 46 -> 123451234567890000000000000000000000000000000000000000000000 +shlx1447 shiftleft 12345123456789 47 -> 1234512345678900000000000000000000000000000000000000000000000 +shlx1448 shiftleft 12345123456789 48 -> 12345123456789000000000000000000000000000000000000000000000000 +shlx1449 shiftleft 12345123456789 49 -> 123451234567890000000000000000000000000000000000000000000000000 +shlx1450 shiftleft 12345123456789 50 -> 1234512345678900000000000000000000000000000000000000000000000000 +shlx1451 shiftleft 12345123456789 51 -> 12345123456789000000000000000000000000000000000000000000000000000 +shlx1452 shiftleft 12345123456789 52 -> 123451234567890000000000000000000000000000000000000000000000000000 +shlx1453 shiftleft 12345123456789 53 -> 1234512345678900000000000000000000000000000000000000000000000000000 +shlx1454 shiftleft 12345123456789 54 -> 12345123456789000000000000000000000000000000000000000000000000000000 +shlx1455 shiftleft 12345123456789 55 -> 123451234567890000000000000000000000000000000000000000000000000000000 +shlx1456 shiftleft 12345123456789 56 -> 1234512345678900000000000000000000000000000000000000000000000000000000 +shlx1457 shiftleft 12345123456789 57 -> 12345123456789000000000000000000000000000000000000000000000000000000000 +shlx1458 shiftleft 12345123456789 58 -> 123451234567890000000000000000000000000000000000000000000000000000000000 +shlx1459 shiftleft 12345123456789 59 -> 1234512345678900000000000000000000000000000000000000000000000000000000000 +shlx1460 shiftleft 12345123456789 60 -> 12345123456789000000000000000000000000000000000000000000000000000000000000 +shlx1461 shiftleft 12345123456789 61 -> 123451234567890000000000000000000000000000000000000000000000000000000000000 +shlx1462 shiftleft 12345123456789 62 -> 1234512345678900000000000000000000000000000000000000000000000000000000000000 +shlx1463 shiftleft 12345123456789 63 -> 12345123456789000000000000000000000000000000000000000000000000000000000000000 +shlx1464 shiftleft 12345123456789 64 -> 123451234567890000000000000000000000000000000000000000000000000000000000000000 +shlx1465 shiftleft 12345123456789 65 -> 1234512345678900000000000000000000000000000000000000000000000000000000000000000 +shlx1466 shiftleft 12345123456789 66 -> 12345123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx1467 shiftleft 12345123456789 67 -> 123451234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx1468 shiftleft 12345123456789 68 -> 1234512345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx1469 shiftleft 12345123456789 69 -> 12345123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx1470 shiftleft 12345123456789 70 -> 123451234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx1471 shiftleft 12345123456789 71 -> 1234512345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx1472 shiftleft 12345123456789 72 -> 12345123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1473 shiftleft 12345123456789 73 -> 123451234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1474 shiftleft 12345123456789 74 -> 1234512345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1475 shiftleft 12345123456789 75 -> 12345123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1476 shiftleft 12345123456789 76 -> 123451234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1477 shiftleft 12345123456789 77 -> 1234512345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1478 shiftleft 12345123456789 78 -> 12345123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1479 shiftleft 12345123456789 79 -> 123451234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1480 shiftleft 12345123456789 80 -> 1234512345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1481 shiftleft 12345123456789 81 -> 12345123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1482 shiftleft 12345123456789 82 -> 123451234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1483 shiftleft 12345123456789 83 -> 1234512345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1484 shiftleft 12345123456789 84 -> 12345123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1485 shiftleft 12345123456789 85 -> 123451234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1486 shiftleft 12345123456789 86 -> 1234512345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1487 shiftleft 12345123456789 87 -> 12345123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1488 shiftleft 12345123456789 88 -> 123451234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1489 shiftleft 12345123456789 89 -> 1234512345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1490 shiftleft 12345123456789 90 -> 12345123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1491 shiftleft 12345123456789 91 -> 123451234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1492 shiftleft 12345123456789 92 -> 1234512345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1493 shiftleft 12345123456789 93 -> 12345123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1494 shiftleft 12345123456789 94 -> 123451234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1495 shiftleft 12345123456789 95 -> 1234512345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1496 shiftleft 12345123456789 96 -> 12345123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1497 shiftleft 12345123456789 97 -> 123451234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1498 shiftleft 12345123456789 98 -> 1234512345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1499 shiftleft 12345123456789 99 -> 12345123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1500 shiftleft 123456123456789 0 -> 123456123456789 +shlx1501 shiftleft 123456123456789 1 -> 1234561234567890 +shlx1502 shiftleft 123456123456789 2 -> 12345612345678900 +shlx1503 shiftleft 123456123456789 3 -> 123456123456789000 +shlx1504 shiftleft 123456123456789 4 -> 1234561234567890000 +shlx1505 shiftleft 123456123456789 5 -> 12345612345678900000 +shlx1506 shiftleft 123456123456789 6 -> 123456123456789000000 +shlx1507 shiftleft 123456123456789 7 -> 1234561234567890000000 +shlx1508 shiftleft 123456123456789 8 -> 12345612345678900000000 +shlx1509 shiftleft 123456123456789 9 -> 123456123456789000000000 +shlx1510 shiftleft 123456123456789 10 -> 1234561234567890000000000 +shlx1511 shiftleft 123456123456789 11 -> 12345612345678900000000000 +shlx1512 shiftleft 123456123456789 12 -> 123456123456789000000000000 +shlx1513 shiftleft 123456123456789 13 -> 1234561234567890000000000000 +shlx1514 shiftleft 123456123456789 14 -> 12345612345678900000000000000 +shlx1515 shiftleft 123456123456789 15 -> 123456123456789000000000000000 +shlx1516 shiftleft 123456123456789 16 -> 1234561234567890000000000000000 +shlx1517 shiftleft 123456123456789 17 -> 12345612345678900000000000000000 +shlx1518 shiftleft 123456123456789 18 -> 123456123456789000000000000000000 +shlx1519 shiftleft 123456123456789 19 -> 1234561234567890000000000000000000 +shlx1520 shiftleft 123456123456789 20 -> 12345612345678900000000000000000000 +shlx1521 shiftleft 123456123456789 21 -> 123456123456789000000000000000000000 +shlx1522 shiftleft 123456123456789 22 -> 1234561234567890000000000000000000000 +shlx1523 shiftleft 123456123456789 23 -> 12345612345678900000000000000000000000 +shlx1524 shiftleft 123456123456789 24 -> 123456123456789000000000000000000000000 +shlx1525 shiftleft 123456123456789 25 -> 1234561234567890000000000000000000000000 +shlx1526 shiftleft 123456123456789 26 -> 12345612345678900000000000000000000000000 +shlx1527 shiftleft 123456123456789 27 -> 123456123456789000000000000000000000000000 +shlx1528 shiftleft 123456123456789 28 -> 1234561234567890000000000000000000000000000 +shlx1529 shiftleft 123456123456789 29 -> 12345612345678900000000000000000000000000000 +shlx1530 shiftleft 123456123456789 30 -> 123456123456789000000000000000000000000000000 +shlx1531 shiftleft 123456123456789 31 -> 1234561234567890000000000000000000000000000000 +shlx1532 shiftleft 123456123456789 32 -> 12345612345678900000000000000000000000000000000 +shlx1533 shiftleft 123456123456789 33 -> 123456123456789000000000000000000000000000000000 +shlx1534 shiftleft 123456123456789 34 -> 1234561234567890000000000000000000000000000000000 +shlx1535 shiftleft 123456123456789 35 -> 12345612345678900000000000000000000000000000000000 +shlx1536 shiftleft 123456123456789 36 -> 123456123456789000000000000000000000000000000000000 +shlx1537 shiftleft 123456123456789 37 -> 1234561234567890000000000000000000000000000000000000 +shlx1538 shiftleft 123456123456789 38 -> 12345612345678900000000000000000000000000000000000000 +shlx1539 shiftleft 123456123456789 39 -> 123456123456789000000000000000000000000000000000000000 +shlx1540 shiftleft 123456123456789 40 -> 1234561234567890000000000000000000000000000000000000000 +shlx1541 shiftleft 123456123456789 41 -> 12345612345678900000000000000000000000000000000000000000 +shlx1542 shiftleft 123456123456789 42 -> 123456123456789000000000000000000000000000000000000000000 +shlx1543 shiftleft 123456123456789 43 -> 1234561234567890000000000000000000000000000000000000000000 +shlx1544 shiftleft 123456123456789 44 -> 12345612345678900000000000000000000000000000000000000000000 +shlx1545 shiftleft 123456123456789 45 -> 123456123456789000000000000000000000000000000000000000000000 +shlx1546 shiftleft 123456123456789 46 -> 1234561234567890000000000000000000000000000000000000000000000 +shlx1547 shiftleft 123456123456789 47 -> 12345612345678900000000000000000000000000000000000000000000000 +shlx1548 shiftleft 123456123456789 48 -> 123456123456789000000000000000000000000000000000000000000000000 +shlx1549 shiftleft 123456123456789 49 -> 1234561234567890000000000000000000000000000000000000000000000000 +shlx1550 shiftleft 123456123456789 50 -> 12345612345678900000000000000000000000000000000000000000000000000 +shlx1551 shiftleft 123456123456789 51 -> 123456123456789000000000000000000000000000000000000000000000000000 +shlx1552 shiftleft 123456123456789 52 -> 1234561234567890000000000000000000000000000000000000000000000000000 +shlx1553 shiftleft 123456123456789 53 -> 12345612345678900000000000000000000000000000000000000000000000000000 +shlx1554 shiftleft 123456123456789 54 -> 123456123456789000000000000000000000000000000000000000000000000000000 +shlx1555 shiftleft 123456123456789 55 -> 1234561234567890000000000000000000000000000000000000000000000000000000 +shlx1556 shiftleft 123456123456789 56 -> 12345612345678900000000000000000000000000000000000000000000000000000000 +shlx1557 shiftleft 123456123456789 57 -> 123456123456789000000000000000000000000000000000000000000000000000000000 +shlx1558 shiftleft 123456123456789 58 -> 1234561234567890000000000000000000000000000000000000000000000000000000000 +shlx1559 shiftleft 123456123456789 59 -> 12345612345678900000000000000000000000000000000000000000000000000000000000 +shlx1560 shiftleft 123456123456789 60 -> 123456123456789000000000000000000000000000000000000000000000000000000000000 +shlx1561 shiftleft 123456123456789 61 -> 1234561234567890000000000000000000000000000000000000000000000000000000000000 +shlx1562 shiftleft 123456123456789 62 -> 12345612345678900000000000000000000000000000000000000000000000000000000000000 +shlx1563 shiftleft 123456123456789 63 -> 123456123456789000000000000000000000000000000000000000000000000000000000000000 +shlx1564 shiftleft 123456123456789 64 -> 1234561234567890000000000000000000000000000000000000000000000000000000000000000 +shlx1565 shiftleft 123456123456789 65 -> 12345612345678900000000000000000000000000000000000000000000000000000000000000000 +shlx1566 shiftleft 123456123456789 66 -> 123456123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx1567 shiftleft 123456123456789 67 -> 1234561234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx1568 shiftleft 123456123456789 68 -> 12345612345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx1569 shiftleft 123456123456789 69 -> 123456123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx1570 shiftleft 123456123456789 70 -> 1234561234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx1571 shiftleft 123456123456789 71 -> 12345612345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx1572 shiftleft 123456123456789 72 -> 123456123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1573 shiftleft 123456123456789 73 -> 1234561234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1574 shiftleft 123456123456789 74 -> 12345612345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1575 shiftleft 123456123456789 75 -> 123456123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1576 shiftleft 123456123456789 76 -> 1234561234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1577 shiftleft 123456123456789 77 -> 12345612345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1578 shiftleft 123456123456789 78 -> 123456123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1579 shiftleft 123456123456789 79 -> 1234561234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1580 shiftleft 123456123456789 80 -> 12345612345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1581 shiftleft 123456123456789 81 -> 123456123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1582 shiftleft 123456123456789 82 -> 1234561234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1583 shiftleft 123456123456789 83 -> 12345612345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1584 shiftleft 123456123456789 84 -> 123456123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1585 shiftleft 123456123456789 85 -> 1234561234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1586 shiftleft 123456123456789 86 -> 12345612345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1587 shiftleft 123456123456789 87 -> 123456123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1588 shiftleft 123456123456789 88 -> 1234561234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1589 shiftleft 123456123456789 89 -> 12345612345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1590 shiftleft 123456123456789 90 -> 123456123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1591 shiftleft 123456123456789 91 -> 1234561234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1592 shiftleft 123456123456789 92 -> 12345612345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1593 shiftleft 123456123456789 93 -> 123456123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1594 shiftleft 123456123456789 94 -> 1234561234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1595 shiftleft 123456123456789 95 -> 12345612345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1596 shiftleft 123456123456789 96 -> 123456123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1597 shiftleft 123456123456789 97 -> 1234561234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1598 shiftleft 123456123456789 98 -> 12345612345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1599 shiftleft 123456123456789 99 -> 123456123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1600 shiftleft 1234567123456789 0 -> 1234567123456789 +shlx1601 shiftleft 1234567123456789 1 -> 12345671234567890 +shlx1602 shiftleft 1234567123456789 2 -> 123456712345678900 +shlx1603 shiftleft 1234567123456789 3 -> 1234567123456789000 +shlx1604 shiftleft 1234567123456789 4 -> 12345671234567890000 +shlx1605 shiftleft 1234567123456789 5 -> 123456712345678900000 +shlx1606 shiftleft 1234567123456789 6 -> 1234567123456789000000 +shlx1607 shiftleft 1234567123456789 7 -> 12345671234567890000000 +shlx1608 shiftleft 1234567123456789 8 -> 123456712345678900000000 +shlx1609 shiftleft 1234567123456789 9 -> 1234567123456789000000000 +shlx1610 shiftleft 1234567123456789 10 -> 12345671234567890000000000 +shlx1611 shiftleft 1234567123456789 11 -> 123456712345678900000000000 +shlx1612 shiftleft 1234567123456789 12 -> 1234567123456789000000000000 +shlx1613 shiftleft 1234567123456789 13 -> 12345671234567890000000000000 +shlx1614 shiftleft 1234567123456789 14 -> 123456712345678900000000000000 +shlx1615 shiftleft 1234567123456789 15 -> 1234567123456789000000000000000 +shlx1616 shiftleft 1234567123456789 16 -> 12345671234567890000000000000000 +shlx1617 shiftleft 1234567123456789 17 -> 123456712345678900000000000000000 +shlx1618 shiftleft 1234567123456789 18 -> 1234567123456789000000000000000000 +shlx1619 shiftleft 1234567123456789 19 -> 12345671234567890000000000000000000 +shlx1620 shiftleft 1234567123456789 20 -> 123456712345678900000000000000000000 +shlx1621 shiftleft 1234567123456789 21 -> 1234567123456789000000000000000000000 +shlx1622 shiftleft 1234567123456789 22 -> 12345671234567890000000000000000000000 +shlx1623 shiftleft 1234567123456789 23 -> 123456712345678900000000000000000000000 +shlx1624 shiftleft 1234567123456789 24 -> 1234567123456789000000000000000000000000 +shlx1625 shiftleft 1234567123456789 25 -> 12345671234567890000000000000000000000000 +shlx1626 shiftleft 1234567123456789 26 -> 123456712345678900000000000000000000000000 +shlx1627 shiftleft 1234567123456789 27 -> 1234567123456789000000000000000000000000000 +shlx1628 shiftleft 1234567123456789 28 -> 12345671234567890000000000000000000000000000 +shlx1629 shiftleft 1234567123456789 29 -> 123456712345678900000000000000000000000000000 +shlx1630 shiftleft 1234567123456789 30 -> 1234567123456789000000000000000000000000000000 +shlx1631 shiftleft 1234567123456789 31 -> 12345671234567890000000000000000000000000000000 +shlx1632 shiftleft 1234567123456789 32 -> 123456712345678900000000000000000000000000000000 +shlx1633 shiftleft 1234567123456789 33 -> 1234567123456789000000000000000000000000000000000 +shlx1634 shiftleft 1234567123456789 34 -> 12345671234567890000000000000000000000000000000000 +shlx1635 shiftleft 1234567123456789 35 -> 123456712345678900000000000000000000000000000000000 +shlx1636 shiftleft 1234567123456789 36 -> 1234567123456789000000000000000000000000000000000000 +shlx1637 shiftleft 1234567123456789 37 -> 12345671234567890000000000000000000000000000000000000 +shlx1638 shiftleft 1234567123456789 38 -> 123456712345678900000000000000000000000000000000000000 +shlx1639 shiftleft 1234567123456789 39 -> 1234567123456789000000000000000000000000000000000000000 +shlx1640 shiftleft 1234567123456789 40 -> 12345671234567890000000000000000000000000000000000000000 +shlx1641 shiftleft 1234567123456789 41 -> 123456712345678900000000000000000000000000000000000000000 +shlx1642 shiftleft 1234567123456789 42 -> 1234567123456789000000000000000000000000000000000000000000 +shlx1643 shiftleft 1234567123456789 43 -> 12345671234567890000000000000000000000000000000000000000000 +shlx1644 shiftleft 1234567123456789 44 -> 123456712345678900000000000000000000000000000000000000000000 +shlx1645 shiftleft 1234567123456789 45 -> 1234567123456789000000000000000000000000000000000000000000000 +shlx1646 shiftleft 1234567123456789 46 -> 12345671234567890000000000000000000000000000000000000000000000 +shlx1647 shiftleft 1234567123456789 47 -> 123456712345678900000000000000000000000000000000000000000000000 +shlx1648 shiftleft 1234567123456789 48 -> 1234567123456789000000000000000000000000000000000000000000000000 +shlx1649 shiftleft 1234567123456789 49 -> 12345671234567890000000000000000000000000000000000000000000000000 +shlx1650 shiftleft 1234567123456789 50 -> 123456712345678900000000000000000000000000000000000000000000000000 +shlx1651 shiftleft 1234567123456789 51 -> 1234567123456789000000000000000000000000000000000000000000000000000 +shlx1652 shiftleft 1234567123456789 52 -> 12345671234567890000000000000000000000000000000000000000000000000000 +shlx1653 shiftleft 1234567123456789 53 -> 123456712345678900000000000000000000000000000000000000000000000000000 +shlx1654 shiftleft 1234567123456789 54 -> 1234567123456789000000000000000000000000000000000000000000000000000000 +shlx1655 shiftleft 1234567123456789 55 -> 12345671234567890000000000000000000000000000000000000000000000000000000 +shlx1656 shiftleft 1234567123456789 56 -> 123456712345678900000000000000000000000000000000000000000000000000000000 +shlx1657 shiftleft 1234567123456789 57 -> 1234567123456789000000000000000000000000000000000000000000000000000000000 +shlx1658 shiftleft 1234567123456789 58 -> 12345671234567890000000000000000000000000000000000000000000000000000000000 +shlx1659 shiftleft 1234567123456789 59 -> 123456712345678900000000000000000000000000000000000000000000000000000000000 +shlx1660 shiftleft 1234567123456789 60 -> 1234567123456789000000000000000000000000000000000000000000000000000000000000 +shlx1661 shiftleft 1234567123456789 61 -> 12345671234567890000000000000000000000000000000000000000000000000000000000000 +shlx1662 shiftleft 1234567123456789 62 -> 123456712345678900000000000000000000000000000000000000000000000000000000000000 +shlx1663 shiftleft 1234567123456789 63 -> 1234567123456789000000000000000000000000000000000000000000000000000000000000000 +shlx1664 shiftleft 1234567123456789 64 -> 12345671234567890000000000000000000000000000000000000000000000000000000000000000 +shlx1665 shiftleft 1234567123456789 65 -> 123456712345678900000000000000000000000000000000000000000000000000000000000000000 +shlx1666 shiftleft 1234567123456789 66 -> 1234567123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx1667 shiftleft 1234567123456789 67 -> 12345671234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx1668 shiftleft 1234567123456789 68 -> 123456712345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx1669 shiftleft 1234567123456789 69 -> 1234567123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx1670 shiftleft 1234567123456789 70 -> 12345671234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx1671 shiftleft 1234567123456789 71 -> 123456712345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx1672 shiftleft 1234567123456789 72 -> 1234567123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1673 shiftleft 1234567123456789 73 -> 12345671234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1674 shiftleft 1234567123456789 74 -> 123456712345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1675 shiftleft 1234567123456789 75 -> 1234567123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1676 shiftleft 1234567123456789 76 -> 12345671234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1677 shiftleft 1234567123456789 77 -> 123456712345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1678 shiftleft 1234567123456789 78 -> 1234567123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1679 shiftleft 1234567123456789 79 -> 12345671234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1680 shiftleft 1234567123456789 80 -> 123456712345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1681 shiftleft 1234567123456789 81 -> 1234567123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1682 shiftleft 1234567123456789 82 -> 12345671234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1683 shiftleft 1234567123456789 83 -> 123456712345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1684 shiftleft 1234567123456789 84 -> 1234567123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1685 shiftleft 1234567123456789 85 -> 12345671234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1686 shiftleft 1234567123456789 86 -> 123456712345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1687 shiftleft 1234567123456789 87 -> 1234567123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1688 shiftleft 1234567123456789 88 -> 12345671234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1689 shiftleft 1234567123456789 89 -> 123456712345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1690 shiftleft 1234567123456789 90 -> 1234567123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1691 shiftleft 1234567123456789 91 -> 12345671234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1692 shiftleft 1234567123456789 92 -> 123456712345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1693 shiftleft 1234567123456789 93 -> 1234567123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1694 shiftleft 1234567123456789 94 -> 12345671234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1695 shiftleft 1234567123456789 95 -> 123456712345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1696 shiftleft 1234567123456789 96 -> 1234567123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1697 shiftleft 1234567123456789 97 -> 12345671234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1698 shiftleft 1234567123456789 98 -> 123456712345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1699 shiftleft 1234567123456789 99 -> 1234567123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1700 shiftleft 12345678123456789 0 -> 12345678123456789 +shlx1701 shiftleft 12345678123456789 1 -> 123456781234567890 +shlx1702 shiftleft 12345678123456789 2 -> 1234567812345678900 +shlx1703 shiftleft 12345678123456789 3 -> 12345678123456789000 +shlx1704 shiftleft 12345678123456789 4 -> 123456781234567890000 +shlx1705 shiftleft 12345678123456789 5 -> 1234567812345678900000 +shlx1706 shiftleft 12345678123456789 6 -> 12345678123456789000000 +shlx1707 shiftleft 12345678123456789 7 -> 123456781234567890000000 +shlx1708 shiftleft 12345678123456789 8 -> 1234567812345678900000000 +shlx1709 shiftleft 12345678123456789 9 -> 12345678123456789000000000 +shlx1710 shiftleft 12345678123456789 10 -> 123456781234567890000000000 +shlx1711 shiftleft 12345678123456789 11 -> 1234567812345678900000000000 +shlx1712 shiftleft 12345678123456789 12 -> 12345678123456789000000000000 +shlx1713 shiftleft 12345678123456789 13 -> 123456781234567890000000000000 +shlx1714 shiftleft 12345678123456789 14 -> 1234567812345678900000000000000 +shlx1715 shiftleft 12345678123456789 15 -> 12345678123456789000000000000000 +shlx1716 shiftleft 12345678123456789 16 -> 123456781234567890000000000000000 +shlx1717 shiftleft 12345678123456789 17 -> 1234567812345678900000000000000000 +shlx1718 shiftleft 12345678123456789 18 -> 12345678123456789000000000000000000 +shlx1719 shiftleft 12345678123456789 19 -> 123456781234567890000000000000000000 +shlx1720 shiftleft 12345678123456789 20 -> 1234567812345678900000000000000000000 +shlx1721 shiftleft 12345678123456789 21 -> 12345678123456789000000000000000000000 +shlx1722 shiftleft 12345678123456789 22 -> 123456781234567890000000000000000000000 +shlx1723 shiftleft 12345678123456789 23 -> 1234567812345678900000000000000000000000 +shlx1724 shiftleft 12345678123456789 24 -> 12345678123456789000000000000000000000000 +shlx1725 shiftleft 12345678123456789 25 -> 123456781234567890000000000000000000000000 +shlx1726 shiftleft 12345678123456789 26 -> 1234567812345678900000000000000000000000000 +shlx1727 shiftleft 12345678123456789 27 -> 12345678123456789000000000000000000000000000 +shlx1728 shiftleft 12345678123456789 28 -> 123456781234567890000000000000000000000000000 +shlx1729 shiftleft 12345678123456789 29 -> 1234567812345678900000000000000000000000000000 +shlx1730 shiftleft 12345678123456789 30 -> 12345678123456789000000000000000000000000000000 +shlx1731 shiftleft 12345678123456789 31 -> 123456781234567890000000000000000000000000000000 +shlx1732 shiftleft 12345678123456789 32 -> 1234567812345678900000000000000000000000000000000 +shlx1733 shiftleft 12345678123456789 33 -> 12345678123456789000000000000000000000000000000000 +shlx1734 shiftleft 12345678123456789 34 -> 123456781234567890000000000000000000000000000000000 +shlx1735 shiftleft 12345678123456789 35 -> 1234567812345678900000000000000000000000000000000000 +shlx1736 shiftleft 12345678123456789 36 -> 12345678123456789000000000000000000000000000000000000 +shlx1737 shiftleft 12345678123456789 37 -> 123456781234567890000000000000000000000000000000000000 +shlx1738 shiftleft 12345678123456789 38 -> 1234567812345678900000000000000000000000000000000000000 +shlx1739 shiftleft 12345678123456789 39 -> 12345678123456789000000000000000000000000000000000000000 +shlx1740 shiftleft 12345678123456789 40 -> 123456781234567890000000000000000000000000000000000000000 +shlx1741 shiftleft 12345678123456789 41 -> 1234567812345678900000000000000000000000000000000000000000 +shlx1742 shiftleft 12345678123456789 42 -> 12345678123456789000000000000000000000000000000000000000000 +shlx1743 shiftleft 12345678123456789 43 -> 123456781234567890000000000000000000000000000000000000000000 +shlx1744 shiftleft 12345678123456789 44 -> 1234567812345678900000000000000000000000000000000000000000000 +shlx1745 shiftleft 12345678123456789 45 -> 12345678123456789000000000000000000000000000000000000000000000 +shlx1746 shiftleft 12345678123456789 46 -> 123456781234567890000000000000000000000000000000000000000000000 +shlx1747 shiftleft 12345678123456789 47 -> 1234567812345678900000000000000000000000000000000000000000000000 +shlx1748 shiftleft 12345678123456789 48 -> 12345678123456789000000000000000000000000000000000000000000000000 +shlx1749 shiftleft 12345678123456789 49 -> 123456781234567890000000000000000000000000000000000000000000000000 +shlx1750 shiftleft 12345678123456789 50 -> 1234567812345678900000000000000000000000000000000000000000000000000 +shlx1751 shiftleft 12345678123456789 51 -> 12345678123456789000000000000000000000000000000000000000000000000000 +shlx1752 shiftleft 12345678123456789 52 -> 123456781234567890000000000000000000000000000000000000000000000000000 +shlx1753 shiftleft 12345678123456789 53 -> 1234567812345678900000000000000000000000000000000000000000000000000000 +shlx1754 shiftleft 12345678123456789 54 -> 12345678123456789000000000000000000000000000000000000000000000000000000 +shlx1755 shiftleft 12345678123456789 55 -> 123456781234567890000000000000000000000000000000000000000000000000000000 +shlx1756 shiftleft 12345678123456789 56 -> 1234567812345678900000000000000000000000000000000000000000000000000000000 +shlx1757 shiftleft 12345678123456789 57 -> 12345678123456789000000000000000000000000000000000000000000000000000000000 +shlx1758 shiftleft 12345678123456789 58 -> 123456781234567890000000000000000000000000000000000000000000000000000000000 +shlx1759 shiftleft 12345678123456789 59 -> 1234567812345678900000000000000000000000000000000000000000000000000000000000 +shlx1760 shiftleft 12345678123456789 60 -> 12345678123456789000000000000000000000000000000000000000000000000000000000000 +shlx1761 shiftleft 12345678123456789 61 -> 123456781234567890000000000000000000000000000000000000000000000000000000000000 +shlx1762 shiftleft 12345678123456789 62 -> 1234567812345678900000000000000000000000000000000000000000000000000000000000000 +shlx1763 shiftleft 12345678123456789 63 -> 12345678123456789000000000000000000000000000000000000000000000000000000000000000 +shlx1764 shiftleft 12345678123456789 64 -> 123456781234567890000000000000000000000000000000000000000000000000000000000000000 +shlx1765 shiftleft 12345678123456789 65 -> 1234567812345678900000000000000000000000000000000000000000000000000000000000000000 +shlx1766 shiftleft 12345678123456789 66 -> 12345678123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx1767 shiftleft 12345678123456789 67 -> 123456781234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx1768 shiftleft 12345678123456789 68 -> 1234567812345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx1769 shiftleft 12345678123456789 69 -> 12345678123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx1770 shiftleft 12345678123456789 70 -> 123456781234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx1771 shiftleft 12345678123456789 71 -> 1234567812345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx1772 shiftleft 12345678123456789 72 -> 12345678123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1773 shiftleft 12345678123456789 73 -> 123456781234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1774 shiftleft 12345678123456789 74 -> 1234567812345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1775 shiftleft 12345678123456789 75 -> 12345678123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1776 shiftleft 12345678123456789 76 -> 123456781234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1777 shiftleft 12345678123456789 77 -> 1234567812345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1778 shiftleft 12345678123456789 78 -> 12345678123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1779 shiftleft 12345678123456789 79 -> 123456781234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1780 shiftleft 12345678123456789 80 -> 1234567812345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1781 shiftleft 12345678123456789 81 -> 12345678123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1782 shiftleft 12345678123456789 82 -> 123456781234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1783 shiftleft 12345678123456789 83 -> 1234567812345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1784 shiftleft 12345678123456789 84 -> 12345678123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1785 shiftleft 12345678123456789 85 -> 123456781234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1786 shiftleft 12345678123456789 86 -> 1234567812345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1787 shiftleft 12345678123456789 87 -> 12345678123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1788 shiftleft 12345678123456789 88 -> 123456781234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1789 shiftleft 12345678123456789 89 -> 1234567812345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1790 shiftleft 12345678123456789 90 -> 12345678123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1791 shiftleft 12345678123456789 91 -> 123456781234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1792 shiftleft 12345678123456789 92 -> 1234567812345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1793 shiftleft 12345678123456789 93 -> 12345678123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1794 shiftleft 12345678123456789 94 -> 123456781234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1795 shiftleft 12345678123456789 95 -> 1234567812345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1796 shiftleft 12345678123456789 96 -> 12345678123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1797 shiftleft 12345678123456789 97 -> 123456781234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1798 shiftleft 12345678123456789 98 -> 1234567812345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1799 shiftleft 12345678123456789 99 -> 12345678123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1800 shiftleft 123456789123456789 0 -> 123456789123456789 +shlx1801 shiftleft 123456789123456789 1 -> 1234567891234567890 +shlx1802 shiftleft 123456789123456789 2 -> 12345678912345678900 +shlx1803 shiftleft 123456789123456789 3 -> 123456789123456789000 +shlx1804 shiftleft 123456789123456789 4 -> 1234567891234567890000 +shlx1805 shiftleft 123456789123456789 5 -> 12345678912345678900000 +shlx1806 shiftleft 123456789123456789 6 -> 123456789123456789000000 +shlx1807 shiftleft 123456789123456789 7 -> 1234567891234567890000000 +shlx1808 shiftleft 123456789123456789 8 -> 12345678912345678900000000 +shlx1809 shiftleft 123456789123456789 9 -> 123456789123456789000000000 +shlx1810 shiftleft 123456789123456789 10 -> 1234567891234567890000000000 +shlx1811 shiftleft 123456789123456789 11 -> 12345678912345678900000000000 +shlx1812 shiftleft 123456789123456789 12 -> 123456789123456789000000000000 +shlx1813 shiftleft 123456789123456789 13 -> 1234567891234567890000000000000 +shlx1814 shiftleft 123456789123456789 14 -> 12345678912345678900000000000000 +shlx1815 shiftleft 123456789123456789 15 -> 123456789123456789000000000000000 +shlx1816 shiftleft 123456789123456789 16 -> 1234567891234567890000000000000000 +shlx1817 shiftleft 123456789123456789 17 -> 12345678912345678900000000000000000 +shlx1818 shiftleft 123456789123456789 18 -> 123456789123456789000000000000000000 +shlx1819 shiftleft 123456789123456789 19 -> 1234567891234567890000000000000000000 +shlx1820 shiftleft 123456789123456789 20 -> 12345678912345678900000000000000000000 +shlx1821 shiftleft 123456789123456789 21 -> 123456789123456789000000000000000000000 +shlx1822 shiftleft 123456789123456789 22 -> 1234567891234567890000000000000000000000 +shlx1823 shiftleft 123456789123456789 23 -> 12345678912345678900000000000000000000000 +shlx1824 shiftleft 123456789123456789 24 -> 123456789123456789000000000000000000000000 +shlx1825 shiftleft 123456789123456789 25 -> 1234567891234567890000000000000000000000000 +shlx1826 shiftleft 123456789123456789 26 -> 12345678912345678900000000000000000000000000 +shlx1827 shiftleft 123456789123456789 27 -> 123456789123456789000000000000000000000000000 +shlx1828 shiftleft 123456789123456789 28 -> 1234567891234567890000000000000000000000000000 +shlx1829 shiftleft 123456789123456789 29 -> 12345678912345678900000000000000000000000000000 +shlx1830 shiftleft 123456789123456789 30 -> 123456789123456789000000000000000000000000000000 +shlx1831 shiftleft 123456789123456789 31 -> 1234567891234567890000000000000000000000000000000 +shlx1832 shiftleft 123456789123456789 32 -> 12345678912345678900000000000000000000000000000000 +shlx1833 shiftleft 123456789123456789 33 -> 123456789123456789000000000000000000000000000000000 +shlx1834 shiftleft 123456789123456789 34 -> 1234567891234567890000000000000000000000000000000000 +shlx1835 shiftleft 123456789123456789 35 -> 12345678912345678900000000000000000000000000000000000 +shlx1836 shiftleft 123456789123456789 36 -> 123456789123456789000000000000000000000000000000000000 +shlx1837 shiftleft 123456789123456789 37 -> 1234567891234567890000000000000000000000000000000000000 +shlx1838 shiftleft 123456789123456789 38 -> 12345678912345678900000000000000000000000000000000000000 +shlx1839 shiftleft 123456789123456789 39 -> 123456789123456789000000000000000000000000000000000000000 +shlx1840 shiftleft 123456789123456789 40 -> 1234567891234567890000000000000000000000000000000000000000 +shlx1841 shiftleft 123456789123456789 41 -> 12345678912345678900000000000000000000000000000000000000000 +shlx1842 shiftleft 123456789123456789 42 -> 123456789123456789000000000000000000000000000000000000000000 +shlx1843 shiftleft 123456789123456789 43 -> 1234567891234567890000000000000000000000000000000000000000000 +shlx1844 shiftleft 123456789123456789 44 -> 12345678912345678900000000000000000000000000000000000000000000 +shlx1845 shiftleft 123456789123456789 45 -> 123456789123456789000000000000000000000000000000000000000000000 +shlx1846 shiftleft 123456789123456789 46 -> 1234567891234567890000000000000000000000000000000000000000000000 +shlx1847 shiftleft 123456789123456789 47 -> 12345678912345678900000000000000000000000000000000000000000000000 +shlx1848 shiftleft 123456789123456789 48 -> 123456789123456789000000000000000000000000000000000000000000000000 +shlx1849 shiftleft 123456789123456789 49 -> 1234567891234567890000000000000000000000000000000000000000000000000 +shlx1850 shiftleft 123456789123456789 50 -> 12345678912345678900000000000000000000000000000000000000000000000000 +shlx1851 shiftleft 123456789123456789 51 -> 123456789123456789000000000000000000000000000000000000000000000000000 +shlx1852 shiftleft 123456789123456789 52 -> 1234567891234567890000000000000000000000000000000000000000000000000000 +shlx1853 shiftleft 123456789123456789 53 -> 12345678912345678900000000000000000000000000000000000000000000000000000 +shlx1854 shiftleft 123456789123456789 54 -> 123456789123456789000000000000000000000000000000000000000000000000000000 +shlx1855 shiftleft 123456789123456789 55 -> 1234567891234567890000000000000000000000000000000000000000000000000000000 +shlx1856 shiftleft 123456789123456789 56 -> 12345678912345678900000000000000000000000000000000000000000000000000000000 +shlx1857 shiftleft 123456789123456789 57 -> 123456789123456789000000000000000000000000000000000000000000000000000000000 +shlx1858 shiftleft 123456789123456789 58 -> 1234567891234567890000000000000000000000000000000000000000000000000000000000 +shlx1859 shiftleft 123456789123456789 59 -> 12345678912345678900000000000000000000000000000000000000000000000000000000000 +shlx1860 shiftleft 123456789123456789 60 -> 123456789123456789000000000000000000000000000000000000000000000000000000000000 +shlx1861 shiftleft 123456789123456789 61 -> 1234567891234567890000000000000000000000000000000000000000000000000000000000000 +shlx1862 shiftleft 123456789123456789 62 -> 12345678912345678900000000000000000000000000000000000000000000000000000000000000 +shlx1863 shiftleft 123456789123456789 63 -> 123456789123456789000000000000000000000000000000000000000000000000000000000000000 +shlx1864 shiftleft 123456789123456789 64 -> 1234567891234567890000000000000000000000000000000000000000000000000000000000000000 +shlx1865 shiftleft 123456789123456789 65 -> 12345678912345678900000000000000000000000000000000000000000000000000000000000000000 +shlx1866 shiftleft 123456789123456789 66 -> 123456789123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx1867 shiftleft 123456789123456789 67 -> 1234567891234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx1868 shiftleft 123456789123456789 68 -> 12345678912345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx1869 shiftleft 123456789123456789 69 -> 123456789123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx1870 shiftleft 123456789123456789 70 -> 1234567891234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx1871 shiftleft 123456789123456789 71 -> 12345678912345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx1872 shiftleft 123456789123456789 72 -> 123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1873 shiftleft 123456789123456789 73 -> 1234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1874 shiftleft 123456789123456789 74 -> 12345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1875 shiftleft 123456789123456789 75 -> 123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1876 shiftleft 123456789123456789 76 -> 1234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1877 shiftleft 123456789123456789 77 -> 12345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1878 shiftleft 123456789123456789 78 -> 123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1879 shiftleft 123456789123456789 79 -> 1234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1880 shiftleft 123456789123456789 80 -> 12345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1881 shiftleft 123456789123456789 81 -> 123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1882 shiftleft 123456789123456789 82 -> 1234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1883 shiftleft 123456789123456789 83 -> 12345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1884 shiftleft 123456789123456789 84 -> 123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1885 shiftleft 123456789123456789 85 -> 1234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1886 shiftleft 123456789123456789 86 -> 12345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1887 shiftleft 123456789123456789 87 -> 123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1888 shiftleft 123456789123456789 88 -> 1234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1889 shiftleft 123456789123456789 89 -> 12345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1890 shiftleft 123456789123456789 90 -> 123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1891 shiftleft 123456789123456789 91 -> 1234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1892 shiftleft 123456789123456789 92 -> 12345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1893 shiftleft 123456789123456789 93 -> 123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1894 shiftleft 123456789123456789 94 -> 1234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1895 shiftleft 123456789123456789 95 -> 12345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1896 shiftleft 123456789123456789 96 -> 123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1897 shiftleft 123456789123456789 97 -> 1234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1898 shiftleft 123456789123456789 98 -> 12345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1899 shiftleft 123456789123456789 99 -> 123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1900 shiftleft 1123456789123456789 0 -> 1123456789123456789 +shlx1901 shiftleft 1123456789123456789 1 -> 11234567891234567890 +shlx1902 shiftleft 1123456789123456789 2 -> 112345678912345678900 +shlx1903 shiftleft 1123456789123456789 3 -> 1123456789123456789000 +shlx1904 shiftleft 1123456789123456789 4 -> 11234567891234567890000 +shlx1905 shiftleft 1123456789123456789 5 -> 112345678912345678900000 +shlx1906 shiftleft 1123456789123456789 6 -> 1123456789123456789000000 +shlx1907 shiftleft 1123456789123456789 7 -> 11234567891234567890000000 +shlx1908 shiftleft 1123456789123456789 8 -> 112345678912345678900000000 +shlx1909 shiftleft 1123456789123456789 9 -> 1123456789123456789000000000 +shlx1910 shiftleft 1123456789123456789 10 -> 11234567891234567890000000000 +shlx1911 shiftleft 1123456789123456789 11 -> 112345678912345678900000000000 +shlx1912 shiftleft 1123456789123456789 12 -> 1123456789123456789000000000000 +shlx1913 shiftleft 1123456789123456789 13 -> 11234567891234567890000000000000 +shlx1914 shiftleft 1123456789123456789 14 -> 112345678912345678900000000000000 +shlx1915 shiftleft 1123456789123456789 15 -> 1123456789123456789000000000000000 +shlx1916 shiftleft 1123456789123456789 16 -> 11234567891234567890000000000000000 +shlx1917 shiftleft 1123456789123456789 17 -> 112345678912345678900000000000000000 +shlx1918 shiftleft 1123456789123456789 18 -> 1123456789123456789000000000000000000 +shlx1919 shiftleft 1123456789123456789 19 -> 11234567891234567890000000000000000000 +shlx1920 shiftleft 1123456789123456789 20 -> 112345678912345678900000000000000000000 +shlx1921 shiftleft 1123456789123456789 21 -> 1123456789123456789000000000000000000000 +shlx1922 shiftleft 1123456789123456789 22 -> 11234567891234567890000000000000000000000 +shlx1923 shiftleft 1123456789123456789 23 -> 112345678912345678900000000000000000000000 +shlx1924 shiftleft 1123456789123456789 24 -> 1123456789123456789000000000000000000000000 +shlx1925 shiftleft 1123456789123456789 25 -> 11234567891234567890000000000000000000000000 +shlx1926 shiftleft 1123456789123456789 26 -> 112345678912345678900000000000000000000000000 +shlx1927 shiftleft 1123456789123456789 27 -> 1123456789123456789000000000000000000000000000 +shlx1928 shiftleft 1123456789123456789 28 -> 11234567891234567890000000000000000000000000000 +shlx1929 shiftleft 1123456789123456789 29 -> 112345678912345678900000000000000000000000000000 +shlx1930 shiftleft 1123456789123456789 30 -> 1123456789123456789000000000000000000000000000000 +shlx1931 shiftleft 1123456789123456789 31 -> 11234567891234567890000000000000000000000000000000 +shlx1932 shiftleft 1123456789123456789 32 -> 112345678912345678900000000000000000000000000000000 +shlx1933 shiftleft 1123456789123456789 33 -> 1123456789123456789000000000000000000000000000000000 +shlx1934 shiftleft 1123456789123456789 34 -> 11234567891234567890000000000000000000000000000000000 +shlx1935 shiftleft 1123456789123456789 35 -> 112345678912345678900000000000000000000000000000000000 +shlx1936 shiftleft 1123456789123456789 36 -> 1123456789123456789000000000000000000000000000000000000 +shlx1937 shiftleft 1123456789123456789 37 -> 11234567891234567890000000000000000000000000000000000000 +shlx1938 shiftleft 1123456789123456789 38 -> 112345678912345678900000000000000000000000000000000000000 +shlx1939 shiftleft 1123456789123456789 39 -> 1123456789123456789000000000000000000000000000000000000000 +shlx1940 shiftleft 1123456789123456789 40 -> 11234567891234567890000000000000000000000000000000000000000 +shlx1941 shiftleft 1123456789123456789 41 -> 112345678912345678900000000000000000000000000000000000000000 +shlx1942 shiftleft 1123456789123456789 42 -> 1123456789123456789000000000000000000000000000000000000000000 +shlx1943 shiftleft 1123456789123456789 43 -> 11234567891234567890000000000000000000000000000000000000000000 +shlx1944 shiftleft 1123456789123456789 44 -> 112345678912345678900000000000000000000000000000000000000000000 +shlx1945 shiftleft 1123456789123456789 45 -> 1123456789123456789000000000000000000000000000000000000000000000 +shlx1946 shiftleft 1123456789123456789 46 -> 11234567891234567890000000000000000000000000000000000000000000000 +shlx1947 shiftleft 1123456789123456789 47 -> 112345678912345678900000000000000000000000000000000000000000000000 +shlx1948 shiftleft 1123456789123456789 48 -> 1123456789123456789000000000000000000000000000000000000000000000000 +shlx1949 shiftleft 1123456789123456789 49 -> 11234567891234567890000000000000000000000000000000000000000000000000 +shlx1950 shiftleft 1123456789123456789 50 -> 112345678912345678900000000000000000000000000000000000000000000000000 +shlx1951 shiftleft 1123456789123456789 51 -> 1123456789123456789000000000000000000000000000000000000000000000000000 +shlx1952 shiftleft 1123456789123456789 52 -> 11234567891234567890000000000000000000000000000000000000000000000000000 +shlx1953 shiftleft 1123456789123456789 53 -> 112345678912345678900000000000000000000000000000000000000000000000000000 +shlx1954 shiftleft 1123456789123456789 54 -> 1123456789123456789000000000000000000000000000000000000000000000000000000 +shlx1955 shiftleft 1123456789123456789 55 -> 11234567891234567890000000000000000000000000000000000000000000000000000000 +shlx1956 shiftleft 1123456789123456789 56 -> 112345678912345678900000000000000000000000000000000000000000000000000000000 +shlx1957 shiftleft 1123456789123456789 57 -> 1123456789123456789000000000000000000000000000000000000000000000000000000000 +shlx1958 shiftleft 1123456789123456789 58 -> 11234567891234567890000000000000000000000000000000000000000000000000000000000 +shlx1959 shiftleft 1123456789123456789 59 -> 112345678912345678900000000000000000000000000000000000000000000000000000000000 +shlx1960 shiftleft 1123456789123456789 60 -> 1123456789123456789000000000000000000000000000000000000000000000000000000000000 +shlx1961 shiftleft 1123456789123456789 61 -> 11234567891234567890000000000000000000000000000000000000000000000000000000000000 +shlx1962 shiftleft 1123456789123456789 62 -> 112345678912345678900000000000000000000000000000000000000000000000000000000000000 +shlx1963 shiftleft 1123456789123456789 63 -> 1123456789123456789000000000000000000000000000000000000000000000000000000000000000 +shlx1964 shiftleft 1123456789123456789 64 -> 11234567891234567890000000000000000000000000000000000000000000000000000000000000000 +shlx1965 shiftleft 1123456789123456789 65 -> 112345678912345678900000000000000000000000000000000000000000000000000000000000000000 +shlx1966 shiftleft 1123456789123456789 66 -> 1123456789123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx1967 shiftleft 1123456789123456789 67 -> 11234567891234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx1968 shiftleft 1123456789123456789 68 -> 112345678912345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx1969 shiftleft 1123456789123456789 69 -> 1123456789123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx1970 shiftleft 1123456789123456789 70 -> 11234567891234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx1971 shiftleft 1123456789123456789 71 -> 112345678912345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx1972 shiftleft 1123456789123456789 72 -> 1123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1973 shiftleft 1123456789123456789 73 -> 11234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1974 shiftleft 1123456789123456789 74 -> 112345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1975 shiftleft 1123456789123456789 75 -> 1123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1976 shiftleft 1123456789123456789 76 -> 11234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1977 shiftleft 1123456789123456789 77 -> 112345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1978 shiftleft 1123456789123456789 78 -> 1123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1979 shiftleft 1123456789123456789 79 -> 11234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1980 shiftleft 1123456789123456789 80 -> 112345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1981 shiftleft 1123456789123456789 81 -> 1123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1982 shiftleft 1123456789123456789 82 -> 11234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1983 shiftleft 1123456789123456789 83 -> 112345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1984 shiftleft 1123456789123456789 84 -> 1123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1985 shiftleft 1123456789123456789 85 -> 11234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1986 shiftleft 1123456789123456789 86 -> 112345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1987 shiftleft 1123456789123456789 87 -> 1123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1988 shiftleft 1123456789123456789 88 -> 11234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1989 shiftleft 1123456789123456789 89 -> 112345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1990 shiftleft 1123456789123456789 90 -> 1123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1991 shiftleft 1123456789123456789 91 -> 11234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1992 shiftleft 1123456789123456789 92 -> 112345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1993 shiftleft 1123456789123456789 93 -> 1123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1994 shiftleft 1123456789123456789 94 -> 11234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1995 shiftleft 1123456789123456789 95 -> 112345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1996 shiftleft 1123456789123456789 96 -> 1123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1997 shiftleft 1123456789123456789 97 -> 11234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1998 shiftleft 1123456789123456789 98 -> 112345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx1999 shiftleft 1123456789123456789 99 -> 1123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2000 shiftleft 12123456789123456789 0 -> 12123456789123456789 +shlx2001 shiftleft 12123456789123456789 1 -> 121234567891234567890 +shlx2002 shiftleft 12123456789123456789 2 -> 1212345678912345678900 +shlx2003 shiftleft 12123456789123456789 3 -> 12123456789123456789000 +shlx2004 shiftleft 12123456789123456789 4 -> 121234567891234567890000 +shlx2005 shiftleft 12123456789123456789 5 -> 1212345678912345678900000 +shlx2006 shiftleft 12123456789123456789 6 -> 12123456789123456789000000 +shlx2007 shiftleft 12123456789123456789 7 -> 121234567891234567890000000 +shlx2008 shiftleft 12123456789123456789 8 -> 1212345678912345678900000000 +shlx2009 shiftleft 12123456789123456789 9 -> 12123456789123456789000000000 +shlx2010 shiftleft 12123456789123456789 10 -> 121234567891234567890000000000 +shlx2011 shiftleft 12123456789123456789 11 -> 1212345678912345678900000000000 +shlx2012 shiftleft 12123456789123456789 12 -> 12123456789123456789000000000000 +shlx2013 shiftleft 12123456789123456789 13 -> 121234567891234567890000000000000 +shlx2014 shiftleft 12123456789123456789 14 -> 1212345678912345678900000000000000 +shlx2015 shiftleft 12123456789123456789 15 -> 12123456789123456789000000000000000 +shlx2016 shiftleft 12123456789123456789 16 -> 121234567891234567890000000000000000 +shlx2017 shiftleft 12123456789123456789 17 -> 1212345678912345678900000000000000000 +shlx2018 shiftleft 12123456789123456789 18 -> 12123456789123456789000000000000000000 +shlx2019 shiftleft 12123456789123456789 19 -> 121234567891234567890000000000000000000 +shlx2020 shiftleft 12123456789123456789 20 -> 1212345678912345678900000000000000000000 +shlx2021 shiftleft 12123456789123456789 21 -> 12123456789123456789000000000000000000000 +shlx2022 shiftleft 12123456789123456789 22 -> 121234567891234567890000000000000000000000 +shlx2023 shiftleft 12123456789123456789 23 -> 1212345678912345678900000000000000000000000 +shlx2024 shiftleft 12123456789123456789 24 -> 12123456789123456789000000000000000000000000 +shlx2025 shiftleft 12123456789123456789 25 -> 121234567891234567890000000000000000000000000 +shlx2026 shiftleft 12123456789123456789 26 -> 1212345678912345678900000000000000000000000000 +shlx2027 shiftleft 12123456789123456789 27 -> 12123456789123456789000000000000000000000000000 +shlx2028 shiftleft 12123456789123456789 28 -> 121234567891234567890000000000000000000000000000 +shlx2029 shiftleft 12123456789123456789 29 -> 1212345678912345678900000000000000000000000000000 +shlx2030 shiftleft 12123456789123456789 30 -> 12123456789123456789000000000000000000000000000000 +shlx2031 shiftleft 12123456789123456789 31 -> 121234567891234567890000000000000000000000000000000 +shlx2032 shiftleft 12123456789123456789 32 -> 1212345678912345678900000000000000000000000000000000 +shlx2033 shiftleft 12123456789123456789 33 -> 12123456789123456789000000000000000000000000000000000 +shlx2034 shiftleft 12123456789123456789 34 -> 121234567891234567890000000000000000000000000000000000 +shlx2035 shiftleft 12123456789123456789 35 -> 1212345678912345678900000000000000000000000000000000000 +shlx2036 shiftleft 12123456789123456789 36 -> 12123456789123456789000000000000000000000000000000000000 +shlx2037 shiftleft 12123456789123456789 37 -> 121234567891234567890000000000000000000000000000000000000 +shlx2038 shiftleft 12123456789123456789 38 -> 1212345678912345678900000000000000000000000000000000000000 +shlx2039 shiftleft 12123456789123456789 39 -> 12123456789123456789000000000000000000000000000000000000000 +shlx2040 shiftleft 12123456789123456789 40 -> 121234567891234567890000000000000000000000000000000000000000 +shlx2041 shiftleft 12123456789123456789 41 -> 1212345678912345678900000000000000000000000000000000000000000 +shlx2042 shiftleft 12123456789123456789 42 -> 12123456789123456789000000000000000000000000000000000000000000 +shlx2043 shiftleft 12123456789123456789 43 -> 121234567891234567890000000000000000000000000000000000000000000 +shlx2044 shiftleft 12123456789123456789 44 -> 1212345678912345678900000000000000000000000000000000000000000000 +shlx2045 shiftleft 12123456789123456789 45 -> 12123456789123456789000000000000000000000000000000000000000000000 +shlx2046 shiftleft 12123456789123456789 46 -> 121234567891234567890000000000000000000000000000000000000000000000 +shlx2047 shiftleft 12123456789123456789 47 -> 1212345678912345678900000000000000000000000000000000000000000000000 +shlx2048 shiftleft 12123456789123456789 48 -> 12123456789123456789000000000000000000000000000000000000000000000000 +shlx2049 shiftleft 12123456789123456789 49 -> 121234567891234567890000000000000000000000000000000000000000000000000 +shlx2050 shiftleft 12123456789123456789 50 -> 1212345678912345678900000000000000000000000000000000000000000000000000 +shlx2051 shiftleft 12123456789123456789 51 -> 12123456789123456789000000000000000000000000000000000000000000000000000 +shlx2052 shiftleft 12123456789123456789 52 -> 121234567891234567890000000000000000000000000000000000000000000000000000 +shlx2053 shiftleft 12123456789123456789 53 -> 1212345678912345678900000000000000000000000000000000000000000000000000000 +shlx2054 shiftleft 12123456789123456789 54 -> 12123456789123456789000000000000000000000000000000000000000000000000000000 +shlx2055 shiftleft 12123456789123456789 55 -> 121234567891234567890000000000000000000000000000000000000000000000000000000 +shlx2056 shiftleft 12123456789123456789 56 -> 1212345678912345678900000000000000000000000000000000000000000000000000000000 +shlx2057 shiftleft 12123456789123456789 57 -> 12123456789123456789000000000000000000000000000000000000000000000000000000000 +shlx2058 shiftleft 12123456789123456789 58 -> 121234567891234567890000000000000000000000000000000000000000000000000000000000 +shlx2059 shiftleft 12123456789123456789 59 -> 1212345678912345678900000000000000000000000000000000000000000000000000000000000 +shlx2060 shiftleft 12123456789123456789 60 -> 12123456789123456789000000000000000000000000000000000000000000000000000000000000 +shlx2061 shiftleft 12123456789123456789 61 -> 121234567891234567890000000000000000000000000000000000000000000000000000000000000 +shlx2062 shiftleft 12123456789123456789 62 -> 1212345678912345678900000000000000000000000000000000000000000000000000000000000000 +shlx2063 shiftleft 12123456789123456789 63 -> 12123456789123456789000000000000000000000000000000000000000000000000000000000000000 +shlx2064 shiftleft 12123456789123456789 64 -> 121234567891234567890000000000000000000000000000000000000000000000000000000000000000 +shlx2065 shiftleft 12123456789123456789 65 -> 1212345678912345678900000000000000000000000000000000000000000000000000000000000000000 +shlx2066 shiftleft 12123456789123456789 66 -> 12123456789123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx2067 shiftleft 12123456789123456789 67 -> 121234567891234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx2068 shiftleft 12123456789123456789 68 -> 1212345678912345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx2069 shiftleft 12123456789123456789 69 -> 12123456789123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx2070 shiftleft 12123456789123456789 70 -> 121234567891234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx2071 shiftleft 12123456789123456789 71 -> 1212345678912345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx2072 shiftleft 12123456789123456789 72 -> 12123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2073 shiftleft 12123456789123456789 73 -> 121234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2074 shiftleft 12123456789123456789 74 -> 1212345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2075 shiftleft 12123456789123456789 75 -> 12123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2076 shiftleft 12123456789123456789 76 -> 121234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2077 shiftleft 12123456789123456789 77 -> 1212345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2078 shiftleft 12123456789123456789 78 -> 12123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2079 shiftleft 12123456789123456789 79 -> 121234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2080 shiftleft 12123456789123456789 80 -> 1212345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2081 shiftleft 12123456789123456789 81 -> 12123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2082 shiftleft 12123456789123456789 82 -> 121234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2083 shiftleft 12123456789123456789 83 -> 1212345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2084 shiftleft 12123456789123456789 84 -> 12123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2085 shiftleft 12123456789123456789 85 -> 121234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2086 shiftleft 12123456789123456789 86 -> 1212345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2087 shiftleft 12123456789123456789 87 -> 12123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2088 shiftleft 12123456789123456789 88 -> 121234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2089 shiftleft 12123456789123456789 89 -> 1212345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2090 shiftleft 12123456789123456789 90 -> 12123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2091 shiftleft 12123456789123456789 91 -> 121234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2092 shiftleft 12123456789123456789 92 -> 1212345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2093 shiftleft 12123456789123456789 93 -> 12123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2094 shiftleft 12123456789123456789 94 -> 121234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2095 shiftleft 12123456789123456789 95 -> 1212345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2096 shiftleft 12123456789123456789 96 -> 12123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2097 shiftleft 12123456789123456789 97 -> 121234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2098 shiftleft 12123456789123456789 98 -> 1212345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2099 shiftleft 12123456789123456789 99 -> 12123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2100 shiftleft 123123456789123456789 0 -> 123123456789123456789 +shlx2101 shiftleft 123123456789123456789 1 -> 1231234567891234567890 +shlx2102 shiftleft 123123456789123456789 2 -> 12312345678912345678900 +shlx2103 shiftleft 123123456789123456789 3 -> 123123456789123456789000 +shlx2104 shiftleft 123123456789123456789 4 -> 1231234567891234567890000 +shlx2105 shiftleft 123123456789123456789 5 -> 12312345678912345678900000 +shlx2106 shiftleft 123123456789123456789 6 -> 123123456789123456789000000 +shlx2107 shiftleft 123123456789123456789 7 -> 1231234567891234567890000000 +shlx2108 shiftleft 123123456789123456789 8 -> 12312345678912345678900000000 +shlx2109 shiftleft 123123456789123456789 9 -> 123123456789123456789000000000 +shlx2110 shiftleft 123123456789123456789 10 -> 1231234567891234567890000000000 +shlx2111 shiftleft 123123456789123456789 11 -> 12312345678912345678900000000000 +shlx2112 shiftleft 123123456789123456789 12 -> 123123456789123456789000000000000 +shlx2113 shiftleft 123123456789123456789 13 -> 1231234567891234567890000000000000 +shlx2114 shiftleft 123123456789123456789 14 -> 12312345678912345678900000000000000 +shlx2115 shiftleft 123123456789123456789 15 -> 123123456789123456789000000000000000 +shlx2116 shiftleft 123123456789123456789 16 -> 1231234567891234567890000000000000000 +shlx2117 shiftleft 123123456789123456789 17 -> 12312345678912345678900000000000000000 +shlx2118 shiftleft 123123456789123456789 18 -> 123123456789123456789000000000000000000 +shlx2119 shiftleft 123123456789123456789 19 -> 1231234567891234567890000000000000000000 +shlx2120 shiftleft 123123456789123456789 20 -> 12312345678912345678900000000000000000000 +shlx2121 shiftleft 123123456789123456789 21 -> 123123456789123456789000000000000000000000 +shlx2122 shiftleft 123123456789123456789 22 -> 1231234567891234567890000000000000000000000 +shlx2123 shiftleft 123123456789123456789 23 -> 12312345678912345678900000000000000000000000 +shlx2124 shiftleft 123123456789123456789 24 -> 123123456789123456789000000000000000000000000 +shlx2125 shiftleft 123123456789123456789 25 -> 1231234567891234567890000000000000000000000000 +shlx2126 shiftleft 123123456789123456789 26 -> 12312345678912345678900000000000000000000000000 +shlx2127 shiftleft 123123456789123456789 27 -> 123123456789123456789000000000000000000000000000 +shlx2128 shiftleft 123123456789123456789 28 -> 1231234567891234567890000000000000000000000000000 +shlx2129 shiftleft 123123456789123456789 29 -> 12312345678912345678900000000000000000000000000000 +shlx2130 shiftleft 123123456789123456789 30 -> 123123456789123456789000000000000000000000000000000 +shlx2131 shiftleft 123123456789123456789 31 -> 1231234567891234567890000000000000000000000000000000 +shlx2132 shiftleft 123123456789123456789 32 -> 12312345678912345678900000000000000000000000000000000 +shlx2133 shiftleft 123123456789123456789 33 -> 123123456789123456789000000000000000000000000000000000 +shlx2134 shiftleft 123123456789123456789 34 -> 1231234567891234567890000000000000000000000000000000000 +shlx2135 shiftleft 123123456789123456789 35 -> 12312345678912345678900000000000000000000000000000000000 +shlx2136 shiftleft 123123456789123456789 36 -> 123123456789123456789000000000000000000000000000000000000 +shlx2137 shiftleft 123123456789123456789 37 -> 1231234567891234567890000000000000000000000000000000000000 +shlx2138 shiftleft 123123456789123456789 38 -> 12312345678912345678900000000000000000000000000000000000000 +shlx2139 shiftleft 123123456789123456789 39 -> 123123456789123456789000000000000000000000000000000000000000 +shlx2140 shiftleft 123123456789123456789 40 -> 1231234567891234567890000000000000000000000000000000000000000 +shlx2141 shiftleft 123123456789123456789 41 -> 12312345678912345678900000000000000000000000000000000000000000 +shlx2142 shiftleft 123123456789123456789 42 -> 123123456789123456789000000000000000000000000000000000000000000 +shlx2143 shiftleft 123123456789123456789 43 -> 1231234567891234567890000000000000000000000000000000000000000000 +shlx2144 shiftleft 123123456789123456789 44 -> 12312345678912345678900000000000000000000000000000000000000000000 +shlx2145 shiftleft 123123456789123456789 45 -> 123123456789123456789000000000000000000000000000000000000000000000 +shlx2146 shiftleft 123123456789123456789 46 -> 1231234567891234567890000000000000000000000000000000000000000000000 +shlx2147 shiftleft 123123456789123456789 47 -> 12312345678912345678900000000000000000000000000000000000000000000000 +shlx2148 shiftleft 123123456789123456789 48 -> 123123456789123456789000000000000000000000000000000000000000000000000 +shlx2149 shiftleft 123123456789123456789 49 -> 1231234567891234567890000000000000000000000000000000000000000000000000 +shlx2150 shiftleft 123123456789123456789 50 -> 12312345678912345678900000000000000000000000000000000000000000000000000 +shlx2151 shiftleft 123123456789123456789 51 -> 123123456789123456789000000000000000000000000000000000000000000000000000 +shlx2152 shiftleft 123123456789123456789 52 -> 1231234567891234567890000000000000000000000000000000000000000000000000000 +shlx2153 shiftleft 123123456789123456789 53 -> 12312345678912345678900000000000000000000000000000000000000000000000000000 +shlx2154 shiftleft 123123456789123456789 54 -> 123123456789123456789000000000000000000000000000000000000000000000000000000 +shlx2155 shiftleft 123123456789123456789 55 -> 1231234567891234567890000000000000000000000000000000000000000000000000000000 +shlx2156 shiftleft 123123456789123456789 56 -> 12312345678912345678900000000000000000000000000000000000000000000000000000000 +shlx2157 shiftleft 123123456789123456789 57 -> 123123456789123456789000000000000000000000000000000000000000000000000000000000 +shlx2158 shiftleft 123123456789123456789 58 -> 1231234567891234567890000000000000000000000000000000000000000000000000000000000 +shlx2159 shiftleft 123123456789123456789 59 -> 12312345678912345678900000000000000000000000000000000000000000000000000000000000 +shlx2160 shiftleft 123123456789123456789 60 -> 123123456789123456789000000000000000000000000000000000000000000000000000000000000 +shlx2161 shiftleft 123123456789123456789 61 -> 1231234567891234567890000000000000000000000000000000000000000000000000000000000000 +shlx2162 shiftleft 123123456789123456789 62 -> 12312345678912345678900000000000000000000000000000000000000000000000000000000000000 +shlx2163 shiftleft 123123456789123456789 63 -> 123123456789123456789000000000000000000000000000000000000000000000000000000000000000 +shlx2164 shiftleft 123123456789123456789 64 -> 1231234567891234567890000000000000000000000000000000000000000000000000000000000000000 +shlx2165 shiftleft 123123456789123456789 65 -> 12312345678912345678900000000000000000000000000000000000000000000000000000000000000000 +shlx2166 shiftleft 123123456789123456789 66 -> 123123456789123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx2167 shiftleft 123123456789123456789 67 -> 1231234567891234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx2168 shiftleft 123123456789123456789 68 -> 12312345678912345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx2169 shiftleft 123123456789123456789 69 -> 123123456789123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx2170 shiftleft 123123456789123456789 70 -> 1231234567891234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx2171 shiftleft 123123456789123456789 71 -> 12312345678912345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx2172 shiftleft 123123456789123456789 72 -> 123123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2173 shiftleft 123123456789123456789 73 -> 1231234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2174 shiftleft 123123456789123456789 74 -> 12312345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2175 shiftleft 123123456789123456789 75 -> 123123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2176 shiftleft 123123456789123456789 76 -> 1231234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2177 shiftleft 123123456789123456789 77 -> 12312345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2178 shiftleft 123123456789123456789 78 -> 123123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2179 shiftleft 123123456789123456789 79 -> 1231234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2180 shiftleft 123123456789123456789 80 -> 12312345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2181 shiftleft 123123456789123456789 81 -> 123123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2182 shiftleft 123123456789123456789 82 -> 1231234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2183 shiftleft 123123456789123456789 83 -> 12312345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2184 shiftleft 123123456789123456789 84 -> 123123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2185 shiftleft 123123456789123456789 85 -> 1231234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2186 shiftleft 123123456789123456789 86 -> 12312345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2187 shiftleft 123123456789123456789 87 -> 123123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2188 shiftleft 123123456789123456789 88 -> 1231234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2189 shiftleft 123123456789123456789 89 -> 12312345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2190 shiftleft 123123456789123456789 90 -> 123123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2191 shiftleft 123123456789123456789 91 -> 1231234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2192 shiftleft 123123456789123456789 92 -> 12312345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2193 shiftleft 123123456789123456789 93 -> 123123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2194 shiftleft 123123456789123456789 94 -> 1231234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2195 shiftleft 123123456789123456789 95 -> 12312345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2196 shiftleft 123123456789123456789 96 -> 123123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2197 shiftleft 123123456789123456789 97 -> 1231234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2198 shiftleft 123123456789123456789 98 -> 12312345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2199 shiftleft 123123456789123456789 99 -> 123123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2200 shiftleft 1234123456789123456789 0 -> 1234123456789123456789 +shlx2201 shiftleft 1234123456789123456789 1 -> 12341234567891234567890 +shlx2202 shiftleft 1234123456789123456789 2 -> 123412345678912345678900 +shlx2203 shiftleft 1234123456789123456789 3 -> 1234123456789123456789000 +shlx2204 shiftleft 1234123456789123456789 4 -> 12341234567891234567890000 +shlx2205 shiftleft 1234123456789123456789 5 -> 123412345678912345678900000 +shlx2206 shiftleft 1234123456789123456789 6 -> 1234123456789123456789000000 +shlx2207 shiftleft 1234123456789123456789 7 -> 12341234567891234567890000000 +shlx2208 shiftleft 1234123456789123456789 8 -> 123412345678912345678900000000 +shlx2209 shiftleft 1234123456789123456789 9 -> 1234123456789123456789000000000 +shlx2210 shiftleft 1234123456789123456789 10 -> 12341234567891234567890000000000 +shlx2211 shiftleft 1234123456789123456789 11 -> 123412345678912345678900000000000 +shlx2212 shiftleft 1234123456789123456789 12 -> 1234123456789123456789000000000000 +shlx2213 shiftleft 1234123456789123456789 13 -> 12341234567891234567890000000000000 +shlx2214 shiftleft 1234123456789123456789 14 -> 123412345678912345678900000000000000 +shlx2215 shiftleft 1234123456789123456789 15 -> 1234123456789123456789000000000000000 +shlx2216 shiftleft 1234123456789123456789 16 -> 12341234567891234567890000000000000000 +shlx2217 shiftleft 1234123456789123456789 17 -> 123412345678912345678900000000000000000 +shlx2218 shiftleft 1234123456789123456789 18 -> 1234123456789123456789000000000000000000 +shlx2219 shiftleft 1234123456789123456789 19 -> 12341234567891234567890000000000000000000 +shlx2220 shiftleft 1234123456789123456789 20 -> 123412345678912345678900000000000000000000 +shlx2221 shiftleft 1234123456789123456789 21 -> 1234123456789123456789000000000000000000000 +shlx2222 shiftleft 1234123456789123456789 22 -> 12341234567891234567890000000000000000000000 +shlx2223 shiftleft 1234123456789123456789 23 -> 123412345678912345678900000000000000000000000 +shlx2224 shiftleft 1234123456789123456789 24 -> 1234123456789123456789000000000000000000000000 +shlx2225 shiftleft 1234123456789123456789 25 -> 12341234567891234567890000000000000000000000000 +shlx2226 shiftleft 1234123456789123456789 26 -> 123412345678912345678900000000000000000000000000 +shlx2227 shiftleft 1234123456789123456789 27 -> 1234123456789123456789000000000000000000000000000 +shlx2228 shiftleft 1234123456789123456789 28 -> 12341234567891234567890000000000000000000000000000 +shlx2229 shiftleft 1234123456789123456789 29 -> 123412345678912345678900000000000000000000000000000 +shlx2230 shiftleft 1234123456789123456789 30 -> 1234123456789123456789000000000000000000000000000000 +shlx2231 shiftleft 1234123456789123456789 31 -> 12341234567891234567890000000000000000000000000000000 +shlx2232 shiftleft 1234123456789123456789 32 -> 123412345678912345678900000000000000000000000000000000 +shlx2233 shiftleft 1234123456789123456789 33 -> 1234123456789123456789000000000000000000000000000000000 +shlx2234 shiftleft 1234123456789123456789 34 -> 12341234567891234567890000000000000000000000000000000000 +shlx2235 shiftleft 1234123456789123456789 35 -> 123412345678912345678900000000000000000000000000000000000 +shlx2236 shiftleft 1234123456789123456789 36 -> 1234123456789123456789000000000000000000000000000000000000 +shlx2237 shiftleft 1234123456789123456789 37 -> 12341234567891234567890000000000000000000000000000000000000 +shlx2238 shiftleft 1234123456789123456789 38 -> 123412345678912345678900000000000000000000000000000000000000 +shlx2239 shiftleft 1234123456789123456789 39 -> 1234123456789123456789000000000000000000000000000000000000000 +shlx2240 shiftleft 1234123456789123456789 40 -> 12341234567891234567890000000000000000000000000000000000000000 +shlx2241 shiftleft 1234123456789123456789 41 -> 123412345678912345678900000000000000000000000000000000000000000 +shlx2242 shiftleft 1234123456789123456789 42 -> 1234123456789123456789000000000000000000000000000000000000000000 +shlx2243 shiftleft 1234123456789123456789 43 -> 12341234567891234567890000000000000000000000000000000000000000000 +shlx2244 shiftleft 1234123456789123456789 44 -> 123412345678912345678900000000000000000000000000000000000000000000 +shlx2245 shiftleft 1234123456789123456789 45 -> 1234123456789123456789000000000000000000000000000000000000000000000 +shlx2246 shiftleft 1234123456789123456789 46 -> 12341234567891234567890000000000000000000000000000000000000000000000 +shlx2247 shiftleft 1234123456789123456789 47 -> 123412345678912345678900000000000000000000000000000000000000000000000 +shlx2248 shiftleft 1234123456789123456789 48 -> 1234123456789123456789000000000000000000000000000000000000000000000000 +shlx2249 shiftleft 1234123456789123456789 49 -> 12341234567891234567890000000000000000000000000000000000000000000000000 +shlx2250 shiftleft 1234123456789123456789 50 -> 123412345678912345678900000000000000000000000000000000000000000000000000 +shlx2251 shiftleft 1234123456789123456789 51 -> 1234123456789123456789000000000000000000000000000000000000000000000000000 +shlx2252 shiftleft 1234123456789123456789 52 -> 12341234567891234567890000000000000000000000000000000000000000000000000000 +shlx2253 shiftleft 1234123456789123456789 53 -> 123412345678912345678900000000000000000000000000000000000000000000000000000 +shlx2254 shiftleft 1234123456789123456789 54 -> 1234123456789123456789000000000000000000000000000000000000000000000000000000 +shlx2255 shiftleft 1234123456789123456789 55 -> 12341234567891234567890000000000000000000000000000000000000000000000000000000 +shlx2256 shiftleft 1234123456789123456789 56 -> 123412345678912345678900000000000000000000000000000000000000000000000000000000 +shlx2257 shiftleft 1234123456789123456789 57 -> 1234123456789123456789000000000000000000000000000000000000000000000000000000000 +shlx2258 shiftleft 1234123456789123456789 58 -> 12341234567891234567890000000000000000000000000000000000000000000000000000000000 +shlx2259 shiftleft 1234123456789123456789 59 -> 123412345678912345678900000000000000000000000000000000000000000000000000000000000 +shlx2260 shiftleft 1234123456789123456789 60 -> 1234123456789123456789000000000000000000000000000000000000000000000000000000000000 +shlx2261 shiftleft 1234123456789123456789 61 -> 12341234567891234567890000000000000000000000000000000000000000000000000000000000000 +shlx2262 shiftleft 1234123456789123456789 62 -> 123412345678912345678900000000000000000000000000000000000000000000000000000000000000 +shlx2263 shiftleft 1234123456789123456789 63 -> 1234123456789123456789000000000000000000000000000000000000000000000000000000000000000 +shlx2264 shiftleft 1234123456789123456789 64 -> 12341234567891234567890000000000000000000000000000000000000000000000000000000000000000 +shlx2265 shiftleft 1234123456789123456789 65 -> 123412345678912345678900000000000000000000000000000000000000000000000000000000000000000 +shlx2266 shiftleft 1234123456789123456789 66 -> 1234123456789123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx2267 shiftleft 1234123456789123456789 67 -> 12341234567891234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx2268 shiftleft 1234123456789123456789 68 -> 123412345678912345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx2269 shiftleft 1234123456789123456789 69 -> 1234123456789123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx2270 shiftleft 1234123456789123456789 70 -> 12341234567891234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx2271 shiftleft 1234123456789123456789 71 -> 123412345678912345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx2272 shiftleft 1234123456789123456789 72 -> 1234123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2273 shiftleft 1234123456789123456789 73 -> 12341234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2274 shiftleft 1234123456789123456789 74 -> 123412345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2275 shiftleft 1234123456789123456789 75 -> 1234123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2276 shiftleft 1234123456789123456789 76 -> 12341234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2277 shiftleft 1234123456789123456789 77 -> 123412345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2278 shiftleft 1234123456789123456789 78 -> 1234123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2279 shiftleft 1234123456789123456789 79 -> 12341234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2280 shiftleft 1234123456789123456789 80 -> 123412345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2281 shiftleft 1234123456789123456789 81 -> 1234123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2282 shiftleft 1234123456789123456789 82 -> 12341234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2283 shiftleft 1234123456789123456789 83 -> 123412345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2284 shiftleft 1234123456789123456789 84 -> 1234123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2285 shiftleft 1234123456789123456789 85 -> 12341234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2286 shiftleft 1234123456789123456789 86 -> 123412345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2287 shiftleft 1234123456789123456789 87 -> 1234123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2288 shiftleft 1234123456789123456789 88 -> 12341234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2289 shiftleft 1234123456789123456789 89 -> 123412345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2290 shiftleft 1234123456789123456789 90 -> 1234123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2291 shiftleft 1234123456789123456789 91 -> 12341234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2292 shiftleft 1234123456789123456789 92 -> 123412345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2293 shiftleft 1234123456789123456789 93 -> 1234123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2294 shiftleft 1234123456789123456789 94 -> 12341234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2295 shiftleft 1234123456789123456789 95 -> 123412345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2296 shiftleft 1234123456789123456789 96 -> 1234123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2297 shiftleft 1234123456789123456789 97 -> 12341234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2298 shiftleft 1234123456789123456789 98 -> 123412345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2299 shiftleft 1234123456789123456789 99 -> 1234123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2300 shiftleft 12345123456789123456789 0 -> 12345123456789123456789 +shlx2301 shiftleft 12345123456789123456789 1 -> 123451234567891234567890 +shlx2302 shiftleft 12345123456789123456789 2 -> 1234512345678912345678900 +shlx2303 shiftleft 12345123456789123456789 3 -> 12345123456789123456789000 +shlx2304 shiftleft 12345123456789123456789 4 -> 123451234567891234567890000 +shlx2305 shiftleft 12345123456789123456789 5 -> 1234512345678912345678900000 +shlx2306 shiftleft 12345123456789123456789 6 -> 12345123456789123456789000000 +shlx2307 shiftleft 12345123456789123456789 7 -> 123451234567891234567890000000 +shlx2308 shiftleft 12345123456789123456789 8 -> 1234512345678912345678900000000 +shlx2309 shiftleft 12345123456789123456789 9 -> 12345123456789123456789000000000 +shlx2310 shiftleft 12345123456789123456789 10 -> 123451234567891234567890000000000 +shlx2311 shiftleft 12345123456789123456789 11 -> 1234512345678912345678900000000000 +shlx2312 shiftleft 12345123456789123456789 12 -> 12345123456789123456789000000000000 +shlx2313 shiftleft 12345123456789123456789 13 -> 123451234567891234567890000000000000 +shlx2314 shiftleft 12345123456789123456789 14 -> 1234512345678912345678900000000000000 +shlx2315 shiftleft 12345123456789123456789 15 -> 12345123456789123456789000000000000000 +shlx2316 shiftleft 12345123456789123456789 16 -> 123451234567891234567890000000000000000 +shlx2317 shiftleft 12345123456789123456789 17 -> 1234512345678912345678900000000000000000 +shlx2318 shiftleft 12345123456789123456789 18 -> 12345123456789123456789000000000000000000 +shlx2319 shiftleft 12345123456789123456789 19 -> 123451234567891234567890000000000000000000 +shlx2320 shiftleft 12345123456789123456789 20 -> 1234512345678912345678900000000000000000000 +shlx2321 shiftleft 12345123456789123456789 21 -> 12345123456789123456789000000000000000000000 +shlx2322 shiftleft 12345123456789123456789 22 -> 123451234567891234567890000000000000000000000 +shlx2323 shiftleft 12345123456789123456789 23 -> 1234512345678912345678900000000000000000000000 +shlx2324 shiftleft 12345123456789123456789 24 -> 12345123456789123456789000000000000000000000000 +shlx2325 shiftleft 12345123456789123456789 25 -> 123451234567891234567890000000000000000000000000 +shlx2326 shiftleft 12345123456789123456789 26 -> 1234512345678912345678900000000000000000000000000 +shlx2327 shiftleft 12345123456789123456789 27 -> 12345123456789123456789000000000000000000000000000 +shlx2328 shiftleft 12345123456789123456789 28 -> 123451234567891234567890000000000000000000000000000 +shlx2329 shiftleft 12345123456789123456789 29 -> 1234512345678912345678900000000000000000000000000000 +shlx2330 shiftleft 12345123456789123456789 30 -> 12345123456789123456789000000000000000000000000000000 +shlx2331 shiftleft 12345123456789123456789 31 -> 123451234567891234567890000000000000000000000000000000 +shlx2332 shiftleft 12345123456789123456789 32 -> 1234512345678912345678900000000000000000000000000000000 +shlx2333 shiftleft 12345123456789123456789 33 -> 12345123456789123456789000000000000000000000000000000000 +shlx2334 shiftleft 12345123456789123456789 34 -> 123451234567891234567890000000000000000000000000000000000 +shlx2335 shiftleft 12345123456789123456789 35 -> 1234512345678912345678900000000000000000000000000000000000 +shlx2336 shiftleft 12345123456789123456789 36 -> 12345123456789123456789000000000000000000000000000000000000 +shlx2337 shiftleft 12345123456789123456789 37 -> 123451234567891234567890000000000000000000000000000000000000 +shlx2338 shiftleft 12345123456789123456789 38 -> 1234512345678912345678900000000000000000000000000000000000000 +shlx2339 shiftleft 12345123456789123456789 39 -> 12345123456789123456789000000000000000000000000000000000000000 +shlx2340 shiftleft 12345123456789123456789 40 -> 123451234567891234567890000000000000000000000000000000000000000 +shlx2341 shiftleft 12345123456789123456789 41 -> 1234512345678912345678900000000000000000000000000000000000000000 +shlx2342 shiftleft 12345123456789123456789 42 -> 12345123456789123456789000000000000000000000000000000000000000000 +shlx2343 shiftleft 12345123456789123456789 43 -> 123451234567891234567890000000000000000000000000000000000000000000 +shlx2344 shiftleft 12345123456789123456789 44 -> 1234512345678912345678900000000000000000000000000000000000000000000 +shlx2345 shiftleft 12345123456789123456789 45 -> 12345123456789123456789000000000000000000000000000000000000000000000 +shlx2346 shiftleft 12345123456789123456789 46 -> 123451234567891234567890000000000000000000000000000000000000000000000 +shlx2347 shiftleft 12345123456789123456789 47 -> 1234512345678912345678900000000000000000000000000000000000000000000000 +shlx2348 shiftleft 12345123456789123456789 48 -> 12345123456789123456789000000000000000000000000000000000000000000000000 +shlx2349 shiftleft 12345123456789123456789 49 -> 123451234567891234567890000000000000000000000000000000000000000000000000 +shlx2350 shiftleft 12345123456789123456789 50 -> 1234512345678912345678900000000000000000000000000000000000000000000000000 +shlx2351 shiftleft 12345123456789123456789 51 -> 12345123456789123456789000000000000000000000000000000000000000000000000000 +shlx2352 shiftleft 12345123456789123456789 52 -> 123451234567891234567890000000000000000000000000000000000000000000000000000 +shlx2353 shiftleft 12345123456789123456789 53 -> 1234512345678912345678900000000000000000000000000000000000000000000000000000 +shlx2354 shiftleft 12345123456789123456789 54 -> 12345123456789123456789000000000000000000000000000000000000000000000000000000 +shlx2355 shiftleft 12345123456789123456789 55 -> 123451234567891234567890000000000000000000000000000000000000000000000000000000 +shlx2356 shiftleft 12345123456789123456789 56 -> 1234512345678912345678900000000000000000000000000000000000000000000000000000000 +shlx2357 shiftleft 12345123456789123456789 57 -> 12345123456789123456789000000000000000000000000000000000000000000000000000000000 +shlx2358 shiftleft 12345123456789123456789 58 -> 123451234567891234567890000000000000000000000000000000000000000000000000000000000 +shlx2359 shiftleft 12345123456789123456789 59 -> 1234512345678912345678900000000000000000000000000000000000000000000000000000000000 +shlx2360 shiftleft 12345123456789123456789 60 -> 12345123456789123456789000000000000000000000000000000000000000000000000000000000000 +shlx2361 shiftleft 12345123456789123456789 61 -> 123451234567891234567890000000000000000000000000000000000000000000000000000000000000 +shlx2362 shiftleft 12345123456789123456789 62 -> 1234512345678912345678900000000000000000000000000000000000000000000000000000000000000 +shlx2363 shiftleft 12345123456789123456789 63 -> 12345123456789123456789000000000000000000000000000000000000000000000000000000000000000 +shlx2364 shiftleft 12345123456789123456789 64 -> 123451234567891234567890000000000000000000000000000000000000000000000000000000000000000 +shlx2365 shiftleft 12345123456789123456789 65 -> 1234512345678912345678900000000000000000000000000000000000000000000000000000000000000000 +shlx2366 shiftleft 12345123456789123456789 66 -> 12345123456789123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx2367 shiftleft 12345123456789123456789 67 -> 123451234567891234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx2368 shiftleft 12345123456789123456789 68 -> 1234512345678912345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx2369 shiftleft 12345123456789123456789 69 -> 12345123456789123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx2370 shiftleft 12345123456789123456789 70 -> 123451234567891234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx2371 shiftleft 12345123456789123456789 71 -> 1234512345678912345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx2372 shiftleft 12345123456789123456789 72 -> 12345123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2373 shiftleft 12345123456789123456789 73 -> 123451234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2374 shiftleft 12345123456789123456789 74 -> 1234512345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2375 shiftleft 12345123456789123456789 75 -> 12345123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2376 shiftleft 12345123456789123456789 76 -> 123451234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2377 shiftleft 12345123456789123456789 77 -> 1234512345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2378 shiftleft 12345123456789123456789 78 -> 12345123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2379 shiftleft 12345123456789123456789 79 -> 123451234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2380 shiftleft 12345123456789123456789 80 -> 1234512345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2381 shiftleft 12345123456789123456789 81 -> 12345123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2382 shiftleft 12345123456789123456789 82 -> 123451234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2383 shiftleft 12345123456789123456789 83 -> 1234512345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2384 shiftleft 12345123456789123456789 84 -> 12345123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2385 shiftleft 12345123456789123456789 85 -> 123451234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2386 shiftleft 12345123456789123456789 86 -> 1234512345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2387 shiftleft 12345123456789123456789 87 -> 12345123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2388 shiftleft 12345123456789123456789 88 -> 123451234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2389 shiftleft 12345123456789123456789 89 -> 1234512345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2390 shiftleft 12345123456789123456789 90 -> 12345123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2391 shiftleft 12345123456789123456789 91 -> 123451234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2392 shiftleft 12345123456789123456789 92 -> 1234512345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2393 shiftleft 12345123456789123456789 93 -> 12345123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2394 shiftleft 12345123456789123456789 94 -> 123451234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2395 shiftleft 12345123456789123456789 95 -> 1234512345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2396 shiftleft 12345123456789123456789 96 -> 12345123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2397 shiftleft 12345123456789123456789 97 -> 123451234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2398 shiftleft 12345123456789123456789 98 -> 1234512345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2399 shiftleft 12345123456789123456789 99 -> 12345123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2400 shiftleft 123456123456789123456789 0 -> 123456123456789123456789 +shlx2401 shiftleft 123456123456789123456789 1 -> 1234561234567891234567890 +shlx2402 shiftleft 123456123456789123456789 2 -> 12345612345678912345678900 +shlx2403 shiftleft 123456123456789123456789 3 -> 123456123456789123456789000 +shlx2404 shiftleft 123456123456789123456789 4 -> 1234561234567891234567890000 +shlx2405 shiftleft 123456123456789123456789 5 -> 12345612345678912345678900000 +shlx2406 shiftleft 123456123456789123456789 6 -> 123456123456789123456789000000 +shlx2407 shiftleft 123456123456789123456789 7 -> 1234561234567891234567890000000 +shlx2408 shiftleft 123456123456789123456789 8 -> 12345612345678912345678900000000 +shlx2409 shiftleft 123456123456789123456789 9 -> 123456123456789123456789000000000 +shlx2410 shiftleft 123456123456789123456789 10 -> 1234561234567891234567890000000000 +shlx2411 shiftleft 123456123456789123456789 11 -> 12345612345678912345678900000000000 +shlx2412 shiftleft 123456123456789123456789 12 -> 123456123456789123456789000000000000 +shlx2413 shiftleft 123456123456789123456789 13 -> 1234561234567891234567890000000000000 +shlx2414 shiftleft 123456123456789123456789 14 -> 12345612345678912345678900000000000000 +shlx2415 shiftleft 123456123456789123456789 15 -> 123456123456789123456789000000000000000 +shlx2416 shiftleft 123456123456789123456789 16 -> 1234561234567891234567890000000000000000 +shlx2417 shiftleft 123456123456789123456789 17 -> 12345612345678912345678900000000000000000 +shlx2418 shiftleft 123456123456789123456789 18 -> 123456123456789123456789000000000000000000 +shlx2419 shiftleft 123456123456789123456789 19 -> 1234561234567891234567890000000000000000000 +shlx2420 shiftleft 123456123456789123456789 20 -> 12345612345678912345678900000000000000000000 +shlx2421 shiftleft 123456123456789123456789 21 -> 123456123456789123456789000000000000000000000 +shlx2422 shiftleft 123456123456789123456789 22 -> 1234561234567891234567890000000000000000000000 +shlx2423 shiftleft 123456123456789123456789 23 -> 12345612345678912345678900000000000000000000000 +shlx2424 shiftleft 123456123456789123456789 24 -> 123456123456789123456789000000000000000000000000 +shlx2425 shiftleft 123456123456789123456789 25 -> 1234561234567891234567890000000000000000000000000 +shlx2426 shiftleft 123456123456789123456789 26 -> 12345612345678912345678900000000000000000000000000 +shlx2427 shiftleft 123456123456789123456789 27 -> 123456123456789123456789000000000000000000000000000 +shlx2428 shiftleft 123456123456789123456789 28 -> 1234561234567891234567890000000000000000000000000000 +shlx2429 shiftleft 123456123456789123456789 29 -> 12345612345678912345678900000000000000000000000000000 +shlx2430 shiftleft 123456123456789123456789 30 -> 123456123456789123456789000000000000000000000000000000 +shlx2431 shiftleft 123456123456789123456789 31 -> 1234561234567891234567890000000000000000000000000000000 +shlx2432 shiftleft 123456123456789123456789 32 -> 12345612345678912345678900000000000000000000000000000000 +shlx2433 shiftleft 123456123456789123456789 33 -> 123456123456789123456789000000000000000000000000000000000 +shlx2434 shiftleft 123456123456789123456789 34 -> 1234561234567891234567890000000000000000000000000000000000 +shlx2435 shiftleft 123456123456789123456789 35 -> 12345612345678912345678900000000000000000000000000000000000 +shlx2436 shiftleft 123456123456789123456789 36 -> 123456123456789123456789000000000000000000000000000000000000 +shlx2437 shiftleft 123456123456789123456789 37 -> 1234561234567891234567890000000000000000000000000000000000000 +shlx2438 shiftleft 123456123456789123456789 38 -> 12345612345678912345678900000000000000000000000000000000000000 +shlx2439 shiftleft 123456123456789123456789 39 -> 123456123456789123456789000000000000000000000000000000000000000 +shlx2440 shiftleft 123456123456789123456789 40 -> 1234561234567891234567890000000000000000000000000000000000000000 +shlx2441 shiftleft 123456123456789123456789 41 -> 12345612345678912345678900000000000000000000000000000000000000000 +shlx2442 shiftleft 123456123456789123456789 42 -> 123456123456789123456789000000000000000000000000000000000000000000 +shlx2443 shiftleft 123456123456789123456789 43 -> 1234561234567891234567890000000000000000000000000000000000000000000 +shlx2444 shiftleft 123456123456789123456789 44 -> 12345612345678912345678900000000000000000000000000000000000000000000 +shlx2445 shiftleft 123456123456789123456789 45 -> 123456123456789123456789000000000000000000000000000000000000000000000 +shlx2446 shiftleft 123456123456789123456789 46 -> 1234561234567891234567890000000000000000000000000000000000000000000000 +shlx2447 shiftleft 123456123456789123456789 47 -> 12345612345678912345678900000000000000000000000000000000000000000000000 +shlx2448 shiftleft 123456123456789123456789 48 -> 123456123456789123456789000000000000000000000000000000000000000000000000 +shlx2449 shiftleft 123456123456789123456789 49 -> 1234561234567891234567890000000000000000000000000000000000000000000000000 +shlx2450 shiftleft 123456123456789123456789 50 -> 12345612345678912345678900000000000000000000000000000000000000000000000000 +shlx2451 shiftleft 123456123456789123456789 51 -> 123456123456789123456789000000000000000000000000000000000000000000000000000 +shlx2452 shiftleft 123456123456789123456789 52 -> 1234561234567891234567890000000000000000000000000000000000000000000000000000 +shlx2453 shiftleft 123456123456789123456789 53 -> 12345612345678912345678900000000000000000000000000000000000000000000000000000 +shlx2454 shiftleft 123456123456789123456789 54 -> 123456123456789123456789000000000000000000000000000000000000000000000000000000 +shlx2455 shiftleft 123456123456789123456789 55 -> 1234561234567891234567890000000000000000000000000000000000000000000000000000000 +shlx2456 shiftleft 123456123456789123456789 56 -> 12345612345678912345678900000000000000000000000000000000000000000000000000000000 +shlx2457 shiftleft 123456123456789123456789 57 -> 123456123456789123456789000000000000000000000000000000000000000000000000000000000 +shlx2458 shiftleft 123456123456789123456789 58 -> 1234561234567891234567890000000000000000000000000000000000000000000000000000000000 +shlx2459 shiftleft 123456123456789123456789 59 -> 12345612345678912345678900000000000000000000000000000000000000000000000000000000000 +shlx2460 shiftleft 123456123456789123456789 60 -> 123456123456789123456789000000000000000000000000000000000000000000000000000000000000 +shlx2461 shiftleft 123456123456789123456789 61 -> 1234561234567891234567890000000000000000000000000000000000000000000000000000000000000 +shlx2462 shiftleft 123456123456789123456789 62 -> 12345612345678912345678900000000000000000000000000000000000000000000000000000000000000 +shlx2463 shiftleft 123456123456789123456789 63 -> 123456123456789123456789000000000000000000000000000000000000000000000000000000000000000 +shlx2464 shiftleft 123456123456789123456789 64 -> 1234561234567891234567890000000000000000000000000000000000000000000000000000000000000000 +shlx2465 shiftleft 123456123456789123456789 65 -> 12345612345678912345678900000000000000000000000000000000000000000000000000000000000000000 +shlx2466 shiftleft 123456123456789123456789 66 -> 123456123456789123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx2467 shiftleft 123456123456789123456789 67 -> 1234561234567891234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx2468 shiftleft 123456123456789123456789 68 -> 12345612345678912345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx2469 shiftleft 123456123456789123456789 69 -> 123456123456789123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx2470 shiftleft 123456123456789123456789 70 -> 1234561234567891234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx2471 shiftleft 123456123456789123456789 71 -> 12345612345678912345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx2472 shiftleft 123456123456789123456789 72 -> 123456123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2473 shiftleft 123456123456789123456789 73 -> 1234561234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2474 shiftleft 123456123456789123456789 74 -> 12345612345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2475 shiftleft 123456123456789123456789 75 -> 123456123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2476 shiftleft 123456123456789123456789 76 -> 1234561234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2477 shiftleft 123456123456789123456789 77 -> 12345612345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2478 shiftleft 123456123456789123456789 78 -> 123456123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2479 shiftleft 123456123456789123456789 79 -> 1234561234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2480 shiftleft 123456123456789123456789 80 -> 12345612345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2481 shiftleft 123456123456789123456789 81 -> 123456123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2482 shiftleft 123456123456789123456789 82 -> 1234561234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2483 shiftleft 123456123456789123456789 83 -> 12345612345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2484 shiftleft 123456123456789123456789 84 -> 123456123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2485 shiftleft 123456123456789123456789 85 -> 1234561234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2486 shiftleft 123456123456789123456789 86 -> 12345612345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2487 shiftleft 123456123456789123456789 87 -> 123456123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2488 shiftleft 123456123456789123456789 88 -> 1234561234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2489 shiftleft 123456123456789123456789 89 -> 12345612345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2490 shiftleft 123456123456789123456789 90 -> 123456123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2491 shiftleft 123456123456789123456789 91 -> 1234561234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2492 shiftleft 123456123456789123456789 92 -> 12345612345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2493 shiftleft 123456123456789123456789 93 -> 123456123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2494 shiftleft 123456123456789123456789 94 -> 1234561234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2495 shiftleft 123456123456789123456789 95 -> 12345612345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2496 shiftleft 123456123456789123456789 96 -> 123456123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2497 shiftleft 123456123456789123456789 97 -> 1234561234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2498 shiftleft 123456123456789123456789 98 -> 12345612345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2499 shiftleft 123456123456789123456789 99 -> 123456123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2500 shiftleft 1234567123456789123456789 0 -> 1234567123456789123456789 +shlx2501 shiftleft 1234567123456789123456789 1 -> 12345671234567891234567890 +shlx2502 shiftleft 1234567123456789123456789 2 -> 123456712345678912345678900 +shlx2503 shiftleft 1234567123456789123456789 3 -> 1234567123456789123456789000 +shlx2504 shiftleft 1234567123456789123456789 4 -> 12345671234567891234567890000 +shlx2505 shiftleft 1234567123456789123456789 5 -> 123456712345678912345678900000 +shlx2506 shiftleft 1234567123456789123456789 6 -> 1234567123456789123456789000000 +shlx2507 shiftleft 1234567123456789123456789 7 -> 12345671234567891234567890000000 +shlx2508 shiftleft 1234567123456789123456789 8 -> 123456712345678912345678900000000 +shlx2509 shiftleft 1234567123456789123456789 9 -> 1234567123456789123456789000000000 +shlx2510 shiftleft 1234567123456789123456789 10 -> 12345671234567891234567890000000000 +shlx2511 shiftleft 1234567123456789123456789 11 -> 123456712345678912345678900000000000 +shlx2512 shiftleft 1234567123456789123456789 12 -> 1234567123456789123456789000000000000 +shlx2513 shiftleft 1234567123456789123456789 13 -> 12345671234567891234567890000000000000 +shlx2514 shiftleft 1234567123456789123456789 14 -> 123456712345678912345678900000000000000 +shlx2515 shiftleft 1234567123456789123456789 15 -> 1234567123456789123456789000000000000000 +shlx2516 shiftleft 1234567123456789123456789 16 -> 12345671234567891234567890000000000000000 +shlx2517 shiftleft 1234567123456789123456789 17 -> 123456712345678912345678900000000000000000 +shlx2518 shiftleft 1234567123456789123456789 18 -> 1234567123456789123456789000000000000000000 +shlx2519 shiftleft 1234567123456789123456789 19 -> 12345671234567891234567890000000000000000000 +shlx2520 shiftleft 1234567123456789123456789 20 -> 123456712345678912345678900000000000000000000 +shlx2521 shiftleft 1234567123456789123456789 21 -> 1234567123456789123456789000000000000000000000 +shlx2522 shiftleft 1234567123456789123456789 22 -> 12345671234567891234567890000000000000000000000 +shlx2523 shiftleft 1234567123456789123456789 23 -> 123456712345678912345678900000000000000000000000 +shlx2524 shiftleft 1234567123456789123456789 24 -> 1234567123456789123456789000000000000000000000000 +shlx2525 shiftleft 1234567123456789123456789 25 -> 12345671234567891234567890000000000000000000000000 +shlx2526 shiftleft 1234567123456789123456789 26 -> 123456712345678912345678900000000000000000000000000 +shlx2527 shiftleft 1234567123456789123456789 27 -> 1234567123456789123456789000000000000000000000000000 +shlx2528 shiftleft 1234567123456789123456789 28 -> 12345671234567891234567890000000000000000000000000000 +shlx2529 shiftleft 1234567123456789123456789 29 -> 123456712345678912345678900000000000000000000000000000 +shlx2530 shiftleft 1234567123456789123456789 30 -> 1234567123456789123456789000000000000000000000000000000 +shlx2531 shiftleft 1234567123456789123456789 31 -> 12345671234567891234567890000000000000000000000000000000 +shlx2532 shiftleft 1234567123456789123456789 32 -> 123456712345678912345678900000000000000000000000000000000 +shlx2533 shiftleft 1234567123456789123456789 33 -> 1234567123456789123456789000000000000000000000000000000000 +shlx2534 shiftleft 1234567123456789123456789 34 -> 12345671234567891234567890000000000000000000000000000000000 +shlx2535 shiftleft 1234567123456789123456789 35 -> 123456712345678912345678900000000000000000000000000000000000 +shlx2536 shiftleft 1234567123456789123456789 36 -> 1234567123456789123456789000000000000000000000000000000000000 +shlx2537 shiftleft 1234567123456789123456789 37 -> 12345671234567891234567890000000000000000000000000000000000000 +shlx2538 shiftleft 1234567123456789123456789 38 -> 123456712345678912345678900000000000000000000000000000000000000 +shlx2539 shiftleft 1234567123456789123456789 39 -> 1234567123456789123456789000000000000000000000000000000000000000 +shlx2540 shiftleft 1234567123456789123456789 40 -> 12345671234567891234567890000000000000000000000000000000000000000 +shlx2541 shiftleft 1234567123456789123456789 41 -> 123456712345678912345678900000000000000000000000000000000000000000 +shlx2542 shiftleft 1234567123456789123456789 42 -> 1234567123456789123456789000000000000000000000000000000000000000000 +shlx2543 shiftleft 1234567123456789123456789 43 -> 12345671234567891234567890000000000000000000000000000000000000000000 +shlx2544 shiftleft 1234567123456789123456789 44 -> 123456712345678912345678900000000000000000000000000000000000000000000 +shlx2545 shiftleft 1234567123456789123456789 45 -> 1234567123456789123456789000000000000000000000000000000000000000000000 +shlx2546 shiftleft 1234567123456789123456789 46 -> 12345671234567891234567890000000000000000000000000000000000000000000000 +shlx2547 shiftleft 1234567123456789123456789 47 -> 123456712345678912345678900000000000000000000000000000000000000000000000 +shlx2548 shiftleft 1234567123456789123456789 48 -> 1234567123456789123456789000000000000000000000000000000000000000000000000 +shlx2549 shiftleft 1234567123456789123456789 49 -> 12345671234567891234567890000000000000000000000000000000000000000000000000 +shlx2550 shiftleft 1234567123456789123456789 50 -> 123456712345678912345678900000000000000000000000000000000000000000000000000 +shlx2551 shiftleft 1234567123456789123456789 51 -> 1234567123456789123456789000000000000000000000000000000000000000000000000000 +shlx2552 shiftleft 1234567123456789123456789 52 -> 12345671234567891234567890000000000000000000000000000000000000000000000000000 +shlx2553 shiftleft 1234567123456789123456789 53 -> 123456712345678912345678900000000000000000000000000000000000000000000000000000 +shlx2554 shiftleft 1234567123456789123456789 54 -> 1234567123456789123456789000000000000000000000000000000000000000000000000000000 +shlx2555 shiftleft 1234567123456789123456789 55 -> 12345671234567891234567890000000000000000000000000000000000000000000000000000000 +shlx2556 shiftleft 1234567123456789123456789 56 -> 123456712345678912345678900000000000000000000000000000000000000000000000000000000 +shlx2557 shiftleft 1234567123456789123456789 57 -> 1234567123456789123456789000000000000000000000000000000000000000000000000000000000 +shlx2558 shiftleft 1234567123456789123456789 58 -> 12345671234567891234567890000000000000000000000000000000000000000000000000000000000 +shlx2559 shiftleft 1234567123456789123456789 59 -> 123456712345678912345678900000000000000000000000000000000000000000000000000000000000 +shlx2560 shiftleft 1234567123456789123456789 60 -> 1234567123456789123456789000000000000000000000000000000000000000000000000000000000000 +shlx2561 shiftleft 1234567123456789123456789 61 -> 12345671234567891234567890000000000000000000000000000000000000000000000000000000000000 +shlx2562 shiftleft 1234567123456789123456789 62 -> 123456712345678912345678900000000000000000000000000000000000000000000000000000000000000 +shlx2563 shiftleft 1234567123456789123456789 63 -> 1234567123456789123456789000000000000000000000000000000000000000000000000000000000000000 +shlx2564 shiftleft 1234567123456789123456789 64 -> 12345671234567891234567890000000000000000000000000000000000000000000000000000000000000000 +shlx2565 shiftleft 1234567123456789123456789 65 -> 123456712345678912345678900000000000000000000000000000000000000000000000000000000000000000 +shlx2566 shiftleft 1234567123456789123456789 66 -> 1234567123456789123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx2567 shiftleft 1234567123456789123456789 67 -> 12345671234567891234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx2568 shiftleft 1234567123456789123456789 68 -> 123456712345678912345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx2569 shiftleft 1234567123456789123456789 69 -> 1234567123456789123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx2570 shiftleft 1234567123456789123456789 70 -> 12345671234567891234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx2571 shiftleft 1234567123456789123456789 71 -> 123456712345678912345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx2572 shiftleft 1234567123456789123456789 72 -> 1234567123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2573 shiftleft 1234567123456789123456789 73 -> 12345671234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2574 shiftleft 1234567123456789123456789 74 -> 123456712345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2575 shiftleft 1234567123456789123456789 75 -> 1234567123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2576 shiftleft 1234567123456789123456789 76 -> 12345671234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2577 shiftleft 1234567123456789123456789 77 -> 123456712345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2578 shiftleft 1234567123456789123456789 78 -> 1234567123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2579 shiftleft 1234567123456789123456789 79 -> 12345671234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2580 shiftleft 1234567123456789123456789 80 -> 123456712345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2581 shiftleft 1234567123456789123456789 81 -> 1234567123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2582 shiftleft 1234567123456789123456789 82 -> 12345671234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2583 shiftleft 1234567123456789123456789 83 -> 123456712345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2584 shiftleft 1234567123456789123456789 84 -> 1234567123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2585 shiftleft 1234567123456789123456789 85 -> 12345671234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2586 shiftleft 1234567123456789123456789 86 -> 123456712345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2587 shiftleft 1234567123456789123456789 87 -> 1234567123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2588 shiftleft 1234567123456789123456789 88 -> 12345671234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2589 shiftleft 1234567123456789123456789 89 -> 123456712345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2590 shiftleft 1234567123456789123456789 90 -> 1234567123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2591 shiftleft 1234567123456789123456789 91 -> 12345671234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2592 shiftleft 1234567123456789123456789 92 -> 123456712345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2593 shiftleft 1234567123456789123456789 93 -> 1234567123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2594 shiftleft 1234567123456789123456789 94 -> 12345671234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2595 shiftleft 1234567123456789123456789 95 -> 123456712345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2596 shiftleft 1234567123456789123456789 96 -> 1234567123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2597 shiftleft 1234567123456789123456789 97 -> 12345671234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2598 shiftleft 1234567123456789123456789 98 -> 123456712345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2599 shiftleft 1234567123456789123456789 99 -> 1234567123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2600 shiftleft 12345678123456789123456789 0 -> 12345678123456789123456789 +shlx2601 shiftleft 12345678123456789123456789 1 -> 123456781234567891234567890 +shlx2602 shiftleft 12345678123456789123456789 2 -> 1234567812345678912345678900 +shlx2603 shiftleft 12345678123456789123456789 3 -> 12345678123456789123456789000 +shlx2604 shiftleft 12345678123456789123456789 4 -> 123456781234567891234567890000 +shlx2605 shiftleft 12345678123456789123456789 5 -> 1234567812345678912345678900000 +shlx2606 shiftleft 12345678123456789123456789 6 -> 12345678123456789123456789000000 +shlx2607 shiftleft 12345678123456789123456789 7 -> 123456781234567891234567890000000 +shlx2608 shiftleft 12345678123456789123456789 8 -> 1234567812345678912345678900000000 +shlx2609 shiftleft 12345678123456789123456789 9 -> 12345678123456789123456789000000000 +shlx2610 shiftleft 12345678123456789123456789 10 -> 123456781234567891234567890000000000 +shlx2611 shiftleft 12345678123456789123456789 11 -> 1234567812345678912345678900000000000 +shlx2612 shiftleft 12345678123456789123456789 12 -> 12345678123456789123456789000000000000 +shlx2613 shiftleft 12345678123456789123456789 13 -> 123456781234567891234567890000000000000 +shlx2614 shiftleft 12345678123456789123456789 14 -> 1234567812345678912345678900000000000000 +shlx2615 shiftleft 12345678123456789123456789 15 -> 12345678123456789123456789000000000000000 +shlx2616 shiftleft 12345678123456789123456789 16 -> 123456781234567891234567890000000000000000 +shlx2617 shiftleft 12345678123456789123456789 17 -> 1234567812345678912345678900000000000000000 +shlx2618 shiftleft 12345678123456789123456789 18 -> 12345678123456789123456789000000000000000000 +shlx2619 shiftleft 12345678123456789123456789 19 -> 123456781234567891234567890000000000000000000 +shlx2620 shiftleft 12345678123456789123456789 20 -> 1234567812345678912345678900000000000000000000 +shlx2621 shiftleft 12345678123456789123456789 21 -> 12345678123456789123456789000000000000000000000 +shlx2622 shiftleft 12345678123456789123456789 22 -> 123456781234567891234567890000000000000000000000 +shlx2623 shiftleft 12345678123456789123456789 23 -> 1234567812345678912345678900000000000000000000000 +shlx2624 shiftleft 12345678123456789123456789 24 -> 12345678123456789123456789000000000000000000000000 +shlx2625 shiftleft 12345678123456789123456789 25 -> 123456781234567891234567890000000000000000000000000 +shlx2626 shiftleft 12345678123456789123456789 26 -> 1234567812345678912345678900000000000000000000000000 +shlx2627 shiftleft 12345678123456789123456789 27 -> 12345678123456789123456789000000000000000000000000000 +shlx2628 shiftleft 12345678123456789123456789 28 -> 123456781234567891234567890000000000000000000000000000 +shlx2629 shiftleft 12345678123456789123456789 29 -> 1234567812345678912345678900000000000000000000000000000 +shlx2630 shiftleft 12345678123456789123456789 30 -> 12345678123456789123456789000000000000000000000000000000 +shlx2631 shiftleft 12345678123456789123456789 31 -> 123456781234567891234567890000000000000000000000000000000 +shlx2632 shiftleft 12345678123456789123456789 32 -> 1234567812345678912345678900000000000000000000000000000000 +shlx2633 shiftleft 12345678123456789123456789 33 -> 12345678123456789123456789000000000000000000000000000000000 +shlx2634 shiftleft 12345678123456789123456789 34 -> 123456781234567891234567890000000000000000000000000000000000 +shlx2635 shiftleft 12345678123456789123456789 35 -> 1234567812345678912345678900000000000000000000000000000000000 +shlx2636 shiftleft 12345678123456789123456789 36 -> 12345678123456789123456789000000000000000000000000000000000000 +shlx2637 shiftleft 12345678123456789123456789 37 -> 123456781234567891234567890000000000000000000000000000000000000 +shlx2638 shiftleft 12345678123456789123456789 38 -> 1234567812345678912345678900000000000000000000000000000000000000 +shlx2639 shiftleft 12345678123456789123456789 39 -> 12345678123456789123456789000000000000000000000000000000000000000 +shlx2640 shiftleft 12345678123456789123456789 40 -> 123456781234567891234567890000000000000000000000000000000000000000 +shlx2641 shiftleft 12345678123456789123456789 41 -> 1234567812345678912345678900000000000000000000000000000000000000000 +shlx2642 shiftleft 12345678123456789123456789 42 -> 12345678123456789123456789000000000000000000000000000000000000000000 +shlx2643 shiftleft 12345678123456789123456789 43 -> 123456781234567891234567890000000000000000000000000000000000000000000 +shlx2644 shiftleft 12345678123456789123456789 44 -> 1234567812345678912345678900000000000000000000000000000000000000000000 +shlx2645 shiftleft 12345678123456789123456789 45 -> 12345678123456789123456789000000000000000000000000000000000000000000000 +shlx2646 shiftleft 12345678123456789123456789 46 -> 123456781234567891234567890000000000000000000000000000000000000000000000 +shlx2647 shiftleft 12345678123456789123456789 47 -> 1234567812345678912345678900000000000000000000000000000000000000000000000 +shlx2648 shiftleft 12345678123456789123456789 48 -> 12345678123456789123456789000000000000000000000000000000000000000000000000 +shlx2649 shiftleft 12345678123456789123456789 49 -> 123456781234567891234567890000000000000000000000000000000000000000000000000 +shlx2650 shiftleft 12345678123456789123456789 50 -> 1234567812345678912345678900000000000000000000000000000000000000000000000000 +shlx2651 shiftleft 12345678123456789123456789 51 -> 12345678123456789123456789000000000000000000000000000000000000000000000000000 +shlx2652 shiftleft 12345678123456789123456789 52 -> 123456781234567891234567890000000000000000000000000000000000000000000000000000 +shlx2653 shiftleft 12345678123456789123456789 53 -> 1234567812345678912345678900000000000000000000000000000000000000000000000000000 +shlx2654 shiftleft 12345678123456789123456789 54 -> 12345678123456789123456789000000000000000000000000000000000000000000000000000000 +shlx2655 shiftleft 12345678123456789123456789 55 -> 123456781234567891234567890000000000000000000000000000000000000000000000000000000 +shlx2656 shiftleft 12345678123456789123456789 56 -> 1234567812345678912345678900000000000000000000000000000000000000000000000000000000 +shlx2657 shiftleft 12345678123456789123456789 57 -> 12345678123456789123456789000000000000000000000000000000000000000000000000000000000 +shlx2658 shiftleft 12345678123456789123456789 58 -> 123456781234567891234567890000000000000000000000000000000000000000000000000000000000 +shlx2659 shiftleft 12345678123456789123456789 59 -> 1234567812345678912345678900000000000000000000000000000000000000000000000000000000000 +shlx2660 shiftleft 12345678123456789123456789 60 -> 12345678123456789123456789000000000000000000000000000000000000000000000000000000000000 +shlx2661 shiftleft 12345678123456789123456789 61 -> 123456781234567891234567890000000000000000000000000000000000000000000000000000000000000 +shlx2662 shiftleft 12345678123456789123456789 62 -> 1234567812345678912345678900000000000000000000000000000000000000000000000000000000000000 +shlx2663 shiftleft 12345678123456789123456789 63 -> 12345678123456789123456789000000000000000000000000000000000000000000000000000000000000000 +shlx2664 shiftleft 12345678123456789123456789 64 -> 123456781234567891234567890000000000000000000000000000000000000000000000000000000000000000 +shlx2665 shiftleft 12345678123456789123456789 65 -> 1234567812345678912345678900000000000000000000000000000000000000000000000000000000000000000 +shlx2666 shiftleft 12345678123456789123456789 66 -> 12345678123456789123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx2667 shiftleft 12345678123456789123456789 67 -> 123456781234567891234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx2668 shiftleft 12345678123456789123456789 68 -> 1234567812345678912345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx2669 shiftleft 12345678123456789123456789 69 -> 12345678123456789123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx2670 shiftleft 12345678123456789123456789 70 -> 123456781234567891234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx2671 shiftleft 12345678123456789123456789 71 -> 1234567812345678912345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx2672 shiftleft 12345678123456789123456789 72 -> 12345678123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2673 shiftleft 12345678123456789123456789 73 -> 123456781234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2674 shiftleft 12345678123456789123456789 74 -> 1234567812345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2675 shiftleft 12345678123456789123456789 75 -> 12345678123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2676 shiftleft 12345678123456789123456789 76 -> 123456781234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2677 shiftleft 12345678123456789123456789 77 -> 1234567812345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2678 shiftleft 12345678123456789123456789 78 -> 12345678123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2679 shiftleft 12345678123456789123456789 79 -> 123456781234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2680 shiftleft 12345678123456789123456789 80 -> 1234567812345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2681 shiftleft 12345678123456789123456789 81 -> 12345678123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2682 shiftleft 12345678123456789123456789 82 -> 123456781234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2683 shiftleft 12345678123456789123456789 83 -> 1234567812345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2684 shiftleft 12345678123456789123456789 84 -> 12345678123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2685 shiftleft 12345678123456789123456789 85 -> 123456781234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2686 shiftleft 12345678123456789123456789 86 -> 1234567812345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2687 shiftleft 12345678123456789123456789 87 -> 12345678123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2688 shiftleft 12345678123456789123456789 88 -> 123456781234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2689 shiftleft 12345678123456789123456789 89 -> 1234567812345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2690 shiftleft 12345678123456789123456789 90 -> 12345678123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2691 shiftleft 12345678123456789123456789 91 -> 123456781234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2692 shiftleft 12345678123456789123456789 92 -> 1234567812345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2693 shiftleft 12345678123456789123456789 93 -> 12345678123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2694 shiftleft 12345678123456789123456789 94 -> 123456781234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2695 shiftleft 12345678123456789123456789 95 -> 1234567812345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2696 shiftleft 12345678123456789123456789 96 -> 12345678123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2697 shiftleft 12345678123456789123456789 97 -> 123456781234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2698 shiftleft 12345678123456789123456789 98 -> 1234567812345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2699 shiftleft 12345678123456789123456789 99 -> 12345678123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2700 shiftleft 123456789123456789123456789 0 -> 123456789123456789123456789 +shlx2701 shiftleft 123456789123456789123456789 1 -> 1234567891234567891234567890 +shlx2702 shiftleft 123456789123456789123456789 2 -> 12345678912345678912345678900 +shlx2703 shiftleft 123456789123456789123456789 3 -> 123456789123456789123456789000 +shlx2704 shiftleft 123456789123456789123456789 4 -> 1234567891234567891234567890000 +shlx2705 shiftleft 123456789123456789123456789 5 -> 12345678912345678912345678900000 +shlx2706 shiftleft 123456789123456789123456789 6 -> 123456789123456789123456789000000 +shlx2707 shiftleft 123456789123456789123456789 7 -> 1234567891234567891234567890000000 +shlx2708 shiftleft 123456789123456789123456789 8 -> 12345678912345678912345678900000000 +shlx2709 shiftleft 123456789123456789123456789 9 -> 123456789123456789123456789000000000 +shlx2710 shiftleft 123456789123456789123456789 10 -> 1234567891234567891234567890000000000 +shlx2711 shiftleft 123456789123456789123456789 11 -> 12345678912345678912345678900000000000 +shlx2712 shiftleft 123456789123456789123456789 12 -> 123456789123456789123456789000000000000 +shlx2713 shiftleft 123456789123456789123456789 13 -> 1234567891234567891234567890000000000000 +shlx2714 shiftleft 123456789123456789123456789 14 -> 12345678912345678912345678900000000000000 +shlx2715 shiftleft 123456789123456789123456789 15 -> 123456789123456789123456789000000000000000 +shlx2716 shiftleft 123456789123456789123456789 16 -> 1234567891234567891234567890000000000000000 +shlx2717 shiftleft 123456789123456789123456789 17 -> 12345678912345678912345678900000000000000000 +shlx2718 shiftleft 123456789123456789123456789 18 -> 123456789123456789123456789000000000000000000 +shlx2719 shiftleft 123456789123456789123456789 19 -> 1234567891234567891234567890000000000000000000 +shlx2720 shiftleft 123456789123456789123456789 20 -> 12345678912345678912345678900000000000000000000 +shlx2721 shiftleft 123456789123456789123456789 21 -> 123456789123456789123456789000000000000000000000 +shlx2722 shiftleft 123456789123456789123456789 22 -> 1234567891234567891234567890000000000000000000000 +shlx2723 shiftleft 123456789123456789123456789 23 -> 12345678912345678912345678900000000000000000000000 +shlx2724 shiftleft 123456789123456789123456789 24 -> 123456789123456789123456789000000000000000000000000 +shlx2725 shiftleft 123456789123456789123456789 25 -> 1234567891234567891234567890000000000000000000000000 +shlx2726 shiftleft 123456789123456789123456789 26 -> 12345678912345678912345678900000000000000000000000000 +shlx2727 shiftleft 123456789123456789123456789 27 -> 123456789123456789123456789000000000000000000000000000 +shlx2728 shiftleft 123456789123456789123456789 28 -> 1234567891234567891234567890000000000000000000000000000 +shlx2729 shiftleft 123456789123456789123456789 29 -> 12345678912345678912345678900000000000000000000000000000 +shlx2730 shiftleft 123456789123456789123456789 30 -> 123456789123456789123456789000000000000000000000000000000 +shlx2731 shiftleft 123456789123456789123456789 31 -> 1234567891234567891234567890000000000000000000000000000000 +shlx2732 shiftleft 123456789123456789123456789 32 -> 12345678912345678912345678900000000000000000000000000000000 +shlx2733 shiftleft 123456789123456789123456789 33 -> 123456789123456789123456789000000000000000000000000000000000 +shlx2734 shiftleft 123456789123456789123456789 34 -> 1234567891234567891234567890000000000000000000000000000000000 +shlx2735 shiftleft 123456789123456789123456789 35 -> 12345678912345678912345678900000000000000000000000000000000000 +shlx2736 shiftleft 123456789123456789123456789 36 -> 123456789123456789123456789000000000000000000000000000000000000 +shlx2737 shiftleft 123456789123456789123456789 37 -> 1234567891234567891234567890000000000000000000000000000000000000 +shlx2738 shiftleft 123456789123456789123456789 38 -> 12345678912345678912345678900000000000000000000000000000000000000 +shlx2739 shiftleft 123456789123456789123456789 39 -> 123456789123456789123456789000000000000000000000000000000000000000 +shlx2740 shiftleft 123456789123456789123456789 40 -> 1234567891234567891234567890000000000000000000000000000000000000000 +shlx2741 shiftleft 123456789123456789123456789 41 -> 12345678912345678912345678900000000000000000000000000000000000000000 +shlx2742 shiftleft 123456789123456789123456789 42 -> 123456789123456789123456789000000000000000000000000000000000000000000 +shlx2743 shiftleft 123456789123456789123456789 43 -> 1234567891234567891234567890000000000000000000000000000000000000000000 +shlx2744 shiftleft 123456789123456789123456789 44 -> 12345678912345678912345678900000000000000000000000000000000000000000000 +shlx2745 shiftleft 123456789123456789123456789 45 -> 123456789123456789123456789000000000000000000000000000000000000000000000 +shlx2746 shiftleft 123456789123456789123456789 46 -> 1234567891234567891234567890000000000000000000000000000000000000000000000 +shlx2747 shiftleft 123456789123456789123456789 47 -> 12345678912345678912345678900000000000000000000000000000000000000000000000 +shlx2748 shiftleft 123456789123456789123456789 48 -> 123456789123456789123456789000000000000000000000000000000000000000000000000 +shlx2749 shiftleft 123456789123456789123456789 49 -> 1234567891234567891234567890000000000000000000000000000000000000000000000000 +shlx2750 shiftleft 123456789123456789123456789 50 -> 12345678912345678912345678900000000000000000000000000000000000000000000000000 +shlx2751 shiftleft 123456789123456789123456789 51 -> 123456789123456789123456789000000000000000000000000000000000000000000000000000 +shlx2752 shiftleft 123456789123456789123456789 52 -> 1234567891234567891234567890000000000000000000000000000000000000000000000000000 +shlx2753 shiftleft 123456789123456789123456789 53 -> 12345678912345678912345678900000000000000000000000000000000000000000000000000000 +shlx2754 shiftleft 123456789123456789123456789 54 -> 123456789123456789123456789000000000000000000000000000000000000000000000000000000 +shlx2755 shiftleft 123456789123456789123456789 55 -> 1234567891234567891234567890000000000000000000000000000000000000000000000000000000 +shlx2756 shiftleft 123456789123456789123456789 56 -> 12345678912345678912345678900000000000000000000000000000000000000000000000000000000 +shlx2757 shiftleft 123456789123456789123456789 57 -> 123456789123456789123456789000000000000000000000000000000000000000000000000000000000 +shlx2758 shiftleft 123456789123456789123456789 58 -> 1234567891234567891234567890000000000000000000000000000000000000000000000000000000000 +shlx2759 shiftleft 123456789123456789123456789 59 -> 12345678912345678912345678900000000000000000000000000000000000000000000000000000000000 +shlx2760 shiftleft 123456789123456789123456789 60 -> 123456789123456789123456789000000000000000000000000000000000000000000000000000000000000 +shlx2761 shiftleft 123456789123456789123456789 61 -> 1234567891234567891234567890000000000000000000000000000000000000000000000000000000000000 +shlx2762 shiftleft 123456789123456789123456789 62 -> 12345678912345678912345678900000000000000000000000000000000000000000000000000000000000000 +shlx2763 shiftleft 123456789123456789123456789 63 -> 123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000 +shlx2764 shiftleft 123456789123456789123456789 64 -> 1234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000 +shlx2765 shiftleft 123456789123456789123456789 65 -> 12345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000 +shlx2766 shiftleft 123456789123456789123456789 66 -> 123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx2767 shiftleft 123456789123456789123456789 67 -> 1234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx2768 shiftleft 123456789123456789123456789 68 -> 12345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx2769 shiftleft 123456789123456789123456789 69 -> 123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx2770 shiftleft 123456789123456789123456789 70 -> 1234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx2771 shiftleft 123456789123456789123456789 71 -> 12345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx2772 shiftleft 123456789123456789123456789 72 -> 123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2773 shiftleft 123456789123456789123456789 73 -> 1234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2774 shiftleft 123456789123456789123456789 74 -> 12345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2775 shiftleft 123456789123456789123456789 75 -> 123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2776 shiftleft 123456789123456789123456789 76 -> 1234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2777 shiftleft 123456789123456789123456789 77 -> 12345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2778 shiftleft 123456789123456789123456789 78 -> 123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2779 shiftleft 123456789123456789123456789 79 -> 1234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2780 shiftleft 123456789123456789123456789 80 -> 12345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2781 shiftleft 123456789123456789123456789 81 -> 123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2782 shiftleft 123456789123456789123456789 82 -> 1234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2783 shiftleft 123456789123456789123456789 83 -> 12345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2784 shiftleft 123456789123456789123456789 84 -> 123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2785 shiftleft 123456789123456789123456789 85 -> 1234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2786 shiftleft 123456789123456789123456789 86 -> 12345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2787 shiftleft 123456789123456789123456789 87 -> 123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2788 shiftleft 123456789123456789123456789 88 -> 1234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2789 shiftleft 123456789123456789123456789 89 -> 12345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2790 shiftleft 123456789123456789123456789 90 -> 123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2791 shiftleft 123456789123456789123456789 91 -> 1234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2792 shiftleft 123456789123456789123456789 92 -> 12345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2793 shiftleft 123456789123456789123456789 93 -> 123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2794 shiftleft 123456789123456789123456789 94 -> 1234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2795 shiftleft 123456789123456789123456789 95 -> 12345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2796 shiftleft 123456789123456789123456789 96 -> 123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2797 shiftleft 123456789123456789123456789 97 -> 1234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2798 shiftleft 123456789123456789123456789 98 -> 12345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2799 shiftleft 123456789123456789123456789 99 -> 123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2800 shiftleft 1123456789123456789123456789 0 -> 1123456789123456789123456789 +shlx2801 shiftleft 1123456789123456789123456789 1 -> 11234567891234567891234567890 +shlx2802 shiftleft 1123456789123456789123456789 2 -> 112345678912345678912345678900 +shlx2803 shiftleft 1123456789123456789123456789 3 -> 1123456789123456789123456789000 +shlx2804 shiftleft 1123456789123456789123456789 4 -> 11234567891234567891234567890000 +shlx2805 shiftleft 1123456789123456789123456789 5 -> 112345678912345678912345678900000 +shlx2806 shiftleft 1123456789123456789123456789 6 -> 1123456789123456789123456789000000 +shlx2807 shiftleft 1123456789123456789123456789 7 -> 11234567891234567891234567890000000 +shlx2808 shiftleft 1123456789123456789123456789 8 -> 112345678912345678912345678900000000 +shlx2809 shiftleft 1123456789123456789123456789 9 -> 1123456789123456789123456789000000000 +shlx2810 shiftleft 1123456789123456789123456789 10 -> 11234567891234567891234567890000000000 +shlx2811 shiftleft 1123456789123456789123456789 11 -> 112345678912345678912345678900000000000 +shlx2812 shiftleft 1123456789123456789123456789 12 -> 1123456789123456789123456789000000000000 +shlx2813 shiftleft 1123456789123456789123456789 13 -> 11234567891234567891234567890000000000000 +shlx2814 shiftleft 1123456789123456789123456789 14 -> 112345678912345678912345678900000000000000 +shlx2815 shiftleft 1123456789123456789123456789 15 -> 1123456789123456789123456789000000000000000 +shlx2816 shiftleft 1123456789123456789123456789 16 -> 11234567891234567891234567890000000000000000 +shlx2817 shiftleft 1123456789123456789123456789 17 -> 112345678912345678912345678900000000000000000 +shlx2818 shiftleft 1123456789123456789123456789 18 -> 1123456789123456789123456789000000000000000000 +shlx2819 shiftleft 1123456789123456789123456789 19 -> 11234567891234567891234567890000000000000000000 +shlx2820 shiftleft 1123456789123456789123456789 20 -> 112345678912345678912345678900000000000000000000 +shlx2821 shiftleft 1123456789123456789123456789 21 -> 1123456789123456789123456789000000000000000000000 +shlx2822 shiftleft 1123456789123456789123456789 22 -> 11234567891234567891234567890000000000000000000000 +shlx2823 shiftleft 1123456789123456789123456789 23 -> 112345678912345678912345678900000000000000000000000 +shlx2824 shiftleft 1123456789123456789123456789 24 -> 1123456789123456789123456789000000000000000000000000 +shlx2825 shiftleft 1123456789123456789123456789 25 -> 11234567891234567891234567890000000000000000000000000 +shlx2826 shiftleft 1123456789123456789123456789 26 -> 112345678912345678912345678900000000000000000000000000 +shlx2827 shiftleft 1123456789123456789123456789 27 -> 1123456789123456789123456789000000000000000000000000000 +shlx2828 shiftleft 1123456789123456789123456789 28 -> 11234567891234567891234567890000000000000000000000000000 +shlx2829 shiftleft 1123456789123456789123456789 29 -> 112345678912345678912345678900000000000000000000000000000 +shlx2830 shiftleft 1123456789123456789123456789 30 -> 1123456789123456789123456789000000000000000000000000000000 +shlx2831 shiftleft 1123456789123456789123456789 31 -> 11234567891234567891234567890000000000000000000000000000000 +shlx2832 shiftleft 1123456789123456789123456789 32 -> 112345678912345678912345678900000000000000000000000000000000 +shlx2833 shiftleft 1123456789123456789123456789 33 -> 1123456789123456789123456789000000000000000000000000000000000 +shlx2834 shiftleft 1123456789123456789123456789 34 -> 11234567891234567891234567890000000000000000000000000000000000 +shlx2835 shiftleft 1123456789123456789123456789 35 -> 112345678912345678912345678900000000000000000000000000000000000 +shlx2836 shiftleft 1123456789123456789123456789 36 -> 1123456789123456789123456789000000000000000000000000000000000000 +shlx2837 shiftleft 1123456789123456789123456789 37 -> 11234567891234567891234567890000000000000000000000000000000000000 +shlx2838 shiftleft 1123456789123456789123456789 38 -> 112345678912345678912345678900000000000000000000000000000000000000 +shlx2839 shiftleft 1123456789123456789123456789 39 -> 1123456789123456789123456789000000000000000000000000000000000000000 +shlx2840 shiftleft 1123456789123456789123456789 40 -> 11234567891234567891234567890000000000000000000000000000000000000000 +shlx2841 shiftleft 1123456789123456789123456789 41 -> 112345678912345678912345678900000000000000000000000000000000000000000 +shlx2842 shiftleft 1123456789123456789123456789 42 -> 1123456789123456789123456789000000000000000000000000000000000000000000 +shlx2843 shiftleft 1123456789123456789123456789 43 -> 11234567891234567891234567890000000000000000000000000000000000000000000 +shlx2844 shiftleft 1123456789123456789123456789 44 -> 112345678912345678912345678900000000000000000000000000000000000000000000 +shlx2845 shiftleft 1123456789123456789123456789 45 -> 1123456789123456789123456789000000000000000000000000000000000000000000000 +shlx2846 shiftleft 1123456789123456789123456789 46 -> 11234567891234567891234567890000000000000000000000000000000000000000000000 +shlx2847 shiftleft 1123456789123456789123456789 47 -> 112345678912345678912345678900000000000000000000000000000000000000000000000 +shlx2848 shiftleft 1123456789123456789123456789 48 -> 1123456789123456789123456789000000000000000000000000000000000000000000000000 +shlx2849 shiftleft 1123456789123456789123456789 49 -> 11234567891234567891234567890000000000000000000000000000000000000000000000000 +shlx2850 shiftleft 1123456789123456789123456789 50 -> 112345678912345678912345678900000000000000000000000000000000000000000000000000 +shlx2851 shiftleft 1123456789123456789123456789 51 -> 1123456789123456789123456789000000000000000000000000000000000000000000000000000 +shlx2852 shiftleft 1123456789123456789123456789 52 -> 11234567891234567891234567890000000000000000000000000000000000000000000000000000 +shlx2853 shiftleft 1123456789123456789123456789 53 -> 112345678912345678912345678900000000000000000000000000000000000000000000000000000 +shlx2854 shiftleft 1123456789123456789123456789 54 -> 1123456789123456789123456789000000000000000000000000000000000000000000000000000000 +shlx2855 shiftleft 1123456789123456789123456789 55 -> 11234567891234567891234567890000000000000000000000000000000000000000000000000000000 +shlx2856 shiftleft 1123456789123456789123456789 56 -> 112345678912345678912345678900000000000000000000000000000000000000000000000000000000 +shlx2857 shiftleft 1123456789123456789123456789 57 -> 1123456789123456789123456789000000000000000000000000000000000000000000000000000000000 +shlx2858 shiftleft 1123456789123456789123456789 58 -> 11234567891234567891234567890000000000000000000000000000000000000000000000000000000000 +shlx2859 shiftleft 1123456789123456789123456789 59 -> 112345678912345678912345678900000000000000000000000000000000000000000000000000000000000 +shlx2860 shiftleft 1123456789123456789123456789 60 -> 1123456789123456789123456789000000000000000000000000000000000000000000000000000000000000 +shlx2861 shiftleft 1123456789123456789123456789 61 -> 11234567891234567891234567890000000000000000000000000000000000000000000000000000000000000 +shlx2862 shiftleft 1123456789123456789123456789 62 -> 112345678912345678912345678900000000000000000000000000000000000000000000000000000000000000 +shlx2863 shiftleft 1123456789123456789123456789 63 -> 1123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000 +shlx2864 shiftleft 1123456789123456789123456789 64 -> 11234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000 +shlx2865 shiftleft 1123456789123456789123456789 65 -> 112345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000 +shlx2866 shiftleft 1123456789123456789123456789 66 -> 1123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx2867 shiftleft 1123456789123456789123456789 67 -> 11234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx2868 shiftleft 1123456789123456789123456789 68 -> 112345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx2869 shiftleft 1123456789123456789123456789 69 -> 1123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx2870 shiftleft 1123456789123456789123456789 70 -> 11234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx2871 shiftleft 1123456789123456789123456789 71 -> 112345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx2872 shiftleft 1123456789123456789123456789 72 -> 1123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2873 shiftleft 1123456789123456789123456789 73 -> 11234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2874 shiftleft 1123456789123456789123456789 74 -> 112345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2875 shiftleft 1123456789123456789123456789 75 -> 1123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2876 shiftleft 1123456789123456789123456789 76 -> 11234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2877 shiftleft 1123456789123456789123456789 77 -> 112345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2878 shiftleft 1123456789123456789123456789 78 -> 1123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2879 shiftleft 1123456789123456789123456789 79 -> 11234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2880 shiftleft 1123456789123456789123456789 80 -> 112345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2881 shiftleft 1123456789123456789123456789 81 -> 1123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2882 shiftleft 1123456789123456789123456789 82 -> 11234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2883 shiftleft 1123456789123456789123456789 83 -> 112345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2884 shiftleft 1123456789123456789123456789 84 -> 1123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2885 shiftleft 1123456789123456789123456789 85 -> 11234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2886 shiftleft 1123456789123456789123456789 86 -> 112345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2887 shiftleft 1123456789123456789123456789 87 -> 1123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2888 shiftleft 1123456789123456789123456789 88 -> 11234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2889 shiftleft 1123456789123456789123456789 89 -> 112345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2890 shiftleft 1123456789123456789123456789 90 -> 1123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2891 shiftleft 1123456789123456789123456789 91 -> 11234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2892 shiftleft 1123456789123456789123456789 92 -> 112345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2893 shiftleft 1123456789123456789123456789 93 -> 1123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2894 shiftleft 1123456789123456789123456789 94 -> 11234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2895 shiftleft 1123456789123456789123456789 95 -> 112345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2896 shiftleft 1123456789123456789123456789 96 -> 1123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2897 shiftleft 1123456789123456789123456789 97 -> 11234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2898 shiftleft 1123456789123456789123456789 98 -> 112345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2899 shiftleft 1123456789123456789123456789 99 -> 1123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2900 shiftleft 12123456789123456789123456789 0 -> 12123456789123456789123456789 +shlx2901 shiftleft 12123456789123456789123456789 1 -> 121234567891234567891234567890 +shlx2902 shiftleft 12123456789123456789123456789 2 -> 1212345678912345678912345678900 +shlx2903 shiftleft 12123456789123456789123456789 3 -> 12123456789123456789123456789000 +shlx2904 shiftleft 12123456789123456789123456789 4 -> 121234567891234567891234567890000 +shlx2905 shiftleft 12123456789123456789123456789 5 -> 1212345678912345678912345678900000 +shlx2906 shiftleft 12123456789123456789123456789 6 -> 12123456789123456789123456789000000 +shlx2907 shiftleft 12123456789123456789123456789 7 -> 121234567891234567891234567890000000 +shlx2908 shiftleft 12123456789123456789123456789 8 -> 1212345678912345678912345678900000000 +shlx2909 shiftleft 12123456789123456789123456789 9 -> 12123456789123456789123456789000000000 +shlx2910 shiftleft 12123456789123456789123456789 10 -> 121234567891234567891234567890000000000 +shlx2911 shiftleft 12123456789123456789123456789 11 -> 1212345678912345678912345678900000000000 +shlx2912 shiftleft 12123456789123456789123456789 12 -> 12123456789123456789123456789000000000000 +shlx2913 shiftleft 12123456789123456789123456789 13 -> 121234567891234567891234567890000000000000 +shlx2914 shiftleft 12123456789123456789123456789 14 -> 1212345678912345678912345678900000000000000 +shlx2915 shiftleft 12123456789123456789123456789 15 -> 12123456789123456789123456789000000000000000 +shlx2916 shiftleft 12123456789123456789123456789 16 -> 121234567891234567891234567890000000000000000 +shlx2917 shiftleft 12123456789123456789123456789 17 -> 1212345678912345678912345678900000000000000000 +shlx2918 shiftleft 12123456789123456789123456789 18 -> 12123456789123456789123456789000000000000000000 +shlx2919 shiftleft 12123456789123456789123456789 19 -> 121234567891234567891234567890000000000000000000 +shlx2920 shiftleft 12123456789123456789123456789 20 -> 1212345678912345678912345678900000000000000000000 +shlx2921 shiftleft 12123456789123456789123456789 21 -> 12123456789123456789123456789000000000000000000000 +shlx2922 shiftleft 12123456789123456789123456789 22 -> 121234567891234567891234567890000000000000000000000 +shlx2923 shiftleft 12123456789123456789123456789 23 -> 1212345678912345678912345678900000000000000000000000 +shlx2924 shiftleft 12123456789123456789123456789 24 -> 12123456789123456789123456789000000000000000000000000 +shlx2925 shiftleft 12123456789123456789123456789 25 -> 121234567891234567891234567890000000000000000000000000 +shlx2926 shiftleft 12123456789123456789123456789 26 -> 1212345678912345678912345678900000000000000000000000000 +shlx2927 shiftleft 12123456789123456789123456789 27 -> 12123456789123456789123456789000000000000000000000000000 +shlx2928 shiftleft 12123456789123456789123456789 28 -> 121234567891234567891234567890000000000000000000000000000 +shlx2929 shiftleft 12123456789123456789123456789 29 -> 1212345678912345678912345678900000000000000000000000000000 +shlx2930 shiftleft 12123456789123456789123456789 30 -> 12123456789123456789123456789000000000000000000000000000000 +shlx2931 shiftleft 12123456789123456789123456789 31 -> 121234567891234567891234567890000000000000000000000000000000 +shlx2932 shiftleft 12123456789123456789123456789 32 -> 1212345678912345678912345678900000000000000000000000000000000 +shlx2933 shiftleft 12123456789123456789123456789 33 -> 12123456789123456789123456789000000000000000000000000000000000 +shlx2934 shiftleft 12123456789123456789123456789 34 -> 121234567891234567891234567890000000000000000000000000000000000 +shlx2935 shiftleft 12123456789123456789123456789 35 -> 1212345678912345678912345678900000000000000000000000000000000000 +shlx2936 shiftleft 12123456789123456789123456789 36 -> 12123456789123456789123456789000000000000000000000000000000000000 +shlx2937 shiftleft 12123456789123456789123456789 37 -> 121234567891234567891234567890000000000000000000000000000000000000 +shlx2938 shiftleft 12123456789123456789123456789 38 -> 1212345678912345678912345678900000000000000000000000000000000000000 +shlx2939 shiftleft 12123456789123456789123456789 39 -> 12123456789123456789123456789000000000000000000000000000000000000000 +shlx2940 shiftleft 12123456789123456789123456789 40 -> 121234567891234567891234567890000000000000000000000000000000000000000 +shlx2941 shiftleft 12123456789123456789123456789 41 -> 1212345678912345678912345678900000000000000000000000000000000000000000 +shlx2942 shiftleft 12123456789123456789123456789 42 -> 12123456789123456789123456789000000000000000000000000000000000000000000 +shlx2943 shiftleft 12123456789123456789123456789 43 -> 121234567891234567891234567890000000000000000000000000000000000000000000 +shlx2944 shiftleft 12123456789123456789123456789 44 -> 1212345678912345678912345678900000000000000000000000000000000000000000000 +shlx2945 shiftleft 12123456789123456789123456789 45 -> 12123456789123456789123456789000000000000000000000000000000000000000000000 +shlx2946 shiftleft 12123456789123456789123456789 46 -> 121234567891234567891234567890000000000000000000000000000000000000000000000 +shlx2947 shiftleft 12123456789123456789123456789 47 -> 1212345678912345678912345678900000000000000000000000000000000000000000000000 +shlx2948 shiftleft 12123456789123456789123456789 48 -> 12123456789123456789123456789000000000000000000000000000000000000000000000000 +shlx2949 shiftleft 12123456789123456789123456789 49 -> 121234567891234567891234567890000000000000000000000000000000000000000000000000 +shlx2950 shiftleft 12123456789123456789123456789 50 -> 1212345678912345678912345678900000000000000000000000000000000000000000000000000 +shlx2951 shiftleft 12123456789123456789123456789 51 -> 12123456789123456789123456789000000000000000000000000000000000000000000000000000 +shlx2952 shiftleft 12123456789123456789123456789 52 -> 121234567891234567891234567890000000000000000000000000000000000000000000000000000 +shlx2953 shiftleft 12123456789123456789123456789 53 -> 1212345678912345678912345678900000000000000000000000000000000000000000000000000000 +shlx2954 shiftleft 12123456789123456789123456789 54 -> 12123456789123456789123456789000000000000000000000000000000000000000000000000000000 +shlx2955 shiftleft 12123456789123456789123456789 55 -> 121234567891234567891234567890000000000000000000000000000000000000000000000000000000 +shlx2956 shiftleft 12123456789123456789123456789 56 -> 1212345678912345678912345678900000000000000000000000000000000000000000000000000000000 +shlx2957 shiftleft 12123456789123456789123456789 57 -> 12123456789123456789123456789000000000000000000000000000000000000000000000000000000000 +shlx2958 shiftleft 12123456789123456789123456789 58 -> 121234567891234567891234567890000000000000000000000000000000000000000000000000000000000 +shlx2959 shiftleft 12123456789123456789123456789 59 -> 1212345678912345678912345678900000000000000000000000000000000000000000000000000000000000 +shlx2960 shiftleft 12123456789123456789123456789 60 -> 12123456789123456789123456789000000000000000000000000000000000000000000000000000000000000 +shlx2961 shiftleft 12123456789123456789123456789 61 -> 121234567891234567891234567890000000000000000000000000000000000000000000000000000000000000 +shlx2962 shiftleft 12123456789123456789123456789 62 -> 1212345678912345678912345678900000000000000000000000000000000000000000000000000000000000000 +shlx2963 shiftleft 12123456789123456789123456789 63 -> 12123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000 +shlx2964 shiftleft 12123456789123456789123456789 64 -> 121234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000 +shlx2965 shiftleft 12123456789123456789123456789 65 -> 1212345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000 +shlx2966 shiftleft 12123456789123456789123456789 66 -> 12123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx2967 shiftleft 12123456789123456789123456789 67 -> 121234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx2968 shiftleft 12123456789123456789123456789 68 -> 1212345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx2969 shiftleft 12123456789123456789123456789 69 -> 12123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx2970 shiftleft 12123456789123456789123456789 70 -> 121234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx2971 shiftleft 12123456789123456789123456789 71 -> 1212345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx2972 shiftleft 12123456789123456789123456789 72 -> 12123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2973 shiftleft 12123456789123456789123456789 73 -> 121234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2974 shiftleft 12123456789123456789123456789 74 -> 1212345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2975 shiftleft 12123456789123456789123456789 75 -> 12123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2976 shiftleft 12123456789123456789123456789 76 -> 121234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2977 shiftleft 12123456789123456789123456789 77 -> 1212345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2978 shiftleft 12123456789123456789123456789 78 -> 12123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2979 shiftleft 12123456789123456789123456789 79 -> 121234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2980 shiftleft 12123456789123456789123456789 80 -> 1212345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2981 shiftleft 12123456789123456789123456789 81 -> 12123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2982 shiftleft 12123456789123456789123456789 82 -> 121234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2983 shiftleft 12123456789123456789123456789 83 -> 1212345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2984 shiftleft 12123456789123456789123456789 84 -> 12123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2985 shiftleft 12123456789123456789123456789 85 -> 121234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2986 shiftleft 12123456789123456789123456789 86 -> 1212345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2987 shiftleft 12123456789123456789123456789 87 -> 12123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2988 shiftleft 12123456789123456789123456789 88 -> 121234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2989 shiftleft 12123456789123456789123456789 89 -> 1212345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2990 shiftleft 12123456789123456789123456789 90 -> 12123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2991 shiftleft 12123456789123456789123456789 91 -> 121234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2992 shiftleft 12123456789123456789123456789 92 -> 1212345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2993 shiftleft 12123456789123456789123456789 93 -> 12123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2994 shiftleft 12123456789123456789123456789 94 -> 121234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2995 shiftleft 12123456789123456789123456789 95 -> 1212345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2996 shiftleft 12123456789123456789123456789 96 -> 12123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2997 shiftleft 12123456789123456789123456789 97 -> 121234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2998 shiftleft 12123456789123456789123456789 98 -> 1212345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx2999 shiftleft 12123456789123456789123456789 99 -> 12123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3000 shiftleft 123123456789123456789123456789 0 -> 123123456789123456789123456789 +shlx3001 shiftleft 123123456789123456789123456789 1 -> 1231234567891234567891234567890 +shlx3002 shiftleft 123123456789123456789123456789 2 -> 12312345678912345678912345678900 +shlx3003 shiftleft 123123456789123456789123456789 3 -> 123123456789123456789123456789000 +shlx3004 shiftleft 123123456789123456789123456789 4 -> 1231234567891234567891234567890000 +shlx3005 shiftleft 123123456789123456789123456789 5 -> 12312345678912345678912345678900000 +shlx3006 shiftleft 123123456789123456789123456789 6 -> 123123456789123456789123456789000000 +shlx3007 shiftleft 123123456789123456789123456789 7 -> 1231234567891234567891234567890000000 +shlx3008 shiftleft 123123456789123456789123456789 8 -> 12312345678912345678912345678900000000 +shlx3009 shiftleft 123123456789123456789123456789 9 -> 123123456789123456789123456789000000000 +shlx3010 shiftleft 123123456789123456789123456789 10 -> 1231234567891234567891234567890000000000 +shlx3011 shiftleft 123123456789123456789123456789 11 -> 12312345678912345678912345678900000000000 +shlx3012 shiftleft 123123456789123456789123456789 12 -> 123123456789123456789123456789000000000000 +shlx3013 shiftleft 123123456789123456789123456789 13 -> 1231234567891234567891234567890000000000000 +shlx3014 shiftleft 123123456789123456789123456789 14 -> 12312345678912345678912345678900000000000000 +shlx3015 shiftleft 123123456789123456789123456789 15 -> 123123456789123456789123456789000000000000000 +shlx3016 shiftleft 123123456789123456789123456789 16 -> 1231234567891234567891234567890000000000000000 +shlx3017 shiftleft 123123456789123456789123456789 17 -> 12312345678912345678912345678900000000000000000 +shlx3018 shiftleft 123123456789123456789123456789 18 -> 123123456789123456789123456789000000000000000000 +shlx3019 shiftleft 123123456789123456789123456789 19 -> 1231234567891234567891234567890000000000000000000 +shlx3020 shiftleft 123123456789123456789123456789 20 -> 12312345678912345678912345678900000000000000000000 +shlx3021 shiftleft 123123456789123456789123456789 21 -> 123123456789123456789123456789000000000000000000000 +shlx3022 shiftleft 123123456789123456789123456789 22 -> 1231234567891234567891234567890000000000000000000000 +shlx3023 shiftleft 123123456789123456789123456789 23 -> 12312345678912345678912345678900000000000000000000000 +shlx3024 shiftleft 123123456789123456789123456789 24 -> 123123456789123456789123456789000000000000000000000000 +shlx3025 shiftleft 123123456789123456789123456789 25 -> 1231234567891234567891234567890000000000000000000000000 +shlx3026 shiftleft 123123456789123456789123456789 26 -> 12312345678912345678912345678900000000000000000000000000 +shlx3027 shiftleft 123123456789123456789123456789 27 -> 123123456789123456789123456789000000000000000000000000000 +shlx3028 shiftleft 123123456789123456789123456789 28 -> 1231234567891234567891234567890000000000000000000000000000 +shlx3029 shiftleft 123123456789123456789123456789 29 -> 12312345678912345678912345678900000000000000000000000000000 +shlx3030 shiftleft 123123456789123456789123456789 30 -> 123123456789123456789123456789000000000000000000000000000000 +shlx3031 shiftleft 123123456789123456789123456789 31 -> 1231234567891234567891234567890000000000000000000000000000000 +shlx3032 shiftleft 123123456789123456789123456789 32 -> 12312345678912345678912345678900000000000000000000000000000000 +shlx3033 shiftleft 123123456789123456789123456789 33 -> 123123456789123456789123456789000000000000000000000000000000000 +shlx3034 shiftleft 123123456789123456789123456789 34 -> 1231234567891234567891234567890000000000000000000000000000000000 +shlx3035 shiftleft 123123456789123456789123456789 35 -> 12312345678912345678912345678900000000000000000000000000000000000 +shlx3036 shiftleft 123123456789123456789123456789 36 -> 123123456789123456789123456789000000000000000000000000000000000000 +shlx3037 shiftleft 123123456789123456789123456789 37 -> 1231234567891234567891234567890000000000000000000000000000000000000 +shlx3038 shiftleft 123123456789123456789123456789 38 -> 12312345678912345678912345678900000000000000000000000000000000000000 +shlx3039 shiftleft 123123456789123456789123456789 39 -> 123123456789123456789123456789000000000000000000000000000000000000000 +shlx3040 shiftleft 123123456789123456789123456789 40 -> 1231234567891234567891234567890000000000000000000000000000000000000000 +shlx3041 shiftleft 123123456789123456789123456789 41 -> 12312345678912345678912345678900000000000000000000000000000000000000000 +shlx3042 shiftleft 123123456789123456789123456789 42 -> 123123456789123456789123456789000000000000000000000000000000000000000000 +shlx3043 shiftleft 123123456789123456789123456789 43 -> 1231234567891234567891234567890000000000000000000000000000000000000000000 +shlx3044 shiftleft 123123456789123456789123456789 44 -> 12312345678912345678912345678900000000000000000000000000000000000000000000 +shlx3045 shiftleft 123123456789123456789123456789 45 -> 123123456789123456789123456789000000000000000000000000000000000000000000000 +shlx3046 shiftleft 123123456789123456789123456789 46 -> 1231234567891234567891234567890000000000000000000000000000000000000000000000 +shlx3047 shiftleft 123123456789123456789123456789 47 -> 12312345678912345678912345678900000000000000000000000000000000000000000000000 +shlx3048 shiftleft 123123456789123456789123456789 48 -> 123123456789123456789123456789000000000000000000000000000000000000000000000000 +shlx3049 shiftleft 123123456789123456789123456789 49 -> 1231234567891234567891234567890000000000000000000000000000000000000000000000000 +shlx3050 shiftleft 123123456789123456789123456789 50 -> 12312345678912345678912345678900000000000000000000000000000000000000000000000000 +shlx3051 shiftleft 123123456789123456789123456789 51 -> 123123456789123456789123456789000000000000000000000000000000000000000000000000000 +shlx3052 shiftleft 123123456789123456789123456789 52 -> 1231234567891234567891234567890000000000000000000000000000000000000000000000000000 +shlx3053 shiftleft 123123456789123456789123456789 53 -> 12312345678912345678912345678900000000000000000000000000000000000000000000000000000 +shlx3054 shiftleft 123123456789123456789123456789 54 -> 123123456789123456789123456789000000000000000000000000000000000000000000000000000000 +shlx3055 shiftleft 123123456789123456789123456789 55 -> 1231234567891234567891234567890000000000000000000000000000000000000000000000000000000 +shlx3056 shiftleft 123123456789123456789123456789 56 -> 12312345678912345678912345678900000000000000000000000000000000000000000000000000000000 +shlx3057 shiftleft 123123456789123456789123456789 57 -> 123123456789123456789123456789000000000000000000000000000000000000000000000000000000000 +shlx3058 shiftleft 123123456789123456789123456789 58 -> 1231234567891234567891234567890000000000000000000000000000000000000000000000000000000000 +shlx3059 shiftleft 123123456789123456789123456789 59 -> 12312345678912345678912345678900000000000000000000000000000000000000000000000000000000000 +shlx3060 shiftleft 123123456789123456789123456789 60 -> 123123456789123456789123456789000000000000000000000000000000000000000000000000000000000000 +shlx3061 shiftleft 123123456789123456789123456789 61 -> 1231234567891234567891234567890000000000000000000000000000000000000000000000000000000000000 +shlx3062 shiftleft 123123456789123456789123456789 62 -> 12312345678912345678912345678900000000000000000000000000000000000000000000000000000000000000 +shlx3063 shiftleft 123123456789123456789123456789 63 -> 123123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000 +shlx3064 shiftleft 123123456789123456789123456789 64 -> 1231234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000 +shlx3065 shiftleft 123123456789123456789123456789 65 -> 12312345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000 +shlx3066 shiftleft 123123456789123456789123456789 66 -> 123123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx3067 shiftleft 123123456789123456789123456789 67 -> 1231234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx3068 shiftleft 123123456789123456789123456789 68 -> 12312345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx3069 shiftleft 123123456789123456789123456789 69 -> 123123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx3070 shiftleft 123123456789123456789123456789 70 -> 1231234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx3071 shiftleft 123123456789123456789123456789 71 -> 12312345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx3072 shiftleft 123123456789123456789123456789 72 -> 123123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3073 shiftleft 123123456789123456789123456789 73 -> 1231234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3074 shiftleft 123123456789123456789123456789 74 -> 12312345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3075 shiftleft 123123456789123456789123456789 75 -> 123123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3076 shiftleft 123123456789123456789123456789 76 -> 1231234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3077 shiftleft 123123456789123456789123456789 77 -> 12312345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3078 shiftleft 123123456789123456789123456789 78 -> 123123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3079 shiftleft 123123456789123456789123456789 79 -> 1231234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3080 shiftleft 123123456789123456789123456789 80 -> 12312345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3081 shiftleft 123123456789123456789123456789 81 -> 123123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3082 shiftleft 123123456789123456789123456789 82 -> 1231234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3083 shiftleft 123123456789123456789123456789 83 -> 12312345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3084 shiftleft 123123456789123456789123456789 84 -> 123123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3085 shiftleft 123123456789123456789123456789 85 -> 1231234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3086 shiftleft 123123456789123456789123456789 86 -> 12312345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3087 shiftleft 123123456789123456789123456789 87 -> 123123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3088 shiftleft 123123456789123456789123456789 88 -> 1231234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3089 shiftleft 123123456789123456789123456789 89 -> 12312345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3090 shiftleft 123123456789123456789123456789 90 -> 123123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3091 shiftleft 123123456789123456789123456789 91 -> 1231234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3092 shiftleft 123123456789123456789123456789 92 -> 12312345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3093 shiftleft 123123456789123456789123456789 93 -> 123123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3094 shiftleft 123123456789123456789123456789 94 -> 1231234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3095 shiftleft 123123456789123456789123456789 95 -> 12312345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3096 shiftleft 123123456789123456789123456789 96 -> 123123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3097 shiftleft 123123456789123456789123456789 97 -> 1231234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3098 shiftleft 123123456789123456789123456789 98 -> 12312345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3099 shiftleft 123123456789123456789123456789 99 -> 123123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3100 shiftleft 1234123456789123456789123456789 0 -> 1234123456789123456789123456789 +shlx3101 shiftleft 1234123456789123456789123456789 1 -> 12341234567891234567891234567890 +shlx3102 shiftleft 1234123456789123456789123456789 2 -> 123412345678912345678912345678900 +shlx3103 shiftleft 1234123456789123456789123456789 3 -> 1234123456789123456789123456789000 +shlx3104 shiftleft 1234123456789123456789123456789 4 -> 12341234567891234567891234567890000 +shlx3105 shiftleft 1234123456789123456789123456789 5 -> 123412345678912345678912345678900000 +shlx3106 shiftleft 1234123456789123456789123456789 6 -> 1234123456789123456789123456789000000 +shlx3107 shiftleft 1234123456789123456789123456789 7 -> 12341234567891234567891234567890000000 +shlx3108 shiftleft 1234123456789123456789123456789 8 -> 123412345678912345678912345678900000000 +shlx3109 shiftleft 1234123456789123456789123456789 9 -> 1234123456789123456789123456789000000000 +shlx3110 shiftleft 1234123456789123456789123456789 10 -> 12341234567891234567891234567890000000000 +shlx3111 shiftleft 1234123456789123456789123456789 11 -> 123412345678912345678912345678900000000000 +shlx3112 shiftleft 1234123456789123456789123456789 12 -> 1234123456789123456789123456789000000000000 +shlx3113 shiftleft 1234123456789123456789123456789 13 -> 12341234567891234567891234567890000000000000 +shlx3114 shiftleft 1234123456789123456789123456789 14 -> 123412345678912345678912345678900000000000000 +shlx3115 shiftleft 1234123456789123456789123456789 15 -> 1234123456789123456789123456789000000000000000 +shlx3116 shiftleft 1234123456789123456789123456789 16 -> 12341234567891234567891234567890000000000000000 +shlx3117 shiftleft 1234123456789123456789123456789 17 -> 123412345678912345678912345678900000000000000000 +shlx3118 shiftleft 1234123456789123456789123456789 18 -> 1234123456789123456789123456789000000000000000000 +shlx3119 shiftleft 1234123456789123456789123456789 19 -> 12341234567891234567891234567890000000000000000000 +shlx3120 shiftleft 1234123456789123456789123456789 20 -> 123412345678912345678912345678900000000000000000000 +shlx3121 shiftleft 1234123456789123456789123456789 21 -> 1234123456789123456789123456789000000000000000000000 +shlx3122 shiftleft 1234123456789123456789123456789 22 -> 12341234567891234567891234567890000000000000000000000 +shlx3123 shiftleft 1234123456789123456789123456789 23 -> 123412345678912345678912345678900000000000000000000000 +shlx3124 shiftleft 1234123456789123456789123456789 24 -> 1234123456789123456789123456789000000000000000000000000 +shlx3125 shiftleft 1234123456789123456789123456789 25 -> 12341234567891234567891234567890000000000000000000000000 +shlx3126 shiftleft 1234123456789123456789123456789 26 -> 123412345678912345678912345678900000000000000000000000000 +shlx3127 shiftleft 1234123456789123456789123456789 27 -> 1234123456789123456789123456789000000000000000000000000000 +shlx3128 shiftleft 1234123456789123456789123456789 28 -> 12341234567891234567891234567890000000000000000000000000000 +shlx3129 shiftleft 1234123456789123456789123456789 29 -> 123412345678912345678912345678900000000000000000000000000000 +shlx3130 shiftleft 1234123456789123456789123456789 30 -> 1234123456789123456789123456789000000000000000000000000000000 +shlx3131 shiftleft 1234123456789123456789123456789 31 -> 12341234567891234567891234567890000000000000000000000000000000 +shlx3132 shiftleft 1234123456789123456789123456789 32 -> 123412345678912345678912345678900000000000000000000000000000000 +shlx3133 shiftleft 1234123456789123456789123456789 33 -> 1234123456789123456789123456789000000000000000000000000000000000 +shlx3134 shiftleft 1234123456789123456789123456789 34 -> 12341234567891234567891234567890000000000000000000000000000000000 +shlx3135 shiftleft 1234123456789123456789123456789 35 -> 123412345678912345678912345678900000000000000000000000000000000000 +shlx3136 shiftleft 1234123456789123456789123456789 36 -> 1234123456789123456789123456789000000000000000000000000000000000000 +shlx3137 shiftleft 1234123456789123456789123456789 37 -> 12341234567891234567891234567890000000000000000000000000000000000000 +shlx3138 shiftleft 1234123456789123456789123456789 38 -> 123412345678912345678912345678900000000000000000000000000000000000000 +shlx3139 shiftleft 1234123456789123456789123456789 39 -> 1234123456789123456789123456789000000000000000000000000000000000000000 +shlx3140 shiftleft 1234123456789123456789123456789 40 -> 12341234567891234567891234567890000000000000000000000000000000000000000 +shlx3141 shiftleft 1234123456789123456789123456789 41 -> 123412345678912345678912345678900000000000000000000000000000000000000000 +shlx3142 shiftleft 1234123456789123456789123456789 42 -> 1234123456789123456789123456789000000000000000000000000000000000000000000 +shlx3143 shiftleft 1234123456789123456789123456789 43 -> 12341234567891234567891234567890000000000000000000000000000000000000000000 +shlx3144 shiftleft 1234123456789123456789123456789 44 -> 123412345678912345678912345678900000000000000000000000000000000000000000000 +shlx3145 shiftleft 1234123456789123456789123456789 45 -> 1234123456789123456789123456789000000000000000000000000000000000000000000000 +shlx3146 shiftleft 1234123456789123456789123456789 46 -> 12341234567891234567891234567890000000000000000000000000000000000000000000000 +shlx3147 shiftleft 1234123456789123456789123456789 47 -> 123412345678912345678912345678900000000000000000000000000000000000000000000000 +shlx3148 shiftleft 1234123456789123456789123456789 48 -> 1234123456789123456789123456789000000000000000000000000000000000000000000000000 +shlx3149 shiftleft 1234123456789123456789123456789 49 -> 12341234567891234567891234567890000000000000000000000000000000000000000000000000 +shlx3150 shiftleft 1234123456789123456789123456789 50 -> 123412345678912345678912345678900000000000000000000000000000000000000000000000000 +shlx3151 shiftleft 1234123456789123456789123456789 51 -> 1234123456789123456789123456789000000000000000000000000000000000000000000000000000 +shlx3152 shiftleft 1234123456789123456789123456789 52 -> 12341234567891234567891234567890000000000000000000000000000000000000000000000000000 +shlx3153 shiftleft 1234123456789123456789123456789 53 -> 123412345678912345678912345678900000000000000000000000000000000000000000000000000000 +shlx3154 shiftleft 1234123456789123456789123456789 54 -> 1234123456789123456789123456789000000000000000000000000000000000000000000000000000000 +shlx3155 shiftleft 1234123456789123456789123456789 55 -> 12341234567891234567891234567890000000000000000000000000000000000000000000000000000000 +shlx3156 shiftleft 1234123456789123456789123456789 56 -> 123412345678912345678912345678900000000000000000000000000000000000000000000000000000000 +shlx3157 shiftleft 1234123456789123456789123456789 57 -> 1234123456789123456789123456789000000000000000000000000000000000000000000000000000000000 +shlx3158 shiftleft 1234123456789123456789123456789 58 -> 12341234567891234567891234567890000000000000000000000000000000000000000000000000000000000 +shlx3159 shiftleft 1234123456789123456789123456789 59 -> 123412345678912345678912345678900000000000000000000000000000000000000000000000000000000000 +shlx3160 shiftleft 1234123456789123456789123456789 60 -> 1234123456789123456789123456789000000000000000000000000000000000000000000000000000000000000 +shlx3161 shiftleft 1234123456789123456789123456789 61 -> 12341234567891234567891234567890000000000000000000000000000000000000000000000000000000000000 +shlx3162 shiftleft 1234123456789123456789123456789 62 -> 123412345678912345678912345678900000000000000000000000000000000000000000000000000000000000000 +shlx3163 shiftleft 1234123456789123456789123456789 63 -> 1234123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000 +shlx3164 shiftleft 1234123456789123456789123456789 64 -> 12341234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000 +shlx3165 shiftleft 1234123456789123456789123456789 65 -> 123412345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000 +shlx3166 shiftleft 1234123456789123456789123456789 66 -> 1234123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx3167 shiftleft 1234123456789123456789123456789 67 -> 12341234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx3168 shiftleft 1234123456789123456789123456789 68 -> 123412345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx3169 shiftleft 1234123456789123456789123456789 69 -> 1234123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx3170 shiftleft 1234123456789123456789123456789 70 -> 12341234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx3171 shiftleft 1234123456789123456789123456789 71 -> 123412345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx3172 shiftleft 1234123456789123456789123456789 72 -> 1234123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3173 shiftleft 1234123456789123456789123456789 73 -> 12341234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3174 shiftleft 1234123456789123456789123456789 74 -> 123412345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3175 shiftleft 1234123456789123456789123456789 75 -> 1234123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3176 shiftleft 1234123456789123456789123456789 76 -> 12341234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3177 shiftleft 1234123456789123456789123456789 77 -> 123412345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3178 shiftleft 1234123456789123456789123456789 78 -> 1234123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3179 shiftleft 1234123456789123456789123456789 79 -> 12341234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3180 shiftleft 1234123456789123456789123456789 80 -> 123412345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3181 shiftleft 1234123456789123456789123456789 81 -> 1234123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3182 shiftleft 1234123456789123456789123456789 82 -> 12341234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3183 shiftleft 1234123456789123456789123456789 83 -> 123412345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3184 shiftleft 1234123456789123456789123456789 84 -> 1234123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3185 shiftleft 1234123456789123456789123456789 85 -> 12341234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3186 shiftleft 1234123456789123456789123456789 86 -> 123412345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3187 shiftleft 1234123456789123456789123456789 87 -> 1234123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3188 shiftleft 1234123456789123456789123456789 88 -> 12341234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3189 shiftleft 1234123456789123456789123456789 89 -> 123412345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3190 shiftleft 1234123456789123456789123456789 90 -> 1234123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3191 shiftleft 1234123456789123456789123456789 91 -> 12341234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3192 shiftleft 1234123456789123456789123456789 92 -> 123412345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3193 shiftleft 1234123456789123456789123456789 93 -> 1234123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3194 shiftleft 1234123456789123456789123456789 94 -> 12341234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3195 shiftleft 1234123456789123456789123456789 95 -> 123412345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3196 shiftleft 1234123456789123456789123456789 96 -> 1234123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3197 shiftleft 1234123456789123456789123456789 97 -> 12341234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3198 shiftleft 1234123456789123456789123456789 98 -> 123412345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3199 shiftleft 1234123456789123456789123456789 99 -> 1234123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3200 shiftleft 12345123456789123456789123456789 0 -> 12345123456789123456789123456789 +shlx3201 shiftleft 12345123456789123456789123456789 1 -> 123451234567891234567891234567890 +shlx3202 shiftleft 12345123456789123456789123456789 2 -> 1234512345678912345678912345678900 +shlx3203 shiftleft 12345123456789123456789123456789 3 -> 12345123456789123456789123456789000 +shlx3204 shiftleft 12345123456789123456789123456789 4 -> 123451234567891234567891234567890000 +shlx3205 shiftleft 12345123456789123456789123456789 5 -> 1234512345678912345678912345678900000 +shlx3206 shiftleft 12345123456789123456789123456789 6 -> 12345123456789123456789123456789000000 +shlx3207 shiftleft 12345123456789123456789123456789 7 -> 123451234567891234567891234567890000000 +shlx3208 shiftleft 12345123456789123456789123456789 8 -> 1234512345678912345678912345678900000000 +shlx3209 shiftleft 12345123456789123456789123456789 9 -> 12345123456789123456789123456789000000000 +shlx3210 shiftleft 12345123456789123456789123456789 10 -> 123451234567891234567891234567890000000000 +shlx3211 shiftleft 12345123456789123456789123456789 11 -> 1234512345678912345678912345678900000000000 +shlx3212 shiftleft 12345123456789123456789123456789 12 -> 12345123456789123456789123456789000000000000 +shlx3213 shiftleft 12345123456789123456789123456789 13 -> 123451234567891234567891234567890000000000000 +shlx3214 shiftleft 12345123456789123456789123456789 14 -> 1234512345678912345678912345678900000000000000 +shlx3215 shiftleft 12345123456789123456789123456789 15 -> 12345123456789123456789123456789000000000000000 +shlx3216 shiftleft 12345123456789123456789123456789 16 -> 123451234567891234567891234567890000000000000000 +shlx3217 shiftleft 12345123456789123456789123456789 17 -> 1234512345678912345678912345678900000000000000000 +shlx3218 shiftleft 12345123456789123456789123456789 18 -> 12345123456789123456789123456789000000000000000000 +shlx3219 shiftleft 12345123456789123456789123456789 19 -> 123451234567891234567891234567890000000000000000000 +shlx3220 shiftleft 12345123456789123456789123456789 20 -> 1234512345678912345678912345678900000000000000000000 +shlx3221 shiftleft 12345123456789123456789123456789 21 -> 12345123456789123456789123456789000000000000000000000 +shlx3222 shiftleft 12345123456789123456789123456789 22 -> 123451234567891234567891234567890000000000000000000000 +shlx3223 shiftleft 12345123456789123456789123456789 23 -> 1234512345678912345678912345678900000000000000000000000 +shlx3224 shiftleft 12345123456789123456789123456789 24 -> 12345123456789123456789123456789000000000000000000000000 +shlx3225 shiftleft 12345123456789123456789123456789 25 -> 123451234567891234567891234567890000000000000000000000000 +shlx3226 shiftleft 12345123456789123456789123456789 26 -> 1234512345678912345678912345678900000000000000000000000000 +shlx3227 shiftleft 12345123456789123456789123456789 27 -> 12345123456789123456789123456789000000000000000000000000000 +shlx3228 shiftleft 12345123456789123456789123456789 28 -> 123451234567891234567891234567890000000000000000000000000000 +shlx3229 shiftleft 12345123456789123456789123456789 29 -> 1234512345678912345678912345678900000000000000000000000000000 +shlx3230 shiftleft 12345123456789123456789123456789 30 -> 12345123456789123456789123456789000000000000000000000000000000 +shlx3231 shiftleft 12345123456789123456789123456789 31 -> 123451234567891234567891234567890000000000000000000000000000000 +shlx3232 shiftleft 12345123456789123456789123456789 32 -> 1234512345678912345678912345678900000000000000000000000000000000 +shlx3233 shiftleft 12345123456789123456789123456789 33 -> 12345123456789123456789123456789000000000000000000000000000000000 +shlx3234 shiftleft 12345123456789123456789123456789 34 -> 123451234567891234567891234567890000000000000000000000000000000000 +shlx3235 shiftleft 12345123456789123456789123456789 35 -> 1234512345678912345678912345678900000000000000000000000000000000000 +shlx3236 shiftleft 12345123456789123456789123456789 36 -> 12345123456789123456789123456789000000000000000000000000000000000000 +shlx3237 shiftleft 12345123456789123456789123456789 37 -> 123451234567891234567891234567890000000000000000000000000000000000000 +shlx3238 shiftleft 12345123456789123456789123456789 38 -> 1234512345678912345678912345678900000000000000000000000000000000000000 +shlx3239 shiftleft 12345123456789123456789123456789 39 -> 12345123456789123456789123456789000000000000000000000000000000000000000 +shlx3240 shiftleft 12345123456789123456789123456789 40 -> 123451234567891234567891234567890000000000000000000000000000000000000000 +shlx3241 shiftleft 12345123456789123456789123456789 41 -> 1234512345678912345678912345678900000000000000000000000000000000000000000 +shlx3242 shiftleft 12345123456789123456789123456789 42 -> 12345123456789123456789123456789000000000000000000000000000000000000000000 +shlx3243 shiftleft 12345123456789123456789123456789 43 -> 123451234567891234567891234567890000000000000000000000000000000000000000000 +shlx3244 shiftleft 12345123456789123456789123456789 44 -> 1234512345678912345678912345678900000000000000000000000000000000000000000000 +shlx3245 shiftleft 12345123456789123456789123456789 45 -> 12345123456789123456789123456789000000000000000000000000000000000000000000000 +shlx3246 shiftleft 12345123456789123456789123456789 46 -> 123451234567891234567891234567890000000000000000000000000000000000000000000000 +shlx3247 shiftleft 12345123456789123456789123456789 47 -> 1234512345678912345678912345678900000000000000000000000000000000000000000000000 +shlx3248 shiftleft 12345123456789123456789123456789 48 -> 12345123456789123456789123456789000000000000000000000000000000000000000000000000 +shlx3249 shiftleft 12345123456789123456789123456789 49 -> 123451234567891234567891234567890000000000000000000000000000000000000000000000000 +shlx3250 shiftleft 12345123456789123456789123456789 50 -> 1234512345678912345678912345678900000000000000000000000000000000000000000000000000 +shlx3251 shiftleft 12345123456789123456789123456789 51 -> 12345123456789123456789123456789000000000000000000000000000000000000000000000000000 +shlx3252 shiftleft 12345123456789123456789123456789 52 -> 123451234567891234567891234567890000000000000000000000000000000000000000000000000000 +shlx3253 shiftleft 12345123456789123456789123456789 53 -> 1234512345678912345678912345678900000000000000000000000000000000000000000000000000000 +shlx3254 shiftleft 12345123456789123456789123456789 54 -> 12345123456789123456789123456789000000000000000000000000000000000000000000000000000000 +shlx3255 shiftleft 12345123456789123456789123456789 55 -> 123451234567891234567891234567890000000000000000000000000000000000000000000000000000000 +shlx3256 shiftleft 12345123456789123456789123456789 56 -> 1234512345678912345678912345678900000000000000000000000000000000000000000000000000000000 +shlx3257 shiftleft 12345123456789123456789123456789 57 -> 12345123456789123456789123456789000000000000000000000000000000000000000000000000000000000 +shlx3258 shiftleft 12345123456789123456789123456789 58 -> 123451234567891234567891234567890000000000000000000000000000000000000000000000000000000000 +shlx3259 shiftleft 12345123456789123456789123456789 59 -> 1234512345678912345678912345678900000000000000000000000000000000000000000000000000000000000 +shlx3260 shiftleft 12345123456789123456789123456789 60 -> 12345123456789123456789123456789000000000000000000000000000000000000000000000000000000000000 +shlx3261 shiftleft 12345123456789123456789123456789 61 -> 123451234567891234567891234567890000000000000000000000000000000000000000000000000000000000000 +shlx3262 shiftleft 12345123456789123456789123456789 62 -> 1234512345678912345678912345678900000000000000000000000000000000000000000000000000000000000000 +shlx3263 shiftleft 12345123456789123456789123456789 63 -> 12345123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000 +shlx3264 shiftleft 12345123456789123456789123456789 64 -> 123451234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000 +shlx3265 shiftleft 12345123456789123456789123456789 65 -> 1234512345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000 +shlx3266 shiftleft 12345123456789123456789123456789 66 -> 12345123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx3267 shiftleft 12345123456789123456789123456789 67 -> 123451234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx3268 shiftleft 12345123456789123456789123456789 68 -> 1234512345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx3269 shiftleft 12345123456789123456789123456789 69 -> 12345123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx3270 shiftleft 12345123456789123456789123456789 70 -> 123451234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx3271 shiftleft 12345123456789123456789123456789 71 -> 1234512345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx3272 shiftleft 12345123456789123456789123456789 72 -> 12345123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3273 shiftleft 12345123456789123456789123456789 73 -> 123451234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3274 shiftleft 12345123456789123456789123456789 74 -> 1234512345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3275 shiftleft 12345123456789123456789123456789 75 -> 12345123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3276 shiftleft 12345123456789123456789123456789 76 -> 123451234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3277 shiftleft 12345123456789123456789123456789 77 -> 1234512345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3278 shiftleft 12345123456789123456789123456789 78 -> 12345123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3279 shiftleft 12345123456789123456789123456789 79 -> 123451234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3280 shiftleft 12345123456789123456789123456789 80 -> 1234512345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3281 shiftleft 12345123456789123456789123456789 81 -> 12345123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3282 shiftleft 12345123456789123456789123456789 82 -> 123451234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3283 shiftleft 12345123456789123456789123456789 83 -> 1234512345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3284 shiftleft 12345123456789123456789123456789 84 -> 12345123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3285 shiftleft 12345123456789123456789123456789 85 -> 123451234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3286 shiftleft 12345123456789123456789123456789 86 -> 1234512345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3287 shiftleft 12345123456789123456789123456789 87 -> 12345123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3288 shiftleft 12345123456789123456789123456789 88 -> 123451234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3289 shiftleft 12345123456789123456789123456789 89 -> 1234512345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3290 shiftleft 12345123456789123456789123456789 90 -> 12345123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3291 shiftleft 12345123456789123456789123456789 91 -> 123451234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3292 shiftleft 12345123456789123456789123456789 92 -> 1234512345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3293 shiftleft 12345123456789123456789123456789 93 -> 12345123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3294 shiftleft 12345123456789123456789123456789 94 -> 123451234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3295 shiftleft 12345123456789123456789123456789 95 -> 1234512345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3296 shiftleft 12345123456789123456789123456789 96 -> 12345123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3297 shiftleft 12345123456789123456789123456789 97 -> 123451234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3298 shiftleft 12345123456789123456789123456789 98 -> 1234512345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3299 shiftleft 12345123456789123456789123456789 99 -> 12345123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3300 shiftleft 123456123456789123456789123456789 0 -> 123456123456789123456789123456789 +shlx3301 shiftleft 123456123456789123456789123456789 1 -> 1234561234567891234567891234567890 +shlx3302 shiftleft 123456123456789123456789123456789 2 -> 12345612345678912345678912345678900 +shlx3303 shiftleft 123456123456789123456789123456789 3 -> 123456123456789123456789123456789000 +shlx3304 shiftleft 123456123456789123456789123456789 4 -> 1234561234567891234567891234567890000 +shlx3305 shiftleft 123456123456789123456789123456789 5 -> 12345612345678912345678912345678900000 +shlx3306 shiftleft 123456123456789123456789123456789 6 -> 123456123456789123456789123456789000000 +shlx3307 shiftleft 123456123456789123456789123456789 7 -> 1234561234567891234567891234567890000000 +shlx3308 shiftleft 123456123456789123456789123456789 8 -> 12345612345678912345678912345678900000000 +shlx3309 shiftleft 123456123456789123456789123456789 9 -> 123456123456789123456789123456789000000000 +shlx3310 shiftleft 123456123456789123456789123456789 10 -> 1234561234567891234567891234567890000000000 +shlx3311 shiftleft 123456123456789123456789123456789 11 -> 12345612345678912345678912345678900000000000 +shlx3312 shiftleft 123456123456789123456789123456789 12 -> 123456123456789123456789123456789000000000000 +shlx3313 shiftleft 123456123456789123456789123456789 13 -> 1234561234567891234567891234567890000000000000 +shlx3314 shiftleft 123456123456789123456789123456789 14 -> 12345612345678912345678912345678900000000000000 +shlx3315 shiftleft 123456123456789123456789123456789 15 -> 123456123456789123456789123456789000000000000000 +shlx3316 shiftleft 123456123456789123456789123456789 16 -> 1234561234567891234567891234567890000000000000000 +shlx3317 shiftleft 123456123456789123456789123456789 17 -> 12345612345678912345678912345678900000000000000000 +shlx3318 shiftleft 123456123456789123456789123456789 18 -> 123456123456789123456789123456789000000000000000000 +shlx3319 shiftleft 123456123456789123456789123456789 19 -> 1234561234567891234567891234567890000000000000000000 +shlx3320 shiftleft 123456123456789123456789123456789 20 -> 12345612345678912345678912345678900000000000000000000 +shlx3321 shiftleft 123456123456789123456789123456789 21 -> 123456123456789123456789123456789000000000000000000000 +shlx3322 shiftleft 123456123456789123456789123456789 22 -> 1234561234567891234567891234567890000000000000000000000 +shlx3323 shiftleft 123456123456789123456789123456789 23 -> 12345612345678912345678912345678900000000000000000000000 +shlx3324 shiftleft 123456123456789123456789123456789 24 -> 123456123456789123456789123456789000000000000000000000000 +shlx3325 shiftleft 123456123456789123456789123456789 25 -> 1234561234567891234567891234567890000000000000000000000000 +shlx3326 shiftleft 123456123456789123456789123456789 26 -> 12345612345678912345678912345678900000000000000000000000000 +shlx3327 shiftleft 123456123456789123456789123456789 27 -> 123456123456789123456789123456789000000000000000000000000000 +shlx3328 shiftleft 123456123456789123456789123456789 28 -> 1234561234567891234567891234567890000000000000000000000000000 +shlx3329 shiftleft 123456123456789123456789123456789 29 -> 12345612345678912345678912345678900000000000000000000000000000 +shlx3330 shiftleft 123456123456789123456789123456789 30 -> 123456123456789123456789123456789000000000000000000000000000000 +shlx3331 shiftleft 123456123456789123456789123456789 31 -> 1234561234567891234567891234567890000000000000000000000000000000 +shlx3332 shiftleft 123456123456789123456789123456789 32 -> 12345612345678912345678912345678900000000000000000000000000000000 +shlx3333 shiftleft 123456123456789123456789123456789 33 -> 123456123456789123456789123456789000000000000000000000000000000000 +shlx3334 shiftleft 123456123456789123456789123456789 34 -> 1234561234567891234567891234567890000000000000000000000000000000000 +shlx3335 shiftleft 123456123456789123456789123456789 35 -> 12345612345678912345678912345678900000000000000000000000000000000000 +shlx3336 shiftleft 123456123456789123456789123456789 36 -> 123456123456789123456789123456789000000000000000000000000000000000000 +shlx3337 shiftleft 123456123456789123456789123456789 37 -> 1234561234567891234567891234567890000000000000000000000000000000000000 +shlx3338 shiftleft 123456123456789123456789123456789 38 -> 12345612345678912345678912345678900000000000000000000000000000000000000 +shlx3339 shiftleft 123456123456789123456789123456789 39 -> 123456123456789123456789123456789000000000000000000000000000000000000000 +shlx3340 shiftleft 123456123456789123456789123456789 40 -> 1234561234567891234567891234567890000000000000000000000000000000000000000 +shlx3341 shiftleft 123456123456789123456789123456789 41 -> 12345612345678912345678912345678900000000000000000000000000000000000000000 +shlx3342 shiftleft 123456123456789123456789123456789 42 -> 123456123456789123456789123456789000000000000000000000000000000000000000000 +shlx3343 shiftleft 123456123456789123456789123456789 43 -> 1234561234567891234567891234567890000000000000000000000000000000000000000000 +shlx3344 shiftleft 123456123456789123456789123456789 44 -> 12345612345678912345678912345678900000000000000000000000000000000000000000000 +shlx3345 shiftleft 123456123456789123456789123456789 45 -> 123456123456789123456789123456789000000000000000000000000000000000000000000000 +shlx3346 shiftleft 123456123456789123456789123456789 46 -> 1234561234567891234567891234567890000000000000000000000000000000000000000000000 +shlx3347 shiftleft 123456123456789123456789123456789 47 -> 12345612345678912345678912345678900000000000000000000000000000000000000000000000 +shlx3348 shiftleft 123456123456789123456789123456789 48 -> 123456123456789123456789123456789000000000000000000000000000000000000000000000000 +shlx3349 shiftleft 123456123456789123456789123456789 49 -> 1234561234567891234567891234567890000000000000000000000000000000000000000000000000 +shlx3350 shiftleft 123456123456789123456789123456789 50 -> 12345612345678912345678912345678900000000000000000000000000000000000000000000000000 +shlx3351 shiftleft 123456123456789123456789123456789 51 -> 123456123456789123456789123456789000000000000000000000000000000000000000000000000000 +shlx3352 shiftleft 123456123456789123456789123456789 52 -> 1234561234567891234567891234567890000000000000000000000000000000000000000000000000000 +shlx3353 shiftleft 123456123456789123456789123456789 53 -> 12345612345678912345678912345678900000000000000000000000000000000000000000000000000000 +shlx3354 shiftleft 123456123456789123456789123456789 54 -> 123456123456789123456789123456789000000000000000000000000000000000000000000000000000000 +shlx3355 shiftleft 123456123456789123456789123456789 55 -> 1234561234567891234567891234567890000000000000000000000000000000000000000000000000000000 +shlx3356 shiftleft 123456123456789123456789123456789 56 -> 12345612345678912345678912345678900000000000000000000000000000000000000000000000000000000 +shlx3357 shiftleft 123456123456789123456789123456789 57 -> 123456123456789123456789123456789000000000000000000000000000000000000000000000000000000000 +shlx3358 shiftleft 123456123456789123456789123456789 58 -> 1234561234567891234567891234567890000000000000000000000000000000000000000000000000000000000 +shlx3359 shiftleft 123456123456789123456789123456789 59 -> 12345612345678912345678912345678900000000000000000000000000000000000000000000000000000000000 +shlx3360 shiftleft 123456123456789123456789123456789 60 -> 123456123456789123456789123456789000000000000000000000000000000000000000000000000000000000000 +shlx3361 shiftleft 123456123456789123456789123456789 61 -> 1234561234567891234567891234567890000000000000000000000000000000000000000000000000000000000000 +shlx3362 shiftleft 123456123456789123456789123456789 62 -> 12345612345678912345678912345678900000000000000000000000000000000000000000000000000000000000000 +shlx3363 shiftleft 123456123456789123456789123456789 63 -> 123456123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000 +shlx3364 shiftleft 123456123456789123456789123456789 64 -> 1234561234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000 +shlx3365 shiftleft 123456123456789123456789123456789 65 -> 12345612345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000 +shlx3366 shiftleft 123456123456789123456789123456789 66 -> 123456123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx3367 shiftleft 123456123456789123456789123456789 67 -> 1234561234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx3368 shiftleft 123456123456789123456789123456789 68 -> 12345612345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx3369 shiftleft 123456123456789123456789123456789 69 -> 123456123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx3370 shiftleft 123456123456789123456789123456789 70 -> 1234561234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx3371 shiftleft 123456123456789123456789123456789 71 -> 12345612345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx3372 shiftleft 123456123456789123456789123456789 72 -> 123456123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3373 shiftleft 123456123456789123456789123456789 73 -> 1234561234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3374 shiftleft 123456123456789123456789123456789 74 -> 12345612345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3375 shiftleft 123456123456789123456789123456789 75 -> 123456123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3376 shiftleft 123456123456789123456789123456789 76 -> 1234561234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3377 shiftleft 123456123456789123456789123456789 77 -> 12345612345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3378 shiftleft 123456123456789123456789123456789 78 -> 123456123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3379 shiftleft 123456123456789123456789123456789 79 -> 1234561234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3380 shiftleft 123456123456789123456789123456789 80 -> 12345612345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3381 shiftleft 123456123456789123456789123456789 81 -> 123456123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3382 shiftleft 123456123456789123456789123456789 82 -> 1234561234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3383 shiftleft 123456123456789123456789123456789 83 -> 12345612345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3384 shiftleft 123456123456789123456789123456789 84 -> 123456123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3385 shiftleft 123456123456789123456789123456789 85 -> 1234561234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3386 shiftleft 123456123456789123456789123456789 86 -> 12345612345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3387 shiftleft 123456123456789123456789123456789 87 -> 123456123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3388 shiftleft 123456123456789123456789123456789 88 -> 1234561234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3389 shiftleft 123456123456789123456789123456789 89 -> 12345612345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3390 shiftleft 123456123456789123456789123456789 90 -> 123456123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3391 shiftleft 123456123456789123456789123456789 91 -> 1234561234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3392 shiftleft 123456123456789123456789123456789 92 -> 12345612345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3393 shiftleft 123456123456789123456789123456789 93 -> 123456123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3394 shiftleft 123456123456789123456789123456789 94 -> 1234561234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3395 shiftleft 123456123456789123456789123456789 95 -> 12345612345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3396 shiftleft 123456123456789123456789123456789 96 -> 123456123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3397 shiftleft 123456123456789123456789123456789 97 -> 1234561234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3398 shiftleft 123456123456789123456789123456789 98 -> 12345612345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3399 shiftleft 123456123456789123456789123456789 99 -> 123456123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3400 shiftleft 1234567123456789123456789123456789 0 -> 1234567123456789123456789123456789 +shlx3401 shiftleft 1234567123456789123456789123456789 1 -> 12345671234567891234567891234567890 +shlx3402 shiftleft 1234567123456789123456789123456789 2 -> 123456712345678912345678912345678900 +shlx3403 shiftleft 1234567123456789123456789123456789 3 -> 1234567123456789123456789123456789000 +shlx3404 shiftleft 1234567123456789123456789123456789 4 -> 12345671234567891234567891234567890000 +shlx3405 shiftleft 1234567123456789123456789123456789 5 -> 123456712345678912345678912345678900000 +shlx3406 shiftleft 1234567123456789123456789123456789 6 -> 1234567123456789123456789123456789000000 +shlx3407 shiftleft 1234567123456789123456789123456789 7 -> 12345671234567891234567891234567890000000 +shlx3408 shiftleft 1234567123456789123456789123456789 8 -> 123456712345678912345678912345678900000000 +shlx3409 shiftleft 1234567123456789123456789123456789 9 -> 1234567123456789123456789123456789000000000 +shlx3410 shiftleft 1234567123456789123456789123456789 10 -> 12345671234567891234567891234567890000000000 +shlx3411 shiftleft 1234567123456789123456789123456789 11 -> 123456712345678912345678912345678900000000000 +shlx3412 shiftleft 1234567123456789123456789123456789 12 -> 1234567123456789123456789123456789000000000000 +shlx3413 shiftleft 1234567123456789123456789123456789 13 -> 12345671234567891234567891234567890000000000000 +shlx3414 shiftleft 1234567123456789123456789123456789 14 -> 123456712345678912345678912345678900000000000000 +shlx3415 shiftleft 1234567123456789123456789123456789 15 -> 1234567123456789123456789123456789000000000000000 +shlx3416 shiftleft 1234567123456789123456789123456789 16 -> 12345671234567891234567891234567890000000000000000 +shlx3417 shiftleft 1234567123456789123456789123456789 17 -> 123456712345678912345678912345678900000000000000000 +shlx3418 shiftleft 1234567123456789123456789123456789 18 -> 1234567123456789123456789123456789000000000000000000 +shlx3419 shiftleft 1234567123456789123456789123456789 19 -> 12345671234567891234567891234567890000000000000000000 +shlx3420 shiftleft 1234567123456789123456789123456789 20 -> 123456712345678912345678912345678900000000000000000000 +shlx3421 shiftleft 1234567123456789123456789123456789 21 -> 1234567123456789123456789123456789000000000000000000000 +shlx3422 shiftleft 1234567123456789123456789123456789 22 -> 12345671234567891234567891234567890000000000000000000000 +shlx3423 shiftleft 1234567123456789123456789123456789 23 -> 123456712345678912345678912345678900000000000000000000000 +shlx3424 shiftleft 1234567123456789123456789123456789 24 -> 1234567123456789123456789123456789000000000000000000000000 +shlx3425 shiftleft 1234567123456789123456789123456789 25 -> 12345671234567891234567891234567890000000000000000000000000 +shlx3426 shiftleft 1234567123456789123456789123456789 26 -> 123456712345678912345678912345678900000000000000000000000000 +shlx3427 shiftleft 1234567123456789123456789123456789 27 -> 1234567123456789123456789123456789000000000000000000000000000 +shlx3428 shiftleft 1234567123456789123456789123456789 28 -> 12345671234567891234567891234567890000000000000000000000000000 +shlx3429 shiftleft 1234567123456789123456789123456789 29 -> 123456712345678912345678912345678900000000000000000000000000000 +shlx3430 shiftleft 1234567123456789123456789123456789 30 -> 1234567123456789123456789123456789000000000000000000000000000000 +shlx3431 shiftleft 1234567123456789123456789123456789 31 -> 12345671234567891234567891234567890000000000000000000000000000000 +shlx3432 shiftleft 1234567123456789123456789123456789 32 -> 123456712345678912345678912345678900000000000000000000000000000000 +shlx3433 shiftleft 1234567123456789123456789123456789 33 -> 1234567123456789123456789123456789000000000000000000000000000000000 +shlx3434 shiftleft 1234567123456789123456789123456789 34 -> 12345671234567891234567891234567890000000000000000000000000000000000 +shlx3435 shiftleft 1234567123456789123456789123456789 35 -> 123456712345678912345678912345678900000000000000000000000000000000000 +shlx3436 shiftleft 1234567123456789123456789123456789 36 -> 1234567123456789123456789123456789000000000000000000000000000000000000 +shlx3437 shiftleft 1234567123456789123456789123456789 37 -> 12345671234567891234567891234567890000000000000000000000000000000000000 +shlx3438 shiftleft 1234567123456789123456789123456789 38 -> 123456712345678912345678912345678900000000000000000000000000000000000000 +shlx3439 shiftleft 1234567123456789123456789123456789 39 -> 1234567123456789123456789123456789000000000000000000000000000000000000000 +shlx3440 shiftleft 1234567123456789123456789123456789 40 -> 12345671234567891234567891234567890000000000000000000000000000000000000000 +shlx3441 shiftleft 1234567123456789123456789123456789 41 -> 123456712345678912345678912345678900000000000000000000000000000000000000000 +shlx3442 shiftleft 1234567123456789123456789123456789 42 -> 1234567123456789123456789123456789000000000000000000000000000000000000000000 +shlx3443 shiftleft 1234567123456789123456789123456789 43 -> 12345671234567891234567891234567890000000000000000000000000000000000000000000 +shlx3444 shiftleft 1234567123456789123456789123456789 44 -> 123456712345678912345678912345678900000000000000000000000000000000000000000000 +shlx3445 shiftleft 1234567123456789123456789123456789 45 -> 1234567123456789123456789123456789000000000000000000000000000000000000000000000 +shlx3446 shiftleft 1234567123456789123456789123456789 46 -> 12345671234567891234567891234567890000000000000000000000000000000000000000000000 +shlx3447 shiftleft 1234567123456789123456789123456789 47 -> 123456712345678912345678912345678900000000000000000000000000000000000000000000000 +shlx3448 shiftleft 1234567123456789123456789123456789 48 -> 1234567123456789123456789123456789000000000000000000000000000000000000000000000000 +shlx3449 shiftleft 1234567123456789123456789123456789 49 -> 12345671234567891234567891234567890000000000000000000000000000000000000000000000000 +shlx3450 shiftleft 1234567123456789123456789123456789 50 -> 123456712345678912345678912345678900000000000000000000000000000000000000000000000000 +shlx3451 shiftleft 1234567123456789123456789123456789 51 -> 1234567123456789123456789123456789000000000000000000000000000000000000000000000000000 +shlx3452 shiftleft 1234567123456789123456789123456789 52 -> 12345671234567891234567891234567890000000000000000000000000000000000000000000000000000 +shlx3453 shiftleft 1234567123456789123456789123456789 53 -> 123456712345678912345678912345678900000000000000000000000000000000000000000000000000000 +shlx3454 shiftleft 1234567123456789123456789123456789 54 -> 1234567123456789123456789123456789000000000000000000000000000000000000000000000000000000 +shlx3455 shiftleft 1234567123456789123456789123456789 55 -> 12345671234567891234567891234567890000000000000000000000000000000000000000000000000000000 +shlx3456 shiftleft 1234567123456789123456789123456789 56 -> 123456712345678912345678912345678900000000000000000000000000000000000000000000000000000000 +shlx3457 shiftleft 1234567123456789123456789123456789 57 -> 1234567123456789123456789123456789000000000000000000000000000000000000000000000000000000000 +shlx3458 shiftleft 1234567123456789123456789123456789 58 -> 12345671234567891234567891234567890000000000000000000000000000000000000000000000000000000000 +shlx3459 shiftleft 1234567123456789123456789123456789 59 -> 123456712345678912345678912345678900000000000000000000000000000000000000000000000000000000000 +shlx3460 shiftleft 1234567123456789123456789123456789 60 -> 1234567123456789123456789123456789000000000000000000000000000000000000000000000000000000000000 +shlx3461 shiftleft 1234567123456789123456789123456789 61 -> 12345671234567891234567891234567890000000000000000000000000000000000000000000000000000000000000 +shlx3462 shiftleft 1234567123456789123456789123456789 62 -> 123456712345678912345678912345678900000000000000000000000000000000000000000000000000000000000000 +shlx3463 shiftleft 1234567123456789123456789123456789 63 -> 1234567123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000 +shlx3464 shiftleft 1234567123456789123456789123456789 64 -> 12345671234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000 +shlx3465 shiftleft 1234567123456789123456789123456789 65 -> 123456712345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000 +shlx3466 shiftleft 1234567123456789123456789123456789 66 -> 1234567123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx3467 shiftleft 1234567123456789123456789123456789 67 -> 12345671234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx3468 shiftleft 1234567123456789123456789123456789 68 -> 123456712345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx3469 shiftleft 1234567123456789123456789123456789 69 -> 1234567123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx3470 shiftleft 1234567123456789123456789123456789 70 -> 12345671234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx3471 shiftleft 1234567123456789123456789123456789 71 -> 123456712345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx3472 shiftleft 1234567123456789123456789123456789 72 -> 1234567123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3473 shiftleft 1234567123456789123456789123456789 73 -> 12345671234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3474 shiftleft 1234567123456789123456789123456789 74 -> 123456712345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3475 shiftleft 1234567123456789123456789123456789 75 -> 1234567123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3476 shiftleft 1234567123456789123456789123456789 76 -> 12345671234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3477 shiftleft 1234567123456789123456789123456789 77 -> 123456712345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3478 shiftleft 1234567123456789123456789123456789 78 -> 1234567123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3479 shiftleft 1234567123456789123456789123456789 79 -> 12345671234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3480 shiftleft 1234567123456789123456789123456789 80 -> 123456712345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3481 shiftleft 1234567123456789123456789123456789 81 -> 1234567123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3482 shiftleft 1234567123456789123456789123456789 82 -> 12345671234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3483 shiftleft 1234567123456789123456789123456789 83 -> 123456712345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3484 shiftleft 1234567123456789123456789123456789 84 -> 1234567123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3485 shiftleft 1234567123456789123456789123456789 85 -> 12345671234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3486 shiftleft 1234567123456789123456789123456789 86 -> 123456712345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3487 shiftleft 1234567123456789123456789123456789 87 -> 1234567123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3488 shiftleft 1234567123456789123456789123456789 88 -> 12345671234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3489 shiftleft 1234567123456789123456789123456789 89 -> 123456712345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3490 shiftleft 1234567123456789123456789123456789 90 -> 1234567123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3491 shiftleft 1234567123456789123456789123456789 91 -> 12345671234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3492 shiftleft 1234567123456789123456789123456789 92 -> 123456712345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3493 shiftleft 1234567123456789123456789123456789 93 -> 1234567123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3494 shiftleft 1234567123456789123456789123456789 94 -> 12345671234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3495 shiftleft 1234567123456789123456789123456789 95 -> 123456712345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3496 shiftleft 1234567123456789123456789123456789 96 -> 1234567123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3497 shiftleft 1234567123456789123456789123456789 97 -> 12345671234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3498 shiftleft 1234567123456789123456789123456789 98 -> 123456712345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3499 shiftleft 1234567123456789123456789123456789 99 -> 1234567123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3500 shiftleft 12345678123456789123456789123456789 0 -> 12345678123456789123456789123456789 +shlx3501 shiftleft 12345678123456789123456789123456789 1 -> 123456781234567891234567891234567890 +shlx3502 shiftleft 12345678123456789123456789123456789 2 -> 1234567812345678912345678912345678900 +shlx3503 shiftleft 12345678123456789123456789123456789 3 -> 12345678123456789123456789123456789000 +shlx3504 shiftleft 12345678123456789123456789123456789 4 -> 123456781234567891234567891234567890000 +shlx3505 shiftleft 12345678123456789123456789123456789 5 -> 1234567812345678912345678912345678900000 +shlx3506 shiftleft 12345678123456789123456789123456789 6 -> 12345678123456789123456789123456789000000 +shlx3507 shiftleft 12345678123456789123456789123456789 7 -> 123456781234567891234567891234567890000000 +shlx3508 shiftleft 12345678123456789123456789123456789 8 -> 1234567812345678912345678912345678900000000 +shlx3509 shiftleft 12345678123456789123456789123456789 9 -> 12345678123456789123456789123456789000000000 +shlx3510 shiftleft 12345678123456789123456789123456789 10 -> 123456781234567891234567891234567890000000000 +shlx3511 shiftleft 12345678123456789123456789123456789 11 -> 1234567812345678912345678912345678900000000000 +shlx3512 shiftleft 12345678123456789123456789123456789 12 -> 12345678123456789123456789123456789000000000000 +shlx3513 shiftleft 12345678123456789123456789123456789 13 -> 123456781234567891234567891234567890000000000000 +shlx3514 shiftleft 12345678123456789123456789123456789 14 -> 1234567812345678912345678912345678900000000000000 +shlx3515 shiftleft 12345678123456789123456789123456789 15 -> 12345678123456789123456789123456789000000000000000 +shlx3516 shiftleft 12345678123456789123456789123456789 16 -> 123456781234567891234567891234567890000000000000000 +shlx3517 shiftleft 12345678123456789123456789123456789 17 -> 1234567812345678912345678912345678900000000000000000 +shlx3518 shiftleft 12345678123456789123456789123456789 18 -> 12345678123456789123456789123456789000000000000000000 +shlx3519 shiftleft 12345678123456789123456789123456789 19 -> 123456781234567891234567891234567890000000000000000000 +shlx3520 shiftleft 12345678123456789123456789123456789 20 -> 1234567812345678912345678912345678900000000000000000000 +shlx3521 shiftleft 12345678123456789123456789123456789 21 -> 12345678123456789123456789123456789000000000000000000000 +shlx3522 shiftleft 12345678123456789123456789123456789 22 -> 123456781234567891234567891234567890000000000000000000000 +shlx3523 shiftleft 12345678123456789123456789123456789 23 -> 1234567812345678912345678912345678900000000000000000000000 +shlx3524 shiftleft 12345678123456789123456789123456789 24 -> 12345678123456789123456789123456789000000000000000000000000 +shlx3525 shiftleft 12345678123456789123456789123456789 25 -> 123456781234567891234567891234567890000000000000000000000000 +shlx3526 shiftleft 12345678123456789123456789123456789 26 -> 1234567812345678912345678912345678900000000000000000000000000 +shlx3527 shiftleft 12345678123456789123456789123456789 27 -> 12345678123456789123456789123456789000000000000000000000000000 +shlx3528 shiftleft 12345678123456789123456789123456789 28 -> 123456781234567891234567891234567890000000000000000000000000000 +shlx3529 shiftleft 12345678123456789123456789123456789 29 -> 1234567812345678912345678912345678900000000000000000000000000000 +shlx3530 shiftleft 12345678123456789123456789123456789 30 -> 12345678123456789123456789123456789000000000000000000000000000000 +shlx3531 shiftleft 12345678123456789123456789123456789 31 -> 123456781234567891234567891234567890000000000000000000000000000000 +shlx3532 shiftleft 12345678123456789123456789123456789 32 -> 1234567812345678912345678912345678900000000000000000000000000000000 +shlx3533 shiftleft 12345678123456789123456789123456789 33 -> 12345678123456789123456789123456789000000000000000000000000000000000 +shlx3534 shiftleft 12345678123456789123456789123456789 34 -> 123456781234567891234567891234567890000000000000000000000000000000000 +shlx3535 shiftleft 12345678123456789123456789123456789 35 -> 1234567812345678912345678912345678900000000000000000000000000000000000 +shlx3536 shiftleft 12345678123456789123456789123456789 36 -> 12345678123456789123456789123456789000000000000000000000000000000000000 +shlx3537 shiftleft 12345678123456789123456789123456789 37 -> 123456781234567891234567891234567890000000000000000000000000000000000000 +shlx3538 shiftleft 12345678123456789123456789123456789 38 -> 1234567812345678912345678912345678900000000000000000000000000000000000000 +shlx3539 shiftleft 12345678123456789123456789123456789 39 -> 12345678123456789123456789123456789000000000000000000000000000000000000000 +shlx3540 shiftleft 12345678123456789123456789123456789 40 -> 123456781234567891234567891234567890000000000000000000000000000000000000000 +shlx3541 shiftleft 12345678123456789123456789123456789 41 -> 1234567812345678912345678912345678900000000000000000000000000000000000000000 +shlx3542 shiftleft 12345678123456789123456789123456789 42 -> 12345678123456789123456789123456789000000000000000000000000000000000000000000 +shlx3543 shiftleft 12345678123456789123456789123456789 43 -> 123456781234567891234567891234567890000000000000000000000000000000000000000000 +shlx3544 shiftleft 12345678123456789123456789123456789 44 -> 1234567812345678912345678912345678900000000000000000000000000000000000000000000 +shlx3545 shiftleft 12345678123456789123456789123456789 45 -> 12345678123456789123456789123456789000000000000000000000000000000000000000000000 +shlx3546 shiftleft 12345678123456789123456789123456789 46 -> 123456781234567891234567891234567890000000000000000000000000000000000000000000000 +shlx3547 shiftleft 12345678123456789123456789123456789 47 -> 1234567812345678912345678912345678900000000000000000000000000000000000000000000000 +shlx3548 shiftleft 12345678123456789123456789123456789 48 -> 12345678123456789123456789123456789000000000000000000000000000000000000000000000000 +shlx3549 shiftleft 12345678123456789123456789123456789 49 -> 123456781234567891234567891234567890000000000000000000000000000000000000000000000000 +shlx3550 shiftleft 12345678123456789123456789123456789 50 -> 1234567812345678912345678912345678900000000000000000000000000000000000000000000000000 +shlx3551 shiftleft 12345678123456789123456789123456789 51 -> 12345678123456789123456789123456789000000000000000000000000000000000000000000000000000 +shlx3552 shiftleft 12345678123456789123456789123456789 52 -> 123456781234567891234567891234567890000000000000000000000000000000000000000000000000000 +shlx3553 shiftleft 12345678123456789123456789123456789 53 -> 1234567812345678912345678912345678900000000000000000000000000000000000000000000000000000 +shlx3554 shiftleft 12345678123456789123456789123456789 54 -> 12345678123456789123456789123456789000000000000000000000000000000000000000000000000000000 +shlx3555 shiftleft 12345678123456789123456789123456789 55 -> 123456781234567891234567891234567890000000000000000000000000000000000000000000000000000000 +shlx3556 shiftleft 12345678123456789123456789123456789 56 -> 1234567812345678912345678912345678900000000000000000000000000000000000000000000000000000000 +shlx3557 shiftleft 12345678123456789123456789123456789 57 -> 12345678123456789123456789123456789000000000000000000000000000000000000000000000000000000000 +shlx3558 shiftleft 12345678123456789123456789123456789 58 -> 123456781234567891234567891234567890000000000000000000000000000000000000000000000000000000000 +shlx3559 shiftleft 12345678123456789123456789123456789 59 -> 1234567812345678912345678912345678900000000000000000000000000000000000000000000000000000000000 +shlx3560 shiftleft 12345678123456789123456789123456789 60 -> 12345678123456789123456789123456789000000000000000000000000000000000000000000000000000000000000 +shlx3561 shiftleft 12345678123456789123456789123456789 61 -> 123456781234567891234567891234567890000000000000000000000000000000000000000000000000000000000000 +shlx3562 shiftleft 12345678123456789123456789123456789 62 -> 1234567812345678912345678912345678900000000000000000000000000000000000000000000000000000000000000 +shlx3563 shiftleft 12345678123456789123456789123456789 63 -> 12345678123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000 +shlx3564 shiftleft 12345678123456789123456789123456789 64 -> 123456781234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000 +shlx3565 shiftleft 12345678123456789123456789123456789 65 -> 1234567812345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000 +shlx3566 shiftleft 12345678123456789123456789123456789 66 -> 12345678123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx3567 shiftleft 12345678123456789123456789123456789 67 -> 123456781234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx3568 shiftleft 12345678123456789123456789123456789 68 -> 1234567812345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx3569 shiftleft 12345678123456789123456789123456789 69 -> 12345678123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx3570 shiftleft 12345678123456789123456789123456789 70 -> 123456781234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx3571 shiftleft 12345678123456789123456789123456789 71 -> 1234567812345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx3572 shiftleft 12345678123456789123456789123456789 72 -> 12345678123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3573 shiftleft 12345678123456789123456789123456789 73 -> 123456781234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3574 shiftleft 12345678123456789123456789123456789 74 -> 1234567812345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3575 shiftleft 12345678123456789123456789123456789 75 -> 12345678123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3576 shiftleft 12345678123456789123456789123456789 76 -> 123456781234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3577 shiftleft 12345678123456789123456789123456789 77 -> 1234567812345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3578 shiftleft 12345678123456789123456789123456789 78 -> 12345678123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3579 shiftleft 12345678123456789123456789123456789 79 -> 123456781234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3580 shiftleft 12345678123456789123456789123456789 80 -> 1234567812345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3581 shiftleft 12345678123456789123456789123456789 81 -> 12345678123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3582 shiftleft 12345678123456789123456789123456789 82 -> 123456781234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3583 shiftleft 12345678123456789123456789123456789 83 -> 1234567812345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3584 shiftleft 12345678123456789123456789123456789 84 -> 12345678123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3585 shiftleft 12345678123456789123456789123456789 85 -> 123456781234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3586 shiftleft 12345678123456789123456789123456789 86 -> 1234567812345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3587 shiftleft 12345678123456789123456789123456789 87 -> 12345678123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3588 shiftleft 12345678123456789123456789123456789 88 -> 123456781234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3589 shiftleft 12345678123456789123456789123456789 89 -> 1234567812345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3590 shiftleft 12345678123456789123456789123456789 90 -> 12345678123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3591 shiftleft 12345678123456789123456789123456789 91 -> 123456781234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3592 shiftleft 12345678123456789123456789123456789 92 -> 1234567812345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3593 shiftleft 12345678123456789123456789123456789 93 -> 12345678123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3594 shiftleft 12345678123456789123456789123456789 94 -> 123456781234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3595 shiftleft 12345678123456789123456789123456789 95 -> 1234567812345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3596 shiftleft 12345678123456789123456789123456789 96 -> 12345678123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3597 shiftleft 12345678123456789123456789123456789 97 -> 123456781234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3598 shiftleft 12345678123456789123456789123456789 98 -> 1234567812345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3599 shiftleft 12345678123456789123456789123456789 99 -> 12345678123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3600 shiftleft 123456789123456789123456789123456789 0 -> 123456789123456789123456789123456789 +shlx3601 shiftleft 123456789123456789123456789123456789 1 -> 1234567891234567891234567891234567890 +shlx3602 shiftleft 123456789123456789123456789123456789 2 -> 12345678912345678912345678912345678900 +shlx3603 shiftleft 123456789123456789123456789123456789 3 -> 123456789123456789123456789123456789000 +shlx3604 shiftleft 123456789123456789123456789123456789 4 -> 1234567891234567891234567891234567890000 +shlx3605 shiftleft 123456789123456789123456789123456789 5 -> 12345678912345678912345678912345678900000 +shlx3606 shiftleft 123456789123456789123456789123456789 6 -> 123456789123456789123456789123456789000000 +shlx3607 shiftleft 123456789123456789123456789123456789 7 -> 1234567891234567891234567891234567890000000 +shlx3608 shiftleft 123456789123456789123456789123456789 8 -> 12345678912345678912345678912345678900000000 +shlx3609 shiftleft 123456789123456789123456789123456789 9 -> 123456789123456789123456789123456789000000000 +shlx3610 shiftleft 123456789123456789123456789123456789 10 -> 1234567891234567891234567891234567890000000000 +shlx3611 shiftleft 123456789123456789123456789123456789 11 -> 12345678912345678912345678912345678900000000000 +shlx3612 shiftleft 123456789123456789123456789123456789 12 -> 123456789123456789123456789123456789000000000000 +shlx3613 shiftleft 123456789123456789123456789123456789 13 -> 1234567891234567891234567891234567890000000000000 +shlx3614 shiftleft 123456789123456789123456789123456789 14 -> 12345678912345678912345678912345678900000000000000 +shlx3615 shiftleft 123456789123456789123456789123456789 15 -> 123456789123456789123456789123456789000000000000000 +shlx3616 shiftleft 123456789123456789123456789123456789 16 -> 1234567891234567891234567891234567890000000000000000 +shlx3617 shiftleft 123456789123456789123456789123456789 17 -> 12345678912345678912345678912345678900000000000000000 +shlx3618 shiftleft 123456789123456789123456789123456789 18 -> 123456789123456789123456789123456789000000000000000000 +shlx3619 shiftleft 123456789123456789123456789123456789 19 -> 1234567891234567891234567891234567890000000000000000000 +shlx3620 shiftleft 123456789123456789123456789123456789 20 -> 12345678912345678912345678912345678900000000000000000000 +shlx3621 shiftleft 123456789123456789123456789123456789 21 -> 123456789123456789123456789123456789000000000000000000000 +shlx3622 shiftleft 123456789123456789123456789123456789 22 -> 1234567891234567891234567891234567890000000000000000000000 +shlx3623 shiftleft 123456789123456789123456789123456789 23 -> 12345678912345678912345678912345678900000000000000000000000 +shlx3624 shiftleft 123456789123456789123456789123456789 24 -> 123456789123456789123456789123456789000000000000000000000000 +shlx3625 shiftleft 123456789123456789123456789123456789 25 -> 1234567891234567891234567891234567890000000000000000000000000 +shlx3626 shiftleft 123456789123456789123456789123456789 26 -> 12345678912345678912345678912345678900000000000000000000000000 +shlx3627 shiftleft 123456789123456789123456789123456789 27 -> 123456789123456789123456789123456789000000000000000000000000000 +shlx3628 shiftleft 123456789123456789123456789123456789 28 -> 1234567891234567891234567891234567890000000000000000000000000000 +shlx3629 shiftleft 123456789123456789123456789123456789 29 -> 12345678912345678912345678912345678900000000000000000000000000000 +shlx3630 shiftleft 123456789123456789123456789123456789 30 -> 123456789123456789123456789123456789000000000000000000000000000000 +shlx3631 shiftleft 123456789123456789123456789123456789 31 -> 1234567891234567891234567891234567890000000000000000000000000000000 +shlx3632 shiftleft 123456789123456789123456789123456789 32 -> 12345678912345678912345678912345678900000000000000000000000000000000 +shlx3633 shiftleft 123456789123456789123456789123456789 33 -> 123456789123456789123456789123456789000000000000000000000000000000000 +shlx3634 shiftleft 123456789123456789123456789123456789 34 -> 1234567891234567891234567891234567890000000000000000000000000000000000 +shlx3635 shiftleft 123456789123456789123456789123456789 35 -> 12345678912345678912345678912345678900000000000000000000000000000000000 +shlx3636 shiftleft 123456789123456789123456789123456789 36 -> 123456789123456789123456789123456789000000000000000000000000000000000000 +shlx3637 shiftleft 123456789123456789123456789123456789 37 -> 1234567891234567891234567891234567890000000000000000000000000000000000000 +shlx3638 shiftleft 123456789123456789123456789123456789 38 -> 12345678912345678912345678912345678900000000000000000000000000000000000000 +shlx3639 shiftleft 123456789123456789123456789123456789 39 -> 123456789123456789123456789123456789000000000000000000000000000000000000000 +shlx3640 shiftleft 123456789123456789123456789123456789 40 -> 1234567891234567891234567891234567890000000000000000000000000000000000000000 +shlx3641 shiftleft 123456789123456789123456789123456789 41 -> 12345678912345678912345678912345678900000000000000000000000000000000000000000 +shlx3642 shiftleft 123456789123456789123456789123456789 42 -> 123456789123456789123456789123456789000000000000000000000000000000000000000000 +shlx3643 shiftleft 123456789123456789123456789123456789 43 -> 1234567891234567891234567891234567890000000000000000000000000000000000000000000 +shlx3644 shiftleft 123456789123456789123456789123456789 44 -> 12345678912345678912345678912345678900000000000000000000000000000000000000000000 +shlx3645 shiftleft 123456789123456789123456789123456789 45 -> 123456789123456789123456789123456789000000000000000000000000000000000000000000000 +shlx3646 shiftleft 123456789123456789123456789123456789 46 -> 1234567891234567891234567891234567890000000000000000000000000000000000000000000000 +shlx3647 shiftleft 123456789123456789123456789123456789 47 -> 12345678912345678912345678912345678900000000000000000000000000000000000000000000000 +shlx3648 shiftleft 123456789123456789123456789123456789 48 -> 123456789123456789123456789123456789000000000000000000000000000000000000000000000000 +shlx3649 shiftleft 123456789123456789123456789123456789 49 -> 1234567891234567891234567891234567890000000000000000000000000000000000000000000000000 +shlx3650 shiftleft 123456789123456789123456789123456789 50 -> 12345678912345678912345678912345678900000000000000000000000000000000000000000000000000 +shlx3651 shiftleft 123456789123456789123456789123456789 51 -> 123456789123456789123456789123456789000000000000000000000000000000000000000000000000000 +shlx3652 shiftleft 123456789123456789123456789123456789 52 -> 1234567891234567891234567891234567890000000000000000000000000000000000000000000000000000 +shlx3653 shiftleft 123456789123456789123456789123456789 53 -> 12345678912345678912345678912345678900000000000000000000000000000000000000000000000000000 +shlx3654 shiftleft 123456789123456789123456789123456789 54 -> 123456789123456789123456789123456789000000000000000000000000000000000000000000000000000000 +shlx3655 shiftleft 123456789123456789123456789123456789 55 -> 1234567891234567891234567891234567890000000000000000000000000000000000000000000000000000000 +shlx3656 shiftleft 123456789123456789123456789123456789 56 -> 12345678912345678912345678912345678900000000000000000000000000000000000000000000000000000000 +shlx3657 shiftleft 123456789123456789123456789123456789 57 -> 123456789123456789123456789123456789000000000000000000000000000000000000000000000000000000000 +shlx3658 shiftleft 123456789123456789123456789123456789 58 -> 1234567891234567891234567891234567890000000000000000000000000000000000000000000000000000000000 +shlx3659 shiftleft 123456789123456789123456789123456789 59 -> 12345678912345678912345678912345678900000000000000000000000000000000000000000000000000000000000 +shlx3660 shiftleft 123456789123456789123456789123456789 60 -> 123456789123456789123456789123456789000000000000000000000000000000000000000000000000000000000000 +shlx3661 shiftleft 123456789123456789123456789123456789 61 -> 1234567891234567891234567891234567890000000000000000000000000000000000000000000000000000000000000 +shlx3662 shiftleft 123456789123456789123456789123456789 62 -> 12345678912345678912345678912345678900000000000000000000000000000000000000000000000000000000000000 +shlx3663 shiftleft 123456789123456789123456789123456789 63 -> 123456789123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000 +shlx3664 shiftleft 123456789123456789123456789123456789 64 -> 1234567891234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000 +shlx3665 shiftleft 123456789123456789123456789123456789 65 -> 12345678912345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000 +shlx3666 shiftleft 123456789123456789123456789123456789 66 -> 123456789123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000 +shlx3667 shiftleft 123456789123456789123456789123456789 67 -> 1234567891234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000 +shlx3668 shiftleft 123456789123456789123456789123456789 68 -> 12345678912345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000 +shlx3669 shiftleft 123456789123456789123456789123456789 69 -> 123456789123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000 +shlx3670 shiftleft 123456789123456789123456789123456789 70 -> 1234567891234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000 +shlx3671 shiftleft 123456789123456789123456789123456789 71 -> 12345678912345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000 +shlx3672 shiftleft 123456789123456789123456789123456789 72 -> 123456789123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3673 shiftleft 123456789123456789123456789123456789 73 -> 1234567891234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3674 shiftleft 123456789123456789123456789123456789 74 -> 12345678912345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3675 shiftleft 123456789123456789123456789123456789 75 -> 123456789123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3676 shiftleft 123456789123456789123456789123456789 76 -> 1234567891234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3677 shiftleft 123456789123456789123456789123456789 77 -> 12345678912345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3678 shiftleft 123456789123456789123456789123456789 78 -> 123456789123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3679 shiftleft 123456789123456789123456789123456789 79 -> 1234567891234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3680 shiftleft 123456789123456789123456789123456789 80 -> 12345678912345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3681 shiftleft 123456789123456789123456789123456789 81 -> 123456789123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3682 shiftleft 123456789123456789123456789123456789 82 -> 1234567891234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3683 shiftleft 123456789123456789123456789123456789 83 -> 12345678912345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3684 shiftleft 123456789123456789123456789123456789 84 -> 123456789123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3685 shiftleft 123456789123456789123456789123456789 85 -> 1234567891234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3686 shiftleft 123456789123456789123456789123456789 86 -> 12345678912345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3687 shiftleft 123456789123456789123456789123456789 87 -> 123456789123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3688 shiftleft 123456789123456789123456789123456789 88 -> 1234567891234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3689 shiftleft 123456789123456789123456789123456789 89 -> 12345678912345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3690 shiftleft 123456789123456789123456789123456789 90 -> 123456789123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3691 shiftleft 123456789123456789123456789123456789 91 -> 1234567891234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3692 shiftleft 123456789123456789123456789123456789 92 -> 12345678912345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3693 shiftleft 123456789123456789123456789123456789 93 -> 123456789123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3694 shiftleft 123456789123456789123456789123456789 94 -> 1234567891234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3695 shiftleft 123456789123456789123456789123456789 95 -> 12345678912345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3696 shiftleft 123456789123456789123456789123456789 96 -> 123456789123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3697 shiftleft 123456789123456789123456789123456789 97 -> 1234567891234567891234567891234567890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3698 shiftleft 123456789123456789123456789123456789 98 -> 12345678912345678912345678912345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlx3699 shiftleft 123456789123456789123456789123456789 99 -> 123456789123456789123456789123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +shlr3700 shiftright 0 0 -> 0 +shlr3701 shiftright 0 1 -> 0 +shlr3702 shiftright 0 2 -> 0 +shlr3703 shiftright 0 3 -> 0 +shlr3704 shiftright 0 4 -> 0 +shlr3705 shiftright 0 5 -> 0 +shlr3706 shiftright 0 6 -> 0 +shlr3707 shiftright 0 7 -> 0 +shlr3708 shiftright 0 8 -> 0 +shlr3709 shiftright 0 9 -> 0 +shlr3710 shiftright 0 10 -> 0 +shlr3711 shiftright 0 11 -> 0 +shlr3712 shiftright 0 12 -> 0 +shlr3713 shiftright 0 13 -> 0 +shlr3714 shiftright 0 14 -> 0 +shlr3715 shiftright 0 15 -> 0 +shlr3716 shiftright 0 16 -> 0 +shlr3717 shiftright 0 17 -> 0 +shlr3718 shiftright 0 18 -> 0 +shlr3719 shiftright 0 19 -> 0 +shlr3720 shiftright 0 20 -> 0 +shlr3721 shiftright 0 21 -> 0 +shlr3722 shiftright 0 22 -> 0 +shlr3723 shiftright 0 23 -> 0 +shlr3724 shiftright 0 24 -> 0 +shlr3725 shiftright 0 25 -> 0 +shlr3726 shiftright 0 26 -> 0 +shlr3727 shiftright 0 27 -> 0 +shlr3728 shiftright 0 28 -> 0 +shlr3729 shiftright 0 29 -> 0 +shlr3730 shiftright 0 30 -> 0 +shlr3731 shiftright 0 31 -> 0 +shlr3732 shiftright 0 32 -> 0 +shlr3733 shiftright 0 33 -> 0 +shlr3734 shiftright 0 34 -> 0 +shlr3735 shiftright 0 35 -> 0 +shlr3736 shiftright 0 36 -> 0 +shlr3737 shiftright 0 37 -> 0 +shlr3738 shiftright 0 38 -> 0 +shlr3739 shiftright 0 39 -> 0 +shlr3740 shiftright 0 40 -> 0 +shlr3741 shiftright 0 41 -> 0 +shlr3742 shiftright 0 42 -> 0 +shlr3743 shiftright 0 43 -> 0 +shlr3744 shiftright 0 44 -> 0 +shlr3745 shiftright 0 45 -> 0 +shlr3746 shiftright 0 46 -> 0 +shlr3747 shiftright 0 47 -> 0 +shlr3748 shiftright 0 48 -> 0 +shlr3749 shiftright 0 49 -> 0 +shlr3750 shiftright 0 50 -> 0 +shlr3751 shiftright 0 51 -> 0 +shlr3752 shiftright 0 52 -> 0 +shlr3753 shiftright 0 53 -> 0 +shlr3754 shiftright 0 54 -> 0 +shlr3755 shiftright 0 55 -> 0 +shlr3756 shiftright 0 56 -> 0 +shlr3757 shiftright 0 57 -> 0 +shlr3758 shiftright 0 58 -> 0 +shlr3759 shiftright 0 59 -> 0 +shlr3760 shiftright 0 60 -> 0 +shlr3761 shiftright 0 61 -> 0 +shlr3762 shiftright 0 62 -> 0 +shlr3763 shiftright 0 63 -> 0 +shlr3764 shiftright 0 64 -> 0 +shlr3765 shiftright 0 65 -> 0 +shlr3766 shiftright 0 66 -> 0 +shlr3767 shiftright 0 67 -> 0 +shlr3768 shiftright 0 68 -> 0 +shlr3769 shiftright 0 69 -> 0 +shlr3770 shiftright 0 70 -> 0 +shlr3771 shiftright 0 71 -> 0 +shlr3772 shiftright 0 72 -> 0 +shlr3773 shiftright 0 73 -> 0 +shlr3774 shiftright 0 74 -> 0 +shlr3775 shiftright 0 75 -> 0 +shlr3776 shiftright 0 76 -> 0 +shlr3777 shiftright 0 77 -> 0 +shlr3778 shiftright 0 78 -> 0 +shlr3779 shiftright 0 79 -> 0 +shlr3780 shiftright 0 80 -> 0 +shlr3781 shiftright 0 81 -> 0 +shlr3782 shiftright 0 82 -> 0 +shlr3783 shiftright 0 83 -> 0 +shlr3784 shiftright 0 84 -> 0 +shlr3785 shiftright 0 85 -> 0 +shlr3786 shiftright 0 86 -> 0 +shlr3787 shiftright 0 87 -> 0 +shlr3788 shiftright 0 88 -> 0 +shlr3789 shiftright 0 89 -> 0 +shlr3790 shiftright 0 90 -> 0 +shlr3791 shiftright 0 91 -> 0 +shlr3792 shiftright 0 92 -> 0 +shlr3793 shiftright 0 93 -> 0 +shlr3794 shiftright 0 94 -> 0 +shlr3795 shiftright 0 95 -> 0 +shlr3796 shiftright 0 96 -> 0 +shlr3797 shiftright 0 97 -> 0 +shlr3798 shiftright 0 98 -> 0 +shlr3799 shiftright 0 99 -> 0 +shlr3800 shiftright 1 0 -> 1 +shlr3801 shiftright 1 1 -> 0 +shlr3802 shiftright 1 2 -> 0 +shlr3803 shiftright 1 3 -> 0 +shlr3804 shiftright 1 4 -> 0 +shlr3805 shiftright 1 5 -> 0 +shlr3806 shiftright 1 6 -> 0 +shlr3807 shiftright 1 7 -> 0 +shlr3808 shiftright 1 8 -> 0 +shlr3809 shiftright 1 9 -> 0 +shlr3810 shiftright 1 10 -> 0 +shlr3811 shiftright 1 11 -> 0 +shlr3812 shiftright 1 12 -> 0 +shlr3813 shiftright 1 13 -> 0 +shlr3814 shiftright 1 14 -> 0 +shlr3815 shiftright 1 15 -> 0 +shlr3816 shiftright 1 16 -> 0 +shlr3817 shiftright 1 17 -> 0 +shlr3818 shiftright 1 18 -> 0 +shlr3819 shiftright 1 19 -> 0 +shlr3820 shiftright 1 20 -> 0 +shlr3821 shiftright 1 21 -> 0 +shlr3822 shiftright 1 22 -> 0 +shlr3823 shiftright 1 23 -> 0 +shlr3824 shiftright 1 24 -> 0 +shlr3825 shiftright 1 25 -> 0 +shlr3826 shiftright 1 26 -> 0 +shlr3827 shiftright 1 27 -> 0 +shlr3828 shiftright 1 28 -> 0 +shlr3829 shiftright 1 29 -> 0 +shlr3830 shiftright 1 30 -> 0 +shlr3831 shiftright 1 31 -> 0 +shlr3832 shiftright 1 32 -> 0 +shlr3833 shiftright 1 33 -> 0 +shlr3834 shiftright 1 34 -> 0 +shlr3835 shiftright 1 35 -> 0 +shlr3836 shiftright 1 36 -> 0 +shlr3837 shiftright 1 37 -> 0 +shlr3838 shiftright 1 38 -> 0 +shlr3839 shiftright 1 39 -> 0 +shlr3840 shiftright 1 40 -> 0 +shlr3841 shiftright 1 41 -> 0 +shlr3842 shiftright 1 42 -> 0 +shlr3843 shiftright 1 43 -> 0 +shlr3844 shiftright 1 44 -> 0 +shlr3845 shiftright 1 45 -> 0 +shlr3846 shiftright 1 46 -> 0 +shlr3847 shiftright 1 47 -> 0 +shlr3848 shiftright 1 48 -> 0 +shlr3849 shiftright 1 49 -> 0 +shlr3850 shiftright 1 50 -> 0 +shlr3851 shiftright 1 51 -> 0 +shlr3852 shiftright 1 52 -> 0 +shlr3853 shiftright 1 53 -> 0 +shlr3854 shiftright 1 54 -> 0 +shlr3855 shiftright 1 55 -> 0 +shlr3856 shiftright 1 56 -> 0 +shlr3857 shiftright 1 57 -> 0 +shlr3858 shiftright 1 58 -> 0 +shlr3859 shiftright 1 59 -> 0 +shlr3860 shiftright 1 60 -> 0 +shlr3861 shiftright 1 61 -> 0 +shlr3862 shiftright 1 62 -> 0 +shlr3863 shiftright 1 63 -> 0 +shlr3864 shiftright 1 64 -> 0 +shlr3865 shiftright 1 65 -> 0 +shlr3866 shiftright 1 66 -> 0 +shlr3867 shiftright 1 67 -> 0 +shlr3868 shiftright 1 68 -> 0 +shlr3869 shiftright 1 69 -> 0 +shlr3870 shiftright 1 70 -> 0 +shlr3871 shiftright 1 71 -> 0 +shlr3872 shiftright 1 72 -> 0 +shlr3873 shiftright 1 73 -> 0 +shlr3874 shiftright 1 74 -> 0 +shlr3875 shiftright 1 75 -> 0 +shlr3876 shiftright 1 76 -> 0 +shlr3877 shiftright 1 77 -> 0 +shlr3878 shiftright 1 78 -> 0 +shlr3879 shiftright 1 79 -> 0 +shlr3880 shiftright 1 80 -> 0 +shlr3881 shiftright 1 81 -> 0 +shlr3882 shiftright 1 82 -> 0 +shlr3883 shiftright 1 83 -> 0 +shlr3884 shiftright 1 84 -> 0 +shlr3885 shiftright 1 85 -> 0 +shlr3886 shiftright 1 86 -> 0 +shlr3887 shiftright 1 87 -> 0 +shlr3888 shiftright 1 88 -> 0 +shlr3889 shiftright 1 89 -> 0 +shlr3890 shiftright 1 90 -> 0 +shlr3891 shiftright 1 91 -> 0 +shlr3892 shiftright 1 92 -> 0 +shlr3893 shiftright 1 93 -> 0 +shlr3894 shiftright 1 94 -> 0 +shlr3895 shiftright 1 95 -> 0 +shlr3896 shiftright 1 96 -> 0 +shlr3897 shiftright 1 97 -> 0 +shlr3898 shiftright 1 98 -> 0 +shlr3899 shiftright 1 99 -> 0 +shlr3900 shiftright 12 0 -> 12 +shlr3901 shiftright 12 1 -> 1 +shlr3902 shiftright 12 2 -> 0 +shlr3903 shiftright 12 3 -> 0 +shlr3904 shiftright 12 4 -> 0 +shlr3905 shiftright 12 5 -> 0 +shlr3906 shiftright 12 6 -> 0 +shlr3907 shiftright 12 7 -> 0 +shlr3908 shiftright 12 8 -> 0 +shlr3909 shiftright 12 9 -> 0 +shlr3910 shiftright 12 10 -> 0 +shlr3911 shiftright 12 11 -> 0 +shlr3912 shiftright 12 12 -> 0 +shlr3913 shiftright 12 13 -> 0 +shlr3914 shiftright 12 14 -> 0 +shlr3915 shiftright 12 15 -> 0 +shlr3916 shiftright 12 16 -> 0 +shlr3917 shiftright 12 17 -> 0 +shlr3918 shiftright 12 18 -> 0 +shlr3919 shiftright 12 19 -> 0 +shlr3920 shiftright 12 20 -> 0 +shlr3921 shiftright 12 21 -> 0 +shlr3922 shiftright 12 22 -> 0 +shlr3923 shiftright 12 23 -> 0 +shlr3924 shiftright 12 24 -> 0 +shlr3925 shiftright 12 25 -> 0 +shlr3926 shiftright 12 26 -> 0 +shlr3927 shiftright 12 27 -> 0 +shlr3928 shiftright 12 28 -> 0 +shlr3929 shiftright 12 29 -> 0 +shlr3930 shiftright 12 30 -> 0 +shlr3931 shiftright 12 31 -> 0 +shlr3932 shiftright 12 32 -> 0 +shlr3933 shiftright 12 33 -> 0 +shlr3934 shiftright 12 34 -> 0 +shlr3935 shiftright 12 35 -> 0 +shlr3936 shiftright 12 36 -> 0 +shlr3937 shiftright 12 37 -> 0 +shlr3938 shiftright 12 38 -> 0 +shlr3939 shiftright 12 39 -> 0 +shlr3940 shiftright 12 40 -> 0 +shlr3941 shiftright 12 41 -> 0 +shlr3942 shiftright 12 42 -> 0 +shlr3943 shiftright 12 43 -> 0 +shlr3944 shiftright 12 44 -> 0 +shlr3945 shiftright 12 45 -> 0 +shlr3946 shiftright 12 46 -> 0 +shlr3947 shiftright 12 47 -> 0 +shlr3948 shiftright 12 48 -> 0 +shlr3949 shiftright 12 49 -> 0 +shlr3950 shiftright 12 50 -> 0 +shlr3951 shiftright 12 51 -> 0 +shlr3952 shiftright 12 52 -> 0 +shlr3953 shiftright 12 53 -> 0 +shlr3954 shiftright 12 54 -> 0 +shlr3955 shiftright 12 55 -> 0 +shlr3956 shiftright 12 56 -> 0 +shlr3957 shiftright 12 57 -> 0 +shlr3958 shiftright 12 58 -> 0 +shlr3959 shiftright 12 59 -> 0 +shlr3960 shiftright 12 60 -> 0 +shlr3961 shiftright 12 61 -> 0 +shlr3962 shiftright 12 62 -> 0 +shlr3963 shiftright 12 63 -> 0 +shlr3964 shiftright 12 64 -> 0 +shlr3965 shiftright 12 65 -> 0 +shlr3966 shiftright 12 66 -> 0 +shlr3967 shiftright 12 67 -> 0 +shlr3968 shiftright 12 68 -> 0 +shlr3969 shiftright 12 69 -> 0 +shlr3970 shiftright 12 70 -> 0 +shlr3971 shiftright 12 71 -> 0 +shlr3972 shiftright 12 72 -> 0 +shlr3973 shiftright 12 73 -> 0 +shlr3974 shiftright 12 74 -> 0 +shlr3975 shiftright 12 75 -> 0 +shlr3976 shiftright 12 76 -> 0 +shlr3977 shiftright 12 77 -> 0 +shlr3978 shiftright 12 78 -> 0 +shlr3979 shiftright 12 79 -> 0 +shlr3980 shiftright 12 80 -> 0 +shlr3981 shiftright 12 81 -> 0 +shlr3982 shiftright 12 82 -> 0 +shlr3983 shiftright 12 83 -> 0 +shlr3984 shiftright 12 84 -> 0 +shlr3985 shiftright 12 85 -> 0 +shlr3986 shiftright 12 86 -> 0 +shlr3987 shiftright 12 87 -> 0 +shlr3988 shiftright 12 88 -> 0 +shlr3989 shiftright 12 89 -> 0 +shlr3990 shiftright 12 90 -> 0 +shlr3991 shiftright 12 91 -> 0 +shlr3992 shiftright 12 92 -> 0 +shlr3993 shiftright 12 93 -> 0 +shlr3994 shiftright 12 94 -> 0 +shlr3995 shiftright 12 95 -> 0 +shlr3996 shiftright 12 96 -> 0 +shlr3997 shiftright 12 97 -> 0 +shlr3998 shiftright 12 98 -> 0 +shlr3999 shiftright 12 99 -> 0 +shlr4000 shiftright 123 0 -> 123 +shlr4001 shiftright 123 1 -> 12 +shlr4002 shiftright 123 2 -> 1 +shlr4003 shiftright 123 3 -> 0 +shlr4004 shiftright 123 4 -> 0 +shlr4005 shiftright 123 5 -> 0 +shlr4006 shiftright 123 6 -> 0 +shlr4007 shiftright 123 7 -> 0 +shlr4008 shiftright 123 8 -> 0 +shlr4009 shiftright 123 9 -> 0 +shlr4010 shiftright 123 10 -> 0 +shlr4011 shiftright 123 11 -> 0 +shlr4012 shiftright 123 12 -> 0 +shlr4013 shiftright 123 13 -> 0 +shlr4014 shiftright 123 14 -> 0 +shlr4015 shiftright 123 15 -> 0 +shlr4016 shiftright 123 16 -> 0 +shlr4017 shiftright 123 17 -> 0 +shlr4018 shiftright 123 18 -> 0 +shlr4019 shiftright 123 19 -> 0 +shlr4020 shiftright 123 20 -> 0 +shlr4021 shiftright 123 21 -> 0 +shlr4022 shiftright 123 22 -> 0 +shlr4023 shiftright 123 23 -> 0 +shlr4024 shiftright 123 24 -> 0 +shlr4025 shiftright 123 25 -> 0 +shlr4026 shiftright 123 26 -> 0 +shlr4027 shiftright 123 27 -> 0 +shlr4028 shiftright 123 28 -> 0 +shlr4029 shiftright 123 29 -> 0 +shlr4030 shiftright 123 30 -> 0 +shlr4031 shiftright 123 31 -> 0 +shlr4032 shiftright 123 32 -> 0 +shlr4033 shiftright 123 33 -> 0 +shlr4034 shiftright 123 34 -> 0 +shlr4035 shiftright 123 35 -> 0 +shlr4036 shiftright 123 36 -> 0 +shlr4037 shiftright 123 37 -> 0 +shlr4038 shiftright 123 38 -> 0 +shlr4039 shiftright 123 39 -> 0 +shlr4040 shiftright 123 40 -> 0 +shlr4041 shiftright 123 41 -> 0 +shlr4042 shiftright 123 42 -> 0 +shlr4043 shiftright 123 43 -> 0 +shlr4044 shiftright 123 44 -> 0 +shlr4045 shiftright 123 45 -> 0 +shlr4046 shiftright 123 46 -> 0 +shlr4047 shiftright 123 47 -> 0 +shlr4048 shiftright 123 48 -> 0 +shlr4049 shiftright 123 49 -> 0 +shlr4050 shiftright 123 50 -> 0 +shlr4051 shiftright 123 51 -> 0 +shlr4052 shiftright 123 52 -> 0 +shlr4053 shiftright 123 53 -> 0 +shlr4054 shiftright 123 54 -> 0 +shlr4055 shiftright 123 55 -> 0 +shlr4056 shiftright 123 56 -> 0 +shlr4057 shiftright 123 57 -> 0 +shlr4058 shiftright 123 58 -> 0 +shlr4059 shiftright 123 59 -> 0 +shlr4060 shiftright 123 60 -> 0 +shlr4061 shiftright 123 61 -> 0 +shlr4062 shiftright 123 62 -> 0 +shlr4063 shiftright 123 63 -> 0 +shlr4064 shiftright 123 64 -> 0 +shlr4065 shiftright 123 65 -> 0 +shlr4066 shiftright 123 66 -> 0 +shlr4067 shiftright 123 67 -> 0 +shlr4068 shiftright 123 68 -> 0 +shlr4069 shiftright 123 69 -> 0 +shlr4070 shiftright 123 70 -> 0 +shlr4071 shiftright 123 71 -> 0 +shlr4072 shiftright 123 72 -> 0 +shlr4073 shiftright 123 73 -> 0 +shlr4074 shiftright 123 74 -> 0 +shlr4075 shiftright 123 75 -> 0 +shlr4076 shiftright 123 76 -> 0 +shlr4077 shiftright 123 77 -> 0 +shlr4078 shiftright 123 78 -> 0 +shlr4079 shiftright 123 79 -> 0 +shlr4080 shiftright 123 80 -> 0 +shlr4081 shiftright 123 81 -> 0 +shlr4082 shiftright 123 82 -> 0 +shlr4083 shiftright 123 83 -> 0 +shlr4084 shiftright 123 84 -> 0 +shlr4085 shiftright 123 85 -> 0 +shlr4086 shiftright 123 86 -> 0 +shlr4087 shiftright 123 87 -> 0 +shlr4088 shiftright 123 88 -> 0 +shlr4089 shiftright 123 89 -> 0 +shlr4090 shiftright 123 90 -> 0 +shlr4091 shiftright 123 91 -> 0 +shlr4092 shiftright 123 92 -> 0 +shlr4093 shiftright 123 93 -> 0 +shlr4094 shiftright 123 94 -> 0 +shlr4095 shiftright 123 95 -> 0 +shlr4096 shiftright 123 96 -> 0 +shlr4097 shiftright 123 97 -> 0 +shlr4098 shiftright 123 98 -> 0 +shlr4099 shiftright 123 99 -> 0 +shlr4100 shiftright 1234 0 -> 1234 +shlr4101 shiftright 1234 1 -> 123 +shlr4102 shiftright 1234 2 -> 12 +shlr4103 shiftright 1234 3 -> 1 +shlr4104 shiftright 1234 4 -> 0 +shlr4105 shiftright 1234 5 -> 0 +shlr4106 shiftright 1234 6 -> 0 +shlr4107 shiftright 1234 7 -> 0 +shlr4108 shiftright 1234 8 -> 0 +shlr4109 shiftright 1234 9 -> 0 +shlr4110 shiftright 1234 10 -> 0 +shlr4111 shiftright 1234 11 -> 0 +shlr4112 shiftright 1234 12 -> 0 +shlr4113 shiftright 1234 13 -> 0 +shlr4114 shiftright 1234 14 -> 0 +shlr4115 shiftright 1234 15 -> 0 +shlr4116 shiftright 1234 16 -> 0 +shlr4117 shiftright 1234 17 -> 0 +shlr4118 shiftright 1234 18 -> 0 +shlr4119 shiftright 1234 19 -> 0 +shlr4120 shiftright 1234 20 -> 0 +shlr4121 shiftright 1234 21 -> 0 +shlr4122 shiftright 1234 22 -> 0 +shlr4123 shiftright 1234 23 -> 0 +shlr4124 shiftright 1234 24 -> 0 +shlr4125 shiftright 1234 25 -> 0 +shlr4126 shiftright 1234 26 -> 0 +shlr4127 shiftright 1234 27 -> 0 +shlr4128 shiftright 1234 28 -> 0 +shlr4129 shiftright 1234 29 -> 0 +shlr4130 shiftright 1234 30 -> 0 +shlr4131 shiftright 1234 31 -> 0 +shlr4132 shiftright 1234 32 -> 0 +shlr4133 shiftright 1234 33 -> 0 +shlr4134 shiftright 1234 34 -> 0 +shlr4135 shiftright 1234 35 -> 0 +shlr4136 shiftright 1234 36 -> 0 +shlr4137 shiftright 1234 37 -> 0 +shlr4138 shiftright 1234 38 -> 0 +shlr4139 shiftright 1234 39 -> 0 +shlr4140 shiftright 1234 40 -> 0 +shlr4141 shiftright 1234 41 -> 0 +shlr4142 shiftright 1234 42 -> 0 +shlr4143 shiftright 1234 43 -> 0 +shlr4144 shiftright 1234 44 -> 0 +shlr4145 shiftright 1234 45 -> 0 +shlr4146 shiftright 1234 46 -> 0 +shlr4147 shiftright 1234 47 -> 0 +shlr4148 shiftright 1234 48 -> 0 +shlr4149 shiftright 1234 49 -> 0 +shlr4150 shiftright 1234 50 -> 0 +shlr4151 shiftright 1234 51 -> 0 +shlr4152 shiftright 1234 52 -> 0 +shlr4153 shiftright 1234 53 -> 0 +shlr4154 shiftright 1234 54 -> 0 +shlr4155 shiftright 1234 55 -> 0 +shlr4156 shiftright 1234 56 -> 0 +shlr4157 shiftright 1234 57 -> 0 +shlr4158 shiftright 1234 58 -> 0 +shlr4159 shiftright 1234 59 -> 0 +shlr4160 shiftright 1234 60 -> 0 +shlr4161 shiftright 1234 61 -> 0 +shlr4162 shiftright 1234 62 -> 0 +shlr4163 shiftright 1234 63 -> 0 +shlr4164 shiftright 1234 64 -> 0 +shlr4165 shiftright 1234 65 -> 0 +shlr4166 shiftright 1234 66 -> 0 +shlr4167 shiftright 1234 67 -> 0 +shlr4168 shiftright 1234 68 -> 0 +shlr4169 shiftright 1234 69 -> 0 +shlr4170 shiftright 1234 70 -> 0 +shlr4171 shiftright 1234 71 -> 0 +shlr4172 shiftright 1234 72 -> 0 +shlr4173 shiftright 1234 73 -> 0 +shlr4174 shiftright 1234 74 -> 0 +shlr4175 shiftright 1234 75 -> 0 +shlr4176 shiftright 1234 76 -> 0 +shlr4177 shiftright 1234 77 -> 0 +shlr4178 shiftright 1234 78 -> 0 +shlr4179 shiftright 1234 79 -> 0 +shlr4180 shiftright 1234 80 -> 0 +shlr4181 shiftright 1234 81 -> 0 +shlr4182 shiftright 1234 82 -> 0 +shlr4183 shiftright 1234 83 -> 0 +shlr4184 shiftright 1234 84 -> 0 +shlr4185 shiftright 1234 85 -> 0 +shlr4186 shiftright 1234 86 -> 0 +shlr4187 shiftright 1234 87 -> 0 +shlr4188 shiftright 1234 88 -> 0 +shlr4189 shiftright 1234 89 -> 0 +shlr4190 shiftright 1234 90 -> 0 +shlr4191 shiftright 1234 91 -> 0 +shlr4192 shiftright 1234 92 -> 0 +shlr4193 shiftright 1234 93 -> 0 +shlr4194 shiftright 1234 94 -> 0 +shlr4195 shiftright 1234 95 -> 0 +shlr4196 shiftright 1234 96 -> 0 +shlr4197 shiftright 1234 97 -> 0 +shlr4198 shiftright 1234 98 -> 0 +shlr4199 shiftright 1234 99 -> 0 +shlr4200 shiftright 12345 0 -> 12345 +shlr4201 shiftright 12345 1 -> 1234 +shlr4202 shiftright 12345 2 -> 123 +shlr4203 shiftright 12345 3 -> 12 +shlr4204 shiftright 12345 4 -> 1 +shlr4205 shiftright 12345 5 -> 0 +shlr4206 shiftright 12345 6 -> 0 +shlr4207 shiftright 12345 7 -> 0 +shlr4208 shiftright 12345 8 -> 0 +shlr4209 shiftright 12345 9 -> 0 +shlr4210 shiftright 12345 10 -> 0 +shlr4211 shiftright 12345 11 -> 0 +shlr4212 shiftright 12345 12 -> 0 +shlr4213 shiftright 12345 13 -> 0 +shlr4214 shiftright 12345 14 -> 0 +shlr4215 shiftright 12345 15 -> 0 +shlr4216 shiftright 12345 16 -> 0 +shlr4217 shiftright 12345 17 -> 0 +shlr4218 shiftright 12345 18 -> 0 +shlr4219 shiftright 12345 19 -> 0 +shlr4220 shiftright 12345 20 -> 0 +shlr4221 shiftright 12345 21 -> 0 +shlr4222 shiftright 12345 22 -> 0 +shlr4223 shiftright 12345 23 -> 0 +shlr4224 shiftright 12345 24 -> 0 +shlr4225 shiftright 12345 25 -> 0 +shlr4226 shiftright 12345 26 -> 0 +shlr4227 shiftright 12345 27 -> 0 +shlr4228 shiftright 12345 28 -> 0 +shlr4229 shiftright 12345 29 -> 0 +shlr4230 shiftright 12345 30 -> 0 +shlr4231 shiftright 12345 31 -> 0 +shlr4232 shiftright 12345 32 -> 0 +shlr4233 shiftright 12345 33 -> 0 +shlr4234 shiftright 12345 34 -> 0 +shlr4235 shiftright 12345 35 -> 0 +shlr4236 shiftright 12345 36 -> 0 +shlr4237 shiftright 12345 37 -> 0 +shlr4238 shiftright 12345 38 -> 0 +shlr4239 shiftright 12345 39 -> 0 +shlr4240 shiftright 12345 40 -> 0 +shlr4241 shiftright 12345 41 -> 0 +shlr4242 shiftright 12345 42 -> 0 +shlr4243 shiftright 12345 43 -> 0 +shlr4244 shiftright 12345 44 -> 0 +shlr4245 shiftright 12345 45 -> 0 +shlr4246 shiftright 12345 46 -> 0 +shlr4247 shiftright 12345 47 -> 0 +shlr4248 shiftright 12345 48 -> 0 +shlr4249 shiftright 12345 49 -> 0 +shlr4250 shiftright 12345 50 -> 0 +shlr4251 shiftright 12345 51 -> 0 +shlr4252 shiftright 12345 52 -> 0 +shlr4253 shiftright 12345 53 -> 0 +shlr4254 shiftright 12345 54 -> 0 +shlr4255 shiftright 12345 55 -> 0 +shlr4256 shiftright 12345 56 -> 0 +shlr4257 shiftright 12345 57 -> 0 +shlr4258 shiftright 12345 58 -> 0 +shlr4259 shiftright 12345 59 -> 0 +shlr4260 shiftright 12345 60 -> 0 +shlr4261 shiftright 12345 61 -> 0 +shlr4262 shiftright 12345 62 -> 0 +shlr4263 shiftright 12345 63 -> 0 +shlr4264 shiftright 12345 64 -> 0 +shlr4265 shiftright 12345 65 -> 0 +shlr4266 shiftright 12345 66 -> 0 +shlr4267 shiftright 12345 67 -> 0 +shlr4268 shiftright 12345 68 -> 0 +shlr4269 shiftright 12345 69 -> 0 +shlr4270 shiftright 12345 70 -> 0 +shlr4271 shiftright 12345 71 -> 0 +shlr4272 shiftright 12345 72 -> 0 +shlr4273 shiftright 12345 73 -> 0 +shlr4274 shiftright 12345 74 -> 0 +shlr4275 shiftright 12345 75 -> 0 +shlr4276 shiftright 12345 76 -> 0 +shlr4277 shiftright 12345 77 -> 0 +shlr4278 shiftright 12345 78 -> 0 +shlr4279 shiftright 12345 79 -> 0 +shlr4280 shiftright 12345 80 -> 0 +shlr4281 shiftright 12345 81 -> 0 +shlr4282 shiftright 12345 82 -> 0 +shlr4283 shiftright 12345 83 -> 0 +shlr4284 shiftright 12345 84 -> 0 +shlr4285 shiftright 12345 85 -> 0 +shlr4286 shiftright 12345 86 -> 0 +shlr4287 shiftright 12345 87 -> 0 +shlr4288 shiftright 12345 88 -> 0 +shlr4289 shiftright 12345 89 -> 0 +shlr4290 shiftright 12345 90 -> 0 +shlr4291 shiftright 12345 91 -> 0 +shlr4292 shiftright 12345 92 -> 0 +shlr4293 shiftright 12345 93 -> 0 +shlr4294 shiftright 12345 94 -> 0 +shlr4295 shiftright 12345 95 -> 0 +shlr4296 shiftright 12345 96 -> 0 +shlr4297 shiftright 12345 97 -> 0 +shlr4298 shiftright 12345 98 -> 0 +shlr4299 shiftright 12345 99 -> 0 +shlr4300 shiftright 123456 0 -> 123456 +shlr4301 shiftright 123456 1 -> 12345 +shlr4302 shiftright 123456 2 -> 1234 +shlr4303 shiftright 123456 3 -> 123 +shlr4304 shiftright 123456 4 -> 12 +shlr4305 shiftright 123456 5 -> 1 +shlr4306 shiftright 123456 6 -> 0 +shlr4307 shiftright 123456 7 -> 0 +shlr4308 shiftright 123456 8 -> 0 +shlr4309 shiftright 123456 9 -> 0 +shlr4310 shiftright 123456 10 -> 0 +shlr4311 shiftright 123456 11 -> 0 +shlr4312 shiftright 123456 12 -> 0 +shlr4313 shiftright 123456 13 -> 0 +shlr4314 shiftright 123456 14 -> 0 +shlr4315 shiftright 123456 15 -> 0 +shlr4316 shiftright 123456 16 -> 0 +shlr4317 shiftright 123456 17 -> 0 +shlr4318 shiftright 123456 18 -> 0 +shlr4319 shiftright 123456 19 -> 0 +shlr4320 shiftright 123456 20 -> 0 +shlr4321 shiftright 123456 21 -> 0 +shlr4322 shiftright 123456 22 -> 0 +shlr4323 shiftright 123456 23 -> 0 +shlr4324 shiftright 123456 24 -> 0 +shlr4325 shiftright 123456 25 -> 0 +shlr4326 shiftright 123456 26 -> 0 +shlr4327 shiftright 123456 27 -> 0 +shlr4328 shiftright 123456 28 -> 0 +shlr4329 shiftright 123456 29 -> 0 +shlr4330 shiftright 123456 30 -> 0 +shlr4331 shiftright 123456 31 -> 0 +shlr4332 shiftright 123456 32 -> 0 +shlr4333 shiftright 123456 33 -> 0 +shlr4334 shiftright 123456 34 -> 0 +shlr4335 shiftright 123456 35 -> 0 +shlr4336 shiftright 123456 36 -> 0 +shlr4337 shiftright 123456 37 -> 0 +shlr4338 shiftright 123456 38 -> 0 +shlr4339 shiftright 123456 39 -> 0 +shlr4340 shiftright 123456 40 -> 0 +shlr4341 shiftright 123456 41 -> 0 +shlr4342 shiftright 123456 42 -> 0 +shlr4343 shiftright 123456 43 -> 0 +shlr4344 shiftright 123456 44 -> 0 +shlr4345 shiftright 123456 45 -> 0 +shlr4346 shiftright 123456 46 -> 0 +shlr4347 shiftright 123456 47 -> 0 +shlr4348 shiftright 123456 48 -> 0 +shlr4349 shiftright 123456 49 -> 0 +shlr4350 shiftright 123456 50 -> 0 +shlr4351 shiftright 123456 51 -> 0 +shlr4352 shiftright 123456 52 -> 0 +shlr4353 shiftright 123456 53 -> 0 +shlr4354 shiftright 123456 54 -> 0 +shlr4355 shiftright 123456 55 -> 0 +shlr4356 shiftright 123456 56 -> 0 +shlr4357 shiftright 123456 57 -> 0 +shlr4358 shiftright 123456 58 -> 0 +shlr4359 shiftright 123456 59 -> 0 +shlr4360 shiftright 123456 60 -> 0 +shlr4361 shiftright 123456 61 -> 0 +shlr4362 shiftright 123456 62 -> 0 +shlr4363 shiftright 123456 63 -> 0 +shlr4364 shiftright 123456 64 -> 0 +shlr4365 shiftright 123456 65 -> 0 +shlr4366 shiftright 123456 66 -> 0 +shlr4367 shiftright 123456 67 -> 0 +shlr4368 shiftright 123456 68 -> 0 +shlr4369 shiftright 123456 69 -> 0 +shlr4370 shiftright 123456 70 -> 0 +shlr4371 shiftright 123456 71 -> 0 +shlr4372 shiftright 123456 72 -> 0 +shlr4373 shiftright 123456 73 -> 0 +shlr4374 shiftright 123456 74 -> 0 +shlr4375 shiftright 123456 75 -> 0 +shlr4376 shiftright 123456 76 -> 0 +shlr4377 shiftright 123456 77 -> 0 +shlr4378 shiftright 123456 78 -> 0 +shlr4379 shiftright 123456 79 -> 0 +shlr4380 shiftright 123456 80 -> 0 +shlr4381 shiftright 123456 81 -> 0 +shlr4382 shiftright 123456 82 -> 0 +shlr4383 shiftright 123456 83 -> 0 +shlr4384 shiftright 123456 84 -> 0 +shlr4385 shiftright 123456 85 -> 0 +shlr4386 shiftright 123456 86 -> 0 +shlr4387 shiftright 123456 87 -> 0 +shlr4388 shiftright 123456 88 -> 0 +shlr4389 shiftright 123456 89 -> 0 +shlr4390 shiftright 123456 90 -> 0 +shlr4391 shiftright 123456 91 -> 0 +shlr4392 shiftright 123456 92 -> 0 +shlr4393 shiftright 123456 93 -> 0 +shlr4394 shiftright 123456 94 -> 0 +shlr4395 shiftright 123456 95 -> 0 +shlr4396 shiftright 123456 96 -> 0 +shlr4397 shiftright 123456 97 -> 0 +shlr4398 shiftright 123456 98 -> 0 +shlr4399 shiftright 123456 99 -> 0 +shlr4400 shiftright 1234567 0 -> 1234567 +shlr4401 shiftright 1234567 1 -> 123456 +shlr4402 shiftright 1234567 2 -> 12345 +shlr4403 shiftright 1234567 3 -> 1234 +shlr4404 shiftright 1234567 4 -> 123 +shlr4405 shiftright 1234567 5 -> 12 +shlr4406 shiftright 1234567 6 -> 1 +shlr4407 shiftright 1234567 7 -> 0 +shlr4408 shiftright 1234567 8 -> 0 +shlr4409 shiftright 1234567 9 -> 0 +shlr4410 shiftright 1234567 10 -> 0 +shlr4411 shiftright 1234567 11 -> 0 +shlr4412 shiftright 1234567 12 -> 0 +shlr4413 shiftright 1234567 13 -> 0 +shlr4414 shiftright 1234567 14 -> 0 +shlr4415 shiftright 1234567 15 -> 0 +shlr4416 shiftright 1234567 16 -> 0 +shlr4417 shiftright 1234567 17 -> 0 +shlr4418 shiftright 1234567 18 -> 0 +shlr4419 shiftright 1234567 19 -> 0 +shlr4420 shiftright 1234567 20 -> 0 +shlr4421 shiftright 1234567 21 -> 0 +shlr4422 shiftright 1234567 22 -> 0 +shlr4423 shiftright 1234567 23 -> 0 +shlr4424 shiftright 1234567 24 -> 0 +shlr4425 shiftright 1234567 25 -> 0 +shlr4426 shiftright 1234567 26 -> 0 +shlr4427 shiftright 1234567 27 -> 0 +shlr4428 shiftright 1234567 28 -> 0 +shlr4429 shiftright 1234567 29 -> 0 +shlr4430 shiftright 1234567 30 -> 0 +shlr4431 shiftright 1234567 31 -> 0 +shlr4432 shiftright 1234567 32 -> 0 +shlr4433 shiftright 1234567 33 -> 0 +shlr4434 shiftright 1234567 34 -> 0 +shlr4435 shiftright 1234567 35 -> 0 +shlr4436 shiftright 1234567 36 -> 0 +shlr4437 shiftright 1234567 37 -> 0 +shlr4438 shiftright 1234567 38 -> 0 +shlr4439 shiftright 1234567 39 -> 0 +shlr4440 shiftright 1234567 40 -> 0 +shlr4441 shiftright 1234567 41 -> 0 +shlr4442 shiftright 1234567 42 -> 0 +shlr4443 shiftright 1234567 43 -> 0 +shlr4444 shiftright 1234567 44 -> 0 +shlr4445 shiftright 1234567 45 -> 0 +shlr4446 shiftright 1234567 46 -> 0 +shlr4447 shiftright 1234567 47 -> 0 +shlr4448 shiftright 1234567 48 -> 0 +shlr4449 shiftright 1234567 49 -> 0 +shlr4450 shiftright 1234567 50 -> 0 +shlr4451 shiftright 1234567 51 -> 0 +shlr4452 shiftright 1234567 52 -> 0 +shlr4453 shiftright 1234567 53 -> 0 +shlr4454 shiftright 1234567 54 -> 0 +shlr4455 shiftright 1234567 55 -> 0 +shlr4456 shiftright 1234567 56 -> 0 +shlr4457 shiftright 1234567 57 -> 0 +shlr4458 shiftright 1234567 58 -> 0 +shlr4459 shiftright 1234567 59 -> 0 +shlr4460 shiftright 1234567 60 -> 0 +shlr4461 shiftright 1234567 61 -> 0 +shlr4462 shiftright 1234567 62 -> 0 +shlr4463 shiftright 1234567 63 -> 0 +shlr4464 shiftright 1234567 64 -> 0 +shlr4465 shiftright 1234567 65 -> 0 +shlr4466 shiftright 1234567 66 -> 0 +shlr4467 shiftright 1234567 67 -> 0 +shlr4468 shiftright 1234567 68 -> 0 +shlr4469 shiftright 1234567 69 -> 0 +shlr4470 shiftright 1234567 70 -> 0 +shlr4471 shiftright 1234567 71 -> 0 +shlr4472 shiftright 1234567 72 -> 0 +shlr4473 shiftright 1234567 73 -> 0 +shlr4474 shiftright 1234567 74 -> 0 +shlr4475 shiftright 1234567 75 -> 0 +shlr4476 shiftright 1234567 76 -> 0 +shlr4477 shiftright 1234567 77 -> 0 +shlr4478 shiftright 1234567 78 -> 0 +shlr4479 shiftright 1234567 79 -> 0 +shlr4480 shiftright 1234567 80 -> 0 +shlr4481 shiftright 1234567 81 -> 0 +shlr4482 shiftright 1234567 82 -> 0 +shlr4483 shiftright 1234567 83 -> 0 +shlr4484 shiftright 1234567 84 -> 0 +shlr4485 shiftright 1234567 85 -> 0 +shlr4486 shiftright 1234567 86 -> 0 +shlr4487 shiftright 1234567 87 -> 0 +shlr4488 shiftright 1234567 88 -> 0 +shlr4489 shiftright 1234567 89 -> 0 +shlr4490 shiftright 1234567 90 -> 0 +shlr4491 shiftright 1234567 91 -> 0 +shlr4492 shiftright 1234567 92 -> 0 +shlr4493 shiftright 1234567 93 -> 0 +shlr4494 shiftright 1234567 94 -> 0 +shlr4495 shiftright 1234567 95 -> 0 +shlr4496 shiftright 1234567 96 -> 0 +shlr4497 shiftright 1234567 97 -> 0 +shlr4498 shiftright 1234567 98 -> 0 +shlr4499 shiftright 1234567 99 -> 0 +shlr4500 shiftright 12345678 0 -> 12345678 +shlr4501 shiftright 12345678 1 -> 1234567 +shlr4502 shiftright 12345678 2 -> 123456 +shlr4503 shiftright 12345678 3 -> 12345 +shlr4504 shiftright 12345678 4 -> 1234 +shlr4505 shiftright 12345678 5 -> 123 +shlr4506 shiftright 12345678 6 -> 12 +shlr4507 shiftright 12345678 7 -> 1 +shlr4508 shiftright 12345678 8 -> 0 +shlr4509 shiftright 12345678 9 -> 0 +shlr4510 shiftright 12345678 10 -> 0 +shlr4511 shiftright 12345678 11 -> 0 +shlr4512 shiftright 12345678 12 -> 0 +shlr4513 shiftright 12345678 13 -> 0 +shlr4514 shiftright 12345678 14 -> 0 +shlr4515 shiftright 12345678 15 -> 0 +shlr4516 shiftright 12345678 16 -> 0 +shlr4517 shiftright 12345678 17 -> 0 +shlr4518 shiftright 12345678 18 -> 0 +shlr4519 shiftright 12345678 19 -> 0 +shlr4520 shiftright 12345678 20 -> 0 +shlr4521 shiftright 12345678 21 -> 0 +shlr4522 shiftright 12345678 22 -> 0 +shlr4523 shiftright 12345678 23 -> 0 +shlr4524 shiftright 12345678 24 -> 0 +shlr4525 shiftright 12345678 25 -> 0 +shlr4526 shiftright 12345678 26 -> 0 +shlr4527 shiftright 12345678 27 -> 0 +shlr4528 shiftright 12345678 28 -> 0 +shlr4529 shiftright 12345678 29 -> 0 +shlr4530 shiftright 12345678 30 -> 0 +shlr4531 shiftright 12345678 31 -> 0 +shlr4532 shiftright 12345678 32 -> 0 +shlr4533 shiftright 12345678 33 -> 0 +shlr4534 shiftright 12345678 34 -> 0 +shlr4535 shiftright 12345678 35 -> 0 +shlr4536 shiftright 12345678 36 -> 0 +shlr4537 shiftright 12345678 37 -> 0 +shlr4538 shiftright 12345678 38 -> 0 +shlr4539 shiftright 12345678 39 -> 0 +shlr4540 shiftright 12345678 40 -> 0 +shlr4541 shiftright 12345678 41 -> 0 +shlr4542 shiftright 12345678 42 -> 0 +shlr4543 shiftright 12345678 43 -> 0 +shlr4544 shiftright 12345678 44 -> 0 +shlr4545 shiftright 12345678 45 -> 0 +shlr4546 shiftright 12345678 46 -> 0 +shlr4547 shiftright 12345678 47 -> 0 +shlr4548 shiftright 12345678 48 -> 0 +shlr4549 shiftright 12345678 49 -> 0 +shlr4550 shiftright 12345678 50 -> 0 +shlr4551 shiftright 12345678 51 -> 0 +shlr4552 shiftright 12345678 52 -> 0 +shlr4553 shiftright 12345678 53 -> 0 +shlr4554 shiftright 12345678 54 -> 0 +shlr4555 shiftright 12345678 55 -> 0 +shlr4556 shiftright 12345678 56 -> 0 +shlr4557 shiftright 12345678 57 -> 0 +shlr4558 shiftright 12345678 58 -> 0 +shlr4559 shiftright 12345678 59 -> 0 +shlr4560 shiftright 12345678 60 -> 0 +shlr4561 shiftright 12345678 61 -> 0 +shlr4562 shiftright 12345678 62 -> 0 +shlr4563 shiftright 12345678 63 -> 0 +shlr4564 shiftright 12345678 64 -> 0 +shlr4565 shiftright 12345678 65 -> 0 +shlr4566 shiftright 12345678 66 -> 0 +shlr4567 shiftright 12345678 67 -> 0 +shlr4568 shiftright 12345678 68 -> 0 +shlr4569 shiftright 12345678 69 -> 0 +shlr4570 shiftright 12345678 70 -> 0 +shlr4571 shiftright 12345678 71 -> 0 +shlr4572 shiftright 12345678 72 -> 0 +shlr4573 shiftright 12345678 73 -> 0 +shlr4574 shiftright 12345678 74 -> 0 +shlr4575 shiftright 12345678 75 -> 0 +shlr4576 shiftright 12345678 76 -> 0 +shlr4577 shiftright 12345678 77 -> 0 +shlr4578 shiftright 12345678 78 -> 0 +shlr4579 shiftright 12345678 79 -> 0 +shlr4580 shiftright 12345678 80 -> 0 +shlr4581 shiftright 12345678 81 -> 0 +shlr4582 shiftright 12345678 82 -> 0 +shlr4583 shiftright 12345678 83 -> 0 +shlr4584 shiftright 12345678 84 -> 0 +shlr4585 shiftright 12345678 85 -> 0 +shlr4586 shiftright 12345678 86 -> 0 +shlr4587 shiftright 12345678 87 -> 0 +shlr4588 shiftright 12345678 88 -> 0 +shlr4589 shiftright 12345678 89 -> 0 +shlr4590 shiftright 12345678 90 -> 0 +shlr4591 shiftright 12345678 91 -> 0 +shlr4592 shiftright 12345678 92 -> 0 +shlr4593 shiftright 12345678 93 -> 0 +shlr4594 shiftright 12345678 94 -> 0 +shlr4595 shiftright 12345678 95 -> 0 +shlr4596 shiftright 12345678 96 -> 0 +shlr4597 shiftright 12345678 97 -> 0 +shlr4598 shiftright 12345678 98 -> 0 +shlr4599 shiftright 12345678 99 -> 0 +shlr4600 shiftright 123456789 0 -> 123456789 +shlr4601 shiftright 123456789 1 -> 12345678 +shlr4602 shiftright 123456789 2 -> 1234567 +shlr4603 shiftright 123456789 3 -> 123456 +shlr4604 shiftright 123456789 4 -> 12345 +shlr4605 shiftright 123456789 5 -> 1234 +shlr4606 shiftright 123456789 6 -> 123 +shlr4607 shiftright 123456789 7 -> 12 +shlr4608 shiftright 123456789 8 -> 1 +shlr4609 shiftright 123456789 9 -> 0 +shlr4610 shiftright 123456789 10 -> 0 +shlr4611 shiftright 123456789 11 -> 0 +shlr4612 shiftright 123456789 12 -> 0 +shlr4613 shiftright 123456789 13 -> 0 +shlr4614 shiftright 123456789 14 -> 0 +shlr4615 shiftright 123456789 15 -> 0 +shlr4616 shiftright 123456789 16 -> 0 +shlr4617 shiftright 123456789 17 -> 0 +shlr4618 shiftright 123456789 18 -> 0 +shlr4619 shiftright 123456789 19 -> 0 +shlr4620 shiftright 123456789 20 -> 0 +shlr4621 shiftright 123456789 21 -> 0 +shlr4622 shiftright 123456789 22 -> 0 +shlr4623 shiftright 123456789 23 -> 0 +shlr4624 shiftright 123456789 24 -> 0 +shlr4625 shiftright 123456789 25 -> 0 +shlr4626 shiftright 123456789 26 -> 0 +shlr4627 shiftright 123456789 27 -> 0 +shlr4628 shiftright 123456789 28 -> 0 +shlr4629 shiftright 123456789 29 -> 0 +shlr4630 shiftright 123456789 30 -> 0 +shlr4631 shiftright 123456789 31 -> 0 +shlr4632 shiftright 123456789 32 -> 0 +shlr4633 shiftright 123456789 33 -> 0 +shlr4634 shiftright 123456789 34 -> 0 +shlr4635 shiftright 123456789 35 -> 0 +shlr4636 shiftright 123456789 36 -> 0 +shlr4637 shiftright 123456789 37 -> 0 +shlr4638 shiftright 123456789 38 -> 0 +shlr4639 shiftright 123456789 39 -> 0 +shlr4640 shiftright 123456789 40 -> 0 +shlr4641 shiftright 123456789 41 -> 0 +shlr4642 shiftright 123456789 42 -> 0 +shlr4643 shiftright 123456789 43 -> 0 +shlr4644 shiftright 123456789 44 -> 0 +shlr4645 shiftright 123456789 45 -> 0 +shlr4646 shiftright 123456789 46 -> 0 +shlr4647 shiftright 123456789 47 -> 0 +shlr4648 shiftright 123456789 48 -> 0 +shlr4649 shiftright 123456789 49 -> 0 +shlr4650 shiftright 123456789 50 -> 0 +shlr4651 shiftright 123456789 51 -> 0 +shlr4652 shiftright 123456789 52 -> 0 +shlr4653 shiftright 123456789 53 -> 0 +shlr4654 shiftright 123456789 54 -> 0 +shlr4655 shiftright 123456789 55 -> 0 +shlr4656 shiftright 123456789 56 -> 0 +shlr4657 shiftright 123456789 57 -> 0 +shlr4658 shiftright 123456789 58 -> 0 +shlr4659 shiftright 123456789 59 -> 0 +shlr4660 shiftright 123456789 60 -> 0 +shlr4661 shiftright 123456789 61 -> 0 +shlr4662 shiftright 123456789 62 -> 0 +shlr4663 shiftright 123456789 63 -> 0 +shlr4664 shiftright 123456789 64 -> 0 +shlr4665 shiftright 123456789 65 -> 0 +shlr4666 shiftright 123456789 66 -> 0 +shlr4667 shiftright 123456789 67 -> 0 +shlr4668 shiftright 123456789 68 -> 0 +shlr4669 shiftright 123456789 69 -> 0 +shlr4670 shiftright 123456789 70 -> 0 +shlr4671 shiftright 123456789 71 -> 0 +shlr4672 shiftright 123456789 72 -> 0 +shlr4673 shiftright 123456789 73 -> 0 +shlr4674 shiftright 123456789 74 -> 0 +shlr4675 shiftright 123456789 75 -> 0 +shlr4676 shiftright 123456789 76 -> 0 +shlr4677 shiftright 123456789 77 -> 0 +shlr4678 shiftright 123456789 78 -> 0 +shlr4679 shiftright 123456789 79 -> 0 +shlr4680 shiftright 123456789 80 -> 0 +shlr4681 shiftright 123456789 81 -> 0 +shlr4682 shiftright 123456789 82 -> 0 +shlr4683 shiftright 123456789 83 -> 0 +shlr4684 shiftright 123456789 84 -> 0 +shlr4685 shiftright 123456789 85 -> 0 +shlr4686 shiftright 123456789 86 -> 0 +shlr4687 shiftright 123456789 87 -> 0 +shlr4688 shiftright 123456789 88 -> 0 +shlr4689 shiftright 123456789 89 -> 0 +shlr4690 shiftright 123456789 90 -> 0 +shlr4691 shiftright 123456789 91 -> 0 +shlr4692 shiftright 123456789 92 -> 0 +shlr4693 shiftright 123456789 93 -> 0 +shlr4694 shiftright 123456789 94 -> 0 +shlr4695 shiftright 123456789 95 -> 0 +shlr4696 shiftright 123456789 96 -> 0 +shlr4697 shiftright 123456789 97 -> 0 +shlr4698 shiftright 123456789 98 -> 0 +shlr4699 shiftright 123456789 99 -> 0 +shlr4700 shiftright 1123456789 0 -> 1123456789 +shlr4701 shiftright 1123456789 1 -> 112345678 +shlr4702 shiftright 1123456789 2 -> 11234567 +shlr4703 shiftright 1123456789 3 -> 1123456 +shlr4704 shiftright 1123456789 4 -> 112345 +shlr4705 shiftright 1123456789 5 -> 11234 +shlr4706 shiftright 1123456789 6 -> 1123 +shlr4707 shiftright 1123456789 7 -> 112 +shlr4708 shiftright 1123456789 8 -> 11 +shlr4709 shiftright 1123456789 9 -> 1 +shlr4710 shiftright 1123456789 10 -> 0 +shlr4711 shiftright 1123456789 11 -> 0 +shlr4712 shiftright 1123456789 12 -> 0 +shlr4713 shiftright 1123456789 13 -> 0 +shlr4714 shiftright 1123456789 14 -> 0 +shlr4715 shiftright 1123456789 15 -> 0 +shlr4716 shiftright 1123456789 16 -> 0 +shlr4717 shiftright 1123456789 17 -> 0 +shlr4718 shiftright 1123456789 18 -> 0 +shlr4719 shiftright 1123456789 19 -> 0 +shlr4720 shiftright 1123456789 20 -> 0 +shlr4721 shiftright 1123456789 21 -> 0 +shlr4722 shiftright 1123456789 22 -> 0 +shlr4723 shiftright 1123456789 23 -> 0 +shlr4724 shiftright 1123456789 24 -> 0 +shlr4725 shiftright 1123456789 25 -> 0 +shlr4726 shiftright 1123456789 26 -> 0 +shlr4727 shiftright 1123456789 27 -> 0 +shlr4728 shiftright 1123456789 28 -> 0 +shlr4729 shiftright 1123456789 29 -> 0 +shlr4730 shiftright 1123456789 30 -> 0 +shlr4731 shiftright 1123456789 31 -> 0 +shlr4732 shiftright 1123456789 32 -> 0 +shlr4733 shiftright 1123456789 33 -> 0 +shlr4734 shiftright 1123456789 34 -> 0 +shlr4735 shiftright 1123456789 35 -> 0 +shlr4736 shiftright 1123456789 36 -> 0 +shlr4737 shiftright 1123456789 37 -> 0 +shlr4738 shiftright 1123456789 38 -> 0 +shlr4739 shiftright 1123456789 39 -> 0 +shlr4740 shiftright 1123456789 40 -> 0 +shlr4741 shiftright 1123456789 41 -> 0 +shlr4742 shiftright 1123456789 42 -> 0 +shlr4743 shiftright 1123456789 43 -> 0 +shlr4744 shiftright 1123456789 44 -> 0 +shlr4745 shiftright 1123456789 45 -> 0 +shlr4746 shiftright 1123456789 46 -> 0 +shlr4747 shiftright 1123456789 47 -> 0 +shlr4748 shiftright 1123456789 48 -> 0 +shlr4749 shiftright 1123456789 49 -> 0 +shlr4750 shiftright 1123456789 50 -> 0 +shlr4751 shiftright 1123456789 51 -> 0 +shlr4752 shiftright 1123456789 52 -> 0 +shlr4753 shiftright 1123456789 53 -> 0 +shlr4754 shiftright 1123456789 54 -> 0 +shlr4755 shiftright 1123456789 55 -> 0 +shlr4756 shiftright 1123456789 56 -> 0 +shlr4757 shiftright 1123456789 57 -> 0 +shlr4758 shiftright 1123456789 58 -> 0 +shlr4759 shiftright 1123456789 59 -> 0 +shlr4760 shiftright 1123456789 60 -> 0 +shlr4761 shiftright 1123456789 61 -> 0 +shlr4762 shiftright 1123456789 62 -> 0 +shlr4763 shiftright 1123456789 63 -> 0 +shlr4764 shiftright 1123456789 64 -> 0 +shlr4765 shiftright 1123456789 65 -> 0 +shlr4766 shiftright 1123456789 66 -> 0 +shlr4767 shiftright 1123456789 67 -> 0 +shlr4768 shiftright 1123456789 68 -> 0 +shlr4769 shiftright 1123456789 69 -> 0 +shlr4770 shiftright 1123456789 70 -> 0 +shlr4771 shiftright 1123456789 71 -> 0 +shlr4772 shiftright 1123456789 72 -> 0 +shlr4773 shiftright 1123456789 73 -> 0 +shlr4774 shiftright 1123456789 74 -> 0 +shlr4775 shiftright 1123456789 75 -> 0 +shlr4776 shiftright 1123456789 76 -> 0 +shlr4777 shiftright 1123456789 77 -> 0 +shlr4778 shiftright 1123456789 78 -> 0 +shlr4779 shiftright 1123456789 79 -> 0 +shlr4780 shiftright 1123456789 80 -> 0 +shlr4781 shiftright 1123456789 81 -> 0 +shlr4782 shiftright 1123456789 82 -> 0 +shlr4783 shiftright 1123456789 83 -> 0 +shlr4784 shiftright 1123456789 84 -> 0 +shlr4785 shiftright 1123456789 85 -> 0 +shlr4786 shiftright 1123456789 86 -> 0 +shlr4787 shiftright 1123456789 87 -> 0 +shlr4788 shiftright 1123456789 88 -> 0 +shlr4789 shiftright 1123456789 89 -> 0 +shlr4790 shiftright 1123456789 90 -> 0 +shlr4791 shiftright 1123456789 91 -> 0 +shlr4792 shiftright 1123456789 92 -> 0 +shlr4793 shiftright 1123456789 93 -> 0 +shlr4794 shiftright 1123456789 94 -> 0 +shlr4795 shiftright 1123456789 95 -> 0 +shlr4796 shiftright 1123456789 96 -> 0 +shlr4797 shiftright 1123456789 97 -> 0 +shlr4798 shiftright 1123456789 98 -> 0 +shlr4799 shiftright 1123456789 99 -> 0 +shlr4800 shiftright 12123456789 0 -> 12123456789 +shlr4801 shiftright 12123456789 1 -> 1212345678 +shlr4802 shiftright 12123456789 2 -> 121234567 +shlr4803 shiftright 12123456789 3 -> 12123456 +shlr4804 shiftright 12123456789 4 -> 1212345 +shlr4805 shiftright 12123456789 5 -> 121234 +shlr4806 shiftright 12123456789 6 -> 12123 +shlr4807 shiftright 12123456789 7 -> 1212 +shlr4808 shiftright 12123456789 8 -> 121 +shlr4809 shiftright 12123456789 9 -> 12 +shlr4810 shiftright 12123456789 10 -> 1 +shlr4811 shiftright 12123456789 11 -> 0 +shlr4812 shiftright 12123456789 12 -> 0 +shlr4813 shiftright 12123456789 13 -> 0 +shlr4814 shiftright 12123456789 14 -> 0 +shlr4815 shiftright 12123456789 15 -> 0 +shlr4816 shiftright 12123456789 16 -> 0 +shlr4817 shiftright 12123456789 17 -> 0 +shlr4818 shiftright 12123456789 18 -> 0 +shlr4819 shiftright 12123456789 19 -> 0 +shlr4820 shiftright 12123456789 20 -> 0 +shlr4821 shiftright 12123456789 21 -> 0 +shlr4822 shiftright 12123456789 22 -> 0 +shlr4823 shiftright 12123456789 23 -> 0 +shlr4824 shiftright 12123456789 24 -> 0 +shlr4825 shiftright 12123456789 25 -> 0 +shlr4826 shiftright 12123456789 26 -> 0 +shlr4827 shiftright 12123456789 27 -> 0 +shlr4828 shiftright 12123456789 28 -> 0 +shlr4829 shiftright 12123456789 29 -> 0 +shlr4830 shiftright 12123456789 30 -> 0 +shlr4831 shiftright 12123456789 31 -> 0 +shlr4832 shiftright 12123456789 32 -> 0 +shlr4833 shiftright 12123456789 33 -> 0 +shlr4834 shiftright 12123456789 34 -> 0 +shlr4835 shiftright 12123456789 35 -> 0 +shlr4836 shiftright 12123456789 36 -> 0 +shlr4837 shiftright 12123456789 37 -> 0 +shlr4838 shiftright 12123456789 38 -> 0 +shlr4839 shiftright 12123456789 39 -> 0 +shlr4840 shiftright 12123456789 40 -> 0 +shlr4841 shiftright 12123456789 41 -> 0 +shlr4842 shiftright 12123456789 42 -> 0 +shlr4843 shiftright 12123456789 43 -> 0 +shlr4844 shiftright 12123456789 44 -> 0 +shlr4845 shiftright 12123456789 45 -> 0 +shlr4846 shiftright 12123456789 46 -> 0 +shlr4847 shiftright 12123456789 47 -> 0 +shlr4848 shiftright 12123456789 48 -> 0 +shlr4849 shiftright 12123456789 49 -> 0 +shlr4850 shiftright 12123456789 50 -> 0 +shlr4851 shiftright 12123456789 51 -> 0 +shlr4852 shiftright 12123456789 52 -> 0 +shlr4853 shiftright 12123456789 53 -> 0 +shlr4854 shiftright 12123456789 54 -> 0 +shlr4855 shiftright 12123456789 55 -> 0 +shlr4856 shiftright 12123456789 56 -> 0 +shlr4857 shiftright 12123456789 57 -> 0 +shlr4858 shiftright 12123456789 58 -> 0 +shlr4859 shiftright 12123456789 59 -> 0 +shlr4860 shiftright 12123456789 60 -> 0 +shlr4861 shiftright 12123456789 61 -> 0 +shlr4862 shiftright 12123456789 62 -> 0 +shlr4863 shiftright 12123456789 63 -> 0 +shlr4864 shiftright 12123456789 64 -> 0 +shlr4865 shiftright 12123456789 65 -> 0 +shlr4866 shiftright 12123456789 66 -> 0 +shlr4867 shiftright 12123456789 67 -> 0 +shlr4868 shiftright 12123456789 68 -> 0 +shlr4869 shiftright 12123456789 69 -> 0 +shlr4870 shiftright 12123456789 70 -> 0 +shlr4871 shiftright 12123456789 71 -> 0 +shlr4872 shiftright 12123456789 72 -> 0 +shlr4873 shiftright 12123456789 73 -> 0 +shlr4874 shiftright 12123456789 74 -> 0 +shlr4875 shiftright 12123456789 75 -> 0 +shlr4876 shiftright 12123456789 76 -> 0 +shlr4877 shiftright 12123456789 77 -> 0 +shlr4878 shiftright 12123456789 78 -> 0 +shlr4879 shiftright 12123456789 79 -> 0 +shlr4880 shiftright 12123456789 80 -> 0 +shlr4881 shiftright 12123456789 81 -> 0 +shlr4882 shiftright 12123456789 82 -> 0 +shlr4883 shiftright 12123456789 83 -> 0 +shlr4884 shiftright 12123456789 84 -> 0 +shlr4885 shiftright 12123456789 85 -> 0 +shlr4886 shiftright 12123456789 86 -> 0 +shlr4887 shiftright 12123456789 87 -> 0 +shlr4888 shiftright 12123456789 88 -> 0 +shlr4889 shiftright 12123456789 89 -> 0 +shlr4890 shiftright 12123456789 90 -> 0 +shlr4891 shiftright 12123456789 91 -> 0 +shlr4892 shiftright 12123456789 92 -> 0 +shlr4893 shiftright 12123456789 93 -> 0 +shlr4894 shiftright 12123456789 94 -> 0 +shlr4895 shiftright 12123456789 95 -> 0 +shlr4896 shiftright 12123456789 96 -> 0 +shlr4897 shiftright 12123456789 97 -> 0 +shlr4898 shiftright 12123456789 98 -> 0 +shlr4899 shiftright 12123456789 99 -> 0 +shlr4900 shiftright 123123456789 0 -> 123123456789 +shlr4901 shiftright 123123456789 1 -> 12312345678 +shlr4902 shiftright 123123456789 2 -> 1231234567 +shlr4903 shiftright 123123456789 3 -> 123123456 +shlr4904 shiftright 123123456789 4 -> 12312345 +shlr4905 shiftright 123123456789 5 -> 1231234 +shlr4906 shiftright 123123456789 6 -> 123123 +shlr4907 shiftright 123123456789 7 -> 12312 +shlr4908 shiftright 123123456789 8 -> 1231 +shlr4909 shiftright 123123456789 9 -> 123 +shlr4910 shiftright 123123456789 10 -> 12 +shlr4911 shiftright 123123456789 11 -> 1 +shlr4912 shiftright 123123456789 12 -> 0 +shlr4913 shiftright 123123456789 13 -> 0 +shlr4914 shiftright 123123456789 14 -> 0 +shlr4915 shiftright 123123456789 15 -> 0 +shlr4916 shiftright 123123456789 16 -> 0 +shlr4917 shiftright 123123456789 17 -> 0 +shlr4918 shiftright 123123456789 18 -> 0 +shlr4919 shiftright 123123456789 19 -> 0 +shlr4920 shiftright 123123456789 20 -> 0 +shlr4921 shiftright 123123456789 21 -> 0 +shlr4922 shiftright 123123456789 22 -> 0 +shlr4923 shiftright 123123456789 23 -> 0 +shlr4924 shiftright 123123456789 24 -> 0 +shlr4925 shiftright 123123456789 25 -> 0 +shlr4926 shiftright 123123456789 26 -> 0 +shlr4927 shiftright 123123456789 27 -> 0 +shlr4928 shiftright 123123456789 28 -> 0 +shlr4929 shiftright 123123456789 29 -> 0 +shlr4930 shiftright 123123456789 30 -> 0 +shlr4931 shiftright 123123456789 31 -> 0 +shlr4932 shiftright 123123456789 32 -> 0 +shlr4933 shiftright 123123456789 33 -> 0 +shlr4934 shiftright 123123456789 34 -> 0 +shlr4935 shiftright 123123456789 35 -> 0 +shlr4936 shiftright 123123456789 36 -> 0 +shlr4937 shiftright 123123456789 37 -> 0 +shlr4938 shiftright 123123456789 38 -> 0 +shlr4939 shiftright 123123456789 39 -> 0 +shlr4940 shiftright 123123456789 40 -> 0 +shlr4941 shiftright 123123456789 41 -> 0 +shlr4942 shiftright 123123456789 42 -> 0 +shlr4943 shiftright 123123456789 43 -> 0 +shlr4944 shiftright 123123456789 44 -> 0 +shlr4945 shiftright 123123456789 45 -> 0 +shlr4946 shiftright 123123456789 46 -> 0 +shlr4947 shiftright 123123456789 47 -> 0 +shlr4948 shiftright 123123456789 48 -> 0 +shlr4949 shiftright 123123456789 49 -> 0 +shlr4950 shiftright 123123456789 50 -> 0 +shlr4951 shiftright 123123456789 51 -> 0 +shlr4952 shiftright 123123456789 52 -> 0 +shlr4953 shiftright 123123456789 53 -> 0 +shlr4954 shiftright 123123456789 54 -> 0 +shlr4955 shiftright 123123456789 55 -> 0 +shlr4956 shiftright 123123456789 56 -> 0 +shlr4957 shiftright 123123456789 57 -> 0 +shlr4958 shiftright 123123456789 58 -> 0 +shlr4959 shiftright 123123456789 59 -> 0 +shlr4960 shiftright 123123456789 60 -> 0 +shlr4961 shiftright 123123456789 61 -> 0 +shlr4962 shiftright 123123456789 62 -> 0 +shlr4963 shiftright 123123456789 63 -> 0 +shlr4964 shiftright 123123456789 64 -> 0 +shlr4965 shiftright 123123456789 65 -> 0 +shlr4966 shiftright 123123456789 66 -> 0 +shlr4967 shiftright 123123456789 67 -> 0 +shlr4968 shiftright 123123456789 68 -> 0 +shlr4969 shiftright 123123456789 69 -> 0 +shlr4970 shiftright 123123456789 70 -> 0 +shlr4971 shiftright 123123456789 71 -> 0 +shlr4972 shiftright 123123456789 72 -> 0 +shlr4973 shiftright 123123456789 73 -> 0 +shlr4974 shiftright 123123456789 74 -> 0 +shlr4975 shiftright 123123456789 75 -> 0 +shlr4976 shiftright 123123456789 76 -> 0 +shlr4977 shiftright 123123456789 77 -> 0 +shlr4978 shiftright 123123456789 78 -> 0 +shlr4979 shiftright 123123456789 79 -> 0 +shlr4980 shiftright 123123456789 80 -> 0 +shlr4981 shiftright 123123456789 81 -> 0 +shlr4982 shiftright 123123456789 82 -> 0 +shlr4983 shiftright 123123456789 83 -> 0 +shlr4984 shiftright 123123456789 84 -> 0 +shlr4985 shiftright 123123456789 85 -> 0 +shlr4986 shiftright 123123456789 86 -> 0 +shlr4987 shiftright 123123456789 87 -> 0 +shlr4988 shiftright 123123456789 88 -> 0 +shlr4989 shiftright 123123456789 89 -> 0 +shlr4990 shiftright 123123456789 90 -> 0 +shlr4991 shiftright 123123456789 91 -> 0 +shlr4992 shiftright 123123456789 92 -> 0 +shlr4993 shiftright 123123456789 93 -> 0 +shlr4994 shiftright 123123456789 94 -> 0 +shlr4995 shiftright 123123456789 95 -> 0 +shlr4996 shiftright 123123456789 96 -> 0 +shlr4997 shiftright 123123456789 97 -> 0 +shlr4998 shiftright 123123456789 98 -> 0 +shlr4999 shiftright 123123456789 99 -> 0 +shlr5000 shiftright 1234123456789 0 -> 1234123456789 +shlr5001 shiftright 1234123456789 1 -> 123412345678 +shlr5002 shiftright 1234123456789 2 -> 12341234567 +shlr5003 shiftright 1234123456789 3 -> 1234123456 +shlr5004 shiftright 1234123456789 4 -> 123412345 +shlr5005 shiftright 1234123456789 5 -> 12341234 +shlr5006 shiftright 1234123456789 6 -> 1234123 +shlr5007 shiftright 1234123456789 7 -> 123412 +shlr5008 shiftright 1234123456789 8 -> 12341 +shlr5009 shiftright 1234123456789 9 -> 1234 +shlr5010 shiftright 1234123456789 10 -> 123 +shlr5011 shiftright 1234123456789 11 -> 12 +shlr5012 shiftright 1234123456789 12 -> 1 +shlr5013 shiftright 1234123456789 13 -> 0 +shlr5014 shiftright 1234123456789 14 -> 0 +shlr5015 shiftright 1234123456789 15 -> 0 +shlr5016 shiftright 1234123456789 16 -> 0 +shlr5017 shiftright 1234123456789 17 -> 0 +shlr5018 shiftright 1234123456789 18 -> 0 +shlr5019 shiftright 1234123456789 19 -> 0 +shlr5020 shiftright 1234123456789 20 -> 0 +shlr5021 shiftright 1234123456789 21 -> 0 +shlr5022 shiftright 1234123456789 22 -> 0 +shlr5023 shiftright 1234123456789 23 -> 0 +shlr5024 shiftright 1234123456789 24 -> 0 +shlr5025 shiftright 1234123456789 25 -> 0 +shlr5026 shiftright 1234123456789 26 -> 0 +shlr5027 shiftright 1234123456789 27 -> 0 +shlr5028 shiftright 1234123456789 28 -> 0 +shlr5029 shiftright 1234123456789 29 -> 0 +shlr5030 shiftright 1234123456789 30 -> 0 +shlr5031 shiftright 1234123456789 31 -> 0 +shlr5032 shiftright 1234123456789 32 -> 0 +shlr5033 shiftright 1234123456789 33 -> 0 +shlr5034 shiftright 1234123456789 34 -> 0 +shlr5035 shiftright 1234123456789 35 -> 0 +shlr5036 shiftright 1234123456789 36 -> 0 +shlr5037 shiftright 1234123456789 37 -> 0 +shlr5038 shiftright 1234123456789 38 -> 0 +shlr5039 shiftright 1234123456789 39 -> 0 +shlr5040 shiftright 1234123456789 40 -> 0 +shlr5041 shiftright 1234123456789 41 -> 0 +shlr5042 shiftright 1234123456789 42 -> 0 +shlr5043 shiftright 1234123456789 43 -> 0 +shlr5044 shiftright 1234123456789 44 -> 0 +shlr5045 shiftright 1234123456789 45 -> 0 +shlr5046 shiftright 1234123456789 46 -> 0 +shlr5047 shiftright 1234123456789 47 -> 0 +shlr5048 shiftright 1234123456789 48 -> 0 +shlr5049 shiftright 1234123456789 49 -> 0 +shlr5050 shiftright 1234123456789 50 -> 0 +shlr5051 shiftright 1234123456789 51 -> 0 +shlr5052 shiftright 1234123456789 52 -> 0 +shlr5053 shiftright 1234123456789 53 -> 0 +shlr5054 shiftright 1234123456789 54 -> 0 +shlr5055 shiftright 1234123456789 55 -> 0 +shlr5056 shiftright 1234123456789 56 -> 0 +shlr5057 shiftright 1234123456789 57 -> 0 +shlr5058 shiftright 1234123456789 58 -> 0 +shlr5059 shiftright 1234123456789 59 -> 0 +shlr5060 shiftright 1234123456789 60 -> 0 +shlr5061 shiftright 1234123456789 61 -> 0 +shlr5062 shiftright 1234123456789 62 -> 0 +shlr5063 shiftright 1234123456789 63 -> 0 +shlr5064 shiftright 1234123456789 64 -> 0 +shlr5065 shiftright 1234123456789 65 -> 0 +shlr5066 shiftright 1234123456789 66 -> 0 +shlr5067 shiftright 1234123456789 67 -> 0 +shlr5068 shiftright 1234123456789 68 -> 0 +shlr5069 shiftright 1234123456789 69 -> 0 +shlr5070 shiftright 1234123456789 70 -> 0 +shlr5071 shiftright 1234123456789 71 -> 0 +shlr5072 shiftright 1234123456789 72 -> 0 +shlr5073 shiftright 1234123456789 73 -> 0 +shlr5074 shiftright 1234123456789 74 -> 0 +shlr5075 shiftright 1234123456789 75 -> 0 +shlr5076 shiftright 1234123456789 76 -> 0 +shlr5077 shiftright 1234123456789 77 -> 0 +shlr5078 shiftright 1234123456789 78 -> 0 +shlr5079 shiftright 1234123456789 79 -> 0 +shlr5080 shiftright 1234123456789 80 -> 0 +shlr5081 shiftright 1234123456789 81 -> 0 +shlr5082 shiftright 1234123456789 82 -> 0 +shlr5083 shiftright 1234123456789 83 -> 0 +shlr5084 shiftright 1234123456789 84 -> 0 +shlr5085 shiftright 1234123456789 85 -> 0 +shlr5086 shiftright 1234123456789 86 -> 0 +shlr5087 shiftright 1234123456789 87 -> 0 +shlr5088 shiftright 1234123456789 88 -> 0 +shlr5089 shiftright 1234123456789 89 -> 0 +shlr5090 shiftright 1234123456789 90 -> 0 +shlr5091 shiftright 1234123456789 91 -> 0 +shlr5092 shiftright 1234123456789 92 -> 0 +shlr5093 shiftright 1234123456789 93 -> 0 +shlr5094 shiftright 1234123456789 94 -> 0 +shlr5095 shiftright 1234123456789 95 -> 0 +shlr5096 shiftright 1234123456789 96 -> 0 +shlr5097 shiftright 1234123456789 97 -> 0 +shlr5098 shiftright 1234123456789 98 -> 0 +shlr5099 shiftright 1234123456789 99 -> 0 +shlr5100 shiftright 12345123456789 0 -> 12345123456789 +shlr5101 shiftright 12345123456789 1 -> 1234512345678 +shlr5102 shiftright 12345123456789 2 -> 123451234567 +shlr5103 shiftright 12345123456789 3 -> 12345123456 +shlr5104 shiftright 12345123456789 4 -> 1234512345 +shlr5105 shiftright 12345123456789 5 -> 123451234 +shlr5106 shiftright 12345123456789 6 -> 12345123 +shlr5107 shiftright 12345123456789 7 -> 1234512 +shlr5108 shiftright 12345123456789 8 -> 123451 +shlr5109 shiftright 12345123456789 9 -> 12345 +shlr5110 shiftright 12345123456789 10 -> 1234 +shlr5111 shiftright 12345123456789 11 -> 123 +shlr5112 shiftright 12345123456789 12 -> 12 +shlr5113 shiftright 12345123456789 13 -> 1 +shlr5114 shiftright 12345123456789 14 -> 0 +shlr5115 shiftright 12345123456789 15 -> 0 +shlr5116 shiftright 12345123456789 16 -> 0 +shlr5117 shiftright 12345123456789 17 -> 0 +shlr5118 shiftright 12345123456789 18 -> 0 +shlr5119 shiftright 12345123456789 19 -> 0 +shlr5120 shiftright 12345123456789 20 -> 0 +shlr5121 shiftright 12345123456789 21 -> 0 +shlr5122 shiftright 12345123456789 22 -> 0 +shlr5123 shiftright 12345123456789 23 -> 0 +shlr5124 shiftright 12345123456789 24 -> 0 +shlr5125 shiftright 12345123456789 25 -> 0 +shlr5126 shiftright 12345123456789 26 -> 0 +shlr5127 shiftright 12345123456789 27 -> 0 +shlr5128 shiftright 12345123456789 28 -> 0 +shlr5129 shiftright 12345123456789 29 -> 0 +shlr5130 shiftright 12345123456789 30 -> 0 +shlr5131 shiftright 12345123456789 31 -> 0 +shlr5132 shiftright 12345123456789 32 -> 0 +shlr5133 shiftright 12345123456789 33 -> 0 +shlr5134 shiftright 12345123456789 34 -> 0 +shlr5135 shiftright 12345123456789 35 -> 0 +shlr5136 shiftright 12345123456789 36 -> 0 +shlr5137 shiftright 12345123456789 37 -> 0 +shlr5138 shiftright 12345123456789 38 -> 0 +shlr5139 shiftright 12345123456789 39 -> 0 +shlr5140 shiftright 12345123456789 40 -> 0 +shlr5141 shiftright 12345123456789 41 -> 0 +shlr5142 shiftright 12345123456789 42 -> 0 +shlr5143 shiftright 12345123456789 43 -> 0 +shlr5144 shiftright 12345123456789 44 -> 0 +shlr5145 shiftright 12345123456789 45 -> 0 +shlr5146 shiftright 12345123456789 46 -> 0 +shlr5147 shiftright 12345123456789 47 -> 0 +shlr5148 shiftright 12345123456789 48 -> 0 +shlr5149 shiftright 12345123456789 49 -> 0 +shlr5150 shiftright 12345123456789 50 -> 0 +shlr5151 shiftright 12345123456789 51 -> 0 +shlr5152 shiftright 12345123456789 52 -> 0 +shlr5153 shiftright 12345123456789 53 -> 0 +shlr5154 shiftright 12345123456789 54 -> 0 +shlr5155 shiftright 12345123456789 55 -> 0 +shlr5156 shiftright 12345123456789 56 -> 0 +shlr5157 shiftright 12345123456789 57 -> 0 +shlr5158 shiftright 12345123456789 58 -> 0 +shlr5159 shiftright 12345123456789 59 -> 0 +shlr5160 shiftright 12345123456789 60 -> 0 +shlr5161 shiftright 12345123456789 61 -> 0 +shlr5162 shiftright 12345123456789 62 -> 0 +shlr5163 shiftright 12345123456789 63 -> 0 +shlr5164 shiftright 12345123456789 64 -> 0 +shlr5165 shiftright 12345123456789 65 -> 0 +shlr5166 shiftright 12345123456789 66 -> 0 +shlr5167 shiftright 12345123456789 67 -> 0 +shlr5168 shiftright 12345123456789 68 -> 0 +shlr5169 shiftright 12345123456789 69 -> 0 +shlr5170 shiftright 12345123456789 70 -> 0 +shlr5171 shiftright 12345123456789 71 -> 0 +shlr5172 shiftright 12345123456789 72 -> 0 +shlr5173 shiftright 12345123456789 73 -> 0 +shlr5174 shiftright 12345123456789 74 -> 0 +shlr5175 shiftright 12345123456789 75 -> 0 +shlr5176 shiftright 12345123456789 76 -> 0 +shlr5177 shiftright 12345123456789 77 -> 0 +shlr5178 shiftright 12345123456789 78 -> 0 +shlr5179 shiftright 12345123456789 79 -> 0 +shlr5180 shiftright 12345123456789 80 -> 0 +shlr5181 shiftright 12345123456789 81 -> 0 +shlr5182 shiftright 12345123456789 82 -> 0 +shlr5183 shiftright 12345123456789 83 -> 0 +shlr5184 shiftright 12345123456789 84 -> 0 +shlr5185 shiftright 12345123456789 85 -> 0 +shlr5186 shiftright 12345123456789 86 -> 0 +shlr5187 shiftright 12345123456789 87 -> 0 +shlr5188 shiftright 12345123456789 88 -> 0 +shlr5189 shiftright 12345123456789 89 -> 0 +shlr5190 shiftright 12345123456789 90 -> 0 +shlr5191 shiftright 12345123456789 91 -> 0 +shlr5192 shiftright 12345123456789 92 -> 0 +shlr5193 shiftright 12345123456789 93 -> 0 +shlr5194 shiftright 12345123456789 94 -> 0 +shlr5195 shiftright 12345123456789 95 -> 0 +shlr5196 shiftright 12345123456789 96 -> 0 +shlr5197 shiftright 12345123456789 97 -> 0 +shlr5198 shiftright 12345123456789 98 -> 0 +shlr5199 shiftright 12345123456789 99 -> 0 +shlr5200 shiftright 123456123456789 0 -> 123456123456789 +shlr5201 shiftright 123456123456789 1 -> 12345612345678 +shlr5202 shiftright 123456123456789 2 -> 1234561234567 +shlr5203 shiftright 123456123456789 3 -> 123456123456 +shlr5204 shiftright 123456123456789 4 -> 12345612345 +shlr5205 shiftright 123456123456789 5 -> 1234561234 +shlr5206 shiftright 123456123456789 6 -> 123456123 +shlr5207 shiftright 123456123456789 7 -> 12345612 +shlr5208 shiftright 123456123456789 8 -> 1234561 +shlr5209 shiftright 123456123456789 9 -> 123456 +shlr5210 shiftright 123456123456789 10 -> 12345 +shlr5211 shiftright 123456123456789 11 -> 1234 +shlr5212 shiftright 123456123456789 12 -> 123 +shlr5213 shiftright 123456123456789 13 -> 12 +shlr5214 shiftright 123456123456789 14 -> 1 +shlr5215 shiftright 123456123456789 15 -> 0 +shlr5216 shiftright 123456123456789 16 -> 0 +shlr5217 shiftright 123456123456789 17 -> 0 +shlr5218 shiftright 123456123456789 18 -> 0 +shlr5219 shiftright 123456123456789 19 -> 0 +shlr5220 shiftright 123456123456789 20 -> 0 +shlr5221 shiftright 123456123456789 21 -> 0 +shlr5222 shiftright 123456123456789 22 -> 0 +shlr5223 shiftright 123456123456789 23 -> 0 +shlr5224 shiftright 123456123456789 24 -> 0 +shlr5225 shiftright 123456123456789 25 -> 0 +shlr5226 shiftright 123456123456789 26 -> 0 +shlr5227 shiftright 123456123456789 27 -> 0 +shlr5228 shiftright 123456123456789 28 -> 0 +shlr5229 shiftright 123456123456789 29 -> 0 +shlr5230 shiftright 123456123456789 30 -> 0 +shlr5231 shiftright 123456123456789 31 -> 0 +shlr5232 shiftright 123456123456789 32 -> 0 +shlr5233 shiftright 123456123456789 33 -> 0 +shlr5234 shiftright 123456123456789 34 -> 0 +shlr5235 shiftright 123456123456789 35 -> 0 +shlr5236 shiftright 123456123456789 36 -> 0 +shlr5237 shiftright 123456123456789 37 -> 0 +shlr5238 shiftright 123456123456789 38 -> 0 +shlr5239 shiftright 123456123456789 39 -> 0 +shlr5240 shiftright 123456123456789 40 -> 0 +shlr5241 shiftright 123456123456789 41 -> 0 +shlr5242 shiftright 123456123456789 42 -> 0 +shlr5243 shiftright 123456123456789 43 -> 0 +shlr5244 shiftright 123456123456789 44 -> 0 +shlr5245 shiftright 123456123456789 45 -> 0 +shlr5246 shiftright 123456123456789 46 -> 0 +shlr5247 shiftright 123456123456789 47 -> 0 +shlr5248 shiftright 123456123456789 48 -> 0 +shlr5249 shiftright 123456123456789 49 -> 0 +shlr5250 shiftright 123456123456789 50 -> 0 +shlr5251 shiftright 123456123456789 51 -> 0 +shlr5252 shiftright 123456123456789 52 -> 0 +shlr5253 shiftright 123456123456789 53 -> 0 +shlr5254 shiftright 123456123456789 54 -> 0 +shlr5255 shiftright 123456123456789 55 -> 0 +shlr5256 shiftright 123456123456789 56 -> 0 +shlr5257 shiftright 123456123456789 57 -> 0 +shlr5258 shiftright 123456123456789 58 -> 0 +shlr5259 shiftright 123456123456789 59 -> 0 +shlr5260 shiftright 123456123456789 60 -> 0 +shlr5261 shiftright 123456123456789 61 -> 0 +shlr5262 shiftright 123456123456789 62 -> 0 +shlr5263 shiftright 123456123456789 63 -> 0 +shlr5264 shiftright 123456123456789 64 -> 0 +shlr5265 shiftright 123456123456789 65 -> 0 +shlr5266 shiftright 123456123456789 66 -> 0 +shlr5267 shiftright 123456123456789 67 -> 0 +shlr5268 shiftright 123456123456789 68 -> 0 +shlr5269 shiftright 123456123456789 69 -> 0 +shlr5270 shiftright 123456123456789 70 -> 0 +shlr5271 shiftright 123456123456789 71 -> 0 +shlr5272 shiftright 123456123456789 72 -> 0 +shlr5273 shiftright 123456123456789 73 -> 0 +shlr5274 shiftright 123456123456789 74 -> 0 +shlr5275 shiftright 123456123456789 75 -> 0 +shlr5276 shiftright 123456123456789 76 -> 0 +shlr5277 shiftright 123456123456789 77 -> 0 +shlr5278 shiftright 123456123456789 78 -> 0 +shlr5279 shiftright 123456123456789 79 -> 0 +shlr5280 shiftright 123456123456789 80 -> 0 +shlr5281 shiftright 123456123456789 81 -> 0 +shlr5282 shiftright 123456123456789 82 -> 0 +shlr5283 shiftright 123456123456789 83 -> 0 +shlr5284 shiftright 123456123456789 84 -> 0 +shlr5285 shiftright 123456123456789 85 -> 0 +shlr5286 shiftright 123456123456789 86 -> 0 +shlr5287 shiftright 123456123456789 87 -> 0 +shlr5288 shiftright 123456123456789 88 -> 0 +shlr5289 shiftright 123456123456789 89 -> 0 +shlr5290 shiftright 123456123456789 90 -> 0 +shlr5291 shiftright 123456123456789 91 -> 0 +shlr5292 shiftright 123456123456789 92 -> 0 +shlr5293 shiftright 123456123456789 93 -> 0 +shlr5294 shiftright 123456123456789 94 -> 0 +shlr5295 shiftright 123456123456789 95 -> 0 +shlr5296 shiftright 123456123456789 96 -> 0 +shlr5297 shiftright 123456123456789 97 -> 0 +shlr5298 shiftright 123456123456789 98 -> 0 +shlr5299 shiftright 123456123456789 99 -> 0 +shlr5300 shiftright 1234567123456789 0 -> 1234567123456789 +shlr5301 shiftright 1234567123456789 1 -> 123456712345678 +shlr5302 shiftright 1234567123456789 2 -> 12345671234567 +shlr5303 shiftright 1234567123456789 3 -> 1234567123456 +shlr5304 shiftright 1234567123456789 4 -> 123456712345 +shlr5305 shiftright 1234567123456789 5 -> 12345671234 +shlr5306 shiftright 1234567123456789 6 -> 1234567123 +shlr5307 shiftright 1234567123456789 7 -> 123456712 +shlr5308 shiftright 1234567123456789 8 -> 12345671 +shlr5309 shiftright 1234567123456789 9 -> 1234567 +shlr5310 shiftright 1234567123456789 10 -> 123456 +shlr5311 shiftright 1234567123456789 11 -> 12345 +shlr5312 shiftright 1234567123456789 12 -> 1234 +shlr5313 shiftright 1234567123456789 13 -> 123 +shlr5314 shiftright 1234567123456789 14 -> 12 +shlr5315 shiftright 1234567123456789 15 -> 1 +shlr5316 shiftright 1234567123456789 16 -> 0 +shlr5317 shiftright 1234567123456789 17 -> 0 +shlr5318 shiftright 1234567123456789 18 -> 0 +shlr5319 shiftright 1234567123456789 19 -> 0 +shlr5320 shiftright 1234567123456789 20 -> 0 +shlr5321 shiftright 1234567123456789 21 -> 0 +shlr5322 shiftright 1234567123456789 22 -> 0 +shlr5323 shiftright 1234567123456789 23 -> 0 +shlr5324 shiftright 1234567123456789 24 -> 0 +shlr5325 shiftright 1234567123456789 25 -> 0 +shlr5326 shiftright 1234567123456789 26 -> 0 +shlr5327 shiftright 1234567123456789 27 -> 0 +shlr5328 shiftright 1234567123456789 28 -> 0 +shlr5329 shiftright 1234567123456789 29 -> 0 +shlr5330 shiftright 1234567123456789 30 -> 0 +shlr5331 shiftright 1234567123456789 31 -> 0 +shlr5332 shiftright 1234567123456789 32 -> 0 +shlr5333 shiftright 1234567123456789 33 -> 0 +shlr5334 shiftright 1234567123456789 34 -> 0 +shlr5335 shiftright 1234567123456789 35 -> 0 +shlr5336 shiftright 1234567123456789 36 -> 0 +shlr5337 shiftright 1234567123456789 37 -> 0 +shlr5338 shiftright 1234567123456789 38 -> 0 +shlr5339 shiftright 1234567123456789 39 -> 0 +shlr5340 shiftright 1234567123456789 40 -> 0 +shlr5341 shiftright 1234567123456789 41 -> 0 +shlr5342 shiftright 1234567123456789 42 -> 0 +shlr5343 shiftright 1234567123456789 43 -> 0 +shlr5344 shiftright 1234567123456789 44 -> 0 +shlr5345 shiftright 1234567123456789 45 -> 0 +shlr5346 shiftright 1234567123456789 46 -> 0 +shlr5347 shiftright 1234567123456789 47 -> 0 +shlr5348 shiftright 1234567123456789 48 -> 0 +shlr5349 shiftright 1234567123456789 49 -> 0 +shlr5350 shiftright 1234567123456789 50 -> 0 +shlr5351 shiftright 1234567123456789 51 -> 0 +shlr5352 shiftright 1234567123456789 52 -> 0 +shlr5353 shiftright 1234567123456789 53 -> 0 +shlr5354 shiftright 1234567123456789 54 -> 0 +shlr5355 shiftright 1234567123456789 55 -> 0 +shlr5356 shiftright 1234567123456789 56 -> 0 +shlr5357 shiftright 1234567123456789 57 -> 0 +shlr5358 shiftright 1234567123456789 58 -> 0 +shlr5359 shiftright 1234567123456789 59 -> 0 +shlr5360 shiftright 1234567123456789 60 -> 0 +shlr5361 shiftright 1234567123456789 61 -> 0 +shlr5362 shiftright 1234567123456789 62 -> 0 +shlr5363 shiftright 1234567123456789 63 -> 0 +shlr5364 shiftright 1234567123456789 64 -> 0 +shlr5365 shiftright 1234567123456789 65 -> 0 +shlr5366 shiftright 1234567123456789 66 -> 0 +shlr5367 shiftright 1234567123456789 67 -> 0 +shlr5368 shiftright 1234567123456789 68 -> 0 +shlr5369 shiftright 1234567123456789 69 -> 0 +shlr5370 shiftright 1234567123456789 70 -> 0 +shlr5371 shiftright 1234567123456789 71 -> 0 +shlr5372 shiftright 1234567123456789 72 -> 0 +shlr5373 shiftright 1234567123456789 73 -> 0 +shlr5374 shiftright 1234567123456789 74 -> 0 +shlr5375 shiftright 1234567123456789 75 -> 0 +shlr5376 shiftright 1234567123456789 76 -> 0 +shlr5377 shiftright 1234567123456789 77 -> 0 +shlr5378 shiftright 1234567123456789 78 -> 0 +shlr5379 shiftright 1234567123456789 79 -> 0 +shlr5380 shiftright 1234567123456789 80 -> 0 +shlr5381 shiftright 1234567123456789 81 -> 0 +shlr5382 shiftright 1234567123456789 82 -> 0 +shlr5383 shiftright 1234567123456789 83 -> 0 +shlr5384 shiftright 1234567123456789 84 -> 0 +shlr5385 shiftright 1234567123456789 85 -> 0 +shlr5386 shiftright 1234567123456789 86 -> 0 +shlr5387 shiftright 1234567123456789 87 -> 0 +shlr5388 shiftright 1234567123456789 88 -> 0 +shlr5389 shiftright 1234567123456789 89 -> 0 +shlr5390 shiftright 1234567123456789 90 -> 0 +shlr5391 shiftright 1234567123456789 91 -> 0 +shlr5392 shiftright 1234567123456789 92 -> 0 +shlr5393 shiftright 1234567123456789 93 -> 0 +shlr5394 shiftright 1234567123456789 94 -> 0 +shlr5395 shiftright 1234567123456789 95 -> 0 +shlr5396 shiftright 1234567123456789 96 -> 0 +shlr5397 shiftright 1234567123456789 97 -> 0 +shlr5398 shiftright 1234567123456789 98 -> 0 +shlr5399 shiftright 1234567123456789 99 -> 0 +shlr5400 shiftright 12345678123456789 0 -> 12345678123456789 +shlr5401 shiftright 12345678123456789 1 -> 1234567812345678 +shlr5402 shiftright 12345678123456789 2 -> 123456781234567 +shlr5403 shiftright 12345678123456789 3 -> 12345678123456 +shlr5404 shiftright 12345678123456789 4 -> 1234567812345 +shlr5405 shiftright 12345678123456789 5 -> 123456781234 +shlr5406 shiftright 12345678123456789 6 -> 12345678123 +shlr5407 shiftright 12345678123456789 7 -> 1234567812 +shlr5408 shiftright 12345678123456789 8 -> 123456781 +shlr5409 shiftright 12345678123456789 9 -> 12345678 +shlr5410 shiftright 12345678123456789 10 -> 1234567 +shlr5411 shiftright 12345678123456789 11 -> 123456 +shlr5412 shiftright 12345678123456789 12 -> 12345 +shlr5413 shiftright 12345678123456789 13 -> 1234 +shlr5414 shiftright 12345678123456789 14 -> 123 +shlr5415 shiftright 12345678123456789 15 -> 12 +shlr5416 shiftright 12345678123456789 16 -> 1 +shlr5417 shiftright 12345678123456789 17 -> 0 +shlr5418 shiftright 12345678123456789 18 -> 0 +shlr5419 shiftright 12345678123456789 19 -> 0 +shlr5420 shiftright 12345678123456789 20 -> 0 +shlr5421 shiftright 12345678123456789 21 -> 0 +shlr5422 shiftright 12345678123456789 22 -> 0 +shlr5423 shiftright 12345678123456789 23 -> 0 +shlr5424 shiftright 12345678123456789 24 -> 0 +shlr5425 shiftright 12345678123456789 25 -> 0 +shlr5426 shiftright 12345678123456789 26 -> 0 +shlr5427 shiftright 12345678123456789 27 -> 0 +shlr5428 shiftright 12345678123456789 28 -> 0 +shlr5429 shiftright 12345678123456789 29 -> 0 +shlr5430 shiftright 12345678123456789 30 -> 0 +shlr5431 shiftright 12345678123456789 31 -> 0 +shlr5432 shiftright 12345678123456789 32 -> 0 +shlr5433 shiftright 12345678123456789 33 -> 0 +shlr5434 shiftright 12345678123456789 34 -> 0 +shlr5435 shiftright 12345678123456789 35 -> 0 +shlr5436 shiftright 12345678123456789 36 -> 0 +shlr5437 shiftright 12345678123456789 37 -> 0 +shlr5438 shiftright 12345678123456789 38 -> 0 +shlr5439 shiftright 12345678123456789 39 -> 0 +shlr5440 shiftright 12345678123456789 40 -> 0 +shlr5441 shiftright 12345678123456789 41 -> 0 +shlr5442 shiftright 12345678123456789 42 -> 0 +shlr5443 shiftright 12345678123456789 43 -> 0 +shlr5444 shiftright 12345678123456789 44 -> 0 +shlr5445 shiftright 12345678123456789 45 -> 0 +shlr5446 shiftright 12345678123456789 46 -> 0 +shlr5447 shiftright 12345678123456789 47 -> 0 +shlr5448 shiftright 12345678123456789 48 -> 0 +shlr5449 shiftright 12345678123456789 49 -> 0 +shlr5450 shiftright 12345678123456789 50 -> 0 +shlr5451 shiftright 12345678123456789 51 -> 0 +shlr5452 shiftright 12345678123456789 52 -> 0 +shlr5453 shiftright 12345678123456789 53 -> 0 +shlr5454 shiftright 12345678123456789 54 -> 0 +shlr5455 shiftright 12345678123456789 55 -> 0 +shlr5456 shiftright 12345678123456789 56 -> 0 +shlr5457 shiftright 12345678123456789 57 -> 0 +shlr5458 shiftright 12345678123456789 58 -> 0 +shlr5459 shiftright 12345678123456789 59 -> 0 +shlr5460 shiftright 12345678123456789 60 -> 0 +shlr5461 shiftright 12345678123456789 61 -> 0 +shlr5462 shiftright 12345678123456789 62 -> 0 +shlr5463 shiftright 12345678123456789 63 -> 0 +shlr5464 shiftright 12345678123456789 64 -> 0 +shlr5465 shiftright 12345678123456789 65 -> 0 +shlr5466 shiftright 12345678123456789 66 -> 0 +shlr5467 shiftright 12345678123456789 67 -> 0 +shlr5468 shiftright 12345678123456789 68 -> 0 +shlr5469 shiftright 12345678123456789 69 -> 0 +shlr5470 shiftright 12345678123456789 70 -> 0 +shlr5471 shiftright 12345678123456789 71 -> 0 +shlr5472 shiftright 12345678123456789 72 -> 0 +shlr5473 shiftright 12345678123456789 73 -> 0 +shlr5474 shiftright 12345678123456789 74 -> 0 +shlr5475 shiftright 12345678123456789 75 -> 0 +shlr5476 shiftright 12345678123456789 76 -> 0 +shlr5477 shiftright 12345678123456789 77 -> 0 +shlr5478 shiftright 12345678123456789 78 -> 0 +shlr5479 shiftright 12345678123456789 79 -> 0 +shlr5480 shiftright 12345678123456789 80 -> 0 +shlr5481 shiftright 12345678123456789 81 -> 0 +shlr5482 shiftright 12345678123456789 82 -> 0 +shlr5483 shiftright 12345678123456789 83 -> 0 +shlr5484 shiftright 12345678123456789 84 -> 0 +shlr5485 shiftright 12345678123456789 85 -> 0 +shlr5486 shiftright 12345678123456789 86 -> 0 +shlr5487 shiftright 12345678123456789 87 -> 0 +shlr5488 shiftright 12345678123456789 88 -> 0 +shlr5489 shiftright 12345678123456789 89 -> 0 +shlr5490 shiftright 12345678123456789 90 -> 0 +shlr5491 shiftright 12345678123456789 91 -> 0 +shlr5492 shiftright 12345678123456789 92 -> 0 +shlr5493 shiftright 12345678123456789 93 -> 0 +shlr5494 shiftright 12345678123456789 94 -> 0 +shlr5495 shiftright 12345678123456789 95 -> 0 +shlr5496 shiftright 12345678123456789 96 -> 0 +shlr5497 shiftright 12345678123456789 97 -> 0 +shlr5498 shiftright 12345678123456789 98 -> 0 +shlr5499 shiftright 12345678123456789 99 -> 0 +shlr5500 shiftright 123456789123456789 0 -> 123456789123456789 +shlr5501 shiftright 123456789123456789 1 -> 12345678912345678 +shlr5502 shiftright 123456789123456789 2 -> 1234567891234567 +shlr5503 shiftright 123456789123456789 3 -> 123456789123456 +shlr5504 shiftright 123456789123456789 4 -> 12345678912345 +shlr5505 shiftright 123456789123456789 5 -> 1234567891234 +shlr5506 shiftright 123456789123456789 6 -> 123456789123 +shlr5507 shiftright 123456789123456789 7 -> 12345678912 +shlr5508 shiftright 123456789123456789 8 -> 1234567891 +shlr5509 shiftright 123456789123456789 9 -> 123456789 +shlr5510 shiftright 123456789123456789 10 -> 12345678 +shlr5511 shiftright 123456789123456789 11 -> 1234567 +shlr5512 shiftright 123456789123456789 12 -> 123456 +shlr5513 shiftright 123456789123456789 13 -> 12345 +shlr5514 shiftright 123456789123456789 14 -> 1234 +shlr5515 shiftright 123456789123456789 15 -> 123 +shlr5516 shiftright 123456789123456789 16 -> 12 +shlr5517 shiftright 123456789123456789 17 -> 1 +shlr5518 shiftright 123456789123456789 18 -> 0 +shlr5519 shiftright 123456789123456789 19 -> 0 +shlr5520 shiftright 123456789123456789 20 -> 0 +shlr5521 shiftright 123456789123456789 21 -> 0 +shlr5522 shiftright 123456789123456789 22 -> 0 +shlr5523 shiftright 123456789123456789 23 -> 0 +shlr5524 shiftright 123456789123456789 24 -> 0 +shlr5525 shiftright 123456789123456789 25 -> 0 +shlr5526 shiftright 123456789123456789 26 -> 0 +shlr5527 shiftright 123456789123456789 27 -> 0 +shlr5528 shiftright 123456789123456789 28 -> 0 +shlr5529 shiftright 123456789123456789 29 -> 0 +shlr5530 shiftright 123456789123456789 30 -> 0 +shlr5531 shiftright 123456789123456789 31 -> 0 +shlr5532 shiftright 123456789123456789 32 -> 0 +shlr5533 shiftright 123456789123456789 33 -> 0 +shlr5534 shiftright 123456789123456789 34 -> 0 +shlr5535 shiftright 123456789123456789 35 -> 0 +shlr5536 shiftright 123456789123456789 36 -> 0 +shlr5537 shiftright 123456789123456789 37 -> 0 +shlr5538 shiftright 123456789123456789 38 -> 0 +shlr5539 shiftright 123456789123456789 39 -> 0 +shlr5540 shiftright 123456789123456789 40 -> 0 +shlr5541 shiftright 123456789123456789 41 -> 0 +shlr5542 shiftright 123456789123456789 42 -> 0 +shlr5543 shiftright 123456789123456789 43 -> 0 +shlr5544 shiftright 123456789123456789 44 -> 0 +shlr5545 shiftright 123456789123456789 45 -> 0 +shlr5546 shiftright 123456789123456789 46 -> 0 +shlr5547 shiftright 123456789123456789 47 -> 0 +shlr5548 shiftright 123456789123456789 48 -> 0 +shlr5549 shiftright 123456789123456789 49 -> 0 +shlr5550 shiftright 123456789123456789 50 -> 0 +shlr5551 shiftright 123456789123456789 51 -> 0 +shlr5552 shiftright 123456789123456789 52 -> 0 +shlr5553 shiftright 123456789123456789 53 -> 0 +shlr5554 shiftright 123456789123456789 54 -> 0 +shlr5555 shiftright 123456789123456789 55 -> 0 +shlr5556 shiftright 123456789123456789 56 -> 0 +shlr5557 shiftright 123456789123456789 57 -> 0 +shlr5558 shiftright 123456789123456789 58 -> 0 +shlr5559 shiftright 123456789123456789 59 -> 0 +shlr5560 shiftright 123456789123456789 60 -> 0 +shlr5561 shiftright 123456789123456789 61 -> 0 +shlr5562 shiftright 123456789123456789 62 -> 0 +shlr5563 shiftright 123456789123456789 63 -> 0 +shlr5564 shiftright 123456789123456789 64 -> 0 +shlr5565 shiftright 123456789123456789 65 -> 0 +shlr5566 shiftright 123456789123456789 66 -> 0 +shlr5567 shiftright 123456789123456789 67 -> 0 +shlr5568 shiftright 123456789123456789 68 -> 0 +shlr5569 shiftright 123456789123456789 69 -> 0 +shlr5570 shiftright 123456789123456789 70 -> 0 +shlr5571 shiftright 123456789123456789 71 -> 0 +shlr5572 shiftright 123456789123456789 72 -> 0 +shlr5573 shiftright 123456789123456789 73 -> 0 +shlr5574 shiftright 123456789123456789 74 -> 0 +shlr5575 shiftright 123456789123456789 75 -> 0 +shlr5576 shiftright 123456789123456789 76 -> 0 +shlr5577 shiftright 123456789123456789 77 -> 0 +shlr5578 shiftright 123456789123456789 78 -> 0 +shlr5579 shiftright 123456789123456789 79 -> 0 +shlr5580 shiftright 123456789123456789 80 -> 0 +shlr5581 shiftright 123456789123456789 81 -> 0 +shlr5582 shiftright 123456789123456789 82 -> 0 +shlr5583 shiftright 123456789123456789 83 -> 0 +shlr5584 shiftright 123456789123456789 84 -> 0 +shlr5585 shiftright 123456789123456789 85 -> 0 +shlr5586 shiftright 123456789123456789 86 -> 0 +shlr5587 shiftright 123456789123456789 87 -> 0 +shlr5588 shiftright 123456789123456789 88 -> 0 +shlr5589 shiftright 123456789123456789 89 -> 0 +shlr5590 shiftright 123456789123456789 90 -> 0 +shlr5591 shiftright 123456789123456789 91 -> 0 +shlr5592 shiftright 123456789123456789 92 -> 0 +shlr5593 shiftright 123456789123456789 93 -> 0 +shlr5594 shiftright 123456789123456789 94 -> 0 +shlr5595 shiftright 123456789123456789 95 -> 0 +shlr5596 shiftright 123456789123456789 96 -> 0 +shlr5597 shiftright 123456789123456789 97 -> 0 +shlr5598 shiftright 123456789123456789 98 -> 0 +shlr5599 shiftright 123456789123456789 99 -> 0 +shlr5600 shiftright 1123456789123456789 0 -> 1123456789123456789 +shlr5601 shiftright 1123456789123456789 1 -> 112345678912345678 +shlr5602 shiftright 1123456789123456789 2 -> 11234567891234567 +shlr5603 shiftright 1123456789123456789 3 -> 1123456789123456 +shlr5604 shiftright 1123456789123456789 4 -> 112345678912345 +shlr5605 shiftright 1123456789123456789 5 -> 11234567891234 +shlr5606 shiftright 1123456789123456789 6 -> 1123456789123 +shlr5607 shiftright 1123456789123456789 7 -> 112345678912 +shlr5608 shiftright 1123456789123456789 8 -> 11234567891 +shlr5609 shiftright 1123456789123456789 9 -> 1123456789 +shlr5610 shiftright 1123456789123456789 10 -> 112345678 +shlr5611 shiftright 1123456789123456789 11 -> 11234567 +shlr5612 shiftright 1123456789123456789 12 -> 1123456 +shlr5613 shiftright 1123456789123456789 13 -> 112345 +shlr5614 shiftright 1123456789123456789 14 -> 11234 +shlr5615 shiftright 1123456789123456789 15 -> 1123 +shlr5616 shiftright 1123456789123456789 16 -> 112 +shlr5617 shiftright 1123456789123456789 17 -> 11 +shlr5618 shiftright 1123456789123456789 18 -> 1 +shlr5619 shiftright 1123456789123456789 19 -> 0 +shlr5620 shiftright 1123456789123456789 20 -> 0 +shlr5621 shiftright 1123456789123456789 21 -> 0 +shlr5622 shiftright 1123456789123456789 22 -> 0 +shlr5623 shiftright 1123456789123456789 23 -> 0 +shlr5624 shiftright 1123456789123456789 24 -> 0 +shlr5625 shiftright 1123456789123456789 25 -> 0 +shlr5626 shiftright 1123456789123456789 26 -> 0 +shlr5627 shiftright 1123456789123456789 27 -> 0 +shlr5628 shiftright 1123456789123456789 28 -> 0 +shlr5629 shiftright 1123456789123456789 29 -> 0 +shlr5630 shiftright 1123456789123456789 30 -> 0 +shlr5631 shiftright 1123456789123456789 31 -> 0 +shlr5632 shiftright 1123456789123456789 32 -> 0 +shlr5633 shiftright 1123456789123456789 33 -> 0 +shlr5634 shiftright 1123456789123456789 34 -> 0 +shlr5635 shiftright 1123456789123456789 35 -> 0 +shlr5636 shiftright 1123456789123456789 36 -> 0 +shlr5637 shiftright 1123456789123456789 37 -> 0 +shlr5638 shiftright 1123456789123456789 38 -> 0 +shlr5639 shiftright 1123456789123456789 39 -> 0 +shlr5640 shiftright 1123456789123456789 40 -> 0 +shlr5641 shiftright 1123456789123456789 41 -> 0 +shlr5642 shiftright 1123456789123456789 42 -> 0 +shlr5643 shiftright 1123456789123456789 43 -> 0 +shlr5644 shiftright 1123456789123456789 44 -> 0 +shlr5645 shiftright 1123456789123456789 45 -> 0 +shlr5646 shiftright 1123456789123456789 46 -> 0 +shlr5647 shiftright 1123456789123456789 47 -> 0 +shlr5648 shiftright 1123456789123456789 48 -> 0 +shlr5649 shiftright 1123456789123456789 49 -> 0 +shlr5650 shiftright 1123456789123456789 50 -> 0 +shlr5651 shiftright 1123456789123456789 51 -> 0 +shlr5652 shiftright 1123456789123456789 52 -> 0 +shlr5653 shiftright 1123456789123456789 53 -> 0 +shlr5654 shiftright 1123456789123456789 54 -> 0 +shlr5655 shiftright 1123456789123456789 55 -> 0 +shlr5656 shiftright 1123456789123456789 56 -> 0 +shlr5657 shiftright 1123456789123456789 57 -> 0 +shlr5658 shiftright 1123456789123456789 58 -> 0 +shlr5659 shiftright 1123456789123456789 59 -> 0 +shlr5660 shiftright 1123456789123456789 60 -> 0 +shlr5661 shiftright 1123456789123456789 61 -> 0 +shlr5662 shiftright 1123456789123456789 62 -> 0 +shlr5663 shiftright 1123456789123456789 63 -> 0 +shlr5664 shiftright 1123456789123456789 64 -> 0 +shlr5665 shiftright 1123456789123456789 65 -> 0 +shlr5666 shiftright 1123456789123456789 66 -> 0 +shlr5667 shiftright 1123456789123456789 67 -> 0 +shlr5668 shiftright 1123456789123456789 68 -> 0 +shlr5669 shiftright 1123456789123456789 69 -> 0 +shlr5670 shiftright 1123456789123456789 70 -> 0 +shlr5671 shiftright 1123456789123456789 71 -> 0 +shlr5672 shiftright 1123456789123456789 72 -> 0 +shlr5673 shiftright 1123456789123456789 73 -> 0 +shlr5674 shiftright 1123456789123456789 74 -> 0 +shlr5675 shiftright 1123456789123456789 75 -> 0 +shlr5676 shiftright 1123456789123456789 76 -> 0 +shlr5677 shiftright 1123456789123456789 77 -> 0 +shlr5678 shiftright 1123456789123456789 78 -> 0 +shlr5679 shiftright 1123456789123456789 79 -> 0 +shlr5680 shiftright 1123456789123456789 80 -> 0 +shlr5681 shiftright 1123456789123456789 81 -> 0 +shlr5682 shiftright 1123456789123456789 82 -> 0 +shlr5683 shiftright 1123456789123456789 83 -> 0 +shlr5684 shiftright 1123456789123456789 84 -> 0 +shlr5685 shiftright 1123456789123456789 85 -> 0 +shlr5686 shiftright 1123456789123456789 86 -> 0 +shlr5687 shiftright 1123456789123456789 87 -> 0 +shlr5688 shiftright 1123456789123456789 88 -> 0 +shlr5689 shiftright 1123456789123456789 89 -> 0 +shlr5690 shiftright 1123456789123456789 90 -> 0 +shlr5691 shiftright 1123456789123456789 91 -> 0 +shlr5692 shiftright 1123456789123456789 92 -> 0 +shlr5693 shiftright 1123456789123456789 93 -> 0 +shlr5694 shiftright 1123456789123456789 94 -> 0 +shlr5695 shiftright 1123456789123456789 95 -> 0 +shlr5696 shiftright 1123456789123456789 96 -> 0 +shlr5697 shiftright 1123456789123456789 97 -> 0 +shlr5698 shiftright 1123456789123456789 98 -> 0 +shlr5699 shiftright 1123456789123456789 99 -> 0 +shlr5700 shiftright 12123456789123456789 0 -> 12123456789123456789 +shlr5701 shiftright 12123456789123456789 1 -> 1212345678912345678 +shlr5702 shiftright 12123456789123456789 2 -> 121234567891234567 +shlr5703 shiftright 12123456789123456789 3 -> 12123456789123456 +shlr5704 shiftright 12123456789123456789 4 -> 1212345678912345 +shlr5705 shiftright 12123456789123456789 5 -> 121234567891234 +shlr5706 shiftright 12123456789123456789 6 -> 12123456789123 +shlr5707 shiftright 12123456789123456789 7 -> 1212345678912 +shlr5708 shiftright 12123456789123456789 8 -> 121234567891 +shlr5709 shiftright 12123456789123456789 9 -> 12123456789 +shlr5710 shiftright 12123456789123456789 10 -> 1212345678 +shlr5711 shiftright 12123456789123456789 11 -> 121234567 +shlr5712 shiftright 12123456789123456789 12 -> 12123456 +shlr5713 shiftright 12123456789123456789 13 -> 1212345 +shlr5714 shiftright 12123456789123456789 14 -> 121234 +shlr5715 shiftright 12123456789123456789 15 -> 12123 +shlr5716 shiftright 12123456789123456789 16 -> 1212 +shlr5717 shiftright 12123456789123456789 17 -> 121 +shlr5718 shiftright 12123456789123456789 18 -> 12 +shlr5719 shiftright 12123456789123456789 19 -> 1 +shlr5720 shiftright 12123456789123456789 20 -> 0 +shlr5721 shiftright 12123456789123456789 21 -> 0 +shlr5722 shiftright 12123456789123456789 22 -> 0 +shlr5723 shiftright 12123456789123456789 23 -> 0 +shlr5724 shiftright 12123456789123456789 24 -> 0 +shlr5725 shiftright 12123456789123456789 25 -> 0 +shlr5726 shiftright 12123456789123456789 26 -> 0 +shlr5727 shiftright 12123456789123456789 27 -> 0 +shlr5728 shiftright 12123456789123456789 28 -> 0 +shlr5729 shiftright 12123456789123456789 29 -> 0 +shlr5730 shiftright 12123456789123456789 30 -> 0 +shlr5731 shiftright 12123456789123456789 31 -> 0 +shlr5732 shiftright 12123456789123456789 32 -> 0 +shlr5733 shiftright 12123456789123456789 33 -> 0 +shlr5734 shiftright 12123456789123456789 34 -> 0 +shlr5735 shiftright 12123456789123456789 35 -> 0 +shlr5736 shiftright 12123456789123456789 36 -> 0 +shlr5737 shiftright 12123456789123456789 37 -> 0 +shlr5738 shiftright 12123456789123456789 38 -> 0 +shlr5739 shiftright 12123456789123456789 39 -> 0 +shlr5740 shiftright 12123456789123456789 40 -> 0 +shlr5741 shiftright 12123456789123456789 41 -> 0 +shlr5742 shiftright 12123456789123456789 42 -> 0 +shlr5743 shiftright 12123456789123456789 43 -> 0 +shlr5744 shiftright 12123456789123456789 44 -> 0 +shlr5745 shiftright 12123456789123456789 45 -> 0 +shlr5746 shiftright 12123456789123456789 46 -> 0 +shlr5747 shiftright 12123456789123456789 47 -> 0 +shlr5748 shiftright 12123456789123456789 48 -> 0 +shlr5749 shiftright 12123456789123456789 49 -> 0 +shlr5750 shiftright 12123456789123456789 50 -> 0 +shlr5751 shiftright 12123456789123456789 51 -> 0 +shlr5752 shiftright 12123456789123456789 52 -> 0 +shlr5753 shiftright 12123456789123456789 53 -> 0 +shlr5754 shiftright 12123456789123456789 54 -> 0 +shlr5755 shiftright 12123456789123456789 55 -> 0 +shlr5756 shiftright 12123456789123456789 56 -> 0 +shlr5757 shiftright 12123456789123456789 57 -> 0 +shlr5758 shiftright 12123456789123456789 58 -> 0 +shlr5759 shiftright 12123456789123456789 59 -> 0 +shlr5760 shiftright 12123456789123456789 60 -> 0 +shlr5761 shiftright 12123456789123456789 61 -> 0 +shlr5762 shiftright 12123456789123456789 62 -> 0 +shlr5763 shiftright 12123456789123456789 63 -> 0 +shlr5764 shiftright 12123456789123456789 64 -> 0 +shlr5765 shiftright 12123456789123456789 65 -> 0 +shlr5766 shiftright 12123456789123456789 66 -> 0 +shlr5767 shiftright 12123456789123456789 67 -> 0 +shlr5768 shiftright 12123456789123456789 68 -> 0 +shlr5769 shiftright 12123456789123456789 69 -> 0 +shlr5770 shiftright 12123456789123456789 70 -> 0 +shlr5771 shiftright 12123456789123456789 71 -> 0 +shlr5772 shiftright 12123456789123456789 72 -> 0 +shlr5773 shiftright 12123456789123456789 73 -> 0 +shlr5774 shiftright 12123456789123456789 74 -> 0 +shlr5775 shiftright 12123456789123456789 75 -> 0 +shlr5776 shiftright 12123456789123456789 76 -> 0 +shlr5777 shiftright 12123456789123456789 77 -> 0 +shlr5778 shiftright 12123456789123456789 78 -> 0 +shlr5779 shiftright 12123456789123456789 79 -> 0 +shlr5780 shiftright 12123456789123456789 80 -> 0 +shlr5781 shiftright 12123456789123456789 81 -> 0 +shlr5782 shiftright 12123456789123456789 82 -> 0 +shlr5783 shiftright 12123456789123456789 83 -> 0 +shlr5784 shiftright 12123456789123456789 84 -> 0 +shlr5785 shiftright 12123456789123456789 85 -> 0 +shlr5786 shiftright 12123456789123456789 86 -> 0 +shlr5787 shiftright 12123456789123456789 87 -> 0 +shlr5788 shiftright 12123456789123456789 88 -> 0 +shlr5789 shiftright 12123456789123456789 89 -> 0 +shlr5790 shiftright 12123456789123456789 90 -> 0 +shlr5791 shiftright 12123456789123456789 91 -> 0 +shlr5792 shiftright 12123456789123456789 92 -> 0 +shlr5793 shiftright 12123456789123456789 93 -> 0 +shlr5794 shiftright 12123456789123456789 94 -> 0 +shlr5795 shiftright 12123456789123456789 95 -> 0 +shlr5796 shiftright 12123456789123456789 96 -> 0 +shlr5797 shiftright 12123456789123456789 97 -> 0 +shlr5798 shiftright 12123456789123456789 98 -> 0 +shlr5799 shiftright 12123456789123456789 99 -> 0 +shlr5800 shiftright 123123456789123456789 0 -> 123123456789123456789 +shlr5801 shiftright 123123456789123456789 1 -> 12312345678912345678 +shlr5802 shiftright 123123456789123456789 2 -> 1231234567891234567 +shlr5803 shiftright 123123456789123456789 3 -> 123123456789123456 +shlr5804 shiftright 123123456789123456789 4 -> 12312345678912345 +shlr5805 shiftright 123123456789123456789 5 -> 1231234567891234 +shlr5806 shiftright 123123456789123456789 6 -> 123123456789123 +shlr5807 shiftright 123123456789123456789 7 -> 12312345678912 +shlr5808 shiftright 123123456789123456789 8 -> 1231234567891 +shlr5809 shiftright 123123456789123456789 9 -> 123123456789 +shlr5810 shiftright 123123456789123456789 10 -> 12312345678 +shlr5811 shiftright 123123456789123456789 11 -> 1231234567 +shlr5812 shiftright 123123456789123456789 12 -> 123123456 +shlr5813 shiftright 123123456789123456789 13 -> 12312345 +shlr5814 shiftright 123123456789123456789 14 -> 1231234 +shlr5815 shiftright 123123456789123456789 15 -> 123123 +shlr5816 shiftright 123123456789123456789 16 -> 12312 +shlr5817 shiftright 123123456789123456789 17 -> 1231 +shlr5818 shiftright 123123456789123456789 18 -> 123 +shlr5819 shiftright 123123456789123456789 19 -> 12 +shlr5820 shiftright 123123456789123456789 20 -> 1 +shlr5821 shiftright 123123456789123456789 21 -> 0 +shlr5822 shiftright 123123456789123456789 22 -> 0 +shlr5823 shiftright 123123456789123456789 23 -> 0 +shlr5824 shiftright 123123456789123456789 24 -> 0 +shlr5825 shiftright 123123456789123456789 25 -> 0 +shlr5826 shiftright 123123456789123456789 26 -> 0 +shlr5827 shiftright 123123456789123456789 27 -> 0 +shlr5828 shiftright 123123456789123456789 28 -> 0 +shlr5829 shiftright 123123456789123456789 29 -> 0 +shlr5830 shiftright 123123456789123456789 30 -> 0 +shlr5831 shiftright 123123456789123456789 31 -> 0 +shlr5832 shiftright 123123456789123456789 32 -> 0 +shlr5833 shiftright 123123456789123456789 33 -> 0 +shlr5834 shiftright 123123456789123456789 34 -> 0 +shlr5835 shiftright 123123456789123456789 35 -> 0 +shlr5836 shiftright 123123456789123456789 36 -> 0 +shlr5837 shiftright 123123456789123456789 37 -> 0 +shlr5838 shiftright 123123456789123456789 38 -> 0 +shlr5839 shiftright 123123456789123456789 39 -> 0 +shlr5840 shiftright 123123456789123456789 40 -> 0 +shlr5841 shiftright 123123456789123456789 41 -> 0 +shlr5842 shiftright 123123456789123456789 42 -> 0 +shlr5843 shiftright 123123456789123456789 43 -> 0 +shlr5844 shiftright 123123456789123456789 44 -> 0 +shlr5845 shiftright 123123456789123456789 45 -> 0 +shlr5846 shiftright 123123456789123456789 46 -> 0 +shlr5847 shiftright 123123456789123456789 47 -> 0 +shlr5848 shiftright 123123456789123456789 48 -> 0 +shlr5849 shiftright 123123456789123456789 49 -> 0 +shlr5850 shiftright 123123456789123456789 50 -> 0 +shlr5851 shiftright 123123456789123456789 51 -> 0 +shlr5852 shiftright 123123456789123456789 52 -> 0 +shlr5853 shiftright 123123456789123456789 53 -> 0 +shlr5854 shiftright 123123456789123456789 54 -> 0 +shlr5855 shiftright 123123456789123456789 55 -> 0 +shlr5856 shiftright 123123456789123456789 56 -> 0 +shlr5857 shiftright 123123456789123456789 57 -> 0 +shlr5858 shiftright 123123456789123456789 58 -> 0 +shlr5859 shiftright 123123456789123456789 59 -> 0 +shlr5860 shiftright 123123456789123456789 60 -> 0 +shlr5861 shiftright 123123456789123456789 61 -> 0 +shlr5862 shiftright 123123456789123456789 62 -> 0 +shlr5863 shiftright 123123456789123456789 63 -> 0 +shlr5864 shiftright 123123456789123456789 64 -> 0 +shlr5865 shiftright 123123456789123456789 65 -> 0 +shlr5866 shiftright 123123456789123456789 66 -> 0 +shlr5867 shiftright 123123456789123456789 67 -> 0 +shlr5868 shiftright 123123456789123456789 68 -> 0 +shlr5869 shiftright 123123456789123456789 69 -> 0 +shlr5870 shiftright 123123456789123456789 70 -> 0 +shlr5871 shiftright 123123456789123456789 71 -> 0 +shlr5872 shiftright 123123456789123456789 72 -> 0 +shlr5873 shiftright 123123456789123456789 73 -> 0 +shlr5874 shiftright 123123456789123456789 74 -> 0 +shlr5875 shiftright 123123456789123456789 75 -> 0 +shlr5876 shiftright 123123456789123456789 76 -> 0 +shlr5877 shiftright 123123456789123456789 77 -> 0 +shlr5878 shiftright 123123456789123456789 78 -> 0 +shlr5879 shiftright 123123456789123456789 79 -> 0 +shlr5880 shiftright 123123456789123456789 80 -> 0 +shlr5881 shiftright 123123456789123456789 81 -> 0 +shlr5882 shiftright 123123456789123456789 82 -> 0 +shlr5883 shiftright 123123456789123456789 83 -> 0 +shlr5884 shiftright 123123456789123456789 84 -> 0 +shlr5885 shiftright 123123456789123456789 85 -> 0 +shlr5886 shiftright 123123456789123456789 86 -> 0 +shlr5887 shiftright 123123456789123456789 87 -> 0 +shlr5888 shiftright 123123456789123456789 88 -> 0 +shlr5889 shiftright 123123456789123456789 89 -> 0 +shlr5890 shiftright 123123456789123456789 90 -> 0 +shlr5891 shiftright 123123456789123456789 91 -> 0 +shlr5892 shiftright 123123456789123456789 92 -> 0 +shlr5893 shiftright 123123456789123456789 93 -> 0 +shlr5894 shiftright 123123456789123456789 94 -> 0 +shlr5895 shiftright 123123456789123456789 95 -> 0 +shlr5896 shiftright 123123456789123456789 96 -> 0 +shlr5897 shiftright 123123456789123456789 97 -> 0 +shlr5898 shiftright 123123456789123456789 98 -> 0 +shlr5899 shiftright 123123456789123456789 99 -> 0 +shlr5900 shiftright 1234123456789123456789 0 -> 1234123456789123456789 +shlr5901 shiftright 1234123456789123456789 1 -> 123412345678912345678 +shlr5902 shiftright 1234123456789123456789 2 -> 12341234567891234567 +shlr5903 shiftright 1234123456789123456789 3 -> 1234123456789123456 +shlr5904 shiftright 1234123456789123456789 4 -> 123412345678912345 +shlr5905 shiftright 1234123456789123456789 5 -> 12341234567891234 +shlr5906 shiftright 1234123456789123456789 6 -> 1234123456789123 +shlr5907 shiftright 1234123456789123456789 7 -> 123412345678912 +shlr5908 shiftright 1234123456789123456789 8 -> 12341234567891 +shlr5909 shiftright 1234123456789123456789 9 -> 1234123456789 +shlr5910 shiftright 1234123456789123456789 10 -> 123412345678 +shlr5911 shiftright 1234123456789123456789 11 -> 12341234567 +shlr5912 shiftright 1234123456789123456789 12 -> 1234123456 +shlr5913 shiftright 1234123456789123456789 13 -> 123412345 +shlr5914 shiftright 1234123456789123456789 14 -> 12341234 +shlr5915 shiftright 1234123456789123456789 15 -> 1234123 +shlr5916 shiftright 1234123456789123456789 16 -> 123412 +shlr5917 shiftright 1234123456789123456789 17 -> 12341 +shlr5918 shiftright 1234123456789123456789 18 -> 1234 +shlr5919 shiftright 1234123456789123456789 19 -> 123 +shlr5920 shiftright 1234123456789123456789 20 -> 12 +shlr5921 shiftright 1234123456789123456789 21 -> 1 +shlr5922 shiftright 1234123456789123456789 22 -> 0 +shlr5923 shiftright 1234123456789123456789 23 -> 0 +shlr5924 shiftright 1234123456789123456789 24 -> 0 +shlr5925 shiftright 1234123456789123456789 25 -> 0 +shlr5926 shiftright 1234123456789123456789 26 -> 0 +shlr5927 shiftright 1234123456789123456789 27 -> 0 +shlr5928 shiftright 1234123456789123456789 28 -> 0 +shlr5929 shiftright 1234123456789123456789 29 -> 0 +shlr5930 shiftright 1234123456789123456789 30 -> 0 +shlr5931 shiftright 1234123456789123456789 31 -> 0 +shlr5932 shiftright 1234123456789123456789 32 -> 0 +shlr5933 shiftright 1234123456789123456789 33 -> 0 +shlr5934 shiftright 1234123456789123456789 34 -> 0 +shlr5935 shiftright 1234123456789123456789 35 -> 0 +shlr5936 shiftright 1234123456789123456789 36 -> 0 +shlr5937 shiftright 1234123456789123456789 37 -> 0 +shlr5938 shiftright 1234123456789123456789 38 -> 0 +shlr5939 shiftright 1234123456789123456789 39 -> 0 +shlr5940 shiftright 1234123456789123456789 40 -> 0 +shlr5941 shiftright 1234123456789123456789 41 -> 0 +shlr5942 shiftright 1234123456789123456789 42 -> 0 +shlr5943 shiftright 1234123456789123456789 43 -> 0 +shlr5944 shiftright 1234123456789123456789 44 -> 0 +shlr5945 shiftright 1234123456789123456789 45 -> 0 +shlr5946 shiftright 1234123456789123456789 46 -> 0 +shlr5947 shiftright 1234123456789123456789 47 -> 0 +shlr5948 shiftright 1234123456789123456789 48 -> 0 +shlr5949 shiftright 1234123456789123456789 49 -> 0 +shlr5950 shiftright 1234123456789123456789 50 -> 0 +shlr5951 shiftright 1234123456789123456789 51 -> 0 +shlr5952 shiftright 1234123456789123456789 52 -> 0 +shlr5953 shiftright 1234123456789123456789 53 -> 0 +shlr5954 shiftright 1234123456789123456789 54 -> 0 +shlr5955 shiftright 1234123456789123456789 55 -> 0 +shlr5956 shiftright 1234123456789123456789 56 -> 0 +shlr5957 shiftright 1234123456789123456789 57 -> 0 +shlr5958 shiftright 1234123456789123456789 58 -> 0 +shlr5959 shiftright 1234123456789123456789 59 -> 0 +shlr5960 shiftright 1234123456789123456789 60 -> 0 +shlr5961 shiftright 1234123456789123456789 61 -> 0 +shlr5962 shiftright 1234123456789123456789 62 -> 0 +shlr5963 shiftright 1234123456789123456789 63 -> 0 +shlr5964 shiftright 1234123456789123456789 64 -> 0 +shlr5965 shiftright 1234123456789123456789 65 -> 0 +shlr5966 shiftright 1234123456789123456789 66 -> 0 +shlr5967 shiftright 1234123456789123456789 67 -> 0 +shlr5968 shiftright 1234123456789123456789 68 -> 0 +shlr5969 shiftright 1234123456789123456789 69 -> 0 +shlr5970 shiftright 1234123456789123456789 70 -> 0 +shlr5971 shiftright 1234123456789123456789 71 -> 0 +shlr5972 shiftright 1234123456789123456789 72 -> 0 +shlr5973 shiftright 1234123456789123456789 73 -> 0 +shlr5974 shiftright 1234123456789123456789 74 -> 0 +shlr5975 shiftright 1234123456789123456789 75 -> 0 +shlr5976 shiftright 1234123456789123456789 76 -> 0 +shlr5977 shiftright 1234123456789123456789 77 -> 0 +shlr5978 shiftright 1234123456789123456789 78 -> 0 +shlr5979 shiftright 1234123456789123456789 79 -> 0 +shlr5980 shiftright 1234123456789123456789 80 -> 0 +shlr5981 shiftright 1234123456789123456789 81 -> 0 +shlr5982 shiftright 1234123456789123456789 82 -> 0 +shlr5983 shiftright 1234123456789123456789 83 -> 0 +shlr5984 shiftright 1234123456789123456789 84 -> 0 +shlr5985 shiftright 1234123456789123456789 85 -> 0 +shlr5986 shiftright 1234123456789123456789 86 -> 0 +shlr5987 shiftright 1234123456789123456789 87 -> 0 +shlr5988 shiftright 1234123456789123456789 88 -> 0 +shlr5989 shiftright 1234123456789123456789 89 -> 0 +shlr5990 shiftright 1234123456789123456789 90 -> 0 +shlr5991 shiftright 1234123456789123456789 91 -> 0 +shlr5992 shiftright 1234123456789123456789 92 -> 0 +shlr5993 shiftright 1234123456789123456789 93 -> 0 +shlr5994 shiftright 1234123456789123456789 94 -> 0 +shlr5995 shiftright 1234123456789123456789 95 -> 0 +shlr5996 shiftright 1234123456789123456789 96 -> 0 +shlr5997 shiftright 1234123456789123456789 97 -> 0 +shlr5998 shiftright 1234123456789123456789 98 -> 0 +shlr5999 shiftright 1234123456789123456789 99 -> 0 +shlr6000 shiftright 12345123456789123456789 0 -> 12345123456789123456789 +shlr6001 shiftright 12345123456789123456789 1 -> 1234512345678912345678 +shlr6002 shiftright 12345123456789123456789 2 -> 123451234567891234567 +shlr6003 shiftright 12345123456789123456789 3 -> 12345123456789123456 +shlr6004 shiftright 12345123456789123456789 4 -> 1234512345678912345 +shlr6005 shiftright 12345123456789123456789 5 -> 123451234567891234 +shlr6006 shiftright 12345123456789123456789 6 -> 12345123456789123 +shlr6007 shiftright 12345123456789123456789 7 -> 1234512345678912 +shlr6008 shiftright 12345123456789123456789 8 -> 123451234567891 +shlr6009 shiftright 12345123456789123456789 9 -> 12345123456789 +shlr6010 shiftright 12345123456789123456789 10 -> 1234512345678 +shlr6011 shiftright 12345123456789123456789 11 -> 123451234567 +shlr6012 shiftright 12345123456789123456789 12 -> 12345123456 +shlr6013 shiftright 12345123456789123456789 13 -> 1234512345 +shlr6014 shiftright 12345123456789123456789 14 -> 123451234 +shlr6015 shiftright 12345123456789123456789 15 -> 12345123 +shlr6016 shiftright 12345123456789123456789 16 -> 1234512 +shlr6017 shiftright 12345123456789123456789 17 -> 123451 +shlr6018 shiftright 12345123456789123456789 18 -> 12345 +shlr6019 shiftright 12345123456789123456789 19 -> 1234 +shlr6020 shiftright 12345123456789123456789 20 -> 123 +shlr6021 shiftright 12345123456789123456789 21 -> 12 +shlr6022 shiftright 12345123456789123456789 22 -> 1 +shlr6023 shiftright 12345123456789123456789 23 -> 0 +shlr6024 shiftright 12345123456789123456789 24 -> 0 +shlr6025 shiftright 12345123456789123456789 25 -> 0 +shlr6026 shiftright 12345123456789123456789 26 -> 0 +shlr6027 shiftright 12345123456789123456789 27 -> 0 +shlr6028 shiftright 12345123456789123456789 28 -> 0 +shlr6029 shiftright 12345123456789123456789 29 -> 0 +shlr6030 shiftright 12345123456789123456789 30 -> 0 +shlr6031 shiftright 12345123456789123456789 31 -> 0 +shlr6032 shiftright 12345123456789123456789 32 -> 0 +shlr6033 shiftright 12345123456789123456789 33 -> 0 +shlr6034 shiftright 12345123456789123456789 34 -> 0 +shlr6035 shiftright 12345123456789123456789 35 -> 0 +shlr6036 shiftright 12345123456789123456789 36 -> 0 +shlr6037 shiftright 12345123456789123456789 37 -> 0 +shlr6038 shiftright 12345123456789123456789 38 -> 0 +shlr6039 shiftright 12345123456789123456789 39 -> 0 +shlr6040 shiftright 12345123456789123456789 40 -> 0 +shlr6041 shiftright 12345123456789123456789 41 -> 0 +shlr6042 shiftright 12345123456789123456789 42 -> 0 +shlr6043 shiftright 12345123456789123456789 43 -> 0 +shlr6044 shiftright 12345123456789123456789 44 -> 0 +shlr6045 shiftright 12345123456789123456789 45 -> 0 +shlr6046 shiftright 12345123456789123456789 46 -> 0 +shlr6047 shiftright 12345123456789123456789 47 -> 0 +shlr6048 shiftright 12345123456789123456789 48 -> 0 +shlr6049 shiftright 12345123456789123456789 49 -> 0 +shlr6050 shiftright 12345123456789123456789 50 -> 0 +shlr6051 shiftright 12345123456789123456789 51 -> 0 +shlr6052 shiftright 12345123456789123456789 52 -> 0 +shlr6053 shiftright 12345123456789123456789 53 -> 0 +shlr6054 shiftright 12345123456789123456789 54 -> 0 +shlr6055 shiftright 12345123456789123456789 55 -> 0 +shlr6056 shiftright 12345123456789123456789 56 -> 0 +shlr6057 shiftright 12345123456789123456789 57 -> 0 +shlr6058 shiftright 12345123456789123456789 58 -> 0 +shlr6059 shiftright 12345123456789123456789 59 -> 0 +shlr6060 shiftright 12345123456789123456789 60 -> 0 +shlr6061 shiftright 12345123456789123456789 61 -> 0 +shlr6062 shiftright 12345123456789123456789 62 -> 0 +shlr6063 shiftright 12345123456789123456789 63 -> 0 +shlr6064 shiftright 12345123456789123456789 64 -> 0 +shlr6065 shiftright 12345123456789123456789 65 -> 0 +shlr6066 shiftright 12345123456789123456789 66 -> 0 +shlr6067 shiftright 12345123456789123456789 67 -> 0 +shlr6068 shiftright 12345123456789123456789 68 -> 0 +shlr6069 shiftright 12345123456789123456789 69 -> 0 +shlr6070 shiftright 12345123456789123456789 70 -> 0 +shlr6071 shiftright 12345123456789123456789 71 -> 0 +shlr6072 shiftright 12345123456789123456789 72 -> 0 +shlr6073 shiftright 12345123456789123456789 73 -> 0 +shlr6074 shiftright 12345123456789123456789 74 -> 0 +shlr6075 shiftright 12345123456789123456789 75 -> 0 +shlr6076 shiftright 12345123456789123456789 76 -> 0 +shlr6077 shiftright 12345123456789123456789 77 -> 0 +shlr6078 shiftright 12345123456789123456789 78 -> 0 +shlr6079 shiftright 12345123456789123456789 79 -> 0 +shlr6080 shiftright 12345123456789123456789 80 -> 0 +shlr6081 shiftright 12345123456789123456789 81 -> 0 +shlr6082 shiftright 12345123456789123456789 82 -> 0 +shlr6083 shiftright 12345123456789123456789 83 -> 0 +shlr6084 shiftright 12345123456789123456789 84 -> 0 +shlr6085 shiftright 12345123456789123456789 85 -> 0 +shlr6086 shiftright 12345123456789123456789 86 -> 0 +shlr6087 shiftright 12345123456789123456789 87 -> 0 +shlr6088 shiftright 12345123456789123456789 88 -> 0 +shlr6089 shiftright 12345123456789123456789 89 -> 0 +shlr6090 shiftright 12345123456789123456789 90 -> 0 +shlr6091 shiftright 12345123456789123456789 91 -> 0 +shlr6092 shiftright 12345123456789123456789 92 -> 0 +shlr6093 shiftright 12345123456789123456789 93 -> 0 +shlr6094 shiftright 12345123456789123456789 94 -> 0 +shlr6095 shiftright 12345123456789123456789 95 -> 0 +shlr6096 shiftright 12345123456789123456789 96 -> 0 +shlr6097 shiftright 12345123456789123456789 97 -> 0 +shlr6098 shiftright 12345123456789123456789 98 -> 0 +shlr6099 shiftright 12345123456789123456789 99 -> 0 +shlr6100 shiftright 123456123456789123456789 0 -> 123456123456789123456789 +shlr6101 shiftright 123456123456789123456789 1 -> 12345612345678912345678 +shlr6102 shiftright 123456123456789123456789 2 -> 1234561234567891234567 +shlr6103 shiftright 123456123456789123456789 3 -> 123456123456789123456 +shlr6104 shiftright 123456123456789123456789 4 -> 12345612345678912345 +shlr6105 shiftright 123456123456789123456789 5 -> 1234561234567891234 +shlr6106 shiftright 123456123456789123456789 6 -> 123456123456789123 +shlr6107 shiftright 123456123456789123456789 7 -> 12345612345678912 +shlr6108 shiftright 123456123456789123456789 8 -> 1234561234567891 +shlr6109 shiftright 123456123456789123456789 9 -> 123456123456789 +shlr6110 shiftright 123456123456789123456789 10 -> 12345612345678 +shlr6111 shiftright 123456123456789123456789 11 -> 1234561234567 +shlr6112 shiftright 123456123456789123456789 12 -> 123456123456 +shlr6113 shiftright 123456123456789123456789 13 -> 12345612345 +shlr6114 shiftright 123456123456789123456789 14 -> 1234561234 +shlr6115 shiftright 123456123456789123456789 15 -> 123456123 +shlr6116 shiftright 123456123456789123456789 16 -> 12345612 +shlr6117 shiftright 123456123456789123456789 17 -> 1234561 +shlr6118 shiftright 123456123456789123456789 18 -> 123456 +shlr6119 shiftright 123456123456789123456789 19 -> 12345 +shlr6120 shiftright 123456123456789123456789 20 -> 1234 +shlr6121 shiftright 123456123456789123456789 21 -> 123 +shlr6122 shiftright 123456123456789123456789 22 -> 12 +shlr6123 shiftright 123456123456789123456789 23 -> 1 +shlr6124 shiftright 123456123456789123456789 24 -> 0 +shlr6125 shiftright 123456123456789123456789 25 -> 0 +shlr6126 shiftright 123456123456789123456789 26 -> 0 +shlr6127 shiftright 123456123456789123456789 27 -> 0 +shlr6128 shiftright 123456123456789123456789 28 -> 0 +shlr6129 shiftright 123456123456789123456789 29 -> 0 +shlr6130 shiftright 123456123456789123456789 30 -> 0 +shlr6131 shiftright 123456123456789123456789 31 -> 0 +shlr6132 shiftright 123456123456789123456789 32 -> 0 +shlr6133 shiftright 123456123456789123456789 33 -> 0 +shlr6134 shiftright 123456123456789123456789 34 -> 0 +shlr6135 shiftright 123456123456789123456789 35 -> 0 +shlr6136 shiftright 123456123456789123456789 36 -> 0 +shlr6137 shiftright 123456123456789123456789 37 -> 0 +shlr6138 shiftright 123456123456789123456789 38 -> 0 +shlr6139 shiftright 123456123456789123456789 39 -> 0 +shlr6140 shiftright 123456123456789123456789 40 -> 0 +shlr6141 shiftright 123456123456789123456789 41 -> 0 +shlr6142 shiftright 123456123456789123456789 42 -> 0 +shlr6143 shiftright 123456123456789123456789 43 -> 0 +shlr6144 shiftright 123456123456789123456789 44 -> 0 +shlr6145 shiftright 123456123456789123456789 45 -> 0 +shlr6146 shiftright 123456123456789123456789 46 -> 0 +shlr6147 shiftright 123456123456789123456789 47 -> 0 +shlr6148 shiftright 123456123456789123456789 48 -> 0 +shlr6149 shiftright 123456123456789123456789 49 -> 0 +shlr6150 shiftright 123456123456789123456789 50 -> 0 +shlr6151 shiftright 123456123456789123456789 51 -> 0 +shlr6152 shiftright 123456123456789123456789 52 -> 0 +shlr6153 shiftright 123456123456789123456789 53 -> 0 +shlr6154 shiftright 123456123456789123456789 54 -> 0 +shlr6155 shiftright 123456123456789123456789 55 -> 0 +shlr6156 shiftright 123456123456789123456789 56 -> 0 +shlr6157 shiftright 123456123456789123456789 57 -> 0 +shlr6158 shiftright 123456123456789123456789 58 -> 0 +shlr6159 shiftright 123456123456789123456789 59 -> 0 +shlr6160 shiftright 123456123456789123456789 60 -> 0 +shlr6161 shiftright 123456123456789123456789 61 -> 0 +shlr6162 shiftright 123456123456789123456789 62 -> 0 +shlr6163 shiftright 123456123456789123456789 63 -> 0 +shlr6164 shiftright 123456123456789123456789 64 -> 0 +shlr6165 shiftright 123456123456789123456789 65 -> 0 +shlr6166 shiftright 123456123456789123456789 66 -> 0 +shlr6167 shiftright 123456123456789123456789 67 -> 0 +shlr6168 shiftright 123456123456789123456789 68 -> 0 +shlr6169 shiftright 123456123456789123456789 69 -> 0 +shlr6170 shiftright 123456123456789123456789 70 -> 0 +shlr6171 shiftright 123456123456789123456789 71 -> 0 +shlr6172 shiftright 123456123456789123456789 72 -> 0 +shlr6173 shiftright 123456123456789123456789 73 -> 0 +shlr6174 shiftright 123456123456789123456789 74 -> 0 +shlr6175 shiftright 123456123456789123456789 75 -> 0 +shlr6176 shiftright 123456123456789123456789 76 -> 0 +shlr6177 shiftright 123456123456789123456789 77 -> 0 +shlr6178 shiftright 123456123456789123456789 78 -> 0 +shlr6179 shiftright 123456123456789123456789 79 -> 0 +shlr6180 shiftright 123456123456789123456789 80 -> 0 +shlr6181 shiftright 123456123456789123456789 81 -> 0 +shlr6182 shiftright 123456123456789123456789 82 -> 0 +shlr6183 shiftright 123456123456789123456789 83 -> 0 +shlr6184 shiftright 123456123456789123456789 84 -> 0 +shlr6185 shiftright 123456123456789123456789 85 -> 0 +shlr6186 shiftright 123456123456789123456789 86 -> 0 +shlr6187 shiftright 123456123456789123456789 87 -> 0 +shlr6188 shiftright 123456123456789123456789 88 -> 0 +shlr6189 shiftright 123456123456789123456789 89 -> 0 +shlr6190 shiftright 123456123456789123456789 90 -> 0 +shlr6191 shiftright 123456123456789123456789 91 -> 0 +shlr6192 shiftright 123456123456789123456789 92 -> 0 +shlr6193 shiftright 123456123456789123456789 93 -> 0 +shlr6194 shiftright 123456123456789123456789 94 -> 0 +shlr6195 shiftright 123456123456789123456789 95 -> 0 +shlr6196 shiftright 123456123456789123456789 96 -> 0 +shlr6197 shiftright 123456123456789123456789 97 -> 0 +shlr6198 shiftright 123456123456789123456789 98 -> 0 +shlr6199 shiftright 123456123456789123456789 99 -> 0 +shlr6200 shiftright 1234567123456789123456789 0 -> 1234567123456789123456789 +shlr6201 shiftright 1234567123456789123456789 1 -> 123456712345678912345678 +shlr6202 shiftright 1234567123456789123456789 2 -> 12345671234567891234567 +shlr6203 shiftright 1234567123456789123456789 3 -> 1234567123456789123456 +shlr6204 shiftright 1234567123456789123456789 4 -> 123456712345678912345 +shlr6205 shiftright 1234567123456789123456789 5 -> 12345671234567891234 +shlr6206 shiftright 1234567123456789123456789 6 -> 1234567123456789123 +shlr6207 shiftright 1234567123456789123456789 7 -> 123456712345678912 +shlr6208 shiftright 1234567123456789123456789 8 -> 12345671234567891 +shlr6209 shiftright 1234567123456789123456789 9 -> 1234567123456789 +shlr6210 shiftright 1234567123456789123456789 10 -> 123456712345678 +shlr6211 shiftright 1234567123456789123456789 11 -> 12345671234567 +shlr6212 shiftright 1234567123456789123456789 12 -> 1234567123456 +shlr6213 shiftright 1234567123456789123456789 13 -> 123456712345 +shlr6214 shiftright 1234567123456789123456789 14 -> 12345671234 +shlr6215 shiftright 1234567123456789123456789 15 -> 1234567123 +shlr6216 shiftright 1234567123456789123456789 16 -> 123456712 +shlr6217 shiftright 1234567123456789123456789 17 -> 12345671 +shlr6218 shiftright 1234567123456789123456789 18 -> 1234567 +shlr6219 shiftright 1234567123456789123456789 19 -> 123456 +shlr6220 shiftright 1234567123456789123456789 20 -> 12345 +shlr6221 shiftright 1234567123456789123456789 21 -> 1234 +shlr6222 shiftright 1234567123456789123456789 22 -> 123 +shlr6223 shiftright 1234567123456789123456789 23 -> 12 +shlr6224 shiftright 1234567123456789123456789 24 -> 1 +shlr6225 shiftright 1234567123456789123456789 25 -> 0 +shlr6226 shiftright 1234567123456789123456789 26 -> 0 +shlr6227 shiftright 1234567123456789123456789 27 -> 0 +shlr6228 shiftright 1234567123456789123456789 28 -> 0 +shlr6229 shiftright 1234567123456789123456789 29 -> 0 +shlr6230 shiftright 1234567123456789123456789 30 -> 0 +shlr6231 shiftright 1234567123456789123456789 31 -> 0 +shlr6232 shiftright 1234567123456789123456789 32 -> 0 +shlr6233 shiftright 1234567123456789123456789 33 -> 0 +shlr6234 shiftright 1234567123456789123456789 34 -> 0 +shlr6235 shiftright 1234567123456789123456789 35 -> 0 +shlr6236 shiftright 1234567123456789123456789 36 -> 0 +shlr6237 shiftright 1234567123456789123456789 37 -> 0 +shlr6238 shiftright 1234567123456789123456789 38 -> 0 +shlr6239 shiftright 1234567123456789123456789 39 -> 0 +shlr6240 shiftright 1234567123456789123456789 40 -> 0 +shlr6241 shiftright 1234567123456789123456789 41 -> 0 +shlr6242 shiftright 1234567123456789123456789 42 -> 0 +shlr6243 shiftright 1234567123456789123456789 43 -> 0 +shlr6244 shiftright 1234567123456789123456789 44 -> 0 +shlr6245 shiftright 1234567123456789123456789 45 -> 0 +shlr6246 shiftright 1234567123456789123456789 46 -> 0 +shlr6247 shiftright 1234567123456789123456789 47 -> 0 +shlr6248 shiftright 1234567123456789123456789 48 -> 0 +shlr6249 shiftright 1234567123456789123456789 49 -> 0 +shlr6250 shiftright 1234567123456789123456789 50 -> 0 +shlr6251 shiftright 1234567123456789123456789 51 -> 0 +shlr6252 shiftright 1234567123456789123456789 52 -> 0 +shlr6253 shiftright 1234567123456789123456789 53 -> 0 +shlr6254 shiftright 1234567123456789123456789 54 -> 0 +shlr6255 shiftright 1234567123456789123456789 55 -> 0 +shlr6256 shiftright 1234567123456789123456789 56 -> 0 +shlr6257 shiftright 1234567123456789123456789 57 -> 0 +shlr6258 shiftright 1234567123456789123456789 58 -> 0 +shlr6259 shiftright 1234567123456789123456789 59 -> 0 +shlr6260 shiftright 1234567123456789123456789 60 -> 0 +shlr6261 shiftright 1234567123456789123456789 61 -> 0 +shlr6262 shiftright 1234567123456789123456789 62 -> 0 +shlr6263 shiftright 1234567123456789123456789 63 -> 0 +shlr6264 shiftright 1234567123456789123456789 64 -> 0 +shlr6265 shiftright 1234567123456789123456789 65 -> 0 +shlr6266 shiftright 1234567123456789123456789 66 -> 0 +shlr6267 shiftright 1234567123456789123456789 67 -> 0 +shlr6268 shiftright 1234567123456789123456789 68 -> 0 +shlr6269 shiftright 1234567123456789123456789 69 -> 0 +shlr6270 shiftright 1234567123456789123456789 70 -> 0 +shlr6271 shiftright 1234567123456789123456789 71 -> 0 +shlr6272 shiftright 1234567123456789123456789 72 -> 0 +shlr6273 shiftright 1234567123456789123456789 73 -> 0 +shlr6274 shiftright 1234567123456789123456789 74 -> 0 +shlr6275 shiftright 1234567123456789123456789 75 -> 0 +shlr6276 shiftright 1234567123456789123456789 76 -> 0 +shlr6277 shiftright 1234567123456789123456789 77 -> 0 +shlr6278 shiftright 1234567123456789123456789 78 -> 0 +shlr6279 shiftright 1234567123456789123456789 79 -> 0 +shlr6280 shiftright 1234567123456789123456789 80 -> 0 +shlr6281 shiftright 1234567123456789123456789 81 -> 0 +shlr6282 shiftright 1234567123456789123456789 82 -> 0 +shlr6283 shiftright 1234567123456789123456789 83 -> 0 +shlr6284 shiftright 1234567123456789123456789 84 -> 0 +shlr6285 shiftright 1234567123456789123456789 85 -> 0 +shlr6286 shiftright 1234567123456789123456789 86 -> 0 +shlr6287 shiftright 1234567123456789123456789 87 -> 0 +shlr6288 shiftright 1234567123456789123456789 88 -> 0 +shlr6289 shiftright 1234567123456789123456789 89 -> 0 +shlr6290 shiftright 1234567123456789123456789 90 -> 0 +shlr6291 shiftright 1234567123456789123456789 91 -> 0 +shlr6292 shiftright 1234567123456789123456789 92 -> 0 +shlr6293 shiftright 1234567123456789123456789 93 -> 0 +shlr6294 shiftright 1234567123456789123456789 94 -> 0 +shlr6295 shiftright 1234567123456789123456789 95 -> 0 +shlr6296 shiftright 1234567123456789123456789 96 -> 0 +shlr6297 shiftright 1234567123456789123456789 97 -> 0 +shlr6298 shiftright 1234567123456789123456789 98 -> 0 +shlr6299 shiftright 1234567123456789123456789 99 -> 0 +shlr6300 shiftright 12345678123456789123456789 0 -> 12345678123456789123456789 +shlr6301 shiftright 12345678123456789123456789 1 -> 1234567812345678912345678 +shlr6302 shiftright 12345678123456789123456789 2 -> 123456781234567891234567 +shlr6303 shiftright 12345678123456789123456789 3 -> 12345678123456789123456 +shlr6304 shiftright 12345678123456789123456789 4 -> 1234567812345678912345 +shlr6305 shiftright 12345678123456789123456789 5 -> 123456781234567891234 +shlr6306 shiftright 12345678123456789123456789 6 -> 12345678123456789123 +shlr6307 shiftright 12345678123456789123456789 7 -> 1234567812345678912 +shlr6308 shiftright 12345678123456789123456789 8 -> 123456781234567891 +shlr6309 shiftright 12345678123456789123456789 9 -> 12345678123456789 +shlr6310 shiftright 12345678123456789123456789 10 -> 1234567812345678 +shlr6311 shiftright 12345678123456789123456789 11 -> 123456781234567 +shlr6312 shiftright 12345678123456789123456789 12 -> 12345678123456 +shlr6313 shiftright 12345678123456789123456789 13 -> 1234567812345 +shlr6314 shiftright 12345678123456789123456789 14 -> 123456781234 +shlr6315 shiftright 12345678123456789123456789 15 -> 12345678123 +shlr6316 shiftright 12345678123456789123456789 16 -> 1234567812 +shlr6317 shiftright 12345678123456789123456789 17 -> 123456781 +shlr6318 shiftright 12345678123456789123456789 18 -> 12345678 +shlr6319 shiftright 12345678123456789123456789 19 -> 1234567 +shlr6320 shiftright 12345678123456789123456789 20 -> 123456 +shlr6321 shiftright 12345678123456789123456789 21 -> 12345 +shlr6322 shiftright 12345678123456789123456789 22 -> 1234 +shlr6323 shiftright 12345678123456789123456789 23 -> 123 +shlr6324 shiftright 12345678123456789123456789 24 -> 12 +shlr6325 shiftright 12345678123456789123456789 25 -> 1 +shlr6326 shiftright 12345678123456789123456789 26 -> 0 +shlr6327 shiftright 12345678123456789123456789 27 -> 0 +shlr6328 shiftright 12345678123456789123456789 28 -> 0 +shlr6329 shiftright 12345678123456789123456789 29 -> 0 +shlr6330 shiftright 12345678123456789123456789 30 -> 0 +shlr6331 shiftright 12345678123456789123456789 31 -> 0 +shlr6332 shiftright 12345678123456789123456789 32 -> 0 +shlr6333 shiftright 12345678123456789123456789 33 -> 0 +shlr6334 shiftright 12345678123456789123456789 34 -> 0 +shlr6335 shiftright 12345678123456789123456789 35 -> 0 +shlr6336 shiftright 12345678123456789123456789 36 -> 0 +shlr6337 shiftright 12345678123456789123456789 37 -> 0 +shlr6338 shiftright 12345678123456789123456789 38 -> 0 +shlr6339 shiftright 12345678123456789123456789 39 -> 0 +shlr6340 shiftright 12345678123456789123456789 40 -> 0 +shlr6341 shiftright 12345678123456789123456789 41 -> 0 +shlr6342 shiftright 12345678123456789123456789 42 -> 0 +shlr6343 shiftright 12345678123456789123456789 43 -> 0 +shlr6344 shiftright 12345678123456789123456789 44 -> 0 +shlr6345 shiftright 12345678123456789123456789 45 -> 0 +shlr6346 shiftright 12345678123456789123456789 46 -> 0 +shlr6347 shiftright 12345678123456789123456789 47 -> 0 +shlr6348 shiftright 12345678123456789123456789 48 -> 0 +shlr6349 shiftright 12345678123456789123456789 49 -> 0 +shlr6350 shiftright 12345678123456789123456789 50 -> 0 +shlr6351 shiftright 12345678123456789123456789 51 -> 0 +shlr6352 shiftright 12345678123456789123456789 52 -> 0 +shlr6353 shiftright 12345678123456789123456789 53 -> 0 +shlr6354 shiftright 12345678123456789123456789 54 -> 0 +shlr6355 shiftright 12345678123456789123456789 55 -> 0 +shlr6356 shiftright 12345678123456789123456789 56 -> 0 +shlr6357 shiftright 12345678123456789123456789 57 -> 0 +shlr6358 shiftright 12345678123456789123456789 58 -> 0 +shlr6359 shiftright 12345678123456789123456789 59 -> 0 +shlr6360 shiftright 12345678123456789123456789 60 -> 0 +shlr6361 shiftright 12345678123456789123456789 61 -> 0 +shlr6362 shiftright 12345678123456789123456789 62 -> 0 +shlr6363 shiftright 12345678123456789123456789 63 -> 0 +shlr6364 shiftright 12345678123456789123456789 64 -> 0 +shlr6365 shiftright 12345678123456789123456789 65 -> 0 +shlr6366 shiftright 12345678123456789123456789 66 -> 0 +shlr6367 shiftright 12345678123456789123456789 67 -> 0 +shlr6368 shiftright 12345678123456789123456789 68 -> 0 +shlr6369 shiftright 12345678123456789123456789 69 -> 0 +shlr6370 shiftright 12345678123456789123456789 70 -> 0 +shlr6371 shiftright 12345678123456789123456789 71 -> 0 +shlr6372 shiftright 12345678123456789123456789 72 -> 0 +shlr6373 shiftright 12345678123456789123456789 73 -> 0 +shlr6374 shiftright 12345678123456789123456789 74 -> 0 +shlr6375 shiftright 12345678123456789123456789 75 -> 0 +shlr6376 shiftright 12345678123456789123456789 76 -> 0 +shlr6377 shiftright 12345678123456789123456789 77 -> 0 +shlr6378 shiftright 12345678123456789123456789 78 -> 0 +shlr6379 shiftright 12345678123456789123456789 79 -> 0 +shlr6380 shiftright 12345678123456789123456789 80 -> 0 +shlr6381 shiftright 12345678123456789123456789 81 -> 0 +shlr6382 shiftright 12345678123456789123456789 82 -> 0 +shlr6383 shiftright 12345678123456789123456789 83 -> 0 +shlr6384 shiftright 12345678123456789123456789 84 -> 0 +shlr6385 shiftright 12345678123456789123456789 85 -> 0 +shlr6386 shiftright 12345678123456789123456789 86 -> 0 +shlr6387 shiftright 12345678123456789123456789 87 -> 0 +shlr6388 shiftright 12345678123456789123456789 88 -> 0 +shlr6389 shiftright 12345678123456789123456789 89 -> 0 +shlr6390 shiftright 12345678123456789123456789 90 -> 0 +shlr6391 shiftright 12345678123456789123456789 91 -> 0 +shlr6392 shiftright 12345678123456789123456789 92 -> 0 +shlr6393 shiftright 12345678123456789123456789 93 -> 0 +shlr6394 shiftright 12345678123456789123456789 94 -> 0 +shlr6395 shiftright 12345678123456789123456789 95 -> 0 +shlr6396 shiftright 12345678123456789123456789 96 -> 0 +shlr6397 shiftright 12345678123456789123456789 97 -> 0 +shlr6398 shiftright 12345678123456789123456789 98 -> 0 +shlr6399 shiftright 12345678123456789123456789 99 -> 0 +shlr6400 shiftright 123456789123456789123456789 0 -> 123456789123456789123456789 +shlr6401 shiftright 123456789123456789123456789 1 -> 12345678912345678912345678 +shlr6402 shiftright 123456789123456789123456789 2 -> 1234567891234567891234567 +shlr6403 shiftright 123456789123456789123456789 3 -> 123456789123456789123456 +shlr6404 shiftright 123456789123456789123456789 4 -> 12345678912345678912345 +shlr6405 shiftright 123456789123456789123456789 5 -> 1234567891234567891234 +shlr6406 shiftright 123456789123456789123456789 6 -> 123456789123456789123 +shlr6407 shiftright 123456789123456789123456789 7 -> 12345678912345678912 +shlr6408 shiftright 123456789123456789123456789 8 -> 1234567891234567891 +shlr6409 shiftright 123456789123456789123456789 9 -> 123456789123456789 +shlr6410 shiftright 123456789123456789123456789 10 -> 12345678912345678 +shlr6411 shiftright 123456789123456789123456789 11 -> 1234567891234567 +shlr6412 shiftright 123456789123456789123456789 12 -> 123456789123456 +shlr6413 shiftright 123456789123456789123456789 13 -> 12345678912345 +shlr6414 shiftright 123456789123456789123456789 14 -> 1234567891234 +shlr6415 shiftright 123456789123456789123456789 15 -> 123456789123 +shlr6416 shiftright 123456789123456789123456789 16 -> 12345678912 +shlr6417 shiftright 123456789123456789123456789 17 -> 1234567891 +shlr6418 shiftright 123456789123456789123456789 18 -> 123456789 +shlr6419 shiftright 123456789123456789123456789 19 -> 12345678 +shlr6420 shiftright 123456789123456789123456789 20 -> 1234567 +shlr6421 shiftright 123456789123456789123456789 21 -> 123456 +shlr6422 shiftright 123456789123456789123456789 22 -> 12345 +shlr6423 shiftright 123456789123456789123456789 23 -> 1234 +shlr6424 shiftright 123456789123456789123456789 24 -> 123 +shlr6425 shiftright 123456789123456789123456789 25 -> 12 +shlr6426 shiftright 123456789123456789123456789 26 -> 1 +shlr6427 shiftright 123456789123456789123456789 27 -> 0 +shlr6428 shiftright 123456789123456789123456789 28 -> 0 +shlr6429 shiftright 123456789123456789123456789 29 -> 0 +shlr6430 shiftright 123456789123456789123456789 30 -> 0 +shlr6431 shiftright 123456789123456789123456789 31 -> 0 +shlr6432 shiftright 123456789123456789123456789 32 -> 0 +shlr6433 shiftright 123456789123456789123456789 33 -> 0 +shlr6434 shiftright 123456789123456789123456789 34 -> 0 +shlr6435 shiftright 123456789123456789123456789 35 -> 0 +shlr6436 shiftright 123456789123456789123456789 36 -> 0 +shlr6437 shiftright 123456789123456789123456789 37 -> 0 +shlr6438 shiftright 123456789123456789123456789 38 -> 0 +shlr6439 shiftright 123456789123456789123456789 39 -> 0 +shlr6440 shiftright 123456789123456789123456789 40 -> 0 +shlr6441 shiftright 123456789123456789123456789 41 -> 0 +shlr6442 shiftright 123456789123456789123456789 42 -> 0 +shlr6443 shiftright 123456789123456789123456789 43 -> 0 +shlr6444 shiftright 123456789123456789123456789 44 -> 0 +shlr6445 shiftright 123456789123456789123456789 45 -> 0 +shlr6446 shiftright 123456789123456789123456789 46 -> 0 +shlr6447 shiftright 123456789123456789123456789 47 -> 0 +shlr6448 shiftright 123456789123456789123456789 48 -> 0 +shlr6449 shiftright 123456789123456789123456789 49 -> 0 +shlr6450 shiftright 123456789123456789123456789 50 -> 0 +shlr6451 shiftright 123456789123456789123456789 51 -> 0 +shlr6452 shiftright 123456789123456789123456789 52 -> 0 +shlr6453 shiftright 123456789123456789123456789 53 -> 0 +shlr6454 shiftright 123456789123456789123456789 54 -> 0 +shlr6455 shiftright 123456789123456789123456789 55 -> 0 +shlr6456 shiftright 123456789123456789123456789 56 -> 0 +shlr6457 shiftright 123456789123456789123456789 57 -> 0 +shlr6458 shiftright 123456789123456789123456789 58 -> 0 +shlr6459 shiftright 123456789123456789123456789 59 -> 0 +shlr6460 shiftright 123456789123456789123456789 60 -> 0 +shlr6461 shiftright 123456789123456789123456789 61 -> 0 +shlr6462 shiftright 123456789123456789123456789 62 -> 0 +shlr6463 shiftright 123456789123456789123456789 63 -> 0 +shlr6464 shiftright 123456789123456789123456789 64 -> 0 +shlr6465 shiftright 123456789123456789123456789 65 -> 0 +shlr6466 shiftright 123456789123456789123456789 66 -> 0 +shlr6467 shiftright 123456789123456789123456789 67 -> 0 +shlr6468 shiftright 123456789123456789123456789 68 -> 0 +shlr6469 shiftright 123456789123456789123456789 69 -> 0 +shlr6470 shiftright 123456789123456789123456789 70 -> 0 +shlr6471 shiftright 123456789123456789123456789 71 -> 0 +shlr6472 shiftright 123456789123456789123456789 72 -> 0 +shlr6473 shiftright 123456789123456789123456789 73 -> 0 +shlr6474 shiftright 123456789123456789123456789 74 -> 0 +shlr6475 shiftright 123456789123456789123456789 75 -> 0 +shlr6476 shiftright 123456789123456789123456789 76 -> 0 +shlr6477 shiftright 123456789123456789123456789 77 -> 0 +shlr6478 shiftright 123456789123456789123456789 78 -> 0 +shlr6479 shiftright 123456789123456789123456789 79 -> 0 +shlr6480 shiftright 123456789123456789123456789 80 -> 0 +shlr6481 shiftright 123456789123456789123456789 81 -> 0 +shlr6482 shiftright 123456789123456789123456789 82 -> 0 +shlr6483 shiftright 123456789123456789123456789 83 -> 0 +shlr6484 shiftright 123456789123456789123456789 84 -> 0 +shlr6485 shiftright 123456789123456789123456789 85 -> 0 +shlr6486 shiftright 123456789123456789123456789 86 -> 0 +shlr6487 shiftright 123456789123456789123456789 87 -> 0 +shlr6488 shiftright 123456789123456789123456789 88 -> 0 +shlr6489 shiftright 123456789123456789123456789 89 -> 0 +shlr6490 shiftright 123456789123456789123456789 90 -> 0 +shlr6491 shiftright 123456789123456789123456789 91 -> 0 +shlr6492 shiftright 123456789123456789123456789 92 -> 0 +shlr6493 shiftright 123456789123456789123456789 93 -> 0 +shlr6494 shiftright 123456789123456789123456789 94 -> 0 +shlr6495 shiftright 123456789123456789123456789 95 -> 0 +shlr6496 shiftright 123456789123456789123456789 96 -> 0 +shlr6497 shiftright 123456789123456789123456789 97 -> 0 +shlr6498 shiftright 123456789123456789123456789 98 -> 0 +shlr6499 shiftright 123456789123456789123456789 99 -> 0 +shlr6500 shiftright 1123456789123456789123456789 0 -> 1123456789123456789123456789 +shlr6501 shiftright 1123456789123456789123456789 1 -> 112345678912345678912345678 +shlr6502 shiftright 1123456789123456789123456789 2 -> 11234567891234567891234567 +shlr6503 shiftright 1123456789123456789123456789 3 -> 1123456789123456789123456 +shlr6504 shiftright 1123456789123456789123456789 4 -> 112345678912345678912345 +shlr6505 shiftright 1123456789123456789123456789 5 -> 11234567891234567891234 +shlr6506 shiftright 1123456789123456789123456789 6 -> 1123456789123456789123 +shlr6507 shiftright 1123456789123456789123456789 7 -> 112345678912345678912 +shlr6508 shiftright 1123456789123456789123456789 8 -> 11234567891234567891 +shlr6509 shiftright 1123456789123456789123456789 9 -> 1123456789123456789 +shlr6510 shiftright 1123456789123456789123456789 10 -> 112345678912345678 +shlr6511 shiftright 1123456789123456789123456789 11 -> 11234567891234567 +shlr6512 shiftright 1123456789123456789123456789 12 -> 1123456789123456 +shlr6513 shiftright 1123456789123456789123456789 13 -> 112345678912345 +shlr6514 shiftright 1123456789123456789123456789 14 -> 11234567891234 +shlr6515 shiftright 1123456789123456789123456789 15 -> 1123456789123 +shlr6516 shiftright 1123456789123456789123456789 16 -> 112345678912 +shlr6517 shiftright 1123456789123456789123456789 17 -> 11234567891 +shlr6518 shiftright 1123456789123456789123456789 18 -> 1123456789 +shlr6519 shiftright 1123456789123456789123456789 19 -> 112345678 +shlr6520 shiftright 1123456789123456789123456789 20 -> 11234567 +shlr6521 shiftright 1123456789123456789123456789 21 -> 1123456 +shlr6522 shiftright 1123456789123456789123456789 22 -> 112345 +shlr6523 shiftright 1123456789123456789123456789 23 -> 11234 +shlr6524 shiftright 1123456789123456789123456789 24 -> 1123 +shlr6525 shiftright 1123456789123456789123456789 25 -> 112 +shlr6526 shiftright 1123456789123456789123456789 26 -> 11 +shlr6527 shiftright 1123456789123456789123456789 27 -> 1 +shlr6528 shiftright 1123456789123456789123456789 28 -> 0 +shlr6529 shiftright 1123456789123456789123456789 29 -> 0 +shlr6530 shiftright 1123456789123456789123456789 30 -> 0 +shlr6531 shiftright 1123456789123456789123456789 31 -> 0 +shlr6532 shiftright 1123456789123456789123456789 32 -> 0 +shlr6533 shiftright 1123456789123456789123456789 33 -> 0 +shlr6534 shiftright 1123456789123456789123456789 34 -> 0 +shlr6535 shiftright 1123456789123456789123456789 35 -> 0 +shlr6536 shiftright 1123456789123456789123456789 36 -> 0 +shlr6537 shiftright 1123456789123456789123456789 37 -> 0 +shlr6538 shiftright 1123456789123456789123456789 38 -> 0 +shlr6539 shiftright 1123456789123456789123456789 39 -> 0 +shlr6540 shiftright 1123456789123456789123456789 40 -> 0 +shlr6541 shiftright 1123456789123456789123456789 41 -> 0 +shlr6542 shiftright 1123456789123456789123456789 42 -> 0 +shlr6543 shiftright 1123456789123456789123456789 43 -> 0 +shlr6544 shiftright 1123456789123456789123456789 44 -> 0 +shlr6545 shiftright 1123456789123456789123456789 45 -> 0 +shlr6546 shiftright 1123456789123456789123456789 46 -> 0 +shlr6547 shiftright 1123456789123456789123456789 47 -> 0 +shlr6548 shiftright 1123456789123456789123456789 48 -> 0 +shlr6549 shiftright 1123456789123456789123456789 49 -> 0 +shlr6550 shiftright 1123456789123456789123456789 50 -> 0 +shlr6551 shiftright 1123456789123456789123456789 51 -> 0 +shlr6552 shiftright 1123456789123456789123456789 52 -> 0 +shlr6553 shiftright 1123456789123456789123456789 53 -> 0 +shlr6554 shiftright 1123456789123456789123456789 54 -> 0 +shlr6555 shiftright 1123456789123456789123456789 55 -> 0 +shlr6556 shiftright 1123456789123456789123456789 56 -> 0 +shlr6557 shiftright 1123456789123456789123456789 57 -> 0 +shlr6558 shiftright 1123456789123456789123456789 58 -> 0 +shlr6559 shiftright 1123456789123456789123456789 59 -> 0 +shlr6560 shiftright 1123456789123456789123456789 60 -> 0 +shlr6561 shiftright 1123456789123456789123456789 61 -> 0 +shlr6562 shiftright 1123456789123456789123456789 62 -> 0 +shlr6563 shiftright 1123456789123456789123456789 63 -> 0 +shlr6564 shiftright 1123456789123456789123456789 64 -> 0 +shlr6565 shiftright 1123456789123456789123456789 65 -> 0 +shlr6566 shiftright 1123456789123456789123456789 66 -> 0 +shlr6567 shiftright 1123456789123456789123456789 67 -> 0 +shlr6568 shiftright 1123456789123456789123456789 68 -> 0 +shlr6569 shiftright 1123456789123456789123456789 69 -> 0 +shlr6570 shiftright 1123456789123456789123456789 70 -> 0 +shlr6571 shiftright 1123456789123456789123456789 71 -> 0 +shlr6572 shiftright 1123456789123456789123456789 72 -> 0 +shlr6573 shiftright 1123456789123456789123456789 73 -> 0 +shlr6574 shiftright 1123456789123456789123456789 74 -> 0 +shlr6575 shiftright 1123456789123456789123456789 75 -> 0 +shlr6576 shiftright 1123456789123456789123456789 76 -> 0 +shlr6577 shiftright 1123456789123456789123456789 77 -> 0 +shlr6578 shiftright 1123456789123456789123456789 78 -> 0 +shlr6579 shiftright 1123456789123456789123456789 79 -> 0 +shlr6580 shiftright 1123456789123456789123456789 80 -> 0 +shlr6581 shiftright 1123456789123456789123456789 81 -> 0 +shlr6582 shiftright 1123456789123456789123456789 82 -> 0 +shlr6583 shiftright 1123456789123456789123456789 83 -> 0 +shlr6584 shiftright 1123456789123456789123456789 84 -> 0 +shlr6585 shiftright 1123456789123456789123456789 85 -> 0 +shlr6586 shiftright 1123456789123456789123456789 86 -> 0 +shlr6587 shiftright 1123456789123456789123456789 87 -> 0 +shlr6588 shiftright 1123456789123456789123456789 88 -> 0 +shlr6589 shiftright 1123456789123456789123456789 89 -> 0 +shlr6590 shiftright 1123456789123456789123456789 90 -> 0 +shlr6591 shiftright 1123456789123456789123456789 91 -> 0 +shlr6592 shiftright 1123456789123456789123456789 92 -> 0 +shlr6593 shiftright 1123456789123456789123456789 93 -> 0 +shlr6594 shiftright 1123456789123456789123456789 94 -> 0 +shlr6595 shiftright 1123456789123456789123456789 95 -> 0 +shlr6596 shiftright 1123456789123456789123456789 96 -> 0 +shlr6597 shiftright 1123456789123456789123456789 97 -> 0 +shlr6598 shiftright 1123456789123456789123456789 98 -> 0 +shlr6599 shiftright 1123456789123456789123456789 99 -> 0 +shlr6600 shiftright 12123456789123456789123456789 0 -> 12123456789123456789123456789 +shlr6601 shiftright 12123456789123456789123456789 1 -> 1212345678912345678912345678 +shlr6602 shiftright 12123456789123456789123456789 2 -> 121234567891234567891234567 +shlr6603 shiftright 12123456789123456789123456789 3 -> 12123456789123456789123456 +shlr6604 shiftright 12123456789123456789123456789 4 -> 1212345678912345678912345 +shlr6605 shiftright 12123456789123456789123456789 5 -> 121234567891234567891234 +shlr6606 shiftright 12123456789123456789123456789 6 -> 12123456789123456789123 +shlr6607 shiftright 12123456789123456789123456789 7 -> 1212345678912345678912 +shlr6608 shiftright 12123456789123456789123456789 8 -> 121234567891234567891 +shlr6609 shiftright 12123456789123456789123456789 9 -> 12123456789123456789 +shlr6610 shiftright 12123456789123456789123456789 10 -> 1212345678912345678 +shlr6611 shiftright 12123456789123456789123456789 11 -> 121234567891234567 +shlr6612 shiftright 12123456789123456789123456789 12 -> 12123456789123456 +shlr6613 shiftright 12123456789123456789123456789 13 -> 1212345678912345 +shlr6614 shiftright 12123456789123456789123456789 14 -> 121234567891234 +shlr6615 shiftright 12123456789123456789123456789 15 -> 12123456789123 +shlr6616 shiftright 12123456789123456789123456789 16 -> 1212345678912 +shlr6617 shiftright 12123456789123456789123456789 17 -> 121234567891 +shlr6618 shiftright 12123456789123456789123456789 18 -> 12123456789 +shlr6619 shiftright 12123456789123456789123456789 19 -> 1212345678 +shlr6620 shiftright 12123456789123456789123456789 20 -> 121234567 +shlr6621 shiftright 12123456789123456789123456789 21 -> 12123456 +shlr6622 shiftright 12123456789123456789123456789 22 -> 1212345 +shlr6623 shiftright 12123456789123456789123456789 23 -> 121234 +shlr6624 shiftright 12123456789123456789123456789 24 -> 12123 +shlr6625 shiftright 12123456789123456789123456789 25 -> 1212 +shlr6626 shiftright 12123456789123456789123456789 26 -> 121 +shlr6627 shiftright 12123456789123456789123456789 27 -> 12 +shlr6628 shiftright 12123456789123456789123456789 28 -> 1 +shlr6629 shiftright 12123456789123456789123456789 29 -> 0 +shlr6630 shiftright 12123456789123456789123456789 30 -> 0 +shlr6631 shiftright 12123456789123456789123456789 31 -> 0 +shlr6632 shiftright 12123456789123456789123456789 32 -> 0 +shlr6633 shiftright 12123456789123456789123456789 33 -> 0 +shlr6634 shiftright 12123456789123456789123456789 34 -> 0 +shlr6635 shiftright 12123456789123456789123456789 35 -> 0 +shlr6636 shiftright 12123456789123456789123456789 36 -> 0 +shlr6637 shiftright 12123456789123456789123456789 37 -> 0 +shlr6638 shiftright 12123456789123456789123456789 38 -> 0 +shlr6639 shiftright 12123456789123456789123456789 39 -> 0 +shlr6640 shiftright 12123456789123456789123456789 40 -> 0 +shlr6641 shiftright 12123456789123456789123456789 41 -> 0 +shlr6642 shiftright 12123456789123456789123456789 42 -> 0 +shlr6643 shiftright 12123456789123456789123456789 43 -> 0 +shlr6644 shiftright 12123456789123456789123456789 44 -> 0 +shlr6645 shiftright 12123456789123456789123456789 45 -> 0 +shlr6646 shiftright 12123456789123456789123456789 46 -> 0 +shlr6647 shiftright 12123456789123456789123456789 47 -> 0 +shlr6648 shiftright 12123456789123456789123456789 48 -> 0 +shlr6649 shiftright 12123456789123456789123456789 49 -> 0 +shlr6650 shiftright 12123456789123456789123456789 50 -> 0 +shlr6651 shiftright 12123456789123456789123456789 51 -> 0 +shlr6652 shiftright 12123456789123456789123456789 52 -> 0 +shlr6653 shiftright 12123456789123456789123456789 53 -> 0 +shlr6654 shiftright 12123456789123456789123456789 54 -> 0 +shlr6655 shiftright 12123456789123456789123456789 55 -> 0 +shlr6656 shiftright 12123456789123456789123456789 56 -> 0 +shlr6657 shiftright 12123456789123456789123456789 57 -> 0 +shlr6658 shiftright 12123456789123456789123456789 58 -> 0 +shlr6659 shiftright 12123456789123456789123456789 59 -> 0 +shlr6660 shiftright 12123456789123456789123456789 60 -> 0 +shlr6661 shiftright 12123456789123456789123456789 61 -> 0 +shlr6662 shiftright 12123456789123456789123456789 62 -> 0 +shlr6663 shiftright 12123456789123456789123456789 63 -> 0 +shlr6664 shiftright 12123456789123456789123456789 64 -> 0 +shlr6665 shiftright 12123456789123456789123456789 65 -> 0 +shlr6666 shiftright 12123456789123456789123456789 66 -> 0 +shlr6667 shiftright 12123456789123456789123456789 67 -> 0 +shlr6668 shiftright 12123456789123456789123456789 68 -> 0 +shlr6669 shiftright 12123456789123456789123456789 69 -> 0 +shlr6670 shiftright 12123456789123456789123456789 70 -> 0 +shlr6671 shiftright 12123456789123456789123456789 71 -> 0 +shlr6672 shiftright 12123456789123456789123456789 72 -> 0 +shlr6673 shiftright 12123456789123456789123456789 73 -> 0 +shlr6674 shiftright 12123456789123456789123456789 74 -> 0 +shlr6675 shiftright 12123456789123456789123456789 75 -> 0 +shlr6676 shiftright 12123456789123456789123456789 76 -> 0 +shlr6677 shiftright 12123456789123456789123456789 77 -> 0 +shlr6678 shiftright 12123456789123456789123456789 78 -> 0 +shlr6679 shiftright 12123456789123456789123456789 79 -> 0 +shlr6680 shiftright 12123456789123456789123456789 80 -> 0 +shlr6681 shiftright 12123456789123456789123456789 81 -> 0 +shlr6682 shiftright 12123456789123456789123456789 82 -> 0 +shlr6683 shiftright 12123456789123456789123456789 83 -> 0 +shlr6684 shiftright 12123456789123456789123456789 84 -> 0 +shlr6685 shiftright 12123456789123456789123456789 85 -> 0 +shlr6686 shiftright 12123456789123456789123456789 86 -> 0 +shlr6687 shiftright 12123456789123456789123456789 87 -> 0 +shlr6688 shiftright 12123456789123456789123456789 88 -> 0 +shlr6689 shiftright 12123456789123456789123456789 89 -> 0 +shlr6690 shiftright 12123456789123456789123456789 90 -> 0 +shlr6691 shiftright 12123456789123456789123456789 91 -> 0 +shlr6692 shiftright 12123456789123456789123456789 92 -> 0 +shlr6693 shiftright 12123456789123456789123456789 93 -> 0 +shlr6694 shiftright 12123456789123456789123456789 94 -> 0 +shlr6695 shiftright 12123456789123456789123456789 95 -> 0 +shlr6696 shiftright 12123456789123456789123456789 96 -> 0 +shlr6697 shiftright 12123456789123456789123456789 97 -> 0 +shlr6698 shiftright 12123456789123456789123456789 98 -> 0 +shlr6699 shiftright 12123456789123456789123456789 99 -> 0 +shlr6700 shiftright 123123456789123456789123456789 0 -> 123123456789123456789123456789 +shlr6701 shiftright 123123456789123456789123456789 1 -> 12312345678912345678912345678 +shlr6702 shiftright 123123456789123456789123456789 2 -> 1231234567891234567891234567 +shlr6703 shiftright 123123456789123456789123456789 3 -> 123123456789123456789123456 +shlr6704 shiftright 123123456789123456789123456789 4 -> 12312345678912345678912345 +shlr6705 shiftright 123123456789123456789123456789 5 -> 1231234567891234567891234 +shlr6706 shiftright 123123456789123456789123456789 6 -> 123123456789123456789123 +shlr6707 shiftright 123123456789123456789123456789 7 -> 12312345678912345678912 +shlr6708 shiftright 123123456789123456789123456789 8 -> 1231234567891234567891 +shlr6709 shiftright 123123456789123456789123456789 9 -> 123123456789123456789 +shlr6710 shiftright 123123456789123456789123456789 10 -> 12312345678912345678 +shlr6711 shiftright 123123456789123456789123456789 11 -> 1231234567891234567 +shlr6712 shiftright 123123456789123456789123456789 12 -> 123123456789123456 +shlr6713 shiftright 123123456789123456789123456789 13 -> 12312345678912345 +shlr6714 shiftright 123123456789123456789123456789 14 -> 1231234567891234 +shlr6715 shiftright 123123456789123456789123456789 15 -> 123123456789123 +shlr6716 shiftright 123123456789123456789123456789 16 -> 12312345678912 +shlr6717 shiftright 123123456789123456789123456789 17 -> 1231234567891 +shlr6718 shiftright 123123456789123456789123456789 18 -> 123123456789 +shlr6719 shiftright 123123456789123456789123456789 19 -> 12312345678 +shlr6720 shiftright 123123456789123456789123456789 20 -> 1231234567 +shlr6721 shiftright 123123456789123456789123456789 21 -> 123123456 +shlr6722 shiftright 123123456789123456789123456789 22 -> 12312345 +shlr6723 shiftright 123123456789123456789123456789 23 -> 1231234 +shlr6724 shiftright 123123456789123456789123456789 24 -> 123123 +shlr6725 shiftright 123123456789123456789123456789 25 -> 12312 +shlr6726 shiftright 123123456789123456789123456789 26 -> 1231 +shlr6727 shiftright 123123456789123456789123456789 27 -> 123 +shlr6728 shiftright 123123456789123456789123456789 28 -> 12 +shlr6729 shiftright 123123456789123456789123456789 29 -> 1 +shlr6730 shiftright 123123456789123456789123456789 30 -> 0 +shlr6731 shiftright 123123456789123456789123456789 31 -> 0 +shlr6732 shiftright 123123456789123456789123456789 32 -> 0 +shlr6733 shiftright 123123456789123456789123456789 33 -> 0 +shlr6734 shiftright 123123456789123456789123456789 34 -> 0 +shlr6735 shiftright 123123456789123456789123456789 35 -> 0 +shlr6736 shiftright 123123456789123456789123456789 36 -> 0 +shlr6737 shiftright 123123456789123456789123456789 37 -> 0 +shlr6738 shiftright 123123456789123456789123456789 38 -> 0 +shlr6739 shiftright 123123456789123456789123456789 39 -> 0 +shlr6740 shiftright 123123456789123456789123456789 40 -> 0 +shlr6741 shiftright 123123456789123456789123456789 41 -> 0 +shlr6742 shiftright 123123456789123456789123456789 42 -> 0 +shlr6743 shiftright 123123456789123456789123456789 43 -> 0 +shlr6744 shiftright 123123456789123456789123456789 44 -> 0 +shlr6745 shiftright 123123456789123456789123456789 45 -> 0 +shlr6746 shiftright 123123456789123456789123456789 46 -> 0 +shlr6747 shiftright 123123456789123456789123456789 47 -> 0 +shlr6748 shiftright 123123456789123456789123456789 48 -> 0 +shlr6749 shiftright 123123456789123456789123456789 49 -> 0 +shlr6750 shiftright 123123456789123456789123456789 50 -> 0 +shlr6751 shiftright 123123456789123456789123456789 51 -> 0 +shlr6752 shiftright 123123456789123456789123456789 52 -> 0 +shlr6753 shiftright 123123456789123456789123456789 53 -> 0 +shlr6754 shiftright 123123456789123456789123456789 54 -> 0 +shlr6755 shiftright 123123456789123456789123456789 55 -> 0 +shlr6756 shiftright 123123456789123456789123456789 56 -> 0 +shlr6757 shiftright 123123456789123456789123456789 57 -> 0 +shlr6758 shiftright 123123456789123456789123456789 58 -> 0 +shlr6759 shiftright 123123456789123456789123456789 59 -> 0 +shlr6760 shiftright 123123456789123456789123456789 60 -> 0 +shlr6761 shiftright 123123456789123456789123456789 61 -> 0 +shlr6762 shiftright 123123456789123456789123456789 62 -> 0 +shlr6763 shiftright 123123456789123456789123456789 63 -> 0 +shlr6764 shiftright 123123456789123456789123456789 64 -> 0 +shlr6765 shiftright 123123456789123456789123456789 65 -> 0 +shlr6766 shiftright 123123456789123456789123456789 66 -> 0 +shlr6767 shiftright 123123456789123456789123456789 67 -> 0 +shlr6768 shiftright 123123456789123456789123456789 68 -> 0 +shlr6769 shiftright 123123456789123456789123456789 69 -> 0 +shlr6770 shiftright 123123456789123456789123456789 70 -> 0 +shlr6771 shiftright 123123456789123456789123456789 71 -> 0 +shlr6772 shiftright 123123456789123456789123456789 72 -> 0 +shlr6773 shiftright 123123456789123456789123456789 73 -> 0 +shlr6774 shiftright 123123456789123456789123456789 74 -> 0 +shlr6775 shiftright 123123456789123456789123456789 75 -> 0 +shlr6776 shiftright 123123456789123456789123456789 76 -> 0 +shlr6777 shiftright 123123456789123456789123456789 77 -> 0 +shlr6778 shiftright 123123456789123456789123456789 78 -> 0 +shlr6779 shiftright 123123456789123456789123456789 79 -> 0 +shlr6780 shiftright 123123456789123456789123456789 80 -> 0 +shlr6781 shiftright 123123456789123456789123456789 81 -> 0 +shlr6782 shiftright 123123456789123456789123456789 82 -> 0 +shlr6783 shiftright 123123456789123456789123456789 83 -> 0 +shlr6784 shiftright 123123456789123456789123456789 84 -> 0 +shlr6785 shiftright 123123456789123456789123456789 85 -> 0 +shlr6786 shiftright 123123456789123456789123456789 86 -> 0 +shlr6787 shiftright 123123456789123456789123456789 87 -> 0 +shlr6788 shiftright 123123456789123456789123456789 88 -> 0 +shlr6789 shiftright 123123456789123456789123456789 89 -> 0 +shlr6790 shiftright 123123456789123456789123456789 90 -> 0 +shlr6791 shiftright 123123456789123456789123456789 91 -> 0 +shlr6792 shiftright 123123456789123456789123456789 92 -> 0 +shlr6793 shiftright 123123456789123456789123456789 93 -> 0 +shlr6794 shiftright 123123456789123456789123456789 94 -> 0 +shlr6795 shiftright 123123456789123456789123456789 95 -> 0 +shlr6796 shiftright 123123456789123456789123456789 96 -> 0 +shlr6797 shiftright 123123456789123456789123456789 97 -> 0 +shlr6798 shiftright 123123456789123456789123456789 98 -> 0 +shlr6799 shiftright 123123456789123456789123456789 99 -> 0 +shlr6800 shiftright 1234123456789123456789123456789 0 -> 1234123456789123456789123456789 +shlr6801 shiftright 1234123456789123456789123456789 1 -> 123412345678912345678912345678 +shlr6802 shiftright 1234123456789123456789123456789 2 -> 12341234567891234567891234567 +shlr6803 shiftright 1234123456789123456789123456789 3 -> 1234123456789123456789123456 +shlr6804 shiftright 1234123456789123456789123456789 4 -> 123412345678912345678912345 +shlr6805 shiftright 1234123456789123456789123456789 5 -> 12341234567891234567891234 +shlr6806 shiftright 1234123456789123456789123456789 6 -> 1234123456789123456789123 +shlr6807 shiftright 1234123456789123456789123456789 7 -> 123412345678912345678912 +shlr6808 shiftright 1234123456789123456789123456789 8 -> 12341234567891234567891 +shlr6809 shiftright 1234123456789123456789123456789 9 -> 1234123456789123456789 +shlr6810 shiftright 1234123456789123456789123456789 10 -> 123412345678912345678 +shlr6811 shiftright 1234123456789123456789123456789 11 -> 12341234567891234567 +shlr6812 shiftright 1234123456789123456789123456789 12 -> 1234123456789123456 +shlr6813 shiftright 1234123456789123456789123456789 13 -> 123412345678912345 +shlr6814 shiftright 1234123456789123456789123456789 14 -> 12341234567891234 +shlr6815 shiftright 1234123456789123456789123456789 15 -> 1234123456789123 +shlr6816 shiftright 1234123456789123456789123456789 16 -> 123412345678912 +shlr6817 shiftright 1234123456789123456789123456789 17 -> 12341234567891 +shlr6818 shiftright 1234123456789123456789123456789 18 -> 1234123456789 +shlr6819 shiftright 1234123456789123456789123456789 19 -> 123412345678 +shlr6820 shiftright 1234123456789123456789123456789 20 -> 12341234567 +shlr6821 shiftright 1234123456789123456789123456789 21 -> 1234123456 +shlr6822 shiftright 1234123456789123456789123456789 22 -> 123412345 +shlr6823 shiftright 1234123456789123456789123456789 23 -> 12341234 +shlr6824 shiftright 1234123456789123456789123456789 24 -> 1234123 +shlr6825 shiftright 1234123456789123456789123456789 25 -> 123412 +shlr6826 shiftright 1234123456789123456789123456789 26 -> 12341 +shlr6827 shiftright 1234123456789123456789123456789 27 -> 1234 +shlr6828 shiftright 1234123456789123456789123456789 28 -> 123 +shlr6829 shiftright 1234123456789123456789123456789 29 -> 12 +shlr6830 shiftright 1234123456789123456789123456789 30 -> 1 +shlr6831 shiftright 1234123456789123456789123456789 31 -> 0 +shlr6832 shiftright 1234123456789123456789123456789 32 -> 0 +shlr6833 shiftright 1234123456789123456789123456789 33 -> 0 +shlr6834 shiftright 1234123456789123456789123456789 34 -> 0 +shlr6835 shiftright 1234123456789123456789123456789 35 -> 0 +shlr6836 shiftright 1234123456789123456789123456789 36 -> 0 +shlr6837 shiftright 1234123456789123456789123456789 37 -> 0 +shlr6838 shiftright 1234123456789123456789123456789 38 -> 0 +shlr6839 shiftright 1234123456789123456789123456789 39 -> 0 +shlr6840 shiftright 1234123456789123456789123456789 40 -> 0 +shlr6841 shiftright 1234123456789123456789123456789 41 -> 0 +shlr6842 shiftright 1234123456789123456789123456789 42 -> 0 +shlr6843 shiftright 1234123456789123456789123456789 43 -> 0 +shlr6844 shiftright 1234123456789123456789123456789 44 -> 0 +shlr6845 shiftright 1234123456789123456789123456789 45 -> 0 +shlr6846 shiftright 1234123456789123456789123456789 46 -> 0 +shlr6847 shiftright 1234123456789123456789123456789 47 -> 0 +shlr6848 shiftright 1234123456789123456789123456789 48 -> 0 +shlr6849 shiftright 1234123456789123456789123456789 49 -> 0 +shlr6850 shiftright 1234123456789123456789123456789 50 -> 0 +shlr6851 shiftright 1234123456789123456789123456789 51 -> 0 +shlr6852 shiftright 1234123456789123456789123456789 52 -> 0 +shlr6853 shiftright 1234123456789123456789123456789 53 -> 0 +shlr6854 shiftright 1234123456789123456789123456789 54 -> 0 +shlr6855 shiftright 1234123456789123456789123456789 55 -> 0 +shlr6856 shiftright 1234123456789123456789123456789 56 -> 0 +shlr6857 shiftright 1234123456789123456789123456789 57 -> 0 +shlr6858 shiftright 1234123456789123456789123456789 58 -> 0 +shlr6859 shiftright 1234123456789123456789123456789 59 -> 0 +shlr6860 shiftright 1234123456789123456789123456789 60 -> 0 +shlr6861 shiftright 1234123456789123456789123456789 61 -> 0 +shlr6862 shiftright 1234123456789123456789123456789 62 -> 0 +shlr6863 shiftright 1234123456789123456789123456789 63 -> 0 +shlr6864 shiftright 1234123456789123456789123456789 64 -> 0 +shlr6865 shiftright 1234123456789123456789123456789 65 -> 0 +shlr6866 shiftright 1234123456789123456789123456789 66 -> 0 +shlr6867 shiftright 1234123456789123456789123456789 67 -> 0 +shlr6868 shiftright 1234123456789123456789123456789 68 -> 0 +shlr6869 shiftright 1234123456789123456789123456789 69 -> 0 +shlr6870 shiftright 1234123456789123456789123456789 70 -> 0 +shlr6871 shiftright 1234123456789123456789123456789 71 -> 0 +shlr6872 shiftright 1234123456789123456789123456789 72 -> 0 +shlr6873 shiftright 1234123456789123456789123456789 73 -> 0 +shlr6874 shiftright 1234123456789123456789123456789 74 -> 0 +shlr6875 shiftright 1234123456789123456789123456789 75 -> 0 +shlr6876 shiftright 1234123456789123456789123456789 76 -> 0 +shlr6877 shiftright 1234123456789123456789123456789 77 -> 0 +shlr6878 shiftright 1234123456789123456789123456789 78 -> 0 +shlr6879 shiftright 1234123456789123456789123456789 79 -> 0 +shlr6880 shiftright 1234123456789123456789123456789 80 -> 0 +shlr6881 shiftright 1234123456789123456789123456789 81 -> 0 +shlr6882 shiftright 1234123456789123456789123456789 82 -> 0 +shlr6883 shiftright 1234123456789123456789123456789 83 -> 0 +shlr6884 shiftright 1234123456789123456789123456789 84 -> 0 +shlr6885 shiftright 1234123456789123456789123456789 85 -> 0 +shlr6886 shiftright 1234123456789123456789123456789 86 -> 0 +shlr6887 shiftright 1234123456789123456789123456789 87 -> 0 +shlr6888 shiftright 1234123456789123456789123456789 88 -> 0 +shlr6889 shiftright 1234123456789123456789123456789 89 -> 0 +shlr6890 shiftright 1234123456789123456789123456789 90 -> 0 +shlr6891 shiftright 1234123456789123456789123456789 91 -> 0 +shlr6892 shiftright 1234123456789123456789123456789 92 -> 0 +shlr6893 shiftright 1234123456789123456789123456789 93 -> 0 +shlr6894 shiftright 1234123456789123456789123456789 94 -> 0 +shlr6895 shiftright 1234123456789123456789123456789 95 -> 0 +shlr6896 shiftright 1234123456789123456789123456789 96 -> 0 +shlr6897 shiftright 1234123456789123456789123456789 97 -> 0 +shlr6898 shiftright 1234123456789123456789123456789 98 -> 0 +shlr6899 shiftright 1234123456789123456789123456789 99 -> 0 +shlr6900 shiftright 12345123456789123456789123456789 0 -> 12345123456789123456789123456789 +shlr6901 shiftright 12345123456789123456789123456789 1 -> 1234512345678912345678912345678 +shlr6902 shiftright 12345123456789123456789123456789 2 -> 123451234567891234567891234567 +shlr6903 shiftright 12345123456789123456789123456789 3 -> 12345123456789123456789123456 +shlr6904 shiftright 12345123456789123456789123456789 4 -> 1234512345678912345678912345 +shlr6905 shiftright 12345123456789123456789123456789 5 -> 123451234567891234567891234 +shlr6906 shiftright 12345123456789123456789123456789 6 -> 12345123456789123456789123 +shlr6907 shiftright 12345123456789123456789123456789 7 -> 1234512345678912345678912 +shlr6908 shiftright 12345123456789123456789123456789 8 -> 123451234567891234567891 +shlr6909 shiftright 12345123456789123456789123456789 9 -> 12345123456789123456789 +shlr6910 shiftright 12345123456789123456789123456789 10 -> 1234512345678912345678 +shlr6911 shiftright 12345123456789123456789123456789 11 -> 123451234567891234567 +shlr6912 shiftright 12345123456789123456789123456789 12 -> 12345123456789123456 +shlr6913 shiftright 12345123456789123456789123456789 13 -> 1234512345678912345 +shlr6914 shiftright 12345123456789123456789123456789 14 -> 123451234567891234 +shlr6915 shiftright 12345123456789123456789123456789 15 -> 12345123456789123 +shlr6916 shiftright 12345123456789123456789123456789 16 -> 1234512345678912 +shlr6917 shiftright 12345123456789123456789123456789 17 -> 123451234567891 +shlr6918 shiftright 12345123456789123456789123456789 18 -> 12345123456789 +shlr6919 shiftright 12345123456789123456789123456789 19 -> 1234512345678 +shlr6920 shiftright 12345123456789123456789123456789 20 -> 123451234567 +shlr6921 shiftright 12345123456789123456789123456789 21 -> 12345123456 +shlr6922 shiftright 12345123456789123456789123456789 22 -> 1234512345 +shlr6923 shiftright 12345123456789123456789123456789 23 -> 123451234 +shlr6924 shiftright 12345123456789123456789123456789 24 -> 12345123 +shlr6925 shiftright 12345123456789123456789123456789 25 -> 1234512 +shlr6926 shiftright 12345123456789123456789123456789 26 -> 123451 +shlr6927 shiftright 12345123456789123456789123456789 27 -> 12345 +shlr6928 shiftright 12345123456789123456789123456789 28 -> 1234 +shlr6929 shiftright 12345123456789123456789123456789 29 -> 123 +shlr6930 shiftright 12345123456789123456789123456789 30 -> 12 +shlr6931 shiftright 12345123456789123456789123456789 31 -> 1 +shlr6932 shiftright 12345123456789123456789123456789 32 -> 0 +shlr6933 shiftright 12345123456789123456789123456789 33 -> 0 +shlr6934 shiftright 12345123456789123456789123456789 34 -> 0 +shlr6935 shiftright 12345123456789123456789123456789 35 -> 0 +shlr6936 shiftright 12345123456789123456789123456789 36 -> 0 +shlr6937 shiftright 12345123456789123456789123456789 37 -> 0 +shlr6938 shiftright 12345123456789123456789123456789 38 -> 0 +shlr6939 shiftright 12345123456789123456789123456789 39 -> 0 +shlr6940 shiftright 12345123456789123456789123456789 40 -> 0 +shlr6941 shiftright 12345123456789123456789123456789 41 -> 0 +shlr6942 shiftright 12345123456789123456789123456789 42 -> 0 +shlr6943 shiftright 12345123456789123456789123456789 43 -> 0 +shlr6944 shiftright 12345123456789123456789123456789 44 -> 0 +shlr6945 shiftright 12345123456789123456789123456789 45 -> 0 +shlr6946 shiftright 12345123456789123456789123456789 46 -> 0 +shlr6947 shiftright 12345123456789123456789123456789 47 -> 0 +shlr6948 shiftright 12345123456789123456789123456789 48 -> 0 +shlr6949 shiftright 12345123456789123456789123456789 49 -> 0 +shlr6950 shiftright 12345123456789123456789123456789 50 -> 0 +shlr6951 shiftright 12345123456789123456789123456789 51 -> 0 +shlr6952 shiftright 12345123456789123456789123456789 52 -> 0 +shlr6953 shiftright 12345123456789123456789123456789 53 -> 0 +shlr6954 shiftright 12345123456789123456789123456789 54 -> 0 +shlr6955 shiftright 12345123456789123456789123456789 55 -> 0 +shlr6956 shiftright 12345123456789123456789123456789 56 -> 0 +shlr6957 shiftright 12345123456789123456789123456789 57 -> 0 +shlr6958 shiftright 12345123456789123456789123456789 58 -> 0 +shlr6959 shiftright 12345123456789123456789123456789 59 -> 0 +shlr6960 shiftright 12345123456789123456789123456789 60 -> 0 +shlr6961 shiftright 12345123456789123456789123456789 61 -> 0 +shlr6962 shiftright 12345123456789123456789123456789 62 -> 0 +shlr6963 shiftright 12345123456789123456789123456789 63 -> 0 +shlr6964 shiftright 12345123456789123456789123456789 64 -> 0 +shlr6965 shiftright 12345123456789123456789123456789 65 -> 0 +shlr6966 shiftright 12345123456789123456789123456789 66 -> 0 +shlr6967 shiftright 12345123456789123456789123456789 67 -> 0 +shlr6968 shiftright 12345123456789123456789123456789 68 -> 0 +shlr6969 shiftright 12345123456789123456789123456789 69 -> 0 +shlr6970 shiftright 12345123456789123456789123456789 70 -> 0 +shlr6971 shiftright 12345123456789123456789123456789 71 -> 0 +shlr6972 shiftright 12345123456789123456789123456789 72 -> 0 +shlr6973 shiftright 12345123456789123456789123456789 73 -> 0 +shlr6974 shiftright 12345123456789123456789123456789 74 -> 0 +shlr6975 shiftright 12345123456789123456789123456789 75 -> 0 +shlr6976 shiftright 12345123456789123456789123456789 76 -> 0 +shlr6977 shiftright 12345123456789123456789123456789 77 -> 0 +shlr6978 shiftright 12345123456789123456789123456789 78 -> 0 +shlr6979 shiftright 12345123456789123456789123456789 79 -> 0 +shlr6980 shiftright 12345123456789123456789123456789 80 -> 0 +shlr6981 shiftright 12345123456789123456789123456789 81 -> 0 +shlr6982 shiftright 12345123456789123456789123456789 82 -> 0 +shlr6983 shiftright 12345123456789123456789123456789 83 -> 0 +shlr6984 shiftright 12345123456789123456789123456789 84 -> 0 +shlr6985 shiftright 12345123456789123456789123456789 85 -> 0 +shlr6986 shiftright 12345123456789123456789123456789 86 -> 0 +shlr6987 shiftright 12345123456789123456789123456789 87 -> 0 +shlr6988 shiftright 12345123456789123456789123456789 88 -> 0 +shlr6989 shiftright 12345123456789123456789123456789 89 -> 0 +shlr6990 shiftright 12345123456789123456789123456789 90 -> 0 +shlr6991 shiftright 12345123456789123456789123456789 91 -> 0 +shlr6992 shiftright 12345123456789123456789123456789 92 -> 0 +shlr6993 shiftright 12345123456789123456789123456789 93 -> 0 +shlr6994 shiftright 12345123456789123456789123456789 94 -> 0 +shlr6995 shiftright 12345123456789123456789123456789 95 -> 0 +shlr6996 shiftright 12345123456789123456789123456789 96 -> 0 +shlr6997 shiftright 12345123456789123456789123456789 97 -> 0 +shlr6998 shiftright 12345123456789123456789123456789 98 -> 0 +shlr6999 shiftright 12345123456789123456789123456789 99 -> 0 +shlr7000 shiftright 123456123456789123456789123456789 0 -> 123456123456789123456789123456789 +shlr7001 shiftright 123456123456789123456789123456789 1 -> 12345612345678912345678912345678 +shlr7002 shiftright 123456123456789123456789123456789 2 -> 1234561234567891234567891234567 +shlr7003 shiftright 123456123456789123456789123456789 3 -> 123456123456789123456789123456 +shlr7004 shiftright 123456123456789123456789123456789 4 -> 12345612345678912345678912345 +shlr7005 shiftright 123456123456789123456789123456789 5 -> 1234561234567891234567891234 +shlr7006 shiftright 123456123456789123456789123456789 6 -> 123456123456789123456789123 +shlr7007 shiftright 123456123456789123456789123456789 7 -> 12345612345678912345678912 +shlr7008 shiftright 123456123456789123456789123456789 8 -> 1234561234567891234567891 +shlr7009 shiftright 123456123456789123456789123456789 9 -> 123456123456789123456789 +shlr7010 shiftright 123456123456789123456789123456789 10 -> 12345612345678912345678 +shlr7011 shiftright 123456123456789123456789123456789 11 -> 1234561234567891234567 +shlr7012 shiftright 123456123456789123456789123456789 12 -> 123456123456789123456 +shlr7013 shiftright 123456123456789123456789123456789 13 -> 12345612345678912345 +shlr7014 shiftright 123456123456789123456789123456789 14 -> 1234561234567891234 +shlr7015 shiftright 123456123456789123456789123456789 15 -> 123456123456789123 +shlr7016 shiftright 123456123456789123456789123456789 16 -> 12345612345678912 +shlr7017 shiftright 123456123456789123456789123456789 17 -> 1234561234567891 +shlr7018 shiftright 123456123456789123456789123456789 18 -> 123456123456789 +shlr7019 shiftright 123456123456789123456789123456789 19 -> 12345612345678 +shlr7020 shiftright 123456123456789123456789123456789 20 -> 1234561234567 +shlr7021 shiftright 123456123456789123456789123456789 21 -> 123456123456 +shlr7022 shiftright 123456123456789123456789123456789 22 -> 12345612345 +shlr7023 shiftright 123456123456789123456789123456789 23 -> 1234561234 +shlr7024 shiftright 123456123456789123456789123456789 24 -> 123456123 +shlr7025 shiftright 123456123456789123456789123456789 25 -> 12345612 +shlr7026 shiftright 123456123456789123456789123456789 26 -> 1234561 +shlr7027 shiftright 123456123456789123456789123456789 27 -> 123456 +shlr7028 shiftright 123456123456789123456789123456789 28 -> 12345 +shlr7029 shiftright 123456123456789123456789123456789 29 -> 1234 +shlr7030 shiftright 123456123456789123456789123456789 30 -> 123 +shlr7031 shiftright 123456123456789123456789123456789 31 -> 12 +shlr7032 shiftright 123456123456789123456789123456789 32 -> 1 +shlr7033 shiftright 123456123456789123456789123456789 33 -> 0 +shlr7034 shiftright 123456123456789123456789123456789 34 -> 0 +shlr7035 shiftright 123456123456789123456789123456789 35 -> 0 +shlr7036 shiftright 123456123456789123456789123456789 36 -> 0 +shlr7037 shiftright 123456123456789123456789123456789 37 -> 0 +shlr7038 shiftright 123456123456789123456789123456789 38 -> 0 +shlr7039 shiftright 123456123456789123456789123456789 39 -> 0 +shlr7040 shiftright 123456123456789123456789123456789 40 -> 0 +shlr7041 shiftright 123456123456789123456789123456789 41 -> 0 +shlr7042 shiftright 123456123456789123456789123456789 42 -> 0 +shlr7043 shiftright 123456123456789123456789123456789 43 -> 0 +shlr7044 shiftright 123456123456789123456789123456789 44 -> 0 +shlr7045 shiftright 123456123456789123456789123456789 45 -> 0 +shlr7046 shiftright 123456123456789123456789123456789 46 -> 0 +shlr7047 shiftright 123456123456789123456789123456789 47 -> 0 +shlr7048 shiftright 123456123456789123456789123456789 48 -> 0 +shlr7049 shiftright 123456123456789123456789123456789 49 -> 0 +shlr7050 shiftright 123456123456789123456789123456789 50 -> 0 +shlr7051 shiftright 123456123456789123456789123456789 51 -> 0 +shlr7052 shiftright 123456123456789123456789123456789 52 -> 0 +shlr7053 shiftright 123456123456789123456789123456789 53 -> 0 +shlr7054 shiftright 123456123456789123456789123456789 54 -> 0 +shlr7055 shiftright 123456123456789123456789123456789 55 -> 0 +shlr7056 shiftright 123456123456789123456789123456789 56 -> 0 +shlr7057 shiftright 123456123456789123456789123456789 57 -> 0 +shlr7058 shiftright 123456123456789123456789123456789 58 -> 0 +shlr7059 shiftright 123456123456789123456789123456789 59 -> 0 +shlr7060 shiftright 123456123456789123456789123456789 60 -> 0 +shlr7061 shiftright 123456123456789123456789123456789 61 -> 0 +shlr7062 shiftright 123456123456789123456789123456789 62 -> 0 +shlr7063 shiftright 123456123456789123456789123456789 63 -> 0 +shlr7064 shiftright 123456123456789123456789123456789 64 -> 0 +shlr7065 shiftright 123456123456789123456789123456789 65 -> 0 +shlr7066 shiftright 123456123456789123456789123456789 66 -> 0 +shlr7067 shiftright 123456123456789123456789123456789 67 -> 0 +shlr7068 shiftright 123456123456789123456789123456789 68 -> 0 +shlr7069 shiftright 123456123456789123456789123456789 69 -> 0 +shlr7070 shiftright 123456123456789123456789123456789 70 -> 0 +shlr7071 shiftright 123456123456789123456789123456789 71 -> 0 +shlr7072 shiftright 123456123456789123456789123456789 72 -> 0 +shlr7073 shiftright 123456123456789123456789123456789 73 -> 0 +shlr7074 shiftright 123456123456789123456789123456789 74 -> 0 +shlr7075 shiftright 123456123456789123456789123456789 75 -> 0 +shlr7076 shiftright 123456123456789123456789123456789 76 -> 0 +shlr7077 shiftright 123456123456789123456789123456789 77 -> 0 +shlr7078 shiftright 123456123456789123456789123456789 78 -> 0 +shlr7079 shiftright 123456123456789123456789123456789 79 -> 0 +shlr7080 shiftright 123456123456789123456789123456789 80 -> 0 +shlr7081 shiftright 123456123456789123456789123456789 81 -> 0 +shlr7082 shiftright 123456123456789123456789123456789 82 -> 0 +shlr7083 shiftright 123456123456789123456789123456789 83 -> 0 +shlr7084 shiftright 123456123456789123456789123456789 84 -> 0 +shlr7085 shiftright 123456123456789123456789123456789 85 -> 0 +shlr7086 shiftright 123456123456789123456789123456789 86 -> 0 +shlr7087 shiftright 123456123456789123456789123456789 87 -> 0 +shlr7088 shiftright 123456123456789123456789123456789 88 -> 0 +shlr7089 shiftright 123456123456789123456789123456789 89 -> 0 +shlr7090 shiftright 123456123456789123456789123456789 90 -> 0 +shlr7091 shiftright 123456123456789123456789123456789 91 -> 0 +shlr7092 shiftright 123456123456789123456789123456789 92 -> 0 +shlr7093 shiftright 123456123456789123456789123456789 93 -> 0 +shlr7094 shiftright 123456123456789123456789123456789 94 -> 0 +shlr7095 shiftright 123456123456789123456789123456789 95 -> 0 +shlr7096 shiftright 123456123456789123456789123456789 96 -> 0 +shlr7097 shiftright 123456123456789123456789123456789 97 -> 0 +shlr7098 shiftright 123456123456789123456789123456789 98 -> 0 +shlr7099 shiftright 123456123456789123456789123456789 99 -> 0 +shlr7100 shiftright 1234567123456789123456789123456789 0 -> 1234567123456789123456789123456789 +shlr7101 shiftright 1234567123456789123456789123456789 1 -> 123456712345678912345678912345678 +shlr7102 shiftright 1234567123456789123456789123456789 2 -> 12345671234567891234567891234567 +shlr7103 shiftright 1234567123456789123456789123456789 3 -> 1234567123456789123456789123456 +shlr7104 shiftright 1234567123456789123456789123456789 4 -> 123456712345678912345678912345 +shlr7105 shiftright 1234567123456789123456789123456789 5 -> 12345671234567891234567891234 +shlr7106 shiftright 1234567123456789123456789123456789 6 -> 1234567123456789123456789123 +shlr7107 shiftright 1234567123456789123456789123456789 7 -> 123456712345678912345678912 +shlr7108 shiftright 1234567123456789123456789123456789 8 -> 12345671234567891234567891 +shlr7109 shiftright 1234567123456789123456789123456789 9 -> 1234567123456789123456789 +shlr7110 shiftright 1234567123456789123456789123456789 10 -> 123456712345678912345678 +shlr7111 shiftright 1234567123456789123456789123456789 11 -> 12345671234567891234567 +shlr7112 shiftright 1234567123456789123456789123456789 12 -> 1234567123456789123456 +shlr7113 shiftright 1234567123456789123456789123456789 13 -> 123456712345678912345 +shlr7114 shiftright 1234567123456789123456789123456789 14 -> 12345671234567891234 +shlr7115 shiftright 1234567123456789123456789123456789 15 -> 1234567123456789123 +shlr7116 shiftright 1234567123456789123456789123456789 16 -> 123456712345678912 +shlr7117 shiftright 1234567123456789123456789123456789 17 -> 12345671234567891 +shlr7118 shiftright 1234567123456789123456789123456789 18 -> 1234567123456789 +shlr7119 shiftright 1234567123456789123456789123456789 19 -> 123456712345678 +shlr7120 shiftright 1234567123456789123456789123456789 20 -> 12345671234567 +shlr7121 shiftright 1234567123456789123456789123456789 21 -> 1234567123456 +shlr7122 shiftright 1234567123456789123456789123456789 22 -> 123456712345 +shlr7123 shiftright 1234567123456789123456789123456789 23 -> 12345671234 +shlr7124 shiftright 1234567123456789123456789123456789 24 -> 1234567123 +shlr7125 shiftright 1234567123456789123456789123456789 25 -> 123456712 +shlr7126 shiftright 1234567123456789123456789123456789 26 -> 12345671 +shlr7127 shiftright 1234567123456789123456789123456789 27 -> 1234567 +shlr7128 shiftright 1234567123456789123456789123456789 28 -> 123456 +shlr7129 shiftright 1234567123456789123456789123456789 29 -> 12345 +shlr7130 shiftright 1234567123456789123456789123456789 30 -> 1234 +shlr7131 shiftright 1234567123456789123456789123456789 31 -> 123 +shlr7132 shiftright 1234567123456789123456789123456789 32 -> 12 +shlr7133 shiftright 1234567123456789123456789123456789 33 -> 1 +shlr7134 shiftright 1234567123456789123456789123456789 34 -> 0 +shlr7135 shiftright 1234567123456789123456789123456789 35 -> 0 +shlr7136 shiftright 1234567123456789123456789123456789 36 -> 0 +shlr7137 shiftright 1234567123456789123456789123456789 37 -> 0 +shlr7138 shiftright 1234567123456789123456789123456789 38 -> 0 +shlr7139 shiftright 1234567123456789123456789123456789 39 -> 0 +shlr7140 shiftright 1234567123456789123456789123456789 40 -> 0 +shlr7141 shiftright 1234567123456789123456789123456789 41 -> 0 +shlr7142 shiftright 1234567123456789123456789123456789 42 -> 0 +shlr7143 shiftright 1234567123456789123456789123456789 43 -> 0 +shlr7144 shiftright 1234567123456789123456789123456789 44 -> 0 +shlr7145 shiftright 1234567123456789123456789123456789 45 -> 0 +shlr7146 shiftright 1234567123456789123456789123456789 46 -> 0 +shlr7147 shiftright 1234567123456789123456789123456789 47 -> 0 +shlr7148 shiftright 1234567123456789123456789123456789 48 -> 0 +shlr7149 shiftright 1234567123456789123456789123456789 49 -> 0 +shlr7150 shiftright 1234567123456789123456789123456789 50 -> 0 +shlr7151 shiftright 1234567123456789123456789123456789 51 -> 0 +shlr7152 shiftright 1234567123456789123456789123456789 52 -> 0 +shlr7153 shiftright 1234567123456789123456789123456789 53 -> 0 +shlr7154 shiftright 1234567123456789123456789123456789 54 -> 0 +shlr7155 shiftright 1234567123456789123456789123456789 55 -> 0 +shlr7156 shiftright 1234567123456789123456789123456789 56 -> 0 +shlr7157 shiftright 1234567123456789123456789123456789 57 -> 0 +shlr7158 shiftright 1234567123456789123456789123456789 58 -> 0 +shlr7159 shiftright 1234567123456789123456789123456789 59 -> 0 +shlr7160 shiftright 1234567123456789123456789123456789 60 -> 0 +shlr7161 shiftright 1234567123456789123456789123456789 61 -> 0 +shlr7162 shiftright 1234567123456789123456789123456789 62 -> 0 +shlr7163 shiftright 1234567123456789123456789123456789 63 -> 0 +shlr7164 shiftright 1234567123456789123456789123456789 64 -> 0 +shlr7165 shiftright 1234567123456789123456789123456789 65 -> 0 +shlr7166 shiftright 1234567123456789123456789123456789 66 -> 0 +shlr7167 shiftright 1234567123456789123456789123456789 67 -> 0 +shlr7168 shiftright 1234567123456789123456789123456789 68 -> 0 +shlr7169 shiftright 1234567123456789123456789123456789 69 -> 0 +shlr7170 shiftright 1234567123456789123456789123456789 70 -> 0 +shlr7171 shiftright 1234567123456789123456789123456789 71 -> 0 +shlr7172 shiftright 1234567123456789123456789123456789 72 -> 0 +shlr7173 shiftright 1234567123456789123456789123456789 73 -> 0 +shlr7174 shiftright 1234567123456789123456789123456789 74 -> 0 +shlr7175 shiftright 1234567123456789123456789123456789 75 -> 0 +shlr7176 shiftright 1234567123456789123456789123456789 76 -> 0 +shlr7177 shiftright 1234567123456789123456789123456789 77 -> 0 +shlr7178 shiftright 1234567123456789123456789123456789 78 -> 0 +shlr7179 shiftright 1234567123456789123456789123456789 79 -> 0 +shlr7180 shiftright 1234567123456789123456789123456789 80 -> 0 +shlr7181 shiftright 1234567123456789123456789123456789 81 -> 0 +shlr7182 shiftright 1234567123456789123456789123456789 82 -> 0 +shlr7183 shiftright 1234567123456789123456789123456789 83 -> 0 +shlr7184 shiftright 1234567123456789123456789123456789 84 -> 0 +shlr7185 shiftright 1234567123456789123456789123456789 85 -> 0 +shlr7186 shiftright 1234567123456789123456789123456789 86 -> 0 +shlr7187 shiftright 1234567123456789123456789123456789 87 -> 0 +shlr7188 shiftright 1234567123456789123456789123456789 88 -> 0 +shlr7189 shiftright 1234567123456789123456789123456789 89 -> 0 +shlr7190 shiftright 1234567123456789123456789123456789 90 -> 0 +shlr7191 shiftright 1234567123456789123456789123456789 91 -> 0 +shlr7192 shiftright 1234567123456789123456789123456789 92 -> 0 +shlr7193 shiftright 1234567123456789123456789123456789 93 -> 0 +shlr7194 shiftright 1234567123456789123456789123456789 94 -> 0 +shlr7195 shiftright 1234567123456789123456789123456789 95 -> 0 +shlr7196 shiftright 1234567123456789123456789123456789 96 -> 0 +shlr7197 shiftright 1234567123456789123456789123456789 97 -> 0 +shlr7198 shiftright 1234567123456789123456789123456789 98 -> 0 +shlr7199 shiftright 1234567123456789123456789123456789 99 -> 0 +shlr7200 shiftright 12345678123456789123456789123456789 0 -> 12345678123456789123456789123456789 +shlr7201 shiftright 12345678123456789123456789123456789 1 -> 1234567812345678912345678912345678 +shlr7202 shiftright 12345678123456789123456789123456789 2 -> 123456781234567891234567891234567 +shlr7203 shiftright 12345678123456789123456789123456789 3 -> 12345678123456789123456789123456 +shlr7204 shiftright 12345678123456789123456789123456789 4 -> 1234567812345678912345678912345 +shlr7205 shiftright 12345678123456789123456789123456789 5 -> 123456781234567891234567891234 +shlr7206 shiftright 12345678123456789123456789123456789 6 -> 12345678123456789123456789123 +shlr7207 shiftright 12345678123456789123456789123456789 7 -> 1234567812345678912345678912 +shlr7208 shiftright 12345678123456789123456789123456789 8 -> 123456781234567891234567891 +shlr7209 shiftright 12345678123456789123456789123456789 9 -> 12345678123456789123456789 +shlr7210 shiftright 12345678123456789123456789123456789 10 -> 1234567812345678912345678 +shlr7211 shiftright 12345678123456789123456789123456789 11 -> 123456781234567891234567 +shlr7212 shiftright 12345678123456789123456789123456789 12 -> 12345678123456789123456 +shlr7213 shiftright 12345678123456789123456789123456789 13 -> 1234567812345678912345 +shlr7214 shiftright 12345678123456789123456789123456789 14 -> 123456781234567891234 +shlr7215 shiftright 12345678123456789123456789123456789 15 -> 12345678123456789123 +shlr7216 shiftright 12345678123456789123456789123456789 16 -> 1234567812345678912 +shlr7217 shiftright 12345678123456789123456789123456789 17 -> 123456781234567891 +shlr7218 shiftright 12345678123456789123456789123456789 18 -> 12345678123456789 +shlr7219 shiftright 12345678123456789123456789123456789 19 -> 1234567812345678 +shlr7220 shiftright 12345678123456789123456789123456789 20 -> 123456781234567 +shlr7221 shiftright 12345678123456789123456789123456789 21 -> 12345678123456 +shlr7222 shiftright 12345678123456789123456789123456789 22 -> 1234567812345 +shlr7223 shiftright 12345678123456789123456789123456789 23 -> 123456781234 +shlr7224 shiftright 12345678123456789123456789123456789 24 -> 12345678123 +shlr7225 shiftright 12345678123456789123456789123456789 25 -> 1234567812 +shlr7226 shiftright 12345678123456789123456789123456789 26 -> 123456781 +shlr7227 shiftright 12345678123456789123456789123456789 27 -> 12345678 +shlr7228 shiftright 12345678123456789123456789123456789 28 -> 1234567 +shlr7229 shiftright 12345678123456789123456789123456789 29 -> 123456 +shlr7230 shiftright 12345678123456789123456789123456789 30 -> 12345 +shlr7231 shiftright 12345678123456789123456789123456789 31 -> 1234 +shlr7232 shiftright 12345678123456789123456789123456789 32 -> 123 +shlr7233 shiftright 12345678123456789123456789123456789 33 -> 12 +shlr7234 shiftright 12345678123456789123456789123456789 34 -> 1 +shlr7235 shiftright 12345678123456789123456789123456789 35 -> 0 +shlr7236 shiftright 12345678123456789123456789123456789 36 -> 0 +shlr7237 shiftright 12345678123456789123456789123456789 37 -> 0 +shlr7238 shiftright 12345678123456789123456789123456789 38 -> 0 +shlr7239 shiftright 12345678123456789123456789123456789 39 -> 0 +shlr7240 shiftright 12345678123456789123456789123456789 40 -> 0 +shlr7241 shiftright 12345678123456789123456789123456789 41 -> 0 +shlr7242 shiftright 12345678123456789123456789123456789 42 -> 0 +shlr7243 shiftright 12345678123456789123456789123456789 43 -> 0 +shlr7244 shiftright 12345678123456789123456789123456789 44 -> 0 +shlr7245 shiftright 12345678123456789123456789123456789 45 -> 0 +shlr7246 shiftright 12345678123456789123456789123456789 46 -> 0 +shlr7247 shiftright 12345678123456789123456789123456789 47 -> 0 +shlr7248 shiftright 12345678123456789123456789123456789 48 -> 0 +shlr7249 shiftright 12345678123456789123456789123456789 49 -> 0 +shlr7250 shiftright 12345678123456789123456789123456789 50 -> 0 +shlr7251 shiftright 12345678123456789123456789123456789 51 -> 0 +shlr7252 shiftright 12345678123456789123456789123456789 52 -> 0 +shlr7253 shiftright 12345678123456789123456789123456789 53 -> 0 +shlr7254 shiftright 12345678123456789123456789123456789 54 -> 0 +shlr7255 shiftright 12345678123456789123456789123456789 55 -> 0 +shlr7256 shiftright 12345678123456789123456789123456789 56 -> 0 +shlr7257 shiftright 12345678123456789123456789123456789 57 -> 0 +shlr7258 shiftright 12345678123456789123456789123456789 58 -> 0 +shlr7259 shiftright 12345678123456789123456789123456789 59 -> 0 +shlr7260 shiftright 12345678123456789123456789123456789 60 -> 0 +shlr7261 shiftright 12345678123456789123456789123456789 61 -> 0 +shlr7262 shiftright 12345678123456789123456789123456789 62 -> 0 +shlr7263 shiftright 12345678123456789123456789123456789 63 -> 0 +shlr7264 shiftright 12345678123456789123456789123456789 64 -> 0 +shlr7265 shiftright 12345678123456789123456789123456789 65 -> 0 +shlr7266 shiftright 12345678123456789123456789123456789 66 -> 0 +shlr7267 shiftright 12345678123456789123456789123456789 67 -> 0 +shlr7268 shiftright 12345678123456789123456789123456789 68 -> 0 +shlr7269 shiftright 12345678123456789123456789123456789 69 -> 0 +shlr7270 shiftright 12345678123456789123456789123456789 70 -> 0 +shlr7271 shiftright 12345678123456789123456789123456789 71 -> 0 +shlr7272 shiftright 12345678123456789123456789123456789 72 -> 0 +shlr7273 shiftright 12345678123456789123456789123456789 73 -> 0 +shlr7274 shiftright 12345678123456789123456789123456789 74 -> 0 +shlr7275 shiftright 12345678123456789123456789123456789 75 -> 0 +shlr7276 shiftright 12345678123456789123456789123456789 76 -> 0 +shlr7277 shiftright 12345678123456789123456789123456789 77 -> 0 +shlr7278 shiftright 12345678123456789123456789123456789 78 -> 0 +shlr7279 shiftright 12345678123456789123456789123456789 79 -> 0 +shlr7280 shiftright 12345678123456789123456789123456789 80 -> 0 +shlr7281 shiftright 12345678123456789123456789123456789 81 -> 0 +shlr7282 shiftright 12345678123456789123456789123456789 82 -> 0 +shlr7283 shiftright 12345678123456789123456789123456789 83 -> 0 +shlr7284 shiftright 12345678123456789123456789123456789 84 -> 0 +shlr7285 shiftright 12345678123456789123456789123456789 85 -> 0 +shlr7286 shiftright 12345678123456789123456789123456789 86 -> 0 +shlr7287 shiftright 12345678123456789123456789123456789 87 -> 0 +shlr7288 shiftright 12345678123456789123456789123456789 88 -> 0 +shlr7289 shiftright 12345678123456789123456789123456789 89 -> 0 +shlr7290 shiftright 12345678123456789123456789123456789 90 -> 0 +shlr7291 shiftright 12345678123456789123456789123456789 91 -> 0 +shlr7292 shiftright 12345678123456789123456789123456789 92 -> 0 +shlr7293 shiftright 12345678123456789123456789123456789 93 -> 0 +shlr7294 shiftright 12345678123456789123456789123456789 94 -> 0 +shlr7295 shiftright 12345678123456789123456789123456789 95 -> 0 +shlr7296 shiftright 12345678123456789123456789123456789 96 -> 0 +shlr7297 shiftright 12345678123456789123456789123456789 97 -> 0 +shlr7298 shiftright 12345678123456789123456789123456789 98 -> 0 +shlr7299 shiftright 12345678123456789123456789123456789 99 -> 0 +shlr7300 shiftright 123456789123456789123456789123456789 0 -> 123456789123456789123456789123456789 +shlr7301 shiftright 123456789123456789123456789123456789 1 -> 12345678912345678912345678912345678 +shlr7302 shiftright 123456789123456789123456789123456789 2 -> 1234567891234567891234567891234567 +shlr7303 shiftright 123456789123456789123456789123456789 3 -> 123456789123456789123456789123456 +shlr7304 shiftright 123456789123456789123456789123456789 4 -> 12345678912345678912345678912345 +shlr7305 shiftright 123456789123456789123456789123456789 5 -> 1234567891234567891234567891234 +shlr7306 shiftright 123456789123456789123456789123456789 6 -> 123456789123456789123456789123 +shlr7307 shiftright 123456789123456789123456789123456789 7 -> 12345678912345678912345678912 +shlr7308 shiftright 123456789123456789123456789123456789 8 -> 1234567891234567891234567891 +shlr7309 shiftright 123456789123456789123456789123456789 9 -> 123456789123456789123456789 +shlr7310 shiftright 123456789123456789123456789123456789 10 -> 12345678912345678912345678 +shlr7311 shiftright 123456789123456789123456789123456789 11 -> 1234567891234567891234567 +shlr7312 shiftright 123456789123456789123456789123456789 12 -> 123456789123456789123456 +shlr7313 shiftright 123456789123456789123456789123456789 13 -> 12345678912345678912345 +shlr7314 shiftright 123456789123456789123456789123456789 14 -> 1234567891234567891234 +shlr7315 shiftright 123456789123456789123456789123456789 15 -> 123456789123456789123 +shlr7316 shiftright 123456789123456789123456789123456789 16 -> 12345678912345678912 +shlr7317 shiftright 123456789123456789123456789123456789 17 -> 1234567891234567891 +shlr7318 shiftright 123456789123456789123456789123456789 18 -> 123456789123456789 +shlr7319 shiftright 123456789123456789123456789123456789 19 -> 12345678912345678 +shlr7320 shiftright 123456789123456789123456789123456789 20 -> 1234567891234567 +shlr7321 shiftright 123456789123456789123456789123456789 21 -> 123456789123456 +shlr7322 shiftright 123456789123456789123456789123456789 22 -> 12345678912345 +shlr7323 shiftright 123456789123456789123456789123456789 23 -> 1234567891234 +shlr7324 shiftright 123456789123456789123456789123456789 24 -> 123456789123 +shlr7325 shiftright 123456789123456789123456789123456789 25 -> 12345678912 +shlr7326 shiftright 123456789123456789123456789123456789 26 -> 1234567891 +shlr7327 shiftright 123456789123456789123456789123456789 27 -> 123456789 +shlr7328 shiftright 123456789123456789123456789123456789 28 -> 12345678 +shlr7329 shiftright 123456789123456789123456789123456789 29 -> 1234567 +shlr7330 shiftright 123456789123456789123456789123456789 30 -> 123456 +shlr7331 shiftright 123456789123456789123456789123456789 31 -> 12345 +shlr7332 shiftright 123456789123456789123456789123456789 32 -> 1234 +shlr7333 shiftright 123456789123456789123456789123456789 33 -> 123 +shlr7334 shiftright 123456789123456789123456789123456789 34 -> 12 +shlr7335 shiftright 123456789123456789123456789123456789 35 -> 1 +shlr7336 shiftright 123456789123456789123456789123456789 36 -> 0 +shlr7337 shiftright 123456789123456789123456789123456789 37 -> 0 +shlr7338 shiftright 123456789123456789123456789123456789 38 -> 0 +shlr7339 shiftright 123456789123456789123456789123456789 39 -> 0 +shlr7340 shiftright 123456789123456789123456789123456789 40 -> 0 +shlr7341 shiftright 123456789123456789123456789123456789 41 -> 0 +shlr7342 shiftright 123456789123456789123456789123456789 42 -> 0 +shlr7343 shiftright 123456789123456789123456789123456789 43 -> 0 +shlr7344 shiftright 123456789123456789123456789123456789 44 -> 0 +shlr7345 shiftright 123456789123456789123456789123456789 45 -> 0 +shlr7346 shiftright 123456789123456789123456789123456789 46 -> 0 +shlr7347 shiftright 123456789123456789123456789123456789 47 -> 0 +shlr7348 shiftright 123456789123456789123456789123456789 48 -> 0 +shlr7349 shiftright 123456789123456789123456789123456789 49 -> 0 +shlr7350 shiftright 123456789123456789123456789123456789 50 -> 0 +shlr7351 shiftright 123456789123456789123456789123456789 51 -> 0 +shlr7352 shiftright 123456789123456789123456789123456789 52 -> 0 +shlr7353 shiftright 123456789123456789123456789123456789 53 -> 0 +shlr7354 shiftright 123456789123456789123456789123456789 54 -> 0 +shlr7355 shiftright 123456789123456789123456789123456789 55 -> 0 +shlr7356 shiftright 123456789123456789123456789123456789 56 -> 0 +shlr7357 shiftright 123456789123456789123456789123456789 57 -> 0 +shlr7358 shiftright 123456789123456789123456789123456789 58 -> 0 +shlr7359 shiftright 123456789123456789123456789123456789 59 -> 0 +shlr7360 shiftright 123456789123456789123456789123456789 60 -> 0 +shlr7361 shiftright 123456789123456789123456789123456789 61 -> 0 +shlr7362 shiftright 123456789123456789123456789123456789 62 -> 0 +shlr7363 shiftright 123456789123456789123456789123456789 63 -> 0 +shlr7364 shiftright 123456789123456789123456789123456789 64 -> 0 +shlr7365 shiftright 123456789123456789123456789123456789 65 -> 0 +shlr7366 shiftright 123456789123456789123456789123456789 66 -> 0 +shlr7367 shiftright 123456789123456789123456789123456789 67 -> 0 +shlr7368 shiftright 123456789123456789123456789123456789 68 -> 0 +shlr7369 shiftright 123456789123456789123456789123456789 69 -> 0 +shlr7370 shiftright 123456789123456789123456789123456789 70 -> 0 +shlr7371 shiftright 123456789123456789123456789123456789 71 -> 0 +shlr7372 shiftright 123456789123456789123456789123456789 72 -> 0 +shlr7373 shiftright 123456789123456789123456789123456789 73 -> 0 +shlr7374 shiftright 123456789123456789123456789123456789 74 -> 0 +shlr7375 shiftright 123456789123456789123456789123456789 75 -> 0 +shlr7376 shiftright 123456789123456789123456789123456789 76 -> 0 +shlr7377 shiftright 123456789123456789123456789123456789 77 -> 0 +shlr7378 shiftright 123456789123456789123456789123456789 78 -> 0 +shlr7379 shiftright 123456789123456789123456789123456789 79 -> 0 +shlr7380 shiftright 123456789123456789123456789123456789 80 -> 0 +shlr7381 shiftright 123456789123456789123456789123456789 81 -> 0 +shlr7382 shiftright 123456789123456789123456789123456789 82 -> 0 +shlr7383 shiftright 123456789123456789123456789123456789 83 -> 0 +shlr7384 shiftright 123456789123456789123456789123456789 84 -> 0 +shlr7385 shiftright 123456789123456789123456789123456789 85 -> 0 +shlr7386 shiftright 123456789123456789123456789123456789 86 -> 0 +shlr7387 shiftright 123456789123456789123456789123456789 87 -> 0 +shlr7388 shiftright 123456789123456789123456789123456789 88 -> 0 +shlr7389 shiftright 123456789123456789123456789123456789 89 -> 0 +shlr7390 shiftright 123456789123456789123456789123456789 90 -> 0 +shlr7391 shiftright 123456789123456789123456789123456789 91 -> 0 +shlr7392 shiftright 123456789123456789123456789123456789 92 -> 0 +shlr7393 shiftright 123456789123456789123456789123456789 93 -> 0 +shlr7394 shiftright 123456789123456789123456789123456789 94 -> 0 +shlr7395 shiftright 123456789123456789123456789123456789 95 -> 0 +shlr7396 shiftright 123456789123456789123456789123456789 96 -> 0 +shlr7397 shiftright 123456789123456789123456789123456789 97 -> 0 +shlr7398 shiftright 123456789123456789123456789123456789 98 -> 0 +shlr7399 shiftright 123456789123456789123456789123456789 99 -> 0 Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/testruntest.decTest ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/testdata/testruntest.decTest Thu Jan 21 18:27:06 2010 @@ -0,0 +1,121 @@ + + +-- Quis custodiet ipsos custodes? +-- Small sanity check that failures are indeed reported. + + +Precision: 100 +maxExponent: 100000 +minExponent: -100000 + + +rt_should_fail000 tosci 918231.131 -> 8123813091.1 +rt_should_fail001 apply 0.0391301 -> 10E+2387432 +rt_should_fail002 toeng 1.1111e22 -> 433 +rt_should_fail003 class NaN -> +Infinity + +rt_should_fail004 abs -99 -> -99 +rt_should_fail005 copy 2 -> 3 +rt_should_fail006 copyabs -2 -> -2 +rt_should_fail007 copynegate -2 -> -2 +rt_should_fail008 exp 5 -> 101 +rt_should_fail009 invert 0101 -> 1111 +rt_should_fail010 invroot 35 -> 47 +rt_should_fail011 ln 101 -> 5 +rt_should_fail012 log10 200 -> 137 +rt_should_fail013 logb 1000 -> 440 +rt_should_fail014 minus 22 -> 222 +rt_should_fail015 nextminus 12838 -> 213123 +rt_should_fail016 nextplus 23132 -> 3223 +rt_should_fail017 plus 102 -> 110 +rt_should_fail018 reduce 0.21321 -> 213213892 +rt_should_fail019 squareroot 1281 -> 7 +rt_should_fail020 tointegral 1281.444 -> 1781 +rt_should_fail021 tointegralx 1281.444 -> 1783 + +rt_should_fail022 samequantum 88 99 -> -1 +rt_should_fail023 samequantum_eq 88 -> -1 + +rt_should_fail024 add 0.111 0.222 -> -133.1381 +rt_should_fail025 and 1010101 111 -> 100000000 +rt_should_fail026 copysign -2 3 -> 1000 +rt_should_fail027 divide 22 0.001 -> 27 +rt_should_fail028 divideint 11 22 -> 11 +rt_should_fail029 max 231 13221 -> 12312 +rt_should_fail030 maxmag 320193 12312 -> 322 +rt_should_fail031 min 1029 322323 -> 3322 +rt_should_fail032 minmag 23232 1230921 -> 1232131 +rt_should_fail033 multiply 25 25 -> 25 +rt_should_fail034 nexttoward 3893792 0.2 -> 0.21 +rt_should_fail035 or 1010101 111 -> 100000000 +rt_should_fail036 power 0.444 0.554 -> 244 +rt_should_fail037 quantize 234 22 -> 0.2342 +rt_should_fail038 remainder 0 1 -> 2 +rt_should_fail039 remaindernear 4 1 -> 774 +rt_should_fail040 rotate 2 2 -> 1000 +rt_should_fail041 scaleb 111 20 -> 22 +rt_should_fail042 shift 10 -1 -> 100 +rt_should_fail043 subtract 0.444 0.123 -> 0E-11 +rt_should_fail044 xor 11111111111 0000011 -> 10101 + +rt_should_fail045 add_eq 0.111 -> -133.1381 +rt_should_fail046 and_eq 1010101 -> 100000000 +rt_should_fail047 copysign_eq -2 -> 1000 +rt_should_fail048 divide_eq 22 -> 27 +rt_should_fail049 divideint_eq 11 -> 11 +rt_should_fail050 max_eq 231 -> 12312 +rt_should_fail051 maxmag_eq 320193 -> 322 +rt_should_fail052 min_eq 1029 -> 3322 +rt_should_fail053 minmag_eq 23232 -> 1232131 +rt_should_fail054 multiply_eq 25 -> 25 +rt_should_fail055 nexttoward_eq 3893792 -> 0.21 +rt_should_fail056 or_eq 1010101 -> 100000000 +rt_should_fail057 power_eq 0.444 -> 244 +rt_should_fail058 quantize_eq 234 -> 0.2342 +rt_should_fail059 remainder_eq 5 -> 2 +rt_should_fail060 remaindernear_eq 4 -> 774 +rt_should_fail061 rotate_eq 2 -> 1000 +rt_should_fail062 scaleb_eq 111 -> 22 +rt_should_fail063 shift_eq 10 -> 100 +rt_should_fail064 subtract_eq 0.444 -> 345 +rt_should_fail065 xor_eq 11111111 -> 1111 + +rt_should_fail066 divmod 22 8 -> 27 28 +rt_should_fail067 divmod_eq 22 -> 27 28 + +rt_should_fail068 fma 22 11 377 -> 551 +rt_should_fail069 powmod 12 11 10 -> 27 + +rt_should_fail070 fma_eq_eq_op 11 377 -> 551 +rt_should_fail071 powmod_eq_eq_op 11 10 -> 27 + +rt_should_fail072 fma_op_eq_eq 11 377 -> 551 +rt_should_fail073 powmod_op_eq_eq 11 10 -> 27 + +rt_should_fail074 fma_eq_eq_eq 11 -> 551 +rt_should_fail075 powmod_eq_eq_eq 11 -> 27 + +rt_should_fail076 compare 102938 012938 -> 0 +rt_should_fail077 comparesig 102938 012938 -> 0 +rt_should_fail078 comparetotal 1239210 -2103 -> -1 +rt_should_fail079 comparetotmag 1239210 -2103 -> -1 + +rt_should_fail080 compare_eq 102938 -> 1 +rt_should_fail081 comparesig_eq 102938 -> 1 +rt_should_fail082 comparetotal_eq 1239210 -> -1 +rt_should_fail083 comparetotmag_eq 1239210 -> -1 + +rt_should_fail084 shiftleft 10239 5 -> 129 +rt_should_fail085 shiftright 1029 3 -> 32 +rt_should_fail086 baseconv 2130 -> 3432 + + +-- status test + +rt_should_fail087 divide 10 0 -> NaN +rt_should_fail088 power 1E44 1E444444 -> Infinity +rt_should_fail089 remaindernear 10 6 -> -2 Clamped Conversion_syntax Division_by_zero Division_impossible Division_undefined Fpu_error Inexact Invalid_context Invalid_operation Malloc_error Not_implemented Overflow Rounded Subnormal Underflow + + + + Added: python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/vg-runalltests.sh ============================================================================== --- (empty file) +++ python/branches/py3k-cdecimal/Lib/test/decimal_extended_tests/c_tests/vg-runalltests.sh Thu Jan 21 18:27:06 2010 @@ -0,0 +1,35 @@ +#!/bin/sh + +echo "" +echo "Running official tests ..." +echo "" + +valgrind --tool=memcheck --leak-check=full --leak-resolution=high \ + --db-attach=yes --show-reachable=yes \ + ./runtest --all official.decTest + +echo "" +echo "Running additional tests ..." +echo "" + +valgrind --tool=memcheck --leak-check=full --leak-resolution=high \ + --db-attach=yes --show-reachable=yes \ + ./runtest --all additional.decTest + +echo "" +echo "Running long tests ..." +echo "" + +for file in mpd_mpz_add mpd_mpz_sub mpd_mpz_mul mpd_mpz_divmod \ + karatsuba_fnt karatsuba_fnt2 +do + if [ -f $file ]; then + valgrind --tool=memcheck --leak-check=full --leak-resolution=high \ + --db-attach=yes --show-reachable=yes \ + ./$file + echo "" + fi +done + + + From python-checkins at python.org Thu Jan 21 18:41:47 2010 From: python-checkins at python.org (matthias.klose) Date: Thu, 21 Jan 2010 17:41:47 -0000 Subject: [Python-checkins] r77665 - in python/branches/release25-maint: Misc/NEWS Modules/expat/xmlparse.c Message-ID: Author: matthias.klose Date: Thu Jan 21 18:41:47 2010 New Revision: 77665 Log: - Fix DoS via XML document with malformed UTF-8 sequences (CVE_2009_3560). Modified: python/branches/release25-maint/Misc/NEWS python/branches/release25-maint/Modules/expat/xmlparse.c Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Thu Jan 21 18:41:47 2010 @@ -4,6 +4,17 @@ (editors: check NEWS.help for information about editing NEWS using ReST.) +What's New in Python 2.5.5c2? +============================= + +*Release date: xx-xxx-2010* + +Extension Modules +----------------- + +- Fix DoS via XML document with malformed UTF-8 sequences (CVE_2009_3560). + + What's New in Python 2.5.5c1? ============================= Modified: python/branches/release25-maint/Modules/expat/xmlparse.c ============================================================================== --- python/branches/release25-maint/Modules/expat/xmlparse.c (original) +++ python/branches/release25-maint/Modules/expat/xmlparse.c Thu Jan 21 18:41:47 2010 @@ -3682,6 +3682,9 @@ return XML_ERROR_UNCLOSED_TOKEN; case XML_TOK_PARTIAL_CHAR: return XML_ERROR_PARTIAL_CHAR; + case -XML_TOK_PROLOG_S: + tok = -tok; + break; case XML_TOK_NONE: #ifdef XML_DTD /* for internal PE NOT referenced between declarations */ From python-checkins at python.org Thu Jan 21 18:43:31 2010 From: python-checkins at python.org (matthias.klose) Date: Thu, 21 Jan 2010 17:43:31 -0000 Subject: [Python-checkins] r77666 - in python/branches/release25-maint: Misc/NEWS Modules/expat/xmltok_impl.c Message-ID: Author: matthias.klose Date: Thu Jan 21 18:43:31 2010 New Revision: 77666 Log: - expat: Fix DoS via malformed XML (CVE-2009-3720). Modified: python/branches/release25-maint/Misc/NEWS python/branches/release25-maint/Modules/expat/xmltok_impl.c Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Thu Jan 21 18:43:31 2010 @@ -12,7 +12,8 @@ Extension Modules ----------------- -- Fix DoS via XML document with malformed UTF-8 sequences (CVE_2009_3560). +- expat: Fix DoS via XML document with malformed UTF-8 sequences (CVE_2009_3560). +- expat: Fix DoS via malformed XML (CVE-2009-3720). What's New in Python 2.5.5c1? Modified: python/branches/release25-maint/Modules/expat/xmltok_impl.c ============================================================================== --- python/branches/release25-maint/Modules/expat/xmltok_impl.c (original) +++ python/branches/release25-maint/Modules/expat/xmltok_impl.c Thu Jan 21 18:43:31 2010 @@ -1741,7 +1741,7 @@ const char *end, POSITION *pos) { - while (ptr != end) { + while (ptr < end) { switch (BYTE_TYPE(enc, ptr)) { #define LEAD_CASE(n) \ case BT_LEAD ## n: \ From python-checkins at python.org Thu Jan 21 19:32:27 2010 From: python-checkins at python.org (mark.dickinson) Date: Thu, 21 Jan 2010 18:32:27 -0000 Subject: [Python-checkins] r77667 - python/trunk/Lib/test/test_strtod.py Message-ID: Author: mark.dickinson Date: Thu Jan 21 19:32:27 2010 New Revision: 77667 Log: Add two more test_strtod test values. Modified: python/trunk/Lib/test/test_strtod.py Modified: python/trunk/Lib/test/test_strtod.py ============================================================================== --- python/trunk/Lib/test/test_strtod.py (original) +++ python/trunk/Lib/test/test_strtod.py Thu Jan 21 19:32:27 2010 @@ -313,6 +313,42 @@ '4106250198039490000000000000000000000000000000000000000e-38', # issue 7632 bug 8: the following produced 10.0 '10.900000000000000012345678912345678912345', + + # two humongous values from issue 7743 + '116512874940594195638617907092569881519034793229385' #... + '228569165191541890846564669771714896916084883987920' #... + '473321268100296857636200926065340769682863349205363' #... + '349247637660671783209907949273683040397979984107806' #... + '461822693332712828397617946036239581632976585100633' #... + '520260770761060725403904123144384571612073732754774' #... + '588211944406465572591022081973828448927338602556287' #... + '851831745419397433012491884869454462440536895047499' #... + '436551974649731917170099387762871020403582994193439' #... + '761933412166821484015883631622539314203799034497982' #... + '130038741741727907429575673302461380386596501187482' #... + '006257527709842179336488381672818798450229339123527' #... + '858844448336815912020452294624916993546388956561522' #... + '161875352572590420823607478788399460162228308693742' #... + '05287663441403533948204085390898399055004119873046875e-1075', + + '525440653352955266109661060358202819561258984964913' #... + '892256527849758956045218257059713765874251436193619' #... + '443248205998870001633865657517447355992225852945912' #... + '016668660000210283807209850662224417504752264995360' #... + '631512007753855801075373057632157738752800840302596' #... + '237050247910530538250008682272783660778181628040733' #... + '653121492436408812668023478001208529190359254322340' #... + '397575185248844788515410722958784640926528544043090' #... + '115352513640884988017342469275006999104519620946430' #... + '818767147966495485406577703972687838176778993472989' #... + '561959000047036638938396333146685137903018376496408' #... + '319705333868476925297317136513970189073693314710318' #... + '991252811050501448326875232850600451776091303043715' #... + '157191292827614046876950225714743118291034780466325' #... + '085141343734564915193426994587206432697337118211527' #... + '278968731294639353354774788602467795167875117481660' #... + '4738791256853675690543663283782215866825e-1180', + # exercise exit conditions in bigcomp comparison loop '2602129298404963083833853479113577253105939995688e2', '260212929840496308383385347911357725310593999568896e0', From python-checkins at python.org Thu Jan 21 20:32:25 2010 From: python-checkins at python.org (mark.dickinson) Date: Thu, 21 Jan 2010 19:32:25 -0000 Subject: [Python-checkins] r77668 - in python/branches/py3k-cdecimal: Doc/c-api/init.rst Doc/library/2to3.rst Doc/library/email.generator.rst Doc/library/email.message.rst Doc/library/email.mime.rst Doc/library/gzip.rst Doc/library/importlib.rst Doc/library/inspect.rst Doc/library/math.rst Doc/library/os.rst Doc/library/re.rst Doc/library/stdtypes.rst Doc/library/unittest.rst Doc/library/weakref.rst Doc/library/zipimport.rst Doc/using/windows.rst Doc/whatsnew/2.7.rst Include/bytearrayobject.h Lib/_weakrefset.py Lib/cmd.py Lib/distutils/ccompiler.py Lib/distutils/tests/test_unixccompiler.py Lib/distutils/unixccompiler.py Lib/email/generator.py Lib/email/test/data/msg_45.txt Lib/email/test/test_email.py Lib/email/utils.py Lib/gzip.py Lib/idlelib/NEWS.txt Lib/logging/__init__.py Lib/pickle.py Lib/platform.py Lib/ssl.py Lib/test/crashers/bogus_code_obj.py Lib/test/floating_points.txt Lib/test/https_svn_python_org_root.pem Lib/test/pickletester.py Lib/test/regrtest.py Lib/test/test_bigmem.py Lib/test/test_binascii.py Lib/test/test_builtin.py Lib/test/test_bytes.py Lib/test/test_cgi.py Lib/test/test_cmd.py Lib/test/test_cmd_line.py Lib/test/test_cmd_line_script.py Lib/test/test_collections.py Lib/test/test_compile.py Lib/test/test_contains.py Lib/test/test_copyreg.py Lib/test/test_csv.py Lib/test/test_datetime.py Lib/test/test_dbm.py Lib/test/test_dbm_dumb.py Lib/test/test_dbm_gnu.py Lib/test/test_dbm_ndbm.py Lib/test/test_decimal.py Lib/test/test_defaultdict.py Lib/test/test_deque.py Lib/test/test_descr.py Lib/test/test_dict.py Lib/test/test_dictviews.py Lib/test/test_exceptions.py Lib/test/test_float.py Lib/test/test_funcattrs.py Lib/test/test_glob.py Lib/test/test_gzip.py Lib/test/test_hashlib.py Lib/test/test_http_cookiejar.py Lib/test/test_import.py Lib/test/test_index.py Lib/test/test_inspect.py Lib/test/test_ioctl.py Lib/test/test_iter.py Lib/test/test_logging.py Lib/test/test_long.py Lib/test/test_mmap.py Lib/test/test_multiprocessing.py Lib/test/test_os.py Lib/test/test_peepholer.py Lib/test/test_pep352.py Lib/test/test_poplib.py Lib/test/test_posix.py Lib/test/test_posixpath.py Lib/test/test_pwd.py Lib/test/test_pyclbr.py Lib/test/test_pydoc.py Lib/test/test_raise.py Lib/test/test_random.py Lib/test/test_range.py Lib/test/test_re.py Lib/test/test_reprlib.py Lib/test/test_runpy.py Lib/test/test_sax.py Lib/test/test_scope.py Lib/test/test_set.py Lib/test/test_site.py Lib/test/test_socket.py Lib/test/test_strtod.py Lib/test/test_structseq.py Lib/test/test_subprocess.py Lib/test/test_sys.py Lib/test/test_tarfile.py Lib/test/test_telnetlib.py Lib/test/test_tempfile.py Lib/test/test_threading.py Lib/test/test_threading_local.py Lib/test/test_traceback.py Lib/test/test_types.py Lib/test/test_unicode.py Lib/test/test_unicode_file.py Lib/test/test_unicodedata.py Lib/test/test_unittest.py Lib/test/test_urllib.py Lib/test/test_urllib2.py Lib/test/test_userdict.py Lib/test/test_warnings.py Lib/test/test_wave.py Lib/test/test_weakref.py Lib/test/test_weakset.py Lib/test/test_wsgiref.py Lib/test/test_zipfile.py Lib/test/test_zipimport.py Lib/test/test_zipimport_support.py Lib/turtle.py Lib/unittest/__init__.py Lib/wave.py Lib/weakref.py Mac/Resources/app/Info.plist.in Makefile.pre.in Misc/ACKS Misc/NEWS Misc/RPM/python-3.2.spec Misc/build.sh Misc/developers.txt Misc/gdbinit Modules/_ctypes/libffi/fficonfig.py.in Modules/_hashopenssl.c Modules/_pickle.c Modules/_sre.c Modules/_testcapimodule.c Modules/binascii.c Modules/posixmodule.c Objects/bytearrayobject.c Objects/bytesobject.c Objects/longobject.c Objects/stringlib/count.h Objects/stringlib/ctype.h Objects/stringlib/fastsearch.h Objects/stringlib/find.h Objects/stringlib/partition.h Objects/stringlib/split.h Objects/stringlib/stringdefs.h Objects/stringlib/transmogrify.h Objects/stringlib/unicodedefs.h Objects/unicodeobject.c PC/VS8.0/pythoncore.vcproj PCbuild/pythoncore.vcproj Python/dtoa.c Python/peephole.c Tools/ccbench Tools/iobench setup.py Message-ID: Author: mark.dickinson Date: Thu Jan 21 20:32:23 2010 New Revision: 77668 Log: Merged revisions 77341,77355,77363,77365,77373,77375,77380,77383,77387-77389,77393-77396,77398-77399,77405,77407-77408,77414,77417,77427,77429,77433,77437,77440-77441,77444,77447,77449,77452,77457,77459,77462,77464-77465,77468,77471,77474,77476,77479,77485,77494,77498,77501,77508,77516,77520-77521,77523,77529,77535,77539,77542-77543,77549,77551,77568,77571,77576,77579,77583,77590,77597,77602,77604 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77341 | mark.dickinson | 2010-01-07 09:31:48 +0000 (Thu, 07 Jan 2010) | 9 lines Merged revisions 77339 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77339 | mark.dickinson | 2010-01-07 09:28:29 +0000 (Thu, 07 Jan 2010) | 1 line Eric Smith was missing fro m the issue 7117 whatsnew attribution. ........ ................ r77355 | antoine.pitrou | 2010-01-07 17:57:31 +0000 (Thu, 07 Jan 2010) | 18 lines Merged revisions 77352-77354 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77352 | antoine.pitrou | 2010-01-07 18:46:49 +0100 (jeu., 07 janv. 2010) | 5 lines Issue #7455: Fix possible crash in cPickle on invalid input. Patch by Florent Xicluna. ........ r77353 | antoine.pitrou | 2010-01-07 18:49:37 +0100 (jeu., 07 janv. 2010) | 3 lines Fix attribution. Florent actually repackaged and reviewed Victor's patch (sorry!). ........ r77354 | antoine.pitrou | 2010-01-07 18:54:10 +0100 (jeu., 07 janv. 2010) | 3 lines Fix reattribution mistake when fixing attribution mistake! ........ ................ r77363 | mark.dickinson | 2010-01-08 16:55:38 +0000 (Fri, 08 Jan 2010) | 8 lines Blocked revisions 77362 via svnmerge ........ r77362 | mark.dickinson | 2010-01-08 16:53:56 +0000 (Fri, 08 Jan 2010) | 1 line Backport some float repr tests that were missed in issue 7117. ........ ................ r77365 | antoine.pitrou | 2010-01-08 17:54:23 +0000 (Fri, 08 Jan 2010) | 3 lines Issue #7105: Make WeakKeyDictionary and WeakValueDictionary robust against the destruction of weakref'ed objects while iterating. ................ r77373 | antoine.pitrou | 2010-01-08 19:22:50 +0000 (Fri, 08 Jan 2010) | 11 lines Blocked revisions 77370 via svnmerge ........ r77370 | antoine.pitrou | 2010-01-08 20:20:17 +0100 (ven., 08 janv. 2010) | 5 lines Issue #7092: Remove py3k warning when importing cPickle. 2to3 handles renaming of `cPickle` to `pickle`. The warning was annoying since there's no alternative to cPickle if you care about performance. Patch by Florent Xicluna. ........ ................ r77375 | antoine.pitrou | 2010-01-08 19:42:10 +0000 (Fri, 08 Jan 2010) | 10 lines Merged revisions 77374 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77374 | antoine.pitrou | 2010-01-08 20:39:04 +0100 (ven., 08 janv. 2010) | 4 lines Remove obsolete warning filters in regrtest.py (from issue #7092 -- patch by Florent Xicluna). ........ ................ r77380 | tarek.ziade | 2010-01-08 23:57:53 +0000 (Fri, 08 Jan 2010) | 9 lines Merged revisions 77377 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77377 | tarek.ziade | 2010-01-09 00:42:23 +0100 (Sat, 09 Jan 2010) | 1 line Fixed #7617: all flavors of gcc should be recognized now ........ ................ r77383 | georg.brandl | 2010-01-09 09:48:46 +0000 (Sat, 09 Jan 2010) | 9 lines Merged revisions 77382 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77382 | georg.brandl | 2010-01-09 10:47:11 +0100 (Sa, 09 Jan 2010) | 1 line #7422: make it clear that getargspec() only works on Python functions. ........ ................ r77387 | benjamin.peterson | 2010-01-09 17:36:21 +0000 (Sat, 09 Jan 2010) | 12 lines Blocked revisions 77384,77386 via svnmerge ........ r77384 | benjamin.peterson | 2010-01-09 10:34:06 -0600 (Sat, 09 Jan 2010) | 1 line bump version to 2.7a2 ........ r77386 | benjamin.peterson | 2010-01-09 11:30:31 -0600 (Sat, 09 Jan 2010) | 1 line post release version adjustment ........ ................ r77388 | benjamin.peterson | 2010-01-09 17:45:42 +0000 (Sat, 09 Jan 2010) | 25 lines Blocked revisions 77227,77256,77260,77368-77369 via svnmerge ........ r77227 | martin.v.loewis | 2010-01-02 03:53:18 -0600 (Sat, 02 Jan 2010) | 1 line Make script work with 2.5. ........ r77256 | georg.brandl | 2010-01-02 16:55:55 -0600 (Sat, 02 Jan 2010) | 1 line Fix typo. ........ r77260 | gregory.p.smith | 2010-01-02 18:43:02 -0600 (Sat, 02 Jan 2010) | 2 lines make setup.py similar to py3k's when reporting on _hashlib as missing or not. ........ r77368 | senthil.kumaran | 2010-01-08 12:41:40 -0600 (Fri, 08 Jan 2010) | 1 line Fixing - Issue7026 - RuntimeError: dictionary changed size during iteration. Patch by flox ........ r77369 | senthil.kumaran | 2010-01-08 13:04:16 -0600 (Fri, 08 Jan 2010) | 4 lines Reverting the Revision: 77368. I committed Flox's big patch for tests by mistake. ( It may come in for sure tough) ........ ................ r77389 | benjamin.peterson | 2010-01-09 18:45:30 +0000 (Sat, 09 Jan 2010) | 25 lines Merged revisions 77209,77229,77359-77360,77371 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77209 | georg.brandl | 2010-01-01 07:07:05 -0600 (Fri, 01 Jan 2010) | 1 line More yearly updates. ........ r77229 | georg.brandl | 2010-01-02 06:35:01 -0600 (Sat, 02 Jan 2010) | 1 line Fix casing. ........ r77359 | georg.brandl | 2010-01-07 14:54:45 -0600 (Thu, 07 Jan 2010) | 1 line Fix description for Py_GetPath(); it sounded like it always returned sys.path. ........ r77360 | georg.brandl | 2010-01-07 15:48:47 -0600 (Thu, 07 Jan 2010) | 1 line #7653: clarify how the PythonPath registry key should look like. ........ r77371 | senthil.kumaran | 2010-01-08 13:20:25 -0600 (Fri, 08 Jan 2010) | 3 lines Fix for Issue7026. For the Error - RuntimeError: dictionary changed size during iteration ........ ................ r77393 | benjamin.peterson | 2010-01-09 18:53:06 +0000 (Sat, 09 Jan 2010) | 57 lines Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77185 | andrew.kuchling | 2009-12-31 10:17:05 -0600 (Thu, 31 Dec 2009) | 1 line Add some items ........ r77186 | benjamin.peterson | 2009-12-31 10:28:24 -0600 (Thu, 31 Dec 2009) | 1 line update expat comment ........ r77187 | andrew.kuchling | 2009-12-31 10:38:53 -0600 (Thu, 31 Dec 2009) | 1 line Add various items ........ r77188 | benjamin.peterson | 2009-12-31 10:49:37 -0600 (Thu, 31 Dec 2009) | 1 line add another advancement ........ r77262 | andrew.kuchling | 2010-01-02 19:15:21 -0600 (Sat, 02 Jan 2010) | 1 line Add a few items ........ r77313 | benjamin.peterson | 2010-01-04 18:04:19 -0600 (Mon, 04 Jan 2010) | 1 line add a test about hashing array.array ........ r77317 | georg.brandl | 2010-01-05 12:14:52 -0600 (Tue, 05 Jan 2010) | 1 line Add Stefan. ........ r77331 | georg.brandl | 2010-01-06 11:43:06 -0600 (Wed, 06 Jan 2010) | 1 line Small fixes to test_cmd: fix signature of do_shell, remove duplicate import, add option to run the custom Cmd class. ........ r77332 | georg.brandl | 2010-01-06 12:02:16 -0600 (Wed, 06 Jan 2010) | 7 lines #5991: let completion for the "help" command include help topics. This also simplifies the Cmd.get_names() method implementation; it was written at a time where dir() didn't consider base class attributes. ........ r77333 | georg.brandl | 2010-01-06 12:26:08 -0600 (Wed, 06 Jan 2010) | 1 line #5950: document that zip files with comments are unsupported in zipimport. ........ r77337 | r.david.murray | 2010-01-06 21:09:08 -0600 (Wed, 06 Jan 2010) | 3 lines Add -W to the 'basics', 'opt', and 'all' test runs so that we get verbose information if a failure happens. ........ r77338 | r.david.murray | 2010-01-06 22:04:28 -0600 (Wed, 06 Jan 2010) | 2 lines Fix inadvertent checkin of debug line. ........ ................ r77394 | alexandre.vassalotti | 2010-01-09 20:35:09 +0000 (Sat, 09 Jan 2010) | 2 lines Issue #1023290: Added API for the conversion of longs to bytes and vice-versa. ................ r77395 | benjamin.peterson | 2010-01-09 21:45:28 +0000 (Sat, 09 Jan 2010) | 2 lines Python strings ending with '\0' should not be equivalent to their C counterparts in PyUnicode_CompareWithASCIIString ................ r77396 | benjamin.peterson | 2010-01-09 21:50:11 +0000 (Sat, 09 Jan 2010) | 1 line simplify string comparison of from_bytes/to_bytes ................ r77398 | alexandre.vassalotti | 2010-01-09 22:14:46 +0000 (Sat, 09 Jan 2010) | 6 lines Issue #6688: Optimize PyBytes_FromObject(). - Add special-cases for list and tuple objects. - Use _PyObject_LengthHint() instead of an arbitrary value for the size of the initial buffer of the returned object. ................ r77399 | georg.brandl | 2010-01-09 22:39:42 +0000 (Sat, 09 Jan 2010) | 1 line Remove redundant brackets in signatures. ................ r77405 | martin.v.loewis | 2010-01-10 10:31:46 +0000 (Sun, 10 Jan 2010) | 9 lines Merged revisions 77403 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77403 | martin.v.loewis | 2010-01-10 11:29:54 +0100 (So, 10 Jan 2010) | 2 lines Update root certificate to CAcert. ........ ................ r77407 | mark.dickinson | 2010-01-10 11:27:39 +0000 (Sun, 10 Jan 2010) | 9 lines Blocked revisions 77391 via svnmerge ........ r77391 | mark.dickinson | 2010-01-09 18:50:50 +0000 (Sat, 09 Jan 2010) | 3 lines Issue #7532: Add additional slicing test cases for new- and old-style classes. Patch by Florent Xicluna. ........ ................ r77408 | mark.dickinson | 2010-01-10 11:59:43 +0000 (Sun, 10 Jan 2010) | 4 lines Issue #7532: Expanded tests for extended slicing. This is a forward port of r77391 to py3k, along with some additional tests and cleanup. Patch by Florent Xicluna. ................ r77414 | senthil.kumaran | 2010-01-10 17:45:52 +0000 (Sun, 10 Jan 2010) | 9 lines Merged revisions 77411 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77411 | senthil.kumaran | 2010-01-10 23:05:05 +0530 (Sun, 10 Jan 2010) | 2 lines Fixed issue7648 - test_urllib2 fails on Windows if not run from C: ........ ................ r77417 | r.david.murray | 2010-01-10 19:18:27 +0000 (Sun, 10 Jan 2010) | 10 lines Merged revisions 77412 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77412 | r.david.murray | 2010-01-10 12:41:28 -0500 (Sun, 10 Jan 2010) | 3 lines Issue #7119: document that a program-generated Message object tree may be mutated when serialized. ........ ................ r77427 | tarek.ziade | 2010-01-11 23:15:52 +0000 (Mon, 11 Jan 2010) | 9 lines Merged revisions 77424 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77424 | tarek.ziade | 2010-01-11 23:50:29 +0100 (Mon, 11 Jan 2010) | 1 line Fixed #5372: .o files are now always rebuilt because file age test don't work in some case ........ ................ r77429 | alexandre.vassalotti | 2010-01-11 23:21:10 +0000 (Mon, 11 Jan 2010) | 16 lines Blocked revisions 77400,77422,77428 via svnmerge ........ r77400 | alexandre.vassalotti | 2010-01-09 18:35:54 -0500 (Sat, 09 Jan 2010) | 2 lines Issue #2335: Backport set literals syntax from Python 3.x. ........ r77422 | alexandre.vassalotti | 2010-01-11 17:36:12 -0500 (Mon, 11 Jan 2010) | 2 lines Issue #2333: Backport set and dict comprehensions syntax. ........ r77428 | alexandre.vassalotti | 2010-01-11 18:17:10 -0500 (Mon, 11 Jan 2010) | 2 lines Issue #1967: Backport dictionary views. ........ ................ r77433 | tarek.ziade | 2010-01-11 23:47:51 +0000 (Mon, 11 Jan 2010) | 9 lines Merged revisions 77431 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77431 | tarek.ziade | 2010-01-12 00:41:32 +0100 (Tue, 12 Jan 2010) | 1 line module cleanup ........ ................ r77437 | alexandre.vassalotti | 2010-01-12 01:23:09 +0000 (Tue, 12 Jan 2010) | 2 lines Issue #7382: Fix bytes.__getnewargs__. ................ r77440 | alexandre.vassalotti | 2010-01-12 01:49:31 +0000 (Tue, 12 Jan 2010) | 2 lines Simplified long coding in pickle.py. ................ r77441 | alexandre.vassalotti | 2010-01-12 01:51:09 +0000 (Tue, 12 Jan 2010) | 8 lines Blocked revisions 77438 via svnmerge ........ r77438 | alexandre.vassalotti | 2010-01-11 20:34:43 -0500 (Mon, 11 Jan 2010) | 2 lines Fixed repr of dictionary views. ........ ................ r77444 | ezio.melotti | 2010-01-12 04:03:11 +0000 (Tue, 12 Jan 2010) | 8 lines Blocked revisions 77442 via svnmerge ........ r77442 | ezio.melotti | 2010-01-12 05:32:05 +0200 (Tue, 12 Jan 2010) | 1 line #5827: make sure that normpath preserves unicode ........ ................ r77447 | alexandre.vassalotti | 2010-01-12 18:38:14 +0000 (Tue, 12 Jan 2010) | 9 lines Merged revisions 77445 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77445 | alexandre.vassalotti | 2010-01-12 13:25:33 -0500 (Tue, 12 Jan 2010) | 2 lines Added documentation for dictionary views fixer. ........ ................ r77449 | antoine.pitrou | 2010-01-12 22:05:42 +0000 (Tue, 12 Jan 2010) | 9 lines Merged revisions 77448 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77448 | antoine.pitrou | 2010-01-12 23:02:10 +0100 (mar., 12 janv. 2010) | 3 lines Issue #7654: enable additional bytes/bytearray tests. Patch by Florent Xicluna. ........ ................ r77452 | mark.dickinson | 2010-01-12 23:04:19 +0000 (Tue, 12 Jan 2010) | 23 lines Merged revisions 77410,77421,77450-77451 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77410 | mark.dickinson | 2010-01-10 13:06:31 +0000 (Sun, 10 Jan 2010) | 1 line Remove unused BCinfo fields and an unused macro. ........ r77421 | mark.dickinson | 2010-01-11 17:15:13 +0000 (Mon, 11 Jan 2010) | 1 line Change a variable type to avoid signed overflow; replace repeated '19999' constant by a define. ........ r77450 | mark.dickinson | 2010-01-12 22:23:56 +0000 (Tue, 12 Jan 2010) | 4 lines Issue #7632: Fix a problem with _Py_dg_strtod that could lead to crashes in debug builds, for certain long numeric strings corresponding to subnormal values. ........ r77451 | mark.dickinson | 2010-01-12 22:55:51 +0000 (Tue, 12 Jan 2010) | 2 lines Issue #7632: Fix a bug in dtoa.c that could lead to incorrectly-rounded results. ........ ................ r77457 | ezio.melotti | 2010-01-13 00:28:37 +0000 (Wed, 13 Jan 2010) | 9 lines Merged revisions 77455 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77455 | ezio.melotti | 2010-01-13 02:25:03 +0200 (Wed, 13 Jan 2010) | 1 line #7685: typo ........ ................ r77459 | benjamin.peterson | 2010-01-13 03:49:50 +0000 (Wed, 13 Jan 2010) | 1 line use floor division where needed #7681 ................ r77462 | antoine.pitrou | 2010-01-13 08:07:53 +0000 (Wed, 13 Jan 2010) | 11 lines Merged revisions 77461 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77461 | antoine.pitrou | 2010-01-13 08:55:48 +0100 (mer., 13 janv. 2010) | 5 lines Issue #7622: Improve the split(), rsplit(), splitlines() and replace() methods of bytes, bytearray and unicode objects by using a common implementation based on stringlib's fast search. Patch by Florent Xicluna. ........ ................ r77464 | antoine.pitrou | 2010-01-13 08:58:08 +0000 (Wed, 13 Jan 2010) | 9 lines Merged revisions 77463 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77463 | antoine.pitrou | 2010-01-13 09:55:20 +0100 (mer., 13 janv. 2010) | 3 lines Fix Windows build (re r77461) ........ ................ r77465 | antoine.pitrou | 2010-01-13 09:19:15 +0000 (Wed, 13 Jan 2010) | 3 lines svnmerge duplicated contents of Objects/stringlib/split.h ................ r77468 | antoine.pitrou | 2010-01-13 12:04:20 +0000 (Wed, 13 Jan 2010) | 18 lines Note: I'm merging these changes out of consistency, but they don't seem to be needed in py3k (except perhaps for non-utf8 paths). Merged revisions 77466-77467 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77466 | antoine.pitrou | 2010-01-13 12:47:49 +0100 (mer., 13 janv. 2010) | 5 lines Issue #7661: Allow ctypes to be built from a non-ASCII directory path. Patch by Florent Xicluna. ........ r77467 | antoine.pitrou | 2010-01-13 12:57:42 +0100 (mer., 13 janv. 2010) | 3 lines Use `with` ........ ................ r77471 | antoine.pitrou | 2010-01-13 14:19:12 +0000 (Wed, 13 Jan 2010) | 13 lines Merged revisions 77469-77470 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77469 | antoine.pitrou | 2010-01-13 14:43:37 +0100 (mer., 13 janv. 2010) | 3 lines Test commit to try to diagnose failures of the IA-64 buildbot ........ r77470 | antoine.pitrou | 2010-01-13 15:01:26 +0100 (mer., 13 janv. 2010) | 3 lines Sanitize bloom filter macros ........ ................ r77474 | antoine.pitrou | 2010-01-13 14:37:26 +0000 (Wed, 13 Jan 2010) | 14 lines Merged revisions 77472-77473 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77472 | antoine.pitrou | 2010-01-13 15:32:10 +0100 (mer., 13 janv. 2010) | 5 lines Issue #2846: Add support for gzip.GzipFile reading zero-padded files. Patch by Brian Curtin. ........ r77473 | antoine.pitrou | 2010-01-13 15:32:51 +0100 (mer., 13 janv. 2010) | 3 lines Add ACKS entry for r77472. ........ ................ r77476 | antoine.pitrou | 2010-01-13 15:03:39 +0000 (Wed, 13 Jan 2010) | 10 lines Merged revisions 77475 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77475 | antoine.pitrou | 2010-01-13 16:02:13 +0100 (mer., 13 janv. 2010) | 4 lines Issue #7625: Add more tests that bytearray methods return new objects, even if identical. Patch by Florent Xicluna (again). ........ ................ r77479 | brett.cannon | 2010-01-13 19:21:00 +0000 (Wed, 13 Jan 2010) | 1 line Fix the wrong numbering of a PEP. ................ r77485 | skip.montanaro | 2010-01-14 01:14:50 +0000 (Thu, 14 Jan 2010) | 2 lines Make similar changes to 3.x version. ................ r77494 | mark.dickinson | 2010-01-14 15:37:49 +0000 (Thu, 14 Jan 2010) | 41 lines Merged revisions 77477-77478,77481-77483,77490-77493 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77477 | mark.dickinson | 2010-01-13 18:21:53 +0000 (Wed, 13 Jan 2010) | 1 line Add comments explaining the role of the bigcomp function in dtoa.c. ........ r77478 | mark.dickinson | 2010-01-13 19:02:37 +0000 (Wed, 13 Jan 2010) | 1 line Clarify that sulp expects a nonnegative input, but that +0.0 is fine. ........ r77481 | mark.dickinson | 2010-01-13 20:55:03 +0000 (Wed, 13 Jan 2010) | 1 line Simplify and annotate the bigcomp function, removing unused special cases. ........ r77482 | mark.dickinson | 2010-01-13 22:15:53 +0000 (Wed, 13 Jan 2010) | 1 line Fix buggy comparison: LHS of comparison was being treated as unsigned. ........ r77483 | mark.dickinson | 2010-01-13 22:20:10 +0000 (Wed, 13 Jan 2010) | 1 line More dtoa.c cleanup; remove the need for bc.dplen, bc.dp0 and bc.dp1. ........ r77490 | mark.dickinson | 2010-01-14 13:02:36 +0000 (Thu, 14 Jan 2010) | 1 line Fix off-by-one error introduced in r77483. I have a test for this, but it currently fails due to a different dtoa.c bug; I'll add the test once that bug is fixed. ........ r77491 | mark.dickinson | 2010-01-14 13:14:49 +0000 (Thu, 14 Jan 2010) | 1 line Issue 7632: fix a dtoa.c bug (bug 6) causing incorrect rounding. Tests to follow. ........ r77492 | mark.dickinson | 2010-01-14 14:40:20 +0000 (Thu, 14 Jan 2010) | 1 line Issue 7632: fix incorrect rounding for long input strings with values very close to a power of 2. (See Bug 4 in the tracker discussion.) ........ r77493 | mark.dickinson | 2010-01-14 15:22:33 +0000 (Thu, 14 Jan 2010) | 1 line Issue #7632: add tests for bugs fixed so far. ........ ................ r77498 | antoine.pitrou | 2010-01-14 16:33:34 +0000 (Thu, 14 Jan 2010) | 15 lines Merge note: only the tests have been kept here, since the rest was already a backport. Merged revisions 77497 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77497 | antoine.pitrou | 2010-01-14 17:27:09 +0100 (jeu., 14 janv. 2010) | 5 lines Issue #7703: Add support for the new buffer API to functions of the binascii module. Backported from py3k by Florent Xicluna, with some additional tests. ........ ................ r77501 | antoine.pitrou | 2010-01-14 17:34:48 +0000 (Thu, 14 Jan 2010) | 10 lines Merged revisions 77499 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77499 | antoine.pitrou | 2010-01-14 18:25:24 +0100 (jeu., 14 janv. 2010) | 4 lines Issue #3299: Fix possible crash in the _sre module when given bad argument values in debug mode. Patch by Victor Stinner. ........ ................ r77508 | antoine.pitrou | 2010-01-15 00:27:43 +0000 (Fri, 15 Jan 2010) | 10 lines Merged revisions 77506 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77506 | antoine.pitrou | 2010-01-15 01:18:00 +0100 (ven., 15 janv. 2010) | 4 lines Issue #7701: Fix crash in binascii.b2a_uu() in debug mode when given a 1-byte argument. Patch by Victor Stinner. ........ ................ r77516 | sean.reifschneider | 2010-01-16 04:35:26 +0000 (Sat, 16 Jan 2010) | 1 line issue5063: Fixes for building RPM on CentOS plus misc .spec file enhancements. ................ r77520 | georg.brandl | 2010-01-16 14:41:21 +0000 (Sat, 16 Jan 2010) | 1 line Remove L suffix for integers. ................ r77521 | ezio.melotti | 2010-01-16 14:46:27 +0000 (Sat, 16 Jan 2010) | 1 line remove obsolete sentence ................ r77523 | ezio.melotti | 2010-01-16 15:09:48 +0000 (Sat, 16 Jan 2010) | 1 line Fixed crasher. Patch by Florent Xicluna. ................ r77529 | antoine.pitrou | 2010-01-16 17:55:52 +0000 (Sat, 16 Jan 2010) | 10 lines Merged revisions 77528 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77528 | antoine.pitrou | 2010-01-16 18:45:56 +0100 (sam., 16 janv. 2010) | 4 lines Followup to #7703: a2b_hqx() didn't follow the new buffer API (neither in trunk nor in py3k). Patch by Florent Xicluna as well as additional tests. ........ ................ r77535 | mark.dickinson | 2010-01-16 18:10:25 +0000 (Sat, 16 Jan 2010) | 21 lines Merged revisions 77519,77530,77533 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77519 | mark.dickinson | 2010-01-16 10:44:00 +0000 (Sat, 16 Jan 2010) | 5 lines Issue #7632: Fix a serious wrong output bug for string -> float conversion. Also remove some now unused variables, and add comments clarifying the possible outputs of the parsing section of _Py_dg_strtod. Thanks Eric Smith for reviewing. ........ r77530 | mark.dickinson | 2010-01-16 17:57:49 +0000 (Sat, 16 Jan 2010) | 3 lines Issue #7632: Fix one more case of incorrect rounding for str -> float conversion (see bug 5 in the issue tracker). ........ r77533 | mark.dickinson | 2010-01-16 18:06:17 +0000 (Sat, 16 Jan 2010) | 1 line Fix multiple uses of variable 'L' in _Py_dg_strtod, where one use requires an unsigned long and the other a signed long. See also r77421. ........ ................ r77539 | antoine.pitrou | 2010-01-16 18:15:15 +0000 (Sat, 16 Jan 2010) | 4 lines Remove duplicated line when merging (it was even valid C!). Thanks Florent for noticing. ................ r77542 | r.david.murray | 2010-01-16 18:30:03 +0000 (Sat, 16 Jan 2010) | 18 lines Merged revisions 77517,77525 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk Merge adds an additional test for as_string with a maxheaderlen specified. ........ r77517 | r.david.murray | 2010-01-16 00:15:17 -0500 (Sat, 16 Jan 2010) | 6 lines Issue #1670765: Prevent email.generator.Generator from re-wrapping headers in multipart/signed MIME parts, which fixes one of the sources of invalid modifications to such parts by Generator. Patch and tests by Martin von Gagern. ........ r77525 | r.david.murray | 2010-01-16 11:08:32 -0500 (Sat, 16 Jan 2010) | 2 lines Fix issue number in comment. ........ ................ r77543 | antoine.pitrou | 2010-01-16 18:37:38 +0000 (Sat, 16 Jan 2010) | 9 lines Issue #6690: Optimize the bytecode for expressions such as `x in {1, 2, 3}`, where the right hand operand is a set of constants, by turning the set into a frozenset and pre-building it as a constant. The comparison operation is made against the constant instead of building a new set each time it is executed (a similar optimization already existed which turned a list of constants into a pre-built tuple). Patch and additional tests by Dave Malcolm. ................ r77549 | ezio.melotti | 2010-01-16 19:40:06 +0000 (Sat, 16 Jan 2010) | 9 lines Merged revisions 77548 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77548 | ezio.melotti | 2010-01-16 21:36:42 +0200 (Sat, 16 Jan 2010) | 1 line remove wrong markup ........ ................ r77551 | mark.dickinson | 2010-01-16 20:34:30 +0000 (Sat, 16 Jan 2010) | 9 lines Merged revisions 77550 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77550 | mark.dickinson | 2010-01-16 20:33:02 +0000 (Sat, 16 Jan 2010) | 1 line Add better error reporting for MemoryErrors caused by str->float conversions. ........ ................ r77568 | mark.dickinson | 2010-01-17 11:13:30 +0000 (Sun, 17 Jan 2010) | 9 lines Merged revisions 77566 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77566 | mark.dickinson | 2010-01-17 11:10:03 +0000 (Sun, 17 Jan 2010) | 1 line Increase number of strtod tests slightly, to make it more likely that a memory leak is detected. ........ ................ r77571 | antoine.pitrou | 2010-01-17 12:16:23 +0000 (Sun, 17 Jan 2010) | 4 lines Issue #7561: Fix crashes when using bytearray objects with the posix module. ................ r77576 | antoine.pitrou | 2010-01-17 12:38:54 +0000 (Sun, 17 Jan 2010) | 12 lines Merged revisions 77573 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77573 | antoine.pitrou | 2010-01-17 13:26:20 +0100 (dim., 17 janv. 2010) | 6 lines Issue #7561: Operations on empty bytearrays (such as `int(bytearray())`) could crash in many places because of the PyByteArray_AS_STRING() macro returning NULL. The macro now returns a statically allocated empty string instead. ........ ................ r77579 | mark.dickinson | 2010-01-17 14:39:12 +0000 (Sun, 17 Jan 2010) | 9 lines Merged revisions 77578 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77578 | mark.dickinson | 2010-01-17 13:37:57 +0000 (Sun, 17 Jan 2010) | 2 lines Issue #7632: Fix a memory leak in _Py_dg_strtod. ........ ................ r77583 | antoine.pitrou | 2010-01-17 16:15:29 +0000 (Sun, 17 Jan 2010) | 9 lines Merged revisions 77581 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77581 | antoine.pitrou | 2010-01-17 16:55:45 +0100 (dim., 17 janv. 2010) | 3 lines Use PyAPI_DATA. ........ ................ r77590 | mark.dickinson | 2010-01-17 21:02:55 +0000 (Sun, 17 Jan 2010) | 14 lines Merged revisions 77589 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77589 | mark.dickinson | 2010-01-17 20:57:56 +0000 (Sun, 17 Jan 2010) | 7 lines Issue #7632: When Py_USING_MEMORY_DEBUGGER is defined, disable the private memory allocation scheme in dtoa.c, along with a piece of code that caches powers of 5 for future use. This makes it easier to detect dtoa.c memory leaks with Valgrind or similar tools. Patch by Stefan Krah. ........ ................ r77597 | ezio.melotti | 2010-01-18 09:15:14 +0000 (Mon, 18 Jan 2010) | 9 lines Merged revisions 77595 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77595 | ezio.melotti | 2010-01-18 11:10:26 +0200 (Mon, 18 Jan 2010) | 1 line #7730: remove spaces after functions names ........ ................ r77602 | antoine.pitrou | 2010-01-18 21:20:53 +0000 (Mon, 18 Jan 2010) | 17 lines Merged revisions 77599-77601 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77599 | antoine.pitrou | 2010-01-18 22:04:00 +0100 (lun., 18 janv. 2010) | 3 lines Add iobench to the Tools directory (see December python-dev discussion) ........ r77600 | antoine.pitrou | 2010-01-18 22:10:31 +0100 (lun., 18 janv. 2010) | 3 lines Add ccbench to the Tools directory ........ r77601 | antoine.pitrou | 2010-01-18 22:15:21 +0100 (lun., 18 janv. 2010) | 3 lines Add a NEWS entry for r77599 and r77600. ........ ................ r77604 | benjamin.peterson | 2010-01-19 00:09:57 +0000 (Tue, 19 Jan 2010) | 4 lines use assert[Not]In where appropriate A patch from Dave Malcolm. ................ Added: python/branches/py3k-cdecimal/Lib/email/test/data/msg_45.txt - copied unchanged from r77604, /python/branches/py3k/Lib/email/test/data/msg_45.txt python/branches/py3k-cdecimal/Lib/test/test_strtod.py - copied unchanged from r77604, /python/branches/py3k/Lib/test/test_strtod.py python/branches/py3k-cdecimal/Objects/stringlib/split.h - copied unchanged from r77604, /python/branches/py3k/Objects/stringlib/split.h python/branches/py3k-cdecimal/Tools/ccbench/ - copied from r77604, /python/branches/py3k/Tools/ccbench/ python/branches/py3k-cdecimal/Tools/iobench/ - copied from r77604, /python/branches/py3k/Tools/iobench/ Modified: python/branches/py3k-cdecimal/ (props changed) python/branches/py3k-cdecimal/Doc/c-api/init.rst python/branches/py3k-cdecimal/Doc/library/2to3.rst python/branches/py3k-cdecimal/Doc/library/email.generator.rst python/branches/py3k-cdecimal/Doc/library/email.message.rst python/branches/py3k-cdecimal/Doc/library/email.mime.rst python/branches/py3k-cdecimal/Doc/library/gzip.rst python/branches/py3k-cdecimal/Doc/library/importlib.rst python/branches/py3k-cdecimal/Doc/library/inspect.rst python/branches/py3k-cdecimal/Doc/library/math.rst python/branches/py3k-cdecimal/Doc/library/os.rst python/branches/py3k-cdecimal/Doc/library/re.rst python/branches/py3k-cdecimal/Doc/library/stdtypes.rst python/branches/py3k-cdecimal/Doc/library/unittest.rst python/branches/py3k-cdecimal/Doc/library/weakref.rst python/branches/py3k-cdecimal/Doc/library/zipimport.rst python/branches/py3k-cdecimal/Doc/using/windows.rst python/branches/py3k-cdecimal/Doc/whatsnew/2.7.rst python/branches/py3k-cdecimal/Include/bytearrayobject.h python/branches/py3k-cdecimal/Lib/_weakrefset.py python/branches/py3k-cdecimal/Lib/cmd.py python/branches/py3k-cdecimal/Lib/distutils/ccompiler.py python/branches/py3k-cdecimal/Lib/distutils/tests/test_unixccompiler.py python/branches/py3k-cdecimal/Lib/distutils/unixccompiler.py python/branches/py3k-cdecimal/Lib/email/generator.py python/branches/py3k-cdecimal/Lib/email/test/test_email.py python/branches/py3k-cdecimal/Lib/email/utils.py python/branches/py3k-cdecimal/Lib/gzip.py python/branches/py3k-cdecimal/Lib/idlelib/NEWS.txt python/branches/py3k-cdecimal/Lib/logging/__init__.py python/branches/py3k-cdecimal/Lib/pickle.py python/branches/py3k-cdecimal/Lib/platform.py python/branches/py3k-cdecimal/Lib/ssl.py python/branches/py3k-cdecimal/Lib/test/crashers/bogus_code_obj.py python/branches/py3k-cdecimal/Lib/test/floating_points.txt python/branches/py3k-cdecimal/Lib/test/https_svn_python_org_root.pem python/branches/py3k-cdecimal/Lib/test/pickletester.py python/branches/py3k-cdecimal/Lib/test/regrtest.py python/branches/py3k-cdecimal/Lib/test/test_bigmem.py python/branches/py3k-cdecimal/Lib/test/test_binascii.py python/branches/py3k-cdecimal/Lib/test/test_builtin.py python/branches/py3k-cdecimal/Lib/test/test_bytes.py python/branches/py3k-cdecimal/Lib/test/test_cgi.py python/branches/py3k-cdecimal/Lib/test/test_cmd.py python/branches/py3k-cdecimal/Lib/test/test_cmd_line.py python/branches/py3k-cdecimal/Lib/test/test_cmd_line_script.py python/branches/py3k-cdecimal/Lib/test/test_collections.py python/branches/py3k-cdecimal/Lib/test/test_compile.py python/branches/py3k-cdecimal/Lib/test/test_contains.py python/branches/py3k-cdecimal/Lib/test/test_copyreg.py python/branches/py3k-cdecimal/Lib/test/test_csv.py python/branches/py3k-cdecimal/Lib/test/test_datetime.py python/branches/py3k-cdecimal/Lib/test/test_dbm.py python/branches/py3k-cdecimal/Lib/test/test_dbm_dumb.py python/branches/py3k-cdecimal/Lib/test/test_dbm_gnu.py python/branches/py3k-cdecimal/Lib/test/test_dbm_ndbm.py python/branches/py3k-cdecimal/Lib/test/test_decimal.py python/branches/py3k-cdecimal/Lib/test/test_defaultdict.py python/branches/py3k-cdecimal/Lib/test/test_deque.py python/branches/py3k-cdecimal/Lib/test/test_descr.py python/branches/py3k-cdecimal/Lib/test/test_dict.py python/branches/py3k-cdecimal/Lib/test/test_dictviews.py python/branches/py3k-cdecimal/Lib/test/test_exceptions.py python/branches/py3k-cdecimal/Lib/test/test_float.py python/branches/py3k-cdecimal/Lib/test/test_funcattrs.py python/branches/py3k-cdecimal/Lib/test/test_glob.py python/branches/py3k-cdecimal/Lib/test/test_gzip.py python/branches/py3k-cdecimal/Lib/test/test_hashlib.py python/branches/py3k-cdecimal/Lib/test/test_http_cookiejar.py python/branches/py3k-cdecimal/Lib/test/test_import.py python/branches/py3k-cdecimal/Lib/test/test_index.py python/branches/py3k-cdecimal/Lib/test/test_inspect.py python/branches/py3k-cdecimal/Lib/test/test_ioctl.py python/branches/py3k-cdecimal/Lib/test/test_iter.py python/branches/py3k-cdecimal/Lib/test/test_logging.py python/branches/py3k-cdecimal/Lib/test/test_long.py python/branches/py3k-cdecimal/Lib/test/test_mmap.py python/branches/py3k-cdecimal/Lib/test/test_multiprocessing.py python/branches/py3k-cdecimal/Lib/test/test_os.py python/branches/py3k-cdecimal/Lib/test/test_peepholer.py python/branches/py3k-cdecimal/Lib/test/test_pep352.py python/branches/py3k-cdecimal/Lib/test/test_poplib.py python/branches/py3k-cdecimal/Lib/test/test_posix.py python/branches/py3k-cdecimal/Lib/test/test_posixpath.py python/branches/py3k-cdecimal/Lib/test/test_pwd.py python/branches/py3k-cdecimal/Lib/test/test_pyclbr.py python/branches/py3k-cdecimal/Lib/test/test_pydoc.py python/branches/py3k-cdecimal/Lib/test/test_raise.py python/branches/py3k-cdecimal/Lib/test/test_random.py python/branches/py3k-cdecimal/Lib/test/test_range.py python/branches/py3k-cdecimal/Lib/test/test_re.py python/branches/py3k-cdecimal/Lib/test/test_reprlib.py python/branches/py3k-cdecimal/Lib/test/test_runpy.py python/branches/py3k-cdecimal/Lib/test/test_sax.py python/branches/py3k-cdecimal/Lib/test/test_scope.py python/branches/py3k-cdecimal/Lib/test/test_set.py python/branches/py3k-cdecimal/Lib/test/test_site.py python/branches/py3k-cdecimal/Lib/test/test_socket.py python/branches/py3k-cdecimal/Lib/test/test_structseq.py python/branches/py3k-cdecimal/Lib/test/test_subprocess.py python/branches/py3k-cdecimal/Lib/test/test_sys.py python/branches/py3k-cdecimal/Lib/test/test_tarfile.py python/branches/py3k-cdecimal/Lib/test/test_telnetlib.py python/branches/py3k-cdecimal/Lib/test/test_tempfile.py python/branches/py3k-cdecimal/Lib/test/test_threading.py python/branches/py3k-cdecimal/Lib/test/test_threading_local.py python/branches/py3k-cdecimal/Lib/test/test_traceback.py python/branches/py3k-cdecimal/Lib/test/test_types.py python/branches/py3k-cdecimal/Lib/test/test_unicode.py python/branches/py3k-cdecimal/Lib/test/test_unicode_file.py python/branches/py3k-cdecimal/Lib/test/test_unicodedata.py python/branches/py3k-cdecimal/Lib/test/test_unittest.py python/branches/py3k-cdecimal/Lib/test/test_urllib.py python/branches/py3k-cdecimal/Lib/test/test_urllib2.py python/branches/py3k-cdecimal/Lib/test/test_userdict.py python/branches/py3k-cdecimal/Lib/test/test_warnings.py python/branches/py3k-cdecimal/Lib/test/test_wave.py python/branches/py3k-cdecimal/Lib/test/test_weakref.py python/branches/py3k-cdecimal/Lib/test/test_weakset.py python/branches/py3k-cdecimal/Lib/test/test_wsgiref.py python/branches/py3k-cdecimal/Lib/test/test_zipfile.py python/branches/py3k-cdecimal/Lib/test/test_zipimport.py python/branches/py3k-cdecimal/Lib/test/test_zipimport_support.py python/branches/py3k-cdecimal/Lib/turtle.py python/branches/py3k-cdecimal/Lib/unittest/__init__.py python/branches/py3k-cdecimal/Lib/wave.py python/branches/py3k-cdecimal/Lib/weakref.py python/branches/py3k-cdecimal/Mac/Resources/app/Info.plist.in python/branches/py3k-cdecimal/Makefile.pre.in python/branches/py3k-cdecimal/Misc/ACKS python/branches/py3k-cdecimal/Misc/NEWS python/branches/py3k-cdecimal/Misc/RPM/python-3.2.spec python/branches/py3k-cdecimal/Misc/build.sh python/branches/py3k-cdecimal/Misc/developers.txt python/branches/py3k-cdecimal/Misc/gdbinit python/branches/py3k-cdecimal/Modules/_ctypes/libffi/fficonfig.py.in python/branches/py3k-cdecimal/Modules/_hashopenssl.c python/branches/py3k-cdecimal/Modules/_pickle.c python/branches/py3k-cdecimal/Modules/_sre.c python/branches/py3k-cdecimal/Modules/_testcapimodule.c python/branches/py3k-cdecimal/Modules/binascii.c python/branches/py3k-cdecimal/Modules/posixmodule.c python/branches/py3k-cdecimal/Objects/bytearrayobject.c python/branches/py3k-cdecimal/Objects/bytesobject.c python/branches/py3k-cdecimal/Objects/longobject.c python/branches/py3k-cdecimal/Objects/stringlib/count.h python/branches/py3k-cdecimal/Objects/stringlib/ctype.h python/branches/py3k-cdecimal/Objects/stringlib/fastsearch.h python/branches/py3k-cdecimal/Objects/stringlib/find.h python/branches/py3k-cdecimal/Objects/stringlib/partition.h python/branches/py3k-cdecimal/Objects/stringlib/stringdefs.h python/branches/py3k-cdecimal/Objects/stringlib/transmogrify.h python/branches/py3k-cdecimal/Objects/stringlib/unicodedefs.h python/branches/py3k-cdecimal/Objects/unicodeobject.c python/branches/py3k-cdecimal/PC/VS8.0/pythoncore.vcproj python/branches/py3k-cdecimal/PCbuild/pythoncore.vcproj python/branches/py3k-cdecimal/Python/dtoa.c python/branches/py3k-cdecimal/Python/peephole.c python/branches/py3k-cdecimal/setup.py Modified: python/branches/py3k-cdecimal/Doc/c-api/init.rst ============================================================================== --- python/branches/py3k-cdecimal/Doc/c-api/init.rst (original) +++ python/branches/py3k-cdecimal/Doc/c-api/init.rst Thu Jan 21 20:32:23 2010 @@ -256,14 +256,15 @@ triple: module; search; path single: path (in module sys) - Return the default module search path; this is computed from the program name - (set by :cfunc:`Py_SetProgramName` above) and some environment variables. The - returned string consists of a series of directory names separated by a platform - dependent delimiter character. The delimiter character is ``':'`` on Unix and - Mac OS X, ``';'`` on Windows. The returned string points into static storage; - the caller should not modify its value. The value is available to Python code - as the list ``sys.path``, which may be modified to change the future search path - for loaded modules. + Return the default module search path; this is computed from the program name + (set by :cfunc:`Py_SetProgramName` above) and some environment variables. + The returned string consists of a series of directory names separated by a + platform dependent delimiter character. The delimiter character is ``':'`` + on Unix and Mac OS X, ``';'`` on Windows. The returned string points into + static storage; the caller should not modify its value. The list + :data:`sys.path` is initialized with this value on interpreter startup; it + can be (and usually is) modified later to change the search path for loading + modules. .. XXX should give the exact rules Modified: python/branches/py3k-cdecimal/Doc/library/2to3.rst ============================================================================== --- python/branches/py3k-cdecimal/Doc/library/2to3.rst (original) +++ python/branches/py3k-cdecimal/Doc/library/2to3.rst Thu Jan 21 20:32:23 2010 @@ -129,9 +129,11 @@ Fixes dictionary iteration methods. :meth:`dict.iteritems` is converted to :meth:`dict.items`, :meth:`dict.iterkeys` to :meth:`dict.keys`, and - :meth:`dict.itervalues` to :meth:`dict.values`. It also wraps existing - usages of :meth:`dict.items`, :meth:`dict.keys`, and :meth:`dict.values` in a - call to :class:`list`. + :meth:`dict.itervalues` to :meth:`dict.values`. Similarly, + :meth:`dict.viewitems`, :meth:`dict.viewkeys` and :meth:`dict.viewvalues` + are converted respectively to :meth:`dict.items`, :meth:`dict.keys` and + :meth:`dict.values`. It also wraps existing usages of :meth:`dict.items`, + :meth:`dict.keys`, and :meth:`dict.values` in a call to :class:`list`. .. 2to3fixer:: except Modified: python/branches/py3k-cdecimal/Doc/library/email.generator.rst ============================================================================== --- python/branches/py3k-cdecimal/Doc/library/email.generator.rst (original) +++ python/branches/py3k-cdecimal/Doc/library/email.generator.rst Thu Jan 21 20:32:23 2010 @@ -17,7 +17,10 @@ standards-compliant way, should handle MIME and non-MIME email messages just fine, and is designed so that the transformation from flat text, to a message structure via the :class:`~email.parser.Parser` class, and back to flat text, -is idempotent (the input is identical to the output). +is idempotent (the input is identical to the output). On the other hand, using +the Generator on a :class:`~email.message.Message` constructed by program may +result in changes to the :class:`~email.message.Message` object as defaults are +filled in. Here are the public methods of the :class:`Generator` class, imported from the :mod:`email.generator` module: Modified: python/branches/py3k-cdecimal/Doc/library/email.message.rst ============================================================================== --- python/branches/py3k-cdecimal/Doc/library/email.message.rst (original) +++ python/branches/py3k-cdecimal/Doc/library/email.message.rst Thu Jan 21 20:32:23 2010 @@ -40,7 +40,10 @@ Return the entire message flattened as a string. When optional *unixfrom* is ``True``, the envelope header is included in the returned string. - *unixfrom* defaults to ``False``. + *unixfrom* defaults to ``False``. Flattening the message may trigger + changes to the :class:`Message` if defaults need to be filled in to + complete the transformation to a string (for example, MIME boundaries may + be generated or modified). Note that this method is provided as a convenience and may not always format the message the way you want. For example, by default it mangles Modified: python/branches/py3k-cdecimal/Doc/library/email.mime.rst ============================================================================== --- python/branches/py3k-cdecimal/Doc/library/email.mime.rst (original) +++ python/branches/py3k-cdecimal/Doc/library/email.mime.rst Thu Jan 21 20:32:23 2010 @@ -69,7 +69,8 @@ also be added. Optional *boundary* is the multipart boundary string. When ``None`` (the - default), the boundary is calculated when needed. + default), the boundary is calculated when needed (for example, when the + message is serialized). *_subparts* is a sequence of initial subparts for the payload. It must be possible to convert this sequence to a list. You can always attach new subparts Modified: python/branches/py3k-cdecimal/Doc/library/gzip.rst ============================================================================== --- python/branches/py3k-cdecimal/Doc/library/gzip.rst (original) +++ python/branches/py3k-cdecimal/Doc/library/gzip.rst Thu Jan 21 20:32:23 2010 @@ -72,6 +72,9 @@ .. versionchanged:: 3.1 Support for the :keyword:`with` statement was added. + .. versionchanged:: 3.2 + Support for zero-padded files was added. + .. function:: open(filename, mode='rb', compresslevel=9) Modified: python/branches/py3k-cdecimal/Doc/library/importlib.rst ============================================================================== --- python/branches/py3k-cdecimal/Doc/library/importlib.rst (original) +++ python/branches/py3k-cdecimal/Doc/library/importlib.rst Thu Jan 21 20:32:23 2010 @@ -54,7 +54,7 @@ :pep:`366` Main module explicit relative imports - :pep:`3128` + :pep:`3120` Using UTF-8 as the Default Source Encoding Modified: python/branches/py3k-cdecimal/Doc/library/inspect.rst ============================================================================== --- python/branches/py3k-cdecimal/Doc/library/inspect.rst (original) +++ python/branches/py3k-cdecimal/Doc/library/inspect.rst Thu Jan 21 20:32:23 2010 @@ -387,7 +387,7 @@ .. function:: getargspec(func) - Get the names and default values of a function's arguments. A + Get the names and default values of a Python function's arguments. A :term:`named tuple` ``ArgSpec(args, varargs, keywords, defaults)`` is returned. *args* is a list of the argument names. *varargs* and *varkw* are the names of the ``*`` and @@ -402,8 +402,8 @@ .. function:: getfullargspec(func) - Get the names and default values of a function's arguments. A :term:`named - tuple` is returned: + Get the names and default values of a Python function's arguments. A + :term:`named tuple` is returned: ``FullArgSpec(args, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, annotations)`` Modified: python/branches/py3k-cdecimal/Doc/library/math.rst ============================================================================== --- python/branches/py3k-cdecimal/Doc/library/math.rst (original) +++ python/branches/py3k-cdecimal/Doc/library/math.rst Thu Jan 21 20:32:23 2010 @@ -347,10 +347,7 @@ error-reporting behavior from the platform C implementation. As a result, the specific exceptions raised in error cases (and even whether some arguments are considered to be exceptional at all) are not defined in any - useful cross-platform or cross-release way. For example, whether - ``math.log(0)`` returns ``-Inf`` or raises :exc:`ValueError` or - :exc:`OverflowError` isn't defined, and in cases where ``math.log(0)`` raises - :exc:`OverflowError`, ``math.log(0L)`` may raise :exc:`ValueError` instead. + useful cross-platform or cross-release way. All functions return a quiet *NaN* if at least one of the args is *NaN*. Signaling *NaN*\s raise an exception. The exception type still depends on the Modified: python/branches/py3k-cdecimal/Doc/library/os.rst ============================================================================== --- python/branches/py3k-cdecimal/Doc/library/os.rst (original) +++ python/branches/py3k-cdecimal/Doc/library/os.rst Thu Jan 21 20:32:23 2010 @@ -1065,9 +1065,9 @@ >>> import os >>> statinfo = os.stat('somefile.txt') >>> statinfo - (33188, 422511L, 769L, 1, 1032, 100, 926L, 1105022698,1105022732, 1105022732) + (33188, 422511, 769, 1, 1032, 100, 926, 1105022698,1105022732, 1105022732) >>> statinfo.st_size - 926L + 926 >>> Modified: python/branches/py3k-cdecimal/Doc/library/re.rst ============================================================================== --- python/branches/py3k-cdecimal/Doc/library/re.rst (original) +++ python/branches/py3k-cdecimal/Doc/library/re.rst Thu Jan 21 20:32:23 2010 @@ -849,16 +849,16 @@ A moderately complicated example: - >>> m = re.match(r"(?P\w+) (?P\w+)", "Malcom Reynolds") + >>> m = re.match(r"(?P\w+) (?P\w+)", "Malcolm Reynolds") >>> m.group('first_name') - 'Malcom' + 'Malcolm' >>> m.group('last_name') 'Reynolds' Named groups can also be referred to by their index: >>> m.group(1) - 'Malcom' + 'Malcolm' >>> m.group(2) 'Reynolds' @@ -898,9 +898,9 @@ the subgroup name. The *default* argument is used for groups that did not participate in the match; it defaults to ``None``. For example: - >>> m = re.match(r"(?P\w+) (?P\w+)", "Malcom Reynolds") + >>> m = re.match(r"(?P\w+) (?P\w+)", "Malcolm Reynolds") >>> m.groupdict() - {'first_name': 'Malcom', 'last_name': 'Reynolds'} + {'first_name': 'Malcolm', 'last_name': 'Reynolds'} .. method:: MatchObject.start(group=0) Modified: python/branches/py3k-cdecimal/Doc/library/stdtypes.rst ============================================================================== --- python/branches/py3k-cdecimal/Doc/library/stdtypes.rst (original) +++ python/branches/py3k-cdecimal/Doc/library/stdtypes.rst Thu Jan 21 20:32:23 2010 @@ -457,6 +457,69 @@ .. versionadded:: 3.1 + .. method:: int.to_bytes(length, byteorder, \*, signed=False) + + Return an array of bytes representing an integer. + + >>> (1024).to_bytes(2, byteorder='big') + b'\x04\x00' + >>> (1024).to_bytes(10, byteorder='big') + b'\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00' + >>> (-1024).to_bytes(10, byteorder='big', signed=True) + b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00' + >>> x = 1000 + >>> x.to_bytes((x.bit_length() // 8) + 1, byteorder='little') + b'\xe8\x03' + + The integer is represented using *length* bytes. An :exc:`OverflowError` + is raised if the integer is not representable with the given number of + bytes. + + The *byteorder* argument determines the byte order used to represent the + integer. If *byteorder* is ``"big"``, the most significant byte is at the + beginning of the byte array. If *byteorder* is ``"little"``, the most + significant byte is at the end of the byte array. To request the native + byte order of the host system, use :data:`sys.byteorder` as the byte order + value. + + The *signed* argument determines whether two's complement is used to + represent the integer. If *signed* is ``False`` and a negative integer is + given, an :exc:`OverflowError` is raised. The default value for *signed* + is ``False``. + + .. versionadded:: 3.2 + + .. classmethod:: int.from_bytes(bytes, byteorder, \*, signed=False) + + Return the integer represented by the given array of bytes. + + >>> int.from_bytes(b'\x00\x10', byteorder='big') + 16 + >>> int.from_bytes(b'\x00\x10', byteorder='little') + 4096 + >>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=True) + -1024 + >>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=False) + 64512 + >>> int.from_bytes([255, 0, 0], byteorder='big') + 16711680 + + The argument *bytes* must either support the buffer protocol or be an + iterable producing bytes. :class:`bytes` and :class:`bytearray` are + examples of built-in objects that support the buffer protocol. + + The *byteorder* argument determines the byte order used to represent the + integer. If *byteorder* is ``"big"``, the most significant byte is at the + beginning of the byte array. If *byteorder* is ``"little"``, the most + significant byte is at the end of the byte array. To request the native + byte order of the host system, use :data:`sys.byteorder` as the byte order + value. + + The *signed* argument indicates whether two's complement is used to + represent the integer. + + .. versionadded:: 3.2 + Additional Methods on Float --------------------------- Modified: python/branches/py3k-cdecimal/Doc/library/unittest.rst ============================================================================== --- python/branches/py3k-cdecimal/Doc/library/unittest.rst (original) +++ python/branches/py3k-cdecimal/Doc/library/unittest.rst Thu Jan 21 20:32:23 2010 @@ -780,7 +780,7 @@ .. versionadded:: 3.1 - .. method:: assertRegexpMatches(text, regexp, msg=None): + .. method:: assertRegexpMatches(text, regexp, msg=None) Verifies that a *regexp* search matches *text*. Fails with an error message including the pattern and the *text*. *regexp* may be Modified: python/branches/py3k-cdecimal/Doc/library/weakref.rst ============================================================================== --- python/branches/py3k-cdecimal/Doc/library/weakref.rst (original) +++ python/branches/py3k-cdecimal/Doc/library/weakref.rst Thu Jan 21 20:32:23 2010 @@ -159,7 +159,7 @@ .. method:: WeakKeyDictionary.keyrefs() - Return an :term:`iterator` that yields the weak references to the keys. + Return an iterable of the weak references to the keys. .. class:: WeakValueDictionary([dict]) @@ -182,7 +182,7 @@ .. method:: WeakValueDictionary.valuerefs() - Return an :term:`iterator` that yields the weak references to the values. + Return an iterable of the weak references to the values. .. class:: WeakSet([elements]) Modified: python/branches/py3k-cdecimal/Doc/library/zipimport.rst ============================================================================== --- python/branches/py3k-cdecimal/Doc/library/zipimport.rst (original) +++ python/branches/py3k-cdecimal/Doc/library/zipimport.rst Thu Jan 21 20:32:23 2010 @@ -26,6 +26,8 @@ corresponding :file:`.pyc` or :file:`.pyo` file, meaning that if a ZIP archive doesn't contain :file:`.pyc` files, importing may be rather slow. +ZIP archives with an archive comment are currently not supported. + .. seealso:: `PKZIP Application Note `_ Modified: python/branches/py3k-cdecimal/Doc/using/windows.rst ============================================================================== --- python/branches/py3k-cdecimal/Doc/using/windows.rst (original) +++ python/branches/py3k-cdecimal/Doc/using/windows.rst Thu Jan 21 20:32:23 2010 @@ -166,12 +166,13 @@ .. `` -Modifying the module search path can also be done through the Windows registry: -Edit -:file:`HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\{version}\\PythonPath\\`, -as described above for the environment variable :envvar:`%PYTHONPATH%`. A -convenient registry editor is :program:`regedit` (start it by typing "regedit" -into :menuselection:`Start --> Run`). +Modifying the module search path can also be done through the Windows registry +under the key :file:`HKLM\\SOFTWARE\\Python\\PythonCore\\{version}\\PythonPath`. +Subkeys which have semicolon-delimited path strings as their default value will +cause each path to be searched. Multiple subkeys can be created and are +appended to the path in alphabetical order. A convenient registry editor is +:program:`regedit` (start it by typing "regedit" into :menuselection:`Start --> +Run`). Executing scripts Modified: python/branches/py3k-cdecimal/Doc/whatsnew/2.7.rst ============================================================================== --- python/branches/py3k-cdecimal/Doc/whatsnew/2.7.rst (original) +++ python/branches/py3k-cdecimal/Doc/whatsnew/2.7.rst Thu Jan 21 20:32:23 2010 @@ -264,10 +264,12 @@ Windows, and on Unix platforms using the gcc, icc, or suncc compilers. There may be a small number of platforms where correct operation of this code cannot be guaranteed, so the code is not - used on such systems. + used on such systems. You can find out which code is being used + by checking :data:`sys.float_repr_style`, which will be ``short`` + if the new code is in use and ``legacy`` if it isn't. - Implemented by Mark Dickinson, using David Gay's :file:`dtoa.c` library; - :issue:`7117`. + Implemented by Eric Smith and Mark Dickinson, using David Gay's + :file:`dtoa.c` library; :issue:`7117`. * The :meth:`str.format` method now supports automatic numbering of the replacement fields. This makes using :meth:`str.format` more closely resemble using @@ -358,6 +360,11 @@ on the :exc:`IOError` exception when trying to open a directory on POSIX platforms. (Noted by Jan Kaliszewski; :issue:`4764`.) +* The Python tokenizer now translates line endings itself, so the + :func:`compile` built-in function can now accept code using any + line-ending convention. Additionally, it no longer requires that the + code end in a newline. + * Extra parentheses in function definitions are illegal in Python 3.x, meaning that you get a syntax error from ``def f((x)): pass``. In Python3-warning mode, Python 2.7 will now warn about this odd usage. @@ -433,6 +440,8 @@ Various benchmarks show speedups of between 50% and 150% for long integer divisions and modulo operations. (Contributed by Mark Dickinson; :issue:`5512`.) + Bitwise operations are also significantly faster (initial patch by + Gregory Smith; :issue:`1087418`). * The implementation of ``%`` checks for the left-side operand being a Python string and special-cases it; this results in a 1-3% @@ -444,6 +453,16 @@ faster bytecode. (Patch by Antoine Pitrou, back-ported to 2.7 by Jeffrey Yasskin; :issue:`4715`.) +* Converting an integer or long integer to a decimal string was made + faster by special-casing base 10 instead of using a generalized + conversion function that supports arbitrary bases. + (Patch by Gawain Bolton; :issue:`6713`.) + +* The :meth:`rindex`, :meth:`rpartition`, and :meth:`rsplit` methods + of string objects now uses a fast reverse-search algorithm instead of + a character-by-character scan. This is often faster by a factor of 10. + (Added by Florent Xicluna; :issue:`7462`.) + * The :mod:`pickle` and :mod:`cPickle` modules now automatically intern the strings used for attribute names, reducing memory usage of the objects resulting from unpickling. (Contributed by Jake @@ -453,11 +472,6 @@ nearly halving the time required to pickle them. (Contributed by Collin Winter; :issue:`5670`.) -* Converting an integer or long integer to a decimal string was made - faster by special-casing base 10 instead of using a generalized - conversion function that supports arbitrary bases. - (Patch by Gawain Bolton; :issue:`6713`.) - .. ====================================================================== New and Improved Modules @@ -602,6 +616,10 @@ XXX link to file:///MacDev/svn.python.org/python-trunk/Doc/build/html/distutils/examples.html#reading-the-metadata (Contributed by Tarek Ziade; :issue:`7457`.) + :file:`setup.py` files will now accept a :option:`--no-user-cfg` switch + to skip reading the :file:`~/.pydistutils.cfg` file. (Suggested by + by Michael Hoffman, and implemented by Paul Winkler; :issue:`1180`.) + * The :class:`Fraction` class now accepts two rational numbers as arguments to its constructor. (Implemented by Mark Dickinson; :issue:`5812`.) @@ -625,14 +643,6 @@ recorded in a gzipped file by providing an optional timestamp to the constructor. (Contributed by Jacques Frechet; :issue:`4272`.) -* The :mod:`hashlib` module was inconsistent about accepting - input as a Unicode object or an object that doesn't support - the buffer protocol. The behavior was different depending on - whether :mod:`hashlib` was using an external OpenSSL library - or its built-in implementations. Python 2.7 makes the - behavior consistent, always rejecting such objects by raising a - :exc:`TypeError`. (Fixed by Gregory P. Smith; :issue:`3745`.) - * The default :class:`HTTPResponse` class used by the :mod:`httplib` module now supports buffering, resulting in much faster reading of HTTP responses. (Contributed by Kristjan Valur Jonsson; :issue:`4879`.) @@ -745,6 +755,10 @@ to store data. (Contributed by Tarek Ziade; :issue:`6693`.) +* The :mod:`socket` module's :class:`SSL` objects now support the + buffer API, which fixed a test suite failure. (Fixed by Antoine Pitrou; + :issue:`7133`.) + * The :mod:`SocketServer` module's :class:`TCPServer` class now has a :attr:`disable_nagle_algorithm` class attribute. The default value is False; if overridden to be True, @@ -858,6 +872,10 @@ whether the two values evaluate to the same object or not. (Added by Michael Foord; :issue:`2578`.) +* :meth:`assertIsInstance` and :meth:`assertNotIsInstance` check whether + the resulting object is an instance of a particular class, or of + one of a tuple of classes. (Added by Georg Brandl; :issue:`7031`.) + * :meth:`assertGreater`, :meth:`assertGreaterEqual`, :meth:`assertLess`, and :meth:`assertLessEqual` compare two quantities. @@ -1025,6 +1043,11 @@ a :ctype:`long`, an *overflow* flag is set and returned to the caller. (Contributed by Case Van Horsen; :issue:`7528`.) +* New function: stemming from the rewrite of string-to-float conversion, + a new :cfunc:`PyOS_string_to_double` function was added. The old + :cfunc:`PyOS_ascii_strtod` and :cfunc:`PyOS_ascii_atof` functions + are now deprecated. + * New macros: the Python header files now define the following macros: :cmacro:`Py_ISALNUM`, :cmacro:`Py_ISALPHA`, @@ -1067,10 +1090,30 @@ (Fixed by Thomas Wouters; :issue:`1590864`.) +* The :cfunc:`Py_Finalize` function now calls the internal + :func:`threading._shutdown` function; this prevents some exceptions from + being raised when an interpreter shuts down. + (Patch by Adam Olsen; :issue:`1722344`.) + * Global symbols defined by the :mod:`ctypes` module are now prefixed with ``Py``, or with ``_ctypes``. (Implemented by Thomas Heller; :issue:`3102`.) +* New configure option: the :option:`--with-system-expat` switch allows + building the :mod:`pyexpat` module to use the system Expat library. + (Contributed by Arfrever Frehtes Taifersar Arahesis; :issue:`7609`.) + +* New configure option: Compiling Python with the + :option:`--with-valgrind` option will now disable the pymalloc + allocator, which is difficult for the Valgrind to analyze correctly. + Valgrind will therefore be better at detecting memory leaks and + overruns. (Contributed by James Henstridge; :issue:`2422`.) + +* New configure option: you can now supply no arguments to + :option:`--with-dbmliborder=` in order to build none of the various + DBM modules. (Added by Arfrever Frehtes Taifersar Arahesis; + :issue:`6491`.) + * The :program:`configure` script now checks for floating-point rounding bugs on certain 32-bit Intel chips and defines a :cmacro:`X87_DOUBLE_ROUNDING` preprocessor definition. No code currently uses this definition, @@ -1083,11 +1126,6 @@ * The build process now supports Subversion 1.7. (Contributed by Arfrever Frehtes Taifersar Arahesis; :issue:`6094`.) -* Compiling Python with the :option:`--with-valgrind` option will now - disable the pymalloc allocator, which is difficult for the Valgrind to - analyze correctly. Valgrind will therefore be better at detecting - memory leaks and overruns. (Contributed by James Henstridge; :issue:`2422`.) - .. ====================================================================== @@ -1139,12 +1177,14 @@ The :option:`-r` option also reports the seed that was used (Added by Collin Winter.) -* The :file:`regrtest.py` script now takes a :option:`-j` switch - that takes an integer specifying how many tests run in parallel. This +* Another :file:`regrtest.py` switch is :option:`-j`, which + takes an integer specifying how many tests run in parallel. This allows reducing the total runtime on multi-core machines. This option is compatible with several other options, including the :option:`-R` switch which is known to produce long runtimes. - (Added by Antoine Pitrou, :issue:`6152`.) + (Added by Antoine Pitrou, :issue:`6152`.) This can also be used + with a new :option:`-F` switch that runs selected tests in a loop + until they fail. (Added by Antoine Pitrou; :issue:`7312`.) .. ====================================================================== @@ -1175,6 +1215,17 @@ nothing when a negative length is requested, as other file-like objects do. (:issue:`7348`). +For C extensions: + +* C extensions that use integer format codes with the ``PyArg_Parse*`` + family of functions will now raise a :exc:`TypeError` exception + instead of triggering a :exc:`DeprecationWarning` (:issue:`5080`). + +* Use the new :cfunc:`PyOS_string_to_double` function instead of the old + :cfunc:`PyOS_ascii_strtod` and :cfunc:`PyOS_ascii_atof` functions, + which are now deprecated. + + .. ====================================================================== Modified: python/branches/py3k-cdecimal/Include/bytearrayobject.h ============================================================================== --- python/branches/py3k-cdecimal/Include/bytearrayobject.h (original) +++ python/branches/py3k-cdecimal/Include/bytearrayobject.h Thu Jan 21 20:32:23 2010 @@ -44,9 +44,13 @@ PyAPI_FUNC(int) PyByteArray_Resize(PyObject *, Py_ssize_t); /* Macros, trading safety for speed */ -#define PyByteArray_AS_STRING(self) (assert(PyByteArray_Check(self)),((PyByteArrayObject *)(self))->ob_bytes) +#define PyByteArray_AS_STRING(self) \ + (assert(PyByteArray_Check(self)), \ + Py_SIZE(self) ? ((PyByteArrayObject *)(self))->ob_bytes : _PyByteArray_empty_string) #define PyByteArray_GET_SIZE(self) (assert(PyByteArray_Check(self)),Py_SIZE(self)) +PyAPI_DATA(char) _PyByteArray_empty_string[]; + #ifdef __cplusplus } #endif Modified: python/branches/py3k-cdecimal/Lib/_weakrefset.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/_weakrefset.py (original) +++ python/branches/py3k-cdecimal/Lib/_weakrefset.py Thu Jan 21 20:32:23 2010 @@ -6,22 +6,61 @@ __all__ = ['WeakSet'] + +class _IterationGuard: + # This context manager registers itself in the current iterators of the + # weak container, such as to delay all removals until the context manager + # exits. + # This technique should be relatively thread-safe (since sets are). + + def __init__(self, weakcontainer): + # Don't create cycles + self.weakcontainer = ref(weakcontainer) + + def __enter__(self): + w = self.weakcontainer() + if w is not None: + w._iterating.add(self) + return self + + def __exit__(self, e, t, b): + w = self.weakcontainer() + if w is not None: + s = w._iterating + s.remove(self) + if not s: + w._commit_removals() + + class WeakSet: def __init__(self, data=None): self.data = set() def _remove(item, selfref=ref(self)): self = selfref() if self is not None: - self.data.discard(item) + if self._iterating: + self._pending_removals.append(item) + else: + self.data.discard(item) self._remove = _remove + # A list of keys to be removed + self._pending_removals = [] + self._iterating = set() if data is not None: self.update(data) + def _commit_removals(self): + l = self._pending_removals + discard = self.data.discard + while l: + discard(l.pop()) + def __iter__(self): - for itemref in self.data: - item = itemref() - if item is not None: - yield item + with _IterationGuard(self): + for itemref in self.data: + item = itemref() + if item is not None: + yield item def __len__(self): return sum(x() is not None for x in self.data) @@ -34,15 +73,21 @@ getattr(self, '__dict__', None)) def add(self, item): + if self._pending_removals: + self._commit_removals() self.data.add(ref(item, self._remove)) def clear(self): + if self._pending_removals: + self._commit_removals() self.data.clear() def copy(self): return self.__class__(self) def pop(self): + if self._pending_removals: + self._commit_removals() while True: try: itemref = self.data.pop() @@ -53,17 +98,24 @@ return item def remove(self, item): + if self._pending_removals: + self._commit_removals() self.data.remove(ref(item)) def discard(self, item): + if self._pending_removals: + self._commit_removals() self.data.discard(ref(item)) def update(self, other): + if self._pending_removals: + self._commit_removals() if isinstance(other, self.__class__): self.data.update(other.data) else: for element in other: self.add(element) + def __ior__(self, other): self.update(other) return self @@ -82,11 +134,15 @@ __sub__ = difference def difference_update(self, other): + if self._pending_removals: + self._commit_removals() if self is other: self.data.clear() else: self.data.difference_update(ref(item) for item in other) def __isub__(self, other): + if self._pending_removals: + self._commit_removals() if self is other: self.data.clear() else: @@ -98,8 +154,12 @@ __and__ = intersection def intersection_update(self, other): + if self._pending_removals: + self._commit_removals() self.data.intersection_update(ref(item) for item in other) def __iand__(self, other): + if self._pending_removals: + self._commit_removals() self.data.intersection_update(ref(item) for item in other) return self @@ -127,11 +187,15 @@ __xor__ = symmetric_difference def symmetric_difference_update(self, other): + if self._pending_removals: + self._commit_removals() if self is other: self.data.clear() else: self.data.symmetric_difference_update(ref(item) for item in other) def __ixor__(self, other): + if self._pending_removals: + self._commit_removals() if self is other: self.data.clear() else: Modified: python/branches/py3k-cdecimal/Lib/cmd.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/cmd.py (original) +++ python/branches/py3k-cdecimal/Lib/cmd.py Thu Jan 21 20:32:23 2010 @@ -278,19 +278,15 @@ return None def get_names(self): - # Inheritance says we have to look in class and - # base classes; order is not important. - names = [] - classes = [self.__class__] - while classes: - aclass = classes.pop(0) - if aclass.__bases__: - classes = classes + list(aclass.__bases__) - names = names + dir(aclass) - return names + # This method used to pull in base class attributes + # at a time dir() didn't do it yet. + return dir(self.__class__) def complete_help(self, *args): - return self.completenames(*args) + commands = set(self.completenames(*args)) + topics = set(a[5:] for a in self.get_names() + if a.startswith('help_' + args[0])) + return list(commands | topics) def do_help(self, arg): if arg: Modified: python/branches/py3k-cdecimal/Lib/distutils/ccompiler.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/distutils/ccompiler.py (original) +++ python/branches/py3k-cdecimal/Lib/distutils/ccompiler.py Thu Jan 21 20:32:23 2010 @@ -9,11 +9,12 @@ import os import re -from distutils.errors import CompileError, LinkError, UnknownFileError +from distutils.errors import (CompileError, LinkError, UnknownFileError, + DistutilsPlatformError, DistutilsModuleError) from distutils.spawn import spawn from distutils.file_util import move_file from distutils.dir_util import mkpath -from distutils.dep_util import newer_pairwise, newer_group +from distutils.dep_util import newer_group from distutils.util import split_quoted, execute from distutils import log @@ -314,10 +315,7 @@ def _setup_compile(self, outdir, macros, incdirs, sources, depends, extra): - """Process arguments and decide which source files to compile. - - Merges _fix_compile_args() and _prep_compile(). - """ + """Process arguments and decide which source files to compile.""" if outdir is None: outdir = self.output_dir elif not isinstance(outdir, str): @@ -346,41 +344,6 @@ output_dir=outdir) assert len(objects) == len(sources) - # XXX should redo this code to eliminate skip_source entirely. - # XXX instead create build and issue skip messages inline - - if self.force: - skip_source = {} # rebuild everything - for source in sources: - skip_source[source] = 0 - elif depends is None: - # If depends is None, figure out which source files we - # have to recompile according to a simplistic check. We - # just compare the source and object file, no deep - # dependency checking involving header files. - skip_source = {} # rebuild everything - for source in sources: # no wait, rebuild nothing - skip_source[source] = 1 - - n_sources, n_objects = newer_pairwise(sources, objects) - for source in n_sources: # no really, only rebuild what's - skip_source[source] = 0 # out-of-date - else: - # If depends is a list of files, then do a different - # simplistic check. Assume that each object depends on - # its source and all files in the depends list. - skip_source = {} - # L contains all the depends plus a spot at the end for a - # particular source file - L = depends[:] + [None] - for i in range(len(objects)): - source = sources[i] - L[-1] = source - if newer_group(L, objects[i]): - skip_source[source] = 0 - else: - skip_source[source] = 1 - pp_opts = gen_preprocess_options(macros, incdirs) build = {} @@ -389,10 +352,7 @@ obj = objects[i] ext = os.path.splitext(src)[1] self.mkpath(os.path.dirname(obj)) - if skip_source[src]: - log.debug("skipping %s (%s up-to-date)", src, obj) - else: - build[obj] = src, ext + build[obj] = (src, ext) return macros, objects, extra, pp_opts, build @@ -437,53 +397,6 @@ return output_dir, macros, include_dirs - def _prep_compile(self, sources, output_dir, depends=None): - """Decide which souce files must be recompiled. - - Determine the list of object files corresponding to 'sources', - and figure out which ones really need to be recompiled. - Return a list of all object files and a dictionary telling - which source files can be skipped. - """ - # Get the list of expected output (object) files - objects = self.object_filenames(sources, output_dir=output_dir) - assert len(objects) == len(sources) - - if self.force: - skip_source = {} # rebuild everything - for source in sources: - skip_source[source] = 0 - elif depends is None: - # If depends is None, figure out which source files we - # have to recompile according to a simplistic check. We - # just compare the source and object file, no deep - # dependency checking involving header files. - skip_source = {} # rebuild everything - for source in sources: # no wait, rebuild nothing - skip_source[source] = 1 - - n_sources, n_objects = newer_pairwise(sources, objects) - for source in n_sources: # no really, only rebuild what's - skip_source[source] = 0 # out-of-date - else: - # If depends is a list of files, then do a different - # simplistic check. Assume that each object depends on - # its source and all files in the depends list. - skip_source = {} - # L contains all the depends plus a spot at the end for a - # particular source file - L = depends[:] + [None] - for i in range(len(objects)): - source = sources[i] - L[-1] = source - if newer_group(L, objects[i]): - skip_source[source] = 0 - else: - skip_source[source] = 1 - - return objects, skip_source - - def _fix_object_args(self, objects, output_dir): """Typecheck and fix up some arguments supplied to various methods. Specifically: ensure that 'objects' is a list; if output_dir is @@ -685,26 +598,15 @@ """ pass - # values for target_desc parameter in link() SHARED_OBJECT = "shared_object" SHARED_LIBRARY = "shared_library" EXECUTABLE = "executable" - def link(self, - target_desc, - objects, - output_filename, - output_dir=None, - libraries=None, - library_dirs=None, - runtime_library_dirs=None, - export_symbols=None, - debug=0, - extra_preargs=None, - extra_postargs=None, - build_temp=None, - target_lang=None): + def link(self, target_desc, objects, output_filename, output_dir=None, + libraries=None, library_dirs=None, runtime_library_dirs=None, + export_symbols=None, debug=0, extra_preargs=None, + extra_postargs=None, build_temp=None, target_lang=None): """Link a bunch of stuff together to create an executable or shared library file. @@ -753,19 +655,11 @@ # Old 'link_*()' methods, rewritten to use the new 'link()' method. - def link_shared_lib(self, - objects, - output_libname, - output_dir=None, - libraries=None, - library_dirs=None, - runtime_library_dirs=None, - export_symbols=None, - debug=0, - extra_preargs=None, - extra_postargs=None, - build_temp=None, - target_lang=None): + def link_shared_lib(self, objects, output_libname, output_dir=None, + libraries=None, library_dirs=None, + runtime_library_dirs=None, export_symbols=None, + debug=0, extra_preargs=None, extra_postargs=None, + build_temp=None, target_lang=None): self.link(CCompiler.SHARED_LIBRARY, objects, self.library_filename(output_libname, lib_type='shared'), output_dir, @@ -774,19 +668,11 @@ extra_preargs, extra_postargs, build_temp, target_lang) - def link_shared_object(self, - objects, - output_filename, - output_dir=None, - libraries=None, - library_dirs=None, - runtime_library_dirs=None, - export_symbols=None, - debug=0, - extra_preargs=None, - extra_postargs=None, - build_temp=None, - target_lang=None): + def link_shared_object(self, objects, output_filename, output_dir=None, + libraries=None, library_dirs=None, + runtime_library_dirs=None, export_symbols=None, + debug=0, extra_preargs=None, extra_postargs=None, + build_temp=None, target_lang=None): self.link(CCompiler.SHARED_OBJECT, objects, output_filename, output_dir, libraries, library_dirs, runtime_library_dirs, @@ -794,17 +680,10 @@ extra_preargs, extra_postargs, build_temp, target_lang) - def link_executable(self, - objects, - output_progname, - output_dir=None, - libraries=None, - library_dirs=None, - runtime_library_dirs=None, - debug=0, - extra_preargs=None, - extra_postargs=None, - target_lang=None): + def link_executable(self, objects, output_progname, output_dir=None, + libraries=None, library_dirs=None, + runtime_library_dirs=None, debug=0, extra_preargs=None, + extra_postargs=None, target_lang=None): self.link(CCompiler.EXECUTABLE, objects, self.executable_filename(output_progname), output_dir, libraries, library_dirs, runtime_library_dirs, None, @@ -986,7 +865,7 @@ def move_file(self, src, dst): return move_file(src, dst, dry_run=self.dry_run) - def mkpath (self, name, mode=0o777): + def mkpath(self, name, mode=0o777): mkpath(name, mode, dry_run=self.dry_run) Modified: python/branches/py3k-cdecimal/Lib/distutils/tests/test_unixccompiler.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/distutils/tests/test_unixccompiler.py (original) +++ python/branches/py3k-cdecimal/Lib/distutils/tests/test_unixccompiler.py Thu Jan 21 20:32:23 2010 @@ -82,6 +82,18 @@ sysconfig.get_config_var = gcv self.assertEqual(self.cc.rpath_foo(), '-Wl,-R/foo') + # GCC GNULD with fully qualified configuration prefix + # see #7617 + sys.platform = 'bar' + def gcv(v): + if v == 'CC': + return 'x86_64-pc-linux-gnu-gcc-4.4.2' + elif v == 'GNULD': + return 'yes' + sysconfig.get_config_var = gcv + self.assertEqual(self.cc.rpath_foo(), '-Wl,--enable-new-dtags,-R/foo') + + # non-GCC GNULD sys.platform = 'bar' def gcv(v): Modified: python/branches/py3k-cdecimal/Lib/distutils/unixccompiler.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/distutils/unixccompiler.py (original) +++ python/branches/py3k-cdecimal/Lib/distutils/unixccompiler.py Thu Jan 21 20:32:23 2010 @@ -264,6 +264,9 @@ def library_dir_option(self, dir): return "-L" + dir + def _is_gcc(self, compiler_name): + return "gcc" in compiler_name or "g++" in compiler_name + def runtime_library_dir_option(self, dir): # XXX Hackish, at the very least. See Python bug #445902: # http://sourceforge.net/tracker/index.php @@ -283,12 +286,12 @@ # MacOSX's linker doesn't understand the -R flag at all return "-L" + dir elif sys.platform[:5] == "hp-ux": - if "gcc" in compiler or "g++" in compiler: + if self._is_gcc(compiler): return ["-Wl,+s", "-L" + dir] return ["+s", "-L" + dir] elif sys.platform[:7] == "irix646" or sys.platform[:6] == "osf1V5": return ["-rpath", dir] - elif compiler[:3] == "gcc" or compiler[:3] == "g++": + elif self._is_gcc(compiler): # gcc on non-GNU systems does not need -Wl, but can # use it anyway. Since distutils has always passed in # -Wl whenever gcc was used in the past it is probably Modified: python/branches/py3k-cdecimal/Lib/email/generator.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/email/generator.py (original) +++ python/branches/py3k-cdecimal/Lib/email/generator.py Thu Jan 21 20:32:23 2010 @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2007 Python Software Foundation +# Copyright (C) 2001-2010 Python Software Foundation # Author: Barry Warsaw # Contact: email-sig at python.org @@ -215,6 +215,17 @@ print(file=self._fp) self._fp.write(msg.epilogue) + def _handle_multipart_signed(self, msg): + # The contents of signed parts has to stay unmodified in order to keep + # the signature intact per RFC1847 2.1, so we disable header wrapping. + # RDM: This isn't enough to completely preserve the part, but it helps. + old_maxheaderlen = self._maxheaderlen + try: + self._maxheaderlen = 0 + self._handle_multipart(msg) + finally: + self._maxheaderlen = old_maxheaderlen + def _handle_message_delivery_status(self, msg): # We can't just write the headers directly to self's file object # because this will leave an extra newline between the last header Modified: python/branches/py3k-cdecimal/Lib/email/test/test_email.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/email/test/test_email.py (original) +++ python/branches/py3k-cdecimal/Lib/email/test/test_email.py Thu Jan 21 20:32:23 2010 @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2007 Python Software Foundation +# Copyright (C) 2001-2010 Python Software Foundation # Contact: email-sig at python.org # email package unit tests @@ -3387,6 +3387,44 @@ +# Tests to ensure that signed parts of an email are completely preserved, as +# required by RFC1847 section 2.1. Note that these are incomplete, because the +# email package does not currently always preserve the body. See issue 1670765. +class TestSigned(TestEmailBase): + + def _msg_and_obj(self, filename): + with openfile(findfile(filename)) as fp: + original = fp.read() + msg = email.message_from_string(original) + return original, msg + + def _signed_parts_eq(self, original, result): + # Extract the first mime part of each message + import re + repart = re.compile(r'^--([^\n]+)\n(.*?)\n--\1$', re.S | re.M) + inpart = repart.search(original).group(2) + outpart = repart.search(result).group(2) + self.assertEqual(outpart, inpart) + + def test_long_headers_as_string(self): + original, msg = self._msg_and_obj('msg_45.txt') + result = msg.as_string() + self._signed_parts_eq(original, result) + + def test_long_headers_as_string_maxheaderlen(self): + original, msg = self._msg_and_obj('msg_45.txt') + result = msg.as_string(maxheaderlen=60) + self._signed_parts_eq(original, result) + + def test_long_headers_flatten(self): + original, msg = self._msg_and_obj('msg_45.txt') + fp = StringIO() + Generator(fp).flatten(msg) + result = fp.getvalue() + self._signed_parts_eq(original, result) + + + def _testclasses(): mod = sys.modules[__name__] return [getattr(mod, name) for name in dir(mod) if name.startswith('Test')] Modified: python/branches/py3k-cdecimal/Lib/email/utils.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/email/utils.py (original) +++ python/branches/py3k-cdecimal/Lib/email/utils.py Thu Jan 21 20:32:23 2010 @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2009 Python Software Foundation +# Copyright (C) 2001-2010 Python Software Foundation # Author: Barry Warsaw # Contact: email-sig at python.org Modified: python/branches/py3k-cdecimal/Lib/gzip.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/gzip.py (original) +++ python/branches/py3k-cdecimal/Lib/gzip.py Thu Jan 21 20:32:23 2010 @@ -348,6 +348,15 @@ elif isize != (self.size & 0xffffffff): raise IOError("Incorrect length of data produced") + # Gzip files can be padded with zeroes and still have archives. + # Consume all zero bytes and set the file position to the first + # non-zero byte. See http://www.gzip.org/#faq8 + c = b"\x00" + while c == b"\x00": + c = self.fileobj.read(1) + if c: + self.fileobj.seek(-1, 1) + @property def closed(self): return self.fileobj is None Modified: python/branches/py3k-cdecimal/Lib/idlelib/NEWS.txt ============================================================================== --- python/branches/py3k-cdecimal/Lib/idlelib/NEWS.txt (original) +++ python/branches/py3k-cdecimal/Lib/idlelib/NEWS.txt Thu Jan 21 20:32:23 2010 @@ -28,7 +28,7 @@ What's New in IDLE 2.7? (UNRELEASED, but merged into 3.1 releases above.) ======================= -*Release date: XX-XXX-2009* +*Release date: XX-XXX-2010* - idle.py modified and simplified to better support developing experimental versions of IDLE which are not installed in the standard location. Modified: python/branches/py3k-cdecimal/Lib/logging/__init__.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/logging/__init__.py (original) +++ python/branches/py3k-cdecimal/Lib/logging/__init__.py Thu Jan 21 20:32:23 2010 @@ -18,7 +18,7 @@ Logging package for Python. Based on PEP 282 and comments thereto in comp.lang.python, and influenced by Apache's log4j system. -Copyright (C) 2001-2009 Vinay Sajip. All Rights Reserved. +Copyright (C) 2001-2010 Vinay Sajip. All Rights Reserved. To use, simply 'import logging' and log away! """ Modified: python/branches/py3k-cdecimal/Lib/pickle.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/pickle.py (original) +++ python/branches/py3k-cdecimal/Lib/pickle.py Thu Jan 21 20:32:23 2010 @@ -1269,50 +1269,14 @@ b'\x7f' >>> """ - if x == 0: return b'' - if x > 0: - ashex = hex(x) - assert ashex.startswith("0x") - njunkchars = 2 + ashex.endswith('L') - nibbles = len(ashex) - njunkchars - if nibbles & 1: - # need an even # of nibbles for unhexlify - ashex = "0x0" + ashex[2:] - elif int(ashex[2], 16) >= 8: - # "looks negative", so need a byte of sign bits - ashex = "0x00" + ashex[2:] - else: - # Build the 256's-complement: (1L << nbytes) + x. The trick is - # to find the number of bytes in linear time (although that should - # really be a constant-time task). - ashex = hex(-x) - assert ashex.startswith("0x") - njunkchars = 2 + ashex.endswith('L') - nibbles = len(ashex) - njunkchars - if nibbles & 1: - # Extend to a full byte. - nibbles += 1 - nbits = nibbles * 4 - x += 1 << nbits - assert x > 0 - ashex = hex(x) - njunkchars = 2 + ashex.endswith('L') - newnibbles = len(ashex) - njunkchars - if newnibbles < nibbles: - ashex = "0x" + "0" * (nibbles - newnibbles) + ashex[2:] - if int(ashex[2], 16) < 8: - # "looks positive", so need a byte of sign bits - ashex = "0xff" + ashex[2:] - - if ashex.endswith('L'): - ashex = ashex[2:-1] - else: - ashex = ashex[2:] - assert len(ashex) & 1 == 0, (x, ashex) - binary = _binascii.unhexlify(ashex) - return bytes(binary[::-1]) + nbytes = (x.bit_length() >> 3) + 1 + result = x.to_bytes(nbytes, byteorder='little', signed=True) + if x < 0 and nbytes > 1: + if result[-1] == 0xff and (result[-2] & 0x80) != 0: + result = result[:-1] + return result def decode_long(data): r"""Decode a long from a two's complement little-endian binary string. @@ -1332,15 +1296,7 @@ >>> decode_long(b"\x7f") 127 """ - - nbytes = len(data) - if nbytes == 0: - return 0 - ashex = _binascii.hexlify(data[::-1]) - n = int(ashex, 16) # quadratic time before Python 2.3; linear now - if data[-1] >= 0x80: - n -= 1 << (nbytes * 8) - return n + return int.from_bytes(data, byteorder='little', signed=True) # Use the faster _pickle if possible try: Modified: python/branches/py3k-cdecimal/Lib/platform.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/platform.py (original) +++ python/branches/py3k-cdecimal/Lib/platform.py Thu Jan 21 20:32:23 2010 @@ -90,7 +90,7 @@ __copyright__ = """ Copyright (c) 1999-2000, Marc-Andre Lemburg; mailto:mal at lemburg.com - Copyright (c) 2000-2009, eGenix.com Software GmbH; mailto:info at egenix.com + Copyright (c) 2000-2010, eGenix.com Software GmbH; mailto:info at egenix.com Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee or royalty is hereby granted, Modified: python/branches/py3k-cdecimal/Lib/ssl.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/ssl.py (original) +++ python/branches/py3k-cdecimal/Lib/ssl.py Thu Jan 21 20:32:23 2010 @@ -304,7 +304,7 @@ self._sslobj = None socket.shutdown(self, how) - def unwrap (self): + def unwrap(self): if self._sslobj: s = self._sslobj.shutdown() self._sslobj = None Modified: python/branches/py3k-cdecimal/Lib/test/crashers/bogus_code_obj.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/crashers/bogus_code_obj.py (original) +++ python/branches/py3k-cdecimal/Lib/test/crashers/bogus_code_obj.py Thu Jan 21 20:32:23 2010 @@ -14,6 +14,6 @@ import types -co = types.CodeType(0, 0, 0, 0, '\x04\x71\x00\x00', (), - (), (), '', '', 1, '') +co = types.CodeType(0, 0, 0, 0, 0, b'\x04\x71\x00\x00', + (), (), (), '', '', 1, b'') exec(co) Modified: python/branches/py3k-cdecimal/Lib/test/floating_points.txt ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/floating_points.txt (original) +++ python/branches/py3k-cdecimal/Lib/test/floating_points.txt Thu Jan 21 20:32:23 2010 @@ -1019,3 +1019,10 @@ +43723334984997307E-26 +10182419849537963E-24 -93501703572661982E-26 + +# A value that caused a crash in debug builds for Python >= 2.7, 3.1 +# See http://bugs.python.org/issue7632 +2183167012312112312312.23538020374420446192e-370 + +# Another value designed to test a corner case of Python's strtod code. +0.99999999999999999999999999999999999999999e+23 Modified: python/branches/py3k-cdecimal/Lib/test/https_svn_python_org_root.pem ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/https_svn_python_org_root.pem (original) +++ python/branches/py3k-cdecimal/Lib/test/https_svn_python_org_root.pem Thu Jan 21 20:32:23 2010 @@ -1,26 +1,41 @@ -----BEGIN CERTIFICATE----- -MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB -lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt -SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG -A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe -MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v -d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh -cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn -0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ -M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a -MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd -oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI -DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy -oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD -VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0 -dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy -bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF -BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM -//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli -CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE -CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t -3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS -KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== ------END CERTIFICATE----- \ No newline at end of file +MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290 +IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB +IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA +Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO +BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi +MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ +ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ +8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6 +zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y +fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7 +w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc +G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k +epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q +laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ +QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU +fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826 +YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w +ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY +gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe +MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0 +IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy +dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw +czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0 +dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl +aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC +AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg +b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB +ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc +nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg +18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c +gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl +Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY +sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T +SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF +CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum +GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk +zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW +omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD +-----END CERTIFICATE----- Modified: python/branches/py3k-cdecimal/Lib/test/pickletester.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/pickletester.py (original) +++ python/branches/py3k-cdecimal/Lib/test/pickletester.py Thu Jan 21 20:32:23 2010 @@ -1139,6 +1139,9 @@ # Test issue4298 s = bytes([0x58, 0, 0, 0, 0x54]) self.assertRaises(EOFError, pickle.loads, s) + # Test issue7455 + s = b'0' + self.assertRaises(pickle.UnpicklingError, pickle.loads, s) class AbstractPersistentPicklerTests(unittest.TestCase): Modified: python/branches/py3k-cdecimal/Lib/test/regrtest.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/regrtest.py (original) +++ python/branches/py3k-cdecimal/Lib/test/regrtest.py Thu Jan 21 20:32:23 2010 @@ -159,16 +159,6 @@ import unittest from inspect import isabstract -# I see no other way to suppress these warnings; -# putting them in test_grammar.py has no effect: -warnings.filterwarnings("ignore", "hex/oct constants", FutureWarning, - ".*test.test_grammar$") -if sys.maxsize > 0x7fffffff: - # Also suppress them in , because for 64-bit platforms, - # that's where test_grammar.py hides them. - warnings.filterwarnings("ignore", "hex/oct constants", FutureWarning, - "") - # Ignore ImportWarnings that only occur in the source tree, # (because of modules with the same name as source-directories in Modules/) for mod in ("ctypes", "gzip", "zipfile", "tarfile", "encodings.zlib_codec", Modified: python/branches/py3k-cdecimal/Lib/test/test_bigmem.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_bigmem.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_bigmem.py Thu Jan 21 20:32:23 2010 @@ -519,12 +519,12 @@ edge = _('-') * (size // 2) s = _('').join([edge, SUBSTR, edge]) del edge - self.assertTrue(SUBSTR in s) + self.assertIn(SUBSTR, s) self.assertFalse(SUBSTR * 2 in s) - self.assertTrue(_('-') in s) + self.assertIn(_('-'), s) self.assertFalse(_('a') in s) s += _('a') - self.assertTrue(_('a') in s) + self.assertIn(_('a'), s) @bigmemtest(minsize=_2G + 10, memuse=2) def test_compare(self, size): @@ -768,7 +768,7 @@ def test_contains(self, size): t = (1, 2, 3, 4, 5) * size self.assertEquals(len(t), size * 5) - self.assertTrue(5 in t) + self.assertIn(5, t) self.assertFalse((1, 2, 3, 4, 5) in t) self.assertFalse(0 in t) @@ -917,7 +917,7 @@ def test_contains(self, size): l = [1, 2, 3, 4, 5] * size self.assertEquals(len(l), size * 5) - self.assertTrue(5 in l) + self.assertIn(5, l) self.assertFalse([1, 2, 3, 4, 5] in l) self.assertFalse(0 in l) Modified: python/branches/py3k-cdecimal/Lib/test/test_binascii.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_binascii.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_binascii.py Thu Jan 21 20:32:23 2010 @@ -3,14 +3,27 @@ from test import support import unittest import binascii +import array + +# Note: "*_hex" functions are aliases for "(un)hexlify" +b2a_functions = ['b2a_base64', 'b2a_hex', 'b2a_hqx', 'b2a_qp', 'b2a_uu', + 'hexlify', 'rlecode_hqx'] +a2b_functions = ['a2b_base64', 'a2b_hex', 'a2b_hqx', 'a2b_qp', 'a2b_uu', + 'unhexlify', 'rledecode_hqx'] +all_functions = a2b_functions + b2a_functions + ['crc32', 'crc_hqx'] + class BinASCIITest(unittest.TestCase): + type2test = bytes # Create binary test data - data = b"The quick brown fox jumps over the lazy dog.\r\n" + rawdata = b"The quick brown fox jumps over the lazy dog.\r\n" # Be slow so we don't depend on other modules - data += bytes(range(256)) - data += b"\r\nHello world.\n" + rawdata += bytes(range(256)) + rawdata += b"\r\nHello world.\n" + + def setUp(self): + self.data = self.type2test(self.rawdata) def test_exceptions(self): # Check module exceptions @@ -19,32 +32,47 @@ def test_functions(self): # Check presence of all functions - funcs = [] - for suffix in "base64", "hqx", "uu", "hex": - prefixes = ["a2b_", "b2a_"] - if suffix == "hqx": - prefixes.extend(["crc_", "rlecode_", "rledecode_"]) - for prefix in prefixes: - name = prefix + suffix - self.assertTrue(hasattr(getattr(binascii, name), '__call__')) - self.assertRaises(TypeError, getattr(binascii, name)) - for name in ("hexlify", "unhexlify"): + for name in all_functions: self.assertTrue(hasattr(getattr(binascii, name), '__call__')) self.assertRaises(TypeError, getattr(binascii, name)) + def test_returned_value(self): + # Limit to the minimum of all limits (b2a_uu) + MAX_ALL = 45 + raw = self.rawdata[:MAX_ALL] + for fa, fb in zip(a2b_functions, b2a_functions): + a2b = getattr(binascii, fa) + b2a = getattr(binascii, fb) + try: + a = b2a(self.type2test(raw)) + res = a2b(self.type2test(a)) + except Exception as err: + self.fail("{}/{} conversion raises {!r}".format(fb, fa, err)) + if fb == 'b2a_hqx': + # b2a_hqx returns a tuple + res, _ = res + self.assertEqual(res, raw, "{}/{} conversion: " + "{!r} != {!r}".format(fb, fa, res, raw)) + self.assertIsInstance(res, bytes) + self.assertIsInstance(a, bytes) + self.assertLess(max(c for c in a), 128) + self.assertIsInstance(binascii.crc_hqx(raw, 0), int) + self.assertIsInstance(binascii.crc32(raw), int) + def test_base64valid(self): # Test base64 with valid data MAX_BASE64 = 57 lines = [] - for i in range(0, len(self.data), MAX_BASE64): - b = self.data[i:i+MAX_BASE64] + for i in range(0, len(self.rawdata), MAX_BASE64): + b = self.type2test(self.rawdata[i:i+MAX_BASE64]) a = binascii.b2a_base64(b) lines.append(a) res = bytes() for line in lines: - b = binascii.a2b_base64(line) + a = self.type2test(line) + b = binascii.a2b_base64(a) res += b - self.assertEqual(res, self.data) + self.assertEqual(res, self.rawdata) def test_base64invalid(self): # Test base64 with random invalid characters sprinkled throughout @@ -52,7 +80,7 @@ MAX_BASE64 = 57 lines = [] for i in range(0, len(self.data), MAX_BASE64): - b = self.data[i:i+MAX_BASE64] + b = self.type2test(self.rawdata[i:i+MAX_BASE64]) a = binascii.b2a_base64(b) lines.append(a) @@ -74,26 +102,28 @@ return res + noise + line res = bytearray() for line in map(addnoise, lines): - b = binascii.a2b_base64(line) + a = self.type2test(line) + b = binascii.a2b_base64(a) res += b - self.assertEqual(res, self.data) + self.assertEqual(res, self.rawdata) # Test base64 with just invalid characters, which should return # empty strings. TBD: shouldn't it raise an exception instead ? - self.assertEqual(binascii.a2b_base64(fillers), b'') + self.assertEqual(binascii.a2b_base64(self.type2test(fillers)), b'') def test_uu(self): MAX_UU = 45 lines = [] for i in range(0, len(self.data), MAX_UU): - b = self.data[i:i+MAX_UU] + b = self.type2test(self.rawdata[i:i+MAX_UU]) a = binascii.b2a_uu(b) lines.append(a) res = bytes() for line in lines: - b = binascii.a2b_uu(line) + a = self.type2test(line) + b = binascii.a2b_uu(a) res += b - self.assertEqual(res, self.data) + self.assertEqual(res, self.rawdata) self.assertEqual(binascii.a2b_uu(b"\x7f"), b"\x00"*31) self.assertEqual(binascii.a2b_uu(b"\x80"), b"\x00"*32) @@ -103,20 +133,31 @@ self.assertRaises(binascii.Error, binascii.b2a_uu, 46*b"!") + # Issue #7701 (crash on a pydebug build) + self.assertEqual(binascii.b2a_uu(b'x'), b'!> \n') + def test_crc32(self): - crc = binascii.crc32(b"Test the CRC-32 of") - crc = binascii.crc32(b" this string.", crc) + crc = binascii.crc32(self.type2test(b"Test the CRC-32 of")) + crc = binascii.crc32(self.type2test(b" this string."), crc) self.assertEqual(crc, 1571220330) self.assertRaises(TypeError, binascii.crc32) - # The hqx test is in test_binhex.py + def test_hqx(self): + # Perform binhex4 style RLE-compression + # Then calculate the hexbin4 binary-to-ASCII translation + rle = binascii.rlecode_hqx(self.data) + a = binascii.b2a_hqx(self.type2test(rle)) + b, _ = binascii.a2b_hqx(self.type2test(a)) + res = binascii.rledecode_hqx(b) + + self.assertEqual(res, self.rawdata) def test_hex(self): # test hexlification s = b'{s\005\000\000\000worldi\002\000\000\000s\005\000\000\000helloi\001\000\000\0000' - t = binascii.b2a_hex(s) - u = binascii.a2b_hex(t) + t = binascii.b2a_hex(self.type2test(s)) + u = binascii.a2b_hex(self.type2test(t)) self.assertEqual(s, u) self.assertRaises(binascii.Error, binascii.a2b_hex, t[:-1]) self.assertRaises(binascii.Error, binascii.a2b_hex, t[:-1] + b'q') @@ -157,16 +198,17 @@ def test_empty_string(self): # A test for SF bug #1022953. Make sure SystemError is not raised. - for n in ['b2a_qp', 'a2b_hex', 'b2a_base64', 'a2b_uu', 'a2b_qp', - 'b2a_hex', 'unhexlify', 'hexlify', 'crc32', 'b2a_hqx', - 'a2b_hqx', 'a2b_base64', 'rlecode_hqx', 'b2a_uu', - 'rledecode_hqx']: - f = getattr(binascii, n) + empty = self.type2test(b'') + for func in all_functions: + if func == 'crc_hqx': + # crc_hqx needs 2 arguments + binascii.crc_hqx(empty, 0) + continue + f = getattr(binascii, func) try: - f(b'') - except SystemError as err: - self.fail("%s(b'') raises SystemError: %s" % (n, err)) - binascii.crc_hqx(b'', 0) + f(empty) + except Exception as err: + self.fail("{}({!r}) raises {!r}".format(func, empty, err)) def test_no_binary_strings(self): # b2a_ must not accept strings @@ -176,8 +218,25 @@ binascii.crc_hqx, binascii.crc32): self.assertRaises(TypeError, f, "test") + +class ArrayBinASCIITest(BinASCIITest): + def type2test(self, s): + return array.array('B', list(s)) + + +class BytearrayBinASCIITest(BinASCIITest): + type2test = bytearray + + +class MemoryviewBinASCIITest(BinASCIITest): + type2test = memoryview + + def test_main(): - support.run_unittest(BinASCIITest) + support.run_unittest(BinASCIITest, + ArrayBinASCIITest, + BytearrayBinASCIITest, + MemoryviewBinASCIITest) if __name__ == "__main__": test_main() Modified: python/branches/py3k-cdecimal/Lib/test/test_builtin.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_builtin.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_builtin.py Thu Jan 21 20:32:23 2010 @@ -248,11 +248,11 @@ # dir() - local scope local_var = 1 - self.assertTrue('local_var' in dir()) + self.assertIn('local_var', dir()) # dir(module) import sys - self.assertTrue('exit' in dir(sys)) + self.assertIn('exit', dir(sys)) # dir(module_with_invalid__dict__) import types @@ -262,8 +262,8 @@ self.assertRaises(TypeError, dir, f) # dir(type) - self.assertTrue("strip" in dir(str)) - self.assertTrue("__mro__" not in dir(str)) + self.assertIn("strip", dir(str)) + self.assertNotIn("__mro__", dir(str)) # dir(obj) class Foo(object): @@ -272,13 +272,13 @@ self.y = 8 self.z = 9 f = Foo() - self.assertTrue("y" in dir(f)) + self.assertIn("y", dir(f)) # dir(obj_no__dict__) class Foo(object): __slots__ = [] f = Foo() - self.assertTrue("__repr__" in dir(f)) + self.assertIn("__repr__", dir(f)) # dir(obj_no__class__with__dict__) # (an ugly trick to cause getattr(f, "__class__") to fail) @@ -287,8 +287,8 @@ def __init__(self): self.bar = "wow" f = Foo() - self.assertTrue("__repr__" not in dir(f)) - self.assertTrue("bar" in dir(f)) + self.assertNotIn("__repr__", dir(f)) + self.assertIn("bar", dir(f)) # dir(obj_using __dir__) class Foo(object): @@ -914,18 +914,18 @@ self.assertEqual(list(range(a+4, a, -2)), [a+4, a+2]) seq = list(range(a, b, c)) - self.assertTrue(a in seq) - self.assertTrue(b not in seq) + self.assertIn(a, seq) + self.assertNotIn(b, seq) self.assertEqual(len(seq), 2) seq = list(range(b, a, -c)) - self.assertTrue(b in seq) - self.assertTrue(a not in seq) + self.assertIn(b, seq) + self.assertNotIn(a, seq) self.assertEqual(len(seq), 2) seq = list(range(-a, -b, -c)) - self.assertTrue(-a in seq) - self.assertTrue(-b not in seq) + self.assertIn(-a, seq) + self.assertNotIn(-b, seq) self.assertEqual(len(seq), 2) self.assertRaises(TypeError, range) Modified: python/branches/py3k-cdecimal/Lib/test/test_bytes.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_bytes.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_bytes.py Thu Jan 21 20:32:23 2010 @@ -38,6 +38,13 @@ self.assertEqual(type(b), self.type2test) self.assertEqual(b.__class__, self.type2test) + def test_copy(self): + a = self.type2test(b"abcd") + for copy_method in (copy.copy, copy.deepcopy): + b = copy_method(a) + self.assertEqual(a, b) + self.assertEqual(type(a), type(b)) + def test_empty_sequence(self): b = self.type2test() self.assertEqual(len(b), 0) @@ -222,8 +229,8 @@ def test_contains(self): b = self.type2test(b"abc") - self.assertTrue(ord('a') in b) - self.assertTrue(int(ord('a')) in b) + self.assertIn(ord('a'), b) + self.assertIn(int(ord('a')), b) self.assertFalse(200 in b) self.assertFalse(200 in b) self.assertRaises(ValueError, lambda: 300 in b) @@ -232,13 +239,13 @@ self.assertRaises(TypeError, lambda: float(ord('a')) in b) self.assertRaises(TypeError, lambda: "a" in b) for f in bytes, bytearray: - self.assertTrue(f(b"") in b) - self.assertTrue(f(b"a") in b) - self.assertTrue(f(b"b") in b) - self.assertTrue(f(b"c") in b) - self.assertTrue(f(b"ab") in b) - self.assertTrue(f(b"bc") in b) - self.assertTrue(f(b"abc") in b) + self.assertIn(f(b""), b) + self.assertIn(f(b"a"), b) + self.assertIn(f(b"b"), b) + self.assertIn(f(b"c"), b) + self.assertIn(f(b"ab"), b) + self.assertIn(f(b"bc"), b) + self.assertIn(f(b"abc"), b) self.assertFalse(f(b"ac") in b) self.assertFalse(f(b"d") in b) self.assertFalse(f(b"dab") in b) @@ -270,13 +277,6 @@ self.assertEqual(self.type2test(b".").join([b"ab", b"cd"]), b"ab.cd") # XXX more... - def test_index(self): - b = self.type2test(b'parrot') - self.assertEqual(b.index('p'), 0) - self.assertEqual(b.index('rr'), 2) - self.assertEqual(b.index('t'), 5) - self.assertRaises(ValueError, lambda: b.index('w')) - def test_count(self): b = self.type2test(b'mississippi') self.assertEqual(b.count(b'i'), 4) @@ -362,6 +362,10 @@ def test_split_string_error(self): self.assertRaises(TypeError, self.type2test(b'a b').split, ' ') + def test_split_unicodewhitespace(self): + b = self.type2test(b"\x09\x0A\x0B\x0C\x0D\x1C\x1D\x1E\x1F") + self.assertEqual(b.split(), [b'\x1c\x1d\x1e\x1f']) + def test_rsplit(self): b = self.type2test(b'mississippi') self.assertEqual(b.rsplit(b'i'), [b'm', b'ss', b'ss', b'pp', b'']) @@ -385,18 +389,18 @@ def test_rsplit_unicodewhitespace(self): b = self.type2test(b"\x09\x0A\x0B\x0C\x0D\x1C\x1D\x1E\x1F") - self.assertEqual(b.split(), [b'\x1c\x1d\x1e\x1f']) self.assertEqual(b.rsplit(), [b'\x1c\x1d\x1e\x1f']) def test_partition(self): b = self.type2test(b'mississippi') self.assertEqual(b.partition(b'ss'), (b'mi', b'ss', b'issippi')) - self.assertEqual(b.rpartition(b'w'), (b'', b'', b'mississippi')) + self.assertEqual(b.partition(b'w'), (b'mississippi', b'', b'')) def test_rpartition(self): b = self.type2test(b'mississippi') self.assertEqual(b.rpartition(b'ss'), (b'missi', b'ss', b'ippi')) self.assertEqual(b.rpartition(b'i'), (b'mississipp', b'i', b'')) + self.assertEqual(b.rpartition(b'w'), (b'', b'', b'mississippi')) def test_pickling(self): for proto in range(pickle.HIGHEST_PROTOCOL + 1): @@ -813,6 +817,14 @@ self.assertRaises(BufferError, delslice) self.assertEquals(b, orig) + def test_empty_bytearray(self): + # Issue #7561: operations on empty bytearrays could crash in many + # situations, due to a fragile implementation of the + # PyByteArray_AS_STRING() C macro. + self.assertRaises(ValueError, int, bytearray(b'')) + self.assertRaises((ValueError, OSError), os.mkdir, bytearray(b'')) + + class AssortedBytesTest(unittest.TestCase): # # Test various combinations of bytes and bytearray @@ -968,7 +980,13 @@ self.assertEqual(val, newval) self.assertTrue(val is not newval, methname+' returned self on a mutable object') - + for expr in ('val.split()[0]', 'val.rsplit()[0]', + 'val.partition(b".")[0]', 'val.rpartition(b".")[2]', + 'val.splitlines()[0]', 'val.replace(b"", b"")'): + newval = eval(expr) + self.assertEqual(val, newval) + self.assertTrue(val is not newval, + expr+' returned val on a mutable object') class FixedStringTest(test.string_tests.BaseTest): @@ -996,17 +1014,14 @@ type2test = bytes -class ByteArraySubclass(bytearray): - pass - -class ByteArraySubclassTest(unittest.TestCase): +class SubclassTest(unittest.TestCase): def test_basic(self): - self.assertTrue(issubclass(ByteArraySubclass, bytearray)) - self.assertTrue(isinstance(ByteArraySubclass(), bytearray)) + self.assertTrue(issubclass(self.subclass2test, self.type2test)) + self.assertTrue(isinstance(self.subclass2test(), self.type2test)) a, b = b"abcd", b"efgh" - _a, _b = ByteArraySubclass(a), ByteArraySubclass(b) + _a, _b = self.subclass2test(a), self.subclass2test(b) # test comparison operators with subclass instances self.assertTrue(_a == _a) @@ -1029,19 +1044,19 @@ # Make sure join returns a NEW object for single item sequences # involving a subclass. # Make sure that it is of the appropriate type. - s1 = ByteArraySubclass(b"abcd") - s2 = bytearray().join([s1]) + s1 = self.subclass2test(b"abcd") + s2 = self.type2test().join([s1]) self.assertTrue(s1 is not s2) - self.assertTrue(type(s2) is bytearray, type(s2)) + self.assertTrue(type(s2) is self.type2test, type(s2)) # Test reverse, calling join on subclass s3 = s1.join([b"abcd"]) - self.assertTrue(type(s3) is bytearray) + self.assertTrue(type(s3) is self.type2test) def test_pickle(self): - a = ByteArraySubclass(b"abcd") + a = self.subclass2test(b"abcd") a.x = 10 - a.y = ByteArraySubclass(b"efgh") + a.y = self.subclass2test(b"efgh") for proto in range(pickle.HIGHEST_PROTOCOL + 1): b = pickle.loads(pickle.dumps(a, proto)) self.assertNotEqual(id(a), id(b)) @@ -1052,9 +1067,9 @@ self.assertEqual(type(a.y), type(b.y)) def test_copy(self): - a = ByteArraySubclass(b"abcd") + a = self.subclass2test(b"abcd") a.x = 10 - a.y = ByteArraySubclass(b"efgh") + a.y = self.subclass2test(b"efgh") for copy_method in (copy.copy, copy.deepcopy): b = copy_method(a) self.assertNotEqual(id(a), id(b)) @@ -1064,21 +1079,38 @@ self.assertEqual(type(a), type(b)) self.assertEqual(type(a.y), type(b.y)) + +class ByteArraySubclass(bytearray): + pass + +class BytesSubclass(bytes): + pass + +class ByteArraySubclassTest(SubclassTest): + type2test = bytearray + subclass2test = ByteArraySubclass + def test_init_override(self): class subclass(bytearray): - def __init__(self, newarg=1, *args, **kwargs): - bytearray.__init__(self, *args, **kwargs) + def __init__(me, newarg=1, *args, **kwargs): + bytearray.__init__(me, *args, **kwargs) + x = subclass(4, b"abcd") x = subclass(4, source=b"abcd") self.assertEqual(x, b"abcd") x = subclass(newarg=4, source=b"abcd") self.assertEqual(x, b"abcd") +class BytesSubclassTest(SubclassTest): + type2test = bytes + subclass2test = BytesSubclass + + def test_main(): test.support.run_unittest( BytesTest, AssortedBytesTest, BytesAsStringTest, - ByteArrayTest, ByteArrayAsStringTest, ByteArraySubclassTest, - BytearrayPEP3137Test) + ByteArrayTest, ByteArrayAsStringTest, BytesSubclassTest, + ByteArraySubclassTest, BytearrayPEP3137Test) if __name__ == "__main__": test_main() Modified: python/branches/py3k-cdecimal/Lib/test/test_cgi.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_cgi.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_cgi.py Thu Jan 21 20:32:23 2010 @@ -143,7 +143,7 @@ # test individual fields for key in expect.keys(): expect_val = expect[key] - self.assertTrue(key in fs) + self.assertIn(key, fs) if len(expect_val) > 1: self.assertEqual(fs.getvalue(key), expect_val) else: Modified: python/branches/py3k-cdecimal/Lib/test/test_cmd.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_cmd.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_cmd.py Thu Jan 21 20:32:23 2010 @@ -60,15 +60,17 @@ >>> mycmd.completenames("12") [] >>> mycmd.completenames("help") - ['help', 'help'] + ['help'] Test for the function complete_help(): >>> mycmd.complete_help("a") ['add'] >>> mycmd.complete_help("he") - ['help', 'help'] + ['help'] >>> mycmd.complete_help("12") [] + >>> sorted(mycmd.complete_help("")) + ['add', 'exit', 'help', 'shell'] Test for the function do_help(): >>> mycmd.do_help("testet") @@ -144,7 +146,7 @@ def complete_command(self): print("complete command") - def do_shell(self): + def do_shell(self, s): pass def do_add(self, s): @@ -171,6 +173,7 @@ support.run_doctest(test_cmd, verbose) def test_coverage(coverdir): + import trace tracer=trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix,], trace=0, count=1) tracer.run('reload(cmd);test_main()') @@ -181,5 +184,7 @@ if __name__ == "__main__": if "-c" in sys.argv: test_coverage('/tmp/cmd.cover') + elif "-i" in sys.argv: + samplecmdclass().cmdloop() else: test_main() Modified: python/branches/py3k-cdecimal/Lib/test/test_cmd_line.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_cmd_line.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_cmd_line.py Thu Jan 21 20:32:23 2010 @@ -49,7 +49,7 @@ def verify_valid_flag(self, cmd_line): data = self.start_python(cmd_line) self.assertTrue(data == b'' or data.endswith(b'\n')) - self.assertTrue(b'Traceback' not in data) + self.assertNotIn(b'Traceback', data) def test_optimize(self): self.verify_valid_flag('-O') @@ -65,7 +65,7 @@ self.verify_valid_flag('-S') def test_usage(self): - self.assertTrue(b'usage' in self.start_python('-h')) + self.assertIn(b'usage', self.start_python('-h')) def test_version(self): version = ('Python %d.%d' % sys.version_info[:2]).encode("ascii") @@ -77,10 +77,10 @@ # codec), a recursion loop can occur. data, rc = self.start_python_and_exit_code('-v') self.assertEqual(rc, 0) - self.assertTrue(b'stack overflow' not in data) + self.assertNotIn(b'stack overflow', data) data, rc = self.start_python_and_exit_code('-vv') self.assertEqual(rc, 0) - self.assertTrue(b'stack overflow' not in data) + self.assertNotIn(b'stack overflow', data) def test_run_module(self): # Test expected operation of the '-m' switch @@ -166,8 +166,8 @@ p = _spawn_python_with_env('-S', '-c', 'import sys; print(sys.path)') stdout, _ = p.communicate() - self.assertTrue(path1.encode('ascii') in stdout) - self.assertTrue(path2.encode('ascii') in stdout) + self.assertIn(path1.encode('ascii'), stdout) + self.assertIn(path2.encode('ascii'), stdout) def test_main(): Modified: python/branches/py3k-cdecimal/Lib/test/test_cmd_line_script.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_cmd_line_script.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_cmd_line_script.py Thu Jan 21 20:32:23 2010 @@ -80,9 +80,9 @@ print(printed_file) print(printed_package) print(printed_argv0) - self.assertTrue(printed_file.encode('utf-8') in data) - self.assertTrue(printed_package.encode('utf-8') in data) - self.assertTrue(printed_argv0.encode('utf-8') in data) + self.assertIn(printed_file.encode('utf-8'), data) + self.assertIn(printed_package.encode('utf-8'), data) + self.assertIn(printed_argv0.encode('utf-8'), data) def _check_import_error(self, script_name, expected_msg, *cmd_line_switches): @@ -92,7 +92,7 @@ print('Output from test script %r:' % script_name) print(data) print('Expected output: %r' % expected_msg) - self.assertTrue(expected_msg.encode('utf-8') in data) + self.assertIn(expected_msg.encode('utf-8'), data) def test_basic_script(self): with temp_dir() as script_dir: Modified: python/branches/py3k-cdecimal/Lib/test/test_collections.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_collections.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_collections.py Thu Jan 21 20:32:23 2010 @@ -44,9 +44,9 @@ namedtuple('_', 'a b c') # Test leading underscores in a typename nt = namedtuple('nt', 'the quick brown fox') # check unicode input - self.assertTrue("u'" not in repr(nt._fields)) + self.assertNotIn("u'", repr(nt._fields)) nt = namedtuple('nt', ('the', 'quick')) # check unicode input - self.assertTrue("u'" not in repr(nt._fields)) + self.assertNotIn("u'", repr(nt._fields)) self.assertRaises(TypeError, Point._make, [11]) # catch too few args self.assertRaises(TypeError, Point._make, [11, 22, 33]) # catch too many args @@ -75,8 +75,8 @@ self.assertRaises(TypeError, eval, 'Point(XXX=1, y=2)', locals()) # wrong keyword argument self.assertRaises(TypeError, eval, 'Point(x=1)', locals()) # missing keyword argument self.assertEqual(repr(p), 'Point(x=11, y=22)') - self.assertTrue('__dict__' not in dir(p)) # verify instance has no dict - self.assertTrue('__weakref__' not in dir(p)) + self.assertNotIn('__dict__', dir(p)) # verify instance has no dict + self.assertNotIn('__weakref__', dir(p)) self.assertEqual(p, Point._make([11, 22])) # test _make classmethod self.assertEqual(p._fields, ('x', 'y')) # test _fields attribute self.assertEqual(p._replace(x=1), (1, 22)) # test _replace method @@ -598,6 +598,7 @@ c = Counter(a=10, b=-2, c=0) for elem in c: self.assertTrue(elem in c) + self.assertIn(elem, c) def test_multiset_operations(self): # Verify that adding a zero counter will strip zeros and negatives @@ -697,7 +698,7 @@ pairs = [('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)] od = OrderedDict(pairs) del od['a'] - self.assertTrue('a' not in od) + self.assertNotIn('a', od) with self.assertRaises(KeyError): del od['a'] self.assertEqual(list(od.items()), pairs[:2] + pairs[3:]) Modified: python/branches/py3k-cdecimal/Lib/test/test_compile.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_compile.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_compile.py Thu Jan 21 20:32:23 2010 @@ -389,10 +389,10 @@ import __mangled_mod import __package__.module - self.assertTrue("_A__mangled" in A.f.__code__.co_varnames) - self.assertTrue("__not_mangled__" in A.f.__code__.co_varnames) - self.assertTrue("_A__mangled_mod" in A.f.__code__.co_varnames) - self.assertTrue("__package__" in A.f.__code__.co_varnames) + self.assertIn("_A__mangled", A.f.__code__.co_varnames) + self.assertIn("__not_mangled__", A.f.__code__.co_varnames) + self.assertIn("_A__mangled_mod", A.f.__code__.co_varnames) + self.assertIn("__package__", A.f.__code__.co_varnames) def test_compile_ast(self): fname = __file__ Modified: python/branches/py3k-cdecimal/Lib/test/test_contains.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_contains.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_contains.py Thu Jan 21 20:32:23 2010 @@ -20,19 +20,19 @@ a = base_set(1) b = myset(1) c = seq(1) - self.assertTrue(1 in b) - self.assertTrue(0 not in b) - self.assertTrue(1 in c) - self.assertTrue(0 not in c) + self.assertIn(1, b) + self.assertNotIn(0, b) + self.assertIn(1, c) + self.assertNotIn(0, c) self.assertRaises(TypeError, lambda: 1 in a) self.assertRaises(TypeError, lambda: 1 not in a) # test char in string - self.assertTrue('c' in 'abc') - self.assertTrue('d' not in 'abc') + self.assertIn('c', 'abc') + self.assertNotIn('d', 'abc') - self.assertTrue('' in '') - self.assertTrue('' in 'abc') + self.assertIn('', '') + self.assertIn('', 'abc') self.assertRaises(TypeError, lambda: None in 'abc') @@ -40,15 +40,15 @@ # a collection of tests on builtin sequence types a = range(10) for i in a: - self.assertTrue(i in a) - self.assertTrue(16 not in a) - self.assertTrue(a not in a) + self.assertIn(i, a) + self.assertNotIn(16, a) + self.assertNotIn(a, a) a = tuple(a) for i in a: - self.assertTrue(i in a) - self.assertTrue(16 not in a) - self.assertTrue(a not in a) + self.assertIn(i, a) + self.assertNotIn(16, a) + self.assertNotIn(a, a) class Deviant1: """Behaves strangely when compared @@ -64,7 +64,7 @@ self.aList.remove(14) return 0 - self.assertTrue(Deviant1() not in Deviant1.aList) + self.assertNotIn(Deviant1(), Deviant1.aList) def test_nonreflexive(self): # containment and equality tests involving elements that are @@ -81,7 +81,7 @@ for constructor in constructors: container = constructor(values) for elem in container: - self.assertTrue(elem in container) + self.assertIn(elem, container) self.assertTrue(container == constructor(values)) self.assertTrue(container == container) Modified: python/branches/py3k-cdecimal/Lib/test/test_copyreg.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_copyreg.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_copyreg.py Thu Jan 21 20:32:23 2010 @@ -54,7 +54,7 @@ self.assertTrue(copyreg._extension_registry[mod, func] == code) self.assertTrue(copyreg._inverted_registry[code] == (mod, func)) # Shouldn't be in the cache. - self.assertTrue(code not in copyreg._extension_cache) + self.assertNotIn(code, copyreg._extension_cache) # Redundant registration should be OK. copyreg.add_extension(mod, func, code) # shouldn't blow up # Conflicting code. @@ -81,7 +81,7 @@ e.restore() # Shouldn't be there anymore. - self.assertTrue((mod, func) not in copyreg._extension_registry) + self.assertNotIn((mod, func), copyreg._extension_registry) # The code *may* be in copyreg._extension_registry, though, if # we happened to pick on a registered code. So don't check for # that. Modified: python/branches/py3k-cdecimal/Lib/test/test_csv.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_csv.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_csv.py Thu Jan 21 20:32:23 2010 @@ -811,7 +811,7 @@ # given that all three lines in sample3 are equal, # I think that any character could have been 'guessed' as the # delimiter, depending on dictionary order - self.assertTrue(dialect.delimiter in self.sample3) + self.assertIn(dialect.delimiter, self.sample3) dialect = sniffer.sniff(self.sample3, delimiters="?,") self.assertEqual(dialect.delimiter, "?") dialect = sniffer.sniff(self.sample3, delimiters="/,") Modified: python/branches/py3k-cdecimal/Lib/test/test_datetime.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_datetime.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_datetime.py Thu Jan 21 20:32:23 2010 @@ -139,10 +139,10 @@ self.assertFalse(() == me) self.assertTrue(() != me) - self.assertTrue(me in [1, 20, [], me]) + self.assertIn(me, [1, 20, [], me]) self.assertFalse(me not in [1, 20, [], me]) - self.assertTrue([] in [me, 1, 20, []]) + self.assertIn([], [me, 1, 20, []]) self.assertFalse([] not in [me, 1, 20, []]) def test_harmful_mixed_comparison(self): Modified: python/branches/py3k-cdecimal/Lib/test/test_dbm.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_dbm.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_dbm.py Thu Jan 21 20:32:23 2010 @@ -131,7 +131,7 @@ f = module.open(_fname, 'w') f[b"1"] = b"1" # and test that we can find it - self.assertTrue(b"1" in f) + self.assertIn(b"1", f) # and read it self.assertTrue(f[b"1"] == b"1") f.close() @@ -154,9 +154,9 @@ self.d[k] = v self.assertEqual(sorted(self.d.keys()), sorted(k for (k, v) in a)) for k, v in a: - self.assertTrue(k in self.d) + self.assertIn(k, self.d) self.assertEqual(self.d[k], v) - self.assertTrue(b'xxx' not in self.d) + self.assertNotIn(b'xxx', self.d) self.assertRaises(KeyError, lambda: self.d[b'xxx']) self.d.close() Modified: python/branches/py3k-cdecimal/Lib/test/test_dbm_dumb.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_dbm_dumb.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_dbm_dumb.py Thu Jan 21 20:32:23 2010 @@ -93,7 +93,7 @@ def test_write_contains(self): f = dumbdbm.open(_fname) f[b'1'] = b'hello' - self.assertTrue(b'1' in f) + self.assertIn(b'1', f) f.close() def test_write_write_read(self): @@ -118,7 +118,7 @@ f['1'] = 'a' f.close() f = dumbdbm.open(_fname, 'r') - self.assertTrue('\u00fc' in f) + self.assertIn('\u00fc', f) self.assertEqual(f['\u00fc'.encode('utf-8')], self._dict['\u00fc'.encode('utf-8')]) self.assertEqual(f[b'1'], b'a') Modified: python/branches/py3k-cdecimal/Lib/test/test_dbm_gnu.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_dbm_gnu.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_dbm_gnu.py Thu Jan 21 20:32:23 2010 @@ -24,11 +24,11 @@ self.g[b'bytes'] = b'data' key_set = set(self.g.keys()) self.assertEqual(key_set, set([b'a', b'bytes', b'12345678910'])) - self.assertTrue(b'a' in self.g) + self.assertIn(b'a', self.g) self.assertEqual(self.g[b'bytes'], b'data') key = self.g.firstkey() while key: - self.assertTrue(key in key_set) + self.assertIn(key, key_set) key_set.remove(key) key = self.g.nextkey(key) self.assertRaises(KeyError, lambda: self.g['xxx']) Modified: python/branches/py3k-cdecimal/Lib/test/test_dbm_ndbm.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_dbm_ndbm.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_dbm_ndbm.py Thu Jan 21 20:32:23 2010 @@ -24,7 +24,7 @@ self.d[b'bytes'] = b'data' self.d['12345678910'] = '019237410982340912840198242' self.d.keys() - self.assertTrue(b'a' in self.d) + self.assertIn(b'a', self.d) self.assertEqual(self.d[b'bytes'], b'data') self.d.close() Modified: python/branches/py3k-cdecimal/Lib/test/test_decimal.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_decimal.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_decimal.py Thu Jan 21 20:32:23 2010 @@ -1673,8 +1673,8 @@ self.assertEqual(v1, v2) def test_equality_with_other_types(self): - self.assertTrue(Decimal(10) in ['a', 1.0, Decimal(10), (1,2), {}]) - self.assertTrue(Decimal(10) not in ['a', 1.0, (1,2), {}]) + self.assertIn(Decimal(10), ['a', 1.0, Decimal(10), (1,2), {}]) + self.assertNotIn(Decimal(10), ['a', 1.0, (1,2), {}]) def test_copy(self): # All copies should be deep Modified: python/branches/py3k-cdecimal/Lib/test/test_defaultdict.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_defaultdict.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_defaultdict.py Thu Jan 21 20:32:23 2010 @@ -32,14 +32,14 @@ self.assertEqual(d2["foo"], 1) self.assertEqual(d2["bar"], 2) self.assertEqual(d2[42], []) - self.assertTrue("foo" in d2) - self.assertTrue("foo" in d2.keys()) - self.assertTrue("bar" in d2) - self.assertTrue("bar" in d2.keys()) - self.assertTrue(42 in d2) - self.assertTrue(42 in d2.keys()) - self.assertTrue(12 not in d2) - self.assertTrue(12 not in d2.keys()) + self.assertIn("foo", d2) + self.assertIn("foo", d2.keys()) + self.assertIn("bar", d2) + self.assertIn("bar", d2.keys()) + self.assertIn(42, d2) + self.assertIn(42, d2.keys()) + self.assertNotIn(12, d2) + self.assertNotIn(12, d2.keys()) d2.default_factory = None self.assertEqual(d2.default_factory, None) try: Modified: python/branches/py3k-cdecimal/Lib/test/test_deque.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_deque.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_deque.py Thu Jan 21 20:32:23 2010 @@ -199,9 +199,9 @@ self.assertEqual(len(d), n-i) j = random.randrange(-len(d), len(d)) val = d[j] - self.assertTrue(val in d) + self.assertIn(val, d) del d[j] - self.assertTrue(val not in d) + self.assertNotIn(val, d) self.assertEqual(len(d), 0) def test_reverse(self): @@ -328,7 +328,7 @@ e = eval(repr(d)) self.assertEqual(list(d), list(e)) d.append(d) - self.assertTrue('...' in repr(d)) + self.assertIn('...', repr(d)) def test_print(self): d = deque(range(200)) Modified: python/branches/py3k-cdecimal/Lib/test/test_descr.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_descr.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_descr.py Thu Jan 21 20:32:23 2010 @@ -500,7 +500,7 @@ return 42 self.assertEqual(C.name, 'C') self.assertEqual(C.bases, ()) - self.assertTrue('spam' in C.dict) + self.assertIn('spam', C.dict) c = C() self.assertEqual(c.spam(), 42) @@ -1651,9 +1651,9 @@ # depending on whether this test is run standalone or from a framework. self.assertTrue(str(c1).find('C object at ') >= 0) self.assertEqual(str(c1), repr(c1)) - self.assertTrue(-1 not in c1) + self.assertNotIn(-1, c1) for i in range(10): - self.assertTrue(i in c1) + self.assertIn(i, c1) self.assertFalse(10 in c1) # Test the default behavior for dynamic classes class D(object): @@ -1674,9 +1674,9 @@ # depending on whether this test is run standalone or from a framework. self.assertTrue(str(d1).find('D object at ') >= 0) self.assertEqual(str(d1), repr(d1)) - self.assertTrue(-1 not in d1) + self.assertNotIn(-1, d1) for i in range(10): - self.assertTrue(i in d1) + self.assertIn(i, d1) self.assertFalse(10 in d1) # Test overridden behavior class Proxy(object): @@ -1723,7 +1723,7 @@ p10 = Proxy(range(10)) self.assertFalse(-1 in p10) for i in range(10): - self.assertTrue(i in p10) + self.assertIn(i, p10) self.assertFalse(10 in p10) def test_weakrefs(self): @@ -1784,10 +1784,10 @@ self.assertTrue(isinstance(raw, property)) attrs = dir(raw) - self.assertTrue("__doc__" in attrs) - self.assertTrue("fget" in attrs) - self.assertTrue("fset" in attrs) - self.assertTrue("fdel" in attrs) + self.assertIn("__doc__", attrs) + self.assertIn("fget", attrs) + self.assertIn("fset", attrs) + self.assertIn("fdel", attrs) self.assertEqual(raw.__doc__, "I'm the x property.") self.assertTrue(raw.fget is C.__dict__['getx']) @@ -2012,12 +2012,12 @@ c = C() self.assertEqual(interesting(dir(c)), cstuff) - ## self.assertTrue('__self__' in dir(C.Cmethod)) + ## self.assertIn('__self__', dir(C.Cmethod)) c.cdata = 2 c.cmethod = lambda self: 0 self.assertEqual(interesting(dir(c)), cstuff + ['cdata', 'cmethod']) - ## self.assertTrue('__self__' in dir(c.Cmethod)) + ## self.assertIn('__self__', dir(c.Cmethod)) class A(C): Adata = 1 @@ -2025,13 +2025,13 @@ astuff = ['Adata', 'Amethod'] + cstuff self.assertEqual(interesting(dir(A)), astuff) - ## self.assertTrue('__self__' in dir(A.Amethod)) + ## self.assertIn('__self__', dir(A.Amethod)) a = A() self.assertEqual(interesting(dir(a)), astuff) a.adata = 42 a.amethod = lambda self: 3 self.assertEqual(interesting(dir(a)), astuff + ['adata', 'amethod']) - ## self.assertTrue('__self__' in dir(a.Amethod)) + ## self.assertIn('__self__', dir(a.Amethod)) # Try a module subclass. import sys @@ -2583,7 +2583,7 @@ self.assertEqual(d[cistr('one')], 1) self.assertEqual(d[cistr('tWo')], 2) self.assertEqual(d[cistr('THrEE')], 3) - self.assertTrue(cistr('ONe') in d) + self.assertIn(cistr('ONe'), d) self.assertEqual(d.get(cistr('thrEE')), 3) def test_classic_comparisons(self): Modified: python/branches/py3k-cdecimal/Lib/test/test_dict.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_dict.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_dict.py Thu Jan 21 20:32:23 2010 @@ -35,7 +35,9 @@ d = {'a': 1, 'b': 2} k = d.keys() self.assertTrue('a' in d) + self.assertIn('a', d) self.assertTrue('b' in d) + self.assertIn('b', d) self.assertRaises(TypeError, d.keys, None) self.assertEqual(repr(dict(a=1).keys()), "dict_keys(['a'])") @@ -60,10 +62,14 @@ d = {} self.assertTrue(not ('a' in d)) self.assertTrue('a' not in d) + self.assertNotIn('a', d) d = {'a': 1, 'b': 2} self.assertTrue('a' in d) + self.assertIn('a', d) self.assertTrue('b' in d) + self.assertIn('b', d) self.assertTrue('c' not in d) + self.assertNotIn('c', d) self.assertRaises(TypeError, d.__contains__) @@ -519,7 +525,9 @@ self.assertEqual(d[1], 2) self.assertEqual(d[3], 4) self.assertTrue(2 not in d) + self.assertNotIn(2, d) self.assertTrue(2 not in d.keys()) + self.assertNotIn(2, d.keys()) self.assertEqual(d[2], 42) class E(dict): def __missing__(self, key): Modified: python/branches/py3k-cdecimal/Lib/test/test_dictviews.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_dictviews.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_dictviews.py Thu Jan 21 20:32:23 2010 @@ -24,10 +24,10 @@ self.assertNotEqual(keys, {1, "b"}) self.assertNotEqual(keys, {1}) self.assertNotEqual(keys, 42) - self.assertTrue(1 in keys) - self.assertTrue("a" in keys) - self.assertTrue(10 not in keys) - self.assertTrue("Z" not in keys) + self.assertIn(1, keys) + self.assertIn("a", keys) + self.assertNotIn(10, keys) + self.assertNotIn("Z", keys) self.assertEqual(d.keys(), d.keys()) e = {1: 11, "a": "def"} self.assertEqual(d.keys(), e.keys()) @@ -44,13 +44,13 @@ self.assertNotEqual(items, {(1, 10), ("a", "def")}) self.assertNotEqual(items, {(1, 10)}) self.assertNotEqual(items, 42) - self.assertTrue((1, 10) in items) - self.assertTrue(("a", "ABC") in items) - self.assertTrue((1, 11) not in items) - self.assertTrue(1 not in items) - self.assertTrue(() not in items) - self.assertTrue((1,) not in items) - self.assertTrue((1, 2, 3) not in items) + self.assertIn((1, 10), items) + self.assertIn(("a", "ABC"), items) + self.assertNotIn((1, 11), items) + self.assertNotIn(1, items) + self.assertNotIn((), items) + self.assertNotIn((1,), items) + self.assertNotIn((1, 2, 3), items) self.assertEqual(d.items(), d.items()) e = d.copy() self.assertEqual(d.items(), e.items()) Modified: python/branches/py3k-cdecimal/Lib/test/test_exceptions.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_exceptions.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_exceptions.py Thu Jan 21 20:32:23 2010 @@ -337,7 +337,7 @@ try: Exception().__traceback__ = 5 except TypeError as e: - self.assertTrue("__traceback__ must be a traceback" in str(e)) + self.assertIn("__traceback__ must be a traceback", str(e)) else: self.fail("No exception raised") @@ -597,7 +597,7 @@ return sys.exc_info() e, v, tb = g() self.assertTrue(isinstance(v, RuntimeError), type(v)) - self.assertTrue("maximum recursion depth exceeded" in str(v), str(v)) + self.assertIn("maximum recursion depth exceeded", str(v)) def test_MemoryError(self): Modified: python/branches/py3k-cdecimal/Lib/test/test_float.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_float.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_float.py Thu Jan 21 20:32:23 2010 @@ -7,6 +7,7 @@ from math import isinf, isnan, copysign, ldexp import operator import random, fractions +import re INF = float("inf") NAN = float("nan") @@ -20,6 +21,74 @@ test_dir = os.path.dirname(__file__) or os.curdir format_testfile = os.path.join(test_dir, 'formatfloat_testcases.txt') +finite_decimal_parser = re.compile(r""" # A numeric string consists of: + (?P[-+])? # an optional sign, followed by + (?=\d|\.\d) # a number with at least one digit + (?P\d*) # having a (possibly empty) integer part + (?:\.(?P\d*))? # followed by an optional fractional part + (?:E(?P[-+]?\d+))? # and an optional exponent + \Z +""", re.VERBOSE | re.IGNORECASE | re.UNICODE).match + +# Pure Python version of correctly rounded string->float conversion. +# Avoids any use of floating-point by returning the result as a hex string. +def strtod(s, mant_dig=53, min_exp = -1021, max_exp = 1024): + """Convert a finite decimal string to a hex string representing an + IEEE 754 binary64 float. Return 'inf' or '-inf' on overflow. + This function makes no use of floating-point arithmetic at any + stage.""" + + # parse string into a pair of integers 'a' and 'b' such that + # abs(decimal value) = a/b, and a boolean 'negative'. + m = finite_decimal_parser(s) + if m is None: + raise ValueError('invalid numeric string') + fraction = m.group('frac') or '' + intpart = int(m.group('int') + fraction) + exp = int(m.group('exp') or '0') - len(fraction) + negative = m.group('sign') == '-' + a, b = intpart*10**max(exp, 0), 10**max(0, -exp) + + # quick return for zeros + if not a: + return '-0x0.0p+0' if negative else '0x0.0p+0' + + # compute exponent e for result; may be one too small in the case + # that the rounded value of a/b lies in a different binade from a/b + d = a.bit_length() - b.bit_length() + d += (a >> d if d >= 0 else a << -d) >= b + e = max(d, min_exp) - mant_dig + + # approximate a/b by number of the form q * 2**e; adjust e if necessary + a, b = a << max(-e, 0), b << max(e, 0) + q, r = divmod(a, b) + if 2*r > b or 2*r == b and q & 1: + q += 1 + if q.bit_length() == mant_dig+1: + q //= 2 + e += 1 + + # double check that (q, e) has the right form + assert q.bit_length() <= mant_dig and e >= min_exp - mant_dig + assert q.bit_length() == mant_dig or e == min_exp - mant_dig + + # check for overflow and underflow + if e + q.bit_length() > max_exp: + return '-inf' if negative else 'inf' + if not q: + return '-0x0.0p+0' if negative else '0x0.0p+0' + + # for hex representation, shift so # bits after point is a multiple of 4 + hexdigs = 1 + (mant_dig-2)//4 + shift = 3 - (mant_dig-2)%4 + q, e = q << shift, e - shift + return '{}0x{:x}.{:0{}x}p{:+d}'.format( + '-' if negative else '', + q // 16**hexdigs, + q % 16**hexdigs, + hexdigs, + e + 4*hexdigs) + class GeneralFloatCases(unittest.TestCase): def test_float(self): @@ -144,11 +213,16 @@ def test_float_containment(self): floats = (INF, -INF, 0.0, 1.0, NAN) for f in floats: + self.assertIn(f, [f]) self.assertTrue(f in [f], "'%r' not in []" % f) + self.assertIn(f, (f,)) self.assertTrue(f in (f,), "'%r' not in ()" % f) + self.assertIn(f, {f}) self.assertTrue(f in {f}, "'%r' not in set()" % f) + self.assertIn(f, {f: None}) self.assertTrue(f in {f: None}, "'%r' not in {}" % f) self.assertEqual([f].count(f), 1, "[].count('%r') != 1" % f) + self.assertIn(f, floats) self.assertTrue(f in floats, "'%r' not in container" % f) for f in floats: @@ -1263,6 +1337,38 @@ else: self.identical(x, fromHex(toHex(x))) +class StrtodTestCase(unittest.TestCase): + def check_string(self, s): + expected = strtod(s) + try: + fs = float(s) + except OverflowError: + got = '-inf' if s[0] == '-' else 'inf' + else: + got = fs.hex() + self.assertEqual(expected, got, + "Incorrectly rounded str->float conversion for " + "{}: expected {}, got {}".format(s, expected, got)) + + @unittest.skipUnless(getattr(sys, 'float_repr_style', '') == 'short', + "applies only when using short float repr style") + def test_bug7632(self): + # check a few particular values that gave incorrectly rounded + # results with previous versions of dtoa.c + test_strings = [ + '94393431193180696942841837085033647913224148539854e-358', + '12579816049008305546974391768996369464963024663104e-357', + '17489628565202117263145367596028389348922981857013e-357', + '18487398785991994634182916638542680759613590482273e-357', + '32002864200581033134358724675198044527469366773928e-358', + '73608278998966969345824653500136787876436005957953e-358', + '64774478836417299491718435234611299336288082136054e-358', + '13704940134126574534878641876947980878824688451169e-357', + '46697445774047060960624497964425416610480524760471e-358', + ] + for s in test_strings: + self.check_string(s) + def test_main(): support.run_unittest( @@ -1275,6 +1381,7 @@ RoundTestCase, InfNanTest, HexFloatTestCase, + StrtodTestCase, ) if __name__ == '__main__': Modified: python/branches/py3k-cdecimal/Lib/test/test_funcattrs.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_funcattrs.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_funcattrs.py Thu Jan 21 20:32:23 2010 @@ -35,11 +35,11 @@ def test_dir_includes_correct_attrs(self): self.b.known_attr = 7 - self.assertTrue('known_attr' in dir(self.b), + self.assertIn('known_attr', dir(self.b), "set attributes not in dir listing of method") # Test on underlying function object of method self.F.a.known_attr = 7 - self.assertTrue('known_attr' in dir(self.fi.a), "set attribute on function " + self.assertIn('known_attr', dir(self.fi.a), "set attribute on function " "implementations, should show up in next dir") def test_duplicate_function_equality(self): Modified: python/branches/py3k-cdecimal/Lib/test/test_glob.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_glob.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_glob.py Thu Jan 21 20:32:23 2010 @@ -96,7 +96,7 @@ res = glob.glob(self.tempdir + '*' + os.sep) self.assertEqual(len(res), 1) # either of these results are reasonable - self.assertTrue(res[0] in [self.tempdir, self.tempdir + os.sep]) + self.assertIn(res[0], [self.tempdir, self.tempdir + os.sep]) def test_glob_broken_symlinks(self): if hasattr(os, 'symlink'): Modified: python/branches/py3k-cdecimal/Lib/test/test_gzip.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_gzip.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_gzip.py Thu Jan 21 20:32:23 2010 @@ -253,6 +253,18 @@ else: self.fail("1/0 didn't raise an exception") + def test_zero_padded_file(self): + with gzip.GzipFile(self.filename, "wb") as f: + f.write(data1 * 50) + + # Pad the file with zeroes + with open(self.filename, "ab") as f: + f.write(b"\x00" * 50) + + with gzip.GzipFile(self.filename, "rb") as f: + d = f.read() + self.assertEqual(d, data1 * 50, "Incorrect data in file") + def test_main(verbose=None): support.run_unittest(TestGzip) Modified: python/branches/py3k-cdecimal/Lib/test/test_hashlib.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_hashlib.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_hashlib.py Thu Jan 21 20:32:23 2010 @@ -2,12 +2,14 @@ # # $Id$ # -# Copyright (C) 2005-2009 Gregory P. Smith (greg at krypto.org) +# Copyright (C) 2005-2010 Gregory P. Smith (greg at krypto.org) # Licensed to PSF under a Contributor Agreement. # +import array import hashlib from io import StringIO +import itertools import sys try: import threading @@ -93,6 +95,13 @@ super(HashLibTestCase, self).__init__(*args, **kwargs) + def test_hash_array(self): + a = array.array("b", range(10)) + constructors = self.constructors_to_test.values() + for cons in itertools.chain.from_iterable(constructors): + c = cons(a) + c.hexdigest() + def test_unknown_hash(self): try: hashlib.new('spam spam spam spam spam') Modified: python/branches/py3k-cdecimal/Lib/test/test_http_cookiejar.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_http_cookiejar.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_http_cookiejar.py Thu Jan 21 20:32:23 2010 @@ -441,8 +441,8 @@ interact_netscape(c, "http://www.acme.com/", 'version=eggs; spam=eggs') cookies = c._cookies["www.acme.com"]["/"] - self.assertTrue('expires' in cookies) - self.assertTrue('version' in cookies) + self.assertIn('expires', cookies) + self.assertIn('version', cookies) def test_expires(self): # if expires is in future, keep cookie... @@ -457,7 +457,8 @@ now) h = interact_netscape(c, "http://www.acme.com/") self.assertEquals(len(c), 1) - self.assertTrue('spam="bar"' in h and "foo" not in h) + self.assertIn('spam="bar"', h) + self.assertNotIn("foo", h) # max-age takes precedence over expires, and zero max-age is request to # delete both new cookie and any old matching cookie @@ -478,7 +479,7 @@ self.assertEquals(len(c), 2) c.clear_session_cookies() self.assertEquals(len(c), 1) - self.assertTrue('spam="bar"' in h) + self.assertIn('spam="bar"', h) # XXX RFC 2965 expiry rules (some apply to V0 too) @@ -488,39 +489,39 @@ c = CookieJar(pol) interact_2965(c, "http://www.acme.com/", 'spam="bar"; Version="1"') - self.assertTrue("/" in c._cookies["www.acme.com"]) + self.assertIn("/", c._cookies["www.acme.com"]) c = CookieJar(pol) interact_2965(c, "http://www.acme.com/blah", 'eggs="bar"; Version="1"') - self.assertTrue("/" in c._cookies["www.acme.com"]) + self.assertIn("/", c._cookies["www.acme.com"]) c = CookieJar(pol) interact_2965(c, "http://www.acme.com/blah/rhubarb", 'eggs="bar"; Version="1"') - self.assertTrue("/blah/" in c._cookies["www.acme.com"]) + self.assertIn("/blah/", c._cookies["www.acme.com"]) c = CookieJar(pol) interact_2965(c, "http://www.acme.com/blah/rhubarb/", 'eggs="bar"; Version="1"') - self.assertTrue("/blah/rhubarb/" in c._cookies["www.acme.com"]) + self.assertIn("/blah/rhubarb/", c._cookies["www.acme.com"]) # Netscape c = CookieJar() interact_netscape(c, "http://www.acme.com/", 'spam="bar"') - self.assertTrue("/" in c._cookies["www.acme.com"]) + self.assertIn("/", c._cookies["www.acme.com"]) c = CookieJar() interact_netscape(c, "http://www.acme.com/blah", 'eggs="bar"') - self.assertTrue("/" in c._cookies["www.acme.com"]) + self.assertIn("/", c._cookies["www.acme.com"]) c = CookieJar() interact_netscape(c, "http://www.acme.com/blah/rhubarb", 'eggs="bar"') - self.assertTrue("/blah" in c._cookies["www.acme.com"]) + self.assertIn("/blah", c._cookies["www.acme.com"]) c = CookieJar() interact_netscape(c, "http://www.acme.com/blah/rhubarb/", 'eggs="bar"') - self.assertTrue("/blah/rhubarb" in c._cookies["www.acme.com"]) + self.assertIn("/blah/rhubarb", c._cookies["www.acme.com"]) def test_escape_path(self): cases = [ @@ -877,21 +878,21 @@ url = "http://foo.bar.com/" interact_2965(c, url, "spam=eggs; Version=1") h = interact_2965(c, url) - self.assertTrue("Domain" not in h, + self.assertNotIn("Domain", h, "absent domain returned with domain present") c = CookieJar(pol) url = "http://foo.bar.com/" interact_2965(c, url, 'spam=eggs; Version=1; Domain=.bar.com') h = interact_2965(c, url) - self.assertTrue('$Domain=".bar.com"' in h, "domain not returned") + self.assertIn('$Domain=".bar.com"', h, "domain not returned") c = CookieJar(pol) url = "http://foo.bar.com/" # note missing initial dot in Domain interact_2965(c, url, 'spam=eggs; Version=1; Domain=bar.com') h = interact_2965(c, url) - self.assertTrue('$Domain="bar.com"' in h, "domain not returned") + self.assertIn('$Domain="bar.com"', h, "domain not returned") def test_path_mirror(self): pol = DefaultCookiePolicy(rfc2965=True) @@ -907,7 +908,7 @@ url = "http://foo.bar.com/" interact_2965(c, url, 'spam=eggs; Version=1; Path=/') h = interact_2965(c, url) - self.assertTrue('$Path="/"' in h, "path not returned") + self.assertIn('$Path="/"', h, "path not returned") def test_port_mirror(self): pol = DefaultCookiePolicy(rfc2965=True) @@ -1449,7 +1450,8 @@ c, "http://www.acme.com/foo%2f%25/<<%0anew\345/\346\370\345", 'bar=baz; path="/foo/"; version=1'); version_re = re.compile(r'^\$version=\"?1\"?', re.I) - self.assertTrue("foo=bar" in cookie and version_re.search(cookie)) + self.assertIn("foo=bar", cookie) + self.assertTrue(version_re.search(cookie)) cookie = interact_2965( c, "http://www.acme.com/foo/%25/<<%0anew\345/\346\370\345") @@ -1493,11 +1495,11 @@ new_c = save_and_restore(c, True) self.assertEquals(len(new_c), 6) # none discarded - self.assertTrue("name='foo1', value='bar'" in repr(new_c)) + self.assertIn("name='foo1', value='bar'", repr(new_c)) new_c = save_and_restore(c, False) self.assertEquals(len(new_c), 4) # 2 of them discarded on save - self.assertTrue("name='foo1', value='bar'" in repr(new_c)) + self.assertIn("name='foo1', value='bar'", repr(new_c)) def test_netscape_misc(self): # Some additional Netscape cookies tests. @@ -1519,9 +1521,8 @@ req = urllib.request.Request("http://foo.bar.acme.com/foo") c.add_cookie_header(req) - self.assertTrue( - "PART_NUMBER=3,4" in req.get_header("Cookie") and - "Customer=WILE_E_COYOTE" in req.get_header("Cookie")) + self.assertIn("PART_NUMBER=3,4", req.get_header("Cookie")) + self.assertIn("Customer=WILE_E_COYOTE",req.get_header("Cookie")) def test_intranet_domains_2965(self): # Test handling of local intranet hostnames without a dot. @@ -1530,11 +1531,12 @@ "foo1=bar; PORT; Discard; Version=1;") cookie = interact_2965(c, "http://example/", 'foo2=bar; domain=".local"; Version=1') - self.assertTrue("foo1=bar" in cookie) + self.assertIn("foo1=bar", cookie) interact_2965(c, "http://example/", 'foo3=bar; Version=1') cookie = interact_2965(c, "http://example/") - self.assertTrue("foo2=bar" in cookie and len(c) == 3) + self.assertIn("foo2=bar", cookie) + self.assertEquals(len(c), 3) def test_intranet_domains_ns(self): c = CookieJar(DefaultCookiePolicy(rfc2965 = False)) @@ -1542,10 +1544,10 @@ cookie = interact_netscape(c, "http://example/", 'foo2=bar; domain=.local') self.assertEquals(len(c), 2) - self.assertTrue("foo1=bar" in cookie) + self.assertIn("foo1=bar", cookie) cookie = interact_netscape(c, "http://example/") - self.assertTrue("foo2=bar" in cookie) + self.assertIn("foo2=bar", cookie) self.assertEquals(len(c), 2) def test_empty_path(self): Modified: python/branches/py3k-cdecimal/Lib/test/test_import.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_import.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_import.py Thu Jan 21 20:32:23 2010 @@ -209,7 +209,7 @@ sys.path.insert(0, os.curdir) try: mod = __import__(TESTFN) - self.assertTrue(TESTFN in sys.modules, "expected module in sys.modules") + self.assertIn(TESTFN, sys.modules) self.assertEquals(mod.a, 1, "module has wrong attribute values") self.assertEquals(mod.b, 2, "module has wrong attribute values") @@ -253,7 +253,7 @@ del sys.modules[TESTFN] mod = __import__(TESTFN) ext = mod.__file__[-4:] - self.assertTrue(ext in ('.pyc', '.pyo'), ext) + self.assertIn(ext, ('.pyc', '.pyo')) finally: sys.path.pop(0) remove_files(TESTFN) Modified: python/branches/py3k-cdecimal/Lib/test/test_index.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_index.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_index.py Thu Jan 21 20:32:23 2010 @@ -2,13 +2,8 @@ from test import support import operator maxsize = support.MAX_Py_ssize_t -minsize = -maxsize-1 -class oldstyle: - def __index__(self): - return self.ind - -class newstyle(object): +class newstyle: def __index__(self): return self.ind @@ -16,13 +11,9 @@ def __index__(self): return self -class TrapLong(int): - def __index__(self): - return self - class BaseTestCase(unittest.TestCase): def setUp(self): - self.o = oldstyle() + self.o = newstyle() self.n = newstyle() def test_basic(self): @@ -52,9 +43,7 @@ def test_subclasses(self): r = list(range(10)) self.assertEqual(r[TrapInt(5):TrapInt(10)], r[5:10]) - self.assertEqual(r[TrapLong(5):TrapLong(10)], r[5:10]) self.assertEqual(slice(TrapInt()).indices(0), (0,0,1)) - self.assertEqual(slice(TrapLong(0)).indices(0), (0,0,1)) def test_error(self): self.o.ind = 'dumb' @@ -69,9 +58,9 @@ # This test case isn't run directly. It just defines common tests # to the different sequence types below def setUp(self): - self.o = oldstyle() + self.o = newstyle() self.n = newstyle() - self.o2 = oldstyle() + self.o2 = newstyle() self.n2 = newstyle() def test_index(self): @@ -88,6 +77,21 @@ self.assertEqual(self.seq[self.o:self.o2], self.seq[1:3]) self.assertEqual(self.seq[self.n:self.n2], self.seq[2:4]) + def test_slice_bug7532(self): + seqlen = len(self.seq) + self.o.ind = int(seqlen * 1.5) + self.n.ind = seqlen + 2 + self.assertEqual(self.seq[self.o:], self.seq[0:0]) + self.assertEqual(self.seq[:self.o], self.seq) + self.assertEqual(self.seq[self.n:], self.seq[0:0]) + self.assertEqual(self.seq[:self.n], self.seq) + self.o2.ind = -seqlen - 2 + self.n2.ind = -int(seqlen * 1.5) + self.assertEqual(self.seq[self.o2:], self.seq) + self.assertEqual(self.seq[:self.o2], self.seq[0:0]) + self.assertEqual(self.seq[self.n2:], self.seq) + self.assertEqual(self.seq[:self.n2], self.seq[0:0]) + def test_repeat(self): self.o.ind = 3 self.n.ind = 2 @@ -108,7 +112,6 @@ def test_subclasses(self): self.assertEqual(self.seq[TrapInt()], self.seq[0]) - self.assertEqual(self.seq[TrapLong()], self.seq[0]) def test_error(self): self.o.ind = 'dumb' @@ -155,14 +158,52 @@ self.assertEqual(lst, [5, 6, 7, 8, 9, 11] * 3) +class NewSeq: + + def __init__(self, iterable): + self._list = list(iterable) + + def __repr__(self): + return repr(self._list) + + def __eq__(self, other): + return self._list == other + + def __len__(self): + return len(self._list) + + def __mul__(self, n): + return self.__class__(self._list*n) + __rmul__ = __mul__ + + def __getitem__(self, index): + return self._list[index] + + class TupleTestCase(SeqTestCase): seq = (0,10,20,30,40,50) +class ByteArrayTestCase(SeqTestCase): + seq = bytearray(b"this is a test") + +class BytesTestCase(SeqTestCase): + seq = b"this is a test" + class StringTestCase(SeqTestCase): seq = "this is a test" -class UnicodeTestCase(SeqTestCase): - seq = "this is a test" +class NewSeqTestCase(SeqTestCase): + seq = NewSeq((0,10,20,30,40,50)) + + + +class RangeTestCase(unittest.TestCase): + + def test_range(self): + n = newstyle() + n.ind = 5 + self.assertEqual(range(1, 20)[n], 6) + self.assertEqual(range(1, 20).__getitem__(n), 6) class OverflowTestCase(unittest.TestCase): @@ -176,9 +217,9 @@ self.assertEqual(self.neg.__index__(), self.neg) def test_getitem(self): - class GetItem(object): + class GetItem: def __len__(self): - return sys.maxsize + assert False, "__len__ should not be invoked" def __getitem__(self, key): return key x = GetItem() @@ -186,6 +227,8 @@ self.assertEqual(x[self.neg], self.neg) self.assertEqual(x[self.neg:self.pos].indices(maxsize), (0, maxsize, 1)) + self.assertEqual(x[self.neg:self.pos:1].indices(maxsize), + (0, maxsize, 1)) def test_sequence_repeat(self): self.assertRaises(OverflowError, lambda: "a" * self.pos) @@ -197,8 +240,11 @@ BaseTestCase, ListTestCase, TupleTestCase, + BytesTestCase, + ByteArrayTestCase, StringTestCase, - UnicodeTestCase, + NewSeqTestCase, + RangeTestCase, OverflowTestCase, ) Modified: python/branches/py3k-cdecimal/Lib/test/test_inspect.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_inspect.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_inspect.py Thu Jan 21 20:32:23 2010 @@ -117,8 +117,8 @@ x = C() x.a = 42 members = dict(inspect.getmembers(x)) - self.assertTrue('a' in members) - self.assertTrue('b' not in members) + self.assertIn('a', members) + self.assertNotIn('b', members) def test_isabstract(self): from abc import ABCMeta, abstractmethod @@ -471,25 +471,25 @@ datablob = '1' attrs = attrs_wo_objs(A) - self.assertTrue(('s', 'static method', A) in attrs, 'missing static method') - self.assertTrue(('c', 'class method', A) in attrs, 'missing class method') - self.assertTrue(('p', 'property', A) in attrs, 'missing property') + self.assertIn(('s', 'static method', A), attrs, 'missing static method') + self.assertIn(('c', 'class method', A), attrs, 'missing class method') + self.assertIn(('p', 'property', A), attrs, 'missing property') self.assertTrue(('m', 'method', A) in attrs, 'missing plain method: %r' % attrs) - self.assertTrue(('m1', 'method', A) in attrs, 'missing plain method') - self.assertTrue(('datablob', 'data', A) in attrs, 'missing data') + self.assertIn(('m1', 'method', A), attrs, 'missing plain method') + self.assertIn(('datablob', 'data', A), attrs, 'missing data') class B(A): def m(self): pass attrs = attrs_wo_objs(B) - self.assertTrue(('s', 'static method', A) in attrs, 'missing static method') - self.assertTrue(('c', 'class method', A) in attrs, 'missing class method') - self.assertTrue(('p', 'property', A) in attrs, 'missing property') - self.assertTrue(('m', 'method', B) in attrs, 'missing plain method') - self.assertTrue(('m1', 'method', A) in attrs, 'missing plain method') - self.assertTrue(('datablob', 'data', A) in attrs, 'missing data') + self.assertIn(('s', 'static method', A), attrs, 'missing static method') + self.assertIn(('c', 'class method', A), attrs, 'missing class method') + self.assertIn(('p', 'property', A), attrs, 'missing property') + self.assertIn(('m', 'method', B), attrs, 'missing plain method') + self.assertIn(('m1', 'method', A), attrs, 'missing plain method') + self.assertIn(('datablob', 'data', A), attrs, 'missing data') class C(A): @@ -498,24 +498,24 @@ def c(self): pass attrs = attrs_wo_objs(C) - self.assertTrue(('s', 'static method', A) in attrs, 'missing static method') - self.assertTrue(('c', 'method', C) in attrs, 'missing plain method') - self.assertTrue(('p', 'property', A) in attrs, 'missing property') - self.assertTrue(('m', 'method', C) in attrs, 'missing plain method') - self.assertTrue(('m1', 'method', A) in attrs, 'missing plain method') - self.assertTrue(('datablob', 'data', A) in attrs, 'missing data') + self.assertIn(('s', 'static method', A), attrs, 'missing static method') + self.assertIn(('c', 'method', C), attrs, 'missing plain method') + self.assertIn(('p', 'property', A), attrs, 'missing property') + self.assertIn(('m', 'method', C), attrs, 'missing plain method') + self.assertIn(('m1', 'method', A), attrs, 'missing plain method') + self.assertIn(('datablob', 'data', A), attrs, 'missing data') class D(B, C): def m1(self): pass attrs = attrs_wo_objs(D) - self.assertTrue(('s', 'static method', A) in attrs, 'missing static method') - self.assertTrue(('c', 'method', C) in attrs, 'missing plain method') - self.assertTrue(('p', 'property', A) in attrs, 'missing property') - self.assertTrue(('m', 'method', B) in attrs, 'missing plain method') - self.assertTrue(('m1', 'method', D) in attrs, 'missing plain method') - self.assertTrue(('datablob', 'data', A) in attrs, 'missing data') + self.assertIn(('s', 'static method', A), attrs, 'missing static method') + self.assertIn(('c', 'method', C), attrs, 'missing plain method') + self.assertIn(('p', 'property', A), attrs, 'missing property') + self.assertIn(('m', 'method', B), attrs, 'missing plain method') + self.assertIn(('m1', 'method', D), attrs, 'missing plain method') + self.assertIn(('datablob', 'data', A), attrs, 'missing data') def test_main(): run_unittest(TestDecorators, TestRetrievingSourceCode, TestOneliners, Modified: python/branches/py3k-cdecimal/Lib/test/test_ioctl.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_ioctl.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_ioctl.py Thu Jan 21 20:32:23 2010 @@ -24,7 +24,7 @@ tty = open("/dev/tty", "r") r = fcntl.ioctl(tty, termios.TIOCGPGRP, " ") rpgrp = struct.unpack("i", r)[0] - self.assertTrue(rpgrp in ids, "%s not in %s" % (rpgrp, ids)) + self.assertIn(rpgrp, ids) def test_ioctl_mutate(self): import array @@ -34,7 +34,7 @@ r = fcntl.ioctl(tty, termios.TIOCGPGRP, buf, 1) rpgrp = buf[0] self.assertEquals(r, 0) - self.assertTrue(rpgrp in ids, "%s not in %s" % (rpgrp, ids)) + self.assertIn(rpgrp, ids) def test_ioctl_signed_unsigned_code_param(self): if not pty: Modified: python/branches/py3k-cdecimal/Lib/test/test_iter.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_iter.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_iter.py Thu Jan 21 20:32:23 2010 @@ -542,23 +542,23 @@ def test_in_and_not_in(self): for sc5 in IteratingSequenceClass(5), SequenceClass(5): for i in range(5): - self.assertTrue(i in sc5) + self.assertIn(i, sc5) for i in "abc", -1, 5, 42.42, (3, 4), [], {1: 1}, 3-12j, sc5: - self.assertTrue(i not in sc5) + self.assertNotIn(i, sc5) self.assertRaises(TypeError, lambda: 3 in 12) self.assertRaises(TypeError, lambda: 3 not in map) d = {"one": 1, "two": 2, "three": 3, 1j: 2j} for k in d: - self.assertTrue(k in d) - self.assertTrue(k not in d.values()) + self.assertIn(k, d) + self.assertNotIn(k, d.values()) for v in d.values(): - self.assertTrue(v in d.values()) - self.assertTrue(v not in d) + self.assertIn(v, d.values()) + self.assertNotIn(v, d) for k, v in d.items(): - self.assertTrue((k, v) in d.items()) - self.assertTrue((v, k) not in d.items()) + self.assertIn((k, v), d.items()) + self.assertNotIn((v, k), d.items()) f = open(TESTFN, "w") try: @@ -569,9 +569,9 @@ try: for chunk in "abc": f.seek(0, 0) - self.assertTrue(chunk not in f) + self.assertNotIn(chunk, f) f.seek(0, 0) - self.assertTrue((chunk + "\n") in f) + self.assertIn((chunk + "\n"), f) finally: f.close() try: Modified: python/branches/py3k-cdecimal/Lib/test/test_logging.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_logging.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_logging.py Thu Jan 21 20:32:23 2010 @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright 2001-2009 by Vinay Sajip. All Rights Reserved. +# Copyright 2001-2010 by Vinay Sajip. All Rights Reserved. # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, @@ -18,7 +18,7 @@ """Test harness for the logging module. Run all tests. -Copyright (C) 2001-2009 Vinay Sajip. All Rights Reserved. +Copyright (C) 2001-2010 Vinay Sajip. All Rights Reserved. """ import logging Modified: python/branches/py3k-cdecimal/Lib/test/test_long.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_long.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_long.py Thu Jan 21 20:32:23 2010 @@ -4,6 +4,7 @@ import random import math +import array # Used for lazy formatting of failure messages class Frm(object): @@ -900,6 +901,237 @@ for e in bad_exponents: self.assertRaises(TypeError, round, 3, e) + def test_to_bytes(self): + def check(tests, byteorder, signed=False): + for test, expected in tests.items(): + try: + self.assertEqual( + test.to_bytes(len(expected), byteorder, signed=signed), + expected) + except Exception as err: + raise AssertionError( + "failed to convert {0} with byteorder={1} and signed={2}" + .format(test, byteorder, signed)) from err + + # Convert integers to signed big-endian byte arrays. + tests1 = { + 0: b'\x00', + 1: b'\x01', + -1: b'\xff', + -127: b'\x81', + -128: b'\x80', + -129: b'\xff\x7f', + 127: b'\x7f', + 129: b'\x00\x81', + -255: b'\xff\x01', + -256: b'\xff\x00', + 255: b'\x00\xff', + 256: b'\x01\x00', + 32767: b'\x7f\xff', + -32768: b'\xff\x80\x00', + 65535: b'\x00\xff\xff', + -65536: b'\xff\x00\x00', + -8388608: b'\x80\x00\x00' + } + check(tests1, 'big', signed=True) + + # Convert integers to signed little-endian byte arrays. + tests2 = { + 0: b'\x00', + 1: b'\x01', + -1: b'\xff', + -127: b'\x81', + -128: b'\x80', + -129: b'\x7f\xff', + 127: b'\x7f', + 129: b'\x81\x00', + -255: b'\x01\xff', + -256: b'\x00\xff', + 255: b'\xff\x00', + 256: b'\x00\x01', + 32767: b'\xff\x7f', + -32768: b'\x00\x80', + 65535: b'\xff\xff\x00', + -65536: b'\x00\x00\xff', + -8388608: b'\x00\x00\x80' + } + check(tests2, 'little', signed=True) + + # Convert integers to unsigned big-endian byte arrays. + tests3 = { + 0: b'\x00', + 1: b'\x01', + 127: b'\x7f', + 128: b'\x80', + 255: b'\xff', + 256: b'\x01\x00', + 32767: b'\x7f\xff', + 32768: b'\x80\x00', + 65535: b'\xff\xff', + 65536: b'\x01\x00\x00' + } + check(tests3, 'big', signed=False) + + # Convert integers to unsigned little-endian byte arrays. + tests4 = { + 0: b'\x00', + 1: b'\x01', + 127: b'\x7f', + 128: b'\x80', + 255: b'\xff', + 256: b'\x00\x01', + 32767: b'\xff\x7f', + 32768: b'\x00\x80', + 65535: b'\xff\xff', + 65536: b'\x00\x00\x01' + } + check(tests4, 'little', signed=False) + + self.assertRaises(OverflowError, (256).to_bytes, 1, 'big', signed=False) + self.assertRaises(OverflowError, (256).to_bytes, 1, 'big', signed=True) + self.assertRaises(OverflowError, (256).to_bytes, 1, 'little', signed=False) + self.assertRaises(OverflowError, (256).to_bytes, 1, 'little', signed=True) + self.assertRaises(OverflowError, (-1).to_bytes, 2, 'big', signed=False), + self.assertRaises(OverflowError, (-1).to_bytes, 2, 'little', signed=False) + self.assertEqual((0).to_bytes(0, 'big'), b'') + self.assertEqual((1).to_bytes(5, 'big'), b'\x00\x00\x00\x00\x01') + self.assertEqual((0).to_bytes(5, 'big'), b'\x00\x00\x00\x00\x00') + self.assertEqual((-1).to_bytes(5, 'big', signed=True), + b'\xff\xff\xff\xff\xff') + self.assertRaises(OverflowError, (1).to_bytes, 0, 'big') + + def test_from_bytes(self): + def check(tests, byteorder, signed=False): + for test, expected in tests.items(): + try: + self.assertEqual( + int.from_bytes(test, byteorder, signed=signed), + expected) + except Exception as err: + raise AssertionError( + "failed to convert {0} with byteorder={1!r} and signed={2}" + .format(test, byteorder, signed)) from err + + # Convert signed big-endian byte arrays to integers. + tests1 = { + b'': 0, + b'\x00': 0, + b'\x00\x00': 0, + b'\x01': 1, + b'\x00\x01': 1, + b'\xff': -1, + b'\xff\xff': -1, + b'\x81': -127, + b'\x80': -128, + b'\xff\x7f': -129, + b'\x7f': 127, + b'\x00\x81': 129, + b'\xff\x01': -255, + b'\xff\x00': -256, + b'\x00\xff': 255, + b'\x01\x00': 256, + b'\x7f\xff': 32767, + b'\x80\x00': -32768, + b'\x00\xff\xff': 65535, + b'\xff\x00\x00': -65536, + b'\x80\x00\x00': -8388608 + } + check(tests1, 'big', signed=True) + + # Convert signed little-endian byte arrays to integers. + tests2 = { + b'': 0, + b'\x00': 0, + b'\x00\x00': 0, + b'\x01': 1, + b'\x00\x01': 256, + b'\xff': -1, + b'\xff\xff': -1, + b'\x81': -127, + b'\x80': -128, + b'\x7f\xff': -129, + b'\x7f': 127, + b'\x81\x00': 129, + b'\x01\xff': -255, + b'\x00\xff': -256, + b'\xff\x00': 255, + b'\x00\x01': 256, + b'\xff\x7f': 32767, + b'\x00\x80': -32768, + b'\xff\xff\x00': 65535, + b'\x00\x00\xff': -65536, + b'\x00\x00\x80': -8388608 + } + check(tests2, 'little', signed=True) + + # Convert unsigned big-endian byte arrays to integers. + tests3 = { + b'': 0, + b'\x00': 0, + b'\x01': 1, + b'\x7f': 127, + b'\x80': 128, + b'\xff': 255, + b'\x01\x00': 256, + b'\x7f\xff': 32767, + b'\x80\x00': 32768, + b'\xff\xff': 65535, + b'\x01\x00\x00': 65536, + } + check(tests3, 'big', signed=False) + + # Convert integers to unsigned little-endian byte arrays. + tests4 = { + b'': 0, + b'\x00': 0, + b'\x01': 1, + b'\x7f': 127, + b'\x80': 128, + b'\xff': 255, + b'\x00\x01': 256, + b'\xff\x7f': 32767, + b'\x00\x80': 32768, + b'\xff\xff': 65535, + b'\x00\x00\x01': 65536, + } + check(tests4, 'little', signed=False) + + class myint(int): + pass + + self.assertTrue(type(myint.from_bytes(b'\x00', 'big')) is myint) + self.assertEqual(myint.from_bytes(b'\x01', 'big'), 1) + self.assertTrue( + type(myint.from_bytes(b'\x00', 'big', signed=False)) is myint) + self.assertEqual(myint.from_bytes(b'\x01', 'big', signed=False), 1) + self.assertTrue(type(myint.from_bytes(b'\x00', 'little')) is myint) + self.assertEqual(myint.from_bytes(b'\x01', 'little'), 1) + self.assertTrue(type(myint.from_bytes( + b'\x00', 'little', signed=False)) is myint) + self.assertEqual(myint.from_bytes(b'\x01', 'little', signed=False), 1) + self.assertEqual( + int.from_bytes([255, 0, 0], 'big', signed=True), -65536) + self.assertEqual( + int.from_bytes((255, 0, 0), 'big', signed=True), -65536) + self.assertEqual(int.from_bytes( + bytearray(b'\xff\x00\x00'), 'big', signed=True), -65536) + self.assertEqual(int.from_bytes( + bytearray(b'\xff\x00\x00'), 'big', signed=True), -65536) + self.assertEqual(int.from_bytes( + array.array('B', b'\xff\x00\x00'), 'big', signed=True), -65536) + self.assertEqual(int.from_bytes( + memoryview(b'\xff\x00\x00'), 'big', signed=True), -65536) + self.assertRaises(ValueError, int.from_bytes, [256], 'big') + self.assertRaises(ValueError, int.from_bytes, [0], 'big\x00') + self.assertRaises(ValueError, int.from_bytes, [0], 'little\x00') + self.assertRaises(TypeError, int.from_bytes, "", 'big') + self.assertRaises(TypeError, int.from_bytes, "\x00", 'big') + self.assertRaises(TypeError, int.from_bytes, 0, 'big') + self.assertRaises(TypeError, int.from_bytes, 0, 'big', True) + self.assertRaises(TypeError, myint.from_bytes, "", 'big') + self.assertRaises(TypeError, myint.from_bytes, "\x00", 'big') + self.assertRaises(TypeError, myint.from_bytes, 0, 'big') + self.assertRaises(TypeError, int.from_bytes, 0, 'big', True) def test_main(): Modified: python/branches/py3k-cdecimal/Lib/test/test_mmap.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_mmap.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_mmap.py Thu Jan 21 20:32:23 2010 @@ -502,7 +502,7 @@ def test_error(self): self.assertTrue(issubclass(mmap.error, EnvironmentError)) - self.assertTrue("mmap.error" in str(mmap.error)) + self.assertIn("mmap.error", str(mmap.error)) def test_io_methods(self): data = b"0123456789" Modified: python/branches/py3k-cdecimal/Lib/test/test_multiprocessing.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_multiprocessing.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_multiprocessing.py Thu Jan 21 20:32:23 2010 @@ -163,7 +163,7 @@ self.assertEquals(p.authkey, current.authkey) self.assertEquals(p.is_alive(), False) self.assertEquals(p.daemon, True) - self.assertTrue(p not in self.active_children()) + self.assertNotIn(p, self.active_children()) self.assertTrue(type(self.active_children()) is list) self.assertEqual(p.exitcode, None) @@ -171,7 +171,7 @@ self.assertEquals(p.exitcode, None) self.assertEquals(p.is_alive(), True) - self.assertTrue(p in self.active_children()) + self.assertIn(p, self.active_children()) self.assertEquals(q.get(), args[1:]) self.assertEquals(q.get(), kwargs) @@ -184,7 +184,7 @@ self.assertEquals(p.exitcode, 0) self.assertEquals(p.is_alive(), False) - self.assertTrue(p not in self.active_children()) + self.assertNotIn(p, self.active_children()) def _test_terminate(self): time.sleep(1000) @@ -198,7 +198,7 @@ p.start() self.assertEqual(p.is_alive(), True) - self.assertTrue(p in self.active_children()) + self.assertIn(p, self.active_children()) self.assertEqual(p.exitcode, None) p.terminate() @@ -208,7 +208,7 @@ self.assertTimingAlmostEqual(join.elapsed, 0.0) self.assertEqual(p.is_alive(), False) - self.assertTrue(p not in self.active_children()) + self.assertNotIn(p, self.active_children()) p.join() @@ -227,13 +227,13 @@ self.assertEqual(type(self.active_children()), list) p = self.Process(target=time.sleep, args=(DELTA,)) - self.assertTrue(p not in self.active_children()) + self.assertNotIn(p, self.active_children()) p.start() - self.assertTrue(p in self.active_children()) + self.assertIn(p, self.active_children()) p.join() - self.assertTrue(p not in self.active_children()) + self.assertNotIn(p, self.active_children()) def _test_recursion(self, wconn, id): from multiprocessing import forking Modified: python/branches/py3k-cdecimal/Lib/test/test_os.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_os.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_os.py Thu Jan 21 20:32:23 2010 @@ -228,7 +228,7 @@ def trunc(x): return x self.assertEquals(trunc(getattr(result, attr)), result[getattr(stat, name)]) - self.assertTrue(attr in members) + self.assertIn(attr, members) try: result[200] @@ -564,6 +564,14 @@ def test_execvpe_with_bad_arglist(self): self.assertRaises(ValueError, os.execvpe, 'notepad', [], None) +class ArgTests(unittest.TestCase): + def test_bytearray(self): + # Issue #7561: posix module didn't release bytearray exports properly. + b = bytearray(os.sep.encode('ascii')) + self.assertRaises(OSError, os.mkdir, b) + # Check object is still resizable. + b[:] = b'' + class Win32ErrorTests(unittest.TestCase): def test_rename(self): self.assertRaises(WindowsError, os.rename, support.TESTFN, support.TESTFN+".bak") @@ -750,6 +758,7 @@ def test_main(): support.run_unittest( + ArgTests, FileTests, StatAttributeTests, EnvironTests, Modified: python/branches/py3k-cdecimal/Lib/test/test_peepholer.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_peepholer.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_peepholer.py Thu Jan 21 20:32:23 2010 @@ -1,4 +1,5 @@ import dis +import re import sys from io import StringIO import unittest @@ -25,9 +26,9 @@ del x asm = disassemble(unot) for elem in ('UNARY_NOT', 'POP_JUMP_IF_FALSE'): - self.assertTrue(elem not in asm) + self.assertNotIn(elem, asm) for elem in ('POP_JUMP_IF_TRUE',): - self.assertTrue(elem in asm) + self.assertIn(elem, asm) def test_elim_inversion_of_is_or_in(self): for line, elem in ( @@ -37,7 +38,7 @@ ('not a not in b', '(in)',), ): asm = dis_single(line) - self.assertTrue(elem in asm) + self.assertIn(elem, asm) def test_global_as_constant(self): # LOAD_GLOBAL None/True/False --> LOAD_CONST None/True/False @@ -54,14 +55,14 @@ for func, name in ((f, 'None'), (g, 'True'), (h, 'False')): asm = disassemble(func) for elem in ('LOAD_GLOBAL',): - self.assertTrue(elem not in asm) + self.assertNotIn(elem, asm) for elem in ('LOAD_CONST', '('+name+')'): - self.assertTrue(elem in asm) + self.assertIn(elem, asm) def f(): 'Adding a docstring made this test fail in Py2.5.0' return None - self.assertTrue('LOAD_CONST' in disassemble(f)) - self.assertTrue('LOAD_GLOBAL' not in disassemble(f)) + self.assertIn('LOAD_CONST', disassemble(f)) + self.assertNotIn('LOAD_GLOBAL', disassemble(f)) def test_while_one(self): # Skip over: LOAD_CONST trueconst POP_JUMP_IF_FALSE xx @@ -71,9 +72,9 @@ return list asm = disassemble(f) for elem in ('LOAD_CONST', 'POP_JUMP_IF_FALSE'): - self.assertTrue(elem not in asm) + self.assertNotIn(elem, asm) for elem in ('JUMP_ABSOLUTE',): - self.assertTrue(elem in asm) + self.assertIn(elem, asm) def test_pack_unpack(self): for line, elem in ( @@ -82,9 +83,9 @@ ('a, b, c = a, b, c', 'ROT_THREE',), ): asm = dis_single(line) - self.assertTrue(elem in asm) - self.assertTrue('BUILD_TUPLE' not in asm) - self.assertTrue('UNPACK_TUPLE' not in asm) + self.assertIn(elem, asm) + self.assertNotIn('BUILD_TUPLE', asm) + self.assertNotIn('UNPACK_TUPLE', asm) def test_folding_of_tuples_of_constants(self): for line, elem in ( @@ -95,8 +96,8 @@ ('((1, 2), 3, 4)', '(((1, 2), 3, 4))'), ): asm = dis_single(line) - self.assertTrue(elem in asm) - self.assertTrue('BUILD_TUPLE' not in asm) + self.assertIn(elem, asm) + self.assertNotIn('BUILD_TUPLE', asm) # Bug 1053819: Tuple of constants misidentified when presented with: # . . . opcode_with_arg 100 unary_opcode BUILD_TUPLE 1 . . . @@ -115,6 +116,54 @@ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ],) + def test_folding_of_lists_of_constants(self): + for line, elem in ( + # in/not in constants with BUILD_LIST should be folded to a tuple: + ('a in [1,2,3]', '(1, 2, 3)'), + ('a not in ["a","b","c"]', "(('a', 'b', 'c'))"), + ('a in [None, 1, None]', '((None, 1, None))'), + ('a not in [(1, 2), 3, 4]', '(((1, 2), 3, 4))'), + ): + asm = dis_single(line) + self.assertIn(elem, asm) + self.assertNotIn('BUILD_LIST', asm) + + def test_folding_of_sets_of_constants(self): + for line, elem in ( + # in/not in constants with BUILD_SET should be folded to a frozenset: + ('a in {1,2,3}', frozenset({1, 2, 3})), + ('a not in {"a","b","c"}', frozenset({'a', 'c', 'b'})), + ('a in {None, 1, None}', frozenset({1, None})), + ('a not in {(1, 2), 3, 4}', frozenset({(1, 2), 3, 4})), + ('a in {1, 2, 3, 3, 2, 1}', frozenset({1, 2, 3})), + ): + asm = dis_single(line) + self.assertNotIn('BUILD_SET', asm) + + # Verify that the frozenset 'elem' is in the disassembly + # The ordering of the elements in repr( frozenset ) isn't + # guaranteed, so we jump through some hoops to ensure that we have + # the frozenset we expect: + self.assertIn('frozenset', asm) + # Extract the frozenset literal from the disassembly: + m = re.match(r'.*(frozenset\({.*}\)).*', asm, re.DOTALL) + self.assertTrue(m) + self.assertEqual(eval(m.group(1)), elem) + + # Ensure that the resulting code actually works: + def f(a): + return a in {1, 2, 3} + + def g(a): + return a not in {1, 2, 3} + + self.assertTrue(f(3)) + self.assertTrue(not f(4)) + + self.assertTrue(not g(3)) + self.assertTrue(g(4)) + + def test_folding_of_binops_on_constants(self): for line, elem in ( ('a = 2+3+4', '(9)'), # chained fold @@ -134,17 +183,17 @@ ('a = 13 | 7', '(15)'), # binary or ): asm = dis_single(line) - self.assertTrue(elem in asm, asm) - self.assertTrue('BINARY_' not in asm) + self.assertIn(elem, asm, asm) + self.assertNotIn('BINARY_', asm) # Verify that unfoldables are skipped asm = dis_single('a=2+"b"') - self.assertTrue('(2)' in asm) - self.assertTrue("('b')" in asm) + self.assertIn('(2)', asm) + self.assertIn("('b')", asm) # Verify that large sequences do not result from folding asm = dis_single('a="x"*1000') - self.assertTrue('(1000)' in asm) + self.assertIn('(1000)', asm) def test_folding_of_unaryops_on_constants(self): for line, elem in ( @@ -153,8 +202,8 @@ ('+1', '(1)'), # unary positive ): asm = dis_single(line) - self.assertTrue(elem in asm, asm) - self.assertTrue('UNARY_' not in asm) + self.assertIn(elem, asm, asm) + self.assertNotIn('UNARY_', asm) # Verify that unfoldables are skipped for line, elem in ( @@ -162,16 +211,16 @@ ('~"abc"', "('abc')"), # unary invert ): asm = dis_single(line) - self.assertTrue(elem in asm, asm) - self.assertTrue('UNARY_' in asm) + self.assertIn(elem, asm, asm) + self.assertIn('UNARY_', asm) def test_elim_extra_return(self): # RETURN LOAD_CONST None RETURN --> RETURN def f(x): return x asm = disassemble(f) - self.assertTrue('LOAD_CONST' not in asm) - self.assertTrue('(None)' not in asm) + self.assertNotIn('LOAD_CONST', asm) + self.assertNotIn('(None)', asm) self.assertEqual(asm.split().count('RETURN_VALUE'), 1) def test_elim_jump_to_return(self): @@ -179,8 +228,8 @@ def f(cond, true_value, false_value): return true_value if cond else false_value asm = disassemble(f) - self.assertTrue('JUMP_FORWARD' not in asm) - self.assertTrue('JUMP_ABSOLUTE' not in asm) + self.assertNotIn('JUMP_FORWARD', asm) + self.assertNotIn('JUMP_ABSOLUTE', asm) self.assertEqual(asm.split().count('RETURN_VALUE'), 2) def test_elim_jump_after_return1(self): @@ -195,8 +244,8 @@ return 5 return 6 asm = disassemble(f) - self.assertTrue('JUMP_FORWARD' not in asm) - self.assertTrue('JUMP_ABSOLUTE' not in asm) + self.assertNotIn('JUMP_FORWARD', asm) + self.assertNotIn('JUMP_ABSOLUTE', asm) self.assertEqual(asm.split().count('RETURN_VALUE'), 6) def test_elim_jump_after_return2(self): @@ -205,7 +254,7 @@ while 1: if cond1: return 4 asm = disassemble(f) - self.assertTrue('JUMP_FORWARD' not in asm) + self.assertNotIn('JUMP_FORWARD', asm) # There should be one jump for the while loop. self.assertEqual(asm.split().count('JUMP_ABSOLUTE'), 1) self.assertEqual(asm.split().count('RETURN_VALUE'), 2) @@ -216,7 +265,7 @@ pass return g asm = disassemble(f) - self.assertTrue('BINARY_ADD' not in asm) + self.assertNotIn('BINARY_ADD', asm) def test_main(verbose=None): Modified: python/branches/py3k-cdecimal/Lib/test/test_pep352.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_pep352.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_pep352.py Thu Jan 21 20:32:23 2010 @@ -73,7 +73,7 @@ self.verify_instance_interface(exc()) except TypeError: pass - self.assertTrue(exc_name in exc_set) + self.assertIn(exc_name, exc_set) exc_set.discard(exc_name) last_exc = exc last_depth = depth Modified: python/branches/py3k-cdecimal/Lib/test/test_poplib.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_poplib.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_poplib.py Thu Jan 21 20:32:23 2010 @@ -258,7 +258,7 @@ self.client = poplib.POP3_SSL(self.server.host, self.server.port) def test__all__(self): - self.assertTrue('POP3_SSL' in poplib.__all__) + self.assertIn('POP3_SSL', poplib.__all__) class TestTimeouts(TestCase): Modified: python/branches/py3k-cdecimal/Lib/test/test_posix.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_posix.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_posix.py Thu Jan 21 20:32:23 2010 @@ -251,7 +251,7 @@ def test_lsdir(self): if hasattr(posix, 'lsdir'): - self.assertTrue(support.TESTFN in posix.lsdir(os.curdir)) + self.assertIn(support.TESTFN, posix.lsdir(os.curdir)) def test_access(self): if hasattr(posix, 'access'): Modified: python/branches/py3k-cdecimal/Lib/test/test_posixpath.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_posixpath.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_posixpath.py Thu Jan 21 20:32:23 2010 @@ -481,14 +481,14 @@ self.assertRaises(TypeError, posixpath.normpath) def test_abspath(self): - self.assertTrue("foo" in posixpath.abspath("foo")) - self.assertTrue(b"foo" in posixpath.abspath(b"foo")) + self.assertIn("foo", posixpath.abspath("foo")) + self.assertIn(b"foo", posixpath.abspath(b"foo")) self.assertRaises(TypeError, posixpath.abspath) def test_realpath(self): - self.assertTrue("foo" in realpath("foo")) - self.assertTrue(b"foo" in realpath(b"foo")) + self.assertIn("foo", realpath("foo")) + self.assertIn(b"foo", realpath(b"foo")) self.assertRaises(TypeError, posixpath.realpath) if hasattr(os, "symlink"): Modified: python/branches/py3k-cdecimal/Lib/test/test_pwd.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_pwd.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_pwd.py Thu Jan 21 20:32:23 2010 @@ -43,8 +43,8 @@ for e in entries: if not e[0] or e[0] == '+': continue # skip NIS entries etc. - self.assertTrue(pwd.getpwnam(e.pw_name) in entriesbyname[e.pw_name]) - self.assertTrue(pwd.getpwuid(e.pw_uid) in entriesbyuid[e.pw_uid]) + self.assertIn(pwd.getpwnam(e.pw_name), entriesbyname[e.pw_name]) + self.assertIn(pwd.getpwuid(e.pw_uid), entriesbyuid[e.pw_uid]) def test_errors(self): self.assertRaises(TypeError, pwd.getpwuid) Modified: python/branches/py3k-cdecimal/Lib/test/test_pyclbr.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_pyclbr.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_pyclbr.py Thu Jan 21 20:32:23 2010 @@ -40,6 +40,7 @@ if key in ignore: return if key not in obj: print("***",key, file=sys.stderr) + self.assertIn(key, obj) self.assertTrue(key in obj, "%r in %r" % (key, obj)) def assertEqualsOrIgnored(self, a, b, ignore): Modified: python/branches/py3k-cdecimal/Lib/test/test_pydoc.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_pydoc.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_pydoc.py Thu Jan 21 20:32:23 2010 @@ -313,7 +313,7 @@ # Check that pydocfodder module can be described from test import pydocfodder doc = pydoc.render_doc(pydocfodder) - self.assertTrue("pydocfodder" in doc) + self.assertIn("pydocfodder", doc) def test_classic_class(self): class C: "Classic class" @@ -321,7 +321,7 @@ self.assertEqual(pydoc.describe(C), 'class C') self.assertEqual(pydoc.describe(c), 'C') expected = 'C in module %s' % __name__ - self.assertTrue(expected in pydoc.render_doc(c)) + self.assertIn(expected, pydoc.render_doc(c)) def test_class(self): class C(object): "New-style class" @@ -330,7 +330,7 @@ self.assertEqual(pydoc.describe(C), 'class C') self.assertEqual(pydoc.describe(c), 'C') expected = 'C in module %s object' % __name__ - self.assertTrue(expected in pydoc.render_doc(c)) + self.assertIn(expected, pydoc.render_doc(c)) def test_main(): Modified: python/branches/py3k-cdecimal/Lib/test/test_raise.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_raise.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_raise.py Thu Jan 21 20:32:23 2010 @@ -28,7 +28,7 @@ try: raise except RuntimeError as e: - self.assertTrue("No active exception" in str(e)) + self.assertIn("No active exception", str(e)) else: self.fail("No exception raised") @@ -127,7 +127,7 @@ try: raise IndexError from 5 except TypeError as e: - self.assertTrue("exception cause" in str(e)) + self.assertIn("exception cause", str(e)) else: self.fail("No exception raised") Modified: python/branches/py3k-cdecimal/Lib/test/test_random.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_random.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_random.py Thu Jan 21 20:32:23 2010 @@ -211,7 +211,7 @@ n += n - 1 # check 1 below the next power of two k = int(1.00001 + _log(n, 2)) - self.assertTrue(k in [numbits, numbits+1]) + self.assertIn(k, [numbits, numbits+1]) self.assertTrue(2**k > n > 2**(k-2)) n -= n >> 15 # check a little farther below the next power of two @@ -367,7 +367,7 @@ n += n - 1 # check 1 below the next power of two k = int(1.00001 + _log(n, 2)) - self.assertTrue(k in [numbits, numbits+1]) + self.assertIn(k, [numbits, numbits+1]) self.assertTrue(2**k > n > 2**(k-2)) n -= n >> 15 # check a little farther below the next power of two Modified: python/branches/py3k-cdecimal/Lib/test/test_range.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_range.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_range.py Thu Jan 21 20:32:23 2010 @@ -59,18 +59,18 @@ self.assertEqual(list(range(a+4, a, -2)), [a+4, a+2]) seq = list(range(a, b, c)) - self.assertTrue(a in seq) - self.assertTrue(b not in seq) + self.assertIn(a, seq) + self.assertNotIn(b, seq) self.assertEqual(len(seq), 2) seq = list(range(b, a, -c)) - self.assertTrue(b in seq) - self.assertTrue(a not in seq) + self.assertIn(b, seq) + self.assertNotIn(a, seq) self.assertEqual(len(seq), 2) seq = list(range(-a, -b, -c)) - self.assertTrue(-a in seq) - self.assertTrue(-b not in seq) + self.assertIn(-a, seq) + self.assertNotIn(-b, seq) self.assertEqual(len(seq), 2) self.assertRaises(TypeError, range) @@ -114,13 +114,13 @@ def test_types(self): # Non-integer objects *equal* to any of the range's items are supposed # to be contained in the range. - self.assertTrue(1.0 in range(3)) - self.assertTrue(True in range(3)) - self.assertTrue(1+0j in range(3)) + self.assertIn(1.0, range(3)) + self.assertIn(True, range(3)) + self.assertIn(1+0j, range(3)) class C1: def __eq__(self, other): return True - self.assertTrue(C1() in range(3)) + self.assertIn(C1(), range(3)) # Objects are never coerced into other types for comparison. class C2: @@ -128,32 +128,32 @@ def __index__(self): return 1 self.assertFalse(C2() in range(3)) # ..except if explicitly told so. - self.assertTrue(int(C2()) in range(3)) + self.assertIn(int(C2()), range(3)) # Check that the range.__contains__ optimization is only # used for ints, not for instances of subclasses of int. class C3(int): def __eq__(self, other): return True - self.assertTrue(C3(11) in range(10)) - self.assertTrue(C3(11) in list(range(10))) + self.assertIn(C3(11), range(10)) + self.assertIn(C3(11), list(range(10))) def test_strided_limits(self): r = range(0, 101, 2) - self.assertTrue(0 in r) + self.assertIn(0, r) self.assertFalse(1 in r) - self.assertTrue(2 in r) + self.assertIn(2, r) self.assertFalse(99 in r) - self.assertTrue(100 in r) + self.assertIn(100, r) self.assertFalse(101 in r) r = range(0, -20, -1) - self.assertTrue(0 in r) - self.assertTrue(-1 in r) - self.assertTrue(-19 in r) + self.assertIn(0, r) + self.assertIn(-1, r) + self.assertIn(-19, r) self.assertFalse(-20 in r) r = range(0, -20, -2) - self.assertTrue(-18 in r) + self.assertIn(-18, r) self.assertFalse(-19 in r) self.assertFalse(-20 in r) Modified: python/branches/py3k-cdecimal/Lib/test/test_re.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_re.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_re.py Thu Jan 21 20:32:23 2010 @@ -717,6 +717,12 @@ self.assertRaises(ValueError, re.compile, '(?a)\w', re.UNICODE) self.assertRaises(ValueError, re.compile, '(?au)\w') + def test_dealloc(self): + # issue 3299: check for segfault in debug build + import _sre + long_overflow = sys.maxsize + 2 + self.assertRaises(TypeError, re.finditer, "a", {}) + self.assertRaises(OverflowError, _sre.compile, "abc", 0, [long_overflow]) def run_re_tests(): from test.re_tests import benchmarks, tests, SUCCEED, FAIL, SYNTAX_ERROR Modified: python/branches/py3k-cdecimal/Lib/test/test_reprlib.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_reprlib.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_reprlib.py Thu Jan 21 20:32:23 2010 @@ -125,7 +125,7 @@ s = r(ClassWithFailingRepr) self.assertTrue(s.startswith("")) - self.assertTrue(s.find("...") in [12, 13]) + self.assertIn(s.find("..."), [12, 13]) def test_lambda(self): self.assertTrue(repr(lambda x: x).startswith( Modified: python/branches/py3k-cdecimal/Lib/test/test_runpy.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_runpy.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_runpy.py Thu Jan 21 20:32:23 2010 @@ -165,14 +165,14 @@ try: if verbose: print("Running from source:", mod_name) d1 = run_module(mod_name) # Read from source - self.assertTrue("x" in d1) + self.assertIn("x", d1) self.assertEqual(d1["x"], 1) del d1 # Ensure __loader__ entry doesn't keep file open __import__(mod_name) os.remove(mod_fname) if verbose: print("Running from compiled:", mod_name) d2 = run_module(mod_name) # Read from bytecode - self.assertTrue("x" in d2) + self.assertIn("x", d2) self.assertEqual(d2["x"], 1) del d2 # Ensure __loader__ entry doesn't keep file open finally: @@ -187,14 +187,14 @@ try: if verbose: print("Running from source:", pkg_name) d1 = run_module(pkg_name) # Read from source - self.assertTrue("x" in d1) + self.assertIn("x", d1) self.assertTrue(d1["x"] == 1) del d1 # Ensure __loader__ entry doesn't keep file open __import__(mod_name) os.remove(mod_fname) if verbose: print("Running from compiled:", pkg_name) d2 = run_module(pkg_name) # Read from bytecode - self.assertTrue("x" in d2) + self.assertIn("x", d2) self.assertTrue(d2["x"] == 1) del d2 # Ensure __loader__ entry doesn't keep file open finally: @@ -239,19 +239,19 @@ pkg_name = mod_name.rpartition('.')[0] if verbose: print("Running from source:", mod_name) d1 = run_module(mod_name, run_name=run_name) # Read from source - self.assertTrue("__package__" in d1) + self.assertIn("__package__", d1) self.assertTrue(d1["__package__"] == pkg_name) - self.assertTrue("sibling" in d1) - self.assertTrue("nephew" in d1) + self.assertIn("sibling", d1) + self.assertIn("nephew", d1) del d1 # Ensure __loader__ entry doesn't keep file open __import__(mod_name) os.remove(mod_fname) if verbose: print("Running from compiled:", mod_name) d2 = run_module(mod_name, run_name=run_name) # Read from bytecode - self.assertTrue("__package__" in d2) + self.assertIn("__package__", d2) self.assertTrue(d2["__package__"] == pkg_name) - self.assertTrue("sibling" in d2) - self.assertTrue("nephew" in d2) + self.assertIn("sibling", d2) + self.assertIn("nephew", d2) del d2 # Ensure __loader__ entry doesn't keep file open finally: self._del_pkg(pkg_dir, depth, mod_name) Modified: python/branches/py3k-cdecimal/Lib/test/test_sax.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_sax.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_sax.py Thu Jan 21 20:32:23 2010 @@ -59,7 +59,7 @@ self.assertEquals(attrs.getNames(), ["attr"]) self.assertEquals(attrs.getQNames(), ["attr"]) self.assertEquals(len(attrs), 1) - self.assertTrue("attr" in attrs) + self.assertIn("attr", attrs) self.assertEquals(list(attrs.keys()), ["attr"]) self.assertEquals(attrs.get("attr"), "val") self.assertEquals(attrs.get("attr", 25), "val") @@ -436,7 +436,7 @@ self.assertTrue((attrs.getQNames() == [] or attrs.getQNames() == ["ns:attr"])) self.assertEquals(len(attrs), 1) - self.assertTrue((ns_uri, "attr") in attrs) + self.assertIn((ns_uri, "attr"), attrs) self.assertEquals(attrs.get((ns_uri, "attr")), "val") self.assertEquals(attrs.get((ns_uri, "attr"), 25), "val") self.assertEquals(list(attrs.items()), [((ns_uri, "attr"), "val")]) @@ -626,7 +626,7 @@ self.assertEquals(attrs.getNames(), [(ns_uri, "attr")]) self.assertEquals(attrs.getQNames(), ["ns:attr"]) self.assertEquals(len(attrs), 1) - self.assertTrue((ns_uri, "attr") in attrs) + self.assertIn((ns_uri, "attr"), attrs) self.assertEquals(list(attrs.keys()), [(ns_uri, "attr")]) self.assertEquals(attrs.get((ns_uri, "attr")), "val") self.assertEquals(attrs.get((ns_uri, "attr"), 25), "val") Modified: python/branches/py3k-cdecimal/Lib/test/test_scope.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_scope.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_scope.py Thu Jan 21 20:32:23 2010 @@ -447,7 +447,7 @@ return g d = f(2)(4) - self.assertTrue('h' in d) + self.assertIn('h', d) del d['h'] self.assertEqual(d, {'x': 2, 'y': 7, 'w': 6}) @@ -481,8 +481,8 @@ return C varnames = f(1).z - self.assertTrue("x" not in varnames) - self.assertTrue("y" in varnames) + self.assertNotIn("x", varnames) + self.assertIn("y", varnames) def testLocalsClass_WithTrace(self): # Issue23728: after the trace function returns, the locals() @@ -660,7 +660,7 @@ c = f(0) self.assertEqual(c.get(), 1) - self.assertTrue("x" not in c.__class__.__dict__) + self.assertNotIn("x", c.__class__.__dict__) def testNonLocalGenerator(self): Modified: python/branches/py3k-cdecimal/Lib/test/test_set.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_set.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_set.py Thu Jan 21 20:32:23 2010 @@ -65,7 +65,7 @@ self.assertEqual(c in self.s, c in self.d) self.assertRaises(TypeError, self.s.__contains__, [[]]) s = self.thetype([frozenset(self.letters)]) - self.assertTrue(self.thetype(self.letters) in s) + self.assertIn(self.thetype(self.letters), s) def test_union(self): u = self.s.union(self.otherword) @@ -269,7 +269,7 @@ s=H() f=set() f.add(s) - self.assertTrue(s in f) + self.assertIn(s, f) f.remove(s) f.add(s) f.discard(s) @@ -379,7 +379,7 @@ def test_add(self): self.s.add('Q') - self.assertTrue('Q' in self.s) + self.assertIn('Q', self.s) dup = self.s.copy() self.s.add('Q') self.assertEqual(self.s, dup) @@ -387,13 +387,13 @@ def test_remove(self): self.s.remove('a') - self.assertTrue('a' not in self.s) + self.assertNotIn('a', self.s) self.assertRaises(KeyError, self.s.remove, 'Q') self.assertRaises(TypeError, self.s.remove, []) s = self.thetype([frozenset(self.word)]) - self.assertTrue(self.thetype(self.word) in s) + self.assertIn(self.thetype(self.word), s) s.remove(self.thetype(self.word)) - self.assertTrue(self.thetype(self.word) not in s) + self.assertNotIn(self.thetype(self.word), s) self.assertRaises(KeyError, self.s.remove, self.thetype(self.word)) def test_remove_keyerror_unpacking(self): @@ -420,26 +420,26 @@ def test_discard(self): self.s.discard('a') - self.assertTrue('a' not in self.s) + self.assertNotIn('a', self.s) self.s.discard('Q') self.assertRaises(TypeError, self.s.discard, []) s = self.thetype([frozenset(self.word)]) - self.assertTrue(self.thetype(self.word) in s) + self.assertIn(self.thetype(self.word), s) s.discard(self.thetype(self.word)) - self.assertTrue(self.thetype(self.word) not in s) + self.assertNotIn(self.thetype(self.word), s) s.discard(self.thetype(self.word)) def test_pop(self): for i in range(len(self.s)): elem = self.s.pop() - self.assertTrue(elem not in self.s) + self.assertNotIn(elem, self.s) self.assertRaises(KeyError, self.s.pop) def test_update(self): retval = self.s.update(self.otherword) self.assertEqual(retval, None) for c in (self.word + self.otherword): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) self.assertRaises(PassThru, self.s.update, check_pass_thru()) self.assertRaises(TypeError, self.s.update, [[]]) for p, q in (('cdc', 'abcd'), ('efgfe', 'abcefg'), ('ccb', 'abc'), ('ef', 'abcef')): @@ -457,16 +457,16 @@ def test_ior(self): self.s |= set(self.otherword) for c in (self.word + self.otherword): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) def test_intersection_update(self): retval = self.s.intersection_update(self.otherword) self.assertEqual(retval, None) for c in (self.word + self.otherword): if c in self.otherword and c in self.word: - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) self.assertRaises(PassThru, self.s.intersection_update, check_pass_thru()) self.assertRaises(TypeError, self.s.intersection_update, [[]]) for p, q in (('cdc', 'c'), ('efgfe', ''), ('ccb', 'bc'), ('ef', '')): @@ -484,18 +484,18 @@ self.s &= set(self.otherword) for c in (self.word + self.otherword): if c in self.otherword and c in self.word: - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) def test_difference_update(self): retval = self.s.difference_update(self.otherword) self.assertEqual(retval, None) for c in (self.word + self.otherword): if c in self.word and c not in self.otherword: - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) self.assertRaises(PassThru, self.s.difference_update, check_pass_thru()) self.assertRaises(TypeError, self.s.difference_update, [[]]) self.assertRaises(TypeError, self.s.symmetric_difference_update, [[]]) @@ -521,18 +521,18 @@ self.s -= set(self.otherword) for c in (self.word + self.otherword): if c in self.word and c not in self.otherword: - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) def test_symmetric_difference_update(self): retval = self.s.symmetric_difference_update(self.otherword) self.assertEqual(retval, None) for c in (self.word + self.otherword): if (c in self.word) ^ (c in self.otherword): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) self.assertRaises(PassThru, self.s.symmetric_difference_update, check_pass_thru()) self.assertRaises(TypeError, self.s.symmetric_difference_update, [[]]) for p, q in (('cdc', 'abd'), ('efgfe', 'abcefg'), ('ccb', 'a'), ('ef', 'abcef')): @@ -545,9 +545,9 @@ self.s ^= set(self.otherword) for c in (self.word + self.otherword): if (c in self.word) ^ (c in self.otherword): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) def test_inplace_on_self(self): t = self.s.copy() @@ -814,7 +814,7 @@ def test_iteration(self): for v in self.set: - self.assertTrue(v in self.values) + self.assertIn(v, self.values) setiter = iter(self.set) # note: __length_hint__ is an internal undocumented API, # don't rely on it in your own programs @@ -849,10 +849,10 @@ self.repr = "{3}" def test_in(self): - self.assertTrue(3 in self.set) + self.assertIn(3, self.set) def test_not_in(self): - self.assertTrue(2 not in self.set) + self.assertNotIn(2, self.set) #------------------------------------------------------------------------------ @@ -866,10 +866,10 @@ self.repr = "{(0, 'zero')}" def test_in(self): - self.assertTrue((0, "zero") in self.set) + self.assertIn((0, "zero"), self.set) def test_not_in(self): - self.assertTrue(9 not in self.set) + self.assertNotIn(9, self.set) #------------------------------------------------------------------------------ @@ -1186,7 +1186,7 @@ popped[self.set.pop()] = None self.assertEqual(len(popped), len(self.values)) for v in self.values: - self.assertTrue(v in popped) + self.assertIn(v, popped) def test_update_empty_tuple(self): self.set.update(()) @@ -1760,7 +1760,7 @@ edge = vertex # Cuboctahedron vertices are edges in Cube self.assertEqual(len(edge), 2) # Two cube vertices define an edge for cubevert in edge: - self.assertTrue(cubevert in g) + self.assertIn(cubevert, g) #============================================================================== Modified: python/branches/py3k-cdecimal/Lib/test/test_site.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_site.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_site.py Thu Jan 21 20:32:23 2010 @@ -270,7 +270,7 @@ site.removeduppaths() seen_paths = set() for path in sys.path: - self.assertTrue(path not in seen_paths) + self.assertNotIn(path, seen_paths) seen_paths.add(path) def test_add_build_dir(self): Modified: python/branches/py3k-cdecimal/Lib/test/test_socket.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_socket.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_socket.py Thu Jan 21 20:32:23 2010 @@ -502,7 +502,7 @@ # it reasonable to get the host's addr in addition to 0.0.0.0. # At least for eCos. This is required for the S/390 to pass. my_ip_addr = socket.gethostbyname(socket.gethostname()) - self.assertTrue(name[0] in ("0.0.0.0", my_ip_addr), '%s invalid' % name[0]) + self.assertIn(name[0], ("0.0.0.0", my_ip_addr), '%s invalid' % name[0]) self.assertEqual(name[1], port) def testGetSockOpt(self): Modified: python/branches/py3k-cdecimal/Lib/test/test_structseq.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_structseq.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_structseq.py Thu Jan 21 20:32:23 2010 @@ -50,8 +50,8 @@ def test_contains(self): t1 = time.gmtime() for item in t1: - self.assertTrue(item in t1) - self.assertTrue(-42 not in t1) + self.assertIn(item, t1) + self.assertNotIn(-42, t1) def test_hash(self): t1 = time.gmtime() Modified: python/branches/py3k-cdecimal/Lib/test/test_subprocess.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_subprocess.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_subprocess.py Thu Jan 21 20:32:23 2010 @@ -77,7 +77,7 @@ # check_output() function with zero return code output = subprocess.check_output( [sys.executable, "-c", "print('BDFL')"]) - self.assertTrue(b'BDFL' in output) + self.assertIn(b'BDFL', output) def test_check_output_nonzero(self): # check_call() function with non-zero return code @@ -94,7 +94,7 @@ output = subprocess.check_output( [sys.executable, "-c", "import sys; sys.stderr.write('BDFL')"], stderr=subprocess.STDOUT) - self.assertTrue(b'BDFL' in output) + self.assertIn(b'BDFL', output) def test_check_output_stdout_arg(self): # check_output() function stderr redirected to stdout @@ -103,7 +103,7 @@ [sys.executable, "-c", "print('will not be run')"], stdout=sys.stdout) except ValueError as e: - self.assertTrue('stdout' in e.args[0]) + self.assertIn('stdout', e.args[0]) else: self.fail("Expected ValueError when stdout arg supplied.") Modified: python/branches/py3k-cdecimal/Lib/test/test_sys.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_sys.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_sys.py Thu Jan 21 20:32:23 2010 @@ -318,8 +318,8 @@ d = sys._current_frames() main_id = _thread.get_ident() - self.assertTrue(main_id in d) - self.assertTrue(thread_id in d) + self.assertIn(main_id, d) + self.assertIn(thread_id, d) # Verify that the captured main-thread frame is _this_ frame. frame = d.pop(main_id) @@ -341,7 +341,7 @@ # And the next record must be for g456(). filename, lineno, funcname, sourceline = stack[i+1] self.assertEqual(funcname, "g456") - self.assertTrue(sourceline in ["leave_g.wait()", "entered_g.set()"]) + self.assertIn(sourceline, ["leave_g.wait()", "entered_g.set()"]) # Reap the spawned thread. leave_g.set() @@ -353,13 +353,13 @@ # "thread id" 0. d = sys._current_frames() self.assertEqual(len(d), 1) - self.assertTrue(0 in d) + self.assertIn(0, d) self.assertTrue(d[0] is sys._getframe()) def test_attributes(self): self.assertTrue(isinstance(sys.api_version, int)) self.assertTrue(isinstance(sys.argv, list)) - self.assertTrue(sys.byteorder in ("little", "big")) + self.assertIn(sys.byteorder, ("little", "big")) self.assertTrue(isinstance(sys.builtin_module_names, tuple)) self.assertTrue(isinstance(sys.copyright, str)) self.assertTrue(isinstance(sys.exec_prefix, str)) @@ -383,7 +383,7 @@ self.assertTrue(isinstance(vi[0], int)) self.assertTrue(isinstance(vi[1], int)) self.assertTrue(isinstance(vi[2], int)) - self.assertTrue(vi[3] in ("alpha", "beta", "candidate", "final")) + self.assertIn(vi[3], ("alpha", "beta", "candidate", "final")) self.assertTrue(isinstance(vi[4], int)) self.assertTrue(isinstance(vi.major, int)) self.assertTrue(isinstance(vi.minor, int)) @@ -398,7 +398,7 @@ self.assertEqual(vi[4], vi.serial) self.assertTrue(vi > (1,0,0)) self.assertIsInstance(sys.float_repr_style, str) - self.assertTrue(sys.float_repr_style in ('short', 'legacy')) + self.assertIn(sys.float_repr_style, ('short', 'legacy')) def test_43581(self): # Can't use sys.stdout, as this is a StringIO object when Modified: python/branches/py3k-cdecimal/Lib/test/test_tarfile.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_tarfile.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_tarfile.py Thu Jan 21 20:32:23 2010 @@ -485,7 +485,7 @@ def test_find_ustar_longname(self): name = "ustar/" + "12345/" * 39 + "1234567/longname" - self.assertTrue(name in self.tar.getnames()) + self.assertIn(name, self.tar.getnames()) def test_find_regtype_oldv7(self): tarinfo = self.tar.getmember("misc/regtype-old-v7") Modified: python/branches/py3k-cdecimal/Lib/test/test_telnetlib.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_telnetlib.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_telnetlib.py Thu Jan 21 20:32:23 2010 @@ -284,7 +284,7 @@ txt = telnet.read_all() cmd = nego.seen self.assertTrue(len(cmd) > 0) # we expect at least one command - self.assertTrue(cmd[:1] in self.cmds) + self.assertIn(cmd[:1], self.cmds) self.assertEqual(cmd[1:2], tl.NOOPT) self.assertEqual(data_len, len(txt + cmd)) nego.sb_getter = None # break the nego => telnet cycle @@ -331,7 +331,7 @@ telnet = test_telnet([a]) telnet.set_debuglevel(1) txt = telnet.read_all() - self.assertTrue(b in telnet._messages) + self.assertIn(b, telnet._messages) return def test_debuglevel_write(self): @@ -339,7 +339,7 @@ telnet.set_debuglevel(1) telnet.write(b'xxx') expected = "send b'xxx'\n" - self.assertTrue(expected in telnet._messages) + self.assertIn(expected, telnet._messages) def test_main(verbose=None): support.run_unittest(GeneralTests, ReadTests, WriteTests, OptionTests) Modified: python/branches/py3k-cdecimal/Lib/test/test_tempfile.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_tempfile.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_tempfile.py Thu Jan 21 20:32:23 2010 @@ -160,14 +160,14 @@ for envname in 'TMPDIR', 'TEMP', 'TMP': dirname = os.getenv(envname) if not dirname: raise ValueError - self.assertTrue(dirname in cand) + self.assertIn(dirname, cand) try: dirname = os.getcwd() except (AttributeError, os.error): dirname = os.curdir - self.assertTrue(dirname in cand) + self.assertIn(dirname, cand) # Not practical to try to verify the presence of OS-specific # paths in this list. Modified: python/branches/py3k-cdecimal/Lib/test/test_threading.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_threading.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_threading.py Thu Jan 21 20:32:23 2010 @@ -153,7 +153,7 @@ tid = _thread.start_new_thread(f, (mutex,)) # Wait for the thread to finish. mutex.acquire() - self.assertTrue(tid in threading._active) + self.assertIn(tid, threading._active) self.assertTrue(isinstance(threading._active[tid], threading._DummyThread)) del threading._active[tid] Modified: python/branches/py3k-cdecimal/Lib/test/test_threading_local.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_threading_local.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_threading_local.py Thu Jan 21 20:32:23 2010 @@ -40,7 +40,7 @@ local.someothervar = None gc.collect() deadlist = [weak for weak in weaklist if weak() is None] - self.assertTrue(len(deadlist) in (n-1, n), (n, len(deadlist))) + self.assertIn(len(deadlist), (n-1, n), (n, len(deadlist))) def test_derived(self): # Issue 3088: if there is a threads switch inside the __init__ Modified: python/branches/py3k-cdecimal/Lib/test/test_traceback.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_traceback.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_traceback.py Thu Jan 21 20:32:23 2010 @@ -41,12 +41,12 @@ SyntaxError) self.assertEqual(len(err), 4) self.assertTrue(err[1].strip() == "return x!") - self.assertTrue("^" in err[2]) # third line has caret + self.assertIn("^", err[2]) # third line has caret self.assertEqual(err[1].find("!"), err[2].find("^")) # in the right place err = self.get_exception_format(self.syntax_error_with_caret_2, SyntaxError) - self.assertTrue("^" in err[2]) # third line has caret + self.assertIn("^", err[2]) # third line has caret self.assertTrue(err[2].count('\n') == 1) # and no additional newline self.assertTrue(err[1].find("+") == err[2].find("^")) # in the right place @@ -64,7 +64,7 @@ IndentationError) self.assertEqual(len(err), 4) self.assertEqual(err[1].strip(), "print(2)") - self.assertTrue("^" in err[2]) + self.assertIn("^", err[2]) self.assertEqual(err[1].find(")"), err[2].find("^")) def test_base_exception(self): @@ -210,7 +210,7 @@ def check_zero_div(self, msg): lines = msg.splitlines() self.assertTrue(lines[-3].startswith(' File')) - self.assertTrue('1/0 # In zero_div' in lines[-2], lines[-2]) + self.assertIn('1/0 # In zero_div', lines[-2]) self.assertTrue(lines[-1].startswith('ZeroDivisionError'), lines[-1]) def test_simple(self): @@ -222,7 +222,7 @@ self.assertEquals(len(lines), 4) self.assertTrue(lines[0].startswith('Traceback')) self.assertTrue(lines[1].startswith(' File')) - self.assertTrue('1/0 # Marker' in lines[2]) + self.assertIn('1/0 # Marker', lines[2]) self.assertTrue(lines[3].startswith('ZeroDivisionError')) def test_cause(self): @@ -237,7 +237,7 @@ self.assertEquals(len(blocks), 3) self.assertEquals(blocks[1], cause_message) self.check_zero_div(blocks[0]) - self.assertTrue('inner_raise() # Marker' in blocks[2]) + self.assertIn('inner_raise() # Marker', blocks[2]) def test_context(self): def inner_raise(): @@ -251,7 +251,7 @@ self.assertEquals(len(blocks), 3) self.assertEquals(blocks[1], context_message) self.check_zero_div(blocks[0]) - self.assertTrue('inner_raise() # Marker' in blocks[2]) + self.assertIn('inner_raise() # Marker', blocks[2]) def test_cause_and_context(self): # When both a cause and a context are set, only the cause should be @@ -289,11 +289,11 @@ self.assertEquals(len(blocks), 3) self.assertEquals(blocks[1], cause_message) # The first block is the KeyError raised from the ZeroDivisionError - self.assertTrue('raise KeyError from e' in blocks[0]) - self.assertTrue('1/0' not in blocks[0]) + self.assertIn('raise KeyError from e', blocks[0]) + self.assertNotIn('1/0', blocks[0]) # The second block (apart from the boundary) is the ZeroDivisionError # re-raised from the KeyError - self.assertTrue('inner_raise() # Marker' in blocks[2]) + self.assertIn('inner_raise() # Marker', blocks[2]) self.check_zero_div(blocks[2]) Modified: python/branches/py3k-cdecimal/Lib/test/test_types.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_types.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_types.py Thu Jan 21 20:32:23 2010 @@ -434,13 +434,13 @@ result = f.__format__(fmt) self.assertEqual(len(result), 98) self.assertEqual(result[-7], '.') - self.assertTrue(result[:12] in ('112340000000', '112339999999')) + self.assertIn(result[:12], ('112340000000', '112339999999')) f = 1.1234e200 for fmt in 'f', 'F': result = f.__format__(fmt) self.assertEqual(len(result), 208) self.assertEqual(result[-7], '.') - self.assertTrue(result[:12] in ('112340000000', '112339999999')) + self.assertIn(result[:12], ('112340000000', '112339999999')) test( 1.0, 'e', '1.000000e+00') Modified: python/branches/py3k-cdecimal/Lib/test/test_unicode.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_unicode.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_unicode.py Thu Jan 21 20:32:23 2010 @@ -436,32 +436,32 @@ def test_contains(self): # Testing Unicode contains method - self.assertTrue('a' in 'abdb') - self.assertTrue('a' in 'bdab') - self.assertTrue('a' in 'bdaba') - self.assertTrue('a' in 'bdba') - self.assertTrue('a' not in 'bdb') - self.assertTrue('a' in 'bdba') - self.assertTrue('a' in ('a',1,None)) - self.assertTrue('a' in (1,None,'a')) - self.assertTrue('a' in ('a',1,None)) - self.assertTrue('a' in (1,None,'a')) - self.assertTrue('a' not in ('x',1,'y')) - self.assertTrue('a' not in ('x',1,None)) - self.assertTrue('abcd' not in 'abcxxxx') - self.assertTrue('ab' in 'abcd') - self.assertTrue('ab' in 'abc') - self.assertTrue('ab' in (1,None,'ab')) - self.assertTrue('' in 'abc') - self.assertTrue('' in '') - self.assertTrue('' in 'abc') - self.assertTrue('\0' not in 'abc') - self.assertTrue('\0' in '\0abc') - self.assertTrue('\0' in 'abc\0') - self.assertTrue('a' in '\0abc') - self.assertTrue('asdf' in 'asdf') - self.assertTrue('asdf' not in 'asd') - self.assertTrue('asdf' not in '') + self.assertIn('a', 'abdb') + self.assertIn('a', 'bdab') + self.assertIn('a', 'bdaba') + self.assertIn('a', 'bdba') + self.assertNotIn('a', 'bdb') + self.assertIn('a', 'bdba') + self.assertIn('a', ('a',1,None)) + self.assertIn('a', (1,None,'a')) + self.assertIn('a', ('a',1,None)) + self.assertIn('a', (1,None,'a')) + self.assertNotIn('a', ('x',1,'y')) + self.assertNotIn('a', ('x',1,None)) + self.assertNotIn('abcd', 'abcxxxx') + self.assertIn('ab', 'abcd') + self.assertIn('ab', 'abc') + self.assertIn('ab', (1,None,'ab')) + self.assertIn('', 'abc') + self.assertIn('', '') + self.assertIn('', 'abc') + self.assertNotIn('\0', 'abc') + self.assertIn('\0', '\0abc') + self.assertIn('\0', 'abc\0') + self.assertIn('a', '\0abc') + self.assertIn('asdf', 'asdf') + self.assertNotIn('asdf', 'asd') + self.assertNotIn('asdf', '') self.assertRaises(TypeError, "abc".__contains__) Modified: python/branches/py3k-cdecimal/Lib/test/test_unicode_file.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_unicode_file.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_unicode_file.py Thu Jan 21 20:32:23 2010 @@ -47,7 +47,7 @@ base = unicodedata.normalize("NFD", base) file_list = [unicodedata.normalize("NFD", f) for f in file_list] - self.assertTrue(base in file_list) + self.assertIn(base, file_list) # Do as many "equivalancy' tests as we can - ie, check that although we # have different types for the filename, they refer to the same file. Modified: python/branches/py3k-cdecimal/Lib/test/test_unicodedata.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_unicodedata.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_unicodedata.py Thu Jan 21 20:32:23 2010 @@ -220,7 +220,7 @@ self.assertEqual(popen.returncode, 1) error = "SyntaxError: (unicode error) \\N escapes not supported " \ "(can't load unicodedata module)" - self.assertTrue(error in popen.stderr.read().decode("ascii")) + self.assertIn(error, popen.stderr.read().decode("ascii")) def test_decimal_numeric_consistent(self): # Test that decimal and numeric are consistent, Modified: python/branches/py3k-cdecimal/Lib/test/test_unittest.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_unittest.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_unittest.py Thu Jan 21 20:32:23 2010 @@ -636,7 +636,7 @@ self.assertEqual(list(suite), []) # audioop should now be loaded, thanks to loadTestsFromName() - self.assertTrue(module_name in sys.modules) + self.assertIn(module_name, sys.modules) finally: if module_name in sys.modules: del sys.modules[module_name] @@ -1024,7 +1024,7 @@ self.assertEqual(list(suite), [unittest.TestSuite()]) # audioop should now be loaded, thanks to loadTestsFromName() - self.assertTrue(module_name in sys.modules) + self.assertIn(module_name, sys.modules) finally: if module_name in sys.modules: del sys.modules[module_name] Modified: python/branches/py3k-cdecimal/Lib/test/test_urllib.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_urllib.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_urllib.py Thu Jan 21 20:32:23 2010 @@ -119,6 +119,10 @@ def setUp(self): # Records changes to env vars self.env = support.EnvironmentVarGuard() + # Delete all proxy related env vars + for k in os.environ.keys(): + if 'proxy' in k.lower(): + self.env.unset(k) def tearDown(self): # Restore all proxy related env vars Modified: python/branches/py3k-cdecimal/Lib/test/test_urllib2.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_urllib2.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_urllib2.py Thu Jan 21 20:32:23 2010 @@ -21,14 +21,17 @@ # XXX Name hacking to get this to work on Windows. fname = os.path.abspath(urllib.request.__file__).replace('\\', '/') - if fname[1:2] == ":": - fname = fname[2:] + # And more hacking to get it to work on MacOS. This assumes # urllib.pathname2url works, unfortunately... if os.name == 'mac': fname = '/' + fname.replace(':', '/') - file_url = "file://%s" % fname + if os.name == 'nt': + file_url = "file:///%s" % fname + else: + file_url = "file://%s" % fname + f = urllib.request.urlopen(file_url) buf = f.read() @@ -784,8 +787,8 @@ r = MockResponse(200, "OK", {}, "") newreq = h.do_request_(req) if data is None: # GET - self.assertTrue("Content-length" not in req.unredirected_hdrs) - self.assertTrue("Content-type" not in req.unredirected_hdrs) + self.assertNotIn("Content-length", req.unredirected_hdrs) + self.assertNotIn("Content-type", req.unredirected_hdrs) else: # POST self.assertEqual(req.unredirected_hdrs["Content-length"], "0") self.assertEqual(req.unredirected_hdrs["Content-type"], @@ -904,13 +907,13 @@ # now it's a GET, there should not be headers regarding content # (possibly dragged from before being a POST) headers = [x.lower() for x in o.req.headers] - self.assertTrue("content-length" not in headers) - self.assertTrue("content-type" not in headers) + self.assertNotIn("content-length", headers) + self.assertNotIn("content-type", headers) self.assertEqual(o.req.headers["Nonsense"], "viking=withhold") - self.assertTrue("Spam" not in o.req.headers) - self.assertTrue("Spam" not in o.req.unredirected_hdrs) + self.assertNotIn("Spam", o.req.headers) + self.assertNotIn("Spam", o.req.unredirected_hdrs) # loop detection req = Request(from_url) Modified: python/branches/py3k-cdecimal/Lib/test/test_userdict.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_userdict.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_userdict.py Thu Jan 21 20:32:23 2010 @@ -95,7 +95,7 @@ # Test "in". for i in u2.keys(): - self.assertTrue(i in u2) + self.assertIn(i, u2) self.assertEqual(i in u1, i in d1) self.assertEqual(i in u0, i in d0) @@ -122,7 +122,7 @@ # Test setdefault t = collections.UserDict() self.assertEqual(t.setdefault("x", 42), 42) - self.assertTrue("x" in t) + self.assertIn("x", t) self.assertEqual(t.setdefault("x", 23), 42) # Test pop @@ -152,8 +152,8 @@ d = D({1: 2, 3: 4}) self.assertEqual(d[1], 2) self.assertEqual(d[3], 4) - self.assertTrue(2 not in d) - self.assertTrue(2 not in d.keys()) + self.assertNotIn(2, d) + self.assertNotIn(2, d.keys()) self.assertEqual(d[2], 42) class E(collections.UserDict): def __missing__(self, key): Modified: python/branches/py3k-cdecimal/Lib/test/test_warnings.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_warnings.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_warnings.py Thu Jan 21 20:32:23 2010 @@ -483,7 +483,7 @@ with support.captured_output('stderr') as stream: self.module.warn(text) result = stream.getvalue() - self.assertTrue(text in result) + self.assertIn(text, result) def test_showwarning_not_callable(self): with original_warnings.catch_warnings(module=self.module): Modified: python/branches/py3k-cdecimal/Lib/test/test_wave.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_wave.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_wave.py Thu Jan 21 20:32:23 2010 @@ -1,6 +1,7 @@ from test.support import TESTFN, run_unittest import os import wave +import struct import unittest nchannels = 2 @@ -38,6 +39,16 @@ self.assertEqual(nframes, self.f.getnframes()) self.assertEqual(self.f.readframes(nframes), output) + def test_issue7681(self): + self.f = wave.open(TESTFN, 'wb') + self.f.setnchannels(nchannels) + self.f.setsampwidth(sampwidth) + self.f.setframerate(framerate) + # Don't call setnframes, make _write_header divide to figure it out + output = b'\0' * nframes * nchannels * sampwidth + self.f.writeframes(output) + + def test_main(): run_unittest(TestWave) Modified: python/branches/py3k-cdecimal/Lib/test/test_weakref.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_weakref.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_weakref.py Thu Jan 21 20:32:23 2010 @@ -4,6 +4,8 @@ import collections import weakref import operator +import contextlib +import copy from test import support @@ -191,7 +193,7 @@ def __bytes__(self): return b"bytes" instance = C() - self.assertTrue("__bytes__" in dir(weakref.proxy(instance))) + self.assertIn("__bytes__", dir(weakref.proxy(instance))) self.assertEqual(bytes(weakref.proxy(instance)), b"bytes") def test_proxy_index(self): @@ -713,8 +715,8 @@ refs = weakref.getweakrefs(o) self.assertEqual(len(refs), 3) self.assertTrue(r2 is refs[0]) - self.assertTrue(r1 in refs[1:]) - self.assertTrue(r3 in refs[1:]) + self.assertIn(r1, refs[1:]) + self.assertIn(r3, refs[1:]) def test_subclass_refs_dont_conflate_callbacks(self): class MyRef(weakref.ref): @@ -724,8 +726,8 @@ r2 = MyRef(o, str) self.assertTrue(r1 is not r2) refs = weakref.getweakrefs(o) - self.assertTrue(r1 in refs) - self.assertTrue(r2 in refs) + self.assertIn(r1, refs) + self.assertIn(r2, refs) def test_subclass_refs_with_slots(self): class MyRef(weakref.ref): @@ -788,6 +790,10 @@ self.arg = arg def __repr__(self): return "" % self.arg + def __eq__(self, other): + if isinstance(other, Object): + return self.arg == other.arg + return NotImplemented def __lt__(self, other): if isinstance(other, Object): return self.arg < other.arg @@ -854,8 +860,8 @@ "deleting the keys did not clear the dictionary") o = Object(42) dict[o] = "What is the meaning of the universe?" - self.assertTrue(o in dict) - self.assertTrue(34 not in dict) + self.assertIn(o, dict) + self.assertNotIn(34, dict) def test_weak_keyed_iters(self): dict, objects = self.make_weak_keyed_dict() @@ -867,8 +873,8 @@ objects2 = list(objects) for wr in refs: ob = wr() - self.assertTrue(ob in dict) - self.assertTrue(ob in dict) + self.assertIn(ob, dict) + self.assertIn(ob, dict) self.assertEqual(ob.arg, dict[ob]) objects2.remove(ob) self.assertEqual(len(objects2), 0) @@ -878,8 +884,8 @@ self.assertEqual(len(list(dict.keyrefs())), len(objects)) for wr in dict.keyrefs(): ob = wr() - self.assertTrue(ob in dict) - self.assertTrue(ob in dict) + self.assertIn(ob, dict) + self.assertIn(ob, dict) self.assertEqual(ob.arg, dict[ob]) objects2.remove(ob) self.assertEqual(len(objects2), 0) @@ -935,6 +941,87 @@ self.assertFalse(values, "itervalues() did not touch all values") + def check_weak_destroy_while_iterating(self, dict, objects, iter_name): + n = len(dict) + it = iter(getattr(dict, iter_name)()) + next(it) # Trigger internal iteration + # Destroy an object + del objects[-1] + gc.collect() # just in case + # We have removed either the first consumed object, or another one + self.assertIn(len(list(it)), [len(objects), len(objects) - 1]) + del it + # The removal has been committed + self.assertEqual(len(dict), n - 1) + + def check_weak_destroy_and_mutate_while_iterating(self, dict, testcontext): + # Check that we can explicitly mutate the weak dict without + # interfering with delayed removal. + # `testcontext` should create an iterator, destroy one of the + # weakref'ed objects and then return a new key/value pair corresponding + # to the destroyed object. + with testcontext() as (k, v): + self.assertFalse(k in dict) + with testcontext() as (k, v): + self.assertRaises(KeyError, dict.__delitem__, k) + self.assertFalse(k in dict) + with testcontext() as (k, v): + self.assertRaises(KeyError, dict.pop, k) + self.assertFalse(k in dict) + with testcontext() as (k, v): + dict[k] = v + self.assertEqual(dict[k], v) + ddict = copy.copy(dict) + with testcontext() as (k, v): + dict.update(ddict) + self.assertEqual(dict, ddict) + with testcontext() as (k, v): + dict.clear() + self.assertEqual(len(dict), 0) + + def test_weak_keys_destroy_while_iterating(self): + # Issue #7105: iterators shouldn't crash when a key is implicitly removed + dict, objects = self.make_weak_keyed_dict() + self.check_weak_destroy_while_iterating(dict, objects, 'keys') + self.check_weak_destroy_while_iterating(dict, objects, 'items') + self.check_weak_destroy_while_iterating(dict, objects, 'values') + self.check_weak_destroy_while_iterating(dict, objects, 'keyrefs') + dict, objects = self.make_weak_keyed_dict() + @contextlib.contextmanager + def testcontext(): + try: + it = iter(dict.items()) + next(it) + # Schedule a key/value for removal and recreate it + v = objects.pop().arg + gc.collect() # just in case + yield Object(v), v + finally: + it = None # should commit all removals + self.check_weak_destroy_and_mutate_while_iterating(dict, testcontext) + + def test_weak_values_destroy_while_iterating(self): + # Issue #7105: iterators shouldn't crash when a key is implicitly removed + dict, objects = self.make_weak_valued_dict() + self.check_weak_destroy_while_iterating(dict, objects, 'keys') + self.check_weak_destroy_while_iterating(dict, objects, 'items') + self.check_weak_destroy_while_iterating(dict, objects, 'values') + self.check_weak_destroy_while_iterating(dict, objects, 'itervaluerefs') + self.check_weak_destroy_while_iterating(dict, objects, 'valuerefs') + dict, objects = self.make_weak_valued_dict() + @contextlib.contextmanager + def testcontext(): + try: + it = iter(dict.items()) + next(it) + # Schedule a key/value for removal and recreate it + k = objects.pop().arg + gc.collect() # just in case + yield k, Object(k) + finally: + it = None # should commit all removals + self.check_weak_destroy_and_mutate_while_iterating(dict, testcontext) + def test_make_weak_keyed_dict_from_dict(self): o = Object(3) dict = weakref.WeakKeyDictionary({o:364}) @@ -1004,13 +1091,13 @@ weakdict = klass() o = weakdict.setdefault(key, value1) self.assertTrue(o is value1) - self.assertTrue(key in weakdict) + self.assertIn(key, weakdict) self.assertTrue(weakdict.get(key) is value1) self.assertTrue(weakdict[key] is value1) o = weakdict.setdefault(key, value2) self.assertTrue(o is value1) - self.assertTrue(key in weakdict) + self.assertIn(key, weakdict) self.assertTrue(weakdict.get(key) is value1) self.assertTrue(weakdict[key] is value1) Modified: python/branches/py3k-cdecimal/Lib/test/test_weakset.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_weakset.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_weakset.py Thu Jan 21 20:32:23 2010 @@ -10,6 +10,8 @@ import warnings import collections from collections import UserString as ustr +import gc +import contextlib class Foo: @@ -49,9 +51,9 @@ for c in self.letters: self.assertEqual(c in self.s, c in self.d) self.assertRaises(TypeError, self.s.__contains__, [[]]) - self.assertTrue(self.obj in self.fs) + self.assertIn(self.obj, self.fs) del self.obj - self.assertTrue(ustr('F') not in self.fs) + self.assertNotIn(ustr('F'), self.fs) def test_union(self): u = self.s.union(self.items2) @@ -148,7 +150,7 @@ s=H() f=set() f.add(s) - self.assertTrue(s in f) + self.assertIn(s, f) f.remove(s) f.add(s) f.discard(s) @@ -183,7 +185,7 @@ def test_add(self): x = ustr('Q') self.s.add(x) - self.assertTrue(x in self.s) + self.assertIn(x, self.s) dup = self.s.copy() self.s.add(x) self.assertEqual(self.s, dup) @@ -196,66 +198,66 @@ def test_remove(self): x = ustr('a') self.s.remove(x) - self.assertTrue(x not in self.s) + self.assertNotIn(x, self.s) self.assertRaises(KeyError, self.s.remove, x) self.assertRaises(TypeError, self.s.remove, []) def test_discard(self): a, q = ustr('a'), ustr('Q') self.s.discard(a) - self.assertTrue(a not in self.s) + self.assertNotIn(a, self.s) self.s.discard(q) self.assertRaises(TypeError, self.s.discard, []) def test_pop(self): for i in range(len(self.s)): elem = self.s.pop() - self.assertTrue(elem not in self.s) + self.assertNotIn(elem, self.s) self.assertRaises(KeyError, self.s.pop) def test_update(self): retval = self.s.update(self.items2) self.assertEqual(retval, None) for c in (self.items + self.items2): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) self.assertRaises(TypeError, self.s.update, [[]]) def test_update_set(self): self.s.update(set(self.items2)) for c in (self.items + self.items2): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) def test_ior(self): self.s |= set(self.items2) for c in (self.items + self.items2): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) def test_intersection_update(self): retval = self.s.intersection_update(self.items2) self.assertEqual(retval, None) for c in (self.items + self.items2): if c in self.items2 and c in self.items: - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) self.assertRaises(TypeError, self.s.intersection_update, [[]]) def test_iand(self): self.s &= set(self.items2) for c in (self.items + self.items2): if c in self.items2 and c in self.items: - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) def test_difference_update(self): retval = self.s.difference_update(self.items2) self.assertEqual(retval, None) for c in (self.items + self.items2): if c in self.items and c not in self.items2: - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) self.assertRaises(TypeError, self.s.difference_update, [[]]) self.assertRaises(TypeError, self.s.symmetric_difference_update, [[]]) @@ -263,27 +265,27 @@ self.s -= set(self.items2) for c in (self.items + self.items2): if c in self.items and c not in self.items2: - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) def test_symmetric_difference_update(self): retval = self.s.symmetric_difference_update(self.items2) self.assertEqual(retval, None) for c in (self.items + self.items2): if (c in self.items) ^ (c in self.items2): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) self.assertRaises(TypeError, self.s.symmetric_difference_update, [[]]) def test_ixor(self): self.s ^= set(self.items2) for c in (self.items + self.items2): if (c in self.items) ^ (c in self.items2): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) def test_inplace_on_self(self): t = self.s.copy() @@ -307,6 +309,54 @@ self.assertFalse(self.s == WeakSet([Foo])) self.assertFalse(self.s == 1) + def test_weak_destroy_while_iterating(self): + # Issue #7105: iterators shouldn't crash when a key is implicitly removed + # Create new items to be sure no-one else holds a reference + items = [ustr(c) for c in ('a', 'b', 'c')] + s = WeakSet(items) + it = iter(s) + next(it) # Trigger internal iteration + # Destroy an item + del items[-1] + gc.collect() # just in case + # We have removed either the first consumed items, or another one + self.assertIn(len(list(it)), [len(items), len(items) - 1]) + del it + # The removal has been committed + self.assertEqual(len(s), len(items)) + + def test_weak_destroy_and_mutate_while_iterating(self): + # Issue #7105: iterators shouldn't crash when a key is implicitly removed + items = [ustr(c) for c in string.ascii_letters] + s = WeakSet(items) + @contextlib.contextmanager + def testcontext(): + try: + it = iter(s) + next(it) + # Schedule an item for removal and recreate it + u = ustr(str(items.pop())) + gc.collect() # just in case + yield u + finally: + it = None # should commit all removals + + with testcontext() as u: + self.assertFalse(u in s) + with testcontext() as u: + self.assertRaises(KeyError, s.remove, u) + self.assertFalse(u in s) + with testcontext() as u: + s.add(u) + self.assertIn(u, s) + t = s.copy() + with testcontext() as u: + s.update(t) + self.assertEqual(len(s), len(t)) + with testcontext() as u: + s.clear() + self.assertEqual(len(s), 0) + def test_main(verbose=None): support.run_unittest(TestWeakSet) Modified: python/branches/py3k-cdecimal/Lib/test/test_wsgiref.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_wsgiref.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_wsgiref.py Thu Jan 21 20:32:23 2010 @@ -440,7 +440,7 @@ h.get("content-disposition")) del h['content-disposition'] - self.assertTrue(b'content-disposition' not in h) + self.assertNotIn(b'content-disposition', h) class ErrorHandler(BaseCGIHandler): @@ -493,7 +493,7 @@ if k not in empty: self.assertEqual(env[k],v) for k,v in empty.items(): - self.assertTrue(k in env) + self.assertIn(k, env) def testEnviron(self): h = TestHandler(X="Y") @@ -506,7 +506,7 @@ h = BaseCGIHandler(None,None,None,{}) h.setup_environ() for key in 'wsgi.url_scheme', 'wsgi.input', 'wsgi.errors': - self.assertTrue(key in h.environ) + self.assertIn(key, h.environ) def testScheme(self): h=TestHandler(HTTPS="on"); h.setup_environ() @@ -593,7 +593,7 @@ "\r\n%s" % (h.error_status,len(h.error_body),h.error_body) ).encode("iso-8859-1")) - self.assertTrue("AssertionError" in h.stderr.getvalue()) + self.assertIn("AssertionError", h.stderr.getvalue()) def testErrorAfterOutput(self): MSG = "Some output has been sent" @@ -606,7 +606,7 @@ self.assertEqual(h.stdout.getvalue(), ("Status: 200 OK\r\n" "\r\n"+MSG).encode("iso-8859-1")) - self.assertTrue("AssertionError" in h.stderr.getvalue()) + self.assertIn("AssertionError", h.stderr.getvalue()) def testHeaderFormats(self): Modified: python/branches/py3k-cdecimal/Lib/test/test_zipfile.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_zipfile.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_zipfile.py Thu Jan 21 20:32:23 2010 @@ -63,9 +63,9 @@ lines = directory.splitlines() self.assertEqual(len(lines), 4) # Number of files + header - self.assertTrue('File Name' in lines[0]) - self.assertTrue('Modified' in lines[0]) - self.assertTrue('Size' in lines[0]) + self.assertIn('File Name', lines[0]) + self.assertIn('Modified', lines[0]) + self.assertIn('Size', lines[0]) fn, date, time_, size = lines[1].split() self.assertEqual(fn, 'another.name') @@ -76,17 +76,17 @@ # Check the namelist names = zipfp.namelist() self.assertEqual(len(names), 3) - self.assertTrue(TESTFN in names) - self.assertTrue("another.name" in names) - self.assertTrue("strfile" in names) + self.assertIn(TESTFN, names) + self.assertIn("another.name", names) + self.assertIn("strfile", names) # Check infolist infos = zipfp.infolist() names = [i.filename for i in infos] self.assertEqual(len(names), 3) - self.assertTrue(TESTFN in names) - self.assertTrue("another.name" in names) - self.assertTrue("strfile" in names) + self.assertIn(TESTFN, names) + self.assertIn("another.name", names) + self.assertIn("strfile", names) for i in infos: self.assertEqual(i.file_size, len(self.data)) @@ -459,9 +459,9 @@ lines = directory.splitlines() self.assertEqual(len(lines), 4) # Number of files + header - self.assertTrue('File Name' in lines[0]) - self.assertTrue('Modified' in lines[0]) - self.assertTrue('Size' in lines[0]) + self.assertIn('File Name', lines[0]) + self.assertIn('Modified', lines[0]) + self.assertIn('Size', lines[0]) fn, date, time_, size = lines[1].split() self.assertEqual(fn, 'another.name') @@ -472,17 +472,17 @@ # Check the namelist names = zipfp.namelist() self.assertEqual(len(names), 3) - self.assertTrue(TESTFN in names) - self.assertTrue("another.name" in names) - self.assertTrue("strfile" in names) + self.assertIn(TESTFN, names) + self.assertIn("another.name", names) + self.assertIn("strfile", names) # Check infolist infos = zipfp.infolist() names = [i.filename for i in infos] self.assertEqual(len(names), 3) - self.assertTrue(TESTFN in names) - self.assertTrue("another.name" in names) - self.assertTrue("strfile" in names) + self.assertIn(TESTFN, names) + self.assertIn("another.name", names) + self.assertIn("strfile", names) for i in infos: self.assertEqual(i.file_size, len(self.data)) @@ -528,7 +528,7 @@ zipfp.writepy(fn) bn = os.path.basename(fn) - self.assertTrue(bn not in zipfp.namelist()) + self.assertNotIn(bn, zipfp.namelist()) self.assertTrue(bn + 'o' in zipfp.namelist() or bn + 'c' in zipfp.namelist()) @@ -540,7 +540,7 @@ zipfp.writepy(fn, "testpackage") bn = "%s/%s" % ("testpackage", os.path.basename(fn)) - self.assertTrue(bn not in zipfp.namelist()) + self.assertNotIn(bn, zipfp.namelist()) self.assertTrue(bn + 'o' in zipfp.namelist() or bn + 'c' in zipfp.namelist()) @@ -577,7 +577,7 @@ names = zipfp.namelist() self.assertTrue('mod1.pyc' in names or 'mod1.pyo' in names) self.assertTrue('mod2.pyc' in names or 'mod2.pyo' in names) - self.assertTrue('mod2.txt' not in names) + self.assertNotIn('mod2.txt', names) finally: shutil.rmtree(TESTFN2) Modified: python/branches/py3k-cdecimal/Lib/test/test_zipimport.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_zipimport.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_zipimport.py Thu Jan 21 20:32:23 2010 @@ -294,7 +294,7 @@ z.close() zi = zipimport.zipimporter(TEMP_ZIP) self.assertEquals(data, zi.get_data(name)) - self.assertTrue('zipimporter object' in repr(zi)) + self.assertIn('zipimporter object', repr(zi)) finally: z.close() os.remove(TEMP_ZIP) Modified: python/branches/py3k-cdecimal/Lib/test/test_zipimport_support.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_zipimport_support.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_zipimport_support.py Thu Jan 21 20:32:23 2010 @@ -185,7 +185,7 @@ print ("Expected line", expected) print ("Got stdout:") print (data) - self.assertTrue(expected.encode('utf-8') in data) + self.assertIn(expected.encode('utf-8'), data) zip_name, run_name = make_zip_script(d, "test_zip", script_name, '__main__.py') exit_code, data = run_python(zip_name) @@ -194,7 +194,7 @@ print ("Expected line", expected) print ("Got stdout:") print (data) - self.assertTrue(expected.encode('utf-8') in data) + self.assertIn(expected.encode('utf-8'), data) def test_pdb_issue4201(self): test_src = textwrap.dedent("""\ @@ -209,13 +209,13 @@ p = spawn_python(script_name) p.stdin.write(b'l\n') data = kill_python(p) - self.assertTrue(script_name.encode('utf-8') in data) + self.assertIn(script_name.encode('utf-8'), data) zip_name, run_name = make_zip_script(d, "test_zip", script_name, '__main__.py') p = spawn_python(zip_name) p.stdin.write(b'l\n') data = kill_python(p) - self.assertTrue(run_name.encode('utf-8') in data) + self.assertIn(run_name.encode('utf-8'), data) def test_main(): Modified: python/branches/py3k-cdecimal/Lib/turtle.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/turtle.py (original) +++ python/branches/py3k-cdecimal/Lib/turtle.py Thu Jan 21 20:32:23 2010 @@ -2,7 +2,7 @@ # turtle.py: a Tkinter based turtle graphics module for Python # Version 1.1b - 4. 5. 2009 # -# Copyright (C) 2006 - 2009 Gregor Lingl +# Copyright (C) 2006 - 2010 Gregor Lingl # email: glingl at aon.at # # This software is provided 'as-is', without any express or implied Modified: python/branches/py3k-cdecimal/Lib/unittest/__init__.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/unittest/__init__.py (original) +++ python/branches/py3k-cdecimal/Lib/unittest/__init__.py Thu Jan 21 20:32:23 2010 @@ -27,7 +27,7 @@ http://docs.python.org/library/unittest.html Copyright (c) 1999-2003 Steve Purcell -Copyright (c) 2003-2009 Python Software Foundation +Copyright (c) 2003-2010 Python Software Foundation This module is free software, and you may redistribute it and/or modify it under the same terms as Python itself, so long as this copyright message and disclaimer are retained in their original form. Modified: python/branches/py3k-cdecimal/Lib/wave.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/wave.py (original) +++ python/branches/py3k-cdecimal/Lib/wave.py Thu Jan 21 20:32:23 2010 @@ -240,7 +240,7 @@ data = array.array(_array_fmts[self._sampwidth]) nitems = nframes * self._nchannels if nitems * self._sampwidth > chunk.chunksize - chunk.size_read: - nitems = (chunk.chunksize - chunk.size_read) / self._sampwidth + nitems = (chunk.chunksize - chunk.size_read) // self._sampwidth data.fromfile(chunk.file.file, nitems) # "tell" data chunk how much was read chunk.size_read = chunk.size_read + nitems * self._sampwidth @@ -461,7 +461,7 @@ def _write_header(self, initlength): self._file.write(b'RIFF') if not self._nframes: - self._nframes = initlength / (self._nchannels * self._sampwidth) + self._nframes = initlength // (self._nchannels * self._sampwidth) self._datalength = self._nframes * self._nchannels * self._sampwidth self._form_length_pos = self._file.tell() self._file.write(struct.pack('" % id(self) def __setitem__(self, key, value): + if self._pending_removals: + self._commit_removals() self.data[key] = KeyedRef(value, self._remove, key) def copy(self): @@ -110,24 +128,19 @@ return o def items(self): - L = [] - for key, wr in self.data.items(): - o = wr() - if o is not None: - L.append((key, o)) - return L - - def items(self): - for wr in self.data.values(): - value = wr() - if value is not None: - yield wr.key, value + with _IterationGuard(self): + for k, wr in self.data.items(): + v = wr() + if v is not None: + yield k, v def keys(self): - return iter(self.data.keys()) + with _IterationGuard(self): + for k, wr in self.data.items(): + if wr() is not None: + yield k - def __iter__(self): - return iter(self.data.keys()) + __iter__ = keys def itervaluerefs(self): """Return an iterator that yields the weak references to the values. @@ -139,15 +152,20 @@ keep the values around longer than needed. """ - return self.data.values() + with _IterationGuard(self): + for wr in self.data.values(): + yield wr def values(self): - for wr in self.data.values(): - obj = wr() - if obj is not None: - yield obj + with _IterationGuard(self): + for wr in self.data.values(): + obj = wr() + if obj is not None: + yield obj def popitem(self): + if self._pending_removals: + self._commit_removals() while 1: key, wr = self.data.popitem() o = wr() @@ -155,6 +173,8 @@ return key, o def pop(self, key, *args): + if self._pending_removals: + self._commit_removals() try: o = self.data.pop(key)() except KeyError: @@ -170,12 +190,16 @@ try: wr = self.data[key] except KeyError: + if self._pending_removals: + self._commit_removals() self.data[key] = KeyedRef(default, self._remove, key) return default else: return wr() def update(self, dict=None, **kwargs): + if self._pending_removals: + self._commit_removals() d = self.data if dict is not None: if not hasattr(dict, "items"): @@ -195,7 +219,7 @@ keep the values around longer than needed. """ - return self.data.values() + return list(self.data.values()) class KeyedRef(ref): @@ -235,9 +259,29 @@ def remove(k, selfref=ref(self)): self = selfref() if self is not None: - del self.data[k] + if self._iterating: + self._pending_removals.append(k) + else: + del self.data[k] self._remove = remove - if dict is not None: self.update(dict) + # A list of dead weakrefs (keys to be removed) + self._pending_removals = [] + self._iterating = set() + if dict is not None: + self.update(dict) + + def _commit_removals(self): + # NOTE: We don't need to call this method before mutating the dict, + # because a dead weakref never compares equal to a live weakref, + # even if they happened to refer to equal objects. + # However, it means keys may already have been removed. + l = self._pending_removals + d = self.data + while l: + try: + del d[l.pop()] + except KeyError: + pass def __delitem__(self, key): del self.data[ref(key)] @@ -284,34 +328,26 @@ return wr in self.data def items(self): - for wr, value in self.data.items(): - key = wr() - if key is not None: - yield key, value - - def keyrefs(self): - """Return an iterator that yields the weak references to the keys. - - The references are not guaranteed to be 'live' at the time - they are used, so the result of calling the references needs - to be checked before being used. This can be used to avoid - creating references that will cause the garbage collector to - keep the keys around longer than needed. - - """ - return self.data.keys() + with _IterationGuard(self): + for wr, value in self.data.items(): + key = wr() + if key is not None: + yield key, value def keys(self): - for wr in self.data.keys(): - obj = wr() - if obj is not None: - yield obj + with _IterationGuard(self): + for wr in self.data: + obj = wr() + if obj is not None: + yield obj - def __iter__(self): - return iter(self.keys()) + __iter__ = keys def values(self): - return iter(self.data.values()) + with _IterationGuard(self): + for wr, value in self.data.items(): + if wr() is not None: + yield value def keyrefs(self): """Return a list of weak references to the keys. @@ -323,7 +359,7 @@ keep the keys around longer than needed. """ - return self.data.keys() + return list(self.data) def popitem(self): while 1: Modified: python/branches/py3k-cdecimal/Mac/Resources/app/Info.plist.in ============================================================================== --- python/branches/py3k-cdecimal/Mac/Resources/app/Info.plist.in (original) +++ python/branches/py3k-cdecimal/Mac/Resources/app/Info.plist.in Thu Jan 21 20:32:23 2010 @@ -20,7 +20,7 @@ CFBundleExecutable Python CFBundleGetInfoString - %version%, (c) 2004-2009 Python Software Foundation. + %version%, (c) 2004-2010 Python Software Foundation. CFBundleHelpBookFolder Documentation @@ -37,7 +37,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleLongVersionString - %version%, (c) 2004-2009 Python Software Foundation. + %version%, (c) 2004-2010 Python Software Foundation. CFBundleName Python CFBundlePackageType Modified: python/branches/py3k-cdecimal/Makefile.pre.in ============================================================================== --- python/branches/py3k-cdecimal/Makefile.pre.in (original) +++ python/branches/py3k-cdecimal/Makefile.pre.in Thu Jan 21 20:32:23 2010 @@ -582,6 +582,7 @@ $(srcdir)/Objects/stringlib/fastsearch.h \ $(srcdir)/Objects/stringlib/find.h \ $(srcdir)/Objects/stringlib/partition.h \ + $(srcdir)/Objects/stringlib/split.h \ $(srcdir)/Objects/stringlib/stringdefs.h \ $(srcdir)/Objects/stringlib/string_format.h \ $(srcdir)/Objects/stringlib/transmogrify.h \ Modified: python/branches/py3k-cdecimal/Misc/ACKS ============================================================================== --- python/branches/py3k-cdecimal/Misc/ACKS (original) +++ python/branches/py3k-cdecimal/Misc/ACKS Thu Jan 21 20:32:23 2010 @@ -164,6 +164,7 @@ Drew Csillag John Cugini Tom Culliton +Brian Curtin Lisandro Dalcin Andrew Dalke Lars Damerow Modified: python/branches/py3k-cdecimal/Misc/NEWS ============================================================================== --- python/branches/py3k-cdecimal/Misc/NEWS (original) +++ python/branches/py3k-cdecimal/Misc/NEWS Thu Jan 21 20:32:23 2010 @@ -12,6 +12,31 @@ Core and Builtins ----------------- +- Issue #7561: Operations on empty bytearrays (such as `int(bytearray())`) + could crash in many places because of the PyByteArray_AS_STRING() macro + returning NULL. The macro now returns a statically allocated empty + string instead. + +- Issue #6690: Optimize the bytecode for expressions such as `x in {1, 2, 3}`, + where the right hand operand is a set of constants, by turning the set into + a frozenset and pre-building it as a constant. The comparison operation + is made against the constant instead of building a new set each time it is + executed (a similar optimization already existed which turned a list of + constants into a pre-built tuple). Patch and additional tests by Dave + Malcolm. + +- Issue #7622: Improve the split(), rsplit(), splitlines() and replace() + methods of bytes, bytearray and unicode objects by using a common + implementation based on stringlib's fast search. Patch by Florent Xicluna. + +- Issue #7632: Fix various str -> float conversion bugs present in 2.7 + alpha 2, including: (1) a serious 'wrong output' bug that could + occur for long (> 40 digit) input strings, (2) a crash in dtoa.c + that occurred in debug builds when parsing certain long numeric + strings corresponding to subnormal values, (3) a memory leak for + some values large enough to cause overflow, and (4) a number of + flaws that could lead to incorrectly rounded results. + - The __complex__ method is now looked up on the class of instances to make it consistent with other special methods. @@ -149,9 +174,19 @@ - Issue #6687: PyBytes_FromObject() no longer accepts an integer as its argument to construct a null-initialized bytes object. +- Issue #1023290: Add from_bytes() and to_bytes() methods to integers. + These methods allow the conversion of integers to bytes, and vice-versa. + +- Issue #7382: Fix bug in bytes.__getnewargs__ that prevented bytes + instances from being copied with copy.copy(), and bytes subclasses + from being pickled properly. + C-API ----- +- Make PyUnicode_CompareWithASCIIString return not equal if the Python string + has '\0' at the end. + - Issue #5080: The argument parsing functions PyArg_ParseTuple, PyArg_ParseTupleAndKeywords, PyArg_VaParse, PyArg_VaParseTupleAndKeywords and PyArg_Parse now raise a @@ -194,6 +229,41 @@ Library ------- +- Issue #7561: Fix crashes when using bytearray objects with the posix + module. + +- Issue #1670765: Prevent email.generator.Generator from re-wrapping + headers in multipart/signed MIME parts, which fixes one of the sources of + invalid modifications to such parts by Generator. + +- Issue #7703: Add support for the new buffer API to `binascii.a2bhqx`. + Patch by Florent Xicluna, along with some additional tests. + +- Issue #7701: Fix crash in binascii.b2a_uu() in debug mode when given a + 1-byte argument. Patch by Victor Stinner. + +- Issue #3299: Fix possible crash in the _sre module when given bad + argument values in debug mode. Patch by Victor Stinner. + +- Issue #2846: Add support for gzip.GzipFile reading zero-padded files. + Patch by Brian Curtin. + +- Issue #7681: Use floor division in appropiate places in the wave module. + +- Issue #5372: Drop the reuse of .o files in Distutils' ccompiler (since + Extension extra options may change the output without changing the .c + file). Initial patch by Collin Winter. + +- Issue #7617: Make sure distutils.unixccompiler.UnixCCompiler recognizes + gcc when it has a fully qualified configuration prefix. Initial patch + by Arfrever. + +- Issue #7105: Make WeakKeyDictionary and WeakValueDictionary robust against + the destruction of weakref'ed objects while iterating. + +- Issue #7455: Fix possible crash in cPickle on invalid input. Patch by + Victor Stinner. + - Issue #1628205: Socket file objects returned by socket.socket.makefile() now properly handles EINTR within the read, readline, write & flush methods. The socket.sendall() method now properly handles interrupted system calls. @@ -543,6 +613,10 @@ Build ----- +- Issue #7632: When Py_USING_MEMORY_DEBUGGER is defined, disable the + private memory allocation scheme in dtoa.c and use PyMem_Malloc and + PyMem_Free instead. Also disable caching of powers of 5. + - Issue #6491: Allow --with-dbmliborder to specify that no dbms will be built. - Issue #6943: Use pkg-config to find the libffi headers when the @@ -650,6 +724,13 @@ - Removed importlib's custom test discovery code and switched to unittest.TestLoader.discover(). +Tools/Demos +----------- + +- iobench (a file I/O benchmark) and ccbench (a concurrency benchmark) were + added to the `Tools/` directory. They were previously living in the + sandbox. + What's New in Python 3.1? ========================= Modified: python/branches/py3k-cdecimal/Misc/RPM/python-3.2.spec ============================================================================== --- python/branches/py3k-cdecimal/Misc/RPM/python-3.2.spec (original) +++ python/branches/py3k-cdecimal/Misc/RPM/python-3.2.spec Thu Jan 21 20:32:23 2010 @@ -25,6 +25,11 @@ %define config_ipv6 yes %define config_ipv6 no +# Build shared libraries or .a library? +#WARNING: Commenting out doesn't work. Last line is what's used. +%define config_sharedlib no +%define config_sharedlib yes + # Location of the HTML directory. %define config_htmldir /var/www/html/python @@ -35,7 +40,7 @@ %define name python #--start constants-- %define version 3.2a0 -%define libver 3.2 +%define libvers 3.2 #--end constants-- %define release 1pydotorg %define __prefix /usr @@ -46,6 +51,8 @@ %define binsuffix %(if [ "%{config_binsuffix}" = none ]; then echo ; else echo "%{config_binsuffix}"; fi) %define include_tkinter %(if [ \\( "%{config_tkinter}" = auto -a -f /usr/bin/wish \\) -o "%{config_tkinter}" = yes ]; then echo 1; else echo 0; fi) %define libdirname %(( uname -m | egrep -q '_64$' && [ -d /usr/lib64 ] && echo lib64 ) || echo lib) +%define sharedlib %(if [ "%{config_sharedlib}" = yes ]; then echo --enable-shared; else echo ; fi) +%define include_sharedlib %(if [ "%{config_sharedlib}" = yes ]; then echo 1; else echo 0; fi) # detect if documentation is available %define include_docs %(if [ -f "%{_sourcedir}/html-%{version}.tar.bz2" ]; then echo 1; else echo 0; fi) @@ -54,7 +61,7 @@ Name: %{name}%{binsuffix} Version: %{version} Release: %{release} -Copyright: Modified CNRI Open Source License +License: Modified CNRI Open Source License Group: Development/Languages Source: Python-%{version}.tar.bz2 %if %{include_docs} @@ -223,7 +230,14 @@ # BUILD ######## %build -./configure --enable-unicode=ucs4 %{ipv6} %{pymalloc} --prefix=%{__prefix} +echo "Setting for ipv6: %{ipv6}" +echo "Setting for pymalloc: %{pymalloc}" +echo "Setting for binsuffix: %{binsuffix}" +echo "Setting for include_tkinter: %{include_tkinter}" +echo "Setting for libdirname: %{libdirname}" +echo "Setting for sharedlib: %{sharedlib}" +echo "Setting for include_sharedlib: %{include_sharedlib}" +./configure --enable-unicode=ucs4 %{sharedlib} %{ipv6} %{pymalloc} --prefix=%{__prefix} make ########## @@ -254,11 +268,10 @@ # add the binsuffix if [ ! -z "%{binsuffix}" ] then - ( cd $RPM_BUILD_ROOT%{__prefix}/bin; rm -f python[0-9a-zA-Z]*; - mv -f python python"%{binsuffix}" ) - ( cd $RPM_BUILD_ROOT%{__prefix}/man/man1; mv python.1 python%{binsuffix}.1 ) - ( cd $RPM_BUILD_ROOT%{__prefix}/bin; mv -f pydoc pydoc"%{binsuffix}" ) - ( cd $RPM_BUILD_ROOT%{__prefix}/bin; mv -f idle idle"%{binsuffix}" ) + rm -f $RPM_BUILD_ROOT%{__prefix}/bin/python[0-9a-zA-Z]* + ( cd $RPM_BUILD_ROOT%{__prefix}/bin; + for file in *; do mv "$file" "$file"%{binsuffix}; done ) + ( cd $RPM_BUILD_ROOT%{_mandir}/man1; mv python.1 python%{binsuffix}.1 ) fi ######## @@ -273,17 +286,23 @@ # MAKE FILE LISTS rm -f mainpkg.files -find "$RPM_BUILD_ROOT""%{__prefix}"/%{libdirname}/python%{libvers}/lib-dynload -type f | +find "$RPM_BUILD_ROOT""%{__prefix}"/%{libdirname}/python%{libvers} -type f | sed "s|^${RPM_BUILD_ROOT}|/|" | - grep -v -e '_tkinter.so$' >mainpkg.files -find "$RPM_BUILD_ROOT""%{__prefix}"/bin -type f | + grep -v -e '/python%{libvers}/config$' -e '_tkinter.so$' >mainpkg.files +find "$RPM_BUILD_ROOT""%{__prefix}"/bin -type f -o -type l | sed "s|^${RPM_BUILD_ROOT}|/|" | + grep -v -e '/bin/2to3%{binsuffix}$' | + grep -v -e '/bin/pydoc%{binsuffix}$' | + grep -v -e '/bin/smtpd.py%{binsuffix}$' | grep -v -e '/bin/idle%{binsuffix}$' >>mainpkg.files rm -f tools.files find "$RPM_BUILD_ROOT""%{__prefix}"/%{libdirname}/python%{libvers}/idlelib \ "$RPM_BUILD_ROOT""%{__prefix}"/%{libdirname}/python%{libvers}/Tools -type f | sed "s|^${RPM_BUILD_ROOT}|/|" >tools.files +echo "%{__prefix}"/bin/2to3%{binsuffix} >>tools.files +echo "%{__prefix}"/bin/pydoc%{binsuffix} >>tools.files +echo "%{__prefix}"/bin/smtpd.py%{binsuffix} >>tools.files echo "%{__prefix}"/bin/idle%{binsuffix} >>tools.files ###### @@ -341,28 +360,13 @@ %defattr(-,root,root) %doc Misc/README Misc/cheatsheet Misc/Porting %doc LICENSE Misc/ACKS Misc/HISTORY Misc/NEWS -%{__prefix}/man/man1/python%{binsuffix}.1* +%{_mandir}/man1/python%{binsuffix}.1* %attr(755,root,root) %dir %{__prefix}/include/python%{libvers} %attr(755,root,root) %dir %{__prefix}/%{libdirname}/python%{libvers}/ -%{__prefix}/%{libdirname}/python%{libvers}/*.txt -%{__prefix}/%{libdirname}/python%{libvers}/*.py* -%{__prefix}/%{libdirname}/python%{libvers}/pdb.doc -%{__prefix}/%{libdirname}/python%{libvers}/profile.doc -%{__prefix}/%{libdirname}/python%{libvers}/curses -%{__prefix}/%{libdirname}/python%{libvers}/distutils -%{__prefix}/%{libdirname}/python%{libvers}/encodings -%{__prefix}/%{libdirname}/python%{libvers}/plat-linux2 -%{__prefix}/%{libdirname}/python%{libvers}/site-packages -%{__prefix}/%{libdirname}/python%{libvers}/test -%{__prefix}/%{libdirname}/python%{libvers}/xml -%{__prefix}/%{libdirname}/python%{libvers}/email -%{__prefix}/%{libdirname}/python%{libvers}/email/mime -%{__prefix}/%{libdirname}/python%{libvers}/sqlite3 -%{__prefix}/%{libdirname}/python%{libvers}/compiler -%{__prefix}/%{libdirname}/python%{libvers}/hotshot -%{__prefix}/%{libdirname}/python%{libvers}/logging -%{__prefix}/%{libdirname}/python%{libvers}/lib-old +%if %{include_sharedlib} +%{__prefix}/%{libdirname}/libpython* +%endif %files devel %defattr(-,root,root) Modified: python/branches/py3k-cdecimal/Misc/build.sh ============================================================================== --- python/branches/py3k-cdecimal/Misc/build.sh (original) +++ python/branches/py3k-cdecimal/Misc/build.sh Thu Jan 21 20:32:23 2010 @@ -214,7 +214,7 @@ ## make and run basic tests F=make-test.out start=`current_time` - $PYTHON $REGRTEST_ARGS -u urlfetch >& build/$F + $PYTHON $REGRTEST_ARGS -W -u urlfetch >& build/$F NUM_FAILURES=`count_failures build/$F` place_summary_first build/$F update_status "Testing basics ($NUM_FAILURES failures)" "$F" $start @@ -222,7 +222,7 @@ F=make-test-opt.out start=`current_time` - $PYTHON -O $REGRTEST_ARGS -u urlfetch >& build/$F + $PYTHON -O $REGRTEST_ARGS -W -u urlfetch >& build/$F NUM_FAILURES=`count_failures build/$F` place_summary_first build/$F update_status "Testing opt ($NUM_FAILURES failures)" "$F" $start @@ -245,7 +245,7 @@ start=`current_time` ## skip curses when running from cron since there's no terminal ## skip sound since it's not setup on the PSF box (/dev/dsp) - $PYTHON $REGRTEST_ARGS -uall -x test_curses test_linuxaudiodev test_ossaudiodev $_ALWAYS_SKIP >& build/$F + $PYTHON $REGRTEST_ARGS -W -uall -x test_curses test_linuxaudiodev test_ossaudiodev &_ALWAYS_SKIP >& build/$F NUM_FAILURES=`count_failures build/$F` place_summary_first build/$F update_status "Testing all except curses and sound ($NUM_FAILURES failures)" "$F" $start Modified: python/branches/py3k-cdecimal/Misc/developers.txt ============================================================================== --- python/branches/py3k-cdecimal/Misc/developers.txt (original) +++ python/branches/py3k-cdecimal/Misc/developers.txt Thu Jan 21 20:32:23 2010 @@ -20,6 +20,9 @@ Permissions History ------------------- +- Stefan Krah was given SVN access on January 5 2010 by GFB, at + suggestion of Mark Dickinson, for work on the decimal module. + - Doug Hellmann was given SVN access on September 19 2009 by GFB, at suggestion of Jesse Noller, for documentation work. Modified: python/branches/py3k-cdecimal/Misc/gdbinit ============================================================================== --- python/branches/py3k-cdecimal/Misc/gdbinit (original) +++ python/branches/py3k-cdecimal/Misc/gdbinit Thu Jan 21 20:32:23 2010 @@ -115,12 +115,18 @@ # interpreter, but the test can be extended by an interested party). If # Py_Main <= $pc <= Py_GetArgcArv is true, $pc is in Py_Main(), so the while # tests succeeds as long as it's not true. In a similar fashion the if -# statement tests to see if we are in PyEval_EvalFrame(). +# statement tests to see if we are in PyEval_EvalFrameEx(). + +# Note: The name of the main interpreter function and the function which +# follow it has changed over time. This version of pystack works with this +# version of Python. If you try using it with older or newer versions of +# the interpreter you may will have to change the functions you compare with +# $pc. # print the entire Python call stack define pystack while $pc < Py_Main || $pc > Py_GetArgcArgv - if $pc > PyEval_EvalFrame && $pc < PyEval_EvalCodeEx + if $pc > PyEval_EvalFrameEx && $pc < PyEval_EvalCodeEx pyframe end up-silently 1 @@ -131,7 +137,7 @@ # print the entire Python call stack - verbose mode define pystackv while $pc < Py_Main || $pc > Py_GetArgcArgv - if $pc > PyEval_EvalFrame && $pc < PyEval_EvalCodeEx + if $pc > PyEval_EvalFrameEx && $pc < PyEval_EvalCodeEx pyframev end up-silently 1 Modified: python/branches/py3k-cdecimal/Modules/_ctypes/libffi/fficonfig.py.in ============================================================================== --- python/branches/py3k-cdecimal/Modules/_ctypes/libffi/fficonfig.py.in (original) +++ python/branches/py3k-cdecimal/Modules/_ctypes/libffi/fficonfig.py.in Thu Jan 21 20:32:23 2010 @@ -28,8 +28,6 @@ 'PA_HPUX': ['src/pa/hpux32.S', 'src/pa/ffi.c'], } -ffi_srcdir = '@srcdir@' ffi_sources += ffi_platforms['@TARGET@'] -ffi_sources = [os.path.join('@srcdir@', f) for f in ffi_sources] ffi_cflags = '@CFLAGS@' Modified: python/branches/py3k-cdecimal/Modules/_hashopenssl.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/_hashopenssl.c (original) +++ python/branches/py3k-cdecimal/Modules/_hashopenssl.c Thu Jan 21 20:32:23 2010 @@ -1,7 +1,7 @@ /* Module that wraps all OpenSSL hash algorithms */ /* - * Copyright (C) 2005-2009 Gregory P. Smith (greg at krypto.org) + * Copyright (C) 2005-2010 Gregory P. Smith (greg at krypto.org) * Licensed to PSF under a Contributor Agreement. * * Derived from a skeleton of shamodule.c containing work performed by: Modified: python/branches/py3k-cdecimal/Modules/_pickle.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/_pickle.c (original) +++ python/branches/py3k-cdecimal/Modules/_pickle.c Thu Jan 21 20:32:23 2010 @@ -3729,7 +3729,7 @@ */ if (self->num_marks > 0 && self->marks[self->num_marks - 1] == len) { self->num_marks--; - } else if (len >= 0) { + } else if (len > 0) { len--; Py_DECREF(self->stack->data[len]); self->stack->length = len; Modified: python/branches/py3k-cdecimal/Modules/_sre.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/_sre.c (original) +++ python/branches/py3k-cdecimal/Modules/_sre.c Thu Jan 21 20:32:23 2010 @@ -2674,6 +2674,10 @@ self = PyObject_NEW_VAR(PatternObject, &Pattern_Type, n); if (!self) return NULL; + self->weakreflist = NULL; + self->pattern = NULL; + self->groupindex = NULL; + self->indexgroup = NULL; self->codesize = n; @@ -2689,7 +2693,7 @@ } if (PyErr_Occurred()) { - PyObject_DEL(self); + Py_DECREF(self); return NULL; } @@ -3730,7 +3734,7 @@ scanner_dealloc(ScannerObject* self) { state_fini(&self->state); - Py_DECREF(self->pattern); + Py_XDECREF(self->pattern); PyObject_DEL(self); } @@ -3860,10 +3864,11 @@ self = PyObject_NEW(ScannerObject, &Scanner_Type); if (!self) return NULL; + self->pattern = NULL; string = state_init(&self->state, pattern, string, start, end); if (!string) { - PyObject_DEL(self); + Py_DECREF(self); return NULL; } Modified: python/branches/py3k-cdecimal/Modules/_testcapimodule.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/_testcapimodule.c (original) +++ python/branches/py3k-cdecimal/Modules/_testcapimodule.c Thu Jan 21 20:32:23 2010 @@ -1287,6 +1287,23 @@ #undef CHECK_1_FORMAT } + +static PyObject * +test_unicode_compare_with_ascii(PyObject *self) { + PyObject *py_s = PyUnicode_FromStringAndSize("str\0", 4); + int result; + if (py_s == NULL) + return NULL; + result = PyUnicode_CompareWithASCIIString(py_s, "str"); + Py_DECREF(py_s); + if (!result) { + PyErr_SetString(TestError, "Python string ending in NULL " + "should not compare equal to c string."); + return NULL; + } + Py_RETURN_NONE; +}; + /* This is here to provide a docstring for test_descr. */ static PyObject * test_with_docstring(PyObject *self) @@ -1756,6 +1773,7 @@ {"test_with_docstring", (PyCFunction)test_with_docstring, METH_NOARGS, PyDoc_STR("This is a pretty normal docstring.")}, {"test_string_to_double", (PyCFunction)test_string_to_double, METH_NOARGS}, + {"test_unicode_compare_with_ascii", (PyCFunction)test_unicode_compare_with_ascii, METH_NOARGS}, {"test_capsule", (PyCFunction)test_capsule, METH_NOARGS}, {"getargs_tuple", getargs_tuple, METH_VARARGS}, {"getargs_keywords", (PyCFunction)getargs_keywords, Modified: python/branches/py3k-cdecimal/Modules/binascii.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/binascii.c (original) +++ python/branches/py3k-cdecimal/Modules/binascii.c Thu Jan 21 20:32:23 2010 @@ -294,7 +294,7 @@ } /* We're lazy and allocate to much (fixed up later) */ - if ( (rv=PyBytes_FromStringAndSize(NULL, bin_len*2+2)) == NULL ) { + if ( (rv=PyBytes_FromStringAndSize(NULL, 2 + (bin_len+2)/3*4)) == NULL ) { PyBuffer_Release(&pbin); return NULL; } @@ -537,6 +537,7 @@ static PyObject * binascii_a2b_hqx(PyObject *self, PyObject *args) { + Py_buffer pascii; unsigned char *ascii_data, *bin_data; int leftbits = 0; unsigned char this_ch; @@ -545,19 +546,25 @@ Py_ssize_t len; int done = 0; - if ( !PyArg_ParseTuple(args, "t#:a2b_hqx", &ascii_data, &len) ) + if ( !PyArg_ParseTuple(args, "s*:a2b_hqx", &pascii) ) return NULL; + ascii_data = pascii.buf; + len = pascii.len; assert(len >= 0); - if (len > PY_SSIZE_T_MAX - 2) + if (len > PY_SSIZE_T_MAX - 2) { + PyBuffer_Release(&pascii); return PyErr_NoMemory(); + } /* Allocate a string that is too big (fixed later) Add two to the initial length to prevent interning which would preclude subsequent resizing. */ - if ( (rv=PyBytes_FromStringAndSize(NULL, len+2)) == NULL ) + if ( (rv=PyBytes_FromStringAndSize(NULL, len+2)) == NULL ) { + PyBuffer_Release(&pascii); return NULL; + } bin_data = (unsigned char *)PyBytes_AS_STRING(rv); for( ; len > 0 ; len--, ascii_data++ ) { @@ -567,6 +574,7 @@ continue; if ( this_ch == FAIL ) { PyErr_SetString(Error, "Illegal char"); + PyBuffer_Release(&pascii); Py_DECREF(rv); return NULL; } @@ -589,6 +597,7 @@ if ( leftbits && !done ) { PyErr_SetString(Incomplete, "String has incomplete number of bytes"); + PyBuffer_Release(&pascii); Py_DECREF(rv); return NULL; } @@ -600,10 +609,12 @@ } if (rv) { PyObject *rrv = Py_BuildValue("Oi", rv, done); + PyBuffer_Release(&pascii); Py_DECREF(rv); return rrv; } + PyBuffer_Release(&pascii); return NULL; } Modified: python/branches/py3k-cdecimal/Modules/posixmodule.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/posixmodule.c (original) +++ python/branches/py3k-cdecimal/Modules/posixmodule.c Thu Jan 21 20:32:23 2010 @@ -580,7 +580,7 @@ release_bytes(PyObject* o) { if (PyByteArray_Check(o)) - o->ob_type->tp_as_buffer->bf_releasebuffer(NULL, 0); + o->ob_type->tp_as_buffer->bf_releasebuffer(o, 0); Py_DECREF(o); } Modified: python/branches/py3k-cdecimal/Objects/bytearrayobject.c ============================================================================== --- python/branches/py3k-cdecimal/Objects/bytearrayobject.c (original) +++ python/branches/py3k-cdecimal/Objects/bytearrayobject.c Thu Jan 21 20:32:23 2010 @@ -5,23 +5,16 @@ #include "structmember.h" #include "bytes_methods.h" -static PyByteArrayObject *nullbytes = NULL; +char _PyByteArray_empty_string[] = ""; void PyByteArray_Fini(void) { - Py_CLEAR(nullbytes); } int PyByteArray_Init(void) { - nullbytes = PyObject_New(PyByteArrayObject, &PyByteArray_Type); - if (nullbytes == NULL) - return 0; - nullbytes->ob_bytes = NULL; - Py_SIZE(nullbytes) = nullbytes->ob_alloc = 0; - nullbytes->ob_exports = 0; return 1; } @@ -65,10 +58,7 @@ obj->ob_exports++; return 0; } - if (obj->ob_bytes == NULL) - ptr = ""; - else - ptr = obj->ob_bytes; + ptr = (void *) PyByteArray_AS_STRING(obj); ret = PyBuffer_FillInfo(view, (PyObject*)obj, ptr, Py_SIZE(obj), 0, flags); if (ret >= 0) { obj->ob_exports++; @@ -152,7 +142,7 @@ Py_DECREF(new); return PyErr_NoMemory(); } - if (bytes != NULL) + if (bytes != NULL && size > 0) memcpy(new->ob_bytes, bytes, size); new->ob_bytes[size] = '\0'; /* Trailing null byte */ } @@ -1038,15 +1028,16 @@ #define STRINGLIB_LEN PyByteArray_GET_SIZE #define STRINGLIB_STR PyByteArray_AS_STRING #define STRINGLIB_NEW PyByteArray_FromStringAndSize -#define STRINGLIB_EMPTY nullbytes +#define STRINGLIB_ISSPACE Py_ISSPACE +#define STRINGLIB_ISLINEBREAK(x) ((x == '\n') || (x == '\r')) #define STRINGLIB_CHECK_EXACT PyByteArray_CheckExact #define STRINGLIB_MUTABLE 1 -#define FROM_BYTEARRAY 1 #include "stringlib/fastsearch.h" #include "stringlib/count.h" #include "stringlib/find.h" #include "stringlib/partition.h" +#include "stringlib/split.h" #include "stringlib/ctype.h" #include "stringlib/transmogrify.h" @@ -1054,21 +1045,20 @@ /* The following Py_LOCAL_INLINE and Py_LOCAL functions were copied from the old char* style string object. */ -Py_LOCAL_INLINE(void) -_adjust_indices(Py_ssize_t *start, Py_ssize_t *end, Py_ssize_t len) -{ - if (*end > len) - *end = len; - else if (*end < 0) - *end += len; - if (*end < 0) - *end = 0; - if (*start < 0) - *start += len; - if (*start < 0) - *start = 0; -} - +/* helper macro to fixup start/end slice values */ +#define ADJUST_INDICES(start, end, len) \ + if (end > len) \ + end = len; \ + else if (end < 0) { \ + end += len; \ + if (end < 0) \ + end = 0; \ + } \ + if (start < 0) { \ + start += len; \ + if (start < 0) \ + start = 0; \ + } Py_LOCAL_INLINE(Py_ssize_t) bytearray_find_internal(PyByteArrayObject *self, PyObject *args, int dir) @@ -1136,10 +1126,10 @@ if (_getbuffer(sub_obj, &vsub) < 0) return NULL; - _adjust_indices(&start, &end, PyByteArray_GET_SIZE(self)); + ADJUST_INDICES(start, end, PyByteArray_GET_SIZE(self)); count_obj = PyLong_FromSsize_t( - stringlib_count(str + start, end - start, vsub.buf, vsub.len) + stringlib_count(str + start, end - start, vsub.buf, vsub.len, PY_SSIZE_T_MAX) ); PyBuffer_Release(&vsub); return count_obj; @@ -1247,7 +1237,7 @@ if (_getbuffer(substr, &vsubstr) < 0) return -1; - _adjust_indices(&start, &end, len); + ADJUST_INDICES(start, end, len); if (direction < 0) { /* startswith */ @@ -1459,20 +1449,11 @@ } -#define FORWARD 1 -#define REVERSE -1 - /* find and count characters and substrings */ #define findchar(target, target_len, c) \ ((char *)memchr((const void *)(target), c, target_len)) -/* Don't call if length < 2 */ -#define Py_STRING_MATCH(target, offset, pattern, length) \ - (target[offset] == pattern[0] && \ - target[offset+length-1] == pattern[length-1] && \ - !memcmp(target+offset+1, pattern+1, length-2) ) - /* Bytes ops must return a string, create a copy */ Py_LOCAL(PyByteArrayObject *) @@ -1500,93 +1481,6 @@ return count; } -Py_LOCAL(Py_ssize_t) -findstring(const char *target, Py_ssize_t target_len, - const char *pattern, Py_ssize_t pattern_len, - Py_ssize_t start, - Py_ssize_t end, - int direction) -{ - if (start < 0) { - start += target_len; - if (start < 0) - start = 0; - } - if (end > target_len) { - end = target_len; - } else if (end < 0) { - end += target_len; - if (end < 0) - end = 0; - } - - /* zero-length substrings always match at the first attempt */ - if (pattern_len == 0) - return (direction > 0) ? start : end; - - end -= pattern_len; - - if (direction < 0) { - for (; end >= start; end--) - if (Py_STRING_MATCH(target, end, pattern, pattern_len)) - return end; - } else { - for (; start <= end; start++) - if (Py_STRING_MATCH(target, start, pattern, pattern_len)) - return start; - } - return -1; -} - -Py_LOCAL_INLINE(Py_ssize_t) -countstring(const char *target, Py_ssize_t target_len, - const char *pattern, Py_ssize_t pattern_len, - Py_ssize_t start, - Py_ssize_t end, - int direction, Py_ssize_t maxcount) -{ - Py_ssize_t count=0; - - if (start < 0) { - start += target_len; - if (start < 0) - start = 0; - } - if (end > target_len) { - end = target_len; - } else if (end < 0) { - end += target_len; - if (end < 0) - end = 0; - } - - /* zero-length substrings match everywhere */ - if (pattern_len == 0 || maxcount == 0) { - if (target_len+1 < maxcount) - return target_len+1; - return maxcount; - } - - end -= pattern_len; - if (direction < 0) { - for (; (end >= start); end--) - if (Py_STRING_MATCH(target, end, pattern, pattern_len)) { - count++; - if (--maxcount <= 0) break; - end -= pattern_len-1; - } - } else { - for (; (start <= end); start++) - if (Py_STRING_MATCH(target, start, pattern, pattern_len)) { - count++; - if (--maxcount <= 0) - break; - start += pattern_len-1; - } - } - return count; -} - /* Algorithms for different cases of string replacement */ @@ -1708,10 +1602,9 @@ self_len = PyByteArray_GET_SIZE(self); self_s = PyByteArray_AS_STRING(self); - count = countstring(self_s, self_len, - from_s, from_len, - 0, self_len, 1, - maxcount); + count = stringlib_count(self_s, self_len, + from_s, from_len, + maxcount); if (count == 0) { /* no matches */ @@ -1730,9 +1623,9 @@ start = self_s; end = self_s + self_len; while (count-- > 0) { - offset = findstring(start, end-start, - from_s, from_len, - 0, end-start, FORWARD); + offset = stringlib_find(start, end-start, + from_s, from_len, + 0); if (offset == -1) break; next = start + offset; @@ -1808,9 +1701,9 @@ self_s = PyByteArray_AS_STRING(self); self_len = PyByteArray_GET_SIZE(self); - offset = findstring(self_s, self_len, - from_s, from_len, - 0, self_len, FORWARD); + offset = stringlib_find(self_s, self_len, + from_s, from_len, + 0); if (offset == -1) { /* No matches; return the original bytes */ return return_self(self); @@ -1830,9 +1723,9 @@ end = result_s + self_len; while ( --maxcount > 0) { - offset = findstring(start, end-start, - from_s, from_len, - 0, end-start, FORWARD); + offset = stringlib_find(start, end-start, + from_s, from_len, + 0); if (offset==-1) break; Py_MEMCPY(start+offset, to_s, from_len); @@ -1925,9 +1818,10 @@ self_s = PyByteArray_AS_STRING(self); self_len = PyByteArray_GET_SIZE(self); - count = countstring(self_s, self_len, - from_s, from_len, - 0, self_len, FORWARD, maxcount); + count = stringlib_count(self_s, self_len, + from_s, from_len, + maxcount); + if (count == 0) { /* no matches, return unchanged */ return return_self(self); @@ -1954,9 +1848,9 @@ start = self_s; end = self_s + self_len; while (count-- > 0) { - offset = findstring(start, end-start, - from_s, from_len, - 0, end-start, FORWARD); + offset = stringlib_find(start, end-start, + from_s, from_len, + 0); if (offset == -1) break; next = start+offset; @@ -2085,123 +1979,6 @@ return res; } - -/* Overallocate the initial list to reduce the number of reallocs for small - split sizes. Eg, "A A A A A A A A A A".split() (10 elements) has three - resizes, to sizes 4, 8, then 16. Most observed string splits are for human - text (roughly 11 words per line) and field delimited data (usually 1-10 - fields). For large strings the split algorithms are bandwidth limited - so increasing the preallocation likely will not improve things.*/ - -#define MAX_PREALLOC 12 - -/* 5 splits gives 6 elements */ -#define PREALLOC_SIZE(maxsplit) \ - (maxsplit >= MAX_PREALLOC ? MAX_PREALLOC : maxsplit+1) - -#define SPLIT_APPEND(data, left, right) \ - str = PyByteArray_FromStringAndSize((data) + (left), \ - (right) - (left)); \ - if (str == NULL) \ - goto onError; \ - if (PyList_Append(list, str)) { \ - Py_DECREF(str); \ - goto onError; \ - } \ - else \ - Py_DECREF(str); - -#define SPLIT_ADD(data, left, right) { \ - str = PyByteArray_FromStringAndSize((data) + (left), \ - (right) - (left)); \ - if (str == NULL) \ - goto onError; \ - if (count < MAX_PREALLOC) { \ - PyList_SET_ITEM(list, count, str); \ - } else { \ - if (PyList_Append(list, str)) { \ - Py_DECREF(str); \ - goto onError; \ - } \ - else \ - Py_DECREF(str); \ - } \ - count++; } - -/* Always force the list to the expected size. */ -#define FIX_PREALLOC_SIZE(list) Py_SIZE(list) = count - - -Py_LOCAL_INLINE(PyObject *) -split_char(const char *s, Py_ssize_t len, char ch, Py_ssize_t maxcount) -{ - register Py_ssize_t i, j, count = 0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - - if (list == NULL) - return NULL; - - i = j = 0; - while ((j < len) && (maxcount-- > 0)) { - for(; j < len; j++) { - /* I found that using memchr makes no difference */ - if (s[j] == ch) { - SPLIT_ADD(s, i, j); - i = j = j + 1; - break; - } - } - } - if (i <= len) { - SPLIT_ADD(s, i, len); - } - FIX_PREALLOC_SIZE(list); - return list; - - onError: - Py_DECREF(list); - return NULL; -} - - -Py_LOCAL_INLINE(PyObject *) -split_whitespace(const char *s, Py_ssize_t len, Py_ssize_t maxcount) -{ - register Py_ssize_t i, j, count = 0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - - if (list == NULL) - return NULL; - - for (i = j = 0; i < len; ) { - /* find a token */ - while (i < len && Py_ISSPACE(s[i])) - i++; - j = i; - while (i < len && !Py_ISSPACE(s[i])) - i++; - if (j < i) { - if (maxcount-- <= 0) - break; - SPLIT_ADD(s, j, i); - while (i < len && Py_ISSPACE(s[i])) - i++; - j = i; - } - } - if (j < len) { - SPLIT_ADD(s, j, len); - } - FIX_PREALLOC_SIZE(list); - return list; - - onError: - Py_DECREF(list); - return NULL; -} - PyDoc_STRVAR(split__doc__, "B.split([sep[, maxsplit]]) -> list of bytearrays\n\ \n\ @@ -2213,10 +1990,10 @@ static PyObject * bytearray_split(PyByteArrayObject *self, PyObject *args) { - Py_ssize_t len = PyByteArray_GET_SIZE(self), n, i, j, pos; - Py_ssize_t maxsplit = -1, count = 0; + Py_ssize_t len = PyByteArray_GET_SIZE(self), n; + Py_ssize_t maxsplit = -1; const char *s = PyByteArray_AS_STRING(self), *sub; - PyObject *list, *str, *subobj = Py_None; + PyObject *list, *subobj = Py_None; Py_buffer vsub; if (!PyArg_ParseTuple(args, "|On:split", &subobj, &maxsplit)) @@ -2225,73 +2002,18 @@ maxsplit = PY_SSIZE_T_MAX; if (subobj == Py_None) - return split_whitespace(s, len, maxsplit); + return stringlib_split_whitespace((PyObject*) self, s, len, maxsplit); if (_getbuffer(subobj, &vsub) < 0) return NULL; sub = vsub.buf; n = vsub.len; - if (n == 0) { - PyErr_SetString(PyExc_ValueError, "empty separator"); - PyBuffer_Release(&vsub); - return NULL; - } - if (n == 1) { - list = split_char(s, len, sub[0], maxsplit); - PyBuffer_Release(&vsub); - return list; - } - - list = PyList_New(PREALLOC_SIZE(maxsplit)); - if (list == NULL) { - PyBuffer_Release(&vsub); - return NULL; - } - - i = j = 0; - while (maxsplit-- > 0) { - pos = fastsearch(s+i, len-i, sub, n, FAST_SEARCH); - if (pos < 0) - break; - j = i+pos; - SPLIT_ADD(s, i, j); - i = j + n; - } - SPLIT_ADD(s, i, len); - FIX_PREALLOC_SIZE(list); + list = stringlib_split( + (PyObject*) self, s, len, sub, n, maxsplit + ); PyBuffer_Release(&vsub); return list; - - onError: - Py_DECREF(list); - PyBuffer_Release(&vsub); - return NULL; -} - -/* stringlib's partition shares nullbytes in some cases. - undo this, we don't want the nullbytes to be shared. */ -static PyObject * -make_nullbytes_unique(PyObject *result) -{ - if (result != NULL) { - int i; - assert(PyTuple_Check(result)); - assert(PyTuple_GET_SIZE(result) == 3); - for (i = 0; i < 3; i++) { - if (PyTuple_GET_ITEM(result, i) == (PyObject *)nullbytes) { - PyObject *new = PyByteArray_FromStringAndSize(NULL, 0); - if (new == NULL) { - Py_DECREF(result); - result = NULL; - break; - } - Py_DECREF(nullbytes); - PyTuple_SET_ITEM(result, i, new); - } - } - } - return result; } PyDoc_STRVAR(partition__doc__, @@ -2318,7 +2040,7 @@ ); Py_DECREF(bytesep); - return make_nullbytes_unique(result); + return result; } PyDoc_STRVAR(rpartition__doc__, @@ -2346,81 +2068,7 @@ ); Py_DECREF(bytesep); - return make_nullbytes_unique(result); -} - -Py_LOCAL_INLINE(PyObject *) -rsplit_char(const char *s, Py_ssize_t len, char ch, Py_ssize_t maxcount) -{ - register Py_ssize_t i, j, count=0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - - if (list == NULL) - return NULL; - - i = j = len - 1; - while ((i >= 0) && (maxcount-- > 0)) { - for (; i >= 0; i--) { - if (s[i] == ch) { - SPLIT_ADD(s, i + 1, j + 1); - j = i = i - 1; - break; - } - } - } - if (j >= -1) { - SPLIT_ADD(s, 0, j + 1); - } - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; - - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -Py_LOCAL_INLINE(PyObject *) -rsplit_whitespace(const char *s, Py_ssize_t len, Py_ssize_t maxcount) -{ - register Py_ssize_t i, j, count = 0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - - if (list == NULL) - return NULL; - - for (i = j = len - 1; i >= 0; ) { - /* find a token */ - while (i >= 0 && Py_ISSPACE(s[i])) - i--; - j = i; - while (i >= 0 && !Py_ISSPACE(s[i])) - i--; - if (j > i) { - if (maxcount-- <= 0) - break; - SPLIT_ADD(s, i + 1, j + 1); - while (i >= 0 && Py_ISSPACE(s[i])) - i--; - j = i; - } - } - if (j >= 0) { - SPLIT_ADD(s, 0, j + 1); - } - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; - - return list; - - onError: - Py_DECREF(list); - return NULL; + return result; } PyDoc_STRVAR(rsplit__doc__, @@ -2435,10 +2083,10 @@ static PyObject * bytearray_rsplit(PyByteArrayObject *self, PyObject *args) { - Py_ssize_t len = PyByteArray_GET_SIZE(self), n, j, pos; - Py_ssize_t maxsplit = -1, count = 0; + Py_ssize_t len = PyByteArray_GET_SIZE(self), n; + Py_ssize_t maxsplit = -1; const char *s = PyByteArray_AS_STRING(self), *sub; - PyObject *list, *str, *subobj = Py_None; + PyObject *list, *subobj = Py_None; Py_buffer vsub; if (!PyArg_ParseTuple(args, "|On:rsplit", &subobj, &maxsplit)) @@ -2447,50 +2095,18 @@ maxsplit = PY_SSIZE_T_MAX; if (subobj == Py_None) - return rsplit_whitespace(s, len, maxsplit); + return stringlib_rsplit_whitespace((PyObject*) self, s, len, maxsplit); if (_getbuffer(subobj, &vsub) < 0) return NULL; sub = vsub.buf; n = vsub.len; - if (n == 0) { - PyErr_SetString(PyExc_ValueError, "empty separator"); - PyBuffer_Release(&vsub); - return NULL; - } - else if (n == 1) { - list = rsplit_char(s, len, sub[0], maxsplit); - PyBuffer_Release(&vsub); - return list; - } - - list = PyList_New(PREALLOC_SIZE(maxsplit)); - if (list == NULL) { - PyBuffer_Release(&vsub); - return NULL; - } - - j = len; - - while (maxsplit-- > 0) { - pos = fastsearch(s, j, sub, n, FAST_RSEARCH); - if (pos < 0) - break; - SPLIT_ADD(s, pos + n, j); - j = pos; - } - SPLIT_ADD(s, 0, j); - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; + list = stringlib_rsplit( + (PyObject*) self, s, len, sub, n, maxsplit + ); PyBuffer_Release(&vsub); return list; - -onError: - Py_DECREF(list); - PyBuffer_Release(&vsub); - return NULL; } PyDoc_STRVAR(reverse__doc__, @@ -2956,6 +2572,27 @@ return NULL; } +PyDoc_STRVAR(splitlines__doc__, +"B.splitlines([keepends]) -> list of lines\n\ +\n\ +Return a list of the lines in B, breaking at line boundaries.\n\ +Line breaks are not included in the resulting list unless keepends\n\ +is given and true."); + +static PyObject* +bytearray_splitlines(PyObject *self, PyObject *args) +{ + int keepends = 0; + + if (!PyArg_ParseTuple(args, "|i:splitlines", &keepends)) + return NULL; + + return stringlib_splitlines( + (PyObject*) self, PyByteArray_AS_STRING(self), + PyByteArray_GET_SIZE(self), keepends + ); +} + PyDoc_STRVAR(fromhex_doc, "bytearray.fromhex(string) -> bytearray (static method)\n\ \n\ @@ -3134,7 +2771,7 @@ {"rsplit", (PyCFunction)bytearray_rsplit, METH_VARARGS, rsplit__doc__}, {"rstrip", (PyCFunction)bytearray_rstrip, METH_VARARGS, rstrip__doc__}, {"split", (PyCFunction)bytearray_split, METH_VARARGS, split__doc__}, - {"splitlines", (PyCFunction)stringlib_splitlines, METH_VARARGS, + {"splitlines", (PyCFunction)bytearray_splitlines, METH_VARARGS, splitlines__doc__}, {"startswith", (PyCFunction)bytearray_startswith, METH_VARARGS , startswith__doc__}, Modified: python/branches/py3k-cdecimal/Objects/bytesobject.c ============================================================================== --- python/branches/py3k-cdecimal/Objects/bytesobject.c (original) +++ python/branches/py3k-cdecimal/Objects/bytesobject.c Thu Jan 21 20:32:23 2010 @@ -56,7 +56,7 @@ If `str' is NULL then PyBytes_FromStringAndSize() will allocate `size+1' bytes (setting the last byte to the null terminating character) and you can fill in the data yourself. If `str' is non-NULL then the resulting - PyString object must be treated as immutable and you must not fill in nor + PyBytes object must be treated as immutable and you must not fill in nor alter the data yourself, since the strings may be shared. The PyObject member `op->ob_size', which denotes the number of "extra @@ -568,9 +568,9 @@ #include "stringlib/count.h" #include "stringlib/find.h" #include "stringlib/partition.h" +#include "stringlib/split.h" #include "stringlib/ctype.h" -#define STRINGLIB_MUTABLE 0 #include "stringlib/transmogrify.h" PyObject * @@ -1000,133 +1000,6 @@ #define STRIPNAME(i) (stripformat[i]+3) - -/* Don't call if length < 2 */ -#define Py_STRING_MATCH(target, offset, pattern, length) \ - (target[offset] == pattern[0] && \ - target[offset+length-1] == pattern[length-1] && \ - !memcmp(target+offset+1, pattern+1, length-2) ) - - -/* Overallocate the initial list to reduce the number of reallocs for small - split sizes. Eg, "A A A A A A A A A A".split() (10 elements) has three - resizes, to sizes 4, 8, then 16. Most observed string splits are for human - text (roughly 11 words per line) and field delimited data (usually 1-10 - fields). For large strings the split algorithms are bandwidth limited - so increasing the preallocation likely will not improve things.*/ - -#define MAX_PREALLOC 12 - -/* 5 splits gives 6 elements */ -#define PREALLOC_SIZE(maxsplit) \ - (maxsplit >= MAX_PREALLOC ? MAX_PREALLOC : maxsplit+1) - -#define SPLIT_ADD(data, left, right) { \ - str = PyBytes_FromStringAndSize((data) + (left), \ - (right) - (left)); \ - if (str == NULL) \ - goto onError; \ - if (count < MAX_PREALLOC) { \ - PyList_SET_ITEM(list, count, str); \ - } else { \ - if (PyList_Append(list, str)) { \ - Py_DECREF(str); \ - goto onError; \ - } \ - else \ - Py_DECREF(str); \ - } \ - count++; } - -/* Always force the list to the expected size. */ -#define FIX_PREALLOC_SIZE(list) Py_SIZE(list) = count - -#define SKIP_SPACE(s, i, len) { while (i=0 && ISSPACE(s[i])) i--; } -#define RSKIP_NONSPACE(s, i) { while (i>=0 && !ISSPACE(s[i])) i--; } - -Py_LOCAL_INLINE(PyObject *) -split_whitespace(PyBytesObject *self, Py_ssize_t len, Py_ssize_t maxsplit) -{ - const char *s = PyBytes_AS_STRING(self); - Py_ssize_t i, j, count=0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxsplit)); - - if (list == NULL) - return NULL; - - i = j = 0; - - while (maxsplit-- > 0) { - SKIP_SPACE(s, i, len); - if (i==len) break; - j = i; i++; - SKIP_NONSPACE(s, i, len); - if (j == 0 && i == len && PyBytes_CheckExact(self)) { - /* No whitespace in self, so just use it as list[0] */ - Py_INCREF(self); - PyList_SET_ITEM(list, 0, (PyObject *)self); - count++; - break; - } - SPLIT_ADD(s, j, i); - } - - if (i < len) { - /* Only occurs when maxsplit was reached */ - /* Skip any remaining whitespace and copy to end of string */ - SKIP_SPACE(s, i, len); - if (i != len) - SPLIT_ADD(s, i, len); - } - FIX_PREALLOC_SIZE(list); - return list; - onError: - Py_DECREF(list); - return NULL; -} - -Py_LOCAL_INLINE(PyObject *) -split_char(PyBytesObject *self, Py_ssize_t len, char ch, Py_ssize_t maxcount) -{ - const char *s = PyBytes_AS_STRING(self); - register Py_ssize_t i, j, count=0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - - if (list == NULL) - return NULL; - - i = j = 0; - while ((j < len) && (maxcount-- > 0)) { - for(; j list of bytes\n\ \n\ @@ -1138,74 +1011,26 @@ static PyObject * bytes_split(PyBytesObject *self, PyObject *args) { - Py_ssize_t len = PyBytes_GET_SIZE(self), n, i, j; - Py_ssize_t maxsplit = -1, count=0; + Py_ssize_t len = PyBytes_GET_SIZE(self), n; + Py_ssize_t maxsplit = -1; const char *s = PyBytes_AS_STRING(self), *sub; Py_buffer vsub; - PyObject *list, *str, *subobj = Py_None; -#ifdef USE_FAST - Py_ssize_t pos; -#endif + PyObject *list, *subobj = Py_None; if (!PyArg_ParseTuple(args, "|On:split", &subobj, &maxsplit)) return NULL; if (maxsplit < 0) maxsplit = PY_SSIZE_T_MAX; if (subobj == Py_None) - return split_whitespace(self, len, maxsplit); + return stringlib_split_whitespace((PyObject*) self, s, len, maxsplit); if (_getbuffer(subobj, &vsub) < 0) return NULL; sub = vsub.buf; n = vsub.len; - if (n == 0) { - PyErr_SetString(PyExc_ValueError, "empty separator"); - PyBuffer_Release(&vsub); - return NULL; - } - else if (n == 1) { - list = split_char(self, len, sub[0], maxsplit); - PyBuffer_Release(&vsub); - return list; - } - - list = PyList_New(PREALLOC_SIZE(maxsplit)); - if (list == NULL) { - PyBuffer_Release(&vsub); - return NULL; - } - -#ifdef USE_FAST - i = j = 0; - while (maxsplit-- > 0) { - pos = fastsearch(s+i, len-i, sub, n, FAST_SEARCH); - if (pos < 0) - break; - j = i+pos; - SPLIT_ADD(s, i, j); - i = j + n; - } -#else - i = j = 0; - while ((j+n <= len) && (maxsplit-- > 0)) { - for (; j+n <= len; j++) { - if (Py_STRING_MATCH(s, j, sub, n)) { - SPLIT_ADD(s, i, j); - i = j = j + n; - break; - } - } - } -#endif - SPLIT_ADD(s, i, len); - FIX_PREALLOC_SIZE(list); + list = stringlib_split((PyObject*) self, s, len, sub, n, maxsplit); PyBuffer_Release(&vsub); return list; - - onError: - Py_DECREF(list); - PyBuffer_Release(&vsub); - return NULL; } PyDoc_STRVAR(partition__doc__, @@ -1263,90 +1088,6 @@ ); } -Py_LOCAL_INLINE(PyObject *) -rsplit_whitespace(PyBytesObject *self, Py_ssize_t len, Py_ssize_t maxsplit) -{ - const char *s = PyBytes_AS_STRING(self); - Py_ssize_t i, j, count=0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxsplit)); - - if (list == NULL) - return NULL; - - i = j = len-1; - - while (maxsplit-- > 0) { - RSKIP_SPACE(s, i); - if (i<0) break; - j = i; i--; - RSKIP_NONSPACE(s, i); - if (j == len-1 && i < 0 && PyBytes_CheckExact(self)) { - /* No whitespace in self, so just use it as list[0] */ - Py_INCREF(self); - PyList_SET_ITEM(list, 0, (PyObject *)self); - count++; - break; - } - SPLIT_ADD(s, i + 1, j + 1); - } - if (i >= 0) { - /* Only occurs when maxsplit was reached. Skip any remaining - whitespace and copy to beginning of string. */ - RSKIP_SPACE(s, i); - if (i >= 0) - SPLIT_ADD(s, 0, i + 1); - - } - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; - return list; - onError: - Py_DECREF(list); - return NULL; -} - -Py_LOCAL_INLINE(PyObject *) -rsplit_char(PyBytesObject *self, Py_ssize_t len, char ch, Py_ssize_t maxcount) -{ - const char *s = PyBytes_AS_STRING(self); - register Py_ssize_t i, j, count=0; - PyObject *str; - PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); - - if (list == NULL) - return NULL; - - i = j = len - 1; - while ((i >= 0) && (maxcount-- > 0)) { - for (; i >= 0; i--) { - if (s[i] == ch) { - SPLIT_ADD(s, i + 1, j + 1); - j = i = i - 1; - break; - } - } - } - if (i < 0 && count == 0 && PyBytes_CheckExact(self)) { - /* ch not in self, so just use self as list[0] */ - Py_INCREF(self); - PyList_SET_ITEM(list, 0, (PyObject *)self); - count++; - } - else if (j >= -1) { - SPLIT_ADD(s, 0, j + 1); - } - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; - return list; - - onError: - Py_DECREF(list); - return NULL; -} - PyDoc_STRVAR(rsplit__doc__, "B.rsplit([sep[, maxsplit]]) -> list of bytes\n\ \n\ @@ -1360,71 +1101,28 @@ static PyObject * bytes_rsplit(PyBytesObject *self, PyObject *args) { - Py_ssize_t len = PyBytes_GET_SIZE(self), n, i, j; - Py_ssize_t maxsplit = -1, count=0; - const char *s, *sub; + Py_ssize_t len = PyBytes_GET_SIZE(self), n; + Py_ssize_t maxsplit = -1; + const char *s = PyBytes_AS_STRING(self), *sub; Py_buffer vsub; - PyObject *list, *str, *subobj = Py_None; + PyObject *list, *subobj = Py_None; if (!PyArg_ParseTuple(args, "|On:rsplit", &subobj, &maxsplit)) return NULL; if (maxsplit < 0) maxsplit = PY_SSIZE_T_MAX; if (subobj == Py_None) - return rsplit_whitespace(self, len, maxsplit); + return stringlib_rsplit_whitespace((PyObject*) self, s, len, maxsplit); if (_getbuffer(subobj, &vsub) < 0) return NULL; sub = vsub.buf; n = vsub.len; - if (n == 0) { - PyErr_SetString(PyExc_ValueError, "empty separator"); - PyBuffer_Release(&vsub); - return NULL; - } - else if (n == 1) { - list = rsplit_char(self, len, sub[0], maxsplit); - PyBuffer_Release(&vsub); - return list; - } - - list = PyList_New(PREALLOC_SIZE(maxsplit)); - if (list == NULL) { - PyBuffer_Release(&vsub); - return NULL; - } - - j = len; - i = j - n; - - s = PyBytes_AS_STRING(self); - while ( (i >= 0) && (maxsplit-- > 0) ) { - for (; i>=0; i--) { - if (Py_STRING_MATCH(s, i, sub, n)) { - SPLIT_ADD(s, i + n, j); - j = i; - i -= n; - break; - } - } - } - SPLIT_ADD(s, 0, j); - FIX_PREALLOC_SIZE(list); - if (PyList_Reverse(list) < 0) - goto onError; + list = stringlib_rsplit((PyObject*) self, s, len, sub, n, maxsplit); PyBuffer_Release(&vsub); return list; - -onError: - Py_DECREF(list); - PyBuffer_Release(&vsub); - return NULL; } -#undef SPLIT_ADD -#undef MAX_PREALLOC -#undef PREALLOC_SIZE - PyDoc_STRVAR(join__doc__, "B.join(iterable_of_bytes) -> bytes\n\ @@ -1531,20 +1229,20 @@ return bytes_join(sep, x); } -Py_LOCAL_INLINE(void) -bytes_adjust_indices(Py_ssize_t *start, Py_ssize_t *end, Py_ssize_t len) -{ - if (*end > len) - *end = len; - else if (*end < 0) - *end += len; - if (*end < 0) - *end = 0; - if (*start < 0) - *start += len; - if (*start < 0) - *start = 0; -} +/* helper macro to fixup start/end slice values */ +#define ADJUST_INDICES(start, end, len) \ + if (end > len) \ + end = len; \ + else if (end < 0) { \ + end += len; \ + if (end < 0) \ + end = 0; \ + } \ + if (start < 0) { \ + start += len; \ + if (start < 0) \ + start = 0; \ + } Py_LOCAL_INLINE(Py_ssize_t) bytes_find_internal(PyBytesObject *self, PyObject *args, int dir) @@ -1591,7 +1289,7 @@ PyDoc_STRVAR(find__doc__, "B.find(sub[, start[, end]]) -> int\n\ \n\ -Return the lowest index in S where substring sub is found,\n\ +Return the lowest index in B where substring sub is found,\n\ such that sub is contained within s[start:end]. Optional\n\ arguments start and end are interpreted as in slice notation.\n\ \n\ @@ -1801,7 +1499,7 @@ "B.count(sub[, start[, end]]) -> int\n\ \n\ Return the number of non-overlapping occurrences of substring sub in\n\ -string S[start:end]. Optional arguments start and end are interpreted\n\ +string B[start:end]. Optional arguments start and end are interpreted\n\ as in slice notation."); static PyObject * @@ -1823,10 +1521,10 @@ else if (PyObject_AsCharBuffer(sub_obj, &sub, &sub_len)) return NULL; - bytes_adjust_indices(&start, &end, PyBytes_GET_SIZE(self)); + ADJUST_INDICES(start, end, PyBytes_GET_SIZE(self)); return PyLong_FromSsize_t( - stringlib_count(str + start, end - start, sub, sub_len) + stringlib_count(str + start, end - start, sub, sub_len, PY_SSIZE_T_MAX) ); } @@ -1943,9 +1641,6 @@ return _Py_bytes_maketrans(args); } -#define FORWARD 1 -#define REVERSE -1 - /* find and count characters and substrings */ #define findchar(target, target_len, c) \ @@ -1981,94 +1676,6 @@ return count; } -Py_LOCAL(Py_ssize_t) -findstring(const char *target, Py_ssize_t target_len, - const char *pattern, Py_ssize_t pattern_len, - Py_ssize_t start, - Py_ssize_t end, - int direction) -{ - if (start < 0) { - start += target_len; - if (start < 0) - start = 0; - } - if (end > target_len) { - end = target_len; - } else if (end < 0) { - end += target_len; - if (end < 0) - end = 0; - } - - /* zero-length substrings always match at the first attempt */ - if (pattern_len == 0) - return (direction > 0) ? start : end; - - end -= pattern_len; - - if (direction < 0) { - for (; end >= start; end--) - if (Py_STRING_MATCH(target, end, pattern, pattern_len)) - return end; - } else { - for (; start <= end; start++) - if (Py_STRING_MATCH(target, start,pattern,pattern_len)) - return start; - } - return -1; -} - -Py_LOCAL_INLINE(Py_ssize_t) -countstring(const char *target, Py_ssize_t target_len, - const char *pattern, Py_ssize_t pattern_len, - Py_ssize_t start, - Py_ssize_t end, - int direction, Py_ssize_t maxcount) -{ - Py_ssize_t count=0; - - if (start < 0) { - start += target_len; - if (start < 0) - start = 0; - } - if (end > target_len) { - end = target_len; - } else if (end < 0) { - end += target_len; - if (end < 0) - end = 0; - } - - /* zero-length substrings match everywhere */ - if (pattern_len == 0 || maxcount == 0) { - if (target_len+1 < maxcount) - return target_len+1; - return maxcount; - } - - end -= pattern_len; - if (direction < 0) { - for (; (end >= start); end--) - if (Py_STRING_MATCH(target, end,pattern,pattern_len)) { - count++; - if (--maxcount <= 0) break; - end -= pattern_len-1; - } - } else { - for (; (start <= end); start++) - if (Py_STRING_MATCH(target, start, - pattern, pattern_len)) { - count++; - if (--maxcount <= 0) - break; - start += pattern_len-1; - } - } - return count; -} - /* Algorithms for different cases of string replacement */ @@ -2189,10 +1796,9 @@ self_len = PyBytes_GET_SIZE(self); self_s = PyBytes_AS_STRING(self); - count = countstring(self_s, self_len, - from_s, from_len, - 0, self_len, 1, - maxcount); + count = stringlib_count(self_s, self_len, + from_s, from_len, + maxcount); if (count == 0) { /* no matches */ @@ -2211,9 +1817,9 @@ start = self_s; end = self_s + self_len; while (count-- > 0) { - offset = findstring(start, end-start, - from_s, from_len, - 0, end-start, FORWARD); + offset = stringlib_find(start, end-start, + from_s, from_len, + 0); if (offset == -1) break; next = start + offset; @@ -2289,9 +1895,9 @@ self_s = PyBytes_AS_STRING(self); self_len = PyBytes_GET_SIZE(self); - offset = findstring(self_s, self_len, - from_s, from_len, - 0, self_len, FORWARD); + offset = stringlib_find(self_s, self_len, + from_s, from_len, + 0); if (offset == -1) { /* No matches; return the original string */ return return_self(self); @@ -2311,9 +1917,9 @@ end = result_s + self_len; while ( --maxcount > 0) { - offset = findstring(start, end-start, - from_s, from_len, - 0, end-start, FORWARD); + offset = stringlib_find(start, end-start, + from_s, from_len, + 0); if (offset==-1) break; Py_MEMCPY(start+offset, to_s, from_len); @@ -2407,9 +2013,10 @@ self_s = PyBytes_AS_STRING(self); self_len = PyBytes_GET_SIZE(self); - count = countstring(self_s, self_len, - from_s, from_len, - 0, self_len, FORWARD, maxcount); + count = stringlib_count(self_s, self_len, + from_s, from_len, + maxcount); + if (count == 0) { /* no matches, return unchanged */ return return_self(self); @@ -2438,9 +2045,9 @@ start = self_s; end = self_s + self_len; while (count-- > 0) { - offset = findstring(start, end-start, - from_s, from_len, - 0, end-start, FORWARD); + offset = stringlib_find(start, end-start, + from_s, from_len, + 0); if (offset == -1) break; next = start+offset; @@ -2598,7 +2205,7 @@ return -1; str = PyBytes_AS_STRING(self); - bytes_adjust_indices(&start, &end, len); + ADJUST_INDICES(start, end, len); if (direction < 0) { /* startswith */ @@ -2703,7 +2310,7 @@ PyDoc_STRVAR(decode__doc__, "B.decode([encoding[, errors]]) -> str\n\ \n\ -Decode S using the codec registered for encoding. encoding defaults\n\ +Decode B using the codec registered for encoding. encoding defaults\n\ to the default encoding. errors may be given to set a different error\n\ handling scheme. Default is 'strict' meaning that encoding errors raise\n\ a UnicodeDecodeError. Other possible values are 'ignore' and 'replace'\n\ @@ -2725,6 +2332,28 @@ } +PyDoc_STRVAR(splitlines__doc__, +"B.splitlines([keepends]) -> list of lines\n\ +\n\ +Return a list of the lines in B, breaking at line boundaries.\n\ +Line breaks are not included in the resulting list unless keepends\n\ +is given and true."); + +static PyObject* +bytes_splitlines(PyObject *self, PyObject *args) +{ + int keepends = 0; + + if (!PyArg_ParseTuple(args, "|i:splitlines", &keepends)) + return NULL; + + return stringlib_splitlines( + (PyObject*) self, PyBytes_AS_STRING(self), + PyBytes_GET_SIZE(self), keepends + ); +} + + PyDoc_STRVAR(fromhex_doc, "bytes.fromhex(string) -> bytes\n\ \n\ @@ -2807,7 +2436,7 @@ static PyObject * bytes_getnewargs(PyBytesObject *v) { - return Py_BuildValue("(s#)", v->ob_sval, Py_SIZE(v)); + return Py_BuildValue("(y#)", v->ob_sval, Py_SIZE(v)); } @@ -2857,7 +2486,7 @@ {"rsplit", (PyCFunction)bytes_rsplit, METH_VARARGS, rsplit__doc__}, {"rstrip", (PyCFunction)bytes_rstrip, METH_VARARGS, rstrip__doc__}, {"split", (PyCFunction)bytes_split, METH_VARARGS, split__doc__}, - {"splitlines", (PyCFunction)stringlib_splitlines, METH_VARARGS, + {"splitlines", (PyCFunction)bytes_splitlines, METH_VARARGS, splitlines__doc__}, {"startswith", (PyCFunction)bytes_startswith, METH_VARARGS, startswith__doc__}, @@ -2979,17 +2608,62 @@ return NULL; } + if (PyList_CheckExact(x)) { + new = PyBytes_FromStringAndSize(NULL, Py_SIZE(x)); + if (new == NULL) + return NULL; + for (i = 0; i < Py_SIZE(x); i++) { + Py_ssize_t value = PyNumber_AsSsize_t( + PyList_GET_ITEM(x, i), PyExc_ValueError); + if (value == -1 && PyErr_Occurred()) { + Py_DECREF(new); + return NULL; + } + if (value < 0 || value >= 256) { + PyErr_SetString(PyExc_ValueError, + "bytes must be in range(0, 256)"); + Py_DECREF(new); + return NULL; + } + ((PyBytesObject *)new)->ob_sval[i] = value; + } + return new; + } + if (PyTuple_CheckExact(x)) { + new = PyBytes_FromStringAndSize(NULL, Py_SIZE(x)); + if (new == NULL) + return NULL; + for (i = 0; i < Py_SIZE(x); i++) { + Py_ssize_t value = PyNumber_AsSsize_t( + PyTuple_GET_ITEM(x, i), PyExc_ValueError); + if (value == -1 && PyErr_Occurred()) { + Py_DECREF(new); + return NULL; + } + if (value < 0 || value >= 256) { + PyErr_SetString(PyExc_ValueError, + "bytes must be in range(0, 256)"); + Py_DECREF(new); + return NULL; + } + ((PyBytesObject *)new)->ob_sval[i] = value; + } + return new; + } + /* For iterator version, create a string object and resize as needed */ - /* XXX(gb): is 64 a good value? also, optimize if length is known */ - /* XXX(guido): perhaps use Pysequence_Fast() -- I can't imagine the - input being a truly long iterator. */ - size = 64; + size = _PyObject_LengthHint(x, 64); + if (size == -1 && PyErr_Occurred()) + return NULL; + /* Allocate an extra byte to prevent PyBytes_FromStringAndSize() from + returning a shared empty bytes string. This required because we + want to call _PyBytes_Resize() the returned object, which we can + only do on bytes objects with refcount == 1. */ + size += 1; new = PyBytes_FromStringAndSize(NULL, size); if (new == NULL) return NULL; - /* XXX Optimize this if the arguments is a list, tuple */ - /* Get the iterator */ it = PyObject_GetIter(x); if (it == NULL) @@ -3023,7 +2697,7 @@ /* Append the byte */ if (i >= size) { - size *= 2; + size = 2 * size + 1; if (_PyBytes_Resize(&new, size) < 0) goto error; } @@ -3194,7 +2868,7 @@ /* _PyBytes_FormatLong emulates the format codes d, u, o, x and X, and * the F_ALT flag, for Python's long (unbounded) ints. It's not used for * Python's regular ints. - * Return value: a new PyString*, or NULL if error. + * Return value: a new PyBytes*, or NULL if error. * . *pbuf is set to point into it, * *plen set to the # of chars following that. * Caller must decref it when done using pbuf. Modified: python/branches/py3k-cdecimal/Objects/longobject.c ============================================================================== --- python/branches/py3k-cdecimal/Objects/longobject.c (original) +++ python/branches/py3k-cdecimal/Objects/longobject.c Thu Jan 21 20:32:23 2010 @@ -4296,6 +4296,187 @@ } #endif + +PyDoc_STRVAR(long_to_bytes_doc, +"int.to_bytes(length, byteorder, *, signed=False) -> bytes\n\ +\n\ +Return an array of bytes representing an integer.\n\ +\n\ +The integer is represented using length bytes. An OverflowError is\n\ +raised if the integer is not representable with the given number of\n\ +bytes.\n\ +\n\ +The byteorder argument determines the byte order used to represent the\n\ +integer. If byteorder is 'big', the most significant byte is at the\n\ +beginning of the byte array. If byteorder is 'little', the most\n\ +significant byte is at the end of the byte array. To request the native\n\ +byte order of the host system, use `sys.byteorder' as the byte order value.\n\ +\n\ +The signed keyword-only argument determines whether two's complement is\n\ +used to represent the integer. If signed is False and a negative integer\n\ +is given, an OverflowError is raised."); + +static PyObject * +long_to_bytes(PyLongObject *v, PyObject *args, PyObject *kwds) +{ + PyObject *byteorder_str; + PyObject *is_signed_obj = NULL; + Py_ssize_t length; + int little_endian; + int is_signed; + PyObject *bytes; + static char *kwlist[] = {"length", "byteorder", "signed", NULL}; + + if (!PyArg_ParseTupleAndKeywords(args, kwds, "nU|O:to_bytes", kwlist, + &length, &byteorder_str, + &is_signed_obj)) + return NULL; + + if (args != NULL && Py_SIZE(args) > 2) { + PyErr_SetString(PyExc_TypeError, + "'signed' is a keyword-only argument"); + return NULL; + } + + if (!PyUnicode_CompareWithASCIIString(byteorder_str, "little")) + little_endian = 1; + else if (!PyUnicode_CompareWithASCIIString(byteorder_str, "big")) + little_endian = 0; + else { + PyErr_SetString(PyExc_ValueError, + "byteorder must be either 'little' or 'big'"); + return NULL; + } + + if (is_signed_obj != NULL) { + int cmp = PyObject_IsTrue(is_signed_obj); + if (cmp < 0) + return NULL; + is_signed = cmp ? 1 : 0; + } + else { + /* If the signed argument was omitted, use False as the + default. */ + is_signed = 0; + } + + if (length < 0) { + PyErr_SetString(PyExc_ValueError, + "length argument must be non-negative"); + return NULL; + } + + bytes = PyBytes_FromStringAndSize(NULL, length); + if (bytes == NULL) + return NULL; + + if (_PyLong_AsByteArray(v, (unsigned char *)PyBytes_AS_STRING(bytes), + length, little_endian, is_signed) < 0) { + Py_DECREF(bytes); + return NULL; + } + + return bytes; +} + +PyDoc_STRVAR(long_from_bytes_doc, +"int.from_bytes(bytes, byteorder, *, signed=False) -> int\n\ +\n\ +Return the integer represented by the given array of bytes.\n\ +\n\ +The bytes argument must either support the buffer protocol or be an\n\ +iterable object producing bytes. Bytes and bytearray are examples of\n\ +built-in objects that support the buffer protocol.\n\ +\n\ +The byteorder argument determines the byte order used to represent the\n\ +integer. If byteorder is 'big', the most significant byte is at the\n\ +beginning of the byte array. If byteorder is 'little', the most\n\ +significant byte is at the end of the byte array. To request the native\n\ +byte order of the host system, use `sys.byteorder' as the byte order value.\n\ +\n\ +The signed keyword-only argument indicates whether two's complement is\n\ +used to represent the integer."); + +static PyObject * +long_from_bytes(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + PyObject *byteorder_str; + PyObject *is_signed_obj = NULL; + int little_endian; + int is_signed; + PyObject *obj; + PyObject *bytes; + PyObject *long_obj; + static char *kwlist[] = {"bytes", "byteorder", "signed", NULL}; + + if (!PyArg_ParseTupleAndKeywords(args, kwds, "OU|O:from_bytes", kwlist, + &obj, &byteorder_str, + &is_signed_obj)) + return NULL; + + if (args != NULL && Py_SIZE(args) > 2) { + PyErr_SetString(PyExc_TypeError, + "'signed' is a keyword-only argument"); + return NULL; + } + + if (!PyUnicode_CompareWithASCIIString(byteorder_str, "little")) + little_endian = 1; + else if (!PyUnicode_CompareWithASCIIString(byteorder_str, "big")) + little_endian = 0; + else { + PyErr_SetString(PyExc_ValueError, + "byteorder must be either 'little' or 'big'"); + return NULL; + } + + if (is_signed_obj != NULL) { + int cmp = PyObject_IsTrue(is_signed_obj); + if (cmp < 0) + return NULL; + is_signed = cmp ? 1 : 0; + } + else { + /* If the signed argument was omitted, use False as the + default. */ + is_signed = 0; + } + + bytes = PyObject_Bytes(obj); + if (bytes == NULL) + return NULL; + + long_obj = _PyLong_FromByteArray( + (unsigned char *)PyBytes_AS_STRING(bytes), Py_SIZE(bytes), + little_endian, is_signed); + Py_DECREF(bytes); + + /* If from_bytes() was used on subclass, allocate new subclass + * instance, initialize it with decoded long value and return it. + */ + if (type != &PyLong_Type && PyType_IsSubtype(type, &PyLong_Type)) { + PyLongObject *newobj; + int i; + Py_ssize_t n = ABS(Py_SIZE(long_obj)); + + newobj = (PyLongObject *)type->tp_alloc(type, n); + if (newobj == NULL) { + Py_DECREF(long_obj); + return NULL; + } + assert(PyLong_Check(newobj)); + Py_SIZE(newobj) = Py_SIZE(long_obj); + for (i = 0; i < n; i++) { + newobj->ob_digit[i] = + ((PyLongObject *)long_obj)->ob_digit[i]; + } + Py_DECREF(long_obj); + return (PyObject *)newobj; + } + + return long_obj; +} + static PyMethodDef long_methods[] = { {"conjugate", (PyCFunction)long_long, METH_NOARGS, "Returns self, the complex conjugate of any int."}, @@ -4305,6 +4486,10 @@ {"is_finite", (PyCFunction)long_is_finite, METH_NOARGS, "Returns always True."}, #endif + {"to_bytes", (PyCFunction)long_to_bytes, + METH_VARARGS|METH_KEYWORDS, long_to_bytes_doc}, + {"from_bytes", (PyCFunction)long_from_bytes, + METH_VARARGS|METH_KEYWORDS|METH_CLASS, long_from_bytes_doc}, {"__trunc__", (PyCFunction)long_long, METH_NOARGS, "Truncating an Integral returns itself."}, {"__floor__", (PyCFunction)long_long, METH_NOARGS, Modified: python/branches/py3k-cdecimal/Objects/stringlib/count.h ============================================================================== --- python/branches/py3k-cdecimal/Objects/stringlib/count.h (original) +++ python/branches/py3k-cdecimal/Objects/stringlib/count.h Thu Jan 21 20:32:23 2010 @@ -9,28 +9,22 @@ Py_LOCAL_INLINE(Py_ssize_t) stringlib_count(const STRINGLIB_CHAR* str, Py_ssize_t str_len, - const STRINGLIB_CHAR* sub, Py_ssize_t sub_len) + const STRINGLIB_CHAR* sub, Py_ssize_t sub_len, + Py_ssize_t maxcount) { Py_ssize_t count; if (str_len < 0) return 0; /* start > len(str) */ if (sub_len == 0) - return str_len + 1; + return (str_len < maxcount) ? str_len + 1 : maxcount; - count = fastsearch(str, str_len, sub, sub_len, FAST_COUNT); + count = fastsearch(str, str_len, sub, sub_len, maxcount, FAST_COUNT); if (count < 0) - count = 0; /* no match */ + return 0; /* no match */ return count; } #endif - -/* -Local variables: -c-basic-offset: 4 -indent-tabs-mode: nil -End: -*/ Modified: python/branches/py3k-cdecimal/Objects/stringlib/ctype.h ============================================================================== --- python/branches/py3k-cdecimal/Objects/stringlib/ctype.h (original) +++ python/branches/py3k-cdecimal/Objects/stringlib/ctype.h Thu Jan 21 20:32:23 2010 @@ -107,4 +107,3 @@ STRINGLIB_LEN(self)); return newobj; } - Modified: python/branches/py3k-cdecimal/Objects/stringlib/fastsearch.h ============================================================================== --- python/branches/py3k-cdecimal/Objects/stringlib/fastsearch.h (original) +++ python/branches/py3k-cdecimal/Objects/stringlib/fastsearch.h Thu Jan 21 20:32:23 2010 @@ -18,18 +18,33 @@ #define FAST_SEARCH 1 #define FAST_RSEARCH 2 +#if LONG_BIT >= 128 +#define STRINGLIB_BLOOM_WIDTH 128 +#elif LONG_BIT >= 64 +#define STRINGLIB_BLOOM_WIDTH 64 +#elif LONG_BIT >= 32 +#define STRINGLIB_BLOOM_WIDTH 32 +#else +#error "LONG_BIT is smaller than 32" +#endif + +#define STRINGLIB_BLOOM_ADD(mask, ch) \ + ((mask |= (1UL << ((ch) & (STRINGLIB_BLOOM_WIDTH -1))))) +#define STRINGLIB_BLOOM(mask, ch) \ + ((mask & (1UL << ((ch) & (STRINGLIB_BLOOM_WIDTH -1))))) + Py_LOCAL_INLINE(Py_ssize_t) fastsearch(const STRINGLIB_CHAR* s, Py_ssize_t n, const STRINGLIB_CHAR* p, Py_ssize_t m, - int mode) + Py_ssize_t maxcount, int mode) { - long mask; + unsigned long mask; Py_ssize_t skip, count = 0; Py_ssize_t i, j, mlast, w; w = n - m; - if (w < 0) + if (w < 0 || (mode == FAST_COUNT && maxcount == 0)) return -1; /* look for special cases */ @@ -39,8 +54,11 @@ /* use special case for 1-character strings */ if (mode == FAST_COUNT) { for (i = 0; i < n; i++) - if (s[i] == p[0]) + if (s[i] == p[0]) { count++; + if (count == maxcount) + return maxcount; + } return count; } else if (mode == FAST_SEARCH) { for (i = 0; i < n; i++) @@ -56,19 +74,20 @@ mlast = m - 1; skip = mlast - 1; + mask = 0; if (mode != FAST_RSEARCH) { /* create compressed boyer-moore delta 1 table */ /* process pattern[:-1] */ - for (mask = i = 0; i < mlast; i++) { - mask |= (1 << (p[i] & 0x1F)); + for (i = 0; i < mlast; i++) { + STRINGLIB_BLOOM_ADD(mask, p[i]); if (p[i] == p[mlast]) skip = mlast - i - 1; } /* process pattern[-1] outside the loop */ - mask |= (1 << (p[mlast] & 0x1F)); + STRINGLIB_BLOOM_ADD(mask, p[mlast]); for (i = 0; i <= w; i++) { /* note: using mlast in the skip path slows things down on x86 */ @@ -82,17 +101,19 @@ if (mode != FAST_COUNT) return i; count++; + if (count == maxcount) + return maxcount; i = i + mlast; continue; } /* miss: check if next character is part of pattern */ - if (!(mask & (1 << (s[i+m] & 0x1F)))) + if (!STRINGLIB_BLOOM(mask, s[i+m])) i = i + m; else i = i + skip; } else { /* skip: check if next character is part of pattern */ - if (!(mask & (1 << (s[i+m] & 0x1F)))) + if (!STRINGLIB_BLOOM(mask, s[i+m])) i = i + m; } } @@ -101,10 +122,10 @@ /* create compressed boyer-moore delta 1 table */ /* process pattern[0] outside the loop */ - mask = (1 << (p[0] & 0x1F)); + STRINGLIB_BLOOM_ADD(mask, p[0]); /* process pattern[:0:-1] */ for (i = mlast; i > 0; i--) { - mask |= (1 << (p[i] & 0x1F)); + STRINGLIB_BLOOM_ADD(mask, p[i]); if (p[i] == p[0]) skip = i - 1; } @@ -119,13 +140,13 @@ /* got a match! */ return i; /* miss: check if previous character is part of pattern */ - if (!(mask & (1 << (s[i-1] & 0x1F)))) + if (!STRINGLIB_BLOOM(mask, s[i-1])) i = i - m; else i = i - skip; } else { /* skip: check if previous character is part of pattern */ - if (!(mask & (1 << (s[i-1] & 0x1F)))) + if (!STRINGLIB_BLOOM(mask, s[i-1])) i = i - m; } } @@ -137,10 +158,3 @@ } #endif - -/* -Local variables: -c-basic-offset: 4 -indent-tabs-mode: nil -End: -*/ Modified: python/branches/py3k-cdecimal/Objects/stringlib/find.h ============================================================================== --- python/branches/py3k-cdecimal/Objects/stringlib/find.h (original) +++ python/branches/py3k-cdecimal/Objects/stringlib/find.h Thu Jan 21 20:32:23 2010 @@ -19,7 +19,7 @@ if (sub_len == 0) return offset; - pos = fastsearch(str, str_len, sub, sub_len, FAST_SEARCH); + pos = fastsearch(str, str_len, sub, sub_len, -1, FAST_SEARCH); if (pos >= 0) pos += offset; @@ -39,7 +39,7 @@ if (sub_len == 0) return str_len + offset; - pos = fastsearch(str, str_len, sub, sub_len, FAST_RSEARCH); + pos = fastsearch(str, str_len, sub, sub_len, -1, FAST_RSEARCH); if (pos >= 0) pos += offset; @@ -47,22 +47,27 @@ return pos; } +/* helper macro to fixup start/end slice values */ +#define ADJUST_INDICES(start, end, len) \ + if (end > len) \ + end = len; \ + else if (end < 0) { \ + end += len; \ + if (end < 0) \ + end = 0; \ + } \ + if (start < 0) { \ + start += len; \ + if (start < 0) \ + start = 0; \ + } + Py_LOCAL_INLINE(Py_ssize_t) stringlib_find_slice(const STRINGLIB_CHAR* str, Py_ssize_t str_len, const STRINGLIB_CHAR* sub, Py_ssize_t sub_len, Py_ssize_t start, Py_ssize_t end) { - if (start < 0) - start += str_len; - if (start < 0) - start = 0; - if (end > str_len) - end = str_len; - if (end < 0) - end += str_len; - if (end < 0) - end = 0; - + ADJUST_INDICES(start, end, str_len); return stringlib_find(str + start, end - start, sub, sub_len, start); } @@ -71,17 +76,7 @@ const STRINGLIB_CHAR* sub, Py_ssize_t sub_len, Py_ssize_t start, Py_ssize_t end) { - if (start < 0) - start += str_len; - if (start < 0) - start = 0; - if (end > str_len) - end = str_len; - if (end < 0) - end += str_len; - if (end < 0) - end = 0; - + ADJUST_INDICES(start, end, str_len); return stringlib_rfind(str + start, end - start, sub, sub_len, start); } @@ -96,9 +91,9 @@ ) != -1; } -#endif /* STRINGLIB_STR */ +#endif /* STRINGLIB_WANT_CONTAINS_OBJ */ -#ifdef FROM_UNICODE +#if STRINGLIB_IS_UNICODE /* This function is a helper for the "find" family (find, rfind, index, @@ -146,13 +141,6 @@ return 1; } -#endif /* FROM_UNICODE */ +#endif /* STRINGLIB_IS_UNICODE */ #endif /* STRINGLIB_FIND_H */ - -/* -Local variables: -c-basic-offset: 4 -indent-tabs-mode: nil -End: -*/ Modified: python/branches/py3k-cdecimal/Objects/stringlib/partition.h ============================================================================== --- python/branches/py3k-cdecimal/Objects/stringlib/partition.h (original) +++ python/branches/py3k-cdecimal/Objects/stringlib/partition.h Thu Jan 21 20:32:23 2010 @@ -8,33 +8,39 @@ #endif Py_LOCAL_INLINE(PyObject*) -stringlib_partition( - PyObject* str_obj, const STRINGLIB_CHAR* str, Py_ssize_t str_len, - PyObject* sep_obj, const STRINGLIB_CHAR* sep, Py_ssize_t sep_len - ) +stringlib_partition(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + PyObject* sep_obj, + const STRINGLIB_CHAR* sep, Py_ssize_t sep_len) { PyObject* out; Py_ssize_t pos; if (sep_len == 0) { PyErr_SetString(PyExc_ValueError, "empty separator"); - return NULL; + return NULL; } out = PyTuple_New(3); if (!out) - return NULL; + return NULL; - pos = fastsearch(str, str_len, sep, sep_len, FAST_SEARCH); + pos = fastsearch(str, str_len, sep, sep_len, -1, FAST_SEARCH); if (pos < 0) { - Py_INCREF(str_obj); - PyTuple_SET_ITEM(out, 0, (PyObject*) str_obj); - Py_INCREF(STRINGLIB_EMPTY); - PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY); - Py_INCREF(STRINGLIB_EMPTY); - PyTuple_SET_ITEM(out, 2, (PyObject*) STRINGLIB_EMPTY); - return out; +#if STRINGLIB_MUTABLE + PyTuple_SET_ITEM(out, 0, STRINGLIB_NEW(str, str_len)); + PyTuple_SET_ITEM(out, 1, STRINGLIB_NEW(NULL, 0)); + PyTuple_SET_ITEM(out, 2, STRINGLIB_NEW(NULL, 0)); +#else + Py_INCREF(str_obj); + PyTuple_SET_ITEM(out, 0, (PyObject*) str_obj); + Py_INCREF(STRINGLIB_EMPTY); + PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY); + Py_INCREF(STRINGLIB_EMPTY); + PyTuple_SET_ITEM(out, 2, (PyObject*) STRINGLIB_EMPTY); +#endif + return out; } PyTuple_SET_ITEM(out, 0, STRINGLIB_NEW(str, pos)); @@ -44,41 +50,47 @@ PyTuple_SET_ITEM(out, 2, STRINGLIB_NEW(str + pos, str_len - pos)); if (PyErr_Occurred()) { - Py_DECREF(out); - return NULL; + Py_DECREF(out); + return NULL; } return out; } Py_LOCAL_INLINE(PyObject*) -stringlib_rpartition( - PyObject* str_obj, const STRINGLIB_CHAR* str, Py_ssize_t str_len, - PyObject* sep_obj, const STRINGLIB_CHAR* sep, Py_ssize_t sep_len - ) +stringlib_rpartition(PyObject* str_obj, + const STRINGLIB_CHAR* str, Py_ssize_t str_len, + PyObject* sep_obj, + const STRINGLIB_CHAR* sep, Py_ssize_t sep_len) { PyObject* out; Py_ssize_t pos; if (sep_len == 0) { PyErr_SetString(PyExc_ValueError, "empty separator"); - return NULL; + return NULL; } out = PyTuple_New(3); if (!out) - return NULL; + return NULL; - pos = fastsearch(str, str_len, sep, sep_len, FAST_RSEARCH); + pos = fastsearch(str, str_len, sep, sep_len, -1, FAST_RSEARCH); if (pos < 0) { - Py_INCREF(STRINGLIB_EMPTY); - PyTuple_SET_ITEM(out, 0, (PyObject*) STRINGLIB_EMPTY); - Py_INCREF(STRINGLIB_EMPTY); - PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY); - Py_INCREF(str_obj); - PyTuple_SET_ITEM(out, 2, (PyObject*) str_obj); - return out; +#if STRINGLIB_MUTABLE + PyTuple_SET_ITEM(out, 0, STRINGLIB_NEW(NULL, 0)); + PyTuple_SET_ITEM(out, 1, STRINGLIB_NEW(NULL, 0)); + PyTuple_SET_ITEM(out, 2, STRINGLIB_NEW(str, str_len)); +#else + Py_INCREF(STRINGLIB_EMPTY); + PyTuple_SET_ITEM(out, 0, (PyObject*) STRINGLIB_EMPTY); + Py_INCREF(STRINGLIB_EMPTY); + PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY); + Py_INCREF(str_obj); + PyTuple_SET_ITEM(out, 2, (PyObject*) str_obj); +#endif + return out; } PyTuple_SET_ITEM(out, 0, STRINGLIB_NEW(str, pos)); @@ -88,18 +100,11 @@ PyTuple_SET_ITEM(out, 2, STRINGLIB_NEW(str + pos, str_len - pos)); if (PyErr_Occurred()) { - Py_DECREF(out); - return NULL; + Py_DECREF(out); + return NULL; } return out; } #endif - -/* -Local variables: -c-basic-offset: 4 -indent-tabs-mode: nil -End: -*/ Modified: python/branches/py3k-cdecimal/Objects/stringlib/stringdefs.h ============================================================================== --- python/branches/py3k-cdecimal/Objects/stringlib/stringdefs.h (original) +++ python/branches/py3k-cdecimal/Objects/stringlib/stringdefs.h Thu Jan 21 20:32:23 2010 @@ -11,6 +11,8 @@ #define STRINGLIB_TYPE_NAME "string" #define STRINGLIB_PARSE_CODE "S" #define STRINGLIB_EMPTY nullstring +#define STRINGLIB_ISSPACE Py_ISSPACE +#define STRINGLIB_ISLINEBREAK(x) ((x == '\n') || (x == '\r')) #define STRINGLIB_ISDECIMAL(x) ((x >= '0') && (x <= '9')) #define STRINGLIB_TODECIMAL(x) (STRINGLIB_ISDECIMAL(x) ? (x - '0') : -1) #define STRINGLIB_TOUPPER Py_TOUPPER Modified: python/branches/py3k-cdecimal/Objects/stringlib/transmogrify.h ============================================================================== --- python/branches/py3k-cdecimal/Objects/stringlib/transmogrify.h (original) +++ python/branches/py3k-cdecimal/Objects/stringlib/transmogrify.h Thu Jan 21 20:32:23 2010 @@ -1,13 +1,6 @@ /* NOTE: this API is -ONLY- for use with single byte character strings. */ /* Do not use it with Unicode. */ -#include "bytes_methods.h" - -#ifndef STRINGLIB_MUTABLE -#warning "STRINGLIB_MUTABLE not defined before #include, assuming 0" -#define STRINGLIB_MUTABLE 0 -#endif - /* the more complicated methods. parts of these should be pulled out into the shared code in bytes_methods.c to cut down on duplicate code bloat. */ @@ -269,87 +262,3 @@ return (PyObject*) s; } - - -#define _STRINGLIB_SPLIT_APPEND(data, left, right) \ - str = STRINGLIB_NEW((data) + (left), \ - (right) - (left)); \ - if (str == NULL) \ - goto onError; \ - if (PyList_Append(list, str)) { \ - Py_DECREF(str); \ - goto onError; \ - } \ - else \ - Py_DECREF(str); - -PyDoc_STRVAR(splitlines__doc__, -"B.splitlines([keepends]) -> list of lines\n\ -\n\ -Return a list of the lines in B, breaking at line boundaries.\n\ -Line breaks are not included in the resulting list unless keepends\n\ -is given and true."); - -static PyObject* -stringlib_splitlines(PyObject *self, PyObject *args) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len; - int keepends = 0; - PyObject *list; - PyObject *str; - char *data; - - if (!PyArg_ParseTuple(args, "|i:splitlines", &keepends)) - return NULL; - - data = STRINGLIB_STR(self); - len = STRINGLIB_LEN(self); - - /* This does not use the preallocated list because splitlines is - usually run with hundreds of newlines. The overhead of - switching between PyList_SET_ITEM and append causes about a - 2-3% slowdown for that common case. A smarter implementation - could move the if check out, so the SET_ITEMs are done first - and the appends only done when the prealloc buffer is full. - That's too much work for little gain.*/ - - list = PyList_New(0); - if (!list) - goto onError; - - for (i = j = 0; i < len; ) { - Py_ssize_t eol; - - /* Find a line and append it */ - while (i < len && data[i] != '\n' && data[i] != '\r') - i++; - - /* Skip the line break reading CRLF as one line break */ - eol = i; - if (i < len) { - if (data[i] == '\r' && i + 1 < len && - data[i+1] == '\n') - i += 2; - else - i++; - if (keepends) - eol = i; - } - _STRINGLIB_SPLIT_APPEND(data, j, eol); - j = i; - } - if (j < len) { - _STRINGLIB_SPLIT_APPEND(data, j, len); - } - - return list; - - onError: - Py_XDECREF(list); - return NULL; -} - -#undef _STRINGLIB_SPLIT_APPEND - Modified: python/branches/py3k-cdecimal/Objects/stringlib/unicodedefs.h ============================================================================== --- python/branches/py3k-cdecimal/Objects/stringlib/unicodedefs.h (original) +++ python/branches/py3k-cdecimal/Objects/stringlib/unicodedefs.h Thu Jan 21 20:32:23 2010 @@ -11,6 +11,8 @@ #define STRINGLIB_TYPE_NAME "unicode" #define STRINGLIB_PARSE_CODE "U" #define STRINGLIB_EMPTY unicode_empty +#define STRINGLIB_ISSPACE Py_UNICODE_ISSPACE +#define STRINGLIB_ISLINEBREAK BLOOM_LINEBREAK #define STRINGLIB_ISDECIMAL Py_UNICODE_ISDECIMAL #define STRINGLIB_TODECIMAL Py_UNICODE_TODECIMAL #define STRINGLIB_TOUPPER Py_UNICODE_TOUPPER Modified: python/branches/py3k-cdecimal/Objects/unicodeobject.c ============================================================================== --- python/branches/py3k-cdecimal/Objects/unicodeobject.c (original) +++ python/branches/py3k-cdecimal/Objects/unicodeobject.c Thu Jan 21 20:32:23 2010 @@ -206,11 +206,22 @@ /* the linebreak mask is set up by Unicode_Init below */ +#if LONG_BIT >= 128 +#define BLOOM_WIDTH 128 +#elif LONG_BIT >= 64 +#define BLOOM_WIDTH 64 +#elif LONG_BIT >= 32 +#define BLOOM_WIDTH 32 +#else +#error "LONG_BIT is smaller than 32" +#endif + #define BLOOM_MASK unsigned long static BLOOM_MASK bloom_linebreak; -#define BLOOM(mask, ch) ((mask & (1 << ((ch) & 0x1F)))) +#define BLOOM_ADD(mask, ch) ((mask |= (1UL << ((ch) & (BLOOM_WIDTH - 1))))) +#define BLOOM(mask, ch) ((mask & (1UL << ((ch) & (BLOOM_WIDTH - 1))))) #define BLOOM_LINEBREAK(ch) \ ((ch) < 128U ? ascii_linebreak[(ch)] : \ @@ -220,12 +231,12 @@ { /* calculate simple bloom-style bitmask for a given unicode string */ - long mask; + BLOOM_MASK mask; Py_ssize_t i; mask = 0; for (i = 0; i < len; i++) - mask |= (1 << (ptr[i] & 0x1F)); + BLOOM_ADD(mask, ptr[i]); return mask; } @@ -5873,28 +5884,30 @@ #include "stringlib/unicodedefs.h" #include "stringlib/fastsearch.h" + #include "stringlib/count.h" -/* Include _ParseTupleFinds from find.h */ -#define FROM_UNICODE #include "stringlib/find.h" #include "stringlib/partition.h" +#include "stringlib/split.h" #define _Py_InsertThousandsGrouping _PyUnicode_InsertThousandsGrouping #define _Py_InsertThousandsGroupingLocale _PyUnicode_InsertThousandsGroupingLocale #include "stringlib/localeutil.h" /* helper macro to fixup start/end slice values */ -#define FIX_START_END(obj) \ - if (start < 0) \ - start += (obj)->length; \ - if (start < 0) \ - start = 0; \ - if (end > (obj)->length) \ - end = (obj)->length; \ - if (end < 0) \ - end += (obj)->length; \ - if (end < 0) \ - end = 0; +#define ADJUST_INDICES(start, end, len) \ + if (end > len) \ + end = len; \ + else if (end < 0) { \ + end += len; \ + if (end < 0) \ + end = 0; \ + } \ + if (start < 0) { \ + start += len; \ + if (start < 0) \ + start = 0; \ + } Py_ssize_t PyUnicode_Count(PyObject *str, PyObject *substr, @@ -5914,10 +5927,10 @@ return -1; } - FIX_START_END(str_obj); - + ADJUST_INDICES(start, end, str_obj->length); result = stringlib_count( - str_obj->str + start, end - start, sub_obj->str, sub_obj->length + str_obj->str + start, end - start, sub_obj->str, sub_obj->length, + PY_SSIZE_T_MAX ); Py_DECREF(sub_obj); @@ -5972,8 +5985,7 @@ if (substring->length == 0) return 1; - FIX_START_END(self); - + ADJUST_INDICES(start, end, self->length); end -= substring->length; if (end < start) return 0; @@ -6314,305 +6326,40 @@ return u; } -#define SPLIT_APPEND(data, left, right) \ - str = PyUnicode_FromUnicode((data) + (left), (right) - (left)); \ - if (!str) \ - goto onError; \ - if (PyList_Append(list, str)) { \ - Py_DECREF(str); \ - goto onError; \ - } \ - else \ - Py_DECREF(str); - -static -PyObject *split_whitespace(PyUnicodeObject *self, - PyObject *list, - Py_ssize_t maxcount) +PyObject *PyUnicode_Splitlines(PyObject *string, int keepends) { - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len = self->length; - PyObject *str; - register const Py_UNICODE *buf = self->str; - - for (i = j = 0; i < len; ) { - /* find a token */ - while (i < len && Py_UNICODE_ISSPACE(buf[i])) - i++; - j = i; - while (i < len && !Py_UNICODE_ISSPACE(buf[i])) - i++; - if (j < i) { - if (maxcount-- <= 0) - break; - SPLIT_APPEND(buf, j, i); - while (i < len && Py_UNICODE_ISSPACE(buf[i])) - i++; - j = i; - } - } - if (j < len) { - SPLIT_APPEND(buf, j, len); - } - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -PyObject *PyUnicode_Splitlines(PyObject *string, - int keepends) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len; PyObject *list; - PyObject *str; - Py_UNICODE *data; string = PyUnicode_FromObject(string); if (string == NULL) return NULL; - data = PyUnicode_AS_UNICODE(string); - len = PyUnicode_GET_SIZE(string); - list = PyList_New(0); - if (!list) - goto onError; + list = stringlib_splitlines( + (PyObject*) string, PyUnicode_AS_UNICODE(string), + PyUnicode_GET_SIZE(string), keepends); - for (i = j = 0; i < len; ) { - Py_ssize_t eol; - - /* Find a line and append it */ - while (i < len && !BLOOM_LINEBREAK(data[i])) - i++; - - /* Skip the line break reading CRLF as one line break */ - eol = i; - if (i < len) { - if (data[i] == '\r' && i + 1 < len && - data[i+1] == '\n') - i += 2; - else - i++; - if (keepends) - eol = i; - } - SPLIT_APPEND(data, j, eol); - j = i; - } - if (j < len) { - SPLIT_APPEND(data, j, len); - } - - Py_DECREF(string); - return list; - - onError: - Py_XDECREF(list); Py_DECREF(string); - return NULL; -} - -static -PyObject *split_char(PyUnicodeObject *self, - PyObject *list, - Py_UNICODE ch, - Py_ssize_t maxcount) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len = self->length; - PyObject *str; - register const Py_UNICODE *buf = self->str; - - for (i = j = 0; i < len; ) { - if (buf[i] == ch) { - if (maxcount-- <= 0) - break; - SPLIT_APPEND(buf, j, i); - i = j = i + 1; - } else - i++; - } - if (j <= len) { - SPLIT_APPEND(buf, j, len); - } return list; - - onError: - Py_DECREF(list); - return NULL; } static -PyObject *split_substring(PyUnicodeObject *self, - PyObject *list, - PyUnicodeObject *substring, - Py_ssize_t maxcount) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len = self->length; - Py_ssize_t sublen = substring->length; - PyObject *str; - - for (i = j = 0; i <= len - sublen; ) { - if (Py_UNICODE_MATCH(self, i, substring)) { - if (maxcount-- <= 0) - break; - SPLIT_APPEND(self->str, j, i); - i = j = i + sublen; - } else - i++; - } - if (j <= len) { - SPLIT_APPEND(self->str, j, len); - } - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -static -PyObject *rsplit_whitespace(PyUnicodeObject *self, - PyObject *list, - Py_ssize_t maxcount) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len = self->length; - PyObject *str; - register const Py_UNICODE *buf = self->str; - - for (i = j = len - 1; i >= 0; ) { - /* find a token */ - while (i >= 0 && Py_UNICODE_ISSPACE(buf[i])) - i--; - j = i; - while (i >= 0 && !Py_UNICODE_ISSPACE(buf[i])) - i--; - if (j > i) { - if (maxcount-- <= 0) - break; - SPLIT_APPEND(buf, i + 1, j + 1); - while (i >= 0 && Py_UNICODE_ISSPACE(buf[i])) - i--; - j = i; - } - } - if (j >= 0) { - SPLIT_APPEND(buf, 0, j + 1); - } - if (PyList_Reverse(list) < 0) - goto onError; - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -static -PyObject *rsplit_char(PyUnicodeObject *self, - PyObject *list, - Py_UNICODE ch, - Py_ssize_t maxcount) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len = self->length; - PyObject *str; - register const Py_UNICODE *buf = self->str; - - for (i = j = len - 1; i >= 0; ) { - if (buf[i] == ch) { - if (maxcount-- <= 0) - break; - SPLIT_APPEND(buf, i + 1, j + 1); - j = i = i - 1; - } else - i--; - } - if (j >= -1) { - SPLIT_APPEND(buf, 0, j + 1); - } - if (PyList_Reverse(list) < 0) - goto onError; - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -static -PyObject *rsplit_substring(PyUnicodeObject *self, - PyObject *list, - PyUnicodeObject *substring, - Py_ssize_t maxcount) -{ - register Py_ssize_t i; - register Py_ssize_t j; - Py_ssize_t len = self->length; - Py_ssize_t sublen = substring->length; - PyObject *str; - - for (i = len - sublen, j = len; i >= 0; ) { - if (Py_UNICODE_MATCH(self, i, substring)) { - if (maxcount-- <= 0) - break; - SPLIT_APPEND(self->str, i + sublen, j); - j = i; - i -= sublen; - } else - i--; - } - if (j >= 0) { - SPLIT_APPEND(self->str, 0, j); - } - if (PyList_Reverse(list) < 0) - goto onError; - return list; - - onError: - Py_DECREF(list); - return NULL; -} - -#undef SPLIT_APPEND - -static PyObject *split(PyUnicodeObject *self, PyUnicodeObject *substring, Py_ssize_t maxcount) { - PyObject *list; - if (maxcount < 0) maxcount = PY_SSIZE_T_MAX; - list = PyList_New(0); - if (!list) - return NULL; - if (substring == NULL) - return split_whitespace(self,list,maxcount); - - else if (substring->length == 1) - return split_char(self,list,substring->str[0],maxcount); + return stringlib_split_whitespace( + (PyObject*) self, self->str, self->length, maxcount + ); - else if (substring->length == 0) { - Py_DECREF(list); - PyErr_SetString(PyExc_ValueError, "empty separator"); - return NULL; - } - else - return split_substring(self,list,substring,maxcount); + return stringlib_split( + (PyObject*) self, self->str, self->length, + substring->str, substring->length, + maxcount + ); } static @@ -6620,28 +6367,19 @@ PyUnicodeObject *substring, Py_ssize_t maxcount) { - PyObject *list; - if (maxcount < 0) maxcount = PY_SSIZE_T_MAX; - list = PyList_New(0); - if (!list) - return NULL; - if (substring == NULL) - return rsplit_whitespace(self,list,maxcount); - - else if (substring->length == 1) - return rsplit_char(self,list,substring->str[0],maxcount); + return stringlib_rsplit_whitespace( + (PyObject*) self, self->str, self->length, maxcount + ); - else if (substring->length == 0) { - Py_DECREF(list); - PyErr_SetString(PyExc_ValueError, "empty separator"); - return NULL; - } - else - return rsplit_substring(self,list,substring,maxcount); + return stringlib_rsplit( + (PyObject*) self, self->str, self->length, + substring->str, substring->length, + maxcount + ); } static @@ -6654,10 +6392,14 @@ if (maxcount < 0) maxcount = PY_SSIZE_T_MAX; + else if (maxcount == 0 || self->length == 0) + goto nothing; if (str1->length == str2->length) { - /* same length */ Py_ssize_t i; + /* same length */ + if (str1->length == 0) + goto nothing; if (str1->length == 1) { /* replace characters */ Py_UNICODE u1, u2; @@ -6676,8 +6418,8 @@ u->str[i] = u2; } } else { - i = fastsearch( - self->str, self->length, str1->str, str1->length, FAST_SEARCH + i = stringlib_find( + self->str, self->length, str1->str, str1->length, 0 ); if (i < 0) goto nothing; @@ -6685,14 +6427,20 @@ if (!u) return NULL; Py_UNICODE_COPY(u->str, self->str, self->length); - while (i <= self->length - str1->length) - if (Py_UNICODE_MATCH(self, i, str1)) { - if (--maxcount < 0) - break; - Py_UNICODE_COPY(u->str+i, str2->str, str2->length); - i += str1->length; - } else - i++; + + /* change everything in-place, starting with this one */ + Py_UNICODE_COPY(u->str+i, str2->str, str2->length); + i += str1->length; + + while ( --maxcount > 0) { + i = stringlib_find(self->str+i, self->length-i, + str1->str, str1->length, + i); + if (i == -1) + break; + Py_UNICODE_COPY(u->str+i, str2->str, str2->length); + i += str1->length; + } } } else { @@ -6701,9 +6449,8 @@ Py_UNICODE *p; /* replace strings */ - n = stringlib_count(self->str, self->length, str1->str, str1->length); - if (n > maxcount) - n = maxcount; + n = stringlib_count(self->str, self->length, str1->str, str1->length, + maxcount); if (n == 0) goto nothing; /* new_size = self->length + n * (str2->length - str1->length)); */ @@ -6733,15 +6480,12 @@ if (str1->length > 0) { while (n-- > 0) { /* look for next match */ - j = i; - while (j <= e) { - if (Py_UNICODE_MATCH(self, j, str1)) - break; - j++; - } - if (j > i) { - if (j > e) - break; + j = stringlib_find(self->str+i, self->length-i, + str1->str, str1->length, + i); + if (j == -1) + break; + else if (j > i) { /* copy unchanged part [i:j] */ Py_UNICODE_COPY(p, self->str+i, j-i); p += j - i; @@ -7001,6 +6745,11 @@ for (i = 0; id[i] && str[i]; i++) if (id[i] != str[i]) return ((int)id[i] < (int)str[i]) ? -1 : 1; + /* This check keeps Python strings that end in '\0' from comparing equal + to C strings identical up to that point. */ + if (PyUnicode_GET_SIZE(uni) != i) + /* We'll say the Python string is longer. */ + return 1; if (id[i]) return 1; /* uni is longer */ if (str[i]) @@ -7187,11 +6936,11 @@ if (substring == NULL) return NULL; - FIX_START_END(self); - + ADJUST_INDICES(start, end, self->length); result = PyLong_FromSsize_t( stringlib_count(self->str + start, end - start, - substring->str, substring->length) + substring->str, substring->length, + PY_SSIZE_T_MAX) ); Py_DECREF(substring); @@ -10061,11 +9810,3 @@ #ifdef __cplusplus } #endif - - -/* - Local variables: - c-basic-offset: 4 - indent-tabs-mode: nil - End: -*/ Modified: python/branches/py3k-cdecimal/PC/VS8.0/pythoncore.vcproj ============================================================================== --- python/branches/py3k-cdecimal/PC/VS8.0/pythoncore.vcproj (original) +++ python/branches/py3k-cdecimal/PC/VS8.0/pythoncore.vcproj Thu Jan 21 20:32:23 2010 @@ -1491,6 +1491,10 @@ > + + Modified: python/branches/py3k-cdecimal/PCbuild/pythoncore.vcproj ============================================================================== --- python/branches/py3k-cdecimal/PCbuild/pythoncore.vcproj (original) +++ python/branches/py3k-cdecimal/PCbuild/pythoncore.vcproj Thu Jan 21 20:32:23 2010 @@ -1496,6 +1496,10 @@ > + + Modified: python/branches/py3k-cdecimal/Python/dtoa.c ============================================================================== --- python/branches/py3k-cdecimal/Python/dtoa.c (original) +++ python/branches/py3k-cdecimal/Python/dtoa.c Thu Jan 21 20:32:23 2010 @@ -200,10 +200,11 @@ #define STRTOD_DIGLIM 40 #endif -#ifdef DIGLIM_DEBUG -extern int strtod_diglim; -#else -#define strtod_diglim STRTOD_DIGLIM +/* maximum permitted exponent value for strtod; exponents larger than + MAX_ABS_EXP in absolute value get truncated to +-MAX_ABS_EXP. MAX_ABS_EXP + should fit into an int. */ +#ifndef MAX_ABS_EXP +#define MAX_ABS_EXP 19999U #endif /* The following definition of Storeinc is appropriate for MIPS processors. @@ -269,8 +270,7 @@ typedef struct BCinfo BCinfo; struct BCinfo { - int dp0, dp1, dplen, dsign, e0, inexact; - int nd, nd0, rounding, scale, uflchk; + int dsign, e0, nd, nd0, scale; }; #define FFFFFFFF 0xffffffffUL @@ -308,6 +308,8 @@ typedef struct Bigint Bigint; +#ifndef Py_USING_MEMORY_DEBUGGER + /* Memory management: memory is allocated from, and returned to, Kmax+1 pools of memory, where pool k (0 <= k <= Kmax) is for Bigints b with b->maxwds == 1 << k. These pools are maintained as linked lists, with freelist[k] @@ -375,6 +377,48 @@ } } +#else + +/* Alternative versions of Balloc and Bfree that use PyMem_Malloc and + PyMem_Free directly in place of the custom memory allocation scheme above. + These are provided for the benefit of memory debugging tools like + Valgrind. */ + +/* Allocate space for a Bigint with up to 1<k = k; + rv->maxwds = x; + rv->sign = rv->wds = 0; + return rv; +} + +/* Free a Bigint allocated with Balloc */ + +static void +Bfree(Bigint *v) +{ + if (v) { + FREE((void*)v); + } +} + +#endif /* Py_USING_MEMORY_DEBUGGER */ + #define Bcopy(x,y) memcpy((char *)&x->sign, (char *)&y->sign, \ y->wds*sizeof(Long) + 2*sizeof(int)) @@ -437,7 +481,7 @@ NULL on failure. */ static Bigint * -s2b(const char *s, int nd0, int nd, ULong y9, int dplen) +s2b(const char *s, int nd0, int nd, ULong y9) { Bigint *b; int i, k; @@ -451,18 +495,16 @@ b->x[0] = y9; b->wds = 1; - i = 9; - if (9 < nd0) { - s += 9; - do { - b = multadd(b, 10, *s++ - '0'); - if (b == NULL) - return NULL; - } while(++i < nd0); - s += dplen; + if (nd <= 9) + return b; + + s += 9; + for (i = 9; i < nd0; i++) { + b = multadd(b, 10, *s++ - '0'); + if (b == NULL) + return NULL; } - else - s += dplen + 9; + s++; for(; i < nd; i++) { b = multadd(b, 10, *s++ - '0'); if (b == NULL) @@ -654,6 +696,8 @@ return c; } +#ifndef Py_USING_MEMORY_DEBUGGER + /* p5s is a linked list of powers of 5 of the form 5**(2**i), i >= 2 */ static Bigint *p5s; @@ -713,6 +757,58 @@ return b; } +#else + +/* Version of pow5mult that doesn't cache powers of 5. Provided for + the benefit of memory debugging tools like Valgrind. */ + +static Bigint * +pow5mult(Bigint *b, int k) +{ + Bigint *b1, *p5, *p51; + int i; + static int p05[3] = { 5, 25, 125 }; + + if ((i = k & 3)) { + b = multadd(b, p05[i-1], 0); + if (b == NULL) + return NULL; + } + + if (!(k >>= 2)) + return b; + p5 = i2b(625); + if (p5 == NULL) { + Bfree(b); + return NULL; + } + + for(;;) { + if (k & 1) { + b1 = mult(b, p5); + Bfree(b); + b = b1; + if (b == NULL) { + Bfree(p5); + return NULL; + } + } + if (!(k >>= 1)) + break; + p51 = mult(p5, p5); + Bfree(p5); + p5 = p51; + if (p5 == NULL) { + Bfree(b); + return NULL; + } + } + Bfree(p5); + return b; +} + +#endif /* Py_USING_MEMORY_DEBUGGER */ + /* shift a Bigint b left by k bits. Return a pointer to the shifted result, or NULL on failure. If the returned pointer is distinct from b then the original b will have been Bfree'd. Ignores the sign of b. */ @@ -1130,56 +1226,120 @@ return q; } +/* sulp(x) is a version of ulp(x) that takes bc.scale into account. + + Assuming that x is finite and nonnegative (positive zero is fine + here) and x / 2^bc.scale is exactly representable as a double, + sulp(x) is equivalent to 2^bc.scale * ulp(x / 2^bc.scale). */ + +static double +sulp(U *x, BCinfo *bc) +{ + U u; + + if (bc->scale && 2*P + 1 > (int)((word0(x) & Exp_mask) >> Exp_shift)) { + /* rv/2^bc->scale is subnormal */ + word0(&u) = (P+2)*Exp_msk1; + word1(&u) = 0; + return u.d; + } + else { + assert(word0(x) || word1(x)); /* x != 0.0 */ + return ulp(x); + } +} + +/* The bigcomp function handles some hard cases for strtod, for inputs + with more than STRTOD_DIGLIM digits. It's called once an initial + estimate for the double corresponding to the input string has + already been obtained by the code in _Py_dg_strtod. -/* return 0 on success, -1 on failure */ + The bigcomp function is only called after _Py_dg_strtod has found a + double value rv such that either rv or rv + 1ulp represents the + correctly rounded value corresponding to the original string. It + determines which of these two values is the correct one by + computing the decimal digits of rv + 0.5ulp and comparing them with + the corresponding digits of s0. + + In the following, write dv for the absolute value of the number represented + by the input string. + + Inputs: + + s0 points to the first significant digit of the input string. + + rv is a (possibly scaled) estimate for the closest double value to the + value represented by the original input to _Py_dg_strtod. If + bc->scale is nonzero, then rv/2^(bc->scale) is the approximation to + the input value. + + bc is a struct containing information gathered during the parsing and + estimation steps of _Py_dg_strtod. Description of fields follows: + + bc->dsign is 1 if rv < decimal value, 0 if rv >= decimal value. In + normal use, it should almost always be 1 when bigcomp is entered. + + bc->e0 gives the exponent of the input value, such that dv = (integer + given by the bd->nd digits of s0) * 10**e0 + + bc->nd gives the total number of significant digits of s0. It will + be at least 1. + + bc->nd0 gives the number of significant digits of s0 before the + decimal separator. If there's no decimal separator, bc->nd0 == + bc->nd. + + bc->scale is the value used to scale rv to avoid doing arithmetic with + subnormal values. It's either 0 or 2*P (=106). + + Outputs: + + On successful exit, rv/2^(bc->scale) is the closest double to dv. + + Returns 0 on success, -1 on failure (e.g., due to a failed malloc call). */ static int bigcomp(U *rv, const char *s0, BCinfo *bc) { Bigint *b, *d; - int b2, bbits, d2, dd, dig, dsign, i, j, nd, nd0, p2, p5, speccase; + int b2, bbits, d2, dd, i, nd, nd0, odd, p2, p5; - dsign = bc->dsign; + dd = 0; /* silence compiler warning about possibly unused variable */ nd = bc->nd; nd0 = bc->nd0; - p5 = nd + bc->e0 - 1; - speccase = 0; - if (rv->d == 0.) { /* special case: value near underflow-to-zero */ - /* threshold was rounded to zero */ - b = i2b(1); + p5 = nd + bc->e0; + if (rv->d == 0.) { + /* special case because d2b doesn't handle 0.0 */ + b = i2b(0); if (b == NULL) return -1; - p2 = Emin - P + 1; - bbits = 1; - word0(rv) = (P+2) << Exp_shift; - i = 0; - { - speccase = 1; - --p2; - dsign = 0; - goto have_i; - } + p2 = Emin - P + 1; /* = -1074 for IEEE 754 binary64 */ + bbits = 0; } - else - { + else { b = d2b(rv, &p2, &bbits); if (b == NULL) return -1; + p2 -= bc->scale; } - p2 -= bc->scale; - /* floor(log2(rv)) == bbits - 1 + p2 */ - /* Check for denormal case. */ + /* now rv/2^(bc->scale) = b * 2**p2, and b has bbits significant bits */ + + /* Replace (b, p2) by (b << i, p2 - i), with i the largest integer such + that b << i has at most P significant bits and p2 - i >= Emin - P + + 1. */ i = P - bbits; - if (i > (j = P - Emin - 1 + p2)) { - i = j; - } - { - b = lshift(b, ++i); - if (b == NULL) - return -1; - b->x[0] |= 1; - } - have_i: + if (i > p2 - (Emin - P + 1)) + i = p2 - (Emin - P + 1); + /* increment i so that we shift b by an extra bit; then or-ing a 1 into + the lsb of b gives us rv/2^(bc->scale) + 0.5ulp. */ + b = lshift(b, ++i); + if (b == NULL) + return -1; + /* record whether the lsb of rv/2^(bc->scale) is odd: in the exact halfway + case, this is used for round to even. */ + odd = b->x[0] & 2; + b->x[0] |= 1; + p2 -= p5 + i; d = i2b(1); if (d == NULL) { @@ -1227,81 +1387,51 @@ } } - /* Now b/d = exactly half-way between the two floating-point values */ - /* on either side of the input string. Compute first digit of b/d. */ + /* if b >= d, round down */ + if (cmp(b, d) >= 0) { + dd = -1; + goto ret; + } - if (!(dig = quorem(b,d))) { - b = multadd(b, 10, 0); /* very unlikely */ + /* Compare b/d with s0 */ + for(i = 0; i < nd0; i++) { + b = multadd(b, 10, 0); if (b == NULL) { Bfree(d); return -1; } - dig = quorem(b,d); - } - - /* Compare b/d with s0 */ - - assert(nd > 0); - dd = 9999; /* silence gcc compiler warning */ - for(i = 0; i < nd0; ) { - if ((dd = s0[i++] - '0' - dig)) + dd = *s0++ - '0' - quorem(b, d); + if (dd) goto ret; if (!b->x[0] && b->wds == 1) { - if (i < nd) + if (i < nd - 1) dd = 1; goto ret; } + } + s0++; + for(; i < nd; i++) { b = multadd(b, 10, 0); if (b == NULL) { Bfree(d); return -1; } - dig = quorem(b,d); - } - for(j = bc->dp1; i++ < nd;) { - if ((dd = s0[j++] - '0' - dig)) + dd = *s0++ - '0' - quorem(b, d); + if (dd) goto ret; if (!b->x[0] && b->wds == 1) { - if (i < nd) + if (i < nd - 1) dd = 1; goto ret; } - b = multadd(b, 10, 0); - if (b == NULL) { - Bfree(d); - return -1; - } - dig = quorem(b,d); } if (b->x[0] || b->wds > 1) dd = -1; ret: Bfree(b); Bfree(d); - if (speccase) { - if (dd <= 0) - rv->d = 0.; - } - else if (dd < 0) { - if (!dsign) /* does not happen for round-near */ - retlow1: - dval(rv) -= ulp(rv); - } - else if (dd > 0) { - if (dsign) { - rethi1: - dval(rv) += ulp(rv); - } - } - else { - /* Exact half-way case: apply round-even rule. */ - if (word1(rv) & 1) { - if (dsign) - goto rethi1; - goto retlow1; - } - } - + if (dd > 0 || (dd == 0 && odd)) + dval(rv) += sulp(rv, bc); return 0; } @@ -1312,13 +1442,13 @@ int esign, i, j, k, nd, nd0, nf, nz, nz0, sign; const char *s, *s0, *s1; double aadj, aadj1; - Long L; U aadj2, adj, rv, rv0; - ULong y, z; + ULong y, z, abse; + Long L; BCinfo bc; Bigint *bb, *bb1, *bd, *bd0, *bs, *delta; - sign = nz0 = nz = bc.dplen = bc.uflchk = 0; + sign = nz0 = nz = 0; dval(&rv) = 0.; for(s = s00;;s++) switch(*s) { case '-': @@ -1350,18 +1480,11 @@ goto ret; } s0 = s; - y = z = 0; for(nd = nf = 0; (c = *s) >= '0' && c <= '9'; nd++, s++) - if (nd < 9) - y = 10*y + c - '0'; - else if (nd < 16) - z = 10*z + c - '0'; + ; nd0 = nd; - bc.dp0 = bc.dp1 = s - s0; if (c == '.') { c = *++s; - bc.dp1 = s - s0; - bc.dplen = bc.dp1 - bc.dp0; if (!nd) { for(; c == '0'; c = *++s) nz++; @@ -1378,15 +1501,7 @@ nz++; if (c -= '0') { nf += nz; - for(i = 1; i < nz; i++) - if (nd++ < 9) - y *= 10; - else if (nd <= DBL_DIG + 1) - z *= 10; - if (nd++ < 9) - y = 10*y + c; - else if (nd <= DBL_DIG + 1) - z = 10*z + c; + nd += nz; nz = 0; } } @@ -1409,17 +1524,17 @@ while(c == '0') c = *++s; if (c > '0' && c <= '9') { - L = c - '0'; + abse = c - '0'; s1 = s; while((c = *++s) >= '0' && c <= '9') - L = 10*L + c - '0'; - if (s - s1 > 8 || L > 19999) + abse = 10*abse + c - '0'; + if (s - s1 > 8 || abse > MAX_ABS_EXP) /* Avoid confusion from exponents * so large that e might overflow. */ - e = 19999; /* safe for 16 bit ints */ + e = (int)MAX_ABS_EXP; /* safe for 16 bit ints */ else - e = (int)L; + e = (int)abse; if (esign) e = -e; } @@ -1437,15 +1552,78 @@ } goto ret; } - bc.e0 = e1 = e -= nf; + e -= nf; + if (!nd0) + nd0 = nd; + + /* strip trailing zeros */ + for (i = nd; i > 0; ) { + /* scan back until we hit a nonzero digit. significant digit 'i' + is s0[i] if i < nd0, s0[i+1] if i >= nd0. */ + --i; + if (s0[i < nd0 ? i : i+1] != '0') { + ++i; + break; + } + } + e += nd - i; + nd = i; + if (nd0 > nd) + nd0 = nd; /* Now we have nd0 digits, starting at s0, followed by a * decimal point, followed by nd-nd0 digits. The number we're * after is the integer represented by those digits times * 10**e */ - if (!nd0) - nd0 = nd; + bc.e0 = e1 = e; + + /* Summary of parsing results. The parsing stage gives values + * s0, nd0, nd, e, sign, where: + * + * - s0 points to the first significant digit of the input string s00; + * + * - nd is the total number of significant digits (here, and + * below, 'significant digits' means the set of digits of the + * significand of the input that remain after ignoring leading + * and trailing zeros. + * + * - nd0 indicates the position of the decimal point (if + * present): so the nd significant digits are in s0[0:nd0] and + * s0[nd0+1:nd+1] using the usual Python half-open slice + * notation. (If nd0 < nd, then s0[nd0] necessarily contains + * a '.' character; if nd0 == nd, then it could be anything.) + * + * - e is the adjusted exponent: the absolute value of the number + * represented by the original input string is n * 10**e, where + * n is the integer represented by the concatenation of + * s0[0:nd0] and s0[nd0+1:nd+1] + * + * - sign gives the sign of the input: 1 for negative, 0 for positive + * + * - the first and last significant digits are nonzero + */ + + /* put first DBL_DIG+1 digits into integer y and z. + * + * - y contains the value represented by the first min(9, nd) + * significant digits + * + * - if nd > 9, z contains the value represented by significant digits + * with indices in [9, min(16, nd)). So y * 10**(min(16, nd) - 9) + z + * gives the value represented by the first min(16, nd) sig. digits. + */ + + y = z = 0; + for (i = 0; i < nd; i++) { + if (i < 9) + y = 10*y + s0[i < nd0 ? i : i+1] - '0'; + else if (i < DBL_DIG+1) + z = 10*z + s0[i < nd0 ? i : i+1] - '0'; + else + break; + } + k = nd < DBL_DIG + 1 ? nd : DBL_DIG + 1; dval(&rv) = y; if (k > 9) { @@ -1555,22 +1733,25 @@ /* Put digits into bd: true value = bd * 10^e */ bc.nd = nd; - bc.nd0 = nd0; /* Only needed if nd > strtod_diglim, but done here */ + bc.nd0 = nd0; /* Only needed if nd > STRTOD_DIGLIM, but done here */ /* to silence an erroneous warning about bc.nd0 */ /* possibly not being initialized. */ - if (nd > strtod_diglim) { - /* ASSERT(strtod_diglim >= 18); 18 == one more than the */ + if (nd > STRTOD_DIGLIM) { + /* ASSERT(STRTOD_DIGLIM >= 18); 18 == one more than the */ /* minimum number of decimal digits to distinguish double values */ /* in IEEE arithmetic. */ - i = j = 18; - if (i > nd0) - j += bc.dplen; - for(;;) { - if (--j <= bc.dp1 && j >= bc.dp0) - j = bc.dp0 - 1; - if (s0[j] != '0') - break; + + /* Truncate input to 18 significant digits, then discard any trailing + zeros on the result by updating nd, nd0, e and y suitably. (There's + no need to update z; it's not reused beyond this point.) */ + for (i = 18; i > 0; ) { + /* scan back until we hit a nonzero digit. significant digit 'i' + is s0[i] if i < nd0, s0[i+1] if i >= nd0. */ --i; + if (s0[i < nd0 ? i : i+1] != '0') { + ++i; + break; + } } e += nd - i; nd = i; @@ -1580,11 +1761,11 @@ y = 0; for(i = 0; i < nd0; ++i) y = 10*y + s0[i] - '0'; - for(j = bc.dp1; i < nd; ++i) - y = 10*y + s0[j++] - '0'; + for(; i < nd; ++i) + y = 10*y + s0[i+1] - '0'; } } - bd0 = s2b(s0, nd0, nd, y, bc.dplen); + bd0 = s2b(s0, nd0, nd, y); if (bd0 == NULL) goto failed_malloc; @@ -1707,6 +1888,30 @@ if (bc.nd > nd && i <= 0) { if (bc.dsign) break; /* Must use bigcomp(). */ + + /* Here rv overestimates the truncated decimal value by at most + 0.5 ulp(rv). Hence rv either overestimates the true decimal + value by <= 0.5 ulp(rv), or underestimates it by some small + amount (< 0.1 ulp(rv)); either way, rv is within 0.5 ulps of + the true decimal value, so it's possible to exit. + + Exception: if scaled rv is a normal exact power of 2, but not + DBL_MIN, then rv - 0.5 ulp(rv) takes us all the way down to the + next double, so the correctly rounded result is either rv - 0.5 + ulp(rv) or rv; in this case, use bigcomp to distinguish. */ + + if (!word1(&rv) && !(word0(&rv) & Bndry_mask)) { + /* rv can't be 0, since it's an overestimate for some + nonzero value. So rv is a normal power of 2. */ + j = (int)(word0(&rv) & Exp_mask) >> Exp_shift; + /* rv / 2^bc.scale = 2^(j - 1023 - bc.scale); use bigcomp if + rv / 2^bc.scale >= 2^-1021. */ + if (j - bc.scale >= 2) { + dval(&rv) -= 0.5 * sulp(&rv, &bc); + break; + } + } + { bc.nd = nd; i = -1; /* Discarded digits make delta smaller. */ @@ -1767,10 +1972,8 @@ /* accept rv */ break; /* rv = smallest denormal */ - if (bc.nd >nd) { - bc.uflchk = 1; + if (bc.nd >nd) break; - } goto undfl; } } @@ -1786,10 +1989,8 @@ else { dval(&rv) -= ulp(&rv); if (!dval(&rv)) { - if (bc.nd >nd) { - bc.uflchk = 1; + if (bc.nd >nd) break; - } goto undfl; } } @@ -1801,10 +2002,8 @@ aadj = aadj1 = 1.; else if (word1(&rv) || word0(&rv) & Bndry_mask) { if (word1(&rv) == Tiny1 && !word0(&rv)) { - if (bc.nd >nd) { - bc.uflchk = 1; + if (bc.nd >nd) break; - } goto undfl; } aadj = 1.; @@ -1838,8 +2037,14 @@ dval(&rv) += adj.d; if ((word0(&rv) & Exp_mask) >= Exp_msk1*(DBL_MAX_EXP+Bias-P)) { - if (word0(&rv0) == Big0 && word1(&rv0) == Big1) + if (word0(&rv0) == Big0 && word1(&rv0) == Big1) { + Bfree(bb); + Bfree(bd); + Bfree(bs); + Bfree(bd0); + Bfree(delta); goto ovfl; + } word0(&rv) = Big0; word1(&rv) = Big1; goto cont; Modified: python/branches/py3k-cdecimal/Python/peephole.c ============================================================================== --- python/branches/py3k-cdecimal/Python/peephole.c (original) +++ python/branches/py3k-cdecimal/Python/peephole.c Thu Jan 21 20:32:23 2010 @@ -31,7 +31,8 @@ new constant (c1, c2, ... cn) can be appended. Called with codestr pointing to the first LOAD_CONST. Bails out with no change if one or more of the LOAD_CONSTs is missing. - Also works for BUILD_LIST when followed by an "in" or "not in" test. + Also works for BUILD_LIST and BUILT_SET when followed by an "in" or "not in" + test; for BUILD_SET it assembles a frozenset rather than a tuple. */ static int tuple_of_constants(unsigned char *codestr, Py_ssize_t n, PyObject *consts) @@ -41,7 +42,7 @@ /* Pre-conditions */ assert(PyList_CheckExact(consts)); - assert(codestr[n*3] == BUILD_TUPLE || codestr[n*3] == BUILD_LIST); + assert(codestr[n*3] == BUILD_TUPLE || codestr[n*3] == BUILD_LIST || codestr[n*3] == BUILD_SET); assert(GETARG(codestr, (n*3)) == n); for (i=0 ; i= 0 && j <= lastlc && ((opcode == BUILD_TUPLE && ISBASICBLOCK(blocks, h, 3*(j+1))) || - (opcode == BUILD_LIST && + ((opcode == BUILD_LIST || opcode == BUILD_SET) && codestr[i+3]==COMPARE_OP && ISBASICBLOCK(blocks, h, 3*(j+2)) && (GETARG(codestr,i+3)==6 || Modified: python/branches/py3k-cdecimal/setup.py ============================================================================== --- python/branches/py3k-cdecimal/setup.py (original) +++ python/branches/py3k-cdecimal/setup.py Thu Jan 21 20:32:23 2010 @@ -1108,12 +1108,12 @@ # Interface to the Expat XML parser # - # Expat was written by James Clark and is now maintained by a - # group of developers on SourceForge; see www.libexpat.org for - # more information. The pyexpat module was written by Paul - # Prescod after a prototype by Jack Jansen. The Expat source - # is included in Modules/expat/. Usage of a system - # shared libexpat.so/expat.dll is not advised. + # Expat was written by James Clark and is now maintained by a group of + # developers on SourceForge; see www.libexpat.org for more information. + # The pyexpat module was written by Paul Prescod after a prototype by + # Jack Jansen. The Expat source is included in Modules/expat/. Usage + # of a system shared libexpat.so is possible with --with-system-expat + # cofigure option. # # More information on Expat can be found at www.libexpat.org. # @@ -1501,22 +1501,19 @@ return False fficonfig = {} - fp = open(ffi_configfile) - try: - script = fp.read() - finally: - fp.close() - exec(script, globals(), fficonfig) - ffi_srcdir = os.path.join(fficonfig['ffi_srcdir'], 'src') + with open(ffi_configfile) as f: + exec(f.read(), globals(), fficonfig) # Add .S (preprocessed assembly) to C compiler source extensions. self.compiler_obj.src_extensions.append('.S') include_dirs = [os.path.join(ffi_builddir, 'include'), - ffi_builddir, ffi_srcdir] + ffi_builddir, + os.path.join(ffi_srcdir, 'src')] extra_compile_args = fficonfig['ffi_cflags'].split() - ext.sources.extend(fficonfig['ffi_sources']) + ext.sources.extend(os.path.join(ffi_srcdir, f) for f in + fficonfig['ffi_sources']) ext.include_dirs.extend(include_dirs) ext.extra_compile_args.extend(extra_compile_args) return True From python-checkins at python.org Thu Jan 21 20:41:36 2010 From: python-checkins at python.org (mark.dickinson) Date: Thu, 21 Jan 2010 19:41:36 -0000 Subject: [Python-checkins] r77669 - python/branches/release26-maint Message-ID: Author: mark.dickinson Date: Thu Jan 21 20:41:36 2010 New Revision: 77669 Log: Blocked revisions 77614-77616,77663 via svnmerge ........ r77614 | mark.dickinson | 2010-01-20 17:36:31 +0000 (Wed, 20 Jan 2010) | 5 lines Various dtoa.c cleanups. 1. Despagghetify _Py_dg_strtod parsing code and exit points. 2. Simplify bigcomp comparison loop. 3. Don't set ERANGE on _Py_dg_strtod underflow (it was set inconsistently anyway). 4. Remove unused dsign field from BCinfo struct. ........ r77615 | mark.dickinson | 2010-01-20 18:02:41 +0000 (Wed, 20 Jan 2010) | 1 line Don't try to put a value into a NULL pointer. ........ r77616 | mark.dickinson | 2010-01-20 21:23:25 +0000 (Wed, 20 Jan 2010) | 1 line Additional explanatory comments for _Py_dg_strtod. ........ r77663 | mark.dickinson | 2010-01-21 17:02:53 +0000 (Thu, 21 Jan 2010) | 1 line Additional testcases for strtod. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Thu Jan 21 20:51:08 2010 From: python-checkins at python.org (mark.dickinson) Date: Thu, 21 Jan 2010 19:51:08 -0000 Subject: [Python-checkins] r77670 - in python/branches/py3k: Lib/test/test_strtod.py Python/dtoa.c Message-ID: Author: mark.dickinson Date: Thu Jan 21 20:51:08 2010 New Revision: 77670 Log: Merged revisions 77614-77616,77663 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77614 | mark.dickinson | 2010-01-20 17:36:31 +0000 (Wed, 20 Jan 2010) | 5 lines Various dtoa.c cleanups. 1. Despagghetify _Py_dg_strtod parsing code and exit points. 2. Simplify bigcomp comparison loop. 3. Don't set ERANGE on _Py_dg_strtod underflow (it was set inconsistently anyway). 4. Remove unused dsign field from BCinfo struct. ........ r77615 | mark.dickinson | 2010-01-20 18:02:41 +0000 (Wed, 20 Jan 2010) | 1 line Don't try to put a value into a NULL pointer. ........ r77616 | mark.dickinson | 2010-01-20 21:23:25 +0000 (Wed, 20 Jan 2010) | 1 line Additional explanatory comments for _Py_dg_strtod. ........ r77663 | mark.dickinson | 2010-01-21 17:02:53 +0000 (Thu, 21 Jan 2010) | 1 line Additional testcases for strtod. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_strtod.py python/branches/py3k/Python/dtoa.c Modified: python/branches/py3k/Lib/test/test_strtod.py ============================================================================== --- python/branches/py3k/Lib/test/test_strtod.py (original) +++ python/branches/py3k/Lib/test/test_strtod.py Thu Jan 21 20:51:08 2010 @@ -100,6 +100,49 @@ "Incorrectly rounded str->float conversion for {}: " "expected {}, got {}".format(s, expected, got)) + def test_short_halfway_cases(self): + # exact halfway cases with a small number of significant digits + for k in 0, 5, 10, 15, 20: + # upper = smallest integer >= 2**54/5**k + upper = -(-2**54//5**k) + # lower = smallest odd number >= 2**53/5**k + lower = -(-2**53//5**k) + if lower % 2 == 0: + lower += 1 + for i in range(10 * TEST_SIZE): + # Select a random odd n in [2**53/5**k, + # 2**54/5**k). Then n * 10**k gives a halfway case + # with small number of significant digits. + n, e = random.randrange(lower, upper, 2), k + + # Remove any additional powers of 5. + while n % 5 == 0: + n, e = n // 5, e + 1 + assert n % 10 in (1, 3, 7, 9) + + # Try numbers of the form n * 2**p2 * 10**e, p2 >= 0, + # until n * 2**p2 has more than 20 significant digits. + digits, exponent = n, e + while digits < 10**20: + s = '{}e{}'.format(digits, exponent) + self.check_strtod(s) + # Same again, but with extra trailing zeros. + s = '{}e{}'.format(digits * 10**40, exponent - 40) + self.check_strtod(s) + digits *= 2 + + # Try numbers of the form n * 5**p2 * 10**(e - p5), p5 + # >= 0, with n * 5**p5 < 10**20. + digits, exponent = n, e + while digits < 10**20: + s = '{}e{}'.format(digits, exponent) + self.check_strtod(s) + # Same again, but with extra trailing zeros. + s = '{}e{}'.format(digits * 10**40, exponent - 40) + self.check_strtod(s) + digits *= 5 + exponent -= 1 + def test_halfway_cases(self): # test halfway cases for the round-half-to-even rule for i in range(1000): @@ -164,10 +207,10 @@ self.check_strtod(s) def test_bigcomp(self): - DIG10 = 10**50 - for i in range(1000): - for j in range(TEST_SIZE): - digits = random.randrange(DIG10) + for ndigs in 5, 10, 14, 15, 16, 17, 18, 19, 20, 40, 41, 50: + dig10 = 10**ndigs + for i in range(100 * TEST_SIZE): + digits = random.randrange(dig10) exponent = random.randrange(-400, 400) s = '{}e{}'.format(digits, exponent) self.check_strtod(s) @@ -254,11 +297,59 @@ # demonstration that original fix for issue 7632 bug 1 was # buggy; the exit condition was too strong '247032822920623295e-341', + # demonstrate similar problem to issue 7632 bug1: crash + # with 'oversized quotient in quorem' message. + '99037485700245683102805043437346965248029601286431e-373', + '99617639833743863161109961162881027406769510558457e-373', + '98852915025769345295749278351563179840130565591462e-372', + '99059944827693569659153042769690930905148015876788e-373', + '98914979205069368270421829889078356254059760327101e-372', # issue 7632 bug 5: the following 2 strings convert differently '1000000000000000000000000000000000000000e-16', '10000000000000000000000000000000000000000e-17', + # issue 7632 bug 7 + '991633793189150720000000000000000000000000000000000000000e-33', + # And another, similar, failing halfway case + '4106250198039490000000000000000000000000000000000000000e-38', # issue 7632 bug 8: the following produced 10.0 '10.900000000000000012345678912345678912345', + # exercise exit conditions in bigcomp comparison loop + '2602129298404963083833853479113577253105939995688e2', + '260212929840496308383385347911357725310593999568896e0', + '26021292984049630838338534791135772531059399956889601e-2', + '260212929840496308383385347911357725310593999568895e0', + '260212929840496308383385347911357725310593999568897e0', + '260212929840496308383385347911357725310593999568996e0', + '260212929840496308383385347911357725310593999568866e0', + # 2**53 + '9007199254740992.00', + # 2**1024 - 2**970: exact overflow boundary. All values + # smaller than this should round to something finite; any value + # greater than or equal to this one overflows. + '179769313486231580793728971405303415079934132710037' #... + '826936173778980444968292764750946649017977587207096' #... + '330286416692887910946555547851940402630657488671505' #... + '820681908902000708383676273854845817711531764475730' #... + '270069855571366959622842914819860834936475292719074' #... + '168444365510704342711559699508093042880177904174497792', + # 2**1024 - 2**970 - tiny + '179769313486231580793728971405303415079934132710037' #... + '826936173778980444968292764750946649017977587207096' #... + '330286416692887910946555547851940402630657488671505' #... + '820681908902000708383676273854845817711531764475730' #... + '270069855571366959622842914819860834936475292719074' #... + '168444365510704342711559699508093042880177904174497791.999', + # 2**1024 - 2**970 + tiny + '179769313486231580793728971405303415079934132710037' #... + '826936173778980444968292764750946649017977587207096' #... + '330286416692887910946555547851940402630657488671505' #... + '820681908902000708383676273854845817711531764475730' #... + '270069855571366959622842914819860834936475292719074' #... + '168444365510704342711559699508093042880177904174497792.001', + # 1 - 2**-54, +-tiny + '999999999999999944488848768742172978818416595458984375e-54', + '9999999999999999444888487687421729788184165954589843749999999e-54', + '9999999999999999444888487687421729788184165954589843750000001e-54', ] for s in test_strings: self.check_strtod(s) Modified: python/branches/py3k/Python/dtoa.c ============================================================================== --- python/branches/py3k/Python/dtoa.c (original) +++ python/branches/py3k/Python/dtoa.c Thu Jan 21 20:51:08 2010 @@ -270,7 +270,7 @@ typedef struct BCinfo BCinfo; struct BCinfo { - int dsign, e0, nd, nd0, scale; + int e0, nd, nd0, scale; }; #define FFFFFFFF 0xffffffffUL @@ -967,8 +967,8 @@ return c; } -/* Given a positive normal double x, return the difference between x and the next - double up. Doesn't give correct results for subnormals. */ +/* Given a positive normal double x, return the difference between x and the + next double up. Doesn't give correct results for subnormals. */ static double ulp(U *x) @@ -1276,9 +1276,6 @@ bc is a struct containing information gathered during the parsing and estimation steps of _Py_dg_strtod. Description of fields follows: - bc->dsign is 1 if rv < decimal value, 0 if rv >= decimal value. In - normal use, it should almost always be 1 when bigcomp is entered. - bc->e0 gives the exponent of the input value, such that dv = (integer given by the bd->nd digits of s0) * 10**e0 @@ -1387,47 +1384,37 @@ } } - /* if b >= d, round down */ - if (cmp(b, d) >= 0) { + /* Compare s0 with b/d: set dd to -1, 0, or 1 according as s0 < b/d, s0 == + * b/d, or s0 > b/d. Here the digits of s0 are thought of as representing + * a number in the range [0.1, 1). */ + if (cmp(b, d) >= 0) + /* b/d >= 1 */ dd = -1; - goto ret; - } + else { + i = 0; + for(;;) { + b = multadd(b, 10, 0); + if (b == NULL) { + Bfree(d); + return -1; + } + dd = s0[i < nd0 ? i : i+1] - '0' - quorem(b, d); + i++; - /* Compare b/d with s0 */ - for(i = 0; i < nd0; i++) { - b = multadd(b, 10, 0); - if (b == NULL) { - Bfree(d); - return -1; - } - dd = *s0++ - '0' - quorem(b, d); - if (dd) - goto ret; - if (!b->x[0] && b->wds == 1) { - if (i < nd - 1) - dd = 1; - goto ret; - } - } - s0++; - for(; i < nd; i++) { - b = multadd(b, 10, 0); - if (b == NULL) { - Bfree(d); - return -1; - } - dd = *s0++ - '0' - quorem(b, d); - if (dd) - goto ret; - if (!b->x[0] && b->wds == 1) { - if (i < nd - 1) - dd = 1; - goto ret; + if (dd) + break; + if (!b->x[0] && b->wds == 1) { + /* b/d == 0 */ + dd = i < nd; + break; + } + if (!(i < nd)) { + /* b/d != 0, but digits of s0 exhausted */ + dd = -1; + break; + } } } - if (b->x[0] || b->wds > 1) - dd = -1; - ret: Bfree(b); Bfree(d); if (dd > 0 || (dd == 0 && odd)) @@ -1438,128 +1425,130 @@ double _Py_dg_strtod(const char *s00, char **se) { - int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, e, e1, error; - int esign, i, j, k, nd, nd0, nf, nz, nz0, sign; + int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, dsign, e, e1, error; + int esign, i, j, k, lz, nd, nd0, sign; const char *s, *s0, *s1; double aadj, aadj1; U aadj2, adj, rv, rv0; - ULong y, z, abse; + ULong y, z, abs_exp; Long L; BCinfo bc; Bigint *bb, *bb1, *bd, *bd0, *bs, *delta; - sign = nz0 = nz = 0; dval(&rv) = 0.; - for(s = s00;;s++) switch(*s) { - case '-': - sign = 1; - /* no break */ - case '+': - if (*++s) - goto break2; - /* no break */ - case 0: - goto ret0; - /* modify original dtoa.c so that it doesn't accept leading whitespace - case '\t': - case '\n': - case '\v': - case '\f': - case '\r': - case ' ': - continue; - */ - default: - goto break2; - } - break2: - if (*s == '0') { - nz0 = 1; - while(*++s == '0') ; - if (!*s) - goto ret; + + /* Start parsing. */ + c = *(s = s00); + + /* Parse optional sign, if present. */ + sign = 0; + switch (c) { + case '-': + sign = 1; + /* no break */ + case '+': + c = *++s; } - s0 = s; - for(nd = nf = 0; (c = *s) >= '0' && c <= '9'; nd++, s++) - ; - nd0 = nd; + + /* Skip leading zeros: lz is true iff there were leading zeros. */ + s1 = s; + while (c == '0') + c = *++s; + lz = s != s1; + + /* Point s0 at the first nonzero digit (if any). nd0 will be the position + of the point relative to s0. nd will be the total number of digits + ignoring leading zeros. */ + s0 = s1 = s; + while ('0' <= c && c <= '9') + c = *++s; + nd0 = nd = s - s1; + + /* Parse decimal point and following digits. */ if (c == '.') { c = *++s; if (!nd) { - for(; c == '0'; c = *++s) - nz++; - if (c > '0' && c <= '9') { - s0 = s; - nf += nz; - nz = 0; - goto have_dig; - } - goto dig_done; - } - for(; c >= '0' && c <= '9'; c = *++s) { - have_dig: - nz++; - if (c -= '0') { - nf += nz; - nd += nz; - nz = 0; - } + s1 = s; + while (c == '0') + c = *++s; + lz = lz || s != s1; + nd0 -= s - s1; + s0 = s; } + s1 = s; + while ('0' <= c && c <= '9') + c = *++s; + nd += s - s1; + } + + /* Now lz is true if and only if there were leading zero digits, and nd + gives the total number of digits ignoring leading zeros. A valid input + must have at least one digit. */ + if (!nd && !lz) { + if (se) + *se = (char *)s00; + goto parse_error; } - dig_done: + + /* Parse exponent. */ e = 0; if (c == 'e' || c == 'E') { - if (!nd && !nz && !nz0) { - goto ret0; - } s00 = s; + c = *++s; + + /* Exponent sign. */ esign = 0; - switch(c = *++s) { + switch (c) { case '-': esign = 1; + /* no break */ case '+': c = *++s; } - if (c >= '0' && c <= '9') { - while(c == '0') - c = *++s; - if (c > '0' && c <= '9') { - abse = c - '0'; - s1 = s; - while((c = *++s) >= '0' && c <= '9') - abse = 10*abse + c - '0'; - if (s - s1 > 8 || abse > MAX_ABS_EXP) - /* Avoid confusion from exponents - * so large that e might overflow. - */ - e = (int)MAX_ABS_EXP; /* safe for 16 bit ints */ - else - e = (int)abse; - if (esign) - e = -e; - } - else - e = 0; + + /* Skip zeros. lz is true iff there are leading zeros. */ + s1 = s; + while (c == '0') + c = *++s; + lz = s != s1; + + /* Get absolute value of the exponent. */ + s1 = s; + abs_exp = 0; + while ('0' <= c && c <= '9') { + abs_exp = 10*abs_exp + (c - '0'); + c = *++s; } + + /* abs_exp will be correct modulo 2**32. But 10**9 < 2**32, so if + there are at most 9 significant exponent digits then overflow is + impossible. */ + if (s - s1 > 9 || abs_exp > MAX_ABS_EXP) + e = (int)MAX_ABS_EXP; else + e = (int)abs_exp; + if (esign) + e = -e; + + /* A valid exponent must have at least one digit. */ + if (s == s1 && !lz) s = s00; } - if (!nd) { - if (!nz && !nz0) { - ret0: - s = s00; - sign = 0; - } - goto ret; - } - e -= nf; - if (!nd0) + + /* Adjust exponent to take into account position of the point. */ + e -= nd - nd0; + if (nd0 <= 0) nd0 = nd; - /* strip trailing zeros */ + /* Finished parsing. Set se to indicate how far we parsed */ + if (se) + *se = (char *)s; + + /* If all digits were zero, exit with return value +-0.0. Otherwise, + strip trailing zeros: scan back until we hit a nonzero digit. */ + if (!nd) + goto ret; for (i = nd; i > 0; ) { - /* scan back until we hit a nonzero digit. significant digit 'i' - is s0[i] if i < nd0, s0[i+1] if i >= nd0. */ --i; if (s0[i < nd0 ? i : i+1] != '0') { ++i; @@ -1571,28 +1560,21 @@ if (nd0 > nd) nd0 = nd; - /* Now we have nd0 digits, starting at s0, followed by a - * decimal point, followed by nd-nd0 digits. The number we're - * after is the integer represented by those digits times - * 10**e */ - - bc.e0 = e1 = e; - - /* Summary of parsing results. The parsing stage gives values - * s0, nd0, nd, e, sign, where: + /* Summary of parsing results. After parsing, and dealing with zero + * inputs, we have values s0, nd0, nd, e, sign, where: * - * - s0 points to the first significant digit of the input string s00; + * - s0 points to the first significant digit of the input string * * - nd is the total number of significant digits (here, and * below, 'significant digits' means the set of digits of the * significand of the input that remain after ignoring leading - * and trailing zeros. + * and trailing zeros). * - * - nd0 indicates the position of the decimal point (if - * present): so the nd significant digits are in s0[0:nd0] and - * s0[nd0+1:nd+1] using the usual Python half-open slice - * notation. (If nd0 < nd, then s0[nd0] necessarily contains - * a '.' character; if nd0 == nd, then it could be anything.) + * - nd0 indicates the position of the decimal point, if present; it + * satisfies 1 <= nd0 <= nd. The nd significant digits are in + * s0[0:nd0] and s0[nd0+1:nd+1] using the usual Python half-open slice + * notation. (If nd0 < nd, then s0[nd0] contains a '.' character; if + * nd0 == nd, then s0[nd0] could be any non-digit character.) * * - e is the adjusted exponent: the absolute value of the number * represented by the original input string is n * 10**e, where @@ -1614,6 +1596,7 @@ * gives the value represented by the first min(16, nd) sig. digits. */ + bc.e0 = e1 = e; y = z = 0; for (i = 0; i < nd; i++) { if (i < 9) @@ -1666,14 +1649,8 @@ if ((i = e1 & 15)) dval(&rv) *= tens[i]; if (e1 &= ~15) { - if (e1 > DBL_MAX_10_EXP) { - ovfl: - errno = ERANGE; - /* Can't trust HUGE_VAL */ - word0(&rv) = Exp_mask; - word1(&rv) = 0; - goto ret; - } + if (e1 > DBL_MAX_10_EXP) + goto ovfl; e1 >>= 4; for(j = 0; e1 > 1; j++, e1 >>= 1) if (e1 & 1) @@ -1695,6 +1672,16 @@ } } else if (e1 < 0) { + /* The input decimal value lies in [10**e1, 10**(e1+16)). + + If e1 <= -512, underflow immediately. + If e1 <= -256, set bc.scale to 2*P. + + So for input value < 1e-256, bc.scale is always set; + for input value >= 1e-240, bc.scale is never set. + For input values in [1e-256, 1e-240), bc.scale may or may + not be set. */ + e1 = -e1; if ((i = e1 & 15)) dval(&rv) /= tens[i]; @@ -1719,12 +1706,8 @@ else word1(&rv) &= 0xffffffff << j; } - if (!dval(&rv)) { - undfl: - dval(&rv) = 0.; - errno = ERANGE; - goto ret; - } + if (!dval(&rv)) + goto undfl; } } @@ -1769,7 +1752,34 @@ if (bd0 == NULL) goto failed_malloc; + /* Notation for the comments below. Write: + + - dv for the absolute value of the number represented by the original + decimal input string. + + - if we've truncated dv, write tdv for the truncated value. + Otherwise, set tdv == dv. + + - srv for the quantity rv/2^bc.scale; so srv is the current binary + approximation to tdv (and dv). It should be exactly representable + in an IEEE 754 double. + */ + for(;;) { + + /* This is the main correction loop for _Py_dg_strtod. + + We've got a decimal value tdv, and a floating-point approximation + srv=rv/2^bc.scale to tdv. The aim is to determine whether srv is + close enough (i.e., within 0.5 ulps) to tdv, and to compute a new + approximation if not. + + To determine whether srv is close enough to tdv, compute integers + bd, bb and bs proportional to tdv, srv and 0.5 ulp(srv) + respectively, and then use integer arithmetic to determine whether + |tdv - srv| is less than, equal to, or greater than 0.5 ulp(srv). + */ + bd = Balloc(bd0->k); if (bd == NULL) { Bfree(bd0); @@ -1782,6 +1792,7 @@ Bfree(bd0); goto failed_malloc; } + /* tdv = bd * 10^e; srv = bb * 2^(bbe - scale) */ bs = i2b(1); if (bs == NULL) { Bfree(bb); @@ -1802,6 +1813,17 @@ bb2 += bbe; else bd2 -= bbe; + + /* At this stage e = bd2 - bb2 + bbe = bd5 - bb5, so: + + tdv = bd * 2^(bbe + bd2 - bb2) * 5^(bd5 - bb5) + srv = bb * 2^(bbe - scale). + + Compute j such that + + 0.5 ulp(srv) = 2^(bbe - scale - j) + */ + bs2 = bb2; j = bbe - bc.scale; i = j + bbbits - 1; /* logb(rv) */ @@ -1809,9 +1831,26 @@ j += P - Emin; else j = P + 1 - bbbits; + + /* Now we have: + + M * tdv = bd * 2^(bd2 + scale + j) * 5^bd5 + M * srv = bb * 2^(bb2 + j) * 5^bb5 + M * 0.5 ulp(srv) = 2^bs2 * 5^bb5 + + where M is the constant (currently) represented by 2^(j + scale + + bb2 - bbe) * 5^bb5. + */ + bb2 += j; bd2 += j; bd2 += bc.scale; + + /* After the adjustments above, tdv, srv and 0.5 ulp(srv) are + proportional to: bd * 2^bd2 * 5^bd5, bb * 2^bb2 * 5^bb5, and + bs * 2^bs2 * 5^bb5, respectively. */ + + /* Remove excess powers of 2. i = min(bb2, bd2, bs2). */ i = bb2 < bd2 ? bb2 : bd2; if (i > bs2) i = bs2; @@ -1820,6 +1859,8 @@ bd2 -= i; bs2 -= i; } + + /* Scale bb, bd, bs by the appropriate powers of 2 and 5. */ if (bb5 > 0) { bs = pow5mult(bs, bb5); if (bs == NULL) { @@ -1874,6 +1915,11 @@ goto failed_malloc; } } + + /* Now bd, bb and bs are scaled versions of tdv, srv and 0.5 ulp(srv), + respectively. Compute the difference |tdv - srv|, and compare + with 0.5 ulp(srv). */ + delta = diff(bb, bd); if (delta == NULL) { Bfree(bb); @@ -1882,11 +1928,11 @@ Bfree(bd0); goto failed_malloc; } - bc.dsign = delta->sign; + dsign = delta->sign; delta->sign = 0; i = cmp(delta, bs); if (bc.nd > nd && i <= 0) { - if (bc.dsign) + if (dsign) break; /* Must use bigcomp(). */ /* Here rv overestimates the truncated decimal value by at most @@ -1908,7 +1954,7 @@ rv / 2^bc.scale >= 2^-1021. */ if (j - bc.scale >= 2) { dval(&rv) -= 0.5 * sulp(&rv, &bc); - break; + break; /* Use bigcomp. */ } } @@ -1922,7 +1968,7 @@ /* Error is less than half an ulp -- check for * special case of mantissa a power of two. */ - if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask + if (dsign || word1(&rv) || word0(&rv) & Bndry_mask || (word0(&rv) & Exp_mask) <= (2*P+1)*Exp_msk1 ) { break; @@ -1945,7 +1991,7 @@ } if (i == 0) { /* exactly half-way between */ - if (bc.dsign) { + if (dsign) { if ((word0(&rv) & Bndry_mask1) == Bndry_mask1 && word1(&rv) == ( (bc.scale && @@ -1957,7 +2003,7 @@ + Exp_msk1 ; word1(&rv) = 0; - bc.dsign = 0; + dsign = 0; break; } } @@ -1972,7 +2018,7 @@ /* accept rv */ break; /* rv = smallest denormal */ - if (bc.nd >nd) + if (bc.nd > nd) break; goto undfl; } @@ -1984,7 +2030,7 @@ } if (!(word1(&rv) & LSB)) break; - if (bc.dsign) + if (dsign) dval(&rv) += ulp(&rv); else { dval(&rv) -= ulp(&rv); @@ -1994,11 +2040,11 @@ goto undfl; } } - bc.dsign = 1 - bc.dsign; + dsign = 1 - dsign; break; } if ((aadj = ratio(delta, bs)) <= 2.) { - if (bc.dsign) + if (dsign) aadj = aadj1 = 1.; else if (word1(&rv) || word0(&rv) & Bndry_mask) { if (word1(&rv) == Tiny1 && !word0(&rv)) { @@ -2022,7 +2068,7 @@ } else { aadj *= 0.5; - aadj1 = bc.dsign ? aadj : -aadj; + aadj1 = dsign ? aadj : -aadj; if (Flt_Rounds == 0) aadj1 += 0.5; } @@ -2058,7 +2104,7 @@ if ((z = (ULong)aadj) <= 0) z = 1; aadj = z; - aadj1 = bc.dsign ? aadj : -aadj; + aadj1 = dsign ? aadj : -aadj; } dval(&aadj2) = aadj1; word0(&aadj2) += (2*P+1)*Exp_msk1 - y; @@ -2075,7 +2121,7 @@ L = (Long)aadj; aadj -= L; /* The tolerances below are conservative. */ - if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask) { + if (dsign || word1(&rv) || word0(&rv) & Bndry_mask) { if (aadj < .4999999 || aadj > .5000001) break; } @@ -2104,20 +2150,28 @@ word0(&rv0) = Exp_1 - 2*P*Exp_msk1; word1(&rv0) = 0; dval(&rv) *= dval(&rv0); - /* try to avoid the bug of testing an 8087 register value */ - if (!(word0(&rv) & Exp_mask)) - errno = ERANGE; } + ret: - if (se) - *se = (char *)s; return sign ? -dval(&rv) : dval(&rv); + parse_error: + return 0.0; + failed_malloc: - if (se) - *se = (char *)s00; errno = ENOMEM; return -1.0; + + undfl: + return sign ? -0.0 : 0.0; + + ovfl: + errno = ERANGE; + /* Can't trust HUGE_VAL */ + word0(&rv) = Exp_mask; + word1(&rv) = 0; + return sign ? -dval(&rv) : dval(&rv); + } static char * From python-checkins at python.org Thu Jan 21 20:57:44 2010 From: python-checkins at python.org (mark.dickinson) Date: Thu, 21 Jan 2010 19:57:44 -0000 Subject: [Python-checkins] r77671 - in python/branches/release31-maint: Lib/test/test_strtod.py Python/dtoa.c Message-ID: Author: mark.dickinson Date: Thu Jan 21 20:57:43 2010 New Revision: 77671 Log: Merged revisions 77670 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77670 | mark.dickinson | 2010-01-21 19:51:08 +0000 (Thu, 21 Jan 2010) | 24 lines Merged revisions 77614-77616,77663 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77614 | mark.dickinson | 2010-01-20 17:36:31 +0000 (Wed, 20 Jan 2010) | 5 lines Various dtoa.c cleanups. 1. Despagghetify _Py_dg_strtod parsing code and exit points. 2. Simplify bigcomp comparison loop. 3. Don't set ERANGE on _Py_dg_strtod underflow (it was set inconsistently anyway). 4. Remove unused dsign field from BCinfo struct. ........ r77615 | mark.dickinson | 2010-01-20 18:02:41 +0000 (Wed, 20 Jan 2010) | 1 line Don't try to put a value into a NULL pointer. ........ r77616 | mark.dickinson | 2010-01-20 21:23:25 +0000 (Wed, 20 Jan 2010) | 1 line Additional explanatory comments for _Py_dg_strtod. ........ r77663 | mark.dickinson | 2010-01-21 17:02:53 +0000 (Thu, 21 Jan 2010) | 1 line Additional testcases for strtod. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/test/test_strtod.py python/branches/release31-maint/Python/dtoa.c Modified: python/branches/release31-maint/Lib/test/test_strtod.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_strtod.py (original) +++ python/branches/release31-maint/Lib/test/test_strtod.py Thu Jan 21 20:57:43 2010 @@ -100,6 +100,49 @@ "Incorrectly rounded str->float conversion for {}: " "expected {}, got {}".format(s, expected, got)) + def test_short_halfway_cases(self): + # exact halfway cases with a small number of significant digits + for k in 0, 5, 10, 15, 20: + # upper = smallest integer >= 2**54/5**k + upper = -(-2**54//5**k) + # lower = smallest odd number >= 2**53/5**k + lower = -(-2**53//5**k) + if lower % 2 == 0: + lower += 1 + for i in range(10 * TEST_SIZE): + # Select a random odd n in [2**53/5**k, + # 2**54/5**k). Then n * 10**k gives a halfway case + # with small number of significant digits. + n, e = random.randrange(lower, upper, 2), k + + # Remove any additional powers of 5. + while n % 5 == 0: + n, e = n // 5, e + 1 + assert n % 10 in (1, 3, 7, 9) + + # Try numbers of the form n * 2**p2 * 10**e, p2 >= 0, + # until n * 2**p2 has more than 20 significant digits. + digits, exponent = n, e + while digits < 10**20: + s = '{}e{}'.format(digits, exponent) + self.check_strtod(s) + # Same again, but with extra trailing zeros. + s = '{}e{}'.format(digits * 10**40, exponent - 40) + self.check_strtod(s) + digits *= 2 + + # Try numbers of the form n * 5**p2 * 10**(e - p5), p5 + # >= 0, with n * 5**p5 < 10**20. + digits, exponent = n, e + while digits < 10**20: + s = '{}e{}'.format(digits, exponent) + self.check_strtod(s) + # Same again, but with extra trailing zeros. + s = '{}e{}'.format(digits * 10**40, exponent - 40) + self.check_strtod(s) + digits *= 5 + exponent -= 1 + def test_halfway_cases(self): # test halfway cases for the round-half-to-even rule for i in range(1000): @@ -164,10 +207,10 @@ self.check_strtod(s) def test_bigcomp(self): - DIG10 = 10**50 - for i in range(1000): - for j in range(TEST_SIZE): - digits = random.randrange(DIG10) + for ndigs in 5, 10, 14, 15, 16, 17, 18, 19, 20, 40, 41, 50: + dig10 = 10**ndigs + for i in range(100 * TEST_SIZE): + digits = random.randrange(dig10) exponent = random.randrange(-400, 400) s = '{}e{}'.format(digits, exponent) self.check_strtod(s) @@ -254,11 +297,59 @@ # demonstration that original fix for issue 7632 bug 1 was # buggy; the exit condition was too strong '247032822920623295e-341', + # demonstrate similar problem to issue 7632 bug1: crash + # with 'oversized quotient in quorem' message. + '99037485700245683102805043437346965248029601286431e-373', + '99617639833743863161109961162881027406769510558457e-373', + '98852915025769345295749278351563179840130565591462e-372', + '99059944827693569659153042769690930905148015876788e-373', + '98914979205069368270421829889078356254059760327101e-372', # issue 7632 bug 5: the following 2 strings convert differently '1000000000000000000000000000000000000000e-16', '10000000000000000000000000000000000000000e-17', + # issue 7632 bug 7 + '991633793189150720000000000000000000000000000000000000000e-33', + # And another, similar, failing halfway case + '4106250198039490000000000000000000000000000000000000000e-38', # issue 7632 bug 8: the following produced 10.0 '10.900000000000000012345678912345678912345', + # exercise exit conditions in bigcomp comparison loop + '2602129298404963083833853479113577253105939995688e2', + '260212929840496308383385347911357725310593999568896e0', + '26021292984049630838338534791135772531059399956889601e-2', + '260212929840496308383385347911357725310593999568895e0', + '260212929840496308383385347911357725310593999568897e0', + '260212929840496308383385347911357725310593999568996e0', + '260212929840496308383385347911357725310593999568866e0', + # 2**53 + '9007199254740992.00', + # 2**1024 - 2**970: exact overflow boundary. All values + # smaller than this should round to something finite; any value + # greater than or equal to this one overflows. + '179769313486231580793728971405303415079934132710037' #... + '826936173778980444968292764750946649017977587207096' #... + '330286416692887910946555547851940402630657488671505' #... + '820681908902000708383676273854845817711531764475730' #... + '270069855571366959622842914819860834936475292719074' #... + '168444365510704342711559699508093042880177904174497792', + # 2**1024 - 2**970 - tiny + '179769313486231580793728971405303415079934132710037' #... + '826936173778980444968292764750946649017977587207096' #... + '330286416692887910946555547851940402630657488671505' #... + '820681908902000708383676273854845817711531764475730' #... + '270069855571366959622842914819860834936475292719074' #... + '168444365510704342711559699508093042880177904174497791.999', + # 2**1024 - 2**970 + tiny + '179769313486231580793728971405303415079934132710037' #... + '826936173778980444968292764750946649017977587207096' #... + '330286416692887910946555547851940402630657488671505' #... + '820681908902000708383676273854845817711531764475730' #... + '270069855571366959622842914819860834936475292719074' #... + '168444365510704342711559699508093042880177904174497792.001', + # 1 - 2**-54, +-tiny + '999999999999999944488848768742172978818416595458984375e-54', + '9999999999999999444888487687421729788184165954589843749999999e-54', + '9999999999999999444888487687421729788184165954589843750000001e-54', ] for s in test_strings: self.check_strtod(s) Modified: python/branches/release31-maint/Python/dtoa.c ============================================================================== --- python/branches/release31-maint/Python/dtoa.c (original) +++ python/branches/release31-maint/Python/dtoa.c Thu Jan 21 20:57:43 2010 @@ -270,7 +270,7 @@ typedef struct BCinfo BCinfo; struct BCinfo { - int dsign, e0, nd, nd0, scale; + int e0, nd, nd0, scale; }; #define FFFFFFFF 0xffffffffUL @@ -967,8 +967,8 @@ return c; } -/* Given a positive normal double x, return the difference between x and the next - double up. Doesn't give correct results for subnormals. */ +/* Given a positive normal double x, return the difference between x and the + next double up. Doesn't give correct results for subnormals. */ static double ulp(U *x) @@ -1276,9 +1276,6 @@ bc is a struct containing information gathered during the parsing and estimation steps of _Py_dg_strtod. Description of fields follows: - bc->dsign is 1 if rv < decimal value, 0 if rv >= decimal value. In - normal use, it should almost always be 1 when bigcomp is entered. - bc->e0 gives the exponent of the input value, such that dv = (integer given by the bd->nd digits of s0) * 10**e0 @@ -1387,47 +1384,37 @@ } } - /* if b >= d, round down */ - if (cmp(b, d) >= 0) { + /* Compare s0 with b/d: set dd to -1, 0, or 1 according as s0 < b/d, s0 == + * b/d, or s0 > b/d. Here the digits of s0 are thought of as representing + * a number in the range [0.1, 1). */ + if (cmp(b, d) >= 0) + /* b/d >= 1 */ dd = -1; - goto ret; - } + else { + i = 0; + for(;;) { + b = multadd(b, 10, 0); + if (b == NULL) { + Bfree(d); + return -1; + } + dd = s0[i < nd0 ? i : i+1] - '0' - quorem(b, d); + i++; - /* Compare b/d with s0 */ - for(i = 0; i < nd0; i++) { - b = multadd(b, 10, 0); - if (b == NULL) { - Bfree(d); - return -1; - } - dd = *s0++ - '0' - quorem(b, d); - if (dd) - goto ret; - if (!b->x[0] && b->wds == 1) { - if (i < nd - 1) - dd = 1; - goto ret; - } - } - s0++; - for(; i < nd; i++) { - b = multadd(b, 10, 0); - if (b == NULL) { - Bfree(d); - return -1; - } - dd = *s0++ - '0' - quorem(b, d); - if (dd) - goto ret; - if (!b->x[0] && b->wds == 1) { - if (i < nd - 1) - dd = 1; - goto ret; + if (dd) + break; + if (!b->x[0] && b->wds == 1) { + /* b/d == 0 */ + dd = i < nd; + break; + } + if (!(i < nd)) { + /* b/d != 0, but digits of s0 exhausted */ + dd = -1; + break; + } } } - if (b->x[0] || b->wds > 1) - dd = -1; - ret: Bfree(b); Bfree(d); if (dd > 0 || (dd == 0 && odd)) @@ -1438,128 +1425,130 @@ double _Py_dg_strtod(const char *s00, char **se) { - int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, e, e1, error; - int esign, i, j, k, nd, nd0, nf, nz, nz0, sign; + int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, dsign, e, e1, error; + int esign, i, j, k, lz, nd, nd0, sign; const char *s, *s0, *s1; double aadj, aadj1; U aadj2, adj, rv, rv0; - ULong y, z, abse; + ULong y, z, abs_exp; Long L; BCinfo bc; Bigint *bb, *bb1, *bd, *bd0, *bs, *delta; - sign = nz0 = nz = 0; dval(&rv) = 0.; - for(s = s00;;s++) switch(*s) { - case '-': - sign = 1; - /* no break */ - case '+': - if (*++s) - goto break2; - /* no break */ - case 0: - goto ret0; - /* modify original dtoa.c so that it doesn't accept leading whitespace - case '\t': - case '\n': - case '\v': - case '\f': - case '\r': - case ' ': - continue; - */ - default: - goto break2; - } - break2: - if (*s == '0') { - nz0 = 1; - while(*++s == '0') ; - if (!*s) - goto ret; + + /* Start parsing. */ + c = *(s = s00); + + /* Parse optional sign, if present. */ + sign = 0; + switch (c) { + case '-': + sign = 1; + /* no break */ + case '+': + c = *++s; } - s0 = s; - for(nd = nf = 0; (c = *s) >= '0' && c <= '9'; nd++, s++) - ; - nd0 = nd; + + /* Skip leading zeros: lz is true iff there were leading zeros. */ + s1 = s; + while (c == '0') + c = *++s; + lz = s != s1; + + /* Point s0 at the first nonzero digit (if any). nd0 will be the position + of the point relative to s0. nd will be the total number of digits + ignoring leading zeros. */ + s0 = s1 = s; + while ('0' <= c && c <= '9') + c = *++s; + nd0 = nd = s - s1; + + /* Parse decimal point and following digits. */ if (c == '.') { c = *++s; if (!nd) { - for(; c == '0'; c = *++s) - nz++; - if (c > '0' && c <= '9') { - s0 = s; - nf += nz; - nz = 0; - goto have_dig; - } - goto dig_done; - } - for(; c >= '0' && c <= '9'; c = *++s) { - have_dig: - nz++; - if (c -= '0') { - nf += nz; - nd += nz; - nz = 0; - } + s1 = s; + while (c == '0') + c = *++s; + lz = lz || s != s1; + nd0 -= s - s1; + s0 = s; } + s1 = s; + while ('0' <= c && c <= '9') + c = *++s; + nd += s - s1; + } + + /* Now lz is true if and only if there were leading zero digits, and nd + gives the total number of digits ignoring leading zeros. A valid input + must have at least one digit. */ + if (!nd && !lz) { + if (se) + *se = (char *)s00; + goto parse_error; } - dig_done: + + /* Parse exponent. */ e = 0; if (c == 'e' || c == 'E') { - if (!nd && !nz && !nz0) { - goto ret0; - } s00 = s; + c = *++s; + + /* Exponent sign. */ esign = 0; - switch(c = *++s) { + switch (c) { case '-': esign = 1; + /* no break */ case '+': c = *++s; } - if (c >= '0' && c <= '9') { - while(c == '0') - c = *++s; - if (c > '0' && c <= '9') { - abse = c - '0'; - s1 = s; - while((c = *++s) >= '0' && c <= '9') - abse = 10*abse + c - '0'; - if (s - s1 > 8 || abse > MAX_ABS_EXP) - /* Avoid confusion from exponents - * so large that e might overflow. - */ - e = (int)MAX_ABS_EXP; /* safe for 16 bit ints */ - else - e = (int)abse; - if (esign) - e = -e; - } - else - e = 0; + + /* Skip zeros. lz is true iff there are leading zeros. */ + s1 = s; + while (c == '0') + c = *++s; + lz = s != s1; + + /* Get absolute value of the exponent. */ + s1 = s; + abs_exp = 0; + while ('0' <= c && c <= '9') { + abs_exp = 10*abs_exp + (c - '0'); + c = *++s; } + + /* abs_exp will be correct modulo 2**32. But 10**9 < 2**32, so if + there are at most 9 significant exponent digits then overflow is + impossible. */ + if (s - s1 > 9 || abs_exp > MAX_ABS_EXP) + e = (int)MAX_ABS_EXP; else + e = (int)abs_exp; + if (esign) + e = -e; + + /* A valid exponent must have at least one digit. */ + if (s == s1 && !lz) s = s00; } - if (!nd) { - if (!nz && !nz0) { - ret0: - s = s00; - sign = 0; - } - goto ret; - } - e -= nf; - if (!nd0) + + /* Adjust exponent to take into account position of the point. */ + e -= nd - nd0; + if (nd0 <= 0) nd0 = nd; - /* strip trailing zeros */ + /* Finished parsing. Set se to indicate how far we parsed */ + if (se) + *se = (char *)s; + + /* If all digits were zero, exit with return value +-0.0. Otherwise, + strip trailing zeros: scan back until we hit a nonzero digit. */ + if (!nd) + goto ret; for (i = nd; i > 0; ) { - /* scan back until we hit a nonzero digit. significant digit 'i' - is s0[i] if i < nd0, s0[i+1] if i >= nd0. */ --i; if (s0[i < nd0 ? i : i+1] != '0') { ++i; @@ -1571,28 +1560,21 @@ if (nd0 > nd) nd0 = nd; - /* Now we have nd0 digits, starting at s0, followed by a - * decimal point, followed by nd-nd0 digits. The number we're - * after is the integer represented by those digits times - * 10**e */ - - bc.e0 = e1 = e; - - /* Summary of parsing results. The parsing stage gives values - * s0, nd0, nd, e, sign, where: + /* Summary of parsing results. After parsing, and dealing with zero + * inputs, we have values s0, nd0, nd, e, sign, where: * - * - s0 points to the first significant digit of the input string s00; + * - s0 points to the first significant digit of the input string * * - nd is the total number of significant digits (here, and * below, 'significant digits' means the set of digits of the * significand of the input that remain after ignoring leading - * and trailing zeros. + * and trailing zeros). * - * - nd0 indicates the position of the decimal point (if - * present): so the nd significant digits are in s0[0:nd0] and - * s0[nd0+1:nd+1] using the usual Python half-open slice - * notation. (If nd0 < nd, then s0[nd0] necessarily contains - * a '.' character; if nd0 == nd, then it could be anything.) + * - nd0 indicates the position of the decimal point, if present; it + * satisfies 1 <= nd0 <= nd. The nd significant digits are in + * s0[0:nd0] and s0[nd0+1:nd+1] using the usual Python half-open slice + * notation. (If nd0 < nd, then s0[nd0] contains a '.' character; if + * nd0 == nd, then s0[nd0] could be any non-digit character.) * * - e is the adjusted exponent: the absolute value of the number * represented by the original input string is n * 10**e, where @@ -1614,6 +1596,7 @@ * gives the value represented by the first min(16, nd) sig. digits. */ + bc.e0 = e1 = e; y = z = 0; for (i = 0; i < nd; i++) { if (i < 9) @@ -1666,14 +1649,8 @@ if ((i = e1 & 15)) dval(&rv) *= tens[i]; if (e1 &= ~15) { - if (e1 > DBL_MAX_10_EXP) { - ovfl: - errno = ERANGE; - /* Can't trust HUGE_VAL */ - word0(&rv) = Exp_mask; - word1(&rv) = 0; - goto ret; - } + if (e1 > DBL_MAX_10_EXP) + goto ovfl; e1 >>= 4; for(j = 0; e1 > 1; j++, e1 >>= 1) if (e1 & 1) @@ -1695,6 +1672,16 @@ } } else if (e1 < 0) { + /* The input decimal value lies in [10**e1, 10**(e1+16)). + + If e1 <= -512, underflow immediately. + If e1 <= -256, set bc.scale to 2*P. + + So for input value < 1e-256, bc.scale is always set; + for input value >= 1e-240, bc.scale is never set. + For input values in [1e-256, 1e-240), bc.scale may or may + not be set. */ + e1 = -e1; if ((i = e1 & 15)) dval(&rv) /= tens[i]; @@ -1719,12 +1706,8 @@ else word1(&rv) &= 0xffffffff << j; } - if (!dval(&rv)) { - undfl: - dval(&rv) = 0.; - errno = ERANGE; - goto ret; - } + if (!dval(&rv)) + goto undfl; } } @@ -1769,7 +1752,34 @@ if (bd0 == NULL) goto failed_malloc; + /* Notation for the comments below. Write: + + - dv for the absolute value of the number represented by the original + decimal input string. + + - if we've truncated dv, write tdv for the truncated value. + Otherwise, set tdv == dv. + + - srv for the quantity rv/2^bc.scale; so srv is the current binary + approximation to tdv (and dv). It should be exactly representable + in an IEEE 754 double. + */ + for(;;) { + + /* This is the main correction loop for _Py_dg_strtod. + + We've got a decimal value tdv, and a floating-point approximation + srv=rv/2^bc.scale to tdv. The aim is to determine whether srv is + close enough (i.e., within 0.5 ulps) to tdv, and to compute a new + approximation if not. + + To determine whether srv is close enough to tdv, compute integers + bd, bb and bs proportional to tdv, srv and 0.5 ulp(srv) + respectively, and then use integer arithmetic to determine whether + |tdv - srv| is less than, equal to, or greater than 0.5 ulp(srv). + */ + bd = Balloc(bd0->k); if (bd == NULL) { Bfree(bd0); @@ -1782,6 +1792,7 @@ Bfree(bd0); goto failed_malloc; } + /* tdv = bd * 10^e; srv = bb * 2^(bbe - scale) */ bs = i2b(1); if (bs == NULL) { Bfree(bb); @@ -1802,6 +1813,17 @@ bb2 += bbe; else bd2 -= bbe; + + /* At this stage e = bd2 - bb2 + bbe = bd5 - bb5, so: + + tdv = bd * 2^(bbe + bd2 - bb2) * 5^(bd5 - bb5) + srv = bb * 2^(bbe - scale). + + Compute j such that + + 0.5 ulp(srv) = 2^(bbe - scale - j) + */ + bs2 = bb2; j = bbe - bc.scale; i = j + bbbits - 1; /* logb(rv) */ @@ -1809,9 +1831,26 @@ j += P - Emin; else j = P + 1 - bbbits; + + /* Now we have: + + M * tdv = bd * 2^(bd2 + scale + j) * 5^bd5 + M * srv = bb * 2^(bb2 + j) * 5^bb5 + M * 0.5 ulp(srv) = 2^bs2 * 5^bb5 + + where M is the constant (currently) represented by 2^(j + scale + + bb2 - bbe) * 5^bb5. + */ + bb2 += j; bd2 += j; bd2 += bc.scale; + + /* After the adjustments above, tdv, srv and 0.5 ulp(srv) are + proportional to: bd * 2^bd2 * 5^bd5, bb * 2^bb2 * 5^bb5, and + bs * 2^bs2 * 5^bb5, respectively. */ + + /* Remove excess powers of 2. i = min(bb2, bd2, bs2). */ i = bb2 < bd2 ? bb2 : bd2; if (i > bs2) i = bs2; @@ -1820,6 +1859,8 @@ bd2 -= i; bs2 -= i; } + + /* Scale bb, bd, bs by the appropriate powers of 2 and 5. */ if (bb5 > 0) { bs = pow5mult(bs, bb5); if (bs == NULL) { @@ -1874,6 +1915,11 @@ goto failed_malloc; } } + + /* Now bd, bb and bs are scaled versions of tdv, srv and 0.5 ulp(srv), + respectively. Compute the difference |tdv - srv|, and compare + with 0.5 ulp(srv). */ + delta = diff(bb, bd); if (delta == NULL) { Bfree(bb); @@ -1882,11 +1928,11 @@ Bfree(bd0); goto failed_malloc; } - bc.dsign = delta->sign; + dsign = delta->sign; delta->sign = 0; i = cmp(delta, bs); if (bc.nd > nd && i <= 0) { - if (bc.dsign) + if (dsign) break; /* Must use bigcomp(). */ /* Here rv overestimates the truncated decimal value by at most @@ -1908,7 +1954,7 @@ rv / 2^bc.scale >= 2^-1021. */ if (j - bc.scale >= 2) { dval(&rv) -= 0.5 * sulp(&rv, &bc); - break; + break; /* Use bigcomp. */ } } @@ -1922,7 +1968,7 @@ /* Error is less than half an ulp -- check for * special case of mantissa a power of two. */ - if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask + if (dsign || word1(&rv) || word0(&rv) & Bndry_mask || (word0(&rv) & Exp_mask) <= (2*P+1)*Exp_msk1 ) { break; @@ -1945,7 +1991,7 @@ } if (i == 0) { /* exactly half-way between */ - if (bc.dsign) { + if (dsign) { if ((word0(&rv) & Bndry_mask1) == Bndry_mask1 && word1(&rv) == ( (bc.scale && @@ -1957,7 +2003,7 @@ + Exp_msk1 ; word1(&rv) = 0; - bc.dsign = 0; + dsign = 0; break; } } @@ -1972,7 +2018,7 @@ /* accept rv */ break; /* rv = smallest denormal */ - if (bc.nd >nd) + if (bc.nd > nd) break; goto undfl; } @@ -1984,7 +2030,7 @@ } if (!(word1(&rv) & LSB)) break; - if (bc.dsign) + if (dsign) dval(&rv) += ulp(&rv); else { dval(&rv) -= ulp(&rv); @@ -1994,11 +2040,11 @@ goto undfl; } } - bc.dsign = 1 - bc.dsign; + dsign = 1 - dsign; break; } if ((aadj = ratio(delta, bs)) <= 2.) { - if (bc.dsign) + if (dsign) aadj = aadj1 = 1.; else if (word1(&rv) || word0(&rv) & Bndry_mask) { if (word1(&rv) == Tiny1 && !word0(&rv)) { @@ -2022,7 +2068,7 @@ } else { aadj *= 0.5; - aadj1 = bc.dsign ? aadj : -aadj; + aadj1 = dsign ? aadj : -aadj; if (Flt_Rounds == 0) aadj1 += 0.5; } @@ -2058,7 +2104,7 @@ if ((z = (ULong)aadj) <= 0) z = 1; aadj = z; - aadj1 = bc.dsign ? aadj : -aadj; + aadj1 = dsign ? aadj : -aadj; } dval(&aadj2) = aadj1; word0(&aadj2) += (2*P+1)*Exp_msk1 - y; @@ -2075,7 +2121,7 @@ L = (Long)aadj; aadj -= L; /* The tolerances below are conservative. */ - if (bc.dsign || word1(&rv) || word0(&rv) & Bndry_mask) { + if (dsign || word1(&rv) || word0(&rv) & Bndry_mask) { if (aadj < .4999999 || aadj > .5000001) break; } @@ -2104,20 +2150,28 @@ word0(&rv0) = Exp_1 - 2*P*Exp_msk1; word1(&rv0) = 0; dval(&rv) *= dval(&rv0); - /* try to avoid the bug of testing an 8087 register value */ - if (!(word0(&rv) & Exp_mask)) - errno = ERANGE; } + ret: - if (se) - *se = (char *)s; return sign ? -dval(&rv) : dval(&rv); + parse_error: + return 0.0; + failed_malloc: - if (se) - *se = (char *)s00; errno = ENOMEM; return -1.0; + + undfl: + return sign ? -0.0 : 0.0; + + ovfl: + errno = ERANGE; + /* Can't trust HUGE_VAL */ + word0(&rv) = Exp_mask; + word1(&rv) = 0; + return sign ? -dval(&rv) : dval(&rv); + } static char * From python-checkins at python.org Thu Jan 21 20:58:42 2010 From: python-checkins at python.org (mark.dickinson) Date: Thu, 21 Jan 2010 19:58:42 -0000 Subject: [Python-checkins] r77672 - python/trunk/Lib/test/test_strtod.py Message-ID: Author: mark.dickinson Date: Thu Jan 21 20:58:41 2010 New Revision: 77672 Log: Use // for floor division. Modified: python/trunk/Lib/test/test_strtod.py Modified: python/trunk/Lib/test/test_strtod.py ============================================================================== --- python/trunk/Lib/test/test_strtod.py (original) +++ python/trunk/Lib/test/test_strtod.py Thu Jan 21 20:58:41 2010 @@ -104,9 +104,9 @@ # exact halfway cases with a small number of significant digits for k in 0, 5, 10, 15, 20: # upper = smallest integer >= 2**54/5**k - upper = -(-2**54/5**k) + upper = -(-2**54//5**k) # lower = smallest odd number >= 2**53/5**k - lower = -(-2**53/5**k) + lower = -(-2**53//5**k) if lower % 2 == 0: lower += 1 for i in xrange(10 * TEST_SIZE): From python-checkins at python.org Thu Jan 21 20:59:20 2010 From: python-checkins at python.org (mark.dickinson) Date: Thu, 21 Jan 2010 19:59:20 -0000 Subject: [Python-checkins] r77673 - python/branches/release26-maint Message-ID: Author: mark.dickinson Date: Thu Jan 21 20:59:19 2010 New Revision: 77673 Log: Blocked revisions 77672 via svnmerge ........ r77672 | mark.dickinson | 2010-01-21 19:58:41 +0000 (Thu, 21 Jan 2010) | 1 line Use // for floor division. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Thu Jan 21 21:00:00 2010 From: python-checkins at python.org (mark.dickinson) Date: Thu, 21 Jan 2010 20:00:00 -0000 Subject: [Python-checkins] r77674 - python/branches/py3k Message-ID: Author: mark.dickinson Date: Thu Jan 21 21:00:00 2010 New Revision: 77674 Log: Blocked revisions 77672 via svnmerge ........ r77672 | mark.dickinson | 2010-01-21 19:58:41 +0000 (Thu, 21 Jan 2010) | 1 line Use // for floor division. ........ Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Thu Jan 21 21:50:57 2010 From: python-checkins at python.org (ezio.melotti) Date: Thu, 21 Jan 2010 20:50:57 -0000 Subject: [Python-checkins] r77675 - python/trunk/Doc/library/itertools.rst Message-ID: Author: ezio.melotti Date: Thu Jan 21 21:50:57 2010 New Revision: 77675 Log: #7746: rephrase a sentence Modified: python/trunk/Doc/library/itertools.rst Modified: python/trunk/Doc/library/itertools.rst ============================================================================== --- python/trunk/Doc/library/itertools.rst (original) +++ python/trunk/Doc/library/itertools.rst Thu Jan 21 21:50:57 2010 @@ -24,9 +24,8 @@ efficiently in pure Python. For instance, SML provides a tabulation tool: ``tabulate(f)`` which produces a -sequence ``f(0), f(1), ...``. This toolbox provides :func:`imap` and -:func:`count` which can be combined to form ``imap(f, count())`` to produce an -equivalent result. +sequence ``f(0), f(1), ...``. The same effect can be achieved in Python +by combining :func:`imap` and :func:`count` to form ``imap(f, count())``. These tools and their built-in counterparts also work well with the high-speed functions in the :mod:`operator` module. For example, the multiplication From python-checkins at python.org Thu Jan 21 21:52:23 2010 From: python-checkins at python.org (ezio.melotti) Date: Thu, 21 Jan 2010 20:52:23 -0000 Subject: [Python-checkins] r77676 - in python/branches/release26-maint: Doc/library/itertools.rst Message-ID: Author: ezio.melotti Date: Thu Jan 21 21:52:23 2010 New Revision: 77676 Log: Merged revisions 77675 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77675 | ezio.melotti | 2010-01-21 22:50:57 +0200 (Thu, 21 Jan 2010) | 1 line #7746: rephrase a sentence ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Doc/library/itertools.rst Modified: python/branches/release26-maint/Doc/library/itertools.rst ============================================================================== --- python/branches/release26-maint/Doc/library/itertools.rst (original) +++ python/branches/release26-maint/Doc/library/itertools.rst Thu Jan 21 21:52:23 2010 @@ -24,9 +24,8 @@ efficiently in pure Python. For instance, SML provides a tabulation tool: ``tabulate(f)`` which produces a -sequence ``f(0), f(1), ...``. This toolbox provides :func:`imap` and -:func:`count` which can be combined to form ``imap(f, count())`` to produce an -equivalent result. +sequence ``f(0), f(1), ...``. The same effect can be achieved in Python +by combining :func:`imap` and :func:`count` to form ``imap(f, count())``. These tools and their built-in counterparts also work well with the high-speed functions in the :mod:`operator` module. For example, the multiplication From python-checkins at python.org Thu Jan 21 21:57:24 2010 From: python-checkins at python.org (ezio.melotti) Date: Thu, 21 Jan 2010 20:57:24 -0000 Subject: [Python-checkins] r77677 - in python/branches/py3k: Doc/library/itertools.rst Message-ID: Author: ezio.melotti Date: Thu Jan 21 21:57:24 2010 New Revision: 77677 Log: Merged revisions 77675 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77675 | ezio.melotti | 2010-01-21 22:50:57 +0200 (Thu, 21 Jan 2010) | 1 line #7746: rephrase a sentence ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/library/itertools.rst Modified: python/branches/py3k/Doc/library/itertools.rst ============================================================================== --- python/branches/py3k/Doc/library/itertools.rst (original) +++ python/branches/py3k/Doc/library/itertools.rst Thu Jan 21 21:57:24 2010 @@ -22,7 +22,7 @@ efficiently in pure Python. For instance, SML provides a tabulation tool: ``tabulate(f)`` which produces a -sequence ``f(0), f(1), ...``. But, this effect can be achieved in Python +sequence ``f(0), f(1), ...``. The same effect can be achieved in Python by combining :func:`map` and :func:`count` to form ``map(f, count())``. These tools and their built-in counterparts also work well with the high-speed From python-checkins at python.org Thu Jan 21 21:59:06 2010 From: python-checkins at python.org (ezio.melotti) Date: Thu, 21 Jan 2010 20:59:06 -0000 Subject: [Python-checkins] r77678 - in python/branches/release31-maint: Doc/library/itertools.rst Message-ID: Author: ezio.melotti Date: Thu Jan 21 21:59:06 2010 New Revision: 77678 Log: Merged revisions 77677 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77677 | ezio.melotti | 2010-01-21 22:57:24 +0200 (Thu, 21 Jan 2010) | 9 lines Merged revisions 77675 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77675 | ezio.melotti | 2010-01-21 22:50:57 +0200 (Thu, 21 Jan 2010) | 1 line #7746: rephrase a sentence ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Doc/library/itertools.rst Modified: python/branches/release31-maint/Doc/library/itertools.rst ============================================================================== --- python/branches/release31-maint/Doc/library/itertools.rst (original) +++ python/branches/release31-maint/Doc/library/itertools.rst Thu Jan 21 21:59:06 2010 @@ -22,7 +22,7 @@ efficiently in pure Python. For instance, SML provides a tabulation tool: ``tabulate(f)`` which produces a -sequence ``f(0), f(1), ...``. But, this effect can be achieved in Python +sequence ``f(0), f(1), ...``. The same effect can be achieved in Python by combining :func:`map` and :func:`count` to form ``map(f, count())``. These tools and their built-in counterparts also work well with the high-speed From solipsis at pitrou.net Fri Jan 22 00:55:31 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Fri, 22 Jan 2010 00:55:31 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77677): sum=0 Message-ID: <20100121235531.D06D61770D@ns6635.ovh.net> py3k results for svn r77677 (hg cset d17b720a6f7f) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogWH2dMp', '-x', 'test_httpservers'] From python-checkins at python.org Fri Jan 22 01:34:49 2010 From: python-checkins at python.org (matthias.klose) Date: Fri, 22 Jan 2010 00:34:49 -0000 Subject: [Python-checkins] r77679 - python/trunk/Misc/NEWS Message-ID: Author: matthias.klose Date: Fri Jan 22 01:34:48 2010 New Revision: 77679 Log: - Mention CVE-2009-3720 for change in r74429. Modified: python/trunk/Misc/NEWS Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Fri Jan 22 01:34:48 2010 @@ -1908,7 +1908,7 @@ - Issue #6848: Fix curses module build failure on OS X 10.6. - Fix a segfault in expat when given a specially crafted input lead to the - tokenizer not stopping. + tokenizer not stopping. CVE-2009-3720. - Issue #6561: '\d' in a regex now matches only characters with Unicode category 'Nd' (Number, Decimal Digit). Previously it also From nnorwitz at gmail.com Fri Jan 22 01:36:14 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Thu, 21 Jan 2010 19:36:14 -0500 Subject: [Python-checkins] Python Regression Test Failures refleak (2) Message-ID: <20100122003614.GA20419@kbk-i386-bb.psfb.org> More important issues: ---------------------- test_distutils leaked [25, -25, 50] references, sum=50 test_format leaked [0, 60, 0] references, sum=60 Less important issues: ---------------------- test_popen2 leaked [4, 0, 0] references, sum=4 From python-checkins at python.org Fri Jan 22 01:39:05 2010 From: python-checkins at python.org (matthias.klose) Date: Fri, 22 Jan 2010 00:39:05 -0000 Subject: [Python-checkins] r77680 - in python/trunk: Misc/NEWS Modules/expat/xmlparse.c Message-ID: Author: matthias.klose Date: Fri Jan 22 01:39:04 2010 New Revision: 77680 Log: - Expat: Fix DoS via XML document with malformed UTF-8 sequences (CVE_2009_3560). Modified: python/trunk/Misc/NEWS python/trunk/Modules/expat/xmlparse.c Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Fri Jan 22 01:39:04 2010 @@ -66,6 +66,12 @@ Extension extra options may change the output without changing the .c file). Initial patch by Collin Winter. +Extension Modules +----------------- + +- Expat: Fix DoS via XML document with malformed UTF-8 sequences + (CVE_2009_3560). + Build ----- Modified: python/trunk/Modules/expat/xmlparse.c ============================================================================== --- python/trunk/Modules/expat/xmlparse.c (original) +++ python/trunk/Modules/expat/xmlparse.c Fri Jan 22 01:39:04 2010 @@ -3682,6 +3682,9 @@ return XML_ERROR_UNCLOSED_TOKEN; case XML_TOK_PARTIAL_CHAR: return XML_ERROR_PARTIAL_CHAR; + case -XML_TOK_PROLOG_S: + tok = -tok; + break; case XML_TOK_NONE: #ifdef XML_DTD /* for internal PE NOT referenced between declarations */ From python-checkins at python.org Fri Jan 22 02:05:13 2010 From: python-checkins at python.org (matthias.klose) Date: Fri, 22 Jan 2010 01:05:13 -0000 Subject: [Python-checkins] r77681 - in python/branches/release26-maint: Misc/NEWS Modules/expat/xmlparse.c Message-ID: Author: matthias.klose Date: Fri Jan 22 02:05:13 2010 New Revision: 77681 Log: Merged revisions 77680 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77680 | matthias.klose | 2010-01-22 01:39:04 +0100 (Fr, 22 Jan 2010) | 3 lines - Expat: Fix DoS via XML document with malformed UTF-8 sequences (CVE_2009_3560). ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Misc/NEWS python/branches/release26-maint/Modules/expat/xmlparse.c Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Fri Jan 22 02:05:13 2010 @@ -169,6 +169,15 @@ - Issue #5037: Proxy the __unicode__ special method to __unicode__ instead of __str__. +Extension Modules +----------------- + +- Expat: Fix DoS via XML document with malformed UTF-8 sequences + (CVE_2009_3560). + +Build +----- +>>>>>>> .merge-right.r77680 Build ----- Modified: python/branches/release26-maint/Modules/expat/xmlparse.c ============================================================================== --- python/branches/release26-maint/Modules/expat/xmlparse.c (original) +++ python/branches/release26-maint/Modules/expat/xmlparse.c Fri Jan 22 02:05:13 2010 @@ -3682,6 +3682,9 @@ return XML_ERROR_UNCLOSED_TOKEN; case XML_TOK_PARTIAL_CHAR: return XML_ERROR_PARTIAL_CHAR; + case -XML_TOK_PROLOG_S: + tok = -tok; + break; case XML_TOK_NONE: #ifdef XML_DTD /* for internal PE NOT referenced between declarations */ From python-checkins at python.org Fri Jan 22 02:10:19 2010 From: python-checkins at python.org (matthias.klose) Date: Fri, 22 Jan 2010 01:10:19 -0000 Subject: [Python-checkins] r77682 - in python/branches/py3k: Misc/NEWS Modules/expat/xmlparse.c Message-ID: Author: matthias.klose Date: Fri Jan 22 02:10:19 2010 New Revision: 77682 Log: Merged revisions 77680 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77680 | matthias.klose | 2010-01-22 01:39:04 +0100 (Fr, 22 Jan 2010) | 3 lines - Expat: Fix DoS via XML document with malformed UTF-8 sequences (CVE_2009_3560). ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Misc/NEWS python/branches/py3k/Modules/expat/xmlparse.c Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Fri Jan 22 02:10:19 2010 @@ -610,6 +610,9 @@ - Issue #2389: Array objects are now pickled in a portable manner. +- Expat: Fix DoS via XML document with malformed UTF-8 sequences + (CVE_2009_3560). + Build ----- Modified: python/branches/py3k/Modules/expat/xmlparse.c ============================================================================== --- python/branches/py3k/Modules/expat/xmlparse.c (original) +++ python/branches/py3k/Modules/expat/xmlparse.c Fri Jan 22 02:10:19 2010 @@ -3682,6 +3682,9 @@ return XML_ERROR_UNCLOSED_TOKEN; case XML_TOK_PARTIAL_CHAR: return XML_ERROR_PARTIAL_CHAR; + case -XML_TOK_PROLOG_S: + tok = -tok; + break; case XML_TOK_NONE: #ifdef XML_DTD /* for internal PE NOT referenced between declarations */ From python-checkins at python.org Fri Jan 22 02:13:15 2010 From: python-checkins at python.org (matthias.klose) Date: Fri, 22 Jan 2010 01:13:15 -0000 Subject: [Python-checkins] r77683 - in python/branches/release31-maint: Misc/NEWS Modules/expat/xmlparse.c Message-ID: Author: matthias.klose Date: Fri Jan 22 02:13:15 2010 New Revision: 77683 Log: Merged revisions 77682 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77682 | matthias.klose | 2010-01-22 02:10:19 +0100 (Fr, 22 Jan 2010) | 10 lines Merged revisions 77680 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77680 | matthias.klose | 2010-01-22 01:39:04 +0100 (Fr, 22 Jan 2010) | 3 lines - Expat: Fix DoS via XML document with malformed UTF-8 sequences (CVE_2009_3560). ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Misc/NEWS python/branches/release31-maint/Modules/expat/xmlparse.c Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Fri Jan 22 02:13:15 2010 @@ -272,6 +272,9 @@ - Issue #6848: Fix curses module build failure on OS X 10.6. +- Expat: Fix DoS via XML document with malformed UTF-8 sequences + (CVE_2009_3560). + Tests ----- Modified: python/branches/release31-maint/Modules/expat/xmlparse.c ============================================================================== --- python/branches/release31-maint/Modules/expat/xmlparse.c (original) +++ python/branches/release31-maint/Modules/expat/xmlparse.c Fri Jan 22 02:13:15 2010 @@ -3682,6 +3682,9 @@ return XML_ERROR_UNCLOSED_TOKEN; case XML_TOK_PARTIAL_CHAR: return XML_ERROR_PARTIAL_CHAR; + case -XML_TOK_PROLOG_S: + tok = -tok; + break; case XML_TOK_NONE: #ifdef XML_DTD /* for internal PE NOT referenced between declarations */ From rdmurray at bitdance.com Fri Jan 22 04:04:15 2010 From: rdmurray at bitdance.com (R. David Murray) Date: Thu, 21 Jan 2010 22:04:15 -0500 Subject: [Python-checkins] r77680 - in python/trunk: Misc/NEWS Modules/expat/xmlparse.c In-Reply-To: <20100122003915.EA86418986F@kimball.webabinitio.net> References: <20100122003915.EA86418986F@kimball.webabinitio.net> Message-ID: <20100122030415.DD9BF1BC399@kimball.webabinitio.net> On Thu, 21 Jan 2010 19:39:15 -0500, matthias.klose wrote: > Author: matthias.klose > Date: Fri Jan 22 01:39:04 2010 > New Revision: 77680 Matthias, this patch seems to have turned a lot of the buildbots red. See for example http://www.python.org/dev/buildbot/all/builders/x86%20Ubuntu%203.x/builds/324 --David From nnorwitz at gmail.com Fri Jan 22 10:17:03 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 22 Jan 2010 04:17:03 -0500 Subject: [Python-checkins] Python Regression Test Failures basics (1) Message-ID: <20100122091703.GA20551@kbk-i386-bb.psfb.org> 343 tests OK. 1 test failed: test_pyexpat 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn fetching http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml ... fetching http://people.freebsd.org/~perky/i18n/EUC-CN.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT ... test_codecmaps_hk fetching http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT ... test_codecmaps_jp fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-JP.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/SHIFTJIS.TXT ... fetching http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT ... test_codecmaps_kr fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT ... fetching http://people.freebsd.org/~perky/i18n/EUC-KR.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT ... test_codecmaps_tw fetching http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT ... fetching http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT ... test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19647 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15448 refs] [15448 refs] [15448 refs] [25474 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization fetching http://www.unicode.org/Public/5.1.0/ucd/NormalizationTest.txt ... test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17036 refs] [17036 refs] test_plistlib test_poll test_popen [15453 refs] [15453 refs] [15453 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20958 refs] [20958 refs] test_pyexpat test test_pyexpat failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_pyexpat.py", line 570, in test1 self.assertEquals(str(e), 'no element found: line 2, column 1') AssertionError: 'unclosed token: line 2, column 0' != 'no element found: line 2, column 1' Re-running test 'test_pyexpat' in verbose mode test_ordered_attributes (test.test_pyexpat.SetAttributeTest) ... ok test_returns_unicode (test.test_pyexpat.SetAttributeTest) ... ok test_specified_attributes (test.test_pyexpat.SetAttributeTest) ... ok test_parse_file (test.test_pyexpat.ParseTest) ... ok test_unicode (test.test_pyexpat.ParseTest) ... ok test_utf8 (test.test_pyexpat.ParseTest) ... ok test_illegal (test.test_pyexpat.NamespaceSeparatorTest) ... ok test_legal (test.test_pyexpat.NamespaceSeparatorTest) ... ok test_zero_length (test.test_pyexpat.NamespaceSeparatorTest) ... ok test (test.test_pyexpat.InterningTest) ... ok test1 (test.test_pyexpat.BufferTextTest) ... ok test2 (test.test_pyexpat.BufferTextTest) ... ok test3 (test.test_pyexpat.BufferTextTest) ... ok test4 (test.test_pyexpat.BufferTextTest) ... ok test5 (test.test_pyexpat.BufferTextTest) ... ok test6 (test.test_pyexpat.BufferTextTest) ... ok test7 (test.test_pyexpat.BufferTextTest) ... ok test_buffering_enabled (test.test_pyexpat.BufferTextTest) ... ok test_default_to_disabled (test.test_pyexpat.BufferTextTest) ... ok test (test.test_pyexpat.HandlerExceptionTest) ... ok test (test.test_pyexpat.PositionTest) ... ok test_parse_only_xml_data (test.test_pyexpat.sf1296433Test) ... ok test_1000_bytes (test.test_pyexpat.ChardataBufferTest) ... ok test_1025_bytes (test.test_pyexpat.ChardataBufferTest) ... ok test_change_size_1 (test.test_pyexpat.ChardataBufferTest) ... ok test_change_size_2 (test.test_pyexpat.ChardataBufferTest) ... ok test_disabling_buffer (test.test_pyexpat.ChardataBufferTest) ... ok test_unchanged_size (test.test_pyexpat.ChardataBufferTest) ... ok test_wrong_size (test.test_pyexpat.ChardataBufferTest) ... ok test1 (test.test_pyexpat.MalformedInputText) ... FAIL test2 (test.test_pyexpat.MalformedInputText) ... ok ====================================================================== FAIL: test1 (test.test_pyexpat.MalformedInputText) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_pyexpat.py", line 570, in test1 self.assertEquals(str(e), 'no element found: line 2, column 1') AssertionError: 'unclosed token: line 2, column 0' != 'no element found: line 2, column 1' ---------------------------------------------------------------------- Ran 31 tests in 0.013s FAILED (failures=1) test test_pyexpat failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_pyexpat.py", line 570, in test1 self.assertEquals(str(e), 'no element found: line 2, column 1') AssertionError: 'unclosed token: line 2, column 0' != 'no element found: line 2, column 1' test_queue test_quopri [18302 refs] [18302 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15448 refs] [15448 refs] [15451 refs] [15448 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15448 refs] [15448 refs] [15677 refs] [15471 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15451 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18759 refs] [20339 refs] [20153 refs] [20153 refs] [20153 refs] [20153 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 343 tests OK. 1 test failed: test_pyexpat 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [872876 refs] From nnorwitz at gmail.com Fri Jan 22 10:29:52 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 22 Jan 2010 04:29:52 -0500 Subject: [Python-checkins] Python Regression Test Failures opt (1) Message-ID: <20100122092952.GA24650@kbk-i386-bb.psfb.org> 343 tests OK. 1 test failed: test_pyexpat 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 test_bsddb3 skipped -- Use of the `bsddb' resource not enabled test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_curses test_curses skipped -- Use of the `curses' resource not enabled test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19650 refs] [19650 refs] [19650 refs] [19647 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15448 refs] [15448 refs] [15448 refs] [25474 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_linuxaudiodev test_linuxaudiodev skipped -- Use of the `audio' resource not enabled test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_ossaudiodev test_ossaudiodev skipped -- Use of the `audio' resource not enabled test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17036 refs] [17036 refs] test_plistlib test_poll test_popen [15453 refs] [15453 refs] [15453 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20958 refs] [20958 refs] test_pyexpat test test_pyexpat failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_pyexpat.py", line 570, in test1 self.assertEquals(str(e), 'no element found: line 2, column 1') AssertionError: 'unclosed token: line 2, column 0' != 'no element found: line 2, column 1' Re-running test 'test_pyexpat' in verbose mode test_ordered_attributes (test.test_pyexpat.SetAttributeTest) ... ok test_returns_unicode (test.test_pyexpat.SetAttributeTest) ... ok test_specified_attributes (test.test_pyexpat.SetAttributeTest) ... ok test_parse_file (test.test_pyexpat.ParseTest) ... ok test_unicode (test.test_pyexpat.ParseTest) ... ok test_utf8 (test.test_pyexpat.ParseTest) ... ok test_illegal (test.test_pyexpat.NamespaceSeparatorTest) ... ok test_legal (test.test_pyexpat.NamespaceSeparatorTest) ... ok test_zero_length (test.test_pyexpat.NamespaceSeparatorTest) ... ok test (test.test_pyexpat.InterningTest) ... ok test1 (test.test_pyexpat.BufferTextTest) ... ok test2 (test.test_pyexpat.BufferTextTest) ... ok test3 (test.test_pyexpat.BufferTextTest) ... ok test4 (test.test_pyexpat.BufferTextTest) ... ok test5 (test.test_pyexpat.BufferTextTest) ... ok test6 (test.test_pyexpat.BufferTextTest) ... ok test7 (test.test_pyexpat.BufferTextTest) ... ok test_buffering_enabled (test.test_pyexpat.BufferTextTest) ... ok test_default_to_disabled (test.test_pyexpat.BufferTextTest) ... ok test (test.test_pyexpat.HandlerExceptionTest) ... ok test (test.test_pyexpat.PositionTest) ... ok test_parse_only_xml_data (test.test_pyexpat.sf1296433Test) ... ok test_1000_bytes (test.test_pyexpat.ChardataBufferTest) ... ok test_1025_bytes (test.test_pyexpat.ChardataBufferTest) ... ok test_change_size_1 (test.test_pyexpat.ChardataBufferTest) ... ok test_change_size_2 (test.test_pyexpat.ChardataBufferTest) ... ok test_disabling_buffer (test.test_pyexpat.ChardataBufferTest) ... ok test_unchanged_size (test.test_pyexpat.ChardataBufferTest) ... ok test_wrong_size (test.test_pyexpat.ChardataBufferTest) ... ok test1 (test.test_pyexpat.MalformedInputText) ... FAIL test2 (test.test_pyexpat.MalformedInputText) ... ok ====================================================================== FAIL: test1 (test.test_pyexpat.MalformedInputText) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_pyexpat.py", line 570, in test1 self.assertEquals(str(e), 'no element found: line 2, column 1') AssertionError: 'unclosed token: line 2, column 0' != 'no element found: line 2, column 1' ---------------------------------------------------------------------- Ran 31 tests in 0.013s FAILED (failures=1) test test_pyexpat failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_pyexpat.py", line 570, in test1 self.assertEquals(str(e), 'no element found: line 2, column 1') AssertionError: 'unclosed token: line 2, column 0' != 'no element found: line 2, column 1' test_queue test_quopri [18302 refs] [18302 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15448 refs] [15448 refs] [15451 refs] [15448 refs] test_slice test_smtplib test_smtpnet test_smtpnet skipped -- Use of the `network' resource not enabled test_socket test_socketserver test_socketserver skipped -- Use of the `network' resource not enabled test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15448 refs] [15448 refs] [15677 refs] [15471 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15451 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18759 refs] [20339 refs] [20153 refs] [20153 refs] [20153 refs] [20153 refs] test_threading_local test_threadsignals test_time test_timeout test_timeout skipped -- Use of the `network' resource not enabled test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllib2net skipped -- Use of the `network' resource not enabled test_urllibnet test_urllibnet skipped -- Use of the `network' resource not enabled test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle test_xpickle -- skipping backwards compat tests. Use 'regrtest.py -u xpickle' to run them. test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 343 tests OK. 1 test failed: test_pyexpat 36 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_bsddb3 test_cd test_cl test_curses test_epoll test_gl test_imgfile test_ioctl test_kqueue test_linuxaudiodev test_macos test_macostools test_multiprocessing test_ossaudiodev test_pep277 test_py3kwarn test_scriptpackages test_smtpnet test_socketserver test_startfile test_sunaudiodev test_tcl test_timeout test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_urllib2net test_urllibnet test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [871765 refs] From mal at egenix.com Fri Jan 22 10:38:34 2010 From: mal at egenix.com (M.-A. Lemburg) Date: Fri, 22 Jan 2010 10:38:34 +0100 Subject: [Python-checkins] r77680 - in python/trunk: Misc/NEWS Modules/expat/xmlparse.c In-Reply-To: <20100122030415.DD9BF1BC399@kimball.webabinitio.net> References: <20100122003915.EA86418986F@kimball.webabinitio.net> <20100122030415.DD9BF1BC399@kimball.webabinitio.net> Message-ID: <4B59721A.1090401@egenix.com> R. David Murray wrote: > On Thu, 21 Jan 2010 19:39:15 -0500, matthias.klose wrote: >> Author: matthias.klose >> Date: Fri Jan 22 01:39:04 2010 >> New Revision: 77680 > > Matthias, this patch seems to have turned a lot of the buildbots red. > See for example > > http://www.python.org/dev/buildbot/all/builders/x86%20Ubuntu%203.x/builds/324 Here's the failing test: FAILED (failures=1) test test_pyexpat failed -- Traceback (most recent call last): File "/srv/buildbot/buildarea/3.x.bolen-ubuntu/build/Lib/test/test_pyexpat.py", line 518, in test1 parser.Parse(xml, True) xml.parsers.expat.ExpatError: unclosed token: line 2, column 0 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/srv/buildbot/buildarea/3.x.bolen-ubuntu/build/Lib/test/test_pyexpat.py", line 521, in test1 self.assertEquals(str(e), 'no element found: line 2, column 1') AssertionError: 'unclosed token: line 2, column 0' != 'no element found: line 2, column 1' -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Source (#1, Jan 22 2010) >>> Python/Zope Consulting and Support ... http://www.egenix.com/ >>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/ >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/ ________________________________________________________________________ ::: Try our new mxODBC.Connect Python Database Interface for free ! :::: eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg Registered at Amtsgericht Duesseldorf: HRB 46611 http://www.egenix.com/company/contact/ From python-checkins at python.org Fri Jan 22 12:20:00 2010 From: python-checkins at python.org (georg.brandl) Date: Fri, 22 Jan 2010 11:20:00 -0000 Subject: [Python-checkins] r77684 - python/branches/release26-maint/Misc/NEWS Message-ID: Author: georg.brandl Date: Fri Jan 22 12:20:00 2010 New Revision: 77684 Log: Remove line left over from merging. Modified: python/branches/release26-maint/Misc/NEWS Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Fri Jan 22 12:20:00 2010 @@ -177,9 +177,6 @@ Build ----- ->>>>>>> .merge-right.r77680 -Build ------ - Issue #7661: Allow ctypes to be built from a non-ASCII directory path. Patch by Florent Xicluna. From nnorwitz at gmail.com Fri Jan 22 12:52:16 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 22 Jan 2010 06:52:16 -0500 Subject: [Python-checkins] Python Regression Test Failures refleak (1) Message-ID: <20100122115216.GA24302@kbk-i386-bb.psfb.org> More important issues: ---------------------- test_bz2 leaked [0, 0, 80] references, sum=80 Less important issues: ---------------------- test_threadsignals leaked [0, 8, 0] references, sum=8 From nnorwitz at gmail.com Fri Jan 22 13:15:32 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 22 Jan 2010 07:15:32 -0500 Subject: [Python-checkins] Python Regression Test Failures all (1) Message-ID: <20100122121532.GA31643@kbk-i386-bb.psfb.org> 349 tests OK. 1 test failed: test_pyexpat 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_unittest test_doctest test_doctest2 test_MimeWriter test_SimpleHTTPServer test_StringIO test___all__ test___future__ test__locale test_abc test_abstract_numbers test_aepack test_aepack skipped -- No module named aetypes test_aifc test_al test_al skipped -- No module named al test_anydbm test_applesingle test_applesingle skipped -- No module named MacOS test_array test_ascii_formatd test_ast test_asynchat test_asyncore test_atexit test_audioop test_augassign test_base64 test_bastion test_bigaddrspace test_bigmem test_binascii test_binhex test_binop test_bisect test_bool test_bsddb test_bsddb185 test_bsddb185 skipped -- No module named bsddb185 test_bsddb3 Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002) Test path prefix: /tmp/z-test_bsddb3-24310 test_buffer test_bufio test_bytes test_bz2 test_calendar test_call test_capi test_cd test_cd skipped -- No module named cd test_cfgparser test_cgi test_charmapcodec test_cl test_cl skipped -- No module named cl test_class test_cmath test_cmd test_cmd_line test_cmd_line_script test_code test_codeccallbacks test_codecencodings_cn test_codecencodings_hk test_codecencodings_jp test_codecencodings_kr test_codecencodings_tw test_codecmaps_cn test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr test_codecmaps_tw test_codecs test_codeop test_coding test_coercion test_collections test_colorsys test_commands test_compare test_compile test_compileall test_compiler test_complex test_complex_args test_contains test_contextlib test_cookie test_cookielib test_copy test_copy_reg test_cpickle test_cprofile test_crypt test_csv test_ctypes test_datetime test_dbm test_decimal test_decorators test_defaultdict test_deque test_descr test_descrtut test_dictcomps test_dictviews test_difflib test_dircache test_dis test_distutils [19647 refs] test_dl test_docxmlrpc test_dumbdbm test_dummy_thread test_dummy_threading test_email test_email_codecs test_email_renamed test_enumerate test_eof test_epoll test_epoll skipped -- kernel doesn't support epoll() test_errno test_exception_variations test_extcall test_fcntl test_file test_file2k test_filecmp test_fileinput test_fileio test_float test_fnmatch test_fork1 test_format test_fpformat test_fractions test_frozen test_ftplib test_funcattrs test_functools test_future test_future3 test_future4 test_future5 test_future_builtins test_gc test_gdbm test_generators test_genericpath test_genexps test_getargs test_getargs2 test_getopt test_gettext test_gl test_gl skipped -- No module named gl test_glob test_global test_grp test_gzip test_hash test_hashlib test_heapq test_hmac test_hotshot test_htmllib test_htmlparser test_httplib test_httpservers [15448 refs] [15448 refs] [15448 refs] [25474 refs] test_imageop test_imaplib test_imgfile test_imgfile skipped -- No module named imgfile test_imp test_import test_importhooks test_importlib test_index test_inspect test_int test_int_literal test_io test_ioctl test_ioctl skipped -- Unable to open /dev/tty test_isinstance test_iter test_iterlen test_itertools test_json test_kqueue test_kqueue skipped -- test works only on BSD test_largefile test_lib2to3 test_linecache test_list test_locale test_logging test_long test_long_future test_longexp test_macos test_macos skipped -- No module named MacOS test_macostools test_macostools skipped -- No module named MacOS test_macpath test_mailbox test_marshal test_math test_md5 test_memoryio test_memoryview test_mhlib test_mimetools test_mimetypes test_minidom test_mmap test_module test_modulefinder test_multibytecodec test_multibytecodec_support test_multifile test_multiprocessing test_multiprocessing skipped -- This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. test_mutants test_mutex test_netrc test_new test_nis test_normalization test_ntpath test_old_mailbox test_openpty test_operator test_optparse test_os test_parser Expecting 's_push: parser stack overflow' in next line s_push: parser stack overflow test_pdb test_peepholer test_pep247 test_pep263 test_pep277 test_pep277 skipped -- test works only on NT+ test_pep292 test_pep352 test_pickle test_pickletools test_pipes test_pkg test_pkgimport test_pkgutil test_platform [17036 refs] [17036 refs] test_plistlib test_poll test_popen [15453 refs] [15453 refs] [15453 refs] test_popen2 test_poplib test_posix test_posixpath test_pow test_pprint test_print test_profile test_profilehooks test_property test_pstats test_pty test_pwd test_py3kwarn test_py3kwarn skipped -- test.test_py3kwarn must be run with the -3 flag test_pyclbr test_pydoc [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20959 refs] [20958 refs] [20958 refs] test_pyexpat test test_pyexpat failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_pyexpat.py", line 570, in test1 self.assertEquals(str(e), 'no element found: line 2, column 1') AssertionError: 'unclosed token: line 2, column 0' != 'no element found: line 2, column 1' Re-running test 'test_pyexpat' in verbose mode test_ordered_attributes (test.test_pyexpat.SetAttributeTest) ... ok test_returns_unicode (test.test_pyexpat.SetAttributeTest) ... ok test_specified_attributes (test.test_pyexpat.SetAttributeTest) ... ok test_parse_file (test.test_pyexpat.ParseTest) ... ok test_unicode (test.test_pyexpat.ParseTest) ... ok test_utf8 (test.test_pyexpat.ParseTest) ... ok test_illegal (test.test_pyexpat.NamespaceSeparatorTest) ... ok test_legal (test.test_pyexpat.NamespaceSeparatorTest) ... ok test_zero_length (test.test_pyexpat.NamespaceSeparatorTest) ... ok test (test.test_pyexpat.InterningTest) ... ok test1 (test.test_pyexpat.BufferTextTest) ... ok test2 (test.test_pyexpat.BufferTextTest) ... ok test3 (test.test_pyexpat.BufferTextTest) ... ok test4 (test.test_pyexpat.BufferTextTest) ... ok test5 (test.test_pyexpat.BufferTextTest) ... ok test6 (test.test_pyexpat.BufferTextTest) ... ok test7 (test.test_pyexpat.BufferTextTest) ... ok test_buffering_enabled (test.test_pyexpat.BufferTextTest) ... ok test_default_to_disabled (test.test_pyexpat.BufferTextTest) ... ok test (test.test_pyexpat.HandlerExceptionTest) ... ok test (test.test_pyexpat.PositionTest) ... ok test_parse_only_xml_data (test.test_pyexpat.sf1296433Test) ... ok test_1000_bytes (test.test_pyexpat.ChardataBufferTest) ... ok test_1025_bytes (test.test_pyexpat.ChardataBufferTest) ... ok test_change_size_1 (test.test_pyexpat.ChardataBufferTest) ... ok test_change_size_2 (test.test_pyexpat.ChardataBufferTest) ... ok test_disabling_buffer (test.test_pyexpat.ChardataBufferTest) ... ok test_unchanged_size (test.test_pyexpat.ChardataBufferTest) ... ok test_wrong_size (test.test_pyexpat.ChardataBufferTest) ... ok test1 (test.test_pyexpat.MalformedInputText) ... FAIL test2 (test.test_pyexpat.MalformedInputText) ... ok ====================================================================== FAIL: test1 (test.test_pyexpat.MalformedInputText) ---------------------------------------------------------------------- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_pyexpat.py", line 570, in test1 self.assertEquals(str(e), 'no element found: line 2, column 1') AssertionError: 'unclosed token: line 2, column 0' != 'no element found: line 2, column 1' ---------------------------------------------------------------------- Ran 31 tests in 0.013s FAILED (failures=1) test test_pyexpat failed -- Traceback (most recent call last): File "/tmp/python-test/local/lib/python2.7/test/test_pyexpat.py", line 570, in test1 self.assertEquals(str(e), 'no element found: line 2, column 1') AssertionError: 'unclosed token: line 2, column 0' != 'no element found: line 2, column 1' test_queue test_quopri [18302 refs] [18302 refs] test_random test_re test_readline test_repr test_resource test_rfc822 test_richcmp test_robotparser test_runpy test_sax test_scope test_scriptpackages test_scriptpackages skipped -- No module named aetools test_select test_set test_setcomps test_sets test_sgmllib test_sha test_shelve test_shlex test_shutil test_signal test_site [15448 refs] [15448 refs] [15451 refs] [15448 refs] test_slice test_smtplib test_smtpnet test_socket test_socketserver test_softspace test_sort test_sqlite test_ssl test_startfile test_startfile skipped -- module os has no attribute startfile test_str test_strftime test_string test_stringprep test_strop test_strptime test_strtod test_struct test_structmembers test_structseq test_subprocess [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [17309 refs] [15663 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] [15448 refs] . [15448 refs] [15448 refs] this bit of output is from a test of stdout in a different process ... [15448 refs] [15448 refs] [15663 refs] test_sunaudiodev test_sunaudiodev skipped -- No module named sunaudiodev test_sundry test_symtable test_syntax test_sys [15448 refs] [15448 refs] [15677 refs] [15471 refs] test_tarfile test_tcl test_tcl skipped -- No module named _tkinter test_telnetlib test_tempfile [15451 refs] test_textwrap test_thread test_threaded_import test_threadedtempfile test_threading [18759 refs] [20339 refs] [20153 refs] [20153 refs] [20153 refs] [20153 refs] test_threading_local test_threadsignals test_time test_timeout test_tk test_tk skipped -- No module named _tkinter test_tokenize test_trace test_traceback test_transformer test_ttk_guionly test_ttk_guionly skipped -- No module named _tkinter test_ttk_textonly test_ttk_textonly skipped -- No module named _tkinter test_tuple test_typechecks test_ucn test_unary test_undocumented_details test_unicode test_unicode_file test_unicode_file skipped -- No Unicode filesystem semantics on this platform. test_unicodedata test_univnewlines test_univnewlines2k test_unpack test_urllib test_urllib2 test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse test_userdict test_userlist test_userstring test_uu test_uuid WARNING: uuid.getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._ifconfig_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. WARNING: uuid._unixdll_getnode is unreliable on many platforms. It is disabled until the code and/or test can be fixed properly. test_wait3 test_wait4 test_warnings test_wave test_weakref test_whichdb test_winreg test_winreg skipped -- No module named _winreg test_winsound test_winsound skipped -- No module named winsound test_with test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c test_xmllib test_xmlrpc test_xpickle sh: line 1: python2.4: command not found sh: line 1: python2.6: command not found test_xrange test_zipfile test_zipfile64 test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run test_zipimport test_zipimport_support test_zlib 349 tests OK. 1 test failed: test_pyexpat 27 tests skipped: test_aepack test_al test_applesingle test_bsddb185 test_cd test_cl test_epoll test_gl test_imgfile test_ioctl test_kqueue test_macos test_macostools test_multiprocessing test_pep277 test_py3kwarn test_scriptpackages test_startfile test_sunaudiodev test_tcl test_tk test_ttk_guionly test_ttk_textonly test_unicode_file test_winreg test_winsound test_zipfile64 6 skips unexpected on linux2: test_multiprocessing test_ttk_guionly test_epoll test_tk test_ioctl test_ttk_textonly [889390 refs] From python-checkins at python.org Fri Jan 22 16:57:10 2010 From: python-checkins at python.org (stefan.krah) Date: Fri, 22 Jan 2010 15:57:10 -0000 Subject: [Python-checkins] r77685 - python/branches/py3k-cdecimal/Modules/cdecimal/basearith.c Message-ID: Author: stefan.krah Date: Fri Jan 22 16:57:10 2010 New Revision: 77685 Log: Code formatting. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/basearith.c Modified: python/branches/py3k-cdecimal/Modules/cdecimal/basearith.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/basearith.c (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/basearith.c Fri Jan 22 16:57:10 2010 @@ -135,7 +135,8 @@ * number in u >= number in v; */ void -_mpd_basesub(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, mpd_size_t m, mpd_size_t n) +_mpd_basesub(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, + mpd_size_t m, mpd_size_t n) { mpd_uint_t d; mpd_uint_t borrow = 0; @@ -162,8 +163,8 @@ } /* - * Subtract the contents of u from w. w is larger than u. Borrows are propagated - * further, but eventually w can absorb the final borrow. + * Subtract the contents of u from w. w is larger than u. Borrows are + * propagated further, but eventually w can absorb the final borrow. */ void _mpd_basesubfrom(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n) @@ -215,7 +216,8 @@ * w must be initialized to zero */ void -_mpd_basemul(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, mpd_size_t m, mpd_size_t n) +_mpd_basemul(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, + mpd_size_t m, mpd_size_t n) { mpd_uint_t hi, lo; mpd_uint_t carry; @@ -275,7 +277,8 @@ * false. A return value of -1 indicates an error. */ int -_mpd_basedivmod(mpd_uint_t *q, mpd_uint_t *r, const mpd_uint_t *uconst, const mpd_uint_t *vconst, +_mpd_basedivmod(mpd_uint_t *q, mpd_uint_t *r, + const mpd_uint_t *uconst, const mpd_uint_t *vconst, mpd_size_t nplusm, mpd_size_t n) { mpd_uint_t ustatic[MPD_MINALLOC_MAX]; @@ -375,7 +378,8 @@ /* Leftshift of src by shift digits; src may equal dest. */ void -_mpd_baseshiftl(mpd_uint_t *dest, mpd_uint_t *src, mpd_size_t n, mpd_size_t m, mpd_size_t shift) +_mpd_baseshiftl(mpd_uint_t *dest, mpd_uint_t *src, mpd_size_t n, mpd_size_t m, + mpd_size_t shift) { #if defined(__GNUC__) && !defined(__INTEL_COMPILER) /* spurious uninitialized warnings */ @@ -417,7 +421,8 @@ /* Rightshift of src by shift digits; src may equal dest. */ mpd_uint_t -_mpd_baseshiftr(mpd_uint_t *dest, mpd_uint_t *src, mpd_size_t slen, mpd_size_t shift) +_mpd_baseshiftr(mpd_uint_t *dest, mpd_uint_t *src, mpd_size_t slen, + mpd_size_t shift) { #if defined(__GNUC__) && !defined(__INTEL_COMPILER) /* spurious uninitialized warnings */ @@ -505,7 +510,8 @@ /* w := product of u (len n) and v (single word) */ void -_mpd_shortmul_b(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n, mpd_uint_t v, mpd_uint_t b) +_mpd_shortmul_b(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n, + mpd_uint_t v, mpd_uint_t b) { mpd_uint_t hi, lo; mpd_uint_t carry = 0; @@ -529,7 +535,8 @@ * w := quotient of u (len n) divided by a single word v */ mpd_uint_t -_mpd_shortdiv_b(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n, mpd_uint_t v, mpd_uint_t b) +_mpd_shortdiv_b(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n, + mpd_uint_t v, mpd_uint_t b) { mpd_uint_t hi, lo; mpd_uint_t rem = 0; From python-checkins at python.org Fri Jan 22 16:58:42 2010 From: python-checkins at python.org (stefan.krah) Date: Fri, 22 Jan 2010 15:58:42 -0000 Subject: [Python-checkins] r77686 - python/branches/py3k-cdecimal/Modules/cdecimal/basearith.h Message-ID: Author: stefan.krah Date: Fri Jan 22 16:58:42 2010 New Revision: 77686 Log: Code formatting. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/basearith.h Modified: python/branches/py3k-cdecimal/Modules/cdecimal/basearith.h ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/basearith.h (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/basearith.h Fri Jan 22 16:58:42 2010 @@ -13,21 +13,32 @@ #include "typearith.h" -mpd_uint_t _mpd_baseadd(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, mpd_size_t m, mpd_size_t n); +mpd_uint_t _mpd_baseadd(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, + mpd_size_t m, mpd_size_t n); void _mpd_baseaddto(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n); mpd_uint_t _mpd_shortadd(mpd_uint_t *w, mpd_size_t m, mpd_uint_t v); -mpd_uint_t _mpd_shortadd_b(mpd_uint_t *w, mpd_size_t m, mpd_uint_t v, mpd_uint_t b); +mpd_uint_t _mpd_shortadd_b(mpd_uint_t *w, mpd_size_t m, mpd_uint_t v, + mpd_uint_t b); mpd_uint_t _mpd_baseincr(mpd_uint_t *u, mpd_size_t n); -void _mpd_basesub(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, mpd_size_t m, mpd_size_t n); +void _mpd_basesub(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, + mpd_size_t m, mpd_size_t n); void _mpd_basesubfrom(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n); -void _mpd_basemul(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, mpd_size_t m, mpd_size_t n); -void _mpd_shortmul(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n, mpd_uint_t v); -void _mpd_shortmul_b(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n, mpd_uint_t v, mpd_uint_t b); -mpd_uint_t _mpd_shortdiv(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n, mpd_uint_t v); -mpd_uint_t _mpd_shortdiv_b(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n, mpd_uint_t v, mpd_uint_t b); -int _mpd_basedivmod(mpd_uint_t *q, mpd_uint_t *r, const mpd_uint_t *uconst, const mpd_uint_t *vconst, mpd_size_t nplusm, mpd_size_t n); -void _mpd_baseshiftl(mpd_uint_t *dest, mpd_uint_t *src, mpd_size_t n, mpd_size_t m, mpd_size_t shift); -mpd_uint_t _mpd_baseshiftr(mpd_uint_t *dest, mpd_uint_t *src, mpd_size_t slen, mpd_size_t shift); +void _mpd_basemul(mpd_uint_t *w, const mpd_uint_t *u, const mpd_uint_t *v, + mpd_size_t m, mpd_size_t n); +void _mpd_shortmul(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n, + mpd_uint_t v); +void _mpd_shortmul_b(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n, + mpd_uint_t v, mpd_uint_t b); +mpd_uint_t _mpd_shortdiv(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n, + mpd_uint_t v); +mpd_uint_t _mpd_shortdiv_b(mpd_uint_t *w, const mpd_uint_t *u, mpd_size_t n, + mpd_uint_t v, mpd_uint_t b); +int _mpd_basedivmod(mpd_uint_t *q, mpd_uint_t *r, const mpd_uint_t *uconst, + const mpd_uint_t *vconst, mpd_size_t nplusm, mpd_size_t n); +void _mpd_baseshiftl(mpd_uint_t *dest, mpd_uint_t *src, mpd_size_t n, + mpd_size_t m, mpd_size_t shift); +mpd_uint_t _mpd_baseshiftr(mpd_uint_t *dest, mpd_uint_t *src, mpd_size_t slen, + mpd_size_t shift); From python-checkins at python.org Fri Jan 22 17:06:30 2010 From: python-checkins at python.org (stefan.krah) Date: Fri, 22 Jan 2010 16:06:30 -0000 Subject: [Python-checkins] r77687 - python/branches/py3k-cdecimal/Modules/cdecimal/cdecimal.c Message-ID: Author: stefan.krah Date: Fri Jan 22 17:06:30 2010 New Revision: 77687 Log: Code formatting. Fix Visual Studio warnings. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/cdecimal.c Modified: python/branches/py3k-cdecimal/Modules/cdecimal/cdecimal.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/cdecimal.c (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/cdecimal.c Fri Jan 22 17:06:30 2010 @@ -94,27 +94,27 @@ /* Exceptions that correspond to IEEE signals; inherit from DecimalException */ static DecCondMap signal_map[] = { - {"InvalidOperation", "cdecimal.InvalidOperation", MPD_IEEE_Invalid_operation, NULL}, - {"DivisionByZero", "cdecimal.DivisionByZero", MPD_Division_by_zero, NULL}, - {"Overflow", "cdecimal.Overflow", MPD_Overflow, NULL}, - {"Underflow", "cdecimal.Underflow", MPD_Underflow, NULL}, - {"Subnormal", "cdecimal.Subnormal", MPD_Subnormal, NULL}, - {"Inexact", "cdecimal.Inexact", MPD_Inexact, NULL}, - {"Rounded", "cdecimal.Rounded", MPD_Rounded, NULL}, - {"Clamped", "cdecimal.Clamped", MPD_Clamped, NULL}, - {NULL} + {"InvalidOperation", "cdecimal.InvalidOperation", MPD_IEEE_Invalid_operation, NULL}, + {"DivisionByZero", "cdecimal.DivisionByZero", MPD_Division_by_zero, NULL}, + {"Overflow", "cdecimal.Overflow", MPD_Overflow, NULL}, + {"Underflow", "cdecimal.Underflow", MPD_Underflow, NULL}, + {"Subnormal", "cdecimal.Subnormal", MPD_Subnormal, NULL}, + {"Inexact", "cdecimal.Inexact", MPD_Inexact, NULL}, + {"Rounded", "cdecimal.Rounded", MPD_Rounded, NULL}, + {"Clamped", "cdecimal.Clamped", MPD_Clamped, NULL}, + {NULL} }; /* Exceptions that inherit from InvalidOperation */ static DecCondMap cond_map[] = { - {"InvalidOperation", "cdecimal.InvalidOperation", MPD_Invalid_operation, NULL}, - {"ConversionSyntax", "cdecimal.ConversionSyntax", MPD_Conversion_syntax, NULL}, - {"DivisionImpossible", "cdecimal.DivisionImpossible", MPD_Division_impossible, NULL}, - {"DivisionUndefined", "cdecimal.DivisionUndefined", MPD_Division_undefined, NULL}, - {"FpuError", "cdecimal.FpuError", MPD_Fpu_error, NULL}, - {"InvalidContext", "cdecimal.InvalidContext", MPD_Invalid_context, NULL}, - {"MallocError", "cdecimal.MallocError", MPD_Malloc_error, NULL}, - {NULL} + {"InvalidOperation", "cdecimal.InvalidOperation", MPD_Invalid_operation, NULL}, + {"ConversionSyntax", "cdecimal.ConversionSyntax", MPD_Conversion_syntax, NULL}, + {"DivisionImpossible", "cdecimal.DivisionImpossible", MPD_Division_impossible, NULL}, + {"DivisionUndefined", "cdecimal.DivisionUndefined", MPD_Division_undefined, NULL}, + {"FpuError", "cdecimal.FpuError", MPD_Fpu_error, NULL}, + {"InvalidContext", "cdecimal.InvalidContext", MPD_Invalid_context, NULL}, + {"MallocError", "cdecimal.MallocError", MPD_Malloc_error, NULL}, + {NULL} }; static const char *dec_signal_string[MPD_NUM_FLAGS] = { @@ -258,7 +258,7 @@ long x; if (!PyLong_Check(v)) { - PyErr_SetString(PyExc_TypeError, "long argument required"); + PyErr_SetString(PyExc_TypeError, "long argument required"); return UINT32_MAX; } @@ -436,7 +436,7 @@ if (PyDecSignalDict_Check(b)) { signaldict_update(b); } - return PyDict_Type.tp_richcompare(a, b, op); + return PyDict_Type.tp_richcompare(a, b, op); } static int @@ -514,14 +514,14 @@ signaldict_print(PyObject *self, FILE *fp, int flags) { signaldict_update(self); - return PyDict_Type.tp_print(self, fp, flags); + return PyDict_Type.tp_print(self, fp, flags); } static PyObject * signaldict_repr(PyObject *self) { signaldict_update(self); - return PyDict_Type.tp_repr(self); + return PyDict_Type.tp_repr(self); } static PyObject * @@ -533,13 +533,13 @@ static int signaldict_ass_sub(PyObject *self, PyObject *v, PyObject *w) { - if (w == NULL) { + if (w == NULL) { PyErr_SetString(PyExc_ValueError, "signal keys cannot be deleted"); return -1; } - else { - return signaldict_setitem(self, v, w); + else { + return signaldict_setitem(self, v, w); } } @@ -559,22 +559,22 @@ static PyMappingMethods signaldict_as_mapping = { - (lenfunc)signaldict_length, /*mp_length*/ - (binaryfunc)signaldict_subscript, /*mp_subscript*/ - (objobjargproc)signaldict_ass_sub /*mp_ass_subscript*/ + (lenfunc)signaldict_length, /*mp_length*/ + (binaryfunc)signaldict_subscript, /*mp_subscript*/ + (objobjargproc)signaldict_ass_sub /*mp_ass_subscript*/ }; static PySequenceMethods signaldict_as_sequence = { - 0, /* sq_length */ - 0, /* sq_concat */ - 0, /* sq_repeat */ - 0, /* sq_item */ - 0, /* sq_slice */ - 0, /* sq_ass_item */ - 0, /* sq_ass_slice */ - signaldict_contains, /* sq_contains */ - 0, /* sq_inplace_concat */ - 0, /* sq_inplace_repeat */ + 0, /* sq_length */ + 0, /* sq_concat */ + 0, /* sq_repeat */ + 0, /* sq_item */ + 0, /* sq_slice */ + 0, /* sq_ass_item */ + 0, /* sq_ass_slice */ + signaldict_contains, /* sq_contains */ + 0, /* sq_inplace_concat */ + 0, /* sq_inplace_repeat */ }; static PyMethodDef mapp_methods[] = { @@ -630,7 +630,7 @@ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ - (initproc)signaldict_init, /* tp_init */ + (initproc)signaldict_init, /* tp_init */ }; @@ -867,7 +867,7 @@ return -1; } - ((PyDecContextObject *)self)->capitals = x; + ((PyDecContextObject *)self)->capitals = (int)x; return 0; } @@ -1070,12 +1070,12 @@ } if (strcmp(PyBytes_AS_STRING(s), "traps") == 0) { - if (context_settraps_dict(self, value) < 0) { + if (context_settraps_dict(self, value) < 0) { retval = -1; } } else if (strcmp(PyBytes_AS_STRING(s), "flags") == 0) { - if (context_setstatus_dict(self, value) < 0) { + if (context_setstatus_dict(self, value) < 0) { retval = -1; } } @@ -1152,7 +1152,7 @@ { static char *kwlist[] = { "prec", "Emin", "Emax", "rounding", "capitals", - "traps", "flags", "_clamp", "_allcr", NULL + "traps", "flags", "_clamp", "_allcr", NULL }; PyObject *traps = NULL; PyObject *status = NULL; @@ -1225,16 +1225,17 @@ mpd_context_t *ctx; char s[FD_CTX_LEN]; char *cp; - ssize_t n, mem; + int n, mem; assert(PyDecContext_Check(self)); ctx = CtxAddr(self); cp = s; mem = FD_CTX_LEN; - n = snprintf(cp, mem, "Context(prec=%"PRI_mpd_ssize_t", Emin=%"PRI_mpd_ssize_t"" - ", Emax=%"PRI_mpd_ssize_t", rounding=%s, capitals=%d, traps=", - ctx->prec, ctx->emin, ctx->emax, mpd_round_string[ctx->round], - self->capitals); + n = snprintf(cp, mem, + "Context(prec=%"PRI_mpd_ssize_t", Emin=%"PRI_mpd_ssize_t"" + ", Emax=%"PRI_mpd_ssize_t", rounding=%s, capitals=%d, traps=", + ctx->prec, ctx->emin, ctx->emax, mpd_round_string[ctx->round], + self->capitals); if (n < 0 || n >= mem) return NULL; cp += n; mem -= n; @@ -1273,7 +1274,8 @@ *ctx = *CtxAddr(self); ctx->status = 0; ctx->newtrap = 0; - ((PyDecContextObject *)newob)->capitals = ((PyDecContextObject *)self)->capitals; + ((PyDecContextObject *)newob)->capitals = + ((PyDecContextObject *)self)->capitals; return newob; } @@ -1295,32 +1297,32 @@ static PyGetSetDef context_getsets [] = { - { "prec", (getter)context_getprec, (setter)context_setprec, NULL, NULL}, - { "Emax", (getter)context_getemax, (setter)context_setemax, NULL, NULL}, - { "Emin", (getter)context_getemin, (setter)context_setemin, NULL, NULL}, - { "rounding", (getter)context_getround, (setter)context_setround, NULL, NULL}, - { "capitals", (getter)context_getcapitals, (setter)context_setcapitals, NULL, NULL}, - { "_clamp", (getter)context_getclamp, (setter)context_setclamp, NULL, NULL}, - { "_allcr", (getter)context_getallcr, (setter)context_setallcr, NULL, NULL}, - { "_traps", (getter)context_gettraps, (setter)context_settraps, NULL, NULL}, - { "_flags", (getter)context_getstatus, (setter)context_setstatus, NULL, NULL}, - {NULL} + { "prec", (getter)context_getprec, (setter)context_setprec, NULL, NULL}, + { "Emax", (getter)context_getemax, (setter)context_setemax, NULL, NULL}, + { "Emin", (getter)context_getemin, (setter)context_setemin, NULL, NULL}, + { "rounding", (getter)context_getround, (setter)context_setround, NULL, NULL}, + { "capitals", (getter)context_getcapitals, (setter)context_setcapitals, NULL, NULL}, + { "_clamp", (getter)context_getclamp, (setter)context_setclamp, NULL, NULL}, + { "_allcr", (getter)context_getallcr, (setter)context_setallcr, NULL, NULL}, + { "_traps", (getter)context_gettraps, (setter)context_settraps, NULL, NULL}, + { "_flags", (getter)context_getstatus, (setter)context_setstatus, NULL, NULL}, + {NULL} }; #define CONTEXT_CHECK(obj) \ - if (!PyDecContext_Check(obj)) { \ - PyErr_SetString( PyExc_TypeError, \ - "argument must be a context" ); \ - return NULL; \ - } + if (!PyDecContext_Check(obj)) { \ + PyErr_SetString( PyExc_TypeError, \ + "argument must be a context" ); \ + return NULL; \ + } #define CONTEXT_CHECK_VA(obj) \ - if (!PyDecContext_Check(obj)) { \ - PyErr_SetString( PyExc_TypeError, \ - "optional argument must be a context" ); \ - return NULL; \ - } + if (!PyDecContext_Check(obj)) { \ + PyErr_SetString( PyExc_TypeError, \ + "optional argument must be a context" ); \ + return NULL; \ + } /******************************************************************************/ @@ -1484,7 +1486,8 @@ } CONTEXT_CHECK_VA(src); - ctx_mgr = PyObject_New(PyDecContextManagerObject, &PyDecContextManager_Type); + ctx_mgr = PyObject_New(PyDecContextManagerObject, + &PyDecContextManager_Type); if (ctx_mgr == NULL) { return NULL; } @@ -1521,7 +1524,8 @@ } static PyObject * -ctxmanager_restore_default(PyDecContextManagerObject *self, PyObject *args UNUSED) +ctxmanager_restore_default(PyDecContextManagerObject *self, + PyObject *args UNUSED) { if (set_dflt_ctx(self->global) == NULL) { return NULL; @@ -1884,7 +1888,7 @@ else { Py_DECREF(tmp); PyErr_SetString(PyExc_ValueError, - "string argument in the third position " + "string argument in the third position " "must be 'F', 'n' or 'N'"); return NULL; } @@ -1936,7 +1940,7 @@ "coefficient must be a tuple of digits"); return NULL; } - *cp++ = l + '0'; + *cp++ = (char)l + '0'; } *cp = '\0'; @@ -2044,35 +2048,36 @@ } #define CONVERT_OP(v, a, ctx) \ - if (!convert_op(v, a, ctx)) { \ - return (PyObject *) *(a); \ - } + if (!convert_op(v, a, ctx)) { \ + return (PyObject *) *(a); \ + } #define CONVERT_BINOP(v, w, a, b, ctx) \ - if (!convert_op(v, a, ctx)) { \ - return (PyObject *) *(a); \ - } \ - if (!convert_op(w, b, ctx)) { \ - Py_DECREF(*(a)); \ - return (PyObject *) *(b); \ - } + if (!convert_op(v, a, ctx)) { \ + return (PyObject *) *(a); \ + } \ + if (!convert_op(w, b, ctx)) { \ + Py_DECREF(*(a)); \ + return (PyObject *) *(b); \ + } #define CONVERT_TERNOP(v, w, x, a, b, c, ctx) \ - if (!convert_op(v, a, ctx)) { \ - return (PyObject *) *(a); \ - } \ - if (!convert_op(w, b, ctx)) { \ - Py_DECREF(*(a)); \ - return (PyObject *) *(b); \ - } \ - if (!convert_op(x, c, ctx)) { \ - Py_DECREF(*(a)); \ - Py_DECREF(*(b)); \ - return (PyObject *) *(c); \ - } + if (!convert_op(v, a, ctx)) { \ + return (PyObject *) *(a); \ + } \ + if (!convert_op(w, b, ctx)) { \ + Py_DECREF(*(a)); \ + return (PyObject *) *(b); \ + } \ + if (!convert_op(x, c, ctx)) { \ + Py_DECREF(*(a)); \ + Py_DECREF(*(b)); \ + return (PyObject *) *(c); \ + } -/* Same as convert_op(), but set an error instead of returning NotImplemented. */ +/* Same as convert_op(), but set an error instead of returning + * NotImplemented. */ static int convert_op_set(PyObject *v, PyDecObject **a, mpd_context_t *ctx) { @@ -2096,32 +2101,32 @@ } #define CONVERT_OP_SET(v, a, ctx) \ - if (!convert_op_set(v, a, ctx)) { \ - return NULL; \ - } + if (!convert_op_set(v, a, ctx)) { \ + return NULL; \ + } #define CONVERT_BINOP_SET(v, w, a, b, ctx) \ - if (!convert_op_set(v, a, ctx)) { \ - return NULL; \ - } \ - if (!convert_op_set(w, b, ctx)) { \ - Py_DECREF(*(a)); \ - return NULL; \ - } + if (!convert_op_set(v, a, ctx)) { \ + return NULL; \ + } \ + if (!convert_op_set(w, b, ctx)) { \ + Py_DECREF(*(a)); \ + return NULL; \ + } #define CONVERT_TERNOP_SET(v, w, x, a, b, c, ctx) \ - if (!convert_op_set(v, a, ctx)) { \ - return NULL; \ - } \ - if (!convert_op_set(w, b, ctx)) { \ - Py_DECREF(*(a)); \ - return NULL; \ - } \ - if (!convert_op_set(x, c, ctx)) { \ - Py_DECREF(*(a)); \ - Py_DECREF(*(b)); \ - return NULL; \ - } + if (!convert_op_set(v, a, ctx)) { \ + return NULL; \ + } \ + if (!convert_op_set(w, b, ctx)) { \ + Py_DECREF(*(a)); \ + return NULL; \ + } \ + if (!convert_op_set(x, c, ctx)) { \ + Py_DECREF(*(a)); \ + Py_DECREF(*(b)); \ + return NULL; \ + } static PyObject *dec_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds); @@ -2744,7 +2749,8 @@ mpd_ssize_t y; if (!PyLong_Check(x)) { - PyErr_SetString(PyExc_ValueError, "optional arg must be an integer"); + PyErr_SetString(PyExc_ValueError, + "optional arg must be an integer"); return NULL; } @@ -2903,8 +2909,8 @@ static PyObject * \ _Dec_##MPDFUNC(PyObject *self) \ { \ - PyDecObject *a = (PyDecObject *) self; \ - return MPDFUNC(a->dec) ? Dec_INCREF_TRUE : Dec_INCREF_FALSE; \ + PyDecObject *a = (PyDecObject *) self; \ + return MPDFUNC(a->dec) ? Dec_INCREF_TRUE : Dec_INCREF_FALSE; \ } /* The operand is guaranteed to be a PyDecObject. */ @@ -2912,8 +2918,8 @@ static PyObject * \ _Dec_CFunc_##MPDFUNC(PyObject *self, PyObject *dummy UNUSED) \ { \ - PyDecObject *a = (PyDecObject *) self; \ - return MPDFUNC(a->dec) ? Dec_INCREF_TRUE : Dec_INCREF_FALSE; \ + PyDecObject *a = (PyDecObject *) self; \ + return MPDFUNC(a->dec) ? Dec_INCREF_TRUE : Dec_INCREF_FALSE; \ } /* Operand is a PyDecObject. Uses optional context if supplied. @@ -2922,19 +2928,19 @@ static PyObject * \ _DecOpt_##MPDFUNC(PyObject *self, PyObject *args) \ { \ - PyDecObject *a = (PyDecObject *) self; \ - PyObject *ctxobj; \ - mpd_context_t *ctx; \ - \ - ctxobj = dflt_ctx(); \ - if (!PyArg_ParseTuple(args, "|O", &ctxobj)) { \ - return NULL; \ - } \ - \ - CONTEXT_CHECK_VA(ctxobj); \ - ctx = CtxAddr(ctxobj); \ - \ - return MPDFUNC(a->dec, ctx) ? Dec_INCREF_TRUE : Dec_INCREF_FALSE; \ + PyDecObject *a = (PyDecObject *) self; \ + PyObject *ctxobj; \ + mpd_context_t *ctx; \ + \ + ctxobj = dflt_ctx(); \ + if (!PyArg_ParseTuple(args, "|O", &ctxobj)) { \ + return NULL; \ + } \ + \ + CONTEXT_CHECK_VA(ctxobj); \ + ctx = CtxAddr(ctxobj); \ + \ + return MPDFUNC(a->dec, ctx) ? Dec_INCREF_TRUE : Dec_INCREF_FALSE; \ } /* Operand is a PyDecObject. Uses the default module context. @@ -2943,23 +2949,23 @@ static PyObject * \ _Dec_##MPDFUNC(PyObject *self) \ { \ - PyDecObject *a = (PyDecObject *) self; \ - PyDecObject *result; \ - uint32_t status = 0; \ - mpd_context_t *ctx; \ - \ - if ((result = dec_alloc()) == NULL) { \ - return NULL; \ - } \ - \ - ctx = mpd_ctx(); \ - MPDFUNC(result->dec, a->dec, ctx, &status); \ - if (dec_addstatus(ctx, status)) { \ - Py_DECREF(result); \ - return NULL; \ - } \ + PyDecObject *a = (PyDecObject *) self; \ + PyDecObject *result; \ + uint32_t status = 0; \ + mpd_context_t *ctx; \ + \ + if ((result = dec_alloc()) == NULL) { \ + return NULL; \ + } \ + \ + ctx = mpd_ctx(); \ + MPDFUNC(result->dec, a->dec, ctx, &status); \ + if (dec_addstatus(ctx, status)) { \ + Py_DECREF(result); \ + return NULL; \ + } \ \ - return (PyObject *) result; \ + return (PyObject *) result; \ } /* Operand is a PyDecObject. Uses the default module context. @@ -2968,23 +2974,23 @@ static PyObject * \ _Dec_CFunc_##MPDFUNC(PyObject *self, PyObject *dummy UNUSED) \ { \ - PyDecObject *a = (PyDecObject *) self; \ - PyDecObject *result; \ - uint32_t status = 0; \ - mpd_context_t *ctx; \ - \ - if ((result = dec_alloc()) == NULL) { \ - return NULL; \ - } \ - \ - ctx = mpd_ctx(); \ - MPDFUNC(result->dec, a->dec, ctx, &status); \ - if (dec_addstatus(ctx, &status)) { \ - Py_DECREF(result); \ - return NULL; \ - } \ - \ - return (PyObject *) result; \ + PyDecObject *a = (PyDecObject *) self; \ + PyDecObject *result; \ + uint32_t status = 0; \ + mpd_context_t *ctx; \ + \ + if ((result = dec_alloc()) == NULL) { \ + return NULL; \ + } \ + \ + ctx = mpd_ctx(); \ + MPDFUNC(result->dec, a->dec, ctx, &status); \ + if (dec_addstatus(ctx, &status)) { \ + Py_DECREF(result); \ + return NULL; \ + } \ + \ + return (PyObject *) result; \ } /* Operand is a PyDecObject. Uses optional context if supplied. @@ -2993,31 +2999,31 @@ static PyObject * \ _DecOpt_##MPDFUNC(PyObject *self, PyObject *args) \ { \ - PyDecObject *a = (PyDecObject *) self; \ - PyDecObject *result; \ - PyObject *ctxobj; \ - uint32_t status = 0; \ - mpd_context_t *ctx; \ - \ - ctxobj = dflt_ctx(); \ - if (!PyArg_ParseTuple(args, "|O", &ctxobj)) { \ - return NULL; \ - } \ - \ - CONTEXT_CHECK_VA(ctxobj); \ - ctx = CtxAddr(ctxobj); \ - \ - if ((result = dec_alloc()) == NULL) { \ - return NULL; \ - } \ - \ - MPDFUNC(result->dec, a->dec, ctx, &status); \ - if (dec_addstatus(ctx, status)) { \ - Py_DECREF(result); \ - return NULL; \ - } \ + PyDecObject *a = (PyDecObject *) self; \ + PyDecObject *result; \ + PyObject *ctxobj; \ + uint32_t status = 0; \ + mpd_context_t *ctx; \ + \ + ctxobj = dflt_ctx(); \ + if (!PyArg_ParseTuple(args, "|O", &ctxobj)) { \ + return NULL; \ + } \ + \ + CONTEXT_CHECK_VA(ctxobj); \ + ctx = CtxAddr(ctxobj); \ + \ + if ((result = dec_alloc()) == NULL) { \ + return NULL; \ + } \ + \ + MPDFUNC(result->dec, a->dec, ctx, &status); \ + if (dec_addstatus(ctx, status)) { \ + Py_DECREF(result); \ + return NULL; \ + } \ \ - return (PyObject *) result; \ + return (PyObject *) result; \ } @@ -3027,29 +3033,29 @@ static PyObject * \ _Dec_##MPDFUNC(PyObject *v, PyObject *w) \ { \ - PyDecObject *a, *b; \ - PyDecObject *result; \ - uint32_t status = 0; \ - mpd_context_t *ctx; \ - \ - ctx = mpd_ctx(); \ - CONVERT_BINOP(v, w, &a, &b, ctx); \ - \ - if ((result = dec_alloc()) == NULL) { \ - Py_DECREF(a); \ - Py_DECREF(b); \ - return NULL; \ - } \ - \ - MPDFUNC(result->dec, a->dec, b->dec, ctx, &status); \ - Py_DECREF(a); \ - Py_DECREF(b); \ - if (dec_addstatus(ctx, status)) { \ - Py_DECREF(result); \ - return NULL; \ - } \ - \ - return (PyObject *) result; \ + PyDecObject *a, *b; \ + PyDecObject *result; \ + uint32_t status = 0; \ + mpd_context_t *ctx; \ + \ + ctx = mpd_ctx(); \ + CONVERT_BINOP(v, w, &a, &b, ctx); \ + \ + if ((result = dec_alloc()) == NULL) { \ + Py_DECREF(a); \ + Py_DECREF(b); \ + return NULL; \ + } \ + \ + MPDFUNC(result->dec, a->dec, b->dec, ctx, &status); \ + Py_DECREF(a); \ + Py_DECREF(b); \ + if (dec_addstatus(ctx, status)) { \ + Py_DECREF(result); \ + return NULL; \ + } \ + \ + return (PyObject *) result; \ } /* Operands are Python Objects. Uses optional context if supplied. @@ -3058,37 +3064,37 @@ static PyObject * \ _DecOpt_##MPDFUNC(PyObject *v, PyObject *args) \ { \ - PyObject *w, *ctxobj; \ - PyDecObject *a, *b; \ - PyDecObject *result; \ - uint32_t status = 0; \ - mpd_context_t *ctx; \ - \ - ctxobj = dflt_ctx(); \ - if (!PyArg_ParseTuple(args, "O|O", &w, &ctxobj)) { \ - return NULL; \ - } \ - \ - CONTEXT_CHECK_VA(ctxobj); \ - ctx = CtxAddr(ctxobj); \ - \ - CONVERT_BINOP_SET(v, w, &a, &b, ctx); \ - \ - if ((result = dec_alloc()) == NULL) { \ - Py_DECREF(a); \ - Py_DECREF(b); \ - return NULL; \ - } \ - \ - MPDFUNC(result->dec, a->dec, b->dec, ctx, &status); \ - Py_DECREF(a); \ - Py_DECREF(b); \ - if (dec_addstatus(ctx, status)) { \ - Py_DECREF(result); \ - return NULL; \ - } \ - \ - return (PyObject *) result; \ + PyObject *w, *ctxobj; \ + PyDecObject *a, *b; \ + PyDecObject *result; \ + uint32_t status = 0; \ + mpd_context_t *ctx; \ + \ + ctxobj = dflt_ctx(); \ + if (!PyArg_ParseTuple(args, "O|O", &w, &ctxobj)) { \ + return NULL; \ + } \ + \ + CONTEXT_CHECK_VA(ctxobj); \ + ctx = CtxAddr(ctxobj); \ + \ + CONVERT_BINOP_SET(v, w, &a, &b, ctx); \ + \ + if ((result = dec_alloc()) == NULL) { \ + Py_DECREF(a); \ + Py_DECREF(b); \ + return NULL; \ + } \ + \ + MPDFUNC(result->dec, a->dec, b->dec, ctx, &status); \ + Py_DECREF(a); \ + Py_DECREF(b); \ + if (dec_addstatus(ctx, status)) { \ + Py_DECREF(result); \ + return NULL; \ + } \ + \ + return (PyObject *) result; \ } /* Operands are Python Objects. Actual MPDFUNC does NOT take a context. @@ -3097,32 +3103,32 @@ static PyObject * \ _DecOpt_##MPDFUNC(PyObject *v, PyObject *args) \ { \ - PyObject *w, *ctxobj; \ - PyDecObject *a, *b; \ - PyDecObject *result; \ - mpd_context_t *ctx; \ - \ - ctxobj = dflt_ctx(); \ - if (!PyArg_ParseTuple(args, "O|O", &w, &ctxobj)) { \ - return NULL; \ - } \ - \ - CONTEXT_CHECK_VA(ctxobj); \ - ctx = CtxAddr(ctxobj); \ - \ - CONVERT_BINOP_SET(v, w, &a, &b, ctx); \ - \ - if ((result = dec_alloc()) == NULL) { \ - Py_DECREF(a); \ - Py_DECREF(b); \ - return NULL; \ - } \ - \ - MPDFUNC(result->dec, a->dec, b->dec); \ - Py_DECREF(a); \ - Py_DECREF(b); \ - \ - return (PyObject *) result; \ + PyObject *w, *ctxobj; \ + PyDecObject *a, *b; \ + PyDecObject *result; \ + mpd_context_t *ctx; \ + \ + ctxobj = dflt_ctx(); \ + if (!PyArg_ParseTuple(args, "O|O", &w, &ctxobj)) { \ + return NULL; \ + } \ + \ + CONTEXT_CHECK_VA(ctxobj); \ + ctx = CtxAddr(ctxobj); \ + \ + CONVERT_BINOP_SET(v, w, &a, &b, ctx); \ + \ + if ((result = dec_alloc()) == NULL) { \ + Py_DECREF(a); \ + Py_DECREF(b); \ + return NULL; \ + } \ + \ + MPDFUNC(result->dec, a->dec, b->dec); \ + Py_DECREF(a); \ + Py_DECREF(b); \ + \ + return (PyObject *) result; \ } @@ -3132,39 +3138,39 @@ static PyObject * \ _DecOpt_##MPDFUNC(PyObject *v, PyObject *args) \ { \ - PyObject *w, *x, *ctxobj; \ - PyDecObject *a, *b, *c; \ - PyDecObject *result; \ - uint32_t status = 0; \ - mpd_context_t *ctx; \ - \ - ctxobj = dflt_ctx(); \ - if (!PyArg_ParseTuple(args, "OO|O", &w, &x, &ctxobj)) { \ - return NULL; \ - } \ - \ - CONTEXT_CHECK_VA(ctxobj); \ - ctx = CtxAddr(ctxobj); \ - \ - CONVERT_TERNOP_SET(v, w, x, &a, &b, &c, ctx); \ - \ - if ((result = dec_alloc()) == NULL) { \ - Py_DECREF(a); \ - Py_DECREF(b); \ - Py_DECREF(c); \ - return NULL; \ - } \ - \ - MPDFUNC(result->dec, a->dec, b->dec, c->dec, ctx, &status); \ - Py_DECREF(a); \ - Py_DECREF(b); \ - Py_DECREF(c); \ - if (dec_addstatus(ctx, status)) { \ - Py_DECREF(result); \ - return NULL; \ - } \ - \ - return (PyObject *) result; \ + PyObject *w, *x, *ctxobj; \ + PyDecObject *a, *b, *c; \ + PyDecObject *result; \ + uint32_t status = 0; \ + mpd_context_t *ctx; \ + \ + ctxobj = dflt_ctx(); \ + if (!PyArg_ParseTuple(args, "OO|O", &w, &x, &ctxobj)) { \ + return NULL; \ + } \ + \ + CONTEXT_CHECK_VA(ctxobj); \ + ctx = CtxAddr(ctxobj); \ + \ + CONVERT_TERNOP_SET(v, w, x, &a, &b, &c, ctx); \ + \ + if ((result = dec_alloc()) == NULL) { \ + Py_DECREF(a); \ + Py_DECREF(b); \ + Py_DECREF(c); \ + return NULL; \ + } \ + \ + MPDFUNC(result->dec, a->dec, b->dec, c->dec, ctx, &status); \ + Py_DECREF(a); \ + Py_DECREF(b); \ + Py_DECREF(c); \ + if (dec_addstatus(ctx, status)) { \ + Py_DECREF(result); \ + return NULL; \ + } \ + \ + return (PyObject *) result; \ } @@ -3515,7 +3521,8 @@ CONVERT_BINOP_SET(v, w, &a, &b, ctx); - result = mpd_same_quantum(a->dec, b->dec) ? Dec_INCREF_TRUE : Dec_INCREF_FALSE; + result = mpd_same_quantum(a->dec, b->dec) ? + Dec_INCREF_TRUE : Dec_INCREF_FALSE; Py_DECREF(a); Py_DECREF(b); @@ -3634,10 +3641,12 @@ { #if defined(CONFIG_64) mpd_uint_t data_two64m1[2] = {8446744073709551615ULL, 1ULL}; - mpd_t two64m1 = {MPD_POS|MPD_STATIC|MPD_CONST_DATA, 0, 20, 2, 2, data_two64m1}; + mpd_t two64m1 = {MPD_POS|MPD_STATIC|MPD_CONST_DATA, 0, 20, 2, 2, + data_two64m1}; #elif defined(CONFIG_32) mpd_uint_t data_two64m1[3] = {709551615UL, 446744073UL, 18UL}; - mpd_t two64m1 = {MPD_POS|MPD_STATIC|MPD_CONST_DATA, 0, 20, 3, 2, data_two64m1}; + mpd_t two64m1 = {MPD_POS|MPD_STATIC|MPD_CONST_DATA, 0, 20, 3, 2, + data_two64m1}; #else #error "CONFIG_64 or CONFIG_32 must be defined." #endif @@ -3664,7 +3673,8 @@ if (mpd_isspecial(a->dec)) { if (mpd_isnan(a->dec)) { - PyErr_SetString(PyExc_TypeError, "cannot hash a NaN value"); + PyErr_SetString(PyExc_TypeError, + "cannot hash a NaN value"); result = -1; } else { @@ -3726,7 +3736,8 @@ a->dec->flags = MPD_POS; cp = mpd_to_sci(a->dec, 1); - if ((obj = Py_BuildValue("(i"CONV_mpd_ssize_t"s)", sign, exp, cp)) == NULL) { + obj = Py_BuildValue("(i"CONV_mpd_ssize_t"s)", sign, exp, cp); + if (obj == NULL) { result = -1; goto finish; } @@ -3964,16 +3975,16 @@ static PyObject * \ _DecCtx_##MPDFUNC(PyObject *self, PyObject *v) \ { \ - PyObject *ret; \ - PyDecObject *a; \ - mpd_context_t *ctx; \ - \ - ctx = CtxAddr(self); \ - CONVERT_OP(v, &a, ctx); \ + PyObject *ret; \ + PyDecObject *a; \ + mpd_context_t *ctx; \ \ - ret = MPDFUNC(a->dec, ctx) ? Dec_INCREF_TRUE : Dec_INCREF_FALSE; \ - Py_DECREF(a); \ - return ret; \ + ctx = CtxAddr(self); \ + CONVERT_OP(v, &a, ctx); \ + \ + ret = MPDFUNC(a->dec, ctx) ? Dec_INCREF_TRUE : Dec_INCREF_FALSE; \ + Py_DECREF(a); \ + return ret; \ } /* @@ -3984,16 +3995,16 @@ static PyObject * \ _DecCtx_##MPDFUNC(PyObject *self, PyObject *v) \ { \ - PyObject *ret; \ - PyDecObject *a; \ - mpd_context_t *ctx; \ - \ - ctx = CtxAddr(self); \ - CONVERT_OP(v, &a, ctx); \ + PyObject *ret; \ + PyDecObject *a; \ + mpd_context_t *ctx; \ + \ + ctx = CtxAddr(self); \ + CONVERT_OP(v, &a, ctx); \ \ - ret = MPDFUNC(a->dec) ? Dec_INCREF_TRUE : Dec_INCREF_FALSE; \ - Py_DECREF(a); \ - return ret; \ + ret = MPDFUNC(a->dec) ? Dec_INCREF_TRUE : Dec_INCREF_FALSE; \ + Py_DECREF(a); \ + return ret; \ } /* @@ -4004,26 +4015,26 @@ static PyObject * \ _DecCtx_##MPDFUNC(PyObject *self, PyObject *v) \ { \ - PyDecObject *result, *a; \ - mpd_context_t *ctx; \ - uint32_t status = 0; \ - \ - ctx = CtxAddr(self); \ - CONVERT_OP(v, &a, ctx); \ - \ - if ((result = dec_alloc()) == NULL) { \ - Py_DECREF(a); \ - return NULL; \ - } \ - \ - MPDFUNC(result->dec, a->dec, ctx, &status); \ - Py_DECREF(a); \ - if (dec_addstatus(ctx, status)) { \ - Py_DECREF(result); \ - return NULL; \ - } \ + PyDecObject *result, *a; \ + mpd_context_t *ctx; \ + uint32_t status = 0; \ \ - return (PyObject *) result; \ + ctx = CtxAddr(self); \ + CONVERT_OP(v, &a, ctx); \ + \ + if ((result = dec_alloc()) == NULL) { \ + Py_DECREF(a); \ + return NULL; \ + } \ + \ + MPDFUNC(result->dec, a->dec, ctx, &status); \ + Py_DECREF(a); \ + if (dec_addstatus(ctx, status)) { \ + Py_DECREF(result); \ + return NULL; \ + } \ + \ + return (PyObject *) result; \ } /* @@ -4034,34 +4045,34 @@ static PyObject * \ _DecCtx_##MPDFUNC(PyObject *self, PyObject *args) \ { \ - PyObject *v, *w; \ - PyDecObject *a, *b; \ - PyDecObject *result; \ - uint32_t status = 0; \ - mpd_context_t *ctx; \ - \ - if (!PyArg_ParseTuple(args, "OO", &v, &w)) { \ - return NULL; \ - } \ - \ - ctx = CtxAddr(self); \ - CONVERT_BINOP_SET(v, w, &a, &b, ctx); \ - \ - if ((result = dec_alloc()) == NULL) { \ - Py_DECREF(a); \ - Py_DECREF(b); \ - return NULL; \ - } \ - \ - MPDFUNC(result->dec, a->dec, b->dec, ctx, &status); \ - Py_DECREF(a); \ - Py_DECREF(b); \ - if (dec_addstatus(ctx, status)) { \ - Py_DECREF(result); \ - return NULL; \ - } \ - \ - return (PyObject *) result; \ + PyObject *v, *w; \ + PyDecObject *a, *b; \ + PyDecObject *result; \ + uint32_t status = 0; \ + mpd_context_t *ctx; \ + \ + if (!PyArg_ParseTuple(args, "OO", &v, &w)) { \ + return NULL; \ + } \ + \ + ctx = CtxAddr(self); \ + CONVERT_BINOP_SET(v, w, &a, &b, ctx); \ + \ + if ((result = dec_alloc()) == NULL) { \ + Py_DECREF(a); \ + Py_DECREF(b); \ + return NULL; \ + } \ + \ + MPDFUNC(result->dec, a->dec, b->dec, ctx, &status); \ + Py_DECREF(a); \ + Py_DECREF(b); \ + if (dec_addstatus(ctx, status)) { \ + Py_DECREF(result); \ + return NULL; \ + } \ + \ + return (PyObject *) result; \ } /* @@ -4072,29 +4083,29 @@ static PyObject * \ _DecCtx_##MPDFUNC(PyObject *self, PyObject *args) \ { \ - PyObject *v, *w; \ - PyDecObject *a, *b; \ - PyDecObject *result; \ - mpd_context_t *ctx; \ - \ - if (!PyArg_ParseTuple(args, "OO", &v, &w)) { \ - return NULL; \ - } \ - \ - ctx = CtxAddr(self); \ - CONVERT_BINOP_SET(v, w, &a, &b, ctx); \ - \ - if ((result = dec_alloc()) == NULL) { \ - Py_DECREF(a); \ - Py_DECREF(b); \ - return NULL; \ - } \ - \ - MPDFUNC(result->dec, a->dec, b->dec); \ - Py_DECREF(a); \ - Py_DECREF(b); \ - \ - return (PyObject *) result; \ + PyObject *v, *w; \ + PyDecObject *a, *b; \ + PyDecObject *result; \ + mpd_context_t *ctx; \ + \ + if (!PyArg_ParseTuple(args, "OO", &v, &w)) { \ + return NULL; \ + } \ + \ + ctx = CtxAddr(self); \ + CONVERT_BINOP_SET(v, w, &a, &b, ctx); \ + \ + if ((result = dec_alloc()) == NULL) { \ + Py_DECREF(a); \ + Py_DECREF(b); \ + return NULL; \ + } \ + \ + MPDFUNC(result->dec, a->dec, b->dec); \ + Py_DECREF(a); \ + Py_DECREF(b); \ + \ + return (PyObject *) result; \ } /* Operands are Python Objects. MPDFUNC is a quiet function. */ @@ -4102,36 +4113,36 @@ static PyObject * \ _DecCtx_##MPDFUNC(PyObject *self, PyObject *args) \ { \ - PyObject *v, *w, *x; \ - PyDecObject *a, *b, *c; \ - PyDecObject *result; \ - uint32_t status = 0; \ - mpd_context_t *ctx; \ - \ - if (!PyArg_ParseTuple(args, "OOO", &v, &w, &x)) { \ - return NULL; \ - } \ - \ - ctx = CtxAddr(self); \ - CONVERT_TERNOP_SET(v, w, x, &a, &b, &c, ctx); \ - \ - if ((result = dec_alloc()) == NULL) { \ - Py_DECREF(a); \ - Py_DECREF(b); \ - Py_DECREF(c); \ - return NULL; \ - } \ - \ - MPDFUNC(result->dec, a->dec, b->dec, c->dec, ctx, &status); \ - Py_DECREF(a); \ - Py_DECREF(b); \ - Py_DECREF(c); \ - if (dec_addstatus(ctx, status)) { \ - Py_DECREF(result); \ - return NULL; \ - } \ - \ - return (PyObject *) result; \ + PyObject *v, *w, *x; \ + PyDecObject *a, *b, *c; \ + PyDecObject *result; \ + uint32_t status = 0; \ + mpd_context_t *ctx; \ + \ + if (!PyArg_ParseTuple(args, "OOO", &v, &w, &x)) { \ + return NULL; \ + } \ + \ + ctx = CtxAddr(self); \ + CONVERT_TERNOP_SET(v, w, x, &a, &b, &c, ctx); \ + \ + if ((result = dec_alloc()) == NULL) { \ + Py_DECREF(a); \ + Py_DECREF(b); \ + Py_DECREF(c); \ + return NULL; \ + } \ + \ + MPDFUNC(result->dec, a->dec, b->dec, c->dec, ctx, &status); \ + Py_DECREF(a); \ + Py_DECREF(b); \ + Py_DECREF(c); \ + if (dec_addstatus(ctx, status)) { \ + Py_DECREF(result); \ + return NULL; \ + } \ + \ + return (PyObject *) result; \ } static PyObject * @@ -4426,7 +4437,8 @@ ctx = CtxAddr(self); CONVERT_BINOP_SET(v, w, &a, &b, ctx); - result = mpd_same_quantum(a->dec, b->dec) ? Dec_INCREF_TRUE : Dec_INCREF_FALSE; + result = mpd_same_quantum(a->dec, b->dec) ? + Dec_INCREF_TRUE : Dec_INCREF_FALSE; Py_DECREF(a); Py_DECREF(b); @@ -4776,7 +4788,8 @@ /* Exceptions that correspond to IEEE signals */ for (cm = signal_map; cm->name != NULL; cm++) { - cm->dec_cond = PyErr_NewException((char *)cm->fqname, DecimalException, NULL); + cm->dec_cond = PyErr_NewException((char *)cm->fqname, + DecimalException, NULL); Py_INCREF(cm->dec_cond); PyModule_AddObject(m, cm->name, cm->dec_cond); } @@ -4790,7 +4803,8 @@ /* Remaining exceptions, inherit from the InvalidOperation */ for (cm = cond_map+1; cm->name != NULL; cm++) { - cm->dec_cond = PyErr_NewException((char *)cm->fqname, signal_map[0].dec_cond , NULL); + cm->dec_cond = PyErr_NewException((char *)cm->fqname, + signal_map[0].dec_cond , NULL); Py_INCREF(cm->dec_cond); PyModule_AddObject(m, cm->name, cm->dec_cond); } From python-checkins at python.org Fri Jan 22 17:11:02 2010 From: python-checkins at python.org (stefan.krah) Date: Fri, 22 Jan 2010 16:11:02 -0000 Subject: [Python-checkins] r77688 - python/branches/py3k-cdecimal/Modules/cdecimal/docstrings.h Message-ID: Author: stefan.krah Date: Fri Jan 22 17:11:01 2010 New Revision: 77688 Log: Use PyDoc_STRVAR. Code formatting. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/docstrings.h Modified: python/branches/py3k-cdecimal/Modules/cdecimal/docstrings.h ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/docstrings.h (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/docstrings.h Fri Jan 22 17:11:01 2010 @@ -8,76 +8,81 @@ #define DOCSTRINGS_H +#include "Python.h" + + /******************************************************************************/ /* Module */ /******************************************************************************/ -static const char doc_cdecimal[] = "C decimal arithmetic module"; -static const char doc_getcontext[] = "\n\ +PyDoc_STRVAR(doc_cdecimal, +"C decimal arithmetic module"); + +PyDoc_STRVAR(doc_getcontext,"\n\ getcontext() - Get the current default context.\n\ -\n"; +\n"); -static const char doc_setcontext[] = "\n\ +PyDoc_STRVAR(doc_setcontext,"\n\ setcontext(c) - Set a new default context.\n\ -\n"; +\n"); -static const char doc_localcontext[] = "\n\ +PyDoc_STRVAR(doc_localcontext,"\n\ localcontext(c) - Return a context manager that will set the default context\n\ to a copy of c on entry to the with-statement and restore the previous default\n\ context when exiting the with-statement. If no context is specified, a copy of\n\ the current default context is used.\n\ -\n"; +\n"); /******************************************************************************/ /* Decimal Object and Methods */ /******************************************************************************/ -static const char doc_decimal[] = "\n\ +PyDoc_STRVAR(doc_decimal,"\n\ Decimal([value[, context]]): Construct a new Decimal object from value.\n\ \n\ value can be an integer, string, tuple, or another Decimal object.\n\ If no value is given, return Decimal('0'). The context does not affect\n\ the conversion and is only passed to determine if the InvalidOperation\n\ trap is active.\n\ -\n"; +\n"); -static const char doc_abs[] = "\n\ +PyDoc_STRVAR(doc_abs,"\n\ abs() - Return the absolute value of the number.\n\ -\n"; +\n"); -static const char doc_adjusted[] = "\n\ +PyDoc_STRVAR(doc_adjusted,"\n\ adjusted() - Return the adjusted exponent of the number.\n\ \n\ Defined as exp + digits - 1.\n\ -\n"; +\n"); -static const char doc_as_tuple[] = "\n\ +PyDoc_STRVAR(doc_as_tuple,"\n\ as_tuple() - Return a tuple representation of the number.\n\ -\n"; +\n"); -static const char doc_canonical[] = "\n\ +PyDoc_STRVAR(doc_canonical,"\n\ canonical() - Return the canonical encoding of the argument. Currently,\n\ the encoding of a Decimal instance is always canonical, so this operation\n\ returns its argument unchanged.\n\ -\n"; +\n"); -static const char doc_compare[] = "\n\ +PyDoc_STRVAR(doc_compare,"\n\ compare(other[, context]) - Compare self to other. Return a decimal value:\n\ \n\ a or b is a NaN ==> Decimal('NaN')\n\ a < b ==> Decimal('-1')\n\ a == b ==> Decimal('0')\n\ a > b ==> Decimal('1')\n\ -\n"; +\n"); -static const char doc_compare_signal[] = "\n\ +PyDoc_STRVAR(doc_compare_signal,"\n\ compare_signal(other[, context]) - Identical to compare, except that\n\ all NaNs signal.\n\ -\n"; +\n"); -static const char doc_compare_total[] = "\n\ +PyDoc_STRVAR(doc_compare_total,"\n\ compare_total(other) - Compare two operands using their abstract representation\n\ rather than their numerical value. Similar to the compare() method, but the\n\ result gives a total ordering on Decimal instances. Two Decimal instances with\n\ @@ -92,28 +97,28 @@ Decimal('-1') if the first operand is lower in the total order than the second,\n\ and Decimal('1') if the first operand is higher in the total order than the\n\ second operand. See the specification for details of the total order.\n\ -\n"; +\n"); -static const char doc_compare_total_mag[] = "\n\ +PyDoc_STRVAR(doc_compare_total_mag,"\n\ compare_total_mag(other) - Compare two operands using their abstract\n\ representation rather than their value as in compare_total(), but\n\ ignoring the sign of each operand. x.compare_total_mag(y) is\n\ equivalent to x.copy_abs().compare_total(y.copy_abs()).\n\ -\n"; +\n"); -static const char doc_copy_abs[] = "\n\ +PyDoc_STRVAR(doc_copy_abs,"\n\ copy_abs() - Return the absolute value of the argument. This operation\n\ is unaffected by the context and is quiet: no flags are changed and no\n\ rounding is performed.\n\ -\n"; +\n"); -static const char doc_copy_negate[] = "\n\ +PyDoc_STRVAR(doc_copy_negate,"\n\ copy_negate() - Return the negation of the argument. This operation is\n\ unaffected by the context and is quiet: no flags are changed and no\n\ rounding is performed.\n\ -\n"; +\n"); -static const char doc_copy_sign[] = "\n\ +PyDoc_STRVAR(doc_copy_sign,"\n\ copy_sign(other) - Return a copy of the first operand with the sign set\n\ to be the same as the sign of the second operand. For example:\n\ \n\ @@ -122,15 +127,15 @@ \n\ This operation is unaffected by the context and is quiet: no flags are\n\ changed and no rounding is performed.\n\ -\n"; +\n"); -static const char doc_exp[] = "\n\ +PyDoc_STRVAR(doc_exp,"\n\ exp([context]) - Return the value of the (natural) exponential function e**x\n\ at the given number. The ROUND_HALF_EVEN rounding mode is used. If the _allcr\n\ field of the context is set to 1 (default), the result is correctly rounded.\n\ -\n"; +\n"); -static const char doc_from_float[] = "\n\ +PyDoc_STRVAR(doc_from_float,"\n\ from_float(f) - Class method that converts a float to a decimal number, exactly.\n\ Since 0.1 is not exactly representable in binary floating point,\n\ Decimal.from_float(0.1) is not the same as Decimal('0.1').\n\ @@ -144,152 +149,152 @@ >>> Decimal.from_float(float('-inf'))\n\ Decimal('-Infinity')\n\ \n\ -\n"; +\n"); -static const char doc_fma[] = "\n\ +PyDoc_STRVAR(doc_fma,"\n\ fma(other, third[, context]) - Fused multiply-add. Return self*other+third\n\ with no rounding of the intermediate product self*other.\n\ \n\ >>> Decimal(2).fma(3, 5)\n\ Decimal('11')\n\ \n\ -\n"; +\n"); -static const char doc_is_canonical[] = "\n\ +PyDoc_STRVAR(doc_is_canonical,"\n\ is_canonical() - Return True if the argument is canonical and False otherwise.\n\ Currently, a Decimal instance is always canonical, so this operation always\n\ returns True.\n\ -\n"; +\n"); -static const char doc_is_finite[] = "\n\ +PyDoc_STRVAR(doc_is_finite,"\n\ is_finite() - Return True if the argument is a finite number, and False if the\n\ argument is infinite or a NaN.\n\ -\n"; +\n"); -static const char doc_is_infinite[] = "\n\ +PyDoc_STRVAR(doc_is_infinite,"\n\ is_infinite() - Return True if the argument is either positive or negative\n\ infinity and False otherwise.\n\ -\n"; +\n"); -static const char doc_is_nan[] = "\n\ +PyDoc_STRVAR(doc_is_nan,"\n\ is_nan() - Return True if the argument is a (quiet or signaling) NaN and\n\ False otherwise.\n\ -\n"; +\n"); -static const char doc_is_normal[] = "\n\ +PyDoc_STRVAR(doc_is_normal,"\n\ is_normal([context]) - Return True if the argument is a normal finite non-zero\n\ number with an adjusted exponent greater than or equal to Emin. Return False\n\ if the argument is zero, subnormal, infinite or a NaN.\n\ -\n"; +\n"); -static const char doc_is_qnan[] = "\n\ +PyDoc_STRVAR(doc_is_qnan,"\n\ is_qnan() - Return True if the argument is a quiet NaN, and False otherwise.\n\ -\n"; +\n"); -static const char doc_is_signed[] = "\n\ +PyDoc_STRVAR(doc_is_signed,"\n\ is_signed() - Return True if the argument has a negative sign and\n\ False otherwise. Note that both zeros and NaNs can carry signs.\n\ -\n"; +\n"); -static const char doc_is_snan[] = "\n\ +PyDoc_STRVAR(doc_is_snan,"\n\ is_snan() - Return True if the argument is a signaling NaN and False otherwise.\n\ -\n"; +\n"); -static const char doc_is_special[] = "\n\ +PyDoc_STRVAR(doc_is_special,"\n\ is_special() - Return True if the argument is either NaN, sNaN or Infinity\n\ and False otherwise.\n\ -\n"; +\n"); -static const char doc_is_subnormal[] = "\n\ +PyDoc_STRVAR(doc_is_subnormal,"\n\ is_subnormal([context]) - Return True if the argument is subnormal, and False\n\ otherwise. A number is subnormal if it is non-zero, finite, and has an\n\ adjusted exponent less than Emin.\n\ -\n"; +\n"); -static const char doc_is_zero[] = "\n\ +PyDoc_STRVAR(doc_is_zero,"\n\ is_zero() - Return True if the argument is a (positive or negative) zero and\n\ False otherwise.\n\ -\n"; +\n"); -static const char doc_ln[] = "\n\ +PyDoc_STRVAR(doc_ln,"\n\ ln([context]) - Return the natural (base e) logarithm of the operand.\n\ The ROUND_HALF_EVEN rounding mode is used. If the _allcr field of the\n\ context is set to 1, the result is correctly rounded.\n\ -\n"; +\n"); -static const char doc_log10[] = "\n\ +PyDoc_STRVAR(doc_log10,"\n\ log10([context]) - Return the base ten logarithm of the operand.\n\ The ROUND_HALF_EVEN rounding mode is used. If the _allcr field of the\n\ context is set to 1, the result is correctly rounded.\n\ -\n"; +\n"); -static const char doc_logb[] = "\n\ +PyDoc_STRVAR(doc_logb,"\n\ logb([context]) - For a non-zero number, return the adjusted exponent\n\ of the operand as a Decimal instance. If the operand is a zero, then\n\ Decimal('-Infinity') is returned and the DivisionByZero condition is\n\ raised. If the operand is an infinity then Decimal('Infinity') is returned.\n\ -\n"; +\n"); -static const char doc_logical_and[] = "\n\ +PyDoc_STRVAR(doc_logical_and,"\n\ logical_and(other[, context]) - Return the digit-wise and of the two\n\ (logical) operands.\n\ -\n"; +\n"); -static const char doc_logical_invert[] = "\n\ +PyDoc_STRVAR(doc_logical_invert,"\n\ logical_invert([context]) - Return the digit-wise inversion of the\n\ (logical) operand.\n\ -\n"; +\n"); -static const char doc_logical_or[] = "\n\ +PyDoc_STRVAR(doc_logical_or,"\n\ logical_or(other[, context]) - Return the digit-wise or of the two\n\ (logical) operands.\n\ -\n"; +\n"); -static const char doc_logical_xor[] = "\n\ +PyDoc_STRVAR(doc_logical_xor,"\n\ logical_xor(other[, context]) - Return the digit-wise exclusive or of the\n\ two (logical) operands.\n\ -\n"; +\n"); -static const char doc_max[] = "\n\ +PyDoc_STRVAR(doc_max,"\n\ max(other[, context]) - Maximum of self and other. If one operand is a quiet\n\ NaN and the other is numeric, the numeric operand is returned.\n\ -\n"; +\n"); -static const char doc_max_mag[] = "\n\ +PyDoc_STRVAR(doc_max_mag,"\n\ max_mag(other[, context]) - Similar to the max() method, but the comparison is\n\ done using the absolute values of the operands.\n\ -\n"; +\n"); -static const char doc_min[] = "\n\ +PyDoc_STRVAR(doc_min,"\n\ min(other[, context]) - Minimum of self and other. If one operand is a quiet\n\ NaN and the other is numeric, the numeric operand is returned.\n\ -\n"; +\n"); -static const char doc_min_mag[] = "\n\ +PyDoc_STRVAR(doc_min_mag,"\n\ min_mag(other[, context]) - Similar to the min() method, but the comparison is\n\ done using the absolute values of the operands.\n\ -\n"; +\n"); -static const char doc_next_minus[] = "\n\ +PyDoc_STRVAR(doc_next_minus,"\n\ next_minus([context]) - Return the largest number representable in the given\n\ context (or in the current default context if no context is given) that is\n\ smaller than the given operand.\n\ -\n"; +\n"); -static const char doc_next_plus[] = "\n\ +PyDoc_STRVAR(doc_next_plus,"\n\ next_plus([context]) - Return the smallest number representable in the given\n\ context (or in the current default context if no context is given) that is\n\ larger than the given operand.\n\ -\n"; +\n"); -static const char doc_next_toward[] = "\n\ +PyDoc_STRVAR(doc_next_toward,"\n\ next_toward(other[, context]) - If the two operands are unequal, return the\n\ number closest to the first operand in the direction of the second operand.\n\ If both operands are numerically equal, return a copy of the first operand\n\ with the sign set to be the same as the sign of the second operand.\n\ -\n"; +\n"); -static const char doc_normalize[] = "\n\ +PyDoc_STRVAR(doc_normalize,"\n\ normalize([context]) - Normalize the number by stripping the rightmost trailing\n\ zeros and converting any result equal to Decimal('0') to Decimal('0e0'). Used\n\ for producing canonical values for members of an equivalence class. For example,\n\ @@ -297,9 +302,9 @@ value Decimal('32.1').\n\ \n\ Normalize is an alias for reduce([context]).\n\ -\n"; +\n"); -static const char doc_number_class[] = "\n\ +PyDoc_STRVAR(doc_number_class,"\n\ number_class([context]) - Return a string describing the class of the operand.\n\ The returned value is one of the following ten strings:\n\ \n\ @@ -314,9 +319,9 @@ * 'NaN', indicating that the operand is a quiet NaN (Not a Number).\n\ * 'sNaN', indicating that the operand is a signaling NaN.\n\ \n\ -\n"; +\n"); -static const char doc_quantize[] = "\n\ +PyDoc_STRVAR(doc_quantize,"\n\ quantize(exp[, context]) - Return a value equal to the first operand after\n\ rounding and having the exponent of the second operand.\n\ \n\ @@ -335,31 +340,31 @@ rounding may be necessary. In this case, the rounding mode is determined by the\n\ given context argument; if no argument is given, the rounding mode of the\n\ current default context is used.\n\ -\n"; +\n"); -static const char doc_radix[] = "\n\ +PyDoc_STRVAR(doc_radix,"\n\ radix() - Return Decimal(10), the radix (base) in which the Decimal class does\n\ all its arithmetic. Included for compatibility with the specification.\n\ -\n"; +\n"); -static const char doc_reduce[] = "\n\ +PyDoc_STRVAR(doc_reduce,"\n\ reduce([context]) - Normalize the number by stripping the rightmost trailing\n\ zeros and converting any result equal to Decimal('0') to Decimal('0e0'). Used\n\ for producing canonical values for members of an equivalence class. For example,\n\ Decimal('32.100') and Decimal('0.321000e+2') both normalize to the equivalent\n\ value Decimal('32.1').\n\ -\n"; +\n"); -static const char doc_remainder_near[] = "\n\ +PyDoc_STRVAR(doc_remainder_near,"\n\ remainder_near(other[, context]) - Compute the modulo as either a positive\n\ or negative value depending on which is closest to zero. For instance,\n\ Decimal(10).remainder_near(6) returns Decimal('-2'), which is closer to zero\n\ than Decimal('4').\n\ \n\ If both are equally close, the one chosen will have the same sign as self.\n\ -\n"; +\n"); -static const char doc_rotate[] = "\n\ +PyDoc_STRVAR(doc_rotate,"\n\ rotate(other[, context]) - Return the result of rotating the digits of the\n\ first operand by an amount specified by the second operand. The second operand\n\ must be an integer in the range -precision through precision. The absolute\n\ @@ -368,181 +373,181 @@ right. The coefficient of the first operand is padded on the left with zeros to\n\ length precision if necessary. The sign and exponent of the first operand are\n\ unchanged.\n\ -\n"; +\n"); -static const char doc_same_quantum[] = "\n\ +PyDoc_STRVAR(doc_same_quantum,"\n\ same_quantum(other[, context]) - Test whether self and other have the\n\ same exponent or whether both are NaN.\n\ -\n"; +\n"); -static const char doc_scaleb[] = "\n\ +PyDoc_STRVAR(doc_scaleb,"\n\ scaleb(other[, context]) - Return the first operand with the exponent adjusted\n\ the second. Equivalently, return the first operand multiplied by 10**other.\n\ The second operand must be an integer.\n\ -\n"; +\n"); -static const char doc_shift[] = "\n\ -shift(other[, context]) - Return the result of shifting the digits of the\n\ -first operand by an amount specified by the second operand. The second operand\n\ -must be an integer in the range -precision through precision. The absolute value\n\ -of the second operand gives the number of places to shift. If the second operand\n\ -is positive, then the shift is to the left; otherwise the shift is to the right.\n\ -Digits shifted into the coefficient are zeros. The sign and exponent of the\n\ -first operand are unchanged.\n\ -\n"; +PyDoc_STRVAR(doc_shift,"\n\ +shift(other[, context]) - Return the result of shifting the digits of\n\ +the first operand by an amount specified by the second operand. The second\n\ +operand must be an integer in the range -precision through precision. The\n\ +absolute value of the second operand gives the number of places to shift.\n\ +If the second operand is positive, then the shift is to the left; otherwise\n\ +the shift is to the right. Digits shifted into the coefficient are zeros.\n\ +The sign and exponent of the first operand are unchanged.\n\ +\n"); -static const char doc_sqrt[] = "\n\ +PyDoc_STRVAR(doc_sqrt,"\n\ sqrt([context]) - Return the square root of the argument to full precision.\n\ The result is correctly rounded using the ROUND_HALF_EVEN rounding mode.\n\ -\n"; +\n"); -static const char doc_to_eng[] = "\n\ +PyDoc_STRVAR(doc_to_eng,"\n\ to_eng([context]) - Convert a number to a string using engineering\n\ notation. Alias for to_eng_string().\n\ -\n"; +\n"); -static const char doc_to_eng_string[] = "\n\ +PyDoc_STRVAR(doc_to_eng_string,"\n\ to_eng_string([context]) - Convert to an engineering-type string.\n\ Engineering notation has an exponent which is a multiple of 3, so\n\ there are up to 3 digits left of the decimal place. For example,\n\ Decimal('123E+1') is converted to Decimal('1.23E+3')\n\ -\n"; +\n"); -static const char doc_to_integral[] = "\n\ +PyDoc_STRVAR(doc_to_integral,"\n\ to_integral([rounding[, context]]) - Identical to the to_integral_value()\n\ method. The to_integral name has been kept for compatibility with older\n\ versions.\n\ -\n"; +\n"); -static const char doc_to_integral_exact[] = "\n\ +PyDoc_STRVAR(doc_to_integral_exact,"\n\ to_integral_exact([rounding[, context]]) - Round to the nearest integer,\n\ signaling Inexact or Rounded as appropriate if rounding occurs. The rounding\n\ mode is determined by the rounding parameter if given, else by the given\n\ context. If neither parameter is given, then the rounding mode of the current\n\ default context is used.\n\ -\n"; +\n"); -static const char doc_to_integral_value[] = "\n\ +PyDoc_STRVAR(doc_to_integral_value,"\n\ to_integral_value([rounding[, context]]) - Round to the nearest integer without\n\ signaling Inexact or Rounded. The rounding mode is determined by the rounding\n\ parameter if given, else by the given context. If neither parameter is given,\n\ then the rounding mode of the current default context is used.\n\ -\n"; +\n"); /******************************************************************************/ /* Decimal Object, Additional Methods */ /******************************************************************************/ -static const char doc_add[] = "\n\ +PyDoc_STRVAR(doc_add,"\n\ add(other[, context]) - Return the sum of self and other.\n\ -\n"; +\n"); -static const char doc_apply[] = "\n\ +PyDoc_STRVAR(doc_apply,"\n\ apply() - Apply the default context to the number.\n\ -\n"; +\n"); -static const char doc_div[] = "\n\ +PyDoc_STRVAR(doc_div,"\n\ div(other[, context]) - Divide self by other.\n\ Alias for divide(other[, context]).\n\ -\n"; +\n"); -static const char doc_divide[] = "\n\ +PyDoc_STRVAR(doc_divide,"\n\ divide(other[, context]) - Divide self by other.\n\ -\n"; +\n"); -static const char doc_divide_int[] = "\n\ +PyDoc_STRVAR(doc_divide_int,"\n\ divide_int(other[, context]) - Truncating division.\n\ -\n"; +\n"); -static const char doc_divint[] = "\n\ +PyDoc_STRVAR(doc_divint,"\n\ divint(other[, context]) - Truncating division.\n\ Alias for divide_int(other[, context]).\n\ -\n"; +\n"); -static const char doc_divmod[] = "\n\ +PyDoc_STRVAR(doc_divmod,"\n\ divmod(other[, context]) - Return quotient and remainder of the\n\ division self / other.\n\ -\n"; +\n"); -static const char doc_invroot[] = "\n\ +PyDoc_STRVAR(doc_invroot,"\n\ invroot([context]) - Return the reciprocal of the square root.\n\ -\n"; +\n"); -static const char doc_is_integer[] = "\n\ +PyDoc_STRVAR(doc_is_integer,"\n\ is_integer() - Return True if the argument is an integer and False otherwise.\n\ -\n"; +\n"); -static const char doc_minus[] = "\n\ +PyDoc_STRVAR(doc_minus,"\n\ minus() - Minus corresponds to the unary prefix minus operator in Python,\n\ but applies the context precision and rounding.\n\ -\n"; +\n"); -static const char doc_mul[] = "\n\ +PyDoc_STRVAR(doc_mul,"\n\ mul(other[, context]) - Multiply self by other.\n\ Alias for multiply(other[, context]).\n\ -\n"; +\n"); -static const char doc_multiply[] = "\n\ +PyDoc_STRVAR(doc_multiply,"\n\ multiply(other[, context]) - Multiply self by other.\n\ -\n"; +\n"); -static const char doc_plus[] = "\n\ +PyDoc_STRVAR(doc_plus,"\n\ plus() - Plus corresponds to the unary prefix plus operator in Python,\n\ but applies the context precision and rounding.\n\ -\n"; +\n"); -static const char doc_pow[] = "\n\ +PyDoc_STRVAR(doc_pow,"\n\ pow(other[, context]) - Raise self to the power of other.\n\ Alias for power(other[, context]).\n\ -\n"; +\n"); -static const char doc_power[] = "\n\ +PyDoc_STRVAR(doc_power,"\n\ power(other[, context]) - Raise self to the power of other.\n\ -\n"; +\n"); -static const char doc_powmod[] = "\n\ +PyDoc_STRVAR(doc_powmod,"\n\ powmod(other, third[, context]) - Return (self ** other) % third.\n\ -\n"; +\n"); -static const char doc_rem[] = "\n\ +PyDoc_STRVAR(doc_rem,"\n\ rem(other[, context]) - Remainder of the division self / other.\n\ Alias for remainder(other[, context]).\n\ -\n"; +\n"); -static const char doc_remainder[] = "\n\ +PyDoc_STRVAR(doc_remainder,"\n\ remainder(other[, context]) - Remainder of the division self / other.\n\ -\n"; +\n"); -static const char doc_sub[] = "\n\ +PyDoc_STRVAR(doc_sub,"\n\ sub(other[, context]) - Subtract other from self.\n\ Alias for subtract(other[, context]).\n\ -\n"; +\n"); -static const char doc_subtract[] = "\n\ +PyDoc_STRVAR(doc_subtract,"\n\ subtract(other[, context]) - Subtract other from self.\n\ -\n"; +\n"); -static const char doc_sign[] = "\n\ +PyDoc_STRVAR(doc_sign,"\n\ sign() - Return -1 or 1, depending on the sign of self.\n\ -\n"; +\n"); -static const char doc_to_sci[] = "\n\ +PyDoc_STRVAR(doc_to_sci,"\n\ to_sci([context]) - Convert a number to a string using scientific notation.\n\ Alias for to_sci_string().\n\ -\n"; +\n"); -static const char doc_to_sci_string[] = "\n\ +PyDoc_STRVAR(doc_to_sci_string,"\n\ to_sci_string([context]) - Convert a number to a string using\n\ scientific notation.\n\ -\n"; +\n"); /******************************************************************************/ /* Context Object and Methods */ /******************************************************************************/ -static const char doc_context[] = "\n\ +PyDoc_STRVAR(doc_context,"\n\ The context affects almost all operations and controls rounding,\n\ Over/Underflow, raising of exceptions and much more. A new context\n\ can be constructed as follows:\n\ @@ -552,255 +557,255 @@ traps=[InvalidOperation, DivisionByZero, Overflow],\n\ flags=[], _clamp=0, _allcr=1)\n\ \n\ -\n"; +\n"); -static const char doc_ctx_apply[] = "\n\ +PyDoc_STRVAR(doc_ctx_apply,"\n\ apply(x) - Apply self to Decimal x.\n\ -\n"; +\n"); -static const char doc_ctx_clear_flags[] = "\n\ +PyDoc_STRVAR(doc_ctx_clear_flags,"\n\ clear_flags() - Reset all flags to False.\n\ -\n"; +\n"); -static const char doc_ctx_clear_traps[] = "\n\ +PyDoc_STRVAR(doc_ctx_clear_traps,"\n\ clear_traps() - Set all traps to False.\n\ -\n"; +\n"); -static const char doc_ctx_copy[] = "\n\ +PyDoc_STRVAR(doc_ctx_copy,"\n\ copy() - Return a duplicate of the context with all flags cleared.\n\ -\n"; +\n"); -static const char doc_ctx_copy_decimal[] = "\n\ +PyDoc_STRVAR(doc_ctx_copy_decimal,"\n\ copy_decimal(x) - Return a copy of Decimal x.\n\ -\n"; +\n"); -static const char doc_ctx_create_decimal[] = "\n\ +PyDoc_STRVAR(doc_ctx_create_decimal,"\n\ create_decimal(x) - Create a new Decimal instance from x, using self as the\n\ context. Unlike the Decimal constructor, this function observes the context\n\ limits.\n\ -\n"; +\n"); -static const char doc_ctx_create_decimal_from_float[] = "\n\ +PyDoc_STRVAR(doc_ctx_create_decimal_from_float,"\n\ create_decimal_from_float(f) - Create a new Decimal instance from float f.\n\ Unlike the Decimal.from_float() class method, this function observes the\n\ context limits.\n\ -\n"; +\n"); -static const char doc_ctx_Etiny[] = "\n\ +PyDoc_STRVAR(doc_ctx_Etiny,"\n\ Etiny() - Return a value equal to Emin - prec + 1, which is the minimum\n\ exponent value for subnormal results. When underflow occurs, the exponent\n\ is set to Etiny.\n\ -\n"; +\n"); -static const char doc_ctx_Etop[] = "\n\ +PyDoc_STRVAR(doc_ctx_Etop,"\n\ Etop() - Return a value equal to Emax - prec + 1. This is the maximum exponent\n\ if the _clamp field of the context is set to 1 (IEEE clamp mode). Etop() must\n\ not be negative.\n\ -\n"; +\n"); -static const char doc_ctx_abs[] = "\n\ +PyDoc_STRVAR(doc_ctx_abs,"\n\ abs(x) - Return the absolute value of x.\n\ -\n"; +\n"); -static const char doc_ctx_add[] = "\n\ +PyDoc_STRVAR(doc_ctx_add,"\n\ add(x, y) - Return the sum of x and y.\n\ -\n"; +\n"); -static const char doc_ctx_canonical[] = "\n\ +PyDoc_STRVAR(doc_ctx_canonical,"\n\ canonical(x) - Return a new instance of x.\n\ -\n"; +\n"); -static const char doc_ctx_compare[] = "\n\ +PyDoc_STRVAR(doc_ctx_compare,"\n\ compare(x, y) - Compare x and y numerically.\n\ -\n"; +\n"); -static const char doc_ctx_compare_signal[] = "\n\ +PyDoc_STRVAR(doc_ctx_compare_signal,"\n\ compare_signal(x, y) - Compare x and y numerically. All NaNs signal.\n\ -\n"; +\n"); -static const char doc_ctx_compare_total[] = "\n\ +PyDoc_STRVAR(doc_ctx_compare_total,"\n\ compare_total(x, y) - Compare x and y using their abstract representation.\n\ -\n"; +\n"); -static const char doc_ctx_compare_total_mag[] = "\n\ +PyDoc_STRVAR(doc_ctx_compare_total_mag,"\n\ compare_total_mag(x, y) - Compare x and y using their abstract representation,\n\ ignoring sign.\n\ -\n"; +\n"); -static const char doc_ctx_copy_abs[] = "\n\ +PyDoc_STRVAR(doc_ctx_copy_abs,"\n\ copy_abs(x) - Return a copy of x with the sign set to 0.\n\ -\n"; +\n"); -static const char doc_ctx_copy_negate[] = "\n\ +PyDoc_STRVAR(doc_ctx_copy_negate,"\n\ copy_negate(x) - Return a copy of x with the sign inverted.\n\ -\n"; +\n"); -static const char doc_ctx_copy_sign[] = "\n\ +PyDoc_STRVAR(doc_ctx_copy_sign,"\n\ copy_sign(x, y) - Copy the sign from y to x.\n\ -\n"; +\n"); -static const char doc_ctx_div[] = "\n\ +PyDoc_STRVAR(doc_ctx_div,"\n\ div(x, y) - Return x divided by y. Alias for divide(x, y).\n\ -\n"; +\n"); -static const char doc_ctx_divide[] = "\n\ +PyDoc_STRVAR(doc_ctx_divide,"\n\ divide(x, y) - Return x divided by y.\n\ -\n"; +\n"); -static const char doc_ctx_divide_int[] = "\n\ +PyDoc_STRVAR(doc_ctx_divide_int,"\n\ divide_int(x, y) - Return x divided by y, truncated to an integer.\n\ -\n"; +\n"); -static const char doc_ctx_divint[] = "\n\ +PyDoc_STRVAR(doc_ctx_divint,"\n\ divint(x, y) - Return x divided by y, truncated to an integer.\n\ Alias for divide_int(x, y).\n\ -\n"; +\n"); -static const char doc_ctx_divmod[] = "\n\ +PyDoc_STRVAR(doc_ctx_divmod,"\n\ divmod(x, y) - Return quotient and remainder of the division x / y.\n\ -\n"; +\n"); -static const char doc_ctx_exp[] = "\n\ +PyDoc_STRVAR(doc_ctx_exp,"\n\ exp(x) - Return e ** x.\n\ -\n"; +\n"); -static const char doc_ctx_fma[] = "\n\ +PyDoc_STRVAR(doc_ctx_fma,"\n\ fma(x, y, z) - Return x multiplied by y, plus z.\n\ -\n"; +\n"); -static const char doc_ctx_is_canonical[] = "\n\ +PyDoc_STRVAR(doc_ctx_is_canonical,"\n\ is_canonical(x) - Return True if x is canonical, False otherwise.\n\ -\n"; +\n"); -static const char doc_ctx_is_finite[] = "\n\ +PyDoc_STRVAR(doc_ctx_is_finite,"\n\ is_finite(x) - Return True if x is finite, False otherwise.\n\ -\n"; +\n"); -static const char doc_ctx_is_infinite[] = "\n\ +PyDoc_STRVAR(doc_ctx_is_infinite,"\n\ is_infinite(x) - Return True if x is infinite, False otherwise.\n\ -\n"; +\n"); -static const char doc_ctx_is_nan[] = "\n\ +PyDoc_STRVAR(doc_ctx_is_nan,"\n\ is_nan(x) - Return True if x is a qNaN or sNaN, False otherwise.\n\ -\n"; +\n"); -static const char doc_ctx_is_normal[] = "\n\ +PyDoc_STRVAR(doc_ctx_is_normal,"\n\ is_normal(x) - Return True if x is a normal number, False otherwise.\n\ -\n"; +\n"); -static const char doc_ctx_is_qnan[] = "\n\ +PyDoc_STRVAR(doc_ctx_is_qnan,"\n\ is_qnan(x) - Return True if x is a quiet NaN, False otherwise.\n\ -\n"; +\n"); -static const char doc_ctx_is_signed[] = "\n\ +PyDoc_STRVAR(doc_ctx_is_signed,"\n\ is_signed(x) - Return True if x is negative, False otherwise.\n\ -\n"; +\n"); -static const char doc_ctx_is_snan[] = "\n\ +PyDoc_STRVAR(doc_ctx_is_snan,"\n\ is_snan() - Return True if x is a signaling NaN, False otherwise.\n\ -\n"; +\n"); -static const char doc_ctx_is_subnormal[] = "\n\ +PyDoc_STRVAR(doc_ctx_is_subnormal,"\n\ is_subnormal(x) - Return True if x is subnormal, False otherwise.\n\ -\n"; +\n"); -static const char doc_ctx_is_zero[] = "\n\ +PyDoc_STRVAR(doc_ctx_is_zero,"\n\ is_zero(x) - Return True if x is a zero, False otherwise.\n\ -\n"; +\n"); -static const char doc_ctx_ln[] = "\n\ +PyDoc_STRVAR(doc_ctx_ln,"\n\ ln(x) - Return the natural (base e) logarithm of x.\n\ -\n"; +\n"); -static const char doc_ctx_log10[] = "\n\ +PyDoc_STRVAR(doc_ctx_log10,"\n\ log10(x) - Return the base 10 logarithm of x.\n\ -\n"; +\n"); -static const char doc_ctx_logb[] = "\n\ +PyDoc_STRVAR(doc_ctx_logb,"\n\ logb(x) - Return the exponent of the magnitude of the operand's MSD.\n\ -\n"; +\n"); -static const char doc_ctx_logical_and[] = "\n\ +PyDoc_STRVAR(doc_ctx_logical_and,"\n\ logical_and(x, y) - Digit-wise and of x and y.\n\ -\n"; +\n"); -static const char doc_ctx_logical_invert[] = "\n\ +PyDoc_STRVAR(doc_ctx_logical_invert,"\n\ logical_invert(x) - Invert all digits of x.\n\ -\n"; +\n"); -static const char doc_ctx_logical_or[] = "\n\ +PyDoc_STRVAR(doc_ctx_logical_or,"\n\ logical_or(x, y) - Digit-wise or of x and y.\n\ -\n"; +\n"); -static const char doc_ctx_logical_xor[] = "\n\ +PyDoc_STRVAR(doc_ctx_logical_xor,"\n\ logical_xor(x, y) - Digit-wise xor of x and y.\n\ -\n"; +\n"); -static const char doc_ctx_max[] = "\n\ +PyDoc_STRVAR(doc_ctx_max,"\n\ max(x, y) - Compare the values numerically and return the maximum.\n\ -\n"; +\n"); -static const char doc_ctx_max_mag[] = "\n\ +PyDoc_STRVAR(doc_ctx_max_mag,"\n\ max_mag(x, y) - Compare the values numerically with their sign ignored.\n\ -\n"; +\n"); -static const char doc_ctx_min[] = "\n\ +PyDoc_STRVAR(doc_ctx_min,"\n\ min(x, y) - Compare the values numerically and return the minimum.\n\ -\n"; +\n"); -static const char doc_ctx_min_mag[] = "\n\ +PyDoc_STRVAR(doc_ctx_min_mag,"\n\ min_mag(x, y) - Compare the values numerically with their sign ignored.\n\ -\n"; +\n"); -static const char doc_ctx_minus[] = "\n\ +PyDoc_STRVAR(doc_ctx_minus,"\n\ minus(x) - Minus corresponds to the unary prefix minus operator in Python,\n\ but applies the context to the result.\n\ -\n"; +\n"); -static const char doc_ctx_mul[] = "\n\ +PyDoc_STRVAR(doc_ctx_mul,"\n\ mul(x, y) - Return the product of x and y. Alias for multiply(x, y).\n\ -\n"; +\n"); -static const char doc_ctx_multiply[] = "\n\ +PyDoc_STRVAR(doc_ctx_multiply,"\n\ multiply(x, y) - Return the product of x and y.\n\ -\n"; +\n"); -static const char doc_ctx_next_minus[] = "\n\ +PyDoc_STRVAR(doc_ctx_next_minus,"\n\ next_minus(x) - Return the largest representable number smaller than x.\n\ -\n"; +\n"); -static const char doc_ctx_next_plus[] = "\n\ +PyDoc_STRVAR(doc_ctx_next_plus,"\n\ next_plus(x) - Return the smallest representable number larger than x.\n\ -\n"; +\n"); -static const char doc_ctx_next_toward[] = "\n\ +PyDoc_STRVAR(doc_ctx_next_toward,"\n\ next_toward(x) - Return the number closest to x, in the direction towards y.\n\ -\n"; +\n"); -static const char doc_ctx_normalize[] = "\n\ +PyDoc_STRVAR(doc_ctx_normalize,"\n\ normalize(x) - Reduce x to its simplest form. Alias for reduce(x).\n\ -\n"; +\n"); -static const char doc_ctx_number_class[] = "\n\ +PyDoc_STRVAR(doc_ctx_number_class,"\n\ number_class(x) - Return an indication of the class of x.\n\ -\n"; +\n"); -static const char doc_ctx_plus[] = "\n\ +PyDoc_STRVAR(doc_ctx_plus,"\n\ plus(x) - Plus corresponds to the unary prefix plus operator in Python,\n\ but applies the context to the result.\n\ -\n"; +\n"); -static const char doc_ctx_pow[] = "\n\ +PyDoc_STRVAR(doc_ctx_pow,"\n\ pow(x, y) - Compute x**y. Alias for power(x, y).\n\ -\n"; +\n"); -static const char doc_ctx_power[] = "\n\ +PyDoc_STRVAR(doc_ctx_power,"\n\ power(x, y) - Compute x**y. If x is negative, then y must be integral.\n\ The result will be inexact unless y is integral and the result is finite\n\ and can be expressed exactly in 'precision' digits.\n\ -\n"; +\n"); -static const char doc_ctx_powmod[] = "\n\ +PyDoc_STRVAR(doc_ctx_powmod,"\n\ powmod(x, y, m) - Compute (x**y) % m. The following restrictions hold:\n\ \n\ * all three arguments must be integral\n\ @@ -808,112 +813,112 @@ * at least one of x or y must be nonzero\n\ * m must be nonzero\n\ \n\ -\n"; +\n"); -static const char doc_ctx_quantize[] = "\n\ +PyDoc_STRVAR(doc_ctx_quantize,"\n\ quantize(x, y) - Return a value equal to x (rounded), having the exponent of y.\n\ -\n"; +\n"); -static const char doc_ctx_radix[] = "\n\ +PyDoc_STRVAR(doc_ctx_radix,"\n\ radix() - Return 10.\n\ -\n"; +\n"); -static const char doc_ctx_reduce[] = "\n\ +PyDoc_STRVAR(doc_ctx_reduce,"\n\ reduce(x) - Reduce x to its simplest form.\n\ -\n"; +\n"); -static const char doc_ctx_rem[] = "\n\ +PyDoc_STRVAR(doc_ctx_rem,"\n\ rem(x, y) - Return the remainder from integer division. The sign of\n\ the result, if non-zero, is the same as that of the original dividend.\n\ \n\ Alias for remainder(x, y).\n\ -\n"; +\n"); -static const char doc_ctx_remainder[] = "\n\ +PyDoc_STRVAR(doc_ctx_remainder,"\n\ remainder(x, y) - Return the remainder from integer division. The sign of\n\ the result, if non-zero, is the same as that of the original dividend.\n\ -\n"; +\n"); -static const char doc_ctx_remainder_near[] = "\n\ +PyDoc_STRVAR(doc_ctx_remainder_near,"\n\ remainder_near(x, y) - Return x - y * n, where n is the integer nearest the\n\ exact value of x / y (if the result is 0 then its sign will be the sign of x).\n\ -\n"; +\n"); -static const char doc_ctx_rotate[] = "\n\ +PyDoc_STRVAR(doc_ctx_rotate,"\n\ rotate(x, y) - Return a copy of x, rotated by y places.\n\ -\n"; +\n"); -static const char doc_ctx_same_quantum[] = "\n\ +PyDoc_STRVAR(doc_ctx_same_quantum,"\n\ same_quantum(x, y) - Return True if the two operands have the same exponent.\n\ -\n"; +\n"); -static const char doc_ctx_scaleb[] = "\n\ +PyDoc_STRVAR(doc_ctx_scaleb,"\n\ scaleb(x, y) - Return the first operand after adding the second value\n\ to its exp.\n\ -\n"; +\n"); -static const char doc_ctx_shift[] = "\n\ +PyDoc_STRVAR(doc_ctx_shift,"\n\ shift(x, y) - Return a copy of x, shifted by y places.\n\ -\n"; +\n"); -static const char doc_ctx_sqrt[] = "\n\ +PyDoc_STRVAR(doc_ctx_sqrt,"\n\ sqrt(x) - Square root of a non-negative number to context precision.\n\ -\n"; +\n"); -static const char doc_ctx_sub[] = "\n\ +PyDoc_STRVAR(doc_ctx_sub,"\n\ sub(x, y) - Return the difference between x and y. Alias for subtract(x, y).\n\ -\n"; +\n"); -static const char doc_ctx_subtract[] = "\n\ +PyDoc_STRVAR(doc_ctx_subtract,"\n\ subtract(x, y) - Return the difference between x and y.\n\ -\n"; +\n"); -static const char doc_ctx_to_eng[] = "\n\ +PyDoc_STRVAR(doc_ctx_to_eng,"\n\ to_eng(x) - Convert a number to a string, using engineering notation.\n\ Alias for to_eng_string(x).\n\ -\n"; +\n"); -static const char doc_ctx_to_eng_string[] = "\n\ +PyDoc_STRVAR(doc_ctx_to_eng_string,"\n\ to_eng_string(x) - Convert a number to a string, using engineering notation.\n\ -\n"; +\n"); -static const char doc_ctx_to_integral[] = "\n\ +PyDoc_STRVAR(doc_ctx_to_integral,"\n\ to_integral(x) - Identical to to_integral_value(x).\n\ -\n"; +\n"); -static const char doc_ctx_to_integral_exact[] = "\n\ +PyDoc_STRVAR(doc_ctx_to_integral_exact,"\n\ to_integral_exact(x) - Round to an integer. Signal if the result is\n\ rounded or inexact.\n\ -\n"; +\n"); -static const char doc_ctx_to_integral_value[] = "\n\ +PyDoc_STRVAR(doc_ctx_to_integral_value,"\n\ to_integral_value(x) - Round to an integer.\n\ -\n"; +\n"); -static const char doc_ctx_to_sci[] = "\n\ +PyDoc_STRVAR(doc_ctx_to_sci,"\n\ to_sci(x) - Convert a number to a string using scientific notation.\n\ Alias for to_sci_string(x).\n\ -\n"; +\n"); -static const char doc_ctx_to_sci_string[] = "\n\ +PyDoc_STRVAR(doc_ctx_to_sci_string,"\n\ to_sci_string(x) - Convert a number to a string using scientific notation.\n\ -\n"; +\n"); /******************************************************************************/ /* Context Object, Additional Methods */ /******************************************************************************/ -static const char doc_ctx_invroot[] = "\n\ +PyDoc_STRVAR(doc_ctx_invroot,"\n\ invroot(x) - Return the reciprocal of the square root of x.\n\ -\n"; +\n"); -static const char doc_ctx_setflags[] = "\n\ +PyDoc_STRVAR(doc_ctx_setflags,"\n\ setflags(list) - Set the context flags from a list containing signals.\n\ -\n"; +\n"); -static const char doc_ctx_settraps[] = "\n\ +PyDoc_STRVAR(doc_ctx_settraps,"\n\ settraps(list) - Set the context traps from a list containing signals.\n\ -\n"; +\n"); #endif From python-checkins at python.org Fri Jan 22 17:12:40 2010 From: python-checkins at python.org (stefan.krah) Date: Fri, 22 Jan 2010 16:12:40 -0000 Subject: [Python-checkins] r77689 - python/branches/py3k-cdecimal/Modules/cdecimal/io.c Message-ID: Author: stefan.krah Date: Fri Jan 22 17:12:40 2010 New Revision: 77689 Log: Fix Visual Studio warnings. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/io.c Modified: python/branches/py3k-cdecimal/Modules/cdecimal/io.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/io.c (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/io.c Fri Jan 22 17:12:40 2010 @@ -296,9 +296,9 @@ d = mpd_pow10[j]; q = x / d; x -= d * q; - *s++ = '0' + q; + *s++ = '0' + (char)q; } - *s++ = '0' + x; + *s++ = '0' + (char)x; return s; } @@ -319,9 +319,9 @@ d = mpd_pow10[j]; q = x / d; x -= d * q; - *s++ = '0' + q; + *s++ = '0' + (char)q; } - *s++ = '0' + x; + *s++ = '0' + (char)x; /* remaining full words */ for (i=dec->len-2; i >= 0; --i) { @@ -330,9 +330,9 @@ d = mpd_pow10[j]; q = x / d; x -= d * q; - *s++ = '0' + q; + *s++ = '0' + (char)q; } - *s++ = '0' + x; + *s++ = '0' + (char)x; } return s; @@ -356,7 +356,7 @@ d = mpd_pow10[j]; q = x / d; x -= d * q; - *s++ = '0' + q; + *s++ = '0' + (char)q; } /* remaining full words */ @@ -368,7 +368,7 @@ d = mpd_pow10[j]; q = x / d; x -= d * q; - *s++ = '0' + q; + *s++ = '0' + (char)q; } } From python-checkins at python.org Fri Jan 22 17:14:26 2010 From: python-checkins at python.org (stefan.krah) Date: Fri, 22 Jan 2010 16:14:26 -0000 Subject: [Python-checkins] r77690 - python/branches/py3k-cdecimal/Modules/cdecimal/memory.c Message-ID: Author: stefan.krah Date: Fri Jan 22 17:14:26 2010 New Revision: 77690 Log: Code formatting. Fix Visual Studio warnings. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/memory.c Modified: python/branches/py3k-cdecimal/Modules/cdecimal/memory.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/memory.c (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/memory.c Fri Jan 22 17:14:26 2010 @@ -120,7 +120,8 @@ /* struct hack realloc with overflow checking */ void * -mpd_sh_realloc(void *ptr, mpd_size_t struct_size, mpd_size_t nmemb, mpd_size_t size, uint8_t *err) +mpd_sh_realloc(void *ptr, mpd_size_t struct_size, mpd_size_t nmemb, + mpd_size_t size, uint8_t *err) { void *new; mpd_size_t req; @@ -154,7 +155,10 @@ return NULL; } - result->flags = result->exp = result->digits = result->len = 0; + result->flags = 0; + result->exp = 0; + result->digits = 0; + result->len = 0; result->alloc = size; return result; From python-checkins at python.org Fri Jan 22 17:18:09 2010 From: python-checkins at python.org (mark.dickinson) Date: Fri, 22 Jan 2010 16:18:09 -0000 Subject: [Python-checkins] r77691 - python/trunk/Python/pystrtod.c Message-ID: Author: mark.dickinson Date: Fri Jan 22 17:18:09 2010 New Revision: 77691 Log: Correct typo in comment. Modified: python/trunk/Python/pystrtod.c Modified: python/trunk/Python/pystrtod.c ============================================================================== --- python/trunk/Python/pystrtod.c (original) +++ python/trunk/Python/pystrtod.c Fri Jan 22 17:18:09 2010 @@ -104,7 +104,7 @@ _Py_SET_53BIT_PRECISION_END; if (*endptr == nptr) - /* string might represent and inf or nan */ + /* string might represent an inf or nan */ result = _Py_parse_inf_or_nan(nptr, endptr); return result; From python-checkins at python.org Fri Jan 22 17:27:33 2010 From: python-checkins at python.org (stefan.krah) Date: Fri, 22 Jan 2010 16:27:33 -0000 Subject: [Python-checkins] r77692 - python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal.c Message-ID: Author: stefan.krah Date: Fri Jan 22 17:27:33 2010 New Revision: 77692 Log: Code formatting. Fix Visual Studio warnings. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal.c Modified: python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal.c ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal.c (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/mpdecimal.c Fri Jan 22 17:27:33 2010 @@ -45,18 +45,18 @@ #define MPD_NEWTONDIV_CUTOFF (8*MPD_RDIGITS) #define MPD_NEW_STATIC(name, flags, exp, digits, len) \ - mpd_uint_t name##_data[MPD_MINALLOC_MAX]; \ - mpd_t name = {flags|MPD_STATIC|MPD_STATIC_DATA, exp, digits, \ - len, MPD_MINALLOC_MAX, name##_data} + mpd_uint_t name##_data[MPD_MINALLOC_MAX]; \ + mpd_t name = {flags|MPD_STATIC|MPD_STATIC_DATA, exp, digits, \ + len, MPD_MINALLOC_MAX, name##_data} #define MPD_NEW_CONST(name, flags, exp, digits, len, alloc, initval) \ - mpd_uint_t name##_data[alloc] = {initval}; \ - mpd_t name = {flags|MPD_STATIC|MPD_CONST_DATA, exp, digits, \ - len, alloc, name##_data} + mpd_uint_t name##_data[alloc] = {initval}; \ + mpd_t name = {flags|MPD_STATIC|MPD_CONST_DATA, exp, digits, \ + len, alloc, name##_data} #define MPD_NEW_SHARED(name, a) \ - mpd_t name = {(a->flags&~MPD_DATAFLAGS)|MPD_STATIC|MPD_SHARED_DATA, \ - a->exp, a->digits, a->len, a->alloc, a->data} + mpd_t name = {(a->flags&~MPD_DATAFLAGS)|MPD_STATIC|MPD_SHARED_DATA, \ + a->exp, a->digits, a->len, a->alloc, a->data} static mpd_uint_t data_one[1] = {1}; @@ -66,8 +66,10 @@ data_one}; static const mpd_t zero = {MPD_STATIC|MPD_CONST_DATA, 0, 1, 1, 1, data_zero}; -static inline void _mpd_check_exp(mpd_t *dec, const mpd_context_t *ctx, uint32_t *status); -static void _settriple(mpd_t *result, uint8_t sign, mpd_uint_t a, mpd_ssize_t exp); +static inline void _mpd_check_exp(mpd_t *dec, const mpd_context_t *ctx, + uint32_t *status); +static void _settriple(mpd_t *result, uint8_t sign, mpd_uint_t a, + mpd_ssize_t exp); static inline mpd_ssize_t _mpd_real_size(mpd_uint_t *data, mpd_ssize_t size); static void _mpd_qadd(mpd_t *result, const mpd_t *a, const mpd_t *b, @@ -472,9 +474,10 @@ } /* - * Reduce memory size for the coefficient to MPD_MINALLOC. In theory, realloc - * may fail even when reducing the memory size. But in that case the old memory - * area is always big enough, so checking for MPD_Malloc_error is not imperative. + * Reduce memory size for the coefficient to MPD_MINALLOC. In theory, + * realloc may fail even when reducing the memory size. But in that case + * the old memory area is always big enough, so checking for MPD_Malloc_error + * is not imperative. */ ALWAYS_INLINE void mpd_minalloc(mpd_t *result) @@ -777,13 +780,15 @@ /* * Get n most significant digits from a decimal, where 0 < n <= MPD_UINT_DIGITS. - * Assumes MPD_UINT_DIGITS == MPD_RDIGITS+1, which is true for 32 and 64 bit machines. + * Assumes MPD_UINT_DIGITS == MPD_RDIGITS+1, which is true for 32 and 64 bit + * machines. * * The result of the operation will be in lo. If the operation is impossible, * hi will be nonzero. This is used to indicate an error. */ static inline void -_mpd_get_msdigits(mpd_uint_t *hi, mpd_uint_t *lo, const mpd_t *dec, unsigned int n) +_mpd_get_msdigits(mpd_uint_t *hi, mpd_uint_t *lo, const mpd_t *dec, + unsigned int n) { mpd_uint_t r, tmp; @@ -994,7 +999,8 @@ /* quietly set a static decimal from an mpd_ssize_t */ void -mpd_qsset_ssize(mpd_t *result, mpd_ssize_t a, const mpd_context_t *ctx, uint32_t *status) +mpd_qsset_ssize(mpd_t *result, mpd_ssize_t a, const mpd_context_t *ctx, + uint32_t *status) { mpd_uint_t u; uint8_t sign = MPD_POS; @@ -1018,7 +1024,8 @@ /* quietly set a static decimal from an mpd_uint_t */ void -mpd_qsset_uint(mpd_t *result, mpd_uint_t a, const mpd_context_t *ctx, uint32_t *status) +mpd_qsset_uint(mpd_t *result, mpd_uint_t a, const mpd_context_t *ctx, + uint32_t *status) { _ssettriple(result, MPD_POS, a, 0); mpd_qfinalize(result, ctx, status); @@ -1026,14 +1033,16 @@ /* quietly set a static decimal from an int32_t */ void -mpd_qsset_i32(mpd_t *result, int32_t a, const mpd_context_t *ctx, uint32_t *status) +mpd_qsset_i32(mpd_t *result, int32_t a, const mpd_context_t *ctx, + uint32_t *status) { mpd_qsset_ssize(result, a, ctx, status); } /* quietly set a static decimal from a uint32_t */ void -mpd_qsset_u32(mpd_t *result, uint32_t a, const mpd_context_t *ctx, uint32_t *status) +mpd_qsset_u32(mpd_t *result, uint32_t a, const mpd_context_t *ctx, + uint32_t *status) { mpd_qsset_uint(result, a, ctx, status); } @@ -1041,14 +1050,16 @@ #ifdef CONFIG_64 /* quietly set a static decimal from an int64_t */ void -mpd_qsset_i64(mpd_t *result, int64_t a, const mpd_context_t *ctx, uint32_t *status) +mpd_qsset_i64(mpd_t *result, int64_t a, const mpd_context_t *ctx, + uint32_t *status) { mpd_qsset_ssize(result, a, ctx, status); } /* quietly set a static decimal from a uint64_t */ void -mpd_qsset_u64(mpd_t *result, uint64_t a, const mpd_context_t *ctx, uint32_t *status) +mpd_qsset_u64(mpd_t *result, uint64_t a, const mpd_context_t *ctx, + uint32_t *status) { mpd_qsset_uint(result, a, ctx, status); } @@ -1056,7 +1067,8 @@ /* quietly set a decimal from an mpd_ssize_t */ void -mpd_qset_ssize(mpd_t *result, mpd_ssize_t a, const mpd_context_t *ctx, uint32_t *status) +mpd_qset_ssize(mpd_t *result, mpd_ssize_t a, const mpd_context_t *ctx, + uint32_t *status) { mpd_minalloc(result); mpd_qsset_ssize(result, a, ctx, status); @@ -1064,7 +1076,8 @@ /* quietly set a decimal from an mpd_uint_t */ void -mpd_qset_uint(mpd_t *result, mpd_uint_t a, const mpd_context_t *ctx, uint32_t *status) +mpd_qset_uint(mpd_t *result, mpd_uint_t a, const mpd_context_t *ctx, + uint32_t *status) { _settriple(result, MPD_POS, a, 0); mpd_qfinalize(result, ctx, status); @@ -1072,14 +1085,16 @@ /* quietly set a decimal from an int32_t */ void -mpd_qset_i32(mpd_t *result, int32_t a, const mpd_context_t *ctx, uint32_t *status) +mpd_qset_i32(mpd_t *result, int32_t a, const mpd_context_t *ctx, + uint32_t *status) { mpd_qset_ssize(result, a, ctx, status); } /* quietly set a decimal from a uint32_t */ void -mpd_qset_u32(mpd_t *result, uint32_t a, const mpd_context_t *ctx, uint32_t *status) +mpd_qset_u32(mpd_t *result, uint32_t a, const mpd_context_t *ctx, + uint32_t *status) { mpd_qset_uint(result, a, ctx, status); } @@ -1113,7 +1128,8 @@ } static void -_c32_qset_u64(mpd_t *result, uint64_t a, const mpd_context_t *ctx, uint32_t *status) +_c32_qset_u64(mpd_t *result, uint64_t a, const mpd_context_t *ctx, + uint32_t *status) { _c32setu64(result, a, status); mpd_qfinalize(result, ctx, status); @@ -1121,7 +1137,8 @@ /* set a decimal from an int64_t */ static void -_c32_qset_i64(mpd_t *result, int64_t a, const mpd_context_t *ctx, uint32_t *status) +_c32_qset_i64(mpd_t *result, int64_t a, const mpd_context_t *ctx, + uint32_t *status) { uint64_t u; uint8_t sign = MPD_POS; @@ -1146,7 +1163,8 @@ /* quietly set a decimal from an int64_t */ void -mpd_qset_i64(mpd_t *result, int64_t a, const mpd_context_t *ctx, uint32_t *status) +mpd_qset_i64(mpd_t *result, int64_t a, const mpd_context_t *ctx, + uint32_t *status) { #ifdef CONFIG_64 mpd_qset_ssize(result, a, ctx, status); @@ -1157,7 +1175,8 @@ /* quietly set a decimal from a uint64_t */ void -mpd_qset_u64(mpd_t *result, uint64_t a, const mpd_context_t *ctx, uint32_t *status) +mpd_qset_u64(mpd_t *result, uint64_t a, const mpd_context_t *ctx, + uint32_t *status) { #ifdef CONFIG_64 mpd_qset_uint(result, a, ctx, status); @@ -1168,8 +1187,9 @@ /* - * Quietly get an mpd_uint_t from a decimal. Assumes MPD_UINT_DIGITS == MPD_RDIGITS+1, - * which is true for 32 and 64 bit machines. + * Quietly get an mpd_uint_t from a decimal. Assumes + * MPD_UINT_DIGITS == MPD_RDIGITS+1, which is true for + * 32 and 64 bit machines. * * If the operation is impossible, MPD_Invalid_operation is set. */ @@ -1290,7 +1310,8 @@ * does not fit in MPD_MINALLOC. */ int -mpd_qcheck_nan(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +mpd_qcheck_nan(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) { if (mpd_isnan(a)) { *status |= mpd_issnan(a) ? MPD_Invalid_operation : 0; @@ -1309,7 +1330,7 @@ */ int mpd_qcheck_nans(mpd_t *result, const mpd_t *a, const mpd_t *b, - const mpd_context_t *ctx, uint32_t *status) + const mpd_context_t *ctx, uint32_t *status) { if ((a->flags|b->flags)&(MPD_NAN|MPD_SNAN)) { const mpd_t *choice = b; @@ -1404,7 +1425,8 @@ * overflow. */ static inline void -_mpd_apply_round(mpd_t *dec, mpd_uint_t rnd, const mpd_context_t *ctx, uint32_t *status) +_mpd_apply_round(mpd_t *dec, mpd_uint_t rnd, const mpd_context_t *ctx, + uint32_t *status) { if (_mpd_rnd_incr(dec, rnd, ctx)) { /* We have a number with exactly ctx->prec digits. The increment @@ -1437,7 +1459,8 @@ * Apply rounding to a decimal. Allow overflow of the precision. */ static inline void -_mpd_apply_round_excess(mpd_t *dec, mpd_uint_t rnd, const mpd_context_t *ctx, uint32_t *status) +_mpd_apply_round_excess(mpd_t *dec, mpd_uint_t rnd, const mpd_context_t *ctx, + uint32_t *status) { if (_mpd_rnd_incr(dec, rnd, ctx)) { mpd_uint_t carry = _mpd_baseincr(dec->data, dec->len); @@ -1458,7 +1481,8 @@ * overflow the precision. */ static inline int -_mpd_apply_round_fit(mpd_t *dec, mpd_uint_t rnd, const mpd_context_t *ctx, uint32_t *status) +_mpd_apply_round_fit(mpd_t *dec, mpd_uint_t rnd, const mpd_context_t *ctx, + uint32_t *status) { if (_mpd_rnd_incr(dec, rnd, ctx)) { mpd_uint_t carry = _mpd_baseincr(dec->data, dec->len); @@ -1500,7 +1524,7 @@ switch (ctx->round) { case MPD_ROUND_HALF_UP: case MPD_ROUND_HALF_EVEN: - case MPD_ROUND_HALF_DOWN: case MPD_ROUND_UP: + case MPD_ROUND_HALF_DOWN: case MPD_ROUND_UP: case MPD_ROUND_TRUNC: mpd_setspecial(dec, mpd_sign(dec), MPD_INF); break; @@ -1758,12 +1782,12 @@ /* Convenience macro. If a and b are not equal, return from the calling * function with the correct comparison value. */ #define CMP_EQUAL_OR_RETURN(a, b) \ - if (a != b) { \ - if (a < b) { \ - return -1; \ - } \ - return 1; \ - } + if (a != b) { \ + if (a < b) { \ + return -1; \ + } \ + return 1; \ + } /* * Compare the data of big and small. This function does the equivalent @@ -1771,7 +1795,8 @@ * big and small, except that no allocation for the left shift is needed. */ static int -_mpd_basecmp(mpd_uint_t *big, mpd_uint_t *small, mpd_size_t n, mpd_size_t m, mpd_size_t shift) +_mpd_basecmp(mpd_uint_t *big, mpd_uint_t *small, mpd_size_t n, mpd_size_t m, + mpd_size_t shift) { #if defined(__GNUC__) && !defined(__INTEL_COMPILER) /* spurious uninitialized warnings */ @@ -2471,7 +2496,8 @@ /* Exponent of the magnitude of the most significant digit of the operand. */ void -mpd_qlogb(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +mpd_qlogb(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) { if (mpd_isspecial(a)) { if (mpd_qcheck_nan(result, a, ctx, status)) { @@ -2883,7 +2909,8 @@ * result of the plus operation. */ void -mpd_qabs(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +mpd_qabs(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) { if (mpd_isspecial(a)) { if (mpd_qcheck_nan(result, a, ctx, status)) { @@ -2911,7 +2938,8 @@ /* Add or subtract infinities. */ static void -_mpd_qaddsub_inf(mpd_t *result, const mpd_t *a, const mpd_t *b, uint8_t sign_b, uint32_t *status) +_mpd_qaddsub_inf(mpd_t *result, const mpd_t *a, const mpd_t *b, uint8_t sign_b, + uint32_t *status) { if (mpd_isinfinite(a)) { if (mpd_sign(a) != sign_b && mpd_isinfinite(b)) { @@ -2987,7 +3015,8 @@ if (mpd_sign(a) == sign_b) { - carry = _mpd_baseadd(result->data, big->data, small->data, big->len, small->len); + carry = _mpd_baseadd(result->data, big->data, small->data, + big->len, small->len); if (carry) { newsize = big->len + 1; @@ -3013,7 +3042,8 @@ } } - _mpd_basesub(result->data, big->data, small->data, big->len, small->len); + _mpd_basesub(result->data, big->data, small->data, + big->len, small->len); newsize = _mpd_real_size(result->data, big->len); /* resize to smaller cannot fail */ (void)mpd_qresize(result, newsize, status); @@ -3088,8 +3118,8 @@ /* Add decimal and mpd_ssize_t. */ void -mpd_qadd_ssize(mpd_t *result, const mpd_t *a, mpd_ssize_t b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qadd_ssize(mpd_t *result, const mpd_t *a, mpd_ssize_t b, + const mpd_context_t *ctx, uint32_t *status) { mpd_t bb; mpd_uint_t bdata[2]; @@ -3103,8 +3133,8 @@ /* Add decimal and mpd_uint_t. */ void -mpd_qadd_uint(mpd_t *result, const mpd_t *a, mpd_uint_t b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qadd_uint(mpd_t *result, const mpd_t *a, mpd_uint_t b, + const mpd_context_t *ctx, uint32_t *status) { mpd_t bb; mpd_uint_t bdata[2]; @@ -3118,8 +3148,8 @@ /* Subtract mpd_ssize_t from decimal. */ void -mpd_qsub_ssize(mpd_t *result, const mpd_t *a, mpd_ssize_t b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qsub_ssize(mpd_t *result, const mpd_t *a, mpd_ssize_t b, + const mpd_context_t *ctx, uint32_t *status) { mpd_t bb; mpd_uint_t bdata[2]; @@ -3133,8 +3163,8 @@ /* Subtract mpd_uint_t from decimal. */ void -mpd_qsub_uint(mpd_t *result, const mpd_t *a, mpd_uint_t b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qsub_uint(mpd_t *result, const mpd_t *a, mpd_uint_t b, + const mpd_context_t *ctx, uint32_t *status) { mpd_t bb; mpd_uint_t bdata[2]; @@ -3148,16 +3178,16 @@ /* Add decimal and int32_t. */ void -mpd_qadd_i32(mpd_t *result, const mpd_t *a, int32_t b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qadd_i32(mpd_t *result, const mpd_t *a, int32_t b, + const mpd_context_t *ctx, uint32_t *status) { mpd_qadd_ssize(result, a, b, ctx, status); } /* Add decimal and uint32_t. */ void -mpd_qadd_u32(mpd_t *result, const mpd_t *a, uint32_t b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qadd_u32(mpd_t *result, const mpd_t *a, uint32_t b, + const mpd_context_t *ctx, uint32_t *status) { mpd_qadd_uint(result, a, b, ctx, status); } @@ -3165,16 +3195,16 @@ #ifdef CONFIG_64 /* Add decimal and int64_t. */ void -mpd_qadd_i64(mpd_t *result, const mpd_t *a, int64_t b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qadd_i64(mpd_t *result, const mpd_t *a, int64_t b, + const mpd_context_t *ctx, uint32_t *status) { mpd_qadd_ssize(result, a, b, ctx, status); } /* Add decimal and uint64_t. */ void -mpd_qadd_u64(mpd_t *result, const mpd_t *a, uint64_t b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qadd_u64(mpd_t *result, const mpd_t *a, uint64_t b, + const mpd_context_t *ctx, uint32_t *status) { mpd_qadd_uint(result, a, b, ctx, status); } @@ -3271,7 +3301,8 @@ if (b->len == 1) { rem = _mpd_shortdiv(q->data, a->data, a->len, b->data[0]); } - else if (ctx->prec < MPD_NEWTONDIV_CUTOFF || b->digits < MPD_NEWTONDIV_CUTOFF) { + else if (ctx->prec < MPD_NEWTONDIV_CUTOFF || + b->digits < MPD_NEWTONDIV_CUTOFF) { int ret = _mpd_basedivmod(q->data, NULL, a->data, b->data, a->len, b->len); if (ret < 0) { @@ -3326,8 +3357,8 @@ /* Divide a by b. */ void -mpd_qdiv(mpd_t *q, const mpd_t *a, const mpd_t *b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qdiv(mpd_t *q, const mpd_t *a, const mpd_t *b, + const mpd_context_t *ctx, uint32_t *status) { _mpd_qdiv(SET_IDEAL_EXP, q, a, b, ctx, status); } @@ -3426,7 +3457,8 @@ r->data[0] = _mpd_shortdiv(q->data, a->data, a->len, b->data[0]); } } - else if (ctx->prec < MPD_NEWTONDIV_CUTOFF || b->digits < MPD_NEWTONDIV_CUTOFF) { + else if (ctx->prec < MPD_NEWTONDIV_CUTOFF || + b->digits < MPD_NEWTONDIV_CUTOFF) { int ret; ret = _mpd_basedivmod(q->data, r->data, a->data, b->data, a->len, b->len); @@ -3574,8 +3606,8 @@ /* Divide decimal by mpd_ssize_t. */ void -mpd_qdiv_ssize(mpd_t *result, const mpd_t *a, mpd_ssize_t b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qdiv_ssize(mpd_t *result, const mpd_t *a, mpd_ssize_t b, + const mpd_context_t *ctx, uint32_t *status) { mpd_t bb; mpd_uint_t bdata[2]; @@ -3589,8 +3621,8 @@ /* Divide decimal by mpd_uint_t. */ void -mpd_qdiv_uint(mpd_t *result, const mpd_t *a, mpd_uint_t b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qdiv_uint(mpd_t *result, const mpd_t *a, mpd_uint_t b, + const mpd_context_t *ctx, uint32_t *status) { mpd_t bb; mpd_uint_t bdata[2]; @@ -3604,16 +3636,16 @@ /* Divide decimal by int32_t. */ void -mpd_qdiv_i32(mpd_t *result, const mpd_t *a, int32_t b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qdiv_i32(mpd_t *result, const mpd_t *a, int32_t b, + const mpd_context_t *ctx, uint32_t *status) { mpd_qdiv_ssize(result, a, b, ctx, status); } /* Divide decimal by uint32_t. */ void -mpd_qdiv_u32(mpd_t *result, const mpd_t *a, uint32_t b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qdiv_u32(mpd_t *result, const mpd_t *a, uint32_t b, + const mpd_context_t *ctx, uint32_t *status) { mpd_qdiv_uint(result, a, b, ctx, status); } @@ -3621,21 +3653,25 @@ #ifdef CONFIG_64 /* Divide decimal by int64_t. */ void -mpd_qdiv_i64(mpd_t *result, const mpd_t *a, int64_t b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qdiv_i64(mpd_t *result, const mpd_t *a, int64_t b, + const mpd_context_t *ctx, uint32_t *status) { mpd_qdiv_ssize(result, a, b, ctx, status); } /* Divide decimal by uint64_t. */ void -mpd_qdiv_u64(mpd_t *result, const mpd_t *a, uint64_t b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qdiv_u64(mpd_t *result, const mpd_t *a, uint64_t b, + const mpd_context_t *ctx, uint32_t *status) { mpd_qdiv_uint(result, a, b, ctx, status); } #endif +#if defined(_MSC_VER) + /* conversion from 'double' to 'mpd_ssize_t', possible loss of data */ + #pragma warning(disable:4244) +#endif /* * Get the number of iterations for the Horner scheme in _mpd_qexp(). */ @@ -3652,7 +3688,8 @@ #ifdef CONFIG_64 #if defined(__x86_64__) && defined(HAVE_80BIT_LONG_DOUBLE) - return ceill((1.435*(long double)prec - 1.182) / log10l((long double)prec/f)); + return ceill((1.435*(long double)prec - 1.182) + / log10l((long double)prec/f)); #else /* prec > floor((1ULL<<53) / 1.435) */ if (prec > 6276793905742851LL) { @@ -3662,6 +3699,9 @@ #endif #else /* CONFIG_32 */ return ceil((1.435*(double)prec - 1.182) / log10((double)prec/f)); + #if defined(_MSC_VER) + #pragma warning(default:4244) + #endif #endif } @@ -3680,7 +3720,8 @@ * ranges. */ static void -_mpd_qexp(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +_mpd_qexp(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) { mpd_context_t workctx; MPD_NEW_STATIC(tmp,0,0,0,0); @@ -3715,7 +3756,8 @@ } else { _settriple(result, MPD_POS, 0, mpd_etiny(ctx)); - *status |= (MPD_Inexact|MPD_Rounded|MPD_Subnormal|MPD_Underflow|MPD_Clamped); + *status |= (MPD_Inexact|MPD_Rounded|MPD_Subnormal| + MPD_Underflow|MPD_Clamped); } return; } @@ -3750,7 +3792,8 @@ } else { t -= MPD_MAX_POW10; - _mpd_qpow_uint(&tmp, &sum, mpd_pow10[MPD_MAX_POW10], MPD_POS, &workctx, status); + _mpd_qpow_uint(&tmp, &sum, mpd_pow10[MPD_MAX_POW10], MPD_POS, + &workctx, status); _mpd_qpow_uint(result, &tmp, mpd_pow10[t], MPD_POS, &workctx, status); } @@ -3764,7 +3807,8 @@ /* exp(a) */ void -mpd_qexp(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +mpd_qexp(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) { mpd_context_t workctx; @@ -3804,7 +3848,8 @@ while (1) { workctx.prec = prec; _mpd_qexp(result, a, &workctx, status); - _ssettriple(&ulp, MPD_POS, 1, result->exp + result->digits-workctx.prec-1); + _ssettriple(&ulp, MPD_POS, 1, + result->exp + result->digits-workctx.prec-1); workctx.prec = ctx->prec; mpd_qadd(&t1, result, &ulp, &workctx, status); @@ -3852,7 +3897,8 @@ } static inline int -ln_schedule_prec(mpd_ssize_t klist[MPD_MAX_PREC_LOG2], mpd_ssize_t maxprec, mpd_ssize_t initprec) +ln_schedule_prec(mpd_ssize_t klist[MPD_MAX_PREC_LOG2], mpd_ssize_t maxprec, + mpd_ssize_t initprec) { mpd_ssize_t k; int i; @@ -3874,7 +3920,9 @@ #if MPD_RDIGITS != 19 #error "mpdecimal.c: MPD_RDIGITS must be 19." #endif -static mpd_uint_t mpd_ln10data[MPD_MINALLOC_MAX] = {179914546843642076, 2302585092994045684}; +static mpd_uint_t mpd_ln10data[MPD_MINALLOC_MAX] = { + 179914546843642076, 2302585092994045684 +}; #else #if MPD_RDIGITS != 9 #error "mpdecimal.c: MPD_RDIGITS must be 9." @@ -4001,7 +4049,8 @@ /* Internal ln() function that does not check for specials or zero. */ static void -_mpd_qln(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +_mpd_qln(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) { mpd_context_t varcontext, maxcontext; mpd_t *z = (mpd_t *) result; @@ -4107,7 +4156,8 @@ /* ln(a) */ void -mpd_qln(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +mpd_qln(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) { mpd_context_t workctx; @@ -4150,7 +4200,8 @@ while (1) { workctx.prec = prec; _mpd_qln(result, a, &workctx, status); - _ssettriple(&ulp, MPD_POS, 1, result->exp + result->digits-workctx.prec-1); + _ssettriple(&ulp, MPD_POS, 1, + result->exp + result->digits-workctx.prec-1); workctx.prec = ctx->prec; mpd_qadd(&t1, result, &ulp, &workctx, status); @@ -4175,7 +4226,8 @@ /* Internal log10() function that does not check for specials, zero, ... */ static void -_mpd_qlog10(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +_mpd_qlog10(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) { mpd_context_t workctx; @@ -4191,7 +4243,8 @@ /* log10(a) */ void -mpd_qlog10(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +mpd_qlog10(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) { mpd_context_t workctx; @@ -4245,7 +4298,8 @@ while (1) { workctx.prec = prec; _mpd_qlog10(result, a, &workctx, status); - _ssettriple(&ulp, MPD_POS, 1, result->exp + result->digits-workctx.prec-1); + _ssettriple(&ulp, MPD_POS, 1, + result->exp + result->digits-workctx.prec-1); workctx.prec = ctx->prec; mpd_qadd(&t1, result, &ulp, &workctx, status); @@ -4455,8 +4509,8 @@ * Springer, 1993, ISBN 354057235X, 9783540572350. */ static void -_karatsuba_rec(mpd_uint_t *c, const mpd_uint_t *a, const mpd_uint_t *b, mpd_uint_t *w, - mpd_size_t la, mpd_size_t lb) +_karatsuba_rec(mpd_uint_t *c, const mpd_uint_t *a, const mpd_uint_t *b, + mpd_uint_t *w, mpd_size_t la, mpd_size_t lb) { mpd_size_t m, lt; @@ -4496,7 +4550,7 @@ /* la >= lb > m */ memcpy(w, a, m * sizeof *w); w[m] = 0; - _mpd_baseaddto(w, a+m, la-m); + _mpd_baseaddto(w, a+m, la-m); memcpy(w+(m+1), b, m * sizeof *w); w[m+1+m] = 0; @@ -4528,7 +4582,9 @@ * Conditions: ulen >= vlen, ulen >= 4 */ mpd_uint_t * -_mpd_kmul(const mpd_uint_t *u, const mpd_uint_t *v, mpd_size_t ulen, mpd_size_t vlen, mpd_size_t *rsize) +_mpd_kmul(const mpd_uint_t *u, const mpd_uint_t *v, + mpd_size_t ulen, mpd_size_t vlen, + mpd_size_t *rsize) { mpd_uint_t *result = NULL, *w = NULL; mpd_size_t m; @@ -4635,7 +4691,9 @@ * a pointer to the result or NULL in case of failure (malloc error). */ mpd_uint_t * -_mpd_fntmul(const mpd_uint_t *u, const mpd_uint_t *v, mpd_size_t ulen, mpd_size_t vlen, mpd_size_t *rsize) +_mpd_fntmul(const mpd_uint_t *u, const mpd_uint_t *v, + mpd_size_t ulen, mpd_size_t vlen, + mpd_size_t *rsize) { mpd_uint_t *c1 = NULL, *c2 = NULL, *c3 = NULL, *vtmp = NULL; mpd_size_t n; @@ -4710,8 +4768,8 @@ * Karatsuba multiplication with FNT/basemul as the base case. */ static int -_karatsuba_rec_fnt(mpd_uint_t *c, const mpd_uint_t *a, const mpd_uint_t *b, mpd_uint_t *w, - mpd_size_t la, mpd_size_t lb) +_karatsuba_rec_fnt(mpd_uint_t *c, const mpd_uint_t *a, const mpd_uint_t *b, + mpd_uint_t *w, mpd_size_t la, mpd_size_t lb) { mpd_size_t m, lt; @@ -4808,7 +4866,9 @@ * (malloc error). Conditions: ulen >= vlen, ulen >= 4. */ mpd_uint_t * -_mpd_kmul_fnt(const mpd_uint_t *u, const mpd_uint_t *v, mpd_size_t ulen, mpd_size_t vlen, mpd_size_t *rsize) +_mpd_kmul_fnt(const mpd_uint_t *u, const mpd_uint_t *v, + mpd_size_t ulen, mpd_size_t vlen, + mpd_size_t *rsize) { mpd_uint_t *result = NULL, *w = NULL; mpd_size_t m; @@ -4986,8 +5046,8 @@ /* Multiply decimal and mpd_ssize_t. */ void -mpd_qmul_ssize(mpd_t *result, const mpd_t *a, mpd_ssize_t b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qmul_ssize(mpd_t *result, const mpd_t *a, mpd_ssize_t b, + const mpd_context_t *ctx, uint32_t *status) { mpd_t bb; mpd_uint_t bdata[2]; @@ -5001,8 +5061,8 @@ /* Multiply decimal and mpd_uint_t. */ void -mpd_qmul_uint(mpd_t *result, const mpd_t *a, mpd_uint_t b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qmul_uint(mpd_t *result, const mpd_t *a, mpd_uint_t b, + const mpd_context_t *ctx, uint32_t *status) { mpd_t bb; mpd_uint_t bdata[2]; @@ -5015,30 +5075,30 @@ } void -mpd_qmul_i32(mpd_t *result, const mpd_t *a, int32_t b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qmul_i32(mpd_t *result, const mpd_t *a, int32_t b, + const mpd_context_t *ctx, uint32_t *status) { mpd_qmul_ssize(result, a, b, ctx, status); } void -mpd_qmul_u32(mpd_t *result, const mpd_t *a, uint32_t b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qmul_u32(mpd_t *result, const mpd_t *a, uint32_t b, + const mpd_context_t *ctx, uint32_t *status) { mpd_qmul_uint(result, a, b, ctx, status); } #ifdef CONFIG_64 void -mpd_qmul_i64(mpd_t *result, const mpd_t *a, int64_t b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qmul_i64(mpd_t *result, const mpd_t *a, int64_t b, + const mpd_context_t *ctx, uint32_t *status) { mpd_qmul_ssize(result, a, b, ctx, status); } void -mpd_qmul_u64(mpd_t *result, const mpd_t *a, uint64_t b, const mpd_context_t *ctx, - uint32_t *status) +mpd_qmul_u64(mpd_t *result, const mpd_t *a, uint64_t b, + const mpd_context_t *ctx, uint32_t *status) { mpd_qmul_uint(result, a, b, ctx, status); } @@ -5046,7 +5106,8 @@ /* Like the minus operator. */ void -mpd_qminus(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +mpd_qminus(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) { if (mpd_isspecial(a)) { if (mpd_qcheck_nan(result, a, ctx, status)) { @@ -5066,7 +5127,8 @@ /* Like the plus operator. */ void -mpd_qplus(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +mpd_qplus(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) { if (mpd_isspecial(a)) { if (mpd_qcheck_nan(result, a, ctx, status)) { @@ -5292,7 +5354,8 @@ * The power function for integer exponents. */ static void -_mpd_qpow_int(mpd_t *result, const mpd_t *base, const mpd_t *exp, uint8_t resultsign, +_mpd_qpow_int(mpd_t *result, const mpd_t *base, const mpd_t *exp, + uint8_t resultsign, const mpd_context_t *ctx, uint32_t *status) { mpd_context_t workctx; @@ -5370,7 +5433,8 @@ * This is an internal function that does not check for specials. */ static int -_qcheck_pow_one(mpd_t *result, const mpd_t *base, const mpd_t *exp, uint8_t resultsign, +_qcheck_pow_one(mpd_t *result, const mpd_t *base, const mpd_t *exp, + uint8_t resultsign, const mpd_context_t *ctx, uint32_t *status) { uint32_t workstatus = 0; @@ -5514,7 +5578,8 @@ /* Detect cases of certain overflow/underflow in the power function. */ static int -_qcheck_pow_bounds(mpd_t *result, const mpd_t *base, const mpd_t *exp, uint8_t resultsign, +_qcheck_pow_bounds(mpd_t *result, const mpd_t *base, const mpd_t *exp, + uint8_t resultsign, const mpd_context_t *ctx, uint32_t *status) { mpd_ssize_t bound; @@ -5621,7 +5686,8 @@ } if (mpd_isinfinite(exp)) { /* power of one */ - if ((cmp = _qcheck_pow_one_inf(result, base, resultsign, ctx, status)) == 0) { + cmp = _qcheck_pow_one_inf(result, base, resultsign, ctx, status); + if (cmp == 0) { return; } else { @@ -5681,7 +5747,8 @@ * Function can fail with MPD_Malloc_error. */ static inline void -_mpd_qpowmod_uint(mpd_t *result, mpd_t *base, mpd_uint_t exp, mpd_t *mod, uint32_t *status) +_mpd_qpowmod_uint(mpd_t *result, mpd_t *base, mpd_uint_t exp, + mpd_t *mod, uint32_t *status) { mpd_context_t maxcontext; @@ -5704,7 +5771,8 @@ /* The powmod function: (base**exp) % mod */ void -mpd_qpowmod(mpd_t *result, const mpd_t *base, const mpd_t *exp, const mpd_t *mod, +mpd_qpowmod(mpd_t *result, const mpd_t *base, const mpd_t *exp, + const mpd_t *mod, const mpd_context_t *ctx, uint32_t *status) { mpd_context_t maxcontext; @@ -5878,7 +5946,8 @@ } } - if (mpd_adjexp(result) > ctx->emax || mpd_adjexp(result) < mpd_etiny(ctx)) { + if (mpd_adjexp(result) > ctx->emax || + mpd_adjexp(result) < mpd_etiny(ctx)) { mpd_seterror(result, MPD_Invalid_operation, status); return; } @@ -5890,7 +5959,8 @@ } void -mpd_qreduce(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +mpd_qreduce(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) { mpd_ssize_t shift, maxexp, maxshift; uint8_t sign_a = mpd_sign(a); @@ -6190,7 +6260,8 @@ /* Schedule the increase in precision for the Newton iteration. */ static inline int -recpr_schedule_prec(mpd_ssize_t klist[MPD_MAX_PREC_LOG2], mpd_ssize_t maxprec, mpd_ssize_t initprec) +recpr_schedule_prec(mpd_ssize_t klist[MPD_MAX_PREC_LOG2], + mpd_ssize_t maxprec, mpd_ssize_t initprec) { mpd_ssize_t k; int i; @@ -6208,8 +6279,8 @@ } /* - * Initial approximation for the reciprocal. Result has MPD_RDIGITS-2 significant - * digits. + * Initial approximation for the reciprocal. Result has MPD_RDIGITS-2 + * significant digits. */ static void _mpd_qreciprocal_approx(mpd_t *z, const mpd_t *v, uint32_t *status) @@ -6237,11 +6308,11 @@ uint32_t *status) { mpd_context_t varcontext, maxcontext; - mpd_t *z = result; /* current approximation */ - mpd_t *v; /* a, normalized to a number between 0.1 and 1 */ - MPD_NEW_SHARED(vtmp, a); /* by default v will share data with a */ - MPD_NEW_STATIC(s,0,0,0,0); /* temporary variable */ - MPD_NEW_STATIC(t,0,0,0,0); /* temporary variable */ + mpd_t *z = result; /* current approximation */ + mpd_t *v; /* a, normalized to a number between 0.1 and 1 */ + MPD_NEW_SHARED(vtmp, a); /* by default v will share data with a */ + MPD_NEW_STATIC(s,0,0,0,0); /* temporary variable */ + MPD_NEW_STATIC(t,0,0,0,0); /* temporary variable */ MPD_NEW_CONST(two,0,0,1,1,1,2); /* const 2 */ mpd_ssize_t klist[MPD_MAX_PREC_LOG2]; mpd_ssize_t adj, maxprec, initprec; @@ -6301,8 +6372,9 @@ /* * Integer division with remainder of the coefficients: coeff(a) / coeff(b). * This function is for large numbers where it is faster to divide by - * multiplying the dividend by the reciprocal of the divisor. The inexact - * result is fixed by a small loop, which should not take more than 2 iterations. + * multiplying the dividend by the reciprocal of the divisor. + * The inexact result is fixed by a small loop, which should not take + * more than 2 iterations. */ static void _mpd_qbarrett_divmod(mpd_t *q, mpd_t *r, const mpd_t *a, const mpd_t *b, @@ -6386,7 +6458,8 @@ } static inline int -invroot_schedule_prec(mpd_ssize_t klist[MPD_MAX_PREC_LOG2], mpd_ssize_t maxprec, mpd_ssize_t initprec) +invroot_schedule_prec(mpd_ssize_t klist[MPD_MAX_PREC_LOG2], + mpd_ssize_t maxprec, mpd_ssize_t initprec) { mpd_ssize_t k; int i; @@ -6451,8 +6524,8 @@ { uint32_t workstatus = 0; mpd_context_t varcontext, maxcontext; - mpd_t *z = result; /* z: current approximation */ - mpd_t *v; /* v: a, normalized to a number between 1 and 100 */ + mpd_t *z = result; /* current approximation */ + mpd_t *v; /* a, normalized to a number between 1 and 100 */ MPD_NEW_SHARED(vtmp, a); /* by default v will share data with a */ MPD_NEW_STATIC(s,0,0,0,0); /* temporary variable */ MPD_NEW_STATIC(t,0,0,0,0); /* temporary variable */ @@ -6608,12 +6681,13 @@ } void -mpd_qsqrt(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, uint32_t *status) +mpd_qsqrt(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx, + uint32_t *status) { uint32_t workstatus = 0; mpd_context_t varcontext; - mpd_t *z = result; /* z: current approximation */ - MPD_NEW_STATIC(v,0,0,0,0); /* v: a, normalized to a number between 1 and 10 */ + mpd_t *z = result; /* current approximation */ + MPD_NEW_STATIC(v,0,0,0,0); /* a, normalized to a number between 1 and 10 */ MPD_NEW_STATIC(vtmp,0,0,0,0); MPD_NEW_STATIC(tmp,0,0,0,0); MPD_NEW_STATIC(aa,0,0,0,0); @@ -6762,7 +6836,7 @@ #else /* CONFIG_32 */ { double y = x / log10(base) + 3; - return (y > SIZE_MAX) ? SIZE_MAX : y; + return (y > SIZE_MAX) ? SIZE_MAX : (size_t)y; } #endif } @@ -6781,7 +6855,7 @@ if (srclen > (1ULL<<53)) { return MPD_SSIZE_MAX; } - x = (double)srclen * (log10(base)/MPD_RDIGITS) + 3; + x = (double)srclen * (log10(base)/MPD_RDIGITS) + 3; #endif #else double x = srclen * (log10(base)/MPD_RDIGITS) + 3; @@ -6878,8 +6952,9 @@ /* - * Converts an integer mpd_t to a multiprecision integer with base <= UINT16_MAX+1. - * The least significant word of the result is rdata[0]. + * Converts an integer mpd_t to a multiprecision integer with + * base <= UINT16_MAX+1. The least significant word of the result + * is rdata[0]. */ size_t mpd_qexport_u16(uint16_t *rdata, size_t rlen, uint32_t rbase, @@ -6925,8 +7000,9 @@ } /* - * Converts an integer mpd_t to a multiprecision integer with base <= UINT32_MAX. - * The least significant word of the result is rdata[0]. + * Converts an integer mpd_t to a multiprecision integer with + * base <= UINT32_MAX. The least significant word of the result + * is rdata[0]. */ size_t mpd_qexport_u32(uint32_t *rdata, size_t rlen, uint32_t rbase, @@ -6970,13 +7046,16 @@ } #ifdef CONFIG_64 - n = _baseconv_to_smaller(rdata, rlen, rbase, tsrc->data, tsrc->len, MPD_RADIX); + n = _baseconv_to_smaller(rdata, rlen, rbase, + tsrc->data, tsrc->len, MPD_RADIX); #else if (rbase <= MPD_RADIX) { - n = _baseconv_to_smaller(rdata, rlen, rbase, tsrc->data, tsrc->len, MPD_RADIX); + n = _baseconv_to_smaller(rdata, rlen, rbase, + tsrc->data, tsrc->len, MPD_RADIX); } else { - _baseconv_to_larger(rdata, (mpd_ssize_t)rlen, rbase, tsrc->data, tsrc->len, MPD_RADIX); + _baseconv_to_larger(rdata, (mpd_ssize_t)rlen, rbase, + tsrc->data, tsrc->len, MPD_RADIX); n = _mpd_real_size(rdata, (mpd_ssize_t)rlen); } #endif @@ -7077,13 +7156,16 @@ } #ifdef CONFIG_64 - _baseconv_to_larger(result->data, rlen, MPD_RADIX, usrc, srclen, srcbase); + _baseconv_to_larger(result->data, rlen, MPD_RADIX, + usrc, srclen, srcbase); #else if (srcbase <= MPD_RADIX) { - _baseconv_to_larger(result->data, rlen, MPD_RADIX, usrc, srclen, srcbase); + _baseconv_to_larger(result->data, rlen, MPD_RADIX, + usrc, srclen, srcbase); } else { - _baseconv_to_smaller(result->data, rlen, MPD_RADIX, usrc, (mpd_ssize_t)srclen, srcbase); + _baseconv_to_smaller(result->data, rlen, MPD_RADIX, + usrc, (mpd_ssize_t)srclen, srcbase); } #endif From python-checkins at python.org Fri Jan 22 17:29:07 2010 From: python-checkins at python.org (stefan.krah) Date: Fri, 22 Jan 2010 16:29:07 -0000 Subject: [Python-checkins] r77693 - python/branches/py3k-cdecimal/Modules/cdecimal/typearith.h Message-ID: Author: stefan.krah Date: Fri Jan 22 17:29:07 2010 New Revision: 77693 Log: Code formatting. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/typearith.h Modified: python/branches/py3k-cdecimal/Modules/cdecimal/typearith.h ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/typearith.h (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/typearith.h Fri Jan 22 17:29:07 2010 @@ -39,7 +39,8 @@ } static inline void -_mpd_div_words(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t hi, mpd_uint_t lo, mpd_uint_t d) +_mpd_div_words(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t hi, mpd_uint_t lo, + mpd_uint_t d) { mpd_uint_t qq, rr; @@ -64,7 +65,8 @@ *lo = _umul128(a, b, hi); } -void _mpd_div_words(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t hi, mpd_uint_t lo, mpd_uint_t d); +void _mpd_div_words(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t hi, mpd_uint_t lo, + mpd_uint_t d); /* END _MSC_VER (amd64) */ #else @@ -133,7 +135,8 @@ } static inline void -_mpd_div_words(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t hi, mpd_uint_t lo, mpd_uint_t d) +_mpd_div_words(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t hi, mpd_uint_t lo, + mpd_uint_t d) { mpd_uuint_t hl; @@ -160,7 +163,8 @@ } static inline void -_mpd_div_words(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t hi, mpd_uint_t lo, mpd_uint_t d) +_mpd_div_words(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t hi, mpd_uint_t lo, + mpd_uint_t d) { mpd_uint_t qq, rr; @@ -193,7 +197,8 @@ } static inline void __cdecl -_mpd_div_words(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t hi, mpd_uint_t lo, mpd_uint_t d) +_mpd_div_words(mpd_uint_t *q, mpd_uint_t *r, mpd_uint_t hi, mpd_uint_t lo, + mpd_uint_t d) { mpd_uint_t qq, rr; From python-checkins at python.org Fri Jan 22 17:30:40 2010 From: python-checkins at python.org (stefan.krah) Date: Fri, 22 Jan 2010 16:30:40 -0000 Subject: [Python-checkins] r77694 - python/branches/py3k-cdecimal/Modules/cdecimal/umodarith.h Message-ID: Author: stefan.krah Date: Fri Jan 22 17:30:40 2010 New Revision: 77694 Log: Code formatting. Modified: python/branches/py3k-cdecimal/Modules/cdecimal/umodarith.h Modified: python/branches/py3k-cdecimal/Modules/cdecimal/umodarith.h ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/umodarith.h (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/umodarith.h Fri Jan 22 17:30:40 2010 @@ -261,7 +261,8 @@ } static inline void -x64_mulmod2(mpd_uint_t *a0, mpd_uint_t b0, mpd_uint_t *a1, mpd_uint_t b1, mpd_uint_t m) +x64_mulmod2(mpd_uint_t *a0, mpd_uint_t b0, mpd_uint_t *a1, mpd_uint_t b1, + mpd_uint_t m) { *a0 = x64_mulmod(*a0, b0, m); *a1 = x64_mulmod(*a1, b1, m); @@ -334,7 +335,8 @@ /* all operands < dmod */ static inline void -ppro_mulmod2c(mpd_uint_t *a0, mpd_uint_t *a1, mpd_uint_t w, double *dmod, uint32_t *dinvmod) +ppro_mulmod2c(mpd_uint_t *a0, mpd_uint_t *a1, mpd_uint_t w, + double *dmod, uint32_t *dinvmod) { asm( @@ -368,7 +370,8 @@ /* all operands < dmod */ static inline void -ppro_mulmod2(mpd_uint_t *a0, mpd_uint_t b0, mpd_uint_t *a1, mpd_uint_t b1, double *dmod, uint32_t *dinvmod) +ppro_mulmod2(mpd_uint_t *a0, mpd_uint_t b0, mpd_uint_t *a1, mpd_uint_t b1, + double *dmod, uint32_t *dinvmod) { asm( @@ -438,7 +441,8 @@ /* all operands < dmod */ static inline mpd_uint_t __cdecl -ppro_mulmod2c(mpd_uint_t *a0, mpd_uint_t *a1, mpd_uint_t w, double *dmod, uint32_t *dinvmod) +ppro_mulmod2c(mpd_uint_t *a0, mpd_uint_t *a1, mpd_uint_t w, + double *dmod, uint32_t *dinvmod) { __asm { mov ecx, dmod @@ -472,7 +476,8 @@ /* all operands < dmod */ static inline void __cdecl -ppro_mulmod2(mpd_uint_t *a0, mpd_uint_t b0, mpd_uint_t *a1, mpd_uint_t b1, double *dmod, uint32_t *dinvmod) +ppro_mulmod2(mpd_uint_t *a0, mpd_uint_t b0, mpd_uint_t *a1, mpd_uint_t b1, + double *dmod, uint32_t *dinvmod) { __asm { mov ecx, dmod From python-checkins at python.org Fri Jan 22 17:32:22 2010 From: python-checkins at python.org (stefan.krah) Date: Fri, 22 Jan 2010 16:32:22 -0000 Subject: [Python-checkins] r77695 - python/branches/py3k-cdecimal/Modules/cdecimal/vccompat.h Message-ID: Author: stefan.krah Date: Fri Jan 22 17:32:21 2010 New Revision: 77695 Log: Fix Visual Studio warning (snprintf also defined in pyerrors.h). Modified: python/branches/py3k-cdecimal/Modules/cdecimal/vccompat.h Modified: python/branches/py3k-cdecimal/Modules/cdecimal/vccompat.h ============================================================================== --- python/branches/py3k-cdecimal/Modules/cdecimal/vccompat.h (original) +++ python/branches/py3k-cdecimal/Modules/cdecimal/vccompat.h Fri Jan 22 17:32:21 2010 @@ -19,6 +19,7 @@ #define srandom srand #undef snprintf #define snprintf sprintf_s + #define HAVE_SNPRINTF #undef strncasecmp #define strncasecmp _strnicmp #undef strcasecmp From python-checkins at python.org Fri Jan 22 17:33:59 2010 From: python-checkins at python.org (stefan.krah) Date: Fri, 22 Jan 2010 16:33:59 -0000 Subject: [Python-checkins] r77696 - python/branches/py3k-cdecimal/Lib/test/decimal_tests.py Message-ID: Author: stefan.krah Date: Fri Jan 22 17:33:59 2010 New Revision: 77696 Log: Disable threading tests for cdecimal. Modified: python/branches/py3k-cdecimal/Lib/test/decimal_tests.py Modified: python/branches/py3k-cdecimal/Lib/test/decimal_tests.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/decimal_tests.py (original) +++ python/branches/py3k-cdecimal/Lib/test/decimal_tests.py Fri Jan 22 17:33:59 2010 @@ -1236,6 +1236,10 @@ # Test the "threading isolation" of a Context. Also test changing # the DefaultContext, which acts as a template for the thread-local # contexts. + + # XXX Must re-enable if compiled with USE_THREAD_LOCAL_STORAGE! + if HAVE_CDECIMAL: return + saveprec = DefaultContext.prec DefaultContext.prec = 24 From python-checkins at python.org Fri Jan 22 17:58:29 2010 From: python-checkins at python.org (ezio.melotti) Date: Fri, 22 Jan 2010 16:58:29 -0000 Subject: [Python-checkins] r77697 - python/trunk/Lib/test/test_pyexpat.py Message-ID: Author: ezio.melotti Date: Fri Jan 22 17:58:28 2010 New Revision: 77697 Log: This should fix the failure introduced in r77680. The error message is now different and it caused the test to fail. The failing test is not present in 2.5 so it is failing only on 2.6 and newer versions. Modified: python/trunk/Lib/test/test_pyexpat.py Modified: python/trunk/Lib/test/test_pyexpat.py ============================================================================== --- python/trunk/Lib/test/test_pyexpat.py (original) +++ python/trunk/Lib/test/test_pyexpat.py Fri Jan 22 17:58:28 2010 @@ -567,7 +567,7 @@ parser.Parse(xml, True) self.fail() except expat.ExpatError as e: - self.assertEquals(str(e), 'no element found: line 2, column 1') + self.assertEquals(str(e), 'unclosed token: line 2, column 0') def test2(self): xml = "\r\n" From python-checkins at python.org Fri Jan 22 18:04:07 2010 From: python-checkins at python.org (mark.dickinson) Date: Fri, 22 Jan 2010 17:04:07 -0000 Subject: [Python-checkins] r77698 - python/trunk/Python/dtoa.c Message-ID: Author: mark.dickinson Date: Fri Jan 22 18:04:07 2010 New Revision: 77698 Log: Issue #7743: Fix a potential incorrect rounding bug in dtoa.c (2nd bug in issue 7743). Modified: python/trunk/Python/dtoa.c Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Fri Jan 22 18:04:07 2010 @@ -235,6 +235,7 @@ #define Bias 1023 #define Emax 1023 #define Emin (-1022) +#define Etiny (-1074) /* smallest denormal is 2**Etiny */ #define Exp_1 0x3ff00000 #define Exp_11 0x3ff00000 #define Ebits 11 @@ -244,7 +245,6 @@ #define Bletch 0x10 #define Bndry_mask 0xfffff #define Bndry_mask1 0xfffff -#define LSB 1 #define Sign_bit 0x80000000 #define Log2P 1 #define Tiny0 0 @@ -1019,6 +1019,76 @@ return dval(&d); } +/* Convert a scaled double to a Bigint plus an exponent. Similar to d2b, + except that it accepts the scale parameter used in _Py_dg_strtod (which + should be either 0 or 2*P), and the normalization for the return value is + different (see below). On input, d should be finite and nonnegative, and d + / 2**scale should be exactly representable as an IEEE 754 double. + + Returns a Bigint b and an integer e such that + + dval(d) / 2**scale = b * 2**e. + + Unlike d2b, b is not necessarily odd: b and e are normalized so + that either 2**(P-1) <= b < 2**P and e >= Etiny, or b < 2**P + and e == Etiny. This applies equally to an input of 0.0: in that + case the return values are b = 0 and e = Etiny. + + The above normalization ensures that for all possible inputs d, + 2**e gives ulp(d/2**scale). + + Returns NULL on failure. +*/ + +static Bigint * +sd2b(U *d, int scale, int *e) +{ + Bigint *b; + + b = Balloc(1); + if (b == NULL) + return NULL; + + /* First construct b and e assuming that scale == 0. */ + b->wds = 2; + b->x[0] = word1(d); + b->x[1] = word0(d) & Frac_mask; + *e = Etiny - 1 + (int)((word0(d) & Exp_mask) >> Exp_shift); + if (*e < Etiny) + *e = Etiny; + else + b->x[1] |= Exp_msk1; + + /* Now adjust for scale, provided that b != 0. */ + if (scale && (b->x[0] || b->x[1])) { + *e -= scale; + if (*e < Etiny) { + scale = Etiny - *e; + *e = Etiny; + /* We can't shift more than P-1 bits without shifting out a 1. */ + assert(0 < scale && scale <= P - 1); + if (scale >= 32) { + /* The bits shifted out should all be zero. */ + assert(b->x[0] == 0); + b->x[0] = b->x[1]; + b->x[1] = 0; + scale -= 32; + } + if (scale) { + /* The bits shifted out should all be zero. */ + assert(b->x[0] << (32 - scale) == 0); + b->x[0] = (b->x[0] >> scale) | (b->x[1] << (32 - scale)); + b->x[1] >>= scale; + } + } + } + /* Ensure b is normalized. */ + if (!b->x[1]) + b->wds = 1; + + return b; +} + /* Convert a double to a Bigint plus an exponent. Return NULL on failure. Given a finite nonzero double d, return an odd Bigint b and exponent *e @@ -1028,7 +1098,6 @@ If d is zero, then b == 0, *e == -1010, *bbits = 0. */ - static Bigint * d2b(U *d, int *e, int *bits) { @@ -1299,45 +1368,29 @@ bigcomp(U *rv, const char *s0, BCinfo *bc) { Bigint *b, *d; - int b2, bbits, d2, dd, i, nd, nd0, odd, p2, p5; + int b2, d2, dd, i, nd, nd0, odd, p2, p5; dd = 0; /* silence compiler warning about possibly unused variable */ nd = bc->nd; nd0 = bc->nd0; p5 = nd + bc->e0; - if (rv->d == 0.) { - /* special case because d2b doesn't handle 0.0 */ - b = i2b(0); - if (b == NULL) - return -1; - p2 = Emin - P + 1; /* = -1074 for IEEE 754 binary64 */ - bbits = 0; - } - else { - b = d2b(rv, &p2, &bbits); - if (b == NULL) - return -1; - p2 -= bc->scale; - } - /* now rv/2^(bc->scale) = b * 2**p2, and b has bbits significant bits */ - - /* Replace (b, p2) by (b << i, p2 - i), with i the largest integer such - that b << i has at most P significant bits and p2 - i >= Emin - P + - 1. */ - i = P - bbits; - if (i > p2 - (Emin - P + 1)) - i = p2 - (Emin - P + 1); - /* increment i so that we shift b by an extra bit; then or-ing a 1 into - the lsb of b gives us rv/2^(bc->scale) + 0.5ulp. */ - b = lshift(b, ++i); + b = sd2b(rv, bc->scale, &p2); if (b == NULL) return -1; + /* record whether the lsb of rv/2^(bc->scale) is odd: in the exact halfway case, this is used for round to even. */ - odd = b->x[0] & 2; + odd = b->x[0] & 1; + + /* left shift b by 1 bit and or a 1 into the least significant bit; + this gives us b * 2**p2 = rv/2^(bc->scale) + 0.5 ulp. */ + b = lshift(b, 1); + if (b == NULL) + return -1; b->x[0] |= 1; + p2--; - p2 -= p5 + i; + p2 -= p5; d = i2b(1); if (d == NULL) { Bfree(b); @@ -1425,8 +1478,8 @@ double _Py_dg_strtod(const char *s00, char **se) { - int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, dsign, e, e1, error; - int esign, i, j, k, lz, nd, nd0, sign; + int bb2, bb5, bbe, bd2, bd5, bs2, c, dsign, e, e1, error; + int esign, i, j, k, lz, nd, nd0, odd, sign; const char *s, *s0, *s1; double aadj, aadj1; U aadj2, adj, rv, rv0; @@ -1786,13 +1839,17 @@ goto failed_malloc; } Bcopy(bd, bd0); - bb = d2b(&rv, &bbe, &bbbits); /* rv = bb * 2^bbe */ + bb = sd2b(&rv, bc.scale, &bbe); /* srv = bb * 2^bbe */ if (bb == NULL) { Bfree(bd); Bfree(bd0); goto failed_malloc; } - /* tdv = bd * 10^e; srv = bb * 2^(bbe - scale) */ + /* Record whether lsb of bb is odd, in case we need this + for the round-to-even step later. */ + odd = bb->x[0] & 1; + + /* tdv = bd * 10**e; srv = bb * 2**bbe */ bs = i2b(1); if (bs == NULL) { Bfree(bb); @@ -1813,44 +1870,28 @@ bb2 += bbe; else bd2 -= bbe; + bs2 = bb2; + bb2++; + bd2++; - /* At this stage e = bd2 - bb2 + bbe = bd5 - bb5, so: - - tdv = bd * 2^(bbe + bd2 - bb2) * 5^(bd5 - bb5) - srv = bb * 2^(bbe - scale). - - Compute j such that - - 0.5 ulp(srv) = 2^(bbe - scale - j) - */ + /* At this stage bd5 - bb5 == e == bd2 - bb2 + bbe, bb2 - bs2 == 1, + and bs == 1, so: - bs2 = bb2; - j = bbe - bc.scale; - i = j + bbbits - 1; /* logb(rv) */ - if (i < Emin) /* denormal */ - j += P - Emin; - else - j = P + 1 - bbbits; + tdv == bd * 10**e = bd * 2**(bbe - bb2 + bd2) * 5**(bd5 - bb5) + srv == bb * 2**bbe = bb * 2**(bbe - bb2 + bb2) + 0.5 ulp(srv) == 2**(bbe-1) = bs * 2**(bbe - bb2 + bs2) - /* Now we have: + It follows that: - M * tdv = bd * 2^(bd2 + scale + j) * 5^bd5 - M * srv = bb * 2^(bb2 + j) * 5^bb5 - M * 0.5 ulp(srv) = 2^bs2 * 5^bb5 + M * tdv = bd * 2**bd2 * 5**bd5 + M * srv = bb * 2**bb2 * 5**bb5 + M * 0.5 ulp(srv) = bs * 2**bs2 * 5**bb5 - where M is the constant (currently) represented by 2^(j + scale + - bb2 - bbe) * 5^bb5. + for some constant M. (Actually, M == 2**(bb2 - bbe) * 5**bb5, but + this fact is not needed below.) */ - bb2 += j; - bd2 += j; - bd2 += bc.scale; - - /* After the adjustments above, tdv, srv and 0.5 ulp(srv) are - proportional to: bd * 2^bd2 * 5^bd5, bb * 2^bb2 * 5^bb5, and - bs * 2^bs2 * 5^bb5, respectively. */ - - /* Remove excess powers of 2. i = min(bb2, bd2, bs2). */ + /* Remove factor of 2**i, where i = min(bb2, bd2, bs2). */ i = bb2 < bd2 ? bb2 : bd2; if (i > bs2) i = bs2; @@ -2028,7 +2069,7 @@ word1(&rv) = 0xffffffff; break; } - if (!(word1(&rv) & LSB)) + if (!odd) break; if (dsign) dval(&rv) += ulp(&rv); From python-checkins at python.org Fri Jan 22 18:17:40 2010 From: python-checkins at python.org (ezio.melotti) Date: Fri, 22 Jan 2010 17:17:40 -0000 Subject: [Python-checkins] r77699 - in python/branches/release26-maint: Lib/test/test_pyexpat.py Message-ID: Author: ezio.melotti Date: Fri Jan 22 18:17:40 2010 New Revision: 77699 Log: Merged revisions 77697 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77697 | ezio.melotti | 2010-01-22 18:58:28 +0200 (Fri, 22 Jan 2010) | 1 line This should fix the failure introduced in r77680. The error message is now different and it caused the test to fail. The failing test is not present in 2.5 so it is failing only on 2.6 and newer versions. ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/test/test_pyexpat.py Modified: python/branches/release26-maint/Lib/test/test_pyexpat.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_pyexpat.py (original) +++ python/branches/release26-maint/Lib/test/test_pyexpat.py Fri Jan 22 18:17:40 2010 @@ -567,7 +567,7 @@ parser.Parse(xml, True) self.fail() except expat.ExpatError as e: - self.assertEquals(str(e), 'no element found: line 2, column 1') + self.assertEquals(str(e), 'unclosed token: line 2, column 0') def test2(self): xml = "\r\n" From python-checkins at python.org Fri Jan 22 18:36:18 2010 From: python-checkins at python.org (ezio.melotti) Date: Fri, 22 Jan 2010 17:36:18 -0000 Subject: [Python-checkins] r77700 - in python/branches/py3k: Lib/test/test_pyexpat.py Message-ID: Author: ezio.melotti Date: Fri Jan 22 18:36:17 2010 New Revision: 77700 Log: Merged revisions 77697 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77697 | ezio.melotti | 2010-01-22 18:58:28 +0200 (Fri, 22 Jan 2010) | 1 line This should fix the failure introduced in r77680. The error message is now different and it caused the test to fail. The failing test is not present in 2.5 so it is failing only on 2.6 and newer versions. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_pyexpat.py Modified: python/branches/py3k/Lib/test/test_pyexpat.py ============================================================================== --- python/branches/py3k/Lib/test/test_pyexpat.py (original) +++ python/branches/py3k/Lib/test/test_pyexpat.py Fri Jan 22 18:36:17 2010 @@ -518,7 +518,7 @@ parser.Parse(xml, True) self.fail() except expat.ExpatError as e: - self.assertEquals(str(e), 'no element found: line 2, column 1') + self.assertEquals(str(e), 'unclosed token: line 2, column 0') def test2(self): xml = "\r\n" From python-checkins at python.org Fri Jan 22 18:52:27 2010 From: python-checkins at python.org (ezio.melotti) Date: Fri, 22 Jan 2010 17:52:27 -0000 Subject: [Python-checkins] r77701 - in python/branches/release31-maint: Lib/test/test_pyexpat.py Message-ID: Author: ezio.melotti Date: Fri Jan 22 18:52:26 2010 New Revision: 77701 Log: Merged revisions 77700 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77700 | ezio.melotti | 2010-01-22 19:36:17 +0200 (Fri, 22 Jan 2010) | 9 lines Merged revisions 77697 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77697 | ezio.melotti | 2010-01-22 18:58:28 +0200 (Fri, 22 Jan 2010) | 1 line This should fix the failure introduced in r77680. The error message is now different and it caused the test to fail. The failing test is not present in 2.5 so it is failing only on 2.6 and newer versions. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/test/test_pyexpat.py Modified: python/branches/release31-maint/Lib/test/test_pyexpat.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_pyexpat.py (original) +++ python/branches/release31-maint/Lib/test/test_pyexpat.py Fri Jan 22 18:52:26 2010 @@ -518,7 +518,7 @@ parser.Parse(xml, True) self.fail() except expat.ExpatError as e: - self.assertEquals(str(e), 'no element found: line 2, column 1') + self.assertEquals(str(e), 'unclosed token: line 2, column 0') def test2(self): xml = "\r\n" From solipsis at pitrou.net Sat Jan 23 00:55:20 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Sat, 23 Jan 2010 00:55:20 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77700): sum=0 Message-ID: <20100122235520.150091770A@ns6635.ovh.net> py3k results for svn r77700 (hg cset 4972a0e2cd8d) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogo1q_4-', '-x', 'test_httpservers'] From python-checkins at python.org Sat Jan 23 09:43:31 2010 From: python-checkins at python.org (georg.brandl) Date: Sat, 23 Jan 2010 08:43:31 -0000 Subject: [Python-checkins] r77702 - python/trunk/Doc/data/refcounts.dat Message-ID: Author: georg.brandl Date: Sat Jan 23 09:43:31 2010 New Revision: 77702 Log: #7762: fix refcount annotation of PyUnicode_Tailmatch(). Modified: python/trunk/Doc/data/refcounts.dat Modified: python/trunk/Doc/data/refcounts.dat ============================================================================== --- python/trunk/Doc/data/refcounts.dat (original) +++ python/trunk/Doc/data/refcounts.dat Sat Jan 23 09:43:31 2010 @@ -1598,7 +1598,7 @@ PyUnicode_Join:PyObject*:separator:0: PyUnicode_Join:PyObject*:seq:0: -PyUnicode_Tailmatch:PyObject*::+1: +PyUnicode_Tailmatch:int::: PyUnicode_Tailmatch:PyObject*:str:0: PyUnicode_Tailmatch:PyObject*:substr:0: PyUnicode_Tailmatch:int:start:: From python-checkins at python.org Sat Jan 23 09:47:54 2010 From: python-checkins at python.org (georg.brandl) Date: Sat, 23 Jan 2010 08:47:54 -0000 Subject: [Python-checkins] r77703 - python/trunk/Doc/library/profile.rst Message-ID: Author: georg.brandl Date: Sat Jan 23 09:47:54 2010 New Revision: 77703 Log: #7725: fix referencing issue. Modified: python/trunk/Doc/library/profile.rst Modified: python/trunk/Doc/library/profile.rst ============================================================================== --- python/trunk/Doc/library/profile.rst (original) +++ python/trunk/Doc/library/profile.rst Sat Jan 23 09:47:54 2010 @@ -124,7 +124,7 @@ cProfile.py [-o output_file] [-s sort_order] -:option:`-s` only applies to standard output (:option:`-o` is not supplied). +``-s`` only applies to standard output (``-o`` is not supplied). Look in the :class:`Stats` documentation for valid sort values. When you wish to review the profile, you should use the methods in the From python-checkins at python.org Sat Jan 23 10:23:15 2010 From: python-checkins at python.org (tarek.ziade) Date: Sat, 23 Jan 2010 09:23:15 -0000 Subject: [Python-checkins] r77704 - in python/trunk: Lib/distutils/ccompiler.py Lib/distutils/command/bdist.py Lib/distutils/command/bdist_dumb.py Lib/distutils/command/bdist_wininst.py Lib/distutils/command/build.py Lib/distutils/command/build_clib.py Lib/distutils/command/build_ext.py Lib/distutils/command/build_scripts.py Lib/distutils/command/config.py Lib/distutils/command/install.py Lib/distutils/core.py Lib/distutils/cygwinccompiler.py Lib/distutils/extension.py Lib/distutils/msvc9compiler.py Lib/distutils/sysconfig.py Lib/distutils/tests/support.py Lib/distutils/tests/test_build.py Lib/distutils/tests/test_build_clib.py Lib/distutils/tests/test_build_ext.py Lib/distutils/tests/test_build_scripts.py Lib/distutils/tests/test_ccompiler.py Lib/distutils/tests/test_cygwinccompiler.py Lib/distutils/tests/test_extension.py Lib/distutils/tests/test_install.py Lib/distutils/tests/test_sysconfig.py Lib/distutils/tests/test_unixccompiler.py Lib/distutils/tests/test_util.py Lib/distutils/unixccompiler.py Lib/distutils/util.py Lib/site.py Lib/sysconfig.py Lib/test/test_site.py Lib/test/test_sysconfig.py Makefile.pre.in setup.py Message-ID: Author: tarek.ziade Date: Sat Jan 23 10:23:15 2010 New Revision: 77704 Log: taking sysconfig out of distutils Added: python/trunk/Lib/sysconfig.py python/trunk/Lib/test/test_sysconfig.py Modified: python/trunk/Lib/distutils/ccompiler.py python/trunk/Lib/distutils/command/bdist.py python/trunk/Lib/distutils/command/bdist_dumb.py python/trunk/Lib/distutils/command/bdist_wininst.py python/trunk/Lib/distutils/command/build.py python/trunk/Lib/distutils/command/build_clib.py python/trunk/Lib/distutils/command/build_ext.py python/trunk/Lib/distutils/command/build_scripts.py python/trunk/Lib/distutils/command/config.py python/trunk/Lib/distutils/command/install.py python/trunk/Lib/distutils/core.py python/trunk/Lib/distutils/cygwinccompiler.py python/trunk/Lib/distutils/extension.py python/trunk/Lib/distutils/msvc9compiler.py python/trunk/Lib/distutils/sysconfig.py python/trunk/Lib/distutils/tests/support.py python/trunk/Lib/distutils/tests/test_build.py python/trunk/Lib/distutils/tests/test_build_clib.py python/trunk/Lib/distutils/tests/test_build_ext.py python/trunk/Lib/distutils/tests/test_build_scripts.py python/trunk/Lib/distutils/tests/test_ccompiler.py python/trunk/Lib/distutils/tests/test_cygwinccompiler.py python/trunk/Lib/distutils/tests/test_extension.py python/trunk/Lib/distutils/tests/test_install.py python/trunk/Lib/distutils/tests/test_sysconfig.py python/trunk/Lib/distutils/tests/test_unixccompiler.py python/trunk/Lib/distutils/tests/test_util.py python/trunk/Lib/distutils/unixccompiler.py python/trunk/Lib/distutils/util.py python/trunk/Lib/site.py python/trunk/Lib/test/test_site.py python/trunk/Makefile.pre.in python/trunk/setup.py Modified: python/trunk/Lib/distutils/ccompiler.py ============================================================================== --- python/trunk/Lib/distutils/ccompiler.py (original) +++ python/trunk/Lib/distutils/ccompiler.py Sat Jan 23 10:23:15 2010 @@ -18,6 +18,58 @@ from distutils.util import split_quoted, execute from distutils import log +_sysconfig = __import__('sysconfig') + +def customize_compiler(compiler): + """Do any platform-specific customization of a CCompiler instance. + + Mainly needed on Unix, so we can plug in the information that + varies across Unices and is stored in Python's Makefile. + """ + if compiler.compiler_type == "unix": + (cc, cxx, opt, cflags, ccshared, ldshared, so_ext, ar, ar_flags) = \ + _sysconfig.get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS', + 'CCSHARED', 'LDSHARED', 'SO', 'AR', + 'ARFLAGS') + + if 'CC' in os.environ: + cc = os.environ['CC'] + if 'CXX' in os.environ: + cxx = os.environ['CXX'] + if 'LDSHARED' in os.environ: + ldshared = os.environ['LDSHARED'] + if 'CPP' in os.environ: + cpp = os.environ['CPP'] + else: + cpp = cc + " -E" # not always + if 'LDFLAGS' in os.environ: + ldshared = ldshared + ' ' + os.environ['LDFLAGS'] + if 'CFLAGS' in os.environ: + cflags = opt + ' ' + os.environ['CFLAGS'] + ldshared = ldshared + ' ' + os.environ['CFLAGS'] + if 'CPPFLAGS' in os.environ: + cpp = cpp + ' ' + os.environ['CPPFLAGS'] + cflags = cflags + ' ' + os.environ['CPPFLAGS'] + ldshared = ldshared + ' ' + os.environ['CPPFLAGS'] + if 'AR' in os.environ: + ar = os.environ['AR'] + if 'ARFLAGS' in os.environ: + archiver = ar + ' ' + os.environ['ARFLAGS'] + else: + archiver = ar + ' ' + ar_flags + + cc_cmd = cc + ' ' + cflags + compiler.set_executables( + preprocessor=cpp, + compiler=cc_cmd, + compiler_so=cc_cmd + ' ' + ccshared, + compiler_cxx=cxx, + linker_so=ldshared, + linker_exe=cc, + archiver=archiver) + + compiler.shared_lib_extension = so_ext + class CCompiler: """Abstract base class to define the interface that must be implemented by real compiler classes. Also has some utility methods used by Modified: python/trunk/Lib/distutils/command/bdist.py ============================================================================== --- python/trunk/Lib/distutils/command/bdist.py (original) +++ python/trunk/Lib/distutils/command/bdist.py Sat Jan 23 10:23:15 2010 @@ -6,10 +6,10 @@ __revision__ = "$Id$" import os +from sysconfig import get_platform from distutils.core import Command from distutils.errors import DistutilsPlatformError, DistutilsOptionError -from distutils.util import get_platform def show_formats(): Modified: python/trunk/Lib/distutils/command/bdist_dumb.py ============================================================================== --- python/trunk/Lib/distutils/command/bdist_dumb.py (original) +++ python/trunk/Lib/distutils/command/bdist_dumb.py Sat Jan 23 10:23:15 2010 @@ -8,11 +8,11 @@ import os +from sysconfig import get_python_version, get_platform + from distutils.core import Command -from distutils.util import get_platform from distutils.dir_util import remove_tree, ensure_relative from distutils.errors import DistutilsPlatformError -from distutils.sysconfig import get_python_version from distutils import log class bdist_dumb (Command): Modified: python/trunk/Lib/distutils/command/bdist_wininst.py ============================================================================== --- python/trunk/Lib/distutils/command/bdist_wininst.py (original) +++ python/trunk/Lib/distutils/command/bdist_wininst.py Sat Jan 23 10:23:15 2010 @@ -9,11 +9,11 @@ import os import string +from sysconfig import get_python_version, get_platform + from distutils.core import Command -from distutils.util import get_platform from distutils.dir_util import remove_tree from distutils.errors import DistutilsOptionError, DistutilsPlatformError -from distutils.sysconfig import get_python_version from distutils import log class bdist_wininst (Command): Modified: python/trunk/Lib/distutils/command/build.py ============================================================================== --- python/trunk/Lib/distutils/command/build.py (original) +++ python/trunk/Lib/distutils/command/build.py Sat Jan 23 10:23:15 2010 @@ -5,9 +5,10 @@ __revision__ = "$Id$" import sys, os +from sysconfig import get_platform + from distutils.core import Command from distutils.errors import DistutilsOptionError -from distutils.util import get_platform def show_compilers(): from distutils.ccompiler import show_compilers Modified: python/trunk/Lib/distutils/command/build_clib.py ============================================================================== --- python/trunk/Lib/distutils/command/build_clib.py (original) +++ python/trunk/Lib/distutils/command/build_clib.py Sat Jan 23 10:23:15 2010 @@ -19,7 +19,7 @@ import os from distutils.core import Command from distutils.errors import DistutilsSetupError -from distutils.sysconfig import customize_compiler +from distutils.ccompiler import customize_compiler from distutils import log def show_compilers(): Modified: python/trunk/Lib/distutils/command/build_ext.py ============================================================================== --- python/trunk/Lib/distutils/command/build_ext.py (original) +++ python/trunk/Lib/distutils/command/build_ext.py Sat Jan 23 10:23:15 2010 @@ -9,13 +9,14 @@ import sys, os, re from warnings import warn +from sysconfig import get_platform + from distutils.core import Command -from distutils.errors import (CCompilerError, DistutilsError, CompileError, - DistutilsSetupError, DistutilsPlatformError) -from distutils.sysconfig import customize_compiler, get_python_version +from distutils.errors import * +from distutils.ccompiler import customize_compiler from distutils.dep_util import newer_group from distutils.extension import Extension -from distutils.util import get_platform + from distutils import log # this keeps compatibility from 2.3 to 2.5 @@ -173,8 +174,7 @@ self.user = None def finalize_options(self): - from distutils import sysconfig - + _sysconfig = __import__('sysconfig') self.set_undefined_options('build', ('build_lib', 'build_lib'), ('build_temp', 'build_temp'), @@ -191,8 +191,8 @@ # Make sure Python's include directories (for Python.h, pyconfig.h, # etc.) are in the include search path. - py_include = sysconfig.get_python_inc() - plat_py_include = sysconfig.get_python_inc(plat_specific=1) + py_include = _sysconfig.get_path('include') + plat_py_include = _sysconfig.get_path('platinclude') if self.include_dirs is None: self.include_dirs = self.distribution.include_dirs or [] if isinstance(self.include_dirs, str): @@ -270,7 +270,7 @@ if sys.executable.startswith(os.path.join(sys.exec_prefix, "bin")): # building third party extensions self.library_dirs.append(os.path.join(sys.prefix, "lib", - "python" + get_python_version(), + "python" + _sysconfig.get_python_version(), "config")) else: # building python standard extensions @@ -278,13 +278,13 @@ # for extensions under Linux or Solaris with a shared Python library, # Python's library directory must be appended to library_dirs - sysconfig.get_config_var('Py_ENABLE_SHARED') + _sysconfig.get_config_var('Py_ENABLE_SHARED') if ((sys.platform.startswith('linux') or sys.platform.startswith('gnu') or sys.platform.startswith('sunos')) - and sysconfig.get_config_var('Py_ENABLE_SHARED')): + and _sysconfig.get_config_var('Py_ENABLE_SHARED')): if sys.executable.startswith(os.path.join(sys.exec_prefix, "bin")): # building third party extensions - self.library_dirs.append(sysconfig.get_config_var('LIBDIR')) + self.library_dirs.append(_sysconfig.get_config_var('LIBDIR')) else: # building python standard extensions self.library_dirs.append('.') @@ -719,13 +719,13 @@ of the file from which it will be loaded (eg. "foo/bar.so", or "foo\bar.pyd"). """ - from distutils.sysconfig import get_config_var + _sysconfig = __import__('sysconfig') ext_path = ext_name.split('.') # OS/2 has an 8 character module (extension) limit :-( if os.name == "os2": ext_path[len(ext_path) - 1] = ext_path[len(ext_path) - 1][:8] # extensions in debug_mode are named 'module_d.pyd' under windows - so_ext = get_config_var('SO') + so_ext = _sysconfig.get_config_var('SO') if os.name == 'nt' and self.debug: return os.path.join(*ext_path) + '_d' + so_ext return os.path.join(*ext_path) + so_ext @@ -785,14 +785,13 @@ # extensions, it is a reference to the original list return ext.libraries + [pythonlib] elif sys.platform[:6] == "atheos": - from distutils import sysconfig - + _sysconfig = __import__('sysconfig') template = "python%d.%d" pythonlib = (template % (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) # Get SHLIBS from Makefile extra = [] - for lib in sysconfig.get_config_var('SHLIBS').split(): + for lib in _sysconfig.get_config_var('SHLIBS').split(): if lib.startswith('-l'): extra.append(lib[2:]) else: @@ -806,8 +805,8 @@ return ext.libraries else: - from distutils import sysconfig - if sysconfig.get_config_var('Py_ENABLE_SHARED'): + _sysconfig = __import__('sysconfig') + if _sysconfig.get_config_var('Py_ENABLE_SHARED'): template = "python%d.%d" pythonlib = (template % (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) Modified: python/trunk/Lib/distutils/command/build_scripts.py ============================================================================== --- python/trunk/Lib/distutils/command/build_scripts.py (original) +++ python/trunk/Lib/distutils/command/build_scripts.py Sat Jan 23 10:23:15 2010 @@ -6,7 +6,6 @@ import os, re from stat import ST_MODE -from distutils import sysconfig from distutils.core import Command from distutils.dep_util import newer from distutils.util import convert_path @@ -57,6 +56,7 @@ ie. starts with "\#!" and contains "python"), then adjust the first line to refer to the current Python interpreter as we copy. """ + _sysconfig = __import__('sysconfig') self.mkpath(self.build_dir) outfiles = [] for script in self.scripts: @@ -94,16 +94,16 @@ self.build_dir) if not self.dry_run: outf = open(outfile, "w") - if not sysconfig.python_build: + if not _sysconfig.is_python_build(): outf.write("#!%s%s\n" % (self.executable, post_interp)) else: outf.write("#!%s%s\n" % (os.path.join( - sysconfig.get_config_var("BINDIR"), - "python%s%s" % (sysconfig.get_config_var("VERSION"), - sysconfig.get_config_var("EXE"))), + _sysconfig.get_config_var("BINDIR"), + "python%s%s" % (_sysconfig.get_config_var("VERSION"), + _sysconfig.get_config_var("EXE"))), post_interp)) outf.writelines(f.readlines()) outf.close() Modified: python/trunk/Lib/distutils/command/config.py ============================================================================== --- python/trunk/Lib/distutils/command/config.py (original) +++ python/trunk/Lib/distutils/command/config.py Sat Jan 23 10:23:15 2010 @@ -16,7 +16,7 @@ from distutils.core import Command from distutils.errors import DistutilsExecError -from distutils.sysconfig import customize_compiler +from distutils.ccompiler import customize_compiler from distutils import log LANG_EXT = {'c': '.c', 'c++': '.cxx'} Modified: python/trunk/Lib/distutils/command/install.py ============================================================================== --- python/trunk/Lib/distutils/command/install.py (original) +++ python/trunk/Lib/distutils/command/install.py Sat Jan 23 10:23:15 2010 @@ -7,115 +7,25 @@ import sys import os +from sysconfig import (get_config_vars, get_platform, get_paths, get_path, + get_config_var) + from distutils import log from distutils.core import Command from distutils.debug import DEBUG -from distutils.sysconfig import get_config_vars from distutils.errors import DistutilsPlatformError from distutils.file_util import write_file -from distutils.util import convert_path, subst_vars, change_root -from distutils.util import get_platform +from distutils.util import convert_path, change_root from distutils.errors import DistutilsOptionError -# this keeps compatibility from 2.3 to 2.5 -if sys.version < "2.6": - USER_BASE = None - USER_SITE = None - HAS_USER_SITE = False -else: - from site import USER_BASE - from site import USER_SITE - HAS_USER_SITE = True - -if sys.version < "2.2": - WINDOWS_SCHEME = { - 'purelib': '$base', - 'platlib': '$base', - 'headers': '$base/Include/$dist_name', - 'scripts': '$base/Scripts', - 'data' : '$base', - } -else: - WINDOWS_SCHEME = { - 'purelib': '$base/Lib/site-packages', - 'platlib': '$base/Lib/site-packages', - 'headers': '$base/Include/$dist_name', - 'scripts': '$base/Scripts', - 'data' : '$base', - } - -INSTALL_SCHEMES = { - 'unix_prefix': { - 'purelib': '$base/lib/python$py_version_short/site-packages', - 'platlib': '$platbase/lib/python$py_version_short/site-packages', - 'headers': '$base/include/python$py_version_short/$dist_name', - 'scripts': '$base/bin', - 'data' : '$base', - }, - 'unix_home': { - 'purelib': '$base/lib/python', - 'platlib': '$base/lib/python', - 'headers': '$base/include/python/$dist_name', - 'scripts': '$base/bin', - 'data' : '$base', - }, - 'nt': WINDOWS_SCHEME, - 'mac': { - 'purelib': '$base/Lib/site-packages', - 'platlib': '$base/Lib/site-packages', - 'headers': '$base/Include/$dist_name', - 'scripts': '$base/Scripts', - 'data' : '$base', - }, - - 'os2': { - 'purelib': '$base/Lib/site-packages', - 'platlib': '$base/Lib/site-packages', - 'headers': '$base/Include/$dist_name', - 'scripts': '$base/Scripts', - 'data' : '$base', - }, - } - -# user site schemes -if HAS_USER_SITE: - INSTALL_SCHEMES['nt_user'] = { - 'purelib': '$usersite', - 'platlib': '$usersite', - 'headers': '$userbase/Python$py_version_nodot/Include/$dist_name', - 'scripts': '$userbase/Scripts', - 'data' : '$userbase', - } - - INSTALL_SCHEMES['unix_user'] = { - 'purelib': '$usersite', - 'platlib': '$usersite', - 'headers': '$userbase/include/python$py_version_short/$dist_name', - 'scripts': '$userbase/bin', - 'data' : '$userbase', - } - - INSTALL_SCHEMES['mac_user'] = { - 'purelib': '$usersite', - 'platlib': '$usersite', - 'headers': '$userbase/$py_version_short/include/$dist_name', - 'scripts': '$userbase/bin', - 'data' : '$userbase', - } - - INSTALL_SCHEMES['os2_home'] = { - 'purelib': '$usersite', - 'platlib': '$usersite', - 'headers': '$userbase/include/python$py_version_short/$dist_name', - 'scripts': '$userbase/bin', - 'data' : '$userbase', - } - -# The keys to an installation scheme; if any new types of files are to be -# installed, be sure to add an entry to every installation scheme above, -# and to SCHEME_KEYS here. -SCHEME_KEYS = ('purelib', 'platlib', 'headers', 'scripts', 'data') - +def _subst_vars(s, local_vars): + try: + return s.format(**local_vars) + except KeyError: + try: + return s.format(**os.environ) + except KeyError, var: + raise AttributeError('{%s}' % var) class install(Command): @@ -182,11 +92,10 @@ boolean_options = ['compile', 'force', 'skip-build'] - if HAS_USER_SITE: - user_options.append(('user', None, - "install in user site-package '%s'" % USER_SITE)) - boolean_options.append('user') - + user_options.append(('user', None, + "install in user site-package '%s'" % \ + get_path('purelib', '%s_user' % os.name))) + boolean_options.append('user') negative_opt = {'no-compile' : 'compile'} @@ -216,8 +125,8 @@ self.install_lib = None # set to either purelib or platlib self.install_scripts = None self.install_data = None - self.install_userbase = USER_BASE - self.install_usersite = USER_SITE + self.install_userbase = get_config_var('userbase') + self.install_usersite = get_path('purelib', '%s_user' % os.name) self.compile = None self.optimize = None @@ -327,7 +236,9 @@ # about needing recursive variable expansion (shudder). py_version = sys.version.split()[0] - (prefix, exec_prefix) = get_config_vars('prefix', 'exec_prefix') + prefix, exec_prefix, srcdir = get_config_vars('prefix', 'exec_prefix', + 'srcdir') + self.config_vars = {'dist_name': self.distribution.get_name(), 'dist_version': self.distribution.get_version(), 'dist_fullname': self.distribution.get_fullname(), @@ -338,12 +249,11 @@ 'prefix': prefix, 'sys_exec_prefix': exec_prefix, 'exec_prefix': exec_prefix, + 'srcdir': srcdir, } - if HAS_USER_SITE: - self.config_vars['userbase'] = self.install_userbase - self.config_vars['usersite'] = self.install_usersite - + self.config_vars['userbase'] = self.install_userbase + self.config_vars['usersite'] = self.install_usersite self.expand_basedirs() self.dump_dirs("post-expand_basedirs()") @@ -447,10 +357,10 @@ raise DistutilsPlatformError( "User base directory is not specified") self.install_base = self.install_platbase = self.install_userbase - self.select_scheme("unix_user") + self.select_scheme("posix_user") elif self.home is not None: self.install_base = self.install_platbase = self.home - self.select_scheme("unix_home") + self.select_scheme("posix_home") else: if self.prefix is None: if self.exec_prefix is not None: @@ -466,7 +376,7 @@ self.install_base = self.prefix self.install_platbase = self.exec_prefix - self.select_scheme("unix_prefix") + self.select_scheme("posix_prefix") def finalize_other(self): """Finalizes options for non-posix platforms""" @@ -478,7 +388,7 @@ self.select_scheme(os.name + "_user") elif self.home is not None: self.install_base = self.install_platbase = self.home - self.select_scheme("unix_home") + self.select_scheme("posix_home") else: if self.prefix is None: self.prefix = os.path.normpath(sys.prefix) @@ -493,11 +403,15 @@ def select_scheme(self, name): """Sets the install directories by applying the install schemes.""" # it's the caller's problem if they supply a bad name! - scheme = INSTALL_SCHEMES[name] - for key in SCHEME_KEYS: + scheme = get_paths(name, expand=False) + for key, value in scheme.items(): + if key == 'platinclude': + key = 'headers' + value = os.path.join(value, self.distribution.get_name()) attrname = 'install_' + key - if getattr(self, attrname) is None: - setattr(self, attrname, scheme[key]) + if hasattr(self, attrname): + if getattr(self, attrname) is None: + setattr(self, attrname, value) def _expand_attrs(self, attrs): for attr in attrs: @@ -505,7 +419,10 @@ if val is not None: if os.name == 'posix' or os.name == 'nt': val = os.path.expanduser(val) - val = subst_vars(val, self.config_vars) + try: + val = _subst_vars(val, self.config_vars) + except: + import pdb; pdb.set_trace() setattr(self, attr, val) def expand_basedirs(self): Modified: python/trunk/Lib/distutils/core.py ============================================================================== --- python/trunk/Lib/distutils/core.py (original) +++ python/trunk/Lib/distutils/core.py Sat Jan 23 10:23:15 2010 @@ -35,7 +35,7 @@ def gen_usage(script_name): script = os.path.basename(script_name) - return USAGE % vars() + return USAGE % {'script': script} # Some mild magic to control the behaviour of 'setup()' from 'run_setup()'. Modified: python/trunk/Lib/distutils/cygwinccompiler.py ============================================================================== --- python/trunk/Lib/distutils/cygwinccompiler.py (original) +++ python/trunk/Lib/distutils/cygwinccompiler.py Sat Jan 23 10:23:15 2010 @@ -337,7 +337,7 @@ # XXX since this function also checks sys.version, it's not strictly a # "pyconfig.h" check -- should probably be renamed... - from distutils import sysconfig + _sysconfig = __import__('sysconfig') # if sys.version contains GCC then python was compiled with GCC, and the # pyconfig.h file should be OK @@ -345,7 +345,7 @@ return CONFIG_H_OK, "sys.version mentions 'GCC'" # let's see if __GNUC__ is mentioned in python.h - fn = sysconfig.get_config_h_filename() + fn = _sysconfig.get_config_h_filename() try: with open(fn) as config_h: if "__GNUC__" in config_h.read(): Modified: python/trunk/Lib/distutils/extension.py ============================================================================== --- python/trunk/Lib/distutils/extension.py (original) +++ python/trunk/Lib/distutils/extension.py Sat Jan 23 10:23:15 2010 @@ -134,14 +134,17 @@ def read_setup_file(filename): """Reads a Setup file and returns Extension instances.""" - from distutils.sysconfig import (parse_makefile, expand_makefile_vars, + warnings.warn('distutils.extensions.read_setup_file is deprecated. ' + 'It will be removed in the next Python release.') + _sysconfig = __import__('sysconfig') + from distutils.sysconfig import (expand_makefile_vars, _variable_rx) from distutils.text_file import TextFile from distutils.util import split_quoted # First pass over the file to gather "VAR = VALUE" assignments. - vars = parse_makefile(filename) + vars = _sysconfig._parse_makefile(filename) # Second pass to gobble up the real content: lines of the form # ... [ ...] [ ...] [ ...] @@ -161,7 +164,10 @@ file.warn("'%s' lines not handled yet" % line) continue - line = expand_makefile_vars(line, vars) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + line = expand_makefile_vars(line, vars) + words = split_quoted(line) # NB. this parses a slightly different syntax than the old Modified: python/trunk/Lib/distutils/msvc9compiler.py ============================================================================== --- python/trunk/Lib/distutils/msvc9compiler.py (original) +++ python/trunk/Lib/distutils/msvc9compiler.py Sat Jan 23 10:23:15 2010 @@ -23,10 +23,10 @@ CompileError, LibError, LinkError) from distutils.ccompiler import CCompiler, gen_lib_options from distutils import log -from distutils.util import get_platform - import _winreg +_sysconfig = __import__('sysconfig') + RegOpenKeyEx = _winreg.OpenKeyEx RegEnumKey = _winreg.EnumKey RegEnumValue = _winreg.EnumValue @@ -327,7 +327,7 @@ # multi-init means we would need to check platform same each time... assert not self.initialized, "don't init multiple times" if plat_name is None: - plat_name = get_platform() + plat_name = _sysconfig.get_platform() # sanity check for platforms to prevent obscure errors later. ok_plats = 'win32', 'win-amd64', 'win-ia64' if plat_name not in ok_plats: @@ -348,12 +348,12 @@ # On AMD64, 'vcvars32.bat amd64' is a native build env; to cross # compile use 'x86' (ie, it runs the x86 compiler directly) # No idea how itanium handles this, if at all. - if plat_name == get_platform() or plat_name == 'win32': + if plat_name == _sysconfig.get_platform() or plat_name == 'win32': # native build or cross-compile to win32 plat_spec = PLAT_TO_VCVARS[plat_name] else: # cross compile from win32 -> some 64bit - plat_spec = PLAT_TO_VCVARS[get_platform()] + '_' + \ + plat_spec = PLAT_TO_VCVARS[_sysconfig.get_platform()] + '_' + \ PLAT_TO_VCVARS[plat_name] vc_env = query_vcvarsall(VERSION, plat_spec) Modified: python/trunk/Lib/distutils/sysconfig.py ============================================================================== --- python/trunk/Lib/distutils/sysconfig.py (original) +++ python/trunk/Lib/distutils/sysconfig.py Sat Jan 23 10:23:15 2010 @@ -7,58 +7,42 @@ Written by: Fred L. Drake, Jr. Email: + +**This module has been moved out of Distutils and will be removed from +Python in the next version (3.2)** """ __revision__ = "$Id$" -import os import re -import sys +from warnings import warn -from distutils.errors import DistutilsPlatformError +# importing sysconfig from Lib +# to avoid this module to shadow it +_sysconfig = __import__('sysconfig') -# These are needed in a couple of spots, so just compute them once. -PREFIX = os.path.normpath(sys.prefix) -EXEC_PREFIX = os.path.normpath(sys.exec_prefix) - -# Path to the base directory of the project. On Windows the binary may -# live in project/PCBuild9. If we're dealing with an x64 Windows build, -# it'll live in project/PCbuild/amd64. -project_base = os.path.dirname(os.path.abspath(sys.executable)) -if os.name == "nt" and "pcbuild" in project_base[-8:].lower(): - project_base = os.path.abspath(os.path.join(project_base, os.path.pardir)) -# PC/VS7.1 -if os.name == "nt" and "\\pc\\v" in project_base[-10:].lower(): - project_base = os.path.abspath(os.path.join(project_base, os.path.pardir, - os.path.pardir)) -# PC/AMD64 -if os.name == "nt" and "\\pcbuild\\amd64" in project_base[-14:].lower(): - project_base = os.path.abspath(os.path.join(project_base, os.path.pardir, - os.path.pardir)) - -# python_build: (Boolean) if true, we're either building Python or -# building an extension with an un-installed Python, so we use -# different (hard-wired) directories. -# Setup.local is available for Makefile builds including VPATH builds, -# Setup.dist is available on Windows -def _python_build(): - for fn in ("Setup.dist", "Setup.local"): - if os.path.isfile(os.path.join(project_base, "Modules", fn)): - return True - return False -python_build = _python_build() +_DEPRECATION_MSG = ("distutils.sysconfig.%s is deprecated. " + "Use the APIs provided by the sysconfig module instead") +def _get_project_base(): + return _sysconfig._PROJECT_BASE -def get_python_version(): - """Return a string containing the major and minor Python version, - leaving off the patchlevel. Sample return values could be '1.5' - or '2.2'. - """ - return sys.version[:3] +project_base = _get_project_base() +class _DeprecatedBool(int): + def __nonzero__(self): + warn(_DEPRECATION_MSG % 'get_python_version', DeprecationWarning) + return super(_DeprecatedBool, self).__nonzero__() + +def _python_build(): + return _DeprecatedBool(_sysconfig.is_python_build()) + +python_build = _python_build() def get_python_inc(plat_specific=0, prefix=None): - """Return the directory containing installed Python header files. + """This function is deprecated. + + Return the directory containing installed Python header files. If 'plat_specific' is false (the default), this is the path to the non-platform-specific header files, i.e. Python.h and so on; @@ -68,39 +52,22 @@ If 'prefix' is supplied, use it instead of sys.prefix or sys.exec_prefix -- i.e., ignore 'plat_specific'. """ - if prefix is None: - prefix = plat_specific and EXEC_PREFIX or PREFIX - if os.name == "posix": - if python_build: - # Assume the executable is in the build directory. The - # pyconfig.h file should be in the same directory. Since - # the build directory may not be the source directory, we - # must use "srcdir" from the makefile to find the "Include" - # directory. - base = os.path.dirname(os.path.abspath(sys.executable)) - if plat_specific: - return base - else: - incdir = os.path.join(get_config_var('srcdir'), 'Include') - return os.path.normpath(incdir) - return os.path.join(prefix, "include", "python" + get_python_version()) - elif os.name == "nt": - return os.path.join(prefix, "include") - elif os.name == "mac": - if plat_specific: - return os.path.join(prefix, "Mac", "Include") - else: - return os.path.join(prefix, "Include") - elif os.name == "os2": - return os.path.join(prefix, "Include") + warn(_DEPRECATION_MSG % 'get_python_inc', DeprecationWarning) + get_path = _sysconfig.get_path + + if prefix is not None: + vars = {'base': prefix} + return get_path('include', vars=vars) + + if not plat_specific: + return get_path('include') else: - raise DistutilsPlatformError( - "I don't know where Python installs its C header files " - "on platform '%s'" % os.name) + return get_path('platinclude') +def get_python_lib(plat_specific=False, standard_lib=False, prefix=None): + """This function is deprecated. -def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): - """Return the directory containing the Python library (standard or + Return the directory containing the Python library (standard or site additions). If 'plat_specific' is true, return the directory containing @@ -113,153 +80,33 @@ If 'prefix' is supplied, use it instead of sys.prefix or sys.exec_prefix -- i.e., ignore 'plat_specific'. """ - if prefix is None: - prefix = plat_specific and EXEC_PREFIX or PREFIX - - if os.name == "posix": - libpython = os.path.join(prefix, - "lib", "python" + get_python_version()) - if standard_lib: - return libpython - else: - return os.path.join(libpython, "site-packages") - - elif os.name == "nt": - if standard_lib: - return os.path.join(prefix, "Lib") + warn(_DEPRECATION_MSG % 'get_python_lib', DeprecationWarning) + vars = {} + get_path = _sysconfig.get_path + if prefix is not None: + if plat_specific: + vars['platbase'] = prefix else: - if get_python_version() < "2.2": - return prefix - else: - return os.path.join(prefix, "Lib", "site-packages") + vars['base'] = prefix - elif os.name == "mac": + if standard_lib: if plat_specific: - if standard_lib: - return os.path.join(prefix, "Lib", "lib-dynload") - else: - return os.path.join(prefix, "Lib", "site-packages") + return get_path('platstdlib', vars=vars) else: - if standard_lib: - return os.path.join(prefix, "Lib") - else: - return os.path.join(prefix, "Lib", "site-packages") - - elif os.name == "os2": - if standard_lib: - return os.path.join(prefix, "Lib") - else: - return os.path.join(prefix, "Lib", "site-packages") - + return get_path('stdlib', vars=vars) else: - raise DistutilsPlatformError( - "I don't know where Python installs its library " - "on platform '%s'" % os.name) - - -def customize_compiler(compiler): - """Do any platform-specific customization of a CCompiler instance. - - Mainly needed on Unix, so we can plug in the information that - varies across Unices and is stored in Python's Makefile. - """ - if compiler.compiler_type == "unix": - (cc, cxx, opt, cflags, ccshared, ldshared, so_ext, ar, ar_flags) = \ - get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS', - 'CCSHARED', 'LDSHARED', 'SO', 'AR', 'ARFLAGS') - - if 'CC' in os.environ: - cc = os.environ['CC'] - if 'CXX' in os.environ: - cxx = os.environ['CXX'] - if 'LDSHARED' in os.environ: - ldshared = os.environ['LDSHARED'] - if 'CPP' in os.environ: - cpp = os.environ['CPP'] - else: - cpp = cc + " -E" # not always - if 'LDFLAGS' in os.environ: - ldshared = ldshared + ' ' + os.environ['LDFLAGS'] - if 'CFLAGS' in os.environ: - cflags = opt + ' ' + os.environ['CFLAGS'] - ldshared = ldshared + ' ' + os.environ['CFLAGS'] - if 'CPPFLAGS' in os.environ: - cpp = cpp + ' ' + os.environ['CPPFLAGS'] - cflags = cflags + ' ' + os.environ['CPPFLAGS'] - ldshared = ldshared + ' ' + os.environ['CPPFLAGS'] - if 'AR' in os.environ: - ar = os.environ['AR'] - if 'ARFLAGS' in os.environ: - archiver = ar + ' ' + os.environ['ARFLAGS'] - else: - archiver = ar + ' ' + ar_flags - - cc_cmd = cc + ' ' + cflags - compiler.set_executables( - preprocessor=cpp, - compiler=cc_cmd, - compiler_so=cc_cmd + ' ' + ccshared, - compiler_cxx=cxx, - linker_so=ldshared, - linker_exe=cc, - archiver=archiver) - - compiler.shared_lib_extension = so_ext - - -def get_config_h_filename(): - """Return full pathname of installed pyconfig.h file.""" - if python_build: - if os.name == "nt": - inc_dir = os.path.join(project_base, "PC") + if plat_specific: + return get_path('platlib', vars=vars) else: - inc_dir = project_base - else: - inc_dir = get_python_inc(plat_specific=1) - if get_python_version() < '2.2': - config_h = 'config.h' - else: - # The name of the config.h file changed in 2.2 - config_h = 'pyconfig.h' - return os.path.join(inc_dir, config_h) - + return get_path('purelib', vars=vars) def get_makefile_filename(): - """Return full pathname of installed Makefile from the Python build.""" - if python_build: - return os.path.join(os.path.dirname(sys.executable), "Makefile") - lib_dir = get_python_lib(plat_specific=1, standard_lib=1) - return os.path.join(lib_dir, "config", "Makefile") + """This function is deprecated. - -def parse_config_h(fp, g=None): - """Parse a config.h-style file. - - A dictionary containing name/value pairs is returned. If an - optional dictionary is passed in as the second argument, it is - used instead of a new dictionary. + Return full pathname of installed Makefile from the Python build. """ - if g is None: - g = {} - define_rx = re.compile("#define ([A-Z][A-Za-z0-9_]+) (.*)\n") - undef_rx = re.compile("/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/\n") - # - while 1: - line = fp.readline() - if not line: - break - m = define_rx.match(line) - if m: - n, v = m.group(1, 2) - try: v = int(v) - except ValueError: pass - g[n] = v - else: - m = undef_rx.match(line) - if m: - g[m.group(1)] = 0 - return g - + warn(_DEPRECATION_MSG % 'get_makefile_filename', DeprecationWarning) + return _sysconfig._get_makefile_filename() # Regexes needed for parsing Makefile (and similar syntaxes, # like old-style Setup files). @@ -268,91 +115,29 @@ _findvar2_rx = re.compile(r"\${([A-Za-z][A-Za-z0-9_]*)}") def parse_makefile(fn, g=None): - """Parse a Makefile-style file. + """This function is deprecated. + + Parse a Makefile-style file. A dictionary containing name/value pairs is returned. If an optional dictionary is passed in as the second argument, it is used instead of a new dictionary. """ - from distutils.text_file import TextFile - fp = TextFile(fn, strip_comments=1, skip_blanks=1, join_lines=1) - - if g is None: - g = {} - done = {} - notdone = {} - - while 1: - line = fp.readline() - if line is None: # eof - break - m = _variable_rx.match(line) - if m: - n, v = m.group(1, 2) - v = v.strip() - # `$$' is a literal `$' in make - tmpv = v.replace('$$', '') - - if "$" in tmpv: - notdone[n] = v - else: - try: - v = int(v) - except ValueError: - # insert literal `$' - done[n] = v.replace('$$', '$') - else: - done[n] = v - - # do variable interpolation here - while notdone: - for name in notdone.keys(): - value = notdone[name] - m = _findvar1_rx.search(value) or _findvar2_rx.search(value) - if m: - n = m.group(1) - found = True - if n in done: - item = str(done[n]) - elif n in notdone: - # get it on a subsequent round - found = False - elif n in os.environ: - # do it like make: fall back to environment - item = os.environ[n] - else: - done[n] = item = "" - if found: - after = value[m.end():] - value = value[:m.start()] + item + after - if "$" in after: - notdone[name] = value - else: - try: value = int(value) - except ValueError: - done[name] = value.strip() - else: - done[name] = value - del notdone[name] - else: - # bogus variable reference; just drop it since we can't deal - del notdone[name] - - fp.close() - - # save the results in the global dictionary - g.update(done) - return g - + warn(_DEPRECATION_MSG % 'parse_makefile', DeprecationWarning) + return _sysconfig._parse_makefile(fn, g) def expand_makefile_vars(s, vars): - """Expand Makefile-style variables -- "${foo}" or "$(foo)" -- in + """This function is deprecated. + + Expand Makefile-style variables -- "${foo}" or "$(foo)" -- in 'string' according to 'vars' (a dictionary mapping variable names to values). Variables not present in 'vars' are silently expanded to the empty string. The variable values in 'vars' should not contain further variable expansions; if 'vars' is the output of 'parse_makefile()', you're fine. Returns a variable-expanded version of 's'. """ + warn('this function will be removed in then next version of Python', + DeprecationWarning) # This algorithm does multiple expansion, so if vars['foo'] contains # "${bar}", it will expand ${foo} to ${bar}, and then expand @@ -368,264 +153,3 @@ else: break return s - - -_config_vars = None - -def _init_posix(): - """Initialize the module as appropriate for POSIX systems.""" - g = {} - # load the installed Makefile: - try: - filename = get_makefile_filename() - parse_makefile(filename, g) - except IOError, msg: - my_msg = "invalid Python installation: unable to open %s" % filename - if hasattr(msg, "strerror"): - my_msg = my_msg + " (%s)" % msg.strerror - - raise DistutilsPlatformError(my_msg) - - # load the installed pyconfig.h: - try: - filename = get_config_h_filename() - parse_config_h(file(filename), g) - except IOError, msg: - my_msg = "invalid Python installation: unable to open %s" % filename - if hasattr(msg, "strerror"): - my_msg = my_msg + " (%s)" % msg.strerror - - raise DistutilsPlatformError(my_msg) - - # On MacOSX we need to check the setting of the environment variable - # MACOSX_DEPLOYMENT_TARGET: configure bases some choices on it so - # it needs to be compatible. - # If it isn't set we set it to the configure-time value - if sys.platform == 'darwin' and 'MACOSX_DEPLOYMENT_TARGET' in g: - cfg_target = g['MACOSX_DEPLOYMENT_TARGET'] - cur_target = os.getenv('MACOSX_DEPLOYMENT_TARGET', '') - if cur_target == '': - cur_target = cfg_target - os.putenv('MACOSX_DEPLOYMENT_TARGET', cfg_target) - elif map(int, cfg_target.split('.')) > map(int, cur_target.split('.')): - my_msg = ('$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configure' - % (cur_target, cfg_target)) - raise DistutilsPlatformError(my_msg) - - # On AIX, there are wrong paths to the linker scripts in the Makefile - # -- these paths are relative to the Python source, but when installed - # the scripts are in another directory. - if python_build: - g['LDSHARED'] = g['BLDSHARED'] - - elif get_python_version() < '2.1': - # The following two branches are for 1.5.2 compatibility. - if sys.platform == 'aix4': # what about AIX 3.x ? - # Linker script is in the config directory, not in Modules as the - # Makefile says. - python_lib = get_python_lib(standard_lib=1) - ld_so_aix = os.path.join(python_lib, 'config', 'ld_so_aix') - python_exp = os.path.join(python_lib, 'config', 'python.exp') - - g['LDSHARED'] = "%s %s -bI:%s" % (ld_so_aix, g['CC'], python_exp) - - elif sys.platform == 'beos': - # Linker script is in the config directory. In the Makefile it is - # relative to the srcdir, which after installation no longer makes - # sense. - python_lib = get_python_lib(standard_lib=1) - linkerscript_path = g['LDSHARED'].split()[0] - linkerscript_name = os.path.basename(linkerscript_path) - linkerscript = os.path.join(python_lib, 'config', - linkerscript_name) - - # XXX this isn't the right place to do this: adding the Python - # library to the link, if needed, should be in the "build_ext" - # command. (It's also needed for non-MS compilers on Windows, and - # it's taken care of for them by the 'build_ext.get_libraries()' - # method.) - g['LDSHARED'] = ("%s -L%s/lib -lpython%s" % - (linkerscript, PREFIX, get_python_version())) - - global _config_vars - _config_vars = g - - -def _init_nt(): - """Initialize the module as appropriate for NT""" - g = {} - # set basic install directories - g['LIBDEST'] = get_python_lib(plat_specific=0, standard_lib=1) - g['BINLIBDEST'] = get_python_lib(plat_specific=1, standard_lib=1) - - # XXX hmmm.. a normal install puts include files here - g['INCLUDEPY'] = get_python_inc(plat_specific=0) - - g['SO'] = '.pyd' - g['EXE'] = ".exe" - g['VERSION'] = get_python_version().replace(".", "") - g['BINDIR'] = os.path.dirname(os.path.abspath(sys.executable)) - - global _config_vars - _config_vars = g - - -def _init_mac(): - """Initialize the module as appropriate for Macintosh systems""" - g = {} - # set basic install directories - g['LIBDEST'] = get_python_lib(plat_specific=0, standard_lib=1) - g['BINLIBDEST'] = get_python_lib(plat_specific=1, standard_lib=1) - - # XXX hmmm.. a normal install puts include files here - g['INCLUDEPY'] = get_python_inc(plat_specific=0) - - import MacOS - if not hasattr(MacOS, 'runtimemodel'): - g['SO'] = '.ppc.slb' - else: - g['SO'] = '.%s.slb' % MacOS.runtimemodel - - # XXX are these used anywhere? - g['install_lib'] = os.path.join(EXEC_PREFIX, "Lib") - g['install_platlib'] = os.path.join(EXEC_PREFIX, "Mac", "Lib") - - # These are used by the extension module build - g['srcdir'] = ':' - global _config_vars - _config_vars = g - - -def _init_os2(): - """Initialize the module as appropriate for OS/2""" - g = {} - # set basic install directories - g['LIBDEST'] = get_python_lib(plat_specific=0, standard_lib=1) - g['BINLIBDEST'] = get_python_lib(plat_specific=1, standard_lib=1) - - # XXX hmmm.. a normal install puts include files here - g['INCLUDEPY'] = get_python_inc(plat_specific=0) - - g['SO'] = '.pyd' - g['EXE'] = ".exe" - - global _config_vars - _config_vars = g - - -def get_config_vars(*args): - """With no arguments, return a dictionary of all configuration - variables relevant for the current platform. Generally this includes - everything needed to build extensions and install both pure modules and - extensions. On Unix, this means every variable defined in Python's - installed Makefile; on Windows and Mac OS it's a much smaller set. - - With arguments, return a list of values that result from looking up - each argument in the configuration variable dictionary. - """ - global _config_vars - if _config_vars is None: - func = globals().get("_init_" + os.name) - if func: - func() - else: - _config_vars = {} - - # Normalized versions of prefix and exec_prefix are handy to have; - # in fact, these are the standard versions used most places in the - # Distutils. - _config_vars['prefix'] = PREFIX - _config_vars['exec_prefix'] = EXEC_PREFIX - - if 'srcdir' not in _config_vars: - _config_vars['srcdir'] = project_base - - # Convert srcdir into an absolute path if it appears necessary. - # Normally it is relative to the build directory. However, during - # testing, for example, we might be running a non-installed python - # from a different directory. - if python_build and os.name == "posix": - base = os.path.dirname(os.path.abspath(sys.executable)) - if (not os.path.isabs(_config_vars['srcdir']) and - base != os.getcwd()): - # srcdir is relative and we are not in the same directory - # as the executable. Assume executable is in the build - # directory and make srcdir absolute. - srcdir = os.path.join(base, _config_vars['srcdir']) - _config_vars['srcdir'] = os.path.normpath(srcdir) - - if sys.platform == 'darwin': - kernel_version = os.uname()[2] # Kernel version (8.4.3) - major_version = int(kernel_version.split('.')[0]) - - if major_version < 8: - # On Mac OS X before 10.4, check if -arch and -isysroot - # are in CFLAGS or LDFLAGS and remove them if they are. - # This is needed when building extensions on a 10.3 system - # using a universal build of python. - for key in ('LDFLAGS', 'BASECFLAGS', 'LDSHARED', - # a number of derived variables. These need to be - # patched up as well. - 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): - flags = _config_vars[key] - flags = re.sub('-arch\s+\w+\s', ' ', flags) - flags = re.sub('-isysroot [^ \t]*', ' ', flags) - _config_vars[key] = flags - - else: - - # Allow the user to override the architecture flags using - # an environment variable. - # NOTE: This name was introduced by Apple in OSX 10.5 and - # is used by several scripting languages distributed with - # that OS release. - - if 'ARCHFLAGS' in os.environ: - arch = os.environ['ARCHFLAGS'] - for key in ('LDFLAGS', 'BASECFLAGS', 'LDSHARED', - # a number of derived variables. These need to be - # patched up as well. - 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): - - flags = _config_vars[key] - flags = re.sub('-arch\s+\w+\s', ' ', flags) - flags = flags + ' ' + arch - _config_vars[key] = flags - - # If we're on OSX 10.5 or later and the user tries to - # compiles an extension using an SDK that is not present - # on the current machine it is better to not use an SDK - # than to fail. - # - # The major usecase for this is users using a Python.org - # binary installer on OSX 10.6: that installer uses - # the 10.4u SDK, but that SDK is not installed by default - # when you install Xcode. - # - m = re.search('-isysroot\s+(\S+)', _config_vars['CFLAGS']) - if m is not None: - sdk = m.group(1) - if not os.path.exists(sdk): - for key in ('LDFLAGS', 'BASECFLAGS', 'LDSHARED', - # a number of derived variables. These need to be - # patched up as well. - 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): - - flags = _config_vars[key] - flags = re.sub('-isysroot\s+\S+(\s|$)', ' ', flags) - _config_vars[key] = flags - - if args: - vals = [] - for name in args: - vals.append(_config_vars.get(name)) - return vals - else: - return _config_vars - -def get_config_var(name): - """Return the value of a single variable using the dictionary - returned by 'get_config_vars()'. Equivalent to - get_config_vars().get(name) - """ - return get_config_vars().get(name) Modified: python/trunk/Lib/distutils/tests/support.py ============================================================================== --- python/trunk/Lib/distutils/tests/support.py (original) +++ python/trunk/Lib/distutils/tests/support.py Sat Jan 23 10:23:15 2010 @@ -3,11 +3,19 @@ import shutil import tempfile from copy import deepcopy +import warnings from distutils import log from distutils.log import DEBUG, INFO, WARN, ERROR, FATAL from distutils.core import Distribution +def capture_warnings(func): + def _capture_warnings(*args, **kw): + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + return func(*args, **kw) + return _capture_warnings + class LoggingSilencer(object): def setUp(self): Modified: python/trunk/Lib/distutils/tests/test_build.py ============================================================================== --- python/trunk/Lib/distutils/tests/test_build.py (original) +++ python/trunk/Lib/distutils/tests/test_build.py Sat Jan 23 10:23:15 2010 @@ -5,7 +5,7 @@ from distutils.command.build import build from distutils.tests import support -from distutils.util import get_platform +from sysconfig import get_platform class BuildTestCase(support.TempdirManager, support.LoggingSilencer, Modified: python/trunk/Lib/distutils/tests/test_build_clib.py ============================================================================== --- python/trunk/Lib/distutils/tests/test_build_clib.py (original) +++ python/trunk/Lib/distutils/tests/test_build_clib.py Sat Jan 23 10:23:15 2010 @@ -120,8 +120,7 @@ # before we run the command, we want to make sure # all commands are present on the system # by creating a compiler and checking its executables - from distutils.ccompiler import new_compiler - from distutils.sysconfig import customize_compiler + from distutils.ccompiler import new_compiler, customize_compiler compiler = new_compiler() customize_compiler(compiler) Modified: python/trunk/Lib/distutils/tests/test_build_ext.py ============================================================================== --- python/trunk/Lib/distutils/tests/test_build_ext.py (original) +++ python/trunk/Lib/distutils/tests/test_build_ext.py Sat Jan 23 10:23:15 2010 @@ -9,7 +9,7 @@ from distutils.core import Extension, Distribution from distutils.command.build_ext import build_ext -from distutils import sysconfig +import sysconfig from distutils.tests import support from distutils.extension import Extension from distutils.errors import (UnknownFileError, DistutilsSetupError, @@ -105,17 +105,17 @@ old = sys.platform sys.platform = 'sunos' # fooling finalize_options - from distutils.sysconfig import _config_vars - old_var = _config_vars.get('Py_ENABLE_SHARED') - _config_vars['Py_ENABLE_SHARED'] = 1 + from sysconfig import _CONFIG_VARS + old_var = _CONFIG_VARS.get('Py_ENABLE_SHARED') + _CONFIG_VARS['Py_ENABLE_SHARED'] = 1 try: cmd.ensure_finalized() finally: sys.platform = old if old_var is None: - del _config_vars['Py_ENABLE_SHARED'] + del _CONFIG_VARS['Py_ENABLE_SHARED'] else: - _config_vars['Py_ENABLE_SHARED'] = old_var + _CONFIG_VARS['Py_ENABLE_SHARED'] = old_var # make sure we get some library dirs under solaris self.assertTrue(len(cmd.library_dirs) > 0) @@ -177,11 +177,10 @@ cmd = build_ext(dist) cmd.finalize_options() - from distutils import sysconfig - py_include = sysconfig.get_python_inc() + py_include = sysconfig.get_path('include') self.assertTrue(py_include in cmd.include_dirs) - plat_py_include = sysconfig.get_python_inc(plat_specific=1) + plat_py_include = sysconfig.get_path('platinclude') self.assertTrue(plat_py_include in cmd.include_dirs) # make sure cmd.libraries is turned into a list Modified: python/trunk/Lib/distutils/tests/test_build_scripts.py ============================================================================== --- python/trunk/Lib/distutils/tests/test_build_scripts.py (original) +++ python/trunk/Lib/distutils/tests/test_build_scripts.py Sat Jan 23 10:23:15 2010 @@ -5,7 +5,7 @@ from distutils.command.build_scripts import build_scripts from distutils.core import Distribution -from distutils import sysconfig +import sysconfig from distutils.tests import support @@ -91,12 +91,12 @@ # --with-suffix=3`, python is compiled okay but the build scripts # failed when writing the name of the executable old = sysconfig.get_config_vars().get('VERSION') - sysconfig._config_vars['VERSION'] = 4 + sysconfig._CONFIG_VARS['VERSION'] = 4 try: cmd.run() finally: if old is not None: - sysconfig._config_vars['VERSION'] = old + sysconfig._CONFIG_VARS['VERSION'] = old built = os.listdir(target) for name in expected: Modified: python/trunk/Lib/distutils/tests/test_ccompiler.py ============================================================================== --- python/trunk/Lib/distutils/tests/test_ccompiler.py (original) +++ python/trunk/Lib/distutils/tests/test_ccompiler.py Sat Jan 23 10:23:15 2010 @@ -3,8 +3,10 @@ import unittest from test.test_support import captured_stdout -from distutils.ccompiler import gen_lib_options, CCompiler +from distutils.ccompiler import (gen_lib_options, CCompiler, + get_default_compiler, customize_compiler) from distutils import debug +from distutils.tests import support class FakeCompiler(object): def library_dir_option(self, dir): @@ -19,7 +21,7 @@ def library_option(self, lib): return "-l" + lib -class CCompilerTestCase(unittest.TestCase): +class CCompilerTestCase(support.EnvironGuard, unittest.TestCase): def test_gen_lib_options(self): compiler = FakeCompiler() @@ -52,6 +54,26 @@ finally: debug.DEBUG = False + def test_customize_compiler(self): + + # not testing if default compiler is not unix + if get_default_compiler() != 'unix': + return + + os.environ['AR'] = 'my_ar' + os.environ['ARFLAGS'] = '-arflags' + + # make sure AR gets caught + class compiler: + compiler_type = 'unix' + + def set_executables(self, **kw): + self.exes = kw + + comp = compiler() + customize_compiler(comp) + self.assertEquals(comp.exes['archiver'], 'my_ar -arflags') + def test_suite(): return unittest.makeSuite(CCompilerTestCase) Modified: python/trunk/Lib/distutils/tests/test_cygwinccompiler.py ============================================================================== --- python/trunk/Lib/distutils/tests/test_cygwinccompiler.py (original) +++ python/trunk/Lib/distutils/tests/test_cygwinccompiler.py Sat Jan 23 10:23:15 2010 @@ -3,6 +3,7 @@ import sys import os import warnings +import sysconfig from test.test_support import check_warnings from test.test_support import captured_stdout @@ -22,13 +23,11 @@ super(CygwinCCompilerTestCase, self).setUp() self.version = sys.version self.python_h = os.path.join(self.mkdtemp(), 'python.h') - from distutils import sysconfig self.old_get_config_h_filename = sysconfig.get_config_h_filename sysconfig.get_config_h_filename = self._get_config_h_filename def tearDown(self): sys.version = self.version - from distutils import sysconfig sysconfig.get_config_h_filename = self.old_get_config_h_filename super(CygwinCCompilerTestCase, self).tearDown() Modified: python/trunk/Lib/distutils/tests/test_extension.py ============================================================================== --- python/trunk/Lib/distutils/tests/test_extension.py (original) +++ python/trunk/Lib/distutils/tests/test_extension.py Sat Jan 23 10:23:15 2010 @@ -5,9 +5,11 @@ from test.test_support import check_warnings from distutils.extension import read_setup_file, Extension +from distutils.tests.support import capture_warnings class ExtensionTestCase(unittest.TestCase): + @capture_warnings def test_read_setup_file(self): # trying to read a Setup file # (sample extracted from the PyGame project) Modified: python/trunk/Lib/distutils/tests/test_install.py ============================================================================== --- python/trunk/Lib/distutils/tests/test_install.py (original) +++ python/trunk/Lib/distutils/tests/test_install.py Sat Jan 23 10:23:15 2010 @@ -5,12 +5,14 @@ import sys import unittest import site +import sysconfig +from sysconfig import (get_scheme_names, _CONFIG_VARS, _INSTALL_SCHEMES, + get_config_var, get_path) from test.test_support import captured_stdout from distutils.command.install import install from distutils.command import install as install_module -from distutils.command.install import INSTALL_SCHEMES from distutils.core import Distribution from distutils.errors import DistutilsOptionError @@ -36,9 +38,23 @@ build_lib=os.path.join(builddir, "lib"), ) - cmd = install(dist) - cmd.home = destination - cmd.ensure_finalized() + + + posix_prefix = _INSTALL_SCHEMES['posix_prefix'] + old_posix_prefix = posix_prefix['platinclude'] + posix_prefix['platinclude'] = \ + '{platbase}/include/python{py_version_short}' + + posix_home = _INSTALL_SCHEMES['posix_home'] + old_posix_home = posix_home['platinclude'] + posix_home['platinclude'] = '{base}/include/python' + try: + cmd = install(dist) + cmd.home = destination + cmd.ensure_finalized() + finally: + posix_home['platinclude'] = old_posix_home + posix_prefix['platinclude'] = old_posix_prefix self.assertEqual(cmd.install_base, destination) self.assertEqual(cmd.install_platbase, destination) @@ -63,18 +79,19 @@ return # preparing the environement for the test - self.old_user_base = site.USER_BASE - self.old_user_site = site.USER_SITE + self.old_user_base = get_config_var('userbase') + self.old_user_site = get_path('purelib', '%s_user' % os.name) self.tmpdir = self.mkdtemp() self.user_base = os.path.join(self.tmpdir, 'B') self.user_site = os.path.join(self.tmpdir, 'S') - site.USER_BASE = self.user_base - site.USER_SITE = self.user_site - install_module.USER_BASE = self.user_base - install_module.USER_SITE = self.user_site + _CONFIG_VARS['userbase'] = self.user_base + scheme = _INSTALL_SCHEMES['%s_user' % os.name] + scheme['purelib'] = self.user_site def _expanduser(path): - return self.tmpdir + if path[0] == '~': + path = os.path.normpath(self.tmpdir) + path[1:] + return path self.old_expand = os.path.expanduser os.path.expanduser = _expanduser @@ -82,19 +99,17 @@ # this is the actual test self._test_user_site() finally: - site.USER_BASE = self.old_user_base - site.USER_SITE = self.old_user_site - install_module.USER_BASE = self.old_user_base - install_module.USER_SITE = self.old_user_site + _CONFIG_VARS['userbase'] = self.old_user_base + scheme['purelib'] = self.old_user_site os.path.expanduser = self.old_expand def _test_user_site(self): - for key in ('nt_user', 'unix_user', 'os2_home'): - self.assertTrue(key in INSTALL_SCHEMES) + schemes = get_scheme_names() + for key in ('nt_user', 'posix_user', 'os2_home'): + self.assertTrue(key in schemes) dist = Distribution({'name': 'xx'}) cmd = install(dist) - # making sure the user option is there options = [name for name, short, lable in cmd.user_options] @@ -185,7 +200,7 @@ with open(cmd.record) as f: self.assertEquals(len(f.readlines()), 1) - def test_debug_mode(self): + def _test_debug_mode(self): # this covers the code called when DEBUG is set old_logs_len = len(self.logs) install_module.DEBUG = True Modified: python/trunk/Lib/distutils/tests/test_sysconfig.py ============================================================================== --- python/trunk/Lib/distutils/tests/test_sysconfig.py (original) +++ python/trunk/Lib/distutils/tests/test_sysconfig.py Sat Jan 23 10:23:15 2010 @@ -4,7 +4,6 @@ import unittest from distutils import sysconfig -from distutils.ccompiler import get_default_compiler from distutils.tests import support from test.test_support import TESTFN @@ -27,10 +26,6 @@ elif os.path.isdir(path): shutil.rmtree(path) - def test_get_config_h_filename(self): - config_h = sysconfig.get_config_h_filename() - self.assertTrue(os.path.isfile(config_h), config_h) - def test_get_python_lib(self): lib_dir = sysconfig.get_python_lib() # XXX doesn't work on Linux when Python was never installed before @@ -38,6 +33,9 @@ # test for pythonxx.lib? self.assertNotEqual(sysconfig.get_python_lib(), sysconfig.get_python_lib(prefix=TESTFN)) + _sysconfig = __import__('sysconfig') + res = sysconfig.get_python_lib(True, True) + self.assertEquals(_sysconfig.get_path('platstdlib'), res) def test_get_python_inc(self): inc_dir = sysconfig.get_python_inc() @@ -48,31 +46,6 @@ python_h = os.path.join(inc_dir, "Python.h") self.assertTrue(os.path.isfile(python_h), python_h) - def test_get_config_vars(self): - cvars = sysconfig.get_config_vars() - self.assertTrue(isinstance(cvars, dict)) - self.assertTrue(cvars) - - def test_customize_compiler(self): - - # not testing if default compiler is not unix - if get_default_compiler() != 'unix': - return - - os.environ['AR'] = 'my_ar' - os.environ['ARFLAGS'] = '-arflags' - - # make sure AR gets caught - class compiler: - compiler_type = 'unix' - - def set_executables(self, **kw): - self.exes = kw - - comp = compiler() - sysconfig.customize_compiler(comp) - self.assertEquals(comp.exes['archiver'], 'my_ar -arflags') - def test_parse_makefile_base(self): self.makefile = test.test_support.TESTFN fd = open(self.makefile, 'w') Modified: python/trunk/Lib/distutils/tests/test_unixccompiler.py ============================================================================== --- python/trunk/Lib/distutils/tests/test_unixccompiler.py (original) +++ python/trunk/Lib/distutils/tests/test_unixccompiler.py Sat Jan 23 10:23:15 2010 @@ -1,8 +1,8 @@ """Tests for distutils.unixccompiler.""" import sys import unittest +import sysconfig -from distutils import sysconfig from distutils.unixccompiler import UnixCCompiler class UnixCCompilerTestCase(unittest.TestCase): Modified: python/trunk/Lib/distutils/tests/test_util.py ============================================================================== --- python/trunk/Lib/distutils/tests/test_util.py (original) +++ python/trunk/Lib/distutils/tests/test_util.py Sat Jan 23 10:23:15 2010 @@ -6,15 +6,14 @@ from StringIO import StringIO import subprocess +from sysconfig import get_config_vars, get_platform from distutils.errors import DistutilsPlatformError, DistutilsByteCompileError -from distutils.util import (get_platform, convert_path, change_root, +from distutils.util import (convert_path, change_root, check_environ, split_quoted, strtobool, rfc822_escape, get_compiler_versions, _find_exe_version, _MAC_OS_X_LD_VERSION, byte_compile) from distutils import util -from distutils.sysconfig import get_config_vars -from distutils import sysconfig from distutils.tests import support from distutils.version import LooseVersion @@ -44,7 +43,7 @@ self.join = os.path.join self.isabs = os.path.isabs self.splitdrive = os.path.splitdrive - self._config_vars = copy(sysconfig._config_vars) + #self._config_vars = copy(sysconfig._config_vars) # patching os.uname if hasattr(os, 'uname'): @@ -78,7 +77,7 @@ os.uname = self.uname else: del os.uname - sysconfig._config_vars = copy(self._config_vars) + #sysconfig._config_vars = copy(self._config_vars) util.find_executable = self.old_find_executable subprocess.Popen = self.old_popen sys.old_stdout = self.old_stdout @@ -91,7 +90,7 @@ def _get_uname(self): return self._uname - def test_get_platform(self): + def _test_get_platform(self): # windows XP, 32bits os.name = 'nt' @@ -119,26 +118,6 @@ sys.version = ('2.5 (r25:51918, Sep 19 2006, 08:49:13) ' '\n[GCC 4.0.1 (Apple Computer, Inc. build 5341)]') sys.platform = 'darwin' - - self._set_uname(('Darwin', 'macziade', '8.11.1', - ('Darwin Kernel Version 8.11.1: ' - 'Wed Oct 10 18:23:28 PDT 2007; ' - 'root:xnu-792.25.20~1/RELEASE_I386'), 'PowerPC')) - os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.3' - - get_config_vars()['CFLAGS'] = ('-fno-strict-aliasing -DNDEBUG -g ' - '-fwrapv -O3 -Wall -Wstrict-prototypes') - - maxint = sys.maxint - try: - sys.maxint = 2147483647 - self.assertEquals(get_platform(), 'macosx-10.3-ppc') - sys.maxint = 9223372036854775807 - self.assertEquals(get_platform(), 'macosx-10.3-ppc64') - finally: - sys.maxint = maxint - - self._set_uname(('Darwin', 'macziade', '8.11.1', ('Darwin Kernel Version 8.11.1: ' 'Wed Oct 10 18:23:28 PDT 2007; ' @@ -148,15 +127,7 @@ get_config_vars()['CFLAGS'] = ('-fno-strict-aliasing -DNDEBUG -g ' '-fwrapv -O3 -Wall -Wstrict-prototypes') - maxint = sys.maxint - try: - sys.maxint = 2147483647 - self.assertEquals(get_platform(), 'macosx-10.3-i386') - sys.maxint = 9223372036854775807 - self.assertEquals(get_platform(), 'macosx-10.3-x86_64') - finally: - sys.maxint = maxint - + self.assertEquals(get_platform(), 'macosx-10.3-i386') # macbook with fat binaries (fat, universal or fat64) os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.4' @@ -201,7 +172,6 @@ self.assertEquals(get_platform(), 'macosx-10.4-%s'%(arch,)) - # linux debian sarge os.name = 'posix' sys.version = ('2.3.5 (#1, Jul 4 2007, 17:28:59) ' Modified: python/trunk/Lib/distutils/unixccompiler.py ============================================================================== --- python/trunk/Lib/distutils/unixccompiler.py (original) +++ python/trunk/Lib/distutils/unixccompiler.py Sat Jan 23 10:23:15 2010 @@ -18,7 +18,6 @@ import os, sys from types import StringType, NoneType -from distutils import sysconfig from distutils.dep_util import newer from distutils.ccompiler import \ CCompiler, gen_preprocess_options, gen_lib_options @@ -26,6 +25,7 @@ DistutilsExecError, CompileError, LibError, LinkError from distutils import log + # XXX Things not currently handled: # * optimization/debug/warning flags; we just use whatever's in Python's # Makefile and live with it. Is this adequate? If not, we might @@ -75,7 +75,7 @@ if 'ARCHFLAGS' in os.environ and not stripArch: # User specified different -arch flags in the environ, - # see also distutils.sysconfig + # see also the sysconfig compiler_so = compiler_so + os.environ['ARCHFLAGS'].split() if stripSysroot: @@ -283,7 +283,9 @@ # this time, there's no way to determine this information from # the configuration data stored in the Python installation, so # we use this hack. - compiler = os.path.basename(sysconfig.get_config_var("CC")) + _sysconfig = __import__('sysconfig') + + compiler = os.path.basename(_sysconfig.get_config_var("CC")) if sys.platform[:6] == "darwin": # MacOSX's linker doesn't understand the -R flag at all return "-L" + dir @@ -298,7 +300,7 @@ # use it anyway. Since distutils has always passed in # -Wl whenever gcc was used in the past it is probably # safest to keep doing so. - if sysconfig.get_config_var("GNULD") == "yes": + if _sysconfig.get_config_var("GNULD") == "yes": # GNU ld needs an extra option to get a RUNPATH # instead of just an RPATH. return "-Wl,--enable-new-dtags,-R" + dir Modified: python/trunk/Lib/distutils/util.py ============================================================================== --- python/trunk/Lib/distutils/util.py (original) +++ python/trunk/Lib/distutils/util.py Sat Jan 23 10:23:15 2010 @@ -15,173 +15,7 @@ from distutils.version import LooseVersion from distutils.errors import DistutilsByteCompileError -def get_platform(): - """Return a string that identifies the current platform. - - This is used mainly to distinguish platform-specific build directories and - platform-specific built distributions. Typically includes the OS name - and version and the architecture (as supplied by 'os.uname()'), - although the exact information included depends on the OS; eg. for IRIX - the architecture isn't particularly important (IRIX only runs on SGI - hardware), but for Linux the kernel version isn't particularly - important. - - Examples of returned values: - linux-i586 - linux-alpha (?) - solaris-2.6-sun4u - irix-5.3 - irix64-6.2 - - Windows will return one of: - win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) - win-ia64 (64bit Windows on Itanium) - win32 (all others - specifically, sys.platform is returned) - - For other non-POSIX platforms, currently just returns 'sys.platform'. - """ - if os.name == 'nt': - # sniff sys.version for architecture. - prefix = " bit (" - i = sys.version.find(prefix) - if i == -1: - return sys.platform - j = sys.version.find(")", i) - look = sys.version[i+len(prefix):j].lower() - if look == 'amd64': - return 'win-amd64' - if look == 'itanium': - return 'win-ia64' - return sys.platform - - if os.name != "posix" or not hasattr(os, 'uname'): - # XXX what about the architecture? NT is Intel or Alpha, - # Mac OS is M68k or PPC, etc. - return sys.platform - - # Try to distinguish various flavours of Unix - - (osname, host, release, version, machine) = os.uname() - - # Convert the OS name to lowercase, remove '/' characters - # (to accommodate BSD/OS), and translate spaces (for "Power Macintosh") - osname = osname.lower().replace('/', '') - machine = machine.replace(' ', '_') - machine = machine.replace('/', '-') - - if osname[:5] == "linux": - # At least on Linux/Intel, 'machine' is the processor -- - # i386, etc. - # XXX what about Alpha, SPARC, etc? - return "%s-%s" % (osname, machine) - elif osname[:5] == "sunos": - if release[0] >= "5": # SunOS 5 == Solaris 2 - osname = "solaris" - release = "%d.%s" % (int(release[0]) - 3, release[2:]) - # fall through to standard osname-release-machine representation - elif osname[:4] == "irix": # could be "irix64"! - return "%s-%s" % (osname, release) - elif osname[:3] == "aix": - return "%s-%s.%s" % (osname, version, release) - elif osname[:6] == "cygwin": - osname = "cygwin" - rel_re = re.compile (r'[\d.]+') - m = rel_re.match(release) - if m: - release = m.group() - elif osname[:6] == "darwin": - # - # For our purposes, we'll assume that the system version from - # distutils' perspective is what MACOSX_DEPLOYMENT_TARGET is set - # to. This makes the compatibility story a bit more sane because the - # machine is going to compile and link as if it were - # MACOSX_DEPLOYMENT_TARGET. - from distutils.sysconfig import get_config_vars - cfgvars = get_config_vars() - - macver = os.environ.get('MACOSX_DEPLOYMENT_TARGET') - if not macver: - macver = cfgvars.get('MACOSX_DEPLOYMENT_TARGET') - - if 1: - # Always calculate the release of the running machine, - # needed to determine if we can build fat binaries or not. - - macrelease = macver - # Get the system version. Reading this plist is a documented - # way to get the system version (see the documentation for - # the Gestalt Manager) - try: - f = open('/System/Library/CoreServices/SystemVersion.plist') - except IOError: - # We're on a plain darwin box, fall back to the default - # behaviour. - pass - else: - m = re.search( - r'ProductUserVisibleVersion\s*' + - r'(.*?)', f.read()) - f.close() - if m is not None: - macrelease = '.'.join(m.group(1).split('.')[:2]) - # else: fall back to the default behaviour - - if not macver: - macver = macrelease - - if macver: - from distutils.sysconfig import get_config_vars - release = macver - osname = "macosx" - - if (macrelease + '.') >= '10.4.' and \ - '-arch' in get_config_vars().get('CFLAGS', '').strip(): - # The universal build will build fat binaries, but not on - # systems before 10.4 - # - # Try to detect 4-way universal builds, those have machine-type - # 'universal' instead of 'fat'. - - machine = 'fat' - cflags = get_config_vars().get('CFLAGS') - - archs = re.findall('-arch\s+(\S+)', cflags) - archs.sort() - archs = tuple(archs) - - if len(archs) == 1: - machine = archs[0] - elif archs == ('i386', 'ppc'): - machine = 'fat' - elif archs == ('i386', 'x86_64'): - machine = 'intel' - elif archs == ('i386', 'ppc', 'x86_64'): - machine = 'fat3' - elif archs == ('ppc64', 'x86_64'): - machine = 'fat64' - elif archs == ('i386', 'ppc', 'ppc64', 'x86_64'): - machine = 'universal' - else: - raise ValueError( - "Don't know machine value for archs=%r"%(archs,)) - - elif machine == 'i386': - # On OSX the machine type returned by uname is always the - # 32-bit variant, even if the executable architecture is - # the 64-bit variant - if sys.maxint >= 2**32: - machine = 'x86_64' - - elif machine in ('PowerPC', 'Power_Macintosh'): - # Pick a sane name for the PPC architecture. - machine = 'ppc' - - # See 'i386' case - if sys.maxint >= 2**32: - machine = 'ppc64' - - return "%s-%s-%s" % (osname, release, machine) - +_sysconfig = __import__('sysconfig') def convert_path(pathname): """Return 'pathname' as a name that will work on the native filesystem. @@ -269,7 +103,7 @@ os.environ['HOME'] = pwd.getpwuid(os.getuid())[5] if 'PLAT' not in os.environ: - os.environ['PLAT'] = get_platform() + os.environ['PLAT'] = _sysconfig.get_platform() _environ_checked = 1 Modified: python/trunk/Lib/site.py ============================================================================== --- python/trunk/Lib/site.py (original) +++ python/trunk/Lib/site.py Sat Jan 23 10:23:15 2010 @@ -114,7 +114,7 @@ def addbuilddir(): """Append ./build/lib. in case we're running in the build dir (especially for Guido :-)""" - from distutils.util import get_platform + from sysconfig import get_platform s = "build/lib.%s-%.3s" % (get_platform(), sys.version) if hasattr(sys, 'gettotalrefcount'): s += '-pydebug' @@ -225,19 +225,8 @@ global USER_BASE if USER_BASE is not None: return USER_BASE - - env_base = os.environ.get("PYTHONUSERBASE", None) - - def joinuser(*args): - return os.path.expanduser(os.path.join(*args)) - - # what about 'os2emx', 'riscos' ? - if os.name == "nt": - base = os.environ.get("APPDATA") or "~" - USER_BASE = env_base if env_base else joinuser(base, "Python") - else: - USER_BASE = env_base if env_base else joinuser("~", ".local") - + from sysconfig import get_config_var + USER_BASE = get_config_var('userbase') return USER_BASE def getusersitepackages(): @@ -252,13 +241,9 @@ if USER_SITE is not None: return USER_SITE - if os.name == "nt": - USER_SITE = os.path.join(user_base, "Python" + sys.version[0] + - sys.version[2], "site-packages") - else: - USER_SITE = os.path.join(user_base, "lib", "python" + sys.version[:3], - "site-packages") - + from sysconfig import get_path + import os + USER_SITE = get_path('purelib', '%s_user' % os.name) return USER_SITE def addusersitepackages(known_paths): Added: python/trunk/Lib/sysconfig.py ============================================================================== --- (empty file) +++ python/trunk/Lib/sysconfig.py Sat Jan 23 10:23:15 2010 @@ -0,0 +1,654 @@ +"""Provide access to Python's configuration information. + +""" +import sys +import os +from os.path import pardir, abspath + +_INSTALL_SCHEMES = { + 'posix_prefix': { + 'stdlib': '{base}/lib/python{py_version_short}', + 'platstdlib': '{platbase}/lib/python{py_version_short}', + 'purelib': '{base}/lib/python{py_version_short}/site-packages', + 'platlib': '{platbase}/lib/python{py_version_short}/site-packages', + 'include': '{base}/include/python{py_version_short}', + 'platinclude': '{platbase}/include/python{py_version_short}', + 'scripts': '{base}/bin', + 'data': '{base}', + }, + 'posix_home': { + 'stdlib': '{base}/lib/python', + 'platstdlib': '{base}/lib/python', + 'purelib': '{base}/lib/python', + 'platlib': '{base}/lib/python', + 'include': '{base}/include/python', + 'platinclude': '{base}/include/python', + 'scripts': '{base}/bin', + 'data' : '{base}', + }, + 'nt': { + 'stdlib': '{base}/Lib', + 'platstdlib': '{base}/Lib', + 'purelib': '{base}/Lib/site-packages', + 'platlib': '{base}/Lib/site-packages', + 'include': '{base}/Include', + 'platinclude': '{base}/Include', + 'scripts': '{base}/Scripts', + 'data' : '{base}', + }, + 'os2': { + 'stdlib': '{base}/Lib', + 'platstdlib': '{base}/Lib', + 'purelib': '{base}/Lib/site-packages', + 'platlib': '{base}/Lib/site-packages', + 'include': '{base}/Include', + 'platinclude': '{base}/Include', + 'scripts': '{base}/Scripts', + 'data' : '{base}', + }, + 'os2_home': { + 'stdlib': '{userbase}/lib/python/{py_version_short}', + 'platstdlib': '{userbase}/lib/python/{py_version_short}', + 'purelib': '{userbase}/lib/python/{py_version_short}/site-packages', + 'platlib': '{userbase}/lib/python/{py_version_short}/site-packages', + 'include': '{userbase}/include/python{py_version_short}', + 'scripts': '{userbase}/bin', + 'data' : '{userbase}', + }, + 'nt_user': { + 'stdlib': '{userbase}/Python{py_version_nodot}', + 'platstdlib': '{userbase}/Python{py_version_nodot}', + 'purelib': '{userbase}/Python{py_version_nodot}/site-packages', + 'platlib': '{userbase}/Python{py_version_nodot}/site-packages', + 'include': '{userbase}/Python{py_version_nodot}/Include', + 'scripts': '{userbase}/Scripts', + 'data' : '{userbase}', + }, + 'posix_user': { + 'stdlib': '{userbase}/lib/python/{py_version_short}', + 'platstdlib': '{userbase}/lib/python/{py_version_short}', + 'purelib': '{userbase}/lib/python/{py_version_short}/site-packages', + 'platlib': '{userbase}/lib/python/{py_version_short}/site-packages', + 'include': '{userbase}/include/python{py_version_short}', + 'scripts': '{userbase}/bin', + 'data' : '{userbase}', + }, + } + +_SCHEME_KEYS = ('stdlib', 'platstdlib', 'purelib', 'platlib', 'include', + 'scripts', 'data') +_PY_VERSION = sys.version.split()[0] +_PY_VERSION_SHORT = sys.version[:3] +_PY_VERSION_SHORT_NO_DOT = _PY_VERSION[0] + _PY_VERSION[2] +_PREFIX = os.path.normpath(sys.prefix) +_EXEC_PREFIX = os.path.normpath(sys.exec_prefix) +_CONFIG_VARS = None +_USER_BASE = None +_PROJECT_BASE = os.path.dirname(abspath(sys.executable)) + +if os.name == "nt" and "pcbuild" in _PROJECT_BASE[-8:].lower(): + _PROJECT_BASE = abspath(os.path.join(_PROJECT_BASE, pardir)) +# PC/VS7.1 +if os.name == "nt" and "\\pc\\v" in _PROJECT_BASE[-10:].lower(): + _PROJECT_BASE = abspath(os.path.join(_PROJECT_BASE, pardir, pardir)) +# PC/AMD64 +if os.name == "nt" and "\\pcbuild\\amd64" in _PROJECT_BASE[-14:].lower(): + _PROJECT_BASE = abspath(os.path.join(_PROJECT_BASE, pardir, pardir)) + +def is_python_build(): + for fn in ("Setup.dist", "Setup.local"): + if os.path.isfile(os.path.join(_PROJECT_BASE, "Modules", fn)): + return True + return False + +_PYTHON_BUILD = is_python_build() + +if _PYTHON_BUILD: + for scheme in ('posix_prefix', 'posix_home'): + _INSTALL_SCHEMES[scheme]['include'] = '{projectbase}/Include' + _INSTALL_SCHEMES[scheme]['platinclude'] = '{srcdir}' + +def _subst_vars(s, local_vars): + try: + return s.format(**local_vars) + except KeyError: + try: + return s.format(**os.environ) + except KeyError, var: + raise AttributeError('{%s}' % var) + +def _extend_dict(target_dict, other_dict): + target_keys = target_dict.keys() + for key, value in other_dict.items(): + if key in target_keys: + continue + target_dict[key] = value + +def _expand_vars(scheme, vars): + res = {} + if vars is None: + vars = {} + _extend_dict(vars, get_config_vars()) + + for key, value in _INSTALL_SCHEMES[scheme].items(): + if os.name in ('posix', 'nt'): + value = os.path.expanduser(value) + res[key] = os.path.normpath(_subst_vars(value, vars)) + return res + +def _get_default_scheme(): + if os.name == 'posix': + # the default scheme for posix is posix_prefix + return 'posix_prefix' + return os.name + +def _getuserbase(): + env_base = os.environ.get("PYTHONUSERBASE", None) + def joinuser(*args): + return os.path.expanduser(os.path.join(*args)) + + # what about 'os2emx', 'riscos' ? + if os.name == "nt": + base = os.environ.get("APPDATA") or "~" + return env_base if env_base else joinuser(base, "Python") + + return env_base if env_base else joinuser("~", ".local") + + +def _parse_makefile(filename, vars=None): + """Parse a Makefile-style file. + + A dictionary containing name/value pairs is returned. If an + optional dictionary is passed in as the second argument, it is + used instead of a new dictionary. + """ + import re + # Regexes needed for parsing Makefile (and similar syntaxes, + # like old-style Setup files). + _variable_rx = re.compile("([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)") + _findvar1_rx = re.compile(r"\$\(([A-Za-z][A-Za-z0-9_]*)\)") + _findvar2_rx = re.compile(r"\${([A-Za-z][A-Za-z0-9_]*)}") + + if vars is None: + vars = {} + done = {} + notdone = {} + + with open(filename) as f: + lines = f.readlines() + + for line in lines: + if line.startswith('#') or line.strip() == '': + continue + m = _variable_rx.match(line) + if m: + n, v = m.group(1, 2) + v = v.strip() + # `$$' is a literal `$' in make + tmpv = v.replace('$$', '') + + if "$" in tmpv: + notdone[n] = v + else: + try: + v = int(v) + except ValueError: + # insert literal `$' + done[n] = v.replace('$$', '$') + else: + done[n] = v + + # do variable interpolation here + while notdone: + for name in notdone.keys(): + value = notdone[name] + m = _findvar1_rx.search(value) or _findvar2_rx.search(value) + if m: + n = m.group(1) + found = True + if n in done: + item = str(done[n]) + elif n in notdone: + # get it on a subsequent round + found = False + elif n in os.environ: + # do it like make: fall back to environment + item = os.environ[n] + else: + done[n] = item = "" + if found: + after = value[m.end():] + value = value[:m.start()] + item + after + if "$" in after: + notdone[name] = value + else: + try: value = int(value) + except ValueError: + done[name] = value.strip() + else: + done[name] = value + del notdone[name] + else: + # bogus variable reference; just drop it since we can't deal + del notdone[name] + # save the results in the global dictionary + vars.update(done) + return vars + +def parse_config_h(fp, vars=None): + """Parse a config.h-style file. + + A dictionary containing name/value pairs is returned. If an + optional dictionary is passed in as the second argument, it is + used instead of a new dictionary. + """ + import re + if vars is None: + vars = {} + define_rx = re.compile("#define ([A-Z][A-Za-z0-9_]+) (.*)\n") + undef_rx = re.compile("/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/\n") + + while True: + line = fp.readline() + if not line: + break + m = define_rx.match(line) + if m: + n, v = m.group(1, 2) + try: v = int(v) + except ValueError: pass + vars[n] = v + else: + m = undef_rx.match(line) + if m: + vars[m.group(1)] = 0 + return vars + +def _get_makefile_filename(): + if _PYTHON_BUILD: + return os.path.join(_PROJECT_BASE, "Makefile") + return os.path.join(get_path('stdlib'), "config", "Makefile") + +def get_config_h_filename(): + if _PYTHON_BUILD: + if os.name == "nt": + inc_dir = os.path.join(_PROJECT_BASE, "PC") + else: + inc_dir = _PROJECT_BASE + else: + inc_dir = get_path('platinclude') + return os.path.join(inc_dir, 'pyconfig.h') + +def _init_posix(vars): + """Initialize the module as appropriate for POSIX systems.""" + # load the installed Makefile: + makefile = _get_makefile_filename() + try: + _parse_makefile(makefile, vars) + except IOError, e: + msg = "invalid Python installation: unable to open %s" % makefile + if hasattr(e, "strerror"): + msg = msg + " (%s)" % e.strerror + raise IOError(msg) + + # load the installed pyconfig.h: + config_h = get_config_h_filename() + try: + parse_config_h(open(config_h), vars) + except IOError, e: + msg = "invalid Python installation: unable to open %s" % config_h + if hasattr(e, "strerror"): + msg = msg + " (%s)" % e.strerror + raise IOError(msg) + + # On MacOSX we need to check the setting of the environment variable + # MACOSX_DEPLOYMENT_TARGET: configure bases some choices on it so + # it needs to be compatible. + # If it isn't set we set it to the configure-time value + if sys.platform == 'darwin' and 'MACOSX_DEPLOYMENT_TARGET' in vars: + cfg_target = vars['MACOSX_DEPLOYMENT_TARGET'] + cur_target = os.getenv('MACOSX_DEPLOYMENT_TARGET', '') + if cur_target == '': + cur_target = cfg_target + os.putenv('MACOSX_DEPLOYMENT_TARGET', cfg_target) + elif map(int, cfg_target.split('.')) > map(int, cur_target.split('.')): + msg = ('$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" ' + 'during configure' % (cur_target, cfg_target)) + raise IOError(msg) + + # On AIX, there are wrong paths to the linker scripts in the Makefile + # -- these paths are relative to the Python source, but when installed + # the scripts are in another directory. + if _PYTHON_BUILD: + vars['LDSHARED'] = vars['BLDSHARED'] + +def _init_non_posix(vars): + """Initialize the module as appropriate for NT""" + # set basic install directories + vars['LIBDEST'] = get_path('stdlib') + vars['BINLIBDEST'] = get_path('platstdlib') + vars['INCLUDEPY'] = get_path('include') + vars['SO'] = '.pyd' + vars['EXE'] = '.exe' + vars['VERSION'] = _PY_VERSION_SHORT_NO_DOT + vars['BINDIR'] = os.path.dirname(os.path.abspath(sys.executable)) + +# +# public APIs +# + +def get_scheme_names(): + return _INSTALL_SCHEMES.keys() + +def get_path_names(): + return _SCHEME_KEYS + +def get_paths(scheme=_get_default_scheme(), vars=None, expand=True): + """Returns a mapping containing an install scheme. + + ``scheme`` is the install scheme name. If not provided, it will + return the default scheme for the current platform. + """ + if expand: + return _expand_vars(scheme, vars) + else: + return _INSTALL_SCHEMES[scheme] + +def get_path(name, scheme=_get_default_scheme(), vars=None, expand=True): + """Returns a path corresponding to the scheme. + + ``scheme`` is the install scheme name. + """ + return get_paths(scheme, vars, expand)[name] + +def get_config_vars(*args): + """With no arguments, return a dictionary of all configuration + variables relevant for the current platform. + + On Unix, this means every variable defined in Python's installed Makefile; + On Windows and Mac OS it's a much smaller set. + + With arguments, return a list of values that result from looking up + each argument in the configuration variable dictionary. + """ + import re + global _CONFIG_VARS + if _CONFIG_VARS is None: + _CONFIG_VARS = {} + # Normalized versions of prefix and exec_prefix are handy to have; + # in fact, these are the standard versions used most places in the + # Distutils. + _CONFIG_VARS['prefix'] = _PREFIX + _CONFIG_VARS['exec_prefix'] = _EXEC_PREFIX + _CONFIG_VARS['py_version'] = _PY_VERSION + _CONFIG_VARS['py_version_short'] = _PY_VERSION_SHORT + _CONFIG_VARS['py_version_nodot'] = _PY_VERSION[0] + _PY_VERSION[2] + _CONFIG_VARS['base'] = _PREFIX + _CONFIG_VARS['platbase'] = _EXEC_PREFIX + _CONFIG_VARS['userbase'] = _getuserbase() + _CONFIG_VARS['projectbase'] = _PROJECT_BASE + + if os.name in ('nt', 'os2'): + _init_non_posix(_CONFIG_VARS) + if os.name == 'posix': + _init_posix(_CONFIG_VARS) + + if 'srcdir' not in _CONFIG_VARS: + _CONFIG_VARS['srcdir'] = _PROJECT_BASE + + # Convert srcdir into an absolute path if it appears necessary. + # Normally it is relative to the build directory. However, during + # testing, for example, we might be running a non-installed python + # from a different directory. + if _PYTHON_BUILD and os.name == "posix": + base = _PROJECT_BASE + if (not os.path.isabs(_CONFIG_VARS['srcdir']) and + base != os.getcwd()): + # srcdir is relative and we are not in the same directory + # as the executable. Assume executable is in the build + # directory and make srcdir absolute. + srcdir = os.path.join(base, _CONFIG_VARS['srcdir']) + _CONFIG_VARS['srcdir'] = os.path.normpath(srcdir) + + if sys.platform == 'darwin': + kernel_version = os.uname()[2] # Kernel version (8.4.3) + major_version = int(kernel_version.split('.')[0]) + + if major_version < 8: + # On Mac OS X before 10.4, check if -arch and -isysroot + # are in CFLAGS or LDFLAGS and remove them if they are. + # This is needed when building extensions on a 10.3 system + # using a universal build of python. + for key in ('LDFLAGS', 'BASECFLAGS', + # a number of derived variables. These need to be + # patched up as well. + 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): + flags = _CONFIG_VARS[key] + flags = re.sub('-arch\s+\w+\s', ' ', flags) + flags = re.sub('-isysroot [^ \t]*', ' ', flags) + _CONFIG_VARS[key] = flags + else: + # Allow the user to override the architecture flags using + # an environment variable. + # NOTE: This name was introduced by Apple in OSX 10.5 and + # is used by several scripting languages distributed with + # that OS release. + if 'ARCHFLAGS' in os.environ: + arch = os.environ['ARCHFLAGS'] + for key in ('LDFLAGS', 'BASECFLAGS', + # a number of derived variables. These need to be + # patched up as well. + 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): + + flags = _CONFIG_VARS[key] + flags = re.sub('-arch\s+\w+\s', ' ', flags) + flags = flags + ' ' + arch + _CONFIG_VARS[key] = flags + + # If we're on OSX 10.5 or later and the user tries to + # compiles an extension using an SDK that is not present + # on the current machine it is better to not use an SDK + # than to fail. + # + # The major usecase for this is users using a Python.org + # binary installer on OSX 10.6: that installer uses + # the 10.4u SDK, but that SDK is not installed by default + # when you install Xcode. + # + CFLAGS = _CONFIG_VARS.get('CFLAGS', '') + m = re.search('-isysroot\s+(\S+)', CFLAGS) + if m is not None: + sdk = m.group(1) + if not os.path.exists(sdk): + for key in ('LDFLAGS', 'BASECFLAGS', + # a number of derived variables. These need to be + # patched up as well. + 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): + + flags = _CONFIG_VARS[key] + flags = re.sub('-isysroot\s+\S+(\s|$)', ' ', flags) + _CONFIG_VARS[key] = flags + + if args: + vals = [] + for name in args: + vals.append(_CONFIG_VARS.get(name)) + return vals + else: + return _CONFIG_VARS + +def get_config_var(name): + """Return the value of a single variable using the dictionary returned by + 'get_config_vars()'. + + Equivalent to get_config_vars().get(name) + """ + return get_config_vars().get(name) + +def get_platform(): + """Return a string that identifies the current platform. + + This is used mainly to distinguish platform-specific build directories and + platform-specific built distributions. Typically includes the OS name + and version and the architecture (as supplied by 'os.uname()'), + although the exact information included depends on the OS; eg. for IRIX + the architecture isn't particularly important (IRIX only runs on SGI + hardware), but for Linux the kernel version isn't particularly + important. + + Examples of returned values: + linux-i586 + linux-alpha (?) + solaris-2.6-sun4u + irix-5.3 + irix64-6.2 + + Windows will return one of: + win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) + win-ia64 (64bit Windows on Itanium) + win32 (all others - specifically, sys.platform is returned) + + For other non-POSIX platforms, currently just returns 'sys.platform'. + """ + import re + if os.name == 'nt': + # sniff sys.version for architecture. + prefix = " bit (" + i = sys.version.find(prefix) + if i == -1: + return sys.platform + j = sys.version.find(")", i) + look = sys.version[i+len(prefix):j].lower() + if look == 'amd64': + return 'win-amd64' + if look == 'itanium': + return 'win-ia64' + return sys.platform + + if os.name != "posix" or not hasattr(os, 'uname'): + # XXX what about the architecture? NT is Intel or Alpha, + # Mac OS is M68k or PPC, etc. + return sys.platform + + # Try to distinguish various flavours of Unix + osname, host, release, version, machine = os.uname() + + # Convert the OS name to lowercase, remove '/' characters + # (to accommodate BSD/OS), and translate spaces (for "Power Macintosh") + osname = osname.lower().replace('/', '') + machine = machine.replace(' ', '_') + machine = machine.replace('/', '-') + + if osname[:5] == "linux": + # At least on Linux/Intel, 'machine' is the processor -- + # i386, etc. + # XXX what about Alpha, SPARC, etc? + return "%s-%s" % (osname, machine) + elif osname[:5] == "sunos": + if release[0] >= "5": # SunOS 5 == Solaris 2 + osname = "solaris" + release = "%d.%s" % (int(release[0]) - 3, release[2:]) + # fall through to standard osname-release-machine representation + elif osname[:4] == "irix": # could be "irix64"! + return "%s-%s" % (osname, release) + elif osname[:3] == "aix": + return "%s-%s.%s" % (osname, version, release) + elif osname[:6] == "cygwin": + osname = "cygwin" + rel_re = re.compile (r'[\d.]+') + m = rel_re.match(release) + if m: + release = m.group() + elif osname[:6] == "darwin": + # + # For our purposes, we'll assume that the system version from + # distutils' perspective is what MACOSX_DEPLOYMENT_TARGET is set + # to. This makes the compatibility story a bit more sane because the + # machine is going to compile and link as if it were + # MACOSX_DEPLOYMENT_TARGET. + cfgvars = get_config_vars() + macver = os.environ.get('MACOSX_DEPLOYMENT_TARGET') + if not macver: + macver = cfgvars.get('MACOSX_DEPLOYMENT_TARGET') + + if 1: + # Always calculate the release of the running machine, + # needed to determine if we can build fat binaries or not. + + macrelease = macver + # Get the system version. Reading this plist is a documented + # way to get the system version (see the documentation for + # the Gestalt Manager) + try: + f = open('/System/Library/CoreServices/SystemVersion.plist') + except IOError: + # We're on a plain darwin box, fall back to the default + # behaviour. + pass + else: + m = re.search( + r'ProductUserVisibleVersion\s*' + + r'(.*?)', f.read()) + f.close() + if m is not None: + macrelease = '.'.join(m.group(1).split('.')[:2]) + # else: fall back to the default behaviour + + if not macver: + macver = macrelease + + if macver: + release = macver + osname = "macosx" + + if (macrelease + '.') >= '10.4.' and \ + '-arch' in get_config_vars().get('CFLAGS', '').strip(): + # The universal build will build fat binaries, but not on + # systems before 10.4 + # + # Try to detect 4-way universal builds, those have machine-type + # 'universal' instead of 'fat'. + + machine = 'fat' + cflags = get_config_vars().get('CFLAGS') + + archs = re.findall('-arch\s+(\S+)', cflags) + archs.sort() + archs = tuple(archs) + + if len(archs) == 1: + machine = archs[0] + elif archs == ('i386', 'ppc'): + machine = 'fat' + elif archs == ('i386', 'x86_64'): + machine = 'intel' + elif archs == ('i386', 'ppc', 'x86_64'): + machine = 'fat3' + elif archs == ('ppc64', 'x86_64'): + machine = 'fat64' + elif archs == ('i386', 'ppc', 'ppc64', 'x86_64'): + machine = 'universal' + else: + raise ValueError( + "Don't know machine value for archs=%r"%(archs,)) + + elif machine == 'i386': + # On OSX the machine type returned by uname is always the + # 32-bit variant, even if the executable architecture is + # the 64-bit variant + if sys.maxint >= 2**32: + machine = 'x86_64' + + elif machine in ('PowerPC', 'Power_Macintosh'): + # Pick a sane name for the PPC architecture. + # See 'i386' case + if sys.maxint >= 2**32: + machine = 'ppc64' + else: + machine = 'ppc' + + return "%s-%s-%s" % (osname, release, machine) + + +def get_python_version(): + return _PY_VERSION_SHORT Modified: python/trunk/Lib/test/test_site.py ============================================================================== --- python/trunk/Lib/test/test_site.py (original) +++ python/trunk/Lib/test/test_site.py Sat Jan 23 10:23:15 2010 @@ -11,6 +11,9 @@ import sys import encodings import subprocess +import sysconfig +from copy import copy + # Need to make sure to not import 'site' if someone specified ``-S`` at the # command-line. Detect this by just making sure 'site' has not been imported # already. @@ -38,6 +41,7 @@ self.old_base = site.USER_BASE self.old_site = site.USER_SITE self.old_prefixes = site.PREFIXES + self.old_vars = copy(sysconfig._CONFIG_VARS) def tearDown(self): """Restore sys.path""" @@ -45,6 +49,7 @@ site.USER_BASE = self.old_base site.USER_SITE = self.old_site site.PREFIXES = self.old_prefixes + sysconfig._CONFIG_VARS = self.old_vars def test_makepath(self): # Test makepath() have an absolute path for its first return value @@ -138,6 +143,9 @@ # let's set PYTHONUSERBASE and see if it uses it site.USER_BASE = None + import sysconfig + sysconfig._CONFIG_VARS = None + with EnvironmentVarGuard() as environ: environ['PYTHONUSERBASE'] = 'xoxo' self.assertTrue(site.getuserbase().startswith('xoxo'), Added: python/trunk/Lib/test/test_sysconfig.py ============================================================================== --- (empty file) +++ python/trunk/Lib/test/test_sysconfig.py Sat Jan 23 10:23:15 2010 @@ -0,0 +1,214 @@ +"""Tests for 'site'. + +Tests assume the initial paths in sys.path once the interpreter has begun +executing have not been removed. + +""" +import unittest +import sys +import test +import os +from copy import copy, deepcopy + +from test.test_support import run_unittest, TESTFN + +import sysconfig +from sysconfig import (get_paths, get_platform, get_config_vars, + get_path, get_path_names, _INSTALL_SCHEMES, + _get_default_scheme, _expand_vars) + +class TestSysConfig(unittest.TestCase): + + def setUp(self): + """Make a copy of sys.path""" + super(TestSysConfig, self).setUp() + self.sys_path = sys.path[:] + self.makefile = None + # patching os.uname + if hasattr(os, 'uname'): + self.uname = os.uname + self._uname = os.uname() + else: + self.uname = None + self._uname = None + os.uname = self._get_uname + # saving the environment + self.name = os.name + self.platform = sys.platform + self.version = sys.version + self.sep = os.sep + self.join = os.path.join + self.isabs = os.path.isabs + self.splitdrive = os.path.splitdrive + self._config_vars = copy(sysconfig._CONFIG_VARS) + self.old_environ = deepcopy(os.environ) + + def tearDown(self): + """Restore sys.path""" + sys.path[:] = self.sys_path + if self.makefile is not None: + os.unlink(self.makefile) + self._cleanup_testfn() + if self.uname is not None: + os.uname = self.uname + else: + del os.uname + os.name = self.name + sys.platform = self.platform + sys.version = self.version + os.sep = self.sep + os.path.join = self.join + os.path.isabs = self.isabs + os.path.splitdrive = self.splitdrive + sysconfig._CONFIG_VARS = copy(self._config_vars) + for key, value in self.old_environ.items(): + if os.environ.get(key) != value: + os.environ[key] = value + + for key in os.environ.keys(): + if key not in self.old_environ: + del os.environ[key] + + super(TestSysConfig, self).tearDown() + + def _set_uname(self, uname): + self._uname = uname + + def _get_uname(self): + return self._uname + + def _cleanup_testfn(self): + path = test.test_support.TESTFN + if os.path.isfile(path): + os.remove(path) + elif os.path.isdir(path): + shutil.rmtree(path) + + def test_get_path_names(self): + self.assertEquals(get_path_names(), sysconfig._SCHEME_KEYS) + + def test_get_paths(self): + scheme = get_paths() + default_scheme = _get_default_scheme() + wanted = _expand_vars(default_scheme, None) + wanted = wanted.items() + wanted.sort() + scheme = scheme.items() + scheme.sort() + self.assertEquals(scheme, wanted) + + def test_get_path(self): + # xxx make real tests here + for scheme in _INSTALL_SCHEMES: + for name in _INSTALL_SCHEMES[scheme]: + res = get_path(name, scheme) + + def test_get_config_vars(self): + cvars = get_config_vars() + self.assertTrue(isinstance(cvars, dict)) + self.assertTrue(cvars) + + def test_get_platform(self): + # windows XP, 32bits + os.name = 'nt' + sys.version = ('2.4.4 (#71, Oct 18 2006, 08:34:43) ' + '[MSC v.1310 32 bit (Intel)]') + sys.platform = 'win32' + self.assertEquals(get_platform(), 'win32') + + # windows XP, amd64 + os.name = 'nt' + sys.version = ('2.4.4 (#71, Oct 18 2006, 08:34:43) ' + '[MSC v.1310 32 bit (Amd64)]') + sys.platform = 'win32' + self.assertEquals(get_platform(), 'win-amd64') + + # windows XP, itanium + os.name = 'nt' + sys.version = ('2.4.4 (#71, Oct 18 2006, 08:34:43) ' + '[MSC v.1310 32 bit (Itanium)]') + sys.platform = 'win32' + self.assertEquals(get_platform(), 'win-ia64') + + # macbook + os.name = 'posix' + sys.version = ('2.5 (r25:51918, Sep 19 2006, 08:49:13) ' + '\n[GCC 4.0.1 (Apple Computer, Inc. build 5341)]') + sys.platform = 'darwin' + self._set_uname(('Darwin', 'macziade', '8.11.1', + ('Darwin Kernel Version 8.11.1: ' + 'Wed Oct 10 18:23:28 PDT 2007; ' + 'root:xnu-792.25.20~1/RELEASE_I386'), 'i386')) + get_config_vars()['MACOSX_DEPLOYMENT_TARGET'] = '10.3' + os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.3' + + get_config_vars()['CFLAGS'] = ('-fno-strict-aliasing -DNDEBUG -g ' + '-fwrapv -O3 -Wall -Wstrict-prototypes') + + self.assertEquals(get_platform(), 'macosx-10.3-i386') + + # macbook with fat binaries (fat, universal or fat64) + os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.4' + get_config_vars()['CFLAGS'] = ('-arch ppc -arch i386 -isysroot ' + '/Developer/SDKs/MacOSX10.4u.sdk ' + '-fno-strict-aliasing -fno-common ' + '-dynamic -DNDEBUG -g -O3') + + self.assertEquals(get_platform(), 'macosx-10.4-fat') + + get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch i386 -isysroot ' + '/Developer/SDKs/MacOSX10.4u.sdk ' + '-fno-strict-aliasing -fno-common ' + '-dynamic -DNDEBUG -g -O3') + + self.assertEquals(get_platform(), 'macosx-10.4-intel') + + get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch ppc -arch i386 -isysroot ' + '/Developer/SDKs/MacOSX10.4u.sdk ' + '-fno-strict-aliasing -fno-common ' + '-dynamic -DNDEBUG -g -O3') + self.assertEquals(get_platform(), 'macosx-10.4-fat3') + + get_config_vars()['CFLAGS'] = ('-arch ppc64 -arch x86_64 -arch ppc -arch i386 -isysroot ' + '/Developer/SDKs/MacOSX10.4u.sdk ' + '-fno-strict-aliasing -fno-common ' + '-dynamic -DNDEBUG -g -O3') + self.assertEquals(get_platform(), 'macosx-10.4-universal') + + get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch ppc64 -isysroot ' + '/Developer/SDKs/MacOSX10.4u.sdk ' + '-fno-strict-aliasing -fno-common ' + '-dynamic -DNDEBUG -g -O3') + + self.assertEquals(get_platform(), 'macosx-10.4-fat64') + + for arch in ('ppc', 'i386', 'x86_64', 'ppc64'): + get_config_vars()['CFLAGS'] = ('-arch %s -isysroot ' + '/Developer/SDKs/MacOSX10.4u.sdk ' + '-fno-strict-aliasing -fno-common ' + '-dynamic -DNDEBUG -g -O3'%(arch,)) + + self.assertEquals(get_platform(), 'macosx-10.4-%s'%(arch,)) + + # linux debian sarge + os.name = 'posix' + sys.version = ('2.3.5 (#1, Jul 4 2007, 17:28:59) ' + '\n[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)]') + sys.platform = 'linux2' + self._set_uname(('Linux', 'aglae', '2.6.21.1dedibox-r7', + '#1 Mon Apr 30 17:25:38 CEST 2007', 'i686')) + + self.assertEquals(get_platform(), 'linux-i686') + + # XXX more platforms to tests here + + def test_get_config_h_filename(self): + config_h = sysconfig.get_config_h_filename() + self.assertTrue(os.path.isfile(config_h), config_h) + + +def test_main(): + run_unittest(TestSysConfig) + +if __name__ == "__main__": + test_main() Modified: python/trunk/Makefile.pre.in ============================================================================== --- python/trunk/Makefile.pre.in (original) +++ python/trunk/Makefile.pre.in Sat Jan 23 10:23:15 2010 @@ -395,7 +395,7 @@ $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) platform: $(BUILDPYTHON) - $(RUNSHARED) ./$(BUILDPYTHON) -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform + $(RUNSHARED) ./$(BUILDPYTHON) -E -c 'import sys ; from sysconfig import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform # Build the shared modules Modified: python/trunk/setup.py ============================================================================== --- python/trunk/setup.py (original) +++ python/trunk/setup.py Sat Jan 23 10:23:15 2010 @@ -6,9 +6,9 @@ import sys, os, imp, re, optparse from glob import glob from platform import machine as platform_machine +import sysconfig from distutils import log -from distutils import sysconfig from distutils import text_file from distutils.errors import * from distutils.core import Extension, setup @@ -140,7 +140,7 @@ # Python header files headers = [sysconfig.get_config_h_filename()] - headers += glob(os.path.join(sysconfig.get_python_inc(), "*.h")) + headers += glob(os.path.join(sysconfig.get_path('platinclude'), "*.h")) for ext in self.extensions[:]: ext.sources = [ find_module_file(filename, moddirlist) for filename in ext.sources ] From python-checkins at python.org Sat Jan 23 10:24:37 2010 From: python-checkins at python.org (tarek.ziade) Date: Sat, 23 Jan 2010 09:24:37 -0000 Subject: [Python-checkins] r77705 - python/branches/release26-maint Message-ID: Author: tarek.ziade Date: Sat Jan 23 10:24:37 2010 New Revision: 77705 Log: Blocked revisions 77704 via svnmerge ........ r77704 | tarek.ziade | 2010-01-23 10:23:15 +0100 (Sat, 23 Jan 2010) | 1 line taking sysconfig out of distutils ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Sat Jan 23 11:43:05 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 23 Jan 2010 10:43:05 -0000 Subject: [Python-checkins] r77706 - python/trunk/Lib/test/test_re.py Message-ID: Author: ezio.melotti Date: Sat Jan 23 11:43:05 2010 New Revision: 77706 Log: Increased the overflow value on test_dealloc to make sure that it is big enough even for wide builds. Modified: python/trunk/Lib/test/test_re.py Modified: python/trunk/Lib/test/test_re.py ============================================================================== --- python/trunk/Lib/test/test_re.py (original) +++ python/trunk/Lib/test/test_re.py Sat Jan 23 11:43:05 2010 @@ -706,7 +706,11 @@ def test_dealloc(self): # issue 3299: check for segfault in debug build import _sre - long_overflow = sys.maxsize + 2 + # the overflow limit is different on wide and narrow builds and it + # depends on the definition of SRE_CODE (see sre.h). + # 2**128 should be big enough to overflow on both. For smaller values + # a RuntimeError is raised instead of OverflowError. + long_overflow = 2**128 self.assertRaises(TypeError, re.finditer, "a", {}) self.assertRaises(OverflowError, _sre.compile, "abc", 0, [long_overflow]) From python-checkins at python.org Sat Jan 23 11:44:47 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 23 Jan 2010 10:44:47 -0000 Subject: [Python-checkins] r77707 - in python/branches/release26-maint: Lib/test/test_re.py Message-ID: Author: ezio.melotti Date: Sat Jan 23 11:44:47 2010 New Revision: 77707 Log: Merged revisions 77706 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77706 | ezio.melotti | 2010-01-23 12:43:05 +0200 (Sat, 23 Jan 2010) | 1 line Increased the overflow value on test_dealloc to make sure that it is big enough even for wide builds. ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/test/test_re.py Modified: python/branches/release26-maint/Lib/test/test_re.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_re.py (original) +++ python/branches/release26-maint/Lib/test/test_re.py Sat Jan 23 11:44:47 2010 @@ -688,7 +688,11 @@ def test_dealloc(self): # issue 3299: check for segfault in debug build import _sre - long_overflow = sys.maxsize + 2 + # the overflow limit is different on wide and narrow builds and it + # depends on the definition of SRE_CODE (see sre.h). + # 2**128 should be big enough to overflow on both. For smaller values + # a RuntimeError is raised instead of OverflowError. + long_overflow = 2**128 self.assertRaises(TypeError, re.finditer, "a", {}) self.assertRaises(OverflowError, _sre.compile, "abc", 0, [long_overflow]) From python-checkins at python.org Sat Jan 23 11:49:39 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 23 Jan 2010 10:49:39 -0000 Subject: [Python-checkins] r77708 - in python/branches/py3k: Lib/test/test_re.py Message-ID: Author: ezio.melotti Date: Sat Jan 23 11:49:39 2010 New Revision: 77708 Log: Merged revisions 77706 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77706 | ezio.melotti | 2010-01-23 12:43:05 +0200 (Sat, 23 Jan 2010) | 1 line Increased the overflow value on test_dealloc to make sure that it is big enough even for wide builds. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_re.py Modified: python/branches/py3k/Lib/test/test_re.py ============================================================================== --- python/branches/py3k/Lib/test/test_re.py (original) +++ python/branches/py3k/Lib/test/test_re.py Sat Jan 23 11:49:39 2010 @@ -720,7 +720,11 @@ def test_dealloc(self): # issue 3299: check for segfault in debug build import _sre - long_overflow = sys.maxsize + 2 + # the overflow limit is different on wide and narrow builds and it + # depends on the definition of SRE_CODE (see sre.h). + # 2**128 should be big enough to overflow on both. For smaller values + # a RuntimeError is raised instead of OverflowError. + long_overflow = 2**128 self.assertRaises(TypeError, re.finditer, "a", {}) self.assertRaises(OverflowError, _sre.compile, "abc", 0, [long_overflow]) From python-checkins at python.org Sat Jan 23 11:54:37 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 23 Jan 2010 10:54:37 -0000 Subject: [Python-checkins] r77709 - in python/branches/release31-maint: Lib/test/test_re.py Message-ID: Author: ezio.melotti Date: Sat Jan 23 11:54:37 2010 New Revision: 77709 Log: Merged revisions 77708 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77708 | ezio.melotti | 2010-01-23 12:49:39 +0200 (Sat, 23 Jan 2010) | 9 lines Merged revisions 77706 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77706 | ezio.melotti | 2010-01-23 12:43:05 +0200 (Sat, 23 Jan 2010) | 1 line Increased the overflow value on test_dealloc to make sure that it is big enough even for wide builds. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/test/test_re.py Modified: python/branches/release31-maint/Lib/test/test_re.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_re.py (original) +++ python/branches/release31-maint/Lib/test/test_re.py Sat Jan 23 11:54:37 2010 @@ -699,7 +699,11 @@ def test_dealloc(self): # issue 3299: check for segfault in debug build import _sre - long_overflow = sys.maxsize + 2 + # the overflow limit is different on wide and narrow builds and it + # depends on the definition of SRE_CODE (see sre.h). + # 2**128 should be big enough to overflow on both. For smaller values + # a RuntimeError is raised instead of OverflowError. + long_overflow = 2**128 self.assertRaises(TypeError, re.finditer, "a", {}) self.assertRaises(OverflowError, _sre.compile, "abc", 0, [long_overflow]) From python-checkins at python.org Sat Jan 23 12:24:34 2010 From: python-checkins at python.org (stefan.krah) Date: Sat, 23 Jan 2010 11:24:34 -0000 Subject: [Python-checkins] r77710 - in python/branches/py3k-cdecimal/Lib/test: decimal_tests.py test_cdecimal.py Message-ID: Author: stefan.krah Date: Sat Jan 23 12:24:34 2010 New Revision: 77710 Log: Remove redundant flag. Modified: python/branches/py3k-cdecimal/Lib/test/decimal_tests.py python/branches/py3k-cdecimal/Lib/test/test_cdecimal.py Modified: python/branches/py3k-cdecimal/Lib/test/decimal_tests.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/decimal_tests.py (original) +++ python/branches/py3k-cdecimal/Lib/test/decimal_tests.py Sat Jan 23 12:24:34 2010 @@ -38,14 +38,14 @@ threading = None -if sys.modules['have_decimal']: - from decimal import * - HAVE_CDECIMAL = False - HAVE_CONFIG_64 = False -elif sys.modules['have_cdecimal']: +if sys.modules['have_cdecimal']: from cdecimal import * HAVE_CDECIMAL = True HAVE_CONFIG_64 = (MAX_EMAX == 999999999999999999) +else: + from decimal import * + HAVE_CDECIMAL = False + HAVE_CONFIG_64 = False if HAVE_CDECIMAL and (not HAVE_CONFIG_64): Modified: python/branches/py3k-cdecimal/Lib/test/test_cdecimal.py ============================================================================== --- python/branches/py3k-cdecimal/Lib/test/test_cdecimal.py (original) +++ python/branches/py3k-cdecimal/Lib/test/test_cdecimal.py Sat Jan 23 12:24:34 2010 @@ -6,7 +6,6 @@ from test.support import import_fresh_module # abuse sys.modules as a communication channel sys.modules['have_cdecimal'] = True -sys.modules['have_decimal'] = False m = import_fresh_module('test.decimal_tests') From solipsis at pitrou.net Sat Jan 23 15:39:34 2010 From: solipsis at pitrou.net (Antoine Pitrou) Date: Sat, 23 Jan 2010 14:39:34 +0000 (UTC) Subject: [Python-checkins] =?utf-8?q?r77704_-_in_python/trunk=3A=09Lib/dis?= =?utf-8?q?tutils/ccompiler=2EpyLib/distutils/command/bdist=2Epy=09?= =?utf-8?q?Lib/distutils/command/bdist=5Fdumb=2Epy=09Lib/distutils/?= =?utf-8?q?command/bdist=5Fwininst=2Epy=09Lib/distutils/command/bui?= =?utf-8?q?ld=2EpyLib/distutils/command/build=5Fclib=2Epy=09Lib/dis?= =?utf-8?q?tutils/command/build=5Fext=2Epy=09Lib/distutils/command/?= =?utf-8?q?build=5Fscripts=2Epy=09Lib/distutils/command/config=2Epy?= =?utf-8?q?=09Lib/distutils/command/install=2EpyLib/distutils/core?= =?utf-8?q?=2Epy=09Lib/distutils/cygwinccompiler=2EpyLib/distutils/?= =?utf-8?q?extension=2Epy=09Lib/distutils/msvc9compiler=2EpyLib/dis?= =?utf-8?q?tutils/sysconfig=2Epy=09Lib/distutils/tests/support=2Epy?= =?utf-8?q?Lib/distutils/tests/test=5Fbuild=2Epy=09Lib/distutils/te?= =?utf-8?q?sts/test=5Fbuild=5Fclib=2Epy=09Lib/distutils/tests/test?= =?utf-8?q?=5Fbuild=5Fext=2Epy=09Lib/distutils/tests/test=5Fbuild?= =?utf-8?q?=5Fscripts=2Epy=09Lib/distutils/tests/test=5Fccompiler?= =?utf-8?q?=2Epy=09Lib/distutils/tests/test=5Fcygwinccompiler=2Epy?= =?utf-8?q?=09Lib/distutils/tests/test=5Fextension=2Epy=09Lib/distu?= =?utf-8?q?tils/tests/test=5Finstall=2Epy=09Lib/distutils/tests/tes?= =?utf-8?q?t=5Fsy?= References: <42820.8264093429$1264238925@news.gmane.org> Message-ID: writes: > > + self.assertEquals(get_platform(), 'macosx-10.3-i386') This seems to have broken the buildbots. Antoine. From python-checkins at python.org Sat Jan 23 16:40:09 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 23 Jan 2010 15:40:09 -0000 Subject: [Python-checkins] r77711 - in python/branches/py3k/Lib/test: mapping_tests.py pickletester.py seq_tests.py test_bigmem.py test_bytes.py test_cfgparser.py test_collections.py test_compile.py test_copy.py test_datetime.py test_dbm.py test_descr.py test_dict.py test_dis.py test_docxmlrpc.py test_errno.py test_exceptions.py test_float.py test_http_cookiejar.py test_inspect.py test_itertools.py test_multibytecodec.py test_pep352.py test_pkgimport.py test_profile.py test_pyclbr.py test_range.py test_sax.py test_site.py test_strptime.py test_sys.py test_tempfile.py test_threading.py test_traceback.py test_unittest.py test_urllib.py test_urllib2.py test_weakref.py test_weakset.py Message-ID: Author: ezio.melotti Date: Sat Jan 23 16:40:09 2010 New Revision: 77711 Log: use assert[Not]In where appropriate Modified: python/branches/py3k/Lib/test/mapping_tests.py python/branches/py3k/Lib/test/pickletester.py python/branches/py3k/Lib/test/seq_tests.py python/branches/py3k/Lib/test/test_bigmem.py python/branches/py3k/Lib/test/test_bytes.py python/branches/py3k/Lib/test/test_cfgparser.py python/branches/py3k/Lib/test/test_collections.py python/branches/py3k/Lib/test/test_compile.py python/branches/py3k/Lib/test/test_copy.py python/branches/py3k/Lib/test/test_datetime.py python/branches/py3k/Lib/test/test_dbm.py python/branches/py3k/Lib/test/test_descr.py python/branches/py3k/Lib/test/test_dict.py python/branches/py3k/Lib/test/test_dis.py python/branches/py3k/Lib/test/test_docxmlrpc.py python/branches/py3k/Lib/test/test_errno.py python/branches/py3k/Lib/test/test_exceptions.py python/branches/py3k/Lib/test/test_float.py python/branches/py3k/Lib/test/test_http_cookiejar.py python/branches/py3k/Lib/test/test_inspect.py python/branches/py3k/Lib/test/test_itertools.py python/branches/py3k/Lib/test/test_multibytecodec.py python/branches/py3k/Lib/test/test_pep352.py python/branches/py3k/Lib/test/test_pkgimport.py python/branches/py3k/Lib/test/test_profile.py python/branches/py3k/Lib/test/test_pyclbr.py python/branches/py3k/Lib/test/test_range.py python/branches/py3k/Lib/test/test_sax.py python/branches/py3k/Lib/test/test_site.py python/branches/py3k/Lib/test/test_strptime.py python/branches/py3k/Lib/test/test_sys.py python/branches/py3k/Lib/test/test_tempfile.py python/branches/py3k/Lib/test/test_threading.py python/branches/py3k/Lib/test/test_traceback.py python/branches/py3k/Lib/test/test_unittest.py python/branches/py3k/Lib/test/test_urllib.py python/branches/py3k/Lib/test/test_urllib2.py python/branches/py3k/Lib/test/test_weakref.py python/branches/py3k/Lib/test/test_weakset.py Modified: python/branches/py3k/Lib/test/mapping_tests.py ============================================================================== --- python/branches/py3k/Lib/test/mapping_tests.py (original) +++ python/branches/py3k/Lib/test/mapping_tests.py Sat Jan 23 16:40:09 2010 @@ -56,9 +56,9 @@ self.assertEqual(len(d), len(self.reference)) #__contains__ for k in self.reference: - self.assertTrue(k in d) + self.assertIn(k, d) for k in self.other: - self.assertFalse(k in d) + self.assertNotIn(k, d) #cmp self.assertEqual(p, p) self.assertEqual(d, d) @@ -85,7 +85,7 @@ knownkey, knownvalue = next(iter(self.other.items())) self.assertEqual(d.get(key, knownvalue), value) self.assertEqual(d.get(knownkey, knownvalue), knownvalue) - self.assertFalse(knownkey in d) + self.assertNotIn(knownkey, d) def test_write(self): # Test for write operations on mapping @@ -115,16 +115,16 @@ self.assertEqual(d[knownkey], knownvalue) #pop self.assertEqual(d.pop(knownkey), knownvalue) - self.assertFalse(knownkey in d) + self.assertNotIn(knownkey, d) self.assertRaises(KeyError, d.pop, knownkey) default = 909 d[knownkey] = knownvalue self.assertEqual(d.pop(knownkey, default), knownvalue) - self.assertFalse(knownkey in d) + self.assertNotIn(knownkey, d) self.assertEqual(d.pop(knownkey, default), default) #popitem key, value = d.popitem() - self.assertFalse(key in d) + self.assertNotIn(key, d) self.assertEqual(value, self.reference[key]) p=self._empty_mapping() self.assertRaises(KeyError, p.popitem) @@ -142,8 +142,8 @@ d = self._empty_mapping() self.assertEqual(list(d.keys()), []) d = self.reference - self.assertTrue(list(self.inmapping.keys())[0] in d.keys()) - self.assertTrue(list(self.other.keys())[0] not in d.keys()) + self.assertIn(list(self.inmapping.keys())[0], d.keys()) + self.assertNotIn(list(self.other.keys())[0], d.keys()) self.assertRaises(TypeError, d.keys, None) def test_values(self): @@ -320,9 +320,9 @@ self.assertEqual(list(d.keys()), []) d = self._full_mapping({'a': 1, 'b': 2}) k = d.keys() - self.assertTrue('a' in k) - self.assertTrue('b' in k) - self.assertTrue('c' not in k) + self.assertIn('a', k) + self.assertIn('b', k) + self.assertNotIn('c', k) def test_values(self): BasicTestMappingProtocol.test_values(self) @@ -337,12 +337,13 @@ def test_contains(self): d = self._empty_mapping() + self.assertNotIn('a', d) self.assertTrue(not ('a' in d)) self.assertTrue('a' not in d) d = self._full_mapping({'a': 1, 'b': 2}) - self.assertTrue('a' in d) - self.assertTrue('b' in d) - self.assertTrue('c' not in d) + self.assertIn('a', d) + self.assertIn('b', d) + self.assertNotIn('c', d) self.assertRaises(TypeError, d.__contains__) Modified: python/branches/py3k/Lib/test/pickletester.py ============================================================================== --- python/branches/py3k/Lib/test/pickletester.py (original) +++ python/branches/py3k/Lib/test/pickletester.py Sat Jan 23 16:40:09 2010 @@ -770,8 +770,8 @@ # Dump using protocol 1 for comparison. s1 = self.dumps(x, 1) - self.assertTrue(__name__.encode("utf-8") in s1) - self.assertTrue(b"MyList" in s1) + self.assertIn(__name__.encode("utf-8"), s1) + self.assertIn(b"MyList", s1) self.assertEqual(opcode_in_pickle(opcode, s1), False) y = self.loads(s1) @@ -780,8 +780,8 @@ # Dump using protocol 2 for test. s2 = self.dumps(x, 2) - self.assertTrue(__name__.encode("utf-8") not in s2) - self.assertTrue(b"MyList" not in s2) + self.assertNotIn(__name__.encode("utf-8"), s2) + self.assertNotIn(b"MyList", s2) self.assertEqual(opcode_in_pickle(opcode, s2), True, repr(s2)) y = self.loads(s2) Modified: python/branches/py3k/Lib/test/seq_tests.py ============================================================================== --- python/branches/py3k/Lib/test/seq_tests.py (original) +++ python/branches/py3k/Lib/test/seq_tests.py Sat Jan 23 16:40:09 2010 @@ -199,9 +199,9 @@ def test_contains(self): u = self.type2test([0, 1, 2]) for i in u: - self.assert_(i in u) + self.assertIn(i, u) for i in min(u)-1, max(u)+1: - self.assert_(i not in u) + self.assertNotIn(i, u) self.assertRaises(TypeError, u.__contains__) @@ -213,8 +213,8 @@ def __eq__(self, other): return True __hash__ = None # Can't meet hash invariant requirements - self.assert_(AllEq() not in self.type2test([])) - self.assert_(AllEq() in self.type2test([1])) + self.assertNotIn(AllEq(), self.type2test([])) + self.assertIn(AllEq(), self.type2test([1])) def test_contains_order(self): # Sequences must test in-order. If a rich comparison has side @@ -227,7 +227,7 @@ raise DoNotTestEq checkfirst = self.type2test([1, StopCompares()]) - self.assert_(1 in checkfirst) + self.assertIn(1, checkfirst) checklast = self.type2test([StopCompares(), 1]) self.assertRaises(DoNotTestEq, checklast.__contains__, 1) Modified: python/branches/py3k/Lib/test/test_bigmem.py ============================================================================== --- python/branches/py3k/Lib/test/test_bigmem.py (original) +++ python/branches/py3k/Lib/test/test_bigmem.py Sat Jan 23 16:40:09 2010 @@ -520,9 +520,9 @@ s = _('').join([edge, SUBSTR, edge]) del edge self.assertIn(SUBSTR, s) - self.assertFalse(SUBSTR * 2 in s) + self.assertNotIn(SUBSTR * 2, s) self.assertIn(_('-'), s) - self.assertFalse(_('a') in s) + self.assertNotIn(_('a'), s) s += _('a') self.assertIn(_('a'), s) @@ -769,8 +769,8 @@ t = (1, 2, 3, 4, 5) * size self.assertEquals(len(t), size * 5) self.assertIn(5, t) - self.assertFalse((1, 2, 3, 4, 5) in t) - self.assertFalse(0 in t) + self.assertNotIn((1, 2, 3, 4, 5), t) + self.assertNotIn(0, t) @bigmemtest(minsize=_2G + 10, memuse=8) def test_hash(self, size): @@ -918,8 +918,8 @@ l = [1, 2, 3, 4, 5] * size self.assertEquals(len(l), size * 5) self.assertIn(5, l) - self.assertFalse([1, 2, 3, 4, 5] in l) - self.assertFalse(0 in l) + self.assertNotIn([1, 2, 3, 4, 5], l) + self.assertNotIn(0, l) @bigmemtest(minsize=_2G + 10, memuse=8) def test_hash(self, size): Modified: python/branches/py3k/Lib/test/test_bytes.py ============================================================================== --- python/branches/py3k/Lib/test/test_bytes.py (original) +++ python/branches/py3k/Lib/test/test_bytes.py Sat Jan 23 16:40:09 2010 @@ -231,8 +231,7 @@ b = self.type2test(b"abc") self.assertIn(ord('a'), b) self.assertIn(int(ord('a')), b) - self.assertFalse(200 in b) - self.assertFalse(200 in b) + self.assertNotIn(200, b) self.assertRaises(ValueError, lambda: 300 in b) self.assertRaises(ValueError, lambda: -1 in b) self.assertRaises(TypeError, lambda: None in b) @@ -246,10 +245,10 @@ self.assertIn(f(b"ab"), b) self.assertIn(f(b"bc"), b) self.assertIn(f(b"abc"), b) - self.assertFalse(f(b"ac") in b) - self.assertFalse(f(b"d") in b) - self.assertFalse(f(b"dab") in b) - self.assertFalse(f(b"abd") in b) + self.assertNotIn(f(b"ac"), b) + self.assertNotIn(f(b"d"), b) + self.assertNotIn(f(b"dab"), b) + self.assertNotIn(f(b"abd"), b) def test_fromhex(self): self.assertRaises(TypeError, self.type2test.fromhex) Modified: python/branches/py3k/Lib/test/test_cfgparser.py ============================================================================== --- python/branches/py3k/Lib/test/test_cfgparser.py (original) +++ python/branches/py3k/Lib/test/test_cfgparser.py Sat Jan 23 16:40:09 2010 @@ -76,8 +76,8 @@ eq(cf.get('Spaces', 'key with spaces'), 'value') eq(cf.get('Spaces', 'another with spaces'), 'splat!') - self.assertFalse('__name__' in cf.options("Foo Bar"), - '__name__ "option" should not be exposed by the API!') + self.assertNotIn('__name__', cf.options("Foo Bar"), + '__name__ "option" should not be exposed by the API!') # Make sure the right things happen for remove_option(); # added to include check for SourceForge bug #123324: Modified: python/branches/py3k/Lib/test/test_collections.py ============================================================================== --- python/branches/py3k/Lib/test/test_collections.py (original) +++ python/branches/py3k/Lib/test/test_collections.py Sat Jan 23 16:40:09 2010 @@ -540,10 +540,10 @@ self.assertEqual(c, dict(a=4, b=0, d=-2, e=-5, f=4)) self.assertEqual(''.join(sorted(c.elements())), 'aaaaffff') self.assertEqual(c.pop('f'), 4) - self.assertEqual('f' in c, False) + self.assertNotIn('f', c) for i in range(3): elem, cnt = c.popitem() - self.assertEqual(elem in c, False) + self.assertNotIn(elem, c) c.clear() self.assertEqual(c, {}) self.assertEqual(repr(c), 'Counter()') Modified: python/branches/py3k/Lib/test/test_compile.py ============================================================================== --- python/branches/py3k/Lib/test/test_compile.py (original) +++ python/branches/py3k/Lib/test/test_compile.py Sat Jan 23 16:40:09 2010 @@ -317,56 +317,56 @@ d[1] += 1 self.assertEqual(d[1], 2) del d[1] - self.assertEqual(1 in d, False) + self.assertNotIn(1, d) # Tuple of indices d[1, 1] = 1 self.assertEqual(d[1, 1], 1) d[1, 1] += 1 self.assertEqual(d[1, 1], 2) del d[1, 1] - self.assertEqual((1, 1) in d, False) + self.assertNotIn((1, 1), d) # Simple slice d[1:2] = 1 self.assertEqual(d[1:2], 1) d[1:2] += 1 self.assertEqual(d[1:2], 2) del d[1:2] - self.assertEqual(slice(1, 2) in d, False) + self.assertNotIn(slice(1, 2), d) # Tuple of simple slices d[1:2, 1:2] = 1 self.assertEqual(d[1:2, 1:2], 1) d[1:2, 1:2] += 1 self.assertEqual(d[1:2, 1:2], 2) del d[1:2, 1:2] - self.assertEqual((slice(1, 2), slice(1, 2)) in d, False) + self.assertNotIn((slice(1, 2), slice(1, 2)), d) # Extended slice d[1:2:3] = 1 self.assertEqual(d[1:2:3], 1) d[1:2:3] += 1 self.assertEqual(d[1:2:3], 2) del d[1:2:3] - self.assertEqual(slice(1, 2, 3) in d, False) + self.assertNotIn(slice(1, 2, 3), d) # Tuple of extended slices d[1:2:3, 1:2:3] = 1 self.assertEqual(d[1:2:3, 1:2:3], 1) d[1:2:3, 1:2:3] += 1 self.assertEqual(d[1:2:3, 1:2:3], 2) del d[1:2:3, 1:2:3] - self.assertEqual((slice(1, 2, 3), slice(1, 2, 3)) in d, False) + self.assertNotIn((slice(1, 2, 3), slice(1, 2, 3)), d) # Ellipsis d[...] = 1 self.assertEqual(d[...], 1) d[...] += 1 self.assertEqual(d[...], 2) del d[...] - self.assertEqual(Ellipsis in d, False) + self.assertNotIn(Ellipsis, d) # Tuple of Ellipses d[..., ...] = 1 self.assertEqual(d[..., ...], 1) d[..., ...] += 1 self.assertEqual(d[..., ...], 2) del d[..., ...] - self.assertEqual((Ellipsis, Ellipsis) in d, False) + self.assertNotIn((Ellipsis, Ellipsis), d) def test_annotation_limit(self): # 16 bits are available for # of annotations, but only 8 bits are Modified: python/branches/py3k/Lib/test/test_copy.py ============================================================================== --- python/branches/py3k/Lib/test/test_copy.py (original) +++ python/branches/py3k/Lib/test/test_copy.py Sat Jan 23 16:40:09 2010 @@ -627,7 +627,7 @@ x, y = C(), C() # The underlying containers are decoupled v[x] = y - self.assertFalse(x in u) + self.assertNotIn(x, u) def test_copy_weakkeydict(self): self._check_copy_weakdict(weakref.WeakKeyDictionary) Modified: python/branches/py3k/Lib/test/test_datetime.py ============================================================================== --- python/branches/py3k/Lib/test/test_datetime.py (original) +++ python/branches/py3k/Lib/test/test_datetime.py Sat Jan 23 16:40:09 2010 @@ -140,10 +140,7 @@ self.assertTrue(() != me) self.assertIn(me, [1, 20, [], me]) - self.assertFalse(me not in [1, 20, [], me]) - self.assertIn([], [me, 1, 20, []]) - self.assertFalse([] not in [me, 1, 20, []]) def test_harmful_mixed_comparison(self): me = self.theclass(1, 1, 1) Modified: python/branches/py3k/Lib/test/test_dbm.py ============================================================================== --- python/branches/py3k/Lib/test/test_dbm.py (original) +++ python/branches/py3k/Lib/test/test_dbm.py Sat Jan 23 16:40:09 2010 @@ -93,7 +93,7 @@ self.init_db() f = dbm.open(_fname, 'r') key = "a".encode("ascii") - assert(key in f) + self.assertIn(key, f) assert(f[key] == b"Python:") f.close() Modified: python/branches/py3k/Lib/test/test_descr.py ============================================================================== --- python/branches/py3k/Lib/test/test_descr.py (original) +++ python/branches/py3k/Lib/test/test_descr.py Sat Jan 23 16:40:09 2010 @@ -1654,7 +1654,7 @@ self.assertNotIn(-1, c1) for i in range(10): self.assertIn(i, c1) - self.assertFalse(10 in c1) + self.assertNotIn(10, c1) # Test the default behavior for dynamic classes class D(object): def __getitem__(self, i): @@ -1677,7 +1677,7 @@ self.assertNotIn(-1, d1) for i in range(10): self.assertIn(i, d1) - self.assertFalse(10 in d1) + self.assertNotIn(10, d1) # Test overridden behavior class Proxy(object): def __init__(self, x): @@ -1721,10 +1721,10 @@ self.assertEqual(str(p0), "Proxy:0") self.assertEqual(repr(p0), "Proxy(0)") p10 = Proxy(range(10)) - self.assertFalse(-1 in p10) + self.assertNotIn(-1, p10) for i in range(10): self.assertIn(i, p10) - self.assertFalse(10 in p10) + self.assertNotIn(10, p10) def test_weakrefs(self): # Testing weak references... Modified: python/branches/py3k/Lib/test/test_dict.py ============================================================================== --- python/branches/py3k/Lib/test/test_dict.py (original) +++ python/branches/py3k/Lib/test/test_dict.py Sat Jan 23 16:40:09 2010 @@ -34,9 +34,7 @@ self.assertEqual(set(d.keys()), set()) d = {'a': 1, 'b': 2} k = d.keys() - self.assertTrue('a' in d) self.assertIn('a', d) - self.assertTrue('b' in d) self.assertIn('b', d) self.assertRaises(TypeError, d.keys, None) self.assertEqual(repr(dict(a=1).keys()), "dict_keys(['a'])") @@ -60,15 +58,12 @@ def test_contains(self): d = {} + self.assertNotIn('a', d) self.assertTrue(not ('a' in d)) self.assertTrue('a' not in d) - self.assertNotIn('a', d) d = {'a': 1, 'b': 2} - self.assertTrue('a' in d) self.assertIn('a', d) - self.assertTrue('b' in d) self.assertIn('b', d) - self.assertTrue('c' not in d) self.assertNotIn('c', d) self.assertRaises(TypeError, d.__contains__) @@ -524,9 +519,7 @@ d = D({1: 2, 3: 4}) self.assertEqual(d[1], 2) self.assertEqual(d[3], 4) - self.assertTrue(2 not in d) self.assertNotIn(2, d) - self.assertTrue(2 not in d.keys()) self.assertNotIn(2, d.keys()) self.assertEqual(d[2], 42) class E(dict): Modified: python/branches/py3k/Lib/test/test_dis.py ============================================================================== --- python/branches/py3k/Lib/test/test_dis.py (original) +++ python/branches/py3k/Lib/test/test_dis.py Sat Jan 23 16:40:09 2010 @@ -118,8 +118,8 @@ def test_opmap(self): self.assertEqual(dis.opmap["STOP_CODE"], 0) - self.assertEqual(dis.opmap["LOAD_CONST"] in dis.hasconst, True) - self.assertEqual(dis.opmap["STORE_NAME"] in dis.hasname, True) + self.assertIn(dis.opmap["LOAD_CONST"], dis.hasconst) + self.assertIn(dis.opmap["STORE_NAME"], dis.hasname) def test_opname(self): self.assertEqual(dis.opname[dis.opmap["LOAD_FAST"]], "LOAD_FAST") Modified: python/branches/py3k/Lib/test/test_docxmlrpc.py ============================================================================== --- python/branches/py3k/Lib/test/test_docxmlrpc.py (original) +++ python/branches/py3k/Lib/test/test_docxmlrpc.py Sat Jan 23 16:40:09 2010 @@ -18,8 +18,8 @@ serv.set_server_title("DocXMLRPCServer Test Documentation") serv.set_server_name("DocXMLRPCServer Test Docs") serv.set_server_documentation( -"""This is an XML-RPC server's documentation, but the server can be used by -POSTing to /RPC2. Try self.add, too.""") + "This is an XML-RPC server's documentation, but the server " + "can be used by POSTing to /RPC2. Try self.add, too.") # Create and register classes and functions class TestClass(object): @@ -106,9 +106,9 @@ self.client.request("GET", "/") response = self.client.getresponse() - self.assertTrue( -b"""
      <lambda>(x, y)
      """ - in response.read()) + self.assertIn((b'
      ' + b'<lambda>(x, y)
      '), + response.read()) def test_autolinking(self): """Test that the server correctly automatically wraps references to PEPS @@ -120,9 +120,17 @@ self.client.request("GET", "/") response = self.client.getresponse().read() - self.assertTrue( # This is ugly ... how can it be made better? -b"""
      add(x, y)
      Add two instances together. This follows PEP008, but has nothing
      \nto do with RFC1952. Case should matter: pEp008 and rFC1952.  Things
      \nthat start with http and ftp should be auto-linked, too:
      \nhttp://google.com.
      """ - in response, response) + self.assertIn( + (b'
      add(x, y)
      ' + b'Add two instances together. This ' + b'follows ' + b'PEP008, but has nothing
      \nto do ' + b'with ' + b'RFC1952. Case should matter: pEp008 ' + b'and rFC1952.  Things
      \nthat start ' + b'with http and ftp should be ' + b'auto-linked, too:
      \n' + b'http://google.com.
      '), response) def test_system_methods(self): """Test the precense of three consecutive system.* methods. @@ -133,8 +141,26 @@ self.client.request("GET", "/") response = self.client.getresponse().read() - self.assertTrue( -b"""
      system.methodHelp(method_name)
      system.methodHelp(\'add\') => "Adds two integers together"
      \n 
      \nReturns a string containing documentation for the specified method.
      \n
      system.methodSignature(method_name)
      system.methodSignature(\'add\') => [double, int, int]
      \n 
      \nReturns a list describing the signature of the method. In the
      \nabove example, the add method takes two integers as arguments
      \nand returns a double result.
      \n 
      \nThis server does NOT support system.methodSignature.
      \n
      test_method(arg)
      Test method\'s docs. This method truly does very little.
      """ in response) + self.assertIn( + (b'
      system.methodHelp' + b'(method_name)
      system.methodHelp(\'add\') => "Adds ' + b'two integers together"
      \n 
      \nReturns a' + b' string containing documentation for ' + b'the specified method.
      \n
      system.methodSignature' + b'(method_name)
      ' + b'system.methodSignature(\'add\') => [double, ' + b'int, int]
      \n 
      \nReturns a list ' + b'describing the signature of the method.' + b' In the
      \nabove example, the add ' + b'method takes two integers as arguments' + b'
      \nand returns a double result.
      \n ' + b'
      \nThis server does NOT support system' + b'.methodSignature.
      \n
      ' + b'test_method(arg)
      Test ' + b'method\'s docs. This method truly does' + b' very little.
      '), response) def test_autolink_dotted_methods(self): """Test that selfdot values are made strong automatically in the @@ -142,8 +168,8 @@ self.client.request("GET", "/") response = self.client.getresponse() - self.assertTrue(b"""Try self.add, too.""" in - response.read()) + self.assertIn(b"""Try self.add, too.""", + response.read()) def test_main(): support.run_unittest(DocXMLRPCHTTPGETServer) Modified: python/branches/py3k/Lib/test/test_errno.py ============================================================================== --- python/branches/py3k/Lib/test/test_errno.py (original) +++ python/branches/py3k/Lib/test/test_errno.py Sat Jan 23 16:40:09 2010 @@ -28,8 +28,8 @@ def test_attributes_in_errorcode(self): for attribute in errno.__dict__.keys(): if attribute.isupper(): - self.assertTrue(getattr(errno, attribute) in errno.errorcode, - 'no %s attr in errno.errorcode' % attribute) + self.assertIn(getattr(errno, attribute), errno.errorcode, + 'no %s attr in errno.errorcode' % attribute) def test_main(): Modified: python/branches/py3k/Lib/test/test_exceptions.py ============================================================================== --- python/branches/py3k/Lib/test/test_exceptions.py (original) +++ python/branches/py3k/Lib/test/test_exceptions.py Sat Jan 23 16:40:09 2010 @@ -413,7 +413,7 @@ except Exception as e: self.assertTrue(e) del e - self.assertFalse('e' in locals()) + self.assertNotIn('e', locals()) def testExceptionCleanupState(self): # Make sure exception state is cleaned up as soon as the except Modified: python/branches/py3k/Lib/test/test_float.py ============================================================================== --- python/branches/py3k/Lib/test/test_float.py (original) +++ python/branches/py3k/Lib/test/test_float.py Sat Jan 23 16:40:09 2010 @@ -214,16 +214,11 @@ floats = (INF, -INF, 0.0, 1.0, NAN) for f in floats: self.assertIn(f, [f]) - self.assertTrue(f in [f], "'%r' not in []" % f) self.assertIn(f, (f,)) - self.assertTrue(f in (f,), "'%r' not in ()" % f) self.assertIn(f, {f}) - self.assertTrue(f in {f}, "'%r' not in set()" % f) self.assertIn(f, {f: None}) - self.assertTrue(f in {f: None}, "'%r' not in {}" % f) self.assertEqual([f].count(f), 1, "[].count('%r') != 1" % f) self.assertIn(f, floats) - self.assertTrue(f in floats, "'%r' not in container" % f) for f in floats: # nonidentical containers, same type, same contents @@ -459,10 +454,10 @@ float.__setformat__('float', self.save_formats['float']) def test_getformat(self): - self.assertTrue(float.__getformat__('double') in - ['unknown', 'IEEE, big-endian', 'IEEE, little-endian']) - self.assertTrue(float.__getformat__('float') in - ['unknown', 'IEEE, big-endian', 'IEEE, little-endian']) + self.assertIn(float.__getformat__('double'), + ['unknown', 'IEEE, big-endian', 'IEEE, little-endian']) + self.assertIn(float.__getformat__('float'), + ['unknown', 'IEEE, big-endian', 'IEEE, little-endian']) self.assertRaises(ValueError, float.__getformat__, 'chicken') self.assertRaises(TypeError, float.__getformat__, 1) Modified: python/branches/py3k/Lib/test/test_http_cookiejar.py ============================================================================== --- python/branches/py3k/Lib/test/test_http_cookiejar.py (original) +++ python/branches/py3k/Lib/test/test_http_cookiejar.py Sat Jan 23 16:40:09 2010 @@ -901,8 +901,7 @@ url = "http://foo.bar.com/" interact_2965(c, url, "spam=eggs; Version=1") h = interact_2965(c, url) - self.assertTrue("Path" not in h, - "absent path returned with path present") + self.assertNotIn("Path", h, "absent path returned with path present") c = CookieJar(pol) url = "http://foo.bar.com/" @@ -917,8 +916,7 @@ url = "http://foo.bar.com/" interact_2965(c, url, "spam=eggs; Version=1") h = interact_2965(c, url) - self.assertTrue("Port" not in h, - "absent port returned with port present") + self.assertNotIn("Port", h, "absent port returned with port present") c = CookieJar(pol) url = "http://foo.bar.com/" @@ -931,16 +929,16 @@ url = "http://foo.bar.com/" interact_2965(c, url, 'spam=eggs; Version=1; Port="80"') h = interact_2965(c, url) - self.assertTrue('$Port="80"' in h, - "port with single value not returned with single value") + self.assertIn('$Port="80"', h, + "port with single value not returned with single value") c = CookieJar(pol) url = "http://foo.bar.com/" interact_2965(c, url, 'spam=eggs; Version=1; Port="80,8080"') h = interact_2965(c, url) - self.assertTrue('$Port="80,8080"' in h, - "port with multiple values not returned with multiple " - "values") + self.assertIn('$Port="80,8080"', h, + "port with multiple values not returned with multiple " + "values") def test_no_return_comment(self): c = CookieJar(DefaultCookiePolicy(rfc2965=True)) @@ -1105,8 +1103,8 @@ c.add_cookie_header(req) h = req.get_header("Cookie") - self.assertTrue("PART_NUMBER=ROCKET_LAUNCHER_0001" in h and - "CUSTOMER=WILE_E_COYOTE" in h) + self.assertIn("PART_NUMBER=ROCKET_LAUNCHER_0001", h) + self.assertIn("CUSTOMER=WILE_E_COYOTE", h) headers.append('Set-Cookie: SHIPPING=FEDEX; path=/foo') res = FakeResponse(headers, "http://www.acme.com") @@ -1116,17 +1114,17 @@ c.add_cookie_header(req) h = req.get_header("Cookie") - self.assertTrue("PART_NUMBER=ROCKET_LAUNCHER_0001" in h and - "CUSTOMER=WILE_E_COYOTE" in h and - "SHIPPING=FEDEX" not in h) + self.assertIn("PART_NUMBER=ROCKET_LAUNCHER_0001", h) + self.assertIn("CUSTOMER=WILE_E_COYOTE", h) + self.assertNotIn("SHIPPING=FEDEX", h) req = urllib.request.Request("http://www.acme.com/foo/") c.add_cookie_header(req) h = req.get_header("Cookie") - self.assertTrue(("PART_NUMBER=ROCKET_LAUNCHER_0001" in h and - "CUSTOMER=WILE_E_COYOTE" in h and - h.startswith("SHIPPING=FEDEX;"))) + self.assertIn("PART_NUMBER=ROCKET_LAUNCHER_0001", h) + self.assertIn("CUSTOMER=WILE_E_COYOTE", h) + self.assertTrue(h.startswith("SHIPPING=FEDEX;")) def test_netscape_example_2(self): # Second Example transaction sequence: @@ -1344,8 +1342,8 @@ # the server. cookie = interact_2965(c, "http://www.acme.com/acme/parts/") - self.assertTrue("Rocket_Launcher_0001" in cookie and - "Riding_Rocket_0023" not in cookie) + self.assertIn("Rocket_Launcher_0001", cookie) + self.assertNotIn("Riding_Rocket_0023", cookie) def test_rejection(self): # Test rejection of Set-Cookie2 responses based on domain, path, port. Modified: python/branches/py3k/Lib/test/test_inspect.py ============================================================================== --- python/branches/py3k/Lib/test/test_inspect.py (original) +++ python/branches/py3k/Lib/test/test_inspect.py Sat Jan 23 16:40:09 2010 @@ -474,8 +474,8 @@ self.assertIn(('s', 'static method', A), attrs, 'missing static method') self.assertIn(('c', 'class method', A), attrs, 'missing class method') self.assertIn(('p', 'property', A), attrs, 'missing property') - self.assertTrue(('m', 'method', A) in attrs, - 'missing plain method: %r' % attrs) + self.assertIn(('m', 'method', A), attrs, + 'missing plain method: %r' % attrs) self.assertIn(('m1', 'method', A), attrs, 'missing plain method') self.assertIn(('datablob', 'data', A), attrs, 'missing data') Modified: python/branches/py3k/Lib/test/test_itertools.py ============================================================================== --- python/branches/py3k/Lib/test/test_itertools.py (original) +++ python/branches/py3k/Lib/test/test_itertools.py Sat Jan 23 16:40:09 2010 @@ -1405,7 +1405,7 @@ Subclass(newarg=1) except TypeError as err: # we expect type errors because of wrong argument count - self.assertFalse("does not take keyword arguments" in err.args[0]) + self.assertNotIn("does not take keyword arguments", err.args[0]) libreftest = """ Doctest for examples in the library reference: libitertools.tex Modified: python/branches/py3k/Lib/test/test_multibytecodec.py ============================================================================== --- python/branches/py3k/Lib/test/test_multibytecodec.py (original) +++ python/branches/py3k/Lib/test/test_multibytecodec.py Sat Jan 23 16:40:09 2010 @@ -242,7 +242,7 @@ self.assertEqual(iso2022jp2.decode('iso2022-jp-2'), uni) def test_iso2022_jp_g0(self): - self.assertFalse(b'\x0e' in '\N{SOFT HYPHEN}'.encode('iso-2022-jp-2')) + self.assertNotIn(b'\x0e', '\N{SOFT HYPHEN}'.encode('iso-2022-jp-2')) for encoding in ('iso-2022-jp-2004', 'iso-2022-jp-3'): e = '\u3406'.encode(encoding) self.assertFalse(any(x > 0x80 for x in e)) Modified: python/branches/py3k/Lib/test/test_pep352.py ============================================================================== --- python/branches/py3k/Lib/test/test_pep352.py (original) +++ python/branches/py3k/Lib/test/test_pep352.py Sat Jan 23 16:40:09 2010 @@ -38,8 +38,8 @@ last_exc = getattr(builtins, superclass_name) except AttributeError: self.fail("base class %s not a built-in" % superclass_name) - self.assertTrue(superclass_name in exc_set, - '%s not found' % superclass_name) + self.assertIn(superclass_name, exc_set, + '%s not found' % superclass_name) exc_set.discard(superclass_name) superclasses = [] # Loop will insert base exception last_depth = 0 Modified: python/branches/py3k/Lib/test/test_pkgimport.py ============================================================================== --- python/branches/py3k/Lib/test/test_pkgimport.py (original) +++ python/branches/py3k/Lib/test/test_pkgimport.py Sat Jan 23 16:40:09 2010 @@ -51,9 +51,9 @@ self.rewrite_file('for') try: __import__(self.module_name) except SyntaxError: pass - else: raise RuntimeError('Failed to induce SyntaxError') - self.assertTrue(self.module_name not in sys.modules and - not hasattr(sys.modules[self.package_name], 'foo')) + else: raise RuntimeError('Failed to induce SyntaxError') # self.fail()? + self.assertNotIn(self.module_name, sys.modules) + self.assertFalse(hasattr(sys.modules[self.package_name], 'foo')) # ...make up a variable name that isn't bound in __builtins__ var = 'a' Modified: python/branches/py3k/Lib/test/test_profile.py ============================================================================== --- python/branches/py3k/Lib/test/test_profile.py (original) +++ python/branches/py3k/Lib/test/test_profile.py Sat Jan 23 16:40:09 2010 @@ -72,7 +72,7 @@ stats = pstats.Stats(prof, stream=s) stats.print_stats() res = s.getvalue() - self.assertTrue(self.expected_max_output in res, + self.assertIn(self.expected_max_output, res, "Profiling {0!r} didn't report max:\n{1}".format(stmt, res)) Modified: python/branches/py3k/Lib/test/test_pyclbr.py ============================================================================== --- python/branches/py3k/Lib/test/test_pyclbr.py (original) +++ python/branches/py3k/Lib/test/test_pyclbr.py Sat Jan 23 16:40:09 2010 @@ -41,7 +41,6 @@ if key not in obj: print("***",key, file=sys.stderr) self.assertIn(key, obj) - self.assertTrue(key in obj, "%r in %r" % (key, obj)) def assertEqualsOrIgnored(self, a, b, ignore): ''' succeed iff a == b or a in ignore or b in ignore ''' Modified: python/branches/py3k/Lib/test/test_range.py ============================================================================== --- python/branches/py3k/Lib/test/test_range.py (original) +++ python/branches/py3k/Lib/test/test_range.py Sat Jan 23 16:40:09 2010 @@ -126,7 +126,7 @@ class C2: def __int__(self): return 1 def __index__(self): return 1 - self.assertFalse(C2() in range(3)) + self.assertNotIn(C2(), range(3)) # ..except if explicitly told so. self.assertIn(int(C2()), range(3)) @@ -140,32 +140,32 @@ def test_strided_limits(self): r = range(0, 101, 2) self.assertIn(0, r) - self.assertFalse(1 in r) + self.assertNotIn(1, r) self.assertIn(2, r) - self.assertFalse(99 in r) + self.assertNotIn(99, r) self.assertIn(100, r) - self.assertFalse(101 in r) + self.assertNotIn(101, r) r = range(0, -20, -1) self.assertIn(0, r) self.assertIn(-1, r) self.assertIn(-19, r) - self.assertFalse(-20 in r) + self.assertNotIn(-20, r) r = range(0, -20, -2) self.assertIn(-18, r) - self.assertFalse(-19 in r) - self.assertFalse(-20 in r) + self.assertNotIn(-19, r) + self.assertNotIn(-20, r) def test_empty(self): r = range(0) - self.assertFalse(0 in r) - self.assertFalse(1 in r) + self.assertNotIn(0, r) + self.assertNotIn(1, r) r = range(0, -10) - self.assertFalse(0 in r) - self.assertFalse(-1 in r) - self.assertFalse(1 in r) + self.assertNotIn(0, r) + self.assertNotIn(-1, r) + self.assertNotIn(1, r) def test_range_iterators(self): # exercise 'fast' iterators, that use a rangeiterobject internally. Modified: python/branches/py3k/Lib/test/test_sax.py ============================================================================== --- python/branches/py3k/Lib/test/test_sax.py (original) +++ python/branches/py3k/Lib/test/test_sax.py Sat Jan 23 16:40:09 2010 @@ -30,7 +30,7 @@ self.assertEquals(attrs.getNames(), []) self.assertEquals(attrs.getQNames(), []) self.assertEquals(len(attrs), 0) - self.assertFalse("attr" in attrs) + self.assertNotIn("attr", attrs) self.assertEquals(list(attrs.keys()), []) self.assertEquals(attrs.get("attrs"), None) self.assertEquals(attrs.get("attrs", 25), 25) @@ -47,7 +47,7 @@ self.assertEquals(attrs.getNames(), []) self.assertEquals(attrs.getQNames(), []) self.assertEquals(len(attrs), 0) - self.assertFalse((ns_uri, "attr") in attrs) + self.assertNotIn((ns_uri, "attr"), attrs) self.assertEquals(list(attrs.keys()), []) self.assertEquals(attrs.get((ns_uri, "attr")), None) self.assertEquals(attrs.get((ns_uri, "attr"), 25), 25) Modified: python/branches/py3k/Lib/test/test_site.py ============================================================================== --- python/branches/py3k/Lib/test/test_site.py (original) +++ python/branches/py3k/Lib/test/test_site.py Sat Jan 23 16:40:09 2010 @@ -63,14 +63,14 @@ dir_set = site._init_pathinfo() for entry in [site.makepath(path)[1] for path in sys.path if path and os.path.isdir(path)]: - self.assertTrue(entry in dir_set, - "%s from sys.path not found in set returned " - "by _init_pathinfo(): %s" % (entry, dir_set)) + self.assertIn(entry, dir_set, + "%s from sys.path not found in set returned " + "by _init_pathinfo(): %s" % (entry, dir_set)) def pth_file_tests(self, pth_file): """Contain common code for testing results of reading a .pth file""" - self.assertTrue(pth_file.imported in sys.modules, - "%s not in sys.modules" % pth_file.imported) + self.assertIn(pth_file.imported, sys.modules, + "%s not in sys.modules" % pth_file.imported) self.assertIn(site.makepath(pth_file.good_dir_path)[0], sys.path) self.assertFalse(os.path.exists(pth_file.bad_dir_path)) Modified: python/branches/py3k/Lib/test/test_strptime.py ============================================================================== --- python/branches/py3k/Lib/test/test_strptime.py (original) +++ python/branches/py3k/Lib/test/test_strptime.py Sat Jan 23 16:40:09 2010 @@ -36,8 +36,8 @@ """ strftime_output = time.strftime(directive, self.time_tuple).lower() comparison = testing[self.time_tuple[tuple_position]] - self.assertTrue(strftime_output in testing, "%s: not found in tuple" % - error_msg) + self.assertIn(strftime_output, testing, + "%s: not found in tuple" % error_msg) self.assertTrue(comparison == strftime_output, "%s: position within tuple incorrect; %s != %s" % (error_msg, comparison, strftime_output)) @@ -61,8 +61,8 @@ def test_am_pm(self): # Make sure AM/PM representation done properly strftime_output = time.strftime("%p", self.time_tuple).lower() - self.assertTrue(strftime_output in self.LT_ins.am_pm, - "AM/PM representation not in tuple") + self.assertIn(strftime_output, self.LT_ins.am_pm, + "AM/PM representation not in tuple") if self.time_tuple[3] < 12: position = 0 else: position = 1 self.assertTrue(strftime_output == self.LT_ins.am_pm[position], @@ -72,7 +72,7 @@ # Make sure timezone is correct timezone = time.strftime("%Z", self.time_tuple).lower() if timezone: - self.assertTrue(timezone in self.LT_ins.timezone[0] or \ + self.assertTrue(timezone in self.LT_ins.timezone[0] or timezone in self.LT_ins.timezone[1], "timezone %s not found in %s" % (timezone, self.LT_ins.timezone)) @@ -133,9 +133,9 @@ # Make sure any characters in the format string that might be taken as # regex syntax is escaped. pattern_string = self.time_re.pattern("\d+") - self.assertTrue(r"\\d\+" in pattern_string, - "%s does not have re characters escaped properly" % - pattern_string) + self.assertIn(r"\\d\+", pattern_string, + "%s does not have re characters escaped properly" % + pattern_string) def test_compile(self): # Check that compiled regex is correct Modified: python/branches/py3k/Lib/test/test_sys.py ============================================================================== --- python/branches/py3k/Lib/test/test_sys.py (original) +++ python/branches/py3k/Lib/test/test_sys.py Sat Jan 23 16:40:09 2010 @@ -388,8 +388,7 @@ self.assertTrue(isinstance(vi.major, int)) self.assertTrue(isinstance(vi.minor, int)) self.assertTrue(isinstance(vi.micro, int)) - self.assertTrue(vi.releaselevel in - ("alpha", "beta", "candidate", "final")) + self.assertIn(vi.releaselevel, ("alpha", "beta", "candidate", "final")) self.assertTrue(isinstance(vi.serial, int)) self.assertEqual(vi[0], vi.major) self.assertEqual(vi[1], vi.minor) Modified: python/branches/py3k/Lib/test/test_tempfile.py ============================================================================== --- python/branches/py3k/Lib/test/test_tempfile.py (original) +++ python/branches/py3k/Lib/test/test_tempfile.py Sat Jan 23 16:40:09 2010 @@ -113,7 +113,7 @@ for i in range(TEST_FILES): s = next(r) self.nameCheck(s, '', '', '') - self.assertFalse(s in dict) + self.assertNotIn(s, dict) dict[s] = 1 def supports_iter(self): Modified: python/branches/py3k/Lib/test/test_threading.py ============================================================================== --- python/branches/py3k/Lib/test/test_threading.py (original) +++ python/branches/py3k/Lib/test/test_threading.py Sat Jan 23 16:40:09 2010 @@ -350,7 +350,7 @@ t.start() t.join() l = enum() - self.assertFalse(t in l, + self.assertNotIn(t, l, "#1703448 triggered after %d trials: %s" % (i, l)) finally: sys.setswitchinterval(old_interval) Modified: python/branches/py3k/Lib/test/test_traceback.py ============================================================================== --- python/branches/py3k/Lib/test/test_traceback.py (original) +++ python/branches/py3k/Lib/test/test_traceback.py Sat Jan 23 16:40:09 2010 @@ -131,7 +131,7 @@ err_line = "raise RuntimeError('{0}')".format(message_ascii) err_msg = "RuntimeError: {0}".format(message_ascii) - self.assertTrue(("line %s" % lineno) in stdout[1], + self.assertIn(("line %s" % lineno), stdout[1], "Invalid line number: {0!r} instead of {1}".format( stdout[1], lineno)) self.assertTrue(stdout[2].endswith(err_line), @@ -271,7 +271,7 @@ self.assertEquals(len(blocks), 3) self.assertEquals(blocks[1], cause_message) self.check_zero_div(blocks[0]) - self.assert_('inner_raise() # Marker' in blocks[2]) + self.assertIn('inner_raise() # Marker', blocks[2]) def test_cause_recursive(self): def inner_raise(): Modified: python/branches/py3k/Lib/test/test_unittest.py ============================================================================== --- python/branches/py3k/Lib/test/test_unittest.py (original) +++ python/branches/py3k/Lib/test/test_unittest.py Sat Jan 23 16:40:09 2010 @@ -3035,7 +3035,7 @@ try: self.assertRaises(KeyError, lambda: None) except self.failureException as e: - self.assert_("KeyError not raised" in str(e), str(e)) + self.assertIn("KeyError not raised", str(e)) else: self.fail("assertRaises() didn't fail") try: @@ -3052,7 +3052,7 @@ with self.assertRaises(KeyError): pass except self.failureException as e: - self.assert_("KeyError not raised" in str(e), str(e)) + self.assertIn("KeyError not raised", str(e)) else: self.fail("assertRaises() didn't fail") try: Modified: python/branches/py3k/Lib/test/test_urllib.py ============================================================================== --- python/branches/py3k/Lib/test/test_urllib.py (original) +++ python/branches/py3k/Lib/test/test_urllib.py Sat Jan 23 16:40:09 2010 @@ -731,7 +731,7 @@ expect_somewhere = ["1st=1", "2nd=2", "3rd=3"] result = urllib.parse.urlencode(given) for expected in expect_somewhere: - self.assertTrue(expected in result, + self.assertIn(expected, result, "testing %s: %s not found in %s" % (test_type, expected, result)) self.assertEqual(result.count('&'), 2, @@ -778,8 +778,7 @@ result = urllib.parse.urlencode(given, True) for value in given["sequence"]: expect = "sequence=%s" % value - self.assertTrue(expect in result, - "%s not found in %s" % (expect, result)) + self.assertIn(expect, result) self.assertEqual(result.count('&'), 2, "Expected 2 '&'s, got %s" % result.count('&')) Modified: python/branches/py3k/Lib/test/test_urllib2.py ============================================================================== --- python/branches/py3k/Lib/test/test_urllib2.py (original) +++ python/branches/py3k/Lib/test/test_urllib2.py Sat Jan 23 16:40:09 2010 @@ -1027,10 +1027,10 @@ # Verify Proxy-Authorization gets tunneled to request. # httpsconn req_headers do not have the Proxy-Authorization header but # the req will have. - self.assertFalse(("Proxy-Authorization","FooBar") in + self.assertNotIn(("Proxy-Authorization","FooBar"), https_handler.httpconn.req_headers) - self.assertTrue(("User-Agent","Grail") in - https_handler.httpconn.req_headers) + self.assertIn(("User-Agent","Grail"), + https_handler.httpconn.req_headers) self.assertIsNotNone(req._tunnel_host) self.assertEqual(req.get_host(), "proxy.example.com:3128") self.assertEqual(req.get_header("Proxy-authorization"),"FooBar") Modified: python/branches/py3k/Lib/test/test_weakref.py ============================================================================== --- python/branches/py3k/Lib/test/test_weakref.py (original) +++ python/branches/py3k/Lib/test/test_weakref.py Sat Jan 23 16:40:09 2010 @@ -169,8 +169,7 @@ p[:] = [2, 3] self.assertEqual(len(L), 2) self.assertEqual(len(p), 2) - self.assertTrue(3 in p, - "proxy didn't support __contains__() properly") + self.assertIn(3, p, "proxy didn't support __contains__() properly") p[1] = 5 self.assertEqual(L[1], 5) self.assertEqual(p[1], 5) @@ -961,13 +960,13 @@ # weakref'ed objects and then return a new key/value pair corresponding # to the destroyed object. with testcontext() as (k, v): - self.assertFalse(k in dict) + self.assertNotIn(k, dict) with testcontext() as (k, v): self.assertRaises(KeyError, dict.__delitem__, k) - self.assertFalse(k in dict) + self.assertNotIn(k, dict) with testcontext() as (k, v): self.assertRaises(KeyError, dict.pop, k) - self.assertFalse(k in dict) + self.assertNotIn(k, dict) with testcontext() as (k, v): dict[k] = v self.assertEqual(dict[k], v) @@ -1118,14 +1117,12 @@ weakdict.update(dict) self.assertEqual(len(weakdict), len(dict)) for k in weakdict.keys(): - self.assertTrue(k in dict, - "mysterious new key appeared in weak dict") + self.assertIn(k, dict, "mysterious new key appeared in weak dict") v = dict.get(k) self.assertTrue(v is weakdict[k]) self.assertTrue(v is weakdict.get(k)) for k in dict.keys(): - self.assertTrue(k in weakdict, - "original key disappeared in weak dict") + self.assertIn(k, weakdict, "original key disappeared in weak dict") v = dict[k] self.assertTrue(v is weakdict[k]) self.assertTrue(v is weakdict.get(k)) Modified: python/branches/py3k/Lib/test/test_weakset.py ============================================================================== --- python/branches/py3k/Lib/test/test_weakset.py (original) +++ python/branches/py3k/Lib/test/test_weakset.py Sat Jan 23 16:40:09 2010 @@ -35,7 +35,7 @@ for method in dir(set): if method == 'test_c_api' or method.startswith('_'): continue - self.assertTrue(method in weaksetmethods, + self.assertIn(method, weaksetmethods, "WeakSet missing method " + method) def test_new_or_init(self): @@ -342,10 +342,10 @@ it = None # should commit all removals with testcontext() as u: - self.assertFalse(u in s) + self.assertNotIn(u, s) with testcontext() as u: self.assertRaises(KeyError, s.remove, u) - self.assertFalse(u in s) + self.assertNotIn(u, s) with testcontext() as u: s.add(u) self.assertIn(u, s) From ziade.tarek at gmail.com Sat Jan 23 17:20:58 2010 From: ziade.tarek at gmail.com (=?ISO-8859-1?Q?Tarek_Ziad=E9?=) Date: Sat, 23 Jan 2010 17:20:58 +0100 Subject: [Python-checkins] r77704 - in python/trunk: Lib/distutils/ccompiler.pyLib/distutils/command/bdist.py Lib/distutils/command/bdist_dumb.py Lib/distutils/command/bdist_wininst.py Lib/distutils/command/build.pyLib/distutils/command/build_clib.py Lib/ Message-ID: <94bdd2611001230820y64a3a061we2155a8dfc5fc113@mail.gmail.com> On Sat, Jan 23, 2010 at 3:39 PM, Antoine Pitrou wrote: > writes: >> >> + ? ? ? ?self.assertEquals(get_platform(), 'macosx-10.3-i386') > > This seems to have broken the buildbots. Strange, I've run the whole test suite on mac and win before that commit, and watched all stable bbots for 2.7 Which one is failing for test_distutils ? > > > Antoine. > > > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins > -- Tarek Ziad? | http://ziade.org From solipsis at pitrou.net Sat Jan 23 17:23:59 2010 From: solipsis at pitrou.net (Antoine Pitrou) Date: Sat, 23 Jan 2010 16:23:59 +0000 (UTC) Subject: [Python-checkins] =?utf-8?q?r77704_-_in_python/trunk=3A=09Lib/dis?= =?utf-8?q?tutils/ccompiler=2EpyLib/distutils/command/bdist=2Epy=09?= =?utf-8?q?Lib/distutils/command/bdist=5Fdumb=2Epy=09Lib/distutils/?= =?utf-8?q?command/bdist=5Fwininst=2Epy=09Lib/distutils/command/bui?= =?utf-8?q?ld=2EpyLib/distutils/command/build=5Fclib=2Epy=09Lib/?= References: <94bdd2611001230820y64a3a061we2155a8dfc5fc113@mail.gmail.com> Message-ID: Tarek Ziad? gmail.com> writes: > > Strange, I've run the whole test suite on mac and win before that > commit, and watched all stable bbots for 2.7 > > Which one is failing for test_distutils ? All 64-bit buildbots. You have probably deleted Ronald's fix for this code. From ziade.tarek at gmail.com Sat Jan 23 17:34:39 2010 From: ziade.tarek at gmail.com (=?ISO-8859-1?Q?Tarek_Ziad=E9?=) Date: Sat, 23 Jan 2010 17:34:39 +0100 Subject: [Python-checkins] r77704 - in python/trunk: Lib/distutils/ccompiler.pyLib/distutils/command/bdist.py Lib/distutils/command/bdist_dumb.py Lib/distutils/command/bdist_wininst.py Lib/distutils/command/build.pyLib/distutils/command/build_clib.py Lib/ In-Reply-To: References: <94bdd2611001230820y64a3a061we2155a8dfc5fc113@mail.gmail.com> Message-ID: <94bdd2611001230834v37d7ae42g801571ae90945db9@mail.gmail.com> On Sat, Jan 23, 2010 at 5:23 PM, Antoine Pitrou wrote: > Tarek Ziad? gmail.com> writes: >> >> Strange, I've run the whole test suite on mac and win before that >> commit, and watched all stable bbots for 2.7 >> >> Which one is failing for test_distutils ? > > All 64-bit buildbots. > You have probably deleted Ronald's fix for this code. ok thanks for noticing, I'll check these this afternoon; > > > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins > -- Tarek Ziad? | http://ziade.org From python-checkins at python.org Sat Jan 23 18:52:57 2010 From: python-checkins at python.org (tarek.ziade) Date: Sat, 23 Jan 2010 17:52:57 -0000 Subject: [Python-checkins] r77712 - python/trunk/Lib/test/test_sysconfig.py Message-ID: Author: tarek.ziade Date: Sat Jan 23 18:52:57 2010 New Revision: 77712 Log: fixed the 64bits tests for get_platform() - mac osx Modified: python/trunk/Lib/test/test_sysconfig.py Modified: python/trunk/Lib/test/test_sysconfig.py ============================================================================== --- python/trunk/Lib/test/test_sysconfig.py (original) +++ python/trunk/Lib/test/test_sysconfig.py Sat Jan 23 18:52:57 2010 @@ -138,6 +138,25 @@ self._set_uname(('Darwin', 'macziade', '8.11.1', ('Darwin Kernel Version 8.11.1: ' 'Wed Oct 10 18:23:28 PDT 2007; ' + 'root:xnu-792.25.20~1/RELEASE_I386'), 'PowerPC')) + os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.3' + + get_config_vars()['CFLAGS'] = ('-fno-strict-aliasing -DNDEBUG -g ' + '-fwrapv -O3 -Wall -Wstrict-prototypes') + + maxint = sys.maxint + try: + sys.maxint = 2147483647 + self.assertEquals(get_platform(), 'macosx-10.3-ppc') + sys.maxint = 9223372036854775807 + self.assertEquals(get_platform(), 'macosx-10.3-ppc64') + finally: + sys.maxint = maxint + + + self._set_uname(('Darwin', 'macziade', '8.11.1', + ('Darwin Kernel Version 8.11.1: ' + 'Wed Oct 10 18:23:28 PDT 2007; ' 'root:xnu-792.25.20~1/RELEASE_I386'), 'i386')) get_config_vars()['MACOSX_DEPLOYMENT_TARGET'] = '10.3' os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.3' @@ -145,7 +164,14 @@ get_config_vars()['CFLAGS'] = ('-fno-strict-aliasing -DNDEBUG -g ' '-fwrapv -O3 -Wall -Wstrict-prototypes') - self.assertEquals(get_platform(), 'macosx-10.3-i386') + maxint = sys.maxint + try: + sys.maxint = 2147483647 + self.assertEquals(get_platform(), 'macosx-10.3-i386') + sys.maxint = 9223372036854775807 + self.assertEquals(get_platform(), 'macosx-10.3-x86_64') + finally: + sys.maxint = maxint # macbook with fat binaries (fat, universal or fat64) os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.4' From python-checkins at python.org Sat Jan 23 21:48:56 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 23 Jan 2010 20:48:56 -0000 Subject: [Python-checkins] r77713 - python/trunk/Python/dtoa.c Message-ID: Author: mark.dickinson Date: Sat Jan 23 21:48:56 2010 New Revision: 77713 Log: Issue #7743: Add checks for zero inputs to the lshift and mult functions; this fixes the first bug described in issue #7743. Modified: python/trunk/Python/dtoa.c Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Sat Jan 23 21:48:56 2010 @@ -622,6 +622,15 @@ ULong z2; #endif + if ((!a->x[0] && a->wds == 1) || (!b->x[0] && b->wds == 1)) { + c = Balloc(0); + if (c == NULL) + return NULL; + c->wds = 1; + c->x[0] = 0; + return c; + } + if (a->wds < b->wds) { c = a; a = b; @@ -820,6 +829,9 @@ Bigint *b1; ULong *x, *x1, *xe, z; + if (!k || (!b->x[0] && b->wds == 1)) + return b; + n = k >> 5; k1 = b->k; n1 = n + b->wds + 1; From python-checkins at python.org Sat Jan 23 22:25:53 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 23 Jan 2010 21:25:53 -0000 Subject: [Python-checkins] r77714 - python/trunk/Python/dtoa.c Message-ID: Author: mark.dickinson Date: Sat Jan 23 22:25:53 2010 New Revision: 77714 Log: dtoa.c fix from upstream that fixes incorrectly rounded results for certain subnormals that are also halfway cases. Modified: python/trunk/Python/dtoa.c Modified: python/trunk/Python/dtoa.c ============================================================================== --- python/trunk/Python/dtoa.c (original) +++ python/trunk/Python/dtoa.c Sat Jan 23 22:25:53 2010 @@ -2084,9 +2084,9 @@ if (!odd) break; if (dsign) - dval(&rv) += ulp(&rv); + dval(&rv) += sulp(&rv, &bc); else { - dval(&rv) -= ulp(&rv); + dval(&rv) -= sulp(&rv, &bc); if (!dval(&rv)) { if (bc.nd >nd) break; From python-checkins at python.org Sun Jan 24 00:04:37 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 23 Jan 2010 23:04:37 -0000 Subject: [Python-checkins] r77715 - in python/trunk/Lib/test: mapping_tests.py pickletester.py seq_tests.py test_bigmem.py test_bsddb.py test_builtin.py test_bytes.py test_cfgparser.py test_cmd_line.py test_cmd_line_script.py test_collections.py test_compile.py test_compiler.py test_contains.py test_cookielib.py test_copy.py test_copy_reg.py test_csv.py test_datetime.py test_dbm.py test_decimal.py test_defaultdict.py test_deque.py test_descr.py test_dict.py test_dictviews.py test_dis.py test_docxmlrpc.py test_errno.py test_exceptions.py test_float.py test_funcattrs.py test_gdbm.py test_glob.py test_import.py test_inspect.py test_ioctl.py test_iter.py test_itertools.py test_mhlib.py test_mimetools.py test_mmap.py test_multibytecodec.py test_multiprocessing.py test_os.py test_peepholer.py test_pep352.py test_poplib.py test_posix.py test_profile.py test_pwd.py test_py3kwarn.py test_pydoc.py test_random.py test_runpy.py test_scope.py test_set.py test_sets.py test_site.py test_socket.py test_strptime.py test_structseq.py test_subprocess.py test_sys.py test_tarfile.py test_telnetlib.py test_tempfile.py test_threading.py test_threading_local.py test_traceback.py test_types.py test_unicode.py test_unicode_file.py test_unicodedata.py test_unittest.py test_urllib.py test_urllib2.py test_userdict.py test_warnings.py test_weakref.py test_winreg.py test_xmlrpc.py test_xrange.py test_zipfile.py test_zipimport.py test_zipimport_support.py Message-ID: Author: ezio.melotti Date: Sun Jan 24 00:04:36 2010 New Revision: 77715 Log: use assert[Not]In where appropriate Modified: python/trunk/Lib/test/mapping_tests.py python/trunk/Lib/test/pickletester.py python/trunk/Lib/test/seq_tests.py python/trunk/Lib/test/test_bigmem.py python/trunk/Lib/test/test_bsddb.py python/trunk/Lib/test/test_builtin.py python/trunk/Lib/test/test_bytes.py python/trunk/Lib/test/test_cfgparser.py python/trunk/Lib/test/test_cmd_line.py python/trunk/Lib/test/test_cmd_line_script.py python/trunk/Lib/test/test_collections.py python/trunk/Lib/test/test_compile.py python/trunk/Lib/test/test_compiler.py python/trunk/Lib/test/test_contains.py python/trunk/Lib/test/test_cookielib.py python/trunk/Lib/test/test_copy.py python/trunk/Lib/test/test_copy_reg.py python/trunk/Lib/test/test_csv.py python/trunk/Lib/test/test_datetime.py python/trunk/Lib/test/test_dbm.py python/trunk/Lib/test/test_decimal.py python/trunk/Lib/test/test_defaultdict.py python/trunk/Lib/test/test_deque.py python/trunk/Lib/test/test_descr.py python/trunk/Lib/test/test_dict.py python/trunk/Lib/test/test_dictviews.py python/trunk/Lib/test/test_dis.py python/trunk/Lib/test/test_docxmlrpc.py python/trunk/Lib/test/test_errno.py python/trunk/Lib/test/test_exceptions.py python/trunk/Lib/test/test_float.py python/trunk/Lib/test/test_funcattrs.py python/trunk/Lib/test/test_gdbm.py python/trunk/Lib/test/test_glob.py python/trunk/Lib/test/test_import.py python/trunk/Lib/test/test_inspect.py python/trunk/Lib/test/test_ioctl.py python/trunk/Lib/test/test_iter.py python/trunk/Lib/test/test_itertools.py python/trunk/Lib/test/test_mhlib.py python/trunk/Lib/test/test_mimetools.py python/trunk/Lib/test/test_mmap.py python/trunk/Lib/test/test_multibytecodec.py python/trunk/Lib/test/test_multiprocessing.py python/trunk/Lib/test/test_os.py python/trunk/Lib/test/test_peepholer.py python/trunk/Lib/test/test_pep352.py python/trunk/Lib/test/test_poplib.py python/trunk/Lib/test/test_posix.py python/trunk/Lib/test/test_profile.py python/trunk/Lib/test/test_pwd.py python/trunk/Lib/test/test_py3kwarn.py python/trunk/Lib/test/test_pydoc.py python/trunk/Lib/test/test_random.py python/trunk/Lib/test/test_runpy.py python/trunk/Lib/test/test_scope.py python/trunk/Lib/test/test_set.py python/trunk/Lib/test/test_sets.py python/trunk/Lib/test/test_site.py python/trunk/Lib/test/test_socket.py python/trunk/Lib/test/test_strptime.py python/trunk/Lib/test/test_structseq.py python/trunk/Lib/test/test_subprocess.py python/trunk/Lib/test/test_sys.py python/trunk/Lib/test/test_tarfile.py python/trunk/Lib/test/test_telnetlib.py python/trunk/Lib/test/test_tempfile.py python/trunk/Lib/test/test_threading.py python/trunk/Lib/test/test_threading_local.py python/trunk/Lib/test/test_traceback.py python/trunk/Lib/test/test_types.py python/trunk/Lib/test/test_unicode.py python/trunk/Lib/test/test_unicode_file.py python/trunk/Lib/test/test_unicodedata.py python/trunk/Lib/test/test_unittest.py python/trunk/Lib/test/test_urllib.py python/trunk/Lib/test/test_urllib2.py python/trunk/Lib/test/test_userdict.py python/trunk/Lib/test/test_warnings.py python/trunk/Lib/test/test_weakref.py python/trunk/Lib/test/test_winreg.py python/trunk/Lib/test/test_xmlrpc.py python/trunk/Lib/test/test_xrange.py python/trunk/Lib/test/test_zipfile.py python/trunk/Lib/test/test_zipimport.py python/trunk/Lib/test/test_zipimport_support.py Modified: python/trunk/Lib/test/mapping_tests.py ============================================================================== --- python/trunk/Lib/test/mapping_tests.py (original) +++ python/trunk/Lib/test/mapping_tests.py Sun Jan 24 00:04:36 2010 @@ -57,10 +57,10 @@ #has_key for k in self.reference: self.assertTrue(d.has_key(k)) - self.assertTrue(k in d) + self.assertIn(k, d) for k in self.other: self.assertFalse(d.has_key(k)) - self.assertFalse(k in d) + self.assertNotIn(k, d) #cmp self.assertEqual(cmp(p,p), 0) self.assertEqual(cmp(d,d), 0) @@ -84,7 +84,7 @@ knownkey, knownvalue = self.other.iteritems().next() self.assertEqual(d.get(key, knownvalue), value) self.assertEqual(d.get(knownkey, knownvalue), knownvalue) - self.assertFalse(knownkey in d) + self.assertNotIn(knownkey, d) def test_write(self): # Test for write operations on mapping @@ -114,16 +114,16 @@ self.assertEqual(d[knownkey], knownvalue) #pop self.assertEqual(d.pop(knownkey), knownvalue) - self.assertFalse(knownkey in d) + self.assertNotIn(knownkey, d) self.assertRaises(KeyError, d.pop, knownkey) default = 909 d[knownkey] = knownvalue self.assertEqual(d.pop(knownkey, default), knownvalue) - self.assertFalse(knownkey in d) + self.assertNotIn(knownkey, d) self.assertEqual(d.pop(knownkey, default), default) #popitem key, value = d.popitem() - self.assertFalse(key in d) + self.assertNotIn(key, d) self.assertEqual(value, self.reference[key]) p=self._empty_mapping() self.assertRaises(KeyError, p.popitem) @@ -141,8 +141,8 @@ d = self._empty_mapping() self.assertEqual(d.keys(), []) d = self.reference - self.assertTrue(self.inmapping.keys()[0] in d.keys()) - self.assertTrue(self.other.keys()[0] not in d.keys()) + self.assertIn(self.inmapping.keys()[0], d.keys()) + self.assertNotIn(self.other.keys()[0], d.keys()) self.assertRaises(TypeError, d.keys, None) def test_values(self): @@ -318,9 +318,9 @@ self.assertEqual(d.keys(), []) d = self._full_mapping({'a': 1, 'b': 2}) k = d.keys() - self.assertTrue('a' in k) - self.assertTrue('b' in k) - self.assertTrue('c' not in k) + self.assertIn('a', k) + self.assertIn('b', k) + self.assertNotIn('c', k) def test_values(self): BasicTestMappingProtocol.test_values(self) @@ -345,12 +345,13 @@ def test_contains(self): d = self._empty_mapping() + self.assertNotIn('a', d) self.assertTrue(not ('a' in d)) self.assertTrue('a' not in d) d = self._full_mapping({'a': 1, 'b': 2}) - self.assertTrue('a' in d) - self.assertTrue('b' in d) - self.assertTrue('c' not in d) + self.assertIn('a', d) + self.assertIn('b', d) + self.assertNotIn('c', d) self.assertRaises(TypeError, d.__contains__) Modified: python/trunk/Lib/test/pickletester.py ============================================================================== --- python/trunk/Lib/test/pickletester.py (original) +++ python/trunk/Lib/test/pickletester.py Sun Jan 24 00:04:36 2010 @@ -767,8 +767,8 @@ # Dump using protocol 1 for comparison. s1 = self.dumps(x, 1) - self.assertTrue(__name__ in s1) - self.assertTrue("MyList" in s1) + self.assertIn(__name__, s1) + self.assertIn("MyList", s1) self.assertEqual(opcode_in_pickle(opcode, s1), False) y = self.loads(s1) @@ -777,8 +777,8 @@ # Dump using protocol 2 for test. s2 = self.dumps(x, 2) - self.assertTrue(__name__ not in s2) - self.assertTrue("MyList" not in s2) + self.assertNotIn(__name__, s2) + self.assertNotIn("MyList", s2) self.assertEqual(opcode_in_pickle(opcode, s2), True) y = self.loads(s2) Modified: python/trunk/Lib/test/seq_tests.py ============================================================================== --- python/trunk/Lib/test/seq_tests.py (original) +++ python/trunk/Lib/test/seq_tests.py Sun Jan 24 00:04:36 2010 @@ -201,9 +201,9 @@ def test_contains(self): u = self.type2test([0, 1, 2]) for i in u: - self.assert_(i in u) + self.assertIn(i, u) for i in min(u)-1, max(u)+1: - self.assert_(i not in u) + self.assertNotIn(i, u) self.assertRaises(TypeError, u.__contains__) @@ -215,8 +215,8 @@ def __eq__(self, other): return True __hash__ = None # Can't meet hash invariant requirements - self.assert_(AllEq() not in self.type2test([])) - self.assert_(AllEq() in self.type2test([1])) + self.assertNotIn(AllEq(), self.type2test([])) + self.assertIn(AllEq(), self.type2test([1])) def test_contains_order(self): # Sequences must test in-order. If a rich comparison has side @@ -229,7 +229,7 @@ raise DoNotTestEq checkfirst = self.type2test([1, StopCompares()]) - self.assert_(1 in checkfirst) + self.assertIn(1, checkfirst) checklast = self.type2test([StopCompares(), 1]) self.assertRaises(DoNotTestEq, checklast.__contains__, 1) Modified: python/trunk/Lib/test/test_bigmem.py ============================================================================== --- python/trunk/Lib/test/test_bigmem.py (original) +++ python/trunk/Lib/test/test_bigmem.py Sun Jan 24 00:04:36 2010 @@ -580,12 +580,12 @@ edge = '-' * (size // 2) s = ''.join([edge, SUBSTR, edge]) del edge - self.assertTrue(SUBSTR in s) - self.assertFalse(SUBSTR * 2 in s) - self.assertTrue('-' in s) - self.assertFalse('a' in s) + self.assertIn(SUBSTR, s) + self.assertNotIn(SUBSTR * 2, s) + self.assertIn('-', s) + self.assertNotIn('a', s) s += 'a' - self.assertTrue('a' in s) + self.assertIn('a', s) @bigmemtest(minsize=_2G + 10, memuse=2) def test_compare(self, size): @@ -659,9 +659,9 @@ def test_contains(self, size): t = (1, 2, 3, 4, 5) * size self.assertEquals(len(t), size * 5) - self.assertTrue(5 in t) - self.assertFalse((1, 2, 3, 4, 5) in t) - self.assertFalse(0 in t) + self.assertIn(5, t) + self.assertNotIn((1, 2, 3, 4, 5), t) + self.assertNotIn(0, t) @bigmemtest(minsize=_2G + 10, memuse=8) def test_hash(self, size): @@ -808,9 +808,9 @@ def test_contains(self, size): l = [1, 2, 3, 4, 5] * size self.assertEquals(len(l), size * 5) - self.assertTrue(5 in l) - self.assertFalse([1, 2, 3, 4, 5] in l) - self.assertFalse(0 in l) + self.assertIn(5, l) + self.assertNotIn([1, 2, 3, 4, 5], l) + self.assertNotIn(0, l) @bigmemtest(minsize=_2G + 10, memuse=8) def test_hash(self, size): Modified: python/trunk/Lib/test/test_bsddb.py ============================================================================== --- python/trunk/Lib/test/test_bsddb.py (original) +++ python/trunk/Lib/test/test_bsddb.py Sun Jan 24 00:04:36 2010 @@ -43,8 +43,8 @@ def test_change(self): self.f['r'] = 'discovered' self.assertEqual(self.f['r'], 'discovered') - self.assertTrue('r' in self.f.keys()) - self.assertTrue('discovered' in self.f.values()) + self.assertIn('r', self.f.keys()) + self.assertIn('discovered', self.f.values()) def test_close_and_reopen(self): if self.fname is None: @@ -195,8 +195,8 @@ def test_contains(self): for k in self.d: - self.assertTrue(k in self.f) - self.assertTrue('not here' not in self.f) + self.assertIn(k, self.f) + self.assertNotIn('not here', self.f) def test_has_key(self): for k in self.d: @@ -253,9 +253,9 @@ if debug: print "K" # test the legacy cursor interface mixed with writes - self.assertTrue(self.f.first()[0] in self.d) + self.assertIn(self.f.first()[0], self.d) k = self.f.next()[0] - self.assertTrue(k in self.d) + self.assertIn(k, self.d) self.f[k] = "be gone with ye deadlocks" self.assertTrue(self.f[k], "be gone with ye deadlocks") @@ -279,17 +279,17 @@ def test_popitem(self): k, v = self.f.popitem() - self.assertTrue(k in self.d) - self.assertTrue(v in self.d.values()) - self.assertTrue(k not in self.f) + self.assertIn(k, self.d) + self.assertIn(v, self.d.values()) + self.assertNotIn(k, self.f) self.assertEqual(len(self.d)-1, len(self.f)) def test_pop(self): k = 'w' v = self.f.pop(k) self.assertEqual(v, self.d[k]) - self.assertTrue(k not in self.f) - self.assertTrue(v not in self.f.values()) + self.assertNotIn(k, self.f) + self.assertNotIn(v, self.f.values()) self.assertEqual(len(self.d)-1, len(self.f)) def test_get(self): Modified: python/trunk/Lib/test/test_builtin.py ============================================================================== --- python/trunk/Lib/test/test_builtin.py (original) +++ python/trunk/Lib/test/test_builtin.py Sun Jan 24 00:04:36 2010 @@ -236,11 +236,11 @@ # dir() - local scope local_var = 1 - self.assertTrue('local_var' in dir()) + self.assertIn('local_var', dir()) # dir(module) import sys - self.assertTrue('exit' in dir(sys)) + self.assertIn('exit', dir(sys)) # dir(module_with_invalid__dict__) import types @@ -250,8 +250,8 @@ self.assertRaises(TypeError, dir, f) # dir(type) - self.assertTrue("strip" in dir(str)) - self.assertTrue("__mro__" not in dir(str)) + self.assertIn("strip", dir(str)) + self.assertNotIn("__mro__", dir(str)) # dir(obj) class Foo(object): @@ -260,13 +260,13 @@ self.y = 8 self.z = 9 f = Foo() - self.assertTrue("y" in dir(f)) + self.assertIn("y", dir(f)) # dir(obj_no__dict__) class Foo(object): __slots__ = [] f = Foo() - self.assertTrue("__repr__" in dir(f)) + self.assertIn("__repr__", dir(f)) # dir(obj_no__class__with__dict__) # (an ugly trick to cause getattr(f, "__class__") to fail) @@ -275,8 +275,8 @@ def __init__(self): self.bar = "wow" f = Foo() - self.assertTrue("__repr__" not in dir(f)) - self.assertTrue("bar" in dir(f)) + self.assertNotIn("__repr__", dir(f)) + self.assertIn("bar", dir(f)) # dir(obj_using __dir__) class Foo(object): @@ -1046,18 +1046,18 @@ self.assertEqual(range(a+4, a, -2), [a+4, a+2]) seq = range(a, b, c) - self.assertTrue(a in seq) - self.assertTrue(b not in seq) + self.assertIn(a, seq) + self.assertNotIn(b, seq) self.assertEqual(len(seq), 2) seq = range(b, a, -c) - self.assertTrue(b in seq) - self.assertTrue(a not in seq) + self.assertIn(b, seq) + self.assertNotIn(a, seq) self.assertEqual(len(seq), 2) seq = range(-a, -b, -c) - self.assertTrue(-a in seq) - self.assertTrue(-b not in seq) + self.assertIn(-a, seq) + self.assertNotIn(-b, seq) self.assertEqual(len(seq), 2) self.assertRaises(TypeError, range) Modified: python/trunk/Lib/test/test_bytes.py ============================================================================== --- python/trunk/Lib/test/test_bytes.py (original) +++ python/trunk/Lib/test/test_bytes.py Sun Jan 24 00:04:36 2010 @@ -222,27 +222,26 @@ def test_contains(self): b = self.type2test(b"abc") - self.assertTrue(ord('a') in b) - self.assertTrue(int(ord('a')) in b) - self.assertFalse(200 in b) - self.assertFalse(200 in b) + self.assertIn(ord('a'), b) + self.assertIn(int(ord('a')), b) + self.assertNotIn(200, b) self.assertRaises(ValueError, lambda: 300 in b) self.assertRaises(ValueError, lambda: -1 in b) self.assertRaises(TypeError, lambda: None in b) self.assertRaises(TypeError, lambda: float(ord('a')) in b) self.assertRaises(TypeError, lambda: u"a" in b) for f in bytes, bytearray: - self.assertTrue(f(b"") in b) - self.assertTrue(f(b"a") in b) - self.assertTrue(f(b"b") in b) - self.assertTrue(f(b"c") in b) - self.assertTrue(f(b"ab") in b) - self.assertTrue(f(b"bc") in b) - self.assertTrue(f(b"abc") in b) - self.assertFalse(f(b"ac") in b) - self.assertFalse(f(b"d") in b) - self.assertFalse(f(b"dab") in b) - self.assertFalse(f(b"abd") in b) + self.assertIn(f(b""), b) + self.assertIn(f(b"a"), b) + self.assertIn(f(b"b"), b) + self.assertIn(f(b"c"), b) + self.assertIn(f(b"ab"), b) + self.assertIn(f(b"bc"), b) + self.assertIn(f(b"abc"), b) + self.assertNotIn(f(b"ac"), b) + self.assertNotIn(f(b"d"), b) + self.assertNotIn(f(b"dab"), b) + self.assertNotIn(f(b"abd"), b) def test_fromhex(self): self.assertRaises(TypeError, self.type2test.fromhex) Modified: python/trunk/Lib/test/test_cfgparser.py ============================================================================== --- python/trunk/Lib/test/test_cfgparser.py (original) +++ python/trunk/Lib/test/test_cfgparser.py Sun Jan 24 00:04:36 2010 @@ -81,8 +81,8 @@ eq(cf.get('Spaces', 'key with spaces'), 'value') eq(cf.get('Spaces', 'another with spaces'), 'splat!') - self.assertFalse('__name__' in cf.options("Foo Bar"), - '__name__ "option" should not be exposed by the API!') + self.assertNotIn('__name__', cf.options("Foo Bar"), + '__name__ "option" should not be exposed by the API!') # Make sure the right things happen for remove_option(); # added to include check for SourceForge bug #123324: Modified: python/trunk/Lib/test/test_cmd_line.py ============================================================================== --- python/trunk/Lib/test/test_cmd_line.py (original) +++ python/trunk/Lib/test/test_cmd_line.py Sun Jan 24 00:04:36 2010 @@ -23,7 +23,7 @@ def verify_valid_flag(self, cmd_line): data = self.start_python(cmd_line) self.assertTrue(data == '' or data.endswith('\n')) - self.assertTrue('Traceback' not in data) + self.assertNotIn('Traceback', data) def test_optimize(self): self.verify_valid_flag('-O') @@ -39,7 +39,7 @@ self.verify_valid_flag('-S') def test_usage(self): - self.assertTrue('usage' in self.start_python('-h')) + self.assertIn('usage', self.start_python('-h')) def test_version(self): version = 'Python %d.%d' % sys.version_info[:2] @@ -72,7 +72,7 @@ p.stdin.write('exit()\n') data = kill_python(p) self.assertTrue(data.startswith('1 loop')) - self.assertTrue('__main__.Timer' in data) + self.assertIn('__main__.Timer', data) def test_run_code(self): # Test expected operation of the '-c' switch Modified: python/trunk/Lib/test/test_cmd_line_script.py ============================================================================== --- python/trunk/Lib/test/test_cmd_line_script.py (original) +++ python/trunk/Lib/test/test_cmd_line_script.py Sun Jan 24 00:04:36 2010 @@ -81,9 +81,9 @@ print printed_file print printed_package print printed_argv0 - self.assertTrue(printed_file in data) - self.assertTrue(printed_package in data) - self.assertTrue(printed_argv0 in data) + self.assertIn(printed_file, data) + self.assertIn(printed_package, data) + self.assertIn(printed_argv0, data) def _check_import_error(self, script_name, expected_msg, *cmd_line_switches): @@ -93,7 +93,7 @@ print 'Output from test script %r:' % script_name print data print 'Expected output: %r' % expected_msg - self.assertTrue(expected_msg in data) + self.assertIn(expected_msg, data) def test_basic_script(self): with temp_dir() as script_dir: Modified: python/trunk/Lib/test/test_collections.py ============================================================================== --- python/trunk/Lib/test/test_collections.py (original) +++ python/trunk/Lib/test/test_collections.py Sun Jan 24 00:04:36 2010 @@ -42,9 +42,9 @@ namedtuple('_', 'a b c') # Test leading underscores in a typename nt = namedtuple('nt', u'the quick brown fox') # check unicode input - self.assertTrue("u'" not in repr(nt._fields)) + self.assertNotIn("u'", repr(nt._fields)) nt = namedtuple('nt', (u'the', u'quick')) # check unicode input - self.assertTrue("u'" not in repr(nt._fields)) + self.assertNotIn("u'", repr(nt._fields)) self.assertRaises(TypeError, Point._make, [11]) # catch too few args self.assertRaises(TypeError, Point._make, [11, 22, 33]) # catch too many args @@ -73,8 +73,8 @@ self.assertRaises(TypeError, eval, 'Point(XXX=1, y=2)', locals()) # wrong keyword argument self.assertRaises(TypeError, eval, 'Point(x=1)', locals()) # missing keyword argument self.assertEqual(repr(p), 'Point(x=11, y=22)') - self.assertTrue('__dict__' not in dir(p)) # verify instance has no dict - self.assertTrue('__weakref__' not in dir(p)) + self.assertNotIn('__dict__', dir(p)) # verify instance has no dict + self.assertNotIn('__weakref__', dir(p)) self.assertEqual(p, Point._make([11, 22])) # test _make classmethod self.assertEqual(p._fields, ('x', 'y')) # test _fields attribute self.assertEqual(p._replace(x=1), (1, 22)) # test _replace method @@ -533,10 +533,10 @@ self.assertEqual(c, dict(a=4, b=0, d=-2, e=-5, f=4)) self.assertEqual(''.join(sorted(c.elements())), 'aaaaffff') self.assertEqual(c.pop('f'), 4) - self.assertEqual('f' in c, False) + self.assertNotIn('f', c) for i in range(3): elem, cnt = c.popitem() - self.assertEqual(elem in c, False) + self.assertNotIn(elem, c) c.clear() self.assertEqual(c, {}) self.assertEqual(repr(c), 'Counter()') @@ -595,6 +595,7 @@ c = Counter(a=10, b=-2, c=0) for elem in c: self.assertTrue(elem in c) + self.assertIn(elem, c) def test_multiset_operations(self): # Verify that adding a zero counter will strip zeros and negatives @@ -693,7 +694,7 @@ pairs = [('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)] od = OrderedDict(pairs) del od['a'] - self.assertTrue('a' not in od) + self.assertNotIn('a', od) with self.assertRaises(KeyError): del od['a'] self.assertEqual(list(od.items()), pairs[:2] + pairs[3:]) Modified: python/trunk/Lib/test/test_compile.py ============================================================================== --- python/trunk/Lib/test/test_compile.py (original) +++ python/trunk/Lib/test/test_compile.py Sun Jan 24 00:04:36 2010 @@ -378,56 +378,56 @@ d[1] += 1 self.assertEqual(d[1], 2) del d[1] - self.assertEqual(1 in d, False) + self.assertNotIn(1, d) # Tuple of indices d[1, 1] = 1 self.assertEqual(d[1, 1], 1) d[1, 1] += 1 self.assertEqual(d[1, 1], 2) del d[1, 1] - self.assertEqual((1, 1) in d, False) + self.assertNotIn((1, 1), d) # Simple slice d[1:2] = 1 self.assertEqual(d[1:2], 1) d[1:2] += 1 self.assertEqual(d[1:2], 2) del d[1:2] - self.assertEqual(slice(1, 2) in d, False) + self.assertNotIn(slice(1, 2), d) # Tuple of simple slices d[1:2, 1:2] = 1 self.assertEqual(d[1:2, 1:2], 1) d[1:2, 1:2] += 1 self.assertEqual(d[1:2, 1:2], 2) del d[1:2, 1:2] - self.assertEqual((slice(1, 2), slice(1, 2)) in d, False) + self.assertNotIn((slice(1, 2), slice(1, 2)), d) # Extended slice d[1:2:3] = 1 self.assertEqual(d[1:2:3], 1) d[1:2:3] += 1 self.assertEqual(d[1:2:3], 2) del d[1:2:3] - self.assertEqual(slice(1, 2, 3) in d, False) + self.assertNotIn(slice(1, 2, 3), d) # Tuple of extended slices d[1:2:3, 1:2:3] = 1 self.assertEqual(d[1:2:3, 1:2:3], 1) d[1:2:3, 1:2:3] += 1 self.assertEqual(d[1:2:3, 1:2:3], 2) del d[1:2:3, 1:2:3] - self.assertEqual((slice(1, 2, 3), slice(1, 2, 3)) in d, False) + self.assertNotIn((slice(1, 2, 3), slice(1, 2, 3)), d) # Ellipsis d[...] = 1 self.assertEqual(d[...], 1) d[...] += 1 self.assertEqual(d[...], 2) del d[...] - self.assertEqual(Ellipsis in d, False) + self.assertNotIn(Ellipsis, d) # Tuple of Ellipses d[..., ...] = 1 self.assertEqual(d[..., ...], 1) d[..., ...] += 1 self.assertEqual(d[..., ...], 2) del d[..., ...] - self.assertEqual((Ellipsis, Ellipsis) in d, False) + self.assertNotIn((Ellipsis, Ellipsis), d) def test_mangling(self): class A: @@ -437,10 +437,10 @@ import __mangled_mod import __package__.module - self.assertTrue("_A__mangled" in A.f.func_code.co_varnames) - self.assertTrue("__not_mangled__" in A.f.func_code.co_varnames) - self.assertTrue("_A__mangled_mod" in A.f.func_code.co_varnames) - self.assertTrue("__package__" in A.f.func_code.co_varnames) + self.assertIn("_A__mangled", A.f.func_code.co_varnames) + self.assertIn("__not_mangled__", A.f.func_code.co_varnames) + self.assertIn("_A__mangled_mod", A.f.func_code.co_varnames) + self.assertIn("__package__", A.f.func_code.co_varnames) def test_compile_ast(self): fname = __file__ Modified: python/trunk/Lib/test/test_compiler.py ============================================================================== --- python/trunk/Lib/test/test_compiler.py (original) +++ python/trunk/Lib/test/test_compiler.py Sun Jan 24 00:04:36 2010 @@ -87,7 +87,7 @@ def testDocstrings(self): c = compiler.compile('"doc"', '', 'exec') - self.assertTrue('__doc__' in c.co_names) + self.assertIn('__doc__', c.co_names) c = compiler.compile('def f():\n "doc"', '', 'exec') g = {} exec c in g Modified: python/trunk/Lib/test/test_contains.py ============================================================================== --- python/trunk/Lib/test/test_contains.py (original) +++ python/trunk/Lib/test/test_contains.py Sun Jan 24 00:04:36 2010 @@ -20,57 +20,57 @@ a = base_set(1) b = set(1) c = seq(1) - self.assertTrue(1 in b) - self.assertTrue(0 not in b) - self.assertTrue(1 in c) - self.assertTrue(0 not in c) + self.assertIn(1, b) + self.assertNotIn(0, b) + self.assertIn(1, c) + self.assertNotIn(0, c) self.assertRaises(TypeError, lambda: 1 in a) self.assertRaises(TypeError, lambda: 1 not in a) # test char in string - self.assertTrue('c' in 'abc') - self.assertTrue('d' not in 'abc') + self.assertIn('c', 'abc') + self.assertNotIn('d', 'abc') - self.assertTrue('' in '') - self.assertTrue('' in 'abc') + self.assertIn('', '') + self.assertIn('', 'abc') self.assertRaises(TypeError, lambda: None in 'abc') if have_unicode: def test_char_in_unicode(self): - self.assertTrue('c' in unicode('abc')) - self.assertTrue('d' not in unicode('abc')) + self.assertIn('c', unicode('abc')) + self.assertNotIn('d', unicode('abc')) - self.assertTrue('' in unicode('')) - self.assertTrue(unicode('') in '') - self.assertTrue(unicode('') in unicode('')) - self.assertTrue('' in unicode('abc')) - self.assertTrue(unicode('') in 'abc') - self.assertTrue(unicode('') in unicode('abc')) + self.assertIn('', unicode('')) + self.assertIn(unicode(''), '') + self.assertIn(unicode(''), unicode('')) + self.assertIn('', unicode('abc')) + self.assertIn(unicode(''), 'abc') + self.assertIn(unicode(''), unicode('abc')) self.assertRaises(TypeError, lambda: None in unicode('abc')) # test Unicode char in Unicode - self.assertTrue(unicode('c') in unicode('abc')) - self.assertTrue(unicode('d') not in unicode('abc')) + self.assertIn(unicode('c'), unicode('abc')) + self.assertNotIn(unicode('d'), unicode('abc')) # test Unicode char in string - self.assertTrue(unicode('c') in 'abc') - self.assertTrue(unicode('d') not in 'abc') + self.assertIn(unicode('c'), 'abc') + self.assertNotIn(unicode('d'), 'abc') def test_builtin_sequence_types(self): # a collection of tests on builtin sequence types a = range(10) for i in a: - self.assertTrue(i in a) - self.assertTrue(16 not in a) - self.assertTrue(a not in a) + self.assertIn(i, a) + self.assertNotIn(16, a) + self.assertNotIn(a, a) a = tuple(a) for i in a: - self.assertTrue(i in a) - self.assertTrue(16 not in a) - self.assertTrue(a not in a) + self.assertIn(i, a) + self.assertNotIn(16, a) + self.assertNotIn(a, a) class Deviant1: """Behaves strangely when compared @@ -86,7 +86,7 @@ self.aList.remove(14) return 1 - self.assertTrue(Deviant1() not in Deviant1.aList) + self.assertNotIn(Deviant1(), Deviant1.aList) class Deviant2: """Behaves strangely when compared @@ -99,7 +99,7 @@ raise RuntimeError, "gotcha" try: - self.assertTrue(Deviant2() not in a) + self.assertNotIn(Deviant2(), a) except TypeError: pass Modified: python/trunk/Lib/test/test_cookielib.py ============================================================================== --- python/trunk/Lib/test/test_cookielib.py (original) +++ python/trunk/Lib/test/test_cookielib.py Sun Jan 24 00:04:36 2010 @@ -505,7 +505,7 @@ self.assertEquals(len(c), 2) c.clear_session_cookies() self.assertEquals(len(c), 1) - self.assertTrue('spam="bar"' in h) + self.assertIn('spam="bar"', h) # XXX RFC 2965 expiry rules (some apply to V0 too) @@ -517,39 +517,39 @@ c = CookieJar(pol) interact_2965(c, "http://www.acme.com/", 'spam="bar"; Version="1"') - self.assertTrue("/" in c._cookies["www.acme.com"]) + self.assertIn("/", c._cookies["www.acme.com"]) c = CookieJar(pol) interact_2965(c, "http://www.acme.com/blah", 'eggs="bar"; Version="1"') - self.assertTrue("/" in c._cookies["www.acme.com"]) + self.assertIn("/", c._cookies["www.acme.com"]) c = CookieJar(pol) interact_2965(c, "http://www.acme.com/blah/rhubarb", 'eggs="bar"; Version="1"') - self.assertTrue("/blah/" in c._cookies["www.acme.com"]) + self.assertIn("/blah/", c._cookies["www.acme.com"]) c = CookieJar(pol) interact_2965(c, "http://www.acme.com/blah/rhubarb/", 'eggs="bar"; Version="1"') - self.assertTrue("/blah/rhubarb/" in c._cookies["www.acme.com"]) + self.assertIn("/blah/rhubarb/", c._cookies["www.acme.com"]) # Netscape c = CookieJar() interact_netscape(c, "http://www.acme.com/", 'spam="bar"') - self.assertTrue("/" in c._cookies["www.acme.com"]) + self.assertIn("/", c._cookies["www.acme.com"]) c = CookieJar() interact_netscape(c, "http://www.acme.com/blah", 'eggs="bar"') - self.assertTrue("/" in c._cookies["www.acme.com"]) + self.assertIn("/", c._cookies["www.acme.com"]) c = CookieJar() interact_netscape(c, "http://www.acme.com/blah/rhubarb", 'eggs="bar"') - self.assertTrue("/blah" in c._cookies["www.acme.com"]) + self.assertIn("/blah", c._cookies["www.acme.com"]) c = CookieJar() interact_netscape(c, "http://www.acme.com/blah/rhubarb/", 'eggs="bar"') - self.assertTrue("/blah/rhubarb" in c._cookies["www.acme.com"]) + self.assertIn("/blah/rhubarb", c._cookies["www.acme.com"]) def test_escape_path(self): from cookielib import escape_path @@ -937,21 +937,21 @@ url = "http://foo.bar.com/" interact_2965(c, url, "spam=eggs; Version=1") h = interact_2965(c, url) - self.assertTrue("Domain" not in h, - "absent domain returned with domain present") + self.assertNotIn("Domain", h, + "absent domain returned with domain present") c = CookieJar(pol) url = "http://foo.bar.com/" interact_2965(c, url, 'spam=eggs; Version=1; Domain=.bar.com') h = interact_2965(c, url) - self.assertTrue('$Domain=".bar.com"' in h, "domain not returned") + self.assertIn('$Domain=".bar.com"', h, "domain not returned") c = CookieJar(pol) url = "http://foo.bar.com/" # note missing initial dot in Domain interact_2965(c, url, 'spam=eggs; Version=1; Domain=bar.com') h = interact_2965(c, url) - self.assertTrue('$Domain="bar.com"' in h, "domain not returned") + self.assertIn('$Domain="bar.com"', h, "domain not returned") def test_path_mirror(self): from cookielib import CookieJar, DefaultCookiePolicy @@ -962,14 +962,13 @@ url = "http://foo.bar.com/" interact_2965(c, url, "spam=eggs; Version=1") h = interact_2965(c, url) - self.assertTrue("Path" not in h, - "absent path returned with path present") + self.assertNotIn("Path", h, "absent path returned with path present") c = CookieJar(pol) url = "http://foo.bar.com/" interact_2965(c, url, 'spam=eggs; Version=1; Path=/') h = interact_2965(c, url) - self.assertTrue('$Path="/"' in h, "path not returned") + self.assertIn('$Path="/"', h, "path not returned") def test_port_mirror(self): from cookielib import CookieJar, DefaultCookiePolicy @@ -980,8 +979,7 @@ url = "http://foo.bar.com/" interact_2965(c, url, "spam=eggs; Version=1") h = interact_2965(c, url) - self.assertTrue("Port" not in h, - "absent port returned with port present") + self.assertNotIn("Port", h, "absent port returned with port present") c = CookieJar(pol) url = "http://foo.bar.com/" @@ -994,16 +992,16 @@ url = "http://foo.bar.com/" interact_2965(c, url, 'spam=eggs; Version=1; Port="80"') h = interact_2965(c, url) - self.assertTrue('$Port="80"' in h, - "port with single value not returned with single value") + self.assertIn('$Port="80"', h, + "port with single value not returned with single value") c = CookieJar(pol) url = "http://foo.bar.com/" interact_2965(c, url, 'spam=eggs; Version=1; Port="80,8080"') h = interact_2965(c, url) - self.assertTrue('$Port="80,8080"' in h, - "port with multiple values not returned with multiple " - "values") + self.assertIn('$Port="80,8080"', h, + "port with multiple values not returned with multiple " + "values") def test_no_return_comment(self): from cookielib import CookieJar, DefaultCookiePolicy @@ -1179,8 +1177,8 @@ c.add_cookie_header(req) h = req.get_header("Cookie") - self.assertTrue("PART_NUMBER=ROCKET_LAUNCHER_0001" in h and - "CUSTOMER=WILE_E_COYOTE" in h) + self.assertIn("PART_NUMBER=ROCKET_LAUNCHER_0001", h) + self.assertIn("CUSTOMER=WILE_E_COYOTE", h) headers.append('Set-Cookie: SHIPPING=FEDEX; path=/foo') res = FakeResponse(headers, "http://www.acme.com") @@ -1190,17 +1188,17 @@ c.add_cookie_header(req) h = req.get_header("Cookie") - self.assertTrue("PART_NUMBER=ROCKET_LAUNCHER_0001" in h and - "CUSTOMER=WILE_E_COYOTE" in h and - "SHIPPING=FEDEX" not in h) + self.assertIn("PART_NUMBER=ROCKET_LAUNCHER_0001", h) + self.assertIn("CUSTOMER=WILE_E_COYOTE", h) + self.assertNotIn("SHIPPING=FEDEX", h) req = Request("http://www.acme.com/foo/") c.add_cookie_header(req) h = req.get_header("Cookie") - self.assertTrue(("PART_NUMBER=ROCKET_LAUNCHER_0001" in h and - "CUSTOMER=WILE_E_COYOTE" in h and - h.startswith("SHIPPING=FEDEX;"))) + self.assertIn("PART_NUMBER=ROCKET_LAUNCHER_0001", h) + self.assertIn("CUSTOMER=WILE_E_COYOTE", h) + self.assertTrue(h.startswith("SHIPPING=FEDEX;")) def test_netscape_example_2(self): from cookielib import CookieJar @@ -1424,8 +1422,8 @@ # the server. cookie = interact_2965(c, "http://www.acme.com/acme/parts/") - self.assertTrue("Rocket_Launcher_0001" in cookie and - "Riding_Rocket_0023" not in cookie) + self.assertIn("Rocket_Launcher_0001", cookie) + self.assertNotIn("Riding_Rocket_0023", cookie) def test_rejection(self): # Test rejection of Set-Cookie2 responses based on domain, path, port. @@ -1579,11 +1577,11 @@ new_c = save_and_restore(c, True) self.assertEquals(len(new_c), 6) # none discarded - self.assertTrue("name='foo1', value='bar'" in repr(new_c)) + self.assertIn("name='foo1', value='bar'", repr(new_c)) new_c = save_and_restore(c, False) self.assertEquals(len(new_c), 4) # 2 of them discarded on save - self.assertTrue("name='foo1', value='bar'" in repr(new_c)) + self.assertIn("name='foo1', value='bar'", repr(new_c)) def test_netscape_misc(self): # Some additional Netscape cookies tests. @@ -1621,11 +1619,12 @@ "foo1=bar; PORT; Discard; Version=1;") cookie = interact_2965(c, "http://example/", 'foo2=bar; domain=".local"; Version=1') - self.assertTrue("foo1=bar" in cookie) + self.assertIn("foo1=bar", cookie) interact_2965(c, "http://example/", 'foo3=bar; Version=1') cookie = interact_2965(c, "http://example/") - self.assertTrue("foo2=bar" in cookie and len(c) == 3) + self.assertIn("foo2=bar", cookie) + self.assertEqual(len(c), 3) def test_intranet_domains_ns(self): from cookielib import CookieJar, DefaultCookiePolicy @@ -1635,10 +1634,10 @@ cookie = interact_netscape(c, "http://example/", 'foo2=bar; domain=.local') self.assertEquals(len(c), 2) - self.assertTrue("foo1=bar" in cookie) + self.assertIn("foo1=bar", cookie) cookie = interact_netscape(c, "http://example/") - self.assertTrue("foo2=bar" in cookie) + self.assertIn("foo2=bar", cookie) self.assertEquals(len(c), 2) def test_empty_path(self): Modified: python/trunk/Lib/test/test_copy.py ============================================================================== --- python/trunk/Lib/test/test_copy.py (original) +++ python/trunk/Lib/test/test_copy.py Sun Jan 24 00:04:36 2010 @@ -622,7 +622,7 @@ x, y = C(), C() # The underlying containers are decoupled v[x] = y - self.assertFalse(x in u) + self.assertNotIn(x, u) def test_copy_weakkeydict(self): self._check_copy_weakdict(weakref.WeakKeyDictionary) Modified: python/trunk/Lib/test/test_copy_reg.py ============================================================================== --- python/trunk/Lib/test/test_copy_reg.py (original) +++ python/trunk/Lib/test/test_copy_reg.py Sun Jan 24 00:04:36 2010 @@ -54,7 +54,7 @@ self.assertTrue(copy_reg._extension_registry[mod, func] == code) self.assertTrue(copy_reg._inverted_registry[code] == (mod, func)) # Shouldn't be in the cache. - self.assertTrue(code not in copy_reg._extension_cache) + self.assertNotIn(code, copy_reg._extension_cache) # Redundant registration should be OK. copy_reg.add_extension(mod, func, code) # shouldn't blow up # Conflicting code. @@ -81,7 +81,7 @@ e.restore() # Shouldn't be there anymore. - self.assertTrue((mod, func) not in copy_reg._extension_registry) + self.assertNotIn((mod, func), copy_reg._extension_registry) # The code *may* be in copy_reg._extension_registry, though, if # we happened to pick on a registered code. So don't check for # that. Modified: python/trunk/Lib/test/test_csv.py ============================================================================== --- python/trunk/Lib/test/test_csv.py (original) +++ python/trunk/Lib/test/test_csv.py Sun Jan 24 00:04:36 2010 @@ -935,7 +935,7 @@ # given that all three lines in sample3 are equal, # I think that any character could have been 'guessed' as the # delimiter, depending on dictionary order - self.assertTrue(dialect.delimiter in self.sample3) + self.assertIn(dialect.delimiter, self.sample3) dialect = sniffer.sniff(self.sample3, delimiters="?,") self.assertEqual(dialect.delimiter, "?") dialect = sniffer.sniff(self.sample3, delimiters="/,") Modified: python/trunk/Lib/test/test_datetime.py ============================================================================== --- python/trunk/Lib/test/test_datetime.py (original) +++ python/trunk/Lib/test/test_datetime.py Sun Jan 24 00:04:36 2010 @@ -141,11 +141,8 @@ self.assertFalse(() == me) self.assertTrue(() != me) - self.assertTrue(me in [1, 20L, [], me]) - self.assertFalse(me not in [1, 20L, [], me]) - - self.assertTrue([] in [me, 1, 20L, []]) - self.assertFalse([] not in [me, 1, 20L, []]) + self.assertIn(me, [1, 20L, [], me]) + self.assertIn([], [me, 1, 20L, []]) def test_harmful_mixed_comparison(self): me = self.theclass(1, 1, 1) Modified: python/trunk/Lib/test/test_dbm.py ============================================================================== --- python/trunk/Lib/test/test_dbm.py (original) +++ python/trunk/Lib/test/test_dbm.py Sun Jan 24 00:04:36 2010 @@ -21,9 +21,9 @@ self.d[k] = v self.assertEqual(sorted(self.d.keys()), sorted(k for (k, v) in a)) for k, v in a: - self.assertTrue(k in self.d) + self.assertIn(k, self.d) self.assertEqual(self.d[k], v) - self.assertTrue('xxx' not in self.d) + self.assertNotIn('xxx', self.d) self.assertRaises(KeyError, lambda: self.d['xxx']) self.d.close() Modified: python/trunk/Lib/test/test_decimal.py ============================================================================== --- python/trunk/Lib/test/test_decimal.py (original) +++ python/trunk/Lib/test/test_decimal.py Sun Jan 24 00:04:36 2010 @@ -1628,8 +1628,8 @@ self.assertEqual(v1, v2) def test_equality_with_other_types(self): - self.assertTrue(Decimal(10) in ['a', 1.0, Decimal(10), (1,2), {}]) - self.assertTrue(Decimal(10) not in ['a', 1.0, (1,2), {}]) + self.assertIn(Decimal(10), ['a', 1.0, Decimal(10), (1,2), {}]) + self.assertNotIn(Decimal(10), ['a', 1.0, (1,2), {}]) def test_copy(self): # All copies should be deep Modified: python/trunk/Lib/test/test_defaultdict.py ============================================================================== --- python/trunk/Lib/test/test_defaultdict.py (original) +++ python/trunk/Lib/test/test_defaultdict.py Sun Jan 24 00:04:36 2010 @@ -31,14 +31,14 @@ self.assertEqual(d2["foo"], 1) self.assertEqual(d2["bar"], 2) self.assertEqual(d2[42], []) - self.assertTrue("foo" in d2) - self.assertTrue("foo" in d2.keys()) - self.assertTrue("bar" in d2) - self.assertTrue("bar" in d2.keys()) - self.assertTrue(42 in d2) - self.assertTrue(42 in d2.keys()) - self.assertTrue(12 not in d2) - self.assertTrue(12 not in d2.keys()) + self.assertIn("foo", d2) + self.assertIn("foo", d2.keys()) + self.assertIn("bar", d2) + self.assertIn("bar", d2.keys()) + self.assertIn(42, d2) + self.assertIn(42, d2.keys()) + self.assertNotIn(12, d2) + self.assertNotIn(12, d2.keys()) d2.default_factory = None self.assertEqual(d2.default_factory, None) try: Modified: python/trunk/Lib/test/test_deque.py ============================================================================== --- python/trunk/Lib/test/test_deque.py (original) +++ python/trunk/Lib/test/test_deque.py Sun Jan 24 00:04:36 2010 @@ -199,9 +199,9 @@ self.assertEqual(len(d), n-i) j = random.randrange(-len(d), len(d)) val = d[j] - self.assertTrue(val in d) + self.assertIn(val, d) del d[j] - self.assertTrue(val not in d) + self.assertNotIn(val, d) self.assertEqual(len(d), 0) def test_reverse(self): @@ -328,7 +328,7 @@ e = eval(repr(d)) self.assertEqual(list(d), list(e)) d.append(d) - self.assertTrue('...' in repr(d)) + self.assertIn('...', repr(d)) def test_print(self): d = deque(xrange(200)) Modified: python/trunk/Lib/test/test_descr.py ============================================================================== --- python/trunk/Lib/test/test_descr.py (original) +++ python/trunk/Lib/test/test_descr.py Sun Jan 24 00:04:36 2010 @@ -527,7 +527,7 @@ return 42 self.assertEqual(C.name, 'C') self.assertEqual(C.bases, ()) - self.assertTrue('spam' in C.dict) + self.assertIn('spam', C.dict) c = C() self.assertEqual(c.spam(), 42) @@ -1802,10 +1802,10 @@ # depending on whether this test is run standalone or from a framework. self.assertTrue(str(c1).find('C object at ') >= 0) self.assertEqual(str(c1), repr(c1)) - self.assertTrue(-1 not in c1) + self.assertNotIn(-1, c1) for i in range(10): - self.assertTrue(i in c1) - self.assertFalse(10 in c1) + self.assertIn(i, c1) + self.assertNotIn(10, c1) # Test the default behavior for dynamic classes class D(object): def __getitem__(self, i): @@ -1826,10 +1826,10 @@ # depending on whether this test is run standalone or from a framework. self.assertTrue(str(d1).find('D object at ') >= 0) self.assertEqual(str(d1), repr(d1)) - self.assertTrue(-1 not in d1) + self.assertNotIn(-1, d1) for i in range(10): - self.assertTrue(i in d1) - self.assertFalse(10 in d1) + self.assertIn(i, d1) + self.assertNotIn(10, d1) # Test overridden behavior for static classes class Proxy(object): def __init__(self, x): @@ -1866,10 +1866,10 @@ self.assertEqual(str(p0), "Proxy:0") self.assertEqual(repr(p0), "Proxy(0)") p10 = Proxy(range(10)) - self.assertFalse(-1 in p10) + self.assertNotIn(-1, p10) for i in range(10): - self.assertTrue(i in p10) - self.assertFalse(10 in p10) + self.assertIn(i, p10) + self.assertNotIn(10, p10) # Test overridden behavior for dynamic classes class DProxy(object): def __init__(self, x): @@ -1906,10 +1906,10 @@ self.assertEqual(str(p0), "DProxy:0") self.assertEqual(repr(p0), "DProxy(0)") p10 = DProxy(range(10)) - self.assertFalse(-1 in p10) + self.assertNotIn(-1, p10) for i in range(10): - self.assertTrue(i in p10) - self.assertFalse(10 in p10) + self.assertIn(i, p10) + self.assertNotIn(10, p10) # Safety test for __cmp__ def unsafecmp(a, b): @@ -2028,10 +2028,10 @@ self.assertTrue(isinstance(raw, property)) attrs = dir(raw) - self.assertTrue("__doc__" in attrs) - self.assertTrue("fget" in attrs) - self.assertTrue("fset" in attrs) - self.assertTrue("fdel" in attrs) + self.assertIn("__doc__", attrs) + self.assertIn("fget", attrs) + self.assertIn("fset", attrs) + self.assertIn("fdel", attrs) self.assertEqual(raw.__doc__, "I'm the x property.") self.assertTrue(raw.fget is C.__dict__['getx']) @@ -2249,7 +2249,7 @@ cstuff = ['Cdata', 'Cmethod', '__doc__', '__module__'] self.assertEqual(dir(C), cstuff) - self.assertTrue('im_self' in dir(C.Cmethod)) + self.assertIn('im_self', dir(C.Cmethod)) c = C() # c.__doc__ is an odd thing to see here; ditto c.__module__. self.assertEqual(dir(c), cstuff) @@ -2257,7 +2257,7 @@ c.cdata = 2 c.cmethod = lambda self: 0 self.assertEqual(dir(c), cstuff + ['cdata', 'cmethod']) - self.assertTrue('im_self' in dir(c.Cmethod)) + self.assertIn('im_self', dir(c.Cmethod)) class A(C): Adata = 1 @@ -2265,10 +2265,10 @@ astuff = ['Adata', 'Amethod'] + cstuff self.assertEqual(dir(A), astuff) - self.assertTrue('im_self' in dir(A.Amethod)) + self.assertIn('im_self', dir(A.Amethod)) a = A() self.assertEqual(dir(a), astuff) - self.assertTrue('im_self' in dir(a.Amethod)) + self.assertIn('im_self', dir(a.Amethod)) a.adata = 42 a.amethod = lambda self: 3 self.assertEqual(dir(a), astuff + ['adata', 'amethod']) @@ -2287,12 +2287,12 @@ c = C() self.assertEqual(interesting(dir(c)), cstuff) - self.assertTrue('im_self' in dir(C.Cmethod)) + self.assertIn('im_self', dir(C.Cmethod)) c.cdata = 2 c.cmethod = lambda self: 0 self.assertEqual(interesting(dir(c)), cstuff + ['cdata', 'cmethod']) - self.assertTrue('im_self' in dir(c.Cmethod)) + self.assertIn('im_self', dir(c.Cmethod)) class A(C): Adata = 1 @@ -2300,13 +2300,13 @@ astuff = ['Adata', 'Amethod'] + cstuff self.assertEqual(interesting(dir(A)), astuff) - self.assertTrue('im_self' in dir(A.Amethod)) + self.assertIn('im_self', dir(A.Amethod)) a = A() self.assertEqual(interesting(dir(a)), astuff) a.adata = 42 a.amethod = lambda self: 3 self.assertEqual(interesting(dir(a)), astuff + ['adata', 'amethod']) - self.assertTrue('im_self' in dir(a.Amethod)) + self.assertIn('im_self', dir(a.Amethod)) # Try a module subclass. import sys @@ -2864,7 +2864,7 @@ self.assertEqual(d[cistr('one')], 1) self.assertEqual(d[cistr('tWo')], 2) self.assertEqual(d[cistr('THrEE')], 3) - self.assertTrue(cistr('ONe') in d) + self.assertIn(cistr('ONe'), d) self.assertEqual(d.get(cistr('thrEE')), 3) def test_classic_comparisons(self): Modified: python/trunk/Lib/test/test_dict.py ============================================================================== --- python/trunk/Lib/test/test_dict.py (original) +++ python/trunk/Lib/test/test_dict.py Sun Jan 24 00:04:36 2010 @@ -67,12 +67,13 @@ def test_contains(self): d = {} + self.assertNotIn('a', d) self.assertTrue(not ('a' in d)) self.assertTrue('a' not in d) d = {'a': 1, 'b': 2} - self.assertTrue('a' in d) - self.assertTrue('b' in d) - self.assertTrue('c' not in d) + self.assertIn('a', d) + self.assertIn('b', d) + self.assertNotIn('c', d) self.assertRaises(TypeError, d.__contains__) @@ -430,8 +431,8 @@ d = D({1: 2, 3: 4}) self.assertEqual(d[1], 2) self.assertEqual(d[3], 4) - self.assertTrue(2 not in d) - self.assertTrue(2 not in d.keys()) + self.assertNotIn(2, d) + self.assertNotIn(2, d.keys()) self.assertEqual(d[2], 42) class E(dict): def __missing__(self, key): Modified: python/trunk/Lib/test/test_dictviews.py ============================================================================== --- python/trunk/Lib/test/test_dictviews.py (original) +++ python/trunk/Lib/test/test_dictviews.py Sun Jan 24 00:04:36 2010 @@ -24,10 +24,10 @@ self.assertNotEqual(keys, set([1, "b"])) self.assertNotEqual(keys, set([1])) self.assertNotEqual(keys, 42) - self.assert_(1 in keys) - self.assert_("a" in keys) - self.assert_(10 not in keys) - self.assert_("Z" not in keys) + self.assertIn(1, keys) + self.assertIn("a", keys) + self.assertNotIn(10, keys) + self.assertNotIn("Z", keys) self.assertEqual(d.viewkeys(), d.viewkeys()) e = {1: 11, "a": "def"} self.assertEqual(d.viewkeys(), e.viewkeys()) @@ -44,13 +44,13 @@ self.assertNotEqual(items, set([(1, 10), ("a", "def")])) self.assertNotEqual(items, set([(1, 10)])) self.assertNotEqual(items, 42) - self.assert_((1, 10) in items) - self.assert_(("a", "ABC") in items) - self.assert_((1, 11) not in items) - self.assert_(1 not in items) - self.assert_(() not in items) - self.assert_((1,) not in items) - self.assert_((1, 2, 3) not in items) + self.assertIn((1, 10), items) + self.assertIn(("a", "ABC"), items) + self.assertNotIn((1, 11), items) + self.assertNotIn(1, items) + self.assertNotIn((), items) + self.assertNotIn((1,), items) + self.assertNotIn((1, 2, 3), items) self.assertEqual(d.viewitems(), d.viewitems()) e = d.copy() self.assertEqual(d.viewitems(), e.viewitems()) Modified: python/trunk/Lib/test/test_dis.py ============================================================================== --- python/trunk/Lib/test/test_dis.py (original) +++ python/trunk/Lib/test/test_dis.py Sun Jan 24 00:04:36 2010 @@ -103,8 +103,8 @@ def test_opmap(self): self.assertEqual(dis.opmap["STOP_CODE"], 0) - self.assertEqual(dis.opmap["LOAD_CONST"] in dis.hasconst, True) - self.assertEqual(dis.opmap["STORE_NAME"] in dis.hasname, True) + self.assertIn(dis.opmap["LOAD_CONST"], dis.hasconst) + self.assertIn(dis.opmap["STORE_NAME"], dis.hasname) def test_opname(self): self.assertEqual(dis.opname[dis.opmap["LOAD_FAST"]], "LOAD_FAST") Modified: python/trunk/Lib/test/test_docxmlrpc.py ============================================================================== --- python/trunk/Lib/test/test_docxmlrpc.py (original) +++ python/trunk/Lib/test/test_docxmlrpc.py Sun Jan 24 00:04:36 2010 @@ -19,8 +19,8 @@ serv.set_server_title("DocXMLRPCServer Test Documentation") serv.set_server_name("DocXMLRPCServer Test Docs") serv.set_server_documentation( -"""This is an XML-RPC server's documentation, but the server can be used by -POSTing to /RPC2. Try self.add, too.""") + "This is an XML-RPC server's documentation, but the server " + "can be used by POSTing to /RPC2. Try self.add, too.") # Create and register classes and functions class TestClass(object): @@ -107,9 +107,9 @@ self.client.request("GET", "/") response = self.client.getresponse() - self.assertTrue( -"""
      <lambda>(x, y)
      """ - in response.read()) + self.assertIn('
      ' + '<lambda>(x, y)
      ', + response.read()) def test_autolinking(self): """Test that the server correctly automatically wraps references to PEPS @@ -121,9 +121,17 @@ self.client.request("GET", "/") response = self.client.getresponse() - self.assertTrue( # This is ugly ... how can it be made better? -"""
      add(x, y)
      Add two instances together. This follows PEP008, but has nothing
      \nto do with RFC1952. Case should matter: pEp008 and rFC1952.  Things
      \nthat start with http and ftp should be auto-linked, too:
      \nhttp://google.com.
      """ - in response.read()) + self.assertIn( + ('
      add(x, y)
      ' + 'Add two instances together. This ' + 'follows ' + 'PEP008, but has nothing
      \nto do ' + 'with ' + 'RFC1952. Case should matter: pEp008 ' + 'and rFC1952.  Things
      \nthat start ' + 'with http and ftp should be ' + 'auto-linked, too:
      \n' + 'http://google.com.
      '), response.read()) def test_system_methods(self): """Test the precense of three consecutive system.* methods. @@ -134,9 +142,29 @@ self.client.request("GET", "/") response = self.client.getresponse() - self.assertTrue( -"""
      system.listMethods()
      system.listMethods() => [\'add\', \'subtract\', \'multiple\']
      \n 
      \nReturns a list of the methods supported by the server.
      \n
      system.methodHelp(method_name)
      system.methodHelp(\'add\') => "Adds two integers together"
      \n 
      \nReturns a string containing documentation for the specified method.
      \n
      system.methodSignature(method_name)
      system.methodSignature(\'add\') => [double, int, int]
      \n 
      \nReturns a list describing the signature of the method. In the
      \nabove example, the add method takes two integers as arguments
      \nand returns a double result.
      \n 
      \nThis server does NOT support system.methodSignature.
      """ - in response.read()) + self.assertIn( + ('
      system.listMethods' + '()
      system' + '.listMethods() => [\'add\', \'subtract\',' + ' \'multiple\']
      \n 
      \nReturns a list' + ' of the methods supported by the' + ' server.
      \n
      ' + 'system.methodHelp(method_name)
      ' + 'system.methodHelp(\'add\') ' + '=> "Adds two integers together"
      \n ' + '
      \nReturns a string containing documentation' + ' for the specified method.
      \n ' + '
      system.' + 'methodSignature(method_name)
      system.methodSignature(\'add\') ' + '=> [double, int, int]
      \n 
      \nReturns' + ' a list describing the signature of' + ' the method. In the
      \nabove example,' + ' the add method takes two integers' + ' as arguments
      \nand returns a double' + ' result.
      \n 
      \nThis server does ' + 'NOT support system.methodSignature.
      '), + response.read()) def test_autolink_dotted_methods(self): """Test that selfdot values are made strong automatically in the @@ -144,8 +172,8 @@ self.client.request("GET", "/") response = self.client.getresponse() - self.assertTrue("""Try self.add, too.""" in - response.read()) + self.assertIn("""Try self.add, too.""", + response.read()) def test_main(): test_support.run_unittest(DocXMLRPCHTTPGETServer) Modified: python/trunk/Lib/test/test_errno.py ============================================================================== --- python/trunk/Lib/test/test_errno.py (original) +++ python/trunk/Lib/test/test_errno.py Sun Jan 24 00:04:36 2010 @@ -28,8 +28,8 @@ def test_attributes_in_errorcode(self): for attribute in errno.__dict__.iterkeys(): if attribute.isupper(): - self.assertTrue(getattr(errno, attribute) in errno.errorcode, - 'no %s attr in errno.errorcode' % attribute) + self.assertIn(getattr(errno, attribute), errno.errorcode, + 'no %s attr in errno.errorcode' % attribute) def test_main(): Modified: python/trunk/Lib/test/test_exceptions.py ============================================================================== --- python/trunk/Lib/test/test_exceptions.py (original) +++ python/trunk/Lib/test/test_exceptions.py Sun Jan 24 00:04:36 2010 @@ -428,7 +428,7 @@ return sys.exc_info() e, v, tb = g() self.assertTrue(e is RuntimeError, e) - self.assertTrue("maximum recursion depth exceeded" in str(v), v) + self.assertIn("maximum recursion depth exceeded", str(v)) Modified: python/trunk/Lib/test/test_float.py ============================================================================== --- python/trunk/Lib/test/test_float.py (original) +++ python/trunk/Lib/test/test_float.py Sun Jan 24 00:04:36 2010 @@ -434,10 +434,10 @@ float.__setformat__('float', self.save_formats['float']) def test_getformat(self): - self.assertTrue(float.__getformat__('double') in - ['unknown', 'IEEE, big-endian', 'IEEE, little-endian']) - self.assertTrue(float.__getformat__('float') in - ['unknown', 'IEEE, big-endian', 'IEEE, little-endian']) + self.assertIn(float.__getformat__('double'), + ['unknown', 'IEEE, big-endian', 'IEEE, little-endian']) + self.assertIn(float.__getformat__('float'), + ['unknown', 'IEEE, big-endian', 'IEEE, little-endian']) self.assertRaises(ValueError, float.__getformat__, 'chicken') self.assertRaises(TypeError, float.__getformat__, 1) Modified: python/trunk/Lib/test/test_funcattrs.py ============================================================================== --- python/trunk/Lib/test/test_funcattrs.py (original) +++ python/trunk/Lib/test/test_funcattrs.py Sun Jan 24 00:04:36 2010 @@ -36,14 +36,14 @@ def test_dir_includes_correct_attrs(self): self.b.known_attr = 7 - self.assertTrue('known_attr' in dir(self.b), + self.assertIn('known_attr', dir(self.b), "set attributes not in dir listing of method") # Test on underlying function object of method self.f.a.im_func.known_attr = 7 - self.assertTrue('known_attr' in dir(self.f.a), + self.assertIn('known_attr', dir(self.f.a), "set attribute on unbound method implementation in " "class not in dir") - self.assertTrue('known_attr' in dir(self.fi.a), + self.assertIn('known_attr', dir(self.fi.a), "set attribute on unbound method implementations, " "should show up in next dir") Modified: python/trunk/Lib/test/test_gdbm.py ============================================================================== --- python/trunk/Lib/test/test_gdbm.py (original) +++ python/trunk/Lib/test/test_gdbm.py Sun Jan 24 00:04:36 2010 @@ -27,7 +27,7 @@ self.assertTrue(self.g.has_key('a')) key = self.g.firstkey() while key: - self.assertTrue(key in key_set) + self.assertIn(key, key_set) key_set.remove(key) key = self.g.nextkey(key) self.assertRaises(KeyError, lambda: self.g['xxx']) Modified: python/trunk/Lib/test/test_glob.py ============================================================================== --- python/trunk/Lib/test/test_glob.py (original) +++ python/trunk/Lib/test/test_glob.py Sun Jan 24 00:04:36 2010 @@ -96,7 +96,7 @@ res = glob.glob(self.tempdir + '*' + os.sep) self.assertEqual(len(res), 1) # either of these results are reasonable - self.assertTrue(res[0] in [self.tempdir, self.tempdir + os.sep]) + self.assertIn(res[0], [self.tempdir, self.tempdir + os.sep]) def test_glob_broken_symlinks(self): if hasattr(os, 'symlink'): Modified: python/trunk/Lib/test/test_import.py ============================================================================== --- python/trunk/Lib/test/test_import.py (original) +++ python/trunk/Lib/test/test_import.py Sun Jan 24 00:04:36 2010 @@ -202,7 +202,7 @@ sys.path.insert(0, os.curdir) try: mod = __import__(TESTFN) - self.assertTrue(TESTFN in sys.modules, "expected module in sys.modules") + self.assertIn(TESTFN, sys.modules) self.assertEquals(mod.a, 1, "module has wrong attribute values") self.assertEquals(mod.b, 2, "module has wrong attribute values") @@ -436,14 +436,14 @@ ns = dict(__package__='foo', __name__='test.notarealmodule') with check_warnings() as w: check_absolute() - self.assertTrue('foo' in str(w.message)) + self.assertIn('foo', str(w.message)) self.assertEqual(w.category, RuntimeWarning) self.assertRaises(SystemError, check_relative) # Check relative fails with __package__ and __name__ wrong ns = dict(__package__='foo', __name__='notarealpkg.notarealmodule') with check_warnings() as w: check_absolute() - self.assertTrue('foo' in str(w.message)) + self.assertIn('foo', str(w.message)) self.assertEqual(w.category, RuntimeWarning) self.assertRaises(SystemError, check_relative) # Check both fail with package set to a non-string Modified: python/trunk/Lib/test/test_inspect.py ============================================================================== --- python/trunk/Lib/test/test_inspect.py (original) +++ python/trunk/Lib/test/test_inspect.py Sun Jan 24 00:04:36 2010 @@ -112,8 +112,8 @@ x = C() x.a = 42 members = dict(inspect.getmembers(x)) - self.assertTrue('a' in members) - self.assertTrue('b' not in members) + self.assertIn('a', members) + self.assertNotIn('b', members) def test_isabstract(self): from abc import ABCMeta, abstractmethod @@ -442,23 +442,23 @@ datablob = '1' attrs = attrs_wo_objs(A) - self.assertTrue(('s', 'static method', A) in attrs, 'missing static method') - self.assertTrue(('c', 'class method', A) in attrs, 'missing class method') - self.assertTrue(('p', 'property', A) in attrs, 'missing property') - self.assertTrue(('m', 'method', A) in attrs, 'missing plain method') - self.assertTrue(('m1', 'method', A) in attrs, 'missing plain method') - self.assertTrue(('datablob', 'data', A) in attrs, 'missing data') + self.assertIn(('s', 'static method', A), attrs, 'missing static method') + self.assertIn(('c', 'class method', A), attrs, 'missing class method') + self.assertIn(('p', 'property', A), attrs, 'missing property') + self.assertIn(('m', 'method', A), attrs, 'missing plain method') + self.assertIn(('m1', 'method', A), attrs, 'missing plain method') + self.assertIn(('datablob', 'data', A), attrs, 'missing data') class B(A): def m(self): pass attrs = attrs_wo_objs(B) - self.assertTrue(('s', 'static method', A) in attrs, 'missing static method') - self.assertTrue(('c', 'class method', A) in attrs, 'missing class method') - self.assertTrue(('p', 'property', A) in attrs, 'missing property') - self.assertTrue(('m', 'method', B) in attrs, 'missing plain method') - self.assertTrue(('m1', 'method', A) in attrs, 'missing plain method') - self.assertTrue(('datablob', 'data', A) in attrs, 'missing data') + self.assertIn(('s', 'static method', A), attrs, 'missing static method') + self.assertIn(('c', 'class method', A), attrs, 'missing class method') + self.assertIn(('p', 'property', A), attrs, 'missing property') + self.assertIn(('m', 'method', B), attrs, 'missing plain method') + self.assertIn(('m1', 'method', A), attrs, 'missing plain method') + self.assertIn(('datablob', 'data', A), attrs, 'missing data') class C(A): @@ -466,23 +466,23 @@ def c(self): pass attrs = attrs_wo_objs(C) - self.assertTrue(('s', 'static method', A) in attrs, 'missing static method') - self.assertTrue(('c', 'method', C) in attrs, 'missing plain method') - self.assertTrue(('p', 'property', A) in attrs, 'missing property') - self.assertTrue(('m', 'method', C) in attrs, 'missing plain method') - self.assertTrue(('m1', 'method', A) in attrs, 'missing plain method') - self.assertTrue(('datablob', 'data', A) in attrs, 'missing data') + self.assertIn(('s', 'static method', A), attrs, 'missing static method') + self.assertIn(('c', 'method', C), attrs, 'missing plain method') + self.assertIn(('p', 'property', A), attrs, 'missing property') + self.assertIn(('m', 'method', C), attrs, 'missing plain method') + self.assertIn(('m1', 'method', A), attrs, 'missing plain method') + self.assertIn(('datablob', 'data', A), attrs, 'missing data') class D(B, C): def m1(self): pass attrs = attrs_wo_objs(D) - self.assertTrue(('s', 'static method', A) in attrs, 'missing static method') - self.assertTrue(('c', 'class method', A) in attrs, 'missing class method') - self.assertTrue(('p', 'property', A) in attrs, 'missing property') - self.assertTrue(('m', 'method', B) in attrs, 'missing plain method') - self.assertTrue(('m1', 'method', D) in attrs, 'missing plain method') - self.assertTrue(('datablob', 'data', A) in attrs, 'missing data') + self.assertIn(('s', 'static method', A), attrs, 'missing static method') + self.assertIn(('c', 'class method', A), attrs, 'missing class method') + self.assertIn(('p', 'property', A), attrs, 'missing property') + self.assertIn(('m', 'method', B), attrs, 'missing plain method') + self.assertIn(('m1', 'method', D), attrs, 'missing plain method') + self.assertIn(('datablob', 'data', A), attrs, 'missing data') # Repeat all that, but w/ new-style classes. def test_classify_newstyle(self): @@ -504,24 +504,24 @@ datablob = '1' attrs = attrs_wo_objs(A) - self.assertTrue(('s', 'static method', A) in attrs, 'missing static method') - self.assertTrue(('c', 'class method', A) in attrs, 'missing class method') - self.assertTrue(('p', 'property', A) in attrs, 'missing property') - self.assertTrue(('m', 'method', A) in attrs, 'missing plain method') - self.assertTrue(('m1', 'method', A) in attrs, 'missing plain method') - self.assertTrue(('datablob', 'data', A) in attrs, 'missing data') + self.assertIn(('s', 'static method', A), attrs, 'missing static method') + self.assertIn(('c', 'class method', A), attrs, 'missing class method') + self.assertIn(('p', 'property', A), attrs, 'missing property') + self.assertIn(('m', 'method', A), attrs, 'missing plain method') + self.assertIn(('m1', 'method', A), attrs, 'missing plain method') + self.assertIn(('datablob', 'data', A), attrs, 'missing data') class B(A): def m(self): pass attrs = attrs_wo_objs(B) - self.assertTrue(('s', 'static method', A) in attrs, 'missing static method') - self.assertTrue(('c', 'class method', A) in attrs, 'missing class method') - self.assertTrue(('p', 'property', A) in attrs, 'missing property') - self.assertTrue(('m', 'method', B) in attrs, 'missing plain method') - self.assertTrue(('m1', 'method', A) in attrs, 'missing plain method') - self.assertTrue(('datablob', 'data', A) in attrs, 'missing data') + self.assertIn(('s', 'static method', A), attrs, 'missing static method') + self.assertIn(('c', 'class method', A), attrs, 'missing class method') + self.assertIn(('p', 'property', A), attrs, 'missing property') + self.assertIn(('m', 'method', B), attrs, 'missing plain method') + self.assertIn(('m1', 'method', A), attrs, 'missing plain method') + self.assertIn(('datablob', 'data', A), attrs, 'missing data') class C(A): @@ -530,24 +530,24 @@ def c(self): pass attrs = attrs_wo_objs(C) - self.assertTrue(('s', 'static method', A) in attrs, 'missing static method') - self.assertTrue(('c', 'method', C) in attrs, 'missing plain method') - self.assertTrue(('p', 'property', A) in attrs, 'missing property') - self.assertTrue(('m', 'method', C) in attrs, 'missing plain method') - self.assertTrue(('m1', 'method', A) in attrs, 'missing plain method') - self.assertTrue(('datablob', 'data', A) in attrs, 'missing data') + self.assertIn(('s', 'static method', A), attrs, 'missing static method') + self.assertIn(('c', 'method', C), attrs, 'missing plain method') + self.assertIn(('p', 'property', A), attrs, 'missing property') + self.assertIn(('m', 'method', C), attrs, 'missing plain method') + self.assertIn(('m1', 'method', A), attrs, 'missing plain method') + self.assertIn(('datablob', 'data', A), attrs, 'missing data') class D(B, C): def m1(self): pass attrs = attrs_wo_objs(D) - self.assertTrue(('s', 'static method', A) in attrs, 'missing static method') - self.assertTrue(('c', 'method', C) in attrs, 'missing plain method') - self.assertTrue(('p', 'property', A) in attrs, 'missing property') - self.assertTrue(('m', 'method', B) in attrs, 'missing plain method') - self.assertTrue(('m1', 'method', D) in attrs, 'missing plain method') - self.assertTrue(('datablob', 'data', A) in attrs, 'missing data') + self.assertIn(('s', 'static method', A), attrs, 'missing static method') + self.assertIn(('c', 'method', C), attrs, 'missing plain method') + self.assertIn(('p', 'property', A), attrs, 'missing property') + self.assertIn(('m', 'method', B), attrs, 'missing plain method') + self.assertIn(('m1', 'method', D), attrs, 'missing plain method') + self.assertIn(('datablob', 'data', A), attrs, 'missing data') def test_main(): run_unittest(TestDecorators, TestRetrievingSourceCode, TestOneliners, Modified: python/trunk/Lib/test/test_ioctl.py ============================================================================== --- python/trunk/Lib/test/test_ioctl.py (original) +++ python/trunk/Lib/test/test_ioctl.py Sun Jan 24 00:04:36 2010 @@ -24,7 +24,7 @@ tty = open("/dev/tty", "r") r = fcntl.ioctl(tty, termios.TIOCGPGRP, " ") rpgrp = struct.unpack("i", r)[0] - self.assertTrue(rpgrp in ids, "%s not in %s" % (rpgrp, ids)) + self.assertIn(rpgrp, ids) def test_ioctl_mutate(self): import array @@ -34,7 +34,7 @@ r = fcntl.ioctl(tty, termios.TIOCGPGRP, buf, 1) rpgrp = buf[0] self.assertEquals(r, 0) - self.assertTrue(rpgrp in ids, "%s not in %s" % (rpgrp, ids)) + self.assertIn(rpgrp, ids) def test_ioctl_signed_unsigned_code_param(self): if not pty: Modified: python/trunk/Lib/test/test_iter.py ============================================================================== --- python/trunk/Lib/test/test_iter.py (original) +++ python/trunk/Lib/test/test_iter.py Sun Jan 24 00:04:36 2010 @@ -566,23 +566,23 @@ def test_in_and_not_in(self): for sc5 in IteratingSequenceClass(5), SequenceClass(5): for i in range(5): - self.assertTrue(i in sc5) + self.assertIn(i, sc5) for i in "abc", -1, 5, 42.42, (3, 4), [], {1: 1}, 3-12j, sc5: - self.assertTrue(i not in sc5) + self.assertNotIn(i, sc5) self.assertRaises(TypeError, lambda: 3 in 12) self.assertRaises(TypeError, lambda: 3 not in map) d = {"one": 1, "two": 2, "three": 3, 1j: 2j} for k in d: - self.assertTrue(k in d) - self.assertTrue(k not in d.itervalues()) + self.assertIn(k, d) + self.assertNotIn(k, d.itervalues()) for v in d.values(): - self.assertTrue(v in d.itervalues()) - self.assertTrue(v not in d) + self.assertIn(v, d.itervalues()) + self.assertNotIn(v, d) for k, v in d.iteritems(): - self.assertTrue((k, v) in d.iteritems()) - self.assertTrue((v, k) not in d.iteritems()) + self.assertIn((k, v), d.iteritems()) + self.assertNotIn((v, k), d.iteritems()) f = open(TESTFN, "w") try: @@ -593,9 +593,9 @@ try: for chunk in "abc": f.seek(0, 0) - self.assertTrue(chunk not in f) + self.assertNotIn(chunk, f) f.seek(0, 0) - self.assertTrue((chunk + "\n") in f) + self.assertIn((chunk + "\n"), f) finally: f.close() try: Modified: python/trunk/Lib/test/test_itertools.py ============================================================================== --- python/trunk/Lib/test/test_itertools.py (original) +++ python/trunk/Lib/test/test_itertools.py Sun Jan 24 00:04:36 2010 @@ -1385,7 +1385,7 @@ Subclass(newarg=1) except TypeError, err: # we expect type errors because of wrong argument count - self.assertFalse("does not take keyword arguments" in err.args[0]) + self.assertNotIn("does not take keyword arguments", err.args[0]) libreftest = """ Doctest for examples in the library reference: libitertools.tex Modified: python/trunk/Lib/test/test_mhlib.py ============================================================================== --- python/trunk/Lib/test/test_mhlib.py (original) +++ python/trunk/Lib/test/test_mhlib.py Sun Jan 24 00:04:36 2010 @@ -256,7 +256,7 @@ eq = self.assertEquals mh.makefolder("dummy1") - self.assertTrue("dummy1" in mh.listfolders()) + self.assertIn("dummy1", mh.listfolders()) path = os.path.join(_mhpath, "dummy1") self.assertTrue(os.path.exists(path)) @@ -310,7 +310,7 @@ mh.deletefolder('dummy1') mh.deletefolder('dummy2') - self.assertTrue('dummy1' not in mh.listfolders()) + self.assertNotIn('dummy1', mh.listfolders()) self.assertTrue(not os.path.exists(path)) def test_read(self): Modified: python/trunk/Lib/test/test_mimetools.py ============================================================================== --- python/trunk/Lib/test/test_mimetools.py (original) +++ python/trunk/Lib/test/test_mimetools.py Sun Jan 24 00:04:36 2010 @@ -31,7 +31,7 @@ s = set([""]) for i in xrange(100): nb = mimetools.choose_boundary() - self.assertTrue(nb not in s) + self.assertNotIn(nb, s) s.add(nb) def test_message(self): Modified: python/trunk/Lib/test/test_mmap.py ============================================================================== --- python/trunk/Lib/test/test_mmap.py (original) +++ python/trunk/Lib/test/test_mmap.py Sun Jan 24 00:04:36 2010 @@ -502,7 +502,7 @@ def test_error(self): self.assertTrue(issubclass(mmap.error, EnvironmentError)) - self.assertTrue("mmap.error" in str(mmap.error)) + self.assertIn("mmap.error", str(mmap.error)) def test_io_methods(self): data = "0123456789" Modified: python/trunk/Lib/test/test_multibytecodec.py ============================================================================== --- python/trunk/Lib/test/test_multibytecodec.py (original) +++ python/trunk/Lib/test/test_multibytecodec.py Sun Jan 24 00:04:36 2010 @@ -222,7 +222,7 @@ self.assertEqual(iso2022jp2.decode('iso2022-jp-2'), uni) def test_iso2022_jp_g0(self): - self.assertFalse('\x0e' in u'\N{SOFT HYPHEN}'.encode('iso-2022-jp-2')) + self.assertNotIn('\x0e', u'\N{SOFT HYPHEN}'.encode('iso-2022-jp-2')) for encoding in ('iso-2022-jp-2004', 'iso-2022-jp-3'): e = u'\u3406'.encode(encoding) self.assertFalse(filter(lambda x: x >= '\x80', e)) Modified: python/trunk/Lib/test/test_multiprocessing.py ============================================================================== --- python/trunk/Lib/test/test_multiprocessing.py (original) +++ python/trunk/Lib/test/test_multiprocessing.py Sun Jan 24 00:04:36 2010 @@ -162,7 +162,7 @@ self.assertEquals(p.authkey, current.authkey) self.assertEquals(p.is_alive(), False) self.assertEquals(p.daemon, True) - self.assertTrue(p not in self.active_children()) + self.assertNotIn(p, self.active_children()) self.assertTrue(type(self.active_children()) is list) self.assertEqual(p.exitcode, None) @@ -170,7 +170,7 @@ self.assertEquals(p.exitcode, None) self.assertEquals(p.is_alive(), True) - self.assertTrue(p in self.active_children()) + self.assertIn(p, self.active_children()) self.assertEquals(q.get(), args[1:]) self.assertEquals(q.get(), kwargs) @@ -183,7 +183,7 @@ self.assertEquals(p.exitcode, 0) self.assertEquals(p.is_alive(), False) - self.assertTrue(p not in self.active_children()) + self.assertNotIn(p, self.active_children()) def _test_terminate(self): time.sleep(1000) @@ -197,7 +197,7 @@ p.start() self.assertEqual(p.is_alive(), True) - self.assertTrue(p in self.active_children()) + self.assertIn(p, self.active_children()) self.assertEqual(p.exitcode, None) p.terminate() @@ -207,7 +207,7 @@ self.assertTimingAlmostEqual(join.elapsed, 0.0) self.assertEqual(p.is_alive(), False) - self.assertTrue(p not in self.active_children()) + self.assertNotIn(p, self.active_children()) p.join() @@ -226,13 +226,13 @@ self.assertEqual(type(self.active_children()), list) p = self.Process(target=time.sleep, args=(DELTA,)) - self.assertTrue(p not in self.active_children()) + self.assertNotIn(p, self.active_children()) p.start() - self.assertTrue(p in self.active_children()) + self.assertIn(p, self.active_children()) p.join() - self.assertTrue(p not in self.active_children()) + self.assertNotIn(p, self.active_children()) def _test_recursion(self, wconn, id): from multiprocessing import forking Modified: python/trunk/Lib/test/test_os.py ============================================================================== --- python/trunk/Lib/test/test_os.py (original) +++ python/trunk/Lib/test/test_os.py Sun Jan 24 00:04:36 2010 @@ -198,7 +198,7 @@ def trunc(x): return x self.assertEquals(trunc(getattr(result, attr)), result[getattr(stat, name)]) - self.assertTrue(attr in members) + self.assertIn(attr, members) try: result[200] Modified: python/trunk/Lib/test/test_peepholer.py ============================================================================== --- python/trunk/Lib/test/test_peepholer.py (original) +++ python/trunk/Lib/test/test_peepholer.py Sun Jan 24 00:04:36 2010 @@ -25,8 +25,8 @@ del x asm = disassemble(unot) for elem in ('UNARY_NOT', 'POP_JUMP_IF_FALSE'): - self.assertTrue(elem not in asm) - self.assertTrue('POP_JUMP_IF_TRUE' in asm) + self.assertNotIn(elem, asm) + self.assertIn('POP_JUMP_IF_TRUE', asm) def test_elim_inversion_of_is_or_in(self): for line, elem in ( @@ -36,7 +36,7 @@ ('not a not in b', '(in)',), ): asm = dis_single(line) - self.assertTrue(elem in asm) + self.assertIn(elem, asm) def test_none_as_constant(self): # LOAD_GLOBAL None --> LOAD_CONST None @@ -45,14 +45,14 @@ return x asm = disassemble(f) for elem in ('LOAD_GLOBAL',): - self.assertTrue(elem not in asm) + self.assertNotIn(elem, asm) for elem in ('LOAD_CONST', '(None)'): - self.assertTrue(elem in asm) + self.assertIn(elem, asm) def f(): 'Adding a docstring made this test fail in Py2.5.0' return None - self.assertTrue('LOAD_CONST' in disassemble(f)) - self.assertTrue('LOAD_GLOBAL' not in disassemble(f)) + self.assertIn('LOAD_CONST', disassemble(f)) + self.assertNotIn('LOAD_GLOBAL', disassemble(f)) def test_while_one(self): # Skip over: LOAD_CONST trueconst POP_JUMP_IF_FALSE xx @@ -62,9 +62,9 @@ return list asm = disassemble(f) for elem in ('LOAD_CONST', 'POP_JUMP_IF_FALSE'): - self.assertTrue(elem not in asm) + self.assertNotIn(elem, asm) for elem in ('JUMP_ABSOLUTE',): - self.assertTrue(elem in asm) + self.assertIn(elem, asm) def test_pack_unpack(self): for line, elem in ( @@ -73,9 +73,9 @@ ('a, b, c = a, b, c', 'ROT_THREE',), ): asm = dis_single(line) - self.assertTrue(elem in asm) - self.assertTrue('BUILD_TUPLE' not in asm) - self.assertTrue('UNPACK_TUPLE' not in asm) + self.assertIn(elem, asm) + self.assertNotIn('BUILD_TUPLE', asm) + self.assertNotIn('UNPACK_TUPLE', asm) def test_folding_of_tuples_of_constants(self): for line, elem in ( @@ -86,8 +86,8 @@ ('((1, 2), 3, 4)', '(((1, 2), 3, 4))'), ): asm = dis_single(line) - self.assertTrue(elem in asm) - self.assertTrue('BUILD_TUPLE' not in asm) + self.assertIn(elem, asm) + self.assertNotIn('BUILD_TUPLE', asm) # Bug 1053819: Tuple of constants misidentified when presented with: # . . . opcode_with_arg 100 unary_opcode BUILD_TUPLE 1 . . . @@ -125,17 +125,17 @@ ('a = 13 | 7', '(15)'), # binary or ): asm = dis_single(line) - self.assertTrue(elem in asm, asm) - self.assertTrue('BINARY_' not in asm) + self.assertIn(elem, asm, asm) + self.assertNotIn('BINARY_', asm) # Verify that unfoldables are skipped asm = dis_single('a=2+"b"') - self.assertTrue('(2)' in asm) - self.assertTrue("('b')" in asm) + self.assertIn('(2)', asm) + self.assertIn("('b')", asm) # Verify that large sequences do not result from folding asm = dis_single('a="x"*1000') - self.assertTrue('(1000)' in asm) + self.assertIn('(1000)', asm) def test_folding_of_unaryops_on_constants(self): for line, elem in ( @@ -144,8 +144,8 @@ ('~-2', '(1)'), # unary invert ): asm = dis_single(line) - self.assertTrue(elem in asm, asm) - self.assertTrue('UNARY_' not in asm) + self.assertIn(elem, asm, asm) + self.assertNotIn('UNARY_', asm) # Verify that unfoldables are skipped for line, elem in ( @@ -153,16 +153,16 @@ ('~"abc"', "('abc')"), # unary invert ): asm = dis_single(line) - self.assertTrue(elem in asm, asm) - self.assertTrue('UNARY_' in asm) + self.assertIn(elem, asm, asm) + self.assertIn('UNARY_', asm) def test_elim_extra_return(self): # RETURN LOAD_CONST None RETURN --> RETURN def f(x): return x asm = disassemble(f) - self.assertTrue('LOAD_CONST' not in asm) - self.assertTrue('(None)' not in asm) + self.assertNotIn('LOAD_CONST', asm) + self.assertNotIn('(None)', asm) self.assertEqual(asm.split().count('RETURN_VALUE'), 1) def test_elim_jump_to_return(self): @@ -170,8 +170,8 @@ def f(cond, true_value, false_value): return true_value if cond else false_value asm = disassemble(f) - self.assertTrue('JUMP_FORWARD' not in asm) - self.assertTrue('JUMP_ABSOLUTE' not in asm) + self.assertNotIn('JUMP_FORWARD', asm) + self.assertNotIn('JUMP_ABSOLUTE', asm) self.assertEqual(asm.split().count('RETURN_VALUE'), 2) def test_elim_jump_after_return1(self): @@ -186,8 +186,8 @@ return 5 return 6 asm = disassemble(f) - self.assertTrue('JUMP_FORWARD' not in asm) - self.assertTrue('JUMP_ABSOLUTE' not in asm) + self.assertNotIn('JUMP_FORWARD', asm) + self.assertNotIn('JUMP_ABSOLUTE', asm) self.assertEqual(asm.split().count('RETURN_VALUE'), 6) def test_elim_jump_after_return2(self): @@ -196,7 +196,7 @@ while 1: if cond1: return 4 asm = disassemble(f) - self.assertTrue('JUMP_FORWARD' not in asm) + self.assertNotIn('JUMP_FORWARD', asm) # There should be one jump for the while loop. self.assertEqual(asm.split().count('JUMP_ABSOLUTE'), 1) self.assertEqual(asm.split().count('RETURN_VALUE'), 2) Modified: python/trunk/Lib/test/test_pep352.py ============================================================================== --- python/trunk/Lib/test/test_pep352.py (original) +++ python/trunk/Lib/test/test_pep352.py Sun Jan 24 00:04:36 2010 @@ -41,7 +41,7 @@ last_exc = getattr(__builtin__, superclass_name) except AttributeError: self.fail("base class %s not a built-in" % superclass_name) - self.assertTrue(superclass_name in exc_set) + self.assertIn(superclass_name, exc_set) exc_set.discard(superclass_name) superclasses = [] # Loop will insert base exception last_depth = 0 @@ -75,7 +75,7 @@ self.verify_instance_interface(exc()) except TypeError: pass - self.assertTrue(exc_name in exc_set) + self.assertIn(exc_name, exc_set) exc_set.discard(exc_name) last_exc = exc last_depth = depth Modified: python/trunk/Lib/test/test_poplib.py ============================================================================== --- python/trunk/Lib/test/test_poplib.py (original) +++ python/trunk/Lib/test/test_poplib.py Sun Jan 24 00:04:36 2010 @@ -246,7 +246,7 @@ self.client = poplib.POP3_SSL(self.server.host, self.server.port) def test__all__(self): - self.assertTrue('POP3_SSL' in poplib.__all__) + self.assertIn('POP3_SSL', poplib.__all__) class TestTimeouts(TestCase): Modified: python/trunk/Lib/test/test_posix.py ============================================================================== --- python/trunk/Lib/test/test_posix.py (original) +++ python/trunk/Lib/test/test_posix.py Sun Jan 24 00:04:36 2010 @@ -264,7 +264,7 @@ def test_lsdir(self): if hasattr(posix, 'lsdir'): - self.assertTrue(test_support.TESTFN in posix.lsdir(os.curdir)) + self.assertIn(test_support.TESTFN, posix.lsdir(os.curdir)) def test_access(self): if hasattr(posix, 'access'): Modified: python/trunk/Lib/test/test_profile.py ============================================================================== --- python/trunk/Lib/test/test_profile.py (original) +++ python/trunk/Lib/test/test_profile.py Sun Jan 24 00:04:36 2010 @@ -57,7 +57,7 @@ stats = pstats.Stats(prof, stream=s) stats.print_stats() res = s.getvalue() - self.assertTrue(self.expected_list_sort_output in res, + self.assertIn(self.expected_list_sort_output, res, "Profiling {0!r} didn't report list.sort:\n{1}".format(stmt, res)) Modified: python/trunk/Lib/test/test_pwd.py ============================================================================== --- python/trunk/Lib/test/test_pwd.py (original) +++ python/trunk/Lib/test/test_pwd.py Sun Jan 24 00:04:36 2010 @@ -43,8 +43,8 @@ for e in entries: if not e[0] or e[0] == '+': continue # skip NIS entries etc. - self.assertTrue(pwd.getpwnam(e.pw_name) in entriesbyname[e.pw_name]) - self.assertTrue(pwd.getpwuid(e.pw_uid) in entriesbyuid[e.pw_uid]) + self.assertIn(pwd.getpwnam(e.pw_name), entriesbyname[e.pw_name]) + self.assertIn(pwd.getpwuid(e.pw_uid), entriesbyuid[e.pw_uid]) def test_errors(self): self.assertRaises(TypeError, pwd.getpwuid) Modified: python/trunk/Lib/test/test_py3kwarn.py ============================================================================== --- python/trunk/Lib/test/test_py3kwarn.py (original) +++ python/trunk/Lib/test/test_py3kwarn.py Sun Jan 24 00:04:36 2010 @@ -350,9 +350,9 @@ try: __import__(module_name, level=0) except DeprecationWarning as exc: - self.assertTrue(module_name in exc.args[0], - "%s warning didn't contain module name" - % module_name) + self.assertIn(module_name, exc.args[0], + "%s warning didn't contain module name" + % module_name) except ImportError: if not optional: self.fail("Non-optional module {0} raised an " Modified: python/trunk/Lib/test/test_pydoc.py ============================================================================== --- python/trunk/Lib/test/test_pydoc.py (original) +++ python/trunk/Lib/test/test_pydoc.py Sun Jan 24 00:04:36 2010 @@ -298,7 +298,7 @@ # Check that pydocfodder module can be described from test import pydocfodder doc = pydoc.render_doc(pydocfodder) - self.assertTrue("pydocfodder" in doc) + self.assertIn("pydocfodder", doc) def test_classic_class(self): class C: "Classic class" @@ -306,7 +306,7 @@ self.assertEqual(pydoc.describe(C), 'class C') self.assertEqual(pydoc.describe(c), 'instance of C') expected = 'instance of C in module %s' % __name__ - self.assertTrue(expected in pydoc.render_doc(c)) + self.assertIn(expected, pydoc.render_doc(c)) def test_class(self): class C(object): "New-style class" @@ -315,7 +315,7 @@ self.assertEqual(pydoc.describe(C), 'class C') self.assertEqual(pydoc.describe(c), 'C') expected = 'C in module %s object' % __name__ - self.assertTrue(expected in pydoc.render_doc(c)) + self.assertIn(expected, pydoc.render_doc(c)) def test_main(): Modified: python/trunk/Lib/test/test_random.py ============================================================================== --- python/trunk/Lib/test/test_random.py (original) +++ python/trunk/Lib/test/test_random.py Sun Jan 24 00:04:36 2010 @@ -289,7 +289,7 @@ n += n - 1 # check 1 below the next power of two k = int(1.00001 + _log(n, 2)) - self.assertTrue(k in [numbits, numbits+1]) + self.assertIn(k, [numbits, numbits+1]) self.assertTrue(2**k > n > 2**(k-2)) n -= n >> 15 # check a little farther below the next power of two @@ -445,7 +445,7 @@ n += n - 1 # check 1 below the next power of two k = int(1.00001 + _log(n, 2)) - self.assertTrue(k in [numbits, numbits+1]) + self.assertIn(k, [numbits, numbits+1]) self.assertTrue(2**k > n > 2**(k-2)) n -= n >> 15 # check a little farther below the next power of two Modified: python/trunk/Lib/test/test_runpy.py ============================================================================== --- python/trunk/Lib/test/test_runpy.py (original) +++ python/trunk/Lib/test/test_runpy.py Sun Jan 24 00:04:36 2010 @@ -165,14 +165,14 @@ try: if verbose: print "Running from source:", mod_name d1 = run_module(mod_name) # Read from source - self.assertTrue("x" in d1) + self.assertIn("x", d1) self.assertTrue(d1["x"] == 1) del d1 # Ensure __loader__ entry doesn't keep file open __import__(mod_name) os.remove(mod_fname) if verbose: print "Running from compiled:", mod_name d2 = run_module(mod_name) # Read from bytecode - self.assertTrue("x" in d2) + self.assertIn("x", d2) self.assertTrue(d2["x"] == 1) del d2 # Ensure __loader__ entry doesn't keep file open finally: @@ -187,14 +187,14 @@ try: if verbose: print "Running from source:", pkg_name d1 = run_module(pkg_name) # Read from source - self.assertTrue("x" in d1) + self.assertIn("x", d1) self.assertTrue(d1["x"] == 1) del d1 # Ensure __loader__ entry doesn't keep file open __import__(mod_name) os.remove(mod_fname) if verbose: print "Running from compiled:", pkg_name d2 = run_module(pkg_name) # Read from bytecode - self.assertTrue("x" in d2) + self.assertIn("x", d2) self.assertTrue(d2["x"] == 1) del d2 # Ensure __loader__ entry doesn't keep file open finally: @@ -239,19 +239,19 @@ pkg_name = mod_name.rpartition('.')[0] if verbose: print "Running from source:", mod_name d1 = run_module(mod_name, run_name=run_name) # Read from source - self.assertTrue("__package__" in d1) + self.assertIn("__package__", d1) self.assertTrue(d1["__package__"] == pkg_name) - self.assertTrue("sibling" in d1) - self.assertTrue("nephew" in d1) + self.assertIn("sibling", d1) + self.assertIn("nephew", d1) del d1 # Ensure __loader__ entry doesn't keep file open __import__(mod_name) os.remove(mod_fname) if verbose: print "Running from compiled:", mod_name d2 = run_module(mod_name, run_name=run_name) # Read from bytecode - self.assertTrue("__package__" in d2) + self.assertIn("__package__", d2) self.assertTrue(d2["__package__"] == pkg_name) - self.assertTrue("sibling" in d2) - self.assertTrue("nephew" in d2) + self.assertIn("sibling", d2) + self.assertIn("nephew", d2) del d2 # Ensure __loader__ entry doesn't keep file open finally: self._del_pkg(pkg_dir, depth, mod_name) Modified: python/trunk/Lib/test/test_scope.py ============================================================================== --- python/trunk/Lib/test/test_scope.py (original) +++ python/trunk/Lib/test/test_scope.py Sun Jan 24 00:04:36 2010 @@ -505,8 +505,8 @@ return C varnames = f(1).z - self.assertTrue("x" not in varnames) - self.assertTrue("y" in varnames) + self.assertNotIn("x", varnames) + self.assertIn("y", varnames) def testLocalsClass_WithTrace(self): # Issue23728: after the trace function returns, the locals() Modified: python/trunk/Lib/test/test_set.py ============================================================================== --- python/trunk/Lib/test/test_set.py (original) +++ python/trunk/Lib/test/test_set.py Sun Jan 24 00:04:36 2010 @@ -64,7 +64,7 @@ self.assertEqual(c in self.s, c in self.d) self.assertRaises(TypeError, self.s.__contains__, [[]]) s = self.thetype([frozenset(self.letters)]) - self.assertTrue(self.thetype(self.letters) in s) + self.assertIn(self.thetype(self.letters), s) def test_union(self): u = self.s.union(self.otherword) @@ -271,7 +271,7 @@ s=H() f=set() f.add(s) - self.assertTrue(s in f) + self.assertIn(s, f) f.remove(s) f.add(s) f.discard(s) @@ -371,7 +371,7 @@ def test_add(self): self.s.add('Q') - self.assertTrue('Q' in self.s) + self.assertIn('Q', self.s) dup = self.s.copy() self.s.add('Q') self.assertEqual(self.s, dup) @@ -379,13 +379,13 @@ def test_remove(self): self.s.remove('a') - self.assertTrue('a' not in self.s) + self.assertNotIn('a', self.s) self.assertRaises(KeyError, self.s.remove, 'Q') self.assertRaises(TypeError, self.s.remove, []) s = self.thetype([frozenset(self.word)]) - self.assertTrue(self.thetype(self.word) in s) + self.assertIn(self.thetype(self.word), s) s.remove(self.thetype(self.word)) - self.assertTrue(self.thetype(self.word) not in s) + self.assertNotIn(self.thetype(self.word), s) self.assertRaises(KeyError, self.s.remove, self.thetype(self.word)) def test_remove_keyerror_unpacking(self): @@ -412,26 +412,26 @@ def test_discard(self): self.s.discard('a') - self.assertTrue('a' not in self.s) + self.assertNotIn('a', self.s) self.s.discard('Q') self.assertRaises(TypeError, self.s.discard, []) s = self.thetype([frozenset(self.word)]) - self.assertTrue(self.thetype(self.word) in s) + self.assertIn(self.thetype(self.word), s) s.discard(self.thetype(self.word)) - self.assertTrue(self.thetype(self.word) not in s) + self.assertNotIn(self.thetype(self.word), s) s.discard(self.thetype(self.word)) def test_pop(self): for i in xrange(len(self.s)): elem = self.s.pop() - self.assertTrue(elem not in self.s) + self.assertNotIn(elem, self.s) self.assertRaises(KeyError, self.s.pop) def test_update(self): retval = self.s.update(self.otherword) self.assertEqual(retval, None) for c in (self.word + self.otherword): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) self.assertRaises(PassThru, self.s.update, check_pass_thru()) self.assertRaises(TypeError, self.s.update, [[]]) for p, q in (('cdc', 'abcd'), ('efgfe', 'abcefg'), ('ccb', 'abc'), ('ef', 'abcef')): @@ -449,16 +449,16 @@ def test_ior(self): self.s |= set(self.otherword) for c in (self.word + self.otherword): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) def test_intersection_update(self): retval = self.s.intersection_update(self.otherword) self.assertEqual(retval, None) for c in (self.word + self.otherword): if c in self.otherword and c in self.word: - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) self.assertRaises(PassThru, self.s.intersection_update, check_pass_thru()) self.assertRaises(TypeError, self.s.intersection_update, [[]]) for p, q in (('cdc', 'c'), ('efgfe', ''), ('ccb', 'bc'), ('ef', '')): @@ -476,18 +476,18 @@ self.s &= set(self.otherword) for c in (self.word + self.otherword): if c in self.otherword and c in self.word: - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) def test_difference_update(self): retval = self.s.difference_update(self.otherword) self.assertEqual(retval, None) for c in (self.word + self.otherword): if c in self.word and c not in self.otherword: - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) self.assertRaises(PassThru, self.s.difference_update, check_pass_thru()) self.assertRaises(TypeError, self.s.difference_update, [[]]) self.assertRaises(TypeError, self.s.symmetric_difference_update, [[]]) @@ -513,18 +513,18 @@ self.s -= set(self.otherword) for c in (self.word + self.otherword): if c in self.word and c not in self.otherword: - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) def test_symmetric_difference_update(self): retval = self.s.symmetric_difference_update(self.otherword) self.assertEqual(retval, None) for c in (self.word + self.otherword): if (c in self.word) ^ (c in self.otherword): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) self.assertRaises(PassThru, self.s.symmetric_difference_update, check_pass_thru()) self.assertRaises(TypeError, self.s.symmetric_difference_update, [[]]) for p, q in (('cdc', 'abd'), ('efgfe', 'abcefg'), ('ccb', 'a'), ('ef', 'abcef')): @@ -537,9 +537,9 @@ self.s ^= set(self.otherword) for c in (self.word + self.otherword): if (c in self.word) ^ (c in self.otherword): - self.assertTrue(c in self.s) + self.assertIn(c, self.s) else: - self.assertTrue(c not in self.s) + self.assertNotIn(c, self.s) def test_inplace_on_self(self): t = self.s.copy() @@ -767,7 +767,7 @@ def test_iteration(self): for v in self.set: - self.assertTrue(v in self.values) + self.assertIn(v, self.values) setiter = iter(self.set) # note: __length_hint__ is an internal undocumented API, # don't rely on it in your own programs @@ -802,10 +802,10 @@ self.repr = "set([3])" def test_in(self): - self.assertTrue(3 in self.set) + self.assertIn(3, self.set) def test_not_in(self): - self.assertTrue(2 not in self.set) + self.assertNotIn(2, self.set) #------------------------------------------------------------------------------ @@ -819,10 +819,10 @@ self.repr = "set([(0, 'zero')])" def test_in(self): - self.assertTrue((0, "zero") in self.set) + self.assertIn((0, "zero"), self.set) def test_not_in(self): - self.assertTrue(9 not in self.set) + self.assertNotIn(9, self.set) #------------------------------------------------------------------------------ @@ -1114,7 +1114,7 @@ popped[self.set.pop()] = None self.assertEqual(len(popped), len(self.values)) for v in self.values: - self.assertTrue(v in popped) + self.assertIn(v, popped) def test_update_empty_tuple(self): self.set.update(()) @@ -1688,7 +1688,7 @@ edge = vertex # Cuboctahedron vertices are edges in Cube self.assertEqual(len(edge), 2) # Two cube vertices define an edge for cubevert in edge: - self.assertTrue(cubevert in g) + self.assertIn(cubevert, g) #============================================================================== Modified: python/trunk/Lib/test/test_sets.py ============================================================================== --- python/trunk/Lib/test/test_sets.py (original) +++ python/trunk/Lib/test/test_sets.py Sun Jan 24 00:04:36 2010 @@ -76,7 +76,7 @@ def test_iteration(self): for v in self.set: - self.assertTrue(v in self.values) + self.assertIn(v, self.values) def test_pickling(self): p = pickle.dumps(self.set) @@ -406,7 +406,7 @@ popped[self.set.pop()] = None self.assertEqual(len(popped), len(self.values)) for v in self.values: - self.assertTrue(v in popped) + self.assertIn(v, popped) def test_update_empty_tuple(self): self.set.union_update(()) Modified: python/trunk/Lib/test/test_site.py ============================================================================== --- python/trunk/Lib/test/test_site.py (original) +++ python/trunk/Lib/test/test_site.py Sun Jan 24 00:04:36 2010 @@ -68,14 +68,14 @@ dir_set = site._init_pathinfo() for entry in [site.makepath(path)[1] for path in sys.path if path and os.path.isdir(path)]: - self.assertTrue(entry in dir_set, - "%s from sys.path not found in set returned " - "by _init_pathinfo(): %s" % (entry, dir_set)) + self.assertIn(entry, dir_set, + "%s from sys.path not found in set returned " + "by _init_pathinfo(): %s" % (entry, dir_set)) def pth_file_tests(self, pth_file): """Contain common code for testing results of reading a .pth file""" - self.assertTrue(pth_file.imported in sys.modules, - "%s not in sys.modules" % pth_file.imported) + self.assertIn(pth_file.imported, sys.modules, + "%s not in sys.modules" % pth_file.imported) self.assertIn(site.makepath(pth_file.good_dir_path)[0], sys.path) self.assertFalse(os.path.exists(pth_file.bad_dir_path)) @@ -279,7 +279,7 @@ site.removeduppaths() seen_paths = set() for path in sys.path: - self.assertTrue(path not in seen_paths) + self.assertNotIn(path, seen_paths) seen_paths.add(path) def test_add_build_dir(self): Modified: python/trunk/Lib/test/test_socket.py ============================================================================== --- python/trunk/Lib/test/test_socket.py (original) +++ python/trunk/Lib/test/test_socket.py Sun Jan 24 00:04:36 2010 @@ -491,7 +491,7 @@ # it reasonable to get the host's addr in addition to 0.0.0.0. # At least for eCos. This is required for the S/390 to pass. my_ip_addr = socket.gethostbyname(socket.gethostname()) - self.assertTrue(name[0] in ("0.0.0.0", my_ip_addr), '%s invalid' % name[0]) + self.assertIn(name[0], ("0.0.0.0", my_ip_addr), '%s invalid' % name[0]) self.assertEqual(name[1], port) def testGetSockOpt(self): Modified: python/trunk/Lib/test/test_strptime.py ============================================================================== --- python/trunk/Lib/test/test_strptime.py (original) +++ python/trunk/Lib/test/test_strptime.py Sun Jan 24 00:04:36 2010 @@ -36,8 +36,8 @@ """ strftime_output = time.strftime(directive, self.time_tuple).lower() comparison = testing[self.time_tuple[tuple_position]] - self.assertTrue(strftime_output in testing, "%s: not found in tuple" % - error_msg) + self.assertIn(strftime_output, testing, + "%s: not found in tuple" % error_msg) self.assertTrue(comparison == strftime_output, "%s: position within tuple incorrect; %s != %s" % (error_msg, comparison, strftime_output)) @@ -61,8 +61,8 @@ def test_am_pm(self): # Make sure AM/PM representation done properly strftime_output = time.strftime("%p", self.time_tuple).lower() - self.assertTrue(strftime_output in self.LT_ins.am_pm, - "AM/PM representation not in tuple") + self.assertIn(strftime_output, self.LT_ins.am_pm, + "AM/PM representation not in tuple") if self.time_tuple[3] < 12: position = 0 else: position = 1 self.assertTrue(strftime_output == self.LT_ins.am_pm[position], @@ -72,7 +72,7 @@ # Make sure timezone is correct timezone = time.strftime("%Z", self.time_tuple).lower() if timezone: - self.assertTrue(timezone in self.LT_ins.timezone[0] or \ + self.assertTrue(timezone in self.LT_ins.timezone[0] or timezone in self.LT_ins.timezone[1], "timezone %s not found in %s" % (timezone, self.LT_ins.timezone)) @@ -133,9 +133,9 @@ # Make sure any characters in the format string that might be taken as # regex syntax is escaped. pattern_string = self.time_re.pattern("\d+") - self.assertTrue(r"\\d\+" in pattern_string, - "%s does not have re characters escaped properly" % - pattern_string) + self.assertIn(r"\\d\+", pattern_string, + "%s does not have re characters escaped properly" % + pattern_string) def test_compile(self): # Check that compiled regex is correct Modified: python/trunk/Lib/test/test_structseq.py ============================================================================== --- python/trunk/Lib/test/test_structseq.py (original) +++ python/trunk/Lib/test/test_structseq.py Sun Jan 24 00:04:36 2010 @@ -50,8 +50,8 @@ def test_contains(self): t1 = time.gmtime() for item in t1: - self.assertTrue(item in t1) - self.assertTrue(-42 not in t1) + self.assertIn(item, t1) + self.assertNotIn(-42, t1) def test_hash(self): t1 = time.gmtime() Modified: python/trunk/Lib/test/test_subprocess.py ============================================================================== --- python/trunk/Lib/test/test_subprocess.py (original) +++ python/trunk/Lib/test/test_subprocess.py Sun Jan 24 00:04:36 2010 @@ -76,7 +76,7 @@ # check_output() function with zero return code output = subprocess.check_output( [sys.executable, "-c", "print 'BDFL'"]) - self.assertTrue('BDFL' in output) + self.assertIn('BDFL', output) def test_check_output_nonzero(self): # check_call() function with non-zero return code @@ -93,7 +93,7 @@ output = subprocess.check_output( [sys.executable, "-c", "import sys; sys.stderr.write('BDFL')"], stderr=subprocess.STDOUT) - self.assertTrue('BDFL' in output) + self.assertIn('BDFL', output) def test_check_output_stdout_arg(self): # check_output() function stderr redirected to stdout @@ -102,7 +102,7 @@ [sys.executable, "-c", "print 'will not be run'"], stdout=sys.stdout) except ValueError, e: - self.assertTrue('stdout' in e.args[0]) + self.assertIn('stdout', e.args[0]) else: self.fail("Expected ValueError when stdout arg supplied.") Modified: python/trunk/Lib/test/test_sys.py ============================================================================== --- python/trunk/Lib/test/test_sys.py (original) +++ python/trunk/Lib/test/test_sys.py Sun Jan 24 00:04:36 2010 @@ -293,8 +293,8 @@ d = sys._current_frames() main_id = thread.get_ident() - self.assertTrue(main_id in d) - self.assertTrue(thread_id in d) + self.assertIn(main_id, d) + self.assertIn(thread_id, d) # Verify that the captured main-thread frame is _this_ frame. frame = d.pop(main_id) @@ -316,7 +316,7 @@ # And the next record must be for g456(). filename, lineno, funcname, sourceline = stack[i+1] self.assertEqual(funcname, "g456") - self.assertTrue(sourceline in ["leave_g.wait()", "entered_g.set()"]) + self.assertIn(sourceline, ["leave_g.wait()", "entered_g.set()"]) # Reap the spawned thread. leave_g.set() @@ -328,13 +328,13 @@ # "thread id" 0. d = sys._current_frames() self.assertEqual(len(d), 1) - self.assertTrue(0 in d) + self.assertIn(0, d) self.assertTrue(d[0] is sys._getframe()) def test_attributes(self): self.assertTrue(isinstance(sys.api_version, int)) self.assertTrue(isinstance(sys.argv, list)) - self.assertTrue(sys.byteorder in ("little", "big")) + self.assertIn(sys.byteorder, ("little", "big")) self.assertTrue(isinstance(sys.builtin_module_names, tuple)) self.assertTrue(isinstance(sys.copyright, basestring)) self.assertTrue(isinstance(sys.exec_prefix, basestring)) @@ -359,13 +359,12 @@ self.assertTrue(isinstance(vi[0], int)) self.assertTrue(isinstance(vi[1], int)) self.assertTrue(isinstance(vi[2], int)) - self.assertTrue(vi[3] in ("alpha", "beta", "candidate", "final")) + self.assertIn(vi[3], ("alpha", "beta", "candidate", "final")) self.assertTrue(isinstance(vi[4], int)) self.assertTrue(isinstance(vi.major, int)) self.assertTrue(isinstance(vi.minor, int)) self.assertTrue(isinstance(vi.micro, int)) - self.assertTrue(vi.releaselevel in - ("alpha", "beta", "candidate", "final")) + self.assertIn(vi.releaselevel, ("alpha", "beta", "candidate", "final")) self.assertTrue(isinstance(vi.serial, int)) self.assertEqual(vi[0], vi.major) self.assertEqual(vi[1], vi.minor) @@ -374,7 +373,7 @@ self.assertEqual(vi[4], vi.serial) self.assertTrue(vi > (1,0,0)) self.assertIsInstance(sys.float_repr_style, str) - self.assertTrue(sys.float_repr_style in ('short', 'legacy')) + self.assertIn(sys.float_repr_style, ('short', 'legacy')) def test_43581(self): # Can't use sys.stdout, as this is a cStringIO object when Modified: python/trunk/Lib/test/test_tarfile.py ============================================================================== --- python/trunk/Lib/test/test_tarfile.py (original) +++ python/trunk/Lib/test/test_tarfile.py Sun Jan 24 00:04:36 2010 @@ -486,7 +486,7 @@ def test_find_ustar_longname(self): name = "ustar/" + "12345/" * 39 + "1234567/longname" - self.assertTrue(name in self.tar.getnames()) + self.assertIn(name, self.tar.getnames()) def test_find_regtype_oldv7(self): tarinfo = self.tar.getmember("misc/regtype-old-v7") Modified: python/trunk/Lib/test/test_telnetlib.py ============================================================================== --- python/trunk/Lib/test/test_telnetlib.py (original) +++ python/trunk/Lib/test/test_telnetlib.py Sun Jan 24 00:04:36 2010 @@ -321,7 +321,7 @@ txt = telnet.read_all() cmd = nego.seen self.assertTrue(len(cmd) > 0) # we expect at least one command - self.assertTrue(cmd[0] in self.cmds) + self.assertIn(cmd[0], self.cmds) self.assertEqual(cmd[1], tl.NOOPT) self.assertEqual(len(''.join(data[:-1])), len(txt + cmd)) nego.sb_getter = None # break the nego => telnet cycle Modified: python/trunk/Lib/test/test_tempfile.py ============================================================================== --- python/trunk/Lib/test/test_tempfile.py (original) +++ python/trunk/Lib/test/test_tempfile.py Sun Jan 24 00:04:36 2010 @@ -113,7 +113,7 @@ for i in xrange(TEST_FILES): s = r.next() self.nameCheck(s, '', '', '') - self.assertFalse(s in dict) + self.assertNotIn(s, dict) dict[s] = 1 def test_supports_iter(self): @@ -160,14 +160,14 @@ for envname in 'TMPDIR', 'TEMP', 'TMP': dirname = os.getenv(envname) if not dirname: raise ValueError - self.assertTrue(dirname in cand) + self.assertIn(dirname, cand) try: dirname = os.getcwd() except (AttributeError, os.error): dirname = os.curdir - self.assertTrue(dirname in cand) + self.assertIn(dirname, cand) # Not practical to try to verify the presence of OS-specific # paths in this list. Modified: python/trunk/Lib/test/test_threading.py ============================================================================== --- python/trunk/Lib/test/test_threading.py (original) +++ python/trunk/Lib/test/test_threading.py Sun Jan 24 00:04:36 2010 @@ -153,7 +153,7 @@ tid = thread.start_new_thread(f, (mutex,)) # Wait for the thread to finish. mutex.acquire() - self.assertTrue(tid in threading._active) + self.assertIn(tid, threading._active) self.assertTrue(isinstance(threading._active[tid], threading._DummyThread)) del threading._active[tid] @@ -356,7 +356,7 @@ t.start() t.join() l = enum() - self.assertFalse(t in l, + self.assertNotIn(t, l, "#1703448 triggered after %d trials: %s" % (i, l)) finally: sys.setcheckinterval(old_interval) Modified: python/trunk/Lib/test/test_threading_local.py ============================================================================== --- python/trunk/Lib/test/test_threading_local.py (original) +++ python/trunk/Lib/test/test_threading_local.py Sun Jan 24 00:04:36 2010 @@ -40,7 +40,7 @@ local.someothervar = None gc.collect() deadlist = [weak for weak in weaklist if weak() is None] - self.assertTrue(len(deadlist) in (n-1, n), (n, len(deadlist))) + self.assertIn(len(deadlist), (n-1, n), (n, len(deadlist))) def test_derived(self): # Issue 3088: if there is a threads switch inside the __init__ Modified: python/trunk/Lib/test/test_traceback.py ============================================================================== --- python/trunk/Lib/test/test_traceback.py (original) +++ python/trunk/Lib/test/test_traceback.py Sun Jan 24 00:04:36 2010 @@ -39,12 +39,12 @@ SyntaxError) self.assertTrue(len(err) == 4) self.assertTrue(err[1].strip() == "return x!") - self.assertTrue("^" in err[2]) # third line has caret + self.assertIn("^", err[2]) # third line has caret self.assertTrue(err[1].find("!") == err[2].find("^")) # in the right place err = self.get_exception_format(self.syntax_error_with_caret_2, SyntaxError) - self.assertTrue("^" in err[2]) # third line has caret + self.assertIn("^", err[2]) # third line has caret self.assertTrue(err[2].count('\n') == 1) # and no additional newline self.assertTrue(err[1].find("+") == err[2].find("^")) # in the right place @@ -62,7 +62,7 @@ IndentationError) self.assertTrue(len(err) == 4) self.assertTrue(err[1].strip() == "print 2") - self.assertTrue("^" in err[2]) + self.assertIn("^", err[2]) self.assertTrue(err[1].find("2") == err[2].find("^")) def test_bug737473(self): Modified: python/trunk/Lib/test/test_types.py ============================================================================== --- python/trunk/Lib/test/test_types.py (original) +++ python/trunk/Lib/test/test_types.py Sun Jan 24 00:04:36 2010 @@ -612,13 +612,13 @@ result = f.__format__(fmt) self.assertEqual(len(result), 98) self.assertEqual(result[-7], '.') - self.assertTrue(result[:12] in ('112340000000', '112339999999')) + self.assertIn(result[:12], ('112340000000', '112339999999')) f = 1.1234e200 for fmt in 'f', 'F': result = f.__format__(fmt) self.assertEqual(len(result), 208) self.assertEqual(result[-7], '.') - self.assertTrue(result[:12] in ('112340000000', '112339999999')) + self.assertIn(result[:12], ('112340000000', '112339999999')) test( 1.0, 'e', '1.000000e+00') Modified: python/trunk/Lib/test/test_unicode.py ============================================================================== --- python/trunk/Lib/test/test_unicode.py (original) +++ python/trunk/Lib/test/test_unicode.py Sun Jan 24 00:04:36 2010 @@ -316,30 +316,30 @@ def test_contains(self): # Testing Unicode contains method - self.assertTrue('a' in u'abdb') - self.assertTrue('a' in u'bdab') - self.assertTrue('a' in u'bdaba') - self.assertTrue('a' in u'bdba') - self.assertTrue('a' in u'bdba') - self.assertTrue(u'a' in u'bdba') - self.assertTrue(u'a' not in u'bdb') - self.assertTrue(u'a' not in 'bdb') - self.assertTrue(u'a' in 'bdba') - self.assertTrue(u'a' in ('a',1,None)) - self.assertTrue(u'a' in (1,None,'a')) - self.assertTrue(u'a' in (1,None,u'a')) - self.assertTrue('a' in ('a',1,None)) - self.assertTrue('a' in (1,None,'a')) - self.assertTrue('a' in (1,None,u'a')) - self.assertTrue('a' not in ('x',1,u'y')) - self.assertTrue('a' not in ('x',1,None)) - self.assertTrue(u'abcd' not in u'abcxxxx') - self.assertTrue(u'ab' in u'abcd') - self.assertTrue('ab' in u'abc') - self.assertTrue(u'ab' in 'abc') - self.assertTrue(u'ab' in (1,None,u'ab')) - self.assertTrue(u'' in u'abc') - self.assertTrue('' in u'abc') + self.assertIn('a', u'abdb') + self.assertIn('a', u'bdab') + self.assertIn('a', u'bdaba') + self.assertIn('a', u'bdba') + self.assertIn('a', u'bdba') + self.assertIn(u'a', u'bdba') + self.assertNotIn(u'a', u'bdb') + self.assertNotIn(u'a', 'bdb') + self.assertIn(u'a', 'bdba') + self.assertIn(u'a', ('a',1,None)) + self.assertIn(u'a', (1,None,'a')) + self.assertIn(u'a', (1,None,u'a')) + self.assertIn('a', ('a',1,None)) + self.assertIn('a', (1,None,'a')) + self.assertIn('a', (1,None,u'a')) + self.assertNotIn('a', ('x',1,u'y')) + self.assertNotIn('a', ('x',1,None)) + self.assertNotIn(u'abcd', u'abcxxxx') + self.assertIn(u'ab', u'abcd') + self.assertIn('ab', u'abc') + self.assertIn(u'ab', 'abc') + self.assertIn(u'ab', (1,None,u'ab')) + self.assertIn(u'', u'abc') + self.assertIn('', u'abc') # If the following fails either # the contains operator does not propagate UnicodeErrors or @@ -347,33 +347,33 @@ self.assertRaises(UnicodeDecodeError, 'g\xe2teau'.__contains__, u'\xe2') self.assertRaises(UnicodeDecodeError, u'g\xe2teau'.__contains__, '\xe2') - self.assertTrue(u'' in '') - self.assertTrue('' in u'') - self.assertTrue(u'' in u'') - self.assertTrue(u'' in 'abc') - self.assertTrue('' in u'abc') - self.assertTrue(u'' in u'abc') - self.assertTrue(u'\0' not in 'abc') - self.assertTrue('\0' not in u'abc') - self.assertTrue(u'\0' not in u'abc') - self.assertTrue(u'\0' in '\0abc') - self.assertTrue('\0' in u'\0abc') - self.assertTrue(u'\0' in u'\0abc') - self.assertTrue(u'\0' in 'abc\0') - self.assertTrue('\0' in u'abc\0') - self.assertTrue(u'\0' in u'abc\0') - self.assertTrue(u'a' in '\0abc') - self.assertTrue('a' in u'\0abc') - self.assertTrue(u'a' in u'\0abc') - self.assertTrue(u'asdf' in 'asdf') - self.assertTrue('asdf' in u'asdf') - self.assertTrue(u'asdf' in u'asdf') - self.assertTrue(u'asdf' not in 'asd') - self.assertTrue('asdf' not in u'asd') - self.assertTrue(u'asdf' not in u'asd') - self.assertTrue(u'asdf' not in '') - self.assertTrue('asdf' not in u'') - self.assertTrue(u'asdf' not in u'') + self.assertIn(u'', '') + self.assertIn('', u'') + self.assertIn(u'', u'') + self.assertIn(u'', 'abc') + self.assertIn('', u'abc') + self.assertIn(u'', u'abc') + self.assertNotIn(u'\0', 'abc') + self.assertNotIn('\0', u'abc') + self.assertNotIn(u'\0', u'abc') + self.assertIn(u'\0', '\0abc') + self.assertIn('\0', u'\0abc') + self.assertIn(u'\0', u'\0abc') + self.assertIn(u'\0', 'abc\0') + self.assertIn('\0', u'abc\0') + self.assertIn(u'\0', u'abc\0') + self.assertIn(u'a', '\0abc') + self.assertIn('a', u'\0abc') + self.assertIn(u'a', u'\0abc') + self.assertIn(u'asdf', 'asdf') + self.assertIn('asdf', u'asdf') + self.assertIn(u'asdf', u'asdf') + self.assertNotIn(u'asdf', 'asd') + self.assertNotIn('asdf', u'asd') + self.assertNotIn(u'asdf', u'asd') + self.assertNotIn(u'asdf', '') + self.assertNotIn('asdf', u'') + self.assertNotIn(u'asdf', u'') self.assertRaises(TypeError, u"abc".__contains__) self.assertRaises(TypeError, u"abc".__contains__, object()) Modified: python/trunk/Lib/test/test_unicode_file.py ============================================================================== --- python/trunk/Lib/test/test_unicode_file.py (original) +++ python/trunk/Lib/test/test_unicode_file.py Sun Jan 24 00:04:36 2010 @@ -71,7 +71,7 @@ base = unicodedata.normalize("NFD", base) file_list = [unicodedata.normalize("NFD", f) for f in file_list] - self.assertTrue(base in file_list) + self.assertIn(base, file_list) # Do as many "equivalancy' tests as we can - ie, check that although we # have different types for the filename, they refer to the same file. Modified: python/trunk/Lib/test/test_unicodedata.py ============================================================================== --- python/trunk/Lib/test/test_unicodedata.py (original) +++ python/trunk/Lib/test/test_unicodedata.py Sun Jan 24 00:04:36 2010 @@ -218,7 +218,7 @@ self.assertEqual(popen.returncode, 1) error = "SyntaxError: (unicode error) \N escapes not supported " \ "(can't load unicodedata module)" - self.assertTrue(error in popen.stderr.read()) + self.assertIn(error, popen.stderr.read()) def test_decimal_numeric_consistent(self): # Test that decimal and numeric are consistent, Modified: python/trunk/Lib/test/test_unittest.py ============================================================================== --- python/trunk/Lib/test/test_unittest.py (original) +++ python/trunk/Lib/test/test_unittest.py Sun Jan 24 00:04:36 2010 @@ -636,7 +636,7 @@ self.assertEqual(list(suite), []) # audioop should now be loaded, thanks to loadTestsFromName() - self.assertTrue(module_name in sys.modules) + self.assertIn(module_name, sys.modules) finally: if module_name in sys.modules: del sys.modules[module_name] @@ -1024,7 +1024,7 @@ self.assertEqual(list(suite), [unittest.TestSuite()]) # audioop should now be loaded, thanks to loadTestsFromName() - self.assertTrue(module_name in sys.modules) + self.assertIn(module_name, sys.modules) finally: if module_name in sys.modules: del sys.modules[module_name] @@ -3056,7 +3056,7 @@ try: self.assertRaises(KeyError, lambda: None) except self.failureException as e: - self.assert_("KeyError not raised" in e, str(e)) + self.assertIn("KeyError not raised", e) else: self.fail("assertRaises() didn't fail") try: @@ -3073,7 +3073,7 @@ with self.assertRaises(KeyError): pass except self.failureException as e: - self.assert_("KeyError not raised" in e, str(e)) + self.assertIn("KeyError not raised", e) else: self.fail("assertRaises() didn't fail") try: Modified: python/trunk/Lib/test/test_urllib.py ============================================================================== --- python/trunk/Lib/test/test_urllib.py (original) +++ python/trunk/Lib/test/test_urllib.py Sun Jan 24 00:04:36 2010 @@ -487,7 +487,7 @@ expect_somewhere = ["1st=1", "2nd=2", "3rd=3"] result = urllib.urlencode(given) for expected in expect_somewhere: - self.assertTrue(expected in result, + self.assertIn(expected, result, "testing %s: %s not found in %s" % (test_type, expected, result)) self.assertEqual(result.count('&'), 2, @@ -534,8 +534,7 @@ result = urllib.urlencode(given, True) for value in given["sequence"]: expect = "sequence=%s" % value - self.assertTrue(expect in result, - "%s not found in %s" % (expect, result)) + self.assertIn(expect, result) self.assertEqual(result.count('&'), 2, "Expected 2 '&'s, got %s" % result.count('&')) Modified: python/trunk/Lib/test/test_urllib2.py ============================================================================== --- python/trunk/Lib/test/test_urllib2.py (original) +++ python/trunk/Lib/test/test_urllib2.py Sun Jan 24 00:04:36 2010 @@ -779,8 +779,8 @@ r = MockResponse(200, "OK", {}, "") newreq = h.do_request_(req) if data is None: # GET - self.assertTrue("Content-length" not in req.unredirected_hdrs) - self.assertTrue("Content-type" not in req.unredirected_hdrs) + self.assertNotIn("Content-length", req.unredirected_hdrs) + self.assertNotIn("Content-type", req.unredirected_hdrs) else: # POST self.assertEqual(req.unredirected_hdrs["Content-length"], "0") self.assertEqual(req.unredirected_hdrs["Content-type"], @@ -897,13 +897,13 @@ # now it's a GET, there should not be headers regarding content # (possibly dragged from before being a POST) headers = [x.lower() for x in o.req.headers] - self.assertTrue("content-length" not in headers) - self.assertTrue("content-type" not in headers) + self.assertNotIn("content-length", headers) + self.assertNotIn("content-type", headers) self.assertEqual(o.req.headers["Nonsense"], "viking=withhold") - self.assertTrue("Spam" not in o.req.headers) - self.assertTrue("Spam" not in o.req.unredirected_hdrs) + self.assertNotIn("Spam", o.req.headers) + self.assertNotIn("Spam", o.req.unredirected_hdrs) # loop detection req = Request(from_url) @@ -1017,10 +1017,10 @@ # Verify Proxy-Authorization gets tunneled to request. # httpsconn req_headers do not have the Proxy-Authorization header but # the req will have. - self.assertFalse(("Proxy-Authorization","FooBar") in + self.assertNotIn(("Proxy-Authorization","FooBar"), https_handler.httpconn.req_headers) - self.assertTrue(("User-Agent","Grail") in - https_handler.httpconn.req_headers) + self.assertIn(("User-Agent","Grail"), + https_handler.httpconn.req_headers) self.assertIsNotNone(req._tunnel_host) self.assertEqual(req.get_host(), "proxy.example.com:3128") self.assertEqual(req.get_header("Proxy-authorization"),"FooBar") Modified: python/trunk/Lib/test/test_userdict.py ============================================================================== --- python/trunk/Lib/test/test_userdict.py (original) +++ python/trunk/Lib/test/test_userdict.py Sun Jan 24 00:04:36 2010 @@ -96,7 +96,7 @@ # Test has_key and "in". for i in u2.keys(): self.assertTrue(u2.has_key(i)) - self.assertTrue(i in u2) + self.assertIn(i, u2) self.assertEqual(u1.has_key(i), d1.has_key(i)) self.assertEqual(i in u1, i in d1) self.assertEqual(u0.has_key(i), d0.has_key(i)) @@ -161,8 +161,8 @@ d = D({1: 2, 3: 4}) self.assertEqual(d[1], 2) self.assertEqual(d[3], 4) - self.assertTrue(2 not in d) - self.assertTrue(2 not in d.keys()) + self.assertNotIn(2, d) + self.assertNotIn(2, d.keys()) self.assertEqual(d[2], 42) class E(UserDict.UserDict): def __missing__(self, key): @@ -273,8 +273,8 @@ self.assertTrue(not s.has_key(20)) # __contains__ - self.assertTrue(10 in s) - self.assertTrue(20 not in s) + self.assertIn(10, s) + self.assertNotIn(20, s) # __iter__ self.assertEqual([k for k in s], [10, 30]) @@ -309,7 +309,7 @@ # pop self.assertEqual(s.pop(10), 'ten') - self.assertTrue(10 not in s) + self.assertNotIn(10, s) s[10] = 'ten' self.assertEqual(s.pop("x", 1), 1) s["x"] = 42 @@ -317,7 +317,7 @@ # popitem k, v = s.popitem() - self.assertTrue(k not in s) + self.assertNotIn(k, s) s[k] = v # clear Modified: python/trunk/Lib/test/test_warnings.py ============================================================================== --- python/trunk/Lib/test/test_warnings.py (original) +++ python/trunk/Lib/test/test_warnings.py Sun Jan 24 00:04:36 2010 @@ -472,7 +472,7 @@ with test_support.captured_output('stderr') as stream: self.module.warn(text) result = stream.getvalue() - self.assertTrue(text in result) + self.assertIn(text, result) def test_showwarning_not_callable(self): with original_warnings.catch_warnings(module=self.module): Modified: python/trunk/Lib/test/test_weakref.py ============================================================================== --- python/trunk/Lib/test/test_weakref.py (original) +++ python/trunk/Lib/test/test_weakref.py Sun Jan 24 00:04:36 2010 @@ -172,8 +172,7 @@ p[:] = [2, 3] self.assertEqual(len(L), 2) self.assertEqual(len(p), 2) - self.assertTrue(3 in p, - "proxy didn't support __contains__() properly") + self.assertIn(3, p, "proxy didn't support __contains__() properly") p[1] = 5 self.assertEqual(L[1], 5) self.assertEqual(p[1], 5) @@ -196,7 +195,7 @@ def __unicode__(self): return u"unicode" instance = C() - self.assertTrue("__unicode__" in dir(weakref.proxy(instance))) + self.assertIn("__unicode__", dir(weakref.proxy(instance))) self.assertEqual(unicode(weakref.proxy(instance)), u"unicode") def test_proxy_index(self): @@ -718,8 +717,8 @@ refs = weakref.getweakrefs(o) self.assertEqual(len(refs), 3) self.assertTrue(r2 is refs[0]) - self.assertTrue(r1 in refs[1:]) - self.assertTrue(r3 in refs[1:]) + self.assertIn(r1, refs[1:]) + self.assertIn(r3, refs[1:]) def test_subclass_refs_dont_conflate_callbacks(self): class MyRef(weakref.ref): @@ -729,8 +728,8 @@ r2 = MyRef(o, str) self.assertTrue(r1 is not r2) refs = weakref.getweakrefs(o) - self.assertTrue(r1 in refs) - self.assertTrue(r2 in refs) + self.assertIn(r1, refs) + self.assertIn(r2, refs) def test_subclass_refs_with_slots(self): class MyRef(weakref.ref): @@ -868,7 +867,7 @@ for wr in refs: ob = wr() self.assertTrue(dict.has_key(ob)) - self.assertTrue(ob in dict) + self.assertIn(ob, dict) self.assertEqual(ob.arg, dict[ob]) objects2.remove(ob) self.assertEqual(len(objects2), 0) @@ -879,7 +878,7 @@ for wr in dict.iterkeyrefs(): ob = wr() self.assertTrue(dict.has_key(ob)) - self.assertTrue(ob in dict) + self.assertIn(ob, dict) self.assertEqual(ob.arg, dict[ob]) objects2.remove(ob) self.assertEqual(len(objects2), 0) Modified: python/trunk/Lib/test/test_winreg.py ============================================================================== --- python/trunk/Lib/test/test_winreg.py (original) +++ python/trunk/Lib/test/test_winreg.py Sun Jan 24 00:04:36 2010 @@ -112,8 +112,8 @@ data = EnumValue(sub_key, index) except EnvironmentError: break - self.assertEquals(data in test_data, True, - "Didn't read back the correct test data") + self.assertIn(data, test_data, + "Didn't read back the correct test data") index = index + 1 self.assertEquals(index, len(test_data), "Didn't read the correct number of items") Modified: python/trunk/Lib/test/test_xmlrpc.py ============================================================================== --- python/trunk/Lib/test/test_xmlrpc.py (original) +++ python/trunk/Lib/test/test_xmlrpc.py Sun Jan 24 00:04:36 2010 @@ -941,7 +941,7 @@ conn.putheader("X-Test", "test_custom_user_agent") req = self.issue_request(TestTransport) - self.assertTrue("X-Test: test_custom_user_agent\r\n" in req) + self.assertIn("X-Test: test_custom_user_agent\r\n", req) def test_send_host(self): class TestTransport(FakeTransport): @@ -951,7 +951,7 @@ conn.putheader("X-Test", "test_send_host") req = self.issue_request(TestTransport) - self.assertTrue("X-Test: test_send_host\r\n" in req) + self.assertIn("X-Test: test_send_host\r\n", req) def test_send_request(self): class TestTransport(FakeTransport): @@ -961,7 +961,7 @@ conn.putheader("X-Test", "test_send_request") req = self.issue_request(TestTransport) - self.assertTrue("X-Test: test_send_request\r\n" in req) + self.assertIn("X-Test: test_send_request\r\n", req) def test_send_content(self): class TestTransport(FakeTransport): @@ -971,7 +971,7 @@ xmlrpclib.Transport.send_content(self, conn, body) req = self.issue_request(TestTransport) - self.assertTrue("X-Test: test_send_content\r\n" in req) + self.assertIn("X-Test: test_send_content\r\n", req) @test_support.reap_threads def test_main(): Modified: python/trunk/Lib/test/test_xrange.py ============================================================================== --- python/trunk/Lib/test/test_xrange.py (original) +++ python/trunk/Lib/test/test_xrange.py Sun Jan 24 00:04:36 2010 @@ -63,18 +63,18 @@ self.assertEqual(list(xrange(a+4, a, -2)), [a+4, a+2]) seq = list(xrange(a, b, c)) - self.assertTrue(a in seq) - self.assertTrue(b not in seq) + self.assertIn(a, seq) + self.assertNotIn(b, seq) self.assertEqual(len(seq), 2) seq = list(xrange(b, a, -c)) - self.assertTrue(b in seq) - self.assertTrue(a not in seq) + self.assertIn(b, seq) + self.assertNotIn(a, seq) self.assertEqual(len(seq), 2) seq = list(xrange(-a, -b, -c)) - self.assertTrue(-a in seq) - self.assertTrue(-b not in seq) + self.assertIn(-a, seq) + self.assertNotIn(-b, seq) self.assertEqual(len(seq), 2) self.assertRaises(TypeError, xrange) Modified: python/trunk/Lib/test/test_zipfile.py ============================================================================== --- python/trunk/Lib/test/test_zipfile.py (original) +++ python/trunk/Lib/test/test_zipfile.py Sun Jan 24 00:04:36 2010 @@ -68,9 +68,9 @@ lines = directory.splitlines() self.assertEqual(len(lines), 4) # Number of files + header - self.assertTrue('File Name' in lines[0]) - self.assertTrue('Modified' in lines[0]) - self.assertTrue('Size' in lines[0]) + self.assertIn('File Name', lines[0]) + self.assertIn('Modified', lines[0]) + self.assertIn('Size', lines[0]) fn, date, time_, size = lines[1].split() self.assertEqual(fn, 'another.name') @@ -81,17 +81,17 @@ # Check the namelist names = zipfp.namelist() self.assertEqual(len(names), 3) - self.assertTrue(TESTFN in names) - self.assertTrue("another.name" in names) - self.assertTrue("strfile" in names) + self.assertIn(TESTFN, names) + self.assertIn("another.name", names) + self.assertIn("strfile", names) # Check infolist infos = zipfp.infolist() names = [i.filename for i in infos] self.assertEqual(len(names), 3) - self.assertTrue(TESTFN in names) - self.assertTrue("another.name" in names) - self.assertTrue("strfile" in names) + self.assertIn(TESTFN, names) + self.assertIn("another.name", names) + self.assertIn("strfile", names) for i in infos: self.assertEqual(i.file_size, len(self.data)) @@ -458,9 +458,9 @@ lines = directory.splitlines() self.assertEqual(len(lines), 4) # Number of files + header - self.assertTrue('File Name' in lines[0]) - self.assertTrue('Modified' in lines[0]) - self.assertTrue('Size' in lines[0]) + self.assertIn('File Name', lines[0]) + self.assertIn('Modified', lines[0]) + self.assertIn('Size', lines[0]) fn, date, time_, size = lines[1].split() self.assertEqual(fn, 'another.name') @@ -471,17 +471,17 @@ # Check the namelist names = zipfp.namelist() self.assertEqual(len(names), 3) - self.assertTrue(TESTFN in names) - self.assertTrue("another.name" in names) - self.assertTrue("strfile" in names) + self.assertIn(TESTFN, names) + self.assertIn("another.name", names) + self.assertIn("strfile", names) # Check infolist infos = zipfp.infolist() names = [i.filename for i in infos] self.assertEqual(len(names), 3) - self.assertTrue(TESTFN in names) - self.assertTrue("another.name" in names) - self.assertTrue("strfile" in names) + self.assertIn(TESTFN, names) + self.assertIn("another.name", names) + self.assertIn("strfile", names) for i in infos: self.assertEqual(i.file_size, len(self.data)) @@ -527,7 +527,7 @@ zipfp.writepy(fn) bn = os.path.basename(fn) - self.assertTrue(bn not in zipfp.namelist()) + self.assertNotIn(bn, zipfp.namelist()) self.assertTrue(bn + 'o' in zipfp.namelist() or bn + 'c' in zipfp.namelist()) @@ -539,7 +539,7 @@ zipfp.writepy(fn, "testpackage") bn = "%s/%s" % ("testpackage", os.path.basename(fn)) - self.assertTrue(bn not in zipfp.namelist()) + self.assertNotIn(bn, zipfp.namelist()) self.assertTrue(bn + 'o' in zipfp.namelist() or bn + 'c' in zipfp.namelist()) @@ -576,7 +576,7 @@ names = zipfp.namelist() self.assertTrue('mod1.pyc' in names or 'mod1.pyo' in names) self.assertTrue('mod2.pyc' in names or 'mod2.pyo' in names) - self.assertTrue('mod2.txt' not in names) + self.assertNotIn('mod2.txt', names) finally: shutil.rmtree(TESTFN2) Modified: python/trunk/Lib/test/test_zipimport.py ============================================================================== --- python/trunk/Lib/test/test_zipimport.py (original) +++ python/trunk/Lib/test/test_zipimport.py Sun Jan 24 00:04:36 2010 @@ -297,7 +297,7 @@ z.close() zi = zipimport.zipimporter(TEMP_ZIP) self.assertEquals(data, zi.get_data(name)) - self.assertTrue('zipimporter object' in repr(zi)) + self.assertIn('zipimporter object', repr(zi)) finally: z.close() os.remove(TEMP_ZIP) Modified: python/trunk/Lib/test/test_zipimport_support.py ============================================================================== --- python/trunk/Lib/test/test_zipimport_support.py (original) +++ python/trunk/Lib/test/test_zipimport_support.py Sun Jan 24 00:04:36 2010 @@ -189,7 +189,7 @@ print "Expected line", expected print "Got stdout:" print data - self.assertTrue(expected in data) + self.assertIn(expected, data) zip_name, run_name = make_zip_script(d, "test_zip", script_name, '__main__.py') exit_code, data = run_python(zip_name) @@ -198,7 +198,7 @@ print "Expected line", expected print "Got stdout:" print data - self.assertTrue(expected in data) + self.assertIn(expected, data) def test_pdb_issue4201(self): test_src = textwrap.dedent("""\ @@ -213,13 +213,13 @@ p = spawn_python(script_name) p.stdin.write('l\n') data = kill_python(p) - self.assertTrue(script_name in data) + self.assertIn(script_name, data) zip_name, run_name = make_zip_script(d, "test_zip", script_name, '__main__.py') p = spawn_python(zip_name) p.stdin.write('l\n') data = kill_python(p) - self.assertTrue(run_name in data) + self.assertIn(run_name, data) def test_main(): From python-checkins at python.org Sun Jan 24 00:41:57 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 23 Jan 2010 23:41:57 -0000 Subject: [Python-checkins] r77716 - python/branches/py3k Message-ID: Author: ezio.melotti Date: Sun Jan 24 00:41:57 2010 New Revision: 77716 Log: Recorded merge of revisions 77715 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77715 | ezio.melotti | 2010-01-24 01:04:36 +0200 (Sun, 24 Jan 2010) | 1 line use assert[Not]In where appropriate ........ Modified: python/branches/py3k/ (props changed) From solipsis at pitrou.net Sun Jan 24 00:55:42 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Sun, 24 Jan 2010 00:55:42 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77711): sum=0 Message-ID: <20100123235542.B7E141770A@ns6635.ovh.net> py3k results for svn r77711 (hg cset 58b20aec4f3a) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogHIY8Ek', '-x', 'test_httpservers'] From python-checkins at python.org Sun Jan 24 01:33:33 2010 From: python-checkins at python.org (tarek.ziade) Date: Sun, 24 Jan 2010 00:33:33 -0000 Subject: [Python-checkins] r77717 - in python/trunk: Lib/distutils/command/register.py Lib/distutils/command/upload.py Lib/distutils/dist.py Lib/distutils/tests/test_register.py Lib/distutils/tests/test_upload.py Misc/NEWS Message-ID: Author: tarek.ziade Date: Sun Jan 24 01:33:32 2010 New Revision: 77717 Log: Fixed #7748: now upload and register commands don't need to force the encoding anymore : DistributionMetada returns utf8 strings Modified: python/trunk/Lib/distutils/command/register.py python/trunk/Lib/distutils/command/upload.py python/trunk/Lib/distutils/dist.py python/trunk/Lib/distutils/tests/test_register.py python/trunk/Lib/distutils/tests/test_upload.py python/trunk/Misc/NEWS Modified: python/trunk/Lib/distutils/command/register.py ============================================================================== --- python/trunk/Lib/distutils/command/register.py (original) +++ python/trunk/Lib/distutils/command/register.py Sun Jan 24 01:33:32 2010 @@ -266,7 +266,6 @@ if type(value) not in (type([]), type( () )): value = [value] for value in value: - value = unicode(value).encode("utf-8") body.write(sep_boundary) body.write('\nContent-Disposition: form-data; name="%s"'%key) body.write("\n\n") Modified: python/trunk/Lib/distutils/command/upload.py ============================================================================== --- python/trunk/Lib/distutils/command/upload.py (original) +++ python/trunk/Lib/distutils/command/upload.py Sun Jan 24 01:33:32 2010 @@ -145,7 +145,7 @@ value = value[1] else: fn = "" - value = str(value) + body.write(sep_boundary) body.write('\nContent-Disposition: form-data; name="%s"'%key) body.write(fn) Modified: python/trunk/Lib/distutils/dist.py ============================================================================== --- python/trunk/Lib/distutils/dist.py (original) +++ python/trunk/Lib/distutils/dist.py Sun Jan 24 01:33:32 2010 @@ -1139,16 +1139,19 @@ self._write_list(file, 'Obsoletes', self.get_obsoletes()) def _write_field(self, file, name, value): - if isinstance(value, unicode): - value = value.encode(PKG_INFO_ENCODING) - else: - value = str(value) - file.write('%s: %s\n' % (name, value)) + file.write('%s: %s\n' % (name, self._encode_field(value))) def _write_list (self, file, name, values): for value in values: self._write_field(file, name, value) + def _encode_field(self, value): + if value is None: + return None + if isinstance(value, unicode): + return value.encode(PKG_INFO_ENCODING) + return str(value) + # -- Metadata query methods ---------------------------------------- def get_name(self): @@ -1161,19 +1164,20 @@ return "%s-%s" % (self.get_name(), self.get_version()) def get_author(self): - return self.author or "UNKNOWN" + return self._encode_field(self.author) or "UNKNOWN" def get_author_email(self): return self.author_email or "UNKNOWN" def get_maintainer(self): - return self.maintainer or "UNKNOWN" + return self._encode_field(self.maintainer) or "UNKNOWN" def get_maintainer_email(self): return self.maintainer_email or "UNKNOWN" def get_contact(self): - return self.maintainer or self.author or "UNKNOWN" + return (self._encode_field(self.maintainer) or + self._encode_field(self.author) or "UNKNOWN") def get_contact_email(self): return self.maintainer_email or self.author_email or "UNKNOWN" @@ -1186,10 +1190,10 @@ get_licence = get_license def get_description(self): - return self.description or "UNKNOWN" + return self._encode_field(self.description) or "UNKNOWN" def get_long_description(self): - return self.long_description or "UNKNOWN" + return self._encode_field(self.long_description) or "UNKNOWN" def get_keywords(self): return self.keywords or [] Modified: python/trunk/Lib/distutils/tests/test_register.py ============================================================================== --- python/trunk/Lib/distutils/tests/test_register.py (original) +++ python/trunk/Lib/distutils/tests/test_register.py Sun Jan 24 01:33:32 2010 @@ -1,4 +1,5 @@ """Tests for distutils.command.register.""" +# -*- encoding: utf8 -*- import sys import os import unittest @@ -136,9 +137,7 @@ self.assertTrue(self.conn.reqs, 2) req1 = dict(self.conn.reqs[0].headers) req2 = dict(self.conn.reqs[1].headers) - - self.assertEquals(req1['Content-length'], '1374') - self.assertEquals(req2['Content-length'], '1374') + self.assertEquals(req2['Content-length'], req1['Content-length']) self.assertTrue('xxx' in self.conn.reqs[1].data) def test_password_not_in_file(self): @@ -210,7 +209,7 @@ # metadata are OK but long_description is broken metadata = {'url': 'xxx', 'author': 'xxx', - 'author_email': 'xxx', + 'author_email': u'?x?x?', 'name': 'xxx', 'version': 'xxx', 'long_description': 'title\n==\n\ntext'} Modified: python/trunk/Lib/distutils/tests/test_upload.py ============================================================================== --- python/trunk/Lib/distutils/tests/test_upload.py (original) +++ python/trunk/Lib/distutils/tests/test_upload.py Sun Jan 24 01:33:32 2010 @@ -1,4 +1,5 @@ """Tests for distutils.command.upload.""" +# -*- encoding: utf8 -*- import sys import os import unittest @@ -107,14 +108,15 @@ self.write_file(self.rc, PYPIRC_LONG_PASSWORD) # lets run it - pkg_dir, dist = self.create_dist(dist_files=dist_files) + pkg_dir, dist = self.create_dist(dist_files=dist_files, author=u'd?d?') cmd = upload(dist) cmd.ensure_finalized() cmd.run() # what did we send ? + self.assertIn('d?d?', self.last_open.req.data) headers = dict(self.last_open.req.headers) - self.assertEquals(headers['Content-length'], '2086') + self.assertEquals(headers['Content-length'], '2085') self.assertTrue(headers['Content-type'].startswith('multipart/form-data')) self.assertEquals(self.last_open.req.get_method(), 'POST') self.assertEquals(self.last_open.req.get_full_url(), Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Jan 24 01:33:32 2010 @@ -42,6 +42,11 @@ Library ------- +- Issue #7748: Since unicode values are supported for some metadata options + in Distutils, the DistributionMetadata get_* methods will now return an utf-8 + encoded string for them. This ensure that the upload and register commands + send the right values to PyPI without any error. + - Issue #1670765: Prevent email.generator.Generator from re-wrapping headers in multipart/signed MIME parts, which fixes one of the sources of invalid modifications to such parts by Generator. @@ -186,7 +191,7 @@ - Distutils now correctly identifies the build architecture as "x86_64" when building on OSX 10.6 without "-arch" flags. -- Issue #7556: Distutils' msvc9compiler now opens the MSVC Manifest +- Issue #7556: Distutils' msvc9compiler now opens the MSVC Manifest file in text mode. - Issue #7552: Removed line feed in the base64 Authorization header in From python-checkins at python.org Sun Jan 24 01:36:15 2010 From: python-checkins at python.org (tarek.ziade) Date: Sun, 24 Jan 2010 00:36:15 -0000 Subject: [Python-checkins] r77718 - python/branches/release26-maint Message-ID: Author: tarek.ziade Date: Sun Jan 24 01:36:14 2010 New Revision: 77718 Log: Blocked revisions 77712 via svnmerge ........ r77712 | tarek.ziade | 2010-01-23 18:52:57 +0100 (Sat, 23 Jan 2010) | 1 line fixed the 64bits tests for get_platform() - mac osx ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Sun Jan 24 01:57:21 2010 From: python-checkins at python.org (tarek.ziade) Date: Sun, 24 Jan 2010 00:57:21 -0000 Subject: [Python-checkins] r77719 - in python/branches/release26-maint: Lib/distutils/command/register.py Lib/distutils/command/upload.py Lib/distutils/dist.py Lib/distutils/tests/test_upload.py Misc/NEWS Message-ID: Author: tarek.ziade Date: Sun Jan 24 01:57:20 2010 New Revision: 77719 Log: Merged revisions 77717 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77717 | tarek.ziade | 2010-01-24 01:33:32 +0100 (Sun, 24 Jan 2010) | 1 line Fixed #7748: now upload and register commands don't need to force the encoding anymore : DistributionMetada returns utf8 strings ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/distutils/command/register.py python/branches/release26-maint/Lib/distutils/command/upload.py python/branches/release26-maint/Lib/distutils/dist.py python/branches/release26-maint/Lib/distutils/tests/test_upload.py python/branches/release26-maint/Misc/NEWS Modified: python/branches/release26-maint/Lib/distutils/command/register.py ============================================================================== --- python/branches/release26-maint/Lib/distutils/command/register.py (original) +++ python/branches/release26-maint/Lib/distutils/command/register.py Sun Jan 24 01:57:20 2010 @@ -261,7 +261,6 @@ if type(value) not in (type([]), type( () )): value = [value] for value in value: - value = unicode(value).encode("utf-8") body.write(sep_boundary) body.write('\nContent-Disposition: form-data; name="%s"'%key) body.write("\n\n") Modified: python/branches/release26-maint/Lib/distutils/command/upload.py ============================================================================== --- python/branches/release26-maint/Lib/distutils/command/upload.py (original) +++ python/branches/release26-maint/Lib/distutils/command/upload.py Sun Jan 24 01:57:20 2010 @@ -133,7 +133,7 @@ value = value[1] else: fn = "" - value = str(value) + body.write(sep_boundary) body.write('\nContent-Disposition: form-data; name="%s"'%key) body.write(fn) Modified: python/branches/release26-maint/Lib/distutils/dist.py ============================================================================== --- python/branches/release26-maint/Lib/distutils/dist.py (original) +++ python/branches/release26-maint/Lib/distutils/dist.py Sun Jan 24 01:57:20 2010 @@ -1114,18 +1114,20 @@ self._write_list(file, 'Obsoletes', self.get_obsoletes()) def _write_field(self, file, name, value): - - if isinstance(value, unicode): - value = value.encode(PKG_INFO_ENCODING) - else: - value = str(value) - file.write('%s: %s\n' % (name, value)) + file.write('%s: %s\n' % (name, self._encode_field(value))) def _write_list (self, file, name, values): for value in values: self._write_field(file, name, value) + def _encode_field(self, value): + if value is None: + return None + if isinstance(value, unicode): + return value.encode(PKG_INFO_ENCODING) + return str(value) + # -- Metadata query methods ---------------------------------------- def get_name (self): @@ -1138,21 +1140,20 @@ return "%s-%s" % (self.get_name(), self.get_version()) def get_author(self): - return self.author or "UNKNOWN" + return self._encode_field(self.author) or "UNKNOWN" def get_author_email(self): return self.author_email or "UNKNOWN" def get_maintainer(self): - return self.maintainer or "UNKNOWN" + return self._encode_field(self.maintainer) or "UNKNOWN" def get_maintainer_email(self): return self.maintainer_email or "UNKNOWN" def get_contact(self): - return (self.maintainer or - self.author or - "UNKNOWN") + return (self._encode_field(self.maintainer) or + self._encode_field(self.author) or "UNKNOWN") def get_contact_email(self): return (self.maintainer_email or @@ -1167,10 +1168,10 @@ get_licence = get_license def get_description(self): - return self.description or "UNKNOWN" + return self._encode_field(self.description) or "UNKNOWN" def get_long_description(self): - return self.long_description or "UNKNOWN" + return self._encode_field(self.long_description) or "UNKNOWN" def get_keywords(self): return self.keywords or [] Modified: python/branches/release26-maint/Lib/distutils/tests/test_upload.py ============================================================================== --- python/branches/release26-maint/Lib/distutils/tests/test_upload.py (original) +++ python/branches/release26-maint/Lib/distutils/tests/test_upload.py Sun Jan 24 01:57:20 2010 @@ -1,4 +1,5 @@ """Tests for distutils.command.upload.""" +# -*- encoding: utf8 -*- import sys import os import unittest @@ -95,7 +96,7 @@ self.write_file(self.rc, PYPIRC_LONG_PASSWORD) # lets run it - pkg_dir, dist = self.create_dist(dist_files=dist_files) + pkg_dir, dist = self.create_dist(dist_files=dist_files, author=u'd?d?') cmd = upload(dist) cmd.ensure_finalized() cmd.run() @@ -104,7 +105,8 @@ res = _CONNECTIONS[-1] headers = res.headers - self.assertEquals(headers['Content-length'], '2086') + self.assert_('d?d?' in res.body) + self.assertEquals(headers['Content-length'], '2085') self.assertTrue(headers['Content-type'].startswith('multipart/form-data')) method, request = res.requests[-1] Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Sun Jan 24 01:57:20 2010 @@ -53,6 +53,11 @@ Library ------- +- Issue #7748: Since unicode values are supported for some metadata options + in Distutils, the DistributionMetadata get_* methods will now return an utf-8 + encoded string for them. This ensure that the upload and register commands + send the right values to PyPI without any error. + - Issue #1670765: Prevent email.generator.Generator from re-wrapping headers in multipart/signed MIME parts, which fixes one of the sources of invalid modifications to such parts by Generator. From python-checkins at python.org Sun Jan 24 02:29:59 2010 From: python-checkins at python.org (tarek.ziade) Date: Sun, 24 Jan 2010 01:29:59 -0000 Subject: [Python-checkins] r77720 - python/branches/py3k Message-ID: Author: tarek.ziade Date: Sun Jan 24 02:29:58 2010 New Revision: 77720 Log: Blocked revisions 77717 via svnmerge ........ r77717 | tarek.ziade | 2010-01-24 01:33:32 +0100 (Sun, 24 Jan 2010) | 1 line Fixed #7748: now upload and register commands don't need to force the encoding anymore : DistributionMetada returns utf8 strings ........ Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Sun Jan 24 04:34:56 2010 From: python-checkins at python.org (raymond.hettinger) Date: Sun, 24 Jan 2010 03:34:56 -0000 Subject: [Python-checkins] r77721 - python/branches/release26-maint/Doc/library/itertools.rst Message-ID: Author: raymond.hettinger Date: Sun Jan 24 04:34:56 2010 New Revision: 77721 Log: Issue 7764: Improve recipe for itertools.consume(). Modified: python/branches/release26-maint/Doc/library/itertools.rst Modified: python/branches/release26-maint/Doc/library/itertools.rst ============================================================================== --- python/branches/release26-maint/Doc/library/itertools.rst (original) +++ python/branches/release26-maint/Doc/library/itertools.rst Sun Jan 24 04:34:56 2010 @@ -641,7 +641,13 @@ def consume(iterator, n): "Advance the iterator n-steps ahead. If n is none, consume entirely." - collections.deque(islice(iterator, n), maxlen=0) + # The technique uses objects that consume iterators at C speed. + if n is None: + # feed the entire iterator into a zero-length deque + collections.deque(iterator, maxlen=0) + else: + # advance to the emtpy slice starting at position n + next(islice(iterator, n, n), None) def nth(iterable, n, default=None): "Returns the nth item or a default value" @@ -751,3 +757,10 @@ # unique_justseen('AAAABBBCCDAABBB') --> A B C D A B # unique_justseen('ABBCcAD', str.lower) --> A B C A D return imap(next, imap(itemgetter(1), groupby(iterable, key))) + +Note, many of the above recipes can be optimized by replacing global lookups +with local variables defined as default values. For example, the +*dotproduct* recipe can be written as: + + def dotproduct(vec1, vec2, sum=sum, imap=imap, mul=operator.mul): + return sum(imap(mul, vec1, vec2)) From python-checkins at python.org Sun Jan 24 11:16:29 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 24 Jan 2010 10:16:29 -0000 Subject: [Python-checkins] r77722 - in python/branches/py3k: Python/dtoa.c Python/pystrtod.c Message-ID: Author: mark.dickinson Date: Sun Jan 24 11:16:29 2010 New Revision: 77722 Log: Merged revisions 77691,77698,77713-77714 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77691 | mark.dickinson | 2010-01-22 16:18:09 +0000 (Fri, 22 Jan 2010) | 1 line Correct typo in comment. ........ r77698 | mark.dickinson | 2010-01-22 17:04:07 +0000 (Fri, 22 Jan 2010) | 3 lines Issue #7743: Fix a potential incorrect rounding bug in dtoa.c (2nd bug in issue 7743). ........ r77713 | mark.dickinson | 2010-01-23 20:48:56 +0000 (Sat, 23 Jan 2010) | 3 lines Issue #7743: Add checks for zero inputs to the lshift and mult functions; this fixes the first bug described in issue #7743. ........ r77714 | mark.dickinson | 2010-01-23 21:25:53 +0000 (Sat, 23 Jan 2010) | 1 line dtoa.c fix from upstream that fixes incorrectly rounded results for certain subnormals that are also halfway cases. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Python/dtoa.c python/branches/py3k/Python/pystrtod.c Modified: python/branches/py3k/Python/dtoa.c ============================================================================== --- python/branches/py3k/Python/dtoa.c (original) +++ python/branches/py3k/Python/dtoa.c Sun Jan 24 11:16:29 2010 @@ -235,6 +235,7 @@ #define Bias 1023 #define Emax 1023 #define Emin (-1022) +#define Etiny (-1074) /* smallest denormal is 2**Etiny */ #define Exp_1 0x3ff00000 #define Exp_11 0x3ff00000 #define Ebits 11 @@ -244,7 +245,6 @@ #define Bletch 0x10 #define Bndry_mask 0xfffff #define Bndry_mask1 0xfffff -#define LSB 1 #define Sign_bit 0x80000000 #define Log2P 1 #define Tiny0 0 @@ -622,6 +622,15 @@ ULong z2; #endif + if ((!a->x[0] && a->wds == 1) || (!b->x[0] && b->wds == 1)) { + c = Balloc(0); + if (c == NULL) + return NULL; + c->wds = 1; + c->x[0] = 0; + return c; + } + if (a->wds < b->wds) { c = a; a = b; @@ -820,6 +829,9 @@ Bigint *b1; ULong *x, *x1, *xe, z; + if (!k || (!b->x[0] && b->wds == 1)) + return b; + n = k >> 5; k1 = b->k; n1 = n + b->wds + 1; @@ -1019,6 +1031,76 @@ return dval(&d); } +/* Convert a scaled double to a Bigint plus an exponent. Similar to d2b, + except that it accepts the scale parameter used in _Py_dg_strtod (which + should be either 0 or 2*P), and the normalization for the return value is + different (see below). On input, d should be finite and nonnegative, and d + / 2**scale should be exactly representable as an IEEE 754 double. + + Returns a Bigint b and an integer e such that + + dval(d) / 2**scale = b * 2**e. + + Unlike d2b, b is not necessarily odd: b and e are normalized so + that either 2**(P-1) <= b < 2**P and e >= Etiny, or b < 2**P + and e == Etiny. This applies equally to an input of 0.0: in that + case the return values are b = 0 and e = Etiny. + + The above normalization ensures that for all possible inputs d, + 2**e gives ulp(d/2**scale). + + Returns NULL on failure. +*/ + +static Bigint * +sd2b(U *d, int scale, int *e) +{ + Bigint *b; + + b = Balloc(1); + if (b == NULL) + return NULL; + + /* First construct b and e assuming that scale == 0. */ + b->wds = 2; + b->x[0] = word1(d); + b->x[1] = word0(d) & Frac_mask; + *e = Etiny - 1 + (int)((word0(d) & Exp_mask) >> Exp_shift); + if (*e < Etiny) + *e = Etiny; + else + b->x[1] |= Exp_msk1; + + /* Now adjust for scale, provided that b != 0. */ + if (scale && (b->x[0] || b->x[1])) { + *e -= scale; + if (*e < Etiny) { + scale = Etiny - *e; + *e = Etiny; + /* We can't shift more than P-1 bits without shifting out a 1. */ + assert(0 < scale && scale <= P - 1); + if (scale >= 32) { + /* The bits shifted out should all be zero. */ + assert(b->x[0] == 0); + b->x[0] = b->x[1]; + b->x[1] = 0; + scale -= 32; + } + if (scale) { + /* The bits shifted out should all be zero. */ + assert(b->x[0] << (32 - scale) == 0); + b->x[0] = (b->x[0] >> scale) | (b->x[1] << (32 - scale)); + b->x[1] >>= scale; + } + } + } + /* Ensure b is normalized. */ + if (!b->x[1]) + b->wds = 1; + + return b; +} + /* Convert a double to a Bigint plus an exponent. Return NULL on failure. Given a finite nonzero double d, return an odd Bigint b and exponent *e @@ -1028,7 +1110,6 @@ If d is zero, then b == 0, *e == -1010, *bbits = 0. */ - static Bigint * d2b(U *d, int *e, int *bits) { @@ -1299,45 +1380,29 @@ bigcomp(U *rv, const char *s0, BCinfo *bc) { Bigint *b, *d; - int b2, bbits, d2, dd, i, nd, nd0, odd, p2, p5; + int b2, d2, dd, i, nd, nd0, odd, p2, p5; dd = 0; /* silence compiler warning about possibly unused variable */ nd = bc->nd; nd0 = bc->nd0; p5 = nd + bc->e0; - if (rv->d == 0.) { - /* special case because d2b doesn't handle 0.0 */ - b = i2b(0); - if (b == NULL) - return -1; - p2 = Emin - P + 1; /* = -1074 for IEEE 754 binary64 */ - bbits = 0; - } - else { - b = d2b(rv, &p2, &bbits); - if (b == NULL) - return -1; - p2 -= bc->scale; - } - /* now rv/2^(bc->scale) = b * 2**p2, and b has bbits significant bits */ - - /* Replace (b, p2) by (b << i, p2 - i), with i the largest integer such - that b << i has at most P significant bits and p2 - i >= Emin - P + - 1. */ - i = P - bbits; - if (i > p2 - (Emin - P + 1)) - i = p2 - (Emin - P + 1); - /* increment i so that we shift b by an extra bit; then or-ing a 1 into - the lsb of b gives us rv/2^(bc->scale) + 0.5ulp. */ - b = lshift(b, ++i); + b = sd2b(rv, bc->scale, &p2); if (b == NULL) return -1; + /* record whether the lsb of rv/2^(bc->scale) is odd: in the exact halfway case, this is used for round to even. */ - odd = b->x[0] & 2; + odd = b->x[0] & 1; + + /* left shift b by 1 bit and or a 1 into the least significant bit; + this gives us b * 2**p2 = rv/2^(bc->scale) + 0.5 ulp. */ + b = lshift(b, 1); + if (b == NULL) + return -1; b->x[0] |= 1; + p2--; - p2 -= p5 + i; + p2 -= p5; d = i2b(1); if (d == NULL) { Bfree(b); @@ -1425,8 +1490,8 @@ double _Py_dg_strtod(const char *s00, char **se) { - int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, dsign, e, e1, error; - int esign, i, j, k, lz, nd, nd0, sign; + int bb2, bb5, bbe, bd2, bd5, bs2, c, dsign, e, e1, error; + int esign, i, j, k, lz, nd, nd0, odd, sign; const char *s, *s0, *s1; double aadj, aadj1; U aadj2, adj, rv, rv0; @@ -1786,13 +1851,17 @@ goto failed_malloc; } Bcopy(bd, bd0); - bb = d2b(&rv, &bbe, &bbbits); /* rv = bb * 2^bbe */ + bb = sd2b(&rv, bc.scale, &bbe); /* srv = bb * 2^bbe */ if (bb == NULL) { Bfree(bd); Bfree(bd0); goto failed_malloc; } - /* tdv = bd * 10^e; srv = bb * 2^(bbe - scale) */ + /* Record whether lsb of bb is odd, in case we need this + for the round-to-even step later. */ + odd = bb->x[0] & 1; + + /* tdv = bd * 10**e; srv = bb * 2**bbe */ bs = i2b(1); if (bs == NULL) { Bfree(bb); @@ -1813,44 +1882,28 @@ bb2 += bbe; else bd2 -= bbe; + bs2 = bb2; + bb2++; + bd2++; - /* At this stage e = bd2 - bb2 + bbe = bd5 - bb5, so: - - tdv = bd * 2^(bbe + bd2 - bb2) * 5^(bd5 - bb5) - srv = bb * 2^(bbe - scale). + /* At this stage bd5 - bb5 == e == bd2 - bb2 + bbe, bb2 - bs2 == 1, + and bs == 1, so: - Compute j such that + tdv == bd * 10**e = bd * 2**(bbe - bb2 + bd2) * 5**(bd5 - bb5) + srv == bb * 2**bbe = bb * 2**(bbe - bb2 + bb2) + 0.5 ulp(srv) == 2**(bbe-1) = bs * 2**(bbe - bb2 + bs2) - 0.5 ulp(srv) = 2^(bbe - scale - j) - */ + It follows that: - bs2 = bb2; - j = bbe - bc.scale; - i = j + bbbits - 1; /* logb(rv) */ - if (i < Emin) /* denormal */ - j += P - Emin; - else - j = P + 1 - bbbits; + M * tdv = bd * 2**bd2 * 5**bd5 + M * srv = bb * 2**bb2 * 5**bb5 + M * 0.5 ulp(srv) = bs * 2**bs2 * 5**bb5 - /* Now we have: - - M * tdv = bd * 2^(bd2 + scale + j) * 5^bd5 - M * srv = bb * 2^(bb2 + j) * 5^bb5 - M * 0.5 ulp(srv) = 2^bs2 * 5^bb5 - - where M is the constant (currently) represented by 2^(j + scale + - bb2 - bbe) * 5^bb5. + for some constant M. (Actually, M == 2**(bb2 - bbe) * 5**bb5, but + this fact is not needed below.) */ - bb2 += j; - bd2 += j; - bd2 += bc.scale; - - /* After the adjustments above, tdv, srv and 0.5 ulp(srv) are - proportional to: bd * 2^bd2 * 5^bd5, bb * 2^bb2 * 5^bb5, and - bs * 2^bs2 * 5^bb5, respectively. */ - - /* Remove excess powers of 2. i = min(bb2, bd2, bs2). */ + /* Remove factor of 2**i, where i = min(bb2, bd2, bs2). */ i = bb2 < bd2 ? bb2 : bd2; if (i > bs2) i = bs2; @@ -2028,12 +2081,12 @@ word1(&rv) = 0xffffffff; break; } - if (!(word1(&rv) & LSB)) + if (!odd) break; if (dsign) - dval(&rv) += ulp(&rv); + dval(&rv) += sulp(&rv, &bc); else { - dval(&rv) -= ulp(&rv); + dval(&rv) -= sulp(&rv, &bc); if (!dval(&rv)) { if (bc.nd >nd) break; Modified: python/branches/py3k/Python/pystrtod.c ============================================================================== --- python/branches/py3k/Python/pystrtod.c (original) +++ python/branches/py3k/Python/pystrtod.c Sun Jan 24 11:16:29 2010 @@ -104,7 +104,7 @@ _Py_SET_53BIT_PRECISION_END; if (*endptr == nptr) - /* string might represent and inf or nan */ + /* string might represent an inf or nan */ result = _Py_parse_inf_or_nan(nptr, endptr); return result; From python-checkins at python.org Sun Jan 24 11:17:00 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 24 Jan 2010 10:17:00 -0000 Subject: [Python-checkins] r77723 - in python/branches/release31-maint: Python/dtoa.c Python/pystrtod.c Message-ID: Author: mark.dickinson Date: Sun Jan 24 11:16:59 2010 New Revision: 77723 Log: Merged revisions 77722 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77722 | mark.dickinson | 2010-01-24 10:16:29 +0000 (Sun, 24 Jan 2010) | 23 lines Merged revisions 77691,77698,77713-77714 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77691 | mark.dickinson | 2010-01-22 16:18:09 +0000 (Fri, 22 Jan 2010) | 1 line Correct typo in comment. ........ r77698 | mark.dickinson | 2010-01-22 17:04:07 +0000 (Fri, 22 Jan 2010) | 3 lines Issue #7743: Fix a potential incorrect rounding bug in dtoa.c (2nd bug in issue 7743). ........ r77713 | mark.dickinson | 2010-01-23 20:48:56 +0000 (Sat, 23 Jan 2010) | 3 lines Issue #7743: Add checks for zero inputs to the lshift and mult functions; this fixes the first bug described in issue #7743. ........ r77714 | mark.dickinson | 2010-01-23 21:25:53 +0000 (Sat, 23 Jan 2010) | 1 line dtoa.c fix from upstream that fixes incorrectly rounded results for certain subnormals that are also halfway cases. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Python/dtoa.c python/branches/release31-maint/Python/pystrtod.c Modified: python/branches/release31-maint/Python/dtoa.c ============================================================================== --- python/branches/release31-maint/Python/dtoa.c (original) +++ python/branches/release31-maint/Python/dtoa.c Sun Jan 24 11:16:59 2010 @@ -235,6 +235,7 @@ #define Bias 1023 #define Emax 1023 #define Emin (-1022) +#define Etiny (-1074) /* smallest denormal is 2**Etiny */ #define Exp_1 0x3ff00000 #define Exp_11 0x3ff00000 #define Ebits 11 @@ -244,7 +245,6 @@ #define Bletch 0x10 #define Bndry_mask 0xfffff #define Bndry_mask1 0xfffff -#define LSB 1 #define Sign_bit 0x80000000 #define Log2P 1 #define Tiny0 0 @@ -622,6 +622,15 @@ ULong z2; #endif + if ((!a->x[0] && a->wds == 1) || (!b->x[0] && b->wds == 1)) { + c = Balloc(0); + if (c == NULL) + return NULL; + c->wds = 1; + c->x[0] = 0; + return c; + } + if (a->wds < b->wds) { c = a; a = b; @@ -820,6 +829,9 @@ Bigint *b1; ULong *x, *x1, *xe, z; + if (!k || (!b->x[0] && b->wds == 1)) + return b; + n = k >> 5; k1 = b->k; n1 = n + b->wds + 1; @@ -1019,6 +1031,76 @@ return dval(&d); } +/* Convert a scaled double to a Bigint plus an exponent. Similar to d2b, + except that it accepts the scale parameter used in _Py_dg_strtod (which + should be either 0 or 2*P), and the normalization for the return value is + different (see below). On input, d should be finite and nonnegative, and d + / 2**scale should be exactly representable as an IEEE 754 double. + + Returns a Bigint b and an integer e such that + + dval(d) / 2**scale = b * 2**e. + + Unlike d2b, b is not necessarily odd: b and e are normalized so + that either 2**(P-1) <= b < 2**P and e >= Etiny, or b < 2**P + and e == Etiny. This applies equally to an input of 0.0: in that + case the return values are b = 0 and e = Etiny. + + The above normalization ensures that for all possible inputs d, + 2**e gives ulp(d/2**scale). + + Returns NULL on failure. +*/ + +static Bigint * +sd2b(U *d, int scale, int *e) +{ + Bigint *b; + + b = Balloc(1); + if (b == NULL) + return NULL; + + /* First construct b and e assuming that scale == 0. */ + b->wds = 2; + b->x[0] = word1(d); + b->x[1] = word0(d) & Frac_mask; + *e = Etiny - 1 + (int)((word0(d) & Exp_mask) >> Exp_shift); + if (*e < Etiny) + *e = Etiny; + else + b->x[1] |= Exp_msk1; + + /* Now adjust for scale, provided that b != 0. */ + if (scale && (b->x[0] || b->x[1])) { + *e -= scale; + if (*e < Etiny) { + scale = Etiny - *e; + *e = Etiny; + /* We can't shift more than P-1 bits without shifting out a 1. */ + assert(0 < scale && scale <= P - 1); + if (scale >= 32) { + /* The bits shifted out should all be zero. */ + assert(b->x[0] == 0); + b->x[0] = b->x[1]; + b->x[1] = 0; + scale -= 32; + } + if (scale) { + /* The bits shifted out should all be zero. */ + assert(b->x[0] << (32 - scale) == 0); + b->x[0] = (b->x[0] >> scale) | (b->x[1] << (32 - scale)); + b->x[1] >>= scale; + } + } + } + /* Ensure b is normalized. */ + if (!b->x[1]) + b->wds = 1; + + return b; +} + /* Convert a double to a Bigint plus an exponent. Return NULL on failure. Given a finite nonzero double d, return an odd Bigint b and exponent *e @@ -1028,7 +1110,6 @@ If d is zero, then b == 0, *e == -1010, *bbits = 0. */ - static Bigint * d2b(U *d, int *e, int *bits) { @@ -1299,45 +1380,29 @@ bigcomp(U *rv, const char *s0, BCinfo *bc) { Bigint *b, *d; - int b2, bbits, d2, dd, i, nd, nd0, odd, p2, p5; + int b2, d2, dd, i, nd, nd0, odd, p2, p5; dd = 0; /* silence compiler warning about possibly unused variable */ nd = bc->nd; nd0 = bc->nd0; p5 = nd + bc->e0; - if (rv->d == 0.) { - /* special case because d2b doesn't handle 0.0 */ - b = i2b(0); - if (b == NULL) - return -1; - p2 = Emin - P + 1; /* = -1074 for IEEE 754 binary64 */ - bbits = 0; - } - else { - b = d2b(rv, &p2, &bbits); - if (b == NULL) - return -1; - p2 -= bc->scale; - } - /* now rv/2^(bc->scale) = b * 2**p2, and b has bbits significant bits */ - - /* Replace (b, p2) by (b << i, p2 - i), with i the largest integer such - that b << i has at most P significant bits and p2 - i >= Emin - P + - 1. */ - i = P - bbits; - if (i > p2 - (Emin - P + 1)) - i = p2 - (Emin - P + 1); - /* increment i so that we shift b by an extra bit; then or-ing a 1 into - the lsb of b gives us rv/2^(bc->scale) + 0.5ulp. */ - b = lshift(b, ++i); + b = sd2b(rv, bc->scale, &p2); if (b == NULL) return -1; + /* record whether the lsb of rv/2^(bc->scale) is odd: in the exact halfway case, this is used for round to even. */ - odd = b->x[0] & 2; + odd = b->x[0] & 1; + + /* left shift b by 1 bit and or a 1 into the least significant bit; + this gives us b * 2**p2 = rv/2^(bc->scale) + 0.5 ulp. */ + b = lshift(b, 1); + if (b == NULL) + return -1; b->x[0] |= 1; + p2--; - p2 -= p5 + i; + p2 -= p5; d = i2b(1); if (d == NULL) { Bfree(b); @@ -1425,8 +1490,8 @@ double _Py_dg_strtod(const char *s00, char **se) { - int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, dsign, e, e1, error; - int esign, i, j, k, lz, nd, nd0, sign; + int bb2, bb5, bbe, bd2, bd5, bs2, c, dsign, e, e1, error; + int esign, i, j, k, lz, nd, nd0, odd, sign; const char *s, *s0, *s1; double aadj, aadj1; U aadj2, adj, rv, rv0; @@ -1786,13 +1851,17 @@ goto failed_malloc; } Bcopy(bd, bd0); - bb = d2b(&rv, &bbe, &bbbits); /* rv = bb * 2^bbe */ + bb = sd2b(&rv, bc.scale, &bbe); /* srv = bb * 2^bbe */ if (bb == NULL) { Bfree(bd); Bfree(bd0); goto failed_malloc; } - /* tdv = bd * 10^e; srv = bb * 2^(bbe - scale) */ + /* Record whether lsb of bb is odd, in case we need this + for the round-to-even step later. */ + odd = bb->x[0] & 1; + + /* tdv = bd * 10**e; srv = bb * 2**bbe */ bs = i2b(1); if (bs == NULL) { Bfree(bb); @@ -1813,44 +1882,28 @@ bb2 += bbe; else bd2 -= bbe; + bs2 = bb2; + bb2++; + bd2++; - /* At this stage e = bd2 - bb2 + bbe = bd5 - bb5, so: - - tdv = bd * 2^(bbe + bd2 - bb2) * 5^(bd5 - bb5) - srv = bb * 2^(bbe - scale). + /* At this stage bd5 - bb5 == e == bd2 - bb2 + bbe, bb2 - bs2 == 1, + and bs == 1, so: - Compute j such that + tdv == bd * 10**e = bd * 2**(bbe - bb2 + bd2) * 5**(bd5 - bb5) + srv == bb * 2**bbe = bb * 2**(bbe - bb2 + bb2) + 0.5 ulp(srv) == 2**(bbe-1) = bs * 2**(bbe - bb2 + bs2) - 0.5 ulp(srv) = 2^(bbe - scale - j) - */ + It follows that: - bs2 = bb2; - j = bbe - bc.scale; - i = j + bbbits - 1; /* logb(rv) */ - if (i < Emin) /* denormal */ - j += P - Emin; - else - j = P + 1 - bbbits; + M * tdv = bd * 2**bd2 * 5**bd5 + M * srv = bb * 2**bb2 * 5**bb5 + M * 0.5 ulp(srv) = bs * 2**bs2 * 5**bb5 - /* Now we have: - - M * tdv = bd * 2^(bd2 + scale + j) * 5^bd5 - M * srv = bb * 2^(bb2 + j) * 5^bb5 - M * 0.5 ulp(srv) = 2^bs2 * 5^bb5 - - where M is the constant (currently) represented by 2^(j + scale + - bb2 - bbe) * 5^bb5. + for some constant M. (Actually, M == 2**(bb2 - bbe) * 5**bb5, but + this fact is not needed below.) */ - bb2 += j; - bd2 += j; - bd2 += bc.scale; - - /* After the adjustments above, tdv, srv and 0.5 ulp(srv) are - proportional to: bd * 2^bd2 * 5^bd5, bb * 2^bb2 * 5^bb5, and - bs * 2^bs2 * 5^bb5, respectively. */ - - /* Remove excess powers of 2. i = min(bb2, bd2, bs2). */ + /* Remove factor of 2**i, where i = min(bb2, bd2, bs2). */ i = bb2 < bd2 ? bb2 : bd2; if (i > bs2) i = bs2; @@ -2028,12 +2081,12 @@ word1(&rv) = 0xffffffff; break; } - if (!(word1(&rv) & LSB)) + if (!odd) break; if (dsign) - dval(&rv) += ulp(&rv); + dval(&rv) += sulp(&rv, &bc); else { - dval(&rv) -= ulp(&rv); + dval(&rv) -= sulp(&rv, &bc); if (!dval(&rv)) { if (bc.nd >nd) break; Modified: python/branches/release31-maint/Python/pystrtod.c ============================================================================== --- python/branches/release31-maint/Python/pystrtod.c (original) +++ python/branches/release31-maint/Python/pystrtod.c Sun Jan 24 11:16:59 2010 @@ -101,7 +101,7 @@ _Py_SET_53BIT_PRECISION_END; if (*endptr == nptr) - /* string might represent and inf or nan */ + /* string might represent an inf or nan */ result = _Py_parse_inf_or_nan(nptr, endptr); return result; From python-checkins at python.org Sun Jan 24 11:17:52 2010 From: python-checkins at python.org (mark.dickinson) Date: Sun, 24 Jan 2010 10:17:52 -0000 Subject: [Python-checkins] r77724 - python/branches/release26-maint Message-ID: Author: mark.dickinson Date: Sun Jan 24 11:17:52 2010 New Revision: 77724 Log: Blocked revisions 77691,77698,77713-77714 via svnmerge ........ r77691 | mark.dickinson | 2010-01-22 16:18:09 +0000 (Fri, 22 Jan 2010) | 1 line Correct typo in comment. ........ r77698 | mark.dickinson | 2010-01-22 17:04:07 +0000 (Fri, 22 Jan 2010) | 3 lines Issue #7743: Fix a potential incorrect rounding bug in dtoa.c (2nd bug in issue 7743). ........ r77713 | mark.dickinson | 2010-01-23 20:48:56 +0000 (Sat, 23 Jan 2010) | 3 lines Issue #7743: Add checks for zero inputs to the lshift and mult functions; this fixes the first bug described in issue #7743. ........ r77714 | mark.dickinson | 2010-01-23 21:25:53 +0000 (Sat, 23 Jan 2010) | 1 line dtoa.c fix from upstream that fixes incorrectly rounded results for certain subnormals that are also halfway cases. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Sun Jan 24 15:24:46 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sun, 24 Jan 2010 14:24:46 -0000 Subject: [Python-checkins] r77725 - in python/branches/release25-maint: Include/patchlevel.h Lib/idlelib/NEWS.txt Lib/idlelib/idlever.py Misc/NEWS README Message-ID: Author: martin.v.loewis Date: Sun Jan 24 15:24:46 2010 New Revision: 77725 Log: Prepare for 2.5.5c2. Modified: python/branches/release25-maint/Include/patchlevel.h python/branches/release25-maint/Lib/idlelib/NEWS.txt python/branches/release25-maint/Lib/idlelib/idlever.py python/branches/release25-maint/Misc/NEWS python/branches/release25-maint/README Modified: python/branches/release25-maint/Include/patchlevel.h ============================================================================== --- python/branches/release25-maint/Include/patchlevel.h (original) +++ python/branches/release25-maint/Include/patchlevel.h Sun Jan 24 15:24:46 2010 @@ -23,10 +23,10 @@ #define PY_MINOR_VERSION 5 #define PY_MICRO_VERSION 5 #define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_GAMMA -#define PY_RELEASE_SERIAL 1 +#define PY_RELEASE_SERIAL 2 /* Version as a string */ -#define PY_VERSION "2.5.5c1" +#define PY_VERSION "2.5.5c2" /* Subversion Revision number of this file (not of the repository) */ #define PY_PATCHLEVEL_REVISION "$Revision$" Modified: python/branches/release25-maint/Lib/idlelib/NEWS.txt ============================================================================== --- python/branches/release25-maint/Lib/idlelib/NEWS.txt (original) +++ python/branches/release25-maint/Lib/idlelib/NEWS.txt Sun Jan 24 15:24:46 2010 @@ -1,3 +1,8 @@ +What's New in IDLE 1.2.5c2? +========================= + +*Release date: 24-Jan-2010* + What's New in IDLE 1.2.5c1? ========================= Modified: python/branches/release25-maint/Lib/idlelib/idlever.py ============================================================================== --- python/branches/release25-maint/Lib/idlelib/idlever.py (original) +++ python/branches/release25-maint/Lib/idlelib/idlever.py Sun Jan 24 15:24:46 2010 @@ -1 +1 @@ -IDLE_VERSION = "1.2.5c1" +IDLE_VERSION = "1.2.5c2" Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Sun Jan 24 15:24:46 2010 @@ -7,12 +7,14 @@ What's New in Python 2.5.5c2? ============================= -*Release date: xx-xxx-2010* +*Release date: 24-Jan-2010* Extension Modules ----------------- -- expat: Fix DoS via XML document with malformed UTF-8 sequences (CVE_2009_3560). +- expat: Fix DoS via XML document with malformed UTF-8 sequences + (CVE_2009_3560). + - expat: Fix DoS via malformed XML (CVE-2009-3720). Modified: python/branches/release25-maint/README ============================================================================== --- python/branches/release25-maint/README (original) +++ python/branches/release25-maint/README Sun Jan 24 15:24:46 2010 @@ -1,4 +1,4 @@ -This is Python version 2.5.5c1 +This is Python version 2.5.5c2 ============================== Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Python Software From python-checkins at python.org Sun Jan 24 15:26:14 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sun, 24 Jan 2010 14:26:14 -0000 Subject: [Python-checkins] r77726 - python/tags/r255c2 Message-ID: Author: martin.v.loewis Date: Sun Jan 24 15:26:14 2010 New Revision: 77726 Log: Tagging for release of Python 2.5.5c2 Added: python/tags/r255c2/ - copied from r77725, /python/branches/release25-maint/ From solipsis at pitrou.net Sun Jan 24 17:36:27 2010 From: solipsis at pitrou.net (Antoine Pitrou) Date: Sun, 24 Jan 2010 16:36:27 +0000 (UTC) Subject: [Python-checkins] =?utf-8?q?r77717_-_in_python/trunk=3A=09Lib/dis?= =?utf-8?q?tutils/command/register=2Epy=09Lib/distutils/command/upl?= =?utf-8?q?oad=2EpyLib/distutils/dist=2Epy=09Lib/distutils/tests/te?= =?utf-8?q?st=5Fregister=2Epy=09Lib/distutils/tests/test=5Fupload?= =?utf-8?q?=2Epy_Misc/NEWS?= References: <4406.09759320996$1264293234@news.gmane.org> Message-ID: writes: > > Author: tarek.ziade > Date: Sun Jan 24 01:33:32 2010 > New Revision: 77717 > > Log: > Fixed #7748: now upload and register commands don't need to force the > encoding anymore : > DistributionMetada returns utf8 strings I'm sorry, is this right? First, this looks like a backwards-incompatible change in the API. Merging it into 2.6 could break software which used to work fine. Second, I don't think returning utf8-encoded strings is any better than returning unicode objects. It's probably worse actually (especially in py3k, but I don't know what the behaviour is there). Thank you Antoine. From python-checkins at python.org Sun Jan 24 17:58:37 2010 From: python-checkins at python.org (ezio.melotti) Date: Sun, 24 Jan 2010 16:58:37 -0000 Subject: [Python-checkins] r77727 - in python/trunk/Lib/test: mapping_tests.py test_abc.py test_array.py test_ast.py test_augassign.py test_bool.py test_bytes.py test_codecs.py test_collections.py test_compile.py test_compiler.py test_cookielib.py test_datetime.py test_decimal.py test_descr.py test_dict.py test_dictviews.py test_dummy_thread.py test_ftplib.py test_funcattrs.py test_future.py test_future5.py test_grp.py test_hash.py test_int.py test_io.py test_long.py test_memoryio.py test_memoryview.py test_multiprocessing.py test_ntpath.py test_opcodes.py test_optparse.py test_parser.py test_posix.py test_posixpath.py test_print.py test_pwd.py test_pyclbr.py test_sys.py test_sysconfig.py test_tempfile.py test_textwrap.py test_threading.py test_transformer.py test_typechecks.py test_unittest.py test_urllib.py test_urllib2.py test_urllib2_localnet.py test_urllib2net.py test_urllibnet.py test_userdict.py test_userstring.py test_wsgiref.py test_xmlrpc.py test_zipfile.py Message-ID: Author: ezio.melotti Date: Sun Jan 24 17:58:36 2010 New Revision: 77727 Log: use assert[Not]IsInstance where appropriate Modified: python/trunk/Lib/test/mapping_tests.py python/trunk/Lib/test/test_abc.py python/trunk/Lib/test/test_array.py python/trunk/Lib/test/test_ast.py python/trunk/Lib/test/test_augassign.py python/trunk/Lib/test/test_bool.py python/trunk/Lib/test/test_bytes.py python/trunk/Lib/test/test_codecs.py python/trunk/Lib/test/test_collections.py python/trunk/Lib/test/test_compile.py python/trunk/Lib/test/test_compiler.py python/trunk/Lib/test/test_cookielib.py python/trunk/Lib/test/test_datetime.py python/trunk/Lib/test/test_decimal.py python/trunk/Lib/test/test_descr.py python/trunk/Lib/test/test_dict.py python/trunk/Lib/test/test_dictviews.py python/trunk/Lib/test/test_dummy_thread.py python/trunk/Lib/test/test_ftplib.py python/trunk/Lib/test/test_funcattrs.py python/trunk/Lib/test/test_future.py python/trunk/Lib/test/test_future5.py python/trunk/Lib/test/test_grp.py python/trunk/Lib/test/test_hash.py python/trunk/Lib/test/test_int.py python/trunk/Lib/test/test_io.py python/trunk/Lib/test/test_long.py python/trunk/Lib/test/test_memoryio.py python/trunk/Lib/test/test_memoryview.py python/trunk/Lib/test/test_multiprocessing.py python/trunk/Lib/test/test_ntpath.py python/trunk/Lib/test/test_opcodes.py python/trunk/Lib/test/test_optparse.py python/trunk/Lib/test/test_parser.py python/trunk/Lib/test/test_posix.py python/trunk/Lib/test/test_posixpath.py python/trunk/Lib/test/test_print.py python/trunk/Lib/test/test_pwd.py python/trunk/Lib/test/test_pyclbr.py python/trunk/Lib/test/test_sys.py python/trunk/Lib/test/test_sysconfig.py python/trunk/Lib/test/test_tempfile.py python/trunk/Lib/test/test_textwrap.py python/trunk/Lib/test/test_threading.py python/trunk/Lib/test/test_transformer.py python/trunk/Lib/test/test_typechecks.py python/trunk/Lib/test/test_unittest.py python/trunk/Lib/test/test_urllib.py python/trunk/Lib/test/test_urllib2.py python/trunk/Lib/test/test_urllib2_localnet.py python/trunk/Lib/test/test_urllib2net.py python/trunk/Lib/test/test_urllibnet.py python/trunk/Lib/test/test_userdict.py python/trunk/Lib/test/test_userstring.py python/trunk/Lib/test/test_wsgiref.py python/trunk/Lib/test/test_xmlrpc.py python/trunk/Lib/test/test_zipfile.py Modified: python/trunk/Lib/test/mapping_tests.py ============================================================================== --- python/trunk/Lib/test/mapping_tests.py (original) +++ python/trunk/Lib/test/mapping_tests.py Sun Jan 24 17:58:36 2010 @@ -451,7 +451,7 @@ ud = mydict.fromkeys('ab') self.assertEqual(ud, {'a':None, 'b':None}) # FIXME: the following won't work with UserDict, because it's an old style class - # self.assertTrue(isinstance(ud, UserDict.UserDict)) + # self.assertIsInstance(ud, UserDict.UserDict) self.assertRaises(TypeError, dict.fromkeys) class Exc(Exception): pass @@ -481,7 +481,7 @@ self.assertEqual(d.copy(), {1:1, 2:2, 3:3}) d = self._empty_mapping() self.assertEqual(d.copy(), d) - self.assertTrue(isinstance(d.copy(), d.__class__)) + self.assertIsInstance(d.copy(), d.__class__) self.assertRaises(TypeError, d.copy, None) def test_get(self): @@ -586,7 +586,7 @@ return UserDict.UserDict() ud = mydict.fromkeys('ab') self.assertEqual(ud, {'a':None, 'b':None}) - self.assertTrue(isinstance(ud, UserDict.UserDict)) + self.assertIsInstance(ud, UserDict.UserDict) def test_pop(self): TestMappingProtocol.test_pop(self) Modified: python/trunk/Lib/test/test_abc.py ============================================================================== --- python/trunk/Lib/test/test_abc.py (original) +++ python/trunk/Lib/test/test_abc.py Sun Jan 24 17:58:36 2010 @@ -89,20 +89,20 @@ b = B() self.assertEqual(issubclass(B, A), False) self.assertEqual(issubclass(B, (A,)), False) - self.assertEqual(isinstance(b, A), False) - self.assertEqual(isinstance(b, (A,)), False) + self.assertNotIsInstance(b, A) + self.assertNotIsInstance(b, (A,)) A.register(B) self.assertEqual(issubclass(B, A), True) self.assertEqual(issubclass(B, (A,)), True) - self.assertEqual(isinstance(b, A), True) - self.assertEqual(isinstance(b, (A,)), True) + self.assertIsInstance(b, A) + self.assertIsInstance(b, (A,)) class C(B): pass c = C() self.assertEqual(issubclass(C, A), True) self.assertEqual(issubclass(C, (A,)), True) - self.assertEqual(isinstance(c, A), True) - self.assertEqual(isinstance(c, (A,)), True) + self.assertIsInstance(c, A) + self.assertIsInstance(c, (A,)) def test_isinstance_invalidation(self): class A: @@ -120,15 +120,15 @@ class A: __metaclass__ = abc.ABCMeta A.register(int) - self.assertEqual(isinstance(42, A), True) - self.assertEqual(isinstance(42, (A,)), True) + self.assertIsInstance(42, A) + self.assertIsInstance(42, (A,)) self.assertEqual(issubclass(int, A), True) self.assertEqual(issubclass(int, (A,)), True) class B(A): pass B.register(basestring) - self.assertEqual(isinstance("", A), True) - self.assertEqual(isinstance("", (A,)), True) + self.assertIsInstance("", A) + self.assertIsInstance("", (A,)) self.assertEqual(issubclass(str, A), True) self.assertEqual(issubclass(str, (A,)), True) @@ -185,8 +185,8 @@ pass self.assertTrue(issubclass(MyInt, A)) self.assertTrue(issubclass(MyInt, (A,))) - self.assertTrue(isinstance(42, A)) - self.assertTrue(isinstance(42, (A,))) + self.assertIsInstance(42, A) + self.assertIsInstance(42, (A,)) def test_all_new_methods_are_called(self): class A: Modified: python/trunk/Lib/test/test_array.py ============================================================================== --- python/trunk/Lib/test/test_array.py (original) +++ python/trunk/Lib/test/test_array.py Sun Jan 24 17:58:36 2010 @@ -63,10 +63,10 @@ a = array.array(self.typecode, self.example) self.assertRaises(TypeError, a.buffer_info, 42) bi = a.buffer_info() - self.assertTrue(isinstance(bi, tuple)) + self.assertIsInstance(bi, tuple) self.assertEqual(len(bi), 2) - self.assertTrue(isinstance(bi[0], (int, long))) - self.assertTrue(isinstance(bi[1], int)) + self.assertIsInstance(bi[0], (int, long)) + self.assertIsInstance(bi[1], int) self.assertEqual(bi[1], len(a)) def test_byteswap(self): Modified: python/trunk/Lib/test/test_ast.py ============================================================================== --- python/trunk/Lib/test/test_ast.py (original) +++ python/trunk/Lib/test/test_ast.py Sun Jan 24 17:58:36 2010 @@ -154,7 +154,7 @@ slc = ast.parse("x[::]").body[0].value.slice self.assertIsNone(slc.upper) self.assertIsNone(slc.lower) - self.assertTrue(isinstance(slc.step, ast.Name)) + self.assertIsInstance(slc.step, ast.Name) self.assertEqual(slc.step.id, "None") def test_from_import(self): Modified: python/trunk/Lib/test/test_augassign.py ============================================================================== --- python/trunk/Lib/test/test_augassign.py (original) +++ python/trunk/Lib/test/test_augassign.py Sun Jan 24 17:58:36 2010 @@ -99,7 +99,7 @@ y = x x += 10 - self.assertTrue(isinstance(x, aug_test)) + self.assertIsInstance(x, aug_test) self.assertTrue(y is not x) self.assertEquals(x.val, 11) @@ -114,7 +114,7 @@ y = x x += 10 - self.assertTrue(isinstance(x, aug_test3)) + self.assertIsInstance(x, aug_test3) self.assertTrue(y is not x) self.assertEquals(x.val, 13) Modified: python/trunk/Lib/test/test_bool.py ============================================================================== --- python/trunk/Lib/test/test_bool.py (original) +++ python/trunk/Lib/test/test_bool.py Sun Jan 24 17:58:36 2010 @@ -233,15 +233,15 @@ def test_boolean(self): self.assertEqual(True & 1, 1) - self.assertTrue(not isinstance(True & 1, bool)) + self.assertNotIsInstance(True & 1, bool) self.assertIs(True & True, True) self.assertEqual(True | 1, 1) - self.assertTrue(not isinstance(True | 1, bool)) + self.assertNotIsInstance(True | 1, bool) self.assertIs(True | True, True) self.assertEqual(True ^ 1, 0) - self.assertTrue(not isinstance(True ^ 1, bool)) + self.assertNotIsInstance(True ^ 1, bool) self.assertIs(True ^ True, False) def test_fileclosed(self): Modified: python/trunk/Lib/test/test_bytes.py ============================================================================== --- python/trunk/Lib/test/test_bytes.py (original) +++ python/trunk/Lib/test/test_bytes.py Sun Jan 24 17:58:36 2010 @@ -970,7 +970,7 @@ def test_basic(self): self.assertTrue(issubclass(ByteArraySubclass, bytearray)) - self.assertTrue(isinstance(ByteArraySubclass(), bytearray)) + self.assertIsInstance(ByteArraySubclass(), bytearray) a, b = b"abcd", b"efgh" _a, _b = ByteArraySubclass(a), ByteArraySubclass(b) Modified: python/trunk/Lib/test/test_codecs.py ============================================================================== --- python/trunk/Lib/test/test_codecs.py (original) +++ python/trunk/Lib/test/test_codecs.py Sun Jan 24 17:58:36 2010 @@ -1141,14 +1141,14 @@ reader = codecs.getreader("base64_codec")(StringIO.StringIO(sin)) sout = reader.read() self.assertEqual(sout, "\x80") - self.assertTrue(isinstance(sout, str)) + self.assertIsInstance(sout, str) def test_readline(self): sin = "\x80".encode("base64_codec") reader = codecs.getreader("base64_codec")(StringIO.StringIO(sin)) sout = reader.readline() self.assertEqual(sout, "\x80") - self.assertTrue(isinstance(sout, str)) + self.assertIsInstance(sout, str) all_unicode_encodings = [ "ascii", Modified: python/trunk/Lib/test/test_collections.py ============================================================================== --- python/trunk/Lib/test/test_collections.py (original) +++ python/trunk/Lib/test/test_collections.py Sun Jan 24 17:58:36 2010 @@ -101,7 +101,7 @@ Point = namedtuple('Point', 'x y') p = Point(11, 22) - self.assertTrue(isinstance(p, tuple)) + self.assertIsInstance(p, tuple) self.assertEqual(p, (11, 22)) # matches a real tuple self.assertEqual(tuple(p), (11, 22)) # coercable to a real tuple self.assertEqual(list(p), [11, 22]) # coercable to a list @@ -233,7 +233,7 @@ # Check some non-hashables non_samples = [list(), set(), dict()] for x in non_samples: - self.assertFalse(isinstance(x, Hashable), repr(x)) + self.assertNotIsInstance(x, Hashable) self.assertFalse(issubclass(type(x), Hashable), repr(type(x))) # Check some hashables samples = [None, @@ -243,7 +243,7 @@ int, list, object, type, ] for x in samples: - self.assertTrue(isinstance(x, Hashable), repr(x)) + self.assertIsInstance(x, Hashable) self.assertTrue(issubclass(type(x), Hashable), repr(type(x))) self.assertRaises(TypeError, Hashable) # Check direct subclassing @@ -259,7 +259,7 @@ # Check some non-iterables non_samples = [None, 42, 3.14, 1j] for x in non_samples: - self.assertFalse(isinstance(x, Iterable), repr(x)) + self.assertNotIsInstance(x, Iterable) self.assertFalse(issubclass(type(x), Iterable), repr(type(x))) # Check some iterables samples = [str(), @@ -269,7 +269,7 @@ (x for x in []), ] for x in samples: - self.assertTrue(isinstance(x, Iterable), repr(x)) + self.assertIsInstance(x, Iterable) self.assertTrue(issubclass(type(x), Iterable), repr(type(x))) # Check direct subclassing class I(Iterable): @@ -283,7 +283,7 @@ non_samples = [None, 42, 3.14, 1j, "".encode('ascii'), "", (), [], {}, set()] for x in non_samples: - self.assertFalse(isinstance(x, Iterator), repr(x)) + self.assertNotIsInstance(x, Iterator) self.assertFalse(issubclass(type(x), Iterator), repr(type(x))) samples = [iter(str()), iter(tuple()), iter(list()), iter(dict()), @@ -294,7 +294,7 @@ (x for x in []), ] for x in samples: - self.assertTrue(isinstance(x, Iterator), repr(x)) + self.assertIsInstance(x, Iterator) self.assertTrue(issubclass(type(x), Iterator), repr(type(x))) self.validate_abstract_methods(Iterator, 'next') @@ -304,14 +304,14 @@ (x for x in []), ] for x in non_samples: - self.assertFalse(isinstance(x, Sized), repr(x)) + self.assertNotIsInstance(x, Sized) self.assertFalse(issubclass(type(x), Sized), repr(type(x))) samples = [str(), tuple(), list(), set(), frozenset(), dict(), dict().keys(), dict().items(), dict().values(), ] for x in samples: - self.assertTrue(isinstance(x, Sized), repr(x)) + self.assertIsInstance(x, Sized) self.assertTrue(issubclass(type(x), Sized), repr(type(x))) self.validate_abstract_methods(Sized, '__len__') @@ -321,14 +321,14 @@ (x for x in []), ] for x in non_samples: - self.assertFalse(isinstance(x, Container), repr(x)) + self.assertNotIsInstance(x, Container) self.assertFalse(issubclass(type(x), Container), repr(type(x))) samples = [str(), tuple(), list(), set(), frozenset(), dict(), dict().keys(), dict().items(), ] for x in samples: - self.assertTrue(isinstance(x, Container), repr(x)) + self.assertIsInstance(x, Container) self.assertTrue(issubclass(type(x), Container), repr(type(x))) self.validate_abstract_methods(Container, '__contains__') @@ -339,7 +339,7 @@ (x for x in []), ] for x in non_samples: - self.assertFalse(isinstance(x, Callable), repr(x)) + self.assertNotIsInstance(x, Callable) self.assertFalse(issubclass(type(x), Callable), repr(type(x))) samples = [lambda: None, type, int, object, @@ -347,7 +347,7 @@ list.append, [].append, ] for x in samples: - self.assertTrue(isinstance(x, Callable), repr(x)) + self.assertIsInstance(x, Callable) self.assertTrue(issubclass(type(x), Callable), repr(type(x))) self.validate_abstract_methods(Callable, '__call__') @@ -395,7 +395,7 @@ def test_Set(self): for sample in [set, frozenset]: - self.assertTrue(isinstance(sample(), Set)) + self.assertIsInstance(sample(), Set) self.assertTrue(issubclass(sample, Set)) self.validate_abstract_methods(Set, '__contains__', '__iter__', '__len__') @@ -415,9 +415,9 @@ self.assertTrue(hash(a) == hash(b)) def test_MutableSet(self): - self.assertTrue(isinstance(set(), MutableSet)) + self.assertIsInstance(set(), MutableSet) self.assertTrue(issubclass(set, MutableSet)) - self.assertFalse(isinstance(frozenset(), MutableSet)) + self.assertNotIsInstance(frozenset(), MutableSet) self.assertFalse(issubclass(frozenset, MutableSet)) self.validate_abstract_methods(MutableSet, '__contains__', '__iter__', '__len__', 'add', 'discard') @@ -457,24 +457,24 @@ def test_Mapping(self): for sample in [dict]: - self.assertTrue(isinstance(sample(), Mapping)) + self.assertIsInstance(sample(), Mapping) self.assertTrue(issubclass(sample, Mapping)) self.validate_abstract_methods(Mapping, '__contains__', '__iter__', '__len__', '__getitem__') def test_MutableMapping(self): for sample in [dict]: - self.assertTrue(isinstance(sample(), MutableMapping)) + self.assertIsInstance(sample(), MutableMapping) self.assertTrue(issubclass(sample, MutableMapping)) self.validate_abstract_methods(MutableMapping, '__contains__', '__iter__', '__len__', '__getitem__', '__setitem__', '__delitem__') def test_Sequence(self): for sample in [tuple, list, str]: - self.assertTrue(isinstance(sample(), Sequence)) + self.assertIsInstance(sample(), Sequence) self.assertTrue(issubclass(sample, Sequence)) self.assertTrue(issubclass(basestring, Sequence)) - self.assertTrue(isinstance(range(10), Sequence)) + self.assertIsInstance(range(10), Sequence) self.assertTrue(issubclass(xrange, Sequence)) self.assertTrue(issubclass(str, Sequence)) self.validate_abstract_methods(Sequence, '__contains__', '__iter__', '__len__', @@ -482,10 +482,10 @@ def test_MutableSequence(self): for sample in [tuple, str]: - self.assertFalse(isinstance(sample(), MutableSequence)) + self.assertNotIsInstance(sample(), MutableSequence) self.assertFalse(issubclass(sample, MutableSequence)) for sample in [list]: - self.assertTrue(isinstance(sample(), MutableSequence)) + self.assertIsInstance(sample(), MutableSequence) self.assertTrue(issubclass(sample, MutableSequence)) self.assertFalse(issubclass(basestring, MutableSequence)) self.validate_abstract_methods(MutableSequence, '__contains__', '__iter__', @@ -497,8 +497,8 @@ c = Counter('abcaba') self.assertEqual(c, Counter({'a':3 , 'b': 2, 'c': 1})) self.assertEqual(c, Counter(a=3, b=2, c=1)) - self.assertTrue(isinstance(c, dict)) - self.assertTrue(isinstance(c, Mapping)) + self.assertIsInstance(c, dict) + self.assertIsInstance(c, Mapping) self.assertTrue(issubclass(Counter, dict)) self.assertTrue(issubclass(Counter, Mapping)) self.assertEqual(len(c), 3) Modified: python/trunk/Lib/test/test_compile.py ============================================================================== --- python/trunk/Lib/test/test_compile.py (original) +++ python/trunk/Lib/test/test_compile.py Sun Jan 24 17:58:36 2010 @@ -249,8 +249,8 @@ self.fail("How many bits *does* this machine have???") # Verify treatment of contant folding on -(sys.maxint+1) # i.e. -2147483648 on 32 bit platforms. Should return int, not long. - self.assertTrue(isinstance(eval("%s" % (-sys.maxint - 1)), int)) - self.assertTrue(isinstance(eval("%s" % (-sys.maxint - 2)), long)) + self.assertIsInstance(eval("%s" % (-sys.maxint - 1)), int) + self.assertIsInstance(eval("%s" % (-sys.maxint - 2)), long) if sys.maxint == 9223372036854775807: def test_32_63_bit_values(self): @@ -265,7 +265,7 @@ for variable in self.test_32_63_bit_values.func_code.co_consts: if variable is not None: - self.assertTrue(isinstance(variable, int)) + self.assertIsInstance(variable, int) def test_sequence_unpacking_error(self): # Verify sequence packing/unpacking with "or". SF bug #757818 Modified: python/trunk/Lib/test/test_compiler.py ============================================================================== --- python/trunk/Lib/test/test_compiler.py (original) +++ python/trunk/Lib/test/test_compiler.py Sun Jan 24 17:58:36 2010 @@ -110,7 +110,7 @@ def _check_lineno(self, node): if not node.__class__ in NOLINENO: - self.assertTrue(isinstance(node.lineno, int), + self.assertIsInstance(node.lineno, int, "lineno=%s on %s" % (node.lineno, node.__class__)) self.assertTrue(node.lineno > 0, "lineno=%s on %s" % (node.lineno, node.__class__)) Modified: python/trunk/Lib/test/test_cookielib.py ============================================================================== --- python/trunk/Lib/test/test_cookielib.py (original) +++ python/trunk/Lib/test/test_cookielib.py Sun Jan 24 17:58:36 2010 @@ -1043,7 +1043,7 @@ for i in range(4): i = 0 for c in cs: - self.assertTrue(isinstance(c, Cookie)) + self.assertIsInstance(c, Cookie) self.assertEquals(c.version, versions[i]) self.assertEquals(c.name, names[i]) self.assertEquals(c.domain, domains[i]) Modified: python/trunk/Lib/test/test_datetime.py ============================================================================== --- python/trunk/Lib/test/test_datetime.py (original) +++ python/trunk/Lib/test/test_datetime.py Sun Jan 24 17:58:36 2010 @@ -81,7 +81,7 @@ self.__name = name self.assertTrue(issubclass(NotEnough, tzinfo)) ne = NotEnough(3, "NotByALongShot") - self.assertTrue(isinstance(ne, tzinfo)) + self.assertIsInstance(ne, tzinfo) dt = datetime.now() self.assertRaises(NotImplementedError, ne.tzname, dt) @@ -90,7 +90,7 @@ def test_normal(self): fo = FixedOffset(3, "Three") - self.assertTrue(isinstance(fo, tzinfo)) + self.assertIsInstance(fo, tzinfo) for dt in datetime.now(), None: self.assertEqual(fo.utcoffset(dt), timedelta(minutes=3)) self.assertEqual(fo.tzname(dt), "Three") @@ -111,14 +111,14 @@ # Make sure we can pickle/unpickle an instance of a subclass. offset = timedelta(minutes=-300) orig = PicklableFixedOffset(offset, 'cookie') - self.assertTrue(isinstance(orig, tzinfo)) + self.assertIsInstance(orig, tzinfo) self.assertTrue(type(orig) is PicklableFixedOffset) self.assertEqual(orig.utcoffset(None), offset) self.assertEqual(orig.tzname(None), 'cookie') for pickler, unpickler, proto in pickle_choices: green = pickler.dumps(orig, proto) derived = unpickler.loads(green) - self.assertTrue(isinstance(derived, tzinfo)) + self.assertIsInstance(derived, tzinfo) self.assertTrue(type(derived) is PicklableFixedOffset) self.assertEqual(derived.utcoffset(None), offset) self.assertEqual(derived.tzname(None), 'cookie') @@ -391,9 +391,9 @@ self.assertEqual(td, td2) def test_resolution_info(self): - self.assertTrue(isinstance(timedelta.min, timedelta)) - self.assertTrue(isinstance(timedelta.max, timedelta)) - self.assertTrue(isinstance(timedelta.resolution, timedelta)) + self.assertIsInstance(timedelta.min, timedelta) + self.assertIsInstance(timedelta.max, timedelta) + self.assertIsInstance(timedelta.resolution, timedelta) self.assertTrue(timedelta.max > timedelta.min) self.assertEqual(timedelta.min, timedelta(-999999999)) self.assertEqual(timedelta.max, timedelta(999999999, 24*3600-1, 1e6-1)) @@ -905,9 +905,9 @@ self.assertEqual(b.__format__(fmt), 'B') def test_resolution_info(self): - self.assertTrue(isinstance(self.theclass.min, self.theclass)) - self.assertTrue(isinstance(self.theclass.max, self.theclass)) - self.assertTrue(isinstance(self.theclass.resolution, timedelta)) + self.assertIsInstance(self.theclass.min, self.theclass) + self.assertIsInstance(self.theclass.max, self.theclass) + self.assertIsInstance(self.theclass.resolution, timedelta) self.assertTrue(self.theclass.max > self.theclass.min) def test_extreme_timedelta(self): @@ -1891,9 +1891,9 @@ "%s(23, 15)" % name) def test_resolution_info(self): - self.assertTrue(isinstance(self.theclass.min, self.theclass)) - self.assertTrue(isinstance(self.theclass.max, self.theclass)) - self.assertTrue(isinstance(self.theclass.resolution, timedelta)) + self.assertIsInstance(self.theclass.min, self.theclass) + self.assertIsInstance(self.theclass.max, self.theclass) + self.assertIsInstance(self.theclass.resolution, timedelta) self.assertTrue(self.theclass.max > self.theclass.min) def test_pickling(self): @@ -2260,7 +2260,7 @@ green = pickler.dumps(orig, proto) derived = unpickler.loads(green) self.assertEqual(orig, derived) - self.assertTrue(isinstance(derived.tzinfo, PicklableFixedOffset)) + self.assertIsInstance(derived.tzinfo, PicklableFixedOffset) self.assertEqual(derived.utcoffset(), timedelta(minutes=-300)) self.assertEqual(derived.tzname(), 'cookie') @@ -2487,8 +2487,7 @@ green = pickler.dumps(orig, proto) derived = unpickler.loads(green) self.assertEqual(orig, derived) - self.assertTrue(isinstance(derived.tzinfo, - PicklableFixedOffset)) + self.assertIsInstance(derived.tzinfo, PicklableFixedOffset) self.assertEqual(derived.utcoffset(), timedelta(minutes=-300)) self.assertEqual(derived.tzname(), 'cookie') Modified: python/trunk/Lib/test/test_decimal.py ============================================================================== --- python/trunk/Lib/test/test_decimal.py (original) +++ python/trunk/Lib/test/test_decimal.py Sun Jan 24 17:58:36 2010 @@ -521,7 +521,7 @@ # from int d = nc.create_decimal(456) - self.assertTrue(isinstance(d, Decimal)) + self.assertIsInstance(d, Decimal) self.assertEqual(nc.create_decimal(45678), nc.create_decimal('457E+2')) @@ -1529,7 +1529,7 @@ def test_abc(self): self.assertTrue(issubclass(Decimal, numbers.Number)) self.assertTrue(not issubclass(Decimal, numbers.Real)) - self.assertTrue(isinstance(Decimal(0), numbers.Number)) + self.assertIsInstance(Decimal(0), numbers.Number) self.assertTrue(not isinstance(Decimal(0), numbers.Real)) def test_pickle(self): Modified: python/trunk/Lib/test/test_descr.py ============================================================================== --- python/trunk/Lib/test/test_descr.py (original) +++ python/trunk/Lib/test/test_descr.py Sun Jan 24 17:58:36 2010 @@ -410,11 +410,11 @@ def test_python_dicts(self): # Testing Python subclass of dict... self.assertTrue(issubclass(dict, dict)) - self.assertTrue(isinstance({}, dict)) + self.assertIsInstance({}, dict) d = dict() self.assertEqual(d, {}) self.assertTrue(d.__class__ is dict) - self.assertTrue(isinstance(d, dict)) + self.assertIsInstance(d, dict) class C(dict): state = -1 def __init__(self_local, *a, **kw): @@ -427,7 +427,7 @@ def __getitem__(self, key): return self.get(key, 0) def __setitem__(self_local, key, value): - self.assertTrue(isinstance(key, type(0))) + self.assertIsInstance(key, type(0)) dict.__setitem__(self_local, key, value) def setstate(self, state): self.state = state @@ -1222,7 +1222,7 @@ MyABC.register(Unrelated) u = Unrelated() - self.assertTrue(isinstance(u, MyABC)) + self.assertIsInstance(u, MyABC) # This used to crash self.assertRaises(TypeError, MyABC.a.__set__, u, 3) @@ -2025,7 +2025,7 @@ self.assertFalse(hasattr(a, "x")) raw = C.__dict__['x'] - self.assertTrue(isinstance(raw, property)) + self.assertIsInstance(raw, property) attrs = dir(raw) self.assertIn("__doc__", attrs) @@ -4237,29 +4237,29 @@ pass a = C() pa = Proxy(a) - self.assertTrue(isinstance(a, C)) # Baseline - self.assertTrue(isinstance(pa, C)) # Test + self.assertIsInstance(a, C) # Baseline + self.assertIsInstance(pa, C) # Test # Test with a classic subclass class D(C): pass a = D() pa = Proxy(a) - self.assertTrue(isinstance(a, C)) # Baseline - self.assertTrue(isinstance(pa, C)) # Test + self.assertIsInstance(a, C) # Baseline + self.assertIsInstance(pa, C) # Test # Test with a new-style class class C(object): pass a = C() pa = Proxy(a) - self.assertTrue(isinstance(a, C)) # Baseline - self.assertTrue(isinstance(pa, C)) # Test + self.assertIsInstance(a, C) # Baseline + self.assertIsInstance(pa, C) # Test # Test with a new-style subclass class D(C): pass a = D() pa = Proxy(a) - self.assertTrue(isinstance(a, C)) # Baseline - self.assertTrue(isinstance(pa, C)) # Test + self.assertIsInstance(a, C) # Baseline + self.assertIsInstance(pa, C) # Test def test_proxy_super(self): # Testing super() for a proxy object... Modified: python/trunk/Lib/test/test_dict.py ============================================================================== --- python/trunk/Lib/test/test_dict.py (original) +++ python/trunk/Lib/test/test_dict.py Sun Jan 24 17:58:36 2010 @@ -225,7 +225,7 @@ return UserDict.UserDict() ud = mydict.fromkeys('ab') self.assertEqual(ud, {'a':None, 'b':None}) - self.assertTrue(isinstance(ud, UserDict.UserDict)) + self.assertIsInstance(ud, UserDict.UserDict) self.assertRaises(TypeError, dict.fromkeys) class Exc(Exception): pass Modified: python/trunk/Lib/test/test_dictviews.py ============================================================================== --- python/trunk/Lib/test/test_dictviews.py (original) +++ python/trunk/Lib/test/test_dictviews.py Sun Jan 24 17:58:36 2010 @@ -71,17 +71,17 @@ def test_dict_repr(self): d = {1: 10, "a": "ABC"} - self.assertTrue(isinstance(repr(d), str)) + self.assertIsInstance(repr(d), str) r = repr(d.viewitems()) - self.assertTrue(isinstance(r, str)) + self.assertIsInstance(r, str) self.assertTrue(r == "dict_items([('a', 'ABC'), (1, 10)])" or r == "dict_items([(1, 10), ('a', 'ABC')])") r = repr(d.viewkeys()) - self.assertTrue(isinstance(r, str)) + self.assertIsInstance(r, str) self.assertTrue(r == "dict_keys(['a', 1])" or r == "dict_keys([1, 'a'])") r = repr(d.viewvalues()) - self.assertTrue(isinstance(r, str)) + self.assertIsInstance(r, str) self.assertTrue(r == "dict_values(['ABC', 10])" or r == "dict_values([10, 'ABC'])") Modified: python/trunk/Lib/test/test_dummy_thread.py ============================================================================== --- python/trunk/Lib/test/test_dummy_thread.py (original) +++ python/trunk/Lib/test/test_dummy_thread.py Sun Jan 24 17:58:36 2010 @@ -92,16 +92,16 @@ def test_ident(self): #Test sanity of _thread.get_ident() - self.assertTrue(isinstance(_thread.get_ident(), int), - "_thread.get_ident() returned a non-integer") + self.assertIsInstance(_thread.get_ident(), int, + "_thread.get_ident() returned a non-integer") self.assertTrue(_thread.get_ident() != 0, "_thread.get_ident() returned 0") def test_LockType(self): #Make sure _thread.LockType is the same type as _thread.allocate_locke() - self.assertTrue(isinstance(_thread.allocate_lock(), _thread.LockType), - "_thread.LockType is not an instance of what is " - "returned by _thread.allocate_lock()") + self.assertIsInstance(_thread.allocate_lock(), _thread.LockType, + "_thread.LockType is not an instance of what " + "is returned by _thread.allocate_lock()") def test_interrupt_main(self): #Calling start_new_thread with a function that executes interrupt_main Modified: python/trunk/Lib/test/test_ftplib.py ============================================================================== --- python/trunk/Lib/test/test_ftplib.py (original) +++ python/trunk/Lib/test/test_ftplib.py Sun Jan 24 17:58:36 2010 @@ -582,36 +582,36 @@ self.server.stop() def test_control_connection(self): - self.assertFalse(isinstance(self.client.sock, ssl.SSLSocket)) + self.assertNotIsInstance(self.client.sock, ssl.SSLSocket) self.client.auth() - self.assertTrue(isinstance(self.client.sock, ssl.SSLSocket)) + self.assertIsInstance(self.client.sock, ssl.SSLSocket) def test_data_connection(self): # clear text sock = self.client.transfercmd('list') - self.assertFalse(isinstance(sock, ssl.SSLSocket)) + self.assertNotIsInstance(sock, ssl.SSLSocket) sock.close() self.client.voidresp() # secured, after PROT P self.client.prot_p() sock = self.client.transfercmd('list') - self.assertTrue(isinstance(sock, ssl.SSLSocket)) + self.assertIsInstance(sock, ssl.SSLSocket) sock.close() self.client.voidresp() # PROT C is issued, the connection must be in cleartext again self.client.prot_c() sock = self.client.transfercmd('list') - self.assertFalse(isinstance(sock, ssl.SSLSocket)) + self.assertNotIsInstance(sock, ssl.SSLSocket) sock.close() self.client.voidresp() def test_login(self): # login() is supposed to implicitly secure the control connection - self.assertFalse(isinstance(self.client.sock, ssl.SSLSocket)) + self.assertNotIsInstance(self.client.sock, ssl.SSLSocket) self.client.login() - self.assertTrue(isinstance(self.client.sock, ssl.SSLSocket)) + self.assertIsInstance(self.client.sock, ssl.SSLSocket) # make sure that AUTH TLS doesn't get issued again self.client.login() Modified: python/trunk/Lib/test/test_funcattrs.py ============================================================================== --- python/trunk/Lib/test/test_funcattrs.py (original) +++ python/trunk/Lib/test/test_funcattrs.py Sun Jan 24 17:58:36 2010 @@ -68,7 +68,7 @@ a = 12 def f(): print a c = f.func_closure - self.assertTrue(isinstance(c, tuple)) + self.assertIsInstance(c, tuple) self.assertEqual(len(c), 1) # don't have a type object handy self.assertEqual(c[0].__class__.__name__, "cell") Modified: python/trunk/Lib/test/test_future.py ============================================================================== --- python/trunk/Lib/test/test_future.py (original) +++ python/trunk/Lib/test/test_future.py Sun Jan 24 17:58:36 2010 @@ -109,7 +109,7 @@ def test_unicode_literals_exec(self): scope = {} exec "from __future__ import unicode_literals; x = ''" in scope - self.assertTrue(isinstance(scope["x"], unicode)) + self.assertIsInstance(scope["x"], unicode) def test_main(): Modified: python/trunk/Lib/test/test_future5.py ============================================================================== --- python/trunk/Lib/test/test_future5.py (original) +++ python/trunk/Lib/test/test_future5.py Sun Jan 24 17:58:36 2010 @@ -9,7 +9,7 @@ class TestMultipleFeatures(unittest.TestCase): def test_unicode_literals(self): - self.assertTrue(isinstance("", unicode)) + self.assertIsInstance("", unicode) def test_print_function(self): with test_support.captured_output("stderr") as s: Modified: python/trunk/Lib/test/test_grp.py ============================================================================== --- python/trunk/Lib/test/test_grp.py (original) +++ python/trunk/Lib/test/test_grp.py Sun Jan 24 17:58:36 2010 @@ -12,13 +12,13 @@ # attributes promised by the docs self.assertEqual(len(value), 4) self.assertEqual(value[0], value.gr_name) - self.assertTrue(isinstance(value.gr_name, basestring)) + self.assertIsInstance(value.gr_name, basestring) self.assertEqual(value[1], value.gr_passwd) - self.assertTrue(isinstance(value.gr_passwd, basestring)) + self.assertIsInstance(value.gr_passwd, basestring) self.assertEqual(value[2], value.gr_gid) - self.assertTrue(isinstance(value.gr_gid, int)) + self.assertIsInstance(value.gr_gid, int) self.assertEqual(value[3], value.gr_mem) - self.assertTrue(isinstance(value.gr_mem, list)) + self.assertIsInstance(value.gr_mem, list) def test_values(self): entries = grp.getgrall() Modified: python/trunk/Lib/test/test_hash.py ============================================================================== --- python/trunk/Lib/test/test_hash.py (original) +++ python/trunk/Lib/test/test_hash.py Sun Jan 24 17:58:36 2010 @@ -105,11 +105,11 @@ objects = (self.default_expected + self.fixed_expected) for obj in objects: - self.assertTrue(isinstance(obj, Hashable), repr(obj)) + self.assertIsInstance(obj, Hashable) def test_not_hashable(self): for obj in self.error_expected: - self.assertFalse(isinstance(obj, Hashable), repr(obj)) + self.assertNotIsInstance(obj, Hashable) # Issue #4701: Check that some builtin types are correctly hashable Modified: python/trunk/Lib/test/test_int.py ============================================================================== --- python/trunk/Lib/test/test_int.py (original) +++ python/trunk/Lib/test/test_int.py Sun Jan 24 17:58:36 2010 @@ -76,15 +76,15 @@ s = repr(-1-sys.maxint) x = int(s) self.assertEqual(x+1, -sys.maxint) - self.assertTrue(isinstance(x, int)) + self.assertIsInstance(x, int) # should return long self.assertEqual(int(s[1:]), sys.maxint+1) # should return long x = int(1e100) - self.assertTrue(isinstance(x, long)) + self.assertIsInstance(x, long) x = int(-1e100) - self.assertTrue(isinstance(x, long)) + self.assertIsInstance(x, long) # SF bug 434186: 0x80000000/2 != 0x80000000>>1. @@ -102,11 +102,11 @@ self.assertRaises(ValueError, int, '123\x00 245', 20) x = int('1' * 600) - self.assertTrue(isinstance(x, long)) + self.assertIsInstance(x, long) if have_unicode: x = int(unichr(0x661) * 600) - self.assertTrue(isinstance(x, long)) + self.assertIsInstance(x, long) self.assertRaises(TypeError, int, 1, 12) Modified: python/trunk/Lib/test/test_io.py ============================================================================== --- python/trunk/Lib/test/test_io.py (original) +++ python/trunk/Lib/test/test_io.py Sun Jan 24 17:58:36 2010 @@ -2361,27 +2361,27 @@ def test_abcs(self): # Test the visible base classes are ABCs. - self.assertTrue(isinstance(self.IOBase, abc.ABCMeta)) - self.assertTrue(isinstance(self.RawIOBase, abc.ABCMeta)) - self.assertTrue(isinstance(self.BufferedIOBase, abc.ABCMeta)) - self.assertTrue(isinstance(self.TextIOBase, abc.ABCMeta)) + self.assertIsInstance(self.IOBase, abc.ABCMeta) + self.assertIsInstance(self.RawIOBase, abc.ABCMeta) + self.assertIsInstance(self.BufferedIOBase, abc.ABCMeta) + self.assertIsInstance(self.TextIOBase, abc.ABCMeta) def _check_abc_inheritance(self, abcmodule): with self.open(support.TESTFN, "wb", buffering=0) as f: - self.assertTrue(isinstance(f, abcmodule.IOBase)) - self.assertTrue(isinstance(f, abcmodule.RawIOBase)) - self.assertFalse(isinstance(f, abcmodule.BufferedIOBase)) - self.assertFalse(isinstance(f, abcmodule.TextIOBase)) + self.assertIsInstance(f, abcmodule.IOBase) + self.assertIsInstance(f, abcmodule.RawIOBase) + self.assertNotIsInstance(f, abcmodule.BufferedIOBase) + self.assertNotIsInstance(f, abcmodule.TextIOBase) with self.open(support.TESTFN, "wb") as f: - self.assertTrue(isinstance(f, abcmodule.IOBase)) - self.assertFalse(isinstance(f, abcmodule.RawIOBase)) - self.assertTrue(isinstance(f, abcmodule.BufferedIOBase)) - self.assertFalse(isinstance(f, abcmodule.TextIOBase)) + self.assertIsInstance(f, abcmodule.IOBase) + self.assertNotIsInstance(f, abcmodule.RawIOBase) + self.assertIsInstance(f, abcmodule.BufferedIOBase) + self.assertNotIsInstance(f, abcmodule.TextIOBase) with self.open(support.TESTFN, "w") as f: - self.assertTrue(isinstance(f, abcmodule.IOBase)) - self.assertFalse(isinstance(f, abcmodule.RawIOBase)) - self.assertFalse(isinstance(f, abcmodule.BufferedIOBase)) - self.assertTrue(isinstance(f, abcmodule.TextIOBase)) + self.assertIsInstance(f, abcmodule.IOBase) + self.assertNotIsInstance(f, abcmodule.RawIOBase) + self.assertNotIsInstance(f, abcmodule.BufferedIOBase) + self.assertIsInstance(f, abcmodule.TextIOBase) def test_abc_inheritance(self): # Test implementations inherit from their respective ABCs Modified: python/trunk/Lib/test/test_long.py ============================================================================== --- python/trunk/Lib/test/test_long.py (original) +++ python/trunk/Lib/test/test_long.py Sun Jan 24 17:58:36 2010 @@ -552,7 +552,7 @@ y = int(x) except OverflowError: self.fail("int(long(sys.maxint) + 1) mustn't overflow") - self.assertTrue(isinstance(y, long), + self.assertIsInstance(y, long, "int(long(sys.maxint) + 1) should have returned long") x = hugeneg_aslong - 1 @@ -560,7 +560,7 @@ y = int(x) except OverflowError: self.fail("int(long(-sys.maxint-1) - 1) mustn't overflow") - self.assertTrue(isinstance(y, long), + self.assertIsInstance(y, long, "int(long(-sys.maxint-1) - 1) should have returned long") class long2(long): Modified: python/trunk/Lib/test/test_memoryio.py ============================================================================== --- python/trunk/Lib/test/test_memoryio.py (original) +++ python/trunk/Lib/test/test_memoryio.py Sun Jan 24 17:58:36 2010 @@ -635,7 +635,7 @@ state = memio.__getstate__() self.assertEqual(len(state), 3) bytearray(state[0]) # Check if state[0] supports the buffer interface. - self.assert_(isinstance(state[1], int)) + self.assertIsInstance(state[1], int) self.assert_(isinstance(state[2], dict) or state[2] is None) memio.close() self.assertRaises(ValueError, memio.__getstate__) @@ -679,9 +679,9 @@ memio = self.ioclass() state = memio.__getstate__() self.assertEqual(len(state), 4) - self.assert_(isinstance(state[0], unicode)) - self.assert_(isinstance(state[1], str)) - self.assert_(isinstance(state[2], int)) + self.assertIsInstance(state[0], unicode) + self.assertIsInstance(state[1], str) + self.assertIsInstance(state[2], int) self.assert_(isinstance(state[3], dict) or state[3] is None) memio.close() self.assertRaises(ValueError, memio.__getstate__) Modified: python/trunk/Lib/test/test_memoryview.py ============================================================================== --- python/trunk/Lib/test/test_memoryview.py (original) +++ python/trunk/Lib/test/test_memoryview.py Sun Jan 24 17:58:36 2010 @@ -28,7 +28,7 @@ oldrefcount = sys.getrefcount(b) m = self._view(b) self.assertEquals(m[0], item(b"a")) - self.assertTrue(isinstance(m[0], bytes), type(m[0])) + self.assertIsInstance(m[0], bytes) self.assertEquals(m[5], item(b"f")) self.assertEquals(m[-1], item(b"f")) self.assertEquals(m[-6], item(b"a")) @@ -125,7 +125,7 @@ expected = b"".join( self.getitem_type(c) for c in b"abcdef") self.assertEquals(b, expected) - self.assertTrue(isinstance(b, bytes), type(b)) + self.assertIsInstance(b, bytes) def test_tolist(self): for tp in self._types: Modified: python/trunk/Lib/test/test_multiprocessing.py ============================================================================== --- python/trunk/Lib/test/test_multiprocessing.py (original) +++ python/trunk/Lib/test/test_multiprocessing.py Sun Jan 24 17:58:36 2010 @@ -132,7 +132,7 @@ self.assertTrue(current.is_alive()) self.assertTrue(not current.daemon) - self.assertTrue(isinstance(authkey, bytes)) + self.assertIsInstance(authkey, bytes) self.assertTrue(len(authkey) > 0) self.assertEqual(current.ident, os.getpid()) self.assertEqual(current.exitcode, None) Modified: python/trunk/Lib/test/test_ntpath.py ============================================================================== --- python/trunk/Lib/test/test_ntpath.py (original) +++ python/trunk/Lib/test/test_ntpath.py Sun Jan 24 17:58:36 2010 @@ -125,8 +125,8 @@ # Issue 5827: Make sure normpath preserves unicode for path in (u'', u'.', u'/', u'\\', u'///foo/.//bar//'): - self.assertTrue(isinstance(ntpath.normpath(path), unicode), - 'normpath() returned str instead of unicode') + self.assertIsInstance(ntpath.normpath(path), unicode, + 'normpath() returned str instead of unicode') def test_expandvars(self): with test_support.EnvironmentVarGuard() as env: Modified: python/trunk/Lib/test/test_opcodes.py ============================================================================== --- python/trunk/Lib/test/test_opcodes.py (original) +++ python/trunk/Lib/test/test_opcodes.py Sun Jan 24 17:58:36 2010 @@ -64,7 +64,7 @@ try: raise DClass, a except DClass, v: - self.assertTrue(isinstance(v, DClass)) + self.assertIsInstance(v, DClass) else: self.fail("no exception") Modified: python/trunk/Lib/test/test_optparse.py ============================================================================== --- python/trunk/Lib/test/test_optparse.py (original) +++ python/trunk/Lib/test/test_optparse.py Sun Jan 24 17:58:36 2010 @@ -348,7 +348,7 @@ def test_get_option(self): opt1 = self.parser.get_option("-v") - self.assertTrue(isinstance(opt1, Option)) + self.assertIsInstance(opt1, Option) self.assertEqual(opt1._short_opts, ["-v", "-n"]) self.assertEqual(opt1._long_opts, ["--verbose", "--noisy"]) self.assertEqual(opt1.action, "store_true") Modified: python/trunk/Lib/test/test_parser.py ============================================================================== --- python/trunk/Lib/test/test_parser.py (original) +++ python/trunk/Lib/test/test_parser.py Sun Jan 24 17:58:36 2010 @@ -33,7 +33,7 @@ code = suite.compile() scope = {} exec code in scope - self.assertTrue(isinstance(scope["x"], unicode)) + self.assertIsInstance(scope["x"], unicode) def check_suite(self, s): self.roundtrip(parser.suite, s) Modified: python/trunk/Lib/test/test_posix.py ============================================================================== --- python/trunk/Lib/test/test_posix.py (original) +++ python/trunk/Lib/test/test_posix.py Sun Jan 24 17:58:36 2010 @@ -133,7 +133,7 @@ fp = open(test_support.TESTFN) try: fd = posix.dup(fp.fileno()) - self.assertTrue(isinstance(fd, int)) + self.assertIsInstance(fd, int) os.close(fd) finally: fp.close() @@ -273,7 +273,7 @@ def test_umask(self): if hasattr(posix, 'umask'): old_mask = posix.umask(0) - self.assertTrue(isinstance(old_mask, int)) + self.assertIsInstance(old_mask, int) posix.umask(old_mask) def test_strerror(self): Modified: python/trunk/Lib/test/test_posixpath.py ============================================================================== --- python/trunk/Lib/test/test_posixpath.py (original) +++ python/trunk/Lib/test/test_posixpath.py Sun Jan 24 17:58:36 2010 @@ -335,15 +335,15 @@ except ImportError: pass else: - self.assertTrue(isinstance(posixpath.expanduser("~/"), basestring)) + self.assertIsInstance(posixpath.expanduser("~/"), basestring) # if home directory == root directory, this test makes no sense if posixpath.expanduser("~") != '/': self.assertEqual( posixpath.expanduser("~") + "/", posixpath.expanduser("~/") ) - self.assertTrue(isinstance(posixpath.expanduser("~root/"), basestring)) - self.assertTrue(isinstance(posixpath.expanduser("~foo/"), basestring)) + self.assertIsInstance(posixpath.expanduser("~root/"), basestring) + self.assertIsInstance(posixpath.expanduser("~foo/"), basestring) with test_support.EnvironmentVarGuard() as env: env['HOME'] = '/' @@ -383,8 +383,8 @@ # Issue 5827: Make sure normpath preserves unicode for path in (u'', u'.', u'/', u'\\', u'///foo/.//bar//'): - self.assertTrue(isinstance(posixpath.normpath(path), unicode), - 'normpath() returned str instead of unicode') + self.assertIsInstance(posixpath.normpath(path), unicode, + 'normpath() returned str instead of unicode') self.assertRaises(TypeError, posixpath.normpath) Modified: python/trunk/Lib/test/test_print.py ============================================================================== --- python/trunk/Lib/test/test_print.py (original) +++ python/trunk/Lib/test/test_print.py Sun Jan 24 17:58:36 2010 @@ -128,11 +128,11 @@ self.assertEqual(u''.join(buf.buf), 'hi nothing\n') buf = Recorder(False) print('hi', 'bye', end=u'\n', file=buf) - self.assertTrue(isinstance(buf.buf[1], unicode)) - self.assertTrue(isinstance(buf.buf[3], unicode)) + self.assertIsInstance(buf.buf[1], unicode) + self.assertIsInstance(buf.buf[3], unicode) del buf.buf[:] print(sep=u'x', file=buf) - self.assertTrue(isinstance(buf.buf[-1], unicode)) + self.assertIsInstance(buf.buf[-1], unicode) def test_main(): Modified: python/trunk/Lib/test/test_pwd.py ============================================================================== --- python/trunk/Lib/test/test_pwd.py (original) +++ python/trunk/Lib/test/test_pwd.py Sun Jan 24 17:58:36 2010 @@ -13,19 +13,19 @@ for e in entries: self.assertEqual(len(e), 7) self.assertEqual(e[0], e.pw_name) - self.assertTrue(isinstance(e.pw_name, basestring)) + self.assertIsInstance(e.pw_name, basestring) self.assertEqual(e[1], e.pw_passwd) - self.assertTrue(isinstance(e.pw_passwd, basestring)) + self.assertIsInstance(e.pw_passwd, basestring) self.assertEqual(e[2], e.pw_uid) - self.assertTrue(isinstance(e.pw_uid, int)) + self.assertIsInstance(e.pw_uid, int) self.assertEqual(e[3], e.pw_gid) - self.assertTrue(isinstance(e.pw_gid, int)) + self.assertIsInstance(e.pw_gid, int) self.assertEqual(e[4], e.pw_gecos) - self.assertTrue(isinstance(e.pw_gecos, basestring)) + self.assertIsInstance(e.pw_gecos, basestring) self.assertEqual(e[5], e.pw_dir) - self.assertTrue(isinstance(e.pw_dir, basestring)) + self.assertIsInstance(e.pw_dir, basestring) self.assertEqual(e[6], e.pw_shell) - self.assertTrue(isinstance(e.pw_shell, basestring)) + self.assertIsInstance(e.pw_shell, basestring) # The following won't work, because of duplicate entries # for one uid Modified: python/trunk/Lib/test/test_pyclbr.py ============================================================================== --- python/trunk/Lib/test/test_pyclbr.py (original) +++ python/trunk/Lib/test/test_pyclbr.py Sun Jan 24 17:58:36 2010 @@ -92,12 +92,12 @@ self.assertHasattr(module, name, ignore) py_item = getattr(module, name) if isinstance(value, pyclbr.Function): - self.assertTrue(isinstance(py_item, (FunctionType, BuiltinFunctionType))) + self.assertIsInstance(py_item, (FunctionType, BuiltinFunctionType)) if py_item.__module__ != moduleName: continue # skip functions that came from somewhere else self.assertEquals(py_item.__module__, value.module) else: - self.assertTrue(isinstance(py_item, (ClassType, type))) + self.assertIsInstance(py_item, (ClassType, type)) if py_item.__module__ != moduleName: continue # skip classes that came from somewhere else Modified: python/trunk/Lib/test/test_sys.py ============================================================================== --- python/trunk/Lib/test/test_sys.py (original) +++ python/trunk/Lib/test/test_sys.py Sun Jan 24 17:58:36 2010 @@ -181,7 +181,7 @@ if test.test_support.have_unicode: self.assertRaises(TypeError, sys.getdefaultencoding, 42) # can't check more than the type, as the user might have changed it - self.assertTrue(isinstance(sys.getdefaultencoding(), str)) + self.assertIsInstance(sys.getdefaultencoding(), str) # testing sys.settrace() is done in test_trace.py # testing sys.setprofile() is done in test_profile.py @@ -205,13 +205,13 @@ def test_getwindowsversion(self): if hasattr(sys, "getwindowsversion"): v = sys.getwindowsversion() - self.assertTrue(isinstance(v, tuple)) + self.assertIsInstance(v, tuple) self.assertEqual(len(v), 5) - self.assertTrue(isinstance(v[0], int)) - self.assertTrue(isinstance(v[1], int)) - self.assertTrue(isinstance(v[2], int)) - self.assertTrue(isinstance(v[3], int)) - self.assertTrue(isinstance(v[4], str)) + self.assertIsInstance(v[0], int) + self.assertIsInstance(v[1], int) + self.assertIsInstance(v[2], int) + self.assertIsInstance(v[3], int) + self.assertIsInstance(v[4], str) def test_dlopenflags(self): if hasattr(sys, "setdlopenflags"): @@ -236,7 +236,7 @@ del n self.assertEqual(sys.getrefcount(None), c) if hasattr(sys, "gettotalrefcount"): - self.assertTrue(isinstance(sys.gettotalrefcount(), int)) + self.assertIsInstance(sys.gettotalrefcount(), int) def test_getframe(self): self.assertRaises(TypeError, sys._getframe, 42, 42) @@ -332,13 +332,13 @@ self.assertTrue(d[0] is sys._getframe()) def test_attributes(self): - self.assertTrue(isinstance(sys.api_version, int)) - self.assertTrue(isinstance(sys.argv, list)) + self.assertIsInstance(sys.api_version, int) + self.assertIsInstance(sys.argv, list) self.assertIn(sys.byteorder, ("little", "big")) - self.assertTrue(isinstance(sys.builtin_module_names, tuple)) - self.assertTrue(isinstance(sys.copyright, basestring)) - self.assertTrue(isinstance(sys.exec_prefix, basestring)) - self.assertTrue(isinstance(sys.executable, basestring)) + self.assertIsInstance(sys.builtin_module_names, tuple) + self.assertIsInstance(sys.copyright, basestring) + self.assertIsInstance(sys.exec_prefix, basestring) + self.assertIsInstance(sys.executable, basestring) self.assertEqual(len(sys.float_info), 11) self.assertEqual(sys.float_info.radix, 2) self.assertEqual(len(sys.long_info), 2) @@ -346,26 +346,26 @@ self.assertTrue(sys.long_info.sizeof_digit >= 1) self.assertEqual(type(sys.long_info.bits_per_digit), int) self.assertEqual(type(sys.long_info.sizeof_digit), int) - self.assertTrue(isinstance(sys.hexversion, int)) - self.assertTrue(isinstance(sys.maxint, int)) + self.assertIsInstance(sys.hexversion, int) + self.assertIsInstance(sys.maxint, int) if test.test_support.have_unicode: - self.assertTrue(isinstance(sys.maxunicode, int)) - self.assertTrue(isinstance(sys.platform, basestring)) - self.assertTrue(isinstance(sys.prefix, basestring)) - self.assertTrue(isinstance(sys.version, basestring)) + self.assertIsInstance(sys.maxunicode, int) + self.assertIsInstance(sys.platform, basestring) + self.assertIsInstance(sys.prefix, basestring) + self.assertIsInstance(sys.version, basestring) vi = sys.version_info - self.assertTrue(isinstance(vi[:], tuple)) + self.assertIsInstance(vi[:], tuple) self.assertEqual(len(vi), 5) - self.assertTrue(isinstance(vi[0], int)) - self.assertTrue(isinstance(vi[1], int)) - self.assertTrue(isinstance(vi[2], int)) + self.assertIsInstance(vi[0], int) + self.assertIsInstance(vi[1], int) + self.assertIsInstance(vi[2], int) self.assertIn(vi[3], ("alpha", "beta", "candidate", "final")) - self.assertTrue(isinstance(vi[4], int)) - self.assertTrue(isinstance(vi.major, int)) - self.assertTrue(isinstance(vi.minor, int)) - self.assertTrue(isinstance(vi.micro, int)) + self.assertIsInstance(vi[4], int) + self.assertIsInstance(vi.major, int) + self.assertIsInstance(vi.minor, int) + self.assertIsInstance(vi.micro, int) self.assertIn(vi.releaselevel, ("alpha", "beta", "candidate", "final")) - self.assertTrue(isinstance(vi.serial, int)) + self.assertIsInstance(vi.serial, int) self.assertEqual(vi[0], vi.major) self.assertEqual(vi[1], vi.minor) self.assertEqual(vi[2], vi.micro) Modified: python/trunk/Lib/test/test_sysconfig.py ============================================================================== --- python/trunk/Lib/test/test_sysconfig.py (original) +++ python/trunk/Lib/test/test_sysconfig.py Sun Jan 24 17:58:36 2010 @@ -105,7 +105,7 @@ def test_get_config_vars(self): cvars = get_config_vars() - self.assertTrue(isinstance(cvars, dict)) + self.assertIsInstance(cvars, dict) self.assertTrue(cvars) def test_get_platform(self): Modified: python/trunk/Lib/test/test_tempfile.py ============================================================================== --- python/trunk/Lib/test/test_tempfile.py (original) +++ python/trunk/Lib/test/test_tempfile.py Sun Jan 24 17:58:36 2010 @@ -142,8 +142,7 @@ self.assertFalse(len(cand) == 0) for c in cand: - self.assertTrue(isinstance(c, basestring), - "%s is not a string" % c) + self.assertIsInstance(c, basestring) def test_wanted_dirs(self): # _candidate_tempdir_list contains the expected directories @@ -184,7 +183,7 @@ def test_retval(self): # _get_candidate_names returns a _RandomNameSequence object obj = tempfile._get_candidate_names() - self.assertTrue(isinstance(obj, tempfile._RandomNameSequence)) + self.assertIsInstance(obj, tempfile._RandomNameSequence) def test_same_thing(self): # _get_candidate_names always returns the same object @@ -322,7 +321,7 @@ # gettempprefix returns a nonempty prefix string p = tempfile.gettempprefix() - self.assertTrue(isinstance(p, basestring)) + self.assertIsInstance(p, basestring) self.assertTrue(len(p) > 0) def test_usable_template(self): Modified: python/trunk/Lib/test/test_textwrap.py ============================================================================== --- python/trunk/Lib/test/test_textwrap.py (original) +++ python/trunk/Lib/test/test_textwrap.py Sun Jan 24 17:58:36 2010 @@ -349,9 +349,10 @@ self.check_wrap(text, 50, [u"Hello there, how are you today?"]) self.check_wrap(text, 20, [u"Hello there, how are", "you today?"]) olines = self.wrapper.wrap(text) - assert isinstance(olines, list) and isinstance(olines[0], unicode) + self.assertIsInstance(olines, list) + self.assertIsInstance(olines[0], unicode) otext = self.wrapper.fill(text) - assert isinstance(otext, unicode) + self.assertIsInstance(otext, unicode) def test_no_split_at_umlaut(self): text = u"Die Empf\xe4nger-Auswahl" Modified: python/trunk/Lib/test/test_threading.py ============================================================================== --- python/trunk/Lib/test/test_threading.py (original) +++ python/trunk/Lib/test/test_threading.py Sun Jan 24 17:58:36 2010 @@ -154,8 +154,7 @@ # Wait for the thread to finish. mutex.acquire() self.assertIn(tid, threading._active) - self.assertTrue(isinstance(threading._active[tid], - threading._DummyThread)) + self.assertIsInstance(threading._active[tid], threading._DummyThread) del threading._active[tid] # PyThreadState_SetAsyncExc() is a CPython-only gimmick, not (currently) Modified: python/trunk/Lib/test/test_transformer.py ============================================================================== --- python/trunk/Lib/test/test_transformer.py (original) +++ python/trunk/Lib/test/test_transformer.py Sun Jan 24 17:58:36 2010 @@ -14,11 +14,11 @@ for s in snippets: a = transformer.parse(s) - assert isinstance(a, ast.Module) + self.assertIsInstance(a, ast.Module) child1 = a.getChildNodes()[0] - assert isinstance(child1, ast.Stmt) + self.assertIsInstance(child1, ast.Stmt) child2 = child1.getChildNodes()[0] - assert isinstance(child2, ast.Assign) + self.assertIsInstance(child2, ast.Assign) # This actually tests the compiler, but it's a way to assure the ast # is correct Modified: python/trunk/Lib/test/test_typechecks.py ============================================================================== --- python/trunk/Lib/test/test_typechecks.py (original) +++ python/trunk/Lib/test/test_typechecks.py Sun Jan 24 17:58:36 2010 @@ -79,8 +79,8 @@ def __subclasscheck__(self, cls): return True class Sub(X): pass - self.assertFalse(isinstance(3, X)) - self.assertTrue(isinstance(X(), X)) + self.assertNotIsInstance(3, X) + self.assertIsInstance(X(), X) self.assertFalse(issubclass(int, X)) self.assertTrue(issubclass(Sub, X)) Modified: python/trunk/Lib/test/test_unittest.py ============================================================================== --- python/trunk/Lib/test/test_unittest.py (original) +++ python/trunk/Lib/test/test_unittest.py Sun Jan 24 17:58:36 2010 @@ -186,7 +186,7 @@ self.assertFalse('runTest'.startswith(loader.testMethodPrefix)) suite = loader.loadTestsFromTestCase(Foo) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [Foo('runTest')]) ################################################################ @@ -205,7 +205,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromModule(m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) expected = [loader.suiteClass([MyTestCase('test')])] self.assertEqual(list(suite), expected) @@ -218,7 +218,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromModule(m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), []) # "This method searches `module` for classes derived from TestCase" @@ -232,7 +232,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromModule(m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [loader.suiteClass()]) @@ -468,7 +468,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromName('testcase_1', m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [MyTestCase('test')]) # "The specifier name is a ``dotted name'' that may resolve either to @@ -484,7 +484,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromName('testsuite', m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [MyTestCase('test')]) @@ -499,7 +499,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromName('testcase_1.test', m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [MyTestCase('test')]) @@ -538,7 +538,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromName('return_TestSuite', m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [testcase_1, testcase_2]) # "The specifier name is a ``dotted name'' that may resolve ... to @@ -552,7 +552,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromName('return_TestCase', m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [testcase_1]) # "The specifier name is a ``dotted name'' that may resolve ... to @@ -572,7 +572,7 @@ loader = unittest.TestLoader() loader.suiteClass = SubTestSuite suite = loader.loadTestsFromName('return_TestCase', m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [testcase_1]) # "The specifier name is a ``dotted name'' that may resolve ... to @@ -592,7 +592,7 @@ loader = unittest.TestLoader() loader.suiteClass=SubTestSuite suite = loader.loadTestsFromName('testcase_1.test', m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [MyTestCase('test')]) @@ -632,7 +632,7 @@ try: suite = loader.loadTestsFromName(module_name) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), []) # audioop should now be loaded, thanks to loadTestsFromName() @@ -655,7 +655,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromNames([]) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), []) # "Similar to loadTestsFromName(), but takes a sequence of names rather @@ -670,7 +670,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromNames([], unittest) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), []) # "The specifier name is a ``dotted name'' that may resolve either to @@ -871,7 +871,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromNames(['testcase_1'], m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) expected = loader.suiteClass([MyTestCase('test')]) self.assertEqual(list(suite), [expected]) @@ -887,7 +887,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromNames(['testsuite'], m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [m.testsuite]) @@ -902,7 +902,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromNames(['testcase_1.test'], m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) ref_suite = unittest.TestSuite([MyTestCase('test')]) self.assertEqual(list(suite), [ref_suite]) @@ -939,7 +939,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromNames(['return_TestSuite'], m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) expected = unittest.TestSuite([testcase_1, testcase_2]) self.assertEqual(list(suite), [expected]) @@ -955,7 +955,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromNames(['return_TestCase'], m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) ref_suite = unittest.TestSuite([testcase_1]) self.assertEqual(list(suite), [ref_suite]) @@ -979,7 +979,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromNames(['Foo.foo'], m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) ref_suite = unittest.TestSuite([testcase_1]) self.assertEqual(list(suite), [ref_suite]) @@ -1020,7 +1020,7 @@ try: suite = loader.loadTestsFromNames([module_name]) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [unittest.TestSuite()]) # audioop should now be loaded, thanks to loadTestsFromName() @@ -1798,7 +1798,7 @@ def test_id(self): test = unittest.FunctionTestCase(lambda: None) - self.assertTrue(isinstance(test.id(), basestring)) + self.assertIsInstance(test.id(), basestring) # "Returns a one-line description of the test, or None if no description # has been provided. The default implementation of this method returns @@ -1986,7 +1986,7 @@ test_case, formatted_exc = result.failures[0] self.assertTrue(test_case is test) - self.assertTrue(isinstance(formatted_exc, str)) + self.assertIsInstance(formatted_exc, str) # "addError(test, err)" # ... @@ -2036,7 +2036,7 @@ test_case, formatted_exc = result.errors[0] self.assertTrue(test_case is test) - self.assertTrue(isinstance(formatted_exc, str)) + self.assertIsInstance(formatted_exc, str) ### Support code for Test_TestCase ################################################################ @@ -2427,7 +2427,7 @@ def runTest(self): pass - self.assertTrue(isinstance(Foo().id(), basestring)) + self.assertIsInstance(Foo().id(), basestring) # "If result is omitted or None, a temporary result object is created # and used, but is not made available to the caller. As TestCase owns the @@ -2887,7 +2887,7 @@ with ctx: Stub(v) e = ctx.exc_value - self.assertTrue(isinstance(e, ExceptionMock)) + self.assertIsInstance(e, ExceptionMock) self.assertEqual(e.args[0], v) def testSynonymAssertMethodNames(self): Modified: python/trunk/Lib/test/test_urllib.py ============================================================================== --- python/trunk/Lib/test/test_urllib.py (original) +++ python/trunk/Lib/test/test_urllib.py Sun Jan 24 17:58:36 2010 @@ -66,8 +66,7 @@ def test_fileno(self): file_num = self.returned_obj.fileno() - self.assertTrue(isinstance(file_num, int), - "fileno() did not return an int") + self.assertIsInstance(file_num, int, "fileno() did not return an int") self.assertEqual(os.read(file_num, len(self.text)), self.text, "Reading on the file descriptor returned by fileno() " "did not return the expected text") @@ -78,7 +77,7 @@ self.returned_obj.close() def test_info(self): - self.assertTrue(isinstance(self.returned_obj.info(), mimetools.Message)) + self.assertIsInstance(self.returned_obj.info(), mimetools.Message) def test_geturl(self): self.assertEqual(self.returned_obj.geturl(), self.pathname) @@ -229,9 +228,9 @@ # a headers value is returned. result = urllib.urlretrieve("file:%s" % test_support.TESTFN) self.assertEqual(result[0], test_support.TESTFN) - self.assertTrue(isinstance(result[1], mimetools.Message), - "did not get a mimetools.Message instance as second " - "returned value") + self.assertIsInstance(result[1], mimetools.Message, + "did not get a mimetools.Message instance as " + "second returned value") def test_copy(self): # Test that setting the filename argument works. @@ -254,9 +253,9 @@ def test_reporthook(self): # Make sure that the reporthook works. def hooktester(count, block_size, total_size, count_holder=[0]): - self.assertTrue(isinstance(count, int)) - self.assertTrue(isinstance(block_size, int)) - self.assertTrue(isinstance(total_size, int)) + self.assertIsInstance(count, int) + self.assertIsInstance(block_size, int) + self.assertIsInstance(total_size, int) self.assertEqual(count, count_holder[0]) count_holder[0] = count_holder[0] + 1 second_temp = "%s.2" % test_support.TESTFN Modified: python/trunk/Lib/test/test_urllib2.py ============================================================================== --- python/trunk/Lib/test/test_urllib2.py (original) +++ python/trunk/Lib/test/test_urllib2.py Sun Jan 24 17:58:36 2010 @@ -580,12 +580,12 @@ # *_request self.assertEqual((handler, name), calls[i]) self.assertEqual(len(args), 1) - self.assertTrue(isinstance(args[0], Request)) + self.assertIsInstance(args[0], Request) else: # *_response self.assertEqual((handler, name), calls[i]) self.assertEqual(len(args), 2) - self.assertTrue(isinstance(args[0], Request)) + self.assertIsInstance(args[0], Request) # response from opener.open is None, because there's no # handler that defines http_open to handle it self.assertTrue(args[1] is None or Modified: python/trunk/Lib/test/test_urllib2_localnet.py ============================================================================== --- python/trunk/Lib/test/test_urllib2_localnet.py (original) +++ python/trunk/Lib/test/test_urllib2_localnet.py Sun Jan 24 17:58:36 2010 @@ -457,9 +457,9 @@ try: open_url = urllib2.urlopen("http://localhost:%s" % handler.port) info_obj = open_url.info() - self.assertTrue(isinstance(info_obj, mimetools.Message), - "object returned by 'info' is not an instance of " - "mimetools.Message") + self.assertIsInstance(info_obj, mimetools.Message, + "object returned by 'info' is not an " + "instance of mimetools.Message") self.assertEqual(info_obj.getsubtype(), "plain") finally: self.server.stop() Modified: python/trunk/Lib/test/test_urllib2net.py ============================================================================== --- python/trunk/Lib/test/test_urllib2net.py (original) +++ python/trunk/Lib/test/test_urllib2net.py Sun Jan 24 17:58:36 2010 @@ -176,7 +176,7 @@ if expected_err: msg = ("Didn't get expected error(s) %s for %s %s, got %s: %s" % (expected_err, url, req, type(err), err)) - self.assertTrue(isinstance(err, expected_err), msg) + self.assertIsInstance(err, expected_err, msg) else: with test_support.transient_internet(): buf = f.read() Modified: python/trunk/Lib/test/test_urllibnet.py ============================================================================== --- python/trunk/Lib/test/test_urllibnet.py (original) +++ python/trunk/Lib/test/test_urllibnet.py Sun Jan 24 17:58:36 2010 @@ -71,10 +71,10 @@ # Test both readline and readlines. open_url = self.urlopen("http://www.python.org/") try: - self.assertTrue(isinstance(open_url.readline(), basestring), - "readline did not return a string") - self.assertTrue(isinstance(open_url.readlines(), list), - "readlines did not return a list") + self.assertIsInstance(open_url.readline(), basestring, + "readline did not return a string") + self.assertIsInstance(open_url.readlines(), list, + "readlines did not return a list") finally: open_url.close() @@ -85,9 +85,9 @@ info_obj = open_url.info() finally: open_url.close() - self.assertTrue(isinstance(info_obj, mimetools.Message), - "object returned by 'info' is not an instance of " - "mimetools.Message") + self.assertIsInstance(info_obj, mimetools.Message, + "object returned by 'info' is not an " + "instance of mimetools.Message") self.assertEqual(info_obj.getsubtype(), "html") def test_geturl(self): @@ -175,8 +175,8 @@ # Make sure header returned as 2nd value from urlretrieve is good. file_location, header = self.urlretrieve("http://www.python.org/") os.unlink(file_location) - self.assertTrue(isinstance(header, mimetools.Message), - "header is not an instance of mimetools.Message") + self.assertIsInstance(header, mimetools.Message, + "header is not an instance of mimetools.Message") Modified: python/trunk/Lib/test/test_userdict.py ============================================================================== --- python/trunk/Lib/test/test_userdict.py (original) +++ python/trunk/Lib/test/test_userdict.py Sun Jan 24 17:58:36 2010 @@ -39,8 +39,8 @@ self.assertEqual(UserDict.UserDict.fromkeys('one two'.split(), 1), d5) self.assertEqual(UserDict.UserDict().fromkeys('one two'.split(), 1), d5) self.assertTrue(u1.fromkeys('one two'.split()) is not u1) - self.assertTrue(isinstance(u1.fromkeys('one two'.split()), UserDict.UserDict)) - self.assertTrue(isinstance(u2.fromkeys('one two'.split()), UserDict.IterableUserDict)) + self.assertIsInstance(u1.fromkeys('one two'.split()), UserDict.UserDict) + self.assertIsInstance(u2.fromkeys('one two'.split()), UserDict.IterableUserDict) # Test __repr__ self.assertEqual(str(u0), str(d0)) Modified: python/trunk/Lib/test/test_userstring.py ============================================================================== --- python/trunk/Lib/test/test_userstring.py (original) +++ python/trunk/Lib/test/test_userstring.py Sun Jan 24 17:58:36 2010 @@ -114,7 +114,7 @@ s = self.type2test("foobar") s2 = s.immutable() self.assertEqual(s, s2) - self.assertTrue(isinstance(s2, UserString)) + self.assertIsInstance(s2, UserString) def test_iadd(self): s = self.type2test("foo") Modified: python/trunk/Lib/test/test_wsgiref.py ============================================================================== --- python/trunk/Lib/test/test_wsgiref.py (original) +++ python/trunk/Lib/test/test_wsgiref.py Sun Jan 24 17:58:36 2010 @@ -179,10 +179,10 @@ # Check defaulting when empty env = {} util.setup_testing_defaults(env) - if isinstance(value,StringIO): - self.assertTrue(isinstance(env[key],StringIO)) + if isinstance(value, StringIO): + self.assertIsInstance(env[key], StringIO) else: - self.assertEqual(env[key],value) + self.assertEqual(env[key], value) # Check existing value env = {key:alt} Modified: python/trunk/Lib/test/test_xmlrpc.py ============================================================================== --- python/trunk/Lib/test/test_xmlrpc.py (original) +++ python/trunk/Lib/test/test_xmlrpc.py Sun Jan 24 17:58:36 2010 @@ -81,11 +81,11 @@ d = xmlrpclib.DateTime() ((new_d,), dummy) = xmlrpclib.loads(xmlrpclib.dumps((d,), methodresponse=True)) - self.assertTrue(isinstance(new_d.value, str)) + self.assertIsInstance(new_d.value, str) # Check that the output of dumps() is still an 8-bit string s = xmlrpclib.dumps((new_d,), methodresponse=True) - self.assertTrue(isinstance(s, str)) + self.assertIsInstance(s, str) def test_newstyle_class(self): class T(object): @@ -175,10 +175,10 @@ items = d.items() if have_unicode: self.assertEquals(s, u"abc \x95") - self.assertTrue(isinstance(s, unicode)) + self.assertIsInstance(s, unicode) self.assertEquals(items, [(u"def \x96", u"ghi \x97")]) - self.assertTrue(isinstance(items[0][0], unicode)) - self.assertTrue(isinstance(items[0][1], unicode)) + self.assertIsInstance(items[0][0], unicode) + self.assertIsInstance(items[0][1], unicode) else: self.assertEquals(s, "abc \xc2\x95") self.assertEquals(items, [("def \xc2\x96", "ghi \xc2\x97")]) Modified: python/trunk/Lib/test/test_zipfile.py ============================================================================== --- python/trunk/Lib/test/test_zipfile.py (original) +++ python/trunk/Lib/test/test_zipfile.py Sun Jan 24 17:58:36 2010 @@ -593,7 +593,7 @@ with zipfile.ZipFile(TESTFN, "w") as zf: zf.writestr(u"foo.txt", "Test for unicode filename") zf.writestr(u"\xf6.txt", "Test for unicode filename") - self.assertTrue(isinstance(zf.infolist()[0].filename, unicode)) + self.assertIsInstance(zf.infolist()[0].filename, unicode) with zipfile.ZipFile(TESTFN, "r") as zf: self.assertEqual(zf.filelist[0].filename, "foo.txt") From python-checkins at python.org Sun Jan 24 20:26:25 2010 From: python-checkins at python.org (ezio.melotti) Date: Sun, 24 Jan 2010 19:26:25 -0000 Subject: [Python-checkins] r77728 - in python/branches/py3k: Lib/test/mapping_tests.py Lib/test/pickletester.py Lib/test/test_abc.py Lib/test/test_array.py Lib/test/test_augassign.py Lib/test/test_bool.py Lib/test/test_bytes.py Lib/test/test_codecs.py Lib/test/test_collections.py Lib/test/test_compile.py Lib/test/test_datetime.py Lib/test/test_decimal.py Lib/test/test_descr.py Lib/test/test_dict.py Lib/test/test_dummy_thread.py Lib/test/test_exceptions.py Lib/test/test_ftplib.py Lib/test/test_funcattrs.py Lib/test/test_future.py Lib/test/test_future5.py Lib/test/test_grp.py Lib/test/test_hash.py Lib/test/test_int.py Lib/test/test_io.py Lib/test/test_mailbox.py Lib/test/test_memoryio.py Lib/test/test_memoryview.py Lib/test/test_multiprocessing.py Lib/test/test_ntpath.py Lib/test/test_opcodes.py Lib/test/test_optparse.py Lib/test/test_parser.py Lib/test/test_posix.py Lib/test/test_posixpath.py Lib/test/test_pwd.py Lib/test/test_pyclbr.py Lib/test/test_raise.py Lib/test/test_sys.py Lib/test/test_tempfile.py Lib/test/test_threading.py Lib/test/test_types.py Lib/test/test_unittest.py Lib/test/test_urllib.py Lib/test/test_urllib2.py Lib/test/test_urllib2_localnet.py Lib/test/test_urllib2net.py Lib/test/test_urllibnet.py Lib/test/test_userdict.py Lib/test/test_wsgiref.py Lib/test/test_xmlrpc.py Lib/test/test_zipfile.py Lib/test/test_zlib.py Message-ID: Author: ezio.melotti Date: Sun Jan 24 20:26:24 2010 New Revision: 77728 Log: Merged revisions 77727 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77727 | ezio.melotti | 2010-01-24 18:58:36 +0200 (Sun, 24 Jan 2010) | 1 line use assert[Not]IsInstance where appropriate ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/mapping_tests.py python/branches/py3k/Lib/test/pickletester.py python/branches/py3k/Lib/test/test_abc.py python/branches/py3k/Lib/test/test_array.py python/branches/py3k/Lib/test/test_augassign.py python/branches/py3k/Lib/test/test_bool.py python/branches/py3k/Lib/test/test_bytes.py python/branches/py3k/Lib/test/test_codecs.py python/branches/py3k/Lib/test/test_collections.py python/branches/py3k/Lib/test/test_compile.py python/branches/py3k/Lib/test/test_datetime.py python/branches/py3k/Lib/test/test_decimal.py python/branches/py3k/Lib/test/test_descr.py python/branches/py3k/Lib/test/test_dict.py python/branches/py3k/Lib/test/test_dummy_thread.py python/branches/py3k/Lib/test/test_exceptions.py python/branches/py3k/Lib/test/test_ftplib.py python/branches/py3k/Lib/test/test_funcattrs.py python/branches/py3k/Lib/test/test_future.py python/branches/py3k/Lib/test/test_future5.py python/branches/py3k/Lib/test/test_grp.py python/branches/py3k/Lib/test/test_hash.py python/branches/py3k/Lib/test/test_int.py python/branches/py3k/Lib/test/test_io.py python/branches/py3k/Lib/test/test_mailbox.py python/branches/py3k/Lib/test/test_memoryio.py python/branches/py3k/Lib/test/test_memoryview.py python/branches/py3k/Lib/test/test_multiprocessing.py python/branches/py3k/Lib/test/test_ntpath.py python/branches/py3k/Lib/test/test_opcodes.py python/branches/py3k/Lib/test/test_optparse.py python/branches/py3k/Lib/test/test_parser.py python/branches/py3k/Lib/test/test_posix.py python/branches/py3k/Lib/test/test_posixpath.py python/branches/py3k/Lib/test/test_pwd.py python/branches/py3k/Lib/test/test_pyclbr.py python/branches/py3k/Lib/test/test_raise.py python/branches/py3k/Lib/test/test_sys.py python/branches/py3k/Lib/test/test_tempfile.py python/branches/py3k/Lib/test/test_threading.py python/branches/py3k/Lib/test/test_types.py python/branches/py3k/Lib/test/test_unittest.py python/branches/py3k/Lib/test/test_urllib.py python/branches/py3k/Lib/test/test_urllib2.py python/branches/py3k/Lib/test/test_urllib2_localnet.py python/branches/py3k/Lib/test/test_urllib2net.py python/branches/py3k/Lib/test/test_urllibnet.py python/branches/py3k/Lib/test/test_userdict.py python/branches/py3k/Lib/test/test_wsgiref.py python/branches/py3k/Lib/test/test_xmlrpc.py python/branches/py3k/Lib/test/test_zipfile.py python/branches/py3k/Lib/test/test_zlib.py Modified: python/branches/py3k/Lib/test/mapping_tests.py ============================================================================== --- python/branches/py3k/Lib/test/mapping_tests.py (original) +++ python/branches/py3k/Lib/test/mapping_tests.py Sun Jan 24 20:26:24 2010 @@ -435,15 +435,13 @@ self.assertEqual(dictlike().fromkeys('a'), {'a':None}) self.assertTrue(dictlike.fromkeys('a').__class__ is dictlike) self.assertTrue(dictlike().fromkeys('a').__class__ is dictlike) - # FIXME: the following won't work with UserDict, because it's an old style class - # self.assertTrue(type(dictlike.fromkeys('a')) is dictlike) + self.assertTrue(type(dictlike.fromkeys('a')) is dictlike) class mydict(self.type2test): def __new__(cls): return collections.UserDict() ud = mydict.fromkeys('ab') self.assertEqual(ud, {'a':None, 'b':None}) - # FIXME: the following won't work with UserDict, because it's an old style class - # self.assertTrue(isinstance(ud, collections.UserDict)) + self.assertIsInstance(ud, collections.UserDict) self.assertRaises(TypeError, dict.fromkeys) class Exc(Exception): pass @@ -473,7 +471,7 @@ self.assertEqual(d.copy(), {1:1, 2:2, 3:3}) d = self._empty_mapping() self.assertEqual(d.copy(), d) - self.assertTrue(isinstance(d.copy(), d.__class__)) + self.assertIsInstance(d.copy(), d.__class__) self.assertRaises(TypeError, d.copy, None) def test_get(self): @@ -571,7 +569,7 @@ return collections.UserDict() ud = mydict.fromkeys('ab') self.assertEqual(ud, {'a':None, 'b':None}) - self.assertTrue(isinstance(ud, collections.UserDict)) + self.assertIsInstance(ud, collections.UserDict) def test_pop(self): TestMappingProtocol.test_pop(self) Modified: python/branches/py3k/Lib/test/pickletester.py ============================================================================== --- python/branches/py3k/Lib/test/pickletester.py (original) +++ python/branches/py3k/Lib/test/pickletester.py Sun Jan 24 20:26:24 2010 @@ -832,7 +832,7 @@ x = dict.fromkeys(range(n)) for proto in protocols: s = self.dumps(x, proto) - assert isinstance(s, bytes_types) + self.assertIsInstance(s, bytes_types) y = self.loads(s) self.assertEqual(x, y) num_setitems = count_opcode(pickle.SETITEMS, s) Modified: python/branches/py3k/Lib/test/test_abc.py ============================================================================== --- python/branches/py3k/Lib/test/test_abc.py (original) +++ python/branches/py3k/Lib/test/test_abc.py Sun Jan 24 20:26:24 2010 @@ -76,20 +76,20 @@ b = B() self.assertEqual(issubclass(B, A), False) self.assertEqual(issubclass(B, (A,)), False) - self.assertEqual(isinstance(b, A), False) - self.assertEqual(isinstance(b, (A,)), False) + self.assertNotIsInstance(b, A) + self.assertNotIsInstance(b, (A,)) A.register(B) self.assertEqual(issubclass(B, A), True) self.assertEqual(issubclass(B, (A,)), True) - self.assertEqual(isinstance(b, A), True) - self.assertEqual(isinstance(b, (A,)), True) + self.assertIsInstance(b, A) + self.assertIsInstance(b, (A,)) class C(B): pass c = C() self.assertEqual(issubclass(C, A), True) self.assertEqual(issubclass(C, (A,)), True) - self.assertEqual(isinstance(c, A), True) - self.assertEqual(isinstance(c, (A,)), True) + self.assertIsInstance(c, A) + self.assertIsInstance(c, (A,)) def test_isinstance_invalidation(self): class A(metaclass=abc.ABCMeta): @@ -107,16 +107,16 @@ class A(metaclass=abc.ABCMeta): pass A.register(int) - self.assertEqual(isinstance(42, A), True) - self.assertEqual(isinstance(42, (A,)), True) + self.assertIsInstance(42, A) + self.assertIsInstance(42, (A,)) self.assertEqual(issubclass(int, A), True) self.assertEqual(issubclass(int, (A,)), True) class B(A): pass B.register(str) class C(str): pass - self.assertEqual(isinstance("", A), True) - self.assertEqual(isinstance("", (A,)), True) + self.assertIsInstance("", A) + self.assertIsInstance("", (A,)) self.assertEqual(issubclass(str, A), True) self.assertEqual(issubclass(str, (A,)), True) self.assertEqual(issubclass(C, A), True) @@ -175,8 +175,8 @@ pass self.assertTrue(issubclass(MyInt, A)) self.assertTrue(issubclass(MyInt, (A,))) - self.assertTrue(isinstance(42, A)) - self.assertTrue(isinstance(42, (A,))) + self.assertIsInstance(42, A) + self.assertIsInstance(42, (A,)) def test_all_new_methods_are_called(self): class A(metaclass=abc.ABCMeta): Modified: python/branches/py3k/Lib/test/test_array.py ============================================================================== --- python/branches/py3k/Lib/test/test_array.py (original) +++ python/branches/py3k/Lib/test/test_array.py Sun Jan 24 20:26:24 2010 @@ -201,10 +201,10 @@ a = array.array(self.typecode, self.example) self.assertRaises(TypeError, a.buffer_info, 42) bi = a.buffer_info() - self.assertTrue(isinstance(bi, tuple)) + self.assertIsInstance(bi, tuple) self.assertEqual(len(bi), 2) - self.assertTrue(isinstance(bi[0], int)) - self.assertTrue(isinstance(bi[1], int)) + self.assertIsInstance(bi[0], int) + self.assertIsInstance(bi[1], int) self.assertEqual(bi[1], len(a)) def test_byteswap(self): Modified: python/branches/py3k/Lib/test/test_augassign.py ============================================================================== --- python/branches/py3k/Lib/test/test_augassign.py (original) +++ python/branches/py3k/Lib/test/test_augassign.py Sun Jan 24 20:26:24 2010 @@ -88,7 +88,7 @@ y = x x += 10 - self.assertTrue(isinstance(x, aug_test)) + self.assertIsInstance(x, aug_test) self.assertTrue(y is not x) self.assertEquals(x.val, 11) @@ -103,7 +103,7 @@ y = x x += 10 - self.assertTrue(isinstance(x, aug_test3)) + self.assertIsInstance(x, aug_test3) self.assertTrue(y is not x) self.assertEquals(x.val, 13) Modified: python/branches/py3k/Lib/test/test_bool.py ============================================================================== --- python/branches/py3k/Lib/test/test_bool.py (original) +++ python/branches/py3k/Lib/test/test_bool.py Sun Jan 24 20:26:24 2010 @@ -221,15 +221,15 @@ def test_boolean(self): self.assertEqual(True & 1, 1) - self.assertTrue(not isinstance(True & 1, bool)) + self.assertNotIsInstance(True & 1, bool) self.assertIs(True & True, True) self.assertEqual(True | 1, 1) - self.assertTrue(not isinstance(True | 1, bool)) + self.assertNotIsInstance(True | 1, bool) self.assertIs(True | True, True) self.assertEqual(True ^ 1, 0) - self.assertTrue(not isinstance(True ^ 1, bool)) + self.assertNotIsInstance(True ^ 1, bool) self.assertIs(True ^ True, False) def test_fileclosed(self): Modified: python/branches/py3k/Lib/test/test_bytes.py ============================================================================== --- python/branches/py3k/Lib/test/test_bytes.py (original) +++ python/branches/py3k/Lib/test/test_bytes.py Sun Jan 24 20:26:24 2010 @@ -1017,7 +1017,7 @@ def test_basic(self): self.assertTrue(issubclass(self.subclass2test, self.type2test)) - self.assertTrue(isinstance(self.subclass2test(), self.type2test)) + self.assertIsInstance(self.subclass2test(), self.type2test) a, b = b"abcd", b"efgh" _a, _b = self.subclass2test(a), self.subclass2test(b) Modified: python/branches/py3k/Lib/test/test_codecs.py ============================================================================== --- python/branches/py3k/Lib/test/test_codecs.py (original) +++ python/branches/py3k/Lib/test/test_codecs.py Sun Jan 24 20:26:24 2010 @@ -29,7 +29,7 @@ d = codecs.getincrementaldecoder(encoding)() part1 = d.decode(s[:i]) state = d.getstate() - self.assertTrue(isinstance(state[1], int)) + self.assertIsInstance(state[1], int) # Check that the condition stated in the documentation for # IncrementalDecoder.getstate() holds if not state[1]: Modified: python/branches/py3k/Lib/test/test_collections.py ============================================================================== --- python/branches/py3k/Lib/test/test_collections.py (original) +++ python/branches/py3k/Lib/test/test_collections.py Sun Jan 24 20:26:24 2010 @@ -103,7 +103,7 @@ Point = namedtuple('Point', 'x y') p = Point(11, 22) - self.assertTrue(isinstance(p, tuple)) + self.assertIsInstance(p, tuple) self.assertEqual(p, (11, 22)) # matches a real tuple self.assertEqual(tuple(p), (11, 22)) # coercable to a real tuple self.assertEqual(list(p), [11, 22]) # coercable to a list @@ -236,7 +236,7 @@ # Check some non-hashables non_samples = [bytearray(), list(), set(), dict()] for x in non_samples: - self.assertFalse(isinstance(x, Hashable), repr(x)) + self.assertNotIsInstance(x, Hashable) self.assertFalse(issubclass(type(x), Hashable), repr(type(x))) # Check some hashables samples = [None, @@ -246,7 +246,7 @@ int, list, object, type, bytes() ] for x in samples: - self.assertTrue(isinstance(x, Hashable), repr(x)) + self.assertIsInstance(x, Hashable) self.assertTrue(issubclass(type(x), Hashable), repr(type(x))) self.assertRaises(TypeError, Hashable) # Check direct subclassing @@ -261,7 +261,7 @@ # Check some non-iterables non_samples = [None, 42, 3.14, 1j] for x in non_samples: - self.assertFalse(isinstance(x, Iterable), repr(x)) + self.assertNotIsInstance(x, Iterable) self.assertFalse(issubclass(type(x), Iterable), repr(type(x))) # Check some iterables samples = [bytes(), str(), @@ -271,7 +271,7 @@ (x for x in []), ] for x in samples: - self.assertTrue(isinstance(x, Iterable), repr(x)) + self.assertIsInstance(x, Iterable) self.assertTrue(issubclass(type(x), Iterable), repr(type(x))) # Check direct subclassing class I(Iterable): @@ -284,7 +284,7 @@ def test_Iterator(self): non_samples = [None, 42, 3.14, 1j, b"", "", (), [], {}, set()] for x in non_samples: - self.assertFalse(isinstance(x, Iterator), repr(x)) + self.assertNotIsInstance(x, Iterator) self.assertFalse(issubclass(type(x), Iterator), repr(type(x))) samples = [iter(bytes()), iter(str()), iter(tuple()), iter(list()), iter(dict()), @@ -295,7 +295,7 @@ (x for x in []), ] for x in samples: - self.assertTrue(isinstance(x, Iterator), repr(x)) + self.assertIsInstance(x, Iterator) self.assertTrue(issubclass(type(x), Iterator), repr(type(x))) self.validate_abstract_methods(Iterator, '__next__') @@ -305,14 +305,14 @@ (x for x in []), ] for x in non_samples: - self.assertFalse(isinstance(x, Sized), repr(x)) + self.assertNotIsInstance(x, Sized) self.assertFalse(issubclass(type(x), Sized), repr(type(x))) samples = [bytes(), str(), tuple(), list(), set(), frozenset(), dict(), dict().keys(), dict().items(), dict().values(), ] for x in samples: - self.assertTrue(isinstance(x, Sized), repr(x)) + self.assertIsInstance(x, Sized) self.assertTrue(issubclass(type(x), Sized), repr(type(x))) self.validate_abstract_methods(Sized, '__len__') @@ -322,14 +322,14 @@ (x for x in []), ] for x in non_samples: - self.assertFalse(isinstance(x, Container), repr(x)) + self.assertNotIsInstance(x, Container) self.assertFalse(issubclass(type(x), Container), repr(type(x))) samples = [bytes(), str(), tuple(), list(), set(), frozenset(), dict(), dict().keys(), dict().items(), ] for x in samples: - self.assertTrue(isinstance(x, Container), repr(x)) + self.assertIsInstance(x, Container) self.assertTrue(issubclass(type(x), Container), repr(type(x))) self.validate_abstract_methods(Container, '__contains__') @@ -340,7 +340,7 @@ (x for x in []), ] for x in non_samples: - self.assertFalse(isinstance(x, Callable), repr(x)) + self.assertNotIsInstance(x, Callable) self.assertFalse(issubclass(type(x), Callable), repr(type(x))) samples = [lambda: None, type, int, object, @@ -348,7 +348,7 @@ list.append, [].append, ] for x in samples: - self.assertTrue(isinstance(x, Callable), repr(x)) + self.assertIsInstance(x, Callable) self.assertTrue(issubclass(type(x), Callable), repr(type(x))) self.validate_abstract_methods(Callable, '__call__') @@ -395,7 +395,7 @@ def test_Set(self): for sample in [set, frozenset]: - self.assertTrue(isinstance(sample(), Set)) + self.assertIsInstance(sample(), Set) self.assertTrue(issubclass(sample, Set)) self.validate_abstract_methods(Set, '__contains__', '__iter__', '__len__') @@ -415,9 +415,9 @@ self.assertTrue(hash(a) == hash(b)) def test_MutableSet(self): - self.assertTrue(isinstance(set(), MutableSet)) + self.assertIsInstance(set(), MutableSet) self.assertTrue(issubclass(set, MutableSet)) - self.assertFalse(isinstance(frozenset(), MutableSet)) + self.assertNotIsInstance(frozenset(), MutableSet) self.assertFalse(issubclass(frozenset, MutableSet)) self.validate_abstract_methods(MutableSet, '__contains__', '__iter__', '__len__', 'add', 'discard') @@ -457,23 +457,23 @@ def test_Mapping(self): for sample in [dict]: - self.assertTrue(isinstance(sample(), Mapping)) + self.assertIsInstance(sample(), Mapping) self.assertTrue(issubclass(sample, Mapping)) self.validate_abstract_methods(Mapping, '__contains__', '__iter__', '__len__', '__getitem__') def test_MutableMapping(self): for sample in [dict]: - self.assertTrue(isinstance(sample(), MutableMapping)) + self.assertIsInstance(sample(), MutableMapping) self.assertTrue(issubclass(sample, MutableMapping)) self.validate_abstract_methods(MutableMapping, '__contains__', '__iter__', '__len__', '__getitem__', '__setitem__', '__delitem__') def test_Sequence(self): for sample in [tuple, list, bytes, str]: - self.assertTrue(isinstance(sample(), Sequence)) + self.assertIsInstance(sample(), Sequence) self.assertTrue(issubclass(sample, Sequence)) - self.assertTrue(isinstance(range(10), Sequence)) + self.assertIsInstance(range(10), Sequence) self.assertTrue(issubclass(range, Sequence)) self.assertTrue(issubclass(str, Sequence)) self.validate_abstract_methods(Sequence, '__contains__', '__iter__', '__len__', @@ -481,20 +481,20 @@ def test_ByteString(self): for sample in [bytes, bytearray]: - self.assertTrue(isinstance(sample(), ByteString)) + self.assertIsInstance(sample(), ByteString) self.assertTrue(issubclass(sample, ByteString)) for sample in [str, list, tuple]: - self.assertFalse(isinstance(sample(), ByteString)) + self.assertNotIsInstance(sample(), ByteString) self.assertFalse(issubclass(sample, ByteString)) - self.assertFalse(isinstance(memoryview(b""), ByteString)) + self.assertNotIsInstance(memoryview(b""), ByteString) self.assertFalse(issubclass(memoryview, ByteString)) def test_MutableSequence(self): for sample in [tuple, str, bytes]: - self.assertFalse(isinstance(sample(), MutableSequence)) + self.assertNotIsInstance(sample(), MutableSequence) self.assertFalse(issubclass(sample, MutableSequence)) for sample in [list, bytearray]: - self.assertTrue(isinstance(sample(), MutableSequence)) + self.assertIsInstance(sample(), MutableSequence) self.assertTrue(issubclass(sample, MutableSequence)) self.assertFalse(issubclass(str, MutableSequence)) self.validate_abstract_methods(MutableSequence, '__contains__', '__iter__', @@ -506,8 +506,8 @@ c = Counter('abcaba') self.assertEqual(c, Counter({'a':3 , 'b': 2, 'c': 1})) self.assertEqual(c, Counter(a=3, b=2, c=1)) - self.assertTrue(isinstance(c, dict)) - self.assertTrue(isinstance(c, Mapping)) + self.assertIsInstance(c, dict) + self.assertIsInstance(c, Mapping) self.assertTrue(issubclass(Counter, dict)) self.assertTrue(issubclass(Counter, Mapping)) self.assertEqual(len(c), 3) Modified: python/branches/py3k/Lib/test/test_compile.py ============================================================================== --- python/branches/py3k/Lib/test/test_compile.py (original) +++ python/branches/py3k/Lib/test/test_compile.py Sun Jan 24 20:26:24 2010 @@ -192,8 +192,8 @@ self.fail("How many bits *does* this machine have???") # Verify treatment of contant folding on -(sys.maxsize+1) # i.e. -2147483648 on 32 bit platforms. Should return int, not long. - self.assertTrue(isinstance(eval("%s" % (-sys.maxsize - 1)), int)) - self.assertTrue(isinstance(eval("%s" % (-sys.maxsize - 2)), int)) + self.assertIsInstance(eval("%s" % (-sys.maxsize - 1)), int) + self.assertIsInstance(eval("%s" % (-sys.maxsize - 2)), int) if sys.maxsize == 9223372036854775807: def test_32_63_bit_values(self): @@ -208,7 +208,7 @@ for variable in self.test_32_63_bit_values.__code__.co_consts: if variable is not None: - self.assertTrue(isinstance(variable, int)) + self.assertIsInstance(variable, int) def test_sequence_unpacking_error(self): # Verify sequence packing/unpacking with "or". SF bug #757818 Modified: python/branches/py3k/Lib/test/test_datetime.py ============================================================================== --- python/branches/py3k/Lib/test/test_datetime.py (original) +++ python/branches/py3k/Lib/test/test_datetime.py Sun Jan 24 20:26:24 2010 @@ -79,7 +79,7 @@ self.__name = name self.assertTrue(issubclass(NotEnough, tzinfo)) ne = NotEnough(3, "NotByALongShot") - self.assertTrue(isinstance(ne, tzinfo)) + self.assertIsInstance(ne, tzinfo) dt = datetime.now() self.assertRaises(NotImplementedError, ne.tzname, dt) @@ -88,7 +88,7 @@ def test_normal(self): fo = FixedOffset(3, "Three") - self.assertTrue(isinstance(fo, tzinfo)) + self.assertIsInstance(fo, tzinfo) for dt in datetime.now(), None: self.assertEqual(fo.utcoffset(dt), timedelta(minutes=3)) self.assertEqual(fo.tzname(dt), "Three") @@ -109,14 +109,14 @@ # Make sure we can pickle/unpickle an instance of a subclass. offset = timedelta(minutes=-300) orig = PicklableFixedOffset(offset, 'cookie') - self.assertTrue(isinstance(orig, tzinfo)) + self.assertIsInstance(orig, tzinfo) self.assertTrue(type(orig) is PicklableFixedOffset) self.assertEqual(orig.utcoffset(None), offset) self.assertEqual(orig.tzname(None), 'cookie') for pickler, unpickler, proto in pickle_choices: green = pickler.dumps(orig, proto) derived = unpickler.loads(green) - self.assertTrue(isinstance(derived, tzinfo)) + self.assertIsInstance(derived, tzinfo) self.assertTrue(type(derived) is PicklableFixedOffset) self.assertEqual(derived.utcoffset(None), offset) self.assertEqual(derived.tzname(None), 'cookie') @@ -382,9 +382,9 @@ self.assertEqual(td, td2) def test_resolution_info(self): - self.assertTrue(isinstance(timedelta.min, timedelta)) - self.assertTrue(isinstance(timedelta.max, timedelta)) - self.assertTrue(isinstance(timedelta.resolution, timedelta)) + self.assertIsInstance(timedelta.min, timedelta) + self.assertIsInstance(timedelta.max, timedelta) + self.assertIsInstance(timedelta.resolution, timedelta) self.assertTrue(timedelta.max > timedelta.min) self.assertEqual(timedelta.min, timedelta(-999999999)) self.assertEqual(timedelta.max, timedelta(999999999, 24*3600-1, 1e6-1)) @@ -895,9 +895,9 @@ self.assertEqual(b.__format__(fmt), 'B') def test_resolution_info(self): - self.assertTrue(isinstance(self.theclass.min, self.theclass)) - self.assertTrue(isinstance(self.theclass.max, self.theclass)) - self.assertTrue(isinstance(self.theclass.resolution, timedelta)) + self.assertIsInstance(self.theclass.min, self.theclass) + self.assertIsInstance(self.theclass.max, self.theclass) + self.assertIsInstance(self.theclass.resolution, timedelta) self.assertTrue(self.theclass.max > self.theclass.min) def test_extreme_timedelta(self): @@ -1881,9 +1881,9 @@ "%s(23, 15)" % name) def test_resolution_info(self): - self.assertTrue(isinstance(self.theclass.min, self.theclass)) - self.assertTrue(isinstance(self.theclass.max, self.theclass)) - self.assertTrue(isinstance(self.theclass.resolution, timedelta)) + self.assertIsInstance(self.theclass.min, self.theclass) + self.assertIsInstance(self.theclass.max, self.theclass) + self.assertIsInstance(self.theclass.resolution, timedelta) self.assertTrue(self.theclass.max > self.theclass.min) def test_pickling(self): @@ -2251,7 +2251,7 @@ green = pickler.dumps(orig, proto) derived = unpickler.loads(green) self.assertEqual(orig, derived) - self.assertTrue(isinstance(derived.tzinfo, PicklableFixedOffset)) + self.assertIsInstance(derived.tzinfo, PicklableFixedOffset) self.assertEqual(derived.utcoffset(), timedelta(minutes=-300)) self.assertEqual(derived.tzname(), 'cookie') @@ -2478,8 +2478,7 @@ green = pickler.dumps(orig, proto) derived = unpickler.loads(green) self.assertEqual(orig, derived) - self.assertTrue(isinstance(derived.tzinfo, - PicklableFixedOffset)) + self.assertIsInstance(derived.tzinfo, PicklableFixedOffset) self.assertEqual(derived.utcoffset(), timedelta(minutes=-300)) self.assertEqual(derived.tzname(), 'cookie') Modified: python/branches/py3k/Lib/test/test_decimal.py ============================================================================== --- python/branches/py3k/Lib/test/test_decimal.py (original) +++ python/branches/py3k/Lib/test/test_decimal.py Sun Jan 24 20:26:24 2010 @@ -515,7 +515,7 @@ # from int d = nc.create_decimal(456) - self.assertTrue(isinstance(d, Decimal)) + self.assertIsInstance(d, Decimal) self.assertEqual(nc.create_decimal(45678), nc.create_decimal('457E+2')) @@ -1579,8 +1579,8 @@ def test_abc(self): self.assertTrue(issubclass(Decimal, numbers.Number)) self.assertTrue(not issubclass(Decimal, numbers.Real)) - self.assertTrue(isinstance(Decimal(0), numbers.Number)) - self.assertTrue(not isinstance(Decimal(0), numbers.Real)) + self.assertIsInstance(Decimal(0), numbers.Number) + self.assertNotIsInstance(Decimal(0), numbers.Real) def test_pickle(self): d = Decimal('-3.141590000') Modified: python/branches/py3k/Lib/test/test_descr.py ============================================================================== --- python/branches/py3k/Lib/test/test_descr.py (original) +++ python/branches/py3k/Lib/test/test_descr.py Sun Jan 24 20:26:24 2010 @@ -384,11 +384,11 @@ def test_python_dicts(self): # Testing Python subclass of dict... self.assertTrue(issubclass(dict, dict)) - self.assertTrue(isinstance({}, dict)) + self.assertIsInstance({}, dict) d = dict() self.assertEqual(d, {}) self.assertTrue(d.__class__ is dict) - self.assertTrue(isinstance(d, dict)) + self.assertIsInstance(d, dict) class C(dict): state = -1 def __init__(self_local, *a, **kw): @@ -401,7 +401,7 @@ def __getitem__(self, key): return self.get(key, 0) def __setitem__(self_local, key, value): - self.assertTrue(isinstance(key, type(0))) + self.assertIsInstance(key, type(0)) dict.__setitem__(self_local, key, value) def setstate(self, state): self.state = state @@ -1095,7 +1095,7 @@ MyABC.register(Unrelated) u = Unrelated() - self.assertTrue(isinstance(u, MyABC)) + self.assertIsInstance(u, MyABC) # This used to crash self.assertRaises(TypeError, MyABC.a.__set__, u, 3) @@ -1781,7 +1781,7 @@ self.assertFalse(hasattr(a, "x")) raw = C.__dict__['x'] - self.assertTrue(isinstance(raw, property)) + self.assertIsInstance(raw, property) attrs = dir(raw) self.assertIn("__doc__", attrs) @@ -3407,10 +3407,10 @@ d = D(None) self.assertEqual(d.foo, None) d = C(1) - self.assertEqual(isinstance(d, D), True) + self.assertIsInstance(d, D) self.assertEqual(d.foo, 1) d = D(1) - self.assertEqual(isinstance(d, D), True) + self.assertIsInstance(d, D) self.assertEqual(d.foo, 1) def test_imul_bug(self): @@ -3902,29 +3902,29 @@ pass a = C() pa = Proxy(a) - self.assertTrue(isinstance(a, C)) # Baseline - self.assertTrue(isinstance(pa, C)) # Test + self.assertIsInstance(a, C) # Baseline + self.assertIsInstance(pa, C) # Test # Test with a classic subclass class D(C): pass a = D() pa = Proxy(a) - self.assertTrue(isinstance(a, C)) # Baseline - self.assertTrue(isinstance(pa, C)) # Test + self.assertIsInstance(a, C) # Baseline + self.assertIsInstance(pa, C) # Test # Test with a new-style class class C(object): pass a = C() pa = Proxy(a) - self.assertTrue(isinstance(a, C)) # Baseline - self.assertTrue(isinstance(pa, C)) # Test + self.assertIsInstance(a, C) # Baseline + self.assertIsInstance(pa, C) # Test # Test with a new-style subclass class D(C): pass a = D() pa = Proxy(a) - self.assertTrue(isinstance(a, C)) # Baseline - self.assertTrue(isinstance(pa, C)) # Test + self.assertIsInstance(a, C) # Baseline + self.assertIsInstance(pa, C) # Test def test_proxy_super(self): # Testing super() for a proxy object... Modified: python/branches/py3k/Lib/test/test_dict.py ============================================================================== --- python/branches/py3k/Lib/test/test_dict.py (original) +++ python/branches/py3k/Lib/test/test_dict.py Sun Jan 24 20:26:24 2010 @@ -216,7 +216,7 @@ return collections.UserDict() ud = mydict.fromkeys('ab') self.assertEqual(ud, {'a':None, 'b':None}) - self.assertTrue(isinstance(ud, collections.UserDict)) + self.assertIsInstance(ud, collections.UserDict) self.assertRaises(TypeError, dict.fromkeys) class Exc(Exception): pass Modified: python/branches/py3k/Lib/test/test_dummy_thread.py ============================================================================== --- python/branches/py3k/Lib/test/test_dummy_thread.py (original) +++ python/branches/py3k/Lib/test/test_dummy_thread.py Sun Jan 24 20:26:24 2010 @@ -92,16 +92,16 @@ def test_ident(self): #Test sanity of _thread.get_ident() - self.assertTrue(isinstance(_thread.get_ident(), int), - "_thread.get_ident() returned a non-integer") + self.assertIsInstance(_thread.get_ident(), int, + "_thread.get_ident() returned a non-integer") self.assertTrue(_thread.get_ident() != 0, "_thread.get_ident() returned 0") def test_LockType(self): #Make sure _thread.LockType is the same type as _thread.allocate_locke() - self.assertTrue(isinstance(_thread.allocate_lock(), _thread.LockType), - "_thread.LockType is not an instance of what is " - "returned by _thread.allocate_lock()") + self.assertIsInstance(_thread.allocate_lock(), _thread.LockType, + "_thread.LockType is not an instance of what " + "is returned by _thread.allocate_lock()") def test_interrupt_main(self): #Calling start_new_thread with a function that executes interrupt_main Modified: python/branches/py3k/Lib/test/test_exceptions.py ============================================================================== --- python/branches/py3k/Lib/test/test_exceptions.py (original) +++ python/branches/py3k/Lib/test/test_exceptions.py Sun Jan 24 20:26:24 2010 @@ -319,18 +319,18 @@ tb = sys.exc_info()[2] e = BaseException().with_traceback(tb) - self.assertTrue(isinstance(e, BaseException)) + self.assertIsInstance(e, BaseException) self.assertEqual(e.__traceback__, tb) e = IndexError(5).with_traceback(tb) - self.assertTrue(isinstance(e, IndexError)) + self.assertIsInstance(e, IndexError) self.assertEqual(e.__traceback__, tb) class MyException(Exception): pass e = MyException().with_traceback(tb) - self.assertTrue(isinstance(e, MyException)) + self.assertIsInstance(e, MyException) self.assertEqual(e.__traceback__, tb) def testInvalidTraceback(self): Modified: python/branches/py3k/Lib/test/test_ftplib.py ============================================================================== --- python/branches/py3k/Lib/test/test_ftplib.py (original) +++ python/branches/py3k/Lib/test/test_ftplib.py Sun Jan 24 20:26:24 2010 @@ -592,36 +592,36 @@ self.server.stop() def test_control_connection(self): - self.assertFalse(isinstance(self.client.sock, ssl.SSLSocket)) + self.assertNotIsInstance(self.client.sock, ssl.SSLSocket) self.client.auth() - self.assertTrue(isinstance(self.client.sock, ssl.SSLSocket)) + self.assertIsInstance(self.client.sock, ssl.SSLSocket) def test_data_connection(self): # clear text sock = self.client.transfercmd('list') - self.assertFalse(isinstance(sock, ssl.SSLSocket)) + self.assertNotIsInstance(sock, ssl.SSLSocket) sock.close() self.client.voidresp() # secured, after PROT P self.client.prot_p() sock = self.client.transfercmd('list') - self.assertTrue(isinstance(sock, ssl.SSLSocket)) + self.assertIsInstance(sock, ssl.SSLSocket) sock.close() self.client.voidresp() # PROT C is issued, the connection must be in cleartext again self.client.prot_c() sock = self.client.transfercmd('list') - self.assertFalse(isinstance(sock, ssl.SSLSocket)) + self.assertNotIsInstance(sock, ssl.SSLSocket) sock.close() self.client.voidresp() def test_login(self): # login() is supposed to implicitly secure the control connection - self.assertFalse(isinstance(self.client.sock, ssl.SSLSocket)) + self.assertNotIsInstance(self.client.sock, ssl.SSLSocket) self.client.login() - self.assertTrue(isinstance(self.client.sock, ssl.SSLSocket)) + self.assertIsInstance(self.client.sock, ssl.SSLSocket) # make sure that AUTH TLS doesn't get issued again self.client.login() Modified: python/branches/py3k/Lib/test/test_funcattrs.py ============================================================================== --- python/branches/py3k/Lib/test/test_funcattrs.py (original) +++ python/branches/py3k/Lib/test/test_funcattrs.py Sun Jan 24 20:26:24 2010 @@ -64,7 +64,7 @@ a = 12 def f(): print(a) c = f.__closure__ - self.assertTrue(isinstance(c, tuple)) + self.assertIsInstance(c, tuple) self.assertEqual(len(c), 1) # don't have a type object handy self.assertEqual(c[0].__class__.__name__, "cell") Modified: python/branches/py3k/Lib/test/test_future.py ============================================================================== --- python/branches/py3k/Lib/test/test_future.py (original) +++ python/branches/py3k/Lib/test/test_future.py Sun Jan 24 20:26:24 2010 @@ -109,7 +109,7 @@ def test_unicode_literals_exec(self): scope = {} exec("from __future__ import unicode_literals; x = ''", {}, scope) - self.assertTrue(isinstance(scope["x"], str)) + self.assertIsInstance(scope["x"], str) def test_main(): Modified: python/branches/py3k/Lib/test/test_future5.py ============================================================================== --- python/branches/py3k/Lib/test/test_future5.py (original) +++ python/branches/py3k/Lib/test/test_future5.py Sun Jan 24 20:26:24 2010 @@ -9,7 +9,7 @@ class TestMultipleFeatures(unittest.TestCase): def test_unicode_literals(self): - self.assertTrue(isinstance("", str)) + self.assertIsInstance("", str) def test_print_function(self): with support.captured_output("stderr") as s: Modified: python/branches/py3k/Lib/test/test_grp.py ============================================================================== --- python/branches/py3k/Lib/test/test_grp.py (original) +++ python/branches/py3k/Lib/test/test_grp.py Sun Jan 24 20:26:24 2010 @@ -12,13 +12,13 @@ # attributes promised by the docs self.assertEqual(len(value), 4) self.assertEqual(value[0], value.gr_name) - self.assertTrue(isinstance(value.gr_name, str)) + self.assertIsInstance(value.gr_name, str) self.assertEqual(value[1], value.gr_passwd) - self.assertTrue(isinstance(value.gr_passwd, str)) + self.assertIsInstance(value.gr_passwd, str) self.assertEqual(value[2], value.gr_gid) - self.assertTrue(isinstance(value.gr_gid, int)) + self.assertIsInstance(value.gr_gid, int) self.assertEqual(value[3], value.gr_mem) - self.assertTrue(isinstance(value.gr_mem, list)) + self.assertIsInstance(value.gr_mem, list) def test_values(self): entries = grp.getgrall() Modified: python/branches/py3k/Lib/test/test_hash.py ============================================================================== --- python/branches/py3k/Lib/test/test_hash.py (original) +++ python/branches/py3k/Lib/test/test_hash.py Sun Jan 24 20:26:24 2010 @@ -91,11 +91,11 @@ objects = (self.default_expected + self.fixed_expected) for obj in objects: - self.assertTrue(isinstance(obj, Hashable), repr(obj)) + self.assertIsInstance(obj, Hashable) def test_not_hashable(self): for obj in self.error_expected: - self.assertFalse(isinstance(obj, Hashable), repr(obj)) + self.assertNotIsInstance(obj, Hashable) # Issue #4701: Check that some builtin types are correctly hashable Modified: python/branches/py3k/Lib/test/test_int.py ============================================================================== --- python/branches/py3k/Lib/test/test_int.py (original) +++ python/branches/py3k/Lib/test/test_int.py Sun Jan 24 20:26:24 2010 @@ -53,15 +53,15 @@ s = repr(-1-sys.maxsize) x = int(s) self.assertEqual(x+1, -sys.maxsize) - self.assertTrue(isinstance(x, int)) - # should return long + self.assertIsInstance(x, int) + # should return int self.assertEqual(int(s[1:]), sys.maxsize+1) - # should return long + # should return int x = int(1e100) - self.assertTrue(isinstance(x, int)) + self.assertIsInstance(x, int) x = int(-1e100) - self.assertTrue(isinstance(x, int)) + self.assertIsInstance(x, int) # SF bug 434186: 0x80000000/2 != 0x80000000>>1. @@ -79,7 +79,8 @@ self.assertRaises(ValueError, int, '123\x00 245', 20) x = int('1' * 600) - self.assertTrue(isinstance(x, int)) + self.assertIsInstance(x, int) + self.assertRaises(TypeError, int, 1, 12) Modified: python/branches/py3k/Lib/test/test_io.py ============================================================================== --- python/branches/py3k/Lib/test/test_io.py (original) +++ python/branches/py3k/Lib/test/test_io.py Sun Jan 24 20:26:24 2010 @@ -2351,27 +2351,27 @@ def test_abcs(self): # Test the visible base classes are ABCs. - self.assertTrue(isinstance(self.IOBase, abc.ABCMeta)) - self.assertTrue(isinstance(self.RawIOBase, abc.ABCMeta)) - self.assertTrue(isinstance(self.BufferedIOBase, abc.ABCMeta)) - self.assertTrue(isinstance(self.TextIOBase, abc.ABCMeta)) + self.assertIsInstance(self.IOBase, abc.ABCMeta) + self.assertIsInstance(self.RawIOBase, abc.ABCMeta) + self.assertIsInstance(self.BufferedIOBase, abc.ABCMeta) + self.assertIsInstance(self.TextIOBase, abc.ABCMeta) def _check_abc_inheritance(self, abcmodule): with self.open(support.TESTFN, "wb", buffering=0) as f: - self.assertTrue(isinstance(f, abcmodule.IOBase)) - self.assertTrue(isinstance(f, abcmodule.RawIOBase)) - self.assertFalse(isinstance(f, abcmodule.BufferedIOBase)) - self.assertFalse(isinstance(f, abcmodule.TextIOBase)) + self.assertIsInstance(f, abcmodule.IOBase) + self.assertIsInstance(f, abcmodule.RawIOBase) + self.assertNotIsInstance(f, abcmodule.BufferedIOBase) + self.assertNotIsInstance(f, abcmodule.TextIOBase) with self.open(support.TESTFN, "wb") as f: - self.assertTrue(isinstance(f, abcmodule.IOBase)) - self.assertFalse(isinstance(f, abcmodule.RawIOBase)) - self.assertTrue(isinstance(f, abcmodule.BufferedIOBase)) - self.assertFalse(isinstance(f, abcmodule.TextIOBase)) + self.assertIsInstance(f, abcmodule.IOBase) + self.assertNotIsInstance(f, abcmodule.RawIOBase) + self.assertIsInstance(f, abcmodule.BufferedIOBase) + self.assertNotIsInstance(f, abcmodule.TextIOBase) with self.open(support.TESTFN, "w") as f: - self.assertTrue(isinstance(f, abcmodule.IOBase)) - self.assertFalse(isinstance(f, abcmodule.RawIOBase)) - self.assertFalse(isinstance(f, abcmodule.BufferedIOBase)) - self.assertTrue(isinstance(f, abcmodule.TextIOBase)) + self.assertIsInstance(f, abcmodule.IOBase) + self.assertNotIsInstance(f, abcmodule.RawIOBase) + self.assertNotIsInstance(f, abcmodule.BufferedIOBase) + self.assertIsInstance(f, abcmodule.TextIOBase) def test_abc_inheritance(self): # Test implementations inherit from their respective ABCs Modified: python/branches/py3k/Lib/test/test_mailbox.py ============================================================================== --- python/branches/py3k/Lib/test/test_mailbox.py (original) +++ python/branches/py3k/Lib/test/test_mailbox.py Sun Jan 24 20:26:24 2010 @@ -21,16 +21,16 @@ def _check_sample(self, msg): # Inspect a mailbox.Message representation of the sample message - self.assertTrue(isinstance(msg, email.message.Message)) - self.assertTrue(isinstance(msg, mailbox.Message)) + self.assertIsInstance(msg, email.message.Message) + self.assertIsInstance(msg, mailbox.Message) for key, value in _sample_headers.items(): self.assertIn(value, msg.get_all(key)) self.assertTrue(msg.is_multipart()) self.assertEqual(len(msg.get_payload()), len(_sample_payloads)) for i, payload in enumerate(_sample_payloads): part = msg.get_payload(i) - self.assertTrue(isinstance(part, email.message.Message)) - self.assertFalse(isinstance(part, mailbox.Message)) + self.assertIsInstance(part, email.message.Message) + self.assertNotIsInstance(part, mailbox.Message) self.assertEqual(part.get_payload(), payload) def _delete_recursively(self, target): @@ -149,7 +149,7 @@ key0 = self._box.add(self._template % 0) key1 = self._box.add(_sample_message) msg0 = self._box.get_message(key0) - self.assertTrue(isinstance(msg0, mailbox.Message)) + self.assertIsInstance(msg0, mailbox.Message) self.assertEqual(msg0['from'], 'foo') self.assertEqual(msg0.get_payload(), '0') self._check_sample(self._box.get_message(key1)) @@ -476,7 +476,7 @@ msg.set_flags('RF') key = self._box.add(msg) msg_returned = self._box.get_message(key) - self.assertTrue(isinstance(msg_returned, mailbox.MaildirMessage)) + self.assertIsInstance(msg_returned, mailbox.MaildirMessage) self.assertEqual(msg_returned.get_subdir(), 'cur') self.assertEqual(msg_returned.get_flags(), 'FR') @@ -516,7 +516,7 @@ box = mailbox.Maildir(self._path, factory=FakeMessage) box.colon = self._box.colon msg2 = box.get_message(key) - self.assertTrue(isinstance(msg2, FakeMessage)) + self.assertIsInstance(msg2, FakeMessage) def test_initialize_new(self): # Initialize a non-existent mailbox @@ -1082,9 +1082,9 @@ # Initialize without arguments msg = self._factory() self._post_initialize_hook(msg) - self.assertTrue(isinstance(msg, email.message.Message)) - self.assertTrue(isinstance(msg, mailbox.Message)) - self.assertTrue(isinstance(msg, self._factory)) + self.assertIsInstance(msg, email.message.Message) + self.assertIsInstance(msg, mailbox.Message) + self.assertIsInstance(msg, self._factory) self.assertEqual(msg.keys(), []) self.assertFalse(msg.is_multipart()) self.assertEqual(msg.get_payload(), None) Modified: python/branches/py3k/Lib/test/test_memoryio.py ============================================================================== --- python/branches/py3k/Lib/test/test_memoryio.py (original) +++ python/branches/py3k/Lib/test/test_memoryio.py Sun Jan 24 20:26:24 2010 @@ -623,7 +623,7 @@ state = memio.__getstate__() self.assertEqual(len(state), 3) bytearray(state[0]) # Check if state[0] supports the buffer interface. - self.assert_(isinstance(state[1], int)) + self.assertIsInstance(state[1], int) self.assert_(isinstance(state[2], dict) or state[2] is None) memio.close() self.assertRaises(ValueError, memio.__getstate__) @@ -667,9 +667,9 @@ memio = self.ioclass() state = memio.__getstate__() self.assertEqual(len(state), 4) - self.assert_(isinstance(state[0], str)) - self.assert_(isinstance(state[1], str)) - self.assert_(isinstance(state[2], int)) + self.assertIsInstance(state[0], str) + self.assertIsInstance(state[1], str) + self.assertIsInstance(state[2], int) self.assert_(isinstance(state[3], dict) or state[3] is None) memio.close() self.assertRaises(ValueError, memio.__getstate__) Modified: python/branches/py3k/Lib/test/test_memoryview.py ============================================================================== --- python/branches/py3k/Lib/test/test_memoryview.py (original) +++ python/branches/py3k/Lib/test/test_memoryview.py Sun Jan 24 20:26:24 2010 @@ -28,7 +28,7 @@ oldrefcount = sys.getrefcount(b) m = self._view(b) self.assertEquals(m[0], item(b"a")) - self.assertTrue(isinstance(m[0], bytes), type(m[0])) + self.assertIsInstance(m[0], bytes) self.assertEquals(m[5], item(b"f")) self.assertEquals(m[-1], item(b"f")) self.assertEquals(m[-6], item(b"a")) @@ -119,7 +119,7 @@ expected = b"".join( self.getitem_type(bytes([c])) for c in b"abcdef") self.assertEquals(b, expected) - self.assertTrue(isinstance(b, bytes), type(b)) + self.assertIsInstance(b, bytes) def test_tolist(self): for tp in self._types: Modified: python/branches/py3k/Lib/test/test_multiprocessing.py ============================================================================== --- python/branches/py3k/Lib/test/test_multiprocessing.py (original) +++ python/branches/py3k/Lib/test/test_multiprocessing.py Sun Jan 24 20:26:24 2010 @@ -133,7 +133,7 @@ self.assertTrue(current.is_alive()) self.assertTrue(not current.daemon) - self.assertTrue(isinstance(authkey, bytes)) + self.assertIsInstance(authkey, bytes) self.assertTrue(len(authkey) > 0) self.assertEqual(current.ident, os.getpid()) self.assertEqual(current.exitcode, None) Modified: python/branches/py3k/Lib/test/test_ntpath.py ============================================================================== --- python/branches/py3k/Lib/test/test_ntpath.py (original) +++ python/branches/py3k/Lib/test/test_ntpath.py Sun Jan 24 20:26:24 2010 @@ -174,6 +174,7 @@ tester("ntpath.normpath('C:////a/b')", r'C:\a\b') tester("ntpath.normpath('//machine/share//a/b')", r'\\machine\share\a\b') + def test_expandvars(self): with support.EnvironmentVarGuard() as env: env.clear() Modified: python/branches/py3k/Lib/test/test_opcodes.py ============================================================================== --- python/branches/py3k/Lib/test/test_opcodes.py (original) +++ python/branches/py3k/Lib/test/test_opcodes.py Sun Jan 24 20:26:24 2010 @@ -60,7 +60,7 @@ try: raise DClass(a) except DClass as v: - self.assertTrue(isinstance(v, DClass)) + self.assertIsInstance(v, DClass) else: self.fail("no exception") Modified: python/branches/py3k/Lib/test/test_optparse.py ============================================================================== --- python/branches/py3k/Lib/test/test_optparse.py (original) +++ python/branches/py3k/Lib/test/test_optparse.py Sun Jan 24 20:26:24 2010 @@ -338,7 +338,7 @@ def test_get_option(self): opt1 = self.parser.get_option("-v") - self.assertTrue(isinstance(opt1, Option)) + self.assertIsInstance(opt1, Option) self.assertEqual(opt1._short_opts, ["-v", "-n"]) self.assertEqual(opt1._long_opts, ["--verbose", "--noisy"]) self.assertEqual(opt1.action, "store_true") Modified: python/branches/py3k/Lib/test/test_parser.py ============================================================================== --- python/branches/py3k/Lib/test/test_parser.py (original) +++ python/branches/py3k/Lib/test/test_parser.py Sun Jan 24 20:26:24 2010 @@ -34,7 +34,7 @@ code = suite.compile() scope = {} exec(code, {}, scope) - self.assertTrue(isinstance(scope["x"], str)) + self.assertIsInstance(scope["x"], str) def check_suite(self, s): self.roundtrip(parser.suite, s) Modified: python/branches/py3k/Lib/test/test_posix.py ============================================================================== --- python/branches/py3k/Lib/test/test_posix.py (original) +++ python/branches/py3k/Lib/test/test_posix.py Sun Jan 24 20:26:24 2010 @@ -132,7 +132,7 @@ fp = open(support.TESTFN) try: fd = posix.dup(fp.fileno()) - self.assertTrue(isinstance(fd, int)) + self.assertIsInstance(fd, int) os.close(fd) finally: fp.close() @@ -260,7 +260,7 @@ def test_umask(self): if hasattr(posix, 'umask'): old_mask = posix.umask(0) - self.assertTrue(isinstance(old_mask, int)) + self.assertIsInstance(old_mask, int) posix.umask(old_mask) def test_strerror(self): Modified: python/branches/py3k/Lib/test/test_posixpath.py ============================================================================== --- python/branches/py3k/Lib/test/test_posixpath.py (original) +++ python/branches/py3k/Lib/test/test_posixpath.py Sun Jan 24 20:26:24 2010 @@ -402,8 +402,8 @@ except ImportError: pass else: - self.assertTrue(isinstance(posixpath.expanduser("~/"), str)) - self.assertTrue(isinstance(posixpath.expanduser(b"~/"), bytes)) + self.assertIsInstance(posixpath.expanduser("~/"), str) + self.assertIsInstance(posixpath.expanduser(b"~/"), bytes) # if home directory == root directory, this test makes no sense if posixpath.expanduser("~") != '/': self.assertEqual( @@ -414,10 +414,10 @@ posixpath.expanduser(b"~") + b"/", posixpath.expanduser(b"~/") ) - self.assertTrue(isinstance(posixpath.expanduser("~root/"), str)) - self.assertTrue(isinstance(posixpath.expanduser("~foo/"), str)) - self.assertTrue(isinstance(posixpath.expanduser(b"~root/"), bytes)) - self.assertTrue(isinstance(posixpath.expanduser(b"~foo/"), bytes)) + self.assertIsInstance(posixpath.expanduser("~root/"), str) + self.assertIsInstance(posixpath.expanduser("~foo/"), str) + self.assertIsInstance(posixpath.expanduser(b"~root/"), bytes) + self.assertIsInstance(posixpath.expanduser(b"~foo/"), bytes) with support.EnvironmentVarGuard() as env: env['HOME'] = '/' Modified: python/branches/py3k/Lib/test/test_pwd.py ============================================================================== --- python/branches/py3k/Lib/test/test_pwd.py (original) +++ python/branches/py3k/Lib/test/test_pwd.py Sun Jan 24 20:26:24 2010 @@ -13,19 +13,19 @@ for e in entries: self.assertEqual(len(e), 7) self.assertEqual(e[0], e.pw_name) - self.assertTrue(isinstance(e.pw_name, str)) + self.assertIsInstance(e.pw_name, str) self.assertEqual(e[1], e.pw_passwd) - self.assertTrue(isinstance(e.pw_passwd, str)) + self.assertIsInstance(e.pw_passwd, str) self.assertEqual(e[2], e.pw_uid) - self.assertTrue(isinstance(e.pw_uid, int)) + self.assertIsInstance(e.pw_uid, int) self.assertEqual(e[3], e.pw_gid) - self.assertTrue(isinstance(e.pw_gid, int)) + self.assertIsInstance(e.pw_gid, int) self.assertEqual(e[4], e.pw_gecos) - self.assertTrue(isinstance(e.pw_gecos, str)) + self.assertIsInstance(e.pw_gecos, str) self.assertEqual(e[5], e.pw_dir) - self.assertTrue(isinstance(e.pw_dir, str)) + self.assertIsInstance(e.pw_dir, str) self.assertEqual(e[6], e.pw_shell) - self.assertTrue(isinstance(e.pw_shell, str)) + self.assertIsInstance(e.pw_shell, str) # The following won't work, because of duplicate entries # for one uid Modified: python/branches/py3k/Lib/test/test_pyclbr.py ============================================================================== --- python/branches/py3k/Lib/test/test_pyclbr.py (original) +++ python/branches/py3k/Lib/test/test_pyclbr.py Sun Jan 24 20:26:24 2010 @@ -84,12 +84,12 @@ self.assertHasattr(module, name, ignore) py_item = getattr(module, name) if isinstance(value, pyclbr.Function): - self.assertTrue(isinstance(py_item, (FunctionType, BuiltinFunctionType))) + self.assertIsInstance(py_item, (FunctionType, BuiltinFunctionType)) if py_item.__module__ != moduleName: continue # skip functions that came from somewhere else self.assertEquals(py_item.__module__, value.module) else: - self.assertTrue(isinstance(py_item, type)) + self.assertIsInstance(py_item, type) if py_item.__module__ != moduleName: continue # skip classes that came from somewhere else Modified: python/branches/py3k/Lib/test/test_raise.py ============================================================================== --- python/branches/py3k/Lib/test/test_raise.py (original) +++ python/branches/py3k/Lib/test/test_raise.py Sun Jan 24 20:26:24 2010 @@ -135,7 +135,7 @@ try: raise IndexError from KeyError except IndexError as e: - self.assertTrue(isinstance(e.__cause__, KeyError)) + self.assertIsInstance(e.__cause__, KeyError) else: self.fail("No exception raised") @@ -166,7 +166,7 @@ try: raise IndexError() except IndexError as e: - self.assertTrue(isinstance(e.__traceback__, types.TracebackType)) + self.assertIsInstance(e.__traceback__, types.TracebackType) else: self.fail("No exception raised") @@ -203,7 +203,7 @@ raise OSError() except OSError as e: self.assertNotEqual(e.__context__, context) - self.assertTrue(isinstance(e.__context__, context)) + self.assertIsInstance(e.__context__, context) else: self.fail("No exception raised") @@ -216,7 +216,7 @@ raise OSError except OSError as e: self.assertNotEqual(e.__context__, context) - self.assertTrue(isinstance(e.__context__, context)) + self.assertIsInstance(e.__context__, context) else: self.fail("No exception raised") @@ -227,7 +227,7 @@ except: raise OSError except OSError as e: - self.assertTrue(isinstance(e.__context__, ZeroDivisionError)) + self.assertIsInstance(e.__context__, ZeroDivisionError) else: self.fail("No exception raised") @@ -238,7 +238,7 @@ except: xyzzy except NameError as e: - self.assertTrue(isinstance(e.__context__, ZeroDivisionError)) + self.assertIsInstance(e.__context__, ZeroDivisionError) else: self.fail("No exception raised") @@ -260,7 +260,7 @@ finally: raise OSError except OSError as e: - self.assertTrue(isinstance(e.__context__, ZeroDivisionError)) + self.assertIsInstance(e.__context__, ZeroDivisionError) else: self.fail("No exception raised") @@ -274,7 +274,7 @@ with ContextManager(): 1/0 except NameError as e: - self.assertTrue(isinstance(e.__context__, ZeroDivisionError)) + self.assertIsInstance(e.__context__, ZeroDivisionError) else: self.fail("No exception raised") @@ -320,7 +320,7 @@ del g raise KeyError except Exception as e: - self.assertTrue(isinstance(e.__context__, ValueError)) + self.assertIsInstance(e.__context__, ValueError) f() @@ -344,7 +344,7 @@ raise TypeError except Exception as e: self.assertNotEqual(e.__context__, None) - self.assertTrue(isinstance(e.__context__, AttributeError)) + self.assertIsInstance(e.__context__, AttributeError) with support.captured_output("stderr"): f() Modified: python/branches/py3k/Lib/test/test_sys.py ============================================================================== --- python/branches/py3k/Lib/test/test_sys.py (original) +++ python/branches/py3k/Lib/test/test_sys.py Sun Jan 24 20:26:24 2010 @@ -143,7 +143,7 @@ def test_getdefaultencoding(self): self.assertRaises(TypeError, sys.getdefaultencoding, 42) # can't check more than the type, as the user might have changed it - self.assertTrue(isinstance(sys.getdefaultencoding(), str)) + self.assertIsInstance(sys.getdefaultencoding(), str) # testing sys.settrace() is done in test_trace.py # testing sys.setprofile() is done in test_profile.py @@ -227,13 +227,13 @@ def test_getwindowsversion(self): if hasattr(sys, "getwindowsversion"): v = sys.getwindowsversion() - self.assertTrue(isinstance(v, tuple)) + self.assertIsInstance(v, tuple) self.assertEqual(len(v), 5) - self.assertTrue(isinstance(v[0], int)) - self.assertTrue(isinstance(v[1], int)) - self.assertTrue(isinstance(v[2], int)) - self.assertTrue(isinstance(v[3], int)) - self.assertTrue(isinstance(v[4], str)) + self.assertIsInstance(v[0], int) + self.assertIsInstance(v[1], int) + self.assertIsInstance(v[2], int) + self.assertIsInstance(v[3], int) + self.assertIsInstance(v[4], str) def test_call_tracing(self): self.assertRaises(TypeError, sys.call_tracing, type, 2) @@ -261,7 +261,7 @@ del n self.assertEqual(sys.getrefcount(None), c) if hasattr(sys, "gettotalrefcount"): - self.assertTrue(isinstance(sys.gettotalrefcount(), int)) + self.assertIsInstance(sys.gettotalrefcount(), int) def test_getframe(self): self.assertRaises(TypeError, sys._getframe, 42, 42) @@ -357,13 +357,13 @@ self.assertTrue(d[0] is sys._getframe()) def test_attributes(self): - self.assertTrue(isinstance(sys.api_version, int)) - self.assertTrue(isinstance(sys.argv, list)) + self.assertIsInstance(sys.api_version, int) + self.assertIsInstance(sys.argv, list) self.assertIn(sys.byteorder, ("little", "big")) - self.assertTrue(isinstance(sys.builtin_module_names, tuple)) - self.assertTrue(isinstance(sys.copyright, str)) - self.assertTrue(isinstance(sys.exec_prefix, str)) - self.assertTrue(isinstance(sys.executable, str)) + self.assertIsInstance(sys.builtin_module_names, tuple) + self.assertIsInstance(sys.copyright, str) + self.assertIsInstance(sys.exec_prefix, str) + self.assertIsInstance(sys.executable, str) self.assertEqual(len(sys.float_info), 11) self.assertEqual(sys.float_info.radix, 2) self.assertEqual(len(sys.int_info), 2) @@ -371,25 +371,25 @@ self.assertTrue(sys.int_info.sizeof_digit >= 1) self.assertEqual(type(sys.int_info.bits_per_digit), int) self.assertEqual(type(sys.int_info.sizeof_digit), int) - self.assertTrue(isinstance(sys.hexversion, int)) - self.assertTrue(isinstance(sys.maxsize, int)) - self.assertTrue(isinstance(sys.maxunicode, int)) - self.assertTrue(isinstance(sys.platform, str)) - self.assertTrue(isinstance(sys.prefix, str)) - self.assertTrue(isinstance(sys.version, str)) + self.assertIsInstance(sys.hexversion, int) + self.assertIsInstance(sys.maxsize, int) + self.assertIsInstance(sys.maxunicode, int) + self.assertIsInstance(sys.platform, str) + self.assertIsInstance(sys.prefix, str) + self.assertIsInstance(sys.version, str) vi = sys.version_info - self.assertTrue(isinstance(vi[:], tuple)) + self.assertIsInstance(vi[:], tuple) self.assertEqual(len(vi), 5) - self.assertTrue(isinstance(vi[0], int)) - self.assertTrue(isinstance(vi[1], int)) - self.assertTrue(isinstance(vi[2], int)) + self.assertIsInstance(vi[0], int) + self.assertIsInstance(vi[1], int) + self.assertIsInstance(vi[2], int) self.assertIn(vi[3], ("alpha", "beta", "candidate", "final")) - self.assertTrue(isinstance(vi[4], int)) - self.assertTrue(isinstance(vi.major, int)) - self.assertTrue(isinstance(vi.minor, int)) - self.assertTrue(isinstance(vi.micro, int)) + self.assertIsInstance(vi[4], int) + self.assertIsInstance(vi.major, int) + self.assertIsInstance(vi.minor, int) + self.assertIsInstance(vi.micro, int) self.assertIn(vi.releaselevel, ("alpha", "beta", "candidate", "final")) - self.assertTrue(isinstance(vi.serial, int)) + self.assertIsInstance(vi.serial, int) self.assertEqual(vi[0], vi.major) self.assertEqual(vi[1], vi.minor) self.assertEqual(vi[2], vi.micro) Modified: python/branches/py3k/Lib/test/test_tempfile.py ============================================================================== --- python/branches/py3k/Lib/test/test_tempfile.py (original) +++ python/branches/py3k/Lib/test/test_tempfile.py Sun Jan 24 20:26:24 2010 @@ -142,8 +142,7 @@ self.assertFalse(len(cand) == 0) for c in cand: - self.assertTrue(isinstance(c, str), - "%s is not a string" % c) + self.assertIsInstance(c, str) def test_wanted_dirs(self): # _candidate_tempdir_list contains the expected directories @@ -184,7 +183,7 @@ def test_retval(self): # _get_candidate_names returns a _RandomNameSequence object obj = tempfile._get_candidate_names() - self.assertTrue(isinstance(obj, tempfile._RandomNameSequence)) + self.assertIsInstance(obj, tempfile._RandomNameSequence) def test_same_thing(self): # _get_candidate_names always returns the same object @@ -326,7 +325,7 @@ # gettempprefix returns a nonempty prefix string p = tempfile.gettempprefix() - self.assertTrue(isinstance(p, str)) + self.assertIsInstance(p, str) self.assertTrue(len(p) > 0) def test_usable_template(self): Modified: python/branches/py3k/Lib/test/test_threading.py ============================================================================== --- python/branches/py3k/Lib/test/test_threading.py (original) +++ python/branches/py3k/Lib/test/test_threading.py Sun Jan 24 20:26:24 2010 @@ -154,8 +154,7 @@ # Wait for the thread to finish. mutex.acquire() self.assertIn(tid, threading._active) - self.assertTrue(isinstance(threading._active[tid], - threading._DummyThread)) + self.assertIsInstance(threading._active[tid], threading._DummyThread) del threading._active[tid] # PyThreadState_SetAsyncExc() is a CPython-only gimmick, not (currently) Modified: python/branches/py3k/Lib/test/test_types.py ============================================================================== --- python/branches/py3k/Lib/test/test_types.py (original) +++ python/branches/py3k/Lib/test/test_types.py Sun Jan 24 20:26:24 2010 @@ -149,12 +149,12 @@ (prod, type(prod))) x = sys.maxsize - self.assertTrue(isinstance(x + 1, int), - "(sys.maxsize + 1) should have returned int") - self.assertTrue(isinstance(-x - 1, int), - "(-sys.maxsize - 1) should have returned int") - self.assertTrue(isinstance(-x - 2, int), - "(-sys.maxsize - 2) should have returned int") + self.assertIsInstance(x + 1, int, + "(sys.maxsize + 1) should have returned int") + self.assertIsInstance(-x - 1, int, + "(-sys.maxsize - 1) should have returned int") + self.assertIsInstance(-x - 2, int, + "(-sys.maxsize - 2) should have returned int") try: 5 << -5 except ValueError: pass Modified: python/branches/py3k/Lib/test/test_unittest.py ============================================================================== --- python/branches/py3k/Lib/test/test_unittest.py (original) +++ python/branches/py3k/Lib/test/test_unittest.py Sun Jan 24 20:26:24 2010 @@ -186,7 +186,7 @@ self.assertFalse('runTest'.startswith(loader.testMethodPrefix)) suite = loader.loadTestsFromTestCase(Foo) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [Foo('runTest')]) ################################################################ @@ -205,7 +205,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromModule(m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) expected = [loader.suiteClass([MyTestCase('test')])] self.assertEqual(list(suite), expected) @@ -218,7 +218,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromModule(m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), []) # "This method searches `module` for classes derived from TestCase" @@ -232,7 +232,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromModule(m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [loader.suiteClass()]) @@ -468,7 +468,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromName('testcase_1', m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [MyTestCase('test')]) # "The specifier name is a ``dotted name'' that may resolve either to @@ -484,7 +484,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromName('testsuite', m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [MyTestCase('test')]) @@ -499,7 +499,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromName('testcase_1.test', m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [MyTestCase('test')]) @@ -538,7 +538,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromName('return_TestSuite', m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [testcase_1, testcase_2]) # "The specifier name is a ``dotted name'' that may resolve ... to @@ -552,7 +552,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromName('return_TestCase', m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [testcase_1]) # "The specifier name is a ``dotted name'' that may resolve ... to @@ -572,7 +572,7 @@ loader = unittest.TestLoader() loader.suiteClass = SubTestSuite suite = loader.loadTestsFromName('return_TestCase', m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [testcase_1]) # "The specifier name is a ``dotted name'' that may resolve ... to @@ -592,7 +592,7 @@ loader = unittest.TestLoader() loader.suiteClass=SubTestSuite suite = loader.loadTestsFromName('testcase_1.test', m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [MyTestCase('test')]) @@ -632,7 +632,7 @@ try: suite = loader.loadTestsFromName(module_name) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), []) # audioop should now be loaded, thanks to loadTestsFromName() @@ -655,7 +655,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromNames([]) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), []) # "Similar to loadTestsFromName(), but takes a sequence of names rather @@ -670,7 +670,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromNames([], unittest) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), []) # "The specifier name is a ``dotted name'' that may resolve either to @@ -871,7 +871,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromNames(['testcase_1'], m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) expected = loader.suiteClass([MyTestCase('test')]) self.assertEqual(list(suite), [expected]) @@ -887,7 +887,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromNames(['testsuite'], m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [m.testsuite]) @@ -902,7 +902,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromNames(['testcase_1.test'], m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) ref_suite = unittest.TestSuite([MyTestCase('test')]) self.assertEqual(list(suite), [ref_suite]) @@ -939,7 +939,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromNames(['return_TestSuite'], m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) expected = unittest.TestSuite([testcase_1, testcase_2]) self.assertEqual(list(suite), [expected]) @@ -955,7 +955,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromNames(['return_TestCase'], m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) ref_suite = unittest.TestSuite([testcase_1]) self.assertEqual(list(suite), [ref_suite]) @@ -979,7 +979,7 @@ loader = unittest.TestLoader() suite = loader.loadTestsFromNames(['Foo.foo'], m) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) ref_suite = unittest.TestSuite([testcase_1]) self.assertEqual(list(suite), [ref_suite]) @@ -1020,7 +1020,7 @@ try: suite = loader.loadTestsFromNames([module_name]) - self.assertTrue(isinstance(suite, loader.suiteClass)) + self.assertIsInstance(suite, loader.suiteClass) self.assertEqual(list(suite), [unittest.TestSuite()]) # audioop should now be loaded, thanks to loadTestsFromName() @@ -1808,7 +1808,7 @@ def test_id(self): test = unittest.FunctionTestCase(lambda: None) - self.assertTrue(isinstance(test.id(), str)) + self.assertIsInstance(test.id(), str) # "Returns a one-line description of the test, or None if no description # has been provided. The default implementation of this method returns @@ -1996,7 +1996,7 @@ test_case, formatted_exc = result.failures[0] self.assertTrue(test_case is test) - self.assertTrue(isinstance(formatted_exc, str)) + self.assertIsInstance(formatted_exc, str) # "addError(test, err)" # ... @@ -2046,7 +2046,7 @@ test_case, formatted_exc = result.errors[0] self.assertTrue(test_case is test) - self.assertTrue(isinstance(formatted_exc, str)) + self.assertIsInstance(formatted_exc, str) ### Support code for Test_TestCase ################################################################ @@ -2437,7 +2437,8 @@ def runTest(self): pass - self.assertTrue(isinstance(Foo().id(), str)) + self.assertIsInstance(Foo().id(), str) + # "If result is omitted or None, a temporary result object is created # and used, but is not made available to the caller. As TestCase owns the @@ -2859,7 +2860,7 @@ with ctx: Stub(v) e = ctx.exc_value - self.assertTrue(isinstance(e, ExceptionMock)) + self.assertIsInstance(e, ExceptionMock) self.assertEqual(e.args[0], v) def testSynonymAssertMethodNames(self): Modified: python/branches/py3k/Lib/test/test_urllib.py ============================================================================== --- python/branches/py3k/Lib/test/test_urllib.py (original) +++ python/branches/py3k/Lib/test/test_urllib.py Sun Jan 24 20:26:24 2010 @@ -85,8 +85,7 @@ def test_fileno(self): file_num = self.returned_obj.fileno() - self.assertTrue(isinstance(file_num, int), - "fileno() did not return an int") + self.assertIsInstance(file_num, int, "fileno() did not return an int") self.assertEqual(os.read(file_num, len(self.text)), self.text, "Reading on the file descriptor returned by fileno() " "did not return the expected text") @@ -97,7 +96,7 @@ self.returned_obj.close() def test_info(self): - self.assertTrue(isinstance(self.returned_obj.info(), email.message.Message)) + self.assertIsInstance(self.returned_obj.info(), email.message.Message) def test_geturl(self): self.assertEqual(self.returned_obj.geturl(), self.pathname) @@ -250,9 +249,9 @@ # a headers value is returned. result = urllib.request.urlretrieve("file:%s" % support.TESTFN) self.assertEqual(result[0], support.TESTFN) - self.assertTrue(isinstance(result[1], email.message.Message), - "did not get a email.message.Message instance as second " - "returned value") + self.assertIsInstance(result[1], email.message.Message, + "did not get a email.message.Message instance " + "as second returned value") def test_copy(self): # Test that setting the filename argument works. @@ -275,9 +274,9 @@ def test_reporthook(self): # Make sure that the reporthook works. def hooktester(count, block_size, total_size, count_holder=[0]): - self.assertTrue(isinstance(count, int)) - self.assertTrue(isinstance(block_size, int)) - self.assertTrue(isinstance(total_size, int)) + self.assertIsInstance(count, int) + self.assertIsInstance(block_size, int) + self.assertIsInstance(total_size, int) self.assertEqual(count, count_holder[0]) count_holder[0] = count_holder[0] + 1 second_temp = "%s.2" % support.TESTFN Modified: python/branches/py3k/Lib/test/test_urllib2.py ============================================================================== --- python/branches/py3k/Lib/test/test_urllib2.py (original) +++ python/branches/py3k/Lib/test/test_urllib2.py Sun Jan 24 20:26:24 2010 @@ -589,12 +589,12 @@ # *_request self.assertEqual((handler, name), calls[i]) self.assertEqual(len(args), 1) - self.assertTrue(isinstance(args[0], Request)) + self.assertIsInstance(args[0], Request) else: # *_response self.assertEqual((handler, name), calls[i]) self.assertEqual(len(args), 2) - self.assertTrue(isinstance(args[0], Request)) + self.assertIsInstance(args[0], Request) # response from opener.open is None, because there's no # handler that defines http_open to handle it self.assertTrue(args[1] is None or Modified: python/branches/py3k/Lib/test/test_urllib2_localnet.py ============================================================================== --- python/branches/py3k/Lib/test/test_urllib2_localnet.py (original) +++ python/branches/py3k/Lib/test/test_urllib2_localnet.py Sun Jan 24 20:26:24 2010 @@ -459,9 +459,9 @@ open_url = urllib.request.urlopen( "http://localhost:%s" % handler.port) info_obj = open_url.info() - self.assertTrue(isinstance(info_obj, email.message.Message), - "object returned by 'info' is not an instance of " - "email.message.Message") + self.assertIsInstance(info_obj, email.message.Message, + "object returned by 'info' is not an " + "instance of email.message.Message") self.assertEqual(info_obj.get_content_subtype(), "plain") finally: self.server.stop() Modified: python/branches/py3k/Lib/test/test_urllib2net.py ============================================================================== --- python/branches/py3k/Lib/test/test_urllib2net.py (original) +++ python/branches/py3k/Lib/test/test_urllib2net.py Sun Jan 24 20:26:24 2010 @@ -172,7 +172,7 @@ if expected_err: msg = ("Didn't get expected error(s) %s for %s %s, got %s: %s" % (expected_err, url, req, type(err), err)) - self.assertTrue(isinstance(err, expected_err), msg) + self.assertIsInstance(err, expected_err, msg) else: with support.time_out, \ support.socket_peer_reset, \ Modified: python/branches/py3k/Lib/test/test_urllibnet.py ============================================================================== --- python/branches/py3k/Lib/test/test_urllibnet.py (original) +++ python/branches/py3k/Lib/test/test_urllibnet.py Sun Jan 24 20:26:24 2010 @@ -73,10 +73,10 @@ # Test both readline and readlines. open_url = self.urlopen("http://www.python.org/") try: - self.assertTrue(isinstance(open_url.readline(), bytes), - "readline did not return bytes") - self.assertTrue(isinstance(open_url.readlines(), list), - "readlines did not return a list") + self.assertIsInstance(open_url.readline(), bytes, + "readline did not return a string") + self.assertIsInstance(open_url.readlines(), list, + "readlines did not return a list") finally: open_url.close() @@ -87,9 +87,9 @@ info_obj = open_url.info() finally: open_url.close() - self.assertTrue(isinstance(info_obj, email.message.Message), - "object returned by 'info' is not an instance of " - "email.message.Message") + self.assertIsInstance(info_obj, email.message.Message, + "object returned by 'info' is not an " + "instance of email.message.Message") self.assertEqual(info_obj.get_content_subtype(), "html") def test_geturl(self): @@ -177,8 +177,8 @@ # Make sure header returned as 2nd value from urlretrieve is good. file_location, header = self.urlretrieve("http://www.python.org/") os.unlink(file_location) - self.assertTrue(isinstance(header, email.message.Message), - "header is not an instance of email.message.Message") + self.assertIsInstance(header, email.message.Message, + "header is not an instance of email.message.Message") Modified: python/branches/py3k/Lib/test/test_userdict.py ============================================================================== --- python/branches/py3k/Lib/test/test_userdict.py (original) +++ python/branches/py3k/Lib/test/test_userdict.py Sun Jan 24 20:26:24 2010 @@ -39,8 +39,8 @@ self.assertEqual(collections.UserDict.fromkeys('one two'.split(), 1), d5) self.assertEqual(collections.UserDict().fromkeys('one two'.split(), 1), d5) self.assertTrue(u1.fromkeys('one two'.split()) is not u1) - self.assertTrue(isinstance(u1.fromkeys('one two'.split()), collections.UserDict)) - self.assertTrue(isinstance(u2.fromkeys('one two'.split()), collections.UserDict)) + self.assertIsInstance(u1.fromkeys('one two'.split()), collections.UserDict) + self.assertIsInstance(u2.fromkeys('one two'.split()), collections.UserDict) # Test __repr__ self.assertEqual(str(u0), str(d0)) Modified: python/branches/py3k/Lib/test/test_wsgiref.py ============================================================================== --- python/branches/py3k/Lib/test/test_wsgiref.py (original) +++ python/branches/py3k/Lib/test/test_wsgiref.py Sun Jan 24 20:26:24 2010 @@ -211,12 +211,12 @@ # Check defaulting when empty env = {} util.setup_testing_defaults(env) - if isinstance(value,StringIO): - self.assertTrue(isinstance(env[key],StringIO)) + if isinstance(value, StringIO): + self.assertIsInstance(env[key], StringIO) elif isinstance(value,BytesIO): - self.assertTrue(isinstance(env[key],BytesIO)) + self.assertIsInstance(env[key],BytesIO) else: - self.assertEqual(env[key],value) + self.assertEqual(env[key], value) # Check existing value env = {key:alt} Modified: python/branches/py3k/Lib/test/test_xmlrpc.py ============================================================================== --- python/branches/py3k/Lib/test/test_xmlrpc.py (original) +++ python/branches/py3k/Lib/test/test_xmlrpc.py Sun Jan 24 20:26:24 2010 @@ -75,11 +75,11 @@ d = xmlrpclib.DateTime() ((new_d,), dummy) = xmlrpclib.loads(xmlrpclib.dumps((d,), methodresponse=True)) - self.assertTrue(isinstance(new_d.value, str)) + self.assertIsInstance(new_d.value, str) # Check that the output of dumps() is still an 8-bit string s = xmlrpclib.dumps((new_d,), methodresponse=True) - self.assertTrue(isinstance(s, str)) + self.assertIsInstance(s, str) def test_newstyle_class(self): class T(object): @@ -146,6 +146,7 @@ [('Authorization', 'Basic dXNlcg==')], {})) + class HelperTestCase(unittest.TestCase): def test_escape(self): self.assertEqual(xmlrpclib.escape("a&b"), "a&b") Modified: python/branches/py3k/Lib/test/test_zipfile.py ============================================================================== --- python/branches/py3k/Lib/test/test_zipfile.py (original) +++ python/branches/py3k/Lib/test/test_zipfile.py Sun Jan 24 20:26:24 2010 @@ -595,6 +595,7 @@ with zipfile.ZipFile(TESTFN, "w") as zf: zf.writestr("foo.txt", "Test for unicode filename") zf.writestr("\xf6.txt", "Test for unicode filename") + self.assertIsInstance(zf.infolist()[0].filename, str) with zipfile.ZipFile(TESTFN, "r") as zf: self.assertEqual(zf.filelist[0].filename, "foo.txt") Modified: python/branches/py3k/Lib/test/test_zlib.py ============================================================================== --- python/branches/py3k/Lib/test/test_zlib.py (original) +++ python/branches/py3k/Lib/test/test_zlib.py Sun Jan 24 20:26:24 2010 @@ -174,7 +174,7 @@ decombuf = zlib.decompress(combuf) # Test type of return value - self.assertTrue(isinstance(decombuf, bytes)) + self.assertIsInstance(decombuf, bytes) self.assertEqual(data, decombuf) @@ -373,7 +373,7 @@ data = HAMLET_SCENE comp = zlib.compress(data) # Test type of return value - self.assertTrue(isinstance(comp, bytes)) + self.assertIsInstance(comp, bytes) d0 = zlib.decompressobj() bufs0 = [] From python-checkins at python.org Sun Jan 24 21:48:35 2010 From: python-checkins at python.org (ezio.melotti) Date: Sun, 24 Jan 2010 20:48:35 -0000 Subject: [Python-checkins] r77729 - in python/trunk/Lib/test: string_tests.py test_pprint.py test_support.py Message-ID: Author: ezio.melotti Date: Sun Jan 24 21:48:35 2010 New Revision: 77729 Log: remove archaic functions from test_support Modified: python/trunk/Lib/test/string_tests.py python/trunk/Lib/test/test_pprint.py python/trunk/Lib/test/test_support.py Modified: python/trunk/Lib/test/string_tests.py ============================================================================== --- python/trunk/Lib/test/string_tests.py (original) +++ python/trunk/Lib/test/string_tests.py Sun Jan 24 21:48:35 2010 @@ -973,15 +973,15 @@ self.checkraises(TypeError, 'hello', 'endswith', (42,)) def test___contains__(self): - self.checkequal(True, '', '__contains__', '') # vereq('' in '', True) - self.checkequal(True, 'abc', '__contains__', '') # vereq('' in 'abc', True) - self.checkequal(False, 'abc', '__contains__', '\0') # vereq('\0' in 'abc', False) - self.checkequal(True, '\0abc', '__contains__', '\0') # vereq('\0' in '\0abc', True) - self.checkequal(True, 'abc\0', '__contains__', '\0') # vereq('\0' in 'abc\0', True) - self.checkequal(True, '\0abc', '__contains__', 'a') # vereq('a' in '\0abc', True) - self.checkequal(True, 'asdf', '__contains__', 'asdf') # vereq('asdf' in 'asdf', True) - self.checkequal(False, 'asd', '__contains__', 'asdf') # vereq('asdf' in 'asd', False) - self.checkequal(False, '', '__contains__', 'asdf') # vereq('asdf' in '', False) + self.checkequal(True, '', '__contains__', '') + self.checkequal(True, 'abc', '__contains__', '') + self.checkequal(False, 'abc', '__contains__', '\0') + self.checkequal(True, '\0abc', '__contains__', '\0') + self.checkequal(True, 'abc\0', '__contains__', '\0') + self.checkequal(True, '\0abc', '__contains__', 'a') + self.checkequal(True, 'asdf', '__contains__', 'asdf') + self.checkequal(False, 'asd', '__contains__', 'asdf') + self.checkequal(False, '', '__contains__', 'asdf') def test_subscript(self): self.checkequal(u'a', 'abc', '__getitem__', 0) Modified: python/trunk/Lib/test/test_pprint.py ============================================================================== --- python/trunk/Lib/test/test_pprint.py (original) +++ python/trunk/Lib/test/test_pprint.py Sun Jan 24 21:48:35 2010 @@ -40,20 +40,19 @@ def test_basic(self): # Verify .isrecursive() and .isreadable() w/o recursion - verify = self.assertTrue pp = pprint.PrettyPrinter() for safe in (2, 2.0, 2j, "abc", [3], (2,2), {3: 3}, uni("yaddayadda"), self.a, self.b): # module-level convenience functions - verify(not pprint.isrecursive(safe), - "expected not isrecursive for %r" % (safe,)) - verify(pprint.isreadable(safe), - "expected isreadable for %r" % (safe,)) + self.assertFalse(pprint.isrecursive(safe), + "expected not isrecursive for %r" % (safe,)) + self.assertTrue(pprint.isreadable(safe), + "expected isreadable for %r" % (safe,)) # PrettyPrinter methods - verify(not pp.isrecursive(safe), - "expected not isrecursive for %r" % (safe,)) - verify(pp.isreadable(safe), - "expected isreadable for %r" % (safe,)) + self.assertFalse(pp.isrecursive(safe), + "expected not isrecursive for %r" % (safe,)) + self.assertTrue(pp.isreadable(safe), + "expected isreadable for %r" % (safe,)) def test_knotted(self): # Verify .isrecursive() and .isreadable() w/ recursion @@ -63,14 +62,13 @@ self.d = {} self.d[0] = self.d[1] = self.d[2] = self.d - verify = self.assertTrue pp = pprint.PrettyPrinter() for icky in self.a, self.b, self.d, (self.d, self.d): - verify(pprint.isrecursive(icky), "expected isrecursive") - verify(not pprint.isreadable(icky), "expected not isreadable") - verify(pp.isrecursive(icky), "expected isrecursive") - verify(not pp.isreadable(icky), "expected not isreadable") + self.assertTrue(pprint.isrecursive(icky), "expected isrecursive") + self.assertFalse(pprint.isreadable(icky), "expected not isreadable") + self.assertTrue(pp.isrecursive(icky), "expected isrecursive") + self.assertFalse(pp.isreadable(icky), "expected not isreadable") # Break the cycles. self.d.clear() @@ -79,31 +77,30 @@ for safe in self.a, self.b, self.d, (self.d, self.d): # module-level convenience functions - verify(not pprint.isrecursive(safe), - "expected not isrecursive for %r" % (safe,)) - verify(pprint.isreadable(safe), - "expected isreadable for %r" % (safe,)) + self.assertFalse(pprint.isrecursive(safe), + "expected not isrecursive for %r" % (safe,)) + self.assertTrue(pprint.isreadable(safe), + "expected isreadable for %r" % (safe,)) # PrettyPrinter methods - verify(not pp.isrecursive(safe), - "expected not isrecursive for %r" % (safe,)) - verify(pp.isreadable(safe), - "expected isreadable for %r" % (safe,)) + self.assertFalse(pp.isrecursive(safe), + "expected not isrecursive for %r" % (safe,)) + self.assertTrue(pp.isreadable(safe), + "expected isreadable for %r" % (safe,)) def test_unreadable(self): # Not recursive but not readable anyway - verify = self.assertTrue pp = pprint.PrettyPrinter() for unreadable in type(3), pprint, pprint.isrecursive: # module-level convenience functions - verify(not pprint.isrecursive(unreadable), - "expected not isrecursive for %r" % (unreadable,)) - verify(not pprint.isreadable(unreadable), - "expected not isreadable for %r" % (unreadable,)) + self.assertFalse(pprint.isrecursive(unreadable), + "expected not isrecursive for %r" % (unreadable,)) + self.assertFalse(pprint.isreadable(unreadable), + "expected not isreadable for %r" % (unreadable,)) # PrettyPrinter methods - verify(not pp.isrecursive(unreadable), - "expected not isrecursive for %r" % (unreadable,)) - verify(not pp.isreadable(unreadable), - "expected not isreadable for %r" % (unreadable,)) + self.assertFalse(pp.isrecursive(unreadable), + "expected not isrecursive for %r" % (unreadable,)) + self.assertFalse(pp.isreadable(unreadable), + "expected not isreadable for %r" % (unreadable,)) def test_same_as_repr(self): # Simple objects, small containers and classes that overwrite __repr__ @@ -114,12 +111,11 @@ # it sorted a dict display if and only if the display required # multiple lines. For that reason, dicts with more than one element # aren't tested here. - verify = self.assertTrue for simple in (0, 0L, 0+0j, 0.0, "", uni(""), (), tuple2(), tuple3(), [], list2(), list3(), {}, dict2(), dict3(), - verify, pprint, + self.assertTrue, pprint, -6, -6L, -6-6j, -1.5, "x", uni("x"), (3,), [3], {3: 6}, (1,2), [3,4], {5: 6}, tuple2((1,2)), tuple3((1,2)), tuple3(range(100)), @@ -131,8 +127,9 @@ for function in "pformat", "saferepr": f = getattr(pprint, function) got = f(simple) - verify(native == got, "expected %s got %s from pprint.%s" % - (native, got, function)) + self.assertEqual(native, got, + "expected %s got %s from pprint.%s" % + (native, got, function)) def test_basic_line_wrap(self): # verify basic line-wrapping operation Modified: python/trunk/Lib/test/test_support.py ============================================================================== --- python/trunk/Lib/test/test_support.py (original) +++ python/trunk/Lib/test/test_support.py Sun Jan 24 21:48:35 2010 @@ -22,7 +22,7 @@ "get_original_stdout", "unload", "unlink", "rmtree", "forget", "is_resource_enabled", "requires", "find_unused_port", "bind_port", "fcmp", "have_unicode", "is_jython", "TESTFN", "HOST", "FUZZ", - "findfile", "verify", "vereq", "sortdict", "check_syntax_error", + "findfile", "sortdict", "check_syntax_error", "open_urlresource", "check_warnings", "CleanImport", "EnvironmentVarGuard", "captured_output", "captured_stdout", "TransientResource", "transient_internet", @@ -414,30 +414,6 @@ if os.path.exists(fn): return fn return file -def verify(condition, reason='test failed'): - """Verify that condition is true. If not, raise TestFailed. - - The optional argument reason can be given to provide - a better error text. - """ - - if not condition: - raise TestFailed(reason) - -def vereq(a, b): - """Raise TestFailed if a == b is false. - - This is better than verify(a == b) because, in case of failure, the - error message incorporates repr(a) and repr(b) so you can see the - inputs. - - Note that "not (a == b)" isn't necessarily the same as "a != b"; the - former is tested. - """ - - if not (a == b): - raise TestFailed("%r == %r" % (a, b)) - def sortdict(dict): "Like repr(dict), but in sorted order." items = dict.items() From python-checkins at python.org Sun Jan 24 21:55:31 2010 From: python-checkins at python.org (ezio.melotti) Date: Sun, 24 Jan 2010 20:55:31 -0000 Subject: [Python-checkins] r77730 - in python/branches/release26-maint: Lib/test/string_tests.py Lib/test/test_pprint.py Lib/test/test_support.py Message-ID: Author: ezio.melotti Date: Sun Jan 24 21:55:31 2010 New Revision: 77730 Log: Merged revisions 77729 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77729 | ezio.melotti | 2010-01-24 22:48:35 +0200 (Sun, 24 Jan 2010) | 1 line remove archaic functions from test_support ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/test/string_tests.py python/branches/release26-maint/Lib/test/test_pprint.py python/branches/release26-maint/Lib/test/test_support.py Modified: python/branches/release26-maint/Lib/test/string_tests.py ============================================================================== --- python/branches/release26-maint/Lib/test/string_tests.py (original) +++ python/branches/release26-maint/Lib/test/string_tests.py Sun Jan 24 21:55:31 2010 @@ -942,15 +942,15 @@ self.checkraises(TypeError, 'hello', 'endswith', (42,)) def test___contains__(self): - self.checkequal(True, '', '__contains__', '') # vereq('' in '', True) - self.checkequal(True, 'abc', '__contains__', '') # vereq('' in 'abc', True) - self.checkequal(False, 'abc', '__contains__', '\0') # vereq('\0' in 'abc', False) - self.checkequal(True, '\0abc', '__contains__', '\0') # vereq('\0' in '\0abc', True) - self.checkequal(True, 'abc\0', '__contains__', '\0') # vereq('\0' in 'abc\0', True) - self.checkequal(True, '\0abc', '__contains__', 'a') # vereq('a' in '\0abc', True) - self.checkequal(True, 'asdf', '__contains__', 'asdf') # vereq('asdf' in 'asdf', True) - self.checkequal(False, 'asd', '__contains__', 'asdf') # vereq('asdf' in 'asd', False) - self.checkequal(False, '', '__contains__', 'asdf') # vereq('asdf' in '', False) + self.checkequal(True, '', '__contains__', '') + self.checkequal(True, 'abc', '__contains__', '') + self.checkequal(False, 'abc', '__contains__', '\0') + self.checkequal(True, '\0abc', '__contains__', '\0') + self.checkequal(True, 'abc\0', '__contains__', '\0') + self.checkequal(True, '\0abc', '__contains__', 'a') + self.checkequal(True, 'asdf', '__contains__', 'asdf') + self.checkequal(False, 'asd', '__contains__', 'asdf') + self.checkequal(False, '', '__contains__', 'asdf') def test_subscript(self): self.checkequal(u'a', 'abc', '__getitem__', 0) Modified: python/branches/release26-maint/Lib/test/test_pprint.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_pprint.py (original) +++ python/branches/release26-maint/Lib/test/test_pprint.py Sun Jan 24 21:55:31 2010 @@ -40,20 +40,19 @@ def test_basic(self): # Verify .isrecursive() and .isreadable() w/o recursion - verify = self.assert_ pp = pprint.PrettyPrinter() for safe in (2, 2.0, 2j, "abc", [3], (2,2), {3: 3}, uni("yaddayadda"), self.a, self.b): # module-level convenience functions - verify(not pprint.isrecursive(safe), - "expected not isrecursive for %r" % (safe,)) - verify(pprint.isreadable(safe), - "expected isreadable for %r" % (safe,)) + self.assertFalse(pprint.isrecursive(safe), + "expected not isrecursive for %r" % (safe,)) + self.assertTrue(pprint.isreadable(safe), + "expected isreadable for %r" % (safe,)) # PrettyPrinter methods - verify(not pp.isrecursive(safe), - "expected not isrecursive for %r" % (safe,)) - verify(pp.isreadable(safe), - "expected isreadable for %r" % (safe,)) + self.assertFalse(pp.isrecursive(safe), + "expected not isrecursive for %r" % (safe,)) + self.assertTrue(pp.isreadable(safe), + "expected isreadable for %r" % (safe,)) def test_knotted(self): # Verify .isrecursive() and .isreadable() w/ recursion @@ -63,14 +62,13 @@ self.d = {} self.d[0] = self.d[1] = self.d[2] = self.d - verify = self.assert_ pp = pprint.PrettyPrinter() for icky in self.a, self.b, self.d, (self.d, self.d): - verify(pprint.isrecursive(icky), "expected isrecursive") - verify(not pprint.isreadable(icky), "expected not isreadable") - verify(pp.isrecursive(icky), "expected isrecursive") - verify(not pp.isreadable(icky), "expected not isreadable") + self.assertTrue(pprint.isrecursive(icky), "expected isrecursive") + self.assertFalse(pprint.isreadable(icky), "expected not isreadable") + self.assertTrue(pp.isrecursive(icky), "expected isrecursive") + self.assertFalse(pp.isreadable(icky), "expected not isreadable") # Break the cycles. self.d.clear() @@ -79,31 +77,30 @@ for safe in self.a, self.b, self.d, (self.d, self.d): # module-level convenience functions - verify(not pprint.isrecursive(safe), - "expected not isrecursive for %r" % (safe,)) - verify(pprint.isreadable(safe), - "expected isreadable for %r" % (safe,)) + self.assertFalse(pprint.isrecursive(safe), + "expected not isrecursive for %r" % (safe,)) + self.assertTrue(pprint.isreadable(safe), + "expected isreadable for %r" % (safe,)) # PrettyPrinter methods - verify(not pp.isrecursive(safe), - "expected not isrecursive for %r" % (safe,)) - verify(pp.isreadable(safe), - "expected isreadable for %r" % (safe,)) + self.assertFalse(pp.isrecursive(safe), + "expected not isrecursive for %r" % (safe,)) + self.assertTrue(pp.isreadable(safe), + "expected isreadable for %r" % (safe,)) def test_unreadable(self): # Not recursive but not readable anyway - verify = self.assert_ pp = pprint.PrettyPrinter() for unreadable in type(3), pprint, pprint.isrecursive: # module-level convenience functions - verify(not pprint.isrecursive(unreadable), - "expected not isrecursive for %r" % (unreadable,)) - verify(not pprint.isreadable(unreadable), - "expected not isreadable for %r" % (unreadable,)) + self.assertFalse(pprint.isrecursive(unreadable), + "expected not isrecursive for %r" % (unreadable,)) + self.assertFalse(pprint.isreadable(unreadable), + "expected not isreadable for %r" % (unreadable,)) # PrettyPrinter methods - verify(not pp.isrecursive(unreadable), - "expected not isrecursive for %r" % (unreadable,)) - verify(not pp.isreadable(unreadable), - "expected not isreadable for %r" % (unreadable,)) + self.assertFalse(pp.isrecursive(unreadable), + "expected not isrecursive for %r" % (unreadable,)) + self.assertFalse(pp.isreadable(unreadable), + "expected not isreadable for %r" % (unreadable,)) def test_same_as_repr(self): # Simple objects, small containers and classes that overwrite __repr__ @@ -114,12 +111,11 @@ # it sorted a dict display if and only if the display required # multiple lines. For that reason, dicts with more than one element # aren't tested here. - verify = self.assert_ for simple in (0, 0L, 0+0j, 0.0, "", uni(""), (), tuple2(), tuple3(), [], list2(), list3(), {}, dict2(), dict3(), - verify, pprint, + self.assertTrue, pprint, -6, -6L, -6-6j, -1.5, "x", uni("x"), (3,), [3], {3: 6}, (1,2), [3,4], {5: 6, 7: 8}, tuple2((1,2)), tuple3((1,2)), tuple3(range(100)), @@ -131,8 +127,9 @@ for function in "pformat", "saferepr": f = getattr(pprint, function) got = f(simple) - verify(native == got, "expected %s got %s from pprint.%s" % - (native, got, function)) + self.assertEqual(native, got, + "expected %s got %s from pprint.%s" % + (native, got, function)) def test_basic_line_wrap(self): # verify basic line-wrapping operation Modified: python/branches/release26-maint/Lib/test/test_support.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_support.py (original) +++ python/branches/release26-maint/Lib/test/test_support.py Sun Jan 24 21:55:31 2010 @@ -17,7 +17,7 @@ "get_original_stdout", "unload", "unlink", "rmtree", "forget", "is_resource_enabled", "requires", "find_unused_port", "bind_port", "fcmp", "have_unicode", "is_jython", "TESTFN", "HOST", "FUZZ", - "findfile", "verify", "vereq", "sortdict", "check_syntax_error", + "findfile", "sortdict", "check_syntax_error", "open_urlresource", "check_warnings", "CleanImport", "EnvironmentVarGuard", "captured_output", "captured_stdout", "TransientResource", "transient_internet", @@ -325,30 +325,6 @@ if os.path.exists(fn): return fn return file -def verify(condition, reason='test failed'): - """Verify that condition is true. If not, raise TestFailed. - - The optional argument reason can be given to provide - a better error text. - """ - - if not condition: - raise TestFailed(reason) - -def vereq(a, b): - """Raise TestFailed if a == b is false. - - This is better than verify(a == b) because, in case of failure, the - error message incorporates repr(a) and repr(b) so you can see the - inputs. - - Note that "not (a == b)" isn't necessarily the same as "a != b"; the - former is tested. - """ - - if not (a == b): - raise TestFailed("%r == %r" % (a, b)) - def sortdict(dict): "Like repr(dict), but in sorted order." items = dict.items() From python-checkins at python.org Sun Jan 24 21:59:25 2010 From: python-checkins at python.org (ezio.melotti) Date: Sun, 24 Jan 2010 20:59:25 -0000 Subject: [Python-checkins] r77731 - in python/branches/py3k: Lib/test/string_tests.py Lib/test/support.py Lib/test/test_pprint.py Message-ID: Author: ezio.melotti Date: Sun Jan 24 21:59:24 2010 New Revision: 77731 Log: Merged revisions 77729 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77729 | ezio.melotti | 2010-01-24 22:48:35 +0200 (Sun, 24 Jan 2010) | 1 line remove archaic functions from test_support ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/string_tests.py python/branches/py3k/Lib/test/support.py python/branches/py3k/Lib/test/test_pprint.py Modified: python/branches/py3k/Lib/test/string_tests.py ============================================================================== --- python/branches/py3k/Lib/test/string_tests.py (original) +++ python/branches/py3k/Lib/test/string_tests.py Sun Jan 24 21:59:24 2010 @@ -990,15 +990,15 @@ self.checkraises(TypeError, 'hello', 'endswith', (42,)) def test___contains__(self): - self.checkequal(True, '', '__contains__', '') # vereq('' in '', True) - self.checkequal(True, 'abc', '__contains__', '') # vereq('' in 'abc', True) - self.checkequal(False, 'abc', '__contains__', '\0') # vereq('\0' in 'abc', False) - self.checkequal(True, '\0abc', '__contains__', '\0') # vereq('\0' in '\0abc', True) - self.checkequal(True, 'abc\0', '__contains__', '\0') # vereq('\0' in 'abc\0', True) - self.checkequal(True, '\0abc', '__contains__', 'a') # vereq('a' in '\0abc', True) - self.checkequal(True, 'asdf', '__contains__', 'asdf') # vereq('asdf' in 'asdf', True) - self.checkequal(False, 'asd', '__contains__', 'asdf') # vereq('asdf' in 'asd', False) - self.checkequal(False, '', '__contains__', 'asdf') # vereq('asdf' in '', False) + self.checkequal(True, '', '__contains__', '') + self.checkequal(True, 'abc', '__contains__', '') + self.checkequal(False, 'abc', '__contains__', '\0') + self.checkequal(True, '\0abc', '__contains__', '\0') + self.checkequal(True, 'abc\0', '__contains__', '\0') + self.checkequal(True, '\0abc', '__contains__', 'a') + self.checkequal(True, 'asdf', '__contains__', 'asdf') + self.checkequal(False, 'asd', '__contains__', 'asdf') + self.checkequal(False, '', '__contains__', 'asdf') def test_subscript(self): self.checkequal('a', 'abc', '__getitem__', 0) Modified: python/branches/py3k/Lib/test/support.py ============================================================================== --- python/branches/py3k/Lib/test/support.py (original) +++ python/branches/py3k/Lib/test/support.py Sun Jan 24 21:59:24 2010 @@ -21,8 +21,8 @@ "verbose", "use_resources", "max_memuse", "record_original_stdout", "get_original_stdout", "unload", "unlink", "rmtree", "forget", "is_resource_enabled", "requires", "find_unused_port", "bind_port", - "fcmp", "is_jython", "TESTFN", "HOST", "FUZZ", "findfile", "verify", - "vereq", "sortdict", "check_syntax_error", "open_urlresource", + "fcmp", "is_jython", "TESTFN", "HOST", "FUZZ", "findfile", + "sortdict", "check_syntax_error", "open_urlresource", "check_warnings", "CleanImport", "EnvironmentVarGuard", "TransientResource", "captured_output", "captured_stdout", "time_out", "socket_peer_reset", "ioerror_peer_reset", @@ -400,30 +400,6 @@ if os.path.exists(fn): return fn return file -def verify(condition, reason='test failed'): - """Verify that condition is true. If not, raise TestFailed. - - The optional argument reason can be given to provide - a better error text. - """ - - if not condition: - raise TestFailed(reason) - -def vereq(a, b): - """Raise TestFailed if a == b is false. - - This is better than verify(a == b) because, in case of failure, the - error message incorporates repr(a) and repr(b) so you can see the - inputs. - - Note that "not (a == b)" isn't necessarily the same as "a != b"; the - former is tested. - """ - - if not (a == b): - raise TestFailed("%r == %r" % (a, b)) - def sortdict(dict): "Like repr(dict), but in sorted order." items = sorted(dict.items()) Modified: python/branches/py3k/Lib/test/test_pprint.py ============================================================================== --- python/branches/py3k/Lib/test/test_pprint.py (original) +++ python/branches/py3k/Lib/test/test_pprint.py Sun Jan 24 21:59:24 2010 @@ -39,20 +39,19 @@ def test_basic(self): # Verify .isrecursive() and .isreadable() w/o recursion - verify = self.assertTrue pp = pprint.PrettyPrinter() for safe in (2, 2.0, 2j, "abc", [3], (2,2), {3: 3}, "yaddayadda", self.a, self.b): # module-level convenience functions - verify(not pprint.isrecursive(safe), - "expected not isrecursive for %r" % (safe,)) - verify(pprint.isreadable(safe), - "expected isreadable for %r" % (safe,)) + self.assertFalse(pprint.isrecursive(safe), + "expected not isrecursive for %r" % (safe,)) + self.assertTrue(pprint.isreadable(safe), + "expected isreadable for %r" % (safe,)) # PrettyPrinter methods - verify(not pp.isrecursive(safe), - "expected not isrecursive for %r" % (safe,)) - verify(pp.isreadable(safe), - "expected isreadable for %r" % (safe,)) + self.assertFalse(pp.isrecursive(safe), + "expected not isrecursive for %r" % (safe,)) + self.assertTrue(pp.isreadable(safe), + "expected isreadable for %r" % (safe,)) def test_knotted(self): # Verify .isrecursive() and .isreadable() w/ recursion @@ -62,14 +61,13 @@ self.d = {} self.d[0] = self.d[1] = self.d[2] = self.d - verify = self.assertTrue pp = pprint.PrettyPrinter() for icky in self.a, self.b, self.d, (self.d, self.d): - verify(pprint.isrecursive(icky), "expected isrecursive") - verify(not pprint.isreadable(icky), "expected not isreadable") - verify(pp.isrecursive(icky), "expected isrecursive") - verify(not pp.isreadable(icky), "expected not isreadable") + self.assertTrue(pprint.isrecursive(icky), "expected isrecursive") + self.assertFalse(pprint.isreadable(icky), "expected not isreadable") + self.assertTrue(pp.isrecursive(icky), "expected isrecursive") + self.assertFalse(pp.isreadable(icky), "expected not isreadable") # Break the cycles. self.d.clear() @@ -78,31 +76,30 @@ for safe in self.a, self.b, self.d, (self.d, self.d): # module-level convenience functions - verify(not pprint.isrecursive(safe), - "expected not isrecursive for %r" % (safe,)) - verify(pprint.isreadable(safe), - "expected isreadable for %r" % (safe,)) + self.assertFalse(pprint.isrecursive(safe), + "expected not isrecursive for %r" % (safe,)) + self.assertTrue(pprint.isreadable(safe), + "expected isreadable for %r" % (safe,)) # PrettyPrinter methods - verify(not pp.isrecursive(safe), - "expected not isrecursive for %r" % (safe,)) - verify(pp.isreadable(safe), - "expected isreadable for %r" % (safe,)) + self.assertFalse(pp.isrecursive(safe), + "expected not isrecursive for %r" % (safe,)) + self.assertTrue(pp.isreadable(safe), + "expected isreadable for %r" % (safe,)) def test_unreadable(self): # Not recursive but not readable anyway - verify = self.assertTrue pp = pprint.PrettyPrinter() for unreadable in type(3), pprint, pprint.isrecursive: # module-level convenience functions - verify(not pprint.isrecursive(unreadable), - "expected not isrecursive for %r" % (unreadable,)) - verify(not pprint.isreadable(unreadable), - "expected not isreadable for %r" % (unreadable,)) + self.assertFalse(pprint.isrecursive(unreadable), + "expected not isrecursive for %r" % (unreadable,)) + self.assertFalse(pprint.isreadable(unreadable), + "expected not isreadable for %r" % (unreadable,)) # PrettyPrinter methods - verify(not pp.isrecursive(unreadable), - "expected not isrecursive for %r" % (unreadable,)) - verify(not pp.isreadable(unreadable), - "expected not isreadable for %r" % (unreadable,)) + self.assertFalse(pp.isrecursive(unreadable), + "expected not isrecursive for %r" % (unreadable,)) + self.assertFalse(pp.isreadable(unreadable), + "expected not isreadable for %r" % (unreadable,)) def test_same_as_repr(self): # Simple objects, small containers and classes that overwrite __repr__ @@ -113,12 +110,11 @@ # it sorted a dict display if and only if the display required # multiple lines. For that reason, dicts with more than one element # aren't tested here. - verify = self.assertTrue for simple in (0, 0, 0+0j, 0.0, "", b"", (), tuple2(), tuple3(), [], list2(), list3(), {}, dict2(), dict3(), - verify, pprint, + self.assertTrue, pprint, -6, -6, -6-6j, -1.5, "x", b"x", (3,), [3], {3: 6}, (1,2), [3,4], {5: 6}, tuple2((1,2)), tuple3((1,2)), tuple3(range(100)), @@ -130,8 +126,9 @@ for function in "pformat", "saferepr": f = getattr(pprint, function) got = f(simple) - verify(native == got, "expected %s got %s from pprint.%s" % - (native, got, function)) + self.assertEqual(native, got, + "expected %s got %s from pprint.%s" % + (native, got, function)) def test_basic_line_wrap(self): # verify basic line-wrapping operation From python-checkins at python.org Sun Jan 24 22:02:05 2010 From: python-checkins at python.org (ezio.melotti) Date: Sun, 24 Jan 2010 21:02:05 -0000 Subject: [Python-checkins] r77732 - in python/branches/release31-maint: Lib/test/string_tests.py Lib/test/support.py Lib/test/test_pprint.py Message-ID: Author: ezio.melotti Date: Sun Jan 24 22:02:05 2010 New Revision: 77732 Log: Merged revisions 77731 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77731 | ezio.melotti | 2010-01-24 22:59:24 +0200 (Sun, 24 Jan 2010) | 9 lines Merged revisions 77729 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77729 | ezio.melotti | 2010-01-24 22:48:35 +0200 (Sun, 24 Jan 2010) | 1 line remove archaic functions from test_support ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/test/string_tests.py python/branches/release31-maint/Lib/test/support.py python/branches/release31-maint/Lib/test/test_pprint.py Modified: python/branches/release31-maint/Lib/test/string_tests.py ============================================================================== --- python/branches/release31-maint/Lib/test/string_tests.py (original) +++ python/branches/release31-maint/Lib/test/string_tests.py Sun Jan 24 22:02:05 2010 @@ -962,15 +962,15 @@ self.checkraises(TypeError, 'hello', 'endswith', (42,)) def test___contains__(self): - self.checkequal(True, '', '__contains__', '') # vereq('' in '', True) - self.checkequal(True, 'abc', '__contains__', '') # vereq('' in 'abc', True) - self.checkequal(False, 'abc', '__contains__', '\0') # vereq('\0' in 'abc', False) - self.checkequal(True, '\0abc', '__contains__', '\0') # vereq('\0' in '\0abc', True) - self.checkequal(True, 'abc\0', '__contains__', '\0') # vereq('\0' in 'abc\0', True) - self.checkequal(True, '\0abc', '__contains__', 'a') # vereq('a' in '\0abc', True) - self.checkequal(True, 'asdf', '__contains__', 'asdf') # vereq('asdf' in 'asdf', True) - self.checkequal(False, 'asd', '__contains__', 'asdf') # vereq('asdf' in 'asd', False) - self.checkequal(False, '', '__contains__', 'asdf') # vereq('asdf' in '', False) + self.checkequal(True, '', '__contains__', '') + self.checkequal(True, 'abc', '__contains__', '') + self.checkequal(False, 'abc', '__contains__', '\0') + self.checkequal(True, '\0abc', '__contains__', '\0') + self.checkequal(True, 'abc\0', '__contains__', '\0') + self.checkequal(True, '\0abc', '__contains__', 'a') + self.checkequal(True, 'asdf', '__contains__', 'asdf') + self.checkequal(False, 'asd', '__contains__', 'asdf') + self.checkequal(False, '', '__contains__', 'asdf') def test_subscript(self): self.checkequal('a', 'abc', '__getitem__', 0) Modified: python/branches/release31-maint/Lib/test/support.py ============================================================================== --- python/branches/release31-maint/Lib/test/support.py (original) +++ python/branches/release31-maint/Lib/test/support.py Sun Jan 24 22:02:05 2010 @@ -21,8 +21,8 @@ "verbose", "use_resources", "max_memuse", "record_original_stdout", "get_original_stdout", "unload", "unlink", "rmtree", "forget", "is_resource_enabled", "requires", "find_unused_port", "bind_port", - "fcmp", "is_jython", "TESTFN", "HOST", "FUZZ", "findfile", "verify", - "vereq", "sortdict", "check_syntax_error", "open_urlresource", + "fcmp", "is_jython", "TESTFN", "HOST", "FUZZ", "findfile", + "sortdict", "check_syntax_error", "open_urlresource", "check_warnings", "CleanImport", "EnvironmentVarGuard", "TransientResource", "captured_output", "captured_stdout", "time_out", "socket_peer_reset", "ioerror_peer_reset", @@ -396,30 +396,6 @@ if os.path.exists(fn): return fn return file -def verify(condition, reason='test failed'): - """Verify that condition is true. If not, raise TestFailed. - - The optional argument reason can be given to provide - a better error text. - """ - - if not condition: - raise TestFailed(reason) - -def vereq(a, b): - """Raise TestFailed if a == b is false. - - This is better than verify(a == b) because, in case of failure, the - error message incorporates repr(a) and repr(b) so you can see the - inputs. - - Note that "not (a == b)" isn't necessarily the same as "a != b"; the - former is tested. - """ - - if not (a == b): - raise TestFailed("%r == %r" % (a, b)) - def sortdict(dict): "Like repr(dict), but in sorted order." items = sorted(dict.items()) Modified: python/branches/release31-maint/Lib/test/test_pprint.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_pprint.py (original) +++ python/branches/release31-maint/Lib/test/test_pprint.py Sun Jan 24 22:02:05 2010 @@ -39,20 +39,19 @@ def test_basic(self): # Verify .isrecursive() and .isreadable() w/o recursion - verify = self.assertTrue pp = pprint.PrettyPrinter() for safe in (2, 2.0, 2j, "abc", [3], (2,2), {3: 3}, "yaddayadda", self.a, self.b): # module-level convenience functions - verify(not pprint.isrecursive(safe), - "expected not isrecursive for %r" % (safe,)) - verify(pprint.isreadable(safe), - "expected isreadable for %r" % (safe,)) + self.assertFalse(pprint.isrecursive(safe), + "expected not isrecursive for %r" % (safe,)) + self.assertTrue(pprint.isreadable(safe), + "expected isreadable for %r" % (safe,)) # PrettyPrinter methods - verify(not pp.isrecursive(safe), - "expected not isrecursive for %r" % (safe,)) - verify(pp.isreadable(safe), - "expected isreadable for %r" % (safe,)) + self.assertFalse(pp.isrecursive(safe), + "expected not isrecursive for %r" % (safe,)) + self.assertTrue(pp.isreadable(safe), + "expected isreadable for %r" % (safe,)) def test_knotted(self): # Verify .isrecursive() and .isreadable() w/ recursion @@ -62,14 +61,13 @@ self.d = {} self.d[0] = self.d[1] = self.d[2] = self.d - verify = self.assertTrue pp = pprint.PrettyPrinter() for icky in self.a, self.b, self.d, (self.d, self.d): - verify(pprint.isrecursive(icky), "expected isrecursive") - verify(not pprint.isreadable(icky), "expected not isreadable") - verify(pp.isrecursive(icky), "expected isrecursive") - verify(not pp.isreadable(icky), "expected not isreadable") + self.assertTrue(pprint.isrecursive(icky), "expected isrecursive") + self.assertFalse(pprint.isreadable(icky), "expected not isreadable") + self.assertTrue(pp.isrecursive(icky), "expected isrecursive") + self.assertFalse(pp.isreadable(icky), "expected not isreadable") # Break the cycles. self.d.clear() @@ -78,31 +76,30 @@ for safe in self.a, self.b, self.d, (self.d, self.d): # module-level convenience functions - verify(not pprint.isrecursive(safe), - "expected not isrecursive for %r" % (safe,)) - verify(pprint.isreadable(safe), - "expected isreadable for %r" % (safe,)) + self.assertFalse(pprint.isrecursive(safe), + "expected not isrecursive for %r" % (safe,)) + self.assertTrue(pprint.isreadable(safe), + "expected isreadable for %r" % (safe,)) # PrettyPrinter methods - verify(not pp.isrecursive(safe), - "expected not isrecursive for %r" % (safe,)) - verify(pp.isreadable(safe), - "expected isreadable for %r" % (safe,)) + self.assertFalse(pp.isrecursive(safe), + "expected not isrecursive for %r" % (safe,)) + self.assertTrue(pp.isreadable(safe), + "expected isreadable for %r" % (safe,)) def test_unreadable(self): # Not recursive but not readable anyway - verify = self.assertTrue pp = pprint.PrettyPrinter() for unreadable in type(3), pprint, pprint.isrecursive: # module-level convenience functions - verify(not pprint.isrecursive(unreadable), - "expected not isrecursive for %r" % (unreadable,)) - verify(not pprint.isreadable(unreadable), - "expected not isreadable for %r" % (unreadable,)) + self.assertFalse(pprint.isrecursive(unreadable), + "expected not isrecursive for %r" % (unreadable,)) + self.assertFalse(pprint.isreadable(unreadable), + "expected not isreadable for %r" % (unreadable,)) # PrettyPrinter methods - verify(not pp.isrecursive(unreadable), - "expected not isrecursive for %r" % (unreadable,)) - verify(not pp.isreadable(unreadable), - "expected not isreadable for %r" % (unreadable,)) + self.assertFalse(pp.isrecursive(unreadable), + "expected not isrecursive for %r" % (unreadable,)) + self.assertFalse(pp.isreadable(unreadable), + "expected not isreadable for %r" % (unreadable,)) def test_same_as_repr(self): # Simple objects, small containers and classes that overwrite __repr__ @@ -113,12 +110,11 @@ # it sorted a dict display if and only if the display required # multiple lines. For that reason, dicts with more than one element # aren't tested here. - verify = self.assertTrue for simple in (0, 0, 0+0j, 0.0, "", b"", (), tuple2(), tuple3(), [], list2(), list3(), {}, dict2(), dict3(), - verify, pprint, + self.assertTrue, pprint, -6, -6, -6-6j, -1.5, "x", b"x", (3,), [3], {3: 6}, (1,2), [3,4], {5: 6}, tuple2((1,2)), tuple3((1,2)), tuple3(range(100)), @@ -130,8 +126,9 @@ for function in "pformat", "saferepr": f = getattr(pprint, function) got = f(simple) - verify(native == got, "expected %s got %s from pprint.%s" % - (native, got, function)) + self.assertEqual(native, got, + "expected %s got %s from pprint.%s" % + (native, got, function)) def test_basic_line_wrap(self): # verify basic line-wrapping operation From python-checkins at python.org Sun Jan 24 22:47:59 2010 From: python-checkins at python.org (ezio.melotti) Date: Sun, 24 Jan 2010 21:47:59 -0000 Subject: [Python-checkins] r77733 - python/trunk/Lib/bsddb/test/test_misc.py Message-ID: Author: ezio.melotti Date: Sun Jan 24 22:47:59 2010 New Revision: 77733 Log: #7269: fix failures in test_bsddb3. Patch by Florent Xicluna. Modified: python/trunk/Lib/bsddb/test/test_misc.py Modified: python/trunk/Lib/bsddb/test/test_misc.py ============================================================================== --- python/trunk/Lib/bsddb/test/test_misc.py (original) +++ python/trunk/Lib/bsddb/test/test_misc.py Sun Jan 24 22:47:59 2010 @@ -10,7 +10,7 @@ class MiscTestCase(unittest.TestCase): def setUp(self): - self.filename = self.__class__.__name__ + '.db' + self.filename = get_new_database_path() self.homeDir = get_new_environment_path() def tearDown(self): From python-checkins at python.org Sun Jan 24 22:50:02 2010 From: python-checkins at python.org (ezio.melotti) Date: Sun, 24 Jan 2010 21:50:02 -0000 Subject: [Python-checkins] r77734 - in python/branches/release26-maint: Lib/bsddb/test/test_misc.py Message-ID: Author: ezio.melotti Date: Sun Jan 24 22:50:01 2010 New Revision: 77734 Log: Merged revisions 77733 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77733 | ezio.melotti | 2010-01-24 23:47:59 +0200 (Sun, 24 Jan 2010) | 1 line #7269: fix failures in test_bsddb3. Patch by Florent Xicluna. ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/bsddb/test/test_misc.py Modified: python/branches/release26-maint/Lib/bsddb/test/test_misc.py ============================================================================== --- python/branches/release26-maint/Lib/bsddb/test/test_misc.py (original) +++ python/branches/release26-maint/Lib/bsddb/test/test_misc.py Sun Jan 24 22:50:01 2010 @@ -10,7 +10,7 @@ class MiscTestCase(unittest.TestCase): def setUp(self): - self.filename = self.__class__.__name__ + '.db' + self.filename = get_new_database_path() self.homeDir = get_new_environment_path() def tearDown(self): From ziade.tarek at gmail.com Sun Jan 24 22:50:01 2010 From: ziade.tarek at gmail.com (=?ISO-8859-1?Q?Tarek_Ziad=E9?=) Date: Sun, 24 Jan 2010 22:50:01 +0100 Subject: [Python-checkins] r77717 - in python/trunk: Lib/distutils/command/register.py Lib/distutils/command/upload.pyLib/distutils/dist.py Lib/distutils/tests/test_register.py Lib/distutils/tests/test_upload.py Misc/NEWS In-Reply-To: References: <4406.09759320996$1264293234@news.gmane.org> Message-ID: <94bdd2611001241350p286e94a7y24089ff75855f14e@mail.gmail.com> On Sun, Jan 24, 2010 at 5:36 PM, Antoine Pitrou wrote: > writes: >> >> Author: tarek.ziade >> Date: Sun Jan 24 01:33:32 2010 >> New Revision: 77717 >> >> Log: >> Fixed #7748: now upload and register commands don't need to force the >> encoding anymore : >> DistributionMetada returns utf8 strings > > I'm sorry, is this right? > First, this looks like a backwards-incompatible change in the API. how so ? > Merging it > into 2.6 could break software which used to work fine. Can you provide an example ? Even if it's not really documented, the DistributionMetada class in 2.7 is supposed to hold only utf-8 strings. Then are then serialized in a file (PKG-INFO) or in a HTTP request that is pushed at PyPI. The unicode conversion was added in the past to avoid breakages when people used unicode strings for these fields : 'author', 'author_email', 'maintainer', 'maintainer_email', 'description', 'long_description'. Other field are strings, and are supposed to be utf-8 to be serializable. People are currently doing this for instance in their setup.py file: setup(name='foo', author=u'ren?') and this was working with the "register" command but not the "upload" command, because the register command was converting unicode on the fly, and upload did not. But those commands should not be responsible for that, they should handle a homogeneous list of fields provided by the DistributionMetada class and know what they get. IOW, the get_* functions of DistributionMetada should always return the same types for the fields, because consumers should not guess it. Maybe a better fix could've been to forbid the usage of unicode *or* str in the first place in setup() for these options, and restrict it to unicode. But it is curently working for upload so we can't remove it. (this would be in this case a backwards-incompatible change) > Second, I don't think returning utf8-encoded strings is any better than > returning unicode objects. Not sure this is the best idea in 2.x. People are expecting strings as an output. unicode is exceptional and leads to mentioned bugs = distutils was not handling them properly. That's why I have done this compromise. > It's probably worse actually (especially in py3k, but > I don't know what the behaviour is there). This fix is only for 2.x. In python 3, it's the new str for all the fields, Then it's serialized using bytes. What I can do in 3k is add a control that the fields received through setup() only str values, and raise an assert otherwise. Tarek From solipsis at pitrou.net Sun Jan 24 23:08:08 2010 From: solipsis at pitrou.net (Antoine Pitrou) Date: Sun, 24 Jan 2010 23:08:08 +0100 Subject: [Python-checkins] r77717 - in python/trunk: Lib/distutils/command/register.py Lib/distutils/command/upload.pyLib/distutils/dist.py Lib/distutils/tests/test_register.py Lib/distutils/tests/test_upload.py Misc/NEWS In-Reply-To: <94bdd2611001241350p286e94a7y24089ff75855f14e@mail.gmail.com> References: <4406.09759320996$1264293234@news.gmane.org> <94bdd2611001241350p286e94a7y24089ff75855f14e@mail.gmail.com> Message-ID: <1264370888.3368.35.camel@localhost> > Even if it's not really documented, the > DistributionMetada class in 2.7 is supposed to hold only utf-8 > strings. Well, as you say, it's not documented, so the current behaviour serves as a specification :-) > Then are then serialized in a file (PKG-INFO) or in a HTTP > request that is pushed at PyPI. Shouldn't the encoding step be done when serializing instead? It's not obvious that all transports would require utf-8. > But those commands should not be responsible for that, Why? Dialoguing with PyPI is their job, they know what encoding to use. From martin at v.loewis.de Sun Jan 24 23:28:38 2010 From: martin at v.loewis.de (=?ISO-8859-1?Q?=22Martin_v=2E_L=F6wis=22?=) Date: Sun, 24 Jan 2010 23:28:38 +0100 Subject: [Python-checkins] r77717 - in python/trunk: Lib/distutils/command/register.py Lib/distutils/command/upload.pyLib/distutils/dist.py Lib/distutils/tests/test_register.py Lib/distutils/tests/test_upload.py Misc/NEWS In-Reply-To: <1264370888.3368.35.camel@localhost> References: <4406.09759320996$1264293234@news.gmane.org> <94bdd2611001241350p286e94a7y24089ff75855f14e@mail.gmail.com> <1264370888.3368.35.camel@localhost> Message-ID: <4B5CC996.2010005@v.loewis.de> >> Even if it's not really documented, the >> DistributionMetada class in 2.7 is supposed to hold only utf-8 >> strings. > > Well, as you say, it's not documented, so the current behaviour serves > as a specification :-) > >> Then are then serialized in a file (PKG-INFO) or in a HTTP >> request that is pushed at PyPI. > > Shouldn't the encoding step be done when serializing instead? > It's not obvious that all transports would require utf-8. If it's a byte string, and it's not UTF-8, how can you possibly do the encoding step when serializing??? There must be a specification of what format the meta-data have to be passed, and requiring UTF-8 is the approach that would be most compatible with the status quo. >> But those commands should not be responsible for that, > > Why? Dialoguing with PyPI is their job, they know what encoding to use. They can't do that if setup.py didn't provide correct data, though. I didn't review the original patch in question, however, I would hope that a) if a byte string is passed to setup, it is assumed to be UTF-8 throughout. Breaking when strings come in other encodings is fine. b) unicode strings also are supported, and are converted to UTF-8 at some point. Regards, Martin From ziade.tarek at gmail.com Sun Jan 24 23:35:48 2010 From: ziade.tarek at gmail.com (=?ISO-8859-1?Q?Tarek_Ziad=E9?=) Date: Sun, 24 Jan 2010 23:35:48 +0100 Subject: [Python-checkins] r77717 - in python/trunk: Lib/distutils/command/register.py Lib/distutils/command/upload.pyLib/distutils/dist.py Lib/distutils/tests/test_register.py Lib/distutils/tests/test_upload.py Misc/NEWS In-Reply-To: <4B5CC996.2010005@v.loewis.de> References: <4406.09759320996$1264293234@news.gmane.org> <94bdd2611001241350p286e94a7y24089ff75855f14e@mail.gmail.com> <1264370888.3368.35.camel@localhost> <4B5CC996.2010005@v.loewis.de> Message-ID: <94bdd2611001241435k5ae16be1rcd5402144acb3764@mail.gmail.com> On Sun, Jan 24, 2010 at 11:28 PM, "Martin v. L?wis" wrote: [..] > There must be a specification of what format the meta-data have > to be passed, and requiring UTF-8 is the approach that would be > most compatible with the status quo. [..] > I didn't review the original patch in question, however, I would > hope that > > a) if a byte string is passed to setup, it is assumed to be UTF-8 > ? throughout. Breaking when strings come in other encodings is fine. > b) unicode strings also are supported, and are converted to UTF-8 > ? at some point. yes, that's why we have this in dist.py now: # Encoding used for the PKG-INFO files PKG_INFO_ENCODING = 'utf-8' Now my change just reunites the "unicode strings also are supported, and are converted to UTF-8 at some point." in one single place in Distutils. upload and register have a bunch of copy-pasted code, and one was changed to transform the unicode properly, and not the other one. Now they both use the same data fields, and DistributionMetadata is responsible for this conversion. Tarek From solipsis at pitrou.net Mon Jan 25 00:55:21 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Mon, 25 Jan 2010 00:55:21 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77731): sum=24 Message-ID: <20100124235521.7037E1770D@ns6635.ovh.net> py3k results for svn r77731 (hg cset 4c297b9f41df) -------------------------------------------------- test_multiprocessing leaked [24, 0, 0] references, sum=24 Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogVDPMbM', '-x', 'test_httpservers'] From nnorwitz at gmail.com Mon Jan 25 02:03:19 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 24 Jan 2010 20:03:19 -0500 Subject: [Python-checkins] Python Regression Test Failures refleak (1) Message-ID: <20100125010319.GA2821@kbk-i386-bb.psfb.org> More important issues: ---------------------- test_distutils leaked [-25, 0, 0] references, sum=-25 Less important issues: ---------------------- From python-checkins at python.org Mon Jan 25 04:31:13 2010 From: python-checkins at python.org (benjamin.peterson) Date: Mon, 25 Jan 2010 03:31:13 -0000 Subject: [Python-checkins] r77735 - in python/trunk: Lib/platform.py Lib/test/test_platform.py Misc/ACKS Misc/NEWS Message-ID: Author: benjamin.peterson Date: Mon Jan 25 04:31:13 2010 New Revision: 77735 Log: fix an UnboundLocalError when the release file is empty #7773 Modified: python/trunk/Lib/platform.py python/trunk/Lib/test/test_platform.py python/trunk/Misc/ACKS python/trunk/Misc/NEWS Modified: python/trunk/Lib/platform.py ============================================================================== --- python/trunk/Lib/platform.py (original) +++ python/trunk/Lib/platform.py Mon Jan 25 04:31:13 2010 @@ -263,6 +263,12 @@ def _parse_release_file(firstline): + # Default to empty 'version' and 'id' strings. Both defaults are used + # when 'firstline' is empty. 'id' defaults to empty when an id can not + # be deduced. + version = '' + id = '' + # Parse the first line m = _lsb_release_version.match(firstline) if m is not None: @@ -280,8 +286,6 @@ version = l[0] if len(l) > 1: id = l[1] - else: - id = '' return '', version, id def linux_distribution(distname='', version='', id='', Modified: python/trunk/Lib/test/test_platform.py ============================================================================== --- python/trunk/Lib/test/test_platform.py (original) +++ python/trunk/Lib/test/test_platform.py Mon Jan 25 04:31:13 2010 @@ -198,6 +198,7 @@ ('Red Hat Enterprise Linux release 4 (Nahant)', ('Red Hat Enterprise Linux', '4', 'Nahant')), ('CentOS release 4', ('CentOS', '4', None)), ('Rocks release 4.2.1 (Cydonia)', ('Rocks', '4.2.1', 'Cydonia')), + ('', ('', '', '')), # If there's nothing there. ): self.assertEqual(platform._parse_release_file(input), output) Modified: python/trunk/Misc/ACKS ============================================================================== --- python/trunk/Misc/ACKS (original) +++ python/trunk/Misc/ACKS Mon Jan 25 04:31:13 2010 @@ -357,6 +357,7 @@ Gerhard H?ring Mihai Ibanescu Lars Immisch +Meador Inge Tony Ingraldi John Interrante Bob Ippolito Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Mon Jan 25 04:31:13 2010 @@ -42,6 +42,9 @@ Library ------- +- Issue #7773: Fix an UnboundLocalError in platform.linux_distribution() when + the release file is empty. + - Issue #7748: Since unicode values are supported for some metadata options in Distutils, the DistributionMetadata get_* methods will now return an utf-8 encoded string for them. This ensure that the upload and register commands From python-checkins at python.org Mon Jan 25 04:35:05 2010 From: python-checkins at python.org (benjamin.peterson) Date: Mon, 25 Jan 2010 03:35:05 -0000 Subject: [Python-checkins] r77736 - in python/branches/release26-maint: Lib/platform.py Lib/test/test_platform.py Misc/ACKS Misc/NEWS Message-ID: Author: benjamin.peterson Date: Mon Jan 25 04:35:04 2010 New Revision: 77736 Log: Merged revisions 77735 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77735 | benjamin.peterson | 2010-01-24 21:31:13 -0600 (Sun, 24 Jan 2010) | 1 line fix an UnboundLocalError when the release file is empty #7773 ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/platform.py python/branches/release26-maint/Lib/test/test_platform.py python/branches/release26-maint/Misc/ACKS python/branches/release26-maint/Misc/NEWS Modified: python/branches/release26-maint/Lib/platform.py ============================================================================== --- python/branches/release26-maint/Lib/platform.py (original) +++ python/branches/release26-maint/Lib/platform.py Mon Jan 25 04:35:04 2010 @@ -247,6 +247,12 @@ def _parse_release_file(firstline): + # Default to empty 'version' and 'id' strings. Both defaults are used + # when 'firstline' is empty. 'id' defaults to empty when an id can not + # be deduced. + version = '' + id = '' + # Parse the first line m = _lsb_release_version.match(firstline) if m is not None: @@ -264,8 +270,6 @@ version = l[0] if len(l) > 1: id = l[1] - else: - id = '' return '', version, id def _test_parse_release_file(): Modified: python/branches/release26-maint/Lib/test/test_platform.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_platform.py (original) +++ python/branches/release26-maint/Lib/test/test_platform.py Mon Jan 25 04:35:04 2010 @@ -131,6 +131,24 @@ executable = executable + '.exe' res = platform.libc_ver(sys.executable) + def test_parse_release_file(self): + + for input, output in ( + # Examples of release file contents: + ('SuSE Linux 9.3 (x86-64)', ('SuSE Linux ', '9.3', 'x86-64')), + ('SUSE LINUX 10.1 (X86-64)', ('SUSE LINUX ', '10.1', 'X86-64')), + ('SUSE LINUX 10.1 (i586)', ('SUSE LINUX ', '10.1', 'i586')), + ('Fedora Core release 5 (Bordeaux)', ('Fedora Core', '5', 'Bordeaux')), + ('Red Hat Linux release 8.0 (Psyche)', ('Red Hat Linux', '8.0', 'Psyche')), + ('Red Hat Linux release 9 (Shrike)', ('Red Hat Linux', '9', 'Shrike')), + ('Red Hat Enterprise Linux release 4 (Nahant)', ('Red Hat Enterprise Linux', '4', 'Nahant')), + ('CentOS release 4', ('CentOS', '4', None)), + ('Rocks release 4.2.1 (Cydonia)', ('Rocks', '4.2.1', 'Cydonia')), + ('', ('', '', '')), # If there's nothing there. + ): + self.assertEqual(platform._parse_release_file(input), output) + + def test_main(): test_support.run_unittest( PlatformTest Modified: python/branches/release26-maint/Misc/ACKS ============================================================================== --- python/branches/release26-maint/Misc/ACKS (original) +++ python/branches/release26-maint/Misc/ACKS Mon Jan 25 04:35:04 2010 @@ -336,6 +336,7 @@ Gerhard H?ring Mihai Ibanescu Lars Immisch +Meador Inge Tony Ingraldi John Interrante Bob Ippolito Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Mon Jan 25 04:35:04 2010 @@ -53,6 +53,9 @@ Library ------- +- Issue #7773: Fix an UnboundLocalError in platform.linux_distribution() when + the release file is empty. + - Issue #7748: Since unicode values are supported for some metadata options in Distutils, the DistributionMetadata get_* methods will now return an utf-8 encoded string for them. This ensure that the upload and register commands From python-checkins at python.org Mon Jan 25 04:37:43 2010 From: python-checkins at python.org (benjamin.peterson) Date: Mon, 25 Jan 2010 03:37:43 -0000 Subject: [Python-checkins] r77737 - in python/branches/py3k: Lib/platform.py Lib/test/test_platform.py Misc/ACKS Misc/NEWS Message-ID: Author: benjamin.peterson Date: Mon Jan 25 04:37:42 2010 New Revision: 77737 Log: Merged revisions 77735 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77735 | benjamin.peterson | 2010-01-24 21:31:13 -0600 (Sun, 24 Jan 2010) | 1 line fix an UnboundLocalError when the release file is empty #7773 ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/platform.py python/branches/py3k/Lib/test/test_platform.py python/branches/py3k/Misc/ACKS python/branches/py3k/Misc/NEWS Modified: python/branches/py3k/Lib/platform.py ============================================================================== --- python/branches/py3k/Lib/platform.py (original) +++ python/branches/py3k/Lib/platform.py Mon Jan 25 04:37:42 2010 @@ -261,6 +261,12 @@ def _parse_release_file(firstline): + # Default to empty 'version' and 'id' strings. Both defaults are used + # when 'firstline' is empty. 'id' defaults to empty when an id can not + # be deduced. + version = '' + id = '' + # Parse the first line m = _lsb_release_version.match(firstline) if m is not None: @@ -278,8 +284,6 @@ version = l[0] if len(l) > 1: id = l[1] - else: - id = '' return '', version, id def linux_distribution(distname='', version='', id='', Modified: python/branches/py3k/Lib/test/test_platform.py ============================================================================== --- python/branches/py3k/Lib/test/test_platform.py (original) +++ python/branches/py3k/Lib/test/test_platform.py Mon Jan 25 04:37:42 2010 @@ -191,6 +191,7 @@ ('Red Hat Enterprise Linux release 4 (Nahant)', ('Red Hat Enterprise Linux', '4', 'Nahant')), ('CentOS release 4', ('CentOS', '4', None)), ('Rocks release 4.2.1 (Cydonia)', ('Rocks', '4.2.1', 'Cydonia')), + ('', ('', '', '')), # If there's nothing there. ): self.assertEqual(platform._parse_release_file(input), output) Modified: python/branches/py3k/Misc/ACKS ============================================================================== --- python/branches/py3k/Misc/ACKS (original) +++ python/branches/py3k/Misc/ACKS Mon Jan 25 04:37:42 2010 @@ -357,6 +357,7 @@ Gerhard H?ring Mihai Ibanescu Lars Immisch +Meador Inge Tony Ingraldi John Interrante Bob Ippolito Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Mon Jan 25 04:37:42 2010 @@ -229,6 +229,9 @@ Library ------- +- Issue #7773: Fix an UnboundLocalError in platform.linux_distribution() when + the release file is empty. + - Issue #7561: Fix crashes when using bytearray objects with the posix module. From python-checkins at python.org Mon Jan 25 04:40:54 2010 From: python-checkins at python.org (benjamin.peterson) Date: Mon, 25 Jan 2010 03:40:54 -0000 Subject: [Python-checkins] r77738 - in python/branches/release31-maint: Lib/platform.py Lib/test/test_platform.py Misc/ACKS Misc/NEWS Message-ID: Author: benjamin.peterson Date: Mon Jan 25 04:40:53 2010 New Revision: 77738 Log: Merged revisions 77737 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77737 | benjamin.peterson | 2010-01-24 21:37:42 -0600 (Sun, 24 Jan 2010) | 9 lines Merged revisions 77735 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77735 | benjamin.peterson | 2010-01-24 21:31:13 -0600 (Sun, 24 Jan 2010) | 1 line fix an UnboundLocalError when the release file is empty #7773 ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/platform.py python/branches/release31-maint/Lib/test/test_platform.py python/branches/release31-maint/Misc/ACKS python/branches/release31-maint/Misc/NEWS Modified: python/branches/release31-maint/Lib/platform.py ============================================================================== --- python/branches/release31-maint/Lib/platform.py (original) +++ python/branches/release31-maint/Lib/platform.py Mon Jan 25 04:40:53 2010 @@ -245,6 +245,12 @@ def _parse_release_file(firstline): + # Default to empty 'version' and 'id' strings. Both defaults are used + # when 'firstline' is empty. 'id' defaults to empty when an id can not + # be deduced. + version = '' + id = '' + # Parse the first line m = _lsb_release_version.match(firstline) if m is not None: @@ -262,8 +268,6 @@ version = l[0] if len(l) > 1: id = l[1] - else: - id = '' return '', version, id def linux_distribution(distname='', version='', id='', Modified: python/branches/release31-maint/Lib/test/test_platform.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_platform.py (original) +++ python/branches/release31-maint/Lib/test/test_platform.py Mon Jan 25 04:40:53 2010 @@ -191,6 +191,7 @@ ('Red Hat Enterprise Linux release 4 (Nahant)', ('Red Hat Enterprise Linux', '4', 'Nahant')), ('CentOS release 4', ('CentOS', '4', None)), ('Rocks release 4.2.1 (Cydonia)', ('Rocks', '4.2.1', 'Cydonia')), + ('', ('', '', '')), # If there's nothing there. ): self.assertEqual(platform._parse_release_file(input), output) Modified: python/branches/release31-maint/Misc/ACKS ============================================================================== --- python/branches/release31-maint/Misc/ACKS (original) +++ python/branches/release31-maint/Misc/ACKS Mon Jan 25 04:40:53 2010 @@ -347,6 +347,7 @@ Gerhard H?ring Mihai Ibanescu Lars Immisch +Meador Inge Tony Ingraldi John Interrante Bob Ippolito Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Mon Jan 25 04:40:53 2010 @@ -73,6 +73,9 @@ Library ------- +- Issue #7773: Fix an UnboundLocalError in platform.linux_distribution() when + the release file is empty. + - Issue #7561: Fix crashes when using bytearray objects with the posix module. From python-checkins at python.org Mon Jan 25 04:52:52 2010 From: python-checkins at python.org (benjamin.peterson) Date: Mon, 25 Jan 2010 03:52:52 -0000 Subject: [Python-checkins] r77739 - python/trunk/Lib/decimal.py Message-ID: Author: benjamin.peterson Date: Mon Jan 25 04:52:52 2010 New Revision: 77739 Log: mention from_float() in error message Modified: python/trunk/Lib/decimal.py Modified: python/trunk/Lib/decimal.py ============================================================================== --- python/trunk/Lib/decimal.py (original) +++ python/trunk/Lib/decimal.py Mon Jan 25 04:52:52 2010 @@ -648,8 +648,8 @@ return self if isinstance(value, float): - raise TypeError("Cannot convert float to Decimal. " + - "First convert the float to a string") + raise TypeError("Cannot convert float in Decimal constructor. " + "Use from_float class method.") raise TypeError("Cannot convert %r to Decimal" % value) From python-checkins at python.org Mon Jan 25 04:58:21 2010 From: python-checkins at python.org (benjamin.peterson) Date: Mon, 25 Jan 2010 03:58:21 -0000 Subject: [Python-checkins] r77740 - python/trunk/Lib/decimal.py Message-ID: Author: benjamin.peterson Date: Mon Jan 25 04:58:21 2010 New Revision: 77740 Log: compare types with is not == Modified: python/trunk/Lib/decimal.py Modified: python/trunk/Lib/decimal.py ============================================================================== --- python/trunk/Lib/decimal.py (original) +++ python/trunk/Lib/decimal.py Mon Jan 25 04:58:21 2010 @@ -3517,12 +3517,12 @@ return (self.__class__, (str(self),)) def __copy__(self): - if type(self) == Decimal: + if type(self) is Decimal: return self # I'm immutable; therefore I am my own clone return self.__class__(str(self)) def __deepcopy__(self, memo): - if type(self) == Decimal: + if type(self) is Decimal: return self # My components are also immutable return self.__class__(str(self)) From nnorwitz at gmail.com Mon Jan 25 06:56:23 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sun, 24 Jan 2010 21:56:23 -0800 Subject: [Python-checkins] r77730 - in python/branches/release26-maint: Lib/test/string_tests.py Lib/test/test_pprint.py Lib/test/test_support.py In-Reply-To: <4b5cb411.1567f10a.5879.ffff9bc5SMTPIN_ADDED@mx.google.com> References: <4b5cb411.1567f10a.5879.ffff9bc5SMTPIN_ADDED@mx.google.com> Message-ID: On Sun, Jan 24, 2010 at 12:56 PM, ezio.melotti wrote: > Author: ezio.melotti > Date: Sun Jan 24 21:55:31 2010 > New Revision: 77730 > > Log: > Merged revisions 77729 via svnmerge from > svn+ssh://pythondev at svn.python.org/python/trunk > > ........ > ?r77729 | ezio.melotti | 2010-01-24 22:48:35 +0200 (Sun, 24 Jan 2010) | 1 line > > ?remove archaic functions from test_support > ........ > > > Modified: > ? python/branches/release26-maint/ ? (props changed) > ? python/branches/release26-maint/Lib/test/string_tests.py > ? python/branches/release26-maint/Lib/test/test_pprint.py > ? python/branches/release26-maint/Lib/test/test_support.py I don't think the changes to test_support.py should be backported (to 2.6 or 3.1). IIRC, projects outside the Python core use test_support and this is an API change. Also, I think there should be a NEWS entry mentioning the APIs that are removed. n > > Modified: python/branches/release26-maint/Lib/test/string_tests.py > ============================================================================== > --- python/branches/release26-maint/Lib/test/string_tests.py ? ?(original) > +++ python/branches/release26-maint/Lib/test/string_tests.py ? ?Sun Jan 24 21:55:31 2010 > @@ -942,15 +942,15 @@ > ? ? ? ? self.checkraises(TypeError, 'hello', 'endswith', (42,)) > > ? ? def test___contains__(self): > - ? ? ? ?self.checkequal(True, '', '__contains__', '') ? ? ? ? # vereq('' in '', True) > - ? ? ? ?self.checkequal(True, 'abc', '__contains__', '') ? ? ?# vereq('' in 'abc', True) > - ? ? ? ?self.checkequal(False, 'abc', '__contains__', '\0') ? # vereq('\0' in 'abc', False) > - ? ? ? ?self.checkequal(True, '\0abc', '__contains__', '\0') ?# vereq('\0' in '\0abc', True) > - ? ? ? ?self.checkequal(True, 'abc\0', '__contains__', '\0') ?# vereq('\0' in 'abc\0', True) > - ? ? ? ?self.checkequal(True, '\0abc', '__contains__', 'a') ? # vereq('a' in '\0abc', True) > - ? ? ? ?self.checkequal(True, 'asdf', '__contains__', 'asdf') # vereq('asdf' in 'asdf', True) > - ? ? ? ?self.checkequal(False, 'asd', '__contains__', 'asdf') # vereq('asdf' in 'asd', False) > - ? ? ? ?self.checkequal(False, '', '__contains__', 'asdf') ? ?# vereq('asdf' in '', False) > + ? ? ? ?self.checkequal(True, '', '__contains__', '') > + ? ? ? ?self.checkequal(True, 'abc', '__contains__', '') > + ? ? ? ?self.checkequal(False, 'abc', '__contains__', '\0') > + ? ? ? ?self.checkequal(True, '\0abc', '__contains__', '\0') > + ? ? ? ?self.checkequal(True, 'abc\0', '__contains__', '\0') > + ? ? ? ?self.checkequal(True, '\0abc', '__contains__', 'a') > + ? ? ? ?self.checkequal(True, 'asdf', '__contains__', 'asdf') > + ? ? ? ?self.checkequal(False, 'asd', '__contains__', 'asdf') > + ? ? ? ?self.checkequal(False, '', '__contains__', 'asdf') > > ? ? def test_subscript(self): > ? ? ? ? self.checkequal(u'a', 'abc', '__getitem__', 0) > > Modified: python/branches/release26-maint/Lib/test/test_pprint.py > ============================================================================== > --- python/branches/release26-maint/Lib/test/test_pprint.py ? ? (original) > +++ python/branches/release26-maint/Lib/test/test_pprint.py ? ? Sun Jan 24 21:55:31 2010 > @@ -40,20 +40,19 @@ > > ? ? def test_basic(self): > ? ? ? ? # Verify .isrecursive() and .isreadable() w/o recursion > - ? ? ? ?verify = self.assert_ > ? ? ? ? pp = pprint.PrettyPrinter() > ? ? ? ? for safe in (2, 2.0, 2j, "abc", [3], (2,2), {3: 3}, uni("yaddayadda"), > ? ? ? ? ? ? ? ? ? ? ?self.a, self.b): > ? ? ? ? ? ? # module-level convenience functions > - ? ? ? ? ? ?verify(not pprint.isrecursive(safe), > - ? ? ? ? ? ? ? ? ? "expected not isrecursive for %r" % (safe,)) > - ? ? ? ? ? ?verify(pprint.isreadable(safe), > - ? ? ? ? ? ? ? ? ? "expected isreadable for %r" % (safe,)) > + ? ? ? ? ? ?self.assertFalse(pprint.isrecursive(safe), > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? "expected not isrecursive for %r" % (safe,)) > + ? ? ? ? ? ?self.assertTrue(pprint.isreadable(safe), > + ? ? ? ? ? ? ? ? ? ? ? ? ? ?"expected isreadable for %r" % (safe,)) > ? ? ? ? ? ? # PrettyPrinter methods > - ? ? ? ? ? ?verify(not pp.isrecursive(safe), > - ? ? ? ? ? ? ? ? ? "expected not isrecursive for %r" % (safe,)) > - ? ? ? ? ? ?verify(pp.isreadable(safe), > - ? ? ? ? ? ? ? ? ? "expected isreadable for %r" % (safe,)) > + ? ? ? ? ? ?self.assertFalse(pp.isrecursive(safe), > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? "expected not isrecursive for %r" % (safe,)) > + ? ? ? ? ? ?self.assertTrue(pp.isreadable(safe), > + ? ? ? ? ? ? ? ? ? ? ? ? ? ?"expected isreadable for %r" % (safe,)) > > ? ? def test_knotted(self): > ? ? ? ? # Verify .isrecursive() and .isreadable() w/ recursion > @@ -63,14 +62,13 @@ > ? ? ? ? self.d = {} > ? ? ? ? self.d[0] = self.d[1] = self.d[2] = self.d > > - ? ? ? ?verify = self.assert_ > ? ? ? ? pp = pprint.PrettyPrinter() > > ? ? ? ? for icky in self.a, self.b, self.d, (self.d, self.d): > - ? ? ? ? ? ?verify(pprint.isrecursive(icky), "expected isrecursive") > - ? ? ? ? ? ?verify(not pprint.isreadable(icky), ?"expected not isreadable") > - ? ? ? ? ? ?verify(pp.isrecursive(icky), "expected isrecursive") > - ? ? ? ? ? ?verify(not pp.isreadable(icky), ?"expected not isreadable") > + ? ? ? ? ? ?self.assertTrue(pprint.isrecursive(icky), "expected isrecursive") > + ? ? ? ? ? ?self.assertFalse(pprint.isreadable(icky), "expected not isreadable") > + ? ? ? ? ? ?self.assertTrue(pp.isrecursive(icky), "expected isrecursive") > + ? ? ? ? ? ?self.assertFalse(pp.isreadable(icky), "expected not isreadable") > > ? ? ? ? # Break the cycles. > ? ? ? ? self.d.clear() > @@ -79,31 +77,30 @@ > > ? ? ? ? for safe in self.a, self.b, self.d, (self.d, self.d): > ? ? ? ? ? ? # module-level convenience functions > - ? ? ? ? ? ?verify(not pprint.isrecursive(safe), > - ? ? ? ? ? ? ? ? ? "expected not isrecursive for %r" % (safe,)) > - ? ? ? ? ? ?verify(pprint.isreadable(safe), > - ? ? ? ? ? ? ? ? ? "expected isreadable for %r" % (safe,)) > + ? ? ? ? ? ?self.assertFalse(pprint.isrecursive(safe), > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? "expected not isrecursive for %r" % (safe,)) > + ? ? ? ? ? ?self.assertTrue(pprint.isreadable(safe), > + ? ? ? ? ? ? ? ? ? ? ? ? ? ?"expected isreadable for %r" % (safe,)) > ? ? ? ? ? ? # PrettyPrinter methods > - ? ? ? ? ? ?verify(not pp.isrecursive(safe), > - ? ? ? ? ? ? ? ? ? "expected not isrecursive for %r" % (safe,)) > - ? ? ? ? ? ?verify(pp.isreadable(safe), > - ? ? ? ? ? ? ? ? ? "expected isreadable for %r" % (safe,)) > + ? ? ? ? ? ?self.assertFalse(pp.isrecursive(safe), > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? "expected not isrecursive for %r" % (safe,)) > + ? ? ? ? ? ?self.assertTrue(pp.isreadable(safe), > + ? ? ? ? ? ? ? ? ? ? ? ? ? ?"expected isreadable for %r" % (safe,)) > > ? ? def test_unreadable(self): > ? ? ? ? # Not recursive but not readable anyway > - ? ? ? ?verify = self.assert_ > ? ? ? ? pp = pprint.PrettyPrinter() > ? ? ? ? for unreadable in type(3), pprint, pprint.isrecursive: > ? ? ? ? ? ? # module-level convenience functions > - ? ? ? ? ? ?verify(not pprint.isrecursive(unreadable), > - ? ? ? ? ? ? ? ? ? "expected not isrecursive for %r" % (unreadable,)) > - ? ? ? ? ? ?verify(not pprint.isreadable(unreadable), > - ? ? ? ? ? ? ? ? ? "expected not isreadable for %r" % (unreadable,)) > + ? ? ? ? ? ?self.assertFalse(pprint.isrecursive(unreadable), > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? "expected not isrecursive for %r" % (unreadable,)) > + ? ? ? ? ? ?self.assertFalse(pprint.isreadable(unreadable), > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? "expected not isreadable for %r" % (unreadable,)) > ? ? ? ? ? ? # PrettyPrinter methods > - ? ? ? ? ? ?verify(not pp.isrecursive(unreadable), > - ? ? ? ? ? ? ? ? ? "expected not isrecursive for %r" % (unreadable,)) > - ? ? ? ? ? ?verify(not pp.isreadable(unreadable), > - ? ? ? ? ? ? ? ? ? "expected not isreadable for %r" % (unreadable,)) > + ? ? ? ? ? ?self.assertFalse(pp.isrecursive(unreadable), > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? "expected not isrecursive for %r" % (unreadable,)) > + ? ? ? ? ? ?self.assertFalse(pp.isreadable(unreadable), > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? "expected not isreadable for %r" % (unreadable,)) > > ? ? def test_same_as_repr(self): > ? ? ? ? # Simple objects, small containers and classes that overwrite __repr__ > @@ -114,12 +111,11 @@ > ? ? ? ? # it sorted a dict display if and only if the display required > ? ? ? ? # multiple lines. ?For that reason, dicts with more than one element > ? ? ? ? # aren't tested here. > - ? ? ? ?verify = self.assert_ > ? ? ? ? for simple in (0, 0L, 0+0j, 0.0, "", uni(""), > ? ? ? ? ? ? ? ? ? ? ? ?(), tuple2(), tuple3(), > ? ? ? ? ? ? ? ? ? ? ? ?[], list2(), list3(), > ? ? ? ? ? ? ? ? ? ? ? ?{}, dict2(), dict3(), > - ? ? ? ? ? ? ? ? ? ? ? verify, pprint, > + ? ? ? ? ? ? ? ? ? ? ? self.assertTrue, pprint, > ? ? ? ? ? ? ? ? ? ? ? ?-6, -6L, -6-6j, -1.5, "x", uni("x"), (3,), [3], {3: 6}, > ? ? ? ? ? ? ? ? ? ? ? ?(1,2), [3,4], {5: 6, 7: 8}, > ? ? ? ? ? ? ? ? ? ? ? ?tuple2((1,2)), tuple3((1,2)), tuple3(range(100)), > @@ -131,8 +127,9 @@ > ? ? ? ? ? ? for function in "pformat", "saferepr": > ? ? ? ? ? ? ? ? f = getattr(pprint, function) > ? ? ? ? ? ? ? ? got = f(simple) > - ? ? ? ? ? ? ? ?verify(native == got, "expected %s got %s from pprint.%s" % > - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(native, got, function)) > + ? ? ? ? ? ? ? ?self.assertEqual(native, got, > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "expected %s got %s from pprint.%s" % > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (native, got, function)) > > ? ? def test_basic_line_wrap(self): > ? ? ? ? # verify basic line-wrapping operation > > Modified: python/branches/release26-maint/Lib/test/test_support.py > ============================================================================== > --- python/branches/release26-maint/Lib/test/test_support.py ? ?(original) > +++ python/branches/release26-maint/Lib/test/test_support.py ? ?Sun Jan 24 21:55:31 2010 > @@ -17,7 +17,7 @@ > ? ? ? ? ? ?"get_original_stdout", "unload", "unlink", "rmtree", "forget", > ? ? ? ? ? ?"is_resource_enabled", "requires", "find_unused_port", "bind_port", > ? ? ? ? ? ?"fcmp", "have_unicode", "is_jython", "TESTFN", "HOST", "FUZZ", > - ? ? ? ? ? "findfile", "verify", "vereq", "sortdict", "check_syntax_error", > + ? ? ? ? ? "findfile", "sortdict", "check_syntax_error", > ? ? ? ? ? ?"open_urlresource", "check_warnings", "CleanImport", > ? ? ? ? ? ?"EnvironmentVarGuard", "captured_output", > ? ? ? ? ? ?"captured_stdout", "TransientResource", "transient_internet", > @@ -325,30 +325,6 @@ > ? ? ? ? if os.path.exists(fn): return fn > ? ? return file > > -def verify(condition, reason='test failed'): > - ? ?"""Verify that condition is true. If not, raise TestFailed. > - > - ? ? ? The optional argument reason can be given to provide > - ? ? ? a better error text. > - ? ?""" > - > - ? ?if not condition: > - ? ? ? ?raise TestFailed(reason) > - > -def vereq(a, b): > - ? ?"""Raise TestFailed if a == b is false. > - > - ? ?This is better than verify(a == b) because, in case of failure, the > - ? ?error message incorporates repr(a) and repr(b) so you can see the > - ? ?inputs. > - > - ? ?Note that "not (a == b)" isn't necessarily the same as "a != b"; the > - ? ?former is tested. > - ? ?""" > - > - ? ?if not (a == b): > - ? ? ? ?raise TestFailed("%r == %r" % (a, b)) > - > ?def sortdict(dict): > ? ? "Like repr(dict), but in sorted order." > ? ? items = dict.items() > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins > From python-checkins at python.org Mon Jan 25 07:15:01 2010 From: python-checkins at python.org (facundo.batista) Date: Mon, 25 Jan 2010 06:15:01 -0000 Subject: [Python-checkins] r77741 - python/trunk/Doc/library/threading.rst Message-ID: Author: facundo.batista Date: Mon Jan 25 07:15:01 2010 New Revision: 77741 Log: Added a note about Event.is_set() syntax being new to 2.6 Modified: python/trunk/Doc/library/threading.rst Modified: python/trunk/Doc/library/threading.rst ============================================================================== --- python/trunk/Doc/library/threading.rst (original) +++ python/trunk/Doc/library/threading.rst Mon Jan 25 07:15:01 2010 @@ -667,6 +667,9 @@ Return true if and only if the internal flag is true. + .. versionchanged:: 2.6 + The ``is_set()`` syntax is new. + .. method:: set() Set the internal flag to true. All threads waiting for it to become true From python-checkins at python.org Mon Jan 25 08:27:33 2010 From: python-checkins at python.org (martin.v.loewis) Date: Mon, 25 Jan 2010 07:27:33 -0000 Subject: [Python-checkins] r77742 - tracker/instances/python-dev/extensions/openid_login.py Message-ID: Author: martin.v.loewis Date: Mon Jan 25 08:27:32 2010 New Revision: 77742 Log: Put traceback into error message, to debug #314. Modified: tracker/instances/python-dev/extensions/openid_login.py Modified: tracker/instances/python-dev/extensions/openid_login.py ============================================================================== --- tracker/instances/python-dev/extensions/openid_login.py (original) +++ tracker/instances/python-dev/extensions/openid_login.py Mon Jan 25 08:27:32 2010 @@ -155,7 +155,8 @@ try: signed = openid.authenticate(session, query) except Exception, e: - raise ValueError, "Authentication failed: "+repr(e) + import traceback + raise ValueError, "Authentication failed: "+traceback.format_exc() if 'openid.claimed_id' in query: if 'claimed_id' not in signed: raise ValueError, 'Incomplete signature' From python-checkins at python.org Mon Jan 25 12:24:38 2010 From: python-checkins at python.org (ezio.melotti) Date: Mon, 25 Jan 2010 11:24:38 -0000 Subject: [Python-checkins] r77743 - in python/trunk/Objects: bytearrayobject.c stringobject.c unicodeobject.c Message-ID: Author: ezio.melotti Date: Mon Jan 25 12:24:37 2010 New Revision: 77743 Log: #7775: fixed docstring for rpartition Modified: python/trunk/Objects/bytearrayobject.c python/trunk/Objects/stringobject.c python/trunk/Objects/unicodeobject.c Modified: python/trunk/Objects/bytearrayobject.c ============================================================================== --- python/trunk/Objects/bytearrayobject.c (original) +++ python/trunk/Objects/bytearrayobject.c Mon Jan 25 12:24:37 2010 @@ -2112,7 +2112,7 @@ } PyDoc_STRVAR(rpartition__doc__, -"B.rpartition(sep) -> (tail, sep, head)\n\ +"B.rpartition(sep) -> (head, sep, tail)\n\ \n\ Searches for the separator sep in B, starting at the end of B,\n\ and returns the part before it, the separator itself, and the\n\ Modified: python/trunk/Objects/stringobject.c ============================================================================== --- python/trunk/Objects/stringobject.c (original) +++ python/trunk/Objects/stringobject.c Mon Jan 25 12:24:37 2010 @@ -1495,7 +1495,7 @@ } PyDoc_STRVAR(rpartition__doc__, -"S.rpartition(sep) -> (tail, sep, head)\n\ +"S.rpartition(sep) -> (head, sep, tail)\n\ \n\ Search for the separator sep in S, starting at the end of S, and return\n\ the part before it, the separator itself, and the part after it. If the\n\ Modified: python/trunk/Objects/unicodeobject.c ============================================================================== --- python/trunk/Objects/unicodeobject.c (original) +++ python/trunk/Objects/unicodeobject.c Mon Jan 25 12:24:37 2010 @@ -7461,7 +7461,7 @@ } PyDoc_STRVAR(rpartition__doc__, - "S.rpartition(sep) -> (tail, sep, head)\n\ + "S.rpartition(sep) -> (head, sep, tail)\n\ \n\ Search for the separator sep in S, starting at the end of S, and return\n\ the part before it, the separator itself, and the part after it. If the\n\ From python-checkins at python.org Mon Jan 25 12:46:11 2010 From: python-checkins at python.org (ezio.melotti) Date: Mon, 25 Jan 2010 11:46:11 -0000 Subject: [Python-checkins] r77744 - in python/branches/release26-maint: Objects/bytearrayobject.c Objects/stringobject.c Objects/unicodeobject.c Message-ID: Author: ezio.melotti Date: Mon Jan 25 12:46:11 2010 New Revision: 77744 Log: Merged revisions 77743 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77743 | ezio.melotti | 2010-01-25 13:24:37 +0200 (Mon, 25 Jan 2010) | 1 line #7775: fixed docstring for rpartition ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Objects/bytearrayobject.c python/branches/release26-maint/Objects/stringobject.c python/branches/release26-maint/Objects/unicodeobject.c Modified: python/branches/release26-maint/Objects/bytearrayobject.c ============================================================================== --- python/branches/release26-maint/Objects/bytearrayobject.c (original) +++ python/branches/release26-maint/Objects/bytearrayobject.c Mon Jan 25 12:46:11 2010 @@ -2390,7 +2390,7 @@ } PyDoc_STRVAR(rpartition__doc__, -"B.rpartition(sep) -> (tail, sep, head)\n\ +"B.rpartition(sep) -> (head, sep, tail)\n\ \n\ Searches for the separator sep in B, starting at the end of B,\n\ and returns the part before it, the separator itself, and the\n\ Modified: python/branches/release26-maint/Objects/stringobject.c ============================================================================== --- python/branches/release26-maint/Objects/stringobject.c (original) +++ python/branches/release26-maint/Objects/stringobject.c Mon Jan 25 12:46:11 2010 @@ -1620,7 +1620,7 @@ } PyDoc_STRVAR(rpartition__doc__, -"S.rpartition(sep) -> (tail, sep, head)\n\ +"S.rpartition(sep) -> (head, sep, tail)\n\ \n\ Search for the separator sep in S, starting at the end of S, and return\n\ the part before it, the separator itself, and the part after it. If the\n\ Modified: python/branches/release26-maint/Objects/unicodeobject.c ============================================================================== --- python/branches/release26-maint/Objects/unicodeobject.c (original) +++ python/branches/release26-maint/Objects/unicodeobject.c Mon Jan 25 12:46:11 2010 @@ -7603,7 +7603,7 @@ } PyDoc_STRVAR(rpartition__doc__, - "S.rpartition(sep) -> (tail, sep, head)\n\ + "S.rpartition(sep) -> (head, sep, tail)\n\ \n\ Search for the separator sep in S, starting at the end of S, and return\n\ the part before it, the separator itself, and the part after it. If the\n\ From python-checkins at python.org Mon Jan 25 12:58:29 2010 From: python-checkins at python.org (ezio.melotti) Date: Mon, 25 Jan 2010 11:58:29 -0000 Subject: [Python-checkins] r77745 - in python/branches/py3k: Objects/bytearrayobject.c Objects/bytesobject.c Objects/unicodeobject.c Message-ID: Author: ezio.melotti Date: Mon Jan 25 12:58:28 2010 New Revision: 77745 Log: Merged revisions 77743 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77743 | ezio.melotti | 2010-01-25 13:24:37 +0200 (Mon, 25 Jan 2010) | 1 line #7775: fixed docstring for rpartition ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Objects/bytearrayobject.c python/branches/py3k/Objects/bytesobject.c python/branches/py3k/Objects/unicodeobject.c Modified: python/branches/py3k/Objects/bytearrayobject.c ============================================================================== --- python/branches/py3k/Objects/bytearrayobject.c (original) +++ python/branches/py3k/Objects/bytearrayobject.c Mon Jan 25 12:58:28 2010 @@ -2044,7 +2044,7 @@ } PyDoc_STRVAR(rpartition__doc__, -"B.rpartition(sep) -> (tail, sep, head)\n\ +"B.rpartition(sep) -> (head, sep, tail)\n\ \n\ Search for the separator sep in B, starting at the end of B,\n\ and return the part before it, the separator itself, and the\n\ Modified: python/branches/py3k/Objects/bytesobject.c ============================================================================== --- python/branches/py3k/Objects/bytesobject.c (original) +++ python/branches/py3k/Objects/bytesobject.c Mon Jan 25 12:58:28 2010 @@ -1061,7 +1061,7 @@ } PyDoc_STRVAR(rpartition__doc__, -"B.rpartition(sep) -> (tail, sep, head)\n\ +"B.rpartition(sep) -> (head, sep, tail)\n\ \n\ Search for the separator sep in B, starting at the end of B,\n\ and return the part before it, the separator itself, and the\n\ Modified: python/branches/py3k/Objects/unicodeobject.c ============================================================================== --- python/branches/py3k/Objects/unicodeobject.c (original) +++ python/branches/py3k/Objects/unicodeobject.c Mon Jan 25 12:58:28 2010 @@ -8201,7 +8201,7 @@ } PyDoc_STRVAR(rpartition__doc__, - "S.rpartition(sep) -> (tail, sep, head)\n\ + "S.rpartition(sep) -> (head, sep, tail)\n\ \n\ Search for the separator sep in S, starting at the end of S, and return\n\ the part before it, the separator itself, and the part after it. If the\n\ From python-checkins at python.org Mon Jan 25 13:02:24 2010 From: python-checkins at python.org (ezio.melotti) Date: Mon, 25 Jan 2010 12:02:24 -0000 Subject: [Python-checkins] r77746 - in python/branches/release31-maint: Objects/bytearrayobject.c Objects/bytesobject.c Objects/unicodeobject.c Message-ID: Author: ezio.melotti Date: Mon Jan 25 13:02:24 2010 New Revision: 77746 Log: Merged revisions 77745 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77745 | ezio.melotti | 2010-01-25 13:58:28 +0200 (Mon, 25 Jan 2010) | 9 lines Merged revisions 77743 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77743 | ezio.melotti | 2010-01-25 13:24:37 +0200 (Mon, 25 Jan 2010) | 1 line #7775: fixed docstring for rpartition ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Objects/bytearrayobject.c python/branches/release31-maint/Objects/bytesobject.c python/branches/release31-maint/Objects/unicodeobject.c Modified: python/branches/release31-maint/Objects/bytearrayobject.c ============================================================================== --- python/branches/release31-maint/Objects/bytearrayobject.c (original) +++ python/branches/release31-maint/Objects/bytearrayobject.c Mon Jan 25 13:02:24 2010 @@ -2337,7 +2337,7 @@ } PyDoc_STRVAR(rpartition__doc__, -"B.rpartition(sep) -> (tail, sep, head)\n\ +"B.rpartition(sep) -> (head, sep, tail)\n\ \n\ Search for the separator sep in B, starting at the end of B,\n\ and return the part before it, the separator itself, and the\n\ Modified: python/branches/release31-maint/Objects/bytesobject.c ============================================================================== --- python/branches/release31-maint/Objects/bytesobject.c (original) +++ python/branches/release31-maint/Objects/bytesobject.c Mon Jan 25 13:02:24 2010 @@ -1250,7 +1250,7 @@ } PyDoc_STRVAR(rpartition__doc__, -"B.rpartition(sep) -> (tail, sep, head)\n\ +"B.rpartition(sep) -> (head, sep, tail)\n\ \n\ Search for the separator sep in B, starting at the end of B,\n\ and return the part before it, the separator itself, and the\n\ Modified: python/branches/release31-maint/Objects/unicodeobject.c ============================================================================== --- python/branches/release31-maint/Objects/unicodeobject.c (original) +++ python/branches/release31-maint/Objects/unicodeobject.c Mon Jan 25 13:02:24 2010 @@ -8386,7 +8386,7 @@ } PyDoc_STRVAR(rpartition__doc__, - "S.rpartition(sep) -> (tail, sep, head)\n\ + "S.rpartition(sep) -> (head, sep, tail)\n\ \n\ Search for the separator sep in S, starting at the end of S, and return\n\ the part before it, the separator itself, and the part after it. If the\n\ From python-checkins at python.org Mon Jan 25 13:13:03 2010 From: python-checkins at python.org (ezio.melotti) Date: Mon, 25 Jan 2010 12:13:03 -0000 Subject: [Python-checkins] r77747 - python/branches/release26-maint/Lib/test/test_support.py Message-ID: Author: ezio.melotti Date: Mon Jan 25 13:13:02 2010 New Revision: 77747 Log: Revert r77730 and add back verify and vereq in case other projects use them, but leave the changes in test_pprint and string_tests. Modified: python/branches/release26-maint/Lib/test/test_support.py Modified: python/branches/release26-maint/Lib/test/test_support.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_support.py (original) +++ python/branches/release26-maint/Lib/test/test_support.py Mon Jan 25 13:13:02 2010 @@ -17,7 +17,7 @@ "get_original_stdout", "unload", "unlink", "rmtree", "forget", "is_resource_enabled", "requires", "find_unused_port", "bind_port", "fcmp", "have_unicode", "is_jython", "TESTFN", "HOST", "FUZZ", - "findfile", "sortdict", "check_syntax_error", + "findfile", "verify", "vereq", "sortdict", "check_syntax_error", "open_urlresource", "check_warnings", "CleanImport", "EnvironmentVarGuard", "captured_output", "captured_stdout", "TransientResource", "transient_internet", @@ -325,6 +325,30 @@ if os.path.exists(fn): return fn return file +def verify(condition, reason='test failed'): + """Verify that condition is true. If not, raise TestFailed. + + The optional argument reason can be given to provide + a better error text. + """ + + if not condition: + raise TestFailed(reason) + +def vereq(a, b): + """Raise TestFailed if a == b is false. + + This is better than verify(a == b) because, in case of failure, the + error message incorporates repr(a) and repr(b) so you can see the + inputs. + + Note that "not (a == b)" isn't necessarily the same as "a != b"; the + former is tested. + """ + + if not (a == b): + raise TestFailed("%r == %r" % (a, b)) + def sortdict(dict): "Like repr(dict), but in sorted order." items = dict.items() From python-checkins at python.org Mon Jan 25 13:20:04 2010 From: python-checkins at python.org (ezio.melotti) Date: Mon, 25 Jan 2010 12:20:04 -0000 Subject: [Python-checkins] r77748 - python/branches/release31-maint/Lib/test/support.py Message-ID: Author: ezio.melotti Date: Mon Jan 25 13:20:04 2010 New Revision: 77748 Log: Revert r77732 and add back verify and vereq in case other projects use them, but leave the changes in test_pprint and string_tests. Modified: python/branches/release31-maint/Lib/test/support.py Modified: python/branches/release31-maint/Lib/test/support.py ============================================================================== --- python/branches/release31-maint/Lib/test/support.py (original) +++ python/branches/release31-maint/Lib/test/support.py Mon Jan 25 13:20:04 2010 @@ -21,8 +21,8 @@ "verbose", "use_resources", "max_memuse", "record_original_stdout", "get_original_stdout", "unload", "unlink", "rmtree", "forget", "is_resource_enabled", "requires", "find_unused_port", "bind_port", - "fcmp", "is_jython", "TESTFN", "HOST", "FUZZ", "findfile", - "sortdict", "check_syntax_error", "open_urlresource", + "fcmp", "is_jython", "TESTFN", "HOST", "FUZZ", "findfile", "verify", + "vereq", "sortdict", "check_syntax_error", "open_urlresource", "check_warnings", "CleanImport", "EnvironmentVarGuard", "TransientResource", "captured_output", "captured_stdout", "time_out", "socket_peer_reset", "ioerror_peer_reset", @@ -396,6 +396,30 @@ if os.path.exists(fn): return fn return file +def verify(condition, reason='test failed'): + """Verify that condition is true. If not, raise TestFailed. + + The optional argument reason can be given to provide + a better error text. + """ + + if not condition: + raise TestFailed(reason) + +def vereq(a, b): + """Raise TestFailed if a == b is false. + + This is better than verify(a == b) because, in case of failure, the + error message incorporates repr(a) and repr(b) so you can see the + inputs. + + Note that "not (a == b)" isn't necessarily the same as "a != b"; the + former is tested. + """ + + if not (a == b): + raise TestFailed("%r == %r" % (a, b)) + def sortdict(dict): "Like repr(dict), but in sorted order." items = sorted(dict.items()) From python-checkins at python.org Mon Jan 25 13:37:02 2010 From: python-checkins at python.org (ezio.melotti) Date: Mon, 25 Jan 2010 12:37:02 -0000 Subject: [Python-checkins] r77749 - python/trunk/Misc/NEWS Message-ID: Author: ezio.melotti Date: Mon Jan 25 13:37:02 2010 New Revision: 77749 Log: Add a news entry for the functions verify and vereq that have been removed in r77729 and r77731 Modified: python/trunk/Misc/NEWS Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Mon Jan 25 13:37:02 2010 @@ -42,6 +42,8 @@ Library ------- +- Removed the functions 'verify' and 'vereq' from Lib/test/test_support.py. + - Issue #7773: Fix an UnboundLocalError in platform.linux_distribution() when the release file is empty. From python-checkins at python.org Mon Jan 25 13:39:47 2010 From: python-checkins at python.org (ezio.melotti) Date: Mon, 25 Jan 2010 12:39:47 -0000 Subject: [Python-checkins] r77750 - in python/branches/py3k: Misc/NEWS Message-ID: Author: ezio.melotti Date: Mon Jan 25 13:39:47 2010 New Revision: 77750 Log: Merged revisions 77749 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77749 | ezio.melotti | 2010-01-25 14:37:02 +0200 (Mon, 25 Jan 2010) | 1 line Add a news entry for the functions verify and vereq that have been removed in r77729 and r77731 ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Misc/NEWS Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Mon Jan 25 13:39:47 2010 @@ -229,6 +229,8 @@ Library ------- +- Removed the functions 'verify' and 'vereq' from Lib/test/support.py. + - Issue #7773: Fix an UnboundLocalError in platform.linux_distribution() when the release file is empty. From python-checkins at python.org Mon Jan 25 20:20:31 2010 From: python-checkins at python.org (raymond.hettinger) Date: Mon, 25 Jan 2010 19:20:31 -0000 Subject: [Python-checkins] r77751 - python/branches/release26-maint/Doc/library/itertools.rst Message-ID: Author: raymond.hettinger Date: Mon Jan 25 20:20:30 2010 New Revision: 77751 Log: Fix markup. Modified: python/branches/release26-maint/Doc/library/itertools.rst Modified: python/branches/release26-maint/Doc/library/itertools.rst ============================================================================== --- python/branches/release26-maint/Doc/library/itertools.rst (original) +++ python/branches/release26-maint/Doc/library/itertools.rst Mon Jan 25 20:20:30 2010 @@ -760,7 +760,7 @@ Note, many of the above recipes can be optimized by replacing global lookups with local variables defined as default values. For example, the -*dotproduct* recipe can be written as: +*dotproduct* recipe can be written as:: def dotproduct(vec1, vec2, sum=sum, imap=imap, mul=operator.mul): return sum(imap(mul, vec1, vec2)) From python-checkins at python.org Tue Jan 26 00:19:57 2010 From: python-checkins at python.org (tarek.ziade) Date: Mon, 25 Jan 2010 23:19:57 -0000 Subject: [Python-checkins] r77752 - python/trunk/Lib/sysconfig.py Message-ID: Author: tarek.ziade Date: Tue Jan 26 00:19:56 2010 New Revision: 77752 Log: switched the call order so this call works without suffering from issue #7774 Modified: python/trunk/Lib/sysconfig.py Modified: python/trunk/Lib/sysconfig.py ============================================================================== --- python/trunk/Lib/sysconfig.py (original) +++ python/trunk/Lib/sysconfig.py Tue Jan 26 00:19:56 2010 @@ -84,7 +84,7 @@ _EXEC_PREFIX = os.path.normpath(sys.exec_prefix) _CONFIG_VARS = None _USER_BASE = None -_PROJECT_BASE = os.path.dirname(abspath(sys.executable)) +_PROJECT_BASE = abspath(os.path.dirname(sys.executable)) if os.name == "nt" and "pcbuild" in _PROJECT_BASE[-8:].lower(): _PROJECT_BASE = abspath(os.path.join(_PROJECT_BASE, pardir)) From python-checkins at python.org Tue Jan 26 00:21:06 2010 From: python-checkins at python.org (tarek.ziade) Date: Mon, 25 Jan 2010 23:21:06 -0000 Subject: [Python-checkins] r77753 - python/branches/release26-maint Message-ID: Author: tarek.ziade Date: Tue Jan 26 00:21:06 2010 New Revision: 77753 Log: Blocked revisions 77752 via svnmerge ........ r77752 | tarek.ziade | 2010-01-26 00:19:56 +0100 (Tue, 26 Jan 2010) | 1 line switched the call order so this call works without suffering from issue #7774 ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Tue Jan 26 00:42:39 2010 From: python-checkins at python.org (martin.v.loewis) Date: Mon, 25 Jan 2010 23:42:39 -0000 Subject: [Python-checkins] r77754 - tracker/instances/python-dev/extensions/openid_login.py Message-ID: Author: martin.v.loewis Date: Tue Jan 26 00:42:39 2010 New Revision: 77754 Log: Streamline authentication: recall claimed ID from session, discover provider-returned ID for consistency. Modified: tracker/instances/python-dev/extensions/openid_login.py Modified: tracker/instances/python-dev/extensions/openid_login.py ============================================================================== --- tracker/instances/python-dev/extensions/openid_login.py (original) +++ tracker/instances/python-dev/extensions/openid_login.py Tue Jan 26 00:42:39 2010 @@ -50,7 +50,34 @@ session.mac_key = session_data['mac_key'] session.expires = now + date.Interval(int(session_data['expires_in'])) self.db.commit() - return session + return session + + def authenticate(self, session, query): + '''Authenticate an OpenID indirect response, and return the claimed ID''' + try: + signed = openid.authenticate(session, query) + except Exception, e: + raise ValueError, "Authentication failed: "+str(e) + if openid.is_op_endpoint(session.stypes): + # Provider-guided login: provider ought to report claimed ID + if 'openid.claimed_id' in query: + claimed = query['openid.claimed_id'][0] + else: + raise ValueError, 'incomplete response' + # OpenID 11.2: verify that provider is authorized to assert ID + discovered = openid.discover(claimed) + if not discovered or discovered[1] != session.url: + raise ValueError, "Provider %s is not authorized to make assertions about %s" % (session.url, claimed) + else: + # User entered claimed ID, stored in session object + claimed = session.provider_id + if not openid.is_compat_1x(session.stypes): + # can only check correct claimed ID for OpenID 2.0 + if 'openid.claimed_id' not in query or claimed != query['openid.claimed_id'][0]: + # assertion is not about an ID, or about a different ID; refuse to accept + raise ValueError, "Provider did not assert your ID" + return claimed + class OpenidLogin(LoginAction, Openid): 'Extended versoin of LoginAction, supporting OpenID identifiers in username field.' @@ -107,7 +134,7 @@ session.assoc_handle, return_to, realm=realm) raise Redirect, url -class OpenidReturn(Action): +class OpenidReturn(Action, Openid): def handle(self): # parse again to get cgi kind of result query = cgi.parse_qs(self.client.env['QUERY_STRING']) @@ -152,20 +179,7 @@ except KeyError: raise ValueError, 'Not authenticated (no session)' session = self.db.openid_session.getnode(session[0]) - try: - signed = openid.authenticate(session, query) - except Exception, e: - import traceback - raise ValueError, "Authentication failed: "+traceback.format_exc() - if 'openid.claimed_id' in query: - if 'claimed_id' not in signed: - raise ValueError, 'Incomplete signature' - claimed = query['openid.claimed_id'][0] - else: - # OpenID 1, claimed ID not reported - should set cookie - if 'identity' not in signed: - raise ValueError, 'Incomplete signature' - claimed = query['openid.identity'][0] + claimed = self.authenticate(session, query) if self.user != 'anonymous': # Existing user claims OpenID @@ -244,7 +258,7 @@ self.db.user.set(self.userid, openids=' '.join(openids)) self.db.commit() -class OpenidRegister(RegisterAction): +class OpenidRegister(RegisterAction, Openid): def handle(self): query = {} if 'openid.identity' not in self.form: @@ -263,20 +277,7 @@ query[key].append(value) except KeyError: query[key] = [value] - try: - signed = openid.authenticate(session, query) - except Exception, e: - raise ValueError, "Authentication failed: "+repr(e) - if 'openid.claimed_id' in query: - if 'claimed_id' not in signed: - raise ValueError, 'Incomplete signature' - claimed = query['openid.claimed_id'][0] - else: - # OpenID 1, claimed ID not reported - should set cookie - if 'identity' not in signed: - raise ValueError, 'Incomplete signature' - claimed = query['openid.identity'][0] - + claimed = self.authenticate(session, query) # OpenID signature is still authentic, now pass it on to the base # register method; also fake password self.form.value.append(cgi.MiniFieldStorage('openids', claimed)) From solipsis at pitrou.net Tue Jan 26 00:59:26 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Tue, 26 Jan 2010 00:59:26 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77750): sum=0 Message-ID: <20100125235926.376E41770D@ns6635.ovh.net> py3k results for svn r77750 (hg cset ece6f4fb5793) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogH41oVS', '-x', 'test_httpservers'] From python-checkins at python.org Tue Jan 26 16:57:21 2010 From: python-checkins at python.org (ezio.melotti) Date: Tue, 26 Jan 2010 15:57:21 -0000 Subject: [Python-checkins] r77755 - in python/trunk/Lib/json: decoder.py encoder.py tests/test_dump.py Message-ID: Author: ezio.melotti Date: Tue Jan 26 16:57:21 2010 New Revision: 77755 Log: #7092: fix DeprecationWarnings for json when the tests are run with -3 -Wd. Modified: python/trunk/Lib/json/decoder.py python/trunk/Lib/json/encoder.py python/trunk/Lib/json/tests/test_dump.py Modified: python/trunk/Lib/json/decoder.py ============================================================================== --- python/trunk/Lib/json/decoder.py (original) +++ python/trunk/Lib/json/decoder.py Tue Jan 26 16:57:21 2010 @@ -146,8 +146,9 @@ WHITESPACE = re.compile(r'[ \t\n\r]*', FLAGS) WHITESPACE_STR = ' \t\n\r' -def JSONObject((s, end), encoding, strict, scan_once, object_hook, +def JSONObject(s_and_end, encoding, strict, scan_once, object_hook, object_pairs_hook, _w=WHITESPACE.match, _ws=WHITESPACE_STR): + s, end = s_and_end pairs = [] pairs_append = pairs.append # Use a slice to prevent IndexError from being raised, the following @@ -227,7 +228,8 @@ pairs = object_hook(pairs) return pairs, end -def JSONArray((s, end), scan_once, _w=WHITESPACE.match, _ws=WHITESPACE_STR): +def JSONArray(s_and_end, scan_once, _w=WHITESPACE.match, _ws=WHITESPACE_STR): + s, end = s_and_end values = [] nextchar = s[end:end + 1] if nextchar in _ws: Modified: python/trunk/Lib/json/encoder.py ============================================================================== --- python/trunk/Lib/json/encoder.py (original) +++ python/trunk/Lib/json/encoder.py Tue Jan 26 16:57:21 2010 @@ -266,8 +266,6 @@ def _make_iterencode(markers, _default, _encoder, _indent, _floatstr, _key_separator, _item_separator, _sort_keys, _skipkeys, _one_shot, ## HACK: hand-optimized bytecode; turn globals into locals - False=False, - True=True, ValueError=ValueError, basestring=basestring, dict=dict, @@ -354,8 +352,7 @@ item_separator = _item_separator first = True if _sort_keys: - items = dct.items() - items.sort(key=lambda kv: kv[0]) + items = sorted(dct.items(), key=lambda kv: kv[0]) else: items = dct.iteritems() for key, value in items: Modified: python/trunk/Lib/json/tests/test_dump.py ============================================================================== --- python/trunk/Lib/json/tests/test_dump.py (original) +++ python/trunk/Lib/json/tests/test_dump.py Tue Jan 26 16:57:21 2010 @@ -17,5 +17,5 @@ {True: False, False: True}, sort_keys=True), '{"false": true, "true": false}') self.assertEquals(json.dumps( - {2: 3.0, 4.0: 5L, False: 1, 6L: True, "7": 0}, sort_keys=True), - '{"false": 1, "2": 3.0, "4.0": 5, "6": true, "7": 0}') + {2: 3.0, 4.0: 5L, False: 1, 6L: True}, sort_keys=True), + '{"false": 1, "2": 3.0, "4.0": 5, "6": true}') From python-checkins at python.org Tue Jan 26 18:20:37 2010 From: python-checkins at python.org (tarek.ziade) Date: Tue, 26 Jan 2010 17:20:37 -0000 Subject: [Python-checkins] r77756 - in python/trunk/Lib/distutils: command/bdist_msi.py tests/test_bdist_msi.py Message-ID: Author: tarek.ziade Date: Tue Jan 26 18:20:37 2010 New Revision: 77756 Log: fixed bdist_msi imports and added a test module for distutils.command.bdist_msi Added: python/trunk/Lib/distutils/tests/test_bdist_msi.py Modified: python/trunk/Lib/distutils/command/bdist_msi.py Modified: python/trunk/Lib/distutils/command/bdist_msi.py ============================================================================== --- python/trunk/Lib/distutils/command/bdist_msi.py (original) +++ python/trunk/Lib/distutils/command/bdist_msi.py Tue Jan 26 18:20:37 2010 @@ -6,15 +6,15 @@ """ Implements the bdist_msi command. """ - import sys, os +from sysconfig import get_python_version, get_platform + from distutils.core import Command from distutils.dir_util import remove_tree -from distutils.sysconfig import get_python_version from distutils.version import StrictVersion from distutils.errors import DistutilsOptionError -from distutils.util import get_platform from distutils import log + import msilib from msilib import schema, sequence, text from msilib import Directory, Feature, Dialog, add_data Added: python/trunk/Lib/distutils/tests/test_bdist_msi.py ============================================================================== --- (empty file) +++ python/trunk/Lib/distutils/tests/test_bdist_msi.py Tue Jan 26 18:20:37 2010 @@ -0,0 +1,23 @@ +"""Tests for distutils.command.bdist_msi.""" +import unittest +import sys + +from distutils.tests import support + + at unittest.skipUnless(sys.platform=="win32", "These tests are only for win32") +class BDistMSITestCase(support.TempdirManager, + support.LoggingSilencer, + unittest.TestCase): + + def test_minial(self): + # minimal test XXX need more tests + from distutils.command.bdist_msi import bdist_msi + pkg_pth, dist = self.create_dist() + cmd = bdist_msi(dist) + cmd.ensure_finalized() + +def test_suite(): + return unittest.makeSuite(BDistMSITestCase) + +if __name__ == '__main__': + test_support.run_unittest(test_suite()) From python-checkins at python.org Tue Jan 26 18:21:49 2010 From: python-checkins at python.org (tarek.ziade) Date: Tue, 26 Jan 2010 17:21:49 -0000 Subject: [Python-checkins] r77757 - python/branches/release26-maint Message-ID: Author: tarek.ziade Date: Tue Jan 26 18:21:48 2010 New Revision: 77757 Log: Blocked revisions 77756 via svnmerge ........ r77756 | tarek.ziade | 2010-01-26 18:20:37 +0100 (Tue, 26 Jan 2010) | 1 line fixed bdist_msi imports and added a test module for distutils.command.bdist_msi ........ Modified: python/branches/release26-maint/ (props changed) From mal at egenix.com Tue Jan 26 19:12:45 2010 From: mal at egenix.com (M.-A. Lemburg) Date: Tue, 26 Jan 2010 19:12:45 +0100 Subject: [Python-checkins] r77756 - in python/trunk/Lib/distutils: command/bdist_msi.py tests/test_bdist_msi.py In-Reply-To: <20100126172044.244D1405084@mail.egenix.com> References: <20100126172044.244D1405084@mail.egenix.com> Message-ID: <4B5F309D.6080002@egenix.com> Hi Tarek, I noticed that you have removed get_platform from the distutils.util module. This will break a lot of setup.py code out there. Please add a from sysconfig import get_platform to the distutils.util module to restore compatibility. Also note that a lot of setup.py code does monkey patching of get_platform() to fix certain inefficiencies of its implementation, so I'm not sure whether changing the distutils imports to load it directly from sysconfig will really do good. Thanks. tarek.ziade wrote: > Author: tarek.ziade > Date: Tue Jan 26 18:20:37 2010 > New Revision: 77756 > > Log: > fixed bdist_msi imports and added a test module for distutils.command.bdist_msi > > Added: > python/trunk/Lib/distutils/tests/test_bdist_msi.py > Modified: > python/trunk/Lib/distutils/command/bdist_msi.py > > Modified: python/trunk/Lib/distutils/command/bdist_msi.py > ============================================================================== > --- python/trunk/Lib/distutils/command/bdist_msi.py (original) > +++ python/trunk/Lib/distutils/command/bdist_msi.py Tue Jan 26 18:20:37 2010 > @@ -6,15 +6,15 @@ > """ > Implements the bdist_msi command. > """ > - > import sys, os > +from sysconfig import get_python_version, get_platform > + > from distutils.core import Command > from distutils.dir_util import remove_tree > -from distutils.sysconfig import get_python_version > from distutils.version import StrictVersion > from distutils.errors import DistutilsOptionError > -from distutils.util import get_platform > from distutils import log > + > import msilib > from msilib import schema, sequence, text > from msilib import Directory, Feature, Dialog, add_data > > Added: python/trunk/Lib/distutils/tests/test_bdist_msi.py > ============================================================================== > --- (empty file) > +++ python/trunk/Lib/distutils/tests/test_bdist_msi.py Tue Jan 26 18:20:37 2010 > @@ -0,0 +1,23 @@ > +"""Tests for distutils.command.bdist_msi.""" > +import unittest > +import sys > + > +from distutils.tests import support > + > + at unittest.skipUnless(sys.platform=="win32", "These tests are only for win32") > +class BDistMSITestCase(support.TempdirManager, > + support.LoggingSilencer, > + unittest.TestCase): > + > + def test_minial(self): > + # minimal test XXX need more tests > + from distutils.command.bdist_msi import bdist_msi > + pkg_pth, dist = self.create_dist() > + cmd = bdist_msi(dist) > + cmd.ensure_finalized() > + > +def test_suite(): > + return unittest.makeSuite(BDistMSITestCase) > + > +if __name__ == '__main__': > + test_support.run_unittest(test_suite()) > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Source (#1, Jan 26 2010) >>> Python/Zope Consulting and Support ... http://www.egenix.com/ >>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/ >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/ ________________________________________________________________________ ::: Try our new mxODBC.Connect Python Database Interface for free ! :::: eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg Registered at Amtsgericht Duesseldorf: HRB 46611 http://www.egenix.com/company/contact/ From ziade.tarek at gmail.com Tue Jan 26 19:32:44 2010 From: ziade.tarek at gmail.com (=?ISO-8859-1?Q?Tarek_Ziad=E9?=) Date: Tue, 26 Jan 2010 19:32:44 +0100 Subject: [Python-checkins] r77756 - in python/trunk/Lib/distutils: command/bdist_msi.py tests/test_bdist_msi.py In-Reply-To: <4B5F309D.6080002@egenix.com> References: <20100126172044.244D1405084@mail.egenix.com> <4B5F309D.6080002@egenix.com> Message-ID: <94bdd2611001261032uee1f566x5f760713c81bb2bb@mail.gmail.com> On Tue, Jan 26, 2010 at 7:12 PM, M.-A. Lemburg wrote: > Hi Tarek, > > I noticed that you have removed get_platform from the distutils.util > module. This will break a lot of setup.py code out there. > > Please add a > > ? ? ? ?from sysconfig import get_platform > > to the distutils.util module to restore compatibility. > > Also note that a lot of setup.py code does monkey patching of > get_platform() to fix certain inefficiencies of its implementation, > so I'm not sure whether changing the distutils imports to load > it directly from sysconfig will really do good. That's one of the reason why I kept the API and I've added a deprecation warning at first, but then you suggested in python-dev that I should remove them and just document the fact that the API was relocated. I can put it back like I've first did it Tarek -- Tarek Ziad? | http://ziade.org From mal at egenix.com Tue Jan 26 19:42:43 2010 From: mal at egenix.com (M.-A. Lemburg) Date: Tue, 26 Jan 2010 19:42:43 +0100 Subject: [Python-checkins] r77756 - in python/trunk/Lib/distutils: command/bdist_msi.py tests/test_bdist_msi.py In-Reply-To: <4B5F309D.6080002@egenix.com> References: <20100126172044.244D1405084@mail.egenix.com> <4B5F309D.6080002@egenix.com> Message-ID: <4B5F37A3.8070300@egenix.com> M.-A. Lemburg wrote: > Hi Tarek, > > I noticed that you have removed get_platform from the distutils.util > module. This will break a lot of setup.py code out there. > > Please add a > > from sysconfig import get_platform > > to the distutils.util module to restore compatibility. > > Also note that a lot of setup.py code does monkey patching of > get_platform() to fix certain inefficiencies of its implementation, > so I'm not sure whether changing the distutils imports to load > it directly from sysconfig will really do good. Likewise, distutils.sysconfig's customize_compiler() was moved to distutils.ccompiler without a b/w compatible import in sysconfig. distutils.sysconfig's get_python_inc() is deprecated, but there's no replacement for it in sysconfig. IMHO, there should be one to maintain b/w compatibility. In general, I don't think that we should add lots and lots of deprecations for moved imports. Just reimport the APIs from the new locations in the old locations and be done with it. There's no real benefit from breaking apps in a minor release. We've been through that and felt the pain with the hash function reorg - this caused lots of noise without really buying us anything. Major module reorganization should be left to major releases. Thanks. > tarek.ziade wrote: >> Author: tarek.ziade >> Date: Tue Jan 26 18:20:37 2010 >> New Revision: 77756 >> >> Log: >> fixed bdist_msi imports and added a test module for distutils.command.bdist_msi >> >> Added: >> python/trunk/Lib/distutils/tests/test_bdist_msi.py >> Modified: >> python/trunk/Lib/distutils/command/bdist_msi.py >> >> Modified: python/trunk/Lib/distutils/command/bdist_msi.py >> ============================================================================== >> --- python/trunk/Lib/distutils/command/bdist_msi.py (original) >> +++ python/trunk/Lib/distutils/command/bdist_msi.py Tue Jan 26 18:20:37 2010 >> @@ -6,15 +6,15 @@ >> """ >> Implements the bdist_msi command. >> """ >> - >> import sys, os >> +from sysconfig import get_python_version, get_platform >> + >> from distutils.core import Command >> from distutils.dir_util import remove_tree >> -from distutils.sysconfig import get_python_version >> from distutils.version import StrictVersion >> from distutils.errors import DistutilsOptionError >> -from distutils.util import get_platform >> from distutils import log >> + >> import msilib >> from msilib import schema, sequence, text >> from msilib import Directory, Feature, Dialog, add_data >> >> Added: python/trunk/Lib/distutils/tests/test_bdist_msi.py >> ============================================================================== >> --- (empty file) >> +++ python/trunk/Lib/distutils/tests/test_bdist_msi.py Tue Jan 26 18:20:37 2010 >> @@ -0,0 +1,23 @@ >> +"""Tests for distutils.command.bdist_msi.""" >> +import unittest >> +import sys >> + >> +from distutils.tests import support >> + >> + at unittest.skipUnless(sys.platform=="win32", "These tests are only for win32") >> +class BDistMSITestCase(support.TempdirManager, >> + support.LoggingSilencer, >> + unittest.TestCase): >> + >> + def test_minial(self): >> + # minimal test XXX need more tests >> + from distutils.command.bdist_msi import bdist_msi >> + pkg_pth, dist = self.create_dist() >> + cmd = bdist_msi(dist) >> + cmd.ensure_finalized() >> + >> +def test_suite(): >> + return unittest.makeSuite(BDistMSITestCase) >> + >> +if __name__ == '__main__': >> + test_support.run_unittest(test_suite()) >> _______________________________________________ >> Python-checkins mailing list >> Python-checkins at python.org >> http://mail.python.org/mailman/listinfo/python-checkins > -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Source (#1, Jan 26 2010) >>> Python/Zope Consulting and Support ... http://www.egenix.com/ >>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/ >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/ ________________________________________________________________________ ::: Try our new mxODBC.Connect Python Database Interface for free ! :::: eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg Registered at Amtsgericht Duesseldorf: HRB 46611 http://www.egenix.com/company/contact/ From mal at egenix.com Tue Jan 26 19:43:37 2010 From: mal at egenix.com (M.-A. Lemburg) Date: Tue, 26 Jan 2010 19:43:37 +0100 Subject: [Python-checkins] r77756 - in python/trunk/Lib/distutils: command/bdist_msi.py tests/test_bdist_msi.py In-Reply-To: <94bdd2611001261032uee1f566x5f760713c81bb2bb@mail.gmail.com> References: <20100126172044.244D1405084@mail.egenix.com> <4B5F309D.6080002@egenix.com> <94bdd2611001261032uee1f566x5f760713c81bb2bb@mail.gmail.com> Message-ID: <4B5F37D9.90100@egenix.com> Tarek Ziad? wrote: > On Tue, Jan 26, 2010 at 7:12 PM, M.-A. Lemburg wrote: >> Hi Tarek, >> >> I noticed that you have removed get_platform from the distutils.util >> module. This will break a lot of setup.py code out there. >> >> Please add a >> >> from sysconfig import get_platform >> >> to the distutils.util module to restore compatibility. >> >> Also note that a lot of setup.py code does monkey patching of >> get_platform() to fix certain inefficiencies of its implementation, >> so I'm not sure whether changing the distutils imports to load >> it directly from sysconfig will really do good. > > That's one of the reason why I kept the API and I've added a > deprecation warning at first, but then you suggested in python-dev > that I should remove them and just document the fact that the API was > relocated. Are you sure that was me ? > I can put it back like I've first did it Yes, please. -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Source (#1, Jan 26 2010) >>> Python/Zope Consulting and Support ... http://www.egenix.com/ >>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/ >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/ ________________________________________________________________________ ::: Try our new mxODBC.Connect Python Database Interface for free ! :::: eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg Registered at Amtsgericht Duesseldorf: HRB 46611 http://www.egenix.com/company/contact/ From ziade.tarek at gmail.com Tue Jan 26 19:49:59 2010 From: ziade.tarek at gmail.com (=?ISO-8859-1?Q?Tarek_Ziad=E9?=) Date: Tue, 26 Jan 2010 19:49:59 +0100 Subject: [Python-checkins] r77756 - in python/trunk/Lib/distutils: command/bdist_msi.py tests/test_bdist_msi.py In-Reply-To: <4B5F37D9.90100@egenix.com> References: <20100126172044.244D1405084@mail.egenix.com> <4B5F309D.6080002@egenix.com> <94bdd2611001261032uee1f566x5f760713c81bb2bb@mail.gmail.com> <4B5F37D9.90100@egenix.com> Message-ID: <94bdd2611001261049v45a8ca3i7e5ccbc885da0070@mail.gmail.com> On Tue, Jan 26, 2010 at 7:43 PM, M.-A. Lemburg wrote: [..] > Are you sure that was me ? Yes, in the First draft of "sysconfig" thread >> I can put it back like I've first did it > > Yes, please. Ok, I'll work on that > > -- > Marc-Andre Lemburg > eGenix.com > > Professional Python Services directly from the Source ?(#1, Jan 26 2010) >>>> Python/Zope Consulting and Support ... ? ? ? ?http://www.egenix.com/ >>>> mxODBC.Zope.Database.Adapter ... ? ? ? ? ? ? http://zope.egenix.com/ >>>> mxODBC, mxDateTime, mxTextTools ... ? ? ? ?http://python.egenix.com/ > ________________________________________________________________________ > > ::: Try our new mxODBC.Connect Python Database Interface for free ! :::: > > > ? eGenix.com Software, Skills and Services GmbH ?Pastor-Loeh-Str.48 > ? ?D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg > ? ? ? ? ? Registered at Amtsgericht Duesseldorf: HRB 46611 > ? ? ? ? ? ? ? http://www.egenix.com/company/contact/ > -- Tarek Ziad? | http://ziade.org From ziade.tarek at gmail.com Tue Jan 26 19:54:10 2010 From: ziade.tarek at gmail.com (=?ISO-8859-1?Q?Tarek_Ziad=E9?=) Date: Tue, 26 Jan 2010 19:54:10 +0100 Subject: [Python-checkins] r77756 - in python/trunk/Lib/distutils: command/bdist_msi.py tests/test_bdist_msi.py In-Reply-To: <4B5F37A3.8070300@egenix.com> References: <20100126172044.244D1405084@mail.egenix.com> <4B5F309D.6080002@egenix.com> <4B5F37A3.8070300@egenix.com> Message-ID: <94bdd2611001261054l196e4164kfaf127eb9820e619@mail.gmail.com> On Tue, Jan 26, 2010 at 7:42 PM, M.-A. Lemburg wrote: [..] > > Likewise, distutils.sysconfig's customize_compiler() was moved > to distutils.ccompiler without a b/w compatible import in > sysconfig. I've used the same strategy (API relocation) > > distutils.sysconfig's get_python_inc() is deprecated, but there's > no replacement for it in sysconfig. IMHO, there should be one to > maintain b/w compatibility. The API still exists in distutils.sysconfig, and offers that backward compatibility. There's no plan to keep it in the new sysconfig module. > > In general, I don't think that we should add lots and lots of > deprecations for moved imports. Just reimport the APIs from the > new locations in the old locations and be done with it. > > There's no real benefit from breaking apps in a minor release. > We've been through that and felt the pain with the hash function > reorg - this caused lots of noise without really buying us > anything. Major module reorganization should be left to > major releases. Sure, that's why I've added deprecation warnings in the first place :) Tarek From mal at egenix.com Tue Jan 26 20:02:31 2010 From: mal at egenix.com (M.-A. Lemburg) Date: Tue, 26 Jan 2010 20:02:31 +0100 Subject: [Python-checkins] r77756 - in python/trunk/Lib/distutils: command/bdist_msi.py tests/test_bdist_msi.py In-Reply-To: <94bdd2611001261049v45a8ca3i7e5ccbc885da0070@mail.gmail.com> References: <20100126172044.244D1405084@mail.egenix.com> <4B5F309D.6080002@egenix.com> <94bdd2611001261032uee1f566x5f760713c81bb2bb@mail.gmail.com> <4B5F37D9.90100@egenix.com> <94bdd2611001261049v45a8ca3i7e5ccbc885da0070@mail.gmail.com> Message-ID: <4B5F3C47.4040500@egenix.com> Tarek Ziad? wrote: > On Tue, Jan 26, 2010 at 7:43 PM, M.-A. Lemburg wrote: > [..] >> Are you sure that was me ? > > Yes, in the First draft of "sysconfig" thread Sorry about that. No idea what I was thinking. >>> I can put it back like I've first did it >> >> Yes, please. > > Ok, I'll work on that Thanks. -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Source (#1, Jan 26 2010) >>> Python/Zope Consulting and Support ... http://www.egenix.com/ >>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/ >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/ ________________________________________________________________________ ::: Try our new mxODBC.Connect Python Database Interface for free ! :::: eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg Registered at Amtsgericht Duesseldorf: HRB 46611 http://www.egenix.com/company/contact/ From ziade.tarek at gmail.com Tue Jan 26 20:09:11 2010 From: ziade.tarek at gmail.com (=?ISO-8859-1?Q?Tarek_Ziad=E9?=) Date: Tue, 26 Jan 2010 20:09:11 +0100 Subject: [Python-checkins] r77756 - in python/trunk/Lib/distutils: command/bdist_msi.py tests/test_bdist_msi.py In-Reply-To: <4B5F3C47.4040500@egenix.com> References: <20100126172044.244D1405084@mail.egenix.com> <4B5F309D.6080002@egenix.com> <94bdd2611001261032uee1f566x5f760713c81bb2bb@mail.gmail.com> <4B5F37D9.90100@egenix.com> <94bdd2611001261049v45a8ca3i7e5ccbc885da0070@mail.gmail.com> <4B5F3C47.4040500@egenix.com> Message-ID: <94bdd2611001261109u3d2e7b13n64744820836df0ca@mail.gmail.com> On Tue, Jan 26, 2010 at 8:02 PM, M.-A. Lemburg wrote: > Tarek Ziad? wrote: >> On Tue, Jan 26, 2010 at 7:43 PM, M.-A. Lemburg wrote: >> [..] >>> Are you sure that was me ? >> >> Yes, in the First draft of "sysconfig" thread > > Sorry about that. No idea what I was thinking. No worries. So what I am doing is adding back the name that points to the new locations when the API still exists (but without a deprecation warning for them) for instance, in distutils.sysconfig will have: +# names defined here to keep backward compatibility +get_python_version = _sysconfig.get_python_version +get_config_h_filename = _sysconfig.get_config_h_filename +parse_config_h = _sysconfig.parse_config_h +get_config_vars = _sysconfig.get_config_vars +get_config_var = _sysconfig.get_config_var +from distutils.ccompiler import customize_compiler And for the APIs that are being deprecated, I am just throwing a DeprecationWarning. For the patch problem, I am not sure what's the best way. I think that's not a huge change for people patching code. What do you suggest ? Tarek -- Tarek Ziad? | http://ziade.org From mal at egenix.com Tue Jan 26 20:24:53 2010 From: mal at egenix.com (M.-A. Lemburg) Date: Tue, 26 Jan 2010 20:24:53 +0100 Subject: [Python-checkins] r77756 - in python/trunk/Lib/distutils: command/bdist_msi.py tests/test_bdist_msi.py In-Reply-To: <94bdd2611001261109u3d2e7b13n64744820836df0ca@mail.gmail.com> References: <20100126172044.244D1405084@mail.egenix.com> <4B5F309D.6080002@egenix.com> <94bdd2611001261032uee1f566x5f760713c81bb2bb@mail.gmail.com> <4B5F37D9.90100@egenix.com> <94bdd2611001261049v45a8ca3i7e5ccbc885da0070@mail.gmail.com> <4B5F3C47.4040500@egenix.com> <94bdd2611001261109u3d2e7b13n64744820836df0ca@mail.gmail.com> Message-ID: <4B5F4185.9070706@egenix.com> Tarek Ziad? wrote: > On Tue, Jan 26, 2010 at 8:02 PM, M.-A. Lemburg wrote: >> Tarek Ziad? wrote: >>> On Tue, Jan 26, 2010 at 7:43 PM, M.-A. Lemburg wrote: >>> [..] >>>> Are you sure that was me ? >>> >>> Yes, in the First draft of "sysconfig" thread >> >> Sorry about that. No idea what I was thinking. > > No worries. So what I am doing is adding back the name that points to the > new locations when the API still exists (but without a deprecation > warning for them) > > for instance, in distutils.sysconfig will have: > > +# names defined here to keep backward compatibility > +get_python_version = _sysconfig.get_python_version > +get_config_h_filename = _sysconfig.get_config_h_filename > +parse_config_h = _sysconfig.parse_config_h > +get_config_vars = _sysconfig.get_config_vars > +get_config_var = _sysconfig.get_config_var > +from distutils.ccompiler import customize_compiler Great, thanks. > And for the APIs that are being deprecated, I am just throwing a > DeprecationWarning. > For the patch problem, I am not sure what's the best way. I think > that's not a huge change for people patching code. What do you suggest > ? I'm not sure what you mean with "patch problem". Perhaps the monkey- patching that's often applied to get_platform() ? For that I think we need a better way to tell distutils to use a different platform string than by monkey-patching the function. In mxSetup we currently have to do the monkey-patching in order to support our prebuilt archives. I suppose the situation is similar for eggs. The reason for the change of the platform string is that this is used in many build paths, so we need to make sure that the platform string used on the build machine is also used on the target machine. This often happens on a few platforms such as Mac OS X that have a number of different possible platform strings (e.g. various fat builds vs. single architecture builds). Ideally, there should be a global in distutils that you can change using a public API to avoid the monkey-patching, e.g. distutils.sysconfig.get_platform() Initializes the global using sysconfig.get_platform() if not set and returns its current value. distutils.sysconfig.set_platform(platform_id) Sets the global to a new value. -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Source (#1, Jan 26 2010) >>> Python/Zope Consulting and Support ... http://www.egenix.com/ >>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/ >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/ ________________________________________________________________________ ::: Try our new mxODBC.Connect Python Database Interface for free ! :::: eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg Registered at Amtsgericht Duesseldorf: HRB 46611 http://www.egenix.com/company/contact/ From python-checkins at python.org Tue Jan 26 21:44:55 2010 From: python-checkins at python.org (martin.v.loewis) Date: Tue, 26 Jan 2010 20:44:55 -0000 Subject: [Python-checkins] r77758 - tracker/instances/python-dev/extensions/openid_login.py Message-ID: Author: martin.v.loewis Date: Tue Jan 26 21:44:55 2010 New Revision: 77758 Log: Consider that lookup returns a single string, not a list. Modified: tracker/instances/python-dev/extensions/openid_login.py Modified: tracker/instances/python-dev/extensions/openid_login.py ============================================================================== --- tracker/instances/python-dev/extensions/openid_login.py (original) +++ tracker/instances/python-dev/extensions/openid_login.py Tue Jan 26 21:44:55 2010 @@ -178,7 +178,7 @@ session = self.db.openid_session.lookup(handle) except KeyError: raise ValueError, 'Not authenticated (no session)' - session = self.db.openid_session.getnode(session[0]) + session = self.db.openid_session.getnode(session) claimed = self.authenticate(session, query) if self.user != 'anonymous': # Existing user claims OpenID @@ -266,7 +266,7 @@ try: handle = self.form['openid.assoc_handle'].value session = self.db.openid_session.lookup(handle) - session = self.db.openid_session.getnode(session[0]) + session = self.db.openid_session.getnode(session) except Exception, e: raise ValueError, "Not authenticated (no session): "+str(e) # re-authenticate fields From python-checkins at python.org Tue Jan 26 22:21:54 2010 From: python-checkins at python.org (tarek.ziade) Date: Tue, 26 Jan 2010 21:21:54 -0000 Subject: [Python-checkins] r77759 - in python/trunk/Lib/distutils: sysconfig.py util.py Message-ID: Author: tarek.ziade Date: Tue Jan 26 22:21:54 2010 New Revision: 77759 Log: reintroduced the names in Distutils for APIs that were relocated Modified: python/trunk/Lib/distutils/sysconfig.py python/trunk/Lib/distutils/util.py Modified: python/trunk/Lib/distutils/sysconfig.py ============================================================================== --- python/trunk/Lib/distutils/sysconfig.py (original) +++ python/trunk/Lib/distutils/sysconfig.py Tue Jan 26 22:21:54 2010 @@ -21,6 +21,15 @@ # to avoid this module to shadow it _sysconfig = __import__('sysconfig') +# names defined here to keep backward compatibility +# for APIs that were relocated +get_python_version = _sysconfig.get_python_version +get_config_h_filename = _sysconfig.get_config_h_filename +parse_config_h = _sysconfig.parse_config_h +get_config_vars = _sysconfig.get_config_vars +get_config_var = _sysconfig.get_config_var +from distutils.ccompiler import customize_compiler + _DEPRECATION_MSG = ("distutils.sysconfig.%s is deprecated. " "Use the APIs provided by the sysconfig module instead") Modified: python/trunk/Lib/distutils/util.py ============================================================================== --- python/trunk/Lib/distutils/util.py (original) +++ python/trunk/Lib/distutils/util.py Tue Jan 26 22:21:54 2010 @@ -17,6 +17,10 @@ _sysconfig = __import__('sysconfig') +# kept for backward compatibility +# since this API was relocated +get_platform = _sysconfig.get_platform + def convert_path(pathname): """Return 'pathname' as a name that will work on the native filesystem. From ziade.tarek at gmail.com Tue Jan 26 22:27:52 2010 From: ziade.tarek at gmail.com (=?ISO-8859-1?Q?Tarek_Ziad=E9?=) Date: Tue, 26 Jan 2010 22:27:52 +0100 Subject: [Python-checkins] r77756 - in python/trunk/Lib/distutils: command/bdist_msi.py tests/test_bdist_msi.py In-Reply-To: <4B5F4185.9070706@egenix.com> References: <20100126172044.244D1405084@mail.egenix.com> <4B5F309D.6080002@egenix.com> <94bdd2611001261032uee1f566x5f760713c81bb2bb@mail.gmail.com> <4B5F37D9.90100@egenix.com> <94bdd2611001261049v45a8ca3i7e5ccbc885da0070@mail.gmail.com> <4B5F3C47.4040500@egenix.com> <94bdd2611001261109u3d2e7b13n64744820836df0ca@mail.gmail.com> <4B5F4185.9070706@egenix.com> Message-ID: <94bdd2611001261327h7d0cc367j4c8f6980d5a23ce4@mail.gmail.com> On Tue, Jan 26, 2010 at 8:24 PM, M.-A. Lemburg wrote: [..] > >> And for the APIs that are being deprecated, I am just throwing a >> DeprecationWarning. >> For the patch problem, I am not sure what's the best way. I think >> that's not a huge change for people patching code. What do you suggest >> ? > > I'm not sure what you mean with "patch problem". Perhaps the monkey- > patching that's often applied to get_platform() ? Yes, > > For that I think we need a better way to tell distutils to use > a different platform string than by monkey-patching the function. > > In mxSetup we currently have to do the monkey-patching in order > to support our prebuilt archives. I suppose the situation is similar > for eggs. > yes, it has a custom get_build_platform but it doesn't monkey patch distutils for that/ > The reason for the change of the platform string is that this > is used in many build paths, so we need to make sure that the > platform string used on the build machine is also used on the > target machine. This often happens on a few platforms such as > Mac OS X that have a number of different possible platform > strings (e.g. various fat builds vs. single architecture builds). > > Ideally, there should be a global in distutils that you can > change using a public API to avoid the monkey-patching, e.g. > > distutils.sysconfig.get_platform() > > ?Initializes the global using sysconfig.get_platform() if not > ?set and returns its current value. > > distutils.sysconfig.set_platform(platform_id) > > ?Sets the global to a new value. Sounds like a plan, I'll add this. FYI I have the sysconfig module pending for the py3k branch, but I was waiting a few days to see if everything was OK with the change in 2.x. I guess I'll merge it after that, then work on the shutil part. The next big step is the documentation for sysconfig. Tarek > > -- > Marc-Andre Lemburg > eGenix.com > > Professional Python Services directly from the Source ?(#1, Jan 26 2010) >>>> Python/Zope Consulting and Support ... ? ? ? ?http://www.egenix.com/ >>>> mxODBC.Zope.Database.Adapter ... ? ? ? ? ? ? http://zope.egenix.com/ >>>> mxODBC, mxDateTime, mxTextTools ... ? ? ? ?http://python.egenix.com/ > ________________________________________________________________________ > > ::: Try our new mxODBC.Connect Python Database Interface for free ! :::: > > > ? eGenix.com Software, Skills and Services GmbH ?Pastor-Loeh-Str.48 > ? ?D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg > ? ? ? ? ? Registered at Amtsgericht Duesseldorf: HRB 46611 > ? ? ? ? ? ? ? http://www.egenix.com/company/contact/ > -- Tarek Ziad? | http://ziade.org From python-checkins at python.org Tue Jan 26 22:30:01 2010 From: python-checkins at python.org (tarek.ziade) Date: Tue, 26 Jan 2010 21:30:01 -0000 Subject: [Python-checkins] r77760 - python/branches/release26-maint Message-ID: Author: tarek.ziade Date: Tue Jan 26 22:30:01 2010 New Revision: 77760 Log: Blocked revisions 77759 via svnmerge ........ r77759 | tarek.ziade | 2010-01-26 22:21:54 +0100 (Tue, 26 Jan 2010) | 1 line reintroduced the names in Distutils for APIs that were relocated ........ Modified: python/branches/release26-maint/ (props changed) From mal at egenix.com Tue Jan 26 22:35:56 2010 From: mal at egenix.com (M.-A. Lemburg) Date: Tue, 26 Jan 2010 22:35:56 +0100 Subject: [Python-checkins] r77756 - in python/trunk/Lib/distutils: command/bdist_msi.py tests/test_bdist_msi.py In-Reply-To: <94bdd2611001261327h7d0cc367j4c8f6980d5a23ce4@mail.gmail.com> References: <20100126172044.244D1405084@mail.egenix.com> <4B5F309D.6080002@egenix.com> <94bdd2611001261032uee1f566x5f760713c81bb2bb@mail.gmail.com> <4B5F37D9.90100@egenix.com> <94bdd2611001261049v45a8ca3i7e5ccbc885da0070@mail.gmail.com> <4B5F3C47.4040500@egenix.com> <94bdd2611001261109u3d2e7b13n64744820836df0ca@mail.gmail.com> <4B5F4185.9070706@egenix.com> <94bdd2611001261327h7d0cc367j4c8f6980d5a23ce4@mail.gmail.com> Message-ID: <4B5F603C.6030700@egenix.com> Tarek Ziad? wrote: > On Tue, Jan 26, 2010 at 8:24 PM, M.-A. Lemburg wrote: > [..] >> >>> And for the APIs that are being deprecated, I am just throwing a >>> DeprecationWarning. >>> For the patch problem, I am not sure what's the best way. I think >>> that's not a huge change for people patching code. What do you suggest >>> ? >> >> I'm not sure what you mean with "patch problem". Perhaps the monkey- >> patching that's often applied to get_platform() ? > > Yes, > >> >> For that I think we need a better way to tell distutils to use >> a different platform string than by monkey-patching the function. >> >> In mxSetup we currently have to do the monkey-patching in order >> to support our prebuilt archives. I suppose the situation is similar >> for eggs. >> > yes, it has a custom get_build_platform but it doesn't monkey patch > distutils for that/ > > >> The reason for the change of the platform string is that this >> is used in many build paths, so we need to make sure that the >> platform string used on the build machine is also used on the >> target machine. This often happens on a few platforms such as >> Mac OS X that have a number of different possible platform >> strings (e.g. various fat builds vs. single architecture builds). >> >> Ideally, there should be a global in distutils that you can >> change using a public API to avoid the monkey-patching, e.g. >> >> distutils.sysconfig.get_platform() >> >> Initializes the global using sysconfig.get_platform() if not >> set and returns its current value. >> >> distutils.sysconfig.set_platform(platform_id) >> >> Sets the global to a new value. > > Sounds like a plan, I'll add this. Great ! You will then also have to undo a few import changes that you have just applied to get the get_platform API from distutils.sysconfig (instead of sysconfig, or the old distutils.utils). > FYI > > I have the sysconfig module pending for the py3k branch, but I was waiting > a few days to see if everything was OK with the change in 2.x. I guess > I'll merge it after that, then work on the shutil part. I'll run a few more tests of our stuff tomorrow. For now, I've fixed all issues I found, except one, but I'm not sure whether that's distutil's fault, RPM's, mxSetup's or a mix of all of them... the bdist_rpm command no longer works. We haven't used that command in years, so it's not all that surprising. > The next big step is the documentation for sysconfig. -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Source (#1, Jan 26 2010) >>> Python/Zope Consulting and Support ... http://www.egenix.com/ >>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/ >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/ ________________________________________________________________________ ::: Try our new mxODBC.Connect Python Database Interface for free ! :::: eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg Registered at Amtsgericht Duesseldorf: HRB 46611 http://www.egenix.com/company/contact/ From ziade.tarek at gmail.com Tue Jan 26 22:42:47 2010 From: ziade.tarek at gmail.com (=?ISO-8859-1?Q?Tarek_Ziad=E9?=) Date: Tue, 26 Jan 2010 22:42:47 +0100 Subject: [Python-checkins] r77756 - in python/trunk/Lib/distutils: command/bdist_msi.py tests/test_bdist_msi.py In-Reply-To: <4B5F603C.6030700@egenix.com> References: <20100126172044.244D1405084@mail.egenix.com> <4B5F309D.6080002@egenix.com> <94bdd2611001261032uee1f566x5f760713c81bb2bb@mail.gmail.com> <4B5F37D9.90100@egenix.com> <94bdd2611001261049v45a8ca3i7e5ccbc885da0070@mail.gmail.com> <4B5F3C47.4040500@egenix.com> <94bdd2611001261109u3d2e7b13n64744820836df0ca@mail.gmail.com> <4B5F4185.9070706@egenix.com> <94bdd2611001261327h7d0cc367j4c8f6980d5a23ce4@mail.gmail.com> <4B5F603C.6030700@egenix.com> Message-ID: <94bdd2611001261342l2ce52745m8e5a5961cd7a6f7@mail.gmail.com> On Tue, Jan 26, 2010 at 10:35 PM, M.-A. Lemburg wrote: [..] > > Great ! > > You will then also have to undo a few import changes that > you have just applied to get the get_platform API from > distutils.sysconfig (instead of sysconfig, or the old > distutils.utils). Yes, I am currently doing that API in distutils.util, with some tests. > >> FYI >> >> I have the sysconfig module pending for the py3k branch, but I was waiting >> a few days to see if everything was OK with the change in 2.x. I guess >> I'll merge it after that, then work on the shutil part. > > I'll run a few more tests of our stuff tomorrow. For now, > I've fixed all issues I found, except one, but I'm not sure > whether that's distutil's fault, RPM's, mxSetup's or a mix > of all of them... the bdist_rpm command no longer works. > We haven't used that command in years, so it's not all that > surprising. Ok I'll stick around in case you have a problem. I'm on IRC as well Tarek From python-checkins at python.org Tue Jan 26 23:46:15 2010 From: python-checkins at python.org (tarek.ziade) Date: Tue, 26 Jan 2010 22:46:15 -0000 Subject: [Python-checkins] r77761 - in python/trunk/Lib/distutils: command/bdist.py command/bdist_dumb.py command/bdist_msi.py command/bdist_wininst.py command/build.py command/build_ext.py command/install.py msvc9compiler.py tests/test_util.py util.py Message-ID: Author: tarek.ziade Date: Tue Jan 26 23:46:15 2010 New Revision: 77761 Log: added local get_platform/set_platform APIs in distutils.sysconfig Modified: python/trunk/Lib/distutils/command/bdist.py python/trunk/Lib/distutils/command/bdist_dumb.py python/trunk/Lib/distutils/command/bdist_msi.py python/trunk/Lib/distutils/command/bdist_wininst.py python/trunk/Lib/distutils/command/build.py python/trunk/Lib/distutils/command/build_ext.py python/trunk/Lib/distutils/command/install.py python/trunk/Lib/distutils/msvc9compiler.py python/trunk/Lib/distutils/tests/test_util.py python/trunk/Lib/distutils/util.py Modified: python/trunk/Lib/distutils/command/bdist.py ============================================================================== --- python/trunk/Lib/distutils/command/bdist.py (original) +++ python/trunk/Lib/distutils/command/bdist.py Tue Jan 26 23:46:15 2010 @@ -6,8 +6,8 @@ __revision__ = "$Id$" import os -from sysconfig import get_platform +from distutils.util import get_platform from distutils.core import Command from distutils.errors import DistutilsPlatformError, DistutilsOptionError Modified: python/trunk/Lib/distutils/command/bdist_dumb.py ============================================================================== --- python/trunk/Lib/distutils/command/bdist_dumb.py (original) +++ python/trunk/Lib/distutils/command/bdist_dumb.py Tue Jan 26 23:46:15 2010 @@ -8,8 +8,9 @@ import os -from sysconfig import get_python_version, get_platform +from sysconfig import get_python_version +from distutils.util import get_platform from distutils.core import Command from distutils.dir_util import remove_tree, ensure_relative from distutils.errors import DistutilsPlatformError Modified: python/trunk/Lib/distutils/command/bdist_msi.py ============================================================================== --- python/trunk/Lib/distutils/command/bdist_msi.py (original) +++ python/trunk/Lib/distutils/command/bdist_msi.py Tue Jan 26 23:46:15 2010 @@ -7,13 +7,14 @@ Implements the bdist_msi command. """ import sys, os -from sysconfig import get_python_version, get_platform +from sysconfig import get_python_version from distutils.core import Command from distutils.dir_util import remove_tree from distutils.version import StrictVersion from distutils.errors import DistutilsOptionError from distutils import log +from distutils.util import get_platform import msilib from msilib import schema, sequence, text Modified: python/trunk/Lib/distutils/command/bdist_wininst.py ============================================================================== --- python/trunk/Lib/distutils/command/bdist_wininst.py (original) +++ python/trunk/Lib/distutils/command/bdist_wininst.py Tue Jan 26 23:46:15 2010 @@ -9,12 +9,13 @@ import os import string -from sysconfig import get_python_version, get_platform +from sysconfig import get_python_version from distutils.core import Command from distutils.dir_util import remove_tree from distutils.errors import DistutilsOptionError, DistutilsPlatformError from distutils import log +from distutils.util import get_platform class bdist_wininst (Command): Modified: python/trunk/Lib/distutils/command/build.py ============================================================================== --- python/trunk/Lib/distutils/command/build.py (original) +++ python/trunk/Lib/distutils/command/build.py Tue Jan 26 23:46:15 2010 @@ -5,8 +5,8 @@ __revision__ = "$Id$" import sys, os -from sysconfig import get_platform +from distutils.util import get_platform from distutils.core import Command from distutils.errors import DistutilsOptionError Modified: python/trunk/Lib/distutils/command/build_ext.py ============================================================================== --- python/trunk/Lib/distutils/command/build_ext.py (original) +++ python/trunk/Lib/distutils/command/build_ext.py Tue Jan 26 23:46:15 2010 @@ -9,14 +9,12 @@ import sys, os, re from warnings import warn -from sysconfig import get_platform - +from distutils.util import get_platform from distutils.core import Command from distutils.errors import * from distutils.ccompiler import customize_compiler from distutils.dep_util import newer_group from distutils.extension import Extension - from distutils import log # this keeps compatibility from 2.3 to 2.5 Modified: python/trunk/Lib/distutils/command/install.py ============================================================================== --- python/trunk/Lib/distutils/command/install.py (original) +++ python/trunk/Lib/distutils/command/install.py Tue Jan 26 23:46:15 2010 @@ -7,15 +7,14 @@ import sys import os -from sysconfig import (get_config_vars, get_platform, get_paths, get_path, - get_config_var) +from sysconfig import get_config_vars, get_paths, get_path, get_config_var from distutils import log from distutils.core import Command from distutils.debug import DEBUG from distutils.errors import DistutilsPlatformError from distutils.file_util import write_file -from distutils.util import convert_path, change_root +from distutils.util import convert_path, change_root, get_platform from distutils.errors import DistutilsOptionError def _subst_vars(s, local_vars): Modified: python/trunk/Lib/distutils/msvc9compiler.py ============================================================================== --- python/trunk/Lib/distutils/msvc9compiler.py (original) +++ python/trunk/Lib/distutils/msvc9compiler.py Tue Jan 26 23:46:15 2010 @@ -23,9 +23,9 @@ CompileError, LibError, LinkError) from distutils.ccompiler import CCompiler, gen_lib_options from distutils import log -import _winreg +from distutils.util import get_platform -_sysconfig = __import__('sysconfig') +import _winreg RegOpenKeyEx = _winreg.OpenKeyEx RegEnumKey = _winreg.EnumKey @@ -327,7 +327,7 @@ # multi-init means we would need to check platform same each time... assert not self.initialized, "don't init multiple times" if plat_name is None: - plat_name = _sysconfig.get_platform() + plat_name = get_platform() # sanity check for platforms to prevent obscure errors later. ok_plats = 'win32', 'win-amd64', 'win-ia64' if plat_name not in ok_plats: @@ -348,12 +348,12 @@ # On AMD64, 'vcvars32.bat amd64' is a native build env; to cross # compile use 'x86' (ie, it runs the x86 compiler directly) # No idea how itanium handles this, if at all. - if plat_name == _sysconfig.get_platform() or plat_name == 'win32': + if plat_name == get_platform() or plat_name == 'win32': # native build or cross-compile to win32 plat_spec = PLAT_TO_VCVARS[plat_name] else: # cross compile from win32 -> some 64bit - plat_spec = PLAT_TO_VCVARS[_sysconfig.get_platform()] + '_' + \ + plat_spec = PLAT_TO_VCVARS[get_platform()] + '_' + \ PLAT_TO_VCVARS[plat_name] vc_env = query_vcvarsall(VERSION, plat_spec) Modified: python/trunk/Lib/distutils/tests/test_util.py ============================================================================== --- python/trunk/Lib/distutils/tests/test_util.py (original) +++ python/trunk/Lib/distutils/tests/test_util.py Tue Jan 26 23:46:15 2010 @@ -90,99 +90,12 @@ def _get_uname(self): return self._uname - def _test_get_platform(self): - - # windows XP, 32bits - os.name = 'nt' - sys.version = ('2.4.4 (#71, Oct 18 2006, 08:34:43) ' - '[MSC v.1310 32 bit (Intel)]') - sys.platform = 'win32' - self.assertEquals(get_platform(), 'win32') - - # windows XP, amd64 - os.name = 'nt' - sys.version = ('2.4.4 (#71, Oct 18 2006, 08:34:43) ' - '[MSC v.1310 32 bit (Amd64)]') - sys.platform = 'win32' - self.assertEquals(get_platform(), 'win-amd64') - - # windows XP, itanium - os.name = 'nt' - sys.version = ('2.4.4 (#71, Oct 18 2006, 08:34:43) ' - '[MSC v.1310 32 bit (Itanium)]') - sys.platform = 'win32' - self.assertEquals(get_platform(), 'win-ia64') - - # macbook - os.name = 'posix' - sys.version = ('2.5 (r25:51918, Sep 19 2006, 08:49:13) ' - '\n[GCC 4.0.1 (Apple Computer, Inc. build 5341)]') - sys.platform = 'darwin' - self._set_uname(('Darwin', 'macziade', '8.11.1', - ('Darwin Kernel Version 8.11.1: ' - 'Wed Oct 10 18:23:28 PDT 2007; ' - 'root:xnu-792.25.20~1/RELEASE_I386'), 'i386')) - os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.3' - - get_config_vars()['CFLAGS'] = ('-fno-strict-aliasing -DNDEBUG -g ' - '-fwrapv -O3 -Wall -Wstrict-prototypes') - - self.assertEquals(get_platform(), 'macosx-10.3-i386') - - # macbook with fat binaries (fat, universal or fat64) - os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.4' - get_config_vars()['CFLAGS'] = ('-arch ppc -arch i386 -isysroot ' - '/Developer/SDKs/MacOSX10.4u.sdk ' - '-fno-strict-aliasing -fno-common ' - '-dynamic -DNDEBUG -g -O3') - - self.assertEquals(get_platform(), 'macosx-10.4-fat') - - get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch i386 -isysroot ' - '/Developer/SDKs/MacOSX10.4u.sdk ' - '-fno-strict-aliasing -fno-common ' - '-dynamic -DNDEBUG -g -O3') - - self.assertEquals(get_platform(), 'macosx-10.4-intel') - - get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch ppc -arch i386 -isysroot ' - '/Developer/SDKs/MacOSX10.4u.sdk ' - '-fno-strict-aliasing -fno-common ' - '-dynamic -DNDEBUG -g -O3') - self.assertEquals(get_platform(), 'macosx-10.4-fat3') - - get_config_vars()['CFLAGS'] = ('-arch ppc64 -arch x86_64 -arch ppc -arch i386 -isysroot ' - '/Developer/SDKs/MacOSX10.4u.sdk ' - '-fno-strict-aliasing -fno-common ' - '-dynamic -DNDEBUG -g -O3') - self.assertEquals(get_platform(), 'macosx-10.4-universal') - - get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch ppc64 -isysroot ' - '/Developer/SDKs/MacOSX10.4u.sdk ' - '-fno-strict-aliasing -fno-common ' - '-dynamic -DNDEBUG -g -O3') - - self.assertEquals(get_platform(), 'macosx-10.4-fat64') - - for arch in ('ppc', 'i386', 'x86_64', 'ppc64'): - get_config_vars()['CFLAGS'] = ('-arch %s -isysroot ' - '/Developer/SDKs/MacOSX10.4u.sdk ' - '-fno-strict-aliasing -fno-common ' - '-dynamic -DNDEBUG -g -O3'%(arch,)) - - self.assertEquals(get_platform(), 'macosx-10.4-%s'%(arch,)) - - # linux debian sarge - os.name = 'posix' - sys.version = ('2.3.5 (#1, Jul 4 2007, 17:28:59) ' - '\n[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)]') - sys.platform = 'linux2' - self._set_uname(('Linux', 'aglae', '2.6.21.1dedibox-r7', - '#1 Mon Apr 30 17:25:38 CEST 2007', 'i686')) - - self.assertEquals(get_platform(), 'linux-i686') - - # XXX more platforms to tests here + def test_get_platform(self): + platform = util.get_platform() + self.assertEquals(platform, get_platform()) + util.set_platform('MyOwnPlatform') + self.assertEquals('MyOwnPlatform', util.get_platform()) + util.set_platform(platform) def test_convert_path(self): # linux/mac Modified: python/trunk/Lib/distutils/util.py ============================================================================== --- python/trunk/Lib/distutils/util.py (original) +++ python/trunk/Lib/distutils/util.py Tue Jan 26 23:46:15 2010 @@ -16,10 +16,27 @@ from distutils.errors import DistutilsByteCompileError _sysconfig = __import__('sysconfig') +_PLATFORM = None -# kept for backward compatibility -# since this API was relocated -get_platform = _sysconfig.get_platform +def get_platform(): + """Return a string that identifies the current platform. + + By default, will return the value returned by sysconfig.get_platform(), + but it can be changed by calling set_platform(). + """ + global _PLATFORM + if _PLATFORM is None: + _PLATFORM = _sysconfig.get_platform() + return _PLATFORM + +def set_platform(identifier): + """Sets the platform string identifier returned by get_platform(). + + Note that this change doesn't impact the value returned by + sysconfig.get_platform() and is local to Distutils + """ + global _PLATFORM + _PLATFORM = identifier def convert_path(pathname): """Return 'pathname' as a name that will work on the native filesystem. From python-checkins at python.org Wed Jan 27 00:09:02 2010 From: python-checkins at python.org (tarek.ziade) Date: Tue, 26 Jan 2010 23:09:02 -0000 Subject: [Python-checkins] r77762 - python/branches/release26-maint Message-ID: Author: tarek.ziade Date: Wed Jan 27 00:09:02 2010 New Revision: 77762 Log: Blocked revisions 77761 via svnmerge ........ r77761 | tarek.ziade | 2010-01-26 23:46:15 +0100 (Tue, 26 Jan 2010) | 1 line added local get_platform/set_platform APIs in distutils.sysconfig ........ Modified: python/branches/release26-maint/ (props changed) From solipsis at pitrou.net Wed Jan 27 00:56:08 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Wed, 27 Jan 2010 00:56:08 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77750): sum=0 Message-ID: <20100126235608.2EEA61770A@ns6635.ovh.net> py3k results for svn r77750 (hg cset ece6f4fb5793) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogboc2ze', '-x', 'test_httpservers'] From python-checkins at python.org Wed Jan 27 01:28:29 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 00:28:29 -0000 Subject: [Python-checkins] r77763 - in python/trunk: Doc/library/sys.rst Lib/test/test_sys.py Misc/NEWS Python/sysmodule.c Message-ID: Author: eric.smith Date: Wed Jan 27 01:28:29 2010 New Revision: 77763 Log: Issue #7766: Change sys.getwindowsversion() return value to a named tuple and add the additional members returned in an OSVERSIONINFOEX structure. The new members are service_pack_major, service_pack_minor, suite_mask, and product_type. Modified: python/trunk/Doc/library/sys.rst python/trunk/Lib/test/test_sys.py python/trunk/Misc/NEWS python/trunk/Python/sysmodule.c Modified: python/trunk/Doc/library/sys.rst ============================================================================== --- python/trunk/Doc/library/sys.rst (original) +++ python/trunk/Doc/library/sys.rst Wed Jan 27 01:28:29 2010 @@ -470,9 +470,15 @@ .. function:: getwindowsversion() - Return a tuple containing five components, describing the Windows version - currently running. The elements are *major*, *minor*, *build*, *platform*, and - *text*. *text* contains a string while all other values are integers. + Return a named tuple containing describing the Windows version + currently running. The named elements are *major*, *minor*, + *build*, *platform*, *service_pack*, *service_pack_minor*, + *service_pack_major*, *suite_mask*, and *product_type*. + *service_pack* contains a string while all other values are + integers. The components can also be accessed by name, so + ``sys.getwindowsversion()[0]`` is equivalent to + ``sys.getwindowsversion().major``. For compatibility with prior + versions, only the first 5 elements are retrievable by indexing. *platform* may be one of the following values: @@ -488,12 +494,31 @@ | :const:`3 (VER_PLATFORM_WIN32_CE)` | Windows CE | +-----------------------------------------+-------------------------+ - This function wraps the Win32 :cfunc:`GetVersionEx` function; see the Microsoft - documentation for more information about these fields. + *product_type* may be one of the following values: + + +---------------------------------------+---------------------------------+ + | Constant | Meaning | + +=======================================+=================================+ + | :const:`1 (VER_NT_WORKSTATION)` | The system is a workstation. | + +---------------------------------------+---------------------------------+ + | :const:`2 (VER_NT_DOMAIN_CONTROLLER)` | The system is a domain | + | | controller. | + +---------------------------------------+---------------------------------+ + | :const:`3 (VER_NT_SERVER)` | The system is a server, but not | + | | a domain controller. | + +---------------------------------------+---------------------------------+ + + + This function wraps the Win32 :cfunc:`GetVersionEx` function; see the + Microsoft documentation on :cfunc:`OSVERSIONINFOEX` for more information + about these fields. Availability: Windows. .. versionadded:: 2.3 + .. versionchanged:: 2.7 + Changed to a named tuple and added *service_pack_minor*, + *service_pack_major*, *suite_mask*, and *product_type*. .. data:: hexversion Modified: python/trunk/Lib/test/test_sys.py ============================================================================== --- python/trunk/Lib/test/test_sys.py (original) +++ python/trunk/Lib/test/test_sys.py Wed Jan 27 01:28:29 2010 @@ -2,6 +2,7 @@ import unittest, test.test_support import sys, cStringIO, os import struct +import operator class SysModuleTest(unittest.TestCase): @@ -205,13 +206,28 @@ def test_getwindowsversion(self): if hasattr(sys, "getwindowsversion"): v = sys.getwindowsversion() - self.assertIsInstance(v, tuple) + self.assertTrue(isinstance(v[:], tuple)) self.assertEqual(len(v), 5) self.assertIsInstance(v[0], int) self.assertIsInstance(v[1], int) self.assertIsInstance(v[2], int) self.assertIsInstance(v[3], int) self.assertIsInstance(v[4], str) + self.assertRaises(IndexError, operator.getitem, v, 5) + self.assertIsInstance(v.major, int) + self.assertIsInstance(v.minor, int) + self.assertIsInstance(v.build, int) + self.assertIsInstance(v.platform, int) + self.assertIsInstance(v.service_pack, str) + self.assertEqual(v[0], v.major) + self.assertEqual(v[1], v.minor) + self.assertEqual(v[2], v.build) + self.assertEqual(v[3], v.platform) + self.assertEqual(v[4], v.service_pack) + + # This is how platform.py calls it. Make sure tuple + # still has 5 elements + maj, min, buildno, plat, csd = sys.getwindowsversion() def test_dlopenflags(self): if hasattr(sys, "setdlopenflags"): Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Wed Jan 27 01:28:29 2010 @@ -12,6 +12,11 @@ Core and Builtins ----------------- +- Issue #7766: Change sys.getwindowsversion() return value to a named + tuple and add the additional members returned in an OSVERSIONINFOEX + structure. The new members are service_pack_major, service_pack_minor, + suite_mask, and product_type. + - Issue #7561: Operations on empty bytearrays (such as `int(bytearray())`) could crash in many places because of the PyByteArray_AS_STRING() macro returning NULL. The macro now returns a statically allocated empty Modified: python/trunk/Python/sysmodule.c ============================================================================== --- python/trunk/Python/sysmodule.c (original) +++ python/trunk/Python/sysmodule.c Wed Jan 27 01:28:29 2010 @@ -557,26 +557,65 @@ PyDoc_STRVAR(getwindowsversion_doc, "getwindowsversion()\n\ \n\ -Return information about the running version of Windows.\n\ -The result is a tuple of (major, minor, build, platform, text)\n\ -All elements are numbers, except text which is a string.\n\ -Platform may be 0 for win32s, 1 for Windows 9x/ME, 2 for Windows NT/2000/XP\n\ -" +Return information about the running version of Windows as a named tuple.\n\ +The members are named: major, minor, build, platform, service_pack,\n\ +service_pack_major, service_pack_minor, suite_mask, and product_type. For\n\ +backward compatibiliy, only the first 5 items are available by indexing.\n\ +All elements are numbers, except service_pack which is a string. Platform\n\ +may be 0 for win32s, 1 for Windows 9x/ME, 2 for Windows NT/2000/XP/Vista/7,\n\ +3 for Windows CE. Product_type may be 1 for a workstation, 2 for a domain\n\ +controller, 3 for a server." ); +static PyTypeObject WindowsVersionType = {0, 0, 0, 0, 0, 0}; + +static PyStructSequence_Field windows_version_fields[] = { + {"major", "Major version number"}, + {"minor", "Minor version number"}, + {"build", "Build number"}, + {"platform", "Operating system platform"}, + {"service_pack", "Latest Service Pack installed on the system"}, + {"service_pack_major", "Service Pack major version number"}, + {"service_pack_minor", "Service Pack minor version number"}, + {"suite_mask", "Bit mask identifying available product suites"}, + {"product_type", "System product type"}, + {0} +}; + +static PyStructSequence_Desc windows_version_desc = { + "sys.getwindowsversion", /* name */ + getwindowsversion_doc, /* doc */ + windows_version_fields, /* fields */ + 5 /* For backward compatibility, + only the first 5 items are accessible + via indexing, the rest are name only */ +}; + static PyObject * sys_getwindowsversion(PyObject *self) { - OSVERSIONINFO ver; + PyObject *version; + int pos = 0; + OSVERSIONINFOEX ver; ver.dwOSVersionInfoSize = sizeof(ver); - if (!GetVersionEx(&ver)) + if (!GetVersionEx((OSVERSIONINFO*) &ver)) return PyErr_SetFromWindowsErr(0); - return Py_BuildValue("HHHHs", - ver.dwMajorVersion, - ver.dwMinorVersion, - ver.dwBuildNumber, - ver.dwPlatformId, - ver.szCSDVersion); + + version = PyStructSequence_New(&WindowsVersionType); + if (version == NULL) + return NULL; + + PyStructSequence_SET_ITEM(version, pos++, PyInt_FromLong(ver.dwMajorVersion)); + PyStructSequence_SET_ITEM(version, pos++, PyInt_FromLong(ver.dwMinorVersion)); + PyStructSequence_SET_ITEM(version, pos++, PyInt_FromLong(ver.dwBuildNumber)); + PyStructSequence_SET_ITEM(version, pos++, PyInt_FromLong(ver.dwPlatformId)); + PyStructSequence_SET_ITEM(version, pos++, PyString_FromString(ver.szCSDVersion)); + PyStructSequence_SET_ITEM(version, pos++, PyInt_FromLong(ver.wServicePackMajor)); + PyStructSequence_SET_ITEM(version, pos++, PyInt_FromLong(ver.wServicePackMinor)); + PyStructSequence_SET_ITEM(version, pos++, PyInt_FromLong(ver.wSuiteMask)); + PyStructSequence_SET_ITEM(version, pos++, PyInt_FromLong(ver.wProductType)); + + return version; } #endif /* MS_WINDOWS */ @@ -1499,6 +1538,16 @@ FlagsType.tp_init = NULL; FlagsType.tp_new = NULL; + +#if defined(MS_WINDOWS) + /* getwindowsversion */ + if (WindowsVersionType.tp_name == 0) + PyStructSequence_InitType(&WindowsVersionType, &windows_version_desc); + /* prevent user from creating new instances */ + WindowsVersionType.tp_init = NULL; + WindowsVersionType.tp_new = NULL; +#endif + /* float repr style: 0.03 (short) vs 0.029999999999999999 (legacy) */ #ifndef PY_NO_SHORT_FLOAT_REPR SET_SYS_FROM_STRING("float_repr_style", From python-checkins at python.org Wed Jan 27 01:29:32 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 00:29:32 -0000 Subject: [Python-checkins] r77764 - python/branches/release26-maint Message-ID: Author: eric.smith Date: Wed Jan 27 01:29:32 2010 New Revision: 77764 Log: Blocked revisions 77763 via svnmerge ........ r77763 | eric.smith | 2010-01-26 19:28:29 -0500 (Tue, 26 Jan 2010) | 1 line Issue #7766: Change sys.getwindowsversion() return value to a named tuple and add the additional members returned in an OSVERSIONINFOEX structure. The new members are service_pack_major, service_pack_minor, suite_mask, and product_type. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Wed Jan 27 01:44:57 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 00:44:57 -0000 Subject: [Python-checkins] r77765 - in python/branches/py3k: Doc/library/sys.rst Lib/test/test_sys.py Misc/NEWS Python/sysmodule.c Message-ID: Author: eric.smith Date: Wed Jan 27 01:44:57 2010 New Revision: 77765 Log: Merged revisions 77763 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77763 | eric.smith | 2010-01-26 19:28:29 -0500 (Tue, 26 Jan 2010) | 1 line Issue #7766: Change sys.getwindowsversion() return value to a named tuple and add the additional members returned in an OSVERSIONINFOEX structure. The new members are service_pack_major, service_pack_minor, suite_mask, and product_type. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/library/sys.rst python/branches/py3k/Lib/test/test_sys.py python/branches/py3k/Misc/NEWS python/branches/py3k/Python/sysmodule.c Modified: python/branches/py3k/Doc/library/sys.rst ============================================================================== --- python/branches/py3k/Doc/library/sys.rst (original) +++ python/branches/py3k/Doc/library/sys.rst Wed Jan 27 01:44:57 2010 @@ -394,9 +394,15 @@ .. function:: getwindowsversion() - Return a tuple containing five components, describing the Windows version - currently running. The elements are *major*, *minor*, *build*, *platform*, and - *text*. *text* contains a string while all other values are integers. + Return a named tuple containing describing the Windows version + currently running. The named elements are *major*, *minor*, + *build*, *platform*, *service_pack*, *service_pack_minor*, + *service_pack_major*, *suite_mask*, and *product_type*. + *service_pack* contains a string while all other values are + integers. The components can also be accessed by name, so + ``sys.getwindowsversion()[0]`` is equivalent to + ``sys.getwindowsversion().major``. For compatibility with prior + versions, only the first 5 elements are retrievable by indexing. *platform* may be one of the following values: @@ -412,11 +418,30 @@ | :const:`3 (VER_PLATFORM_WIN32_CE)` | Windows CE | +-----------------------------------------+-------------------------+ - This function wraps the Win32 :cfunc:`GetVersionEx` function; see the Microsoft - documentation for more information about these fields. + *product_type* may be one of the following values: + + +---------------------------------------+---------------------------------+ + | Constant | Meaning | + +=======================================+=================================+ + | :const:`1 (VER_NT_WORKSTATION)` | The system is a workstation. | + +---------------------------------------+---------------------------------+ + | :const:`2 (VER_NT_DOMAIN_CONTROLLER)` | The system is a domain | + | | controller. | + +---------------------------------------+---------------------------------+ + | :const:`3 (VER_NT_SERVER)` | The system is a server, but not | + | | a domain controller. | + +---------------------------------------+---------------------------------+ + + + This function wraps the Win32 :cfunc:`GetVersionEx` function; see the + Microsoft documentation on :cfunc:`OSVERSIONINFOEX` for more information + about these fields. Availability: Windows. + .. versionchanged:: 2.7 + Changed to a named tuple and added *service_pack_minor*, + *service_pack_major*, *suite_mask*, and *product_type*. .. data:: hexversion Modified: python/branches/py3k/Lib/test/test_sys.py ============================================================================== --- python/branches/py3k/Lib/test/test_sys.py (original) +++ python/branches/py3k/Lib/test/test_sys.py Wed Jan 27 01:44:57 2010 @@ -5,6 +5,7 @@ import subprocess import textwrap import warnings +import operator # count the number of test runs, used to create unique # strings to intern in test_intern() @@ -227,13 +228,28 @@ def test_getwindowsversion(self): if hasattr(sys, "getwindowsversion"): v = sys.getwindowsversion() - self.assertIsInstance(v, tuple) + self.assertTrue(isinstance(v[:], tuple)) self.assertEqual(len(v), 5) self.assertIsInstance(v[0], int) self.assertIsInstance(v[1], int) self.assertIsInstance(v[2], int) self.assertIsInstance(v[3], int) self.assertIsInstance(v[4], str) + self.assertRaises(IndexError, operator.getitem, v, 5) + self.assertIsInstance(v.major, int) + self.assertIsInstance(v.minor, int) + self.assertIsInstance(v.build, int) + self.assertIsInstance(v.platform, int) + self.assertIsInstance(v.service_pack, str) + self.assertEqual(v[0], v.major) + self.assertEqual(v[1], v.minor) + self.assertEqual(v[2], v.build) + self.assertEqual(v[3], v.platform) + self.assertEqual(v[4], v.service_pack) + + # This is how platform.py calls it. Make sure tuple + # still has 5 elements + maj, min, buildno, plat, csd = sys.getwindowsversion() def test_call_tracing(self): self.assertRaises(TypeError, sys.call_tracing, type, 2) Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Wed Jan 27 01:44:57 2010 @@ -12,6 +12,11 @@ Core and Builtins ----------------- +- Issue #7766: Change sys.getwindowsversion() return value to a named + tuple and add the additional members returned in an OSVERSIONINFOEX + structure. The new members are service_pack_major, service_pack_minor, + suite_mask, and product_type. + - Issue #7561: Operations on empty bytearrays (such as `int(bytearray())`) could crash in many places because of the PyByteArray_AS_STRING() macro returning NULL. The macro now returns a statically allocated empty Modified: python/branches/py3k/Python/sysmodule.c ============================================================================== --- python/branches/py3k/Python/sysmodule.c (original) +++ python/branches/py3k/Python/sysmodule.c Wed Jan 27 01:44:57 2010 @@ -597,26 +597,65 @@ PyDoc_STRVAR(getwindowsversion_doc, "getwindowsversion()\n\ \n\ -Return information about the running version of Windows.\n\ -The result is a tuple of (major, minor, build, platform, text)\n\ -All elements are numbers, except text which is a string.\n\ -Platform may be 0 for win32s, 1 for Windows 9x/ME, 2 for Windows NT/2000/XP\n\ -" +Return information about the running version of Windows as a named tuple.\n\ +The members are named: major, minor, build, platform, service_pack,\n\ +service_pack_major, service_pack_minor, suite_mask, and product_type. For\n\ +backward compatibiliy, only the first 5 items are available by indexing.\n\ +All elements are numbers, except service_pack which is a string. Platform\n\ +may be 0 for win32s, 1 for Windows 9x/ME, 2 for Windows NT/2000/XP/Vista/7,\n\ +3 for Windows CE. Product_type may be 1 for a workstation, 2 for a domain\n\ +controller, 3 for a server." ); +static PyTypeObject WindowsVersionType = {0, 0, 0, 0, 0, 0}; + +static PyStructSequence_Field windows_version_fields[] = { + {"major", "Major version number"}, + {"minor", "Minor version number"}, + {"build", "Build number"}, + {"platform", "Operating system platform"}, + {"service_pack", "Latest Service Pack installed on the system"}, + {"service_pack_major", "Service Pack major version number"}, + {"service_pack_minor", "Service Pack minor version number"}, + {"suite_mask", "Bit mask identifying available product suites"}, + {"product_type", "System product type"}, + {0} +}; + +static PyStructSequence_Desc windows_version_desc = { + "sys.getwindowsversion", /* name */ + getwindowsversion_doc, /* doc */ + windows_version_fields, /* fields */ + 5 /* For backward compatibility, + only the first 5 items are accessible + via indexing, the rest are name only */ +}; + static PyObject * sys_getwindowsversion(PyObject *self) { - OSVERSIONINFO ver; + PyObject *version; + int pos = 0; + OSVERSIONINFOEX ver; ver.dwOSVersionInfoSize = sizeof(ver); - if (!GetVersionEx(&ver)) + if (!GetVersionEx((OSVERSIONINFO*) &ver)) return PyErr_SetFromWindowsErr(0); - return Py_BuildValue("HHHHs", - ver.dwMajorVersion, - ver.dwMinorVersion, - ver.dwBuildNumber, - ver.dwPlatformId, - ver.szCSDVersion); + + version = PyStructSequence_New(&WindowsVersionType); + if (version == NULL) + return NULL; + + PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.dwMajorVersion)); + PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.dwMinorVersion)); + PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.dwBuildNumber)); + PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.dwPlatformId)); + PyStructSequence_SET_ITEM(version, pos++, PyUnicode_FromString(ver.szCSDVersion)); + PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.wServicePackMajor)); + PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.wServicePackMinor)); + PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.wSuiteMask)); + PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.wProductType)); + + return version; } #endif /* MS_WINDOWS */ @@ -1488,6 +1527,16 @@ FlagsType.tp_init = NULL; FlagsType.tp_new = NULL; + +#if defined(MS_WINDOWS) + /* getwindowsversion */ + if (WindowsVersionType.tp_name == 0) + PyStructSequence_InitType(&WindowsVersionType, &windows_version_desc); + /* prevent user from creating new instances */ + WindowsVersionType.tp_init = NULL; + WindowsVersionType.tp_new = NULL; +#endif + /* float repr style: 0.03 (short) vs 0.029999999999999999 (legacy) */ #ifndef PY_NO_SHORT_FLOAT_REPR SET_SYS_FROM_STRING("float_repr_style", From python-checkins at python.org Wed Jan 27 01:45:36 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 00:45:36 -0000 Subject: [Python-checkins] r77766 - python/branches/release31-maint Message-ID: Author: eric.smith Date: Wed Jan 27 01:45:36 2010 New Revision: 77766 Log: Blocked revisions 77765 via svnmerge ................ r77765 | eric.smith | 2010-01-26 19:44:57 -0500 (Tue, 26 Jan 2010) | 9 lines Merged revisions 77763 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77763 | eric.smith | 2010-01-26 19:28:29 -0500 (Tue, 26 Jan 2010) | 1 line Issue #7766: Change sys.getwindowsversion() return value to a named tuple and add the additional members returned in an OSVERSIONINFOEX structure. The new members are service_pack_major, service_pack_minor, suite_mask, and product_type. ........ ................ Modified: python/branches/release31-maint/ (props changed) From python-checkins at python.org Wed Jan 27 01:55:16 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 00:55:16 -0000 Subject: [Python-checkins] r77767 - python/trunk/Doc/library/sys.rst Message-ID: Author: eric.smith Date: Wed Jan 27 01:55:16 2010 New Revision: 77767 Log: Fix type on getwindowsversion documentation. Thanks Taggnostr. Modified: python/trunk/Doc/library/sys.rst Modified: python/trunk/Doc/library/sys.rst ============================================================================== --- python/trunk/Doc/library/sys.rst (original) +++ python/trunk/Doc/library/sys.rst Wed Jan 27 01:55:16 2010 @@ -470,7 +470,7 @@ .. function:: getwindowsversion() - Return a named tuple containing describing the Windows version + Return a named tuple describing the Windows version currently running. The named elements are *major*, *minor*, *build*, *platform*, *service_pack*, *service_pack_minor*, *service_pack_major*, *suite_mask*, and *product_type*. From python-checkins at python.org Wed Jan 27 01:55:44 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 00:55:44 -0000 Subject: [Python-checkins] r77768 - python/branches/release26-maint Message-ID: Author: eric.smith Date: Wed Jan 27 01:55:44 2010 New Revision: 77768 Log: Blocked revisions 77767 via svnmerge ........ r77767 | eric.smith | 2010-01-26 19:55:16 -0500 (Tue, 26 Jan 2010) | 1 line Fix type on getwindowsversion documentation. Thanks Taggnostr. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Wed Jan 27 01:56:31 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 00:56:31 -0000 Subject: [Python-checkins] r77769 - in python/branches/py3k: Doc/library/sys.rst Message-ID: Author: eric.smith Date: Wed Jan 27 01:56:30 2010 New Revision: 77769 Log: Merged revisions 77767 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77767 | eric.smith | 2010-01-26 19:55:16 -0500 (Tue, 26 Jan 2010) | 1 line Fix type on getwindowsversion documentation. Thanks Taggnostr. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/library/sys.rst Modified: python/branches/py3k/Doc/library/sys.rst ============================================================================== --- python/branches/py3k/Doc/library/sys.rst (original) +++ python/branches/py3k/Doc/library/sys.rst Wed Jan 27 01:56:30 2010 @@ -394,7 +394,7 @@ .. function:: getwindowsversion() - Return a named tuple containing describing the Windows version + Return a named tuple describing the Windows version currently running. The named elements are *major*, *minor*, *build*, *platform*, *service_pack*, *service_pack_minor*, *service_pack_major*, *suite_mask*, and *product_type*. From python-checkins at python.org Wed Jan 27 01:56:57 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 00:56:57 -0000 Subject: [Python-checkins] r77770 - python/branches/release31-maint Message-ID: Author: eric.smith Date: Wed Jan 27 01:56:56 2010 New Revision: 77770 Log: Blocked revisions 77769 via svnmerge ................ r77769 | eric.smith | 2010-01-26 19:56:30 -0500 (Tue, 26 Jan 2010) | 9 lines Merged revisions 77767 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77767 | eric.smith | 2010-01-26 19:55:16 -0500 (Tue, 26 Jan 2010) | 1 line Fix type on getwindowsversion documentation. Thanks Taggnostr. ........ ................ Modified: python/branches/release31-maint/ (props changed) From python-checkins at python.org Wed Jan 27 01:58:44 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 00:58:44 -0000 Subject: [Python-checkins] r77771 - python/trunk/Lib/test/test_sys.py Message-ID: Author: eric.smith Date: Wed Jan 27 01:58:43 2010 New Revision: 77771 Log: Removed unneeded test. Modified: python/trunk/Lib/test/test_sys.py Modified: python/trunk/Lib/test/test_sys.py ============================================================================== --- python/trunk/Lib/test/test_sys.py (original) +++ python/trunk/Lib/test/test_sys.py Wed Jan 27 01:58:43 2010 @@ -206,7 +206,6 @@ def test_getwindowsversion(self): if hasattr(sys, "getwindowsversion"): v = sys.getwindowsversion() - self.assertTrue(isinstance(v[:], tuple)) self.assertEqual(len(v), 5) self.assertIsInstance(v[0], int) self.assertIsInstance(v[1], int) From python-checkins at python.org Wed Jan 27 01:59:22 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 00:59:22 -0000 Subject: [Python-checkins] r77772 - python/branches/release26-maint Message-ID: Author: eric.smith Date: Wed Jan 27 01:59:22 2010 New Revision: 77772 Log: Blocked revisions 77771 via svnmerge ........ r77771 | eric.smith | 2010-01-26 19:58:43 -0500 (Tue, 26 Jan 2010) | 1 line Removed unneeded test. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Wed Jan 27 02:00:00 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 01:00:00 -0000 Subject: [Python-checkins] r77773 - in python/branches/py3k: Lib/test/test_sys.py Message-ID: Author: eric.smith Date: Wed Jan 27 01:59:59 2010 New Revision: 77773 Log: Merged revisions 77771 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77771 | eric.smith | 2010-01-26 19:58:43 -0500 (Tue, 26 Jan 2010) | 1 line Removed unneeded test. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_sys.py Modified: python/branches/py3k/Lib/test/test_sys.py ============================================================================== --- python/branches/py3k/Lib/test/test_sys.py (original) +++ python/branches/py3k/Lib/test/test_sys.py Wed Jan 27 01:59:59 2010 @@ -228,7 +228,6 @@ def test_getwindowsversion(self): if hasattr(sys, "getwindowsversion"): v = sys.getwindowsversion() - self.assertTrue(isinstance(v[:], tuple)) self.assertEqual(len(v), 5) self.assertIsInstance(v[0], int) self.assertIsInstance(v[1], int) From python-checkins at python.org Wed Jan 27 02:00:29 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 01:00:29 -0000 Subject: [Python-checkins] r77774 - python/branches/release31-maint Message-ID: Author: eric.smith Date: Wed Jan 27 02:00:29 2010 New Revision: 77774 Log: Blocked revisions 77773 via svnmerge ................ r77773 | eric.smith | 2010-01-26 19:59:59 -0500 (Tue, 26 Jan 2010) | 9 lines Merged revisions 77771 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77771 | eric.smith | 2010-01-26 19:58:43 -0500 (Tue, 26 Jan 2010) | 1 line Removed unneeded test. ........ ................ Modified: python/branches/release31-maint/ (props changed) From python-checkins at python.org Wed Jan 27 02:21:15 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 01:21:15 -0000 Subject: [Python-checkins] r77775 - python/trunk/Lib/test/test_sys.py Message-ID: Author: eric.smith Date: Wed Jan 27 02:21:15 2010 New Revision: 77775 Log: Switch to test_support.get_attribute. Modified: python/trunk/Lib/test/test_sys.py Modified: python/trunk/Lib/test/test_sys.py ============================================================================== --- python/trunk/Lib/test/test_sys.py (original) +++ python/trunk/Lib/test/test_sys.py Wed Jan 27 02:21:15 2010 @@ -204,29 +204,30 @@ sys.setrecursionlimit(oldlimit) def test_getwindowsversion(self): - if hasattr(sys, "getwindowsversion"): - v = sys.getwindowsversion() - self.assertEqual(len(v), 5) - self.assertIsInstance(v[0], int) - self.assertIsInstance(v[1], int) - self.assertIsInstance(v[2], int) - self.assertIsInstance(v[3], int) - self.assertIsInstance(v[4], str) - self.assertRaises(IndexError, operator.getitem, v, 5) - self.assertIsInstance(v.major, int) - self.assertIsInstance(v.minor, int) - self.assertIsInstance(v.build, int) - self.assertIsInstance(v.platform, int) - self.assertIsInstance(v.service_pack, str) - self.assertEqual(v[0], v.major) - self.assertEqual(v[1], v.minor) - self.assertEqual(v[2], v.build) - self.assertEqual(v[3], v.platform) - self.assertEqual(v[4], v.service_pack) - - # This is how platform.py calls it. Make sure tuple - # still has 5 elements - maj, min, buildno, plat, csd = sys.getwindowsversion() + # Raise SkipTest if sys doesn't have getwindowsversion attribute + test.test_support.get_attribute(sys, "getwindowsversion") + v = sys.getwindowsversion() + self.assertEqual(len(v), 5) + self.assertIsInstance(v[0], int) + self.assertIsInstance(v[1], int) + self.assertIsInstance(v[2], int) + self.assertIsInstance(v[3], int) + self.assertIsInstance(v[4], str) + self.assertRaises(IndexError, operator.getitem, v, 5) + self.assertIsInstance(v.major, int) + self.assertIsInstance(v.minor, int) + self.assertIsInstance(v.build, int) + self.assertIsInstance(v.platform, int) + self.assertIsInstance(v.service_pack, str) + self.assertEqual(v[0], v.major) + self.assertEqual(v[1], v.minor) + self.assertEqual(v[2], v.build) + self.assertEqual(v[3], v.platform) + self.assertEqual(v[4], v.service_pack) + + # This is how platform.py calls it. Make sure tuple + # still has 5 elements + maj, min, buildno, plat, csd = sys.getwindowsversion() def test_dlopenflags(self): if hasattr(sys, "setdlopenflags"): From python-checkins at python.org Wed Jan 27 02:24:06 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 01:24:06 -0000 Subject: [Python-checkins] r77776 - python/branches/release26-maint Message-ID: Author: eric.smith Date: Wed Jan 27 02:24:06 2010 New Revision: 77776 Log: Blocked revisions 77775 via svnmerge ........ r77775 | eric.smith | 2010-01-26 20:21:15 -0500 (Tue, 26 Jan 2010) | 1 line Switch to test_support.get_attribute. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Wed Jan 27 02:25:02 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 01:25:02 -0000 Subject: [Python-checkins] r77777 - in python/branches/py3k: Lib/test/test_sys.py Message-ID: Author: eric.smith Date: Wed Jan 27 02:25:02 2010 New Revision: 77777 Log: Merged revisions 77775 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77775 | eric.smith | 2010-01-26 20:21:15 -0500 (Tue, 26 Jan 2010) | 1 line Switch to test_support.get_attribute. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_sys.py Modified: python/branches/py3k/Lib/test/test_sys.py ============================================================================== --- python/branches/py3k/Lib/test/test_sys.py (original) +++ python/branches/py3k/Lib/test/test_sys.py Wed Jan 27 02:25:02 2010 @@ -226,29 +226,30 @@ err) def test_getwindowsversion(self): - if hasattr(sys, "getwindowsversion"): - v = sys.getwindowsversion() - self.assertEqual(len(v), 5) - self.assertIsInstance(v[0], int) - self.assertIsInstance(v[1], int) - self.assertIsInstance(v[2], int) - self.assertIsInstance(v[3], int) - self.assertIsInstance(v[4], str) - self.assertRaises(IndexError, operator.getitem, v, 5) - self.assertIsInstance(v.major, int) - self.assertIsInstance(v.minor, int) - self.assertIsInstance(v.build, int) - self.assertIsInstance(v.platform, int) - self.assertIsInstance(v.service_pack, str) - self.assertEqual(v[0], v.major) - self.assertEqual(v[1], v.minor) - self.assertEqual(v[2], v.build) - self.assertEqual(v[3], v.platform) - self.assertEqual(v[4], v.service_pack) - - # This is how platform.py calls it. Make sure tuple - # still has 5 elements - maj, min, buildno, plat, csd = sys.getwindowsversion() + # Raise SkipTest if sys doesn't have getwindowsversion attribute + test.test_support.get_attribute(sys, "getwindowsversion") + v = sys.getwindowsversion() + self.assertEqual(len(v), 5) + self.assertIsInstance(v[0], int) + self.assertIsInstance(v[1], int) + self.assertIsInstance(v[2], int) + self.assertIsInstance(v[3], int) + self.assertIsInstance(v[4], str) + self.assertRaises(IndexError, operator.getitem, v, 5) + self.assertIsInstance(v.major, int) + self.assertIsInstance(v.minor, int) + self.assertIsInstance(v.build, int) + self.assertIsInstance(v.platform, int) + self.assertIsInstance(v.service_pack, str) + self.assertEqual(v[0], v.major) + self.assertEqual(v[1], v.minor) + self.assertEqual(v[2], v.build) + self.assertEqual(v[3], v.platform) + self.assertEqual(v[4], v.service_pack) + + # This is how platform.py calls it. Make sure tuple + # still has 5 elements + maj, min, buildno, plat, csd = sys.getwindowsversion() def test_call_tracing(self): self.assertRaises(TypeError, sys.call_tracing, type, 2) From python-checkins at python.org Wed Jan 27 02:26:37 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 01:26:37 -0000 Subject: [Python-checkins] r77778 - python/branches/release31-maint Message-ID: Author: eric.smith Date: Wed Jan 27 02:26:37 2010 New Revision: 77778 Log: Blocked revisions 77777 via svnmerge ................ r77777 | eric.smith | 2010-01-26 20:25:02 -0500 (Tue, 26 Jan 2010) | 9 lines Merged revisions 77775 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77775 | eric.smith | 2010-01-26 20:21:15 -0500 (Tue, 26 Jan 2010) | 1 line Switch to test_support.get_attribute. ........ ................ Modified: python/branches/release31-maint/ (props changed) From python-checkins at python.org Wed Jan 27 02:38:34 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 01:38:34 -0000 Subject: [Python-checkins] r77779 - python/branches/py3k/Lib/test/test_sys.py Message-ID: Author: eric.smith Date: Wed Jan 27 02:38:34 2010 New Revision: 77779 Log: Fixed test_support -> support. Modified: python/branches/py3k/Lib/test/test_sys.py Modified: python/branches/py3k/Lib/test/test_sys.py ============================================================================== --- python/branches/py3k/Lib/test/test_sys.py (original) +++ python/branches/py3k/Lib/test/test_sys.py Wed Jan 27 02:38:34 2010 @@ -227,7 +227,7 @@ def test_getwindowsversion(self): # Raise SkipTest if sys doesn't have getwindowsversion attribute - test.test_support.get_attribute(sys, "getwindowsversion") + test.support.get_attribute(sys, "getwindowsversion") v = sys.getwindowsversion() self.assertEqual(len(v), 5) self.assertIsInstance(v[0], int) From python-checkins at python.org Wed Jan 27 02:39:10 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 01:39:10 -0000 Subject: [Python-checkins] r77780 - python/branches/release31-maint Message-ID: Author: eric.smith Date: Wed Jan 27 02:39:10 2010 New Revision: 77780 Log: Blocked revisions 77779 via svnmerge ........ r77779 | eric.smith | 2010-01-26 20:38:34 -0500 (Tue, 26 Jan 2010) | 1 line Fixed test_support -> support. ........ Modified: python/branches/release31-maint/ (props changed) From python-checkins at python.org Wed Jan 27 02:47:15 2010 From: python-checkins at python.org (benjamin.peterson) Date: Wed, 27 Jan 2010 01:47:15 -0000 Subject: [Python-checkins] r77781 - in python/branches/py3k: Lib/test/test_fileio.py Misc/NEWS Modules/_io/fileio.c Message-ID: Author: benjamin.peterson Date: Wed Jan 27 02:47:14 2010 New Revision: 77781 Log: don't accept bytes in FileIO.write #7785 Modified: python/branches/py3k/Lib/test/test_fileio.py python/branches/py3k/Misc/NEWS python/branches/py3k/Modules/_io/fileio.c Modified: python/branches/py3k/Lib/test/test_fileio.py ============================================================================== --- python/branches/py3k/Lib/test/test_fileio.py (original) +++ python/branches/py3k/Lib/test/test_fileio.py Wed Jan 27 02:47:14 2010 @@ -78,6 +78,9 @@ self.assertEqual(self.f.readline(None), b"hi\n") self.assertEqual(self.f.readlines(None), [b"bye\n", b"abc"]) + def test_reject(self): + self.assertRaises(TypeError, self.f.write, "Hello!") + def testRepr(self): self.assertEquals(repr(self.f), "<_io.FileIO name=%r mode=%r>" % (self.f.name, self.f.mode)) @@ -168,7 +171,7 @@ @ClosedFDRaises def testErrnoOnClosedWrite(self, f): - f.write('a') + f.write(b'a') @ClosedFDRaises def testErrnoOnClosedSeek(self, f): Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Wed Jan 27 02:47:14 2010 @@ -234,6 +234,8 @@ Library ------- +- Don't accept bytes in FileIO.write(). + - Removed the functions 'verify' and 'vereq' from Lib/test/support.py. - Issue #7773: Fix an UnboundLocalError in platform.linux_distribution() when Modified: python/branches/py3k/Modules/_io/fileio.c ============================================================================== --- python/branches/py3k/Modules/_io/fileio.c (original) +++ python/branches/py3k/Modules/_io/fileio.c Wed Jan 27 02:47:14 2010 @@ -648,7 +648,7 @@ if (!self->writable) return err_mode("writing"); - if (!PyArg_ParseTuple(args, "s*", &pbuf)) + if (!PyArg_ParseTuple(args, "y*", &pbuf)) return NULL; if (_PyVerify_fd(self->fd)) { From python-checkins at python.org Wed Jan 27 02:51:29 2010 From: python-checkins at python.org (benjamin.peterson) Date: Wed, 27 Jan 2010 01:51:29 -0000 Subject: [Python-checkins] r77782 - python/branches/py3k/Misc/NEWS Message-ID: Author: benjamin.peterson Date: Wed Jan 27 02:51:29 2010 New Revision: 77782 Log: add issue number Modified: python/branches/py3k/Misc/NEWS Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Wed Jan 27 02:51:29 2010 @@ -234,7 +234,7 @@ Library ------- -- Don't accept bytes in FileIO.write(). +- Issue #7785: Don't accept bytes in FileIO.write(). - Removed the functions 'verify' and 'vereq' from Lib/test/support.py. From python-checkins at python.org Wed Jan 27 02:56:08 2010 From: python-checkins at python.org (benjamin.peterson) Date: Wed, 27 Jan 2010 01:56:08 -0000 Subject: [Python-checkins] r77783 - in python/branches/release31-maint: Lib/test/test_fileio.py Misc/NEWS Modules/_io/fileio.c Message-ID: Author: benjamin.peterson Date: Wed Jan 27 02:56:08 2010 New Revision: 77783 Log: Merged revisions 77781-77782 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ........ r77781 | benjamin.peterson | 2010-01-26 19:47:14 -0600 (Tue, 26 Jan 2010) | 1 line don't accept bytes in FileIO.write #7785 ........ r77782 | benjamin.peterson | 2010-01-26 19:51:29 -0600 (Tue, 26 Jan 2010) | 1 line add issue number ........ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/test/test_fileio.py python/branches/release31-maint/Misc/NEWS python/branches/release31-maint/Modules/_io/fileio.c Modified: python/branches/release31-maint/Lib/test/test_fileio.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_fileio.py (original) +++ python/branches/release31-maint/Lib/test/test_fileio.py Wed Jan 27 02:56:08 2010 @@ -78,6 +78,9 @@ self.assertEqual(self.f.readline(None), b"hi\n") self.assertEqual(self.f.readlines(None), [b"bye\n", b"abc"]) + def test_reject(self): + self.assertRaises(TypeError, self.f.write, "Hello!") + def testRepr(self): self.assertEquals(repr(self.f), "<_io.FileIO name=%r mode=%r>" % (self.f.name, self.f.mode)) @@ -170,7 +173,7 @@ @ClosedFDRaises def testErrnoOnClosedWrite(self, f): - f.write('a') + f.write(b'a') @ClosedFDRaises def testErrnoOnClosedSeek(self, f): Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Wed Jan 27 02:56:08 2010 @@ -73,6 +73,8 @@ Library ------- +- Issue #7785: Don't accept bytes in FileIO.write(). + - Issue #7773: Fix an UnboundLocalError in platform.linux_distribution() when the release file is empty. Modified: python/branches/release31-maint/Modules/_io/fileio.c ============================================================================== --- python/branches/release31-maint/Modules/_io/fileio.c (original) +++ python/branches/release31-maint/Modules/_io/fileio.c Wed Jan 27 02:56:08 2010 @@ -651,7 +651,7 @@ if (!self->writable) return err_mode("writing"); - if (!PyArg_ParseTuple(args, "s*", &pbuf)) + if (!PyArg_ParseTuple(args, "y*", &pbuf)) return NULL; if (_PyVerify_fd(self->fd)) { From python-checkins at python.org Wed Jan 27 03:06:25 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 02:06:25 -0000 Subject: [Python-checkins] r77784 - python/trunk/Lib/test/test_sys.py Message-ID: Author: eric.smith Date: Wed Jan 27 03:06:25 2010 New Revision: 77784 Log: Added named (but not numbered) attributes to sys.getwindowsversion() test. Modified: python/trunk/Lib/test/test_sys.py Modified: python/trunk/Lib/test/test_sys.py ============================================================================== --- python/trunk/Lib/test/test_sys.py (original) +++ python/trunk/Lib/test/test_sys.py Wed Jan 27 03:06:25 2010 @@ -219,6 +219,10 @@ self.assertIsInstance(v.build, int) self.assertIsInstance(v.platform, int) self.assertIsInstance(v.service_pack, str) + self.assertIsInstance(v.service_pack_minor, int) + self.assertIsInstance(v.service_pack_major, int) + self.assertIsInstance(v.suite_mask, int) + self.assertIsInstance(v.product_type, int) self.assertEqual(v[0], v.major) self.assertEqual(v[1], v.minor) self.assertEqual(v[2], v.build) From python-checkins at python.org Wed Jan 27 03:10:18 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 02:10:18 -0000 Subject: [Python-checkins] r77785 - python/branches/release26-maint Message-ID: Author: eric.smith Date: Wed Jan 27 03:10:18 2010 New Revision: 77785 Log: Blocked revisions 77784 via svnmerge ........ r77784 | eric.smith | 2010-01-26 21:06:25 -0500 (Tue, 26 Jan 2010) | 1 line Added named (but not numbered) attributes to sys.getwindowsversion() test. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Wed Jan 27 03:14:27 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 02:14:27 -0000 Subject: [Python-checkins] r77786 - in python/branches/py3k: Lib/test/test_sys.py Message-ID: Author: eric.smith Date: Wed Jan 27 03:14:26 2010 New Revision: 77786 Log: Merged revisions 77784 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77784 | eric.smith | 2010-01-26 21:06:25 -0500 (Tue, 26 Jan 2010) | 1 line Added named (but not numbered) attributes to sys.getwindowsversion() test. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_sys.py Modified: python/branches/py3k/Lib/test/test_sys.py ============================================================================== --- python/branches/py3k/Lib/test/test_sys.py (original) +++ python/branches/py3k/Lib/test/test_sys.py Wed Jan 27 03:14:26 2010 @@ -241,6 +241,10 @@ self.assertIsInstance(v.build, int) self.assertIsInstance(v.platform, int) self.assertIsInstance(v.service_pack, str) + self.assertIsInstance(v.service_pack_minor, int) + self.assertIsInstance(v.service_pack_major, int) + self.assertIsInstance(v.suite_mask, int) + self.assertIsInstance(v.product_type, int) self.assertEqual(v[0], v.major) self.assertEqual(v[1], v.minor) self.assertEqual(v[2], v.build) From python-checkins at python.org Wed Jan 27 03:14:55 2010 From: python-checkins at python.org (eric.smith) Date: Wed, 27 Jan 2010 02:14:55 -0000 Subject: [Python-checkins] r77787 - python/branches/release31-maint Message-ID: Author: eric.smith Date: Wed Jan 27 03:14:55 2010 New Revision: 77787 Log: Blocked revisions 77786 via svnmerge ................ r77786 | eric.smith | 2010-01-26 21:14:26 -0500 (Tue, 26 Jan 2010) | 9 lines Merged revisions 77784 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77784 | eric.smith | 2010-01-26 21:06:25 -0500 (Tue, 26 Jan 2010) | 1 line Added named (but not numbered) attributes to sys.getwindowsversion() test. ........ ................ Modified: python/branches/release31-maint/ (props changed) From python-checkins at python.org Wed Jan 27 03:15:29 2010 From: python-checkins at python.org (benjamin.peterson) Date: Wed, 27 Jan 2010 02:15:29 -0000 Subject: [Python-checkins] r77788 - python/trunk/Lib/UserDict.py Message-ID: Author: benjamin.peterson Date: Wed Jan 27 03:15:28 2010 New Revision: 77788 Log: for UserDict to be compatible with abcs, it must subclass object Modified: python/trunk/Lib/UserDict.py Modified: python/trunk/Lib/UserDict.py ============================================================================== --- python/trunk/Lib/UserDict.py (original) +++ python/trunk/Lib/UserDict.py Wed Jan 27 03:15:28 2010 @@ -1,6 +1,6 @@ """A more or less complete user-defined wrapper around dictionary objects.""" -class UserDict: +class UserDict(object): def __init__(self, dict=None, **kwargs): self.data = {} if dict is not None: From python-checkins at python.org Wed Jan 27 03:16:42 2010 From: python-checkins at python.org (benjamin.peterson) Date: Wed, 27 Jan 2010 02:16:42 -0000 Subject: [Python-checkins] r77789 - in python/trunk: Lib/abc.py Lib/test/test_abc.py Misc/NEWS Message-ID: Author: benjamin.peterson Date: Wed Jan 27 03:16:42 2010 New Revision: 77789 Log: raise a clear TypeError when trying to register a non-class Modified: python/trunk/Lib/abc.py python/trunk/Lib/test/test_abc.py python/trunk/Misc/NEWS Modified: python/trunk/Lib/abc.py ============================================================================== --- python/trunk/Lib/abc.py (original) +++ python/trunk/Lib/abc.py Wed Jan 27 03:16:42 2010 @@ -96,7 +96,7 @@ def register(cls, subclass): """Register a virtual subclass of an ABC.""" - if not isinstance(cls, type): + if not isinstance(subclass, type): raise TypeError("Can only register classes") if issubclass(subclass, cls): return # Already a subclass Modified: python/trunk/Lib/test/test_abc.py ============================================================================== --- python/trunk/Lib/test/test_abc.py (original) +++ python/trunk/Lib/test/test_abc.py Wed Jan 27 03:16:42 2010 @@ -149,6 +149,12 @@ self.assertRaises(RuntimeError, C.register, A) # cycles not allowed C.register(B) # ok + def test_register_non_class(self): + class A(object): + __metaclass__ = abc.ABCMeta + self.assertRaisesRegexp(TypeError, "Can only register classes", + A.register, 4) + def test_registration_transitiveness(self): class A: __metaclass__ = abc.ABCMeta Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Wed Jan 27 03:16:42 2010 @@ -47,6 +47,8 @@ Library ------- +- Issue #7792: Registering non-classes to ABCs raised an obscure error. + - Removed the functions 'verify' and 'vereq' from Lib/test/test_support.py. - Issue #7773: Fix an UnboundLocalError in platform.linux_distribution() when From python-checkins at python.org Wed Jan 27 03:24:26 2010 From: python-checkins at python.org (benjamin.peterson) Date: Wed, 27 Jan 2010 02:24:26 -0000 Subject: [Python-checkins] r77790 - in python/branches/release26-maint: Lib/UserDict.py Lib/abc.py Lib/test/test_abc.py Misc/NEWS Message-ID: Author: benjamin.peterson Date: Wed Jan 27 03:24:25 2010 New Revision: 77790 Log: Merged revisions 77788-77789 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77788 | benjamin.peterson | 2010-01-26 20:15:28 -0600 (Tue, 26 Jan 2010) | 1 line for UserDict to be compatible with abcs, it must subclass object ........ r77789 | benjamin.peterson | 2010-01-26 20:16:42 -0600 (Tue, 26 Jan 2010) | 1 line raise a clear TypeError when trying to register a non-class ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/UserDict.py python/branches/release26-maint/Lib/abc.py python/branches/release26-maint/Lib/test/test_abc.py python/branches/release26-maint/Misc/NEWS Modified: python/branches/release26-maint/Lib/UserDict.py ============================================================================== --- python/branches/release26-maint/Lib/UserDict.py (original) +++ python/branches/release26-maint/Lib/UserDict.py Wed Jan 27 03:24:25 2010 @@ -1,6 +1,6 @@ """A more or less complete user-defined wrapper around dictionary objects.""" -class UserDict: +class UserDict(object): def __init__(self, dict=None, **kwargs): self.data = {} if dict is not None: Modified: python/branches/release26-maint/Lib/abc.py ============================================================================== --- python/branches/release26-maint/Lib/abc.py (original) +++ python/branches/release26-maint/Lib/abc.py Wed Jan 27 03:24:25 2010 @@ -96,7 +96,7 @@ def register(cls, subclass): """Register a virtual subclass of an ABC.""" - if not isinstance(cls, type): + if not isinstance(subclass, type): raise TypeError("Can only register classes") if issubclass(subclass, cls): return # Already a subclass Modified: python/branches/release26-maint/Lib/test/test_abc.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_abc.py (original) +++ python/branches/release26-maint/Lib/test/test_abc.py Wed Jan 27 03:24:25 2010 @@ -149,6 +149,11 @@ self.assertRaises(RuntimeError, C.register, A) # cycles not allowed C.register(B) # ok + def test_register_non_class(self): + class A(object): + __metaclass__ = abc.ABCMeta + self.assertRaises(TypeError, A.register, 4) + def test_registration_transitiveness(self): class A: __metaclass__ = abc.ABCMeta Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Wed Jan 27 03:24:25 2010 @@ -53,6 +53,8 @@ Library ------- +- Issue #7792: Registering non-classes to ABCs raised an obscure error. + - Issue #7773: Fix an UnboundLocalError in platform.linux_distribution() when the release file is empty. From python-checkins at python.org Wed Jan 27 03:25:59 2010 From: python-checkins at python.org (benjamin.peterson) Date: Wed, 27 Jan 2010 02:25:59 -0000 Subject: [Python-checkins] r77791 - in python/branches/py3k: Lib/abc.py Lib/test/test_abc.py Misc/NEWS Message-ID: Author: benjamin.peterson Date: Wed Jan 27 03:25:58 2010 New Revision: 77791 Log: Merged revisions 77789 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77789 | benjamin.peterson | 2010-01-26 20:16:42 -0600 (Tue, 26 Jan 2010) | 1 line raise a clear TypeError when trying to register a non-class ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/abc.py python/branches/py3k/Lib/test/test_abc.py python/branches/py3k/Misc/NEWS Modified: python/branches/py3k/Lib/abc.py ============================================================================== --- python/branches/py3k/Lib/abc.py (original) +++ python/branches/py3k/Lib/abc.py Wed Jan 27 03:25:58 2010 @@ -94,7 +94,7 @@ def register(cls, subclass): """Register a virtual subclass of an ABC.""" - if not isinstance(cls, type): + if not isinstance(subclass, type): raise TypeError("Can only register classes") if issubclass(subclass, cls): return # Already a subclass Modified: python/branches/py3k/Lib/test/test_abc.py ============================================================================== --- python/branches/py3k/Lib/test/test_abc.py (original) +++ python/branches/py3k/Lib/test/test_abc.py Wed Jan 27 03:25:58 2010 @@ -139,6 +139,12 @@ self.assertRaises(RuntimeError, C.register, A) # cycles not allowed C.register(B) # ok + def test_register_non_class(self): + class A(metaclass=abc.ABCMeta): + pass + self.assertRaisesRegexp(TypeError, "Can only register classes", + A.register, 4) + def test_registration_transitiveness(self): class A(metaclass=abc.ABCMeta): pass Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Wed Jan 27 03:25:58 2010 @@ -234,6 +234,8 @@ Library ------- +- Issue #7792: Registering non-classes to ABCs raised an obscure error. + - Issue #7785: Don't accept bytes in FileIO.write(). - Removed the functions 'verify' and 'vereq' from Lib/test/support.py. From python-checkins at python.org Wed Jan 27 03:27:48 2010 From: python-checkins at python.org (benjamin.peterson) Date: Wed, 27 Jan 2010 02:27:48 -0000 Subject: [Python-checkins] r77792 - python/branches/py3k Message-ID: Author: benjamin.peterson Date: Wed Jan 27 03:27:48 2010 New Revision: 77792 Log: Blocked revisions 77788 via svnmerge ........ r77788 | benjamin.peterson | 2010-01-26 20:15:28 -0600 (Tue, 26 Jan 2010) | 1 line for UserDict to be compatible with abcs, it must subclass object ........ Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Wed Jan 27 03:28:23 2010 From: python-checkins at python.org (benjamin.peterson) Date: Wed, 27 Jan 2010 02:28:23 -0000 Subject: [Python-checkins] r77793 - in python/branches/release31-maint: Lib/abc.py Lib/test/test_abc.py Misc/NEWS Message-ID: Author: benjamin.peterson Date: Wed Jan 27 03:28:22 2010 New Revision: 77793 Log: Merged revisions 77791 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77791 | benjamin.peterson | 2010-01-26 20:25:58 -0600 (Tue, 26 Jan 2010) | 9 lines Merged revisions 77789 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77789 | benjamin.peterson | 2010-01-26 20:16:42 -0600 (Tue, 26 Jan 2010) | 1 line raise a clear TypeError when trying to register a non-class ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/abc.py python/branches/release31-maint/Lib/test/test_abc.py python/branches/release31-maint/Misc/NEWS Modified: python/branches/release31-maint/Lib/abc.py ============================================================================== --- python/branches/release31-maint/Lib/abc.py (original) +++ python/branches/release31-maint/Lib/abc.py Wed Jan 27 03:28:22 2010 @@ -94,7 +94,7 @@ def register(cls, subclass): """Register a virtual subclass of an ABC.""" - if not isinstance(cls, type): + if not isinstance(subclass, type): raise TypeError("Can only register classes") if issubclass(subclass, cls): return # Already a subclass Modified: python/branches/release31-maint/Lib/test/test_abc.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_abc.py (original) +++ python/branches/release31-maint/Lib/test/test_abc.py Wed Jan 27 03:28:22 2010 @@ -139,6 +139,12 @@ self.assertRaises(RuntimeError, C.register, A) # cycles not allowed C.register(B) # ok + def test_register_non_class(self): + class A(metaclass=abc.ABCMeta): + pass + self.assertRaisesRegexp(TypeError, "Can only register classes", + A.register, 4) + def test_registration_transitiveness(self): class A(metaclass=abc.ABCMeta): pass Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Wed Jan 27 03:28:22 2010 @@ -73,6 +73,8 @@ Library ------- +- Issue #7792: Registering non-classes to ABCs raised an obscure error. + - Issue #7785: Don't accept bytes in FileIO.write(). - Issue #7773: Fix an UnboundLocalError in platform.linux_distribution() when From python-checkins at python.org Wed Jan 27 04:05:57 2010 From: python-checkins at python.org (jesse.noller) Date: Wed, 27 Jan 2010 03:05:57 -0000 Subject: [Python-checkins] r77794 - in python/trunk: Doc/library/multiprocessing.rst Lib/multiprocessing/__init__.py Lib/multiprocessing/pool.py Lib/test/test_multiprocessing.py Misc/ACKS Misc/NEWS Message-ID: Author: jesse.noller Date: Wed Jan 27 04:05:57 2010 New Revision: 77794 Log: Issue #6963: Added maxtasksperchild argument to multiprocessing.Pool Modified: python/trunk/Doc/library/multiprocessing.rst python/trunk/Lib/multiprocessing/__init__.py python/trunk/Lib/multiprocessing/pool.py python/trunk/Lib/test/test_multiprocessing.py python/trunk/Misc/ACKS python/trunk/Misc/NEWS Modified: python/trunk/Doc/library/multiprocessing.rst ============================================================================== --- python/trunk/Doc/library/multiprocessing.rst (original) +++ python/trunk/Doc/library/multiprocessing.rst Wed Jan 27 04:05:57 2010 @@ -1537,7 +1537,7 @@ One can create a pool of processes which will carry out tasks submitted to it with the :class:`Pool` class. -.. class:: multiprocessing.Pool([processes[, initializer[, initargs]]]) +.. class:: multiprocessing.Pool([processes[, initializer[, initargs[, maxtasksperchild]]]]) A process pool object which controls a pool of worker processes to which jobs can be submitted. It supports asynchronous results with timeouts and @@ -1548,6 +1548,21 @@ *initializer* is not ``None`` then each worker process will call ``initializer(*initargs)`` when it starts. + *maxtasksperchild* is the number of tasks a worker process can complete + before it will exit and be replaced with a fresh worker process, to enable + unused resources to be freed. The default *maxtasksperchild* is None, which + means worker processes will live as long as the pool. + + .. note:: + + Worker processes within a :class:`Pool` typically live for the complete + duration of the Pool's work queue. A frequent pattern found in other + systems (such as Apache, mod_wsgi, etc) to free resources held by + workers is to allow a worker within a pool to complete only a set + amount of work before being exiting, being cleaned up and a new + process spawned to replace the old one. The *maxtasksperchild* + argument to the :class:`Pool` exposes this ability to the end user. + .. method:: apply(func[, args[, kwds]]) Equivalent of the :func:`apply` built-in function. It blocks till the Modified: python/trunk/Lib/multiprocessing/__init__.py ============================================================================== --- python/trunk/Lib/multiprocessing/__init__.py (original) +++ python/trunk/Lib/multiprocessing/__init__.py Wed Jan 27 04:05:57 2010 @@ -219,12 +219,12 @@ from multiprocessing.queues import JoinableQueue return JoinableQueue(maxsize) -def Pool(processes=None, initializer=None, initargs=()): +def Pool(processes=None, initializer=None, initargs=(), maxtasksperchild=None): ''' Returns a process pool object ''' from multiprocessing.pool import Pool - return Pool(processes, initializer, initargs) + return Pool(processes, initializer, initargs, maxtasksperchild) def RawValue(typecode_or_type, *args): ''' Modified: python/trunk/Lib/multiprocessing/pool.py ============================================================================== --- python/trunk/Lib/multiprocessing/pool.py (original) +++ python/trunk/Lib/multiprocessing/pool.py Wed Jan 27 04:05:57 2010 @@ -42,7 +42,8 @@ # Code run by worker processes # -def worker(inqueue, outqueue, initializer=None, initargs=()): +def worker(inqueue, outqueue, initializer=None, initargs=(), maxtasks=None): + assert maxtasks is None or (type(maxtasks) == int and maxtasks > 0) put = outqueue.put get = inqueue.get if hasattr(inqueue, '_writer'): @@ -52,7 +53,8 @@ if initializer is not None: initializer(*initargs) - while 1: + completed = 0 + while maxtasks is None or (maxtasks and completed < maxtasks): try: task = get() except (EOFError, IOError): @@ -69,6 +71,8 @@ except Exception, e: result = (False, e) put((job, i, result)) + completed += 1 + debug('worker exiting after %d tasks' % completed) # # Class representing a process pool @@ -80,11 +84,15 @@ ''' Process = Process - def __init__(self, processes=None, initializer=None, initargs=()): + def __init__(self, processes=None, initializer=None, initargs=(), + maxtasksperchild=None): self._setup_queues() self._taskqueue = Queue.Queue() self._cache = {} self._state = RUN + self._maxtasksperchild = maxtasksperchild + self._initializer = initializer + self._initargs = initargs if processes is None: try: @@ -95,16 +103,18 @@ if initializer is not None and not hasattr(initializer, '__call__'): raise TypeError('initializer must be a callable') + self._processes = processes self._pool = [] - for i in range(processes): - w = self.Process( - target=worker, - args=(self._inqueue, self._outqueue, initializer, initargs) - ) - self._pool.append(w) - w.name = w.name.replace('Process', 'PoolWorker') - w.daemon = True - w.start() + self._repopulate_pool() + + self._worker_handler = threading.Thread( + target=Pool._handle_workers, + args=(self, ) + ) + self._worker_handler.daemon = True + self._worker_handler._state = RUN + self._worker_handler.start() + self._task_handler = threading.Thread( target=Pool._handle_tasks, @@ -125,10 +135,48 @@ self._terminate = Finalize( self, self._terminate_pool, args=(self._taskqueue, self._inqueue, self._outqueue, self._pool, - self._task_handler, self._result_handler, self._cache), + self._worker_handler, self._task_handler, + self._result_handler, self._cache), exitpriority=15 ) + def _join_exited_workers(self): + """Cleanup after any worker processes which have exited due to reaching + their specified lifetime. Returns True if any workers were cleaned up. + """ + cleaned = False + for i in reversed(range(len(self._pool))): + worker = self._pool[i] + if worker.exitcode is not None: + # worker exited + debug('cleaning up worker %d' % i) + worker.join() + cleaned = True + del self._pool[i] + return cleaned + + def _repopulate_pool(self): + """Bring the number of pool processes up to the specified number, + for use after reaping workers which have exited. + """ + for i in range(self._processes - len(self._pool)): + w = self.Process(target=worker, + args=(self._inqueue, self._outqueue, + self._initializer, + self._initargs, self._maxtasksperchild) + ) + self._pool.append(w) + w.name = w.name.replace('Process', 'PoolWorker') + w.daemon = True + w.start() + debug('added worker') + + def _maintain_pool(self): + """Clean up any exited workers and start replacements for them. + """ + if self._join_exited_workers(): + self._repopulate_pool() + def _setup_queues(self): from .queues import SimpleQueue self._inqueue = SimpleQueue() @@ -217,6 +265,13 @@ return result @staticmethod + def _handle_workers(pool): + while pool._worker_handler._state == RUN and pool._state == RUN: + pool._maintain_pool() + time.sleep(0.1) + debug('worker handler exiting') + + @staticmethod def _handle_tasks(taskqueue, put, outqueue, pool): thread = threading.current_thread() @@ -331,16 +386,19 @@ debug('closing pool') if self._state == RUN: self._state = CLOSE + self._worker_handler._state = CLOSE self._taskqueue.put(None) def terminate(self): debug('terminating pool') self._state = TERMINATE + self._worker_handler._state = TERMINATE self._terminate() def join(self): debug('joining pool') assert self._state in (CLOSE, TERMINATE) + self._worker_handler.join() self._task_handler.join() self._result_handler.join() for p in self._pool: @@ -357,10 +415,11 @@ @classmethod def _terminate_pool(cls, taskqueue, inqueue, outqueue, pool, - task_handler, result_handler, cache): + worker_handler, task_handler, result_handler, cache): # this is guaranteed to only be called once debug('finalizing pool') + worker_handler._state = TERMINATE task_handler._state = TERMINATE taskqueue.put(None) # sentinel @@ -372,10 +431,12 @@ result_handler._state = TERMINATE outqueue.put(None) # sentinel + # Terminate workers which haven't already finished. if pool and hasattr(pool[0], 'terminate'): debug('terminating workers') for p in pool: - p.terminate() + if p.exitcode is None: + p.terminate() debug('joining task handler') task_handler.join(1e100) @@ -387,6 +448,11 @@ debug('joining pool workers') for p in pool: p.join() + for w in pool: + if w.exitcode is None: + # worker has not yet exited + debug('cleaning up worker %d' % w.pid) + w.join() # # Class whose instances are returned by `Pool.apply_async()` Modified: python/trunk/Lib/test/test_multiprocessing.py ============================================================================== --- python/trunk/Lib/test/test_multiprocessing.py (original) +++ python/trunk/Lib/test/test_multiprocessing.py Wed Jan 27 04:05:57 2010 @@ -45,7 +45,7 @@ # LOG_LEVEL = util.SUBWARNING -#LOG_LEVEL = logging.WARNING +#LOG_LEVEL = logging.DEBUG DELTA = 0.1 CHECK_TIMINGS = False # making true makes tests take a lot longer @@ -1052,6 +1052,30 @@ join = TimingWrapper(self.pool.join) join() self.assertTrue(join.elapsed < 0.2) + +class _TestPoolWorkerLifetime(BaseTestCase): + + ALLOWED_TYPES = ('processes', ) + def test_pool_worker_lifetime(self): + p = multiprocessing.Pool(3, maxtasksperchild=10) + self.assertEqual(3, len(p._pool)) + origworkerpids = [w.pid for w in p._pool] + # Run many tasks so each worker gets replaced (hopefully) + results = [] + for i in range(100): + results.append(p.apply_async(sqr, (i, ))) + # Fetch the results and verify we got the right answers, + # also ensuring all the tasks have completed. + for (j, res) in enumerate(results): + self.assertEqual(res.get(), sqr(j)) + # Refill the pool + p._repopulate_pool() + # Finally, check that the worker pids have changed + finalworkerpids = [w.pid for w in p._pool] + self.assertNotEqual(sorted(origworkerpids), sorted(finalworkerpids)) + p.close() + p.join() + # # Test that manager has expected number of shared objects left # Modified: python/trunk/Misc/ACKS ============================================================================== --- python/trunk/Misc/ACKS (original) +++ python/trunk/Misc/ACKS Wed Jan 27 04:05:57 2010 @@ -121,6 +121,7 @@ Mike Carlton Terry Carroll Donn Cave +Charles Cazabon Per Cederqvist Octavian Cerna Hye-Shik Chang Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Wed Jan 27 04:05:57 2010 @@ -173,6 +173,11 @@ Library ------- +- Issue #6963: Added "maxtasksperchild" argument to multiprocessing.Pool, + allowing for a maximum number of tasks within the pool to be completed by + the worker before that worker is terminated, and a new one created to + replace it. + - Issue #7617: Make sure distutils.unixccompiler.UnixCCompiler recognizes gcc when it has a fully qualified configuration prefix. Initial patch by Arfrever. From python-checkins at python.org Wed Jan 27 04:36:01 2010 From: python-checkins at python.org (jesse.noller) Date: Wed, 27 Jan 2010 03:36:01 -0000 Subject: [Python-checkins] r77795 - in python/branches/py3k: Doc/library/multiprocessing.rst Lib/multiprocessing/__init__.py Lib/multiprocessing/pool.py Lib/test/test_multiprocessing.py Misc/ACKS Misc/NEWS Message-ID: Author: jesse.noller Date: Wed Jan 27 04:36:01 2010 New Revision: 77795 Log: Merged revisions 77794 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77794 | jesse.noller | 2010-01-26 22:05:57 -0500 (Tue, 26 Jan 2010) | 1 line Issue #6963: Added maxtasksperchild argument to multiprocessing.Pool ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/library/multiprocessing.rst python/branches/py3k/Lib/multiprocessing/__init__.py python/branches/py3k/Lib/multiprocessing/pool.py python/branches/py3k/Lib/test/test_multiprocessing.py python/branches/py3k/Misc/ACKS python/branches/py3k/Misc/NEWS Modified: python/branches/py3k/Doc/library/multiprocessing.rst ============================================================================== --- python/branches/py3k/Doc/library/multiprocessing.rst (original) +++ python/branches/py3k/Doc/library/multiprocessing.rst Wed Jan 27 04:36:01 2010 @@ -1535,7 +1535,7 @@ One can create a pool of processes which will carry out tasks submitted to it with the :class:`Pool` class. -.. class:: multiprocessing.Pool([processes[, initializer[, initargs]]]) +.. class:: multiprocessing.Pool([processes[, initializer[, initargs[, maxtasksperchild]]]]) A process pool object which controls a pool of worker processes to which jobs can be submitted. It supports asynchronous results with timeouts and @@ -1546,6 +1546,21 @@ *initializer* is not ``None`` then each worker process will call ``initializer(*initargs)`` when it starts. + *maxtasksperchild* is the number of tasks a worker process can complete + before it will exit and be replaced with a fresh worker process, to enable + unused resources to be freed. The default *maxtasksperchild* is None, which + means worker processes will live as long as the pool. + + .. note:: + + Worker processes within a :class:`Pool` typically live for the complete + duration of the Pool's work queue. A frequent pattern found in other + systems (such as Apache, mod_wsgi, etc) to free resources held by + workers is to allow a worker within a pool to complete only a set + amount of work before being exiting, being cleaned up and a new + process spawned to replace the old one. The *maxtasksperchild* + argument to the :class:`Pool` exposes this ability to the end user. + .. method:: apply(func[, args[, kwds]]) Call *func* with arguments *args* and keyword arguments *kwds*. It blocks Modified: python/branches/py3k/Lib/multiprocessing/__init__.py ============================================================================== --- python/branches/py3k/Lib/multiprocessing/__init__.py (original) +++ python/branches/py3k/Lib/multiprocessing/__init__.py Wed Jan 27 04:36:01 2010 @@ -218,12 +218,12 @@ from multiprocessing.queues import JoinableQueue return JoinableQueue(maxsize) -def Pool(processes=None, initializer=None, initargs=()): +def Pool(processes=None, initializer=None, initargs=(), maxtasksperchild=None): ''' Returns a process pool object ''' from multiprocessing.pool import Pool - return Pool(processes, initializer, initargs) + return Pool(processes, initializer, initargs, maxtasksperchild) def RawValue(typecode_or_type, *args): ''' Modified: python/branches/py3k/Lib/multiprocessing/pool.py ============================================================================== --- python/branches/py3k/Lib/multiprocessing/pool.py (original) +++ python/branches/py3k/Lib/multiprocessing/pool.py Wed Jan 27 04:36:01 2010 @@ -42,7 +42,8 @@ # Code run by worker processes # -def worker(inqueue, outqueue, initializer=None, initargs=()): +def worker(inqueue, outqueue, initializer=None, initargs=(), maxtasks=None): + assert maxtasks is None or (type(maxtasks) == int and maxtasks > 0) put = outqueue.put get = inqueue.get if hasattr(inqueue, '_writer'): @@ -52,7 +53,8 @@ if initializer is not None: initializer(*initargs) - while 1: + completed = 0 + while maxtasks is None or (maxtasks and completed < maxtasks): try: task = get() except (EOFError, IOError): @@ -69,6 +71,8 @@ except Exception as e: result = (False, e) put((job, i, result)) + completed += 1 + debug('worker exiting after %d tasks' % completed) # # Class representing a process pool @@ -80,11 +84,15 @@ ''' Process = Process - def __init__(self, processes=None, initializer=None, initargs=()): + def __init__(self, processes=None, initializer=None, initargs=(), + maxtasksperchild=None): self._setup_queues() self._taskqueue = queue.Queue() self._cache = {} self._state = RUN + self._maxtasksperchild = maxtasksperchild + self._initializer = initializer + self._initargs = initargs if processes is None: try: @@ -95,16 +103,18 @@ if initializer is not None and not hasattr(initializer, '__call__'): raise TypeError('initializer must be a callable') + self._processes = processes self._pool = [] - for i in range(processes): - w = self.Process( - target=worker, - args=(self._inqueue, self._outqueue, initializer, initargs) - ) - self._pool.append(w) - w.name = w.name.replace('Process', 'PoolWorker') - w.daemon = True - w.start() + self._repopulate_pool() + + self._worker_handler = threading.Thread( + target=Pool._handle_workers, + args=(self, ) + ) + self._worker_handler.daemon = True + self._worker_handler._state = RUN + self._worker_handler.start() + self._task_handler = threading.Thread( target=Pool._handle_tasks, @@ -125,10 +135,48 @@ self._terminate = Finalize( self, self._terminate_pool, args=(self._taskqueue, self._inqueue, self._outqueue, self._pool, - self._task_handler, self._result_handler, self._cache), + self._worker_handler, self._task_handler, + self._result_handler, self._cache), exitpriority=15 ) + def _join_exited_workers(self): + """Cleanup after any worker processes which have exited due to reaching + their specified lifetime. Returns True if any workers were cleaned up. + """ + cleaned = False + for i in reversed(range(len(self._pool))): + worker = self._pool[i] + if worker.exitcode is not None: + # worker exited + debug('cleaning up worker %d' % i) + worker.join() + cleaned = True + del self._pool[i] + return cleaned + + def _repopulate_pool(self): + """Bring the number of pool processes up to the specified number, + for use after reaping workers which have exited. + """ + for i in range(self._processes - len(self._pool)): + w = self.Process(target=worker, + args=(self._inqueue, self._outqueue, + self._initializer, + self._initargs, self._maxtasksperchild) + ) + self._pool.append(w) + w.name = w.name.replace('Process', 'PoolWorker') + w.daemon = True + w.start() + debug('added worker') + + def _maintain_pool(self): + """Clean up any exited workers and start replacements for them. + """ + if self._join_exited_workers(): + self._repopulate_pool() + def _setup_queues(self): from .queues import SimpleQueue self._inqueue = SimpleQueue() @@ -218,6 +266,13 @@ return result @staticmethod + def _handle_workers(pool): + while pool._worker_handler._state == RUN and pool._state == RUN: + pool._maintain_pool() + time.sleep(0.1) + debug('worker handler exiting') + + @staticmethod def _handle_tasks(taskqueue, put, outqueue, pool): thread = threading.current_thread() @@ -332,16 +387,19 @@ debug('closing pool') if self._state == RUN: self._state = CLOSE + self._worker_handler._state = CLOSE self._taskqueue.put(None) def terminate(self): debug('terminating pool') self._state = TERMINATE + self._worker_handler._state = TERMINATE self._terminate() def join(self): debug('joining pool') assert self._state in (CLOSE, TERMINATE) + self._worker_handler.join() self._task_handler.join() self._result_handler.join() for p in self._pool: @@ -358,10 +416,11 @@ @classmethod def _terminate_pool(cls, taskqueue, inqueue, outqueue, pool, - task_handler, result_handler, cache): + worker_handler, task_handler, result_handler, cache): # this is guaranteed to only be called once debug('finalizing pool') + worker_handler._state = TERMINATE task_handler._state = TERMINATE taskqueue.put(None) # sentinel @@ -373,10 +432,12 @@ result_handler._state = TERMINATE outqueue.put(None) # sentinel + # Terminate workers which haven't already finished. if pool and hasattr(pool[0], 'terminate'): debug('terminating workers') for p in pool: - p.terminate() + if p.exitcode is None: + p.terminate() debug('joining task handler') task_handler.join(1e100) @@ -388,6 +449,11 @@ debug('joining pool workers') for p in pool: p.join() + for w in pool: + if w.exitcode is None: + # worker has not yet exited + debug('cleaning up worker %d' % w.pid) + w.join() # # Class whose instances are returned by `Pool.apply_async()` Modified: python/branches/py3k/Lib/test/test_multiprocessing.py ============================================================================== --- python/branches/py3k/Lib/test/test_multiprocessing.py (original) +++ python/branches/py3k/Lib/test/test_multiprocessing.py Wed Jan 27 04:36:01 2010 @@ -46,7 +46,7 @@ # LOG_LEVEL = util.SUBWARNING -#LOG_LEVEL = logging.WARNING +#LOG_LEVEL = logging.DEBUG DELTA = 0.1 CHECK_TIMINGS = False # making true makes tests take a lot longer @@ -1053,6 +1053,30 @@ join = TimingWrapper(self.pool.join) join() self.assertTrue(join.elapsed < 0.2) + +class _TestPoolWorkerLifetime(BaseTestCase): + + ALLOWED_TYPES = ('processes', ) + def test_pool_worker_lifetime(self): + p = multiprocessing.Pool(3, maxtasksperchild=10) + self.assertEqual(3, len(p._pool)) + origworkerpids = [w.pid for w in p._pool] + # Run many tasks so each worker gets replaced (hopefully) + results = [] + for i in range(100): + results.append(p.apply_async(sqr, (i, ))) + # Fetch the results and verify we got the right answers, + # also ensuring all the tasks have completed. + for (j, res) in enumerate(results): + self.assertEqual(res.get(), sqr(j)) + # Refill the pool + p._repopulate_pool() + # Finally, check that the worker pids have changed + finalworkerpids = [w.pid for w in p._pool] + self.assertNotEqual(sorted(origworkerpids), sorted(finalworkerpids)) + p.close() + p.join() + # # Test that manager has expected number of shared objects left # Modified: python/branches/py3k/Misc/ACKS ============================================================================== --- python/branches/py3k/Misc/ACKS (original) +++ python/branches/py3k/Misc/ACKS Wed Jan 27 04:36:01 2010 @@ -120,6 +120,7 @@ Mike Carlton Terry Carroll Donn Cave +Charles Cazabon Per Cederqvist Octavian Cerna Hye-Shik Chang Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Wed Jan 27 04:36:01 2010 @@ -234,6 +234,11 @@ Library ------- +- Issue #6963: Added "maxtasksperchild" argument to multiprocessing.Pool, + allowing for a maximum number of tasks within the pool to be completed by + the worker before that worker is terminated, and a new one created to + replace it. + - Issue #7792: Registering non-classes to ABCs raised an obscure error. - Issue #7785: Don't accept bytes in FileIO.write(). From mal at egenix.com Wed Jan 27 10:00:49 2010 From: mal at egenix.com (M.-A. Lemburg) Date: Wed, 27 Jan 2010 10:00:49 +0100 Subject: [Python-checkins] r77788 - python/trunk/Lib/UserDict.py In-Reply-To: <20100127022208.4B08B405087@mail.egenix.com> References: <20100127022208.4B08B405087@mail.egenix.com> Message-ID: <4B6000C1.70708@egenix.com> benjamin.peterson wrote: > Author: benjamin.peterson > Date: Wed Jan 27 03:15:28 2010 > New Revision: 77788 > > Log: > for UserDict to be compatible with abcs, it must subclass object Please add a clear mention of this change to Misc/NEWS - it could break existing applications that rely on UserDict being an old-style class. Thanks. > Modified: > python/trunk/Lib/UserDict.py > > Modified: python/trunk/Lib/UserDict.py > ============================================================================== > --- python/trunk/Lib/UserDict.py (original) > +++ python/trunk/Lib/UserDict.py Wed Jan 27 03:15:28 2010 > @@ -1,6 +1,6 @@ > """A more or less complete user-defined wrapper around dictionary objects.""" > > -class UserDict: > +class UserDict(object): > def __init__(self, dict=None, **kwargs): > self.data = {} > if dict is not None: > _______________________________________________ > Python-checkins mailing list > Python-checkins at python.org > http://mail.python.org/mailman/listinfo/python-checkins -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Source (#1, Jan 27 2010) >>> Python/Zope Consulting and Support ... http://www.egenix.com/ >>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/ >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/ ________________________________________________________________________ ::: Try our new mxODBC.Connect Python Database Interface for free ! :::: eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg Registered at Amtsgericht Duesseldorf: HRB 46611 http://www.egenix.com/company/contact/ From ncoghlan at gmail.com Wed Jan 27 14:39:22 2010 From: ncoghlan at gmail.com (Nick Coghlan) Date: Wed, 27 Jan 2010 23:39:22 +1000 Subject: [Python-checkins] r77790 - in python/branches/release26-maint: Lib/UserDict.py Lib/abc.py Lib/test/test_abc.py Misc/NEWS In-Reply-To: <4b5fa3e3.1667f10a.255f.4da9SMTPIN_ADDED@mx.google.com> References: <4b5fa3e3.1667f10a.255f.4da9SMTPIN_ADDED@mx.google.com> Message-ID: <4B60420A.7030008@gmail.com> benjamin.peterson wrote: > Author: benjamin.peterson > Date: Wed Jan 27 03:24:25 2010 > New Revision: 77790 > > Log: > Merged revisions 77788-77789 via svnmerge from > svn+ssh://pythondev at svn.python.org/python/trunk > > ........ > r77788 | benjamin.peterson | 2010-01-26 20:15:28 -0600 (Tue, 26 Jan 2010) | 1 line > > for UserDict to be compatible with abcs, it must subclass object As MAL pointed out, going from old-style to new-style is a major change to the semantics of UserDict. It really shouldn't be backported to 2.6. Cheers, Nick. -- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia --------------------------------------------------------------- From mal at egenix.com Wed Jan 27 20:37:57 2010 From: mal at egenix.com (M.-A. Lemburg) Date: Wed, 27 Jan 2010 20:37:57 +0100 Subject: [Python-checkins] r77756 - in python/trunk/Lib/distutils: command/bdist_msi.py tests/test_bdist_msi.py In-Reply-To: <94bdd2611001261342l2ce52745m8e5a5961cd7a6f7@mail.gmail.com> References: <20100126172044.244D1405084@mail.egenix.com> <4B5F309D.6080002@egenix.com> <94bdd2611001261032uee1f566x5f760713c81bb2bb@mail.gmail.com> <4B5F37D9.90100@egenix.com> <94bdd2611001261049v45a8ca3i7e5ccbc885da0070@mail.gmail.com> <4B5F3C47.4040500@egenix.com> <94bdd2611001261109u3d2e7b13n64744820836df0ca@mail.gmail.com> <4B5F4185.9070706@egenix.com> <94bdd2611001261327h7d0cc367j4c8f6980d5a23ce4@mail.gmail.com> <4B5F603C.6030700@egenix.com> <94bdd2611001261342l2ce52745m8e5a5961cd7a6f7@mail.gmail.com> Message-ID: <4B609615.4090401@egenix.com> Tarek Ziad? wrote: > On Tue, Jan 26, 2010 at 10:35 PM, M.-A. Lemburg wrote: >> I'll run a few more tests of our stuff tomorrow. > > Ok I'll stick around in case you have a problem. I'm on IRC as well I ran the tests again: everything looks fine. I'll now integrate the new set_platform() API into mxSetup.py. Thanks, -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Source (#1, Jan 27 2010) >>> Python/Zope Consulting and Support ... http://www.egenix.com/ >>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/ >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/ ________________________________________________________________________ ::: Try our new mxODBC.Connect Python Database Interface for free ! :::: eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg Registered at Amtsgericht Duesseldorf: HRB 46611 http://www.egenix.com/company/contact/ From ziade.tarek at gmail.com Wed Jan 27 20:42:41 2010 From: ziade.tarek at gmail.com (=?ISO-8859-1?Q?Tarek_Ziad=E9?=) Date: Wed, 27 Jan 2010 20:42:41 +0100 Subject: [Python-checkins] r77756 - in python/trunk/Lib/distutils: command/bdist_msi.py tests/test_bdist_msi.py In-Reply-To: <4B609615.4090401@egenix.com> References: <20100126172044.244D1405084@mail.egenix.com> <4B5F37D9.90100@egenix.com> <94bdd2611001261049v45a8ca3i7e5ccbc885da0070@mail.gmail.com> <4B5F3C47.4040500@egenix.com> <94bdd2611001261109u3d2e7b13n64744820836df0ca@mail.gmail.com> <4B5F4185.9070706@egenix.com> <94bdd2611001261327h7d0cc367j4c8f6980d5a23ce4@mail.gmail.com> <4B5F603C.6030700@egenix.com> <94bdd2611001261342l2ce52745m8e5a5961cd7a6f7@mail.gmail.com> <4B609615.4090401@egenix.com> Message-ID: <94bdd2611001271142x314d8d45yd42340559c087d11@mail.gmail.com> On Wed, Jan 27, 2010 at 8:37 PM, M.-A. Lemburg wrote: > Tarek Ziad? wrote: >> On Tue, Jan 26, 2010 at 10:35 PM, M.-A. Lemburg wrote: >>> I'll run a few more tests of our stuff tomorrow. >> >> Ok I'll stick around in case you have a problem. I'm on IRC as well > > I ran the tests again: everything looks fine. I'll now > integrate the new set_platform() API into mxSetup.py. Great ! I'll now merge everything in the Py3k branch, then work on the sysconfig module documentation + distutils documentation. I'll also start the shutil work, that will lead to the removal of dir_util, file_util and archive_util. I'll leave the modules and add an import for relocated APIs Tarek > > Thanks, > -- > Marc-Andre Lemburg > eGenix.com > > Professional Python Services directly from the Source ?(#1, Jan 27 2010) >>>> Python/Zope Consulting and Support ... ? ? ? ?http://www.egenix.com/ >>>> mxODBC.Zope.Database.Adapter ... ? ? ? ? ? ? http://zope.egenix.com/ >>>> mxODBC, mxDateTime, mxTextTools ... ? ? ? ?http://python.egenix.com/ > ________________________________________________________________________ > > ::: Try our new mxODBC.Connect Python Database Interface for free ! :::: > > > ? eGenix.com Software, Skills and Services GmbH ?Pastor-Loeh-Str.48 > ? ?D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg > ? ? ? ? ? Registered at Amtsgericht Duesseldorf: HRB 46611 > ? ? ? ? ? ? ? http://www.egenix.com/company/contact/ > -- Tarek Ziad? | http://ziade.org From mal at egenix.com Wed Jan 27 21:23:43 2010 From: mal at egenix.com (M.-A. Lemburg) Date: Wed, 27 Jan 2010 21:23:43 +0100 Subject: [Python-checkins] r77756 - in python/trunk/Lib/distutils: command/bdist_msi.py tests/test_bdist_msi.py In-Reply-To: <94bdd2611001271142x314d8d45yd42340559c087d11@mail.gmail.com> References: <20100126172044.244D1405084@mail.egenix.com> <4B5F37D9.90100@egenix.com> <94bdd2611001261049v45a8ca3i7e5ccbc885da0070@mail.gmail.com> <4B5F3C47.4040500@egenix.com> <94bdd2611001261109u3d2e7b13n64744820836df0ca@mail.gmail.com> <4B5F4185.9070706@egenix.com> <94bdd2611001261327h7d0cc367j4c8f6980d5a23ce4@mail.gmail.com> <4B5F603C.6030700@egenix.com> <94bdd2611001261342l2ce52745m8e5a5961cd7a6f7@mail.gmail.com> <4B609615.4090401@egenix.com> <94bdd2611001271142x314d8d45yd42340559c087d11@mail.gmail.com> Message-ID: <4B60A0CF.4030009@egenix.com> Tarek Ziad? wrote: > On Wed, Jan 27, 2010 at 8:37 PM, M.-A. Lemburg wrote: >> Tarek Ziad? wrote: >>> On Tue, Jan 26, 2010 at 10:35 PM, M.-A. Lemburg wrote: >>>> I'll run a few more tests of our stuff tomorrow. >>> >>> Ok I'll stick around in case you have a problem. I'm on IRC as well >> >> I ran the tests again: everything looks fine. I'll now >> integrate the new set_platform() API into mxSetup.py. > > Great ! I'll now merge everything in the Py3k branch, then work on the > sysconfig module documentation + distutils documentation. > > I'll also start the shutil work, that will lead to the removal of > dir_util, file_util and archive_util. I'll leave the modules and add > an import for relocated APIs Ok. For the archive_util, could you add an API to register new or update existing archive formats. We're currently using a simple dictionary update for this, but that's not really clean: # Register our version of make_tarball() distutils.archive_util.ARCHIVE_FORMATS.update({ 'gztar': (mx_make_tarball, [('compression', 'gzip')], 'gzipped tar-file'), 'bztar': (mx_make_tarball, [('compression', 'bzip2')], 'bzip2ed tar-file'), 'ztar': (mx_make_tarball, [('compression', 'compress')], 'compressed tar file'), 'tar': (mx_make_tarball, [('compression', None)], 'tar file'), }) -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Source (#1, Jan 27 2010) >>> Python/Zope Consulting and Support ... http://www.egenix.com/ >>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/ >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/ ________________________________________________________________________ ::: Try our new mxODBC.Connect Python Database Interface for free ! :::: eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg Registered at Amtsgericht Duesseldorf: HRB 46611 http://www.egenix.com/company/contact/ From python-checkins at python.org Wed Jan 27 21:25:11 2010 From: python-checkins at python.org (ezio.melotti) Date: Wed, 27 Jan 2010 20:25:11 -0000 Subject: [Python-checkins] r77796 - python/trunk/Doc/library/unittest.rst Message-ID: Author: ezio.melotti Date: Wed Jan 27 21:25:11 2010 New Revision: 77796 Log: #7765: typos Modified: python/trunk/Doc/library/unittest.rst Modified: python/trunk/Doc/library/unittest.rst ============================================================================== --- python/trunk/Doc/library/unittest.rst (original) +++ python/trunk/Doc/library/unittest.rst Wed Jan 27 21:25:11 2010 @@ -241,8 +241,8 @@ The -s, -p, & -t options can be passsed in as positional arguments. The following two command lines are equivalent:: - python -m unittest -s project_directory -p '*_test.py' - python -m unittest project_directory '*_test.py' + python -m unittest discover -s project_directory -p '*_test.py' + python -m unittest discover project_directory '*_test.py' Test modules and packages can customize test loading and discovery by through the `load_tests protocol`_. @@ -1445,7 +1445,7 @@ .. method:: stopTestRun(test) - Called once before any tests are executed. + Called once after all tests are executed. .. versionadded:: 2.7 From ziade.tarek at gmail.com Wed Jan 27 21:41:59 2010 From: ziade.tarek at gmail.com (=?ISO-8859-1?Q?Tarek_Ziad=E9?=) Date: Wed, 27 Jan 2010 21:41:59 +0100 Subject: [Python-checkins] r77756 - in python/trunk/Lib/distutils: command/bdist_msi.py tests/test_bdist_msi.py In-Reply-To: <4B60A0CF.4030009@egenix.com> References: <20100126172044.244D1405084@mail.egenix.com> <4B5F3C47.4040500@egenix.com> <94bdd2611001261109u3d2e7b13n64744820836df0ca@mail.gmail.com> <4B5F4185.9070706@egenix.com> <94bdd2611001261327h7d0cc367j4c8f6980d5a23ce4@mail.gmail.com> <4B5F603C.6030700@egenix.com> <94bdd2611001261342l2ce52745m8e5a5961cd7a6f7@mail.gmail.com> <4B609615.4090401@egenix.com> <94bdd2611001271142x314d8d45yd42340559c087d11@mail.gmail.com> <4B60A0CF.4030009@egenix.com> Message-ID: <94bdd2611001271241o7d2f3699l1b3f4b1853949b74@mail.gmail.com> On Wed, Jan 27, 2010 at 9:23 PM, M.-A. Lemburg wrote: > Tarek Ziad? wrote: >> On Wed, Jan 27, 2010 at 8:37 PM, M.-A. Lemburg wrote: >>> Tarek Ziad? wrote: >>>> On Tue, Jan 26, 2010 at 10:35 PM, M.-A. Lemburg wrote: >>>>> I'll run a few more tests of our stuff tomorrow. >>>> >>>> Ok I'll stick around in case you have a problem. I'm on IRC as well >>> >>> I ran the tests again: everything looks fine. I'll now >>> integrate the new set_platform() API into mxSetup.py. >> >> Great ! I'll now merge everything in the Py3k branch, then work on the >> sysconfig module documentation + distutils documentation. >> >> I'll also start the shutil work, that will lead to the removal of >> dir_util, file_util and archive_util. I'll leave the modules and add >> an import for relocated APIs > > Ok. > > For the archive_util, could you add an API to register new > or update existing archive formats. > > We're currently using a simple dictionary update for this, but > that's not really clean: > > # Register our version of make_tarball() > distutils.archive_util.ARCHIVE_FORMATS.update({ > ? ?'gztar': (mx_make_tarball, [('compression', 'gzip')], 'gzipped tar-file'), > ? ?'bztar': (mx_make_tarball, [('compression', 'bzip2')], 'bzip2ed tar-file'), > ? ?'ztar': ?(mx_make_tarball, [('compression', 'compress')], 'compressed tar file'), > ? ?'tar': ? (mx_make_tarball, [('compression', None)], 'tar file'), > ? ?}) > Yes that was the plan because I didn't want to add a public "ARCHIVE_FORMATS" dict. I'll also have to keep the distutils.archive_util.ARCHIVE_FORMATS if it's used out there. (and maybe use a dict subclass so it's linked to shutil APIs + adds deprecation warnings) Tarek -- Tarek Ziad? | http://ziade.org From python-checkins at python.org Wed Jan 27 21:58:07 2010 From: python-checkins at python.org (ezio.melotti) Date: Wed, 27 Jan 2010 20:58:07 -0000 Subject: [Python-checkins] r77797 - in python/branches/py3k: Doc/library/unittest.rst Message-ID: Author: ezio.melotti Date: Wed Jan 27 21:58:07 2010 New Revision: 77797 Log: Merged revisions 77796 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77796 | ezio.melotti | 2010-01-27 22:25:11 +0200 (Wed, 27 Jan 2010) | 1 line #7765: typos ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/library/unittest.rst Modified: python/branches/py3k/Doc/library/unittest.rst ============================================================================== --- python/branches/py3k/Doc/library/unittest.rst (original) +++ python/branches/py3k/Doc/library/unittest.rst Wed Jan 27 21:58:07 2010 @@ -107,7 +107,7 @@ You can run tests with more detail (higher verbosity) by passing in the -v flag:: - python-m unittest -v test_module + python -m unittest -v test_module For a list of all the command line options:: @@ -149,8 +149,8 @@ The -s, -p, & -t options can be passsed in as positional arguments. The following two command lines are equivalent:: - python -m unittest -s project_directory -p '*_test.py' - python -m unittest project_directory '*_test.py' + python -m unittest discover -s project_directory -p '*_test.py' + python -m unittest discover project_directory '*_test.py' Test modules and packages can customize test loading and discovery by through the `load_tests protocol`_. @@ -1436,7 +1436,7 @@ .. method:: stopTestRun(test) - Called once before any tests are executed. + Called once after all tests are executed. .. versionadded:: 2.7 From python-checkins at python.org Wed Jan 27 21:59:51 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 27 Jan 2010 20:59:51 -0000 Subject: [Python-checkins] r77798 - in python/trunk: Lib/test/test_zipfile.py Lib/zipfile.py Misc/NEWS Message-ID: Author: antoine.pitrou Date: Wed Jan 27 21:59:50 2010 New Revision: 77798 Log: Issue #7610: Reworked implementation of the internal :class:`zipfile.ZipExtFile` class used to represent files stored inside an archive. The new implementation is significantly faster and can be wrapped in a :class:`io.BufferedReader` object for more speedups. It also solves an issue where interleaved calls to `read()` and `readline()` give wrong results. Patch by Nir Aides. Modified: python/trunk/Lib/test/test_zipfile.py python/trunk/Lib/zipfile.py python/trunk/Misc/NEWS Modified: python/trunk/Lib/test/test_zipfile.py ============================================================================== --- python/trunk/Lib/test/test_zipfile.py (original) +++ python/trunk/Lib/test/test_zipfile.py Wed Jan 27 21:59:50 2010 @@ -172,6 +172,45 @@ for f in (TESTFN2, TemporaryFile(), StringIO()): self.zip_random_open_test(f, zipfile.ZIP_STORED) + def test_univeral_readaheads(self): + f = StringIO() + + data = 'a\r\n' * 16 * 1024 + zipfp = zipfile.ZipFile(f, 'w', zipfile.ZIP_STORED) + zipfp.writestr(TESTFN, data) + zipfp.close() + + data2 = '' + zipfp = zipfile.ZipFile(f, 'r') + zipopen = zipfp.open(TESTFN, 'rU') + for line in zipopen: + data2 += line + zipfp.close() + + self.assertEqual(data, data2.replace('\n', '\r\n')) + + def zip_readline_read_test(self, f, compression): + self.make_test_archive(f, compression) + + # Read the ZIP archive + zipfp = zipfile.ZipFile(f, "r") + zipopen = zipfp.open(TESTFN) + + data = '' + while True: + read = zipopen.readline() + if not read: + break + data += read + + read = zipopen.read(100) + if not read: + break + data += read + + self.assertEqual(data, self.data) + zipfp.close() + def zip_readline_test(self, f, compression): self.make_test_archive(f, compression) @@ -199,6 +238,11 @@ for line, zipline in zip(self.line_gen, zipfp.open(TESTFN)): self.assertEqual(zipline, line + '\n') + def test_readline_read_stored(self): + # Issue #7610: calls to readline() interleaved with calls to read(). + for f in (TESTFN2, TemporaryFile(), StringIO()): + self.zip_readline_read_test(f, zipfile.ZIP_STORED) + def test_readline_stored(self): for f in (TESTFN2, TemporaryFile(), StringIO()): self.zip_readline_test(f, zipfile.ZIP_STORED) @@ -227,6 +271,12 @@ self.zip_random_open_test(f, zipfile.ZIP_DEFLATED) @skipUnless(zlib, "requires zlib") + def test_readline_read_deflated(self): + # Issue #7610: calls to readline() interleaved with calls to read(). + for f in (TESTFN2, TemporaryFile(), StringIO()): + self.zip_readline_read_test(f, zipfile.ZIP_DEFLATED) + + @skipUnless(zlib, "requires zlib") def test_readline_deflated(self): for f in (TESTFN2, TemporaryFile(), StringIO()): self.zip_readline_test(f, zipfile.ZIP_DEFLATED) @@ -1058,6 +1108,29 @@ zipdata = zipfp.open(fn, "rU").read() self.assertEqual(self.arcdata[sep], zipdata) + def readline_read_test(self, f, compression): + self.make_test_archive(f, compression) + + # Read the ZIP archive + zipfp = zipfile.ZipFile(f, "r") + for sep, fn in self.arcfiles.items(): + zipopen = zipfp.open(fn, "rU") + data = '' + while True: + read = zipopen.readline() + if not read: + break + data += read + + read = zipopen.read(5) + if not read: + break + data += read + + self.assertEqual(data, self.arcdata['\n']) + + zipfp.close() + def readline_test(self, f, compression): self.make_test_archive(f, compression) @@ -1092,6 +1165,11 @@ for f in (TESTFN2, TemporaryFile(), StringIO()): self.read_test(f, zipfile.ZIP_STORED) + def test_readline_read_stored(self): + # Issue #7610: calls to readline() interleaved with calls to read(). + for f in (TESTFN2, TemporaryFile(), StringIO()): + self.readline_read_test(f, zipfile.ZIP_STORED) + def test_readline_stored(self): for f in (TESTFN2, TemporaryFile(), StringIO()): self.readline_test(f, zipfile.ZIP_STORED) @@ -1110,6 +1188,12 @@ self.read_test(f, zipfile.ZIP_DEFLATED) @skipUnless(zlib, "requires zlib") + def test_readline_read_deflated(self): + # Issue #7610: calls to readline() interleaved with calls to read(). + for f in (TESTFN2, TemporaryFile(), StringIO()): + self.readline_read_test(f, zipfile.ZIP_DEFLATED) + + @skipUnless(zlib, "requires zlib") def test_readline_deflated(self): for f in (TESTFN2, TemporaryFile(), StringIO()): self.readline_test(f, zipfile.ZIP_DEFLATED) Modified: python/trunk/Lib/zipfile.py ============================================================================== --- python/trunk/Lib/zipfile.py (original) +++ python/trunk/Lib/zipfile.py Wed Jan 27 21:59:50 2010 @@ -3,6 +3,8 @@ """ import struct, os, time, sys, shutil import binascii, cStringIO, stat +import io +import re try: import zlib # We may need its compression method @@ -451,198 +453,170 @@ self._UpdateKeys(c) return c -class ZipExtFile: +class ZipExtFile(io.BufferedIOBase): """File-like object for reading an archive member. Is returned by ZipFile.open(). """ - def __init__(self, fileobj, zipinfo, decrypt=None): - self.fileobj = fileobj - self.decrypter = decrypt - self.bytes_read = 0L - self.rawbuffer = '' - self.readbuffer = '' - self.linebuffer = '' - self.eof = False - self.univ_newlines = False - self.nlSeps = ("\n", ) - self.lastdiscard = '' + # Max size supported by decompressor. + MAX_N = 1 << 31 - 1 - self.compress_type = zipinfo.compress_type - self.compress_size = zipinfo.compress_size + # Read from compressed files in 4k blocks. + MIN_READ_SIZE = 4096 - self.closed = False - self.mode = "r" - self.name = zipinfo.filename + # Search for universal newlines or line chunks. + PATTERN = re.compile(r'^(?P[^\r\n]+)|(?P\n|\r\n?)') - # read from compressed files in 64k blocks - self.compreadsize = 64*1024 - if self.compress_type == ZIP_DEFLATED: - self.dc = zlib.decompressobj(-15) - - def set_univ_newlines(self, univ_newlines): - self.univ_newlines = univ_newlines - - # pick line separator char(s) based on universal newlines flag - self.nlSeps = ("\n", ) - if self.univ_newlines: - self.nlSeps = ("\r\n", "\r", "\n") + def __init__(self, fileobj, mode, zipinfo, decrypter=None): + self._fileobj = fileobj + self._decrypter = decrypter - def __iter__(self): - return self + self._decompressor = zlib.decompressobj(-15) + self._unconsumed = '' - def next(self): - nextline = self.readline() - if not nextline: - raise StopIteration() + self._readbuffer = '' + self._offset = 0 - return nextline + self._universal = 'U' in mode + self.newlines = None - def close(self): - self.closed = True + self._compress_type = zipinfo.compress_type + self._compress_size = zipinfo.compress_size + self._compress_left = zipinfo.compress_size - def _checkfornewline(self): - nl, nllen = -1, -1 - if self.linebuffer: - # ugly check for cases where half of an \r\n pair was - # read on the last pass, and the \r was discarded. In this - # case we just throw away the \n at the start of the buffer. - if (self.lastdiscard, self.linebuffer[0]) == ('\r','\n'): - self.linebuffer = self.linebuffer[1:] - - for sep in self.nlSeps: - nl = self.linebuffer.find(sep) - if nl >= 0: - nllen = len(sep) - return nl, nllen - - return nl, nllen - - def readline(self, size = -1): - """Read a line with approx. size. If size is negative, - read a whole line. - """ - if size < 0: - size = sys.maxint - elif size == 0: - return '' - - # check for a newline already in buffer - nl, nllen = self._checkfornewline() - - if nl >= 0: - # the next line was already in the buffer - nl = min(nl, size) - else: - # no line break in buffer - try to read more - size -= len(self.linebuffer) - while nl < 0 and size > 0: - buf = self.read(min(size, 100)) - if not buf: - break - self.linebuffer += buf - size -= len(buf) + # Adjust read size for encrypted files since the first 12 bytes + # are for the encryption/password information. + if self._decrypter is not None: + self._compress_left -= 12 - # check for a newline in buffer - nl, nllen = self._checkfornewline() + self.mode = mode + self.name = zipinfo.filename + + def readline(self, limit=-1): + """Read and return a line from the stream. - # we either ran out of bytes in the file, or - # met the specified size limit without finding a newline, - # so return current buffer - if nl < 0: - s = self.linebuffer - self.linebuffer = '' - return s - - buf = self.linebuffer[:nl] - self.lastdiscard = self.linebuffer[nl:nl + nllen] - self.linebuffer = self.linebuffer[nl + nllen:] - - # line is always returned with \n as newline char (except possibly - # for a final incomplete line in the file, which is handled above). - return buf + "\n" - - def readlines(self, sizehint = -1): - """Return a list with all (following) lines. The sizehint parameter - is ignored in this implementation. + If limit is specified, at most limit bytes will be read. """ - result = [] - while True: - line = self.readline() - if not line: break - result.append(line) - return result - - def read(self, size = None): - # act like file() obj and return empty string if size is 0 - if size == 0: - return '' - - # determine read size - bytesToRead = self.compress_size - self.bytes_read - - # adjust read size for encrypted files since the first 12 bytes - # are for the encryption/password information - if self.decrypter is not None: - bytesToRead -= 12 - - if size is not None and size >= 0: - if self.compress_type == ZIP_STORED: - lr = len(self.readbuffer) - bytesToRead = min(bytesToRead, size - lr) - elif self.compress_type == ZIP_DEFLATED: - if len(self.readbuffer) > size: - # the user has requested fewer bytes than we've already - # pulled through the decompressor; don't read any more - bytesToRead = 0 - else: - # user will use up the buffer, so read some more - lr = len(self.rawbuffer) - bytesToRead = min(bytesToRead, self.compreadsize - lr) - - # avoid reading past end of file contents - if bytesToRead + self.bytes_read > self.compress_size: - bytesToRead = self.compress_size - self.bytes_read - - # try to read from file (if necessary) - if bytesToRead > 0: - bytes = self.fileobj.read(bytesToRead) - self.bytes_read += len(bytes) - self.rawbuffer += bytes - - # handle contents of raw buffer - if self.rawbuffer: - newdata = self.rawbuffer - self.rawbuffer = '' - - # decrypt new data if we were given an object to handle that - if newdata and self.decrypter is not None: - newdata = ''.join(map(self.decrypter, newdata)) - - # decompress newly read data if necessary - if newdata and self.compress_type == ZIP_DEFLATED: - newdata = self.dc.decompress(newdata) - self.rawbuffer = self.dc.unconsumed_tail - if self.eof and len(self.rawbuffer) == 0: - # we're out of raw bytes (both from the file and - # the local buffer); flush just to make sure the - # decompressor is done - newdata += self.dc.flush() - # prevent decompressor from being used again - self.dc = None - - self.readbuffer += newdata - - - # return what the user asked for - if size is None or len(self.readbuffer) <= size: - bytes = self.readbuffer - self.readbuffer = '' - else: - bytes = self.readbuffer[:size] - self.readbuffer = self.readbuffer[size:] - return bytes + if not self._universal and limit < 0: + # Shortcut common case - newline found in buffer. + i = self._readbuffer.find('\n', self._offset) + 1 + if i > 0: + line = self._readbuffer[self._offset: i] + self._offset = i + return line + + if not self._universal: + return io.BufferedIOBase.readline(self, limit) + + line = '' + while limit < 0 or len(line) < limit: + readahead = self.peek(2) + if readahead == '': + return line + + # + # Search for universal newlines or line chunks. + # + # The pattern returns either a line chunk or a newline, but not + # both. Combined with peek(2), we are assured that the sequence + # '\r\n' is always retrieved completely and never split into + # separate newlines - '\r', '\n' due to coincidental readaheads. + # + match = self.PATTERN.search(readahead) + newline = match.group('newline') + if newline is not None: + if self.newlines is None: + self.newlines = [] + if newline not in self.newlines: + self.newlines.append(newline) + self._offset += len(newline) + return line + '\n' + + chunk = match.group('chunk') + if limit >= 0: + chunk = chunk[: limit - len(line)] + + self._offset += len(chunk) + line += chunk + + return line + + def peek(self, n=1): + """Returns buffered bytes without advancing the position.""" + if n > len(self._readbuffer) - self._offset: + chunk = self.read(n) + self._offset -= len(chunk) + + # Return up to 512 bytes to reduce allocation overhead for tight loops. + return self._readbuffer[self._offset: self._offset + 512] + + def readable(self): + return True + + def read(self, n=-1): + """Read and return up to n bytes. + If the argument is omitted, None, or negative, data is read and returned until EOF is reached.. + """ + + buf = '' + while n < 0 or n is None or n > len(buf): + data = self.read1(n) + if len(data) == 0: + return buf + + buf += data + + return buf + + def read1(self, n): + """Read up to n bytes with at most one read() system call.""" + + # Simplify algorithm (branching) by transforming negative n to large n. + if n < 0 or n is None: + n = self.MAX_N + + # Bytes available in read buffer. + len_readbuffer = len(self._readbuffer) - self._offset + + # Read from file. + if self._compress_left > 0 and n > len_readbuffer + len(self._unconsumed): + nbytes = n - len_readbuffer - len(self._unconsumed) + nbytes = max(nbytes, self.MIN_READ_SIZE) + nbytes = min(nbytes, self._compress_left) + + data = self._fileobj.read(nbytes) + self._compress_left -= len(data) + + if data and self._decrypter is not None: + data = ''.join(map(self._decrypter, data)) + + if self._compress_type == ZIP_STORED: + self._readbuffer = self._readbuffer[self._offset:] + data + self._offset = 0 + else: + # Prepare deflated bytes for decompression. + self._unconsumed += data + + # Handle unconsumed data. + if len(self._unconsumed) > 0 and n > len_readbuffer: + data = self._decompressor.decompress( + self._unconsumed, + max(n - len_readbuffer, self.MIN_READ_SIZE) + ) + + self._unconsumed = self._decompressor.unconsumed_tail + if len(self._unconsumed) == 0 and self._compress_left == 0: + data += self._decompressor.flush() + + self._readbuffer = self._readbuffer[self._offset:] + data + self._offset = 0 + + # Read from buffer. + data = self._readbuffer[self._offset: self._offset + n] + self._offset += len(data) + return data + class ZipFile: @@ -918,16 +892,7 @@ if ord(h[11]) != check_byte: raise RuntimeError("Bad password for file", name) - # build and return a ZipExtFile - if zd is None: - zef = ZipExtFile(zef_file, zinfo) - else: - zef = ZipExtFile(zef_file, zinfo, zd) - - # set universal newlines on ZipExtFile if necessary - if "U" in mode: - zef.set_univ_newlines(True) - return zef + return ZipExtFile(zef_file, mode, zinfo, zd) def extract(self, member, path=None, pwd=None): """Extract a member from the archive to the current working directory, Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Wed Jan 27 21:59:50 2010 @@ -47,6 +47,13 @@ Library ------- +- Issue #7610: Reworked implementation of the internal + :class:`zipfile.ZipExtFile` class used to represent files stored inside + an archive. The new implementation is significantly faster and can + be wrapped in a :class:`io.BufferedReader` object for more speedups. + It also solves an issue where interleaved calls to `read()` and + `readline()` give wrong results. Patch by Nir Aides. + - Issue #7792: Registering non-classes to ABCs raised an obscure error. - Removed the functions 'verify' and 'vereq' from Lib/test/test_support.py. From python-checkins at python.org Wed Jan 27 22:01:26 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 27 Jan 2010 21:01:26 -0000 Subject: [Python-checkins] r77799 - python/branches/release26-maint Message-ID: Author: antoine.pitrou Date: Wed Jan 27 22:01:25 2010 New Revision: 77799 Log: Blocked revisions 77798 via svnmerge ........ r77798 | antoine.pitrou | 2010-01-27 21:59:50 +0100 (mer., 27 janv. 2010) | 8 lines Issue #7610: Reworked implementation of the internal :class:`zipfile.ZipExtFile` class used to represent files stored inside an archive. The new implementation is significantly faster and can be wrapped in a :class:`io.BufferedReader` object for more speedups. It also solves an issue where interleaved calls to `read()` and `readline()` give wrong results. Patch by Nir Aides. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Wed Jan 27 22:18:57 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 27 Jan 2010 21:18:57 -0000 Subject: [Python-checkins] r77800 - in python/branches/py3k: Lib/test/test_zipfile.py Lib/zipfile.py Misc/NEWS Message-ID: Author: antoine.pitrou Date: Wed Jan 27 22:18:57 2010 New Revision: 77800 Log: Merged revisions 77798 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77798 | antoine.pitrou | 2010-01-27 21:59:50 +0100 (mer., 27 janv. 2010) | 8 lines Issue #7610: Reworked implementation of the internal :class:`zipfile.ZipExtFile` class used to represent files stored inside an archive. The new implementation is significantly faster and can be wrapped in a :class:`io.BufferedReader` object for more speedups. It also solves an issue where interleaved calls to `read()` and `readline()` give wrong results. Patch by Nir Aides. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/test_zipfile.py python/branches/py3k/Lib/zipfile.py python/branches/py3k/Misc/NEWS Modified: python/branches/py3k/Lib/test/test_zipfile.py ============================================================================== --- python/branches/py3k/Lib/test/test_zipfile.py (original) +++ python/branches/py3k/Lib/test/test_zipfile.py Wed Jan 27 22:18:57 2010 @@ -168,6 +168,45 @@ for f in (TESTFN2, TemporaryFile(), io.BytesIO()): self.zip_random_open_test(f, zipfile.ZIP_STORED) + def test_univeral_readaheads(self): + f = io.BytesIO() + + data = b'a\r\n' * 16 * 1024 + zipfp = zipfile.ZipFile(f, 'w', zipfile.ZIP_STORED) + zipfp.writestr(TESTFN, data) + zipfp.close() + + data2 = b'' + zipfp = zipfile.ZipFile(f, 'r') + zipopen = zipfp.open(TESTFN, 'rU') + for line in zipopen: + data2 += line + zipfp.close() + + self.assertEqual(data, data2.replace(b'\n', b'\r\n')) + + def zip_readline_read_test(self, f, compression): + self.make_test_archive(f, compression) + + # Read the ZIP archive + zipfp = zipfile.ZipFile(f, "r") + zipopen = zipfp.open(TESTFN) + + data = b'' + while True: + read = zipopen.readline() + if not read: + break + data += read + + read = zipopen.read(100) + if not read: + break + data += read + + self.assertEqual(data, self.data) + zipfp.close() + def zip_readline_test(self, f, compression): self.make_test_archive(f, compression) @@ -195,6 +234,11 @@ for line, zipline in zip(self.line_gen, zipfp.open(TESTFN)): self.assertEqual(zipline, line + '\n') + def test_readline_read_stored(self): + # Issue #7610: calls to readline() interleaved with calls to read(). + for f in (TESTFN2, TemporaryFile(), io.BytesIO()): + self.zip_readline_read_test(f, zipfile.ZIP_STORED) + def test_readline_stored(self): for f in (TESTFN2, TemporaryFile(), io.BytesIO()): self.zip_readline_test(f, zipfile.ZIP_STORED) @@ -224,6 +268,12 @@ self.zip_random_open_test(f, zipfile.ZIP_DEFLATED) @skipUnless(zlib, "requires zlib") + def test_readline_read_deflated(self): + # Issue #7610: calls to readline() interleaved with calls to read(). + for f in (TESTFN2, TemporaryFile(), io.BytesIO()): + self.zip_readline_read_test(f, zipfile.ZIP_DEFLATED) + + @skipUnless(zlib, "requires zlib") def test_readline_deflated(self): for f in (TESTFN2, TemporaryFile(), io.BytesIO()): self.zip_readline_test(f, zipfile.ZIP_DEFLATED) @@ -1067,6 +1117,29 @@ zipdata = zipfp.open(fn, "rU").read() self.assertEqual(self.arcdata[sep], zipdata) + def readline_read_test(self, f, compression): + self.make_test_archive(f, compression) + + # Read the ZIP archive + zipfp = zipfile.ZipFile(f, "r") + for sep, fn in self.arcfiles.items(): + zipopen = zipfp.open(fn, "rU") + data = b'' + while True: + read = zipopen.readline() + if not read: + break + data += read + + read = zipopen.read(5) + if not read: + break + data += read + + self.assertEqual(data, self.arcdata['\n']) + + zipfp.close() + def readline_test(self, f, compression): self.make_test_archive(f, compression) @@ -1101,6 +1174,11 @@ for f in (TESTFN2, TemporaryFile(), io.BytesIO()): self.read_test(f, zipfile.ZIP_STORED) + def test_readline_read_stored(self): + # Issue #7610: calls to readline() interleaved with calls to read(). + for f in (TESTFN2, TemporaryFile(), io.BytesIO()): + self.readline_read_test(f, zipfile.ZIP_STORED) + def test_readline_stored(self): for f in (TESTFN2, TemporaryFile(), io.BytesIO()): self.readline_test(f, zipfile.ZIP_STORED) @@ -1119,6 +1197,12 @@ self.read_test(f, zipfile.ZIP_DEFLATED) @skipUnless(zlib, "requires zlib") + def test_readline_read_deflated(self): + # Issue #7610: calls to readline() interleaved with calls to read(). + for f in (TESTFN2, TemporaryFile(), io.BytesIO()): + self.readline_read_test(f, zipfile.ZIP_DEFLATED) + + @skipUnless(zlib, "requires zlib") def test_readline_deflated(self): for f in (TESTFN2, TemporaryFile(), io.BytesIO()): self.readline_test(f, zipfile.ZIP_DEFLATED) Modified: python/branches/py3k/Lib/zipfile.py ============================================================================== --- python/branches/py3k/Lib/zipfile.py (original) +++ python/branches/py3k/Lib/zipfile.py Wed Jan 27 22:18:57 2010 @@ -5,6 +5,8 @@ """ import struct, os, time, sys, shutil import binascii, io, stat +import io +import re try: import zlib # We may need its compression method @@ -443,205 +445,172 @@ self._UpdateKeys(c) return c -class ZipExtFile: +class ZipExtFile(io.BufferedIOBase): """File-like object for reading an archive member. Is returned by ZipFile.open(). """ - def __init__(self, fileobj, zipinfo, decrypt=None): - self.fileobj = fileobj - self.decrypter = decrypt - self.bytes_read = 0 - self.rawbuffer = b'' - self.readbuffer = b'' - self.linebuffer = b'' - self.eof = False - self.univ_newlines = False - self.nlSeps = (b"\n", ) - self.lastdiscard = b'' + # Max size supported by decompressor. + MAX_N = 1 << 31 - 1 - self.compress_type = zipinfo.compress_type - self.compress_size = zipinfo.compress_size + # Read from compressed files in 4k blocks. + MIN_READ_SIZE = 4096 - self.closed = False - self.mode = "r" - self.name = zipinfo.filename + # Search for universal newlines or line chunks. + PATTERN = re.compile(br'^(?P[^\r\n]+)|(?P\n|\r\n?)') - # read from compressed files in 64k blocks - self.compreadsize = 64*1024 - if self.compress_type == ZIP_DEFLATED: - self.dc = zlib.decompressobj(-15) - - def set_univ_newlines(self, univ_newlines): - self.univ_newlines = univ_newlines - - # pick line separator char(s) based on universal newlines flag - self.nlSeps = (b"\n", ) - if self.univ_newlines: - self.nlSeps = (b"\r\n", b"\r", b"\n") + def __init__(self, fileobj, mode, zipinfo, decrypter=None): + self._fileobj = fileobj + self._decrypter = decrypter - def __iter__(self): - return self + self._decompressor = zlib.decompressobj(-15) + self._unconsumed = b'' - def __next__(self): - nextline = self.readline() - if not nextline: - raise StopIteration() + self._readbuffer = b'' + self._offset = 0 - return nextline + self._universal = 'U' in mode + self.newlines = None - def close(self): - self.closed = True + self._compress_type = zipinfo.compress_type + self._compress_size = zipinfo.compress_size + self._compress_left = zipinfo.compress_size - def _checkfornewline(self): - nl, nllen = -1, -1 - if self.linebuffer: - # ugly check for cases where half of an \r\n pair was - # read on the last pass, and the \r was discarded. In this - # case we just throw away the \n at the start of the buffer. - if (self.lastdiscard, self.linebuffer[:1]) == (b'\r', b'\n'): - self.linebuffer = self.linebuffer[1:] - - for sep in self.nlSeps: - nl = self.linebuffer.find(sep) - if nl >= 0: - nllen = len(sep) - return nl, nllen - - return nl, nllen - - def readline(self, size = -1): - """Read a line with approx. size. If size is negative, - read a whole line. - """ - if size < 0: - size = sys.maxsize - elif size == 0: - return b'' - - # check for a newline already in buffer - nl, nllen = self._checkfornewline() - - if nl >= 0: - # the next line was already in the buffer - nl = min(nl, size) - else: - # no line break in buffer - try to read more - size -= len(self.linebuffer) - while nl < 0 and size > 0: - buf = self.read(min(size, 100)) - if not buf: - break - self.linebuffer += buf - size -= len(buf) + # Adjust read size for encrypted files since the first 12 bytes + # are for the encryption/password information. + if self._decrypter is not None: + self._compress_left -= 12 - # check for a newline in buffer - nl, nllen = self._checkfornewline() + self.mode = mode + self.name = zipinfo.filename + + def readline(self, limit=-1): + """Read and return a line from the stream. - # we either ran out of bytes in the file, or - # met the specified size limit without finding a newline, - # so return current buffer - if nl < 0: - s = self.linebuffer - self.linebuffer = b'' - return s - - buf = self.linebuffer[:nl] - self.lastdiscard = self.linebuffer[nl:nl + nllen] - self.linebuffer = self.linebuffer[nl + nllen:] - - # line is always returned with \n as newline char (except possibly - # for a final incomplete line in the file, which is handled above). - return buf + b"\n" - - def readlines(self, sizehint = -1): - """Return a list with all (following) lines. The sizehint parameter - is ignored in this implementation. + If limit is specified, at most limit bytes will be read. + """ + + if not self._universal and limit < 0: + # Shortcut common case - newline found in buffer. + i = self._readbuffer.find(b'\n', self._offset) + 1 + if i > 0: + line = self._readbuffer[self._offset: i] + self._offset = i + return line + + if not self._universal: + return io.BufferedIOBase.readline(self, limit) + + line = b'' + while limit < 0 or len(line) < limit: + readahead = self.peek(2) + if readahead == b'': + return line + + # + # Search for universal newlines or line chunks. + # + # The pattern returns either a line chunk or a newline, but not + # both. Combined with peek(2), we are assured that the sequence + # '\r\n' is always retrieved completely and never split into + # separate newlines - '\r', '\n' due to coincidental readaheads. + # + match = self.PATTERN.search(readahead) + newline = match.group('newline') + if newline is not None: + if self.newlines is None: + self.newlines = [] + if newline not in self.newlines: + self.newlines.append(newline) + self._offset += len(newline) + return line + b'\n' + + chunk = match.group('chunk') + if limit >= 0: + chunk = chunk[: limit - len(line)] + + self._offset += len(chunk) + line += chunk + + return line + + def peek(self, n=1): + """Returns buffered bytes without advancing the position.""" + if n > len(self._readbuffer) - self._offset: + chunk = self.read(n) + self._offset -= len(chunk) + + # Return up to 512 bytes to reduce allocation overhead for tight loops. + return self._readbuffer[self._offset: self._offset + 512] + + def readable(self): + return True + + def read(self, n=-1): + """Read and return up to n bytes. + If the argument is omitted, None, or negative, data is read and returned until EOF is reached.. """ - result = [] - while True: - line = self.readline() - if not line: break - result.append(line) - return result - - def read(self, size = None): - # act like file obj and return empty string if size is 0 - if size == 0: - return b'' - - # determine read size - bytesToRead = self.compress_size - self.bytes_read - - # adjust read size for encrypted files since the first 12 bytes - # are for the encryption/password information - if self.decrypter is not None: - bytesToRead -= 12 - - if size is not None and size >= 0: - if self.compress_type == ZIP_STORED: - lr = len(self.readbuffer) - bytesToRead = min(bytesToRead, size - lr) - elif self.compress_type == ZIP_DEFLATED: - if len(self.readbuffer) > size: - # the user has requested fewer bytes than we've already - # pulled through the decompressor; don't read any more - bytesToRead = 0 - else: - # user will use up the buffer, so read some more - lr = len(self.rawbuffer) - bytesToRead = min(bytesToRead, self.compreadsize - lr) - - # avoid reading past end of file contents - if bytesToRead + self.bytes_read > self.compress_size: - bytesToRead = self.compress_size - self.bytes_read - - # try to read from file (if necessary) - if bytesToRead > 0: - data = self.fileobj.read(bytesToRead) - self.bytes_read += len(data) - try: - self.rawbuffer += data - except: - print(repr(self.fileobj), repr(self.rawbuffer), - repr(data)) - raise - - # handle contents of raw buffer - if self.rawbuffer: - newdata = self.rawbuffer - self.rawbuffer = b'' - - # decrypt new data if we were given an object to handle that - if newdata and self.decrypter is not None: - newdata = bytes(map(self.decrypter, newdata)) - - # decompress newly read data if necessary - if newdata and self.compress_type == ZIP_DEFLATED: - newdata = self.dc.decompress(newdata) - self.rawbuffer = self.dc.unconsumed_tail - if self.eof and len(self.rawbuffer) == 0: - # we're out of raw bytes (both from the file and - # the local buffer); flush just to make sure the - # decompressor is done - newdata += self.dc.flush() - # prevent decompressor from being used again - self.dc = None - - self.readbuffer += newdata - - - # return what the user asked for - if size is None or len(self.readbuffer) <= size: - data = self.readbuffer - self.readbuffer = b'' - else: - data = self.readbuffer[:size] - self.readbuffer = self.readbuffer[size:] + buf = b'' + while n < 0 or n is None or n > len(buf): + data = self.read1(n) + if len(data) == 0: + return buf + + buf += data + + return buf + + def read1(self, n): + """Read up to n bytes with at most one read() system call.""" + + # Simplify algorithm (branching) by transforming negative n to large n. + if n < 0 or n is None: + n = self.MAX_N + + # Bytes available in read buffer. + len_readbuffer = len(self._readbuffer) - self._offset + + # Read from file. + if self._compress_left > 0 and n > len_readbuffer + len(self._unconsumed): + nbytes = n - len_readbuffer - len(self._unconsumed) + nbytes = max(nbytes, self.MIN_READ_SIZE) + nbytes = min(nbytes, self._compress_left) + + data = self._fileobj.read(nbytes) + self._compress_left -= len(data) + + if data and self._decrypter is not None: + data = bytes(map(self._decrypter, data)) + + if self._compress_type == ZIP_STORED: + self._readbuffer = self._readbuffer[self._offset:] + data + self._offset = 0 + else: + # Prepare deflated bytes for decompression. + self._unconsumed += data + + # Handle unconsumed data. + if len(self._unconsumed) > 0 and n > len_readbuffer: + data = self._decompressor.decompress( + self._unconsumed, + max(n - len_readbuffer, self.MIN_READ_SIZE) + ) + + self._unconsumed = self._decompressor.unconsumed_tail + if len(self._unconsumed) == 0 and self._compress_left == 0: + data += self._decompressor.flush() + + self._readbuffer = self._readbuffer[self._offset:] + data + self._offset = 0 + + # Read from buffer. + data = self._readbuffer[self._offset: self._offset + n] + self._offset += len(data) return data + class ZipFile: """ Class with methods to open, read, write, close, list zip files. @@ -925,16 +894,7 @@ if h[11] != check_byte: raise RuntimeError("Bad password for file", name) - # build and return a ZipExtFile - if zd is None: - zef = ZipExtFile(zef_file, zinfo) - else: - zef = ZipExtFile(zef_file, zinfo, zd) - - # set universal newlines on ZipExtFile if necessary - if "U" in mode: - zef.set_univ_newlines(True) - return zef + return ZipExtFile(zef_file, mode, zinfo, zd) def extract(self, member, path=None, pwd=None): """Extract a member from the archive to the current working directory, Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Wed Jan 27 22:18:57 2010 @@ -225,7 +225,6 @@ - Issue #1419652: Change the first argument to PyImport_AppendInittab() to ``const char *`` as the string is stored beyond the call. - - Issue #2422: When compiled with the ``--with-valgrind`` option, the pymalloc allocator will be automatically disabled when running under Valgrind. This gives improved memory leak detection when running @@ -234,6 +233,13 @@ Library ------- +- Issue #7610: Reworked implementation of the internal + :class:`zipfile.ZipExtFile` class used to represent files stored inside + an archive. The new implementation is significantly faster and can + be wrapped in a :class:`io.BufferedReader` object for more speedups. + It also solves an issue where interleaved calls to `read()` and + `readline()` give wrong results. Patch by Nir Aides. + - Issue #6963: Added "maxtasksperchild" argument to multiprocessing.Pool, allowing for a maximum number of tasks within the pool to be completed by the worker before that worker is terminated, and a new one created to From python-checkins at python.org Wed Jan 27 22:30:04 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 27 Jan 2010 21:30:04 -0000 Subject: [Python-checkins] r77801 - python/branches/release31-maint Message-ID: Author: antoine.pitrou Date: Wed Jan 27 22:30:04 2010 New Revision: 77801 Log: Blocked revisions 77800 via svnmerge ................ r77800 | antoine.pitrou | 2010-01-27 22:18:57 +0100 (mer., 27 janv. 2010) | 14 lines Merged revisions 77798 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77798 | antoine.pitrou | 2010-01-27 21:59:50 +0100 (mer., 27 janv. 2010) | 8 lines Issue #7610: Reworked implementation of the internal :class:`zipfile.ZipExtFile` class used to represent files stored inside an archive. The new implementation is significantly faster and can be wrapped in a :class:`io.BufferedReader` object for more speedups. It also solves an issue where interleaved calls to `read()` and `readline()` give wrong results. Patch by Nir Aides. ........ ................ Modified: python/branches/release31-maint/ (props changed) From python-checkins at python.org Wed Jan 27 22:48:46 2010 From: python-checkins at python.org (antoine.pitrou) Date: Wed, 27 Jan 2010 21:48:46 -0000 Subject: [Python-checkins] r77802 - in python/branches/release26-maint: Lib/io.py Lib/test/test_fileio.py Lib/test/test_io.py Lib/test/test_memoryio.py Misc/NEWS Modules/_bytesio.c Modules/_fileio.c Message-ID: Author: antoine.pitrou Date: Wed Jan 27 22:48:46 2010 New Revision: 77802 Log: Issue #6939: Fix file I/O objects in the `io` module to keep the original file position when calling `truncate()`. It would previously change the file position to the given argument, which goes against the tradition of `ftruncate()` and other truncation APIs. Patch by Pascal Chambon. Modified: python/branches/release26-maint/Lib/io.py python/branches/release26-maint/Lib/test/test_fileio.py python/branches/release26-maint/Lib/test/test_io.py python/branches/release26-maint/Lib/test/test_memoryio.py python/branches/release26-maint/Misc/NEWS python/branches/release26-maint/Modules/_bytesio.c python/branches/release26-maint/Modules/_fileio.c Modified: python/branches/release26-maint/Lib/io.py ============================================================================== --- python/branches/release26-maint/Lib/io.py (original) +++ python/branches/release26-maint/Lib/io.py Wed Jan 27 22:48:46 2010 @@ -880,7 +880,7 @@ elif pos < 0: raise ValueError("negative truncate position %r" % (pos,)) del self._buffer[pos:] - return self.seek(pos) + return pos def readable(self): return True @@ -1215,8 +1215,7 @@ if pos is None: pos = self.tell() # Use seek to flush the read buffer. - self.seek(pos) - return BufferedWriter.truncate(self) + return BufferedWriter.truncate(self, pos) def read(self, n=None): if n is None: @@ -1667,8 +1666,7 @@ self.flush() if pos is None: pos = self.tell() - self.seek(pos) - return self.buffer.truncate() + return self.buffer.truncate(pos) def seek(self, cookie, whence=0): if self.closed: Modified: python/branches/release26-maint/Lib/test/test_fileio.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_fileio.py (original) +++ python/branches/release26-maint/Lib/test/test_fileio.py Wed Jan 27 22:48:46 2010 @@ -197,6 +197,17 @@ f.close() self.fail("no error for invalid mode: %s" % bad_mode) + def testTruncate(self): + f = _fileio._FileIO(TESTFN, 'w') + f.write(bytes(bytearray(range(10)))) + self.assertEqual(f.tell(), 10) + f.truncate(5) + self.assertEqual(f.tell(), 10) + self.assertEqual(f.seek(0, os.SEEK_END), 5) + f.truncate(15) + self.assertEqual(f.tell(), 5) + self.assertEqual(f.seek(0, os.SEEK_END), 15) + def testTruncateOnWindows(self): def bug801631(): # SF bug Modified: python/branches/release26-maint/Lib/test/test_io.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_io.py (original) +++ python/branches/release26-maint/Lib/test/test_io.py Wed Jan 27 22:48:46 2010 @@ -87,6 +87,12 @@ test_support.unlink(test_support.TESTFN) def write_ops(self, f): + + self.assertEqual(f.write(b"blah."), 5) + f.truncate(0) + self.assertEqual(f.tell(), 5) + f.seek(0) + self.assertEqual(f.write(b"blah."), 5) self.assertEqual(f.seek(0), 0) self.assertEqual(f.write(b"Hello."), 6) @@ -98,8 +104,9 @@ self.assertEqual(f.write(b"h"), 1) self.assertEqual(f.seek(-1, 2), 13) self.assertEqual(f.tell(), 13) + self.assertEqual(f.truncate(12), 12) - self.assertEqual(f.tell(), 12) + self.assertEqual(f.tell(), 13) self.assertRaises(TypeError, f.seek, 0.0) def read_ops(self, f, buffered=False): @@ -144,7 +151,7 @@ self.assertEqual(f.tell(), self.LARGE + 2) self.assertEqual(f.seek(0, 2), self.LARGE + 2) self.assertEqual(f.truncate(self.LARGE + 1), self.LARGE + 1) - self.assertEqual(f.tell(), self.LARGE + 1) + self.assertEqual(f.tell(), self.LARGE + 2) self.assertEqual(f.seek(0, 2), self.LARGE + 1) self.assertEqual(f.seek(-1, 2), self.LARGE) self.assertEqual(f.read(2), b"x") Modified: python/branches/release26-maint/Lib/test/test_memoryio.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_memoryio.py (original) +++ python/branches/release26-maint/Lib/test/test_memoryio.py Wed Jan 27 22:48:46 2010 @@ -32,7 +32,7 @@ self.assertEqual(f.seek(0), 0) self.assertEqual(f.write(t("h")), 1) self.assertEqual(f.truncate(12), 12) - self.assertEqual(f.tell(), 12) + self.assertEqual(f.tell(), 1) def test_write(self): buf = self.buftype("hello world\n") @@ -83,7 +83,8 @@ # truncate() accepts long objects self.assertEqual(memio.truncate(4L), 4) self.assertEqual(memio.getvalue(), buf[:4]) - self.assertEqual(memio.tell(), 4) + self.assertEqual(memio.tell(), 6) + memio.seek(0, 2) memio.write(buf) self.assertEqual(memio.getvalue(), buf[:4] + buf) pos = memio.tell() Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Wed Jan 27 22:48:46 2010 @@ -53,6 +53,11 @@ Library ------- +- Issue #6939: Fix file I/O objects in the `io` module to keep the original + file position when calling `truncate()`. It would previously change the + file position to the given argument, which goes against the tradition of + ftruncate() and other truncation APIs. Patch by Pascal Chambon. + - Issue #7792: Registering non-classes to ABCs raised an obscure error. - Issue #7773: Fix an UnboundLocalError in platform.linux_distribution() when Modified: python/branches/release26-maint/Modules/_bytesio.c ============================================================================== --- python/branches/release26-maint/Modules/_bytesio.c (original) +++ python/branches/release26-maint/Modules/_bytesio.c Wed Jan 27 22:48:46 2010 @@ -445,7 +445,6 @@ if (resize_buffer(self, size) < 0) return NULL; } - self->pos = size; return PyInt_FromSsize_t(size); } Modified: python/branches/release26-maint/Modules/_fileio.c ============================================================================== --- python/branches/release26-maint/Modules/_fileio.c (original) +++ python/branches/release26-maint/Modules/_fileio.c Wed Jan 27 22:48:46 2010 @@ -646,8 +646,10 @@ static PyObject * fileio_truncate(PyFileIOObject *self, PyObject *args) { - PyObject *posobj = NULL; + PyObject *posobj = NULL; /* the new size wanted by the user */ +#ifndef MS_WINDOWS Py_off_t pos; +#endif int ret; int fd; @@ -662,56 +664,86 @@ if (posobj == Py_None || posobj == NULL) { /* Get the current position. */ - posobj = portable_lseek(fd, NULL, 1); - if (posobj == NULL) + posobj = portable_lseek(fd, NULL, 1); + if (posobj == NULL) return NULL; - } - else { - /* Move to the position to be truncated. */ - posobj = portable_lseek(fd, posobj, 0); - } - -#if defined(HAVE_LARGEFILE_SUPPORT) - pos = PyLong_AsLongLong(posobj); -#else - pos = PyLong_AsLong(posobj); -#endif - if (PyErr_Occurred()) - return NULL; + } + else { + Py_INCREF(posobj); + } #ifdef MS_WINDOWS /* MS _chsize doesn't work if newsize doesn't fit in 32 bits, so don't even try using it. */ { + PyObject *oldposobj, *tempposobj; HANDLE hFile; + + /* we save the file pointer position */ + oldposobj = portable_lseek(fd, NULL, 1); + if (oldposobj == NULL) { + Py_DECREF(posobj); + return NULL; + } + + /* we then move to the truncation position */ + tempposobj = portable_lseek(fd, posobj, 0); + if (tempposobj == NULL) { + Py_DECREF(oldposobj); + Py_DECREF(posobj); + return NULL; + } + Py_DECREF(tempposobj); /* Truncate. Note that this may grow the file! */ Py_BEGIN_ALLOW_THREADS errno = 0; hFile = (HANDLE)_get_osfhandle(fd); - ret = hFile == (HANDLE)-1; + ret = hFile == (HANDLE)-1; /* testing for INVALID_HANDLE value */ if (ret == 0) { ret = SetEndOfFile(hFile) == 0; if (ret) errno = EACCES; } Py_END_ALLOW_THREADS + + /* we restore the file pointer position in any case */ + tempposobj = portable_lseek(fd, oldposobj, 0); + Py_DECREF(oldposobj); + if (tempposobj == NULL) { + Py_DECREF(posobj); + return NULL; + } + Py_DECREF(tempposobj); } #else + +#if defined(HAVE_LARGEFILE_SUPPORT) + pos = PyLong_AsLongLong(posobj); +#else + pos = PyLong_AsLong(posobj); +#endif + if (PyErr_Occurred()){ + Py_DECREF(posobj); + return NULL; + } + Py_BEGIN_ALLOW_THREADS errno = 0; ret = ftruncate(fd, pos); Py_END_ALLOW_THREADS + #endif /* !MS_WINDOWS */ if (ret != 0) { + Py_DECREF(posobj); PyErr_SetFromErrno(PyExc_IOError); return NULL; } return posobj; } -#endif +#endif /* HAVE_FTRUNCATE */ static char * mode_string(PyFileIOObject *self) From python-checkins at python.org Wed Jan 27 23:44:03 2010 From: python-checkins at python.org (ezio.melotti) Date: Wed, 27 Jan 2010 22:44:03 -0000 Subject: [Python-checkins] r77803 - in python/branches/py3k/Doc/library: bdb.rst operator.rst string.rst sys.rst Message-ID: Author: ezio.melotti Date: Wed Jan 27 23:44:03 2010 New Revision: 77803 Log: updated/removed a few versionadded/versionchanged Modified: python/branches/py3k/Doc/library/bdb.rst python/branches/py3k/Doc/library/operator.rst python/branches/py3k/Doc/library/string.rst python/branches/py3k/Doc/library/sys.rst Modified: python/branches/py3k/Doc/library/bdb.rst ============================================================================== --- python/branches/py3k/Doc/library/bdb.rst (original) +++ python/branches/py3k/Doc/library/bdb.rst Wed Jan 27 23:44:03 2010 @@ -76,7 +76,7 @@ frame is considered to originate in a certain module is determined by the ``__name__`` in the frame globals. - .. versionadded:: 2.7 + .. versionadded:: 3.1 The *skip* argument. The following methods of :class:`Bdb` normally don't need to be overridden. Modified: python/branches/py3k/Doc/library/operator.rst ============================================================================== --- python/branches/py3k/Doc/library/operator.rst (original) +++ python/branches/py3k/Doc/library/operator.rst Wed Jan 27 23:44:03 2010 @@ -109,8 +109,6 @@ Return *a* converted to an integer. Equivalent to ``a.__index__()``. - .. versionadded:: 2.5 - .. function:: inv(obj) invert(obj) Modified: python/branches/py3k/Doc/library/string.rst ============================================================================== --- python/branches/py3k/Doc/library/string.rst (original) +++ python/branches/py3k/Doc/library/string.rst Wed Jan 27 23:44:03 2010 @@ -471,8 +471,6 @@ Template strings ---------------- -.. versionadded:: 2.4 - Templates provide simpler string substitutions as described in :pep:`292`. Instead of the normal ``%``\ -based substitutions, Templates support ``$``\ -based substitutions, using the following rules: Modified: python/branches/py3k/Doc/library/sys.rst ============================================================================== --- python/branches/py3k/Doc/library/sys.rst (original) +++ python/branches/py3k/Doc/library/sys.rst Wed Jan 27 23:44:03 2010 @@ -439,7 +439,7 @@ Availability: Windows. - .. versionchanged:: 2.7 + .. versionchanged:: 3.2 Changed to a named tuple and added *service_pack_minor*, *service_pack_major*, *suite_mask*, and *product_type*. From python-checkins at python.org Wed Jan 27 23:53:49 2010 From: python-checkins at python.org (ezio.melotti) Date: Wed, 27 Jan 2010 22:53:49 -0000 Subject: [Python-checkins] r77804 - in python/branches/release31-maint: Doc/library/bdb.rst Doc/library/operator.rst Doc/library/string.rst Message-ID: Author: ezio.melotti Date: Wed Jan 27 23:53:48 2010 New Revision: 77804 Log: Merged revisions 77803 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ........ r77803 | ezio.melotti | 2010-01-28 00:44:03 +0200 (Thu, 28 Jan 2010) | 1 line updated/removed a few versionadded/versionchanged ........ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Doc/library/bdb.rst python/branches/release31-maint/Doc/library/operator.rst python/branches/release31-maint/Doc/library/string.rst Modified: python/branches/release31-maint/Doc/library/bdb.rst ============================================================================== --- python/branches/release31-maint/Doc/library/bdb.rst (original) +++ python/branches/release31-maint/Doc/library/bdb.rst Wed Jan 27 23:53:48 2010 @@ -76,7 +76,7 @@ frame is considered to originate in a certain module is determined by the ``__name__`` in the frame globals. - .. versionadded:: 2.7 + .. versionadded:: 3.1 The *skip* argument. The following methods of :class:`Bdb` normally don't need to be overridden. Modified: python/branches/release31-maint/Doc/library/operator.rst ============================================================================== --- python/branches/release31-maint/Doc/library/operator.rst (original) +++ python/branches/release31-maint/Doc/library/operator.rst Wed Jan 27 23:53:48 2010 @@ -109,8 +109,6 @@ Return *a* converted to an integer. Equivalent to ``a.__index__()``. - .. versionadded:: 2.5 - .. function:: inv(obj) invert(obj) Modified: python/branches/release31-maint/Doc/library/string.rst ============================================================================== --- python/branches/release31-maint/Doc/library/string.rst (original) +++ python/branches/release31-maint/Doc/library/string.rst Wed Jan 27 23:53:48 2010 @@ -471,8 +471,6 @@ Template strings ---------------- -.. versionadded:: 2.4 - Templates provide simpler string substitutions as described in :pep:`292`. Instead of the normal ``%``\ -based substitutions, Templates support ``$``\ -based substitutions, using the following rules: From solipsis at pitrou.net Thu Jan 28 00:56:07 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Thu, 28 Jan 2010 00:56:07 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77800): sum=23 Message-ID: <20100127235607.7EF761770A@ns6635.ovh.net> py3k results for svn r77800 (hg cset 6505fa018b13) -------------------------------------------------- test_os leaked [23, 0, 0] references, sum=23 Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflog-RLClh', '-x', 'test_httpservers'] From python-checkins at python.org Thu Jan 28 01:06:58 2010 From: python-checkins at python.org (vinay.sajip) Date: Thu, 28 Jan 2010 00:06:58 -0000 Subject: [Python-checkins] r77805 - in python/branches/release24-maint: Lib/logging/__init__.py Misc/NEWS Message-ID: Author: vinay.sajip Date: Thu Jan 28 01:06:57 2010 New Revision: 77805 Log: Reverted back to r67866. Modified: python/branches/release24-maint/Lib/logging/__init__.py python/branches/release24-maint/Misc/NEWS Modified: python/branches/release24-maint/Lib/logging/__init__.py ============================================================================== --- python/branches/release24-maint/Lib/logging/__init__.py (original) +++ python/branches/release24-maint/Lib/logging/__init__.py Thu Jan 28 01:06:57 2010 @@ -166,10 +166,7 @@ #the lock would already have been acquired - so we need an RLock. #The same argument applies to Loggers and Manager.loggerDict. # -if thread: - _lock = threading.RLock() -else: - _lock = None +_lock = None def _acquireLock(): """ @@ -177,6 +174,9 @@ This should be released with _releaseLock(). """ + global _lock + if (not _lock) and thread: + _lock = threading.RLock() if _lock: _lock.acquire() Modified: python/branches/release24-maint/Misc/NEWS ============================================================================== --- python/branches/release24-maint/Misc/NEWS (original) +++ python/branches/release24-maint/Misc/NEWS Thu Jan 28 01:06:57 2010 @@ -9,11 +9,6 @@ *Release date: XX-XXX-2009* -Library -------- - -- Issue #7403: logging: Fixed possible race condition in lock creation. - What's New in Python 2.4.6? =========================== From benjamin at python.org Thu Jan 28 02:24:07 2010 From: benjamin at python.org (Benjamin Peterson) Date: Wed, 27 Jan 2010 19:24:07 -0600 Subject: [Python-checkins] r77788 - python/trunk/Lib/UserDict.py In-Reply-To: <4B6000C1.70708@egenix.com> References: <20100127022208.4B08B405087@mail.egenix.com> <4B6000C1.70708@egenix.com> Message-ID: <1afaf6161001271724h4992d082kd10279042a68e93@mail.gmail.com> 2010/1/27 M.-A. Lemburg : > benjamin.peterson wrote: >> Author: benjamin.peterson >> Date: Wed Jan 27 03:15:28 2010 >> New Revision: 77788 >> >> Log: >> for UserDict to be compatible with abcs, it must subclass object > > Please add a clear mention of this change to Misc/NEWS - it could > break existing applications that rely on UserDict being an old-style > class. Good point. Done. -- Regards, Benjamin From python-checkins at python.org Thu Jan 28 02:24:46 2010 From: python-checkins at python.org (benjamin.peterson) Date: Thu, 28 Jan 2010 01:24:46 -0000 Subject: [Python-checkins] r77806 - python/trunk/Misc/NEWS Message-ID: Author: benjamin.peterson Date: Thu Jan 28 02:24:46 2010 New Revision: 77806 Log: add compat note Modified: python/trunk/Misc/NEWS Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Thu Jan 28 02:24:46 2010 @@ -180,6 +180,8 @@ Library ------- +- UserDict is now an new-style class. + - Issue #6963: Added "maxtasksperchild" argument to multiprocessing.Pool, allowing for a maximum number of tasks within the pool to be completed by the worker before that worker is terminated, and a new one created to From python-checkins at python.org Thu Jan 28 02:31:13 2010 From: python-checkins at python.org (benjamin.peterson) Date: Thu, 28 Jan 2010 01:31:13 -0000 Subject: [Python-checkins] r77807 - in python/branches/release26-maint: Lib/UserDict.py Lib/abc.py Lib/test/test_abc.py Misc/NEWS Message-ID: Author: benjamin.peterson Date: Thu Jan 28 02:31:13 2010 New Revision: 77807 Log: revert r77790. it requires a new-style class change Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/UserDict.py python/branches/release26-maint/Lib/abc.py python/branches/release26-maint/Lib/test/test_abc.py python/branches/release26-maint/Misc/NEWS Modified: python/branches/release26-maint/Lib/UserDict.py ============================================================================== --- python/branches/release26-maint/Lib/UserDict.py (original) +++ python/branches/release26-maint/Lib/UserDict.py Thu Jan 28 02:31:13 2010 @@ -1,6 +1,6 @@ """A more or less complete user-defined wrapper around dictionary objects.""" -class UserDict(object): +class UserDict: def __init__(self, dict=None, **kwargs): self.data = {} if dict is not None: Modified: python/branches/release26-maint/Lib/abc.py ============================================================================== --- python/branches/release26-maint/Lib/abc.py (original) +++ python/branches/release26-maint/Lib/abc.py Thu Jan 28 02:31:13 2010 @@ -96,7 +96,7 @@ def register(cls, subclass): """Register a virtual subclass of an ABC.""" - if not isinstance(subclass, type): + if not isinstance(cls, type): raise TypeError("Can only register classes") if issubclass(subclass, cls): return # Already a subclass Modified: python/branches/release26-maint/Lib/test/test_abc.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_abc.py (original) +++ python/branches/release26-maint/Lib/test/test_abc.py Thu Jan 28 02:31:13 2010 @@ -149,11 +149,6 @@ self.assertRaises(RuntimeError, C.register, A) # cycles not allowed C.register(B) # ok - def test_register_non_class(self): - class A(object): - __metaclass__ = abc.ABCMeta - self.assertRaises(TypeError, A.register, 4) - def test_registration_transitiveness(self): class A: __metaclass__ = abc.ABCMeta Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Thu Jan 28 02:31:13 2010 @@ -58,8 +58,6 @@ file position to the given argument, which goes against the tradition of ftruncate() and other truncation APIs. Patch by Pascal Chambon. -- Issue #7792: Registering non-classes to ABCs raised an obscure error. - - Issue #7773: Fix an UnboundLocalError in platform.linux_distribution() when the release file is empty. From python-checkins at python.org Thu Jan 28 02:31:31 2010 From: python-checkins at python.org (benjamin.peterson) Date: Thu, 28 Jan 2010 01:31:31 -0000 Subject: [Python-checkins] r77808 - python/branches/py3k Message-ID: Author: benjamin.peterson Date: Thu Jan 28 02:31:31 2010 New Revision: 77808 Log: Blocked revisions 77806 via svnmerge ........ r77806 | benjamin.peterson | 2010-01-27 19:24:46 -0600 (Wed, 27 Jan 2010) | 1 line add compat note ........ Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Thu Jan 28 02:41:30 2010 From: python-checkins at python.org (ezio.melotti) Date: Thu, 28 Jan 2010 01:41:30 -0000 Subject: [Python-checkins] r77809 - python/trunk/Lib/zipfile.py Message-ID: Author: ezio.melotti Date: Thu Jan 28 02:41:30 2010 New Revision: 77809 Log: avoid to use zlib when the compress type is not ZIP_DEFLATED Modified: python/trunk/Lib/zipfile.py Modified: python/trunk/Lib/zipfile.py ============================================================================== --- python/trunk/Lib/zipfile.py (original) +++ python/trunk/Lib/zipfile.py Thu Jan 28 02:41:30 2010 @@ -471,7 +471,12 @@ self._fileobj = fileobj self._decrypter = decrypter - self._decompressor = zlib.decompressobj(-15) + self._compress_type = zipinfo.compress_type + self._compress_size = zipinfo.compress_size + self._compress_left = zipinfo.compress_size + + if self._compress_type == ZIP_DEFLATED: + self._decompressor = zlib.decompressobj(-15) self._unconsumed = '' self._readbuffer = '' @@ -480,10 +485,6 @@ self._universal = 'U' in mode self.newlines = None - self._compress_type = zipinfo.compress_type - self._compress_size = zipinfo.compress_size - self._compress_left = zipinfo.compress_size - # Adjust read size for encrypted files since the first 12 bytes # are for the encryption/password information. if self._decrypter is not None: @@ -599,7 +600,8 @@ self._unconsumed += data # Handle unconsumed data. - if len(self._unconsumed) > 0 and n > len_readbuffer: + if (len(self._unconsumed) > 0 and n > len_readbuffer and + self._compress_type == ZIP_DEFLATED): data = self._decompressor.decompress( self._unconsumed, max(n - len_readbuffer, self.MIN_READ_SIZE) From python-checkins at python.org Thu Jan 28 02:44:42 2010 From: python-checkins at python.org (ezio.melotti) Date: Thu, 28 Jan 2010 01:44:42 -0000 Subject: [Python-checkins] r77810 - in python/branches/py3k: Lib/zipfile.py Message-ID: Author: ezio.melotti Date: Thu Jan 28 02:44:41 2010 New Revision: 77810 Log: Merged revisions 77809 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77809 | ezio.melotti | 2010-01-28 03:41:30 +0200 (Thu, 28 Jan 2010) | 1 line avoid to use zlib when the compress type is not ZIP_DEFLATED ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/zipfile.py Modified: python/branches/py3k/Lib/zipfile.py ============================================================================== --- python/branches/py3k/Lib/zipfile.py (original) +++ python/branches/py3k/Lib/zipfile.py Thu Jan 28 02:44:41 2010 @@ -463,7 +463,12 @@ self._fileobj = fileobj self._decrypter = decrypter - self._decompressor = zlib.decompressobj(-15) + self._compress_type = zipinfo.compress_type + self._compress_size = zipinfo.compress_size + self._compress_left = zipinfo.compress_size + + if self._compress_type == ZIP_DEFLATED: + self._decompressor = zlib.decompressobj(-15) self._unconsumed = b'' self._readbuffer = b'' @@ -472,10 +477,6 @@ self._universal = 'U' in mode self.newlines = None - self._compress_type = zipinfo.compress_type - self._compress_size = zipinfo.compress_size - self._compress_left = zipinfo.compress_size - # Adjust read size for encrypted files since the first 12 bytes # are for the encryption/password information. if self._decrypter is not None: @@ -591,7 +592,8 @@ self._unconsumed += data # Handle unconsumed data. - if len(self._unconsumed) > 0 and n > len_readbuffer: + if (len(self._unconsumed) > 0 and n > len_readbuffer and + self._compress_type == ZIP_DEFLATED): data = self._decompressor.decompress( self._unconsumed, max(n - len_readbuffer, self.MIN_READ_SIZE) From python-checkins at python.org Thu Jan 28 03:15:02 2010 From: python-checkins at python.org (benjamin.peterson) Date: Thu, 28 Jan 2010 02:15:02 -0000 Subject: [Python-checkins] r77811 - python/trunk/Misc/NEWS Message-ID: Author: benjamin.peterson Date: Thu Jan 28 03:15:02 2010 New Revision: 77811 Log: an -> a Modified: python/trunk/Misc/NEWS Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Thu Jan 28 03:15:02 2010 @@ -47,6 +47,8 @@ Library ------- +- UserDict is now a new-style class. + - Issue #7610: Reworked implementation of the internal :class:`zipfile.ZipExtFile` class used to represent files stored inside an archive. The new implementation is significantly faster and can @@ -180,8 +182,6 @@ Library ------- -- UserDict is now an new-style class. - - Issue #6963: Added "maxtasksperchild" argument to multiprocessing.Pool, allowing for a maximum number of tasks within the pool to be completed by the worker before that worker is terminated, and a new one created to From python-checkins at python.org Thu Jan 28 03:18:25 2010 From: python-checkins at python.org (benjamin.peterson) Date: Thu, 28 Jan 2010 02:18:25 -0000 Subject: [Python-checkins] r77812 - python/trunk/Lib/UserDict.py Message-ID: Author: benjamin.peterson Date: Thu Jan 28 03:18:25 2010 New Revision: 77812 Log: avoid a py3k warning from __hash__ Modified: python/trunk/Lib/UserDict.py Modified: python/trunk/Lib/UserDict.py ============================================================================== --- python/trunk/Lib/UserDict.py (original) +++ python/trunk/Lib/UserDict.py Thu Jan 28 03:18:25 2010 @@ -13,6 +13,7 @@ return cmp(self.data, dict.data) else: return cmp(self.data, dict) + __hash__ = None # Avoid Py3k warning def __len__(self): return len(self.data) def __getitem__(self, key): if key in self.data: From python-checkins at python.org Thu Jan 28 03:22:10 2010 From: python-checkins at python.org (benjamin.peterson) Date: Thu, 28 Jan 2010 02:22:10 -0000 Subject: [Python-checkins] r77813 - python/branches/py3k Message-ID: Author: benjamin.peterson Date: Thu Jan 28 03:22:10 2010 New Revision: 77813 Log: Blocked revisions 77811-77812 via svnmerge ........ r77811 | benjamin.peterson | 2010-01-27 20:15:02 -0600 (Wed, 27 Jan 2010) | 1 line an -> a ........ r77812 | benjamin.peterson | 2010-01-27 20:18:25 -0600 (Wed, 27 Jan 2010) | 1 line avoid a py3k warning from __hash__ ........ Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Thu Jan 28 05:27:56 2010 From: python-checkins at python.org (ezio.melotti) Date: Thu, 28 Jan 2010 04:27:56 -0000 Subject: [Python-checkins] r77814 - python/branches/release26-maint/Doc/library/socket.rst Message-ID: Author: ezio.melotti Date: Thu Jan 28 05:27:56 2010 New Revision: 77814 Log: #7791: remove reference to ipaddr Modified: python/branches/release26-maint/Doc/library/socket.rst Modified: python/branches/release26-maint/Doc/library/socket.rst ============================================================================== --- python/branches/release26-maint/Doc/library/socket.rst (original) +++ python/branches/release26-maint/Doc/library/socket.rst Thu Jan 28 05:27:56 2010 @@ -440,11 +440,6 @@ Availability: Unix (maybe not all platforms). - .. seealso:: - - :func:`ipaddr.BaseIP.packed` - Platform-independent conversion to a packed, binary format. - .. versionadded:: 2.3 From python-checkins at python.org Thu Jan 28 22:16:33 2010 From: python-checkins at python.org (r.david.murray) Date: Thu, 28 Jan 2010 21:16:33 -0000 Subject: [Python-checkins] r77815 - python/trunk/Lib/unittest/suite.py Message-ID: Author: r.david.murray Date: Thu Jan 28 22:16:33 2010 New Revision: 77815 Log: Change error report when the object passed to suite.addTest is not callable to include the repr of the invalid object. Modified: python/trunk/Lib/unittest/suite.py Modified: python/trunk/Lib/unittest/suite.py ============================================================================== --- python/trunk/Lib/unittest/suite.py (original) +++ python/trunk/Lib/unittest/suite.py Thu Jan 28 22:16:33 2010 @@ -43,7 +43,7 @@ def addTest(self, test): # sanity checks if not hasattr(test, '__call__'): - raise TypeError("the test to add must be callable") + raise TypeError("{} is not callable".format(repr(test))) if isinstance(test, type) and issubclass(test, (case.TestCase, TestSuite)): raise TypeError("TestCases and TestSuites must be instantiated " From python-checkins at python.org Thu Jan 28 22:53:27 2010 From: python-checkins at python.org (martin.v.loewis) Date: Thu, 28 Jan 2010 21:53:27 -0000 Subject: [Python-checkins] r77816 - tracker/instances/python-dev/extensions/openid_login.py Message-ID: Author: martin.v.loewis Date: Thu Jan 28 22:53:27 2010 New Revision: 77816 Log: Fix session management to recycle all expired session objects. Modified: tracker/instances/python-dev/extensions/openid_login.py Modified: tracker/instances/python-dev/extensions/openid_login.py ============================================================================== --- tracker/instances/python-dev/extensions/openid_login.py (original) +++ tracker/instances/python-dev/extensions/openid_login.py Thu Jan 28 22:53:27 2010 @@ -19,27 +19,24 @@ # Match may not have been exact if self.db.openid_session.get(session_id, 'provider_id') != provider: continue - expires = self.db.openid_session.get(session_id, 'expires') if discovered and discovered[1] != self.db.openid_session.get(session_id, 'url'): # User has changed provider; don't reuse session - break - elif expires > date.Date('.')+date.Interval("1:00"): + continue + expires = self.db.openid_session.get(session_id, 'expires') + if expires > date.Date('.')+date.Interval("1:00"): # valid for another hour return self.db.openid_session.getnode(session_id) - elif expires < date.Date('.')-date.Interval("1d"): - # expired more than one day ago - break - else: - session_id = None - # need to create new session + # need to create new session, or recycle an expired one if discovered: stypes, url, op_local = discovered else: stypes, url, op_local = openid.discover(provider) now = date.Date('.') session_data = openid.associate(stypes, url) - if session_id: - session = self.db.openid_session.getnode(session_id) + # check whether a session has expired a day ago + sessions = self.db.openid_session.filter(None, {'expires':'to -1d'}) + if sessions: + session = self.db.openid_session.getnode(sessions[0]) session.assoc_handle = session_data['assoc_handle'] else: session_id = self.db.openid_session.create(assoc_handle=session_data['assoc_handle']) From python-checkins at python.org Thu Jan 28 23:02:01 2010 From: python-checkins at python.org (martin.v.loewis) Date: Thu, 28 Jan 2010 22:02:01 -0000 Subject: [Python-checkins] r77817 - tracker/instances/python-dev/schema.py Message-ID: Author: martin.v.loewis Date: Thu Jan 28 23:02:01 2010 New Revision: 77817 Log: Disable journalling for openid sessions. Modified: tracker/instances/python-dev/schema.py Modified: tracker/instances/python-dev/schema.py ============================================================================== --- tracker/instances/python-dev/schema.py (original) +++ tracker/instances/python-dev/schema.py Thu Jan 28 23:02:01 2010 @@ -108,6 +108,7 @@ expires=Date(), mac_key=String()) openid_session.setkey('assoc_handle') +openid_session.disableJournalling() openid_nonce = Class(db, 'openid_nonce', created=Date(), From python-checkins at python.org Fri Jan 29 12:41:04 2010 From: python-checkins at python.org (tarek.ziade) Date: Fri, 29 Jan 2010 11:41:04 -0000 Subject: [Python-checkins] r77818 - in python/branches/py3k: Lib/distutils/ccompiler.py Lib/distutils/command/bdist.py Lib/distutils/command/bdist_dumb.py Lib/distutils/command/bdist_wininst.py Lib/distutils/command/build.py Lib/distutils/command/build_clib.py Lib/distutils/command/build_ext.py Lib/distutils/command/build_scripts.py Lib/distutils/command/config.py Lib/distutils/command/install.py Lib/distutils/core.py Lib/distutils/cygwinccompiler.py Lib/distutils/extension.py Lib/distutils/msvc9compiler.py Lib/distutils/sysconfig.py Lib/distutils/tests/support.py Lib/distutils/tests/test_build.py Lib/distutils/tests/test_build_clib.py Lib/distutils/tests/test_build_ext.py Lib/distutils/tests/test_build_scripts.py Lib/distutils/tests/test_ccompiler.py Lib/distutils/tests/test_cygwinccompiler.py Lib/distutils/tests/test_extension.py Lib/distutils/tests/test_install.py Lib/distutils/tests/test_sysconfig.py Lib/distutils/tests/test_unixccompiler.py Lib/distutils/tests/test_util.py Lib/distutils/unixccompiler.py Lib/distutils/util.py Lib/site.py Lib/sysconfig.py Lib/test/test_site.py Lib/test/test_sysconfig.py Makefile.pre.in setup.py Message-ID: Author: tarek.ziade Date: Fri Jan 29 12:41:03 2010 New Revision: 77818 Log: Merged revisions 77704,77752 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77704 | tarek.ziade | 2010-01-23 10:23:15 +0100 (Sat, 23 Jan 2010) | 1 line taking sysconfig out of distutils ........ r77752 | tarek.ziade | 2010-01-26 00:19:56 +0100 (Tue, 26 Jan 2010) | 1 line switched the call order so this call works without suffering from issue #7774 ........ Added: python/branches/py3k/Lib/sysconfig.py - copied, changed from r77704, /python/trunk/Lib/sysconfig.py python/branches/py3k/Lib/test/test_sysconfig.py - copied, changed from r77704, /python/trunk/Lib/test/test_sysconfig.py Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/distutils/ccompiler.py python/branches/py3k/Lib/distutils/command/bdist.py python/branches/py3k/Lib/distutils/command/bdist_dumb.py python/branches/py3k/Lib/distutils/command/bdist_wininst.py python/branches/py3k/Lib/distutils/command/build.py python/branches/py3k/Lib/distutils/command/build_clib.py python/branches/py3k/Lib/distutils/command/build_ext.py python/branches/py3k/Lib/distutils/command/build_scripts.py python/branches/py3k/Lib/distutils/command/config.py python/branches/py3k/Lib/distutils/command/install.py python/branches/py3k/Lib/distutils/core.py python/branches/py3k/Lib/distutils/cygwinccompiler.py python/branches/py3k/Lib/distutils/extension.py python/branches/py3k/Lib/distutils/msvc9compiler.py python/branches/py3k/Lib/distutils/sysconfig.py python/branches/py3k/Lib/distutils/tests/support.py python/branches/py3k/Lib/distutils/tests/test_build.py python/branches/py3k/Lib/distutils/tests/test_build_clib.py python/branches/py3k/Lib/distutils/tests/test_build_ext.py python/branches/py3k/Lib/distutils/tests/test_build_scripts.py python/branches/py3k/Lib/distutils/tests/test_ccompiler.py python/branches/py3k/Lib/distutils/tests/test_cygwinccompiler.py python/branches/py3k/Lib/distutils/tests/test_extension.py python/branches/py3k/Lib/distutils/tests/test_install.py python/branches/py3k/Lib/distutils/tests/test_sysconfig.py python/branches/py3k/Lib/distutils/tests/test_unixccompiler.py python/branches/py3k/Lib/distutils/tests/test_util.py python/branches/py3k/Lib/distutils/unixccompiler.py python/branches/py3k/Lib/distutils/util.py python/branches/py3k/Lib/site.py python/branches/py3k/Lib/test/test_site.py python/branches/py3k/Makefile.pre.in python/branches/py3k/setup.py Modified: python/branches/py3k/Lib/distutils/ccompiler.py ============================================================================== --- python/branches/py3k/Lib/distutils/ccompiler.py (original) +++ python/branches/py3k/Lib/distutils/ccompiler.py Fri Jan 29 12:41:03 2010 @@ -18,6 +18,58 @@ from distutils.util import split_quoted, execute from distutils import log +_sysconfig = __import__('sysconfig') + +def customize_compiler(compiler): + """Do any platform-specific customization of a CCompiler instance. + + Mainly needed on Unix, so we can plug in the information that + varies across Unices and is stored in Python's Makefile. + """ + if compiler.compiler_type == "unix": + (cc, cxx, opt, cflags, ccshared, ldshared, so_ext, ar, ar_flags) = \ + _sysconfig.get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS', + 'CCSHARED', 'LDSHARED', 'SO', 'AR', + 'ARFLAGS') + + if 'CC' in os.environ: + cc = os.environ['CC'] + if 'CXX' in os.environ: + cxx = os.environ['CXX'] + if 'LDSHARED' in os.environ: + ldshared = os.environ['LDSHARED'] + if 'CPP' in os.environ: + cpp = os.environ['CPP'] + else: + cpp = cc + " -E" # not always + if 'LDFLAGS' in os.environ: + ldshared = ldshared + ' ' + os.environ['LDFLAGS'] + if 'CFLAGS' in os.environ: + cflags = opt + ' ' + os.environ['CFLAGS'] + ldshared = ldshared + ' ' + os.environ['CFLAGS'] + if 'CPPFLAGS' in os.environ: + cpp = cpp + ' ' + os.environ['CPPFLAGS'] + cflags = cflags + ' ' + os.environ['CPPFLAGS'] + ldshared = ldshared + ' ' + os.environ['CPPFLAGS'] + if 'AR' in os.environ: + ar = os.environ['AR'] + if 'ARFLAGS' in os.environ: + archiver = ar + ' ' + os.environ['ARFLAGS'] + else: + archiver = ar + ' ' + ar_flags + + cc_cmd = cc + ' ' + cflags + compiler.set_executables( + preprocessor=cpp, + compiler=cc_cmd, + compiler_so=cc_cmd + ' ' + ccshared, + compiler_cxx=cxx, + linker_so=ldshared, + linker_exe=cc, + archiver=archiver) + + compiler.shared_lib_extension = so_ext + class CCompiler: """Abstract base class to define the interface that must be implemented by real compiler classes. Also has some utility methods used by Modified: python/branches/py3k/Lib/distutils/command/bdist.py ============================================================================== --- python/branches/py3k/Lib/distutils/command/bdist.py (original) +++ python/branches/py3k/Lib/distutils/command/bdist.py Fri Jan 29 12:41:03 2010 @@ -6,10 +6,10 @@ __revision__ = "$Id$" import os +from sysconfig import get_platform from distutils.core import Command from distutils.errors import DistutilsPlatformError, DistutilsOptionError -from distutils.util import get_platform def show_formats(): Modified: python/branches/py3k/Lib/distutils/command/bdist_dumb.py ============================================================================== --- python/branches/py3k/Lib/distutils/command/bdist_dumb.py (original) +++ python/branches/py3k/Lib/distutils/command/bdist_dumb.py Fri Jan 29 12:41:03 2010 @@ -8,11 +8,11 @@ import os +from sysconfig import get_python_version, get_platform + from distutils.core import Command -from distutils.util import get_platform from distutils.dir_util import remove_tree, ensure_relative from distutils.errors import DistutilsPlatformError -from distutils.sysconfig import get_python_version from distutils import log class bdist_dumb(Command): Modified: python/branches/py3k/Lib/distutils/command/bdist_wininst.py ============================================================================== --- python/branches/py3k/Lib/distutils/command/bdist_wininst.py (original) +++ python/branches/py3k/Lib/distutils/command/bdist_wininst.py Fri Jan 29 12:41:03 2010 @@ -8,11 +8,11 @@ import sys import os +from sysconfig import get_python_version, get_platform + from distutils.core import Command -from distutils.util import get_platform from distutils.dir_util import remove_tree from distutils.errors import DistutilsOptionError, DistutilsPlatformError -from distutils.sysconfig import get_python_version from distutils import log class bdist_wininst(Command): Modified: python/branches/py3k/Lib/distutils/command/build.py ============================================================================== --- python/branches/py3k/Lib/distutils/command/build.py (original) +++ python/branches/py3k/Lib/distutils/command/build.py Fri Jan 29 12:41:03 2010 @@ -5,9 +5,10 @@ __revision__ = "$Id$" import sys, os +from sysconfig import get_platform + from distutils.core import Command from distutils.errors import DistutilsOptionError -from distutils.util import get_platform def show_compilers(): from distutils.ccompiler import show_compilers Modified: python/branches/py3k/Lib/distutils/command/build_clib.py ============================================================================== --- python/branches/py3k/Lib/distutils/command/build_clib.py (original) +++ python/branches/py3k/Lib/distutils/command/build_clib.py Fri Jan 29 12:41:03 2010 @@ -19,7 +19,7 @@ import os from distutils.core import Command from distutils.errors import DistutilsSetupError -from distutils.sysconfig import customize_compiler +from distutils.ccompiler import customize_compiler from distutils import log def show_compilers(): Modified: python/branches/py3k/Lib/distutils/command/build_ext.py ============================================================================== --- python/branches/py3k/Lib/distutils/command/build_ext.py (original) +++ python/branches/py3k/Lib/distutils/command/build_ext.py Fri Jan 29 12:41:03 2010 @@ -9,13 +9,14 @@ import sys, os, re from warnings import warn +from sysconfig import get_platform + from distutils.core import Command -from distutils.errors import (CCompilerError, DistutilsError, CompileError, - DistutilsSetupError, DistutilsPlatformError) -from distutils.sysconfig import customize_compiler, get_python_version +from distutils.errors import * +from distutils.ccompiler import customize_compiler from distutils.dep_util import newer_group from distutils.extension import Extension -from distutils.util import get_platform + from distutils import log # this keeps compatibility from 2.3 to 2.5 @@ -172,8 +173,7 @@ self.user = None def finalize_options(self): - from distutils import sysconfig - + _sysconfig = __import__('sysconfig') self.set_undefined_options('build', ('build_lib', 'build_lib'), ('build_temp', 'build_temp'), @@ -190,8 +190,8 @@ # Make sure Python's include directories (for Python.h, pyconfig.h, # etc.) are in the include search path. - py_include = sysconfig.get_python_inc() - plat_py_include = sysconfig.get_python_inc(plat_specific=1) + py_include = _sysconfig.get_path('include') + plat_py_include = _sysconfig.get_path('platinclude') if self.include_dirs is None: self.include_dirs = self.distribution.include_dirs or [] if isinstance(self.include_dirs, str): @@ -269,7 +269,7 @@ if sys.executable.startswith(os.path.join(sys.exec_prefix, "bin")): # building third party extensions self.library_dirs.append(os.path.join(sys.prefix, "lib", - "python" + get_python_version(), + "python" + _sysconfig.get_python_version(), "config")) else: # building python standard extensions @@ -277,13 +277,13 @@ # for extensions under Linux or Solaris with a shared Python library, # Python's library directory must be appended to library_dirs - sysconfig.get_config_var('Py_ENABLE_SHARED') + _sysconfig.get_config_var('Py_ENABLE_SHARED') if ((sys.platform.startswith('linux') or sys.platform.startswith('gnu') or sys.platform.startswith('sunos')) - and sysconfig.get_config_var('Py_ENABLE_SHARED')): + and _sysconfig.get_config_var('Py_ENABLE_SHARED')): if sys.executable.startswith(os.path.join(sys.exec_prefix, "bin")): # building third party extensions - self.library_dirs.append(sysconfig.get_config_var('LIBDIR')) + self.library_dirs.append(_sysconfig.get_config_var('LIBDIR')) else: # building python standard extensions self.library_dirs.append('.') @@ -712,13 +712,13 @@ of the file from which it will be loaded (eg. "foo/bar.so", or "foo\bar.pyd"). """ - from distutils.sysconfig import get_config_var + _sysconfig = __import__('sysconfig') ext_path = ext_name.split('.') # OS/2 has an 8 character module (extension) limit :-( if os.name == "os2": ext_path[len(ext_path) - 1] = ext_path[len(ext_path) - 1][:8] # extensions in debug_mode are named 'module_d.pyd' under windows - so_ext = get_config_var('SO') + so_ext = _sysconfig.get_config_var('SO') if os.name == 'nt' and self.debug: return os.path.join(*ext_path) + '_d' + so_ext return os.path.join(*ext_path) + so_ext @@ -781,8 +781,8 @@ # Don't use the default code below return ext.libraries else: - from distutils import sysconfig - if sysconfig.get_config_var('Py_ENABLE_SHARED'): + _sysconfig = __import__('sysconfig') + if _sysconfig.get_config_var('Py_ENABLE_SHARED'): template = "python%d.%d" pythonlib = (template % (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) Modified: python/branches/py3k/Lib/distutils/command/build_scripts.py ============================================================================== --- python/branches/py3k/Lib/distutils/command/build_scripts.py (original) +++ python/branches/py3k/Lib/distutils/command/build_scripts.py Fri Jan 29 12:41:03 2010 @@ -6,7 +6,6 @@ import os, re from stat import ST_MODE -from distutils import sysconfig from distutils.core import Command from distutils.dep_util import newer from distutils.util import convert_path, Mixin2to3 @@ -57,6 +56,7 @@ ie. starts with "\#!" and contains "python"), then adjust the first line to refer to the current Python interpreter as we copy. """ + _sysconfig = __import__('sysconfig') self.mkpath(self.build_dir) outfiles = [] updated_files = [] @@ -96,16 +96,16 @@ updated_files.append(outfile) if not self.dry_run: outf = open(outfile, "w") - if not sysconfig.python_build: + if not _sysconfig.is_python_build(): outf.write("#!%s%s\n" % (self.executable, post_interp)) else: outf.write("#!%s%s\n" % (os.path.join( - sysconfig.get_config_var("BINDIR"), - "python%s%s" % (sysconfig.get_config_var("VERSION"), - sysconfig.get_config_var("EXE"))), + _sysconfig.get_config_var("BINDIR"), + "python%s%s" % (_sysconfig.get_config_var("VERSION"), + _sysconfig.get_config_var("EXE"))), post_interp)) outf.writelines(f.readlines()) outf.close() Modified: python/branches/py3k/Lib/distutils/command/config.py ============================================================================== --- python/branches/py3k/Lib/distutils/command/config.py (original) +++ python/branches/py3k/Lib/distutils/command/config.py Fri Jan 29 12:41:03 2010 @@ -16,7 +16,7 @@ from distutils.core import Command from distutils.errors import DistutilsExecError -from distutils.sysconfig import customize_compiler +from distutils.ccompiler import customize_compiler from distutils import log LANG_EXT = {"c": ".c", "c++": ".cxx"} Modified: python/branches/py3k/Lib/distutils/command/install.py ============================================================================== --- python/branches/py3k/Lib/distutils/command/install.py (original) +++ python/branches/py3k/Lib/distutils/command/install.py Fri Jan 29 12:41:03 2010 @@ -7,115 +7,25 @@ import sys import os +from sysconfig import (get_config_vars, get_platform, get_paths, get_path, + get_config_var) + from distutils import log from distutils.core import Command from distutils.debug import DEBUG -from distutils.sysconfig import get_config_vars from distutils.errors import DistutilsPlatformError from distutils.file_util import write_file -from distutils.util import convert_path, subst_vars, change_root -from distutils.util import get_platform +from distutils.util import convert_path, change_root from distutils.errors import DistutilsOptionError -# this keeps compatibility from 2.3 to 2.5 -if sys.version < "2.6": - USER_BASE = None - USER_SITE = None - HAS_USER_SITE = False -else: - from site import USER_BASE - from site import USER_SITE - HAS_USER_SITE = True - -if sys.version < "2.2": - WINDOWS_SCHEME = { - 'purelib': '$base', - 'platlib': '$base', - 'headers': '$base/Include/$dist_name', - 'scripts': '$base/Scripts', - 'data' : '$base', - } -else: - WINDOWS_SCHEME = { - 'purelib': '$base/Lib/site-packages', - 'platlib': '$base/Lib/site-packages', - 'headers': '$base/Include/$dist_name', - 'scripts': '$base/Scripts', - 'data' : '$base', - } - -INSTALL_SCHEMES = { - 'unix_prefix': { - 'purelib': '$base/lib/python$py_version_short/site-packages', - 'platlib': '$platbase/lib/python$py_version_short/site-packages', - 'headers': '$base/include/python$py_version_short/$dist_name', - 'scripts': '$base/bin', - 'data' : '$base', - }, - 'unix_home': { - 'purelib': '$base/lib/python', - 'platlib': '$base/lib/python', - 'headers': '$base/include/python/$dist_name', - 'scripts': '$base/bin', - 'data' : '$base', - }, - 'nt': WINDOWS_SCHEME, - 'mac': { - 'purelib': '$base/Lib/site-packages', - 'platlib': '$base/Lib/site-packages', - 'headers': '$base/Include/$dist_name', - 'scripts': '$base/Scripts', - 'data' : '$base', - }, - - 'os2': { - 'purelib': '$base/Lib/site-packages', - 'platlib': '$base/Lib/site-packages', - 'headers': '$base/Include/$dist_name', - 'scripts': '$base/Scripts', - 'data' : '$base', - }, - } - -# user site schemes -if HAS_USER_SITE: - INSTALL_SCHEMES['nt_user'] = { - 'purelib': '$usersite', - 'platlib': '$usersite', - 'headers': '$userbase/Python$py_version_nodot/Include/$dist_name', - 'scripts': '$userbase/Scripts', - 'data' : '$userbase', - } - - INSTALL_SCHEMES['unix_user'] = { - 'purelib': '$usersite', - 'platlib': '$usersite', - 'headers': '$userbase/include/python$py_version_short/$dist_name', - 'scripts': '$userbase/bin', - 'data' : '$userbase', - } - - INSTALL_SCHEMES['mac_user'] = { - 'purelib': '$usersite', - 'platlib': '$usersite', - 'headers': '$userbase/$py_version_short/include/$dist_name', - 'scripts': '$userbase/bin', - 'data' : '$userbase', - } - - INSTALL_SCHEMES['os2_home'] = { - 'purelib': '$usersite', - 'platlib': '$usersite', - 'headers': '$userbase/include/python$py_version_short/$dist_name', - 'scripts': '$userbase/bin', - 'data' : '$userbase', - } - -# The keys to an installation scheme; if any new types of files are to be -# installed, be sure to add an entry to every installation scheme above, -# and to SCHEME_KEYS here. -SCHEME_KEYS = ('purelib', 'platlib', 'headers', 'scripts', 'data') - +def _subst_vars(s, local_vars): + try: + return s.format(**local_vars) + except KeyError: + try: + return s.format(**os.environ) + except KeyError as var: + raise AttributeError('{%s}' % var) class install(Command): @@ -182,11 +92,10 @@ boolean_options = ['compile', 'force', 'skip-build'] - if HAS_USER_SITE: - user_options.append(('user', None, - "install in user site-package '%s'" % USER_SITE)) - boolean_options.append('user') - + user_options.append(('user', None, + "install in user site-package '%s'" % \ + get_path('purelib', '%s_user' % os.name))) + boolean_options.append('user') negative_opt = {'no-compile' : 'compile'} @@ -216,8 +125,8 @@ self.install_lib = None # set to either purelib or platlib self.install_scripts = None self.install_data = None - self.install_userbase = USER_BASE - self.install_usersite = USER_SITE + self.install_userbase = get_config_var('userbase') + self.install_usersite = get_path('purelib', '%s_user' % os.name) self.compile = None self.optimize = None @@ -327,7 +236,9 @@ # about needing recursive variable expansion (shudder). py_version = sys.version.split()[0] - (prefix, exec_prefix) = get_config_vars('prefix', 'exec_prefix') + prefix, exec_prefix, srcdir = get_config_vars('prefix', 'exec_prefix', + 'srcdir') + self.config_vars = {'dist_name': self.distribution.get_name(), 'dist_version': self.distribution.get_version(), 'dist_fullname': self.distribution.get_fullname(), @@ -338,12 +249,11 @@ 'prefix': prefix, 'sys_exec_prefix': exec_prefix, 'exec_prefix': exec_prefix, + 'srcdir': srcdir, } - if HAS_USER_SITE: - self.config_vars['userbase'] = self.install_userbase - self.config_vars['usersite'] = self.install_usersite - + self.config_vars['userbase'] = self.install_userbase + self.config_vars['usersite'] = self.install_usersite self.expand_basedirs() self.dump_dirs("post-expand_basedirs()") @@ -447,10 +357,10 @@ raise DistutilsPlatformError( "User base directory is not specified") self.install_base = self.install_platbase = self.install_userbase - self.select_scheme("unix_user") + self.select_scheme("posix_user") elif self.home is not None: self.install_base = self.install_platbase = self.home - self.select_scheme("unix_home") + self.select_scheme("posix_home") else: if self.prefix is None: if self.exec_prefix is not None: @@ -466,7 +376,7 @@ self.install_base = self.prefix self.install_platbase = self.exec_prefix - self.select_scheme("unix_prefix") + self.select_scheme("posix_prefix") def finalize_other(self): """Finalizes options for non-posix platforms""" @@ -478,7 +388,7 @@ self.select_scheme(os.name + "_user") elif self.home is not None: self.install_base = self.install_platbase = self.home - self.select_scheme("unix_home") + self.select_scheme("posix_home") else: if self.prefix is None: self.prefix = os.path.normpath(sys.prefix) @@ -493,11 +403,15 @@ def select_scheme(self, name): """Sets the install directories by applying the install schemes.""" # it's the caller's problem if they supply a bad name! - scheme = INSTALL_SCHEMES[name] - for key in SCHEME_KEYS: + scheme = get_paths(name, expand=False) + for key, value in scheme.items(): + if key == 'platinclude': + key = 'headers' + value = os.path.join(value, self.distribution.get_name()) attrname = 'install_' + key - if getattr(self, attrname) is None: - setattr(self, attrname, scheme[key]) + if hasattr(self, attrname): + if getattr(self, attrname) is None: + setattr(self, attrname, value) def _expand_attrs(self, attrs): for attr in attrs: @@ -505,7 +419,10 @@ if val is not None: if os.name == 'posix' or os.name == 'nt': val = os.path.expanduser(val) - val = subst_vars(val, self.config_vars) + try: + val = _subst_vars(val, self.config_vars) + except: + import pdb; pdb.set_trace() setattr(self, attr, val) def expand_basedirs(self): Modified: python/branches/py3k/Lib/distutils/core.py ============================================================================== --- python/branches/py3k/Lib/distutils/core.py (original) +++ python/branches/py3k/Lib/distutils/core.py Fri Jan 29 12:41:03 2010 @@ -35,7 +35,7 @@ def gen_usage(script_name): script = os.path.basename(script_name) - return USAGE % vars() + return USAGE % {'script': script} # Some mild magic to control the behaviour of 'setup()' from 'run_setup()'. Modified: python/branches/py3k/Lib/distutils/cygwinccompiler.py ============================================================================== --- python/branches/py3k/Lib/distutils/cygwinccompiler.py (original) +++ python/branches/py3k/Lib/distutils/cygwinccompiler.py Fri Jan 29 12:41:03 2010 @@ -337,7 +337,7 @@ # XXX since this function also checks sys.version, it's not strictly a # "pyconfig.h" check -- should probably be renamed... - from distutils import sysconfig + _sysconfig = __import__('sysconfig') # if sys.version contains GCC then python was compiled with GCC, and the # pyconfig.h file should be OK @@ -345,7 +345,7 @@ return CONFIG_H_OK, "sys.version mentions 'GCC'" # let's see if __GNUC__ is mentioned in python.h - fn = sysconfig.get_config_h_filename() + fn = _sysconfig.get_config_h_filename() try: with open(fn) as config_h: if "__GNUC__" in config_h.read(): Modified: python/branches/py3k/Lib/distutils/extension.py ============================================================================== --- python/branches/py3k/Lib/distutils/extension.py (original) +++ python/branches/py3k/Lib/distutils/extension.py Fri Jan 29 12:41:03 2010 @@ -134,14 +134,17 @@ def read_setup_file(filename): """Reads a Setup file and returns Extension instances.""" - from distutils.sysconfig import (parse_makefile, expand_makefile_vars, + warnings.warn('distutils.extensions.read_setup_file is deprecated. ' + 'It will be removed in the next Python release.') + _sysconfig = __import__('sysconfig') + from distutils.sysconfig import (expand_makefile_vars, _variable_rx) from distutils.text_file import TextFile from distutils.util import split_quoted # First pass over the file to gather "VAR = VALUE" assignments. - vars = parse_makefile(filename) + vars = _sysconfig._parse_makefile(filename) # Second pass to gobble up the real content: lines of the form # ... [ ...] [ ...] [ ...] @@ -161,7 +164,10 @@ file.warn("'%s' lines not handled yet" % line) continue - line = expand_makefile_vars(line, vars) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + line = expand_makefile_vars(line, vars) + words = split_quoted(line) # NB. this parses a slightly different syntax than the old Modified: python/branches/py3k/Lib/distutils/msvc9compiler.py ============================================================================== --- python/branches/py3k/Lib/distutils/msvc9compiler.py (original) +++ python/branches/py3k/Lib/distutils/msvc9compiler.py Fri Jan 29 12:41:03 2010 @@ -23,10 +23,10 @@ CompileError, LibError, LinkError) from distutils.ccompiler import CCompiler, gen_lib_options from distutils import log -from distutils.util import get_platform - import winreg +_sysconfig = __import__('sysconfig') + RegOpenKeyEx = winreg.OpenKeyEx RegEnumKey = winreg.EnumKey RegEnumValue = winreg.EnumValue @@ -327,7 +327,7 @@ # multi-init means we would need to check platform same each time... assert not self.initialized, "don't init multiple times" if plat_name is None: - plat_name = get_platform() + plat_name = _sysconfig.get_platform() # sanity check for platforms to prevent obscure errors later. ok_plats = 'win32', 'win-amd64', 'win-ia64' if plat_name not in ok_plats: @@ -348,12 +348,12 @@ # On AMD64, 'vcvars32.bat amd64' is a native build env; to cross # compile use 'x86' (ie, it runs the x86 compiler directly) # No idea how itanium handles this, if at all. - if plat_name == get_platform() or plat_name == 'win32': + if plat_name == _sysconfig.get_platform() or plat_name == 'win32': # native build or cross-compile to win32 plat_spec = PLAT_TO_VCVARS[plat_name] else: # cross compile from win32 -> some 64bit - plat_spec = PLAT_TO_VCVARS[get_platform()] + '_' + \ + plat_spec = PLAT_TO_VCVARS[_sysconfig.get_platform()] + '_' + \ PLAT_TO_VCVARS[plat_name] vc_env = query_vcvarsall(VERSION, plat_spec) Modified: python/branches/py3k/Lib/distutils/sysconfig.py ============================================================================== --- python/branches/py3k/Lib/distutils/sysconfig.py (original) +++ python/branches/py3k/Lib/distutils/sysconfig.py Fri Jan 29 12:41:03 2010 @@ -7,6 +7,9 @@ Written by: Fred L. Drake, Jr. Email: + +**This module has been moved out of Distutils and will be removed from +Python in the next version (3.2)** """ __revision__ = "$Id$" @@ -14,51 +17,36 @@ import io import os import re -import sys +from warnings import warn -from .errors import DistutilsPlatformError +from distutils.errors import DistutilsPlatformError -# These are needed in a couple of spots, so just compute them once. -PREFIX = os.path.normpath(sys.prefix) -EXEC_PREFIX = os.path.normpath(sys.exec_prefix) - -# Path to the base directory of the project. On Windows the binary may -# live in project/PCBuild9. If we're dealing with an x64 Windows build, -# it'll live in project/PCbuild/amd64. -project_base = os.path.dirname(os.path.abspath(sys.executable)) -if os.name == "nt" and "pcbuild" in project_base[-8:].lower(): - project_base = os.path.abspath(os.path.join(project_base, os.path.pardir)) -# PC/VS7.1 -if os.name == "nt" and "\\pc\\v" in project_base[-10:].lower(): - project_base = os.path.abspath(os.path.join(project_base, os.path.pardir, - os.path.pardir)) -# PC/AMD64 -if os.name == "nt" and "\\pcbuild\\amd64" in project_base[-14:].lower(): - project_base = os.path.abspath(os.path.join(project_base, os.path.pardir, - os.path.pardir)) - -# python_build: (Boolean) if true, we're either building Python or -# building an extension with an un-installed Python, so we use -# different (hard-wired) directories. -# Setup.local is available for Makefile builds including VPATH builds, -# Setup.dist is available on Windows -def _python_build(): - for fn in ("Setup.dist", "Setup.local"): - if os.path.isfile(os.path.join(project_base, "Modules", fn)): - return True - return False -python_build = _python_build() +# importing sysconfig from Lib +# to avoid this module to shadow it +_sysconfig = __import__('sysconfig') -def get_python_version(): - """Return a string containing the major and minor Python version, - leaving off the patchlevel. Sample return values could be '1.5' - or '2.2'. - """ - return sys.version[:3] +_DEPRECATION_MSG = ("distutils.sysconfig.%s is deprecated. " + "Use the APIs provided by the sysconfig module instead") + +def _get_project_base(): + return _sysconfig._PROJECT_BASE +project_base = _get_project_base() + +class _DeprecatedBool(int): + def __nonzero__(self): + warn(_DEPRECATION_MSG % 'get_python_version', DeprecationWarning) + return super(_DeprecatedBool, self).__nonzero__() + +def _python_build(): + return _DeprecatedBool(_sysconfig.is_python_build()) + +python_build = _python_build() def get_python_inc(plat_specific=0, prefix=None): - """Return the directory containing installed Python header files. + """This function is deprecated. + + Return the directory containing installed Python header files. If 'plat_specific' is false (the default), this is the path to the non-platform-specific header files, i.e. Python.h and so on; @@ -68,39 +56,22 @@ If 'prefix' is supplied, use it instead of sys.prefix or sys.exec_prefix -- i.e., ignore 'plat_specific'. """ - if prefix is None: - prefix = plat_specific and EXEC_PREFIX or PREFIX - if os.name == "posix": - if python_build: - # Assume the executable is in the build directory. The - # pyconfig.h file should be in the same directory. Since - # the build directory may not be the source directory, we - # must use "srcdir" from the makefile to find the "Include" - # directory. - base = os.path.dirname(os.path.abspath(sys.executable)) - if plat_specific: - return base - else: - incdir = os.path.join(get_config_var('srcdir'), 'Include') - return os.path.normpath(incdir) - return os.path.join(prefix, "include", "python" + get_python_version()) - elif os.name == "nt": - return os.path.join(prefix, "include") - elif os.name == "mac": - if plat_specific: - return os.path.join(prefix, "Mac", "Include") - else: - return os.path.join(prefix, "Include") - elif os.name == "os2": - return os.path.join(prefix, "Include") + warn(_DEPRECATION_MSG % 'get_python_inc', DeprecationWarning) + get_path = _sysconfig.get_path + + if prefix is not None: + vars = {'base': prefix} + return get_path('include', vars=vars) + + if not plat_specific: + return get_path('include') else: - raise DistutilsPlatformError( - "I don't know where Python installs its C header files " - "on platform '%s'" % os.name) + return get_path('platinclude') +def get_python_lib(plat_specific=False, standard_lib=False, prefix=None): + """This function is deprecated. -def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): - """Return the directory containing the Python library (standard or + Return the directory containing the Python library (standard or site additions). If 'plat_specific' is true, return the directory containing @@ -113,149 +84,33 @@ If 'prefix' is supplied, use it instead of sys.prefix or sys.exec_prefix -- i.e., ignore 'plat_specific'. """ - if prefix is None: - prefix = plat_specific and EXEC_PREFIX or PREFIX - - if os.name == "posix": - libpython = os.path.join(prefix, - "lib", "python" + get_python_version()) - if standard_lib: - return libpython - else: - return os.path.join(libpython, "site-packages") - elif os.name == "nt": - if standard_lib: - return os.path.join(prefix, "Lib") - else: - if get_python_version() < "2.2": - return prefix - else: - return os.path.join(prefix, "Lib", "site-packages") - elif os.name == "mac": + warn(_DEPRECATION_MSG % 'get_python_lib', DeprecationWarning) + vars = {} + get_path = _sysconfig.get_path + if prefix is not None: if plat_specific: - if standard_lib: - return os.path.join(prefix, "Lib", "lib-dynload") - else: - return os.path.join(prefix, "Lib", "site-packages") + vars['platbase'] = prefix else: - if standard_lib: - return os.path.join(prefix, "Lib") - else: - return os.path.join(prefix, "Lib", "site-packages") - elif os.name == "os2": - if standard_lib: - return os.path.join(prefix, "Lib") + vars['base'] = prefix + if standard_lib: + if plat_specific: + return get_path('platstdlib', vars=vars) else: - return os.path.join(prefix, "Lib", "site-packages") + return get_path('stdlib', vars=vars) else: - raise DistutilsPlatformError( - "I don't know where Python installs its library " - "on platform '%s'" % os.name) - - -def customize_compiler(compiler): - """Do any platform-specific customization of a CCompiler instance. - - Mainly needed on Unix, so we can plug in the information that - varies across Unices and is stored in Python's Makefile. - """ - if compiler.compiler_type == "unix": - (cc, cxx, opt, cflags, ccshared, ldshared, so_ext, ar, ar_flags) = \ - get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS', - 'CCSHARED', 'LDSHARED', 'SO', 'AR', 'ARFLAGS') - - if 'CC' in os.environ: - cc = os.environ['CC'] - if 'CXX' in os.environ: - cxx = os.environ['CXX'] - if 'LDSHARED' in os.environ: - ldshared = os.environ['LDSHARED'] - if 'CPP' in os.environ: - cpp = os.environ['CPP'] - else: - cpp = cc + " -E" # not always - if 'LDFLAGS' in os.environ: - ldshared = ldshared + ' ' + os.environ['LDFLAGS'] - if 'CFLAGS' in os.environ: - cflags = opt + ' ' + os.environ['CFLAGS'] - ldshared = ldshared + ' ' + os.environ['CFLAGS'] - if 'CPPFLAGS' in os.environ: - cpp = cpp + ' ' + os.environ['CPPFLAGS'] - cflags = cflags + ' ' + os.environ['CPPFLAGS'] - ldshared = ldshared + ' ' + os.environ['CPPFLAGS'] - if 'AR' in os.environ: - ar = os.environ['AR'] - if 'ARFLAGS' in os.environ: - archiver = ar + ' ' + os.environ['ARFLAGS'] - else: - archiver = ar + ' ' + ar_flags - - cc_cmd = cc + ' ' + cflags - compiler.set_executables( - preprocessor=cpp, - compiler=cc_cmd, - compiler_so=cc_cmd + ' ' + ccshared, - compiler_cxx=cxx, - linker_so=ldshared, - linker_exe=cc, - archiver=archiver) - - compiler.shared_lib_extension = so_ext - - -def get_config_h_filename(): - """Return full pathname of installed pyconfig.h file.""" - if python_build: - if os.name == "nt": - inc_dir = os.path.join(project_base, "PC") + if plat_specific: + return get_path('platlib', vars=vars) else: - inc_dir = project_base - else: - inc_dir = get_python_inc(plat_specific=1) - if get_python_version() < '2.2': - config_h = 'config.h' - else: - # The name of the config.h file changed in 2.2 - config_h = 'pyconfig.h' - return os.path.join(inc_dir, config_h) - + return get_path('purelib', vars=vars) def get_makefile_filename(): - """Return full pathname of installed Makefile from the Python build.""" - if python_build: - return os.path.join(os.path.dirname(sys.executable), "Makefile") - lib_dir = get_python_lib(plat_specific=1, standard_lib=1) - return os.path.join(lib_dir, "config", "Makefile") + """This function is deprecated. - -def parse_config_h(fp, g=None): - """Parse a config.h-style file. - - A dictionary containing name/value pairs is returned. If an - optional dictionary is passed in as the second argument, it is - used instead of a new dictionary. + Return full pathname of installed Makefile from the Python build. """ - if g is None: - g = {} - define_rx = re.compile("#define ([A-Z][A-Za-z0-9_]+) (.*)\n") - undef_rx = re.compile("/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/\n") - # - while True: - line = fp.readline() - if not line: - break - m = define_rx.match(line) - if m: - n, v = m.group(1, 2) - try: v = int(v) - except ValueError: pass - g[n] = v - else: - m = undef_rx.match(line) - if m: - g[m.group(1)] = 0 - return g + warn(_DEPRECATION_MSG % 'get_makefile_filename', DeprecationWarning) + return _sysconfig._get_makefile_filename() # Regexes needed for parsing Makefile (and similar syntaxes, # like old-style Setup files). @@ -264,91 +119,29 @@ _findvar2_rx = re.compile(r"\${([A-Za-z][A-Za-z0-9_]*)}") def parse_makefile(fn, g=None): - """Parse a Makefile-style file. + """This function is deprecated. + + Parse a Makefile-style file. A dictionary containing name/value pairs is returned. If an optional dictionary is passed in as the second argument, it is used instead of a new dictionary. """ - from distutils.text_file import TextFile - fp = TextFile(fn, strip_comments=1, skip_blanks=1, join_lines=1) - - if g is None: - g = {} - done = {} - notdone = {} - - while True: - line = fp.readline() - if line is None: # eof - break - m = _variable_rx.match(line) - if m: - n, v = m.group(1, 2) - v = v.strip() - # `$$' is a literal `$' in make - tmpv = v.replace('$$', '') - - if "$" in tmpv: - notdone[n] = v - else: - try: - v = int(v) - except ValueError: - # insert literal `$' - done[n] = v.replace('$$', '$') - else: - done[n] = v - - # do variable interpolation here - while notdone: - for name in list(notdone): - value = notdone[name] - m = _findvar1_rx.search(value) or _findvar2_rx.search(value) - if m: - n = m.group(1) - found = True - if n in done: - item = str(done[n]) - elif n in notdone: - # get it on a subsequent round - found = False - elif n in os.environ: - # do it like make: fall back to environment - item = os.environ[n] - else: - done[n] = item = "" - if found: - after = value[m.end():] - value = value[:m.start()] + item + after - if "$" in after: - notdone[name] = value - else: - try: value = int(value) - except ValueError: - done[name] = value.strip() - else: - done[name] = value - del notdone[name] - else: - # bogus variable reference; just drop it since we can't deal - del notdone[name] - - fp.close() - - # save the results in the global dictionary - g.update(done) - return g - + warn(_DEPRECATION_MSG % 'parse_makefile', DeprecationWarning) + return _sysconfig._parse_makefile(fn, g) def expand_makefile_vars(s, vars): - """Expand Makefile-style variables -- "${foo}" or "$(foo)" -- in + """This function is deprecated. + + Expand Makefile-style variables -- "${foo}" or "$(foo)" -- in 'string' according to 'vars' (a dictionary mapping variable names to values). Variables not present in 'vars' are silently expanded to the empty string. The variable values in 'vars' should not contain further variable expansions; if 'vars' is the output of 'parse_makefile()', you're fine. Returns a variable-expanded version of 's'. """ + warn('this function will be removed in then next version of Python', + DeprecationWarning) # This algorithm does multiple expansion, so if vars['foo'] contains # "${bar}", it will expand ${foo} to ${bar}, and then expand @@ -364,220 +157,3 @@ else: break return s - - -_config_vars = None - -def _init_posix(): - """Initialize the module as appropriate for POSIX systems.""" - g = {} - # load the installed Makefile: - try: - filename = get_makefile_filename() - parse_makefile(filename, g) - except IOError as msg: - my_msg = "invalid Python installation: unable to open %s" % filename - if hasattr(msg, "strerror"): - my_msg = my_msg + " (%s)" % msg.strerror - - raise DistutilsPlatformError(my_msg) - - # load the installed pyconfig.h: - try: - filename = get_config_h_filename() - parse_config_h(io.open(filename), g) - except IOError as msg: - my_msg = "invalid Python installation: unable to open %s" % filename - if hasattr(msg, "strerror"): - my_msg = my_msg + " (%s)" % msg.strerror - - raise DistutilsPlatformError(my_msg) - - # On MacOSX we need to check the setting of the environment variable - # MACOSX_DEPLOYMENT_TARGET: configure bases some choices on it so - # it needs to be compatible. - # If it isn't set we set it to the configure-time value - if sys.platform == 'darwin' and 'MACOSX_DEPLOYMENT_TARGET' in g: - cfg_target = g['MACOSX_DEPLOYMENT_TARGET'] - cur_target = os.getenv('MACOSX_DEPLOYMENT_TARGET', '') - if cur_target == '': - cur_target = cfg_target - os.putenv('MACOSX_DEPLOYMENT_TARGET', cfg_target) - elif [int(x) for x in cfg_target.split('.')] > [int(x) for x in cur_target.split('.')]: - my_msg = ('$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configure' - % (cur_target, cfg_target)) - raise DistutilsPlatformError(my_msg) - - # On AIX, there are wrong paths to the linker scripts in the Makefile - # -- these paths are relative to the Python source, but when installed - # the scripts are in another directory. - if python_build: - g['LDSHARED'] = g['BLDSHARED'] - - elif get_python_version() < '2.1': - # The following two branches are for 1.5.2 compatibility. - if sys.platform == 'aix4': # what about AIX 3.x ? - # Linker script is in the config directory, not in Modules as the - # Makefile says. - python_lib = get_python_lib(standard_lib=1) - ld_so_aix = os.path.join(python_lib, 'config', 'ld_so_aix') - python_exp = os.path.join(python_lib, 'config', 'python.exp') - - g['LDSHARED'] = "%s %s -bI:%s" % (ld_so_aix, g['CC'], python_exp) - - global _config_vars - _config_vars = g - - -def _init_nt(): - """Initialize the module as appropriate for NT""" - g = {} - # set basic install directories - g['LIBDEST'] = get_python_lib(plat_specific=0, standard_lib=1) - g['BINLIBDEST'] = get_python_lib(plat_specific=1, standard_lib=1) - - # XXX hmmm.. a normal install puts include files here - g['INCLUDEPY'] = get_python_inc(plat_specific=0) - - g['SO'] = '.pyd' - g['EXE'] = ".exe" - g['VERSION'] = get_python_version().replace(".", "") - g['BINDIR'] = os.path.dirname(os.path.abspath(sys.executable)) - - global _config_vars - _config_vars = g - - -def _init_mac(): - """Initialize the module as appropriate for Macintosh systems""" - g = {} - # set basic install directories - g['LIBDEST'] = get_python_lib(plat_specific=0, standard_lib=1) - g['BINLIBDEST'] = get_python_lib(plat_specific=1, standard_lib=1) - - # XXX hmmm.. a normal install puts include files here - g['INCLUDEPY'] = get_python_inc(plat_specific=0) - - import MacOS - if not hasattr(MacOS, 'runtimemodel'): - g['SO'] = '.ppc.slb' - else: - g['SO'] = '.%s.slb' % MacOS.runtimemodel - - # XXX are these used anywhere? - g['install_lib'] = os.path.join(EXEC_PREFIX, "Lib") - g['install_platlib'] = os.path.join(EXEC_PREFIX, "Mac", "Lib") - - # These are used by the extension module build - g['srcdir'] = ':' - global _config_vars - _config_vars = g - - -def _init_os2(): - """Initialize the module as appropriate for OS/2""" - g = {} - # set basic install directories - g['LIBDEST'] = get_python_lib(plat_specific=0, standard_lib=1) - g['BINLIBDEST'] = get_python_lib(plat_specific=1, standard_lib=1) - - # XXX hmmm.. a normal install puts include files here - g['INCLUDEPY'] = get_python_inc(plat_specific=0) - - g['SO'] = '.pyd' - g['EXE'] = ".exe" - - global _config_vars - _config_vars = g - - -def get_config_vars(*args): - """With no arguments, return a dictionary of all configuration - variables relevant for the current platform. Generally this includes - everything needed to build extensions and install both pure modules and - extensions. On Unix, this means every variable defined in Python's - installed Makefile; on Windows and Mac OS it's a much smaller set. - - With arguments, return a list of values that result from looking up - each argument in the configuration variable dictionary. - """ - global _config_vars - if _config_vars is None: - func = globals().get("_init_" + os.name) - if func: - func() - else: - _config_vars = {} - - # Normalized versions of prefix and exec_prefix are handy to have; - # in fact, these are the standard versions used most places in the - # Distutils. - _config_vars['prefix'] = PREFIX - _config_vars['exec_prefix'] = EXEC_PREFIX - - # Convert srcdir into an absolute path if it appears necessary. - # Normally it is relative to the build directory. However, during - # testing, for example, we might be running a non-installed python - # from a different directory. - if python_build and os.name == "posix": - base = os.path.dirname(os.path.abspath(sys.executable)) - if (not os.path.isabs(_config_vars['srcdir']) and - base != os.getcwd()): - # srcdir is relative and we are not in the same directory - # as the executable. Assume executable is in the build - # directory and make srcdir absolute. - srcdir = os.path.join(base, _config_vars['srcdir']) - _config_vars['srcdir'] = os.path.normpath(srcdir) - - if sys.platform == 'darwin': - kernel_version = os.uname()[2] # Kernel version (8.4.3) - major_version = int(kernel_version.split('.')[0]) - - if major_version < 8: - # On Mac OS X before 10.4, check if -arch and -isysroot - # are in CFLAGS or LDFLAGS and remove them if they are. - # This is needed when building extensions on a 10.3 system - # using a universal build of python. - for key in ('LDFLAGS', 'BASECFLAGS', - # a number of derived variables. These need to be - # patched up as well. - 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): - flags = _config_vars[key] - flags = re.sub('-arch\s+\w+\s', ' ', flags, re.ASCII) - flags = re.sub('-isysroot [^ \t]*', ' ', flags) - _config_vars[key] = flags - - else: - - # Allow the user to override the architecture flags using - # an environment variable. - # NOTE: This name was introduced by Apple in OSX 10.5 and - # is used by several scripting languages distributed with - # that OS release. - - if 'ARCHFLAGS' in os.environ: - arch = os.environ['ARCHFLAGS'] - for key in ('LDFLAGS', 'BASECFLAGS', - # a number of derived variables. These need to be - # patched up as well. - 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): - - flags = _config_vars[key] - flags = re.sub('-arch\s+\w+\s', ' ', flags) - flags = flags + ' ' + arch - _config_vars[key] = flags - - if args: - vals = [] - for name in args: - vals.append(_config_vars.get(name)) - return vals - else: - return _config_vars - -def get_config_var(name): - """Return the value of a single variable using the dictionary - returned by 'get_config_vars()'. Equivalent to - get_config_vars().get(name) - """ - return get_config_vars().get(name) Modified: python/branches/py3k/Lib/distutils/tests/support.py ============================================================================== --- python/branches/py3k/Lib/distutils/tests/support.py (original) +++ python/branches/py3k/Lib/distutils/tests/support.py Fri Jan 29 12:41:03 2010 @@ -3,11 +3,19 @@ import shutil import tempfile from copy import deepcopy +import warnings from distutils import log from distutils.log import DEBUG, INFO, WARN, ERROR, FATAL from distutils.core import Distribution +def capture_warnings(func): + def _capture_warnings(*args, **kw): + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + return func(*args, **kw) + return _capture_warnings + class LoggingSilencer(object): def setUp(self): Modified: python/branches/py3k/Lib/distutils/tests/test_build.py ============================================================================== --- python/branches/py3k/Lib/distutils/tests/test_build.py (original) +++ python/branches/py3k/Lib/distutils/tests/test_build.py Fri Jan 29 12:41:03 2010 @@ -5,7 +5,7 @@ from distutils.command.build import build from distutils.tests import support -from distutils.util import get_platform +from sysconfig import get_platform class BuildTestCase(support.TempdirManager, support.LoggingSilencer, Modified: python/branches/py3k/Lib/distutils/tests/test_build_clib.py ============================================================================== --- python/branches/py3k/Lib/distutils/tests/test_build_clib.py (original) +++ python/branches/py3k/Lib/distutils/tests/test_build_clib.py Fri Jan 29 12:41:03 2010 @@ -120,8 +120,7 @@ # before we run the command, we want to make sure # all commands are present on the system # by creating a compiler and checking its executables - from distutils.ccompiler import new_compiler - from distutils.sysconfig import customize_compiler + from distutils.ccompiler import new_compiler, customize_compiler compiler = new_compiler() customize_compiler(compiler) Modified: python/branches/py3k/Lib/distutils/tests/test_build_ext.py ============================================================================== --- python/branches/py3k/Lib/distutils/tests/test_build_ext.py (original) +++ python/branches/py3k/Lib/distutils/tests/test_build_ext.py Fri Jan 29 12:41:03 2010 @@ -9,7 +9,7 @@ from distutils.core import Extension, Distribution from distutils.command.build_ext import build_ext -from distutils import sysconfig +import sysconfig from distutils.tests.support import TempdirManager from distutils.tests.support import LoggingSilencer from distutils.extension import Extension @@ -105,17 +105,17 @@ old = sys.platform sys.platform = 'sunos' # fooling finalize_options - from distutils.sysconfig import _config_vars - old_var = _config_vars.get('Py_ENABLE_SHARED') - _config_vars['Py_ENABLE_SHARED'] = 1 + from sysconfig import _CONFIG_VARS + old_var = _CONFIG_VARS.get('Py_ENABLE_SHARED') + _CONFIG_VARS['Py_ENABLE_SHARED'] = 1 try: cmd.ensure_finalized() finally: sys.platform = old if old_var is None: - del _config_vars['Py_ENABLE_SHARED'] + del _CONFIG_VARS['Py_ENABLE_SHARED'] else: - _config_vars['Py_ENABLE_SHARED'] = old_var + _CONFIG_VARS['Py_ENABLE_SHARED'] = old_var # make sure we get some library dirs under solaris self.assertTrue(len(cmd.library_dirs) > 0) @@ -177,11 +177,10 @@ cmd = build_ext(dist) cmd.finalize_options() - from distutils import sysconfig - py_include = sysconfig.get_python_inc() + py_include = sysconfig.get_path('include') self.assertTrue(py_include in cmd.include_dirs) - plat_py_include = sysconfig.get_python_inc(plat_specific=1) + plat_py_include = sysconfig.get_path('platinclude') self.assertTrue(plat_py_include in cmd.include_dirs) # make sure cmd.libraries is turned into a list Modified: python/branches/py3k/Lib/distutils/tests/test_build_scripts.py ============================================================================== --- python/branches/py3k/Lib/distutils/tests/test_build_scripts.py (original) +++ python/branches/py3k/Lib/distutils/tests/test_build_scripts.py Fri Jan 29 12:41:03 2010 @@ -5,7 +5,7 @@ from distutils.command.build_scripts import build_scripts from distutils.core import Distribution -from distutils import sysconfig +import sysconfig from distutils.tests import support @@ -91,12 +91,12 @@ # --with-suffix=3`, python is compiled okay but the build scripts # failed when writing the name of the executable old = sysconfig.get_config_vars().get('VERSION') - sysconfig._config_vars['VERSION'] = 4 + sysconfig._CONFIG_VARS['VERSION'] = 4 try: cmd.run() finally: if old is not None: - sysconfig._config_vars['VERSION'] = old + sysconfig._CONFIG_VARS['VERSION'] = old built = os.listdir(target) for name in expected: Modified: python/branches/py3k/Lib/distutils/tests/test_ccompiler.py ============================================================================== --- python/branches/py3k/Lib/distutils/tests/test_ccompiler.py (original) +++ python/branches/py3k/Lib/distutils/tests/test_ccompiler.py Fri Jan 29 12:41:03 2010 @@ -3,8 +3,10 @@ import unittest from test.support import captured_stdout -from distutils.ccompiler import gen_lib_options, CCompiler +from distutils.ccompiler import (gen_lib_options, CCompiler, + get_default_compiler, customize_compiler) from distutils import debug +from distutils.tests import support class FakeCompiler(object): def library_dir_option(self, dir): @@ -19,7 +21,7 @@ def library_option(self, lib): return "-l" + lib -class CCompilerTestCase(unittest.TestCase): +class CCompilerTestCase(support.EnvironGuard, unittest.TestCase): def test_gen_lib_options(self): compiler = FakeCompiler() @@ -52,6 +54,26 @@ finally: debug.DEBUG = False + def test_customize_compiler(self): + + # not testing if default compiler is not unix + if get_default_compiler() != 'unix': + return + + os.environ['AR'] = 'my_ar' + os.environ['ARFLAGS'] = '-arflags' + + # make sure AR gets caught + class compiler: + compiler_type = 'unix' + + def set_executables(self, **kw): + self.exes = kw + + comp = compiler() + customize_compiler(comp) + self.assertEquals(comp.exes['archiver'], 'my_ar -arflags') + def test_suite(): return unittest.makeSuite(CCompilerTestCase) Modified: python/branches/py3k/Lib/distutils/tests/test_cygwinccompiler.py ============================================================================== --- python/branches/py3k/Lib/distutils/tests/test_cygwinccompiler.py (original) +++ python/branches/py3k/Lib/distutils/tests/test_cygwinccompiler.py Fri Jan 29 12:41:03 2010 @@ -4,6 +4,7 @@ import os import subprocess import warnings +import sysconfig from test.support import check_warnings from test.support import captured_stdout @@ -23,13 +24,11 @@ super(CygwinCCompilerTestCase, self).setUp() self.version = sys.version self.python_h = os.path.join(self.mkdtemp(), 'python.h') - from distutils import sysconfig self.old_get_config_h_filename = sysconfig.get_config_h_filename sysconfig.get_config_h_filename = self._get_config_h_filename def tearDown(self): sys.version = self.version - from distutils import sysconfig sysconfig.get_config_h_filename = self.old_get_config_h_filename super(CygwinCCompilerTestCase, self).tearDown() Modified: python/branches/py3k/Lib/distutils/tests/test_extension.py ============================================================================== --- python/branches/py3k/Lib/distutils/tests/test_extension.py (original) +++ python/branches/py3k/Lib/distutils/tests/test_extension.py Fri Jan 29 12:41:03 2010 @@ -5,9 +5,11 @@ from test.support import check_warnings from distutils.extension import read_setup_file, Extension +from distutils.tests.support import capture_warnings class ExtensionTestCase(unittest.TestCase): + @capture_warnings def test_read_setup_file(self): # trying to read a Setup file # (sample extracted from the PyGame project) Modified: python/branches/py3k/Lib/distutils/tests/test_install.py ============================================================================== --- python/branches/py3k/Lib/distutils/tests/test_install.py (original) +++ python/branches/py3k/Lib/distutils/tests/test_install.py Fri Jan 29 12:41:03 2010 @@ -5,12 +5,14 @@ import sys import unittest import site +import sysconfig +from sysconfig import (get_scheme_names, _CONFIG_VARS, _INSTALL_SCHEMES, + get_config_var, get_path) from test.support import captured_stdout from distutils.command.install import install from distutils.command import install as install_module -from distutils.command.install import INSTALL_SCHEMES from distutils.core import Distribution from distutils.errors import DistutilsOptionError @@ -36,9 +38,23 @@ build_lib=os.path.join(builddir, "lib"), ) - cmd = install(dist) - cmd.home = destination - cmd.ensure_finalized() + + + posix_prefix = _INSTALL_SCHEMES['posix_prefix'] + old_posix_prefix = posix_prefix['platinclude'] + posix_prefix['platinclude'] = \ + '{platbase}/include/python{py_version_short}' + + posix_home = _INSTALL_SCHEMES['posix_home'] + old_posix_home = posix_home['platinclude'] + posix_home['platinclude'] = '{base}/include/python' + try: + cmd = install(dist) + cmd.home = destination + cmd.ensure_finalized() + finally: + posix_home['platinclude'] = old_posix_home + posix_prefix['platinclude'] = old_posix_prefix self.assertEqual(cmd.install_base, destination) self.assertEqual(cmd.install_platbase, destination) @@ -63,18 +79,19 @@ return # preparing the environement for the test - self.old_user_base = site.USER_BASE - self.old_user_site = site.USER_SITE + self.old_user_base = get_config_var('userbase') + self.old_user_site = get_path('purelib', '%s_user' % os.name) self.tmpdir = self.mkdtemp() self.user_base = os.path.join(self.tmpdir, 'B') self.user_site = os.path.join(self.tmpdir, 'S') - site.USER_BASE = self.user_base - site.USER_SITE = self.user_site - install_module.USER_BASE = self.user_base - install_module.USER_SITE = self.user_site + _CONFIG_VARS['userbase'] = self.user_base + scheme = _INSTALL_SCHEMES['%s_user' % os.name] + scheme['purelib'] = self.user_site def _expanduser(path): - return self.tmpdir + if path[0] == '~': + path = os.path.normpath(self.tmpdir) + path[1:] + return path self.old_expand = os.path.expanduser os.path.expanduser = _expanduser @@ -82,19 +99,17 @@ # this is the actual test self._test_user_site() finally: - site.USER_BASE = self.old_user_base - site.USER_SITE = self.old_user_site - install_module.USER_BASE = self.old_user_base - install_module.USER_SITE = self.old_user_site + _CONFIG_VARS['userbase'] = self.old_user_base + scheme['purelib'] = self.old_user_site os.path.expanduser = self.old_expand def _test_user_site(self): - for key in ('nt_user', 'unix_user', 'os2_home'): - self.assertTrue(key in INSTALL_SCHEMES) + schemes = get_scheme_names() + for key in ('nt_user', 'posix_user', 'os2_home'): + self.assertTrue(key in schemes) dist = Distribution({'name': 'xx'}) cmd = install(dist) - # making sure the user option is there options = [name for name, short, lable in cmd.user_options] @@ -185,7 +200,7 @@ with open(cmd.record) as f: self.assertEquals(len(f.readlines()), 1) - def test_debug_mode(self): + def _test_debug_mode(self): # this covers the code called when DEBUG is set old_logs_len = len(self.logs) install_module.DEBUG = True Modified: python/branches/py3k/Lib/distutils/tests/test_sysconfig.py ============================================================================== --- python/branches/py3k/Lib/distutils/tests/test_sysconfig.py (original) +++ python/branches/py3k/Lib/distutils/tests/test_sysconfig.py Fri Jan 29 12:41:03 2010 @@ -4,7 +4,6 @@ import unittest from distutils import sysconfig -from distutils.ccompiler import get_default_compiler from distutils.tests import support from test.support import TESTFN, run_unittest @@ -26,10 +25,7 @@ elif os.path.isdir(TESTFN): shutil.rmtree(TESTFN) - def test_get_config_h_filename(self): - config_h = sysconfig.get_config_h_filename() - self.assertTrue(os.path.isfile(config_h), config_h) - + @support.capture_warnings def test_get_python_lib(self): lib_dir = sysconfig.get_python_lib() # XXX doesn't work on Linux when Python was never installed before @@ -37,7 +33,11 @@ # test for pythonxx.lib? self.assertNotEqual(sysconfig.get_python_lib(), sysconfig.get_python_lib(prefix=TESTFN)) + _sysconfig = __import__('sysconfig') + res = sysconfig.get_python_lib(True, True) + self.assertEquals(_sysconfig.get_path('platstdlib'), res) + @support.capture_warnings def test_get_python_inc(self): inc_dir = sysconfig.get_python_inc() # This is not much of a test. We make sure Python.h exists @@ -47,31 +47,7 @@ python_h = os.path.join(inc_dir, "Python.h") self.assertTrue(os.path.isfile(python_h), python_h) - def test_get_config_vars(self): - cvars = sysconfig.get_config_vars() - self.assertTrue(isinstance(cvars, dict)) - self.assertTrue(cvars) - - def test_customize_compiler(self): - - # not testing if default compiler is not unix - if get_default_compiler() != 'unix': - return - - os.environ['AR'] = 'my_ar' - os.environ['ARFLAGS'] = '-arflags' - - # make sure AR gets caught - class compiler: - compiler_type = 'unix' - - def set_executables(self, **kw): - self.exes = kw - - comp = compiler() - sysconfig.customize_compiler(comp) - self.assertEquals(comp.exes['archiver'], 'my_ar -arflags') - + @support.capture_warnings def test_parse_makefile_base(self): self.makefile = TESTFN fd = open(self.makefile, 'w') Modified: python/branches/py3k/Lib/distutils/tests/test_unixccompiler.py ============================================================================== --- python/branches/py3k/Lib/distutils/tests/test_unixccompiler.py (original) +++ python/branches/py3k/Lib/distutils/tests/test_unixccompiler.py Fri Jan 29 12:41:03 2010 @@ -1,8 +1,8 @@ """Tests for distutils.unixccompiler.""" import sys import unittest +import sysconfig -from distutils import sysconfig from distutils.unixccompiler import UnixCCompiler class UnixCCompilerTestCase(unittest.TestCase): Modified: python/branches/py3k/Lib/distutils/tests/test_util.py ============================================================================== --- python/branches/py3k/Lib/distutils/tests/test_util.py (original) +++ python/branches/py3k/Lib/distutils/tests/test_util.py Fri Jan 29 12:41:03 2010 @@ -6,15 +6,14 @@ from io import BytesIO import subprocess +from sysconfig import get_config_vars, get_platform from distutils.errors import DistutilsPlatformError, DistutilsByteCompileError -from distutils.util import (get_platform, convert_path, change_root, +from distutils.util import (convert_path, change_root, check_environ, split_quoted, strtobool, rfc822_escape, get_compiler_versions, _find_exe_version, _MAC_OS_X_LD_VERSION, byte_compile) from distutils import util -from distutils.sysconfig import get_config_vars -from distutils import sysconfig from distutils.tests import support from distutils.version import LooseVersion @@ -44,7 +43,7 @@ self.join = os.path.join self.isabs = os.path.isabs self.splitdrive = os.path.splitdrive - self._config_vars = copy(sysconfig._config_vars) + #self._config_vars = copy(sysconfig._config_vars) # patching os.uname if hasattr(os, 'uname'): @@ -78,7 +77,7 @@ os.uname = self.uname else: del os.uname - sysconfig._config_vars = copy(self._config_vars) + #sysconfig._config_vars = copy(self._config_vars) util.find_executable = self.old_find_executable subprocess.Popen = self.old_popen sys.old_stdout = self.old_stdout @@ -91,7 +90,7 @@ def _get_uname(self): return self._uname - def test_get_platform(self): + def _test_get_platform(self): # windows XP, 32bits os.name = 'nt' @@ -119,7 +118,6 @@ sys.version = ('2.5 (r25:51918, Sep 19 2006, 08:49:13) ' '\n[GCC 4.0.1 (Apple Computer, Inc. build 5341)]') sys.platform = 'darwin' - self._set_uname(('Darwin', 'macziade', '8.11.1', ('Darwin Kernel Version 8.11.1: ' 'Wed Oct 10 18:23:28 PDT 2007; ' @@ -157,7 +155,6 @@ finally: sys.maxsize = maxsize - # macbook with fat binaries (fat, universal or fat64) os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.4' get_config_vars()['CFLAGS'] = ('-arch ppc -arch i386 -isysroot ' @@ -201,7 +198,6 @@ self.assertEquals(get_platform(), 'macosx-10.4-%s'%(arch,)) - # linux debian sarge os.name = 'posix' sys.version = ('2.3.5 (#1, Jul 4 2007, 17:28:59) ' Modified: python/branches/py3k/Lib/distutils/unixccompiler.py ============================================================================== --- python/branches/py3k/Lib/distutils/unixccompiler.py (original) +++ python/branches/py3k/Lib/distutils/unixccompiler.py Fri Jan 29 12:41:03 2010 @@ -17,7 +17,6 @@ import os, sys -from distutils import sysconfig from distutils.dep_util import newer from distutils.ccompiler import \ CCompiler, gen_preprocess_options, gen_lib_options @@ -25,6 +24,7 @@ DistutilsExecError, CompileError, LibError, LinkError from distutils import log + # XXX Things not currently handled: # * optimization/debug/warning flags; we just use whatever's in Python's # Makefile and live with it. Is this adequate? If not, we might @@ -74,7 +74,7 @@ if 'ARCHFLAGS' in os.environ and not stripArch: # User specified different -arch flags in the environ, - # see also distutils.sysconfig + # see also the sysconfig compiler_so = compiler_so + os.environ['ARCHFLAGS'].split() if stripSysroot: @@ -281,7 +281,9 @@ # this time, there's no way to determine this information from # the configuration data stored in the Python installation, so # we use this hack. - compiler = os.path.basename(sysconfig.get_config_var("CC")) + _sysconfig = __import__('sysconfig') + + compiler = os.path.basename(_sysconfig.get_config_var("CC")) if sys.platform[:6] == "darwin": # MacOSX's linker doesn't understand the -R flag at all return "-L" + dir @@ -296,7 +298,7 @@ # use it anyway. Since distutils has always passed in # -Wl whenever gcc was used in the past it is probably # safest to keep doing so. - if sysconfig.get_config_var("GNULD") == "yes": + if _sysconfig.get_config_var("GNULD") == "yes": # GNU ld needs an extra option to get a RUNPATH # instead of just an RPATH. return "-Wl,--enable-new-dtags,-R" + dir Modified: python/branches/py3k/Lib/distutils/util.py ============================================================================== --- python/branches/py3k/Lib/distutils/util.py (original) +++ python/branches/py3k/Lib/distutils/util.py Fri Jan 29 12:41:03 2010 @@ -15,173 +15,7 @@ from distutils.version import LooseVersion from distutils.errors import DistutilsByteCompileError -def get_platform(): - """Return a string that identifies the current platform. - - This is used mainly to distinguish platform-specific build directories and - platform-specific built distributions. Typically includes the OS name - and version and the architecture (as supplied by 'os.uname()'), - although the exact information included depends on the OS; eg. for IRIX - the architecture isn't particularly important (IRIX only runs on SGI - hardware), but for Linux the kernel version isn't particularly - important. - - Examples of returned values: - linux-i586 - linux-alpha (?) - solaris-2.6-sun4u - irix-5.3 - irix64-6.2 - - Windows will return one of: - win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) - win-ia64 (64bit Windows on Itanium) - win32 (all others - specifically, sys.platform is returned) - - For other non-POSIX platforms, currently just returns 'sys.platform'. - """ - if os.name == 'nt': - # sniff sys.version for architecture. - prefix = " bit (" - i = sys.version.find(prefix) - if i == -1: - return sys.platform - j = sys.version.find(")", i) - look = sys.version[i+len(prefix):j].lower() - if look == 'amd64': - return 'win-amd64' - if look == 'itanium': - return 'win-ia64' - return sys.platform - - if os.name != "posix" or not hasattr(os, 'uname'): - # XXX what about the architecture? NT is Intel or Alpha, - # Mac OS is M68k or PPC, etc. - return sys.platform - - # Try to distinguish various flavours of Unix - - (osname, host, release, version, machine) = os.uname() - - # Convert the OS name to lowercase, remove '/' characters - # (to accommodate BSD/OS), and translate spaces (for "Power Macintosh") - osname = osname.lower().replace('/', '') - machine = machine.replace(' ', '_') - machine = machine.replace('/', '-') - - if osname[:5] == "linux": - # At least on Linux/Intel, 'machine' is the processor -- - # i386, etc. - # XXX what about Alpha, SPARC, etc? - return "%s-%s" % (osname, machine) - elif osname[:5] == "sunos": - if release[0] >= "5": # SunOS 5 == Solaris 2 - osname = "solaris" - release = "%d.%s" % (int(release[0]) - 3, release[2:]) - # fall through to standard osname-release-machine representation - elif osname[:4] == "irix": # could be "irix64"! - return "%s-%s" % (osname, release) - elif osname[:3] == "aix": - return "%s-%s.%s" % (osname, version, release) - elif osname[:6] == "cygwin": - osname = "cygwin" - rel_re = re.compile (r'[\d.]+', re.ASCII) - m = rel_re.match(release) - if m: - release = m.group() - elif osname[:6] == "darwin": - # - # For our purposes, we'll assume that the system version from - # distutils' perspective is what MACOSX_DEPLOYMENT_TARGET is set - # to. This makes the compatibility story a bit more sane because the - # machine is going to compile and link as if it were - # MACOSX_DEPLOYMENT_TARGET. - from distutils.sysconfig import get_config_vars - cfgvars = get_config_vars() - - macver = os.environ.get('MACOSX_DEPLOYMENT_TARGET') - if not macver: - macver = cfgvars.get('MACOSX_DEPLOYMENT_TARGET') - - if 1: - # Always calculate the release of the running machine, - # needed to determine if we can build fat binaries or not. - - macrelease = macver - # Get the system version. Reading this plist is a documented - # way to get the system version (see the documentation for - # the Gestalt Manager) - try: - f = open('/System/Library/CoreServices/SystemVersion.plist') - except IOError: - # We're on a plain darwin box, fall back to the default - # behaviour. - pass - else: - m = re.search( - r'ProductUserVisibleVersion\s*' + - r'(.*?)', f.read()) - f.close() - if m is not None: - macrelease = '.'.join(m.group(1).split('.')[:2]) - # else: fall back to the default behaviour - - if not macver: - macver = macrelease - - if macver: - from distutils.sysconfig import get_config_vars - release = macver - osname = "macosx" - - if (macrelease + '.') >= '10.4.' and \ - '-arch' in get_config_vars().get('CFLAGS', '').strip(): - # The universal build will build fat binaries, but not on - # systems before 10.4 - # - # Try to detect 4-way universal builds, those have machine-type - # 'universal' instead of 'fat'. - - machine = 'fat' - cflags = get_config_vars().get('CFLAGS') - - archs = re.findall('-arch\s+(\S+)', cflags) - archs.sort() - archs = tuple(archs) - - if len(archs) == 1: - machine = archs[0] - elif archs == ('i386', 'ppc'): - machine = 'fat' - elif archs == ('i386', 'x86_64'): - machine = 'intel' - elif archs == ('i386', 'ppc', 'x86_64'): - machine = 'fat3' - elif archs == ('ppc64', 'x86_64'): - machine = 'fat64' - elif archs == ('i386', 'ppc', 'ppc64', 'x86_64'): - machine = 'universal' - else: - raise ValueError( - "Don't know machine value for archs=%r"%(archs,)) - - elif machine == 'i386': - # On OSX the machine type returned by uname is always the - # 32-bit variant, even if the executable architecture is - # the 64-bit variant - if sys.maxsize >= 2**32: - machine = 'x86_64' - - elif machine in ('PowerPC', 'Power_Macintosh'): - # Pick a sane name for the PPC architecture. - machine = 'ppc' - - # See 'i386' case - if sys.maxsize >= 2**32: - machine = 'ppc64' - - return "%s-%s-%s" % (osname, release, machine) - +_sysconfig = __import__('sysconfig') def convert_path(pathname): """Return 'pathname' as a name that will work on the native filesystem. @@ -269,7 +103,7 @@ os.environ['HOME'] = pwd.getpwuid(os.getuid())[5] if 'PLAT' not in os.environ: - os.environ['PLAT'] = get_platform() + os.environ['PLAT'] = _sysconfig.get_platform() _environ_checked = 1 Modified: python/branches/py3k/Lib/site.py ============================================================================== --- python/branches/py3k/Lib/site.py (original) +++ python/branches/py3k/Lib/site.py Fri Jan 29 12:41:03 2010 @@ -108,7 +108,7 @@ def addbuilddir(): """Append ./build/lib. in case we're running in the build dir (especially for Guido :-)""" - from distutils.util import get_platform + from sysconfig import get_platform s = "build/lib.%s-%.3s" % (get_platform(), sys.version) if hasattr(sys, 'gettotalrefcount'): s += '-pydebug' @@ -218,19 +218,8 @@ global USER_BASE if USER_BASE is not None: return USER_BASE - - env_base = os.environ.get("PYTHONUSERBASE", None) - - def joinuser(*args): - return os.path.expanduser(os.path.join(*args)) - - # what about 'os2emx', 'riscos' ? - if os.name == "nt": - base = os.environ.get("APPDATA") or "~" - USER_BASE = env_base if env_base else joinuser(base, "Python") - else: - USER_BASE = env_base if env_base else joinuser("~", ".local") - + from sysconfig import get_config_var + USER_BASE = get_config_var('userbase') return USER_BASE def getusersitepackages(): @@ -245,13 +234,9 @@ if USER_SITE is not None: return USER_SITE - if os.name == "nt": - USER_SITE = os.path.join(user_base, "Python" + sys.version[0] + - sys.version[2], "site-packages") - else: - USER_SITE = os.path.join(user_base, "lib", "python" + sys.version[:3], - "site-packages") - + from sysconfig import get_path + import os + USER_SITE = get_path('purelib', '%s_user' % os.name) return USER_SITE def addusersitepackages(known_paths): Copied: python/branches/py3k/Lib/sysconfig.py (from r77704, /python/trunk/Lib/sysconfig.py) ============================================================================== --- /python/trunk/Lib/sysconfig.py (original) +++ python/branches/py3k/Lib/sysconfig.py Fri Jan 29 12:41:03 2010 @@ -84,7 +84,7 @@ _EXEC_PREFIX = os.path.normpath(sys.exec_prefix) _CONFIG_VARS = None _USER_BASE = None -_PROJECT_BASE = os.path.dirname(abspath(sys.executable)) +_PROJECT_BASE = abspath(os.path.dirname(sys.executable)) if os.name == "nt" and "pcbuild" in _PROJECT_BASE[-8:].lower(): _PROJECT_BASE = abspath(os.path.join(_PROJECT_BASE, pardir)) @@ -114,7 +114,7 @@ except KeyError: try: return s.format(**os.environ) - except KeyError, var: + except KeyError as var: raise AttributeError('{%s}' % var) def _extend_dict(target_dict, other_dict): @@ -199,11 +199,13 @@ done[n] = v # do variable interpolation here - while notdone: - for name in notdone.keys(): + variables = list(notdone.keys()) + + while len(variables) > 0: + for name in tuple(variables): value = notdone[name] m = _findvar1_rx.search(value) or _findvar2_rx.search(value) - if m: + if m is not None: n = m.group(1) found = True if n in done: @@ -222,15 +224,17 @@ if "$" in after: notdone[name] = value else: - try: value = int(value) + try: + value = int(value) except ValueError: done[name] = value.strip() else: done[name] = value - del notdone[name] + variables.remove(name) else: # bogus variable reference; just drop it since we can't deal - del notdone[name] + variables.remove(name) + # save the results in the global dictionary vars.update(done) return vars @@ -285,22 +289,20 @@ makefile = _get_makefile_filename() try: _parse_makefile(makefile, vars) - except IOError, e: + except IOError as e: msg = "invalid Python installation: unable to open %s" % makefile if hasattr(e, "strerror"): msg = msg + " (%s)" % e.strerror raise IOError(msg) - # load the installed pyconfig.h: config_h = get_config_h_filename() try: parse_config_h(open(config_h), vars) - except IOError, e: + except IOError as e: msg = "invalid Python installation: unable to open %s" % config_h if hasattr(e, "strerror"): msg = msg + " (%s)" % e.strerror raise IOError(msg) - # On MacOSX we need to check the setting of the environment variable # MACOSX_DEPLOYMENT_TARGET: configure bases some choices on it so # it needs to be compatible. @@ -311,11 +313,11 @@ if cur_target == '': cur_target = cfg_target os.putenv('MACOSX_DEPLOYMENT_TARGET', cfg_target) - elif map(int, cfg_target.split('.')) > map(int, cur_target.split('.')): + elif (list(map(int, cfg_target.split('.'))) > + list(map(int, cur_target.split('.')))): msg = ('$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" ' 'during configure' % (cur_target, cfg_target)) raise IOError(msg) - # On AIX, there are wrong paths to the linker scripts in the Makefile # -- these paths are relative to the Python source, but when installed # the scripts are in another directory. @@ -392,10 +394,10 @@ _init_non_posix(_CONFIG_VARS) if os.name == 'posix': _init_posix(_CONFIG_VARS) - if 'srcdir' not in _CONFIG_VARS: _CONFIG_VARS['srcdir'] = _PROJECT_BASE + # Convert srcdir into an absolute path if it appears necessary. # Normally it is relative to the build directory. However, during # testing, for example, we might be running a non-installed python @@ -636,13 +638,13 @@ # On OSX the machine type returned by uname is always the # 32-bit variant, even if the executable architecture is # the 64-bit variant - if sys.maxint >= 2**32: + if sys.maxsize >= 2**32: machine = 'x86_64' elif machine in ('PowerPC', 'Power_Macintosh'): # Pick a sane name for the PPC architecture. # See 'i386' case - if sys.maxint >= 2**32: + if sys.maxsize >= 2**32: machine = 'ppc64' else: machine = 'ppc' Modified: python/branches/py3k/Lib/test/test_site.py ============================================================================== --- python/branches/py3k/Lib/test/test_site.py (original) +++ python/branches/py3k/Lib/test/test_site.py Fri Jan 29 12:41:03 2010 @@ -11,6 +11,9 @@ import sys import encodings import subprocess +import sysconfig +from copy import copy + # Need to make sure to not import 'site' if someone specified ``-S`` at the # command-line. Detect this by just making sure 'site' has not been imported # already. @@ -38,6 +41,7 @@ self.old_base = site.USER_BASE self.old_site = site.USER_SITE self.old_prefixes = site.PREFIXES + self.old_vars = copy(sysconfig._CONFIG_VARS) def tearDown(self): """Restore sys.path""" @@ -45,6 +49,7 @@ site.USER_BASE = self.old_base site.USER_SITE = self.old_site site.PREFIXES = self.old_prefixes + sysconfig._CONFIG_VARS = self.old_vars def test_makepath(self): # Test makepath() have an absolute path for its first return value @@ -137,6 +142,9 @@ # let's set PYTHONUSERBASE and see if it uses it site.USER_BASE = None + import sysconfig + sysconfig._CONFIG_VARS = None + with EnvironmentVarGuard() as environ: environ['PYTHONUSERBASE'] = 'xoxo' self.assertTrue(site.getuserbase().startswith('xoxo'), Copied: python/branches/py3k/Lib/test/test_sysconfig.py (from r77704, /python/trunk/Lib/test/test_sysconfig.py) ============================================================================== --- /python/trunk/Lib/test/test_sysconfig.py (original) +++ python/branches/py3k/Lib/test/test_sysconfig.py Fri Jan 29 12:41:03 2010 @@ -10,7 +10,7 @@ import os from copy import copy, deepcopy -from test.test_support import run_unittest, TESTFN +from test.support import run_unittest, TESTFN import sysconfig from sysconfig import (get_paths, get_platform, get_config_vars, @@ -65,7 +65,7 @@ if os.environ.get(key) != value: os.environ[key] = value - for key in os.environ.keys(): + for key in list(os.environ.keys()): if key not in self.old_environ: del os.environ[key] @@ -78,7 +78,7 @@ return self._uname def _cleanup_testfn(self): - path = test.test_support.TESTFN + path = TESTFN if os.path.isfile(path): os.remove(path) elif os.path.isdir(path): @@ -91,9 +91,9 @@ scheme = get_paths() default_scheme = _get_default_scheme() wanted = _expand_vars(default_scheme, None) - wanted = wanted.items() + wanted = list(wanted.items()) wanted.sort() - scheme = scheme.items() + scheme = list(scheme.items()) scheme.sort() self.assertEquals(scheme, wanted) Modified: python/branches/py3k/Makefile.pre.in ============================================================================== --- python/branches/py3k/Makefile.pre.in (original) +++ python/branches/py3k/Makefile.pre.in Fri Jan 29 12:41:03 2010 @@ -412,7 +412,7 @@ $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) platform: $(BUILDPYTHON) - $(RUNSHARED) ./$(BUILDPYTHON) -E -c 'import sys ; from distutils.util import get_platform ; print(get_platform()+"-"+sys.version[0:3])' >platform + $(RUNSHARED) ./$(BUILDPYTHON) -E -c 'import sys ; from sysconfig import get_platform ; print(get_platform()+"-"+sys.version[0:3])' >platform # Build the shared modules Modified: python/branches/py3k/setup.py ============================================================================== --- python/branches/py3k/setup.py (original) +++ python/branches/py3k/setup.py Fri Jan 29 12:41:03 2010 @@ -5,9 +5,9 @@ import sys, os, imp, re, optparse from glob import glob +import sysconfig from distutils import log -from distutils import sysconfig from distutils import text_file from distutils.errors import * from distutils.core import Extension, setup @@ -132,7 +132,7 @@ # Python header files headers = [sysconfig.get_config_h_filename()] - headers += glob(os.path.join(sysconfig.get_python_inc(), "*.h")) + headers += glob(os.path.join(sysconfig.get_path('platinclude'), "*.h")) for ext in self.extensions[:]: ext.sources = [ find_module_file(filename, moddirlist) From python-checkins at python.org Fri Jan 29 12:46:31 2010 From: python-checkins at python.org (tarek.ziade) Date: Fri, 29 Jan 2010 11:46:31 -0000 Subject: [Python-checkins] r77819 - in python/branches/py3k: Lib/distutils/command/bdist.py Lib/distutils/command/bdist_dumb.py Lib/distutils/command/bdist_msi.py Lib/distutils/command/bdist_wininst.py Lib/distutils/command/build.py Lib/distutils/command/build_ext.py Lib/distutils/command/install.py Lib/distutils/msvc9compiler.py Lib/distutils/sysconfig.py Lib/distutils/tests/test_util.py Lib/distutils/util.py Lib/test/test_sysconfig.py Message-ID: Author: tarek.ziade Date: Fri Jan 29 12:46:31 2010 New Revision: 77819 Log: Merged revisions 77759,77761 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77759 | tarek.ziade | 2010-01-26 22:21:54 +0100 (Tue, 26 Jan 2010) | 1 line reintroduced the names in Distutils for APIs that were relocated ........ r77761 | tarek.ziade | 2010-01-26 23:46:15 +0100 (Tue, 26 Jan 2010) | 1 line added local get_platform/set_platform APIs in distutils.sysconfig ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/distutils/command/bdist.py python/branches/py3k/Lib/distutils/command/bdist_dumb.py python/branches/py3k/Lib/distutils/command/bdist_msi.py python/branches/py3k/Lib/distutils/command/bdist_wininst.py python/branches/py3k/Lib/distutils/command/build.py python/branches/py3k/Lib/distutils/command/build_ext.py python/branches/py3k/Lib/distutils/command/install.py python/branches/py3k/Lib/distutils/msvc9compiler.py python/branches/py3k/Lib/distutils/sysconfig.py python/branches/py3k/Lib/distutils/tests/test_util.py python/branches/py3k/Lib/distutils/util.py python/branches/py3k/Lib/test/test_sysconfig.py Modified: python/branches/py3k/Lib/distutils/command/bdist.py ============================================================================== --- python/branches/py3k/Lib/distutils/command/bdist.py (original) +++ python/branches/py3k/Lib/distutils/command/bdist.py Fri Jan 29 12:46:31 2010 @@ -6,8 +6,8 @@ __revision__ = "$Id$" import os -from sysconfig import get_platform +from distutils.util import get_platform from distutils.core import Command from distutils.errors import DistutilsPlatformError, DistutilsOptionError Modified: python/branches/py3k/Lib/distutils/command/bdist_dumb.py ============================================================================== --- python/branches/py3k/Lib/distutils/command/bdist_dumb.py (original) +++ python/branches/py3k/Lib/distutils/command/bdist_dumb.py Fri Jan 29 12:46:31 2010 @@ -8,8 +8,9 @@ import os -from sysconfig import get_python_version, get_platform +from sysconfig import get_python_version +from distutils.util import get_platform from distutils.core import Command from distutils.dir_util import remove_tree, ensure_relative from distutils.errors import DistutilsPlatformError Modified: python/branches/py3k/Lib/distutils/command/bdist_msi.py ============================================================================== --- python/branches/py3k/Lib/distutils/command/bdist_msi.py (original) +++ python/branches/py3k/Lib/distutils/command/bdist_msi.py Fri Jan 29 12:46:31 2010 @@ -6,6 +6,8 @@ """ Implements the bdist_msi command. """ +import sys, os +from sysconfig import get_python_version import sys, os from distutils.core import Command @@ -15,6 +17,7 @@ from distutils.errors import DistutilsOptionError from distutils.util import get_platform from distutils import log + import msilib from msilib import schema, sequence, text from msilib import Directory, Feature, Dialog, add_data Modified: python/branches/py3k/Lib/distutils/command/bdist_wininst.py ============================================================================== --- python/branches/py3k/Lib/distutils/command/bdist_wininst.py (original) +++ python/branches/py3k/Lib/distutils/command/bdist_wininst.py Fri Jan 29 12:46:31 2010 @@ -8,12 +8,13 @@ import sys import os -from sysconfig import get_python_version, get_platform +from sysconfig import get_python_version from distutils.core import Command from distutils.dir_util import remove_tree from distutils.errors import DistutilsOptionError, DistutilsPlatformError from distutils import log +from distutils.util import get_platform class bdist_wininst(Command): Modified: python/branches/py3k/Lib/distutils/command/build.py ============================================================================== --- python/branches/py3k/Lib/distutils/command/build.py (original) +++ python/branches/py3k/Lib/distutils/command/build.py Fri Jan 29 12:46:31 2010 @@ -5,8 +5,8 @@ __revision__ = "$Id$" import sys, os -from sysconfig import get_platform +from distutils.util import get_platform from distutils.core import Command from distutils.errors import DistutilsOptionError Modified: python/branches/py3k/Lib/distutils/command/build_ext.py ============================================================================== --- python/branches/py3k/Lib/distutils/command/build_ext.py (original) +++ python/branches/py3k/Lib/distutils/command/build_ext.py Fri Jan 29 12:46:31 2010 @@ -9,14 +9,12 @@ import sys, os, re from warnings import warn -from sysconfig import get_platform - +from distutils.util import get_platform from distutils.core import Command from distutils.errors import * from distutils.ccompiler import customize_compiler from distutils.dep_util import newer_group from distutils.extension import Extension - from distutils import log # this keeps compatibility from 2.3 to 2.5 Modified: python/branches/py3k/Lib/distutils/command/install.py ============================================================================== --- python/branches/py3k/Lib/distutils/command/install.py (original) +++ python/branches/py3k/Lib/distutils/command/install.py Fri Jan 29 12:46:31 2010 @@ -7,15 +7,14 @@ import sys import os -from sysconfig import (get_config_vars, get_platform, get_paths, get_path, - get_config_var) +from sysconfig import get_config_vars, get_paths, get_path, get_config_var from distutils import log from distutils.core import Command from distutils.debug import DEBUG from distutils.errors import DistutilsPlatformError from distutils.file_util import write_file -from distutils.util import convert_path, change_root +from distutils.util import convert_path, change_root, get_platform from distutils.errors import DistutilsOptionError def _subst_vars(s, local_vars): Modified: python/branches/py3k/Lib/distutils/msvc9compiler.py ============================================================================== --- python/branches/py3k/Lib/distutils/msvc9compiler.py (original) +++ python/branches/py3k/Lib/distutils/msvc9compiler.py Fri Jan 29 12:46:31 2010 @@ -23,9 +23,9 @@ CompileError, LibError, LinkError) from distutils.ccompiler import CCompiler, gen_lib_options from distutils import log -import winreg +from distutils.util import get_platform -_sysconfig = __import__('sysconfig') +import winreg RegOpenKeyEx = winreg.OpenKeyEx RegEnumKey = winreg.EnumKey @@ -327,7 +327,7 @@ # multi-init means we would need to check platform same each time... assert not self.initialized, "don't init multiple times" if plat_name is None: - plat_name = _sysconfig.get_platform() + plat_name = get_platform() # sanity check for platforms to prevent obscure errors later. ok_plats = 'win32', 'win-amd64', 'win-ia64' if plat_name not in ok_plats: @@ -348,12 +348,12 @@ # On AMD64, 'vcvars32.bat amd64' is a native build env; to cross # compile use 'x86' (ie, it runs the x86 compiler directly) # No idea how itanium handles this, if at all. - if plat_name == _sysconfig.get_platform() or plat_name == 'win32': + if plat_name == get_platform() or plat_name == 'win32': # native build or cross-compile to win32 plat_spec = PLAT_TO_VCVARS[plat_name] else: # cross compile from win32 -> some 64bit - plat_spec = PLAT_TO_VCVARS[_sysconfig.get_platform()] + '_' + \ + plat_spec = PLAT_TO_VCVARS[get_platform()] + '_' + \ PLAT_TO_VCVARS[plat_name] vc_env = query_vcvarsall(VERSION, plat_spec) Modified: python/branches/py3k/Lib/distutils/sysconfig.py ============================================================================== --- python/branches/py3k/Lib/distutils/sysconfig.py (original) +++ python/branches/py3k/Lib/distutils/sysconfig.py Fri Jan 29 12:46:31 2010 @@ -25,6 +25,15 @@ # to avoid this module to shadow it _sysconfig = __import__('sysconfig') +# names defined here to keep backward compatibility +# for APIs that were relocated +get_python_version = _sysconfig.get_python_version +get_config_h_filename = _sysconfig.get_config_h_filename +parse_config_h = _sysconfig.parse_config_h +get_config_vars = _sysconfig.get_config_vars +get_config_var = _sysconfig.get_config_var +from distutils.ccompiler import customize_compiler + _DEPRECATION_MSG = ("distutils.sysconfig.%s is deprecated. " "Use the APIs provided by the sysconfig module instead") Modified: python/branches/py3k/Lib/distutils/tests/test_util.py ============================================================================== --- python/branches/py3k/Lib/distutils/tests/test_util.py (original) +++ python/branches/py3k/Lib/distutils/tests/test_util.py Fri Jan 29 12:46:31 2010 @@ -90,125 +90,12 @@ def _get_uname(self): return self._uname - def _test_get_platform(self): - - # windows XP, 32bits - os.name = 'nt' - sys.version = ('2.4.4 (#71, Oct 18 2006, 08:34:43) ' - '[MSC v.1310 32 bit (Intel)]') - sys.platform = 'win32' - self.assertEquals(get_platform(), 'win32') - - # windows XP, amd64 - os.name = 'nt' - sys.version = ('2.4.4 (#71, Oct 18 2006, 08:34:43) ' - '[MSC v.1310 32 bit (Amd64)]') - sys.platform = 'win32' - self.assertEquals(get_platform(), 'win-amd64') - - # windows XP, itanium - os.name = 'nt' - sys.version = ('2.4.4 (#71, Oct 18 2006, 08:34:43) ' - '[MSC v.1310 32 bit (Itanium)]') - sys.platform = 'win32' - self.assertEquals(get_platform(), 'win-ia64') - - # macbook - os.name = 'posix' - sys.version = ('2.5 (r25:51918, Sep 19 2006, 08:49:13) ' - '\n[GCC 4.0.1 (Apple Computer, Inc. build 5341)]') - sys.platform = 'darwin' - self._set_uname(('Darwin', 'macziade', '8.11.1', - ('Darwin Kernel Version 8.11.1: ' - 'Wed Oct 10 18:23:28 PDT 2007; ' - 'root:xnu-792.25.20~1/RELEASE_I386'), 'PowerPC')) - os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.3' - - get_config_vars()['CFLAGS'] = ('-fno-strict-aliasing -DNDEBUG -g ' - '-fwrapv -O3 -Wall -Wstrict-prototypes') - - maxsize = sys.maxsize - try: - sys.maxsize = 2147483647 - self.assertEquals(get_platform(), 'macosx-10.3-ppc') - sys.maxsize = 9223372036854775807 - self.assertEquals(get_platform(), 'macosx-10.3-ppc64') - finally: - sys.maxsize = maxsize - - - self._set_uname(('Darwin', 'macziade', '8.11.1', - ('Darwin Kernel Version 8.11.1: ' - 'Wed Oct 10 18:23:28 PDT 2007; ' - 'root:xnu-792.25.20~1/RELEASE_I386'), 'i386')) - os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.3' - - get_config_vars()['CFLAGS'] = ('-fno-strict-aliasing -DNDEBUG -g ' - '-fwrapv -O3 -Wall -Wstrict-prototypes') - - maxsize = sys.maxsize - try: - sys.maxsize = 2147483647 - self.assertEquals(get_platform(), 'macosx-10.3-i386') - sys.maxsize = 9223372036854775807 - self.assertEquals(get_platform(), 'macosx-10.3-x86_64') - finally: - sys.maxsize = maxsize - - # macbook with fat binaries (fat, universal or fat64) - os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.4' - get_config_vars()['CFLAGS'] = ('-arch ppc -arch i386 -isysroot ' - '/Developer/SDKs/MacOSX10.4u.sdk ' - '-fno-strict-aliasing -fno-common ' - '-dynamic -DNDEBUG -g -O3') - - self.assertEquals(get_platform(), 'macosx-10.4-fat') - - get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch i386 -isysroot ' - '/Developer/SDKs/MacOSX10.4u.sdk ' - '-fno-strict-aliasing -fno-common ' - '-dynamic -DNDEBUG -g -O3') - - self.assertEquals(get_platform(), 'macosx-10.4-intel') - - get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch ppc -arch i386 -isysroot ' - '/Developer/SDKs/MacOSX10.4u.sdk ' - '-fno-strict-aliasing -fno-common ' - '-dynamic -DNDEBUG -g -O3') - self.assertEquals(get_platform(), 'macosx-10.4-fat3') - - get_config_vars()['CFLAGS'] = ('-arch ppc64 -arch x86_64 -arch ppc -arch i386 -isysroot ' - '/Developer/SDKs/MacOSX10.4u.sdk ' - '-fno-strict-aliasing -fno-common ' - '-dynamic -DNDEBUG -g -O3') - self.assertEquals(get_platform(), 'macosx-10.4-universal') - - get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch ppc64 -isysroot ' - '/Developer/SDKs/MacOSX10.4u.sdk ' - '-fno-strict-aliasing -fno-common ' - '-dynamic -DNDEBUG -g -O3') - - self.assertEquals(get_platform(), 'macosx-10.4-fat64') - - for arch in ('ppc', 'i386', 'x86_64', 'ppc64'): - get_config_vars()['CFLAGS'] = ('-arch %s -isysroot ' - '/Developer/SDKs/MacOSX10.4u.sdk ' - '-fno-strict-aliasing -fno-common ' - '-dynamic -DNDEBUG -g -O3'%(arch,)) - - self.assertEquals(get_platform(), 'macosx-10.4-%s'%(arch,)) - - # linux debian sarge - os.name = 'posix' - sys.version = ('2.3.5 (#1, Jul 4 2007, 17:28:59) ' - '\n[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)]') - sys.platform = 'linux2' - self._set_uname(('Linux', 'aglae', '2.6.21.1dedibox-r7', - '#1 Mon Apr 30 17:25:38 CEST 2007', 'i686')) - - self.assertEquals(get_platform(), 'linux-i686') - - # XXX more platforms to tests here + def test_get_platform(self): + platform = util.get_platform() + self.assertEquals(platform, get_platform()) + util.set_platform('MyOwnPlatform') + self.assertEquals('MyOwnPlatform', util.get_platform()) + util.set_platform(platform) def test_convert_path(self): # linux/mac Modified: python/branches/py3k/Lib/distutils/util.py ============================================================================== --- python/branches/py3k/Lib/distutils/util.py (original) +++ python/branches/py3k/Lib/distutils/util.py Fri Jan 29 12:46:31 2010 @@ -16,6 +16,27 @@ from distutils.errors import DistutilsByteCompileError _sysconfig = __import__('sysconfig') +_PLATFORM = None + +def get_platform(): + """Return a string that identifies the current platform. + + By default, will return the value returned by sysconfig.get_platform(), + but it can be changed by calling set_platform(). + """ + global _PLATFORM + if _PLATFORM is None: + _PLATFORM = _sysconfig.get_platform() + return _PLATFORM + +def set_platform(identifier): + """Sets the platform string identifier returned by get_platform(). + + Note that this change doesn't impact the value returned by + sysconfig.get_platform() and is local to Distutils + """ + global _PLATFORM + _PLATFORM = identifier def convert_path(pathname): """Return 'pathname' as a name that will work on the native filesystem. Modified: python/branches/py3k/Lib/test/test_sysconfig.py ============================================================================== --- python/branches/py3k/Lib/test/test_sysconfig.py (original) +++ python/branches/py3k/Lib/test/test_sysconfig.py Fri Jan 29 12:46:31 2010 @@ -138,6 +138,25 @@ self._set_uname(('Darwin', 'macziade', '8.11.1', ('Darwin Kernel Version 8.11.1: ' 'Wed Oct 10 18:23:28 PDT 2007; ' + 'root:xnu-792.25.20~1/RELEASE_I386'), 'PowerPC')) + os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.3' + + get_config_vars()['CFLAGS'] = ('-fno-strict-aliasing -DNDEBUG -g ' + '-fwrapv -O3 -Wall -Wstrict-prototypes') + + maxsize = sys.maxsize + try: + sys.maxsize = 2147483647 + self.assertEquals(get_platform(), 'macosx-10.3-ppc') + sys.maxsize = 9223372036854775807 + self.assertEquals(get_platform(), 'macosx-10.3-ppc64') + finally: + sys.maxsize = maxsize + + + self._set_uname(('Darwin', 'macziade', '8.11.1', + ('Darwin Kernel Version 8.11.1: ' + 'Wed Oct 10 18:23:28 PDT 2007; ' 'root:xnu-792.25.20~1/RELEASE_I386'), 'i386')) get_config_vars()['MACOSX_DEPLOYMENT_TARGET'] = '10.3' os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.3' @@ -145,7 +164,14 @@ get_config_vars()['CFLAGS'] = ('-fno-strict-aliasing -DNDEBUG -g ' '-fwrapv -O3 -Wall -Wstrict-prototypes') - self.assertEquals(get_platform(), 'macosx-10.3-i386') + maxsize = sys.maxsize + try: + sys.maxsize = 2147483647 + self.assertEquals(get_platform(), 'macosx-10.3-i386') + sys.maxsize = 9223372036854775807 + self.assertEquals(get_platform(), 'macosx-10.3-x86_64') + finally: + sys.maxsize = maxsize # macbook with fat binaries (fat, universal or fat64) os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.4' From python-checkins at python.org Fri Jan 29 12:51:11 2010 From: python-checkins at python.org (tarek.ziade) Date: Fri, 29 Jan 2010 11:51:11 -0000 Subject: [Python-checkins] r77820 - python/branches/release31-maint Message-ID: Author: tarek.ziade Date: Fri Jan 29 12:51:11 2010 New Revision: 77820 Log: Blocked revisions 77818-77819 via svnmerge ................ r77818 | tarek.ziade | 2010-01-29 12:41:03 +0100 (Fri, 29 Jan 2010) | 13 lines Merged revisions 77704,77752 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77704 | tarek.ziade | 2010-01-23 10:23:15 +0100 (Sat, 23 Jan 2010) | 1 line taking sysconfig out of distutils ........ r77752 | tarek.ziade | 2010-01-26 00:19:56 +0100 (Tue, 26 Jan 2010) | 1 line switched the call order so this call works without suffering from issue #7774 ........ ................ r77819 | tarek.ziade | 2010-01-29 12:46:31 +0100 (Fri, 29 Jan 2010) | 13 lines Merged revisions 77759,77761 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77759 | tarek.ziade | 2010-01-26 22:21:54 +0100 (Tue, 26 Jan 2010) | 1 line reintroduced the names in Distutils for APIs that were relocated ........ r77761 | tarek.ziade | 2010-01-26 23:46:15 +0100 (Tue, 26 Jan 2010) | 1 line added local get_platform/set_platform APIs in distutils.sysconfig ........ ................ Modified: python/branches/release31-maint/ (props changed) From python-checkins at python.org Fri Jan 29 18:11:39 2010 From: python-checkins at python.org (mark.dickinson) Date: Fri, 29 Jan 2010 17:11:39 -0000 Subject: [Python-checkins] r77821 - in python/trunk: Lib/test/list_tests.py Lib/test/test_array.py Lib/test/test_bytes.py Misc/NEWS Modules/arraymodule.c Objects/bytearrayobject.c Objects/listobject.c Message-ID: Author: mark.dickinson Date: Fri Jan 29 18:11:39 2010 New Revision: 77821 Log: Issue #7788: Fix a crash produced by deleting a list slice with huge step value. Patch by Marcin Bachry. Modified: python/trunk/Lib/test/list_tests.py python/trunk/Lib/test/test_array.py python/trunk/Lib/test/test_bytes.py python/trunk/Misc/NEWS python/trunk/Modules/arraymodule.c python/trunk/Objects/bytearrayobject.c python/trunk/Objects/listobject.c Modified: python/trunk/Lib/test/list_tests.py ============================================================================== --- python/trunk/Lib/test/list_tests.py (original) +++ python/trunk/Lib/test/list_tests.py Fri Jan 29 18:11:39 2010 @@ -519,6 +519,9 @@ a = self.type2test(range(10)) a[::2] = tuple(range(5)) self.assertEqual(a, self.type2test([0, 1, 1, 3, 2, 5, 3, 7, 4, 9])) + # test issue7788 + a = self.type2test(range(10)) + del a[9::1<<333] def test_constructor_exception_handling(self): # Bug #1242657 Modified: python/trunk/Lib/test/test_array.py ============================================================================== --- python/trunk/Lib/test/test_array.py (original) +++ python/trunk/Lib/test/test_array.py Fri Jan 29 18:11:39 2010 @@ -882,6 +882,9 @@ a = array.array(self.typecode, range(10)) del a[::1000] self.assertEqual(a, array.array(self.typecode, [1,2,3,4,5,6,7,8,9])) + # test issue7788 + a = array.array(self.typecode, range(10)) + del a[9::1<<333] def test_assignment(self): a = array.array(self.typecode, range(10)) Modified: python/trunk/Lib/test/test_bytes.py ============================================================================== --- python/trunk/Lib/test/test_bytes.py (original) +++ python/trunk/Lib/test/test_bytes.py Fri Jan 29 18:11:39 2010 @@ -565,7 +565,7 @@ self.assertEqual(b, bytearray([0, 1, 2, 42, 42, 42, 3, 4, 5, 6, 7, 8, 9])) def test_extended_set_del_slice(self): - indices = (0, None, 1, 3, 19, 300, -1, -2, -31, -300) + indices = (0, None, 1, 3, 19, 300, 1<<333, -1, -2, -31, -300) for start in indices: for stop in indices: # Skip invalid step 0 Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Fri Jan 29 18:11:39 2010 @@ -12,6 +12,9 @@ Core and Builtins ----------------- +- Issue #7788: Fix an interpreter crash produced by deleting a list + slice with very large step value. + - Issue #7766: Change sys.getwindowsversion() return value to a named tuple and add the additional members returned in an OSVERSIONINFOEX structure. The new members are service_pack_major, service_pack_minor, Modified: python/trunk/Modules/arraymodule.c ============================================================================== --- python/trunk/Modules/arraymodule.c (original) +++ python/trunk/Modules/arraymodule.c Fri Jan 29 18:11:39 2010 @@ -1792,8 +1792,9 @@ } else if (needed == 0) { /* Delete slice */ - Py_ssize_t cur, i; - + size_t cur; + Py_ssize_t i; + if (step < 0) { stop = start + 1; start = stop + step * (slicelength - 1) - 1; Modified: python/trunk/Objects/bytearrayobject.c ============================================================================== --- python/trunk/Objects/bytearrayobject.c (original) +++ python/trunk/Objects/bytearrayobject.c Fri Jan 29 18:11:39 2010 @@ -691,7 +691,8 @@ else { if (needed == 0) { /* Delete slice */ - Py_ssize_t cur, i; + size_t cur; + Py_ssize_t i; if (!_canresize(self)) return -1; Modified: python/trunk/Objects/listobject.c ============================================================================== --- python/trunk/Objects/listobject.c (original) +++ python/trunk/Objects/listobject.c Fri Jan 29 18:11:39 2010 @@ -2624,7 +2624,8 @@ if (value == NULL) { /* delete slice */ PyObject **garbage; - Py_ssize_t cur, i; + size_t cur; + Py_ssize_t i; if (slicelength <= 0) return 0; From python-checkins at python.org Fri Jan 29 18:16:19 2010 From: python-checkins at python.org (mark.dickinson) Date: Fri, 29 Jan 2010 17:16:19 -0000 Subject: [Python-checkins] r77822 - in python/branches/release26-maint: Lib/test/list_tests.py Lib/test/test_array.py Lib/test/test_bytes.py Misc/NEWS Modules/arraymodule.c Objects/bytearrayobject.c Objects/listobject.c Message-ID: Author: mark.dickinson Date: Fri Jan 29 18:16:18 2010 New Revision: 77822 Log: Merged revisions 77821 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77821 | mark.dickinson | 2010-01-29 17:11:39 +0000 (Fri, 29 Jan 2010) | 3 lines Issue #7788: Fix a crash produced by deleting a list slice with huge step value. Patch by Marcin Bachry. ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/test/list_tests.py python/branches/release26-maint/Lib/test/test_array.py python/branches/release26-maint/Lib/test/test_bytes.py python/branches/release26-maint/Misc/NEWS python/branches/release26-maint/Modules/arraymodule.c python/branches/release26-maint/Objects/bytearrayobject.c python/branches/release26-maint/Objects/listobject.c Modified: python/branches/release26-maint/Lib/test/list_tests.py ============================================================================== --- python/branches/release26-maint/Lib/test/list_tests.py (original) +++ python/branches/release26-maint/Lib/test/list_tests.py Fri Jan 29 18:16:18 2010 @@ -519,6 +519,9 @@ a = self.type2test(range(10)) a[::2] = tuple(range(5)) self.assertEqual(a, self.type2test([0, 1, 1, 3, 2, 5, 3, 7, 4, 9])) + # test issue7788 + a = self.type2test(range(10)) + del a[9::1<<333] def test_constructor_exception_handling(self): # Bug #1242657 Modified: python/branches/release26-maint/Lib/test/test_array.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_array.py (original) +++ python/branches/release26-maint/Lib/test/test_array.py Fri Jan 29 18:16:18 2010 @@ -850,6 +850,9 @@ a = array.array(self.typecode, range(10)) del a[::1000] self.assertEqual(a, array.array(self.typecode, [1,2,3,4,5,6,7,8,9])) + # test issue7788 + a = array.array(self.typecode, range(10)) + del a[9::1<<333] def test_assignment(self): a = array.array(self.typecode, range(10)) Modified: python/branches/release26-maint/Lib/test/test_bytes.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_bytes.py (original) +++ python/branches/release26-maint/Lib/test/test_bytes.py Fri Jan 29 18:16:18 2010 @@ -569,7 +569,7 @@ self.assertEqual(b, bytearray([0, 1, 2, 42, 42, 42, 3, 4, 5, 6, 7, 8, 9])) def test_extended_set_del_slice(self): - indices = (0, None, 1, 3, 19, 300, -1, -2, -31, -300) + indices = (0, None, 1, 3, 19, 300, 1<<333, -1, -2, -31, -300) for start in indices: for stop in indices: # Skip invalid step 0 Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Fri Jan 29 18:16:18 2010 @@ -12,6 +12,9 @@ Core and Builtins ----------------- +- Issue #7788: Fix an interpreter crash produced by deleting a list + slice with very large step value. + - Issue #7561: Operations on empty bytearrays (such as `int(bytearray())`) could crash in many places because of the PyByteArray_AS_STRING() macro returning NULL. The macro now returns a statically allocated empty Modified: python/branches/release26-maint/Modules/arraymodule.c ============================================================================== --- python/branches/release26-maint/Modules/arraymodule.c (original) +++ python/branches/release26-maint/Modules/arraymodule.c Fri Jan 29 18:16:18 2010 @@ -1794,8 +1794,9 @@ } else if (needed == 0) { /* Delete slice */ - Py_ssize_t cur, i; - + size_t cur; + Py_ssize_t i; + if (step < 0) { stop = start + 1; start = stop + step * (slicelength - 1) - 1; Modified: python/branches/release26-maint/Objects/bytearrayobject.c ============================================================================== --- python/branches/release26-maint/Objects/bytearrayobject.c (original) +++ python/branches/release26-maint/Objects/bytearrayobject.c Fri Jan 29 18:16:18 2010 @@ -699,7 +699,8 @@ else { if (needed == 0) { /* Delete slice */ - Py_ssize_t cur, i; + size_t cur; + Py_ssize_t i; if (!_canresize(self)) return -1; Modified: python/branches/release26-maint/Objects/listobject.c ============================================================================== --- python/branches/release26-maint/Objects/listobject.c (original) +++ python/branches/release26-maint/Objects/listobject.c Fri Jan 29 18:16:18 2010 @@ -2604,7 +2604,8 @@ if (value == NULL) { /* delete slice */ PyObject **garbage; - Py_ssize_t cur, i; + size_t cur; + Py_ssize_t i; if (slicelength <= 0) return 0; From python-checkins at python.org Fri Jan 29 18:27:24 2010 From: python-checkins at python.org (mark.dickinson) Date: Fri, 29 Jan 2010 17:27:24 -0000 Subject: [Python-checkins] r77823 - in python/branches/py3k: Lib/test/list_tests.py Lib/test/test_array.py Lib/test/test_bytes.py Misc/NEWS Modules/arraymodule.c Objects/bytearrayobject.c Objects/listobject.c Message-ID: Author: mark.dickinson Date: Fri Jan 29 18:27:24 2010 New Revision: 77823 Log: Merged revisions 77821 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77821 | mark.dickinson | 2010-01-29 17:11:39 +0000 (Fri, 29 Jan 2010) | 3 lines Issue #7788: Fix a crash produced by deleting a list slice with huge step value. Patch by Marcin Bachry. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/list_tests.py python/branches/py3k/Lib/test/test_array.py python/branches/py3k/Lib/test/test_bytes.py python/branches/py3k/Misc/NEWS python/branches/py3k/Modules/arraymodule.c python/branches/py3k/Objects/bytearrayobject.c python/branches/py3k/Objects/listobject.c Modified: python/branches/py3k/Lib/test/list_tests.py ============================================================================== --- python/branches/py3k/Lib/test/list_tests.py (original) +++ python/branches/py3k/Lib/test/list_tests.py Fri Jan 29 18:27:24 2010 @@ -540,6 +540,9 @@ a = self.type2test(range(10)) a[::2] = tuple(range(5)) self.assertEqual(a, self.type2test([0, 1, 1, 3, 2, 5, 3, 7, 4, 9])) + # test issue7788 + a = self.type2test(range(10)) + del a[9::1<<333] def test_constructor_exception_handling(self): # Bug #1242657 Modified: python/branches/py3k/Lib/test/test_array.py ============================================================================== --- python/branches/py3k/Lib/test/test_array.py (original) +++ python/branches/py3k/Lib/test/test_array.py Fri Jan 29 18:27:24 2010 @@ -1011,6 +1011,9 @@ a = array.array(self.typecode, range(10)) del a[::1000] self.assertEqual(a, array.array(self.typecode, [1,2,3,4,5,6,7,8,9])) + # test issue7788 + a = array.array(self.typecode, range(10)) + del a[9::1<<333] def test_assignment(self): a = array.array(self.typecode, range(10)) Modified: python/branches/py3k/Lib/test/test_bytes.py ============================================================================== --- python/branches/py3k/Lib/test/test_bytes.py (original) +++ python/branches/py3k/Lib/test/test_bytes.py Fri Jan 29 18:27:24 2010 @@ -600,7 +600,7 @@ self.assertEqual(b, bytearray([0, 1, 2, 42, 42, 42, 3, 4, 5, 6, 7, 8, 9])) def test_extended_set_del_slice(self): - indices = (0, None, 1, 3, 19, 300, -1, -2, -31, -300) + indices = (0, None, 1, 3, 19, 300, 1<<333, -1, -2, -31, -300) for start in indices: for stop in indices: # Skip invalid step 0 Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Fri Jan 29 18:27:24 2010 @@ -12,6 +12,9 @@ Core and Builtins ----------------- +- Issue #7788: Fix an interpreter crash produced by deleting a list + slice with very large step value. + - Issue #7766: Change sys.getwindowsversion() return value to a named tuple and add the additional members returned in an OSVERSIONINFOEX structure. The new members are service_pack_major, service_pack_minor, Modified: python/branches/py3k/Modules/arraymodule.c ============================================================================== --- python/branches/py3k/Modules/arraymodule.c (original) +++ python/branches/py3k/Modules/arraymodule.c Fri Jan 29 18:27:24 2010 @@ -2199,8 +2199,9 @@ } else if (needed == 0) { /* Delete slice */ - Py_ssize_t cur, i; - + size_t cur; + Py_ssize_t i; + if (step < 0) { stop = start + 1; start = stop + step * (slicelength - 1) - 1; Modified: python/branches/py3k/Objects/bytearrayobject.c ============================================================================== --- python/branches/py3k/Objects/bytearrayobject.c (original) +++ python/branches/py3k/Objects/bytearrayobject.c Fri Jan 29 18:27:24 2010 @@ -642,7 +642,8 @@ else { if (needed == 0) { /* Delete slice */ - Py_ssize_t cur, i; + size_t cur; + Py_ssize_t i; if (!_canresize(self)) return -1; Modified: python/branches/py3k/Objects/listobject.c ============================================================================== --- python/branches/py3k/Objects/listobject.c (original) +++ python/branches/py3k/Objects/listobject.c Fri Jan 29 18:27:24 2010 @@ -2444,7 +2444,8 @@ if (value == NULL) { /* delete slice */ PyObject **garbage; - Py_ssize_t cur, i; + size_t cur; + Py_ssize_t i; if (slicelength <= 0) return 0; From python-checkins at python.org Fri Jan 29 18:29:21 2010 From: python-checkins at python.org (mark.dickinson) Date: Fri, 29 Jan 2010 17:29:21 -0000 Subject: [Python-checkins] r77824 - in python/branches/release31-maint: Lib/test/list_tests.py Lib/test/test_array.py Lib/test/test_bytes.py Misc/NEWS Modules/arraymodule.c Objects/bytearrayobject.c Objects/listobject.c Message-ID: Author: mark.dickinson Date: Fri Jan 29 18:29:21 2010 New Revision: 77824 Log: Merged revisions 77823 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77823 | mark.dickinson | 2010-01-29 17:27:24 +0000 (Fri, 29 Jan 2010) | 10 lines Merged revisions 77821 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77821 | mark.dickinson | 2010-01-29 17:11:39 +0000 (Fri, 29 Jan 2010) | 3 lines Issue #7788: Fix a crash produced by deleting a list slice with huge step value. Patch by Marcin Bachry. ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/test/list_tests.py python/branches/release31-maint/Lib/test/test_array.py python/branches/release31-maint/Lib/test/test_bytes.py python/branches/release31-maint/Misc/NEWS python/branches/release31-maint/Modules/arraymodule.c python/branches/release31-maint/Objects/bytearrayobject.c python/branches/release31-maint/Objects/listobject.c Modified: python/branches/release31-maint/Lib/test/list_tests.py ============================================================================== --- python/branches/release31-maint/Lib/test/list_tests.py (original) +++ python/branches/release31-maint/Lib/test/list_tests.py Fri Jan 29 18:29:21 2010 @@ -540,6 +540,9 @@ a = self.type2test(range(10)) a[::2] = tuple(range(5)) self.assertEqual(a, self.type2test([0, 1, 1, 3, 2, 5, 3, 7, 4, 9])) + # test issue7788 + a = self.type2test(range(10)) + del a[9::1<<333] def test_constructor_exception_handling(self): # Bug #1242657 Modified: python/branches/release31-maint/Lib/test/test_array.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_array.py (original) +++ python/branches/release31-maint/Lib/test/test_array.py Fri Jan 29 18:29:21 2010 @@ -848,6 +848,9 @@ a = array.array(self.typecode, range(10)) del a[::1000] self.assertEqual(a, array.array(self.typecode, [1,2,3,4,5,6,7,8,9])) + # test issue7788 + a = array.array(self.typecode, range(10)) + del a[9::1<<333] def test_assignment(self): a = array.array(self.typecode, range(10)) Modified: python/branches/release31-maint/Lib/test/test_bytes.py ============================================================================== --- python/branches/release31-maint/Lib/test/test_bytes.py (original) +++ python/branches/release31-maint/Lib/test/test_bytes.py Fri Jan 29 18:29:21 2010 @@ -595,7 +595,7 @@ self.assertEqual(b, bytearray([0, 1, 2, 42, 42, 42, 3, 4, 5, 6, 7, 8, 9])) def test_extended_set_del_slice(self): - indices = (0, None, 1, 3, 19, 300, -1, -2, -31, -300) + indices = (0, None, 1, 3, 19, 300, 1<<333, -1, -2, -31, -300) for start in indices: for stop in indices: # Skip invalid step 0 Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Fri Jan 29 18:29:21 2010 @@ -12,6 +12,9 @@ Core and Builtins ----------------- +- Issue #7788: Fix an interpreter crash produced by deleting a list + slice with very large step value. + - Issue #7561: Operations on empty bytearrays (such as `int(bytearray())`) could crash in many places because of the PyByteArray_AS_STRING() macro returning NULL. The macro now returns a statically allocated empty Modified: python/branches/release31-maint/Modules/arraymodule.c ============================================================================== --- python/branches/release31-maint/Modules/arraymodule.c (original) +++ python/branches/release31-maint/Modules/arraymodule.c Fri Jan 29 18:29:21 2010 @@ -1733,8 +1733,9 @@ } else if (needed == 0) { /* Delete slice */ - Py_ssize_t cur, i; - + size_t cur; + Py_ssize_t i; + if (step < 0) { stop = start + 1; start = stop + step * (slicelength - 1) - 1; Modified: python/branches/release31-maint/Objects/bytearrayobject.c ============================================================================== --- python/branches/release31-maint/Objects/bytearrayobject.c (original) +++ python/branches/release31-maint/Objects/bytearrayobject.c Fri Jan 29 18:29:21 2010 @@ -650,7 +650,8 @@ else { if (needed == 0) { /* Delete slice */ - Py_ssize_t cur, i; + size_t cur; + Py_ssize_t i; if (!_canresize(self)) return -1; Modified: python/branches/release31-maint/Objects/listobject.c ============================================================================== --- python/branches/release31-maint/Objects/listobject.c (original) +++ python/branches/release31-maint/Objects/listobject.c Fri Jan 29 18:29:21 2010 @@ -2430,7 +2430,8 @@ if (value == NULL) { /* delete slice */ PyObject **garbage; - Py_ssize_t cur, i; + size_t cur; + Py_ssize_t i; if (slicelength <= 0) return 0; From python-checkins at python.org Fri Jan 29 18:55:47 2010 From: python-checkins at python.org (r.david.murray) Date: Fri, 29 Jan 2010 17:55:47 -0000 Subject: [Python-checkins] r77825 - in python/branches/py3k: Lib/unittest/suite.py Message-ID: Author: r.david.murray Date: Fri Jan 29 18:55:47 2010 New Revision: 77825 Log: Merged revisions 77815 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77815 | r.david.murray | 2010-01-28 16:16:33 -0500 (Thu, 28 Jan 2010) | 3 lines Change error report when the object passed to suite.addTest is not callable to include the repr of the invalid object. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/unittest/suite.py Modified: python/branches/py3k/Lib/unittest/suite.py ============================================================================== --- python/branches/py3k/Lib/unittest/suite.py (original) +++ python/branches/py3k/Lib/unittest/suite.py Fri Jan 29 18:55:47 2010 @@ -40,7 +40,7 @@ def addTest(self, test): # sanity checks if not hasattr(test, '__call__'): - raise TypeError("the test to add must be callable") + raise TypeError("{} is not callable".format(repr(test))) if isinstance(test, type) and issubclass(test, (case.TestCase, TestSuite)): raise TypeError("TestCases and TestSuites must be instantiated " From python-checkins at python.org Fri Jan 29 18:58:58 2010 From: python-checkins at python.org (r.david.murray) Date: Fri, 29 Jan 2010 17:58:58 -0000 Subject: [Python-checkins] r77826 - python/branches/release26-maint Message-ID: Author: r.david.murray Date: Fri Jan 29 18:58:58 2010 New Revision: 77826 Log: Blocked revisions 77815 via svnmerge ........ r77815 | r.david.murray | 2010-01-28 16:16:33 -0500 (Thu, 28 Jan 2010) | 3 lines Change error report when the object passed to suite.addTest is not callable to include the repr of the invalid object. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Fri Jan 29 19:01:57 2010 From: python-checkins at python.org (r.david.murray) Date: Fri, 29 Jan 2010 18:01:57 -0000 Subject: [Python-checkins] r77827 - python/branches/release31-maint Message-ID: Author: r.david.murray Date: Fri Jan 29 19:01:56 2010 New Revision: 77827 Log: Blocked revisions 77825 via svnmerge ................ r77825 | r.david.murray | 2010-01-29 12:55:47 -0500 (Fri, 29 Jan 2010) | 10 lines Merged revisions 77815 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77815 | r.david.murray | 2010-01-28 16:16:33 -0500 (Thu, 28 Jan 2010) | 3 lines Change error report when the object passed to suite.addTest is not callable to include the repr of the invalid object. ........ ................ Modified: python/branches/release31-maint/ (props changed) From python-checkins at python.org Fri Jan 29 20:35:39 2010 From: python-checkins at python.org (r.david.murray) Date: Fri, 29 Jan 2010 19:35:39 -0000 Subject: [Python-checkins] r77828 - python/trunk/Lib/unittest/case.py Message-ID: Author: r.david.murray Date: Fri Jan 29 20:35:39 2010 New Revision: 77828 Log: Fix typo in assertSequenceEqual docstring. Modified: python/trunk/Lib/unittest/case.py Modified: python/trunk/Lib/unittest/case.py ============================================================================== --- python/trunk/Lib/unittest/case.py (original) +++ python/trunk/Lib/unittest/case.py Fri Jan 29 20:35:39 2010 @@ -505,7 +505,7 @@ def assertSequenceEqual(self, seq1, seq2, msg=None, seq_type=None): """An equality assertion for ordered sequences (like lists and tuples). - For the purposes of this function, a valid orderd sequence type is one + For the purposes of this function, a valid ordered sequence type is one which can be indexed, has a length, and has an equality operator. Args: From python-checkins at python.org Fri Jan 29 21:37:07 2010 From: python-checkins at python.org (barry.warsaw) Date: Fri, 29 Jan 2010 20:37:07 -0000 Subject: [Python-checkins] r77829 - in peps/trunk: pep-3147-1.dia pep-3147-1.png pep-3147.txt Message-ID: Author: barry.warsaw Date: Fri Jan 29 21:37:07 2010 New Revision: 77829 Log: PEP 3147, PYC Repository Directories, Warsaw Added: peps/trunk/pep-3147-1.dia (contents, props changed) peps/trunk/pep-3147-1.png (contents, props changed) peps/trunk/pep-3147.txt Added: peps/trunk/pep-3147-1.dia ============================================================================== Binary file. No diff available. Added: peps/trunk/pep-3147-1.png ============================================================================== Binary file. No diff available. Added: peps/trunk/pep-3147.txt ============================================================================== --- (empty file) +++ peps/trunk/pep-3147.txt Fri Jan 29 21:37:07 2010 @@ -0,0 +1,379 @@ +PEP: 3147 +Title: PYC Repository Directories +Version: $Revision$ +Last-Modified: $Date$ +Author: Barry Warsaw +Status: Draft +Type: Standards Track +Content-Type: text/x-rst +Created: 2009-12-16 +Python-Version: 3.2 +Post-History: + + +Abstract +======== + +This PEP describes an extension to Python's import mechanism which +improves sharing of Python source code files among multiple installed +different versions of the Python interpreter. It does this by +allowing many different byte compilation files (.pyc files) to be +co-located with the Python source file (.py file). The extension +described here can also be used to support different Python +compilation caches, such as JIT output that may be produced by an +Unladen Swallow [1]_ enabled C Python. + + +Rationale +========= + +Linux distributions such as Ubuntu [2]_ and Debian [3]_ provide more +than one Python version at the same time to their users. For example, +Ubuntu 9.10 Karmic Koala can install Python 2.5, 2.6, and 3.1, with +Python 2.6 being the default. + +In order to ease the burden on operating system packagers for these +distributions, the distribution packages do not contain Python version +numbers [4]_; they are shared across all Python versions installed on +the system. Putting Python version numbers in the packages would be a +maintenance nightmare, since all the packages - *and their +dependencies* - would have to be updated every time a new Python +release was added or removed from the distribution. Because of the +sheer number of packages available, this amount of work is infeasible. + +For pure Python modules, sharing is possible because upstream +maintainers typically support multiple versions of Python in a source +compatible way. In practice though, it is well known that pyc files +are not compatible across Python major releases. A reading of +import.c [5]_ in the Python source code proves that within recent +memory, every new CPython major release has bumped the pyc magic +number. + +Even C extensions can be source compatible across multiple versions of +Python. Compiled extension modules are usually not compatible though, +and PEP 384 [6]_ has been proposed to address this by defining a +stable ABI for extension modules. + +Because the distributions cannot share pyc files, elaborate mechanisms +have been developed to put the resulting pyc files in non-shared +locations while the source code is still shared. Examples include the +symlink-based Debian regimes python-support [7]_ and python-central +[8]_. These approaches make for much more complicated, fragile, +inscrutable, and fragmented policies for delivering Python +applications to a wide range of users. Arguably more users get Python +from their operating system vendor than from upstream tarballs. Thus, +solving this pyc sharing problem for CPython is a high priority for +such vendors. + +This PEP proposes a solution to this problem. + + +Proposal +======== + +Python's import machinery is extended to search for byte code cache +files in a directory co-located with the source file, but with an +extension 'pyr'. The pyr directory contains individual files with the +cached byte compilation of the source code, identical to current pyc +and pyo files. The files inside the pyr directory retain their file +extensions, but the base name is replaced by the hexlified [10]_ magic +number of the Python version the byte code is compatible with. + +The file extension pyr was chosen because 'r' is a mnemonic for +'repository', and there appears to be no prior uses of the extension +[9]_. + +For example, a module `foo` with source code in `foo.py` and byte +compiled with Python 2.5, Python 2.6, Python 2.6 `-O`, Python 2.6 +`-U`, and Python 3.1 would have the following file system layout:: + + foo.py + foo.pyr/ + f2b30a0d.pyc # Python 2.5 + f2d10a0d.pyc # Python 2.6 + f2d10a0d.pyo # Python 2.6 -O + f2d20a0d.pyc # Python 2.6 -U + 0c4f0a0d.pyc # Python 3.1 + + +Python behavior +=============== + +When Python searches for a module to import (say `foo`), it may find +one of several situations. As per current Python rules, the term +"matching pyc" means that the magic number matches the current +interpreter's magic number, and the source file is not newer than the +`pyc` file. + +When Python finds a `foo.py` file for which no `foo.pyc` file or +`foo.pyr` directory exists, Python will by default load the `foo.py` +file and write a `foo.pyc` file next to the source file. This is +unchanged from current behavior. + +When the Python executable is given a `-R` flag, or the environment +variable `$PYTHONPYR` is set, then Python will create a `foo.pyr` +directory and write a `pyc` file to that directory with the hexlified +magic number as the base name. + +If during import, Python finds an existing `pyc` file but no `pyr` +directory, and the `$PYTHONPYR` environment variable is not set, then +the `pyc` file is loaded as normal and no `pyr` directory is created. + +If during import, Python finds a `pyr` directory with a matching `pyc` +file, *regardless of whether `$PYTHONPYR` is set or not*, then +`foo.pyr/.pyc` is loaded and import completes successfully. +Thus a matching `pyc` file inside a `pyr` directory always takes +precedence over a sibling `pyc` file. + +If during import, Python finds a `pyr` directory that does not contain +a matching `pyc` file, and no sibling `foo.pyc` file exists, Python +will load the source file and write a sibling `foo.pyc` file, unless +the `-R` flag is given in which case a `foo.pyr/.pyc` file will +be written. + +Here is a flowchart illustrating the rules. + +.. image:: pep-3147-1.png + :scale: 75 + + +Effects on non-conforming Python versions +========================================= + +Python implementations which don't know anything about `pyr` +directories will ignore them. This means that they will read and +write `pyc` files as usual. A conforming implementation will still +prefer any existing `foo.pyr/.pyc` file over an existing +sibling `pyc` file. + +The one possible conflicting state is where a sibling `pyc` file +exists, but its magic number does not match. + +In the default case, when Python finds a `pyc` file with a +non-matching magic number, it simply overwrites the `pyc` file with +the new byte code and magic number. In the absence of the `-R` flag, +this remains unchanged. When the `-R` flag was given, the +non-matching sibling `pyc` file is ignored - it is neither removed nor +overwritten - and a `foo.pyr/.pyc` file is written instead. + + +Implementation strategy +======================= + +This feature is targeted for Python 3.2, solving the problem for those +and all future versions. It may be back-ported to Python 2.7. +Vendors are free to backport the changes to earlier distributions as +they see fit. + + +Alternatives +============ + +PEP 304 +------- + +There is some overlap between the goals of this PEP and PEP 304 [12]_, +which has been withdrawn. However PEP 304 would allow a user to +create a shadow file system hierarchy in which to store `pyc` files. +This concept of a shadow hierarchy for `pyc` files could be used to +satisfy the aims of this PEP. Although the PEP 304 does not indicate +why it was withdrawn, shadow directories have a number of problems. +The location of the shadow `pyc` files would not be easily discovered +and would depend on the proper and consistent use of the +`$PYTHONBYTECODE` environment variable both by the system and by end +users. There are also global implications, meaning that while the +system might want to shadow `pyc` files, users might not want to, but +the PEP defines only an all-or-nothing approach. + +As an example of the problem, a common (though fragile) Python idiom +for locating data files is to do something like this:: + + from os import dirname, join + import foo.bar + data_file = join(dirname(foo.bar.__file__), 'my.dat') + +This would be problematic since `foo.bar.__file__` will give the +location of the `pyc` file in the shadow directory, and it may not be +possible to find the `my.dat` file relative to the source directory +from there. + +On the other hand, PEP 999 keeps all byte code artifacts co-located +with the source file. Some adjustment will have to be made for the +fact that the `pyc` file lives in a subdirectory. For example, in +current Python, when you import a module, its `__file__` attribute +points to its `pyc` file. A package's `__file__` points to the `pyc` +file for its `__init__.py`. E.g.:: + + >>> import foo + >>> foo.__file__ + 'foo.pyc' + # baz is a package + >>> import baz + >>> baz.__file__ + 'baz/__init__.pyc' + +The implementation of PEP 999 would have to ensure that the same +directory level is returned from `__file__` as it does without the +`pyr` directory, so that the common idiom above continues to work:: + + >>> import foo + >>> foo.__file__ + 'foo.pyr' + # baz is a package + >>> import baz + >>> baz.__file__ + 'baz/__init__.pyr' + +Note that some existing Python code only checks for `.py` and `.pyc` +file extensions (and possibly `.pyo`). These would have to be +extended to also check for `.pyr` extensions. + + +Fat byte compilation files +-------------------------- + +An earlier version of this PEP described "fat" Python byte code files. +These files would contain the equivalent of multiple `pyc` files in a +single `pyf` file, with a lookup table keyed off the appropriate magic +number. This was an extensible file format so that the first 5 +parallel Python implementations could be supported fairly efficiently, +but with extension lookup tables available to scale `pyf` byte code +objects as large as necessary. + +The fat byte compilation files were fairly complex, so the current +simplification of using directories was suggested. + + +Multiple file extensions +------------------------ + +The PEP author also considered an approach where multiple thin byte +compiled files lived in the same place, but used different file +extensions to designate the Python version. E.g. foo.pyc25, +foo.pyc26, foo.pyc31 etc. This was rejected because of the clutter +involved in writing so many different files. The multiple extension +approach makes it more difficult (and an ongoing task) to update any +tools that are dependent on the file extension. + + +Open questions +============== + +* Are there any concurrency issues added by this PEP, above those that + already exist? For example, what if two Python processes attempt to + write the same `.pyc` file? Is that any different than two + Python processes trying to write to the same `foo.pyc` file? + Current thinking is that there isn't since the exclusive open + mechanism currently used, will still be used to open `pyc` files + inside a `pyr` directory. + +* How do the imp [13]_ and importlib [14]_ modules need to be updated + to conform to the `pyr` directories? + +* What about `py` source files that are compatible with most but not + all installed Python versions. We might need a way to say "this py + file should be hidden from Python versions X.Y or earlier". There + are three options: + + - Use file system tricks to only share py files that are actually + sharable in all installed Python versions (e.g. different search + directories for Python X.Y and Python X.Z). + - Introduce Python syntax that is legal before __future__ imports + and is evaluated to determine if the py file is compatible, + raising an `ImportError('no module named foo')` if not. + - Add an optional metadata file co-located with the py file that + declares which Python versions it is compatible with. + + How does this requirement interact with PEP 382 namespace packages [15]_? + +* Are there any opportunities for also sharing extension modules + (.so/.dll files) in a `pyr` directory? + +* Would a moratorium on byte code changes, similar to the language + moratorium described in PEP 3003 [16]_ be a better approach to + pursue, and would that solve the problem for vendors? At the time + of this writing, PEP 3003 is silent on the issue. + + +Reference implementation +======================== + +TBD + + +References +========== + +.. [1] PEP 3146 + +.. [2] Ubuntu: + +.. [3] Debian: + +.. [4] Debian Python Policy: + http://www.debian.org/doc/packaging-manuals/python-policy/ + +.. [5] import.c: + http://svn.python.org/view/python/branches/py3k/Python/import.c?view=markup + +.. [6] PEP 384 + +.. [7] python-support: + http://wiki.debian.org/DebianPythonFAQ#Whatispython-support.3F + +.. [8] python-central: + http://wiki.debian.org/DebianPythonFAQ#Whatispython-central.3F + +.. [9] http://www.filesuffix.com/?m=search&e=pyr&submit=Search + +.. [10] binascii.hexlify(): + http://www.python.org/doc/current/library/binascii.html#binascii.hexlify + +.. [11] The marshal module: + http://www.python.org/doc/current/library/marshal.html + +.. [12] PEP 304: + +.. [13] imp: http://www.python.org/doc/current/library/imp.html + +.. [14] importlib: http://docs.python.org/3.1/library/importlib.html + +.. [15] PEP 382 + +.. [16] PEP 3003 + + +ACKNOWLEDGMENTS +=============== + +Barry Warsaw's original idea was for fat Python byte code files. +Martin von Loewis reviewed an early draft of the PEP and suggested the +simplification to store traditional `pyc` and `pyo` files in a +directory. Many other people reviewed early versions of this PEP and +provided useful feedback including: + +* David Malcolm +* Josselin Mouette +* Matthias Klose +* Michael Hudson +* Michael Vogt +* Piotr O?arowski +* Scott Kitterman +* Toshio Kuratomi + + +Copyright +========= + +This document has been placed in the public domain. + + + +.. + Local Variables: + mode: indented-text + indent-tabs-mode: nil + sentence-end-double-space: t + fill-column: 70 + coding: utf-8 + End: From python-checkins at python.org Fri Jan 29 23:12:01 2010 From: python-checkins at python.org (r.david.murray) Date: Fri, 29 Jan 2010 22:12:01 -0000 Subject: [Python-checkins] r77830 - python/branches/release26-maint Message-ID: Author: r.david.murray Date: Fri Jan 29 23:12:01 2010 New Revision: 77830 Log: Blocked revisions 77828 via svnmerge ........ r77828 | r.david.murray | 2010-01-29 14:35:39 -0500 (Fri, 29 Jan 2010) | 2 lines Fix typo in assertSequenceEqual docstring. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Fri Jan 29 23:17:58 2010 From: python-checkins at python.org (r.david.murray) Date: Fri, 29 Jan 2010 22:17:58 -0000 Subject: [Python-checkins] r77831 - in python/branches/py3k: Lib/unittest/case.py Message-ID: Author: r.david.murray Date: Fri Jan 29 23:17:58 2010 New Revision: 77831 Log: Merged revisions 77828 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77828 | r.david.murray | 2010-01-29 14:35:39 -0500 (Fri, 29 Jan 2010) | 2 lines Fix typo in assertSequenceEqual docstring. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/unittest/case.py Modified: python/branches/py3k/Lib/unittest/case.py ============================================================================== --- python/branches/py3k/Lib/unittest/case.py (original) +++ python/branches/py3k/Lib/unittest/case.py Fri Jan 29 23:17:58 2010 @@ -518,7 +518,7 @@ def assertSequenceEqual(self, seq1, seq2, msg=None, seq_type=None): """An equality assertion for ordered sequences (like lists and tuples). - For the purposes of this function, a valid orderd sequence type is one + For the purposes of this function, a valid ordered sequence type is one which can be indexed, has a length, and has an equality operator. Args: From python-checkins at python.org Fri Jan 29 23:26:45 2010 From: python-checkins at python.org (r.david.murray) Date: Fri, 29 Jan 2010 22:26:45 -0000 Subject: [Python-checkins] r77832 - python/branches/release31-maint/Lib/unittest.py Message-ID: Author: r.david.murray Date: Fri Jan 29 23:26:45 2010 New Revision: 77832 Log: Fix typo in assertSequenceEqual docstring. Modified: python/branches/release31-maint/Lib/unittest.py Modified: python/branches/release31-maint/Lib/unittest.py ============================================================================== --- python/branches/release31-maint/Lib/unittest.py (original) +++ python/branches/release31-maint/Lib/unittest.py Fri Jan 29 23:26:45 2010 @@ -692,7 +692,7 @@ def assertSequenceEqual(self, seq1, seq2, msg=None, seq_type=None): """An equality assertion for ordered sequences (like lists and tuples). - For the purposes of this function, a valid orderd sequence type is one + For the purposes of this function, a valid ordered sequence type is one which can be indexed, has a length, and has an equality operator. Args: From python-checkins at python.org Fri Jan 29 23:29:35 2010 From: python-checkins at python.org (r.david.murray) Date: Fri, 29 Jan 2010 22:29:35 -0000 Subject: [Python-checkins] r77833 - python/branches/release31-maint Message-ID: Author: r.david.murray Date: Fri Jan 29 23:29:35 2010 New Revision: 77833 Log: Recorded merge of revisions 77831 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77831 | r.david.murray | 2010-01-29 17:17:58 -0500 (Fri, 29 Jan 2010) | 9 lines Merged revisions 77828 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77828 | r.david.murray | 2010-01-29 14:35:39 -0500 (Fri, 29 Jan 2010) | 2 lines Fix typo in assertSequenceEqual docstring. ........ ................ Modified: python/branches/release31-maint/ (props changed) From solipsis at pitrou.net Sat Jan 30 01:04:48 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Sat, 30 Jan 2010 01:04:48 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77825): sum=0 Message-ID: <20100130000448.56DB21770B@ns6635.ovh.net> py3k results for svn r77825 (hg cset c4bc5f8dc883) -------------------------------------------------- test_os leaked [-23, 23, 0] references, sum=0 Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflogzcL5gQ', '-x', 'test_httpservers'] From python-checkins at python.org Sat Jan 30 01:15:44 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 30 Jan 2010 00:15:44 -0000 Subject: [Python-checkins] r77834 - python/trunk/Misc/developers.txt Message-ID: Author: martin.v.loewis Date: Sat Jan 30 01:15:44 2010 New Revision: 77834 Log: Add Victor Stinner. Modified: python/trunk/Misc/developers.txt Modified: python/trunk/Misc/developers.txt ============================================================================== --- python/trunk/Misc/developers.txt (original) +++ python/trunk/Misc/developers.txt Sat Jan 30 01:15:44 2010 @@ -20,6 +20,9 @@ Permissions History ------------------- +- Victor Stinner was given SVN access on January 30 2010 by MvL, + at recommendation by Mark Dickinson and Amaury Forgeot d'Arc. + - Stefan Krah was given SVN access on January 5 2010 by GFB, at suggestion of Mark Dickinson, for work on the decimal module. From python-checkins at python.org Sat Jan 30 01:16:49 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 30 Jan 2010 00:16:49 -0000 Subject: [Python-checkins] r77835 - in python/branches/py3k: Misc/developers.txt Message-ID: Author: martin.v.loewis Date: Sat Jan 30 01:16:49 2010 New Revision: 77835 Log: Merged revisions 77834 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77834 | martin.v.loewis | 2010-01-30 01:15:44 +0100 (Sa, 30 Jan 2010) | 2 lines Add Victor Stinner. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Misc/developers.txt Modified: python/branches/py3k/Misc/developers.txt ============================================================================== --- python/branches/py3k/Misc/developers.txt (original) +++ python/branches/py3k/Misc/developers.txt Sat Jan 30 01:16:49 2010 @@ -20,6 +20,9 @@ Permissions History ------------------- +- Victor Stinner was given SVN access on January 30 2010 by MvL, + at recommendation by Mark Dickinson and Amaury Forgeot d'Arc. + - Stefan Krah was given SVN access on January 5 2010 by GFB, at suggestion of Mark Dickinson, for work on the decimal module. From nnorwitz at gmail.com Sat Jan 30 01:49:11 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Fri, 29 Jan 2010 19:49:11 -0500 Subject: [Python-checkins] Python Regression Test Failures refleak (1) Message-ID: <20100130004911.GA27828@kbk-i386-bb.psfb.org> More important issues: ---------------------- test_bz2 leaked [0, 0, 84] references, sum=84 Less important issues: ---------------------- test_popen2 leaked [-29, 54, -54] references, sum=-29 From python-checkins at python.org Sat Jan 30 03:00:27 2010 From: python-checkins at python.org (victor.stinner) Date: Sat, 30 Jan 2010 02:00:27 -0000 Subject: [Python-checkins] r77836 - python/trunk/Doc/library/xmlrpclib.rst Message-ID: Author: victor.stinner Date: Sat Jan 30 03:00:26 2010 New Revision: 77836 Log: #7801: fix xmlrpclib binary example, open the picture in binary mode Modified: python/trunk/Doc/library/xmlrpclib.rst Modified: python/trunk/Doc/library/xmlrpclib.rst ============================================================================== --- python/trunk/Doc/library/xmlrpclib.rst (original) +++ python/trunk/Doc/library/xmlrpclib.rst Sat Jan 30 03:00:26 2010 @@ -318,7 +318,7 @@ import xmlrpclib def python_logo(): - with open("python_logo.jpg") as handle: + with open("python_logo.jpg", "rb") as handle: return xmlrpclib.Binary(handle.read()) server = SimpleXMLRPCServer(("localhost", 8000)) @@ -332,7 +332,7 @@ import xmlrpclib proxy = xmlrpclib.ServerProxy("http://localhost:8000/") - with open("fetched_python_logo.jpg", "w") as handle: + with open("fetched_python_logo.jpg", "wb") as handle: handle.write(proxy.python_logo().data) .. _fault-objects: From python-checkins at python.org Sat Jan 30 03:04:58 2010 From: python-checkins at python.org (victor.stinner) Date: Sat, 30 Jan 2010 02:04:58 -0000 Subject: [Python-checkins] r77837 - in python/branches/release26-maint: Doc/library/xmlrpclib.rst Message-ID: Author: victor.stinner Date: Sat Jan 30 03:04:58 2010 New Revision: 77837 Log: Merged revisions 77836 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77836 | victor.stinner | 2010-01-30 03:00:26 +0100 (sam., 30 janv. 2010) | 2 lines #7801: fix xmlrpclib binary example, open the picture in binary mode ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Doc/library/xmlrpclib.rst Modified: python/branches/release26-maint/Doc/library/xmlrpclib.rst ============================================================================== --- python/branches/release26-maint/Doc/library/xmlrpclib.rst (original) +++ python/branches/release26-maint/Doc/library/xmlrpclib.rst Sat Jan 30 03:04:58 2010 @@ -318,7 +318,7 @@ import xmlrpclib def python_logo(): - with open("python_logo.jpg") as handle: + with open("python_logo.jpg", "rb") as handle: return xmlrpclib.Binary(handle.read()) server = SimpleXMLRPCServer(("localhost", 8000)) @@ -332,7 +332,7 @@ import xmlrpclib proxy = xmlrpclib.ServerProxy("http://localhost:8000/") - with open("fetched_python_logo.jpg", "w") as handle: + with open("fetched_python_logo.jpg", "wb") as handle: handle.write(proxy.python_logo().data) .. _fault-objects: From python-checkins at python.org Sat Jan 30 03:16:55 2010 From: python-checkins at python.org (victor.stinner) Date: Sat, 30 Jan 2010 02:16:55 -0000 Subject: [Python-checkins] r77838 - python/branches/py3k/Doc/library/xmlrpc.client.rst Message-ID: Author: victor.stinner Date: Sat Jan 30 03:16:55 2010 New Revision: 77838 Log: #7801: fix xmlrpclib binary example, open the picture in binary mode Use also the with syntax (consistent with python trunk example). Modified: python/branches/py3k/Doc/library/xmlrpc.client.rst Modified: python/branches/py3k/Doc/library/xmlrpc.client.rst ============================================================================== --- python/branches/py3k/Doc/library/xmlrpc.client.rst (original) +++ python/branches/py3k/Doc/library/xmlrpc.client.rst Sat Jan 30 03:16:55 2010 @@ -283,9 +283,8 @@ import xmlrpc.client def python_logo(): - handle = open("python_logo.jpg") - return xmlrpc.client.Binary(handle.read()) - handle.close() + with open("python_logo.jpg", "rb") as handle: + return xmlrpc.client.Binary(handle.read()) server = SimpleXMLRPCServer(("localhost", 8000)) print("Listening on port 8000...") @@ -298,9 +297,8 @@ import xmlrpc.client proxy = xmlrpc.client.ServerProxy("http://localhost:8000/") - handle = open("fetched_python_logo.jpg", "w") - handle.write(proxy.python_logo().data) - handle.close() + with open("fetched_python_logo.jpg", "wb") as handle: + handle.write(proxy.python_logo().data) .. _fault-objects: From python-checkins at python.org Sat Jan 30 03:19:14 2010 From: python-checkins at python.org (victor.stinner) Date: Sat, 30 Jan 2010 02:19:14 -0000 Subject: [Python-checkins] r77839 - in python/branches/release31-maint: Doc/library/xmlrpc.client.rst Message-ID: Author: victor.stinner Date: Sat Jan 30 03:19:14 2010 New Revision: 77839 Log: Merged revisions 77838 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ........ r77838 | victor.stinner | 2010-01-30 03:16:55 +0100 (sam., 30 janv. 2010) | 4 lines #7801: fix xmlrpclib binary example, open the picture in binary mode Use also the with syntax (consistent with python trunk example). ........ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Doc/library/xmlrpc.client.rst Modified: python/branches/release31-maint/Doc/library/xmlrpc.client.rst ============================================================================== --- python/branches/release31-maint/Doc/library/xmlrpc.client.rst (original) +++ python/branches/release31-maint/Doc/library/xmlrpc.client.rst Sat Jan 30 03:19:14 2010 @@ -283,9 +283,8 @@ import xmlrpc.client def python_logo(): - handle = open("python_logo.jpg") - return xmlrpc.client.Binary(handle.read()) - handle.close() + with open("python_logo.jpg", "rb") as handle: + return xmlrpc.client.Binary(handle.read()) server = SimpleXMLRPCServer(("localhost", 8000)) print("Listening on port 8000...") @@ -298,9 +297,8 @@ import xmlrpc.client proxy = xmlrpc.client.ServerProxy("http://localhost:8000/") - handle = open("fetched_python_logo.jpg", "w") - handle.write(proxy.python_logo().data) - handle.close() + with open("fetched_python_logo.jpg", "wb") as handle: + handle.write(proxy.python_logo().data) .. _fault-objects: From python-checkins at python.org Sat Jan 30 03:30:00 2010 From: python-checkins at python.org (victor.stinner) Date: Sat, 30 Jan 2010 02:30:00 -0000 Subject: [Python-checkins] r77840 - python/branches/py3k Message-ID: Author: victor.stinner Date: Sat Jan 30 03:30:00 2010 New Revision: 77840 Log: Blocked revisions 77836 via svnmerge ........ r77836 | victor.stinner | 2010-01-30 03:00:26 +0100 (sam., 30 janv. 2010) | 2 lines #7801: fix xmlrpclib binary example, open the picture in binary mode ........ I wrote a different patch for the py3k (r77838). Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Sat Jan 30 08:22:54 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 30 Jan 2010 07:22:54 -0000 Subject: [Python-checkins] r77841 - in python/trunk/Lib/test: test_anydbm.py test_bsddb.py test_commands.py test_hotshot.py test_linuxaudiodev.py test_mailbox.py test_multifile.py test_pyclbr.py test_shelve.py test_transformer.py test_urllib2_localnet.py test_urllibnet.py test_whichdb.py test_xmllib.py Message-ID: Author: ezio.melotti Date: Sat Jan 30 08:22:54 2010 New Revision: 77841 Log: #7092: silence py3k warnings for deprecated modules Modified: python/trunk/Lib/test/test_anydbm.py python/trunk/Lib/test/test_bsddb.py python/trunk/Lib/test/test_commands.py python/trunk/Lib/test/test_hotshot.py python/trunk/Lib/test/test_linuxaudiodev.py python/trunk/Lib/test/test_mailbox.py python/trunk/Lib/test/test_multifile.py python/trunk/Lib/test/test_pyclbr.py python/trunk/Lib/test/test_shelve.py python/trunk/Lib/test/test_transformer.py python/trunk/Lib/test/test_urllib2_localnet.py python/trunk/Lib/test/test_urllibnet.py python/trunk/Lib/test/test_whichdb.py python/trunk/Lib/test/test_xmllib.py Modified: python/trunk/Lib/test/test_anydbm.py ============================================================================== --- python/trunk/Lib/test/test_anydbm.py (original) +++ python/trunk/Lib/test/test_anydbm.py Sat Jan 30 08:22:54 2010 @@ -5,12 +5,14 @@ import os import unittest -import anydbm import glob from test import test_support _fname = test_support.TESTFN +# Silence Py3k warning +anydbm = test_support.import_module('anydbm', deprecated=True) + def _delete_files(): # we don't know the precise name the underlying database uses # so we use glob to locate all names Modified: python/trunk/Lib/test/test_bsddb.py ============================================================================== --- python/trunk/Lib/test/test_bsddb.py (original) +++ python/trunk/Lib/test/test_bsddb.py Sat Jan 30 08:22:54 2010 @@ -10,8 +10,9 @@ # Skip test if _bsddb wasn't built. test_support.import_module('_bsddb') -import bsddb -import dbhash # Just so we know it's imported +bsddb = test_support.import_module('bsddb', deprecated=True) +# Just so we know it's imported: +test_support.import_module('dbhash', deprecated=True) class TestBSDDB(unittest.TestCase): Modified: python/trunk/Lib/test/test_commands.py ============================================================================== --- python/trunk/Lib/test/test_commands.py (original) +++ python/trunk/Lib/test/test_commands.py Sat Jan 30 08:22:54 2010 @@ -9,7 +9,10 @@ warnings.filterwarnings('ignore', r".*commands.getstatus.. is deprecated", DeprecationWarning) -from test.test_support import run_unittest, reap_children +from test.test_support import run_unittest, reap_children, import_module + +# Silence Py3k warning +import_module('commands', deprecated=True) from commands import * # The module says: Modified: python/trunk/Lib/test/test_hotshot.py ============================================================================== --- python/trunk/Lib/test/test_hotshot.py (original) +++ python/trunk/Lib/test/test_hotshot.py Sat Jan 30 08:22:54 2010 @@ -1,5 +1,3 @@ -import hotshot -import hotshot.log import os import pprint import unittest @@ -9,6 +7,8 @@ from test import test_support +# Silence Py3k warning +hotshot = test_support.import_module('hotshot', deprecated=True) from hotshot.log import ENTER, EXIT, LINE Modified: python/trunk/Lib/test/test_linuxaudiodev.py ============================================================================== --- python/trunk/Lib/test/test_linuxaudiodev.py (original) +++ python/trunk/Lib/test/test_linuxaudiodev.py Sat Jan 30 08:22:54 2010 @@ -4,12 +4,13 @@ from test.test_support import findfile, run_unittest import errno -linuxaudiodev = test_support.import_module('linuxaudiodev', deprecated=True) import sys -import sunaudio import audioop import unittest +linuxaudiodev = test_support.import_module('linuxaudiodev', deprecated=True) +sunaudio = test_support.import_module('sunaudio', deprecated=True) + SND_FORMAT_MULAW_8 = 1 class LinuxAudioDevTests(unittest.TestCase): Modified: python/trunk/Lib/test/test_mailbox.py ============================================================================== --- python/trunk/Lib/test/test_mailbox.py (original) +++ python/trunk/Lib/test/test_mailbox.py Sat Jan 30 08:22:54 2010 @@ -5,7 +5,6 @@ import socket import email import email.message -import rfc822 import re import StringIO from test import test_support @@ -17,6 +16,8 @@ except ImportError: pass +# Silence Py3k warning +rfc822 = test_support.import_module('rfc822', deprecated=True) class TestBase(unittest.TestCase): Modified: python/trunk/Lib/test/test_multifile.py ============================================================================== --- python/trunk/Lib/test/test_multifile.py (original) +++ python/trunk/Lib/test/test_multifile.py Sat Jan 30 08:22:54 2010 @@ -1,5 +1,5 @@ from test import test_support -import mimetools +mimetools = test_support.import_module('mimetools', deprecated=True) multifile = test_support.import_module('multifile', deprecated=True) import cStringIO Modified: python/trunk/Lib/test/test_pyclbr.py ============================================================================== --- python/trunk/Lib/test/test_pyclbr.py (original) +++ python/trunk/Lib/test/test_pyclbr.py Sat Jan 30 08:22:54 2010 @@ -2,7 +2,7 @@ Test cases for pyclbr.py Nick Mathewson ''' -from test.test_support import run_unittest +from test.test_support import run_unittest, import_module import sys from types import ClassType, FunctionType, MethodType, BuiltinFunctionType import pyclbr @@ -11,8 +11,10 @@ StaticMethodType = type(staticmethod(lambda: None)) ClassMethodType = type(classmethod(lambda c: None)) -# This next line triggers an error on old versions of pyclbr. +# Silence Py3k warning +import_module('commands', deprecated=True) +# This next line triggers an error on old versions of pyclbr. from commands import getstatus # Here we test the python class browser code. @@ -40,16 +42,16 @@ def assertHaskey(self, obj, key, ignore): - ''' succeed iff obj.has_key(key) or key in ignore. ''' + ''' succeed iff key in obj or key in ignore. ''' if key in ignore: return - if not obj.has_key(key): - print >>sys.stderr, "***",key - self.assertTrue(obj.has_key(key)) + if key not in obj: + print >>sys.stderr, "***", key + self.assertIn(key, obj) def assertEqualsOrIgnored(self, a, b, ignore): ''' succeed iff a == b or a in ignore or b in ignore ''' if a not in ignore and b not in ignore: - self.assertEquals(a, b) + self.assertEqual(a, b) def checkModule(self, moduleName, module=None, ignore=()): ''' succeed iff pyclbr.readmodule_ex(modulename) corresponds @@ -149,7 +151,9 @@ def test_easy(self): self.checkModule('pyclbr') self.checkModule('doctest', ignore=("DocTestCase",)) - self.checkModule('rfc822') + # Silence Py3k warning + rfc822 = import_module('rfc822', deprecated=True) + self.checkModule('rfc822', rfc822) self.checkModule('difflib') def test_decorators(self): Modified: python/trunk/Lib/test/test_shelve.py ============================================================================== --- python/trunk/Lib/test/test_shelve.py (original) +++ python/trunk/Lib/test/test_shelve.py Sat Jan 30 08:22:54 2010 @@ -4,6 +4,8 @@ import glob from test import test_support +test_support.import_module('anydbm', deprecated=True) + class TestCase(unittest.TestCase): fn = "shelftemp" + os.extsep + "db" Modified: python/trunk/Lib/test/test_transformer.py ============================================================================== --- python/trunk/Lib/test/test_transformer.py (original) +++ python/trunk/Lib/test/test_transformer.py Sat Jan 30 08:22:54 2010 @@ -1,5 +1,8 @@ import unittest from test import test_support + +# Silence Py3k warning +test_support.import_module('compiler', deprecated=True) from compiler import transformer, ast from compiler import compile Modified: python/trunk/Lib/test/test_urllib2_localnet.py ============================================================================== --- python/trunk/Lib/test/test_urllib2_localnet.py (original) +++ python/trunk/Lib/test/test_urllib2_localnet.py Sat Jan 30 08:22:54 2010 @@ -1,6 +1,5 @@ #!/usr/bin/env python -import mimetools import threading import urlparse import urllib2 @@ -8,6 +7,7 @@ import unittest import hashlib from test import test_support +mimetools = test_support.import_module('mimetools', deprecated=True) # Loopback http server infrastructure @@ -154,13 +154,13 @@ if len(self._users) == 0: return True - if not request_handler.headers.has_key('Proxy-Authorization'): + if 'Proxy-Authorization' not in request_handler.headers: return self._return_auth_challenge(request_handler) else: auth_dict = self._create_auth_dict( request_handler.headers['Proxy-Authorization'] ) - if self._users.has_key(auth_dict["username"]): + if auth_dict["username"] in self._users: password = self._users[ auth_dict["username"] ] else: return self._return_auth_challenge(request_handler) Modified: python/trunk/Lib/test/test_urllibnet.py ============================================================================== --- python/trunk/Lib/test/test_urllibnet.py (original) +++ python/trunk/Lib/test/test_urllibnet.py Sat Jan 30 08:22:54 2010 @@ -7,7 +7,7 @@ import urllib import sys import os -import mimetools +mimetools = test_support.import_module("mimetools", deprecated=True) def _open_with_retry(func, host, *args, **kwargs): Modified: python/trunk/Lib/test/test_whichdb.py ============================================================================== --- python/trunk/Lib/test/test_whichdb.py (original) +++ python/trunk/Lib/test/test_whichdb.py Sat Jan 30 08:22:54 2010 @@ -7,11 +7,13 @@ import test.test_support import unittest import whichdb -import anydbm import glob _fname = test.test_support.TESTFN +# Silence Py3k warning +anydbm = test.test_support.import_module('anydbm', deprecated=True) + def _delete_files(): # we don't know the precise name the underlying database uses # so we use glob to locate all names @@ -37,8 +39,9 @@ # we define a new test method for each # candidate database module. try: - mod = __import__(name) - except ImportError: + # Silence Py3k warning + mod = test.test_support.import_module(name, deprecated=True) + except unittest.SkipTest: continue def test_whichdb_name(self, name=name, mod=mod): Modified: python/trunk/Lib/test/test_xmllib.py ============================================================================== --- python/trunk/Lib/test/test_xmllib.py (original) +++ python/trunk/Lib/test/test_xmllib.py Sat Jan 30 08:22:54 2010 @@ -15,13 +15,10 @@ nsdoc = "" -import warnings -warnings.filterwarnings("ignore", ".* xmllib .* obsolete.*", - DeprecationWarning, r'xmllib$') - from test import test_support import unittest -import xmllib +# Silence Py3k warning +xmllib = test_support.import_module('xmllib', deprecated=True) class XMLParserTestCase(unittest.TestCase): From python-checkins at python.org Sat Jan 30 11:08:34 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 30 Jan 2010 10:08:34 -0000 Subject: [Python-checkins] r77842 - in python/trunk: Doc/c-api/long.rst Include/longobject.h Misc/NEWS Modules/_testcapimodule.c Objects/longobject.c Message-ID: Author: mark.dickinson Date: Sat Jan 30 11:08:33 2010 New Revision: 77842 Log: Issue #7767: Add new C-API function PyLong_AsLongLongAndOverflow, a long long variant of PyLong_AsLongAndOverflow. Patch by Case Van Horsen. Modified: python/trunk/Doc/c-api/long.rst python/trunk/Include/longobject.h python/trunk/Misc/NEWS python/trunk/Modules/_testcapimodule.c python/trunk/Objects/longobject.c Modified: python/trunk/Doc/c-api/long.rst ============================================================================== --- python/trunk/Doc/c-api/long.rst (original) +++ python/trunk/Doc/c-api/long.rst Sat Jan 30 11:08:33 2010 @@ -146,6 +146,19 @@ .. versionadded:: 2.7 +.. cfunction:: PY_LONG_LONG PyLong_AsLongLongAndOverflow(PyObject *pylong, int* overflow) + + Return a C :ctype:`long long` representation of the contents of + *pylong*. If *pylong* is greater than :const:`PY_LLONG_MAX` or less + than :const:`PY_LLONG_MIN`, set `*overflow` to ``1`` or ``-1``, + respectively, and return ``-1``; otherwise, set `*overflow` to + ``0``. If any other exception occurs (for example a TypeError or + MemoryError), then ``-1`` will be returned and ``*overflow`` will + be ``0``. + + .. versionadded:: 2.7 + + .. cfunction:: Py_ssize_t PyLong_AsSsize_t(PyObject *pylong) .. index:: Modified: python/trunk/Include/longobject.h ============================================================================== --- python/trunk/Include/longobject.h (original) +++ python/trunk/Include/longobject.h Sat Jan 30 11:08:33 2010 @@ -51,6 +51,7 @@ PyAPI_FUNC(PY_LONG_LONG) PyLong_AsLongLong(PyObject *); PyAPI_FUNC(unsigned PY_LONG_LONG) PyLong_AsUnsignedLongLong(PyObject *); PyAPI_FUNC(unsigned PY_LONG_LONG) PyLong_AsUnsignedLongLongMask(PyObject *); +PyAPI_FUNC(PY_LONG_LONG) PyLong_AsLongLongAndOverflow(PyObject *, int *); #endif /* HAVE_LONG_LONG */ PyAPI_FUNC(PyObject *) PyLong_FromString(char *, char **, int); Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sat Jan 30 11:08:33 2010 @@ -254,6 +254,9 @@ C-API ----- +- Issue #7767: New function PyLong_AsLongLongAndOverflow added, + analogous to PyLong_AsLongAndOverflow. + - Issue #5080: The argument parsing functions PyArg_ParseTuple, PyArg_ParseTupleAndKeywords, PyArg_VaParse, PyArg_VaParseTupleAndKeywords and PyArg_Parse no longer accept float Modified: python/trunk/Modules/_testcapimodule.c ============================================================================== --- python/trunk/Modules/_testcapimodule.c (original) +++ python/trunk/Modules/_testcapimodule.c Sat Jan 30 11:08:33 2010 @@ -523,6 +523,171 @@ return Py_None; } +/* Test the PyLong_AsLongLongAndOverflow API. General conversion to + PY_LONG_LONG is tested by test_long_api_inner. This test will + concentrate on proper handling of overflow. +*/ + +static PyObject * +test_long_long_and_overflow(PyObject *self) +{ + PyObject *num, *one, *temp; + PY_LONG_LONG value; + int overflow; + + /* Test that overflow is set properly for a large value. */ + /* num is a number larger than PY_LLONG_MAX on a typical machine. */ + num = PyLong_FromString("FFFFFFFFFFFFFFFFFFFFFFFF", NULL, 16); + if (num == NULL) + return NULL; + overflow = 1234; + value = PyLong_AsLongLongAndOverflow(num, &overflow); + Py_DECREF(num); + if (value == -1 && PyErr_Occurred()) + return NULL; + if (value != -1) + return raiseTestError("test_long_long_and_overflow", + "return value was not set to -1"); + if (overflow != 1) + return raiseTestError("test_long_long_and_overflow", + "overflow was not set to 1"); + + /* Same again, with num = PY_LLONG_MAX + 1 */ + num = PyLong_FromLongLong(PY_LLONG_MAX); + if (num == NULL) + return NULL; + one = PyLong_FromLong(1L); + if (one == NULL) { + Py_DECREF(num); + return NULL; + } + temp = PyNumber_Add(num, one); + Py_DECREF(one); + Py_DECREF(num); + num = temp; + if (num == NULL) + return NULL; + overflow = 0; + value = PyLong_AsLongLongAndOverflow(num, &overflow); + Py_DECREF(num); + if (value == -1 && PyErr_Occurred()) + return NULL; + if (value != -1) + return raiseTestError("test_long_long_and_overflow", + "return value was not set to -1"); + if (overflow != 1) + return raiseTestError("test_long_long_and_overflow", + "overflow was not set to 1"); + + /* Test that overflow is set properly for a large negative value. */ + /* num is a number smaller than PY_LLONG_MIN on a typical platform */ + num = PyLong_FromString("-FFFFFFFFFFFFFFFFFFFFFFFF", NULL, 16); + if (num == NULL) + return NULL; + overflow = 1234; + value = PyLong_AsLongLongAndOverflow(num, &overflow); + Py_DECREF(num); + if (value == -1 && PyErr_Occurred()) + return NULL; + if (value != -1) + return raiseTestError("test_long_long_and_overflow", + "return value was not set to -1"); + if (overflow != -1) + return raiseTestError("test_long_long_and_overflow", + "overflow was not set to -1"); + + /* Same again, with num = PY_LLONG_MIN - 1 */ + num = PyLong_FromLongLong(PY_LLONG_MIN); + if (num == NULL) + return NULL; + one = PyLong_FromLong(1L); + if (one == NULL) { + Py_DECREF(num); + return NULL; + } + temp = PyNumber_Subtract(num, one); + Py_DECREF(one); + Py_DECREF(num); + num = temp; + if (num == NULL) + return NULL; + overflow = 0; + value = PyLong_AsLongLongAndOverflow(num, &overflow); + Py_DECREF(num); + if (value == -1 && PyErr_Occurred()) + return NULL; + if (value != -1) + return raiseTestError("test_long_long_and_overflow", + "return value was not set to -1"); + if (overflow != -1) + return raiseTestError("test_long_long_and_overflow", + "overflow was not set to -1"); + + /* Test that overflow is cleared properly for small values. */ + num = PyLong_FromString("FF", NULL, 16); + if (num == NULL) + return NULL; + overflow = 1234; + value = PyLong_AsLongLongAndOverflow(num, &overflow); + Py_DECREF(num); + if (value == -1 && PyErr_Occurred()) + return NULL; + if (value != 0xFF) + return raiseTestError("test_long_long_and_overflow", + "expected return value 0xFF"); + if (overflow != 0) + return raiseTestError("test_long_long_and_overflow", + "overflow was not cleared"); + + num = PyLong_FromString("-FF", NULL, 16); + if (num == NULL) + return NULL; + overflow = 0; + value = PyLong_AsLongLongAndOverflow(num, &overflow); + Py_DECREF(num); + if (value == -1 && PyErr_Occurred()) + return NULL; + if (value != -0xFF) + return raiseTestError("test_long_long_and_overflow", + "expected return value 0xFF"); + if (overflow != 0) + return raiseTestError("test_long_long_and_overflow", + "overflow was set incorrectly"); + + num = PyLong_FromLongLong(PY_LLONG_MAX); + if (num == NULL) + return NULL; + overflow = 1234; + value = PyLong_AsLongLongAndOverflow(num, &overflow); + Py_DECREF(num); + if (value == -1 && PyErr_Occurred()) + return NULL; + if (value != PY_LLONG_MAX) + return raiseTestError("test_long_long_and_overflow", + "expected return value PY_LLONG_MAX"); + if (overflow != 0) + return raiseTestError("test_long_long_and_overflow", + "overflow was not cleared"); + + num = PyLong_FromLongLong(PY_LLONG_MIN); + if (num == NULL) + return NULL; + overflow = 0; + value = PyLong_AsLongLongAndOverflow(num, &overflow); + Py_DECREF(num); + if (value == -1 && PyErr_Occurred()) + return NULL; + if (value != PY_LLONG_MIN) + return raiseTestError("test_long_long_and_overflow", + "expected return value PY_LLONG_MIN"); + if (overflow != 0) + return raiseTestError("test_long_long_and_overflow", + "overflow was not cleared"); + + Py_INCREF(Py_None); + return Py_None; +} + /* Test the L code for PyArg_ParseTuple. This should deliver a PY_LONG_LONG for both long and int arguments. The test may leak a little memory if it fails. @@ -1252,6 +1417,8 @@ {"getargs_L", getargs_L, METH_VARARGS}, {"getargs_K", getargs_K, METH_VARARGS}, {"test_longlong_api", test_longlong_api, METH_NOARGS}, + {"test_long_long_and_overflow", + (PyCFunction)test_long_long_and_overflow, METH_NOARGS}, {"test_L_code", (PyCFunction)test_L_code, METH_NOARGS}, {"codec_incrementalencoder", (PyCFunction)codec_incrementalencoder, METH_VARARGS}, Modified: python/trunk/Objects/longobject.c ============================================================================== --- python/trunk/Objects/longobject.c (original) +++ python/trunk/Objects/longobject.c Sat Jan 30 11:08:33 2010 @@ -821,6 +821,7 @@ */ #define IS_LITTLE_ENDIAN (int)*(unsigned char*)&one +#define PY_ABS_LLONG_MIN (0-(unsigned PY_LONG_LONG)PY_LLONG_MIN) /* Create a new long int object from a C PY_LONG_LONG int. */ @@ -1023,6 +1024,109 @@ } return x * sign; } + +/* Get a C long long int from a Python long or Python int object. + On overflow, returns -1 and sets *overflow to 1 or -1 depending + on the sign of the result. Otherwise *overflow is 0. + + For other errors (e.g., type error), returns -1 and sets an error + condition. +*/ + +PY_LONG_LONG +PyLong_AsLongLongAndOverflow(PyObject *vv, int *overflow) +{ + /* This version by Tim Peters */ + register PyLongObject *v; + unsigned PY_LONG_LONG x, prev; + PY_LONG_LONG res; + Py_ssize_t i; + int sign; + int do_decref = 0; /* if nb_int was called */ + + *overflow = 0; + if (vv == NULL) { + PyErr_BadInternalCall(); + return -1; + } + + if (PyInt_Check(vv)) + return PyInt_AsLong(vv); + + if (!PyLong_Check(vv)) { + PyNumberMethods *nb; + nb = vv->ob_type->tp_as_number; + if (nb == NULL || nb->nb_int == NULL) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + return -1; + } + vv = (*nb->nb_int) (vv); + if (vv == NULL) + return -1; + do_decref = 1; + if(PyInt_Check(vv)) { + res = PyInt_AsLong(vv); + goto exit; + } + if (!PyLong_Check(vv)) { + Py_DECREF(vv); + PyErr_SetString(PyExc_TypeError, + "nb_int should return int object"); + return -1; + } + } + + res = -1; + v = (PyLongObject *)vv; + i = Py_SIZE(v); + + switch (i) { + case -1: + res = -(sdigit)v->ob_digit[0]; + break; + case 0: + res = 0; + break; + case 1: + res = v->ob_digit[0]; + break; + default: + sign = 1; + x = 0; + if (i < 0) { + sign = -1; + i = -(i); + } + while (--i >= 0) { + prev = x; + x = (x << PyLong_SHIFT) + v->ob_digit[i]; + if ((x >> PyLong_SHIFT) != prev) { + *overflow = sign; + goto exit; + } + } + /* Haven't lost any bits, but casting to long requires extra + * care (see comment above). + */ + if (x <= (unsigned PY_LONG_LONG)PY_LLONG_MAX) { + res = (PY_LONG_LONG)x * sign; + } + else if (sign < 0 && x == PY_ABS_LLONG_MIN) { + res = PY_LLONG_MIN; + } + else { + *overflow = sign; + /* res is already set to -1 */ + } + } + exit: + if (do_decref) { + Py_DECREF(vv); + } + return res; +} + #undef IS_LITTLE_ENDIAN #endif /* HAVE_LONG_LONG */ From python-checkins at python.org Sat Jan 30 11:30:16 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 30 Jan 2010 10:30:16 -0000 Subject: [Python-checkins] r77843 - in python/branches/py3k: Doc/c-api/long.rst Include/longobject.h Misc/NEWS Modules/_testcapimodule.c Objects/longobject.c Message-ID: Author: mark.dickinson Date: Sat Jan 30 11:30:15 2010 New Revision: 77843 Log: Merged revisions 77842 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77842 | mark.dickinson | 2010-01-30 10:08:33 +0000 (Sat, 30 Jan 2010) | 4 lines Issue #7767: Add new C-API function PyLong_AsLongLongAndOverflow, a long long variant of PyLong_AsLongAndOverflow. Patch by Case Van Horsen. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/c-api/long.rst python/branches/py3k/Include/longobject.h python/branches/py3k/Misc/NEWS python/branches/py3k/Modules/_testcapimodule.c python/branches/py3k/Objects/longobject.c Modified: python/branches/py3k/Doc/c-api/long.rst ============================================================================== --- python/branches/py3k/Doc/c-api/long.rst (original) +++ python/branches/py3k/Doc/c-api/long.rst Sat Jan 30 11:30:15 2010 @@ -130,6 +130,19 @@ be ``0``. +.. cfunction:: PY_LONG_LONG PyLong_AsLongLongAndOverflow(PyObject *pylong, int* overflow) + + Return a C :ctype:`long long` representation of the contents of + *pylong*. If *pylong* is greater than :const:`PY_LLONG_MAX` or less + than :const:`PY_LLONG_MIN`, set `*overflow` to ``1`` or ``-1``, + respectively, and return ``-1``; otherwise, set `*overflow` to + ``0``. If any other exception occurs (for example a TypeError or + MemoryError), then ``-1`` will be returned and ``*overflow`` will + be ``0``. + + .. versionadded:: 3.2 + + .. cfunction:: Py_ssize_t PyLong_AsSsize_t(PyObject *pylong) .. index:: Modified: python/branches/py3k/Include/longobject.h ============================================================================== --- python/branches/py3k/Include/longobject.h (original) +++ python/branches/py3k/Include/longobject.h Sat Jan 30 11:30:15 2010 @@ -62,6 +62,7 @@ PyAPI_FUNC(PY_LONG_LONG) PyLong_AsLongLong(PyObject *); PyAPI_FUNC(unsigned PY_LONG_LONG) PyLong_AsUnsignedLongLong(PyObject *); PyAPI_FUNC(unsigned PY_LONG_LONG) PyLong_AsUnsignedLongLongMask(PyObject *); +PyAPI_FUNC(PY_LONG_LONG) PyLong_AsLongLongAndOverflow(PyObject *, int *); #endif /* HAVE_LONG_LONG */ PyAPI_FUNC(PyObject *) PyLong_FromString(char *, char **, int); Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Sat Jan 30 11:30:15 2010 @@ -192,6 +192,9 @@ C-API ----- +- Issue #7767: New function PyLong_AsLongLongAndOverflow added, + analogous to PyLong_AsLongAndOverflow. + - Make PyUnicode_CompareWithASCIIString return not equal if the Python string has '\0' at the end. Modified: python/branches/py3k/Modules/_testcapimodule.c ============================================================================== --- python/branches/py3k/Modules/_testcapimodule.c (original) +++ python/branches/py3k/Modules/_testcapimodule.c Sat Jan 30 11:30:15 2010 @@ -524,6 +524,171 @@ return Py_None; } +/* Test the PyLong_AsLongLongAndOverflow API. General conversion to + PY_LONG_LONG is tested by test_long_api_inner. This test will + concentrate on proper handling of overflow. +*/ + +static PyObject * +test_long_long_and_overflow(PyObject *self) +{ + PyObject *num, *one, *temp; + PY_LONG_LONG value; + int overflow; + + /* Test that overflow is set properly for a large value. */ + /* num is a number larger than PY_LLONG_MAX on a typical machine. */ + num = PyLong_FromString("FFFFFFFFFFFFFFFFFFFFFFFF", NULL, 16); + if (num == NULL) + return NULL; + overflow = 1234; + value = PyLong_AsLongLongAndOverflow(num, &overflow); + Py_DECREF(num); + if (value == -1 && PyErr_Occurred()) + return NULL; + if (value != -1) + return raiseTestError("test_long_long_and_overflow", + "return value was not set to -1"); + if (overflow != 1) + return raiseTestError("test_long_long_and_overflow", + "overflow was not set to 1"); + + /* Same again, with num = PY_LLONG_MAX + 1 */ + num = PyLong_FromLongLong(PY_LLONG_MAX); + if (num == NULL) + return NULL; + one = PyLong_FromLong(1L); + if (one == NULL) { + Py_DECREF(num); + return NULL; + } + temp = PyNumber_Add(num, one); + Py_DECREF(one); + Py_DECREF(num); + num = temp; + if (num == NULL) + return NULL; + overflow = 0; + value = PyLong_AsLongLongAndOverflow(num, &overflow); + Py_DECREF(num); + if (value == -1 && PyErr_Occurred()) + return NULL; + if (value != -1) + return raiseTestError("test_long_long_and_overflow", + "return value was not set to -1"); + if (overflow != 1) + return raiseTestError("test_long_long_and_overflow", + "overflow was not set to 1"); + + /* Test that overflow is set properly for a large negative value. */ + /* num is a number smaller than PY_LLONG_MIN on a typical platform */ + num = PyLong_FromString("-FFFFFFFFFFFFFFFFFFFFFFFF", NULL, 16); + if (num == NULL) + return NULL; + overflow = 1234; + value = PyLong_AsLongLongAndOverflow(num, &overflow); + Py_DECREF(num); + if (value == -1 && PyErr_Occurred()) + return NULL; + if (value != -1) + return raiseTestError("test_long_long_and_overflow", + "return value was not set to -1"); + if (overflow != -1) + return raiseTestError("test_long_long_and_overflow", + "overflow was not set to -1"); + + /* Same again, with num = PY_LLONG_MIN - 1 */ + num = PyLong_FromLongLong(PY_LLONG_MIN); + if (num == NULL) + return NULL; + one = PyLong_FromLong(1L); + if (one == NULL) { + Py_DECREF(num); + return NULL; + } + temp = PyNumber_Subtract(num, one); + Py_DECREF(one); + Py_DECREF(num); + num = temp; + if (num == NULL) + return NULL; + overflow = 0; + value = PyLong_AsLongLongAndOverflow(num, &overflow); + Py_DECREF(num); + if (value == -1 && PyErr_Occurred()) + return NULL; + if (value != -1) + return raiseTestError("test_long_long_and_overflow", + "return value was not set to -1"); + if (overflow != -1) + return raiseTestError("test_long_long_and_overflow", + "overflow was not set to -1"); + + /* Test that overflow is cleared properly for small values. */ + num = PyLong_FromString("FF", NULL, 16); + if (num == NULL) + return NULL; + overflow = 1234; + value = PyLong_AsLongLongAndOverflow(num, &overflow); + Py_DECREF(num); + if (value == -1 && PyErr_Occurred()) + return NULL; + if (value != 0xFF) + return raiseTestError("test_long_long_and_overflow", + "expected return value 0xFF"); + if (overflow != 0) + return raiseTestError("test_long_long_and_overflow", + "overflow was not cleared"); + + num = PyLong_FromString("-FF", NULL, 16); + if (num == NULL) + return NULL; + overflow = 0; + value = PyLong_AsLongLongAndOverflow(num, &overflow); + Py_DECREF(num); + if (value == -1 && PyErr_Occurred()) + return NULL; + if (value != -0xFF) + return raiseTestError("test_long_long_and_overflow", + "expected return value 0xFF"); + if (overflow != 0) + return raiseTestError("test_long_long_and_overflow", + "overflow was set incorrectly"); + + num = PyLong_FromLongLong(PY_LLONG_MAX); + if (num == NULL) + return NULL; + overflow = 1234; + value = PyLong_AsLongLongAndOverflow(num, &overflow); + Py_DECREF(num); + if (value == -1 && PyErr_Occurred()) + return NULL; + if (value != PY_LLONG_MAX) + return raiseTestError("test_long_long_and_overflow", + "expected return value PY_LLONG_MAX"); + if (overflow != 0) + return raiseTestError("test_long_long_and_overflow", + "overflow was not cleared"); + + num = PyLong_FromLongLong(PY_LLONG_MIN); + if (num == NULL) + return NULL; + overflow = 0; + value = PyLong_AsLongLongAndOverflow(num, &overflow); + Py_DECREF(num); + if (value == -1 && PyErr_Occurred()) + return NULL; + if (value != PY_LLONG_MIN) + return raiseTestError("test_long_long_and_overflow", + "expected return value PY_LLONG_MIN"); + if (overflow != 0) + return raiseTestError("test_long_long_and_overflow", + "overflow was not cleared"); + + Py_INCREF(Py_None); + return Py_None; +} + /* Test the L code for PyArg_ParseTuple. This should deliver a PY_LONG_LONG for both long and int arguments. The test may leak a little memory if it fails. @@ -1791,6 +1956,8 @@ {"getargs_L", getargs_L, METH_VARARGS}, {"getargs_K", getargs_K, METH_VARARGS}, {"test_longlong_api", test_longlong_api, METH_NOARGS}, + {"test_long_long_and_overflow", + (PyCFunction)test_long_long_and_overflow, METH_NOARGS}, {"test_L_code", (PyCFunction)test_L_code, METH_NOARGS}, {"codec_incrementalencoder", (PyCFunction)codec_incrementalencoder, METH_VARARGS}, Modified: python/branches/py3k/Objects/longobject.c ============================================================================== --- python/branches/py3k/Objects/longobject.c (original) +++ python/branches/py3k/Objects/longobject.c Sat Jan 30 11:30:15 2010 @@ -971,6 +971,7 @@ */ #define IS_LITTLE_ENDIAN (int)*(unsigned char*)&one +#define PY_ABS_LLONG_MIN (0-(unsigned PY_LONG_LONG)PY_LLONG_MIN) /* Create a new long int object from a C PY_LONG_LONG int. */ @@ -1269,6 +1270,101 @@ } #undef IS_LITTLE_ENDIAN +/* Get a C long long int from a Python long or Python int object. + On overflow, returns -1 and sets *overflow to 1 or -1 depending + on the sign of the result. Otherwise *overflow is 0. + + For other errors (e.g., type error), returns -1 and sets an error + condition. +*/ + +PY_LONG_LONG +PyLong_AsLongLongAndOverflow(PyObject *vv, int *overflow) +{ + /* This version by Tim Peters */ + register PyLongObject *v; + unsigned PY_LONG_LONG x, prev; + PY_LONG_LONG res; + Py_ssize_t i; + int sign; + int do_decref = 0; /* if nb_int was called */ + + *overflow = 0; + if (vv == NULL) { + PyErr_BadInternalCall(); + return -1; + } + + if (!PyLong_Check(vv)) { + PyNumberMethods *nb; + nb = vv->ob_type->tp_as_number; + if (nb == NULL || nb->nb_int == NULL) { + PyErr_SetString(PyExc_TypeError, + "an integer is required"); + return -1; + } + vv = (*nb->nb_int) (vv); + if (vv == NULL) + return -1; + do_decref = 1; + if (!PyLong_Check(vv)) { + Py_DECREF(vv); + PyErr_SetString(PyExc_TypeError, + "nb_int should return int object"); + return -1; + } + } + + res = -1; + v = (PyLongObject *)vv; + i = Py_SIZE(v); + + switch (i) { + case -1: + res = -(sdigit)v->ob_digit[0]; + break; + case 0: + res = 0; + break; + case 1: + res = v->ob_digit[0]; + break; + default: + sign = 1; + x = 0; + if (i < 0) { + sign = -1; + i = -(i); + } + while (--i >= 0) { + prev = x; + x = (x << PyLong_SHIFT) + v->ob_digit[i]; + if ((x >> PyLong_SHIFT) != prev) { + *overflow = sign; + goto exit; + } + } + /* Haven't lost any bits, but casting to long requires extra + * care (see comment above). + */ + if (x <= (unsigned PY_LONG_LONG)PY_LLONG_MAX) { + res = (PY_LONG_LONG)x * sign; + } + else if (sign < 0 && x == PY_ABS_LLONG_MIN) { + res = PY_LLONG_MIN; + } + else { + *overflow = sign; + /* res is already set to -1 */ + } + } + exit: + if (do_decref) { + Py_DECREF(vv); + } + return res; +} + #endif /* HAVE_LONG_LONG */ #define CHECK_BINOP(v,w) \ From python-checkins at python.org Sat Jan 30 11:31:45 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 30 Jan 2010 10:31:45 -0000 Subject: [Python-checkins] r77844 - python/branches/release26-maint Message-ID: Author: mark.dickinson Date: Sat Jan 30 11:31:45 2010 New Revision: 77844 Log: Blocked revisions 77842 via svnmerge ........ r77842 | mark.dickinson | 2010-01-30 10:08:33 +0000 (Sat, 30 Jan 2010) | 4 lines Issue #7767: Add new C-API function PyLong_AsLongLongAndOverflow, a long long variant of PyLong_AsLongAndOverflow. Patch by Case Van Horsen. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Sat Jan 30 11:32:16 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 30 Jan 2010 10:32:16 -0000 Subject: [Python-checkins] r77845 - python/branches/release31-maint Message-ID: Author: mark.dickinson Date: Sat Jan 30 11:32:16 2010 New Revision: 77845 Log: Blocked revisions 77843 via svnmerge ................ r77843 | mark.dickinson | 2010-01-30 10:30:15 +0000 (Sat, 30 Jan 2010) | 11 lines Merged revisions 77842 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77842 | mark.dickinson | 2010-01-30 10:08:33 +0000 (Sat, 30 Jan 2010) | 4 lines Issue #7767: Add new C-API function PyLong_AsLongLongAndOverflow, a long long variant of PyLong_AsLongAndOverflow. Patch by Case Van Horsen. ........ ................ Modified: python/branches/release31-maint/ (props changed) From python-checkins at python.org Sat Jan 30 11:56:23 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 30 Jan 2010 10:56:23 -0000 Subject: [Python-checkins] r77846 - in python/trunk/Lib/lib2to3: fixes/fix_dict.py tests/test_fixers.py tests/test_parser.py Message-ID: Author: martin.v.loewis Date: Sat Jan 30 11:56:23 2010 New Revision: 77846 Log: Merged revisions 77419,77435 via svnmerge from svn+ssh://pythondev at svn.python.org/sandbox/trunk/2to3/lib2to3 ........ r77419 | benjamin.peterson | 2010-01-10 21:39:48 +0100 (So, 10 Jan 2010) | 1 line enclose path in quotes to handle paths with spaces correctly #7666 ........ r77435 | alexandre.vassalotti | 2010-01-12 01:36:54 +0100 (Di, 12 Jan 2010) | 2 lines Issue #1967: Add fixer for dictionary views. ........ Modified: python/trunk/Lib/lib2to3/ (props changed) python/trunk/Lib/lib2to3/fixes/fix_dict.py python/trunk/Lib/lib2to3/tests/test_fixers.py python/trunk/Lib/lib2to3/tests/test_parser.py Modified: python/trunk/Lib/lib2to3/fixes/fix_dict.py ============================================================================== --- python/trunk/Lib/lib2to3/fixes/fix_dict.py (original) +++ python/trunk/Lib/lib2to3/fixes/fix_dict.py Sat Jan 30 11:56:23 2010 @@ -11,6 +11,10 @@ d.iteritems() -> iter(d.items()) d.itervalues() -> iter(d.values()) +d.viewkeys() -> d.keys() +d.viewitems() -> d.items() +d.viewvalues() -> d.values() + Except in certain very specific contexts: the iter() can be dropped when the context is list(), sorted(), iter() or for...in; the list() can be dropped when the context is list() or sorted() (but not iter() @@ -39,7 +43,8 @@ PATTERN = """ power< head=any+ trailer< '.' method=('keys'|'items'|'values'| - 'iterkeys'|'iteritems'|'itervalues') > + 'iterkeys'|'iteritems'|'itervalues'| + 'viewkeys'|'viewitems'|'viewvalues') > parens=trailer< '(' ')' > tail=any* > @@ -52,9 +57,10 @@ syms = self.syms method_name = method.value isiter = method_name.startswith(u"iter") - if isiter: + isview = method_name.startswith(u"view") + if isiter or isview: method_name = method_name[4:] - assert method_name in ("keys", "items", "values"), repr(method) + assert method_name in (u"keys", u"items", u"values"), repr(method) head = [n.clone() for n in head] tail = [n.clone() for n in tail] special = not tail and self.in_special_context(node, isiter) @@ -64,7 +70,7 @@ prefix=method.prefix)]), results["parens"].clone()] new = pytree.Node(syms.power, args) - if not special: + if not (special or isview): new.prefix = u"" new = Call(Name(u"iter" if isiter else u"list"), [new]) if tail: Modified: python/trunk/Lib/lib2to3/tests/test_fixers.py ============================================================================== --- python/trunk/Lib/lib2to3/tests/test_fixers.py (original) +++ python/trunk/Lib/lib2to3/tests/test_fixers.py Sat Jan 30 11:56:23 2010 @@ -1215,6 +1215,14 @@ a = "[i for i in d. keys( ) ]" self.check(b, a) + b = "if d. viewkeys ( ) : pass" + a = "if d. keys ( ) : pass" + self.check(b, a) + + b = "[i for i in d. viewkeys( ) ]" + a = "[i for i in d. keys( ) ]" + self.check(b, a) + def test_trailing_comment(self): b = "d.keys() # foo" a = "list(d.keys()) # foo" @@ -1234,6 +1242,16 @@ ]""" self.check(b, a) + b = """[i for i in d.iterkeys() # foo + ]""" + a = """[i for i in d.keys() # foo + ]""" + self.check(b, a) + + b = "d.viewitems() # foo" + a = "d.items() # foo" + self.check(b, a) + def test_unchanged(self): for wrapper in fixer_util.consuming_calls: s = "s = %s(d.keys())" % wrapper @@ -1367,6 +1385,46 @@ a = "for x in list(h.keys())[0]: print x" self.check(b, a) + def test_25(self): + b = "d.viewkeys()" + a = "d.keys()" + self.check(b, a) + + def test_26(self): + b = "d.viewitems()" + a = "d.items()" + self.check(b, a) + + def test_27(self): + b = "d.viewvalues()" + a = "d.values()" + self.check(b, a) + + def test_14(self): + b = "[i for i in d.viewkeys()]" + a = "[i for i in d.keys()]" + self.check(b, a) + + def test_15(self): + b = "(i for i in d.viewkeys())" + a = "(i for i in d.keys())" + self.check(b, a) + + def test_17(self): + b = "iter(d.viewkeys())" + a = "iter(d.keys())" + self.check(b, a) + + def test_18(self): + b = "list(d.viewkeys())" + a = "list(d.keys())" + self.check(b, a) + + def test_19(self): + b = "sorted(d.viewkeys())" + a = "sorted(d.keys())" + self.check(b, a) + class Test_xrange(FixerTestCase): fixer = "xrange" Modified: python/trunk/Lib/lib2to3/tests/test_parser.py ============================================================================== --- python/trunk/Lib/lib2to3/tests/test_parser.py (original) +++ python/trunk/Lib/lib2to3/tests/test_parser.py Sat Jan 30 11:56:23 2010 @@ -209,6 +209,6 @@ finally: f.close() try: - return os.system("diff -u %s @" % fn) + return os.system("diff -u %r @" % fn) finally: os.remove("@") From python-checkins at python.org Sat Jan 30 12:02:34 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 30 Jan 2010 11:02:34 -0000 Subject: [Python-checkins] r77847 - in python/branches/release26-maint: Lib/lib2to3/fixes/fix_dict.py Lib/lib2to3/tests/test_fixers.py Lib/lib2to3/tests/test_parser.py Message-ID: Author: martin.v.loewis Date: Sat Jan 30 12:02:34 2010 New Revision: 77847 Log: Merged revisions 77846 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ................ r77846 | martin.v.loewis | 2010-01-30 11:56:23 +0100 (Sa, 30 Jan 2010) | 13 lines Merged revisions 77419,77435 via svnmerge from svn+ssh://pythondev at svn.python.org/sandbox/trunk/2to3/lib2to3 ........ r77419 | benjamin.peterson | 2010-01-10 21:39:48 +0100 (So, 10 Jan 2010) | 1 line enclose path in quotes to handle paths with spaces correctly #7666 ........ r77435 | alexandre.vassalotti | 2010-01-12 01:36:54 +0100 (Di, 12 Jan 2010) | 2 lines Issue #1967: Add fixer for dictionary views. ........ ................ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/lib2to3/fixes/fix_dict.py python/branches/release26-maint/Lib/lib2to3/tests/test_fixers.py python/branches/release26-maint/Lib/lib2to3/tests/test_parser.py Modified: python/branches/release26-maint/Lib/lib2to3/fixes/fix_dict.py ============================================================================== --- python/branches/release26-maint/Lib/lib2to3/fixes/fix_dict.py (original) +++ python/branches/release26-maint/Lib/lib2to3/fixes/fix_dict.py Sat Jan 30 12:02:34 2010 @@ -11,6 +11,10 @@ d.iteritems() -> iter(d.items()) d.itervalues() -> iter(d.values()) +d.viewkeys() -> d.keys() +d.viewitems() -> d.items() +d.viewvalues() -> d.values() + Except in certain very specific contexts: the iter() can be dropped when the context is list(), sorted(), iter() or for...in; the list() can be dropped when the context is list() or sorted() (but not iter() @@ -39,7 +43,8 @@ PATTERN = """ power< head=any+ trailer< '.' method=('keys'|'items'|'values'| - 'iterkeys'|'iteritems'|'itervalues') > + 'iterkeys'|'iteritems'|'itervalues'| + 'viewkeys'|'viewitems'|'viewvalues') > parens=trailer< '(' ')' > tail=any* > @@ -52,9 +57,10 @@ syms = self.syms method_name = method.value isiter = method_name.startswith("iter") - if isiter: + isview = method_name.startswith(u"view") + if isiter or isview: method_name = method_name[4:] - assert method_name in ("keys", "items", "values"), repr(method) + assert method_name in (u"keys", u"items", u"values"), repr(method) head = [n.clone() for n in head] tail = [n.clone() for n in tail] special = not tail and self.in_special_context(node, isiter) @@ -64,7 +70,7 @@ prefix=method.get_prefix())]), results["parens"].clone()] new = pytree.Node(syms.power, args) - if not special: + if not (special or isview): new.set_prefix("") new = Call(Name(isiter and "iter" or "list"), [new]) if tail: Modified: python/branches/release26-maint/Lib/lib2to3/tests/test_fixers.py ============================================================================== --- python/branches/release26-maint/Lib/lib2to3/tests/test_fixers.py (original) +++ python/branches/release26-maint/Lib/lib2to3/tests/test_fixers.py Sat Jan 30 12:02:34 2010 @@ -1187,6 +1187,14 @@ a = "[i for i in d. keys( ) ]" self.check(b, a) + b = "if d. viewkeys ( ) : pass" + a = "if d. keys ( ) : pass" + self.check(b, a) + + b = "[i for i in d. viewkeys( ) ]" + a = "[i for i in d. keys( ) ]" + self.check(b, a) + def test_trailing_comment(self): b = "d.keys() # foo" a = "list(d.keys()) # foo" @@ -1206,6 +1214,16 @@ ]""" self.check(b, a) + b = """[i for i in d.iterkeys() # foo + ]""" + a = """[i for i in d.keys() # foo + ]""" + self.check(b, a) + + b = "d.viewitems() # foo" + a = "d.items() # foo" + self.check(b, a) + def test_unchanged(self): for wrapper in fixer_util.consuming_calls: s = "s = %s(d.keys())" % wrapper @@ -1339,6 +1357,46 @@ a = "for x in list(h.keys())[0]: print x" self.check(b, a) + def test_25(self): + b = "d.viewkeys()" + a = "d.keys()" + self.check(b, a) + + def test_26(self): + b = "d.viewitems()" + a = "d.items()" + self.check(b, a) + + def test_27(self): + b = "d.viewvalues()" + a = "d.values()" + self.check(b, a) + + def test_14(self): + b = "[i for i in d.viewkeys()]" + a = "[i for i in d.keys()]" + self.check(b, a) + + def test_15(self): + b = "(i for i in d.viewkeys())" + a = "(i for i in d.keys())" + self.check(b, a) + + def test_17(self): + b = "iter(d.viewkeys())" + a = "iter(d.keys())" + self.check(b, a) + + def test_18(self): + b = "list(d.viewkeys())" + a = "list(d.keys())" + self.check(b, a) + + def test_19(self): + b = "sorted(d.viewkeys())" + a = "sorted(d.keys())" + self.check(b, a) + class Test_xrange(FixerTestCase): fixer = "xrange" Modified: python/branches/release26-maint/Lib/lib2to3/tests/test_parser.py ============================================================================== --- python/branches/release26-maint/Lib/lib2to3/tests/test_parser.py (original) +++ python/branches/release26-maint/Lib/lib2to3/tests/test_parser.py Sat Jan 30 12:02:34 2010 @@ -192,7 +192,7 @@ finally: f.close() try: - return os.system("diff -u %s @" % fn) + return os.system("diff -u %r @" % fn) finally: os.remove("@") From python-checkins at python.org Sat Jan 30 12:05:48 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 30 Jan 2010 11:05:48 -0000 Subject: [Python-checkins] r77848 - in python/branches/py3k: Lib/lib2to3/fixes/fix_dict.py Lib/lib2to3/tests/test_fixers.py Lib/lib2to3/tests/test_parser.py Message-ID: Author: martin.v.loewis Date: Sat Jan 30 12:05:48 2010 New Revision: 77848 Log: Merged revisions 77846 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ................ r77846 | martin.v.loewis | 2010-01-30 11:56:23 +0100 (Sa, 30 Jan 2010) | 13 lines Merged revisions 77419,77435 via svnmerge from svn+ssh://pythondev at svn.python.org/sandbox/trunk/2to3/lib2to3 ........ r77419 | benjamin.peterson | 2010-01-10 21:39:48 +0100 (So, 10 Jan 2010) | 1 line enclose path in quotes to handle paths with spaces correctly #7666 ........ r77435 | alexandre.vassalotti | 2010-01-12 01:36:54 +0100 (Di, 12 Jan 2010) | 2 lines Issue #1967: Add fixer for dictionary views. ........ ................ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/lib2to3/fixes/fix_dict.py python/branches/py3k/Lib/lib2to3/tests/test_fixers.py python/branches/py3k/Lib/lib2to3/tests/test_parser.py Modified: python/branches/py3k/Lib/lib2to3/fixes/fix_dict.py ============================================================================== --- python/branches/py3k/Lib/lib2to3/fixes/fix_dict.py (original) +++ python/branches/py3k/Lib/lib2to3/fixes/fix_dict.py Sat Jan 30 12:05:48 2010 @@ -11,6 +11,10 @@ d.iteritems() -> iter(d.items()) d.itervalues() -> iter(d.values()) +d.viewkeys() -> d.keys() +d.viewitems() -> d.items() +d.viewvalues() -> d.values() + Except in certain very specific contexts: the iter() can be dropped when the context is list(), sorted(), iter() or for...in; the list() can be dropped when the context is list() or sorted() (but not iter() @@ -39,7 +43,8 @@ PATTERN = """ power< head=any+ trailer< '.' method=('keys'|'items'|'values'| - 'iterkeys'|'iteritems'|'itervalues') > + 'iterkeys'|'iteritems'|'itervalues'| + 'viewkeys'|'viewitems'|'viewvalues') > parens=trailer< '(' ')' > tail=any* > @@ -52,7 +57,8 @@ syms = self.syms method_name = method.value isiter = method_name.startswith("iter") - if isiter: + isview = method_name.startswith("view") + if isiter or isview: method_name = method_name[4:] assert method_name in ("keys", "items", "values"), repr(method) head = [n.clone() for n in head] @@ -64,7 +70,7 @@ prefix=method.prefix)]), results["parens"].clone()] new = pytree.Node(syms.power, args) - if not special: + if not (special or isview): new.prefix = "" new = Call(Name("iter" if isiter else "list"), [new]) if tail: Modified: python/branches/py3k/Lib/lib2to3/tests/test_fixers.py ============================================================================== --- python/branches/py3k/Lib/lib2to3/tests/test_fixers.py (original) +++ python/branches/py3k/Lib/lib2to3/tests/test_fixers.py Sat Jan 30 12:05:48 2010 @@ -1215,6 +1215,14 @@ a = "[i for i in d. keys( ) ]" self.check(b, a) + b = "if d. viewkeys ( ) : pass" + a = "if d. keys ( ) : pass" + self.check(b, a) + + b = "[i for i in d. viewkeys( ) ]" + a = "[i for i in d. keys( ) ]" + self.check(b, a) + def test_trailing_comment(self): b = "d.keys() # foo" a = "list(d.keys()) # foo" @@ -1234,6 +1242,16 @@ ]""" self.check(b, a) + b = """[i for i in d.iterkeys() # foo + ]""" + a = """[i for i in d.keys() # foo + ]""" + self.check(b, a) + + b = "d.viewitems() # foo" + a = "d.items() # foo" + self.check(b, a) + def test_unchanged(self): for wrapper in fixer_util.consuming_calls: s = "s = %s(d.keys())" % wrapper @@ -1367,6 +1385,46 @@ a = "for x in list(h.keys())[0]: print x" self.check(b, a) + def test_25(self): + b = "d.viewkeys()" + a = "d.keys()" + self.check(b, a) + + def test_26(self): + b = "d.viewitems()" + a = "d.items()" + self.check(b, a) + + def test_27(self): + b = "d.viewvalues()" + a = "d.values()" + self.check(b, a) + + def test_14(self): + b = "[i for i in d.viewkeys()]" + a = "[i for i in d.keys()]" + self.check(b, a) + + def test_15(self): + b = "(i for i in d.viewkeys())" + a = "(i for i in d.keys())" + self.check(b, a) + + def test_17(self): + b = "iter(d.viewkeys())" + a = "iter(d.keys())" + self.check(b, a) + + def test_18(self): + b = "list(d.viewkeys())" + a = "list(d.keys())" + self.check(b, a) + + def test_19(self): + b = "sorted(d.viewkeys())" + a = "sorted(d.keys())" + self.check(b, a) + class Test_xrange(FixerTestCase): fixer = "xrange" Modified: python/branches/py3k/Lib/lib2to3/tests/test_parser.py ============================================================================== --- python/branches/py3k/Lib/lib2to3/tests/test_parser.py (original) +++ python/branches/py3k/Lib/lib2to3/tests/test_parser.py Sat Jan 30 12:05:48 2010 @@ -206,6 +206,6 @@ finally: f.close() try: - return os.system("diff -u %s @" % fn) + return os.system("diff -u %r @" % fn) finally: os.remove("@") From python-checkins at python.org Sat Jan 30 12:22:27 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sat, 30 Jan 2010 11:22:27 -0000 Subject: [Python-checkins] r77849 - in python/branches/release31-maint: Lib/lib2to3/fixes/fix_dict.py Lib/lib2to3/tests/test_fixers.py Lib/lib2to3/tests/test_parser.py Message-ID: Author: martin.v.loewis Date: Sat Jan 30 12:22:26 2010 New Revision: 77849 Log: Merged revisions 77848 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77848 | martin.v.loewis | 2010-01-30 12:05:48 +0100 (Sa, 30 Jan 2010) | 20 lines Merged revisions 77846 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ................ r77846 | martin.v.loewis | 2010-01-30 11:56:23 +0100 (Sa, 30 Jan 2010) | 13 lines Merged revisions 77419,77435 via svnmerge from svn+ssh://pythondev at svn.python.org/sandbox/trunk/2to3/lib2to3 ........ r77419 | benjamin.peterson | 2010-01-10 21:39:48 +0100 (So, 10 Jan 2010) | 1 line enclose path in quotes to handle paths with spaces correctly #7666 ........ r77435 | alexandre.vassalotti | 2010-01-12 01:36:54 +0100 (Di, 12 Jan 2010) | 2 lines Issue #1967: Add fixer for dictionary views. ........ ................ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/Lib/lib2to3/fixes/fix_dict.py python/branches/release31-maint/Lib/lib2to3/tests/test_fixers.py python/branches/release31-maint/Lib/lib2to3/tests/test_parser.py Modified: python/branches/release31-maint/Lib/lib2to3/fixes/fix_dict.py ============================================================================== --- python/branches/release31-maint/Lib/lib2to3/fixes/fix_dict.py (original) +++ python/branches/release31-maint/Lib/lib2to3/fixes/fix_dict.py Sat Jan 30 12:22:26 2010 @@ -11,6 +11,10 @@ d.iteritems() -> iter(d.items()) d.itervalues() -> iter(d.values()) +d.viewkeys() -> d.keys() +d.viewitems() -> d.items() +d.viewvalues() -> d.values() + Except in certain very specific contexts: the iter() can be dropped when the context is list(), sorted(), iter() or for...in; the list() can be dropped when the context is list() or sorted() (but not iter() @@ -39,7 +43,8 @@ PATTERN = """ power< head=any+ trailer< '.' method=('keys'|'items'|'values'| - 'iterkeys'|'iteritems'|'itervalues') > + 'iterkeys'|'iteritems'|'itervalues'| + 'viewkeys'|'viewitems'|'viewvalues') > parens=trailer< '(' ')' > tail=any* > @@ -52,7 +57,8 @@ syms = self.syms method_name = method.value isiter = method_name.startswith("iter") - if isiter: + isview = method_name.startswith("view") + if isiter or isview: method_name = method_name[4:] assert method_name in ("keys", "items", "values"), repr(method) head = [n.clone() for n in head] @@ -64,7 +70,7 @@ prefix=method.prefix)]), results["parens"].clone()] new = pytree.Node(syms.power, args) - if not special: + if not (special or isview): new.prefix = "" new = Call(Name("iter" if isiter else "list"), [new]) if tail: Modified: python/branches/release31-maint/Lib/lib2to3/tests/test_fixers.py ============================================================================== --- python/branches/release31-maint/Lib/lib2to3/tests/test_fixers.py (original) +++ python/branches/release31-maint/Lib/lib2to3/tests/test_fixers.py Sat Jan 30 12:22:26 2010 @@ -1215,6 +1215,14 @@ a = "[i for i in d. keys( ) ]" self.check(b, a) + b = "if d. viewkeys ( ) : pass" + a = "if d. keys ( ) : pass" + self.check(b, a) + + b = "[i for i in d. viewkeys( ) ]" + a = "[i for i in d. keys( ) ]" + self.check(b, a) + def test_trailing_comment(self): b = "d.keys() # foo" a = "list(d.keys()) # foo" @@ -1234,6 +1242,16 @@ ]""" self.check(b, a) + b = """[i for i in d.iterkeys() # foo + ]""" + a = """[i for i in d.keys() # foo + ]""" + self.check(b, a) + + b = "d.viewitems() # foo" + a = "d.items() # foo" + self.check(b, a) + def test_unchanged(self): for wrapper in fixer_util.consuming_calls: s = "s = %s(d.keys())" % wrapper @@ -1367,6 +1385,46 @@ a = "for x in list(h.keys())[0]: print x" self.check(b, a) + def test_25(self): + b = "d.viewkeys()" + a = "d.keys()" + self.check(b, a) + + def test_26(self): + b = "d.viewitems()" + a = "d.items()" + self.check(b, a) + + def test_27(self): + b = "d.viewvalues()" + a = "d.values()" + self.check(b, a) + + def test_14(self): + b = "[i for i in d.viewkeys()]" + a = "[i for i in d.keys()]" + self.check(b, a) + + def test_15(self): + b = "(i for i in d.viewkeys())" + a = "(i for i in d.keys())" + self.check(b, a) + + def test_17(self): + b = "iter(d.viewkeys())" + a = "iter(d.keys())" + self.check(b, a) + + def test_18(self): + b = "list(d.viewkeys())" + a = "list(d.keys())" + self.check(b, a) + + def test_19(self): + b = "sorted(d.viewkeys())" + a = "sorted(d.keys())" + self.check(b, a) + class Test_xrange(FixerTestCase): fixer = "xrange" Modified: python/branches/release31-maint/Lib/lib2to3/tests/test_parser.py ============================================================================== --- python/branches/release31-maint/Lib/lib2to3/tests/test_parser.py (original) +++ python/branches/release31-maint/Lib/lib2to3/tests/test_parser.py Sat Jan 30 12:22:26 2010 @@ -206,6 +206,6 @@ finally: f.close() try: - return os.system("diff -u %s @" % fn) + return os.system("diff -u %r @" % fn) finally: os.remove("@") From mal at egenix.com Sat Jan 30 12:51:15 2010 From: mal at egenix.com (M.-A. Lemburg) Date: Sat, 30 Jan 2010 12:51:15 +0100 Subject: [Python-checkins] r77788 - python/trunk/Lib/UserDict.py In-Reply-To: <1afaf6161001271724h4992d082kd10279042a68e93@mail.gmail.com> References: <20100127022208.4B08B405087@mail.egenix.com> <4B6000C1.70708@egenix.com> <1afaf6161001271724h4992d082kd10279042a68e93@mail.gmail.com> Message-ID: <4B641D33.5060401@egenix.com> Benjamin Peterson wrote: > 2010/1/27 M.-A. Lemburg : >> benjamin.peterson wrote: >>> Author: benjamin.peterson >>> Date: Wed Jan 27 03:15:28 2010 >>> New Revision: 77788 >>> >>> Log: >>> for UserDict to be compatible with abcs, it must subclass object >> >> Please add a clear mention of this change to Misc/NEWS - it could >> break existing applications that rely on UserDict being an old-style >> class. > > Good point. Done. BTW: Shouldn't UserDict be a subclass of collections.MutableMapping ? (those are new-style classes too) -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Source (#1, Jan 30 2010) >>> Python/Zope Consulting and Support ... http://www.egenix.com/ >>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/ >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/ ________________________________________________________________________ ::: Try our new mxODBC.Connect Python Database Interface for free ! :::: eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg Registered at Amtsgericht Duesseldorf: HRB 46611 http://www.egenix.com/company/contact/ From nnorwitz at gmail.com Sat Jan 30 13:12:14 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 30 Jan 2010 07:12:14 -0500 Subject: [Python-checkins] Python Regression Test Failures refleak (1) Message-ID: <20100130121214.GA10645@kbk-i386-bb.psfb.org> More important issues: ---------------------- test_bz2 leaked [-91, 0, 78] references, sum=-13 Less important issues: ---------------------- From python-checkins at python.org Sat Jan 30 14:08:54 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 30 Jan 2010 13:08:54 -0000 Subject: [Python-checkins] r77850 - python/trunk/Doc/c-api/long.rst Message-ID: Author: ezio.melotti Date: Sat Jan 30 14:08:54 2010 New Revision: 77850 Log: Relocate a couple of stars and remove redundant backticks Modified: python/trunk/Doc/c-api/long.rst Modified: python/trunk/Doc/c-api/long.rst ============================================================================== --- python/trunk/Doc/c-api/long.rst (original) +++ python/trunk/Doc/c-api/long.rst Sat Jan 30 14:08:54 2010 @@ -133,27 +133,27 @@ and ``-1`` will be returned. -.. cfunction:: long PyLong_AsLongAndOverflow(PyObject *pylong, int* overflow) +.. cfunction:: long PyLong_AsLongAndOverflow(PyObject *pylong, int *overflow) Return a C :ctype:`long` representation of the contents of *pylong*. If *pylong* is greater than :const:`LONG_MAX` or less than :const:`LONG_MIN`, set `*overflow` to ``1`` or ``-1``, respectively, and return ``-1``; otherwise, set `*overflow` to ``0``. If any other exception occurs (for example a TypeError or - MemoryError), then ``-1`` will be returned and ``*overflow`` will + MemoryError), then ``-1`` will be returned and `*overflow` will be ``0``. .. versionadded:: 2.7 -.. cfunction:: PY_LONG_LONG PyLong_AsLongLongAndOverflow(PyObject *pylong, int* overflow) +.. cfunction:: PY_LONG_LONG PyLong_AsLongLongAndOverflow(PyObject *pylong, int *overflow) Return a C :ctype:`long long` representation of the contents of *pylong*. If *pylong* is greater than :const:`PY_LLONG_MAX` or less than :const:`PY_LLONG_MIN`, set `*overflow` to ``1`` or ``-1``, respectively, and return ``-1``; otherwise, set `*overflow` to ``0``. If any other exception occurs (for example a TypeError or - MemoryError), then ``-1`` will be returned and ``*overflow`` will + MemoryError), then ``-1`` will be returned and `*overflow` will be ``0``. .. versionadded:: 2.7 From python-checkins at python.org Sat Jan 30 14:27:05 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 30 Jan 2010 13:27:05 -0000 Subject: [Python-checkins] r77851 - python/trunk/Doc/c-api/long.rst Message-ID: Author: ezio.melotti Date: Sat Jan 30 14:27:05 2010 New Revision: 77851 Log: Use the correct markup for args Modified: python/trunk/Doc/c-api/long.rst Modified: python/trunk/Doc/c-api/long.rst ============================================================================== --- python/trunk/Doc/c-api/long.rst (original) +++ python/trunk/Doc/c-api/long.rst Sat Jan 30 14:27:05 2010 @@ -87,7 +87,7 @@ Return a new :ctype:`PyLongObject` based on the string value in *str*, which is interpreted according to the radix in *base*. If *pend* is non-*NULL*, - ``*pend`` will point to the first character in *str* which follows the + *\*pend* will point to the first character in *str* which follows the representation of the number. If *base* is ``0``, the radix will be determined based on the leading characters of *str*: if *str* starts with ``'0x'`` or ``'0X'``, radix 16 will be used; if *str* starts with ``'0'``, radix 8 will be @@ -137,10 +137,10 @@ Return a C :ctype:`long` representation of the contents of *pylong*. If *pylong* is greater than :const:`LONG_MAX` or less - than :const:`LONG_MIN`, set `*overflow` to ``1`` or ``-1``, - respectively, and return ``-1``; otherwise, set `*overflow` to + than :const:`LONG_MIN`, set *\*overflow* to ``1`` or ``-1``, + respectively, and return ``-1``; otherwise, set *\*overflow* to ``0``. If any other exception occurs (for example a TypeError or - MemoryError), then ``-1`` will be returned and `*overflow` will + MemoryError), then ``-1`` will be returned and *\*overflow* will be ``0``. .. versionadded:: 2.7 @@ -150,10 +150,10 @@ Return a C :ctype:`long long` representation of the contents of *pylong*. If *pylong* is greater than :const:`PY_LLONG_MAX` or less - than :const:`PY_LLONG_MIN`, set `*overflow` to ``1`` or ``-1``, - respectively, and return ``-1``; otherwise, set `*overflow` to + than :const:`PY_LLONG_MIN`, set *\*overflow* to ``1`` or ``-1``, + respectively, and return ``-1``; otherwise, set *\*overflow* to ``0``. If any other exception occurs (for example a TypeError or - MemoryError), then ``-1`` will be returned and `*overflow` will + MemoryError), then ``-1`` will be returned and *\*overflow* will be ``0``. .. versionadded:: 2.7 From python-checkins at python.org Sat Jan 30 14:32:15 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 30 Jan 2010 13:32:15 -0000 Subject: [Python-checkins] r77852 - in python/branches/py3k: Doc/c-api/long.rst Message-ID: Author: ezio.melotti Date: Sat Jan 30 14:32:14 2010 New Revision: 77852 Log: Merged revisions 77850-77851 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77850 | ezio.melotti | 2010-01-30 15:08:54 +0200 (Sat, 30 Jan 2010) | 1 line Relocate a couple of stars and remove redundant backticks ........ r77851 | ezio.melotti | 2010-01-30 15:27:05 +0200 (Sat, 30 Jan 2010) | 1 line Use the correct markup for args ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Doc/c-api/long.rst Modified: python/branches/py3k/Doc/c-api/long.rst ============================================================================== --- python/branches/py3k/Doc/c-api/long.rst (original) +++ python/branches/py3k/Doc/c-api/long.rst Sat Jan 30 14:32:14 2010 @@ -84,7 +84,7 @@ Return a new :ctype:`PyLongObject` based on the string value in *str*, which is interpreted according to the radix in *base*. If *pend* is non-*NULL*, - ``*pend`` will point to the first character in *str* which follows the + *\*pend* will point to the first character in *str* which follows the representation of the number. If *base* is ``0``, the radix will be determined based on the leading characters of *str*: if *str* starts with ``'0x'`` or ``'0X'``, radix 16 will be used; if *str* starts with ``'0o'`` or @@ -119,25 +119,25 @@ and return -1. Convert non-long objects automatically to long first, and return -1 if that raises exceptions. -.. cfunction:: long PyLong_AsLongAndOverflow(PyObject *pylong, int* overflow) +.. cfunction:: long PyLong_AsLongAndOverflow(PyObject *pylong, int *overflow) Return a C :ctype:`long` representation of the contents of *pylong*. If *pylong* is greater than :const:`LONG_MAX` or less - than :const:`LONG_MIN`, set `*overflow` to ``1`` or ``-1``, - respectively, and return ``-1``; otherwise, set `*overflow` to + than :const:`LONG_MIN`, set *\*overflow* to ``1`` or ``-1``, + respectively, and return ``-1``; otherwise, set *\*overflow* to ``0``. If any other exception occurs (for example a TypeError or - MemoryError), then ``-1`` will be returned and ``*overflow`` will + MemoryError), then ``-1`` will be returned and *\*overflow* will be ``0``. -.. cfunction:: PY_LONG_LONG PyLong_AsLongLongAndOverflow(PyObject *pylong, int* overflow) +.. cfunction:: PY_LONG_LONG PyLong_AsLongLongAndOverflow(PyObject *pylong, int *overflow) Return a C :ctype:`long long` representation of the contents of *pylong*. If *pylong* is greater than :const:`PY_LLONG_MAX` or less - than :const:`PY_LLONG_MIN`, set `*overflow` to ``1`` or ``-1``, - respectively, and return ``-1``; otherwise, set `*overflow` to + than :const:`PY_LLONG_MIN`, set *\*overflow* to ``1`` or ``-1``, + respectively, and return ``-1``; otherwise, set *\*overflow* to ``0``. If any other exception occurs (for example a TypeError or - MemoryError), then ``-1`` will be returned and ``*overflow`` will + MemoryError), then ``-1`` will be returned and *\*overflow* will be ``0``. .. versionadded:: 3.2 From python-checkins at python.org Sat Jan 30 14:33:39 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 30 Jan 2010 13:33:39 -0000 Subject: [Python-checkins] r77853 - python/branches/release26-maint Message-ID: Author: ezio.melotti Date: Sat Jan 30 14:33:39 2010 New Revision: 77853 Log: Blocked revisions 77850-77851 via svnmerge ........ r77850 | ezio.melotti | 2010-01-30 15:08:54 +0200 (Sat, 30 Jan 2010) | 1 line Relocate a couple of stars and remove redundant backticks ........ r77851 | ezio.melotti | 2010-01-30 15:27:05 +0200 (Sat, 30 Jan 2010) | 1 line Use the correct markup for args ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Sat Jan 30 14:35:06 2010 From: python-checkins at python.org (ezio.melotti) Date: Sat, 30 Jan 2010 13:35:06 -0000 Subject: [Python-checkins] r77854 - python/branches/release31-maint Message-ID: Author: ezio.melotti Date: Sat Jan 30 14:35:06 2010 New Revision: 77854 Log: Blocked revisions 77852 via svnmerge ................ r77852 | ezio.melotti | 2010-01-30 15:32:14 +0200 (Sat, 30 Jan 2010) | 13 lines Merged revisions 77850-77851 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77850 | ezio.melotti | 2010-01-30 15:08:54 +0200 (Sat, 30 Jan 2010) | 1 line Relocate a couple of stars and remove redundant backticks ........ r77851 | ezio.melotti | 2010-01-30 15:27:05 +0200 (Sat, 30 Jan 2010) | 1 line Use the correct markup for args ........ ................ Modified: python/branches/release31-maint/ (props changed) From benjamin at python.org Sat Jan 30 17:19:03 2010 From: benjamin at python.org (Benjamin Peterson) Date: Sat, 30 Jan 2010 10:19:03 -0600 Subject: [Python-checkins] r77788 - python/trunk/Lib/UserDict.py In-Reply-To: <4B641D33.5060401@egenix.com> References: <20100127022208.4B08B405087@mail.egenix.com> <4B6000C1.70708@egenix.com> <1afaf6161001271724h4992d082kd10279042a68e93@mail.gmail.com> <4B641D33.5060401@egenix.com> Message-ID: <1afaf6161001300819h1865f96fpafb598450aa5637c@mail.gmail.com> 2010/1/30 M.-A. Lemburg : > BTW: Shouldn't UserDict be a subclass of collections.MutableMapping ? > (those are new-style classes too) It currently registers its self under that ABC. -- Regards, Benjamin From python-checkins at python.org Sat Jan 30 17:32:05 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 30 Jan 2010 16:32:05 -0000 Subject: [Python-checkins] r77855 - sandbox/trunk/2to3/lib2to3/fixes/fix_tuple_params.py Message-ID: Author: benjamin.peterson Date: Sat Jan 30 17:32:05 2010 New Revision: 77855 Log: don't return node if it is not changed Modified: sandbox/trunk/2to3/lib2to3/fixes/fix_tuple_params.py Modified: sandbox/trunk/2to3/lib2to3/fixes/fix_tuple_params.py ============================================================================== --- sandbox/trunk/2to3/lib2to3/fixes/fix_tuple_params.py (original) +++ sandbox/trunk/2to3/lib2to3/fixes/fix_tuple_params.py Sat Jan 30 17:32:05 2010 @@ -81,7 +81,7 @@ handle_tuple(arg, add_prefix=(i > 0)) if not new_lines: - return node + return # This isn't strictly necessary, but it plays nicely with other fixers. # TODO(cwinter) get rid of this when children becomes a smart list From python-checkins at python.org Sat Jan 30 17:35:29 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 30 Jan 2010 16:35:29 -0000 Subject: [Python-checkins] r77856 - sandbox/trunk/2to3/lib2to3/fixes/fix_metaclass.py Message-ID: Author: benjamin.peterson Date: Sat Jan 30 17:35:29 2010 New Revision: 77856 Log: return None to indicate no change Modified: sandbox/trunk/2to3/lib2to3/fixes/fix_metaclass.py Modified: sandbox/trunk/2to3/lib2to3/fixes/fix_metaclass.py ============================================================================== --- sandbox/trunk/2to3/lib2to3/fixes/fix_metaclass.py (original) +++ sandbox/trunk/2to3/lib2to3/fixes/fix_metaclass.py Sat Jan 30 17:35:29 2010 @@ -150,7 +150,7 @@ def transform(self, node, results): if not has_metaclass(node): - return node + return fixup_parse_tree(node) From python-checkins at python.org Sat Jan 30 18:54:04 2010 From: python-checkins at python.org (georg.brandl) Date: Sat, 30 Jan 2010 17:54:04 -0000 Subject: [Python-checkins] r77857 - python/branches/py3k/Doc/library/xmlrpc.server.rst Message-ID: Author: georg.brandl Date: Sat Jan 30 18:54:04 2010 New Revision: 77857 Log: #7814: fix wrong example function usage. Modified: python/branches/py3k/Doc/library/xmlrpc.server.rst Modified: python/branches/py3k/Doc/library/xmlrpc.server.rst ============================================================================== --- python/branches/py3k/Doc/library/xmlrpc.server.rst (original) +++ python/branches/py3k/Doc/library/xmlrpc.server.rst Sat Jan 30 18:54:04 2010 @@ -136,10 +136,10 @@ server.register_function(adder_function, 'add') # Register an instance; all the methods of the instance are - # published as XML-RPC methods (in this case, just 'div'). + # published as XML-RPC methods (in this case, just 'mul'). class MyFuncs: - def div(self, x, y): - return x // y + def mul(self, x, y): + return x * y server.register_instance(MyFuncs()) @@ -209,7 +209,8 @@ Example:: class MyFuncs: - def div(self, x, y) : return x // y + def mul(self, x, y): + return x * y handler = CGIXMLRPCRequestHandler() From python-checkins at python.org Sat Jan 30 18:57:49 2010 From: python-checkins at python.org (georg.brandl) Date: Sat, 30 Jan 2010 17:57:49 -0000 Subject: [Python-checkins] r77858 - python/trunk/Doc/library/xmlrpclib.rst Message-ID: Author: georg.brandl Date: Sat Jan 30 18:57:48 2010 New Revision: 77858 Log: #7802: fix invalid example (heh). Modified: python/trunk/Doc/library/xmlrpclib.rst Modified: python/trunk/Doc/library/xmlrpclib.rst ============================================================================== --- python/trunk/Doc/library/xmlrpclib.rst (original) +++ python/trunk/Doc/library/xmlrpclib.rst Sat Jan 30 18:57:48 2010 @@ -414,12 +414,12 @@ error. In the following example we're going to intentionally cause a :exc:`ProtocolError` -by providing an invalid URI:: +by providing an URI that doesn't point to an XMLRPC server:: import xmlrpclib - # create a ServerProxy with an invalid URI - proxy = xmlrpclib.ServerProxy("http://invalidaddress/") + # create a ServerProxy with an URI that doesn't respond to XMLRPC requests + proxy = xmlrpclib.ServerProxy("http://www.google.com/") try: proxy.some_method() From python-checkins at python.org Sat Jan 30 19:06:17 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 30 Jan 2010 18:06:17 -0000 Subject: [Python-checkins] r77859 - python/branches/py3k/Objects/longobject.c Message-ID: Author: mark.dickinson Date: Sat Jan 30 19:06:17 2010 New Revision: 77859 Log: Move docstrings for long.to_bytes and long.from_bytes after the corresponding functions. Modified: python/branches/py3k/Objects/longobject.c Modified: python/branches/py3k/Objects/longobject.c ============================================================================== --- python/branches/py3k/Objects/longobject.c (original) +++ python/branches/py3k/Objects/longobject.c Sat Jan 30 19:06:17 2010 @@ -4393,25 +4393,6 @@ #endif -PyDoc_STRVAR(long_to_bytes_doc, -"int.to_bytes(length, byteorder, *, signed=False) -> bytes\n\ -\n\ -Return an array of bytes representing an integer.\n\ -\n\ -The integer is represented using length bytes. An OverflowError is\n\ -raised if the integer is not representable with the given number of\n\ -bytes.\n\ -\n\ -The byteorder argument determines the byte order used to represent the\n\ -integer. If byteorder is 'big', the most significant byte is at the\n\ -beginning of the byte array. If byteorder is 'little', the most\n\ -significant byte is at the end of the byte array. To request the native\n\ -byte order of the host system, use `sys.byteorder' as the byte order value.\n\ -\n\ -The signed keyword-only argument determines whether two's complement is\n\ -used to represent the integer. If signed is False and a negative integer\n\ -is given, an OverflowError is raised."); - static PyObject * long_to_bytes(PyLongObject *v, PyObject *args, PyObject *kwds) { @@ -4475,14 +4456,14 @@ return bytes; } -PyDoc_STRVAR(long_from_bytes_doc, -"int.from_bytes(bytes, byteorder, *, signed=False) -> int\n\ +PyDoc_STRVAR(long_to_bytes_doc, +"int.to_bytes(length, byteorder, *, signed=False) -> bytes\n\ \n\ -Return the integer represented by the given array of bytes.\n\ +Return an array of bytes representing an integer.\n\ \n\ -The bytes argument must either support the buffer protocol or be an\n\ -iterable object producing bytes. Bytes and bytearray are examples of\n\ -built-in objects that support the buffer protocol.\n\ +The integer is represented using length bytes. An OverflowError is\n\ +raised if the integer is not representable with the given number of\n\ +bytes.\n\ \n\ The byteorder argument determines the byte order used to represent the\n\ integer. If byteorder is 'big', the most significant byte is at the\n\ @@ -4490,8 +4471,9 @@ significant byte is at the end of the byte array. To request the native\n\ byte order of the host system, use `sys.byteorder' as the byte order value.\n\ \n\ -The signed keyword-only argument indicates whether two's complement is\n\ -used to represent the integer."); +The signed keyword-only argument determines whether two's complement is\n\ +used to represent the integer. If signed is False and a negative integer\n\ +is given, an OverflowError is raised."); static PyObject * long_from_bytes(PyTypeObject *type, PyObject *args, PyObject *kwds) @@ -4573,6 +4555,24 @@ return long_obj; } +PyDoc_STRVAR(long_from_bytes_doc, +"int.from_bytes(bytes, byteorder, *, signed=False) -> int\n\ +\n\ +Return the integer represented by the given array of bytes.\n\ +\n\ +The bytes argument must either support the buffer protocol or be an\n\ +iterable object producing bytes. Bytes and bytearray are examples of\n\ +built-in objects that support the buffer protocol.\n\ +\n\ +The byteorder argument determines the byte order used to represent the\n\ +integer. If byteorder is 'big', the most significant byte is at the\n\ +beginning of the byte array. If byteorder is 'little', the most\n\ +significant byte is at the end of the byte array. To request the native\n\ +byte order of the host system, use `sys.byteorder' as the byte order value.\n\ +\n\ +The signed keyword-only argument indicates whether two's complement is\n\ +used to represent the integer."); + static PyMethodDef long_methods[] = { {"conjugate", (PyCFunction)long_long, METH_NOARGS, "Returns self, the complex conjugate of any int."}, From python-checkins at python.org Sat Jan 30 19:06:52 2010 From: python-checkins at python.org (mark.dickinson) Date: Sat, 30 Jan 2010 18:06:52 -0000 Subject: [Python-checkins] r77860 - python/branches/release31-maint Message-ID: Author: mark.dickinson Date: Sat Jan 30 19:06:52 2010 New Revision: 77860 Log: Blocked revisions 77859 via svnmerge ........ r77859 | mark.dickinson | 2010-01-30 18:06:17 +0000 (Sat, 30 Jan 2010) | 1 line Move docstrings for long.to_bytes and long.from_bytes after the corresponding functions. ........ Modified: python/branches/release31-maint/ (props changed) From python-checkins at python.org Sat Jan 30 20:30:09 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 30 Jan 2010 19:30:09 -0000 Subject: [Python-checkins] r77861 - python/branches/py3k Message-ID: Author: benjamin.peterson Date: Sat Jan 30 20:30:08 2010 New Revision: 77861 Log: Unblocked revisions 76050 via svnmerge ........ r76050 | gregory.p.smith | 2009-11-01 19:37:37 -0600 (Sun, 01 Nov 2009) | 5 lines see http://bugs.python.org/issue1006238 this merges in the following patch to make cross compilation of the chflags check easier: http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-lang/python/files/python-2.6-chflags-cross.patch?rev=1.1 ........ Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Sat Jan 30 20:36:43 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 30 Jan 2010 19:36:43 -0000 Subject: [Python-checkins] r77862 - in python/branches/py3k: configure configure.in Message-ID: Author: benjamin.peterson Date: Sat Jan 30 20:36:43 2010 New Revision: 77862 Log: Merged revisions 76050 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r76050 | gregory.p.smith | 2009-11-01 19:37:37 -0600 (Sun, 01 Nov 2009) | 5 lines see http://bugs.python.org/issue1006238 this merges in the following patch to make cross compilation of the chflags check easier: http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-lang/python/files/python-2.6-chflags-cross.patch?rev=1.1 ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/configure python/branches/py3k/configure.in Modified: python/branches/py3k/configure ============================================================================== --- python/branches/py3k/configure (original) +++ python/branches/py3k/configure Sat Jan 30 20:36:43 2010 @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 77196 . +# From configure.in Revision: 77216 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for python 3.2. # @@ -18550,7 +18550,7 @@ echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then - ac_cv_have_chflags=no + ac_cv_have_chflags=cross else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -18558,7 +18558,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - +[ #include #include int main(int argc, char*argv[]) @@ -18567,7 +18567,7 @@ return 1; return 0; } - +] _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" @@ -18604,11 +18604,98 @@ fi - { echo "$as_me:$LINENO: result: $ac_cv_have_chflags" >&5 echo "${ECHO_T}$ac_cv_have_chflags" >&6; } -if test $ac_cv_have_chflags = yes -then +if test "$ac_cv_have_chflags" = cross ; then + { echo "$as_me:$LINENO: checking for chflags" >&5 +echo $ECHO_N "checking for chflags... $ECHO_C" >&6; } +if test "${ac_cv_func_chflags+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define chflags to an innocuous variant, in case declares chflags. + For example, HP-UX 11i declares gettimeofday. */ +#define chflags innocuous_chflags + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char chflags (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef chflags + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char chflags (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_chflags || defined __stub___chflags +choke me +#endif + +int +main () +{ +return chflags (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_func_chflags=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_chflags=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_chflags" >&5 +echo "${ECHO_T}$ac_cv_func_chflags" >&6; } +if test $ac_cv_func_chflags = yes; then + ac_cv_have_chflags="yes" +else + ac_cv_have_chflags="no" +fi + +fi +if test "$ac_cv_have_chflags" = yes ; then cat >>confdefs.h <<\_ACEOF #define HAVE_CHFLAGS 1 @@ -18622,7 +18709,7 @@ echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then - ac_cv_have_lchflags=no + ac_cv_have_lchflags=cross else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -18630,7 +18717,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - +[ #include #include int main(int argc, char*argv[]) @@ -18639,7 +18726,7 @@ return 1; return 0; } - +] _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" @@ -18676,11 +18763,98 @@ fi - { echo "$as_me:$LINENO: result: $ac_cv_have_lchflags" >&5 echo "${ECHO_T}$ac_cv_have_lchflags" >&6; } -if test $ac_cv_have_lchflags = yes -then +if test "$ac_cv_have_lchflags" = cross ; then + { echo "$as_me:$LINENO: checking for lchflags" >&5 +echo $ECHO_N "checking for lchflags... $ECHO_C" >&6; } +if test "${ac_cv_func_lchflags+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define lchflags to an innocuous variant, in case declares lchflags. + For example, HP-UX 11i declares gettimeofday. */ +#define lchflags innocuous_lchflags + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char lchflags (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef lchflags + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char lchflags (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_lchflags || defined __stub___lchflags +choke me +#endif + +int +main () +{ +return lchflags (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_func_lchflags=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_lchflags=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_lchflags" >&5 +echo "${ECHO_T}$ac_cv_func_lchflags" >&6; } +if test $ac_cv_func_lchflags = yes; then + ac_cv_have_lchflags="yes" +else + ac_cv_have_lchflags="no" +fi + +fi +if test "$ac_cv_have_lchflags" = yes ; then cat >>confdefs.h <<\_ACEOF #define HAVE_LCHFLAGS 1 Modified: python/branches/py3k/configure.in ============================================================================== --- python/branches/py3k/configure.in (original) +++ python/branches/py3k/configure.in Sat Jan 30 20:36:43 2010 @@ -2556,8 +2556,7 @@ # On Tru64, chflags seems to be present, but calling it will # exit Python -AC_MSG_CHECKING(for chflags) -AC_CACHE_VAL(ac_cv_have_chflags, +AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl AC_TRY_RUN([[ #include #include @@ -2568,17 +2567,17 @@ return 0; } ]], ac_cv_have_chflags=yes, - ac_cv_have_chflags=no, - ac_cv_have_chflags=no) -) -AC_MSG_RESULT($ac_cv_have_chflags) -if test $ac_cv_have_chflags = yes -then + ac_cv_have_chflags=no, + ac_cv_have_chflags=cross) +]) +if test "$ac_cv_have_chflags" = cross ; then + AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"]) +fi +if test "$ac_cv_have_chflags" = yes ; then AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.) fi -AC_MSG_CHECKING(for lchflags) -AC_CACHE_VAL(ac_cv_have_lchflags, +AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl AC_TRY_RUN([[ #include #include @@ -2589,12 +2588,13 @@ return 0; } ]], ac_cv_have_lchflags=yes, - ac_cv_have_lchflags=no, - ac_cv_have_lchflags=no) -) -AC_MSG_RESULT($ac_cv_have_lchflags) -if test $ac_cv_have_lchflags = yes -then + ac_cv_have_lchflags=no, + ac_cv_have_lchflags=cross) +]) +if test "$ac_cv_have_lchflags" = cross ; then + AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"]) +fi +if test "$ac_cv_have_lchflags" = yes ; then AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.) fi From python-checkins at python.org Sat Jan 30 20:51:43 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 30 Jan 2010 19:51:43 -0000 Subject: [Python-checkins] r77863 - in python/branches/release31-maint: configure configure.in Message-ID: Author: benjamin.peterson Date: Sat Jan 30 20:51:43 2010 New Revision: 77863 Log: Merged revisions 77862 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77862 | benjamin.peterson | 2010-01-30 13:36:43 -0600 (Sat, 30 Jan 2010) | 12 lines Merged revisions 76050 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r76050 | gregory.p.smith | 2009-11-01 19:37:37 -0600 (Sun, 01 Nov 2009) | 5 lines see http://bugs.python.org/issue1006238 this merges in the following patch to make cross compilation of the chflags check easier: http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-lang/python/files/python-2.6-chflags-cross.patch?rev=1.1 ........ ................ Modified: python/branches/release31-maint/ (props changed) python/branches/release31-maint/configure python/branches/release31-maint/configure.in Modified: python/branches/release31-maint/configure ============================================================================== --- python/branches/release31-maint/configure (original) +++ python/branches/release31-maint/configure Sat Jan 30 20:51:43 2010 @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 76821 . +# From configure.in Revision: 77197 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for python 3.1. # @@ -17309,12 +17309,11 @@ # exit Python { echo "$as_me:$LINENO: checking for chflags" >&5 echo $ECHO_N "checking for chflags... $ECHO_C" >&6; } -if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } +if test "${ac_cv_have_chflags+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_have_chflags=cross else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -17322,7 +17321,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - +[ #include #include int main(int argc, char*argv[]) @@ -17331,7 +17330,7 @@ return 1; return 0; } - +] _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" @@ -17353,36 +17352,127 @@ ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_CHFLAGS 1 -_ACEOF - - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + ac_cv_have_chflags=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } - +ac_cv_have_chflags=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_chflags" >&5 +echo "${ECHO_T}$ac_cv_have_chflags" >&6; } +if test "$ac_cv_have_chflags" = cross ; then + { echo "$as_me:$LINENO: checking for chflags" >&5 +echo $ECHO_N "checking for chflags... $ECHO_C" >&6; } +if test "${ac_cv_func_chflags+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define chflags to an innocuous variant, in case declares chflags. + For example, HP-UX 11i declares gettimeofday. */ +#define chflags innocuous_chflags + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char chflags (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef chflags + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char chflags (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_chflags || defined __stub___chflags +choke me +#endif + +int +main () +{ +return chflags (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_func_chflags=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_chflags=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_chflags" >&5 +echo "${ECHO_T}$ac_cv_func_chflags" >&6; } +if test $ac_cv_func_chflags = yes; then + ac_cv_have_chflags="yes" +else + ac_cv_have_chflags="no" +fi + +fi +if test "$ac_cv_have_chflags" = yes ; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_CHFLAGS 1 +_ACEOF + +fi + { echo "$as_me:$LINENO: checking for lchflags" >&5 echo $ECHO_N "checking for lchflags... $ECHO_C" >&6; } -if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } +if test "${ac_cv_have_lchflags+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_have_lchflags=cross else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -17390,7 +17480,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - +[ #include #include int main(int argc, char*argv[]) @@ -17399,7 +17489,7 @@ return 1; return 0; } - +] _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" @@ -17421,28 +17511,120 @@ ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_LCHFLAGS 1 -_ACEOF - - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + ac_cv_have_lchflags=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } - +ac_cv_have_lchflags=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_lchflags" >&5 +echo "${ECHO_T}$ac_cv_have_lchflags" >&6; } +if test "$ac_cv_have_lchflags" = cross ; then + { echo "$as_me:$LINENO: checking for lchflags" >&5 +echo $ECHO_N "checking for lchflags... $ECHO_C" >&6; } +if test "${ac_cv_func_lchflags+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define lchflags to an innocuous variant, in case declares lchflags. + For example, HP-UX 11i declares gettimeofday. */ +#define lchflags innocuous_lchflags + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char lchflags (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef lchflags + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char lchflags (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_lchflags || defined __stub___lchflags +choke me +#endif + +int +main () +{ +return lchflags (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_func_lchflags=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_lchflags=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_lchflags" >&5 +echo "${ECHO_T}$ac_cv_func_lchflags" >&6; } +if test $ac_cv_func_lchflags = yes; then + ac_cv_have_lchflags="yes" +else + ac_cv_have_lchflags="no" +fi + +fi +if test "$ac_cv_have_lchflags" = yes ; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LCHFLAGS 1 +_ACEOF + +fi + case $ac_sys_system/$ac_sys_release in Darwin/*) _CUR_CFLAGS="${CFLAGS}" Modified: python/branches/release31-maint/configure.in ============================================================================== --- python/branches/release31-maint/configure.in (original) +++ python/branches/release31-maint/configure.in Sat Jan 30 20:51:43 2010 @@ -2592,8 +2592,8 @@ # On Tru64, chflags seems to be present, but calling it will # exit Python -AC_MSG_CHECKING(for chflags) -AC_TRY_RUN([ +AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl +AC_TRY_RUN([[ #include #include int main(int argc, char*argv[]) @@ -2602,13 +2602,19 @@ return 1; return 0; } -],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.) - AC_MSG_RESULT(yes), - AC_MSG_RESULT(no) -) +]], ac_cv_have_chflags=yes, + ac_cv_have_chflags=no, + ac_cv_have_chflags=cross) +]) +if test "$ac_cv_have_chflags" = cross ; then + AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"]) +fi +if test "$ac_cv_have_chflags" = yes ; then + AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.) +fi -AC_MSG_CHECKING(for lchflags) -AC_TRY_RUN([ +AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl +AC_TRY_RUN([[ #include #include int main(int argc, char*argv[]) @@ -2617,10 +2623,16 @@ return 1; return 0; } -],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.) - AC_MSG_RESULT(yes), - AC_MSG_RESULT(no) -) +]], ac_cv_have_lchflags=yes, + ac_cv_have_lchflags=no, + ac_cv_have_lchflags=cross) +]) +if test "$ac_cv_have_lchflags" = cross ; then + AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"]) +fi +if test "$ac_cv_have_lchflags" = yes ; then + AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.) +fi dnl Check if system zlib has *Copy() functions dnl From python-checkins at python.org Sat Jan 30 20:51:50 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 30 Jan 2010 19:51:50 -0000 Subject: [Python-checkins] r77864 - in python/branches/release26-maint: configure configure.in Message-ID: Author: benjamin.peterson Date: Sat Jan 30 20:51:50 2010 New Revision: 77864 Log: Merged revisions 76050 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r76050 | gregory.p.smith | 2009-11-01 19:37:37 -0600 (Sun, 01 Nov 2009) | 5 lines see http://bugs.python.org/issue1006238 this merges in the following patch to make cross compilation of the chflags check easier: http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-lang/python/files/python-2.6-chflags-cross.patch?rev=1.1 ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/configure python/branches/release26-maint/configure.in Modified: python/branches/release26-maint/configure ============================================================================== --- python/branches/release26-maint/configure (original) +++ python/branches/release26-maint/configure Sat Jan 30 20:51:50 2010 @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 76404 . +# From configure.in Revision: 77195 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for python 2.6. # @@ -17200,12 +17200,11 @@ # exit Python { echo "$as_me:$LINENO: checking for chflags" >&5 echo $ECHO_N "checking for chflags... $ECHO_C" >&6; } -if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } +if test "${ac_cv_have_chflags+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_have_chflags=cross else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -17213,7 +17212,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - +[ #include #include int main(int argc, char*argv[]) @@ -17222,7 +17221,7 @@ return 1; return 0; } - +] _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" @@ -17244,36 +17243,127 @@ ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_CHFLAGS 1 -_ACEOF - - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + ac_cv_have_chflags=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } - +ac_cv_have_chflags=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_chflags" >&5 +echo "${ECHO_T}$ac_cv_have_chflags" >&6; } +if test "$ac_cv_have_chflags" = cross ; then + { echo "$as_me:$LINENO: checking for chflags" >&5 +echo $ECHO_N "checking for chflags... $ECHO_C" >&6; } +if test "${ac_cv_func_chflags+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define chflags to an innocuous variant, in case declares chflags. + For example, HP-UX 11i declares gettimeofday. */ +#define chflags innocuous_chflags + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char chflags (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef chflags + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char chflags (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_chflags || defined __stub___chflags +choke me +#endif + +int +main () +{ +return chflags (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_func_chflags=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_chflags=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_chflags" >&5 +echo "${ECHO_T}$ac_cv_func_chflags" >&6; } +if test $ac_cv_func_chflags = yes; then + ac_cv_have_chflags="yes" +else + ac_cv_have_chflags="no" +fi + +fi +if test "$ac_cv_have_chflags" = yes ; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_CHFLAGS 1 +_ACEOF + +fi + { echo "$as_me:$LINENO: checking for lchflags" >&5 echo $ECHO_N "checking for lchflags... $ECHO_C" >&6; } -if test "$cross_compiling" = yes; then - { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run test program while cross compiling -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } +if test "${ac_cv_have_lchflags+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_have_lchflags=cross else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -17281,7 +17371,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - +[ #include #include int main(int argc, char*argv[]) @@ -17290,7 +17380,7 @@ return 1; return 0; } - +] _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" @@ -17312,28 +17402,120 @@ ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_LCHFLAGS 1 -_ACEOF - - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + ac_cv_have_lchflags=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -{ echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } - +ac_cv_have_lchflags=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_lchflags" >&5 +echo "${ECHO_T}$ac_cv_have_lchflags" >&6; } +if test "$ac_cv_have_lchflags" = cross ; then + { echo "$as_me:$LINENO: checking for lchflags" >&5 +echo $ECHO_N "checking for lchflags... $ECHO_C" >&6; } +if test "${ac_cv_func_lchflags+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define lchflags to an innocuous variant, in case declares lchflags. + For example, HP-UX 11i declares gettimeofday. */ +#define lchflags innocuous_lchflags + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char lchflags (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef lchflags + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char lchflags (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_lchflags || defined __stub___lchflags +choke me +#endif + +int +main () +{ +return lchflags (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_func_lchflags=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_lchflags=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_lchflags" >&5 +echo "${ECHO_T}$ac_cv_func_lchflags" >&6; } +if test $ac_cv_func_lchflags = yes; then + ac_cv_have_lchflags="yes" +else + ac_cv_have_lchflags="no" +fi + +fi +if test "$ac_cv_have_lchflags" = yes ; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LCHFLAGS 1 +_ACEOF + +fi + case $ac_sys_system/$ac_sys_release in Darwin/*) _CUR_CFLAGS="${CFLAGS}" Modified: python/branches/release26-maint/configure.in ============================================================================== --- python/branches/release26-maint/configure.in (original) +++ python/branches/release26-maint/configure.in Sat Jan 30 20:51:50 2010 @@ -2656,8 +2656,8 @@ # On Tru64, chflags seems to be present, but calling it will # exit Python -AC_MSG_CHECKING(for chflags) -AC_TRY_RUN([ +AC_CACHE_CHECK([for chflags], [ac_cv_have_chflags], [dnl +AC_TRY_RUN([[ #include #include int main(int argc, char*argv[]) @@ -2666,13 +2666,19 @@ return 1; return 0; } -],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.) - AC_MSG_RESULT(yes), - AC_MSG_RESULT(no) -) +]], ac_cv_have_chflags=yes, + ac_cv_have_chflags=no, + ac_cv_have_chflags=cross) +]) +if test "$ac_cv_have_chflags" = cross ; then + AC_CHECK_FUNC([chflags], [ac_cv_have_chflags="yes"], [ac_cv_have_chflags="no"]) +fi +if test "$ac_cv_have_chflags" = yes ; then + AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.) +fi -AC_MSG_CHECKING(for lchflags) -AC_TRY_RUN([ +AC_CACHE_CHECK([for lchflags], [ac_cv_have_lchflags], [dnl +AC_TRY_RUN([[ #include #include int main(int argc, char*argv[]) @@ -2681,10 +2687,16 @@ return 1; return 0; } -],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.) - AC_MSG_RESULT(yes), - AC_MSG_RESULT(no) -) +]], ac_cv_have_lchflags=yes, + ac_cv_have_lchflags=no, + ac_cv_have_lchflags=cross) +]) +if test "$ac_cv_have_lchflags" = cross ; then + AC_CHECK_FUNC([lchflags], [ac_cv_have_lchflags="yes"], [ac_cv_have_lchflags="no"]) +fi +if test "$ac_cv_have_lchflags" = yes ; then + AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.) +fi dnl Check if system zlib has *Copy() functions dnl From python-checkins at python.org Sat Jan 30 21:00:36 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 30 Jan 2010 20:00:36 -0000 Subject: [Python-checkins] r77865 - in python/branches/release26-maint: Misc/NEWS setup.py Message-ID: Author: benjamin.peterson Date: Sat Jan 30 21:00:35 2010 New Revision: 77865 Log: Merged revisions 68874 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r68874 | jesse.noller | 2009-01-23 08:04:41 -0600 (Fri, 23 Jan 2009) | 1 line Issue 3807: multiprocessing fails to compile under --without-threads ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Misc/NEWS python/branches/release26-maint/setup.py Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Sat Jan 30 21:00:35 2010 @@ -775,6 +775,10 @@ - Issue #5387: Fixed mmap.move crash by integer overflow. +- Issue #3807: _multiprocessing build fails when configure is passed + --without-threads argument. When this occurs, _multiprocessing will + be disabled, and not compiled. + - Issue #5261: Patch multiprocessing's semaphore.c to support context manager use: "with multiprocessing.Lock()" works now. Modified: python/branches/release26-maint/setup.py ============================================================================== --- python/branches/release26-maint/setup.py (original) +++ python/branches/release26-maint/setup.py Sat Jan 30 21:00:35 2010 @@ -1325,9 +1325,13 @@ if macros.get('HAVE_SEM_OPEN', False): multiprocessing_srcs.append('_multiprocessing/semaphore.c') - exts.append ( Extension('_multiprocessing', multiprocessing_srcs, - define_macros=macros.items(), - include_dirs=["Modules/_multiprocessing"])) + if sysconfig.get_config_var('WITH_THREAD'): + exts.append ( Extension('_multiprocessing', multiprocessing_srcs, + define_macros=macros.items(), + include_dirs=["Modules/_multiprocessing"])) + else: + missing.append('_multiprocessing') + # End multiprocessing From python-checkins at python.org Sun Jan 31 00:26:05 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 30 Jan 2010 23:26:05 -0000 Subject: [Python-checkins] r77866 - python/trunk/Modules/_testcapimodule.c Message-ID: Author: benjamin.peterson Date: Sun Jan 31 00:26:05 2010 New Revision: 77866 Log: move test outside WITH_THREAD section Modified: python/trunk/Modules/_testcapimodule.c Modified: python/trunk/Modules/_testcapimodule.c ============================================================================== --- python/trunk/Modules/_testcapimodule.c (original) +++ python/trunk/Modules/_testcapimodule.c Sun Jan 31 00:26:05 2010 @@ -1144,8 +1144,6 @@ return NULL; } -#ifdef WITH_THREAD - static PyObject * test_datetime_capi(PyObject *self, PyObject *args) { if (PyDateTimeAPI) { @@ -1160,6 +1158,9 @@ return NULL; } + +#ifdef WITH_THREAD + /* test_thread_state spawns a thread of its own, and that thread releases * `thread_done` when it's finished. The driver code has to know when the * thread finishes, because the thread uses a PyObject (the callable) that From python-checkins at python.org Sun Jan 31 00:28:38 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sat, 30 Jan 2010 23:28:38 -0000 Subject: [Python-checkins] r77867 - python/trunk/Modules/_testcapimodule.c Message-ID: Author: benjamin.peterson Date: Sun Jan 31 00:28:38 2010 New Revision: 77867 Log: be robust against test being run over and over (such as -R) Modified: python/trunk/Modules/_testcapimodule.c Modified: python/trunk/Modules/_testcapimodule.c ============================================================================== --- python/trunk/Modules/_testcapimodule.c (original) +++ python/trunk/Modules/_testcapimodule.c Sun Jan 31 00:28:38 2010 @@ -1144,13 +1144,23 @@ return NULL; } + +static int test_run_counter = 0; + static PyObject * test_datetime_capi(PyObject *self, PyObject *args) { if (PyDateTimeAPI) { - PyErr_SetString(PyExc_AssertionError, - "PyDateTime_CAPI somehow initialized"); - return NULL; + if (test_run_counter) { + /* Probably regrtest.py -R */ + Py_RETURN_NONE; + } + else { + PyErr_SetString(PyExc_AssertionError, + "PyDateTime_CAPI somehow initialized"); + return NULL; + } } + test_run_counter++; PyDateTime_IMPORT; if (PyDateTimeAPI) Py_RETURN_NONE; From solipsis at pitrou.net Sun Jan 31 01:03:59 2010 From: solipsis at pitrou.net (solipsis at pitrou.net) Date: Sun, 31 Jan 2010 01:03:59 +0100 (CET) Subject: [Python-checkins] Daily py3k reference leaks (r77862): sum=0 Message-ID: <20100131000359.4B01B1770B@ns6635.ovh.net> py3k results for svn r77862 (hg cset a0f59d9403d2) -------------------------------------------------- Command line was: ['./python', '-m', 'test.regrtest', '-uall', '-R', '3:3:/home/antoine/py3k/refleaks/reflog7XBbtH', '-x', 'test_httpservers'] From nnorwitz at gmail.com Sun Jan 31 01:31:06 2010 From: nnorwitz at gmail.com (Neal Norwitz) Date: Sat, 30 Jan 2010 19:31:06 -0500 Subject: [Python-checkins] Python Regression Test Failures refleak (1) Message-ID: <20100131003106.GA2277@kbk-i386-bb.psfb.org> More important issues: ---------------------- test_bz2 leaked [0, 0, 84] references, sum=84 Less important issues: ---------------------- From python-checkins at python.org Sun Jan 31 01:37:48 2010 From: python-checkins at python.org (barry.warsaw) Date: Sun, 31 Jan 2010 00:37:48 -0000 Subject: [Python-checkins] r77868 - peps/trunk/pep-3147.txt Message-ID: Author: barry.warsaw Date: Sun Jan 31 01:37:48 2010 New Revision: 77868 Log: Fix reference to placeholder PEP number. Modified: peps/trunk/pep-3147.txt Modified: peps/trunk/pep-3147.txt ============================================================================== --- peps/trunk/pep-3147.txt (original) +++ peps/trunk/pep-3147.txt Sun Jan 31 01:37:48 2010 @@ -197,7 +197,7 @@ possible to find the `my.dat` file relative to the source directory from there. -On the other hand, PEP 999 keeps all byte code artifacts co-located +On the other hand, this PEP keeps all byte code artifacts co-located with the source file. Some adjustment will have to be made for the fact that the `pyc` file lives in a subdirectory. For example, in current Python, when you import a module, its `__file__` attribute From python-checkins at python.org Sun Jan 31 01:38:56 2010 From: python-checkins at python.org (barry.warsaw) Date: Sun, 31 Jan 2010 00:38:56 -0000 Subject: [Python-checkins] r77869 - peps/trunk/pep-3147.txt Message-ID: Author: barry.warsaw Date: Sun Jan 31 01:38:55 2010 New Revision: 77869 Log: Oops, one more. Modified: peps/trunk/pep-3147.txt Modified: peps/trunk/pep-3147.txt ============================================================================== --- peps/trunk/pep-3147.txt (original) +++ peps/trunk/pep-3147.txt Sun Jan 31 01:38:55 2010 @@ -212,7 +212,7 @@ >>> baz.__file__ 'baz/__init__.pyc' -The implementation of PEP 999 would have to ensure that the same +The implementation of this PEP would have to ensure that the same directory level is returned from `__file__` as it does without the `pyr` directory, so that the common idiom above continues to work:: From python-checkins at python.org Sun Jan 31 02:21:27 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sun, 31 Jan 2010 01:21:27 -0000 Subject: [Python-checkins] r77870 - in sandbox/trunk/2to3/lib2to3/fixes: fix_import.py fix_itertools_imports.py fix_xrange.py Message-ID: Author: benjamin.peterson Date: Sun Jan 31 02:21:26 2010 New Revision: 77870 Log: never return the original node given to transform() Modified: sandbox/trunk/2to3/lib2to3/fixes/fix_import.py sandbox/trunk/2to3/lib2to3/fixes/fix_itertools_imports.py sandbox/trunk/2to3/lib2to3/fixes/fix_xrange.py Modified: sandbox/trunk/2to3/lib2to3/fixes/fix_import.py ============================================================================== --- sandbox/trunk/2to3/lib2to3/fixes/fix_import.py (original) +++ sandbox/trunk/2to3/lib2to3/fixes/fix_import.py Sun Jan 31 02:21:26 2010 @@ -56,7 +56,6 @@ if self.probably_a_local_import(imp.value): imp.value = u"." + imp.value imp.changed() - return node else: have_local = False have_absolute = False Modified: sandbox/trunk/2to3/lib2to3/fixes/fix_itertools_imports.py ============================================================================== --- sandbox/trunk/2to3/lib2to3/fixes/fix_itertools_imports.py (original) +++ sandbox/trunk/2to3/lib2to3/fixes/fix_itertools_imports.py Sun Jan 31 02:21:26 2010 @@ -49,4 +49,4 @@ p = node.prefix node = BlankLine() node.prefix = p - return node + return node Modified: sandbox/trunk/2to3/lib2to3/fixes/fix_xrange.py ============================================================================== --- sandbox/trunk/2to3/lib2to3/fixes/fix_xrange.py (original) +++ sandbox/trunk/2to3/lib2to3/fixes/fix_xrange.py Sun Jan 31 02:21:26 2010 @@ -40,7 +40,6 @@ for n in results["rest"]: list_call.append_child(n) return list_call - return node P1 = "power< func=NAME trailer< '(' node=any ')' > any* >" p1 = patcomp.compile_pattern(P1) From python-checkins at python.org Sun Jan 31 12:46:54 2010 From: python-checkins at python.org (ezio.melotti) Date: Sun, 31 Jan 2010 11:46:54 -0000 Subject: [Python-checkins] r77871 - in python/trunk/Lib: cgi.py test/test_cgi.py test/test_coercion.py test/test_distutils.py test/test_userstring.py Message-ID: Author: ezio.melotti Date: Sun Jan 31 12:46:54 2010 New Revision: 77871 Log: #7092: silence more -3 and -Wd warnings Modified: python/trunk/Lib/cgi.py python/trunk/Lib/test/test_cgi.py python/trunk/Lib/test/test_coercion.py python/trunk/Lib/test/test_distutils.py python/trunk/Lib/test/test_userstring.py Modified: python/trunk/Lib/cgi.py ============================================================================== --- python/trunk/Lib/cgi.py (original) +++ python/trunk/Lib/cgi.py Sun Jan 31 12:46:54 2010 @@ -172,7 +172,7 @@ else: qs = "" environ['QUERY_STRING'] = qs # XXX Shouldn't, really - return parse_qs(qs, keep_blank_values, strict_parsing) + return urlparse.parse_qs(qs, keep_blank_values, strict_parsing) # parse query string function called from urlparse, Modified: python/trunk/Lib/test/test_cgi.py ============================================================================== --- python/trunk/Lib/test/test_cgi.py (original) +++ python/trunk/Lib/test/test_cgi.py Sun Jan 31 12:46:54 2010 @@ -1,4 +1,4 @@ -from test.test_support import run_unittest +from test.test_support import run_unittest, check_warnings import cgi import os import sys @@ -102,11 +102,6 @@ }) ] -def norm(list): - if type(list) == type([]): - list.sort() - return list - def first_elts(list): return map(lambda x:x[0], list) @@ -141,18 +136,18 @@ if type(expect) == type({}): # test dict interface self.assertEqual(len(expect), len(fcd)) - self.assertEqual(norm(expect.keys()), norm(fcd.keys())) - self.assertEqual(norm(expect.values()), norm(fcd.values())) - self.assertEqual(norm(expect.items()), norm(fcd.items())) + self.assertSameElements(expect.keys(), fcd.keys()) + self.assertSameElements(expect.values(), fcd.values()) + self.assertSameElements(expect.items(), fcd.items()) self.assertEqual(fcd.get("nonexistent field", "default"), "default") self.assertEqual(len(sd), len(fs)) - self.assertEqual(norm(sd.keys()), norm(fs.keys())) + self.assertSameElements(sd.keys(), fs.keys()) self.assertEqual(fs.getvalue("nonexistent field", "default"), "default") # test individual fields for key in expect.keys(): expect_val = expect[key] self.assertTrue(fcd.has_key(key)) - self.assertEqual(norm(fcd[key]), norm(expect[key])) + self.assertSameElements(fcd[key], expect[key]) self.assertEqual(fcd.get(key, "default"), fcd[key]) self.assertTrue(fs.has_key(key)) if len(expect_val) > 1: @@ -168,12 +163,12 @@ self.assertTrue(single_value) self.assertEqual(val, expect_val[0]) self.assertEqual(fs.getvalue(key), expect_val[0]) - self.assertEqual(norm(sd.getlist(key)), norm(expect_val)) + self.assertSameElements(sd.getlist(key), expect_val) if single_value: - self.assertEqual(norm(sd.values()), - first_elts(norm(expect.values()))) - self.assertEqual(norm(sd.items()), - first_second_elts(norm(expect.items()))) + self.assertSameElements(sd.values(), + first_elts(expect.values())) + self.assertSameElements(sd.items(), + first_second_elts(expect.items())) def test_weird_formcontentdict(self): # Test the weird FormContentDict classes @@ -184,7 +179,7 @@ self.assertEqual(d[k], v) for k, v in d.items(): self.assertEqual(expect[k], v) - self.assertEqual(norm(expect.values()), norm(d.values())) + self.assertSameElements(expect.values(), d.values()) def test_log(self): cgi.log("Testing") @@ -345,14 +340,16 @@ self.assertEqual(result, v) def test_deprecated_parse_qs(self): - # this func is moved to urlparse, this is just a sanity check - self.assertEqual({'a': ['A1'], 'B': ['B3'], 'b': ['B2']}, - cgi.parse_qs('a=A1&b=B2&B=B3')) + with check_warnings(): + # this func is moved to urlparse, this is just a sanity check + self.assertEqual({'a': ['A1'], 'B': ['B3'], 'b': ['B2']}, + cgi.parse_qs('a=A1&b=B2&B=B3')) def test_deprecated_parse_qsl(self): - # this func is moved to urlparse, this is just a sanity check - self.assertEqual([('a', 'A1'), ('b', 'B2'), ('B', 'B3')], - cgi.parse_qsl('a=A1&b=B2&B=B3')) + with check_warnings(): + # this func is moved to urlparse, this is just a sanity check + self.assertEqual([('a', 'A1'), ('b', 'B2'), ('B', 'B3')], + cgi.parse_qsl('a=A1&b=B2&B=B3')) def test_parse_header(self): self.assertEqual( Modified: python/trunk/Lib/test/test_coercion.py ============================================================================== --- python/trunk/Lib/test/test_coercion.py (original) +++ python/trunk/Lib/test/test_coercion.py Sun Jan 31 12:46:54 2010 @@ -223,8 +223,10 @@ infix_results[key] = res - -process_infix_results() +with warnings.catch_warnings(): + warnings.filterwarnings("ignore", "classic int division", + DeprecationWarning) + process_infix_results() # now infix_results has two lists of results for every pairing. prefix_binops = [ 'divmod' ] @@ -337,11 +339,12 @@ raise exc def test_main(): - warnings.filterwarnings("ignore", - r'complex divmod\(\), // and % are deprecated', - DeprecationWarning, - r'test.test_coercion$') - run_unittest(CoercionTest) + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", "complex divmod.., // and % " + "are deprecated", DeprecationWarning) + warnings.filterwarnings("ignore", "classic (int|long) division", + DeprecationWarning) + run_unittest(CoercionTest) if __name__ == "__main__": test_main() Modified: python/trunk/Lib/test/test_distutils.py ============================================================================== --- python/trunk/Lib/test/test_distutils.py (original) +++ python/trunk/Lib/test/test_distutils.py Sun Jan 31 12:46:54 2010 @@ -7,10 +7,15 @@ import distutils.tests import test.test_support +import warnings def test_main(): - test.test_support.run_unittest(distutils.tests.test_suite()) + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", + "distutils.sysconfig.\w+ is deprecated", + DeprecationWarning) + test.test_support.run_unittest(distutils.tests.test_suite()) test.test_support.reap_children() Modified: python/trunk/Lib/test/test_userstring.py ============================================================================== --- python/trunk/Lib/test/test_userstring.py (original) +++ python/trunk/Lib/test/test_userstring.py Sun Jan 31 12:46:54 2010 @@ -136,7 +136,10 @@ def test_main(): with warnings.catch_warnings(): - warnings.filterwarnings("ignore", ".*MutableString", + warnings.filterwarnings("ignore", ".*MutableString has been removed", + DeprecationWarning) + warnings.filterwarnings("ignore", + ".*__(get|set|del)slice__ has been removed", DeprecationWarning) test_support.run_unittest(UserStringTest, MutableStringTest) From python-checkins at python.org Sun Jan 31 13:38:30 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sun, 31 Jan 2010 12:38:30 -0000 Subject: [Python-checkins] r77872 - in python/branches/release25-maint: Include/patchlevel.h Lib/idlelib/NEWS.txt Lib/idlelib/idlever.py Misc/NEWS README Message-ID: Author: martin.v.loewis Date: Sun Jan 31 13:38:29 2010 New Revision: 77872 Log: Prepare for 2.5.5. Modified: python/branches/release25-maint/Include/patchlevel.h python/branches/release25-maint/Lib/idlelib/NEWS.txt python/branches/release25-maint/Lib/idlelib/idlever.py python/branches/release25-maint/Misc/NEWS python/branches/release25-maint/README Modified: python/branches/release25-maint/Include/patchlevel.h ============================================================================== --- python/branches/release25-maint/Include/patchlevel.h (original) +++ python/branches/release25-maint/Include/patchlevel.h Sun Jan 31 13:38:29 2010 @@ -22,11 +22,11 @@ #define PY_MAJOR_VERSION 2 #define PY_MINOR_VERSION 5 #define PY_MICRO_VERSION 5 -#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_GAMMA -#define PY_RELEASE_SERIAL 2 +#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL +#define PY_RELEASE_SERIAL 0 /* Version as a string */ -#define PY_VERSION "2.5.5c2" +#define PY_VERSION "2.5.5" /* Subversion Revision number of this file (not of the repository) */ #define PY_PATCHLEVEL_REVISION "$Revision$" Modified: python/branches/release25-maint/Lib/idlelib/NEWS.txt ============================================================================== --- python/branches/release25-maint/Lib/idlelib/NEWS.txt (original) +++ python/branches/release25-maint/Lib/idlelib/NEWS.txt Sun Jan 31 13:38:29 2010 @@ -1,10 +1,15 @@ -What's New in IDLE 1.2.5c2? +What's New in IDLE 1.2.5? ========================= *Release date: 24-Jan-2010* +What's New in IDLE 1.2.5c2? +=========================== + +*Release date: 24-Jan-2010* + What's New in IDLE 1.2.5c1? -========================= +=========================== *Release date: 14-Jan-2010* Modified: python/branches/release25-maint/Lib/idlelib/idlever.py ============================================================================== --- python/branches/release25-maint/Lib/idlelib/idlever.py (original) +++ python/branches/release25-maint/Lib/idlelib/idlever.py Sun Jan 31 13:38:29 2010 @@ -1 +1 @@ -IDLE_VERSION = "1.2.5c2" +IDLE_VERSION = "1.2.5" Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Sun Jan 31 13:38:29 2010 @@ -4,6 +4,12 @@ (editors: check NEWS.help for information about editing NEWS using ReST.) +What's New in Python 2.5.5? +=========================== + +*Release date: 31-Jan-2010* + + What's New in Python 2.5.5c2? ============================= Modified: python/branches/release25-maint/README ============================================================================== --- python/branches/release25-maint/README (original) +++ python/branches/release25-maint/README Sun Jan 31 13:38:29 2010 @@ -1,5 +1,5 @@ -This is Python version 2.5.5c2 -============================== +This is Python version 2.5.5 +============================ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Python Software Foundation. From python-checkins at python.org Sun Jan 31 13:39:07 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sun, 31 Jan 2010 12:39:07 -0000 Subject: [Python-checkins] r77873 - python/tags/r255 Message-ID: Author: martin.v.loewis Date: Sun Jan 31 13:39:06 2010 New Revision: 77873 Log: Tagging for release of Python 2.5.5 Added: python/tags/r255/ - copied from r77872, /python/branches/release25-maint/ From python-checkins at python.org Sun Jan 31 17:00:16 2010 From: python-checkins at python.org (martin.v.loewis) Date: Sun, 31 Jan 2010 16:00:16 -0000 Subject: [Python-checkins] r77874 - in python/branches/release25-maint: Include/patchlevel.h Misc/NEWS Message-ID: Author: martin.v.loewis Date: Sun Jan 31 17:00:16 2010 New Revision: 77874 Log: Post 2.5.5. Modified: python/branches/release25-maint/Include/patchlevel.h python/branches/release25-maint/Misc/NEWS Modified: python/branches/release25-maint/Include/patchlevel.h ============================================================================== --- python/branches/release25-maint/Include/patchlevel.h (original) +++ python/branches/release25-maint/Include/patchlevel.h Sun Jan 31 17:00:16 2010 @@ -21,12 +21,12 @@ /* Version parsed out into numeric values */ #define PY_MAJOR_VERSION 2 #define PY_MINOR_VERSION 5 -#define PY_MICRO_VERSION 5 -#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL +#define PY_MICRO_VERSION 6 +#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_ALPHA #define PY_RELEASE_SERIAL 0 /* Version as a string */ -#define PY_VERSION "2.5.5" +#define PY_VERSION "2.5.5+" /* Subversion Revision number of this file (not of the repository) */ #define PY_PATCHLEVEL_REVISION "$Revision$" Modified: python/branches/release25-maint/Misc/NEWS ============================================================================== --- python/branches/release25-maint/Misc/NEWS (original) +++ python/branches/release25-maint/Misc/NEWS Sun Jan 31 17:00:16 2010 @@ -4,6 +4,12 @@ (editors: check NEWS.help for information about editing NEWS using ReST.) +What's New in Python 2.5.6c1? +============================= + +*Release date: XX-XXX-2010* + + What's New in Python 2.5.5? =========================== From python-checkins at python.org Sun Jan 31 17:05:13 2010 From: python-checkins at python.org (matthias.klose) Date: Sun, 31 Jan 2010 16:05:13 -0000 Subject: [Python-checkins] r77875 - in python/trunk/Misc: NEWS python.man Message-ID: Author: matthias.klose Date: Sun Jan 31 17:05:13 2010 New Revision: 77875 Log: - Update python manual page (options -B, -O0, -s, environment variables PYTHONDONTWRITEBYTECODE, PYTHONNOUSERSITE). Modified: python/trunk/Misc/NEWS python/trunk/Misc/python.man Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Jan 31 17:05:13 2010 @@ -123,6 +123,12 @@ added to the `Tools/` directory. They were previously living in the sandbox. +Documentation +------------- + +- Update python manual page (options -B, -O0, -s, environment variables + PYTHONDONTWRITEBYTECODE, PYTHONNOUSERSITE). + What's New in Python 2.7 alpha 2? ================================= Modified: python/trunk/Misc/python.man ============================================================================== --- python/trunk/Misc/python.man (original) +++ python/trunk/Misc/python.man Sun Jan 31 17:05:13 2010 @@ -8,6 +8,9 @@ .SH SYNOPSIS .B python [ +.B \-B +] +[ .B \-d ] [ @@ -23,15 +26,21 @@ .B \-m .I module-name ] -[ -.B \-O -] .br [ +.B \-O +] +[ +.B \-O0 +] +[ .B -Q .I argument ] [ +.B \-s +] +[ .B \-S ] [ @@ -57,6 +66,9 @@ [ .B \-3 ] +[ +.B \-? +] .br [ .B \-c @@ -95,6 +107,11 @@ program. .SH COMMAND LINE OPTIONS .TP +.B \-B +Don't write +.I .py[co] +files on import. See also PYTHONDONTWRITEBYTECODE. +.TP .BI "\-c " command Specify the command to execute (see next section). This terminates the option list (following options are passed as @@ -108,7 +125,7 @@ Ignore environment variables like PYTHONPATH and PYTHONHOME that modify the behavior of the interpreter. .TP -.B \-h +.B \-h ", " \-? ", "\-\-help Prints the usage for the interpreter executable and exits. .TP .B \-i @@ -131,6 +148,9 @@ .I .pyc to \fI.pyo\fP. Given twice, causes docstrings to be discarded. .TP +.B \-O0 +Discard docstrings in addition to the \fB-O\fP optimizations. +.TP .BI "\-Q " argument Division control; see PEP 238. The argument must be one of "old" (the default, int/int and long/long return an int or long), "new" (new @@ -140,6 +160,9 @@ all use of the division operator). For a use of "warnall", see the Tools/scripts/fixdiv.py script. .TP +.B \-s +Don't add user site directory to sys.path. +.TP .B \-S Disable the import of the module .I site @@ -167,7 +190,7 @@ searching for a module. Also provides information on module cleanup at exit. .TP -.B \-V +.B \-V ", " \-\-version Prints the Python version number of the executable and exits. .TP .BI "\-W " argument @@ -370,9 +393,17 @@ If this is set to a non-empty string it is equivalent to specifying the \fB\-d\fP option. If set to an integer, it is equivalent to specifying \fB\-d\fP multiple times. +.IP PYTHONDONTWRITEBYTECODE +If this is set to a non-empty string it is equivalent to specifying +the \fB\-B\fP option (don't try to write +.I .py[co] +files). .IP PYTHONINSPECT If this is set to a non-empty string it is equivalent to specifying the \fB\-i\fP option. +.IP PYTHONNOUSERSITE +If this is set to a non-empty string it is equivalent to specifying +the \fB\-s\fP option (Don't add the user site directory to sys.path). .IP PYTHONUNBUFFERED If this is set to a non-empty string it is equivalent to specifying the \fB\-u\fP option. From python-checkins at python.org Sun Jan 31 17:09:16 2010 From: python-checkins at python.org (matthias.klose) Date: Sun, 31 Jan 2010 16:09:16 -0000 Subject: [Python-checkins] r77876 - in python/branches/release26-maint: Misc/NEWS Misc/python.man Message-ID: Author: matthias.klose Date: Sun Jan 31 17:09:16 2010 New Revision: 77876 Log: Merged revisions 77875 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77875 | matthias.klose | 2010-01-31 17:05:13 +0100 (So, 31 Jan 2010) | 3 lines - Update python manual page (options -B, -O0, -s, environment variables PYTHONDONTWRITEBYTECODE, PYTHONNOUSERSITE). ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Misc/NEWS python/branches/release26-maint/Misc/python.man Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Sun Jan 31 17:09:16 2010 @@ -213,6 +213,11 @@ - Issue #7541: when using ``python-config`` with a framework install the compiler might use the wrong library. +Documentation +------------- + +- Update python manual page (options -B, -O0, -s, environment variables + PYTHONDONTWRITEBYTECODE, PYTHONNOUSERSITE). Tests ----- Modified: python/branches/release26-maint/Misc/python.man ============================================================================== --- python/branches/release26-maint/Misc/python.man (original) +++ python/branches/release26-maint/Misc/python.man Sun Jan 31 17:09:16 2010 @@ -8,6 +8,9 @@ .SH SYNOPSIS .B python [ +.B \-B +] +[ .B \-d ] [ @@ -23,15 +26,21 @@ .B \-m .I module-name ] -[ -.B \-O -] .br [ +.B \-O +] +[ +.B \-O0 +] +[ .B -Q .I argument ] [ +.B \-s +] +[ .B \-S ] [ @@ -57,6 +66,9 @@ [ .B \-3 ] +[ +.B \-? +] .br [ .B \-c @@ -95,6 +107,11 @@ program. .SH COMMAND LINE OPTIONS .TP +.B \-B +Don't write +.I .py[co] +files on import. See also PYTHONDONTWRITEBYTECODE. +.TP .BI "\-c " command Specify the command to execute (see next section). This terminates the option list (following options are passed as @@ -108,7 +125,7 @@ Ignore environment variables like PYTHONPATH and PYTHONHOME that modify the behavior of the interpreter. .TP -.B \-h +.B \-h ", " \-? ", "\-\-help Prints the usage for the interpreter executable and exits. .TP .B \-i @@ -131,6 +148,9 @@ .I .pyc to \fI.pyo\fP. Given twice, causes docstrings to be discarded. .TP +.B \-O0 +Discard docstrings in addition to the \fB-O\fP optimizations. +.TP .BI "\-Q " argument Division control; see PEP 238. The argument must be one of "old" (the default, int/int and long/long return an int or long), "new" (new @@ -140,6 +160,9 @@ all use of the division operator). For a use of "warnall", see the Tools/scripts/fixdiv.py script. .TP +.B \-s +Don't add user site directory to sys.path. +.TP .B \-S Disable the import of the module .I site @@ -167,7 +190,7 @@ searching for a module. Also provides information on module cleanup at exit. .TP -.B \-V +.B \-V ", " \-\-version Prints the Python version number of the executable and exits. .TP .BI "\-W " argument @@ -370,9 +393,17 @@ If this is set to a non-empty string it is equivalent to specifying the \fB\-d\fP option. If set to an integer, it is equivalent to specifying \fB\-d\fP multiple times. +.IP PYTHONDONTWRITEBYTECODE +If this is set to a non-empty string it is equivalent to specifying +the \fB\-B\fP option (don't try to write +.I .py[co] +files). .IP PYTHONINSPECT If this is set to a non-empty string it is equivalent to specifying the \fB\-i\fP option. +.IP PYTHONNOUSERSITE +If this is set to a non-empty string it is equivalent to specifying +the \fB\-s\fP option (Don't add the user site directory to sys.path). .IP PYTHONUNBUFFERED If this is set to a non-empty string it is equivalent to specifying the \fB\-u\fP option. From python-checkins at python.org Sun Jan 31 17:14:37 2010 From: python-checkins at python.org (matthias.klose) Date: Sun, 31 Jan 2010 16:14:37 -0000 Subject: [Python-checkins] r77877 - in python/branches/py3k: Misc/NEWS Misc/python.man Message-ID: Author: matthias.klose Date: Sun Jan 31 17:14:37 2010 New Revision: 77877 Log: Merged revisions 77875 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77875 | matthias.klose | 2010-01-31 17:05:13 +0100 (So, 31 Jan 2010) | 3 lines - Update python manual page (options -B, -O0, -s, environment variables PYTHONDONTWRITEBYTECODE, PYTHONNOUSERSITE). ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Misc/NEWS python/branches/py3k/Misc/python.man Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Sun Jan 31 17:14:37 2010 @@ -693,6 +693,9 @@ - Issue #6556: Fixed the Distutils configuration files location explanation for Windows. + +- Update python manual page (options -B, -O0, -s, environment variables + PYTHONDONTWRITEBYTECODE, PYTHONNOUSERSITE). Tests ----- Modified: python/branches/py3k/Misc/python.man ============================================================================== --- python/branches/py3k/Misc/python.man (original) +++ python/branches/py3k/Misc/python.man Sun Jan 31 17:14:37 2010 @@ -8,6 +8,9 @@ .SH SYNOPSIS .B python [ +.B \-B +] +[ .B \-d ] [ @@ -23,15 +26,21 @@ .B \-m .I module-name ] -[ -.B \-O -] .br [ +.B \-O +] +[ +.B \-O0 +] +[ .B -Q .I argument ] [ +.B \-s +] +[ .B \-S ] [ @@ -51,6 +60,9 @@ [ .B \-x ] +[ +.B \-? +] .br [ .B \-c @@ -89,6 +101,11 @@ program. .SH COMMAND LINE OPTIONS .TP +.B \-B +Don't write +.I .py[co] +files on import. See also PYTHONDONTWRITEBYTECODE. +.TP .BI "\-c " command Specify the command to execute (see next section). This terminates the option list (following options are passed as @@ -102,7 +119,7 @@ Ignore environment variables like PYTHONPATH and PYTHONHOME that modify the behavior of the interpreter. .TP -.B \-h +.B \-h ", " \-? ", "\-\-help Prints the usage for the interpreter executable and exits. .TP .B \-i @@ -125,6 +142,9 @@ .I .pyc to \fI.pyo\fP. Given twice, causes docstrings to be discarded. .TP +.B \-O0 +Discard docstrings in addition to the \fB-O\fP optimizations. +.TP .BI "\-Q " argument Division control; see PEP 238. The argument must be one of "old" (the default, int/int and long/long return an int or long), "new" (new @@ -134,6 +154,9 @@ all use of the division operator). For a use of "warnall", see the Tools/scripts/fixdiv.py script. .TP +.B \-s +Don't add user site directory to sys.path. +.TP .B \-S Disable the import of the module .I site @@ -156,7 +179,7 @@ searching for a module. Also provides information on module cleanup at exit. .TP -.B \-V +.B \-V ", " \-\-version Prints the Python version number of the executable and exits. .TP .BI "\-W " argument @@ -353,9 +376,17 @@ If this is set to a non-empty string it is equivalent to specifying the \fB\-d\fP option. If set to an integer, it is equivalent to specifying \fB\-d\fP multiple times. +.IP PYTHONDONTWRITEBYTECODE +If this is set to a non-empty string it is equivalent to specifying +the \fB\-B\fP option (don't try to write +.I .py[co] +files). .IP PYTHONINSPECT If this is set to a non-empty string it is equivalent to specifying the \fB\-i\fP option. +.IP PYTHONNOUSERSITE +If this is set to a non-empty string it is equivalent to specifying +the \fB\-s\fP option (Don't add the user site directory to sys.path). .IP PYTHONUNBUFFERED If this is set to a non-empty string it is equivalent to specifying the \fB\-u\fP option. From python-checkins at python.org Sun Jan 31 17:17:23 2010 From: python-checkins at python.org (matthias.klose) Date: Sun, 31 Jan 2010 16:17:23 -0000 Subject: [Python-checkins] r77878 - in python/branches/release31-maint/Misc: NEWS python.man Message-ID: Author: matthias.klose Date: Sun Jan 31 17:17:23 2010 New Revision: 77878 Log: Merged revisions 77877 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77877 | matthias.klose | 2010-01-31 17:14:37 +0100 (So, 31 Jan 2010) | 10 lines Merged revisions 77875 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77875 | matthias.klose | 2010-01-31 17:05:13 +0100 (So, 31 Jan 2010) | 3 lines - Update python manual page (options -B, -O0, -s, environment variables PYTHONDONTWRITEBYTECODE, PYTHONNOUSERSITE). ........ ................ Modified: python/branches/release31-maint/Misc/NEWS python/branches/release31-maint/Misc/python.man Modified: python/branches/release31-maint/Misc/NEWS ============================================================================== --- python/branches/release31-maint/Misc/NEWS (original) +++ python/branches/release31-maint/Misc/NEWS Sun Jan 31 17:17:23 2010 @@ -368,6 +368,9 @@ - Issue #6556: Fixed the Distutils configuration files location explanation for Windows. +- Update python manual page (options -B, -O0, -s, environment variables + PYTHONDONTWRITEBYTECODE, PYTHONNOUSERSITE). + What's New in Python 3.1.1? =========================== @@ -421,7 +424,7 @@ occur when writing to a BufferedRandom object (e.g. a file opened in "rb+" or "wb+" mode) after having buffered a certain amount of data for reading. This bug was not present in the pure Python implementation. - + - Issue #6622: Fix "local variable 'secret' referenced before assignment" bug in POP3.apop. Modified: python/branches/release31-maint/Misc/python.man ============================================================================== --- python/branches/release31-maint/Misc/python.man (original) +++ python/branches/release31-maint/Misc/python.man Sun Jan 31 17:17:23 2010 @@ -8,6 +8,9 @@ .SH SYNOPSIS .B python [ +.B \-B +] +[ .B \-d ] [ @@ -23,15 +26,21 @@ .B \-m .I module-name ] -[ -.B \-O -] .br [ +.B \-O +] +[ +.B \-O0 +] +[ .B -Q .I argument ] [ +.B \-s +] +[ .B \-S ] [ @@ -51,6 +60,9 @@ [ .B \-x ] +[ +.B \-? +] .br [ .B \-c @@ -89,6 +101,11 @@ program. .SH COMMAND LINE OPTIONS .TP +.B \-B +Don't write +.I .py[co] +files on import. See also PYTHONDONTWRITEBYTECODE. +.TP .BI "\-c " command Specify the command to execute (see next section). This terminates the option list (following options are passed as @@ -102,7 +119,7 @@ Ignore environment variables like PYTHONPATH and PYTHONHOME that modify the behavior of the interpreter. .TP -.B \-h +.B \-h ", " \-? ", "\-\-help Prints the usage for the interpreter executable and exits. .TP .B \-i @@ -125,6 +142,9 @@ .I .pyc to \fI.pyo\fP. Given twice, causes docstrings to be discarded. .TP +.B \-O0 +Discard docstrings in addition to the \fB-O\fP optimizations. +.TP .BI "\-Q " argument Division control; see PEP 238. The argument must be one of "old" (the default, int/int and long/long return an int or long), "new" (new @@ -134,6 +154,9 @@ all use of the division operator). For a use of "warnall", see the Tools/scripts/fixdiv.py script. .TP +.B \-s +Don't add user site directory to sys.path. +.TP .B \-S Disable the import of the module .I site @@ -156,7 +179,7 @@ searching for a module. Also provides information on module cleanup at exit. .TP -.B \-V +.B \-V ", " \-\-version Prints the Python version number of the executable and exits. .TP .BI "\-W " argument @@ -353,9 +376,17 @@ If this is set to a non-empty string it is equivalent to specifying the \fB\-d\fP option. If set to an integer, it is equivalent to specifying \fB\-d\fP multiple times. +.IP PYTHONDONTWRITEBYTECODE +If this is set to a non-empty string it is equivalent to specifying +the \fB\-B\fP option (don't try to write +.I .py[co] +files). .IP PYTHONINSPECT If this is set to a non-empty string it is equivalent to specifying the \fB\-i\fP option. +.IP PYTHONNOUSERSITE +If this is set to a non-empty string it is equivalent to specifying +the \fB\-s\fP option (Don't add the user site directory to sys.path). .IP PYTHONUNBUFFERED If this is set to a non-empty string it is equivalent to specifying the \fB\-u\fP option. From python-checkins at python.org Sun Jan 31 17:46:26 2010 From: python-checkins at python.org (matthias.klose) Date: Sun, 31 Jan 2010 16:46:26 -0000 Subject: [Python-checkins] r77879 - python/trunk/Lib/os.py Message-ID: Author: matthias.klose Date: Sun Jan 31 17:46:26 2010 New Revision: 77879 Log: - Fix typo in os.execvp docstring. Modified: python/trunk/Lib/os.py Modified: python/trunk/Lib/os.py ============================================================================== --- python/trunk/Lib/os.py (original) +++ python/trunk/Lib/os.py Sun Jan 31 17:46:26 2010 @@ -336,7 +336,7 @@ execvpe(file, args[:-1], env) def execvp(file, args): - """execp(file, args) + """execvp(file, args) Execute the executable file (which is searched for along $PATH) with argument list args, replacing the current process. From python-checkins at python.org Sun Jan 31 17:47:55 2010 From: python-checkins at python.org (matthias.klose) Date: Sun, 31 Jan 2010 16:47:55 -0000 Subject: [Python-checkins] r77880 - in python/branches/release26-maint: Lib/os.py Message-ID: Author: matthias.klose Date: Sun Jan 31 17:47:55 2010 New Revision: 77880 Log: Merged revisions 77879 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77879 | matthias.klose | 2010-01-31 17:46:26 +0100 (So, 31 Jan 2010) | 2 lines - Fix typo in os.execvp docstring. ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/os.py Modified: python/branches/release26-maint/Lib/os.py ============================================================================== --- python/branches/release26-maint/Lib/os.py (original) +++ python/branches/release26-maint/Lib/os.py Sun Jan 31 17:47:55 2010 @@ -336,7 +336,7 @@ execvpe(file, args[:-1], env) def execvp(file, args): - """execp(file, args) + """execvp(file, args) Execute the executable file (which is searched for along $PATH) with argument list args, replacing the current process. From python-checkins at python.org Sun Jan 31 17:48:45 2010 From: python-checkins at python.org (matthias.klose) Date: Sun, 31 Jan 2010 16:48:45 -0000 Subject: [Python-checkins] r77881 - in python/branches/py3k: Lib/os.py Message-ID: Author: matthias.klose Date: Sun Jan 31 17:48:44 2010 New Revision: 77881 Log: Merged revisions 77879 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77879 | matthias.klose | 2010-01-31 17:46:26 +0100 (So, 31 Jan 2010) | 2 lines - Fix typo in os.execvp docstring. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/os.py Modified: python/branches/py3k/Lib/os.py ============================================================================== --- python/branches/py3k/Lib/os.py (original) +++ python/branches/py3k/Lib/os.py Sun Jan 31 17:48:44 2010 @@ -322,7 +322,7 @@ execvpe(file, args[:-1], env) def execvp(file, args): - """execp(file, args) + """execvp(file, args) Execute the executable file (which is searched for along $PATH) with argument list args, replacing the current process. From python-checkins at python.org Sun Jan 31 17:51:26 2010 From: python-checkins at python.org (matthias.klose) Date: Sun, 31 Jan 2010 16:51:26 -0000 Subject: [Python-checkins] r77882 - python/branches/release31-maint/Lib/os.py Message-ID: Author: matthias.klose Date: Sun Jan 31 17:51:26 2010 New Revision: 77882 Log: Merged revisions 77881 via svnmerge from svn+ssh://pythondev at svn.python.org/python/branches/py3k ................ r77881 | matthias.klose | 2010-01-31 17:48:44 +0100 (So, 31 Jan 2010) | 9 lines Merged revisions 77879 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77879 | matthias.klose | 2010-01-31 17:46:26 +0100 (So, 31 Jan 2010) | 2 lines - Fix typo in os.execvp docstring. ........ ................ Modified: python/branches/release31-maint/Lib/os.py Modified: python/branches/release31-maint/Lib/os.py ============================================================================== --- python/branches/release31-maint/Lib/os.py (original) +++ python/branches/release31-maint/Lib/os.py Sun Jan 31 17:51:26 2010 @@ -322,7 +322,7 @@ execvpe(file, args[:-1], env) def execvp(file, args): - """execp(file, args) + """execvp(file, args) Execute the executable file (which is searched for along $PATH) with argument list args, replacing the current process. From python-checkins at python.org Sun Jan 31 18:50:19 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sun, 31 Jan 2010 17:50:19 -0000 Subject: [Python-checkins] r77883 - python/branches/py3k Message-ID: Author: benjamin.peterson Date: Sun Jan 31 18:50:19 2010 New Revision: 77883 Log: revert svnmerge-integrated property back to a revision before it was broken Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Sun Jan 31 18:56:09 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sun, 31 Jan 2010 17:56:09 -0000 Subject: [Python-checkins] r77884 - python/branches/py3k Message-ID: Author: benjamin.peterson Date: Sun Jan 31 18:56:09 2010 New Revision: 77884 Log: Recorded merge of revisions 76050,77704,77752,77759,77761,77815,77821,77828,77834,77842,77846,77850-77851,77875,77879 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ................ r76050 | gregory.p.smith | 2009-11-01 19:37:37 -0600 (Sun, 01 Nov 2009) | 5 lines see http://bugs.python.org/issue1006238 this merges in the following patch to make cross compilation of the chflags check easier: http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-lang/python/files/python-2.6-chflags-cross.patch?rev=1.1 ................ r77704 | tarek.ziade | 2010-01-23 03:23:15 -0600 (Sat, 23 Jan 2010) | 1 line taking sysconfig out of distutils ................ r77752 | tarek.ziade | 2010-01-25 17:19:56 -0600 (Mon, 25 Jan 2010) | 1 line switched the call order so this call works without suffering from issue #7774 ................ r77759 | tarek.ziade | 2010-01-26 15:21:54 -0600 (Tue, 26 Jan 2010) | 1 line reintroduced the names in Distutils for APIs that were relocated ................ r77761 | tarek.ziade | 2010-01-26 16:46:15 -0600 (Tue, 26 Jan 2010) | 1 line added local get_platform/set_platform APIs in distutils.sysconfig ................ r77815 | r.david.murray | 2010-01-28 15:16:33 -0600 (Thu, 28 Jan 2010) | 3 lines Change error report when the object passed to suite.addTest is not callable to include the repr of the invalid object. ................ r77821 | mark.dickinson | 2010-01-29 11:11:39 -0600 (Fri, 29 Jan 2010) | 3 lines Issue #7788: Fix a crash produced by deleting a list slice with huge step value. Patch by Marcin Bachry. ................ r77828 | r.david.murray | 2010-01-29 13:35:39 -0600 (Fri, 29 Jan 2010) | 2 lines Fix typo in assertSequenceEqual docstring. ................ r77834 | martin.v.loewis | 2010-01-29 18:15:44 -0600 (Fri, 29 Jan 2010) | 2 lines Add Victor Stinner. ................ r77842 | mark.dickinson | 2010-01-30 04:08:33 -0600 (Sat, 30 Jan 2010) | 4 lines Issue #7767: Add new C-API function PyLong_AsLongLongAndOverflow, a long long variant of PyLong_AsLongAndOverflow. Patch by Case Van Horsen. ................ r77846 | martin.v.loewis | 2010-01-30 04:56:23 -0600 (Sat, 30 Jan 2010) | 13 lines Merged revisions 77419,77435 via svnmerge from svn+ssh://pythondev at svn.python.org/sandbox/trunk/2to3/lib2to3 ........ r77419 | benjamin.peterson | 2010-01-10 21:39:48 +0100 (So, 10 Jan 2010) | 1 line enclose path in quotes to handle paths with spaces correctly #7666 ........ r77435 | alexandre.vassalotti | 2010-01-12 01:36:54 +0100 (Di, 12 Jan 2010) | 2 lines Issue #1967: Add fixer for dictionary views. ........ ................ r77850 | ezio.melotti | 2010-01-30 07:08:54 -0600 (Sat, 30 Jan 2010) | 1 line Relocate a couple of stars and remove redundant backticks ................ r77851 | ezio.melotti | 2010-01-30 07:27:05 -0600 (Sat, 30 Jan 2010) | 1 line Use the correct markup for args ................ r77875 | matthias.klose | 2010-01-31 10:05:13 -0600 (Sun, 31 Jan 2010) | 3 lines - Update python manual page (options -B, -O0, -s, environment variables PYTHONDONTWRITEBYTECODE, PYTHONNOUSERSITE). ................ r77879 | matthias.klose | 2010-01-31 10:46:26 -0600 (Sun, 31 Jan 2010) | 2 lines - Fix typo in os.execvp docstring. ................ Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Sun Jan 31 19:02:35 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sun, 31 Jan 2010 18:02:35 -0000 Subject: [Python-checkins] r77885 - python/trunk/Lib/test/test_popen.py Message-ID: Author: benjamin.peterson Date: Sun Jan 31 19:02:35 2010 New Revision: 77885 Log: fix windows buildbot Modified: python/trunk/Lib/test/test_popen.py Modified: python/trunk/Lib/test/test_popen.py ============================================================================== --- python/trunk/Lib/test/test_popen.py (original) +++ python/trunk/Lib/test/test_popen.py Sun Jan 31 19:02:35 2010 @@ -17,7 +17,7 @@ class PopenTest(unittest.TestCase): def _do_test_commandline(self, cmdline, expected): - cmd = '"%s" -c "import sys;print sys.argv" %s' % (python, cmdline) + cmd = '%s -c "import sys;print sys.argv" %s' % (python, cmdline) data = os.popen(cmd).read() + '\n' got = eval(data)[1:] # strip off argv[0] self.assertEqual(got, expected) From python-checkins at python.org Sun Jan 31 19:09:35 2010 From: python-checkins at python.org (benjamin.peterson) Date: Sun, 31 Jan 2010 18:09:35 -0000 Subject: [Python-checkins] r77886 - in python/trunk/Doc/library: language.rst python.rst Message-ID: Author: benjamin.peterson Date: Sun Jan 31 19:09:34 2010 New Revision: 77886 Log: move distutils.rst to different toc Modified: python/trunk/Doc/library/language.rst python/trunk/Doc/library/python.rst Modified: python/trunk/Doc/library/language.rst ============================================================================== --- python/trunk/Doc/library/language.rst (original) +++ python/trunk/Doc/library/language.rst Sun Jan 31 19:09:34 2010 @@ -27,4 +27,3 @@ compileall.rst dis.rst pickletools.rst - distutils.rst Modified: python/trunk/Doc/library/python.rst ============================================================================== --- python/trunk/Doc/library/python.rst (original) +++ python/trunk/Doc/library/python.rst Sun Jan 31 19:09:34 2010 @@ -27,3 +27,4 @@ site.rst user.rst fpectl.rst + distutils.rst From python-checkins at python.org Sun Jan 31 19:51:50 2010 From: python-checkins at python.org (georg.brandl) Date: Sun, 31 Jan 2010 18:51:50 -0000 Subject: [Python-checkins] r77887 - python/trunk/Doc/library/ftplib.rst Message-ID: Author: georg.brandl Date: Sun Jan 31 19:51:49 2010 New Revision: 77887 Log: Fix-up ftplib documentation: move exception descriptions to toplevel, not inside a class remove attribution in "versionadded" spell and grammar check docstring of FTP_TLS Modified: python/trunk/Doc/library/ftplib.rst Modified: python/trunk/Doc/library/ftplib.rst ============================================================================== --- python/trunk/Doc/library/ftplib.rst (original) +++ python/trunk/Doc/library/ftplib.rst Sun Jan 31 19:51:49 2010 @@ -33,8 +33,8 @@ '226 Transfer complete.' >>> ftp.quit() -The module defines the following items: +The module defines the following items: .. class:: FTP([host[, user[, passwd[, acct[, timeout]]]]]) @@ -49,26 +49,26 @@ .. versionchanged:: 2.6 *timeout* was added. + .. class:: FTP_TLS([host[, user[, passwd[, acct[, keyfile[, certfile[, timeout]]]]]]]) A :class:`FTP` subclass which adds TLS support to FTP as described in :rfc:`4217`. Connect as usual to port 21 implicitly securing the FTP control connection - before authenticating. Securing the data connection requires user to - explicitly ask for it by calling :exc:`prot_p()` method. - *keyfile* and *certfile* are optional - they can contain a PEM formatted - private key and certificate chain file for the SSL connection. + before authenticating. Securing the data connection requires the user to + explicitly ask for it by calling the :meth:`prot_p` method. + *keyfile* and *certfile* are optional -- they can contain a PEM formatted + private key and certificate chain file name for the SSL connection. - .. versionadded:: 2.7 Contributed by Giampaolo Rodola' + .. versionadded:: 2.7 - - Here's a sample session using :class:`FTP_TLS` class: + Here's a sample session using the :class:`FTP_TLS` class: >>> from ftplib import FTP_TLS >>> ftps = FTP_TLS('ftp.python.org') - >>> ftps.login() # login anonimously previously securing control channel - >>> ftps.prot_p() # switch to secure data connection - >>> ftps.retrlines('LIST') # list directory content securely + >>> ftps.login() # login anonymously before securing control channel + >>> ftps.prot_p() # switch to secure data connection + >>> ftps.retrlines('LIST') # list directory content securely total 9 drwxr-xr-x 8 root wheel 1024 Jan 3 1994 . drwxr-xr-x 8 root wheel 1024 Jan 3 1994 .. @@ -84,43 +84,42 @@ >>> +.. exception:: error_reply - .. attribute:: all_errors - - The set of all exceptions (as a tuple) that methods of :class:`FTP` - instances may raise as a result of problems with the FTP connection (as - opposed to programming errors made by the caller). This set includes the - four exceptions listed below as well as :exc:`socket.error` and - :exc:`IOError`. + Exception raised when an unexpected reply is received from the server. - .. exception:: error_reply +.. exception:: error_temp - Exception raised when an unexpected reply is received from the server. + Exception raised when an error code in the range 400--499 is received. - .. exception:: error_temp +.. exception:: error_perm - Exception raised when an error code in the range 400--499 is received. + Exception raised when an error code in the range 500--599 is received. - .. exception:: error_perm +.. exception:: error_proto - Exception raised when an error code in the range 500--599 is received. + Exception raised when a reply is received from the server that does not + begin with a digit in the range 1--5. - .. exception:: error_proto +.. data:: all_errors - Exception raised when a reply is received from the server that does not - begin with a digit in the range 1--5. + The set of all exceptions (as a tuple) that methods of :class:`FTP` + instances may raise as a result of problems with the FTP connection (as + opposed to programming errors made by the caller). This set includes the + four exceptions listed below as well as :exc:`socket.error` and + :exc:`IOError`. .. seealso:: Module :mod:`netrc` - Parser for the :file:`.netrc` file format. The file :file:`.netrc` is typically - used by FTP clients to load user authentication information before prompting the - user. + Parser for the :file:`.netrc` file format. The file :file:`.netrc` is + typically used by FTP clients to load user authentication information + before prompting the user. .. index:: single: ftpmirror.py From python-checkins at python.org Sun Jan 31 19:53:23 2010 From: python-checkins at python.org (georg.brandl) Date: Sun, 31 Jan 2010 18:53:23 -0000 Subject: [Python-checkins] r77888 - python/branches/py3k/Doc/library/unittest.rst Message-ID: Author: georg.brandl Date: Sun Jan 31 19:53:23 2010 New Revision: 77888 Log: Fix versionadded:: 2.x merges. Modified: python/branches/py3k/Doc/library/unittest.rst Modified: python/branches/py3k/Doc/library/unittest.rst ============================================================================== --- python/branches/py3k/Doc/library/unittest.rst (original) +++ python/branches/py3k/Doc/library/unittest.rst Sun Jan 31 19:53:23 2010 @@ -113,7 +113,7 @@ python -m unittest -h -.. versionchanged:: 2.7 +.. versionchanged:: 3.2 In earlier versions it was only possible to run individual test methods and not modules or classes. @@ -126,7 +126,7 @@ Test Discovery -------------- -.. versionadded:: 2.7 +.. versionadded:: 3.2 unittest supports simple test discovery. For a project's tests to be compatible with test discovery they must all be importable from the top level @@ -1084,7 +1084,7 @@ If :meth:`setUp` fails, meaning that :meth:`tearDown` is not called, then any cleanup functions added will still be called. - .. versionadded:: 2.7 + .. versionadded:: 3.2 .. method:: doCleanups() @@ -1100,7 +1100,7 @@ :meth:`doCleanups` pops methods off the stack of cleanup functions one at a time, so it can be called at any time. - .. versionadded:: 2.7 + .. versionadded:: 3.2 .. class:: FunctionTestCase(testFunc, setUp=None, tearDown=None, description=None) @@ -1179,7 +1179,7 @@ (for example when counting tests or comparing for equality) so the tests returned must be the same for repeated iterations. - .. versionchanged:: 2.7 + .. versionchanged:: 3.2 In earlier versions the :class:`TestSuite` accessed tests directly rather than through iteration, so overriding :meth:`__iter__` wasn't sufficient for providing tests. @@ -1227,7 +1227,7 @@ load the tests. This allows modules to customize test loading. This is the `load_tests protocol`_. - .. versionchanged:: 2.7 + .. versionchanged:: 3.2 Support for ``load_tests`` added. @@ -1297,7 +1297,8 @@ ``load_tests`` does not need to pass this argument in to ``loader.discover()``. - .. versionadded:: 2.7 + .. versionadded:: 3.2 + The following attributes of a :class:`TestLoader` can be configured either by subclassing or assignment on an instance: @@ -1431,14 +1432,14 @@ Called once before any tests are executed. - .. versionadded:: 2.7 + .. versionadded:: 3.2 .. method:: stopTestRun(test) Called once after all tests are executed. - .. versionadded:: 2.7 + .. versionadded:: 3.2 .. method:: addError(test, err) @@ -1546,7 +1547,7 @@ Calling ``main`` actually returns an instance of the ``TestProgram`` class. This stores the result of the tests run as the ``result`` attribute. - .. versionchanged:: 2.7 + .. versionchanged:: 3.2 The ``exit`` and ``verbosity`` parameters were added. @@ -1554,7 +1555,7 @@ ################### -.. versionadded:: 2.7 +.. versionadded:: 3.2 Modules or packages can customize how tests are loaded from them during normal From python-checkins at python.org Sun Jan 31 20:59:26 2010 From: python-checkins at python.org (michael.foord) Date: Sun, 31 Jan 2010 19:59:26 -0000 Subject: [Python-checkins] r77889 - python/trunk/Doc/library/unittest.rst Message-ID: Author: michael.foord Date: Sun Jan 31 20:59:26 2010 New Revision: 77889 Log: Minor modification to unittest documentation. Modified: python/trunk/Doc/library/unittest.rst Modified: python/trunk/Doc/library/unittest.rst ============================================================================== --- python/trunk/Doc/library/unittest.rst (original) +++ python/trunk/Doc/library/unittest.rst Sun Jan 31 20:59:26 2010 @@ -808,9 +808,9 @@ .. method:: assertSameElements(expected, actual, msg=None) - Test that sequence *expected* contains the same elements as *actual*. - When they don't an error message listing the differences between the - sequences will be generated. + Test that sequence *expected* contains the same elements as *actual*, + regardless of their order. When they don't, an error message listing + the differences between the sequences will be generated. If specified *msg* will be used as the error message on failure. From python-checkins at python.org Sun Jan 31 23:26:05 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sun, 31 Jan 2010 22:26:05 -0000 Subject: [Python-checkins] r77890 - in python/trunk: Lib/_pyio.py Lib/test/test_fileio.py Lib/test/test_io.py Lib/test/test_largefile.py Lib/test/test_memoryio.py Misc/ACKS Misc/NEWS Modules/_io/bytesio.c Modules/_io/fileio.c Modules/_io/iobase.c Modules/_io/stringio.c Modules/_io/textio.c Message-ID: Author: antoine.pitrou Date: Sun Jan 31 23:26:04 2010 New Revision: 77890 Log: - Issue #6939: Fix file I/O objects in the `io` module to keep the original file position when calling `truncate()`. It would previously change the file position to the given argument, which goes against the tradition of ftruncate() and other truncation APIs. Patch by Pascal Chambon. Modified: python/trunk/Lib/_pyio.py python/trunk/Lib/test/test_fileio.py python/trunk/Lib/test/test_io.py python/trunk/Lib/test/test_largefile.py python/trunk/Lib/test/test_memoryio.py python/trunk/Misc/ACKS python/trunk/Misc/NEWS python/trunk/Modules/_io/bytesio.c python/trunk/Modules/_io/fileio.c python/trunk/Modules/_io/iobase.c python/trunk/Modules/_io/stringio.c python/trunk/Modules/_io/textio.c Modified: python/trunk/Lib/_pyio.py ============================================================================== --- python/trunk/Lib/_pyio.py (original) +++ python/trunk/Lib/_pyio.py Sun Jan 31 23:26:04 2010 @@ -867,7 +867,7 @@ elif pos < 0: raise ValueError("negative truncate position %r" % (pos,)) del self._buffer[pos:] - return self.seek(pos) + return pos def readable(self): return True @@ -1226,8 +1226,7 @@ if pos is None: pos = self.tell() # Use seek to flush the read buffer. - self.seek(pos) - return BufferedWriter.truncate(self) + return BufferedWriter.truncate(self, pos) def read(self, n=None): if n is None: @@ -1727,8 +1726,7 @@ self.flush() if pos is None: pos = self.tell() - self.seek(pos) - return self.buffer.truncate() + return self.buffer.truncate(pos) def detach(self): if self.buffer is None: Modified: python/trunk/Lib/test/test_fileio.py ============================================================================== --- python/trunk/Lib/test/test_fileio.py (original) +++ python/trunk/Lib/test/test_fileio.py Sun Jan 31 23:26:04 2010 @@ -329,6 +329,17 @@ f.close() self.fail("no error for invalid mode: %s" % bad_mode) + def testTruncate(self): + f = _FileIO(TESTFN, 'w') + f.write(bytes(bytearray(range(10)))) + self.assertEqual(f.tell(), 10) + f.truncate(5) + self.assertEqual(f.tell(), 10) + self.assertEqual(f.seek(0, os.SEEK_END), 5) + f.truncate(15) + self.assertEqual(f.tell(), 5) + self.assertEqual(f.seek(0, os.SEEK_END), 15) + def testTruncateOnWindows(self): def bug801631(): # SF bug Modified: python/trunk/Lib/test/test_io.py ============================================================================== --- python/trunk/Lib/test/test_io.py (original) +++ python/trunk/Lib/test/test_io.py Sun Jan 31 23:26:04 2010 @@ -234,6 +234,11 @@ def write_ops(self, f): self.assertEqual(f.write(b"blah."), 5) + f.truncate(0) + self.assertEqual(f.tell(), 5) + f.seek(0) + + self.assertEqual(f.write(b"blah."), 5) self.assertEqual(f.seek(0), 0) self.assertEqual(f.write(b"Hello."), 6) self.assertEqual(f.tell(), 6) @@ -244,8 +249,9 @@ self.assertEqual(f.write(b"h"), 1) self.assertEqual(f.seek(-1, 2), 13) self.assertEqual(f.tell(), 13) + self.assertEqual(f.truncate(12), 12) - self.assertEqual(f.tell(), 12) + self.assertEqual(f.tell(), 13) self.assertRaises(TypeError, f.seek, 0.0) def read_ops(self, f, buffered=False): @@ -290,7 +296,7 @@ self.assertEqual(f.tell(), self.LARGE + 2) self.assertEqual(f.seek(0, 2), self.LARGE + 2) self.assertEqual(f.truncate(self.LARGE + 1), self.LARGE + 1) - self.assertEqual(f.tell(), self.LARGE + 1) + self.assertEqual(f.tell(), self.LARGE + 2) self.assertEqual(f.seek(0, 2), self.LARGE + 1) self.assertEqual(f.seek(-1, 2), self.LARGE) self.assertEqual(f.read(2), b"x") @@ -988,7 +994,7 @@ bufio = self.tp(raw, 8) bufio.write(b"abcdef") self.assertEqual(bufio.truncate(3), 3) - self.assertEqual(bufio.tell(), 3) + self.assertEqual(bufio.tell(), 6) with self.open(support.TESTFN, "rb", buffering=0) as f: self.assertEqual(f.read(), b"abc") @@ -1374,6 +1380,14 @@ self.assertEqual(s, b"A" + b"B" * overwrite_size + b"A" * (9 - overwrite_size)) + def test_truncate_after_read_or_write(self): + raw = self.BytesIO(b"A" * 10) + bufio = self.tp(raw, 100) + self.assertEqual(bufio.read(2), b"AA") # the read buffer gets filled + self.assertEqual(bufio.truncate(), 2) + self.assertEqual(bufio.write(b"BB"), 2) # the write buffer increases + self.assertEqual(bufio.truncate(), 4) + def test_misbehaved_io(self): BufferedReaderTest.test_misbehaved_io(self) BufferedWriterTest.test_misbehaved_io(self) Modified: python/trunk/Lib/test/test_largefile.py ============================================================================== --- python/trunk/Lib/test/test_largefile.py (original) +++ python/trunk/Lib/test/test_largefile.py Sun Jan 31 23:26:04 2010 @@ -125,7 +125,7 @@ f.seek(42) f.truncate(newsize) if self.new_io: - self.assertEqual(f.tell(), newsize) # else wasn't truncated + self.assertEqual(f.tell(), 42) f.seek(0, 2) self.assertEqual(f.tell(), newsize) # XXX truncate(larger than true size) is ill-defined @@ -133,7 +133,7 @@ f.seek(0) f.truncate(1) if self.new_io: - self.assertEqual(f.tell(), 1) # else pointer moved + self.assertEqual(f.tell(), 0) # else pointer moved f.seek(0) self.assertEqual(len(f.read()), 1) # else wasn't truncated Modified: python/trunk/Lib/test/test_memoryio.py ============================================================================== --- python/trunk/Lib/test/test_memoryio.py (original) +++ python/trunk/Lib/test/test_memoryio.py Sun Jan 31 23:26:04 2010 @@ -76,7 +76,7 @@ self.assertEqual(f.seek(0), 0) self.assertEqual(f.write(t("h")), 1) self.assertEqual(f.truncate(12), 12) - self.assertEqual(f.tell(), 12) + self.assertEqual(f.tell(), 1) def test_write(self): buf = self.buftype("hello world\n") @@ -127,7 +127,8 @@ # truncate() accepts long objects self.assertEqual(memio.truncate(4L), 4) self.assertEqual(memio.getvalue(), buf[:4]) - self.assertEqual(memio.tell(), 4) + self.assertEqual(memio.tell(), 6) + memio.seek(0, 2) memio.write(buf) self.assertEqual(memio.getvalue(), buf[:4] + buf) pos = memio.tell() Modified: python/trunk/Misc/ACKS ============================================================================== --- python/trunk/Misc/ACKS (original) +++ python/trunk/Misc/ACKS Sun Jan 31 23:26:04 2010 @@ -124,6 +124,7 @@ Charles Cazabon Per Cederqvist Octavian Cerna +Pascal Chambon Hye-Shik Chang Jeffrey Chang Mitch Chapman Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Jan 31 23:26:04 2010 @@ -50,6 +50,11 @@ Library ------- +- Issue #6939: Fix file I/O objects in the `io` module to keep the original + file position when calling `truncate()`. It would previously change the + file position to the given argument, which goes against the tradition of + ftruncate() and other truncation APIs. Patch by Pascal Chambon. + - UserDict is now a new-style class. - Issue #7610: Reworked implementation of the internal Modified: python/trunk/Modules/_io/bytesio.c ============================================================================== --- python/trunk/Modules/_io/bytesio.c (original) +++ python/trunk/Modules/_io/bytesio.c Sun Jan 31 23:26:04 2010 @@ -414,7 +414,7 @@ "truncate([size]) -> int. Truncate the file to at most size bytes.\n" "\n" "Size defaults to the current file position, as returned by tell().\n" -"Returns the new size. Imply an absolute seek to the position size."); +"The current file position is unchanged. Returns the new size.\n"); static PyObject * bytesio_truncate(bytesio *self, PyObject *args) @@ -453,7 +453,6 @@ if (resize_buffer(self, size) < 0) return NULL; } - self->pos = size; return PyLong_FromSsize_t(size); } Modified: python/trunk/Modules/_io/fileio.c ============================================================================== --- python/trunk/Modules/_io/fileio.c (original) +++ python/trunk/Modules/_io/fileio.c Sun Jan 31 23:26:04 2010 @@ -758,8 +758,10 @@ static PyObject * fileio_truncate(fileio *self, PyObject *args) { - PyObject *posobj = NULL; + PyObject *posobj = NULL; /* the new size wanted by the user */ +#ifndef MS_WINDOWS Py_off_t pos; +#endif int ret; int fd; @@ -774,58 +776,86 @@ if (posobj == Py_None || posobj == NULL) { /* Get the current position. */ - posobj = portable_lseek(fd, NULL, 1); - if (posobj == NULL) + posobj = portable_lseek(fd, NULL, 1); + if (posobj == NULL) return NULL; - } - else { - /* Move to the position to be truncated. */ - posobj = portable_lseek(fd, posobj, 0); - } - if (posobj == NULL) - return NULL; - -#if defined(HAVE_LARGEFILE_SUPPORT) - pos = PyLong_AsLongLong(posobj); -#else - pos = PyLong_AsLong(posobj); -#endif - if (pos == -1 && PyErr_Occurred()) - return NULL; + } + else { + Py_INCREF(posobj); + } #ifdef MS_WINDOWS /* MS _chsize doesn't work if newsize doesn't fit in 32 bits, so don't even try using it. */ { + PyObject *oldposobj, *tempposobj; HANDLE hFile; + + /* we save the file pointer position */ + oldposobj = portable_lseek(fd, NULL, 1); + if (oldposobj == NULL) { + Py_DECREF(posobj); + return NULL; + } + + /* we then move to the truncation position */ + tempposobj = portable_lseek(fd, posobj, 0); + if (tempposobj == NULL) { + Py_DECREF(oldposobj); + Py_DECREF(posobj); + return NULL; + } + Py_DECREF(tempposobj); /* Truncate. Note that this may grow the file! */ Py_BEGIN_ALLOW_THREADS errno = 0; hFile = (HANDLE)_get_osfhandle(fd); - ret = hFile == (HANDLE)-1; + ret = hFile == (HANDLE)-1; /* testing for INVALID_HANDLE value */ if (ret == 0) { ret = SetEndOfFile(hFile) == 0; if (ret) errno = EACCES; } Py_END_ALLOW_THREADS + + /* we restore the file pointer position in any case */ + tempposobj = portable_lseek(fd, oldposobj, 0); + Py_DECREF(oldposobj); + if (tempposobj == NULL) { + Py_DECREF(posobj); + return NULL; + } + Py_DECREF(tempposobj); } #else + +#if defined(HAVE_LARGEFILE_SUPPORT) + pos = PyLong_AsLongLong(posobj); +#else + pos = PyLong_AsLong(posobj); +#endif + if (PyErr_Occurred()){ + Py_DECREF(posobj); + return NULL; + } + Py_BEGIN_ALLOW_THREADS errno = 0; ret = ftruncate(fd, pos); Py_END_ALLOW_THREADS + #endif /* !MS_WINDOWS */ if (ret != 0) { + Py_DECREF(posobj); PyErr_SetFromErrno(PyExc_IOError); return NULL; } return posobj; } -#endif +#endif /* HAVE_FTRUNCATE */ static char * mode_string(fileio *self) Modified: python/trunk/Modules/_io/iobase.c ============================================================================== --- python/trunk/Modules/_io/iobase.c (original) +++ python/trunk/Modules/_io/iobase.c Sun Jan 31 23:26:04 2010 @@ -102,8 +102,8 @@ PyDoc_STRVAR(iobase_truncate_doc, "Truncate file to size bytes.\n" "\n" - "Size defaults to the current IO position as reported by tell(). Return\n" - "the new size."); + "File pointer is left unchanged. Size defaults to the current IO\n" + "position as reported by tell(). Returns the new size."); static PyObject * iobase_truncate(PyObject *self, PyObject *args) Modified: python/trunk/Modules/_io/stringio.c ============================================================================== --- python/trunk/Modules/_io/stringio.c (original) +++ python/trunk/Modules/_io/stringio.c Sun Jan 31 23:26:04 2010 @@ -350,7 +350,7 @@ "Truncate size to pos.\n" "\n" "The pos argument defaults to the current file position, as\n" - "returned by tell(). Imply an absolute seek to pos.\n" + "returned by tell(). The current file position is unchanged.\n" "Returns the new absolute position.\n"); static PyObject * @@ -390,7 +390,6 @@ return NULL; self->string_size = size; } - self->pos = size; return PyLong_FromSsize_t(size); } Modified: python/trunk/Modules/_io/textio.c ============================================================================== --- python/trunk/Modules/_io/textio.c (original) +++ python/trunk/Modules/_io/textio.c Sun Jan 31 23:26:04 2010 @@ -2313,15 +2313,7 @@ return NULL; Py_DECREF(res); - if (pos != Py_None) { - res = PyObject_CallMethodObjArgs((PyObject *) self, - _PyIO_str_seek, pos, NULL); - if (res == NULL) - return NULL; - Py_DECREF(res); - } - - return PyObject_CallMethodObjArgs(self->buffer, _PyIO_str_truncate, NULL); + return PyObject_CallMethodObjArgs(self->buffer, _PyIO_str_truncate, pos, NULL); } static PyObject * From python-checkins at python.org Sun Jan 31 23:26:41 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sun, 31 Jan 2010 22:26:41 -0000 Subject: [Python-checkins] r77891 - python/branches/release26-maint Message-ID: Author: antoine.pitrou Date: Sun Jan 31 23:26:41 2010 New Revision: 77891 Log: Note: the issue was fixed in an earlier commit. Blocked revisions 77890 via svnmerge ........ r77890 | antoine.pitrou | 2010-01-31 23:26:04 +0100 (dim., 31 janv. 2010) | 7 lines - Issue #6939: Fix file I/O objects in the `io` module to keep the original file position when calling `truncate()`. It would previously change the file position to the given argument, which goes against the tradition of ftruncate() and other truncation APIs. Patch by Pascal Chambon. ........ Modified: python/branches/release26-maint/ (props changed) From python-checkins at python.org Sun Jan 31 23:32:16 2010 From: python-checkins at python.org (victor.stinner) Date: Sun, 31 Jan 2010 22:32:16 -0000 Subject: [Python-checkins] r77892 - in python/trunk: Lib/test/test_sys.py Misc/NEWS Python/sysmodule.c Message-ID: Author: victor.stinner Date: Sun Jan 31 23:32:15 2010 New Revision: 77892 Log: Issue #7819: Check sys.call_tracing() arguments types. py3k was already patched by issue #3661. Modified: python/trunk/Lib/test/test_sys.py python/trunk/Misc/NEWS python/trunk/Python/sysmodule.c Modified: python/trunk/Lib/test/test_sys.py ============================================================================== --- python/trunk/Lib/test/test_sys.py (original) +++ python/trunk/Lib/test/test_sys.py Sun Jan 31 23:32:15 2010 @@ -433,6 +433,10 @@ out = p.communicate()[0].strip() self.assertEqual(out, '?') + def test_call_tracing(self): + self.assertEqual(sys.call_tracing(str, (2,)), "2") + self.assertRaises(TypeError, sys.call_tracing, str, 2) + class SizeofTest(unittest.TestCase): Modified: python/trunk/Misc/NEWS ============================================================================== --- python/trunk/Misc/NEWS (original) +++ python/trunk/Misc/NEWS Sun Jan 31 23:32:15 2010 @@ -12,6 +12,8 @@ Core and Builtins ----------------- +- Issue #7819: Check sys.call_tracing() arguments types. + - Issue #7788: Fix an interpreter crash produced by deleting a list slice with very large step value. Modified: python/trunk/Python/sysmodule.c ============================================================================== --- python/trunk/Python/sysmodule.c (original) +++ python/trunk/Python/sysmodule.c Sun Jan 31 23:32:15 2010 @@ -840,7 +840,7 @@ sys_call_tracing(PyObject *self, PyObject *args) { PyObject *func, *funcargs; - if (!PyArg_UnpackTuple(args, "call_tracing", 2, 2, &func, &funcargs)) + if (!PyArg_ParseTuple(args, "OO!:call_tracing", &func, &PyTuple_Type, &funcargs)) return NULL; return _PyEval_CallTracing(func, funcargs); } From python-checkins at python.org Sun Jan 31 23:33:23 2010 From: python-checkins at python.org (victor.stinner) Date: Sun, 31 Jan 2010 22:33:23 -0000 Subject: [Python-checkins] r77893 - in python/branches/release26-maint: Lib/test/test_sys.py Misc/NEWS Python/sysmodule.c Message-ID: Author: victor.stinner Date: Sun Jan 31 23:33:22 2010 New Revision: 77893 Log: Merged revisions 77892 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77892 | victor.stinner | 2010-01-31 23:32:15 +0100 (dim., 31 janv. 2010) | 4 lines Issue #7819: Check sys.call_tracing() arguments types. py3k was already patched by issue #3661. ........ Modified: python/branches/release26-maint/ (props changed) python/branches/release26-maint/Lib/test/test_sys.py python/branches/release26-maint/Misc/NEWS python/branches/release26-maint/Python/sysmodule.c Modified: python/branches/release26-maint/Lib/test/test_sys.py ============================================================================== --- python/branches/release26-maint/Lib/test/test_sys.py (original) +++ python/branches/release26-maint/Lib/test/test_sys.py Sun Jan 31 23:33:22 2010 @@ -391,6 +391,10 @@ out = p.stdout.read().strip() self.assertEqual(out, '?') + def test_call_tracing(self): + self.assertEqual(sys.call_tracing(str, (2,)), "2") + self.assertRaises(TypeError, sys.call_tracing, str, 2) + class SizeofTest(unittest.TestCase): Modified: python/branches/release26-maint/Misc/NEWS ============================================================================== --- python/branches/release26-maint/Misc/NEWS (original) +++ python/branches/release26-maint/Misc/NEWS Sun Jan 31 23:33:22 2010 @@ -12,6 +12,8 @@ Core and Builtins ----------------- +- Issue #7819: Check sys.call_tracing() arguments types. + - Issue #7788: Fix an interpreter crash produced by deleting a list slice with very large step value. Modified: python/branches/release26-maint/Python/sysmodule.c ============================================================================== --- python/branches/release26-maint/Python/sysmodule.c (original) +++ python/branches/release26-maint/Python/sysmodule.c Sun Jan 31 23:33:22 2010 @@ -802,7 +802,7 @@ sys_call_tracing(PyObject *self, PyObject *args) { PyObject *func, *funcargs; - if (!PyArg_UnpackTuple(args, "call_tracing", 2, 2, &func, &funcargs)) + if (!PyArg_ParseTuple(args, "OO!:call_tracing", &func, &PyTuple_Type, &funcargs)) return NULL; return _PyEval_CallTracing(func, funcargs); } From python-checkins at python.org Sun Jan 31 23:34:53 2010 From: python-checkins at python.org (victor.stinner) Date: Sun, 31 Jan 2010 22:34:53 -0000 Subject: [Python-checkins] r77894 - python/branches/py3k Message-ID: Author: victor.stinner Date: Sun Jan 31 23:34:52 2010 New Revision: 77894 Log: Blocked revisions 77892 via svnmerge ........ r77892 | victor.stinner | 2010-01-31 23:32:15 +0100 (dim., 31 janv. 2010) | 4 lines Issue #7819: Check sys.call_tracing() arguments types. py3k was already patched by issue #3661. ........ Modified: python/branches/py3k/ (props changed) From python-checkins at python.org Sun Jan 31 23:47:27 2010 From: python-checkins at python.org (antoine.pitrou) Date: Sun, 31 Jan 2010 22:47:27 -0000 Subject: [Python-checkins] r77895 - in python/branches/py3k: Lib/_pyio.py Lib/test/test_fileio.py Lib/test/test_io.py Lib/test/test_largefile.py Lib/test/test_memoryio.py Misc/ACKS Misc/NEWS Modules/_io/bytesio.c Modules/_io/fileio.c Modules/_io/iobase.c Modules/_io/stringio.c Modules/_io/textio.c Message-ID: Author: antoine.pitrou Date: Sun Jan 31 23:47:27 2010 New Revision: 77895 Log: Merged revisions 77890 via svnmerge from svn+ssh://pythondev at svn.python.org/python/trunk ........ r77890 | antoine.pitrou | 2010-01-31 23:26:04 +0100 (dim., 31 janv. 2010) | 7 lines - Issue #6939: Fix file I/O objects in the `io` module to keep the original file position when calling `truncate()`. It would previously change the file position to the given argument, which goes against the tradition of ftruncate() and other truncation APIs. Patch by Pascal Chambon. ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/_pyio.py python/branches/py3k/Lib/test/test_fileio.py python/branches/py3k/Lib/test/test_io.py python/branches/py3k/Lib/test/test_largefile.py python/branches/py3k/Lib/test/test_memoryio.py python/branches/py3k/Misc/ACKS python/branches/py3k/Misc/NEWS python/branches/py3k/Modules/_io/bytesio.c python/branches/py3k/Modules/_io/fileio.c python/branches/py3k/Modules/_io/iobase.c python/branches/py3k/Modules/_io/stringio.c python/branches/py3k/Modules/_io/textio.c Modified: python/branches/py3k/Lib/_pyio.py ============================================================================== --- python/branches/py3k/Lib/_pyio.py (original) +++ python/branches/py3k/Lib/_pyio.py Sun Jan 31 23:47:27 2010 @@ -856,7 +856,7 @@ elif pos < 0: raise ValueError("negative truncate position %r" % (pos,)) del self._buffer[pos:] - return self.seek(pos) + return pos def readable(self): return True @@ -1215,8 +1215,7 @@ if pos is None: pos = self.tell() # Use seek to flush the read buffer. - self.seek(pos) - return BufferedWriter.truncate(self) + return BufferedWriter.truncate(self, pos) def read(self, n=None): if n is None: @@ -1717,8 +1716,7 @@ self.flush() if pos is None: pos = self.tell() - self.seek(pos) - return self.buffer.truncate() + return self.buffer.truncate(pos) def detach(self): if self.buffer is None: Modified: python/branches/py3k/Lib/test/test_fileio.py ============================================================================== --- python/branches/py3k/Lib/test/test_fileio.py (original) +++ python/branches/py3k/Lib/test/test_fileio.py Sun Jan 31 23:47:27 2010 @@ -328,6 +328,17 @@ f.close() self.fail("no error for invalid mode: %s" % bad_mode) + def testTruncate(self): + f = _FileIO(TESTFN, 'w') + f.write(bytes(bytearray(range(10)))) + self.assertEqual(f.tell(), 10) + f.truncate(5) + self.assertEqual(f.tell(), 10) + self.assertEqual(f.seek(0, os.SEEK_END), 5) + f.truncate(15) + self.assertEqual(f.tell(), 5) + self.assertEqual(f.seek(0, os.SEEK_END), 15) + def testTruncateOnWindows(self): def bug801631(): # SF bug Modified: python/branches/py3k/Lib/test/test_io.py ============================================================================== --- python/branches/py3k/Lib/test/test_io.py (original) +++ python/branches/py3k/Lib/test/test_io.py Sun Jan 31 23:47:27 2010 @@ -229,6 +229,11 @@ def write_ops(self, f): self.assertEqual(f.write(b"blah."), 5) + f.truncate(0) + self.assertEqual(f.tell(), 5) + f.seek(0) + + self.assertEqual(f.write(b"blah."), 5) self.assertEqual(f.seek(0), 0) self.assertEqual(f.write(b"Hello."), 6) self.assertEqual(f.tell(), 6) @@ -239,8 +244,9 @@ self.assertEqual(f.write(b"h"), 1) self.assertEqual(f.seek(-1, 2), 13) self.assertEqual(f.tell(), 13) + self.assertEqual(f.truncate(12), 12) - self.assertEqual(f.tell(), 12) + self.assertEqual(f.tell(), 13) self.assertRaises(TypeError, f.seek, 0.0) def read_ops(self, f, buffered=False): @@ -285,7 +291,7 @@ self.assertEqual(f.tell(), self.LARGE + 2) self.assertEqual(f.seek(0, 2), self.LARGE + 2) self.assertEqual(f.truncate(self.LARGE + 1), self.LARGE + 1) - self.assertEqual(f.tell(), self.LARGE + 1) + self.assertEqual(f.tell(), self.LARGE + 2) self.assertEqual(f.seek(0, 2), self.LARGE + 1) self.assertEqual(f.seek(-1, 2), self.LARGE) self.assertEqual(f.read(2), b"x") @@ -980,7 +986,7 @@ bufio = self.tp(raw, 8) bufio.write(b"abcdef") self.assertEqual(bufio.truncate(3), 3) - self.assertEqual(bufio.tell(), 3) + self.assertEqual(bufio.tell(), 6) with self.open(support.TESTFN, "rb", buffering=0) as f: self.assertEqual(f.read(), b"abc") @@ -1366,6 +1372,14 @@ self.assertEqual(s, b"A" + b"B" * overwrite_size + b"A" * (9 - overwrite_size)) + def test_truncate_after_read_or_write(self): + raw = self.BytesIO(b"A" * 10) + bufio = self.tp(raw, 100) + self.assertEqual(bufio.read(2), b"AA") # the read buffer gets filled + self.assertEqual(bufio.truncate(), 2) + self.assertEqual(bufio.write(b"BB"), 2) # the write buffer increases + self.assertEqual(bufio.truncate(), 4) + def test_misbehaved_io(self): BufferedReaderTest.test_misbehaved_io(self) BufferedWriterTest.test_misbehaved_io(self) Modified: python/branches/py3k/Lib/test/test_largefile.py ============================================================================== --- python/branches/py3k/Lib/test/test_largefile.py (original) +++ python/branches/py3k/Lib/test/test_largefile.py Sun Jan 31 23:47:27 2010 @@ -122,14 +122,14 @@ newsize -= 1 f.seek(42) f.truncate(newsize) - self.assertEqual(f.tell(), newsize) # else wasn't truncated + self.assertEqual(f.tell(), 42) f.seek(0, 2) self.assertEqual(f.tell(), newsize) # XXX truncate(larger than true size) is ill-defined # across platform; cut it waaaaay back f.seek(0) f.truncate(1) - self.assertEqual(f.tell(), 1) # else pointer moved + self.assertEqual(f.tell(), 0) # else pointer moved f.seek(0) self.assertEqual(len(f.read()), 1) # else wasn't truncated Modified: python/branches/py3k/Lib/test/test_memoryio.py ============================================================================== --- python/branches/py3k/Lib/test/test_memoryio.py (original) +++ python/branches/py3k/Lib/test/test_memoryio.py Sun Jan 31 23:47:27 2010 @@ -73,7 +73,7 @@ self.assertEqual(f.seek(0), 0) self.assertEqual(f.write(t("h")), 1) self.assertEqual(f.truncate(12), 12) - self.assertEqual(f.tell(), 12) + self.assertEqual(f.tell(), 1) def test_write(self): buf = self.buftype("hello world\n") @@ -121,7 +121,8 @@ self.assertEqual(memio.getvalue(), buf[:6]) self.assertEqual(memio.truncate(4), 4) self.assertEqual(memio.getvalue(), buf[:4]) - self.assertEqual(memio.tell(), 4) + self.assertEqual(memio.tell(), 6) + memio.seek(0, 2) memio.write(buf) self.assertEqual(memio.getvalue(), buf[:4] + buf) pos = memio.tell() Modified: python/branches/py3k/Misc/ACKS ============================================================================== --- python/branches/py3k/Misc/ACKS (original) +++ python/branches/py3k/Misc/ACKS Sun Jan 31 23:47:27 2010 @@ -123,6 +123,7 @@ Charles Cazabon Per Cederqvist Octavian Cerna +Pascal Chambon Hye-Shik Chang Jeffrey Chang Mitch Chapman Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Sun Jan 31 23:47:27 2010 @@ -239,6 +239,11 @@ Library ------- +- Issue #6939: Fix file I/O objects in the `io` module to keep the original + file position when calling `truncate()`. It would previously change the + file position to the given argument, which goes against the tradition of + ftruncate() and other truncation APIs. Patch by Pascal Chambon. + - Issue #7610: Reworked implementation of the internal :class:`zipfile.ZipExtFile` class used to represent files stored inside an archive. The new implementation is significantly faster and can Modified: python/branches/py3k/Modules/_io/bytesio.c ============================================================================== --- python/branches/py3k/Modules/_io/bytesio.c (original) +++ python/branches/py3k/Modules/_io/bytesio.c Sun Jan 31 23:47:27 2010 @@ -412,7 +412,7 @@ "truncate([size]) -> int. Truncate the file to at most size bytes.\n" "\n" "Size defaults to the current file position, as returned by tell().\n" -"Returns the new size. Imply an absolute seek to the position size."); +"The current file position is unchanged. Returns the new size.\n"); static PyObject * bytesio_truncate(bytesio *self, PyObject *args) @@ -451,7 +451,6 @@ if (resize_buffer(self, size) < 0) return NULL; } - self->pos = size; return PyLong_FromSsize_t(size); } Modified: python/branches/py3k/Modules/_io/fileio.c ============================================================================== --- python/branches/py3k/Modules/_io/fileio.c (original) +++ python/branches/py3k/Modules/_io/fileio.c Sun Jan 31 23:47:27 2010 @@ -758,8 +758,10 @@ static PyObject * fileio_truncate(fileio *self, PyObject *args) { - PyObject *posobj = NULL; + PyObject *posobj = NULL; /* the new size wanted by the user */ +#ifndef MS_WINDOWS Py_off_t pos; +#endif int ret; int fd; @@ -774,58 +776,86 @@ if (posobj == Py_None || posobj == NULL) { /* Get the current position. */ - posobj = portable_lseek(fd, NULL, 1); - if (posobj == NULL) + posobj = portable_lseek(fd, NULL, 1); + if (posobj == NULL) return NULL; - } - else { - /* Move to the position to be truncated. */ - posobj = portable_lseek(fd, posobj, 0); - } - if (posobj == NULL) - return NULL; - -#if defined(HAVE_LARGEFILE_SUPPORT) - pos = PyLong_AsLongLong(posobj); -#else - pos = PyLong_AsLong(posobj); -#endif - if (pos == -1 && PyErr_Occurred()) - return NULL; + } + else { + Py_INCREF(posobj); + } #ifdef MS_WINDOWS /* MS _chsize doesn't work if newsize doesn't fit in 32 bits, so don't even try using it. */ { + PyObject *oldposobj, *tempposobj; HANDLE hFile; + + /* we save the file pointer position */ + oldposobj = portable_lseek(fd, NULL, 1); + if (oldposobj == NULL) { + Py_DECREF(posobj); + return NULL; + } + + /* we then move to the truncation position */ + tempposobj = portable_lseek(fd, posobj, 0); + if (tempposobj == NULL) { + Py_DECREF(oldposobj); + Py_DECREF(posobj); + return NULL; + } + Py_DECREF(tempposobj); /* Truncate. Note that this may grow the file! */ Py_BEGIN_ALLOW_THREADS errno = 0; hFile = (HANDLE)_get_osfhandle(fd); - ret = hFile == (HANDLE)-1; + ret = hFile == (HANDLE)-1; /* testing for INVALID_HANDLE value */ if (ret == 0) { ret = SetEndOfFile(hFile) == 0; if (ret) errno = EACCES; } Py_END_ALLOW_THREADS + + /* we restore the file pointer position in any case */ + tempposobj = portable_lseek(fd, oldposobj, 0); + Py_DECREF(oldposobj); + if (tempposobj == NULL) { + Py_DECREF(posobj); + return NULL; + } + Py_DECREF(tempposobj); } #else + +#if defined(HAVE_LARGEFILE_SUPPORT) + pos = PyLong_AsLongLong(posobj); +#else + pos = PyLong_AsLong(posobj); +#endif + if (PyErr_Occurred()){ + Py_DECREF(posobj); + return NULL; + } + Py_BEGIN_ALLOW_THREADS errno = 0; ret = ftruncate(fd, pos); Py_END_ALLOW_THREADS + #endif /* !MS_WINDOWS */ if (ret != 0) { + Py_DECREF(posobj); PyErr_SetFromErrno(PyExc_IOError); return NULL; } return posobj; } -#endif +#endif /* HAVE_FTRUNCATE */ static char * mode_string(fileio *self) Modified: python/branches/py3k/Modules/_io/iobase.c ============================================================================== --- python/branches/py3k/Modules/_io/iobase.c (original) +++ python/branches/py3k/Modules/_io/iobase.c Sun Jan 31 23:47:27 2010 @@ -102,8 +102,8 @@ PyDoc_STRVAR(iobase_truncate_doc, "Truncate file to size bytes.\n" "\n" - "Size defaults to the current IO position as reported by tell(). Return\n" - "the new size."); + "File pointer is left unchanged. Size defaults to the current IO\n" + "position as reported by tell(). Returns the new size."); static PyObject * iobase_truncate(PyObject *self, PyObject *args) Modified: python/branches/py3k/Modules/_io/stringio.c ============================================================================== --- python/branches/py3k/Modules/_io/stringio.c (original) +++ python/branches/py3k/Modules/_io/stringio.c Sun Jan 31 23:47:27 2010 @@ -350,7 +350,7 @@ "Truncate size to pos.\n" "\n" "The pos argument defaults to the current file position, as\n" - "returned by tell(). Imply an absolute seek to pos.\n" + "returned by tell(). The current file position is unchanged.\n" "Returns the new absolute position.\n"); static PyObject * @@ -390,7 +390,6 @@ return NULL; self->string_size = size; } - self->pos = size; return PyLong_FromSsize_t(size); } Modified: python/branches/py3k/Modules/_io/textio.c ============================================================================== --- python/branches/py3k/Modules/_io/textio.c (original) +++ python/branches/py3k/Modules/_io/textio.c Sun Jan 31 23:47:27 2010 @@ -2318,15 +2318,7 @@ return NULL; Py_DECREF(res); - if (pos != Py_None) { - res = PyObject_CallMethodObjArgs((PyObject *) self, - _PyIO_str_seek, pos, NULL); - if (res == NULL) - return NULL; - Py_DECREF(res); - } - - return PyObject_CallMethodObjArgs(self->buffer, _PyIO_str_truncate, NULL); + return PyObject_CallMethodObjArgs(self->buffer, _PyIO_str_truncate, pos, NULL); } static PyObject * From jooprenes at tele2.nl Tue Jan 19 16:20:14 2010 From: jooprenes at tele2.nl (joop renes) Date: Tue, 19 Jan 2010 15:20:14 -0000 Subject: [Python-checkins] r73367 - python/trunk/Doc/library/bisect.rst In-Reply-To: <20090611220400.82F74D5B4@mail.python.org> Message-ID: <1263910798.3785.21.camel@joop-desktop> hi raymond, i am trying to develop an efficient dropin replacement for dict() in the use case: few updates( which are linear in time complexity) and many lookups(which can be made of logarithmic time complexity,provided binary search is applicable). some experimentation revealed unexpected results as the attached example shows. I have developed a class assoc_vector that maintains a sorted list of (key,value) tuples, where key "must" be an int. 'I would have expected any type with logical comparison semantics to work as it does in C++ Part of the trick is that the insertion_point can be found by bisect( __tuples,(key,) ), where __tuples is a private variable that holds the standard python list of (key,value) tuples. best regards joop renes -------------- next part -------------- joop at joop-desktop:~$ python Python 2.6.4 (r264:75706, Dec 7 2009, 18:43:55) [GCC 4.4.1] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from bisect import * >>> squares = [f + r for r in '12345678' for f in 'abcdefgh'] >>> squares ['a1', 'b1', 'c1', 'd1', 'e1', 'f1', 'g1', 'h1', 'a2', 'b2', 'c2', 'd2', 'e2', 'f2', 'g2', 'h2', 'a3', 'b3', 'c3', 'd3', 'e3', 'f3', 'g3', 'h3', 'a4', 'b4', 'c4', 'd4', 'e4', 'f4', 'g4', 'h4', 'a5', 'b5', 'c5', 'd5', 'e5', 'f5', 'g5', 'h5', 'a6', 'b6', 'c6', 'd6', 'e6', 'f6', 'g6', 'h6', 'a7', 'b7', 'c7', 'd7', 'e7', 'f7', 'g7', 'h7', 'a8', 'b8', 'c8', 'd8', 'e8', 'f8', 'g8', 'h8'] >>> squares.index('e4') 28 >>> squares[28] 'e4' >>> bisect_left( squares,'e4') 60 >>> joop at joop-desktop:~$